@chatbi-v/core 2.1.10 → 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.
- package/dist/adapter/index.cjs +208 -0
- package/dist/adapter/index.d.cts +201 -0
- package/dist/adapter/index.d.ts +201 -0
- package/dist/adapter/index.mjs +10 -0
- package/dist/chunk-BOR237QK.mjs +180 -0
- package/dist/index.cjs +4725 -1980
- package/dist/index.d.cts +2824 -808
- package/dist/index.d.ts +2824 -808
- package/dist/index.mjs +4514 -1931
- package/package.json +19 -11
- package/dist/chunk-4AJ6VW5G.mjs +0 -50
- package/dist/config-manager-F3GYW4BE.mjs +0 -8
|
@@ -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
|
+
};
|