@tdesign-react/chat 1.1.0-alpha.5 → 1.1.0-alpha.7

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 (242) hide show
  1. package/es/_chunks/dep-1007ac80.js +205 -0
  2. package/es/_chunks/dep-1007ac80.js.map +1 -0
  3. package/es/_chunks/dep-16520c2b.js +1247 -0
  4. package/es/_chunks/dep-16520c2b.js.map +1 -0
  5. package/es/_chunks/dep-1743bd61.js +438 -0
  6. package/es/_chunks/dep-1743bd61.js.map +1 -0
  7. package/es/_chunks/dep-3e40d789.js +169 -0
  8. package/es/_chunks/dep-3e40d789.js.map +1 -0
  9. package/es/_chunks/dep-4dedfbef.js +438 -0
  10. package/es/_chunks/dep-4dedfbef.js.map +1 -0
  11. package/es/_chunks/dep-56f5e08e.js +448 -0
  12. package/es/_chunks/dep-56f5e08e.js.map +1 -0
  13. package/es/_chunks/dep-96eca06f.js +169 -0
  14. package/es/_chunks/dep-96eca06f.js.map +1 -0
  15. package/es/_chunks/dep-ebc4cf30.js +1247 -0
  16. package/es/_chunks/dep-ebc4cf30.js.map +1 -0
  17. package/es/_util/reactify.js +33 -13
  18. package/es/_util/reactify.js.map +1 -1
  19. package/es/_util/useDynamicStyle.js +1 -1
  20. package/es/attachments/index.js +1 -1
  21. package/es/chat-actionbar/index.d.ts +13 -4
  22. package/es/chat-actionbar/index.js +35 -5
  23. package/es/chat-actionbar/index.js.map +1 -1
  24. package/es/chat-engine/components/activity/index.js +3 -1
  25. package/es/chat-engine/components/activity/index.js.map +1 -1
  26. package/es/chat-engine/components/activity/registry.js +1 -1
  27. package/es/chat-engine/components/activity/render.d.ts +4 -0
  28. package/es/chat-engine/components/activity/render.js +14 -2
  29. package/es/chat-engine/components/activity/render.js.map +1 -1
  30. package/es/chat-engine/components/activity/types.js +1 -1
  31. package/es/chat-engine/components/index.js +28 -20
  32. package/es/chat-engine/components/index.js.map +1 -1
  33. package/es/chat-engine/components/json-render/catalog/atomic/button.d.ts +14 -0
  34. package/es/chat-engine/components/json-render/catalog/atomic/button.js +71 -0
  35. package/es/chat-engine/components/json-render/catalog/atomic/button.js.map +1 -0
  36. package/es/chat-engine/components/json-render/catalog/atomic/card.d.ts +11 -0
  37. package/es/chat-engine/components/json-render/catalog/atomic/card.js +57 -0
  38. package/es/chat-engine/components/json-render/catalog/atomic/card.js.map +1 -0
  39. package/es/chat-engine/components/json-render/catalog/atomic/input.d.ts +20 -0
  40. package/es/chat-engine/components/json-render/catalog/atomic/input.js +76 -0
  41. package/es/chat-engine/components/json-render/catalog/atomic/input.js.map +1 -0
  42. package/es/chat-engine/components/json-render/catalog/atomic/layout.d.ts +44 -0
  43. package/es/chat-engine/components/json-render/catalog/atomic/layout.js +129 -0
  44. package/es/chat-engine/components/json-render/catalog/atomic/layout.js.map +1 -0
  45. package/es/chat-engine/components/json-render/catalog/atomic/text.d.ts +11 -0
  46. package/es/chat-engine/components/json-render/catalog/atomic/text.js +31 -0
  47. package/es/chat-engine/components/json-render/catalog/atomic/text.js.map +1 -0
  48. package/es/chat-engine/components/json-render/catalog/catalog-to-prompt.d.ts +614 -0
  49. package/es/chat-engine/components/json-render/catalog/catalog-to-prompt.js +779 -0
  50. package/es/chat-engine/components/json-render/catalog/catalog-to-prompt.js.map +1 -0
  51. package/es/chat-engine/components/json-render/contexts/actions.d.ts +5 -0
  52. package/es/chat-engine/components/json-render/contexts/actions.js +39 -16
  53. package/es/chat-engine/components/json-render/contexts/actions.js.map +1 -1
  54. package/es/chat-engine/components/json-render/contexts/data.d.ts +99 -7
  55. package/es/chat-engine/components/json-render/contexts/data.js +155 -76
  56. package/es/chat-engine/components/json-render/contexts/data.js.map +1 -1
  57. package/es/chat-engine/components/json-render/contexts/index.d.ts +4 -0
  58. package/es/chat-engine/components/json-render/contexts/index.js +27 -0
  59. package/es/chat-engine/components/json-render/contexts/index.js.map +1 -0
  60. package/es/chat-engine/components/json-render/contexts/store.d.ts +67 -0
  61. package/es/chat-engine/components/json-render/contexts/store.js +104 -0
  62. package/es/chat-engine/components/json-render/contexts/store.js.map +1 -0
  63. package/es/chat-engine/components/json-render/contexts/tree.d.ts +44 -0
  64. package/es/chat-engine/components/json-render/contexts/tree.js +78 -0
  65. package/es/chat-engine/components/json-render/contexts/tree.js.map +1 -0
  66. package/es/chat-engine/components/json-render/contexts/validation.js +13 -5
  67. package/es/chat-engine/components/json-render/contexts/validation.js.map +1 -1
  68. package/es/chat-engine/components/json-render/contexts/visibility.d.ts +12 -2
  69. package/es/chat-engine/components/json-render/contexts/visibility.js +32 -22
  70. package/es/chat-engine/components/json-render/contexts/visibility.js.map +1 -1
  71. package/es/chat-engine/components/json-render/index.d.ts +9 -32
  72. package/es/chat-engine/components/json-render/index.js +59 -19
  73. package/es/chat-engine/components/json-render/index.js.map +1 -1
  74. package/es/chat-engine/components/json-render/registry/a2ui-binding.d.ts +64 -0
  75. package/es/chat-engine/components/json-render/registry/a2ui-binding.js +76 -0
  76. package/es/chat-engine/components/json-render/registry/a2ui-binding.js.map +1 -0
  77. package/es/chat-engine/components/json-render/registry/a2ui-registry.d.ts +78 -0
  78. package/es/chat-engine/components/json-render/registry/a2ui-registry.js +76 -0
  79. package/es/chat-engine/components/json-render/registry/a2ui-registry.js.map +1 -0
  80. package/es/chat-engine/components/json-render/registry/config.d.ts +142 -0
  81. package/es/chat-engine/components/json-render/registry/config.js +76 -0
  82. package/es/chat-engine/components/json-render/registry/config.js.map +1 -0
  83. package/es/chat-engine/components/json-render/registry/index.d.ts +137 -0
  84. package/es/chat-engine/components/json-render/registry/index.js +76 -0
  85. package/es/chat-engine/components/json-render/registry/index.js.map +1 -0
  86. package/es/chat-engine/components/json-render/renderer/A2UIJsonRenderActivityRenderer.d.ts +35 -0
  87. package/es/chat-engine/components/json-render/renderer/A2UIJsonRenderActivityRenderer.js +271 -0
  88. package/es/chat-engine/components/json-render/renderer/A2UIJsonRenderActivityRenderer.js.map +1 -0
  89. package/es/chat-engine/components/json-render/renderer/JsonRenderActivityRenderer.d.ts +44 -0
  90. package/es/chat-engine/components/json-render/renderer/JsonRenderActivityRenderer.js +63 -0
  91. package/es/chat-engine/components/json-render/renderer/JsonRenderActivityRenderer.js.map +1 -0
  92. package/es/chat-engine/components/json-render/renderer/JsonUIRenderer.d.ts +44 -0
  93. package/es/chat-engine/components/json-render/renderer/JsonUIRenderer.js +131 -0
  94. package/es/chat-engine/components/json-render/renderer/JsonUIRenderer.js.map +1 -0
  95. package/es/chat-engine/components/json-render/renderer/_index.d.ts +71 -0
  96. package/es/chat-engine/components/json-render/renderer/_index.js +133 -0
  97. package/es/chat-engine/components/json-render/renderer/_index.js.map +1 -0
  98. package/es/chat-engine/components/json-render/renderer/index.d.ts +71 -0
  99. package/es/chat-engine/components/json-render/renderer/index.js +125 -0
  100. package/es/chat-engine/components/json-render/renderer/index.js.map +1 -0
  101. package/es/chat-engine/components/json-render/types.d.ts +37 -19
  102. package/es/chat-engine/components/json-render/types.js +1 -1
  103. package/es/chat-engine/components/provider/agent-state.js +14 -7
  104. package/es/chat-engine/components/provider/agent-state.js.map +1 -1
  105. package/es/chat-engine/components/toolcall/index.js +14 -7
  106. package/es/chat-engine/components/toolcall/index.js.map +1 -1
  107. package/es/chat-engine/components/toolcall/registry.js +1 -1
  108. package/es/chat-engine/components/toolcall/render.js +16 -9
  109. package/es/chat-engine/components/toolcall/render.js.map +1 -1
  110. package/es/chat-engine/components/toolcall/types.js +1 -1
  111. package/es/chat-engine/core/adapters/a2ui/index.d.ts +10 -0
  112. package/es/chat-engine/core/adapters/a2ui/index.js +24 -0
  113. package/es/chat-engine/core/adapters/a2ui/index.js.map +1 -0
  114. package/es/chat-engine/core/adapters/a2ui/processor/A2uiMessageProcessor.d.ts +197 -0
  115. package/es/chat-engine/core/adapters/a2ui/processor/A2uiMessageProcessor.js +438 -0
  116. package/es/chat-engine/core/adapters/a2ui/processor/A2uiMessageProcessor.js.map +1 -0
  117. package/es/chat-engine/core/adapters/a2ui/processor/ComponentTree.d.ts +53 -0
  118. package/es/chat-engine/core/adapters/a2ui/processor/ComponentTree.js +158 -0
  119. package/es/chat-engine/core/adapters/a2ui/processor/ComponentTree.js.map +1 -0
  120. package/es/chat-engine/core/adapters/a2ui/processor/DataStore.d.ts +63 -0
  121. package/es/chat-engine/core/adapters/a2ui/processor/DataStore.js +172 -0
  122. package/es/chat-engine/core/adapters/a2ui/processor/DataStore.js.map +1 -0
  123. package/es/chat-engine/core/adapters/a2ui/processor/PathResolver.d.ts +47 -0
  124. package/es/chat-engine/core/adapters/a2ui/processor/PathResolver.js +99 -0
  125. package/es/chat-engine/core/adapters/a2ui/processor/PathResolver.js.map +1 -0
  126. package/es/chat-engine/core/adapters/a2ui/types/index.d.ts +4 -0
  127. package/es/chat-engine/core/adapters/a2ui/types/index.js +9 -0
  128. package/es/chat-engine/core/adapters/a2ui/types/index.js.map +1 -0
  129. package/es/chat-engine/core/adapters/a2ui/types/types.d.ts +770 -0
  130. package/es/chat-engine/core/adapters/a2ui/types/types.js +104 -0
  131. package/es/chat-engine/core/adapters/a2ui/types/types.js.map +1 -0
  132. package/es/chat-engine/core/adapters/a2ui/utils/binding.d.ts +34 -0
  133. package/es/chat-engine/core/adapters/a2ui/utils/binding.js +1784 -0
  134. package/es/chat-engine/core/adapters/a2ui/utils/binding.js.map +1 -0
  135. package/es/chat-engine/core/adapters/a2ui/utils/index.d.ts +5 -0
  136. package/es/chat-engine/core/adapters/a2ui/utils/index.js +13 -0
  137. package/es/chat-engine/core/adapters/a2ui/utils/index.js.map +1 -0
  138. package/es/chat-engine/core/adapters/a2ui/utils/validation.d.ts +70 -0
  139. package/es/chat-engine/core/adapters/a2ui/utils/validation.js +333 -0
  140. package/es/chat-engine/core/adapters/a2ui/utils/validation.js.map +1 -0
  141. package/es/chat-engine/core/adapters/agui/ActivityManager.d.ts +93 -0
  142. package/es/chat-engine/core/adapters/agui/ActivityManager.js +148 -0
  143. package/es/chat-engine/core/adapters/agui/ActivityManager.js.map +1 -0
  144. package/es/chat-engine/core/adapters/agui/StateManager.d.ts +99 -0
  145. package/es/chat-engine/core/adapters/agui/StateManager.js +172 -0
  146. package/es/chat-engine/core/adapters/agui/StateManager.js.map +1 -0
  147. package/es/chat-engine/core/adapters/agui/event-mapper.d.ts +1 -1
  148. package/es/chat-engine/core/adapters/agui/event-mapper.js +7 -7
  149. package/es/chat-engine/core/adapters/agui/event-mapper.js.map +1 -1
  150. package/es/chat-engine/core/adapters/agui/index.d.ts +4 -7
  151. package/es/chat-engine/core/adapters/agui/index.js +11 -16
  152. package/es/chat-engine/core/adapters/agui/index.js.map +1 -1
  153. package/es/chat-engine/core/adapters/agui/types/events.d.ts +1550 -0
  154. package/es/chat-engine/core/adapters/agui/types/events.js +15 -0
  155. package/es/chat-engine/core/adapters/agui/types/events.js.map +1 -0
  156. package/es/chat-engine/core/adapters/agui/types/index.d.ts +818 -0
  157. package/es/chat-engine/core/adapters/agui/types/index.js +277 -0
  158. package/es/chat-engine/core/adapters/agui/types/index.js.map +1 -0
  159. package/es/chat-engine/core/adapters/agui/utils.js +1 -1
  160. package/es/chat-engine/core/adapters/index.d.ts +5 -0
  161. package/es/chat-engine/core/adapters/index.js +34 -0
  162. package/es/chat-engine/core/adapters/index.js.map +1 -0
  163. package/es/chat-engine/core/adapters/json-render/SurfaceStateManager.d.ts +114 -0
  164. package/es/chat-engine/core/adapters/json-render/SurfaceStateManager.js +194 -0
  165. package/es/chat-engine/core/adapters/json-render/SurfaceStateManager.js.map +1 -0
  166. package/es/chat-engine/core/adapters/json-render/a2ui-to-jsonrender.d.ts +49 -0
  167. package/es/chat-engine/core/adapters/json-render/a2ui-to-jsonrender.js +307 -0
  168. package/es/chat-engine/core/adapters/json-render/a2ui-to-jsonrender.js.map +1 -0
  169. package/es/chat-engine/core/adapters/json-render/engine.d.ts +58 -0
  170. package/es/chat-engine/core/adapters/json-render/engine.js +88 -0
  171. package/es/chat-engine/core/adapters/json-render/engine.js.map +1 -0
  172. package/es/chat-engine/core/adapters/json-render/index.d.ts +8 -0
  173. package/es/chat-engine/core/adapters/json-render/index.js +18 -0
  174. package/es/chat-engine/core/adapters/json-render/index.js.map +1 -0
  175. package/es/chat-engine/core/adapters/json-render/types/a2ui.d.ts +96 -0
  176. package/es/chat-engine/core/adapters/json-render/types/a2ui.js +7 -0
  177. package/es/chat-engine/core/adapters/json-render/types/a2ui.js.map +1 -0
  178. package/es/chat-engine/core/adapters/json-render/types/core.d.ts +49 -0
  179. package/es/chat-engine/core/adapters/json-render/types/core.js +7 -0
  180. package/es/chat-engine/core/adapters/json-render/types/core.js.map +1 -0
  181. package/es/chat-engine/core/adapters/json-render/types/index.d.ts +5 -0
  182. package/es/chat-engine/core/adapters/json-render/types/index.js +9 -0
  183. package/es/chat-engine/core/adapters/json-render/types/index.js.map +1 -0
  184. package/es/chat-engine/core/event-bus/ChatEventBus.js +1 -1
  185. package/es/chat-engine/core/event-bus/index.js +1 -1
  186. package/es/chat-engine/core/event-bus/types.js +1 -1
  187. package/es/chat-engine/core/index.d.ts +2 -3
  188. package/es/chat-engine/core/index.js +16 -8
  189. package/es/chat-engine/core/index.js.map +1 -1
  190. package/es/chat-engine/core/processor/index.js +1 -1
  191. package/es/chat-engine/core/server/batch-client.js +1 -1
  192. package/es/chat-engine/core/server/connection-manager.js +1 -1
  193. package/es/chat-engine/core/server/errors.js +1 -1
  194. package/es/chat-engine/core/server/index.js +1 -1
  195. package/es/chat-engine/core/server/llm-service.js +15 -17
  196. package/es/chat-engine/core/server/llm-service.js.map +1 -1
  197. package/es/chat-engine/core/server/sse-client.js +1 -1
  198. package/es/chat-engine/core/server/sse-parser.js +1 -1
  199. package/es/chat-engine/core/server/types.js +1 -1
  200. package/es/chat-engine/core/store/message.js +6 -4
  201. package/es/chat-engine/core/store/message.js.map +1 -1
  202. package/es/chat-engine/core/store/model.js +2 -1
  203. package/es/chat-engine/core/store/model.js.map +1 -1
  204. package/es/chat-engine/core/store/reactiveState.d.ts +4 -0
  205. package/es/chat-engine/core/store/reactiveState.js +15 -1235
  206. package/es/chat-engine/core/store/reactiveState.js.map +1 -1
  207. package/es/chat-engine/core/type.d.ts +8 -19
  208. package/es/chat-engine/core/type.js +1 -1
  209. package/es/chat-engine/core/utils/eventEmitter.js +1 -1
  210. package/es/chat-engine/core/utils/immutable-patch.d.ts +61 -0
  211. package/es/chat-engine/core/utils/immutable-patch.js +147 -0
  212. package/es/chat-engine/core/utils/immutable-patch.js.map +1 -0
  213. package/es/chat-engine/core/utils/index.d.ts +7 -2
  214. package/es/chat-engine/core/utils/index.js +8 -12
  215. package/es/chat-engine/core/utils/index.js.map +1 -1
  216. package/es/chat-engine/core/utils/json-patch/helpers.js +1 -1
  217. package/es/chat-engine/core/utils/json-patch/index.js +1 -1
  218. package/es/chat-engine/core/utils/logger.js +1 -1
  219. package/es/chat-engine/core/utils/performance.d.ts +94 -0
  220. package/es/chat-engine/core/utils/performance.js +205 -0
  221. package/es/chat-engine/core/utils/performance.js.map +1 -0
  222. package/es/chat-engine/hooks/index.js +14 -7
  223. package/es/chat-engine/hooks/index.js.map +1 -1
  224. package/es/chat-engine/hooks/useAgentActivity.js +1 -1
  225. package/es/chat-engine/hooks/useAgentState.js +14 -7
  226. package/es/chat-engine/hooks/useAgentState.js.map +1 -1
  227. package/es/chat-engine/hooks/useAgentToolcall.js +1 -1
  228. package/es/chat-engine/hooks/useChat.js +14 -7
  229. package/es/chat-engine/hooks/useChat.js.map +1 -1
  230. package/es/chat-engine/index.js +28 -20
  231. package/es/chat-engine/index.js.map +1 -1
  232. package/es/chat-filecard/index.js +1 -1
  233. package/es/chat-loading/index.js +1 -1
  234. package/es/chat-markdown/index.js +1 -1
  235. package/es/chat-message/index.js +1 -1
  236. package/es/chat-sender/index.js +1 -1
  237. package/es/chat-thinking/index.js +1 -1
  238. package/es/chatbot/index.js +1 -1
  239. package/es/index.js +28 -20
  240. package/es/index.js.map +1 -1
  241. package/es/style/index.js +1 -1
  242. package/package.json +2 -4
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dep-ebc4cf30.js","sources":["../../../../node_modules/.pnpm/immer@10.1.1/node_modules/immer/dist/immer.mjs"],"sourcesContent":["// src/utils/env.ts\nvar NOTHING = Symbol.for(\"immer-nothing\");\nvar DRAFTABLE = Symbol.for(\"immer-draftable\");\nvar DRAFT_STATE = Symbol.for(\"immer-state\");\n\n// src/utils/errors.ts\nvar errors = process.env.NODE_ENV !== \"production\" ? [\n // All error codes, starting by 0:\n function(plugin) {\n return `The plugin for '${plugin}' has not been loaded into Immer. To enable the plugin, import and call \\`enable${plugin}()\\` when initializing your application.`;\n },\n function(thing) {\n return `produce can only be called on things that are draftable: plain objects, arrays, Map, Set or classes that are marked with '[immerable]: true'. Got '${thing}'`;\n },\n \"This object has been frozen and should not be mutated\",\n function(data) {\n return \"Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? \" + data;\n },\n \"An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.\",\n \"Immer forbids circular references\",\n \"The first or second argument to `produce` must be a function\",\n \"The third argument to `produce` must be a function or undefined\",\n \"First argument to `createDraft` must be a plain object, an array, or an immerable object\",\n \"First argument to `finishDraft` must be a draft returned by `createDraft`\",\n function(thing) {\n return `'current' expects a draft, got: ${thing}`;\n },\n \"Object.defineProperty() cannot be used on an Immer draft\",\n \"Object.setPrototypeOf() cannot be used on an Immer draft\",\n \"Immer only supports deleting array indices\",\n \"Immer only supports setting array indices and the 'length' property\",\n function(thing) {\n return `'original' expects a draft, got: ${thing}`;\n }\n // Note: if more errors are added, the errorOffset in Patches.ts should be increased\n // See Patches.ts for additional errors\n] : [];\nfunction die(error, ...args) {\n if (process.env.NODE_ENV !== \"production\") {\n const e = errors[error];\n const msg = typeof e === \"function\" ? e.apply(null, args) : e;\n throw new Error(`[Immer] ${msg}`);\n }\n throw new Error(\n `[Immer] minified error nr: ${error}. Full error at: https://bit.ly/3cXEKWf`\n );\n}\n\n// src/utils/common.ts\nvar getPrototypeOf = Object.getPrototypeOf;\nfunction isDraft(value) {\n return !!value && !!value[DRAFT_STATE];\n}\nfunction isDraftable(value) {\n if (!value)\n return false;\n return isPlainObject(value) || Array.isArray(value) || !!value[DRAFTABLE] || !!value.constructor?.[DRAFTABLE] || isMap(value) || isSet(value);\n}\nvar objectCtorString = Object.prototype.constructor.toString();\nfunction isPlainObject(value) {\n if (!value || typeof value !== \"object\")\n return false;\n const proto = getPrototypeOf(value);\n if (proto === null) {\n return true;\n }\n const Ctor = Object.hasOwnProperty.call(proto, \"constructor\") && proto.constructor;\n if (Ctor === Object)\n return true;\n return typeof Ctor == \"function\" && Function.toString.call(Ctor) === objectCtorString;\n}\nfunction original(value) {\n if (!isDraft(value))\n die(15, value);\n return value[DRAFT_STATE].base_;\n}\nfunction each(obj, iter) {\n if (getArchtype(obj) === 0 /* Object */) {\n Reflect.ownKeys(obj).forEach((key) => {\n iter(key, obj[key], obj);\n });\n } else {\n obj.forEach((entry, index) => iter(index, entry, obj));\n }\n}\nfunction getArchtype(thing) {\n const state = thing[DRAFT_STATE];\n return state ? state.type_ : Array.isArray(thing) ? 1 /* Array */ : isMap(thing) ? 2 /* Map */ : isSet(thing) ? 3 /* Set */ : 0 /* Object */;\n}\nfunction has(thing, prop) {\n return getArchtype(thing) === 2 /* Map */ ? thing.has(prop) : Object.prototype.hasOwnProperty.call(thing, prop);\n}\nfunction get(thing, prop) {\n return getArchtype(thing) === 2 /* Map */ ? thing.get(prop) : thing[prop];\n}\nfunction set(thing, propOrOldValue, value) {\n const t = getArchtype(thing);\n if (t === 2 /* Map */)\n thing.set(propOrOldValue, value);\n else if (t === 3 /* Set */) {\n thing.add(value);\n } else\n thing[propOrOldValue] = value;\n}\nfunction is(x, y) {\n if (x === y) {\n return x !== 0 || 1 / x === 1 / y;\n } else {\n return x !== x && y !== y;\n }\n}\nfunction isMap(target) {\n return target instanceof Map;\n}\nfunction isSet(target) {\n return target instanceof Set;\n}\nfunction latest(state) {\n return state.copy_ || state.base_;\n}\nfunction shallowCopy(base, strict) {\n if (isMap(base)) {\n return new Map(base);\n }\n if (isSet(base)) {\n return new Set(base);\n }\n if (Array.isArray(base))\n return Array.prototype.slice.call(base);\n const isPlain = isPlainObject(base);\n if (strict === true || strict === \"class_only\" && !isPlain) {\n const descriptors = Object.getOwnPropertyDescriptors(base);\n delete descriptors[DRAFT_STATE];\n let keys = Reflect.ownKeys(descriptors);\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n const desc = descriptors[key];\n if (desc.writable === false) {\n desc.writable = true;\n desc.configurable = true;\n }\n if (desc.get || desc.set)\n descriptors[key] = {\n configurable: true,\n writable: true,\n // could live with !!desc.set as well here...\n enumerable: desc.enumerable,\n value: base[key]\n };\n }\n return Object.create(getPrototypeOf(base), descriptors);\n } else {\n const proto = getPrototypeOf(base);\n if (proto !== null && isPlain) {\n return { ...base };\n }\n const obj = Object.create(proto);\n return Object.assign(obj, base);\n }\n}\nfunction freeze(obj, deep = false) {\n if (isFrozen(obj) || isDraft(obj) || !isDraftable(obj))\n return obj;\n if (getArchtype(obj) > 1) {\n obj.set = obj.add = obj.clear = obj.delete = dontMutateFrozenCollections;\n }\n Object.freeze(obj);\n if (deep)\n Object.entries(obj).forEach(([key, value]) => freeze(value, true));\n return obj;\n}\nfunction dontMutateFrozenCollections() {\n die(2);\n}\nfunction isFrozen(obj) {\n return Object.isFrozen(obj);\n}\n\n// src/utils/plugins.ts\nvar plugins = {};\nfunction getPlugin(pluginKey) {\n const plugin = plugins[pluginKey];\n if (!plugin) {\n die(0, pluginKey);\n }\n return plugin;\n}\nfunction loadPlugin(pluginKey, implementation) {\n if (!plugins[pluginKey])\n plugins[pluginKey] = implementation;\n}\n\n// src/core/scope.ts\nvar currentScope;\nfunction getCurrentScope() {\n return currentScope;\n}\nfunction createScope(parent_, immer_) {\n return {\n drafts_: [],\n parent_,\n immer_,\n // Whenever the modified draft contains a draft from another scope, we\n // need to prevent auto-freezing so the unowned draft can be finalized.\n canAutoFreeze_: true,\n unfinalizedDrafts_: 0\n };\n}\nfunction usePatchesInScope(scope, patchListener) {\n if (patchListener) {\n getPlugin(\"Patches\");\n scope.patches_ = [];\n scope.inversePatches_ = [];\n scope.patchListener_ = patchListener;\n }\n}\nfunction revokeScope(scope) {\n leaveScope(scope);\n scope.drafts_.forEach(revokeDraft);\n scope.drafts_ = null;\n}\nfunction leaveScope(scope) {\n if (scope === currentScope) {\n currentScope = scope.parent_;\n }\n}\nfunction enterScope(immer2) {\n return currentScope = createScope(currentScope, immer2);\n}\nfunction revokeDraft(draft) {\n const state = draft[DRAFT_STATE];\n if (state.type_ === 0 /* Object */ || state.type_ === 1 /* Array */)\n state.revoke_();\n else\n state.revoked_ = true;\n}\n\n// src/core/finalize.ts\nfunction processResult(result, scope) {\n scope.unfinalizedDrafts_ = scope.drafts_.length;\n const baseDraft = scope.drafts_[0];\n const isReplaced = result !== void 0 && result !== baseDraft;\n if (isReplaced) {\n if (baseDraft[DRAFT_STATE].modified_) {\n revokeScope(scope);\n die(4);\n }\n if (isDraftable(result)) {\n result = finalize(scope, result);\n if (!scope.parent_)\n maybeFreeze(scope, result);\n }\n if (scope.patches_) {\n getPlugin(\"Patches\").generateReplacementPatches_(\n baseDraft[DRAFT_STATE].base_,\n result,\n scope.patches_,\n scope.inversePatches_\n );\n }\n } else {\n result = finalize(scope, baseDraft, []);\n }\n revokeScope(scope);\n if (scope.patches_) {\n scope.patchListener_(scope.patches_, scope.inversePatches_);\n }\n return result !== NOTHING ? result : void 0;\n}\nfunction finalize(rootScope, value, path) {\n if (isFrozen(value))\n return value;\n const state = value[DRAFT_STATE];\n if (!state) {\n each(\n value,\n (key, childValue) => finalizeProperty(rootScope, state, value, key, childValue, path)\n );\n return value;\n }\n if (state.scope_ !== rootScope)\n return value;\n if (!state.modified_) {\n maybeFreeze(rootScope, state.base_, true);\n return state.base_;\n }\n if (!state.finalized_) {\n state.finalized_ = true;\n state.scope_.unfinalizedDrafts_--;\n const result = state.copy_;\n let resultEach = result;\n let isSet2 = false;\n if (state.type_ === 3 /* Set */) {\n resultEach = new Set(result);\n result.clear();\n isSet2 = true;\n }\n each(\n resultEach,\n (key, childValue) => finalizeProperty(rootScope, state, result, key, childValue, path, isSet2)\n );\n maybeFreeze(rootScope, result, false);\n if (path && rootScope.patches_) {\n getPlugin(\"Patches\").generatePatches_(\n state,\n path,\n rootScope.patches_,\n rootScope.inversePatches_\n );\n }\n }\n return state.copy_;\n}\nfunction finalizeProperty(rootScope, parentState, targetObject, prop, childValue, rootPath, targetIsSet) {\n if (process.env.NODE_ENV !== \"production\" && childValue === targetObject)\n die(5);\n if (isDraft(childValue)) {\n const path = rootPath && parentState && parentState.type_ !== 3 /* Set */ && // Set objects are atomic since they have no keys.\n !has(parentState.assigned_, prop) ? rootPath.concat(prop) : void 0;\n const res = finalize(rootScope, childValue, path);\n set(targetObject, prop, res);\n if (isDraft(res)) {\n rootScope.canAutoFreeze_ = false;\n } else\n return;\n } else if (targetIsSet) {\n targetObject.add(childValue);\n }\n if (isDraftable(childValue) && !isFrozen(childValue)) {\n if (!rootScope.immer_.autoFreeze_ && rootScope.unfinalizedDrafts_ < 1) {\n return;\n }\n finalize(rootScope, childValue);\n if ((!parentState || !parentState.scope_.parent_) && typeof prop !== \"symbol\" && Object.prototype.propertyIsEnumerable.call(targetObject, prop))\n maybeFreeze(rootScope, childValue);\n }\n}\nfunction maybeFreeze(scope, value, deep = false) {\n if (!scope.parent_ && scope.immer_.autoFreeze_ && scope.canAutoFreeze_) {\n freeze(value, deep);\n }\n}\n\n// src/core/proxy.ts\nfunction createProxyProxy(base, parent) {\n const isArray = Array.isArray(base);\n const state = {\n type_: isArray ? 1 /* Array */ : 0 /* Object */,\n // Track which produce call this is associated with.\n scope_: parent ? parent.scope_ : getCurrentScope(),\n // True for both shallow and deep changes.\n modified_: false,\n // Used during finalization.\n finalized_: false,\n // Track which properties have been assigned (true) or deleted (false).\n assigned_: {},\n // The parent draft state.\n parent_: parent,\n // The base state.\n base_: base,\n // The base proxy.\n draft_: null,\n // set below\n // The base copy with any updated values.\n copy_: null,\n // Called by the `produce` function.\n revoke_: null,\n isManual_: false\n };\n let target = state;\n let traps = objectTraps;\n if (isArray) {\n target = [state];\n traps = arrayTraps;\n }\n const { revoke, proxy } = Proxy.revocable(target, traps);\n state.draft_ = proxy;\n state.revoke_ = revoke;\n return proxy;\n}\nvar objectTraps = {\n get(state, prop) {\n if (prop === DRAFT_STATE)\n return state;\n const source = latest(state);\n if (!has(source, prop)) {\n return readPropFromProto(state, source, prop);\n }\n const value = source[prop];\n if (state.finalized_ || !isDraftable(value)) {\n return value;\n }\n if (value === peek(state.base_, prop)) {\n prepareCopy(state);\n return state.copy_[prop] = createProxy(value, state);\n }\n return value;\n },\n has(state, prop) {\n return prop in latest(state);\n },\n ownKeys(state) {\n return Reflect.ownKeys(latest(state));\n },\n set(state, prop, value) {\n const desc = getDescriptorFromProto(latest(state), prop);\n if (desc?.set) {\n desc.set.call(state.draft_, value);\n return true;\n }\n if (!state.modified_) {\n const current2 = peek(latest(state), prop);\n const currentState = current2?.[DRAFT_STATE];\n if (currentState && currentState.base_ === value) {\n state.copy_[prop] = value;\n state.assigned_[prop] = false;\n return true;\n }\n if (is(value, current2) && (value !== void 0 || has(state.base_, prop)))\n return true;\n prepareCopy(state);\n markChanged(state);\n }\n if (state.copy_[prop] === value && // special case: handle new props with value 'undefined'\n (value !== void 0 || prop in state.copy_) || // special case: NaN\n Number.isNaN(value) && Number.isNaN(state.copy_[prop]))\n return true;\n state.copy_[prop] = value;\n state.assigned_[prop] = true;\n return true;\n },\n deleteProperty(state, prop) {\n if (peek(state.base_, prop) !== void 0 || prop in state.base_) {\n state.assigned_[prop] = false;\n prepareCopy(state);\n markChanged(state);\n } else {\n delete state.assigned_[prop];\n }\n if (state.copy_) {\n delete state.copy_[prop];\n }\n return true;\n },\n // Note: We never coerce `desc.value` into an Immer draft, because we can't make\n // the same guarantee in ES5 mode.\n getOwnPropertyDescriptor(state, prop) {\n const owner = latest(state);\n const desc = Reflect.getOwnPropertyDescriptor(owner, prop);\n if (!desc)\n return desc;\n return {\n writable: true,\n configurable: state.type_ !== 1 /* Array */ || prop !== \"length\",\n enumerable: desc.enumerable,\n value: owner[prop]\n };\n },\n defineProperty() {\n die(11);\n },\n getPrototypeOf(state) {\n return getPrototypeOf(state.base_);\n },\n setPrototypeOf() {\n die(12);\n }\n};\nvar arrayTraps = {};\neach(objectTraps, (key, fn) => {\n arrayTraps[key] = function() {\n arguments[0] = arguments[0][0];\n return fn.apply(this, arguments);\n };\n});\narrayTraps.deleteProperty = function(state, prop) {\n if (process.env.NODE_ENV !== \"production\" && isNaN(parseInt(prop)))\n die(13);\n return arrayTraps.set.call(this, state, prop, void 0);\n};\narrayTraps.set = function(state, prop, value) {\n if (process.env.NODE_ENV !== \"production\" && prop !== \"length\" && isNaN(parseInt(prop)))\n die(14);\n return objectTraps.set.call(this, state[0], prop, value, state[0]);\n};\nfunction peek(draft, prop) {\n const state = draft[DRAFT_STATE];\n const source = state ? latest(state) : draft;\n return source[prop];\n}\nfunction readPropFromProto(state, source, prop) {\n const desc = getDescriptorFromProto(source, prop);\n return desc ? `value` in desc ? desc.value : (\n // This is a very special case, if the prop is a getter defined by the\n // prototype, we should invoke it with the draft as context!\n desc.get?.call(state.draft_)\n ) : void 0;\n}\nfunction getDescriptorFromProto(source, prop) {\n if (!(prop in source))\n return void 0;\n let proto = getPrototypeOf(source);\n while (proto) {\n const desc = Object.getOwnPropertyDescriptor(proto, prop);\n if (desc)\n return desc;\n proto = getPrototypeOf(proto);\n }\n return void 0;\n}\nfunction markChanged(state) {\n if (!state.modified_) {\n state.modified_ = true;\n if (state.parent_) {\n markChanged(state.parent_);\n }\n }\n}\nfunction prepareCopy(state) {\n if (!state.copy_) {\n state.copy_ = shallowCopy(\n state.base_,\n state.scope_.immer_.useStrictShallowCopy_\n );\n }\n}\n\n// src/core/immerClass.ts\nvar Immer2 = class {\n constructor(config) {\n this.autoFreeze_ = true;\n this.useStrictShallowCopy_ = false;\n /**\n * The `produce` function takes a value and a \"recipe function\" (whose\n * return value often depends on the base state). The recipe function is\n * free to mutate its first argument however it wants. All mutations are\n * only ever applied to a __copy__ of the base state.\n *\n * Pass only a function to create a \"curried producer\" which relieves you\n * from passing the recipe function every time.\n *\n * Only plain objects and arrays are made mutable. All other objects are\n * considered uncopyable.\n *\n * Note: This function is __bound__ to its `Immer` instance.\n *\n * @param {any} base - the initial state\n * @param {Function} recipe - function that receives a proxy of the base state as first argument and which can be freely modified\n * @param {Function} patchListener - optional function that will be called with all the patches produced here\n * @returns {any} a new state, or the initial state if nothing was modified\n */\n this.produce = (base, recipe, patchListener) => {\n if (typeof base === \"function\" && typeof recipe !== \"function\") {\n const defaultBase = recipe;\n recipe = base;\n const self = this;\n return function curriedProduce(base2 = defaultBase, ...args) {\n return self.produce(base2, (draft) => recipe.call(this, draft, ...args));\n };\n }\n if (typeof recipe !== \"function\")\n die(6);\n if (patchListener !== void 0 && typeof patchListener !== \"function\")\n die(7);\n let result;\n if (isDraftable(base)) {\n const scope = enterScope(this);\n const proxy = createProxy(base, void 0);\n let hasError = true;\n try {\n result = recipe(proxy);\n hasError = false;\n } finally {\n if (hasError)\n revokeScope(scope);\n else\n leaveScope(scope);\n }\n usePatchesInScope(scope, patchListener);\n return processResult(result, scope);\n } else if (!base || typeof base !== \"object\") {\n result = recipe(base);\n if (result === void 0)\n result = base;\n if (result === NOTHING)\n result = void 0;\n if (this.autoFreeze_)\n freeze(result, true);\n if (patchListener) {\n const p = [];\n const ip = [];\n getPlugin(\"Patches\").generateReplacementPatches_(base, result, p, ip);\n patchListener(p, ip);\n }\n return result;\n } else\n die(1, base);\n };\n this.produceWithPatches = (base, recipe) => {\n if (typeof base === \"function\") {\n return (state, ...args) => this.produceWithPatches(state, (draft) => base(draft, ...args));\n }\n let patches, inversePatches;\n const result = this.produce(base, recipe, (p, ip) => {\n patches = p;\n inversePatches = ip;\n });\n return [result, patches, inversePatches];\n };\n if (typeof config?.autoFreeze === \"boolean\")\n this.setAutoFreeze(config.autoFreeze);\n if (typeof config?.useStrictShallowCopy === \"boolean\")\n this.setUseStrictShallowCopy(config.useStrictShallowCopy);\n }\n createDraft(base) {\n if (!isDraftable(base))\n die(8);\n if (isDraft(base))\n base = current(base);\n const scope = enterScope(this);\n const proxy = createProxy(base, void 0);\n proxy[DRAFT_STATE].isManual_ = true;\n leaveScope(scope);\n return proxy;\n }\n finishDraft(draft, patchListener) {\n const state = draft && draft[DRAFT_STATE];\n if (!state || !state.isManual_)\n die(9);\n const { scope_: scope } = state;\n usePatchesInScope(scope, patchListener);\n return processResult(void 0, scope);\n }\n /**\n * Pass true to automatically freeze all copies created by Immer.\n *\n * By default, auto-freezing is enabled.\n */\n setAutoFreeze(value) {\n this.autoFreeze_ = value;\n }\n /**\n * Pass true to enable strict shallow copy.\n *\n * By default, immer does not copy the object descriptors such as getter, setter and non-enumrable properties.\n */\n setUseStrictShallowCopy(value) {\n this.useStrictShallowCopy_ = value;\n }\n applyPatches(base, patches) {\n let i;\n for (i = patches.length - 1; i >= 0; i--) {\n const patch = patches[i];\n if (patch.path.length === 0 && patch.op === \"replace\") {\n base = patch.value;\n break;\n }\n }\n if (i > -1) {\n patches = patches.slice(i + 1);\n }\n const applyPatchesImpl = getPlugin(\"Patches\").applyPatches_;\n if (isDraft(base)) {\n return applyPatchesImpl(base, patches);\n }\n return this.produce(\n base,\n (draft) => applyPatchesImpl(draft, patches)\n );\n }\n};\nfunction createProxy(value, parent) {\n const draft = isMap(value) ? getPlugin(\"MapSet\").proxyMap_(value, parent) : isSet(value) ? getPlugin(\"MapSet\").proxySet_(value, parent) : createProxyProxy(value, parent);\n const scope = parent ? parent.scope_ : getCurrentScope();\n scope.drafts_.push(draft);\n return draft;\n}\n\n// src/core/current.ts\nfunction current(value) {\n if (!isDraft(value))\n die(10, value);\n return currentImpl(value);\n}\nfunction currentImpl(value) {\n if (!isDraftable(value) || isFrozen(value))\n return value;\n const state = value[DRAFT_STATE];\n let copy;\n if (state) {\n if (!state.modified_)\n return state.base_;\n state.finalized_ = true;\n copy = shallowCopy(value, state.scope_.immer_.useStrictShallowCopy_);\n } else {\n copy = shallowCopy(value, true);\n }\n each(copy, (key, childValue) => {\n set(copy, key, currentImpl(childValue));\n });\n if (state) {\n state.finalized_ = false;\n }\n return copy;\n}\n\n// src/plugins/patches.ts\nfunction enablePatches() {\n const errorOffset = 16;\n if (process.env.NODE_ENV !== \"production\") {\n errors.push(\n 'Sets cannot have \"replace\" patches.',\n function(op) {\n return \"Unsupported patch operation: \" + op;\n },\n function(path) {\n return \"Cannot apply patch, path doesn't resolve: \" + path;\n },\n \"Patching reserved attributes like __proto__, prototype and constructor is not allowed\"\n );\n }\n const REPLACE = \"replace\";\n const ADD = \"add\";\n const REMOVE = \"remove\";\n function generatePatches_(state, basePath, patches, inversePatches) {\n switch (state.type_) {\n case 0 /* Object */:\n case 2 /* Map */:\n return generatePatchesFromAssigned(\n state,\n basePath,\n patches,\n inversePatches\n );\n case 1 /* Array */:\n return generateArrayPatches(state, basePath, patches, inversePatches);\n case 3 /* Set */:\n return generateSetPatches(\n state,\n basePath,\n patches,\n inversePatches\n );\n }\n }\n function generateArrayPatches(state, basePath, patches, inversePatches) {\n let { base_, assigned_ } = state;\n let copy_ = state.copy_;\n if (copy_.length < base_.length) {\n ;\n [base_, copy_] = [copy_, base_];\n [patches, inversePatches] = [inversePatches, patches];\n }\n for (let i = 0; i < base_.length; i++) {\n if (assigned_[i] && copy_[i] !== base_[i]) {\n const path = basePath.concat([i]);\n patches.push({\n op: REPLACE,\n path,\n // Need to maybe clone it, as it can in fact be the original value\n // due to the base/copy inversion at the start of this function\n value: clonePatchValueIfNeeded(copy_[i])\n });\n inversePatches.push({\n op: REPLACE,\n path,\n value: clonePatchValueIfNeeded(base_[i])\n });\n }\n }\n for (let i = base_.length; i < copy_.length; i++) {\n const path = basePath.concat([i]);\n patches.push({\n op: ADD,\n path,\n // Need to maybe clone it, as it can in fact be the original value\n // due to the base/copy inversion at the start of this function\n value: clonePatchValueIfNeeded(copy_[i])\n });\n }\n for (let i = copy_.length - 1; base_.length <= i; --i) {\n const path = basePath.concat([i]);\n inversePatches.push({\n op: REMOVE,\n path\n });\n }\n }\n function generatePatchesFromAssigned(state, basePath, patches, inversePatches) {\n const { base_, copy_ } = state;\n each(state.assigned_, (key, assignedValue) => {\n const origValue = get(base_, key);\n const value = get(copy_, key);\n const op = !assignedValue ? REMOVE : has(base_, key) ? REPLACE : ADD;\n if (origValue === value && op === REPLACE)\n return;\n const path = basePath.concat(key);\n patches.push(op === REMOVE ? { op, path } : { op, path, value });\n inversePatches.push(\n op === ADD ? { op: REMOVE, path } : op === REMOVE ? { op: ADD, path, value: clonePatchValueIfNeeded(origValue) } : { op: REPLACE, path, value: clonePatchValueIfNeeded(origValue) }\n );\n });\n }\n function generateSetPatches(state, basePath, patches, inversePatches) {\n let { base_, copy_ } = state;\n let i = 0;\n base_.forEach((value) => {\n if (!copy_.has(value)) {\n const path = basePath.concat([i]);\n patches.push({\n op: REMOVE,\n path,\n value\n });\n inversePatches.unshift({\n op: ADD,\n path,\n value\n });\n }\n i++;\n });\n i = 0;\n copy_.forEach((value) => {\n if (!base_.has(value)) {\n const path = basePath.concat([i]);\n patches.push({\n op: ADD,\n path,\n value\n });\n inversePatches.unshift({\n op: REMOVE,\n path,\n value\n });\n }\n i++;\n });\n }\n function generateReplacementPatches_(baseValue, replacement, patches, inversePatches) {\n patches.push({\n op: REPLACE,\n path: [],\n value: replacement === NOTHING ? void 0 : replacement\n });\n inversePatches.push({\n op: REPLACE,\n path: [],\n value: baseValue\n });\n }\n function applyPatches_(draft, patches) {\n patches.forEach((patch) => {\n const { path, op } = patch;\n let base = draft;\n for (let i = 0; i < path.length - 1; i++) {\n const parentType = getArchtype(base);\n let p = path[i];\n if (typeof p !== \"string\" && typeof p !== \"number\") {\n p = \"\" + p;\n }\n if ((parentType === 0 /* Object */ || parentType === 1 /* Array */) && (p === \"__proto__\" || p === \"constructor\"))\n die(errorOffset + 3);\n if (typeof base === \"function\" && p === \"prototype\")\n die(errorOffset + 3);\n base = get(base, p);\n if (typeof base !== \"object\")\n die(errorOffset + 2, path.join(\"/\"));\n }\n const type = getArchtype(base);\n const value = deepClonePatchValue(patch.value);\n const key = path[path.length - 1];\n switch (op) {\n case REPLACE:\n switch (type) {\n case 2 /* Map */:\n return base.set(key, value);\n case 3 /* Set */:\n die(errorOffset);\n default:\n return base[key] = value;\n }\n case ADD:\n switch (type) {\n case 1 /* Array */:\n return key === \"-\" ? base.push(value) : base.splice(key, 0, value);\n case 2 /* Map */:\n return base.set(key, value);\n case 3 /* Set */:\n return base.add(value);\n default:\n return base[key] = value;\n }\n case REMOVE:\n switch (type) {\n case 1 /* Array */:\n return base.splice(key, 1);\n case 2 /* Map */:\n return base.delete(key);\n case 3 /* Set */:\n return base.delete(patch.value);\n default:\n return delete base[key];\n }\n default:\n die(errorOffset + 1, op);\n }\n });\n return draft;\n }\n function deepClonePatchValue(obj) {\n if (!isDraftable(obj))\n return obj;\n if (Array.isArray(obj))\n return obj.map(deepClonePatchValue);\n if (isMap(obj))\n return new Map(\n Array.from(obj.entries()).map(([k, v]) => [k, deepClonePatchValue(v)])\n );\n if (isSet(obj))\n return new Set(Array.from(obj).map(deepClonePatchValue));\n const cloned = Object.create(getPrototypeOf(obj));\n for (const key in obj)\n cloned[key] = deepClonePatchValue(obj[key]);\n if (has(obj, DRAFTABLE))\n cloned[DRAFTABLE] = obj[DRAFTABLE];\n return cloned;\n }\n function clonePatchValueIfNeeded(obj) {\n if (isDraft(obj)) {\n return deepClonePatchValue(obj);\n } else\n return obj;\n }\n loadPlugin(\"Patches\", {\n applyPatches_,\n generatePatches_,\n generateReplacementPatches_\n });\n}\n\n// src/plugins/mapset.ts\nfunction enableMapSet() {\n class DraftMap extends Map {\n constructor(target, parent) {\n super();\n this[DRAFT_STATE] = {\n type_: 2 /* Map */,\n parent_: parent,\n scope_: parent ? parent.scope_ : getCurrentScope(),\n modified_: false,\n finalized_: false,\n copy_: void 0,\n assigned_: void 0,\n base_: target,\n draft_: this,\n isManual_: false,\n revoked_: false\n };\n }\n get size() {\n return latest(this[DRAFT_STATE]).size;\n }\n has(key) {\n return latest(this[DRAFT_STATE]).has(key);\n }\n set(key, value) {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n if (!latest(state).has(key) || latest(state).get(key) !== value) {\n prepareMapCopy(state);\n markChanged(state);\n state.assigned_.set(key, true);\n state.copy_.set(key, value);\n state.assigned_.set(key, true);\n }\n return this;\n }\n delete(key) {\n if (!this.has(key)) {\n return false;\n }\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n prepareMapCopy(state);\n markChanged(state);\n if (state.base_.has(key)) {\n state.assigned_.set(key, false);\n } else {\n state.assigned_.delete(key);\n }\n state.copy_.delete(key);\n return true;\n }\n clear() {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n if (latest(state).size) {\n prepareMapCopy(state);\n markChanged(state);\n state.assigned_ = /* @__PURE__ */ new Map();\n each(state.base_, (key) => {\n state.assigned_.set(key, false);\n });\n state.copy_.clear();\n }\n }\n forEach(cb, thisArg) {\n const state = this[DRAFT_STATE];\n latest(state).forEach((_value, key, _map) => {\n cb.call(thisArg, this.get(key), key, this);\n });\n }\n get(key) {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n const value = latest(state).get(key);\n if (state.finalized_ || !isDraftable(value)) {\n return value;\n }\n if (value !== state.base_.get(key)) {\n return value;\n }\n const draft = createProxy(value, state);\n prepareMapCopy(state);\n state.copy_.set(key, draft);\n return draft;\n }\n keys() {\n return latest(this[DRAFT_STATE]).keys();\n }\n values() {\n const iterator = this.keys();\n return {\n [Symbol.iterator]: () => this.values(),\n next: () => {\n const r = iterator.next();\n if (r.done)\n return r;\n const value = this.get(r.value);\n return {\n done: false,\n value\n };\n }\n };\n }\n entries() {\n const iterator = this.keys();\n return {\n [Symbol.iterator]: () => this.entries(),\n next: () => {\n const r = iterator.next();\n if (r.done)\n return r;\n const value = this.get(r.value);\n return {\n done: false,\n value: [r.value, value]\n };\n }\n };\n }\n [(DRAFT_STATE, Symbol.iterator)]() {\n return this.entries();\n }\n }\n function proxyMap_(target, parent) {\n return new DraftMap(target, parent);\n }\n function prepareMapCopy(state) {\n if (!state.copy_) {\n state.assigned_ = /* @__PURE__ */ new Map();\n state.copy_ = new Map(state.base_);\n }\n }\n class DraftSet extends Set {\n constructor(target, parent) {\n super();\n this[DRAFT_STATE] = {\n type_: 3 /* Set */,\n parent_: parent,\n scope_: parent ? parent.scope_ : getCurrentScope(),\n modified_: false,\n finalized_: false,\n copy_: void 0,\n base_: target,\n draft_: this,\n drafts_: /* @__PURE__ */ new Map(),\n revoked_: false,\n isManual_: false\n };\n }\n get size() {\n return latest(this[DRAFT_STATE]).size;\n }\n has(value) {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n if (!state.copy_) {\n return state.base_.has(value);\n }\n if (state.copy_.has(value))\n return true;\n if (state.drafts_.has(value) && state.copy_.has(state.drafts_.get(value)))\n return true;\n return false;\n }\n add(value) {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n if (!this.has(value)) {\n prepareSetCopy(state);\n markChanged(state);\n state.copy_.add(value);\n }\n return this;\n }\n delete(value) {\n if (!this.has(value)) {\n return false;\n }\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n prepareSetCopy(state);\n markChanged(state);\n return state.copy_.delete(value) || (state.drafts_.has(value) ? state.copy_.delete(state.drafts_.get(value)) : (\n /* istanbul ignore next */\n false\n ));\n }\n clear() {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n if (latest(state).size) {\n prepareSetCopy(state);\n markChanged(state);\n state.copy_.clear();\n }\n }\n values() {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n prepareSetCopy(state);\n return state.copy_.values();\n }\n entries() {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n prepareSetCopy(state);\n return state.copy_.entries();\n }\n keys() {\n return this.values();\n }\n [(DRAFT_STATE, Symbol.iterator)]() {\n return this.values();\n }\n forEach(cb, thisArg) {\n const iterator = this.values();\n let result = iterator.next();\n while (!result.done) {\n cb.call(thisArg, result.value, result.value, this);\n result = iterator.next();\n }\n }\n }\n function proxySet_(target, parent) {\n return new DraftSet(target, parent);\n }\n function prepareSetCopy(state) {\n if (!state.copy_) {\n state.copy_ = /* @__PURE__ */ new Set();\n state.base_.forEach((value) => {\n if (isDraftable(value)) {\n const draft = createProxy(value, state);\n state.drafts_.set(value, draft);\n state.copy_.add(draft);\n } else {\n state.copy_.add(value);\n }\n });\n }\n }\n function assertUnrevoked(state) {\n if (state.revoked_)\n die(3, JSON.stringify(latest(state)));\n }\n loadPlugin(\"MapSet\", { proxyMap_, proxySet_ });\n}\n\n// src/immer.ts\nvar immer = new Immer2();\nvar produce = immer.produce;\nvar produceWithPatches = immer.produceWithPatches.bind(\n immer\n);\nvar setAutoFreeze = immer.setAutoFreeze.bind(immer);\nvar setUseStrictShallowCopy = immer.setUseStrictShallowCopy.bind(immer);\nvar applyPatches = immer.applyPatches.bind(immer);\nvar createDraft = immer.createDraft.bind(immer);\nvar finishDraft = immer.finishDraft.bind(immer);\nfunction castDraft(value) {\n return value;\n}\nfunction castImmutable(value) {\n return value;\n}\nexport {\n Immer2 as Immer,\n applyPatches,\n castDraft,\n castImmutable,\n createDraft,\n current,\n enableMapSet,\n enablePatches,\n finishDraft,\n freeze,\n DRAFTABLE as immerable,\n isDraft,\n isDraftable,\n NOTHING as nothing,\n original,\n produce,\n produceWithPatches,\n setAutoFreeze,\n setUseStrictShallowCopy\n};\n//# sourceMappingURL=immer.mjs.map"],"names":["NOTHING","Symbol","DRAFTABLE","DRAFT_STATE"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAKO,IAAMA,OAAA,GAAyBC,MAAA,CAAA,KAAA,CAAO,CAAI,eAAe,CAAA,CAAA;AAUzD,IAAMC,SAAA,GAA2BD,MAAA,CAAA,KAAA,CAAO,CAAI,iBAAiB,CAAA,CAAA;AAE7D,IAAME,WAAA,GAA6BF,MAAA,CAAA,KAAA,CAAO,CAAI,aAAa,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * tdesign v1.1.0-alpha.4
2
+ * tdesign v1.1.0-alpha.7
3
3
  * (c) 2026 tdesign
