@50arms/ui 0.0.0-stage → 35.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1256) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +193 -2
  3. package/dist/components/Accordion.js +68 -0
  4. package/dist/components/Accordion.js.map +1 -0
  5. package/dist/components/AgentWorkingSpinner.js +46 -0
  6. package/dist/components/AgentWorkingSpinner.js.map +1 -0
  7. package/dist/components/AppShell.js +228 -0
  8. package/dist/components/AppShell.js.map +1 -0
  9. package/dist/components/Attention.js +130 -0
  10. package/dist/components/Attention.js.map +1 -0
  11. package/dist/components/Avatar.js +99 -0
  12. package/dist/components/Avatar.js.map +1 -0
  13. package/dist/components/Badge.js +143 -0
  14. package/dist/components/Badge.js.map +1 -0
  15. package/dist/components/Board.js +292 -0
  16. package/dist/components/Board.js.map +1 -0
  17. package/dist/components/Button.js +327 -0
  18. package/dist/components/Button.js.map +1 -0
  19. package/dist/components/Callout.js +106 -0
  20. package/dist/components/Callout.js.map +1 -0
  21. package/dist/components/Card.js +140 -0
  22. package/dist/components/Card.js.map +1 -0
  23. package/dist/components/Choice.js +361 -0
  24. package/dist/components/Choice.js.map +1 -0
  25. package/dist/components/CodeEditor.js +384 -0
  26. package/dist/components/CodeEditor.js.map +1 -0
  27. package/dist/components/ColorPicker.js +174 -0
  28. package/dist/components/ColorPicker.js.map +1 -0
  29. package/dist/components/Combobox.js +212 -0
  30. package/dist/components/Combobox.js.map +1 -0
  31. package/dist/components/CommandPalette.js +163 -0
  32. package/dist/components/CommandPalette.js.map +1 -0
  33. package/dist/components/ConcentricRing.js +60 -0
  34. package/dist/components/ConcentricRing.js.map +1 -0
  35. package/dist/components/ConnectionCard.js +98 -0
  36. package/dist/components/ConnectionCard.js.map +1 -0
  37. package/dist/components/ContextItemRow.js +49 -0
  38. package/dist/components/ContextItemRow.js.map +1 -0
  39. package/dist/components/CopyValue.js +57 -0
  40. package/dist/components/CopyValue.js.map +1 -0
  41. package/dist/components/CountBadge.js +26 -0
  42. package/dist/components/CountBadge.js.map +1 -0
  43. package/dist/components/DateCalendar.js +156 -0
  44. package/dist/components/DateCalendar.js.map +1 -0
  45. package/dist/components/DateField.js +166 -0
  46. package/dist/components/DateField.js.map +1 -0
  47. package/dist/components/DatePicker.js +56 -0
  48. package/dist/components/DatePicker.js.map +1 -0
  49. package/dist/components/DateTimeText.js +19 -0
  50. package/dist/components/DateTimeText.js.map +1 -0
  51. package/dist/components/DescriptionList.js +25 -0
  52. package/dist/components/DescriptionList.js.map +1 -0
  53. package/dist/components/Dialog.js +332 -0
  54. package/dist/components/Dialog.js.map +1 -0
  55. package/dist/components/DragDrop.js +395 -0
  56. package/dist/components/DragDrop.js.map +1 -0
  57. package/dist/components/Drawer.js +100 -0
  58. package/dist/components/Drawer.js.map +1 -0
  59. package/dist/components/EditGutter.js +110 -0
  60. package/dist/components/EditGutter.js.map +1 -0
  61. package/dist/components/EmojiPicker.js +174 -0
  62. package/dist/components/EmojiPicker.js.map +1 -0
  63. package/dist/components/ErrorBoundary.js +47 -0
  64. package/dist/components/ErrorBoundary.js.map +1 -0
  65. package/dist/components/Field.js +115 -0
  66. package/dist/components/Field.js.map +1 -0
  67. package/dist/components/FileUpload.js +128 -0
  68. package/dist/components/FileUpload.js.map +1 -0
  69. package/dist/components/FilterMenu.js +256 -0
  70. package/dist/components/FilterMenu.js.map +1 -0
  71. package/dist/components/GatesSection.js +79 -0
  72. package/dist/components/GatesSection.js.map +1 -0
  73. package/dist/components/Icon.js +50 -0
  74. package/dist/components/Icon.js.map +1 -0
  75. package/dist/components/IconButton.js +59 -0
  76. package/dist/components/IconButton.js.map +1 -0
  77. package/dist/components/IconStack.js +69 -0
  78. package/dist/components/IconStack.js.map +1 -0
  79. package/dist/components/ImageUploadField.js +146 -0
  80. package/dist/components/ImageUploadField.js.map +1 -0
  81. package/dist/components/InlineEdit.js +432 -0
  82. package/dist/components/InlineEdit.js.map +1 -0
  83. package/dist/components/InlineMarkdownEdit.js +184 -0
  84. package/dist/components/InlineMarkdownEdit.js.map +1 -0
  85. package/dist/components/Input.js +156 -0
  86. package/dist/components/Input.js.map +1 -0
  87. package/dist/components/LegalDocument.js +155 -0
  88. package/dist/components/LegalDocument.js.map +1 -0
  89. package/dist/components/LineDiff.js +95 -0
  90. package/dist/components/LineDiff.js.map +1 -0
  91. package/dist/components/ListHeader.js +72 -0
  92. package/dist/components/ListHeader.js.map +1 -0
  93. package/dist/components/Loading.js +111 -0
  94. package/dist/components/Loading.js.map +1 -0
  95. package/dist/components/Markdown.js +28 -0
  96. package/dist/components/Markdown.js.map +1 -0
  97. package/dist/components/MarkdownEditor.js +467 -0
  98. package/dist/components/MarkdownEditor.js.map +1 -0
  99. package/dist/components/Menu.js +185 -0
  100. package/dist/components/Menu.js.map +1 -0
  101. package/dist/components/Navigation.js +87 -0
  102. package/dist/components/Navigation.js.map +1 -0
  103. package/dist/components/NumberInput.js +119 -0
  104. package/dist/components/NumberInput.js.map +1 -0
  105. package/dist/components/OTPInput.js +71 -0
  106. package/dist/components/OTPInput.js.map +1 -0
  107. package/dist/components/OrderedEntityManager.js +170 -0
  108. package/dist/components/OrderedEntityManager.js.map +1 -0
  109. package/dist/components/PagedWindowList.js +74 -0
  110. package/dist/components/PagedWindowList.js.map +1 -0
  111. package/dist/components/PaginationBar.js +95 -0
  112. package/dist/components/PaginationBar.js.map +1 -0
  113. package/dist/components/Panel.js +396 -0
  114. package/dist/components/Panel.js.map +1 -0
  115. package/dist/components/PasswordInput.js +32 -0
  116. package/dist/components/PasswordInput.js.map +1 -0
  117. package/dist/components/PasswordRequirements.js +25 -0
  118. package/dist/components/PasswordRequirements.js.map +1 -0
  119. package/dist/components/PatchDiff.js +96 -0
  120. package/dist/components/PatchDiff.js.map +1 -0
  121. package/dist/components/PendingVeil.js +18 -0
  122. package/dist/components/PendingVeil.js.map +1 -0
  123. package/dist/components/Popover.js +214 -0
  124. package/dist/components/Popover.js.map +1 -0
  125. package/dist/components/Progress.js +419 -0
  126. package/dist/components/Progress.js.map +1 -0
  127. package/dist/components/RatingScale.js +89 -0
  128. package/dist/components/RatingScale.js.map +1 -0
  129. package/dist/components/ReadMore.js +232 -0
  130. package/dist/components/ReadMore.js.map +1 -0
  131. package/dist/components/RecordCard.js +202 -0
  132. package/dist/components/RecordCard.js.map +1 -0
  133. package/dist/components/RelativeTime.js +29 -0
  134. package/dist/components/RelativeTime.js.map +1 -0
  135. package/dist/components/SandboxedFrame.js +135 -0
  136. package/dist/components/SandboxedFrame.js.map +1 -0
  137. package/dist/components/SearchInput.js +38 -0
  138. package/dist/components/SearchInput.js.map +1 -0
  139. package/dist/components/SecretField.js +228 -0
  140. package/dist/components/SecretField.js.map +1 -0
  141. package/dist/components/SectionNav.js +42 -0
  142. package/dist/components/SectionNav.js.map +1 -0
  143. package/dist/components/Select.js +172 -0
  144. package/dist/components/Select.js.map +1 -0
  145. package/dist/components/SequenceDiagram.js +109 -0
  146. package/dist/components/SequenceDiagram.js.map +1 -0
  147. package/dist/components/SettingRow.js +124 -0
  148. package/dist/components/SettingRow.js.map +1 -0
  149. package/dist/components/SignOffRings.js +36 -0
  150. package/dist/components/SignOffRings.js.map +1 -0
  151. package/dist/components/Slider.js +353 -0
  152. package/dist/components/Slider.js.map +1 -0
  153. package/dist/components/SolutionChoice.js +89 -0
  154. package/dist/components/SolutionChoice.js.map +1 -0
  155. package/dist/components/SortMenu.js +75 -0
  156. package/dist/components/SortMenu.js.map +1 -0
  157. package/dist/components/Spinner.js +42 -0
  158. package/dist/components/Spinner.js.map +1 -0
  159. package/dist/components/Stat.js +148 -0
  160. package/dist/components/Stat.js.map +1 -0
  161. package/dist/components/StatusSelect.js +119 -0
  162. package/dist/components/StatusSelect.js.map +1 -0
  163. package/dist/components/Surface.js +210 -0
  164. package/dist/components/Surface.js.map +1 -0
  165. package/dist/components/Table.js +300 -0
  166. package/dist/components/Table.js.map +1 -0
  167. package/dist/components/Tabs.js +288 -0
  168. package/dist/components/Tabs.js.map +1 -0
  169. package/dist/components/ThemeMenu.js +198 -0
  170. package/dist/components/ThemeMenu.js.map +1 -0
  171. package/dist/components/Toast.js +217 -0
  172. package/dist/components/Toast.js.map +1 -0
  173. package/dist/components/Toggle.js +147 -0
  174. package/dist/components/Toggle.js.map +1 -0
  175. package/dist/components/ToggleMatrix.js +157 -0
  176. package/dist/components/ToggleMatrix.js.map +1 -0
  177. package/dist/components/Tree.js +125 -0
  178. package/dist/components/Tree.js.map +1 -0
  179. package/dist/components/TriStateSwitch.js +111 -0
  180. package/dist/components/TriStateSwitch.js.map +1 -0
  181. package/dist/components/VideoPlayer.js +64 -0
  182. package/dist/components/VideoPlayer.js.map +1 -0
  183. package/dist/components/auth/AcceptInvitationCard.js +110 -0
  184. package/dist/components/auth/AcceptInvitationCard.js.map +1 -0
  185. package/dist/components/auth/AuthLayout.js +18 -0
  186. package/dist/components/auth/AuthLayout.js.map +1 -0
  187. package/dist/components/auth/ForgotPasswordForm.js +44 -0
  188. package/dist/components/auth/ForgotPasswordForm.js.map +1 -0
  189. package/dist/components/auth/LoginForm.js +76 -0
  190. package/dist/components/auth/LoginForm.js.map +1 -0
  191. package/dist/components/auth/ResetPasswordForm.js +69 -0
  192. package/dist/components/auth/ResetPasswordForm.js.map +1 -0
  193. package/dist/components/auth/SignInProviders.js +45 -0
  194. package/dist/components/auth/SignInProviders.js.map +1 -0
  195. package/dist/components/auth/SignupCard.js +204 -0
  196. package/dist/components/auth/SignupCard.js.map +1 -0
  197. package/dist/components/auth/TermsAcceptance.js +43 -0
  198. package/dist/components/auth/TermsAcceptance.js.map +1 -0
  199. package/dist/components/board/context.js +32 -0
  200. package/dist/components/board/context.js.map +1 -0
  201. package/dist/components/board/recipe.js +94 -0
  202. package/dist/components/board/recipe.js.map +1 -0
  203. package/dist/components/calendar/CalendarMonth.js +299 -0
  204. package/dist/components/calendar/CalendarMonth.js.map +1 -0
  205. package/dist/components/calendar/CalendarTimeGrid.js +430 -0
  206. package/dist/components/calendar/CalendarTimeGrid.js.map +1 -0
  207. package/dist/components/calendar/EventActions.js +101 -0
  208. package/dist/components/calendar/EventActions.js.map +1 -0
  209. package/dist/components/calendar/format.js +73 -0
  210. package/dist/components/calendar/format.js.map +1 -0
  211. package/dist/components/calendar/palette.js +31 -0
  212. package/dist/components/calendar/palette.js.map +1 -0
  213. package/dist/components/calendar/use-calendar-drag.js +149 -0
  214. package/dist/components/calendar/use-calendar-drag.js.map +1 -0
  215. package/dist/components/calendar/use-event-keyboard.js +87 -0
  216. package/dist/components/calendar/use-event-keyboard.js.map +1 -0
  217. package/dist/components/calendar/use-grid-navigation.js +79 -0
  218. package/dist/components/calendar/use-grid-navigation.js.map +1 -0
  219. package/dist/components/calendar/use-now.js +27 -0
  220. package/dist/components/calendar/use-now.js.map +1 -0
  221. package/dist/components/card-face/AcRingGlyph.js +39 -0
  222. package/dist/components/card-face/AcRingGlyph.js.map +1 -0
  223. package/dist/components/card-face/BoardCardAgentSlot.js +17 -0
  224. package/dist/components/card-face/BoardCardAgentSlot.js.map +1 -0
  225. package/dist/components/card-face/CardFace.js +109 -0
  226. package/dist/components/card-face/CardFace.js.map +1 -0
  227. package/dist/components/card-face/CardTypeBadge.js +17 -0
  228. package/dist/components/card-face/CardTypeBadge.js.map +1 -0
  229. package/dist/components/card-face/EffortBadge.js +11 -0
  230. package/dist/components/card-face/EffortBadge.js.map +1 -0
  231. package/dist/components/card-face/GateRingGlyph.js +31 -0
  232. package/dist/components/card-face/GateRingGlyph.js.map +1 -0
  233. package/dist/components/card-face/OverflowRow.js +70 -0
  234. package/dist/components/card-face/OverflowRow.js.map +1 -0
  235. package/dist/components/card-face/TapTip.js +32 -0
  236. package/dist/components/card-face/TapTip.js.map +1 -0
  237. package/dist/components/card-face/hit-area.js +6 -0
  238. package/dist/components/card-face/hit-area.js.map +1 -0
  239. package/dist/components/card-face/vocabulary.js +102 -0
  240. package/dist/components/card-face/vocabulary.js.map +1 -0
  241. package/dist/components/chart/BarList.js +78 -0
  242. package/dist/components/chart/BarList.js.map +1 -0
  243. package/dist/components/chart/LineChart.js +310 -0
  244. package/dist/components/chart/LineChart.js.map +1 -0
  245. package/dist/components/chart/ShareBar.js +141 -0
  246. package/dist/components/chart/ShareBar.js.map +1 -0
  247. package/dist/components/chart/TimeSeriesChart.js +305 -0
  248. package/dist/components/chart/TimeSeriesChart.js.map +1 -0
  249. package/dist/components/chart/label-metrics.js +17 -0
  250. package/dist/components/chart/label-metrics.js.map +1 -0
  251. package/dist/components/chart/line-chart-axis.js +38 -0
  252. package/dist/components/chart/line-chart-axis.js.map +1 -0
  253. package/dist/components/chart/line-chart-scale.js +132 -0
  254. package/dist/components/chart/line-chart-scale.js.map +1 -0
  255. package/dist/components/chart/line-series-style.js +22 -0
  256. package/dist/components/chart/line-series-style.js.map +1 -0
  257. package/dist/components/chart/share-bar-labels.js +14 -0
  258. package/dist/components/chart/share-bar-labels.js.map +1 -0
  259. package/dist/components/chart/shared.js +157 -0
  260. package/dist/components/chart/shared.js.map +1 -0
  261. package/dist/components/chart/time-series-scale.js +51 -0
  262. package/dist/components/chart/time-series-scale.js.map +1 -0
  263. package/dist/components/chat/Attachment.js +316 -0
  264. package/dist/components/chat/Attachment.js.map +1 -0
  265. package/dist/components/chat/Chat.js +171 -0
  266. package/dist/components/chat/Chat.js.map +1 -0
  267. package/dist/components/chat/Composer.js +274 -0
  268. package/dist/components/chat/Composer.js.map +1 -0
  269. package/dist/components/chat/ContextMeter.js +202 -0
  270. package/dist/components/chat/ContextMeter.js.map +1 -0
  271. package/dist/components/chat/EffortControl.js +116 -0
  272. package/dist/components/chat/EffortControl.js.map +1 -0
  273. package/dist/components/chat/FileCover.js +78 -0
  274. package/dist/components/chat/FileCover.js.map +1 -0
  275. package/dist/components/chat/Message.js +356 -0
  276. package/dist/components/chat/Message.js.map +1 -0
  277. package/dist/components/chat/MessageScroller.js +104 -0
  278. package/dist/components/chat/MessageScroller.js.map +1 -0
  279. package/dist/components/chat/ModelSelector.js +156 -0
  280. package/dist/components/chat/ModelSelector.js.map +1 -0
  281. package/dist/components/chat/StreamingMarkdown.js +42 -0
  282. package/dist/components/chat/StreamingMarkdown.js.map +1 -0
  283. package/dist/components/chat/download-file.js +9 -0
  284. package/dist/components/chat/download-file.js.map +1 -0
  285. package/dist/components/chat/file-icon.js +39 -0
  286. package/dist/components/chat/file-icon.js.map +1 -0
  287. package/dist/components/checklist/StatusChecklist.js +103 -0
  288. package/dist/components/checklist/StatusChecklist.js.map +1 -0
  289. package/dist/components/checklist/tally.js +29 -0
  290. package/dist/components/checklist/tally.js.map +1 -0
  291. package/dist/components/code-editor/context.js +13 -0
  292. package/dist/components/code-editor/context.js.map +1 -0
  293. package/dist/components/code-editor/editing.js +93 -0
  294. package/dist/components/code-editor/editing.js.map +1 -0
  295. package/dist/components/code-editor/highlight.js +27 -0
  296. package/dist/components/code-editor/highlight.js.map +1 -0
  297. package/dist/components/code-editor/recipe.js +75 -0
  298. package/dist/components/code-editor/recipe.js.map +1 -0
  299. package/dist/components/date-timeline/DateTimeline.js +358 -0
  300. package/dist/components/date-timeline/DateTimeline.js.map +1 -0
  301. package/dist/components/date-timeline/TimelineRow.js +100 -0
  302. package/dist/components/date-timeline/TimelineRow.js.map +1 -0
  303. package/dist/components/date-timeline/useBarDrag.js +44 -0
  304. package/dist/components/date-timeline/useBarDrag.js.map +1 -0
  305. package/dist/components/date-timeline/useMarkerDrag.js +40 -0
  306. package/dist/components/date-timeline/useMarkerDrag.js.map +1 -0
  307. package/dist/components/date-timeline/useTimelineZoom.js +44 -0
  308. package/dist/components/date-timeline/useTimelineZoom.js.map +1 -0
  309. package/dist/components/drag-drop/context.js +37 -0
  310. package/dist/components/drag-drop/context.js.map +1 -0
  311. package/dist/components/drag-drop/recipe.js +270 -0
  312. package/dist/components/drag-drop/recipe.js.map +1 -0
  313. package/dist/components/drag-drop/shift.js +157 -0
  314. package/dist/components/drag-drop/shift.js.map +1 -0
  315. package/dist/components/edit/activation.js +10 -0
  316. package/dist/components/edit/activation.js.map +1 -0
  317. package/dist/components/edit/outcome.js +47 -0
  318. package/dist/components/edit/outcome.js.map +1 -0
  319. package/dist/components/edit/use-edit-session.js +146 -0
  320. package/dist/components/edit/use-edit-session.js.map +1 -0
  321. package/dist/components/file-viewer/FileViewer.js +97 -0
  322. package/dist/components/file-viewer/FileViewer.js.map +1 -0
  323. package/dist/components/file-viewer/PageNumberJumpField.js +47 -0
  324. package/dist/components/file-viewer/PageNumberJumpField.js.map +1 -0
  325. package/dist/components/file-viewer/ViewerControls.js +122 -0
  326. package/dist/components/file-viewer/ViewerControls.js.map +1 -0
  327. package/dist/components/file-viewer/ViewerRail.js +57 -0
  328. package/dist/components/file-viewer/ViewerRail.js.map +1 -0
  329. package/dist/components/file-viewer/ViewerStage.js +112 -0
  330. package/dist/components/file-viewer/ViewerStage.js.map +1 -0
  331. package/dist/components/file-viewer/frames.js +37 -0
  332. package/dist/components/file-viewer/frames.js.map +1 -0
  333. package/dist/components/file-viewer/use-frame-cursor.js +32 -0
  334. package/dist/components/file-viewer/use-frame-cursor.js.map +1 -0
  335. package/dist/components/file-viewer/use-viewer-keys.js +50 -0
  336. package/dist/components/file-viewer/use-viewer-keys.js.map +1 -0
  337. package/dist/components/file-viewer/use-viewer-zoom.js +68 -0
  338. package/dist/components/file-viewer/use-viewer-zoom.js.map +1 -0
  339. package/dist/components/focus-web/FocusWeb.js +322 -0
  340. package/dist/components/focus-web/FocusWeb.js.map +1 -0
  341. package/dist/components/focus-web/layout.js +34 -0
  342. package/dist/components/focus-web/layout.js.map +1 -0
  343. package/dist/components/graph-explorer/GraphExplorer.js +441 -0
  344. package/dist/components/graph-explorer/GraphExplorer.js.map +1 -0
  345. package/dist/components/graph-explorer/camera-math.js +102 -0
  346. package/dist/components/graph-explorer/camera-math.js.map +1 -0
  347. package/dist/components/graph-explorer/tree-layout.js +103 -0
  348. package/dist/components/graph-explorer/tree-layout.js.map +1 -0
  349. package/dist/components/graph-explorer/use-camera.js +82 -0
  350. package/dist/components/graph-explorer/use-camera.js.map +1 -0
  351. package/dist/components/graph-explorer/viewport-gesture.js +107 -0
  352. package/dist/components/graph-explorer/viewport-gesture.js.map +1 -0
  353. package/dist/components/kanban/KanbanBoard.js +219 -0
  354. package/dist/components/kanban/KanbanBoard.js.map +1 -0
  355. package/dist/components/kanban/recipe.js +144 -0
  356. package/dist/components/kanban/recipe.js.map +1 -0
  357. package/dist/components/markdown/Affordances.js +398 -0
  358. package/dist/components/markdown/Affordances.js.map +1 -0
  359. package/dist/components/markdown/AttachmentStrip.js +128 -0
  360. package/dist/components/markdown/AttachmentStrip.js.map +1 -0
  361. package/dist/components/markdown/ImageUpload.js +45 -0
  362. package/dist/components/markdown/ImageUpload.js.map +1 -0
  363. package/dist/components/media-error.js +7 -0
  364. package/dist/components/media-error.js.map +1 -0
  365. package/dist/components/nav-sections.js +61 -0
  366. package/dist/components/nav-sections.js.map +1 -0
  367. package/dist/components/node-canvas/NodeCanvas.js +384 -0
  368. package/dist/components/node-canvas/NodeCanvas.js.map +1 -0
  369. package/dist/components/node-canvas/layout.js +237 -0
  370. package/dist/components/node-canvas/layout.js.map +1 -0
  371. package/dist/components/node-canvas/use-canvas-gestures.js +143 -0
  372. package/dist/components/node-canvas/use-canvas-gestures.js.map +1 -0
  373. package/dist/components/openapi/OpenApiViewer.js +137 -0
  374. package/dist/components/openapi/OpenApiViewer.js.map +1 -0
  375. package/dist/components/openapi/OperationCard.js +145 -0
  376. package/dist/components/openapi/OperationCard.js.map +1 -0
  377. package/dist/components/openapi/SchemaView.js +68 -0
  378. package/dist/components/openapi/SchemaView.js.map +1 -0
  379. package/dist/components/openapi/resolve.js +102 -0
  380. package/dist/components/openapi/resolve.js.map +1 -0
  381. package/dist/components/openapi/types.js +5 -0
  382. package/dist/components/openapi/types.js.map +1 -0
  383. package/dist/components/overlay-shell.js +29 -0
  384. package/dist/components/overlay-shell.js.map +1 -0
  385. package/dist/components/overlay-stack.js +27 -0
  386. package/dist/components/overlay-stack.js.map +1 -0
  387. package/dist/components/paged-window/PageBlock.js +50 -0
  388. package/dist/components/paged-window/PageBlock.js.map +1 -0
  389. package/dist/components/provenance/ConfidenceBar.js +60 -0
  390. package/dist/components/provenance/ConfidenceBar.js.map +1 -0
  391. package/dist/components/provenance/ConfidenceMeter.js +36 -0
  392. package/dist/components/provenance/ConfidenceMeter.js.map +1 -0
  393. package/dist/components/provenance/ConfidenceReadout.js +31 -0
  394. package/dist/components/provenance/ConfidenceReadout.js.map +1 -0
  395. package/dist/components/provenance/ProvenanceBadge.js +44 -0
  396. package/dist/components/provenance/ProvenanceBadge.js.map +1 -0
  397. package/dist/components/provenance/ProvenanceDetail.js +114 -0
  398. package/dist/components/provenance/ProvenanceDetail.js.map +1 -0
  399. package/dist/components/provenance/ProvenanceDisclosure.js +111 -0
  400. package/dist/components/provenance/ProvenanceDisclosure.js.map +1 -0
  401. package/dist/components/provenance/absence.js +31 -0
  402. package/dist/components/provenance/absence.js.map +1 -0
  403. package/dist/components/provenance/types.js +30 -0
  404. package/dist/components/provenance/types.js.map +1 -0
  405. package/dist/components/rbac/AccessRequestPanel.js +153 -0
  406. package/dist/components/rbac/AccessRequestPanel.js.map +1 -0
  407. package/dist/components/rbac/AccountMenu.js +118 -0
  408. package/dist/components/rbac/AccountMenu.js.map +1 -0
  409. package/dist/components/rbac/AgentKeysList.js +20 -0
  410. package/dist/components/rbac/AgentKeysList.js.map +1 -0
  411. package/dist/components/rbac/ApiKeysPanel.js +172 -0
  412. package/dist/components/rbac/ApiKeysPanel.js.map +1 -0
  413. package/dist/components/rbac/ApiKeysTable.js +169 -0
  414. package/dist/components/rbac/ApiKeysTable.js.map +1 -0
  415. package/dist/components/rbac/Brand.js +13 -0
  416. package/dist/components/rbac/Brand.js.map +1 -0
  417. package/dist/components/rbac/Can.js +18 -0
  418. package/dist/components/rbac/Can.js.map +1 -0
  419. package/dist/components/rbac/ChangePasswordForm.js +73 -0
  420. package/dist/components/rbac/ChangePasswordForm.js.map +1 -0
  421. package/dist/components/rbac/DangerZone.js +27 -0
  422. package/dist/components/rbac/DangerZone.js.map +1 -0
  423. package/dist/components/rbac/DevToolsPopover.js +140 -0
  424. package/dist/components/rbac/DevToolsPopover.js.map +1 -0
  425. package/dist/components/rbac/EndedLine.js +24 -0
  426. package/dist/components/rbac/EndedLine.js.map +1 -0
  427. package/dist/components/rbac/InvitationsList.js +148 -0
  428. package/dist/components/rbac/InvitationsList.js.map +1 -0
  429. package/dist/components/rbac/InviteMembersDialog.js +97 -0
  430. package/dist/components/rbac/InviteMembersDialog.js.map +1 -0
  431. package/dist/components/rbac/MembersPanel.js +138 -0
  432. package/dist/components/rbac/MembersPanel.js.map +1 -0
  433. package/dist/components/rbac/PermissionRequestPanel.js +141 -0
  434. package/dist/components/rbac/PermissionRequestPanel.js.map +1 -0
  435. package/dist/components/rbac/ProfileForm.js +86 -0
  436. package/dist/components/rbac/ProfileForm.js.map +1 -0
  437. package/dist/components/rbac/ProfilePage.js +58 -0
  438. package/dist/components/rbac/ProfilePage.js.map +1 -0
  439. package/dist/components/rbac/RBACProvider.js +82 -0
  440. package/dist/components/rbac/RBACProvider.js.map +1 -0
  441. package/dist/components/rbac/RoleEditorDialog.js +90 -0
  442. package/dist/components/rbac/RoleEditorDialog.js.map +1 -0
  443. package/dist/components/rbac/RoleKeyPicker.js +77 -0
  444. package/dist/components/rbac/RoleKeyPicker.js.map +1 -0
  445. package/dist/components/rbac/RolePermissionMatrix.js +37 -0
  446. package/dist/components/rbac/RolePermissionMatrix.js.map +1 -0
  447. package/dist/components/rbac/RolesPermissionsPage.js +142 -0
  448. package/dist/components/rbac/RolesPermissionsPage.js.map +1 -0
  449. package/dist/components/rbac/SessionsList.js +146 -0
  450. package/dist/components/rbac/SessionsList.js.map +1 -0
  451. package/dist/components/rbac/TeamSettingsForm.js +69 -0
  452. package/dist/components/rbac/TeamSettingsForm.js.map +1 -0
  453. package/dist/components/rbac/TeamSwitcher.js +66 -0
  454. package/dist/components/rbac/TeamSwitcher.js.map +1 -0
  455. package/dist/components/rbac/approvalPanelParts.js +130 -0
  456. package/dist/components/rbac/approvalPanelParts.js.map +1 -0
  457. package/dist/components/rbac/permissionSections.js +8 -0
  458. package/dist/components/rbac/permissionSections.js.map +1 -0
  459. package/dist/components/rbac/stagedForm.js +42 -0
  460. package/dist/components/rbac/stagedForm.js.map +1 -0
  461. package/dist/components/rbac/useStagedImage.js +21 -0
  462. package/dist/components/rbac/useStagedImage.js.map +1 -0
  463. package/dist/components/roadmap/PhaseManager.js +48 -0
  464. package/dist/components/roadmap/PhaseManager.js.map +1 -0
  465. package/dist/components/roadmap/RoadmapItemCard.js +96 -0
  466. package/dist/components/roadmap/RoadmapItemCard.js.map +1 -0
  467. package/dist/components/roadmap/RoadmapPage.js +34 -0
  468. package/dist/components/roadmap/RoadmapPage.js.map +1 -0
  469. package/dist/components/roadmap/RoadmapSwimlaneBoard.js +91 -0
  470. package/dist/components/roadmap/RoadmapSwimlaneBoard.js.map +1 -0
  471. package/dist/components/roadmap/TrackManager.js +58 -0
  472. package/dist/components/roadmap/TrackManager.js.map +1 -0
  473. package/dist/components/roadmap/UseCaseCard.js +93 -0
  474. package/dist/components/roadmap/UseCaseCard.js.map +1 -0
  475. package/dist/components/roadmap/UseCaseLedgerPage.js +98 -0
  476. package/dist/components/roadmap/UseCaseLedgerPage.js.map +1 -0
  477. package/dist/components/roadmap/chip-tones.js +9 -0
  478. package/dist/components/roadmap/chip-tones.js.map +1 -0
  479. package/dist/components/roadmap/derive.js +28 -0
  480. package/dist/components/roadmap/derive.js.map +1 -0
  481. package/dist/components/stepper/Stepper.js +276 -0
  482. package/dist/components/stepper/Stepper.js.map +1 -0
  483. package/dist/components/stepper/derive.js +53 -0
  484. package/dist/components/stepper/derive.js.map +1 -0
  485. package/dist/confidence.css +222 -0
  486. package/dist/fonts/bricolage-grotesque-0.woff2 +0 -0
  487. package/dist/fonts/bricolage-grotesque-1.woff2 +0 -0
  488. package/dist/fonts/bricolage-grotesque-2.woff2 +0 -0
  489. package/dist/fonts/figtree-0.woff2 +0 -0
  490. package/dist/fonts/figtree-1.woff2 +0 -0
  491. package/dist/fonts/figtree-2.woff2 +0 -0
  492. package/dist/fonts/figtree-3.woff2 +0 -0
  493. package/dist/fonts/jetbrains-mono-0.woff2 +0 -0
  494. package/dist/fonts/jetbrains-mono-1.woff2 +0 -0
  495. package/dist/fonts/jetbrains-mono-10.woff2 +0 -0
  496. package/dist/fonts/jetbrains-mono-11.woff2 +0 -0
  497. package/dist/fonts/jetbrains-mono-2.woff2 +0 -0
  498. package/dist/fonts/jetbrains-mono-3.woff2 +0 -0
  499. package/dist/fonts/jetbrains-mono-4.woff2 +0 -0
  500. package/dist/fonts/jetbrains-mono-5.woff2 +0 -0
  501. package/dist/fonts/jetbrains-mono-6.woff2 +0 -0
  502. package/dist/fonts/jetbrains-mono-7.woff2 +0 -0
  503. package/dist/fonts/jetbrains-mono-8.woff2 +0 -0
  504. package/dist/fonts/jetbrains-mono-9.woff2 +0 -0
  505. package/dist/fonts.css +187 -0
  506. package/dist/icons/data.js +233 -0
  507. package/dist/icons/data.js.map +1 -0
  508. package/dist/index.js +942 -0
  509. package/dist/index.js.map +1 -0
  510. package/dist/lib/attention.js +75 -0
  511. package/dist/lib/attention.js.map +1 -0
  512. package/dist/lib/board/anchor.js +14 -0
  513. package/dist/lib/board/anchor.js.map +1 -0
  514. package/dist/lib/board/model.js +41 -0
  515. package/dist/lib/board/model.js.map +1 -0
  516. package/dist/lib/board/move.js +161 -0
  517. package/dist/lib/board/move.js.map +1 -0
  518. package/dist/lib/board/position.js +11 -0
  519. package/dist/lib/board/position.js.map +1 -0
  520. package/dist/lib/board/rejection.js +22 -0
  521. package/dist/lib/board/rejection.js.map +1 -0
  522. package/dist/lib/board/use-board.js +43 -0
  523. package/dist/lib/board/use-board.js.map +1 -0
  524. package/dist/lib/calendar/band-packer.js +44 -0
  525. package/dist/lib/calendar/band-packer.js.map +1 -0
  526. package/dist/lib/calendar/drag.js +74 -0
  527. package/dist/lib/calendar/drag.js.map +1 -0
  528. package/dist/lib/calendar/lane-packer.js +67 -0
  529. package/dist/lib/calendar/lane-packer.js.map +1 -0
  530. package/dist/lib/calendar/segments.js +82 -0
  531. package/dist/lib/calendar/segments.js.map +1 -0
  532. package/dist/lib/calendar/types.js +7 -0
  533. package/dist/lib/calendar/types.js.map +1 -0
  534. package/dist/lib/chart-palette.js +27 -0
  535. package/dist/lib/chart-palette.js.map +1 -0
  536. package/dist/lib/clipboard.js +30 -0
  537. package/dist/lib/clipboard.js.map +1 -0
  538. package/dist/lib/cn.js +9 -0
  539. package/dist/lib/cn.js.map +1 -0
  540. package/dist/lib/color.js +24 -0
  541. package/dist/lib/color.js.map +1 -0
  542. package/dist/lib/component-guidance.js +297 -0
  543. package/dist/lib/component-guidance.js.map +1 -0
  544. package/dist/lib/confidence.js +22 -0
  545. package/dist/lib/confidence.js.map +1 -0
  546. package/dist/lib/date-timeline/scale.js +197 -0
  547. package/dist/lib/date-timeline/scale.js.map +1 -0
  548. package/dist/lib/design-frame/document.js +44 -0
  549. package/dist/lib/design-frame/document.js.map +1 -0
  550. package/dist/lib/design-frame/mini-app-script.js +107 -0
  551. package/dist/lib/design-frame/mini-app-script.js.map +1 -0
  552. package/dist/lib/design-frame/mini-app.js +12 -0
  553. package/dist/lib/design-frame/mini-app.js.map +1 -0
  554. package/dist/lib/design-frame/protocol.js +46 -0
  555. package/dist/lib/design-frame/protocol.js.map +1 -0
  556. package/dist/lib/dev-warn.js +17 -0
  557. package/dist/lib/dev-warn.js.map +1 -0
  558. package/dist/lib/dnd/announce.js +120 -0
  559. package/dist/lib/dnd/announce.js.map +1 -0
  560. package/dist/lib/dnd/autoscroll.js +123 -0
  561. package/dist/lib/dnd/autoscroll.js.map +1 -0
  562. package/dist/lib/dnd/cross-drop.js +11 -0
  563. package/dist/lib/dnd/cross-drop.js.map +1 -0
  564. package/dist/lib/dnd/geometry.js +99 -0
  565. package/dist/lib/dnd/geometry.js.map +1 -0
  566. package/dist/lib/dnd/sensors/gesture.js +86 -0
  567. package/dist/lib/dnd/sensors/gesture.js.map +1 -0
  568. package/dist/lib/dnd/sensors/keyboard.js +47 -0
  569. package/dist/lib/dnd/sensors/keyboard.js.map +1 -0
  570. package/dist/lib/dnd/sensors/pointer.js +32 -0
  571. package/dist/lib/dnd/sensors/pointer.js.map +1 -0
  572. package/dist/lib/dnd/session.js +256 -0
  573. package/dist/lib/dnd/session.js.map +1 -0
  574. package/dist/lib/dnd/use-drag.js +90 -0
  575. package/dist/lib/dnd/use-drag.js.map +1 -0
  576. package/dist/lib/dom/scroll-ancestor.js +18 -0
  577. package/dist/lib/dom/scroll-ancestor.js.map +1 -0
  578. package/dist/lib/format.js +23 -0
  579. package/dist/lib/format.js.map +1 -0
  580. package/dist/lib/group-in-order.js +13 -0
  581. package/dist/lib/group-in-order.js.map +1 -0
  582. package/dist/lib/header-fold.js +11 -0
  583. package/dist/lib/header-fold.js.map +1 -0
  584. package/dist/lib/i18n/areas/auth-provenance-flows.js +156 -0
  585. package/dist/lib/i18n/areas/auth-provenance-flows.js.map +1 -0
  586. package/dist/lib/i18n/areas/board.js +35 -0
  587. package/dist/lib/i18n/areas/board.js.map +1 -0
  588. package/dist/lib/i18n/areas/card-face.js +10 -0
  589. package/dist/lib/i18n/areas/card-face.js.map +1 -0
  590. package/dist/lib/i18n/areas/chat-chart.js +118 -0
  591. package/dist/lib/i18n/areas/chat-chart.js.map +1 -0
  592. package/dist/lib/i18n/areas/code-editor.js +24 -0
  593. package/dist/lib/i18n/areas/code-editor.js.map +1 -0
  594. package/dist/lib/i18n/areas/date-timeline.js +21 -0
  595. package/dist/lib/i18n/areas/date-timeline.js.map +1 -0
  596. package/dist/lib/i18n/areas/dates.js +71 -0
  597. package/dist/lib/i18n/areas/dates.js.map +1 -0
  598. package/dist/lib/i18n/areas/docs-views.js +183 -0
  599. package/dist/lib/i18n/areas/docs-views.js.map +1 -0
  600. package/dist/lib/i18n/areas/feedback.js +75 -0
  601. package/dist/lib/i18n/areas/feedback.js.map +1 -0
  602. package/dist/lib/i18n/areas/formats.js +24 -0
  603. package/dist/lib/i18n/areas/formats.js.map +1 -0
  604. package/dist/lib/i18n/areas/forms.js +110 -0
  605. package/dist/lib/i18n/areas/forms.js.map +1 -0
  606. package/dist/lib/i18n/areas/keys.js +25 -0
  607. package/dist/lib/i18n/areas/keys.js.map +1 -0
  608. package/dist/lib/i18n/areas/markdown.js +136 -0
  609. package/dist/lib/i18n/areas/markdown.js.map +1 -0
  610. package/dist/lib/i18n/areas/move-rejected.js +14 -0
  611. package/dist/lib/i18n/areas/move-rejected.js.map +1 -0
  612. package/dist/lib/i18n/areas/navigation.js +104 -0
  613. package/dist/lib/i18n/areas/navigation.js.map +1 -0
  614. package/dist/lib/i18n/areas/rbac.js +332 -0
  615. package/dist/lib/i18n/areas/rbac.js.map +1 -0
  616. package/dist/lib/i18n/emphasis.js +6 -0
  617. package/dist/lib/i18n/emphasis.js.map +1 -0
  618. package/dist/lib/i18n/number-format.js +9 -0
  619. package/dist/lib/i18n/number-format.js.map +1 -0
  620. package/dist/lib/i18n/plural.js +9 -0
  621. package/dist/lib/i18n/plural.js.map +1 -0
  622. package/dist/lib/i18n/provider.js +27 -0
  623. package/dist/lib/i18n/provider.js.map +1 -0
  624. package/dist/lib/i18n/strings.js +38 -0
  625. package/dist/lib/i18n/strings.js.map +1 -0
  626. package/dist/lib/icons.js +17 -0
  627. package/dist/lib/icons.js.map +1 -0
  628. package/dist/lib/interactive-target.js +9 -0
  629. package/dist/lib/interactive-target.js.map +1 -0
  630. package/dist/lib/intl-cache.js +69 -0
  631. package/dist/lib/intl-cache.js.map +1 -0
  632. package/dist/lib/legal-document.js +37 -0
  633. package/dist/lib/legal-document.js.map +1 -0
  634. package/dist/lib/line-diff-model.js +51 -0
  635. package/dist/lib/line-diff-model.js.map +1 -0
  636. package/dist/lib/markdown/attachments.js +71 -0
  637. package/dist/lib/markdown/attachments.js.map +1 -0
  638. package/dist/lib/markdown/caret-map.js +153 -0
  639. package/dist/lib/markdown/caret-map.js.map +1 -0
  640. package/dist/lib/markdown/caret.js +35 -0
  641. package/dist/lib/markdown/caret.js.map +1 -0
  642. package/dist/lib/markdown/commands.js +443 -0
  643. package/dist/lib/markdown/commands.js.map +1 -0
  644. package/dist/lib/markdown/convert.js +153 -0
  645. package/dist/lib/markdown/convert.js.map +1 -0
  646. package/dist/lib/markdown/dom.js +89 -0
  647. package/dist/lib/markdown/dom.js.map +1 -0
  648. package/dist/lib/markdown/edit.js +92 -0
  649. package/dist/lib/markdown/edit.js.map +1 -0
  650. package/dist/lib/markdown/history.js +79 -0
  651. package/dist/lib/markdown/history.js.map +1 -0
  652. package/dist/lib/markdown/hotkeys.js +63 -0
  653. package/dist/lib/markdown/hotkeys.js.map +1 -0
  654. package/dist/lib/markdown/image-pipeline.js +236 -0
  655. package/dist/lib/markdown/image-pipeline.js.map +1 -0
  656. package/dist/lib/markdown/images.js +85 -0
  657. package/dist/lib/markdown/images.js.map +1 -0
  658. package/dist/lib/markdown/input.js +210 -0
  659. package/dist/lib/markdown/input.js.map +1 -0
  660. package/dist/lib/markdown/keys.js +37 -0
  661. package/dist/lib/markdown/keys.js.map +1 -0
  662. package/dist/lib/markdown/paste.js +180 -0
  663. package/dist/lib/markdown/paste.js.map +1 -0
  664. package/dist/lib/markdown/position.js +111 -0
  665. package/dist/lib/markdown/position.js.map +1 -0
  666. package/dist/lib/markdown/project.js +108 -0
  667. package/dist/lib/markdown/project.js.map +1 -0
  668. package/dist/lib/markdown/reconcile.js +127 -0
  669. package/dist/lib/markdown/reconcile.js.map +1 -0
  670. package/dist/lib/markdown/surface.js +373 -0
  671. package/dist/lib/markdown/surface.js.map +1 -0
  672. package/dist/lib/motion.js +22 -0
  673. package/dist/lib/motion.js.map +1 -0
  674. package/dist/lib/pad.js +7 -0
  675. package/dist/lib/pad.js.map +1 -0
  676. package/dist/lib/paged-window/layout.js +15 -0
  677. package/dist/lib/paged-window/layout.js.map +1 -0
  678. package/dist/lib/paged-window/list-owner.js +21 -0
  679. package/dist/lib/paged-window/list-owner.js.map +1 -0
  680. package/dist/lib/paged-window/records-binding.js +239 -0
  681. package/dist/lib/paged-window/records-binding.js.map +1 -0
  682. package/dist/lib/paged-window/store.js +562 -0
  683. package/dist/lib/paged-window/store.js.map +1 -0
  684. package/dist/lib/paged-window/use-measured-pitch.js +38 -0
  685. package/dist/lib/paged-window/use-measured-pitch.js.map +1 -0
  686. package/dist/lib/paged-window/use-page-visibility.js +36 -0
  687. package/dist/lib/paged-window/use-page-visibility.js.map +1 -0
  688. package/dist/lib/paged-window/use-paged-window.js +43 -0
  689. package/dist/lib/paged-window/use-paged-window.js.map +1 -0
  690. package/dist/lib/paged-window/use-scroll-root.js +12 -0
  691. package/dist/lib/paged-window/use-scroll-root.js.map +1 -0
  692. package/dist/lib/persist.js +84 -0
  693. package/dist/lib/persist.js.map +1 -0
  694. package/dist/lib/preference-values.js +13 -0
  695. package/dist/lib/preference-values.js.map +1 -0
  696. package/dist/lib/preferences.js +86 -0
  697. package/dist/lib/preferences.js.map +1 -0
  698. package/dist/lib/reads/hooks.js +156 -0
  699. package/dist/lib/reads/hooks.js.map +1 -0
  700. package/dist/lib/reads/optimistic.js +169 -0
  701. package/dist/lib/reads/optimistic.js.map +1 -0
  702. package/dist/lib/reads/refetch.js +108 -0
  703. package/dist/lib/reads/refetch.js.map +1 -0
  704. package/dist/lib/reads/slots.js +215 -0
  705. package/dist/lib/reads/slots.js.map +1 -0
  706. package/dist/lib/realtime/hooks.js +40 -0
  707. package/dist/lib/realtime/hooks.js.map +1 -0
  708. package/dist/lib/realtime/provider.js +25 -0
  709. package/dist/lib/realtime/provider.js.map +1 -0
  710. package/dist/lib/realtime/registry.js +472 -0
  711. package/dist/lib/realtime/registry.js.map +1 -0
  712. package/dist/lib/records/define-record-type.js +33 -0
  713. package/dist/lib/records/define-record-type.js.map +1 -0
  714. package/dist/lib/records/hooks.js +39 -0
  715. package/dist/lib/records/hooks.js.map +1 -0
  716. package/dist/lib/records/store.js +572 -0
  717. package/dist/lib/records/store.js.map +1 -0
  718. package/dist/lib/records/wire.js +58 -0
  719. package/dist/lib/records/wire.js.map +1 -0
  720. package/dist/lib/reduced-motion-help.js +19 -0
  721. package/dist/lib/reduced-motion-help.js.map +1 -0
  722. package/dist/lib/scroll-caret.js +18 -0
  723. package/dist/lib/scroll-caret.js.map +1 -0
  724. package/dist/lib/sim/createSimStore.js +54 -0
  725. package/dist/lib/sim/createSimStore.js.map +1 -0
  726. package/dist/lib/sim/latency.js +28 -0
  727. package/dist/lib/sim/latency.js.map +1 -0
  728. package/dist/lib/sim/registry.js +13 -0
  729. package/dist/lib/sim/registry.js.map +1 -0
  730. package/dist/lib/sim/settings.js +41 -0
  731. package/dist/lib/sim/settings.js.map +1 -0
  732. package/dist/lib/submit-shortcut.js +25 -0
  733. package/dist/lib/submit-shortcut.js.map +1 -0
  734. package/dist/lib/syntax/index.js +33 -0
  735. package/dist/lib/syntax/index.js.map +1 -0
  736. package/dist/lib/syntax/languages/bash.js +77 -0
  737. package/dist/lib/syntax/languages/bash.js.map +1 -0
  738. package/dist/lib/syntax/languages/css.js +81 -0
  739. package/dist/lib/syntax/languages/css.js.map +1 -0
  740. package/dist/lib/syntax/languages/html.js +91 -0
  741. package/dist/lib/syntax/languages/html.js.map +1 -0
  742. package/dist/lib/syntax/languages/index.js +49 -0
  743. package/dist/lib/syntax/languages/index.js.map +1 -0
  744. package/dist/lib/syntax/languages/javascript.js +133 -0
  745. package/dist/lib/syntax/languages/javascript.js.map +1 -0
  746. package/dist/lib/syntax/languages/json.js +45 -0
  747. package/dist/lib/syntax/languages/json.js.map +1 -0
  748. package/dist/lib/syntax/languages/mongodb.js +24 -0
  749. package/dist/lib/syntax/languages/mongodb.js.map +1 -0
  750. package/dist/lib/syntax/languages/plain.js +10 -0
  751. package/dist/lib/syntax/languages/plain.js.map +1 -0
  752. package/dist/lib/syntax/languages/sql.js +113 -0
  753. package/dist/lib/syntax/languages/sql.js.map +1 -0
  754. package/dist/lib/syntax/languages/vue.js +31 -0
  755. package/dist/lib/syntax/languages/vue.js.map +1 -0
  756. package/dist/lib/syntax/languages/yaml.js +55 -0
  757. package/dist/lib/syntax/languages/yaml.js.map +1 -0
  758. package/dist/lib/syntax/markdown/grammar.js +52 -0
  759. package/dist/lib/syntax/markdown/grammar.js.map +1 -0
  760. package/dist/lib/syntax/markdown/inline.js +477 -0
  761. package/dist/lib/syntax/markdown/inline.js.map +1 -0
  762. package/dist/lib/syntax/markdown/parse.js +464 -0
  763. package/dist/lib/syntax/markdown/parse.js.map +1 -0
  764. package/dist/lib/syntax/markdown/refs.js +94 -0
  765. package/dist/lib/syntax/markdown/refs.js.map +1 -0
  766. package/dist/lib/syntax/markdown/render.js +230 -0
  767. package/dist/lib/syntax/markdown/render.js.map +1 -0
  768. package/dist/lib/syntax/markdown/spans.js +40 -0
  769. package/dist/lib/syntax/markdown/spans.js.map +1 -0
  770. package/dist/lib/syntax/registry.js +55 -0
  771. package/dist/lib/syntax/registry.js.map +1 -0
  772. package/dist/lib/syntax/tokenize.js +96 -0
  773. package/dist/lib/syntax/tokenize.js.map +1 -0
  774. package/dist/lib/time/instant.js +7 -0
  775. package/dist/lib/time/instant.js.map +1 -0
  776. package/dist/lib/time/plain.js +83 -0
  777. package/dist/lib/time/plain.js.map +1 -0
  778. package/dist/lib/time/relativeAge.js +20 -0
  779. package/dist/lib/time/relativeAge.js.map +1 -0
  780. package/dist/lib/time/relativeClock.js +59 -0
  781. package/dist/lib/time/relativeClock.js.map +1 -0
  782. package/dist/lib/time/types.js +23 -0
  783. package/dist/lib/time/types.js.map +1 -0
  784. package/dist/lib/time/zone.js +148 -0
  785. package/dist/lib/time/zone.js.map +1 -0
  786. package/dist/lib/use-controllable.js +16 -0
  787. package/dist/lib/use-controllable.js.map +1 -0
  788. package/dist/lib/use-fill-height.js +49 -0
  789. package/dist/lib/use-fill-height.js.map +1 -0
  790. package/dist/lib/use-hydrated.js +14 -0
  791. package/dist/lib/use-hydrated.js.map +1 -0
  792. package/dist/lib/use-media-query.js +30 -0
  793. package/dist/lib/use-media-query.js.map +1 -0
  794. package/dist/lib/use-relabel-base-ui-dismiss.js +26 -0
  795. package/dist/lib/use-relabel-base-ui-dismiss.js.map +1 -0
  796. package/dist/lib/use-release-snap-drag.js +29 -0
  797. package/dist/lib/use-release-snap-drag.js.map +1 -0
  798. package/dist/lib/use-roving-options.js +18 -0
  799. package/dist/lib/use-roving-options.js.map +1 -0
  800. package/dist/lib/values/absent.js +5 -0
  801. package/dist/lib/values/absent.js.map +1 -0
  802. package/dist/lib/values/boolean.js +13 -0
  803. package/dist/lib/values/boolean.js.map +1 -0
  804. package/dist/lib/values/currency.js +23 -0
  805. package/dist/lib/values/currency.js.map +1 -0
  806. package/dist/lib/values/date.js +35 -0
  807. package/dist/lib/values/date.js.map +1 -0
  808. package/dist/lib/values/datetime.js +54 -0
  809. package/dist/lib/values/datetime.js.map +1 -0
  810. package/dist/lib/values/locale-date.js +60 -0
  811. package/dist/lib/values/locale-date.js.map +1 -0
  812. package/dist/lib/values/number.js +16 -0
  813. package/dist/lib/values/number.js.map +1 -0
  814. package/dist/pure.js +379 -0
  815. package/dist/pure.js.map +1 -0
  816. package/dist/styles.css +190 -0
  817. package/dist/theme.css +360 -0
  818. package/dist/types/components/Accordion.d.ts +15 -0
  819. package/dist/types/components/AgentWorkingSpinner.d.ts +23 -0
  820. package/dist/types/components/AppShell.d.ts +164 -0
  821. package/dist/types/components/Attention.d.ts +87 -0
  822. package/dist/types/components/Avatar.d.ts +154 -0
  823. package/dist/types/components/Badge.d.ts +131 -0
  824. package/dist/types/components/Board.d.ts +239 -0
  825. package/dist/types/components/Button.d.ts +208 -0
  826. package/dist/types/components/Callout.d.ts +163 -0
  827. package/dist/types/components/Card.d.ts +219 -0
  828. package/dist/types/components/Choice.d.ts +127 -0
  829. package/dist/types/components/CodeEditor.d.ts +86 -0
  830. package/dist/types/components/ColorPicker.d.ts +14 -0
  831. package/dist/types/components/Combobox.d.ts +43 -0
  832. package/dist/types/components/CommandPalette.d.ts +35 -0
  833. package/dist/types/components/ConcentricRing.d.ts +61 -0
  834. package/dist/types/components/ConnectionCard.d.ts +64 -0
  835. package/dist/types/components/ContextItemRow.d.ts +35 -0
  836. package/dist/types/components/CopyValue.d.ts +14 -0
  837. package/dist/types/components/CountBadge.d.ts +14 -0
  838. package/dist/types/components/DateCalendar.d.ts +30 -0
  839. package/dist/types/components/DateField.d.ts +29 -0
  840. package/dist/types/components/DatePicker.d.ts +20 -0
  841. package/dist/types/components/DateTimeText.d.ts +9 -0
  842. package/dist/types/components/DescriptionList.d.ts +40 -0
  843. package/dist/types/components/Dialog.d.ts +269 -0
  844. package/dist/types/components/DragDrop.d.ts +196 -0
  845. package/dist/types/components/Drawer.d.ts +163 -0
  846. package/dist/types/components/EditGutter.d.ts +44 -0
  847. package/dist/types/components/EmojiPicker.d.ts +30 -0
  848. package/dist/types/components/ErrorBoundary.d.ts +43 -0
  849. package/dist/types/components/Field.d.ts +37 -0
  850. package/dist/types/components/FileUpload.d.ts +22 -0
  851. package/dist/types/components/FilterMenu.d.ts +120 -0
  852. package/dist/types/components/GatesSection.d.ts +79 -0
  853. package/dist/types/components/Icon.d.ts +40 -0
  854. package/dist/types/components/IconButton.d.ts +69 -0
  855. package/dist/types/components/IconStack.d.ts +28 -0
  856. package/dist/types/components/ImageUploadField.d.ts +38 -0
  857. package/dist/types/components/InlineEdit.d.ts +183 -0
  858. package/dist/types/components/InlineMarkdownEdit.d.ts +100 -0
  859. package/dist/types/components/Input.d.ts +128 -0
  860. package/dist/types/components/LegalDocument.d.ts +23 -0
  861. package/dist/types/components/LineDiff.d.ts +53 -0
  862. package/dist/types/components/ListHeader.d.ts +45 -0
  863. package/dist/types/components/Loading.d.ts +131 -0
  864. package/dist/types/components/Markdown.d.ts +35 -0
  865. package/dist/types/components/MarkdownEditor.d.ts +129 -0
  866. package/dist/types/components/Menu.d.ts +157 -0
  867. package/dist/types/components/Navigation.d.ts +67 -0
  868. package/dist/types/components/NumberInput.d.ts +177 -0
  869. package/dist/types/components/OTPInput.d.ts +13 -0
  870. package/dist/types/components/OrderedEntityManager.d.ts +64 -0
  871. package/dist/types/components/PagedWindowList.d.ts +23 -0
  872. package/dist/types/components/PaginationBar.d.ts +31 -0
  873. package/dist/types/components/Panel.d.ts +94 -0
  874. package/dist/types/components/PasswordInput.d.ts +7 -0
  875. package/dist/types/components/PasswordRequirements.d.ts +11 -0
  876. package/dist/types/components/PatchDiff.d.ts +38 -0
  877. package/dist/types/components/PendingVeil.d.ts +8 -0
  878. package/dist/types/components/Popover.d.ts +231 -0
  879. package/dist/types/components/Progress.d.ts +580 -0
  880. package/dist/types/components/RatingScale.d.ts +30 -0
  881. package/dist/types/components/ReadMore.d.ts +26 -0
  882. package/dist/types/components/RecordCard.d.ts +413 -0
  883. package/dist/types/components/RelativeTime.d.ts +17 -0
  884. package/dist/types/components/SandboxedFrame.d.ts +37 -0
  885. package/dist/types/components/SearchInput.d.ts +6 -0
  886. package/dist/types/components/SecretField.d.ts +90 -0
  887. package/dist/types/components/SectionNav.d.ts +15 -0
  888. package/dist/types/components/Select.d.ts +53 -0
  889. package/dist/types/components/SequenceDiagram.d.ts +15 -0
  890. package/dist/types/components/SettingRow.d.ts +144 -0
  891. package/dist/types/components/SignOffRings.d.ts +29 -0
  892. package/dist/types/components/Slider.d.ts +255 -0
  893. package/dist/types/components/SolutionChoice.d.ts +49 -0
  894. package/dist/types/components/SortMenu.d.ts +45 -0
  895. package/dist/types/components/Spinner.d.ts +29 -0
  896. package/dist/types/components/Stat.d.ts +136 -0
  897. package/dist/types/components/StatusSelect.d.ts +93 -0
  898. package/dist/types/components/Surface.d.ts +145 -0
  899. package/dist/types/components/Table.d.ts +164 -0
  900. package/dist/types/components/Tabs.d.ts +142 -0
  901. package/dist/types/components/ThemeMenu.d.ts +56 -0
  902. package/dist/types/components/Toast.d.ts +63 -0
  903. package/dist/types/components/Toggle.d.ts +168 -0
  904. package/dist/types/components/ToggleMatrix.d.ts +51 -0
  905. package/dist/types/components/Tree.d.ts +20 -0
  906. package/dist/types/components/TriStateSwitch.d.ts +63 -0
  907. package/dist/types/components/VideoPlayer.d.ts +26 -0
  908. package/dist/types/components/auth/AcceptInvitationCard.d.ts +54 -0
  909. package/dist/types/components/auth/AuthLayout.d.ts +12 -0
  910. package/dist/types/components/auth/ForgotPasswordForm.d.ts +6 -0
  911. package/dist/types/components/auth/LoginForm.d.ts +13 -0
  912. package/dist/types/components/auth/ResetPasswordForm.d.ts +9 -0
  913. package/dist/types/components/auth/SignInProviders.d.ts +56 -0
  914. package/dist/types/components/auth/SignupCard.d.ts +62 -0
  915. package/dist/types/components/auth/TermsAcceptance.d.ts +14 -0
  916. package/dist/types/components/auth/index.d.ts +8 -0
  917. package/dist/types/components/board/context.d.ts +65 -0
  918. package/dist/types/components/board/recipe.d.ts +97 -0
  919. package/dist/types/components/calendar/CalendarMonth.d.ts +32 -0
  920. package/dist/types/components/calendar/CalendarTimeGrid.d.ts +74 -0
  921. package/dist/types/components/calendar/EventActions.d.ts +16 -0
  922. package/dist/types/components/calendar/format.d.ts +42 -0
  923. package/dist/types/components/calendar/palette.d.ts +17 -0
  924. package/dist/types/components/calendar/use-calendar-drag.d.ts +53 -0
  925. package/dist/types/components/calendar/use-event-keyboard.d.ts +23 -0
  926. package/dist/types/components/calendar/use-grid-navigation.d.ts +47 -0
  927. package/dist/types/components/calendar/use-now.d.ts +20 -0
  928. package/dist/types/components/card-face/AcRingGlyph.d.ts +20 -0
  929. package/dist/types/components/card-face/BoardCardAgentSlot.d.ts +19 -0
  930. package/dist/types/components/card-face/CardFace.d.ts +106 -0
  931. package/dist/types/components/card-face/CardTypeBadge.d.ts +21 -0
  932. package/dist/types/components/card-face/EffortBadge.d.ts +9 -0
  933. package/dist/types/components/card-face/GateRingGlyph.d.ts +22 -0
  934. package/dist/types/components/card-face/OverflowRow.d.ts +40 -0
  935. package/dist/types/components/card-face/TapTip.d.ts +15 -0
  936. package/dist/types/components/card-face/hit-area.d.ts +20 -0
  937. package/dist/types/components/card-face/vocabulary.d.ts +83 -0
  938. package/dist/types/components/chart/BarList.d.ts +27 -0
  939. package/dist/types/components/chart/LineChart.d.ts +64 -0
  940. package/dist/types/components/chart/ShareBar.d.ts +26 -0
  941. package/dist/types/components/chart/TimeSeriesChart.d.ts +60 -0
  942. package/dist/types/components/chart/label-metrics.d.ts +9 -0
  943. package/dist/types/components/chart/line-chart-axis.d.ts +14 -0
  944. package/dist/types/components/chart/line-chart-scale.d.ts +55 -0
  945. package/dist/types/components/chart/line-series-style.d.ts +14 -0
  946. package/dist/types/components/chart/share-bar-labels.d.ts +17 -0
  947. package/dist/types/components/chart/shared.d.ts +122 -0
  948. package/dist/types/components/chart/time-series-scale.d.ts +29 -0
  949. package/dist/types/components/chat/Attachment.d.ts +125 -0
  950. package/dist/types/components/chat/Chat.d.ts +60 -0
  951. package/dist/types/components/chat/Composer.d.ts +62 -0
  952. package/dist/types/components/chat/ContextMeter.d.ts +45 -0
  953. package/dist/types/components/chat/EffortControl.d.ts +23 -0
  954. package/dist/types/components/chat/FileCover.d.ts +14 -0
  955. package/dist/types/components/chat/Message.d.ts +66 -0
  956. package/dist/types/components/chat/MessageScroller.d.ts +18 -0
  957. package/dist/types/components/chat/ModelSelector.d.ts +44 -0
  958. package/dist/types/components/chat/StreamingMarkdown.d.ts +11 -0
  959. package/dist/types/components/chat/download-file.d.ts +7 -0
  960. package/dist/types/components/chat/file-icon.d.ts +29 -0
  961. package/dist/types/components/chat/types.d.ts +165 -0
  962. package/dist/types/components/checklist/StatusChecklist.d.ts +37 -0
  963. package/dist/types/components/checklist/index.d.ts +3 -0
  964. package/dist/types/components/checklist/tally.d.ts +19 -0
  965. package/dist/types/components/checklist/types.d.ts +28 -0
  966. package/dist/types/components/code-editor/context.d.ts +32 -0
  967. package/dist/types/components/code-editor/editing.d.ts +39 -0
  968. package/dist/types/components/code-editor/highlight.d.ts +20 -0
  969. package/dist/types/components/code-editor/recipe.d.ts +109 -0
  970. package/dist/types/components/date-timeline/DateTimeline.d.ts +99 -0
  971. package/dist/types/components/date-timeline/TimelineRow.d.ts +22 -0
  972. package/dist/types/components/date-timeline/useBarDrag.d.ts +15 -0
  973. package/dist/types/components/date-timeline/useMarkerDrag.d.ts +14 -0
  974. package/dist/types/components/date-timeline/useTimelineZoom.d.ts +23 -0
  975. package/dist/types/components/drag-drop/context.d.ts +85 -0
  976. package/dist/types/components/drag-drop/recipe.d.ts +163 -0
  977. package/dist/types/components/drag-drop/shift.d.ts +153 -0
  978. package/dist/types/components/edit/activation.d.ts +21 -0
  979. package/dist/types/components/edit/outcome.d.ts +29 -0
  980. package/dist/types/components/edit/use-edit-session.d.ts +77 -0
  981. package/dist/types/components/file-viewer/FileViewer.d.ts +2 -0
  982. package/dist/types/components/file-viewer/PageNumberJumpField.d.ts +9 -0
  983. package/dist/types/components/file-viewer/ViewerControls.d.ts +20 -0
  984. package/dist/types/components/file-viewer/ViewerRail.d.ts +10 -0
  985. package/dist/types/components/file-viewer/ViewerStage.d.ts +22 -0
  986. package/dist/types/components/file-viewer/frames.d.ts +28 -0
  987. package/dist/types/components/file-viewer/index.d.ts +3 -0
  988. package/dist/types/components/file-viewer/types.d.ts +70 -0
  989. package/dist/types/components/file-viewer/use-frame-cursor.d.ts +13 -0
  990. package/dist/types/components/file-viewer/use-viewer-keys.d.ts +24 -0
  991. package/dist/types/components/file-viewer/use-viewer-zoom.d.ts +29 -0
  992. package/dist/types/components/focus-web/FocusWeb.d.ts +3 -0
  993. package/dist/types/components/focus-web/index.d.ts +4 -0
  994. package/dist/types/components/focus-web/layout.d.ts +55 -0
  995. package/dist/types/components/focus-web/types.d.ts +131 -0
  996. package/dist/types/components/graph-explorer/GraphExplorer.d.ts +42 -0
  997. package/dist/types/components/graph-explorer/camera-math.d.ts +119 -0
  998. package/dist/types/components/graph-explorer/index.d.ts +5 -0
  999. package/dist/types/components/graph-explorer/tree-layout.d.ts +67 -0
  1000. package/dist/types/components/graph-explorer/types.d.ts +62 -0
  1001. package/dist/types/components/graph-explorer/use-camera.d.ts +81 -0
  1002. package/dist/types/components/graph-explorer/viewport-gesture.d.ts +32 -0
  1003. package/dist/types/components/kanban/KanbanBoard.d.ts +72 -0
  1004. package/dist/types/components/kanban/recipe.d.ts +73 -0
  1005. package/dist/types/components/kanban/types.d.ts +55 -0
  1006. package/dist/types/components/markdown/Affordances.d.ts +105 -0
  1007. package/dist/types/components/markdown/AttachmentStrip.d.ts +25 -0
  1008. package/dist/types/components/markdown/ImageUpload.d.ts +56 -0
  1009. package/dist/types/components/media-error.d.ts +11 -0
  1010. package/dist/types/components/nav-sections.d.ts +10 -0
  1011. package/dist/types/components/node-canvas/NodeCanvas.d.ts +66 -0
  1012. package/dist/types/components/node-canvas/index.d.ts +3 -0
  1013. package/dist/types/components/node-canvas/layout.d.ts +29 -0
  1014. package/dist/types/components/node-canvas/types.d.ts +207 -0
  1015. package/dist/types/components/node-canvas/use-canvas-gestures.d.ts +39 -0
  1016. package/dist/types/components/openapi/OpenApiViewer.d.ts +14 -0
  1017. package/dist/types/components/openapi/OperationCard.d.ts +33 -0
  1018. package/dist/types/components/openapi/SchemaView.d.ts +14 -0
  1019. package/dist/types/components/openapi/index.d.ts +6 -0
  1020. package/dist/types/components/openapi/resolve.d.ts +72 -0
  1021. package/dist/types/components/openapi/types.d.ts +128 -0
  1022. package/dist/types/components/overlay-shell.d.ts +48 -0
  1023. package/dist/types/components/overlay-stack.d.ts +18 -0
  1024. package/dist/types/components/paged-window/PageBlock.d.ts +31 -0
  1025. package/dist/types/components/provenance/ConfidenceBar.d.ts +118 -0
  1026. package/dist/types/components/provenance/ConfidenceMeter.d.ts +21 -0
  1027. package/dist/types/components/provenance/ConfidenceReadout.d.ts +17 -0
  1028. package/dist/types/components/provenance/ProvenanceBadge.d.ts +23 -0
  1029. package/dist/types/components/provenance/ProvenanceDetail.d.ts +109 -0
  1030. package/dist/types/components/provenance/ProvenanceDisclosure.d.ts +107 -0
  1031. package/dist/types/components/provenance/absence.d.ts +37 -0
  1032. package/dist/types/components/provenance/index.d.ts +7 -0
  1033. package/dist/types/components/provenance/types.d.ts +137 -0
  1034. package/dist/types/components/rbac/AccessRequestPanel.d.ts +92 -0
  1035. package/dist/types/components/rbac/AccountMenu.d.ts +46 -0
  1036. package/dist/types/components/rbac/AgentKeysList.d.ts +22 -0
  1037. package/dist/types/components/rbac/ApiKeysPanel.d.ts +26 -0
  1038. package/dist/types/components/rbac/ApiKeysTable.d.ts +65 -0
  1039. package/dist/types/components/rbac/Brand.d.ts +8 -0
  1040. package/dist/types/components/rbac/Can.d.ts +19 -0
  1041. package/dist/types/components/rbac/ChangePasswordForm.d.ts +18 -0
  1042. package/dist/types/components/rbac/DangerZone.d.ts +8 -0
  1043. package/dist/types/components/rbac/DevToolsPopover.d.ts +36 -0
  1044. package/dist/types/components/rbac/EndedLine.d.ts +21 -0
  1045. package/dist/types/components/rbac/InvitationsList.d.ts +39 -0
  1046. package/dist/types/components/rbac/InviteMembersDialog.d.ts +21 -0
  1047. package/dist/types/components/rbac/MembersPanel.d.ts +31 -0
  1048. package/dist/types/components/rbac/PermissionRequestPanel.d.ts +36 -0
  1049. package/dist/types/components/rbac/ProfileForm.d.ts +27 -0
  1050. package/dist/types/components/rbac/ProfilePage.d.ts +16 -0
  1051. package/dist/types/components/rbac/RBACProvider.d.ts +69 -0
  1052. package/dist/types/components/rbac/RoleEditorDialog.d.ts +28 -0
  1053. package/dist/types/components/rbac/RoleKeyPicker.d.ts +24 -0
  1054. package/dist/types/components/rbac/RolePermissionMatrix.d.ts +21 -0
  1055. package/dist/types/components/rbac/RolesPermissionsPage.d.ts +24 -0
  1056. package/dist/types/components/rbac/SessionsList.d.ts +35 -0
  1057. package/dist/types/components/rbac/TeamSettingsForm.d.ts +22 -0
  1058. package/dist/types/components/rbac/TeamSwitcher.d.ts +5 -0
  1059. package/dist/types/components/rbac/approvalPanelParts.d.ts +69 -0
  1060. package/dist/types/components/rbac/index.d.ts +25 -0
  1061. package/dist/types/components/rbac/permissionSections.d.ts +8 -0
  1062. package/dist/types/components/rbac/stagedForm.d.ts +25 -0
  1063. package/dist/types/components/rbac/types.d.ts +65 -0
  1064. package/dist/types/components/rbac/useStagedImage.d.ts +15 -0
  1065. package/dist/types/components/roadmap/PhaseManager.d.ts +19 -0
  1066. package/dist/types/components/roadmap/RoadmapItemCard.d.ts +51 -0
  1067. package/dist/types/components/roadmap/RoadmapPage.d.ts +12 -0
  1068. package/dist/types/components/roadmap/RoadmapSwimlaneBoard.d.ts +15 -0
  1069. package/dist/types/components/roadmap/TrackManager.d.ts +19 -0
  1070. package/dist/types/components/roadmap/UseCaseCard.d.ts +30 -0
  1071. package/dist/types/components/roadmap/UseCaseLedgerPage.d.ts +29 -0
  1072. package/dist/types/components/roadmap/chip-tones.d.ts +2 -0
  1073. package/dist/types/components/roadmap/derive.d.ts +39 -0
  1074. package/dist/types/components/roadmap/index.d.ts +10 -0
  1075. package/dist/types/components/roadmap/types.d.ts +86 -0
  1076. package/dist/types/components/stepper/Stepper.d.ts +79 -0
  1077. package/dist/types/components/stepper/derive.d.ts +49 -0
  1078. package/dist/types/components/stepper/index.d.ts +3 -0
  1079. package/dist/types/components/stepper/types.d.ts +118 -0
  1080. package/dist/types/icons/data.d.ts +2054 -0
  1081. package/dist/types/index.d.ts +209 -0
  1082. package/dist/types/lib/attention.d.ts +62 -0
  1083. package/dist/types/lib/board/anchor.d.ts +69 -0
  1084. package/dist/types/lib/board/index.d.ts +17 -0
  1085. package/dist/types/lib/board/model.d.ts +43 -0
  1086. package/dist/types/lib/board/move.d.ts +181 -0
  1087. package/dist/types/lib/board/position.d.ts +22 -0
  1088. package/dist/types/lib/board/rejection.d.ts +8 -0
  1089. package/dist/types/lib/board/types.d.ts +294 -0
  1090. package/dist/types/lib/board/use-board.d.ts +47 -0
  1091. package/dist/types/lib/calendar/band-packer.d.ts +53 -0
  1092. package/dist/types/lib/calendar/drag.d.ts +125 -0
  1093. package/dist/types/lib/calendar/index.d.ts +4 -0
  1094. package/dist/types/lib/calendar/lane-packer.d.ts +88 -0
  1095. package/dist/types/lib/calendar/segments.d.ts +91 -0
  1096. package/dist/types/lib/calendar/types.d.ts +166 -0
  1097. package/dist/types/lib/chart-palette.d.ts +14 -0
  1098. package/dist/types/lib/clipboard.d.ts +12 -0
  1099. package/dist/types/lib/cn.d.ts +7 -0
  1100. package/dist/types/lib/color.d.ts +14 -0
  1101. package/dist/types/lib/component-guidance.d.ts +15 -0
  1102. package/dist/types/lib/confidence.d.ts +28 -0
  1103. package/dist/types/lib/date-timeline/scale.d.ts +143 -0
  1104. package/dist/types/lib/design-frame/document.d.ts +39 -0
  1105. package/dist/types/lib/design-frame/mini-app-script.d.ts +29 -0
  1106. package/dist/types/lib/design-frame/mini-app.d.ts +17 -0
  1107. package/dist/types/lib/design-frame/protocol.d.ts +78 -0
  1108. package/dist/types/lib/dev-warn.d.ts +10 -0
  1109. package/dist/types/lib/dnd/announce.d.ts +124 -0
  1110. package/dist/types/lib/dnd/autoscroll.d.ts +88 -0
  1111. package/dist/types/lib/dnd/cross-drop.d.ts +18 -0
  1112. package/dist/types/lib/dnd/geometry.d.ts +126 -0
  1113. package/dist/types/lib/dnd/index.d.ts +17 -0
  1114. package/dist/types/lib/dnd/sensors/gesture.d.ts +37 -0
  1115. package/dist/types/lib/dnd/sensors/keyboard.d.ts +54 -0
  1116. package/dist/types/lib/dnd/sensors/pointer.d.ts +59 -0
  1117. package/dist/types/lib/dnd/session.d.ts +124 -0
  1118. package/dist/types/lib/dnd/types.d.ts +226 -0
  1119. package/dist/types/lib/dnd/use-drag.d.ts +82 -0
  1120. package/dist/types/lib/dom/scroll-ancestor.d.ts +15 -0
  1121. package/dist/types/lib/format.d.ts +33 -0
  1122. package/dist/types/lib/group-in-order.d.ts +13 -0
  1123. package/dist/types/lib/header-fold.d.ts +10 -0
  1124. package/dist/types/lib/i18n/areas/auth-provenance-flows.d.ts +287 -0
  1125. package/dist/types/lib/i18n/areas/board.d.ts +51 -0
  1126. package/dist/types/lib/i18n/areas/card-face.d.ts +8 -0
  1127. package/dist/types/lib/i18n/areas/chat-chart.d.ts +202 -0
  1128. package/dist/types/lib/i18n/areas/code-editor.d.ts +40 -0
  1129. package/dist/types/lib/i18n/areas/date-timeline.d.ts +36 -0
  1130. package/dist/types/lib/i18n/areas/dates.d.ts +103 -0
  1131. package/dist/types/lib/i18n/areas/docs-views.d.ts +297 -0
  1132. package/dist/types/lib/i18n/areas/feedback.d.ts +132 -0
  1133. package/dist/types/lib/i18n/areas/formats.d.ts +30 -0
  1134. package/dist/types/lib/i18n/areas/forms.d.ts +182 -0
  1135. package/dist/types/lib/i18n/areas/keys.d.ts +15 -0
  1136. package/dist/types/lib/i18n/areas/markdown.d.ts +150 -0
  1137. package/dist/types/lib/i18n/areas/move-rejected.d.ts +16 -0
  1138. package/dist/types/lib/i18n/areas/navigation.d.ts +185 -0
  1139. package/dist/types/lib/i18n/areas/rbac.d.ts +635 -0
  1140. package/dist/types/lib/i18n/emphasis.d.ts +3 -0
  1141. package/dist/types/lib/i18n/index.d.ts +10 -0
  1142. package/dist/types/lib/i18n/number-format.d.ts +5 -0
  1143. package/dist/types/lib/i18n/plural.d.ts +7 -0
  1144. package/dist/types/lib/i18n/provider.d.ts +16 -0
  1145. package/dist/types/lib/i18n/strings.d.ts +18 -0
  1146. package/dist/types/lib/icons.d.ts +22 -0
  1147. package/dist/types/lib/interactive-target.d.ts +3 -0
  1148. package/dist/types/lib/intl-cache.d.ts +31 -0
  1149. package/dist/types/lib/legal-document.d.ts +82 -0
  1150. package/dist/types/lib/line-diff-model.d.ts +39 -0
  1151. package/dist/types/lib/markdown/attachments.d.ts +50 -0
  1152. package/dist/types/lib/markdown/caret-map.d.ts +69 -0
  1153. package/dist/types/lib/markdown/caret.d.ts +6 -0
  1154. package/dist/types/lib/markdown/commands.d.ts +186 -0
  1155. package/dist/types/lib/markdown/convert.d.ts +99 -0
  1156. package/dist/types/lib/markdown/dom.d.ts +30 -0
  1157. package/dist/types/lib/markdown/edit.d.ts +16 -0
  1158. package/dist/types/lib/markdown/history.d.ts +59 -0
  1159. package/dist/types/lib/markdown/hotkeys.d.ts +63 -0
  1160. package/dist/types/lib/markdown/image-pipeline.d.ts +173 -0
  1161. package/dist/types/lib/markdown/images.d.ts +138 -0
  1162. package/dist/types/lib/markdown/input.d.ts +38 -0
  1163. package/dist/types/lib/markdown/keys.d.ts +34 -0
  1164. package/dist/types/lib/markdown/paste.d.ts +9 -0
  1165. package/dist/types/lib/markdown/position.d.ts +43 -0
  1166. package/dist/types/lib/markdown/project.d.ts +88 -0
  1167. package/dist/types/lib/markdown/reconcile.d.ts +63 -0
  1168. package/dist/types/lib/markdown/surface.d.ts +236 -0
  1169. package/dist/types/lib/motion.d.ts +30 -0
  1170. package/dist/types/lib/pad.d.ts +6 -0
  1171. package/dist/types/lib/paged-window/index.d.ts +2 -0
  1172. package/dist/types/lib/paged-window/layout.d.ts +21 -0
  1173. package/dist/types/lib/paged-window/list-owner.d.ts +12 -0
  1174. package/dist/types/lib/paged-window/records-binding.d.ts +102 -0
  1175. package/dist/types/lib/paged-window/store.d.ts +307 -0
  1176. package/dist/types/lib/paged-window/use-measured-pitch.d.ts +34 -0
  1177. package/dist/types/lib/paged-window/use-page-visibility.d.ts +20 -0
  1178. package/dist/types/lib/paged-window/use-paged-window.d.ts +61 -0
  1179. package/dist/types/lib/paged-window/use-scroll-root.d.ts +18 -0
  1180. package/dist/types/lib/persist.d.ts +57 -0
  1181. package/dist/types/lib/preference-values.d.ts +72 -0
  1182. package/dist/types/lib/preferences.d.ts +26 -0
  1183. package/dist/types/lib/reads/hooks.d.ts +49 -0
  1184. package/dist/types/lib/reads/index.d.ts +5 -0
  1185. package/dist/types/lib/reads/optimistic.d.ts +119 -0
  1186. package/dist/types/lib/reads/refetch.d.ts +83 -0
  1187. package/dist/types/lib/reads/slots.d.ts +137 -0
  1188. package/dist/types/lib/reads/types.d.ts +155 -0
  1189. package/dist/types/lib/realtime/hooks.d.ts +38 -0
  1190. package/dist/types/lib/realtime/index.d.ts +4 -0
  1191. package/dist/types/lib/realtime/provider.d.ts +38 -0
  1192. package/dist/types/lib/realtime/registry.d.ts +225 -0
  1193. package/dist/types/lib/realtime/types.d.ts +242 -0
  1194. package/dist/types/lib/records/define-record-type.d.ts +29 -0
  1195. package/dist/types/lib/records/hooks.d.ts +46 -0
  1196. package/dist/types/lib/records/index.d.ts +5 -0
  1197. package/dist/types/lib/records/store.d.ts +289 -0
  1198. package/dist/types/lib/records/types.d.ts +195 -0
  1199. package/dist/types/lib/records/wire.d.ts +96 -0
  1200. package/dist/types/lib/reduced-motion-help.d.ts +23 -0
  1201. package/dist/types/lib/scroll-caret.d.ts +6 -0
  1202. package/dist/types/lib/sim/createSimStore.d.ts +18 -0
  1203. package/dist/types/lib/sim/index.d.ts +5 -0
  1204. package/dist/types/lib/sim/latency.d.ts +10 -0
  1205. package/dist/types/lib/sim/registry.d.ts +14 -0
  1206. package/dist/types/lib/sim/settings.d.ts +11 -0
  1207. package/dist/types/lib/sim/types.d.ts +3 -0
  1208. package/dist/types/lib/submit-shortcut.d.ts +24 -0
  1209. package/dist/types/lib/syntax/index.d.ts +16 -0
  1210. package/dist/types/lib/syntax/languages/bash.d.ts +1 -0
  1211. package/dist/types/lib/syntax/languages/css.d.ts +1 -0
  1212. package/dist/types/lib/syntax/languages/html.d.ts +17 -0
  1213. package/dist/types/lib/syntax/languages/index.d.ts +33 -0
  1214. package/dist/types/lib/syntax/languages/javascript.d.ts +22 -0
  1215. package/dist/types/lib/syntax/languages/json.d.ts +1 -0
  1216. package/dist/types/lib/syntax/languages/mongodb.d.ts +1 -0
  1217. package/dist/types/lib/syntax/languages/plain.d.ts +9 -0
  1218. package/dist/types/lib/syntax/languages/sql.d.ts +4 -0
  1219. package/dist/types/lib/syntax/languages/vue.d.ts +1 -0
  1220. package/dist/types/lib/syntax/languages/yaml.d.ts +1 -0
  1221. package/dist/types/lib/syntax/markdown/frames.d.ts +145 -0
  1222. package/dist/types/lib/syntax/markdown/grammar.d.ts +1 -0
  1223. package/dist/types/lib/syntax/markdown/index.d.ts +5 -0
  1224. package/dist/types/lib/syntax/markdown/inline.d.ts +21 -0
  1225. package/dist/types/lib/syntax/markdown/parse.d.ts +15 -0
  1226. package/dist/types/lib/syntax/markdown/refs.d.ts +47 -0
  1227. package/dist/types/lib/syntax/markdown/render.d.ts +25 -0
  1228. package/dist/types/lib/syntax/markdown/spans.d.ts +84 -0
  1229. package/dist/types/lib/syntax/markdown/types.d.ts +108 -0
  1230. package/dist/types/lib/syntax/registry.d.ts +37 -0
  1231. package/dist/types/lib/syntax/tokenize.d.ts +17 -0
  1232. package/dist/types/lib/syntax/types.d.ts +119 -0
  1233. package/dist/types/lib/time/index.d.ts +4 -0
  1234. package/dist/types/lib/time/instant.d.ts +2 -0
  1235. package/dist/types/lib/time/plain.d.ts +61 -0
  1236. package/dist/types/lib/time/relativeAge.d.ts +18 -0
  1237. package/dist/types/lib/time/relativeClock.d.ts +8 -0
  1238. package/dist/types/lib/time/types.d.ts +87 -0
  1239. package/dist/types/lib/time/zone.d.ts +106 -0
  1240. package/dist/types/lib/use-controllable.d.ts +14 -0
  1241. package/dist/types/lib/use-fill-height.d.ts +26 -0
  1242. package/dist/types/lib/use-hydrated.d.ts +8 -0
  1243. package/dist/types/lib/use-media-query.d.ts +29 -0
  1244. package/dist/types/lib/use-relabel-base-ui-dismiss.d.ts +6 -0
  1245. package/dist/types/lib/use-release-snap-drag.d.ts +25 -0
  1246. package/dist/types/lib/use-roving-options.d.ts +10 -0
  1247. package/dist/types/lib/values/absent.d.ts +7 -0
  1248. package/dist/types/lib/values/boolean.d.ts +29 -0
  1249. package/dist/types/lib/values/currency.d.ts +22 -0
  1250. package/dist/types/lib/values/date.d.ts +30 -0
  1251. package/dist/types/lib/values/datetime.d.ts +48 -0
  1252. package/dist/types/lib/values/index.d.ts +5 -0
  1253. package/dist/types/lib/values/locale-date.d.ts +34 -0
  1254. package/dist/types/lib/values/number.d.ts +27 -0
  1255. package/dist/types/pure.d.ts +48 -0
  1256. package/package.json +136 -4
