@shumoku/renderer 0.2.3 → 0.2.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,210 @@
1
+ /**
2
+ * Navigation UI for hierarchical network diagrams
3
+ * Provides breadcrumb, tabs, and back button for sheet navigation
4
+ */
5
+ /**
6
+ * Generate breadcrumb HTML
7
+ */
8
+ export function generateBreadcrumb(state) {
9
+ const items = state.breadcrumb.map((id, index) => {
10
+ const isLast = index === state.breadcrumb.length - 1;
11
+ const label = id === 'root' ? 'Overview' : (state.sheets.get(id)?.label ?? id);
12
+ if (isLast) {
13
+ return `<span class="breadcrumb-current">${escapeHtml(label)}</span>`;
14
+ }
15
+ return `<button class="breadcrumb-item" data-sheet="${escapeHtml(id)}">${escapeHtml(label)}</button>`;
16
+ });
17
+ return `<nav class="breadcrumb">${items.join('<span class="breadcrumb-sep">/</span>')}</nav>`;
18
+ }
19
+ /**
20
+ * Generate tab navigation HTML for sibling sheets
21
+ */
22
+ export function generateTabs(state, siblingIds) {
23
+ if (siblingIds.length <= 1)
24
+ return '';
25
+ const tabs = siblingIds.map((id) => {
26
+ const info = state.sheets.get(id);
27
+ const label = info?.label ?? id;
28
+ const isActive = id === state.currentSheet;
29
+ return `<button class="tab ${isActive ? 'active' : ''}" data-sheet="${escapeHtml(id)}">${escapeHtml(label)}</button>`;
30
+ });
31
+ return `<div class="tabs">${tabs.join('')}</div>`;
32
+ }
33
+ /**
34
+ * Generate back button HTML
35
+ */
36
+ export function generateBackButton(state) {
37
+ if (state.breadcrumb.length <= 1)
38
+ return '';
39
+ const parentId = state.breadcrumb[state.breadcrumb.length - 2];
40
+ const parentLabel = parentId === 'root' ? 'Overview' : (state.sheets.get(parentId)?.label ?? parentId);
41
+ return `<button class="back-btn" data-sheet="${escapeHtml(parentId)}">
42
+ <svg width="16" height="16" fill="none" stroke="currentColor" viewBox="0 0 24 24">
43
+ <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15 19l-7-7 7-7"/>
44
+ </svg>
45
+ ${escapeHtml(parentLabel)}
46
+ </button>`;
47
+ }
48
+ /**
49
+ * Generate complete navigation toolbar HTML
50
+ */
51
+ export function generateNavigationToolbar(state, siblingIds = []) {
52
+ const breadcrumb = generateBreadcrumb(state);
53
+ const backBtn = generateBackButton(state);
54
+ const tabs = generateTabs(state, siblingIds);
55
+ return `<div class="nav-toolbar">
56
+ <div class="nav-row">
57
+ ${backBtn}
58
+ ${breadcrumb}
59
+ </div>
60
+ ${tabs}
61
+ </div>`;
62
+ }
63
+ /**
64
+ * Get CSS styles for navigation components
65
+ */
66
+ export function getNavigationStyles() {
67
+ return `
68
+ .nav-toolbar {
69
+ padding: 8px 16px;
70
+ background: white;
71
+ border-bottom: 1px solid #e5e5e5;
72
+ }
73
+ .nav-row {
74
+ display: flex;
75
+ align-items: center;
76
+ gap: 12px;
77
+ }
78
+ .back-btn {
79
+ display: flex;
80
+ align-items: center;
81
+ gap: 4px;
82
+ padding: 6px 12px;
83
+ border: 1px solid #e5e5e5;
84
+ background: white;
85
+ border-radius: 6px;
86
+ cursor: pointer;
87
+ font-size: 13px;
88
+ color: #555;
89
+ transition: all 0.15s;
90
+ }
91
+ .back-btn:hover {
92
+ background: #f5f5f5;
93
+ border-color: #ccc;
94
+ }
95
+ .breadcrumb {
96
+ display: flex;
97
+ align-items: center;
98
+ gap: 4px;
99
+ font-size: 13px;
100
+ }
101
+ .breadcrumb-item {
102
+ background: none;
103
+ border: none;
104
+ color: #0066cc;
105
+ cursor: pointer;
106
+ padding: 4px 8px;
107
+ border-radius: 4px;
108
+ }
109
+ .breadcrumb-item:hover {
110
+ background: #f0f7ff;
111
+ }
112
+ .breadcrumb-current {
113
+ color: #333;
114
+ font-weight: 500;
115
+ }
116
+ .breadcrumb-sep {
117
+ color: #999;
118
+ }
119
+ .tabs {
120
+ display: flex;
121
+ gap: 4px;
122
+ margin-top: 8px;
123
+ border-bottom: 1px solid #e5e5e5;
124
+ padding-bottom: 0;
125
+ }
126
+ .tab {
127
+ padding: 8px 16px;
128
+ border: none;
129
+ background: none;
130
+ cursor: pointer;
131
+ font-size: 13px;
132
+ color: #666;
133
+ border-bottom: 2px solid transparent;
134
+ margin-bottom: -1px;
135
+ transition: all 0.15s;
136
+ }
137
+ .tab:hover {
138
+ color: #333;
139
+ background: #f5f5f5;
140
+ }
141
+ .tab.active {
142
+ color: #0066cc;
143
+ border-bottom-color: #0066cc;
144
+ font-weight: 500;
145
+ }
146
+ `;
147
+ }
148
+ /**
149
+ * Get JavaScript code for navigation event handling
150
+ */
151
+ export function getNavigationScript() {
152
+ return `
153
+ (function() {
154
+ function navigateToSheet(sheetId) {
155
+ // Dispatch custom event for sheet navigation
156
+ var event = new CustomEvent('shumoku:navigate', {
157
+ detail: { sheetId: sheetId },
158
+ bubbles: true
159
+ });
160
+ document.dispatchEvent(event);
161
+
162
+ // For standalone HTML, show alert (sheets are not embedded yet)
163
+ console.log('[Shumoku] Navigate to sheet:', sheetId);
164
+ alert('Navigate to: ' + sheetId + '\\n\\nNote: Multi-sheet navigation requires embedded sheets.');
165
+ }
166
+
167
+ // Listen for navigation events from subgraph clicks
168
+ document.addEventListener('shumoku:navigate', function(e) {
169
+ var sheetId = e.detail && e.detail.sheetId;
170
+ if (sheetId) {
171
+ console.log('[Shumoku] Subgraph clicked, sheet:', sheetId);
172
+ alert('Navigate to: ' + sheetId + '\\n\\nNote: Multi-sheet navigation requires embedded sheets.');
173
+ }
174
+ });
175
+
176
+ // Handle breadcrumb clicks
177
+ document.querySelectorAll('.breadcrumb-item').forEach(function(btn) {
178
+ btn.addEventListener('click', function() {
179
+ var sheetId = this.getAttribute('data-sheet');
180
+ if (sheetId) navigateToSheet(sheetId);
181
+ });
182
+ });
183
+
184
+ // Handle back button clicks
185
+ document.querySelectorAll('.back-btn').forEach(function(btn) {
186
+ btn.addEventListener('click', function() {
187
+ var sheetId = this.getAttribute('data-sheet');
188
+ if (sheetId) navigateToSheet(sheetId);
189
+ });
190
+ });
191
+
192
+ // Handle tab clicks
193
+ document.querySelectorAll('.tab').forEach(function(btn) {
194
+ btn.addEventListener('click', function() {
195
+ var sheetId = this.getAttribute('data-sheet');
196
+ if (sheetId) navigateToSheet(sheetId);
197
+ });
198
+ });
199
+ })();
200
+ `;
201
+ }
202
+ function escapeHtml(str) {
203
+ return str
204
+ .replace(/&/g, '&amp;')
205
+ .replace(/</g, '&lt;')
206
+ .replace(/>/g, '&gt;')
207
+ .replace(/"/g, '&quot;')
208
+ .replace(/'/g, '&#39;');
209
+ }
210
+ //# sourceMappingURL=navigation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"navigation.js","sourceRoot":"","sources":["../../src/html/navigation.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA+BH;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAsB;IACvD,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE;QAC/C,MAAM,MAAM,GAAG,KAAK,KAAK,KAAK,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAA;QACpD,MAAM,KAAK,GAAG,EAAE,KAAK,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC,CAAA;QAE9E,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,oCAAoC,UAAU,CAAC,KAAK,CAAC,SAAS,CAAA;QACvE,CAAC;QAED,OAAO,+CAA+C,UAAU,CAAC,EAAE,CAAC,KAAK,UAAU,CAAC,KAAK,CAAC,WAAW,CAAA;IACvG,CAAC,CAAC,CAAA;IAEF,OAAO,2BAA2B,KAAK,CAAC,IAAI,CAAC,uCAAuC,CAAC,QAAQ,CAAA;AAC/F,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,KAAsB,EAAE,UAAoB;IACvE,IAAI,UAAU,CAAC,MAAM,IAAI,CAAC;QAAE,OAAO,EAAE,CAAA;IAErC,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE;QACjC,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QACjC,MAAM,KAAK,GAAG,IAAI,EAAE,KAAK,IAAI,EAAE,CAAA;QAC/B,MAAM,QAAQ,GAAG,EAAE,KAAK,KAAK,CAAC,YAAY,CAAA;QAE1C,OAAO,sBAAsB,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,iBAAiB,UAAU,CAAC,EAAE,CAAC,KAAK,UAAU,CAAC,KAAK,CAAC,WAAW,CAAA;IACvH,CAAC,CAAC,CAAA;IAEF,OAAO,qBAAqB,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAA;AACnD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAsB;IACvD,IAAI,KAAK,CAAC,UAAU,CAAC,MAAM,IAAI,CAAC;QAAE,OAAO,EAAE,CAAA;IAE3C,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;IAC9D,MAAM,WAAW,GACf,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,KAAK,IAAI,QAAQ,CAAC,CAAA;IAEpF,OAAO,wCAAwC,UAAU,CAAC,QAAQ,CAAC;;;;MAI/D,UAAU,CAAC,WAAW,CAAC;YACjB,CAAA;AACZ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,yBAAyB,CACvC,KAAsB,EACtB,aAAuB,EAAE;IAEzB,MAAM,UAAU,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAA;IAC5C,MAAM,OAAO,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAA;IACzC,MAAM,IAAI,GAAG,YAAY,CAAC,KAAK,EAAE,UAAU,CAAC,CAAA;IAE5C,OAAO;;QAED,OAAO;QACP,UAAU;;MAEZ,IAAI;SACD,CAAA;AACT,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB;IACjC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+EN,CAAA;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB;IACjC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDN,CAAA;AACH,CAAC;AAED,SAAS,UAAU,CAAC,GAAW;IAC7B,OAAO,GAAG;SACP,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;SACtB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;SACvB,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;AAC3B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/html/runtime.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAY1E,wBAAgB,eAAe,CAAC,OAAO,EAAE,kBAAkB,GAAG,mBAAmB,CAgWhF"}
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/html/runtime.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAY1E,wBAAgB,eAAe,CAAC,OAAO,EAAE,kBAAkB,GAAG,mBAAmB,CA0YhF"}
@@ -194,6 +194,28 @@ export function initInteractive(options) {
194
194
  }, updateHighlightPosition);
195
195
  };
