@tdesign-react/chat 1.0.2 → 1.0.3-alpha.2

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 (524) hide show
  1. package/CHANGELOG.md +0 -4
  2. package/README.md +76 -22
  3. package/es/_chunks/dep-076af7c3.js +438 -0
  4. package/es/_chunks/dep-076af7c3.js.map +1 -0
  5. package/es/_chunks/dep-1007ac80.js +205 -0
  6. package/es/_chunks/dep-1007ac80.js.map +1 -0
  7. package/es/_chunks/dep-16520c2b.js +1247 -0
  8. package/es/_chunks/dep-16520c2b.js.map +1 -0
  9. package/es/_chunks/dep-1743bd61.js +438 -0
  10. package/es/_chunks/dep-1743bd61.js.map +1 -0
  11. package/es/_chunks/dep-1ca64fef.js +1247 -0
  12. package/es/_chunks/dep-1ca64fef.js.map +1 -0
  13. package/es/_chunks/dep-24472232.js +839 -0
  14. package/es/_chunks/dep-24472232.js.map +1 -0
  15. package/es/_chunks/dep-3864b369.js +839 -0
  16. package/es/_chunks/dep-3864b369.js.map +1 -0
  17. package/es/_chunks/dep-3e40d789.js +169 -0
  18. package/es/_chunks/dep-3e40d789.js.map +1 -0
  19. package/es/_chunks/dep-4dedfbef.js +438 -0
  20. package/es/_chunks/dep-4dedfbef.js.map +1 -0
  21. package/es/_chunks/dep-56f5e08e.js +448 -0
  22. package/es/_chunks/dep-56f5e08e.js.map +1 -0
  23. package/es/_chunks/dep-5b6b17d0.js +169 -0
  24. package/es/_chunks/dep-5b6b17d0.js.map +1 -0
  25. package/es/_chunks/dep-688e4aaa.js +438 -0
  26. package/es/_chunks/dep-688e4aaa.js.map +1 -0
  27. package/es/_chunks/dep-870f0d35.js +839 -0
  28. package/es/_chunks/dep-870f0d35.js.map +1 -0
  29. package/es/_chunks/dep-96eca06f.js +169 -0
  30. package/es/_chunks/dep-96eca06f.js.map +1 -0
  31. package/es/_chunks/dep-ba3bd553.js +169 -0
  32. package/es/_chunks/dep-ba3bd553.js.map +1 -0
  33. package/es/_chunks/dep-bcb234a1.js +839 -0
  34. package/es/_chunks/dep-bcb234a1.js.map +1 -0
  35. package/es/_chunks/dep-de8ac730.js +1247 -0
  36. package/es/_chunks/dep-de8ac730.js.map +1 -0
  37. package/es/_chunks/dep-e9dbff09.js +1247 -0
  38. package/es/_chunks/dep-e9dbff09.js.map +1 -0
  39. package/es/_chunks/dep-ebc4cf30.js +1247 -0
  40. package/es/_chunks/dep-ebc4cf30.js.map +1 -0
  41. package/es/_chunks/dep-f2051ebd.js +839 -0
  42. package/es/_chunks/dep-f2051ebd.js.map +1 -0
  43. package/es/_chunks/dep-f691a67e.js +438 -0
  44. package/es/_chunks/dep-f691a67e.js.map +1 -0
  45. package/es/_chunks/dep-f8016301.js +169 -0
  46. package/es/_chunks/dep-f8016301.js.map +1 -0
  47. package/es/_util/reactify.d.ts +1 -2
  48. package/es/_util/reactify.js +102 -232
  49. package/es/_util/reactify.js.map +1 -1
  50. package/es/attachments/index.js +3 -5
  51. package/es/attachments/index.js.map +1 -1
  52. package/es/chat-actionbar/index.js +3 -5
  53. package/es/chat-actionbar/index.js.map +1 -1
  54. package/es/chat-engine/components/a2ui/A2UIActivityRenderer.d.ts +196 -0
  55. package/es/chat-engine/components/a2ui/A2UIActivityRenderer.js +301 -0
  56. package/es/chat-engine/components/a2ui/A2UIActivityRenderer.js.map +1 -0
  57. package/es/chat-engine/components/a2ui/A2UIComponentRenderer.d.ts +37 -0
  58. package/es/chat-engine/components/a2ui/A2UIComponentRenderer.js +116 -0
  59. package/es/chat-engine/components/a2ui/A2UIComponentRenderer.js.map +1 -0
  60. package/es/chat-engine/components/a2ui/A2UIErrorBoundary.d.ts +42 -0
  61. package/es/chat-engine/components/a2ui/A2UIErrorBoundary.js +113 -0
  62. package/es/chat-engine/components/a2ui/A2UIErrorBoundary.js.map +1 -0
  63. package/es/chat-engine/components/a2ui/A2UISkeleton.d.ts +60 -0
  64. package/es/chat-engine/components/a2ui/A2UISkeleton.js +197 -0
  65. package/es/chat-engine/components/a2ui/A2UISkeleton.js.map +1 -0
  66. package/es/chat-engine/components/a2ui/A2UISurfaceRenderer.d.ts +44 -0
  67. package/es/chat-engine/components/a2ui/A2UISurfaceRenderer.js +139 -0
  68. package/es/chat-engine/components/a2ui/A2UISurfaceRenderer.js.map +1 -0
  69. package/es/chat-engine/components/a2ui/containers/A2UICard.d.ts +22 -0
  70. package/es/chat-engine/components/a2ui/containers/A2UICard.js +82 -0
  71. package/es/chat-engine/components/a2ui/containers/A2UICard.js.map +1 -0
  72. package/es/chat-engine/components/a2ui/containers/A2UIColumn.d.ts +18 -0
  73. package/es/chat-engine/components/a2ui/containers/A2UIColumn.js +81 -0
  74. package/es/chat-engine/components/a2ui/containers/A2UIColumn.js.map +1 -0
  75. package/es/chat-engine/components/a2ui/containers/A2UIList.d.ts +14 -0
  76. package/es/chat-engine/components/a2ui/containers/A2UIList.js +62 -0
  77. package/es/chat-engine/components/a2ui/containers/A2UIList.js.map +1 -0
  78. package/es/chat-engine/components/a2ui/containers/A2UIRow.d.ts +20 -0
  79. package/es/chat-engine/components/a2ui/containers/A2UIRow.js +84 -0
  80. package/es/chat-engine/components/a2ui/containers/A2UIRow.js.map +1 -0
  81. package/es/chat-engine/components/a2ui/containers/A2UITabs.d.ts +14 -0
  82. package/es/chat-engine/components/a2ui/containers/A2UITabs.js +69 -0
  83. package/es/chat-engine/components/a2ui/containers/A2UITabs.js.map +1 -0
  84. package/es/chat-engine/components/a2ui/containers/index.d.ts +8 -0
  85. package/es/chat-engine/components/a2ui/containers/index.js +30 -0
  86. package/es/chat-engine/components/a2ui/containers/index.js.map +1 -0
  87. package/es/chat-engine/components/a2ui/index.d.ts +11 -0
  88. package/es/chat-engine/components/a2ui/index.js +62 -0
  89. package/es/chat-engine/components/a2ui/index.js.map +1 -0
  90. package/es/chat-engine/components/a2ui/primitives/A2UIButton.d.ts +33 -0
  91. package/es/chat-engine/components/a2ui/primitives/A2UIButton.js +80 -0
  92. package/es/chat-engine/components/a2ui/primitives/A2UIButton.js.map +1 -0
  93. package/es/chat-engine/components/a2ui/primitives/A2UICheckBox.d.ts +12 -0
  94. package/es/chat-engine/components/a2ui/primitives/A2UICheckBox.js +43 -0
  95. package/es/chat-engine/components/a2ui/primitives/A2UICheckBox.js.map +1 -0
  96. package/es/chat-engine/components/a2ui/primitives/A2UICheckboxGroup.d.ts +50 -0
  97. package/es/chat-engine/components/a2ui/primitives/A2UICheckboxGroup.js +54 -0
  98. package/es/chat-engine/components/a2ui/primitives/A2UICheckboxGroup.js.map +1 -0
  99. package/es/chat-engine/components/a2ui/primitives/A2UIChoicePicker.d.ts +13 -0
  100. package/es/chat-engine/components/a2ui/primitives/A2UIChoicePicker.js +89 -0
  101. package/es/chat-engine/components/a2ui/primitives/A2UIChoicePicker.js.map +1 -0
  102. package/es/chat-engine/components/a2ui/primitives/A2UIDivider.d.ts +12 -0
  103. package/es/chat-engine/components/a2ui/primitives/A2UIDivider.js +25 -0
  104. package/es/chat-engine/components/a2ui/primitives/A2UIDivider.js.map +1 -0
  105. package/es/chat-engine/components/a2ui/primitives/A2UIIcon.d.ts +13 -0
  106. package/es/chat-engine/components/a2ui/primitives/A2UIIcon.js +138942 -0
  107. package/es/chat-engine/components/a2ui/primitives/A2UIIcon.js.map +1 -0
  108. package/es/chat-engine/components/a2ui/primitives/A2UIImage.d.ts +12 -0
  109. package/es/chat-engine/components/a2ui/primitives/A2UIImage.js +75 -0
  110. package/es/chat-engine/components/a2ui/primitives/A2UIImage.js.map +1 -0
  111. package/es/chat-engine/components/a2ui/primitives/A2UIInput.d.ts +20 -0
  112. package/es/chat-engine/components/a2ui/primitives/A2UIInput.js +63 -0
  113. package/es/chat-engine/components/a2ui/primitives/A2UIInput.js.map +1 -0
  114. package/es/chat-engine/components/a2ui/primitives/A2UIRadioGroup.d.ts +56 -0
  115. package/es/chat-engine/components/a2ui/primitives/A2UIRadioGroup.js +64 -0
  116. package/es/chat-engine/components/a2ui/primitives/A2UIRadioGroup.js.map +1 -0
  117. package/es/chat-engine/components/a2ui/primitives/A2UISlider.d.ts +12 -0
  118. package/es/chat-engine/components/a2ui/primitives/A2UISlider.js +55 -0
  119. package/es/chat-engine/components/a2ui/primitives/A2UISlider.js.map +1 -0
  120. package/es/chat-engine/components/a2ui/primitives/A2UIText.d.ts +12 -0
  121. package/es/chat-engine/components/a2ui/primitives/A2UIText.js +104 -0
  122. package/es/chat-engine/components/a2ui/primitives/A2UIText.js.map +1 -0
  123. package/es/chat-engine/components/a2ui/primitives/A2UITextField.d.ts +12 -0
  124. package/es/chat-engine/components/a2ui/primitives/A2UITextField.js +80 -0
  125. package/es/chat-engine/components/a2ui/primitives/A2UITextField.js.map +1 -0
  126. package/es/chat-engine/components/a2ui/primitives/index.d.ts +15 -0
  127. package/es/chat-engine/components/a2ui/primitives/index.js +39 -0
  128. package/es/chat-engine/components/a2ui/primitives/index.js.map +1 -0
  129. package/es/chat-engine/components/a2ui/registry.d.ts +35 -0
  130. package/es/chat-engine/components/a2ui/registry.js +74 -0
  131. package/es/chat-engine/components/a2ui/registry.js.map +1 -0
  132. package/es/chat-engine/components/activity/index.js +8 -4
  133. package/es/chat-engine/components/activity/index.js.map +1 -1
  134. package/es/chat-engine/components/activity/registry.d.ts +6 -40
  135. package/es/chat-engine/components/activity/registry.js +22 -76
  136. package/es/chat-engine/components/activity/registry.js.map +1 -1
  137. package/es/chat-engine/components/activity/render.d.ts +1 -1
  138. package/es/chat-engine/components/activity/render.js +21 -69
  139. package/es/chat-engine/components/activity/render.js.map +1 -1
  140. package/es/chat-engine/components/index.js +8 -4
  141. package/es/chat-engine/components/index.js.map +1 -1
  142. package/es/chat-engine/components/json-render/A2UIJsonRenderActivityRenderer.d.ts +36 -0
  143. package/es/chat-engine/components/json-render/A2UIJsonRenderActivityRenderer.js +36 -0
  144. package/es/chat-engine/components/json-render/A2UIJsonRenderActivityRenderer.js.map +1 -0
  145. package/es/chat-engine/components/json-render/JsonRenderActivityRenderer.d.ts +46 -0
  146. package/es/chat-engine/components/json-render/JsonRenderActivityRenderer.js +36 -0
  147. package/es/chat-engine/components/json-render/JsonRenderActivityRenderer.js.map +1 -0
  148. package/es/chat-engine/components/json-render/SurfaceStateManager.d.ts +113 -0
  149. package/es/chat-engine/components/json-render/SurfaceStateManager.js +195 -0
  150. package/es/chat-engine/components/json-render/SurfaceStateManager.js.map +1 -0
  151. package/es/chat-engine/components/json-render/adapters/a2ui-to-jsonrender.d.ts +49 -0
  152. package/es/chat-engine/components/json-render/adapters/a2ui-to-jsonrender.js +307 -0
  153. package/es/chat-engine/components/json-render/adapters/a2ui-to-jsonrender.js.map +1 -0
  154. package/es/chat-engine/components/json-render/adapters/a2ui-types.d.ts +96 -0
  155. package/es/chat-engine/components/json-render/adapters/a2ui-types.js +7 -0
  156. package/es/chat-engine/components/json-render/adapters/a2ui-types.js.map +1 -0
  157. package/es/chat-engine/components/json-render/adapters/index.d.ts +7 -0
  158. package/es/chat-engine/components/json-render/adapters/index.js +11 -0
  159. package/es/chat-engine/components/json-render/adapters/index.js.map +1 -0
  160. package/es/chat-engine/components/json-render/catalog/a2ui-binding.d.ts +64 -0
  161. package/es/chat-engine/components/json-render/catalog/a2ui-binding.js +36 -0
  162. package/es/chat-engine/components/json-render/catalog/a2ui-binding.js.map +1 -0
  163. package/es/chat-engine/components/json-render/catalog/a2ui-registry.d.ts +78 -0
  164. package/es/chat-engine/components/json-render/catalog/a2ui-registry.js +36 -0
  165. package/es/chat-engine/components/json-render/catalog/a2ui-registry.js.map +1 -0
  166. package/es/chat-engine/components/json-render/catalog/atomic/button.d.ts +14 -0
  167. package/es/chat-engine/components/json-render/catalog/atomic/button.js +71 -0
  168. package/es/chat-engine/components/json-render/catalog/atomic/button.js.map +1 -0
  169. package/es/chat-engine/components/json-render/catalog/atomic/card.d.ts +11 -0
  170. package/es/chat-engine/components/json-render/catalog/atomic/card.js +57 -0
  171. package/es/chat-engine/components/json-render/catalog/atomic/card.js.map +1 -0
  172. package/es/chat-engine/components/json-render/catalog/atomic/input.d.ts +20 -0
  173. package/es/chat-engine/components/json-render/catalog/atomic/input.js +76 -0
  174. package/es/chat-engine/components/json-render/catalog/atomic/input.js.map +1 -0
  175. package/es/chat-engine/components/json-render/catalog/atomic/layout.d.ts +44 -0
  176. package/es/chat-engine/components/json-render/catalog/atomic/layout.js +129 -0
  177. package/es/chat-engine/components/json-render/catalog/atomic/layout.js.map +1 -0
  178. package/es/chat-engine/components/json-render/catalog/atomic/text.d.ts +11 -0
  179. package/es/chat-engine/components/json-render/catalog/atomic/text.js +31 -0
  180. package/es/chat-engine/components/json-render/catalog/atomic/text.js.map +1 -0
  181. package/es/chat-engine/components/json-render/catalog/button.d.ts +14 -0
  182. package/es/chat-engine/components/json-render/catalog/button.js +71 -0
  183. package/es/chat-engine/components/json-render/catalog/button.js.map +1 -0
  184. package/es/chat-engine/components/json-render/catalog/card.d.ts +11 -0
  185. package/es/chat-engine/components/json-render/catalog/card.js +57 -0
  186. package/es/chat-engine/components/json-render/catalog/card.js.map +1 -0
  187. package/es/chat-engine/components/json-render/catalog/catalog-to-prompt.d.ts +614 -0
  188. package/es/chat-engine/components/json-render/catalog/catalog-to-prompt.js +779 -0
  189. package/es/chat-engine/components/json-render/catalog/catalog-to-prompt.js.map +1 -0
  190. package/es/chat-engine/components/json-render/catalog/index.d.ts +128 -0
  191. package/es/chat-engine/components/json-render/catalog/index.js +36 -0
  192. package/es/chat-engine/components/json-render/catalog/index.js.map +1 -0
  193. package/es/chat-engine/components/json-render/catalog/input.d.ts +20 -0
  194. package/es/chat-engine/components/json-render/catalog/input.js +36 -0
  195. package/es/chat-engine/components/json-render/catalog/input.js.map +1 -0
  196. package/es/chat-engine/components/json-render/catalog/layout.d.ts +44 -0
  197. package/es/chat-engine/components/json-render/catalog/layout.js +129 -0
  198. package/es/chat-engine/components/json-render/catalog/layout.js.map +1 -0
  199. package/es/chat-engine/components/json-render/catalog/text.d.ts +11 -0
  200. package/es/chat-engine/components/json-render/catalog/text.js +31 -0
  201. package/es/chat-engine/components/json-render/catalog/text.js.map +1 -0
  202. package/es/chat-engine/components/json-render/catalog.d.ts +614 -0
  203. package/es/chat-engine/components/json-render/catalog.js +779 -0
  204. package/es/chat-engine/components/json-render/catalog.js.map +1 -0
  205. package/es/chat-engine/components/json-render/config.d.ts +154 -0
  206. package/es/chat-engine/components/json-render/config.js +36 -0
  207. package/es/chat-engine/components/json-render/config.js.map +1 -0
  208. package/es/chat-engine/components/json-render/contexts/actions.d.ts +79 -0
  209. package/es/chat-engine/components/json-render/contexts/actions.js +313 -0
  210. package/es/chat-engine/components/json-render/contexts/actions.js.map +1 -0
  211. package/es/chat-engine/components/json-render/contexts/data.d.ts +137 -0
  212. package/es/chat-engine/components/json-render/contexts/data.js +183 -0
  213. package/es/chat-engine/components/json-render/contexts/data.js.map +1 -0
  214. package/es/chat-engine/components/json-render/contexts/index.d.ts +4 -0
  215. package/es/chat-engine/components/json-render/contexts/index.js +27 -0
  216. package/es/chat-engine/components/json-render/contexts/index.js.map +1 -0
  217. package/es/chat-engine/components/json-render/contexts/store.d.ts +67 -0
  218. package/es/chat-engine/components/json-render/contexts/store.js +104 -0
  219. package/es/chat-engine/components/json-render/contexts/store.js.map +1 -0
  220. package/es/chat-engine/components/json-render/contexts/tree.d.ts +44 -0
  221. package/es/chat-engine/components/json-render/contexts/tree.js +78 -0
  222. package/es/chat-engine/components/json-render/contexts/tree.js.map +1 -0
  223. package/es/chat-engine/components/json-render/contexts/validation.d.ts +59 -0
  224. package/es/chat-engine/components/json-render/contexts/validation.js +159 -0
  225. package/es/chat-engine/components/json-render/contexts/validation.js.map +1 -0
  226. package/es/chat-engine/components/json-render/contexts/visibility.d.ts +39 -0
  227. package/es/chat-engine/components/json-render/contexts/visibility.js +66 -0
  228. package/es/chat-engine/components/json-render/contexts/visibility.js.map +1 -0
  229. package/es/chat-engine/components/json-render/engine.d.ts +58 -0
  230. package/es/chat-engine/components/json-render/engine.js +88 -0
  231. package/es/chat-engine/components/json-render/engine.js.map +1 -0
  232. package/es/chat-engine/components/json-render/index.d.ts +13 -0
  233. package/es/chat-engine/components/json-render/index.js +76 -0
  234. package/es/chat-engine/components/json-render/index.js.map +1 -0
  235. package/es/chat-engine/components/json-render/performance.d.ts +91 -0
  236. package/es/chat-engine/components/json-render/performance.js +135 -0
  237. package/es/chat-engine/components/json-render/performance.js.map +1 -0
  238. package/es/chat-engine/components/json-render/registry/a2ui-binding.d.ts +64 -0
  239. package/es/chat-engine/components/json-render/registry/a2ui-binding.js +76 -0
  240. package/es/chat-engine/components/json-render/registry/a2ui-binding.js.map +1 -0
  241. package/es/chat-engine/components/json-render/registry/a2ui-registry.d.ts +78 -0
  242. package/es/chat-engine/components/json-render/registry/a2ui-registry.js +76 -0
  243. package/es/chat-engine/components/json-render/registry/a2ui-registry.js.map +1 -0
  244. package/es/chat-engine/components/json-render/registry/config.d.ts +142 -0
  245. package/es/chat-engine/components/json-render/registry/config.js +76 -0
  246. package/es/chat-engine/components/json-render/registry/config.js.map +1 -0
  247. package/es/chat-engine/components/json-render/registry/index.d.ts +137 -0
  248. package/es/chat-engine/components/json-render/registry/index.js +76 -0
  249. package/es/chat-engine/components/json-render/registry/index.js.map +1 -0
  250. package/es/chat-engine/components/json-render/renderer/A2UIJsonRenderActivityRenderer.d.ts +35 -0
  251. package/es/chat-engine/components/json-render/renderer/A2UIJsonRenderActivityRenderer.js +271 -0
  252. package/es/chat-engine/components/json-render/renderer/A2UIJsonRenderActivityRenderer.js.map +1 -0
  253. package/es/chat-engine/components/json-render/renderer/JsonRenderActivityRenderer.d.ts +44 -0
  254. package/es/chat-engine/components/json-render/renderer/JsonRenderActivityRenderer.js +63 -0
  255. package/es/chat-engine/components/json-render/renderer/JsonRenderActivityRenderer.js.map +1 -0
  256. package/es/chat-engine/components/json-render/renderer/JsonUIRenderer.d.ts +44 -0
  257. package/es/chat-engine/components/json-render/renderer/JsonUIRenderer.js +131 -0
  258. package/es/chat-engine/components/json-render/renderer/JsonUIRenderer.js.map +1 -0
  259. package/es/chat-engine/components/json-render/renderer/_index.d.ts +71 -0
  260. package/es/chat-engine/components/json-render/renderer/_index.js +133 -0
  261. package/es/chat-engine/components/json-render/renderer/_index.js.map +1 -0
  262. package/es/chat-engine/components/json-render/renderer/index.d.ts +71 -0
  263. package/es/chat-engine/components/json-render/renderer/index.js +125 -0
  264. package/es/chat-engine/components/json-render/renderer/index.js.map +1 -0
  265. package/es/chat-engine/components/json-render/renderer.d.ts +71 -0
  266. package/es/chat-engine/components/json-render/renderer.js +124 -0
  267. package/es/chat-engine/components/json-render/renderer.js.map +1 -0
  268. package/es/chat-engine/components/json-render/types.d.ts +87 -0
  269. package/es/chat-engine/components/json-render/types.js +7 -0
  270. package/es/chat-engine/components/json-render/types.js.map +1 -0
  271. package/es/chat-engine/components/shared/ComponentErrorBoundary.d.ts +25 -0
  272. package/es/chat-engine/components/shared/ComponentErrorBoundary.js +58 -0
  273. package/es/chat-engine/components/shared/ComponentErrorBoundary.js.map +1 -0
  274. package/es/chat-engine/components/shared/createRegistry.d.ts +36 -0
  275. package/es/chat-engine/components/shared/createRegistry.js +72 -0
  276. package/es/chat-engine/components/shared/createRegistry.js.map +1 -0
  277. package/es/chat-engine/components/shared/index.d.ts +4 -0
  278. package/es/chat-engine/components/shared/index.js +18 -0
  279. package/es/chat-engine/components/shared/index.js.map +1 -0
  280. package/es/chat-engine/components/shared/useRegistrationListener.d.ts +22 -0
  281. package/es/chat-engine/components/shared/useRegistrationListener.js +45 -0
  282. package/es/chat-engine/components/shared/useRegistrationListener.js.map +1 -0
  283. package/es/chat-engine/components/toolcall/index.d.ts +1 -1
  284. package/es/chat-engine/components/toolcall/index.js +11 -7
  285. package/es/chat-engine/components/toolcall/index.js.map +1 -1
  286. package/es/chat-engine/components/toolcall/registry.d.ts +6 -32
  287. package/es/chat-engine/components/toolcall/registry.js +22 -66
  288. package/es/chat-engine/components/toolcall/registry.js.map +1 -1
  289. package/es/chat-engine/components/toolcall/render.js +27 -75
  290. package/es/chat-engine/components/toolcall/render.js.map +1 -1
  291. package/es/chat-engine/core/a2ui/index.d.ts +10 -0
  292. package/es/chat-engine/core/a2ui/index.js +24 -0
  293. package/es/chat-engine/core/a2ui/index.js.map +1 -0
  294. package/es/chat-engine/core/a2ui/processor/A2uiMessageProcessor.d.ts +197 -0
  295. package/es/chat-engine/core/a2ui/processor/A2uiMessageProcessor.js +438 -0
  296. package/es/chat-engine/core/a2ui/processor/A2uiMessageProcessor.js.map +1 -0
  297. package/es/chat-engine/core/a2ui/processor/ComponentTree.d.ts +53 -0
  298. package/es/chat-engine/core/a2ui/processor/ComponentTree.js +158 -0
  299. package/es/chat-engine/core/a2ui/processor/ComponentTree.js.map +1 -0
  300. package/es/chat-engine/core/a2ui/processor/DataStore.d.ts +63 -0
  301. package/es/chat-engine/core/a2ui/processor/DataStore.js +172 -0
  302. package/es/chat-engine/core/a2ui/processor/DataStore.js.map +1 -0
  303. package/es/chat-engine/core/a2ui/processor/PathResolver.d.ts +47 -0
  304. package/es/chat-engine/core/a2ui/processor/PathResolver.js +99 -0
  305. package/es/chat-engine/core/a2ui/processor/PathResolver.js.map +1 -0
  306. package/es/chat-engine/core/a2ui/types/index.d.ts +4 -0
  307. package/es/chat-engine/core/a2ui/types/index.js +9 -0
  308. package/es/chat-engine/core/a2ui/types/index.js.map +1 -0
  309. package/es/chat-engine/core/a2ui/types/types.d.ts +770 -0
  310. package/es/chat-engine/core/a2ui/types/types.js +104 -0
  311. package/es/chat-engine/core/a2ui/types/types.js.map +1 -0
  312. package/es/chat-engine/core/a2ui/utils/binding.d.ts +34 -0
  313. package/es/chat-engine/core/a2ui/utils/binding.js +1784 -0
  314. package/es/chat-engine/core/a2ui/utils/binding.js.map +1 -0
  315. package/es/chat-engine/core/a2ui/utils/index.d.ts +5 -0
  316. package/es/chat-engine/core/a2ui/utils/index.js +13 -0
  317. package/es/chat-engine/core/a2ui/utils/index.js.map +1 -0
  318. package/es/chat-engine/core/a2ui/utils/validation.d.ts +70 -0
  319. package/es/chat-engine/core/a2ui/utils/validation.js +333 -0
  320. package/es/chat-engine/core/a2ui/utils/validation.js.map +1 -0
  321. package/es/chat-engine/core/adapters/a2ui/index.d.ts +10 -0
  322. package/es/chat-engine/core/adapters/a2ui/index.js +24 -0
  323. package/es/chat-engine/core/adapters/a2ui/index.js.map +1 -0
  324. package/es/chat-engine/core/adapters/a2ui/processor/A2uiMessageProcessor.d.ts +197 -0
  325. package/es/chat-engine/core/adapters/a2ui/processor/A2uiMessageProcessor.js +438 -0
  326. package/es/chat-engine/core/adapters/a2ui/processor/A2uiMessageProcessor.js.map +1 -0
  327. package/es/chat-engine/core/adapters/a2ui/processor/ComponentTree.d.ts +53 -0
  328. package/es/chat-engine/core/adapters/a2ui/processor/ComponentTree.js +158 -0
  329. package/es/chat-engine/core/adapters/a2ui/processor/ComponentTree.js.map +1 -0
  330. package/es/chat-engine/core/adapters/a2ui/processor/DataStore.d.ts +63 -0
  331. package/es/chat-engine/core/adapters/a2ui/processor/DataStore.js +172 -0
  332. package/es/chat-engine/core/adapters/a2ui/processor/DataStore.js.map +1 -0
  333. package/es/chat-engine/core/adapters/a2ui/processor/PathResolver.d.ts +47 -0
  334. package/es/chat-engine/core/adapters/a2ui/processor/PathResolver.js +99 -0
  335. package/es/chat-engine/core/adapters/a2ui/processor/PathResolver.js.map +1 -0
  336. package/es/chat-engine/core/adapters/a2ui/types/index.d.ts +4 -0
  337. package/es/chat-engine/core/adapters/a2ui/types/index.js +9 -0
  338. package/es/chat-engine/core/adapters/a2ui/types/index.js.map +1 -0
  339. package/es/chat-engine/core/adapters/a2ui/types/types.d.ts +770 -0
  340. package/es/chat-engine/core/adapters/a2ui/types/types.js +104 -0
  341. package/es/chat-engine/core/adapters/a2ui/types/types.js.map +1 -0
  342. package/es/chat-engine/core/adapters/a2ui/utils/binding.d.ts +34 -0
  343. package/es/chat-engine/core/adapters/a2ui/utils/binding.js +1784 -0
  344. package/es/chat-engine/core/adapters/a2ui/utils/binding.js.map +1 -0
  345. package/es/chat-engine/core/adapters/a2ui/utils/index.d.ts +5 -0
  346. package/es/chat-engine/core/adapters/a2ui/utils/index.js +13 -0
  347. package/es/chat-engine/core/adapters/a2ui/utils/index.js.map +1 -0
  348. package/es/chat-engine/core/adapters/a2ui/utils/validation.d.ts +70 -0
  349. package/es/chat-engine/core/adapters/a2ui/utils/validation.js +333 -0
  350. package/es/chat-engine/core/adapters/a2ui/utils/validation.js.map +1 -0
  351. package/es/chat-engine/core/adapters/agui/ActivityManager.d.ts +93 -0
  352. package/es/chat-engine/core/adapters/agui/ActivityManager.js +148 -0
  353. package/es/chat-engine/core/adapters/agui/ActivityManager.js.map +1 -0
  354. package/es/chat-engine/core/adapters/agui/StateManager.d.ts +99 -0
  355. package/es/chat-engine/core/adapters/agui/StateManager.js +172 -0
  356. package/es/chat-engine/core/adapters/agui/StateManager.js.map +1 -0
  357. package/es/chat-engine/core/adapters/agui/activity-manager.d.ts +102 -0
  358. package/es/chat-engine/core/adapters/agui/activity-manager.js +150 -0
  359. package/es/chat-engine/core/adapters/agui/activity-manager.js.map +1 -0
  360. package/es/chat-engine/core/adapters/agui/event-mapper.d.ts +149 -0
  361. package/es/chat-engine/core/adapters/agui/event-mapper.js +417 -0
  362. package/es/chat-engine/core/adapters/agui/event-mapper.js.map +1 -0
  363. package/es/chat-engine/core/adapters/agui/events.d.ts +1550 -0
  364. package/es/chat-engine/core/adapters/agui/events.js +199 -0
  365. package/es/chat-engine/core/adapters/agui/events.js.map +1 -0
  366. package/es/chat-engine/core/adapters/agui/index.d.ts +92 -0
  367. package/es/chat-engine/core/adapters/agui/index.js +200 -0
  368. package/es/chat-engine/core/adapters/agui/index.js.map +1 -0
  369. package/es/chat-engine/core/adapters/agui/state-manager.d.ts +99 -0
  370. package/es/chat-engine/core/adapters/agui/state-manager.js +174 -0
  371. package/es/chat-engine/core/adapters/agui/state-manager.js.map +1 -0
  372. package/es/chat-engine/core/adapters/agui/types/events.d.ts +1570 -0
  373. package/es/chat-engine/core/adapters/agui/types/events.js +15 -0
  374. package/es/chat-engine/core/adapters/agui/types/events.js.map +1 -0
  375. package/es/chat-engine/core/adapters/agui/types/index.d.ts +854 -0
  376. package/es/chat-engine/core/adapters/agui/types/index.js +279 -0
  377. package/es/chat-engine/core/adapters/agui/types/index.js.map +1 -0
  378. package/es/chat-engine/core/adapters/agui/types.d.ts +818 -0
  379. package/es/chat-engine/core/adapters/agui/types.js +95 -0
  380. package/es/chat-engine/core/adapters/agui/types.js.map +1 -0
  381. package/es/chat-engine/core/adapters/agui/utils.d.ts +203 -0
  382. package/es/chat-engine/core/adapters/agui/utils.js +330 -0
  383. package/es/chat-engine/core/adapters/agui/utils.js.map +1 -0
  384. package/es/chat-engine/core/adapters/index.d.ts +5 -0
  385. package/es/chat-engine/core/adapters/index.js +34 -0
  386. package/es/chat-engine/core/adapters/index.js.map +1 -0
  387. package/es/chat-engine/core/adapters/json-render/SurfaceStateManager.d.ts +114 -0
  388. package/es/chat-engine/core/adapters/json-render/SurfaceStateManager.js +194 -0
  389. package/es/chat-engine/core/adapters/json-render/SurfaceStateManager.js.map +1 -0
  390. package/es/chat-engine/core/adapters/json-render/a2ui-to-jsonrender.d.ts +49 -0
  391. package/es/chat-engine/core/adapters/json-render/a2ui-to-jsonrender.js +307 -0
  392. package/es/chat-engine/core/adapters/json-render/a2ui-to-jsonrender.js.map +1 -0
  393. package/es/chat-engine/core/adapters/json-render/engine.d.ts +58 -0
  394. package/es/chat-engine/core/adapters/json-render/engine.js +88 -0
  395. package/es/chat-engine/core/adapters/json-render/engine.js.map +1 -0
  396. package/es/chat-engine/core/adapters/json-render/index.d.ts +8 -0
  397. package/es/chat-engine/core/adapters/json-render/index.js +18 -0
  398. package/es/chat-engine/core/adapters/json-render/index.js.map +1 -0
  399. package/es/chat-engine/core/adapters/json-render/types/a2ui.d.ts +96 -0
  400. package/es/chat-engine/core/adapters/json-render/types/a2ui.js +7 -0
  401. package/es/chat-engine/core/adapters/json-render/types/a2ui.js.map +1 -0
  402. package/es/chat-engine/core/adapters/json-render/types/core.d.ts +49 -0
  403. package/es/chat-engine/core/adapters/json-render/types/core.js +7 -0
  404. package/es/chat-engine/core/adapters/json-render/types/core.js.map +1 -0
  405. package/es/chat-engine/core/adapters/json-render/types/index.d.ts +5 -0
  406. package/es/chat-engine/core/adapters/json-render/types/index.js +9 -0
  407. package/es/chat-engine/core/adapters/json-render/types/index.js.map +1 -0
  408. package/es/chat-engine/core/event-bus/ChatEventBus.d.ts +88 -0
  409. package/es/chat-engine/core/event-bus/ChatEventBus.js +295 -0
  410. package/es/chat-engine/core/event-bus/ChatEventBus.js.map +1 -0
  411. package/es/chat-engine/core/event-bus/index.d.ts +5 -0
  412. package/es/chat-engine/core/event-bus/index.js +13 -0
  413. package/es/chat-engine/core/event-bus/index.js.map +1 -0
  414. package/es/chat-engine/core/event-bus/types.d.ts +230 -0
  415. package/es/chat-engine/core/event-bus/types.js +32 -0
  416. package/es/chat-engine/core/event-bus/types.js.map +1 -0
  417. package/es/chat-engine/core/index.d.ts +147 -0
  418. package/es/chat-engine/core/index.js +760 -0
  419. package/es/chat-engine/core/index.js.map +1 -0
  420. package/es/chat-engine/core/processor/index.d.ts +20 -0
  421. package/es/chat-engine/core/processor/index.js +146 -0
  422. package/es/chat-engine/core/processor/index.js.map +1 -0
  423. package/es/chat-engine/core/server/batch-client.d.ts +20 -0
  424. package/es/chat-engine/core/server/batch-client.js +114 -0
  425. package/es/chat-engine/core/server/batch-client.js.map +1 -0
  426. package/es/chat-engine/core/server/connection-manager.d.ts +39 -0
  427. package/es/chat-engine/core/server/connection-manager.js +84 -0
  428. package/es/chat-engine/core/server/connection-manager.js.map +1 -0
  429. package/es/chat-engine/core/server/errors.d.ts +22 -0
  430. package/es/chat-engine/core/server/errors.js +80 -0
  431. package/es/chat-engine/core/server/errors.js.map +1 -0
  432. package/es/chat-engine/core/server/index.d.ts +11 -0
  433. package/es/chat-engine/core/server/index.js +26 -0
  434. package/es/chat-engine/core/server/index.js.map +1 -0
  435. package/es/chat-engine/core/server/llm-service.d.ts +44 -0
  436. package/es/chat-engine/core/server/llm-service.js +200 -0
  437. package/es/chat-engine/core/server/llm-service.js.map +1 -0
  438. package/es/chat-engine/core/server/sse-client.d.ts +77 -0
  439. package/es/chat-engine/core/server/sse-client.js +362 -0
  440. package/es/chat-engine/core/server/sse-client.js.map +1 -0
  441. package/es/chat-engine/core/server/sse-parser.d.ts +49 -0
  442. package/es/chat-engine/core/server/sse-parser.js +116 -0
  443. package/es/chat-engine/core/server/sse-parser.js.map +1 -0
  444. package/es/chat-engine/core/server/types.d.ts +54 -0
  445. package/es/chat-engine/core/server/types.js +28 -0
  446. package/es/chat-engine/core/server/types.js.map +1 -0
  447. package/es/chat-engine/core/store/message.d.ts +27 -0
  448. package/es/chat-engine/core/store/message.js +267 -0
  449. package/es/chat-engine/core/store/message.js.map +1 -0
  450. package/es/chat-engine/core/store/model.d.ts +8 -0
  451. package/es/chat-engine/core/store/model.js +66 -0
  452. package/es/chat-engine/core/store/model.js.map +1 -0
  453. package/es/chat-engine/core/store/reactiveState.d.ts +56 -0
  454. package/es/chat-engine/core/store/reactiveState.js +139 -0
  455. package/es/chat-engine/core/store/reactiveState.js.map +1 -0
  456. package/es/chat-engine/core/type.d.ts +279 -0
  457. package/es/chat-engine/core/type.js +7 -0
  458. package/es/chat-engine/core/type.js.map +1 -0
  459. package/es/chat-engine/core/utils/eventEmitter.d.ts +10 -0
  460. package/es/chat-engine/core/utils/eventEmitter.js +67 -0
  461. package/es/chat-engine/core/utils/eventEmitter.js.map +1 -0
  462. package/es/chat-engine/core/utils/immutable-patch.d.ts +61 -0
  463. package/es/chat-engine/core/utils/immutable-patch.js +147 -0
  464. package/es/chat-engine/core/utils/immutable-patch.js.map +1 -0
  465. package/es/chat-engine/core/utils/index.d.ts +38 -0
  466. package/es/chat-engine/core/utils/index.js +125 -0
  467. package/es/chat-engine/core/utils/index.js.map +1 -0
  468. package/es/chat-engine/core/utils/json-patch/helpers.d.ts +41 -0
  469. package/es/chat-engine/core/utils/json-patch/helpers.js +164 -0
  470. package/es/chat-engine/core/utils/json-patch/helpers.js.map +1 -0
  471. package/es/chat-engine/core/utils/json-patch/index.d.ts +115 -0
  472. package/es/chat-engine/core/utils/json-patch/index.js +387 -0
  473. package/es/chat-engine/core/utils/json-patch/index.js.map +1 -0
  474. package/es/chat-engine/core/utils/logger.d.ts +30 -0
  475. package/es/chat-engine/core/utils/logger.js +87 -0
  476. package/es/chat-engine/core/utils/logger.js.map +1 -0
  477. package/es/chat-engine/core/utils/performance.d.ts +94 -0
  478. package/es/chat-engine/core/utils/performance.js +205 -0
  479. package/es/chat-engine/core/utils/performance.js.map +1 -0
  480. package/es/chat-engine/hooks/a2ui/A2UIContext.d.ts +90 -0
  481. package/es/chat-engine/hooks/a2ui/A2UIContext.js +97 -0
  482. package/es/chat-engine/hooks/a2ui/A2UIContext.js.map +1 -0
  483. package/es/chat-engine/hooks/a2ui/index.d.ts +12 -0
  484. package/es/chat-engine/hooks/a2ui/index.js +19 -0
  485. package/es/chat-engine/hooks/a2ui/index.js.map +1 -0
  486. package/es/chat-engine/hooks/a2ui/useA2UIAction.d.ts +40 -0
  487. package/es/chat-engine/hooks/a2ui/useA2UIAction.js +74 -0
  488. package/es/chat-engine/hooks/a2ui/useA2UIAction.js.map +1 -0
  489. package/es/chat-engine/hooks/a2ui/useA2UISurface.d.ts +36 -0
  490. package/es/chat-engine/hooks/a2ui/useA2UISurface.js +39 -0
  491. package/es/chat-engine/hooks/a2ui/useA2UISurface.js.map +1 -0
  492. package/es/chat-engine/hooks/a2ui/useDataBinding.d.ts +53 -0
  493. package/es/chat-engine/hooks/a2ui/useDataBinding.js +111 -0
  494. package/es/chat-engine/hooks/a2ui/useDataBinding.js.map +1 -0
  495. package/es/chat-engine/hooks/index.js +7 -0
  496. package/es/chat-engine/hooks/index.js.map +1 -1
  497. package/es/chat-engine/hooks/useAgentActivity.js +9 -1
  498. package/es/chat-engine/hooks/useAgentActivity.js.map +1 -1
  499. package/es/chat-engine/hooks/useAgentToolcall.js +9 -1
  500. package/es/chat-engine/hooks/useAgentToolcall.js.map +1 -1
  501. package/es/chat-engine/hooks/useJsonRenderActivity.d.ts +56 -0
  502. package/es/chat-engine/hooks/useJsonRenderActivity.js +63 -0
  503. package/es/chat-engine/hooks/useJsonRenderActivity.js.map +1 -0
  504. package/es/chat-engine/index.js +8 -4
  505. package/es/chat-engine/index.js.map +1 -1
  506. package/es/chat-filecard/index.js +3 -5
  507. package/es/chat-filecard/index.js.map +1 -1
  508. package/es/chat-loading/index.js +3 -5
  509. package/es/chat-loading/index.js.map +1 -1
  510. package/es/chat-markdown/index.js +3 -5
  511. package/es/chat-markdown/index.js.map +1 -1
  512. package/es/chat-message/index.js +3 -5
  513. package/es/chat-message/index.js.map +1 -1
  514. package/es/chat-sender/index.js +3 -5
  515. package/es/chat-sender/index.js.map +1 -1
  516. package/es/chat-thinking/index.js +3 -5
  517. package/es/chat-thinking/index.js.map +1 -1
  518. package/es/chatbot/docs/react-best-practice.d.ts +13 -0
  519. package/es/chatbot/index.js +3 -5
  520. package/es/chatbot/index.js.map +1 -1
  521. package/es/index.js +10 -7
  522. package/es/index.js.map +1 -1
  523. package/package.json +16 -11
  524. package/es/chatbot/_example-js/agui-toolcall.d.ts +0 -11