@@ -0,0 +1,153 @@
1
+ import { lineAt as o } from "./caret.js";
2
+ import { fenceAround as h, tableAround as k, cellsOf as j } from "./commands.js";
3
+ const p = /^(\s*)([-*+])(\s+)/, b = /^(\s*)(\d{1,9})([.)])(\s+)/, x = /^ {0,3}(#{1,6})(\s+)/, $ = /^ {0,3}>\s?/, L = /^ {0,3}([-*_])(?:[ \t]*\1){2,}[ \t]*$/, E = /^\[([ xX])\]\s?/;
4
+ function M(s) {
5
+ const a = [];
6
+ let e = 0;
7
+ for (; ; ) {
8
+ const t = o(s, e);
9
+ if (a.push({ start: t.start, end: t.end, text: s.slice(t.start, t.end) }), t.end >= s.length) break;
10
+ e = t.end + 1;
11
+ }
12
+ return a;
13
+ }
14
+ function v(s, a) {
15
+ const e = h(s, a);
16
+ if (e)
17
+ return { kind: "code", language: s.slice(e.start, o(s, e.start).end).replace(/^ {0,3}(`{3,}|~{3,})/, "").trim(), start: e.start, end: e.end };
18
+ const t = k(s, a);
19
+ if (t) return { kind: "table", start: t.start, end: t.end };
20
+ const n = o(s, a), r = s.slice(n.start, n.end), i = { start: n.start, end: n.end };
21
+ if (L.test(r)) return { kind: "rule", ...i };
22
+ const l = x.exec(r);
23
+ if (l) return { kind: "heading", level: l[1].length, ...i };
24
+ if ($.test(r)) return { kind: "quote", ...i };
25
+ const c = p.exec(r), d = b.exec(r);
26
+ if (c || d) {
27
+ const f = r.slice((c ?? d)[0].length), u = E.exec(f);
28
+ return u ? { kind: "task", checked: u[1] !== " ", ...i } : { kind: c ? "bullet" : "ordered", ...i };
29
+ }
30
+ return { kind: "paragraph", ...i };
31
+ }
32
+ function w(s, a) {
33
+ const e = s.slice(a.start, a.end);
34
+ if (a.kind === "code") {
35
+ const t = h(s, a.start);
36
+ return s.slice(t.bodyStart, t.bodyEnd).split(`
37
+ `);
38
+ }
39
+ if (a.kind === "table") {
40
+ const t = k(s, a.start);
41
+ return M(s).filter((n) => n.start >= t.start && n.end <= t.end).filter((n) => !/^\s*\|?[\s:|-]+\|?\s*$/.test(n.text)).map((n) => j(n.text).join(" — "));
42
+ }
43
+ return a.kind === "rule" ? [""] : e.split(`
44
+ `).map((t) => {
45
+ let n = t;
46
+ n = n.replace(x, ""), n = n.replace($, "");
47
+ const r = p.exec(n) ?? b.exec(n);
48
+ return r && (n = n.slice(r[0].length).replace(E, "")), n.trim();
49
+ });
50
+ }
51
+ function y(s, a, e, t) {
52
+ const n = t.length ? t : [""];
53
+ switch (s) {
54
+ case "paragraph":
55
+ return n.join(`
56
+ `);
57
+ case "heading":
58
+ return `${"#".repeat(Math.min(6, Math.max(1, a)))} ${n.join(" ").trim()}`;
59
+ case "quote":
60
+ return n.map((r) => `> ${r}`.trimEnd()).join(`
61
+ `);
62
+ case "bullet":
63
+ return n.map((r) => `- ${r}`.trimEnd()).join(`
64
+ `);
65
+ case "ordered":
66
+ return n.map((r, i) => `${i + 1}. ${r}`.trimEnd()).join(`
67
+ `);
68
+ case "task":
69
+ return n.map((r) => `- [ ] ${r}`.trimEnd()).join(`
70
+ `);
71
+ case "code":
72
+ return ["```" + e, ...n, "```"].join(`
73
+ `);
74
+ case "rule":
75
+ return "---";
76
+ case "table": {
77
+ const [r, ...i] = n;
78
+ return [`| ${r} |`, "| --- |", ...i.map((l) => `| ${l} |`)].join(`
79
+ `);
80
+ }
81
+ }
82
+ }
83
+ function B(s, a = {}) {
84
+ return (e, t) => {
85
+ const n = Math.min(t.anchor, t.head), r = Math.max(t.anchor, t.head), i = v(e, n), l = i.kind === "code" || i.kind === "table" ? i.start : o(e, n).start, c = i.kind === "code" || i.kind === "table" ? i.end : o(e, r).end, d = a.level ?? i.level ?? 1, f = a.language ?? i.language ?? "", u = w(e, { ...i, start: l, end: c }), m = y(s, d, f, u);
86
+ if (m === e.slice(l, c)) return null;
87
+ const g = m.split(`
88
+ `)[0];
89
+ return { splice: { start: l, end: c, text: m }, select: { anchor: l + g.length, head: l + g.length } };
90
+ };
91
+ }
92
+ function O(s) {
93
+ return (a, e) => {
94
+ const t = h(a, Math.min(e.anchor, e.head));
95
+ if (!t) return null;
96
+ const n = o(a, t.start), r = a.slice(n.start, n.end), i = /^ {0,3}(`{3,}|~{3,})/.exec(r);
97
+ if (!i) return null;
98
+ const l = `${i[0]}${s}`;
99
+ return l === r ? null : {
100
+ splice: { start: n.start, end: n.end, text: l },
101
+ select: { anchor: n.start + l.length, head: n.start + l.length }
102
+ };
103
+ };
104
+ }
105
+ function T(s, a) {
106
+ const e = /* @__PURE__ */ new Set();
107
+ for (const t of s.frames) {
108
+ const n = t.frame.kind;
109
+ n !== "strong" && n !== "emphasis" && n !== "codeSpan" && n !== "strike" || a < t.start || a > t.end || e.add(n);
110
+ }
111
+ return e;
112
+ }
113
+ function A(s, a) {
114
+ let e = null;
115
+ for (const r of s.frames)
116
+ r.frame.kind !== "link" && r.frame.kind !== "image" || a < r.start || a > r.end || (!e || r.end - r.start < e.end - e.start) && (e = r);
117
+ if (!e) return null;
118
+ const t = e.frame, n = t.kind === "image" ? t.alt : e.content.map((r) => s.source.slice(r.start, r.end)).join("");
119
+ return {
120
+ kind: t.kind,
121
+ target: t.kind === "image" ? t.src : t.href,
122
+ label: n,
123
+ title: t.title,
124
+ start: e.start,
125
+ end: e.end
126
+ };
127
+ }
128
+ function q(s, a, e) {
129
+ const t = A(s, a);
130
+ if (!t) return null;
131
+ const n = e.kind ?? t.kind, r = e.target ?? t.target, i = e.label ?? t.label, l = e.title ?? t.title, c = l ? ` "${l}"` : "", d = `${n === "image" ? "!" : ""}[${i}](${r}${c})`;
132
+ return d === s.source.slice(t.start, t.end) ? null : {
133
+ splice: { start: t.start, end: t.end, text: d },
134
+ select: { anchor: t.start + d.length, head: t.start + d.length }
135
+ };
136
+ }
137
+ function C(s, a) {
138
+ const e = A(s, a);
139
+ return e ? {
140
+ splice: { start: e.start, end: e.end, text: e.label },
141
+ select: { anchor: e.start + e.label.length, head: e.start + e.label.length }
142
+ } : null;
143
+ }
144
+ export {
145
+ v as blockAt,
146
+ A as constructAt,
147
+ B as convertBlock,
148
+ q as editConstruct,
149
+ T as marksAt,
150
+ O as setFenceLanguage,
151
+ C as unwrapConstruct
152
+ };
153
+ //# sourceMappingURL=convert.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"convert.js","sources":["../../../src/lib/markdown/convert.ts"],"sourcesContent":["/* ============================================================================\n CONVERT — what a block IS, and how to make it something else.\n\n WHY THE EXISTING COMMANDS ARE NOT ENOUGH. Everything in ./commands.ts\n TOGGLES: `toggleQuote` adds `> ` or removes it, `setHeading(2)` sets a level\n or clears one. That is right for a keyboard shortcut, where the user knows\n what they are looking at and presses the key twice to undo it. It is wrong\n for a MENU, which shows a list of types and has to SET the one that was\n picked — \"make this a quote\" must work whether the line is currently a\n paragraph, a heading, a list item or a fence, and pressing it twice must not\n turn the quote back into a paragraph.\n\n So this module is set-semantics over the same string model: read what the\n block is, reduce it to its plain text, and re-wrap that text as the target.\n Two steps rather than a matrix, because a matrix of nine kinds against nine\n kinds is eighty-one behaviours nobody can hold in their head, and the pair of\n functions below is the same thing with two places to be wrong instead.\n\n THE UNIT IS THE LINE, EXCEPT WHERE IT CANNOT BE. A fence and a table are\n multi-line constructs whose halves are meaningless apart — converting the\n middle three lines of a code block leaves an unterminated fence — so for\n those the unit is the whole construct. Everywhere else it is the lines the\n selection touches, which is what a per-line control implies.\n ========================================================================= */\n\nimport { lineAt } from \"./caret\";\nimport { fenceAround, tableAround, cellsOf, type Command, type Edit } from \"./commands\";\nimport type { FrameRecord } from \"../syntax/markdown/frames\";\nimport type { Projection } from \"./project\";\n\n/** The block kinds a line-type control can offer. */\nexport type BlockKind =\n | \"paragraph\"\n | \"heading\"\n | \"quote\"\n | \"code\"\n | \"bullet\"\n | \"ordered\"\n | \"task\"\n | \"table\"\n | \"rule\";\n\nexport interface BlockInfo {\n kind: BlockKind;\n /** 1–6 for a heading, otherwise undefined. */\n level?: number;\n /** The info string of a fence, \"\" when it has none. */\n language?: string;\n /** Whether a task item is ticked. */\n checked?: boolean;\n /** The source span this control operates on. */\n start: number;\n end: number;\n}\n\nconst BULLET = /^(\\s*)([-*+])(\\s+)/;\nconst NUMBER = /^(\\s*)(\\d{1,9})([.)])(\\s+)/;\nconst HEADING = /^ {0,3}(#{1,6})(\\s+)/;\nconst QUOTE = /^ {0,3}>\\s?/;\nconst RULE = /^ {0,3}([-*_])(?:[ \\t]*\\1){2,}[ \\t]*$/;\nconst TASK = /^\\[([ xX])\\]\\s?/;\n\n/** Every line of `source`, as spans. */\nfunction allLines(source: string): Array<{ start: number; end: number; text: string }> {\n const out: Array<{ start: number; end: number; text: string }> = [];\n let at = 0;\n for (;;) {\n const line = lineAt(source, at);\n out.push({ start: line.start, end: line.end, text: source.slice(line.start, line.end) });\n if (line.end >= source.length) break;\n at = line.end + 1;\n }\n return out;\n}\n\n/**\n * What the block at `offset` is, and the span a conversion would replace.\n *\n * The span is the whole construct for a fence or a table and the caret's own\n * line otherwise — see the header. A caller with a real selection widens it\n * itself; this answers for a point.\n */\nexport function blockAt(source: string, offset: number): BlockInfo {\n const fence = fenceAround(source, offset);\n if (fence) {\n const open = source.slice(fence.start, lineAt(source, fence.start).end);\n const language = open.replace(/^ {0,3}(`{3,}|~{3,})/, \"\").trim();\n return { kind: \"code\", language, start: fence.start, end: fence.end };\n }\n\n const table = tableAround(source, offset);\n if (table) return { kind: \"table\", start: table.start, end: table.end };\n\n const line = lineAt(source, offset);\n const text = source.slice(line.start, line.end);\n const span = { start: line.start, end: line.end };\n\n if (RULE.test(text)) return { kind: \"rule\", ...span };\n\n const heading = HEADING.exec(text);\n if (heading) return { kind: \"heading\", level: heading[1].length, ...span };\n\n if (QUOTE.test(text)) return { kind: \"quote\", ...span };\n\n const bullet = BULLET.exec(text);\n const number = NUMBER.exec(text);\n if (bullet || number) {\n const body = text.slice((bullet ?? number)![0].length);\n const task = TASK.exec(body);\n if (task) return { kind: \"task\", checked: task[1] !== \" \", ...span };\n return { kind: bullet ? \"bullet\" : \"ordered\", ...span };\n }\n\n return { kind: \"paragraph\", ...span };\n}\n\n/**\n * The plain text of a block, with whatever made it that block removed.\n *\n * Returns one string per line. A table becomes one line per row with its cells\n * joined — there is no lossless answer for \"a table as prose\", and joining is\n * the one that keeps every word the author typed. A rule becomes nothing,\n * because it never held any text to keep.\n */\nfunction plainOf(source: string, info: BlockInfo): string[] {\n const body = source.slice(info.start, info.end);\n\n if (info.kind === \"code\") {\n const fence = fenceAround(source, info.start)!;\n return source.slice(fence.bodyStart, fence.bodyEnd).split(\"\\n\");\n }\n\n if (info.kind === \"table\") {\n const table = tableAround(source, info.start)!;\n return allLines(source)\n .filter((l) => l.start >= table.start && l.end <= table.end)\n /* The alignment row is markup with no content — it describes the table\n rather than saying anything, so it does not become a line of prose. */\n .filter((l) => !/^\\s*\\|?[\\s:|-]+\\|?\\s*$/.test(l.text))\n .map((l) => cellsOf(l.text).join(\" — \"));\n }\n\n if (info.kind === \"rule\") return [\"\"];\n\n return body.split(\"\\n\").map((line) => {\n let out = line;\n out = out.replace(HEADING, \"\");\n out = out.replace(QUOTE, \"\");\n const marker = BULLET.exec(out) ?? NUMBER.exec(out);\n if (marker) out = out.slice(marker[0].length).replace(TASK, \"\");\n return out.trim();\n });\n}\n\n/** Wraps plain lines as the target kind. */\nfunction wrapAs(kind: BlockKind, level: number, language: string, lines: string[]): string {\n const text = lines.length ? lines : [\"\"];\n\n switch (kind) {\n case \"paragraph\":\n return text.join(\"\\n\");\n case \"heading\":\n /* A HEADING IS ONE LINE, so several become one. Dropping all but the\n first would silently delete text the author can see; joining keeps it,\n and the author can split it again with Enter. */\n return `${\"#\".repeat(Math.min(6, Math.max(1, level)))} ${text.join(\" \").trim()}`;\n case \"quote\":\n return text.map((l) => `> ${l}`.trimEnd()).join(\"\\n\");\n case \"bullet\":\n return text.map((l) => `- ${l}`.trimEnd()).join(\"\\n\");\n case \"ordered\":\n return text.map((l, i) => `${i + 1}. ${l}`.trimEnd()).join(\"\\n\");\n case \"task\":\n return text.map((l) => `- [ ] ${l}`.trimEnd()).join(\"\\n\");\n case \"code\":\n return [\"```\" + language, ...text, \"```\"].join(\"\\n\");\n case \"rule\":\n return \"---\";\n case \"table\": {\n /* One column, one row per line, the first line as the header — the only\n reading of \"these lines are a table\" that does not invent structure the\n author never typed. */\n const [head, ...rest] = text;\n return [`| ${head} |`, \"| --- |\", ...rest.map((l) => `| ${l} |`)].join(\"\\n\");\n }\n }\n}\n\nexport interface ConvertOptions {\n /** 1–6, for `heading`. Ignored otherwise. */\n level?: number;\n /** Info string, for `code`. Ignored otherwise. */\n language?: string;\n}\n\n/**\n * Converts the block at the selection to `kind`, whatever it is now.\n *\n * SET, NOT TOGGLE: converting a quote to a quote is a no-op rather than an\n * un-quote, because a menu item that undoes itself when the current type is\n * picked is a menu item that punishes confirming what you already have.\n */\nexport function convertBlock(kind: BlockKind, options: ConvertOptions = {}): Command {\n return (source, selection) => {\n const from = Math.min(selection.anchor, selection.head);\n const to = Math.max(selection.anchor, selection.head);\n const info = blockAt(source, from);\n\n /* A selection spanning several lines converts all of them — but a fence or\n a table is one unit and its own span already covers what it owns. */\n const start = info.kind === \"code\" || info.kind === \"table\" ? info.start : lineAt(source, from).start;\n const end = info.kind === \"code\" || info.kind === \"table\" ? info.end : lineAt(source, to).end;\n\n const level = options.level ?? info.level ?? 1;\n const language = options.language ?? info.language ?? \"\";\n const plain = plainOf(source, { ...info, start, end });\n const text = wrapAs(kind, level, language, plain);\n if (text === source.slice(start, end)) return null;\n\n /* The caret lands at the end of the converted block's first line, which is\n where the text the user was looking at now begins. */\n const firstLine = text.split(\"\\n\")[0];\n return { splice: { start, end, text }, select: { anchor: start + firstLine.length, head: start + firstLine.length } };\n };\n}\n\n/**\n * Rewrites a fenced block's info string.\n *\n * Its own command rather than `convertBlock(\"code\", {language})`, because that\n * would rebuild the whole block to change one word — losing nothing, but\n * replacing every line and therefore every DOM node the reconciler had kept.\n */\nexport function setFenceLanguage(language: string): Command {\n return (source, selection) => {\n const fence = fenceAround(source, Math.min(selection.anchor, selection.head));\n if (!fence) return null;\n const line = lineAt(source, fence.start);\n const text = source.slice(line.start, line.end);\n const marker = /^ {0,3}(`{3,}|~{3,})/.exec(text);\n if (!marker) return null;\n const next = `${marker[0]}${language}`;\n if (next === text) return null;\n return {\n splice: { start: line.start, end: line.end, text: next },\n select: { anchor: line.start + next.length, head: line.start + next.length },\n };\n };\n}\n\n/* --- Inline marks ----------------------------------------------------------- */\n\n/** The inline mark kinds a toolbar can show as active. */\nexport type InlineMark = \"strong\" | \"emphasis\" | \"codeSpan\" | \"strike\";\n\n/**\n * Every inline mark frame containing `offset`, read from the projection.\n *\n * SAME METHOD AS `constructAt`, for the same reason: the parser has already\n * decided where a `**bold**` run starts and ends, including cases a regex\n * would get wrong — a marker inside a code span, one split across an escaped\n * character. A toolbar asking \"is the caret inside bold\" gets the parser's\n * answer instead of re-deriving it from the source text a second time.\n *\n * Boundaries are INCLUSIVE on both ends, matching `constructAt` — a caret at\n * either edge of `**bold**` still reads as inside it. This is a display\n * nicety (which toolbar buttons light up), not a decision about where\n * `toggleInline` wraps or unwraps, which reasons about the source directly.\n */\nexport function marksAt(projection: Projection, offset: number): Set<InlineMark> {\n const marks = new Set<InlineMark>();\n for (const record of projection.frames) {\n const kind = record.frame.kind;\n if (kind !== \"strong\" && kind !== \"emphasis\" && kind !== \"codeSpan\" && kind !== \"strike\") continue;\n if (offset < record.start || offset > record.end) continue;\n marks.add(kind);\n }\n return marks;\n}\n\n/* --- Links and images ------------------------------------------------------ */\n\nexport interface ConstructInfo {\n kind: \"link\" | \"image\";\n /** Destination — `href` for a link, `src` for an image. */\n target: string;\n /** Label for a link, alt text for an image. */\n label: string;\n title?: string;\n start: number;\n end: number;\n}\n\n/**\n * The innermost link or image containing `offset`.\n *\n * Read from the PROJECTION rather than by matching brackets, for the reason\n * every other reader in this codebase gives: the parser has already decided\n * what is a link, including the cases a regex gets wrong — a bracket inside a\n * code span, an unbalanced one, a reference definition elsewhere in the file.\n */\nexport function constructAt(projection: Projection, offset: number): ConstructInfo | null {\n let best: FrameRecord | null = null;\n for (const record of projection.frames) {\n if (record.frame.kind !== \"link\" && record.frame.kind !== \"image\") continue;\n if (offset < record.start || offset > record.end) continue;\n if (!best || record.end - record.start < best.end - best.start) best = record;\n }\n if (!best) return null;\n\n const frame = best.frame as Extract<typeof best.frame, { kind: \"link\" | \"image\" }>;\n const label =\n frame.kind === \"image\"\n ? frame.alt\n : best.content.map((r) => projection.source.slice(r.start, r.end)).join(\"\");\n return {\n kind: frame.kind,\n target: frame.kind === \"image\" ? frame.src : frame.href,\n label,\n title: frame.title,\n start: best.start,\n end: best.end,\n };\n}\n\nexport interface ConstructPatch {\n target?: string;\n label?: string;\n title?: string;\n /** Rewrites a link as an image or the other way round. */\n kind?: \"link\" | \"image\";\n}\n\n/** Rewrites the link or image at `offset` from its parts. */\nexport function editConstruct(projection: Projection, offset: number, patch: ConstructPatch): Edit | null {\n const found = constructAt(projection, offset);\n if (!found) return null;\n\n const kind = patch.kind ?? found.kind;\n const target = patch.target ?? found.target;\n const label = patch.label ?? found.label;\n const title = patch.title ?? found.title;\n const suffix = title ? ` \"${title}\"` : \"\";\n const text = `${kind === \"image\" ? \"!\" : \"\"}[${label}](${target}${suffix})`;\n if (text === projection.source.slice(found.start, found.end)) return null;\n\n return {\n splice: { start: found.start, end: found.end, text },\n select: { anchor: found.start + text.length, head: found.start + text.length },\n };\n}\n\n/**\n * Replaces a link or image with its own text.\n *\n * The one conversion that removes a construct rather than changing it, and the\n * only way to get rid of a link now that its brackets are markup the caret\n * cannot reach.\n */\nexport function unwrapConstruct(projection: Projection, offset: number): Edit | null {\n const found = constructAt(projection, offset);\n if (!found) return null;\n return {\n splice: { start: found.start, end: found.end, text: found.label },\n select: { anchor: found.start + found.label.length, head: found.start + found.label.length },\n };\n}\n"],"names":["BULLET","NUMBER","HEADING","QUOTE","RULE","TASK","allLines","source","out","at","line","lineAt","blockAt","offset","fence","fenceAround","table","tableAround","text","span","heading","bullet","number","body","task","plainOf","info","l","cellsOf","marker","wrapAs","kind","level","language","lines","head","rest","convertBlock","options","selection","from","to","start","end","plain","firstLine","setFenceLanguage","next","marksAt","projection","marks","record","constructAt","best","frame","label","editConstruct","patch","found","target","title","suffix","unwrapConstruct"],"mappings":"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"}
@@ -0,0 +1,89 @@
1
+ const u = "data-md-syntax", l = "data-md";
2
+ function d(t) {
3
+ switch (t.kind) {
4
+ case "paragraph":
5
+ return { tag: "p" };
6
+ case "heading":
7
+ return { tag: `h${t.level}` };
8
+ case "code":
9
+ return { tag: "pre", attrs: t.language ? { "data-md-lang": t.language } : void 0 };
10
+ case "codeBody":
11
+ return { tag: "code" };
12
+ case "frontmatter":
13
+ return { tag: "pre", attrs: { "data-md-lang": t.language } };
14
+ case "quote":
15
+ return { tag: "blockquote" };
16
+ case "list":
17
+ return {
18
+ tag: t.ordered ? "ol" : "ul",
19
+ attrs: {
20
+ ...t.ordered && t.start !== 1 ? { start: String(t.start) } : {},
21
+ ...t.tight ? {} : { "data-md-loose": "" }
22
+ }
23
+ };
24
+ case "listItem":
25
+ return {
26
+ tag: "li",
27
+ attrs: {
28
+ /* The SOURCE marker, so the drawn one is the document's own. A CSS
29
+ counter would renumber a list that starts at 3, and would rewrite
30
+ the "1. 1. 1." form markdown allows and many people write. */
31
+ "data-md-marker": t.marker,
32
+ ...t.checked === null ? {} : { "data-md-checked": String(t.checked) }
33
+ }
34
+ };
35
+ case "rule":
36
+ return { tag: "div" };
37
+ case "footnoteDef":
38
+ case "linkDef":
39
+ return { tag: "div" };
40
+ case "table":
41
+ return { tag: "table" };
42
+ case "tableRow":
43
+ return { tag: "tr" };
44
+ case "tableCell":
45
+ return {
46
+ tag: t.header ? "th" : "td",
47
+ attrs: t.align ? { "data-md-align": t.align } : void 0
48
+ };
49
+ case "tableGutter":
50
+ return { tag: "td" };
51
+ case "tableDelimiter":
52
+ return { tag: "tr" };
53
+ case "inline":
54
+ return { tag: "span" };
55
+ case "emphasis":
56
+ return { tag: "em" };
57
+ case "strong":
58
+ return { tag: "strong" };
59
+ case "strike":
60
+ return { tag: "del" };
61
+ case "codeSpan":
62
+ return { tag: "code" };
63
+ case "link":
64
+ return { tag: "span", attrs: { "data-md-href": t.href } };
65
+ case "autolink":
66
+ return { tag: "span", attrs: { "data-md-href": t.href } };
67
+ case "image":
68
+ return { tag: "span", attrs: { "data-md-src": t.src, "data-md-alt": t.alt } };
69
+ case "footnoteRef":
70
+ return { tag: "sup" };
71
+ case "hardBreak":
72
+ return { tag: "span" };
73
+ }
74
+ }
75
+ function o(t, a) {
76
+ if (t.kind !== a.kind) return !1;
77
+ const e = d(t), r = d(a);
78
+ if (e.tag !== r.tag) return !1;
79
+ const n = e.attrs ?? {}, s = r.attrs ?? {}, g = /* @__PURE__ */ new Set([...Object.keys(n), ...Object.keys(s)]);
80
+ for (const c of g) if (n[c] !== s[c]) return !1;
81
+ return !0;
82
+ }
83
+ export {
84
+ l as FRAME_ATTR,
85
+ u as SYNTAX_ATTR,
86
+ o as sameElement,
87
+ d as tagFor
88
+ };
89
+ //# sourceMappingURL=dom.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dom.js","sources":["../../../src/lib/markdown/dom.ts"],"sourcesContent":["/* ============================================================================\n THE PROJECTION AS DOM — what each frame becomes, and why every choice here is\n forced rather than stylistic.\n\n THREE CONSTRAINTS DECIDE ALL OF IT.\n\n 1. Every source character must have somewhere LEGAL to live. A table cannot\n hold loose text between its rows, so a delimiter row gets a real `<tr>`;\n a thematic rule cannot be an `<hr>`, because `<hr>` is void and its three\n dashes would have nowhere to go. Anywhere the obvious element cannot hold\n text, the element is wrong — not the projection.\n\n 2. The container is `white-space: pre-wrap`. Every newline, every space, and\n every indent in the source is real and renders as itself, so nothing has\n to synthesise a `<br>` for a hard break or a line for a list indent. This\n is why the projection can be literal.\n\n 3. Prose is a BARE TEXT NODE, never a wrapper. Only syntax is wrapped, and\n only because it needs a styling hook to collapse. Wrapping prose would be\n tidier and is what a naive tile-based renderer does, and it is exactly\n what makes IME break: the composition holds a reference to one text node,\n and the fewer reasons there are to replace one, the fewer ways there are\n to cancel a composition.\n ========================================================================= */\n\nimport type { Frame } from \"../syntax/markdown/frames\";\n\n/** Marks the wrapper around a run of markup, for the collapse rule. */\nexport const SYNTAX_ATTR = \"data-md-syntax\";\n\n/* THERE IS NO \"ACTIVE\" ATTRIBUTE ANY MORE, and its absence is a decision worth\n recording rather than a deletion worth forgetting.\n\n It marked the block the caret was in so that block's markup could be\n revealed, because a caret cannot be placed inside a zero-size box: Chrome\n resolves a selection written into `width: 0; overflow: hidden` to the nearest\n position with real geometry, which is a DIFFERENT source offset than the one\n asked for. The first browser probe caught that as Enter putting its newline\n at the end of the paragraph instead of at the caret.\n\n The markdown is now never shown, so no marker ever has geometry and no offset\n inside one is ever asked for. The problem is answered by the caret map\n (./caret-map.ts) refusing to produce such an offset, rather than by making\n the box big enough to hold it. */\n\n/** Names the frame an element came from, for styling and for the reconciler. */\nexport const FRAME_ATTR = \"data-md\";\n\nexport interface TagSpec {\n tag: string;\n /** Attributes the element carries, beyond `data-md`. */\n attrs?: Record<string, string>;\n}\n\n/**\n * The element a frame becomes.\n *\n * `a` deliberately renders as a `<span>`, NOT an anchor. An anchor inside a\n * contenteditable is a trap: the browser gives it its own selection behaviour,\n * some engines make it draggable, and a click navigates away from the document\n * being edited. The link's appearance is a class; its behaviour belongs to the\n * editor, which knows whether a modifier key was held.\n */\nexport function tagFor(frame: Frame): TagSpec {\n switch (frame.kind) {\n case \"paragraph\":\n return { tag: \"p\" };\n case \"heading\":\n return { tag: `h${frame.level}` };\n case \"code\":\n /* The `<pre>` holds the fence lines too, which are NOT code — so the\n `<code>` is the inner `codeBody` frame rather than this one. That is\n the standard `<pre><code>` pairing, arrived at from the requirement\n rather than from the convention. */\n return { tag: \"pre\", attrs: frame.language ? { \"data-md-lang\": frame.language } : undefined };\n case \"codeBody\":\n return { tag: \"code\" };\n case \"frontmatter\":\n return { tag: \"pre\", attrs: { \"data-md-lang\": frame.language } };\n case \"quote\":\n return { tag: \"blockquote\" };\n case \"list\":\n return {\n tag: frame.ordered ? \"ol\" : \"ul\",\n attrs: {\n ...(frame.ordered && frame.start !== 1 ? { start: String(frame.start) } : {}),\n ...(frame.tight ? {} : { \"data-md-loose\": \"\" }),\n },\n };\n case \"listItem\":\n return {\n tag: \"li\",\n attrs: {\n /* The SOURCE marker, so the drawn one is the document's own. A CSS\n counter would renumber a list that starts at 3, and would rewrite\n the \"1. 1. 1.\" form markdown allows and many people write. */\n \"data-md-marker\": frame.marker,\n ...(frame.checked === null ? {} : { \"data-md-checked\": String(frame.checked) }),\n },\n };\n case \"rule\":\n /* Not `<hr>`. A void element cannot hold the three dashes that produced\n it, and they have to be somewhere — see constraint 1 above. */\n return { tag: \"div\" };\n case \"footnoteDef\":\n case \"linkDef\":\n return { tag: \"div\" };\n case \"table\":\n return { tag: \"table\" };\n case \"tableRow\":\n return { tag: \"tr\" };\n case \"tableCell\":\n return {\n tag: frame.header ? \"th\" : \"td\",\n attrs: frame.align ? { \"data-md-align\": frame.align } : undefined,\n };\n case \"tableGutter\":\n /* A real cell for the pipes and the padding. A `<tr>` cannot hold text —\n the browser wraps it in an anonymous cell box it will not step a caret\n into — and the caret contract says every one of those characters is\n reachable. Hidden, never absent. */\n return { tag: \"td\" };\n case \"tableDelimiter\":\n /* A real row, so the delimiter line's characters sit somewhere a table\n may legally hold text. It is collapsed by CSS, not by omission. */\n return { tag: \"tr\" };\n case \"inline\":\n return { tag: \"span\" };\n case \"emphasis\":\n return { tag: \"em\" };\n case \"strong\":\n return { tag: \"strong\" };\n case \"strike\":\n return { tag: \"del\" };\n case \"codeSpan\":\n return { tag: \"code\" };\n case \"link\":\n return { tag: \"span\", attrs: { \"data-md-href\": frame.href } };\n case \"autolink\":\n return { tag: \"span\", attrs: { \"data-md-href\": frame.href } };\n case \"image\":\n return { tag: \"span\", attrs: { \"data-md-src\": frame.src, \"data-md-alt\": frame.alt } };\n case \"footnoteRef\":\n return { tag: \"sup\" };\n case \"hardBreak\":\n return { tag: \"span\" };\n }\n}\n\n/**\n * Whether two frames describe the same element, for reuse during a patch.\n *\n * Compared by TAG and by the attributes that would have to change, not by deep\n * equality of the frame: a heading whose text changed is the same `<h2>` and\n * must keep its identity, while a heading that became an `<h3>` is a different\n * element. Getting this wrong in the permissive direction replaces nodes the\n * caret is inside; getting it wrong in the strict direction is merely slower.\n */\nexport function sameElement(a: Frame, b: Frame): boolean {\n if (a.kind !== b.kind) return false;\n const left = tagFor(a);\n const right = tagFor(b);\n if (left.tag !== right.tag) return false;\n const la = left.attrs ?? {};\n const ra = right.attrs ?? {};\n const keys = new Set([...Object.keys(la), ...Object.keys(ra)]);\n for (const key of keys) if (la[key] !== ra[key]) return false;\n return true;\n}\n"],"names":["SYNTAX_ATTR","FRAME_ATTR","tagFor","frame","sameElement","a","b","left","right","la","ra","keys","key"],"mappings":"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"}
@@ -0,0 +1,92 @@
1
+ import { graphemeAfter as S, graphemeBefore as b } from "./caret-map.js";
2
+ const M = /* @__PURE__ */ new Set([
3
+ "emphasis",
4
+ "strong",
5
+ "strike",
6
+ "codeSpan",
7
+ "link",
8
+ "image",
9
+ "autolink",
10
+ "footnoteRef"
11
+ ]);
12
+ function k(n, a = []) {
13
+ for (const o of n)
14
+ o.type === "text" ? a.push(o) : k(o.children, a);
15
+ return a;
16
+ }
17
+ function B(n, a) {
18
+ return Math.max(0, Math.min(n.end, a.end) - Math.max(n.start, a.start));
19
+ }
20
+ function w(n, a, o) {
21
+ const { source: t } = n, e = Math.max(0, Math.min(a, o, t.length)), s = Math.min(t.length, Math.max(a, o));
22
+ if (e === s) return null;
23
+ if (e === 0 && s === t.length)
24
+ return { splice: { start: e, end: s, text: "" }, select: { anchor: 0, head: 0 } };
25
+ const c = k(n.children), u = new Uint8Array(t.length);
26
+ for (const r of c)
27
+ if (!r.syntax)
28
+ for (let i = r.start; i < r.end; i++) u[i] = 1;
29
+ let g = 0;
30
+ for (let r = e; r < s; r++) u[r] && g++;
31
+ if (!g) return null;
32
+ const h = [];
33
+ for (const r of n.frames) {
34
+ if (!M.has(r.frame.kind)) continue;
35
+ let i = 0, x = 0;
36
+ for (const m of r.content)
37
+ i += m.end - m.start, x += B(m, { start: e, end: s });
38
+ i > 0 && x === i && h.push(r);
39
+ }
40
+ let l = e, f = s;
41
+ for (const r of h)
42
+ l = Math.min(l, r.start), f = Math.max(f, r.end);
43
+ const A = (r) => {
44
+ if (r >= e && r < s && u[r]) return !0;
45
+ for (const i of h) if (r >= i.start && r < i.end) return !0;
46
+ return !1;
47
+ };
48
+ let d = "";
49
+ for (let r = l; r < f; r++) A(r) || (d += t[r]);
50
+ const p = l + d.length;
51
+ return { splice: { start: l, end: f, text: d }, select: { anchor: p, head: p } };
52
+ }
53
+ function v(n, a, o) {
54
+ let t = null;
55
+ for (const e of n.frames)
56
+ M.has(e.frame.kind) && (e.content.length || e.start < a || e.end > o || (!t || e.start < t.start) && (t = e));
57
+ return t;
58
+ }
59
+ function y(n) {
60
+ return {
61
+ splice: { start: n.start, end: n.end, text: "" },
62
+ select: { anchor: n.start, head: n.start }
63
+ };
64
+ }
65
+ function E(n, a, o) {
66
+ const { source: t } = n;
67
+ let e = Math.max(0, Math.min(o, t.length));
68
+ for (; e > 0 && t[e - 1] !== `
69
+ `; ) e--;
70
+ let s = e;
71
+ for (; s < t.length && t[s] !== `
72
+ `; ) s++;
73
+ if (s === e) return null;
74
+ for (const c of a.graphemes) if (c.start < s && c.end > e) return null;
75
+ return { start: e, end: Math.min(t.length, s + 1) };
76
+ }
77
+ function I(n, a, o) {
78
+ const t = b(a, o), e = v(n, t ? t.end : 0, o);
79
+ if (e) return y(e);
80
+ const s = E(n, a, o);
81
+ return s ? { splice: { ...s, text: "" }, select: { anchor: s.start, head: s.start } } : t ? w(n, t.start, t.end) : null;
82
+ }
83
+ function L(n, a, o) {
84
+ const t = S(a, o), e = v(n, o, t ? t.start : n.source.length);
85
+ return e ? y(e) : t ? w(n, t.start, t.end) : null;
86
+ }
87
+ export {
88
+ w as deleteVisible,
89
+ L as deleteVisibleAfter,
90
+ I as deleteVisibleBefore
91
+ };
92
+ //# sourceMappingURL=edit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"edit.js","sources":["../../../src/lib/markdown/edit.ts"],"sourcesContent":["/* ============================================================================\n VISIBLE EDITS — deleting what the user can see, without ever exposing what\n they cannot.\n\n THE PROBLEM THIS SOLVES. Under the caret map, the caret only ever stands on a\n visible position, so a deletion is expressed as \"remove the previous visible\n character\". But the markers are still real characters sitting in between, and\n two ways of removing text put them on screen:\n\n HALF A MARKER Deleting the source range between two caret stops can cut\n a `**` in two. `a**bc**d` with \"c\" selected spans offsets\n 4 to 7, and 5..7 is the closing marker — deleting the span\n leaves `a**bd`, which renders as literal asterisks.\n\n AN EMPTY ONE Deleting the last character of `**b**` leaves `****`,\n which is not emphasis at all, so every character of it\n becomes visible prose.\n\n So deletion is defined on CONTENT, not on ranges: it removes the visible\n characters inside the range and leaves every marker alone — except a marker\n whose construct no longer has any content, which goes with it. Both halves\n are needed and neither is sufficient.\n\n IT IS STILL ONE SPLICE. The surviving markers inside the range are re-emitted\n as the splice's text, so the whole operation stays a single edit: one history\n entry, one re-projection, one caret to compute. A multi-splice API would have\n been the obvious shape and would have made undo granularity a per-caller\n decision, which is exactly the kind of thing that goes wrong quietly.\n ========================================================================= */\n\nimport type { Frame, FrameRecord } from \"../syntax/markdown/frames\";\nimport type { CaretMap, Span } from \"./caret-map\";\nimport { graphemeAfter, graphemeBefore } from \"./caret-map\";\nimport type { Edit } from \"./commands\";\nimport type { PNode, PText, Projection } from \"./project\";\n\n/* `Edit` and `Splice` are imported rather than redeclared. A second shape for\n \"a splice and where the caret goes\" would be two things to keep in step for\n no gain, and the commands already own that shape. */\nexport type { Edit } from \"./commands\";\n\n/**\n * Inline constructs that must not survive losing their content.\n *\n * `inline` is deliberately absent: it is a paragraph's run of prose, and an\n * empty paragraph is an ordinary thing to have. The kinds here are the ones\n * whose markers mean nothing without something between them.\n */\nconst EMPTIABLE = new Set<Frame[\"kind\"]>([\n \"emphasis\",\n \"strong\",\n \"strike\",\n \"codeSpan\",\n \"link\",\n \"image\",\n \"autolink\",\n \"footnoteRef\",\n]);\n\nfunction flatten(nodes: readonly PNode[], out: PText[] = []): PText[] {\n for (const node of nodes) {\n if (node.type === \"text\") out.push(node);\n else flatten(node.children, out);\n }\n return out;\n}\n\nfunction overlap(a: Span, b: Span): number {\n return Math.max(0, Math.min(a.end, b.end) - Math.max(a.start, b.start));\n}\n\n/**\n * Removes every visible character in `[from, to)`, and any inline construct\n * that is left with nothing inside it.\n *\n * Returns null when the range holds no visible characters at all, so a caller\n * can tell \"nothing to delete\" from \"deleted nothing\".\n */\nexport function deleteVisible(projection: Projection, from: number, to: number): Edit | null {\n const { source } = projection;\n const start = Math.max(0, Math.min(from, to, source.length));\n const end = Math.min(source.length, Math.max(from, to));\n if (start === end) return null;\n\n /* DX-5619: A SELECTION OF THE WHOLE DOCUMENT EMPTIES IT. Everything below\n removes VISIBLE characters and leaves markers alone, so select-all then\n Delete left a fence, a `# ` or a list marker behind (and returned null,\n doing nothing at all, when none of the document was visible). No marker\n can outlive a document with nothing in it. */\n if (start === 0 && end === source.length) {\n return { splice: { start, end, text: \"\" }, select: { anchor: 0, head: 0 } };\n }\n\n const runs = flatten(projection.children);\n const content = new Uint8Array(source.length);\n for (const run of runs) {\n if (run.syntax) continue;\n for (let at = run.start; at < run.end; at++) content[at] = 1;\n }\n\n let visible = 0;\n for (let at = start; at < end; at++) if (content[at]) visible++;\n if (!visible) return null;\n\n /* Constructs the deletion empties. Measured against the frame's OWN declared\n content, which is the parser's answer rather than a guess at where the\n markers are. */\n const doomed: FrameRecord[] = [];\n for (const record of projection.frames) {\n if (!EMPTIABLE.has(record.frame.kind)) continue;\n let own = 0;\n let lost = 0;\n for (const range of record.content) {\n own += range.end - range.start;\n lost += overlap(range, { start, end });\n }\n if (own > 0 && lost === own) doomed.push(record);\n }\n\n /* The splice has to reach far enough to take the doomed markers with it, and\n they can lie outside the range the caller asked about — the closing `**` of\n a construct whose last character was just deleted is always outside it. */\n let spliceStart = start;\n let spliceEnd = end;\n for (const record of doomed) {\n spliceStart = Math.min(spliceStart, record.start);\n spliceEnd = Math.max(spliceEnd, record.end);\n }\n\n const removed = (at: number): boolean => {\n if (at >= start && at < end && content[at]) return true;\n for (const record of doomed) if (at >= record.start && at < record.end) return true;\n return false;\n };\n\n let text = \"\";\n for (let at = spliceStart; at < spliceEnd; at++) if (!removed(at)) text += source[at];\n\n /* The caret lands after whatever survived, which is where the deleted text\n used to be. The surface snaps it to a real stop after re-projecting: an\n offset that was legal before an edit is not necessarily legal after it. */\n const caret = spliceStart + text.length;\n return { splice: { start: spliceStart, end: spliceEnd, text }, select: { anchor: caret, head: caret } };\n}\n\n/**\n * Constructs that are markup end to end: a footnote reference, a hard break.\n *\n * `inline.ts` gives these NO content ranges, which makes them atomic, and atomic\n * is exactly what the delete rules have to know about. Without this, the next\n * visible character after one is whatever follows it, so pressing Delete in\n * front of a footnote reference skipped straight over it and ate the newline\n * beyond. (An image is not one: since DXUI-74 its alt text is its label, edited\n * in place like a link's.)\n */\nfunction atomicIn(projection: Projection, from: number, to: number): FrameRecord | null {\n let found: FrameRecord | null = null;\n for (const record of projection.frames) {\n if (!EMPTIABLE.has(record.frame.kind)) continue;\n if (record.content.length) continue;\n if (record.start < from || record.end > to) continue;\n if (!found || record.start < found.start) found = record;\n }\n return found;\n}\n\n/** Removes a construct whole, caret left where it stood. */\nfunction removeSpan(record: FrameRecord): Edit {\n return {\n splice: { start: record.start, end: record.end, text: \"\" },\n select: { anchor: record.start, head: record.start },\n };\n}\n\n/**\n * The line holding `offset`, when every character of it is markup.\n *\n * THE LAST RESORT, AND IT CLOSES A REAL DEAD END. A table whose cells are all\n * empty is a document with ZERO visible characters — the pipes, the alignment\n * row and the newlines between rows are markup to the last byte. There is no\n * visible character to delete, so backspace had nothing to do and the table\n * could not be removed with the keyboard at all. The probe found it by trying\n * to backspace a mixed document away and stalling with an empty table left.\n *\n * The line must be non-empty: a genuinely blank line is not markup, it is the\n * document's own vertical space, and deleting the line the caret sits at the\n * start of would be a FORWARD deletion wearing backspace's clothes.\n */\nfunction markupOnlyLine(projection: Projection, map: CaretMap, offset: number): Span | null {\n const { source } = projection;\n let start = Math.max(0, Math.min(offset, source.length));\n while (start > 0 && source[start - 1] !== \"\\n\") start--;\n let end = start;\n while (end < source.length && source[end] !== \"\\n\") end++;\n if (end === start) return null;\n for (const span of map.graphemes) if (span.start < end && span.end > start) return null;\n return { start, end: Math.min(source.length, end + 1) };\n}\n\n/** Backspace: removes the visible character before `offset`, or an atomic construct. */\nexport function deleteVisibleBefore(projection: Projection, map: CaretMap, offset: number): Edit | null {\n /* THE ORDER OF THESE THREE IS THE WHOLE RULE, and each position was earned.\n\n A construct beside the caret goes first: a footnote reference alone on a line\n satisfies the markup-only test too, and removing the LINE would take the\n blank line with it when only the reference was asked for.\n\n The line comes before the character search, because `graphemeBefore` looks\n through the whole document — on a line that shows nothing it returns a\n character three rows up, so backspace at the end of an empty table deleted\n a newline ABOVE the table and left the table standing. A key acts near the\n caret or it does not act. */\n const grapheme = graphemeBefore(map, offset);\n\n const atomic = atomicIn(projection, grapheme ? grapheme.end : 0, offset);\n if (atomic) return removeSpan(atomic);\n\n const line = markupOnlyLine(projection, map, offset);\n if (line) return { splice: { ...line, text: \"\" }, select: { anchor: line.start, head: line.start } };\n\n if (grapheme) return deleteVisible(projection, grapheme.start, grapheme.end);\n return null;\n}\n\n/** Forward delete: removes the visible character after `offset`, or an atomic construct. */\nexport function deleteVisibleAfter(projection: Projection, map: CaretMap, offset: number): Edit | null {\n const grapheme = graphemeAfter(map, offset);\n const atomic = atomicIn(projection, offset, grapheme ? grapheme.start : projection.source.length);\n if (atomic) return removeSpan(atomic);\n if (!grapheme) return null;\n return deleteVisible(projection, grapheme.start, grapheme.end);\n}\n"],"names":["EMPTIABLE","flatten","nodes","out","node","overlap","a","b","deleteVisible","projection","from","to","source","start","end","runs","content","run","at","visible","doomed","record","own","lost","range","spliceStart","spliceEnd","removed","text","caret","atomicIn","found","removeSpan","markupOnlyLine","map","offset","span","deleteVisibleBefore","grapheme","graphemeBefore","atomic","line","deleteVisibleAfter","graphemeAfter"],"mappings":";AAgDA,MAAMA,wBAAgB,IAAmB;AAAA,EACvC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAED,SAASC,EAAQC,GAAyBC,IAAe,IAAa;AACpE,aAAWC,KAAQF;AACjB,IAAIE,EAAK,SAAS,SAAQD,EAAI,KAAKC,CAAI,IAClCH,EAAQG,EAAK,UAAUD,CAAG;AAEjC,SAAOA;AACT;AAEA,SAASE,EAAQC,GAASC,GAAiB;AACzC,SAAO,KAAK,IAAI,GAAG,KAAK,IAAID,EAAE,KAAKC,EAAE,GAAG,IAAI,KAAK,IAAID,EAAE,OAAOC,EAAE,KAAK,CAAC;AACxE;AASO,SAASC,EAAcC,GAAwBC,GAAcC,GAAyB;AAC3F,QAAM,EAAE,QAAAC,MAAWH,GACbI,IAAQ,KAAK,IAAI,GAAG,KAAK,IAAIH,GAAMC,GAAIC,EAAO,MAAM,CAAC,GACrDE,IAAM,KAAK,IAAIF,EAAO,QAAQ,KAAK,IAAIF,GAAMC,CAAE,CAAC;AACtD,MAAIE,MAAUC,EAAK,QAAO;AAO1B,MAAID,MAAU,KAAKC,MAAQF,EAAO;AAChC,WAAO,EAAE,QAAQ,EAAE,OAAAC,GAAO,KAAAC,GAAK,MAAM,MAAM,QAAQ,EAAE,QAAQ,GAAG,MAAM,IAAE;AAG1E,QAAMC,IAAOd,EAAQQ,EAAW,QAAQ,GAClCO,IAAU,IAAI,WAAWJ,EAAO,MAAM;AAC5C,aAAWK,KAAOF;AAChB,QAAI,CAAAE,EAAI;AACR,eAASC,IAAKD,EAAI,OAAOC,IAAKD,EAAI,KAAKC,IAAM,CAAAF,EAAQE,CAAE,IAAI;AAG7D,MAAIC,IAAU;AACd,WAASD,IAAKL,GAAOK,IAAKJ,GAAKI,IAAM,CAAIF,EAAQE,CAAE,KAAGC;AACtD,MAAI,CAACA,EAAS,QAAO;AAKrB,QAAMC,IAAwB,CAAA;AAC9B,aAAWC,KAAUZ,EAAW,QAAQ;AACtC,QAAI,CAACT,EAAU,IAAIqB,EAAO,MAAM,IAAI,EAAG;AACvC,QAAIC,IAAM,GACNC,IAAO;AACX,eAAWC,KAASH,EAAO;AACzB,MAAAC,KAAOE,EAAM,MAAMA,EAAM,OACzBD,KAAQlB,EAAQmB,GAAO,EAAE,OAAAX,GAAO,KAAAC,GAAK;AAEvC,IAAIQ,IAAM,KAAKC,MAASD,KAAKF,EAAO,KAAKC,CAAM;AAAA,EACjD;AAKA,MAAII,IAAcZ,GACda,IAAYZ;AAChB,aAAWO,KAAUD;AACnB,IAAAK,IAAc,KAAK,IAAIA,GAAaJ,EAAO,KAAK,GAChDK,IAAY,KAAK,IAAIA,GAAWL,EAAO,GAAG;AAG5C,QAAMM,IAAU,CAACT,MAAwB;AACvC,QAAIA,KAAML,KAASK,IAAKJ,KAAOE,EAAQE,CAAE,EAAG,QAAO;AACnD,eAAWG,KAAUD,EAAQ,KAAIF,KAAMG,EAAO,SAASH,IAAKG,EAAO,IAAK,QAAO;AAC/E,WAAO;AAAA,EACT;AAEA,MAAIO,IAAO;AACX,WAASV,IAAKO,GAAaP,IAAKQ,GAAWR,IAAM,CAAKS,EAAQT,CAAE,MAAGU,KAAQhB,EAAOM,CAAE;AAKpF,QAAMW,IAAQJ,IAAcG,EAAK;AACjC,SAAO,EAAE,QAAQ,EAAE,OAAOH,GAAa,KAAKC,GAAW,MAAAE,EAAA,GAAQ,QAAQ,EAAE,QAAQC,GAAO,MAAMA,IAAM;AACtG;AAYA,SAASC,EAASrB,GAAwBC,GAAcC,GAAgC;AACtF,MAAIoB,IAA4B;AAChC,aAAWV,KAAUZ,EAAW;AAC9B,IAAKT,EAAU,IAAIqB,EAAO,MAAM,IAAI,MAChCA,EAAO,QAAQ,UACfA,EAAO,QAAQX,KAAQW,EAAO,MAAMV,MACpC,CAACoB,KAASV,EAAO,QAAQU,EAAM,WAAOA,IAAQV;AAEpD,SAAOU;AACT;AAGA,SAASC,EAAWX,GAA2B;AAC7C,SAAO;AAAA,IACL,QAAQ,EAAE,OAAOA,EAAO,OAAO,KAAKA,EAAO,KAAK,MAAM,GAAA;AAAA,IACtD,QAAQ,EAAE,QAAQA,EAAO,OAAO,MAAMA,EAAO,MAAA;AAAA,EAAM;AAEvD;AAgBA,SAASY,EAAexB,GAAwByB,GAAeC,GAA6B;AAC1F,QAAM,EAAE,QAAAvB,MAAWH;AACnB,MAAII,IAAQ,KAAK,IAAI,GAAG,KAAK,IAAIsB,GAAQvB,EAAO,MAAM,CAAC;AACvD,SAAOC,IAAQ,KAAKD,EAAOC,IAAQ,CAAC,MAAM;AAAA,IAAM,CAAAA;AAChD,MAAIC,IAAMD;AACV,SAAOC,IAAMF,EAAO,UAAUA,EAAOE,CAAG,MAAM;AAAA,IAAM,CAAAA;AACpD,MAAIA,MAAQD,EAAO,QAAO;AAC1B,aAAWuB,KAAQF,EAAI,UAAW,KAAIE,EAAK,QAAQtB,KAAOsB,EAAK,MAAMvB,EAAO,QAAO;AACnF,SAAO,EAAE,OAAAA,GAAO,KAAK,KAAK,IAAID,EAAO,QAAQE,IAAM,CAAC,EAAA;AACtD;AAGO,SAASuB,EAAoB5B,GAAwByB,GAAeC,GAA6B;AAYtG,QAAMG,IAAWC,EAAeL,GAAKC,CAAM,GAErCK,IAASV,EAASrB,GAAY6B,IAAWA,EAAS,MAAM,GAAGH,CAAM;AACvE,MAAIK,EAAQ,QAAOR,EAAWQ,CAAM;AAEpC,QAAMC,IAAOR,EAAexB,GAAYyB,GAAKC,CAAM;AACnD,SAAIM,IAAa,EAAE,QAAQ,EAAE,GAAGA,GAAM,MAAM,GAAA,GAAM,QAAQ,EAAE,QAAQA,EAAK,OAAO,MAAMA,EAAK,QAAM,IAE7FH,IAAiB9B,EAAcC,GAAY6B,EAAS,OAAOA,EAAS,GAAG,IACpE;AACT;AAGO,SAASI,EAAmBjC,GAAwByB,GAAeC,GAA6B;AACrG,QAAMG,IAAWK,EAAcT,GAAKC,CAAM,GACpCK,IAASV,EAASrB,GAAY0B,GAAQG,IAAWA,EAAS,QAAQ7B,EAAW,OAAO,MAAM;AAChG,SAAI+B,IAAeR,EAAWQ,CAAM,IAC/BF,IACE9B,EAAcC,GAAY6B,EAAS,OAAOA,EAAS,GAAG,IADvC;AAExB;"}
@@ -0,0 +1,79 @@
1
+ import { substituteAll as r } from "./images.js";
2
+ const h = 500, l = 250;
3
+ class a {
4
+ entries = [];
5
+ index = -1;
6
+ groupMs;
7
+ limit;
8
+ now;
9
+ /** State of the group currently open for merging. */
10
+ lastAt = 0;
11
+ lastKind = null;
12
+ lastEnd = -1;
13
+ constructor(t, s = {}) {
14
+ this.groupMs = s.groupMs ?? h, this.limit = s.limit ?? l, this.now = s.now ?? (() => Date.now()), this.entries.push(t), this.index = 0;
15
+ }
16
+ get canUndo() {
17
+ return this.index > 0;
18
+ }
19
+ get canRedo() {
20
+ return this.index < this.entries.length - 1;
21
+ }
22
+ /** Entry count, for tests that assert coalescing rather than behaviour. */
23
+ get size() {
24
+ return this.entries.length;
25
+ }
26
+ /**
27
+ * Records a state.
28
+ *
29
+ * `at` is where the edit happened; adjacency to the previous edit is what
30
+ * separates "still typing" from "went somewhere else and typed". Passing the
31
+ * position rather than deriving it from the diff is deliberate — a diff of
32
+ * two strings finds the shortest edit, which is not always the edit that
33
+ * happened, and coalescing decisions made from the wrong position are worse
34
+ * than none.
35
+ */
36
+ record(t, s, e) {
37
+ const i = this.now();
38
+ this.index < this.entries.length - 1 && (this.entries.length = this.index + 1), this.shouldMerge(s, e, i) ? this.entries[this.index] = { source: t.source, selection: t.selection } : (this.entries.push(t), this.index++, this.entries.length > this.limit && (this.entries.shift(), this.index--)), this.lastAt = i, this.lastKind = s, this.lastEnd = e;
39
+ }
40
+ shouldMerge(t, s, e) {
41
+ return this.index < 0 || t === "compose" || this.lastKind === "compose" || t === "other" || this.lastKind === "other" || t !== this.lastKind || e - this.lastAt > this.groupMs ? !1 : Math.abs(s - this.lastEnd) <= 1;
42
+ }
43
+ /** Forces the next edit to open a new group — a selection change, a blur. */
44
+ break() {
45
+ this.lastKind = null, this.lastEnd = -1;
46
+ }
47
+ /**
48
+ * Replaces every occurrence of `from` with `to` in EVERY entry, carrying
49
+ * each entry's selection through the change.
50
+ *
51
+ * The upload swap (DX-3134, see `MarkdownSurface.substitute`): a stored
52
+ * image's object URL must not survive anywhere Ctrl+Z or Ctrl+Y could reach.
53
+ * The entries are rewritten in place rather than a new one recorded, so the
54
+ * swap is not itself an undo step and the undo depth is unchanged.
55
+ */
56
+ substitute(t, s) {
57
+ for (let e = 0; e < this.entries.length; e++) {
58
+ const i = this.entries[e], n = r(i.source, t, s);
59
+ n && (this.entries[e] = {
60
+ source: n.source,
61
+ selection: i.selection && { anchor: n.map(i.selection.anchor), head: n.map(i.selection.head) }
62
+ });
63
+ }
64
+ }
65
+ /** Whether any entry, reachable by undo or redo, still holds `text`. */
66
+ includes(t) {
67
+ return this.entries.some((s) => s.source.includes(t));
68
+ }
69
+ undo() {
70
+ return this.canUndo ? (this.index--, this.break(), this.entries[this.index]) : null;
71
+ }
72
+ redo() {
73
+ return this.canRedo ? (this.index++, this.break(), this.entries[this.index]) : null;
74
+ }
75
+ }
76
+ export {
77
+ a as History
78
+ };
79
+ //# sourceMappingURL=history.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"history.js","sources":["../../../src/lib/markdown/history.ts"],"sourcesContent":["/* ============================================================================\n UNDO — ours, unavoidably.\n\n MDN is explicit that `execCommand` preserves the browser's native undo buffer\n and that direct DOM manipulation does not. The moment an editor stops going\n through `execCommand` it owns undo, so this is not a feature decision; it is\n entailed by every other decision already made. (Note the same fact is why the\n `CodeEditor` already in this library goes through `execCommand(\"insertText\")`\n — that choice is load-bearing, not stylistic.)\n\n COALESCING IS THE WHOLE DESIGN, and the constants are not guesses. They are\n what ProseMirror and CodeMirror landed on after years:\n\n - a new group after 500ms of quiet;\n - a new group when the edited ranges are not adjacent, because an edit\n somewhere else is a different thought;\n - a new group when a composition ends, because an IME commit is one unit\n however many keystrokes produced it;\n - typing merges with typing and deletion with deletion, never across.\n\n Undoing a paragraph the user typed as one breath should take one press. Undo\n that gives back one character at a time is the most common complaint about\n hand-rolled editors, and undo that gives back the whole document is the\n second — both are this table set wrong.\n\n WHAT IS STORED. Whole snapshots of the source string plus the selection, not\n inverse patches. That is a deliberate trade: a snapshot of a 100KB document\n is 100KB, which is nothing next to what it buys — an undo that cannot be\n wrong. Inverse patches have to be applied in exact reverse order against\n exactly the state they were computed from, and every editor that has got that\n wrong has corrupted somebody's document doing it.\n ========================================================================= */\n\nimport type { SourceSelection } from \"./position\";\nimport { substituteAll } from \"./images\";\n\nexport interface HistoryEntry {\n source: string;\n selection: SourceSelection | null;\n}\n\n/** What produced an edit, for deciding whether two of them belong together. */\nexport type EditKind = \"type\" | \"delete\" | \"compose\" | \"other\";\n\nexport interface HistoryOptions {\n /** Quiet time after which the next edit starts a new group. */\n groupMs?: number;\n /** Entries kept. Beyond this the oldest are dropped. */\n limit?: number;\n /** Injected so tests are deterministic; never read a clock directly. */\n now?: () => number;\n}\n\nconst DEFAULT_GROUP_MS = 500;\nconst DEFAULT_LIMIT = 250;\n\nexport class History {\n private readonly entries: HistoryEntry[] = [];\n private index = -1;\n\n private readonly groupMs: number;\n private readonly limit: number;\n private readonly now: () => number;\n\n /** State of the group currently open for merging. */\n private lastAt = 0;\n private lastKind: EditKind | null = null;\n private lastEnd = -1;\n\n constructor(initial: HistoryEntry, options: HistoryOptions = {}) {\n this.groupMs = options.groupMs ?? DEFAULT_GROUP_MS;\n this.limit = options.limit ?? DEFAULT_LIMIT;\n this.now = options.now ?? (() => Date.now());\n this.entries.push(initial);\n this.index = 0;\n }\n\n get canUndo(): boolean {\n return this.index > 0;\n }\n\n get canRedo(): boolean {\n return this.index < this.entries.length - 1;\n }\n\n /** Entry count, for tests that assert coalescing rather than behaviour. */\n get size(): number {\n return this.entries.length;\n }\n\n /**\n * Records a state.\n *\n * `at` is where the edit happened; adjacency to the previous edit is what\n * separates \"still typing\" from \"went somewhere else and typed\". Passing the\n * position rather than deriving it from the diff is deliberate — a diff of\n * two strings finds the shortest edit, which is not always the edit that\n * happened, and coalescing decisions made from the wrong position are worse\n * than none.\n */\n record(entry: HistoryEntry, kind: EditKind, at: number): void {\n const time = this.now();\n\n /* Anything after an undo discards the redo tail — the standard contract,\n and the one users expect from every text field they have ever used. */\n if (this.index < this.entries.length - 1) this.entries.length = this.index + 1;\n\n if (this.shouldMerge(kind, at, time)) {\n this.entries[this.index] = { source: entry.source, selection: entry.selection };\n } else {\n this.entries.push(entry);\n this.index++;\n if (this.entries.length > this.limit) {\n this.entries.shift();\n this.index--;\n }\n }\n\n this.lastAt = time;\n this.lastKind = kind;\n this.lastEnd = at;\n }\n\n private shouldMerge(kind: EditKind, at: number, time: number): boolean {\n if (this.index < 0) return false;\n /* A composition commit is ONE unit however many keystrokes made it, and it\n never merges with what came before or after — the IME already decided\n where its boundaries are, and second-guessing it is how an undo ends up\n giving back half a character. */\n if (kind === \"compose\" || this.lastKind === \"compose\") return false;\n if (kind === \"other\" || this.lastKind === \"other\") return false;\n if (kind !== this.lastKind) return false;\n if (time - this.lastAt > this.groupMs) return false;\n /* Adjacent means \"carried on from where the last edit left off\", within one\n character either way: typing extends forward, backspace retreats. */\n return Math.abs(at - this.lastEnd) <= 1;\n }\n\n /** Forces the next edit to open a new group — a selection change, a blur. */\n break(): void {\n this.lastKind = null;\n this.lastEnd = -1;\n }\n\n /**\n * Replaces every occurrence of `from` with `to` in EVERY entry, carrying\n * each entry's selection through the change.\n *\n * The upload swap (DX-3134, see `MarkdownSurface.substitute`): a stored\n * image's object URL must not survive anywhere Ctrl+Z or Ctrl+Y could reach.\n * The entries are rewritten in place rather than a new one recorded, so the\n * swap is not itself an undo step and the undo depth is unchanged.\n */\n substitute(from: string, to: string): void {\n for (let i = 0; i < this.entries.length; i++) {\n const entry = this.entries[i];\n const swap = substituteAll(entry.source, from, to);\n if (!swap) continue;\n this.entries[i] = {\n source: swap.source,\n selection: entry.selection && { anchor: swap.map(entry.selection.anchor), head: swap.map(entry.selection.head) },\n };\n }\n }\n\n /** Whether any entry, reachable by undo or redo, still holds `text`. */\n includes(text: string): boolean {\n return this.entries.some((entry) => entry.source.includes(text));\n }\n\n undo(): HistoryEntry | null {\n if (!this.canUndo) return null;\n this.index--;\n this.break();\n return this.entries[this.index];\n }\n\n redo(): HistoryEntry | null {\n if (!this.canRedo) return null;\n this.index++;\n this.break();\n return this.entries[this.index];\n }\n}\n"],"names":["DEFAULT_GROUP_MS","DEFAULT_LIMIT","History","initial","options","entry","kind","at","time","from","to","i","swap","substituteAll","text"],"mappings":";AAqDA,MAAMA,IAAmB,KACnBC,IAAgB;AAEf,MAAMC,EAAQ;AAAA,EACF,UAA0B,CAAA;AAAA,EACnC,QAAQ;AAAA,EAEC;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAGT,SAAS;AAAA,EACT,WAA4B;AAAA,EAC5B,UAAU;AAAA,EAElB,YAAYC,GAAuBC,IAA0B,IAAI;AAC/D,SAAK,UAAUA,EAAQ,WAAWJ,GAClC,KAAK,QAAQI,EAAQ,SAASH,GAC9B,KAAK,MAAMG,EAAQ,QAAQ,MAAM,KAAK,QACtC,KAAK,QAAQ,KAAKD,CAAO,GACzB,KAAK,QAAQ;AAAA,EACf;AAAA,EAEA,IAAI,UAAmB;AACrB,WAAO,KAAK,QAAQ;AAAA,EACtB;AAAA,EAEA,IAAI,UAAmB;AACrB,WAAO,KAAK,QAAQ,KAAK,QAAQ,SAAS;AAAA,EAC5C;AAAA;AAAA,EAGA,IAAI,OAAe;AACjB,WAAO,KAAK,QAAQ;AAAA,EACtB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYA,OAAOE,GAAqBC,GAAgBC,GAAkB;AAC5D,UAAMC,IAAO,KAAK,IAAA;AAIlB,IAAI,KAAK,QAAQ,KAAK,QAAQ,SAAS,MAAG,KAAK,QAAQ,SAAS,KAAK,QAAQ,IAEzE,KAAK,YAAYF,GAAMC,GAAIC,CAAI,IACjC,KAAK,QAAQ,KAAK,KAAK,IAAI,EAAE,QAAQH,EAAM,QAAQ,WAAWA,EAAM,UAAA,KAEpE,KAAK,QAAQ,KAAKA,CAAK,GACvB,KAAK,SACD,KAAK,QAAQ,SAAS,KAAK,UAC7B,KAAK,QAAQ,MAAA,GACb,KAAK,WAIT,KAAK,SAASG,GACd,KAAK,WAAWF,GAChB,KAAK,UAAUC;AAAA,EACjB;AAAA,EAEQ,YAAYD,GAAgBC,GAAYC,GAAuB;AASrE,WARI,KAAK,QAAQ,KAKbF,MAAS,aAAa,KAAK,aAAa,aACxCA,MAAS,WAAW,KAAK,aAAa,WACtCA,MAAS,KAAK,YACdE,IAAO,KAAK,SAAS,KAAK,UAAgB,KAGvC,KAAK,IAAID,IAAK,KAAK,OAAO,KAAK;AAAA,EACxC;AAAA;AAAA,EAGA,QAAc;AACZ,SAAK,WAAW,MAChB,KAAK,UAAU;AAAA,EACjB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,WAAWE,GAAcC,GAAkB;AACzC,aAASC,IAAI,GAAGA,IAAI,KAAK,QAAQ,QAAQA,KAAK;AAC5C,YAAMN,IAAQ,KAAK,QAAQM,CAAC,GACtBC,IAAOC,EAAcR,EAAM,QAAQI,GAAMC,CAAE;AACjD,MAAKE,MACL,KAAK,QAAQD,CAAC,IAAI;AAAA,QAChB,QAAQC,EAAK;AAAA,QACb,WAAWP,EAAM,aAAa,EAAE,QAAQO,EAAK,IAAIP,EAAM,UAAU,MAAM,GAAG,MAAMO,EAAK,IAAIP,EAAM,UAAU,IAAI,EAAA;AAAA,MAAE;AAAA,IAEnH;AAAA,EACF;AAAA;AAAA,EAGA,SAASS,GAAuB;AAC9B,WAAO,KAAK,QAAQ,KAAK,CAACT,MAAUA,EAAM,OAAO,SAASS,CAAI,CAAC;AAAA,EACjE;AAAA,EAEA,OAA4B;AAC1B,WAAK,KAAK,WACV,KAAK,SACL,KAAK,MAAA,GACE,KAAK,QAAQ,KAAK,KAAK,KAHJ;AAAA,EAI5B;AAAA,EAEA,OAA4B;AAC1B,WAAK,KAAK,WACV,KAAK,SACL,KAAK,MAAA,GACE,KAAK,QAAQ,KAAK,KAAK,KAHJ;AAAA,EAI5B;AACF;"}
@@ -0,0 +1,63 @@
1
+ import { toggleBold as n, toggleItalic as s, toggleCode as g, toggleStrike as m, toggleTask as u, smartTab as k, smartShiftTab as h, toggleQuote as p, insertRule as f, deleteRow as y, deleteColumn as b, deleteTable as w, insertLink as C, setHeading as o, adjustHeading as l, toggleList as d, toggleCodeBlock as L, insertRow as c, alignColumn as i } from "./commands.js";
2
+ const R = [
3
+ /* Inline formatting */
4
+ { id: "bold", key: "ctrl+b", group: "formatting", command: n },
5
+ { id: "italic", key: "ctrl+i", group: "formatting", command: s },
6
+ { id: "inlineCode", key: "ctrl+e", group: "formatting", command: g },
7
+ { id: "strikethrough", key: "ctrl+shift+s", group: "formatting", command: m },
8
+ { id: "link", key: "ctrl+k", group: "formatting", command: C() },
9
+ { id: "attachFile", key: "ctrl+shift+i", group: "formatting", request: "pickFiles" },
10
+ /* Headings */
11
+ { id: "paragraph", key: "ctrl+0", group: "headings", command: o(0) },
12
+ { id: "heading1", key: "ctrl+1", group: "headings", command: o(1) },
13
+ { id: "heading2", key: "ctrl+2", group: "headings", command: o(2) },
14
+ { id: "heading3", key: "ctrl+3", group: "headings", command: o(3) },
15
+ { id: "heading4", key: "ctrl+4", group: "headings", command: o(4) },
16
+ { id: "heading5", key: "ctrl+5", group: "headings", command: o(5) },
17
+ { id: "heading6", key: "ctrl+6", group: "headings", command: o(6) },
18
+ { id: "decreaseHeading", key: "ctrl+shift+comma", group: "headings", command: l(-1) },
19
+ { id: "increaseHeading", key: "ctrl+shift+period", group: "headings", command: l(1) },
20
+ /* Lists */
21
+ { id: "bulletList", key: "ctrl+shift+bracketleft", group: "lists", command: d(!1) },
22
+ { id: "numberedList", key: "ctrl+shift+bracketright", group: "lists", command: d(!0) },
23
+ { id: "taskCheckbox", key: "ctrl+shift+x", group: "lists", command: u },
24
+ // I18N-ALLOW: the chord string "tab" is a key id matched against the registry and never rendered (chordLabel names it from the catalog); the scan reads the lone word as English
25
+ { id: "indent", key: "tab", group: "lists", command: k },
26
+ { id: "outdent", key: "shift+tab", group: "lists", command: h },
27
+ /* Blocks */
28
+ { id: "codeBlock", key: "ctrl+shift+k", group: "blocks", command: L() },
29
+ { id: "blockquote", key: "ctrl+shift+q", group: "blocks", command: p },
30
+ { id: "horizontalRule", key: "ctrl+shift+enter", group: "blocks", command: f },
31
+ /* Tables */
32
+ { id: "table", key: "ctrl+alt+shift+t", group: "tables", request: "insertTable" },
33
+ { id: "rowAbove", key: "ctrl+alt+shift+arrowup", group: "tables", command: c(!1) },
34
+ { id: "rowBelow", key: "ctrl+alt+shift+arrowdown", group: "tables", command: c(!0) },
35
+ { id: "columnLeft", key: "ctrl+alt+shift+arrowleft", group: "tables", request: "insertColumnLeft" },
36
+ { id: "columnRight", key: "ctrl+alt+shift+arrowright", group: "tables", request: "insertColumnRight" },
37
+ { id: "deleteRow", key: "ctrl+alt+backspace", group: "tables", command: y },
38
+ { id: "deleteColumn", key: "ctrl+shift+backspace", group: "tables", command: b },
39
+ { id: "deleteTable", key: "ctrl+alt+shift+backspace", group: "tables", command: w },
40
+ { id: "alignLeft", key: "ctrl+alt+l", group: "tables", command: i("left") },
41
+ { id: "alignCenter", key: "ctrl+alt+c", group: "tables", command: i("center") },
42
+ { id: "alignRight", key: "ctrl+alt+r", group: "tables", command: i("right") }
43
+ ];
44
+ function T(t) {
45
+ const e = [];
46
+ (t.ctrlKey || t.metaKey) && e.push("ctrl"), t.altKey && e.push("alt"), t.shiftKey && e.push("shift");
47
+ const r = e.length ? e.join("+") + "+" : "", a = [r + t.key.toLowerCase()];
48
+ return t.code && a.push(r + t.code.toLowerCase()), a;
49
+ }
50
+ const q = new Map(R.map((t) => [t.key, t]));
51
+ function B(t) {
52
+ for (const e of T(t)) {
53
+ const r = q.get(e);
54
+ if (r) return r;
55
+ }
56
+ return null;
57
+ }
58
+ export {
59
+ R as HOTKEYS,
60
+ T as chordsOf,
61
+ B as hotkeyFor
62
+ };
63
+ //# sourceMappingURL=hotkeys.js.map