@50arms/ui 0.0.0-stage → 35.1.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 +167 -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 +331 -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 +20 -0
  1037. package/dist/types/components/rbac/ApiKeysPanel.d.ts +26 -0
  1038. package/dist/types/components/rbac/ApiKeysTable.d.ts +63 -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 +633 -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,123 @@
1
+ import { nearestScrollAncestor as E, isScrollBox as F } from "../dom/scroll-ancestor.js";
2
+ import { reducedMotion as k } from "../motion.js";
3
+ const b = {
4
+ /* Wide enough to enter deliberately with a card in hand, narrow enough that
5
+ the middle of a short column is not permanently inside it — below ~48px a
6
+ trackpad user overshoots the zone entirely between two frames. */
7
+ threshold: 64,
8
+ /* Crosses a tall column in well under a second at the very edge, while the
9
+ quadratic ramp keeps the first two thirds of the zone gentle. */
10
+ maxSpeed: 800,
11
+ /* REDUCE MEANS REDUCE, NOT DISABLE (D-18). Zeroing this is the obvious
12
+ reading and it is wrong twice over: it strands every off-screen drop target
13
+ behind a scroll the dragging hand cannot perform, and it does so for
14
+ precisely the users least able to complete a fast repeated gesture instead.
15
+ The peak speed is capped instead — nothing whips past, everything stays
16
+ reachable, and the ramp still gives fine control near the boundary. */
17
+ reducedMaxSpeed: 220
18
+ };
19
+ function g(t, r, n) {
20
+ if (t >= r) return 0;
21
+ const i = Math.min(1, Math.max(0, (r - t) / r));
22
+ return n * i * i;
23
+ }
24
+ const A = { axes: ["y", "x"], mustOverflow: !0 };
25
+ function T(t) {
26
+ const r = E(document.elementFromPoint(t.x, t.y), {
27
+ ...A,
28
+ includeSelf: !0
29
+ });
30
+ if (r) return r;
31
+ const n = document.scrollingElement;
32
+ return n instanceof HTMLElement && F(n, A) ? n : null;
33
+ }
34
+ function w(t) {
35
+ if (t === document.scrollingElement)
36
+ return { top: 0, left: 0, right: window.innerWidth, bottom: window.innerHeight };
37
+ const r = t.getBoundingClientRect();
38
+ return { top: r.top, left: r.left, right: r.right, bottom: r.bottom };
39
+ }
40
+ function B(t, r = {}) {
41
+ const n = {
42
+ threshold: r.threshold ?? b.threshold,
43
+ maxSpeed: r.maxSpeed ?? b.maxSpeed,
44
+ reducedMaxSpeed: r.reducedMaxSpeed ?? b.reducedMaxSpeed
45
+ };
46
+ let i = null, u = 0, h = 0, e = 0, s = null, o = n.maxSpeed;
47
+ function f() {
48
+ i !== null && cancelAnimationFrame(i), i = null, u = 0, h = 0, e = 0, s = null;
49
+ }
50
+ function d(p) {
51
+ i = requestAnimationFrame(d);
52
+ const a = u ? Math.min(64, p - u) : 16;
53
+ u = p;
54
+ const c = t.getPoint();
55
+ if (!c) return;
56
+ const l = T(c);
57
+ if (!l) return;
58
+ l !== s && (h = 0, e = 0, s = l);
59
+ const m = w(l), y = g(c.y - m.top, n.threshold, o) * -1 + g(m.bottom - c.y, n.threshold, o), M = g(c.x - m.left, n.threshold, o) * -1 + g(m.right - c.x, n.threshold, o);
60
+ if (M === 0 && y === 0) return;
61
+ e += y * a / 1e3, h += M * a / 1e3;
62
+ const x = Math.trunc(e), S = Math.trunc(h);
63
+ if (S === 0 && x === 0) return;
64
+ e -= x, h -= S;
65
+ const L = l.scrollTop, v = l.scrollLeft;
66
+ l.scrollTop = L + x, l.scrollLeft = v + S, !(l.scrollTop === L && l.scrollLeft === v) && t.onScrolled(c);
67
+ }
68
+ return o = k() ? n.reducedMaxSpeed : n.maxSpeed, i = requestAnimationFrame(d), f;
69
+ }
70
+ function R(t, r = {}) {
71
+ function n() {
72
+ const e = t.getState();
73
+ if (e.phase !== "dragging" || e.mode !== "keyboard" || !e.over || !e.id) return;
74
+ const s = t.getLayout();
75
+ if (!s) return;
76
+ const o = s.containers.find((m) => m.id === e.over?.container);
77
+ if (!o) return;
78
+ const f = s.items.filter((m) => m.container === o.id && m.id !== e.id), d = f.length === 0 ? o.rect : f[Math.min(e.over.index, f.length - 1)].rect, p = T({
79
+ x: o.rect.left + o.rect.width / 2,
80
+ y: o.rect.top + o.rect.height / 2
81
+ });
82
+ if (!p) return;
83
+ const a = w(p);
84
+ let c = 0;
85
+ d.top < a.top ? c = d.top - a.top : d.bottom > a.bottom && (c = d.bottom - a.bottom);
86
+ let l = 0;
87
+ d.left < a.left ? l = d.left - a.left : d.right > a.right && (l = d.right - a.right), !(l === 0 && c === 0) && (p.scrollTop += c, p.scrollLeft += l, t.remeasure());
88
+ }
89
+ let i = "", u = null;
90
+ const h = t.subscribe(() => {
91
+ const e = t.getState(), s = e.over ? `${e.over.container}:${e.over.index}` : "";
92
+ s !== i && (i = s, n());
93
+ const o = e.phase === "dragging";
94
+ if (o && !u) {
95
+ u = B(
96
+ {
97
+ /* Null for a KEYBOARD drag, which has no cursor to be near an edge —
98
+ the keyboard moves the insertion point directly and reaches the
99
+ viewport through `keepKeyboardTargetVisible` instead. */
100
+ getPoint: () => {
101
+ const f = t.getState();
102
+ return f.phase === "dragging" ? f.point : null;
103
+ },
104
+ onScrolled: (f) => {
105
+ t.remeasure(), t.moveTo(f);
106
+ }
107
+ },
108
+ r
109
+ );
110
+ return;
111
+ }
112
+ !o && u && (u(), u = null);
113
+ });
114
+ return () => {
115
+ h(), u?.();
116
+ };
117
+ }
118
+ export {
119
+ R as attachAutoScroll,
120
+ B as attachEdgeAutoScroll,
121
+ g as scrollVelocity
122
+ };
123
+ //# sourceMappingURL=autoscroll.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"autoscroll.js","sources":["../../../src/lib/dnd/autoscroll.ts"],"sourcesContent":["import { isScrollBox, nearestScrollAncestor } from \"../dom/scroll-ancestor\";\nimport { reducedMotion } from \"../motion\";\nimport type { DragSession } from \"./session\";\nimport type { Point } from \"./types\";\n\n/**\n * Edge auto-scroll: while a card is being carried, a pointer near the edge of\n * the nearest scrollable ancestor scrolls it.\n *\n * WHY IT IS NOT OPTIONAL. Without it a list is only reorderable within one\n * screenful. The target you want is off-screen, the gesture is already in\n * flight, and there is no way to scroll with the hand that is holding the card\n * — so the drag has to be abandoned, the list scrolled, and the drag restarted\n * from a position that may itself now be off-screen.\n *\n * THREE THINGS THAT MAKE IT WORK RATHER THAN MERELY EXIST:\n *\n * 1. SPEED RAMPS with proximity. A single speed is unusable at both ends: fast\n * enough to cross a long column overshoots the moment you approach the\n * edge, slow enough to be controllable never gets anywhere. The ramp is\n * quadratic, so the outer half of the zone crawls and the last few pixels\n * are quick.\n * 2. IT RE-MEASURES. Every rect in the snapshot moves when the container\n * scrolls. Without a remeasure the insertion point keeps pointing at where\n * the items USED to be, so the marker sits still while the list slides past\n * it and the card lands somewhere the user never indicated.\n * 3. IT RE-RESOLVES THE TARGET. Re-measuring alone updates the boxes but not\n * the answer: the pointer has not moved, so nothing recomputes `over`, and\n * the marker stays frozen on the old index against fresh rects. Feeding the\n * unchanged point back through `moveTo` is what makes the insertion point\n * track the content moving beneath a stationary finger.\n *\n * The window `scroll` listener in `sensors/pointer.ts` also remeasures, and is\n * NOT a substitute: scroll events are coalesced and delivered after the frame\n * has been composited, so the hit-test for the frame we just scrolled would\n * still read the pre-scroll snapshot. This loop does it inline, before the next\n * frame is resolved.\n */\n\nexport interface AutoScrollOptions {\n /** Distance from an edge, in px, at which scrolling begins. */\n threshold?: number;\n /** Speed in px/second at the very edge, at full motion. */\n maxSpeed?: number;\n /** Speed in px/second at the very edge under reduced motion. See D-18. */\n reducedMaxSpeed?: number;\n}\n\nconst DEFAULTS: Required<AutoScrollOptions> = {\n /* Wide enough to enter deliberately with a card in hand, narrow enough that\n the middle of a short column is not permanently inside it — below ~48px a\n trackpad user overshoots the zone entirely between two frames. */\n threshold: 64,\n /* Crosses a tall column in well under a second at the very edge, while the\n quadratic ramp keeps the first two thirds of the zone gentle. */\n maxSpeed: 800,\n /* REDUCE MEANS REDUCE, NOT DISABLE (D-18). Zeroing this is the obvious\n reading and it is wrong twice over: it strands every off-screen drop target\n behind a scroll the dragging hand cannot perform, and it does so for\n precisely the users least able to complete a fast repeated gesture instead.\n The peak speed is capped instead — nothing whips past, everything stays\n reachable, and the ramp still gives fine control near the boundary. */\n reducedMaxSpeed: 220,\n};\n\n/**\n * Speed at a given distance from the edge. Exported because it is the whole\n * behaviour and it is the one part testable without a browser.\n *\n * Zero outside the zone, `maxSpeed` at the edge, quadratic in between.\n */\nexport function scrollVelocity(\n distanceFromEdge: number,\n threshold: number,\n maxSpeed: number,\n): number {\n if (distanceFromEdge >= threshold) return 0;\n /* Negative distance means the pointer is PAST the edge — outside the\n container entirely, which happens constantly while carrying a card toward\n a neighbouring column. Clamping to full speed rather than letting the ramp\n run past 1 keeps it from accelerating without limit the further out it\n goes. */\n const proximity = Math.min(1, Math.max(0, (threshold - distanceFromEdge) / threshold));\n return maxSpeed * proximity * proximity;\n}\n\n/* A box auto-scroll can actually move: it declares scrolling on an axis AND overflows on it. */\nconst SCROLLABLE = { axes: [\"y\", \"x\"], mustOverflow: true } as const;\n\n/**\n * The nearest scrollable ancestor of whatever is under the pointer, falling\n * back to the document.\n *\n * Resolved per frame rather than once at pickup because a card carried from one\n * column to another changes scroller mid-gesture, and a scroller cached at\n * pickup then scrolls the column the card has already left.\n *\n * NOTE FOR THE FLOATING CLONE: `elementFromPoint` returns the TOPMOST element,\n * so a clone rendered under the cursor without `pointer-events: none` is what\n * this finds — and its ancestor chain is the body, not the column, so\n * auto-scroll silently stops working the day the clone lands.\n */\nfunction scrollerAt(point: Point): HTMLElement | null {\n const found = nearestScrollAncestor(document.elementFromPoint(point.x, point.y), {\n ...SCROLLABLE,\n includeSelf: true,\n });\n if (found) return found;\n const root = document.scrollingElement;\n return root instanceof HTMLElement && isScrollBox(root, SCROLLABLE) ? root : null;\n}\n\n/**\n * The scroller's edges in VIEWPORT coordinates.\n *\n * The document scroller needs its own case: `<html>`'s box is the whole\n * document, hundreds of pixels of which are off-screen, so its \"bottom edge\" is\n * nowhere near the bottom of the screen and page-level auto-scroll would never\n * trigger.\n */\nfunction viewportRect(el: HTMLElement): { top: number; left: number; right: number; bottom: number } {\n if (el === document.scrollingElement) {\n return { top: 0, left: 0, right: window.innerWidth, bottom: window.innerHeight };\n }\n const r = el.getBoundingClientRect();\n return { top: r.top, left: r.left, right: r.right, bottom: r.bottom };\n}\n\n/**\n * Start auto-scrolling for the lifetime of every drag on this session.\n * Returns the teardown.\n *\n * Framework-free on purpose, like the rest of the core — a React consumer wraps\n * it in one `useEffect`, and the tests do not need a renderer to drive it.\n */\n/**\n * What the loop needs from whoever is dragging.\n *\n * EXTRACTED SO THE CALENDAR CAN USE IT UNCHANGED. Every hard-won detail below —\n * the carried sub-pixel remainder, the clamped frame delta, the per-scroller\n * reset, the reduced-motion cap — is about SCROLLING, not about lists, and a\n * second copy of it in the calendar would be a second copy of the one thing\n * whose failures are invisible (a ramp that silently loses its outer half is\n * not something anyone notices; it just feels bad).\n */\nexport interface AutoScrollDriver {\n /** The pointer, or null when the gesture has no pointer (a keyboard drag). */\n getPoint: () => Point | null;\n /**\n * The content moved under a pointer that did not.\n *\n * RE-FEEDING THE POINT IS THE WHOLE REASON THIS CALLBACK EXISTS. Remeasuring\n * alone updates the boxes and not the ANSWER: the pointer has not moved, so\n * nothing recomputes what it is over, and the drag freezes mid-scroll.\n * FullCalendar solves the same problem by re-emitting a synthetic\n * `pointermove` on scroll — the same fix arrived at from the other side.\n */\n onScrolled: (point: Point) => void;\n}\n\n/** The loop, driven by anything that can answer those two questions. */\nexport function attachEdgeAutoScroll(\n driver: AutoScrollDriver,\n options: AutoScrollOptions = {},\n): () => void {\n /* PER KEY, NOT A SPREAD. `{...DEFAULTS, ...options}` lets a key that is\n PRESENT AND UNDEFINED overwrite its default — and `{threshold: undefined}`\n is what a caller writes without noticing, forwarding an optional prop. The\n result is not a fallback to the default: every speed becomes NaN, nothing\n scrolls, and there is no error anywhere to find. It cost the first consumer\n of this module a debugging round; `??` makes it unreachable. */\n const cfg: Required<AutoScrollOptions> = {\n threshold: options.threshold ?? DEFAULTS.threshold,\n maxSpeed: options.maxSpeed ?? DEFAULTS.maxSpeed,\n reducedMaxSpeed: options.reducedMaxSpeed ?? DEFAULTS.reducedMaxSpeed,\n };\n let frame: number | null = null;\n let last = 0;\n /**\n * Fractional scroll owed but not yet applied.\n *\n * MEASURED, NOT DEFENSIVE. Chrome ROUNDS every `scrollTop` assignment to a\n * whole pixel and discards the remainder: writing `scrollTop + 0.2` five\n * times leaves the element at 0, and `+ 0.6` five times leaves it at 5.\n * Without carrying the remainder across frames, every speed below ~30px/s\n * scrolls NOTHING AT ALL — which is the outer half of a quadratic ramp, so\n * the zone silently shrinks to its fastest third and the fine control the\n * ramp exists to provide does not exist. The bug is invisible to arithmetic:\n * `scrollVelocity` returns the right number and the browser throws it away.\n */\n let owedX = 0;\n let owedY = 0;\n /* Owed pixels belong to the scroller they were computed against. Carrying\n them into the next column as a card crosses the board applies one column's\n remainder to another. */\n let lastScroller: HTMLElement | null = null;\n /* Resolved once per drag rather than per frame: a preference cannot\n meaningfully change mid-gesture, and `getComputedStyle` on the root element\n every frame is a forced style recalculation inside the one loop that must\n not drop a frame. */\n let maxSpeed = cfg.maxSpeed;\n\n function stop(): void {\n if (frame !== null) cancelAnimationFrame(frame);\n frame = null;\n last = 0;\n owedX = 0;\n owedY = 0;\n lastScroller = null;\n }\n\n function tick(now: number): void {\n frame = requestAnimationFrame(tick);\n /* Clamped, because a tab restored from the background delivers one frame\n with a gap of seconds — an unclamped delta then scrolls the column its\n entire length in a single step. */\n const dt = last ? Math.min(64, now - last) : 16;\n last = now;\n\n /* A gesture with no pointer — a keyboard drag — has no edge to be near, and\n the driver says so by answering null. */\n const point = driver.getPoint();\n if (!point) return;\n\n const scroller = scrollerAt(point);\n if (!scroller) return;\n if (scroller !== lastScroller) {\n owedX = 0;\n owedY = 0;\n lastScroller = scroller;\n }\n const box = viewportRect(scroller);\n\n const dy =\n scrollVelocity(point.y - box.top, cfg.threshold, maxSpeed) * -1 +\n scrollVelocity(box.bottom - point.y, cfg.threshold, maxSpeed);\n const dx =\n scrollVelocity(point.x - box.left, cfg.threshold, maxSpeed) * -1 +\n scrollVelocity(box.right - point.x, cfg.threshold, maxSpeed);\n if (dx === 0 && dy === 0) return;\n\n owedY += (dy * dt) / 1000;\n owedX += (dx * dt) / 1000;\n /* Whole pixels only, remainder carried — see `owedY` above. `trunc` rather\n than `round` so the carry is always toward zero and a slow ramp never\n overshoots by half a pixel per frame in the direction of travel. */\n const stepY = Math.trunc(owedY);\n const stepX = Math.trunc(owedX);\n if (stepX === 0 && stepY === 0) return;\n owedY -= stepY;\n owedX -= stepX;\n\n const beforeTop = scroller.scrollTop;\n const beforeLeft = scroller.scrollLeft;\n scroller.scrollTop = beforeTop + stepY;\n scroller.scrollLeft = beforeLeft + stepX;\n /* Already at the end. Remeasuring here would cost a full layout pass per\n frame for a snapshot that cannot have changed — and the pointer resting\n against the bottom of a fully-scrolled column is the steady state, not\n the exception. */\n if (scroller.scrollTop === beforeTop && scroller.scrollLeft === beforeLeft) return;\n\n /* The pointer has not moved; the CONTENT has. See `onScrolled`. */\n driver.onScrolled(point);\n }\n\n /* Started immediately: this function is attached only for the duration of a\n gesture, by whoever is running that gesture. Resolving the reduced-motion\n cap ONCE here rather than per frame keeps a forced style recalculation out\n of the one loop that must not drop a frame. */\n maxSpeed = reducedMotion() ? cfg.reducedMaxSpeed : cfg.maxSpeed;\n frame = requestAnimationFrame(tick);\n return stop;\n}\n\n/**\n * The list engine's adapter: drive the edge loop from a `DragSession`, and add\n * the keyboard-only behaviour the pointer ramp cannot reach.\n */\nexport function attachAutoScroll(\n session: DragSession,\n options: AutoScrollOptions = {},\n): () => void {\n /**\n * Keep the KEYBOARD insertion point on screen.\n *\n * MEASURED, NOT ANTICIPATED: eleven Down presses in a column of twelve left\n * the insertion marker 324px below the visible area with the column never\n * scrolling, because nothing in the pointer path applies — there is no cursor\n * to be near an edge, so the edge ramp above is structurally unreachable from\n * the keyboard. The result is a mode that works perfectly for the first few\n * items of a list and then silently moves a card to a position its user\n * cannot see, which is the exact class of failure the keyboard path exists to\n * avoid.\n *\n * A JUMP, NOT A SMOOTH SCROLL. Each keypress is a discrete step and the user\n * is waiting on it; a 300ms animated scroll per press falls behind a held\n * arrow key immediately, and it is unrequested large-scale motion for a user\n * who may have asked for less of it.\n */\n function keepKeyboardTargetVisible(): void {\n const s = session.getState();\n if (s.phase !== \"dragging\" || s.mode !== \"keyboard\" || !s.over || !s.id) return;\n const layout = session.getLayout();\n if (!layout) return;\n const container = layout.containers.find((c) => c.id === s.over?.container);\n if (!container) return;\n\n /* The box the insertion point sits AGAINST. At the end of the list there is\n no item at that index, so the anchor is the last one — the marker sits\n just after it either way. An empty container anchors on itself. */\n const rest = layout.items.filter((i) => i.container === container.id && i.id !== s.id);\n const anchor =\n rest.length === 0\n ? container.rect\n : rest[Math.min(s.over.index, rest.length - 1)].rect;\n\n /* Hit-tested at the CONTAINER's centre, not the anchor's: the anchor is by\n definition the thing that may be off-screen, and `elementFromPoint`\n returns null outside the viewport. */\n const scroller = scrollerAt({\n x: container.rect.left + container.rect.width / 2,\n y: container.rect.top + container.rect.height / 2,\n });\n if (!scroller) return;\n const box = viewportRect(scroller);\n\n let dy = 0;\n if (anchor.top < box.top) dy = anchor.top - box.top;\n else if (anchor.bottom > box.bottom) dy = anchor.bottom - box.bottom;\n let dx = 0;\n if (anchor.left < box.left) dx = anchor.left - box.left;\n else if (anchor.right > box.right) dx = anchor.right - box.right;\n if (dx === 0 && dy === 0) return;\n\n scroller.scrollTop += dy;\n scroller.scrollLeft += dx;\n /* Every rect just moved. `remeasure` does not emit, so this cannot re-enter\n through the subscription that called it. */\n session.remeasure();\n }\n\n let lastOver = \"\";\n let detach: (() => void) | null = null;\n\n const unsubscribe = session.subscribe(() => {\n const state = session.getState();\n const overKey = state.over ? `${state.over.container}:${state.over.index}` : \"\";\n if (overKey !== lastOver) {\n lastOver = overKey;\n keepKeyboardTargetVisible();\n }\n const dragging = state.phase === \"dragging\";\n if (dragging && !detach) {\n detach = attachEdgeAutoScroll(\n {\n /* Null for a KEYBOARD drag, which has no cursor to be near an edge —\n the keyboard moves the insertion point directly and reaches the\n viewport through `keepKeyboardTargetVisible` instead. */\n getPoint: () => {\n const s2 = session.getState();\n return s2.phase === \"dragging\" ? s2.point : null;\n },\n onScrolled: (point) => {\n session.remeasure();\n session.moveTo(point);\n },\n },\n options,\n );\n return;\n }\n /* Covers drop AND cancel: both land the session back in `idle`, and a loop\n that outlives its gesture goes on scrolling the page under a cursor that\n is no longer carrying anything. */\n if (!dragging && detach) {\n detach();\n detach = null;\n }\n });\n\n return () => {\n unsubscribe();\n detach?.();\n };\n}\n"],"names":["DEFAULTS","scrollVelocity","distanceFromEdge","threshold","maxSpeed","proximity","SCROLLABLE","scrollerAt","point","found","nearestScrollAncestor","root","isScrollBox","viewportRect","el","attachEdgeAutoScroll","driver","options","cfg","frame","last","owedX","owedY","lastScroller","stop","tick","now","dt","scroller","box","dy","dx","stepY","stepX","beforeTop","beforeLeft","reducedMotion","attachAutoScroll","session","keepKeyboardTargetVisible","s","layout","container","c","rest","i","anchor","lastOver","detach","unsubscribe","state","overKey","dragging","s2"],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ function l(n, r, e) {
2
+ return n === "lane" && r != null && e != null && r !== e;
3
+ }
4
+ function u(n, r) {
5
+ return n.phase !== "dragging" || n.over?.container !== r ? null : n.from?.container === r ? "own" : "other";
6
+ }
7
+ export {
8
+ u as heldOver,
9
+ l as isLaneDrop
10
+ };
11
+ //# sourceMappingURL=cross-drop.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cross-drop.js","sources":["../../../src/lib/dnd/cross-drop.ts"],"sourcesContent":["/**\n * DX-4583: the one place that says what \"a card dropped on another lane\" means,\n * so the drop, the highlight, the banner, the gap and the keyboard cannot drift\n * into four spellings of the same predicate.\n */\n\nimport type { ContainerId, CrossDrop, DragState } from \"./types\";\n\n/**\n * True when a card carried from `from` into `to` lands there as a whole: the\n * destination takes a lane drop and it is not the card's own container. A card\n * carried inside its own container is always positional.\n */\nexport function isLaneDrop(\n crossDrop: CrossDrop | undefined,\n from: ContainerId | null | undefined,\n to: ContainerId | null | undefined,\n): boolean {\n return crossDrop === \"lane\" && from != null && to != null && from !== to;\n}\n\n/**\n * Whose card is held over `container` right now: `\"own\"` when it was picked up\n * from there, `\"other\"` when it came from another container, `null` when no card\n * is held over it.\n */\nexport function heldOver(state: DragState, container: ContainerId): \"own\" | \"other\" | null {\n if (state.phase !== \"dragging\" || state.over?.container !== container) return null;\n return state.from?.container === container ? \"own\" : \"other\";\n}\n"],"names":["isLaneDrop","crossDrop","from","to","heldOver","state","container"],"mappings":"AAaO,SAASA,EACdC,GACAC,GACAC,GACS;AACT,SAAOF,MAAc,UAAUC,KAAQ,QAAQC,KAAM,QAAQD,MAASC;AACxE;AAOO,SAASC,EAASC,GAAkBC,GAAgD;AACzF,SAAID,EAAM,UAAU,cAAcA,EAAM,MAAM,cAAcC,IAAkB,OACvED,EAAM,MAAM,cAAcC,IAAY,QAAQ;AACvD;"}
@@ -0,0 +1,99 @@
1
+ function M(n, t, r = []) {
2
+ const e = [...t], o = new Map(e.map((i) => [i.id, i.axis])), c = [];
3
+ for (const i of n) {
4
+ const s = {
5
+ id: i.id,
6
+ container: i.container,
7
+ index: i.index,
8
+ rect: i.element.getBoundingClientRect()
9
+ };
10
+ if (i.group !== void 0) {
11
+ s.group = i.group, s.piece = i.piece;
12
+ const l = d(i.element, o.get(i.container) ?? "y");
13
+ l !== null && (s.marginEnd = l);
14
+ }
15
+ c.push(s);
16
+ }
17
+ c.sort(
18
+ (i, s) => i.container === s.container ? i.index - s.index : i.container < s.container ? -1 : 1
19
+ );
20
+ const u = [];
21
+ for (const i of e)
22
+ u.push({
23
+ id: i.id,
24
+ axis: i.axis,
25
+ crossDrop: i.crossDrop,
26
+ rect: i.element.getBoundingClientRect()
27
+ });
28
+ const a = [];
29
+ for (const i of r)
30
+ a.push({ id: i.id, piece: i.piece, container: i.container, rect: i.element.getBoundingClientRect() });
31
+ return { items: c, containers: u, groups: a };
32
+ }
33
+ function d(n, t) {
34
+ const r = getComputedStyle(n), e = Number.parseFloat(t === "y" ? r.marginBottom : r.marginRight);
35
+ return Number.isFinite(e) ? e : null;
36
+ }
37
+ function g(n, t) {
38
+ return t.x >= n.left && t.x <= n.right && t.y >= n.top && t.y <= n.bottom;
39
+ }
40
+ function f(n) {
41
+ return Math.max(0, n.width) * Math.max(0, n.height);
42
+ }
43
+ function m(n, t) {
44
+ let r = null;
45
+ for (const e of n.containers)
46
+ g(e.rect, t) && (!r || f(e.rect) < f(r.rect)) && (r = e);
47
+ return r;
48
+ }
49
+ function x(n, t) {
50
+ const r = Math.max(n.left - t.x, 0, t.x - n.right), e = Math.max(n.top - t.y, 0, t.y - n.bottom);
51
+ return Math.hypot(r, e);
52
+ }
53
+ function h(n, t) {
54
+ let r = null, e = 1 / 0;
55
+ for (const o of n.containers) {
56
+ const c = x(o.rect, t);
57
+ c > e + 1e-3 || (c < e - 1e-3 || r === null || f(o.rect) < f(r.rect)) && (r = o, e = c);
58
+ }
59
+ return r;
60
+ }
61
+ function p(n, t, r) {
62
+ return n.items.filter(
63
+ (e) => e.container === t && e.id !== r
64
+ );
65
+ }
66
+ function y(n, t, r, e) {
67
+ const o = p(n, t.id, e), c = t.axis === "x" ? r.x : r.y;
68
+ for (let u = 0; u < o.length; u++) {
69
+ const a = o[u].rect, i = t.axis === "x" ? a.left + a.width / 2 : a.top + a.height / 2;
70
+ if (c < i) return u;
71
+ }
72
+ return o.length;
73
+ }
74
+ function C(n, t, r) {
75
+ const e = m(n, t) ?? h(n, t);
76
+ return e ? { container: e.id, index: y(n, e, t, r) } : null;
77
+ }
78
+ function v(n, t) {
79
+ return n === t ? !0 : !n || !t ? !1 : n.container === t.container && n.index === t.index;
80
+ }
81
+ function B(n, t) {
82
+ return n.container !== t.container ? !1 : t.index === n.index;
83
+ }
84
+ function R(n, t, r) {
85
+ const e = n.slice(), [o] = e.splice(t, 1);
86
+ return e.splice(r, 0, o), e;
87
+ }
88
+ export {
89
+ R as applyMove,
90
+ m as containerAt,
91
+ y as indexAt,
92
+ B as isNoOp,
93
+ M as measure,
94
+ h as nearestContainer,
95
+ p as remainingItems,
96
+ C as resolveTarget,
97
+ v as sameTarget
98
+ };
99
+ //# sourceMappingURL=geometry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"geometry.js","sources":["../../../src/lib/dnd/geometry.ts"],"sourcesContent":["import type {\n ContainerRect,\n ContainerRegistration,\n DragId,\n DropTarget,\n GroupRect,\n GroupRegistration,\n ItemRect,\n ItemRegistration,\n LayoutSnapshot,\n Point,\n} from \"./types\";\n\n/**\n * Measuring and hit-testing. Pure functions over a snapshot — no DOM reads\n * except in `measure`, and no state at all, so every rule here is testable\n * against hand-written rectangles rather than a browser.\n */\n\n/**\n * Take every box at once.\n *\n * Items are emitted in container-then-index order so `resolveTarget` can walk\n * them without re-sorting on every move. Registration order is whatever React\n * mounted in, which is not the reading order once a list re-renders.\n */\nexport function measure(\n items: Iterable<ItemRegistration>,\n containers: Iterable<ContainerRegistration>,\n groups: Iterable<GroupRegistration> = [],\n): LayoutSnapshot {\n const registered = [...containers];\n const axisOf = new Map(registered.map((c) => [c.id, c.axis]));\n const measuredItems: ItemRect[] = [];\n for (const it of items) {\n const measured: ItemRect = {\n id: it.id,\n container: it.container,\n index: it.index,\n rect: it.element.getBoundingClientRect(),\n };\n /* Only a grouped item is read for its trailing margin: a loose item's is the container's usual spacing. */\n if (it.group !== undefined) {\n measured.group = it.group;\n measured.piece = it.piece;\n const marginEnd = trailingMargin(it.element, axisOf.get(it.container) ?? \"y\");\n if (marginEnd !== null) measured.marginEnd = marginEnd;\n }\n measuredItems.push(measured);\n }\n measuredItems.sort((a, b) =>\n a.container === b.container\n ? a.index - b.index\n : a.container < b.container\n ? -1\n : 1,\n );\n\n const measuredContainers: ContainerRect[] = [];\n for (const c of registered) {\n measuredContainers.push({\n id: c.id,\n axis: c.axis,\n crossDrop: c.crossDrop,\n rect: c.element.getBoundingClientRect(),\n });\n }\n const measuredGroups: GroupRect[] = [];\n for (const g of groups) {\n measuredGroups.push({ id: g.id, piece: g.piece, container: g.container, rect: g.element.getBoundingClientRect() });\n }\n return { items: measuredItems, containers: measuredContainers, groups: measuredGroups };\n}\n\n/**\n * DX-5522: the margin an item leaves after itself on its container's axis, in px, or null when the engine cannot read one\n * (no layout engine). The first item of a pair is followed by the container's usual spacing; the last item of a group box\n * is followed by none, and a marker drawn after it is placed by the difference.\n */\nfunction trailingMargin(element: HTMLElement, axis: \"x\" | \"y\"): number | null {\n const style = getComputedStyle(element);\n const value = Number.parseFloat(axis === \"y\" ? style.marginBottom : style.marginRight);\n return Number.isFinite(value) ? value : null;\n}\n\nfunction contains(rect: DOMRect, p: Point): boolean {\n return (\n p.x >= rect.left && p.x <= rect.right && p.y >= rect.top && p.y <= rect.bottom\n );\n}\n\nfunction area(rect: DOMRect): number {\n return Math.max(0, rect.width) * Math.max(0, rect.height);\n}\n\n/**\n * The container under the pointer.\n *\n * SMALLEST AREA WINS, because containers nest: a board is a horizontal\n * container of columns, and each column is a vertical container of cards. The\n * pointer is inside both at all times, and the answer that is useful is always\n * the innermost one.\n */\nexport function containerAt(\n snapshot: LayoutSnapshot,\n point: Point,\n): ContainerRect | null {\n let best: ContainerRect | null = null;\n for (const c of snapshot.containers) {\n if (!contains(c.rect, point)) continue;\n if (!best || area(c.rect) < area(best.rect)) best = c;\n }\n return best;\n}\n\n/** Shortest distance from a point to a rectangle. Zero when inside it. */\nfunction distanceTo(rect: DOMRect, p: Point): number {\n const dx = Math.max(rect.left - p.x, 0, p.x - rect.right);\n const dy = Math.max(rect.top - p.y, 0, p.y - rect.bottom);\n return Math.hypot(dx, dy);\n}\n\n/**\n * The container CLOSEST to the pointer, for a pointer that is inside none of\n * them.\n *\n * THE DEAD ZONE IS THE BUG THIS EXISTS FOR, AND IT IS MOST OF A BOARD. The\n * registered container is the SCROLLER — it has to be, so auto-scroll can find\n * its edges — and on a kanban lane the scroller is only the card list. The lane\n * header above it, the lane's own border, the gutter between two lanes and the\n * board's bottom padding are all outside every registered rect, so a pointer\n * there is \"over no container\" while being unmistakably over a lane to the\n * person holding the card.\n *\n * What used to happen there was `resolveTarget` returning null and the session\n * keeping the PREVIOUS target — so a card dragged from lane 1 and released on\n * lane 3's header landed in lane 2, the lane the pointer had last crossed on\n * its way. Measured in the demo before this change: released at (1022, 419),\n * visually the middle of \"Review\" whose lane box is 878–1166 × 407–939, the\n * card landed in \"Building\". Not an edge case — the header is 60px of every\n * lane's top, and a person aiming at an empty lane aims at its label.\n *\n * SCOPED, so \"nearest\" cannot mean \"somewhere else entirely\": the snapshot\n * holds one `DragDrop` root's own containers and nothing else — every root\n * builds its own `DragSession` (`use-drag.ts`) with its own registry. The\n * nearest container to a point over the sidebar is still a lane of the board\n * being dragged, which is the only answer a release can sensibly have.\n *\n * TIES GO TO THE SMALLER BOX, matching `containerAt` — a point in the gutter\n * between two lanes is equidistant from both, and a nested container is the\n * more specific answer for the same reason it is there.\n */\nexport function nearestContainer(\n snapshot: LayoutSnapshot,\n point: Point,\n): ContainerRect | null {\n let best: ContainerRect | null = null;\n let bestDistance = Infinity;\n for (const c of snapshot.containers) {\n const distance = distanceTo(c.rect, point);\n if (distance > bestDistance + 0.001) continue;\n if (\n distance < bestDistance - 0.001 ||\n best === null ||\n area(c.rect) < area(best.rect)\n ) {\n best = c;\n bestDistance = distance;\n }\n }\n return best;\n}\n\n/** A container's items in reading order, excluding the one being carried. */\nexport function remainingItems(\n snapshot: LayoutSnapshot,\n container: string,\n dragged: DragId | null,\n): ItemRect[] {\n return snapshot.items.filter(\n (i) => i.container === container && i.id !== dragged,\n );\n}\n\n/**\n * Insertion index for a point within one container.\n *\n * THE MIDPOINT RULE: insert before the first remaining item whose centre lies\n * beyond the pointer on the container's axis; after all of them otherwise. This\n * is the rule the dashboard's implementation already uses and it is the right\n * one for lists — the insertion point tracks the cursor rather than the item's\n * leading edge, so a card released halfway over a neighbour lands on the side\n * the user is actually pointing at.\n *\n * The returned index counts the list WITHOUT the dragged item, which is what\n * makes same-container and cross-container drops identical arithmetic. See the\n * header of `types.ts`.\n */\nexport function indexAt(\n snapshot: LayoutSnapshot,\n container: ContainerRect,\n point: Point,\n dragged: DragId | null,\n): number {\n const rest = remainingItems(snapshot, container.id, dragged);\n const along = container.axis === \"x\" ? point.x : point.y;\n for (let i = 0; i < rest.length; i++) {\n const r = rest[i].rect;\n const mid = container.axis === \"x\" ? r.left + r.width / 2 : r.top + r.height / 2;\n if (along < mid) return i;\n }\n return rest.length;\n}\n\n/**\n * Where the dragged item would land if released at `point`.\n *\n * THE POINTER IS OVER THE CONTAINER IT IS NEAREST TO, not only the one whose\n * rectangle happens to hold it. Both halves of that matter and the second one\n * is the fix:\n *\n * The goal has always been that dragging a card briefly outside the board must\n * not make the insertion marker vanish, and that a release outside every\n * container still lands somewhere rather than reading as a silently failed\n * drag. That was served by returning null here and having the session keep the\n * PREVIOUS target — which achieves \"the marker does not blink out\" and gets\n * \"lands where you are pointing\" exactly backwards. The gap between two lanes,\n * a lane's header, a lane's border and the board's own bottom padding are all\n * outside every registered rect; a release in any of them landed the card in\n * the last lane the pointer had crossed, which for a drag from lane 1 to lane 3\n * is lane 2. See `nearestContainer` for the measurement.\n *\n * Nearest keeps the marker alive for the same reason last-target did, and puts\n * it where the person is aiming rather than where they have been.\n *\n * STILL NULL FOR A BOARD WITH NO CONTAINERS AT ALL — there is no nearest one,\n * and the session's `?? s.over` remains the guard for that.\n *\n * The index then falls out of `indexAt` without a special case: a point above a\n * lane is before every card in it, a point below is after all of them.\n */\nexport function resolveTarget(\n snapshot: LayoutSnapshot,\n point: Point,\n dragged: DragId | null,\n): DropTarget | null {\n const container = containerAt(snapshot, point) ?? nearestContainer(snapshot, point);\n if (!container) return null;\n return { container: container.id, index: indexAt(snapshot, container, point, dragged) };\n}\n\n/** Value equality — targets are recreated on every move, so `===` is useless. */\nexport function sameTarget(a: DropTarget | null, b: DropTarget | null): boolean {\n if (a === b) return true;\n if (!a || !b) return false;\n return a.container === b.container && a.index === b.index;\n}\n\n/**\n * Would releasing at `to` leave the item exactly where it started?\n *\n * Worth stating rather than inlining, because the two indices are counted\n * against DIFFERENT lists: `from.index` is the item's position with itself\n * present, `to.index` an insertion point with itself removed. They coincide at\n * exactly one value. For `[A, B, C, D]` carrying `C` (`from.index` 2), the\n * remaining list is `[A, B, D]` and inserting at 2 rebuilds `[A, B, C, D]` —\n * so equality of the two numbers IS the no-op, and every other pair moves\n * something.\n *\n * A consumer that skips this writes on every release, including the ones that\n * change nothing. That is not free: the dashboard's board reordered by writing\n * a priority decimal, so a no-op release still cost a request, a re-render and\n * a row in the audit log.\n */\nexport function isNoOp(from: DropTarget, to: DropTarget): boolean {\n if (from.container !== to.container) return false;\n return to.index === from.index;\n}\n\n/**\n * Convert a `DropTarget` into the array operation a consumer performs.\n *\n * Exported because every consumer needs it and each one getting it subtly wrong\n * is the entire off-by-one bug class this module exists to remove. Returns a\n * NEW array; the input is untouched.\n */\nexport function applyMove<T>(\n list: readonly T[],\n fromIndex: number,\n toIndex: number,\n): T[] {\n const next = list.slice();\n const [moved] = next.splice(fromIndex, 1);\n next.splice(toIndex, 0, moved);\n return next;\n}\n"],"names":["measure","items","containers","groups","registered","axisOf","c","measuredItems","it","measured","marginEnd","trailingMargin","a","b","measuredContainers","measuredGroups","g","element","axis","style","value","contains","rect","p","area","containerAt","snapshot","point","best","distanceTo","dx","dy","nearestContainer","bestDistance","distance","remainingItems","container","dragged","i","indexAt","rest","along","r","mid","resolveTarget","sameTarget","isNoOp","from","to","applyMove","list","fromIndex","toIndex","next","moved"],"mappings":"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"}
@@ -0,0 +1,86 @@
1
+ const g = {
2
+ /* 5px is below the travel of a deliberate click on every pointing device
3
+ tested by the platforms that publish a figure, and above the jitter of a
4
+ hand resting on a trackpad. */
5
+ distance: 5,
6
+ /* 250ms is the shortest dwell that reads as deliberate. Below ~200ms it fires
7
+ during fast scrolling; above ~400ms the control feels broken before it
8
+ responds. FullCalendar's 1000ms is widely complained about. */
9
+ delay: 250,
10
+ /* 8px of finger travel during the press is unavoidable and must not cancel;
11
+ more than that is a scroll. */
12
+ tolerance: 8
13
+ };
14
+ function x(u, i, E = {}) {
15
+ const d = { ...g, ...E.activation };
16
+ let r = null, t = null, l = null, c = null, a = !1;
17
+ const f = (e) => ({ x: e.clientX, y: e.clientY });
18
+ function P() {
19
+ l !== null && (window.clearTimeout(l), l = null);
20
+ }
21
+ function T() {
22
+ c || (c = (e) => {
23
+ e.cancelable && e.preventDefault();
24
+ }, document.addEventListener("touchmove", c, { passive: !1 }));
25
+ }
26
+ function y() {
27
+ c && (document.removeEventListener("touchmove", c), c = null);
28
+ }
29
+ function C() {
30
+ document.addEventListener("pointermove", m), document.addEventListener("pointerup", w), document.addEventListener("pointercancel", L);
31
+ }
32
+ function h() {
33
+ document.removeEventListener("pointermove", m), document.removeEventListener("pointerup", w), document.removeEventListener("pointercancel", L);
34
+ }
35
+ function s() {
36
+ P(), y(), h(), t !== null && u.hasPointerCapture(t) && u.releasePointerCapture(t), t = null, r = null, a = !1;
37
+ }
38
+ function p(e) {
39
+ a = !0, t !== null && u.setPointerCapture(t), i.onActivate(e);
40
+ }
41
+ function I() {
42
+ const e = (o) => {
43
+ o.stopPropagation(), o.preventDefault(), n();
44
+ }, n = () => {
45
+ document.removeEventListener("click", e, { capture: !0 }), document.removeEventListener("pointerdown", n, { capture: !0 });
46
+ };
47
+ document.addEventListener("click", e, { capture: !0 }), document.addEventListener("pointerdown", n, { capture: !0 }), window.setTimeout(n, 0);
48
+ }
49
+ function v(e) {
50
+ if (e.button !== 0 || t !== null) return;
51
+ const n = f(e);
52
+ i.onPress && i.onPress(n, e) === !1 || (t = e.pointerId, r = n, a = !1, C(), e.pointerType === "touch" && (l = window.setTimeout(() => {
53
+ l = null, T(), r && p(r);
54
+ }, d.delay)));
55
+ }
56
+ function m(e) {
57
+ if (e.pointerId !== t || !r) return;
58
+ const n = f(e);
59
+ if (!a) {
60
+ const o = Math.hypot(n.x - r.x, n.y - r.y);
61
+ if (e.pointerType === "touch") {
62
+ o > d.tolerance && (s(), i.onCancel());
63
+ return;
64
+ }
65
+ if (o < d.distance) return;
66
+ p(n);
67
+ }
68
+ e.cancelable && e.preventDefault(), i.onMove(n);
69
+ }
70
+ function w(e) {
71
+ if (e.pointerId !== t) return;
72
+ const n = f(e), o = a;
73
+ s(), o && I(), i.onRelease(n, o);
74
+ }
75
+ function L(e) {
76
+ e.pointerId === t && (s(), i.onCancel());
77
+ }
78
+ return u.addEventListener("pointerdown", v), () => {
79
+ s(), u.removeEventListener("pointerdown", v);
80
+ };
81
+ }
82
+ export {
83
+ g as ACTIVATION_DEFAULTS,
84
+ x as attachPointerGesture
85
+ };
86
+ //# sourceMappingURL=gesture.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gesture.js","sources":["../../../../src/lib/dnd/sensors/gesture.ts"],"sourcesContent":["import type { Point } from \"../types\";\n\n/* ============================================================================\n THE POINTER GESTURE, WITH NO OPINION ABOUT WHAT IT IS DRAGGING.\n\n WHY THIS IS ITS OWN FILE. Two consumers now need the same input handling —\n the list engine, which drops an item between siblings, and the calendar,\n which moves an event to a time. Their TARGET MODELS have nothing in common: a\n list target is `{container, index}` resolved from the midpoints of sibling\n items; a calendar target is `{day, minutes}` read off a fixed grid and\n dependent on no other event at all.\n\n Their INPUT handling is identical, and it is the part that was expensive to\n get right: activation constants tuned against real devices, pointer capture,\n and the touch mechanism below. Duplicating that would leave two copies of the\n one thing most likely to rot — and the touch guard in particular is invisible\n until someone tries the calendar on a phone, which is exactly when nobody is\n watching.\n\n So: ONE input layer, two target models. This file is the input layer. It\n knows about pointers, timers and capture; it does not know what a drop is.\n ========================================================================= */\n\nexport interface PointerActivation {\n /** Mouse and pen: travel in px before the drag starts. */\n distance?: number;\n /** Touch: press duration in ms before the drag starts. */\n delay?: number;\n /** Touch: travel in px that abandons the press as a scroll instead. */\n tolerance?: number;\n}\n\nexport const ACTIVATION_DEFAULTS: Required<PointerActivation> = {\n /* 5px is below the travel of a deliberate click on every pointing device\n tested by the platforms that publish a figure, and above the jitter of a\n hand resting on a trackpad. */\n distance: 5,\n /* 250ms is the shortest dwell that reads as deliberate. Below ~200ms it fires\n during fast scrolling; above ~400ms the control feels broken before it\n responds. FullCalendar's 1000ms is widely complained about. */\n delay: 250,\n /* 8px of finger travel during the press is unavoidable and must not cancel;\n more than that is a scroll. */\n tolerance: 8,\n};\n\nexport interface GestureHandlers {\n /**\n * The pointer went down. Return false to refuse the gesture outright — a\n * disabled row, a click on a button inside the card.\n */\n onPress?: (point: Point, event: PointerEvent) => boolean | void;\n /** The activation constraint was satisfied. The drag is now live. */\n onActivate: (point: Point) => void;\n /** Only ever called between `onActivate` and one of the two enders. */\n onMove: (point: Point) => void;\n /** Released. `activated` distinguishes a drop from a plain click. */\n onRelease: (point: Point, activated: boolean) => void;\n /** The gesture was abandoned — a `pointercancel`, or a touch that scrolled. */\n onCancel: () => void;\n}\n\nexport interface GestureOptions {\n activation?: PointerActivation;\n}\n\n/**\n * Wire an element as a drag handle. Returns the teardown.\n *\n * The listeners live on the ELEMENT, not the document, and the element takes\n * pointer capture at `pointerdown` — so every subsequent move and the release\n * are delivered here even when the pointer leaves the element, which it does\n * immediately and for the entire gesture.\n */\nexport function attachPointerGesture(\n element: HTMLElement,\n handlers: GestureHandlers,\n options: GestureOptions = {},\n): () => void {\n const cfg = { ...ACTIVATION_DEFAULTS, ...options.activation };\n\n let origin: Point | null = null;\n let activePointer: number | null = null;\n let delayTimer: number | null = null;\n let scrollGuard: ((e: TouchEvent) => void) | null = null;\n let activated = false;\n\n const pointOf = (e: PointerEvent): Point => ({ x: e.clientX, y: e.clientY });\n\n function clearTimer(): void {\n if (delayTimer !== null) {\n window.clearTimeout(delayTimer);\n delayTimer = null;\n }\n }\n\n /**\n * Take the gesture back from the browser for the rest of this touch.\n *\n * `preventDefault` on `pointermove` cannot do this: a pointer event for touch\n * is non-cancelable once `touch-action` has permitted the pan, which is why\n * an `e.cancelable` test silently does nothing on a phone. The cancelable\n * event is `touchmove`, and it must be registered NON-PASSIVELY — Chrome\n * makes touch listeners passive by default on document and window, and a\n * passive listener's `preventDefault` is ignored with only a console warning.\n *\n * Installed at ACTIVATION, never at `pointerdown`. The finger has been still\n * for the whole dwell, so the browser has not begun scrolling and the next\n * `touchmove` is still cancelable. Installing it earlier would suppress the\n * scroll for every press that never becomes a drag — which is most of them.\n */\n function beginTouchScrollGuard(): void {\n if (scrollGuard) return;\n scrollGuard = (e: TouchEvent) => {\n if (e.cancelable) e.preventDefault();\n };\n document.addEventListener(\"touchmove\", scrollGuard, { passive: false });\n }\n\n function endTouchScrollGuard(): void {\n if (!scrollGuard) return;\n document.removeEventListener(\"touchmove\", scrollGuard);\n scrollGuard = null;\n }\n\n /**\n * WHILE A PRESS IS IN FLIGHT, THE MOVES COME FROM THE DOCUMENT.\n *\n * They used to come from the element, because the element took pointer\n * capture at `pointerdown` — which delivers every move and the release to\n * the handle wherever the pointer goes, and is exactly right for a grip.\n *\n * IT IS WRONG FOR A DRAG SOURCE THAT IS ALSO A CONTROL, and the reason is\n * that capture retargets the COMPATIBILITY MOUSE EVENTS too. Measured on a\n * kanban card, pressing and releasing on the card's own button with capture\n * taken at `pointerdown`:\n *\n * pointerdown -> SPAN (inside the card)\n * pointerup -> DIV[data-dnd-surface]\n * mouseup -> DIV[data-dnd-surface]\n * click -> DIV[data-dnd-surface]\n *\n * The click lands on the drag source instead of the button inside it, so it\n * never reaches the button's handler at all and the record never opens — a\n * card that could be dragged and could not be clicked, with nothing thrown\n * and nothing to see.\n *\n * So capture is taken at ACTIVATION instead, when the gesture really is a\n * drag and the trailing click is being swallowed anyway. Up to that moment\n * the press is indistinguishable from an ordinary click and the browser's own\n * targeting is left alone. Document listeners are what make that safe: without\n * capture there is nothing keeping the moves and the release coming to the\n * element, and a pointer that leaves it before activating would strand the\n * gesture with no release to end it.\n */\n function listenWhilePressed(): void {\n document.addEventListener(\"pointermove\", onPointerMove);\n document.addEventListener(\"pointerup\", onPointerUp);\n document.addEventListener(\"pointercancel\", onPointerCancel);\n }\n\n function stopListeningWhilePressed(): void {\n document.removeEventListener(\"pointermove\", onPointerMove);\n document.removeEventListener(\"pointerup\", onPointerUp);\n document.removeEventListener(\"pointercancel\", onPointerCancel);\n }\n\n function release(): void {\n clearTimer();\n endTouchScrollGuard();\n stopListeningWhilePressed();\n if (activePointer !== null && element.hasPointerCapture(activePointer)) {\n element.releasePointerCapture(activePointer);\n }\n activePointer = null;\n origin = null;\n activated = false;\n }\n\n function activate(point: Point): void {\n activated = true;\n /* NOW the gesture is ours, so take the pointer with it. Capture keeps the\n moves and the release coming to this element even across an iframe or a\n cross-origin subframe, which document listeners alone cannot promise. */\n if (activePointer !== null) element.setPointerCapture(activePointer);\n handlers.onActivate(point);\n }\n\n /**\n * A GESTURE THAT BECAME A DRAG MUST NOT ALSO BE A CLICK.\n *\n * The browser dispatches `click` after `pointerup` from the same press,\n * whatever happened in between — so on a surface where the drag source IS the\n * thing that opens something (a card you can drag and also click into), every\n * completed drag would land the card in its new lane AND open it. That is not\n * a cosmetic defect: the reorder is written, the route changes, and the board\n * the user was arranging is gone.\n *\n * `preventDefault` on the `pointerdown` would stop it and takes focus with\n * it, which is worse — the card stops being reachable by clicking. So the\n * click is swallowed instead, once, in the CAPTURE phase on the document, so\n * it is cancelled before it reaches the card's own handler however deep the\n * release landed.\n *\n * IT IS DISARMED TWO WAYS, and both are needed. A drag that ends with the\n * pointer somewhere that produces no click at all — off the element, over a\n * scrollbar — would otherwise leave the listener armed and eat the user's\n * NEXT click.\n *\n * A TASK-QUEUE TIMEOUT covers the ordinary case: `click` is dispatched from\n * the same input task as the `pointerup` that caused it, so a timeout\n * always runs after it when there is one, and immediately when there is not.\n *\n * A NEW `pointerdown` covers the case the timeout cannot, which is any\n * sequence that presses again inside the SAME task — programmatic input,\n * and every test written that way. A fresh press means the previous\n * gesture's trailing click is never coming; continuing to wait for it eats\n * a click that belongs to somebody else. Found by a node-canvas test that\n * dragged one node and then tapped another in the same tick, and lost the\n * tap.\n */\n function swallowNextClick(): void {\n const swallow = (e: MouseEvent) => {\n e.stopPropagation();\n e.preventDefault();\n disarm();\n };\n const disarm = () => {\n document.removeEventListener(\"click\", swallow, { capture: true });\n document.removeEventListener(\"pointerdown\", disarm, { capture: true });\n };\n document.addEventListener(\"click\", swallow, { capture: true });\n document.addEventListener(\"pointerdown\", disarm, { capture: true });\n window.setTimeout(disarm, 0);\n }\n\n function onPointerDown(e: PointerEvent): void {\n /* Secondary buttons open context menus; a right-drag is not a drag. */\n if (e.button !== 0) return;\n if (activePointer !== null) return;\n\n const point = pointOf(e);\n if (handlers.onPress && handlers.onPress(point, e) === false) return;\n\n activePointer = e.pointerId;\n origin = point;\n activated = false;\n /* NO CAPTURE YET — see `listenWhilePressed`. Until this press proves itself\n a drag it is an ordinary click, and taking capture here would retarget\n that click away from whatever is inside the drag source. */\n listenWhilePressed();\n\n /* Touch dwells; mouse and pen travel. `pointerType` is the only reliable\n discriminator — a touch device reports `\"touch\"` even when a stylus is in\n use, and that is the behaviour we want either way, because what decides\n the constraint is whether the input can SCROLL, not what is held. */\n if (e.pointerType === \"touch\") {\n delayTimer = window.setTimeout(() => {\n delayTimer = null;\n /* Guard FIRST. `onActivate` runs synchronously and a consumer's render\n can happen before the next line, so installing the listener\n afterwards leaves a window in which a `touchmove` scrolls the surface\n the event is being lifted out of. */\n beginTouchScrollGuard();\n if (origin) activate(origin);\n }, cfg.delay);\n }\n }\n\n function onPointerMove(e: PointerEvent): void {\n if (e.pointerId !== activePointer || !origin) return;\n const point = pointOf(e);\n\n if (!activated) {\n const travelled = Math.hypot(point.x - origin.x, point.y - origin.y);\n if (e.pointerType === \"touch\") {\n /* Travelled too far before the timer: the finger was scrolling. Abandon\n the gesture rather than starting a drag the user did not ask for. */\n if (travelled > cfg.tolerance) {\n release();\n handlers.onCancel();\n }\n return;\n }\n if (travelled < cfg.distance) return;\n activate(point);\n }\n\n /* Once dragging, the gesture belongs to us. Without this the page pans\n under the finger while the event is being carried. */\n if (e.cancelable) e.preventDefault();\n handlers.onMove(point);\n }\n\n function onPointerUp(e: PointerEvent): void {\n if (e.pointerId !== activePointer) return;\n const point = pointOf(e);\n const wasActive = activated;\n release();\n if (wasActive) swallowNextClick();\n handlers.onRelease(point, wasActive);\n }\n\n function onPointerCancel(e: PointerEvent): void {\n if (e.pointerId !== activePointer) return;\n release();\n handlers.onCancel();\n }\n\n /* ONLY the press is bound to the element — everything after it is bound to\n the document for the life of that press, and unbound again by `release`.\n See `listenWhilePressed`. */\n element.addEventListener(\"pointerdown\", onPointerDown);\n\n return () => {\n release();\n element.removeEventListener(\"pointerdown\", onPointerDown);\n };\n}\n"],"names":["ACTIVATION_DEFAULTS","attachPointerGesture","element","handlers","options","cfg","origin","activePointer","delayTimer","scrollGuard","activated","pointOf","clearTimer","beginTouchScrollGuard","endTouchScrollGuard","listenWhilePressed","onPointerMove","onPointerUp","onPointerCancel","stopListeningWhilePressed","release","activate","point","swallowNextClick","swallow","e","disarm","onPointerDown","travelled","wasActive"],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ const d = {
2
+ y: { ArrowUp: -1, ArrowDown: 1 },
3
+ x: { ArrowLeft: -1, ArrowRight: 1 }
4
+ }, y = {
5
+ y: { ArrowLeft: -1, ArrowRight: 1 },
6
+ x: { ArrowUp: -1, ArrowDown: 1 }
7
+ };
8
+ function v(t, e, n) {
9
+ const i = n.axis ?? "y";
10
+ function a() {
11
+ const r = t.getState();
12
+ return r.phase === "dragging" && r.mode === "keyboard" && r.id === n.id;
13
+ }
14
+ function u(r) {
15
+ if (r.altKey || r.ctrlKey || r.metaKey) return;
16
+ if (r.key === " " || r.key === "Enter") {
17
+ if (r.repeat) return;
18
+ if (a()) {
19
+ r.preventDefault(), t.commit();
20
+ return;
21
+ }
22
+ if (t.getState().phase !== "idle" || r.key === "Enter" && r.target !== e || n.canStart && !n.canStart(r) || !t.start({ id: n.id, mode: "keyboard" })) return;
23
+ r.preventDefault();
24
+ return;
25
+ }
26
+ if (!a()) return;
27
+ const o = d[i][r.key];
28
+ if (o !== void 0) {
29
+ r.preventDefault(), t.moveIndex(o);
30
+ return;
31
+ }
32
+ const c = y[i][r.key];
33
+ c !== void 0 && (r.preventDefault(), t.moveContainer(c));
34
+ }
35
+ function f(r) {
36
+ if (!a()) return;
37
+ const o = r.relatedTarget;
38
+ o instanceof Node && e.contains(o) || t.cancel();
39
+ }
40
+ return e.addEventListener("keydown", u), e.addEventListener("focusout", f), () => {
41
+ e.removeEventListener("keydown", u), e.removeEventListener("focusout", f);
42
+ };
43
+ }
44
+ export {
45
+ v as attachKeyboardSensor
46
+ };
47
+ //# sourceMappingURL=keyboard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keyboard.js","sources":["../../../../src/lib/dnd/sensors/keyboard.ts"],"sourcesContent":["import type { DragSession } from \"../session\";\nimport type { DragAxis, DragId } from \"../types\";\n\n/**\n * The keyboard sensor. Drives the SAME session the pointer does.\n *\n * WHY A SENSOR AND NOT A KEYBOARD IMPLEMENTATION. The usual shape is a pointer\n * drag with keyboard \"support\" bolted on, which is two codebases computing the\n * same answer — and the accessible one is the one nobody looks at, so it is the\n * one that rots. Here the keyboard can only `start`, `moveIndex`,\n * `moveContainer`, `commit` and `cancel`, exactly like the pointer, so the two\n * cannot disagree about where a card lands. `dnd-sensors.test.ts` asserts they\n * reach an identical target for the same intent.\n *\n * THE KEY MAP IS FIXED BY THE PROJECT CONTRACT, not by this file:\n *\n * Space pick up; drop when already carrying\n * Enter the same, but ONLY when the drag source is itself the\n * focused control. On a whole-card source the key arrives by\n * bubbling from the card's own button, and Enter is that\n * button's — see the note at the check.\n * Escape cancel — handled by `attachSessionWindowListeners`, NOT here\n * Along the axis step the insertion point inside the current container\n * Across it move to the previous / next container\n *\n * \"Along\" and \"across\" swap with the container's axis: a vertical list steps\n * with Up/Down and changes column with Left/Right; a horizontal one is the\n * mirror. Hard-coding Up/Down as \"within\" makes a horizontal list unusable in\n * the one input mode that has no alternative.\n *\n * NO `aria-grabbed`, NO `aria-dropeffect`. They are the attributes the name\n * suggests and they were removed in ARIA 1.2 because assistive-technology\n * support never arrived — an implementation using them announces nothing at\n * all. Ordinary focus, an `aria-describedby` instruction and a live region are\n * the working pattern; the live region is `announce.tsx`'s.\n */\n\nexport interface KeyboardSensorOptions {\n id: DragId;\n /**\n * The reorder axis of the container this item currently lives in. Decides\n * which arrow pair steps within the container and which moves between them.\n */\n axis?: DragAxis;\n /** Return false to refuse pickup — a disabled row. Mirrors the pointer sensor. */\n canStart?: (e: KeyboardEvent) => boolean;\n}\n\n/** Arrow deltas ALONG each axis: stepping the insertion point in place. */\nconst ALONG: Record<DragAxis, Record<string, number>> = {\n y: { ArrowUp: -1, ArrowDown: 1 },\n x: { ArrowLeft: -1, ArrowRight: 1 },\n};\n\n/** Arrow deltas ACROSS each axis: moving to the previous / next container. */\nconst ACROSS: Record<DragAxis, Record<string, number>> = {\n y: { ArrowLeft: -1, ArrowRight: 1 },\n x: { ArrowUp: -1, ArrowDown: 1 },\n};\n\n/**\n * Wire an element as a keyboard drag handle. Returns the teardown.\n *\n * The element must be focusable and reachable — `tabIndex={0}` and\n * `role=\"button\"` — or none of this is ever delivered. A handle that is a\n * `<span>` with a listener is invisible to the keyboard and to every screen\n * reader, and looks completely correct on a desktop.\n */\nexport function attachKeyboardSensor(\n session: DragSession,\n element: HTMLElement,\n options: KeyboardSensorOptions,\n): () => void {\n const axis = options.axis ?? \"y\";\n\n /** Is the live session OURS — this item, started by this sensor? */\n function carrying(): boolean {\n const s = session.getState();\n return s.phase === \"dragging\" && s.mode === \"keyboard\" && s.id === options.id;\n }\n\n function onKeyDown(e: KeyboardEvent): void {\n /* A modified arrow is a browser or OS command — Alt+Left is Back, and\n Cmd+Down is End on macOS. Stealing those breaks navigation for the users\n most likely to be driving this by keyboard in the first place. */\n if (e.altKey || e.ctrlKey || e.metaKey) return;\n\n if (e.key === \" \" || e.key === \"Enter\") {\n /* Held keys auto-repeat. Without this the second repeat of the Space that\n DROPPED a card immediately picks it up again, so a normal-length press\n leaves the user carrying the card they just put down. */\n if (e.repeat) return;\n if (carrying()) {\n e.preventDefault();\n session.commit();\n return;\n }\n if (session.getState().phase !== \"idle\") return;\n /* ENTER BELONGS TO WHATEVER HAS FOCUS; SPACE PICKS UP EITHER WAY.\n Both keys pick up when the drag source IS the focused control — a grip,\n which does nothing else. When the source is a whole CARD wrapping its\n own button, the key arrives here by bubbling and `e.target` is that\n button: Enter is then the button's, and stealing it would mean a record\n card could be dragged by keyboard and never opened by one. Space still\n picks up, because a button's Space is an alias for its Enter and the\n card has no second action to lose.\n\n Read off the event rather than configured, so a surface and a grip get\n the right rule without either of them — or the consumer between them —\n having to say which they are. */\n if (e.key === \"Enter\" && e.target !== element) return;\n if (options.canStart && !options.canStart(e)) return;\n if (!session.start({ id: options.id, mode: \"keyboard\" })) return;\n /* Only once the pickup has actually happened. Space scrolls the page by\n default, and suppressing it on a handle that refused the drag takes\n away paging from a control that did nothing in exchange. */\n e.preventDefault();\n return;\n }\n\n /* EVERYTHING BELOW REQUIRES A LIVE SESSION OF OURS — and the early return\n is the reason arrow keys still scroll the page. `preventDefault` on an\n arrow key outside a drag would disable scrolling for every user on every\n page carrying one of these handles, which is a far larger regression\n than the feature is worth. */\n if (!carrying()) return;\n\n const along = ALONG[axis][e.key];\n if (along !== undefined) {\n e.preventDefault();\n session.moveIndex(along);\n return;\n }\n const across = ACROSS[axis][e.key];\n if (across !== undefined) {\n e.preventDefault();\n session.moveContainer(across);\n }\n }\n\n /**\n * A keyboard drag is a MODE, and a mode whose owner has lost focus is a trap:\n * the arrows have gone back to scrolling the page, nothing on screen explains\n * why, and the only remaining exit is an Escape the user has no reason to\n * guess at. Tabbing away therefore cancels — which restores the card and,\n * because cancel is a first-class session outcome, gets announced.\n */\n /**\n * `focusout`, NOT `blur`, and the difference is the whole whole-card case.\n *\n * `blur` does not bubble, so an element that is a drag SOURCE without being\n * the focused control — a card whose own button holds focus — never hears\n * about focus leaving it. The keyboard drag would then survive a Tab away,\n * which is the trap this handler exists to prevent, on exactly the surface\n * where the trap is easiest to fall into.\n *\n * `focusout` bubbles, so it covers both shapes. `relatedTarget` is where\n * focus WENT: still inside this element means focus moved between the card's\n * own controls and the drag is not over.\n */\n function onFocusOut(e: FocusEvent): void {\n if (!carrying()) return;\n const next = e.relatedTarget;\n if (next instanceof Node && element.contains(next)) return;\n session.cancel();\n }\n\n element.addEventListener(\"keydown\", onKeyDown);\n element.addEventListener(\"focusout\", onFocusOut);\n\n return () => {\n element.removeEventListener(\"keydown\", onKeyDown);\n element.removeEventListener(\"focusout\", onFocusOut);\n };\n}\n"],"names":["ALONG","ACROSS","attachKeyboardSensor","session","element","options","axis","carrying","s","onKeyDown","e","along","across","onFocusOut","next"],"mappings":"AAiDA,MAAMA,IAAkD;AAAA,EACtD,GAAG,EAAE,SAAS,IAAI,WAAW,EAAA;AAAA,EAC7B,GAAG,EAAE,WAAW,IAAI,YAAY,EAAA;AAClC,GAGMC,IAAmD;AAAA,EACvD,GAAG,EAAE,WAAW,IAAI,YAAY,EAAA;AAAA,EAChC,GAAG,EAAE,SAAS,IAAI,WAAW,EAAA;AAC/B;AAUO,SAASC,EACdC,GACAC,GACAC,GACY;AACZ,QAAMC,IAAOD,EAAQ,QAAQ;AAG7B,WAASE,IAAoB;AAC3B,UAAMC,IAAIL,EAAQ,SAAA;AAClB,WAAOK,EAAE,UAAU,cAAcA,EAAE,SAAS,cAAcA,EAAE,OAAOH,EAAQ;AAAA,EAC7E;AAEA,WAASI,EAAUC,GAAwB;AAIzC,QAAIA,EAAE,UAAUA,EAAE,WAAWA,EAAE,QAAS;AAExC,QAAIA,EAAE,QAAQ,OAAOA,EAAE,QAAQ,SAAS;AAItC,UAAIA,EAAE,OAAQ;AACd,UAAIH,KAAY;AACd,QAAAG,EAAE,eAAA,GACFP,EAAQ,OAAA;AACR;AAAA,MACF;AAgBA,UAfIA,EAAQ,WAAW,UAAU,UAa7BO,EAAE,QAAQ,WAAWA,EAAE,WAAWN,KAClCC,EAAQ,YAAY,CAACA,EAAQ,SAASK,CAAC,KACvC,CAACP,EAAQ,MAAM,EAAE,IAAIE,EAAQ,IAAI,MAAM,WAAA,CAAY,EAAG;AAI1D,MAAAK,EAAE,eAAA;AACF;AAAA,IACF;AAOA,QAAI,CAACH,IAAY;AAEjB,UAAMI,IAAQX,EAAMM,CAAI,EAAEI,EAAE,GAAG;AAC/B,QAAIC,MAAU,QAAW;AACvB,MAAAD,EAAE,eAAA,GACFP,EAAQ,UAAUQ,CAAK;AACvB;AAAA,IACF;AACA,UAAMC,IAASX,EAAOK,CAAI,EAAEI,EAAE,GAAG;AACjC,IAAIE,MAAW,WACbF,EAAE,eAAA,GACFP,EAAQ,cAAcS,CAAM;AAAA,EAEhC;AAsBA,WAASC,EAAWH,GAAqB;AACvC,QAAI,CAACH,IAAY;AACjB,UAAMO,IAAOJ,EAAE;AACf,IAAII,aAAgB,QAAQV,EAAQ,SAASU,CAAI,KACjDX,EAAQ,OAAA;AAAA,EACV;AAEA,SAAAC,EAAQ,iBAAiB,WAAWK,CAAS,GAC7CL,EAAQ,iBAAiB,YAAYS,CAAU,GAExC,MAAM;AACX,IAAAT,EAAQ,oBAAoB,WAAWK,CAAS,GAChDL,EAAQ,oBAAoB,YAAYS,CAAU;AAAA,EACpD;AACF;"}
@@ -0,0 +1,32 @@
1
+ import { attachPointerGesture as i } from "./gesture.js";
2
+ function c(e, r, t) {
3
+ return i(
4
+ r,
5
+ {
6
+ onPress: (n, a) => t.canStart && !t.canStart(a) ? !1 : e.start({ id: t.id, mode: "pointer", point: n, pending: !0 }),
7
+ onActivate: () => e.activate(),
8
+ onMove: (n) => e.moveTo(n),
9
+ onRelease: (n, a) => {
10
+ e.getState().phase !== "idle" && (e.moveTo(n), e.commit());
11
+ },
12
+ onCancel: () => e.cancel()
13
+ },
14
+ { activation: t.activation }
15
+ );
16
+ }
17
+ function d(e) {
18
+ function r(n) {
19
+ n.key === "Escape" && e.getState().phase !== "idle" && (n.preventDefault(), e.cancel());
20
+ }
21
+ function t() {
22
+ e.getState().phase === "dragging" && e.remeasure();
23
+ }
24
+ return window.addEventListener("keydown", r), window.addEventListener("scroll", t, !0), window.addEventListener("resize", t), () => {
25
+ window.removeEventListener("keydown", r), window.removeEventListener("scroll", t, !0), window.removeEventListener("resize", t);
26
+ };
27
+ }
28
+ export {
29
+ c as attachPointerSensor,
30
+ d as attachSessionWindowListeners
31
+ };
32
+ //# sourceMappingURL=pointer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pointer.js","sources":["../../../../src/lib/dnd/sensors/pointer.ts"],"sourcesContent":["import type { DragSession } from \"../session\";\nimport type { DragId } from \"../types\";\nimport { attachPointerGesture, type PointerActivation } from \"./gesture\";\n\n/**\n * The pointer sensor. One listener set for mouse, touch and pen.\n *\n * ACTIVATION IS THE WHOLE PROBLEM. Starting the drag on `pointerdown` is what\n * makes a drag list unusable: a tap becomes a drag, and on a phone a swipe that\n * was meant to scroll the column picks a card up instead. So a pointer is held\n * in `pending` until it proves itself, and the proof differs by input type:\n *\n * - MOUSE and PEN have a cursor, so intent is expressed by MOVING. A few\n * pixels of travel is unambiguous and instant, and a click never reaches it.\n * - TOUCH has no cursor and movement is how you scroll, so movement cannot be\n * the signal. Intent is expressed by DWELLING — the long press — and any\n * travel beyond a small tolerance before the timer fires means the finger\n * was scrolling and the session must be abandoned.\n *\n * Getting that backwards is the single most common defect in drag lists, and it\n * only shows up on a device the author was not testing on.\n *\n * AND THE DWELL IS ONLY HALF OF THE TOUCH ANSWER. The activation constraint\n * decides whether WE start a drag; it says nothing about whether the BROWSER\n * starts a scroll, and the browser decides that from `touch-action` alone,\n * before any of this code runs. `touch-action: none` on the handle is therefore\n * the tempting fix and it re-creates the failure it was meant to prevent, just\n * on a smaller target: every swipe that happens to begin on the grip is eaten,\n * the column does not move, and the list feels stuck at random.\n *\n * The handle is `touch-action: pan-y` instead (`pan-x` for a horizontal list),\n * so the browser scrolls exactly as it would on any other element, and the\n * drag takes the gesture back at the moment it activates by cancelling\n * `touchmove` — see `beginTouchScrollGuard`. That ordering is what makes both\n * true on the SAME element: a swipe scrolls, a press picks up.\n */\n\n/* The activation constants and every line of DOM handling now live in\n `gesture.ts`, because the calendar needs exactly the same input layer with a\n completely different target model. See that file's header for the split; what\n remains here is the adapter that turns a gesture into a `DragSession`. */\nexport type { PointerActivation } from \"./gesture\";\n\nexport interface PointerSensorOptions {\n id: DragId;\n activation?: PointerActivation;\n /** Return false to refuse the gesture — a disabled row, or a click on a button inside the card. */\n canStart?: (e: PointerEvent) => boolean;\n}\n\n/**\n * Wire an element as a drag handle for a list `DragSession`.\n *\n * A THIN ADAPTER, deliberately. The session's four verbs map one-to-one onto\n * the gesture's callbacks, and the only real logic left is the `pending`\n * start — the session is told about the press immediately so it can refuse the\n * item, and only activated once the constraint is met.\n */\nexport function attachPointerSensor(\n session: DragSession,\n element: HTMLElement,\n options: PointerSensorOptions,\n): () => void {\n return attachPointerGesture(\n element,\n {\n onPress: (point, event) => {\n if (options.canStart && !options.canStart(event)) return false;\n /* `pending` — the session knows a press is in flight and may refuse\n the item outright, but nothing has moved yet. */\n return session.start({ id: options.id, mode: \"pointer\", point, pending: true });\n },\n onActivate: () => session.activate(),\n onMove: (point) => session.moveTo(point),\n onRelease: (point, activated) => {\n /* A release without activation is a click. `commit` is called either\n way — it knows to discard a no-op — so a consumer counting sessions\n sees one ENDING rather than one aborting. */\n void activated;\n if (session.getState().phase === \"idle\") return;\n /* THE RELEASE POINT IS FED IN BEFORE THE COMMIT, and it used to be\n discarded. `commit()` takes no point: it lands the card wherever the\n last `moveTo` left `over`, on the reasonable assumption that a\n `pointermove` arrived at the release position first. That assumption\n is not free. `pointerup` can carry a position no `pointermove`\n reported — a touch that lifts while travelling, a coalesced burst\n truncated at the end, a synthesised release — and the card then lands\n where the pointer WAS rather than where it was let go. Cheap to\n remove as a class of doubt: one more resolve against a snapshot that\n is already current, and `moveTo` is a no-op when the target has not\n changed, which is the usual case. */\n session.moveTo(point);\n session.commit();\n },\n onCancel: () => session.cancel(),\n },\n { activation: options.activation },\n );\n}\n\n/**\n * Esc, and the two things that move a box while a drag is in flight.\n *\n * Window-level because a keypress during a drag does not go to the handle — the\n * handle has pointer capture, not focus — and because a scroll of an ancestor\n * invalidates every rect in the snapshot at once.\n */\nexport function attachSessionWindowListeners(session: DragSession): () => void {\n function onKeyDown(e: KeyboardEvent): void {\n if (e.key !== \"Escape\") return;\n if (session.getState().phase === \"idle\") return;\n e.preventDefault();\n session.cancel();\n }\n function onLayoutShift(): void {\n if (session.getState().phase !== \"dragging\") return;\n session.remeasure();\n }\n window.addEventListener(\"keydown\", onKeyDown);\n /* Capture, because a scroll inside a column does not bubble to the window. */\n window.addEventListener(\"scroll\", onLayoutShift, true);\n window.addEventListener(\"resize\", onLayoutShift);\n return () => {\n window.removeEventListener(\"keydown\", onKeyDown);\n window.removeEventListener(\"scroll\", onLayoutShift, true);\n window.removeEventListener(\"resize\", onLayoutShift);\n };\n}\n"],"names":["attachPointerSensor","session","element","options","attachPointerGesture","point","event","activated","attachSessionWindowListeners","onKeyDown","e","onLayoutShift"],"mappings":";AA0DO,SAASA,EACdC,GACAC,GACAC,GACY;AACZ,SAAOC;AAAA,IACLF;AAAA,IACA;AAAA,MACE,SAAS,CAACG,GAAOC,MACXH,EAAQ,YAAY,CAACA,EAAQ,SAASG,CAAK,IAAU,KAGlDL,EAAQ,MAAM,EAAE,IAAIE,EAAQ,IAAI,MAAM,WAAW,OAAAE,GAAO,SAAS,GAAA,CAAM;AAAA,MAEhF,YAAY,MAAMJ,EAAQ,SAAA;AAAA,MAC1B,QAAQ,CAACI,MAAUJ,EAAQ,OAAOI,CAAK;AAAA,MACvC,WAAW,CAACA,GAAOE,MAAc;AAK/B,QAAIN,EAAQ,WAAW,UAAU,WAYjCA,EAAQ,OAAOI,CAAK,GACpBJ,EAAQ,OAAA;AAAA,MACV;AAAA,MACA,UAAU,MAAMA,EAAQ,OAAA;AAAA,IAAO;AAAA,IAEjC,EAAE,YAAYE,EAAQ,WAAA;AAAA,EAAW;AAErC;AASO,SAASK,EAA6BP,GAAkC;AAC7E,WAASQ,EAAUC,GAAwB;AACzC,IAAIA,EAAE,QAAQ,YACVT,EAAQ,WAAW,UAAU,WACjCS,EAAE,eAAA,GACFT,EAAQ,OAAA;AAAA,EACV;AACA,WAASU,IAAsB;AAC7B,IAAIV,EAAQ,WAAW,UAAU,cACjCA,EAAQ,UAAA;AAAA,EACV;AACA,gBAAO,iBAAiB,WAAWQ,CAAS,GAE5C,OAAO,iBAAiB,UAAUE,GAAe,EAAI,GACrD,OAAO,iBAAiB,UAAUA,CAAa,GACxC,MAAM;AACX,WAAO,oBAAoB,WAAWF,CAAS,GAC/C,OAAO,oBAAoB,UAAUE,GAAe,EAAI,GACxD,OAAO,oBAAoB,UAAUA,CAAa;AAAA,EACpD;AACF;"}