@@ -0,0 +1 @@
1
+ {"version":3,"file":"A2UITextField.js","sources":["../../../../../../pro-components/chat/chat-engine/components/a2ui/primitives/A2UITextField.tsx"],"sourcesContent":["/**\n * A2UI TextField 组件\n * A2UI v0.9 标准输入框组件\n */\n\nimport React, { useCallback } from 'react';\nimport { Input, Textarea } from 'tdesign-react';\nimport { useDataBinding, useTwoWayBinding } from '../../../hooks/a2ui/useDataBinding';\nimport type { A2UITextFieldComponent } from '../../../core/a2ui';\n\nexport interface A2UITextFieldProps extends Omit<A2UITextFieldComponent, 'component'> {\n className?: string;\n style?: React.CSSProperties;\n}\n\nexport const A2UITextField: React.FC<A2UITextFieldProps> = ({\n id,\n label,\n text,\n usageHint = 'shortText',\n validationRegexp,\n placeholder,\n disabled,\n className,\n style,\n}) => {\n // 解析标签\n const resolvedLabel = useDataBinding<React.ReactNode>(label);\n // 双向绑定文本值\n const [inputValue, setInputValue] = useTwoWayBinding<string>(text, '');\n // 解析禁用状态\n const resolvedDisabled = useDataBinding<boolean | undefined>(disabled);\n\n // 处理 onChange\n const handleChange = useCallback(\n (val: string) => {\n // 如果有验证正则,进行验证\n if (validationRegexp && typeof validationRegexp === 'string') {\n const regex = new RegExp(validationRegexp);\n if (!regex.test(val) && val !== '') {\n return; // 不符合正则,不更新\n }\n }\n setInputValue(val);\n },\n [setInputValue, validationRegexp]\n );\n\n // 根据 usageHint 决定渲染组件\n if (usageHint === 'longText') {\n return (\n <div className={className} style={style}>\n {resolvedLabel && (\n <label style={{ display: 'block', marginBottom: 4 }}>{resolvedLabel}</label>\n )}\n <Textarea\n value={inputValue as string}\n placeholder={placeholder as string}\n disabled={resolvedDisabled as boolean}\n onChange={handleChange}\n autosize={{ minRows: 3, maxRows: 10 }}\n />\n </div>\n );\n }\n\n // shortText, number, obscured 使用 Input\n const inputType = usageHint === 'obscured' ? 'password' : usageHint === 'number' ? 'number' : 'text';\n\n return (\n <Input\n className={className}\n style={style}\n value={inputValue as string}\n placeholder={placeholder as string}\n disabled={resolvedDisabled as boolean}\n label={resolvedLabel}\n type={inputType}\n onChange={handleChange}\n />\n );\n};\n\nA2UITextField.displayName = 'A2UITextField';\n\nexport default A2UITextField;\n"],"names":["A2UITextField","id","_ref","label","text","_ref$usageHint","usageHint","validationRegexp","placeholder","disabled","className","style","resolvedLabel","useDataBinding","_useTwoWayBinding","useTwoWayBinding","_useTwoWayBinding2","_slicedToArray","inputValue","setInputValue","resolvedDisabled","handleChange","useCallback","val","regex","RegExp","test","React","createElement","display","marginBottom","Textarea","value","onChange","autosize","minRows","maxRows","inputType","Input","type","displayName"],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * A2UI 基础组件导出
3
+ */
4
+ export { A2UIText, type A2UITextProps } from './A2UIText';
5
+ export { A2UIImage, type A2UIImageProps } from './A2UIImage';
6
+ export { A2UIIcon, type A2UIIconProps } from './A2UIIcon';
7
+ export { A2UIButton, type A2UIButtonProps } from './A2UIButton';
8
+ export { A2UIInput, type A2UIInputProps } from './A2UIInput';
9
+ export { A2UITextField, type A2UITextFieldProps } from './A2UITextField';
10
+ export { A2UICheckBox, type A2UICheckBoxProps } from './A2UICheckBox';
11
+ export { A2UIChoicePicker, type A2UIChoicePickerProps } from './A2UIChoicePicker';
12
+ export { A2UISlider, type A2UISliderProps } from './A2UISlider';
13
+ export { A2UIRadioGroup, type A2UIRadioGroupProps } from './A2UIRadioGroup';
14
+ export { A2UICheckboxGroup, type A2UICheckboxGroupProps } from './A2UICheckboxGroup';
15
+ export { A2UIDivider, type A2UIDividerProps } from './A2UIDivider';
@@ -0,0 +1,39 @@
1
+ /**
2
+ * tdesign v1.0.2-alpha.14
3
+ * (c) 2026 tdesign
4
+ * @license MIT
5
+ */
6
+
7
+ export { A2UIText } from './A2UIText.js';
8
+ export { A2UIImage } from './A2UIImage.js';
9
+ export { A2UIIcon } from './A2UIIcon.js';
10
+ export { A2UIButton } from './A2UIButton.js';
11
+ export { A2UIInput } from './A2UIInput.js';
12
+ export { A2UITextField } from './A2UITextField.js';
13
+ export { A2UICheckBox } from './A2UICheckBox.js';
14
+ export { A2UIChoicePicker } from './A2UIChoicePicker.js';
15
+ export { A2UISlider } from './A2UISlider.js';
16
+ export { A2UIRadioGroup } from './A2UIRadioGroup.js';
17
+ export { A2UICheckboxGroup } from './A2UICheckboxGroup.js';
18
+ export { A2UIDivider } from './A2UIDivider.js';
19
+ import '@babel/runtime/helpers/defineProperty';
20
+ import 'react';
21
+ import 'classnames';
22
+ import '../../../hooks/a2ui/useDataBinding.js';
23
+ import '@babel/runtime/helpers/slicedToArray';
24
+ import '../../../hooks/a2ui/A2UIContext.js';
25
+ import '../../../core/a2ui/utils/index.js';
26
+ import '../../../core/a2ui/utils/binding.js';
27
+ import '@babel/runtime/helpers/typeof';
28
+ import '../../../core/a2ui/utils/validation.js';
29
+ import '@babel/runtime/helpers/toConsumableArray';
30
+ import 'tdesign-react';
31
+ import '../../../hooks/a2ui/useA2UIAction.js';
32
+ import '../A2UIComponentRenderer.js';
33
+ import '../A2UIErrorBoundary.js';
34
+ import '@babel/runtime/helpers/classCallCheck';
35
+ import '@babel/runtime/helpers/createClass';
36
+ import '@babel/runtime/helpers/possibleConstructorReturn';
37
+ import '@babel/runtime/helpers/getPrototypeOf';
38
+ import '@babel/runtime/helpers/inherits';
39
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * A2UI 默认组件注册表
3
+ * 将 A2UI 组件类型映射到 TDesign 实现
4
+ */
5
+ import type { ComponentRegistry } from '../../hooks/a2ui/A2UIContext';
6
+ /**
7
+ * 默认组件注册表
8
+ *
9
+ * 组件类型名称遵循 A2UI v0.9 协议规范
10
+ */
11
+ export declare const defaultComponentRegistry: ComponentRegistry;
12
+ /**
13
+ * 创建自定义组件注册表
14
+ *
15
+ * @example
16
+ * ```tsx
17
+ * const customRegistry = createComponentRegistry({
18
+ * ...defaultComponentRegistry,
19
+ * Button: MyCustomButton, // 覆盖默认 Button
20
+ * CustomWidget: MyWidget, // 添加自定义组件
21
+ * });
22
+ * ```
23
+ */
24
+ export declare function createComponentRegistry(components: ComponentRegistry): ComponentRegistry;
25
+ /**
26
+ * 扩展默认注册表
27
+ *
28
+ * @example
29
+ * ```tsx
30
+ * const registry = extendComponentRegistry({
31
+ * CustomWidget: MyWidget,
32
+ * });
33
+ * ```
34
+ */
35
+ export declare function extendComponentRegistry(extensions: Partial<ComponentRegistry>): ComponentRegistry;
@@ -0,0 +1,74 @@
1
+ /**
2
+ * tdesign v1.0.2-alpha.14
3
+ * (c) 2026 tdesign
4
+ * @license MIT
5
+ */
6
+
7
+ import _defineProperty from '@babel/runtime/helpers/defineProperty';
8
+ import { A2UIText } from './primitives/A2UIText.js';
9
+ import { A2UIImage } from './primitives/A2UIImage.js';
10
+ import { A2UIIcon } from './primitives/A2UIIcon.js';
11
+ import { A2UIButton } from './primitives/A2UIButton.js';
12
+ import { A2UIInput } from './primitives/A2UIInput.js';
13
+ import { A2UITextField } from './primitives/A2UITextField.js';
14
+ import { A2UICheckBox } from './primitives/A2UICheckBox.js';
15
+ import { A2UIChoicePicker } from './primitives/A2UIChoicePicker.js';
16
+ import { A2UISlider } from './primitives/A2UISlider.js';
17
+ import { A2UIRadioGroup } from './primitives/A2UIRadioGroup.js';
18
+ import { A2UICheckboxGroup } from './primitives/A2UICheckboxGroup.js';
19
+ import { A2UIDivider } from './primitives/A2UIDivider.js';
20
+ import { A2UICard } from './containers/A2UICard.js';
21
+ import { A2UIRow } from './containers/A2UIRow.js';
22
+ import { A2UIColumn } from './containers/A2UIColumn.js';
23
+ import { A2UIList } from './containers/A2UIList.js';
24
+ import { A2UITabs } from './containers/A2UITabs.js';
25
+ import 'react';
26
+ import 'classnames';
27
+ import '../../hooks/a2ui/useDataBinding.js';
28
+ import '@babel/runtime/helpers/slicedToArray';
29
+ import '../../hooks/a2ui/A2UIContext.js';
30
+ import '../../core/a2ui/utils/index.js';
31
+ import '../../core/a2ui/utils/binding.js';
32
+ import '@babel/runtime/helpers/typeof';
33
+ import '../../core/a2ui/utils/validation.js';
34
+ import '@babel/runtime/helpers/toConsumableArray';
35
+ import 'tdesign-react';
36
+ import '../../hooks/a2ui/useA2UIAction.js';
37
+ import './A2UIComponentRenderer.js';
38
+ import './A2UIErrorBoundary.js';
39
+ import '@babel/runtime/helpers/classCallCheck';
40
+ import '@babel/runtime/helpers/createClass';
41
+ import '@babel/runtime/helpers/possibleConstructorReturn';
42
+ import '@babel/runtime/helpers/getPrototypeOf';
43
+ import '@babel/runtime/helpers/inherits';
44
+
45
+ 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; }
46
+ 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; }
47
+ var defaultComponentRegistry = {
48
+ Text: A2UIText,
49
+ Image: A2UIImage,
50
+ Icon: A2UIIcon,
51
+ Button: A2UIButton,
52
+ TextField: A2UITextField,
53
+ CheckBox: A2UICheckBox,
54
+ ChoicePicker: A2UIChoicePicker,
55
+ Slider: A2UISlider,
56
+ Divider: A2UIDivider,
57
+ Card: A2UICard,
58
+ Row: A2UIRow,
59
+ Column: A2UIColumn,
60
+ List: A2UIList,
61
+ Tabs: A2UITabs,
62
+ Input: A2UIInput,
63
+ RadioGroup: A2UIRadioGroup,
64
+ CheckboxGroup: A2UICheckboxGroup
65
+ };
66
+ function createComponentRegistry(components) {
67
+ return _objectSpread({}, components);
68
+ }
69
+ function extendComponentRegistry(extensions) {
70
+ return _objectSpread(_objectSpread({}, defaultComponentRegistry), extensions);
71
+ }
72
+
73
+ export { createComponentRegistry, defaultComponentRegistry, extendComponentRegistry };
74
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sources":["../../../../../pro-components/chat/chat-engine/components/a2ui/registry.ts"],"sourcesContent":["/**\n * A2UI 默认组件注册表\n * 将 A2UI 组件类型映射到 TDesign 实现\n */\n\nimport type { ComponentRegistry } from '../../hooks/a2ui/A2UIContext';\n\n// Display 组件\nimport { A2UIText } from './primitives/A2UIText';\nimport { A2UIImage } from './primitives/A2UIImage';\nimport { A2UIIcon } from './primitives/A2UIIcon';\n\n// Interactive 组件\nimport { A2UIButton } from './primitives/A2UIButton';\nimport { A2UIInput } from './primitives/A2UIInput';\nimport { A2UITextField } from './primitives/A2UITextField';\nimport { A2UICheckBox } from './primitives/A2UICheckBox';\nimport { A2UIChoicePicker } from './primitives/A2UIChoicePicker';\nimport { A2UISlider } from './primitives/A2UISlider';\nimport { A2UIRadioGroup } from './primitives/A2UIRadioGroup';\nimport { A2UICheckboxGroup } from './primitives/A2UICheckboxGroup';\nimport { A2UIDivider } from './primitives/A2UIDivider';\n\n// 容器组件\nimport { A2UICard } from './containers/A2UICard';\nimport { A2UIRow } from './containers/A2UIRow';\nimport { A2UIColumn } from './containers/A2UIColumn';\nimport { A2UIList } from './containers/A2UIList';\nimport { A2UITabs } from './containers/A2UITabs';\n\n/**\n * 默认组件注册表\n * \n * 组件类型名称遵循 A2UI v0.9 协议规范\n */\nexport const defaultComponentRegistry: ComponentRegistry = {\n // ===== Display 组件 =====\n Text: A2UIText,\n Image: A2UIImage,\n Icon: A2UIIcon,\n\n // ===== Interactive 组件 =====\n Button: A2UIButton,\n TextField: A2UITextField,\n CheckBox: A2UICheckBox,\n ChoicePicker: A2UIChoicePicker,\n Slider: A2UISlider,\n Divider: A2UIDivider,\n\n // ===== Layout 组件 =====\n Card: A2UICard,\n Row: A2UIRow,\n Column: A2UIColumn,\n List: A2UIList,\n Tabs: A2UITabs,\n\n // ===== TDesign 扩展(向后兼容)=====\n Input: A2UIInput,\n RadioGroup: A2UIRadioGroup,\n CheckboxGroup: A2UICheckboxGroup,\n};\n\n/**\n * 创建自定义组件注册表\n * \n * @example\n * ```tsx\n * const customRegistry = createComponentRegistry({\n * ...defaultComponentRegistry,\n * Button: MyCustomButton, // 覆盖默认 Button\n * CustomWidget: MyWidget, // 添加自定义组件\n * });\n * ```\n */\nexport function createComponentRegistry(\n components: ComponentRegistry\n): ComponentRegistry {\n return { ...components };\n}\n\n/**\n * 扩展默认注册表\n * \n * @example\n * ```tsx\n * const registry = extendComponentRegistry({\n * CustomWidget: MyWidget,\n * });\n * ```\n */\nexport function extendComponentRegistry(\n extensions: Partial<ComponentRegistry>\n): ComponentRegistry {\n return {\n ...defaultComponentRegistry,\n ...extensions,\n };\n}\n"],"names":["defaultComponentRegistry","Text","A2UIText","Image","A2UIImage","Icon","A2UIIcon","Button","A2UIButton","TextField","A2UITextField","CheckBox","A2UICheckBox","ChoicePicker","A2UIChoicePicker","Slider","A2UISlider","Divider","A2UIDivider","Card","A2UICard","Row","A2UIRow","Column","A2UIColumn","List","A2UIList","Tabs","A2UITabs","Input","A2UIInput","RadioGroup","A2UIRadioGroup","CheckboxGroup","A2UICheckboxGroup","createComponentRegistry","components","_objectSpread","extendComponentRegistry","extensions"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmCO,IAAMA,wBAA8C,GAAA;AAEzDC,EAAAA,IAAM,EAAAC,QAAA;AACNC,EAAAA,KAAO,EAAAC,SAAA;AACPC,EAAAA,IAAM,EAAAC,QAAA;AAGNC,EAAAA,MAAQ,EAAAC,UAAA;AACRC,EAAAA,SAAW,EAAAC,aAAA;AACXC,EAAAA,QAAU,EAAAC,YAAA;AACVC,EAAAA,YAAc,EAAAC,gBAAA;AACdC,EAAAA,MAAQ,EAAAC,UAAA;AACRC,EAAAA,OAAS,EAAAC,WAAA;AAGTC,EAAAA,IAAM,EAAAC,QAAA;AACNC,EAAAA,GAAK,EAAAC,OAAA;AACLC,EAAAA,MAAQ,EAAAC,UAAA;AACRC,EAAAA,IAAM,EAAAC,QAAA;AACNC,EAAAA,IAAM,EAAAC,QAAA;AAGNC,EAAAA,KAAO,EAAAC,SAAA;AACPC,EAAAA,UAAY,EAAAC,cAAA;AACZC,EAAAA,aAAe,EAAAC,iBAAAA;AACjB,EAAA;AAcO,SAASC,wBACdC,UACmB,EAAA;EACZ,OAAAC,aAAA,KAAKD,UAAW,CAAA,CAAA;AACzB,CAAA;AAYO,SAASE,wBACdC,UACmB,EAAA;AACZ,EAAA,OAAAF,aAAA,CAAAA,aAAA,CACFrC,EAAAA,EAAAA,wBAAA,GACAuC,UAAA,CAAA,CAAA;AAEP;;;;"}
@@ -5,15 +5,19 @@
5
5
  */
