weifuwu 0.85.0 → 0.87.0

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 (655) hide show
  1. package/README.md +56 -45
  2. package/content/apps/admin.md +55 -0
  3. package/content/apps/agent-platform.md +35 -0
  4. package/content/apps/auth.md +49 -0
  5. package/content/apps/multi.md +44 -0
  6. package/content/apps/todo.md +51 -0
  7. package/content/backend/ai.md +28 -0
  8. package/content/backend/auth.md +20 -0
  9. package/content/backend/email.md +23 -0
  10. package/content/backend/graphql.md +23 -0
  11. package/content/backend/http.md +23 -0
  12. package/content/backend/limit.md +23 -0
  13. package/content/backend/middleware.md +17 -0
  14. package/content/backend/queue.md +23 -0
  15. package/content/backend/redis.md +26 -0
  16. package/content/backend/router.md +23 -0
  17. package/content/backend/schedule.md +23 -0
  18. package/content/backend/sql.md +27 -0
  19. package/content/backend/sse.md +26 -0
  20. package/content/backend/ws.md +26 -0
  21. package/content/capabilities/app-node.md +21 -0
  22. package/content/capabilities/data.md +21 -0
  23. package/content/capabilities/events.md +21 -0
  24. package/content/capabilities/hooks.md +22 -0
  25. package/content/capabilities/i18n.md +21 -0
  26. package/content/capabilities/popup.md +21 -0
  27. package/content/capabilities/render-only.md +23 -0
  28. package/content/capabilities/router.md +22 -0
  29. package/content/capabilities/self-id.md +21 -0
  30. package/content/capabilities/store.md +21 -0
  31. package/content/capabilities/theme.md +21 -0
  32. package/content/capabilities/two-phase.md +21 -0
  33. package/content/components/accordion.md +50 -0
  34. package/content/components/actionsheet.md +46 -0
  35. package/content/components/affix.md +51 -0
  36. package/content/components/aichat.md +57 -0
  37. package/content/components/alert.md +52 -0
  38. package/content/components/alertgroup.md +45 -0
  39. package/content/components/anchor.md +52 -0
  40. package/content/components/app.md +37 -0
  41. package/content/components/approvalcard.md +56 -0
  42. package/content/components/appshell.md +50 -0
  43. package/content/components/aspectratio.md +47 -0
  44. package/content/components/authpage.md +61 -0
  45. package/content/components/autocomplete-v2.md +40 -0
  46. package/content/components/autocomplete.md +56 -0
  47. package/content/components/avatar.md +51 -0
  48. package/content/components/avatargroup.md +47 -0
  49. package/content/components/backtop.md +53 -0
  50. package/content/components/badge.md +55 -0
  51. package/content/components/breadcrumb.md +49 -0
  52. package/content/components/button.md +63 -0
  53. package/content/components/calendar-v2.md +40 -0
  54. package/content/components/calendar.md +50 -0
  55. package/content/components/card.md +58 -0
  56. package/content/components/carousel.md +52 -0
  57. package/content/components/cascader-v2.md +39 -0
  58. package/content/components/cascader.md +54 -0
  59. package/content/components/chart.md +53 -0
  60. package/content/components/chatinput.md +63 -0
  61. package/content/components/checkbox.md +51 -0
  62. package/content/components/checkboxgroup.md +52 -0
  63. package/content/components/citationcard.md +48 -0
  64. package/content/components/codeblock.md +48 -0
  65. package/content/components/codeeditor.md +47 -0
  66. package/content/components/collapse.md +49 -0
  67. package/content/components/colorpicker.md +50 -0
  68. package/content/components/command.md +50 -0
  69. package/content/components/confirm.md +57 -0
  70. package/content/components/contextmenu.md +48 -0
  71. package/content/components/copybutton.md +51 -0
  72. package/content/components/datepicker.md +52 -0
  73. package/content/components/descriptions-v2.md +39 -0
  74. package/content/components/descriptions.md +52 -0
  75. package/content/components/diffview-v2.md +39 -0
  76. package/content/components/diffview.md +50 -0
  77. package/content/components/divider.md +48 -0
  78. package/content/components/drawer.md +55 -0
  79. package/content/components/dropdown.md +53 -0
  80. package/content/components/editor.md +49 -0
  81. package/content/components/emptystate.md +51 -0
  82. package/content/components/exportcsv.md +38 -0
  83. package/content/components/field.md +54 -0
  84. package/content/components/filepreview-office.md +37 -0
  85. package/content/components/filepreview.md +49 -0
  86. package/content/components/filetree.md +56 -0
  87. package/content/components/fileupload-v2.md +39 -0
  88. package/content/components/fileupload.md +57 -0
  89. package/content/components/floatbutton.md +52 -0
  90. package/content/components/form-v2.md +41 -0
  91. package/content/components/form.md +60 -0
  92. package/content/components/grid.md +51 -0
  93. package/content/components/highlight-v2.md +39 -0
  94. package/content/components/highlight.md +46 -0
  95. package/content/components/hovercard.md +51 -0
  96. package/content/components/icon.md +50 -0
  97. package/content/components/imagecropper.md +45 -0
  98. package/content/components/img.md +56 -0
  99. package/content/components/infinitescroll-v2.md +40 -0
  100. package/content/components/infinitescroll.md +54 -0
  101. package/content/components/input.md +65 -0
  102. package/content/components/inputnumber.md +58 -0
  103. package/content/components/inview.md +56 -0
  104. package/content/components/jsonschemaform.md +53 -0
  105. package/content/components/jsonviewer-v2.md +39 -0
  106. package/content/components/jsonviewer.md +49 -0
  107. package/content/components/kanban.md +46 -0
  108. package/content/components/label.md +48 -0
  109. package/content/components/layout.md +54 -0
  110. package/content/components/layoutcontent.md +43 -0
  111. package/content/components/layoutheader.md +43 -0
  112. package/content/components/layoutsider.md +43 -0
  113. package/content/components/link.md +52 -0
  114. package/content/components/list.md +44 -0
  115. package/content/components/loading.md +45 -0
  116. package/content/components/logviewer-v2.md +39 -0
  117. package/content/components/logviewer.md +53 -0
  118. package/content/components/markdown.md +51 -0
  119. package/content/components/markdowneditor.md +47 -0
  120. package/content/components/math.md +42 -0
  121. package/content/components/mentions-v2.md +39 -0
  122. package/content/components/mentions.md +52 -0
  123. package/content/components/menu.md +56 -0
  124. package/content/components/menubar.md +44 -0
  125. package/content/components/messagebubble.md +50 -0
  126. package/content/components/modal.md +59 -0
  127. package/content/components/navmenu.md +47 -0
  128. package/content/components/notification.md +51 -0
  129. package/content/components/pageheader.md +53 -0
  130. package/content/components/pagination.md +49 -0
  131. package/content/components/paragraph.md +45 -0
  132. package/content/components/passwordinput.md +57 -0
  133. package/content/components/pininput-v2.md +39 -0
  134. package/content/components/pininput.md +50 -0
  135. package/content/components/pipeline.md +49 -0
  136. package/content/components/popconfirm.md +58 -0
  137. package/content/components/popover.md +61 -0
  138. package/content/components/progressbar.md +50 -0
  139. package/content/components/prompttemplate.md +49 -0
  140. package/content/components/qrcode.md +50 -0
  141. package/content/components/radiogroup.md +53 -0
  142. package/content/components/rate.md +53 -0
  143. package/content/components/reasoningblock.md +47 -0
  144. package/content/components/relationgraph.md +52 -0
  145. package/content/components/resizable.md +53 -0
  146. package/content/components/result.md +49 -0
  147. package/content/components/scrollbar.md +49 -0
  148. package/content/components/searchinput.md +51 -0
  149. package/content/components/segmentedcontrol.md +59 -0
  150. package/content/components/select-searchable.md +47 -0
  151. package/content/components/select.md +66 -0
  152. package/content/components/sessionlist.md +52 -0
  153. package/content/components/sheetgrid.md +44 -0
  154. package/content/components/skeleton.md +55 -0
  155. package/content/components/slidecanvas.md +44 -0
  156. package/content/components/slider.md +62 -0
  157. package/content/components/sortablelist.md +39 -0
  158. package/content/components/space.md +52 -0
  159. package/content/components/sparkline.md +52 -0
  160. package/content/components/statcard-countdown.md +39 -0
  161. package/content/components/statcard.md +56 -0
  162. package/content/components/steps.md +48 -0
  163. package/content/components/switch.md +50 -0
  164. package/content/components/tabbar.md +45 -0
  165. package/content/components/table-v2.md +40 -0
  166. package/content/components/table.md +66 -0
  167. package/content/components/tabs.md +56 -0
  168. package/content/components/tag.md +51 -0
  169. package/content/components/tagsinput-v2.md +39 -0
  170. package/content/components/tagsinput.md +54 -0
  171. package/content/components/text.md +45 -0
  172. package/content/components/textarea.md +57 -0
  173. package/content/components/themeswitch.md +69 -0
  174. package/content/components/timeline.md +50 -0
  175. package/content/components/title.md +45 -0
  176. package/content/components/toast.md +52 -0
  177. package/content/components/toggle-togglegroup.md +52 -0
  178. package/content/components/togglegroup.md +47 -0
  179. package/content/components/toolcallcard.md +51 -0
  180. package/content/components/tooltip.md +50 -0
  181. package/content/components/tour.md +50 -0
  182. package/content/components/transfer.md +52 -0
  183. package/content/components/tree-v2.md +39 -0
  184. package/content/components/tree.md +59 -0
  185. package/content/components/treeselect.md +54 -0
  186. package/content/components/typography.md +51 -0
  187. package/content/components/videoplayer.md +52 -0
  188. package/content/components/virtuallist.md +52 -0
  189. package/content/components/virtualtable-v2.md +39 -0
  190. package/content/components/virtualtable.md +55 -0
  191. package/content/components/watermark.md +53 -0
  192. package/content/components/wave.md +43 -0
  193. package/content/guides/ai-chat-family.md +24 -0
  194. package/content/guides/choose.md +67 -0
  195. package/content/guides/component-model.md +32 -0
  196. package/content/guides/component-standards.md +123 -0
  197. package/{docs/components.md → content/guides/components-guide.md} +153 -7
  198. package/{docs/custom-components.md → content/guides/custom-component.md} +70 -55
  199. package/{docs/data.md → content/guides/data-guide.md} +5 -2
  200. package/content/guides/file-preview-family.md +18 -0
  201. package/{docs → content/guides}/frontend.md +122 -52
  202. package/content/guides/layout-choice.md +64 -0
  203. package/{docs/layout.md → content/guides/layout-guide.md} +12 -8
  204. package/{docs/frontend-middleware.md → content/guides/middleware.md} +34 -3
  205. package/{docs/mobile.md → content/guides/mobile-guide.md} +20 -24
  206. package/content/guides/page-building.md +98 -0
  207. package/content/guides/production.md +37 -0
  208. package/content/guides/quality.md +60 -0
  209. package/{docs/realtime.md → content/guides/realtime-guide.md} +6 -3
  210. package/content/guides/render-only.md +44 -0
  211. package/{docs/saas.md → content/guides/saas-guide.md} +8 -5
  212. package/{docs/server.md → content/guides/server-guide.md} +5 -2
  213. package/content/guides/start.md +41 -0
  214. package/{docs → content/guides}/styling.md +5 -1
  215. package/{docs/frontend-ui-dom.md → content/guides/ui-dom-guide.md} +7 -1
  216. package/content/index.json +4344 -0
  217. package/content/index.md +181 -0
  218. package/content/layout/align.md +20 -0
  219. package/content/layout/anchor.md +19 -0
  220. package/content/layout/app-shell.md +23 -0
  221. package/content/layout/border.md +20 -0
  222. package/content/layout/center.md +19 -0
  223. package/content/layout/cluster.md +19 -0
  224. package/content/layout/container.md +19 -0
  225. package/content/layout/fill.md +19 -0
  226. package/content/layout/grid.md +19 -0
  227. package/content/layout/hidden.md +22 -0
  228. package/content/layout/layer.md +19 -0
  229. package/content/layout/position.md +22 -0
  230. package/content/layout/row.md +23 -0
  231. package/content/layout/safe-area.md +20 -0
  232. package/content/layout/scroll.md +21 -0
  233. package/content/layout/spacing.md +22 -0
  234. package/content/layout/split.md +19 -0
  235. package/content/layout/stack.md +19 -0
  236. package/content/layout/surface.md +23 -0
  237. package/content/layout/text.md +22 -0
  238. package/content/patterns/app-shell.md +34 -0
  239. package/content/patterns/dashboard.md +36 -0
  240. package/content/patterns/data-screen.md +30 -0
  241. package/content/patterns/detail-page.md +31 -0
  242. package/content/patterns/docs.md +34 -0
  243. package/content/patterns/focus-task.md +34 -0
  244. package/content/patterns/landing.md +35 -0
  245. package/content/patterns/list-page.md +32 -0
  246. package/content/patterns/mobile.md +31 -0
  247. package/content/patterns/settings-page.md +33 -0
  248. package/content/patterns/workspace.md +32 -0
  249. package/dist/cli/apps-typecheck.test.d.ts +11 -0
  250. package/dist/cli/docs.d.ts +2 -0
  251. package/dist/cli/docs.mjs +10961 -0
  252. package/dist/cli/home-flash.test.d.ts +1 -0
  253. package/dist/{components → client/components}/Accordion/Accordion.d.ts +1 -1
  254. package/dist/client/components/ActionSheet/ActionSheet.d.ts +37 -0
  255. package/dist/{components → client/components}/Affix/Affix.d.ts +1 -1
  256. package/dist/{components → client/components}/AiChat/AiChat.d.ts +3 -3
  257. package/dist/{components → client/components}/Alert/Alert.d.ts +1 -1
  258. package/dist/{components → client/components}/AlertGroup/AlertGroup.d.ts +1 -1
  259. package/dist/{components → client/components}/Anchor/Anchor.d.ts +1 -1
  260. package/dist/client/components/AppShell/AppShell.d.ts +55 -0
  261. package/dist/{components → client/components}/ApprovalCard/ApprovalCard.d.ts +2 -2
  262. package/dist/{components → client/components}/AspectRatio/AspectRatio.d.ts +1 -1
  263. package/dist/{components → client/components}/AuthPage/AuthPage.d.ts +2 -2
  264. package/dist/{components → client/components}/AutoComplete/AutoComplete.d.ts +1 -1
  265. package/dist/{components → client/components}/Avatar/Avatar.d.ts +1 -1
  266. package/dist/{components → client/components}/AvatarGroup/AvatarGroup.d.ts +1 -1
  267. package/dist/{components → client/components}/BackTop/BackTop.d.ts +1 -1
  268. package/dist/{components → client/components}/Badge/Badge.d.ts +1 -1
  269. package/dist/{components → client/components}/Breadcrumb/Breadcrumb.d.ts +1 -1
  270. package/dist/{components → client/components}/Button/Button.d.ts +1 -1
  271. package/dist/{components → client/components}/Calendar/Calendar.d.ts +1 -1
  272. package/dist/{components → client/components}/Card/Card.d.ts +1 -1
  273. package/dist/{components → client/components}/Carousel/Carousel.d.ts +1 -1
  274. package/dist/{components → client/components}/Cascader/Cascader.d.ts +1 -1
  275. package/dist/{components → client/components}/Chart/Chart.d.ts +1 -1
  276. package/dist/{components → client/components}/Chart/chart-utils.d.ts +5 -1
  277. package/dist/{components → client/components}/ChatInput/ChatInput.d.ts +7 -7
  278. package/dist/{components → client/components}/Checkbox/Checkbox.d.ts +1 -1
  279. package/dist/{components → client/components}/CheckboxGroup/CheckboxGroup.d.ts +1 -1
  280. package/dist/{components → client/components}/CitationCard/CitationCard.d.ts +3 -3
  281. package/dist/{components → client/components}/CodeBlock/CodeBlock.d.ts +1 -1
  282. package/dist/client/components/CodeEditor/CodeEditor.d.ts +18 -0
  283. package/dist/{components → client/components}/Collapse/Collapse.d.ts +1 -1
  284. package/dist/{components → client/components}/ColorPicker/ColorPicker.d.ts +1 -1
  285. package/dist/{components → client/components}/Command/Command.d.ts +1 -1
  286. package/dist/{components → client/components}/Confirm/Confirm.d.ts +2 -7
  287. package/dist/{components → client/components}/ContextMenu/ContextMenu.d.ts +1 -1
  288. package/dist/{components → client/components}/CopyButton/CopyButton.d.ts +1 -1
  289. package/dist/{components → client/components}/DatePicker/DatePicker.d.ts +2 -2
  290. package/dist/{components → client/components}/Descriptions/Descriptions.d.ts +1 -1
  291. package/dist/{components → client/components}/DiffView/DiffView.d.ts +1 -1
  292. package/dist/{components → client/components}/Divider/Divider.d.ts +1 -1
  293. package/dist/{components → client/components}/Drawer/Drawer.d.ts +1 -1
  294. package/dist/{components → client/components}/Dropdown/Dropdown.d.ts +1 -1
  295. package/dist/client/components/Editor/Editor.d.ts +14 -0
  296. package/dist/client/components/Editor/edit-events.d.ts +27 -0
  297. package/dist/client/components/Editor/model/apply.d.ts +23 -0
  298. package/dist/client/components/Editor/model/diff.d.ts +25 -0
  299. package/dist/client/components/Editor/model/dom.d.ts +27 -0
  300. package/dist/client/components/Editor/model/history.d.ts +21 -0
  301. package/dist/client/components/Editor/model/html.d.ts +16 -0
  302. package/dist/client/components/Editor/model/inverse.d.ts +20 -0
  303. package/dist/client/components/Editor/model/types.d.ts +116 -0
  304. package/dist/client/components/Editor/tools/table.d.ts +10 -0
  305. package/dist/{components → client/components}/Editor/tools/toolbar.d.ts +2 -2
  306. package/dist/client/components/Editor/tools/types.d.ts +40 -0
  307. package/dist/{components → client/components}/EmptyState/EmptyState.d.ts +1 -1
  308. package/dist/client/components/ExportCSV/ExportCSV.d.ts +30 -0
  309. package/dist/{components → client/components}/Field/Field.d.ts +1 -1
  310. package/dist/client/components/FilePreview/FilePreview.d.ts +42 -0
  311. package/dist/client/components/FilePreview/markdown.d.ts +23 -0
  312. package/dist/client/components/FileTree/FileTree.d.ts +57 -0
  313. package/dist/{components → client/components}/FileUpload/FileUpload.d.ts +1 -1
  314. package/dist/{components → client/components}/FloatButton/FloatButton.d.ts +1 -1
  315. package/dist/{components → client/components}/Form/Form.d.ts +1 -1
  316. package/dist/{components → client/components}/Grid/Grid.d.ts +1 -1
  317. package/dist/{components → client/components}/Highlight/Highlight.d.ts +1 -1
  318. package/dist/{components → client/components}/HoverCard/HoverCard.d.ts +5 -4
  319. package/dist/{components → client/components}/Icon/Icon.d.ts +2 -2
  320. package/dist/client/components/ImageCropper/ImageCropper.d.ts +17 -0
  321. package/dist/{components → client/components}/Img/Img.d.ts +1 -1
  322. package/dist/{components → client/components}/InView/InView.d.ts +1 -1
  323. package/dist/{components → client/components}/InfiniteScroll/InfiniteScroll.d.ts +1 -1
  324. package/dist/{components → client/components}/Input/Input.d.ts +1 -1
  325. package/dist/{components → client/components}/InputNumber/InputNumber.d.ts +1 -1
  326. package/dist/{components → client/components}/JSONViewer/JSONViewer.d.ts +1 -1
  327. package/dist/{components → client/components}/JsonSchemaForm/JsonSchemaForm.d.ts +3 -3
  328. package/dist/{components → client/components}/Kanban/Kanban.d.ts +1 -1
  329. package/dist/{components → client/components}/Label/Label.d.ts +1 -1
  330. package/dist/{components → client/components}/Layout/Layout.d.ts +1 -1
  331. package/dist/{components → client/components}/Link/Link.d.ts +1 -1
  332. package/dist/{components → client/components}/List/List.d.ts +1 -1
  333. package/dist/{components → client/components}/Loading/Loading.d.ts +1 -1
  334. package/dist/{components → client/components}/LogViewer/LogViewer.d.ts +1 -1
  335. package/dist/{components → client/components}/Markdown/Markdown.d.ts +1 -1
  336. package/dist/client/components/MarkdownEditor/MarkdownEditor.d.ts +18 -0
  337. package/dist/client/components/Math/Math.d.ts +15 -0
  338. package/dist/{components → client/components}/Mentions/Mentions.d.ts +1 -1
  339. package/dist/{components → client/components}/Menu/Menu.d.ts +1 -1
  340. package/dist/{components → client/components}/Menubar/Menubar.d.ts +1 -1
  341. package/dist/{components → client/components}/MessageBubble/MessageBubble.d.ts +1 -1
  342. package/dist/{components → client/components}/Modal/Modal.d.ts +1 -1
  343. package/dist/{components → client/components}/NavMenu/NavMenu.d.ts +2 -2
  344. package/dist/{components → client/components}/Notification/Notification.d.ts +7 -2
  345. package/dist/client/components/OfficeEditor/ai/ai-bridge.d.ts +39 -0
  346. package/dist/client/components/OfficeEditor/model/apply.d.ts +25 -0
  347. package/dist/client/components/OfficeEditor/model/types.d.ts +224 -0
  348. package/dist/{components → client/components}/PageHeader/PageHeader.d.ts +1 -1
  349. package/dist/{components → client/components}/Pagination/Pagination.d.ts +1 -1
  350. package/dist/{components → client/components}/PasswordInput/PasswordInput.d.ts +1 -1
  351. package/dist/{components → client/components}/PinInput/PinInput.d.ts +1 -1
  352. package/dist/{components → client/components}/Pipeline/Pipeline.d.ts +1 -1
  353. package/dist/{components → client/components}/Popconfirm/Popconfirm.d.ts +2 -2
  354. package/dist/{components → client/components}/Popover/Popover.d.ts +5 -4
  355. package/dist/{components → client/components}/ProgressBar/ProgressBar.d.ts +1 -1
  356. package/dist/client/components/PromptTemplate/PromptTemplate.d.ts +37 -0
  357. package/dist/{components → client/components}/QRCode/QRCode.d.ts +1 -1
  358. package/dist/{components → client/components}/RadioGroup/RadioGroup.d.ts +1 -1
  359. package/dist/{components → client/components}/Rate/Rate.d.ts +1 -1
  360. package/dist/{components → client/components}/ReasoningBlock/ReasoningBlock.d.ts +3 -3
  361. package/dist/client/components/RelationGraph/RelationGraph.d.ts +59 -0
  362. package/dist/{components → client/components}/Resizable/Resizable.d.ts +1 -1
  363. package/dist/{components → client/components}/Result/Result.d.ts +1 -1
  364. package/dist/{components → client/components}/Scrollbar/Scrollbar.d.ts +1 -1
  365. package/dist/{components → client/components}/SearchInput/SearchInput.d.ts +1 -1
  366. package/dist/{components → client/components}/SegmentedControl/SegmentedControl.d.ts +1 -1
  367. package/dist/{components → client/components}/Select/Select.d.ts +1 -1
  368. package/dist/{components → client/components}/SessionList/SessionList.d.ts +3 -3
  369. package/dist/client/components/SheetGrid/SheetGrid.d.ts +30 -0
  370. package/dist/{components → client/components}/Skeleton/Skeleton.d.ts +1 -1
  371. package/dist/client/components/SlideCanvas/SlideCanvas.d.ts +28 -0
  372. package/dist/client/components/Slider/Slider.d.ts +27 -0
  373. package/dist/client/components/SortableList/SortableList.d.ts +23 -0
  374. package/dist/{components → client/components}/Space/Space.d.ts +1 -1
  375. package/dist/{components → client/components}/Sparkline/Sparkline.d.ts +1 -1
  376. package/dist/{components → client/components}/StatCard/StatCard.d.ts +1 -1
  377. package/dist/{components → client/components}/Steps/Steps.d.ts +1 -1
  378. package/dist/{components → client/components}/Switch/Switch.d.ts +1 -1
  379. package/dist/client/components/TabBar/TabBar.d.ts +35 -0
  380. package/dist/{components → client/components}/Table/Table.d.ts +7 -1
  381. package/dist/client/components/Tabs/Tabs.d.ts +22 -0
  382. package/dist/{components → client/components}/Tag/Tag.d.ts +1 -1
  383. package/dist/{components → client/components}/TagsInput/TagsInput.d.ts +1 -1
  384. package/dist/{components → client/components}/Textarea/Textarea.d.ts +1 -1
  385. package/dist/{components → client/components}/ThemeSwitch/ThemeSwitch.d.ts +1 -1
  386. package/dist/{components → client/components}/Timeline/Timeline.d.ts +1 -1
  387. package/dist/{components → client/components}/Toast/Toast.d.ts +1 -1
  388. package/dist/{components → client/components}/ToggleGroup/ToggleGroup.d.ts +1 -1
  389. package/dist/{components → client/components}/ToolCallCard/ToolCallCard.d.ts +2 -2
  390. package/dist/{components → client/components}/Tooltip/Tooltip.d.ts +4 -3
  391. package/dist/{components → client/components}/Tour/Tour.d.ts +1 -1
  392. package/dist/{components → client/components}/Transfer/Transfer.d.ts +1 -1
  393. package/dist/{components → client/components}/Tree/Tree.d.ts +5 -1
  394. package/dist/{components → client/components}/TreeSelect/TreeSelect.d.ts +5 -1
  395. package/dist/{components → client/components}/Typography/Typography.d.ts +1 -1
  396. package/dist/client/components/VideoPlayer/VideoPlayer.d.ts +25 -0
  397. package/dist/{components → client/components}/VirtualList/VirtualList.d.ts +1 -1
  398. package/dist/{components → client/components}/VirtualTable/VirtualTable.d.ts +1 -1
  399. package/dist/{components → client/components}/Watermark/Watermark.d.ts +1 -1
  400. package/dist/client/components/Wave/Wave.d.ts +15 -0
  401. package/dist/{components → client/components}/index.d.ts +48 -2
  402. package/dist/client/components/index.js +57 -0
  403. package/dist/{components → client/components}/style.css +3554 -1896
  404. package/dist/{layout → client/layout}/weifuwu-layout.css +60 -6
  405. package/dist/client/office/docx.d.ts +33 -0
  406. package/dist/client/office/pptx.d.ts +24 -0
  407. package/dist/client/office/xlsx.d.ts +25 -0
  408. package/dist/client/office/xml-serialize.d.ts +18 -0
  409. package/dist/client/office/xml.d.ts +21 -0
  410. package/dist/client/office/zip.d.ts +21 -0
  411. package/dist/client/vdom/browser/Browser.d.ts +73 -0
  412. package/dist/client/vdom/browser/create-client-browser.d.ts +11 -0
  413. package/dist/client/vdom/commands.d.ts +19 -0
  414. package/dist/client/vdom/context/UIContext.d.ts +61 -0
  415. package/dist/client/vdom/context/data.d.ts +17 -0
  416. package/dist/client/vdom/core/async-guard.d.ts +20 -0
  417. package/dist/client/vdom/core/build.d.ts +36 -0
  418. package/dist/client/vdom/core/command/create.d.ts +25 -0
  419. package/dist/client/vdom/core/command/index.d.ts +15 -0
  420. package/dist/client/vdom/core/command/insert.d.ts +32 -0
  421. package/dist/client/vdom/core/command/lifecycle.d.ts +47 -0
  422. package/dist/client/vdom/core/command/props.d.ts +22 -0
  423. package/dist/client/vdom/core/diff/attrs.d.ts +10 -0
  424. package/dist/client/vdom/core/diff/children.d.ts +29 -0
  425. package/dist/client/vdom/core/diff/cleanup.d.ts +44 -0
  426. package/dist/client/vdom/core/diff/index.d.ts +22 -0
  427. package/dist/client/vdom/core/diff/output.d.ts +30 -0
  428. package/dist/client/vdom/core/diff/same.d.ts +22 -0
  429. package/dist/client/vdom/core/field/attributes.d.ts +15 -0
  430. package/dist/client/vdom/core/field/events.d.ts +54 -0
  431. package/dist/client/vdom/core/field/index.d.ts +19 -0
  432. package/dist/client/vdom/core/field/key.d.ts +16 -0
  433. package/dist/client/vdom/core/field/props.d.ts +15 -0
  434. package/dist/client/vdom/core/field/ref.d.ts +38 -0
  435. package/dist/client/vdom/core/field/style.d.ts +17 -0
  436. package/dist/client/vdom/core/node/children.d.ts +20 -0
  437. package/dist/client/vdom/core/node/component.d.ts +93 -0
  438. package/dist/client/vdom/core/node/fragment.d.ts +14 -0
  439. package/dist/client/vdom/core/node/hole.d.ts +22 -0
  440. package/dist/client/vdom/core/node/index.d.ts +35 -0
  441. package/dist/client/vdom/core/node/keyed.d.ts +64 -0
  442. package/dist/client/vdom/core/node/native.d.ts +20 -0
  443. package/dist/client/vdom/core/node/portal.d.ts +11 -0
  444. package/dist/client/vdom/core/patch/fields.d.ts +15 -0
  445. package/dist/client/vdom/core/patch/index.d.ts +51 -0
  446. package/dist/client/vdom/core/patch/processors.d.ts +75 -0
  447. package/dist/client/vdom/core/patch/state-machine.d.ts +38 -0
  448. package/dist/client/vdom/core/patch/verify.d.ts +17 -0
  449. package/dist/client/vdom/core/router.d.ts +31 -0
  450. package/dist/client/vdom/core/serve.d.ts +75 -0
  451. package/dist/client/vdom/core/ssr/absorb.d.ts +53 -0
  452. package/dist/client/vdom/core/ssr/html.d.ts +32 -0
  453. package/dist/client/vdom/core/ssr/index.d.ts +25 -0
  454. package/dist/client/vdom/core/transform/component.d.ts +23 -0
  455. package/dist/client/vdom/core/transform/element.d.ts +21 -0
  456. package/dist/client/vdom/core/transform/fragment.d.ts +21 -0
  457. package/dist/client/vdom/core/transform/hole.d.ts +13 -0
  458. package/dist/client/vdom/core/transform/index.d.ts +46 -0
  459. package/dist/client/vdom/core/transform/states.d.ts +22 -0
  460. package/dist/client/vdom/core/transform/table.d.ts +28 -0
  461. package/dist/client/vdom/core/transform/text.d.ts +10 -0
  462. package/dist/client/vdom/core/vnode.d.ts +45 -0
  463. package/dist/client/vdom/dev/effect-guard.d.ts +8 -0
  464. package/dist/client/vdom/hooks/ai-stream.d.ts +46 -0
  465. package/dist/client/vdom/hooks/basic.d.ts +42 -0
  466. package/dist/client/vdom/hooks/chat.d.ts +91 -0
  467. package/dist/client/vdom/hooks/controlled.d.ts +27 -0
  468. package/dist/client/vdom/hooks/drag-media.d.ts +52 -0
  469. package/dist/client/vdom/hooks/env.d.ts +119 -0
  470. package/dist/client/vdom/hooks/input.d.ts +43 -0
  471. package/dist/client/vdom/hooks/observe.d.ts +60 -0
  472. package/dist/client/vdom/hooks/popup-manager.d.ts +92 -0
  473. package/dist/client/vdom/hooks/popup.d.ts +52 -0
  474. package/dist/client/vdom/hooks/stable.d.ts +45 -0
  475. package/dist/client/vdom/index.d.ts +67 -0
  476. package/dist/client/vdom/index.js +8 -0
  477. package/dist/client/vdom/jsx-runtime.d.ts +28 -0
  478. package/dist/client/vdom/jsx-runtime.js +1 -0
  479. package/dist/client/vdom/middlewares/api.d.ts +38 -0
  480. package/dist/client/vdom/middlewares/auth-i18n.d.ts +66 -0
  481. package/dist/client/vdom/middlewares/ws.d.ts +37 -0
  482. package/dist/client/vdom/store.d.ts +49 -0
  483. package/dist/client/vdom/testing.d.ts +46 -0
  484. package/dist/client/vdom/testing.js +2 -0
  485. package/dist/dev/index.d.ts +12 -0
  486. package/dist/dev/index.js +4 -4
  487. package/dist/{ai → server/ai}/contracts.d.ts +1 -1
  488. package/dist/{ai → server/ai}/index.d.ts +2 -2
  489. package/dist/{ai → server/ai}/types.d.ts +1 -1
  490. package/dist/{core → server/core}/router.d.ts +2 -4
  491. package/dist/{db → server/db}/contracts.d.ts +1 -1
  492. package/dist/server/db/postgres-server.d.ts +37 -0
  493. package/dist/server/db/redis-server.d.ts +32 -0
  494. package/dist/server/db/server.d.ts +30 -0
  495. package/dist/server/db/test-servers.d.ts +21 -0
  496. package/dist/{email → server/email}/contracts.d.ts +1 -1
  497. package/dist/{index.js → server/index.js} +3147 -2462
  498. package/dist/{ui → server/ui}/index.d.ts +2 -2
  499. package/dist/{user → server/user}/token.d.ts +1 -1
  500. package/dist/shared/router/trie.d.ts +61 -0
  501. package/docs/components-map.md +16 -4
  502. package/docs/style-guide.md +14 -2
  503. package/examples/apps/admin/README.md +23 -0
  504. package/examples/apps/admin/api.ts +27 -0
  505. package/examples/apps/admin/app.tsx +144 -0
  506. package/examples/apps/admin/main.tsx +8 -0
  507. package/examples/apps/admin/server.ts +37 -0
  508. package/examples/apps/auth/README.md +23 -0
  509. package/examples/apps/auth/api.ts +49 -0
  510. package/examples/apps/auth/app.tsx +137 -0
  511. package/examples/apps/auth/main.tsx +8 -0
  512. package/examples/apps/auth/server.ts +37 -0
  513. package/examples/apps/multi/README.md +23 -0
  514. package/examples/apps/multi/app.tsx +83 -0
  515. package/examples/apps/multi/main.tsx +8 -0
  516. package/examples/apps/multi/server.ts +33 -0
  517. package/examples/apps/todo/README.md +23 -0
  518. package/examples/apps/todo/api.ts +26 -0
  519. package/examples/apps/todo/app.tsx +128 -0
  520. package/examples/apps/todo/main.tsx +9 -0
  521. package/examples/apps/todo/server.ts +39 -0
  522. package/examples/hello-world/README.md +9 -0
  523. package/examples/hello-world/client.ts +14 -0
  524. package/examples/hello-world/routes.tsx +26 -0
  525. package/examples/hello-world/server.ts +46 -0
  526. package/examples/patterns/AppShell.tsx +224 -0
  527. package/examples/patterns/Dashboard.tsx +153 -0
  528. package/examples/patterns/DataScreen.tsx +104 -0
  529. package/examples/patterns/DetailPage.tsx +79 -0
  530. package/examples/patterns/Docs.tsx +105 -0
  531. package/examples/patterns/FocusTask.tsx +67 -0
  532. package/examples/patterns/Landing.tsx +90 -0
  533. package/examples/patterns/ListPage.tsx +77 -0
  534. package/examples/patterns/Mobile.tsx +154 -0
  535. package/examples/patterns/SettingsPage.tsx +98 -0
  536. package/examples/patterns/SplitWorkspace.tsx +113 -0
  537. package/package.json +61 -29
  538. package/dist/components/Editor/Editor.d.ts +0 -13
  539. package/dist/components/Editor/tools/format.d.ts +0 -11
  540. package/dist/components/Editor/tools/table.d.ts +0 -7
  541. package/dist/components/Editor/tools/types.d.ts +0 -15
  542. package/dist/components/Slider/Slider.d.ts +0 -19
  543. package/dist/components/Tabs/Tabs.d.ts +0 -12
  544. package/dist/components/index.js +0 -15
  545. package/dist/ui-dom/Confirm.d.ts +0 -8
  546. package/dist/ui-dom/Notification.d.ts +0 -8
  547. package/dist/ui-dom/Toast.d.ts +0 -8
  548. package/dist/ui-dom/ai.d.ts +0 -59
  549. package/dist/ui-dom/browser.d.ts +0 -10
  550. package/dist/ui-dom/debug.d.ts +0 -21
  551. package/dist/ui-dom/hooks/chat.d.ts +0 -11
  552. package/dist/ui-dom/hooks/events.d.ts +0 -30
  553. package/dist/ui-dom/hooks/external.d.ts +0 -20
  554. package/dist/ui-dom/hooks/index.d.ts +0 -29
  555. package/dist/ui-dom/hooks/input.d.ts +0 -33
  556. package/dist/ui-dom/hooks/media.d.ts +0 -17
  557. package/dist/ui-dom/hooks/popup.d.ts +0 -30
  558. package/dist/ui-dom/hooks/stable.d.ts +0 -35
  559. package/dist/ui-dom/hooks/types.d.ts +0 -77
  560. package/dist/ui-dom/i18n.d.ts +0 -31
  561. package/dist/ui-dom/index.d.ts +0 -47
  562. package/dist/ui-dom/index.js +0 -41
  563. package/dist/ui-dom/jsx-runtime.d.ts +0 -4
  564. package/dist/ui-dom/jsx-runtime.js +0 -1
  565. package/dist/ui-dom/locale/en_US.d.ts +0 -55
  566. package/dist/ui-dom/locale/zh_CN.d.ts +0 -55
  567. package/dist/ui-dom/middleware/api.d.ts +0 -91
  568. package/dist/ui-dom/middleware/auth.d.ts +0 -30
  569. package/dist/ui-dom/middleware/ws.d.ts +0 -33
  570. package/dist/ui-dom/motion.d.ts +0 -8
  571. package/dist/ui-dom/popup-tracker.d.ts +0 -36
  572. package/dist/ui-dom/popup.d.ts +0 -42
  573. package/dist/ui-dom/store.d.ts +0 -24
  574. package/dist/ui-dom/testing.d.ts +0 -68
  575. package/dist/ui-dom/testing.js +0 -7
  576. package/dist/ui-dom/types.d.ts +0 -632
  577. package/dist/ui-dom/use-chat.d.ts +0 -95
  578. package/dist/ui-dom/vdom3/README.d.ts +0 -32
  579. package/dist/ui-dom/vdom3/app.d.ts +0 -20
  580. package/dist/ui-dom/vdom3/audit.d.ts +0 -29
  581. package/dist/ui-dom/vdom3/build.d.ts +0 -20
  582. package/dist/ui-dom/vdom3/commands.d.ts +0 -21
  583. package/dist/ui-dom/vdom3/comp-index.d.ts +0 -18
  584. package/dist/ui-dom/vdom3/delegate.d.ts +0 -48
  585. package/dist/ui-dom/vdom3/events.d.ts +0 -17
  586. package/dist/ui-dom/vdom3/index.d.ts +0 -42
  587. package/dist/ui-dom/vdom3/jsx.d.ts +0 -32
  588. package/dist/ui-dom/vdom3/record.d.ts +0 -16
  589. package/dist/ui-dom/vdom3/registry.d.ts +0 -30
  590. package/dist/ui-dom/vdom3/render.d.ts +0 -39
  591. package/dist/ui-dom/vdom3/replay.d.ts +0 -28
  592. package/dist/ui-dom/vdom3/root.d.ts +0 -24
  593. package/dist/ui-dom/vdom3/router.d.ts +0 -31
  594. package/dist/ui-dom/vdom3/scheduler.d.ts +0 -23
  595. package/dist/ui-dom/vdom3/ssr.d.ts +0 -27
  596. package/dist/ui-dom/vdom3/sync.d.ts +0 -22
  597. package/dist/ui-dom/vdom3/types.d.ts +0 -173
  598. package/dist/ui-dom/vdom3/ui.d.ts +0 -16
  599. package/dist/ui-dom/vdom3.js +0 -41
  600. package/dist/ui-dom/vnode.d.ts +0 -13
  601. /package/dist/{make-executable-schema.test.d.ts → cli/content-sync.test.d.ts} +0 -0
  602. /package/dist/{ui-dom/testing.test.d.ts → cli/docs-cli.test.d.ts} +0 -0
  603. /package/dist/{components → client/components}/CodeBlock/highlight.d.ts +0 -0
  604. /package/dist/{components → client/components}/DatePicker/calendar-utils.d.ts +0 -0
  605. /package/dist/{components → client/components}/DiffView/diff-utils.d.ts +0 -0
  606. /package/dist/{components → client/components}/Markdown/parser.d.ts +0 -0
  607. /package/dist/{components → client/components}/Pipeline/dag-utils.d.ts +0 -0
  608. /package/dist/{components → client/components}/QRCode/qr.d.ts +0 -0
  609. /package/dist/{components → client/components}/Sparkline/sparkline-utils.d.ts +0 -0
  610. /package/dist/{ai → server/ai}/agent.d.ts +0 -0
  611. /package/dist/{ai → server/ai}/client.d.ts +0 -0
  612. /package/dist/{ai → server/ai}/sse.d.ts +0 -0
  613. /package/dist/{core → server/core}/serve.d.ts +0 -0
  614. /package/dist/{core → server/core}/ws.d.ts +0 -0
  615. /package/dist/{db → server/db}/errors.d.ts +0 -0
  616. /package/dist/{db → server/db}/memory-redis.d.ts +0 -0
  617. /package/dist/{db → server/db}/memory-sql.d.ts +0 -0
  618. /package/dist/{db → server/db}/postgres/connection.d.ts +0 -0
  619. /package/dist/{db → server/db}/postgres/pool.d.ts +0 -0
  620. /package/dist/{db → server/db}/postgres/protocol.d.ts +0 -0
  621. /package/dist/{db → server/db}/postgres/schema.d.ts +0 -0
  622. /package/dist/{db → server/db}/query-builder.d.ts +0 -0
  623. /package/dist/{db → server/db}/query.d.ts +0 -0
  624. /package/dist/{db → server/db}/redis/client.d.ts +0 -0
  625. /package/dist/{db → server/db}/redis/commands.d.ts +0 -0
  626. /package/dist/{db → server/db}/redis/connection.d.ts +0 -0
  627. /package/dist/{db → server/db}/redis/pipeline.d.ts +0 -0
  628. /package/dist/{db → server/db}/redis/pool.d.ts +0 -0
  629. /package/dist/{db → server/db}/redis/resp.d.ts +0 -0
  630. /package/dist/{db → server/db}/redis/subscriber.d.ts +0 -0
  631. /package/dist/{db → server/db}/sql-parser.d.ts +0 -0
  632. /package/dist/{email → server/email}/index.d.ts +0 -0
  633. /package/dist/{email → server/email}/smtp.d.ts +0 -0
  634. /package/dist/{graphql.d.ts → server/graphql.d.ts} +0 -0
  635. /package/dist/{index.d.ts → server/index.d.ts} +0 -0
  636. /package/dist/{make-executable-schema.d.ts → server/make-executable-schema.d.ts} +0 -0
  637. /package/dist/{messager → server/messager}/index.d.ts +0 -0
  638. /package/dist/{middleware → server/middleware}/cors.d.ts +0 -0
  639. /package/dist/{middleware → server/middleware}/rate-limit.d.ts +0 -0
  640. /package/dist/{middleware → server/middleware}/static.d.ts +0 -0
  641. /package/dist/{postgres → server/postgres}/client.d.ts +0 -0
  642. /package/dist/{postgres → server/postgres}/index.d.ts +0 -0
  643. /package/dist/{postgres → server/postgres}/types.d.ts +0 -0
  644. /package/dist/{queue → server/queue}/index.d.ts +0 -0
  645. /package/dist/{redis → server/redis}/client.d.ts +0 -0
  646. /package/dist/{redis → server/redis}/index.d.ts +0 -0
  647. /package/dist/{redis → server/redis}/types.d.ts +0 -0
  648. /package/dist/{request.d.ts → server/request.d.ts} +0 -0
  649. /package/dist/{response.d.ts → server/response.d.ts} +0 -0
  650. /package/dist/{scheduler → server/scheduler}/cron.d.ts +0 -0
  651. /package/dist/{scheduler → server/scheduler}/index.d.ts +0 -0
  652. /package/dist/{types.d.ts → server/types.d.ts} +0 -0
  653. /package/dist/{ui → server/ui}/html-safe.d.ts +0 -0
  654. /package/dist/{user → server/user}/index.d.ts +0 -0
  655. /package/dist/{user → server/user}/password.d.ts +0 -0
