dsh-plugin-core 0.31.0 → 0.33.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 (685) hide show
  1. package/dist/adv/explorer/FileBrowser.d.ts +58 -0
  2. package/dist/adv/explorer/FileBrowser.d.ts.map +1 -0
  3. package/dist/adv/explorer/FileBrowser.js +632 -0
  4. package/dist/adv/explorer/FileBrowser.js.map +1 -0
  5. package/dist/adv/explorer/crumb-nav.d.ts +45 -0
  6. package/dist/adv/explorer/crumb-nav.d.ts.map +1 -0
  7. package/dist/adv/explorer/crumb-nav.js +78 -0
  8. package/dist/adv/explorer/crumb-nav.js.map +1 -0
  9. package/dist/adv/explorer/crumbs-menu.d.ts +37 -0
  10. package/dist/adv/explorer/crumbs-menu.d.ts.map +1 -0
  11. package/dist/adv/explorer/crumbs-menu.js +102 -0
  12. package/dist/adv/explorer/crumbs-menu.js.map +1 -0
  13. package/dist/adv/explorer/explorer-css.d.ts +2 -0
  14. package/dist/adv/explorer/explorer-css.d.ts.map +1 -0
  15. package/dist/adv/explorer/explorer-css.generated.d.ts +2 -0
  16. package/dist/adv/explorer/explorer-css.generated.d.ts.map +1 -0
  17. package/dist/adv/explorer/explorer-css.generated.js +4 -0
  18. package/dist/adv/explorer/explorer-css.generated.js.map +1 -0
  19. package/dist/adv/explorer/explorer-css.js +3 -0
  20. package/dist/adv/explorer/explorer-css.js.map +1 -0
  21. package/dist/adv/explorer/fs-face.d.ts +36 -0
  22. package/dist/adv/explorer/fs-face.d.ts.map +1 -0
  23. package/dist/adv/explorer/fs-face.js +74 -0
  24. package/dist/adv/explorer/fs-face.js.map +1 -0
  25. package/dist/adv/explorer/index.d.ts +6 -0
  26. package/dist/adv/explorer/index.d.ts.map +1 -0
  27. package/dist/adv/explorer/index.js +6 -0
  28. package/dist/adv/explorer/index.js.map +1 -0
  29. package/dist/adv/explorer/landing.d.ts +26 -0
  30. package/dist/adv/explorer/landing.d.ts.map +1 -0
  31. package/dist/adv/explorer/landing.js +43 -0
  32. package/dist/adv/explorer/landing.js.map +1 -0
  33. package/dist/adv/explorer/open.d.ts +137 -0
  34. package/dist/adv/explorer/open.d.ts.map +1 -0
  35. package/dist/adv/explorer/open.js +350 -0
  36. package/dist/adv/explorer/open.js.map +1 -0
  37. package/dist/adv/explorer/picker-placement.d.ts +69 -0
  38. package/dist/adv/explorer/picker-placement.d.ts.map +1 -0
  39. package/dist/adv/explorer/picker-placement.js +122 -0
  40. package/dist/adv/explorer/picker-placement.js.map +1 -0
  41. package/dist/adv/explorer/preview/BytesPreview.d.ts +12 -0
  42. package/dist/adv/explorer/preview/BytesPreview.d.ts.map +1 -0
  43. package/dist/adv/explorer/preview/BytesPreview.js +60 -0
  44. package/dist/adv/explorer/preview/BytesPreview.js.map +1 -0
  45. package/dist/adv/explorer/preview/HtmlPreview.d.ts +17 -0
  46. package/dist/adv/explorer/preview/HtmlPreview.d.ts.map +1 -0
  47. package/dist/adv/explorer/preview/HtmlPreview.js +113 -0
  48. package/dist/adv/explorer/preview/HtmlPreview.js.map +1 -0
  49. package/dist/adv/explorer/preview/OfficePreview.d.ts +12 -0
  50. package/dist/adv/explorer/preview/OfficePreview.d.ts.map +1 -0
  51. package/dist/adv/explorer/preview/OfficePreview.js +63 -0
  52. package/dist/adv/explorer/preview/OfficePreview.js.map +1 -0
  53. package/dist/adv/explorer/preview/TextPreview.d.ts +18 -0
  54. package/dist/adv/explorer/preview/TextPreview.d.ts.map +1 -0
  55. package/dist/adv/explorer/preview/TextPreview.js +122 -0
  56. package/dist/adv/explorer/preview/TextPreview.js.map +1 -0
  57. package/dist/adv/explorer/preview/index.d.ts +24 -0
  58. package/dist/adv/explorer/preview/index.d.ts.map +1 -0
  59. package/dist/adv/explorer/preview/index.js +58 -0
  60. package/dist/adv/explorer/preview/index.js.map +1 -0
  61. package/dist/adv/explorer/preview/md-labels.d.ts +3 -0
  62. package/dist/adv/explorer/preview/md-labels.d.ts.map +1 -0
  63. package/dist/adv/explorer/preview/md-labels.js +12 -0
  64. package/dist/adv/explorer/preview/md-labels.js.map +1 -0
  65. package/dist/adv/explorer/preview-title-bar.d.ts +26 -0
  66. package/dist/adv/explorer/preview-title-bar.d.ts.map +1 -0
  67. package/dist/adv/explorer/preview-title-bar.js +48 -0
  68. package/dist/adv/explorer/preview-title-bar.js.map +1 -0
  69. package/dist/adv/explorer/types.d.ts +259 -0
  70. package/dist/adv/explorer/types.d.ts.map +1 -0
  71. package/dist/adv/explorer/types.js +379 -0
  72. package/dist/adv/explorer/types.js.map +1 -0
  73. package/dist/adv/session/SessionViewModal.d.ts +37 -0
  74. package/dist/adv/session/SessionViewModal.d.ts.map +1 -0
  75. package/dist/adv/session/SessionViewModal.js +1133 -0
  76. package/dist/adv/session/SessionViewModal.js.map +1 -0
  77. package/dist/adv/session/changes.d.ts +73 -0
  78. package/dist/adv/session/changes.d.ts.map +1 -0
  79. package/dist/adv/session/changes.js +134 -0
  80. package/dist/adv/session/changes.js.map +1 -0
  81. package/dist/adv/session/faces.d.ts +244 -0
  82. package/dist/adv/session/faces.d.ts.map +1 -0
  83. package/dist/adv/session/faces.js +17 -0
  84. package/dist/adv/session/faces.js.map +1 -0
  85. package/dist/adv/session/index.d.ts +7 -0
  86. package/dist/adv/session/index.d.ts.map +1 -0
  87. package/dist/adv/session/index.js +27 -0
  88. package/dist/adv/session/index.js.map +1 -0
  89. package/dist/adv/session/mirror/AskCard.d.ts +35 -0
  90. package/dist/adv/session/mirror/AskCard.d.ts.map +1 -0
  91. package/dist/adv/session/mirror/AskCard.js +131 -0
  92. package/dist/adv/session/mirror/AskCard.js.map +1 -0
  93. package/dist/adv/session/mirror/BashRow.d.ts +14 -0
  94. package/dist/adv/session/mirror/BashRow.d.ts.map +1 -0
  95. package/dist/adv/session/mirror/BashRow.js +143 -0
  96. package/dist/adv/session/mirror/BashRow.js.map +1 -0
  97. package/dist/adv/session/mirror/ChangedFileDiff.d.ts +25 -0
  98. package/dist/adv/session/mirror/ChangedFileDiff.d.ts.map +1 -0
  99. package/dist/adv/session/mirror/ChangedFileDiff.js +178 -0
  100. package/dist/adv/session/mirror/ChangedFileDiff.js.map +1 -0
  101. package/dist/adv/session/mirror/ChangedFilesCard.d.ts +18 -0
  102. package/dist/adv/session/mirror/ChangedFilesCard.d.ts.map +1 -0
  103. package/dist/adv/session/mirror/ChangedFilesCard.js +165 -0
  104. package/dist/adv/session/mirror/ChangedFilesCard.js.map +1 -0
  105. package/dist/adv/session/mirror/ChatGroupSeat.d.ts +24 -0
  106. package/dist/adv/session/mirror/ChatGroupSeat.d.ts.map +1 -0
  107. package/dist/adv/session/mirror/ChatGroupSeat.js +135 -0
  108. package/dist/adv/session/mirror/ChatGroupSeat.js.map +1 -0
  109. package/dist/adv/session/mirror/ChatNodeSeat.d.ts +43 -0
  110. package/dist/adv/session/mirror/ChatNodeSeat.d.ts.map +1 -0
  111. package/dist/adv/session/mirror/ChatNodeSeat.js +133 -0
  112. package/dist/adv/session/mirror/ChatNodeSeat.js.map +1 -0
  113. package/dist/adv/session/mirror/ChatView.d.ts +47 -0
  114. package/dist/adv/session/mirror/ChatView.d.ts.map +1 -0
  115. package/dist/adv/session/mirror/ChatView.js +138 -0
  116. package/dist/adv/session/mirror/ChatView.js.map +1 -0
  117. package/dist/adv/session/mirror/CommandCard.d.ts +20 -0
  118. package/dist/adv/session/mirror/CommandCard.d.ts.map +1 -0
  119. package/dist/adv/session/mirror/CommandCard.js +69 -0
  120. package/dist/adv/session/mirror/CommandCard.js.map +1 -0
  121. package/dist/adv/session/mirror/ContextInjectionRow.d.ts +18 -0
  122. package/dist/adv/session/mirror/ContextInjectionRow.d.ts.map +1 -0
  123. package/dist/adv/session/mirror/ContextInjectionRow.js +50 -0
  124. package/dist/adv/session/mirror/ContextInjectionRow.js.map +1 -0
  125. package/dist/adv/session/mirror/Deliverables.d.ts +24 -0
  126. package/dist/adv/session/mirror/Deliverables.d.ts.map +1 -0
  127. package/dist/adv/session/mirror/Deliverables.js +175 -0
  128. package/dist/adv/session/mirror/Deliverables.js.map +1 -0
  129. package/dist/adv/session/mirror/GenericCommandCard.d.ts +136 -0
  130. package/dist/adv/session/mirror/GenericCommandCard.d.ts.map +1 -0
  131. package/dist/adv/session/mirror/GenericCommandCard.js +948 -0
  132. package/dist/adv/session/mirror/GenericCommandCard.js.map +1 -0
  133. package/dist/adv/session/mirror/MessageIconActions.d.ts +16 -0
  134. package/dist/adv/session/mirror/MessageIconActions.d.ts.map +1 -0
  135. package/dist/adv/session/mirror/MessageIconActions.js +69 -0
  136. package/dist/adv/session/mirror/MessageIconActions.js.map +1 -0
  137. package/dist/adv/session/mirror/MessageItem.d.ts +93 -0
  138. package/dist/adv/session/mirror/MessageItem.d.ts.map +1 -0
  139. package/dist/adv/session/mirror/MessageItem.js +194 -0
  140. package/dist/adv/session/mirror/MessageItem.js.map +1 -0
  141. package/dist/adv/session/mirror/ReasoningRow.d.ts +11 -0
  142. package/dist/adv/session/mirror/ReasoningRow.d.ts.map +1 -0
  143. package/dist/adv/session/mirror/ReasoningRow.js +111 -0
  144. package/dist/adv/session/mirror/ReasoningRow.js.map +1 -0
  145. package/dist/adv/session/mirror/RunningStatus.d.ts +12 -0
  146. package/dist/adv/session/mirror/RunningStatus.d.ts.map +1 -0
  147. package/dist/adv/session/mirror/RunningStatus.js +57 -0
  148. package/dist/adv/session/mirror/RunningStatus.js.map +1 -0
  149. package/dist/adv/session/mirror/StatDialog.d.ts +20 -0
  150. package/dist/adv/session/mirror/StatDialog.d.ts.map +1 -0
  151. package/dist/adv/session/mirror/StatDialog.js +49 -0
  152. package/dist/adv/session/mirror/StatDialog.js.map +1 -0
  153. package/dist/adv/session/mirror/ToolDetails.d.ts +65 -0
  154. package/dist/adv/session/mirror/ToolDetails.d.ts.map +1 -0
  155. package/dist/adv/session/mirror/ToolDetails.js +268 -0
  156. package/dist/adv/session/mirror/ToolDetails.js.map +1 -0
  157. package/dist/adv/session/mirror/TurnProcessNodeView.d.ts +10 -0
  158. package/dist/adv/session/mirror/TurnProcessNodeView.d.ts.map +1 -0
  159. package/dist/adv/session/mirror/TurnProcessNodeView.js +57 -0
  160. package/dist/adv/session/mirror/TurnProcessNodeView.js.map +1 -0
  161. package/dist/adv/session/mirror/TurnTailNodeView.d.ts +57 -0
  162. package/dist/adv/session/mirror/TurnTailNodeView.d.ts.map +1 -0
  163. package/dist/adv/session/mirror/TurnTailNodeView.js +106 -0
  164. package/dist/adv/session/mirror/TurnTailNodeView.js.map +1 -0
  165. package/dist/adv/session/mirror/TurnTriggerNodeView.d.ts +16 -0
  166. package/dist/adv/session/mirror/TurnTriggerNodeView.d.ts.map +1 -0
  167. package/dist/adv/session/mirror/TurnTriggerNodeView.js +103 -0
  168. package/dist/adv/session/mirror/TurnTriggerNodeView.js.map +1 -0
  169. package/dist/adv/session/mirror/TurnUsagePanel.d.ts +21 -0
  170. package/dist/adv/session/mirror/TurnUsagePanel.d.ts.map +1 -0
  171. package/dist/adv/session/mirror/TurnUsagePanel.js +41 -0
  172. package/dist/adv/session/mirror/TurnUsagePanel.js.map +1 -0
  173. package/dist/adv/session/mirror/control-details.d.ts +9 -0
  174. package/dist/adv/session/mirror/control-details.d.ts.map +1 -0
  175. package/dist/adv/session/mirror/control-details.js +549 -0
  176. package/dist/adv/session/mirror/control-details.js.map +1 -0
  177. package/dist/adv/session/mirror/detail-i18n.d.ts +4 -0
  178. package/dist/adv/session/mirror/detail-i18n.d.ts.map +1 -0
  179. package/dist/adv/session/mirror/detail-i18n.js +153 -0
  180. package/dist/adv/session/mirror/detail-i18n.js.map +1 -0
  181. package/dist/adv/session/mirror/message-chrome.d.ts +39 -0
  182. package/dist/adv/session/mirror/message-chrome.d.ts.map +1 -0
  183. package/dist/adv/session/mirror/message-chrome.js +153 -0
  184. package/dist/adv/session/mirror/message-chrome.js.map +1 -0
  185. package/dist/adv/session/mirror/process-groups.d.ts +56 -0
  186. package/dist/adv/session/mirror/process-groups.d.ts.map +1 -0
  187. package/dist/adv/session/mirror/process-groups.js +204 -0
  188. package/dist/adv/session/mirror/process-groups.js.map +1 -0
  189. package/dist/adv/session/official-classes.d.ts +28 -0
  190. package/dist/adv/session/official-classes.d.ts.map +1 -0
  191. package/dist/adv/session/official-classes.js +152 -0
  192. package/dist/adv/session/official-classes.js.map +1 -0
  193. package/dist/adv/session/open-review.d.ts +13 -0
  194. package/dist/adv/session/open-review.d.ts.map +1 -0
  195. package/dist/adv/session/open-review.js +32 -0
  196. package/dist/adv/session/open-review.js.map +1 -0
  197. package/dist/adv/session/open-session-view.d.ts +19 -0
  198. package/dist/adv/session/open-session-view.d.ts.map +1 -0
  199. package/dist/adv/session/open-session-view.js +147 -0
  200. package/dist/adv/session/open-session-view.js.map +1 -0
  201. package/dist/adv/session/pending-inputs.d.ts +33 -0
  202. package/dist/adv/session/pending-inputs.d.ts.map +1 -0
  203. package/dist/adv/session/pending-inputs.js +130 -0
  204. package/dist/adv/session/pending-inputs.js.map +1 -0
  205. package/dist/adv/session/session-css.d.ts +2 -0
  206. package/dist/adv/session/session-css.d.ts.map +1 -0
  207. package/dist/adv/session/session-css.generated.d.ts +2 -0
  208. package/dist/adv/session/session-css.generated.d.ts.map +1 -0
  209. package/dist/adv/session/session-css.generated.js +4 -0
  210. package/dist/adv/session/session-css.generated.js.map +1 -0
  211. package/dist/adv/session/session-css.js +3 -0
  212. package/dist/adv/session/session-css.js.map +1 -0
  213. package/dist/adv/session/tail-follow.d.ts +29 -0
  214. package/dist/adv/session/tail-follow.d.ts.map +1 -0
  215. package/dist/adv/session/tail-follow.js +106 -0
  216. package/dist/adv/session/tail-follow.js.map +1 -0
  217. package/dist/design/tokens-css.generated.d.ts +1 -1
  218. package/dist/design/tokens-css.generated.d.ts.map +1 -1
  219. package/dist/design/tokens-css.generated.js +1 -1
  220. package/dist/design/tokens-css.generated.js.map +1 -1
  221. package/dist/ui/Button.d.ts.map +1 -1
  222. package/dist/ui/Button.js +6 -2
  223. package/dist/ui/Button.js.map +1 -1
  224. package/dist/ui/Checkbox.d.ts.map +1 -1
  225. package/dist/ui/Checkbox.js +7 -3
  226. package/dist/ui/Checkbox.js.map +1 -1
  227. package/dist/ui/DateTimePicker.d.ts.map +1 -1
  228. package/dist/ui/DateTimePicker.js +4 -3
  229. package/dist/ui/DateTimePicker.js.map +1 -1
  230. package/dist/ui/Field.d.ts.map +1 -1
  231. package/dist/ui/Field.js +15 -7
  232. package/dist/ui/Field.js.map +1 -1
  233. package/dist/ui/Modal.d.ts +7 -6
  234. package/dist/ui/Modal.d.ts.map +1 -1
  235. package/dist/ui/Modal.js +6 -6
  236. package/dist/ui/Modal.js.map +1 -1
  237. package/dist/ui/Pagination.d.ts.map +1 -1
  238. package/dist/ui/Pagination.js +3 -1
  239. package/dist/ui/Pagination.js.map +1 -1
  240. package/dist/ui/Picker.d.ts.map +1 -1
  241. package/dist/ui/Picker.js +3 -2
  242. package/dist/ui/Picker.js.map +1 -1
  243. package/dist/ui/Segmented.d.ts.map +1 -1
  244. package/dist/ui/Segmented.js +4 -1
  245. package/dist/ui/Segmented.js.map +1 -1
  246. package/dist/ui/SideSheet.d.ts.map +1 -1
  247. package/dist/ui/SideSheet.js +6 -5
  248. package/dist/ui/SideSheet.js.map +1 -1
  249. package/dist/ui/Textarea.d.ts.map +1 -1
  250. package/dist/ui/Textarea.js +4 -1
  251. package/dist/ui/Textarea.js.map +1 -1
  252. package/dist/ui/actions/Button.d.ts +102 -0
  253. package/dist/ui/actions/Button.d.ts.map +1 -0
  254. package/dist/ui/actions/Button.js +233 -0
  255. package/dist/ui/actions/Button.js.map +1 -0
  256. package/dist/ui/actions/button-css.generated.d.ts +2 -0
  257. package/dist/ui/actions/button-css.generated.d.ts.map +1 -0
  258. package/dist/ui/actions/button-css.generated.js +4 -0
  259. package/dist/ui/actions/button-css.generated.js.map +1 -0
  260. package/dist/ui/display/Card.d.ts +65 -0
  261. package/dist/ui/display/Card.d.ts.map +1 -0
  262. package/dist/ui/display/Card.js +109 -0
  263. package/dist/ui/display/Card.js.map +1 -0
  264. package/dist/ui/display/Chip.d.ts +28 -0
  265. package/dist/ui/display/Chip.d.ts.map +1 -0
  266. package/dist/ui/display/Chip.js +36 -0
  267. package/dist/ui/display/Chip.js.map +1 -0
  268. package/dist/ui/display/CodeViewer.d.ts +38 -0
  269. package/dist/ui/display/CodeViewer.d.ts.map +1 -0
  270. package/dist/ui/display/CodeViewer.js +107 -0
  271. package/dist/ui/display/CodeViewer.js.map +1 -0
  272. package/dist/ui/display/FieldHint.d.ts +18 -0
  273. package/dist/ui/display/FieldHint.d.ts.map +1 -0
  274. package/dist/ui/display/FieldHint.js +40 -0
  275. package/dist/ui/display/FieldHint.js.map +1 -0
  276. package/dist/ui/display/FlipText.d.ts +43 -0
  277. package/dist/ui/display/FlipText.d.ts.map +1 -0
  278. package/dist/ui/display/FlipText.js +59 -0
  279. package/dist/ui/display/FlipText.js.map +1 -0
  280. package/dist/ui/display/LiveText.d.ts +13 -0
  281. package/dist/ui/display/LiveText.d.ts.map +1 -0
  282. package/dist/ui/display/LiveText.js +19 -0
  283. package/dist/ui/display/LiveText.js.map +1 -0
  284. package/dist/ui/display/MarqueeText.d.ts +22 -0
  285. package/dist/ui/display/MarqueeText.d.ts.map +1 -0
  286. package/dist/ui/display/MarqueeText.js +52 -0
  287. package/dist/ui/display/MarqueeText.js.map +1 -0
  288. package/dist/ui/display/SectionHead.d.ts +35 -0
  289. package/dist/ui/display/SectionHead.d.ts.map +1 -0
  290. package/dist/ui/display/SectionHead.js +45 -0
  291. package/dist/ui/display/SectionHead.js.map +1 -0
  292. package/dist/ui/display/Surface.d.ts +43 -0
  293. package/dist/ui/display/Surface.d.ts.map +1 -0
  294. package/dist/ui/display/Surface.js +39 -0
  295. package/dist/ui/display/Surface.js.map +1 -0
  296. package/dist/ui/display/Table.d.ts +30 -0
  297. package/dist/ui/display/Table.d.ts.map +1 -0
  298. package/dist/ui/display/Table.js +96 -0
  299. package/dist/ui/display/Table.js.map +1 -0
  300. package/dist/ui/display/card-css.d.ts +2 -0
  301. package/dist/ui/display/card-css.d.ts.map +1 -0
  302. package/dist/ui/display/card-css.generated.d.ts +2 -0
  303. package/dist/ui/display/card-css.generated.d.ts.map +1 -0
  304. package/dist/ui/display/card-css.generated.js +4 -0
  305. package/dist/ui/display/card-css.generated.js.map +1 -0
  306. package/dist/ui/display/card-css.js +5 -0
  307. package/dist/ui/display/card-css.js.map +1 -0
  308. package/dist/ui/display/chip-css.d.ts +2 -0
  309. package/dist/ui/display/chip-css.d.ts.map +1 -0
  310. package/dist/ui/display/chip-css.generated.d.ts +2 -0
  311. package/dist/ui/display/chip-css.generated.d.ts.map +1 -0
  312. package/dist/ui/display/chip-css.generated.js +4 -0
  313. package/dist/ui/display/chip-css.generated.js.map +1 -0
  314. package/dist/ui/display/chip-css.js +12 -0
  315. package/dist/ui/display/chip-css.js.map +1 -0
  316. package/dist/ui/display/code-viewer-css.d.ts +2 -0
  317. package/dist/ui/display/code-viewer-css.d.ts.map +1 -0
  318. package/dist/ui/display/code-viewer-css.generated.d.ts +2 -0
  319. package/dist/ui/display/code-viewer-css.generated.d.ts.map +1 -0
  320. package/dist/ui/display/code-viewer-css.generated.js +4 -0
  321. package/dist/ui/display/code-viewer-css.generated.js.map +1 -0
  322. package/dist/ui/display/code-viewer-css.js +3 -0
  323. package/dist/ui/display/code-viewer-css.js.map +1 -0
  324. package/dist/ui/display/code-viewer-lang.d.ts +15 -0
  325. package/dist/ui/display/code-viewer-lang.d.ts.map +1 -0
  326. package/dist/ui/display/code-viewer-lang.js +190 -0
  327. package/dist/ui/display/code-viewer-lang.js.map +1 -0
  328. package/dist/ui/display/code-viewer-theme.d.ts +5 -0
  329. package/dist/ui/display/code-viewer-theme.d.ts.map +1 -0
  330. package/dist/ui/display/code-viewer-theme.js +138 -0
  331. package/dist/ui/display/code-viewer-theme.js.map +1 -0
  332. package/dist/ui/display/flip-css.d.ts +2 -0
  333. package/dist/ui/display/flip-css.d.ts.map +1 -0
  334. package/dist/ui/display/flip-css.generated.d.ts +2 -0
  335. package/dist/ui/display/flip-css.generated.d.ts.map +1 -0
  336. package/dist/ui/display/flip-css.generated.js +4 -0
  337. package/dist/ui/display/flip-css.generated.js.map +1 -0
  338. package/dist/ui/display/flip-css.js +4 -0
  339. package/dist/ui/display/flip-css.js.map +1 -0
  340. package/dist/ui/display/hint-css.generated.d.ts +2 -0
  341. package/dist/ui/display/hint-css.generated.d.ts.map +1 -0
  342. package/dist/ui/display/hint-css.generated.js +4 -0
  343. package/dist/ui/display/hint-css.generated.js.map +1 -0
  344. package/dist/ui/display/marquee-css.d.ts +2 -0
  345. package/dist/ui/display/marquee-css.d.ts.map +1 -0
  346. package/dist/ui/display/marquee-css.generated.d.ts +2 -0
  347. package/dist/ui/display/marquee-css.generated.d.ts.map +1 -0
  348. package/dist/ui/display/marquee-css.generated.js +4 -0
  349. package/dist/ui/display/marquee-css.generated.js.map +1 -0
  350. package/dist/ui/display/marquee-css.js +4 -0
  351. package/dist/ui/display/marquee-css.js.map +1 -0
  352. package/dist/ui/display/section-head-css.generated.d.ts +2 -0
  353. package/dist/ui/display/section-head-css.generated.d.ts.map +1 -0
  354. package/dist/ui/display/section-head-css.generated.js +4 -0
  355. package/dist/ui/display/section-head-css.generated.js.map +1 -0
  356. package/dist/ui/display/surface-css.d.ts +2 -0
  357. package/dist/ui/display/surface-css.d.ts.map +1 -0
  358. package/dist/ui/display/surface-css.generated.d.ts +2 -0
  359. package/dist/ui/display/surface-css.generated.d.ts.map +1 -0
  360. package/dist/ui/display/surface-css.generated.js +4 -0
  361. package/dist/ui/display/surface-css.generated.js.map +1 -0
  362. package/dist/ui/display/surface-css.js +7 -0
  363. package/dist/ui/display/surface-css.js.map +1 -0
  364. package/dist/ui/display/table-css.generated.d.ts +2 -0
  365. package/dist/ui/display/table-css.generated.d.ts.map +1 -0
  366. package/dist/ui/display/table-css.generated.js +4 -0
  367. package/dist/ui/display/table-css.generated.js.map +1 -0
  368. package/dist/ui/display/table-logic.d.ts +110 -0
  369. package/dist/ui/display/table-logic.d.ts.map +1 -0
  370. package/dist/ui/display/table-logic.js +81 -0
  371. package/dist/ui/display/table-logic.js.map +1 -0
  372. package/dist/ui/display/table-plain-css.generated.d.ts +2 -0
  373. package/dist/ui/display/table-plain-css.generated.d.ts.map +1 -0
  374. package/dist/ui/display/table-plain-css.generated.js +4 -0
  375. package/dist/ui/display/table-plain-css.generated.js.map +1 -0
  376. package/dist/ui/display/table-shared.d.ts +101 -0
  377. package/dist/ui/display/table-shared.d.ts.map +1 -0
  378. package/dist/ui/display/table-shared.js +229 -0
  379. package/dist/ui/display/table-shared.js.map +1 -0
  380. package/dist/ui/feedback/AlertModal.d.ts +41 -0
  381. package/dist/ui/feedback/AlertModal.d.ts.map +1 -0
  382. package/dist/ui/feedback/AlertModal.js +45 -0
  383. package/dist/ui/feedback/AlertModal.js.map +1 -0
  384. package/dist/ui/feedback/ConfirmModal.d.ts +50 -0
  385. package/dist/ui/feedback/ConfirmModal.d.ts.map +1 -0
  386. package/dist/ui/feedback/ConfirmModal.js +47 -0
  387. package/dist/ui/feedback/ConfirmModal.js.map +1 -0
  388. package/dist/ui/feedback/Loader.d.ts +49 -0
  389. package/dist/ui/feedback/Loader.d.ts.map +1 -0
  390. package/dist/ui/feedback/Loader.js +79 -0
  391. package/dist/ui/feedback/Loader.js.map +1 -0
  392. package/dist/ui/feedback/LoaderBar.d.ts +38 -0
  393. package/dist/ui/feedback/LoaderBar.d.ts.map +1 -0
  394. package/dist/ui/feedback/LoaderBar.js +79 -0
  395. package/dist/ui/feedback/LoaderBar.js.map +1 -0
  396. package/dist/ui/feedback/Loading.d.ts +69 -0
  397. package/dist/ui/feedback/Loading.d.ts.map +1 -0
  398. package/dist/ui/feedback/Loading.js +164 -0
  399. package/dist/ui/feedback/Loading.js.map +1 -0
  400. package/dist/ui/feedback/Modal.d.ts +73 -0
  401. package/dist/ui/feedback/Modal.d.ts.map +1 -0
  402. package/dist/ui/feedback/Modal.js +83 -0
  403. package/dist/ui/feedback/Modal.js.map +1 -0
  404. package/dist/ui/feedback/SideSheet.d.ts +70 -0
  405. package/dist/ui/feedback/SideSheet.d.ts.map +1 -0
  406. package/dist/ui/feedback/SideSheet.js +130 -0
  407. package/dist/ui/feedback/SideSheet.js.map +1 -0
  408. package/dist/ui/feedback/Toast.d.ts +45 -0
  409. package/dist/ui/feedback/Toast.d.ts.map +1 -0
  410. package/dist/ui/feedback/Toast.js +225 -0
  411. package/dist/ui/feedback/Toast.js.map +1 -0
  412. package/dist/ui/feedback/feedback-css.d.ts +2 -0
  413. package/dist/ui/feedback/feedback-css.d.ts.map +1 -0
  414. package/dist/ui/feedback/feedback-css.generated.d.ts +2 -0
  415. package/dist/ui/feedback/feedback-css.generated.d.ts.map +1 -0
  416. package/dist/ui/feedback/feedback-css.generated.js +4 -0
  417. package/dist/ui/feedback/feedback-css.generated.js.map +1 -0
  418. package/dist/ui/feedback/feedback-css.js +4 -0
  419. package/dist/ui/feedback/feedback-css.js.map +1 -0
  420. package/dist/ui/feedback/host-toast.d.ts +23 -0
  421. package/dist/ui/feedback/host-toast.d.ts.map +1 -0
  422. package/dist/ui/feedback/host-toast.js +34 -0
  423. package/dist/ui/feedback/host-toast.js.map +1 -0
  424. package/dist/ui/feedback/loader-bar-art.d.ts +6 -0
  425. package/dist/ui/feedback/loader-bar-art.d.ts.map +1 -0
  426. package/dist/ui/feedback/loader-bar-art.js +6 -0
  427. package/dist/ui/feedback/loader-bar-art.js.map +1 -0
  428. package/dist/ui/feedback/loader-bar-css.generated.d.ts +2 -0
  429. package/dist/ui/feedback/loader-bar-css.generated.d.ts.map +1 -0
  430. package/dist/ui/feedback/loader-bar-css.generated.js +4 -0
  431. package/dist/ui/feedback/loader-bar-css.generated.js.map +1 -0
  432. package/dist/ui/feedback/loader-css.generated.d.ts +2 -0
  433. package/dist/ui/feedback/loader-css.generated.d.ts.map +1 -0
  434. package/dist/ui/feedback/loader-css.generated.js +4 -0
  435. package/dist/ui/feedback/loader-css.generated.js.map +1 -0
  436. package/dist/ui/feedback/loading-css.generated.d.ts +2 -0
  437. package/dist/ui/feedback/loading-css.generated.d.ts.map +1 -0
  438. package/dist/ui/feedback/loading-css.generated.js +4 -0
  439. package/dist/ui/feedback/loading-css.generated.js.map +1 -0
  440. package/dist/ui/feedback/loading-host.d.ts +49 -0
  441. package/dist/ui/feedback/loading-host.d.ts.map +1 -0
  442. package/dist/ui/feedback/loading-host.js +57 -0
  443. package/dist/ui/feedback/loading-host.js.map +1 -0
  444. package/dist/ui/feedback/modal-host.d.ts +51 -0
  445. package/dist/ui/feedback/modal-host.d.ts.map +1 -0
  446. package/dist/ui/feedback/modal-host.js +170 -0
  447. package/dist/ui/feedback/modal-host.js.map +1 -0
  448. package/dist/ui/feedback/side-sheet-css.d.ts +2 -0
  449. package/dist/ui/feedback/side-sheet-css.d.ts.map +1 -0
  450. package/dist/ui/feedback/side-sheet-css.generated.d.ts +2 -0
  451. package/dist/ui/feedback/side-sheet-css.generated.d.ts.map +1 -0
  452. package/dist/ui/feedback/side-sheet-css.generated.js +4 -0
  453. package/dist/ui/feedback/side-sheet-css.generated.js.map +1 -0
  454. package/dist/ui/feedback/side-sheet-css.js +2 -0
  455. package/dist/ui/feedback/side-sheet-css.js.map +1 -0
  456. package/dist/ui/feedback/toast-host.d.ts +24 -0
  457. package/dist/ui/feedback/toast-host.d.ts.map +1 -0
  458. package/dist/ui/feedback/toast-host.js +20 -0
  459. package/dist/ui/feedback/toast-host.js.map +1 -0
  460. package/dist/ui/feedback-css.generated.d.ts +1 -1
  461. package/dist/ui/feedback-css.generated.d.ts.map +1 -1
  462. package/dist/ui/feedback-css.generated.js +1 -1
  463. package/dist/ui/feedback-css.generated.js.map +1 -1
  464. package/dist/ui/index.d.ts +44 -44
  465. package/dist/ui/index.d.ts.map +1 -1
  466. package/dist/ui/index.js +44 -44
  467. package/dist/ui/index.js.map +1 -1
  468. package/dist/ui/infra/chevron.d.ts +22 -0
  469. package/dist/ui/infra/chevron.d.ts.map +1 -0
  470. package/dist/ui/infra/chevron.js +33 -0
  471. package/dist/ui/infra/chevron.js.map +1 -0
  472. package/dist/ui/infra/controls-css.d.ts +16 -0
  473. package/dist/ui/infra/controls-css.d.ts.map +1 -0
  474. package/dist/ui/infra/controls-css.js +26 -0
  475. package/dist/ui/infra/controls-css.js.map +1 -0
  476. package/dist/ui/infra/css.d.ts +35 -0
  477. package/dist/ui/infra/css.d.ts.map +1 -0
  478. package/dist/ui/infra/css.js +52 -0
  479. package/dist/ui/infra/css.js.map +1 -0
  480. package/dist/ui/infra/host-data.d.ts +119 -0
  481. package/dist/ui/infra/host-data.d.ts.map +1 -0
  482. package/dist/ui/infra/host-data.js +122 -0
  483. package/dist/ui/infra/host-data.js.map +1 -0
  484. package/dist/ui/infra/locale.d.ts +4 -0
  485. package/dist/ui/infra/locale.d.ts.map +1 -0
  486. package/dist/ui/infra/locale.js +17 -0
  487. package/dist/ui/infra/locale.js.map +1 -0
  488. package/dist/ui/infra/overlay-css.d.ts +2 -0
  489. package/dist/ui/infra/overlay-css.d.ts.map +1 -0
  490. package/dist/ui/infra/overlay-css.generated.d.ts +2 -0
  491. package/dist/ui/infra/overlay-css.generated.d.ts.map +1 -0
  492. package/dist/ui/infra/overlay-css.generated.js +4 -0
  493. package/dist/ui/infra/overlay-css.generated.js.map +1 -0
  494. package/dist/ui/infra/overlay-css.js +2 -0
  495. package/dist/ui/infra/overlay-css.js.map +1 -0
  496. package/dist/ui/infra/overlay.d.ts +62 -0
  497. package/dist/ui/infra/overlay.d.ts.map +1 -0
  498. package/dist/ui/infra/overlay.js +94 -0
  499. package/dist/ui/infra/overlay.js.map +1 -0
  500. package/dist/ui/infra/panel-css.d.ts +2 -0
  501. package/dist/ui/infra/panel-css.d.ts.map +1 -0
  502. package/dist/ui/infra/panel-css.generated.d.ts +2 -0
  503. package/dist/ui/infra/panel-css.generated.d.ts.map +1 -0
  504. package/dist/ui/infra/panel-css.generated.js +4 -0
  505. package/dist/ui/infra/panel-css.generated.js.map +1 -0
  506. package/dist/ui/infra/panel-css.js +2 -0
  507. package/dist/ui/infra/panel-css.js.map +1 -0
  508. package/dist/ui/infra/panel.d.ts +41 -0
  509. package/dist/ui/infra/panel.d.ts.map +1 -0
  510. package/dist/ui/infra/panel.js +37 -0
  511. package/dist/ui/infra/panel.js.map +1 -0
  512. package/dist/ui/infra/side-panel-css.d.ts +2 -0
  513. package/dist/ui/infra/side-panel-css.d.ts.map +1 -0
  514. package/dist/ui/infra/side-panel-css.generated.d.ts +2 -0
  515. package/dist/ui/infra/side-panel-css.generated.d.ts.map +1 -0
  516. package/dist/ui/infra/side-panel-css.generated.js +4 -0
  517. package/dist/ui/infra/side-panel-css.generated.js.map +1 -0
  518. package/dist/ui/infra/side-panel-css.js +2 -0
  519. package/dist/ui/infra/side-panel-css.js.map +1 -0
  520. package/dist/ui/infra/thenable.d.ts +9 -0
  521. package/dist/ui/infra/thenable.d.ts.map +1 -0
  522. package/dist/ui/infra/thenable.js +15 -0
  523. package/dist/ui/infra/thenable.js.map +1 -0
  524. package/dist/ui/infra/ticker.d.ts +8 -0
  525. package/dist/ui/infra/ticker.d.ts.map +1 -0
  526. package/dist/ui/infra/ticker.js +49 -0
  527. package/dist/ui/infra/ticker.js.map +1 -0
  528. package/dist/ui/infra/tooltip.d.ts +29 -0
  529. package/dist/ui/infra/tooltip.d.ts.map +1 -0
  530. package/dist/ui/infra/tooltip.js +10 -0
  531. package/dist/ui/infra/tooltip.js.map +1 -0
  532. package/dist/ui/inputs/Checkbox.d.ts +24 -0
  533. package/dist/ui/inputs/Checkbox.d.ts.map +1 -0
  534. package/dist/ui/inputs/Checkbox.js +35 -0
  535. package/dist/ui/inputs/Checkbox.js.map +1 -0
  536. package/dist/ui/inputs/DateTimePicker.d.ts +45 -0
  537. package/dist/ui/inputs/DateTimePicker.d.ts.map +1 -0
  538. package/dist/ui/inputs/DateTimePicker.js +462 -0
  539. package/dist/ui/inputs/DateTimePicker.js.map +1 -0
  540. package/dist/ui/inputs/Field.d.ts +125 -0
  541. package/dist/ui/inputs/Field.d.ts.map +1 -0
  542. package/dist/ui/inputs/Field.js +175 -0
  543. package/dist/ui/inputs/Field.js.map +1 -0
  544. package/dist/ui/inputs/InputGroup.d.ts +91 -0
  545. package/dist/ui/inputs/InputGroup.d.ts.map +1 -0
  546. package/dist/ui/inputs/InputGroup.js +125 -0
  547. package/dist/ui/inputs/InputGroup.js.map +1 -0
  548. package/dist/ui/inputs/ModelPicker.d.ts +48 -0
  549. package/dist/ui/inputs/ModelPicker.d.ts.map +1 -0
  550. package/dist/ui/inputs/ModelPicker.js +101 -0
  551. package/dist/ui/inputs/ModelPicker.js.map +1 -0
  552. package/dist/ui/inputs/Picker.d.ts +56 -0
  553. package/dist/ui/inputs/Picker.d.ts.map +1 -0
  554. package/dist/ui/inputs/Picker.js +244 -0
  555. package/dist/ui/inputs/Picker.js.map +1 -0
  556. package/dist/ui/inputs/Segmented.d.ts +99 -0
  557. package/dist/ui/inputs/Segmented.d.ts.map +1 -0
  558. package/dist/ui/inputs/Segmented.js +135 -0
  559. package/dist/ui/inputs/Segmented.js.map +1 -0
  560. package/dist/ui/inputs/Textarea.d.ts +36 -0
  561. package/dist/ui/inputs/Textarea.d.ts.map +1 -0
  562. package/dist/ui/inputs/Textarea.js +35 -0
  563. package/dist/ui/inputs/Textarea.js.map +1 -0
  564. package/dist/ui/inputs/WorkspacePicker.d.ts +35 -0
  565. package/dist/ui/inputs/WorkspacePicker.d.ts.map +1 -0
  566. package/dist/ui/inputs/WorkspacePicker.js +39 -0
  567. package/dist/ui/inputs/WorkspacePicker.js.map +1 -0
  568. package/dist/ui/inputs/datetime-css.generated.d.ts +2 -0
  569. package/dist/ui/inputs/datetime-css.generated.d.ts.map +1 -0
  570. package/dist/ui/inputs/datetime-css.generated.js +4 -0
  571. package/dist/ui/inputs/datetime-css.generated.js.map +1 -0
  572. package/dist/ui/inputs/datetime-logic.d.ts +102 -0
  573. package/dist/ui/inputs/datetime-logic.d.ts.map +1 -0
  574. package/dist/ui/inputs/datetime-logic.js +200 -0
  575. package/dist/ui/inputs/datetime-logic.js.map +1 -0
  576. package/dist/ui/inputs/field-css.generated.d.ts +2 -0
  577. package/dist/ui/inputs/field-css.generated.d.ts.map +1 -0
  578. package/dist/ui/inputs/field-css.generated.js +4 -0
  579. package/dist/ui/inputs/field-css.generated.js.map +1 -0
  580. package/dist/ui/inputs/input-group-css.generated.d.ts +2 -0
  581. package/dist/ui/inputs/input-group-css.generated.d.ts.map +1 -0
  582. package/dist/ui/inputs/input-group-css.generated.js +4 -0
  583. package/dist/ui/inputs/input-group-css.generated.js.map +1 -0
  584. package/dist/ui/inputs/picker-css.d.ts +2 -0
  585. package/dist/ui/inputs/picker-css.d.ts.map +1 -0
  586. package/dist/ui/inputs/picker-css.generated.d.ts +2 -0
  587. package/dist/ui/inputs/picker-css.generated.d.ts.map +1 -0
  588. package/dist/ui/inputs/picker-css.generated.js +4 -0
  589. package/dist/ui/inputs/picker-css.generated.js.map +1 -0
  590. package/dist/ui/inputs/picker-css.js +4 -0
  591. package/dist/ui/inputs/picker-css.js.map +1 -0
  592. package/dist/ui/inputs/picker-icons.d.ts +12 -0
  593. package/dist/ui/inputs/picker-icons.d.ts.map +1 -0
  594. package/dist/ui/inputs/picker-icons.js +29 -0
  595. package/dist/ui/inputs/picker-icons.js.map +1 -0
  596. package/dist/ui/inputs/picker-logic.d.ts +33 -0
  597. package/dist/ui/inputs/picker-logic.d.ts.map +1 -0
  598. package/dist/ui/inputs/picker-logic.js +68 -0
  599. package/dist/ui/inputs/picker-logic.js.map +1 -0
  600. package/dist/ui/inputs/segmented-css.generated.d.ts +2 -0
  601. package/dist/ui/inputs/segmented-css.generated.d.ts.map +1 -0
  602. package/dist/ui/inputs/segmented-css.generated.js +4 -0
  603. package/dist/ui/inputs/segmented-css.generated.js.map +1 -0
  604. package/dist/ui/layout/PanelDock.d.ts +132 -0
  605. package/dist/ui/layout/PanelDock.d.ts.map +1 -0
  606. package/dist/ui/layout/PanelDock.js +390 -0
  607. package/dist/ui/layout/PanelDock.js.map +1 -0
  608. package/dist/ui/layout/QuickToolbar.d.ts +54 -0
  609. package/dist/ui/layout/QuickToolbar.d.ts.map +1 -0
  610. package/dist/ui/layout/QuickToolbar.js +254 -0
  611. package/dist/ui/layout/QuickToolbar.js.map +1 -0
  612. package/dist/ui/layout/SplitGroup.d.ts +37 -0
  613. package/dist/ui/layout/SplitGroup.d.ts.map +1 -0
  614. package/dist/ui/layout/SplitGroup.js +36 -0
  615. package/dist/ui/layout/SplitGroup.js.map +1 -0
  616. package/dist/ui/layout/panel-dock-css.d.ts +2 -0
  617. package/dist/ui/layout/panel-dock-css.d.ts.map +1 -0
  618. package/dist/ui/layout/panel-dock-css.generated.d.ts +2 -0
  619. package/dist/ui/layout/panel-dock-css.generated.d.ts.map +1 -0
  620. package/dist/ui/layout/panel-dock-css.generated.js +4 -0
  621. package/dist/ui/layout/panel-dock-css.generated.js.map +1 -0
  622. package/dist/ui/layout/panel-dock-css.js +4 -0
  623. package/dist/ui/layout/panel-dock-css.js.map +1 -0
  624. package/dist/ui/layout/panel-dock-logic.d.ts +67 -0
  625. package/dist/ui/layout/panel-dock-logic.d.ts.map +1 -0
  626. package/dist/ui/layout/panel-dock-logic.js +110 -0
  627. package/dist/ui/layout/panel-dock-logic.js.map +1 -0
  628. package/dist/ui/layout/quick-toolbar-css.generated.d.ts +2 -0
  629. package/dist/ui/layout/quick-toolbar-css.generated.d.ts.map +1 -0
  630. package/dist/ui/layout/quick-toolbar-css.generated.js +4 -0
  631. package/dist/ui/layout/quick-toolbar-css.generated.js.map +1 -0
  632. package/dist/ui/layout/quick-toolbar-logic.d.ts +76 -0
  633. package/dist/ui/layout/quick-toolbar-logic.d.ts.map +1 -0
  634. package/dist/ui/layout/quick-toolbar-logic.js +40 -0
  635. package/dist/ui/layout/quick-toolbar-logic.js.map +1 -0
  636. package/dist/ui/layout/resizer.d.ts +29 -0
  637. package/dist/ui/layout/resizer.d.ts.map +1 -0
  638. package/dist/ui/layout/resizer.js +42 -0
  639. package/dist/ui/layout/resizer.js.map +1 -0
  640. package/dist/ui/layout/split-group-css.generated.d.ts +2 -0
  641. package/dist/ui/layout/split-group-css.generated.d.ts.map +1 -0
  642. package/dist/ui/layout/split-group-css.generated.js +4 -0
  643. package/dist/ui/layout/split-group-css.generated.js.map +1 -0
  644. package/dist/ui/navigation/Pagination.d.ts +59 -0
  645. package/dist/ui/navigation/Pagination.d.ts.map +1 -0
  646. package/dist/ui/navigation/Pagination.js +112 -0
  647. package/dist/ui/navigation/Pagination.js.map +1 -0
  648. package/dist/ui/navigation/pagination-css.generated.d.ts +2 -0
  649. package/dist/ui/navigation/pagination-css.generated.d.ts.map +1 -0
  650. package/dist/ui/navigation/pagination-css.generated.js +4 -0
  651. package/dist/ui/navigation/pagination-css.generated.js.map +1 -0
  652. package/dist/ui/navigation/pagination-logic.d.ts +36 -0
  653. package/dist/ui/navigation/pagination-logic.d.ts.map +1 -0
  654. package/dist/ui/navigation/pagination-logic.js +73 -0
  655. package/dist/ui/navigation/pagination-logic.js.map +1 -0
  656. package/dist/ui/official.js +2 -2
  657. package/dist/ui/official.js.map +1 -1
  658. package/dist/ui/overlay-css.generated.d.ts +1 -1
  659. package/dist/ui/overlay-css.generated.d.ts.map +1 -1
  660. package/dist/ui/overlay-css.generated.js +1 -1
  661. package/dist/ui/overlay-css.generated.js.map +1 -1
  662. package/dist/ui/overlay.d.ts +13 -0
  663. package/dist/ui/overlay.d.ts.map +1 -1
  664. package/dist/ui/overlay.js +33 -0
  665. package/dist/ui/overlay.js.map +1 -1
  666. package/dist/ui/side-sheet-css.generated.d.ts +1 -1
  667. package/dist/ui/side-sheet-css.generated.d.ts.map +1 -1
  668. package/dist/ui/side-sheet-css.generated.js +1 -1
  669. package/dist/ui/side-sheet-css.generated.js.map +1 -1
  670. package/dist/utils/i18n.d.ts +2 -2
  671. package/dist/utils/i18n.d.ts.map +1 -1
  672. package/dist/utils/i18n.js +1 -1
  673. package/dist/utils/i18n.js.map +1 -1
  674. package/docs/README.md +1 -1
  675. package/docs/design/architecture.md +9 -8
  676. package/docs/design/copywriting.md +23 -0
  677. package/docs/design/external/dsh-host.md +5 -5
  678. package/docs/design/structure.md +132 -128
  679. package/docs/design/style.md +5 -5
  680. package/docs/help/ui.doc.ts +4 -4
  681. package/docs/help/ui.md +4 -4
  682. package/docs/help/utils.doc.ts +3 -3
  683. package/docs/help/utils.md +3 -3
  684. package/docs/requirements.md +30 -276
  685. package/package.json +1 -1