6
6
 
7
7
  import './types.js';
8
- export { activityRegistry } from './registry.js';
8
+ export { ACTIVITY_EVENT_DETAIL_KEY, ACTIVITY_REGISTERED_EVENT, activityRegistry } from './registry.js';
9
9
  export { ActivityRenderer } from './render.js';
10
- import '@babel/runtime/helpers/classCallCheck';
11
- import '@babel/runtime/helpers/createClass';
10
+ import '../shared/index.js';
11
+ import '../shared/createRegistry.js';
12
12
  import '@babel/runtime/helpers/defineProperty';
13
13
  import 'react';
14
- import '@babel/runtime/helpers/slicedToArray';
14
+ import '../shared/ComponentErrorBoundary.js';
15
+ import '@babel/runtime/helpers/classCallCheck';
16
+ import '@babel/runtime/helpers/createClass';
15
17
  import '@babel/runtime/helpers/possibleConstructorReturn';
16
18
  import '@babel/runtime/helpers/getPrototypeOf';
17
19
  import '@babel/runtime/helpers/inherits';
20
+ import '../shared/useRegistrationListener.js';
21
+ import '@babel/runtime/helpers/slicedToArray';
18
22
  import 'react-fast-compare';
19
23
  //# 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,44 +1,10 @@
1
- import React from 'react';
2
- import type { ActivityConfig, ActivityRegistry, ActivityComponentProps } from './types';
1
+ import type { ActivityConfig, ActivityComponentProps } from './types';
2
+ /** Activity 注册事件名称 */
3
+ export declare const ACTIVITY_REGISTERED_EVENT = "activity-registered";
4
+ /** Activity 注册事件 detail 键名 */
5
+ export declare const ACTIVITY_EVENT_DETAIL_KEY = "activityType";
3
6
  /**
4
7
  * Activity 注册表管理器
5
8
  * 业务方注册具体的 activityType(如 json-render-main-card),精确匹配
6
9
  */
