@shumoku/core 0.1.0 → 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 (158) hide show
  1. package/README.md +56 -0
  2. package/dist/constants.d.ts +23 -0
  3. package/dist/constants.d.ts.map +1 -0
  4. package/dist/constants.js +25 -0
  5. package/dist/constants.js.map +1 -0
  6. package/dist/index.d.ts +1 -0
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/index.js +2 -0
  9. package/dist/index.js.map +1 -1
  10. package/dist/layout/hierarchical.d.ts +12 -39
  11. package/dist/layout/hierarchical.d.ts.map +1 -1
  12. package/dist/layout/hierarchical.js +697 -1015
  13. package/dist/layout/hierarchical.js.map +1 -1
  14. package/dist/models/types.d.ts +30 -0
  15. package/dist/models/types.d.ts.map +1 -1
  16. package/dist/models/types.js.map +1 -1
  17. package/dist/renderer/svg.d.ts +31 -5
  18. package/dist/renderer/svg.d.ts.map +1 -1
  19. package/dist/renderer/svg.js +312 -85
  20. package/dist/renderer/svg.js.map +1 -1
  21. package/package.json +1 -1
  22. package/src/constants.ts +35 -0
  23. package/src/index.ts +3 -0
  24. package/src/layout/hierarchical.ts +805 -1127
  25. package/src/models/types.ts +37 -0
  26. package/src/renderer/svg.ts +368 -88
  27. package/dist/renderer/components/index.d.ts +0 -8
  28. package/dist/renderer/components/index.d.ts.map +0 -1
  29. package/dist/renderer/components/index.js +0 -8
  30. package/dist/renderer/components/index.js.map +0 -1
  31. package/dist/renderer/components/link-renderer.d.ts +0 -11
  32. package/dist/renderer/components/link-renderer.d.ts.map +0 -1
  33. package/dist/renderer/components/link-renderer.js +0 -340
  34. package/dist/renderer/components/link-renderer.js.map +0 -1
  35. package/dist/renderer/components/node-renderer.d.ts +0 -14
  36. package/dist/renderer/components/node-renderer.d.ts.map +0 -1
  37. package/dist/renderer/components/node-renderer.js +0 -242
  38. package/dist/renderer/components/node-renderer.js.map +0 -1
  39. package/dist/renderer/components/port-renderer.d.ts +0 -8
  40. package/dist/renderer/components/port-renderer.d.ts.map +0 -1
  41. package/dist/renderer/components/port-renderer.js +0 -85
  42. package/dist/renderer/components/port-renderer.js.map +0 -1
  43. package/dist/renderer/components/subgraph-renderer.d.ts +0 -13
  44. package/dist/renderer/components/subgraph-renderer.d.ts.map +0 -1
  45. package/dist/renderer/components/subgraph-renderer.js +0 -85
  46. package/dist/renderer/components/subgraph-renderer.js.map +0 -1
  47. package/dist/renderer/icon-registry/index.d.ts +0 -6
  48. package/dist/renderer/icon-registry/index.d.ts.map +0 -1
  49. package/dist/renderer/icon-registry/index.js +0 -5
  50. package/dist/renderer/icon-registry/index.js.map +0 -1
  51. package/dist/renderer/icon-registry/registry.d.ts +0 -25
  52. package/dist/renderer/icon-registry/registry.d.ts.map +0 -1
  53. package/dist/renderer/icon-registry/registry.js +0 -85
  54. package/dist/renderer/icon-registry/registry.js.map +0 -1
  55. package/dist/renderer/icon-registry/types.d.ts +0 -44
  56. package/dist/renderer/icon-registry/types.d.ts.map +0 -1
  57. package/dist/renderer/icon-registry/types.js +0 -5
  58. package/dist/renderer/icon-registry/types.js.map +0 -1
  59. package/dist/renderer/render-model/builder.d.ts +0 -43
  60. package/dist/renderer/render-model/builder.d.ts.map +0 -1
  61. package/dist/renderer/render-model/builder.js +0 -646
  62. package/dist/renderer/render-model/builder.js.map +0 -1
  63. package/dist/renderer/render-model/index.d.ts +0 -6
  64. package/dist/renderer/render-model/index.d.ts.map +0 -1
  65. package/dist/renderer/render-model/index.js +0 -5
  66. package/dist/renderer/render-model/index.js.map +0 -1
  67. package/dist/renderer/render-model/types.d.ts +0 -216
  68. package/dist/renderer/render-model/types.d.ts.map +0 -1
  69. package/dist/renderer/render-model/types.js +0 -6
  70. package/dist/renderer/render-model/types.js.map +0 -1
  71. package/dist/renderer/renderer-types.d.ts +0 -55
  72. package/dist/renderer/renderer-types.d.ts.map +0 -1
  73. package/dist/renderer/renderer-types.js +0 -5
  74. package/dist/renderer/renderer-types.js.map +0 -1
  75. package/dist/renderer/svg-builder.d.ts +0 -152
  76. package/dist/renderer/svg-builder.d.ts.map +0 -1
  77. package/dist/renderer/svg-builder.js +0 -176
  78. package/dist/renderer/svg-builder.js.map +0 -1
  79. package/dist/renderer/svg-dom/builders/defs.d.ts +0 -10
  80. package/dist/renderer/svg-dom/builders/defs.d.ts.map +0 -1
  81. package/dist/renderer/svg-dom/builders/defs.js +0 -82
  82. package/dist/renderer/svg-dom/builders/defs.js.map +0 -1
  83. package/dist/renderer/svg-dom/builders/index.d.ts +0 -9
  84. package/dist/renderer/svg-dom/builders/index.d.ts.map +0 -1
  85. package/dist/renderer/svg-dom/builders/index.js +0 -9
  86. package/dist/renderer/svg-dom/builders/index.js.map +0 -1
  87. package/dist/renderer/svg-dom/builders/link.d.ts +0 -18
  88. package/dist/renderer/svg-dom/builders/link.d.ts.map +0 -1
  89. package/dist/renderer/svg-dom/builders/link.js +0 -188
  90. package/dist/renderer/svg-dom/builders/link.js.map +0 -1
  91. package/dist/renderer/svg-dom/builders/node.d.ts +0 -15
  92. package/dist/renderer/svg-dom/builders/node.d.ts.map +0 -1
  93. package/dist/renderer/svg-dom/builders/node.js +0 -262
  94. package/dist/renderer/svg-dom/builders/node.js.map +0 -1
  95. package/dist/renderer/svg-dom/builders/subgraph.d.ts +0 -14
  96. package/dist/renderer/svg-dom/builders/subgraph.d.ts.map +0 -1
  97. package/dist/renderer/svg-dom/builders/subgraph.js +0 -63
  98. package/dist/renderer/svg-dom/builders/subgraph.js.map +0 -1
  99. package/dist/renderer/svg-dom/builders/utils.d.ts +0 -40
  100. package/dist/renderer/svg-dom/builders/utils.d.ts.map +0 -1
  101. package/dist/renderer/svg-dom/builders/utils.js +0 -79
  102. package/dist/renderer/svg-dom/builders/utils.js.map +0 -1
  103. package/dist/renderer/svg-dom/index.d.ts +0 -9
  104. package/dist/renderer/svg-dom/index.d.ts.map +0 -1
  105. package/dist/renderer/svg-dom/index.js +0 -7
  106. package/dist/renderer/svg-dom/index.js.map +0 -1
  107. package/dist/renderer/svg-dom/interaction.d.ts +0 -69
  108. package/dist/renderer/svg-dom/interaction.d.ts.map +0 -1
  109. package/dist/renderer/svg-dom/interaction.js +0 -296
  110. package/dist/renderer/svg-dom/interaction.js.map +0 -1
  111. package/dist/renderer/svg-dom/renderer.d.ts +0 -47
  112. package/dist/renderer/svg-dom/renderer.d.ts.map +0 -1
  113. package/dist/renderer/svg-dom/renderer.js +0 -188
  114. package/dist/renderer/svg-dom/renderer.js.map +0 -1
  115. package/dist/renderer/svg-string/builders/defs.d.ts +0 -10
  116. package/dist/renderer/svg-string/builders/defs.d.ts.map +0 -1
  117. package/dist/renderer/svg-string/builders/defs.js +0 -43
  118. package/dist/renderer/svg-string/builders/defs.js.map +0 -1
  119. package/dist/renderer/svg-string/builders/link.d.ts +0 -10
  120. package/dist/renderer/svg-string/builders/link.d.ts.map +0 -1
  121. package/dist/renderer/svg-string/builders/link.js +0 -149
  122. package/dist/renderer/svg-string/builders/link.js.map +0 -1
  123. package/dist/renderer/svg-string/builders/node.d.ts +0 -10
  124. package/dist/renderer/svg-string/builders/node.d.ts.map +0 -1
  125. package/dist/renderer/svg-string/builders/node.js +0 -134
  126. package/dist/renderer/svg-string/builders/node.js.map +0 -1
  127. package/dist/renderer/svg-string/builders/subgraph.d.ts +0 -10
  128. package/dist/renderer/svg-string/builders/subgraph.d.ts.map +0 -1
  129. package/dist/renderer/svg-string/builders/subgraph.js +0 -59
  130. package/dist/renderer/svg-string/builders/subgraph.js.map +0 -1
  131. package/dist/renderer/svg-string/index.d.ts +0 -5
  132. package/dist/renderer/svg-string/index.d.ts.map +0 -1
  133. package/dist/renderer/svg-string/index.js +0 -5
  134. package/dist/renderer/svg-string/index.js.map +0 -1
  135. package/dist/renderer/svg-string/renderer.d.ts +0 -17
  136. package/dist/renderer/svg-string/renderer.d.ts.map +0 -1
  137. package/dist/renderer/svg-string/renderer.js +0 -53
  138. package/dist/renderer/svg-string/renderer.js.map +0 -1
  139. package/dist/renderer/text-measurer/browser-measurer.d.ts +0 -25
  140. package/dist/renderer/text-measurer/browser-measurer.d.ts.map +0 -1
  141. package/dist/renderer/text-measurer/browser-measurer.js +0 -85
  142. package/dist/renderer/text-measurer/browser-measurer.js.map +0 -1
  143. package/dist/renderer/text-measurer/fallback-measurer.d.ts +0 -22
  144. package/dist/renderer/text-measurer/fallback-measurer.d.ts.map +0 -1
  145. package/dist/renderer/text-measurer/fallback-measurer.js +0 -113
  146. package/dist/renderer/text-measurer/fallback-measurer.js.map +0 -1
  147. package/dist/renderer/text-measurer/index.d.ts +0 -13
  148. package/dist/renderer/text-measurer/index.d.ts.map +0 -1
  149. package/dist/renderer/text-measurer/index.js +0 -35
  150. package/dist/renderer/text-measurer/index.js.map +0 -1
  151. package/dist/renderer/text-measurer/types.d.ts +0 -30
  152. package/dist/renderer/text-measurer/types.d.ts.map +0 -1
  153. package/dist/renderer/text-measurer/types.js +0 -5
  154. package/dist/renderer/text-measurer/types.js.map +0 -1
  155. package/dist/renderer/theme.d.ts +0 -29
  156. package/dist/renderer/theme.d.ts.map +0 -1
  157. package/dist/renderer/theme.js +0 -80
  158. package/dist/renderer/theme.js.map +0 -1