@@ -0,0 +1,28 @@
1
+ /**
2
+ * vdom transform — table(转换表——状态机核心)
3
+ *
4
+ * 转换表:oldState × newState → 策略函数(各状态文件实现)——
5
+ * 同态(对角)走「就地 patch」(text→setText / element→就地 diff /
6
+ * component→同类型复用 / hole→no-op);异态走「转换」——
7
+ * 占位法核心:**锚 ↔ 真实节点 replaceChild 互换**(childNodes 长度恒定——
8
+ * 同构不变量——禁止 removeChild 塌缩)。
9
+ *
10
+ * 转换策略(各文件实现):
11
+ * text.ts —— text ↔ element/component/fragment(文本节点 ↔ 结构)
12
+ * hole.ts —— hole ↔ element/component/fragment/text
13
+ * (**null <-> component / null <-> fragment 主场景**——
14
+ * 条件渲染 cond ? <X/> : null 的类型切换)
15
+ * element.ts —— element ↔ component/fragment/hole/text
16
+ * component.ts —— component ↔ element/fragment/hole(同类型复用——
17
+ * 异类型卸载 + 重建)
18
+ * fragment.ts —— fragment ↔ element/component/hole(多节点展开 ↔ 单节点)
19
+
20
+ */
21
+ import type { VNodeChild } from '../vnode.ts';
22
+ import type { NodeState, TransformContext, TransitionFn } from './index.ts';
23
+ /** 转换表(old × new → 策略)——同态 = 就地 patch(diff 层处理——表中为 null) */
24
+ export declare const TRANSITIONS: Record<NodeState, Record<NodeState, TransitionFn | null>>;
25
+ /** 转换调度(old × next → 策略)——同态返回 null(diff 就地 patch——不重建) */
26
+ export declare function transitionOf(oldState: NodeState, newState: NodeState): TransitionFn | null;
27
+ /** 执行转换(diff 调用——自动降级:同态/null 策略 → no-op) */
28
+ export declare function runTransition(oldState: NodeState, newState: NodeState, oldNode: unknown, nextNode: VNodeChild, ctx: TransformContext): Promise<void> | void;
@@ -0,0 +1,10 @@
1
+ /**
2
+ * vdom transform — text(文本转换——text ↔ X)
3
+ *
4
+ * 场景:条件渲染/列表项类型切换('a' <-> <div/> <-> 组件...)。
5
+ * 转换职责(old=text → new=X):旧文本节点移除(让位)——新节点由 diff
6
+ * 渲染到同一位置。同态 text → text 不在本表(就地 setText——diff 层)。
7
+ */
8
+ import type { TransitionFn } from './index.ts';
9
+ /** text → X:旧文本节点移除(让位) */
10
+ export declare const transitionText: TransitionFn;
@@ -0,0 +1,45 @@
1
+ /**
2
+ * vdom core — vnode 纯数据面(独立实现——零引用 ui-dom)
3
+ *
4
+ * 设计(对齐 vdom-x 契约 + 设计规则 §4.0/§6.3):
5
+ * ① vnode 纯数据——零回填字段(el/_render/_id 等全部在影子层——可自由克隆/
6
+ * 比较/序列化——用户写 JSX 就能推导 vnode 形状)
7
+ * ② h() 除 key 剥离外零转换——children 原样(false/嵌套数组保留——不 filter)
8
+ * ③ key 业务身份声明协议:key 从 props 剥离进 vnode.key(组件 props 不见 key)
9
+ * ④ children 值域协议:vnode/string/number/boolean/空洞(null/undefined)/嵌套数组
10
+ * (数组 = 隐式 Fragment——递归展开统一在 childrenOf——单一规则源——
11
+ * 空洞保留——占位法保长度恒定)
12
+ * ⑤ 组件两阶段:工厂 = mount(一次——初始化状态/订阅/数据预取);
13
+ * renderFn = 每次渲染(同步或 async——异步边界 = ctx.data 管道——不挂起)
14
+ * ⑥ Fragment 内部符号——公共面不导出(数组 = 隐式 Fragment;
15
+ * `<></>` 经 jsx-runtime 子路径)
16
+ */
17
+ import type { UIContext } from '../context/UIContext.ts';
18
+ /** vnode——纯数据 */
19
+ export interface VNode {
20
+ /** 标签名 / 组件 / 内部符号(Fragment) */
21
+ type: string | symbol | Component;
22
+ props: Record<string, unknown>;
23
+ /** 业务身份声明(无自动生成——无 key = 位置身份) */
24
+ key: string | null;
25
+ children?: VNodeChild[];
26
+ }
27
+ /** children 值域:vnode/string/number/boolean/空洞/嵌套数组(数组 = 隐式 Fragment) */
28
+ export type VNodeChild = VNode | string | number | boolean | null | undefined | VNodeChild[];
29
+ /** renderFn——每次渲染(读最新 props——同步或 async——异步边界 = ctx.data) */
30
+ export type RenderFn<P = Record<string, unknown>> = (props: P) => VNode | null | (VNode | null)[] | Promise<VNode | null | (VNode | null)[]>;
31
+ /** 组件(两阶段):
32
+ * 工厂 = mount(一次——初始化状态/订阅/数据预取(await ctx.data——管道保证))
33
+ * renderFn = 每次渲染(ctx.render()/props 变化触发) */
34
+ export type Component<P = Record<string, unknown>, C = UIContext> = (initProps: P, ctx: C) => RenderFn<P> | Promise<RenderFn<P>>;
35
+ type HType = string | symbol | Component<any, any>;
36
+ /** h()——创建 vnode(纯数据——除 key 剥离外零转换)
37
+ * children 原样:单子节点直接存、多子节点存数组、无子节点不存——false/嵌套
38
+ * 数组保留(不 filter——空洞占位法在消费侧) */
39
+ export declare function h(type: HType, props?: Record<string, unknown> | null, ...children: VNodeChild[]): VNode;
40
+ /** jsx 运行时(自动导入——`<div/>` 编译目标——React 兼容签名 jsx(type, props, key)——
41
+ * props 内 key 同样剥离;jsxs/jsxDEV 同形状(children 已在 props.children) */
42
+ export declare function jsx(type: HType, props: Record<string, unknown> | null, key?: string | null): VNode;
43
+ export declare const jsxs: typeof jsx;
44
+ export declare const jsxDEV: typeof jsx;
45
+ export {};
@@ -0,0 +1,8 @@
1
+ /** renderFn 执行窗口(begin/end——渲染路径副作用检测) */
2
+ export declare function beginRender(): void;
3
+ export declare function endRender(): void;
4
+ /** 安装守卫(幂等——patch 一次):
5
+ * @param target 浏览器 window / node globalThis(SSR 端)
6
+ * @param ssrOnly SSR 端——warn + noop(timer 不执行——unhandledRejection
7
+ * 崩溃链阻断——服务器进程保护);浏览器端 warn-only */
8
+ export declare function installEffectGuard(target: unknown, ssrOnly?: boolean): void;
@@ -0,0 +1,46 @@
1
+ /**
2
+ * vdom hooks — ai-stream(流式 AI 工具——P2 组件迁移移植——零 ui-dom)
3
+ *
4
+ * wf: SSE 协议流式解析(event: <name> / data: <json> 块)——分发到
5
+ * onToken/onToolCall/onApproval 等回调——AbortController 取消——
6
+ * onError 统一(HTTP 状态映射/网络失败/解析失败)——provider 协议
7
+ * 类型来自 server/ai/types(服务端同源契约)。
8
+ *
9
+ * 组件消费(SheetGrid/SlideCanvas/Editor——AI 公式/生成)——
10
+ * 非公共面(内部路径导入——公共面保持 h/jsx/uiServe/UIRouter)。
11
+ */
12
+ import type { WfApprovalRequest, WfDone, WfError, WfStreamEvent, WfToolCall, WfToolProgress, WfToolResult, WfUsage } from '../../../server/ai/types.ts';
13
+ /** 事件回调面(组件消费) */
14
+ export interface AiStreamCallbacks {
15
+ onToken?: (text: string) => void;
16
+ onToolCall?: (call: WfToolCall) => void;
17
+ onToolResult?: (result: WfToolResult) => void;
18
+ onToolProgress?: (p: WfToolProgress) => void;
19
+ onStep?: (step: {
20
+ type: 'llm' | 'tool';
21
+ content?: string;
22
+ toolCallId?: string;
23
+ name?: string;
24
+ }) => void;
25
+ onApproval?: (req: WfApprovalRequest) => void;
26
+ onUsage?: (u: WfUsage) => void;
27
+ onDone?: (d: WfDone) => void;
28
+ onError?: (e: WfError) => void;
29
+ /** 未知/x:* 事件兜底 */
30
+ onEvent?: (name: string, data: unknown) => void;
31
+ }
32
+ export interface AiStreamOptions extends AiStreamCallbacks {
33
+ headers?: Record<string, string>;
34
+ signal?: AbortSignal;
35
+ traceId?: string;
36
+ /** 事件记录(record 开关——默认开——RECORD_LIMIT 环) */
37
+ record?: boolean;
38
+ }
39
+ export interface AiStreamHandle {
40
+ abort(): void;
41
+ done: Promise<void>;
42
+ traceId: string;
43
+ events: WfStreamEvent[];
44
+ }
45
+ /** wf: SSE 流式请求(POST——事件回调分发——Abort 取消) */
46
+ export declare function aiStream(url: string, body: unknown, options?: AiStreamOptions): AiStreamHandle;
@@ -0,0 +1,42 @@
1
+ /**
2
+ * vdom hooks — 基础 hooks(useStableRef/useOpen/useGlobalKey)
3
+ *
4
+ * 设计(render-only 模型——设计规则 §4.2):
5
+ * - useStableRef:稳定引用容器(跨渲染保持——hooks 内部传递——引擎责任)
6
+ * - useOpen:受控/非受控开关(**受控缺回调 warn**——设计规则 §5.2——
7
+ * 静默不可用防护);非受控内部状态 + 显式渲染
8
+ * - useGlobalKey:全局键盘监听(Escape 关闭等——unmount 自动清理——
9
+ * 经 ctx.browser.window——零全局直接访问)
10
+ */
11
+ import type { HookEnv } from './env.ts';
12
+ /** 稳定引用容器(跨渲染保持——回调稳定引用——hooks 内部传递) */
13
+ export interface StableRef<T> {
14
+ current: T;
15
+ }
16
+ /** 稳定引用(**双形状**:容器 { current }——vdom 内部;ref 回调
17
+ * (el) => void——ui-dom 兼容——Select 用 `useStableRef(init, cleanup)`) */
18
+ export declare function useStableRef<T>(env: HookEnv, initial: T | ((el: T | null) => void), cleanup?: () => void): StableRef<T> | ((el: T | null) => void);
19
+ /** useOpen 结果(getter open——渲染期读最新) */
20
+ export interface OpenState {
21
+ open: boolean;
22
+ setOpen(v: boolean): void;
23
+ toggle(): void;
24
+ }
25
+ /** useOpen 选项(ui-dom 兼容对象形状——组件消费:{ open, onOpenChange, name }) */
26
+ export interface UseOpenOptions {
27
+ open?: boolean;
28
+ onOpenChange?: (v: boolean) => void;
29
+ openOnFocus?: boolean;
30
+ name?: string;
31
+ }
32
+ /** 受控/非受控开关(受控:open 由父独占——onOpenChange 唯一出口)
33
+ * **渲染期调用**(renderFn 内 ctx.ui.useOpen)——hook 状态缓存(per-instance
34
+ * index)——受控值读最新 props(设计规则 §3.1——renderFn 读最新 props)
35
+ * **双形状**:`useOpen(init, controlled?)`(vdom 既有)/
36
+ * `useOpen({ open, onOpenChange, name })`(ui-dom 兼容——组件消费) */
37
+ export declare function useOpen(env: HookEnv, initOrOpts: boolean | UseOpenOptions, controlled?: {
38
+ open?: boolean;
39
+ onOpenChange?: (v: boolean) => void;
40
+ }): OpenState;
41
+ /** 全局键盘监听(Escape 关闭等——unmount 自动清理) */
42
+ export declare function useGlobalKey(env: HookEnv, matchOrHandler: string | ((e: KeyboardEvent) => boolean) | ((e: KeyboardEvent) => void), handler?: (e: KeyboardEvent) => void): () => void;
@@ -0,0 +1,91 @@
1
+ /**
2
+ * vdom hooks — useChat(AI 对话会话——流式消息累积)
3
+ *
4
+ * 设计(设计规则 §4.2——useChat 会话:消息累积/工具调用/HITL 审批——
5
+ * handle 带 subscribe(cb)——ctx.ui.useExternal(chat) 订阅会话变化——
6
+ * 流式事件 → notify → 订阅组件自动重渲染——高频 notify 由写者控制频率):
7
+ * - send(text):用户消息 + 助手流式累积(SSE/NDJSON 行解析——fetch POST)
8
+ * - handle 兼容 ExternalStore(state = messages getter——useExternal 消费)
9
+ * - stop:AbortController 中断流式
10
+ * - 消息形状:role/content/toolCalls/status/approval(HITL 审批位)
11
+ */
12
+ import type { HookEnv } from './env.ts';
13
+ import type { ExternalStore } from '../store.ts';
14
+ /** 聊天消息(AI 会话——工具调用/HITL 审批位) */
15
+ /** 工具调用(assistant 发起——HITL 审批——ui-dom 兼容 call/progress/result 状态面) */
16
+ export interface ChatToolCall {
17
+ id: string;
18
+ name: string;
19
+ args: unknown;
20
+ approved?: boolean;
21
+ feedback?: string;
22
+ status?: 'running' | 'ok' | 'error';
23
+ call?: unknown;
24
+ progress?: unknown;
25
+ result?: unknown;
26
+ /** HITL 审批请求(ui-dom 兼容——AiChat 读 toolCall 级 approval) */
27
+ approval?: import('../../../server/ai/types.ts').WfApprovalRequest;
28
+ }
29
+ export interface ChatMessage {
30
+ id: string;
31
+ role: 'user' | 'assistant' | 'system';
32
+ content: string;
33
+ /** 推理过程(wf:done 后挂上——ReasoningBlock 展示——ui-dom 兼容) */
34
+ reasoning?: string;
35
+ /** 工具调用(assistant 发起——HITL 审批) */
36
+ toolCalls?: ChatToolCall[];
37
+ /** 消息状态(流式中/错误) */
38
+ status?: 'streaming' | 'error';
39
+ /** 用量(ui-dom 兼容) */
40
+ usage?: import('../../../server/ai/types.ts').WfUsage;
41
+ /** HITL 审批请求(ui-dom 兼容——AiChat 读消息级 approval) */
42
+ approval?: import('../../../server/ai/types.ts').WfApprovalRequest;
43
+ /** 错误(ui-dom 兼容) */
44
+ error?: import('../../../server/ai/types.ts').WfError;
45
+ }
46
+ export interface ChatOptions {
47
+ /** 会话端点(默认 /api/chat——POST——NDJSON 流式响应) */
48
+ url?: string | (() => string);
49
+ /** 系统提示(首条 system 消息) */
50
+ system?: string;
51
+ /** 初始消息 */
52
+ initialMessages?: ChatMessage[];
53
+ /** 流式分块解析(默认:每行 JSON——{ content }) */
54
+ parseChunk?: (line: string) => {
55
+ content?: string;
56
+ toolCalls?: ChatMessage['toolCalls'];
57
+ } | null;
58
+ }
59
+ /** 会话状态 */
60
+ export type ChatStatus = 'idle' | 'streaming' | 'error';
61
+ /** 会话 handle(兼容 ExternalStore——useExternal(chat) 订阅) */
62
+ export interface ChatHandle extends ExternalStore<ChatMessage[]> {
63
+ /** 消息列表(= state——getter) */
64
+ messages: ChatMessage[];
65
+ /** 发送消息(用户消息 + 助手流式累积——无参用 state.input——ui-dom 兼容) */
66
+ send(text?: string): Promise<void>;
67
+ /** 中断流式 */
68
+ stop(): void;
69
+ /** 重试(ui-dom 兼容——AiChat onRetry——重发最后一条用户消息) */
70
+ retry(): void;
71
+ /** 清空会话 */
72
+ reset(): void;
73
+ /** 会话状态 */
74
+ status: ChatStatus;
75
+ /** 输入态(ui-dom 兼容——AiChat 受控输入) */
76
+ input: string;
77
+ setInput(v: string): void;
78
+ /** 流式中(ui-dom 兼容) */
79
+ streaming: boolean;
80
+ /** 最近错误(ui-dom 兼容) */
81
+ error: import('../../../server/ai/types.ts').WfError | null;
82
+ /** 用量(ui-dom 兼容——wf:usage) */
83
+ usage: import('../../../server/ai/types.ts').WfUsage | null;
84
+ /** 最近 wf:step(思考/工具指示——done/error 清空) */
85
+ step: import('../../../server/ai/types.ts').WfStep | null;
86
+ /** 响应 HITL 审批(协议 §4.5——ui-dom 兼容:
87
+ * approve(decision, note?, modifiedArgs?)——modified 决策带修改后参数) */
88
+ approve(decision: string, note?: string, modifiedArgs?: Record<string, unknown>): Promise<void>;
89
+ }
90
+ /** useChat(工厂调用——会话生命周期——订阅经 useExternal) */
91
+ export declare function useChat(env: HookEnv, opts: ChatOptions): ChatHandle;
@@ -0,0 +1,27 @@
1
+ /**
2
+ * vdom hooks — useControlled(受控值——受控 props 语义)
3
+ *
4
+ * 规则(设计规则 §5.2/§5.3):受控值由父独占——onChange 唯一出口;
5
+ * 非受控内部状态(hook 状态缓存——渲染期调用——读最新 props);
6
+ * 受控缺回调 warn(静默不可用防护)。
7
+ */
8
+ import type { HookEnv } from './env.ts';
9
+ /** useControlled 选项(ui-dom 兼容——含 name——组件消费) */
10
+ export interface ControlledOptions<T> {
11
+ value?: T;
12
+ onChange?: (v: T) => void;
13
+ name?: string;
14
+ }
15
+ /** useControlled 结果 */
16
+ export interface ControlledValue<T> {
17
+ /** 当前值(受控读 props——非受控读内部状态) */
18
+ value: T;
19
+ /** 设置(受控 → onChange 回调;非受控 → 内部 + 重渲染) */
20
+ setValue(v: T): void;
21
+ /** 原受控选项(ui-dom 兼容——组件读 controlled 原引用) */
22
+ controlled: ControlledOptions<T>;
23
+ }
24
+ /** 受控/非受控值(渲染期调用——受控读最新 props)
25
+ * **双形状**:useControlled(controlled, defaultValue?)——defaultValue 可选
26
+ * (ui-dom 兼容单参对象——无默认值时非受控初始为 undefined) */
27
+ export declare function useControlled<T>(env: HookEnv, controlled: ControlledOptions<T>, defaultValue?: T): ControlledValue<T>;
@@ -0,0 +1,52 @@
1
+ /**
2
+ * vdom hooks — drag/breakpoint(useDragDrop + useMedia/useBreakpoint)
3
+ *
4
+ * - useDragDrop:拖拽(draggable enumerated 属性显式 'true'——field/
5
+ * attributes 已处理;drag 事件回调——unmount 清理)
6
+ * - useMedia:媒体查询匹配(matchMedia——change 监听 → 重渲染——
7
+ * 经 ctx.browser.window——零全局直接访问;环境无 matchMedia → 恒 false)
8
+ * - useBreakpoint:命名断点(min-width 语义——当前匹配的最大宽度断点)
9
+ */
10
+ import type { HookEnv } from './env.ts';
11
+ /** useDragDrop 结果(拖拽属性——应用于拖拽源/放置目标) */
12
+ export interface DragDrop {
13
+ /** 拖拽源属性(draggable + drag 事件) */
14
+ draggableProps: {
15
+ draggable: true;
16
+ onDragStart: (e: DragEvent) => void;
17
+ onDragEnd: (e: DragEvent) => void;
18
+ };
19
+ /** 拖拽源属性别名(ui-dom 兼容——Kanban 用) */
20
+ dragProps: {
21
+ draggable: true;
22
+ onDragStart: (e: DragEvent) => void;
23
+ onDragEnd: (e: DragEvent) => void;
24
+ };
25
+ /** 放置目标属性 */
26
+ dropProps: {
27
+ onDragOver: (e: DragEvent) => void;
28
+ onDragLeave: (e: DragEvent) => void;
29
+ onDrop: (e: DragEvent) => void;
30
+ };
31
+ }
32
+ export interface DragDropOptions {
33
+ onDragStart?: (e: DragEvent, data?: unknown) => void;
34
+ onDragEnd?: (e: DragEvent) => void;
35
+ onDragOver?: (e: DragEvent) => void;
36
+ onDragLeave?: (e: DragEvent) => void;
37
+ onDrop?: (e: DragEvent, data?: unknown) => void;
38
+ /** 拖拽数据(dataTransfer 传递) */
39
+ data?: unknown;
40
+ }
41
+ /** 拖拽(draggable enumerated 显式 'true'——事件回调——组件层传 data) */
42
+ export declare function useDragDrop(env: HookEnv, opts: DragDropOptions): DragDrop;
43
+ /** 媒体查询匹配(**getter 形态——2026-08**)——返回 `() => boolean`:
44
+ * 任何时刻调用都返回最新匹配值——mount 闭包持有 getter 永远最新——
45
+ * 「必须在 renderFn 内调用」的调用位置规则**在 API 形状上不存在**
46
+ * (旧快照返回:mount 闭包读一次永不更新——契约 6 静默失效类)
47
+ * **登记幂等(按 query 的实例级 keyed——不依赖调用顺序)**:任意位置
48
+ * 任意次数调用不重复监听——change → 更新 + requestRender → 重渲染 */
49
+ export declare function useMedia(env: HookEnv, query: string): () => boolean;
50
+ /** 命名断点(min-width 语义——**getter 形态**——`bp()` 任何时刻最新——
51
+ * 事件驱动重渲染——内部 useMedia 按 query 幂等登记) */
52
+ export declare function useBreakpoint(env: HookEnv, breakpoints: Record<string, number>): () => string;
@@ -0,0 +1,119 @@
1
+ /**
2
+ * vdom hooks — env(hooks 环境——per 组件实例)
3
+ *
4
+ * 设计(2026-12):hooks 经 **ctx.ui 面**调用(`ctx.ui.useXXX`)——
5
+ * instCtx.ui = createUi(env)——env 闭包绑定**当前组件实例**(compId 渲染
6
+ * 触发/卸载注册)——无全局状态(零全局依赖——测试隔离天然)。
7
+ *
8
+ * requestRender = 组件级重渲染触发(当前实现:页面级 render——组件复用
9
+ * 保持状态——组件级精准渲染为后续优化)。
10
+ */
11
+ import type { ExternalStore } from '../store.ts';
12
+ import { type PopupHandle, type PopupOpenOptions } from './popup-manager.ts';
13
+ import { type TweenOptions } from './stable.ts';
14
+ /** hooks 环境(per 组件实例——renderComponent 注入) */
15
+ export interface HookEnv {
16
+ /** 组件级渲染触发(store 变化/事件驱动 hooks → 重渲染) */
17
+ requestRender(): void;
18
+ /** 卸载注册(useExternal 退订等清理) */
19
+ onUnmount(fn: () => void): void;
20
+ /** 浏览器环境(全局监听等——零全局直接访问) */
21
+ getBrowser(): import('../browser/Browser.ts').Browser | null;
22
+ /** hook 状态缓存(渲染期调用——按调用顺序 index——per-instance) */
23
+ nextHookIndex(): number;
24
+ getHookState<T>(idx: number): T | undefined;
25
+ setHookState<T>(idx: number, v: T): void;
26
+ /** **实例级 keyed 登记(2026-08——getter 化 hooks)**:按业务 key 幂等——
27
+ * 不依赖调用顺序(useMedia/useExternal 可在任意位置任意次数调用——
28
+ * 订阅注册幂等按 key——「调用位置规则」在 API 形状上不存在) */
29
+ getInstanceData(): Map<unknown, unknown>;
30
+ /** 渲染完成后回调(挂载后动作——目标元素已就绪) */
31
+ scheduleAfterRender(fn: () => void): void;
32
+ /** 共享 ctx(portal 独立通道——浮层内容组件继承 sharedCtx 独立实例) */
33
+ getSharedContext(): import('../context/UIContext.ts').UIContext | null;
34
+ }
35
+ /** hooks 注入面(ctx.ui)
36
+ *
37
+ * **getter 化纪律(2026-08——返回值形态 = 语义的载体)**:
38
+ * - `() => T`(getter):会随时间变化——**任何位置调用返回最新值**——
39
+ * mount 闭包持有永远最新——不存在「调用位置规则」(useExternal/
40
+ * useMedia/useBreakpoint——旧快照形态的静默失效类)
41
+ * - `{...}`(handle):一次性创建的资源/服务——mount 期获取长期持有
42
+ * - 直接值:纯计算/常量
43
+ * - **登记幂等**:getter 类 hook 按业务 key 登记(不依赖调用顺序)——
44
+ * 任意位置任意次数调用不重复订阅/监听 */
45
+ export interface Ui {
46
+ /** 共享状态订阅(**getter 形态**——`get()` 永远最新——store 变化 →
47
+ * 组件重渲染——unmount 自动退订——订阅幂等(重复调用不重复订阅)) */
48
+ useExternal<T>(store: ExternalStore<T>): () => T;
49
+ /** 响应式信号(顶层 createSignal——getter 读 + set/update 写 + 订阅——
50
+ * useExternal 同源消费(Signal 兼容 ExternalStore)) */
51
+ signal<T>(initial: T): import('../store.ts').Signal<T>;
52
+ /** 资源注册(**hold 语义**:声明的资源在组件卸载时自动释放——等价
53
+ * onUnmount——推荐名——「我持有的东西,卸载时释放」) */
54
+ hold(fn: () => void): void;
55
+ /** 稳定引用(双形状:容器 { current } / ref 回调 (el) => void——ui-dom 兼容) */
56
+ useStableRef<T>(initial: T | ((el: T | null) => void), cleanup?: () => void): import('./basic.ts').StableRef<T> | ((el: T | null) => void);
57
+ /** 受控/非受控开关(受控缺回调 warn——静默不可用防护——
58
+ * 双形状:useOpen(init, controlled?) / useOpen({ open, onOpenChange, name })) */
59
+ useOpen(initOrOpts: boolean | import('./basic.ts').UseOpenOptions, controlled?: {
60
+ open?: boolean;
61
+ onOpenChange?: (v: boolean) => void;
62
+ }): import('./basic.ts').OpenState;
63
+ /** 卸载注册(ui-dom 兼容——ctx.ui.onUnmount) */
64
+ onUnmount(fn: () => void): void;
65
+ /** 全局键盘监听(Escape 关闭等——unmount 自动清理——
66
+ * ui-dom 兼容单参:useGlobalKey((e) => ...) 无条件监听) */
67
+ useGlobalKey(matchOrHandler: string | ((e: KeyboardEvent) => boolean) | ((e: KeyboardEvent) => void), handler?: (e: KeyboardEvent) => void): () => void;
68
+ /** 命令式弹窗(唯一形态——2027-03:ctx.popup.open——toast 心智——
69
+ * 调用点构建内容——内核自管理挂载/更新/卸载——组件内部句柄同步样板) */
70
+ openPopup(opts: PopupOpenOptions): PopupHandle;
71
+ /** 弹层位置跟踪(scroll/resize 重算——Affix 阈值/宽度——0-rect 防护) */
72
+ usePopupPosition(options: import('./popup.ts').PopupPositionOptions): {
73
+ top: number;
74
+ left: number;
75
+ refresh: () => void;
76
+ };
77
+ /** 受控值(受控 props 语义——onChange 唯一出口——受控缺回调 warn) */
78
+ useControlled<T>(controlled: import('./controlled.ts').ControlledOptions<T>, defaultValue?: T): import('./controlled.ts').ControlledValue<T>;
79
+ /** 滚动位置跟踪(rAF 节流——事件驱动重渲染——视口/内部容器通用——
80
+ * ui-dom 兼容:{ getScroller } 对象 / 字符串 / 元素 / 函数) */
81
+ useScrollPosition(target?: import('./observe.ts').ScrollTarget): import('./observe.ts').ScrollPosition;
82
+ /** 可见性观察(IntersectionObserver——isIn 响应式——环境无 IO → 恒 false——
83
+ * ui-dom 兼容:{ root, threshold, target } 对象 / 元素 / 函数——
84
+ * 返回 observe/disconnect/ready——组件自管模式) */
85
+ useInView(options?: import('./observe.ts').UseInViewOptions | HTMLElement | (() => HTMLElement | null)): import('./observe.ts').InView;
86
+ /** 受控输入(内部输入态——焦点保持——IME 门控——选中回填) */
87
+ useControlledInput(controlled: {
88
+ value?: string;
89
+ onChange?: (v: string) => void;
90
+ name?: string;
91
+ }, opts?: {
92
+ name?: string;
93
+ }): import('./input.ts').ControlledInput;
94
+ /** 拖拽(draggable enumerated + drag 事件——dataTransfer 数据) */
95
+ useDragDrop(opts: import('./drag-media.ts').DragDropOptions): import('./drag-media.ts').DragDrop;
96
+ /** 媒体查询匹配(**getter 形态**——`match()` 任何时刻最新——变更→
97
+ * 自动重渲染——注册幂等按 query——任意位置调用) */
98
+ useMedia(query: string): () => boolean;
99
+ /** 命名断点(min-width 语义——**getter 形态**——`bp()` 当前最大断点) */
100
+ useBreakpoint(breakpoints: Record<string, number>): () => string;
101
+ /** AI 对话会话(流式消息累积——handle 兼容 useExternal 订阅) */
102
+ useChat(opts: import('./chat.ts').ChatOptions): import('./chat.ts').ChatHandle;
103
+ /** 数值补间(rAF + ease + reduced-motion 直落——目标变化自动补间——
104
+ * **对象 getter**:`tween.value` 永远最新——mount 闭包持有安全) */
105
+ useTween(target: number, opts?: TweenOptions): {
106
+ readonly value: number;
107
+ reset: (to: number) => void;
108
+ };
109
+ /** 指针拖拽(pointerdown 捕获 → window move/up 活动期监听——卸载释放) */
110
+ useDrag(options: import('./stable.ts').DragOptions): {
111
+ onPointerDown: (e: PointerEvent) => void;
112
+ };
113
+ /** 可视视口跟踪(键盘弹起/缩放——vv 不可用 → window resize fallback) */
114
+ useVisualViewport(): import('./stable.ts').VisualViewportHandle;
115
+ /** 响应式系统偏好(prefers-reduced-motion——mount 期一次判定) */
116
+ useReducedMotion(): boolean;
117
+ }
118
+ /** 创建 ctx.ui 面(env 绑定当前组件实例) */
119
+ export declare function createUi(env: HookEnv): Ui;
@@ -0,0 +1,43 @@
1
+ /**
2
+ * vdom hooks — useControlledInput(受控输入——设计规则 §5.3 纪律)
3
+ *
4
+ * 核心(受控输入纪律):**输入态不依赖受控 value 回流**——
5
+ * - keyword:内部输入态(输入期间 value 走内部态——不触发 onChange 回流——
6
+ * 父组件 render 不重挂 input——**焦点保持**)
7
+ * - setValue:触发 onChange(受控回流)
8
+ * - selectedLabel:选中回填(关闭后 input 回填选中 label——受控 onChange
9
+ * 不渲染时 props.value 不回流——input 空的坑)
10
+ * - **IME composition 门控**:中文输入法组合期间受控 value 重置打断——
11
+ * isComposing 门控 + onCompositionEnd 处理最终值
12
+ */
13
+ import type { HookEnv } from './env.ts';
14
+ export interface ControlledInput {
15
+ /** 原受控选项(ui-dom 兼容——Mentions 读 controlled 原引用) */
16
+ controlled: {
17
+ value?: string;
18
+ onChange?: (v: string) => void;
19
+ name?: string;
20
+ };
21
+ /** 受控值(渲染期读 props) */
22
+ value: string;
23
+ /** 触发 onChange(受控回流) */
24
+ setValue(v: string): void;
25
+ /** 内部输入态(输入期间——不回流——焦点保持) */
26
+ keyword: string;
27
+ setKeyword(v: string): void;
28
+ /** 选中回填(关闭后 input 回填选中 label) */
29
+ selectedLabel: string;
30
+ setSelectedLabel(v: string): void;
31
+ /** IME 组合门控(中文输入法) */
32
+ isComposing: boolean;
33
+ onCompositionStart(): void;
34
+ onCompositionEnd(): void;
35
+ }
36
+ /** 受控输入(渲染期调用——受控值读最新 props——内部态 hook 缓存) */
37
+ export declare function useControlledInput(env: HookEnv, controlled: {
38
+ value?: string;
39
+ onChange?: (v: string) => void;
40
+ name?: string;
41
+ }, opts?: {
42
+ name?: string;
43
+ }): ControlledInput;
@@ -0,0 +1,60 @@
1
+ /**
2
+ * vdom hooks — observe(事件驱动响应式 hooks:useScrollPosition/useInView)
3
+ *
4
+ * 设计(设计规则 §4.2——hooks 是事件驱动重渲染——浏览器事件 → render——
5
+ * 与 $ 的「赋值自动」本质不同):
6
+ * - useScrollPosition:全局 scroll + rAF 节流——y 响应式(视口/内部容器
7
+ * 通用)——scroll 事件 → 重渲染——unmount 清理
8
+ * - useInView:IntersectionObserver——isIn 响应式——IO 回调 → 重渲染——
9
+ * unmount disconnect;环境无 IO(jsdom)→ 恒 false(测试注入 mock)
10
+ * - **目标元素未挂载**(首帧 ref 未就绪)→ 微任务重试注册(限次——防无限)
11
+ *
12
+ * 浏览器能力经 env.getBrowser()(零全局直接访问——设计规则 §5.5)。
13
+ */
14
+ import type { HookEnv } from './env.ts';
15
+ /** useScrollPosition 选项(ui-dom 兼容对象形状——组件消费:{ getScroller }) */
16
+ export interface UseScrollPositionOptions {
17
+ /** 滚动容器 getter(HTMLElement | Window——组件自管容器场景) */
18
+ getScroller?: () => HTMLElement | Window | null;
19
+ /** 容器(string 选择器 / 元素) */
20
+ root?: string | HTMLElement;
21
+ }
22
+ /** useScrollPosition 结果(**对象 getter 形态**——y/x 读时求值——mount
23
+ * 闭包持有永远最新——位置规则不存在;refresh 手动重算驱动) */
24
+ export interface ScrollPosition {
25
+ readonly y: number;
26
+ readonly x: number;
27
+ /** 手动重算(组件调用方驱动——读当前滚动位置——不触发渲染) */
28
+ refresh(): void;
29
+ }
30
+ /** 目标解析(ui-dom 兼容:对象 { getScroller } / 字符串 / 元素 / 函数 / 缺省=窗口) */
31
+ export type ScrollTarget = HTMLElement | (() => HTMLElement | null) | string | UseScrollPositionOptions;
32
+ /** 滚动位置跟踪(视口或内部容器——rAF 节流——事件驱动重渲染) */
33
+ export declare function useScrollPosition(env: HookEnv, target?: ScrollTarget): ScrollPosition;
34
+ /** useInView 选项(ui-dom 兼容对象形状——组件消费:{ root, threshold, target }) */
35
+ export interface UseInViewOptions {
36
+ /** 可见性变化回调(ui-dom 兼容——InfiniteScroll 用——双参 (entry, isIn)) */
37
+ onChange?(entry: unknown, isIn: boolean): void;
38
+ /** 根容器(元素或渲染期 getter——ui-dom 兼容) */
39
+ root?: HTMLElement | null | (() => HTMLElement | Element | null);
40
+ /** 阈值(值或渲染期 getter) */
41
+ threshold?: number | number[] | (() => number | number[]);
42
+ /** 边距(字符串或渲染期 getter——ui-dom 渲染期函数形状) */
43
+ rootMargin?: string | (() => string);
44
+ target?: HTMLElement | (() => HTMLElement | null);
45
+ }
46
+ /** useInView 结果(**对象 getter 形态**——isIn/ready 读时求值——mount
47
+ * 闭包持有永远最新) */
48
+ export interface InView {
49
+ readonly isIn: boolean;
50
+ /** 绑定 ref(el 挂载 → 观察;null → 断开) */
51
+ ref(el: HTMLElement | null): void;
52
+ /** 手动开始观察(组件自管 el 场景——BackTop/InView) */
53
+ observe(el: HTMLElement): void;
54
+ /** 停止观察 */
55
+ disconnect(): void;
56
+ /** 是否已注册(BackTop 用:ready && !isIn → 显示) */
57
+ readonly ready: boolean;
58
+ }
59
+ /** 可见性观察(IntersectionObserver——IO 回调 → 重渲染——环境无 IO → 恒 false) */
60
+ export declare function useInView(env: HookEnv, options?: UseInViewOptions | HTMLElement | (() => HTMLElement | null)): InView;