7
- declare class ActivityRegistryManager {
8
- private registry;
9
- private renderFunctionCache;
10
- /**
11
- * 注册一个 Activity 配置
12
- */
13
- register<TContent = any>(config: ActivityConfig<TContent>): void;
14
- /**
15
- * 获取指定类型的 Activity 配置
16
- */
17
- get(activityType: string): ActivityConfig | undefined;
18
- /**
19
- * 获取或创建缓存的组件渲染函数
20
- */
21
- getRenderFunction(activityType: string): React.MemoExoticComponent<React.ComponentType<ActivityComponentProps>> | null;
22
- /**
23
- * 获取所有已注册的 Activity 配置
24
- */
25
- getAll(): ActivityRegistry;
26
- /**
27
- * 取消注册指定的 Activity
28
- */
29
- unregister(activityType: string): void;
30
- /**
31
- * 清空所有注册的 Activity
32
- */
33
- clear(): void;
34
- /**
35
- * 检查指定类型是否已注册
36
- */
37
- has(activityType: string): boolean;
38
- /**
39
- * 获取所有已注册的 Activity 类型
40
- */
41
- getRegisteredTypes(): string[];
42
- }
43
- export declare const activityRegistry: ActivityRegistryManager;
44
- export {};
10
+ export declare const activityRegistry: import("../shared").IRegistryManager<ActivityConfig<any>, ActivityComponentProps<any>>;
@@ -4,82 +4,28 @@
4
4
  * @license MIT
