@tdesign-react/chat 1.0.0-beta.1 → 1.0.0-beta.3

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.
Files changed (81) hide show
  1. package/README.md +9 -1
  2. package/es/_util/reactify.js +1 -1
  3. package/es/_util/useDynamicStyle.js +1 -1
  4. package/es/chat-actionbar/index.js +1 -1
  5. package/es/chat-attachments/index.js +1 -1
  6. package/es/chat-filecard/index.js +1 -1
  7. package/es/chat-loading/index.js +1 -1
  8. package/es/chat-markdown/index.js +1 -1
  9. package/es/chat-message/index.js +1 -1
  10. package/es/chat-sender/index.js +1 -1
  11. package/es/chat-thinking/index.js +1 -1
  12. package/es/chatbot/components/provider/agent-state.js +1 -1
  13. package/es/chatbot/components/toolcall/index.js +1 -1
  14. package/es/chatbot/components/toolcall/registry.js +1 -1
  15. package/es/chatbot/components/toolcall/render.js +1 -1
  16. package/es/chatbot/components/toolcall/types.js +1 -1
  17. package/es/chatbot/core/adapters/agui/event-mapper.js +1 -1
  18. package/es/chatbot/core/adapters/agui/events.d.ts +92 -92
  19. package/es/chatbot/core/adapters/agui/events.js +1 -1
  20. package/es/chatbot/core/adapters/agui/index.js +1 -1
  21. package/es/chatbot/core/adapters/agui/state-manager.js +1 -1
  22. package/es/chatbot/core/adapters/agui/types.d.ts +102 -102
  23. package/es/chatbot/core/adapters/agui/types.js +1 -1
  24. package/es/chatbot/core/adapters/agui/utils.js +1 -1
  25. package/es/chatbot/core/index.js +1 -1
  26. package/es/chatbot/core/processor/index.js +1 -1
  27. package/es/chatbot/core/server/batch-client.js +1 -1
  28. package/es/chatbot/core/server/connection-manager.js +1 -1
  29. package/es/chatbot/core/server/errors.js +1 -1
  30. package/es/chatbot/core/server/index.js +1 -1
  31. package/es/chatbot/core/server/llm-service.js +1 -1
  32. package/es/chatbot/core/server/sse-client.js +1 -1
  33. package/es/chatbot/core/server/sse-parser.js +1 -1
  34. package/es/chatbot/core/server/types.js +1 -1
  35. package/es/chatbot/core/store/message.js +1 -1
  36. package/es/chatbot/core/store/model.js +1 -1
  37. package/es/chatbot/core/store/reactiveState.js +1 -1
  38. package/es/chatbot/core/type.js +1 -1
  39. package/es/chatbot/core/utils/eventEmitter.js +1 -1
  40. package/es/chatbot/core/utils/index.js +1 -1
  41. package/es/chatbot/core/utils/logger.js +1 -1
  42. package/es/chatbot/hooks/useAgentState.js +1 -1
  43. package/es/chatbot/hooks/useAgentToolcall.js +1 -1
  44. package/es/chatbot/hooks/useChat.js +1 -1
  45. package/es/chatbot/index.d.ts +1 -2
  46. package/es/chatbot/index.js +2 -2
  47. package/es/chatbot/index.js.map +1 -1
  48. package/es/index.js +1 -2
  49. package/es/index.js.map +1 -1
  50. package/es/style/index.js +1 -1
  51. package/package.json +2 -2
  52. package/es/_util/_reactify.d.ts +0 -7
  53. package/es/_util/_reactify.js +0 -381
  54. package/es/_util/_reactify.js.map +0 -1
  55. package/es/_util/reactifyLazy.d.ts +0 -16
  56. package/es/_util/reactifyLazy.js +0 -74
  57. package/es/_util/reactifyLazy.js.map +0 -1
  58. package/es/_util/reactify_v2.d.ts +0 -7
  59. package/es/_util/reactify_v2.js +0 -391
  60. package/es/_util/reactify_v2.js.map +0 -1
  61. package/es/chatbot/components/toolcall/toolcallRenderer.d.ts +0 -12
  62. package/es/chatbot/components/toolcall/toolcallRenderer.js +0 -132
  63. package/es/chatbot/components/toolcall/toolcallRenderer.js.map +0 -1
  64. package/es/chatbot/core/adapters/agui/state/StateManager.d.ts +0 -60
  65. package/es/chatbot/core/adapters/agui/state/StateManager.js +0 -160
  66. package/es/chatbot/core/adapters/agui/state/StateManager.js.map +0 -1
  67. package/es/chatbot/core/adapters/agui/state/types.d.ts +0 -63
  68. package/es/chatbot/core/adapters/agui/state/types.js +0 -7
  69. package/es/chatbot/core/adapters/agui/state/types.js.map +0 -1
  70. package/es/chatbot/core/adapters/agui/state-manager-fixed.d.ts +0 -107
  71. package/es/chatbot/core/adapters/agui/state-manager-fixed.js +0 -189
  72. package/es/chatbot/core/adapters/agui/state-manager-fixed.js.map +0 -1
  73. package/es/chatbot/hooks/useAgentStateAction.d.ts +0 -9
  74. package/es/chatbot/hooks/useAgentStateAction.js +0 -101
  75. package/es/chatbot/hooks/useAgentStateAction.js.map +0 -1
  76. package/es/chatbot/hooks/useAgentToolcallAction.d.ts +0 -6
  77. package/es/chatbot/hooks/useAgentToolcallAction.js +0 -29
  78. package/es/chatbot/hooks/useAgentToolcallAction.js.map +0 -1
  79. package/es/chatbot/useChat.d.ts +0 -10
  80. package/es/chatbot/useChat.js +0 -55
  81. package/es/chatbot/useChat.js.map +0 -1
@@ -1,5 +1,5 @@
1
1
  /**
2
- * tdesign v1.0.0-beta.1
2
+ * tdesign v1.0.0-beta.2
3
3
  * (c) 2025 tdesign
4
4
  * @license MIT
5
5
  */
@@ -9,7 +9,6 @@ import 'tdesign-web-components/lib/chat-message/content/reasoning-content';
9
9
  import 'tdesign-web-components/lib/chat-message/content/search-content';
