@50arms/ui 0.0.0-stage → 35.2.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 (1256) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +193 -2
  3. package/dist/components/Accordion.js +68 -0
  4. package/dist/components/Accordion.js.map +1 -0
  5. package/dist/components/AgentWorkingSpinner.js +46 -0
  6. package/dist/components/AgentWorkingSpinner.js.map +1 -0
  7. package/dist/components/AppShell.js +228 -0
  8. package/dist/components/AppShell.js.map +1 -0
  9. package/dist/components/Attention.js +130 -0
  10. package/dist/components/Attention.js.map +1 -0
  11. package/dist/components/Avatar.js +99 -0
  12. package/dist/components/Avatar.js.map +1 -0
  13. package/dist/components/Badge.js +143 -0
  14. package/dist/components/Badge.js.map +1 -0
  15. package/dist/components/Board.js +292 -0
  16. package/dist/components/Board.js.map +1 -0
  17. package/dist/components/Button.js +327 -0
  18. package/dist/components/Button.js.map +1 -0
  19. package/dist/components/Callout.js +106 -0
  20. package/dist/components/Callout.js.map +1 -0
  21. package/dist/components/Card.js +140 -0
  22. package/dist/components/Card.js.map +1 -0
  23. package/dist/components/Choice.js +361 -0
  24. package/dist/components/Choice.js.map +1 -0
  25. package/dist/components/CodeEditor.js +384 -0
  26. package/dist/components/CodeEditor.js.map +1 -0
  27. package/dist/components/ColorPicker.js +174 -0
  28. package/dist/components/ColorPicker.js.map +1 -0
  29. package/dist/components/Combobox.js +212 -0
  30. package/dist/components/Combobox.js.map +1 -0
  31. package/dist/components/CommandPalette.js +163 -0
  32. package/dist/components/CommandPalette.js.map +1 -0
  33. package/dist/components/ConcentricRing.js +60 -0
  34. package/dist/components/ConcentricRing.js.map +1 -0
  35. package/dist/components/ConnectionCard.js +98 -0
  36. package/dist/components/ConnectionCard.js.map +1 -0
  37. package/dist/components/ContextItemRow.js +49 -0
  38. package/dist/components/ContextItemRow.js.map +1 -0
  39. package/dist/components/CopyValue.js +57 -0
  40. package/dist/components/CopyValue.js.map +1 -0
  41. package/dist/components/CountBadge.js +26 -0
  42. package/dist/components/CountBadge.js.map +1 -0
  43. package/dist/components/DateCalendar.js +156 -0
  44. package/dist/components/DateCalendar.js.map +1 -0
  45. package/dist/components/DateField.js +166 -0
  46. package/dist/components/DateField.js.map +1 -0
  47. package/dist/components/DatePicker.js +56 -0
  48. package/dist/components/DatePicker.js.map +1 -0
  49. package/dist/components/DateTimeText.js +19 -0
  50. package/dist/components/DateTimeText.js.map +1 -0
  51. package/dist/components/DescriptionList.js +25 -0
  52. package/dist/components/DescriptionList.js.map +1 -0
  53. package/dist/components/Dialog.js +332 -0
  54. package/dist/components/Dialog.js.map +1 -0
  55. package/dist/components/DragDrop.js +395 -0
  56. package/dist/components/DragDrop.js.map +1 -0
  57. package/dist/components/Drawer.js +100 -0
  58. package/dist/components/Drawer.js.map +1 -0
  59. package/dist/components/EditGutter.js +110 -0
  60. package/dist/components/EditGutter.js.map +1 -0
  61. package/dist/components/EmojiPicker.js +174 -0
  62. package/dist/components/EmojiPicker.js.map +1 -0
  63. package/dist/components/ErrorBoundary.js +47 -0
  64. package/dist/components/ErrorBoundary.js.map +1 -0
  65. package/dist/components/Field.js +115 -0
  66. package/dist/components/Field.js.map +1 -0
  67. package/dist/components/FileUpload.js +128 -0
  68. package/dist/components/FileUpload.js.map +1 -0
  69. package/dist/components/FilterMenu.js +256 -0
  70. package/dist/components/FilterMenu.js.map +1 -0
  71. package/dist/components/GatesSection.js +79 -0
  72. package/dist/components/GatesSection.js.map +1 -0
  73. package/dist/components/Icon.js +50 -0
  74. package/dist/components/Icon.js.map +1 -0
  75. package/dist/components/IconButton.js +59 -0
  76. package/dist/components/IconButton.js.map +1 -0
  77. package/dist/components/IconStack.js +69 -0
  78. package/dist/components/IconStack.js.map +1 -0
  79. package/dist/components/ImageUploadField.js +146 -0
  80. package/dist/components/ImageUploadField.js.map +1 -0
  81. package/dist/components/InlineEdit.js +432 -0
  82. package/dist/components/InlineEdit.js.map +1 -0
  83. package/dist/components/InlineMarkdownEdit.js +184 -0
  84. package/dist/components/InlineMarkdownEdit.js.map +1 -0
  85. package/dist/components/Input.js +156 -0
  86. package/dist/components/Input.js.map +1 -0
  87. package/dist/components/LegalDocument.js +155 -0
  88. package/dist/components/LegalDocument.js.map +1 -0
  89. package/dist/components/LineDiff.js +95 -0
  90. package/dist/components/LineDiff.js.map +1 -0
  91. package/dist/components/ListHeader.js +72 -0
  92. package/dist/components/ListHeader.js.map +1 -0
  93. package/dist/components/Loading.js +111 -0
  94. package/dist/components/Loading.js.map +1 -0
  95. package/dist/components/Markdown.js +28 -0
  96. package/dist/components/Markdown.js.map +1 -0
  97. package/dist/components/MarkdownEditor.js +467 -0
  98. package/dist/components/MarkdownEditor.js.map +1 -0
  99. package/dist/components/Menu.js +185 -0
  100. package/dist/components/Menu.js.map +1 -0
  101. package/dist/components/Navigation.js +87 -0
  102. package/dist/components/Navigation.js.map +1 -0
  103. package/dist/components/NumberInput.js +119 -0
  104. package/dist/components/NumberInput.js.map +1 -0
  105. package/dist/components/OTPInput.js +71 -0
  106. package/dist/components/OTPInput.js.map +1 -0
  107. package/dist/components/OrderedEntityManager.js +170 -0
  108. package/dist/components/OrderedEntityManager.js.map +1 -0
  109. package/dist/components/PagedWindowList.js +74 -0
  110. package/dist/components/PagedWindowList.js.map +1 -0
  111. package/dist/components/PaginationBar.js +95 -0
  112. package/dist/components/PaginationBar.js.map +1 -0
  113. package/dist/components/Panel.js +396 -0
  114. package/dist/components/Panel.js.map +1 -0
  115. package/dist/components/PasswordInput.js +32 -0
  116. package/dist/components/PasswordInput.js.map +1 -0
  117. package/dist/components/PasswordRequirements.js +25 -0
  118. package/dist/components/PasswordRequirements.js.map +1 -0
  119. package/dist/components/PatchDiff.js +96 -0
  120. package/dist/components/PatchDiff.js.map +1 -0
  121. package/dist/components/PendingVeil.js +18 -0
  122. package/dist/components/PendingVeil.js.map +1 -0
  123. package/dist/components/Popover.js +214 -0
  124. package/dist/components/Popover.js.map +1 -0
  125. package/dist/components/Progress.js +419 -0
  126. package/dist/components/Progress.js.map +1 -0
  127. package/dist/components/RatingScale.js +89 -0
  128. package/dist/components/RatingScale.js.map +1 -0
  129. package/dist/components/ReadMore.js +232 -0
  130. package/dist/components/ReadMore.js.map +1 -0
  131. package/dist/components/RecordCard.js +202 -0
  132. package/dist/components/RecordCard.js.map +1 -0
  133. package/dist/components/RelativeTime.js +29 -0
  134. package/dist/components/RelativeTime.js.map +1 -0
  135. package/dist/components/SandboxedFrame.js +135 -0
  136. package/dist/components/SandboxedFrame.js.map +1 -0
  137. package/dist/components/SearchInput.js +38 -0
  138. package/dist/components/SearchInput.js.map +1 -0
  139. package/dist/components/SecretField.js +228 -0
  140. package/dist/components/SecretField.js.map +1 -0
  141. package/dist/components/SectionNav.js +42 -0
  142. package/dist/components/SectionNav.js.map +1 -0
  143. package/dist/components/Select.js +172 -0
  144. package/dist/components/Select.js.map +1 -0
  145. package/dist/components/SequenceDiagram.js +109 -0
  146. package/dist/components/SequenceDiagram.js.map +1 -0
  147. package/dist/components/SettingRow.js +124 -0
  148. package/dist/components/SettingRow.js.map +1 -0
  149. package/dist/components/SignOffRings.js +36 -0
  150. package/dist/components/SignOffRings.js.map +1 -0
  151. package/dist/components/Slider.js +353 -0
  152. package/dist/components/Slider.js.map +1 -0
  153. package/dist/components/SolutionChoice.js +89 -0
  154. package/dist/components/SolutionChoice.js.map +1 -0
  155. package/dist/components/SortMenu.js +75 -0
  156. package/dist/components/SortMenu.js.map +1 -0
  157. package/dist/components/Spinner.js +42 -0
  158. package/dist/components/Spinner.js.map +1 -0
  159. package/dist/components/Stat.js +148 -0
  160. package/dist/components/Stat.js.map +1 -0
  161. package/dist/components/StatusSelect.js +119 -0
  162. package/dist/components/StatusSelect.js.map +1 -0
  163. package/dist/components/Surface.js +210 -0
  164. package/dist/components/Surface.js.map +1 -0
  165. package/dist/components/Table.js +300 -0
  166. package/dist/components/Table.js.map +1 -0
  167. package/dist/components/Tabs.js +288 -0
  168. package/dist/components/Tabs.js.map +1 -0
  169. package/dist/components/ThemeMenu.js +198 -0
  170. package/dist/components/ThemeMenu.js.map +1 -0
  171. package/dist/components/Toast.js +217 -0
  172. package/dist/components/Toast.js.map +1 -0
  173. package/dist/components/Toggle.js +147 -0
  174. package/dist/components/Toggle.js.map +1 -0
  175. package/dist/components/ToggleMatrix.js +157 -0
  176. package/dist/components/ToggleMatrix.js.map +1 -0
  177. package/dist/components/Tree.js +125 -0
  178. package/dist/components/Tree.js.map +1 -0
  179. package/dist/components/TriStateSwitch.js +111 -0
  180. package/dist/components/TriStateSwitch.js.map +1 -0
  181. package/dist/components/VideoPlayer.js +64 -0
  182. package/dist/components/VideoPlayer.js.map +1 -0
  183. package/dist/components/auth/AcceptInvitationCard.js +110 -0
  184. package/dist/components/auth/AcceptInvitationCard.js.map +1 -0
  185. package/dist/components/auth/AuthLayout.js +18 -0
  186. package/dist/components/auth/AuthLayout.js.map +1 -0
  187. package/dist/components/auth/ForgotPasswordForm.js +44 -0
  188. package/dist/components/auth/ForgotPasswordForm.js.map +1 -0
  189. package/dist/components/auth/LoginForm.js +76 -0
  190. package/dist/components/auth/LoginForm.js.map +1 -0
  191. package/dist/components/auth/ResetPasswordForm.js +69 -0
  192. package/dist/components/auth/ResetPasswordForm.js.map +1 -0
  193. package/dist/components/auth/SignInProviders.js +45 -0
  194. package/dist/components/auth/SignInProviders.js.map +1 -0
  195. package/dist/components/auth/SignupCard.js +204 -0
  196. package/dist/components/auth/SignupCard.js.map +1 -0
  197. package/dist/components/auth/TermsAcceptance.js +43 -0
  198. package/dist/components/auth/TermsAcceptance.js.map +1 -0
  199. package/dist/components/board/context.js +32 -0
  200. package/dist/components/board/context.js.map +1 -0
  201. package/dist/components/board/recipe.js +94 -0
  202. package/dist/components/board/recipe.js.map +1 -0
  203. package/dist/components/calendar/CalendarMonth.js +299 -0
  204. package/dist/components/calendar/CalendarMonth.js.map +1 -0
  205. package/dist/components/calendar/CalendarTimeGrid.js +430 -0
  206. package/dist/components/calendar/CalendarTimeGrid.js.map +1 -0
  207. package/dist/components/calendar/EventActions.js +101 -0
  208. package/dist/components/calendar/EventActions.js.map +1 -0
  209. package/dist/components/calendar/format.js +73 -0
  210. package/dist/components/calendar/format.js.map +1 -0
  211. package/dist/components/calendar/palette.js +31 -0
  212. package/dist/components/calendar/palette.js.map +1 -0
  213. package/dist/components/calendar/use-calendar-drag.js +149 -0
  214. package/dist/components/calendar/use-calendar-drag.js.map +1 -0
  215. package/dist/components/calendar/use-event-keyboard.js +87 -0
  216. package/dist/components/calendar/use-event-keyboard.js.map +1 -0
  217. package/dist/components/calendar/use-grid-navigation.js +79 -0
  218. package/dist/components/calendar/use-grid-navigation.js.map +1 -0
  219. package/dist/components/calendar/use-now.js +27 -0
  220. package/dist/components/calendar/use-now.js.map +1 -0
  221. package/dist/components/card-face/AcRingGlyph.js +39 -0
  222. package/dist/components/card-face/AcRingGlyph.js.map +1 -0
  223. package/dist/components/card-face/BoardCardAgentSlot.js +17 -0
  224. package/dist/components/card-face/BoardCardAgentSlot.js.map +1 -0
  225. package/dist/components/card-face/CardFace.js +109 -0
  226. package/dist/components/card-face/CardFace.js.map +1 -0
  227. package/dist/components/card-face/CardTypeBadge.js +17 -0
  228. package/dist/components/card-face/CardTypeBadge.js.map +1 -0
  229. package/dist/components/card-face/EffortBadge.js +11 -0
  230. package/dist/components/card-face/EffortBadge.js.map +1 -0
  231. package/dist/components/card-face/GateRingGlyph.js +31 -0
  232. package/dist/components/card-face/GateRingGlyph.js.map +1 -0
  233. package/dist/components/card-face/OverflowRow.js +70 -0
  234. package/dist/components/card-face/OverflowRow.js.map +1 -0
  235. package/dist/components/card-face/TapTip.js +32 -0
  236. package/dist/components/card-face/TapTip.js.map +1 -0
  237. package/dist/components/card-face/hit-area.js +6 -0
  238. package/dist/components/card-face/hit-area.js.map +1 -0
  239. package/dist/components/card-face/vocabulary.js +102 -0
  240. package/dist/components/card-face/vocabulary.js.map +1 -0
  241. package/dist/components/chart/BarList.js +78 -0
  242. package/dist/components/chart/BarList.js.map +1 -0
  243. package/dist/components/chart/LineChart.js +310 -0
  244. package/dist/components/chart/LineChart.js.map +1 -0
  245. package/dist/components/chart/ShareBar.js +141 -0
  246. package/dist/components/chart/ShareBar.js.map +1 -0
  247. package/dist/components/chart/TimeSeriesChart.js +305 -0
  248. package/dist/components/chart/TimeSeriesChart.js.map +1 -0
  249. package/dist/components/chart/label-metrics.js +17 -0
  250. package/dist/components/chart/label-metrics.js.map +1 -0
  251. package/dist/components/chart/line-chart-axis.js +38 -0
  252. package/dist/components/chart/line-chart-axis.js.map +1 -0
  253. package/dist/components/chart/line-chart-scale.js +132 -0
  254. package/dist/components/chart/line-chart-scale.js.map +1 -0
  255. package/dist/components/chart/line-series-style.js +22 -0
  256. package/dist/components/chart/line-series-style.js.map +1 -0
  257. package/dist/components/chart/share-bar-labels.js +14 -0
  258. package/dist/components/chart/share-bar-labels.js.map +1 -0
  259. package/dist/components/chart/shared.js +157 -0
  260. package/dist/components/chart/shared.js.map +1 -0
  261. package/dist/components/chart/time-series-scale.js +51 -0
  262. package/dist/components/chart/time-series-scale.js.map +1 -0
  263. package/dist/components/chat/Attachment.js +316 -0
  264. package/dist/components/chat/Attachment.js.map +1 -0
  265. package/dist/components/chat/Chat.js +171 -0
  266. package/dist/components/chat/Chat.js.map +1 -0
  267. package/dist/components/chat/Composer.js +274 -0
  268. package/dist/components/chat/Composer.js.map +1 -0
  269. package/dist/components/chat/ContextMeter.js +202 -0
  270. package/dist/components/chat/ContextMeter.js.map +1 -0
  271. package/dist/components/chat/EffortControl.js +116 -0
  272. package/dist/components/chat/EffortControl.js.map +1 -0
  273. package/dist/components/chat/FileCover.js +78 -0
  274. package/dist/components/chat/FileCover.js.map +1 -0
  275. package/dist/components/chat/Message.js +356 -0
  276. package/dist/components/chat/Message.js.map +1 -0
  277. package/dist/components/chat/MessageScroller.js +104 -0
  278. package/dist/components/chat/MessageScroller.js.map +1 -0
  279. package/dist/components/chat/ModelSelector.js +156 -0
  280. package/dist/components/chat/ModelSelector.js.map +1 -0
  281. package/dist/components/chat/StreamingMarkdown.js +42 -0
  282. package/dist/components/chat/StreamingMarkdown.js.map +1 -0
  283. package/dist/components/chat/download-file.js +9 -0
  284. package/dist/components/chat/download-file.js.map +1 -0
  285. package/dist/components/chat/file-icon.js +39 -0
  286. package/dist/components/chat/file-icon.js.map +1 -0
  287. package/dist/components/checklist/StatusChecklist.js +103 -0
  288. package/dist/components/checklist/StatusChecklist.js.map +1 -0
  289. package/dist/components/checklist/tally.js +29 -0
  290. package/dist/components/checklist/tally.js.map +1 -0
  291. package/dist/components/code-editor/context.js +13 -0
  292. package/dist/components/code-editor/context.js.map +1 -0
  293. package/dist/components/code-editor/editing.js +93 -0
  294. package/dist/components/code-editor/editing.js.map +1 -0
  295. package/dist/components/code-editor/highlight.js +27 -0
  296. package/dist/components/code-editor/highlight.js.map +1 -0
  297. package/dist/components/code-editor/recipe.js +75 -0
  298. package/dist/components/code-editor/recipe.js.map +1 -0
  299. package/dist/components/date-timeline/DateTimeline.js +358 -0
  300. package/dist/components/date-timeline/DateTimeline.js.map +1 -0
  301. package/dist/components/date-timeline/TimelineRow.js +100 -0
  302. package/dist/components/date-timeline/TimelineRow.js.map +1 -0
  303. package/dist/components/date-timeline/useBarDrag.js +44 -0
  304. package/dist/components/date-timeline/useBarDrag.js.map +1 -0
  305. package/dist/components/date-timeline/useMarkerDrag.js +40 -0
  306. package/dist/components/date-timeline/useMarkerDrag.js.map +1 -0
  307. package/dist/components/date-timeline/useTimelineZoom.js +44 -0
  308. package/dist/components/date-timeline/useTimelineZoom.js.map +1 -0
  309. package/dist/components/drag-drop/context.js +37 -0
  310. package/dist/components/drag-drop/context.js.map +1 -0
  311. package/dist/components/drag-drop/recipe.js +270 -0
  312. package/dist/components/drag-drop/recipe.js.map +1 -0
  313. package/dist/components/drag-drop/shift.js +157 -0
  314. package/dist/components/drag-drop/shift.js.map +1 -0
  315. package/dist/components/edit/activation.js +10 -0
  316. package/dist/components/edit/activation.js.map +1 -0
  317. package/dist/components/edit/outcome.js +47 -0
  318. package/dist/components/edit/outcome.js.map +1 -0
  319. package/dist/components/edit/use-edit-session.js +146 -0
  320. package/dist/components/edit/use-edit-session.js.map +1 -0
  321. package/dist/components/file-viewer/FileViewer.js +97 -0
  322. package/dist/components/file-viewer/FileViewer.js.map +1 -0
  323. package/dist/components/file-viewer/PageNumberJumpField.js +47 -0
  324. package/dist/components/file-viewer/PageNumberJumpField.js.map +1 -0
  325. package/dist/components/file-viewer/ViewerControls.js +122 -0
  326. package/dist/components/file-viewer/ViewerControls.js.map +1 -0
  327. package/dist/components/file-viewer/ViewerRail.js +57 -0
  328. package/dist/components/file-viewer/ViewerRail.js.map +1 -0
  329. package/dist/components/file-viewer/ViewerStage.js +112 -0
  330. package/dist/components/file-viewer/ViewerStage.js.map +1 -0
  331. package/dist/components/file-viewer/frames.js +37 -0
  332. package/dist/components/file-viewer/frames.js.map +1 -0
  333. package/dist/components/file-viewer/use-frame-cursor.js +32 -0
  334. package/dist/components/file-viewer/use-frame-cursor.js.map +1 -0
  335. package/dist/components/file-viewer/use-viewer-keys.js +50 -0
  336. package/dist/components/file-viewer/use-viewer-keys.js.map +1 -0
  337. package/dist/components/file-viewer/use-viewer-zoom.js +68 -0
  338. package/dist/components/file-viewer/use-viewer-zoom.js.map +1 -0
  339. package/dist/components/focus-web/FocusWeb.js +322 -0
  340. package/dist/components/focus-web/FocusWeb.js.map +1 -0
  341. package/dist/components/focus-web/layout.js +34 -0
  342. package/dist/components/focus-web/layout.js.map +1 -0
  343. package/dist/components/graph-explorer/GraphExplorer.js +441 -0
  344. package/dist/components/graph-explorer/GraphExplorer.js.map +1 -0
  345. package/dist/components/graph-explorer/camera-math.js +102 -0
  346. package/dist/components/graph-explorer/camera-math.js.map +1 -0
  347. package/dist/components/graph-explorer/tree-layout.js +103 -0
  348. package/dist/components/graph-explorer/tree-layout.js.map +1 -0
  349. package/dist/components/graph-explorer/use-camera.js +82 -0
  350. package/dist/components/graph-explorer/use-camera.js.map +1 -0
  351. package/dist/components/graph-explorer/viewport-gesture.js +107 -0
  352. package/dist/components/graph-explorer/viewport-gesture.js.map +1 -0
  353. package/dist/components/kanban/KanbanBoard.js +219 -0
  354. package/dist/components/kanban/KanbanBoard.js.map +1 -0
  355. package/dist/components/kanban/recipe.js +144 -0
  356. package/dist/components/kanban/recipe.js.map +1 -0
  357. package/dist/components/markdown/Affordances.js +398 -0
  358. package/dist/components/markdown/Affordances.js.map +1 -0
  359. package/dist/components/markdown/AttachmentStrip.js +128 -0
  360. package/dist/components/markdown/AttachmentStrip.js.map +1 -0
  361. package/dist/components/markdown/ImageUpload.js +45 -0
  362. package/dist/components/markdown/ImageUpload.js.map +1 -0
  363. package/dist/components/media-error.js +7 -0
  364. package/dist/components/media-error.js.map +1 -0
  365. package/dist/components/nav-sections.js +61 -0
  366. package/dist/components/nav-sections.js.map +1 -0
  367. package/dist/components/node-canvas/NodeCanvas.js +384 -0
  368. package/dist/components/node-canvas/NodeCanvas.js.map +1 -0
  369. package/dist/components/node-canvas/layout.js +237 -0
  370. package/dist/components/node-canvas/layout.js.map +1 -0
  371. package/dist/components/node-canvas/use-canvas-gestures.js +143 -0
  372. package/dist/components/node-canvas/use-canvas-gestures.js.map +1 -0
  373. package/dist/components/openapi/OpenApiViewer.js +137 -0
  374. package/dist/components/openapi/OpenApiViewer.js.map +1 -0
  375. package/dist/components/openapi/OperationCard.js +145 -0
  376. package/dist/components/openapi/OperationCard.js.map +1 -0
  377. package/dist/components/openapi/SchemaView.js +68 -0
  378. package/dist/components/openapi/SchemaView.js.map +1 -0
  379. package/dist/components/openapi/resolve.js +102 -0
  380. package/dist/components/openapi/resolve.js.map +1 -0
  381. package/dist/components/openapi/types.js +5 -0
  382. package/dist/components/openapi/types.js.map +1 -0
  383. package/dist/components/overlay-shell.js +29 -0
  384. package/dist/components/overlay-shell.js.map +1 -0
  385. package/dist/components/overlay-stack.js +27 -0
  386. package/dist/components/overlay-stack.js.map +1 -0
  387. package/dist/components/paged-window/PageBlock.js +50 -0
  388. package/dist/components/paged-window/PageBlock.js.map +1 -0
  389. package/dist/components/provenance/ConfidenceBar.js +60 -0
  390. package/dist/components/provenance/ConfidenceBar.js.map +1 -0
  391. package/dist/components/provenance/ConfidenceMeter.js +36 -0
  392. package/dist/components/provenance/ConfidenceMeter.js.map +1 -0
  393. package/dist/components/provenance/ConfidenceReadout.js +31 -0
  394. package/dist/components/provenance/ConfidenceReadout.js.map +1 -0
  395. package/dist/components/provenance/ProvenanceBadge.js +44 -0
  396. package/dist/components/provenance/ProvenanceBadge.js.map +1 -0
  397. package/dist/components/provenance/ProvenanceDetail.js +114 -0
  398. package/dist/components/provenance/ProvenanceDetail.js.map +1 -0
  399. package/dist/components/provenance/ProvenanceDisclosure.js +111 -0
  400. package/dist/components/provenance/ProvenanceDisclosure.js.map +1 -0
  401. package/dist/components/provenance/absence.js +31 -0
  402. package/dist/components/provenance/absence.js.map +1 -0
  403. package/dist/components/provenance/types.js +30 -0
  404. package/dist/components/provenance/types.js.map +1 -0
  405. package/dist/components/rbac/AccessRequestPanel.js +153 -0
  406. package/dist/components/rbac/AccessRequestPanel.js.map +1 -0
  407. package/dist/components/rbac/AccountMenu.js +118 -0
  408. package/dist/components/rbac/AccountMenu.js.map +1 -0
  409. package/dist/components/rbac/AgentKeysList.js +20 -0
  410. package/dist/components/rbac/AgentKeysList.js.map +1 -0
  411. package/dist/components/rbac/ApiKeysPanel.js +172 -0
  412. package/dist/components/rbac/ApiKeysPanel.js.map +1 -0
  413. package/dist/components/rbac/ApiKeysTable.js +169 -0
  414. package/dist/components/rbac/ApiKeysTable.js.map +1 -0
  415. package/dist/components/rbac/Brand.js +13 -0
  416. package/dist/components/rbac/Brand.js.map +1 -0
  417. package/dist/components/rbac/Can.js +18 -0
  418. package/dist/components/rbac/Can.js.map +1 -0
  419. package/dist/components/rbac/ChangePasswordForm.js +73 -0
  420. package/dist/components/rbac/ChangePasswordForm.js.map +1 -0
  421. package/dist/components/rbac/DangerZone.js +27 -0
  422. package/dist/components/rbac/DangerZone.js.map +1 -0
  423. package/dist/components/rbac/DevToolsPopover.js +140 -0
  424. package/dist/components/rbac/DevToolsPopover.js.map +1 -0
  425. package/dist/components/rbac/EndedLine.js +24 -0
  426. package/dist/components/rbac/EndedLine.js.map +1 -0
  427. package/dist/components/rbac/InvitationsList.js +148 -0
  428. package/dist/components/rbac/InvitationsList.js.map +1 -0
  429. package/dist/components/rbac/InviteMembersDialog.js +97 -0
  430. package/dist/components/rbac/InviteMembersDialog.js.map +1 -0
  431. package/dist/components/rbac/MembersPanel.js +138 -0
  432. package/dist/components/rbac/MembersPanel.js.map +1 -0
  433. package/dist/components/rbac/PermissionRequestPanel.js +141 -0
  434. package/dist/components/rbac/PermissionRequestPanel.js.map +1 -0
  435. package/dist/components/rbac/ProfileForm.js +86 -0
  436. package/dist/components/rbac/ProfileForm.js.map +1 -0
  437. package/dist/components/rbac/ProfilePage.js +58 -0
  438. package/dist/components/rbac/ProfilePage.js.map +1 -0
  439. package/dist/components/rbac/RBACProvider.js +82 -0
  440. package/dist/components/rbac/RBACProvider.js.map +1 -0
  441. package/dist/components/rbac/RoleEditorDialog.js +90 -0
  442. package/dist/components/rbac/RoleEditorDialog.js.map +1 -0
  443. package/dist/components/rbac/RoleKeyPicker.js +77 -0
  444. package/dist/components/rbac/RoleKeyPicker.js.map +1 -0
  445. package/dist/components/rbac/RolePermissionMatrix.js +37 -0
  446. package/dist/components/rbac/RolePermissionMatrix.js.map +1 -0
  447. package/dist/components/rbac/RolesPermissionsPage.js +142 -0
  448. package/dist/components/rbac/RolesPermissionsPage.js.map +1 -0
  449. package/dist/components/rbac/SessionsList.js +146 -0
  450. package/dist/components/rbac/SessionsList.js.map +1 -0
  451. package/dist/components/rbac/TeamSettingsForm.js +69 -0
  452. package/dist/components/rbac/TeamSettingsForm.js.map +1 -0
  453. package/dist/components/rbac/TeamSwitcher.js +66 -0
  454. package/dist/components/rbac/TeamSwitcher.js.map +1 -0
  455. package/dist/components/rbac/approvalPanelParts.js +130 -0
  456. package/dist/components/rbac/approvalPanelParts.js.map +1 -0
  457. package/dist/components/rbac/permissionSections.js +8 -0
  458. package/dist/components/rbac/permissionSections.js.map +1 -0
  459. package/dist/components/rbac/stagedForm.js +42 -0
  460. package/dist/components/rbac/stagedForm.js.map +1 -0
  461. package/dist/components/rbac/useStagedImage.js +21 -0
  462. package/dist/components/rbac/useStagedImage.js.map +1 -0
  463. package/dist/components/roadmap/PhaseManager.js +48 -0
  464. package/dist/components/roadmap/PhaseManager.js.map +1 -0
  465. package/dist/components/roadmap/RoadmapItemCard.js +96 -0
  466. package/dist/components/roadmap/RoadmapItemCard.js.map +1 -0
  467. package/dist/components/roadmap/RoadmapPage.js +34 -0
  468. package/dist/components/roadmap/RoadmapPage.js.map +1 -0
  469. package/dist/components/roadmap/RoadmapSwimlaneBoard.js +91 -0
  470. package/dist/components/roadmap/RoadmapSwimlaneBoard.js.map +1 -0
  471. package/dist/components/roadmap/TrackManager.js +58 -0
  472. package/dist/components/roadmap/TrackManager.js.map +1 -0
  473. package/dist/components/roadmap/UseCaseCard.js +93 -0
  474. package/dist/components/roadmap/UseCaseCard.js.map +1 -0
  475. package/dist/components/roadmap/UseCaseLedgerPage.js +98 -0
  476. package/dist/components/roadmap/UseCaseLedgerPage.js.map +1 -0
  477. package/dist/components/roadmap/chip-tones.js +9 -0
  478. package/dist/components/roadmap/chip-tones.js.map +1 -0
  479. package/dist/components/roadmap/derive.js +28 -0
  480. package/dist/components/roadmap/derive.js.map +1 -0
  481. package/dist/components/stepper/Stepper.js +276 -0
  482. package/dist/components/stepper/Stepper.js.map +1 -0
  483. package/dist/components/stepper/derive.js +53 -0
  484. package/dist/components/stepper/derive.js.map +1 -0
  485. package/dist/confidence.css +222 -0
  486. package/dist/fonts/bricolage-grotesque-0.woff2 +0 -0
  487. package/dist/fonts/bricolage-grotesque-1.woff2 +0 -0
  488. package/dist/fonts/bricolage-grotesque-2.woff2 +0 -0
  489. package/dist/fonts/figtree-0.woff2 +0 -0
  490. package/dist/fonts/figtree-1.woff2 +0 -0
  491. package/dist/fonts/figtree-2.woff2 +0 -0
  492. package/dist/fonts/figtree-3.woff2 +0 -0
  493. package/dist/fonts/jetbrains-mono-0.woff2 +0 -0
  494. package/dist/fonts/jetbrains-mono-1.woff2 +0 -0
  495. package/dist/fonts/jetbrains-mono-10.woff2 +0 -0
  496. package/dist/fonts/jetbrains-mono-11.woff2 +0 -0
  497. package/dist/fonts/jetbrains-mono-2.woff2 +0 -0
  498. package/dist/fonts/jetbrains-mono-3.woff2 +0 -0
  499. package/dist/fonts/jetbrains-mono-4.woff2 +0 -0
  500. package/dist/fonts/jetbrains-mono-5.woff2 +0 -0
  501. package/dist/fonts/jetbrains-mono-6.woff2 +0 -0
  502. package/dist/fonts/jetbrains-mono-7.woff2 +0 -0
  503. package/dist/fonts/jetbrains-mono-8.woff2 +0 -0
  504. package/dist/fonts/jetbrains-mono-9.woff2 +0 -0
  505. package/dist/fonts.css +187 -0
  506. package/dist/icons/data.js +233 -0
  507. package/dist/icons/data.js.map +1 -0
  508. package/dist/index.js +942 -0
  509. package/dist/index.js.map +1 -0
  510. package/dist/lib/attention.js +75 -0
  511. package/dist/lib/attention.js.map +1 -0
  512. package/dist/lib/board/anchor.js +14 -0
  513. package/dist/lib/board/anchor.js.map +1 -0
  514. package/dist/lib/board/model.js +41 -0
  515. package/dist/lib/board/model.js.map +1 -0
  516. package/dist/lib/board/move.js +161 -0
  517. package/dist/lib/board/move.js.map +1 -0
  518. package/dist/lib/board/position.js +11 -0
  519. package/dist/lib/board/position.js.map +1 -0
  520. package/dist/lib/board/rejection.js +22 -0
  521. package/dist/lib/board/rejection.js.map +1 -0
  522. package/dist/lib/board/use-board.js +43 -0
  523. package/dist/lib/board/use-board.js.map +1 -0
  524. package/dist/lib/calendar/band-packer.js +44 -0
  525. package/dist/lib/calendar/band-packer.js.map +1 -0
  526. package/dist/lib/calendar/drag.js +74 -0
  527. package/dist/lib/calendar/drag.js.map +1 -0
  528. package/dist/lib/calendar/lane-packer.js +67 -0
  529. package/dist/lib/calendar/lane-packer.js.map +1 -0
  530. package/dist/lib/calendar/segments.js +82 -0
  531. package/dist/lib/calendar/segments.js.map +1 -0
  532. package/dist/lib/calendar/types.js +7 -0
  533. package/dist/lib/calendar/types.js.map +1 -0
  534. package/dist/lib/chart-palette.js +27 -0
  535. package/dist/lib/chart-palette.js.map +1 -0
  536. package/dist/lib/clipboard.js +30 -0
  537. package/dist/lib/clipboard.js.map +1 -0
  538. package/dist/lib/cn.js +9 -0
  539. package/dist/lib/cn.js.map +1 -0
  540. package/dist/lib/color.js +24 -0
  541. package/dist/lib/color.js.map +1 -0
  542. package/dist/lib/component-guidance.js +297 -0
  543. package/dist/lib/component-guidance.js.map +1 -0
  544. package/dist/lib/confidence.js +22 -0
  545. package/dist/lib/confidence.js.map +1 -0
  546. package/dist/lib/date-timeline/scale.js +197 -0
  547. package/dist/lib/date-timeline/scale.js.map +1 -0
  548. package/dist/lib/design-frame/document.js +44 -0
  549. package/dist/lib/design-frame/document.js.map +1 -0
  550. package/dist/lib/design-frame/mini-app-script.js +107 -0
  551. package/dist/lib/design-frame/mini-app-script.js.map +1 -0
  552. package/dist/lib/design-frame/mini-app.js +12 -0
  553. package/dist/lib/design-frame/mini-app.js.map +1 -0
  554. package/dist/lib/design-frame/protocol.js +46 -0
  555. package/dist/lib/design-frame/protocol.js.map +1 -0
  556. package/dist/lib/dev-warn.js +17 -0
  557. package/dist/lib/dev-warn.js.map +1 -0
  558. package/dist/lib/dnd/announce.js +120 -0
  559. package/dist/lib/dnd/announce.js.map +1 -0
  560. package/dist/lib/dnd/autoscroll.js +123 -0
  561. package/dist/lib/dnd/autoscroll.js.map +1 -0
  562. package/dist/lib/dnd/cross-drop.js +11 -0
  563. package/dist/lib/dnd/cross-drop.js.map +1 -0
  564. package/dist/lib/dnd/geometry.js +99 -0
  565. package/dist/lib/dnd/geometry.js.map +1 -0
  566. package/dist/lib/dnd/sensors/gesture.js +86 -0
  567. package/dist/lib/dnd/sensors/gesture.js.map +1 -0
  568. package/dist/lib/dnd/sensors/keyboard.js +47 -0
  569. package/dist/lib/dnd/sensors/keyboard.js.map +1 -0
  570. package/dist/lib/dnd/sensors/pointer.js +32 -0
  571. package/dist/lib/dnd/sensors/pointer.js.map +1 -0
  572. package/dist/lib/dnd/session.js +256 -0
  573. package/dist/lib/dnd/session.js.map +1 -0
  574. package/dist/lib/dnd/use-drag.js +90 -0
  575. package/dist/lib/dnd/use-drag.js.map +1 -0
  576. package/dist/lib/dom/scroll-ancestor.js +18 -0
  577. package/dist/lib/dom/scroll-ancestor.js.map +1 -0
  578. package/dist/lib/format.js +23 -0
  579. package/dist/lib/format.js.map +1 -0
  580. package/dist/lib/group-in-order.js +13 -0
  581. package/dist/lib/group-in-order.js.map +1 -0
  582. package/dist/lib/header-fold.js +11 -0
  583. package/dist/lib/header-fold.js.map +1 -0
  584. package/dist/lib/i18n/areas/auth-provenance-flows.js +156 -0
  585. package/dist/lib/i18n/areas/auth-provenance-flows.js.map +1 -0
  586. package/dist/lib/i18n/areas/board.js +35 -0
  587. package/dist/lib/i18n/areas/board.js.map +1 -0
  588. package/dist/lib/i18n/areas/card-face.js +10 -0
  589. package/dist/lib/i18n/areas/card-face.js.map +1 -0
  590. package/dist/lib/i18n/areas/chat-chart.js +118 -0
  591. package/dist/lib/i18n/areas/chat-chart.js.map +1 -0
  592. package/dist/lib/i18n/areas/code-editor.js +24 -0
  593. package/dist/lib/i18n/areas/code-editor.js.map +1 -0
  594. package/dist/lib/i18n/areas/date-timeline.js +21 -0
  595. package/dist/lib/i18n/areas/date-timeline.js.map +1 -0
  596. package/dist/lib/i18n/areas/dates.js +71 -0
  597. package/dist/lib/i18n/areas/dates.js.map +1 -0
  598. package/dist/lib/i18n/areas/docs-views.js +183 -0
  599. package/dist/lib/i18n/areas/docs-views.js.map +1 -0
  600. package/dist/lib/i18n/areas/feedback.js +75 -0
  601. package/dist/lib/i18n/areas/feedback.js.map +1 -0
  602. package/dist/lib/i18n/areas/formats.js +24 -0
  603. package/dist/lib/i18n/areas/formats.js.map +1 -0
  604. package/dist/lib/i18n/areas/forms.js +110 -0
  605. package/dist/lib/i18n/areas/forms.js.map +1 -0
  606. package/dist/lib/i18n/areas/keys.js +25 -0
  607. package/dist/lib/i18n/areas/keys.js.map +1 -0
  608. package/dist/lib/i18n/areas/markdown.js +136 -0
  609. package/dist/lib/i18n/areas/markdown.js.map +1 -0
  610. package/dist/lib/i18n/areas/move-rejected.js +14 -0
  611. package/dist/lib/i18n/areas/move-rejected.js.map +1 -0
  612. package/dist/lib/i18n/areas/navigation.js +104 -0
  613. package/dist/lib/i18n/areas/navigation.js.map +1 -0
  614. package/dist/lib/i18n/areas/rbac.js +332 -0
  615. package/dist/lib/i18n/areas/rbac.js.map +1 -0
  616. package/dist/lib/i18n/emphasis.js +6 -0
  617. package/dist/lib/i18n/emphasis.js.map +1 -0
  618. package/dist/lib/i18n/number-format.js +9 -0
  619. package/dist/lib/i18n/number-format.js.map +1 -0
  620. package/dist/lib/i18n/plural.js +9 -0
  621. package/dist/lib/i18n/plural.js.map +1 -0
  622. package/dist/lib/i18n/provider.js +27 -0
  623. package/dist/lib/i18n/provider.js.map +1 -0
  624. package/dist/lib/i18n/strings.js +38 -0
  625. package/dist/lib/i18n/strings.js.map +1 -0
  626. package/dist/lib/icons.js +17 -0
  627. package/dist/lib/icons.js.map +1 -0
  628. package/dist/lib/interactive-target.js +9 -0
  629. package/dist/lib/interactive-target.js.map +1 -0
  630. package/dist/lib/intl-cache.js +69 -0
  631. package/dist/lib/intl-cache.js.map +1 -0
  632. package/dist/lib/legal-document.js +37 -0
  633. package/dist/lib/legal-document.js.map +1 -0
  634. package/dist/lib/line-diff-model.js +51 -0
  635. package/dist/lib/line-diff-model.js.map +1 -0
  636. package/dist/lib/markdown/attachments.js +71 -0
  637. package/dist/lib/markdown/attachments.js.map +1 -0
  638. package/dist/lib/markdown/caret-map.js +153 -0
  639. package/dist/lib/markdown/caret-map.js.map +1 -0
  640. package/dist/lib/markdown/caret.js +35 -0
  641. package/dist/lib/markdown/caret.js.map +1 -0
  642. package/dist/lib/markdown/commands.js +443 -0
  643. package/dist/lib/markdown/commands.js.map +1 -0
  644. package/dist/lib/markdown/convert.js +153 -0
  645. package/dist/lib/markdown/convert.js.map +1 -0
  646. package/dist/lib/markdown/dom.js +89 -0
  647. package/dist/lib/markdown/dom.js.map +1 -0
  648. package/dist/lib/markdown/edit.js +92 -0
  649. package/dist/lib/markdown/edit.js.map +1 -0
  650. package/dist/lib/markdown/history.js +79 -0
  651. package/dist/lib/markdown/history.js.map +1 -0
  652. package/dist/lib/markdown/hotkeys.js +63 -0
  653. package/dist/lib/markdown/hotkeys.js.map +1 -0
  654. package/dist/lib/markdown/image-pipeline.js +236 -0
  655. package/dist/lib/markdown/image-pipeline.js.map +1 -0
  656. package/dist/lib/markdown/images.js +85 -0
  657. package/dist/lib/markdown/images.js.map +1 -0
  658. package/dist/lib/markdown/input.js +210 -0
  659. package/dist/lib/markdown/input.js.map +1 -0
  660. package/dist/lib/markdown/keys.js +37 -0
  661. package/dist/lib/markdown/keys.js.map +1 -0
  662. package/dist/lib/markdown/paste.js +180 -0
  663. package/dist/lib/markdown/paste.js.map +1 -0
  664. package/dist/lib/markdown/position.js +111 -0
  665. package/dist/lib/markdown/position.js.map +1 -0
  666. package/dist/lib/markdown/project.js +108 -0
  667. package/dist/lib/markdown/project.js.map +1 -0
  668. package/dist/lib/markdown/reconcile.js +127 -0
  669. package/dist/lib/markdown/reconcile.js.map +1 -0
  670. package/dist/lib/markdown/surface.js +373 -0
  671. package/dist/lib/markdown/surface.js.map +1 -0
  672. package/dist/lib/motion.js +22 -0
  673. package/dist/lib/motion.js.map +1 -0
  674. package/dist/lib/pad.js +7 -0
  675. package/dist/lib/pad.js.map +1 -0
  676. package/dist/lib/paged-window/layout.js +15 -0
  677. package/dist/lib/paged-window/layout.js.map +1 -0
  678. package/dist/lib/paged-window/list-owner.js +21 -0
  679. package/dist/lib/paged-window/list-owner.js.map +1 -0
  680. package/dist/lib/paged-window/records-binding.js +239 -0
  681. package/dist/lib/paged-window/records-binding.js.map +1 -0
  682. package/dist/lib/paged-window/store.js +562 -0
  683. package/dist/lib/paged-window/store.js.map +1 -0
  684. package/dist/lib/paged-window/use-measured-pitch.js +38 -0
  685. package/dist/lib/paged-window/use-measured-pitch.js.map +1 -0
  686. package/dist/lib/paged-window/use-page-visibility.js +36 -0
  687. package/dist/lib/paged-window/use-page-visibility.js.map +1 -0
  688. package/dist/lib/paged-window/use-paged-window.js +43 -0
  689. package/dist/lib/paged-window/use-paged-window.js.map +1 -0
  690. package/dist/lib/paged-window/use-scroll-root.js +12 -0
  691. package/dist/lib/paged-window/use-scroll-root.js.map +1 -0
  692. package/dist/lib/persist.js +84 -0
  693. package/dist/lib/persist.js.map +1 -0
  694. package/dist/lib/preference-values.js +13 -0
  695. package/dist/lib/preference-values.js.map +1 -0
  696. package/dist/lib/preferences.js +86 -0
  697. package/dist/lib/preferences.js.map +1 -0
  698. package/dist/lib/reads/hooks.js +156 -0
  699. package/dist/lib/reads/hooks.js.map +1 -0
  700. package/dist/lib/reads/optimistic.js +169 -0
  701. package/dist/lib/reads/optimistic.js.map +1 -0
  702. package/dist/lib/reads/refetch.js +108 -0
  703. package/dist/lib/reads/refetch.js.map +1 -0
  704. package/dist/lib/reads/slots.js +215 -0
  705. package/dist/lib/reads/slots.js.map +1 -0
  706. package/dist/lib/realtime/hooks.js +40 -0
  707. package/dist/lib/realtime/hooks.js.map +1 -0
  708. package/dist/lib/realtime/provider.js +25 -0
  709. package/dist/lib/realtime/provider.js.map +1 -0
  710. package/dist/lib/realtime/registry.js +472 -0
  711. package/dist/lib/realtime/registry.js.map +1 -0
  712. package/dist/lib/records/define-record-type.js +33 -0
  713. package/dist/lib/records/define-record-type.js.map +1 -0
  714. package/dist/lib/records/hooks.js +39 -0
  715. package/dist/lib/records/hooks.js.map +1 -0
  716. package/dist/lib/records/store.js +572 -0
  717. package/dist/lib/records/store.js.map +1 -0
  718. package/dist/lib/records/wire.js +58 -0
  719. package/dist/lib/records/wire.js.map +1 -0
  720. package/dist/lib/reduced-motion-help.js +19 -0
  721. package/dist/lib/reduced-motion-help.js.map +1 -0
  722. package/dist/lib/scroll-caret.js +18 -0
  723. package/dist/lib/scroll-caret.js.map +1 -0
  724. package/dist/lib/sim/createSimStore.js +54 -0
  725. package/dist/lib/sim/createSimStore.js.map +1 -0
  726. package/dist/lib/sim/latency.js +28 -0
  727. package/dist/lib/sim/latency.js.map +1 -0
  728. package/dist/lib/sim/registry.js +13 -0
  729. package/dist/lib/sim/registry.js.map +1 -0
  730. package/dist/lib/sim/settings.js +41 -0
  731. package/dist/lib/sim/settings.js.map +1 -0
  732. package/dist/lib/submit-shortcut.js +25 -0
  733. package/dist/lib/submit-shortcut.js.map +1 -0
  734. package/dist/lib/syntax/index.js +33 -0
  735. package/dist/lib/syntax/index.js.map +1 -0
  736. package/dist/lib/syntax/languages/bash.js +77 -0
  737. package/dist/lib/syntax/languages/bash.js.map +1 -0
  738. package/dist/lib/syntax/languages/css.js +81 -0
  739. package/dist/lib/syntax/languages/css.js.map +1 -0
  740. package/dist/lib/syntax/languages/html.js +91 -0
  741. package/dist/lib/syntax/languages/html.js.map +1 -0
  742. package/dist/lib/syntax/languages/index.js +49 -0
  743. package/dist/lib/syntax/languages/index.js.map +1 -0
  744. package/dist/lib/syntax/languages/javascript.js +133 -0
  745. package/dist/lib/syntax/languages/javascript.js.map +1 -0
  746. package/dist/lib/syntax/languages/json.js +45 -0
  747. package/dist/lib/syntax/languages/json.js.map +1 -0
  748. package/dist/lib/syntax/languages/mongodb.js +24 -0
  749. package/dist/lib/syntax/languages/mongodb.js.map +1 -0
  750. package/dist/lib/syntax/languages/plain.js +10 -0
  751. package/dist/lib/syntax/languages/plain.js.map +1 -0
  752. package/dist/lib/syntax/languages/sql.js +113 -0
  753. package/dist/lib/syntax/languages/sql.js.map +1 -0
  754. package/dist/lib/syntax/languages/vue.js +31 -0
  755. package/dist/lib/syntax/languages/vue.js.map +1 -0
  756. package/dist/lib/syntax/languages/yaml.js +55 -0
  757. package/dist/lib/syntax/languages/yaml.js.map +1 -0
  758. package/dist/lib/syntax/markdown/grammar.js +52 -0
  759. package/dist/lib/syntax/markdown/grammar.js.map +1 -0
  760. package/dist/lib/syntax/markdown/inline.js +477 -0
  761. package/dist/lib/syntax/markdown/inline.js.map +1 -0
  762. package/dist/lib/syntax/markdown/parse.js +464 -0
  763. package/dist/lib/syntax/markdown/parse.js.map +1 -0
  764. package/dist/lib/syntax/markdown/refs.js +94 -0
  765. package/dist/lib/syntax/markdown/refs.js.map +1 -0
  766. package/dist/lib/syntax/markdown/render.js +230 -0
  767. package/dist/lib/syntax/markdown/render.js.map +1 -0
  768. package/dist/lib/syntax/markdown/spans.js +40 -0
  769. package/dist/lib/syntax/markdown/spans.js.map +1 -0
  770. package/dist/lib/syntax/registry.js +55 -0
  771. package/dist/lib/syntax/registry.js.map +1 -0
  772. package/dist/lib/syntax/tokenize.js +96 -0
  773. package/dist/lib/syntax/tokenize.js.map +1 -0
  774. package/dist/lib/time/instant.js +7 -0
  775. package/dist/lib/time/instant.js.map +1 -0
  776. package/dist/lib/time/plain.js +83 -0
  777. package/dist/lib/time/plain.js.map +1 -0
  778. package/dist/lib/time/relativeAge.js +20 -0
  779. package/dist/lib/time/relativeAge.js.map +1 -0
  780. package/dist/lib/time/relativeClock.js +59 -0
  781. package/dist/lib/time/relativeClock.js.map +1 -0
  782. package/dist/lib/time/types.js +23 -0
  783. package/dist/lib/time/types.js.map +1 -0
  784. package/dist/lib/time/zone.js +148 -0
  785. package/dist/lib/time/zone.js.map +1 -0
  786. package/dist/lib/use-controllable.js +16 -0
  787. package/dist/lib/use-controllable.js.map +1 -0
  788. package/dist/lib/use-fill-height.js +49 -0
  789. package/dist/lib/use-fill-height.js.map +1 -0
  790. package/dist/lib/use-hydrated.js +14 -0
  791. package/dist/lib/use-hydrated.js.map +1 -0
  792. package/dist/lib/use-media-query.js +30 -0
  793. package/dist/lib/use-media-query.js.map +1 -0
  794. package/dist/lib/use-relabel-base-ui-dismiss.js +26 -0
  795. package/dist/lib/use-relabel-base-ui-dismiss.js.map +1 -0
  796. package/dist/lib/use-release-snap-drag.js +29 -0
  797. package/dist/lib/use-release-snap-drag.js.map +1 -0
  798. package/dist/lib/use-roving-options.js +18 -0
  799. package/dist/lib/use-roving-options.js.map +1 -0
  800. package/dist/lib/values/absent.js +5 -0
  801. package/dist/lib/values/absent.js.map +1 -0
  802. package/dist/lib/values/boolean.js +13 -0
  803. package/dist/lib/values/boolean.js.map +1 -0
  804. package/dist/lib/values/currency.js +23 -0
  805. package/dist/lib/values/currency.js.map +1 -0
  806. package/dist/lib/values/date.js +35 -0
  807. package/dist/lib/values/date.js.map +1 -0
  808. package/dist/lib/values/datetime.js +54 -0
  809. package/dist/lib/values/datetime.js.map +1 -0
  810. package/dist/lib/values/locale-date.js +60 -0
  811. package/dist/lib/values/locale-date.js.map +1 -0
  812. package/dist/lib/values/number.js +16 -0
  813. package/dist/lib/values/number.js.map +1 -0
  814. package/dist/pure.js +379 -0
  815. package/dist/pure.js.map +1 -0
  816. package/dist/styles.css +190 -0
  817. package/dist/theme.css +360 -0
  818. package/dist/types/components/Accordion.d.ts +15 -0
  819. package/dist/types/components/AgentWorkingSpinner.d.ts +23 -0
  820. package/dist/types/components/AppShell.d.ts +164 -0
  821. package/dist/types/components/Attention.d.ts +87 -0
  822. package/dist/types/components/Avatar.d.ts +154 -0
  823. package/dist/types/components/Badge.d.ts +131 -0
  824. package/dist/types/components/Board.d.ts +239 -0
  825. package/dist/types/components/Button.d.ts +208 -0
  826. package/dist/types/components/Callout.d.ts +163 -0
  827. package/dist/types/components/Card.d.ts +219 -0
  828. package/dist/types/components/Choice.d.ts +127 -0
  829. package/dist/types/components/CodeEditor.d.ts +86 -0
  830. package/dist/types/components/ColorPicker.d.ts +14 -0
  831. package/dist/types/components/Combobox.d.ts +43 -0
  832. package/dist/types/components/CommandPalette.d.ts +35 -0
  833. package/dist/types/components/ConcentricRing.d.ts +61 -0
  834. package/dist/types/components/ConnectionCard.d.ts +64 -0
  835. package/dist/types/components/ContextItemRow.d.ts +35 -0
  836. package/dist/types/components/CopyValue.d.ts +14 -0
  837. package/dist/types/components/CountBadge.d.ts +14 -0
  838. package/dist/types/components/DateCalendar.d.ts +30 -0
  839. package/dist/types/components/DateField.d.ts +29 -0
  840. package/dist/types/components/DatePicker.d.ts +20 -0
  841. package/dist/types/components/DateTimeText.d.ts +9 -0
  842. package/dist/types/components/DescriptionList.d.ts +40 -0
  843. package/dist/types/components/Dialog.d.ts +269 -0
  844. package/dist/types/components/DragDrop.d.ts +196 -0
  845. package/dist/types/components/Drawer.d.ts +163 -0
  846. package/dist/types/components/EditGutter.d.ts +44 -0
  847. package/dist/types/components/EmojiPicker.d.ts +30 -0
  848. package/dist/types/components/ErrorBoundary.d.ts +43 -0
  849. package/dist/types/components/Field.d.ts +37 -0
  850. package/dist/types/components/FileUpload.d.ts +22 -0
  851. package/dist/types/components/FilterMenu.d.ts +120 -0
  852. package/dist/types/components/GatesSection.d.ts +79 -0
  853. package/dist/types/components/Icon.d.ts +40 -0
  854. package/dist/types/components/IconButton.d.ts +69 -0
  855. package/dist/types/components/IconStack.d.ts +28 -0
  856. package/dist/types/components/ImageUploadField.d.ts +38 -0
  857. package/dist/types/components/InlineEdit.d.ts +183 -0
  858. package/dist/types/components/InlineMarkdownEdit.d.ts +100 -0
  859. package/dist/types/components/Input.d.ts +128 -0
  860. package/dist/types/components/LegalDocument.d.ts +23 -0
  861. package/dist/types/components/LineDiff.d.ts +53 -0
  862. package/dist/types/components/ListHeader.d.ts +45 -0
  863. package/dist/types/components/Loading.d.ts +131 -0
  864. package/dist/types/components/Markdown.d.ts +35 -0
  865. package/dist/types/components/MarkdownEditor.d.ts +129 -0
  866. package/dist/types/components/Menu.d.ts +157 -0
  867. package/dist/types/components/Navigation.d.ts +67 -0
  868. package/dist/types/components/NumberInput.d.ts +177 -0
  869. package/dist/types/components/OTPInput.d.ts +13 -0
  870. package/dist/types/components/OrderedEntityManager.d.ts +64 -0
  871. package/dist/types/components/PagedWindowList.d.ts +23 -0
  872. package/dist/types/components/PaginationBar.d.ts +31 -0
  873. package/dist/types/components/Panel.d.ts +94 -0
  874. package/dist/types/components/PasswordInput.d.ts +7 -0
  875. package/dist/types/components/PasswordRequirements.d.ts +11 -0
  876. package/dist/types/components/PatchDiff.d.ts +38 -0
  877. package/dist/types/components/PendingVeil.d.ts +8 -0
  878. package/dist/types/components/Popover.d.ts +231 -0
  879. package/dist/types/components/Progress.d.ts +580 -0
  880. package/dist/types/components/RatingScale.d.ts +30 -0
  881. package/dist/types/components/ReadMore.d.ts +26 -0
  882. package/dist/types/components/RecordCard.d.ts +413 -0
  883. package/dist/types/components/RelativeTime.d.ts +17 -0
  884. package/dist/types/components/SandboxedFrame.d.ts +37 -0
  885. package/dist/types/components/SearchInput.d.ts +6 -0
  886. package/dist/types/components/SecretField.d.ts +90 -0
  887. package/dist/types/components/SectionNav.d.ts +15 -0
  888. package/dist/types/components/Select.d.ts +53 -0
  889. package/dist/types/components/SequenceDiagram.d.ts +15 -0
  890. package/dist/types/components/SettingRow.d.ts +144 -0
  891. package/dist/types/components/SignOffRings.d.ts +29 -0
  892. package/dist/types/components/Slider.d.ts +255 -0
  893. package/dist/types/components/SolutionChoice.d.ts +49 -0
  894. package/dist/types/components/SortMenu.d.ts +45 -0
  895. package/dist/types/components/Spinner.d.ts +29 -0
  896. package/dist/types/components/Stat.d.ts +136 -0
  897. package/dist/types/components/StatusSelect.d.ts +93 -0
  898. package/dist/types/components/Surface.d.ts +145 -0
  899. package/dist/types/components/Table.d.ts +164 -0
  900. package/dist/types/components/Tabs.d.ts +142 -0
  901. package/dist/types/components/ThemeMenu.d.ts +56 -0
  902. package/dist/types/components/Toast.d.ts +63 -0
  903. package/dist/types/components/Toggle.d.ts +168 -0
  904. package/dist/types/components/ToggleMatrix.d.ts +51 -0
  905. package/dist/types/components/Tree.d.ts +20 -0
  906. package/dist/types/components/TriStateSwitch.d.ts +63 -0
  907. package/dist/types/components/VideoPlayer.d.ts +26 -0
  908. package/dist/types/components/auth/AcceptInvitationCard.d.ts +54 -0
  909. package/dist/types/components/auth/AuthLayout.d.ts +12 -0
  910. package/dist/types/components/auth/ForgotPasswordForm.d.ts +6 -0
  911. package/dist/types/components/auth/LoginForm.d.ts +13 -0
  912. package/dist/types/components/auth/ResetPasswordForm.d.ts +9 -0
  913. package/dist/types/components/auth/SignInProviders.d.ts +56 -0
  914. package/dist/types/components/auth/SignupCard.d.ts +62 -0
  915. package/dist/types/components/auth/TermsAcceptance.d.ts +14 -0
  916. package/dist/types/components/auth/index.d.ts +8 -0
  917. package/dist/types/components/board/context.d.ts +65 -0
  918. package/dist/types/components/board/recipe.d.ts +97 -0
  919. package/dist/types/components/calendar/CalendarMonth.d.ts +32 -0
  920. package/dist/types/components/calendar/CalendarTimeGrid.d.ts +74 -0
  921. package/dist/types/components/calendar/EventActions.d.ts +16 -0
  922. package/dist/types/components/calendar/format.d.ts +42 -0
  923. package/dist/types/components/calendar/palette.d.ts +17 -0
  924. package/dist/types/components/calendar/use-calendar-drag.d.ts +53 -0
  925. package/dist/types/components/calendar/use-event-keyboard.d.ts +23 -0
  926. package/dist/types/components/calendar/use-grid-navigation.d.ts +47 -0
  927. package/dist/types/components/calendar/use-now.d.ts +20 -0
  928. package/dist/types/components/card-face/AcRingGlyph.d.ts +20 -0
  929. package/dist/types/components/card-face/BoardCardAgentSlot.d.ts +19 -0
  930. package/dist/types/components/card-face/CardFace.d.ts +106 -0
  931. package/dist/types/components/card-face/CardTypeBadge.d.ts +21 -0
  932. package/dist/types/components/card-face/EffortBadge.d.ts +9 -0
  933. package/dist/types/components/card-face/GateRingGlyph.d.ts +22 -0
  934. package/dist/types/components/card-face/OverflowRow.d.ts +40 -0
  935. package/dist/types/components/card-face/TapTip.d.ts +15 -0
  936. package/dist/types/components/card-face/hit-area.d.ts +20 -0
  937. package/dist/types/components/card-face/vocabulary.d.ts +83 -0
  938. package/dist/types/components/chart/BarList.d.ts +27 -0
  939. package/dist/types/components/chart/LineChart.d.ts +64 -0
  940. package/dist/types/components/chart/ShareBar.d.ts +26 -0
  941. package/dist/types/components/chart/TimeSeriesChart.d.ts +60 -0
  942. package/dist/types/components/chart/label-metrics.d.ts +9 -0
  943. package/dist/types/components/chart/line-chart-axis.d.ts +14 -0
  944. package/dist/types/components/chart/line-chart-scale.d.ts +55 -0
  945. package/dist/types/components/chart/line-series-style.d.ts +14 -0
  946. package/dist/types/components/chart/share-bar-labels.d.ts +17 -0
  947. package/dist/types/components/chart/shared.d.ts +122 -0
  948. package/dist/types/components/chart/time-series-scale.d.ts +29 -0
  949. package/dist/types/components/chat/Attachment.d.ts +125 -0
  950. package/dist/types/components/chat/Chat.d.ts +60 -0
  951. package/dist/types/components/chat/Composer.d.ts +62 -0
  952. package/dist/types/components/chat/ContextMeter.d.ts +45 -0
  953. package/dist/types/components/chat/EffortControl.d.ts +23 -0
  954. package/dist/types/components/chat/FileCover.d.ts +14 -0
  955. package/dist/types/components/chat/Message.d.ts +66 -0
  956. package/dist/types/components/chat/MessageScroller.d.ts +18 -0
  957. package/dist/types/components/chat/ModelSelector.d.ts +44 -0
  958. package/dist/types/components/chat/StreamingMarkdown.d.ts +11 -0
  959. package/dist/types/components/chat/download-file.d.ts +7 -0
  960. package/dist/types/components/chat/file-icon.d.ts +29 -0
  961. package/dist/types/components/chat/types.d.ts +165 -0
  962. package/dist/types/components/checklist/StatusChecklist.d.ts +37 -0
  963. package/dist/types/components/checklist/index.d.ts +3 -0
  964. package/dist/types/components/checklist/tally.d.ts +19 -0
  965. package/dist/types/components/checklist/types.d.ts +28 -0
  966. package/dist/types/components/code-editor/context.d.ts +32 -0
  967. package/dist/types/components/code-editor/editing.d.ts +39 -0
  968. package/dist/types/components/code-editor/highlight.d.ts +20 -0
  969. package/dist/types/components/code-editor/recipe.d.ts +109 -0
  970. package/dist/types/components/date-timeline/DateTimeline.d.ts +99 -0
  971. package/dist/types/components/date-timeline/TimelineRow.d.ts +22 -0
  972. package/dist/types/components/date-timeline/useBarDrag.d.ts +15 -0
  973. package/dist/types/components/date-timeline/useMarkerDrag.d.ts +14 -0
  974. package/dist/types/components/date-timeline/useTimelineZoom.d.ts +23 -0
  975. package/dist/types/components/drag-drop/context.d.ts +85 -0
  976. package/dist/types/components/drag-drop/recipe.d.ts +163 -0
  977. package/dist/types/components/drag-drop/shift.d.ts +153 -0
  978. package/dist/types/components/edit/activation.d.ts +21 -0
  979. package/dist/types/components/edit/outcome.d.ts +29 -0
  980. package/dist/types/components/edit/use-edit-session.d.ts +77 -0
  981. package/dist/types/components/file-viewer/FileViewer.d.ts +2 -0
  982. package/dist/types/components/file-viewer/PageNumberJumpField.d.ts +9 -0
  983. package/dist/types/components/file-viewer/ViewerControls.d.ts +20 -0
  984. package/dist/types/components/file-viewer/ViewerRail.d.ts +10 -0
  985. package/dist/types/components/file-viewer/ViewerStage.d.ts +22 -0
  986. package/dist/types/components/file-viewer/frames.d.ts +28 -0
  987. package/dist/types/components/file-viewer/index.d.ts +3 -0
  988. package/dist/types/components/file-viewer/types.d.ts +70 -0
  989. package/dist/types/components/file-viewer/use-frame-cursor.d.ts +13 -0
  990. package/dist/types/components/file-viewer/use-viewer-keys.d.ts +24 -0
  991. package/dist/types/components/file-viewer/use-viewer-zoom.d.ts +29 -0
  992. package/dist/types/components/focus-web/FocusWeb.d.ts +3 -0
  993. package/dist/types/components/focus-web/index.d.ts +4 -0
  994. package/dist/types/components/focus-web/layout.d.ts +55 -0
  995. package/dist/types/components/focus-web/types.d.ts +131 -0
  996. package/dist/types/components/graph-explorer/GraphExplorer.d.ts +42 -0
  997. package/dist/types/components/graph-explorer/camera-math.d.ts +119 -0
  998. package/dist/types/components/graph-explorer/index.d.ts +5 -0
  999. package/dist/types/components/graph-explorer/tree-layout.d.ts +67 -0
  1000. package/dist/types/components/graph-explorer/types.d.ts +62 -0
  1001. package/dist/types/components/graph-explorer/use-camera.d.ts +81 -0
  1002. package/dist/types/components/graph-explorer/viewport-gesture.d.ts +32 -0
  1003. package/dist/types/components/kanban/KanbanBoard.d.ts +72 -0
  1004. package/dist/types/components/kanban/recipe.d.ts +73 -0
  1005. package/dist/types/components/kanban/types.d.ts +55 -0
  1006. package/dist/types/components/markdown/Affordances.d.ts +105 -0
  1007. package/dist/types/components/markdown/AttachmentStrip.d.ts +25 -0
  1008. package/dist/types/components/markdown/ImageUpload.d.ts +56 -0
  1009. package/dist/types/components/media-error.d.ts +11 -0
  1010. package/dist/types/components/nav-sections.d.ts +10 -0
  1011. package/dist/types/components/node-canvas/NodeCanvas.d.ts +66 -0
  1012. package/dist/types/components/node-canvas/index.d.ts +3 -0
  1013. package/dist/types/components/node-canvas/layout.d.ts +29 -0
  1014. package/dist/types/components/node-canvas/types.d.ts +207 -0
  1015. package/dist/types/components/node-canvas/use-canvas-gestures.d.ts +39 -0
  1016. package/dist/types/components/openapi/OpenApiViewer.d.ts +14 -0
  1017. package/dist/types/components/openapi/OperationCard.d.ts +33 -0
  1018. package/dist/types/components/openapi/SchemaView.d.ts +14 -0
  1019. package/dist/types/components/openapi/index.d.ts +6 -0
  1020. package/dist/types/components/openapi/resolve.d.ts +72 -0
  1021. package/dist/types/components/openapi/types.d.ts +128 -0
  1022. package/dist/types/components/overlay-shell.d.ts +48 -0
  1023. package/dist/types/components/overlay-stack.d.ts +18 -0
  1024. package/dist/types/components/paged-window/PageBlock.d.ts +31 -0
  1025. package/dist/types/components/provenance/ConfidenceBar.d.ts +118 -0
  1026. package/dist/types/components/provenance/ConfidenceMeter.d.ts +21 -0
  1027. package/dist/types/components/provenance/ConfidenceReadout.d.ts +17 -0
  1028. package/dist/types/components/provenance/ProvenanceBadge.d.ts +23 -0
  1029. package/dist/types/components/provenance/ProvenanceDetail.d.ts +109 -0
  1030. package/dist/types/components/provenance/ProvenanceDisclosure.d.ts +107 -0
  1031. package/dist/types/components/provenance/absence.d.ts +37 -0
  1032. package/dist/types/components/provenance/index.d.ts +7 -0
  1033. package/dist/types/components/provenance/types.d.ts +137 -0
  1034. package/dist/types/components/rbac/AccessRequestPanel.d.ts +92 -0
  1035. package/dist/types/components/rbac/AccountMenu.d.ts +46 -0
  1036. package/dist/types/components/rbac/AgentKeysList.d.ts +22 -0
  1037. package/dist/types/components/rbac/ApiKeysPanel.d.ts +26 -0
  1038. package/dist/types/components/rbac/ApiKeysTable.d.ts +65 -0
  1039. package/dist/types/components/rbac/Brand.d.ts +8 -0
  1040. package/dist/types/components/rbac/Can.d.ts +19 -0
  1041. package/dist/types/components/rbac/ChangePasswordForm.d.ts +18 -0
  1042. package/dist/types/components/rbac/DangerZone.d.ts +8 -0
  1043. package/dist/types/components/rbac/DevToolsPopover.d.ts +36 -0
  1044. package/dist/types/components/rbac/EndedLine.d.ts +21 -0
  1045. package/dist/types/components/rbac/InvitationsList.d.ts +39 -0
  1046. package/dist/types/components/rbac/InviteMembersDialog.d.ts +21 -0
  1047. package/dist/types/components/rbac/MembersPanel.d.ts +31 -0
  1048. package/dist/types/components/rbac/PermissionRequestPanel.d.ts +36 -0
  1049. package/dist/types/components/rbac/ProfileForm.d.ts +27 -0
  1050. package/dist/types/components/rbac/ProfilePage.d.ts +16 -0
  1051. package/dist/types/components/rbac/RBACProvider.d.ts +69 -0
  1052. package/dist/types/components/rbac/RoleEditorDialog.d.ts +28 -0
  1053. package/dist/types/components/rbac/RoleKeyPicker.d.ts +24 -0
  1054. package/dist/types/components/rbac/RolePermissionMatrix.d.ts +21 -0
  1055. package/dist/types/components/rbac/RolesPermissionsPage.d.ts +24 -0
  1056. package/dist/types/components/rbac/SessionsList.d.ts +35 -0
  1057. package/dist/types/components/rbac/TeamSettingsForm.d.ts +22 -0
  1058. package/dist/types/components/rbac/TeamSwitcher.d.ts +5 -0
  1059. package/dist/types/components/rbac/approvalPanelParts.d.ts +69 -0
  1060. package/dist/types/components/rbac/index.d.ts +25 -0
  1061. package/dist/types/components/rbac/permissionSections.d.ts +8 -0
  1062. package/dist/types/components/rbac/stagedForm.d.ts +25 -0
  1063. package/dist/types/components/rbac/types.d.ts +65 -0
  1064. package/dist/types/components/rbac/useStagedImage.d.ts +15 -0
  1065. package/dist/types/components/roadmap/PhaseManager.d.ts +19 -0
  1066. package/dist/types/components/roadmap/RoadmapItemCard.d.ts +51 -0
  1067. package/dist/types/components/roadmap/RoadmapPage.d.ts +12 -0
  1068. package/dist/types/components/roadmap/RoadmapSwimlaneBoard.d.ts +15 -0
  1069. package/dist/types/components/roadmap/TrackManager.d.ts +19 -0
  1070. package/dist/types/components/roadmap/UseCaseCard.d.ts +30 -0
  1071. package/dist/types/components/roadmap/UseCaseLedgerPage.d.ts +29 -0
  1072. package/dist/types/components/roadmap/chip-tones.d.ts +2 -0
  1073. package/dist/types/components/roadmap/derive.d.ts +39 -0
  1074. package/dist/types/components/roadmap/index.d.ts +10 -0
  1075. package/dist/types/components/roadmap/types.d.ts +86 -0
  1076. package/dist/types/components/stepper/Stepper.d.ts +79 -0
  1077. package/dist/types/components/stepper/derive.d.ts +49 -0
  1078. package/dist/types/components/stepper/index.d.ts +3 -0
  1079. package/dist/types/components/stepper/types.d.ts +118 -0
  1080. package/dist/types/icons/data.d.ts +2054 -0
  1081. package/dist/types/index.d.ts +209 -0
  1082. package/dist/types/lib/attention.d.ts +62 -0
  1083. package/dist/types/lib/board/anchor.d.ts +69 -0
  1084. package/dist/types/lib/board/index.d.ts +17 -0
  1085. package/dist/types/lib/board/model.d.ts +43 -0
  1086. package/dist/types/lib/board/move.d.ts +181 -0
  1087. package/dist/types/lib/board/position.d.ts +22 -0
  1088. package/dist/types/lib/board/rejection.d.ts +8 -0
  1089. package/dist/types/lib/board/types.d.ts +294 -0
  1090. package/dist/types/lib/board/use-board.d.ts +47 -0
  1091. package/dist/types/lib/calendar/band-packer.d.ts +53 -0
  1092. package/dist/types/lib/calendar/drag.d.ts +125 -0
  1093. package/dist/types/lib/calendar/index.d.ts +4 -0
  1094. package/dist/types/lib/calendar/lane-packer.d.ts +88 -0
  1095. package/dist/types/lib/calendar/segments.d.ts +91 -0
  1096. package/dist/types/lib/calendar/types.d.ts +166 -0
  1097. package/dist/types/lib/chart-palette.d.ts +14 -0
  1098. package/dist/types/lib/clipboard.d.ts +12 -0
  1099. package/dist/types/lib/cn.d.ts +7 -0
  1100. package/dist/types/lib/color.d.ts +14 -0
  1101. package/dist/types/lib/component-guidance.d.ts +15 -0
  1102. package/dist/types/lib/confidence.d.ts +28 -0
  1103. package/dist/types/lib/date-timeline/scale.d.ts +143 -0
  1104. package/dist/types/lib/design-frame/document.d.ts +39 -0
  1105. package/dist/types/lib/design-frame/mini-app-script.d.ts +29 -0
  1106. package/dist/types/lib/design-frame/mini-app.d.ts +17 -0
  1107. package/dist/types/lib/design-frame/protocol.d.ts +78 -0
  1108. package/dist/types/lib/dev-warn.d.ts +10 -0
  1109. package/dist/types/lib/dnd/announce.d.ts +124 -0
  1110. package/dist/types/lib/dnd/autoscroll.d.ts +88 -0
  1111. package/dist/types/lib/dnd/cross-drop.d.ts +18 -0
  1112. package/dist/types/lib/dnd/geometry.d.ts +126 -0
  1113. package/dist/types/lib/dnd/index.d.ts +17 -0
  1114. package/dist/types/lib/dnd/sensors/gesture.d.ts +37 -0
  1115. package/dist/types/lib/dnd/sensors/keyboard.d.ts +54 -0
  1116. package/dist/types/lib/dnd/sensors/pointer.d.ts +59 -0
  1117. package/dist/types/lib/dnd/session.d.ts +124 -0
  1118. package/dist/types/lib/dnd/types.d.ts +226 -0
  1119. package/dist/types/lib/dnd/use-drag.d.ts +82 -0
  1120. package/dist/types/lib/dom/scroll-ancestor.d.ts +15 -0
  1121. package/dist/types/lib/format.d.ts +33 -0
  1122. package/dist/types/lib/group-in-order.d.ts +13 -0
  1123. package/dist/types/lib/header-fold.d.ts +10 -0
  1124. package/dist/types/lib/i18n/areas/auth-provenance-flows.d.ts +287 -0
  1125. package/dist/types/lib/i18n/areas/board.d.ts +51 -0
  1126. package/dist/types/lib/i18n/areas/card-face.d.ts +8 -0
  1127. package/dist/types/lib/i18n/areas/chat-chart.d.ts +202 -0
  1128. package/dist/types/lib/i18n/areas/code-editor.d.ts +40 -0
  1129. package/dist/types/lib/i18n/areas/date-timeline.d.ts +36 -0
  1130. package/dist/types/lib/i18n/areas/dates.d.ts +103 -0
  1131. package/dist/types/lib/i18n/areas/docs-views.d.ts +297 -0
  1132. package/dist/types/lib/i18n/areas/feedback.d.ts +132 -0
  1133. package/dist/types/lib/i18n/areas/formats.d.ts +30 -0
  1134. package/dist/types/lib/i18n/areas/forms.d.ts +182 -0
  1135. package/dist/types/lib/i18n/areas/keys.d.ts +15 -0
  1136. package/dist/types/lib/i18n/areas/markdown.d.ts +150 -0
  1137. package/dist/types/lib/i18n/areas/move-rejected.d.ts +16 -0
  1138. package/dist/types/lib/i18n/areas/navigation.d.ts +185 -0
  1139. package/dist/types/lib/i18n/areas/rbac.d.ts +635 -0
  1140. package/dist/types/lib/i18n/emphasis.d.ts +3 -0
  1141. package/dist/types/lib/i18n/index.d.ts +10 -0
  1142. package/dist/types/lib/i18n/number-format.d.ts +5 -0
  1143. package/dist/types/lib/i18n/plural.d.ts +7 -0
  1144. package/dist/types/lib/i18n/provider.d.ts +16 -0
  1145. package/dist/types/lib/i18n/strings.d.ts +18 -0
  1146. package/dist/types/lib/icons.d.ts +22 -0
  1147. package/dist/types/lib/interactive-target.d.ts +3 -0
  1148. package/dist/types/lib/intl-cache.d.ts +31 -0
  1149. package/dist/types/lib/legal-document.d.ts +82 -0
  1150. package/dist/types/lib/line-diff-model.d.ts +39 -0
  1151. package/dist/types/lib/markdown/attachments.d.ts +50 -0
  1152. package/dist/types/lib/markdown/caret-map.d.ts +69 -0
  1153. package/dist/types/lib/markdown/caret.d.ts +6 -0
  1154. package/dist/types/lib/markdown/commands.d.ts +186 -0
  1155. package/dist/types/lib/markdown/convert.d.ts +99 -0
  1156. package/dist/types/lib/markdown/dom.d.ts +30 -0
  1157. package/dist/types/lib/markdown/edit.d.ts +16 -0
  1158. package/dist/types/lib/markdown/history.d.ts +59 -0
  1159. package/dist/types/lib/markdown/hotkeys.d.ts +63 -0
  1160. package/dist/types/lib/markdown/image-pipeline.d.ts +173 -0
  1161. package/dist/types/lib/markdown/images.d.ts +138 -0
  1162. package/dist/types/lib/markdown/input.d.ts +38 -0
  1163. package/dist/types/lib/markdown/keys.d.ts +34 -0
  1164. package/dist/types/lib/markdown/paste.d.ts +9 -0
  1165. package/dist/types/lib/markdown/position.d.ts +43 -0
  1166. package/dist/types/lib/markdown/project.d.ts +88 -0
  1167. package/dist/types/lib/markdown/reconcile.d.ts +63 -0
  1168. package/dist/types/lib/markdown/surface.d.ts +236 -0
  1169. package/dist/types/lib/motion.d.ts +30 -0
  1170. package/dist/types/lib/pad.d.ts +6 -0
  1171. package/dist/types/lib/paged-window/index.d.ts +2 -0
  1172. package/dist/types/lib/paged-window/layout.d.ts +21 -0
  1173. package/dist/types/lib/paged-window/list-owner.d.ts +12 -0
  1174. package/dist/types/lib/paged-window/records-binding.d.ts +102 -0
  1175. package/dist/types/lib/paged-window/store.d.ts +307 -0
  1176. package/dist/types/lib/paged-window/use-measured-pitch.d.ts +34 -0
  1177. package/dist/types/lib/paged-window/use-page-visibility.d.ts +20 -0
  1178. package/dist/types/lib/paged-window/use-paged-window.d.ts +61 -0
  1179. package/dist/types/lib/paged-window/use-scroll-root.d.ts +18 -0
  1180. package/dist/types/lib/persist.d.ts +57 -0
  1181. package/dist/types/lib/preference-values.d.ts +72 -0
  1182. package/dist/types/lib/preferences.d.ts +26 -0
  1183. package/dist/types/lib/reads/hooks.d.ts +49 -0
  1184. package/dist/types/lib/reads/index.d.ts +5 -0
  1185. package/dist/types/lib/reads/optimistic.d.ts +119 -0
  1186. package/dist/types/lib/reads/refetch.d.ts +83 -0
  1187. package/dist/types/lib/reads/slots.d.ts +137 -0
  1188. package/dist/types/lib/reads/types.d.ts +155 -0
  1189. package/dist/types/lib/realtime/hooks.d.ts +38 -0
  1190. package/dist/types/lib/realtime/index.d.ts +4 -0
  1191. package/dist/types/lib/realtime/provider.d.ts +38 -0
  1192. package/dist/types/lib/realtime/registry.d.ts +225 -0
  1193. package/dist/types/lib/realtime/types.d.ts +242 -0
  1194. package/dist/types/lib/records/define-record-type.d.ts +29 -0
  1195. package/dist/types/lib/records/hooks.d.ts +46 -0
  1196. package/dist/types/lib/records/index.d.ts +5 -0
  1197. package/dist/types/lib/records/store.d.ts +289 -0
  1198. package/dist/types/lib/records/types.d.ts +195 -0
  1199. package/dist/types/lib/records/wire.d.ts +96 -0
  1200. package/dist/types/lib/reduced-motion-help.d.ts +23 -0
  1201. package/dist/types/lib/scroll-caret.d.ts +6 -0
  1202. package/dist/types/lib/sim/createSimStore.d.ts +18 -0
  1203. package/dist/types/lib/sim/index.d.ts +5 -0
  1204. package/dist/types/lib/sim/latency.d.ts +10 -0
  1205. package/dist/types/lib/sim/registry.d.ts +14 -0
  1206. package/dist/types/lib/sim/settings.d.ts +11 -0
  1207. package/dist/types/lib/sim/types.d.ts +3 -0
  1208. package/dist/types/lib/submit-shortcut.d.ts +24 -0
  1209. package/dist/types/lib/syntax/index.d.ts +16 -0
  1210. package/dist/types/lib/syntax/languages/bash.d.ts +1 -0
  1211. package/dist/types/lib/syntax/languages/css.d.ts +1 -0
  1212. package/dist/types/lib/syntax/languages/html.d.ts +17 -0
  1213. package/dist/types/lib/syntax/languages/index.d.ts +33 -0
  1214. package/dist/types/lib/syntax/languages/javascript.d.ts +22 -0
  1215. package/dist/types/lib/syntax/languages/json.d.ts +1 -0
  1216. package/dist/types/lib/syntax/languages/mongodb.d.ts +1 -0
  1217. package/dist/types/lib/syntax/languages/plain.d.ts +9 -0
  1218. package/dist/types/lib/syntax/languages/sql.d.ts +4 -0
  1219. package/dist/types/lib/syntax/languages/vue.d.ts +1 -0
  1220. package/dist/types/lib/syntax/languages/yaml.d.ts +1 -0
  1221. package/dist/types/lib/syntax/markdown/frames.d.ts +145 -0
  1222. package/dist/types/lib/syntax/markdown/grammar.d.ts +1 -0
  1223. package/dist/types/lib/syntax/markdown/index.d.ts +5 -0
  1224. package/dist/types/lib/syntax/markdown/inline.d.ts +21 -0
  1225. package/dist/types/lib/syntax/markdown/parse.d.ts +15 -0
  1226. package/dist/types/lib/syntax/markdown/refs.d.ts +47 -0
  1227. package/dist/types/lib/syntax/markdown/render.d.ts +25 -0
  1228. package/dist/types/lib/syntax/markdown/spans.d.ts +84 -0
  1229. package/dist/types/lib/syntax/markdown/types.d.ts +108 -0
  1230. package/dist/types/lib/syntax/registry.d.ts +37 -0
  1231. package/dist/types/lib/syntax/tokenize.d.ts +17 -0
  1232. package/dist/types/lib/syntax/types.d.ts +119 -0
  1233. package/dist/types/lib/time/index.d.ts +4 -0
  1234. package/dist/types/lib/time/instant.d.ts +2 -0
  1235. package/dist/types/lib/time/plain.d.ts +61 -0
  1236. package/dist/types/lib/time/relativeAge.d.ts +18 -0
  1237. package/dist/types/lib/time/relativeClock.d.ts +8 -0
  1238. package/dist/types/lib/time/types.d.ts +87 -0
  1239. package/dist/types/lib/time/zone.d.ts +106 -0
  1240. package/dist/types/lib/use-controllable.d.ts +14 -0
  1241. package/dist/types/lib/use-fill-height.d.ts +26 -0
  1242. package/dist/types/lib/use-hydrated.d.ts +8 -0
  1243. package/dist/types/lib/use-media-query.d.ts +29 -0
  1244. package/dist/types/lib/use-relabel-base-ui-dismiss.d.ts +6 -0
  1245. package/dist/types/lib/use-release-snap-drag.d.ts +25 -0
  1246. package/dist/types/lib/use-roving-options.d.ts +10 -0
  1247. package/dist/types/lib/values/absent.d.ts +7 -0
  1248. package/dist/types/lib/values/boolean.d.ts +29 -0
  1249. package/dist/types/lib/values/currency.d.ts +22 -0
  1250. package/dist/types/lib/values/date.d.ts +30 -0
  1251. package/dist/types/lib/values/datetime.d.ts +48 -0
  1252. package/dist/types/lib/values/index.d.ts +5 -0
  1253. package/dist/types/lib/values/locale-date.d.ts +34 -0
  1254. package/dist/types/lib/values/number.d.ts +27 -0
  1255. package/dist/types/pure.d.ts +48 -0
  1256. package/package.json +136 -4
