@tdesign-react/chat 1.0.2-alpha.9 → 1.1.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (303) hide show
  1. package/es/_chunks/dep-f2051ebd.js +839 -0
  2. package/es/_chunks/dep-f2051ebd.js.map +1 -0
  3. package/es/_util/reactify.js +1 -1
  4. package/es/_util/useDynamicStyle.js +1 -1
  5. package/es/attachments/index.js +1 -1
  6. package/es/chat-actionbar/index.js +1 -1
  7. package/es/chat-engine/components/a2ui/A2UIActivityRenderer.d.ts +196 -0
  8. package/es/chat-engine/components/a2ui/A2UIActivityRenderer.js +301 -0
  9. package/es/chat-engine/components/a2ui/A2UIActivityRenderer.js.map +1 -0
  10. package/es/chat-engine/components/a2ui/A2UIComponentRenderer.d.ts +37 -0
  11. package/es/chat-engine/components/a2ui/A2UIComponentRenderer.js +116 -0
  12. package/es/chat-engine/components/a2ui/A2UIComponentRenderer.js.map +1 -0
  13. package/es/chat-engine/components/a2ui/A2UIErrorBoundary.d.ts +42 -0
  14. package/es/chat-engine/components/a2ui/A2UIErrorBoundary.js +113 -0
  15. package/es/chat-engine/components/a2ui/A2UIErrorBoundary.js.map +1 -0
  16. package/es/chat-engine/components/a2ui/A2UISkeleton.d.ts +60 -0
  17. package/es/chat-engine/components/a2ui/A2UISkeleton.js +197 -0
  18. package/es/chat-engine/components/a2ui/A2UISkeleton.js.map +1 -0
  19. package/es/chat-engine/components/a2ui/A2UISurfaceRenderer.d.ts +44 -0
  20. package/es/chat-engine/components/a2ui/A2UISurfaceRenderer.js +139 -0
  21. package/es/chat-engine/components/a2ui/A2UISurfaceRenderer.js.map +1 -0
  22. package/es/chat-engine/components/a2ui/containers/A2UICard.d.ts +22 -0
  23. package/es/chat-engine/components/a2ui/containers/A2UICard.js +82 -0
  24. package/es/chat-engine/components/a2ui/containers/A2UICard.js.map +1 -0
  25. package/es/chat-engine/components/a2ui/containers/A2UIColumn.d.ts +18 -0
  26. package/es/chat-engine/components/a2ui/containers/A2UIColumn.js +81 -0
  27. package/es/chat-engine/components/a2ui/containers/A2UIColumn.js.map +1 -0
  28. package/es/chat-engine/components/a2ui/containers/A2UIList.d.ts +14 -0
  29. package/es/chat-engine/components/a2ui/containers/A2UIList.js +62 -0
  30. package/es/chat-engine/components/a2ui/containers/A2UIList.js.map +1 -0
  31. package/es/chat-engine/components/a2ui/containers/A2UIRow.d.ts +20 -0
  32. package/es/chat-engine/components/a2ui/containers/A2UIRow.js +84 -0
  33. package/es/chat-engine/components/a2ui/containers/A2UIRow.js.map +1 -0
  34. package/es/chat-engine/components/a2ui/containers/A2UITabs.d.ts +14 -0
  35. package/es/chat-engine/components/a2ui/containers/A2UITabs.js +69 -0
  36. package/es/chat-engine/components/a2ui/containers/A2UITabs.js.map +1 -0
  37. package/es/chat-engine/components/a2ui/containers/index.d.ts +8 -0
  38. package/es/chat-engine/components/a2ui/containers/index.js +30 -0
  39. package/es/chat-engine/components/a2ui/containers/index.js.map +1 -0
  40. package/es/chat-engine/components/a2ui/index.d.ts +11 -0
  41. package/es/chat-engine/components/a2ui/index.js +62 -0
  42. package/es/chat-engine/components/a2ui/index.js.map +1 -0
  43. package/es/chat-engine/components/a2ui/primitives/A2UIButton.d.ts +33 -0
  44. package/es/chat-engine/components/a2ui/primitives/A2UIButton.js +80 -0
  45. package/es/chat-engine/components/a2ui/primitives/A2UIButton.js.map +1 -0
  46. package/es/chat-engine/components/a2ui/primitives/A2UICheckBox.d.ts +12 -0
  47. package/es/chat-engine/components/a2ui/primitives/A2UICheckBox.js +43 -0
  48. package/es/chat-engine/components/a2ui/primitives/A2UICheckBox.js.map +1 -0
  49. package/es/chat-engine/components/a2ui/primitives/A2UICheckboxGroup.d.ts +50 -0
  50. package/es/chat-engine/components/a2ui/primitives/A2UICheckboxGroup.js +54 -0
  51. package/es/chat-engine/components/a2ui/primitives/A2UICheckboxGroup.js.map +1 -0
  52. package/es/chat-engine/components/a2ui/primitives/A2UIChoicePicker.d.ts +13 -0
  53. package/es/chat-engine/components/a2ui/primitives/A2UIChoicePicker.js +89 -0
  54. package/es/chat-engine/components/a2ui/primitives/A2UIChoicePicker.js.map +1 -0
  55. package/es/chat-engine/components/a2ui/primitives/A2UIDivider.d.ts +12 -0
  56. package/es/chat-engine/components/a2ui/primitives/A2UIDivider.js +25 -0
  57. package/es/chat-engine/components/a2ui/primitives/A2UIDivider.js.map +1 -0
  58. package/es/chat-engine/components/a2ui/primitives/A2UIIcon.d.ts +13 -0
  59. package/es/chat-engine/components/a2ui/primitives/A2UIIcon.js +138942 -0
  60. package/es/chat-engine/components/a2ui/primitives/A2UIIcon.js.map +1 -0
  61. package/es/chat-engine/components/a2ui/primitives/A2UIImage.d.ts +12 -0
  62. package/es/chat-engine/components/a2ui/primitives/A2UIImage.js +75 -0
  63. package/es/chat-engine/components/a2ui/primitives/A2UIImage.js.map +1 -0
  64. package/es/chat-engine/components/a2ui/primitives/A2UIInput.d.ts +20 -0
  65. package/es/chat-engine/components/a2ui/primitives/A2UIInput.js +63 -0
  66. package/es/chat-engine/components/a2ui/primitives/A2UIInput.js.map +1 -0
  67. package/es/chat-engine/components/a2ui/primitives/A2UIRadioGroup.d.ts +56 -0
  68. package/es/chat-engine/components/a2ui/primitives/A2UIRadioGroup.js +64 -0
  69. package/es/chat-engine/components/a2ui/primitives/A2UIRadioGroup.js.map +1 -0
  70. package/es/chat-engine/components/a2ui/primitives/A2UISlider.d.ts +12 -0
  71. package/es/chat-engine/components/a2ui/primitives/A2UISlider.js +55 -0
  72. package/es/chat-engine/components/a2ui/primitives/A2UISlider.js.map +1 -0
  73. package/es/chat-engine/components/a2ui/primitives/A2UIText.d.ts +12 -0
  74. package/es/chat-engine/components/a2ui/primitives/A2UIText.js +104 -0
  75. package/es/chat-engine/components/a2ui/primitives/A2UIText.js.map +1 -0
  76. package/es/chat-engine/components/a2ui/primitives/A2UITextField.d.ts +12 -0
  77. package/es/chat-engine/components/a2ui/primitives/A2UITextField.js +80 -0
  78. package/es/chat-engine/components/a2ui/primitives/A2UITextField.js.map +1 -0
  79. package/es/chat-engine/components/a2ui/primitives/index.d.ts +15 -0
  80. package/es/chat-engine/components/a2ui/primitives/index.js +39 -0
  81. package/es/chat-engine/components/a2ui/primitives/index.js.map +1 -0
  82. package/es/chat-engine/components/a2ui/registry.d.ts +35 -0
  83. package/es/chat-engine/components/a2ui/registry.js +74 -0
  84. package/es/chat-engine/components/a2ui/registry.js.map +1 -0
  85. package/es/chat-engine/components/activity/index.js +1 -1
  86. package/es/chat-engine/components/activity/registry.d.ts +1 -1
  87. package/es/chat-engine/components/activity/registry.js +1 -1
  88. package/es/chat-engine/components/activity/registry.js.map +1 -1
  89. package/es/chat-engine/components/activity/render.d.ts +2 -2
  90. package/es/chat-engine/components/activity/render.js +1 -1
  91. package/es/chat-engine/components/activity/render.js.map +1 -1
  92. package/es/chat-engine/components/activity/types.js +1 -1
  93. package/es/chat-engine/components/index.d.ts +1 -0
  94. package/es/chat-engine/components/index.js +57 -9
  95. package/es/chat-engine/components/index.js.map +1 -1
  96. package/es/chat-engine/components/json-render/A2UIJsonRenderActivityRenderer.d.ts +36 -0
  97. package/es/chat-engine/components/json-render/A2UIJsonRenderActivityRenderer.js +36 -0
  98. package/es/chat-engine/components/json-render/A2UIJsonRenderActivityRenderer.js.map +1 -0
  99. package/es/chat-engine/components/json-render/JsonRenderActivityRenderer.d.ts +46 -0
  100. package/es/chat-engine/components/json-render/JsonRenderActivityRenderer.js +36 -0
  101. package/es/chat-engine/components/json-render/JsonRenderActivityRenderer.js.map +1 -0
  102. package/es/chat-engine/components/json-render/SurfaceStateManager.d.ts +113 -0
  103. package/es/chat-engine/components/json-render/SurfaceStateManager.js +195 -0
  104. package/es/chat-engine/components/json-render/SurfaceStateManager.js.map +1 -0
  105. package/es/chat-engine/components/json-render/adapters/a2ui-to-jsonrender.d.ts +49 -0
  106. package/es/chat-engine/components/json-render/adapters/a2ui-to-jsonrender.js +307 -0
  107. package/es/chat-engine/components/json-render/adapters/a2ui-to-jsonrender.js.map +1 -0
  108. package/es/chat-engine/components/json-render/adapters/a2ui-types.d.ts +96 -0
  109. package/es/chat-engine/components/json-render/adapters/a2ui-types.js +7 -0
  110. package/es/chat-engine/components/json-render/adapters/a2ui-types.js.map +1 -0
  111. package/es/chat-engine/components/json-render/adapters/index.d.ts +7 -0
  112. package/es/chat-engine/components/json-render/adapters/index.js +11 -0
  113. package/es/chat-engine/components/json-render/adapters/index.js.map +1 -0
  114. package/es/chat-engine/components/json-render/catalog/a2ui-binding.d.ts +64 -0
  115. package/es/chat-engine/components/json-render/catalog/a2ui-binding.js +36 -0
  116. package/es/chat-engine/components/json-render/catalog/a2ui-binding.js.map +1 -0
  117. package/es/chat-engine/components/json-render/catalog/a2ui-registry.d.ts +78 -0
  118. package/es/chat-engine/components/json-render/catalog/a2ui-registry.js +36 -0
  119. package/es/chat-engine/components/json-render/catalog/a2ui-registry.js.map +1 -0
  120. package/es/chat-engine/components/json-render/catalog/button.d.ts +14 -0
  121. package/es/chat-engine/components/json-render/catalog/button.js +71 -0
  122. package/es/chat-engine/components/json-render/catalog/button.js.map +1 -0
  123. package/es/chat-engine/components/json-render/catalog/card.d.ts +11 -0
  124. package/es/chat-engine/components/json-render/catalog/card.js +57 -0
  125. package/es/chat-engine/components/json-render/catalog/card.js.map +1 -0
  126. package/es/chat-engine/components/json-render/catalog/index.d.ts +127 -0
  127. package/es/chat-engine/components/json-render/catalog/index.js +36 -0
  128. package/es/chat-engine/components/json-render/catalog/index.js.map +1 -0
  129. package/es/chat-engine/components/json-render/catalog/input.d.ts +20 -0
  130. package/es/chat-engine/components/json-render/catalog/input.js +36 -0
  131. package/es/chat-engine/components/json-render/catalog/input.js.map +1 -0
  132. package/es/chat-engine/components/json-render/catalog/layout.d.ts +44 -0
  133. package/es/chat-engine/components/json-render/catalog/layout.js +129 -0
  134. package/es/chat-engine/components/json-render/catalog/layout.js.map +1 -0
  135. package/es/chat-engine/components/json-render/catalog/text.d.ts +11 -0
  136. package/es/chat-engine/components/json-render/catalog/text.js +31 -0
  137. package/es/chat-engine/components/json-render/catalog/text.js.map +1 -0
  138. package/es/chat-engine/components/json-render/catalog.d.ts +549 -0
  139. package/es/chat-engine/components/json-render/catalog.js +147 -0
  140. package/es/chat-engine/components/json-render/catalog.js.map +1 -0
  141. package/es/chat-engine/components/json-render/config.d.ts +154 -0
  142. package/es/chat-engine/components/json-render/config.js +36 -0
  143. package/es/chat-engine/components/json-render/config.js.map +1 -0
  144. package/es/chat-engine/components/json-render/contexts/actions.d.ts +74 -0
  145. package/es/chat-engine/components/json-render/contexts/actions.js +290 -0
  146. package/es/chat-engine/components/json-render/contexts/actions.js.map +1 -0
  147. package/es/chat-engine/components/json-render/contexts/data.d.ts +45 -0
  148. package/es/chat-engine/components/json-render/contexts/data.js +104 -0
  149. package/es/chat-engine/components/json-render/contexts/data.js.map +1 -0
  150. package/es/chat-engine/components/json-render/contexts/validation.d.ts +59 -0
  151. package/es/chat-engine/components/json-render/contexts/validation.js +151 -0
  152. package/es/chat-engine/components/json-render/contexts/validation.js.map +1 -0
  153. package/es/chat-engine/components/json-render/contexts/visibility.d.ts +29 -0
  154. package/es/chat-engine/components/json-render/contexts/visibility.js +56 -0
  155. package/es/chat-engine/components/json-render/contexts/visibility.js.map +1 -0
  156. package/es/chat-engine/components/json-render/engine.d.ts +58 -0
  157. package/es/chat-engine/components/json-render/engine.js +88 -0
  158. package/es/chat-engine/components/json-render/engine.js.map +1 -0
  159. package/es/chat-engine/components/json-render/index.d.ts +34 -0
  160. package/es/chat-engine/components/json-render/index.js +36 -0
  161. package/es/chat-engine/components/json-render/index.js.map +1 -0
  162. package/es/chat-engine/components/json-render/performance.d.ts +91 -0
  163. package/es/chat-engine/components/json-render/performance.js +135 -0
  164. package/es/chat-engine/components/json-render/performance.js.map +1 -0
  165. package/es/chat-engine/components/json-render/renderer.d.ts +71 -0
  166. package/es/chat-engine/components/json-render/renderer.js +124 -0
  167. package/es/chat-engine/components/json-render/renderer.js.map +1 -0
  168. package/es/chat-engine/components/json-render/types.d.ts +69 -0
  169. package/es/chat-engine/components/json-render/types.js +7 -0
  170. package/es/chat-engine/components/json-render/types.js.map +1 -0
  171. package/es/chat-engine/components/provider/agent-state.js +39 -2
  172. package/es/chat-engine/components/provider/agent-state.js.map +1 -1
  173. package/es/chat-engine/components/toolcall/index.js +32 -2
  174. package/es/chat-engine/components/toolcall/index.js.map +1 -1
  175. package/es/chat-engine/components/toolcall/registry.js +1 -1
  176. package/es/chat-engine/components/toolcall/render.d.ts +1 -1
  177. package/es/chat-engine/components/toolcall/render.js +33 -4
  178. package/es/chat-engine/components/toolcall/render.js.map +1 -1
  179. package/es/chat-engine/components/toolcall/types.js +1 -1
  180. package/es/chat-engine/core/a2ui/index.d.ts +10 -0
  181. package/es/chat-engine/core/a2ui/index.js +24 -0
  182. package/es/chat-engine/core/a2ui/index.js.map +1 -0
  183. package/es/chat-engine/core/a2ui/processor/A2uiMessageProcessor.d.ts +197 -0
  184. package/es/chat-engine/core/a2ui/processor/A2uiMessageProcessor.js +438 -0
  185. package/es/chat-engine/core/a2ui/processor/A2uiMessageProcessor.js.map +1 -0
  186. package/es/chat-engine/core/a2ui/processor/ComponentTree.d.ts +53 -0
  187. package/es/chat-engine/core/a2ui/processor/ComponentTree.js +158 -0
  188. package/es/chat-engine/core/a2ui/processor/ComponentTree.js.map +1 -0
  189. package/es/chat-engine/core/a2ui/processor/DataStore.d.ts +63 -0
  190. package/es/chat-engine/core/a2ui/processor/DataStore.js +172 -0
  191. package/es/chat-engine/core/a2ui/processor/DataStore.js.map +1 -0
  192. package/es/chat-engine/core/a2ui/processor/PathResolver.d.ts +47 -0
  193. package/es/chat-engine/core/a2ui/processor/PathResolver.js +99 -0
  194. package/es/chat-engine/core/a2ui/processor/PathResolver.js.map +1 -0
  195. package/es/chat-engine/core/a2ui/types/index.d.ts +4 -0
  196. package/es/chat-engine/core/a2ui/types/index.js +9 -0
  197. package/es/chat-engine/core/a2ui/types/index.js.map +1 -0
  198. package/es/chat-engine/core/a2ui/types/types.d.ts +770 -0
  199. package/es/chat-engine/core/a2ui/types/types.js +104 -0
  200. package/es/chat-engine/core/a2ui/types/types.js.map +1 -0
  201. package/es/chat-engine/core/a2ui/utils/binding.d.ts +34 -0
  202. package/es/chat-engine/core/a2ui/utils/binding.js +1784 -0
  203. package/es/chat-engine/core/a2ui/utils/binding.js.map +1 -0
  204. package/es/chat-engine/core/a2ui/utils/index.d.ts +5 -0
  205. package/es/chat-engine/core/a2ui/utils/index.js +13 -0
  206. package/es/chat-engine/core/a2ui/utils/index.js.map +1 -0
  207. package/es/chat-engine/core/a2ui/utils/validation.d.ts +70 -0
  208. package/es/chat-engine/core/a2ui/utils/validation.js +333 -0
  209. package/es/chat-engine/core/a2ui/utils/validation.js.map +1 -0
  210. package/es/chat-engine/core/adapters/agui/activity-manager.d.ts +102 -0
  211. package/es/chat-engine/core/adapters/agui/activity-manager.js +144 -0
  212. package/es/chat-engine/core/adapters/agui/activity-manager.js.map +1 -0
  213. package/es/chat-engine/core/adapters/agui/event-mapper.d.ts +42 -2
  214. package/es/chat-engine/core/adapters/agui/event-mapper.js +90 -50
  215. package/es/chat-engine/core/adapters/agui/event-mapper.js.map +1 -1
  216. package/es/chat-engine/core/adapters/agui/events.d.ts +222 -222
  217. package/es/chat-engine/core/adapters/agui/events.js +34 -34
  218. package/es/chat-engine/core/adapters/agui/events.js.map +1 -1
  219. package/es/chat-engine/core/adapters/agui/index.d.ts +22 -2
  220. package/es/chat-engine/core/adapters/agui/index.js +34 -14
  221. package/es/chat-engine/core/adapters/agui/index.js.map +1 -1
  222. package/es/chat-engine/core/adapters/agui/state-manager.js +1 -1
  223. package/es/chat-engine/core/adapters/agui/types.d.ts +57 -56
  224. package/es/chat-engine/core/adapters/agui/types.js +5 -5
  225. package/es/chat-engine/core/adapters/agui/types.js.map +1 -1
  226. package/es/chat-engine/core/adapters/agui/utils.d.ts +9 -3
  227. package/es/chat-engine/core/adapters/agui/utils.js +23 -4
  228. package/es/chat-engine/core/adapters/agui/utils.js.map +1 -1
  229. package/es/chat-engine/core/event-bus/ChatEventBus.d.ts +88 -0
  230. package/es/chat-engine/core/event-bus/ChatEventBus.js +295 -0
  231. package/es/chat-engine/core/event-bus/ChatEventBus.js.map +1 -0
  232. package/es/chat-engine/core/event-bus/index.d.ts +5 -0
  233. package/es/chat-engine/core/event-bus/index.js +13 -0
  234. package/es/chat-engine/core/event-bus/index.js.map +1 -0
  235. package/es/chat-engine/core/event-bus/types.d.ts +230 -0
  236. package/es/chat-engine/core/event-bus/types.js +32 -0
  237. package/es/chat-engine/core/event-bus/types.js.map +1 -0
  238. package/es/chat-engine/core/index.d.ts +16 -1
  239. package/es/chat-engine/core/index.js +174 -17
  240. package/es/chat-engine/core/index.js.map +1 -1
  241. package/es/chat-engine/core/processor/index.js +1 -1
  242. package/es/chat-engine/core/server/batch-client.js +1 -1
  243. package/es/chat-engine/core/server/connection-manager.js +1 -1
  244. package/es/chat-engine/core/server/errors.js +1 -1
  245. package/es/chat-engine/core/server/index.js +1 -1
  246. package/es/chat-engine/core/server/llm-service.js +17 -15
  247. package/es/chat-engine/core/server/llm-service.js.map +1 -1
  248. package/es/chat-engine/core/server/sse-client.js +1 -1
  249. package/es/chat-engine/core/server/sse-parser.js +1 -1
  250. package/es/chat-engine/core/server/types.js +1 -1
  251. package/es/chat-engine/core/store/message.js +2 -2
  252. package/es/chat-engine/core/store/message.js.map +1 -1
  253. package/es/chat-engine/core/store/model.js +1 -1
  254. package/es/chat-engine/core/store/reactiveState.js +1 -1
  255. package/es/chat-engine/core/type.d.ts +18 -2
  256. package/es/chat-engine/core/type.js +1 -1
  257. package/es/chat-engine/core/utils/eventEmitter.js +1 -1
  258. package/es/chat-engine/core/utils/index.js +1 -1
  259. package/es/chat-engine/core/utils/logger.js +1 -1
  260. package/es/chat-engine/hooks/a2ui/A2UIContext.d.ts +90 -0
  261. package/es/chat-engine/hooks/a2ui/A2UIContext.js +97 -0
  262. package/es/chat-engine/hooks/a2ui/A2UIContext.js.map +1 -0
  263. package/es/chat-engine/hooks/a2ui/index.d.ts +12 -0
  264. package/es/chat-engine/hooks/a2ui/index.js +19 -0
  265. package/es/chat-engine/hooks/a2ui/index.js.map +1 -0
  266. package/es/chat-engine/hooks/a2ui/useA2UIAction.d.ts +40 -0
  267. package/es/chat-engine/hooks/a2ui/useA2UIAction.js +74 -0
  268. package/es/chat-engine/hooks/a2ui/useA2UIAction.js.map +1 -0
  269. package/es/chat-engine/hooks/a2ui/useA2UISurface.d.ts +36 -0
  270. package/es/chat-engine/hooks/a2ui/useA2UISurface.js +39 -0
  271. package/es/chat-engine/hooks/a2ui/useA2UISurface.js.map +1 -0
  272. package/es/chat-engine/hooks/a2ui/useDataBinding.d.ts +53 -0
  273. package/es/chat-engine/hooks/a2ui/useDataBinding.js +111 -0
  274. package/es/chat-engine/hooks/a2ui/useDataBinding.js.map +1 -0
  275. package/es/chat-engine/hooks/index.js +38 -4
  276. package/es/chat-engine/hooks/index.js.map +1 -1
  277. package/es/chat-engine/hooks/useAgentActivity.d.ts +1 -2
  278. package/es/chat-engine/hooks/useAgentActivity.js +1 -1
  279. package/es/chat-engine/hooks/useAgentActivity.js.map +1 -1
  280. package/es/chat-engine/hooks/useAgentState.js +39 -2
  281. package/es/chat-engine/hooks/useAgentState.js.map +1 -1
  282. package/es/chat-engine/hooks/useAgentToolcall.js +1 -1
  283. package/es/chat-engine/hooks/useChat.d.ts +3 -3
  284. package/es/chat-engine/hooks/useChat.js +40 -2
  285. package/es/chat-engine/hooks/useChat.js.map +1 -1
  286. package/es/chat-engine/hooks/useJsonRenderActivity.d.ts +56 -0
  287. package/es/chat-engine/hooks/useJsonRenderActivity.js +63 -0
  288. package/es/chat-engine/hooks/useJsonRenderActivity.js.map +1 -0
  289. package/es/chat-engine/index.d.ts +1 -3
  290. package/es/chat-engine/index.js +30 -8
  291. package/es/chat-engine/index.js.map +1 -1
  292. package/es/chat-filecard/index.js +1 -1
  293. package/es/chat-loading/index.js +1 -1
  294. package/es/chat-markdown/index.js +1 -1
  295. package/es/chat-message/index.js +1 -1
  296. package/es/chat-sender/index.js +1 -1
  297. package/es/chat-thinking/index.js +1 -1
  298. package/es/chatbot/docs/react-best-practice.d.ts +13 -0
  299. package/es/chatbot/index.js +1 -1
  300. package/es/index.js +27 -5
  301. package/es/index.js.map +1 -1
  302. package/es/style/index.js +1 -1
  303. package/package.json +6 -3