10
10
  import 'tdesign-web-components/lib/chat-message/content/suggestion-content';
11
11
  import reactify from '../_util/reactify.js';
12
- export { default as ChatEngine } from 'tdesign-web-components/lib/chat-engine';
13
12
  export { useChat } from './hooks/useChat.js';
14
13
  export { useAgentToolcall } from './hooks/useAgentToolcall.js';
15
14
  export { AgentStateContext, useAgentState, useAgentStateContext, useAgentStateDataByKey } from './hooks/useAgentState.js';
@@ -31,6 +30,7 @@ import '@babel/runtime/helpers/typeof';
31
30
  import 'react';
32
31
  import 'react-dom';
33
32
  import 'react-dom/client';
33
+ import 'tdesign-web-components/lib/chat-engine';
34
34
  import '@babel/runtime/helpers/asyncToGenerator';
35
35
  import '@babel/runtime/regenerator';
36
36
 
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../pro-components/chat/chatbot/index.ts"],"sourcesContent":["import 'tdesign-web-components/lib/chatbot';\nimport 'tdesign-web-components/lib/chat-message/content/reasoning-content';\nimport 'tdesign-web-components/lib/chat-message/content/search-content';\nimport 'tdesign-web-components/lib/chat-message/content/suggestion-content';\nimport type {\n TdChatbotApi,\n TdChatListApi,\n TdChatListProps,\n TdChatProps,\n TdChatSearchContentProps,\n TdChatSuggestionContentProps,\n} from 'tdesign-web-components';\nimport reactify from '../_util/reactify';\nimport ChatEngine from 'tdesign-web-components/lib/chat-engine';\n\nconst ChatBot: React.ForwardRefExoticComponent<\n Omit<TdChatProps & Partial<TdChatbotApi>, 'ref'> & React.RefAttributes<HTMLElement | undefined>\n> = reactify<TdChatProps>('t-chatbot');\n\nconst ChatSearchContent: React.ForwardRefExoticComponent<\n Omit<TdChatSearchContentProps, 'ref'> & React.RefAttributes<HTMLElement | undefined>\n> = reactify<TdChatSearchContentProps>('t-chat-search-content');\n\nconst ChatSuggestionContent: React.ForwardRefExoticComponent<\n Omit<TdChatSuggestionContentProps, 'ref'> & React.RefAttributes<HTMLElement | undefined>\n> = reactify<TdChatSuggestionContentProps>('t-chat-suggestion-content');\n\nconst ChatList: React.ForwardRefExoticComponent<\n Omit<TdChatListProps & Partial<TdChatListApi>, 'ref'> & React.RefAttributes<HTMLElement | undefined>\n> = reactify<TdChatListProps>('t-chat-list');\n\n// 导出组件\nexport { ChatBot, ChatSearchContent, ChatSuggestionContent, ChatList, ChatEngine };\n\n// 导出类型和工具\nexport type * from 'tdesign-web-components/lib/chatbot/type';\nexport * from './hooks/useChat';\nexport * from './hooks/useAgentToolcall';\nexport * from './hooks/useAgentState';\nexport * from './components/toolcall';\nexport * from './components/provider/agent-state';\n"],"names":["ChatBot","reactify","ChatSearchContent","ChatSuggestionContent","ChatList"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAeA,IAAMA,OAAA,GAEFC,SAAsB,WAAW,EAAA;AAErC,IAAMC,iBAAA,GAEFD,SAAmC,uBAAuB,EAAA;AAE9D,IAAME,qBAAA,GAEFF,SAAuC,2BAA2B,EAAA;AAEtE,IAAMG,QAAA,GAEFH,SAA0B,aAAa;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../../../pro-components/chat/chatbot/index.ts"],"sourcesContent":["import 'tdesign-web-components/lib/chatbot';\nimport 'tdesign-web-components/lib/chat-message/content/reasoning-content';\nimport 'tdesign-web-components/lib/chat-message/content/search-content';\nimport 'tdesign-web-components/lib/chat-message/content/suggestion-content';\nimport type {\n TdChatbotApi,\n TdChatListApi,\n TdChatListProps,\n TdChatProps,\n TdChatSearchContentProps,\n TdChatSuggestionContentProps,\n} from 'tdesign-web-components';\nimport reactify from '../_util/reactify';\n\nconst ChatBot: React.ForwardRefExoticComponent<\n Omit<TdChatProps & Partial<TdChatbotApi>, 'ref'> & React.RefAttributes<HTMLElement | undefined>\n> = reactify<TdChatProps>('t-chatbot');\n\nconst ChatSearchContent: React.ForwardRefExoticComponent<\n Omit<TdChatSearchContentProps, 'ref'> & React.RefAttributes<HTMLElement | undefined>\n> = reactify<TdChatSearchContentProps>('t-chat-search-content');\n\nconst ChatSuggestionContent: React.ForwardRefExoticComponent<\n Omit<TdChatSuggestionContentProps, 'ref'> & React.RefAttributes<HTMLElement | undefined>\n> = reactify<TdChatSuggestionContentProps>('t-chat-suggestion-content');\n\nconst ChatList: React.ForwardRefExoticComponent<\n Omit<TdChatListProps & Partial<TdChatListApi>, 'ref'> & React.RefAttributes<HTMLElement | undefined>\n> = reactify<TdChatListProps>('t-chat-list');\n\n// 导出组件\nexport { ChatBot, ChatSearchContent, ChatSuggestionContent, ChatList };\n\n// 导出类型和工具\nexport type * from 'tdesign-web-components/lib/chatbot/type';\nexport * from './hooks/useChat';\nexport * from './hooks/useAgentToolcall';\nexport * from './hooks/useAgentState';\nexport * from './components/toolcall';\nexport * from './components/provider/agent-state';\n"],"names":["ChatBot","reactify","ChatSearchContent","ChatSuggestionContent","ChatList"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAcA,IAAMA,OAAA,GAEFC,SAAsB,WAAW,EAAA;AAErC,IAAMC,iBAAA,GAEFD,SAAmC,uBAAuB,EAAA;AAE9D,IAAME,qBAAA,GAEFF,SAAuC,2BAA2B,EAAA;AAEtE,IAAMG,QAAA,GAEFH,SAA0B,aAAa;;;;"}
package/es/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * tdesign v1.0.0-beta.1
2
+ * tdesign v1.0.0-beta.2
3
3
  * (c) 2025 tdesign