@@ -0,0 +1,157 @@
1
+ import { isLaneDrop as C } from "../../lib/dnd/cross-drop.js";
2
+ const k = { x: "left", y: "top" }, E = { x: "right", y: "bottom" }, M = { x: "width", y: "height" };
3
+ function O(e, n, i) {
4
+ const r = $(e, n, i);
5
+ if (r !== null) return r;
6
+ for (const o of e.containers) {
7
+ if (o.id === n) continue;
8
+ const t = $(e, o.id, o.axis);
9
+ if (t !== null) return t;
10
+ }
11
+ return 0;
12
+ }
13
+ function $(e, n, i) {
14
+ const r = e.items.filter((t) => t.container === n);
15
+ for (let t = 1; t < r.length; t++) {
16
+ if (r[t].group !== r[t - 1].group) continue;
17
+ const p = r[t].rect[k[i]] - r[t - 1].rect[E[i]];
18
+ if (p >= 0) return p;
19
+ }
20
+ return r.find((t) => (t.marginEnd ?? 0) > 0)?.marginEnd ?? null;
21
+ }
22
+ function P(e) {
23
+ return e.phase !== "dragging" || !e.id || !e.point || !e.grab ? null : { x: e.point.x - e.grab.x, y: e.point.y - e.grab.y };
24
+ }
25
+ function D(e, n, i) {
26
+ if (n.phase !== "dragging" || !n.id || !n.from || !n.over || !e) return null;
27
+ const r = e.containers.find((u) => u.id === i), o = e.items.find((u) => u.id === n.id);
28
+ if (!r || !o) return null;
29
+ const t = r.axis, p = o.rect[M[t]], h = O(e, i, t), m = p + h, g = n.from.container === i ? n.from.index : null, s = n.over.container === i && !C(r.crossDrop, n.from.container, i) ? n.over.index : null, d = e.items.filter((u) => u.container === i && u.id !== n.id), c = y(d, (u) => u.group, o.group, g), l = y(d, (u) => u.piece, o.piece, g), f = c.emptyId !== null ? p : m, a = (u) => g !== null && u >= g ? -f : 0, w = s === null ? null : F(d, c.spans, o, s), x = s === null ? null : L(d, w, s), b = x?.kind === "group-empty" ? p : m, v = (u) => s !== null && u >= s ? b : 0, I = H(l.spans, {
30
+ carried: o,
31
+ holder: w,
32
+ closesAt: g,
33
+ opensAt: s,
34
+ openAmount: b,
35
+ closeAmount: f,
36
+ gapSize: p,
37
+ step: m,
38
+ groupEmptied: c.emptyId !== null
39
+ }), S = x && R(x, I.headClosed, d, a, s, h);
40
+ return {
41
+ axis: t,
42
+ restCount: d.length,
43
+ gapSize: p,
44
+ step: m,
45
+ spacing: h,
46
+ markerAt: s,
47
+ marker: S,
48
+ itemShift: (u) => a(u) + v(u),
49
+ pieces: I.shifts
50
+ };
51
+ }
52
+ function H(e, { carried: n, holder: i, closesAt: r, opensAt: o, openAmount: t, closeAmount: p, gapSize: h, step: m, groupEmptied: g }) {
53
+ const s = /* @__PURE__ */ new Map(), d = /* @__PURE__ */ new Map();
54
+ for (const [c, l] of e) {
55
+ const f = r !== null && n.piece === c, a = i?.piece === c, w = l.first === l.end, x = i === null ? void 0 : e.get(i.piece)?.first, b = !a && (!w || x === void 0 || x < l.first), v = r !== null && (l.first > r || l.first === r && !f) ? -p : 0, I = o !== null && (o < l.first || o === l.first && b) ? t : 0, S = f && !a ? g ? h : m : 0, u = a && !f ? t : 0;
56
+ d.set(c, v), s.set(c, { headShift: v + I, frameDelta: u - S });
57
+ }
58
+ return { shifts: s, headClosed: d };
59
+ }
60
+ function R(e, n, i, r, o, t) {
61
+ switch (e.kind) {
62
+ case "item-before":
63
+ return { placement: e, shift: r(e.restIndex) };
64
+ case "item-after":
65
+ return { placement: e, shift: r(e.restIndex) + t - (i[e.restIndex].marginEnd ?? t) };
66
+ case "group-before":
67
+ return { placement: e, shift: n.get(e.piece) };
68
+ case "group-after":
69
+ return { placement: e, shift: r(i.length - 1) };
70
+ case "group-empty":
71
+ return { placement: e, shift: r(o) };
72
+ case "container-empty":
73
+ return { placement: e, shift: r(0) };
74
+ }
75
+ }
76
+ function y(e, n, i, r) {
77
+ const o = /* @__PURE__ */ new Map();
78
+ return e.forEach((t, p) => {
79
+ const h = n(t);
80
+ if (h === void 0) return;
81
+ const m = o.get(h);
82
+ if (!m) o.set(h, { first: p, end: p + 1 });
83
+ else if (m.end === p) m.end = p + 1;
84
+ else throw new Error(`the cards of group box (or piece) "${h}" are not consecutive in their container: item ${t.id} follows a card outside it; draw one box's pieces next to each other`);
85
+ }), r !== null && i !== void 0 && !o.has(i) ? (o.set(i, { first: r, end: r }), { spans: o, emptyId: i }) : { spans: o, emptyId: null };
86
+ }
87
+ function T(e, n, i) {
88
+ return i > e.first && i < e.end ? !0 : n && (i === e.first || i === e.end);
89
+ }
90
+ function F(e, n, i, r) {
91
+ for (const [o, t] of n)
92
+ if (T(t, i.group === o, r))
93
+ return t.first === t.end ? { group: o, piece: z(i, o), empty: !0 } : { group: o, piece: z(e[Math.min(r, t.end - 1)], o), empty: !1 };
94
+ return null;
95
+ }
96
+ function z(e, n) {
97
+ if (e.group !== n || e.piece === void 0)
98
+ throw new Error(`item ${e.id} sits in group box "${n}" but is registered as group "${e.group}", piece "${e.piece}"`);
99
+ return e.piece;
100
+ }
101
+ function L(e, n, i) {
102
+ if (n !== null)
103
+ return n.empty ? { kind: "group-empty", piece: n.piece } : i < e.length && e[i].group === n.group ? { kind: "item-before", restIndex: i } : { kind: "item-after", restIndex: i - 1 };
104
+ if (e.length === 0) return { kind: "container-empty" };
105
+ if (i < e.length) {
106
+ const o = e[i];
107
+ return o.piece === void 0 ? { kind: "item-before", restIndex: i } : { kind: "group-before", piece: o.piece };
108
+ }
109
+ const r = e[e.length - 1];
110
+ return r.piece === void 0 ? { kind: "item-after", restIndex: e.length - 1 } : { kind: "group-after", piece: r.piece };
111
+ }
112
+ function Z(e, n) {
113
+ if (n.phase !== "dragging" || !n.id || !n.over || !e) return null;
114
+ const i = n.over.container, r = D(e, n, i), o = e.containers.find((f) => f.id === i);
115
+ if (!r || !o) return null;
116
+ const t = r.axis, p = e.items.filter(
117
+ (f) => f.container === i && f.id !== n.id
118
+ ), h = t === "x" ? "top" : "left", m = t === "x" ? "height" : "width";
119
+ let g, s = o.rect;
120
+ const { marker: d } = r, c = d?.placement;
121
+ if (c?.kind === "group-empty")
122
+ s = e.items.find((f) => f.id === n.id).rect, g = s[k[t]];
123
+ else if (!c || c.kind === "container-empty")
124
+ g = o.rect[k[t]];
125
+ else if (c.kind === "item-before")
126
+ s = p[c.restIndex].rect, g = s[k[t]] + d.shift;
127
+ else if (c.kind === "item-after") {
128
+ const f = p[c.restIndex];
129
+ s = f.rect, g = s[E[t]] + d.shift + (f.marginEnd ?? r.spacing);
130
+ } else {
131
+ const f = e.groups.find((a) => a.container === i && a.piece === c.piece);
132
+ if (!f) throw new Error(`group piece "${c.piece}" is drawn in container "${i}" but was not registered`);
133
+ s = f.rect, g = c.kind === "group-before" ? s[k[t]] + d.shift : s[E[t]] + d.shift + r.spacing;
134
+ }
135
+ const l = { start: g, size: r.gapSize };
136
+ return t === "x" ? {
137
+ left: l.start,
138
+ width: l.size,
139
+ top: s[h],
140
+ height: s[m]
141
+ } : {
142
+ top: l.start,
143
+ height: l.size,
144
+ left: s[h],
145
+ width: s[m]
146
+ };
147
+ }
148
+ function j(e, n) {
149
+ return { translate: e === "x" ? `${n}px 0` : `0 ${n}px` };
150
+ }
151
+ export {
152
+ P as carriedPoint,
153
+ D as containerShift,
154
+ Z as gapRect,
155
+ j as shiftStyle
156
+ };
157
+ //# sourceMappingURL=shift.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shift.js","sources":["../../../src/components/drag-drop/shift.ts"],"sourcesContent":["import { isLaneDrop } from \"../../lib/dnd\";\nimport type {\n ContainerId,\n DragAxis,\n DragState,\n GroupId,\n ItemRect,\n LayoutSnapshot,\n PieceId,\n Point,\n} from \"../../lib/dnd\";\n\n/* ----------------------------------------------------------------------------\n THE SIBLING SHIFT, as arithmetic.\n\n A reorder reads as objects moving out of each other's way, not as a list with\n a line drawn through it. Two displacements produce that, and they are\n independent:\n\n THE HOME SLOT CLOSES. Everything after the carried item's own position\n moves back by one step, so the space it occupied\n disappears.\n THE GAP OPENS. Everything at or after the insertion index moves\n forward by one step, so a space appears where the\n item would land.\n\n Both are stated against `rest` — the container's items with the carried one\n removed — which is the same list `DropTarget.index` is counted against (see\n `lib/dnd/types.ts`). That is the whole reason same-container and\n cross-container moves need no special cases here: for a same-container move\n the two displacements cancel outside the range between the two positions,\n and inside it exactly one applies.\n\n IT IS `translate`, NEVER LAYOUT, AND NEVER ON THE MEASURED ELEMENT. The\n engine hit-tests a snapshot of every box taken at pickup and re-taken on\n scroll, resize and every auto-scroll frame (`geometry.ts#measure`, which\n calls `getBoundingClientRect`) — and `getBoundingClientRect` reports the\n TRANSFORMED box. So a shift applied to the registered element would feed the\n opened gap back into the midpoint rule that decided to open it: the insertion\n point moves, which moves the boxes, which moves the insertion point. The\n shift therefore lives on a child of the registered element, one level in.\n A transformed descendant does not change its ancestor's box, so the engine\n goes on measuring the layout the user's pointer is actually being compared\n against, and the collision stays stable while the picture moves.\n\n Everything here is pure and takes a snapshot rather than a DOM, so the\n arithmetic is checkable against hand-written rectangles — `drag-drop.test.tsx`\n does exactly that, including the cases a browser makes expensive to reach.\n -------------------------------------------------------------------------- */\n\n/** Which edge of a rect starts, ends and sizes a container's reorder axis. */\nconst START = { x: \"left\", y: \"top\" } as const;\nconst END = { x: \"right\", y: \"bottom\" } as const;\nconst SIZE = { x: \"width\", y: \"height\" } as const;\n\n/**\n * DX-5522: where the insertion marker is drawn, which is the part of the picture a group box makes ambiguous. A boundary\n * between two items at the edge of a group box is the trailing edge of one entry and the leading edge of the next, and a\n * marker drawn at the DOM position of either would sit inside a box the card does not belong to. So the kind says which\n * element draws it, and every kind sits where the gap is, never straddling a box edge:\n *\n * item-before / item-after an item draws it directly before / after itself (inside its group box when it has one);\n * group-before / group-after the group box draws it outside its own frame, between two entries of the container: the\n * box's first piece before it, its last piece after it (DX-5521, see `PieceId`);\n * group-empty the carried card is the only card of its group box: the piece it was in draws it there;\n * container-empty the container holds nothing else, so it draws the marker itself.\n */\nexport type MarkerPlacement =\n | { kind: \"item-before\"; restIndex: number }\n | { kind: \"item-after\"; restIndex: number }\n | { kind: \"group-before\"; piece: PieceId }\n | { kind: \"group-after\"; piece: PieceId }\n | { kind: \"group-empty\"; piece: PieceId }\n | { kind: \"container-empty\" };\n\n/** A marker's placement and the displacement it takes (the home slot's closing only: it IS the gap). */\nexport interface MarkerSlot {\n placement: MarkerPlacement;\n shift: number;\n}\n\n/**\n * DX-5522: what a group box does while a card is carried. Its cards move by `itemShift` like any others; the box around\n * them is the consumer's, and it has to follow them or the cards that slide out of it draw over whatever lies outside.\n * DX-5521: stated per PIECE of the box (see `PieceId`): a box drawn in one piece is the case it always was.\n */\nexport interface GroupShift {\n /** How far the piece's near edge and header (everything above its first card) move: the net displacement at its top edge. */\n headShift: number;\n /**\n * How much the piece's far edge moves relative to its near edge: negative when the carried card leaves the piece (it\n * shrinks by the card's slot), positive when the marker opens a gap inside it (it grows by the gap), zero otherwise.\n */\n frameDelta: number;\n}\n\nexport interface ContainerShift {\n axis: DragAxis;\n /** Items in this container with the carried one removed. */\n restCount: number;\n /**\n * The carried item's extent along the axis — the size of the hole that opens.\n * The step neighbours move by is this PLUS the spacing between two items,\n * because the arriving item brings its own gap with it.\n */\n gapSize: number;\n /** `gapSize` plus the measured spacing: how far one neighbour moves. */\n step: number;\n /** Measured spacing between two adjacent items of this container. */\n spacing: number;\n /** Insertion index in this container, or null when it is not the target. */\n markerAt: number | null;\n /** The marker's placement and displacement, or null when this container draws none. */\n marker: MarkerSlot | null;\n /** Displacement along the axis, in px, for the rest item at `restIndex`. */\n itemShift: (restIndex: number) => number;\n /** DX-5522 / DX-5521: what each piece of a group box in this container does, by piece id. */\n pieces: ReadonlyMap<PieceId, GroupShift>;\n}\n\n/**\n * Spacing between two adjacent items of one container, measured rather than\n * assumed.\n *\n * Measured because the consumer sets it: `<DragDropItem>` ships an 8px bottom\n * margin and `className` overrides it, so any constant here would be a second\n * copy of a number the markup already owns — right until someone changes one of\n * them, at which point the gap opens the wrong size and nothing reports it.\n *\n * A container that holds fewer than two items has no spacing to measure, so the\n * first container that does answers for it. They share a stylesheet; the\n * alternative is a lone card in an empty column opening a gap with no gap in it.\n */\nfunction spacingOf(\n layout: LayoutSnapshot,\n container: ContainerId,\n axis: DragAxis,\n): number {\n const here = measureSpacing(layout, container, axis);\n if (here !== null) return here;\n for (const c of layout.containers) {\n if (c.id === container) continue;\n const other = measureSpacing(layout, c.id, c.axis);\n if (other !== null) return other;\n }\n return 0;\n}\n\nfunction measureSpacing(\n layout: LayoutSnapshot,\n container: ContainerId,\n axis: DragAxis,\n): number | null {\n /* `measure()` emits items in container-then-index order, so consecutive\n entries of one container are consecutive on screen. */\n const items = layout.items.filter((i) => i.container === container);\n for (let i = 1; i < items.length; i++) {\n /* DX-5522: two cards in different group boxes are a whole box edge apart (padding, border, the box's own margin), which\n is not the spacing between two cards; only a pair inside one box, or a pair of loose cards, measures it. */\n if (items[i].group !== items[i - 1].group) continue;\n const distance = items[i].rect[START[axis]] - items[i - 1].rect[END[axis]];\n /* Negative means the two overlap — a wrapped row, or a box measured\n mid-animation. It is not a spacing, so keep looking. */\n if (distance >= 0) return distance;\n }\n /* A container whose every neighbouring pair straddles a box edge still says its spacing in the margin it leaves after a card. */\n const margin = items.find((i) => (i.marginEnd ?? 0) > 0);\n return margin?.marginEnd ?? null;\n}\n\n/**\n * Where a pointer-carried card sits on screen, in VIEWPORT coordinates — what\n * makes the thing under the cursor BE the thing you picked up.\n *\n * A VIEWPORT POINT, NOT A DISPLACEMENT, AND THAT IS THE WHOLE FIX. This was an\n * offset from the card's resting box for exactly as long as the ROW did the\n * carrying, under an in-flow `translate` on a child of the measured element.\n * Two things are wrong with carrying a card in flow and neither can be tuned\n * away:\n *\n * IT CANNOT LEAVE. A descendant of a scroll container is clipped by it. A\n * card carried past the edge of its own list is cut off at\n * that edge, and the container cannot stop clipping — it is\n * the scroller, and a scrolling axis forces its cross axis\n * to a non-`visible` value (see `recipe.ts`).\n * IT INFLATES. A transformed in-flow element contributes to its\n * ancestor's SCROLLABLE OVERFLOW REGION, so the held row\n * grew the extent of the very container it was inside —\n * measured 512 -> 607px on a straight 90px sideways drag,\n * which is auto-scroll theft and then a runaway.\n *\n * Neither is about SIZE, so neither is fixed by shrinking the card: the growth\n * is the card following the hand, and a held object has to follow the hand on\n * BOTH axes or it slides out from under the cursor the moment the hand moves\n * the other way. Measured: dropping the 2% lift scale took a 95.12px overhang\n * to 90.00px, and 90px was the pointer's own sideways travel. So the card is\n * carried by a `fixed` clone portalled to the body (`DragDrop.tsx#CarriedCard`)\n * — out of the flow entirely, where there is no ancestor to clip it and no\n * extent to inflate.\n *\n * `grab` is where inside the box the press landed, so the card tracks the point\n * that was actually pressed rather than snapping a corner to the cursor.\n *\n * Null in keyboard mode: there is no pointer to follow, and a keyboard drag\n * moves slot to slot with the marker saying where. That is not a fallback — it\n * is a different question with a different honest answer, and `gapRect` is it.\n */\nexport function carriedPoint(state: DragState): Point | null {\n if (state.phase !== \"dragging\" || !state.id) return null;\n if (!state.point || !state.grab) return null;\n return { x: state.point.x - state.grab.x, y: state.point.y - state.grab.y };\n}\n\n/**\n * Everything one container needs to render the shift, or null when no drag is\n * in flight and nothing should move.\n *\n * THE HOME SLOT CLOSES WHENEVER A DRAG IS LIVE, with no condition on it, and\n * that is a consequence of there being ONE carry mechanism rather than a\n * simplification of two. There used to be a `lifted` argument here, because a\n * portalled clone and an in-flow `translate` were different answers to \"is the\n * card still in its slot\" and a keyboard drag with no clone was a third. Every\n * drag now lifts the card out into a portalled clone — pointer and keyboard\n * alike — so the slot is empty every time, and a caller cannot get this wrong\n * by forgetting to say so.\n */\nexport function containerShift(\n layout: LayoutSnapshot | null,\n state: DragState,\n container: ContainerId,\n): ContainerShift | null {\n if (state.phase !== \"dragging\" || !state.id || !state.from || !state.over) return null;\n if (!layout) return null;\n\n const registered = layout.containers.find((c) => c.id === container);\n const carried = layout.items.find((i) => i.id === state.id);\n if (!registered || !carried) return null;\n\n const axis = registered.axis;\n const gapSize = carried.rect[SIZE[axis]];\n const spacing = spacingOf(layout, container, axis);\n const step = gapSize + spacing;\n\n /* `from.index` counts the list WITH the carried item present, so an item is\n after it exactly when its rest-index is at or beyond that number. That\n coincidence is the `DropTarget.index` contract doing its job — see\n `isNoOp` in `lib/dnd/geometry.ts` for the same identity from the other\n side. */\n const closesAt = state.from.container === container ? state.from.index : null;\n /* DX-4583: a card carried in from elsewhere to a lane that takes it as a whole\n opens no gap and shows no marker — there is no position to show. Read from\n the layout the shift is computed from, so it cannot disagree with `gapRect`. */\n const opensAt =\n state.over.container === container && !isLaneDrop(registered.crossDrop, state.from.container, container)\n ? state.over.index\n : null;\n\n const rest = layout.items.filter((i) => i.container === container && i.id !== state.id);\n const groups = spansOf(rest, (item) => item.group, carried.group, closesAt);\n const pieces = spansOf(rest, (item) => item.piece, carried.piece, closesAt);\n\n /* DX-5522: a card that is the ONLY card of its group box leaves no sibling behind to have been spaced from it, so the slot\n it closes (and the gap it reopens in its own box) is its own size, not a size plus a spacing. */\n const closeAmount = groups.emptyId !== null ? gapSize : step;\n const closed = (restIndex: number) =>\n closesAt !== null && restIndex >= closesAt ? -closeAmount : 0;\n\n const holder = opensAt === null ? null : gapHolder(rest, groups.spans, carried, opensAt);\n const placement = opensAt === null ? null : placeMarker(rest, holder, opensAt);\n const openAmount = placement?.kind === \"group-empty\" ? gapSize : step;\n const opened = (restIndex: number) => (opensAt !== null && restIndex >= opensAt ? openAmount : 0);\n\n const shifts = pieceShiftsOf(pieces.spans, {\n carried,\n holder,\n closesAt,\n opensAt,\n openAmount,\n closeAmount,\n gapSize,\n step,\n groupEmptied: groups.emptyId !== null,\n });\n const marker = placement && markerSlot(placement, shifts.headClosed, rest, closed, opensAt, spacing);\n\n return {\n axis,\n restCount: rest.length,\n gapSize,\n step,\n spacing,\n markerAt: opensAt,\n marker,\n itemShift: (restIndex) => closed(restIndex) + opened(restIndex),\n pieces: shifts.shifts,\n };\n}\n\n/** What `pieceShiftsOf` reads of the carry: the carried card, where the gap is held, and the slot sizes `containerShift` worked out. */\ninterface PieceShiftInput {\n carried: ItemRect;\n /** The box and piece the opened gap is inside (`gapHolder`), or null when the gap is between entries. */\n holder: GapHolder | null;\n /** The rest-index the carried card's home slot closes at, or null when it was carried in from another container. */\n closesAt: number | null;\n /** The rest-index the gap opens at, or null when no gap opens in this container. */\n opensAt: number | null;\n openAmount: number;\n closeAmount: number;\n gapSize: number;\n step: number;\n /** The carried card was the only card of its box: the box it leaves shrinks by the card alone, with no spacing. */\n groupEmptied: boolean;\n}\n\n/**\n * DX-5522: what each group box does while the card is carried: its header's net displacement and how far its frame changes.\n * DX-5521: worked out per piece of a box (see `PieceId`), from the cards that piece holds. A piece is home to the carried\n * card when the card was drawn in it, and the opened gap is inside it when it is inside the box and drawn by one of this\n * piece's cards (`gapHolder`), so where two pieces of one box meet, the gap belongs to exactly one of them.\n */\nfunction pieceShiftsOf(\n spans: ReadonlyMap<PieceId, Span>,\n { carried, holder, closesAt, opensAt, openAmount, closeAmount, gapSize, step, groupEmptied }: PieceShiftInput,\n): { shifts: Map<PieceId, GroupShift>; headClosed: Map<PieceId, number> } {\n const shifts = new Map<PieceId, GroupShift>();\n const headClosedOf = new Map<PieceId, number>();\n for (const [piece, span] of spans) {\n const homeHere = closesAt !== null && carried.piece === piece;\n const inside = holder?.piece === piece;\n /* The header sits above the piece's first card. It is behind the home slot (closed) unless the carried card was this\n piece's first, and ahead of the gap (opened) unless the gap is inside this piece. A piece the carried card emptied\n (DX-5521, its box goes on in another piece) stands where the card was, at the same boundary as the piece after it: the\n gap opened there is ahead of it only when it is drawn in an earlier piece. */\n const emptied = span.first === span.end;\n const holderFirst = holder === null ? undefined : spans.get(holder.piece)?.first;\n const gapAhead = !inside && (!emptied || holderFirst === undefined || holderFirst < span.first);\n const headClosed = closesAt !== null && (span.first > closesAt || (span.first === closesAt && !homeHere)) ? -closeAmount : 0;\n const headOpened = opensAt !== null && (opensAt < span.first || (opensAt === span.first && gapAhead)) ? openAmount : 0;\n const leaves = homeHere && !inside ? (groupEmptied ? gapSize : step) : 0;\n const enters = inside && !homeHere ? openAmount : 0;\n headClosedOf.set(piece, headClosed);\n shifts.set(piece, { headShift: headClosed + headOpened, frameDelta: enters - leaves });\n }\n return { shifts, headClosed: headClosedOf };\n}\n\n/** DX-5522: the marker's displacement for its placement: the home slot's closing, which IS the gap. */\nfunction markerSlot(\n placement: MarkerPlacement,\n headClosed: ReadonlyMap<PieceId, number>,\n rest: readonly ItemRect[],\n closed: (restIndex: number) => number,\n opensAt: number | null,\n spacing: number,\n): MarkerSlot {\n switch (placement.kind) {\n case \"item-before\":\n return { placement, shift: closed(placement.restIndex) };\n case \"item-after\":\n /* The marker is zero-sized and sits where the item's trailing margin ends; the gap starts a spacing after the\n item. The last card of a group box has no trailing margin, so the marker makes the difference up. */\n return { placement, shift: closed(placement.restIndex) + spacing - (rest[placement.restIndex].marginEnd ?? spacing) };\n case \"group-before\":\n /* The piece is the one the next rest card is drawn in (`placeMarker`), so `pieceShiftsOf` has an entry for it. */\n return { placement, shift: headClosed.get(placement.piece)! };\n case \"group-after\":\n return { placement, shift: closed(rest.length - 1) };\n case \"group-empty\":\n return { placement, shift: closed(opensAt!) };\n case \"container-empty\":\n return { placement, shift: closed(0) };\n }\n}\n\n/** A run of cards in a container's rest list: the boundary before its first card and the boundary after its last. */\ninterface Span {\n first: number;\n end: number;\n}\n\n/**\n * DX-5522: the span of every group box in a container (the carried card taken out), keyed by what `keyOf` reads off a card:\n * its group (a whole box) or, DX-5521, its piece. The carried card's own key is kept even when no other card is left under\n * it: its box (or piece) is still drawn, around the hole, and `emptyId` names it.\n *\n * DX-5521: a box's cards, and a piece's, are consecutive in their container (`DragDropGroup`'s contract). A box whose\n * pieces are drawn apart (another card or box between them) would let a card be carried \"inside\" it across whatever lies\n * between, so a key whose cards are not consecutive throws instead of being framed as one span.\n */\nfunction spansOf<K extends string>(\n rest: readonly ItemRect[],\n keyOf: (item: ItemRect) => K | undefined,\n carriedKey: K | undefined,\n closesAt: number | null,\n): { spans: Map<K, Span>; emptyId: K | null } {\n const spans = new Map<K, Span>();\n rest.forEach((item, at) => {\n const key = keyOf(item);\n if (key === undefined) return;\n const span = spans.get(key);\n if (!span) spans.set(key, { first: at, end: at + 1 });\n else if (span.end === at) span.end = at + 1;\n else throw new Error(`the cards of group box (or piece) \"${key}\" are not consecutive in their container: item ${item.id} follows a card outside it; draw one box's pieces next to each other`);\n });\n if (closesAt !== null && carriedKey !== undefined && !spans.has(carriedKey)) {\n spans.set(carriedKey, { first: closesAt, end: closesAt });\n return { spans, emptyId: carriedKey };\n }\n return { spans, emptyId: null };\n}\n\n/**\n * DX-5522: is the insertion boundary `at` inside this group box? Strictly between two of its cards, always. At the box's\n * leading or trailing edge it is the boundary between two entries of the container, and it belongs to the box only when the\n * carried card is one of the box's own (a card dropped there is drawn in it): any other card is placed between entries,\n * outside every frame.\n */\nfunction insideSpan(span: Span, carriedIsMember: boolean, at: number): boolean {\n if (at > span.first && at < span.end) return true;\n return carriedIsMember && (at === span.first || at === span.end);\n}\n\n/** The box the opened gap is inside, and the piece of it that draws the gap. */\ninterface GapHolder {\n group: GroupId;\n piece: PieceId;\n /** The box has no card left but the carried one: the gap is the hole it left. */\n empty: boolean;\n}\n\n/**\n * The box (by `insideSpan`) the insertion boundary `at` is inside, or null when it is between entries. DX-5521: and the\n * piece that holds it, which is the piece of the card the marker is drawn beside: the card after the boundary, or the box's\n * last card at its trailing edge. Where two pieces of the box meet, that is the later piece's first card.\n */\nfunction gapHolder(rest: readonly ItemRect[], spans: ReadonlyMap<GroupId, Span>, carried: ItemRect, at: number): GapHolder | null {\n for (const [group, span] of spans) {\n if (!insideSpan(span, carried.group === group, at)) continue;\n /* An emptied box is the carried card's own (`spansOf` keeps only that one empty), so its piece is the carried card's. */\n if (span.first === span.end) return { group, piece: pieceIn(carried, group), empty: true };\n return { group, piece: pieceIn(rest[Math.min(at, span.end - 1)], group), empty: false };\n }\n return null;\n}\n\n/**\n * DX-5521: the piece `item` is drawn in, as a card of `group`. Every grouped card names its piece (`useDraggable` throws on\n * a group without one), and a card inside a box's span is that box's own because `spansOf` refused a box whose cards are\n * not consecutive. Either failing means the layout does not describe what is drawn: throw rather than frame a wrong piece.\n */\nfunction pieceIn(item: ItemRect, group: GroupId): PieceId {\n if (item.group !== group || item.piece === undefined) {\n throw new Error(`item ${item.id} sits in group box \"${group}\" but is registered as group \"${item.group}\", piece \"${item.piece}\"`);\n }\n return item.piece;\n}\n\n/** DX-5522: which element draws the marker for the insertion boundary `at`. See `MarkerPlacement`. */\nfunction placeMarker(rest: readonly ItemRect[], holder: GapHolder | null, at: number): MarkerPlacement {\n if (holder !== null) {\n if (holder.empty) return { kind: \"group-empty\", piece: holder.piece };\n return at < rest.length && rest[at].group === holder.group ? { kind: \"item-before\", restIndex: at } : { kind: \"item-after\", restIndex: at - 1 };\n }\n if (rest.length === 0) return { kind: \"container-empty\" };\n if (at < rest.length) {\n const next = rest[at];\n return next.piece === undefined ? { kind: \"item-before\", restIndex: at } : { kind: \"group-before\", piece: next.piece };\n }\n const last = rest[rest.length - 1];\n return last.piece === undefined ? { kind: \"item-after\", restIndex: rest.length - 1 } : { kind: \"group-after\", piece: last.piece };\n}\n\n/** A rect in viewport coordinates. */\nexport interface GapRect {\n top: number;\n left: number;\n width: number;\n height: number;\n}\n\n/**\n * Where the opened gap sits on screen, for a carried card that has no pointer\n * to follow.\n *\n * Viewport coordinates, taken from the same snapshot the shift is computed\n * from, so the two cannot disagree about where the hole is. The snapshot is\n * re-taken whenever the keyboard insertion point moves out of view\n * (`autoscroll.ts#keepKeyboardTargetVisible`), which is the only thing that\n * moves these boxes during a keyboard drag.\n */\nexport function gapRect(layout: LayoutSnapshot | null, state: DragState): GapRect | null {\n if (state.phase !== \"dragging\" || !state.id || !state.over) return null;\n if (!layout) return null;\n\n const container = state.over.container;\n const shift = containerShift(layout, state, container);\n const registered = layout.containers.find((c) => c.id === container);\n if (!shift || !registered) return null;\n\n const axis = shift.axis;\n const rest = layout.items.filter(\n (i) => i.container === container && i.id !== state.id,\n );\n // I18N-ALLOW: CSS property name chosen by the drag axis\n const cross = axis === \"x\" ? \"top\" : \"left\";\n const crossSize = axis === \"x\" ? \"height\" : \"width\";\n\n let start: number;\n let anchor = registered.rect;\n const { marker } = shift;\n const placement = marker?.placement;\n if (placement?.kind === \"group-empty\") {\n /* DX-5522: the carried card is the only card of its box, so the gap is the hole it left. */\n anchor = layout.items.find((i) => i.id === state.id)!.rect;\n start = anchor[START[axis]];\n } else if (!placement || placement.kind === \"container-empty\") {\n /* An empty column has nothing to sit beside, so the gap starts where its\n content does. The container's padding is not in the snapshot, so this is\n the box's own edge — a few pixels high. */\n /* DX-4583: a lane that takes the card as a whole has no position to sit at\n either, so the clone snaps to the same edge, over a lane that may hold\n cards. */\n start = registered.rect[START[axis]];\n } else if (placement.kind === \"item-before\") {\n /* The neighbour has already moved out of the way by a whole step — the\n card AND the spacing it brings with it — so the gap starts where the\n neighbour was, less the home slot if that closed. */\n anchor = rest[placement.restIndex].rect;\n start = anchor[START[axis]] + marker!.shift;\n } else if (placement.kind === \"item-after\") {\n const item = rest[placement.restIndex];\n anchor = item.rect;\n start = anchor[END[axis]] + marker!.shift + (item.marginEnd ?? shift.spacing);\n } else {\n /* DX-5522: between two entries of the container, outside every frame: the group box beside the gap is the anchor (DX-5521:\n its first piece before it, its last piece after it). */\n const box = layout.groups.find((g) => g.container === container && g.piece === placement.piece);\n if (!box) throw new Error(`group piece \"${placement.piece}\" is drawn in container \"${container}\" but was not registered`);\n anchor = box.rect;\n start =\n placement.kind === \"group-before\"\n ? anchor[START[axis]] + marker!.shift\n : anchor[END[axis]] + marker!.shift + shift.spacing;\n }\n\n const along = { start, size: shift.gapSize };\n return axis === \"x\"\n ? {\n left: along.start,\n width: along.size,\n top: anchor[cross],\n height: anchor[crossSize],\n }\n : {\n top: along.start,\n height: along.size,\n left: anchor[cross],\n width: anchor[crossSize],\n };\n}\n\n/**\n * The shift as an inline style.\n *\n * `translate` rather than `transform`, so a component can still rotate or scale\n * the same element without the two having to be composed into one string — the\n * floating clone does exactly that.\n */\nexport function shiftStyle(axis: DragAxis, distance: number): { translate: string } {\n // I18N-ALLOW: CSS translate value built from the drag distance\n return { translate: axis === \"x\" ? `${distance}px 0` : `0 ${distance}px` };\n}\n"],"names":["START","END","SIZE","spacingOf","layout","container","axis","here","measureSpacing","c","other","items","i","distance","carriedPoint","state","containerShift","registered","carried","gapSize","spacing","step","closesAt","opensAt","isLaneDrop","rest","groups","spansOf","item","pieces","closeAmount","closed","restIndex","holder","gapHolder","placement","placeMarker","openAmount","opened","shifts","pieceShiftsOf","marker","markerSlot","spans","groupEmptied","headClosedOf","piece","span","homeHere","inside","emptied","holderFirst","gapAhead","headClosed","headOpened","leaves","enters","keyOf","carriedKey","at","key","insideSpan","carriedIsMember","group","pieceIn","next","last","gapRect","shift","cross","crossSize","start","anchor","box","g","along","shiftStyle"],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ function n(t, i, e) {
2
+ if (!(i === void 0 || e !== void 0))
3
+ throw new Error(
4
+ `${t}: \`editing\` is controlled but \`onEditingChange\` is missing. The field hands the closed state back through it after every commit and Escape — without it the caller's \`editing\` stays true while the field is shut, and nothing is ever saved again. Pass both, or neither.`
5
+ );
6
+ }
7
+ export {
8
+ n as assertActivationPair
9
+ };
10
+ //# sourceMappingURL=activation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"activation.js","sources":["../../../src/components/edit/activation.ts"],"sourcesContent":["/**\n * The controlled activation pair every pencil-activated field takes, and the\n * pair `EditGutter` hands out — so wiring a pencil to a field is one spread.\n *\n * `editing` says whether the field is open. The field calls\n * `onEditingChange(false)` when it closes itself (a landed commit, Escape) and\n * when it declines to open (read-only); it never calls `onEditingChange(true)`\n * for an opening the caller made. The pair is all-or-nothing: a controlled\n * `editing` with no way to hand the closed state back would leave the field\n * shut after its first commit while the caller still believes it is open.\n */\nexport interface EditActivation {\n editing: boolean;\n onEditingChange: (editing: boolean) => void;\n}\n\n/**\n * Throws when a caller controls `editing` without `onEditingChange`. The\n * types already forbid it; this covers a caller that got past them (a cast,\n * a spread of `any`, plain JavaScript). DX-3372 review P0.\n */\nexport function assertActivationPair(\n component: string,\n editing: boolean | undefined,\n onEditingChange: ((editing: boolean) => void) | undefined,\n): void {\n if (editing === undefined || onEditingChange !== undefined) return;\n throw new Error(\n `${component}: \\`editing\\` is controlled but \\`onEditingChange\\` is missing. The field hands the ` +\n \"closed state back through it after every commit and Escape — without it the caller's `editing` \" +\n \"stays true while the field is shut, and nothing is ever saved again. Pass both, or neither.\",\n );\n}\n"],"names":["assertActivationPair","component","editing","onEditingChange"],"mappings":"AAqBO,SAASA,EACdC,GACAC,GACAC,GACM;AACN,MAAI,EAAAD,MAAY,UAAaC,MAAoB;AACjD,UAAM,IAAI;AAAA,MACR,GAAGF,CAAS;AAAA,IAAA;AAIhB;"}
@@ -0,0 +1,47 @@
1
+ import { jsxs as a, jsx as n } from "react/jsx-runtime";
2
+ import { Icon as o } from "../Icon.js";
3
+ import { cn as s } from "../../lib/cn.js";
4
+ function d(e) {
5
+ return typeof e == "object" && e !== null && "refusal" in e;
6
+ }
7
+ function f(e) {
8
+ return typeof e?.then == "function";
9
+ }
10
+ function m(e, r, t) {
11
+ if (r === "")
12
+ throw new Error(
13
+ `${e}: ${t} refused a value with an empty reason. A refusal nobody can read leaves the field open with nothing beside it — return ${t === "validate" ? "null" : "nothing"} to accept the value, or say why it cannot be used.`
14
+ );
15
+ }
16
+ function c({
17
+ id: e,
18
+ children: r,
19
+ className: t
20
+ }) {
21
+ return /* @__PURE__ */ a(
22
+ "p",
23
+ {
24
+ id: e,
25
+ role: "alert",
26
+ "data-slot": "edit-outcome",
27
+ className: s(
28
+ "absolute top-full right-0 left-0 z-10 mt-1",
29
+ "flex items-start gap-1.5 rounded-md px-2 py-1.5",
30
+ "border border-danger-border bg-surface shadow-md",
31
+ "text-2xs font-medium text-danger-text",
32
+ t
33
+ ),
34
+ children: [
35
+ /* @__PURE__ */ n(o, { name: "circle-alert", size: "xs", className: "mt-px shrink-0", "aria-hidden": !0 }),
36
+ /* @__PURE__ */ n("span", { children: r })
37
+ ]
38
+ }
39
+ );
40
+ }
41
+ export {
42
+ c as OutcomeMessage,
43
+ m as assertReadableRefusal,
44
+ f as isPromise,
45
+ d as isRefusal
46
+ };
47
+ //# sourceMappingURL=outcome.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"outcome.js","sources":["../../../src/components/edit/outcome.tsx"],"sourcesContent":["import { Icon } from \"../Icon\";\nimport { cn } from \"../../lib/cn\";\n\n/* ============================================================================\n THE COMMIT-OUTCOME CONTRACT shared by every in-place editor — `InlineEdit`\n (plain text) and `InlineMarkdownEdit` (markdown). DX-3372 extracted it from\n `InlineEdit.tsx` rather than letting the markdown field grow a second copy:\n one `{ refusal }` shape, one \"an empty reason is a bug\" rule, one message\n overlay, so a save conflict reads identically whichever kind of field it\n happened in.\n ========================================================================= */\n\n/* NEUTRAL NAMES (DX-3372 review, L2): these serve every in-place editor, so\n none of them is named after one. The `InlineEdit*` spellings were removed,\n not aliased. */\n\n/**\n * The caller's refusal of a value, with the reason that will be shown.\n */\nexport interface EditRefusal {\n refusal: string;\n}\n\n/** What `onCommit` may report. Returning nothing accepts the value. */\nexport type EditOutcome = void | EditRefusal;\n\n/** Every in-place editor's `onCommit`: the new value and the value editing began from. */\nexport type EditCommit = (value: string, base: string) => EditOutcome | Promise<EditOutcome>;\n\nexport function isRefusal(outcome: EditOutcome): outcome is EditRefusal {\n return typeof outcome === \"object\" && outcome !== null && \"refusal\" in outcome;\n}\n\nexport function isPromise(outcome: EditOutcome | Promise<EditOutcome>): outcome is Promise<EditOutcome> {\n return typeof (outcome as Promise<EditOutcome>)?.then === \"function\";\n}\n\n/**\n * A refusal nobody can read leaves the field open with nothing beside it — the\n * exact silent failure the outcome contract exists to rule out — so an empty\n * reason is a programming error, thrown rather than rendered.\n */\nexport function assertReadableRefusal(\n component: string,\n reason: string,\n source: \"validate\" | \"onCommit\",\n): void {\n if (reason !== \"\") return;\n throw new Error(\n `${component}: ${source} refused a value with an empty reason. A refusal ` +\n \"nobody can read leaves the field open with nothing beside it — return \" +\n `${source === \"validate\" ? \"null\" : \"nothing\"} to accept the value, or say why it cannot be used.`,\n );\n}\n\n/**\n * THE MESSAGE IS AN OVERLAY, for the reason `InlineEdit` measured: in normal\n * flow a refusal grows the control's own wrapper, which inside a fixed-height\n * row shoves everything beside it. Absolutely positioned, it cannot contribute\n * height. The parent must be `relative`.\n */\nexport function OutcomeMessage({\n id,\n children,\n className,\n}: {\n id?: string;\n children: string;\n className?: string;\n}) {\n return (\n <p\n id={id}\n role=\"alert\"\n data-slot=\"edit-outcome\"\n className={cn(\n \"absolute top-full right-0 left-0 z-10 mt-1\",\n \"flex items-start gap-1.5 rounded-md px-2 py-1.5\",\n \"border border-danger-border bg-surface shadow-md\",\n \"text-2xs font-medium text-danger-text\",\n className,\n )}\n >\n <Icon name=\"circle-alert\" size=\"xs\" className=\"mt-px shrink-0\" aria-hidden />\n <span>{children}</span>\n </p>\n );\n}\n"],"names":["isRefusal","outcome","isPromise","assertReadableRefusal","component","reason","source","OutcomeMessage","id","children","className","jsxs","cn","jsx","Icon"],"mappings":";;;AA6BO,SAASA,EAAUC,GAA8C;AACtE,SAAO,OAAOA,KAAY,YAAYA,MAAY,QAAQ,aAAaA;AACzE;AAEO,SAASC,EAAUD,GAA8E;AACtG,SAAO,OAAQA,GAAkC,QAAS;AAC5D;AAOO,SAASE,EACdC,GACAC,GACAC,GACM;AACN,MAAID,MAAW;AACf,UAAM,IAAI;AAAA,MACR,GAAGD,CAAS,KAAKE,CAAM,0HAElBA,MAAW,aAAa,SAAS,SAAS;AAAA,IAAA;AAEnD;AAQO,SAASC,EAAe;AAAA,EAC7B,IAAAC;AAAA,EACA,UAAAC;AAAA,EACA,WAAAC;AACF,GAIG;AACD,SACE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,IAAAH;AAAA,MACA,MAAK;AAAA,MACL,aAAU;AAAA,MACV,WAAWI;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACAF;AAAA,MAAA;AAAA,MAGF,UAAA;AAAA,QAAA,gBAAAG,EAACC,GAAA,EAAK,MAAK,gBAAe,MAAK,MAAK,WAAU,kBAAiB,eAAW,GAAA,CAAC;AAAA,QAC3E,gBAAAD,EAAC,UAAM,UAAAJ,EAAA,CAAS;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGtB;"}
@@ -0,0 +1,146 @@
1
+ import { useRef as s, useState as R, useEffect as y } from "react";
2
+ import { assertReadableRefusal as z, isPromise as O, isRefusal as A } from "./outcome.js";
3
+ function U(p) {
4
+ const t = s(p);
5
+ t.current = p;
6
+ const [B, D] = R(!1), [M, h] = R(null), [P, g] = R(null), [v, C] = R(0), [w, G] = R(0), S = s(!1), o = s(0), d = s(p.value), a = s(null), x = s([]), H = s(0), m = s(null), i = s(null);
7
+ y(() => {
8
+ v > 0 && t.current.refocus();
9
+ }, [v]), y(() => {
10
+ w > 0 && i.current !== null && t.current.reopen();
11
+ }, [w]), y(
12
+ () => () => {
13
+ o.current += 1, m.current = null, i.current = null;
14
+ },
15
+ []
16
+ );
17
+ function f(e) {
18
+ S.current = e, D(e);
19
+ }
20
+ function I(e = null) {
21
+ f(!1), h(e), g(null);
22
+ }
23
+ function J(e, u = null, c) {
24
+ o.current += 1;
25
+ const r = c ?? i.current;
26
+ return i.current = null, m.current = null, d.current = r ? r.base : e, I(r ? r.refusal : u), r?.failure && g(r.failure), r ? r.text : e;
27
+ }
28
+ function K(e, u, c) {
29
+ const r = m.current;
30
+ if ("error" in e && c === o.current && t.current.onError?.(e.error), !(r === null || r.id !== u)) {
31
+ if (m.current = null, "error" in e)
32
+ i.current = { text: r.text, base: r.base, refusal: null, failure: t.current.failureMessage };
33
+ else if (A(e.outcome))
34
+ z(t.current.component, e.outcome.refusal, "onCommit"), i.current = { text: r.text, base: r.base, refusal: e.outcome.refusal, failure: null };
35
+ else
36
+ return;
37
+ G((l) => l + 1);
38
+ }
39
+ }
40
+ function L() {
41
+ o.current += 1, I();
42
+ }
43
+ function k(e, u) {
44
+ z(t.current.component, e, u), f(!1), h(e), C((c) => c + 1);
45
+ }
46
+ function q(e) {
47
+ f(!1), g(t.current.failureMessage), t.current.onError?.(e), C((u) => u + 1);
48
+ }
49
+ function E(e, u, c, r) {
50
+ const l = (n) => {
51
+ a.current = null;
52
+ try {
53
+ u === o.current ? c(n) : ("error" in n && t.current.onError?.(n.error), r?.(n));
54
+ } finally {
55
+ for (const b of x.current.splice(0)) b();
56
+ }
57
+ };
58
+ a.current = e.then(
59
+ (n) => l({ outcome: n }),
60
+ (n) => l({ error: n })
61
+ );
62
+ }
63
+ function F(e) {
64
+ if (a.current === null) {
65
+ e();
66
+ return;
67
+ }
68
+ const u = o.current;
69
+ x.current.push(() => {
70
+ u === o.current && F(e);
71
+ });
72
+ }
73
+ function W(e) {
74
+ if (A(e)) {
75
+ k(e.refusal, "onCommit");
76
+ return;
77
+ }
78
+ f(!1), t.current.close();
79
+ }
80
+ function j(e, u) {
81
+ if (S.current) return;
82
+ if (e === t.current.value || e === d.current) {
83
+ t.current.close();
84
+ return;
85
+ }
86
+ const c = u?.(e) ?? null;
87
+ if (c !== null) {
88
+ k(c, "validate");
89
+ return;
90
+ }
91
+ if (a.current !== null) {
92
+ f(!0), F(() => {
93
+ f(!1), j(e, u);
94
+ });
95
+ return;
96
+ }
97
+ const r = o.current;
98
+ let l;
99
+ try {
100
+ l = t.current.onCommit(e, d.current);
101
+ } catch (n) {
102
+ q(n);
103
+ return;
104
+ }
105
+ if (!O(l)) {
106
+ W(l);
107
+ return;
108
+ }
109
+ if (t.current.commitMode === "close") {
110
+ const n = ++H.current;
111
+ m.current = { id: n, text: e, base: d.current };
112
+ const b = (N) => K(N, n, r);
113
+ E(l, r, b, b), t.current.close();
114
+ return;
115
+ }
116
+ f(!0), E(l, r, (n) => "error" in n ? q(n.error) : W(n.outcome));
117
+ }
118
+ return {
119
+ pending: B,
120
+ refusal: M,
121
+ failure: P,
122
+ blocked: M ?? P,
123
+ get base() {
124
+ return d.current;
125
+ },
126
+ begin: J,
127
+ restored: () => i.current,
128
+ end: L,
129
+ commit: j,
130
+ refuse: k,
131
+ fail: q,
132
+ setPending: f,
133
+ isPending: () => S.current,
134
+ setRefusal: h,
135
+ clearFailure: () => g(null),
136
+ token: () => o.current,
137
+ busy: () => a.current !== null,
138
+ inFlight: () => a.current,
139
+ track: E,
140
+ whenIdle: F
141
+ };
142
+ }
143
+ export {
144
+ U as useEditSession
145
+ };
146
+ //# sourceMappingURL=use-edit-session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-edit-session.js","sources":["../../../src/components/edit/use-edit-session.ts"],"sourcesContent":["import { useEffect, useRef, useState } from \"react\";\nimport { assertReadableRefusal, isPromise, isRefusal, type EditCommit, type EditOutcome } from \"./outcome\";\n\n/* ============================================================================\n THE EDIT SESSION — the one commit state machine behind every in-place\n editor (`InlineEdit`, `InlineMarkdownEdit`). DX-3372 review, H2 + L3.\n\n Both fields used to carry their own copy of pending / refusal / failure /\n settle / fail, and neither copy knew WHICH EDIT a save belonged to. A caller\n can close a field — or close it and open it again — while a save is still\n out, and the outcome of that save then acted on whatever the field was doing\n by the time it settled: a refusal showed its overlay and pulled focus into a\n closed field, a success fired a second `onEditingChange(false)`, an autosave\n wrote the older text back over the save that had just landed, and the\n markdown field let a second `onCommit` start beside the first.\n\n WHAT THIS GUARANTEES:\n\n - A SESSION is one opening of the field: `begin()` starts one, `end()`\n finishes it. Every save records the session that sent it; when it settles\n under a DIFFERENT session its outcome is dropped — no message, no focus\n move, no close. The one exception is a stale REJECTION, which still reaches\n `onError`, because a save that failed is worth logging even when nobody is\n looking at the field any more.\n - UNMOUNTING ENDS THE SESSION, so a save that lands after the field is gone\n never closes, refuses or re-saves anything. (`InlineEdit`'s autosave still\n sends text the debounce was holding — see its own unmount handling.)\n - \"UNCHANGED\" MEANS THE READER CHANGED NOTHING: a commit whose text equals\n the committed `value` OR the value this session began from is not a\n write. The second half matters when `value` moved underneath the open\n field (an earlier session's save landing, someone else's edit): writing\n the untouched text back would revert that change.\n - SAVES ARE SERIALISED ACROSS SESSIONS: at most one `onCommit` is ever\n outstanding per field. A commit asked for while an earlier session's save\n is still out freezes the field (`pending`) and runs once that save has\n settled — provided its own session is still open by then.\n - A refusal or a failure puts focus back into the field (`refocus`), so the\n message and the text it is about are where the reader is. The refocus runs\n in an effect AFTER the render that clears `pending`: while a save is out\n the markdown field is `inert`, and focusing an inert element does nothing.\n\n COMMIT MODE (DXUI-76). `\"wait\"` (the default) is everything above. `\"close\"`\n closes the field the moment a save that returns a promise is sent, instead\n of freezing it until the promise settles - for a screen that already shows\n the new value (an object store's optimistic layer), where the wait only\n delays a field the reader is done with. A refusal or failure that lands\n AFTER the close has no field to show it in, so the session reopens the\n field (`reopen`) with the text that was sent and the message under it. That\n late answer is dropped, like any stale outcome, once the field has been\n opened again by anyone: a later commit in it supersedes the earlier save.\n ========================================================================= */\n\nexport type CommitMode = \"wait\" | \"close\";\n\nexport type SaveResult = { outcome: EditOutcome } | { error: unknown };\n\nexport interface EditSessionOptions {\n /** Named in the thrown message when a refusal carries an empty reason. */\n component: string;\n /** The committed value — \"unchanged\" is measured against it. Read live. */\n value: string;\n onCommit: EditCommit;\n onError?: (error: unknown) => void;\n failureMessage: string;\n /** End editing after a commit that landed (or had nothing to write). */\n close: () => void;\n /** Put focus back on the field after a refusal or a failure. */\n refocus: () => void;\n /** `\"close\"` closes at once on a promise-returning commit. Default `\"wait\"`. */\n commitMode?: CommitMode;\n /** Open the field again so a late refusal or failure can show. */\n reopen: () => void;\n}\n\ninterface ClosedSave {\n id: number;\n text: string;\n base: string;\n}\n\n/** What the next opening starts from after a late refusal or failure. */\nexport interface Restore {\n text: string;\n base: string;\n refusal: string | null;\n failure: string | null;\n}\n\nexport interface EditSession {\n pending: boolean;\n refusal: string | null;\n failure: string | null;\n /** The message on screen, if any — a refusal or a failure. */\n blocked: string | null;\n /** The value this session began from — `onCommit`'s `base`. */\n readonly base: string;\n /**\n * Start a new session. `refusal` seeds the message slot (live validation).\n * Returns the text the field starts with: `base`, or the text of a save\n * that was refused after the field closed.\n */\n begin: (base: string, refusal?: string | null, restore?: Restore | null) => string;\n /**\n * What a pending reopen restores, or null. Read it before `begin` consumes\n * it and hand it back to `begin`: a StrictMode remount runs `begin` twice,\n * and only the first finds it still pending (DXUI-81).\n */\n restored: () => Restore | null;\n /** Finish the current session: every save still out becomes stale. */\n end: () => void;\n /** Commit `next` — unchanged check (see the module comment), `validate`, `onCommit`, outcome. */\n commit: (next: string, validate?: (next: string) => string | null) => void;\n refuse: (reason: string, source: \"validate\" | \"onCommit\") => void;\n fail: (error: unknown) => void;\n setPending: (pending: boolean) => void;\n isPending: () => boolean;\n setRefusal: (refusal: string | null) => void;\n clearFailure: () => void;\n /** The current session's token, for a caller that tracks its own save. */\n token: () => number;\n /** Whether a save from any session is still out. */\n busy: () => boolean;\n /** The in-flight save, settled or not — chain after it to stay in order. */\n inFlight: () => Promise<void> | null;\n /**\n * Track a save sent under `token`. `onResult` runs only if that session is\n * still current when it settles; otherwise `onStale` does (after a stale\n * rejection has reached `onError`).\n */\n track: (\n save: Promise<EditOutcome>,\n token: number,\n onResult: (result: SaveResult) => void,\n onStale?: (result: SaveResult) => void,\n ) => void;\n /** Run `fn` once no save is out — dropped if this session ends first. */\n whenIdle: (fn: () => void) => void;\n}\n\nexport function useEditSession(options: EditSessionOptions): EditSession {\n const latest = useRef(options);\n latest.current = options;\n\n const [pending, setPendingState] = useState(false);\n const [refusal, setRefusal] = useState<string | null>(null);\n const [failure, setFailure] = useState<string | null>(null);\n const [focusRequest, setFocusRequest] = useState(0);\n const [reopenRequest, setReopenRequest] = useState(0);\n\n /* Refs, not state: they are read from promise callbacks and timers whose\n render closure is stale. */\n const pendingRef = useRef(false);\n const sessionRef = useRef(0);\n const baseRef = useRef(options.value);\n const inFlightRef = useRef<Promise<void> | null>(null);\n const idleWaitersRef = useRef<Array<() => void>>([]);\n const closedSeqRef = useRef(0);\n /* The newest save sent by a commit that closed the field at once; a late\n refusal or failure only reopens the field while this is still it. */\n const closedRef = useRef<ClosedSave | null>(null);\n const restoreRef = useRef<Restore | null>(null);\n\n useEffect(() => {\n if (focusRequest > 0) latest.current.refocus();\n }, [focusRequest]);\n\n /* DXUI-80: the reopen runs in an effect, AFTER the render that closed the\n field. A save refused before that render would batch \"open\" onto the\n pending \"close\": `editing` never leaves true, no opening happens, and the\n restored text and message stay unread. `restoreRef` is null when an opening\n got there first. */\n useEffect(() => {\n if (reopenRequest > 0 && restoreRef.current !== null) latest.current.reopen();\n }, [reopenRequest]);\n\n /* Declared first so it runs before any other unmount cleanup that chains\n on the in-flight save. */\n useEffect(\n () => () => {\n sessionRef.current += 1;\n closedRef.current = null;\n restoreRef.current = null;\n },\n [],\n );\n\n function setPending(next: boolean) {\n pendingRef.current = next;\n setPendingState(next);\n }\n\n function clearMessages(seed: string | null = null) {\n setPending(false);\n setRefusal(seed);\n setFailure(null);\n }\n\n function begin(base: string, seed: string | null = null, given?: Restore | null): string {\n sessionRef.current += 1;\n const restore = given ?? restoreRef.current;\n restoreRef.current = null;\n closedRef.current = null;\n baseRef.current = restore ? restore.base : base;\n clearMessages(restore ? restore.refusal : seed);\n if (restore?.failure) setFailure(restore.failure);\n return restore ? restore.text : base;\n }\n\n /** A save sent by a closing commit settled: a refusal or failure reopens the field. */\n function closedSaveSettled(result: SaveResult, id: number, token: number) {\n const closed = closedRef.current;\n /* A rejection that settled under the live session was not reported by\n `track` (only stale ones are). */\n if (\"error\" in result && token === sessionRef.current) latest.current.onError?.(result.error);\n if (closed === null || closed.id !== id) return;\n closedRef.current = null;\n if (\"error\" in result) {\n restoreRef.current = { text: closed.text, base: closed.base, refusal: null, failure: latest.current.failureMessage };\n } else if (isRefusal(result.outcome)) {\n assertReadableRefusal(latest.current.component, result.outcome.refusal, \"onCommit\");\n restoreRef.current = { text: closed.text, base: closed.base, refusal: result.outcome.refusal, failure: null };\n } else {\n return;\n }\n setReopenRequest((n) => n + 1);\n }\n\n function end() {\n sessionRef.current += 1;\n clearMessages();\n }\n\n function refuse(reason: string, source: \"validate\" | \"onCommit\") {\n assertReadableRefusal(latest.current.component, reason, source);\n setPending(false);\n setRefusal(reason);\n setFocusRequest((n) => n + 1);\n }\n\n function fail(error: unknown) {\n setPending(false);\n setFailure(latest.current.failureMessage);\n latest.current.onError?.(error);\n setFocusRequest((n) => n + 1);\n }\n\n function track(\n save: Promise<EditOutcome>,\n token: number,\n onResult: (result: SaveResult) => void,\n onStale?: (result: SaveResult) => void,\n ) {\n const settled = (result: SaveResult) => {\n inFlightRef.current = null;\n try {\n if (token === sessionRef.current) {\n onResult(result);\n } else {\n if (\"error\" in result) latest.current.onError?.(result.error);\n onStale?.(result);\n }\n } finally {\n /* Whatever `onResult` threw (an empty refusal reason, a caller's\n handler), the commits queued behind this save still run. */\n for (const waiter of idleWaitersRef.current.splice(0)) waiter();\n }\n };\n inFlightRef.current = save.then(\n (outcome) => settled({ outcome }),\n (error: unknown) => settled({ error }),\n );\n }\n\n function whenIdle(fn: () => void) {\n if (inFlightRef.current === null) {\n fn();\n return;\n }\n const token = sessionRef.current;\n /* Re-enter `whenIdle` rather than calling `fn`: the save that just\n settled may have started another one. */\n idleWaitersRef.current.push(() => {\n if (token === sessionRef.current) whenIdle(fn);\n });\n }\n\n function settle(outcome: EditOutcome) {\n if (isRefusal(outcome)) {\n refuse(outcome.refusal, \"onCommit\");\n return;\n }\n setPending(false);\n latest.current.close();\n }\n\n function commit(next: string, validate?: (next: string) => string | null) {\n if (pendingRef.current) return;\n /* AN UNCHANGED VALUE IS NOT A WRITE — ahead of `validate`, so a value\n already on the record is never re-litigated against a rule that\n tightened after it was saved. */\n if (next === latest.current.value || next === baseRef.current) {\n latest.current.close();\n return;\n }\n const local = validate?.(next) ?? null;\n if (local !== null) {\n refuse(local, \"validate\");\n return;\n }\n if (inFlightRef.current !== null) {\n setPending(true);\n whenIdle(() => {\n setPending(false);\n commit(next, validate);\n });\n return;\n }\n const token = sessionRef.current;\n let outcome: EditOutcome | Promise<EditOutcome>;\n try {\n outcome = latest.current.onCommit(next, baseRef.current);\n } catch (error) {\n fail(error);\n return;\n }\n if (!isPromise(outcome)) {\n settle(outcome);\n return;\n }\n if (latest.current.commitMode === \"close\") {\n const id = ++closedSeqRef.current;\n closedRef.current = { id, text: next, base: baseRef.current };\n const settled = (result: SaveResult) => closedSaveSettled(result, id, token);\n track(outcome, token, settled, settled);\n latest.current.close();\n return;\n }\n setPending(true);\n track(outcome, token, (result) => (\"error\" in result ? fail(result.error) : settle(result.outcome)));\n }\n\n return {\n pending,\n refusal,\n failure,\n blocked: refusal ?? failure,\n get base() {\n return baseRef.current;\n },\n begin,\n restored: () => restoreRef.current,\n end,\n commit,\n refuse,\n fail,\n setPending,\n isPending: () => pendingRef.current,\n setRefusal,\n clearFailure: () => setFailure(null),\n token: () => sessionRef.current,\n busy: () => inFlightRef.current !== null,\n inFlight: () => inFlightRef.current,\n track,\n whenIdle,\n };\n}\n"],"names":["useEditSession","options","latest","useRef","pending","setPendingState","useState","refusal","setRefusal","failure","setFailure","focusRequest","setFocusRequest","reopenRequest","setReopenRequest","pendingRef","sessionRef","baseRef","inFlightRef","idleWaitersRef","closedSeqRef","closedRef","restoreRef","useEffect","setPending","next","clearMessages","seed","begin","base","given","restore","closedSaveSettled","result","id","token","closed","isRefusal","assertReadableRefusal","n","end","refuse","reason","source","fail","error","track","save","onResult","onStale","settled","waiter","outcome","whenIdle","fn","settle","commit","validate","local","isPromise"],"mappings":";;AA2IO,SAASA,EAAeC,GAA0C;AACvE,QAAMC,IAASC,EAAOF,CAAO;AAC7B,EAAAC,EAAO,UAAUD;AAEjB,QAAM,CAACG,GAASC,CAAe,IAAIC,EAAS,EAAK,GAC3C,CAACC,GAASC,CAAU,IAAIF,EAAwB,IAAI,GACpD,CAACG,GAASC,CAAU,IAAIJ,EAAwB,IAAI,GACpD,CAACK,GAAcC,CAAe,IAAIN,EAAS,CAAC,GAC5C,CAACO,GAAeC,CAAgB,IAAIR,EAAS,CAAC,GAI9CS,IAAaZ,EAAO,EAAK,GACzBa,IAAab,EAAO,CAAC,GACrBc,IAAUd,EAAOF,EAAQ,KAAK,GAC9BiB,IAAcf,EAA6B,IAAI,GAC/CgB,IAAiBhB,EAA0B,EAAE,GAC7CiB,IAAejB,EAAO,CAAC,GAGvBkB,IAAYlB,EAA0B,IAAI,GAC1CmB,IAAanB,EAAuB,IAAI;AAE9C,EAAAoB,EAAU,MAAM;AACd,IAAIZ,IAAe,KAAGT,EAAO,QAAQ,QAAA;AAAA,EACvC,GAAG,CAACS,CAAY,CAAC,GAOjBY,EAAU,MAAM;AACd,IAAIV,IAAgB,KAAKS,EAAW,YAAY,QAAMpB,EAAO,QAAQ,OAAA;AAAA,EACvE,GAAG,CAACW,CAAa,CAAC,GAIlBU;AAAA,IACE,MAAM,MAAM;AACV,MAAAP,EAAW,WAAW,GACtBK,EAAU,UAAU,MACpBC,EAAW,UAAU;AAAA,IACvB;AAAA,IACA,CAAA;AAAA,EAAC;AAGH,WAASE,EAAWC,GAAe;AACjC,IAAAV,EAAW,UAAUU,GACrBpB,EAAgBoB,CAAI;AAAA,EACtB;AAEA,WAASC,EAAcC,IAAsB,MAAM;AACjD,IAAAH,EAAW,EAAK,GAChBhB,EAAWmB,CAAI,GACfjB,EAAW,IAAI;AAAA,EACjB;AAEA,WAASkB,EAAMC,GAAcF,IAAsB,MAAMG,GAAgC;AACvF,IAAAd,EAAW,WAAW;AACtB,UAAMe,IAAUD,KAASR,EAAW;AACpC,WAAAA,EAAW,UAAU,MACrBD,EAAU,UAAU,MACpBJ,EAAQ,UAAUc,IAAUA,EAAQ,OAAOF,GAC3CH,EAAcK,IAAUA,EAAQ,UAAUJ,CAAI,GAC1CI,GAAS,WAASrB,EAAWqB,EAAQ,OAAO,GACzCA,IAAUA,EAAQ,OAAOF;AAAA,EAClC;AAGA,WAASG,EAAkBC,GAAoBC,GAAYC,GAAe;AACxE,UAAMC,IAASf,EAAU;AAIzB,QADI,WAAWY,KAAUE,MAAUnB,EAAW,WAASd,EAAO,QAAQ,UAAU+B,EAAO,KAAK,GACxF,EAAAG,MAAW,QAAQA,EAAO,OAAOF,IAErC;AAAA,UADAb,EAAU,UAAU,MAChB,WAAWY;AACb,QAAAX,EAAW,UAAU,EAAE,MAAMc,EAAO,MAAM,MAAMA,EAAO,MAAM,SAAS,MAAM,SAASlC,EAAO,QAAQ,eAAA;AAAA,eAC3FmC,EAAUJ,EAAO,OAAO;AACjC,QAAAK,EAAsBpC,EAAO,QAAQ,WAAW+B,EAAO,QAAQ,SAAS,UAAU,GAClFX,EAAW,UAAU,EAAE,MAAMc,EAAO,MAAM,MAAMA,EAAO,MAAM,SAASH,EAAO,QAAQ,SAAS,SAAS,KAAA;AAAA;AAEvG;AAEF,MAAAnB,EAAiB,CAACyB,MAAMA,IAAI,CAAC;AAAA;AAAA,EAC/B;AAEA,WAASC,IAAM;AACb,IAAAxB,EAAW,WAAW,GACtBU,EAAA;AAAA,EACF;AAEA,WAASe,EAAOC,GAAgBC,GAAiC;AAC/D,IAAAL,EAAsBpC,EAAO,QAAQ,WAAWwC,GAAQC,CAAM,GAC9DnB,EAAW,EAAK,GAChBhB,EAAWkC,CAAM,GACjB9B,EAAgB,CAAC2B,MAAMA,IAAI,CAAC;AAAA,EAC9B;AAEA,WAASK,EAAKC,GAAgB;AAC5B,IAAArB,EAAW,EAAK,GAChBd,EAAWR,EAAO,QAAQ,cAAc,GACxCA,EAAO,QAAQ,UAAU2C,CAAK,GAC9BjC,EAAgB,CAAC2B,MAAMA,IAAI,CAAC;AAAA,EAC9B;AAEA,WAASO,EACPC,GACAZ,GACAa,GACAC,GACA;AACA,UAAMC,IAAU,CAACjB,MAAuB;AACtC,MAAAf,EAAY,UAAU;AACtB,UAAI;AACF,QAAIiB,MAAUnB,EAAW,UACvBgC,EAASf,CAAM,KAEX,WAAWA,KAAQ/B,EAAO,QAAQ,UAAU+B,EAAO,KAAK,GAC5DgB,IAAUhB,CAAM;AAAA,MAEpB,UAAA;AAGE,mBAAWkB,KAAUhC,EAAe,QAAQ,OAAO,CAAC,EAAG,CAAAgC,EAAA;AAAA,MACzD;AAAA,IACF;AACA,IAAAjC,EAAY,UAAU6B,EAAK;AAAA,MACzB,CAACK,MAAYF,EAAQ,EAAE,SAAAE,GAAS;AAAA,MAChC,CAACP,MAAmBK,EAAQ,EAAE,OAAAL,GAAO;AAAA,IAAA;AAAA,EAEzC;AAEA,WAASQ,EAASC,GAAgB;AAChC,QAAIpC,EAAY,YAAY,MAAM;AAChC,MAAAoC,EAAA;AACA;AAAA,IACF;AACA,UAAMnB,IAAQnB,EAAW;AAGzB,IAAAG,EAAe,QAAQ,KAAK,MAAM;AAChC,MAAIgB,MAAUnB,EAAW,WAASqC,EAASC,CAAE;AAAA,IAC/C,CAAC;AAAA,EACH;AAEA,WAASC,EAAOH,GAAsB;AACpC,QAAIf,EAAUe,CAAO,GAAG;AACtB,MAAAX,EAAOW,EAAQ,SAAS,UAAU;AAClC;AAAA,IACF;AACA,IAAA5B,EAAW,EAAK,GAChBtB,EAAO,QAAQ,MAAA;AAAA,EACjB;AAEA,WAASsD,EAAO/B,GAAcgC,GAA4C;AACxE,QAAI1C,EAAW,QAAS;AAIxB,QAAIU,MAASvB,EAAO,QAAQ,SAASuB,MAASR,EAAQ,SAAS;AAC7D,MAAAf,EAAO,QAAQ,MAAA;AACf;AAAA,IACF;AACA,UAAMwD,IAAQD,IAAWhC,CAAI,KAAK;AAClC,QAAIiC,MAAU,MAAM;AAClB,MAAAjB,EAAOiB,GAAO,UAAU;AACxB;AAAA,IACF;AACA,QAAIxC,EAAY,YAAY,MAAM;AAChC,MAAAM,EAAW,EAAI,GACf6B,EAAS,MAAM;AACb,QAAA7B,EAAW,EAAK,GAChBgC,EAAO/B,GAAMgC,CAAQ;AAAA,MACvB,CAAC;AACD;AAAA,IACF;AACA,UAAMtB,IAAQnB,EAAW;AACzB,QAAIoC;AACJ,QAAI;AACF,MAAAA,IAAUlD,EAAO,QAAQ,SAASuB,GAAMR,EAAQ,OAAO;AAAA,IACzD,SAAS4B,GAAO;AACd,MAAAD,EAAKC,CAAK;AACV;AAAA,IACF;AACA,QAAI,CAACc,EAAUP,CAAO,GAAG;AACvB,MAAAG,EAAOH,CAAO;AACd;AAAA,IACF;AACA,QAAIlD,EAAO,QAAQ,eAAe,SAAS;AACzC,YAAMgC,IAAK,EAAEd,EAAa;AAC1B,MAAAC,EAAU,UAAU,EAAE,IAAAa,GAAI,MAAMT,GAAM,MAAMR,EAAQ,QAAA;AACpD,YAAMiC,IAAU,CAACjB,MAAuBD,EAAkBC,GAAQC,GAAIC,CAAK;AAC3E,MAAAW,EAAMM,GAASjB,GAAOe,GAASA,CAAO,GACtChD,EAAO,QAAQ,MAAA;AACf;AAAA,IACF;AACA,IAAAsB,EAAW,EAAI,GACfsB,EAAMM,GAASjB,GAAO,CAACF,MAAY,WAAWA,IAASW,EAAKX,EAAO,KAAK,IAAIsB,EAAOtB,EAAO,OAAO,CAAE;AAAA,EACrG;AAEA,SAAO;AAAA,IACL,SAAA7B;AAAA,IACA,SAAAG;AAAA,IACA,SAAAE;AAAA,IACA,SAASF,KAAWE;AAAA,IACpB,IAAI,OAAO;AACT,aAAOQ,EAAQ;AAAA,IACjB;AAAA,IACA,OAAAW;AAAA,IACA,UAAU,MAAMN,EAAW;AAAA,IAC3B,KAAAkB;AAAA,IACA,QAAAgB;AAAA,IACA,QAAAf;AAAA,IACA,MAAAG;AAAA,IACA,YAAApB;AAAA,IACA,WAAW,MAAMT,EAAW;AAAA,IAC5B,YAAAP;AAAA,IACA,cAAc,MAAME,EAAW,IAAI;AAAA,IACnC,OAAO,MAAMM,EAAW;AAAA,IACxB,MAAM,MAAME,EAAY,YAAY;AAAA,IACpC,UAAU,MAAMA,EAAY;AAAA,IAC5B,OAAA4B;AAAA,IACA,UAAAO;AAAA,EAAA;AAEJ;"}
@@ -0,0 +1,97 @@
1
+ import { jsx as o, jsxs as z, Fragment as R } from "react/jsx-runtime";
2
+ import { useState as U } from "react";
3
+ import { formatBytes as A } from "../../lib/format.js";
4
+ import { useBelow as G } from "../../lib/use-media-query.js";
5
+ import { Dialog as T } from "../Dialog.js";
6
+ import { Icon as w } from "../Icon.js";
7
+ import { IconButton as k } from "../IconButton.js";
8
+ import { Popover as Z } from "../Popover.js";
9
+ import { frameKeyOf as q } from "./frames.js";
10
+ import { useFrameCursor as D } from "./use-frame-cursor.js";
11
+ import { useViewerKeys as E } from "./use-viewer-keys.js";
12
+ import { useViewerZoom as H } from "./use-viewer-zoom.js";
13
+ import { FrameNav as J, ViewerControls as M } from "./ViewerControls.js";
14
+ import { ViewerRail as Q } from "./ViewerRail.js";
15
+ import { stageKindOf as W, ViewerStage as X } from "./ViewerStage.js";
16
+ import { useUiStrings as Y, useUiLocale as _ } from "../../lib/i18n/provider.js";
17
+ function xe({
18
+ open: m,
19
+ onOpenChange: b,
20
+ files: v,
21
+ initialFileId: V,
22
+ initialPageId: F,
23
+ onFrameChange: C,
24
+ title: L,
25
+ subtitle: y,
26
+ onDownload: a,
27
+ markLabel: K,
28
+ headerActions: O,
29
+ overlay: S,
30
+ renderBody: f
31
+ }) {
32
+ const i = Y().fileViewer, N = _(), c = K ?? i.marked, { frames: t, frame: e, go: r } = D({ open: m, files: v, initialFileId: V, initialPageId: F, onFrameChange: C }), p = e?.index ?? 0, d = e && !e.page && f ? f(e.file) : null, l = e ? W(e, d) : { kind: "file", fit: null }, s = H({ frameKey: e ? q(e) : "", fit: l.fit }), u = l.fit !== null, j = E({ go: r, index: p, total: t.length, zoom: u ? s : null }), g = G("lg"), [n, B] = U(!0), x = e ? /* @__PURE__ */ o(
33
+ M,
34
+ {
35
+ frame: e,
36
+ frames: t,
37
+ go: r,
38
+ zoom: s,
39
+ zoomable: u,
40
+ markLabel: c,
41
+ headerActions: O,
42
+ onDownload: a,
43
+ labelled: g
44
+ }
45
+ ) : null, I = L ?? e?.file.name ?? i.defaultTitle, h = e?.file.size === void 0 ? "" : A(e.file.size, N);
46
+ return /* @__PURE__ */ o(
47
+ T,
48
+ {
49
+ ref: j,
50
+ open: m,
51
+ onOpenChange: b,
52
+ size: "full",
53
+ title: I,
54
+ description: y ?? (h === "" ? void 0 : h),
55
+ headerActions: /* @__PURE__ */ z(R, { children: [
56
+ /* @__PURE__ */ o(
57
+ k,
58
+ {
59
+ size: "xs",
60
+ icon: /* @__PURE__ */ o(w, { name: "panel-left", size: "xs" }),
61
+ label: n ? i.hideFileList : i.showFileList,
62
+ "aria-pressed": n,
63
+ onClick: () => B((P) => !P)
64
+ }
65
+ ),
66
+ e ? /* @__PURE__ */ o(J, { frame: e, onGo: r }) : null,
67
+ g ? /* @__PURE__ */ o(
68
+ Z,
69
+ {
70
+ align: "end",
71
+ "aria-label": i.moreControls,
72
+ trigger: /* @__PURE__ */ o(k, { size: "xs", icon: /* @__PURE__ */ o(w, { name: "more-horizontal", size: "xs" }), label: i.moreControls }),
73
+ children: /* @__PURE__ */ o("div", { className: "flex w-60 flex-col items-stretch gap-2 p-1", children: x })
74
+ }
75
+ ) : x
76
+ ] }),
77
+ children: e ? /* @__PURE__ */ z("div", { className: "flex min-h-0 flex-1 flex-col sm:flex-row", children: [
78
+ /* @__PURE__ */ o(Q, { frames: t, index: p, markLabel: c, onSelect: r, hidden: !n }),
79
+ /* @__PURE__ */ o(
80
+ X,
81
+ {
82
+ frame: e,
83
+ kind: l.kind,
84
+ custom: d,
85
+ zoom: s,
86
+ onDownload: a,
87
+ overlay: S?.(e)
88
+ }
89
+ )
90
+ ] }) : null
91
+ }
92
+ );
93
+ }
94
+ export {
95
+ xe as FileViewer
96
+ };
97
+ //# sourceMappingURL=FileViewer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FileViewer.js","sources":["../../../src/components/file-viewer/FileViewer.tsx"],"sourcesContent":["import { useState, type ReactNode } from \"react\";\nimport { formatBytes } from \"../../lib/format\";\nimport { useUiLocale, useUiStrings } from \"../../lib/i18n\";\nimport { useBelow } from \"../../lib/use-media-query\";\nimport { Dialog } from \"../Dialog\";\nimport { Icon } from \"../Icon\";\nimport { IconButton } from \"../IconButton\";\nimport { Popover } from \"../Popover\";\nimport type { FileViewerProps } from \"./types\";\nimport { frameKeyOf } from \"./frames\";\nimport { useFrameCursor } from \"./use-frame-cursor\";\nimport { useViewerKeys } from \"./use-viewer-keys\";\nimport { useViewerZoom } from \"./use-viewer-zoom\";\nimport { FrameNav, ViewerControls } from \"./ViewerControls\";\nimport { ViewerRail } from \"./ViewerRail\";\nimport { stageKindOf, ViewerStage } from \"./ViewerStage\";\n\n/* ============================================================================\n FILE VIEWER (DX-4398)\n\n Opens an ordered list of files full screen: a collapsible thumbnail rail,\n previous/next across every file (a multi-page document is one frame per\n page), a jump-to-page-number field, zoom and pan, fit, Download, and close.\n Ported from gpt-manager's page viewer, which showed the pages of ONE document,\n and generalised to files of any kind.\n\n THE POSITION IS UNCONTROLLED AND ADDRESSED BY ID (`use-frame-cursor.ts`): open\n it with `initialFileId` / `initialPageId`, observe it with `onFrameChange`;\n there is no `index` prop and no controlled cursor. To drive it from outside,\n reopen it or change its `key`.\n\n THE SHELL IS `Dialog size=\"full\"`: focus trap, scroll lock, Escape and return\n focus are the library's, and the viewer handles no Escape of its own. It sits\n at `--z-modal` like every dialog, so its own Popovers (overflow, jump), toasts\n and tooltips stay above it, and a Popover it was opened from is closed or\n hidden (`overlay-stack.ts`). `Dialog.headerActions` is what lets the viewer\n keep ONE header bar — title, frame navigation, controls, close — instead of a\n header plus a toolbar row costing the page the height it needs.\n\n ONE HEADER, TWO LAYOUTS. From `lg` up the secondary controls sit inline;\n below it they are the content of one overflow Popover. They are the same\n React subtree rendered in exactly one of the two places (`ViewerControls`), so\n a Popover inside them is a real child of the overflow popover. Crossing 1024px\n while open moves them, and a stateful `headerActions` control remounts: state\n a host needs to keep belongs above the viewer.\n ========================================================================= */\n\nexport function FileViewer({\n open,\n onOpenChange,\n files,\n initialFileId,\n initialPageId,\n onFrameChange,\n title,\n subtitle,\n onDownload,\n markLabel,\n headerActions,\n overlay,\n renderBody,\n}: FileViewerProps) {\n const strings = useUiStrings().fileViewer;\n const locale = useUiLocale();\n const mark = markLabel ?? strings.marked;\n const { frames, frame, go } = useFrameCursor({ open, files, initialFileId, initialPageId, onFrameChange });\n const index = frame?.index ?? 0;\n\n /* The stage: what is on it, and how it is zoomed. */\n const custom: ReactNode = frame && !frame.page && renderBody ? renderBody(frame.file) : null;\n const stage = frame ? stageKindOf(frame, custom) : { kind: \"file\" as const, fit: null };\n const zoom = useViewerZoom({ frameKey: frame ? frameKeyOf(frame) : \"\", fit: stage.fit });\n const zoomable = stage.fit !== null;\n\n const setPopup = useViewerKeys({ go, index, total: frames.length, zoom: zoomable ? zoom : null });\n\n const narrow = useBelow(\"lg\");\n const [railOpen, setRailOpen] = useState(true);\n\n const controls = frame ? (\n <ViewerControls\n frame={frame}\n frames={frames}\n go={go}\n zoom={zoom}\n zoomable={zoomable}\n markLabel={mark}\n headerActions={headerActions}\n onDownload={onDownload}\n labelled={narrow}\n />\n ) : null;\n\n const heading = title ?? frame?.file.name ?? strings.defaultTitle;\n const size = frame?.file.size === undefined ? \"\" : formatBytes(frame.file.size, locale);\n const description = subtitle ?? (size === \"\" ? undefined : size);\n\n return (\n <Dialog\n ref={setPopup}\n open={open}\n onOpenChange={onOpenChange}\n size=\"full\"\n title={heading}\n description={description}\n headerActions={\n <>\n <IconButton\n size=\"xs\"\n icon={<Icon name=\"panel-left\" size=\"xs\" />}\n label={railOpen ? strings.hideFileList : strings.showFileList}\n aria-pressed={railOpen}\n onClick={() => setRailOpen((shownNow) => !shownNow)}\n />\n {frame ? <FrameNav frame={frame} onGo={go} /> : null}\n {narrow ? (\n <Popover\n align=\"end\"\n aria-label={strings.moreControls}\n trigger={<IconButton size=\"xs\" icon={<Icon name=\"more-horizontal\" size=\"xs\" />} label={strings.moreControls} />}\n >\n <div className=\"flex w-60 flex-col items-stretch gap-2 p-1\">{controls}</div>\n </Popover>\n ) : (\n controls\n )}\n </>\n }\n >\n {frame ? (\n <div className=\"flex min-h-0 flex-1 flex-col sm:flex-row\">\n <ViewerRail frames={frames} index={index} markLabel={mark} onSelect={go} hidden={!railOpen} />\n <ViewerStage\n frame={frame}\n kind={stage.kind}\n custom={custom}\n zoom={zoom}\n onDownload={onDownload}\n overlay={overlay?.(frame)}\n />\n </div>\n ) : null}\n </Dialog>\n );\n}\n"],"names":["FileViewer","open","onOpenChange","files","initialFileId","initialPageId","onFrameChange","title","subtitle","onDownload","markLabel","headerActions","overlay","renderBody","strings","useUiStrings","locale","useUiLocale","mark","frames","frame","go","useFrameCursor","index","custom","stage","stageKindOf","zoom","useViewerZoom","frameKeyOf","zoomable","setPopup","useViewerKeys","narrow","useBelow","railOpen","setRailOpen","useState","controls","jsx","ViewerControls","heading","size","formatBytes","Dialog","jsxs","Fragment","IconButton","Icon","shownNow","FrameNav","Popover","ViewerRail","ViewerStage"],"mappings":"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"}