5
5
  */
6
6
 
7
- import _classCallCheck from '@babel/runtime/helpers/classCallCheck';
8
- import _createClass from '@babel/runtime/helpers/createClass';
9
- import _defineProperty from '@babel/runtime/helpers/defineProperty';
10
- import React from 'react';
7
+ import '../shared/index.js';
8
+ import { createRegistryManager } from '../shared/createRegistry.js';
9
+ import '../shared/ComponentErrorBoundary.js';
10
+ import '@babel/runtime/helpers/classCallCheck';
11
+ import '@babel/runtime/helpers/createClass';
12
+ import '@babel/runtime/helpers/possibleConstructorReturn';
13
+ import '@babel/runtime/helpers/getPrototypeOf';
14
+ import '@babel/runtime/helpers/inherits';
15
+ import 'react';
16
+ import '../shared/useRegistrationListener.js';
17
+ import '@babel/runtime/helpers/slicedToArray';
18
+ import '@babel/runtime/helpers/defineProperty';
11
19
 
12
- 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; }
13
- 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; }
14
- var ActivityRegistryManager = /*#__PURE__*/function () {
15
- function ActivityRegistryManager() {
16
- _classCallCheck(this, ActivityRegistryManager);
17
- _defineProperty(this, "registry", {});
18
- _defineProperty(this, "renderFunctionCache", /* @__PURE__ */new Map());
19
- }
20
- return _createClass(ActivityRegistryManager, [{
21
- key: "register",
22
- value: function register(config) {
23
- var existingConfig = this.registry[config.activityType];
24
- if (existingConfig && existingConfig.component !== config.component) {
25
- this.renderFunctionCache["delete"](config.activityType);
26
- }
27
- this.registry[config.activityType] = config;
28
- window.dispatchEvent(new CustomEvent("activity-registered", {
29
- detail: {
30
- activityType: config.activityType
31
- }
32
- }));
33
- }
34
- }, {
35
- key: "get",
36
- value: function get(activityType) {
37
- return this.registry[activityType];
38
- }
39
- }, {
40
- key: "getRenderFunction",
41
- value: function getRenderFunction(activityType) {
42
- var config = this.registry[activityType];
43
- if (!config) return null;
44
- var memoizedComponent = this.renderFunctionCache.get(activityType);
45
- if (!memoizedComponent) {
46
- memoizedComponent = /*#__PURE__*/React.memo(function (props) {
47
- return /*#__PURE__*/React.createElement(config.component, props);
48
- });
49
- this.renderFunctionCache.set(activityType, memoizedComponent);
50
- }
51
- return memoizedComponent;
52
- }
53
- }, {
54
- key: "getAll",
55
- value: function getAll() {
56
- return _objectSpread({}, this.registry);
57
- }
58
- }, {
59
- key: "unregister",
60
- value: function unregister(activityType) {
61
- delete this.registry[activityType];
62
- this.renderFunctionCache["delete"](activityType);
63
- }
64
- }, {
65
- key: "clear",
66
- value: function clear() {
67
- this.registry = {};
68
- this.renderFunctionCache.clear();
69
- }
70
- }, {
71
- key: "has",
72
- value: function has(activityType) {
73
- return activityType in this.registry;
74
- }
75
- }, {
76
- key: "getRegisteredTypes",
77
- value: function getRegisteredTypes() {
78
- return Object.keys(this.registry);
79
- }
80
- }]);
81
- }();
82
- var activityRegistry = new ActivityRegistryManager();
20
+ var ACTIVITY_REGISTERED_EVENT = "activity-registered";
21
+ var ACTIVITY_EVENT_DETAIL_KEY = "activityType";
22
+ var activityRegistry = createRegistryManager({
23
+ getKey: function getKey(config) {
24
+ return config.activityType;
25
+ },
26
+ eventName: ACTIVITY_REGISTERED_EVENT,
27
+ eventDetailKey: ACTIVITY_EVENT_DETAIL_KEY
28
+ });
83
29
 
