@rm-graph/core 0.1.10 → 0.1.12

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,4 @@
1
+ export { applyLicenseKey, clearStoredLicense, configureLicenseEncryption, decryptLicense, encryptLicense, getCurrentPassphrase, getLicenseStatus, getLicenseStorageKey, hasEncryptedLicense, hasStoredLicense, isLicenseApplied, loadEncryptedLicense, loadLicense, removeLicense, resetPassphrase, saveEncryptedLicense, setLicense, validateLicenseFormat } from './chunk-PKJHVSFI.mjs';
2
+ import './chunk-BJTO5JO5.mjs';
3
+ //# sourceMappingURL=license-MTK7WNNA.mjs.map
4
+ //# sourceMappingURL=license-MTK7WNNA.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"license-MTK7WNNA.mjs"}
@@ -0,0 +1,81 @@
1
+ 'use strict';
2
+
3
+ var chunkRLQMHQEV_js = require('./chunk-RLQMHQEV.js');
4
+ require('./chunk-DGUM43GV.js');
5
+
6
+
7
+
8
+ Object.defineProperty(exports, "applyLicenseKey", {
9
+ enumerable: true,
10
+ get: function () { return chunkRLQMHQEV_js.applyLicenseKey; }
11
+ });
12
+ Object.defineProperty(exports, "clearStoredLicense", {
13
+ enumerable: true,
14
+ get: function () { return chunkRLQMHQEV_js.clearStoredLicense; }
15
+ });
16
+ Object.defineProperty(exports, "configureLicenseEncryption", {
17
+ enumerable: true,
18
+ get: function () { return chunkRLQMHQEV_js.configureLicenseEncryption; }
19
+ });
20
+ Object.defineProperty(exports, "decryptLicense", {
21
+ enumerable: true,
22
+ get: function () { return chunkRLQMHQEV_js.decryptLicense; }
23
+ });
24
+ Object.defineProperty(exports, "encryptLicense", {
25
+ enumerable: true,
26
+ get: function () { return chunkRLQMHQEV_js.encryptLicense; }
27
+ });
28
+ Object.defineProperty(exports, "getCurrentPassphrase", {
29
+ enumerable: true,
30
+ get: function () { return chunkRLQMHQEV_js.getCurrentPassphrase; }
31
+ });
32
+ Object.defineProperty(exports, "getLicenseStatus", {
33
+ enumerable: true,
34
+ get: function () { return chunkRLQMHQEV_js.getLicenseStatus; }
35
+ });
36
+ Object.defineProperty(exports, "getLicenseStorageKey", {
37
+ enumerable: true,
38
+ get: function () { return chunkRLQMHQEV_js.getLicenseStorageKey; }
39
+ });
40
+ Object.defineProperty(exports, "hasEncryptedLicense", {
41
+ enumerable: true,
42
+ get: function () { return chunkRLQMHQEV_js.hasEncryptedLicense; }
43
+ });
44
+ Object.defineProperty(exports, "hasStoredLicense", {
45
+ enumerable: true,
46
+ get: function () { return chunkRLQMHQEV_js.hasStoredLicense; }
47
+ });
48
+ Object.defineProperty(exports, "isLicenseApplied", {
49
+ enumerable: true,
50
+ get: function () { return chunkRLQMHQEV_js.isLicenseApplied; }
51
+ });
52
+ Object.defineProperty(exports, "loadEncryptedLicense", {
53
+ enumerable: true,
54
+ get: function () { return chunkRLQMHQEV_js.loadEncryptedLicense; }
55
+ });
56
+ Object.defineProperty(exports, "loadLicense", {
57
+ enumerable: true,
58
+ get: function () { return chunkRLQMHQEV_js.loadLicense; }
59
+ });
60
+ Object.defineProperty(exports, "removeLicense", {
61
+ enumerable: true,
62
+ get: function () { return chunkRLQMHQEV_js.removeLicense; }
63
+ });
64
+ Object.defineProperty(exports, "resetPassphrase", {
65
+ enumerable: true,
66
+ get: function () { return chunkRLQMHQEV_js.resetPassphrase; }
67
+ });
68
+ Object.defineProperty(exports, "saveEncryptedLicense", {
69
+ enumerable: true,
70
+ get: function () { return chunkRLQMHQEV_js.saveEncryptedLicense; }
71
+ });
72
+ Object.defineProperty(exports, "setLicense", {
73
+ enumerable: true,
74
+ get: function () { return chunkRLQMHQEV_js.setLicense; }
75
+ });
76
+ Object.defineProperty(exports, "validateLicenseFormat", {
77
+ enumerable: true,
78
+ get: function () { return chunkRLQMHQEV_js.validateLicenseFormat; }
79
+ });
80
+ //# sourceMappingURL=license-U7ZNTU6D.js.map
81
+ //# sourceMappingURL=license-U7ZNTU6D.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"license-U7ZNTU6D.js"}
@@ -1,32 +1,33 @@
1
1
  'use strict';
