@tdesign-react/chat 1.0.0-beta.4 → 1.0.1
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/es/_util/reactify.js +1 -1
- package/es/_util/useDynamicStyle.js +1 -1
- package/es/chat-actionbar/index.js +1 -1
- package/es/chat-attachments/index.js +1 -1
- package/es/{chatbot → chat-engine}/components/provider/agent-state.js +1 -1
- package/es/chat-engine/components/provider/agent-state.js.map +1 -0
- package/es/{chatbot → chat-engine}/components/toolcall/index.js +1 -1
- package/es/{chatbot → chat-engine}/components/toolcall/registry.js +1 -1
- package/es/chat-engine/components/toolcall/registry.js.map +1 -0
- package/es/{chatbot → chat-engine}/components/toolcall/render.js +1 -2
- package/es/chat-engine/components/toolcall/render.js.map +1 -0
- package/es/{chatbot → chat-engine}/components/toolcall/types.d.ts +12 -4
- package/es/{chatbot → chat-engine}/components/toolcall/types.js +1 -1
- package/es/chat-engine/components/toolcall/types.js.map +1 -0
- package/es/{chatbot → chat-engine}/hooks/useAgentState.js +1 -1
- package/es/chat-engine/hooks/useAgentState.js.map +1 -0
- package/es/{chatbot → chat-engine}/hooks/useAgentToolcall.js +1 -1
- package/es/chat-engine/hooks/useAgentToolcall.js.map +1 -0
- package/es/{chatbot → chat-engine}/hooks/useChat.d.ts +1 -1
- package/es/{chatbot → chat-engine}/hooks/useChat.js +1 -1
- package/es/chat-engine/hooks/useChat.js.map +1 -0
- package/es/chat-engine/index.d.ts +6 -0
- package/es/chat-engine/index.js +24 -0
- package/es/{chatbot/core/server → chat-engine}/index.js.map +1 -1
- package/es/chat-filecard/index.js +1 -1
- package/es/chat-loading/index.js +1 -1
- package/es/chat-markdown/index.js +1 -1
- package/es/chat-message/index.js +1 -1
- package/es/chat-sender/index.js +1 -1
- package/es/chat-thinking/index.js +1 -1
- package/es/chatbot/index.d.ts +0 -5
- package/es/chatbot/index.js +1 -12
- package/es/chatbot/index.js.map +1 -1
- package/es/index.d.ts +1 -1
- package/es/index.js +10 -9
- package/es/index.js.map +1 -1
- package/es/style/index.js +1 -1
- package/package.json +3 -3
- package/es/chatbot/components/provider/agent-state.js.map +0 -1
- package/es/chatbot/components/toolcall/registry.js.map +0 -1
- package/es/chatbot/components/toolcall/render.js.map +0 -1
- package/es/chatbot/components/toolcall/types.js.map +0 -1
- package/es/chatbot/core/adapters/agui/event-mapper.d.ts +0 -104
- package/es/chatbot/core/adapters/agui/event-mapper.js +0 -342
- package/es/chatbot/core/adapters/agui/event-mapper.js.map +0 -1
- package/es/chatbot/core/adapters/agui/events.d.ts +0 -1394
- package/es/chatbot/core/adapters/agui/events.js +0 -181
- package/es/chatbot/core/adapters/agui/events.js.map +0 -1
- package/es/chatbot/core/adapters/agui/index.d.ts +0 -75
- package/es/chatbot/core/adapters/agui/index.js +0 -165
- package/es/chatbot/core/adapters/agui/index.js.map +0 -1
- package/es/chatbot/core/adapters/agui/state-manager.d.ts +0 -99
- package/es/chatbot/core/adapters/agui/state-manager.js +0 -168
- package/es/chatbot/core/adapters/agui/state-manager.js.map +0 -1
- package/es/chatbot/core/adapters/agui/types.d.ts +0 -760
- package/es/chatbot/core/adapters/agui/types.js +0 -89
- package/es/chatbot/core/adapters/agui/types.js.map +0 -1
- package/es/chatbot/core/adapters/agui/utils.d.ts +0 -188
- package/es/chatbot/core/adapters/agui/utils.js +0 -323
- package/es/chatbot/core/adapters/agui/utils.js.map +0 -1
- package/es/chatbot/core/index.d.ts +0 -131
- package/es/chatbot/core/index.js +0 -585
- package/es/chatbot/core/index.js.map +0 -1
- package/es/chatbot/core/processor/index.d.ts +0 -20
- package/es/chatbot/core/processor/index.js +0 -148
- package/es/chatbot/core/processor/index.js.map +0 -1
- package/es/chatbot/core/server/batch-client.d.ts +0 -20
- package/es/chatbot/core/server/batch-client.js +0 -114
- package/es/chatbot/core/server/batch-client.js.map +0 -1
- package/es/chatbot/core/server/connection-manager.d.ts +0 -39
- package/es/chatbot/core/server/connection-manager.js +0 -84
- package/es/chatbot/core/server/connection-manager.js.map +0 -1
- package/es/chatbot/core/server/errors.d.ts +0 -22
- package/es/chatbot/core/server/errors.js +0 -80
- package/es/chatbot/core/server/errors.js.map +0 -1
- package/es/chatbot/core/server/index.d.ts +0 -11
- package/es/chatbot/core/server/index.js +0 -26
- package/es/chatbot/core/server/llm-service.d.ts +0 -44
- package/es/chatbot/core/server/llm-service.js +0 -198
- package/es/chatbot/core/server/llm-service.js.map +0 -1
- package/es/chatbot/core/server/sse-client.d.ts +0 -77
- package/es/chatbot/core/server/sse-client.js +0 -362
- package/es/chatbot/core/server/sse-client.js.map +0 -1
- package/es/chatbot/core/server/sse-parser.d.ts +0 -49
- package/es/chatbot/core/server/sse-parser.js +0 -116
- package/es/chatbot/core/server/sse-parser.js.map +0 -1
- package/es/chatbot/core/server/types.d.ts +0 -54
- package/es/chatbot/core/server/types.js +0 -28
- package/es/chatbot/core/server/types.js.map +0 -1
- package/es/chatbot/core/store/message.d.ts +0 -27
- package/es/chatbot/core/store/message.js +0 -263
- package/es/chatbot/core/store/message.js.map +0 -1
- package/es/chatbot/core/store/model.d.ts +0 -8
- package/es/chatbot/core/store/model.js +0 -65
- package/es/chatbot/core/store/model.js.map +0 -1
- package/es/chatbot/core/store/reactiveState.d.ts +0 -52
- package/es/chatbot/core/store/reactiveState.js +0 -1359
- package/es/chatbot/core/store/reactiveState.js.map +0 -1
- package/es/chatbot/core/type.d.ts +0 -238
- package/es/chatbot/core/type.js +0 -7
- package/es/chatbot/core/type.js.map +0 -1
- package/es/chatbot/core/utils/eventEmitter.d.ts +0 -10
- package/es/chatbot/core/utils/eventEmitter.js +0 -67
- package/es/chatbot/core/utils/eventEmitter.js.map +0 -1
- package/es/chatbot/core/utils/index.d.ts +0 -31
- package/es/chatbot/core/utils/index.js +0 -221
- package/es/chatbot/core/utils/index.js.map +0 -1
- package/es/chatbot/core/utils/logger.d.ts +0 -30
- package/es/chatbot/core/utils/logger.js +0 -87
- package/es/chatbot/core/utils/logger.js.map +0 -1
- package/es/chatbot/hooks/useAgentState.js.map +0 -1
- package/es/chatbot/hooks/useAgentToolcall.js.map +0 -1
- package/es/chatbot/hooks/useChat.js.map +0 -1
- /package/es/{chatbot → chat-engine}/components/provider/agent-state.d.ts +0 -0
- /package/es/{chatbot → chat-engine}/components/toolcall/index.d.ts +0 -0
- /package/es/{chatbot → chat-engine}/components/toolcall/index.js.map +0 -0
- /package/es/{chatbot → chat-engine}/components/toolcall/registry.d.ts +0 -0
- /package/es/{chatbot → chat-engine}/components/toolcall/render.d.ts +0 -0
- /package/es/{chatbot → chat-engine}/hooks/useAgentState.d.ts +0 -0
- /package/es/{chatbot → chat-engine}/hooks/useAgentToolcall.d.ts +0 -0
|
@@ -1,168 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* tdesign v1.0.0-beta.3
|
|
3
|
-
* (c) 2025 tdesign
|
|
4
|
-
* @license MIT
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
|
|
8
|
-
import _typeof from '@babel/runtime/helpers/typeof';
|
|
9
|
-
import _classCallCheck from '@babel/runtime/helpers/classCallCheck';
|
|
10
|
-
import _createClass from '@babel/runtime/helpers/createClass';
|
|
11
|
-
import _defineProperty from '@babel/runtime/helpers/defineProperty';
|
|
12
|
-
import { applyJsonPatch } from '../../utils/index.js';
|
|
13
|
-
|
|
14
|
-
var StateManagerImpl = /*#__PURE__*/function () {
|
|
15
|
-
function StateManagerImpl() {
|
|
16
|
-
_classCallCheck(this, StateManagerImpl);
|
|
17
|
-
_defineProperty(this, "states", {});
|
|
18
|
-
_defineProperty(this, "currentStateKey", null);
|
|
19
|
-
_defineProperty(this, "latestSubscribers", /* @__PURE__ */new Set());
|
|
20
|
-
_defineProperty(this, "boundSubscribers", /* @__PURE__ */new Map());
|
|
21
|
-
}
|
|
22
|
-
return _createClass(StateManagerImpl, [{
|
|
23
|
-
key: "getCurrentStateKey",
|
|
24
|
-
value: function getCurrentStateKey() {
|
|
25
|
-
return this.currentStateKey;
|
|
26
|
-
}
|
|
27
|
-
}, {
|
|
28
|
-
key: "getCurrentState",
|
|
29
|
-
value: function getCurrentState() {
|
|
30
|
-
if (!this.currentStateKey) return null;
|
|
31
|
-
return this.states[this.currentStateKey];
|
|
32
|
-
}
|
|
33
|
-
}, {
|
|
34
|
-
key: "getState",
|
|
35
|
-
value: function getState(stateKey) {
|
|
36
|
-
return this.states[stateKey];
|
|
37
|
-
}
|
|
38
|
-
}, {
|
|
39
|
-
key: "getAllStateKeys",
|
|
40
|
-
value: function getAllStateKeys() {
|
|
41
|
-
return Object.keys(this.states);
|
|
42
|
-
}
|
|
43
|
-
}, {
|
|
44
|
-
key: "subscribeToLatest",
|
|
45
|
-
value: function subscribeToLatest(callback) {
|
|
46
|
-
var _this = this;
|
|
47
|
-
this.latestSubscribers.add(callback);
|
|
48
|
-
if (this.currentStateKey && this.states[this.currentStateKey]) {
|
|
49
|
-
try {
|
|
50
|
-
callback(this.states[this.currentStateKey], this.currentStateKey);
|
|
51
|
-
} catch (error) {
|
|
52
|
-
console.error("\u6700\u65B0\u72B6\u6001\u8BA2\u9605\u56DE\u8C03\u6267\u884C\u5931\u8D25 [".concat(this.currentStateKey, "]:"), error);
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
return function () {
|
|
56
|
-
return _this.latestSubscribers["delete"](callback);
|
|
57
|
-
};
|
|
58
|
-
}
|
|
59
|
-
}, {
|
|
60
|
-
key: "subscribe",
|
|
61
|
-
value: function subscribe(callback, targetStateKey) {
|
|
62
|
-
if (targetStateKey) {
|
|
63
|
-
return this.subscribeToState(targetStateKey, function (state) {
|
|
64
|
-
return callback(state, targetStateKey);
|
|
65
|
-
});
|
|
66
|
-
}
|
|
67
|
-
return this.subscribeToLatest(callback);
|
|
68
|
-
}
|
|
69
|
-
}, {
|
|
70
|
-
key: "subscribeToState",
|
|
71
|
-
value: function subscribeToState(stateKey, callback) {
|
|
72
|
-
var _this2 = this;
|
|
73
|
-
if (!this.boundSubscribers.has(stateKey)) {
|
|
74
|
-
this.boundSubscribers.set(stateKey, /* @__PURE__ */new Set());
|
|
75
|
-
}
|
|
76
|
-
this.boundSubscribers.get(stateKey).add(callback);
|
|
77
|
-
if (this.states[stateKey]) {
|
|
78
|
-
try {
|
|
79
|
-
callback(this.states[stateKey]);
|
|
80
|
-
} catch (error) {
|
|
81
|
-
console.error("\u7ED1\u5B9A\u72B6\u6001\u8BA2\u9605\u56DE\u8C03\u6267\u884C\u5931\u8D25 [".concat(stateKey, "]:"), error);
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
return function () {
|
|
85
|
-
var _this2$boundSubscribe;
|
|
86
|
-
(_this2$boundSubscribe = _this2.boundSubscribers.get(stateKey)) === null || _this2$boundSubscribe === void 0 || _this2$boundSubscribe["delete"](callback);
|
|
87
|
-
};
|
|
88
|
-
}
|
|
89
|
-
}, {
|
|
90
|
-
key: "handleStateEvent",
|
|
91
|
-
value: function handleStateEvent(event) {
|
|
92
|
-
var _this3 = this;
|
|
93
|
-
if (event.type === "STATE_SNAPSHOT") {
|
|
94
|
-
if (event.snapshot && _typeof(event.snapshot) === "object") {
|
|
95
|
-
Object.entries(event.snapshot).forEach(function (_ref) {
|
|
96
|
-
var _ref2 = _slicedToArray(_ref, 2),
|
|
97
|
-
stateKey = _ref2[0],
|
|
98
|
-
stateData = _ref2[1];
|
|
99
|
-
_this3.setState(stateKey, stateData);
|
|
100
|
-
});
|
|
101
|
-
}
|
|
102
|
-
} else if (event.type === "STATE_DELTA") {
|
|
103
|
-
if (event.delta && Array.isArray(event.delta)) {
|
|
104
|
-
var firstDelta = event.delta[0];
|
|
105
|
-
if (firstDelta && firstDelta.path) {
|
|
106
|
-
var pathParts = firstDelta.path.split("/");
|
|
107
|
-
if (pathParts.length > 1) {
|
|
108
|
-
var stateKey = pathParts[1];
|
|
109
|
-
var currentState = this.getState(stateKey);
|
|
110
|
-
if (currentState) {
|
|
111
|
-
try {
|
|
112
|
-
var originalStructure = _defineProperty({}, stateKey, currentState);
|
|
113
|
-
var updatedStructure = applyJsonPatch(originalStructure, event.delta);
|
|
114
|
-
var updatedState = updatedStructure[stateKey];
|
|
115
|
-
this.setState(stateKey, updatedState);
|
|
116
|
-
} catch (error) {
|
|
117
|
-
console.error("STATE_DELTA\u5904\u7406\u5931\u8D25 [".concat(stateKey, "]:"), error);
|
|
118
|
-
}
|
|
119
|
-
} else {
|
|
120
|
-
console.warn("STATE_DELTA: \u627E\u4E0D\u5230\u72B6\u6001 [".concat(stateKey, "]\uFF0C\u53EF\u80FD\u9700\u8981\u5148\u63A5\u6536STATE_SNAPSHOT"));
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
}, {
|
|
128
|
-
key: "clear",
|
|
129
|
-
value: function clear() {
|
|
130
|
-
this.states = {};
|
|
131
|
-
this.latestSubscribers.clear();
|
|
132
|
-
this.boundSubscribers.clear();
|
|
133
|
-
this.currentStateKey = null;
|
|
134
|
-
}
|
|
135
|
-
}, {
|
|
136
|
-
key: "setState",
|
|
137
|
-
value: function setState(stateKey, state) {
|
|
138
|
-
this.states[stateKey] = state;
|
|
139
|
-
this.currentStateKey = stateKey;
|
|
140
|
-
this.notifySubscribers(stateKey, state);
|
|
141
|
-
}
|
|
142
|
-
}, {
|
|
143
|
-
key: "notifySubscribers",
|
|
144
|
-
value: function notifySubscribers(stateKey, state) {
|
|
145
|
-
var boundSubs = this.boundSubscribers.get(stateKey);
|
|
146
|
-
if (boundSubs) {
|
|
147
|
-
boundSubs.forEach(function (callback) {
|
|
148
|
-
try {
|
|
149
|
-
callback(state);
|
|
150
|
-
} catch (error) {
|
|
151
|
-
console.error("\u7ED1\u5B9A\u72B6\u6001\u8BA2\u9605\u56DE\u8C03\u6267\u884C\u5931\u8D25 [".concat(stateKey, "]:"), error);
|
|
152
|
-
}
|
|
153
|
-
});
|
|
154
|
-
}
|
|
155
|
-
this.latestSubscribers.forEach(function (callback) {
|
|
156
|
-
try {
|
|
157
|
-
callback(state, stateKey);
|
|
158
|
-
} catch (error) {
|
|
159
|
-
console.error("\u6700\u65B0\u72B6\u6001\u8BA2\u9605\u56DE\u8C03\u6267\u884C\u5931\u8D25 [".concat(stateKey, "]:"), error);
|
|
160
|
-
}
|
|
161
|
-
});
|
|
162
|
-
}
|
|
163
|
-
}]);
|
|
164
|
-
}();
|
|
165
|
-
var stateManager = new StateManagerImpl();
|
|
166
|
-
|
|
167
|
-
export { StateManagerImpl, stateManager };
|
|
168
|
-
//# sourceMappingURL=state-manager.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"state-manager.js","sources":["../../../../../../pro-components/chat/chatbot/core/adapters/agui/state-manager.ts"],"sourcesContent":["import { applyJsonPatch } from '../../utils';\n\n/**\n * 状态管理器\n * 支持两种订阅模式:\n * 1. 最新状态模式:订阅最新状态,适用于状态覆盖场景\n * 2. 绑定状态模式:订阅特定stateKey,适用于状态隔离场景\n */\n\nexport interface StateManager {\n /**\n * 获取当前活跃的状态key\n */\n getCurrentStateKey: () => string | null;\n /**\n * 获取当前状态(基于当前状态key)\n */\n getCurrentState: () => any;\n /**\n * 获取指定状态key的状态\n */\n getState: (stateKey: string) => any;\n /**\n * 获取所有状态keys\n */\n getAllStateKeys: () => string[];\n /**\n * 订阅状态变化\n * @param callback 状态变化回调函数\n * @param targetStateKey 可选:指定订阅特定的stateKey,不传则订阅当前活跃状态\n */\n subscribe: (callback: (state: any, stateKey: string) => void, targetStateKey?: string) => () => void;\n /**\n * 处理AG-UI状态事件,自动从事件中提取stateKey\n */\n handleStateEvent: (event: { type: string; snapshot?: any; delta?: any[] }) => void;\n /**\n * 清理所有状态和订阅\n */\n clear: () => void;\n}\n\nexport class StateManagerImpl implements StateManager {\n private states: Record<string, any> = {};\n\n private currentStateKey: string | null = null;\n\n // 最新状态订阅者(覆盖模式)\n private latestSubscribers: Set<(state: any, stateKey: string) => void> = new Set();\n\n // 绑定状态订阅者(隔离模式)\n private boundSubscribers: Map<string, Set<(state: any) => void>> = new Map();\n\n /**\n * 获取当前活跃的状态key\n */\n getCurrentStateKey(): string | null {\n return this.currentStateKey;\n }\n\n /**\n * 获取当前状态(基于当前状态key)\n */\n getCurrentState(): any {\n if (!this.currentStateKey) return null;\n return this.states[this.currentStateKey];\n }\n\n /**\n * 获取指定状态key的状态\n */\n getState(stateKey: string): any {\n return this.states[stateKey];\n }\n\n /**\n * 获取所有状态keys\n */\n getAllStateKeys(): string[] {\n return Object.keys(this.states);\n }\n\n /**\n * 订阅最新状态(覆盖模式)\n * 适用于只有一个组件,每轮都用新状态更新的场景\n */\n subscribeToLatest(callback: (state: any, stateKey: string) => void): () => void {\n this.latestSubscribers.add(callback);\n // 立即调用一次当前状态\n if (this.currentStateKey && this.states[this.currentStateKey]) {\n try {\n callback(this.states[this.currentStateKey], this.currentStateKey);\n } catch (error) {\n console.error(`最新状态订阅回调执行失败 [${this.currentStateKey}]:`, error);\n }\n }\n\n return () => this.latestSubscribers.delete(callback);\n }\n\n /**\n * 订阅状态变化(实现 StateManager 接口)\n * @param callback 状态变化回调函数\n * @param targetStateKey 可选:指定订阅特定的stateKey,不传则订阅当前活跃状态\n */\n subscribe(callback: (state: any, stateKey: string) => void, targetStateKey?: string): () => void {\n if (targetStateKey) {\n // 绑定模式:订阅特定 stateKey\n return this.subscribeToState(targetStateKey, (state) => callback(state, targetStateKey));\n }\n // 最新模式:订阅最新状态\n return this.subscribeToLatest(callback);\n }\n\n /**\n * 订阅特定状态(隔离模式)\n * 适用于每轮对话创建新组件,各自保持独立状态的场景\n */\n subscribeToState(stateKey: string, callback: (state: any) => void): () => void {\n if (!this.boundSubscribers.has(stateKey)) {\n this.boundSubscribers.set(stateKey, new Set());\n }\n this.boundSubscribers.get(stateKey)!.add(callback);\n\n // 立即调用一次(如果状态存在)\n if (this.states[stateKey]) {\n try {\n callback(this.states[stateKey]);\n } catch (error) {\n console.error(`绑定状态订阅回调执行失败 [${stateKey}]:`, error);\n }\n }\n\n return () => {\n this.boundSubscribers.get(stateKey)?.delete(callback);\n };\n }\n\n /**\n * 处理AG-UI状态事件\n * 自动从事件中提取stateKey,无需外部传递\n */\n handleStateEvent(event: { type: string; snapshot?: any; delta?: any[] }): void {\n if (event.type === 'STATE_SNAPSHOT') {\n // 处理STATE_SNAPSHOT:立即更新\n if (event.snapshot && typeof event.snapshot === 'object') {\n Object.entries(event.snapshot).forEach(([stateKey, stateData]) => {\n this.setState(stateKey, stateData);\n });\n }\n } else if (event.type === 'STATE_DELTA') {\n // 处理STATE_DELTA:立即更新\n if (event.delta && Array.isArray(event.delta)) {\n // 从第一个delta操作的路径中提取stateKey\n const firstDelta = event.delta[0];\n if (firstDelta && firstDelta.path) {\n const pathParts = firstDelta.path.split('/');\n if (pathParts.length > 1) {\n const stateKey = pathParts[1]; // 路径格式: /stateKey/items/...\n const currentState = this.getState(stateKey);\n\n if (currentState) {\n try {\n // 重新构造原始结构以应用JSON Patch\n const originalStructure = { [stateKey]: currentState };\n const updatedStructure = applyJsonPatch(originalStructure, event.delta);\n const updatedState = updatedStructure[stateKey];\n this.setState(stateKey, updatedState);\n } catch (error) {\n console.error(`STATE_DELTA处理失败 [${stateKey}]:`, error);\n }\n } else {\n console.warn(`STATE_DELTA: 找不到状态 [${stateKey}],可能需要先接收STATE_SNAPSHOT`);\n }\n }\n }\n }\n }\n }\n\n // 清理所有状态和订阅\n clear(): void {\n // 清理状态和订阅\n this.states = {};\n this.latestSubscribers.clear();\n this.boundSubscribers.clear();\n this.currentStateKey = null;\n }\n\n /**\n * 设置状态并立即通知订阅者\n */\n private setState(stateKey: string, state: any): void {\n // 更新状态\n this.states[stateKey] = state;\n this.currentStateKey = stateKey;\n this.notifySubscribers(stateKey, state);\n }\n\n /**\n * 通知订阅者\n */\n private notifySubscribers(stateKey: string, state: any): void {\n // 通知绑定订阅者(只通知对应stateKey的订阅者)\n const boundSubs = this.boundSubscribers.get(stateKey);\n if (boundSubs) {\n boundSubs.forEach((callback) => {\n try {\n callback(state);\n } catch (error) {\n console.error(`绑定状态订阅回调执行失败 [${stateKey}]:`, error);\n }\n });\n }\n\n // 通知最新状态订阅者(所有订阅者都收到最新状态)\n this.latestSubscribers.forEach((callback) => {\n try {\n callback(state, stateKey);\n } catch (error) {\n console.error(`最新状态订阅回调执行失败 [${stateKey}]:`, error);\n }\n });\n }\n}\n\n// 全局单例\nexport const stateManager = new StateManagerImpl();\n"],"names":["StateManagerImpl","_classCallCheck","_defineProperty","Set","Map","_createClass","key","value","getCurrentStateKey","currentStateKey","getCurrentState","states","getState","stateKey","getAllStateKeys","Object","keys","subscribeToLatest","callback","_this","latestSubscribers","add","error","console","concat","subscribe","targetStateKey","subscribeToState","state","_this2","boundSubscribers","has","set","get","_this2$boundSubscribe","handleStateEvent","event","_this3","type","snapshot","_typeof","entries","forEach","_ref","_ref2","_slicedToArray","stateData","setState","delta","Array","isArray","firstDelta","path","pathParts","split","length","currentState","originalStructure","updatedStructure","applyJsonPatch","updatedState","warn","clear","notifySubscribers","boundSubs","stateManager"],"mappings":"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"}
|