@shumoku/core 0.1.1 → 0.2.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 (157) hide show
  1. package/dist/constants.d.ts +23 -0
  2. package/dist/constants.d.ts.map +1 -0
  3. package/dist/constants.js +25 -0
  4. package/dist/constants.js.map +1 -0
  5. package/dist/index.d.ts +1 -0
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +2 -0
  8. package/dist/index.js.map +1 -1
  9. package/dist/layout/hierarchical.d.ts +12 -39
  10. package/dist/layout/hierarchical.d.ts.map +1 -1
  11. package/dist/layout/hierarchical.js +697 -1015
  12. package/dist/layout/hierarchical.js.map +1 -1
  13. package/dist/models/types.d.ts +30 -0
  14. package/dist/models/types.d.ts.map +1 -1
  15. package/dist/models/types.js.map +1 -1
  16. package/dist/renderer/svg.d.ts +31 -5
  17. package/dist/renderer/svg.d.ts.map +1 -1
  18. package/dist/renderer/svg.js +312 -85
  19. package/dist/renderer/svg.js.map +1 -1
  20. package/package.json +1 -1
  21. package/src/constants.ts +35 -0
  22. package/src/index.ts +3 -0
  23. package/src/layout/hierarchical.ts +805 -1127
  24. package/src/models/types.ts +37 -0
  25. package/src/renderer/svg.ts +368 -88
  26. package/dist/renderer/components/index.d.ts +0 -8
  27. package/dist/renderer/components/index.d.ts.map +0 -1
  28. package/dist/renderer/components/index.js +0 -8
  29. package/dist/renderer/components/index.js.map +0 -1
  30. package/dist/renderer/components/link-renderer.d.ts +0 -11
  31. package/dist/renderer/components/link-renderer.d.ts.map +0 -1
  32. package/dist/renderer/components/link-renderer.js +0 -340
  33. package/dist/renderer/components/link-renderer.js.map +0 -1
  34. package/dist/renderer/components/node-renderer.d.ts +0 -14
  35. package/dist/renderer/components/node-renderer.d.ts.map +0 -1
  36. package/dist/renderer/components/node-renderer.js +0 -242
  37. package/dist/renderer/components/node-renderer.js.map +0 -1
  38. package/dist/renderer/components/port-renderer.d.ts +0 -8
  39. package/dist/renderer/components/port-renderer.d.ts.map +0 -1
  40. package/dist/renderer/components/port-renderer.js +0 -85
  41. package/dist/renderer/components/port-renderer.js.map +0 -1
  42. package/dist/renderer/components/subgraph-renderer.d.ts +0 -13
  43. package/dist/renderer/components/subgraph-renderer.d.ts.map +0 -1
  44. package/dist/renderer/components/subgraph-renderer.js +0 -85
  45. package/dist/renderer/components/subgraph-renderer.js.map +0 -1
  46. package/dist/renderer/icon-registry/index.d.ts +0 -6
  47. package/dist/renderer/icon-registry/index.d.ts.map +0 -1
  48. package/dist/renderer/icon-registry/index.js +0 -5
  49. package/dist/renderer/icon-registry/index.js.map +0 -1
  50. package/dist/renderer/icon-registry/registry.d.ts +0 -25
  51. package/dist/renderer/icon-registry/registry.d.ts.map +0 -1
  52. package/dist/renderer/icon-registry/registry.js +0 -85
  53. package/dist/renderer/icon-registry/registry.js.map +0 -1
  54. package/dist/renderer/icon-registry/types.d.ts +0 -44
  55. package/dist/renderer/icon-registry/types.d.ts.map +0 -1
  56. package/dist/renderer/icon-registry/types.js +0 -5
  57. package/dist/renderer/icon-registry/types.js.map +0 -1
  58. package/dist/renderer/render-model/builder.d.ts +0 -43
  59. package/dist/renderer/render-model/builder.d.ts.map +0 -1
  60. package/dist/renderer/render-model/builder.js +0 -646
  61. package/dist/renderer/render-model/builder.js.map +0 -1
  62. package/dist/renderer/render-model/index.d.ts +0 -6
  63. package/dist/renderer/render-model/index.d.ts.map +0 -1
  64. package/dist/renderer/render-model/index.js +0 -5
  65. package/dist/renderer/render-model/index.js.map +0 -1
  66. package/dist/renderer/render-model/types.d.ts +0 -216
  67. package/dist/renderer/render-model/types.d.ts.map +0 -1
  68. package/dist/renderer/render-model/types.js +0 -6
  69. package/dist/renderer/render-model/types.js.map +0 -1
  70. package/dist/renderer/renderer-types.d.ts +0 -55
  71. package/dist/renderer/renderer-types.d.ts.map +0 -1
  72. package/dist/renderer/renderer-types.js +0 -5
  73. package/dist/renderer/renderer-types.js.map +0 -1
  74. package/dist/renderer/svg-builder.d.ts +0 -152
  75. package/dist/renderer/svg-builder.d.ts.map +0 -1
  76. package/dist/renderer/svg-builder.js +0 -176
  77. package/dist/renderer/svg-builder.js.map +0 -1
  78. package/dist/renderer/svg-dom/builders/defs.d.ts +0 -10
  79. package/dist/renderer/svg-dom/builders/defs.d.ts.map +0 -1
  80. package/dist/renderer/svg-dom/builders/defs.js +0 -82
  81. package/dist/renderer/svg-dom/builders/defs.js.map +0 -1
  82. package/dist/renderer/svg-dom/builders/index.d.ts +0 -9
  83. package/dist/renderer/svg-dom/builders/index.d.ts.map +0 -1
  84. package/dist/renderer/svg-dom/builders/index.js +0 -9
  85. package/dist/renderer/svg-dom/builders/index.js.map +0 -1
  86. package/dist/renderer/svg-dom/builders/link.d.ts +0 -18
  87. package/dist/renderer/svg-dom/builders/link.d.ts.map +0 -1
  88. package/dist/renderer/svg-dom/builders/link.js +0 -188
  89. package/dist/renderer/svg-dom/builders/link.js.map +0 -1
  90. package/dist/renderer/svg-dom/builders/node.d.ts +0 -15
  91. package/dist/renderer/svg-dom/builders/node.d.ts.map +0 -1
  92. package/dist/renderer/svg-dom/builders/node.js +0 -262
  93. package/dist/renderer/svg-dom/builders/node.js.map +0 -1
  94. package/dist/renderer/svg-dom/builders/subgraph.d.ts +0 -14
  95. package/dist/renderer/svg-dom/builders/subgraph.d.ts.map +0 -1
  96. package/dist/renderer/svg-dom/builders/subgraph.js +0 -63
  97. package/dist/renderer/svg-dom/builders/subgraph.js.map +0 -1
  98. package/dist/renderer/svg-dom/builders/utils.d.ts +0 -40
  99. package/dist/renderer/svg-dom/builders/utils.d.ts.map +0 -1
  100. package/dist/renderer/svg-dom/builders/utils.js +0 -79
  101. package/dist/renderer/svg-dom/builders/utils.js.map +0 -1
  102. package/dist/renderer/svg-dom/index.d.ts +0 -9
  103. package/dist/renderer/svg-dom/index.d.ts.map +0 -1
  104. package/dist/renderer/svg-dom/index.js +0 -7
  105. package/dist/renderer/svg-dom/index.js.map +0 -1
  106. package/dist/renderer/svg-dom/interaction.d.ts +0 -69
  107. package/dist/renderer/svg-dom/interaction.d.ts.map +0 -1
  108. package/dist/renderer/svg-dom/interaction.js +0 -296
  109. package/dist/renderer/svg-dom/interaction.js.map +0 -1
  110. package/dist/renderer/svg-dom/renderer.d.ts +0 -47
  111. package/dist/renderer/svg-dom/renderer.d.ts.map +0 -1
  112. package/dist/renderer/svg-dom/renderer.js +0 -188
  113. package/dist/renderer/svg-dom/renderer.js.map +0 -1
  114. package/dist/renderer/svg-string/builders/defs.d.ts +0 -10
  115. package/dist/renderer/svg-string/builders/defs.d.ts.map +0 -1
  116. package/dist/renderer/svg-string/builders/defs.js +0 -43
  117. package/dist/renderer/svg-string/builders/defs.js.map +0 -1
  118. package/dist/renderer/svg-string/builders/link.d.ts +0 -10
  119. package/dist/renderer/svg-string/builders/link.d.ts.map +0 -1
  120. package/dist/renderer/svg-string/builders/link.js +0 -149
  121. package/dist/renderer/svg-string/builders/link.js.map +0 -1
  122. package/dist/renderer/svg-string/builders/node.d.ts +0 -10
  123. package/dist/renderer/svg-string/builders/node.d.ts.map +0 -1
  124. package/dist/renderer/svg-string/builders/node.js +0 -134
  125. package/dist/renderer/svg-string/builders/node.js.map +0 -1
  126. package/dist/renderer/svg-string/builders/subgraph.d.ts +0 -10
  127. package/dist/renderer/svg-string/builders/subgraph.d.ts.map +0 -1
  128. package/dist/renderer/svg-string/builders/subgraph.js +0 -59
  129. package/dist/renderer/svg-string/builders/subgraph.js.map +0 -1
  130. package/dist/renderer/svg-string/index.d.ts +0 -5
  131. package/dist/renderer/svg-string/index.d.ts.map +0 -1
  132. package/dist/renderer/svg-string/index.js +0 -5
  133. package/dist/renderer/svg-string/index.js.map +0 -1
  134. package/dist/renderer/svg-string/renderer.d.ts +0 -17
  135. package/dist/renderer/svg-string/renderer.d.ts.map +0 -1
  136. package/dist/renderer/svg-string/renderer.js +0 -53
  137. package/dist/renderer/svg-string/renderer.js.map +0 -1
  138. package/dist/renderer/text-measurer/browser-measurer.d.ts +0 -25
  139. package/dist/renderer/text-measurer/browser-measurer.d.ts.map +0 -1
  140. package/dist/renderer/text-measurer/browser-measurer.js +0 -85
  141. package/dist/renderer/text-measurer/browser-measurer.js.map +0 -1
  142. package/dist/renderer/text-measurer/fallback-measurer.d.ts +0 -22
  143. package/dist/renderer/text-measurer/fallback-measurer.d.ts.map +0 -1
  144. package/dist/renderer/text-measurer/fallback-measurer.js +0 -113
  145. package/dist/renderer/text-measurer/fallback-measurer.js.map +0 -1
  146. package/dist/renderer/text-measurer/index.d.ts +0 -13
  147. package/dist/renderer/text-measurer/index.d.ts.map +0 -1
  148. package/dist/renderer/text-measurer/index.js +0 -35
  149. package/dist/renderer/text-measurer/index.js.map +0 -1
  150. package/dist/renderer/text-measurer/types.d.ts +0 -30
  151. package/dist/renderer/text-measurer/types.d.ts.map +0 -1
  152. package/dist/renderer/text-measurer/types.js +0 -5
  153. package/dist/renderer/text-measurer/types.js.map +0 -1
  154. package/dist/renderer/theme.d.ts +0 -29
  155. package/dist/renderer/theme.d.ts.map +0 -1
  156. package/dist/renderer/theme.js +0 -80
  157. package/dist/renderer/theme.js.map +0 -1
