@beehexa/hexasync-template-engine 2608.21.4 → 2610.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (69) hide show
  1. package/dist/capabilityPolicy.d.ts +29 -0
  2. package/dist/capabilityPolicy.d.ts.map +1 -0
  3. package/dist/capabilityPolicy.js +46 -0
  4. package/dist/capabilityPolicy.js.map +1 -0
  5. package/dist/compositeFlow.d.ts +23 -0
  6. package/dist/compositeFlow.d.ts.map +1 -0
  7. package/dist/compositeFlow.js +350 -0
  8. package/dist/compositeFlow.js.map +1 -0
  9. package/dist/connectionEditing.d.ts +124 -0
  10. package/dist/connectionEditing.d.ts.map +1 -0
  11. package/dist/connectionEditing.js +122 -0
  12. package/dist/connectionEditing.js.map +1 -0
  13. package/dist/editDiagnostics.d.ts +80 -0
  14. package/dist/editDiagnostics.d.ts.map +1 -0
  15. package/dist/editDiagnostics.js +130 -0
  16. package/dist/editDiagnostics.js.map +1 -0
  17. package/dist/extensionRegistry.d.ts +31 -0
  18. package/dist/extensionRegistry.d.ts.map +1 -0
  19. package/dist/extensionRegistry.js +48 -0
  20. package/dist/extensionRegistry.js.map +1 -0
  21. package/dist/index.d.ts +17 -0
  22. package/dist/index.d.ts.map +1 -1
  23. package/dist/index.js +17 -0
  24. package/dist/index.js.map +1 -1
  25. package/dist/layout.d.ts +414 -0
  26. package/dist/layout.d.ts.map +1 -0
  27. package/dist/layout.js +460 -0
  28. package/dist/layout.js.map +1 -0
  29. package/dist/nodeExtensions.d.ts +17 -0
  30. package/dist/nodeExtensions.d.ts.map +1 -0
  31. package/dist/nodeExtensions.js +39 -0
  32. package/dist/nodeExtensions.js.map +1 -0
  33. package/dist/nodeResolution.d.ts +29 -0
  34. package/dist/nodeResolution.d.ts.map +1 -0
  35. package/dist/nodeResolution.js +77 -0
  36. package/dist/nodeResolution.js.map +1 -0
  37. package/dist/presentationOverlay.d.ts +29 -0
  38. package/dist/presentationOverlay.d.ts.map +1 -0
  39. package/dist/presentationOverlay.js +128 -0
  40. package/dist/presentationOverlay.js.map +1 -0
  41. package/dist/presentationReconciliation.d.ts +59 -0
  42. package/dist/presentationReconciliation.d.ts.map +1 -0
  43. package/dist/presentationReconciliation.js +54 -0
  44. package/dist/presentationReconciliation.js.map +1 -0
  45. package/dist/presentationStorage.d.ts +168 -0
  46. package/dist/presentationStorage.d.ts.map +1 -0
  47. package/dist/presentationStorage.js +405 -0
  48. package/dist/presentationStorage.js.map +1 -0
  49. package/dist/semanticTransactions.d.ts +107 -0
  50. package/dist/semanticTransactions.d.ts.map +1 -0
  51. package/dist/semanticTransactions.js +86 -0
  52. package/dist/semanticTransactions.js.map +1 -0
  53. package/dist/stepFormEditing.d.ts +47 -0
  54. package/dist/stepFormEditing.d.ts.map +1 -0
  55. package/dist/stepFormEditing.js +259 -0
  56. package/dist/stepFormEditing.js.map +1 -0
  57. package/dist/themeStyles.d.ts +26 -0
  58. package/dist/themeStyles.d.ts.map +1 -0
  59. package/dist/themeStyles.js +71 -0
  60. package/dist/themeStyles.js.map +1 -0
  61. package/dist/visualResources.d.ts +30 -0
  62. package/dist/visualResources.d.ts.map +1 -0
  63. package/dist/visualResources.js +89 -0
  64. package/dist/visualResources.js.map +1 -0
  65. package/dist/vnextFlow.d.ts +57 -0
  66. package/dist/vnextFlow.d.ts.map +1 -0
  67. package/dist/vnextFlow.js +333 -0
  68. package/dist/vnextFlow.js.map +1 -0
  69. package/package.json +16 -12
