@chatbi-v/core 2.1.9 → 3.0.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.
@@ -0,0 +1,180 @@
1
+ // src/adapter/AdapterInterface.ts
2
+ var BaseAdapter = class {
3
+ /**
4
+ * 模板方法 - 三层变换默认实现
5
+ * primitives -> semantics -> component tokens
6
+ */
7
+ transformTokens(tokens, options) {
8
+ const semantics = options?.colorScheme === "dark" && tokens.semanticsDark ? tokens.semanticsDark : tokens.semantics;
9
+ return this.semanticsToComponents(semantics, options);
10
+ }
11
+ /**
12
+ * 将语义 Token 转换为组件级别配置
13
+ * 由子类实现具体转换逻辑
14
+ */
15
+ semanticsToComponents(semantics, options) {
16
+ return {};
17
+ }
18
+ transform(tokens, options) {
19
+ return this.transformTokens(tokens, options);
20
+ }
21
+ };
22
+
23
+ // src/adapter/AdapterRegistry.ts
24
+ var AdapterRegistry = class {
25
+ adapters = /* @__PURE__ */ new Map();
26
+ states = /* @__PURE__ */ new Map();
27
+ activeAdapterId = null;
28
+ currentTokens = {};
29
+ /**
30
+ * 注册适配器
31
+ * @param adapter 要注册的 UIAdapter 实例
32
+ */
33
+ register(adapter) {
34
+ if (this.adapters.has(adapter.id)) {
35
+ console.warn(`[AdapterRegistry] Adapter ${adapter.id} already registered, overwriting`);
36
+ }
37
+ this.adapters.set(adapter.id, adapter);
38
+ this.states.set(adapter.id, {
39
+ adapter,
40
+ status: "registered",
41
+ registeredAt: /* @__PURE__ */ new Date()
42
+ });
43
+ }
44
+ /**
45
+ * 注销适配器
46
+ * @param adapterId 要注销的适配器 ID
47
+ * @returns 是否成功注销
48
+ */
49
+ unregister(adapterId) {
50
+ if (this.activeAdapterId === adapterId) {
51
+ console.warn(`[AdapterRegistry] Cannot unregister active adapter ${adapterId}`);
52
+ return false;
53
+ }
54
+ const adapter = this.adapters.get(adapterId);
55
+ if (adapter) {
56
+ adapter.remove();
57
+ }
58
+ this.adapters.delete(adapterId);
59
+ this.states.delete(adapterId);
60
+ return true;
61
+ }
62
+ /**
63
+ * 获取指定适配器
64
+ * @param adapterId 适配器 ID
65
+ * @returns 适配器实例或 undefined
66
+ */
67
+ get(adapterId) {
68
+ return this.adapters.get(adapterId);
69
+ }
70
+ /**
71
+ * 获取所有已注册的适配器
72
+ * @returns 所有适配器实例数组
73
+ */
74
+ getAll() {
75
+ return Array.from(this.adapters.values());
76
+ }
77
+ /**
78
+ * 获取所有适配器状态
79
+ * @returns 所有适配器状态数组
80
+ */
81
+ getAllStates() {
82
+ return Array.from(this.states.values());
83
+ }
84
+ /**
85
+ * 设置活跃适配器
86
+ * @param adapterId 要激活的适配器 ID
87
+ * @returns 是否成功激活
88
+ */
89
+ setActive(adapterId) {
90
+ const adapter = this.adapters.get(adapterId);
91
+ if (!adapter) {
92
+ console.error(`[AdapterRegistry] Adapter ${adapterId} not found`);
93
+ return false;
94
+ }
95
+ if (this.activeAdapterId) {
96
+ const current = this.adapters.get(this.activeAdapterId);
97
+ current?.remove();
98
+ this.updateState(this.activeAdapterId, "inactive");
99
+ }
100
+ const transformedTheme = adapter.transform(this.currentTokens);
101
+ adapter.apply(transformedTheme);
102
+ this.activeAdapterId = adapterId;
103
+ this.updateState(adapterId, "active");
104
+ return true;
105
+ }
106
+ /**
107
+ * 获取当前活跃适配器
108
+ * @returns 活跃适配器实例或 undefined
109
+ */
110
+ getActive() {
111
+ return this.activeAdapterId ? this.adapters.get(this.activeAdapterId) : void 0;
112
+ }
113
+ /**
114
+ * 使用当前活跃适配器转换 Token
115
+ * @param tokens DesignSystem Token
116
+ * @param options 转换选项
117
+ * @returns 转换后的主题配置
118
+ */
119
+ transform(tokens, options) {
120
+ const adapter = this.getActive();
121
+ if (!adapter) {
122
+ console.warn("[AdapterRegistry] No active adapter, returning raw tokens");
123
+ return tokens;
124
+ }
125
+ return adapter.transform(tokens, options);
126
+ }
127
+ /**
128
+ * 检查是否支持指定目标库
129
+ * @param targetLibrary 目标库标识
130
+ * @returns 是否支持
131
+ */
132
+ supports(targetLibrary) {
133
+ return Array.from(this.adapters.values()).some(
134
+ (adapter) => adapter.targetLibrary === targetLibrary
135
+ );
136
+ }
137
+ /**
138
+ * 获取支持指定目标库的所有适配器
139
+ * @param targetLibrary 目标库标识
140
+ * @returns 适配器数组
141
+ */
142
+ getAdaptersForTarget(targetLibrary) {
143
+ return this.getAll().filter(
144
+ (adapter) => adapter.targetLibrary === targetLibrary
145
+ );
146
+ }
147
+ /**
148
+ * 设置当前 DesignSystem Token
149
+ * @param tokens DesignSystem 实例
150
+ */
151
+ setTokens(tokens) {
152
+ this.currentTokens = tokens;
153
+ }
154
+ /**
155
+ * 获取当前 DesignSystem Token
156
+ * @returns 当前 Token
157
+ */
158
+ getTokens() {
159
+ return this.currentTokens;
160
+ }
161
+ /**
162
+ * 内部方法 - 更新适配器状态
163
+ */
164
+ updateState(adapterId, status) {
165
+ const state = this.states.get(adapterId);
166
+ if (state) {
167
+ state.status = status;
168
+ if (status === "active") {
169
+ state.activatedAt = /* @__PURE__ */ new Date();
170
+ }
171
+ }
172
+ }
173
+ };
174
+ var adapterRegistry = new AdapterRegistry();
175
+
176
+ export {
177
+ BaseAdapter,
178
+ AdapterRegistry,
179
+ adapterRegistry
180
+ };