@@ -1,296 +0,0 @@
1
- /**
2
- * SVG DOM Interaction Controller
3
- * Handles pan, zoom, and drag interactions
4
- */
5
- const DEFAULT_OPTIONS = {
6
- enablePan: true,
7
- enableZoom: true,
8
- enableNodeDrag: true,
9
- minScale: 0.1,
10
- maxScale: 5,
11
- zoomSensitivity: 0.002,
12
- };
13
- // ============================================
14
- // Interaction Controller
15
- // ============================================
16
- export class InteractionController {
17
- svg;
18
- contentGroup;
19
- options;
20
- events = {};
21
- viewport = { scale: 1, translateX: 0, translateY: 0 };
22
- // Interaction state
23
- isPanning = false;
24
- isDragging = false;
25
- draggedNodeId = null;
26
- lastPointer = { x: 0, y: 0 };
27
- // Event handler references for cleanup
28
- boundHandlers;
29
- // Node/Link maps for event handling
30
- nodeElements = new Map();
31
- linkElements = new Map();
32
- nodeDataMap = new Map();
33
- linkDataMap = new Map();
34
- constructor(svg, contentGroup, options = {}) {
35
- this.svg = svg;
36
- this.contentGroup = contentGroup;
37
- this.options = { ...DEFAULT_OPTIONS, ...options };
38
- // Bind handlers
39
- this.boundHandlers = {
40
- wheel: this.handleWheel.bind(this),
41
- mousedown: this.handleMouseDown.bind(this),
42
- mousemove: this.handleMouseMove.bind(this),
43
- mouseup: this.handleMouseUp.bind(this),
44
- mouseleave: this.handleMouseLeave.bind(this),
45
- };
46
- }
47
- // ============================================
48
- // Public API
49
- // ============================================
50
- attach() {
51
- this.svg.addEventListener('wheel', this.boundHandlers.wheel, { passive: false });
52
- this.svg.addEventListener('mousedown', this.boundHandlers.mousedown);
53
- this.svg.addEventListener('mousemove', this.boundHandlers.mousemove);
54
- this.svg.addEventListener('mouseup', this.boundHandlers.mouseup);
55
- this.svg.addEventListener('mouseleave', this.boundHandlers.mouseleave);
56
- }
57
- detach() {
58
- this.svg.removeEventListener('wheel', this.boundHandlers.wheel);
59
- this.svg.removeEventListener('mousedown', this.boundHandlers.mousedown);
60
- this.svg.removeEventListener('mousemove', this.boundHandlers.mousemove);
61
- this.svg.removeEventListener('mouseup', this.boundHandlers.mouseup);
62
- this.svg.removeEventListener('mouseleave', this.boundHandlers.mouseleave);
63
- }
64
- setEvents(events) {
65
- this.events = events;
66
- }
67
- setViewport(viewport) {
68
- this.viewport = { ...viewport };
69
- this.applyViewport();
70
- }
71
- getViewport() {
72
- return { ...this.viewport };
73
- }
74
- resetViewport() {
75
- this.viewport = { scale: 1, translateX: 0, translateY: 0 };
76
- this.applyViewport();
77
- }
78
- registerNode(id, element, data) {
79
- this.nodeElements.set(id, element);
80
- this.nodeDataMap.set(id, data);
81
- this.attachNodeHandlers(element, id);
82
- }
83
- registerLink(id, element, data) {
84
- this.linkElements.set(id, element);
85
- this.linkDataMap.set(id, data);
86
- this.attachLinkHandlers(element, id);
87
- }
88
- unregisterNode(id) {
89
- const element = this.nodeElements.get(id);
90
- if (element) {
91
- this.detachNodeHandlers(element);
92
- this.nodeElements.delete(id);
93
- this.nodeDataMap.delete(id);
94
- }
95
- }
96
- unregisterLink(id) {
97
- const element = this.linkElements.get(id);
98
- if (element) {
99
- this.detachLinkHandlers(element);
100
- this.linkElements.delete(id);
101
- this.linkDataMap.delete(id);
102
- }
103
- }
104
- getNodeElement(nodeId) {
105
- return this.nodeElements.get(nodeId) || null;
106
- }
107
- getLinkElement(linkId) {
108
- return this.linkElements.get(linkId) || null;
109
- }
110
- clear() {
111
- this.nodeElements.clear();
112
- this.linkElements.clear();
113
- this.nodeDataMap.clear();
114
- this.linkDataMap.clear();
115
- }
116
- // ============================================
117
- // Viewport Control
118
- // ============================================
119
- applyViewport() {
120
- const { scale, translateX, translateY } = this.viewport;
121
- this.contentGroup.setAttribute('transform', `translate(${translateX}, ${translateY}) scale(${scale})`);
122
- this.events.onViewportChange?.(this.viewport);
123
- }
124
- fitToContent(bounds, padding = 40) {
125
- const svgRect = this.svg.getBoundingClientRect();
126
- const containerWidth = svgRect.width;
127
- const containerHeight = svgRect.height;
128
- const contentWidth = bounds.width + padding * 2;
129
- const contentHeight = bounds.height + padding * 2;
130
- const scaleX = containerWidth / contentWidth;
131
- const scaleY = containerHeight / contentHeight;
132
- const scale = Math.min(scaleX, scaleY, 1); // Don't scale up beyond 1
133
- const translateX = (containerWidth - bounds.width * scale) / 2 - bounds.x * scale;
134
- const translateY = (containerHeight - bounds.height * scale) / 2 - bounds.y * scale;
135
- this.viewport = { scale, translateX, translateY };
136
- this.applyViewport();
137
- }
138
- // ============================================
139
- // Event Handlers
140
- // ============================================
141
- handleWheel(e) {
142
- if (!this.options.enableZoom)
143
- return;
144
- e.preventDefault();
145
- const rect = this.svg.getBoundingClientRect();
146
- const mouseX = e.clientX - rect.left;
147
- const mouseY = e.clientY - rect.top;
148
- // Calculate new scale
149
- const delta = -e.deltaY * this.options.zoomSensitivity;
150
- const newScale = Math.min(this.options.maxScale, Math.max(this.options.minScale, this.viewport.scale * (1 + delta)));
151
- // Zoom toward mouse position
152
- const scaleFactor = newScale / this.viewport.scale;
153
- const newTranslateX = mouseX - scaleFactor * (mouseX - this.viewport.translateX);
154
- const newTranslateY = mouseY - scaleFactor * (mouseY - this.viewport.translateY);
155
- this.viewport = {
156
- scale: newScale,
157
- translateX: newTranslateX,
158
- translateY: newTranslateY,
159
- };
160
- this.applyViewport();
161
- }
162
- handleMouseDown(e) {
163
- const target = e.target;
164
- // Check if clicking on a node for dragging
165
- if (this.options.enableNodeDrag) {
166
- const nodeGroup = this.findParentNodeGroup(target);
167
- if (nodeGroup) {
168
- const nodeId = nodeGroup.getAttribute('data-node-id');
169
- if (nodeId) {
170
- this.isDragging = true;
171
- this.draggedNodeId = nodeId;
172
- this.lastPointer = this.getPointerPosition(e);
173
- const data = this.nodeDataMap.get(nodeId);
174
- if (data) {
175
- this.events.onNodeDragStart?.(nodeId, { ...data.position }, e);
176
- }
177
- e.preventDefault();
178
- return;
179
- }
180
- }
181
- }
182
- // Start panning on background
183
- if (this.options.enablePan && this.isBackground(target)) {
184
- this.isPanning = true;
185
- this.lastPointer = { x: e.clientX, y: e.clientY };
186
- e.preventDefault();
187
- }
188
- }
189
- handleMouseMove(e) {
190
- if (this.isDragging && this.draggedNodeId) {
191
- const currentPointer = this.getPointerPosition(e);
192
- const data = this.nodeDataMap.get(this.draggedNodeId);
193
- if (data) {
194
- const dx = (currentPointer.x - this.lastPointer.x) / this.viewport.scale;
195
- const dy = (currentPointer.y - this.lastPointer.y) / this.viewport.scale;
196
- data.position.x += dx;
197
- data.position.y += dy;
198
- // Note: Full node dragging requires re-rendering or updating all child elements
199
- // For now, just emit the drag event
200
- this.events.onNodeDrag?.(this.draggedNodeId, { ...data.position }, e);
201
- this.lastPointer = currentPointer;
202
- }
203
- }
204
- else if (this.isPanning) {
205
- const dx = e.clientX - this.lastPointer.x;
206
- const dy = e.clientY - this.lastPointer.y;
207
- this.viewport.translateX += dx;
208
- this.viewport.translateY += dy;
209
- this.lastPointer = { x: e.clientX, y: e.clientY };
210
- this.applyViewport();
211
- }
212
- }
213
- handleMouseUp(e) {
214
- if (this.isDragging && this.draggedNodeId) {
215
- const data = this.nodeDataMap.get(this.draggedNodeId);
216
- if (data) {
217
- this.events.onNodeDragEnd?.(this.draggedNodeId, { ...data.position }, e);
218
- }
219
- }
220
- this.isDragging = false;
221
- this.draggedNodeId = null;
222
- this.isPanning = false;
223
- }
224
- handleMouseLeave(_e) {
225
- this.isPanning = false;
226
- // Don't cancel drag on mouse leave to allow dragging outside SVG
227
- }
228
- // ============================================
229
- // Node Event Handlers
230
- // ============================================
231
- attachNodeHandlers(element, nodeId) {
232
- const data = this.nodeDataMap.get(nodeId);
233
- if (!data)
234
- return;
235
- element.addEventListener('click', (e) => {
236
- if (!this.isDragging) {
237
- this.events.onNodeClick?.(nodeId, data, e);
238
- }
239
- });
240
- element.addEventListener('dblclick', (e) => {
241
- this.events.onNodeDoubleClick?.(nodeId, data, e);
242
- });
243
- element.addEventListener('mouseenter', (e) => {
244
- this.events.onNodeMouseEnter?.(nodeId, data, e);
245
- });
246
- element.addEventListener('mouseleave', (e) => {
247
- this.events.onNodeMouseLeave?.(nodeId, data, e);
248
- });
249
- // Set cursor for draggable nodes
250
- if (this.options.enableNodeDrag) {
251
- element.style.cursor = 'grab';
252
- }
253
- }
254
- detachNodeHandlers(_element) {
255
- // Event listeners are automatically removed when element is removed from DOM
256
- // For explicit cleanup, we'd need to store references to the handlers
257
- }
258
- // ============================================
259
- // Link Event Handlers
260
- // ============================================
261
- attachLinkHandlers(element, linkId) {
262
- const data = this.linkDataMap.get(linkId);
263
- if (!data)
264
- return;
265
- element.addEventListener('click', (e) => {
266
- this.events.onLinkClick?.(linkId, data, e);
267
- });
268
- }
269
- detachLinkHandlers(_element) {
270
- // Event listeners are automatically removed when element is removed from DOM
271
- }
272
- // ============================================
273
- // Helpers
274
- // ============================================
275
- getPointerPosition(e) {
276
- const rect = this.svg.getBoundingClientRect();
277
- return {
278
- x: e.clientX - rect.left,
279
- y: e.clientY - rect.top,
280
- };
281
- }
282
- findParentNodeGroup(element) {
283
- let current = element;
284
- while (current && current !== this.svg) {
285
- if (current instanceof SVGGElement && current.hasAttribute('data-node-id')) {
286
- return current;
287
- }
288
- current = current.parentElement;
289
- }
290
- return null;
291
- }
292
- isBackground(element) {
293
- return element === this.svg || element.classList.contains('background');
294
- }
295
- }
296
- //# sourceMappingURL=interaction.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"interaction.js","sourceRoot":"","sources":["../../../src/renderer/svg-dom/interaction.ts"],"names":[],"mappings":"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"}
@@ -1,47 +0,0 @@
1
- /**
2
- * SVG DOM Renderer
3
- * Renders RenderModel to SVG DOM elements with interactive features
4
- */
5
- import type { RenderModel, RenderEvents, ViewportState } from '../render-model/types.js';
6
- import type { InteractiveRenderer, RendererOptions } from '../renderer-types.js';
7
- import { type InteractionOptions } from './interaction.js';
8
- export interface SVGDOMRendererOptions extends RendererOptions {
9
- /** Interaction options */
10
- interaction?: InteractionOptions;
11
- /** Container element to attach to */
12
- container?: HTMLElement;
13
- }
14
- export declare class SVGDOMRenderer implements InteractiveRenderer {
15
- private options;
16
- private svg;
17
- private contentGroup;
18
- private controller;
19
- private currentModel;
20
- private defsElement;
21
- private styleElement;
22
- private subgraphLayer;
23
- private linkLayer;
24
- private nodeLayer;
25
- constructor(options?: SVGDOMRendererOptions);
26
- render(model: RenderModel): SVGSVGElement;
27
- update(model: RenderModel, changedIds: string[]): void;
28
- dispose(): void;
29
- attachEvents(events: RenderEvents): void;
30
- detachEvents(): void;
31
- setViewport(viewport: ViewportState): void;
32
- getViewport(): ViewportState;
33
- fitToContainer(_container: HTMLElement, padding?: number): void;
34
- resetViewport(): void;
35
- getNodeElement(nodeId: string): SVGGElement | null;
36
- getLinkElement(linkId: string): SVGGElement | null;
37
- getSVGElement(): SVGSVGElement | null;
38
- getContentGroup(): SVGGElement | null;
39
- private renderSubgraphs;
40
- private renderLinks;
41
- private renderNodes;
42
- }
43
- /**
44
- * Create a new SVG DOM renderer
45
- */
46
- export declare function createSVGDOMRenderer(options?: SVGDOMRendererOptions): SVGDOMRenderer;
47
- //# sourceMappingURL=renderer.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../../../src/renderer/svg-dom/renderer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AACxF,OAAO,KAAK,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAChF,OAAO,EAAyB,KAAK,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AAOjF,MAAM,WAAW,qBAAsB,SAAQ,eAAe;IAC5D,0BAA0B;IAC1B,WAAW,CAAC,EAAE,kBAAkB,CAAA;IAChC,qCAAqC;IACrC,SAAS,CAAC,EAAE,WAAW,CAAA;CACxB;AAMD,qBAAa,cAAe,YAAW,mBAAmB;IACxD,OAAO,CAAC,OAAO,CAAuB;IACtC,OAAO,CAAC,GAAG,CAA6B;IACxC,OAAO,CAAC,YAAY,CAA2B;IAC/C,OAAO,CAAC,UAAU,CAAqC;IACvD,OAAO,CAAC,YAAY,CAA2B;IAG/C,OAAO,CAAC,WAAW,CAA8B;IACjD,OAAO,CAAC,YAAY,CAA+B;IACnD,OAAO,CAAC,aAAa,CAA2B;IAChD,OAAO,CAAC,SAAS,CAA2B;IAC5C,OAAO,CAAC,SAAS,CAA2B;gBAEhC,OAAO,GAAE,qBAA0B;IAQ/C,MAAM,CAAC,KAAK,EAAE,WAAW,GAAG,aAAa;IAmEzC,MAAM,CAAC,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,IAAI;IA0BtD,OAAO,IAAI,IAAI;IAcf,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI;IAIxC,YAAY,IAAI,IAAI;IAIpB,WAAW,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI;IAI1C,WAAW,IAAI,aAAa;IAI5B,cAAc,CAAC,UAAU,EAAE,WAAW,EAAE,OAAO,SAAK,GAAG,IAAI;IAK3D,aAAa,IAAI,IAAI;IAIrB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI;IAIlD,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI;IAQlD,aAAa,IAAI,aAAa,GAAG,IAAI;IAIrC,eAAe,IAAI,WAAW,GAAG,IAAI;IAQrC,OAAO,CAAC,eAAe;IASvB,OAAO,CAAC,WAAW;IAUnB,OAAO,CAAC,WAAW;CASpB;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,CAAC,EAAE,qBAAqB,GAAG,cAAc,CAEpF"}
@@ -1,188 +0,0 @@
1
- /**
2
- * SVG DOM Renderer
3
- * Renders RenderModel to SVG DOM elements with interactive features
4
- */
5
- import { InteractionController } from './interaction.js';
6
- import { buildDefs, buildNode, buildLink, buildSubgraph, updateNode, updateLink, SVG_NS } from './builders/index.js';
7
- // ============================================
8
- // SVG DOM Renderer
9
- // ============================================
10
- export class SVGDOMRenderer {
11
- options;
12
- svg = null;
13
- contentGroup = null;
14
- controller = null;
15
- currentModel = null;
16
- // Layer groups
17
- defsElement = null;
18
- styleElement = null;
19
- subgraphLayer = null;
20
- linkLayer = null;
21
- nodeLayer = null;
22
- constructor(options = {}) {
23
- this.options = options;
24
- }
25
- // ============================================
26
- // Renderer Implementation
27
- // ============================================
28
- render(model) {
29
- this.currentModel = model;
30
- // Create SVG element
31
- this.svg = document.createElementNS(SVG_NS, 'svg');
32
- this.svg.setAttribute('xmlns', SVG_NS);
33
- this.svg.setAttribute('viewBox', model.viewBox);
34
- // Use 100% to fill container, viewBox handles scaling
35
- this.svg.setAttribute('width', '100%');
36
- this.svg.setAttribute('height', '100%');
37
- this.svg.style.background = model.backgroundColor;
38
- this.svg.style.display = 'block';
39
- // Defs
40
- this.defsElement = buildDefs(model.defs);
41
- this.svg.appendChild(this.defsElement);
42
- // Styles
43
- this.styleElement = document.createElementNS(SVG_NS, 'style');
44
- this.styleElement.textContent = model.styles;
45
- this.svg.appendChild(this.styleElement);
46
- // Background for click detection
47
- const background = document.createElementNS(SVG_NS, 'rect');
48
- background.setAttribute('class', 'background');
49
- background.setAttribute('x', String(model.bounds.x));
50
- background.setAttribute('y', String(model.bounds.y));
51
- background.setAttribute('width', String(model.bounds.width));
52
- background.setAttribute('height', String(model.bounds.height));
53
- background.setAttribute('fill', 'transparent');
54
- this.svg.appendChild(background);
55
- // Content group (for viewport transforms)
56
- this.contentGroup = document.createElementNS(SVG_NS, 'g');
57
- this.contentGroup.setAttribute('class', 'content');
58
- this.svg.appendChild(this.contentGroup);
59
- // Layer groups
60
- this.subgraphLayer = document.createElementNS(SVG_NS, 'g');
61
- this.subgraphLayer.setAttribute('class', 'subgraph-layer');
62
- this.contentGroup.appendChild(this.subgraphLayer);
63
- this.linkLayer = document.createElementNS(SVG_NS, 'g');
64
- this.linkLayer.setAttribute('class', 'link-layer');
65
- this.contentGroup.appendChild(this.linkLayer);
66
- this.nodeLayer = document.createElementNS(SVG_NS, 'g');
67
- this.nodeLayer.setAttribute('class', 'node-layer');
68
- this.contentGroup.appendChild(this.nodeLayer);
69
- // Render elements
70
- this.renderSubgraphs(model);
71
- this.renderLinks(model);
72
- this.renderNodes(model);
73
- // Setup interaction controller
74
- this.controller = new InteractionController(this.svg, this.contentGroup, this.options.interaction);
75
- this.controller.attach();
76
- // Attach to container if provided
77
- if (this.options.container) {
78
- this.options.container.appendChild(this.svg);
79
- }
80
- return this.svg;
81
- }
82
- update(model, changedIds) {
83
- if (!this.svg || !this.controller)
84
- return;
85
- this.currentModel = model;
86
- for (const id of changedIds) {
87
- // Check nodes
88
- const node = model.nodes.get(id);
89
- if (node && node.dirty) {
90
- const element = this.controller.getNodeElement(id);
91
- if (element) {
92
- updateNode(element, node);
93
- }
94
- }
95
- // Check links
96
- const link = model.links.get(id);
97
- if (link && link.dirty) {
98
- const element = this.controller.getLinkElement(id);
99
- if (element) {
100
- updateLink(element, link);
101
- }
102
- }
103
- }
104
- }
105
- dispose() {
106
- this.controller?.detach();
107
- this.controller?.clear();
108
- this.svg?.remove();
109
- this.svg = null;
110
- this.contentGroup = null;
111
- this.controller = null;
112
- this.currentModel = null;
113
- }
114
- // ============================================
115
- // Interactive Renderer Implementation
116
- // ============================================
117
- attachEvents(events) {
118
- this.controller?.setEvents(events);
119
- }
120
- detachEvents() {
121
- this.controller?.setEvents({});
122
- }
123
- setViewport(viewport) {
124
- this.controller?.setViewport(viewport);
125
- }
126
- getViewport() {
127
- return this.controller?.getViewport() ?? { scale: 1, translateX: 0, translateY: 0 };
128
- }
129
- fitToContainer(_container, padding = 40) {
130
- if (!this.currentModel || !this.controller)
131
- return;
132
- this.controller.fitToContent(this.currentModel.bounds, padding);
133
- }
134
- resetViewport() {
135
- this.controller?.resetViewport();
136
- }
137
- getNodeElement(nodeId) {
138
- return this.controller?.getNodeElement(nodeId) ?? null;
139
- }
140
- getLinkElement(linkId) {
141
- return this.controller?.getLinkElement(linkId) ?? null;
142
- }
143
- // ============================================
144
- // Public Utilities
145
- // ============================================
146
- getSVGElement() {
147
- return this.svg;
148
- }
149
- getContentGroup() {
150
- return this.contentGroup;
151
- }
152
- // ============================================
153
- // Private Render Methods
154
- // ============================================
155
- renderSubgraphs(model) {
156
- if (!this.subgraphLayer)
157
- return;
158
- for (const [, subgraph] of model.subgraphs) {
159
- const element = buildSubgraph(subgraph);
160
- this.subgraphLayer.appendChild(element);
161
- }
162
- }
163
- renderLinks(model) {
164
- if (!this.linkLayer || !this.controller)
165
- return;
166
- for (const [id, link] of model.links) {
167
- const element = buildLink(link);
168
- this.linkLayer.appendChild(element);
169
- this.controller.registerLink(id, element, link);
170
- }
171
- }
172
- renderNodes(model) {
173
- if (!this.nodeLayer || !this.controller)
174
- return;
175
- for (const [id, node] of model.nodes) {
176
- const element = buildNode(node);
177
- this.nodeLayer.appendChild(element);
178
- this.controller.registerNode(id, element, node);
179
- }
180
- }
181
- }
182
- /**
183
- * Create a new SVG DOM renderer
184
- */
185
- export function createSVGDOMRenderer(options) {
186
- return new SVGDOMRenderer(options);
187
- }
188
- //# sourceMappingURL=renderer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"renderer.js","sourceRoot":"","sources":["../../../src/renderer/svg-dom/renderer.ts"],"names":[],"mappings":"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"}
@@ -1,10 +0,0 @@
1
- /**
2
- * SVG Defs Builder
3
- * Renders shared definitions (icons, markers, filters)
4
- */
5
- import type { RenderDefs } from '../../render-model/types.js';
6
- /**
7
- * Render all defs as SVG string
8
- */
9
- export declare function renderDefs(defs: RenderDefs): string;
10
- //# sourceMappingURL=defs.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"defs.d.ts","sourceRoot":"","sources":["../../../../src/renderer/svg-string/builders/defs.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,UAAU,EAA0C,MAAM,6BAA6B,CAAA;AAErG;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CAoBnD"}
@@ -1,43 +0,0 @@
1
- /**
2
- * SVG Defs Builder
3
- * Renders shared definitions (icons, markers, filters)
4
- */
5
- /**
6
- * Render all defs as SVG string
7
- */
8
- export function renderDefs(defs) {
9
- const parts = ['<defs>'];
10
- // Icons as symbols
11
- for (const [, icon] of defs.icons) {
12
- parts.push(renderIconSymbol(icon));
13
- }
14
- // Markers (arrows)
15
- for (const [, marker] of defs.markers) {
16
- parts.push(renderMarker(marker));
17
- }
18
- // Filters (shadows, etc.)
19
- for (const [, filter] of defs.filters) {
20
- parts.push(renderFilter(filter));
21
- }
22
- parts.push('</defs>');
23
- return parts.join('\n');
24
- }
25
- /**
26
- * Render icon as SVG symbol
27
- */
28
- function renderIconSymbol(icon) {
29
- return `<symbol id="${icon.id}" viewBox="${icon.viewBox}">${icon.content}</symbol>`;
30
- }
31
- /**
32
- * Render marker (arrow)
33
- */
34
- function renderMarker(marker) {
35
- return `<marker id="${marker.id}" markerWidth="${marker.width}" markerHeight="${marker.height}" refX="${marker.refX}" refY="${marker.refY}" orient="${marker.orient}"><polygon points="0 0, ${marker.width} ${marker.refY}, 0 ${marker.height}" fill="${marker.fill}" /></marker>`;
36
- }
37
- /**
38
- * Render filter
39
- */
40
- function renderFilter(filter) {
41
- return `<filter id="${filter.id}" x="${filter.x}" y="${filter.y}" width="${filter.width}" height="${filter.height}">${filter.content}</filter>`;
42
- }
43
- //# sourceMappingURL=defs.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"defs.js","sourceRoot":"","sources":["../../../../src/renderer/svg-string/builders/defs.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,IAAgB;IACzC,MAAM,KAAK,GAAa,CAAC,QAAQ,CAAC,CAAA;IAElC,mBAAmB;IACnB,KAAK,MAAM,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QAClC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAA;IACpC,CAAC;IAED,mBAAmB;IACnB,KAAK,MAAM,CAAC,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACtC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAA;IAClC,CAAC;IAED,0BAA0B;IAC1B,KAAK,MAAM,CAAC,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACtC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAA;IAClC,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IACrB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACzB,CAAC;AAED;;GAEG;AACH,SAAS,gBAAgB,CAAC,IAAgB;IACxC,OAAO,eAAe,IAAI,CAAC,EAAE,cAAc,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,OAAO,WAAW,CAAA;AACrF,CAAC;AAED;;GAEG;AACH,SAAS,YAAY,CAAC,MAAoB;IACxC,OAAO,eAAe,MAAM,CAAC,EAAE,kBAAkB,MAAM,CAAC,KAAK,mBAAmB,MAAM,CAAC,MAAM,WAAW,MAAM,CAAC,IAAI,WAAW,MAAM,CAAC,IAAI,aAAa,MAAM,CAAC,MAAM,2BAA2B,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,OAAO,MAAM,CAAC,MAAM,WAAW,MAAM,CAAC,IAAI,eAAe,CAAA;AACpR,CAAC;AAED;;GAEG;AACH,SAAS,YAAY,CAAC,MAAoB;IACxC,OAAO,eAAe,MAAM,CAAC,EAAE,QAAQ,MAAM,CAAC,CAAC,QAAQ,MAAM,CAAC,CAAC,YAAY,MAAM,CAAC,KAAK,aAAa,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,OAAO,WAAW,CAAA;AACjJ,CAAC"}
@@ -1,10 +0,0 @@
1
- /**
2
- * SVG Link Builder
3
- * Renders RenderLink to SVG string
4
- */
5
- import type { RenderLink } from '../../render-model/types.js';
6
- /**
7
- * Render link as SVG group
8
- */
9
- export declare function renderLink(link: RenderLink): string;
10
- //# sourceMappingURL=link.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"link.d.ts","sourceRoot":"","sources":["../../../../src/renderer/svg-string/builders/link.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAmC,MAAM,6BAA6B,CAAA;AAG9F;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CAgCnD"}