2
2
 
3
- var chunkKATRK3C3_js = require('../chunk-KATRK3C3.js');
3
+ var chunk4JQVY6S5_js = require('../chunk-4JQVY6S5.js');
4
+ require('../chunk-DGUM43GV.js');
4
5
 
5
6
 
6
7
 
7
8
  Object.defineProperty(exports, "ThemeManager", {
8
9
  enumerable: true,
9
- get: function () { return chunkKATRK3C3_js.ThemeManager; }
10
+ get: function () { return chunk4JQVY6S5_js.ThemeManager; }
10
11
  });
11
12
  Object.defineProperty(exports, "darkTheme", {
12
13
  enumerable: true,
13
- get: function () { return chunkKATRK3C3_js.darkTheme; }
14
+ get: function () { return chunk4JQVY6S5_js.darkTheme; }
14
15
  });
15
16
  Object.defineProperty(exports, "getThemeManager", {
16
17
  enumerable: true,
17
- get: function () { return chunkKATRK3C3_js.getThemeManager; }
18
+ get: function () { return chunk4JQVY6S5_js.getThemeManager; }
18
19
  });
19
20
  Object.defineProperty(exports, "lightTheme", {
20
21
  enumerable: true,
21
- get: function () { return chunkKATRK3C3_js.lightTheme; }
22
+ get: function () { return chunk4JQVY6S5_js.lightTheme; }
22
23
  });
23
24
  Object.defineProperty(exports, "midnightTheme", {
24
25
  enumerable: true,
25
- get: function () { return chunkKATRK3C3_js.midnightTheme; }
26
+ get: function () { return chunk4JQVY6S5_js.midnightTheme; }
26
27
  });
27
28
  Object.defineProperty(exports, "modernTheme", {
28
29
  enumerable: true,
29
- get: function () { return chunkKATRK3C3_js.modernTheme; }
30
+ get: function () { return chunk4JQVY6S5_js.modernTheme; }
30
31
  });
31
32
  //# sourceMappingURL=index.js.map
32
33
  //# sourceMappingURL=index.js.map
@@ -1,3 +1,4 @@
1
- export { ThemeManager, darkTheme, getThemeManager, lightTheme, midnightTheme, modernTheme } from '../chunk-Q2ZHY445.mjs';
1
+ export { ThemeManager, darkTheme, getThemeManager, lightTheme, midnightTheme, modernTheme } from '../chunk-7GF5X23V.mjs';
2
+ import '../chunk-BJTO5JO5.mjs';
2
3
  //# sourceMappingURL=index.mjs.map
3
4
  //# sourceMappingURL=index.mjs.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rm-graph/core",
3
- "version": "0.1.10",
3
+ "version": "0.1.12",
4
4
  "description": "RM-Graphs Core - Charting library built on SciChart",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.mjs",
@@ -21,6 +21,16 @@
21
21
  "dist",
22
22
  "README.md"
23
23
  ],
24
+ "scripts": {
25
+ "build": "tsup",
26
+ "dev": "tsup --watch",
27
+ "test": "vitest",
28
+ "test:run": "vitest run",
29
+ "test:coverage": "vitest run --coverage",
30
+ "lint": "eslint src --ext .ts",
31
+ "clean": "rimraf dist",
32
+ "typecheck": "tsc --noEmit"
33
+ },
24
34
  "keywords": [
25
35
  "charts",
26
36
  "scichart",
@@ -40,14 +50,6 @@
40
50
  "vitest": "^1.2.0"
41
51
  },
42
52
  "peerDependencies": {},
