@pixerate/editor-svelte 0.181.0 → 0.182.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,39 @@
1
+ import { type CanvasChange, type CanvasChangeFeed, type CanvasChangeFeedOptions, type CanvasEdge, type CanvasEdgeLike, type CanvasNode, type CanvasProposal, type CanvasProposals, type CanvasProposalsOptions } from '@pixerate/editor/canvas';
2
+ export interface CanvasProposalStateRune<TNode extends CanvasNode = CanvasNode, TEdge extends CanvasEdgeLike = CanvasEdge> {
3
+ /** The framework-free store (for `createCanvasProposalToolProvider` and agents). */
4
+ readonly store: CanvasProposals<TNode, TEdge>;
5
+ /** Pending proposals (reactive). */
6
+ readonly proposals: readonly CanvasProposal<TNode, TEdge>[];
7
+ /** The canvas with the proposals drawn in as ghosts (reactive): render these instead of your nodes and edges. */
8
+ readonly view: {
9
+ nodes: TNode[];
10
+ edges: TEdge[];
11
+ };
12
+ propose: CanvasProposals<TNode, TEdge>['propose'];
13
+ accept: CanvasProposals<TNode, TEdge>['accept'];
14
+ reject: CanvasProposals<TNode, TEdge>['reject'];
15
+ clear: CanvasProposals<TNode, TEdge>['clear'];
16
+ }
17
+ /**
18
+ * Agent-suggested canvas additions as a Svelte 5 rune: ghosts the user accepts (one undo step
19
+ * on `history`, made by the proposer) or rejects. Render `view` instead of your nodes and edges so
20
+ * the ghosts show. The same API as React's `useCanvasProposals`; pass getters and setters for the
21
+ * canvas state.
22
+ */
23
+ export declare function createCanvasProposalState<TNode extends CanvasNode = CanvasNode, TEdge extends CanvasEdgeLike = CanvasEdge>(options: CanvasProposalsOptions<TNode, TEdge>): CanvasProposalStateRune<TNode, TEdge>;
24
+ export interface CanvasChangeWatcherOptions<TNode extends CanvasNode = CanvasNode, TEdge extends CanvasEdgeLike = CanvasEdge> extends Omit<CanvasChangeFeedOptions<TNode, TEdge>, 'subscribe'> {
25
+ /** Called with each change. */
26
+ onChange?: (change: CanvasChange<TNode, TEdge>) => void;
27
+ }
28
+ export interface CanvasChangeWatcherRune<TNode extends CanvasNode = CanvasNode, TEdge extends CanvasEdgeLike = CanvasEdge> {
29
+ readonly feed: CanvasChangeFeed<TNode, TEdge>;
30
+ /** The latest change (reactive). */
31
+ readonly last: CanvasChange<TNode, TEdge> | null;
32
+ }
33
+ /**
34
+ * What changed on a canvas, as a Svelte 5 rune: nodes and edges added, removed or edited, the
35
+ * selection, and who made it, checked whenever `getNodes` / `getEdges` change. For agents that
36
+ * follow what the user does. Call during component initialisation; the feed stops on unmount.
37
+ * The same API as React's `useCanvasChangeFeed`.
38
+ */
39
+ export declare function createCanvasChangeWatcher<TNode extends CanvasNode = CanvasNode, TEdge extends CanvasEdgeLike = CanvasEdge>(options: CanvasChangeWatcherOptions<TNode, TEdge>): CanvasChangeWatcherRune<TNode, TEdge>;
@@ -0,0 +1,57 @@
1
+ import { createCanvasChangeFeed, createCanvasProposals } from '@pixerate/editor/canvas';
2
+ /**
3
+ * Agent-suggested canvas additions as a Svelte 5 rune: ghosts the user accepts (one undo step
4
+ * on `history`, made by the proposer) or rejects. Render `view` instead of your nodes and edges so
5
+ * the ghosts show. The same API as React's `useCanvasProposals`; pass getters and setters for the
6
+ * canvas state.
7
+ */
8
+ export function createCanvasProposalState(options) {
9
+ const store = createCanvasProposals(options);
10
+ let state = $state.raw(store.getState());
11
+ store.subscribe((next) => {
12
+ state = next;
13
+ });
14
+ const view = $derived.by(() => {
15
+ void state;
16
+ return store.withGhosts(options.getNodes(), options.getEdges());
17
+ });
18
+ return {
19
+ store,
20
+ get proposals() {
21
+ return state.proposals;
22
+ },
23
+ get view() {
24
+ return view;
25
+ },
26
+ propose: store.propose,
27
+ accept: store.accept,
28
+ reject: store.reject,
29
+ clear: store.clear
30
+ };
31
+ }
32
+ /**
33
+ * What changed on a canvas, as a Svelte 5 rune: nodes and edges added, removed or edited, the
34
+ * selection, and who made it, checked whenever `getNodes` / `getEdges` change. For agents that
35
+ * follow what the user does. Call during component initialisation; the feed stops on unmount.
36
+ * The same API as React's `useCanvasChangeFeed`.
37
+ */
38
+ export function createCanvasChangeWatcher(options) {
39
+ const feed = createCanvasChangeFeed(options);
40
+ let last = $state.raw(null);
41
+ $effect(() => {
42
+ options.getNodes();
43
+ options.getEdges();
44
+ const change = feed.check();
45
+ if (!change)
46
+ return;
47
+ last = change;
48
+ options.onChange?.(change);
49
+ });
50
+ $effect(() => () => feed.dispose());
51
+ return {
52
+ feed,
53
+ get last() {
54
+ return last;
55
+ }
56
+ };
57
+ }
@@ -56,3 +56,5 @@ export { createMermaidDiagram, createMermaidStream, type CreateMermaidDiagramOpt
56
56
  export { default as MermaidThumbnail } from './MermaidThumbnail.svelte';
57
57
  export { default as DiagramPresenceLayer } from './DiagramPresenceLayer.svelte';
58
58
  export { createDiagramDirector, type CreateDiagramDirectorOptions, type SvelteDiagramDirector } from './createDiagramDirector.svelte.js';
59
+ export { createCanvasProposalState, createCanvasChangeWatcher, type CanvasProposalStateRune, type CanvasChangeWatcherOptions, type CanvasChangeWatcherRune } from './createCanvasProposalState.svelte.js';
60
+ export { CANVAS_PROPOSAL_CLASS, createCanvasProposals, createCanvasChangeFeed, createCanvasProposalToolProvider, type CanvasProposal, type CanvasProposals, type CanvasProposalsOptions, type CanvasProposalsState, type CanvasProposalInput, type CanvasProposalNodeInput, type CanvasProposalEdgeInput, type CanvasProposalAcceptResult, type CanvasProposalToolProviderOptions, type CanvasChange, type CanvasChangeFeed, type CanvasChangeFeedOptions, type CanvasNodeChange, type CanvasEdgeChange } from '@pixerate/editor/canvas';
@@ -96,3 +96,6 @@ export { default as MermaidThumbnail } from './MermaidThumbnail.svelte';
96
96
  // Agent cursors acting out diagram edits
97
97
  export { default as DiagramPresenceLayer } from './DiagramPresenceLayer.svelte';
98
98
  export { createDiagramDirector } from './createDiagramDirector.svelte.js';
99
+ // Agent proposals (ghost nodes the user accepts or rejects), the canvas change feed and their agent tools
100
+ export { createCanvasProposalState, createCanvasChangeWatcher } from './createCanvasProposalState.svelte.js';
101
+ export { CANVAS_PROPOSAL_CLASS, createCanvasProposals, createCanvasChangeFeed, createCanvasProposalToolProvider } from '@pixerate/editor/canvas';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pixerate/editor-svelte",
3
- "version": "0.181.0",
3
+ "version": "0.182.1",
4
4
  "description": "Svelte bindings and prompt/rich-text components for @pixerate/editor",
5
5
  "author": "Pixerate",
6
6
  "license": "MIT",
@@ -165,7 +165,7 @@
165
165
  "**/*.css"
166
166
  ],
167
167
  "dependencies": {
168
- "@pixerate/editor": "0.244.0"
168
+ "@pixerate/editor": "0.246.0"
169
169
  },
170
170
  "peerDependencies": {
171
171
  "@dagrejs/dagre": "^1.1.4",