84
- export { activityRegistry };
30
+ export { ACTIVITY_EVENT_DETAIL_KEY, ACTIVITY_REGISTERED_EVENT, activityRegistry };
85
31
  //# sourceMappingURL=registry.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sources":["../../../../../pro-components/chat/chat-engine/components/activity/registry.ts"],"sourcesContent":["import React from 'react';\nimport type { ActivityConfig, ActivityRegistry, ActivityComponentProps } from './types';\n\n/**\n * Activity 注册表管理器\n * 业务方注册具体的 activityType(如 json-render-main-card),精确匹配\n */\nclass ActivityRegistryManager {\n private registry: ActivityRegistry = {};\n\n // 组件渲染函数缓存,避免重复创建 React 组件\n private renderFunctionCache = new Map<\n string,\n React.MemoExoticComponent<React.ComponentType<ActivityComponentProps>>\n >();\n\n /**\n * 注册一个 Activity 配置\n */\n register<TContent = any>(config: ActivityConfig<TContent>): void {\n const existingConfig = this.registry[config.activityType];\n\n // 如果组件发生变化,清除旧的缓存\n if (existingConfig && existingConfig.component !== config.component) {\n this.renderFunctionCache.delete(config.activityType);\n }\n\n this.registry[config.activityType] = config;\n\n // 触发注册事件,支持动态注册\n window.dispatchEvent(\n new CustomEvent('activity-registered', {\n detail: { activityType: config.activityType },\n }),\n );\n }\n\n /**\n * 获取指定类型的 Activity 配置\n */\n get(activityType: string): ActivityConfig | undefined {\n return this.registry[activityType];\n }\n\n /**\n * 获取或创建缓存的组件渲染函数\n */\n getRenderFunction(activityType: string): React.MemoExoticComponent<React.ComponentType<ActivityComponentProps>> | null {\n const config = this.registry[activityType];\n if (!config) return null;\n\n // 检查缓存\n let memoizedComponent = this.renderFunctionCache.get(activityType);\n\n if (!memoizedComponent) {\n // 创建 memo 化的组件\n memoizedComponent = React.memo((props: ActivityComponentProps) => \n React.createElement(config.component, props)\n );\n\n // 缓存组件\n this.renderFunctionCache.set(activityType, memoizedComponent);\n }\n\n return memoizedComponent;\n }\n\n /**\n * 获取所有已注册的 Activity 配置\n */\n getAll(): ActivityRegistry {\n return { ...this.registry };\n }\n\n /**\n * 取消注册指定的 Activity\n */\n unregister(activityType: string): void {\n delete this.registry[activityType];\n this.renderFunctionCache.delete(activityType);\n }\n\n /**\n * 清空所有注册的 Activity\n */\n clear(): void {\n this.registry = {};\n this.renderFunctionCache.clear();\n }\n\n /**\n * 检查指定类型是否已注册\n */\n has(activityType: string): boolean {\n return activityType in this.registry;\n }\n\n /**\n * 获取所有已注册的 Activity 类型\n */\n getRegisteredTypes(): string[] {\n return Object.keys(this.registry);\n }\n}\n\n// 导出单例实例\nexport const activityRegistry = new ActivityRegistryManager();\n"],"names":["ActivityRegistryManager","_classCallCheck","_defineProperty","Map","_createClass","key","value","register","config","existingConfig","registry","activityType","component","renderFunctionCache","window","dispatchEvent","CustomEvent","detail","get","getRenderFunction","memoizedComponent","React","memo","props","createElement","set","getAll","_objectSpread","unregister","clear","has","getRegisteredTypes","Object","keys","activityRegistry"],"mappings":"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"}
