@pixerate/editor-svelte 0.48.0 → 0.50.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 (48) hide show
  1. package/dist/animation-editor/AnimationEditor.svelte +30 -0
  2. package/dist/animation-editor/AnimationEditor.svelte.d.ts +12 -0
  3. package/dist/animation-editor/AnimationEditor.svelte.d.ts.map +1 -0
  4. package/dist/animation-editor/AnimationStage.svelte +30 -0
  5. package/dist/animation-editor/AnimationStage.svelte.d.ts +11 -0
  6. package/dist/animation-editor/AnimationStage.svelte.d.ts.map +1 -0
  7. package/dist/animation-editor/ShotTimeline.svelte +68 -0
  8. package/dist/animation-editor/ShotTimeline.svelte.d.ts +9 -0
  9. package/dist/animation-editor/ShotTimeline.svelte.d.ts.map +1 -0
  10. package/dist/animation-editor/createAnimationEditor.svelte.d.ts +33 -0
  11. package/dist/animation-editor/createAnimationEditor.svelte.d.ts.map +1 -0
  12. package/dist/animation-editor/createAnimationEditor.svelte.js +61 -0
  13. package/dist/animation-editor/index.d.ts +12 -0
  14. package/dist/animation-editor/index.d.ts.map +1 -0
  15. package/dist/animation-editor/index.js +4 -0
  16. package/dist/canvas/DiagramPresenceLayer.svelte +34 -0
  17. package/dist/canvas/DiagramPresenceLayer.svelte.d.ts +15 -0
  18. package/dist/canvas/DiagramPresenceLayer.svelte.d.ts.map +1 -0
  19. package/dist/canvas/MermaidDiagramGroup.svelte +29 -0
  20. package/dist/canvas/MermaidDiagramGroup.svelte.d.ts +21 -0
  21. package/dist/canvas/MermaidDiagramGroup.svelte.d.ts.map +1 -0
  22. package/dist/canvas/MermaidDiagramNode.svelte +63 -0
  23. package/dist/canvas/MermaidDiagramNode.svelte.d.ts +26 -0
  24. package/dist/canvas/MermaidDiagramNode.svelte.d.ts.map +1 -0
  25. package/dist/canvas/MermaidThumbnail.svelte +28 -0
  26. package/dist/canvas/MermaidThumbnail.svelte.d.ts +14 -0
  27. package/dist/canvas/MermaidThumbnail.svelte.d.ts.map +1 -0
  28. package/dist/canvas/createCanvasAnimation.svelte.d.ts +3 -3
  29. package/dist/canvas/createCanvasAnimation.svelte.d.ts.map +1 -1
  30. package/dist/canvas/createCanvasArrange.svelte.d.ts.map +1 -1
  31. package/dist/canvas/createCanvasAutoLayout.svelte.d.ts.map +1 -1
  32. package/dist/canvas/createCanvasComponents.svelte.d.ts.map +1 -1
  33. package/dist/canvas/createDiagramDirector.svelte.d.ts +24 -0
  34. package/dist/canvas/createDiagramDirector.svelte.d.ts.map +1 -0
  35. package/dist/canvas/createDiagramDirector.svelte.js +22 -0
  36. package/dist/canvas/createMermaidDiagram.svelte.d.ts +73 -0
  37. package/dist/canvas/createMermaidDiagram.svelte.d.ts.map +1 -0
  38. package/dist/canvas/createMermaidDiagram.svelte.js +138 -0
  39. package/dist/canvas/index.d.ts +6 -0
  40. package/dist/canvas/index.d.ts.map +1 -1
  41. package/dist/canvas/index.js +9 -0
  42. package/dist/index.d.ts +1 -0
  43. package/dist/index.d.ts.map +1 -1
  44. package/dist/index.js +1 -0
  45. package/dist/toolBridge.svelte.d.ts +18 -0
  46. package/dist/toolBridge.svelte.d.ts.map +1 -0
  47. package/dist/toolBridge.svelte.js +44 -0
  48. package/package.json +10 -2