package/dist/layout.js ADDED
@@ -0,0 +1,460 @@
1
+ const anchorAt = (offset, width, height) => { if (offset <= width)
2
+ return { x: offset, y: 0, side: 'top' }; if (offset <= width + height)
3
+ return { x: width, y: offset - width, side: 'right' }; if (offset <= width * 2 + height)
4
+ return { x: width - (offset - width - height), y: height, side: 'bottom' }; return { x: 0, y: height - (offset - width * 2 - height), side: 'left' }; };
5
+ export function allocatePerimeterPorts(input) {
6
+ if (!Number.isFinite(input.minimumSpacing) || input.minimumSpacing <= 0)
7
+ throw new RangeError('minimumSpacing must be positive.');
8
+ if (new Set(input.routes.map(route => route.id)).size !== input.routes.length)
9
+ throw new Error('Route IDs must be unique.');
10
+ const geometry = input.shape.geometry;
11
+ const width = Number(geometry?.width);
12
+ const height = Number(geometry?.height);
13
+ if (!Number.isFinite(width) || !Number.isFinite(height) || width <= 0 || height <= 0)
14
+ throw new RangeError('Shape geometry must have positive dimensions.');
15
+ const perimeter = 2 * (width + height);
16
+ const count = input.routes.length;
17
+ if (count === 0)
18
+ return Object.freeze([]);
19
+ if (count * input.minimumSpacing > perimeter)
20
+ throw new RangeError('Requested port spacing exceeds the available perimeter.');
21
+ if (input.minimumHitTarget !== undefined && (!Number.isFinite(input.minimumHitTarget) || input.minimumHitTarget <= 0))
22
+ throw new RangeError('minimumHitTarget must be positive.');
23
+ const spacing = Math.max(input.minimumSpacing, perimeter / count);
24
+ const hitSize = Math.max(16, input.minimumHitTarget ?? 16);
25
+ return Object.freeze(input.routes.map((route, index) => { const offset = (index * spacing + spacing / 2) % perimeter; const rawStart = offset - input.minimumSpacing / 2; const rawEnd = offset + input.minimumSpacing / 2; const anchor = anchorAt(offset, width, height); const labelWidth = Math.max(40, (route.label?.length ?? route.id.length) * 7); const labelHeight = 20; return Object.freeze({ id: `port|${route.id}`, routeId: route.id, direction: route.direction, ...(route.role === undefined ? {} : { role: route.role }), offset, interval: Object.freeze({ start: (rawStart + perimeter) % perimeter, end: rawEnd % perimeter, wraps: rawStart < 0 || rawEnd >= perimeter }), anchor: Object.freeze(anchor), hitTarget: Object.freeze({ x: anchor.x - hitSize / 2, y: anchor.y - hitSize / 2, width: hitSize, height: hitSize, accessibleName: route.label ?? route.id }), labelBounds: Object.freeze({ x: width + 32, y: index * (labelHeight + 4), width: labelWidth, height: labelHeight }) }); }));
26
+ }
27
+ export function routeEdges(input) {
28
+ if (![input.clearance, input.laneSpacing, input.routingBudget].every(Number.isFinite) || input.clearance < 0 || input.laneSpacing <= 0 || input.routingBudget < 0)
29
+ throw new RangeError('Routing limits must be finite and non-negative; lane spacing must be positive.');
30
+ if (input.edges.some(edge => !edge.id.trim()))
31
+ throw new Error('Edge IDs must not be blank.');
32
+ if (new Set(input.edges.map(edge => edge.id)).size !== input.edges.length)
33
+ throw new Error('Edge IDs must be unique.');
34
+ const fallback = input.routingBudget === 0;
35
+ const blockers = input.obstacles.filter(obstacle => obstacle.width > 0 && obstacle.height > 0);
36
+ const top = blockers.length === 0 ? 0 : Math.min(...blockers.map(obstacle => obstacle.y));
37
+ const routed = input.edges.map((edge, laneIndex) => {
38
+ const endpoints = [edge.source.x, edge.source.y, edge.target.x, edge.target.y];
39
+ if (!endpoints.every(Number.isFinite))
40
+ throw new RangeError(`Edge '${edge.id}' has invalid endpoints.`);
41
+ if (fallback || blockers.length === 0)
42
+ return Object.freeze({ edgeId: edge.id, laneIndex, points: Object.freeze([Object.freeze({ ...edge.source }), Object.freeze({ x: edge.target.x, y: edge.source.y }), Object.freeze({ ...edge.target })]) });
43
+ const corridorY = top - input.clearance - laneIndex * input.laneSpacing;
44
+ return Object.freeze({ edgeId: edge.id, laneIndex, points: Object.freeze([Object.freeze({ ...edge.source }), Object.freeze({ x: edge.source.x, y: corridorY }), Object.freeze({ x: edge.target.x, y: corridorY }), Object.freeze({ ...edge.target })]) });
45
+ });
46
+ return { mode: fallback ? 'fallback' : 'routed', edges: Object.freeze(routed), diagnostics: fallback ? [Object.freeze({ code: 'routing-budget-expired', severity: 'warning', message: 'Routing budget expired; deterministic Manhattan fallback used.' })] : [] };
47
+ }
48
+ const crossingPoint = (x, y) => Object.freeze({ x, y });
49
+ const strictlyBetween = (value, first, second) => value > Math.min(first, second) && value < Math.max(first, second);
50
+ const treatmentInstruction = (segment, at, config, edgeId) => {
51
+ const availableHalfSize = segment.axis === 'horizontal'
52
+ ? Math.min(Math.abs(at.x - segment.start.x), Math.abs(segment.end.x - at.x))
53
+ : Math.min(Math.abs(at.y - segment.start.y), Math.abs(segment.end.y - at.y));
54
+ const halfSize = Math.min(config.size / 2, availableHalfSize);
55
+ if (!Number.isFinite(halfSize) || halfSize <= 0)
56
+ throw new RangeError(`Crossing treatment for edge ${edgeId} has no finite segment extent.`);
57
+ const from = segment.axis === 'horizontal' ? crossingPoint(at.x - halfSize, at.y) : crossingPoint(at.x, at.y - halfSize);
58
+ const to = segment.axis === 'horizontal' ? crossingPoint(at.x + halfSize, at.y) : crossingPoint(at.x, at.y + halfSize);
59
+ return Object.freeze({ mode: config.mode, size: halfSize * 2, edgeId, segmentIndex: segment.segmentIndex, axis: segment.axis, from, to });
60
+ };
61
+ /** Returns renderer-neutral treatment instructions for proper crossings between orthogonal edge segments. */
62
+ export function analyzeEdgeCrossings(input) {
63
+ if (!['bridge', 'gap', 'halo', 'elevation'].includes(input.treatment.mode))
64
+ throw new Error(`Unsupported crossing treatment '${String(input.treatment.mode)}'.`);
65
+ if (!Number.isFinite(input.treatment.size) || input.treatment.size <= 0)
66
+ throw new RangeError('Crossing treatment size must be positive.');
67
+ if (input.edges.some(edge => !edge.id.trim()))
68
+ throw new Error("Edge IDs must not be blank.");
69
+ if (new Set(input.edges.map(edge => edge.id)).size !== input.edges.length)
70
+ throw new Error('Edge IDs must be unique.');
71
+ const segments = input.edges.map((edge) => {
72
+ if (!edge.sourcePortId.trim() || !edge.targetPortId.trim())
73
+ throw new Error(`Edge '${edge.id}' requires both endpoint port IDs.`);
74
+ if (edge.points.length < 2 || !edge.points.every(value => Number.isFinite(value.x) && Number.isFinite(value.y)))
75
+ throw new Error(`Edge '${edge.id}' requires at least two finite points.`);
76
+ return Object.freeze(edge.points.slice(1).map((end, segmentIndex) => {
77
+ const start = edge.points[segmentIndex];
78
+ if (start.x === end.x && start.y === end.y)
79
+ throw new Error(`Edge '${edge.id}' contains a zero-length segment.`);
80
+ if (start.x !== end.x && start.y !== end.y)
81
+ throw new Error(`Edge '${edge.id}' must contain only orthogonal segments.`);
82
+ return Object.freeze({ segmentIndex, start, end, axis: start.y === end.y ? 'horizontal' : 'vertical' });
83
+ }));
84
+ });
85
+ const crossings = [];
86
+ const crossingKeys = new Set();
87
+ for (let leftIndex = 0; leftIndex < input.edges.length; leftIndex += 1) {
88
+ for (let rightIndex = leftIndex + 1; rightIndex < input.edges.length; rightIndex += 1) {
89
+ for (const left of segments[leftIndex])
90
+ for (const right of segments[rightIndex]) {
91
+ if (left.axis === right.axis)
92
+ continue;
93
+ const horizontal = left.axis === 'horizontal' ? left : right;
94
+ const vertical = left.axis === 'vertical' ? left : right;
95
+ const x = vertical.start.x;
96
+ const y = horizontal.start.y;
97
+ if (!strictlyBetween(x, horizontal.start.x, horizontal.end.x) || !strictlyBetween(y, vertical.start.y, vertical.end.y))
98
+ continue;
99
+ const key = `${leftIndex}|${rightIndex}|${x}|${y}`;
100
+ if (crossingKeys.has(key))
101
+ continue;
102
+ crossingKeys.add(key);
103
+ const at = crossingPoint(x, y);
104
+ crossings.push(Object.freeze({ edgeIds: Object.freeze([input.edges[leftIndex].id, input.edges[rightIndex].id]), point: at, treatment: treatmentInstruction(right, at, input.treatment, input.edges[rightIndex].id) }));
105
+ }
106
+ }
107
+ }
108
+ const crossingEdgeIds = new Set(crossings.flatMap(crossing => crossing.edgeIds));
109
+ for (const edge of input.edges) {
110
+ if (crossingEdgeIds.has(edge.id) && !edge.accessibleName?.trim() && !edge.label?.trim() && !edge.pattern?.trim())
111
+ throw new Error(`Edge ${edge.id} requires an accessible name, label, or pattern; color-only identity is not supported.`);
112
+ }
113
+ const edges = Object.freeze(input.edges.map(edge => Object.freeze({ ...edge, edgeId: edge.id, points: Object.freeze(edge.points.map(value => crossingPoint(value.x, value.y))) })));
114
+ let trace;
115
+ if (input.selectedEdgeId !== undefined) {
116
+ const selected = input.edges.find(edge => edge.id === input.selectedEdgeId);
117
+ if (!selected)
118
+ throw new Error(`Selected edge '${input.selectedEdgeId}' is not present.`);
119
+ trace = Object.freeze({ selectedEdgeId: selected.id, elevatedEdgeId: selected.id, mutedEdgeIds: Object.freeze(input.edges.filter(edge => edge.id !== selected.id).map(edge => edge.id)), highlightedPortIds: Object.freeze([selected.sourcePortId, selected.targetPortId]) });
120
+ }
121
+ return Object.freeze({ crossings: Object.freeze(crossings), edges, ...(trace === undefined ? {} : { trace }) });
122
+ }
123
+ /** Cycles a stable caller-supplied overlap order and reports one-based position for announcements. */
124
+ export function cycleEdgeSelection(input) {
125
+ if (input.candidateEdgeIds.length === 0)
126
+ throw new Error('At least one candidate edge ID is required.');
127
+ if (input.candidateEdgeIds.some(edgeId => !edgeId.trim()))
128
+ throw new Error('Candidate edge IDs must not be blank.');
129
+ if (new Set(input.candidateEdgeIds).size !== input.candidateEdgeIds.length)
130
+ throw new Error('Candidate edge IDs must be unique.');
131
+ if (input.direction !== 'next' && input.direction !== 'previous')
132
+ throw new Error(`Unsupported cycle direction '${String(input.direction)}'.`);
133
+ const currentIndex = input.currentEdgeId === undefined ? -1 : input.candidateEdgeIds.indexOf(input.currentEdgeId);
134
+ if (input.currentEdgeId !== undefined && currentIndex < 0)
135
+ throw new Error(`Current edge '${input.currentEdgeId}' is not a candidate.`);
136
+ const selectedIndex = currentIndex < 0 ? (input.direction === 'next' ? 0 : input.candidateEdgeIds.length - 1) : (currentIndex + (input.direction === 'next' ? 1 : -1) + input.candidateEdgeIds.length) % input.candidateEdgeIds.length;
137
+ return Object.freeze({ selectedEdgeId: input.candidateEdgeIds[selectedIndex], position: selectedIndex + 1, count: input.candidateEdgeIds.length });
138
+ }
139
+ const stableHash = (value) => {
140
+ let hash = 2166136261;
141
+ for (let index = 0; index < value.length; index += 1) {
142
+ hash ^= value.charCodeAt(index);
143
+ hash = Math.imul(hash, 16777619);
144
+ }
145
+ return hash >>> 0;
146
+ };
147
+ const layoutEligibilityForApply = (graph, overlay, eligibility) => { const fresh = new Set(eligibility.newNodeIds); const unplaced = new Set(eligibility.unplacedNodeIds); const reset = new Set(eligibility.resetNodeIds); const pinned = new Set(eligibility.pinnedNodeIds); return graph.nodes.map(node => node.id).filter(id => reset.has(id) || (!pinned.has(id) && (fresh.has(id) || unplaced.has(id)) && overlay.nodes[id]?.position === undefined)); };
148
+ const uniqueIds = (values, label) => {
149
+ if (values.some(value => typeof value !== 'string' || !value.trim()))
150
+ throw new Error(`${label} must contain non-blank node IDs.`);
151
+ if (new Set(values).size !== values.length)
152
+ throw new Error(`${label} must not contain duplicate node IDs.`);
153
+ return new Set(values);
154
+ };
155
+ /** Computes portable, deterministic layout positions without changing graph or overlay inputs. */
156
+ export function previewLayout(input) {
157
+ assertSerializable(input, 'Layout request');
158
+ if (!input.seed.trim())
159
+ throw new Error('Layout seed must not be blank.');
160
+ if (!Number.isInteger(input.budget.maxOperations) || input.budget.maxOperations < 0)
161
+ throw new RangeError('Layout maxOperations must be a non-negative integer.');
162
+ const nodeIds = input.semanticGraph.nodes.map(node => node.id);
163
+ if (nodeIds.some(id => typeof id !== 'string' || !id.trim()))
164
+ throw new Error('Semantic graph nodes require non-blank string IDs.');
165
+ if (new Set(nodeIds).size !== nodeIds.length)
166
+ throw new Error('Semantic graph node IDs must be unique.');
167
+ const nodeIndex = new Map(nodeIds.map((id, index) => [id, index]));
168
+ const known = new Set(nodeIndex.keys());
169
+ const fresh = uniqueIds(input.eligibility.newNodeIds, 'newNodeIds');
170
+ const unplaced = uniqueIds(input.eligibility.unplacedNodeIds, 'unplacedNodeIds');
171
+ const reset = uniqueIds(input.eligibility.resetNodeIds, 'resetNodeIds');
172
+ const pinned = uniqueIds(input.eligibility.pinnedNodeIds, 'pinnedNodeIds');
173
+ for (const id of [...fresh, ...unplaced, ...reset, ...pinned])
174
+ if (!known.has(id))
175
+ throw new Error(`Unknown layout node '${id}'.`);
176
+ const eligibleNodeIds = Object.freeze(nodeIds.filter(id => reset.has(id) || (!pinned.has(id) && (fresh.has(id) || unplaced.has(id)) && input.overlay.nodes[id]?.position === undefined)));
177
+ const eligible = new Set(eligibleNodeIds);
178
+ const preservedNodeIds = Object.freeze(nodeIds.filter(id => !eligible.has(id)));
179
+ const requiredOperations = nodeIds.length + input.semanticGraph.routes.length + eligibleNodeIds.length;
180
+ const fallback = requiredOperations > input.budget.maxOperations;
181
+ const seedOffset = stableHash(input.seed) % 97;
182
+ const occupied = new Set(Object.entries(input.overlay.nodes).filter(([id, delta]) => !eligible.has(id) && delta.position !== undefined).map(([, delta]) => `${delta.position.x}|${delta.position.y}`));
183
+ const positions = Object.freeze(Object.fromEntries(eligibleNodeIds.map((id, index) => {
184
+ const graphIndex = nodeIndex.get(id);
185
+ const column = fallback ? index : input.semanticGraph.routes.filter(route => route.targetNodeId === id).length;
186
+ let y = (fallback ? 80 : 40) + graphIndex * 160;
187
+ const x = seedOffset + column * 240;
188
+ while (occupied.has(`${x}|${y}`))
189
+ y += 40;
190
+ occupied.add(`${x}|${y}`);
191
+ return [id, Object.freeze({ x, y })];
192
+ })));
193
+ const diagnostics = fallback ? Object.freeze([Object.freeze({ code: 'layout-budget-expired', severity: 'warning', message: 'Layout operation budget expired; deterministic fallback geometry used.' })]) : Object.freeze([]);
194
+ const eligibilityFingerprint = stableHash(JSON.stringify(input.eligibility)).toString(16);
195
+ const baseOverlayFingerprint = stableHash(JSON.stringify(input.overlay)).toString(16);
196
+ return Object.freeze({ positions, eligibleNodeIds, preservedNodeIds, eligibility: Object.freeze({ ...input.eligibility }), semanticRevision: input.semanticGraph.revision, baseOverlayFingerprint, eligibilityFingerprint, mode: fallback ? 'fallback' : 'layout', diagnostics, timing: Object.freeze({ budgetOperations: input.budget.maxOperations, operationsUsed: fallback ? eligibleNodeIds.length : requiredOperations, fallbackOperationsUsed: fallback ? eligibleNodeIds.length : 0, budgetExhausted: fallback, measurement: 'operation-count' }), seed: input.seed });
197
+ }
198
+ /** Applies only previewed node positions to presentation state and records an exact overlay undo snapshot. */
199
+ export function applyLayoutPreview(input) {
200
+ assertSerializable(input, 'Layout apply input');
201
+ if (input.preview.semanticRevision !== input.semanticGraph.revision)
202
+ throw new Error('Layout preview semantic revision is stale.');
203
+ if (input.preview.baseOverlayFingerprint !== stableHash(JSON.stringify(input.overlay)).toString(16))
204
+ throw new Error('Layout preview base overlay is stale.');
205
+ if (input.preview.eligibilityFingerprint !== stableHash(JSON.stringify(input.preview.eligibility)).toString(16))
206
+ throw new Error('Layout preview eligibility is forged.');
207
+ const expected = layoutEligibilityForApply(input.semanticGraph, input.overlay, input.preview.eligibility);
208
+ const known = new Set(input.semanticGraph.nodes.map(node => node.id));
209
+ const eligible = new Set(input.preview.eligibleNodeIds);
210
+ const nodeEntries = Object.entries(input.preview.positions);
211
+ if (expected.length !== eligible.size || expected.some(id => !eligible.has(id)) || nodeEntries.length !== expected.length)
212
+ throw new Error('Layout preview eligibility is incomplete.');
213
+ if (nodeEntries.some(([id]) => !known.has(id) || !eligible.has(id)))
214
+ throw new Error('Layout preview contains an ineligible or unknown node position.');
215
+ const positioned = new Map(nodeEntries);
216
+ const nodes = Object.fromEntries([...Object.entries(input.overlay.nodes).filter(([id]) => !positioned.has(id)), ...nodeEntries.map(([id, position]) => [id, Object.freeze(Object.fromEntries([...Object.entries(input.overlay.nodes[id] ?? {}), ["position", point(position, "Layout position")]]))])]);
217
+ const overlay = Object.freeze({ ...input.overlay, nodes: Object.freeze(nodes) });
218
+ return Object.freeze({ semanticGraph: input.semanticGraph, overlay, undo: Object.freeze({ priorOverlay: structuredClone(input.overlay) }) });
219
+ }
220
+ /** Restores the exact presentation overlay captured by a layout apply transaction. */
221
+ export function undoLayoutApply(input) { assertSerializable(input, 'Layout undo input'); return Object.freeze({ semanticGraph: input.semanticGraph, overlay: input.undo.priorOverlay }); }
222
+ const navigationCenter = (node) => ({ x: node.bounds.x + node.bounds.width / 2, y: node.bounds.y + node.bounds.height / 2 });
223
+ const compareCodePoints = (left, right) => { const leftPoints = Array.from(left, character => character.codePointAt(0)); const rightPoints = Array.from(right, character => character.codePointAt(0)); const length = Math.min(leftPoints.length, rightPoints.length); for (let index = 0; index < length; index += 1) {
224
+ const difference = leftPoints[index] - rightPoints[index];
225
+ if (difference !== 0)
226
+ return difference;
227
+ } return leftPoints.length - rightPoints.length; };
228
+ const navigationOrder = (nodes) => [...nodes].sort((left, right) => { const a = navigationCenter(left); const b = navigationCenter(right); return a.y - b.y || a.x - b.x || compareCodePoints(left.id, right.id); });
229
+ const navigationExtent = (nodes) => {
230
+ if (nodes.length === 0)
231
+ return Object.freeze({ x: 0, y: 0, width: 0, height: 0 });
232
+ let x = Infinity;
233
+ let y = Infinity;
234
+ let right = -Infinity;
235
+ let bottom = -Infinity;
236
+ for (const node of nodes) {
237
+ const nodeRight = node.bounds.x + node.bounds.width;
238
+ const nodeBottom = node.bounds.y + node.bounds.height;
239
+ if (!Number.isFinite(nodeRight) || !Number.isFinite(nodeBottom))
240
+ throw new RangeError('Navigation node bounds overflow.');
241
+ x = Math.min(x, node.bounds.x);
242
+ y = Math.min(y, node.bounds.y);
243
+ right = Math.max(right, nodeRight);
244
+ bottom = Math.max(bottom, nodeBottom);
245
+ }
246
+ const width = right - x;
247
+ const height = bottom - y;
248
+ if (!Number.isFinite(width) || !Number.isFinite(height))
249
+ throw new RangeError('Navigation graph extent overflow.');
250
+ return Object.freeze({ x, y, width, height });
251
+ };
252
+ const validateNavigationNodes = (nodes) => { if (nodes.some(node => !node.id.trim() || !node.kind.trim() || !node.title.trim()))
253
+ throw new Error('Navigation nodes require non-blank IDs, kinds, and titles.'); if (new Set(nodes.map(node => node.id)).size !== nodes.length)
254
+ throw new Error('Navigation node IDs must be unique.'); if (nodes.some(node => ![node.bounds.x, node.bounds.y, node.bounds.width, node.bounds.height].every(Number.isFinite) || node.bounds.width < 0 || node.bounds.height < 0))
255
+ throw new RangeError('Navigation node bounds must be finite and have non-negative dimensions.'); };
256
+ /** Builds a deterministic, structured-clone-safe navigation projection without discarding off-screen semantics. */
257
+ export function buildNavigationModel(input) {
258
+ assertSerializable(input, 'Navigation model input');
259
+ validateNavigationNodes(input.graph.nodes);
260
+ if (![input.viewport.x, input.viewport.y, input.viewport.width, input.viewport.height, input.viewport.overscan, input.zoom, input.semanticZoom.compactAt, input.semanticZoom.detailAt].every(Number.isFinite))
261
+ throw new RangeError('Navigation geometry and zoom values must be finite.');
262
+ if (input.viewport.width < 0 || input.viewport.height < 0 || input.viewport.overscan < 0 || input.zoom < 0)
263
+ throw new RangeError('Viewport dimensions, overscan, and zoom must be non-negative.');
264
+ if (input.semanticZoom.compactAt < 0 || input.semanticZoom.detailAt < input.semanticZoom.compactAt)
265
+ throw new RangeError('Semantic zoom thresholds must be ordered and non-negative.');
266
+ const nodeIds = new Set(input.graph.nodes.map(node => node.id));
267
+ const routeIds = new Set(input.graph.routes.map(route => route.id));
268
+ if (input.graph.routes.some(route => !route.id.trim() || !nodeIds.has(route.sourceNodeId) || !nodeIds.has(route.targetNodeId)))
269
+ throw new Error('Navigation routes require non-blank IDs and known endpoints.');
270
+ if (routeIds.size !== input.graph.routes.length)
271
+ throw new Error('Navigation route IDs must be unique.');
272
+ const validateSelectedIds = (ids, known, label) => { if (new Set(ids).size !== ids.length)
273
+ throw new Error(label + ' must be unique.'); const unknown = ids.find(id => !known.has(id)); if (unknown !== undefined)
274
+ throw new Error(label + " contains unknown ID '" + unknown + "'."); };
275
+ validateSelectedIds(input.selection.nodeIds, nodeIds, 'Selected node IDs');
276
+ validateSelectedIds(input.selection.edgeIds, routeIds, 'Selected edge IDs');
277
+ if (input.selection.focusedNodeId !== undefined && !nodeIds.has(input.selection.focusedNodeId))
278
+ throw new Error("Focused node '" + input.selection.focusedNodeId + "' is not present.");
279
+ if (input.diagnostics.some(diagnostic => !['info', 'warning', 'error'].includes(diagnostic.severity)))
280
+ throw new Error('Unsupported navigation diagnostic severity.');
281
+ const left = input.viewport.x - input.viewport.overscan;
282
+ const top = input.viewport.y - input.viewport.overscan;
283
+ const right = input.viewport.x + input.viewport.width + input.viewport.overscan;
284
+ const bottom = input.viewport.y + input.viewport.height + input.viewport.overscan;
285
+ const visible = input.graph.nodes.filter(node => node.bounds.x <= right && node.bounds.x + node.bounds.width >= left && node.bounds.y <= bottom && node.bounds.y + node.bounds.height >= top);
286
+ const visibleIds = new Set(visible.map(node => node.id));
287
+ const extent = navigationExtent(input.graph.nodes);
288
+ const ordered = navigationOrder(input.graph.nodes);
289
+ const count = ordered.length;
290
+ const level = input.zoom >= input.semanticZoom.detailAt ? 'detail' : input.zoom >= input.semanticZoom.compactAt ? 'compact' : 'overview';
291
+ const selected = new Set(input.selection.nodeIds);
292
+ const truncateAt = 40;
293
+ const accessibilityNodes = ordered.map((node, index) => { const truncated = node.title.length > truncateAt; return Object.freeze({ id: node.id, accessibleName: node.title + ', ' + node.kind, position: index + 1, count, selected: selected.has(node.id), focused: input.selection.focusedNodeId === node.id, visualLabel: truncated ? node.title.slice(0, truncateAt - 1) + '…' : node.title, truncated, fullValue: node.title }); });
294
+ const severityCounts = input.diagnostics.reduce((totals, diagnostic) => ({ ...totals, [diagnostic.severity]: (totals[diagnostic.severity] ?? 0) + 1 }), {});
295
+ const diagnosticSummary = input.diagnostics.length === 0 ? 'No diagnostics' : ['error', 'warning', 'info'].filter(severity => severityCounts[severity]).map(severity => `${severityCounts[severity]} ${severity}${severityCounts[severity] === 1 ? '' : 's'}`).join(', ');
296
+ const selectionCount = input.selection.nodeIds.length;
297
+ return Object.freeze({ visibleNodeIds: Object.freeze(visible.map(node => node.id)), virtualizedNodeIds: Object.freeze(input.graph.nodes.filter(node => !visibleIds.has(node.id)).map(node => node.id)), visibleRouteIds: Object.freeze(input.graph.routes.filter(route => visibleIds.has(route.sourceNodeId) && visibleIds.has(route.targetNodeId)).map(route => route.id)), semanticZoom: Object.freeze({ level, showPorts: level === 'detail', showContent: level === 'detail' }), outline: Object.freeze(input.graph.nodes.map((node, index) => Object.freeze({ id: node.id, label: node.title, kind: node.kind, position: index + 1, count }))), minimap: Object.freeze({ bounds: extent, viewport: Object.freeze({ x: input.viewport.x, y: input.viewport.y, width: input.viewport.width, height: input.viewport.height }), nodeCount: count, routeCount: input.graph.routes.length }), fit: Object.freeze({ bounds: extent }), accessibility: Object.freeze({ graphSummary: `${count} nodes and ${input.graph.routes.length} routes`, viewportSummary: `${visible.length} visible and ${count - visible.length} virtualized nodes`, selectionSummary: `${selectionCount} node${selectionCount === 1 ? '' : 's'} selected, ${input.selection.edgeIds.length} edge${input.selection.edgeIds.length === 1 ? '' : 's'} selected`, diagnosticSummary, nodes: Object.freeze(accessibilityNodes) }), presentation: Object.freeze({ animateLayout: !input.preferences.reducedMotion, animatePathTravel: !input.preferences.reducedMotion, highContrast: input.preferences.highContrast, nonColorEdgeCue: input.preferences.highContrast ? 'pattern and endpoint marker' : 'endpoint marker' }), controls: Object.freeze(['fit-graph', 'open-outline', 'toggle-minimap', 'zoom-in', 'zoom-out'].map(id => Object.freeze({ id, accessibleName: id.split('-').join(' '), width: input.preferences.pointer === 'coarse' ? 44 : 32, height: input.preferences.pointer === 'coarse' ? 44 : 32, hoverOnly: false }))) });
298
+ }
299
+ /** Moves focus by geometry, with stable tie-breaking independent of caller ordering. */
300
+ export function moveSpatialFocus(input) {
301
+ assertSerializable(input, 'Spatial focus input');
302
+ validateNavigationNodes(input.nodes);
303
+ const current = input.nodes.find(node => node.id === input.currentNodeId);
304
+ if (!current)
305
+ throw new Error(`Current navigation node '${input.currentNodeId}' is not present.`);
306
+ if (!['up', 'right', 'down', 'left'].includes(input.direction))
307
+ throw new Error(`Unsupported spatial direction '${String(input.direction)}'.`);
308
+ const origin = navigationCenter(current);
309
+ const horizontal = input.direction === 'left' || input.direction === 'right';
310
+ const sign = input.direction === 'left' || input.direction === 'up' ? -1 : 1;
311
+ const candidates = input.nodes.filter(node => node.id !== current.id).map(node => { const center = navigationCenter(node); const primary = sign * (horizontal ? center.x - origin.x : center.y - origin.y); const secondary = Math.abs(horizontal ? center.y - origin.y : center.x - origin.x); const beam = horizontal ? node.bounds.y <= current.bounds.y + current.bounds.height && node.bounds.y + node.bounds.height >= current.bounds.y : node.bounds.x <= current.bounds.x + current.bounds.width && node.bounds.x + node.bounds.width >= current.bounds.x; return { node, primary, secondary, beam }; }).filter(candidate => candidate.primary > 0).sort((a, b) => Number(b.beam) - Number(a.beam) || a.primary - b.primary || a.secondary - b.secondary || compareCodePoints(a.node.id, b.node.id));
312
+ const focused = candidates[0]?.node ?? current;
313
+ const ordered = navigationOrder(input.nodes);
314
+ const position = ordered.findIndex(node => node.id === focused.id) + 1;
315
+ return Object.freeze({ focusedNodeId: focused.id, accessibleName: `${focused.title}, ${focused.kind}`, position, count: ordered.length });
316
+ }
317
+ const allowOnly = (value, allowed, label) => {
318
+ const unsupported = Object.keys(value).find(key => !allowed.includes(key));
319
+ if (unsupported !== undefined)
320
+ throw new Error(`${label} contains unsupported field '${unsupported}'.`);
321
+ };
322
+ const assertSerializable = (value, label, ancestors = new WeakSet()) => {
323
+ if (value === undefined || typeof value === 'function' || typeof value === 'symbol' || typeof value === 'bigint')
324
+ throw new TypeError(`${label} must be serializable.`);
325
+ if (typeof value === 'number' && !Number.isFinite(value))
326
+ throw new TypeError(`${label} must contain only finite numbers.`);
327
+ if (value !== null && typeof value === 'object') {
328
+ if (ancestors.has(value))
329
+ throw new TypeError(`${label} must not contain cyclic references.`);
330
+ ancestors.add(value);
331
+ }
332
+ if (Array.isArray(value)) {
333
+ value.forEach((item, index) => assertSerializable(item, `${label}[${index}]`, ancestors));
334
+ ancestors.delete(value);
335
+ return;
336
+ }
337
+ if (value !== null && typeof value === "object" && !Array.isArray(value) && ![Object.prototype, null].includes(Object.getPrototypeOf(value)))
338
+ throw new TypeError(` must contain only plain objects and arrays.`);
339
+ if (value !== null && typeof value === "object") {
340
+ Object.entries(value).forEach(([key, item]) => assertSerializable(item, `${label}.${key}`, ancestors));
341
+ ancestors.delete(value);
342
+ }
343
+ };
344
+ const point = (value, label) => {
345
+ allowOnly(value, ['x', 'y'], label);
346
+ if (!Number.isFinite(value.x) || !Number.isFinite(value.y))
347
+ throw new RangeError(`${label} must contain finite coordinates.`);
348
+ return Object.freeze({ x: value.x, y: value.y });
349
+ };
350
+ const style = (value, label) => Object.freeze(Object.fromEntries(Object.entries(value).map(([key, item]) => {
351
+ if (!key.trim())
352
+ throw new Error(`${label} keys must not be blank.`);
353
+ assertSerializable(item, `${label}.${key}`);
354
+ if (Array.isArray(item))
355
+ return [key, Object.freeze([...item])];
356
+ return [key, item];
357
+ })));
358
+ const target = (value) => { if (!value.trim())
359
+ throw new Error('Presentation command targetId must not be blank.'); };
360
+ const nodePatch = (value) => {
361
+ allowOnly(value, ['position', 'size', 'style'], 'Node presentation patch');
362
+ if (value.size !== undefined) {
363
+ allowOnly(value.size, ['width', 'height'], 'Node size');
364
+ if (![value.size.width, value.size.height].every(Number.isFinite) || value.size.width <= 0 || value.size.height <= 0)
365
+ throw new RangeError('Node size must contain positive finite dimensions.');
366
+ }
367
+ return Object.freeze({ ...(value.position === undefined ? {} : { position: point(value.position, 'Node position') }), ...(value.size === undefined ? {} : { size: Object.freeze({ ...value.size }) }), ...(value.style === undefined ? {} : { style: Object.freeze(Object.fromEntries(Object.entries(value.style).map(([part, properties]) => [part, style(properties, `Node style.${part}`)]))) }) });
368
+ };
369
+ const portPatch = (value) => {
370
+ allowOnly(value, ['anchor', 'style'], 'Port presentation patch');
371
+ if (value.anchor !== undefined) {
372
+ allowOnly(value.anchor, ['side', 'offset'], 'Port anchor');
373
+ if (!['top', 'right', 'bottom', 'left'].includes(value.anchor.side) || !Number.isFinite(value.anchor.offset) || value.anchor.offset < 0 || value.anchor.offset > 1)
374
+ throw new RangeError('Port anchor requires a supported side and an offset from 0 to 1.');
375
+ }
376
+ return Object.freeze({ ...(value.anchor === undefined ? {} : { anchor: Object.freeze({ ...value.anchor }) }), ...(value.style === undefined ? {} : { style: style(value.style, 'Port style') }) });
377
+ };
378
+ const edgePatch = (value) => {
379
+ allowOnly(value, ['waypoints', 'style', 'marker'], 'Edge presentation patch');
380
+ if (value.marker !== undefined) {
381
+ allowOnly(value.marker, ['start', 'end'], 'Edge marker');
382
+ assertSerializable(value.marker, 'Edge marker');
383
+ if ((value.marker.start !== undefined && typeof value.marker.start !== 'string') || (value.marker.end !== undefined && typeof value.marker.end !== 'string'))
384
+ throw new TypeError('Edge marker values must be strings.');
385
+ }
386
+ return Object.freeze({ ...(value.waypoints === undefined ? {} : { waypoints: Object.freeze(value.waypoints.map((item, index) => point(item, `Edge waypoint ${index}`))) }), ...(value.style === undefined ? {} : { style: style(value.style, 'Edge style') }), ...(value.marker === undefined ? {} : { marker: Object.freeze({ ...value.marker }) }) });
387
+ };
388
+ const mergeNodeStyle = (current, patch) => patch === undefined ? current : Object.freeze(Object.fromEntries(Object.entries(patch).map(([part, properties]) => [part, Object.freeze({ ...current?.[part], ...properties })]).concat(Object.entries(current ?? {}).filter(([part]) => patch[part] === undefined))));
389
+ const graphIds = (graph) => ({
390
+ nodes: new Set(graph.nodes.map(node => node.id)),
391
+ edges: new Set(graph.routes.map(route => route.id)),
392
+ ports: new Set(graph.routes.flatMap(route => [route.sourcePortId, route.targetPortId])),
393
+ });
394
+ const requireKnownTarget = (ids, elementType, targetId) => {
395
+ target(targetId);
396
+ if (!ids[`${elementType}s`].has(targetId))
397
+ throw new Error(`Unknown ${elementType} presentation target '${targetId}'.`);
398
+ };
399
+ /** Applies an authorized renderer-neutral presentation command without touching workflow semantics. */
400
+ export function applyPresentationCommand(input) {
401
+ if (!Number.isInteger(input.overlay.schemaVersion) || input.overlay.schemaVersion < 1)
402
+ throw new RangeError('Presentation overlay schemaVersion must be a positive integer.');
403
+ if (input.command.domain !== undefined && input.command.domain !== 'presentation')
404
+ throw new Error('Only presentation commands are accepted by the layout kernel.');
405
+ const allowedCommandFields = { 'node.update': ['domain', 'kind', 'targetId', 'patch'], 'port.update': ['domain', 'kind', 'targetId', 'patch'], 'edge.update': ['domain', 'kind', 'targetId', 'patch'], 'reset.element': ['domain', 'kind', 'elementType', 'targetId'], 'reset.layout': ['domain', 'kind'] };
406
+ const commandFields = allowedCommandFields[input.command.kind];
407
+ if (commandFields === undefined)
408
+ throw new Error(`Unsupported presentation command '${String(input.command.kind)}'.`);
409
+ allowOnly(input.command, commandFields, `Presentation command '${input.command.kind}'`);
410
+ const ids = graphIds(input.semanticGraph);
411
+ let command;
412
+ let overlay;
413
+ switch (input.command.kind) {
414
+ case 'node.update': {
415
+ requireKnownTarget(ids, 'node', input.command.targetId);
416
+ const patch = nodePatch(input.command.patch);
417
+ command = Object.freeze({ domain: 'presentation', kind: input.command.kind, targetId: input.command.targetId, patch });
418
+ const current = input.overlay.nodes[input.command.targetId];
419
+ const merged = Object.freeze({ ...current, ...patch, ...(patch.style === undefined ? {} : { style: mergeNodeStyle(current?.style, patch.style) }) });
420
+ overlay = Object.freeze({ ...input.overlay, nodes: Object.freeze({ ...input.overlay.nodes, [input.command.targetId]: merged }) });
421
+ break;
422
+ }
423
+ case 'port.update': {
424
+ requireKnownTarget(ids, 'port', input.command.targetId);
425
+ const patch = portPatch(input.command.patch);
426
+ command = Object.freeze({ domain: 'presentation', kind: input.command.kind, targetId: input.command.targetId, patch });
427
+ const current = input.overlay.ports[input.command.targetId];
428
+ const merged = Object.freeze({ ...current, ...patch, ...(patch.style === undefined ? {} : { style: Object.freeze({ ...current?.style, ...patch.style }) }) });
429
+ overlay = Object.freeze({ ...input.overlay, ports: Object.freeze({ ...input.overlay.ports, [input.command.targetId]: merged }) });
430
+ break;
431
+ }
432
+ case 'edge.update': {
433
+ requireKnownTarget(ids, 'edge', input.command.targetId);
434
+ const patch = edgePatch(input.command.patch);
435
+ command = Object.freeze({ domain: 'presentation', kind: input.command.kind, targetId: input.command.targetId, patch });
436
+ const current = input.overlay.edges[input.command.targetId];
437
+ const merged = Object.freeze({ ...current, ...patch, ...(patch.style === undefined ? {} : { style: Object.freeze({ ...current?.style, ...patch.style }) }), ...(patch.marker === undefined ? {} : { marker: Object.freeze({ ...current?.marker, ...patch.marker }) }) });
438
+ overlay = Object.freeze({ ...input.overlay, edges: Object.freeze({ ...input.overlay.edges, [input.command.targetId]: merged }) });
439
+ break;
440
+ }
441
+ case 'reset.element': {
442
+ if (!['node', 'port', 'edge'].includes(input.command.elementType))
443
+ throw new Error(`Unsupported presentation element type '${String(input.command.elementType)}'.`);
444
+ requireKnownTarget(ids, input.command.elementType, input.command.targetId);
445
+ command = Object.freeze({ domain: 'presentation', kind: input.command.kind, elementType: input.command.elementType, targetId: input.command.targetId });
446
+ const section = `${input.command.elementType}s`;
447
+ const remaining = { ...input.overlay[section] };
448
+ delete remaining[input.command.targetId];
449
+ overlay = Object.freeze({ ...input.overlay, [section]: Object.freeze(remaining) });
450
+ break;
451
+ }
452
+ case 'reset.layout':
453
+ command = Object.freeze({ domain: 'presentation', kind: input.command.kind });
454
+ overlay = Object.freeze({ schemaVersion: input.overlay.schemaVersion, nodes: Object.freeze({}), ports: Object.freeze({}), edges: Object.freeze({}) });
455
+ break;
456
+ default: throw new Error(`Unsupported presentation command '${String(input.command.kind)}'.`);
457
+ }
458
+ return Object.freeze({ command, overlay, semanticGraph: input.semanticGraph });
459
+ }
460
+ //# sourceMappingURL=layout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layout.js","sourceRoot":"","sources":["../src/layout.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import type { ExtensionRegistry } from './extensionRegistry.js';
2
+ type Row = Readonly<Record<string, unknown>>;
3
+ export declare function resolveShape(id: string, options: Readonly<{
4
+ registry?: ExtensionRegistry;
5
+ width: number;
6
+ height: number;
7
+ }>): Row;
8
+ export declare function resolveComponent(id: string, options: Readonly<{
9
+ registry: ExtensionRegistry;
10
+ renderer: string;
11
+ }>): Row;
12
+ export declare function resolveForm(id: string, options: Readonly<{
13
+ registry: ExtensionRegistry;
14
+ renderer: string;
15
+ }>): Row;
16
+ export {};
17
+ //# sourceMappingURL=nodeExtensions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nodeExtensions.d.ts","sourceRoot":"","sources":["../src/nodeExtensions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAChE,KAAK,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AAc7C,wBAAgB,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC;IAAE,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,GAAG,CAKhI;AAED,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC;IAAE,QAAQ,EAAE,iBAAiB,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,GAAG,CAMtH;AAED,wBAAgB,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC;IAAE,QAAQ,EAAE,iBAAiB,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,GAAG,CAMjH"}