@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,22 +0,0 @@
1
- /**
2
- * Fallback Text Measurer
3
- * Uses character width approximation for SSR/Node.js environments
4
- */
5
- import type { TextMeasurer, TextMetrics, TextMeasureOptions } from './types.js';
6
- /**
7
- * Fallback text measurer using character width estimation
8
- */
9
- export declare class FallbackTextMeasurer implements TextMeasurer {
10
- private cache;
11
- private maxCacheSize;
12
- constructor(maxCacheSize?: number);
13
- measure(text: string, options: TextMeasureOptions): TextMetrics;
14
- measureLines(lines: string[], options: TextMeasureOptions): TextMetrics[];
15
- clearCache(): void;
16
- private addToCache;
17
- }
18
- /**
19
- * Create a fallback text measurer instance
20
- */
21
- export declare function createFallbackTextMeasurer(maxCacheSize?: number): TextMeasurer;
22
- //# sourceMappingURL=fallback-measurer.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fallback-measurer.d.ts","sourceRoot":"","sources":["../../../src/renderer/text-measurer/fallback-measurer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAqE/E;;GAEG;AACH,qBAAa,oBAAqB,YAAW,YAAY;IACvD,OAAO,CAAC,KAAK,CAAsC;IACnD,OAAO,CAAC,YAAY,CAAQ;gBAEhB,YAAY,SAAO;IAI/B,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB,GAAG,WAAW;IA6B/D,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,kBAAkB,GAAG,WAAW,EAAE;IAIzE,UAAU,IAAI,IAAI;IAIlB,OAAO,CAAC,UAAU;CASnB;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,YAAY,CAE9E"}
@@ -1,113 +0,0 @@
1
- /**
2
- * Fallback Text Measurer
3
- * Uses character width approximation for SSR/Node.js environments
4
- */
5
- /**
6
- * Average character width ratios for common fonts
7
- * Values are multiplied by fontSize to get pixel width
8
- */
9
- const CHAR_WIDTH_RATIOS = {
10
- // Sans-serif fonts (narrower)
11
- 'sans-serif': 0.55,
12
- 'arial': 0.55,
13
- 'helvetica': 0.55,
14
- 'verdana': 0.58,
15
- 'tahoma': 0.55,
16
- 'segoe ui': 0.52,
17
- 'roboto': 0.53,
18
- // Monospace fonts (fixed width)
19
- 'monospace': 0.60,
20
- 'courier': 0.60,
21
- 'courier new': 0.60,
22
- 'consolas': 0.55,
23
- // System fonts
24
- '-apple-system': 0.52,
25
- 'blinkmacsystemfont': 0.52,
26
- 'system-ui': 0.52,
27
- // Default fallback
28
- 'default': 0.55,
29
- };
30
- /**
31
- * Bold weight adds approximately 5-10% to width
32
- */
33
- const BOLD_WIDTH_MULTIPLIER = 1.08;
34
- /**
35
- * Line height ratio (height = fontSize * ratio)
36
- */
37
- const LINE_HEIGHT_RATIO = 1.2;
38
- /**
39
- * Cache key generator
40
- */
41
- function getCacheKey(text, options) {
42
- return `${options.fontFamily}|${options.fontSize}|${options.fontWeight || 'normal'}|${text}`;
43
- }
44
- /**
45
- * Get character width ratio for a font family
46
- */
47
- function getCharWidthRatio(fontFamily) {
48
- const normalized = fontFamily.toLowerCase().trim();
49
- // Check for exact match
50
- if (CHAR_WIDTH_RATIOS[normalized]) {
51
- return CHAR_WIDTH_RATIOS[normalized];
52
- }
53
- // Check if any known font is in the font-family list
54
- for (const [font, ratio] of Object.entries(CHAR_WIDTH_RATIOS)) {
55
- if (normalized.includes(font)) {
56
- return ratio;
57
- }
58
- }
59
- return CHAR_WIDTH_RATIOS['default'];
60
- }
61
- /**
62
- * Fallback text measurer using character width estimation
63
- */
64
- export class FallbackTextMeasurer {
65
- cache = new Map();
66
- maxCacheSize;
67
- constructor(maxCacheSize = 1000) {
68
- this.maxCacheSize = maxCacheSize;
69
- }
70
- measure(text, options) {
71
- const cacheKey = getCacheKey(text, options);
72
- // Check cache
73
- const cached = this.cache.get(cacheKey);
74
- if (cached) {
75
- return cached;
76
- }
77
- // Calculate width
78
- const charWidthRatio = getCharWidthRatio(options.fontFamily);
79
- let width = text.length * options.fontSize * charWidthRatio;
80
- // Adjust for bold
81
- if (options.fontWeight === 'bold') {
82
- width *= BOLD_WIDTH_MULTIPLIER;
83
- }
84
- // Height is based on line height ratio
85
- const height = options.fontSize * LINE_HEIGHT_RATIO;
86
- const result = { width, height };
87
- // Store in cache
88
- this.addToCache(cacheKey, result);
89
- return result;
90
- }
91
- measureLines(lines, options) {
92
- return lines.map(line => this.measure(line, options));
93
- }
94
- clearCache() {
95
- this.cache.clear();
96
- }
97
- addToCache(key, value) {
98
- if (this.cache.size >= this.maxCacheSize) {
99
- const firstKey = this.cache.keys().next().value;
100
- if (firstKey) {
101
- this.cache.delete(firstKey);
102
- }
103
- }
104
- this.cache.set(key, value);
105
- }
106
- }
107
- /**
108
- * Create a fallback text measurer instance
109
- */
110
- export function createFallbackTextMeasurer(maxCacheSize) {
111
- return new FallbackTextMeasurer(maxCacheSize);
112
- }
113
- //# sourceMappingURL=fallback-measurer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fallback-measurer.js","sourceRoot":"","sources":["../../../src/renderer/text-measurer/fallback-measurer.ts"],"names":[],"mappings":"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"}
@@ -1,13 +0,0 @@
1
- /**
2
- * Text Measurer Module
3
- */
4
- export type { TextMeasurer, TextMetrics, TextMeasureOptions } from './types.js';
5
- export { BrowserTextMeasurer, createBrowserTextMeasurer } from './browser-measurer.js';
6
- export { FallbackTextMeasurer, createFallbackTextMeasurer } from './fallback-measurer.js';
7
- import type { TextMeasurer } from './types.js';
8
- /**
9
- * Create a text measurer appropriate for the current environment
10
- * Uses Canvas API in browser, falls back to character width estimation in Node.js
11
- */
12
- export declare function createTextMeasurer(maxCacheSize?: number): TextMeasurer;
13
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/renderer/text-measurer/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAC/E,OAAO,EAAE,mBAAmB,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAA;AACtF,OAAO,EAAE,oBAAoB,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAA;AAEzF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAI9C;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,YAAY,CAsBtE"}
@@ -1,35 +0,0 @@
1
- /**
2
- * Text Measurer Module
3
- */
4
- export { BrowserTextMeasurer, createBrowserTextMeasurer } from './browser-measurer.js';
5
- export { FallbackTextMeasurer, createFallbackTextMeasurer } from './fallback-measurer.js';
6
- import { createBrowserTextMeasurer } from './browser-measurer.js';
7
- import { createFallbackTextMeasurer } from './fallback-measurer.js';
8
- /**
9
- * Create a text measurer appropriate for the current environment
10
- * Uses Canvas API in browser, falls back to character width estimation in Node.js
11
- */
12
- export function createTextMeasurer(maxCacheSize) {
13
- // Check if we're in a browser environment with Canvas support
14
- if (typeof window !== 'undefined' && typeof OffscreenCanvas !== 'undefined') {
15
- try {
16
- return createBrowserTextMeasurer(maxCacheSize);
17
- }
18
- catch {
19
- // Fall back if Canvas initialization fails
20
- return createFallbackTextMeasurer(maxCacheSize);
21
- }
22
- }
23
- // Check for document-based canvas (older browsers)
24
- if (typeof document !== 'undefined') {
25
- try {
26
- return createBrowserTextMeasurer(maxCacheSize);
27
- }
28
- catch {
29
- return createFallbackTextMeasurer(maxCacheSize);
30
- }
31
- }
32
- // SSR / Node.js environment
33
- return createFallbackTextMeasurer(maxCacheSize);
34
- }
35
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/renderer/text-measurer/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,mBAAmB,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAA;AACtF,OAAO,EAAE,oBAAoB,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAA;AAGzF,OAAO,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAA;AACjE,OAAO,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAA;AAEnE;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,YAAqB;IACtD,8DAA8D;IAC9D,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,eAAe,KAAK,WAAW,EAAE,CAAC;QAC5E,IAAI,CAAC;YACH,OAAO,yBAAyB,CAAC,YAAY,CAAC,CAAA;QAChD,CAAC;QAAC,MAAM,CAAC;YACP,2CAA2C;YAC3C,OAAO,0BAA0B,CAAC,YAAY,CAAC,CAAA;QACjD,CAAC;IACH,CAAC;IAED,mDAAmD;IACnD,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE,CAAC;QACpC,IAAI,CAAC;YACH,OAAO,yBAAyB,CAAC,YAAY,CAAC,CAAA;QAChD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,0BAA0B,CAAC,YAAY,CAAC,CAAA;QACjD,CAAC;IACH,CAAC;IAED,4BAA4B;IAC5B,OAAO,0BAA0B,CAAC,YAAY,CAAC,CAAA;AACjD,CAAC"}
@@ -1,30 +0,0 @@
1
- /**
2
- * Text Measurer Types
3
- */
4
- /**
5
- * Text measurement result
6
- */
7
- export interface TextMetrics {
8
- width: number;
9
- height: number;
10
- }
11
- /**
12
- * Text measurement options
13
- */
14
- export interface TextMeasureOptions {
15
- fontFamily: string;
16
- fontSize: number;
17
- fontWeight?: 'normal' | 'bold';
18
- }
19
- /**
20
- * Text measurer interface
21
- */
22
- export interface TextMeasurer {
23
- /** Measure single line of text */
24
- measure(text: string, options: TextMeasureOptions): TextMetrics;
25
- /** Measure multiple lines */
26
- measureLines(lines: string[], options: TextMeasureOptions): TextMetrics[];
27
- /** Clear measurement cache */
28
- clearCache(): void;
29
- }
30
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/renderer/text-measurer/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;CACf;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAA;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,kCAAkC;IAClC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB,GAAG,WAAW,CAAA;IAE/D,6BAA6B;IAC7B,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,kBAAkB,GAAG,WAAW,EAAE,CAAA;IAEzE,8BAA8B;IAC9B,UAAU,IAAI,IAAI,CAAA;CACnB"}
@@ -1,5 +0,0 @@
1
- /**
2
- * Text Measurer Types
3
- */
4
- export {};
5
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/renderer/text-measurer/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -1,29 +0,0 @@
1
- /**
2
- * Renderer Theme Configuration
3
- */
4
- import type { ThemeType } from '../models/index.js';
5
- export interface RendererThemeColors {
6
- backgroundColor: string;
7
- defaultNodeFill: string;
8
- defaultNodeStroke: string;
9
- defaultLinkStroke: string;
10
- labelColor: string;
11
- labelSecondaryColor: string;
12
- subgraphFill: string;
13
- subgraphStroke: string;
14
- subgraphLabelColor: string;
15
- portFill: string;
16
- portStroke: string;
17
- portLabelBg: string;
18
- portLabelColor: string;
19
- endpointLabelBg: string;
20
- endpointLabelStroke: string;
21
- }
22
- export type ThemeColors = RendererThemeColors;
23
- export declare const LIGHT_THEME: ThemeColors;
24
- export declare const DARK_THEME: ThemeColors;
25
- export declare function getThemeColors(theme?: ThemeType): ThemeColors;
26
- export declare function getIconTheme(theme?: ThemeType): 'light' | 'dark' | 'default';
27
- export declare const VLAN_COLORS: string[];
28
- export declare function getVlanColor(vlan?: number[]): string | undefined;
29
- //# sourceMappingURL=theme.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../../src/renderer/theme.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAMnD,MAAM,WAAW,mBAAmB;IAClC,eAAe,EAAE,MAAM,CAAA;IACvB,eAAe,EAAE,MAAM,CAAA;IACvB,iBAAiB,EAAE,MAAM,CAAA;IACzB,iBAAiB,EAAE,MAAM,CAAA;IACzB,UAAU,EAAE,MAAM,CAAA;IAClB,mBAAmB,EAAE,MAAM,CAAA;IAC3B,YAAY,EAAE,MAAM,CAAA;IACpB,cAAc,EAAE,MAAM,CAAA;IACtB,kBAAkB,EAAE,MAAM,CAAA;IAC1B,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,EAAE,MAAM,CAAA;IACnB,cAAc,EAAE,MAAM,CAAA;IACtB,eAAe,EAAE,MAAM,CAAA;IACvB,mBAAmB,EAAE,MAAM,CAAA;CAC5B;AAGD,MAAM,MAAM,WAAW,GAAG,mBAAmB,CAAA;AAM7C,eAAO,MAAM,WAAW,EAAE,WAgBzB,CAAA;AAED,eAAO,MAAM,UAAU,EAAE,WAgBxB,CAAA;AAMD,wBAAgB,cAAc,CAAC,KAAK,CAAC,EAAE,SAAS,GAAG,WAAW,CAE7D;AAED,wBAAgB,YAAY,CAAC,KAAK,CAAC,EAAE,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,CAE5E;AAMD,eAAO,MAAM,WAAW,UAavB,CAAA;AAED,wBAAgB,YAAY,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,SAAS,CAchE"}
@@ -1,80 +0,0 @@
1
- /**
2
- * Renderer Theme Configuration
3
- */
4
- // ============================================
5
- // Theme Presets
6
- // ============================================
7
- export const LIGHT_THEME = {
8
- backgroundColor: '#ffffff',
9
- defaultNodeFill: '#e2e8f0',
10
- defaultNodeStroke: '#64748b',
11
- defaultLinkStroke: '#94a3b8',
12
- labelColor: '#1e293b',
13
- labelSecondaryColor: '#64748b',
14
- subgraphFill: '#f8fafc',
15
- subgraphStroke: '#cbd5e1',
16
- subgraphLabelColor: '#374151',
17
- portFill: '#475569',
18
- portStroke: '#1e293b',
19
- portLabelBg: '#1e293b',
20
- portLabelColor: '#ffffff',
21
- endpointLabelBg: '#ffffff',
22
- endpointLabelStroke: '#cbd5e1',
23
- };
24
- export const DARK_THEME = {
25
- backgroundColor: '#1e293b',
26
- defaultNodeFill: '#334155',
27
- defaultNodeStroke: '#64748b',
28
- defaultLinkStroke: '#64748b',
29
- labelColor: '#f1f5f9',
30
- labelSecondaryColor: '#94a3b8',
31
- subgraphFill: '#0f172a',
32
- subgraphStroke: '#475569',
33
- subgraphLabelColor: '#e2e8f0',
34
- portFill: '#64748b',
35
- portStroke: '#94a3b8',
36
- portLabelBg: '#0f172a',
37
- portLabelColor: '#f1f5f9',
38
- endpointLabelBg: '#1e293b',
39
- endpointLabelStroke: '#475569',
40
- };
41
- // ============================================
42
- // Theme Utilities
43
- // ============================================
44
- export function getThemeColors(theme) {
45
- return theme === 'dark' ? DARK_THEME : LIGHT_THEME;
46
- }
47
- export function getIconTheme(theme) {
48
- return theme === 'dark' ? 'dark' : 'light';
49
- }
50
- // ============================================
51
- // VLAN Colors
52
- // ============================================
53
- export const VLAN_COLORS = [
54
- '#dc2626', // Red
55
- '#ea580c', // Orange
56
- '#ca8a04', // Yellow
57
- '#16a34a', // Green
58
- '#0891b2', // Cyan
59
- '#2563eb', // Blue
60
- '#7c3aed', // Violet
61
- '#c026d3', // Magenta
62
- '#db2777', // Pink
63
- '#059669', // Emerald
64
- '#0284c7', // Light Blue
65
- '#4f46e5', // Indigo
66
- ];
67
- export function getVlanColor(vlan) {
68
- if (!vlan || vlan.length === 0) {
69
- return undefined;
70
- }
71
- if (vlan.length === 1) {
72
- const colorIndex = vlan[0] % VLAN_COLORS.length;
73
- return VLAN_COLORS[colorIndex];
74
- }
75
- // Multiple VLANs (trunk): use combined hash
76
- const hash = vlan.reduce((acc, v) => acc + v, 0);
77
- const colorIndex = hash % VLAN_COLORS.length;
78
- return VLAN_COLORS[colorIndex];
79
- }
80
- //# sourceMappingURL=theme.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"theme.js","sourceRoot":"","sources":["../../src/renderer/theme.ts"],"names":[],"mappings":"AAAA;;GAEG;AA6BH,+CAA+C;AAC/C,gBAAgB;AAChB,+CAA+C;AAE/C,MAAM,CAAC,MAAM,WAAW,GAAgB;IACtC,eAAe,EAAE,SAAS;IAC1B,eAAe,EAAE,SAAS;IAC1B,iBAAiB,EAAE,SAAS;IAC5B,iBAAiB,EAAE,SAAS;IAC5B,UAAU,EAAE,SAAS;IACrB,mBAAmB,EAAE,SAAS;IAC9B,YAAY,EAAE,SAAS;IACvB,cAAc,EAAE,SAAS;IACzB,kBAAkB,EAAE,SAAS;IAC7B,QAAQ,EAAE,SAAS;IACnB,UAAU,EAAE,SAAS;IACrB,WAAW,EAAE,SAAS;IACtB,cAAc,EAAE,SAAS;IACzB,eAAe,EAAE,SAAS;IAC1B,mBAAmB,EAAE,SAAS;CAC/B,CAAA;AAED,MAAM,CAAC,MAAM,UAAU,GAAgB;IACrC,eAAe,EAAE,SAAS;IAC1B,eAAe,EAAE,SAAS;IAC1B,iBAAiB,EAAE,SAAS;IAC5B,iBAAiB,EAAE,SAAS;IAC5B,UAAU,EAAE,SAAS;IACrB,mBAAmB,EAAE,SAAS;IAC9B,YAAY,EAAE,SAAS;IACvB,cAAc,EAAE,SAAS;IACzB,kBAAkB,EAAE,SAAS;IAC7B,QAAQ,EAAE,SAAS;IACnB,UAAU,EAAE,SAAS;IACrB,WAAW,EAAE,SAAS;IACtB,cAAc,EAAE,SAAS;IACzB,eAAe,EAAE,SAAS;IAC1B,mBAAmB,EAAE,SAAS;CAC/B,CAAA;AAED,+CAA+C;AAC/C,kBAAkB;AAClB,+CAA+C;AAE/C,MAAM,UAAU,cAAc,CAAC,KAAiB;IAC9C,OAAO,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,CAAA;AACpD,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAAiB;IAC5C,OAAO,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAA;AAC5C,CAAC;AAED,+CAA+C;AAC/C,cAAc;AACd,+CAA+C;AAE/C,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,SAAS,EAAE,MAAM;IACjB,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,QAAQ;IACnB,SAAS,EAAE,OAAO;IAClB,SAAS,EAAE,OAAO;IAClB,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,UAAU;IACrB,SAAS,EAAE,OAAO;IAClB,SAAS,EAAE,UAAU;IACrB,SAAS,EAAE,aAAa;IACxB,SAAS,EAAE,SAAS;CACrB,CAAA;AAED,MAAM,UAAU,YAAY,CAAC,IAAe;IAC1C,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/B,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,MAAM,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,MAAM,CAAA;QAC/C,OAAO,WAAW,CAAC,UAAU,CAAC,CAAA;IAChC,CAAC;IAED,4CAA4C;IAC5C,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,CAAA;IAChD,MAAM,UAAU,GAAG,IAAI,GAAG,WAAW,CAAC,MAAM,CAAA;IAC5C,OAAO,WAAW,CAAC,UAAU,CAAC,CAAA;AAChC,CAAC"}