4
4
  * @license MIT
5
5
  */
@@ -64,6 +64,15 @@ var reactify = function reactify(WC) {
64
64
  this.eventHandlers.push([event, val]);
65
65
  (_this$ref$current = this.ref.current) === null || _this$ref$current === void 0 || _this$ref$current.addEventListener(event, val);
66
66
  }
67
+ }, {
68
+ key: "resolveSlotName",
69
+ value: function resolveSlotName(prop) {
70
+ var _this$ref$current2;
71
+ var baseName = prop.endsWith("Slot") ? prop.slice(0, -4) : prop;
72
+ var kebabName = hyphenate(baseName);
73
+ var hasKebabSlot = ((_this$ref$current2 = this.ref.current) === null || _this$ref$current2 === void 0 || (_this$ref$current2 = _this$ref$current2.shadowRoot) === null || _this$ref$current2 === void 0 ? void 0 : _this$ref$current2.querySelector("slot[name=\"".concat(kebabName, "\"]"))) !== null;
74
+ return hasKebabSlot ? kebabName : baseName;
75
+ }
67
76
  }, {
68
77
  key: "handleSlotProp",
69
78
  value: function handleSlotProp(prop, val) {
@@ -97,8 +106,8 @@ var reactify = function reactify(WC) {
97
106
  instance.root.unmount();
98
107
  }, 0);
99
108
  if (instance.container.parentNode === this.ref.current) {
100
- var _this$ref$current2;
101
- (_this$ref$current2 = this.ref.current) === null || _this$ref$current2 === void 0 || _this$ref$current2.removeChild(instance.container);
109
+ var _this$ref$current3;
110
+ (_this$ref$current3 = this.ref.current) === null || _this$ref$current3 === void 0 || _this$ref$current3.removeChild(instance.container);
102
111
  }
103
112
  this.slotInstances["delete"](slotName);
104
113
  }