@@ -1,176 +0,0 @@
1
- /**
2
- * SVG Builder - Type-safe SVG element construction
3
- */
4
- // ============================================
5
- // SVG Element Builder
6
- // ============================================
7
- export class SVGElement {
8
- tag;
9
- attrs;
10
- childElements = [];
11
- constructor(tag, attrs = {}) {
12
- this.tag = tag;
13
- this.attrs = {};
14
- for (const [key, value] of Object.entries(attrs)) {
15
- if (value !== undefined) {
16
- this.attrs[key] = value;
17
- }
18
- }
19
- }
20
- attr(name, value) {
21
- if (value !== undefined) {
22
- this.attrs[name] = value;
23
- }
24
- return this;
25
- }
26
- child(element) {
27
- this.childElements.push(element);
28
- return this;
29
- }
30
- children(...elements) {
31
- this.childElements.push(...elements);
32
- return this;
33
- }
34
- text(content) {
35
- this.childElements.push(escapeXml(content));
36
- return this;
37
- }
38
- toString() {
39
- const attrsStr = Object.entries(this.attrs)
40
- .map(([k, v]) => `${k}="${v}"`)
41
- .join(' ');
42
- if (this.childElements.length === 0) {
43
- return `<${this.tag}${attrsStr ? ' ' + attrsStr : ''} />`;
44
- }
45
- const childrenStr = this.childElements
46
- .map(c => (typeof c === 'string' ? c : c.toString()))
47
- .join('\n');
48
- return `<${this.tag}${attrsStr ? ' ' + attrsStr : ''}>${childrenStr}</${this.tag}>`;
49
- }
50
- }
51
- // ============================================
52
- // Builder Functions
53
- // ============================================
54
- /**
55
- * Convert typed attributes to generic record
56
- */
57
- function toAttrs(attrs) {
58
- return attrs;
59
- }
60
- export function svg(attrs) {
61
- return new SVGElement('svg', {
62
- xmlns: attrs.xmlns || 'http://www.w3.org/2000/svg',
63
- viewBox: attrs.viewBox,
64
- width: attrs.width,
65
- height: attrs.height,
66
- style: attrs.style,
67
- });
68
- }
69
- export function g(attrs = {}) {
70
- return new SVGElement('g', toAttrs(attrs));
71
- }
72
- export function rect(attrs) {
73
- return new SVGElement('rect', toAttrs(attrs));
74
- }
75
- export function circle(attrs) {
76
- return new SVGElement('circle', toAttrs(attrs));
77
- }
78
- export function ellipse(attrs) {
79
- return new SVGElement('ellipse', toAttrs(attrs));
80
- }
81
- export function line(attrs) {
82
- return new SVGElement('line', toAttrs(attrs));
83
- }
84
- export function path(attrs) {
85
- return new SVGElement('path', toAttrs(attrs));
86
- }
87
- export function polygon(attrs) {
88
- return new SVGElement('polygon', toAttrs(attrs));
89
- }
90
- export function text(attrs, content) {
91
- const el = new SVGElement('text', toAttrs(attrs));
92
- if (content) {
93
- el.text(content);
94
- }
95
- return el;
96
- }
97
- export function defs() {
98
- return new SVGElement('defs');
99
- }
100
- export function marker(attrs) {
101
- return new SVGElement('marker', toAttrs(attrs));
102
- }
103
- export function filter(attrs) {
104
- return new SVGElement('filter', toAttrs(attrs));
105
- }
106
- export function style(css) {
107
- return new SVGElement('style').child(css);
108
- }
109
- export function feDropShadow(attrs) {
110
- return new SVGElement('feDropShadow', toAttrs(attrs));
111
- }
112
- // ============================================
113
- // Path Helpers
114
- // ============================================
115
- export class PathBuilder {
116
- commands = [];
117
- moveTo(x, y) {
118
- this.commands.push(`M ${x} ${y}`);
119
- return this;
120
- }
121
- lineTo(x, y) {
122
- this.commands.push(`L ${x} ${y}`);
123
- return this;
124
- }
125
- curveTo(cp1x, cp1y, cp2x, cp2y, x, y) {
126
- this.commands.push(`C ${cp1x} ${cp1y}, ${cp2x} ${cp2y}, ${x} ${y}`);
127
- return this;
128
- }
129
- quadTo(cpx, cpy, x, y) {
130
- this.commands.push(`Q ${cpx} ${cpy}, ${x} ${y}`);
131
- return this;
132
- }
133
- arcTo(rx, ry, rotation, largeArc, sweep, x, y) {
134
- this.commands.push(`A ${rx} ${ry} ${rotation} ${largeArc ? 1 : 0} ${sweep ? 1 : 0} ${x} ${y}`);
135
- return this;
136
- }
137
- closePath() {
138
- this.commands.push('Z');
139
- return this;
140
- }
141
- toString() {
142
- return this.commands.join(' ');
143
- }
144
- }
145
- export function pathBuilder() {
146
- return new PathBuilder();
147
- }
148
- // ============================================
149
- // Utilities
150
- // ============================================
151
- export function escapeXml(str) {
152
- return str
153
- .replace(/&/g, '&amp;')
154
- .replace(/</g, '&lt;')
155
- .replace(/>/g, '&gt;')
156
- .replace(/"/g, '&quot;')
157
- .replace(/'/g, '&#39;');
158
- }
159
- /**
160
- * Create points string for polygon
161
- */
162
- export function points(...coords) {
163
- return coords.map(([x, y]) => `${x},${y}`).join(' ');
164
- }
165
- /**
166
- * Calculate bezier curve midpoint at t=0.5
167
- */
168
- export function bezierMidpoint(p0, p1, p2, p3) {
169
- const t = 0.5;
170
- const mt = 1 - t;
171
- return {
172
- x: mt * mt * mt * p0.x + 3 * mt * mt * t * p1.x + 3 * mt * t * t * p2.x + t * t * t * p3.x,
173
- y: mt * mt * mt * p0.y + 3 * mt * mt * t * p1.y + 3 * mt * t * t * p2.y + t * t * t * p3.y,
174
- };
175
- }
176
- //# sourceMappingURL=svg-builder.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"svg-builder.js","sourceRoot":"","sources":["../../src/renderer/svg-builder.ts"],"names":[],"mappings":"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"}
@@ -1,10 +0,0 @@
1
- /**
2
- * SVG DOM Defs Builder
3
- * Creates SVG defs element with icons, markers, and filters
4
- */
5
- import type { RenderDefs } from '../../render-model/types.js';
6
- /**
7
- * Build defs element
8
- */
9
- export declare function buildDefs(defs: RenderDefs): SVGDefsElement;
10
- //# sourceMappingURL=defs.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"defs.d.ts","sourceRoot":"","sources":["../../../../src/renderer/svg-dom/builders/defs.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,UAAU,EAA0C,MAAM,6BAA6B,CAAA;AAGrG;;GAEG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,UAAU,GAAG,cAAc,CAmB1D"}
@@ -1,82 +0,0 @@
1
- /**
2
- * SVG DOM Defs Builder
3
- * Creates SVG defs element with icons, markers, and filters
4
- */
5
- import { SVG_NS } from './utils.js';
6
- /**
7
- * Build defs element
8
- */
9
- export function buildDefs(defs) {
10
- const defsEl = document.createElementNS(SVG_NS, 'defs');
11
- // Icons as symbols
12
- for (const [, icon] of defs.icons) {
13
- defsEl.appendChild(buildSymbol(icon));
14
- }
15
- // Markers
16
- for (const [, marker] of defs.markers) {
17
- defsEl.appendChild(buildMarker(marker));
18
- }
19
- // Filters
20
- for (const [, filter] of defs.filters) {
21
- defsEl.appendChild(buildFilter(filter));
22
- }
23
- return defsEl;
24
- }
25
- /**
26
- * Build icon as symbol
27
- */
28
- function buildSymbol(icon) {
29
- const symbol = document.createElementNS(SVG_NS, 'symbol');
30
- symbol.setAttribute('id', icon.id);
31
- symbol.setAttribute('viewBox', icon.viewBox);
32
- // Parse and append icon content
33
- const temp = document.createElementNS(SVG_NS, 'svg');
34
- temp.innerHTML = icon.content;
35
- while (temp.firstChild) {
36
- symbol.appendChild(temp.firstChild);
37
- }
38
- return symbol;
39
- }
40
- /**
41
- * Build marker
42
- */
43
- function buildMarker(marker) {
44
- const markerEl = document.createElementNS(SVG_NS, 'marker');
45
- markerEl.setAttribute('id', marker.id);
46
- markerEl.setAttribute('markerWidth', String(marker.width));
47
- markerEl.setAttribute('markerHeight', String(marker.height));
48
- markerEl.setAttribute('refX', String(marker.refX));
49
- markerEl.setAttribute('refY', String(marker.refY));
50
- markerEl.setAttribute('orient', String(marker.orient));
51
- markerEl.setAttribute('markerUnits', 'strokeWidth');
52
- // Parse and append marker content
53
- const temp = document.createElementNS(SVG_NS, 'svg');
54
- temp.innerHTML = marker.content;
55
- while (temp.firstChild) {
56
- const child = temp.firstChild;
57
- if (child.setAttribute) {
58
- child.setAttribute('fill', marker.fill);
59
- }
60
- markerEl.appendChild(child);
61
- }
62
- return markerEl;
63
- }
64
- /**
65
- * Build filter
66
- */
67
- function buildFilter(filter) {
68
- const filterEl = document.createElementNS(SVG_NS, 'filter');
69
- filterEl.setAttribute('id', filter.id);
70
- filterEl.setAttribute('x', filter.x);
71
- filterEl.setAttribute('y', filter.y);
72
- filterEl.setAttribute('width', filter.width);
73
- filterEl.setAttribute('height', filter.height);
74
- // Parse and append filter content
75
- const temp = document.createElementNS(SVG_NS, 'svg');
76
- temp.innerHTML = filter.content;
77
- while (temp.firstChild) {
78
- filterEl.appendChild(temp.firstChild);
79
- }
80
- return filterEl;
81
- }
82
- //# sourceMappingURL=defs.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"defs.js","sourceRoot":"","sources":["../../../../src/renderer/svg-dom/builders/defs.ts"],"names":[],"mappings":"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"}
@@ -1,9 +0,0 @@
1
- /**
2
- * SVG DOM Builders
3
- */
4
- export { buildNode, updateNode } from './node.js';
5
- export { buildLink, updateLink, updateLinkPath } from './link.js';
6
- export { buildSubgraph, updateSubgraph } from './subgraph.js';
7
- export { buildDefs } from './defs.js';
8
- export { createElement, createText, createUse, applyStyle, SVG_NS } from './utils.js';
9
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/renderer/svg-dom/builders/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AACjD,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AACjE,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAC7D,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AACrC,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA"}
@@ -1,9 +0,0 @@
1
- /**
2
- * SVG DOM Builders
3
- */
4
- export { buildNode, updateNode } from './node.js';
5
- export { buildLink, updateLink, updateLinkPath } from './link.js';
6
- export { buildSubgraph, updateSubgraph } from './subgraph.js';
7
- export { buildDefs } from './defs.js';
8
- export { createElement, createText, createUse, applyStyle, SVG_NS } from './utils.js';
9
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/renderer/svg-dom/builders/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AACjD,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AACjE,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAC7D,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AACrC,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA"}
@@ -1,18 +0,0 @@
1
- /**
2
- * SVG DOM Link Builder
3
- * Creates SVG group element for a link
4
- */
5
- import type { RenderLink, Point } from '../../render-model/types.js';
6
- /**
7
- * Build link group element
8
- */
9
- export declare function buildLink(link: RenderLink): SVGGElement;
10
- /**
11
- * Update existing link element
12
- */
13
- export declare function updateLink(element: SVGGElement, link: RenderLink): void;
14
- /**
15
- * Update link path when connected nodes move
16
- */
17
- export declare function updateLinkPath(element: SVGGElement, newPoints: Point[]): void;
18
- //# sourceMappingURL=link.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"link.d.ts","sourceRoot":"","sources":["../../../../src/renderer/svg-dom/builders/link.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAe,KAAK,EAAE,MAAM,6BAA6B,CAAA;AAGjF;;GAEG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,UAAU,GAAG,WAAW,CA6BvD;AAoJD;;GAEG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,UAAU,GAAG,IAAI,CAUvE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,WAAW,EACpB,SAAS,EAAE,KAAK,EAAE,GACjB,IAAI,CAMN"}
@@ -1,188 +0,0 @@
1
- /**
2
- * SVG DOM Link Builder
3
- * Creates SVG group element for a link
4
- */
5
- import { createElement, createText, applyStyle, SVG_NS } from './utils.js';
6
- /**
7
- * Build link group element
8
- */
9
- export function buildLink(link) {
10
- const group = createElement('g');
11
- group.setAttribute('class', link.classes.join(' '));
12
- group.setAttribute('data-link-id', link.id);
13
- // Data attributes
14
- for (const [key, value] of Object.entries(link.dataAttributes)) {
15
- group.setAttribute(key, value);
16
- }
17
- // Link lines
18
- buildLinkLines(group, link);
19
- // Center labels
20
- for (const label of link.labels) {
21
- group.appendChild(buildCenterLabel(label));
22
- }
23
- // From endpoint labels
24
- for (const label of link.fromLabels) {
25
- group.appendChild(buildEndpointLabel(label));
26
- }
27
- // To endpoint labels
28
- for (const label of link.toLabels) {
29
- group.appendChild(buildEndpointLabel(label));
30
- }
31
- return group;
32
- }
33
- /**
34
- * Build link lines with bandwidth support
35
- */
36
- function buildLinkLines(group, link) {
37
- const { pathData, style, markerStart, markerEnd, lineCount, points } = link;
38
- if (lineCount === 1) {
39
- // Single line
40
- const path = buildPath(pathData, style, markerStart, markerEnd);
41
- group.appendChild(path);
42
- }
43
- else {
44
- // Multiple parallel lines for bandwidth visualization
45
- const lineSpacing = 3;
46
- const offsets = calculateLineOffsets(lineCount, lineSpacing);
47
- for (const offset of offsets) {
48
- const offsetPoints = offsetPointsPerp(points, offset);
49
- const offsetPathData = generatePathData(offsetPoints);
50
- const path = buildPath(offsetPathData, style, undefined, undefined);
51
- group.appendChild(path);
52
- }
53
- }
54
- }
55
- /**
56
- * Build path element
57
- */
58
- function buildPath(d, style, markerStart, markerEnd) {
59
- const path = createElement('path', {
60
- d,
61
- fill: 'none',
62
- });
63
- path.setAttribute('class', 'link');
64
- if (style.stroke)
65
- path.setAttribute('stroke', style.stroke);
66
- if (style.strokeWidth)
67
- path.setAttribute('stroke-width', String(style.strokeWidth));
68
- if (style.strokeDasharray)
69
- path.setAttribute('stroke-dasharray', style.strokeDasharray);
70
- if (markerStart)
71
- path.setAttribute('marker-start', markerStart);
72
- if (markerEnd)
73
- path.setAttribute('marker-end', markerEnd);
74
- return path;
75
- }
76
- /**
77
- * Build center label
78
- */
79
- function buildCenterLabel(label) {
80
- return createText(label.text, label.position.x, label.position.y, {
81
- className: 'link-label',
82
- fontFamily: label.textStyle.fontFamily,
83
- fontSize: label.textStyle.fontSize,
84
- fill: label.textStyle.fill,
85
- textAnchor: label.textStyle.textAnchor,
86
- });
87
- }
88
- /**
89
- * Build endpoint label with background
90
- */
91
- function buildEndpointLabel(label) {
92
- const group = document.createElementNS(SVG_NS, 'g');
93
- group.setAttribute('class', 'endpoint-label-group');
94
- // Background
95
- if (label.background) {
96
- const bg = createElement('rect', {
97
- x: label.background.bounds.x,
98
- y: label.background.bounds.y,
99
- width: label.background.bounds.width,
100
- height: label.background.bounds.height,
101
- rx: label.background.cornerRadius,
102
- ry: label.background.cornerRadius,
103
- });
104
- applyStyle(bg, label.background.style);
105
- group.appendChild(bg);
106
- }
107
- // Text
108
- const text = createText(label.text, label.position.x, label.position.y, {
109
- className: 'endpoint-label',
110
- fontFamily: label.textStyle.fontFamily,
111
- fontSize: label.textStyle.fontSize,
112
- fill: label.textStyle.fill,
113
- textAnchor: label.textStyle.textAnchor,
114
- });
115
- group.appendChild(text);
116
- return group;
117
- }
118
- /**
119
- * Calculate line offsets for parallel lines
120
- */
121
- function calculateLineOffsets(lineCount, spacing) {
122
- const offsets = [];
123
- const totalWidth = (lineCount - 1) * spacing;
124
- const startOffset = -totalWidth / 2;
125
- for (let i = 0; i < lineCount; i++) {
126
- offsets.push(startOffset + i * spacing);
127
- }
128
- return offsets;
129
- }
130
- /**
131
- * Offset points perpendicular to the line direction
132
- */
133
- function offsetPointsPerp(points, offset) {
134
- if (points.length < 2)
135
- return points;
136
- const dx = points[points.length - 1].x - points[0].x;
137
- const dy = points[points.length - 1].y - points[0].y;
138
- const len = Math.sqrt(dx * dx + dy * dy);
139
- if (len === 0)
140
- return points;
141
- const perpX = -dy / len;
142
- const perpY = dx / len;
143
- return points.map(p => ({
144
- x: p.x + perpX * offset,
145
- y: p.y + perpY * offset,
146
- }));
147
- }
148
- /**
149
- * Generate path data from points
150
- */
151
- function generatePathData(points) {
152
- if (points.length === 4) {
153
- // Bezier curve
154
- return `M ${points[0].x} ${points[0].y} C ${points[1].x} ${points[1].y}, ${points[2].x} ${points[2].y}, ${points[3].x} ${points[3].y}`;
155
- }
156
- else if (points.length === 2) {
157
- // Straight line
158
- return `M ${points[0].x} ${points[0].y} L ${points[1].x} ${points[1].y}`;
159
- }
160
- else {
161
- // Polyline
162
- return points.map((p, i) => `${i === 0 ? 'M' : 'L'} ${p.x} ${p.y}`).join(' ');
163
- }
164
- }
165
- /**
166
- * Update existing link element
167
- */
168
- export function updateLink(element, link) {
169
- // Update path
170
- const path = element.querySelector('.link');
171
- if (path) {
172
- path.setAttribute('d', link.pathData);
173
- applyStyle(path, link.style);
174
- }
175
- // Mark as not dirty
176
- link.dirty = false;
177
- }
178
- /**
179
- * Update link path when connected nodes move
180
- */
181
- export function updateLinkPath(element, newPoints) {
182
- const path = element.querySelector('.link');
183
- if (path) {
184
- const pathData = generatePathData(newPoints);
185
- path.setAttribute('d', pathData);
186
- }
187
- }
188
- //# sourceMappingURL=link.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"link.js","sourceRoot":"","sources":["../../../../src/renderer/svg-dom/builders/link.ts"],"names":[],"mappings":"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"}
@@ -1,15 +0,0 @@
1
- /**
2
- * SVG DOM Node Builder
3
- * Creates SVG group element for a node
4
- */
5
- import type { RenderNode } from '../../render-model/types.js';
6
- /**
7
- * Build node group element
8
- * Uses absolute coordinates (no transform) to match svg-string renderer
9
- */
10
- export declare function buildNode(node: RenderNode): SVGGElement;
11
- /**
12
- * Update existing node element with new data
13
- */
14
- export declare function updateNode(element: SVGGElement, node: RenderNode): void;
15
- //# sourceMappingURL=node.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../../../src/renderer/svg-dom/builders/node.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,UAAU,EAA4B,MAAM,6BAA6B,CAAA;AAGvF;;;GAGG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,UAAU,GAAG,WAAW,CA0CvD;AA8OD;;GAEG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,UAAU,GAAG,IAAI,CAWvE"}