@tdesign-react/chat 1.0.2-alpha.9 → 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.
- package/CHANGELOG.md +14 -1
- package/README.md +76 -22
- package/es/_chunks/dep-076af7c3.js +438 -0
- package/es/_chunks/dep-076af7c3.js.map +1 -0
- package/es/_chunks/dep-1007ac80.js +205 -0
- package/es/_chunks/dep-1007ac80.js.map +1 -0
- package/es/_chunks/dep-16520c2b.js +1247 -0
- package/es/_chunks/dep-16520c2b.js.map +1 -0
- package/es/_chunks/dep-1743bd61.js +438 -0
- package/es/_chunks/dep-1743bd61.js.map +1 -0
- package/es/_chunks/dep-1ca64fef.js +1247 -0
- package/es/_chunks/dep-1ca64fef.js.map +1 -0
- package/es/_chunks/dep-24472232.js +839 -0
- package/es/_chunks/dep-24472232.js.map +1 -0
- package/es/_chunks/dep-3864b369.js +839 -0
- package/es/_chunks/dep-3864b369.js.map +1 -0
- package/es/_chunks/dep-3e40d789.js +169 -0
- package/es/_chunks/dep-3e40d789.js.map +1 -0
- package/es/_chunks/dep-4dedfbef.js +438 -0
- package/es/_chunks/dep-4dedfbef.js.map +1 -0
- package/es/_chunks/dep-56f5e08e.js +448 -0
- package/es/_chunks/dep-56f5e08e.js.map +1 -0
- package/es/_chunks/dep-5b6b17d0.js +169 -0
- package/es/_chunks/dep-5b6b17d0.js.map +1 -0
- package/es/_chunks/dep-688e4aaa.js +438 -0
- package/es/_chunks/dep-688e4aaa.js.map +1 -0
- package/es/_chunks/dep-870f0d35.js +839 -0
- package/es/_chunks/dep-870f0d35.js.map +1 -0
- package/es/_chunks/dep-96eca06f.js +169 -0
- package/es/_chunks/dep-96eca06f.js.map +1 -0
- package/es/_chunks/dep-ba3bd553.js +169 -0
- package/es/_chunks/dep-ba3bd553.js.map +1 -0
- package/es/_chunks/dep-bcb234a1.js +839 -0
- package/es/_chunks/dep-bcb234a1.js.map +1 -0
- package/es/_chunks/dep-de8ac730.js +1247 -0
- package/es/_chunks/dep-de8ac730.js.map +1 -0
- package/es/_chunks/dep-e9dbff09.js +1247 -0
- package/es/_chunks/dep-e9dbff09.js.map +1 -0
- package/es/_chunks/dep-ebc4cf30.js +1247 -0
- package/es/_chunks/dep-ebc4cf30.js.map +1 -0
- package/es/_chunks/dep-f2051ebd.js +839 -0
- package/es/_chunks/dep-f2051ebd.js.map +1 -0
- package/es/_chunks/dep-f691a67e.js +438 -0
- package/es/_chunks/dep-f691a67e.js.map +1 -0
- package/es/_chunks/dep-f8016301.js +169 -0
- package/es/_chunks/dep-f8016301.js.map +1 -0
- package/es/_util/reactify.js +33 -13
- package/es/_util/reactify.js.map +1 -1
- package/es/_util/useDynamicStyle.js +1 -1
- package/es/attachments/index.js +1 -1
- package/es/chat-actionbar/index.js +1 -1
- package/es/chat-engine/components/a2ui/A2UIActivityRenderer.d.ts +196 -0
- package/es/chat-engine/components/a2ui/A2UIActivityRenderer.js +301 -0
- package/es/chat-engine/components/a2ui/A2UIActivityRenderer.js.map +1 -0
- package/es/chat-engine/components/a2ui/A2UIComponentRenderer.d.ts +37 -0
- package/es/chat-engine/components/a2ui/A2UIComponentRenderer.js +116 -0
- package/es/chat-engine/components/a2ui/A2UIComponentRenderer.js.map +1 -0
- package/es/chat-engine/components/a2ui/A2UIErrorBoundary.d.ts +42 -0
- package/es/chat-engine/components/a2ui/A2UIErrorBoundary.js +113 -0
- package/es/chat-engine/components/a2ui/A2UIErrorBoundary.js.map +1 -0
- package/es/chat-engine/components/a2ui/A2UISkeleton.d.ts +60 -0
- package/es/chat-engine/components/a2ui/A2UISkeleton.js +197 -0
- package/es/chat-engine/components/a2ui/A2UISkeleton.js.map +1 -0
- package/es/chat-engine/components/a2ui/A2UISurfaceRenderer.d.ts +44 -0
- package/es/chat-engine/components/a2ui/A2UISurfaceRenderer.js +139 -0
- package/es/chat-engine/components/a2ui/A2UISurfaceRenderer.js.map +1 -0
- package/es/chat-engine/components/a2ui/containers/A2UICard.d.ts +22 -0
- package/es/chat-engine/components/a2ui/containers/A2UICard.js +82 -0
- package/es/chat-engine/components/a2ui/containers/A2UICard.js.map +1 -0
- package/es/chat-engine/components/a2ui/containers/A2UIColumn.d.ts +18 -0
- package/es/chat-engine/components/a2ui/containers/A2UIColumn.js +81 -0
- package/es/chat-engine/components/a2ui/containers/A2UIColumn.js.map +1 -0
- package/es/chat-engine/components/a2ui/containers/A2UIList.d.ts +14 -0
- package/es/chat-engine/components/a2ui/containers/A2UIList.js +62 -0
- package/es/chat-engine/components/a2ui/containers/A2UIList.js.map +1 -0
- package/es/chat-engine/components/a2ui/containers/A2UIRow.d.ts +20 -0
- package/es/chat-engine/components/a2ui/containers/A2UIRow.js +84 -0
- package/es/chat-engine/components/a2ui/containers/A2UIRow.js.map +1 -0
- package/es/chat-engine/components/a2ui/containers/A2UITabs.d.ts +14 -0
- package/es/chat-engine/components/a2ui/containers/A2UITabs.js +69 -0
- package/es/chat-engine/components/a2ui/containers/A2UITabs.js.map +1 -0
- package/es/chat-engine/components/a2ui/containers/index.d.ts +8 -0
- package/es/chat-engine/components/a2ui/containers/index.js +30 -0
- package/es/chat-engine/components/a2ui/containers/index.js.map +1 -0
- package/es/chat-engine/components/a2ui/index.d.ts +11 -0
- package/es/chat-engine/components/a2ui/index.js +62 -0
- package/es/chat-engine/components/a2ui/index.js.map +1 -0
- package/es/chat-engine/components/a2ui/primitives/A2UIButton.d.ts +33 -0
- package/es/chat-engine/components/a2ui/primitives/A2UIButton.js +80 -0
- package/es/chat-engine/components/a2ui/primitives/A2UIButton.js.map +1 -0
- package/es/chat-engine/components/a2ui/primitives/A2UICheckBox.d.ts +12 -0
- package/es/chat-engine/components/a2ui/primitives/A2UICheckBox.js +43 -0
- package/es/chat-engine/components/a2ui/primitives/A2UICheckBox.js.map +1 -0
- package/es/chat-engine/components/a2ui/primitives/A2UICheckboxGroup.d.ts +50 -0
- package/es/chat-engine/components/a2ui/primitives/A2UICheckboxGroup.js +54 -0
- package/es/chat-engine/components/a2ui/primitives/A2UICheckboxGroup.js.map +1 -0
- package/es/chat-engine/components/a2ui/primitives/A2UIChoicePicker.d.ts +13 -0
- package/es/chat-engine/components/a2ui/primitives/A2UIChoicePicker.js +89 -0
- package/es/chat-engine/components/a2ui/primitives/A2UIChoicePicker.js.map +1 -0
- package/es/chat-engine/components/a2ui/primitives/A2UIDivider.d.ts +12 -0
- package/es/chat-engine/components/a2ui/primitives/A2UIDivider.js +25 -0
- package/es/chat-engine/components/a2ui/primitives/A2UIDivider.js.map +1 -0
- package/es/chat-engine/components/a2ui/primitives/A2UIIcon.d.ts +13 -0
- package/es/chat-engine/components/a2ui/primitives/A2UIIcon.js +138942 -0
- package/es/chat-engine/components/a2ui/primitives/A2UIIcon.js.map +1 -0
- package/es/chat-engine/components/a2ui/primitives/A2UIImage.d.ts +12 -0
- package/es/chat-engine/components/a2ui/primitives/A2UIImage.js +75 -0
- package/es/chat-engine/components/a2ui/primitives/A2UIImage.js.map +1 -0
- package/es/chat-engine/components/a2ui/primitives/A2UIInput.d.ts +20 -0
- package/es/chat-engine/components/a2ui/primitives/A2UIInput.js +63 -0
- package/es/chat-engine/components/a2ui/primitives/A2UIInput.js.map +1 -0
- package/es/chat-engine/components/a2ui/primitives/A2UIRadioGroup.d.ts +56 -0
- package/es/chat-engine/components/a2ui/primitives/A2UIRadioGroup.js +64 -0
- package/es/chat-engine/components/a2ui/primitives/A2UIRadioGroup.js.map +1 -0
- package/es/chat-engine/components/a2ui/primitives/A2UISlider.d.ts +12 -0
- package/es/chat-engine/components/a2ui/primitives/A2UISlider.js +55 -0
- package/es/chat-engine/components/a2ui/primitives/A2UISlider.js.map +1 -0
- package/es/chat-engine/components/a2ui/primitives/A2UIText.d.ts +12 -0
- package/es/chat-engine/components/a2ui/primitives/A2UIText.js +104 -0
- package/es/chat-engine/components/a2ui/primitives/A2UIText.js.map +1 -0
- package/es/chat-engine/components/a2ui/primitives/A2UITextField.d.ts +12 -0
- package/es/chat-engine/components/a2ui/primitives/A2UITextField.js +80 -0
- package/es/chat-engine/components/a2ui/primitives/A2UITextField.js.map +1 -0
- package/es/chat-engine/components/a2ui/primitives/index.d.ts +15 -0
- package/es/chat-engine/components/a2ui/primitives/index.js +39 -0
- package/es/chat-engine/components/a2ui/primitives/index.js.map +1 -0
- package/es/chat-engine/components/a2ui/registry.d.ts +35 -0
- package/es/chat-engine/components/a2ui/registry.js +74 -0
- package/es/chat-engine/components/a2ui/registry.js.map +1 -0
- package/es/chat-engine/components/activity/index.d.ts +0 -1
- package/es/chat-engine/components/activity/index.js +10 -5
- package/es/chat-engine/components/activity/index.js.map +1 -1
- package/es/chat-engine/components/activity/registry.d.ts +7 -41
- package/es/chat-engine/components/activity/registry.js +23 -77
- package/es/chat-engine/components/activity/registry.js.map +1 -1
- package/es/chat-engine/components/activity/render.d.ts +5 -1
- package/es/chat-engine/components/activity/render.js +33 -71
- package/es/chat-engine/components/activity/render.js.map +1 -1
- package/es/chat-engine/components/activity/types.d.ts +0 -3
- package/es/chat-engine/components/activity/types.js +1 -1
- package/es/chat-engine/components/index.js +16 -11
- package/es/chat-engine/components/index.js.map +1 -1
- package/es/chat-engine/components/json-render/A2UIJsonRenderActivityRenderer.d.ts +36 -0
- package/es/chat-engine/components/json-render/A2UIJsonRenderActivityRenderer.js +36 -0
- package/es/chat-engine/components/json-render/A2UIJsonRenderActivityRenderer.js.map +1 -0
- package/es/chat-engine/components/json-render/JsonRenderActivityRenderer.d.ts +46 -0
- package/es/chat-engine/components/json-render/JsonRenderActivityRenderer.js +36 -0
- package/es/chat-engine/components/json-render/JsonRenderActivityRenderer.js.map +1 -0
- package/es/chat-engine/components/json-render/SurfaceStateManager.d.ts +113 -0
- package/es/chat-engine/components/json-render/SurfaceStateManager.js +195 -0
- package/es/chat-engine/components/json-render/SurfaceStateManager.js.map +1 -0
- package/es/chat-engine/components/json-render/adapters/a2ui-to-jsonrender.d.ts +49 -0
- package/es/chat-engine/components/json-render/adapters/a2ui-to-jsonrender.js +307 -0
- package/es/chat-engine/components/json-render/adapters/a2ui-to-jsonrender.js.map +1 -0
- package/es/chat-engine/components/json-render/adapters/a2ui-types.d.ts +96 -0
- package/es/chat-engine/components/json-render/adapters/a2ui-types.js +7 -0
- package/es/chat-engine/components/json-render/adapters/a2ui-types.js.map +1 -0
- package/es/chat-engine/components/json-render/adapters/index.d.ts +7 -0
- package/es/chat-engine/components/json-render/adapters/index.js +11 -0
- package/es/chat-engine/components/json-render/adapters/index.js.map +1 -0
- package/es/chat-engine/components/json-render/catalog/a2ui-binding.d.ts +64 -0
- package/es/chat-engine/components/json-render/catalog/a2ui-binding.js +36 -0
- package/es/chat-engine/components/json-render/catalog/a2ui-binding.js.map +1 -0
- package/es/chat-engine/components/json-render/catalog/a2ui-registry.d.ts +78 -0
- package/es/chat-engine/components/json-render/catalog/a2ui-registry.js +36 -0
- package/es/chat-engine/components/json-render/catalog/a2ui-registry.js.map +1 -0
- package/es/chat-engine/components/json-render/catalog/atomic/button.d.ts +14 -0
- package/es/chat-engine/components/json-render/catalog/atomic/button.js +71 -0
- package/es/chat-engine/components/json-render/catalog/atomic/button.js.map +1 -0
- package/es/chat-engine/components/json-render/catalog/atomic/card.d.ts +11 -0
- package/es/chat-engine/components/json-render/catalog/atomic/card.js +57 -0
- package/es/chat-engine/components/json-render/catalog/atomic/card.js.map +1 -0
- package/es/chat-engine/components/json-render/catalog/atomic/input.d.ts +20 -0
- package/es/chat-engine/components/json-render/catalog/atomic/input.js +76 -0
- package/es/chat-engine/components/json-render/catalog/atomic/input.js.map +1 -0
- package/es/chat-engine/components/json-render/catalog/atomic/layout.d.ts +44 -0
- package/es/chat-engine/components/json-render/catalog/atomic/layout.js +129 -0
- package/es/chat-engine/components/json-render/catalog/atomic/layout.js.map +1 -0
- package/es/chat-engine/components/json-render/catalog/atomic/text.d.ts +11 -0
- package/es/chat-engine/components/json-render/catalog/atomic/text.js +31 -0
- package/es/chat-engine/components/json-render/catalog/atomic/text.js.map +1 -0
- package/es/chat-engine/components/json-render/catalog/button.d.ts +14 -0
- package/es/chat-engine/components/json-render/catalog/button.js +71 -0
- package/es/chat-engine/components/json-render/catalog/button.js.map +1 -0
- package/es/chat-engine/components/json-render/catalog/card.d.ts +11 -0
- package/es/chat-engine/components/json-render/catalog/card.js +57 -0
- package/es/chat-engine/components/json-render/catalog/card.js.map +1 -0
- package/es/chat-engine/components/json-render/catalog/catalog-to-prompt.d.ts +614 -0
- package/es/chat-engine/components/json-render/catalog/catalog-to-prompt.js +779 -0
- package/es/chat-engine/components/json-render/catalog/catalog-to-prompt.js.map +1 -0
- package/es/chat-engine/components/json-render/catalog/index.d.ts +128 -0
- package/es/chat-engine/components/json-render/catalog/index.js +36 -0
- package/es/chat-engine/components/json-render/catalog/index.js.map +1 -0
- package/es/chat-engine/components/json-render/catalog/input.d.ts +20 -0
- package/es/chat-engine/components/json-render/catalog/input.js +36 -0
- package/es/chat-engine/components/json-render/catalog/input.js.map +1 -0
- package/es/chat-engine/components/json-render/catalog/layout.d.ts +44 -0
- package/es/chat-engine/components/json-render/catalog/layout.js +129 -0
- package/es/chat-engine/components/json-render/catalog/layout.js.map +1 -0
- package/es/chat-engine/components/json-render/catalog/text.d.ts +11 -0
- package/es/chat-engine/components/json-render/catalog/text.js +31 -0
- package/es/chat-engine/components/json-render/catalog/text.js.map +1 -0
- package/es/chat-engine/components/json-render/catalog.d.ts +614 -0
- package/es/chat-engine/components/json-render/catalog.js +779 -0
- package/es/chat-engine/components/json-render/catalog.js.map +1 -0
- package/es/chat-engine/components/json-render/config.d.ts +154 -0
- package/es/chat-engine/components/json-render/config.js +36 -0
- package/es/chat-engine/components/json-render/config.js.map +1 -0
- package/es/chat-engine/components/json-render/contexts/actions.d.ts +79 -0
- package/es/chat-engine/components/json-render/contexts/actions.js +313 -0
- package/es/chat-engine/components/json-render/contexts/actions.js.map +1 -0
- package/es/chat-engine/components/json-render/contexts/data.d.ts +137 -0
- package/es/chat-engine/components/json-render/contexts/data.js +183 -0
- package/es/chat-engine/components/json-render/contexts/data.js.map +1 -0
- package/es/chat-engine/components/json-render/contexts/index.d.ts +4 -0
- package/es/chat-engine/components/json-render/contexts/index.js +27 -0
- package/es/chat-engine/components/json-render/contexts/index.js.map +1 -0
- package/es/chat-engine/components/json-render/contexts/store.d.ts +67 -0
- package/es/chat-engine/components/json-render/contexts/store.js +104 -0
- package/es/chat-engine/components/json-render/contexts/store.js.map +1 -0
- package/es/chat-engine/components/json-render/contexts/tree.d.ts +44 -0
- package/es/chat-engine/components/json-render/contexts/tree.js +78 -0
- package/es/chat-engine/components/json-render/contexts/tree.js.map +1 -0
- package/es/chat-engine/components/json-render/contexts/validation.d.ts +59 -0
- package/es/chat-engine/components/json-render/contexts/validation.js +159 -0
- package/es/chat-engine/components/json-render/contexts/validation.js.map +1 -0
- package/es/chat-engine/components/json-render/contexts/visibility.d.ts +39 -0
- package/es/chat-engine/components/json-render/contexts/visibility.js +66 -0
- package/es/chat-engine/components/json-render/contexts/visibility.js.map +1 -0
- package/es/chat-engine/components/json-render/engine.d.ts +58 -0
- package/es/chat-engine/components/json-render/engine.js +88 -0
- package/es/chat-engine/components/json-render/engine.js.map +1 -0
- package/es/chat-engine/components/json-render/index.d.ts +13 -0
- package/es/chat-engine/components/json-render/index.js +76 -0
- package/es/chat-engine/components/json-render/index.js.map +1 -0
- package/es/chat-engine/components/json-render/performance.d.ts +91 -0
- package/es/chat-engine/components/json-render/performance.js +135 -0
- package/es/chat-engine/components/json-render/performance.js.map +1 -0
- package/es/chat-engine/components/json-render/registry/a2ui-binding.d.ts +64 -0
- package/es/chat-engine/components/json-render/registry/a2ui-binding.js +76 -0
- package/es/chat-engine/components/json-render/registry/a2ui-binding.js.map +1 -0
- package/es/chat-engine/components/json-render/registry/a2ui-registry.d.ts +78 -0
- package/es/chat-engine/components/json-render/registry/a2ui-registry.js +76 -0
- package/es/chat-engine/components/json-render/registry/a2ui-registry.js.map +1 -0
- package/es/chat-engine/components/json-render/registry/config.d.ts +142 -0
- package/es/chat-engine/components/json-render/registry/config.js +76 -0
- package/es/chat-engine/components/json-render/registry/config.js.map +1 -0
- package/es/chat-engine/components/json-render/registry/index.d.ts +137 -0
- package/es/chat-engine/components/json-render/registry/index.js +76 -0
- package/es/chat-engine/components/json-render/registry/index.js.map +1 -0
- package/es/chat-engine/components/json-render/renderer/A2UIJsonRenderActivityRenderer.d.ts +35 -0
- package/es/chat-engine/components/json-render/renderer/A2UIJsonRenderActivityRenderer.js +271 -0
- package/es/chat-engine/components/json-render/renderer/A2UIJsonRenderActivityRenderer.js.map +1 -0
- package/es/chat-engine/components/json-render/renderer/JsonRenderActivityRenderer.d.ts +44 -0
- package/es/chat-engine/components/json-render/renderer/JsonRenderActivityRenderer.js +63 -0
- package/es/chat-engine/components/json-render/renderer/JsonRenderActivityRenderer.js.map +1 -0
- package/es/chat-engine/components/json-render/renderer/JsonUIRenderer.d.ts +44 -0
- package/es/chat-engine/components/json-render/renderer/JsonUIRenderer.js +131 -0
- package/es/chat-engine/components/json-render/renderer/JsonUIRenderer.js.map +1 -0
- package/es/chat-engine/components/json-render/renderer/_index.d.ts +71 -0
- package/es/chat-engine/components/json-render/renderer/_index.js +133 -0
- package/es/chat-engine/components/json-render/renderer/_index.js.map +1 -0
- package/es/chat-engine/components/json-render/renderer/index.d.ts +71 -0
- package/es/chat-engine/components/json-render/renderer/index.js +125 -0
- package/es/chat-engine/components/json-render/renderer/index.js.map +1 -0
- package/es/chat-engine/components/json-render/renderer.d.ts +71 -0
- package/es/chat-engine/components/json-render/renderer.js +124 -0
- package/es/chat-engine/components/json-render/renderer.js.map +1 -0
- package/es/chat-engine/components/json-render/types.d.ts +87 -0
- package/es/chat-engine/components/json-render/types.js +7 -0
- package/es/chat-engine/components/json-render/types.js.map +1 -0
- package/es/chat-engine/components/provider/agent-state.js +1 -1
- package/es/chat-engine/components/shared/ComponentErrorBoundary.d.ts +25 -0
- package/es/chat-engine/components/shared/ComponentErrorBoundary.js +58 -0
- package/es/chat-engine/components/shared/ComponentErrorBoundary.js.map +1 -0
- package/es/chat-engine/components/shared/createRegistry.d.ts +36 -0
- package/es/chat-engine/components/shared/createRegistry.js +72 -0
- package/es/chat-engine/components/shared/createRegistry.js.map +1 -0
- package/es/chat-engine/components/shared/index.d.ts +4 -0
- package/es/chat-engine/components/shared/index.js +18 -0
- package/es/chat-engine/components/shared/index.js.map +1 -0
- package/es/chat-engine/components/shared/useRegistrationListener.d.ts +22 -0
- package/es/chat-engine/components/shared/useRegistrationListener.js +45 -0
- package/es/chat-engine/components/shared/useRegistrationListener.js.map +1 -0
- package/es/chat-engine/components/toolcall/index.d.ts +1 -1
- package/es/chat-engine/components/toolcall/index.js +12 -8
- package/es/chat-engine/components/toolcall/index.js.map +1 -1
- package/es/chat-engine/components/toolcall/registry.d.ts +6 -32
- package/es/chat-engine/components/toolcall/registry.js +23 -67
- package/es/chat-engine/components/toolcall/registry.js.map +1 -1
- package/es/chat-engine/components/toolcall/render.d.ts +1 -1
- package/es/chat-engine/components/toolcall/render.js +30 -79
- package/es/chat-engine/components/toolcall/render.js.map +1 -1
- package/es/chat-engine/components/toolcall/types.js +1 -1
- package/es/chat-engine/core/a2ui/index.d.ts +10 -0
- package/es/chat-engine/core/a2ui/index.js +24 -0
- package/es/chat-engine/core/a2ui/index.js.map +1 -0
- package/es/chat-engine/core/a2ui/processor/A2uiMessageProcessor.d.ts +197 -0
- package/es/chat-engine/core/a2ui/processor/A2uiMessageProcessor.js +438 -0
- package/es/chat-engine/core/a2ui/processor/A2uiMessageProcessor.js.map +1 -0
- package/es/chat-engine/core/a2ui/processor/ComponentTree.d.ts +53 -0
- package/es/chat-engine/core/a2ui/processor/ComponentTree.js +158 -0
- package/es/chat-engine/core/a2ui/processor/ComponentTree.js.map +1 -0
- package/es/chat-engine/core/a2ui/processor/DataStore.d.ts +63 -0
- package/es/chat-engine/core/a2ui/processor/DataStore.js +172 -0
- package/es/chat-engine/core/a2ui/processor/DataStore.js.map +1 -0
- package/es/chat-engine/core/a2ui/processor/PathResolver.d.ts +47 -0
- package/es/chat-engine/core/a2ui/processor/PathResolver.js +99 -0
- package/es/chat-engine/core/a2ui/processor/PathResolver.js.map +1 -0
- package/es/chat-engine/core/a2ui/types/index.d.ts +4 -0
- package/es/chat-engine/core/a2ui/types/index.js +9 -0
- package/es/chat-engine/core/a2ui/types/index.js.map +1 -0
- package/es/chat-engine/core/a2ui/types/types.d.ts +770 -0
- package/es/chat-engine/core/a2ui/types/types.js +104 -0
- package/es/chat-engine/core/a2ui/types/types.js.map +1 -0
- package/es/chat-engine/core/a2ui/utils/binding.d.ts +34 -0
- package/es/chat-engine/core/a2ui/utils/binding.js +1784 -0
- package/es/chat-engine/core/a2ui/utils/binding.js.map +1 -0
- package/es/chat-engine/core/a2ui/utils/index.d.ts +5 -0
- package/es/chat-engine/core/a2ui/utils/index.js +13 -0
- package/es/chat-engine/core/a2ui/utils/index.js.map +1 -0
- package/es/chat-engine/core/a2ui/utils/validation.d.ts +70 -0
- package/es/chat-engine/core/a2ui/utils/validation.js +333 -0
- package/es/chat-engine/core/a2ui/utils/validation.js.map +1 -0
- package/es/chat-engine/core/adapters/a2ui/index.d.ts +10 -0
- package/es/chat-engine/core/adapters/a2ui/index.js +24 -0
- package/es/chat-engine/core/adapters/a2ui/index.js.map +1 -0
- package/es/chat-engine/core/adapters/a2ui/processor/A2uiMessageProcessor.d.ts +197 -0
- package/es/chat-engine/core/adapters/a2ui/processor/A2uiMessageProcessor.js +438 -0
- package/es/chat-engine/core/adapters/a2ui/processor/A2uiMessageProcessor.js.map +1 -0
- package/es/chat-engine/core/adapters/a2ui/processor/ComponentTree.d.ts +53 -0
- package/es/chat-engine/core/adapters/a2ui/processor/ComponentTree.js +158 -0
- package/es/chat-engine/core/adapters/a2ui/processor/ComponentTree.js.map +1 -0
- package/es/chat-engine/core/adapters/a2ui/processor/DataStore.d.ts +63 -0
- package/es/chat-engine/core/adapters/a2ui/processor/DataStore.js +172 -0
- package/es/chat-engine/core/adapters/a2ui/processor/DataStore.js.map +1 -0
- package/es/chat-engine/core/adapters/a2ui/processor/PathResolver.d.ts +47 -0
- package/es/chat-engine/core/adapters/a2ui/processor/PathResolver.js +99 -0
- package/es/chat-engine/core/adapters/a2ui/processor/PathResolver.js.map +1 -0
- package/es/chat-engine/core/adapters/a2ui/types/index.d.ts +4 -0
- package/es/chat-engine/core/adapters/a2ui/types/index.js +9 -0
- package/es/chat-engine/core/adapters/a2ui/types/index.js.map +1 -0
- package/es/chat-engine/core/adapters/a2ui/types/types.d.ts +770 -0
- package/es/chat-engine/core/adapters/a2ui/types/types.js +104 -0
- package/es/chat-engine/core/adapters/a2ui/types/types.js.map +1 -0
- package/es/chat-engine/core/adapters/a2ui/utils/binding.d.ts +34 -0
- package/es/chat-engine/core/adapters/a2ui/utils/binding.js +1784 -0
- package/es/chat-engine/core/adapters/a2ui/utils/binding.js.map +1 -0
- package/es/chat-engine/core/adapters/a2ui/utils/index.d.ts +5 -0
- package/es/chat-engine/core/adapters/a2ui/utils/index.js +13 -0
- package/es/chat-engine/core/adapters/a2ui/utils/index.js.map +1 -0
- package/es/chat-engine/core/adapters/a2ui/utils/validation.d.ts +70 -0
- package/es/chat-engine/core/adapters/a2ui/utils/validation.js +333 -0
- package/es/chat-engine/core/adapters/a2ui/utils/validation.js.map +1 -0
- package/es/chat-engine/core/adapters/agui/ActivityManager.d.ts +93 -0
- package/es/chat-engine/core/adapters/agui/ActivityManager.js +148 -0
- package/es/chat-engine/core/adapters/agui/ActivityManager.js.map +1 -0
- package/es/chat-engine/core/adapters/agui/StateManager.d.ts +99 -0
- package/es/chat-engine/core/adapters/agui/StateManager.js +172 -0
- package/es/chat-engine/core/adapters/agui/StateManager.js.map +1 -0
- package/es/chat-engine/core/adapters/agui/activity-manager.d.ts +102 -0
- package/es/chat-engine/core/adapters/agui/activity-manager.js +150 -0
- package/es/chat-engine/core/adapters/agui/activity-manager.js.map +1 -0
- package/es/chat-engine/core/adapters/agui/event-mapper.d.ts +42 -2
- package/es/chat-engine/core/adapters/agui/event-mapper.js +94 -52
- package/es/chat-engine/core/adapters/agui/event-mapper.js.map +1 -1
- package/es/chat-engine/core/adapters/agui/events.d.ts +222 -222
- package/es/chat-engine/core/adapters/agui/events.js +34 -34
- package/es/chat-engine/core/adapters/agui/events.js.map +1 -1
- package/es/chat-engine/core/adapters/agui/index.d.ts +21 -4
- package/es/chat-engine/core/adapters/agui/index.js +48 -23
- package/es/chat-engine/core/adapters/agui/index.js.map +1 -1
- package/es/chat-engine/core/adapters/agui/state-manager.js +7 -1
- package/es/chat-engine/core/adapters/agui/state-manager.js.map +1 -1
- package/es/chat-engine/core/adapters/agui/types/events.d.ts +1570 -0
- package/es/chat-engine/core/adapters/agui/types/events.js +15 -0
- package/es/chat-engine/core/adapters/agui/types/events.js.map +1 -0
- package/es/chat-engine/core/adapters/agui/types/index.d.ts +854 -0
- package/es/chat-engine/core/adapters/agui/types/index.js +279 -0
- package/es/chat-engine/core/adapters/agui/types/index.js.map +1 -0
- package/es/chat-engine/core/adapters/agui/types.d.ts +57 -56
- package/es/chat-engine/core/adapters/agui/types.js +5 -5
- package/es/chat-engine/core/adapters/agui/types.js.map +1 -1
- package/es/chat-engine/core/adapters/agui/utils.d.ts +9 -3
- package/es/chat-engine/core/adapters/agui/utils.js +23 -4
- package/es/chat-engine/core/adapters/agui/utils.js.map +1 -1
- package/es/chat-engine/core/adapters/index.d.ts +5 -0
- package/es/chat-engine/core/adapters/index.js +34 -0
- package/es/chat-engine/core/adapters/index.js.map +1 -0
- package/es/chat-engine/core/adapters/json-render/SurfaceStateManager.d.ts +114 -0
- package/es/chat-engine/core/adapters/json-render/SurfaceStateManager.js +194 -0
- package/es/chat-engine/core/adapters/json-render/SurfaceStateManager.js.map +1 -0
- package/es/chat-engine/core/adapters/json-render/a2ui-to-jsonrender.d.ts +49 -0
- package/es/chat-engine/core/adapters/json-render/a2ui-to-jsonrender.js +307 -0
- package/es/chat-engine/core/adapters/json-render/a2ui-to-jsonrender.js.map +1 -0
- package/es/chat-engine/core/adapters/json-render/engine.d.ts +58 -0
- package/es/chat-engine/core/adapters/json-render/engine.js +88 -0
- package/es/chat-engine/core/adapters/json-render/engine.js.map +1 -0
- package/es/chat-engine/core/adapters/json-render/index.d.ts +8 -0
- package/es/chat-engine/core/adapters/json-render/index.js +18 -0
- package/es/chat-engine/core/adapters/json-render/index.js.map +1 -0
- package/es/chat-engine/core/adapters/json-render/types/a2ui.d.ts +96 -0
- package/es/chat-engine/core/adapters/json-render/types/a2ui.js +7 -0
- package/es/chat-engine/core/adapters/json-render/types/a2ui.js.map +1 -0
- package/es/chat-engine/core/adapters/json-render/types/core.d.ts +49 -0
- package/es/chat-engine/core/adapters/json-render/types/core.js +7 -0
- package/es/chat-engine/core/adapters/json-render/types/core.js.map +1 -0
- package/es/chat-engine/core/adapters/json-render/types/index.d.ts +5 -0
- package/es/chat-engine/core/adapters/json-render/types/index.js +9 -0
- package/es/chat-engine/core/adapters/json-render/types/index.js.map +1 -0
- package/es/chat-engine/core/event-bus/ChatEventBus.d.ts +88 -0
- package/es/chat-engine/core/event-bus/ChatEventBus.js +295 -0
- package/es/chat-engine/core/event-bus/ChatEventBus.js.map +1 -0
- package/es/chat-engine/core/event-bus/index.d.ts +5 -0
- package/es/chat-engine/core/event-bus/index.js +13 -0
- package/es/chat-engine/core/event-bus/index.js.map +1 -0
- package/es/chat-engine/core/event-bus/types.d.ts +230 -0
- package/es/chat-engine/core/event-bus/types.js +32 -0
- package/es/chat-engine/core/event-bus/types.js.map +1 -0
- package/es/chat-engine/core/index.d.ts +17 -2
- package/es/chat-engine/core/index.js +185 -22
- package/es/chat-engine/core/index.js.map +1 -1
- package/es/chat-engine/core/processor/index.js +1 -1
- package/es/chat-engine/core/server/batch-client.js +1 -1
- package/es/chat-engine/core/server/connection-manager.js +1 -1
- package/es/chat-engine/core/server/errors.js +1 -1
- package/es/chat-engine/core/server/index.js +1 -1
- package/es/chat-engine/core/server/llm-service.js +4 -2
- package/es/chat-engine/core/server/llm-service.js.map +1 -1
- package/es/chat-engine/core/server/sse-client.js +1 -1
- package/es/chat-engine/core/server/sse-parser.js +1 -1
- package/es/chat-engine/core/server/types.js +1 -1
- package/es/chat-engine/core/store/message.js +6 -2
- package/es/chat-engine/core/store/message.js.map +1 -1
- package/es/chat-engine/core/store/model.js +2 -1
- package/es/chat-engine/core/store/model.js.map +1 -1
- package/es/chat-engine/core/store/reactiveState.d.ts +4 -0
- package/es/chat-engine/core/store/reactiveState.js +15 -1235
- package/es/chat-engine/core/store/reactiveState.js.map +1 -1
- package/es/chat-engine/core/type.d.ts +25 -1
- package/es/chat-engine/core/type.js +1 -1
- package/es/chat-engine/core/utils/eventEmitter.js +1 -1
- package/es/chat-engine/core/utils/immutable-patch.d.ts +61 -0
- package/es/chat-engine/core/utils/immutable-patch.js +147 -0
- package/es/chat-engine/core/utils/immutable-patch.js.map +1 -0
- package/es/chat-engine/core/utils/index.d.ts +7 -2
- package/es/chat-engine/core/utils/index.js +9 -883
- package/es/chat-engine/core/utils/index.js.map +1 -1
- package/es/chat-engine/core/utils/json-patch/helpers.d.ts +41 -0
- package/es/chat-engine/core/utils/json-patch/helpers.js +164 -0
- package/es/chat-engine/core/utils/json-patch/helpers.js.map +1 -0
- package/es/chat-engine/core/utils/json-patch/index.d.ts +115 -0
- package/es/chat-engine/core/utils/json-patch/index.js +387 -0
- package/es/chat-engine/core/utils/json-patch/index.js.map +1 -0
- package/es/chat-engine/core/utils/logger.js +1 -1
- package/es/chat-engine/core/utils/performance.d.ts +94 -0
- package/es/chat-engine/core/utils/performance.js +205 -0
- package/es/chat-engine/core/utils/performance.js.map +1 -0
- package/es/chat-engine/hooks/a2ui/A2UIContext.d.ts +90 -0
- package/es/chat-engine/hooks/a2ui/A2UIContext.js +97 -0
- package/es/chat-engine/hooks/a2ui/A2UIContext.js.map +1 -0
- package/es/chat-engine/hooks/a2ui/index.d.ts +12 -0
- package/es/chat-engine/hooks/a2ui/index.js +19 -0
- package/es/chat-engine/hooks/a2ui/index.js.map +1 -0
- package/es/chat-engine/hooks/a2ui/useA2UIAction.d.ts +40 -0
- package/es/chat-engine/hooks/a2ui/useA2UIAction.js +74 -0
- package/es/chat-engine/hooks/a2ui/useA2UIAction.js.map +1 -0
- package/es/chat-engine/hooks/a2ui/useA2UISurface.d.ts +36 -0
- package/es/chat-engine/hooks/a2ui/useA2UISurface.js +39 -0
- package/es/chat-engine/hooks/a2ui/useA2UISurface.js.map +1 -0
- package/es/chat-engine/hooks/a2ui/useDataBinding.d.ts +53 -0
- package/es/chat-engine/hooks/a2ui/useDataBinding.js +111 -0
- package/es/chat-engine/hooks/a2ui/useDataBinding.js.map +1 -0
- package/es/chat-engine/hooks/index.js +8 -1
- package/es/chat-engine/hooks/index.js.map +1 -1
- package/es/chat-engine/hooks/useAgentActivity.d.ts +1 -2
- package/es/chat-engine/hooks/useAgentActivity.js +10 -2
- package/es/chat-engine/hooks/useAgentActivity.js.map +1 -1
- package/es/chat-engine/hooks/useAgentState.js +1 -1
- package/es/chat-engine/hooks/useAgentState.js.map +1 -1
- package/es/chat-engine/hooks/useAgentToolcall.js +10 -2
- package/es/chat-engine/hooks/useAgentToolcall.js.map +1 -1
- package/es/chat-engine/hooks/useChat.d.ts +1 -1
- package/es/chat-engine/hooks/useChat.js +3 -3
- package/es/chat-engine/hooks/useChat.js.map +1 -1
- package/es/chat-engine/hooks/useJsonRenderActivity.d.ts +56 -0
- package/es/chat-engine/hooks/useJsonRenderActivity.js +63 -0
- package/es/chat-engine/hooks/useJsonRenderActivity.js.map +1 -0
- package/es/chat-engine/index.d.ts +2 -4
- package/es/chat-engine/index.js +14 -34
- package/es/chat-engine/index.js.map +1 -1
- package/es/chat-filecard/index.js +1 -1
- package/es/chat-loading/index.js +1 -1
- package/es/chat-markdown/index.js +1 -1
- package/es/chat-message/index.js +1 -1
- package/es/chat-sender/index.js +1 -1
- package/es/chat-thinking/index.js +1 -1
- package/es/chatbot/docs/react-best-practice.d.ts +13 -0
- package/es/chatbot/index.js +1 -1
- package/es/index.js +13 -31
- package/es/index.js.map +1 -1
- package/es/style/index.js +1 -1
- package/package.json +10 -5
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* tdesign v1.1.0-alpha.11
|
|
3
|
+
* (c) 2026 tdesign
|
|
4
|
+
* @license MIT
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import _defineProperty from '@babel/runtime/helpers/defineProperty';
|
|
8
|
+
import _typeof from '@babel/runtime/helpers/typeof';
|
|
9
|
+
import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
|
|
10
|
+
import _classCallCheck from '@babel/runtime/helpers/classCallCheck';
|
|
11
|
+
import _createClass from '@babel/runtime/helpers/createClass';
|
|
12
|
+
import _possibleConstructorReturn from '@babel/runtime/helpers/possibleConstructorReturn';
|
|
13
|
+
import _getPrototypeOf from '@babel/runtime/helpers/getPrototypeOf';
|
|
14
|
+
import _inherits from '@babel/runtime/helpers/inherits';
|
|
15
|
+
import React, { useRef, useEffect, useCallback, useSyncExternalStore } from 'react';
|
|
16
|
+
import { p as produce } from '../../../../_chunks/dep-1ca64fef.js';
|
|
17
|
+
import { getByPath, setByPath } from '@json-render/core';
|
|
18
|
+
import { Store, createStoreContext, useStableCallback } from './store.js';
|
|
19
|
+
import '@babel/runtime/helpers/wrapNativeSuper';
|
|
20
|
+
|
|
21
|
+
"use client";
|
|
22
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
23
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
24
|
+
function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
|
|
25
|
+
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
|
|
26
|
+
var DataStore = /*#__PURE__*/function (_Store) {
|
|
27
|
+
function DataStore() {
|
|
28
|
+
var _this;
|
|
29
|
+
var initialData = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
30
|
+
var authState = arguments.length > 1 ? arguments[1] : undefined;
|
|
31
|
+
var onDataChange = arguments.length > 2 ? arguments[2] : undefined;
|
|
32
|
+
_classCallCheck(this, DataStore);
|
|
33
|
+
_this = _callSuper(this, DataStore, [{
|
|
34
|
+
data: initialData,
|
|
35
|
+
authState: authState
|
|
36
|
+
}]);
|
|
37
|
+
_this.onDataChange = onDataChange;
|
|
38
|
+
return _this;
|
|
39
|
+
}
|
|
40
|
+
_inherits(DataStore, _Store);
|
|
41
|
+
return _createClass(DataStore, [{
|
|
42
|
+
key: "getData",
|
|
43
|
+
value: function getData() {
|
|
44
|
+
return this.getState().data;
|
|
45
|
+
}
|
|
46
|
+
}, {
|
|
47
|
+
key: "getAuthState",
|
|
48
|
+
value: function getAuthState() {
|
|
49
|
+
return this.getState().authState;
|
|
50
|
+
}
|
|
51
|
+
}, {
|
|
52
|
+
key: "getByPath",
|
|
53
|
+
value: function getByPath$1(path) {
|
|
54
|
+
return getByPath(this.getState().data, path);
|
|
55
|
+
}
|
|
56
|
+
}, {
|
|
57
|
+
key: "setByPath",
|
|
58
|
+
value: function setByPath$1(path, value) {
|
|
59
|
+
var _this$onDataChange;
|
|
60
|
+
this.updateState(function (prev) {
|
|
61
|
+
return produce(prev, function (draft) {
|
|
62
|
+
setByPath(draft.data, path, value);
|
|
63
|
+
});
|
|
64
|
+
});
|
|
65
|
+
(_this$onDataChange = this.onDataChange) === null || _this$onDataChange === void 0 || _this$onDataChange.call(this, path, value);
|
|
66
|
+
}
|
|
67
|
+
}, {
|
|
68
|
+
key: "updatePaths",
|
|
69
|
+
value: function updatePaths(updates) {
|
|
70
|
+
var _this2 = this;
|
|
71
|
+
this.updateState(function (prev) {
|
|
72
|
+
return produce(prev, function (draft) {
|
|
73
|
+
for (var _i = 0, _Object$entries = Object.entries(updates); _i < _Object$entries.length; _i++) {
|
|
74
|
+
var _this2$onDataChange;
|
|
75
|
+
var _Object$entries$_i = _slicedToArray(_Object$entries[_i], 2),
|
|
76
|
+
path = _Object$entries$_i[0],
|
|
77
|
+
value = _Object$entries$_i[1];
|
|
78
|
+
setByPath(draft.data, path, value);
|
|
79
|
+
(_this2$onDataChange = _this2.onDataChange) === null || _this2$onDataChange === void 0 || _this2$onDataChange.call(_this2, path, value);
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
}, {
|
|
85
|
+
key: "mergeData",
|
|
86
|
+
value: function mergeData(newData) {
|
|
87
|
+
this.updateState(function (prev) {
|
|
88
|
+
return produce(prev, function (draft) {
|
|
89
|
+
for (var _i2 = 0, _Object$entries2 = Object.entries(newData); _i2 < _Object$entries2.length; _i2++) {
|
|
90
|
+
var _Object$entries2$_i = _slicedToArray(_Object$entries2[_i2], 2),
|
|
91
|
+
key = _Object$entries2$_i[0],
|
|
92
|
+
value = _Object$entries2$_i[1];
|
|
93
|
+
if (_typeof(value) === "object" && value !== null && !Array.isArray(value) && _typeof(draft.data[key]) === "object" && draft.data[key] !== null) {
|
|
94
|
+
Object.assign(draft.data[key], value);
|
|
95
|
+
} else {
|
|
96
|
+
draft.data[key] = value;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
});
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
}, {
|
|
103
|
+
key: "setAuthState",
|
|
104
|
+
value: function setAuthState(authState) {
|
|
105
|
+
this.updateState(function (prev) {
|
|
106
|
+
return _objectSpread(_objectSpread({}, prev), {}, {
|
|
107
|
+
authState: authState
|
|
108
|
+
});
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
}, {
|
|
112
|
+
key: "setOnDataChange",
|
|
113
|
+
value: function setOnDataChange(callback) {
|
|
114
|
+
this.onDataChange = callback;
|
|
115
|
+
}
|
|
116
|
+
}]);
|
|
117
|
+
}(Store);
|
|
118
|
+
var _createStoreContext = createStoreContext("DataStore"),
|
|
119
|
+
DataStoreProvider = _createStoreContext.Provider,
|
|
120
|
+
useDataStore = _createStoreContext.useStore,
|
|
121
|
+
useDataSelector = _createStoreContext.useSelector,
|
|
122
|
+
useDataStoreState = _createStoreContext.useStoreState;
|
|
123
|
+
function DataProvider(_ref) {
|
|
124
|
+
var _ref$initialData = _ref.initialData,
|
|
125
|
+
initialData = _ref$initialData === void 0 ? {} : _ref$initialData,
|
|
126
|
+
authState = _ref.authState,
|
|
127
|
+
onDataChange = _ref.onDataChange,
|
|
128
|
+
children = _ref.children;
|
|
129
|
+
var storeRef = useRef(null);
|
|
130
|
+
if (!storeRef.current) {
|
|
131
|
+
storeRef.current = new DataStore(initialData, authState, onDataChange);
|
|
132
|
+
}
|
|
133
|
+
var store = storeRef.current;
|
|
134
|
+
useEffect(function () {
|
|
135
|
+
store.mergeData(initialData);
|
|
136
|
+
}, [initialData, store]);
|
|
137
|
+
useEffect(function () {
|
|
138
|
+
store.setAuthState(authState);
|
|
139
|
+
}, [authState, store]);
|
|
140
|
+
useEffect(function () {
|
|
141
|
+
store.setOnDataChange(onDataChange);
|
|
142
|
+
}, [onDataChange, store]);
|
|
143
|
+
return /* @__PURE__ */React.createElement(DataStoreProvider, {
|
|
144
|
+
store: store
|
|
145
|
+
}, children);
|
|
146
|
+
}
|
|
147
|
+
function useDataValue(path) {
|
|
148
|
+
var store = useDataStore();
|
|
149
|
+
var subscribe = useCallback(function (onStoreChange) {
|
|
150
|
+
return store.subscribe(onStoreChange);
|
|
151
|
+
}, [store]);
|
|
152
|
+
var getSnapshot = useCallback(function () {
|
|
153
|
+
if (!path) return void 0;
|
|
154
|
+
return store.getByPath(path);
|
|
155
|
+
}, [store, path]);
|
|
156
|
+
return useSyncExternalStore(subscribe, getSnapshot, getSnapshot);
|
|
157
|
+
}
|
|
158
|
+
function useDataBinding(path) {
|
|
159
|
+
var store = useDataStore();
|
|
160
|
+
var value = useDataValue(path);
|
|
161
|
+
var setValue = useStableCallback(function (newValue) {
|
|
162
|
+
if (path) {
|
|
163
|
+
store.setByPath(path, newValue);
|
|
164
|
+
}
|
|
165
|
+
});
|
|
166
|
+
return [value, setValue];
|
|
167
|
+
}
|
|
168
|
+
function useDataUpdate() {
|
|
169
|
+
var store = useDataStore();
|
|
170
|
+
return useStableCallback(function (updates) {
|
|
171
|
+
store.updatePaths(updates);
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
function useDataState() {
|
|
175
|
+
var state = useDataStoreState();
|
|
176
|
+
return {
|
|
177
|
+
data: state.data,
|
|
178
|
+
authState: state.authState
|
|
179
|
+
};
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
export { DataProvider, DataStore, useDataBinding, useDataSelector, useDataState, useDataStore, useDataStoreState, useDataUpdate, useDataValue };
|
|
183
|
+
//# 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 useCallback,\n useEffect,\n useRef,\n useSyncExternalStore,\n type ReactNode,\n} from \"react\";\nimport { produce } from \"immer\";\nimport {\n getByPath,\n setByPath as setByPathMutable,\n type DataModel,\n type AuthState,\n} from \"@json-render/core\";\nimport { Store, createStoreContext, useStableCallback } from \"./store\";\n\n/**\n * DataStore 状态类型\n */\nexport interface DataStoreState {\n /** 数据模型 */\n data: DataModel;\n /** 认证状态 */\n authState?: AuthState;\n}\n\n/**\n * DataStore - 管理表单/组件的数据状态\n * \n * 性能优化:\n * - 使用外部 Store 模式,避免 Context 传递整个 data 导致级联重渲染\n * - 支持细粒度订阅:组件只订阅自己需要的路径\n * - 配合 Structural Sharing,通过引用比较判断变化\n */\nexport class DataStore extends Store<DataStoreState> {\n private onDataChange?: (path: string, value: unknown) => void;\n\n constructor(\n initialData: DataModel = {},\n authState?: AuthState,\n onDataChange?: (path: string, value: unknown) => void,\n ) {\n super({ data: initialData, authState });\n this.onDataChange = onDataChange;\n }\n\n /**\n * 获取数据模型\n */\n getData(): DataModel {\n return this.getState().data;\n }\n\n /**\n * 获取认证状态\n */\n getAuthState(): AuthState | undefined {\n return this.getState().authState;\n }\n\n /**\n * 通过路径获取值\n */\n getByPath(path: string): unknown {\n return getByPath(this.getState().data, path);\n }\n\n /**\n * 通过路径设置值(使用 immer 实现 Structural Sharing)\n */\n setByPath(path: string, value: unknown): void {\n this.updateState((prev) => \n produce(prev, (draft) => {\n setByPathMutable(draft.data, path, value);\n })\n );\n this.onDataChange?.(path, value);\n }\n\n /**\n * 批量更新多个路径\n */\n updatePaths(updates: Record<string, unknown>): void {\n this.updateState((prev) =>\n produce(prev, (draft) => {\n for (const [path, value] of Object.entries(updates)) {\n setByPathMutable(draft.data, path, value);\n this.onDataChange?.(path, value);\n }\n })\n );\n }\n\n /**\n * 合并新数据到现有数据\n */\n mergeData(newData: DataModel): void {\n this.updateState((prev) =>\n produce(prev, (draft) => {\n for (const [key, value] of Object.entries(newData)) {\n if (\n typeof value === \"object\" &&\n value !== null &&\n !Array.isArray(value) &&\n typeof draft.data[key] === \"object\" &&\n draft.data[key] !== null\n ) {\n Object.assign(draft.data[key] as object, value);\n } else {\n draft.data[key] = value;\n }\n }\n })\n );\n }\n\n /**\n * 更新认证状态\n */\n setAuthState(authState: AuthState | undefined): void {\n this.updateState((prev) => ({ ...prev, authState }));\n }\n\n /**\n * 设置 onDataChange 回调\n */\n setOnDataChange(callback: ((path: string, value: unknown) => void) | undefined): void {\n this.onDataChange = callback;\n }\n}\n\n// 创建 Store Context\nconst {\n Provider: DataStoreProvider,\n useStore: useDataStore,\n useSelector: useDataSelector,\n useStoreState: useDataStoreState,\n} = createStoreContext<DataStoreState, DataStore>(\"DataStore\");\n\nexport { useDataStore, useDataSelector, useDataStoreState };\n\n/**\n * Data context value(兼容旧 API)\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\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 * \n * 性能优化:\n * - 内部使用 DataStore,支持细粒度订阅\n * - 提供兼容旧 API 的 useData() hook\n * - 推荐使用 useDataValue() 进行细粒度订阅\n */\nexport function DataProvider({\n initialData = {},\n authState,\n onDataChange,\n children,\n}: DataProviderProps) {\n // 创建稳定的 store 实例\n const storeRef = useRef<DataStore | null>(null);\n if (!storeRef.current) {\n storeRef.current = new DataStore(initialData, authState, onDataChange);\n }\n const store = storeRef.current;\n\n // 同步 initialData 变化(服务端推送更新)\n useEffect(() => {\n store.mergeData(initialData);\n }, [initialData, store]);\n\n // 同步 authState 变化\n useEffect(() => {\n store.setAuthState(authState);\n }, [authState, store]);\n\n // 同步 onDataChange 回调\n useEffect(() => {\n store.setOnDataChange(onDataChange);\n }, [onDataChange, store]);\n\n return <DataStoreProvider store={store}>{children}</DataStoreProvider>;\n}\n\n/**\n * 获取指定路径的值(细粒度订阅)\n * \n * 性能优化:只有指定路径的值变化时才重渲染\n * \n * @example\n * const name = useDataValue<string>('/userInfo/name');\n */\nexport function useDataValue<T>(path?: string): T | undefined {\n const store = useDataStore();\n\n const subscribe = useCallback(\n (onStoreChange: () => void) => store.subscribe(onStoreChange),\n [store],\n );\n\n const getSnapshot = useCallback(() => {\n if (!path) return undefined;\n return store.getByPath(path) as T | undefined;\n }, [store, path]);\n\n return useSyncExternalStore(subscribe, getSnapshot, getSnapshot);\n}\n\n/**\n * 数据绑定 hook(类似 useState 的 API)\n * \n * 返回 [value, setValue] 元组,value 支持细粒度订阅,setValue 引用稳定\n * \n * @example\n * const [name, setName] = useDataBinding<string>('/userInfo/name');\n */\nexport function useDataBinding<T>(\n path?: string,\n): [T | undefined, (value: T) => void] {\n const store = useDataStore();\n const value = useDataValue<T>(path);\n \n const setValue = useStableCallback((newValue: T) => {\n if (path) {\n store.setByPath(path, newValue);\n }\n });\n\n return [value, setValue];\n}\n\n/**\n * 批量更新多个路径\n * \n * @example\n * const updatePaths = useDataUpdate();\n * updatePaths({ '/name': 'Alice', '/age': 30 });\n */\nexport function useDataUpdate(): (updates: Record<string, unknown>) => void {\n const store = useDataStore();\n \n return useStableCallback((updates: Record<string, unknown>) => {\n store.updatePaths(updates);\n });\n}\n\n/**\n * 获取整个 data 和 authState(订阅所有变化)\n * \n * ⚠️ 警告:此 hook 会订阅整个 data 对象,任何数据变化都会触发重渲染\n * 仅在以下场景使用:\n * - 需要遍历整个 data 对象\n * - 需要同时访问 data 和 authState\n * - ValidationProvider 等基础设施层\n * \n * 普通组件请使用:\n * - useDataValue() - 细粒度订阅\n * - useDataBinding() - 双向绑定\n */\nexport function useDataState(): { data: DataModel; authState?: AuthState } {\n const state = useDataStoreState();\n return { data: state.data, authState: state.authState };\n}\n"],"names":["ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_callSuper","_getPrototypeOf","_possibleConstructorReturn","_isNativeReflectConstruct","Reflect","construct","constructor","Boolean","prototype","valueOf","call","DataStore","_this","initialData","undefined","authState","onDataChange","_classCallCheck","data","_inherits","_Store","_createClass","key","value","getData","getState","getAuthState","getByPath","path","setByPath","_this$onDataChange","updateState","prev","produce","draft","setByPathMutable","updatePaths","updates","_this2","_i","_Object$entries","entries","_this2$onDataChange","_Object$entries$_i","_slicedToArray","mergeData","newData","_i2","_Object$entries2","_Object$entries2$_i","_typeof","Array","isArray","assign","setAuthState","setOnDataChange","callback","Store","_createStoreContext","createStoreContext","DataStoreProvider","Provider","useDataStore","useStore","useDataSelector","useSelector","useDataStoreState","useStoreState","DataProvider","_ref","_ref$initialData","children","storeRef","useRef","current","store","useEffect","React","createElement","useDataValue","subscribe","useCallback","onStoreChange","getSnapshot","useSyncExternalStore","useDataBinding","setValue","useStableCallback","newValue","useDataUpdate","useDataState","state"],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { DataProvider, useDataValue, useDataBinding, useDataUpdate, useDataState, useDataStore, type DataProviderProps, } from "./data";
|
|
2
|
+
export { VisibilityProvider, useVisibility, useIsVisible, type VisibilityContextValue, type VisibilityProviderProps, } from "./visibility";
|
|
3
|
+
export { ActionProvider, useActions, useAction, ConfirmDialog, type ActionContextValue, type ActionProviderProps, type PendingConfirmation, type ConfirmDialogProps, } from "./actions";
|
|
4
|
+
export { ValidationProvider, useValidation, useFieldValidation, type ValidationContextValue, type ValidationProviderProps, type FieldValidationState, } from "./validation";
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* tdesign v1.1.0-alpha.11
|
|
3
|
+
* (c) 2026 tdesign
|
|
4
|
+
* @license MIT
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
export { DataProvider, useDataBinding, useDataState, useDataStore, useDataUpdate, useDataValue } from './data.js';
|
|
8
|
+
export { VisibilityProvider, useIsVisible, useVisibility } from './visibility.js';
|
|
9
|
+
export { ActionProvider, ConfirmDialog, useAction, useActions } from './actions.js';
|
|
10
|
+
export { ValidationProvider, useFieldValidation, useValidation } from './validation.js';
|
|
11
|
+
import '@babel/runtime/helpers/defineProperty';
|
|
12
|
+
import '@babel/runtime/helpers/typeof';
|
|
13
|
+
import '@babel/runtime/helpers/slicedToArray';
|
|
14
|
+
import '@babel/runtime/helpers/classCallCheck';
|
|
15
|
+
import '@babel/runtime/helpers/createClass';
|
|
16
|
+
import '@babel/runtime/helpers/possibleConstructorReturn';
|
|
17
|
+
import '@babel/runtime/helpers/getPrototypeOf';
|
|
18
|
+
import '@babel/runtime/helpers/inherits';
|
|
19
|
+
import 'react';
|
|
20
|
+
import '../../../../_chunks/dep-1ca64fef.js';
|
|
21
|
+
import '@babel/runtime/helpers/wrapNativeSuper';
|
|
22
|
+
import '@json-render/core';
|
|
23
|
+
import './store.js';
|
|
24
|
+
import '@babel/runtime/helpers/asyncToGenerator';
|
|
25
|
+
import '@babel/runtime/regenerator';
|
|
26
|
+
import '@babel/runtime/helpers/objectWithoutProperties';
|
|
27
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import React, { type ReactNode } from "react";
|
|
2
|
+
/**
|
|
3
|
+
* 泛型 Store 基类
|
|
4
|
+
*
|
|
5
|
+
* 提供统一的外部状态管理模式,支持细粒度订阅。
|
|
6
|
+
* 设计原则:
|
|
7
|
+
* 1. 状态存储在 React 外部,避免 Context 传递整个状态导致的级联重渲染
|
|
8
|
+
* 2. 使用 useSyncExternalStore 实现细粒度订阅
|
|
9
|
+
* 3. 配合 Structural Sharing 使用,通过引用比较判断变化
|
|
10
|
+
*/
|
|
11
|
+
export declare class Store<T> {
|
|
12
|
+
private state;
|
|
13
|
+
private listeners;
|
|
14
|
+
constructor(initialState: T);
|
|
15
|
+
/**
|
|
16
|
+
* 获取当前状态
|
|
17
|
+
*/
|
|
18
|
+
getState(): T;
|
|
19
|
+
/**
|
|
20
|
+
* 设置新状态并通知订阅者
|
|
21
|
+
*/
|
|
22
|
+
setState(newState: T): void;
|
|
23
|
+
/**
|
|
24
|
+
* 通过 updater 函数更新状态
|
|
25
|
+
*/
|
|
26
|
+
updateState(updater: (prev: T) => T): void;
|
|
27
|
+
/**
|
|
28
|
+
* 订阅状态变化
|
|
29
|
+
*/
|
|
30
|
+
subscribe: (listener: () => void) => (() => void);
|
|
31
|
+
/**
|
|
32
|
+
* 通知所有订阅者
|
|
33
|
+
*/
|
|
34
|
+
protected emitChange(): void;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* 创建 Store Context 的工厂函数
|
|
38
|
+
*
|
|
39
|
+
* 返回:
|
|
40
|
+
* - Provider: 提供 store 实例的组件
|
|
41
|
+
* - useStore: 获取 store 实例的 hook
|
|
42
|
+
* - useSelector: 细粒度订阅 store 状态的 hook
|
|
43
|
+
*/
|
|
44
|
+
export declare function createStoreContext<T, S extends Store<T>>(displayName: string): {
|
|
45
|
+
Provider: {
|
|
46
|
+
({ store, children, }: {
|
|
47
|
+
store: S;
|
|
48
|
+
children: ReactNode;
|
|
49
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
50
|
+
displayName: string;
|
|
51
|
+
};
|
|
52
|
+
useStore: () => S;
|
|
53
|
+
useSelector: <R>(selector: (state: T) => R) => R;
|
|
54
|
+
useStoreState: () => T;
|
|
55
|
+
};
|
|
56
|
+
/**
|
|
57
|
+
* 使用 ref 保持稳定引用的 hook
|
|
58
|
+
*
|
|
59
|
+
* 用于需要在回调中访问最新值,但不希望回调函数重建的场景
|
|
60
|
+
*/
|
|
61
|
+
export declare function useStableRef<T>(value: T): React.MutableRefObject<T>;
|
|
62
|
+
/**
|
|
63
|
+
* 创建稳定的回调函数
|
|
64
|
+
*
|
|
65
|
+
* 类似 useCallback,但依赖通过 ref 访问,回调函数引用永远稳定
|
|
66
|
+
*/
|
|
67
|
+
export declare function useStableCallback<T extends (...args: any[]) => any>(callback: T): T;
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* tdesign v1.1.0-alpha.11
|
|
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
|
+
import React, { createContext, useContext, useCallback, useSyncExternalStore, useRef } from 'react';
|
|
11
|
+
|
|
12
|
+
var Store = /*#__PURE__*/function () {
|
|
13
|
+
function Store(initialState) {
|
|
14
|
+
var _this = this;
|
|
15
|
+
_classCallCheck(this, Store);
|
|
16
|
+
_defineProperty(this, "listeners", /* @__PURE__ */new Set());
|
|
17
|
+
_defineProperty(this, "subscribe", function (listener) {
|
|
18
|
+
_this.listeners.add(listener);
|
|
19
|
+
return function () {
|
|
20
|
+
return _this.listeners["delete"](listener);
|
|
21
|
+
};
|
|
22
|
+
});
|
|
23
|
+
this.state = initialState;
|
|
24
|
+
}
|
|
25
|
+
return _createClass(Store, [{
|
|
26
|
+
key: "getState",
|
|
27
|
+
value: function getState() {
|
|
28
|
+
return this.state;
|
|
29
|
+
}
|
|
30
|
+
}, {
|
|
31
|
+
key: "setState",
|
|
32
|
+
value: function setState(newState) {
|
|
33
|
+
if (this.state === newState) return;
|
|
34
|
+
this.state = newState;
|
|
35
|
+
this.emitChange();
|
|
36
|
+
}
|
|
37
|
+
}, {
|
|
38
|
+
key: "updateState",
|
|
39
|
+
value: function updateState(updater) {
|
|
40
|
+
var newState = updater(this.state);
|
|
41
|
+
this.setState(newState);
|
|
42
|
+
}
|
|
43
|
+
}, {
|
|
44
|
+
key: "emitChange",
|
|
45
|
+
value: function emitChange() {
|
|
46
|
+
this.listeners.forEach(function (listener) {
|
|
47
|
+
return listener();
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
}]);
|
|
51
|
+
}();
|
|
52
|
+
function createStoreContext(displayName) {
|
|
53
|
+
var StoreContext = /*#__PURE__*/createContext(null);
|
|
54
|
+
function StoreProvider(_ref) {
|
|
55
|
+
var store = _ref.store,
|
|
56
|
+
children = _ref.children;
|
|
57
|
+
return /* @__PURE__ */React.createElement(StoreContext.Provider, {
|
|
58
|
+
value: store
|
|
59
|
+
}, children);
|
|
60
|
+
}
|
|
61
|
+
StoreProvider.displayName = "".concat(displayName, "Provider");
|
|
62
|
+
function useStore() {
|
|
63
|
+
var store = useContext(StoreContext);
|
|
64
|
+
if (!store) {
|
|
65
|
+
throw new Error("use".concat(displayName, " must be used within ").concat(displayName, "Provider"));
|
|
66
|
+
}
|
|
67
|
+
return store;
|
|
68
|
+
}
|
|
69
|
+
function useSelector(selector) {
|
|
70
|
+
var store = useStore();
|
|
71
|
+
var getSnapshot = useCallback(function () {
|
|
72
|
+
return selector(store.getState());
|
|
73
|
+
}, [store, selector]);
|
|
74
|
+
return useSyncExternalStore(store.subscribe, getSnapshot, getSnapshot);
|
|
75
|
+
}
|
|
76
|
+
function useStoreState() {
|
|
77
|
+
var store = useStore();
|
|
78
|
+
var getSnapshot = useCallback(function () {
|
|
79
|
+
return store.getState();
|
|
80
|
+
}, [store]);
|
|
81
|
+
return useSyncExternalStore(store.subscribe, getSnapshot, getSnapshot);
|
|
82
|
+
}
|
|
83
|
+
return {
|
|
84
|
+
Provider: StoreProvider,
|
|
85
|
+
useStore: useStore,
|
|
86
|
+
useSelector: useSelector,
|
|
87
|
+
useStoreState: useStoreState
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
function useStableRef(value) {
|
|
91
|
+
var ref = useRef(value);
|
|
92
|
+
ref.current = value;
|
|
93
|
+
return ref;
|
|
94
|
+
}
|
|
95
|
+
function useStableCallback(callback) {
|
|
96
|
+
var callbackRef = useRef(callback);
|
|
97
|
+
callbackRef.current = callback;
|
|
98
|
+
return useCallback(function () {
|
|
99
|
+
return callbackRef.current.apply(callbackRef, arguments);
|
|
100
|
+
}, []);
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
export { Store, createStoreContext, useStableCallback, useStableRef };
|
|
104
|
+
//# sourceMappingURL=store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store.js","sources":["../../../../../../pro-components/chat/chat-engine/components/json-render/contexts/store.tsx"],"sourcesContent":["import React, {\n createContext,\n useContext,\n useRef,\n useSyncExternalStore,\n useCallback,\n type ReactNode,\n} from \"react\";\n\n/**\n * 泛型 Store 基类\n * \n * 提供统一的外部状态管理模式,支持细粒度订阅。\n * 设计原则:\n * 1. 状态存储在 React 外部,避免 Context 传递整个状态导致的级联重渲染\n * 2. 使用 useSyncExternalStore 实现细粒度订阅\n * 3. 配合 Structural Sharing 使用,通过引用比较判断变化\n */\nexport class Store<T> {\n private state: T;\n private listeners = new Set<() => void>();\n\n constructor(initialState: T) {\n this.state = initialState;\n }\n\n /**\n * 获取当前状态\n */\n getState(): T {\n return this.state;\n }\n\n /**\n * 设置新状态并通知订阅者\n */\n setState(newState: T): void {\n // 引用相同则不触发更新\n if (this.state === newState) return;\n this.state = newState;\n this.emitChange();\n }\n\n /**\n * 通过 updater 函数更新状态\n */\n updateState(updater: (prev: T) => T): void {\n const newState = updater(this.state);\n this.setState(newState);\n }\n\n /**\n * 订阅状态变化\n */\n subscribe = (listener: () => void): (() => void) => {\n this.listeners.add(listener);\n return () => this.listeners.delete(listener);\n };\n\n /**\n * 通知所有订阅者\n */\n protected emitChange(): void {\n this.listeners.forEach((listener) => listener());\n }\n}\n\n/**\n * 创建 Store Context 的工厂函数\n * \n * 返回:\n * - Provider: 提供 store 实例的组件\n * - useStore: 获取 store 实例的 hook\n * - useSelector: 细粒度订阅 store 状态的 hook\n */\nexport function createStoreContext<T, S extends Store<T>>(\n displayName: string,\n) {\n const StoreContext = createContext<S | null>(null);\n\n /**\n * Store Provider\n */\n function StoreProvider({\n store,\n children,\n }: {\n store: S;\n children: ReactNode;\n }) {\n // store 实例应该是稳定的,不需要 useMemo\n return (\n <StoreContext.Provider value={store}>{children}</StoreContext.Provider>\n );\n }\n StoreProvider.displayName = `${displayName}Provider`;\n\n /**\n * 获取 store 实例\n */\n function useStore(): S {\n const store = useContext(StoreContext);\n if (!store) {\n throw new Error(`use${displayName} must be used within ${displayName}Provider`);\n }\n return store;\n }\n\n /**\n * 细粒度订阅 store 状态\n * \n * @param selector - 从 state 中选取需要的部分\n * @returns 选取的状态片段\n * \n * 性能优化:\n * - selector 返回的引用不变时,组件不会重渲染\n * - 配合 Structural Sharing 使用效果最佳\n */\n function useSelector<R>(selector: (state: T) => R): R {\n const store = useStore();\n\n const getSnapshot = useCallback(() => {\n return selector(store.getState());\n }, [store, selector]);\n\n return useSyncExternalStore(store.subscribe, getSnapshot, getSnapshot);\n }\n\n /**\n * 订阅整个 state(谨慎使用,会导致任何变化都重渲染)\n */\n function useStoreState(): T {\n const store = useStore();\n\n const getSnapshot = useCallback(() => {\n return store.getState();\n }, [store]);\n\n return useSyncExternalStore(store.subscribe, getSnapshot, getSnapshot);\n }\n\n return {\n Provider: StoreProvider,\n useStore,\n useSelector,\n useStoreState,\n };\n}\n\n/**\n * 使用 ref 保持稳定引用的 hook\n * \n * 用于需要在回调中访问最新值,但不希望回调函数重建的场景\n */\nexport function useStableRef<T>(value: T): React.MutableRefObject<T> {\n const ref = useRef(value);\n ref.current = value;\n return ref;\n}\n\n/**\n * 创建稳定的回调函数\n * \n * 类似 useCallback,但依赖通过 ref 访问,回调函数引用永远稳定\n */\nexport function useStableCallback<T extends (...args: any[]) => any>(\n callback: T,\n): T {\n const callbackRef = useRef(callback);\n callbackRef.current = callback;\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n return useCallback(((...args) => callbackRef.current(...args)) as T, []);\n}\n"],"names":["Store","initialState","_this","_classCallCheck","_defineProperty","Set","listener","listeners","add","state","_createClass","key","value","getState","setState","newState","emitChange","updateState","updater","forEach","createStoreContext","displayName","StoreContext","createContext","StoreProvider","_ref","store","children","React","createElement","Provider","useStore","useContext","Error","concat","useSelector","selector","getSnapshot","useCallback","useSyncExternalStore","subscribe","useStoreState","useStableRef","ref","useRef","current","useStableCallback","callback","callbackRef","arguments"],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import type { UIElement, UITree } from "@json-render/core";
|
|
3
|
+
import { Store } from "./store";
|
|
4
|
+
import type { ComponentRenderer, ComponentRegistry } from '../types';
|
|
5
|
+
/**
|
|
6
|
+
* TreeStore - 外部 store,支持细粒度订阅
|
|
7
|
+
*
|
|
8
|
+
* 继承自通用 Store 基类,提供 UITree 的管理能力:
|
|
9
|
+
* - 配合上游 Structural Sharing(结构共享)使用
|
|
10
|
+
* - 上游 applyPatchImmutable 只重建被修改的节点
|
|
11
|
+
* - 未修改的节点保持原引用
|
|
12
|
+
* - getSnapshot 直接比较引用即可判断是否变化
|
|
13
|
+
*/
|
|
14
|
+
export declare class TreeStore extends Store<UITree | null> {
|
|
15
|
+
constructor();
|
|
16
|
+
setTree(tree: UITree | null): void;
|
|
17
|
+
getTree(): UITree;
|
|
18
|
+
getElement(key: string): UIElement | undefined;
|
|
19
|
+
getRoot(): string | undefined;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Context 只传递稳定引用
|
|
23
|
+
*/
|
|
24
|
+
interface RenderContextValue {
|
|
25
|
+
store: TreeStore;
|
|
26
|
+
registry: ComponentRegistry;
|
|
27
|
+
loading?: boolean;
|
|
28
|
+
fallback?: ComponentRenderer;
|
|
29
|
+
}
|
|
30
|
+
export declare const RenderContext: React.Context<RenderContextValue>;
|
|
31
|
+
export declare function useRenderContext(): RenderContextValue;
|
|
32
|
+
/**
|
|
33
|
+
* 使用 useSyncExternalStore 订阅特定 element
|
|
34
|
+
*
|
|
35
|
+
* 依赖上游的 Structural Sharing:
|
|
36
|
+
* - 如果 element 引用没变,说明内容没变,直接返回
|
|
37
|
+
* - 如果 element 引用变了,说明内容变了,返回新引用触发重渲染
|
|
38
|
+
*/
|
|
39
|
+
export declare function useElement(elementKey: string): UIElement | undefined;
|
|
40
|
+
/**
|
|
41
|
+
* Hook: 订阅 root key
|
|
42
|
+
*/
|
|
43
|
+
export declare function useRoot(): string | undefined;
|
|
44
|
+
export {};
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* tdesign v1.1.0-alpha.11
|
|
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 _possibleConstructorReturn from '@babel/runtime/helpers/possibleConstructorReturn';
|
|
10
|
+
import _getPrototypeOf from '@babel/runtime/helpers/getPrototypeOf';
|
|
11
|
+
import _inherits from '@babel/runtime/helpers/inherits';
|
|
12
|
+
import { createContext, useContext, useCallback, useSyncExternalStore } from 'react';
|
|
13
|
+
import { Store } from './store.js';
|
|
14
|
+
import '@babel/runtime/helpers/defineProperty';
|
|
15
|
+
|
|
16
|
+
function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
|
|
17
|
+
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
|
|
18
|
+
var TreeStore = /*#__PURE__*/function (_Store) {
|
|
19
|
+
function TreeStore() {
|
|
20
|
+
_classCallCheck(this, TreeStore);
|
|
21
|
+
return _callSuper(this, TreeStore, [null]);
|
|
22
|
+
}
|
|
23
|
+
_inherits(TreeStore, _Store);
|
|
24
|
+
return _createClass(TreeStore, [{
|
|
25
|
+
key: "setTree",
|
|
26
|
+
value: function setTree(tree) {
|
|
27
|
+
this.setState(tree);
|
|
28
|
+
}
|
|
29
|
+
}, {
|
|
30
|
+
key: "getTree",
|
|
31
|
+
value: function getTree() {
|
|
32
|
+
return this.getState();
|
|
33
|
+
}
|
|
34
|
+
}, {
|
|
35
|
+
key: "getElement",
|
|
36
|
+
value: function getElement(key) {
|
|
37
|
+
var _this$getState;
|
|
38
|
+
return (_this$getState = this.getState()) === null || _this$getState === void 0 ? void 0 : _this$getState.elements[key];
|
|
39
|
+
}
|
|
40
|
+
}, {
|
|
41
|
+
key: "getRoot",
|
|
42
|
+
value: function getRoot() {
|
|
43
|
+
var _this$getState2;
|
|
44
|
+
return (_this$getState2 = this.getState()) === null || _this$getState2 === void 0 ? void 0 : _this$getState2.root;
|
|
45
|
+
}
|
|
46
|
+
}]);
|
|
47
|
+
}(Store);
|
|
48
|
+
var RenderContext = /*#__PURE__*/createContext(null);
|
|
49
|
+
function useRenderContext() {
|
|
50
|
+
var ctx = useContext(RenderContext);
|
|
51
|
+
if (!ctx) throw new Error("ElementRenderer must be used within RenderContext");
|
|
52
|
+
return ctx;
|
|
53
|
+
}
|
|
54
|
+
function useElement(elementKey) {
|
|
55
|
+
var _useRenderContext = useRenderContext(),
|
|
56
|
+
store = _useRenderContext.store;
|
|
57
|
+
var subscribe = useCallback(function (onStoreChange) {
|
|
58
|
+
return store.subscribe(onStoreChange);
|
|
59
|
+
}, [store]);
|
|
60
|
+
var getSnapshot = useCallback(function () {
|
|
61
|
+
return store.getElement(elementKey);
|
|
62
|
+
}, [store, elementKey]);
|
|
63
|
+
return useSyncExternalStore(subscribe, getSnapshot, getSnapshot);
|
|
64
|
+
}
|
|
65
|
+
function useRoot() {
|
|
66
|
+
var _useRenderContext2 = useRenderContext(),
|
|
67
|
+
store = _useRenderContext2.store;
|
|
68
|
+
var subscribe = useCallback(function (onStoreChange) {
|
|
69
|
+
return store.subscribe(onStoreChange);
|
|
70
|
+
}, [store]);
|
|
71
|
+
var getSnapshot = useCallback(function () {
|
|
72
|
+
return store.getRoot();
|
|
73
|
+
}, [store]);
|
|
74
|
+
return useSyncExternalStore(subscribe, getSnapshot, getSnapshot);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
export { RenderContext, TreeStore, useElement, useRenderContext, useRoot };
|
|
78
|
+
//# sourceMappingURL=tree.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tree.js","sources":["../../../../../../pro-components/chat/chat-engine/components/json-render/contexts/tree.tsx"],"sourcesContent":["import React, { createContext, useContext, useSyncExternalStore, useCallback } from \"react\";\nimport type {\n UIElement,\n UITree,\n} from \"@json-render/core\";\nimport { Store } from \"./store\";\nimport type { ComponentRenderer, ComponentRegistry } from '../types';\n\n/**\n * TreeStore - 外部 store,支持细粒度订阅\n * \n * 继承自通用 Store 基类,提供 UITree 的管理能力:\n * - 配合上游 Structural Sharing(结构共享)使用\n * - 上游 applyPatchImmutable 只重建被修改的节点\n * - 未修改的节点保持原引用\n * - getSnapshot 直接比较引用即可判断是否变化\n */\nexport class TreeStore extends Store<UITree | null> {\n constructor() {\n super(null);\n }\n \n setTree(tree: UITree | null) {\n this.setState(tree);\n }\n \n getTree() {\n return this.getState();\n }\n \n getElement(key: string): UIElement | undefined {\n return this.getState()?.elements[key];\n }\n \n getRoot(): string | undefined {\n return this.getState()?.root;\n }\n}\n\n/**\n * Context 只传递稳定引用\n */\ninterface RenderContextValue {\n store: TreeStore;\n registry: ComponentRegistry;\n loading?: boolean;\n fallback?: ComponentRenderer;\n}\n\nexport const RenderContext = createContext<RenderContextValue | null>(null);\n\nexport function useRenderContext(): RenderContextValue {\n const ctx = useContext(RenderContext);\n if (!ctx) throw new Error('ElementRenderer must be used within RenderContext');\n return ctx;\n}\n\n/**\n * 使用 useSyncExternalStore 订阅特定 element\n * \n * 依赖上游的 Structural Sharing:\n * - 如果 element 引用没变,说明内容没变,直接返回\n * - 如果 element 引用变了,说明内容变了,返回新引用触发重渲染\n */\nexport function useElement(elementKey: string): UIElement | undefined {\n const { store } = useRenderContext();\n \n const subscribe = useCallback(\n (onStoreChange: () => void) => store.subscribe(onStoreChange),\n [store]\n );\n \n // 直接返回 element 引用\n // 由于上游使用 Structural Sharing,引用相同 = 内容相同\n const getSnapshot = useCallback(() => {\n return store.getElement(elementKey);\n }, [store, elementKey]);\n \n return useSyncExternalStore(subscribe, getSnapshot, getSnapshot);\n}\n\n/**\n * Hook: 订阅 root key\n */\nexport function useRoot(): string | undefined {\n const { store } = useRenderContext();\n \n const subscribe = useCallback(\n (onStoreChange: () => void) => store.subscribe(onStoreChange),\n [store]\n );\n \n const getSnapshot = useCallback(() => store.getRoot(), [store]);\n \n return useSyncExternalStore(subscribe, getSnapshot, getSnapshot);\n}\n"],"names":["TreeStore","_classCallCheck","_callSuper","_inherits","_Store","_createClass","key","value","setTree","tree","setState","getTree","getState","getElement","_this$getState","elements","getRoot","_this$getState2","root","Store","RenderContext","createContext","useRenderContext","ctx","useContext","Error","useElement","elementKey","_useRenderContext","store","subscribe","useCallback","onStoreChange","getSnapshot","useSyncExternalStore","useRoot","_useRenderContext2"],"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
|
+
};
|