@@ -108,13 +117,14 @@ var reactify = function reactify(WC) {
108
117
  value: function renderReactNodeToSlot(reactNode, slotName) {
109
118
  var webComponent = this.ref.current;
110
119
  if (!webComponent) return;
120
+ var resolveSlotName = this.resolveSlotName(slotName);
111
121
  var instance = this.slotInstances.get(slotName);
112
122
  if (!instance) {
113
- var container = webComponent.querySelector("[slot=\"".concat(slotName, "\"]"));
123
+ var container = webComponent.querySelector("[slot=\"".concat(resolveSlotName, "\"]"));
114
124
  if (!container) {
115
125
  container = document.createElement("div");
116
126
  container.style.display = "contents";
117
- container.setAttribute("slot", slotName);
127
+ container.setAttribute("slot", resolveSlotName);
118
128
  webComponent.appendChild(container);
119
129
  }
120
130
  var root = createRoot(container);
@@ -144,18 +154,21 @@ var reactify = function reactify(WC) {
144
154
  return;
145
155
  }
146
156
  if (isReactElement(val) && !prop.match(/^on[A-Za-z]/)) {
147
- var _this3$ref$current;
157
+ var _this3$ref$current, _this3$ref$current2;
148
158
  var componentClass = (_this3$ref$current = _this3.ref.current) === null || _this3$ref$current === void 0 ? void 0 : _this3$ref$current.constructor;
149
159
  var declaredSlots = (componentClass === null || componentClass === void 0 ? void 0 : componentClass.slotProps) || [];
150
- if (declaredSlots.includes(prop) || prop.endsWith("Slot")) {
160
+ var isDeclaredSlot = declaredSlots.includes(prop) || prop.endsWith("Slot");
161
+ var possibleSlotName = hyphenate(prop.endsWith("Slot") ? prop.slice(0, -4) : prop);
162
+ var hasShadowSlot = ((_this3$ref$current2 = _this3.ref.current) === null || _this3$ref$current2 === void 0 || (_this3$ref$current2 = _this3$ref$current2.shadowRoot) === null || _this3$ref$current2 === void 0 ? void 0 : _this3$ref$current2.querySelector("slot[name=\"".concat(possibleSlotName, "\"]"))) !== null;
163
+ if (isDeclaredSlot || hasShadowSlot) {
151
164
  _this3.handleSlotProp(prop, val);
152
165
  return;
153
166
  }
154
167
  }
155
168
  if (_typeof(val) === "object" && val !== null) {
156
169
  if (prop === "style") {
157
- var _this3$ref$current2;
158
- (_this3$ref$current2 = _this3.ref.current) === null || _this3$ref$current2 === void 0 || _this3$ref$current2.setAttribute("style", styleObjectToString(val));
170
+ var _this3$ref$current3;
171
+ (_this3$ref$current3 = _this3.ref.current) === null || _this3$ref$current3 === void 0 || _this3$ref$current3.setAttribute("style", styleObjectToString(val));
159
172
  return;
160
173
  }
161
174
  _this3.ref.current[prop] = val;
@@ -166,9 +179,9 @@ var reactify = function reactify(WC) {
166
179
  return;
167
180
  }
168
181
  if (prop.match(hyphenateRE)) {
169
- var _this3$ref$current3, _this3$ref$current4;
170
- (_this3$ref$current3 = _this3.ref.current) === null || _this3$ref$current3 === void 0 || _this3$ref$current3.setAttribute(hyphenate(prop), val);
171
- (_this3$ref$current4 = _this3.ref.current) === null || _this3$ref$current4 === void 0 || _this3$ref$current4.removeAttribute(prop);
182
+ var _this3$ref$current4, _this3$ref$current5;
183
+ (_this3$ref$current4 = _this3.ref.current) === null || _this3$ref$current4 === void 0 || _this3$ref$current4.setAttribute(hyphenate(prop), val);
184
+ (_this3$ref$current5 = _this3.ref.current) === null || _this3$ref$current5 === void 0 || _this3$ref$current5.removeAttribute(prop);
172
185
  return;
173
186
  }
174
187
  if (!isReact19Plus()) {
@@ -222,9 +235,16 @@ var reactify = function reactify(WC) {
222
235
  children = _this$props.children,
223
236
  className = _this$props.className,
224
237
  rest = _objectWithoutProperties(_this$props, _excluded);
238
+ var filteredProps = {};
239
+ Object.keys(rest).forEach(function (key) {
240
+ var val = rest[key];
241
+ if (typeof val === "string" || typeof val === "number" || typeof val === "boolean") {
242
+ filteredProps[key] = val;
243
+ }
244
+ });
225
245
  return /*#__PURE__*/createElement(WC, _objectSpread(_objectSpread({
226
246
  "class": className
227
- }, rest), {}, {
247
+ }, filteredProps), {}, {
228
248
  ref: this.ref
229
249
  }), children);
230
250
  }
@@ -1 +1 @@
1
- {"version":3,"file":"reactify.js","sources":["../../../pro-components/chat/_util/reactify.tsx"],"sourcesContent":["import React, { Component, createRef, createElement, forwardRef } from 'react';\nimport { createRoot, Root } from 'react-dom/client';\n\ntype AnyProps = {\n [key: string]: any;\n};\n\nconst hyphenateRE = /\\B([A-Z])/g;\nconst hyphenate = (string: string) => string.replace(hyphenateRE, '-$1').toLowerCase();\n\nconst styleObjectToString = (style: any) => {\n if (!style) return '';\n if (typeof style === 'string') return style;\n return Object.keys(style)\n .reduce((acc: string[], key) => {\n const value = style[key];\n const cssKey = key.replace(hyphenateRE, '-$1').toLowerCase();\n return acc.concat(`${cssKey}:${value}`);\n }, [])\n .join(';');\n};\n\nconst isReactElement = (node: any): boolean => {\n return React.isValidElement(node);\n};\n\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\nconst isReact19Plus = () => {\n const version = React.version.split('.')[0];\n return parseInt(version, 10) >= 19;\n};\n\nconst reactify = <T extends AnyProps = AnyProps>(\n WC: string,\n): React.ForwardRefExoticComponent<React.PropsWithoutRef<T> & React.RefAttributes<HTMLElement>> => {\n class Reactify extends Component<T> {\n eventHandlers: [string, EventListener][];\n\n // 使用 Map 缓存每个 slot 的 React Root 实例\n slotInstances: Map<\n string,\n {\n root: Root;\n container: HTMLElement;\n }\n >;\n\n ref: React.RefObject<HTMLElement>;\n\n constructor(props: T) {\n super(props);\n this.eventHandlers = [];\n this.slotInstances = 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 // 处理slot相关的prop\n handleSlotProp(prop: string, val: any) {\n const webComponent = this.ref.current as any;\n if (!webComponent) return;\n\n // 如果val是函数,为WebComponent提供一个函数,该函数返回渲染后的DOM\n if (typeof val === 'function') {\n const renderSlot = (params?: any) => {\n const reactNode = val(params);\n // 函数式 slot 每次调用可能产生新内容,这里简化处理,\n // 实际场景中可能需要更复杂的挂载逻辑,或者 WebComponent 内部处理了 DOM 挂载\n // 这里保持原逻辑或根据 WebComponent 行为调整\n return this.renderReactNodeToSlot(reactNode, prop);\n };\n webComponent[prop] = renderSlot;\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 } else {\n this.cleanupSlotRenderer(prop);\n }\n }\n\n // 清理slot渲染器的统一方法\n private cleanupSlotRenderer(slotName: string) {\n const instance = this.slotInstances.get(slotName);\n if (instance) {\n // React 18 使用 root.unmount()\n setTimeout(() => {\n instance.root.unmount();\n }, 0);\n\n if (instance.container.parentNode === this.ref.current) {\n this.ref.current?.removeChild(instance.container);\n }\n this.slotInstances.delete(slotName);\n }\n }\n\n // 将React节点渲染到slot中\n renderReactNodeToSlot(reactNode: React.ReactNode, slotName: string) {\n const webComponent = this.ref.current;\n if (!webComponent) return;\n\n let instance = this.slotInstances.get(slotName);\n\n if (!instance) {\n // 检查是否已经有相同的slot容器存在\n let container = webComponent.querySelector(`[slot=\"${slotName}\"]`) as HTMLElement;\n if (!container) {\n container = document.createElement('div');\n container.style.display = 'contents';\n container.setAttribute('slot', slotName);\n webComponent.appendChild(container);\n }\n\n // 创建 React Root\n const root = createRoot(container);\n\n instance = {\n container,\n root,\n };\n this.slotInstances.set(slotName, instance);\n }\n\n // 复用 root 进行增量更新,React 会自动处理 Diff,避免 DOM 销毁重建\n instance.root.render(reactNode);\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 // 检查是否是slot prop\n if (isReactElement(val) && !prop.match(/^on[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 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 if (!isReact19Plus()) {\n (this.ref.current as any)[prop] = val;\n }\n });\n }\n\n componentDidUpdate() {\n this.update();\n }\n\n componentDidMount() {\n this.update();\n }\n\n componentWillUnmount() {\n this.clearEventHandlers();\n this.clearSlotInstances();\n }\n\n clearEventHandlers() {\n this.eventHandlers.forEach(([event, handler]) => {\n this.ref.current?.removeEventListener(event, handler);\n });\n this.eventHandlers = [];\n }\n\n clearSlotInstances() {\n this.slotInstances.forEach((instance) => {\n // 卸载时清理\n setTimeout(() => {\n instance.root.unmount();\n }, 0);\n });\n this.slotInstances.clear();\n }\n\n render() {\n const { children, className, ...rest } = this.props;\n return createElement(WC, { class: className, ...rest, ref: this.ref }, children);\n }\n }\n\n return forwardRef<HTMLElement, T>((props, ref) =>\n createElement(Reactify, { ...props, innerRef: ref } as T & { innerRef: React.ForwardedRef<HTMLElement> }),\n );\n};\n\nexport default reactify;\n"],"names":["hyphenateRE","hyphenate","string","replace","toLowerCase","styleObjectToString","style","Object","keys","reduce","acc","key","value","cssKey","concat","join","isReactElement","node","React","isValidElement","isValidReactNode","Array","isArray","isReact19Plus","version","split","parseInt","reactify","WC","Reactify","props","_this","_classCallCheck","_callSuper","eventHandlers","slotInstances","Map","innerRef","ref","createRef","_inherits","_Component","_createClass","setEvent","event","val","_this$ref$current","push","current","addEventListener","handleSlotProp","prop","_this2","webComponent","renderSlot","params","reactNode","renderReactNodeToSlot","Promise","resolve","then","update","cleanupSlotRenderer","slotName","instance","get","setTimeout","root","unmount","container","parentNode","_this$ref$current2","removeChild","querySelector","document","createElement","display","setAttribute","appendChild","createRoot","set","render","_this3","clearEventHandlers","entries","forEach","_ref","_ref2","_slicedToArray","includes","match","eventName","slice","omiEventName","_this3$ref$current","componentClass","constructor","declaredSlots","slotProps","endsWith","_typeof","_this3$ref$current2","_this3$ref$current3","_this3$ref$current4","removeAttribute","componentDidUpdate","componentDidMount","componentWillUnmount","clearSlotInstances","_this4","_ref3","_this4$ref$current","_ref4","handler","removeEventListener","clear","_this$props","children","className","rest","_objectWithoutProperties","_excluded","_objectSpread","Component","forwardRef"],"mappings":"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"}
1
+ {"version":3,"file":"reactify.js","sources":["../../../pro-components/chat/_util/reactify.tsx"],"sourcesContent":["import React, { Component, createRef, createElement, forwardRef } from 'react';\nimport { createRoot, Root } from 'react-dom/client';\n\ntype AnyProps = {\n [key: string]: any;\n};\n\nconst hyphenateRE = /\\B([A-Z])/g;\nconst hyphenate = (string: string) => string.replace(hyphenateRE, '-$1').toLowerCase();\n\nconst styleObjectToString = (style: any) => {\n if (!style) return '';\n if (typeof style === 'string') return style;\n return Object.keys(style)\n .reduce((acc: string[], key) => {\n const value = style[key];\n const cssKey = key.replace(hyphenateRE, '-$1').toLowerCase();\n return acc.concat(`${cssKey}:${value}`);\n }, [])\n .join(';');\n};\n\nconst isReactElement = (node: any): boolean => React.isValidElement(node);\n\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\nconst isReact19Plus = () => {\n const version = React.version.split('.')[0];\n return parseInt(version, 10) >= 19;\n};\n\nconst reactify = <T extends AnyProps = AnyProps>(\n WC: string,\n): React.ForwardRefExoticComponent<React.PropsWithoutRef<T> & React.RefAttributes<HTMLElement>> => {\n class Reactify extends Component<T> {\n eventHandlers: [string, EventListener][];\n\n // 使用 Map 缓存每个 slot 的 React Root 实例\n slotInstances: Map<\n string,\n {\n root: Root;\n container: HTMLElement;\n }\n >;\n\n ref: React.RefObject<HTMLElement>;\n\n constructor(props: T) {\n super(props);\n this.eventHandlers = [];\n this.slotInstances = 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 // 根据shadow DOM中实际存在的slot解析正确的slot名\n private resolveSlotName(prop: string) {\n const baseName = prop.endsWith('Slot') ? prop.slice(0, -4) : prop;\n const kebabName = hyphenate(baseName);\n const hasKebabSlot = this.ref.current?.shadowRoot?.querySelector(`slot[name=\"${kebabName}\"]`) !== null;\n return hasKebabSlot ? kebabName : baseName;\n }\n\n // 处理slot相关的prop\n handleSlotProp(prop: string, val: any) {\n const webComponent = this.ref.current as any;\n if (!webComponent) return;\n\n // 如果val是函数,为WebComponent提供一个函数,该函数返回渲染后的DOM\n if (typeof val === 'function') {\n const renderSlot = (params?: any) => {\n const reactNode = val(params);\n // 函数式 slot 每次调用可能产生新内容,这里简化处理,\n // 实际场景中可能需要更复杂的挂载逻辑,或者 WebComponent 内部处理了 DOM 挂载\n // 这里保持原逻辑或根据 WebComponent 行为调整\n return this.renderReactNodeToSlot(reactNode, prop);\n };\n webComponent[prop] = renderSlot;\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 } else {\n this.cleanupSlotRenderer(prop);\n }\n }\n\n // 清理slot渲染器的统一方法\n private cleanupSlotRenderer(slotName: string) {\n const instance = this.slotInstances.get(slotName);\n if (instance) {\n // React 18 使用 root.unmount()\n setTimeout(() => {\n instance.root.unmount();\n }, 0);\n\n if (instance.container.parentNode === this.ref.current) {\n this.ref.current?.removeChild(instance.container);\n }\n this.slotInstances.delete(slotName);\n }\n }\n\n // 将React节点渲染到slot中\n renderReactNodeToSlot(reactNode: React.ReactNode, slotName: string) {\n const webComponent = this.ref.current;\n if (!webComponent) return;\n\n const resolveSlotName = this.resolveSlotName(slotName);\n\n let instance = this.slotInstances.get(slotName);\n\n if (!instance) {\n // 检查是否已经有相同的slot容器存在\n let container = webComponent.querySelector(`[slot=\"${resolveSlotName}\"]`) as HTMLElement;\n if (!container) {\n container = document.createElement('div');\n container.style.display = 'contents';\n container.setAttribute('slot', resolveSlotName);\n webComponent.appendChild(container);\n }\n\n // 创建 React Root\n const root = createRoot(container);\n\n instance = {\n container,\n root,\n };\n this.slotInstances.set(slotName, instance);\n }\n\n // 复用 root 进行增量更新,React 会自动处理 Diff,避免 DOM 销毁重建\n instance.root.render(reactNode);\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 if (isReactElement(val) && !prop.match(/^on[A-Za-z]/)) {\n const componentClass = this.ref.current?.constructor as any;\n const declaredSlots = componentClass?.slotProps || [];\n // 如果webc组件的slotProps显式声明了这个slot,或prop以“Slot”结尾,就把传入的reactdom挂载到webc组件对应的<slot></slot>占位符上\n const isDeclaredSlot = declaredSlots.includes(prop) || prop.endsWith('Slot');\n\n // 允许通过shadow dom检测到的slot自动挂载\n const possibleSlotName = hyphenate(prop.endsWith('Slot') ? prop.slice(0, -4) : prop);\n const hasShadowSlot =\n this.ref.current?.shadowRoot?.querySelector(`slot[name=\"${possibleSlotName}\"]`) !== null;\n\n if (isDeclaredSlot || hasShadowSlot) {\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 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 if (!isReact19Plus()) {\n (this.ref.current as any)[prop] = val;\n }\n });\n }\n\n componentDidUpdate() {\n this.update();\n }\n\n componentDidMount() {\n this.update();\n }\n\n componentWillUnmount() {\n this.clearEventHandlers();\n this.clearSlotInstances();\n }\n\n clearEventHandlers() {\n this.eventHandlers.forEach(([event, handler]) => {\n this.ref.current?.removeEventListener(event, handler);\n });\n this.eventHandlers = [];\n }\n\n clearSlotInstances() {\n this.slotInstances.forEach((instance) => {\n // 卸载时清理\n setTimeout(() => {\n instance.root.unmount();\n }, 0);\n });\n this.slotInstances.clear();\n }\n\n render() {\n const { children, className, ...rest } = this.props;\n // 仅将基本类型作为attribute传递,其余复杂类型在update中处理\n const filteredProps: Record<string, any> = {};\n Object.keys(rest).forEach((key) => {\n const val = (rest as Record<string, any>)[key];\n if (typeof val === 'string' || typeof val === 'number' || typeof val === 'boolean') {\n filteredProps[key] = val;\n }\n });\n return createElement(WC, { class: className, ...filteredProps, ref: this.ref }, children);\n }\n }\n\n return forwardRef<HTMLElement, T>((props, ref) =>\n createElement(Reactify, { ...props, innerRef: ref } as T & { innerRef: React.ForwardedRef<HTMLElement> }),\n );\n};\n\nexport default reactify;\n"],"names":["hyphenateRE","hyphenate","string","replace","toLowerCase","styleObjectToString","style","Object","keys","reduce","acc","key","value","cssKey","concat","join","isReactElement","node","React","isValidElement","isValidReactNode","Array","isArray","isReact19Plus","version","split","parseInt","reactify","WC","Reactify","props","_this","_classCallCheck","_callSuper","eventHandlers","slotInstances","Map","innerRef","ref","createRef","_inherits","_Component","_createClass","setEvent","event","val","_this$ref$current","push","current","addEventListener","resolveSlotName","prop","_this$ref$current2","baseName","endsWith","slice","kebabName","hasKebabSlot","shadowRoot","querySelector","handleSlotProp","_this2","webComponent","renderSlot","params","reactNode","renderReactNodeToSlot","Promise","resolve","then","update","cleanupSlotRenderer","slotName","instance","get","setTimeout","root","unmount","container","parentNode","_this$ref$current3","removeChild","document","createElement","display","setAttribute","appendChild","createRoot","set","render","_this3","clearEventHandlers","entries","forEach","_ref","_ref2","_slicedToArray","includes","match","eventName","omiEventName","_this3$ref$current","_this3$ref$current2","componentClass","constructor","declaredSlots","slotProps","isDeclaredSlot","possibleSlotName","hasShadowSlot","_typeof","_this3$ref$current3","_this3$ref$current4","_this3$ref$current5","removeAttribute","componentDidUpdate","componentDidMount","componentWillUnmount","clearSlotInstances","_this4","_ref3","_this4$ref$current","_ref4","handler","removeEventListener","clear","_this$props","children","className","rest","_objectWithoutProperties","_excluded","filteredProps","_objectSpread","Component","forwardRef"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * tdesign v1.1.0-alpha.4
2
+ * tdesign v1.1.0-alpha.7
3
3
  * (c) 2026 tdesign
4
4
  * @license MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * tdesign v1.1.0-alpha.4
2
+ * tdesign v1.1.0-alpha.7
3
3
  * (c) 2026 tdesign
4
4
  * @license MIT
5
5
  */
@@ -1,7 +1,16 @@
1
- import { TdChatActionProps } from 'tdesign-web-components';
1
+ import React from 'react';
2
+ import { TdChatActionProps, TdChatActionsName } from 'tdesign-web-components';
2
3
  import 'tdesign-web-components/lib/chat-action';
3
- export declare const ChatActionBar: React.ForwardRefExoticComponent<Omit<TdChatActionProps, 'ref'> & React.RefAttributes<HTMLElement | undefined> & {
4
- [key: string]: any;
5
- }>;
4
+ type ChatActionBarAction = TdChatActionsName | React.ReactElement | {
5
+ name: string;
6
+ render?: React.ReactNode;
7
+ ignoreWrapper?: boolean;
8
+ };
9
+ type ChatActionBarProps = Omit<TdChatActionProps, 'actionBar' | 'ref'> & {
10
+ actionBar?: boolean | ChatActionBarAction[];
11
+ ref?: React.Ref<HTMLElement | undefined>;
12
+ };
13
+ export declare const ChatActionBar: (props: ChatActionBarProps) => import("react/jsx-runtime").JSX.Element;
6
14
  export default ChatActionBar;
15
+ export type { ChatActionBarAction };
7
16
  export type { TdChatActionProps, TdChatActionsName } from 'tdesign-web-components';
@@ -1,13 +1,14 @@
1
1
  /**
2
- * tdesign v1.1.0-alpha.4
2
+ * tdesign v1.1.0-alpha.7
3
3
  * (c) 2026 tdesign
4
4
  * @license MIT
5
5
  */
6
6
 
7
+ import _defineProperty from '@babel/runtime/helpers/defineProperty';
8
+ import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';
9
+ import React from 'react';
7
10
  import 'tdesign-web-components/lib/chat-action';
8
11
  import reactify from '../_util/reactify.js';
9
- import '@babel/runtime/helpers/defineProperty';
10
- import '@babel/runtime/helpers/objectWithoutProperties';
11
12
  import '@babel/runtime/helpers/typeof';
12
13
  import '@babel/runtime/helpers/slicedToArray';
13
14
  import '@babel/runtime/helpers/classCallCheck';
@@ -15,10 +16,39 @@ import '@babel/runtime/helpers/createClass';
15
16
  import '@babel/runtime/helpers/possibleConstructorReturn';
16
17
  import '@babel/runtime/helpers/getPrototypeOf';
17
18
  import '@babel/runtime/helpers/inherits';
18
- import 'react';
19
19
  import 'react-dom/client';
20
20
 
21
- var ChatActionBar = reactify("t-chat-action");
21
+ var _excluded = ["actionBar", "ref"];
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 BaseChatActionBar = reactify("t-chat-action");
25
+ var normalizeSlotName = function normalizeSlotName(raw) {
26
+ return raw.replace(/[^a-zA-Z0-9_-]/g, "-");
27
+ };
28
+ var ChatActionBar = function ChatActionBar(props) {
29
+ var actionBar = props.actionBar,
30
+ ref = props.ref,
31
+ rest = _objectWithoutProperties(props, _excluded);
32
+ var slotProps = {};
33
+ var mappedActionBar = actionBar;
34
+ if (Array.isArray(actionBar)) {
35
+ mappedActionBar = actionBar.map(function (action, index) {
36
+ if (/*#__PURE__*/React.isValidElement(action)) {
37
+ var key = action.key != null ? String(action.key) : "item-".concat(index);
38
+ var slotName = normalizeSlotName("action-".concat(key));
39
+ slotProps["".concat(slotName, "Slot")] = action;
40
+ return {
41
+ name: slotName
42
+ };
43
+ }
44
+ return action;
45
+ });
46
+ }
47
+ return /* @__PURE__ */React.createElement(BaseChatActionBar, _objectSpread(_objectSpread({}, rest), {}, {
48
+ actionBar: mappedActionBar,
49
+ ref: ref
50
+ }, slotProps));
51
+ };
22
52
 
23
53
  export { ChatActionBar, ChatActionBar as default };
24
54
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../pro-components/chat/chat-actionbar/index.tsx"],"sourcesContent":["import { TdChatActionProps } from 'tdesign-web-components';\nimport 'tdesign-web-components/lib/chat-action';\nimport reactify from '../_util/reactify';\n\nexport const ChatActionBar: React.ForwardRefExoticComponent<\n Omit<TdChatActionProps, 'ref'> &\n React.RefAttributes<HTMLElement | undefined> & {\n [key: string]: any;\n }\n> = reactify<TdChatActionProps>('t-chat-action');\n\nexport default ChatActionBar;\nexport type { TdChatActionProps, TdChatActionsName } from 'tdesign-web-components';\n\n// 方案1\n// import { reactifyLazy } from './_util/reactifyLazy';\n// const ChatActionBar = reactifyLazy<{\n// size: 'small' | 'medium' | 'large',\n// variant: 'primary' | 'secondary' | 'outline'\n// }>(\n// 't-chat-action',\n// 'tdesign-web-components/esm/chat-action'\n// );\n\n// import ChatAction from 'tdesign-web-components/esm/chat-action';\n// import React, { forwardRef, useEffect } from 'react';\n\n// // 注册Web Components组件\n// const registerChatAction = () => {\n// if (!customElements.get('t-chat-action')) {\n// customElements.define('t-chat-action', ChatAction);\n// }\n// };\n\n// // 在组件挂载时注册\n// const useRegisterWebComponent = () => {\n// useEffect(() => {\n// registerChatAction();\n// }, []);\n// };\n\n// // 使用reactify创建React组件\n// const BaseChatActionBar = reactify<TdChatActionProps>('t-chat-action');\n\n// // 包装组件,确保Web Components已注册\n// export const ChatActionBar2 = forwardRef<\n// HTMLElement | undefined,\n// Omit<TdChatActionProps, 'ref'> & { [key: string]: any }\n// >((props, ref) => {\n// useRegisterWebComponent();\n// return <BaseChatActionBar {...props} ref={ref} />;\n// });\n"],"names":["ChatActionBar","reactify"],"mappings":";;;;;;;;;;;;;;;;;;;;IAIaA,aAAA,GAKTC,SAA4B,eAAe;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../../../pro-components/chat/chat-actionbar/index.tsx"],"sourcesContent":["import React from 'react';\nimport { TdChatActionProps, TdChatActionsName } from 'tdesign-web-components';\nimport 'tdesign-web-components/lib/chat-action';\nimport reactify from '../_util/reactify';\n\ntype ChatActionBarAction =\n | TdChatActionsName\n | React.ReactElement\n | {\n name: string;\n render?: React.ReactNode;\n ignoreWrapper?: boolean;\n };\n\ntype ChatActionBarProps = Omit<TdChatActionProps, 'actionBar' | 'ref'> & {\n actionBar?: boolean | ChatActionBarAction[];\n ref?: React.Ref<HTMLElement | undefined>;\n};\n\nconst BaseChatActionBar = reactify<TdChatActionProps>('t-chat-action');\n\nconst normalizeSlotName = (raw: string) => raw.replace(/[^a-zA-Z0-9_-]/g, '-');\n\nexport const ChatActionBar = (props: ChatActionBarProps) => {\n const { actionBar, ref, ...rest } = props;\n const slotProps: Record<string, React.ReactNode> = {};\n let mappedActionBar = actionBar;\n\n if (Array.isArray(actionBar)) {\n mappedActionBar = actionBar.map((action, index) => {\n if (React.isValidElement(action)) {\n const key = action.key != null ? String(action.key) : `item-${index}`;\n const slotName = normalizeSlotName(`action-${key}`);\n slotProps[`${slotName}Slot`] = action;\n return { name: slotName };\n }\n return action;\n });\n }\n\n return (\n <BaseChatActionBar\n {...(rest as TdChatActionProps)}\n actionBar={mappedActionBar as TdChatActionProps['actionBar']}\n ref={ref}\n {...slotProps}\n />\n );\n};\n\nexport default ChatActionBar;\nexport type { ChatActionBarAction };\nexport type { TdChatActionProps, TdChatActionsName } from 'tdesign-web-components';\n"],"names":["BaseChatActionBar","reactify","normalizeSlotName","raw","replace","ChatActionBar","props","actionBar","ref","rest","_objectWithoutProperties","_excluded","slotProps","mappedActionBar","Array","isArray","map","action","index","React","isValidElement","key","String","slotName","concat","name","createElement","_objectSpread"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAmBA,IAAMA,iBAAA,GAAoBC,SAA4B,eAAe,CAAA,CAAA;AAErE,IAAMC,oBAAoB,SAApBA,kBAAqBC,GAAA,EAAA;AAAA,EAAA,OAAgBA,GAAI,CAAAC,OAAA,CAAQ,mBAAmB,GAAG,CAAA,CAAA;AAAA,CAAA,CAAA;IAEhEC,aAAA,GAAgB,SAAhBA,aAAAA,CAAiBC,KAA8B,EAAA;AAC1D,EAAA,IAAQC,SAAA,GAA4BD,KAAA,CAA5BC,SAAA;IAAWC,GAAQ,GAASF,KAAA,CAAjBE,GAAQ;AAAAC,IAAAA,IAAA,GAAAC,wBAAA,CAASJ,KAAA,EAAAK,SAAA,CAAA,CAAA;EACpC,IAAMC,YAA6C,EAAC,CAAA;EACpD,IAAIC,eAAkB,GAAAN,SAAA,CAAA;AAElB,EAAA,IAAAO,KAAA,CAAMC,OAAQ,CAAAR,SAAS,CAAG,EAAA;IAC5BM,eAAA,GAAkBN,SAAU,CAAAS,GAAA,CAAI,UAACC,MAAA,EAAQC,KAAU,EAAA;AAC7C,MAAA,iBAAAC,KAAA,CAAMC,cAAe,CAAAH,MAAM,CAAG,EAAA;AAC1B,QAAA,IAAAI,GAAA,GAAMJ,OAAOI,GAAO,IAAA,IAAA,GAAOC,OAAOL,MAAO,CAAAI,GAAG,mBAAYH,KAAA,CAAA,CAAA;QACxD,IAAAK,QAAA,GAAWrB,iBAAkB,CAAA,SAAA,CAAAsB,MAAA,CAAUH,GAAK,CAAA,CAAA,CAAA;AAClDT,QAAAA,SAAA,IAAAY,MAAA,CAAaD,QAAkB,EAAA,MAAA,CAAA,CAAA,GAAAN,MAAA,CAAA;QACxB,OAAA;AAAEQ,UAAAA,MAAMF,QAAAA;SAAS,CAAA;AAC1B,OAAA;AACO,MAAA,OAAAN,MAAA,CAAA;AACT,KAAC,CAAA,CAAA;AACH,GAAA;EAEA,sBACGE,KAAA,CAAAO,aAAA,CAAA1B,iBAAA,EAAA2B,aAAA,CAAAA,aAAA,CAAA,EAAA,EACMlB,IAAA,CAAA,EAAA,EAAA,EAAA;AACLF,IAAAA,SAAW,EAAAM,eAAA;AACXL,IAAAA,GAAA,EAAAA,GAAAA;GACII,EAAAA,SAAA,CACN,CAAA,CAAA;AAEJ;;;;"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * tdesign v1.1.0-alpha.4
2
+ * tdesign v1.1.0-alpha.7
3
3
  * (c) 2026 tdesign
4
4
  * @license MIT
5
5
  */
@@ -15,4 +15,6 @@ import '@babel/runtime/helpers/slicedToArray';
15
15
  import '@babel/runtime/helpers/possibleConstructorReturn';
16
16
  import '@babel/runtime/helpers/getPrototypeOf';
17
17
  import '@babel/runtime/helpers/inherits';
18
+ import '../../../_chunks/dep-3e40d789.js';
19
+ import '@babel/runtime/helpers/typeof';
18
20
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * tdesign v1.1.0-alpha.4
2
+ * tdesign v1.1.0-alpha.7
3
3
  * (c) 2026 tdesign
4
4
  * @license MIT
5
5
  */
@@ -6,6 +6,10 @@ interface ActivityRendererProps {
6
6
  /**
7
7
  * Activity 渲染器组件
8
8
  * 根据 activityType 精确匹配查找注册的组件进行渲染
9
+ *
10
+ * 性能优化:
11
+ * - 使用 react-fast-compare 替代 JSON.stringify 进行深比较
12
+ * - 短路比较,发现差异立即停止,对大型 JSON 树性能提升显著
9
13
  */
10
14
  export declare const ActivityRenderer: React.NamedExoticComponent<ActivityRendererProps>;
11
15
  export {};
@@ -1,5 +1,5 @@
1
1
  /**
2
- * tdesign v1.1.0-alpha.4
2
+ * tdesign v1.1.0-alpha.7
3
3
  * (c) 2026 tdesign
4
4
  * @license MIT
5
5
  */
@@ -12,7 +12,9 @@ import _possibleConstructorReturn from '@babel/runtime/helpers/possibleConstruct
12
12
  import _getPrototypeOf from '@babel/runtime/helpers/getPrototypeOf';
13
13
  import _inherits from '@babel/runtime/helpers/inherits';
14
14
  import React, { Component, useState, useMemo, useEffect } from 'react';
15
+ import { r as reactFastCompare } from '../../../_chunks/dep-3e40d789.js';
15
16
  import { activityRegistry } from './registry.js';
17
+ import '@babel/runtime/helpers/typeof';
16
18
 
17
19
  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; }
18
20
  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; }
@@ -95,11 +97,21 @@ var ActivityRenderer = /*#__PURE__*/React.memo(function (_ref2) {
95
97
  activity: activity
96
98
  });
97
99
  }
100
+ console.count("ActivityRenderer");
98
101
  return /* @__PURE__ */React.createElement(ActivityErrorBoundary, {
99
102
  activityType: activity.activityType
100
103
  }, /* @__PURE__ */React.createElement(MemoizedComponent, _objectSpread({}, componentProps)));
101
104
  }, function (prevProps, nextProps) {
102
- return prevProps.activity.activityType === nextProps.activity.activityType && prevProps.activity.messageId === nextProps.activity.messageId && JSON.stringify(prevProps.activity.content) === JSON.stringify(nextProps.activity.content);
105
+ if (prevProps.activity.activityType !== nextProps.activity.activityType) {
106
+ return false;
107
+ }
108
+ if (prevProps.activity.messageId !== nextProps.activity.messageId) {
109
+ return false;
110
+ }
111
+ if (prevProps.activity.content === nextProps.activity.content) {
112
+ return true;
113
+ }
114
+ return reactFastCompare(prevProps.activity.content, nextProps.activity.content);
103
115
  });
104
116
  ActivityRenderer.displayName = "ActivityRenderer";
105
117
 
@@ -1 +1 @@
1
- {"version":3,"file":"render.js","sources":["../../../../../pro-components/chat/chat-engine/components/activity/render.tsx"],"sourcesContent":["import React, { useState, useEffect, useMemo, Component, ErrorInfo } from 'react';\nimport type { ActivityComponentProps } from './types';\nimport { activityRegistry } from './registry';\nimport { type ActivityData } from '../../core';\n\ninterface ActivityRendererProps {\n activity: ActivityData;\n}\n\ninterface ErrorBoundaryState {\n hasError: boolean;\n error: Error | null;\n}\n\n/**\n * Activity 错误边界组件\n * 捕获子组件渲染错误,防止整个对话列表崩溃\n * TODO: 后续支持配置化的错误 UI\n */\nclass ActivityErrorBoundary extends Component<\n { children: React.ReactNode; activityType: string },\n ErrorBoundaryState\n> {\n constructor(props: { children: React.ReactNode; activityType: string }) {\n super(props);\n this.state = { hasError: false, error: null };\n }\n\n static getDerivedStateFromError(error: Error): ErrorBoundaryState {\n return { hasError: true, error };\n }\n\n componentDidCatch(error: Error, errorInfo: ErrorInfo): void {\n console.error(`[ActivityRenderer] Error in activity \"${this.props.activityType}\":`, error, errorInfo);\n }\n\n render() {\n if (this.state.hasError) {\n return null;\n }\n\n return this.props.children;\n }\n}\n\n/**\n * 默认的 Activity 渲染器\n * 当没有注册对应类型的组件时使用\n * TODO: 后续支持配置化的默认 UI\n */\nconst DefaultActivityRenderer: React.FC<ActivityRendererProps> = ({ activity }) => {\n // 空白兜底,仅在控制台输出警告\n console.warn(`[ActivityRenderer] Unknown activity type: ${activity.activityType}`, activity.content);\n return null;\n};\n\n/**\n * Activity 渲染器组件\n * 根据 activityType 精确匹配查找注册的组件进行渲染\n */\nexport const ActivityRenderer = React.memo<ActivityRendererProps>(\n ({ activity }) => {\n // 添加注册状态监听\n const [isRegistered, setIsRegistered] = useState(\n () => !!activityRegistry.getRenderFunction(activity.activityType),\n );\n\n // 缓存组件 props\n const componentProps = useMemo<ActivityComponentProps>(\n () => ({\n activityType: activity.activityType,\n content: activity.content,\n messageId: activity.messageId || '',\n }),\n [activity.activityType, activity.content, activity.messageId],\n );\n\n // 监听组件注册事件,支持动态注册\n useEffect(() => {\n if (!isRegistered) {\n const handleRegistered = (event: CustomEvent) => {\n // 精确匹配\n if (event.detail?.activityType === activity.activityType) {\n setIsRegistered(true);\n }\n };\n\n // 添加事件监听\n window.addEventListener('activity-registered', handleRegistered as EventListener);\n\n return () => {\n window.removeEventListener('activity-registered', handleRegistered as EventListener);\n };\n }\n }, [activity.activityType, isRegistered]);\n\n // 使用 registry 的缓存渲染函数\n const MemoizedComponent = useMemo(\n () => activityRegistry.getRenderFunction(activity.activityType),\n [activity.activityType, isRegistered],\n );\n\n // 如果没有注册对应的组件,使用默认渲染器\n if (!MemoizedComponent) {\n return <DefaultActivityRenderer activity={activity} />;\n }\n\n return (\n <ActivityErrorBoundary activityType={activity.activityType}>\n <MemoizedComponent {...componentProps} />\n </ActivityErrorBoundary>\n );\n },\n (prevProps, nextProps) =>\n prevProps.activity.activityType === nextProps.activity.activityType &&\n prevProps.activity.messageId === nextProps.activity.messageId &&\n JSON.stringify(prevProps.activity.content) === JSON.stringify(nextProps.activity.content),\n);\n\nActivityRenderer.displayName = 'ActivityRenderer';"],"names":["ActivityErrorBoundary","props","_this","_classCallCheck","_callSuper","state","hasError","error","_inherits","_Component","_createClass","key","value","componentDidCatch","errorInfo","console","activityType","render","children","getDerivedStateFromError","Component","DefaultActivityRenderer","_ref","activity","warn","concat","content","ActivityRenderer","React","memo","_ref2","_useState","useState","activityRegistry","getRenderFunction","_useState2","_slicedToArray","isRegistered","setIsRegistered","componentProps","useMemo","messageId","useEffect","handleRegistered","event","_event$detail","detail","window","addEventListener","removeEventListener","MemoizedComponent","createElement","_objectSpread","prevProps","nextProps","JSON","stringify","displayName"],"mappings":"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"}
1
+ {"version":3,"file":"render.js","sources":["../../../../../pro-components/chat/chat-engine/components/activity/render.tsx"],"sourcesContent":["import React, { useState, useEffect, useMemo, Component, ErrorInfo } from 'react';\nimport isEqual from 'react-fast-compare';\nimport type { ActivityComponentProps } from './types';\nimport { activityRegistry } from './registry';\nimport { type ActivityData } from '../../core';\n\ninterface ActivityRendererProps {\n activity: ActivityData;\n}\n\ninterface ErrorBoundaryState {\n hasError: boolean;\n error: Error | null;\n}\n\n/**\n * Activity 错误边界组件\n * 捕获子组件渲染错误,防止整个对话列表崩溃\n * TODO: 后续支持配置化的错误 UI\n */\nclass ActivityErrorBoundary extends Component<\n { children: React.ReactNode; activityType: string },\n ErrorBoundaryState\n> {\n constructor(props: { children: React.ReactNode; activityType: string }) {\n super(props);\n this.state = { hasError: false, error: null };\n }\n\n static getDerivedStateFromError(error: Error): ErrorBoundaryState {\n return { hasError: true, error };\n }\n\n componentDidCatch(error: Error, errorInfo: ErrorInfo): void {\n console.error(`[ActivityRenderer] Error in activity \"${this.props.activityType}\":`, error, errorInfo);\n }\n\n render() {\n if (this.state.hasError) {\n return null;\n }\n\n return this.props.children;\n }\n}\n\n/**\n * 默认的 Activity 渲染器\n * 当没有注册对应类型的组件时使用\n * TODO: 后续支持配置化的默认 UI\n */\nconst DefaultActivityRenderer: React.FC<ActivityRendererProps> = ({ activity }) => {\n // 空白兜底,仅在控制台输出警告\n console.warn(`[ActivityRenderer] Unknown activity type: ${activity.activityType}`, activity.content);\n return null;\n};\n\n/**\n * Activity 渲染器组件\n * 根据 activityType 精确匹配查找注册的组件进行渲染\n * \n * 性能优化:\n * - 使用 react-fast-compare 替代 JSON.stringify 进行深比较\n * - 短路比较,发现差异立即停止,对大型 JSON 树性能提升显著\n */\nexport const ActivityRenderer = React.memo<ActivityRendererProps>(\n ({ activity }) => {\n // 添加注册状态监听\n const [isRegistered, setIsRegistered] = useState(\n () => !!activityRegistry.getRenderFunction(activity.activityType),\n );\n\n // 缓存组件 props\n const componentProps = useMemo<ActivityComponentProps>(\n () => ({\n activityType: activity.activityType,\n content: activity.content,\n messageId: activity.messageId || '',\n }),\n [activity.activityType, activity.content, activity.messageId],\n );\n\n // 监听组件注册事件,支持动态注册\n useEffect(() => {\n if (!isRegistered) {\n const handleRegistered = (event: CustomEvent) => {\n // 精确匹配\n if (event.detail?.activityType === activity.activityType) {\n setIsRegistered(true);\n }\n };\n\n // 添加事件监听\n window.addEventListener('activity-registered', handleRegistered as EventListener);\n\n return () => {\n window.removeEventListener('activity-registered', handleRegistered as EventListener);\n };\n }\n }, [activity.activityType, isRegistered]);\n\n // 使用 registry 的缓存渲染函数\n const MemoizedComponent = useMemo(\n () => activityRegistry.getRenderFunction(activity.activityType),\n [activity.activityType, isRegistered],\n );\n\n // 如果没有注册对应的组件,使用默认渲染器\n if (!MemoizedComponent) {\n return <DefaultActivityRenderer activity={activity} />;\n }\n\n console.count('ActivityRenderer');\n return (\n <ActivityErrorBoundary activityType={activity.activityType}>\n <MemoizedComponent {...componentProps} />\n </ActivityErrorBoundary>\n );\n },\n (prevProps, nextProps) => {\n // 1. activityType 变化必须重渲染\n if (prevProps.activity.activityType !== nextProps.activity.activityType) {\n return false;\n }\n \n // 2. messageId 变化必须重渲染\n if (prevProps.activity.messageId !== nextProps.activity.messageId) {\n return false;\n }\n \n // 3. content 引用相同,跳过渲染\n if (prevProps.activity.content === nextProps.activity.content) {\n return true;\n }\n \n // 4. 使用 react-fast-compare 进行高效深比较\n // 比 JSON.stringify 快 3-5 倍,且能正确处理循环引用\n return isEqual(prevProps.activity.content, nextProps.activity.content);\n },\n);\n\nActivityRenderer.displayName = 'ActivityRenderer';"],"names":["ActivityErrorBoundary","props","_this","_classCallCheck","_callSuper","state","hasError","error","_inherits","_Component","_createClass","key","value","componentDidCatch","errorInfo","console","activityType","render","children","getDerivedStateFromError","Component","DefaultActivityRenderer","_ref","activity","warn","concat","content","ActivityRenderer","React","memo","_ref2","_useState","useState","activityRegistry","getRenderFunction","_useState2","_slicedToArray","isRegistered","setIsRegistered","componentProps","useMemo","messageId","useEffect","handleRegistered","event","_event$detail","detail","window","addEventListener","removeEventListener","MemoizedComponent","createElement","count","_objectSpread","prevProps","nextProps","isEqual","displayName"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * tdesign v1.1.0-alpha.4
2
+ * tdesign v1.1.0-alpha.7
3
3
  * (c) 2026 tdesign
4
4
  * @license MIT
5
5
  */