@xenolithengine/graph-react 0.7.0-beta.5 → 0.7.0-beta.7
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/dist/events-map.d.ts +1 -0
- package/dist/events-map.d.ts.map +1 -1
- package/dist/events-map.js +1 -0
- package/dist/events-map.js.map +1 -1
- package/dist/hooks.d.ts +22 -1
- package/dist/hooks.d.ts.map +1 -1
- package/dist/hooks.js +49 -5
- package/dist/hooks.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/proposal-queue.d.ts +10 -0
- package/dist/proposal-queue.d.ts.map +1 -0
- package/dist/proposal-queue.js +22 -0
- package/dist/proposal-queue.js.map +1 -0
- package/package.json +3 -3
package/dist/events-map.d.ts
CHANGED
|
@@ -18,6 +18,7 @@ export declare const EVENT_PROP: {
|
|
|
18
18
|
readonly 'widget:action': "onWidgetAction";
|
|
19
19
|
readonly 'graph:loaded': "onGraphLoad";
|
|
20
20
|
readonly 'history:changed': "onHistoryChange";
|
|
21
|
+
readonly 'graph:changed': "onGraphChanged";
|
|
21
22
|
readonly 'dive:changed': "onDiveChange";
|
|
22
23
|
readonly 'sidebar:opened': "onSidebarOpen";
|
|
23
24
|
readonly 'sidebar:closed': "onSidebarClose";
|
package/dist/events-map.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events-map.d.ts","sourceRoot":"","sources":["../src/events-map.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAA;AAEhE,+EAA+E;AAC/E,eAAO,MAAM,UAAU
|
|
1
|
+
{"version":3,"file":"events-map.d.ts","sourceRoot":"","sources":["../src/events-map.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAA;AAEhE,+EAA+E;AAC/E,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;CA0BgC,CAAA;AAEvD,iGAAiG;AACjG,MAAM,MAAM,cAAc,GAAG;KAC1B,CAAC,IAAI,MAAM,YAAY,IAAI,CAAC,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,KAAK,IAAI;CACzF,CAAA"}
|
package/dist/events-map.js
CHANGED
|
@@ -17,6 +17,7 @@ export const EVENT_PROP = {
|
|
|
17
17
|
'widget:action': 'onWidgetAction',
|
|
18
18
|
'graph:loaded': 'onGraphLoad',
|
|
19
19
|
'history:changed': 'onHistoryChange',
|
|
20
|
+
'graph:changed': 'onGraphChanged',
|
|
20
21
|
'dive:changed': 'onDiveChange',
|
|
21
22
|
'sidebar:opened': 'onSidebarOpen',
|
|
22
23
|
'sidebar:closed': 'onSidebarClose',
|
package/dist/events-map.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events-map.js","sourceRoot":"","sources":["../src/events-map.ts"],"names":[],"mappings":"AAEA,+EAA+E;AAC/E,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,YAAY,EAAE,aAAa;IAC3B,cAAc,EAAE,eAAe;IAC/B,eAAe,EAAE,gBAAgB;IACjC,YAAY,EAAE,aAAa;IAC3B,YAAY,EAAE,aAAa;IAC3B,eAAe,EAAE,gBAAgB;IACjC,WAAW,EAAE,YAAY;IACzB,gBAAgB,EAAE,iBAAiB;IACnC,mBAAmB,EAAE,oBAAoB;IACzC,iBAAiB,EAAE,kBAAkB;IACrC,oBAAoB,EAAE,qBAAqB;IAC3C,mBAAmB,EAAE,mBAAmB;IACxC,kBAAkB,EAAE,kBAAkB;IACtC,gBAAgB,EAAE,gBAAgB;IAClC,eAAe,EAAE,gBAAgB;IACjC,cAAc,EAAE,aAAa;IAC7B,iBAAiB,EAAE,iBAAiB;IACpC,cAAc,EAAE,cAAc;IAC9B,gBAAgB,EAAE,eAAe;IACjC,gBAAgB,EAAE,gBAAgB;IAClC,kBAAkB,EAAE,kBAAkB;IACtC,kBAAkB,EAAI,mBAAmB;IACzC,kBAAkB,EAAI,mBAAmB;IACzC,oBAAoB,EAAE,qBAAqB;CACU,CAAA"}
|
|
1
|
+
{"version":3,"file":"events-map.js","sourceRoot":"","sources":["../src/events-map.ts"],"names":[],"mappings":"AAEA,+EAA+E;AAC/E,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,YAAY,EAAE,aAAa;IAC3B,cAAc,EAAE,eAAe;IAC/B,eAAe,EAAE,gBAAgB;IACjC,YAAY,EAAE,aAAa;IAC3B,YAAY,EAAE,aAAa;IAC3B,eAAe,EAAE,gBAAgB;IACjC,WAAW,EAAE,YAAY;IACzB,gBAAgB,EAAE,iBAAiB;IACnC,mBAAmB,EAAE,oBAAoB;IACzC,iBAAiB,EAAE,kBAAkB;IACrC,oBAAoB,EAAE,qBAAqB;IAC3C,mBAAmB,EAAE,mBAAmB;IACxC,kBAAkB,EAAE,kBAAkB;IACtC,gBAAgB,EAAE,gBAAgB;IAClC,eAAe,EAAE,gBAAgB;IACjC,cAAc,EAAE,aAAa;IAC7B,iBAAiB,EAAE,iBAAiB;IACpC,eAAe,EAAE,gBAAgB;IACjC,cAAc,EAAE,cAAc;IAC9B,gBAAgB,EAAE,eAAe;IACjC,gBAAgB,EAAE,gBAAgB;IAClC,kBAAkB,EAAE,kBAAkB;IACtC,kBAAkB,EAAI,mBAAmB;IACzC,kBAAkB,EAAI,mBAAmB;IACzC,oBAAoB,EAAE,qBAAqB;CACU,CAAA"}
|
package/dist/hooks.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { EditorEvents, ViewportState, Node, Edge, NodeId, XenolithGraphV1 } from '@xenolithengine/graph-editor';
|
|
1
|
+
import type { EditorEvents, ViewportState, Node, Edge, NodeId, XenolithGraphV1, GraphChanges } from '@xenolithengine/graph-editor';
|
|
2
2
|
/** Live array of nodes; re-renders on add/remove/move, load and undo/redo. */
|
|
3
3
|
export declare const useNodes: () => readonly Node[];
|
|
4
4
|
/** Live array of edges; re-renders on connect/disconnect, node removal, load and undo/redo. */
|
|
@@ -34,4 +34,25 @@ export declare function useUndoRedo(): {
|
|
|
34
34
|
undo: () => boolean;
|
|
35
35
|
redo: () => boolean;
|
|
36
36
|
};
|
|
37
|
+
/**
|
|
38
|
+
* The controlled-state triple (E5 / ADR 0006): a local mirror of the graph folded from
|
|
39
|
+
* commit-time `graph:changed` arrays, plus the write side. This is the Redux/Zustand-legible
|
|
40
|
+
* pattern React migrants expect — with ONE deliberate difference from React Flow: positions
|
|
41
|
+
* arrive when a drag COMMITS, never per frame, so the component tree stays still while the
|
|
42
|
+
* renderer owns the drag.
|
|
43
|
+
*
|
|
44
|
+
* - `nodes` / `edges` — plain records, new references only when a committed change landed.
|
|
45
|
+
* - `applyChanges(changes)` — forward an array (yours, or an echo) to `editor.applyChanges`;
|
|
46
|
+
* idempotent for echoes.
|
|
47
|
+
* - `setNodes(next)` — one-shot optimistic diff: pass the next nodes array (or an updater);
|
|
48
|
+
* adds/removes/position/state deltas are applied to the editor as ONE undo step, and the
|
|
49
|
+
* resulting `graph:changed` echo updates this mirror. Diffing rule is shallow: position by
|
|
50
|
+
* coordinates, state by reference.
|
|
51
|
+
*/
|
|
52
|
+
export declare function useNodesState(): {
|
|
53
|
+
nodes: readonly Node[];
|
|
54
|
+
edges: readonly Edge[];
|
|
55
|
+
applyChanges: (changes: GraphChanges) => void;
|
|
56
|
+
setNodes: (next: readonly Node[] | ((prev: readonly Node[]) => readonly Node[])) => void;
|
|
57
|
+
};
|
|
37
58
|
//# sourceMappingURL=hooks.d.ts.map
|
package/dist/hooks.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../src/hooks.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAkB,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAA;
|
|
1
|
+
{"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../src/hooks.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAkB,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,eAAe,EAAE,YAAY,EAAe,MAAM,8BAA8B,CAAA;AAsE/J,8EAA8E;AAC9E,eAAO,MAAM,QAAQ,EAAE,MAAM,SAAS,IAAI,EAIzC,CAAA;AAED,+FAA+F;AAC/F,eAAO,MAAM,QAAQ,EAAE,MAAM,SAAS,IAAI,EAIzC,CAAA;AAED,iEAAiE;AACjE,eAAO,MAAM,YAAY,EAAE,MAAM,SAAS,MAAM,EAI/C,CAAA;AAED,gEAAgE;AAChE,eAAO,MAAM,WAAW,EAAE,MAAM,aAI/B,CAAA;AAED,iGAAiG;AACjG,eAAO,MAAM,YAAY,EAAE,MAAM,eAAe,GAAG,IAIlD,CAAA;AAGD;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,CAAC,CAAC,SAAS,MAAM,YAAY,EACzD,KAAK,EAAE,CAAC,EACR,OAAO,EAAE,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,KAAK,IAAI,GAC1C,IAAI,CAQN;AAaD;;;;GAIG;AACH,wBAAgB,WAAW,IAAI;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,OAAO,CAAA;CAAE,CAS9G;AAGD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,aAAa,IAAI;IAC/B,KAAK,EAAE,SAAS,IAAI,EAAE,CAAA;IACtB,KAAK,EAAE,SAAS,IAAI,EAAE,CAAA;IACtB,YAAY,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,IAAI,CAAA;IAC7C,QAAQ,EAAE,CAAC,IAAI,EAAE,SAAS,IAAI,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,SAAS,IAAI,EAAE,KAAK,SAAS,IAAI,EAAE,CAAC,KAAK,IAAI,CAAA;CACzF,CA0BA"}
|
package/dist/hooks.js
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
import { useCallback, useRef, useSyncExternalStore } from 'react';
|
|
2
|
+
import { useCallback, useEffect, useRef, useState, useSyncExternalStore } from 'react';
|
|
3
|
+
import { reduceGraphChanges, snapshotGraph } from '@xenolithengine/graph-editor';
|
|
4
|
+
import { diffNodesToChanges } from '@xenolithengine/graph-adapter-core';
|
|
3
5
|
import { useXenolithEditor } from './context.js';
|
|
4
6
|
// Canonical pattern: subscribe to an external (non-React) mutable store via `useSyncExternalStore`.
|
|
5
7
|
// Replaces the prior `useState + useEffect + subscribe` shape, which the React docs flag as the
|
|
@@ -60,16 +62,15 @@ const EMPTY_EDGES = Object.freeze([]);
|
|
|
60
62
|
const EMPTY_SELECTION = Object.freeze([]);
|
|
61
63
|
const DEFAULT_VIEWPORT = Object.freeze({ x: 0, y: 0, zoom: 1 });
|
|
62
64
|
/** Live array of nodes; re-renders on add/remove/move, load and undo/redo. */
|
|
63
|
-
export const useNodes = makeEditorStoreHook(NODE_EVENTS, (e) => Object.freeze(Array.from(e.
|
|
65
|
+
export const useNodes = makeEditorStoreHook(NODE_EVENTS, (e) => Object.freeze(Array.from(e.graphNodes())), EMPTY_NODES);
|
|
64
66
|
/** Live array of edges; re-renders on connect/disconnect, node removal, load and undo/redo. */
|
|
65
|
-
export const useEdges = makeEditorStoreHook(EDGE_EVENTS, (e) => Object.freeze(Array.from(e.
|
|
67
|
+
export const useEdges = makeEditorStoreHook(EDGE_EVENTS, (e) => Object.freeze(Array.from(e.graphEdges())), EMPTY_EDGES);
|
|
66
68
|
/** Live selection (node ids); re-renders on selection change. */
|
|
67
69
|
export const useSelection = makeEditorStoreHook(['selection:changed'], (e) => Object.freeze([...e.selection.ids()]), EMPTY_SELECTION);
|
|
68
70
|
/** Live viewport (`x`, `y`, `zoom`); re-renders on pan/zoom. */
|
|
69
71
|
export const useViewport = makeEditorStoreHook(['viewport:changed'], (e) => e.viewport, DEFAULT_VIEWPORT);
|
|
70
72
|
/** Live serialized graph (xenolith.v1); recomputes on any graph mutation, load and undo/redo. */
|
|
71
73
|
export const useGraphJSON = makeEditorStoreHook(GRAPH_EVENTS, (e) => e.toJSON(), null);
|
|
72
|
-
import { useEffect } from 'react';
|
|
73
74
|
/**
|
|
74
75
|
* Subscribe to a single editor event from a React component. Handler is auto-rebound when the
|
|
75
76
|
* editor changes; unsubscribed on unmount. Use this for events that don't have a dedicated hook —
|
|
@@ -94,6 +95,10 @@ export function useEditorEvent(event, handler) {
|
|
|
94
95
|
}, [editor, event]);
|
|
95
96
|
}
|
|
96
97
|
const UNDO_REDO_EVENTS = ['history:changed'];
|
|
98
|
+
// Module-level like the other store hooks — a hook created inside `useUndoRedo`'s body would be
|
|
99
|
+
// a fresh closure per render: invisible to the rules-of-hooks lint and unable to share the
|
|
100
|
+
// identity-stable snapshot cache the other hooks rely on.
|
|
101
|
+
const useUndoRedoState = makeEditorStoreHook(UNDO_REDO_EVENTS, (e) => ({ canUndo: e.history.canUndo, canRedo: e.history.canRedo }), { canUndo: false, canRedo: false });
|
|
97
102
|
/**
|
|
98
103
|
* `{ canUndo, canRedo, undo, redo }` — live undo/redo state + stable callable handles. Use for
|
|
99
104
|
* toolbars: `<button disabled={!canUndo} onClick={undo}>Undo</button>`. Re-renders whenever the
|
|
@@ -101,7 +106,7 @@ const UNDO_REDO_EVENTS = ['history:changed'];
|
|
|
101
106
|
*/
|
|
102
107
|
export function useUndoRedo() {
|
|
103
108
|
const editor = useXenolithEditor();
|
|
104
|
-
const state =
|
|
109
|
+
const state = useUndoRedoState();
|
|
105
110
|
return {
|
|
106
111
|
canUndo: state.canUndo,
|
|
107
112
|
canRedo: state.canRedo,
|
|
@@ -109,4 +114,43 @@ export function useUndoRedo() {
|
|
|
109
114
|
redo: useCallback(() => editor?.history.redo() ?? false, [editor]),
|
|
110
115
|
};
|
|
111
116
|
}
|
|
117
|
+
/**
|
|
118
|
+
* The controlled-state triple (E5 / ADR 0006): a local mirror of the graph folded from
|
|
119
|
+
* commit-time `graph:changed` arrays, plus the write side. This is the Redux/Zustand-legible
|
|
120
|
+
* pattern React migrants expect — with ONE deliberate difference from React Flow: positions
|
|
121
|
+
* arrive when a drag COMMITS, never per frame, so the component tree stays still while the
|
|
122
|
+
* renderer owns the drag.
|
|
123
|
+
*
|
|
124
|
+
* - `nodes` / `edges` — plain records, new references only when a committed change landed.
|
|
125
|
+
* - `applyChanges(changes)` — forward an array (yours, or an echo) to `editor.applyChanges`;
|
|
126
|
+
* idempotent for echoes.
|
|
127
|
+
* - `setNodes(next)` — one-shot optimistic diff: pass the next nodes array (or an updater);
|
|
128
|
+
* adds/removes/position/state deltas are applied to the editor as ONE undo step, and the
|
|
129
|
+
* resulting `graph:changed` echo updates this mirror. Diffing rule is shallow: position by
|
|
130
|
+
* coordinates, state by reference.
|
|
131
|
+
*/
|
|
132
|
+
export function useNodesState() {
|
|
133
|
+
const editor = useXenolithEditor();
|
|
134
|
+
const [mirror, setMirror] = useState({ nodes: [], edges: [] });
|
|
135
|
+
useEffect(() => {
|
|
136
|
+
if (!editor)
|
|
137
|
+
return;
|
|
138
|
+
setMirror(snapshotGraph(editor.graphNodes(), editor.graphEdges()));
|
|
139
|
+
const off = editor.on('graph:changed', ({ changes }) => {
|
|
140
|
+
setMirror((prev) => reduceGraphChanges(prev, changes));
|
|
141
|
+
});
|
|
142
|
+
return off;
|
|
143
|
+
}, [editor]);
|
|
144
|
+
const applyChanges = useCallback((changes) => { editor?.applyChanges(changes); }, [editor]);
|
|
145
|
+
const setNodes = useCallback((next) => {
|
|
146
|
+
if (!editor)
|
|
147
|
+
return;
|
|
148
|
+
const live = snapshotGraph(editor.graphNodes(), editor.graphEdges());
|
|
149
|
+
const nextNodes = typeof next === 'function' ? next(live.nodes) : next;
|
|
150
|
+
const changes = diffNodesToChanges(live, nextNodes);
|
|
151
|
+
if (changes.nodes.length > 0)
|
|
152
|
+
editor.applyChanges(changes);
|
|
153
|
+
}, [editor]);
|
|
154
|
+
return { nodes: mirror.nodes, edges: mirror.edges, applyChanges, setNodes };
|
|
155
|
+
}
|
|
112
156
|
//# sourceMappingURL=hooks.js.map
|
package/dist/hooks.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.js","sourceRoot":"","sources":["../src/hooks.ts"],"names":[],"mappings":"AAAA,YAAY,CAAA;AACZ,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,oBAAoB,EAAE,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"hooks.js","sourceRoot":"","sources":["../src/hooks.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -6,8 +6,9 @@ export type { EventCallbacks } from './events-map.js';
|
|
|
6
6
|
export { EVENT_PROP } from './events-map.js';
|
|
7
7
|
export { XenolithContext, useXenolithEditor, useEditor } from './context.js';
|
|
8
8
|
export { XenolithPanel, XenolithButton, XenolithControls, XenolithMiniMap, type PanelPosition, type XenolithPanelProps, type XenolithButtonProps, type XenolithControlsProps, type XenolithMiniMapProps, } from './components.js';
|
|
9
|
-
export { useNodes, useEdges, useSelection, useViewport, useGraphJSON, useEditorEvent, useUndoRedo } from './hooks.js';
|
|
9
|
+
export { useNodes, useEdges, useSelection, useViewport, useGraphJSON, useEditorEvent, useUndoRedo, useNodesState } from './hooks.js';
|
|
10
10
|
export { reactWidget, type WidgetProps } from './react-widget.js';
|
|
11
|
+
export { XenolithProposalQueue } from './proposal-queue.js';
|
|
11
12
|
export interface XenolithGraphProps extends XenolithProps, EventCallbacks {
|
|
12
13
|
className?: string;
|
|
13
14
|
style?: CSSProperties;
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAIA,OAAO,EAA+B,KAAK,aAAa,EAAE,KAAK,YAAY,EAAE,KAAK,SAAS,EAAE,KAAK,GAAG,EAAE,MAAM,OAAO,CAAA;AACpH,OAAO,EAA2C,KAAK,aAAa,EAAE,MAAM,oCAAoC,CAAA;AAChH,OAAO,KAAK,EAAgB,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAChF,OAAO,EAAc,KAAK,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAGjE,YAAY,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAC5E,OAAO,EACL,aAAa,EAAE,cAAc,EAAE,gBAAgB,EAAE,eAAe,EAChE,KAAK,aAAa,EAAE,KAAK,kBAAkB,EAAE,KAAK,mBAAmB,EACrE,KAAK,qBAAqB,EAAE,KAAK,oBAAoB,GACtD,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAIA,OAAO,EAA+B,KAAK,aAAa,EAAE,KAAK,YAAY,EAAE,KAAK,SAAS,EAAE,KAAK,GAAG,EAAE,MAAM,OAAO,CAAA;AACpH,OAAO,EAA2C,KAAK,aAAa,EAAE,MAAM,oCAAoC,CAAA;AAChH,OAAO,KAAK,EAAgB,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAChF,OAAO,EAAc,KAAK,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAGjE,YAAY,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAC5E,OAAO,EACL,aAAa,EAAE,cAAc,EAAE,gBAAgB,EAAE,eAAe,EAChE,KAAK,aAAa,EAAE,KAAK,kBAAkB,EAAE,KAAK,mBAAmB,EACrE,KAAK,qBAAqB,EAAE,KAAK,oBAAoB,GACtD,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AACpI,OAAO,EAAE,WAAW,EAAE,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAA;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAE3D,MAAM,WAAW,kBAAmB,SAAQ,aAAa,EAAE,cAAc;IACvE,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,aAAa,CAAA;IACrB,mDAAmD;IACnD,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,cAAc,KAAK,IAAI,CAAA;IAC1C,uEAAuE;IACvE,YAAY,CAAC,EAAE,GAAG,CAAC,cAAc,CAAC,CAAA;IAClC,uGAAuG;IACvG,QAAQ,CAAC,EAAE,SAAS,CAAA;CACrB;AAgBD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,YAAY,CAqFrE;AAED,gGAAgG;AAChG,wBAAgB,WAAW,CACzB,OAAO,EAAE,GAAG,CAAC,cAAc,CAAC,EAC5B,KAAK,GAAE,aAAkB,GACxB;IAAE,SAAS,EAAE;QAAE,OAAO,EAAE,cAAc,GAAG,IAAI,CAAA;KAAE,CAAA;CAAE,CAqBnD"}
|
package/dist/index.js
CHANGED
|
@@ -10,8 +10,9 @@ import { XenolithContext } from './context.js';
|
|
|
10
10
|
export { EVENT_PROP } from './events-map.js';
|
|
11
11
|
export { XenolithContext, useXenolithEditor, useEditor } from './context.js';
|
|
12
12
|
export { XenolithPanel, XenolithButton, XenolithControls, XenolithMiniMap, } from './components.js';
|
|
13
|
-
export { useNodes, useEdges, useSelection, useViewport, useGraphJSON, useEditorEvent, useUndoRedo } from './hooks.js';
|
|
13
|
+
export { useNodes, useEdges, useSelection, useViewport, useGraphJSON, useEditorEvent, useUndoRedo, useNodesState } from './hooks.js';
|
|
14
14
|
export { reactWidget } from './react-widget.js';
|
|
15
|
+
export { XenolithProposalQueue } from './proposal-queue.js';
|
|
15
16
|
const EDITOR_KEYS = ['theme', 'graph', 'zoomBounds', 'minimap', 'disableGrid', 'snap', 'resizeToWindow', 'fitOnLoad', 'isValidConnection'];
|
|
16
17
|
// Module-level promise chain that serializes all editor mount/unmount lifecycle operations.
|
|
17
18
|
// React 19 StrictMode in dev runs every useEffect mount → cleanup → mount. With async PIXI init
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AACZ,uGAAuG;AACvG,kGAAkG;AAClG,wCAAwC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAmE,MAAM,OAAO,CAAA;AACpH,OAAO,EAAE,mBAAmB,EAA0C,MAAM,oCAAoC,CAAA;AAEhH,OAAO,EAAE,UAAU,EAAuB,MAAM,iBAAiB,CAAA;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAG9C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAC5E,OAAO,EACL,aAAa,EAAE,cAAc,EAAE,gBAAgB,EAAE,eAAe,GAGjE,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Declarative wrapper over the core agent-proposal review panel (F1 / ADR 0007). Mounting opens
|
|
3
|
+
* `editor.chrome.showProposals()` — the panel + badge are rendered by the CORE in `overlayRoot`
|
|
4
|
+
* (shared by every framework, themed via `--xeno-*`), so this component renders no DOM of its
|
|
5
|
+
* own. No propose-mode MCP session ever connected → `showProposals()` is a no-op and mounting
|
|
6
|
+
* stays visually silent. Hosts wanting a fully custom review UI use `editor.mcpProposals`
|
|
7
|
+
* directly and never mount this.
|
|
8
|
+
*/
|
|
9
|
+
export declare function XenolithProposalQueue(): null;
|
|
10
|
+
//# sourceMappingURL=proposal-queue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proposal-queue.d.ts","sourceRoot":"","sources":["../src/proposal-queue.tsx"],"names":[],"mappings":"AAIA;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,IAAI,IAAI,CAQ5C"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { useEffect } from 'react';
|
|
3
|
+
import { useXenolithEditor } from './context.js';
|
|
4
|
+
/**
|
|
5
|
+
* Declarative wrapper over the core agent-proposal review panel (F1 / ADR 0007). Mounting opens
|
|
6
|
+
* `editor.chrome.showProposals()` — the panel + badge are rendered by the CORE in `overlayRoot`
|
|
7
|
+
* (shared by every framework, themed via `--xeno-*`), so this component renders no DOM of its
|
|
8
|
+
* own. No propose-mode MCP session ever connected → `showProposals()` is a no-op and mounting
|
|
9
|
+
* stays visually silent. Hosts wanting a fully custom review UI use `editor.mcpProposals`
|
|
10
|
+
* directly and never mount this.
|
|
11
|
+
*/
|
|
12
|
+
export function XenolithProposalQueue() {
|
|
13
|
+
const editor = useXenolithEditor();
|
|
14
|
+
useEffect(() => {
|
|
15
|
+
if (!editor)
|
|
16
|
+
return;
|
|
17
|
+
editor.chrome.showProposals();
|
|
18
|
+
return () => { editor.chrome.hideProposals(); };
|
|
19
|
+
}, [editor]);
|
|
20
|
+
return null;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=proposal-queue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proposal-queue.js","sourceRoot":"","sources":["../src/proposal-queue.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;AACZ,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AACjC,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;AAEhD;;;;;;;GAOG;AACH,MAAM,UAAU,qBAAqB;IACnC,MAAM,MAAM,GAAG,iBAAiB,EAAE,CAAA;IAClC,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,MAAM;YAAE,OAAM;QACnB,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,CAAA;QAC7B,OAAO,GAAG,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,CAAA,CAAC,CAAC,CAAA;IAChD,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAA;IACZ,OAAO,IAAI,CAAA;AACb,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xenolithengine/graph-react",
|
|
3
|
-
"version": "0.7.0-beta.
|
|
3
|
+
"version": "0.7.0-beta.7",
|
|
4
4
|
"description": "React adapter for XenolithGraph — <XenolithGraph> component + useXenolith hook.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -19,8 +19,8 @@
|
|
|
19
19
|
],
|
|
20
20
|
"sideEffects": false,
|
|
21
21
|
"dependencies": {
|
|
22
|
-
"@xenolithengine/graph-adapter-core": "0.7.0-beta.
|
|
23
|
-
"@xenolithengine/graph-editor": "0.7.0-beta.
|
|
22
|
+
"@xenolithengine/graph-adapter-core": "0.7.0-beta.7",
|
|
23
|
+
"@xenolithengine/graph-editor": "0.7.0-beta.7"
|
|
24
24
|
},
|
|
25
25
|
"peerDependencies": {
|
|
26
26
|
"pixi.js": "^8.6.0",
|