@@ -0,0 +1,45 @@
1
+ import { type ReactNode } from "react";
2
+ import { type DataModel, type AuthState } from "@json-render/core";
3
+ /**
4
+ * Data context value
5
+ */
6
+ export interface DataContextValue {
7
+ /** The current data model */
8
+ data: DataModel;
9
+ /** Auth state for visibility evaluation */
10
+ authState?: AuthState;
11
+ /** Get a value by path */
12
+ get: (path: string) => unknown;
13
+ /** Set a value by path */
14
+ set: (path: string, value: unknown) => void;
15
+ /** Update multiple values at once */
16
+ update: (updates: Record<string, unknown>) => void;
17
+ }
18
+ /**
19
+ * Props for DataProvider
20
+ */
21
+ export interface DataProviderProps {
22
+ /** Initial data model */
23
+ initialData?: DataModel;
24
+ /** Auth state */
25
+ authState?: AuthState;
26
+ /** Callback when data changes */
27
+ onDataChange?: (path: string, value: unknown) => void;
28
+ children: ReactNode;
29
+ }
30
+ /**
31
+ * Provider for data model context
32
+ */
33
+ export declare function DataProvider({ initialData, authState, onDataChange, children, }: DataProviderProps): import("react/jsx-runtime").JSX.Element;
34
+ /**
35
+ * Hook to access the data context
36
+ */
37
+ export declare function useData(): DataContextValue;
38
+ /**
39
+ * Hook to get a value from the data model
40
+ */
41
+ export declare function useDataValue<T>(path: string): T | undefined;
42
+ /**
43
+ * Hook to get and set a value from the data model (like useState)
44
+ */
45
+ export declare function useDataBinding<T>(path: string): [T | undefined, (value: T) => void];
@@ -0,0 +1,104 @@
1
+ /**
2
+ * tdesign v1.0.2-alpha.15
3
+ * (c) 2026 tdesign
4
+ * @license MIT
5
+ */
6
+
7
+ import _typeof from '@babel/runtime/helpers/typeof';
8
+ import _defineProperty from '@babel/runtime/helpers/defineProperty';
9
+ import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
10
+ import React, { createContext, useState, useEffect, useCallback, useMemo, useContext } from 'react';
11
+ import { getByPath, setByPath } from '@json-render/core';
12
+
13
+ "use client";
14
+ 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; }
15
+ 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; }
16
+ var DataContext = /*#__PURE__*/createContext(null);
17
+ function DataProvider(_ref) {
18
+ var _ref$initialData = _ref.initialData,
19
+ initialData = _ref$initialData === void 0 ? {} : _ref$initialData,
20
+ authState = _ref.authState,
21
+ onDataChange = _ref.onDataChange,
22
+ children = _ref.children;
23
+ var _useState = useState(initialData),
24
+ _useState2 = _slicedToArray(_useState, 2),
25
+ data = _useState2[0],
26
+ setData = _useState2[1];
27
+ useEffect(function () {
28
+ setData(function (prev) {
29
+ var next = _objectSpread({}, prev);
30
+ for (var _i = 0, _Object$entries = Object.entries(initialData); _i < _Object$entries.length; _i++) {
31
+ var _Object$entries$_i = _slicedToArray(_Object$entries[_i], 2),
32
+ key = _Object$entries$_i[0],
33
+ value2 = _Object$entries$_i[1];
34
+ if (_typeof(value2) === "object" && value2 !== null && !Array.isArray(value2) && _typeof(next[key]) === "object" && next[key] !== null) {
35
+ next[key] = _objectSpread(_objectSpread({}, next[key]), value2);
36
+ } else {
37
+ next[key] = value2;
38
+ }
39
+ }
40
+ return next;
41
+ });
42
+ }, [initialData]);
43
+ var get = useCallback(function (path) {
44
+ return getByPath(data, path);
45
+ }, [data]);
46
+ var set = useCallback(function (path, value2) {
47
+ setData(function (prev) {
48
+ var next = _objectSpread({}, prev);
49
+ setByPath(next, path, value2);
50
+ return next;
51
+ });
52
+ onDataChange === null || onDataChange === void 0 || onDataChange(path, value2);
53
+ }, [onDataChange]);
54
+ var update = useCallback(function (updates) {
55
+ setData(function (prev) {
56
+ var next = _objectSpread({}, prev);
57
+ for (var _i2 = 0, _Object$entries2 = Object.entries(updates); _i2 < _Object$entries2.length; _i2++) {
58
+ var _Object$entries2$_i = _slicedToArray(_Object$entries2[_i2], 2),
59
+ path = _Object$entries2$_i[0],
60
+ value2 = _Object$entries2$_i[1];
61
+ setByPath(next, path, value2);
62
+ onDataChange === null || onDataChange === void 0 || onDataChange(path, value2);
63
+ }
64
+ return next;
65
+ });
66
+ }, [onDataChange]);
67
+ var value = useMemo(function () {
68
+ return {
69
+ data: data,
70
+ authState: authState,
71
+ get: get,
72
+ set: set,
73
+ update: update
74
+ };
75
+ }, [data, authState, get, set, update]);
76
+ return /* @__PURE__ */React.createElement(DataContext.Provider, {
77
+ value: value
78
+ }, children);
79
+ }
80
+ function useData() {
81
+ var ctx = useContext(DataContext);
82
+ if (!ctx) {
83
+ throw new Error("useData must be used within a DataProvider");
84
+ }
85
+ return ctx;
86
+ }
87
+ function useDataValue(path) {
88
+ var _useData = useData(),
89
+ get = _useData.get;
90
+ return get(path);
91
+ }
92
+ function useDataBinding(path) {
93
+ var _useData2 = useData(),
94
+ get = _useData2.get,
95
+ set = _useData2.set;
96
+ var value = get(path);
97
+ var setValue = useCallback(function (newValue) {
98
+ return set(path, newValue);
99
+ }, [path, set]);
100
+ return [value, setValue];
101
+ }
102
+
103
+ export { DataProvider, useData, useDataBinding, useDataValue };
104
+ //# sourceMappingURL=data.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data.js","sources":["../../../../../../pro-components/chat/chat-engine/components/json-render/contexts/data.tsx"],"sourcesContent":["\"use client\";\n\nimport React, {\n createContext,\n useContext,\n useState,\n useCallback,\n useMemo,\n useEffect,\n type ReactNode,\n} from \"react\";\nimport {\n getByPath,\n setByPath,\n type DataModel,\n type AuthState,\n} from \"@json-render/core\";\n\n/**\n * Data context value\n */\nexport interface DataContextValue {\n /** The current data model */\n data: DataModel;\n /** Auth state for visibility evaluation */\n authState?: AuthState;\n /** Get a value by path */\n get: (path: string) => unknown;\n /** Set a value by path */\n set: (path: string, value: unknown) => void;\n /** Update multiple values at once */\n update: (updates: Record<string, unknown>) => void;\n}\n\nconst DataContext = createContext<DataContextValue | null>(null);\n\n/**\n * Props for DataProvider\n */\nexport interface DataProviderProps {\n /** Initial data model */\n initialData?: DataModel;\n /** Auth state */\n authState?: AuthState;\n /** Callback when data changes */\n onDataChange?: (path: string, value: unknown) => void;\n children: ReactNode;\n}\n\n/**\n * Provider for data model context\n */\nexport function DataProvider({\n initialData = {},\n authState,\n onDataChange,\n children,\n}: DataProviderProps) {\n const [data, setData] = useState<DataModel>(initialData);\n\n // Sync initialData changes into internal state\n // This allows server-driven updates (e.g., A2UI updateDataModel) to reflect in the UI\n useEffect(() => {\n setData((prev) => {\n // Deep merge initialData into current state (preserves user input)\n const next = { ...prev };\n for (const [key, value] of Object.entries(initialData)) {\n if (typeof value === 'object' && value !== null && !Array.isArray(value) && typeof next[key] === 'object' && next[key] !== null) {\n next[key] = { ...next[key] as object, ...value as object };\n } else {\n next[key] = value;\n }\n }\n return next;\n });\n }, [initialData]);\n\n const get = useCallback((path: string) => getByPath(data, path), [data]);\n\n const set = useCallback(\n (path: string, value: unknown) => {\n setData((prev) => {\n const next = { ...prev };\n setByPath(next, path, value);\n return next;\n });\n onDataChange?.(path, value);\n },\n [onDataChange],\n );\n\n const update = useCallback(\n (updates: Record<string, unknown>) => {\n setData((prev) => {\n const next = { ...prev };\n for (const [path, value] of Object.entries(updates)) {\n setByPath(next, path, value);\n onDataChange?.(path, value);\n }\n return next;\n });\n },\n [onDataChange],\n );\n\n const value = useMemo<DataContextValue>(\n () => ({\n data,\n authState,\n get,\n set,\n update,\n }),\n [data, authState, get, set, update],\n );\n\n return <DataContext.Provider value={value}>{children}</DataContext.Provider>;\n}\n\n/**\n * Hook to access the data context\n */\nexport function useData(): DataContextValue {\n const ctx = useContext(DataContext);\n if (!ctx) {\n throw new Error(\"useData must be used within a DataProvider\");\n }\n return ctx;\n}\n\n/**\n * Hook to get a value from the data model\n */\nexport function useDataValue<T>(path: string): T | undefined {\n const { get } = useData();\n return get(path) as T | undefined;\n}\n\n/**\n * Hook to get and set a value from the data model (like useState)\n */\nexport function useDataBinding<T>(\n path: string,\n): [T | undefined, (value: T) => void] {\n const { get, set } = useData();\n const value = get(path) as T | undefined;\n const setValue = useCallback(\n (newValue: T) => set(path, newValue),\n [path, set],\n );\n return [value, setValue];\n}\n"],"names":["ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","DataContext","createContext","DataProvider","_ref","_ref$initialData","initialData","authState","onDataChange","children","_useState","useState","_useState2","_slicedToArray","data","setData","useEffect","prev","next","_i","_Object$entries","entries","_Object$entries$_i","key","value","_typeof","Array","isArray","get","useCallback","path","getByPath","set","setByPath","update","updates","_i2","_Object$entries2","_Object$entries2$_i","useMemo","React","createElement","Provider","useData","ctx","useContext","Error","useDataValue","_useData","useDataBinding","_useData2","setValue","newValue"],"mappings":"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"}
@@ -0,0 +1,59 @@
1
+ import { type ReactNode } from "react";
2
+ import { type ValidationConfig, type ValidationFunction, type ValidationResult } from "@json-render/core";
3
+ /**
4
+ * Field validation state
5
+ */
6
+ export interface FieldValidationState {
7
+ /** Whether the field has been touched */
8
+ touched: boolean;
9
+ /** Whether the field has been validated */
10
+ validated: boolean;
11
+ /** Validation result */
12
+ result: ValidationResult | null;
13
+ }
14
+ /**
15
+ * Validation context value
16
+ */
17
+ export interface ValidationContextValue {
18
+ /** Custom validation functions from catalog */
19
+ customFunctions: Record<string, ValidationFunction>;
20
+ /** Validation state by field path */
21
+ fieldStates: Record<string, FieldValidationState>;
22
+ /** Validate a field */
23
+ validate: (path: string, config: ValidationConfig) => ValidationResult;
24
+ /** Mark field as touched */
25
+ touch: (path: string) => void;
26
+ /** Clear validation for a field */
27
+ clear: (path: string) => void;
28
+ /** Validate all fields */
29
+ validateAll: () => boolean;
30
+ /** Register field config */
31
+ registerField: (path: string, config: ValidationConfig) => void;
32
+ }
33
+ /**
34
+ * Props for ValidationProvider
35
+ */
36
+ export interface ValidationProviderProps {
37
+ /** Custom validation functions from catalog */
38
+ customFunctions?: Record<string, ValidationFunction>;
39
+ children: ReactNode;
40
+ }
41
+ /**
42
+ * Provider for validation
43
+ */
44
+ export declare function ValidationProvider({ customFunctions, children, }: ValidationProviderProps): import("react/jsx-runtime").JSX.Element;
45
+ /**
46
+ * Hook to access validation context
47
+ */
48
+ export declare function useValidation(): ValidationContextValue;
49
+ /**
50
+ * Hook to get validation state for a field
51
+ */
52
+ export declare function useFieldValidation(path: string, config?: ValidationConfig): {
53
+ state: FieldValidationState;
54
+ validate: () => ValidationResult;
55
+ touch: () => void;
56
+ clear: () => void;
57
+ errors: string[];
58
+ isValid: boolean;
59
+ };
@@ -0,0 +1,151 @@
1
+ /**
2
+ * tdesign v1.0.2-alpha.15
3
+ * (c) 2026 tdesign
4
+ * @license MIT
5
+ */
6
+
7
+ import _typeof from '@babel/runtime/helpers/typeof';
8
+ import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';
9
+ import _defineProperty from '@babel/runtime/helpers/defineProperty';
10
+ import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
11
+ import React, { createContext, useState, useCallback, useMemo, useContext } from 'react';
12
+ import { runValidation } from '@json-render/core';
13
+ import { useData } from './data.js';
14
+
15
+ "use client";
16
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
17
+ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
18
+ 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
+ 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
+ var ValidationContext = /*#__PURE__*/createContext(null);
21
+ function ValidationProvider(_ref) {
22
+ var _ref$customFunctions = _ref.customFunctions,
23
+ customFunctions = _ref$customFunctions === void 0 ? {} : _ref$customFunctions,
24
+ children = _ref.children;
25
+ var _useData = useData(),
26
+ data = _useData.data,
27
+ authState = _useData.authState;
28
+ var _useState = useState({}),
29
+ _useState2 = _slicedToArray(_useState, 2),
30
+ fieldStates = _useState2[0],
31
+ setFieldStates = _useState2[1];
32
+ var _useState3 = useState({}),
33
+ _useState4 = _slicedToArray(_useState3, 2),
34
+ fieldConfigs = _useState4[0],
35
+ setFieldConfigs = _useState4[1];
36
+ var registerField = useCallback(function (path, config) {
37
+ setFieldConfigs(function (prev) {
38
+ return _objectSpread(_objectSpread({}, prev), {}, _defineProperty({}, path, config));
39
+ });
40
+ }, []);
41
+ var validate = useCallback(function (path, config) {
42
+ var value2 = data[path.split("/").filter(Boolean).join(".")];
43
+ var result = runValidation(config, {
44
+ value: value2,
45
+ dataModel: data,
46
+ customFunctions: customFunctions,
47
+ authState: authState
48
+ });
49
+ setFieldStates(function (prev) {
50
+ var _prev$path$touched, _prev$path;
51
+ return _objectSpread(_objectSpread({}, prev), {}, _defineProperty({}, path, {
52
+ touched: (_prev$path$touched = (_prev$path = prev[path]) === null || _prev$path === void 0 ? void 0 : _prev$path.touched) !== null && _prev$path$touched !== void 0 ? _prev$path$touched : true,
53
+ validated: true,
54
+ result: result
55
+ }));
56
+ });
57
+ return result;
58
+ }, [data, customFunctions, authState]);
59
+ var touch = useCallback(function (path) {
60
+ setFieldStates(function (prev) {
61
+ var _prev$path$validated, _prev$path2, _prev$path$result, _prev$path3;
62
+ return _objectSpread(_objectSpread({}, prev), {}, _defineProperty({}, path, _objectSpread(_objectSpread({}, prev[path]), {}, {
63
+ touched: true,
64
+ validated: (_prev$path$validated = (_prev$path2 = prev[path]) === null || _prev$path2 === void 0 ? void 0 : _prev$path2.validated) !== null && _prev$path$validated !== void 0 ? _prev$path$validated : false,
65
+ result: (_prev$path$result = (_prev$path3 = prev[path]) === null || _prev$path3 === void 0 ? void 0 : _prev$path3.result) !== null && _prev$path$result !== void 0 ? _prev$path$result : null
66
+ })));
67
+ });
68
+ }, []);
69
+ var clear = useCallback(function (path) {
70
+ setFieldStates(function (prev) {
71
+ var _ = prev[path],
72
+ rest = _objectWithoutProperties(prev, [path].map(_toPropertyKey));
73
+ return rest;
74
+ });
75
+ }, []);
76
+ var validateAll = useCallback(function () {
77
+ var allValid = true;
78
+ for (var _i = 0, _Object$entries = Object.entries(fieldConfigs); _i < _Object$entries.length; _i++) {
79
+ var _Object$entries$_i = _slicedToArray(_Object$entries[_i], 2),
80
+ path = _Object$entries$_i[0],
81
+ config = _Object$entries$_i[1];
82
+ var result = validate(path, config);
83
+ if (!result.valid) {
84
+ allValid = false;
85
+ }
86
+ }
87
+ return allValid;
88
+ }, [fieldConfigs, validate]);
89
+ var value = useMemo(function () {
90
+ return {
91
+ customFunctions: customFunctions,
92
+ fieldStates: fieldStates,
93
+ validate: validate,
94
+ touch: touch,
95
+ clear: clear,
96
+ validateAll: validateAll,
97
+ registerField: registerField
98
+ };
99
+ }, [customFunctions, fieldStates, validate, touch, clear, validateAll, registerField]);
100
+ return /* @__PURE__ */React.createElement(ValidationContext.Provider, {
101
+ value: value
102
+ }, children);
103
+ }
104
+ function useValidation() {
105
+ var ctx = useContext(ValidationContext);
106
+ if (!ctx) {
107
+ throw new Error("useValidation must be used within a ValidationProvider");
108
+ }
109
+ return ctx;
110
+ }
111
+ function useFieldValidation(path, config) {
112
+ var _fieldStates$path, _state$result$errors, _state$result, _state$result$valid, _state$result2;
113
+ var _useValidation = useValidation(),
114
+ fieldStates = _useValidation.fieldStates,
115
+ validateField = _useValidation.validate,
116
+ touchField = _useValidation.touch,
117
+ clearField = _useValidation.clear,
118
+ registerField = _useValidation.registerField;
119
+ React.useEffect(function () {
120
+ if (config) {
121
+ registerField(path, config);
122
+ }
123
+ }, [path, config, registerField]);
124
+ var state = (_fieldStates$path = fieldStates[path]) !== null && _fieldStates$path !== void 0 ? _fieldStates$path : {
125
+ touched: false,
126
+ validated: false,
127
+ result: null
128
+ };
129
+ var validate = useCallback(function () {
130
+ return validateField(path, config !== null && config !== void 0 ? config : {
131
+ checks: []
132
+ });
133
+ }, [path, config, validateField]);
134
+ var touch = useCallback(function () {
135
+ return touchField(path);
136
+ }, [path, touchField]);
137
+ var clear = useCallback(function () {
138
+ return clearField(path);
139
+ }, [path, clearField]);
140
+ return {
141
+ state: state,
142
+ validate: validate,
143
+ touch: touch,
144
+ clear: clear,
145
+ errors: (_state$result$errors = (_state$result = state.result) === null || _state$result === void 0 ? void 0 : _state$result.errors) !== null && _state$result$errors !== void 0 ? _state$result$errors : [],
146
+ isValid: (_state$result$valid = (_state$result2 = state.result) === null || _state$result2 === void 0 ? void 0 : _state$result2.valid) !== null && _state$result$valid !== void 0 ? _state$result$valid : true
147
+ };
148
+ }
149
+
150
+ export { ValidationProvider, useFieldValidation, useValidation };
151
+ //# sourceMappingURL=validation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.js","sources":["../../../../../../pro-components/chat/chat-engine/components/json-render/contexts/validation.tsx"],"sourcesContent":["\"use client\";\n\nimport React, {\n createContext,\n useContext,\n useState,\n useCallback,\n useMemo,\n type ReactNode,\n} from \"react\";\nimport {\n runValidation,\n type ValidationConfig,\n type ValidationFunction,\n type ValidationResult,\n} from \"@json-render/core\";\nimport { useData } from \"./data\";\n\n/**\n * Field validation state\n */\nexport interface FieldValidationState {\n /** Whether the field has been touched */\n touched: boolean;\n /** Whether the field has been validated */\n validated: boolean;\n /** Validation result */\n result: ValidationResult | null;\n}\n\n/**\n * Validation context value\n */\nexport interface ValidationContextValue {\n /** Custom validation functions from catalog */\n customFunctions: Record<string, ValidationFunction>;\n /** Validation state by field path */\n fieldStates: Record<string, FieldValidationState>;\n /** Validate a field */\n validate: (path: string, config: ValidationConfig) => ValidationResult;\n /** Mark field as touched */\n touch: (path: string) => void;\n /** Clear validation for a field */\n clear: (path: string) => void;\n /** Validate all fields */\n validateAll: () => boolean;\n /** Register field config */\n registerField: (path: string, config: ValidationConfig) => void;\n}\n\nconst ValidationContext = createContext<ValidationContextValue | null>(null);\n\n/**\n * Props for ValidationProvider\n */\nexport interface ValidationProviderProps {\n /** Custom validation functions from catalog */\n customFunctions?: Record<string, ValidationFunction>;\n children: ReactNode;\n}\n\n/**\n * Provider for validation\n */\nexport function ValidationProvider({\n customFunctions = {},\n children,\n}: ValidationProviderProps) {\n const { data, authState } = useData();\n const [fieldStates, setFieldStates] = useState<\n Record<string, FieldValidationState>\n >({});\n const [fieldConfigs, setFieldConfigs] = useState<\n Record<string, ValidationConfig>\n >({});\n\n const registerField = useCallback(\n (path: string, config: ValidationConfig) => {\n setFieldConfigs((prev) => ({ ...prev, [path]: config }));\n },\n [],\n );\n\n const validate = useCallback(\n (path: string, config: ValidationConfig): ValidationResult => {\n const value = data[path.split(\"/\").filter(Boolean).join(\".\")];\n const result = runValidation(config, {\n value,\n dataModel: data,\n customFunctions,\n authState,\n });\n\n setFieldStates((prev) => ({\n ...prev,\n [path]: {\n touched: prev[path]?.touched ?? true,\n validated: true,\n result,\n },\n }));\n\n return result;\n },\n [data, customFunctions, authState],\n );\n\n const touch = useCallback((path: string) => {\n setFieldStates((prev) => ({\n ...prev,\n [path]: {\n ...prev[path],\n touched: true,\n validated: prev[path]?.validated ?? false,\n result: prev[path]?.result ?? null,\n },\n }));\n }, []);\n\n const clear = useCallback((path: string) => {\n setFieldStates((prev) => {\n const { [path]: _, ...rest } = prev;\n return rest;\n });\n }, []);\n\n const validateAll = useCallback(() => {\n let allValid = true;\n\n for (const [path, config] of Object.entries(fieldConfigs)) {\n const result = validate(path, config);\n if (!result.valid) {\n allValid = false;\n }\n }\n\n return allValid;\n }, [fieldConfigs, validate]);\n\n const value = useMemo<ValidationContextValue>(\n () => ({\n customFunctions,\n fieldStates,\n validate,\n touch,\n clear,\n validateAll,\n registerField,\n }),\n [\n customFunctions,\n fieldStates,\n validate,\n touch,\n clear,\n validateAll,\n registerField,\n ],\n );\n\n return (\n <ValidationContext.Provider value={value}>\n {children}\n </ValidationContext.Provider>\n );\n}\n\n/**\n * Hook to access validation context\n */\nexport function useValidation(): ValidationContextValue {\n const ctx = useContext(ValidationContext);\n if (!ctx) {\n throw new Error(\"useValidation must be used within a ValidationProvider\");\n }\n return ctx;\n}\n\n/**\n * Hook to get validation state for a field\n */\nexport function useFieldValidation(\n path: string,\n config?: ValidationConfig,\n): {\n state: FieldValidationState;\n validate: () => ValidationResult;\n touch: () => void;\n clear: () => void;\n errors: string[];\n isValid: boolean;\n} {\n const {\n fieldStates,\n validate: validateField,\n touch: touchField,\n clear: clearField,\n registerField,\n } = useValidation();\n\n // Register field on mount\n React.useEffect(() => {\n if (config) {\n registerField(path, config);\n }\n }, [path, config, registerField]);\n\n const state = fieldStates[path] ?? {\n touched: false,\n validated: false,\n result: null,\n };\n\n const validate = useCallback(\n () => validateField(path, config ?? { checks: [] }),\n [path, config, validateField],\n );\n\n const touch = useCallback(() => touchField(path), [path, touchField]);\n const clear = useCallback(() => clearField(path), [path, clearField]);\n\n return {\n state,\n validate,\n touch,\n clear,\n errors: state.result?.errors ?? [],\n isValid: state.result?.valid ?? true,\n };\n}\n"],"names":["_toPropertyKey","t","i","_toPrimitive","_typeof","r","e","Symbol","toPrimitive","call","TypeError","String","Number","ownKeys","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","ValidationContext","createContext","ValidationProvider","_ref","_ref$customFunctions","customFunctions","children","_useData","useData","data","authState","_useState","useState","_useState2","_slicedToArray","fieldStates","setFieldStates","_useState3","_useState4","fieldConfigs","setFieldConfigs","registerField","useCallback","path","config","prev","validate","value","split","Boolean","join","result","runValidation","dataModel","_prev$path$touched","_prev$path","touched","validated","touch","_prev$path$validated","_prev$path2","_prev$path$result","_prev$path3","clear","_","rest","_objectWithoutProperties","map","validateAll","allValid","_i","_Object$entries","entries","_Object$entries$_i","valid","useMemo","React","createElement","Provider","useValidation","ctx","useContext","Error","useFieldValidation","_fieldStates$path","_state$result$errors","_state$result","_state$result$valid","_state$result2","_useValidation","validateField","touchField","clearField","useEffect","state","checks","errors","isValid"],"mappings":";;;;;;;;;;;;;;AAAA,YAAA,CAAA;AAAA,SAAAA,cAAAC,CAAAA,CAAA,EAAAC,EAAAA,IAAAA,CAAA,GAAAC,YAAA,CAAAF,CAAA,EAAA,QAAA,CAAA,CAAA,CAAA,OAAA,QAAA,IAAAG,OAAA,CAAAF,CAAA,CAAAA,GAAAA,CAAA,GAAAA,CAAA,GAAA,EAAA,CAAA,EAAA;AAAA,SAAAC,YAAAA,CAAAF,CAAA,EAAAI,CAAA,oBAAAD,OAAA,CAAAH,CAAA,CAAAA,IAAAA,CAAAA,CAAA,SAAAA,CAAA,CAAA,CAAA,IAAAK,CAAA,GAAAL,CAAA,CAAAM,MAAA,CAAAC,WAAA,CAAA,CAAA,CAAA,IAAA,KAAA,CAAA,KAAAF,CAAA,EAAA,EAAA,IAAAJ,CAAA,GAAAI,CAAA,CAAAG,IAAA,CAAAR,CAAA,EAAAI,CAAA,IAAAD,SAAAA,CAAAA,CAAAA,CAAAA,IAAAA,QAAAA,IAAAA,OAAA,CAAAF,CAAA,UAAAA,CAAA,CAAA,CAAA,MAAA,IAAAQ,SAAA,CAAAL,8CAAAA,CAAAA,CAAAA,EAAAA,CAAAA,OAAAA,CAAAA,QAAAA,KAAAA,CAAA,GAAAM,MAAA,GAAAC,MAAA,EAAAX,CAAA,CAAA,CAAA,EAAA;AAAA,SAAAY,OAAAA,CAAAP,CAAA,EAAAD,CAAA,EAAA,EAAA,IAAAJ,CAAA,GAAAa,MAAA,CAAAC,IAAA,CAAAT,CAAA,OAAAQ,MAAA,CAAAE,qBAAA,EAAA,EAAA,IAAAC,CAAA,GAAAH,MAAA,CAAAE,qBAAA,CAAAV,CAAA,CAAA,CAAA,CAAAD,CAAA,KAAAY,CAAA,GAAAA,CAAA,CAAAC,MAAA,CAAAb,UAAAA,CAAA,EAAAS,EAAAA,OAAAA,MAAA,CAAAK,wBAAA,CAAAb,CAAA,EAAAD,CAAA,EAAAe,UAAA,CAAA,EAAA,CAAA,CAAA,EAAAnB,CAAA,CAAAoB,IAAA,CAAAC,KAAA,CAAArB,CAAA,EAAAgB,CAAA,CAAA,CAAA,EAAA,CAAA,OAAAhB,CAAA,CAAA,EAAA;AAAA,SAAAsB,cAAAjB,CAAA,EAAA,EAAA,KAAA,IAAAD,CAAA,GAAAA,CAAAA,EAAAA,CAAA,GAAAmB,SAAA,CAAAC,MAAA,EAAApB,CAAA,EAAAJ,EAAAA,EAAAA,IAAAA,CAAA,WAAAuB,SAAA,CAAAnB,CAAA,CAAAmB,GAAAA,SAAA,CAAAnB,CAAA,QAAAA,CAAA,GAAA,CAAA,GAAAQ,OAAA,CAAAC,MAAA,CAAAb,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAAyB,OAAA,CAAArB,UAAAA,CAAA,IAAAsB,eAAA,CAAArB,CAAA,EAAAD,CAAA,EAAAJ,CAAA,CAAAI,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,GAAAS,MAAA,CAAAc,yBAAA,GAAAd,MAAA,CAAAe,gBAAA,CAAAvB,CAAA,EAAAQ,MAAA,CAAAc,yBAAA,CAAA3B,CAAA,KAAAY,OAAA,CAAAC,MAAA,CAAAb,CAAA,CAAAyB,CAAAA,CAAAA,OAAA,WAAArB,CAAA,EAAA,EAAAS,MAAA,CAAAgB,cAAA,CAAAxB,CAAA,EAAAD,CAAA,EAAAS,MAAA,CAAAK,wBAAA,CAAAlB,CAAA,EAAAI,CAAA,iBAAAC,CAAA,CAAA,EAAA;AAkDA,IAAMyB,iBAAA,gBAAoBC,cAA6C,IAAI,CAAA,CAAA;AAcpE,SAASC,kBAAmBA,CAAAC,IAAA,EAGP;AAAA,EAAA,IAAAC,oBAAA,GAAAD,IAAA,CAF1BE;AAAAA,IAAAA,oDAAkB,EAAC,GAAAD,oBAAA;IACnBE,QAAA,GAAAH,IAAA,CAAAG,QAAA,CAAA;AAEA,EAAA,IAAAC,QAAA,GAA4BC,OAAQ,EAAA;IAA5BC,IAAA,GAAAF,QAAA,CAAAE,IAAA;IAAMC,SAAU,GAAAH,QAAA,CAAVG,SAAU,CAAA;AACxB,EAAA,IAAAC,SAAA,GAAsCC,QAAA,CAEpC,EAAE,CAAA;IAAAC,UAAA,GAAAC,cAAA,CAAAH,SAAA,EAAA,CAAA,CAAA;AAFGI,IAAAA,WAAa,GAAAF,UAAA,CAAA,CAAA,CAAA;AAAAG,IAAAA,cAAc,GAAAH,UAAA,CAAA,CAAA,CAAA,CAAA;AAGlC,EAAA,IAAAI,UAAA,GAAwCL,QAAA,CAEtC,EAAE,CAAA;IAAAM,UAAA,GAAAJ,cAAA,CAAAG,UAAA,EAAA,CAAA,CAAA;AAFGE,IAAAA,YAAc,GAAAD,UAAA,CAAA,CAAA,CAAA;AAAAE,IAAAA,eAAe,GAAAF,UAAA,CAAA,CAAA,CAAA,CAAA;EAIpC,IAAMG,aAAgB,GAAAC,WAAA,CACpB,UAACC,MAAcC,MAA6B,EAAA;IAC1BJ,eAAA,CAAA,UAACK;yCAAeA,EAAAA,EAAAA,+BAAOF,IAAA,EAAOC;KAAS,CAAA,CAAA;GACzD,EACA,EACF,CAAA,CAAA;EAEA,IAAME,QAAW,GAAAJ,WAAA,CACf,UAACC,MAAcC,MAA+C,EAAA;IACtDG,IAAAA,MAAAA,GAAQlB,IAAK,CAAAc,IAAA,CAAKK,KAAM,CAAA,GAAG,EAAEzC,MAAO,CAAA0C,OAAO,CAAE,CAAAC,IAAA,CAAK,GAAG,CAAA,CAAA,CAAA;AACrD,IAAA,IAAAC,MAAA,GAASC,cAAcR,MAAQ,EAAA;AACnCG,MAAAA,KAAAA,EAAAA,MAAAA;AACAM,MAAAA,SAAW,EAAAxB,IAAA;AACXJ,MAAAA,eAAA,EAAAA,eAAA;AACAK,MAAAA,SAAA,EAAAA,SAAAA;AACF,KAAC,CAAA,CAAA;IAEDM,cAAA,CAAe,UAACS,IAAU,EAAA;MAAA,IAAAS,kBAAA,EAAAC,UAAA,CAAA;MAAA,OAAA3C,aAAA,CAAAA,aAAA,CAAA,EAAA,EACrBiC,IAAA,CAAA7B,EAAAA,EAAAA,EAAAA,eAAA,CACF2B,EAAAA,EAAAA,IAAO,EAAA;QACNa,OAAA,EAAA,CAAAF,kBAAA,GAAAC,CAAAA,UAAA,GAASV,IAAK,CAAAF,IAAA,CAAA,MAAA,IAAA,IAAAY,UAAA,KAALA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,UAAA,CAAYC,OAAW,MAAA,IAAA,IAAAF,kBAAA,KAAAA,KAAAA,CAAAA,GAAAA,kBAAA,GAAA,IAAA;AAChCG,QAAAA,SAAW,EAAA,IAAA;AACXN,QAAAA,MAAA,EAAAA,MAAAA;OACF,CAAA,CAAA,CAAA;AAAA,KACA,CAAA,CAAA;AAEK,IAAA,OAAAA,MAAA,CAAA;GACT,EACA,CAACtB,IAAM,EAAAJ,eAAA,EAAiBK,SAAS,CACnC,CAAA,CAAA;AAEM,EAAA,IAAA4B,KAAA,GAAQhB,WAAY,CAAA,UAACC,IAAiB,EAAA;IAC1CP,cAAA,CAAe,UAACS,IAAU,EAAA;AAAA,MAAA,IAAAc,oBAAA,EAAAC,WAAA,EAAAC,iBAAA,EAAAC,WAAA,CAAA;AAAA,MAAA,OAAAlD,aAAA,CAAAA,aAAA,CACrBiC,EAAAA,EAAAA,IAAA,OAAA7B,eAAA,CAAA,EAAA,EACF2B,IAAO,EAAA/B,aAAA,CAAAA,aAAA,KACHiC,IAAK,CAAAF,IAAA,CAAA,CAAA,EAAA,EAAA,EAAA;AACRa,QAAAA,OAAS,EAAA,IAAA;QACTC,SAAA,EAAA,CAAAE,oBAAA,GAAAC,CAAAA,WAAA,GAAWf,IAAK,CAAAF,IAAA,CAAA,MAAA,IAAA,IAAAiB,WAAA,KAALA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,WAAA,CAAYH,SAAa,MAAA,IAAA,IAAAE,oBAAA,KAAAA,KAAAA,CAAAA,GAAAA,oBAAA,GAAA,KAAA;AACpCR,QAAAA,MAAA,GAAAU,iBAAA,GAAA,CAAAC,WAAA,GAAQjB,IAAK,CAAAF,IAAA,CAAA,cAAAmB,WAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAALA,WAAA,CAAYX,MAAU,cAAAU,iBAAA,KAAA,KAAA,CAAA,GAAAA,iBAAA,GAAA,IAAA;AAAA,OAAA,CAAA,CAAA,CAAA,CAAA;AAAA,KAEhC,CAAA,CAAA;GACJ,EAAG,EAAE,CAAA,CAAA;AAEC,EAAA,IAAAE,KAAA,GAAQrB,WAAY,CAAA,UAACC,IAAiB,EAAA;IAC1CP,cAAA,CAAe,UAACS,IAAS,EAAA;AACvB,MAAA,IAAgBmB,CAAM,GAASnB,IAAA,CAAtBF,IAAA,CAAA;QAAasB,IAAA,GAAAC,wBAAA,CAASrB,IAAA,GAAtBF,IAAA,CAAA,CAAAwB,GAAA,CAAA9E,cAAA,CAAA,CAAA,CAAA;AACF,MAAA,OAAA4E,IAAA,CAAA;AACT,KAAC,CAAA,CAAA;GACH,EAAG,EAAE,CAAA,CAAA;AAEC,EAAA,IAAAG,WAAA,GAAc1B,YAAY,YAAM;IACpC,IAAI2B,QAAW,GAAA,IAAA,CAAA;AAEf,IAAA,KAAA,IAAAC,EAAA,GAAAC,CAAAA,EAAAA,eAAA,GAA6BpE,MAAO,CAAAqE,OAAA,CAAQjC,YAAY,CAAG,EAAA+B,EAAA,GAAAC,eAAA,CAAAzD,MAAA,EAAAwD,EAAA,EAAA,EAAA;AAA3D,MAAA,IAAAG,kBAAA,GAAAvC,cAAA,CAAAqC,eAAA,CAAAD,EAAA,CAAA,EAAA,CAAA,CAAA;AAAY3B,QAAAA,IAAM,GAAA8B,kBAAA,CAAA,CAAA,CAAA;AAAA7B,QAAAA,MAAM,GAAA6B,kBAAA,CAAA,CAAA,CAAA,CAAA;AAChB,MAAA,IAAAtB,MAAA,GAASL,QAAS,CAAAH,IAAA,EAAMC,MAAM,CAAA,CAAA;AAChC,MAAA,IAAA,CAACO,OAAOuB,KAAO,EAAA;AACNL,QAAAA,QAAA,GAAA,KAAA,CAAA;AACb,OAAA;AACF,KAAA;AAEO,IAAA,OAAAA,QAAA,CAAA;AACT,GAAG,EAAA,CAAC9B,YAAc,EAAAO,QAAQ,CAAC,CAAA,CAAA;EAE3B,IAAMC,KAAQ,GAAA4B,OAAA,CACZ,YAAA;IAAA,OAAO;AACLlD,MAAAA,eAAA,EAAAA,eAAA;AACAU,MAAAA,WAAA,EAAAA,WAAA;AACAW,MAAAA,QAAA,EAAAA,QAAA;AACAY,MAAAA,KAAA,EAAAA,KAAA;AACAK,MAAAA,KAAA,EAAAA,KAAA;AACAK,MAAAA,WAAA,EAAAA,WAAA;AACA3B,MAAAA,aAAA,EAAAA,aAAAA;KACF,CAAA;AAAA,GAAA,EACA,CACEhB,eAAA,EACAU,WAAA,EACAW,QAAA,EACAY,KAAA,EACAK,KAAA,EACAK,WAAA,EACA3B,aAAA,CAEJ,CAAA,CAAA;EAGE,sBAAAmC,KAAA,CAAAC,aAAA,CAACzD,kBAAkB0D,QAAlB,EAAA;AAA2B/B,IAAAA,KAAA,EAAAA,KAAAA;GAAA,EACzBrB,QACH,CAAA,CAAA;AAEJ,CAAA;AAKO,SAASqD,aAAwCA,GAAA;AAChD,EAAA,IAAAC,GAAA,GAAMC,WAAW7D,iBAAiB,CAAA,CAAA;EACxC,IAAI,CAAC4D,GAAK,EAAA;AACF,IAAA,MAAA,IAAIE,MAAM,wDAAwD,CAAA,CAAA;AAC1E,GAAA;AACO,EAAA,OAAAF,GAAA,CAAA;AACT,CAAA;AAKgB,SAAAG,kBAAAA,CACdxC,MACAC,MAQA,EAAA;EAAA,IAAAwC,iBAAA,EAAAC,oBAAA,EAAAC,aAAA,EAAAC,mBAAA,EAAAC,cAAA,CAAA;AACM,EAAA,IAAAC,cAAA,GAMFV,aAAc,EAAA;IALhB5C,WAAA,GAAAsD,cAAA,CAAAtD,WAAA;IACUuD,aAAA,GAAAD,cAAA,CAAV3C,QAAU;IACH6C,UAAA,GAAAF,cAAA,CAAP/B,KAAO;IACAkC,UAAA,GAAAH,cAAA,CAAP1B,KAAO;IACPtB,aAAA,GAAAgD,cAAA,CAAAhD,aAAA,CAAA;EAIFmC,KAAA,CAAMiB,UAAU,YAAM;AACpB,IAAA,IAAIjD,MAAQ,EAAA;AACVH,MAAAA,aAAA,CAAcE,MAAMC,MAAM,CAAA,CAAA;AAC5B,KAAA;GACC,EAAA,CAACD,IAAM,EAAAC,MAAA,EAAQH,aAAa,CAAC,CAAA,CAAA;AAE1B,EAAA,IAAAqD,KAAA,GAAA,CAAAV,iBAAA,GAAQjD,YAAYQ,IAAS,CAAA,MAAAyC,IAAAA,IAAAA,iBAAA,KAAAA,KAAAA,CAAAA,GAAAA,iBAAA,GAAA;AACjC5B,IAAAA,OAAS,EAAA,KAAA;AACTC,IAAAA,SAAW,EAAA,KAAA;AACXN,IAAAA,MAAQ,EAAA,IAAA;GACV,CAAA;EAEA,IAAML,QAAW,GAAAJ,WAAA,CACf,YAAA;IAAA,OAAMgD,cAAc/C,IAAM,EAAAC,MAAA,KAAAA,IAAAA,IAAAA,MAAA,KAAAA,KAAAA,CAAAA,GAAAA,MAAA,GAAU;AAAEmD,MAAAA,MAAQ,EAAA,EAAA;AAAG,KAAC,CAAA,CAAA;AAAA,GAAA,EAClD,CAACpD,IAAM,EAAAC,MAAA,EAAQ8C,aAAa,CAC9B,CAAA,CAAA;EAEM,IAAAhC,KAAA,GAAQhB,YAAY,YAAA;IAAA,OAAMiD,UAAA,CAAWhD,IAAI,CAAG,CAAA;AAAA,GAAA,EAAA,CAACA,IAAM,EAAAgD,UAAU,CAAC,CAAA,CAAA;EAC9D,IAAA5B,KAAA,GAAQrB,YAAY,YAAA;IAAA,OAAMkD,UAAA,CAAWjD,IAAI,CAAG,CAAA;AAAA,GAAA,EAAA,CAACA,IAAM,EAAAiD,UAAU,CAAC,CAAA,CAAA;EAE7D,OAAA;AACLE,IAAAA,KAAA,EAAAA,KAAA;AACAhD,IAAAA,QAAA,EAAAA,QAAA;AACAY,IAAAA,KAAA,EAAAA,KAAA;AACAK,IAAAA,KAAA,EAAAA,KAAA;AACAiC,IAAAA,MAAQ,GAAAX,oBAAA,GAAA,CAAAC,aAAA,GAAAQ,KAAA,CAAM3C,MAAQ,MAAA,IAAA,IAAAmC,aAAA,KAAdA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,aAAA,CAAcU,MAAA,MAAA,IAAA,IAAAX,oBAAA,KAAAA,KAAAA,CAAAA,GAAAA,oBAAA,GAAU,EAAC;AACjCY,IAAAA,OAAA,GAAAV,mBAAA,GAAA,CAAAC,cAAA,GAASM,KAAM,CAAA3C,MAAA,MAAA,IAAA,IAAAqC,cAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAANA,cAAA,CAAcd,KAAS,cAAAa,mBAAA,KAAA,KAAA,CAAA,GAAAA,mBAAA,GAAA,IAAA;GAClC,CAAA;AACF;;;;"}
@@ -0,0 +1,29 @@
1
+ import { type ReactNode } from "react";
2
+ import { type VisibilityCondition, type VisibilityContext as CoreVisibilityContext } from "@json-render/core";
3
+ /**
4
+ * Visibility context value
5
+ */
6
+ export interface VisibilityContextValue {
7
+ /** Evaluate a visibility condition */
8
+ isVisible: (condition: VisibilityCondition | undefined) => boolean;
9
+ /** The underlying visibility context */
10
+ ctx: CoreVisibilityContext;
11
+ }
12
+ /**
13
+ * Props for VisibilityProvider
14
+ */
15
+ export interface VisibilityProviderProps {
16
+ children: ReactNode;
17
+ }
18
+ /**
19
+ * Provider for visibility evaluation
20
+ */
21
+ export declare function VisibilityProvider({ children }: VisibilityProviderProps): import("react/jsx-runtime").JSX.Element;
22
+ /**
23
+ * Hook to access visibility evaluation
24
+ */
25
+ export declare function useVisibility(): VisibilityContextValue;
26
+ /**
27
+ * Hook to check if a condition is visible
28
+ */
29
+ export declare function useIsVisible(condition: VisibilityCondition | undefined): boolean;
@@ -0,0 +1,56 @@
1
+ /**
2
+ * tdesign v1.0.2-alpha.15
3
+ * (c) 2026 tdesign
4
+ * @license MIT
5
+ */
6
+
7
+ import React, { createContext, useMemo, useContext } from 'react';
8
+ import { evaluateVisibility } from '@json-render/core';
9
+ import { useData } from './data.js';
10
+ import '@babel/runtime/helpers/typeof';
11
+ import '@babel/runtime/helpers/defineProperty';
12
+ import '@babel/runtime/helpers/slicedToArray';
13
+
14
+ "use client";
15
+ var VisibilityContext = /*#__PURE__*/createContext(null);
16
+ function VisibilityProvider(_ref) {
17
+ var children = _ref.children;
18
+ var _useData = useData(),
19
+ data = _useData.data,
20
+ authState = _useData.authState;
21
+ var ctx = useMemo(function () {
22
+ return {
23
+ dataModel: data,
24
+ authState: authState
25
+ };
26
+ }, [data, authState]);
27
+ var isVisible = useMemo(function () {
28
+ return function (condition) {
29
+ return evaluateVisibility(condition, ctx);
30
+ };
31
+ }, [ctx]);
32
+ var value = useMemo(function () {
33
+ return {
34
+ isVisible: isVisible,
35
+ ctx: ctx
36
+ };
37
+ }, [isVisible, ctx]);
38
+ return /* @__PURE__ */React.createElement(VisibilityContext.Provider, {
39
+ value: value
40
+ }, children);
41
+ }
42
+ function useVisibility() {
43
+ var ctx = useContext(VisibilityContext);
44
+ if (!ctx) {
45
+ throw new Error("useVisibility must be used within a VisibilityProvider");
46
+ }
47
+ return ctx;
48
+ }
49
+ function useIsVisible(condition) {
50
+ var _useVisibility = useVisibility(),
51
+ isVisible = _useVisibility.isVisible;
52
+ return isVisible(condition);
53
+ }
54
+
55
+ export { VisibilityProvider, useIsVisible, useVisibility };
56
+ //# sourceMappingURL=visibility.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"visibility.js","sources":["../../../../../../pro-components/chat/chat-engine/components/json-render/contexts/visibility.tsx"],"sourcesContent":["\"use client\";\n\nimport React, {\n createContext,\n useContext,\n useMemo,\n type ReactNode,\n} from \"react\";\nimport {\n evaluateVisibility,\n type VisibilityCondition,\n type VisibilityContext as CoreVisibilityContext,\n} from \"@json-render/core\";\nimport { useData } from \"./data\";\n\n/**\n * Visibility context value\n */\nexport interface VisibilityContextValue {\n /** Evaluate a visibility condition */\n isVisible: (condition: VisibilityCondition | undefined) => boolean;\n /** The underlying visibility context */\n ctx: CoreVisibilityContext;\n}\n\nconst VisibilityContext = createContext<VisibilityContextValue | null>(null);\n\n/**\n * Props for VisibilityProvider\n */\nexport interface VisibilityProviderProps {\n children: ReactNode;\n}\n\n/**\n * Provider for visibility evaluation\n */\nexport function VisibilityProvider({ children }: VisibilityProviderProps) {\n const { data, authState } = useData();\n\n const ctx: CoreVisibilityContext = useMemo(\n () => ({\n dataModel: data,\n authState,\n }),\n [data, authState],\n );\n\n const isVisible = useMemo(\n () => (condition: VisibilityCondition | undefined) =>\n evaluateVisibility(condition, ctx),\n [ctx],\n );\n\n const value = useMemo<VisibilityContextValue>(\n () => ({ isVisible, ctx }),\n [isVisible, ctx],\n );\n\n return (\n <VisibilityContext.Provider value={value}>\n {children}\n </VisibilityContext.Provider>\n );\n}\n\n/**\n * Hook to access visibility evaluation\n */\nexport function useVisibility(): VisibilityContextValue {\n const ctx = useContext(VisibilityContext);\n if (!ctx) {\n throw new Error(\"useVisibility must be used within a VisibilityProvider\");\n }\n return ctx;\n}\n\n/**\n * Hook to check if a condition is visible\n */\nexport function useIsVisible(\n condition: VisibilityCondition | undefined,\n): boolean {\n const { isVisible } = useVisibility();\n return isVisible(condition);\n}\n"],"names":["VisibilityContext","createContext","VisibilityProvider","_ref","children","_useData","useData","data","authState","ctx","useMemo","dataModel","isVisible","condition","evaluateVisibility","value","React","createElement","Provider","useVisibility","useContext","Error","useIsVisible","_useVisibility"],"mappings":";;;;;;;;;;;;;AAAA,YAAA,CAAA;AAyBA,IAAMA,iBAAA,gBAAoBC,cAA6C,IAAI,CAAA,CAAA;AAY3D,SAAAC,kBAAAA,CAAAC,IAAA,EAA0D;AAAA,EAAA,IAArCC,QAAA,GAAAD,IAAA,CAAAC,QAAA,CAAA;AACnC,EAAA,IAAAC,QAAA,GAA4BC,OAAQ,EAAA;IAA5BC,IAAA,GAAAF,QAAA,CAAAE,IAAA;IAAMC,SAAU,GAAAH,QAAA,CAAVG,SAAU,CAAA;EAExB,IAAMC,GAA6B,GAAAC,OAAA,CACjC,YAAA;IAAA,OAAO;AACLC,MAAAA,SAAW,EAAAJ,IAAA;AACXC,MAAAA,SAAA,EAAAA,SAAAA;KACF,CAAA;AAAA,GAAA,EACA,CAACD,MAAMC,SAAS,CAClB,CAAA,CAAA;EAEA,IAAMI,SAAY,GAAAF,OAAA,CAChB,YAAA;AAAA,IAAA,OAAM,UAACG,SACL,EAAA;AAAA,MAAA,OAAAC,kBAAA,CAAmBD,WAAWJ,GAAG,CAAA,CAAA;AAAA,KAAA,CAAA;GACnC,EAAA,CAACA,GAAG,CACN,CAAA,CAAA;EAEA,IAAMM,KAAQ,GAAAL,OAAA,CACZ,YAAA;IAAA,OAAO;AAAEE,MAAAA,SAAA,EAAAA,SAAA;AAAWH,MAAAA,GAAI,EAAJA,GAAAA;KAAI,CAAA;AAAA,GAAA,EACxB,CAACG,WAAWH,GAAG,CACjB,CAAA,CAAA;EAGE,sBAAAO,KAAA,CAAAC,aAAA,CAACjB,kBAAkBkB,QAAlB,EAAA;AAA2BH,IAAAA,KAAA,EAAAA,KAAAA;GAAA,EACzBX,QACH,CAAA,CAAA;AAEJ,CAAA;AAKO,SAASe,aAAwCA,GAAA;AAChD,EAAA,IAAAV,GAAA,GAAMW,WAAWpB,iBAAiB,CAAA,CAAA;EACxC,IAAI,CAACS,GAAK,EAAA;AACF,IAAA,MAAA,IAAIY,MAAM,wDAAwD,CAAA,CAAA;AAC1E,GAAA;AACO,EAAA,OAAAZ,GAAA,CAAA;AACT,CAAA;AAKO,SAASa,aACdT,SACS,EAAA;AACH,EAAA,IAAAU,cAAA,GAAgBJ,aAAc,EAAA;IAA5BP,SAAU,GAAAW,cAAA,CAAVX,SAAU,CAAA;EAClB,OAAOA,UAAUC,SAAS,CAAA,CAAA;AAC5B;;;;"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * json-render 引擎封装
3
+ * 提供高性能的增量渲染能力
4
+ */
5
+ import type { UIElement } from '@json-render/core';
6
+ import type { ComponentRegistry } from './renderer';
7
+ import type { JsonRenderSchema, DeltaInfo } from './types';
8
+ /**
9
+ * json-render 引擎管理器
10
+ * 负责 Schema 缓存、增量更新和性能优化
11
+ */
12
+ export declare class JsonRenderEngine {
13
+ private currentSchema;
14
+ private registry;
15
+ constructor(registry: ComponentRegistry);
16
+ /**
17
+ * 全量渲染
18
+ * 用于 ACTIVITY_SNAPSHOT 事件
19
+ */
20
+ setSchema(schema: JsonRenderSchema): void;
21
+ /**
22
+ * 获取当前 Schema
23
+ */
24
+ getSchema(): JsonRenderSchema | null;
25
+ /**
26
+ * 增量更新
27
+ * 用于 ACTIVITY_DELTA 事件
28
+ *
29
+ * @param newSchema 应用 JSON Patch 后的完整 Schema
30
+ * @param deltaInfo 增量信息(可选,用于进一步优化)
31
+ */
32
+ patchSchema(newSchema: JsonRenderSchema, deltaInfo?: DeltaInfo): void;
33
+ /**
34
+ * 重置引擎状态
35
+ */
36
+ reset(): void;
37
+ /**
38
+ * 获取组件注册表
39
+ */
40
+ getRegistry(): ComponentRegistry;
41
+ /**
42
+ * 更新组件注册表
43
+ */
44
+ updateRegistry(registry: ComponentRegistry): void;
45
+ /**
46
+ * 验证 Schema 是否有效
47
+ */
48
+ validateSchema(schema: JsonRenderSchema): boolean;
49
+ /**
50
+ * 提取增量元素(基于 deltaInfo)
51
+ * 用于性能优化场景
52
+ */
53
+ extractDeltaElements(schema: JsonRenderSchema, deltaInfo: DeltaInfo): Record<string, UIElement>;
54
+ }
55
+ /**
56
+ * 创建 json-render 引擎实例
57
+ */
58
+ export declare function createJsonRenderEngine(registry: ComponentRegistry): JsonRenderEngine;
@@ -0,0 +1,88 @@
1
+ /**
2
+ * tdesign v1.0.2-alpha.15
3
+ * (c) 2026 tdesign
4
+ * @license MIT
5
+ */
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
+
11
+ 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; }
12
+ 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; }
13
+ var JsonRenderEngine = /*#__PURE__*/function () {
14
+ function JsonRenderEngine(registry) {
15
+ _classCallCheck(this, JsonRenderEngine);
16
+ _defineProperty(this, "currentSchema", null);
17
+ this.registry = registry;
18
+ }
19
+ return _createClass(JsonRenderEngine, [{
20
+ key: "setSchema",
21
+ value: function setSchema(schema) {
22
+ this.currentSchema = schema;
23
+ }
24
+ }, {
25
+ key: "getSchema",
26
+ value: function getSchema() {
27
+ return this.currentSchema;
28
+ }
29
+ }, {
30
+ key: "patchSchema",
31
+ value: function patchSchema(newSchema, deltaInfo) {
32
+ if (!this.currentSchema) {
33
+ this.currentSchema = newSchema;
34
+ return;
35
+ }
36
+ this.currentSchema = newSchema;
37
+ if (deltaInfo) {
38
+ console.debug("[json-render] \u589E\u91CF\u66F4\u65B0\u8303\u56F4:", deltaInfo);
39
+ }
40
+ }
41
+ }, {
42
+ key: "reset",
43
+ value: function reset() {
44
+ this.currentSchema = null;
45
+ }
46
+ }, {
47
+ key: "getRegistry",
48
+ value: function getRegistry() {
49
+ return this.registry;
50
+ }
51
+ }, {
52
+ key: "updateRegistry",
53
+ value: function updateRegistry(registry) {
54
+ this.registry = _objectSpread(_objectSpread({}, this.registry), registry);
55
+ }
56
+ }, {
57
+ key: "validateSchema",
58
+ value: function validateSchema(schema) {
59
+ if (!schema || !schema.root || !schema.elements) {
60
+ console.error("[json-render] Schema \u9A8C\u8BC1\u5931\u8D25\uFF1A\u7F3A\u5C11 root \u6216 elements");
61
+ return false;
62
+ }
63
+ var rootElement = schema.elements[schema.root];
64
+ if (!rootElement) {
65
+ console.error("[json-render] Schema \u9A8C\u8BC1\u5931\u8D25\uFF1Aroot \u5143\u7D20\u4E0D\u5B58\u5728");
66
+ return false;
67
+ }
68
+ return true;
69
+ }
70
+ }, {
71
+ key: "extractDeltaElements",
72
+ value: function extractDeltaElements(schema, deltaInfo) {
73
+ var elementKeys = Object.keys(schema.elements);
74
+ var deltaKeys = elementKeys.slice(deltaInfo.fromIndex, deltaInfo.toIndex);
75
+ var deltaElements = {};
76
+ deltaKeys.forEach(function (key) {
77
+ deltaElements[key] = schema.elements[key];
78
+ });
79
+ return deltaElements;
80
+ }
81
+ }]);
82
+ }();
83
+ function createJsonRenderEngine(registry) {
84
+ return new JsonRenderEngine(registry);
85
+ }
86
+
87
+ export { JsonRenderEngine, createJsonRenderEngine };
88
+ //# sourceMappingURL=engine.js.map