1
+ {"version":3,"file":"registry.js","sources":["../../../../../pro-components/chat/chat-engine/components/activity/registry.ts"],"sourcesContent":["import { createRegistryManager } from '../shared';\nimport type { ActivityConfig, ActivityComponentProps } from './types';\n\n/** Activity 注册事件名称 */\nexport const ACTIVITY_REGISTERED_EVENT = 'activity-registered';\n\n/** Activity 注册事件 detail 键名 */\nexport const ACTIVITY_EVENT_DETAIL_KEY = 'activityType';\n\n/**\n * Activity 注册表管理器\n * 业务方注册具体的 activityType(如 json-render-main-card),精确匹配\n */\nexport const activityRegistry = createRegistryManager<ActivityConfig, ActivityComponentProps>({\n getKey: (config) => config.activityType,\n eventName: ACTIVITY_REGISTERED_EVENT,\n eventDetailKey: ACTIVITY_EVENT_DETAIL_KEY,\n});\n"],"names":["ACTIVITY_REGISTERED_EVENT","ACTIVITY_EVENT_DETAIL_KEY","activityRegistry","createRegistryManager","getKey","config","activityType","eventName","eventDetailKey"],"mappings":";;;;;;;;;;;;;;;;;;;AAIO,IAAMA,yBAA4B,GAAA,sBAAA;AAGlC,IAAMC,yBAA4B,GAAA,eAAA;AAM5BC,IAAAA,mBAAmBC,qBAA8D,CAAA;AAC5FC,EAAAA,MAAA,EAAQ,SAARA,MAAAA,CAASC,MAAA,EAAA;IAAA,OAAWA,MAAO,CAAAC,YAAA,CAAA;AAAA,GAAA;AAC3BC,EAAAA,SAAW,EAAAP,yBAAA;AACXQ,EAAAA,cAAgB,EAAAP,yBAAAA;AAClB,CAAC;;;;"}
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { type ActivityData } from 'tdesign-web-components';
2
+ import { type ActivityData } from 'tdesign-web-components/lib/chat-engine';
3
3
  interface ActivityRendererProps {
4
4
  activity: ActivityData;
5
5
  }
@@ -5,55 +5,22 @@
5
5
  */
6
6
 
7
7
  import _defineProperty from '@babel/runtime/helpers/defineProperty';
8
- import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
9
- import _classCallCheck from '@babel/runtime/helpers/classCallCheck';
10
- import _createClass from '@babel/runtime/helpers/createClass';
11
- import _possibleConstructorReturn from '@babel/runtime/helpers/possibleConstructorReturn';
12
- import _getPrototypeOf from '@babel/runtime/helpers/getPrototypeOf';
13
- import _inherits from '@babel/runtime/helpers/inherits';
14
- import React, { Component, useState, useMemo, useEffect } from 'react';
8
+ import React, { useMemo } from 'react';
15
9
  import isEqual from 'react-fast-compare';
16
- import { activityRegistry } from './registry.js';
10
+ import { ACTIVITY_REGISTERED_EVENT, ACTIVITY_EVENT_DETAIL_KEY, activityRegistry } from './registry.js';
11
+ import '../shared/index.js';
12
+ import { useRegistrationListener } from '../shared/useRegistrationListener.js';
13
+ import { ComponentErrorBoundary } from '../shared/ComponentErrorBoundary.js';
14
+ import '../shared/createRegistry.js';
15
+ import '@babel/runtime/helpers/classCallCheck';
16
+ import '@babel/runtime/helpers/createClass';
17
+ import '@babel/runtime/helpers/possibleConstructorReturn';
18
+ import '@babel/runtime/helpers/getPrototypeOf';
19
+ import '@babel/runtime/helpers/inherits';
20
+ import '@babel/runtime/helpers/slicedToArray';
17
21
 