@@ -0,0 +1,30 @@
1
+ <script lang="ts">
2
+ import { motionIssueLine, type AnimationEditorController, type MotionFrameOptions } from '@pixerate/editor/animation-editor';
3
+ import AnimationStage from './AnimationStage.svelte';
4
+ import ShotTimeline from './ShotTimeline.svelte';
5
+ import { animationEditorStateOf } from './createAnimationEditor.svelte.js';
6
+
7
+ interface Props {
8
+ controller: AnimationEditorController;
9
+ values?: MotionFrameOptions['values'];
10
+ /** List the scene's issues under the timeline (default true). */
11
+ showIssues?: boolean;
12
+ class?: string;
13
+ }
14
+
15
+ let { controller, values, showIssues = true, class: className = '' }: Props = $props();
16
+ const view = animationEditorStateOf(() => controller);
17
+ </script>
18
+
19
+ <!-- Stage, shot timeline and issue list for an AnimationEditorController. -->
20
+ <div class="flex flex-col gap-2 {className}" data-animation-editor="">
21
+ <AnimationStage {controller} {values} class="rounded-md border border-border bg-muted/40" />
22
+ <ShotTimeline {controller} />
23
+ {#if showIssues && view.current.issues.length > 0}
24
+ <ul class="space-y-0.5 text-xs" aria-label="Animation issues">
25
+ {#each view.current.issues as issue, i (i)}
26
+ <li class={issue.severity === 'error' ? 'text-red-500' : issue.severity === 'warning' ? 'text-amber-500' : 'text-muted-foreground'}>{motionIssueLine(issue)}</li>
27
+ {/each}
28
+ </ul>
29
+ {/if}
30
+ </div>
@@ -0,0 +1,12 @@
1
+ import { type AnimationEditorController, type MotionFrameOptions } from '@pixerate/editor/animation-editor';
2
+ interface Props {
3
+ controller: AnimationEditorController;
4
+ values?: MotionFrameOptions['values'];
5
+ /** List the scene's issues under the timeline (default true). */
6
+ showIssues?: boolean;
7
+ class?: string;
8
+ }
9
+ declare const AnimationEditor: import("svelte").Component<Props, {}, "">;
10
+ type AnimationEditor = ReturnType<typeof AnimationEditor>;
11
+ export default AnimationEditor;
12
+ //# sourceMappingURL=AnimationEditor.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AnimationEditor.svelte.d.ts","sourceRoot":"","sources":["../../src/animation-editor/AnimationEditor.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,EAAmB,KAAK,yBAAyB,EAAE,KAAK,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AAM3H,UAAU,KAAK;IACb,UAAU,EAAE,yBAAyB,CAAC;IACtC,MAAM,CAAC,EAAE,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IACtC,iEAAiE;IACjE,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AA2BH,QAAA,MAAM,eAAe,2CAAwC,CAAC;AAC9D,KAAK,eAAe,GAAG,UAAU,CAAC,OAAO,eAAe,CAAC,CAAC;AAC1D,eAAe,eAAe,CAAC"}
@@ -0,0 +1,30 @@
1
+ <script lang="ts">
2
+ import type { AnimationEditorController, MotionFrameOptions } from '@pixerate/editor/animation-editor';
3
+ import { animationEditorStateOf } from './createAnimationEditor.svelte.js';
4
+
5
+ interface Props {
6
+ controller: AnimationEditorController;
7
+ /** Control values to preview (`{ accent: "#0ea5e9" }`). */
8
+ values?: MotionFrameOptions['values'];
9
+ class?: string;
10
+ }
11
+
12
+ let { controller, values, class: className = '' }: Props = $props();
13
+ const view = animationEditorStateOf(() => controller);
14
+ const svg = $derived(
15
+ controller
16
+ .toSvg(view.current.time, { pretty: false, idPrefix: 'ae-', values })
17
+ .replace(/<svg ([^>]*?)width="[^"]*" height="[^"]*"/, '<svg $1width="100%" height="100%"')
18
+ );
19
+ </script>
20
+
21
+ <!-- The frame at the playhead, drawn as inline SVG scaled to the stage's width. -->
22
+ <div
23
+ class="relative overflow-hidden {className}"
24
+ style="aspect-ratio:{view.current.scene.artwork.width} / {view.current.scene.artwork.height}"
25
+ data-animation-stage=""
26
+ role="img"
27
+ aria-label="{view.current.scene.name} at {(view.current.time / 1000).toFixed(2)} s"
28
+ >
29
+ {@html svg}
30
+ </div>
@@ -0,0 +1,11 @@
1
+ import type { AnimationEditorController, MotionFrameOptions } from '@pixerate/editor/animation-editor';
2
+ interface Props {
3
+ controller: AnimationEditorController;
4
+ /** Control values to preview (`{ accent: "#0ea5e9" }`). */
5
+ values?: MotionFrameOptions['values'];
6
+ class?: string;
7
+ }
8
+ declare const AnimationStage: import("svelte").Component<Props, {}, "">;
9
+ type AnimationStage = ReturnType<typeof AnimationStage>;
10
+ export default AnimationStage;
11
+ //# sourceMappingURL=AnimationStage.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AnimationStage.svelte.d.ts","sourceRoot":"","sources":["../../src/animation-editor/AnimationStage.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,yBAAyB,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AAIrG,UAAU,KAAK;IACb,UAAU,EAAE,yBAAyB,CAAC;IACtC,2DAA2D;IAC3D,MAAM,CAAC,EAAE,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IACtC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAsBH,QAAA,MAAM,cAAc,2CAAwC,CAAC;AAC7D,KAAK,cAAc,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AACxD,eAAe,cAAc,CAAC"}
@@ -0,0 +1,68 @@
1
+ <script lang="ts">
2
+ import type { AnimationEditorController, MotionIssue } from '@pixerate/editor/animation-editor';
3
+ import { animationEditorStateOf } from './createAnimationEditor.svelte.js';
4
+
5
+ interface Props {
6
+ controller: AnimationEditorController;
7
+ class?: string;
8
+ }
9
+
10
+ let { controller, class: className = '' }: Props = $props();
11
+ const view = animationEditorStateOf(() => controller);
12
+ const state = $derived(view.current);
13
+ const span = $derived(Math.max(1, state.duration));
14
+ const seconds = (ms: number) => `${(ms / 1000).toFixed(1)} s`;
15
+ const worst = (issues: readonly MotionIssue[]): 'error' | 'warning' | null =>
16
+ issues.some((i) => i.severity === 'error') ? 'error' : issues.some((i) => i.severity === 'warning') ? 'warning' : null;
17
+
18
+ function onRuler(event: PointerEvent) {
19
+ const box = (event.currentTarget as HTMLElement).getBoundingClientRect();
20
+ controller.seek(((event.clientX - box.left) / Math.max(1, box.width)) * span);
21
+ }
22
+ function onKey(event: KeyboardEvent) {
23
+ if (event.key === 'ArrowRight') controller.seek(state.time + 100);
24
+ if (event.key === 'ArrowLeft') controller.seek(state.time - 100);
25
+ }
26
+ </script>
27
+
28
+ <!-- Play / pause, the playhead and one block per shot (as wide as it is long). -->
29
+ <div class="flex flex-col gap-1 {className}" data-shot-timeline="">
30
+ <div class="flex items-center gap-2 text-xs">
31
+ <button type="button" class="rounded border border-border px-2 py-0.5" onclick={() => controller.toggle()} aria-label={state.playing ? 'Pause' : 'Play'} disabled={!state.shots.length}>
32
+ {state.playing ? 'Pause' : 'Play'}
33
+ </button>
34
+ <span class="tabular-nums text-muted-foreground">{seconds(state.time)} / {seconds(state.duration)}</span>
35
+ </div>
36
+ <div
37
+ class="relative h-3 cursor-pointer rounded bg-muted"
38
+ onpointerdown={onRuler}
39
+ onkeydown={onKey}
40
+ role="slider"
41
+ aria-label="Playhead"
42
+ aria-valuemin={0}
43
+ aria-valuemax={state.duration}
44
+ aria-valuenow={Math.round(state.time)}
45
+ tabindex="0"
46
+ >
47
+ <div class="absolute inset-y-0 w-0.5 bg-rose-500" style="left:{(state.time / span) * 100}%"></div>
48
+ </div>
49
+ <div class="flex w-full gap-px" role="group" aria-label="Shots">
50
+ {#each state.shots as shot (shot.id)}
51
+ {@const mark = worst(state.issues.filter((i) => i.shot === shot.id))}
52
+ <button
53
+ type="button"
54
+ class="min-w-0 truncate rounded border px-1 py-1 text-left text-[11px] {state.selection?.shot === shot.id ? 'border-rose-500 bg-rose-500/10' : 'border-border'} {state.currentShot === shot.id ? 'font-semibold' : ''}"
55
+ style="flex-grow:{Math.max(1, shot.end - shot.start)};flex-basis:0"
56
+ title="{shot.label ?? shot.id} · {seconds(shot.end - shot.start)}"
57
+ data-shot={shot.id}
58
+ data-issue={mark ?? undefined}
59
+ onclick={() => {
60
+ controller.select({ shot: shot.id });
61
+ controller.seekShot(shot.id);
62
+ }}
63
+ >
64
+ {#if mark}<span class={mark === 'error' ? 'text-red-500' : 'text-amber-500'}>● </span>{/if}{shot.label ?? shot.id}
65
+ </button>
66
+ {/each}
67
+ </div>
68
+ </div>
@@ -0,0 +1,9 @@
1
+ import type { AnimationEditorController } from '@pixerate/editor/animation-editor';
2
+ interface Props {
3
+ controller: AnimationEditorController;
4
+ class?: string;
5
+ }
6
+ declare const ShotTimeline: import("svelte").Component<Props, {}, "">;
7
+ type ShotTimeline = ReturnType<typeof ShotTimeline>;
8
+ export default ShotTimeline;
9
+ //# sourceMappingURL=ShotTimeline.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ShotTimeline.svelte.d.ts","sourceRoot":"","sources":["../../src/animation-editor/ShotTimeline.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,yBAAyB,EAAe,MAAM,mCAAmC,CAAC;AAI9F,UAAU,KAAK;IACb,UAAU,EAAE,yBAAyB,CAAC;IACtC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAkDH,QAAA,MAAM,YAAY,2CAAwC,CAAC;AAC3D,KAAK,YAAY,GAAG,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC;AACpD,eAAe,YAAY,CAAC"}
@@ -0,0 +1,33 @@
1
+ import { AnimationEditorController, type AnimationEditorOptions, type AnimationEditorState, type AnimationEditorToolProviderOptions } from "@pixerate/editor/animation-editor";
2
+ import type { ToolRegistry } from "@pixerate/editor/tools";
3
+ export interface SvelteAnimationEditor {
4
+ readonly controller: AnimationEditorController;
5
+ /** The controller's state (reactive, including each played frame). */
6
+ readonly state: AnimationEditorState;
7
+ play(): void;
8
+ pause(): void;
9
+ toggle(): void;
10
+ seek(time: number): void;
11
+ undo(): void;
12
+ redo(): void;
13
+ /** The frame at the playhead as SVG. */
14
+ toSvg(): string;
15
+ /** Stops listening to the controller (and destroys it when this rune created it). */
16
+ destroy(): void;
17
+ }
18
+ /**
19
+ * Svelte 5 rune: subscribes to an `AnimationEditorController` (or creates one from options)
20
+ * and exposes its state reactively with bound actions.
21
+ */
22
+ export declare function createAnimationEditor(controllerOrOptions?: AnimationEditorController | AnimationEditorOptions): SvelteAnimationEditor;
23
+ /** Reactive state of a (possibly replaced) controller prop, for use inside components. */
24
+ export declare function animationEditorStateOf(getController: () => AnimationEditorController): {
25
+ readonly current: AnimationEditorState;
26
+ };
27
+ /**
28
+ * Registers the animation editor's agent tools (`get_animation`, `add_commands`,
29
+ * `export_flair_effect`, …) for the lifetime of the calling component (call it during
30
+ * initialisation). Pass a getter to follow a changing registry.
31
+ */
32
+ export declare function useAnimationEditorTools(registry: ToolRegistry | null | undefined | (() => ToolRegistry | null | undefined), controller: AnimationEditorController, options?: AnimationEditorToolProviderOptions): void;
33
+ //# sourceMappingURL=createAnimationEditor.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createAnimationEditor.svelte.d.ts","sourceRoot":"","sources":["../../src/animation-editor/createAnimationEditor.svelte.ts"],"names":[],"mappings":"AACA,OAAO,EACL,yBAAyB,EAEzB,KAAK,sBAAsB,EAC3B,KAAK,oBAAoB,EACzB,KAAK,kCAAkC,EACxC,MAAM,mCAAmC,CAAC;AAC3C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAE3D,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,UAAU,EAAE,yBAAyB,CAAC;IAC/C,sEAAsE;IACtE,QAAQ,CAAC,KAAK,EAAE,oBAAoB,CAAC;IACrC,IAAI,IAAI,IAAI,CAAC;IACb,KAAK,IAAI,IAAI,CAAC;IACd,MAAM,IAAI,IAAI,CAAC;IACf,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,IAAI,IAAI,IAAI,CAAC;IACb,IAAI,IAAI,IAAI,CAAC;IACb,wCAAwC;IACxC,KAAK,IAAI,MAAM,CAAC;IAChB,qFAAqF;IACrF,OAAO,IAAI,IAAI,CAAC;CACjB;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,mBAAmB,GAAE,yBAAyB,GAAG,sBAA2B,GAAG,qBAAqB,CAwBzI;AAED,0FAA0F;AAC1F,wBAAgB,sBAAsB,CAAC,aAAa,EAAE,MAAM,yBAAyB,GAAG;IAAE,QAAQ,CAAC,OAAO,EAAE,oBAAoB,CAAA;CAAE,CAgBjI;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,YAAY,GAAG,IAAI,GAAG,SAAS,GAAG,CAAC,MAAM,YAAY,GAAG,IAAI,GAAG,SAAS,CAAC,EACnF,UAAU,EAAE,yBAAyB,EACrC,OAAO,GAAE,kCAAuC,GAC/C,IAAI,CAMN"}
@@ -0,0 +1,61 @@
1
+ import { untrack } from "svelte";
2
+ import { AnimationEditorController, createAnimationEditorToolProvider, } from "@pixerate/editor/animation-editor";
3
+ /**
4
+ * Svelte 5 rune: subscribes to an `AnimationEditorController` (or creates one from options)
5
+ * and exposes its state reactively with bound actions.
6
+ */
7
+ export function createAnimationEditor(controllerOrOptions = {}) {
8
+ const owned = !(controllerOrOptions instanceof AnimationEditorController);
9
+ const controller = controllerOrOptions instanceof AnimationEditorController ? controllerOrOptions : new AnimationEditorController(controllerOrOptions);
10
+ let state = $state.raw(controller.getState());
11
+ const unsubscribe = controller.subscribe((next) => {
12
+ state = next;
13
+ });
14
+ return {
15
+ controller,
16
+ get state() {
17
+ return state;
18
+ },
19
+ play: () => controller.play(),
20
+ pause: () => controller.pause(),
21
+ toggle: () => controller.toggle(),
22
+ seek: (time) => controller.seek(time),
23
+ undo: () => void controller.undo(),
24
+ redo: () => void controller.redo(),
25
+ toSvg: () => controller.toSvg(),
26
+ destroy: () => {
27
+ unsubscribe();
28
+ if (owned)
29
+ controller.destroy();
30
+ },
31
+ };
32
+ }
33
+ /** Reactive state of a (possibly replaced) controller prop, for use inside components. */
34
+ export function animationEditorStateOf(getController) {
35
+ let view = $state.raw(untrack(() => getController().getState()));
36
+ $effect(() => {
37
+ const controller = getController();
38
+ view = controller.getState();
39
+ return untrack(() => controller.subscribe((next) => {
40
+ view = next;
41
+ }));
42
+ });
43
+ return {
44
+ get current() {
45
+ return view;
46
+ },
47
+ };
48
+ }
49
+ /**
50
+ * Registers the animation editor's agent tools (`get_animation`, `add_commands`,
51
+ * `export_flair_effect`, …) for the lifetime of the calling component (call it during
52
+ * initialisation). Pass a getter to follow a changing registry.
53
+ */
54
+ export function useAnimationEditorTools(registry, controller, options = {}) {
55
+ $effect(() => {
56
+ const target = typeof registry === "function" ? registry() : registry;
57
+ if (!target)
58
+ return;
59
+ return target.register(createAnimationEditorToolProvider(controller, options));
60
+ });
61
+ }
@@ -0,0 +1,12 @@
1
+ import type { ComponentProps } from "svelte";
2
+ import type AnimationEditorComponent from "./AnimationEditor.svelte";
3
+ import type AnimationStageComponent from "./AnimationStage.svelte";
4
+ import type ShotTimelineComponent from "./ShotTimeline.svelte";
5
+ export { default as AnimationEditor } from "./AnimationEditor.svelte";
6
+ export { default as AnimationStage } from "./AnimationStage.svelte";
7
+ export { default as ShotTimeline } from "./ShotTimeline.svelte";
8
+ export * from "./createAnimationEditor.svelte.js";
9
+ export type AnimationEditorProps = ComponentProps<typeof AnimationEditorComponent>;
10
+ export type AnimationStageProps = ComponentProps<typeof AnimationStageComponent>;
11
+ export type ShotTimelineProps = ComponentProps<typeof ShotTimelineComponent>;
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/animation-editor/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AAC7C,OAAO,KAAK,wBAAwB,MAAM,0BAA0B,CAAC;AACrE,OAAO,KAAK,uBAAuB,MAAM,yBAAyB,CAAC;AACnE,OAAO,KAAK,qBAAqB,MAAM,uBAAuB,CAAC;AAE/D,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAChE,cAAc,mCAAmC,CAAC;AAElD,MAAM,MAAM,oBAAoB,GAAG,cAAc,CAAC,OAAO,wBAAwB,CAAC,CAAC;AACnF,MAAM,MAAM,mBAAmB,GAAG,cAAc,CAAC,OAAO,uBAAuB,CAAC,CAAC;AACjF,MAAM,MAAM,iBAAiB,GAAG,cAAc,CAAC,OAAO,qBAAqB,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { default as AnimationEditor } from "./AnimationEditor.svelte";
2
+ export { default as AnimationStage } from "./AnimationStage.svelte";
3
+ export { default as ShotTimeline } from "./ShotTimeline.svelte";
4
+ export * from "./createAnimationEditor.svelte.js";
@@ -0,0 +1,34 @@
1
+ <script lang="ts">
2
+ import { untrack } from 'svelte';
3
+ import type { PresenceStore, PresenceState } from '@pixerate/editor/diagram';
4
+
5
+ interface Props {
6
+ presence: PresenceStore;
7
+ /** The canvas viewport (Svelte Flow's `useViewport()`), to place cursors given in canvas coordinates. */
8
+ viewport: { x: number; y: number; zoom: number };
9
+ class?: string;
10
+ }
11
+
12
+ let { presence, viewport, class: className = '' }: Props = $props();
13
+ let view: PresenceState = $state.raw(untrack(() => presence.getState()));
14
+ $effect(() => {
15
+ view = presence.getState();
16
+ return presence.subscribe((next) => {
17
+ view = next;
18
+ });
19
+ });
20
+ </script>
21
+
22
+ <!-- Agent cursors and their notes over a canvas, from a `PresenceStore` (see `DiagramDirector`). -->
23
+ {#if view.actors.length}
24
+ <div class="pixerate-diagram-presence {className}" aria-hidden="true" style="position: absolute; inset: 0; pointer-events: none; overflow: hidden; z-index: 50;">
25
+ {#each view.actors as a (a.id)}
26
+ <div data-actor={a.id} style="position: absolute; left: 0; top: 0; transform: translate({a.x * viewport.zoom + viewport.x}px, {a.y * viewport.zoom + viewport.y}px);">
27
+ <svg width="18" height="20" viewBox="0 0 12 18" style="display: block; transform-origin: 0 0; {a.pressed ? 'transform: scale(0.85);' : ''}">
28
+ <path d="M0,0 L0,14 L4,10.5 L7,17 L9.5,16 L6.5,9.5 L11.5,9.5 Z" style="fill: {a.color}; stroke: #ffffff; stroke-width: 1;" />
29
+ </svg>
30
+ <span style="position: absolute; left: 14px; top: 16px; white-space: nowrap; border-radius: 4px; padding: 1px 6px; font-size: 11px; font-weight: 600; color: #ffffff; background: {a.color};">{a.message ?? a.name}</span>
31
+ </div>
32
+ {/each}
33
+ </div>
34
+ {/if}
@@ -0,0 +1,15 @@
1
+ import type { PresenceStore } from '@pixerate/editor/diagram';
2
+ interface Props {
3
+ presence: PresenceStore;
4
+ /** The canvas viewport (Svelte Flow's `useViewport()`), to place cursors given in canvas coordinates. */
5
+ viewport: {
6
+ x: number;
7
+ y: number;
8
+ zoom: number;
9
+ };
10
+ class?: string;
11
+ }
12
+ declare const DiagramPresenceLayer: import("svelte").Component<Props, {}, "">;
13
+ type DiagramPresenceLayer = ReturnType<typeof DiagramPresenceLayer>;
14
+ export default DiagramPresenceLayer;
15
+ //# sourceMappingURL=DiagramPresenceLayer.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DiagramPresenceLayer.svelte.d.ts","sourceRoot":"","sources":["../../src/canvas/DiagramPresenceLayer.svelte.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAiB,MAAM,0BAA0B,CAAC;AAG5E,UAAU,KAAK;IACd,QAAQ,EAAE,aAAa,CAAC;IACxB,yGAAyG;IACzG,QAAQ,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACjD,KAAK,CAAC,EAAE,MAAM,CAAC;CACf;AAgCF,QAAA,MAAM,oBAAoB,2CAAwC,CAAC;AACnE,KAAK,oBAAoB,GAAG,UAAU,CAAC,OAAO,oBAAoB,CAAC,CAAC;AACpE,eAAe,oBAAoB,CAAC"}
@@ -0,0 +1,29 @@
1
+ <script lang="ts">
2
+ import type { Snippet } from 'svelte';
3
+ import { mermaidLabelLines } from '@pixerate/editor/canvas';
4
+
5
+ interface Props {
6
+ id?: string;
7
+ /** Group data as `mermaidToCanvas` produces it (`data.group`, `data.resolvedStyles`). */
8
+ data: { group?: { id: string; label: string }; resolvedStyles?: Record<string, string>; [key: string]: any };
9
+ selected?: boolean;
10
+ class?: string;
11
+ children?: Snippet;
12
+ [key: string]: any;
13
+ }
14
+
15
+ let { data, selected = false, class: className = '', children }: Props = $props();
16
+ const styles = $derived(data?.resolvedStyles ?? {});
17
+ </script>
18
+
19
+ <!-- Headless Mermaid group (subgraph, composite state, namespace): a titled frame. Register as `mermaid-group`. -->
20
+ {#if data?.group}
21
+ <div
22
+ class="pixerate-diagram-group {className}"
23
+ data-selected={selected ? 'true' : undefined}
24
+ style="width: 100%; height: 100%; box-sizing: border-box; border-radius: 8px; border: 1px {selected ? 'solid' : 'dashed'} {selected ? 'var(--primary, #2563eb)' : (styles.stroke ?? 'var(--border, #cbd5e1)')}; background: {styles.fill ?? 'var(--muted, rgba(148, 163, 184, 0.08))'}; color: {styles.color ?? 'var(--muted-foreground, #475569)'};"
25
+ >
26
+ <div style="padding: 6px 10px; font-size: 12px; font-weight: 600;">{mermaidLabelLines(data.group.label).join(' ')}</div>
27
+ {@render children?.()}
28
+ </div>
29
+ {/if}
@@ -0,0 +1,21 @@
1
+ import type { Snippet } from 'svelte';
2
+ interface Props {
3
+ id?: string;
4
+ /** Group data as `mermaidToCanvas` produces it (`data.group`, `data.resolvedStyles`). */
5
+ data: {
6
+ group?: {
7
+ id: string;
8
+ label: string;
9
+ };
10
+ resolvedStyles?: Record<string, string>;
11
+ [key: string]: any;
12
+ };
13
+ selected?: boolean;
14
+ class?: string;
15
+ children?: Snippet;
16
+ [key: string]: any;
17
+ }
18
+ declare const MermaidDiagramGroup: import("svelte").Component<Props, {}, "">;
19
+ type MermaidDiagramGroup = ReturnType<typeof MermaidDiagramGroup>;
20
+ export default MermaidDiagramGroup;
21
+ //# sourceMappingURL=MermaidDiagramGroup.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MermaidDiagramGroup.svelte.d.ts","sourceRoot":"","sources":["../../src/canvas/MermaidDiagramGroup.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAIrC,UAAU,KAAK;IACd,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,yFAAyF;IACzF,IAAI,EAAE;QAAE,KAAK,CAAC,EAAE;YAAE,EAAE,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC;QAAC,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAC;IAC7G,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACnB;AAoBF,QAAA,MAAM,mBAAmB,2CAAwC,CAAC;AAClE,KAAK,mBAAmB,GAAG,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAClE,eAAe,mBAAmB,CAAC"}
@@ -0,0 +1,63 @@
1
+ <script lang="ts">
2
+ import type { Snippet } from 'svelte';
3
+ import { MERMAID_SHAPE_PAINT, mermaidLabelLines, mermaidNodeMembers, mermaidNodePaint, mermaidShapePaths } from '@pixerate/editor/canvas';
4
+
5
+ interface Props {
6
+ id?: string;
7
+ /** Node data as `mermaidToCanvas` produces it (`data.node`, `data.resolvedStyles`). */
8
+ data: { node?: { id: string; label: string; shape: string; data?: Record<string, unknown> }; resolvedStyles?: Record<string, string>; [key: string]: any };
9
+ width?: number;
10
+ height?: number;
11
+ selected?: boolean;
12
+ class?: string;
13
+ /** Rendered over the node, e.g. SvelteFlow `<Handle>`s. */
14
+ children?: Snippet;
15
+ [key: string]: any;
16
+ }
17
+
18
+ let { data, width = 160, height = 56, selected = false, class: className = '', children }: Props = $props();
19
+
20
+ const node = $derived(data?.node);
21
+ const paths = $derived(node ? mermaidShapePaths(node.shape, width, height) : []);
22
+ const members = $derived(node ? mermaidNodeMembers(node.data) : []);
23
+ const paint = $derived(
24
+ Object.entries(mermaidNodePaint(data?.resolvedStyles, selected))
25
+ .map(([k, v]) => `${k}: ${v}`)
26
+ .join('; ')
27
+ );
28
+ </script>
29
+
30
+ <!--
31
+ Headless Mermaid node: draws the node's shape (flowchart, state, class, ER) as SVG with
32
+ its label, painted from its Mermaid styles. Register it as the `mermaid-node` SvelteFlow
33
+ node type and pass `<Handle>`s as children.
34
+ -->
35
+ {#if node}
36
+ <div
37
+ class="pixerate-diagram-node {className}"
38
+ data-shape={node.shape}
39
+ data-selected={selected ? 'true' : undefined}
40
+ style="position: relative; width: 100%; height: 100%; {paint}"
41
+ >
42
+ <svg viewBox="0 0 {width} {height}" preserveAspectRatio="none" width="100%" height="100%" style="position: absolute; inset: 0; overflow: visible;" aria-hidden="true">
43
+ {#each paths as path}
44
+ <path d={path.d} style="fill: {MERMAID_SHAPE_PAINT[path.paint].fill}; stroke: {MERMAID_SHAPE_PAINT[path.paint].stroke}; vector-effect: non-scaling-stroke;" />
45
+ {/each}
46
+ </svg>
47
+ <div
48
+ style="position: relative; display: flex; flex-direction: column; align-items: center; justify-content: {members.length ? 'flex-start' : 'center'}; height: 100%; padding: 6px 10px; box-sizing: border-box; font-size: 13px; line-height: 1.3; text-align: center; pointer-events: none;"
49
+ >
50
+ {#each mermaidLabelLines(node.label) as line}
51
+ <span style={members.length ? 'font-weight: 600;' : undefined}>{line}</span>
52
+ {/each}
53
+ {#if members.length}
54
+ <div style="align-self: stretch; margin-top: 4px; padding-top: 4px; border-top: 1px solid var(--pixerate-diagram-node-border); text-align: left; font-size: 12px;">
55
+ {#each members as member}
56
+ <div>{member}</div>
57
+ {/each}
58
+ </div>
59
+ {/if}
60
+ </div>
61
+ {@render children?.()}
62
+ </div>
63
+ {/if}
@@ -0,0 +1,26 @@
1
+ import type { Snippet } from 'svelte';
2
+ interface Props {
3
+ id?: string;
4
+ /** Node data as `mermaidToCanvas` produces it (`data.node`, `data.resolvedStyles`). */
5
+ data: {
6
+ node?: {
7
+ id: string;
8
+ label: string;
9
+ shape: string;
10
+ data?: Record<string, unknown>;
11
+ };
12
+ resolvedStyles?: Record<string, string>;
13
+ [key: string]: any;
14
+ };
15
+ width?: number;
16
+ height?: number;
17
+ selected?: boolean;
18
+ class?: string;
19
+ /** Rendered over the node, e.g. SvelteFlow `<Handle>`s. */
20
+ children?: Snippet;
21
+ [key: string]: any;
22
+ }
23
+ declare const MermaidDiagramNode: import("svelte").Component<Props, {}, "">;
24
+ type MermaidDiagramNode = ReturnType<typeof MermaidDiagramNode>;
25
+ export default MermaidDiagramNode;
26
+ //# sourceMappingURL=MermaidDiagramNode.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MermaidDiagramNode.svelte.d.ts","sourceRoot":"","sources":["../../src/canvas/MermaidDiagramNode.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAIrC,UAAU,KAAK;IACd,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,uFAAuF;IACvF,IAAI,EAAE;QAAE,IAAI,CAAC,EAAE;YAAE,EAAE,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAC;YAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;SAAE,CAAC;QAAC,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAC;IAC3J,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACnB;AA4CF,QAAA,MAAM,kBAAkB,2CAAwC,CAAC;AACjE,KAAK,kBAAkB,GAAG,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAChE,eAAe,kBAAkB,CAAC"}
@@ -0,0 +1,28 @@
1
+ <script lang="ts">
2
+ import type { Snippet } from 'svelte';
3
+ import { parseMermaid, type MermaidDocument } from '@pixerate/editor/diagram';
4
+ import { mermaidThumbnailSvg, type DiagramSvgOptions } from '@pixerate/editor/canvas';
5
+
6
+ interface Props extends DiagramSvgOptions {
7
+ /** Mermaid text, or an already parsed document. */
8
+ source: string | MermaidDocument;
9
+ class?: string;
10
+ /** Shown for families that cannot be drawn here (sequence, Gantt, …) and empty diagrams. */
11
+ fallback?: Snippet;
12
+ }
13
+
14
+ let { source, class: className = '', fallback, ...options }: Props = $props();
15
+ const doc = $derived(typeof source === 'string' ? parseMermaid(source) : source);
16
+ const drawn = $derived(doc.tier === 'editable' && doc.graph.nodes.length ? mermaidThumbnailSvg(doc, options) : null);
17
+ </script>
18
+
19
+ <!--
20
+ A static preview of a flowchart, state, class or ER diagram (no canvas, no Mermaid runtime):
21
+ `mermaidThumbnailSvg` fitted inside `maxWidth` × `maxHeight` (default 240 × 160).
22
+ The SVG is built by mermaidToSvg with every label escaped.
23
+ -->
24
+ {#if drawn}
25
+ <span class="pixerate-diagram-thumbnail {className}" style="display: inline-block; line-height: 0;">{@html drawn.svg}</span>
26
+ {:else}
27
+ {@render fallback?.()}
28
+ {/if}
@@ -0,0 +1,14 @@
1
+ import type { Snippet } from 'svelte';
2
+ import { type MermaidDocument } from '@pixerate/editor/diagram';
3
+ import { type DiagramSvgOptions } from '@pixerate/editor/canvas';
4
+ interface Props extends DiagramSvgOptions {
5
+ /** Mermaid text, or an already parsed document. */
6
+ source: string | MermaidDocument;
7
+ class?: string;
8
+ /** Shown for families that cannot be drawn here (sequence, Gantt, …) and empty diagrams. */
9
+ fallback?: Snippet;
10
+ }
11
+ declare const MermaidThumbnail: import("svelte").Component<Props, {}, "">;
12
+ type MermaidThumbnail = ReturnType<typeof MermaidThumbnail>;
13
+ export default MermaidThumbnail;
14
+ //# sourceMappingURL=MermaidThumbnail.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MermaidThumbnail.svelte.d.ts","sourceRoot":"","sources":["../../src/canvas/MermaidThumbnail.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAgB,KAAK,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC9E,OAAO,EAAuB,KAAK,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAGrF,UAAU,KAAM,SAAQ,iBAAiB;IACxC,mDAAmD;IACnD,MAAM,EAAE,MAAM,GAAG,eAAe,CAAC;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4FAA4F;IAC5F,QAAQ,CAAC,EAAE,OAAO,CAAC;CACnB;AAqBF,QAAA,MAAM,gBAAgB,2CAAwC,CAAC;AAC/D,KAAK,gBAAgB,GAAG,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAC5D,eAAe,gBAAgB,CAAC"}
@@ -40,7 +40,7 @@ export declare function createCanvasAnimation<TNode extends CanvasNode = CanvasN
40
40
  clipboard: import("@pixerate/editor/canvas").AnimationKeyframeClipboard | null;
41
41
  displayNodes: TNode[];
42
42
  destroy(): void;
43
- player: import("@pixerate/editor/animation").AnimationPlayer;
43
+ player: import("@pixerate/editor/canvas").AnimationPlayer;
44
44
  getState: () => CanvasAnimationState;
45
45
  subscribe(listener: (state: CanvasAnimationState) => void): () => void;
46
46
  refresh(): void;
@@ -62,10 +62,10 @@ export declare function createCanvasAnimation<TNode extends CanvasNode = CanvasN
62
62
  display: (nodes?: readonly any[] | undefined) => any[];
63
63
  applyDisplayChanges(next: any[]): import("@pixerate/editor/canvas").KeyframeRef[];
64
64
  addKeyframe(ids?: Iterable<string>, keys?: readonly string[], time?: number): import("@pixerate/editor/canvas").KeyframeRef[];
65
- setKeyframe(nodeId: string, property: string, value: import("@pixerate/editor/animation").AnimationValue, time?: number, easing?: import("@pixerate/editor/animation").AnimationEasing | string): void;
65
+ setKeyframe(nodeId: string, property: string, value: import("@pixerate/editor/canvas").AnimationValue, time?: number, easing?: import("@pixerate/editor/canvas").AnimationEasing | string): void;
66
66
  updateKeyframe(ref: import("@pixerate/editor/canvas").KeyframeRef, patch: import("@pixerate/editor/canvas").KeyframePatch): void;
67
67
  deleteKeyframes(refs?: readonly import("@pixerate/editor/canvas").KeyframeRef[]): boolean;
68
- setEasing(easing: import("@pixerate/editor/animation").AnimationEasing | string | null, refs?: readonly import("@pixerate/editor/canvas").KeyframeRef[]): boolean;
68
+ setEasing(easing: import("@pixerate/editor/canvas").AnimationEasing | string | null, refs?: readonly import("@pixerate/editor/canvas").KeyframeRef[]): boolean;
69
69
  setTrackEnabled(nodeId: string, property: string, enabled: boolean): void;
70
70
  removeTrack(nodeId: string, property: string): void;
71
71
  setMotionPath(nodeId: string, motionPath: {
@@ -1 +1 @@
1
- {"version":3,"file":"createCanvasAnimation.svelte.d.ts","sourceRoot":"","sources":["../../src/canvas/createCanvasAnimation.svelte.ts"],"names":[],"mappings":"AAAA,OAAO,EAEN,KAAK,kBAAkB,EACvB,KAAK,sBAAsB,EAC3B,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EACzB,KAAK,KAAK,EACV,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,MAAM,WAAW,4BAA4B,CAAC,KAAK,SAAS,UAAU,GAAG,UAAU;IAClF,QAAQ,EAAE,MAAM,KAAK,EAAE,CAAC;IACxB,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,IAAI,CAAC;IACnC,mDAAmD;IACnD,OAAO,CAAC,EAAE,sBAAsB,CAAC;IACjC,gFAAgF;IAChF,cAAc,CAAC,EAAE,MAAM,MAAM,EAAE,CAAC;IAChC,+FAA+F;IAC/F,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,uFAAuF;IACvF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,iBAAiB,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,SAAS,kBAAkB,EAAE,CAAC;IAC3C,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAChC;AAED;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,SAAS,UAAU,GAAG,UAAU,EAAE,OAAO,EAAE,4BAA4B,CAAC,KAAK,CAAC;;;;;;;;;;kBA2DnG,KAAK,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAay/zG,CAAC;;;;;;;;;;;YAAg/C,CAAC;mBAA8B,CAAC;;;;;;;YAAmjB,CAAC;gBAA0B,CAAC;;;EAHrn4G;AAED,MAAM,MAAM,qBAAqB,CAAC,KAAK,SAAS,UAAU,GAAG,UAAU,IAAI,UAAU,CAAC,OAAO,qBAAqB,CAAC,KAAK,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"createCanvasAnimation.svelte.d.ts","sourceRoot":"","sources":["../../src/canvas/createCanvasAnimation.svelte.ts"],"names":[],"mappings":"AAAA,OAAO,EAEN,KAAK,kBAAkB,EACvB,KAAK,sBAAsB,EAC3B,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EACzB,KAAK,KAAK,EACV,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,MAAM,WAAW,4BAA4B,CAAC,KAAK,SAAS,UAAU,GAAG,UAAU;IAClF,QAAQ,EAAE,MAAM,KAAK,EAAE,CAAC;IACxB,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,IAAI,CAAC;IACnC,mDAAmD;IACnD,OAAO,CAAC,EAAE,sBAAsB,CAAC;IACjC,gFAAgF;IAChF,cAAc,CAAC,EAAE,MAAM,MAAM,EAAE,CAAC;IAChC,+FAA+F;IAC/F,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,uFAAuF;IACvF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,iBAAiB,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,SAAS,kBAAkB,EAAE,CAAC;IAC3C,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAChC;AAED;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,SAAS,UAAU,GAAG,UAAU,EAAE,OAAO,EAAE,4BAA4B,CAAC,KAAK,CAAC;;;;;;;;;;kBA2DnG,KAAK,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAa840G,CAAC;;;;;;;;;;;YAAg/C,CAAC;mBAA8B,CAAC;;;;;;;YAAmjB,CAAC;gBAA0B,CAAC;;;EAH1g5G;AAED,MAAM,MAAM,qBAAqB,CAAC,KAAK,SAAS,UAAU,GAAG,UAAU,IAAI,UAAU,CAAC,OAAO,qBAAqB,CAAC,KAAK,CAAC,CAAC,CAAC"}
@@ -1 +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;;IAkBzC;;;;;OAKG;wBACiB,MAAM;;;;;;;;;;sBAoDi+uD,CAAC;sBAAiE,CAAC;sBAAiE,CAAC;oBAA+D,CAAC;cAAyD,CAAC;gBAAiD,CAAC;;;;;;;;;0BAA8tC,CAAC;;yBAA6kB,CAAC;;0BAAgf,CAAC;;;;;;;;;;EAxC3k0D;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"}
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;;IAkBzC;;;;;OAKG;wBACiB,MAAM;;;;;;;;;;sBAoDs3vD,CAAC;sBAAiE,CAAC;sBAAiE,CAAC;oBAA+D,CAAC;cAAyD,CAAC;gBAAiD,CAAC;;;;;;;;;0BAA8tC,CAAC;;yBAA6kB,CAAC;;0BAAgf,CAAC;;;;;;;;;;EAxCh+0D;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"}
@@ -1 +1 @@
1
- {"version":3,"file":"createCanvasAutoLayout.svelte.d.ts","sourceRoot":"","sources":["../../src/canvas/createCanvasAutoLayout.svelte.ts"],"names":[],"mappings":"AAAA,OAAO,EAEN,KAAK,iCAAiC,EACtC,KAAK,SAAS,EACd,KAAK,kBAAkB,EACvB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAI7C,KAAK,WAAW,GAAG,iCAAiC,CAAC,GAAG,CAAC,CAAC;AAE1D,MAAM,WAAW,6BAA6B,CAAC,KAAK,SAAS,UAAU,GAAG,UAAU,CACnF,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;;;;;;;;;;;;GAYG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,SAAS,UAAU,GAAG,UAAU,EAAE,OAAO,EAAE,6BAA6B,CAAC,KAAK,CAAC;;;IA+BzH,2FAA2F;kBAC7E,OAAO,SAAS,kBAAkB,WAAW,OAAO,EAAE,GAAG,OAAO,EAAE;IAKhF,gFAAgF;0BAC1D,QAAQ,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAIjE,4EAA4E;iBAC/D,MAAM;IAInB;;;OAGG;wBACiB,MAAM;;;;;;;;aAiBmjtE,CAAC;;;;aAAiX,CAAC;cAAwB,CAAC;;;;;;;;;;gBAAqrD,CAAC;;;;EAHhpxE;AAED,MAAM,MAAM,gBAAgB,CAAC,KAAK,SAAS,UAAU,GAAG,UAAU,IAAI,UAAU,CAAC,OAAO,sBAAsB,CAAC,KAAK,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"createCanvasAutoLayout.svelte.d.ts","sourceRoot":"","sources":["../../src/canvas/createCanvasAutoLayout.svelte.ts"],"names":[],"mappings":"AAAA,OAAO,EAEN,KAAK,iCAAiC,EACtC,KAAK,SAAS,EACd,KAAK,kBAAkB,EACvB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAI7C,KAAK,WAAW,GAAG,iCAAiC,CAAC,GAAG,CAAC,CAAC;AAE1D,MAAM,WAAW,6BAA6B,CAAC,KAAK,SAAS,UAAU,GAAG,UAAU,CACnF,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;;;;;;;;;;;;GAYG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,SAAS,UAAU,GAAG,UAAU,EAAE,OAAO,EAAE,6BAA6B,CAAC,KAAK,CAAC;;;IA+BzH,2FAA2F;kBAC7E,OAAO,SAAS,kBAAkB,WAAW,OAAO,EAAE,GAAG,OAAO,EAAE;IAKhF,gFAAgF;0BAC1D,QAAQ,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAIjE,4EAA4E;iBAC/D,MAAM;IAInB;;;OAGG;wBACiB,MAAM;;;;;;;;aAiBw8tE,CAAC;;;;aAAiX,CAAC;cAAwB,CAAC;;;;;;;;;;gBAAqrD,CAAC;;;;EAHriyE;AAED,MAAM,MAAM,gBAAgB,CAAC,KAAK,SAAS,UAAU,GAAG,UAAU,IAAI,UAAU,CAAC,OAAO,sBAAsB,CAAC,KAAK,CAAC,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"createCanvasComponents.svelte.d.ts","sourceRoot":"","sources":["../../src/canvas/createCanvasComponents.svelte.ts"],"names":[],"mappings":"AACA,OAAO,EAEN,KAAK,iCAAiC,EACtC,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAI7C,KAAK,WAAW,GAAG,iCAAiC,CAAC,GAAG,CAAC,CAAC;AAE1D,MAAM,WAAW,6BAA6B,CAAC,KAAK,SAAS,UAAU,GAAG,UAAU,CACnF,SAAQ,IAAI,CAAC,WAAW,EAAE,UAAU,GAAG,UAAU,GAAG,UAAU,CAAC;IAC/D,QAAQ,EAAE,MAAM,KAAK,EAAE,CAAC;IACxB,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,IAAI,CAAC;IACnC,oFAAoF;IACpF,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,IAAI,CAAC;IACjC;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,SAAS,UAAU,GAAG,UAAU,EAAE,OAAO,EAAE,6BAA6B,CAAC,KAAK,CAAC;IAazH,gCAAgC;;;;;4BAS+mqI,CAAC;;UAAmM,CAAC;YAAsB,CAAC;eAAyB,CAAC;;8BAA8E,CAAC;;;;;;;;;;6BAA4nC,CAAC;;;;;;;;eAA6yB,CAAC;;;;;;;oBAAi7B,CAAC;;;;;;;;;;;;;;gBAA07C,CAAC;;EAH7uzI;AAED,MAAM,MAAM,gBAAgB,GAAG,UAAU,CAAC,OAAO,sBAAsB,CAAC,CAAC"}
1
+ {"version":3,"file":"createCanvasComponents.svelte.d.ts","sourceRoot":"","sources":["../../src/canvas/createCanvasComponents.svelte.ts"],"names":[],"mappings":"AACA,OAAO,EAEN,KAAK,iCAAiC,EACtC,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAI7C,KAAK,WAAW,GAAG,iCAAiC,CAAC,GAAG,CAAC,CAAC;AAE1D,MAAM,WAAW,6BAA6B,CAAC,KAAK,SAAS,UAAU,GAAG,UAAU,CACnF,SAAQ,IAAI,CAAC,WAAW,EAAE,UAAU,GAAG,UAAU,GAAG,UAAU,CAAC;IAC/D,QAAQ,EAAE,MAAM,KAAK,EAAE,CAAC;IACxB,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,IAAI,CAAC;IACnC,oFAAoF;IACpF,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,IAAI,CAAC;IACjC;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,SAAS,UAAU,GAAG,UAAU,EAAE,OAAO,EAAE,6BAA6B,CAAC,KAAK,CAAC;IAazH,gCAAgC;;;;;4BASogrI,CAAC;;UAAmM,CAAC;YAAsB,CAAC;eAAyB,CAAC;;8BAA8E,CAAC;;;;;;;;;;6BAA4nC,CAAC;;;;;;;;eAA6yB,CAAC;;;;;;;oBAAi7B,CAAC;;;;;;;;;;;;;;gBAA07C,CAAC;;EAHlo0I;AAED,MAAM,MAAM,gBAAgB,GAAG,UAAU,CAAC,OAAO,sBAAsB,CAAC,CAAC"}
@@ -0,0 +1,24 @@
1
+ import { DiagramDirector, PresenceStore, type DiagramController, type DiagramPlacement, type PresenceClock, type PresenceState } from '@pixerate/editor/diagram';
2
+ export interface CreateDiagramDirectorOptions {
3
+ /** Where nodes are drawn now, e.g. `() => diagram.layout` from `createMermaidDiagram`. */
4
+ placement: () => DiagramPlacement;
5
+ /** 1 = natural speed; 2 = twice as fast. */
6
+ speed?: number;
7
+ clock?: PresenceClock;
8
+ /** Hide a cursor this long after its last call (ms, default 1500). */
9
+ linger?: number;
10
+ }
11
+ export interface SvelteDiagramDirector {
12
+ readonly presence: PresenceStore;
13
+ readonly director: DiagramDirector;
14
+ /** The cursors (reactive). */
15
+ readonly state: PresenceState;
16
+ destroy(): void;
17
+ }
18
+ /**
19
+ * Svelte 5 rune: a `PresenceStore` and `DiagramDirector` for a diagram. Pass `director` to
20
+ * `createDiagramToolProvider` so agent edits are acted out by a cursor, and `presence` to
21
+ * `<DiagramPresenceLayer>`. Parity with React's `useDiagramDirector`.
22
+ */
23
+ export declare function createDiagramDirector(controller: DiagramController, options: CreateDiagramDirectorOptions): SvelteDiagramDirector;
24
+ //# sourceMappingURL=createDiagramDirector.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createDiagramDirector.svelte.d.ts","sourceRoot":"","sources":["../../src/canvas/createDiagramDirector.svelte.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,KAAK,iBAAiB,EAAE,KAAK,gBAAgB,EAAE,KAAK,aAAa,EAAE,KAAK,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEjK,MAAM,WAAW,4BAA4B;IAC5C,0FAA0F;IAC1F,SAAS,EAAE,MAAM,gBAAgB,CAAC;IAClC,4CAA4C;IAC5C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,sEAAsE;IACtE,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,qBAAqB;IACrC,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;IACjC,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;IACnC,8BAA8B;IAC9B,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC;IAC9B,OAAO,IAAI,IAAI,CAAC;CAChB;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,iBAAiB,EAAE,OAAO,EAAE,4BAA4B,GAAG,qBAAqB,CAejI"}
@@ -0,0 +1,22 @@
1
+ import { DiagramDirector, PresenceStore } from '@pixerate/editor/diagram';
2
+ /**
3
+ * Svelte 5 rune: a `PresenceStore` and `DiagramDirector` for a diagram. Pass `director` to
4
+ * `createDiagramToolProvider` so agent edits are acted out by a cursor, and `presence` to
5
+ * `<DiagramPresenceLayer>`. Parity with React's `useDiagramDirector`.
6
+ */
7
+ export function createDiagramDirector(controller, options) {
8
+ const presence = new PresenceStore();
9
+ const director = new DiagramDirector(controller, presence, { placement: options.placement, speed: options.speed, clock: options.clock, linger: options.linger });
10
+ let state = $state.raw(presence.getState());
11
+ const destroy = presence.subscribe((next) => {
12
+ state = next;
13
+ });
14
+ return {
15
+ presence,
16
+ director,
17
+ get state() {
18
+ return state;
19
+ },
20
+ destroy
21
+ };
22
+ }
@@ -0,0 +1,73 @@
1
+ import { DiagramController, type DiagramActionResult, type DiagramControllerOptions, type DiagramState, type EditOp, type MermaidDocument } from '@pixerate/editor/diagram';
2
+ import { type DiagramLayout, type DiagramLayoutOptions, type MermaidFlowEdge, type MermaidFlowNode } from '@pixerate/editor/canvas';
3
+ export interface CreateMermaidDiagramOptions extends DiagramControllerOptions {
4
+ /** Layout spacing and node measuring for new nodes (stored positions always win). */
5
+ layoutOptions?: DiagramLayoutOptions;
6
+ }
7
+ type Placed = {
8
+ id: string;
9
+ position: {
10
+ x: number;
11
+ y: number;
12
+ };
13
+ parentId?: string;
14
+ };
15
+ export interface SvelteMermaidDiagram {
16
+ readonly controller: DiagramController;
17
+ /** The controller's state (reactive). */
18
+ readonly state: DiagramState;
19
+ readonly document: MermaidDocument;
20
+ /** The Mermaid text (with the `%% @pixerate` layout comment). */
21
+ readonly source: string;
22
+ /** Canvas nodes (groups first, children relative to their group) and edges (reactive). */
23
+ readonly nodes: MermaidFlowNode[];
24
+ readonly edges: MermaidFlowEdge[];
25
+ readonly layout: DiagramLayout;
26
+ apply(ops: EditOp | EditOp[], label?: string): DiagramActionResult;
27
+ /** Replaces the source; `clearHistory` when opening a different diagram. */
28
+ load(source: string, options?: {
29
+ clearHistory?: boolean;
30
+ }): DiagramActionResult;
31
+ /** Stores where dragged nodes ended up (pass every canvas node as `all` so groups carry their contents). */
32
+ moveNodes(moved: readonly Placed[], all?: readonly Placed[]): DiagramActionResult | null;
33
+ connect(source: string, target: string, label?: string): DiagramActionResult;
34
+ /** Removes nodes / groups (with their edges) and edges by id, as one undo step. */
35
+ remove(ids: readonly string[]): DiagramActionResult;
36
+ rename(id: string, label: string): DiagramActionResult;
37
+ select(ids: readonly string[]): void;
38
+ undo(): void;
39
+ redo(): void;
40
+ /** Stops listening to the controller. */
41
+ destroy(): void;
42
+ }
43
+ /**
44
+ * Svelte 5 rune: a Mermaid diagram on a Svelte Flow canvas. Subscribes to a
45
+ * `DiagramController` (or creates one from options), lays it out and exposes canvas
46
+ * nodes and edges reactively with bound edits. Parity with React's `useMermaidDiagram`.
47
+ */
48
+ export declare function createMermaidDiagram(controllerOrOptions?: DiagramController | CreateMermaidDiagramOptions): SvelteMermaidDiagram;
49
+ export interface CreateMermaidStreamOptions extends DiagramLayoutOptions {
50
+ /** Glide duration between layouts in ms (default 300; 0 jumps). */
51
+ duration?: number;
52
+ }
53
+ export interface SvelteMermaidStream {
54
+ readonly document: MermaidDocument | null;
55
+ readonly nodes: MermaidFlowNode[];
56
+ readonly edges: MermaidFlowEdge[];
57
+ /** The layout being shown (mid-glide while `settled` is false). */
58
+ readonly layout: DiagramLayout | null;
59
+ readonly settled: boolean;
60
+ /** Feeds the source so far; `complete` once nothing more will arrive. */
61
+ update(source: string, complete?: boolean): void;
62
+ /** Starts over for a new source. */
63
+ reset(): void;
64
+ destroy(): void;
65
+ }
66
+ /**
67
+ * Svelte 5 rune: draws Mermaid that is still being written (e.g. a model's reply). Nodes
68
+ * appear once an edge places them and glide to their new places as the layout grows.
69
+ * Parity with React's `useMermaidStream`.
70
+ */
71
+ export declare function createMermaidStream(options?: CreateMermaidStreamOptions): SvelteMermaidStream;
72
+ export {};
73
+ //# sourceMappingURL=createMermaidDiagram.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createMermaidDiagram.svelte.d.ts","sourceRoot":"","sources":["../../src/canvas/createMermaidDiagram.svelte.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,138 @@
1
+ import { DiagramController } from '@pixerate/editor/diagram';
2
+ import { DiagramStream, blendDiagramLayout, easeDiagramTween, mermaidMovesFromCanvas, mermaidToCanvas } from '@pixerate/editor/canvas';
3
+ /**
4
+ * Svelte 5 rune: a Mermaid diagram on a Svelte Flow canvas. Subscribes to a
5
+ * `DiagramController` (or creates one from options), lays it out and exposes canvas
6
+ * nodes and edges reactively with bound edits. Parity with React's `useMermaidDiagram`.
7
+ */
8
+ export function createMermaidDiagram(controllerOrOptions = {}) {
9
+ const controller = controllerOrOptions instanceof DiagramController ? controllerOrOptions : new DiagramController(controllerOrOptions);
10
+ const layoutOptions = controllerOrOptions instanceof DiagramController ? undefined : controllerOrOptions.layoutOptions;
11
+ let state = $state.raw(controller.getState());
12
+ const canvas = $derived(mermaidToCanvas(state.document, { ...layoutOptions, editable: state.editable }));
13
+ const unsubscribe = controller.subscribe((next) => {
14
+ state = next;
15
+ });
16
+ return {
17
+ controller,
18
+ get state() {
19
+ return state;
20
+ },
21
+ get document() {
22
+ return state.document;
23
+ },
24
+ get source() {
25
+ return state.source;
26
+ },
27
+ get nodes() {
28
+ return canvas.nodes;
29
+ },
30
+ get edges() {
31
+ return canvas.edges;
32
+ },
33
+ get layout() {
34
+ return canvas.layout;
35
+ },
36
+ apply: (ops, label) => controller.apply(ops, label),
37
+ load: (source, options) => controller.load(source, options),
38
+ moveNodes: (moved, all = moved) => {
39
+ const op = mermaidMovesFromCanvas(canvas.layout, moved, all, { stored: controller.getDocument().meta.layout ?? {} });
40
+ return op ? controller.apply(op, 'Move') : null;
41
+ },
42
+ connect: (source, target, label) => controller.apply({ type: 'addEdge', edge: { source, target, ...(label ? { label } : {}) } }, 'Connect'),
43
+ remove: (ids) => {
44
+ const edgeIds = new Set(controller.getDocument().graph.edges.map((e) => e.id));
45
+ const edges = ids.filter((id) => edgeIds.has(id));
46
+ const nodes = ids.filter((id) => !edgeIds.has(id));
47
+ const ops = [];
48
+ if (edges.length)
49
+ ops.push({ type: 'removeEdges', ids: edges });
50
+ if (nodes.length)
51
+ ops.push({ type: 'removeNodes', ids: nodes });
52
+ return controller.apply(ops, 'Delete');
53
+ },
54
+ rename: (id, label) => controller.apply(controller.getDocument().graph.groups.some((g) => g.id === id) ? { type: 'renameGroup', id, label } : { type: 'renameNode', id, label }, 'Rename'),
55
+ select: (ids) => controller.select(ids),
56
+ undo: () => void controller.undo(),
57
+ redo: () => void controller.redo(),
58
+ destroy: unsubscribe
59
+ };
60
+ }
61
+ /**
62
+ * Svelte 5 rune: draws Mermaid that is still being written (e.g. a model's reply). Nodes
63
+ * appear once an edge places them and glide to their new places as the layout grows.
64
+ * Parity with React's `useMermaidStream`.
65
+ */
66
+ export function createMermaidStream(options = {}) {
67
+ const { duration = 300, ...layoutOptions } = options;
68
+ const stream = new DiagramStream(layoutOptions);
69
+ let doc = $state.raw(null);
70
+ let shown = $state.raw(null);
71
+ let settled = $state(true);
72
+ let frame = 0;
73
+ const stop = () => {
74
+ if (frame && typeof cancelAnimationFrame === 'function')
75
+ cancelAnimationFrame(frame);
76
+ frame = 0;
77
+ };
78
+ const canvas = $derived.by(() => {
79
+ if (!doc || !shown)
80
+ return { nodes: [], edges: [] };
81
+ const placed = new Set(Object.keys(shown.positions));
82
+ const graph = {
83
+ ...doc.graph,
84
+ nodes: doc.graph.nodes.filter((n) => placed.has(n.id)),
85
+ groups: doc.graph.groups.filter((g) => placed.has(g.id)),
86
+ edges: doc.graph.edges.filter((e) => placed.has(e.source) && placed.has(e.target))
87
+ };
88
+ return mermaidToCanvas({ ...doc, graph }, { layout: shown });
89
+ });
90
+ return {
91
+ get document() {
92
+ return doc;
93
+ },
94
+ get nodes() {
95
+ return canvas.nodes;
96
+ },
97
+ get edges() {
98
+ return canvas.edges;
99
+ },
100
+ get layout() {
101
+ return shown;
102
+ },
103
+ get settled() {
104
+ return settled;
105
+ },
106
+ update(source, complete = false) {
107
+ const result = stream.update(source, complete);
108
+ doc = result.document.tier === 'editable' ? result.document : null;
109
+ const target = result.layout;
110
+ if (!result.relaid && shown)
111
+ return;
112
+ stop();
113
+ const from = shown;
114
+ if (!target || !from || duration <= 0 || typeof requestAnimationFrame !== 'function') {
115
+ shown = target;
116
+ settled = true;
117
+ return;
118
+ }
119
+ const start = performance.now();
120
+ settled = false;
121
+ const step = () => {
122
+ const t = Math.min(1, (performance.now() - start) / duration);
123
+ shown = blendDiagramLayout(from, target, easeDiagramTween(t));
124
+ settled = t >= 1;
125
+ frame = t < 1 ? requestAnimationFrame(step) : 0;
126
+ };
127
+ frame = requestAnimationFrame(step);
128
+ },
129
+ reset() {
130
+ stop();
131
+ stream.reset();
132
+ doc = null;
133
+ shown = null;
134
+ settled = true;
135
+ },
136
+ destroy: stop
137
+ };
138
+ }
@@ -40,4 +40,10 @@ export { createCanvasComponents, type CanvasComponents, type CreateCanvasCompone
40
40
  export { default as CanvasComponentsPanel } from './CanvasComponentsPanel.svelte';
41
41
  export { default as CanvasInstanceInspector } from './CanvasInstanceInspector.svelte';
42
42
  export { createCanvasComponentsController, createCanvasComponent, combineCanvasComponentsAsVariants, createCanvasInstance, detachCanvasInstance, resetCanvasInstanceOverrides, pushCanvasInstanceOverrides, swapCanvasInstance, setCanvasInstanceProperties, setCanvasComponentProperty, bindCanvasComponentProperty, restoreCanvasMainComponent, addCanvasVariant, removeCanvasVariant, setCanvasVariantProperties, renameCanvasVariantProperty, renameCanvasVariantValue, getNextVariantValues, syncCanvasComponents, syncCanvasInstance, syncAllCanvasInstances, listCanvasComponents, inspectCanvasInstance, getInstanceStatus, getNodeOverrides, getComponentSourceId, getInstanceData, getCanvasComponentDragId, isCanvasComponent, isCanvasComponentSet, isCanvasInstance, wouldCreateComponentCycle, CANVAS_COMPONENT_DRAG_TYPE, type CanvasComponentsController, type CanvasComponentsControllerOptions, type CanvasComponentPropertyDef, type CanvasComponentPropertyField, type CanvasComponentResult, type CanvasComponentSyncOptions, type CanvasInstanceInfo, type CanvasComponentInfo, type CanvasComponentSetInfo, type AddCanvasVariantOptions, type SetCanvasVariantPropertiesOptions, createCanvasDrawController, createDefaultStrokeStyle, findStrokesAtPoint, streamlinePoints, strokePointsToPathData, strokeToShapeNode, type CanvasDrawControllerOptions, type FreehandDrawOptions, type FreehandStroke, type FreehandStrokeStyle, type FreehandTool, type StrokeToShapeNodeOptions, PIXERATE_BRAND_GRADIENT, CANVAS_GRADIENT_PRESETS, isCanvasGradient, parseCssGradient, resolveCanvasGradient, angleToSvgLinearCoords, gradientToSvgDef, type GradientStop, type CanvasLinearGradient, type CanvasRadialGradient, type CanvasGradientDef, type SvgGradientStop, type SvgGradientDef, DEFAULT_CURSOR_INACTIVITY_MS, CARD_INSPECTION_ZONES, hashString, getAgentCardAnchor, calculateCurvedPath, getNaturalMovementTiming, getCursorTransitionDuration, calculateCursorArrowRotation, formatAgentCursorName, isAgentCursor, type CanvasAgentCursor, type CardInspectionZone, type CurvedPathOptions } from '@pixerate/editor/canvas';
43
+ export { default as MermaidDiagramNode } from './MermaidDiagramNode.svelte';
44
+ export { default as MermaidDiagramGroup } from './MermaidDiagramGroup.svelte';
45
+ export { createMermaidDiagram, createMermaidStream, type CreateMermaidDiagramOptions, type CreateMermaidStreamOptions, type SvelteMermaidDiagram, type SvelteMermaidStream } from './createMermaidDiagram.svelte.js';
46
+ export { default as MermaidThumbnail } from './MermaidThumbnail.svelte';
47
+ export { default as DiagramPresenceLayer } from './DiagramPresenceLayer.svelte';
48
+ export { createDiagramDirector, type CreateDiagramDirectorOptions, type SvelteDiagramDirector } from './createDiagramDirector.svelte.js';
43
49
  //# 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;AAC5E,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAG9E,OAAO,EACN,qBAAqB,EACrB,KAAK,4BAA4B,EACjC,MAAM,mCAAmC,CAAC;AAG3C,OAAO,EACN,mBAAmB,EACnB,4BAA4B,EAC5B,KAAK,aAAa,EAClB,KAAK,0BAA0B,EAC/B,KAAK,6BAA6B,EAClC,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACN,kBAAkB,EAClB,KAAK,YAAY,EACjB,KAAK,yBAAyB,EAC9B,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAG1E,OAAO,EACN,gBAAgB,EAChB,KAAK,UAAU,EACf,KAAK,uBAAuB,EAC5B,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAGtE,OAAO,EACN,mBAAmB,EACnB,KAAK,aAAa,EAClB,KAAK,0BAA0B,EAC/B,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACN,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,YAAY,EACZ,qBAAqB,EACrB,UAAU,EACV,UAAU,EACV,cAAc,EACd,iBAAiB,EACjB,gBAAgB,EAChB,mBAAmB,EACnB,cAAc,EACd,SAAS,EACT,WAAW,EACX,WAAW,EACX,eAAe,EACf,gBAAgB,EAChB,YAAY,EACZ,eAAe,EACf,KAAK,YAAY,EACjB,KAAK,sBAAsB,EAC3B,KAAK,uBAAuB,EAC5B,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EACzB,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACN,UAAU,EACV,eAAe,EACf,SAAS,EACT,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,EACjB,SAAS,EACT,WAAW,EACX,eAAe,EACf,QAAQ,EACR,WAAW,EACX,WAAW,EACX,mBAAmB,EACnB,aAAa,EACb,aAAa,EACb,iBAAiB,EACjB,gBAAgB,EAChB,oBAAoB,EACpB,YAAY,EACZ,iBAAiB,EACjB,sBAAsB,EACtB,WAAW,EACX,cAAc,EACd,cAAc,EACd,gBAAgB,EAChB,qBAAqB,EACrB,iBAAiB,EACjB,uBAAuB,EACvB,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EACpB,yBAAyB,EACzB,KAAK,SAAS,EACd,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,SAAS,EACd,KAAK,UAAU,EACf,KAAK,iBAAiB,EACtB,KAAK,UAAU,EACf,KAAK,aAAa,EAClB,KAAK,mBAAmB,EACxB,KAAK,wBAAwB,EAC7B,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACnB,KAAK,mBAAmB,EACxB,KAAK,sBAAsB,EAC3B,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAG1D,OAAO,EACN,iBAAiB,EACjB,oBAAoB,EACpB,qBAAqB,EACrB,sBAAsB,EACtB,kBAAkB,EAClB,WAAW,EACX,YAAY,EACZ,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,WAAW,EACX,kBAAkB,EAClB,cAAc,EACd,WAAW,EACX,kBAAkB,EAClB,YAAY,EACZ,cAAc,EACd,gBAAgB,EAChB,YAAY,EACZ,cAAc,EACd,aAAa,EACb,iBAAiB,EACjB,gBAAgB,EAChB,WAAW,EACX,cAAc,EACd,WAAW,EACX,gBAAgB,EAChB,kBAAkB,EAClB,cAAc,EACd,YAAY,EACZ,mBAAmB,EACnB,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,SAAS,EACd,KAAK,UAAU,EACf,KAAK,SAAS,EACd,KAAK,eAAe,EACpB,KAAK,SAAS,EACd,KAAK,YAAY,EACjB,KAAK,mBAAmB,EACxB,KAAK,SAAS,EACd,KAAK,SAAS,EACd,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,oBAAoB,EACzB,KAAK,wBAAwB,EAC7B,KAAK,uBAAuB,EAC5B,KAAK,wBAAwB,EAC7B,KAAK,uBAAuB,EAC5B,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,uBAAuB,EAC5B,KAAK,qBAAqB,EAC1B,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EACN,gBAAgB,EAChB,uBAAuB,EACvB,mBAAmB,EACnB,0BAA0B,EAC1B,qBAAqB,EACrB,gBAAgB,EAChB,iBAAiB,EACjB,qBAAqB,EACrB,WAAW,EACX,UAAU,EACV,cAAc,EACd,aAAa,EACb,YAAY,EACZ,WAAW,EACX,mBAAmB,EACnB,cAAc,EACd,UAAU,EACV,aAAa,EACb,kBAAkB,EAClB,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,mBAAmB,EACnB,gBAAgB,EAChB,oBAAoB,EACpB,gBAAgB,EAChB,uBAAuB,EACvB,iBAAiB,EACjB,oBAAoB,EACpB,iBAAiB,EACjB,KAAK,aAAa,EAClB,KAAK,UAAU,EACf,KAAK,eAAe,EACpB,KAAK,WAAW,EAChB,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,KAAK,UAAU,EACf,KAAK,SAAS,EACd,KAAK,oBAAoB,EACzB,KAAK,iBAAiB,EACtB,KAAK,uBAAuB,EAC5B,KAAK,0BAA0B,EAC/B,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EACzB,KAAK,sBAAsB,EAC3B,MAAM,yBAAyB,CAAC;AAGjC,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;AAIjC,OAAO,EACN,WAAW,EACX,SAAS,EACT,QAAQ,EACR,YAAY,EACZ,gBAAgB,EAChB,aAAa,EACb,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,yBAAyB,EACzB,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,cAAc,EACd,eAAe,EACf,gCAAgC,EAChC,oBAAoB,EACpB,qBAAqB,EACrB,KAAK,UAAU,EACf,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EACzB,KAAK,cAAc,EACnB,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EACzB,KAAK,sBAAsB,EAC3B,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACnB,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,sBAAsB,EAC3B,KAAK,mBAAmB,EACxB,KAAK,qBAAqB,EAC1B,KAAK,8BAA8B,EACnC,KAAK,4BAA4B,EACjC,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,KAAK,sBAAsB,EAC3B,KAAK,0BAA0B,EAC/B,KAAK,iCAAiC,EACtC,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACN,sBAAsB,EACtB,KAAK,gBAAgB,EACrB,KAAK,6BAA6B,EAClC,MAAM,oCAAoC,CAAC;AAG5C,OAAO,EACN,kBAAkB,EAClB,KAAK,yBAAyB,EAC9B,KAAK,kBAAkB,EACvB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAC5E,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAE1E,OAAO,EACN,eAAe,EACf,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,qBAAqB,EACrB,iBAAiB,EACjB,oBAAoB,EACpB,iBAAiB,EACjB,sBAAsB,EACtB,0BAA0B,EAC1B,sBAAsB,EACtB,qBAAqB,EACrB,oBAAoB,EACpB,qBAAqB,EACrB,sBAAsB,EACtB,uBAAuB,EACvB,uBAAuB,EACvB,oBAAoB,EACpB,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,sBAAsB,EAC3B,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EACN,qBAAqB,EACrB,KAAK,4BAA4B,EACjC,KAAK,qBAAqB,EAC1B,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAE1E,OAAO,EACN,+BAA+B,EAC/B,eAAe,EACf,qBAAqB,EACrB,kBAAkB,EAClB,kBAAkB,EAClB,sBAAsB,EACtB,qBAAqB,EACrB,wBAAwB,EACxB,uBAAuB,EACvB,oBAAoB,EACpB,iBAAiB,EACjB,wBAAwB,EACxB,iBAAiB,EACjB,aAAa,EACb,cAAc,EACd,cAAc,EACd,uBAAuB,EACvB,yBAAyB,EACzB,oBAAoB,EACpB,iBAAiB,EACjB,aAAa,EACb,QAAQ,EACR,aAAa,EACb,cAAc,EACd,WAAW,EACX,WAAW,EACX,mBAAmB,EACnB,iBAAiB,EACjB,cAAc,EACd,UAAU,EACV,UAAU,EACV,UAAU,EACV,WAAW,EACX,gBAAgB,EAChB,iBAAiB,EACjB,qBAAqB,EACrB,qBAAqB,EACrB,cAAc,EACd,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,WAAW,EACX,kBAAkB,EAClB,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,eAAe,EACf,WAAW,EACX,aAAa,EACb,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,eAAe,EACf,gBAAgB,EAChB,aAAa,EACb,cAAc,EACd,sBAAsB,EACtB,sBAAsB,EACtB,WAAW,EACX,gBAAgB,EAChB,mBAAmB,EACnB,qBAAqB,EACrB,kBAAkB,EAClB,eAAe,EACf,iBAAiB,EACjB,wBAAwB,EACxB,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,kBAAkB,EAClB,OAAO,EACP,OAAO,EACP,mBAAmB,EACnB,KAAK,kBAAkB,EACvB,KAAK,cAAc,EACnB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACnB,KAAK,mBAAmB,EACxB,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,qBAAqB,EAC1B,KAAK,iBAAiB,EACtB,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,cAAc,EACnB,KAAK,oBAAoB,EACzB,KAAK,sBAAsB,EAC3B,KAAK,sBAAsB,EAC3B,KAAK,0BAA0B,EAC/B,KAAK,sBAAsB,EAC3B,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,yBAAyB,EAC9B,KAAK,gCAAgC,EACrC,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,WAAW,EAChB,KAAK,gBAAgB,EACrB,KAAK,UAAU,EACf,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EACN,sBAAsB,EACtB,KAAK,gBAAgB,EACrB,KAAK,6BAA6B,EAClC,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAClF,OAAO,EAAE,OAAO,IAAI,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAEtF,OAAO,EACN,gCAAgC,EAChC,qBAAqB,EACrB,iCAAiC,EACjC,oBAAoB,EACpB,oBAAoB,EACpB,4BAA4B,EAC5B,2BAA2B,EAC3B,kBAAkB,EAClB,2BAA2B,EAC3B,0BAA0B,EAC1B,2BAA2B,EAC3B,0BAA0B,EAC1B,gBAAgB,EAChB,mBAAmB,EACnB,0BAA0B,EAC1B,2BAA2B,EAC3B,wBAAwB,EACxB,oBAAoB,EACpB,oBAAoB,EACpB,kBAAkB,EAClB,sBAAsB,EACtB,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,EACjB,gBAAgB,EAChB,oBAAoB,EACpB,eAAe,EACf,wBAAwB,EACxB,iBAAiB,EACjB,oBAAoB,EACpB,gBAAgB,EAChB,yBAAyB,EACzB,0BAA0B,EAC1B,KAAK,0BAA0B,EAC/B,KAAK,iCAAiC,EACtC,KAAK,0BAA0B,EAC/B,KAAK,4BAA4B,EACjC,KAAK,qBAAqB,EAC1B,KAAK,0BAA0B,EAC/B,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,sBAAsB,EAC3B,KAAK,uBAAuB,EAC5B,KAAK,iCAAiC,EAEtC,0BAA0B,EAC1B,wBAAwB,EACxB,kBAAkB,EAClB,gBAAgB,EAChB,sBAAsB,EACtB,iBAAiB,EACjB,KAAK,2BAA2B,EAChC,KAAK,mBAAmB,EACxB,KAAK,cAAc,EACnB,KAAK,mBAAmB,EACxB,KAAK,YAAY,EACjB,KAAK,wBAAwB,EAE7B,uBAAuB,EACvB,uBAAuB,EACvB,gBAAgB,EAChB,gBAAgB,EAChB,qBAAqB,EACrB,sBAAsB,EACtB,gBAAgB,EAChB,KAAK,YAAY,EACjB,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,EACzB,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,cAAc,EAEnB,4BAA4B,EAC5B,qBAAqB,EACrB,UAAU,EACV,kBAAkB,EAClB,mBAAmB,EACnB,wBAAwB,EACxB,2BAA2B,EAC3B,4BAA4B,EAC5B,qBAAqB,EACrB,aAAa,EACb,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,MAAM,yBAAyB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/canvas/index.ts"],"names":[],"mappings":"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"}
@@ -72,3 +72,12 @@ createCanvasDrawController, createDefaultStrokeStyle, findStrokesAtPoint, stream
72
72
  PIXERATE_BRAND_GRADIENT, CANVAS_GRADIENT_PRESETS, isCanvasGradient, parseCssGradient, resolveCanvasGradient, angleToSvgLinearCoords, gradientToSvgDef,
73
73
  // Agent presence math & types
74
74
  DEFAULT_CURSOR_INACTIVITY_MS, CARD_INSPECTION_ZONES, hashString, getAgentCardAnchor, calculateCurvedPath, getNaturalMovementTiming, getCursorTransitionDuration, calculateCursorArrowRotation, formatAgentCursorName, isAgentCursor } from '@pixerate/editor/canvas';
75
+ // Mermaid diagrams (flowchart, state, class, ER) on the canvas, with streaming
76
+ export { default as MermaidDiagramNode } from './MermaidDiagramNode.svelte';
77
+ export { default as MermaidDiagramGroup } from './MermaidDiagramGroup.svelte';
78
+ export { createMermaidDiagram, createMermaidStream } from './createMermaidDiagram.svelte.js';
79
+ // Static previews of Mermaid diagrams
80
+ export { default as MermaidThumbnail } from './MermaidThumbnail.svelte';
81
+ // Agent cursors acting out diagram edits
82
+ export { default as DiagramPresenceLayer } from './DiagramPresenceLayer.svelte';
83
+ export { createDiagramDirector } from './createDiagramDirector.svelte.js';
package/dist/index.d.ts CHANGED
@@ -14,6 +14,7 @@ export * from "./history/index.js";
14
14
  export * from "./fileImport.svelte.js";
15
15
  export * from "./docxExport.svelte.js";
16
16
  export * from "./agentTools.svelte.js";
17
+ export * from "./toolBridge.svelte.js";
17
18
  export * from "./outline.svelte.js";
18
19
  export * from "./merge.svelte.js";
19
20
  export { DirtyTracker, createDirtyTracker, defaultIsEqual, HistoryManager, createHistoryManager, bindDirtyToHistory, withoutDirty, } from "@pixerate/editor";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
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;AAC/D,OAAO,KAAK,qBAAqB,MAAM,uBAAuB,CAAC;AAC/D,OAAO,KAAK,sBAAsB,MAAM,wBAAwB,CAAC;AACjE,OAAO,KAAK,yBAAyB,MAAM,2BAA2B,CAAC;AAEvE,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,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAElC,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,cAAc,EACd,cAAc,EACd,oBAAoB,EACpB,kBAAkB,EAClB,YAAY,GACb,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACV,mBAAmB,EACnB,OAAO,EACP,YAAY,EACZ,qBAAqB,EACrB,YAAY,EACZ,WAAW,EACX,sBAAsB,EACtB,mBAAmB,EACnB,yBAAyB,GAC1B,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;AAChE,MAAM,MAAM,iBAAiB,GAAG,cAAc,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAC7E,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAChE,cAAc,6BAA6B,CAAC;AAC5C,MAAM,MAAM,kBAAkB,GAAG,cAAc,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAC/E,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAClE,MAAM,MAAM,qBAAqB,GAAG,cAAc,CAAC,OAAO,yBAAyB,CAAC,CAAC;AACrF,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAExE,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,EACjB,eAAe,EACf,WAAW,EACX,kBAAkB,EAClB,WAAW,GACZ,MAAM,kBAAkB,CAAC;AAE1B,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC;AAElC,cAAc,uBAAuB,CAAC"}
package/dist/index.js CHANGED
@@ -5,6 +5,7 @@ export * from "./history/index.js";
5
5
  export * from "./fileImport.svelte.js";
6
6
  export * from "./docxExport.svelte.js";
7
7
  export * from "./agentTools.svelte.js";
8
+ export * from "./toolBridge.svelte.js";
8
9
  export * from "./outline.svelte.js";
9
10
  export * from "./merge.svelte.js";
10
11
  export { DirtyTracker, createDirtyTracker, defaultIsEqual, HistoryManager, createHistoryManager, bindDirtyToHistory, withoutDirty, } from "@pixerate/editor";
@@ -0,0 +1,18 @@
1
+ import { type ConnectToolBridgeOptions, type ToolBridgeStatus, type ToolRegistry } from "@pixerate/editor/tools";
2
+ type MaybeGetter<T> = T | (() => T);
3
+ export interface SvelteToolBridge {
4
+ /** "off" while no options are given (reactive). */
5
+ readonly status: ToolBridgeStatus | "off";
6
+ /** Why the last connection ended (e.g. "Bad token"), when the bridge said. */
7
+ readonly detail: string | undefined;
8
+ /** The id the bridge gave this editor (`list_editors`). */
9
+ readonly editorId: string | null;
10
+ }
11
+ /**
12
+ * Connects a `ToolRegistry` to a local MCP bridge (`pixerate-mcp-bridge`) for the lifetime of
13
+ * the calling component, so an MCP client can call the page's tools. Pass getters to react to
14
+ * changes; `null` options stay disconnected. Parity with React's `useToolBridge`.
15
+ */
16
+ export declare function useToolBridge(registry: MaybeGetter<ToolRegistry | null | undefined>, options: MaybeGetter<ConnectToolBridgeOptions | null>): SvelteToolBridge;
17
+ export {};
18
+ //# sourceMappingURL=toolBridge.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toolBridge.svelte.d.ts","sourceRoot":"","sources":["../src/toolBridge.svelte.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,wBAAwB,EAA6B,KAAK,gBAAgB,EAAE,KAAK,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAE/J,KAAK,WAAW,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;AAGpC,MAAM,WAAW,gBAAgB;IAC/B,mDAAmD;IACnD,QAAQ,CAAC,MAAM,EAAE,gBAAgB,GAAG,KAAK,CAAC;IAC1C,8EAA8E;IAC9E,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,2DAA2D;IAC3D,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CAClC;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,WAAW,CAAC,YAAY,GAAG,IAAI,GAAG,SAAS,CAAC,EACtD,OAAO,EAAE,WAAW,CAAC,wBAAwB,GAAG,IAAI,CAAC,GACpD,gBAAgB,CAoClB"}
@@ -0,0 +1,44 @@
1
+ import { connectToolBridge } from "@pixerate/editor/tools";
2
+ const read = (value) => (typeof value === "function" ? value() : value);
3
+ /**
4
+ * Connects a `ToolRegistry` to a local MCP bridge (`pixerate-mcp-bridge`) for the lifetime of
5
+ * the calling component, so an MCP client can call the page's tools. Pass getters to react to
6
+ * changes; `null` options stay disconnected. Parity with React's `useToolBridge`.
7
+ */
8
+ export function useToolBridge(registry, options) {
9
+ let status = $state("off");
10
+ let detail = $state(undefined);
11
+ let editorId = $state(null);
12
+ $effect(() => {
13
+ const currentRegistry = read(registry);
14
+ const currentOptions = read(options);
15
+ if (!currentRegistry || !currentOptions) {
16
+ status = "off";
17
+ editorId = null;
18
+ return;
19
+ }
20
+ let connection;
21
+ connection = connectToolBridge(currentRegistry, {
22
+ ...currentOptions,
23
+ onStatus: (next, why) => {
24
+ status = next;
25
+ detail = why;
26
+ editorId = connection?.editorId ?? null;
27
+ currentOptions.onStatus?.(next, why);
28
+ },
29
+ });
30
+ status = connection.status;
31
+ return () => connection?.close();
32
+ });
33
+ return {
34
+ get status() {
35
+ return status;
36
+ },
37
+ get detail() {
38
+ return detail;
39
+ },
40
+ get editorId() {
41
+ return editorId;
42
+ },
43
+ };
44
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pixerate/editor-svelte",
3
- "version": "0.48.0",
3
+ "version": "0.50.0",
4
4
  "description": "Svelte bindings and prompt/rich-text components for @pixerate/editor",
5
5
  "author": "Pixerate",
6
6
  "license": "MIT",
@@ -63,6 +63,11 @@
63
63
  "svelte": "./dist/vector/index.js",
64
64
  "default": "./dist/vector/index.js"
65
65
  },
66
+ "./animation-editor": {
67
+ "types": "./dist/animation-editor/index.d.ts",
68
+ "svelte": "./dist/animation-editor/index.js",
69
+ "default": "./dist/animation-editor/index.js"
70
+ },
66
71
  "./chart": {
67
72
  "types": "./dist/chart/index.d.ts",
68
73
  "svelte": "./dist/chart/index.js",
@@ -99,6 +104,9 @@
99
104
  "vector": [
100
105
  "./dist/vector/index.d.ts"
101
106
  ],
107
+ "animation-editor": [
108
+ "./dist/animation-editor/index.d.ts"
109
+ ],
102
110
  "chart": [
103
111
  "./dist/chart/index.d.ts"
104
112
  ]
@@ -115,7 +123,7 @@
115
123
  "@tiptap/extension-bubble-menu": "^2.11.5",
116
124
  "@tiptap/extension-placeholder": "^2.11.5",
117
125
  "@tiptap/starter-kit": "^2.11.5",
118
- "@pixerate/editor": "0.53.0"
126
+ "@pixerate/editor": "0.55.0"
119
127
  },
120
128
  "peerDependencies": {
121
129
  "@dagrejs/dagre": "^1.1.4",