43
- "sideEffects": false,
44
- "scripts": {
45
- "build": "tsup",
46
- "dev": "tsup --watch",
47
- "test": "vitest",
48
- "test:run": "vitest run",
49
- "lint": "eslint src --ext .ts",
50
- "clean": "rimraf dist",
51
- "typecheck": "tsc --noEmit"
52
- }
53
- }
53
+ "sideEffects": false
54
+ }
55
+
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/themes/defaultTheme.ts","../src/themes/ThemeManager.ts"],"names":[],"mappings":"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","file":"chunk-KATRK3C3.js","sourcesContent":["import type { ThemeConfig } from \"../types\";\r\n\r\n/**\r\n * Default light theme - clean white background with subtle grid\r\n */\r\nexport const lightTheme: ThemeConfig = {\r\n name: \"light\",\r\n backgroundColor: \"#f8f9fa\",\r\n textColor: \"#495057\",\r\n fontFamily:\r\n 'system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif',\r\n colorPalette: [\r\n \"#4285f4\", // Blue (Channel 1)\r\n \"#34a853\", // Green (Channel 2)\r\n \"#fbbc04\", // Orange/Yellow (Channel 3)\r\n \"#ea4335\", // Red (Channel 4)\r\n \"#9c27b0\", // Purple\r\n \"#00bcd4\", // Cyan\r\n \"#ff9800\", // Orange\r\n \"#8bc34a\", // Light Green\r\n \"#e91e63\", // Pink\r\n \"#607d8b\", // Blue Grey\r\n ],\r\n axis: {\r\n lineColor: \"#dee2e6\",\r\n labelColor: \"#6c757d\",\r\n titleColor: \"#495057\",\r\n gridLineColor: \"#e9ecef\",\r\n },\r\n tooltip: {\r\n backgroundColor: \"#212529\",\r\n textColor: \"#ffffff\",\r\n borderColor: \"#495057\",\r\n borderRadius: 6,\r\n },\r\n legend: {\r\n textColor: \"#495057\",\r\n backgroundColor: \"transparent\",\r\n },\r\n title: {\r\n color: \"#212529\",\r\n fontSize: 18,\r\n fontWeight: \"600\",\r\n },\r\n};\r\n\r\n/**\r\n * Default dark theme\r\n */\r\nexport const darkTheme: ThemeConfig = {\r\n name: \"dark\",\r\n backgroundColor: \"#0f172a\",\r\n textColor: \"#e2e8f0\",\r\n fontFamily:\r\n 'system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif',\r\n colorPalette: [\r\n \"#818cf8\", // Indigo (lighter)\r\n \"#fbbf24\", // Amber (lighter)\r\n \"#34d399\", // Emerald (lighter)\r\n \"#f87171\", // Red (lighter)\r\n \"#a78bfa\", // Violet (lighter)\r\n \"#22d3ee\", // Cyan (lighter)\r\n \"#fb923c\", // Orange (lighter)\r\n \"#a3e635\", // Lime (lighter)\r\n \"#f472b6\", // Pink (lighter)\r\n \"#2dd4bf\", // Teal (lighter)\r\n ],\r\n axis: {\r\n lineColor: \"#334155\",\r\n labelColor: \"#94a3b8\",\r\n titleColor: \"#cbd5e1\",\r\n gridLineColor: \"#1e293b\",\r\n },\r\n tooltip: {\r\n backgroundColor: \"#1e293b\",\r\n textColor: \"#f1f5f9\",\r\n borderColor: \"#475569\",\r\n borderRadius: 8,\r\n },\r\n legend: {\r\n textColor: \"#cbd5e1\",\r\n backgroundColor: \"transparent\",\r\n },\r\n title: {\r\n color: \"#f8fafc\",\r\n fontSize: 18,\r\n fontWeight: \"600\",\r\n },\r\n};\r\n\r\n/**\r\n * Modern gradient theme with vibrant colors\r\n */\r\nexport const modernTheme: ThemeConfig = {\r\n name: \"modern\",\r\n backgroundColor: \"#fafafa\",\r\n textColor: \"#18181b\",\r\n fontFamily: '\"Inter\", system-ui, sans-serif',\r\n colorPalette: [\r\n \"#7c3aed\", // Violet\r\n \"#2563eb\", // Blue\r\n \"#059669\", // Green\r\n \"#dc2626\", // Red\r\n \"#d97706\", // Amber\r\n \"#0891b2\", // Cyan\r\n \"#c026d3\", // Fuchsia\r\n \"#4f46e5\", // Indigo\r\n \"#16a34a\", // Green\r\n \"#9333ea\", // Purple\r\n ],\r\n axis: {\r\n lineColor: \"#e4e4e7\",\r\n labelColor: \"#71717a\",\r\n titleColor: \"#3f3f46\",\r\n gridLineColor: \"#f4f4f5\",\r\n },\r\n tooltip: {\r\n backgroundColor: \"#18181b\",\r\n textColor: \"#fafafa\",\r\n borderColor: \"#27272a\",\r\n borderRadius: 12,\r\n },\r\n legend: {\r\n textColor: \"#3f3f46\",\r\n backgroundColor: \"transparent\",\r\n },\r\n title: {\r\n color: \"#09090b\",\r\n fontSize: 20,\r\n fontWeight: \"700\",\r\n },\r\n};\r\n\r\n/**\r\n * Midnight theme - deep dark with neon accents\r\n */\r\nexport const midnightTheme: ThemeConfig = {\r\n name: \"midnight\",\r\n backgroundColor: \"#030712\",\r\n textColor: \"#d1d5db\",\r\n fontFamily: '\"JetBrains Mono\", monospace',\r\n colorPalette: [\r\n \"#22d3ee\", // Cyan\r\n \"#a855f7\", // Purple\r\n \"#4ade80\", // Green\r\n \"#fb7185\", // Pink\r\n \"#facc15\", // Yellow\r\n \"#38bdf8\", // Sky\r\n \"#f472b6\", // Pink\r\n \"#2dd4bf\", // Teal\r\n \"#c084fc\", // Purple\r\n \"#fbbf24\", // Amber\r\n ],\r\n axis: {\r\n lineColor: \"#1f2937\",\r\n labelColor: \"#6b7280\",\r\n titleColor: \"#9ca3af\",\r\n gridLineColor: \"#111827\",\r\n },\r\n tooltip: {\r\n backgroundColor: \"#111827\",\r\n textColor: \"#f9fafb\",\r\n borderColor: \"#22d3ee\",\r\n borderRadius: 4,\r\n },\r\n legend: {\r\n textColor: \"#9ca3af\",\r\n backgroundColor: \"transparent\",\r\n },\r\n title: {\r\n color: \"#f3f4f6\",\r\n fontSize: 18,\r\n fontWeight: \"500\",\r\n },\r\n};\r\n\r\n","import type { ThemeConfig } from \"../types\";\r\nimport { lightTheme, darkTheme, modernTheme, midnightTheme } from \"./defaultTheme\";\r\n\r\n/**\r\n * ThemeManager - Manages chart themes and provides theme resolution\r\n */\r\nexport class ThemeManager {\r\n private static instance: ThemeManager;\r\n private themes: Map<string, ThemeConfig> = new Map();\r\n private currentTheme: string = \"light\";\r\n\r\n private constructor() {\r\n // Register built-in themes\r\n this.registerTheme(lightTheme);\r\n this.registerTheme(darkTheme);\r\n this.registerTheme(modernTheme);\r\n this.registerTheme(midnightTheme);\r\n }\r\n\r\n /**\r\n * Get the singleton instance of ThemeManager\r\n */\r\n public static getInstance(): ThemeManager {\r\n if (!ThemeManager.instance) {\r\n ThemeManager.instance = new ThemeManager();\r\n }\r\n return ThemeManager.instance;\r\n }\r\n\r\n /**\r\n * Register a custom theme\r\n */\r\n public registerTheme(theme: ThemeConfig): void {\r\n if (!theme.name) {\r\n throw new Error(\"Theme must have a name\");\r\n }\r\n this.themes.set(theme.name, theme);\r\n }\r\n\r\n /**\r\n * Get a theme by name\r\n */\r\n public getTheme(name: string): ThemeConfig {\r\n const theme = this.themes.get(name);\r\n if (!theme) {\r\n console.warn(`Theme \"${name}\" not found, falling back to light theme`);\r\n return this.themes.get(\"light\")!;\r\n }\r\n return theme;\r\n }\r\n\r\n /**\r\n * Set the global default theme\r\n */\r\n public setDefaultTheme(name: string): void {\r\n if (!this.themes.has(name)) {\r\n throw new Error(`Theme \"${name}\" is not registered`);\r\n }\r\n this.currentTheme = name;\r\n }\r\n\r\n /**\r\n * Get the current default theme name\r\n */\r\n public getDefaultThemeName(): string {\r\n return this.currentTheme;\r\n }\r\n\r\n /**\r\n * Get the current default theme configuration\r\n */\r\n public getDefaultTheme(): ThemeConfig {\r\n return this.themes.get(this.currentTheme)!;\r\n }\r\n\r\n /**\r\n * Get all registered theme names\r\n */\r\n public getAvailableThemes(): string[] {\r\n return Array.from(this.themes.keys());\r\n }\r\n\r\n /**\r\n * Check if a theme is registered\r\n */\r\n public hasTheme(name: string): boolean {\r\n return this.themes.has(name);\r\n }\r\n\r\n /**\r\n * Resolve theme from string name or ThemeConfig object\r\n */\r\n public resolveTheme(theme?: ThemeConfig | string): ThemeConfig {\r\n if (!theme) {\r\n return this.getDefaultTheme();\r\n }\r\n if (typeof theme === \"string\") {\r\n return this.getTheme(theme);\r\n }\r\n // Merge with default theme for any missing properties\r\n return this.mergeThemes(this.getDefaultTheme(), theme);\r\n }\r\n\r\n /**\r\n * Merge two themes, with override taking precedence\r\n */\r\n public mergeThemes(base: ThemeConfig, override: Partial<ThemeConfig>): ThemeConfig {\r\n return {\r\n ...base,\r\n ...override,\r\n axis: {\r\n ...base.axis,\r\n ...override.axis,\r\n },\r\n tooltip: {\r\n ...base.tooltip,\r\n ...override.tooltip,\r\n },\r\n legend: {\r\n ...base.legend,\r\n ...override.legend,\r\n },\r\n title: {\r\n ...base.title,\r\n ...override.title,\r\n },\r\n colorPalette: override.colorPalette ?? base.colorPalette,\r\n };\r\n }\r\n\r\n /**\r\n * Get color from palette by index (cycles through palette)\r\n */\r\n public getColorFromPalette(theme: ThemeConfig, index: number): string {\r\n const palette = theme.colorPalette ?? lightTheme.colorPalette!;\r\n return palette[index % palette.length];\r\n }\r\n}\r\n\r\n// Export singleton getter for convenience\r\nexport const getThemeManager = (): ThemeManager => ThemeManager.getInstance();\r\n\r\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/themes/defaultTheme.ts","../src/themes/ThemeManager.ts"],"names":[],"mappings":"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","file":"chunk-Q2ZHY445.mjs","sourcesContent":["import type { ThemeConfig } from \"../types\";\r\n\r\n/**\r\n * Default light theme - clean white background with subtle grid\r\n */\r\nexport const lightTheme: ThemeConfig = {\r\n name: \"light\",\r\n backgroundColor: \"#f8f9fa\",\r\n textColor: \"#495057\",\r\n fontFamily:\r\n 'system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif',\r\n colorPalette: [\r\n \"#4285f4\", // Blue (Channel 1)\r\n \"#34a853\", // Green (Channel 2)\r\n \"#fbbc04\", // Orange/Yellow (Channel 3)\r\n \"#ea4335\", // Red (Channel 4)\r\n \"#9c27b0\", // Purple\r\n \"#00bcd4\", // Cyan\r\n \"#ff9800\", // Orange\r\n \"#8bc34a\", // Light Green\r\n \"#e91e63\", // Pink\r\n \"#607d8b\", // Blue Grey\r\n ],\r\n axis: {\r\n lineColor: \"#dee2e6\",\r\n labelColor: \"#6c757d\",\r\n titleColor: \"#495057\",\r\n gridLineColor: \"#e9ecef\",\r\n },\r\n tooltip: {\r\n backgroundColor: \"#212529\",\r\n textColor: \"#ffffff\",\r\n borderColor: \"#495057\",\r\n borderRadius: 6,\r\n },\r\n legend: {\r\n textColor: \"#495057\",\r\n backgroundColor: \"transparent\",\r\n },\r\n title: {\r\n color: \"#212529\",\r\n fontSize: 18,\r\n fontWeight: \"600\",\r\n },\r\n};\r\n\r\n/**\r\n * Default dark theme\r\n */\r\nexport const darkTheme: ThemeConfig = {\r\n name: \"dark\",\r\n backgroundColor: \"#0f172a\",\r\n textColor: \"#e2e8f0\",\r\n fontFamily:\r\n 'system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif',\r\n colorPalette: [\r\n \"#818cf8\", // Indigo (lighter)\r\n \"#fbbf24\", // Amber (lighter)\r\n \"#34d399\", // Emerald (lighter)\r\n \"#f87171\", // Red (lighter)\r\n \"#a78bfa\", // Violet (lighter)\r\n \"#22d3ee\", // Cyan (lighter)\r\n \"#fb923c\", // Orange (lighter)\r\n \"#a3e635\", // Lime (lighter)\r\n \"#f472b6\", // Pink (lighter)\r\n \"#2dd4bf\", // Teal (lighter)\r\n ],\r\n axis: {\r\n lineColor: \"#334155\",\r\n labelColor: \"#94a3b8\",\r\n titleColor: \"#cbd5e1\",\r\n gridLineColor: \"#1e293b\",\r\n },\r\n tooltip: {\r\n backgroundColor: \"#1e293b\",\r\n textColor: \"#f1f5f9\",\r\n borderColor: \"#475569\",\r\n borderRadius: 8,\r\n },\r\n legend: {\r\n textColor: \"#cbd5e1\",\r\n backgroundColor: \"transparent\",\r\n },\r\n title: {\r\n color: \"#f8fafc\",\r\n fontSize: 18,\r\n fontWeight: \"600\",\r\n },\r\n};\r\n\r\n/**\r\n * Modern gradient theme with vibrant colors\r\n */\r\nexport const modernTheme: ThemeConfig = {\r\n name: \"modern\",\r\n backgroundColor: \"#fafafa\",\r\n textColor: \"#18181b\",\r\n fontFamily: '\"Inter\", system-ui, sans-serif',\r\n colorPalette: [\r\n \"#7c3aed\", // Violet\r\n \"#2563eb\", // Blue\r\n \"#059669\", // Green\r\n \"#dc2626\", // Red\r\n \"#d97706\", // Amber\r\n \"#0891b2\", // Cyan\r\n \"#c026d3\", // Fuchsia\r\n \"#4f46e5\", // Indigo\r\n \"#16a34a\", // Green\r\n \"#9333ea\", // Purple\r\n ],\r\n axis: {\r\n lineColor: \"#e4e4e7\",\r\n labelColor: \"#71717a\",\r\n titleColor: \"#3f3f46\",\r\n gridLineColor: \"#f4f4f5\",\r\n },\r\n tooltip: {\r\n backgroundColor: \"#18181b\",\r\n textColor: \"#fafafa\",\r\n borderColor: \"#27272a\",\r\n borderRadius: 12,\r\n },\r\n legend: {\r\n textColor: \"#3f3f46\",\r\n backgroundColor: \"transparent\",\r\n },\r\n title: {\r\n color: \"#09090b\",\r\n fontSize: 20,\r\n fontWeight: \"700\",\r\n },\r\n};\r\n\r\n/**\r\n * Midnight theme - deep dark with neon accents\r\n */\r\nexport const midnightTheme: ThemeConfig = {\r\n name: \"midnight\",\r\n backgroundColor: \"#030712\",\r\n textColor: \"#d1d5db\",\r\n fontFamily: '\"JetBrains Mono\", monospace',\r\n colorPalette: [\r\n \"#22d3ee\", // Cyan\r\n \"#a855f7\", // Purple\r\n \"#4ade80\", // Green\r\n \"#fb7185\", // Pink\r\n \"#facc15\", // Yellow\r\n \"#38bdf8\", // Sky\r\n \"#f472b6\", // Pink\r\n \"#2dd4bf\", // Teal\r\n \"#c084fc\", // Purple\r\n \"#fbbf24\", // Amber\r\n ],\r\n axis: {\r\n lineColor: \"#1f2937\",\r\n labelColor: \"#6b7280\",\r\n titleColor: \"#9ca3af\",\r\n gridLineColor: \"#111827\",\r\n },\r\n tooltip: {\r\n backgroundColor: \"#111827\",\r\n textColor: \"#f9fafb\",\r\n borderColor: \"#22d3ee\",\r\n borderRadius: 4,\r\n },\r\n legend: {\r\n textColor: \"#9ca3af\",\r\n backgroundColor: \"transparent\",\r\n },\r\n title: {\r\n color: \"#f3f4f6\",\r\n fontSize: 18,\r\n fontWeight: \"500\",\r\n },\r\n};\r\n\r\n","import type { ThemeConfig } from \"../types\";\r\nimport { lightTheme, darkTheme, modernTheme, midnightTheme } from \"./defaultTheme\";\r\n\r\n/**\r\n * ThemeManager - Manages chart themes and provides theme resolution\r\n */\r\nexport class ThemeManager {\r\n private static instance: ThemeManager;\r\n private themes: Map<string, ThemeConfig> = new Map();\r\n private currentTheme: string = \"light\";\r\n\r\n private constructor() {\r\n // Register built-in themes\r\n this.registerTheme(lightTheme);\r\n this.registerTheme(darkTheme);\r\n this.registerTheme(modernTheme);\r\n this.registerTheme(midnightTheme);\r\n }\r\n\r\n /**\r\n * Get the singleton instance of ThemeManager\r\n */\r\n public static getInstance(): ThemeManager {\r\n if (!ThemeManager.instance) {\r\n ThemeManager.instance = new ThemeManager();\r\n }\r\n return ThemeManager.instance;\r\n }\r\n\r\n /**\r\n * Register a custom theme\r\n */\r\n public registerTheme(theme: ThemeConfig): void {\r\n if (!theme.name) {\r\n throw new Error(\"Theme must have a name\");\r\n }\r\n this.themes.set(theme.name, theme);\r\n }\r\n\r\n /**\r\n * Get a theme by name\r\n */\r\n public getTheme(name: string): ThemeConfig {\r\n const theme = this.themes.get(name);\r\n if (!theme) {\r\n console.warn(`Theme \"${name}\" not found, falling back to light theme`);\r\n return this.themes.get(\"light\")!;\r\n }\r\n return theme;\r\n }\r\n\r\n /**\r\n * Set the global default theme\r\n */\r\n public setDefaultTheme(name: string): void {\r\n if (!this.themes.has(name)) {\r\n throw new Error(`Theme \"${name}\" is not registered`);\r\n }\r\n this.currentTheme = name;\r\n }\r\n\r\n /**\r\n * Get the current default theme name\r\n */\r\n public getDefaultThemeName(): string {\r\n return this.currentTheme;\r\n }\r\n\r\n /**\r\n * Get the current default theme configuration\r\n */\r\n public getDefaultTheme(): ThemeConfig {\r\n return this.themes.get(this.currentTheme)!;\r\n }\r\n\r\n /**\r\n * Get all registered theme names\r\n */\r\n public getAvailableThemes(): string[] {\r\n return Array.from(this.themes.keys());\r\n }\r\n\r\n /**\r\n * Check if a theme is registered\r\n */\r\n public hasTheme(name: string): boolean {\r\n return this.themes.has(name);\r\n }\r\n\r\n /**\r\n * Resolve theme from string name or ThemeConfig object\r\n */\r\n public resolveTheme(theme?: ThemeConfig | string): ThemeConfig {\r\n if (!theme) {\r\n return this.getDefaultTheme();\r\n }\r\n if (typeof theme === \"string\") {\r\n return this.getTheme(theme);\r\n }\r\n // Merge with default theme for any missing properties\r\n return this.mergeThemes(this.getDefaultTheme(), theme);\r\n }\r\n\r\n /**\r\n * Merge two themes, with override taking precedence\r\n */\r\n public mergeThemes(base: ThemeConfig, override: Partial<ThemeConfig>): ThemeConfig {\r\n return {\r\n ...base,\r\n ...override,\r\n axis: {\r\n ...base.axis,\r\n ...override.axis,\r\n },\r\n tooltip: {\r\n ...base.tooltip,\r\n ...override.tooltip,\r\n },\r\n legend: {\r\n ...base.legend,\r\n ...override.legend,\r\n },\r\n title: {\r\n ...base.title,\r\n ...override.title,\r\n },\r\n colorPalette: override.colorPalette ?? base.colorPalette,\r\n };\r\n }\r\n\r\n /**\r\n * Get color from palette by index (cycles through palette)\r\n */\r\n public getColorFromPalette(theme: ThemeConfig, index: number): string {\r\n const palette = theme.colorPalette ?? lightTheme.colorPalette!;\r\n return palette[index % palette.length];\r\n }\r\n}\r\n\r\n// Export singleton getter for convenience\r\nexport const getThemeManager = (): ThemeManager => ThemeManager.getInstance();\r\n\r\n"]}