18
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; }
19
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; }
20
- function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
21
- function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
22
- var ActivityErrorBoundary = /*#__PURE__*/function (_Component) {
23
- function ActivityErrorBoundary(props) {
24
- var _this;
25
- _classCallCheck(this, ActivityErrorBoundary);
26
- _this = _callSuper(this, ActivityErrorBoundary, [props]);
27
- _this.state = {
28
- hasError: false,
29
- error: null
30
- };
31
- return _this;
32
- }
33
- _inherits(ActivityErrorBoundary, _Component);
34
- return _createClass(ActivityErrorBoundary, [{
35
- key: "componentDidCatch",
36
- value: function componentDidCatch(error, errorInfo) {
37
- console.error("[ActivityRenderer] Error in activity \"".concat(this.props.activityType, "\":"), error, errorInfo);
38
- }
39
- }, {
40
- key: "render",
41
- value: function render() {
42
- if (this.state.hasError) {
43
- return null;
44
- }
45
- return this.props.children;
46
- }
47
- }], [{
48
- key: "getDerivedStateFromError",
49
- value: function getDerivedStateFromError(error) {
50
- return {
51
- hasError: true,
52
- error: error
53
- };
54
- }
55
- }]);
56
- }(Component);
57
24
  var DefaultActivityRenderer = function DefaultActivityRenderer(_ref) {
58
25
  var activity = _ref.activity;
59
26
  console.warn("[ActivityRenderer] Unknown activity type: ".concat(activity.activityType), activity.content);
@@ -61,12 +28,13 @@ var DefaultActivityRenderer = function DefaultActivityRenderer(_ref) {
61
28
  };
62
29
  var ActivityRenderer = /*#__PURE__*/React.memo(function (_ref2) {
63
30
  var activity = _ref2.activity;
64
- var _useState = useState(function () {
65
- return !!activityRegistry.getRenderFunction(activity.activityType);
31
+ var _useRegistrationListe = useRegistrationListener({
32
+ componentKey: activity.activityType,
33
+ eventName: ACTIVITY_REGISTERED_EVENT,
34
+ eventDetailKey: ACTIVITY_EVENT_DETAIL_KEY,
35
+ getRenderFunction: activityRegistry.getRenderFunction
66
36
  }),
67
- _useState2 = _slicedToArray(_useState, 2),
68
- isRegistered = _useState2[0],
69
- setIsRegistered = _useState2[1];
37
+ MemoizedComponent = _useRegistrationListe.MemoizedComponent;
70
38
  var componentProps = useMemo(function () {
71
39
  return {
72
40
  activityType: activity.activityType,
@@ -74,30 +42,14 @@ var ActivityRenderer = /*#__PURE__*/React.memo(function (_ref2) {
74
42
  messageId: activity.messageId || ""
75
43
  };
76
44
  }, [activity.activityType, activity.content, activity.messageId]);
77
- useEffect(function () {
78
- if (!isRegistered) {
79
- var handleRegistered = function handleRegistered(event) {
80
- var _event$detail;
81
- if (((_event$detail = event.detail) === null || _event$detail === void 0 ? void 0 : _event$detail.activityType) === activity.activityType) {
82
- setIsRegistered(true);
83
- }
84
- };
85
- window.addEventListener("activity-registered", handleRegistered);
86
- return function () {
87
- window.removeEventListener("activity-registered", handleRegistered);
88
- };
89
- }
90
- }, [activity.activityType, isRegistered]);
91
- var MemoizedComponent = useMemo(function () {
92
- return activityRegistry.getRenderFunction(activity.activityType);
93
- }, [activity.activityType, isRegistered]);
94
45
  if (!MemoizedComponent) {
95
46
  return /* @__PURE__ */React.createElement(DefaultActivityRenderer, {
96
47
  activity: activity
97
48
  });
98
49
  }
99
- return /* @__PURE__ */React.createElement(ActivityErrorBoundary, {
100
- activityType: activity.activityType
50
+ return /* @__PURE__ */React.createElement(ComponentErrorBoundary, {
51
+ componentName: activity.activityType,
52
+ logPrefix: "ActivityRenderer"
101
53
  }, /* @__PURE__ */React.createElement(MemoizedComponent, _objectSpread({}, componentProps)));
102
54
  }, function (prevProps, nextProps) {
103
55
  if (prevProps.activity.activityType !== nextProps.activity.activityType) {
@@ -1 +1 @@
1
- {"version":3,"file":"render.js","sources":["../../../../../pro-components/chat/chat-engine/components/activity/render.tsx"],"sourcesContent":["/* eslint-disable react-hooks/exhaustive-deps */\nimport React, { useState, useEffect, useMemo, Component, ErrorInfo } from 'react';\nimport isEqual from 'react-fast-compare';\nimport { type ActivityData } from 'tdesign-web-components';\nimport type { ActivityComponentProps } from './types';\nimport { activityRegistry } from './registry';\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<{ children: React.ReactNode; activityType: string }, ErrorBoundaryState> {\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(() => !!activityRegistry.getRenderFunction(activity.activityType));\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 // 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';\n"],"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","isEqual","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, { useMemo } from 'react';\nimport isEqual from 'react-fast-compare';\nimport type { ActivityComponentProps } from './types';\nimport { activityRegistry, ACTIVITY_REGISTERED_EVENT, ACTIVITY_EVENT_DETAIL_KEY } from './registry';\nimport { ComponentErrorBoundary, useRegistrationListener } from '../shared';\nimport { type ActivityData } from 'tdesign-web-components/lib/chat-engine';\n\ninterface ActivityRendererProps {\n activity: ActivityData;\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 // 使用公共 Hook 监听动态注册\n const { MemoizedComponent } = useRegistrationListener<ActivityComponentProps>({\n componentKey: activity.activityType,\n eventName: ACTIVITY_REGISTERED_EVENT,\n eventDetailKey: ACTIVITY_EVENT_DETAIL_KEY,\n getRenderFunction: activityRegistry.getRenderFunction,\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 if (!MemoizedComponent) {\n return <DefaultActivityRenderer activity={activity} />;\n }\n\n return (\n <ComponentErrorBoundary componentName={activity.activityType} logPrefix=\"ActivityRenderer\">\n <MemoizedComponent {...componentProps} />\n </ComponentErrorBoundary>\n );\n },\n (prevProps, nextProps) => {\n // 1. activityType 变化必须重渲染\n if (prevProps.activity.activityType !== nextProps.activity.activityType) {\n return false;\n }\n // 2. messageId 变化必须重渲染\n if (prevProps.activity.messageId !== nextProps.activity.messageId) {\n return false;\n }\n // 3. content 引用相同,跳过渲染\n if (prevProps.activity.content === nextProps.activity.content) {\n return true;\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":["DefaultActivityRenderer","_ref","activity","console","warn","concat","activityType","content","ActivityRenderer","React","memo","_ref2","_useRegistrationListe","useRegistrationListener","componentKey","eventName","ACTIVITY_REGISTERED_EVENT","eventDetailKey","ACTIVITY_EVENT_DETAIL_KEY","getRenderFunction","activityRegistry","MemoizedComponent","componentProps","useMemo","messageId","createElement","ComponentErrorBoundary","componentName","logPrefix","_objectSpread","prevProps","nextProps","isEqual","displayName"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAgBA,IAAMA,uBAA2D,GAAA,SAA3DA,uBAA2DA,CAAAC,IAAA,EAAkB;AAAA,EAAA,IAAfC,QAAA,GAAAD,IAAA,CAAAC,QAAA,CAAA;AAElEC,EAAAA,OAAA,CAAQC,IAAK,CAAAC,4CAAAA,CAAAA,MAAA,CAA6CH,QAAS,CAAAI,YAAA,CAAgBJ,EAAAA,SAASK,OAAO,CAAA,CAAA;AAC5F,EAAA,OAAA,IAAA,CAAA;AACT,CAAA,CAAA;AAUO,IAAMC,gCAAmBC,KAAM,CAAAC,IAAA,CACpC,UAAAC,KAAA,EAAkB;AAAA,EAAA,IAAfT,QAAA,GAAAS,KAAA,CAAAT,QAAA,CAAA;EAEK,IAAAU,qBAAA,GAAwBC,uBAAgD,CAAA;MAC5EC,cAAcZ,QAAS,CAAAI,YAAA;AACvBS,MAAAA,SAAW,EAAAC,yBAAA;AACXC,MAAAA,cAAgB,EAAAC,yBAAA;MAChBC,mBAAmBC,gBAAiB,CAAAD,iBAAAA;AACtC,KAAC,CAAA;IALOE,iBAAkB,GAAAT,qBAAA,CAAlBS,iBAAkB,CAAA;EAQ1B,IAAMC,cAAiB,GAAAC,OAAA,CACrB,YAAA;IAAA,OAAO;MACLjB,cAAcJ,QAAS,CAAAI,YAAA;MACvBC,SAASL,QAAS,CAAAK,OAAA;AAClBiB,MAAAA,SAAA,EAAWtB,SAASsB,SAAa,IAAA,EAAA;KACnC,CAAA;AAAA,GAAA,EACA,CAACtB,QAAS,CAAAI,YAAA,EAAcJ,QAAS,CAAAK,OAAA,EAASL,SAASsB,SAAS,CAC9D,CAAA,CAAA;EAGA,IAAI,CAACH,iBAAmB,EAAA;AACtB,IAAA,sBAAQZ,KAAA,CAAAgB,aAAA,CAAAzB,uBAAA,EAAA;AAAwBE,MAAAA,QAAA,EAAAA,QAAAA;AAAoB,KAAA,CAAA,CAAA;AACtD,GAAA;AAEA,EAAA,sBACGO,KAAA,CAAAgB,aAAA,CAAAC,sBAAA,EAAA;IAAuBC,eAAezB,QAAS,CAAAI,YAAA;AAAcsB,IAAAA,SAAU,EAAA,kBAAA;AAAA,GAAA,iBACrEnB,KAAA,CAAAgB,aAAA,CAAAJ,iBAAA,EAAAQ,aAAA,CAAA,EAAA,EAAsBP,cAAA,CAAgB,CACzC,CAAA,CAAA;AAEJ,CAAA,EACA,UAACQ,WAAWC,SAAc,EAAA;EAExB,IAAID,SAAU,CAAA5B,QAAA,CAASI,YAAiB,KAAAyB,SAAA,CAAU7B,SAASI,YAAc,EAAA;AAChE,IAAA,OAAA,KAAA,CAAA;AACT,GAAA;EAEA,IAAIwB,SAAU,CAAA5B,QAAA,CAASsB,SAAc,KAAAO,SAAA,CAAU7B,SAASsB,SAAW,EAAA;AAC1D,IAAA,OAAA,KAAA,CAAA;AACT,GAAA;EAEA,IAAIM,SAAU,CAAA5B,QAAA,CAASK,OAAY,KAAAwB,SAAA,CAAU7B,SAASK,OAAS,EAAA;AACtD,IAAA,OAAA,IAAA,CAAA;AACT,GAAA;AAGA,EAAA,OAAOyB,QAAQF,SAAU,CAAA5B,QAAA,CAASK,OAAS,EAAAwB,SAAA,CAAU7B,SAASK,OAAO,CAAA,CAAA;AACvE,CACF,EAAA;AAEAC,gBAAA,CAAiByB,WAAc,GAAA,kBAAA;;;;"}
@@ -8,9 +8,9 @@ import './toolcall/index.js';
8
8
  import './activity/index.js';
9
9
  export { AgentStateProvider } from './provider/agent-state.js';
10
10
  export { isNonInteractive, isNonInteractiveConfig } from './toolcall/types.js';
11
- export { agentToolcallRegistry } from './toolcall/registry.js';
12
11
  export { ToolCallRenderer, withAgentStateToolcall, withAgentStateToolcall1 } from './toolcall/render.js';
13
- export { activityRegistry } from './activity/registry.js';
12
+ export { TOOLCALL_EVENT_DETAIL_KEY, TOOLCALL_REGISTERED_EVENT, agentToolcallRegistry } from './toolcall/registry.js';
13
+ export { ACTIVITY_EVENT_DETAIL_KEY, ACTIVITY_REGISTERED_EVENT, activityRegistry } from './activity/registry.js';
14
14
  export { ActivityRenderer } from './activity/render.js';
15
15
  import './activity/types.js';
16
16
  import 'react';
@@ -18,12 +18,16 @@ import '../hooks/useAgentState.js';
18
18
  import '@babel/runtime/helpers/defineProperty';
19
19
  import '@babel/runtime/helpers/slicedToArray';
20
20
  import 'tdesign-web-components/lib/chat-engine';
21
+ import '@babel/runtime/helpers/asyncToGenerator';
22
+ import '@babel/runtime/regenerator';
23
+ import './shared/index.js';
24
+ import './shared/createRegistry.js';
25
+ import './shared/ComponentErrorBoundary.js';
21
26
  import '@babel/runtime/helpers/classCallCheck';
22
27
  import '@babel/runtime/helpers/createClass';
23
- import '@babel/runtime/helpers/asyncToGenerator';
24
28
  import '@babel/runtime/helpers/possibleConstructorReturn';
25
29
  import '@babel/runtime/helpers/getPrototypeOf';
26
30
  import '@babel/runtime/helpers/inherits';
27
- import '@babel/runtime/regenerator';
31
+ import './shared/useRegistrationListener.js';
28
32
  import 'react-fast-compare';
29
33
  //# 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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}