@@ -0,0 +1,632 @@
1
+ // 工作区文件浏览器(U11):面包屑 + ▾ 选层 + 内联展开目录树 + 文件预览。
2
+ //
3
+ // 源实现 = 兄弟项目 dsh-task-dispatch-table/src/client/file-browser.tsx(868 行)——本文件是它的
4
+ // core 重实现("抄"不是"复制"):组件全部换 core 自己的体系,官方件只经 ui/official 消费;
5
+ // 修掉源实现的已知问题:根缓存改可注入(原模块级 Map 永不清除)、复制路径补 catch、
6
+ // 复制/选中路径口径统一为工作区相对、去掉死代码。
7
+ //
8
+ // 两个消费场景共用本组件(用户 2026-10-20 拍板:同一套内容,两种展现形式):
9
+ // · 浏览(dock):由 **核心 PanelDock** 承载(openFilePreview),拖宽与关闭都由它负责,
10
+ // 本组件不再自绘拖拽条 / 侧边栏外壳;
11
+ // · 选择(picker):`picker` + `onPick(picked)`(`path` 是**绝对路径**,另带工作区归属),点文件即回调。
12
+ //
13
+ // 控件纪律:能用核心控件的一律核心(ghost 面包屑 / IconButton / Segmented / MarqueeText);
14
+ // 核心没有的那一项 = ▾ 选层浮层,按兄弟项目 dsh-task-dispatch-table 的 `.dsh-tdt-sv-crumbs-*`
15
+ // 逐像素照抄(间距 / 圆角 / 最大高度 / 空态),不自创度量。
16
+ import { createElement as h, Fragment, useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState, useSyncExternalStore, } from 'react';
17
+ import { IconChevronRightOutlineRegular, writeClipboard, FileTypeIcon, } from '../../ui/official.js';
18
+ import { Button, IconButton } from '../../ui/actions/Button.js';
19
+ import { workspaceList } from '../../ui/infra/host-data.js';
20
+ import { useLocale } from '../../ui/infra/locale.js';
21
+ import { t } from '../../utils/i18n.js';
22
+ import { FilePreview } from './preview/index.js';
23
+ import { bareCode, baseNameOfPath, crumbsOfDir, createRequestGate, dirnameOf, errView, isAborted, isAbsoluteish, isFailed, joinPath, listingOf, matchesFilter, relativizeToDir, sortEntries, normalizePath, workspaceOfPath, } from './types.js';
24
+ import { ensureComponentStyles } from '../../ui/infra/css.js';
25
+ import { PANEL_CSS } from '../../ui/infra/panel-css.js';
26
+ import { EXPLORER_CSS } from './explorer-css.js';
27
+ import { crumbsMenuEntries } from './crumbs-menu.js';
28
+ import { CrumbNav, PlainNav } from './crumb-nav.js';
29
+ import { LandingBody } from './landing.js';
30
+ import { PreviewTitleBar } from './preview-title-bar.js';
31
+ /**
32
+ * 「根」在 POSIX 上的落点 `/`。Windows 没有这一个根 —— 根层是盘符清单,由宿主 `op:'roots'` 给出
33
+ * (见下面 `roots` 状态),本常量只在 POSIX / 探不到盘符时用。
34
+ */
35
+ const FS_ROOT = '/';
36
+ /** 目录浏览器面板。详见 {@link FileBrowserProps}。 */
37
+ export function FileBrowser(props) {
38
+ ensureComponentStyles('explorer', EXPLORER_CSS);
39
+ // ▾ 选层用浮层 menu 档(panel.css):跟弹窗同一套底色/描边/圆角/阴影。
40
+ ensureComponentStyles('panel', PANEL_CSS);
41
+ // 宿主切语言 ⇒ 重渲(标签文案默认已跟随 `<html lang>`,这里只补「切换后刷新」)。
42
+ useLocale();
43
+ const tt = props.translate ?? t;
44
+ const picker = props.picker === true;
45
+ // mode:加载/目录树/文件预览/列举错误。viewing 非空 ⇒ 在 dir 树内预览文件。
46
+ const [mode, setMode] = useState('loading');
47
+ const [dir, setDir] = useState('');
48
+ const [listing, setListing] = useState(null);
49
+ const [truncated, setTruncated] = useState(false);
50
+ const [viewing, setViewing] = useState(null);
51
+ const [listErr, setListErr] = useState(null);
52
+ // 面包屑折叠(超宽时只显示当前层名;行首 ▾ 选层常驻)。
53
+ const [crumbsOverflow, setCrumbsOverflow] = useState(false);
54
+ const [menuOpen, setMenuOpen] = useState(false);
55
+ const regionRef = useRef(null);
56
+ const measureRef = useRef(null);
57
+ // 预览态:md/html 渲染⇄源码 + 刷新自增(触发预览体重读)。
58
+ const [sourceView, setSourceView] = useState(false);
59
+ const [reloadNonce, setReloadNonce] = useState(0);
60
+ const [copied, setCopied] = useState(false);
61
+ // 内联展开:openDirs = 已展开目录路径集合;childCache = 各展开目录拉到的子项。
62
+ const [openDirs, setOpenDirs] = useState(new Set());
63
+ const [childCache, setChildCache] = useState({});
64
+ // 当前目录在会话工作区之外(官方 list 限工作区内,越界即报 outside-workspace)。
65
+ // 依据 = list 的**真实错误码**,不靠缓存猜(根学不出时会误判成"在区内")。
66
+ const [outside, setOutside] = useState(false);
67
+ // picker 且路径/会话都没给 ⇒ 落地页:主窗体先列「根目录 + 各工作区」让用户自己选(用户 2026-11-03 定)。
68
+ const [landing, setLanding] = useState(props.picker === true && props.path === '' && props.sessionId === undefined);
69
+ const landingRef = useRef(landing);
70
+ useLayoutEffect(() => {
71
+ landingRef.current = landing;
72
+ }, [landing]);
73
+ const revision = props.revision ?? 0;
74
+ // 请求闸门(latest-wins):顶层列举 / 补学根 各一口;内联展开每个目录一口。
75
+ // begin() 先 abort 上一次,回调用 token.current() 判新旧 ⇒ 连续切换只认最后一次,
76
+ // 旧请求在 wire 上被取消(官方 remote 的 cancellation 形参),不再白读。
77
+ const listGateRef = useRef(null);
78
+ if (listGateRef.current === null)
79
+ listGateRef.current = createRequestGate();
80
+ const listGate = listGateRef.current;
81
+ const childAbortsRef = useRef(new Map());
82
+ const abortChildren = useCallback(() => {
83
+ for (const controller of childAbortsRef.current.values())
84
+ controller.abort();
85
+ childAbortsRef.current.clear();
86
+ }, []);
87
+ // 当前已提交的 dir / listing(初始 effect 判「同目录换文件」用 ref,避免把它们加进依赖)。
88
+ const dirRef = useRef('');
89
+ const listingRef = useRef(null);
90
+ useLayoutEffect(() => {
91
+ dirRef.current = dir;
92
+ listingRef.current = listing;
93
+ }, [dir, listing]);
94
+ // 路径 → 工作区匹配:props.path 是绝对路径时按最长前缀找出所属工作区,面包屑根名与
95
+ // 相对化就用它(路径本来就在 FS 面里,不需要再「反推工作区根」)。
96
+ // 匹配不到 ⇒ 回落 props.rootName(调用方给的显示名)。
97
+ // 工作区清单来源(优先级从高到低):① props.workspaceAnchors(调用方显式给,可覆盖);
98
+ // ② 宿主 workspaces 快照(connectHost 注入的 workspaceList,官方 WorkspaceView 镜像)。
99
+ // 快照异步到达时会重算 + 重跑初始 effect(rootBase 在其依赖里)⇒ 自愈,无感。
100
+ const hostWorkspaces = useSyncExternalStore(workspaceList.subscribe, workspaceList.getSnapshot);
101
+ const anchors = props.workspaceAnchors ?? hostWorkspaces;
102
+ // 根层清单:问宿主要(`op:'roots'`)。POSIX 回 `['/']`;Windows 回盘符 —— **Windows 没有「根目录」
103
+ // 这一个东西,根就是盘符清单**(用户 2026-11-03)。拿不到(文件面没这能力)⇒ 按 POSIX 单根。
104
+ const [roots, setRoots] = useState([FS_ROOT]);
105
+ useEffect(() => {
106
+ const ask = props.files.roots;
107
+ if (ask === undefined)
108
+ return;
109
+ let alive = true;
110
+ void Promise.resolve()
111
+ .then(() => ask.call(props.files))
112
+ .then((list) => {
113
+ if (!alive || list.length === 0)
114
+ return;
115
+ // 内容相同就不换引用:调用方每次渲染都给新的 files 对象时,否则会「effect → setState → 渲染 → effect」空转。
116
+ setRoots((prev) => (prev.length === list.length && prev.every((item, index) => item === list[index]) ? prev : list));
117
+ })
118
+ .catch(() => { });
119
+ return () => { alive = false; };
120
+ }, [props.files]);
121
+ const anchorMatch = useMemo(() => workspaceOfPath(props.path, anchors), [props.path, anchors]);
122
+ /** 相对路径的基准目录(工作区根):匹配出的工作区 > 调用方给的 > 无(只认绝对路径)。 */
123
+ const sessionAnchor = props.sessionId === undefined
124
+ ? null
125
+ : anchors.find((item) => item.sessionIds?.includes(props.sessionId) === true) ?? null;
126
+ const rootBase = anchorMatch?.path ?? props.rootPath ?? sessionAnchor?.path ?? anchors.find((item) => item.path !== undefined)?.path;
127
+ /** 任意入参 → 绝对路径(FS 面只认绝对路径)。 */
128
+ const absOf = useCallback((p) => {
129
+ if (isAbsoluteish(p))
130
+ return normalizePath(p);
131
+ // '' = 「根」:有工作区基准就是该工作区根,没有就是文件系统根(`/`;Windows 上是当前盘根)。
132
+ if (rootBase === undefined || rootBase === '')
133
+ return p === '' ? FS_ROOT : p;
134
+ return p === '' ? normalizePath(rootBase) : normalizePath(`${rootBase}/${p.replace(/^\/+/, '')}`);
135
+ }, [rootBase]);
136
+ /** 面板回传(绝对路径 + 工作区归属)。 */
137
+ const toPicked = useCallback((p, isDir) => {
138
+ const abs = absOf(p);
139
+ const owner = workspaceOfPath(abs, anchors);
140
+ return owner === null
141
+ ? { path: abs, isDir }
142
+ : { path: abs, isDir, workspaceRel: relativizeToDir(abs, owner.path ?? null), workspace: owner.title };
143
+ }, [absOf, anchors]);
144
+ /** 记一次 list 结果的"是否越界"(outside-workspace / not-found 均视为不可浏览)。 */
145
+ const noteOutside = useCallback((parsed) => {
146
+ if (parsed === null || parsed === undefined)
147
+ return;
148
+ if (!isFailed(parsed)) {
149
+ setOutside(false);
150
+ return;
151
+ }
152
+ const code = bareCode(parsed.failed);
153
+ if (code === 'outside-workspace' || code === 'not-found')
154
+ setOutside(true);
155
+ }, []);
156
+ /** 列举某目录并展示(清空 viewing;收起下拉)。 */
157
+ const fetchDir = useCallback((targetDir) => {
158
+ const token = listGate.begin();
159
+ abortChildren();
160
+ const absTarget = absOf(targetDir);
161
+ setDir(absTarget);
162
+ setViewing(null);
163
+ setListErr(null);
164
+ setMenuOpen(false);
165
+ setMode('loading');
166
+ // 切换顶层目录:清空内联展开态(展开树只属于当前这一层)。
167
+ setOpenDirs(new Set());
168
+ setChildCache({});
169
+ props.files
170
+ .list(absTarget, token.signal)
171
+ .then((result) => {
172
+ if (!token.current())
173
+ return;
174
+ const parsed = listingOf(result);
175
+ noteOutside(parsed);
176
+ if (isFailed(parsed)) {
177
+ setListErr(errView(parsed.failed));
178
+ setMode('error');
179
+ return;
180
+ }
181
+ if (parsed === null) {
182
+ setListErr({ key: 'previewBadPayload' });
183
+ setMode('error');
184
+ return;
185
+ }
186
+ setListing(parsed.entries);
187
+ setTruncated(parsed.truncated);
188
+ setMode('dir');
189
+ })
190
+ .catch((error) => {
191
+ if (isAborted(token.signal, error))
192
+ return;
193
+ setListErr(errView(error));
194
+ setMode('error');
195
+ });
196
+ }, [abortChildren, absOf, listGate, noteOutside, props.files]);
197
+ /** 进入某目录;点到当前目录本身 = 重列本层(刷新)。 */
198
+ const loadDir = useCallback((targetDir) => {
199
+ // 落地页上点 ▾ 选根目录 / 工作区:必须先退出落地页,否则主体还是落地页那张表,
200
+ // 点了跟没点一样(用户 2026-11-03 真机:"选里面的任何一个都没有任何效果")。
201
+ if (landingRef.current)
202
+ setLanding(false);
203
+ fetchDir(targetDir);
204
+ }, [fetchDir]);
205
+ // 初次进入(path 可能是文件或目录):
206
+ // list(path) 成功 ⇒ 目录树(dir 尽量取宿主绝对路径 ⇒ 面包屑从工作区根往下列);
207
+ // 报错 ⇒ 文件预览态(dir = 父目录,面包屑保留可返回)。
208
+ // ⚠️ 切勿改用服务端 list 返回的 path 当面包屑:那是 workspacePathOf 的工作区**相对**形式,
209
+ // 会丢掉根以下的前导段,面包屑只剩最近一层(源实现 2026-09-29 踩过 ⇒ 已回退为入参路径)。
210
+ useEffect(() => {
211
+ // 落地页(还没选根目录/工作区):什么都不列,等用户点。
212
+ // 用 ref 读、**不进依赖**:否则从落地页点进目录那一刻 landing 变 false 会重跑本 effect,
213
+ // 又把目录拉回 absOf('') = 第一个工作区(真机 2026-11-03)。
214
+ if (landingRef.current)
215
+ return;
216
+ // 同目录换文件(侧栏连点 / 重开同一文件):只换 viewing——目录树、展开态、滚动位置保留,
217
+ // 也不再额外触发一次 list。旧目录列举已由上一轮 effect 的清理函数 abort。
218
+ // 判据用 listingRef(不是 props.path 的类型):只有「当前已列出的这一层里确实有这个文件」
219
+ // 才走捷径,目录路径/相对名对不上时照旧走完整初始流程(不改变既有语义)。
220
+ const parent = dirnameOf(props.path);
221
+ const name = baseNameOfPath(props.path);
222
+ const knownFile = listingRef.current?.some((entry) => entry.name === name && entry.type === 'file') === true;
223
+ if (props.path !== '' && dirRef.current !== '' && parent === dirRef.current && knownFile) {
224
+ setViewing(absOf(props.path));
225
+ setMode('file');
226
+ setSourceView(false);
227
+ // 同路径再点一次也要重读内容(对齐旧版「每次打开都重读」;不重挂只换 key)。
228
+ setReloadNonce((n) => n + 1);
229
+ setListErr(null);
230
+ setMenuOpen(false);
231
+ return;
232
+ }
233
+ const token = listGate.begin();
234
+ abortChildren();
235
+ setMode('loading');
236
+ setListErr(null);
237
+ setViewing(null);
238
+ setSourceView(false);
239
+ setReloadNonce(0);
240
+ setMenuOpen(false);
241
+ setOpenDirs(new Set());
242
+ setChildCache({});
243
+ const entry = absOf(props.path);
244
+ props.files
245
+ .list(entry, token.signal)
246
+ .then((result) => {
247
+ if (!token.current())
248
+ return;
249
+ const parsed = listingOf(result);
250
+ if (!isFailed(parsed) && parsed !== null) {
251
+ setOutside(false);
252
+ setDir(entry);
253
+ setListing(parsed.entries);
254
+ setTruncated(parsed.truncated);
255
+ setMode('dir');
256
+ return;
257
+ }
258
+ // 不是目录 ⇒ 当作文件预览,dir 取父目录,尽量把父树也列出来。
259
+ const parentDir = dirnameOf(entry);
260
+ setDir(parentDir);
261
+ setViewing(entry);
262
+ setMode('file');
263
+ props.files
264
+ .list(parentDir, token.signal)
265
+ .then((pres) => {
266
+ if (!token.current())
267
+ return;
268
+ const pl = listingOf(pres);
269
+ noteOutside(pl);
270
+ if (!isFailed(pl) && pl !== null) {
271
+ setListing(pl.entries);
272
+ setTruncated(pl.truncated);
273
+ }
274
+ })
275
+ .catch(() => {
276
+ /* 父树列不出不影响文件预览(取消同样静默) */
277
+ });
278
+ })
279
+ .catch((error) => {
280
+ if (!token.current() || isAborted(token.signal, error))
281
+ return;
282
+ // 传输层失败:仍尝试按文件预览(预览体内部会给出错误态)。
283
+ setDir(dirnameOf(entry));
284
+ setViewing(entry);
285
+ setMode('file');
286
+ });
287
+ return () => {
288
+ listGate.abort();
289
+ };
290
+ // ⚠️ 这里**不** abort 内联展开的子请求:同目录换文件时它们仍然有效(树也保留着)。
291
+ // 子请求只在「换顶层目录」(fetchDir)与卸载时取消。
292
+ }, [abortChildren, absOf, listGate, noteOutside, props.files, props.path, revision]);
293
+ // 卸载时把内联展开的在途请求一起取消(依赖为空 ⇒ 只有卸载才跑清理)。
294
+ useEffect(() => () => abortChildren(), [abortChildren]);
295
+ /** ▾ 里点别的工作区:调用方没接管就直接列该工作区根(不需要会话)。 */
296
+ const switchWorkspace = useCallback((name) => {
297
+ if (props.onSelectWorkspace !== undefined) {
298
+ props.onSelectWorkspace(name);
299
+ return;
300
+ }
301
+ const target = anchors.find((item) => item.title === name);
302
+ if (target?.path !== undefined)
303
+ loadDir(target.path);
304
+ }, [anchors, loadDir, props.onSelectWorkspace]);
305
+ // 面包屑溢出测量:隐藏测量条渲染与可见态完全相同的 crumb 按钮(含 padding/max-width),
306
+ // 使溢出判定与真实排版一致——不超长时必定还原完整路径。ResizeObserver 同时覆盖
307
+ // dock 宽度变化 / 初次布局。
308
+ useLayoutEffect(() => {
309
+ const region = regionRef.current;
310
+ const measure = measureRef.current;
311
+ if (region === null || measure === null)
312
+ return;
313
+ const recompute = () => {
314
+ setCrumbsOverflow(measure.scrollWidth > region.clientWidth + 1);
315
+ };
316
+ recompute();
317
+ const ro = new ResizeObserver(recompute);
318
+ ro.observe(region);
319
+ return () => ro.disconnect();
320
+ // 依赖要带上「根反推完成」「越界态变化」:这两样会让面包屑从超长绝对路径相对化成
321
+ // 短路径,但若不重算,crumbsOverflow 会卡在首帧的 true(只显示末段),直到下次导航才复原
322
+ // (2026-10-28 真机:打开工作区内的绝对路径,面包屑只剩末段,点一下目录才恢复)。
323
+ }, [dir, viewing, mode, listing, outside]);
324
+ const reload = useCallback(() => {
325
+ if (viewing !== null) {
326
+ setReloadNonce((n) => n + 1);
327
+ return;
328
+ }
329
+ loadDir(dir);
330
+ }, [viewing, dir, loadDir]);
331
+ const copyPath = useCallback(() => {
332
+ // 口径统一:复制**工作区相对**路径(与 picker onPick 一致;绝对形态对用户无意义)。
333
+ const target = viewing ?? dir;
334
+ if (target === '')
335
+ return;
336
+ const rel = relativizeToDir(target, rootBase ?? null);
337
+ writeClipboard(rel)
338
+ .then((ok) => {
339
+ if (ok) {
340
+ setCopied(true);
341
+ window.setTimeout(() => setCopied(false), 1500);
342
+ }
343
+ })
344
+ .catch(() => {
345
+ /* 剪贴板不可用(非安全上下文等):静默,不弹错 */
346
+ });
347
+ }, [viewing, dir, rootBase]);
348
+ /** 内联展开/收起某目录(点 ▸):只切展开态,不导航;首次展开才拉子项。 */
349
+ const toggleDir = useCallback((path) => {
350
+ setOpenDirs((prev) => {
351
+ const next = new Set(prev);
352
+ if (next.has(path))
353
+ next.delete(path);
354
+ else
355
+ next.add(path);
356
+ return next;
357
+ });
358
+ if (!(path in childCache)) {
359
+ childAbortsRef.current.get(path)?.abort();
360
+ const controller = new AbortController();
361
+ childAbortsRef.current.set(path, controller);
362
+ setChildCache((prev) => ({ ...prev, [path]: { status: 'loading' } }));
363
+ props.files
364
+ .list(absOf(path), controller.signal)
365
+ .then((result) => {
366
+ if (controller.signal.aborted)
367
+ return;
368
+ const parsed = listingOf(result);
369
+ setChildCache((prev) => ({
370
+ ...prev,
371
+ [path]: isFailed(parsed) || parsed === null
372
+ ? { status: 'error', error: errView(isFailed(parsed) ? parsed.failed : undefined) }
373
+ : { status: 'ready', entries: parsed.entries, truncated: parsed.truncated },
374
+ }));
375
+ })
376
+ .catch((error) => {
377
+ if (isAborted(controller.signal, error))
378
+ return;
379
+ setChildCache((prev) => ({ ...prev, [path]: { status: 'error', error: errView(error) } }));
380
+ })
381
+ .finally(() => {
382
+ if (childAbortsRef.current.get(path) === controller)
383
+ childAbortsRef.current.delete(path);
384
+ });
385
+ }
386
+ }, [absOf, childCache, props.files]);
387
+ // 过滤点名了扩展名 ⇒ 要的是**文件**:目录只作导航(点行就地展开),不给「选择」、也回传不了 isDir。
388
+ // (旧实现「目录永远保留且永远带选择钮」,于是「仅 JS/MD」下出现「文件夹旁边有选择、
389
+ // MD 文件旁边反而没有」,选中还回传一个文件夹——与过滤语义直接打架。)
390
+ const extsOnly = picker && props.filter !== undefined && props.filter.dirs !== true && (props.filter.exts?.length ?? 0) > 0;
391
+ /** 选择器里目录是否可选:不限 或 明说 dirs:true 才可选;扩展名过滤下不可选。 */
392
+ const dirPickable = picker && props.onPick !== undefined && !extsOnly;
393
+ /** 递归渲染目录树(内联展开)。file = 点开预览(picker = 选中);dir = ▸ 切展开、行尾钮分派。 */
394
+ const renderTree = useCallback((entries, baseDir) => sortEntries(entries).map((entry) => {
395
+ const childPath = joinPath(baseDir, entry.name);
396
+ const isDir = entry.type === 'directory';
397
+ // 选择器过滤:不匹配的文件不渲染(目录永远保留——里面可能有匹配的)。
398
+ if (!isDir && picker && !matchesFilter(childPath, false, props.filter))
399
+ return null;
400
+ if (!isDir) {
401
+ const pick = () => {
402
+ if (picker && props.onPick !== undefined) {
403
+ // 回传绝对路径 + 工作区归属(用户 2026-11-03 定 `PickedPath`)。
404
+ props.onPick(toPicked(childPath, false));
405
+ return;
406
+ }
407
+ // 逐层展开后选中文件:面包屑要跟随到该文件所在目录。
408
+ const parent = dirnameOf(childPath);
409
+ if (parent !== dir)
410
+ loadDir(parent);
411
+ setViewing(childPath);
412
+ setReloadNonce(0);
413
+ setSourceView(false);
414
+ };
415
+ return h('div', {
416
+ key: childPath,
417
+ className: `dshpc-fb__row${picker ? ' dshpc-fb__row--pick' : ''}`,
418
+ role: 'button',
419
+ tabIndex: 0,
420
+ title: picker ? tt('explorerPickFile') : childPath,
421
+ onClick: pick,
422
+ onKeyDown: (event) => {
423
+ if (event.key === 'Enter' || event.key === ' ')
424
+ pick();
425
+ },
426
+ }, h('span', { className: 'dshpc-fb__row-icon' }, h(FileTypeIcon, { path: childPath, size: 18 })), h('span', { className: 'dshpc-fb__row-name' }, entry.name),
427
+ // 选择器里文件行也给一枚「选择」钮,与目录行的操作位对齐(目录没有时它仍在,
428
+ // 「点行 = 选中」的旧默契保持不变,外显入口不再缺)。
429
+ picker && props.onPick !== undefined
430
+ ? h(Button, {
431
+ variant: 'outline',
432
+ size: 'sm',
433
+ className: 'dshpc-fb__row-act',
434
+ 'aria-label': tt('explorerPickFile'),
435
+ onClick: (event) => {
436
+ event.stopPropagation();
437
+ pick();
438
+ },
439
+ }, tt('explorerPickDir'))
440
+ : null);
441
+ }
442
+ const cached = childCache[childPath];
443
+ const isOpen = openDirs.has(childPath);
444
+ // 目录行点击 = 就地展开/收起(两种形态统一,源实现用户 2026-10-10 拍板);
445
+ // 主动作挪到行尾小按钮:选择器 = 选择此文件夹,浏览 = 进入该目录。
446
+ // 目录行不渲染文件夹图标——行首已有展开小尖号,再摆一个是重复。
447
+ const rowAction = () => {
448
+ toggleDir(childPath);
449
+ };
450
+ const actThisDir = (event) => {
451
+ event.stopPropagation();
452
+ if (picker) {
453
+ // 扩展名过滤下这里不该被触发(目录行根本不渲染这枚钮);兜住是为了语义不被绕过。
454
+ if (!extsOnly && props.onPick !== undefined)
455
+ props.onPick(toPicked(childPath, true));
456
+ return;
457
+ }
458
+ loadDir(childPath);
459
+ };
460
+ return h(Fragment, { key: childPath }, h('div', {
461
+ className: 'dshpc-fb__row',
462
+ role: 'button',
463
+ tabIndex: 0,
464
+ title: childPath,
465
+ onClick: rowAction,
466
+ onKeyDown: (event) => {
467
+ if (event.key === 'Enter' || event.key === ' ')
468
+ rowAction();
469
+ },
470
+ },
471
+ // 展开 / 收起:核心 IconButton,20×20 命中位 + 展开时转 90°(与兄弟 .dsh-tdt-sv-tree-toggle 同款)。
472
+ h(IconButton, {
473
+ variant: 'plain',
474
+ size: 'sm',
475
+ className: `dshpc-fb__row-toggle${isOpen ? ' dshpc-fb__row-toggle--open' : ''}`,
476
+ icon: h(IconChevronRightOutlineRegular, { size: 16 }),
477
+ label: isOpen ? tt('explorerCollapse') : tt('explorerExpand'),
478
+ 'aria-expanded': isOpen,
479
+ onClick: (event) => {
480
+ event.stopPropagation();
481
+ toggleDir(childPath);
482
+ },
483
+ }), h('span', { className: 'dshpc-fb__row-name' }, entry.name),
484
+ // picker:仅目录可选时才出「选择」(扩展名过滤下没有,目录只作导航);
485
+ // 浏览态:出「进入」。
486
+ picker
487
+ ? dirPickable
488
+ ? h(Button, {
489
+ variant: 'outline',
490
+ size: 'sm',
491
+ className: 'dshpc-fb__row-act',
492
+ 'aria-label': tt('explorerPickDirAria'),
493
+ onClick: actThisDir,
494
+ }, tt('explorerPickDir'))
495
+ : null
496
+ : h(Button, {
497
+ variant: 'outline',
498
+ size: 'sm',
499
+ className: 'dshpc-fb__row-act',
500
+ 'aria-label': tt('explorerEnter'),
501
+ onClick: actThisDir,
502
+ }, tt('explorerEnter'))), isOpen
503
+ ? h('div', { className: 'dshpc-fb__row-children' },
504
+ // 硬性规定:不新建 Loading、不写加载文案 ⇒ 还在拉就空着(源实现用户 2026-10-05)。
505
+ cached === undefined || cached.status === 'loading'
506
+ ? null
507
+ : cached.status === 'error'
508
+ ? h('div', { className: 'dshpc-fb__row-err' }, tt(cached.error.key, cached.error.params))
509
+ : h(Fragment, null, renderTree(cached.entries, childPath), cached.truncated ? h('div', { className: 'dshpc-fb__row-note' }, tt('explorerTruncated')) : null))
510
+ : null);
511
+ }), [childCache, openDirs, picker, dirPickable, extsOnly, props.filter, props.onPick, toPicked, dir, loadDir, tt]);
512
+ // 根层条目:有盘符(Windows)就一条一档;否则单条「根目录」(POSIX)。
513
+ // 两者都是**可选目标**(用户 2026-11-03:Linux 的 `/` 也可以选;Windows 至少能选盘)。
514
+ const drives = roots.filter((root) => root !== FS_ROOT);
515
+ const rootRows = drives.length > 0
516
+ ? drives.map((path) => ({ label: path.replace(/\/+$/, ''), path }))
517
+ : [{ label: tt('explorerRootDir'), path: FS_ROOT }];
518
+ // 面包屑(用户 2026-11-03 定):**按当前目录**去比所有工作区。
519
+ // 命中 ⇒ 第一段是工作区名,其下按相对层级;没命中 ⇒ 第一段是根(「根目录」或盘符),其下逐层。
520
+ // 判据只看 `dir`(不比 props.path):浏览途中切进别的工作区也要立刻跟着切根。
521
+ const owner = workspaceOfPath(dir, anchors);
522
+ const rootLabel = owner?.title ?? '';
523
+ const crumbs = owner === null
524
+ ? (/^[a-zA-Z]:/.test(normalizePath(dir))
525
+ // 盘符路径:根段由 crumbsOfDir 自己出(`C:`),再补一段「根目录」就重复了。
526
+ ? crumbsOfDir(dir)
527
+ : [{ label: rootRows[0]?.label ?? tt('explorerRootDir'), path: FS_ROOT }, ...crumbsOfDir(dir)])
528
+ : [{ label: rootLabel, path: '' }, ...crumbsOfDir(relativizeToDir(dir, owner.path ?? null))];
529
+ // md / html 都出「渲染 ⇄ 源码」切换(默认渲染)。
530
+ const viewingIsMd = viewing !== null && /\.(md|markdown)$/i.test(viewing);
531
+ const viewingIsHtml = viewing !== null && /\.(html|htm)$/i.test(viewing);
532
+ const switchable = viewingIsMd || viewingIsHtml;
533
+ // 工作区清单:调用方没传就用宿主快照里的(picker 与 dock 同一条逻辑 —— 用户 2026-11-03:
534
+ // 两处显示必须一致,不能 dock 有清单、picker 只有一个根目录)。
535
+ const menuItems = crumbsMenuEntries({
536
+ workspaces: props.workspaces ?? anchors.map((item) => item.title),
537
+ roots: rootRows,
538
+ rootName: rootLabel,
539
+ rootFallbackLabel: tt('explorerRootName'),
540
+ crumbs,
541
+ onPickWorkspace: switchWorkspace,
542
+ onLoadDir: loadDir,
543
+ });
544
+ // 选择器的「选当前目录」入口(用户 2026-11-03:进到某一层之后,行上没有它自己,
545
+ // 树里也点不到「当前这层」⇒ 在 ✕ 左边给一枚按钮)。落地页还没进任何目录、扩展名过滤下
546
+ // 目录不是合法结果 —— 这两种情况不出按钮。
547
+ const pickNow = picker && props.onPick !== undefined && !landing && dirPickable && dir !== ''
548
+ ? h(Button, {
549
+ // 描边(outline):ghost 在这一排**看不出来是按钮**——它无底无边,与面板同色,
550
+ // 用户 2026-11-03 实测「就像没有背景一样」,于是改回有 border 的一档(覆盖当天早些的 ghost 结论)。
551
+ variant: 'outline',
552
+ size: 'sm',
553
+ className: 'dshpc-fb__pick',
554
+ 'aria-label': tt('explorerPickDirAria'),
555
+ onClick: () => props.onPick?.(toPicked(dir, true)),
556
+ }, tt('explorerPickDir'))
557
+ : null;
558
+ const nav = outside
559
+ ? h(PlainNav, { translate: tt, path: dir, pickNow, onClose: props.onClose })
560
+ : h(CrumbNav, {
561
+ translate: tt,
562
+ landing,
563
+ crumbs,
564
+ overflow: crumbsOverflow,
565
+ menuItems,
566
+ menuOpen,
567
+ onToggleMenu: () => setMenuOpen((v) => !v),
568
+ onCloseMenu: () => setMenuOpen(false),
569
+ onLoadDir: loadDir,
570
+ pickNow,
571
+ onClose: props.onClose,
572
+ regionRef,
573
+ measureRef,
574
+ });
575
+ const titleBar = viewing === null
576
+ ? null
577
+ : h(PreviewTitleBar, {
578
+ translate: tt,
579
+ path: viewing,
580
+ switchable,
581
+ isMarkdown: viewingIsMd,
582
+ sourceView,
583
+ onSourceViewChange: setSourceView,
584
+ copied,
585
+ onCopyPath: copyPath,
586
+ onReload: reload,
587
+ });
588
+ // ── 主体 ──
589
+ let body;
590
+ if (landing) {
591
+ body = h(LandingBody, {
592
+ translate: tt,
593
+ roots: rootRows,
594
+ anchors,
595
+ pickable: picker && props.onPick !== undefined && !extsOnly,
596
+ onOpen: loadDir,
597
+ onPickDir: (target) => props.onPick?.(toPicked(target, true)),
598
+ });
599
+ }
600
+ else if (viewing !== null) {
601
+ body = h(FilePreview, {
602
+ key: `${viewing}:${reloadNonce}`,
603
+ files: props.files,
604
+ officeToPdf: props.officeToPdf ?? null,
605
+ path: viewing,
606
+ sourceView,
607
+ // 行号只属于「打开时指定的那个文件」:在树里另点一个文件不该带过去。
608
+ line: viewing === absOf(props.path) ? props.focusLine : undefined,
609
+ translate: tt,
610
+ });
611
+ }
612
+ else if (mode === 'error' && listErr !== null) {
613
+ // 列举失败(如 outside-workspace):只给错误文案;关闭(✕)即退出。
614
+ body = h('div', { className: 'dshpc-fb__body' }, h('div', { className: 'dshpc-fb__err' }, tt(listErr.key, listErr.params)));
615
+ }
616
+ else if (listing !== null) {
617
+ const visible = listing.filter((entry) => entry.type === 'directory' || matchesFilter(joinPath(dir, entry.name), false, picker ? props.filter : undefined));
618
+ body =
619
+ visible.length === 0
620
+ ? h('div', { className: 'dshpc-fb__body' }, h('div', { className: 'dshpc-fb__note' }, tt('explorerEmptyDir')))
621
+ : h('div', { className: 'dshpc-fb__tree' }, renderTree(visible, dir), truncated ? h('div', { className: 'dshpc-fb__row-note' }, tt('explorerTruncated')) : null);
622
+ }
623
+ else {
624
+ // 不动 Loading、不写加载文案 ⇒ 空着(源实现硬性规定)。
625
+ body = h('div', { className: 'dshpc-fb__body' });
626
+ }
627
+ return h('div', {
628
+ className: 'dshpc-fb',
629
+ style: props.style ?? undefined,
630
+ }, nav, titleBar, body);
631
+ }
632
+ //# sourceMappingURL=FileBrowser.js.map