4
4
  * @license MIT
5
5
  */
@@ -14,7 +14,6 @@ export { ChatMessage } from './chat-message/index.js';
14
14
  export { ChatSender } from './chat-sender/index.js';
15
15
  export { ChatThinking } from './chat-thinking/index.js';
16
16
  export * from 'tdesign-web-components/lib/chat-engine';
17
- export { default as ChatEngine } from 'tdesign-web-components/lib/chat-engine';
18
17
  export { useChat } from './chatbot/hooks/useChat.js';
19
18
  export { useAgentToolcall } from './chatbot/hooks/useAgentToolcall.js';
20
19
  export { AgentStateContext, useAgentState, useAgentStateContext, useAgentStateDataByKey } from './chatbot/hooks/useAgentState.js';
package/es/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
package/es/style/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * tdesign v1.0.0-beta.1
2
+ * tdesign v1.0.0-beta.2
3
3
  * (c) 2025 tdesign
4
4
  * @license MIT
5
5
  */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tdesign-react/chat",
3
- "version": "1.0.0-beta.1",
3
+ "version": "1.0.0-beta.3",
4
4
  "title": "@tdesign-react/chat",
5
5
  "description": "TDesign Pro Component for AIGC",
6
6
  "module": "es/index.js",
@@ -51,7 +51,7 @@
51
51
  },