196
196
  // ============================================
197
+ // Hierarchical Navigation
198
+ // ============================================
199
+ const handleSubgraphClick = (e) => {
200
+ const target = e.target;
201
+ const subgraph = target.closest('.subgraph[data-has-sheet]');
202
+ if (subgraph) {
203
+ const sheetId = subgraph.getAttribute('data-sheet-id');
204
+ if (sheetId) {
205
+ e.preventDefault();
206
+ e.stopPropagation();
207
+ dispatchNavigateEvent(sheetId);
208
+ }
209
+ }
210
+ };
211
+ const dispatchNavigateEvent = (sheetId) => {
212
+ const event = new CustomEvent('shumoku:navigate', {
213
+ detail: { sheetId },
214
+ bubbles: true,
215
+ });
216
+ document.dispatchEvent(event);
217
+ };
218
+ // ============================================
197
219
  // Tap for tooltip (touch devices)
198
220
  // ============================================
199
221
  let tapStart = null;
@@ -221,6 +243,17 @@ export function initInteractive(options) {
221
243
  if (Math.hypot(dx, dy) < 10 && dt < 300) {
222
244
  const targetEl = document.elementFromPoint(touch.clientX, touch.clientY);
223
245
  if (targetEl) {
246
+ // Check for hierarchical navigation first
247
+ const subgraph = targetEl.closest('.subgraph[data-has-sheet]');
248
+ if (subgraph) {
249
+ const sheetId = subgraph.getAttribute('data-sheet-id');
250
+ if (sheetId) {
251
+ dispatchNavigateEvent(sheetId);
252
+ tapStart = null;
253
+ return;
254
+ }
255
+ }
256
+ // Otherwise show tooltip
224
257
  const info = getTooltipInfo(targetEl);
225
258
  if (info) {
226
259
  showTooltip(info.text, touch.clientX, touch.clientY);
@@ -270,6 +303,8 @@ export function initInteractive(options) {
270
303
  document.addEventListener('mouseup', handleMouseUp);
271
304
  svg.addEventListener('mouseleave', handleMouseLeave);
272
305
  svg.addEventListener('wheel', handleWheel, { passive: false });
306
+ // Hierarchical navigation: click on subgraph with sheet reference
307
+ svg.addEventListener('click', handleSubgraphClick);
273
308
  // Listen for scroll/resize to update highlight position
274
309
  window.addEventListener('scroll', handlePositionUpdate, true);
275
310
  window.addEventListener('resize', handlePositionUpdate);
@@ -288,6 +323,7 @@ export function initInteractive(options) {
288
323
  document.removeEventListener('mouseup', handleMouseUp);
289
324
  svg.removeEventListener('mouseleave', handleMouseLeave);
290
325
  svg.removeEventListener('wheel', handleWheel);
326
+ svg.removeEventListener('click', handleSubgraphClick);
291
327
  window.removeEventListener('scroll', handlePositionUpdate, true);
292
328
  window.removeEventListener('resize', handlePositionUpdate);
293
329
  destroyTooltip();
@@ -303,6 +339,7 @@ export function initInteractive(options) {
303
339
  },
304
340
  resetView,
305
341
  getScale,
342
+ navigateToSheet: dispatchNavigateEvent,
306
343
  };
307
344
  }
308
345
  //# sourceMappingURL=runtime.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/html/runtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/html/runtime.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"tooltip.d.ts","sourceRoot":"","sources":["../../src/html/tooltip.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,wBAAgB,UAAU,IAAI,cAAc,CAuB3C;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAqBpE;AAED,wBAAgB,WAAW,IAAI,IAAI,CAIlC;AAED,wBAAgB,cAAc,IAAI,IAAI,CAKrC;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,OAAO,CAAA;CACjB;AAED,wBAAgB,cAAc,CAAC,EAAE,EAAE,OAAO,GAAG,WAAW,GAAG,IAAI,CAyC9D"}
1
+ {"version":3,"file":"tooltip.d.ts","sourceRoot":"","sources":["../../src/html/tooltip.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,wBAAgB,UAAU,IAAI,cAAc,CAuB3C;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAqBpE;AAED,wBAAgB,WAAW,IAAI,IAAI,CAIlC;AAED,wBAAgB,cAAc,IAAI,IAAI,CAKrC;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,OAAO,CAAA;CACjB;AAED,wBAAgB,cAAc,CAAC,EAAE,EAAE,OAAO,GAAG,WAAW,GAAG,IAAI,CAmE9D"}
@@ -66,10 +66,38 @@ export function getTooltipInfo(el) {
66
66
  }
67
67
  const linkGroup = el.closest('.link-group[data-link-id]');
68
68
  if (linkGroup) {
69
- const from = linkGroup.getAttribute('data-link-from') || '';
70
- const to = linkGroup.getAttribute('data-link-to') || '';
69
+ let from = linkGroup.getAttribute('data-link-from') || '';
70
+ let to = linkGroup.getAttribute('data-link-to') || '';
71
71
  const bw = linkGroup.getAttribute('data-link-bandwidth');
72
72
  const vlan = linkGroup.getAttribute('data-link-vlan');
73
+ const jsonAttr = linkGroup.getAttribute('data-link-json');
74
+ // For export links, show device:port ↔ destination device:port
75
+ const fromIsExport = from.startsWith('__export_');
76
+ const toIsExport = to.startsWith('__export_');
77
+ if ((fromIsExport || toIsExport) && jsonAttr) {
78
+ try {
79
+ const linkData = JSON.parse(jsonAttr);
80
+ const meta = linkData.metadata;
81
+ if (meta?._destDevice) {
82
+ // Get the actual device endpoint (non-export side)
83
+ const localDevice = fromIsExport ? to : from;
84
+ // Get the destination device:port from metadata
85
+ const destDevice = meta._destPort
86
+ ? `${meta._destDevice}:${meta._destPort}`
87
+ : meta._destDevice;
88
+ // Show: "local device ↔ remote device"
89
+ let text = `${localDevice} ↔ ${destDevice}`;
90
+ if (bw)
91
+ text += `\n${bw}`;
92
+ if (vlan)
93
+ text += `\nVLAN: ${vlan}`;
94
+ return { text, element: linkGroup };
95
+ }
96
+ }
97
+ catch {
98
+ // Fall through to default display
99
+ }
100
+ }
73
101
  let text = `${from} ↔ ${to}`;
74
102
  if (bw)
75
103
  text += `\n${bw}`;
@@ -1 +1 @@
1
- {"version":3,"file":"tooltip.js","sourceRoot":"","sources":["../../src/html/tooltip.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tooltip.js","sourceRoot":"","sources":["../../src/html/tooltip.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,IAAI,OAAO,GAA0B,IAAI,CAAA;AAEzC,MAAM,UAAU,UAAU;IACxB,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;QACvC,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG;;;;;;;;;;;;;;;;KAgBvB,CAAA;QACD,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;IACpC,CAAC;IACD,OAAO,OAAO,CAAA;AAChB,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAAY,EAAE,CAAS,EAAE,CAAS;IAC5D,MAAM,CAAC,GAAG,UAAU,EAAE,CAAA;IACtB,CAAC,CAAC,WAAW,GAAG,IAAI,CAAA;IACpB,CAAC,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG,CAAA;IAErB,qBAAqB,CAAC,GAAG,EAAE;QACzB,MAAM,IAAI,GAAG,CAAC,CAAC,qBAAqB,EAAE,CAAA;QACtC,MAAM,GAAG,GAAG,EAAE,CAAA;QACd,IAAI,IAAI,GAAG,CAAC,GAAG,GAAG,CAAA;QAClB,IAAI,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,GAAG,CAAA;QAE/B,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,UAAU,GAAG,GAAG,EAAE,CAAC;YAChD,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,GAAG,CAAA;QAC7B,CAAC;QACD,IAAI,GAAG,GAAG,GAAG,EAAE,CAAC;YACd,GAAG,GAAG,CAAC,GAAG,GAAG,CAAA;QACf,CAAC;QAED,CAAC,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAA;QACzC,CAAC,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAA;IACzC,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,UAAU,WAAW;IACzB,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG,CAAA;IAC7B,CAAC;AACH,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,CAAC,MAAM,EAAE,CAAA;QAChB,OAAO,GAAG,IAAI,CAAA;IAChB,CAAC;AACH,CAAC;AAOD,MAAM,UAAU,cAAc,CAAC,EAAW;IACxC,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAA;IAC3C,IAAI,IAAI,EAAE,CAAC;QACT,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,EAAE,CAAA;QACnD,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAA;QAC5D,OAAO,EAAE,IAAI,EAAE,GAAG,QAAQ,IAAI,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;IACzD,CAAC;IAED,MAAM,SAAS,GAAG,EAAE,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAA;IACzD,IAAI,SAAS,EAAE,CAAC;QACd,IAAI,IAAI,GAAG,SAAS,CAAC,YAAY,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAA;QACzD,IAAI,EAAE,GAAG,SAAS,CAAC,YAAY,CAAC,cAAc,CAAC,IAAI,EAAE,CAAA;QACrD,MAAM,EAAE,GAAG,SAAS,CAAC,YAAY,CAAC,qBAAqB,CAAC,CAAA;QACxD,MAAM,IAAI,GAAG,SAAS,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAA;QACrD,MAAM,QAAQ,GAAG,SAAS,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAA;QAEzD,+DAA+D;QAC/D,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAA;QACjD,MAAM,UAAU,GAAG,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,CAAA;QAC7C,IAAI,CAAC,YAAY,IAAI,UAAU,CAAC,IAAI,QAAQ,EAAE,CAAC;YAC7C,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;gBACrC,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAA;gBAC9B,IAAI,IAAI,EAAE,WAAW,EAAE,CAAC;oBACtB,mDAAmD;oBACnD,MAAM,WAAW,GAAG,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAA;oBAC5C,gDAAgD;oBAChD,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS;wBAC/B,CAAC,CAAC,GAAG,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,SAAS,EAAE;wBACzC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAA;oBACpB,uCAAuC;oBACvC,IAAI,IAAI,GAAG,GAAG,WAAW,MAAM,UAAU,EAAE,CAAA;oBAC3C,IAAI,EAAE;wBAAE,IAAI,IAAI,KAAK,EAAE,EAAE,CAAA;oBACzB,IAAI,IAAI;wBAAE,IAAI,IAAI,WAAW,IAAI,EAAE,CAAA;oBACnC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,CAAA;gBACrC,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,kCAAkC;YACpC,CAAC;QACH,CAAC;QAED,IAAI,IAAI,GAAG,GAAG,IAAI,MAAM,EAAE,EAAE,CAAA;QAC5B,IAAI,EAAE;YAAE,IAAI,IAAI,KAAK,EAAE,EAAE,CAAA;QACzB,IAAI,IAAI;YAAE,IAAI,IAAI,WAAW,IAAI,EAAE,CAAA;QACnC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,CAAA;IACrC,CAAC;IAED,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAA;IACzC,IAAI,IAAI,EAAE,CAAC;QACT,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,CAAA;QAClD,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;gBAC7B,MAAM,KAAK,GAAa,EAAE,CAAA;gBAC1B,IAAI,IAAI,CAAC,KAAK;oBAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;gBACzF,IAAI,IAAI,CAAC,IAAI;oBAAE,KAAK,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;gBAC/C,IAAI,IAAI,CAAC,MAAM;oBAAE,KAAK,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,MAAM,EAAE,CAAC,CAAA;gBACrD,IAAI,IAAI,CAAC,KAAK;oBAAE,KAAK,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,KAAK,EAAE,CAAC,CAAA;gBAClD,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;YAClD,CAAC;YAAC,MAAM,CAAC;gBACP,cAAc;YAChB,CAAC;QACH,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;IACpE,CAAC;IAED,OAAO,IAAI,CAAA;AACb,CAAC"}
@@ -0,0 +1,2 @@
1
+ // Auto-generated - do not edit
2
+ export declare const INTERACTIVE_IIFE: string;
@@ -1,2 +1,2 @@
1
1
  // Auto-generated - do not edit
2
- export const INTERACTIVE_IIFE = "(()=>{var{defineProperty:M,getOwnPropertyNames:ut,getOwnPropertyDescriptor:pt}=Object,yt=Object.prototype.hasOwnProperty;var a=new WeakMap,et=(l)=>{var i=a.get(l),t;if(i)return i;if(i=M({},\"__esModule\",{value:!0}),l&&typeof l===\"object\"||typeof l===\"function\")ut(l).map((d)=>!yt.call(i,d)&&M(i,d,{get:()=>l[d],enumerable:!(t=pt(l,d))||t.enumerable}));return a.set(l,i),i};var mt=(l,i)=>{for(var t in i)M(l,t,{get:i[t],enumerable:!0,configurable:!0,set:(d)=>i[t]=()=>d})};var Gt={};mt(Gt,{ShumokuInteractive:()=>it});var c=null,o=null,A=null,b=null;function xt(){if(!c)c=document.createElement(\"div\"),c.style.cssText=`\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.5);\n pointer-events: none;\n opacity: 0;\n transition: opacity 0.15s ease;\n z-index: 9998;\n `,document.body.appendChild(c);return c}function $t(){if(!o)o=document.createElement(\"div\"),o.style.cssText=`\n position: fixed;\n top: 0;\n left: 0;\n pointer-events: none;\n z-index: 9999;\n `,document.body.appendChild(o);return o}function L(){if(!A||!b)return;if(!document.contains(A)){s(null);return}let l=A.closest(\"svg\");if(!l)return;let i=l.getBoundingClientRect(),t=l.getAttribute(\"viewBox\");if(t)b.setAttribute(\"viewBox\",t);b.style.left=`${i.left}px`,b.style.top=`${i.top}px`,b.style.width=`${i.width}px`,b.style.height=`${i.height}px`}function s(l){if(l===A)return;if(A)A.classList.remove(\"shumoku-highlight\");let i=$t();i.innerHTML=\"\",b=null,A=l;let t=xt();if(l){l.classList.add(\"shumoku-highlight\");let d=l.closest(\"svg\");if(d){let m=d.getAttribute(\"viewBox\");if(m){let p=l.cloneNode(!0);p.classList.remove(\"shumoku-highlight\");let f=document.createElementNS(\"http://www.w3.org/2000/svg\",\"svg\");f.setAttribute(\"viewBox\",m),f.style.cssText=`\n position: absolute;\n overflow: visible;\n filter: drop-shadow(0 0 4px #fff) drop-shadow(0 0 8px #fff) drop-shadow(0 0 12px rgba(100, 150, 255, 0.8));\n `;let e=d.querySelector(\"defs\");if(e)f.appendChild(e.cloneNode(!0));f.appendChild(p),i.appendChild(f),b=f,L()}}t.style.opacity=\"1\"}else t.style.opacity=\"0\"}function g(){return A}function h(){if(c)c.remove(),c=null;if(o)o.remove(),o=null;A=null,b=null}var I=null;function kt(){if(!I)I=document.createElement(\"div\"),I.style.cssText=`\n position: fixed;\n z-index: 10000;\n padding: 8px 12px;\n background: rgba(30, 41, 59, 0.95);\n color: #fff;\n font-size: 13px;\n line-height: 1.4;\n border-radius: 6px;\n pointer-events: none;\n opacity: 0;\n transition: opacity 0.15s;\n font-family: system-ui, -apple-system, sans-serif;\n max-width: 280px;\n white-space: pre-line;\n box-shadow: 0 4px 12px rgba(0,0,0,0.15);\n `,document.body.appendChild(I);return I}function R(l,i,t){let d=kt();d.textContent=l,d.style.opacity=\"1\",requestAnimationFrame(()=>{let m=d.getBoundingClientRect(),p=12,f=i+12,e=t-m.height-12;if(f+m.width>window.innerWidth-12)f=i-m.width-12;if(e<12)e=t+12;d.style.left=`${Math.max(12,f)}px`,d.style.top=`${Math.max(12,e)}px`})}function E(){if(I)I.style.opacity=\"0\"}function tt(){if(I)I.remove(),I=null}function X(l){let i=l.closest(\".port[data-port]\");if(i){let m=i.getAttribute(\"data-port\")||\"\";return{text:`${i.getAttribute(\"data-port-device\")||\"\"}:${m}`,element:i}}let t=l.closest(\".link-group[data-link-id]\");if(t){let m=t.getAttribute(\"data-link-from\")||\"\",p=t.getAttribute(\"data-link-to\")||\"\",f=t.getAttribute(\"data-link-bandwidth\"),e=t.getAttribute(\"data-link-vlan\"),u=`${m} ↔ ${p}`;if(f)u+=`\n${f}`;if(e)u+=`\nVLAN: ${e}`;return{text:u,element:t}}let d=l.closest(\".node[data-id]\");if(d){let m=d.getAttribute(\"data-device-json\");if(m)try{let p=JSON.parse(m),f=[];if(p.label)f.push(Array.isArray(p.label)?p.label.join(\" \"):p.label);if(p.type)f.push(`Type: ${p.type}`);if(p.vendor)f.push(`Vendor: ${p.vendor}`);if(p.model)f.push(`Model: ${p.model}`);return{text:f.join(`\n`),element:d}}catch{}return{text:d.getAttribute(\"data-id\")||\"\",element:d}}return null}function H(l){let i=l.getAttribute(\"viewBox\");if(!i)return null;let t=i.split(/\\s+|,/).map(Number);if(t.length!==4||t.some(Number.isNaN))return null;return{x:t[0],y:t[1],width:t[2],height:t[3]}}function j(l,i,t){l.setAttribute(\"viewBox\",`${i.x} ${i.y} ${i.width} ${i.height}`),t?.()}function Y(l){return{x:l.x,y:l.y,width:l.width,height:l.height}}var nt=1.2;function lt(l){let i=typeof l.target===\"string\"?document.querySelector(l.target):l.target;if(!i)throw Error(\"Target not found\");let t=i.closest(\"svg\")||i.querySelector(\"svg\")||i;if(!(t instanceof SVGSVGElement))throw Error(\"SVG element not found\");let d=l.panZoom?.enabled??!0,m=l.panZoom?.minScale??0.1,p=l.panZoom?.maxScale??10,f=H(t);if(!f){let n=t.getBBox();f={x:n.x,y:n.y,width:n.width,height:n.height},j(t,f,L)}let e=!1,u={active:!1,startX:0,startY:0,startViewBox:null},N=null,ft=()=>{if(!f)return 1;let n=H(t);if(!n)return 1;return f.width/n.width},rt=()=>{if(f)j(t,f,L)},_=(n)=>{if(n.length<2)return 0;let r=n[1].clientX-n[0].clientX,y=n[1].clientY-n[0].clientY;return Math.hypot(r,y)},O=(n)=>({x:(n[0].clientX+n[1].clientX)/2,y:(n[0].clientY+n[1].clientY)/2}),U=(n)=>{if(n.touches.length>=2&&d){n.preventDefault();let r=_(n.touches),y=O(n.touches),x=H(t);if(x){let $=t.getBoundingClientRect();N={initialDist:r,startViewBox:Y(x),centerX:x.x+x.width*((y.x-$.left)/$.width),centerY:x.y+x.height*((y.y-$.top)/$.height)}}if(e)E(),s(null),e=!1}},F=(n)=>{if(n.touches.length>=2&&N&&d){n.preventDefault();let r=_(n.touches),y=O(n.touches);if(r===0||N.initialDist===0)return;let x=r/N.initialDist,$=N.startViewBox.width/x,k=N.startViewBox.height/x;if(!f)return;let G=f.width/$;if(G<m||G>p)return;let q=t.getBoundingClientRect(),K=(y.x-q.left)/q.width,Q=(y.y-q.top)/q.height;j(t,{x:N.centerX-$*K,y:N.centerY-k*Q,width:$,height:k},L)}},w=(n)=>{if(n.touches.length<2)N=null},V=(n)=>{if(n.button!==0||!d)return;let r=H(t);if(!r)return;if(u.active=!0,u.startX=n.clientX,u.startY=n.clientY,u.startViewBox=Y(r),t.style.cursor=\"grabbing\",e)E(),s(null),e=!1},W=(n)=>{if(u.active&&u.startViewBox&&d){let r=n.clientX-u.startX,y=n.clientY-u.startY,x=t.getBoundingClientRect(),$=u.startViewBox.width/x.width,k=u.startViewBox.height/x.height;j(t,{x:u.startViewBox.x-r*$,y:u.startViewBox.y-y*k,width:u.startViewBox.width,height:u.startViewBox.height},L)}else if(!u.active){let r=X(n.target);if(r)R(r.text,n.clientX,n.clientY),s(r.element);else E(),s(null)}},Z=()=>{u.active=!1,u.startViewBox=null,t.style.cursor=\"\"},S=()=>{if(!u.active&&!e)E(),s(null)},B=(n)=>{if(!d)return;n.preventDefault();let r=H(t);if(!r||!f)return;let y=t.getBoundingClientRect(),x=r.x+r.width*((n.clientX-y.left)/y.width),$=r.y+r.height*((n.clientY-y.top)/y.height),k=n.deltaY>0?nt:1/nt,G=r.width*k,q=r.height*k,K=f.width/G;if(K<m||K>p)return;let Q=(n.clientX-y.left)/y.width,dt=(n.clientY-y.top)/y.height;j(t,{x:x-G*Q,y:$-q*dt,width:G,height:q},L)},C=null,P=(n)=>{if(n.touches.length===1)C={x:n.touches[0].clientX,y:n.touches[0].clientY,time:Date.now()};else C=null},v=(n)=>{if(!C||n.touches.length>0){C=null;return}let r=n.changedTouches[0],y=r.clientX-C.x,x=r.clientY-C.y,$=Date.now()-C.time;if(Math.hypot(y,x)<10&&$<300){let k=document.elementFromPoint(r.clientX,r.clientY);if(k){let G=X(k);if(G)R(G.text,r.clientX,r.clientY),s(G.element),e=!0;else if(e)E(),s(null),e=!1}}C=null},z=null,T=\"\",D=()=>{if(g()){let n=t.getAttribute(\"viewBox\")||\"\";if(n!==T)T=n,L()}z=requestAnimationFrame(D)},J=()=>{L()};return z=requestAnimationFrame(D),t.addEventListener(\"touchstart\",U,{passive:!1}),t.addEventListener(\"touchmove\",F,{passive:!1}),t.addEventListener(\"touchend\",w),t.addEventListener(\"touchcancel\",w),t.addEventListener(\"touchstart\",P,{passive:!0}),t.addEventListener(\"touchend\",v),t.addEventListener(\"mousedown\",V),document.addEventListener(\"mousemove\",W),document.addEventListener(\"mouseup\",Z),t.addEventListener(\"mouseleave\",S),t.addEventListener(\"wheel\",B,{passive:!1}),window.addEventListener(\"scroll\",J,!0),window.addEventListener(\"resize\",J),{destroy:()=>{if(z!==null)cancelAnimationFrame(z);t.removeEventListener(\"touchstart\",U),t.removeEventListener(\"touchmove\",F),t.removeEventListener(\"touchend\",w),t.removeEventListener(\"touchcancel\",w),t.removeEventListener(\"touchstart\",P),t.removeEventListener(\"touchend\",v),t.removeEventListener(\"mousedown\",V),document.removeEventListener(\"mousemove\",W),document.removeEventListener(\"mouseup\",Z),t.removeEventListener(\"mouseleave\",S),t.removeEventListener(\"wheel\",B),window.removeEventListener(\"scroll\",J,!0),window.removeEventListener(\"resize\",J),tt(),h()},showDeviceModal:()=>{},hideModal:()=>{},showLinkTooltip:()=>{},hideTooltip:()=>{E(),s(null),e=!1},resetView:rt,getScale:ft}}var it={initInteractive:lt};window.ShumokuInteractive=it;})();\n";
2
+ export const INTERACTIVE_IIFE = "(()=>{var{defineProperty:v,getOwnPropertyNames:K0,getOwnPropertyDescriptor:Q0}=Object,z0=Object.prototype.hasOwnProperty;var y0=new WeakMap,H0=($)=>{var L=y0.get($),f;if(L)return L;if(L=v({},\"__esModule\",{value:!0}),$&&typeof $===\"object\"||typeof $===\"function\")K0($).map((C)=>!z0.call(L,C)&&v(L,C,{get:()=>$[C],enumerable:!(f=Q0($,C))||f.enumerable}));return y0.set($,L),L};var k0=($,L)=>{for(var f in L)v($,f,{get:L[f],enumerable:!0,configurable:!0,set:(C)=>L[f]=()=>C})};var _0={};k0(_0,{ShumokuInteractive:()=>q0});var Z=null,u=null,j=null,A=null;function m0(){if(!Z)Z=document.createElement(\"div\"),Z.style.cssText=`\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.5);\n pointer-events: none;\n opacity: 0;\n transition: opacity 0.15s ease;\n z-index: 9998;\n `,document.body.appendChild(Z);return Z}function X0(){if(!u)u=document.createElement(\"div\"),u.style.cssText=`\n position: fixed;\n top: 0;\n left: 0;\n pointer-events: none;\n z-index: 9999;\n `,document.body.appendChild(u);return u}function n(){if(!j||!A)return;if(!document.contains(j)){_(null);return}let $=j.closest(\"svg\");if(!$)return;let L=$.getBoundingClientRect(),f=$.getAttribute(\"viewBox\");if(f)A.setAttribute(\"viewBox\",f);A.style.left=`${L.left}px`,A.style.top=`${L.top}px`,A.style.width=`${L.width}px`,A.style.height=`${L.height}px`}function _($){if($===j)return;if(j)j.classList.remove(\"shumoku-highlight\");let L=X0();L.innerHTML=\"\",A=null,j=$;let f=m0();if($){$.classList.add(\"shumoku-highlight\");let C=$.closest(\"svg\");if(C){let H=C.getAttribute(\"viewBox\");if(H){let J=$.cloneNode(!0);J.classList.remove(\"shumoku-highlight\");let N=document.createElementNS(\"http://www.w3.org/2000/svg\",\"svg\");N.setAttribute(\"viewBox\",H),N.style.cssText=`\n position: absolute;\n overflow: visible;\n filter: drop-shadow(0 0 4px #fff) drop-shadow(0 0 8px #fff) drop-shadow(0 0 12px rgba(100, 150, 255, 0.8));\n `;let K=C.querySelector(\"defs\");if(K)N.appendChild(K.cloneNode(!0));N.appendChild(J),L.appendChild(N),A=N,n()}}f.style.opacity=\"1\"}else f.style.opacity=\"0\"}function $0(){return j}function L0(){if(Z)Z.remove(),Z=null;if(u)u.remove(),u=null;j=null,A=null}var R=null;function Y0(){if(!R)R=document.createElement(\"div\"),R.style.cssText=`\n position: fixed;\n z-index: 10000;\n padding: 8px 12px;\n background: rgba(30, 41, 59, 0.95);\n color: #fff;\n font-size: 13px;\n line-height: 1.4;\n border-radius: 6px;\n pointer-events: none;\n opacity: 0;\n transition: opacity 0.15s;\n font-family: system-ui, -apple-system, sans-serif;\n max-width: 280px;\n white-space: pre-line;\n box-shadow: 0 4px 12px rgba(0,0,0,0.15);\n `,document.body.appendChild(R);return R}function l($,L,f){let C=Y0();C.textContent=$,C.style.opacity=\"1\",requestAnimationFrame(()=>{let H=C.getBoundingClientRect(),J=12,N=L+12,K=f-H.height-12;if(N+H.width>window.innerWidth-12)N=L-H.width-12;if(K<12)K=f+12;C.style.left=`${Math.max(12,N)}px`,C.style.top=`${Math.max(12,K)}px`})}function V(){if(R)R.style.opacity=\"0\"}function N0(){if(R)R.remove(),R=null}function d($){let L=$.closest(\".port[data-port]\");if(L){let H=L.getAttribute(\"data-port\")||\"\";return{text:`${L.getAttribute(\"data-port-device\")||\"\"}:${H}`,element:L}}let f=$.closest(\".link-group[data-link-id]\");if(f){let H=f.getAttribute(\"data-link-from\")||\"\",J=f.getAttribute(\"data-link-to\")||\"\",N=f.getAttribute(\"data-link-bandwidth\"),K=f.getAttribute(\"data-link-vlan\"),Q=f.getAttribute(\"data-link-json\"),m=H.startsWith(\"__export_\"),D=J.startsWith(\"__export_\");if((m||D)&&Q)try{let I=JSON.parse(Q).metadata;if(I?._destDevice){let B=m?J:H,E=I._destPort?`${I._destDevice}:${I._destPort}`:I._destDevice,M=`${B} ↔ ${E}`;if(N)M+=`\n${N}`;if(K)M+=`\nVLAN: ${K}`;return{text:M,element:f}}}catch{}let P=`${H} ↔ ${J}`;if(N)P+=`\n${N}`;if(K)P+=`\nVLAN: ${K}`;return{text:P,element:f}}let C=$.closest(\".node[data-id]\");if(C){let H=C.getAttribute(\"data-device-json\");if(H)try{let J=JSON.parse(H),N=[];if(J.label)N.push(Array.isArray(J.label)?J.label.join(\" \"):J.label);if(J.type)N.push(`Type: ${J.type}`);if(J.vendor)N.push(`Vendor: ${J.vendor}`);if(J.model)N.push(`Model: ${J.model}`);return{text:N.join(`\n`),element:C}}catch{}return{text:C.getAttribute(\"data-id\")||\"\",element:C}}return null}function W($){let L=$.getAttribute(\"viewBox\");if(!L)return null;let f=L.split(/\\s+|,/).map(Number);if(f.length!==4||f.some(Number.isNaN))return null;return{x:f[0],y:f[1],width:f[2],height:f[3]}}function x($,L,f){$.setAttribute(\"viewBox\",`${L.x} ${L.y} ${L.width} ${L.height}`),f?.()}function c($){return{x:$.x,y:$.y,width:$.width,height:$.height}}var G0=1.2;function C0($){let L=typeof $.target===\"string\"?document.querySelector($.target):$.target;if(!L)throw Error(\"Target not found\");let f=L.closest(\"svg\")||L.querySelector(\"svg\")||L;if(!(f instanceof SVGSVGElement))throw Error(\"SVG element not found\");let C=$.panZoom?.enabled??!0,H=$.panZoom?.minScale??0.1,J=$.panZoom?.maxScale??10,N=W(f);if(!N){let y=f.getBBox();N={x:y.x,y:y.y,width:y.width,height:y.height},x(f,N,n)}let K=!1,Q={active:!1,startX:0,startY:0,startViewBox:null},m=null,D=()=>{if(!N)return 1;let y=W(f);if(!y)return 1;return N.width/y.width},P=()=>{if(N)x(f,N,n)},b=(y)=>{if(y.length<2)return 0;let G=y[1].clientX-y[0].clientX,q=y[1].clientY-y[0].clientY;return Math.hypot(G,q)},I=(y)=>({x:(y[0].clientX+y[1].clientX)/2,y:(y[0].clientY+y[1].clientY)/2}),B=(y)=>{if(y.touches.length>=2&&C){y.preventDefault();let G=b(y.touches),q=I(y.touches),z=W(f);if(z){let k=f.getBoundingClientRect();m={initialDist:G,startViewBox:c(z),centerX:z.x+z.width*((q.x-k.left)/k.width),centerY:z.y+z.height*((q.y-k.top)/k.height)}}if(K)V(),_(null),K=!1}},E=(y)=>{if(y.touches.length>=2&&m&&C){y.preventDefault();let G=b(y.touches),q=I(y.touches);if(G===0||m.initialDist===0)return;let z=G/m.initialDist,k=m.startViewBox.width/z,X=m.startViewBox.height/z;if(!N)return;let U=N.width/k;if(U<H||U>J)return;let Y=f.getBoundingClientRect(),F=(q.x-Y.left)/Y.width,r=(q.y-Y.top)/Y.height;x(f,{x:m.centerX-k*F,y:m.centerY-X*r,width:k,height:X},n)}},M=(y)=>{if(y.touches.length<2)m=null},p=(y)=>{if(y.button!==0||!C)return;let G=W(f);if(!G)return;if(Q.active=!0,Q.startX=y.clientX,Q.startY=y.clientY,Q.startViewBox=c(G),f.style.cursor=\"grabbing\",K)V(),_(null),K=!1},i=(y)=>{if(Q.active&&Q.startViewBox&&C){let G=y.clientX-Q.startX,q=y.clientY-Q.startY,z=f.getBoundingClientRect(),k=Q.startViewBox.width/z.width,X=Q.startViewBox.height/z.height;x(f,{x:Q.startViewBox.x-G*k,y:Q.startViewBox.y-q*X,width:Q.startViewBox.width,height:Q.startViewBox.height},n)}else if(!Q.active){let G=d(y.target);if(G)l(G.text,y.clientX,y.clientY),_(G.element);else V(),_(null)}},s=()=>{Q.active=!1,Q.startViewBox=null,f.style.cursor=\"\"},g=()=>{if(!Q.active&&!K)V(),_(null)},h=(y)=>{if(!C)return;y.preventDefault();let G=W(f);if(!G||!N)return;let q=f.getBoundingClientRect(),z=G.x+G.width*((y.clientX-q.left)/q.width),k=G.y+G.height*((y.clientY-q.top)/q.height),X=y.deltaY>0?G0:1/G0,U=G.width*X,Y=G.height*X,F=N.width/U;if(F<H||F>J)return;let r=(y.clientX-q.left)/q.width,J0=(y.clientY-q.top)/q.height;x(f,{x:z-U*r,y:k-Y*J0,width:U,height:Y},n)},a=(y)=>{let q=y.target.closest(\".subgraph[data-has-sheet]\");if(q){let z=q.getAttribute(\"data-sheet-id\");if(z)y.preventDefault(),y.stopPropagation(),T(z)}},T=(y)=>{let G=new CustomEvent(\"shumoku:navigate\",{detail:{sheetId:y},bubbles:!0});document.dispatchEvent(G)},O=null,t=(y)=>{if(y.touches.length===1)O={x:y.touches[0].clientX,y:y.touches[0].clientY,time:Date.now()};else O=null},o=(y)=>{if(!O||y.touches.length>0){O=null;return}let G=y.changedTouches[0],q=G.clientX-O.x,z=G.clientY-O.y,k=Date.now()-O.time;if(Math.hypot(q,z)<10&&k<300){let X=document.elementFromPoint(G.clientX,G.clientY);if(X){let U=X.closest(\".subgraph[data-has-sheet]\");if(U){let F=U.getAttribute(\"data-sheet-id\");if(F){T(F),O=null;return}}let Y=d(X);if(Y)l(Y.text,G.clientX,G.clientY),_(Y.element),K=!0;else if(K)V(),_(null),K=!1}}O=null},S=null,e=\"\",f0=()=>{if($0()){let y=f.getAttribute(\"viewBox\")||\"\";if(y!==e)e=y,n()}S=requestAnimationFrame(f0)},w=()=>{n()};return S=requestAnimationFrame(f0),f.addEventListener(\"touchstart\",B,{passive:!1}),f.addEventListener(\"touchmove\",E,{passive:!1}),f.addEventListener(\"touchend\",M),f.addEventListener(\"touchcancel\",M),f.addEventListener(\"touchstart\",t,{passive:!0}),f.addEventListener(\"touchend\",o),f.addEventListener(\"mousedown\",p),document.addEventListener(\"mousemove\",i),document.addEventListener(\"mouseup\",s),f.addEventListener(\"mouseleave\",g),f.addEventListener(\"wheel\",h,{passive:!1}),f.addEventListener(\"click\",a),window.addEventListener(\"scroll\",w,!0),window.addEventListener(\"resize\",w),{destroy:()=>{if(S!==null)cancelAnimationFrame(S);f.removeEventListener(\"touchstart\",B),f.removeEventListener(\"touchmove\",E),f.removeEventListener(\"touchend\",M),f.removeEventListener(\"touchcancel\",M),f.removeEventListener(\"touchstart\",t),f.removeEventListener(\"touchend\",o),f.removeEventListener(\"mousedown\",p),document.removeEventListener(\"mousemove\",i),document.removeEventListener(\"mouseup\",s),f.removeEventListener(\"mouseleave\",g),f.removeEventListener(\"wheel\",h),f.removeEventListener(\"click\",a),window.removeEventListener(\"scroll\",w,!0),window.removeEventListener(\"resize\",w),N0(),L0()},showDeviceModal:()=>{},hideModal:()=>{},showLinkTooltip:()=>{},hideTooltip:()=>{V(),_(null),K=!1},resetView:P,getScale:D,navigateToSheet:T}}var q0={initInteractive:C0};window.ShumokuInteractive=q0;})();\n";
package/dist/index.d.ts CHANGED
@@ -5,4 +5,5 @@ import * as html from './html/index.js';
5
5
  import * as svg from './svg.js';
6
6
  export { svg, html };
7
7
  export type { DataAttributeOptions, DeviceInfo, EndpointInfo, HTMLRendererOptions, InteractiveInstance, InteractiveOptions, LinkInfo, PortInfo, RenderMode, } from './types.js';
8
+ export type { SheetData } from './html/index.js';
8
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,IAAI,MAAM,iBAAiB,CAAA;AAEvC,OAAO,KAAK,GAAG,MAAM,UAAU,CAAA;AAE/B,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,CAAA;AAGpB,YAAY,EACV,oBAAoB,EACpB,UAAU,EACV,YAAY,EACZ,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,EAClB,QAAQ,EACR,QAAQ,EACR,UAAU,GACX,MAAM,YAAY,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,IAAI,MAAM,iBAAiB,CAAA;AAEvC,OAAO,KAAK,GAAG,MAAM,UAAU,CAAA;AAE/B,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,CAAA;AAGpB,YAAY,EACV,oBAAoB,EACpB,UAAU,EACV,YAAY,EACZ,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,EAClB,QAAQ,EACR,QAAQ,EACR,UAAU,GACX,MAAM,YAAY,CAAA;AAGnB,YAAY,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA"}
@@ -1,4 +1,4 @@
1
- (()=>{var{defineProperty:M,getOwnPropertyNames:ut,getOwnPropertyDescriptor:pt}=Object,yt=Object.prototype.hasOwnProperty;var a=new WeakMap,et=(l)=>{var i=a.get(l),t;if(i)return i;if(i=M({},"__esModule",{value:!0}),l&&typeof l==="object"||typeof l==="function")ut(l).map((d)=>!yt.call(i,d)&&M(i,d,{get:()=>l[d],enumerable:!(t=pt(l,d))||t.enumerable}));return a.set(l,i),i};var mt=(l,i)=>{for(var t in i)M(l,t,{get:i[t],enumerable:!0,configurable:!0,set:(d)=>i[t]=()=>d})};var Gt={};mt(Gt,{ShumokuInteractive:()=>it});var c=null,o=null,A=null,b=null;function xt(){if(!c)c=document.createElement("div"),c.style.cssText=`
1
+ (()=>{var{defineProperty:v,getOwnPropertyNames:K0,getOwnPropertyDescriptor:Q0}=Object,z0=Object.prototype.hasOwnProperty;var y0=new WeakMap,H0=($)=>{var L=y0.get($),f;if(L)return L;if(L=v({},"__esModule",{value:!0}),$&&typeof $==="object"||typeof $==="function")K0($).map((C)=>!z0.call(L,C)&&v(L,C,{get:()=>$[C],enumerable:!(f=Q0($,C))||f.enumerable}));return y0.set($,L),L};var k0=($,L)=>{for(var f in L)v($,f,{get:L[f],enumerable:!0,configurable:!0,set:(C)=>L[f]=()=>C})};var _0={};k0(_0,{ShumokuInteractive:()=>q0});var Z=null,u=null,j=null,A=null;function m0(){if(!Z)Z=document.createElement("div"),Z.style.cssText=`
2
2
  position: fixed;
3
3
  top: 0;
4
4
  left: 0;
@@ -9,17 +9,17 @@
9
9
  opacity: 0;
10
10
  transition: opacity 0.15s ease;
11
11
  z-index: 9998;
12
- `,document.body.appendChild(c);return c}function $t(){if(!o)o=document.createElement("div"),o.style.cssText=`
12
+ `,document.body.appendChild(Z);return Z}function X0(){if(!u)u=document.createElement("div"),u.style.cssText=`
13
13
  position: fixed;
14
14
  top: 0;
15
15
  left: 0;
16
16
  pointer-events: none;
17
17
  z-index: 9999;
18
- `,document.body.appendChild(o);return o}function L(){if(!A||!b)return;if(!document.contains(A)){s(null);return}let l=A.closest("svg");if(!l)return;let i=l.getBoundingClientRect(),t=l.getAttribute("viewBox");if(t)b.setAttribute("viewBox",t);b.style.left=`${i.left}px`,b.style.top=`${i.top}px`,b.style.width=`${i.width}px`,b.style.height=`${i.height}px`}function s(l){if(l===A)return;if(A)A.classList.remove("shumoku-highlight");let i=$t();i.innerHTML="",b=null,A=l;let t=xt();if(l){l.classList.add("shumoku-highlight");let d=l.closest("svg");if(d){let m=d.getAttribute("viewBox");if(m){let p=l.cloneNode(!0);p.classList.remove("shumoku-highlight");let f=document.createElementNS("http://www.w3.org/2000/svg","svg");f.setAttribute("viewBox",m),f.style.cssText=`
18
+ `,document.body.appendChild(u);return u}function n(){if(!j||!A)return;if(!document.contains(j)){_(null);return}let $=j.closest("svg");if(!$)return;let L=$.getBoundingClientRect(),f=$.getAttribute("viewBox");if(f)A.setAttribute("viewBox",f);A.style.left=`${L.left}px`,A.style.top=`${L.top}px`,A.style.width=`${L.width}px`,A.style.height=`${L.height}px`}function _($){if($===j)return;if(j)j.classList.remove("shumoku-highlight");let L=X0();L.innerHTML="",A=null,j=$;let f=m0();if($){$.classList.add("shumoku-highlight");let C=$.closest("svg");if(C){let H=C.getAttribute("viewBox");if(H){let J=$.cloneNode(!0);J.classList.remove("shumoku-highlight");let N=document.createElementNS("http://www.w3.org/2000/svg","svg");N.setAttribute("viewBox",H),N.style.cssText=`
19
19
  position: absolute;
20
20
  overflow: visible;
21
21
  filter: drop-shadow(0 0 4px #fff) drop-shadow(0 0 8px #fff) drop-shadow(0 0 12px rgba(100, 150, 255, 0.8));
22
- `;let e=d.querySelector("defs");if(e)f.appendChild(e.cloneNode(!0));f.appendChild(p),i.appendChild(f),b=f,L()}}t.style.opacity="1"}else t.style.opacity="0"}function g(){return A}function h(){if(c)c.remove(),c=null;if(o)o.remove(),o=null;A=null,b=null}var I=null;function kt(){if(!I)I=document.createElement("div"),I.style.cssText=`
22
+ `;let K=C.querySelector("defs");if(K)N.appendChild(K.cloneNode(!0));N.appendChild(J),L.appendChild(N),A=N,n()}}f.style.opacity="1"}else f.style.opacity="0"}function $0(){return j}function L0(){if(Z)Z.remove(),Z=null;if(u)u.remove(),u=null;j=null,A=null}var R=null;function Y0(){if(!R)R=document.createElement("div"),R.style.cssText=`
23
23
  position: fixed;
24
24
  z-index: 10000;
25
25
  padding: 8px 12px;
@@ -35,7 +35,9 @@
35
35
  max-width: 280px;
36
36
  white-space: pre-line;
37
37
  box-shadow: 0 4px 12px rgba(0,0,0,0.15);
38
- `,document.body.appendChild(I);return I}function R(l,i,t){let d=kt();d.textContent=l,d.style.opacity="1",requestAnimationFrame(()=>{let m=d.getBoundingClientRect(),p=12,f=i+12,e=t-m.height-12;if(f+m.width>window.innerWidth-12)f=i-m.width-12;if(e<12)e=t+12;d.style.left=`${Math.max(12,f)}px`,d.style.top=`${Math.max(12,e)}px`})}function E(){if(I)I.style.opacity="0"}function tt(){if(I)I.remove(),I=null}function X(l){let i=l.closest(".port[data-port]");if(i){let m=i.getAttribute("data-port")||"";return{text:`${i.getAttribute("data-port-device")||""}:${m}`,element:i}}let t=l.closest(".link-group[data-link-id]");if(t){let m=t.getAttribute("data-link-from")||"",p=t.getAttribute("data-link-to")||"",f=t.getAttribute("data-link-bandwidth"),e=t.getAttribute("data-link-vlan"),u=`${m} ↔ ${p}`;if(f)u+=`
39
- ${f}`;if(e)u+=`
40
- VLAN: ${e}`;return{text:u,element:t}}let d=l.closest(".node[data-id]");if(d){let m=d.getAttribute("data-device-json");if(m)try{let p=JSON.parse(m),f=[];if(p.label)f.push(Array.isArray(p.label)?p.label.join(" "):p.label);if(p.type)f.push(`Type: ${p.type}`);if(p.vendor)f.push(`Vendor: ${p.vendor}`);if(p.model)f.push(`Model: ${p.model}`);return{text:f.join(`
41
- `),element:d}}catch{}return{text:d.getAttribute("data-id")||"",element:d}}return null}function H(l){let i=l.getAttribute("viewBox");if(!i)return null;let t=i.split(/\s+|,/).map(Number);if(t.length!==4||t.some(Number.isNaN))return null;return{x:t[0],y:t[1],width:t[2],height:t[3]}}function j(l,i,t){l.setAttribute("viewBox",`${i.x} ${i.y} ${i.width} ${i.height}`),t?.()}function Y(l){return{x:l.x,y:l.y,width:l.width,height:l.height}}var nt=1.2;function lt(l){let i=typeof l.target==="string"?document.querySelector(l.target):l.target;if(!i)throw Error("Target not found");let t=i.closest("svg")||i.querySelector("svg")||i;if(!(t instanceof SVGSVGElement))throw Error("SVG element not found");let d=l.panZoom?.enabled??!0,m=l.panZoom?.minScale??0.1,p=l.panZoom?.maxScale??10,f=H(t);if(!f){let n=t.getBBox();f={x:n.x,y:n.y,width:n.width,height:n.height},j(t,f,L)}let e=!1,u={active:!1,startX:0,startY:0,startViewBox:null},N=null,ft=()=>{if(!f)return 1;let n=H(t);if(!n)return 1;return f.width/n.width},rt=()=>{if(f)j(t,f,L)},_=(n)=>{if(n.length<2)return 0;let r=n[1].clientX-n[0].clientX,y=n[1].clientY-n[0].clientY;return Math.hypot(r,y)},O=(n)=>({x:(n[0].clientX+n[1].clientX)/2,y:(n[0].clientY+n[1].clientY)/2}),U=(n)=>{if(n.touches.length>=2&&d){n.preventDefault();let r=_(n.touches),y=O(n.touches),x=H(t);if(x){let $=t.getBoundingClientRect();N={initialDist:r,startViewBox:Y(x),centerX:x.x+x.width*((y.x-$.left)/$.width),centerY:x.y+x.height*((y.y-$.top)/$.height)}}if(e)E(),s(null),e=!1}},F=(n)=>{if(n.touches.length>=2&&N&&d){n.preventDefault();let r=_(n.touches),y=O(n.touches);if(r===0||N.initialDist===0)return;let x=r/N.initialDist,$=N.startViewBox.width/x,k=N.startViewBox.height/x;if(!f)return;let G=f.width/$;if(G<m||G>p)return;let q=t.getBoundingClientRect(),K=(y.x-q.left)/q.width,Q=(y.y-q.top)/q.height;j(t,{x:N.centerX-$*K,y:N.centerY-k*Q,width:$,height:k},L)}},w=(n)=>{if(n.touches.length<2)N=null},V=(n)=>{if(n.button!==0||!d)return;let r=H(t);if(!r)return;if(u.active=!0,u.startX=n.clientX,u.startY=n.clientY,u.startViewBox=Y(r),t.style.cursor="grabbing",e)E(),s(null),e=!1},W=(n)=>{if(u.active&&u.startViewBox&&d){let r=n.clientX-u.startX,y=n.clientY-u.startY,x=t.getBoundingClientRect(),$=u.startViewBox.width/x.width,k=u.startViewBox.height/x.height;j(t,{x:u.startViewBox.x-r*$,y:u.startViewBox.y-y*k,width:u.startViewBox.width,height:u.startViewBox.height},L)}else if(!u.active){let r=X(n.target);if(r)R(r.text,n.clientX,n.clientY),s(r.element);else E(),s(null)}},Z=()=>{u.active=!1,u.startViewBox=null,t.style.cursor=""},S=()=>{if(!u.active&&!e)E(),s(null)},B=(n)=>{if(!d)return;n.preventDefault();let r=H(t);if(!r||!f)return;let y=t.getBoundingClientRect(),x=r.x+r.width*((n.clientX-y.left)/y.width),$=r.y+r.height*((n.clientY-y.top)/y.height),k=n.deltaY>0?nt:1/nt,G=r.width*k,q=r.height*k,K=f.width/G;if(K<m||K>p)return;let Q=(n.clientX-y.left)/y.width,dt=(n.clientY-y.top)/y.height;j(t,{x:x-G*Q,y:$-q*dt,width:G,height:q},L)},C=null,P=(n)=>{if(n.touches.length===1)C={x:n.touches[0].clientX,y:n.touches[0].clientY,time:Date.now()};else C=null},v=(n)=>{if(!C||n.touches.length>0){C=null;return}let r=n.changedTouches[0],y=r.clientX-C.x,x=r.clientY-C.y,$=Date.now()-C.time;if(Math.hypot(y,x)<10&&$<300){let k=document.elementFromPoint(r.clientX,r.clientY);if(k){let G=X(k);if(G)R(G.text,r.clientX,r.clientY),s(G.element),e=!0;else if(e)E(),s(null),e=!1}}C=null},z=null,T="",D=()=>{if(g()){let n=t.getAttribute("viewBox")||"";if(n!==T)T=n,L()}z=requestAnimationFrame(D)},J=()=>{L()};return z=requestAnimationFrame(D),t.addEventListener("touchstart",U,{passive:!1}),t.addEventListener("touchmove",F,{passive:!1}),t.addEventListener("touchend",w),t.addEventListener("touchcancel",w),t.addEventListener("touchstart",P,{passive:!0}),t.addEventListener("touchend",v),t.addEventListener("mousedown",V),document.addEventListener("mousemove",W),document.addEventListener("mouseup",Z),t.addEventListener("mouseleave",S),t.addEventListener("wheel",B,{passive:!1}),window.addEventListener("scroll",J,!0),window.addEventListener("resize",J),{destroy:()=>{if(z!==null)cancelAnimationFrame(z);t.removeEventListener("touchstart",U),t.removeEventListener("touchmove",F),t.removeEventListener("touchend",w),t.removeEventListener("touchcancel",w),t.removeEventListener("touchstart",P),t.removeEventListener("touchend",v),t.removeEventListener("mousedown",V),document.removeEventListener("mousemove",W),document.removeEventListener("mouseup",Z),t.removeEventListener("mouseleave",S),t.removeEventListener("wheel",B),window.removeEventListener("scroll",J,!0),window.removeEventListener("resize",J),tt(),h()},showDeviceModal:()=>{},hideModal:()=>{},showLinkTooltip:()=>{},hideTooltip:()=>{E(),s(null),e=!1},resetView:rt,getScale:ft}}var it={initInteractive:lt};window.ShumokuInteractive=it;})();
38
+ `,document.body.appendChild(R);return R}function l($,L,f){let C=Y0();C.textContent=$,C.style.opacity="1",requestAnimationFrame(()=>{let H=C.getBoundingClientRect(),J=12,N=L+12,K=f-H.height-12;if(N+H.width>window.innerWidth-12)N=L-H.width-12;if(K<12)K=f+12;C.style.left=`${Math.max(12,N)}px`,C.style.top=`${Math.max(12,K)}px`})}function V(){if(R)R.style.opacity="0"}function N0(){if(R)R.remove(),R=null}function d($){let L=$.closest(".port[data-port]");if(L){let H=L.getAttribute("data-port")||"";return{text:`${L.getAttribute("data-port-device")||""}:${H}`,element:L}}let f=$.closest(".link-group[data-link-id]");if(f){let H=f.getAttribute("data-link-from")||"",J=f.getAttribute("data-link-to")||"",N=f.getAttribute("data-link-bandwidth"),K=f.getAttribute("data-link-vlan"),Q=f.getAttribute("data-link-json"),m=H.startsWith("__export_"),D=J.startsWith("__export_");if((m||D)&&Q)try{let I=JSON.parse(Q).metadata;if(I?._destDevice){let B=m?J:H,E=I._destPort?`${I._destDevice}:${I._destPort}`:I._destDevice,M=`${B} ↔ ${E}`;if(N)M+=`
39
+ ${N}`;if(K)M+=`
40
+ VLAN: ${K}`;return{text:M,element:f}}}catch{}let P=`${H} ${J}`;if(N)P+=`
41
+ ${N}`;if(K)P+=`
42
+ VLAN: ${K}`;return{text:P,element:f}}let C=$.closest(".node[data-id]");if(C){let H=C.getAttribute("data-device-json");if(H)try{let J=JSON.parse(H),N=[];if(J.label)N.push(Array.isArray(J.label)?J.label.join(" "):J.label);if(J.type)N.push(`Type: ${J.type}`);if(J.vendor)N.push(`Vendor: ${J.vendor}`);if(J.model)N.push(`Model: ${J.model}`);return{text:N.join(`
43
+ `),element:C}}catch{}return{text:C.getAttribute("data-id")||"",element:C}}return null}function W($){let L=$.getAttribute("viewBox");if(!L)return null;let f=L.split(/\s+|,/).map(Number);if(f.length!==4||f.some(Number.isNaN))return null;return{x:f[0],y:f[1],width:f[2],height:f[3]}}function x($,L,f){$.setAttribute("viewBox",`${L.x} ${L.y} ${L.width} ${L.height}`),f?.()}function c($){return{x:$.x,y:$.y,width:$.width,height:$.height}}var G0=1.2;function C0($){let L=typeof $.target==="string"?document.querySelector($.target):$.target;if(!L)throw Error("Target not found");let f=L.closest("svg")||L.querySelector("svg")||L;if(!(f instanceof SVGSVGElement))throw Error("SVG element not found");let C=$.panZoom?.enabled??!0,H=$.panZoom?.minScale??0.1,J=$.panZoom?.maxScale??10,N=W(f);if(!N){let y=f.getBBox();N={x:y.x,y:y.y,width:y.width,height:y.height},x(f,N,n)}let K=!1,Q={active:!1,startX:0,startY:0,startViewBox:null},m=null,D=()=>{if(!N)return 1;let y=W(f);if(!y)return 1;return N.width/y.width},P=()=>{if(N)x(f,N,n)},b=(y)=>{if(y.length<2)return 0;let G=y[1].clientX-y[0].clientX,q=y[1].clientY-y[0].clientY;return Math.hypot(G,q)},I=(y)=>({x:(y[0].clientX+y[1].clientX)/2,y:(y[0].clientY+y[1].clientY)/2}),B=(y)=>{if(y.touches.length>=2&&C){y.preventDefault();let G=b(y.touches),q=I(y.touches),z=W(f);if(z){let k=f.getBoundingClientRect();m={initialDist:G,startViewBox:c(z),centerX:z.x+z.width*((q.x-k.left)/k.width),centerY:z.y+z.height*((q.y-k.top)/k.height)}}if(K)V(),_(null),K=!1}},E=(y)=>{if(y.touches.length>=2&&m&&C){y.preventDefault();let G=b(y.touches),q=I(y.touches);if(G===0||m.initialDist===0)return;let z=G/m.initialDist,k=m.startViewBox.width/z,X=m.startViewBox.height/z;if(!N)return;let U=N.width/k;if(U<H||U>J)return;let Y=f.getBoundingClientRect(),F=(q.x-Y.left)/Y.width,r=(q.y-Y.top)/Y.height;x(f,{x:m.centerX-k*F,y:m.centerY-X*r,width:k,height:X},n)}},M=(y)=>{if(y.touches.length<2)m=null},p=(y)=>{if(y.button!==0||!C)return;let G=W(f);if(!G)return;if(Q.active=!0,Q.startX=y.clientX,Q.startY=y.clientY,Q.startViewBox=c(G),f.style.cursor="grabbing",K)V(),_(null),K=!1},i=(y)=>{if(Q.active&&Q.startViewBox&&C){let G=y.clientX-Q.startX,q=y.clientY-Q.startY,z=f.getBoundingClientRect(),k=Q.startViewBox.width/z.width,X=Q.startViewBox.height/z.height;x(f,{x:Q.startViewBox.x-G*k,y:Q.startViewBox.y-q*X,width:Q.startViewBox.width,height:Q.startViewBox.height},n)}else if(!Q.active){let G=d(y.target);if(G)l(G.text,y.clientX,y.clientY),_(G.element);else V(),_(null)}},s=()=>{Q.active=!1,Q.startViewBox=null,f.style.cursor=""},g=()=>{if(!Q.active&&!K)V(),_(null)},h=(y)=>{if(!C)return;y.preventDefault();let G=W(f);if(!G||!N)return;let q=f.getBoundingClientRect(),z=G.x+G.width*((y.clientX-q.left)/q.width),k=G.y+G.height*((y.clientY-q.top)/q.height),X=y.deltaY>0?G0:1/G0,U=G.width*X,Y=G.height*X,F=N.width/U;if(F<H||F>J)return;let r=(y.clientX-q.left)/q.width,J0=(y.clientY-q.top)/q.height;x(f,{x:z-U*r,y:k-Y*J0,width:U,height:Y},n)},a=(y)=>{let q=y.target.closest(".subgraph[data-has-sheet]");if(q){let z=q.getAttribute("data-sheet-id");if(z)y.preventDefault(),y.stopPropagation(),T(z)}},T=(y)=>{let G=new CustomEvent("shumoku:navigate",{detail:{sheetId:y},bubbles:!0});document.dispatchEvent(G)},O=null,t=(y)=>{if(y.touches.length===1)O={x:y.touches[0].clientX,y:y.touches[0].clientY,time:Date.now()};else O=null},o=(y)=>{if(!O||y.touches.length>0){O=null;return}let G=y.changedTouches[0],q=G.clientX-O.x,z=G.clientY-O.y,k=Date.now()-O.time;if(Math.hypot(q,z)<10&&k<300){let X=document.elementFromPoint(G.clientX,G.clientY);if(X){let U=X.closest(".subgraph[data-has-sheet]");if(U){let F=U.getAttribute("data-sheet-id");if(F){T(F),O=null;return}}let Y=d(X);if(Y)l(Y.text,G.clientX,G.clientY),_(Y.element),K=!0;else if(K)V(),_(null),K=!1}}O=null},S=null,e="",f0=()=>{if($0()){let y=f.getAttribute("viewBox")||"";if(y!==e)e=y,n()}S=requestAnimationFrame(f0)},w=()=>{n()};return S=requestAnimationFrame(f0),f.addEventListener("touchstart",B,{passive:!1}),f.addEventListener("touchmove",E,{passive:!1}),f.addEventListener("touchend",M),f.addEventListener("touchcancel",M),f.addEventListener("touchstart",t,{passive:!0}),f.addEventListener("touchend",o),f.addEventListener("mousedown",p),document.addEventListener("mousemove",i),document.addEventListener("mouseup",s),f.addEventListener("mouseleave",g),f.addEventListener("wheel",h,{passive:!1}),f.addEventListener("click",a),window.addEventListener("scroll",w,!0),window.addEventListener("resize",w),{destroy:()=>{if(S!==null)cancelAnimationFrame(S);f.removeEventListener("touchstart",B),f.removeEventListener("touchmove",E),f.removeEventListener("touchend",M),f.removeEventListener("touchcancel",M),f.removeEventListener("touchstart",t),f.removeEventListener("touchend",o),f.removeEventListener("mousedown",p),document.removeEventListener("mousemove",i),document.removeEventListener("mouseup",s),f.removeEventListener("mouseleave",g),f.removeEventListener("wheel",h),f.removeEventListener("click",a),window.removeEventListener("scroll",w,!0),window.removeEventListener("resize",w),N0(),L0()},showDeviceModal:()=>{},hideModal:()=>{},showLinkTooltip:()=>{},hideTooltip:()=>{V(),_(null),K=!1},resetView:P,getScale:D,navigateToSheet:T}}var q0={initInteractive:C0};window.ShumokuInteractive=q0;})();