@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.
- package/README.md +56 -0
- package/dist/constants.d.ts +23 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +25 -0
- package/dist/constants.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/layout/hierarchical.d.ts +12 -39
- package/dist/layout/hierarchical.d.ts.map +1 -1
- package/dist/layout/hierarchical.js +697 -1015
- package/dist/layout/hierarchical.js.map +1 -1
- package/dist/models/types.d.ts +30 -0
- package/dist/models/types.d.ts.map +1 -1
- package/dist/models/types.js.map +1 -1
- package/dist/renderer/svg.d.ts +31 -5
- package/dist/renderer/svg.d.ts.map +1 -1
- package/dist/renderer/svg.js +312 -85
- package/dist/renderer/svg.js.map +1 -1
- package/package.json +1 -1
- package/src/constants.ts +35 -0
- package/src/index.ts +3 -0
- package/src/layout/hierarchical.ts +805 -1127
- package/src/models/types.ts +37 -0
- package/src/renderer/svg.ts +368 -88
- package/dist/renderer/components/index.d.ts +0 -8
- package/dist/renderer/components/index.d.ts.map +0 -1
- package/dist/renderer/components/index.js +0 -8
- package/dist/renderer/components/index.js.map +0 -1
- package/dist/renderer/components/link-renderer.d.ts +0 -11
- package/dist/renderer/components/link-renderer.d.ts.map +0 -1
- package/dist/renderer/components/link-renderer.js +0 -340
- package/dist/renderer/components/link-renderer.js.map +0 -1
- package/dist/renderer/components/node-renderer.d.ts +0 -14
- package/dist/renderer/components/node-renderer.d.ts.map +0 -1
- package/dist/renderer/components/node-renderer.js +0 -242
- package/dist/renderer/components/node-renderer.js.map +0 -1
- package/dist/renderer/components/port-renderer.d.ts +0 -8
- package/dist/renderer/components/port-renderer.d.ts.map +0 -1
- package/dist/renderer/components/port-renderer.js +0 -85
- package/dist/renderer/components/port-renderer.js.map +0 -1
- package/dist/renderer/components/subgraph-renderer.d.ts +0 -13
- package/dist/renderer/components/subgraph-renderer.d.ts.map +0 -1
- package/dist/renderer/components/subgraph-renderer.js +0 -85
- package/dist/renderer/components/subgraph-renderer.js.map +0 -1
- package/dist/renderer/icon-registry/index.d.ts +0 -6
- package/dist/renderer/icon-registry/index.d.ts.map +0 -1
- package/dist/renderer/icon-registry/index.js +0 -5
- package/dist/renderer/icon-registry/index.js.map +0 -1
- package/dist/renderer/icon-registry/registry.d.ts +0 -25
- package/dist/renderer/icon-registry/registry.d.ts.map +0 -1
- package/dist/renderer/icon-registry/registry.js +0 -85
- package/dist/renderer/icon-registry/registry.js.map +0 -1
- package/dist/renderer/icon-registry/types.d.ts +0 -44
- package/dist/renderer/icon-registry/types.d.ts.map +0 -1
- package/dist/renderer/icon-registry/types.js +0 -5
- package/dist/renderer/icon-registry/types.js.map +0 -1
- package/dist/renderer/render-model/builder.d.ts +0 -43
- package/dist/renderer/render-model/builder.d.ts.map +0 -1
- package/dist/renderer/render-model/builder.js +0 -646
- package/dist/renderer/render-model/builder.js.map +0 -1
- package/dist/renderer/render-model/index.d.ts +0 -6
- package/dist/renderer/render-model/index.d.ts.map +0 -1
- package/dist/renderer/render-model/index.js +0 -5
- package/dist/renderer/render-model/index.js.map +0 -1
- package/dist/renderer/render-model/types.d.ts +0 -216
- package/dist/renderer/render-model/types.d.ts.map +0 -1
- package/dist/renderer/render-model/types.js +0 -6
- package/dist/renderer/render-model/types.js.map +0 -1
- package/dist/renderer/renderer-types.d.ts +0 -55
- package/dist/renderer/renderer-types.d.ts.map +0 -1
- package/dist/renderer/renderer-types.js +0 -5
- package/dist/renderer/renderer-types.js.map +0 -1
- package/dist/renderer/svg-builder.d.ts +0 -152
- package/dist/renderer/svg-builder.d.ts.map +0 -1
- package/dist/renderer/svg-builder.js +0 -176
- package/dist/renderer/svg-builder.js.map +0 -1
- package/dist/renderer/svg-dom/builders/defs.d.ts +0 -10
- package/dist/renderer/svg-dom/builders/defs.d.ts.map +0 -1
- package/dist/renderer/svg-dom/builders/defs.js +0 -82
- package/dist/renderer/svg-dom/builders/defs.js.map +0 -1
- package/dist/renderer/svg-dom/builders/index.d.ts +0 -9
- package/dist/renderer/svg-dom/builders/index.d.ts.map +0 -1
- package/dist/renderer/svg-dom/builders/index.js +0 -9
- package/dist/renderer/svg-dom/builders/index.js.map +0 -1
- package/dist/renderer/svg-dom/builders/link.d.ts +0 -18
- package/dist/renderer/svg-dom/builders/link.d.ts.map +0 -1
- package/dist/renderer/svg-dom/builders/link.js +0 -188
- package/dist/renderer/svg-dom/builders/link.js.map +0 -1
- package/dist/renderer/svg-dom/builders/node.d.ts +0 -15
- package/dist/renderer/svg-dom/builders/node.d.ts.map +0 -1
- package/dist/renderer/svg-dom/builders/node.js +0 -262
- package/dist/renderer/svg-dom/builders/node.js.map +0 -1
- package/dist/renderer/svg-dom/builders/subgraph.d.ts +0 -14
- package/dist/renderer/svg-dom/builders/subgraph.d.ts.map +0 -1
- package/dist/renderer/svg-dom/builders/subgraph.js +0 -63
- package/dist/renderer/svg-dom/builders/subgraph.js.map +0 -1
- package/dist/renderer/svg-dom/builders/utils.d.ts +0 -40
- package/dist/renderer/svg-dom/builders/utils.d.ts.map +0 -1
- package/dist/renderer/svg-dom/builders/utils.js +0 -79
- package/dist/renderer/svg-dom/builders/utils.js.map +0 -1
- package/dist/renderer/svg-dom/index.d.ts +0 -9
- package/dist/renderer/svg-dom/index.d.ts.map +0 -1
- package/dist/renderer/svg-dom/index.js +0 -7
- package/dist/renderer/svg-dom/index.js.map +0 -1
- package/dist/renderer/svg-dom/interaction.d.ts +0 -69
- package/dist/renderer/svg-dom/interaction.d.ts.map +0 -1
- package/dist/renderer/svg-dom/interaction.js +0 -296
- package/dist/renderer/svg-dom/interaction.js.map +0 -1
- package/dist/renderer/svg-dom/renderer.d.ts +0 -47
- package/dist/renderer/svg-dom/renderer.d.ts.map +0 -1
- package/dist/renderer/svg-dom/renderer.js +0 -188
- package/dist/renderer/svg-dom/renderer.js.map +0 -1
- package/dist/renderer/svg-string/builders/defs.d.ts +0 -10
- package/dist/renderer/svg-string/builders/defs.d.ts.map +0 -1
- package/dist/renderer/svg-string/builders/defs.js +0 -43
- package/dist/renderer/svg-string/builders/defs.js.map +0 -1
- package/dist/renderer/svg-string/builders/link.d.ts +0 -10
- package/dist/renderer/svg-string/builders/link.d.ts.map +0 -1
- package/dist/renderer/svg-string/builders/link.js +0 -149
- package/dist/renderer/svg-string/builders/link.js.map +0 -1
- package/dist/renderer/svg-string/builders/node.d.ts +0 -10
- package/dist/renderer/svg-string/builders/node.d.ts.map +0 -1
- package/dist/renderer/svg-string/builders/node.js +0 -134
- package/dist/renderer/svg-string/builders/node.js.map +0 -1
- package/dist/renderer/svg-string/builders/subgraph.d.ts +0 -10
- package/dist/renderer/svg-string/builders/subgraph.d.ts.map +0 -1
- package/dist/renderer/svg-string/builders/subgraph.js +0 -59
- package/dist/renderer/svg-string/builders/subgraph.js.map +0 -1
- package/dist/renderer/svg-string/index.d.ts +0 -5
- package/dist/renderer/svg-string/index.d.ts.map +0 -1
- package/dist/renderer/svg-string/index.js +0 -5
- package/dist/renderer/svg-string/index.js.map +0 -1
- package/dist/renderer/svg-string/renderer.d.ts +0 -17
- package/dist/renderer/svg-string/renderer.d.ts.map +0 -1
- package/dist/renderer/svg-string/renderer.js +0 -53
- package/dist/renderer/svg-string/renderer.js.map +0 -1
- package/dist/renderer/text-measurer/browser-measurer.d.ts +0 -25
- package/dist/renderer/text-measurer/browser-measurer.d.ts.map +0 -1
- package/dist/renderer/text-measurer/browser-measurer.js +0 -85
- package/dist/renderer/text-measurer/browser-measurer.js.map +0 -1
- package/dist/renderer/text-measurer/fallback-measurer.d.ts +0 -22
- package/dist/renderer/text-measurer/fallback-measurer.d.ts.map +0 -1
- package/dist/renderer/text-measurer/fallback-measurer.js +0 -113
- package/dist/renderer/text-measurer/fallback-measurer.js.map +0 -1
- package/dist/renderer/text-measurer/index.d.ts +0 -13
- package/dist/renderer/text-measurer/index.d.ts.map +0 -1
- package/dist/renderer/text-measurer/index.js +0 -35
- package/dist/renderer/text-measurer/index.js.map +0 -1
- package/dist/renderer/text-measurer/types.d.ts +0 -30
- package/dist/renderer/text-measurer/types.d.ts.map +0 -1
- package/dist/renderer/text-measurer/types.js +0 -5
- package/dist/renderer/text-measurer/types.js.map +0 -1
- package/dist/renderer/theme.d.ts +0 -29
- package/dist/renderer/theme.d.ts.map +0 -1
- package/dist/renderer/theme.js +0 -80
- 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 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/renderer/text-measurer/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|
package/dist/renderer/theme.d.ts
DELETED
|
@@ -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"}
|
package/dist/renderer/theme.js
DELETED
|
@@ -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"}
|