52
52
  "dependencies": {
53
53
  "@babel/runtime": "~7.26.7",
54
- "tdesign-web-components": "1.2.0-alpha.1",
54
+ "tdesign-web-components": "1.2.1-beta.3",
55
55
  "classnames": "~2.5.1",
56
56
  "lodash-es": "^4.17.21",
57
57
  "zod": "^3.24.2",
@@ -1,7 +0,0 @@
1
- import React from 'react';
2
- type AnyProps = {
3
- [key: string]: any;
4
- };
5
- export declare function hyphenate(str: string): string;
6
- declare const reactify: <T extends AnyProps = AnyProps>(WC: string) => React.ForwardRefExoticComponent<Omit<T, "ref"> & React.RefAttributes<HTMLElement | undefined>>;
7
- export default reactify;
@@ -1,381 +0,0 @@
1
- /**
2
- * tdesign v0.1.0-alpha.14
3
- * (c) 2025 tdesign
4
- * @license MIT
5
- */
6
-
7
- import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';
8
- import _toConsumableArray from '@babel/runtime/helpers/toConsumableArray';
9
- import _classCallCheck from '@babel/runtime/helpers/classCallCheck';
10
- import _createClass from '@babel/runtime/helpers/createClass';
11
- import _possibleConstructorReturn from '@babel/runtime/helpers/possibleConstructorReturn';
12
- import _getPrototypeOf from '@babel/runtime/helpers/getPrototypeOf';
13
- import _inherits from '@babel/runtime/helpers/inherits';
14
- import _defineProperty from '@babel/runtime/helpers/defineProperty';
15
- import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
16
- import _typeof from '@babel/runtime/helpers/typeof';
17
- import React, { createRef, createElement, Component, forwardRef } from 'react';
18
- import ReactDOM from 'react-dom';
19
- import { createRoot } from 'react-dom/client';
20
-
21
- var _excluded = ["children", "className", "innerRef"];
22
- function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
23
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
24
- function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
25
- function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
26
- var isReact18Plus = function isReact18Plus() {
27
- return typeof createRoot !== "undefined";
28
- };
29
- var rootCache = /* @__PURE__ */new WeakMap();
30
- var createRenderer = function createRenderer(container) {
31
- if (isReact18Plus()) {
32
- var root = rootCache.get(container);
33
- if (!root) {
34
- root = createRoot(container);
35
- rootCache.set(container, root);
36
- }
37
- return {
38
- render: function render(element) {
39
- root.render(element);
40
- },
41
- unmount: function unmount() {
42
- root.unmount();
43
- rootCache["delete"](container);
44
- }
45
- };
46
- }
47
- return {
48
- render: function render(element) {
49
- ReactDOM.render(element, container);
50
- },
51
- unmount: function unmount() {
52
- ReactDOM.unmountComponentAtNode(container);
53
- }
54
- };
55
- };
56
- var isReactElement = function isReactElement(obj) {
57
- return obj && _typeof(obj) === "object" && obj.$$typeof && obj.$$typeof.toString().includes("react");
58
- };
59
- var isValidReactNode = function isValidReactNode(node) {
60
- return node !== null && node !== void 0 && (typeof node === "string" || typeof node === "number" || typeof node === "boolean" || isReactElement(node) || Array.isArray(node));
61
- };
62
- var hyphenateRE = /\B([A-Z])/g;
63
- function hyphenate(str) {
64
- return str.replace(hyphenateRE, "-$1").toLowerCase();
65
- }
66
- var styleObjectToString = function styleObjectToString(style) {
67
- if (!style || _typeof(style) !== "object") return "";
68
- var unitlessKeys = /* @__PURE__ */new Set(["animationIterationCount", "boxFlex", "boxFlexGroup", "boxOrdinalGroup", "columnCount", "fillOpacity", "flex", "flexGrow", "flexShrink", "fontWeight", "lineClamp", "lineHeight", "opacity", "order", "orphans", "tabSize", "widows", "zIndex", "zoom"]);
69
- return Object.entries(style).filter(function (_ref) {
70
- var _ref2 = _slicedToArray(_ref, 2),
71
- value = _ref2[1];
72
- return value != null && value !== "";
73
- }).map(function (_ref3) {
74
- var _ref4 = _slicedToArray(_ref3, 2),
75
- key = _ref4[0],
76
- value = _ref4[1];
77
- var cssKey = key.replace(/[A-Z]/g, function (m) {
78
- return "-".concat(m.toLowerCase());
79
- });
80
- var cssValue = value;
81
- if (typeof value === "number" && value !== 0 && !unitlessKeys.has(key)) {
82
- cssValue = "".concat(value, "px");
83
- }
84
- return "".concat(cssKey, ":").concat(cssValue, ";");
85
- }).join(" ");
86
- };
87
- var reactify = function reactify(WC) {
88
- var Reactify = /*#__PURE__*/function (_Component) {
89
- function Reactify(props) {
90
- var _this;
91
- _classCallCheck(this, Reactify);
92
- _this = _callSuper(this, Reactify, [props]);
93
- _defineProperty(_this, "processingSlots", /* @__PURE__ */new Set());
94
- _defineProperty(_this, "lastRenderedElements", /* @__PURE__ */new Map());
95
- _this.eventHandlers = [];
96
- _this.slotRenderers = /* @__PURE__ */new Map();
97
- var innerRef = props.innerRef;
98
- _this.ref = innerRef || /*#__PURE__*/createRef();
99
- return _this;
100
- }
101
- _inherits(Reactify, _Component);
102
- return _createClass(Reactify, [{
103
- key: "setEvent",
104
- value: function setEvent(event, val) {
105
- var _this$ref$current;
106
- this.eventHandlers.push([event, val]);
107
- (_this$ref$current = this.ref.current) === null || _this$ref$current === void 0 || _this$ref$current.addEventListener(event, val);
108
- }
109
- }, {
110
- key: "handleSlotProp",
111
- value: function handleSlotProp(prop, val) {
112
- var _this2 = this;
113
- var webComponent = this.ref.current;
114
- if (!webComponent) return;
115
- if (this.processingSlots.has(prop)) {
116
- return;
117
- }
118
- var currentRenderer = this.slotRenderers.get(prop);
119
- if (currentRenderer && this.isSameReactElement(prop, val)) {
120
- return;
121
- }
122
- this.processingSlots.add(prop);
123
- if (isValidReactNode(val)) {
124
- this.lastRenderedElements.set(prop, val);
125
- }
126
- if (currentRenderer) {
127
- this.cleanupSlotRenderer(prop);
128
- }
129
- if (typeof val === "function") {
130
- var renderSlot = function renderSlot(params) {
131
- var reactNode = val(params);
132
- return _this2.renderReactNodeToSlot(reactNode, prop);
133
- };
134
- webComponent[prop] = renderSlot;
135
- this.processingSlots["delete"](prop);
136
- } else if (isValidReactNode(val)) {
137
- webComponent[prop] = true;
138
- Promise.resolve().then(function () {
139
- if (webComponent.update) {
140
- webComponent.update();
141
- }
142
- _this2.renderReactNodeToSlot(val, prop);
143
- _this2.processingSlots["delete"](prop);
144
- });
145
- }
146
- }
147
- }, {
148
- key: "cleanupSlotRenderer",
149
- value: function cleanupSlotRenderer(slotName) {
150
- var _this3 = this;
151
- var renderer = this.slotRenderers.get(slotName);
152
- if (!renderer) return;
153
- this.clearSlotContainers(slotName);
154
- Promise.resolve().then(function () {
155
- _this3.safeCleanupRenderer(renderer);
156
- });
157
- this.slotRenderers["delete"](slotName);
158
- }
159
- }, {
160
- key: "safeCleanupRenderer",
161
- value: function safeCleanupRenderer(cleanup) {
162
- try {
163
- cleanup();
164
- } catch (error) {
165
- console.warn("Error cleaning up React renderer:", error);
166
- }
167
- }
168
- }, {
169
- key: "clearSlotContainers",
170
- value: function clearSlotContainers(slotName) {
171
- var webComponent = this.ref.current;
172
- if (!webComponent) return;
173
- var containers = webComponent.querySelectorAll("[slot=\"".concat(slotName, "\"]"));
174
- containers.forEach(function (container) {
175
- if (container.parentNode) {
176
- container.parentNode.removeChild(container);
177
- }
178
- });
179
- }
180
- }, {
181
- key: "isSameReactElement",
182
- value: function isSameReactElement(prop, val) {
183
- var lastElement = this.lastRenderedElements.get(prop);
184
- if (!lastElement || !isValidReactNode(val)) {
185
- return false;
186
- }
187
- if (lastElement === val) {
188
- return true;
189
- }
190
- if (/*#__PURE__*/React.isValidElement(lastElement) && /*#__PURE__*/React.isValidElement(val)) {
191
- var typeMatch = lastElement.type === val.type;
192
- var keyMatch = lastElement.key === val.key;
193
- var propsMatch = JSON.stringify(lastElement.props) === JSON.stringify(val.props);
194
- return typeMatch && keyMatch && propsMatch;
195
- }
196
- return false;
197
- }
198
- }, {
199
- key: "renderReactNodeToSlot",
200
- value: function renderReactNodeToSlot(reactNode, slotName) {
201
- var _this4 = this;
202
- var webComponent = this.ref.current;
203
- if (!webComponent) return;
204
- var existingContainers = webComponent.querySelectorAll("[slot=\"".concat(slotName, "\"]"));
205
- if (existingContainers.length > 0) {
206
- return;
207
- }
208
- var container = document.createElement("div");
209
- container.style.display = "contents";
210
- container.setAttribute("slot", slotName);
211
- webComponent.appendChild(container);
212
- var cleanupFn = null;
213
- if (isValidReactNode(reactNode)) {
214
- if (/*#__PURE__*/React.isValidElement(reactNode)) {
215
- try {
216
- var renderer = createRenderer(container);
217
- renderer.render(reactNode);
218
- cleanupFn = function cleanupFn() {
219
- try {
220
- renderer.unmount();
221
- } catch (error) {
222
- console.warn("Error unmounting React renderer:", error);
223
- }
224
- };
225
- } catch (error) {
226
- console.warn("Error creating React renderer:", error);
227
- }
228
- } else if (typeof reactNode === "string" || typeof reactNode === "number") {
229
- container.textContent = String(reactNode);
230
- cleanupFn = function cleanupFn() {
231
- container.textContent = "";
232
- };
233
- } else if (Array.isArray(reactNode)) {
234
- try {
235
- var _renderer = createRenderer(container);
236
- var wrapper = /*#__PURE__*/React.createElement.apply(React, ["div", {
237
- style: {
238
- display: "contents"
239
- }
240
- }].concat(_toConsumableArray(reactNode.filter(isValidReactNode))));
241
- _renderer.render(wrapper);
242
- cleanupFn = function cleanupFn() {
243
- try {
244
- _renderer.unmount();
245
- } catch (error) {
246
- console.warn("Error unmounting React renderer:", error);
247
- }
248
- };
249
- } catch (error) {
250
- console.warn("Error creating React renderer for array:", error);
251
- }
252
- }
253
- }
254
- this.slotRenderers.set(slotName, function () {
255
- _this4.lastRenderedElements["delete"](slotName);
256
- Promise.resolve().then(function () {
257
- if (cleanupFn) {
258
- cleanupFn();
259
- }
260
- if (container.parentNode) {
261
- container.parentNode.removeChild(container);
262
- }
263
- });
264
- });
265
- }
266
- }, {
267
- key: "update",
268
- value: function update() {
269
- var _this5 = this;
270
- this.clearEventHandlers();
271
- if (!this.ref.current) return;
272
- Object.entries(this.props).forEach(function (_ref5) {
273
- var _ref6 = _slicedToArray(_ref5, 2),
274
- prop = _ref6[0],
275
- val = _ref6[1];
276
- if (["innerRef", "children"].includes(prop)) return;
277
- if (typeof val === "function" && prop.match(/^on[A-Za-z]/)) {
278
- var eventName = prop.slice(2);
279
- var omiEventName = eventName[0].toLowerCase() + eventName.slice(1);
280
- _this5.setEvent(omiEventName, val);
281
- return;
282
- }
283
- if (typeof val === "function" && prop.match(/^render[A-Za-z]/)) {
284
- _this5.handleSlotProp(prop, val);
285
- return;
286
- }
287
- if (isReactElement(val) && !prop.match(/^on[A-Za-z]/) && !prop.match(/^render[A-Za-z]/)) {
288
- var _this5$ref$current;
289
- var componentClass = (_this5$ref$current = _this5.ref.current) === null || _this5$ref$current === void 0 ? void 0 : _this5$ref$current.constructor;
290
- var declaredSlots = (componentClass === null || componentClass === void 0 ? void 0 : componentClass.slotProps) || [];
291
- if (declaredSlots.includes(prop) || prop.endsWith("Slot")) {
292
- _this5.handleSlotProp(prop, val);
293
- return;
294
- }
295
- }
296
- if (_typeof(val) === "object" && val !== null) {
297
- if (prop === "style") {
298
- var _this5$ref$current2;
299
- (_this5$ref$current2 = _this5.ref.current) === null || _this5$ref$current2 === void 0 || _this5$ref$current2.setAttribute("style", styleObjectToString(val));
300
- return;
301
- }
302
- _this5.ref.current[prop] = val;
303
- return;
304
- }
305
- if (typeof val === "function") {
306
- _this5.ref.current[prop] = val;
307
- return;
308
- }
309
- if (prop.match(hyphenateRE)) {
310
- var _this5$ref$current3, _this5$ref$current4;
311
- (_this5$ref$current3 = _this5.ref.current) === null || _this5$ref$current3 === void 0 || _this5$ref$current3.setAttribute(hyphenate(prop), val);
312
- (_this5$ref$current4 = _this5.ref.current) === null || _this5$ref$current4 === void 0 || _this5$ref$current4.removeAttribute(prop);
313
- return;
314
- }
315
- _this5.ref.current[prop] = val;
316
- });
317
- }
318
- }, {
319
- key: "componentDidUpdate",
320
- value: function componentDidUpdate() {
321
- this.update();
322
- }
323
- }, {
324
- key: "componentDidMount",
325
- value: function componentDidMount() {
326
- this.update();
327
- }
328
- }, {
329
- key: "componentWillUnmount",
330
- value: function componentWillUnmount() {
331
- this.clearEventHandlers();
332
- this.clearSlotRenderers();
333
- }
334
- }, {
335
- key: "clearEventHandlers",
336
- value: function clearEventHandlers() {
337
- var _this6 = this;
338
- this.eventHandlers.forEach(function (_ref7) {
339
- var _this6$ref$current;
340
- var _ref8 = _slicedToArray(_ref7, 2),
341
- event = _ref8[0],
342
- handler = _ref8[1];
343
- (_this6$ref$current = _this6.ref.current) === null || _this6$ref$current === void 0 || _this6$ref$current.removeEventListener(event, handler);
344
- });
345
- this.eventHandlers = [];
346
- }
347
- }, {
348
- key: "clearSlotRenderers",
349
- value: function clearSlotRenderers() {
350
- var _this7 = this;
351
- this.slotRenderers.forEach(function (cleanup) {
352
- _this7.safeCleanupRenderer(cleanup);
353
- });
354
- this.slotRenderers.clear();
355
- this.processingSlots.clear();
356
- }
357
- }, {
358
- key: "render",
359
- value: function render() {
360
- var _this$props = this.props,
361
- children = _this$props.children,
362
- className = _this$props.className,
363
- innerRef = _this$props.innerRef,
364
- rest = _objectWithoutProperties(_this$props, _excluded);
365
- return /*#__PURE__*/createElement(WC, _objectSpread(_objectSpread({
366
- "class": className
367
- }, rest), {}, {
368
- ref: this.ref
369
- }), children);
370
- }
371
- }]);
372
- }(Component);
373
- return /*#__PURE__*/forwardRef(function (props, ref) {
374
- return /*#__PURE__*/createElement(Reactify, _objectSpread(_objectSpread({}, props), {}, {
375
- innerRef: ref
376
- }));
377
- });
378
- };
379
-
380
- export { reactify as default, hyphenate };
381
- //# sourceMappingURL=_reactify.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"_reactify.js","sources":["../../../pro-components/chat/_util/_reactify.tsx"],"sourcesContent":["import React, { Component, createRef, createElement, forwardRef } from 'react';\nimport ReactDOM from 'react-dom';\nimport { createRoot } from 'react-dom/client';\n\n// 检测 React 版本\nconst isReact18Plus = () => typeof createRoot !== 'undefined';\n\n// 缓存root实例的WeakMap\nconst rootCache = new WeakMap<HTMLElement, ReturnType<typeof createRoot>>();\n\n// 创建渲染函数\nconst createRenderer = (container: HTMLElement) => {\n if (isReact18Plus()) {\n // 检查是否已有缓存的root实例\n let root = rootCache.get(container);\n if (!root) {\n root = createRoot(container);\n rootCache.set(container, root);\n }\n return {\n render: (element: React.ReactElement) => {\n root.render(element);\n },\n unmount: () => {\n root.unmount();\n rootCache.delete(container);\n },\n };\n }\n return {\n render: (element: React.ReactElement) => {\n ReactDOM.render(element, container);\n },\n unmount: () => {\n ReactDOM.unmountComponentAtNode(container);\n },\n };\n};\n\n// 检查是否是React元素\nconst isReactElement = (obj: any): obj is React.ReactElement =>\n obj && typeof obj === 'object' && obj.$$typeof && obj.$$typeof.toString().includes('react');\n\n// 检查是否是有效的React节点\nconst isValidReactNode = (node: any): node is React.ReactNode =>\n node !== null &&\n node !== undefined &&\n (typeof node === 'string' ||\n typeof node === 'number' ||\n typeof node === 'boolean' ||\n isReactElement(node) ||\n Array.isArray(node));\n\ntype AnyProps = {\n [key: string]: any;\n};\n\nconst hyphenateRE = /\\B([A-Z])/g;\n\nexport function hyphenate(str: string): string {\n return str.replace(hyphenateRE, '-$1').toLowerCase();\n}\n\nconst styleObjectToString = (style: any) => {\n if (!style || typeof style !== 'object') return '';\n\n const unitlessKeys = new Set([\n 'animationIterationCount',\n 'boxFlex',\n 'boxFlexGroup',\n 'boxOrdinalGroup',\n 'columnCount',\n 'fillOpacity',\n 'flex',\n 'flexGrow',\n 'flexShrink',\n 'fontWeight',\n 'lineClamp',\n 'lineHeight',\n 'opacity',\n 'order',\n 'orphans',\n 'tabSize',\n 'widows',\n 'zIndex',\n 'zoom',\n ]);\n\n return Object.entries(style)\n .filter(([, value]) => value != null && value !== '') // 过滤无效值\n .map(([key, value]) => {\n // 转换驼峰式为连字符格式\n const cssKey = key.replace(/[A-Z]/g, (m) => `-${m.toLowerCase()}`);\n\n // 处理数值类型值\n let cssValue = value;\n if (typeof value === 'number' && value !== 0 && !unitlessKeys.has(key)) {\n cssValue = `${value}px`;\n }\n\n return `${cssKey}:${cssValue};`;\n })\n .join(' ');\n};\n\nconst reactify = <T extends AnyProps = AnyProps>(\n WC: string,\n): React.ForwardRefExoticComponent<Omit<T, 'ref'> & React.RefAttributes<HTMLElement | undefined>> => {\n class Reactify extends Component<AnyProps> {\n eventHandlers: [string, EventListener][];\n\n slotRenderers: Map<string, () => void>;\n\n ref: React.RefObject<HTMLElement>;\n\n constructor(props: AnyProps) {\n super(props);\n this.eventHandlers = [];\n this.slotRenderers = new Map();\n const { innerRef } = props;\n this.ref = innerRef || createRef();\n }\n\n setEvent(event: string, val: EventListener) {\n this.eventHandlers.push([event, val]);\n this.ref.current?.addEventListener(event, val);\n }\n\n // 防止重复处理的标记\n private processingSlots = new Set<string>();\n\n // 处理slot相关的prop\n handleSlotProp(prop: string, val: any) {\n const webComponent = this.ref.current as any;\n if (!webComponent) return;\n\n // 防止重复处理同一个slot\n if (this.processingSlots.has(prop)) {\n return;\n }\n\n // 检查是否需要更新(避免相同内容的重复渲染)\n const currentRenderer = this.slotRenderers.get(prop);\n if (currentRenderer && this.isSameReactElement(prop, val)) {\n return; // 相同内容,跳过更新\n }\n\n // 标记正在处理\n this.processingSlots.add(prop);\n\n // 立即缓存新元素,防止重复调用\n if (isValidReactNode(val)) {\n this.lastRenderedElements.set(prop, val);\n }\n\n // 清理旧的渲染器\n if (currentRenderer) {\n this.cleanupSlotRenderer(prop);\n }\n\n // 如果val是函数,为WebComponent提供一个函数,该函数返回渲染后的DOM\n if (typeof val === 'function') {\n const renderSlot = (params?: any) => {\n const reactNode = val(params);\n return this.renderReactNodeToSlot(reactNode, prop);\n };\n webComponent[prop] = renderSlot;\n // 函数类型处理完成后立即移除标记\n this.processingSlots.delete(prop);\n }\n // 如果val是ReactNode,直接渲染到slot\n else if (isValidReactNode(val)) {\n // 先设置属性,让组件知道这个prop有值\n webComponent[prop] = true;\n\n // 使用微任务延迟渲染,确保在当前渲染周期完成后执行\n Promise.resolve().then(() => {\n if (webComponent.update) {\n webComponent.update();\n }\n this.renderReactNodeToSlot(val, prop);\n // 渲染完成后移除处理标记\n this.processingSlots.delete(prop);\n });\n }\n }\n\n // 清理slot渲染器的统一方法\n private cleanupSlotRenderer(slotName: string) {\n const renderer = this.slotRenderers.get(slotName);\n if (!renderer) return;\n\n // 立即清理DOM容器\n this.clearSlotContainers(slotName);\n\n // 总是异步清理React渲染器,避免竞态条件\n Promise.resolve().then(() => {\n this.safeCleanupRenderer(renderer);\n });\n\n this.slotRenderers.delete(slotName);\n }\n\n // 安全清理渲染器\n private safeCleanupRenderer(cleanup: () => void) {\n try {\n cleanup();\n } catch (error) {\n console.warn('Error cleaning up React renderer:', error);\n }\n }\n\n // 立即清理指定slot的所有容器\n private clearSlotContainers(slotName: string) {\n const webComponent = this.ref.current;\n if (!webComponent) return;\n\n // 查找并移除所有匹配的slot容器\n const containers = webComponent.querySelectorAll(`[slot=\"${slotName}\"]`);\n containers.forEach((container: Element) => {\n if (container.parentNode) {\n container.parentNode.removeChild(container);\n }\n });\n }\n\n // 缓存最后渲染的React元素,用于比较\n private lastRenderedElements = new Map<string, any>();\n\n // 检查是否是相同的React元素\n private isSameReactElement(prop: string, val: any): boolean {\n const lastElement = this.lastRenderedElements.get(prop);\n\n if (!lastElement || !isValidReactNode(val)) {\n return false;\n }\n\n // 简单比较:如果是相同的React元素引用,则认为相同\n if (lastElement === val) {\n return true;\n }\n\n // 对于React元素,比较type、key和props\n if (React.isValidElement(lastElement) && React.isValidElement(val)) {\n const typeMatch = lastElement.type === val.type;\n const keyMatch = lastElement.key === val.key;\n const propsMatch = JSON.stringify(lastElement.props) === JSON.stringify(val.props);\n return typeMatch && keyMatch && propsMatch;\n }\n\n return false;\n }\n\n // 将React节点渲染到slot中\n renderReactNodeToSlot(reactNode: React.ReactNode, slotName: string) {\n const webComponent = this.ref.current;\n if (!webComponent) return;\n\n // 检查是否已经有相同的slot容器存在,避免重复创建\n const existingContainers = webComponent.querySelectorAll(`[slot=\"${slotName}\"]`);\n if (existingContainers.length > 0) {\n return;\n }\n\n // 直接创建容器并添加到Web Component中\n const container = document.createElement('div');\n container.style.display = 'contents'; // 不影响布局\n container.setAttribute('slot', slotName); // 设置slot属性,Web Components会自动处理\n\n // 将容器添加到Web Component中\n webComponent.appendChild(container);\n\n // 根据不同类型的reactNode创建不同的清理函数\n let cleanupFn: (() => void) | null = null;\n\n if (isValidReactNode(reactNode)) {\n if (React.isValidElement(reactNode)) {\n try {\n const renderer = createRenderer(container);\n renderer.render(reactNode);\n cleanupFn = () => {\n try {\n renderer.unmount();\n } catch (error) {\n console.warn('Error unmounting React renderer:', error);\n }\n };\n } catch (error) {\n console.warn('Error creating React renderer:', error);\n }\n } else if (typeof reactNode === 'string' || typeof reactNode === 'number') {\n container.textContent = String(reactNode);\n cleanupFn = () => {\n container.textContent = '';\n };\n } else if (Array.isArray(reactNode)) {\n try {\n const renderer = createRenderer(container);\n const wrapper = React.createElement(\n 'div',\n { style: { display: 'contents' } },\n ...reactNode.filter(isValidReactNode),\n );\n renderer.render(wrapper);\n cleanupFn = () => {\n try {\n renderer.unmount();\n } catch (error) {\n console.warn('Error unmounting React renderer:', error);\n }\n };\n } catch (error) {\n console.warn('Error creating React renderer for array:', error);\n }\n }\n }\n\n // 保存cleanup函数\n this.slotRenderers.set(slotName, () => {\n // 清理缓存\n this.lastRenderedElements.delete(slotName);\n // 异步unmount避免竞态条件\n Promise.resolve().then(() => {\n if (cleanupFn) {\n cleanupFn();\n }\n if (container.parentNode) {\n container.parentNode.removeChild(container);\n }\n });\n });\n }\n\n update() {\n this.clearEventHandlers();\n if (!this.ref.current) return;\n\n Object.entries(this.props).forEach(([prop, val]) => {\n if (['innerRef', 'children'].includes(prop)) return;\n\n // event handler\n if (typeof val === 'function' && prop.match(/^on[A-Za-z]/)) {\n const eventName = prop.slice(2);\n const omiEventName = eventName[0].toLowerCase() + eventName.slice(1);\n this.setEvent(omiEventName, val as EventListener);\n return;\n }\n\n // render functions or slot props\n if (typeof val === 'function' && prop.match(/^render[A-Za-z]/)) {\n this.handleSlotProp(prop, val);\n return;\n }\n\n // 检查是否是slot prop(通过组件的slotProps静态属性或Slot后缀)\n if (isReactElement(val) && !prop.match(/^on[A-Za-z]/) && !prop.match(/^render[A-Za-z]/)) {\n const componentClass = this.ref.current?.constructor as any;\n const declaredSlots = componentClass?.slotProps || [];\n\n if (declaredSlots.includes(prop) || prop.endsWith('Slot')) {\n this.handleSlotProp(prop, val);\n return;\n }\n }\n\n // Complex object处理\n if (typeof val === 'object' && val !== null) {\n // style特殊处理\n if (prop === 'style') {\n this.ref.current?.setAttribute('style', styleObjectToString(val));\n return;\n }\n // 其他复杂对象直接设置为属性\n (this.ref.current as any)[prop] = val;\n\n return;\n }\n\n // 函数类型但不是事件处理器也不是render函数的,直接设置为属性\n if (typeof val === 'function') {\n (this.ref.current as any)[prop] = val;\n return;\n }\n\n // camel case to kebab-case for attributes\n if (prop.match(hyphenateRE)) {\n this.ref.current?.setAttribute(hyphenate(prop), val);\n this.ref.current?.removeAttribute(prop);\n return;\n }\n\n // default: set as property\n (this.ref.current as any)[prop] = val;\n });\n }\n\n componentDidUpdate() {\n this.update();\n }\n\n componentDidMount() {\n this.update();\n }\n\n componentWillUnmount() {\n this.clearEventHandlers();\n this.clearSlotRenderers();\n }\n\n clearEventHandlers() {\n this.eventHandlers.forEach(([event, handler]) => {\n this.ref.current?.removeEventListener(event, handler);\n });\n this.eventHandlers = [];\n }\n\n clearSlotRenderers() {\n this.slotRenderers.forEach((cleanup) => {\n this.safeCleanupRenderer(cleanup);\n });\n this.slotRenderers.clear();\n this.processingSlots.clear();\n }\n\n render() {\n const { children, className, innerRef, ...rest } = this.props;\n\n return createElement(WC, { class: className, ...rest, ref: this.ref }, children);\n }\n }\n\n return forwardRef<HTMLElement, AnyProps>((props, ref) =>\n createElement(Reactify, { ...props, innerRef: ref }),\n ) as React.ForwardRefExoticComponent<Omit<T, 'ref'> & React.RefAttributes<HTMLElement | undefined>>;\n};\n\nexport default reactify;\n"],"names":["isReact18Plus","createRoot","rootCache","WeakMap","createRenderer","container","root","get","set","render","element","unmount","ReactDOM","unmountComponentAtNode","isReactElement","obj","_typeof","$$typeof","toString","includes","isValidReactNode","node","Array","isArray","hyphenateRE","hyphenate","str","replace","toLowerCase","styleObjectToString","style","unitlessKeys","Set","Object","entries","filter","_ref","_ref2","_slicedToArray","value","map","_ref3","_ref4","key","cssKey","m","concat","cssValue","has","join","reactify","WC","Reactify","props","_this","_classCallCheck","_callSuper","_defineProperty","Map","eventHandlers","slotRenderers","innerRef","ref","createRef","_inherits","_Component","_createClass","setEvent","event","val","_this$ref$current","push","current","addEventListener","handleSlotProp","prop","_this2","webComponent","processingSlots","currentRenderer","isSameReactElement","add","lastRenderedElements","cleanupSlotRenderer","renderSlot","params","reactNode","renderReactNodeToSlot","Promise","resolve","then","update","slotName","_this3","renderer","clearSlotContainers","safeCleanupRenderer","cleanup","error","console","warn","containers","querySelectorAll","forEach","parentNode","removeChild","lastElement","React","isValidElement","typeMatch","type","keyMatch","propsMatch","JSON","stringify","_this4","existingContainers","length","document","createElement","display","setAttribute","appendChild","cleanupFn","textContent","String","wrapper","apply","_toConsumableArray","_this5","clearEventHandlers","_ref5","_ref6","match","eventName","slice","omiEventName","_this5$ref$current","componentClass","constructor","declaredSlots","slotProps","endsWith","_this5$ref$current2","_this5$ref$current3","_this5$ref$current4","removeAttribute","componentDidUpdate","componentDidMount","componentWillUnmount","clearSlotRenderers","_this6","_ref7","_this6$ref$current","_ref8","handler","removeEventListener","_this7","clear","_this$props","children","className","rest","_objectWithoutProperties","_excluded","_objectSpread","Component","forwardRef"],"mappings":"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"}
@@ -1,16 +0,0 @@
1
- import React from 'react';
2
- type AnyProps = Record<string, any>;
3
- /**
4
- * 注册Web组件
5
- * @param tagName 组件标签名
6
- * @param importPath 导入路径
7
- */
8
- export declare function registerWebComponent(tagName: string, importPath: string): Promise<void>;
9
- /**
10
- * 将Web组件转换为React组件(带懒加载)
11
- * @param tagName 组件的自定义元素标签名
12
- * @param importPath 导入Web组件注册模块的路径
13
- * @param fallback 加载过程中显示的React节点
14
- */
15
- export declare const reactifyLazy: <T extends AnyProps = AnyProps>(tagName: string, importPath: string, fallback?: React.ReactNode) => React.ForwardRefExoticComponent<React.PropsWithoutRef<T> & React.RefAttributes<HTMLElement>>;
16
- export {};
@@ -1,74 +0,0 @@
1
- /**
2
- * tdesign v1.0.1-beta.17
3
- * (c) 2025 tdesign
4
- * @license MIT
5
- */
6
-
7
- import _defineProperty from '@babel/runtime/helpers/defineProperty';
8
- import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
9
- import React, { forwardRef, useState, useEffect } from 'react';
10
- import reactify from './reactify.js';
11
- import '@babel/runtime/helpers/objectWithoutProperties';
12
- import '@babel/runtime/helpers/toConsumableArray';
13
- import '@babel/runtime/helpers/classCallCheck';
14
- import '@babel/runtime/helpers/createClass';
15
- import '@babel/runtime/helpers/possibleConstructorReturn';
16
- import '@babel/runtime/helpers/getPrototypeOf';
17
- import '@babel/runtime/helpers/inherits';
18
- import '@babel/runtime/helpers/typeof';
19
- import 'react-dom';
20
- import 'react-dom/client';
21
-
22
- function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
23
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
24
- var componentRegistry = /* @__PURE__ */new Map();
25
- function registerWebComponent(tagName, importPath) {
26
- if (!componentRegistry.has(tagName)) {
27
- componentRegistry.set(tagName, import(importPath).then(function (module) {
28
- if (module["default"] && typeof module["default"] === "function") {
29
- module["default"]();
30
- }
31
- })["catch"](function (error) {
32
- console.error("Failed to load component ".concat(tagName, ":"), error);
33
- throw error;
34
- }));
35
- }
36
- return componentRegistry.get(tagName);
37
- }
38
- var reactifyLazy = function reactifyLazy(tagName, importPath, fallback) {
39
- var ReactComponent = reactify(tagName);
40
- return /*#__PURE__*/forwardRef(function (props, ref) {
41
- var _useState = useState(false),
42
- _useState2 = _slicedToArray(_useState, 2),
43
- isLoaded = _useState2[0],
44
- setIsLoaded = _useState2[1];
45
- var _useState3 = useState(null),
46
- _useState4 = _slicedToArray(_useState3, 2),
47
- error = _useState4[0],
48
- setError = _useState4[1];
49
- useEffect(function () {
50
- var isMounted = true;
51
- registerWebComponent(tagName, importPath).then(function () {
52
- if (isMounted) setIsLoaded(true);
53
- })["catch"](function (err) {
54
- if (isMounted) setError(err);
55
- });
56
- return function () {
57
- isMounted = false;
58
- };
59
- }, [tagName, importPath]);
60
- if (error) {
61
- console.error("Failed to load component ".concat(tagName), error);
62
- return fallback;
63
- }
64
- if (!isLoaded) {
65
- return fallback;
66
- }
67
- return /* @__PURE__ */React.createElement(ReactComponent, _objectSpread(_objectSpread({}, props), {}, {
68
- ref: ref
69
- }));
70
- });
71
- };
72
-
73
- export { reactifyLazy, registerWebComponent };
74
- //# sourceMappingURL=reactifyLazy.js.map