@50arms/ui 0.0.0-stage → 35.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1256) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +193 -2
  3. package/dist/components/Accordion.js +68 -0
  4. package/dist/components/Accordion.js.map +1 -0
  5. package/dist/components/AgentWorkingSpinner.js +46 -0
  6. package/dist/components/AgentWorkingSpinner.js.map +1 -0
  7. package/dist/components/AppShell.js +228 -0
  8. package/dist/components/AppShell.js.map +1 -0
  9. package/dist/components/Attention.js +130 -0
  10. package/dist/components/Attention.js.map +1 -0
  11. package/dist/components/Avatar.js +99 -0
  12. package/dist/components/Avatar.js.map +1 -0
  13. package/dist/components/Badge.js +143 -0
  14. package/dist/components/Badge.js.map +1 -0
  15. package/dist/components/Board.js +292 -0
  16. package/dist/components/Board.js.map +1 -0
  17. package/dist/components/Button.js +327 -0
  18. package/dist/components/Button.js.map +1 -0
  19. package/dist/components/Callout.js +106 -0
  20. package/dist/components/Callout.js.map +1 -0
  21. package/dist/components/Card.js +140 -0
  22. package/dist/components/Card.js.map +1 -0
  23. package/dist/components/Choice.js +361 -0
  24. package/dist/components/Choice.js.map +1 -0
  25. package/dist/components/CodeEditor.js +384 -0
  26. package/dist/components/CodeEditor.js.map +1 -0
  27. package/dist/components/ColorPicker.js +174 -0
  28. package/dist/components/ColorPicker.js.map +1 -0
  29. package/dist/components/Combobox.js +212 -0
  30. package/dist/components/Combobox.js.map +1 -0
  31. package/dist/components/CommandPalette.js +163 -0
  32. package/dist/components/CommandPalette.js.map +1 -0
  33. package/dist/components/ConcentricRing.js +60 -0
  34. package/dist/components/ConcentricRing.js.map +1 -0
  35. package/dist/components/ConnectionCard.js +98 -0
  36. package/dist/components/ConnectionCard.js.map +1 -0
  37. package/dist/components/ContextItemRow.js +49 -0
  38. package/dist/components/ContextItemRow.js.map +1 -0
  39. package/dist/components/CopyValue.js +57 -0
  40. package/dist/components/CopyValue.js.map +1 -0
  41. package/dist/components/CountBadge.js +26 -0
  42. package/dist/components/CountBadge.js.map +1 -0
  43. package/dist/components/DateCalendar.js +156 -0
  44. package/dist/components/DateCalendar.js.map +1 -0
  45. package/dist/components/DateField.js +166 -0
  46. package/dist/components/DateField.js.map +1 -0
  47. package/dist/components/DatePicker.js +56 -0
  48. package/dist/components/DatePicker.js.map +1 -0
  49. package/dist/components/DateTimeText.js +19 -0
  50. package/dist/components/DateTimeText.js.map +1 -0
  51. package/dist/components/DescriptionList.js +25 -0
  52. package/dist/components/DescriptionList.js.map +1 -0
  53. package/dist/components/Dialog.js +332 -0
  54. package/dist/components/Dialog.js.map +1 -0
  55. package/dist/components/DragDrop.js +395 -0
  56. package/dist/components/DragDrop.js.map +1 -0
  57. package/dist/components/Drawer.js +100 -0
  58. package/dist/components/Drawer.js.map +1 -0
  59. package/dist/components/EditGutter.js +110 -0
  60. package/dist/components/EditGutter.js.map +1 -0
  61. package/dist/components/EmojiPicker.js +174 -0
  62. package/dist/components/EmojiPicker.js.map +1 -0
  63. package/dist/components/ErrorBoundary.js +47 -0
  64. package/dist/components/ErrorBoundary.js.map +1 -0
  65. package/dist/components/Field.js +115 -0
  66. package/dist/components/Field.js.map +1 -0
  67. package/dist/components/FileUpload.js +128 -0
  68. package/dist/components/FileUpload.js.map +1 -0
  69. package/dist/components/FilterMenu.js +256 -0
  70. package/dist/components/FilterMenu.js.map +1 -0
  71. package/dist/components/GatesSection.js +79 -0
  72. package/dist/components/GatesSection.js.map +1 -0
  73. package/dist/components/Icon.js +50 -0
  74. package/dist/components/Icon.js.map +1 -0
  75. package/dist/components/IconButton.js +59 -0
  76. package/dist/components/IconButton.js.map +1 -0
  77. package/dist/components/IconStack.js +69 -0
  78. package/dist/components/IconStack.js.map +1 -0
  79. package/dist/components/ImageUploadField.js +146 -0
  80. package/dist/components/ImageUploadField.js.map +1 -0
  81. package/dist/components/InlineEdit.js +432 -0
  82. package/dist/components/InlineEdit.js.map +1 -0
  83. package/dist/components/InlineMarkdownEdit.js +184 -0
  84. package/dist/components/InlineMarkdownEdit.js.map +1 -0
  85. package/dist/components/Input.js +156 -0
  86. package/dist/components/Input.js.map +1 -0
  87. package/dist/components/LegalDocument.js +155 -0
  88. package/dist/components/LegalDocument.js.map +1 -0
  89. package/dist/components/LineDiff.js +95 -0
  90. package/dist/components/LineDiff.js.map +1 -0
  91. package/dist/components/ListHeader.js +72 -0
  92. package/dist/components/ListHeader.js.map +1 -0
  93. package/dist/components/Loading.js +111 -0
  94. package/dist/components/Loading.js.map +1 -0
  95. package/dist/components/Markdown.js +28 -0
  96. package/dist/components/Markdown.js.map +1 -0
  97. package/dist/components/MarkdownEditor.js +467 -0
  98. package/dist/components/MarkdownEditor.js.map +1 -0
  99. package/dist/components/Menu.js +185 -0
  100. package/dist/components/Menu.js.map +1 -0
  101. package/dist/components/Navigation.js +87 -0
  102. package/dist/components/Navigation.js.map +1 -0
  103. package/dist/components/NumberInput.js +119 -0
  104. package/dist/components/NumberInput.js.map +1 -0
  105. package/dist/components/OTPInput.js +71 -0
  106. package/dist/components/OTPInput.js.map +1 -0
  107. package/dist/components/OrderedEntityManager.js +170 -0
  108. package/dist/components/OrderedEntityManager.js.map +1 -0
  109. package/dist/components/PagedWindowList.js +74 -0
  110. package/dist/components/PagedWindowList.js.map +1 -0
  111. package/dist/components/PaginationBar.js +95 -0
  112. package/dist/components/PaginationBar.js.map +1 -0
  113. package/dist/components/Panel.js +396 -0
  114. package/dist/components/Panel.js.map +1 -0
  115. package/dist/components/PasswordInput.js +32 -0
  116. package/dist/components/PasswordInput.js.map +1 -0
  117. package/dist/components/PasswordRequirements.js +25 -0
  118. package/dist/components/PasswordRequirements.js.map +1 -0
  119. package/dist/components/PatchDiff.js +96 -0
  120. package/dist/components/PatchDiff.js.map +1 -0
  121. package/dist/components/PendingVeil.js +18 -0
  122. package/dist/components/PendingVeil.js.map +1 -0
  123. package/dist/components/Popover.js +214 -0
  124. package/dist/components/Popover.js.map +1 -0
  125. package/dist/components/Progress.js +419 -0
  126. package/dist/components/Progress.js.map +1 -0
  127. package/dist/components/RatingScale.js +89 -0
  128. package/dist/components/RatingScale.js.map +1 -0
  129. package/dist/components/ReadMore.js +232 -0
  130. package/dist/components/ReadMore.js.map +1 -0
  131. package/dist/components/RecordCard.js +202 -0
  132. package/dist/components/RecordCard.js.map +1 -0
  133. package/dist/components/RelativeTime.js +29 -0
  134. package/dist/components/RelativeTime.js.map +1 -0
  135. package/dist/components/SandboxedFrame.js +135 -0
  136. package/dist/components/SandboxedFrame.js.map +1 -0
  137. package/dist/components/SearchInput.js +38 -0
  138. package/dist/components/SearchInput.js.map +1 -0
  139. package/dist/components/SecretField.js +228 -0
  140. package/dist/components/SecretField.js.map +1 -0
  141. package/dist/components/SectionNav.js +42 -0
  142. package/dist/components/SectionNav.js.map +1 -0
  143. package/dist/components/Select.js +172 -0
  144. package/dist/components/Select.js.map +1 -0
  145. package/dist/components/SequenceDiagram.js +109 -0
  146. package/dist/components/SequenceDiagram.js.map +1 -0
  147. package/dist/components/SettingRow.js +124 -0
  148. package/dist/components/SettingRow.js.map +1 -0
  149. package/dist/components/SignOffRings.js +36 -0
  150. package/dist/components/SignOffRings.js.map +1 -0
  151. package/dist/components/Slider.js +353 -0
  152. package/dist/components/Slider.js.map +1 -0
  153. package/dist/components/SolutionChoice.js +89 -0
  154. package/dist/components/SolutionChoice.js.map +1 -0
  155. package/dist/components/SortMenu.js +75 -0
  156. package/dist/components/SortMenu.js.map +1 -0
  157. package/dist/components/Spinner.js +42 -0
  158. package/dist/components/Spinner.js.map +1 -0
  159. package/dist/components/Stat.js +148 -0
  160. package/dist/components/Stat.js.map +1 -0
  161. package/dist/components/StatusSelect.js +119 -0
  162. package/dist/components/StatusSelect.js.map +1 -0
  163. package/dist/components/Surface.js +210 -0
  164. package/dist/components/Surface.js.map +1 -0
  165. package/dist/components/Table.js +300 -0
  166. package/dist/components/Table.js.map +1 -0
  167. package/dist/components/Tabs.js +288 -0
  168. package/dist/components/Tabs.js.map +1 -0
  169. package/dist/components/ThemeMenu.js +198 -0
  170. package/dist/components/ThemeMenu.js.map +1 -0
  171. package/dist/components/Toast.js +217 -0
  172. package/dist/components/Toast.js.map +1 -0
  173. package/dist/components/Toggle.js +147 -0
  174. package/dist/components/Toggle.js.map +1 -0
  175. package/dist/components/ToggleMatrix.js +157 -0
  176. package/dist/components/ToggleMatrix.js.map +1 -0
  177. package/dist/components/Tree.js +125 -0
  178. package/dist/components/Tree.js.map +1 -0
  179. package/dist/components/TriStateSwitch.js +111 -0
  180. package/dist/components/TriStateSwitch.js.map +1 -0
  181. package/dist/components/VideoPlayer.js +64 -0
  182. package/dist/components/VideoPlayer.js.map +1 -0
  183. package/dist/components/auth/AcceptInvitationCard.js +110 -0
  184. package/dist/components/auth/AcceptInvitationCard.js.map +1 -0
  185. package/dist/components/auth/AuthLayout.js +18 -0
  186. package/dist/components/auth/AuthLayout.js.map +1 -0
  187. package/dist/components/auth/ForgotPasswordForm.js +44 -0
  188. package/dist/components/auth/ForgotPasswordForm.js.map +1 -0
  189. package/dist/components/auth/LoginForm.js +76 -0
  190. package/dist/components/auth/LoginForm.js.map +1 -0
  191. package/dist/components/auth/ResetPasswordForm.js +69 -0
  192. package/dist/components/auth/ResetPasswordForm.js.map +1 -0
  193. package/dist/components/auth/SignInProviders.js +45 -0
  194. package/dist/components/auth/SignInProviders.js.map +1 -0
  195. package/dist/components/auth/SignupCard.js +204 -0
  196. package/dist/components/auth/SignupCard.js.map +1 -0
  197. package/dist/components/auth/TermsAcceptance.js +43 -0
  198. package/dist/components/auth/TermsAcceptance.js.map +1 -0
  199. package/dist/components/board/context.js +32 -0
  200. package/dist/components/board/context.js.map +1 -0
  201. package/dist/components/board/recipe.js +94 -0
  202. package/dist/components/board/recipe.js.map +1 -0
  203. package/dist/components/calendar/CalendarMonth.js +299 -0
  204. package/dist/components/calendar/CalendarMonth.js.map +1 -0
  205. package/dist/components/calendar/CalendarTimeGrid.js +430 -0
  206. package/dist/components/calendar/CalendarTimeGrid.js.map +1 -0
  207. package/dist/components/calendar/EventActions.js +101 -0
  208. package/dist/components/calendar/EventActions.js.map +1 -0
  209. package/dist/components/calendar/format.js +73 -0
  210. package/dist/components/calendar/format.js.map +1 -0
  211. package/dist/components/calendar/palette.js +31 -0
  212. package/dist/components/calendar/palette.js.map +1 -0
  213. package/dist/components/calendar/use-calendar-drag.js +149 -0
  214. package/dist/components/calendar/use-calendar-drag.js.map +1 -0
  215. package/dist/components/calendar/use-event-keyboard.js +87 -0
  216. package/dist/components/calendar/use-event-keyboard.js.map +1 -0
  217. package/dist/components/calendar/use-grid-navigation.js +79 -0
  218. package/dist/components/calendar/use-grid-navigation.js.map +1 -0
  219. package/dist/components/calendar/use-now.js +27 -0
  220. package/dist/components/calendar/use-now.js.map +1 -0
  221. package/dist/components/card-face/AcRingGlyph.js +39 -0
  222. package/dist/components/card-face/AcRingGlyph.js.map +1 -0
  223. package/dist/components/card-face/BoardCardAgentSlot.js +17 -0
  224. package/dist/components/card-face/BoardCardAgentSlot.js.map +1 -0
  225. package/dist/components/card-face/CardFace.js +109 -0
  226. package/dist/components/card-face/CardFace.js.map +1 -0
  227. package/dist/components/card-face/CardTypeBadge.js +17 -0
  228. package/dist/components/card-face/CardTypeBadge.js.map +1 -0
  229. package/dist/components/card-face/EffortBadge.js +11 -0
  230. package/dist/components/card-face/EffortBadge.js.map +1 -0
  231. package/dist/components/card-face/GateRingGlyph.js +31 -0
  232. package/dist/components/card-face/GateRingGlyph.js.map +1 -0
  233. package/dist/components/card-face/OverflowRow.js +70 -0
  234. package/dist/components/card-face/OverflowRow.js.map +1 -0
  235. package/dist/components/card-face/TapTip.js +32 -0
  236. package/dist/components/card-face/TapTip.js.map +1 -0
  237. package/dist/components/card-face/hit-area.js +6 -0
  238. package/dist/components/card-face/hit-area.js.map +1 -0
  239. package/dist/components/card-face/vocabulary.js +102 -0
  240. package/dist/components/card-face/vocabulary.js.map +1 -0
  241. package/dist/components/chart/BarList.js +78 -0
  242. package/dist/components/chart/BarList.js.map +1 -0
  243. package/dist/components/chart/LineChart.js +310 -0
  244. package/dist/components/chart/LineChart.js.map +1 -0
  245. package/dist/components/chart/ShareBar.js +141 -0
  246. package/dist/components/chart/ShareBar.js.map +1 -0
  247. package/dist/components/chart/TimeSeriesChart.js +305 -0
  248. package/dist/components/chart/TimeSeriesChart.js.map +1 -0
  249. package/dist/components/chart/label-metrics.js +17 -0
  250. package/dist/components/chart/label-metrics.js.map +1 -0
  251. package/dist/components/chart/line-chart-axis.js +38 -0
  252. package/dist/components/chart/line-chart-axis.js.map +1 -0
  253. package/dist/components/chart/line-chart-scale.js +132 -0
  254. package/dist/components/chart/line-chart-scale.js.map +1 -0
  255. package/dist/components/chart/line-series-style.js +22 -0
  256. package/dist/components/chart/line-series-style.js.map +1 -0
  257. package/dist/components/chart/share-bar-labels.js +14 -0
  258. package/dist/components/chart/share-bar-labels.js.map +1 -0
  259. package/dist/components/chart/shared.js +157 -0
  260. package/dist/components/chart/shared.js.map +1 -0
  261. package/dist/components/chart/time-series-scale.js +51 -0
  262. package/dist/components/chart/time-series-scale.js.map +1 -0
  263. package/dist/components/chat/Attachment.js +316 -0
  264. package/dist/components/chat/Attachment.js.map +1 -0
  265. package/dist/components/chat/Chat.js +171 -0
  266. package/dist/components/chat/Chat.js.map +1 -0
  267. package/dist/components/chat/Composer.js +274 -0
  268. package/dist/components/chat/Composer.js.map +1 -0
  269. package/dist/components/chat/ContextMeter.js +202 -0
  270. package/dist/components/chat/ContextMeter.js.map +1 -0
  271. package/dist/components/chat/EffortControl.js +116 -0
  272. package/dist/components/chat/EffortControl.js.map +1 -0
  273. package/dist/components/chat/FileCover.js +78 -0
  274. package/dist/components/chat/FileCover.js.map +1 -0
  275. package/dist/components/chat/Message.js +356 -0
  276. package/dist/components/chat/Message.js.map +1 -0
  277. package/dist/components/chat/MessageScroller.js +104 -0
  278. package/dist/components/chat/MessageScroller.js.map +1 -0
  279. package/dist/components/chat/ModelSelector.js +156 -0
  280. package/dist/components/chat/ModelSelector.js.map +1 -0
  281. package/dist/components/chat/StreamingMarkdown.js +42 -0
  282. package/dist/components/chat/StreamingMarkdown.js.map +1 -0
  283. package/dist/components/chat/download-file.js +9 -0
  284. package/dist/components/chat/download-file.js.map +1 -0
  285. package/dist/components/chat/file-icon.js +39 -0
  286. package/dist/components/chat/file-icon.js.map +1 -0
  287. package/dist/components/checklist/StatusChecklist.js +103 -0
  288. package/dist/components/checklist/StatusChecklist.js.map +1 -0
  289. package/dist/components/checklist/tally.js +29 -0
  290. package/dist/components/checklist/tally.js.map +1 -0
  291. package/dist/components/code-editor/context.js +13 -0
  292. package/dist/components/code-editor/context.js.map +1 -0
  293. package/dist/components/code-editor/editing.js +93 -0
  294. package/dist/components/code-editor/editing.js.map +1 -0
  295. package/dist/components/code-editor/highlight.js +27 -0
  296. package/dist/components/code-editor/highlight.js.map +1 -0
  297. package/dist/components/code-editor/recipe.js +75 -0
  298. package/dist/components/code-editor/recipe.js.map +1 -0
  299. package/dist/components/date-timeline/DateTimeline.js +358 -0
  300. package/dist/components/date-timeline/DateTimeline.js.map +1 -0
  301. package/dist/components/date-timeline/TimelineRow.js +100 -0
  302. package/dist/components/date-timeline/TimelineRow.js.map +1 -0
  303. package/dist/components/date-timeline/useBarDrag.js +44 -0
  304. package/dist/components/date-timeline/useBarDrag.js.map +1 -0
  305. package/dist/components/date-timeline/useMarkerDrag.js +40 -0
  306. package/dist/components/date-timeline/useMarkerDrag.js.map +1 -0
  307. package/dist/components/date-timeline/useTimelineZoom.js +44 -0
  308. package/dist/components/date-timeline/useTimelineZoom.js.map +1 -0
  309. package/dist/components/drag-drop/context.js +37 -0
  310. package/dist/components/drag-drop/context.js.map +1 -0
  311. package/dist/components/drag-drop/recipe.js +270 -0
  312. package/dist/components/drag-drop/recipe.js.map +1 -0
  313. package/dist/components/drag-drop/shift.js +157 -0
  314. package/dist/components/drag-drop/shift.js.map +1 -0
  315. package/dist/components/edit/activation.js +10 -0
  316. package/dist/components/edit/activation.js.map +1 -0
  317. package/dist/components/edit/outcome.js +47 -0
  318. package/dist/components/edit/outcome.js.map +1 -0
  319. package/dist/components/edit/use-edit-session.js +146 -0
  320. package/dist/components/edit/use-edit-session.js.map +1 -0
  321. package/dist/components/file-viewer/FileViewer.js +97 -0
  322. package/dist/components/file-viewer/FileViewer.js.map +1 -0
  323. package/dist/components/file-viewer/PageNumberJumpField.js +47 -0
  324. package/dist/components/file-viewer/PageNumberJumpField.js.map +1 -0
  325. package/dist/components/file-viewer/ViewerControls.js +122 -0
  326. package/dist/components/file-viewer/ViewerControls.js.map +1 -0
  327. package/dist/components/file-viewer/ViewerRail.js +57 -0
  328. package/dist/components/file-viewer/ViewerRail.js.map +1 -0
  329. package/dist/components/file-viewer/ViewerStage.js +112 -0
  330. package/dist/components/file-viewer/ViewerStage.js.map +1 -0
  331. package/dist/components/file-viewer/frames.js +37 -0
  332. package/dist/components/file-viewer/frames.js.map +1 -0
  333. package/dist/components/file-viewer/use-frame-cursor.js +32 -0
  334. package/dist/components/file-viewer/use-frame-cursor.js.map +1 -0
  335. package/dist/components/file-viewer/use-viewer-keys.js +50 -0
  336. package/dist/components/file-viewer/use-viewer-keys.js.map +1 -0
  337. package/dist/components/file-viewer/use-viewer-zoom.js +68 -0
  338. package/dist/components/file-viewer/use-viewer-zoom.js.map +1 -0
  339. package/dist/components/focus-web/FocusWeb.js +322 -0
  340. package/dist/components/focus-web/FocusWeb.js.map +1 -0
  341. package/dist/components/focus-web/layout.js +34 -0
  342. package/dist/components/focus-web/layout.js.map +1 -0
  343. package/dist/components/graph-explorer/GraphExplorer.js +441 -0
  344. package/dist/components/graph-explorer/GraphExplorer.js.map +1 -0
  345. package/dist/components/graph-explorer/camera-math.js +102 -0
  346. package/dist/components/graph-explorer/camera-math.js.map +1 -0
  347. package/dist/components/graph-explorer/tree-layout.js +103 -0
  348. package/dist/components/graph-explorer/tree-layout.js.map +1 -0
  349. package/dist/components/graph-explorer/use-camera.js +82 -0
  350. package/dist/components/graph-explorer/use-camera.js.map +1 -0
  351. package/dist/components/graph-explorer/viewport-gesture.js +107 -0
  352. package/dist/components/graph-explorer/viewport-gesture.js.map +1 -0
  353. package/dist/components/kanban/KanbanBoard.js +219 -0
  354. package/dist/components/kanban/KanbanBoard.js.map +1 -0
  355. package/dist/components/kanban/recipe.js +144 -0
  356. package/dist/components/kanban/recipe.js.map +1 -0
  357. package/dist/components/markdown/Affordances.js +398 -0
  358. package/dist/components/markdown/Affordances.js.map +1 -0
  359. package/dist/components/markdown/AttachmentStrip.js +128 -0
  360. package/dist/components/markdown/AttachmentStrip.js.map +1 -0
  361. package/dist/components/markdown/ImageUpload.js +45 -0
  362. package/dist/components/markdown/ImageUpload.js.map +1 -0
  363. package/dist/components/media-error.js +7 -0
  364. package/dist/components/media-error.js.map +1 -0
  365. package/dist/components/nav-sections.js +61 -0
  366. package/dist/components/nav-sections.js.map +1 -0
  367. package/dist/components/node-canvas/NodeCanvas.js +384 -0
  368. package/dist/components/node-canvas/NodeCanvas.js.map +1 -0
  369. package/dist/components/node-canvas/layout.js +237 -0
  370. package/dist/components/node-canvas/layout.js.map +1 -0
  371. package/dist/components/node-canvas/use-canvas-gestures.js +143 -0
  372. package/dist/components/node-canvas/use-canvas-gestures.js.map +1 -0
  373. package/dist/components/openapi/OpenApiViewer.js +137 -0
  374. package/dist/components/openapi/OpenApiViewer.js.map +1 -0
  375. package/dist/components/openapi/OperationCard.js +145 -0
  376. package/dist/components/openapi/OperationCard.js.map +1 -0
  377. package/dist/components/openapi/SchemaView.js +68 -0
  378. package/dist/components/openapi/SchemaView.js.map +1 -0
  379. package/dist/components/openapi/resolve.js +102 -0
  380. package/dist/components/openapi/resolve.js.map +1 -0
  381. package/dist/components/openapi/types.js +5 -0
  382. package/dist/components/openapi/types.js.map +1 -0
  383. package/dist/components/overlay-shell.js +29 -0
  384. package/dist/components/overlay-shell.js.map +1 -0
  385. package/dist/components/overlay-stack.js +27 -0
  386. package/dist/components/overlay-stack.js.map +1 -0
  387. package/dist/components/paged-window/PageBlock.js +50 -0
  388. package/dist/components/paged-window/PageBlock.js.map +1 -0
  389. package/dist/components/provenance/ConfidenceBar.js +60 -0
  390. package/dist/components/provenance/ConfidenceBar.js.map +1 -0
  391. package/dist/components/provenance/ConfidenceMeter.js +36 -0
  392. package/dist/components/provenance/ConfidenceMeter.js.map +1 -0
  393. package/dist/components/provenance/ConfidenceReadout.js +31 -0
  394. package/dist/components/provenance/ConfidenceReadout.js.map +1 -0
  395. package/dist/components/provenance/ProvenanceBadge.js +44 -0
  396. package/dist/components/provenance/ProvenanceBadge.js.map +1 -0
  397. package/dist/components/provenance/ProvenanceDetail.js +114 -0
  398. package/dist/components/provenance/ProvenanceDetail.js.map +1 -0
  399. package/dist/components/provenance/ProvenanceDisclosure.js +111 -0
  400. package/dist/components/provenance/ProvenanceDisclosure.js.map +1 -0
  401. package/dist/components/provenance/absence.js +31 -0
  402. package/dist/components/provenance/absence.js.map +1 -0
  403. package/dist/components/provenance/types.js +30 -0
  404. package/dist/components/provenance/types.js.map +1 -0
  405. package/dist/components/rbac/AccessRequestPanel.js +153 -0
  406. package/dist/components/rbac/AccessRequestPanel.js.map +1 -0
  407. package/dist/components/rbac/AccountMenu.js +118 -0
  408. package/dist/components/rbac/AccountMenu.js.map +1 -0
  409. package/dist/components/rbac/AgentKeysList.js +20 -0
  410. package/dist/components/rbac/AgentKeysList.js.map +1 -0
  411. package/dist/components/rbac/ApiKeysPanel.js +172 -0
  412. package/dist/components/rbac/ApiKeysPanel.js.map +1 -0
  413. package/dist/components/rbac/ApiKeysTable.js +167 -0
  414. package/dist/components/rbac/ApiKeysTable.js.map +1 -0
  415. package/dist/components/rbac/Brand.js +13 -0
  416. package/dist/components/rbac/Brand.js.map +1 -0
  417. package/dist/components/rbac/Can.js +18 -0
  418. package/dist/components/rbac/Can.js.map +1 -0
  419. package/dist/components/rbac/ChangePasswordForm.js +73 -0
  420. package/dist/components/rbac/ChangePasswordForm.js.map +1 -0
  421. package/dist/components/rbac/DangerZone.js +27 -0
  422. package/dist/components/rbac/DangerZone.js.map +1 -0
  423. package/dist/components/rbac/DevToolsPopover.js +140 -0
  424. package/dist/components/rbac/DevToolsPopover.js.map +1 -0
  425. package/dist/components/rbac/EndedLine.js +24 -0
  426. package/dist/components/rbac/EndedLine.js.map +1 -0
  427. package/dist/components/rbac/InvitationsList.js +148 -0
  428. package/dist/components/rbac/InvitationsList.js.map +1 -0
  429. package/dist/components/rbac/InviteMembersDialog.js +97 -0
  430. package/dist/components/rbac/InviteMembersDialog.js.map +1 -0
  431. package/dist/components/rbac/MembersPanel.js +138 -0
  432. package/dist/components/rbac/MembersPanel.js.map +1 -0
  433. package/dist/components/rbac/PermissionRequestPanel.js +141 -0
  434. package/dist/components/rbac/PermissionRequestPanel.js.map +1 -0
  435. package/dist/components/rbac/ProfileForm.js +86 -0
  436. package/dist/components/rbac/ProfileForm.js.map +1 -0
  437. package/dist/components/rbac/ProfilePage.js +58 -0
  438. package/dist/components/rbac/ProfilePage.js.map +1 -0
  439. package/dist/components/rbac/RBACProvider.js +82 -0
  440. package/dist/components/rbac/RBACProvider.js.map +1 -0
  441. package/dist/components/rbac/RoleEditorDialog.js +90 -0
  442. package/dist/components/rbac/RoleEditorDialog.js.map +1 -0
  443. package/dist/components/rbac/RoleKeyPicker.js +77 -0
  444. package/dist/components/rbac/RoleKeyPicker.js.map +1 -0
  445. package/dist/components/rbac/RolePermissionMatrix.js +37 -0
  446. package/dist/components/rbac/RolePermissionMatrix.js.map +1 -0
  447. package/dist/components/rbac/RolesPermissionsPage.js +142 -0
  448. package/dist/components/rbac/RolesPermissionsPage.js.map +1 -0
  449. package/dist/components/rbac/SessionsList.js +146 -0
  450. package/dist/components/rbac/SessionsList.js.map +1 -0
  451. package/dist/components/rbac/TeamSettingsForm.js +69 -0
  452. package/dist/components/rbac/TeamSettingsForm.js.map +1 -0
  453. package/dist/components/rbac/TeamSwitcher.js +66 -0
  454. package/dist/components/rbac/TeamSwitcher.js.map +1 -0
  455. package/dist/components/rbac/approvalPanelParts.js +130 -0
  456. package/dist/components/rbac/approvalPanelParts.js.map +1 -0
  457. package/dist/components/rbac/permissionSections.js +8 -0
  458. package/dist/components/rbac/permissionSections.js.map +1 -0
  459. package/dist/components/rbac/stagedForm.js +42 -0
  460. package/dist/components/rbac/stagedForm.js.map +1 -0
  461. package/dist/components/rbac/useStagedImage.js +21 -0
  462. package/dist/components/rbac/useStagedImage.js.map +1 -0
  463. package/dist/components/roadmap/PhaseManager.js +48 -0
  464. package/dist/components/roadmap/PhaseManager.js.map +1 -0
  465. package/dist/components/roadmap/RoadmapItemCard.js +96 -0
  466. package/dist/components/roadmap/RoadmapItemCard.js.map +1 -0
  467. package/dist/components/roadmap/RoadmapPage.js +34 -0
  468. package/dist/components/roadmap/RoadmapPage.js.map +1 -0
  469. package/dist/components/roadmap/RoadmapSwimlaneBoard.js +91 -0
  470. package/dist/components/roadmap/RoadmapSwimlaneBoard.js.map +1 -0
  471. package/dist/components/roadmap/TrackManager.js +58 -0
  472. package/dist/components/roadmap/TrackManager.js.map +1 -0
  473. package/dist/components/roadmap/UseCaseCard.js +93 -0
  474. package/dist/components/roadmap/UseCaseCard.js.map +1 -0
  475. package/dist/components/roadmap/UseCaseLedgerPage.js +98 -0
  476. package/dist/components/roadmap/UseCaseLedgerPage.js.map +1 -0
  477. package/dist/components/roadmap/chip-tones.js +9 -0
  478. package/dist/components/roadmap/chip-tones.js.map +1 -0
  479. package/dist/components/roadmap/derive.js +28 -0
  480. package/dist/components/roadmap/derive.js.map +1 -0
  481. package/dist/components/stepper/Stepper.js +276 -0
  482. package/dist/components/stepper/Stepper.js.map +1 -0
  483. package/dist/components/stepper/derive.js +53 -0
  484. package/dist/components/stepper/derive.js.map +1 -0
  485. package/dist/confidence.css +222 -0
  486. package/dist/fonts/bricolage-grotesque-0.woff2 +0 -0
  487. package/dist/fonts/bricolage-grotesque-1.woff2 +0 -0
  488. package/dist/fonts/bricolage-grotesque-2.woff2 +0 -0
  489. package/dist/fonts/figtree-0.woff2 +0 -0
  490. package/dist/fonts/figtree-1.woff2 +0 -0
  491. package/dist/fonts/figtree-2.woff2 +0 -0
  492. package/dist/fonts/figtree-3.woff2 +0 -0
  493. package/dist/fonts/jetbrains-mono-0.woff2 +0 -0
  494. package/dist/fonts/jetbrains-mono-1.woff2 +0 -0
  495. package/dist/fonts/jetbrains-mono-10.woff2 +0 -0
  496. package/dist/fonts/jetbrains-mono-11.woff2 +0 -0
  497. package/dist/fonts/jetbrains-mono-2.woff2 +0 -0
  498. package/dist/fonts/jetbrains-mono-3.woff2 +0 -0
  499. package/dist/fonts/jetbrains-mono-4.woff2 +0 -0
  500. package/dist/fonts/jetbrains-mono-5.woff2 +0 -0
  501. package/dist/fonts/jetbrains-mono-6.woff2 +0 -0
  502. package/dist/fonts/jetbrains-mono-7.woff2 +0 -0
  503. package/dist/fonts/jetbrains-mono-8.woff2 +0 -0
  504. package/dist/fonts/jetbrains-mono-9.woff2 +0 -0
  505. package/dist/fonts.css +187 -0
  506. package/dist/icons/data.js +233 -0
  507. package/dist/icons/data.js.map +1 -0
  508. package/dist/index.js +942 -0
  509. package/dist/index.js.map +1 -0
  510. package/dist/lib/attention.js +75 -0
  511. package/dist/lib/attention.js.map +1 -0
  512. package/dist/lib/board/anchor.js +14 -0
  513. package/dist/lib/board/anchor.js.map +1 -0
  514. package/dist/lib/board/model.js +41 -0
  515. package/dist/lib/board/model.js.map +1 -0
  516. package/dist/lib/board/move.js +161 -0
  517. package/dist/lib/board/move.js.map +1 -0
  518. package/dist/lib/board/position.js +11 -0
  519. package/dist/lib/board/position.js.map +1 -0
  520. package/dist/lib/board/rejection.js +22 -0
  521. package/dist/lib/board/rejection.js.map +1 -0
  522. package/dist/lib/board/use-board.js +43 -0
  523. package/dist/lib/board/use-board.js.map +1 -0
  524. package/dist/lib/calendar/band-packer.js +44 -0
  525. package/dist/lib/calendar/band-packer.js.map +1 -0
  526. package/dist/lib/calendar/drag.js +74 -0
  527. package/dist/lib/calendar/drag.js.map +1 -0
  528. package/dist/lib/calendar/lane-packer.js +67 -0
  529. package/dist/lib/calendar/lane-packer.js.map +1 -0
  530. package/dist/lib/calendar/segments.js +82 -0
  531. package/dist/lib/calendar/segments.js.map +1 -0
  532. package/dist/lib/calendar/types.js +7 -0
  533. package/dist/lib/calendar/types.js.map +1 -0
  534. package/dist/lib/chart-palette.js +27 -0
  535. package/dist/lib/chart-palette.js.map +1 -0
  536. package/dist/lib/clipboard.js +30 -0
  537. package/dist/lib/clipboard.js.map +1 -0
  538. package/dist/lib/cn.js +9 -0
  539. package/dist/lib/cn.js.map +1 -0
  540. package/dist/lib/color.js +24 -0
  541. package/dist/lib/color.js.map +1 -0
  542. package/dist/lib/component-guidance.js +297 -0
  543. package/dist/lib/component-guidance.js.map +1 -0
  544. package/dist/lib/confidence.js +22 -0
  545. package/dist/lib/confidence.js.map +1 -0
  546. package/dist/lib/date-timeline/scale.js +197 -0
  547. package/dist/lib/date-timeline/scale.js.map +1 -0
  548. package/dist/lib/design-frame/document.js +44 -0
  549. package/dist/lib/design-frame/document.js.map +1 -0
  550. package/dist/lib/design-frame/mini-app-script.js +107 -0
  551. package/dist/lib/design-frame/mini-app-script.js.map +1 -0
  552. package/dist/lib/design-frame/mini-app.js +12 -0
  553. package/dist/lib/design-frame/mini-app.js.map +1 -0
  554. package/dist/lib/design-frame/protocol.js +46 -0
  555. package/dist/lib/design-frame/protocol.js.map +1 -0
  556. package/dist/lib/dev-warn.js +17 -0
  557. package/dist/lib/dev-warn.js.map +1 -0
  558. package/dist/lib/dnd/announce.js +120 -0
  559. package/dist/lib/dnd/announce.js.map +1 -0
  560. package/dist/lib/dnd/autoscroll.js +123 -0
  561. package/dist/lib/dnd/autoscroll.js.map +1 -0
  562. package/dist/lib/dnd/cross-drop.js +11 -0
  563. package/dist/lib/dnd/cross-drop.js.map +1 -0
  564. package/dist/lib/dnd/geometry.js +99 -0
  565. package/dist/lib/dnd/geometry.js.map +1 -0
  566. package/dist/lib/dnd/sensors/gesture.js +86 -0
  567. package/dist/lib/dnd/sensors/gesture.js.map +1 -0
  568. package/dist/lib/dnd/sensors/keyboard.js +47 -0
  569. package/dist/lib/dnd/sensors/keyboard.js.map +1 -0
  570. package/dist/lib/dnd/sensors/pointer.js +32 -0
  571. package/dist/lib/dnd/sensors/pointer.js.map +1 -0
  572. package/dist/lib/dnd/session.js +256 -0
  573. package/dist/lib/dnd/session.js.map +1 -0
  574. package/dist/lib/dnd/use-drag.js +90 -0
  575. package/dist/lib/dnd/use-drag.js.map +1 -0
  576. package/dist/lib/dom/scroll-ancestor.js +18 -0
  577. package/dist/lib/dom/scroll-ancestor.js.map +1 -0
  578. package/dist/lib/format.js +23 -0
  579. package/dist/lib/format.js.map +1 -0
  580. package/dist/lib/group-in-order.js +13 -0
  581. package/dist/lib/group-in-order.js.map +1 -0
  582. package/dist/lib/header-fold.js +11 -0
  583. package/dist/lib/header-fold.js.map +1 -0
  584. package/dist/lib/i18n/areas/auth-provenance-flows.js +156 -0
  585. package/dist/lib/i18n/areas/auth-provenance-flows.js.map +1 -0
  586. package/dist/lib/i18n/areas/board.js +35 -0
  587. package/dist/lib/i18n/areas/board.js.map +1 -0
  588. package/dist/lib/i18n/areas/card-face.js +10 -0
  589. package/dist/lib/i18n/areas/card-face.js.map +1 -0
  590. package/dist/lib/i18n/areas/chat-chart.js +118 -0
  591. package/dist/lib/i18n/areas/chat-chart.js.map +1 -0
  592. package/dist/lib/i18n/areas/code-editor.js +24 -0
  593. package/dist/lib/i18n/areas/code-editor.js.map +1 -0
  594. package/dist/lib/i18n/areas/date-timeline.js +21 -0
  595. package/dist/lib/i18n/areas/date-timeline.js.map +1 -0
  596. package/dist/lib/i18n/areas/dates.js +71 -0
  597. package/dist/lib/i18n/areas/dates.js.map +1 -0
  598. package/dist/lib/i18n/areas/docs-views.js +183 -0
  599. package/dist/lib/i18n/areas/docs-views.js.map +1 -0
  600. package/dist/lib/i18n/areas/feedback.js +75 -0
  601. package/dist/lib/i18n/areas/feedback.js.map +1 -0
  602. package/dist/lib/i18n/areas/formats.js +24 -0
  603. package/dist/lib/i18n/areas/formats.js.map +1 -0
  604. package/dist/lib/i18n/areas/forms.js +110 -0
  605. package/dist/lib/i18n/areas/forms.js.map +1 -0
  606. package/dist/lib/i18n/areas/keys.js +25 -0
  607. package/dist/lib/i18n/areas/keys.js.map +1 -0
  608. package/dist/lib/i18n/areas/markdown.js +136 -0
  609. package/dist/lib/i18n/areas/markdown.js.map +1 -0
  610. package/dist/lib/i18n/areas/move-rejected.js +14 -0
  611. package/dist/lib/i18n/areas/move-rejected.js.map +1 -0
  612. package/dist/lib/i18n/areas/navigation.js +104 -0
  613. package/dist/lib/i18n/areas/navigation.js.map +1 -0
  614. package/dist/lib/i18n/areas/rbac.js +331 -0
  615. package/dist/lib/i18n/areas/rbac.js.map +1 -0
  616. package/dist/lib/i18n/emphasis.js +6 -0
  617. package/dist/lib/i18n/emphasis.js.map +1 -0
  618. package/dist/lib/i18n/number-format.js +9 -0
  619. package/dist/lib/i18n/number-format.js.map +1 -0
  620. package/dist/lib/i18n/plural.js +9 -0
  621. package/dist/lib/i18n/plural.js.map +1 -0
  622. package/dist/lib/i18n/provider.js +27 -0
  623. package/dist/lib/i18n/provider.js.map +1 -0
  624. package/dist/lib/i18n/strings.js +38 -0
  625. package/dist/lib/i18n/strings.js.map +1 -0
  626. package/dist/lib/icons.js +17 -0
  627. package/dist/lib/icons.js.map +1 -0
  628. package/dist/lib/interactive-target.js +9 -0
  629. package/dist/lib/interactive-target.js.map +1 -0
  630. package/dist/lib/intl-cache.js +69 -0
  631. package/dist/lib/intl-cache.js.map +1 -0
  632. package/dist/lib/legal-document.js +37 -0
  633. package/dist/lib/legal-document.js.map +1 -0
  634. package/dist/lib/line-diff-model.js +51 -0
  635. package/dist/lib/line-diff-model.js.map +1 -0
  636. package/dist/lib/markdown/attachments.js +71 -0
  637. package/dist/lib/markdown/attachments.js.map +1 -0
  638. package/dist/lib/markdown/caret-map.js +153 -0
  639. package/dist/lib/markdown/caret-map.js.map +1 -0
  640. package/dist/lib/markdown/caret.js +35 -0
  641. package/dist/lib/markdown/caret.js.map +1 -0
  642. package/dist/lib/markdown/commands.js +443 -0
  643. package/dist/lib/markdown/commands.js.map +1 -0
  644. package/dist/lib/markdown/convert.js +153 -0
  645. package/dist/lib/markdown/convert.js.map +1 -0
  646. package/dist/lib/markdown/dom.js +89 -0
  647. package/dist/lib/markdown/dom.js.map +1 -0
  648. package/dist/lib/markdown/edit.js +92 -0
  649. package/dist/lib/markdown/edit.js.map +1 -0
  650. package/dist/lib/markdown/history.js +79 -0
  651. package/dist/lib/markdown/history.js.map +1 -0
  652. package/dist/lib/markdown/hotkeys.js +63 -0
  653. package/dist/lib/markdown/hotkeys.js.map +1 -0
  654. package/dist/lib/markdown/image-pipeline.js +236 -0
  655. package/dist/lib/markdown/image-pipeline.js.map +1 -0
  656. package/dist/lib/markdown/images.js +85 -0
  657. package/dist/lib/markdown/images.js.map +1 -0
  658. package/dist/lib/markdown/input.js +210 -0
  659. package/dist/lib/markdown/input.js.map +1 -0
  660. package/dist/lib/markdown/keys.js +37 -0
  661. package/dist/lib/markdown/keys.js.map +1 -0
  662. package/dist/lib/markdown/paste.js +180 -0
  663. package/dist/lib/markdown/paste.js.map +1 -0
  664. package/dist/lib/markdown/position.js +111 -0
  665. package/dist/lib/markdown/position.js.map +1 -0
  666. package/dist/lib/markdown/project.js +108 -0
  667. package/dist/lib/markdown/project.js.map +1 -0
  668. package/dist/lib/markdown/reconcile.js +127 -0
  669. package/dist/lib/markdown/reconcile.js.map +1 -0
  670. package/dist/lib/markdown/surface.js +373 -0
  671. package/dist/lib/markdown/surface.js.map +1 -0
  672. package/dist/lib/motion.js +22 -0
  673. package/dist/lib/motion.js.map +1 -0
  674. package/dist/lib/pad.js +7 -0
  675. package/dist/lib/pad.js.map +1 -0
  676. package/dist/lib/paged-window/layout.js +15 -0
  677. package/dist/lib/paged-window/layout.js.map +1 -0
  678. package/dist/lib/paged-window/list-owner.js +21 -0
  679. package/dist/lib/paged-window/list-owner.js.map +1 -0
  680. package/dist/lib/paged-window/records-binding.js +239 -0
  681. package/dist/lib/paged-window/records-binding.js.map +1 -0
  682. package/dist/lib/paged-window/store.js +562 -0
  683. package/dist/lib/paged-window/store.js.map +1 -0
  684. package/dist/lib/paged-window/use-measured-pitch.js +38 -0
  685. package/dist/lib/paged-window/use-measured-pitch.js.map +1 -0
  686. package/dist/lib/paged-window/use-page-visibility.js +36 -0
  687. package/dist/lib/paged-window/use-page-visibility.js.map +1 -0
  688. package/dist/lib/paged-window/use-paged-window.js +43 -0
  689. package/dist/lib/paged-window/use-paged-window.js.map +1 -0
  690. package/dist/lib/paged-window/use-scroll-root.js +12 -0
  691. package/dist/lib/paged-window/use-scroll-root.js.map +1 -0
  692. package/dist/lib/persist.js +84 -0
  693. package/dist/lib/persist.js.map +1 -0
  694. package/dist/lib/preference-values.js +13 -0
  695. package/dist/lib/preference-values.js.map +1 -0
  696. package/dist/lib/preferences.js +86 -0
  697. package/dist/lib/preferences.js.map +1 -0
  698. package/dist/lib/reads/hooks.js +156 -0
  699. package/dist/lib/reads/hooks.js.map +1 -0
  700. package/dist/lib/reads/optimistic.js +169 -0
  701. package/dist/lib/reads/optimistic.js.map +1 -0
  702. package/dist/lib/reads/refetch.js +108 -0
  703. package/dist/lib/reads/refetch.js.map +1 -0
  704. package/dist/lib/reads/slots.js +215 -0
  705. package/dist/lib/reads/slots.js.map +1 -0
  706. package/dist/lib/realtime/hooks.js +40 -0
  707. package/dist/lib/realtime/hooks.js.map +1 -0
  708. package/dist/lib/realtime/provider.js +25 -0
  709. package/dist/lib/realtime/provider.js.map +1 -0
  710. package/dist/lib/realtime/registry.js +472 -0
  711. package/dist/lib/realtime/registry.js.map +1 -0
  712. package/dist/lib/records/define-record-type.js +33 -0
  713. package/dist/lib/records/define-record-type.js.map +1 -0
  714. package/dist/lib/records/hooks.js +39 -0
  715. package/dist/lib/records/hooks.js.map +1 -0
  716. package/dist/lib/records/store.js +572 -0
  717. package/dist/lib/records/store.js.map +1 -0
  718. package/dist/lib/records/wire.js +58 -0
  719. package/dist/lib/records/wire.js.map +1 -0
  720. package/dist/lib/reduced-motion-help.js +19 -0
  721. package/dist/lib/reduced-motion-help.js.map +1 -0
  722. package/dist/lib/scroll-caret.js +18 -0
  723. package/dist/lib/scroll-caret.js.map +1 -0
  724. package/dist/lib/sim/createSimStore.js +54 -0
  725. package/dist/lib/sim/createSimStore.js.map +1 -0
  726. package/dist/lib/sim/latency.js +28 -0
  727. package/dist/lib/sim/latency.js.map +1 -0
  728. package/dist/lib/sim/registry.js +13 -0
  729. package/dist/lib/sim/registry.js.map +1 -0
  730. package/dist/lib/sim/settings.js +41 -0
  731. package/dist/lib/sim/settings.js.map +1 -0
  732. package/dist/lib/submit-shortcut.js +25 -0
  733. package/dist/lib/submit-shortcut.js.map +1 -0
  734. package/dist/lib/syntax/index.js +33 -0
  735. package/dist/lib/syntax/index.js.map +1 -0
  736. package/dist/lib/syntax/languages/bash.js +77 -0
  737. package/dist/lib/syntax/languages/bash.js.map +1 -0
  738. package/dist/lib/syntax/languages/css.js +81 -0
  739. package/dist/lib/syntax/languages/css.js.map +1 -0
  740. package/dist/lib/syntax/languages/html.js +91 -0
  741. package/dist/lib/syntax/languages/html.js.map +1 -0
  742. package/dist/lib/syntax/languages/index.js +49 -0
  743. package/dist/lib/syntax/languages/index.js.map +1 -0
  744. package/dist/lib/syntax/languages/javascript.js +133 -0
  745. package/dist/lib/syntax/languages/javascript.js.map +1 -0
  746. package/dist/lib/syntax/languages/json.js +45 -0
  747. package/dist/lib/syntax/languages/json.js.map +1 -0
  748. package/dist/lib/syntax/languages/mongodb.js +24 -0
  749. package/dist/lib/syntax/languages/mongodb.js.map +1 -0
  750. package/dist/lib/syntax/languages/plain.js +10 -0
  751. package/dist/lib/syntax/languages/plain.js.map +1 -0
  752. package/dist/lib/syntax/languages/sql.js +113 -0
  753. package/dist/lib/syntax/languages/sql.js.map +1 -0
  754. package/dist/lib/syntax/languages/vue.js +31 -0
  755. package/dist/lib/syntax/languages/vue.js.map +1 -0
  756. package/dist/lib/syntax/languages/yaml.js +55 -0
  757. package/dist/lib/syntax/languages/yaml.js.map +1 -0
  758. package/dist/lib/syntax/markdown/grammar.js +52 -0
  759. package/dist/lib/syntax/markdown/grammar.js.map +1 -0
  760. package/dist/lib/syntax/markdown/inline.js +477 -0
  761. package/dist/lib/syntax/markdown/inline.js.map +1 -0
  762. package/dist/lib/syntax/markdown/parse.js +464 -0
  763. package/dist/lib/syntax/markdown/parse.js.map +1 -0
  764. package/dist/lib/syntax/markdown/refs.js +94 -0
  765. package/dist/lib/syntax/markdown/refs.js.map +1 -0
  766. package/dist/lib/syntax/markdown/render.js +230 -0
  767. package/dist/lib/syntax/markdown/render.js.map +1 -0
  768. package/dist/lib/syntax/markdown/spans.js +40 -0
  769. package/dist/lib/syntax/markdown/spans.js.map +1 -0
  770. package/dist/lib/syntax/registry.js +55 -0
  771. package/dist/lib/syntax/registry.js.map +1 -0
  772. package/dist/lib/syntax/tokenize.js +96 -0
  773. package/dist/lib/syntax/tokenize.js.map +1 -0
  774. package/dist/lib/time/instant.js +7 -0
  775. package/dist/lib/time/instant.js.map +1 -0
  776. package/dist/lib/time/plain.js +83 -0
  777. package/dist/lib/time/plain.js.map +1 -0
  778. package/dist/lib/time/relativeAge.js +20 -0
  779. package/dist/lib/time/relativeAge.js.map +1 -0
  780. package/dist/lib/time/relativeClock.js +59 -0
  781. package/dist/lib/time/relativeClock.js.map +1 -0
  782. package/dist/lib/time/types.js +23 -0
  783. package/dist/lib/time/types.js.map +1 -0
  784. package/dist/lib/time/zone.js +148 -0
  785. package/dist/lib/time/zone.js.map +1 -0
  786. package/dist/lib/use-controllable.js +16 -0
  787. package/dist/lib/use-controllable.js.map +1 -0
  788. package/dist/lib/use-fill-height.js +49 -0
  789. package/dist/lib/use-fill-height.js.map +1 -0
  790. package/dist/lib/use-hydrated.js +14 -0
  791. package/dist/lib/use-hydrated.js.map +1 -0
  792. package/dist/lib/use-media-query.js +30 -0
  793. package/dist/lib/use-media-query.js.map +1 -0
  794. package/dist/lib/use-relabel-base-ui-dismiss.js +26 -0
  795. package/dist/lib/use-relabel-base-ui-dismiss.js.map +1 -0
  796. package/dist/lib/use-release-snap-drag.js +29 -0
  797. package/dist/lib/use-release-snap-drag.js.map +1 -0
  798. package/dist/lib/use-roving-options.js +18 -0
  799. package/dist/lib/use-roving-options.js.map +1 -0
  800. package/dist/lib/values/absent.js +5 -0
  801. package/dist/lib/values/absent.js.map +1 -0
  802. package/dist/lib/values/boolean.js +13 -0
  803. package/dist/lib/values/boolean.js.map +1 -0
  804. package/dist/lib/values/currency.js +23 -0
  805. package/dist/lib/values/currency.js.map +1 -0
  806. package/dist/lib/values/date.js +35 -0
  807. package/dist/lib/values/date.js.map +1 -0
  808. package/dist/lib/values/datetime.js +54 -0
  809. package/dist/lib/values/datetime.js.map +1 -0
  810. package/dist/lib/values/locale-date.js +60 -0
  811. package/dist/lib/values/locale-date.js.map +1 -0
  812. package/dist/lib/values/number.js +16 -0
  813. package/dist/lib/values/number.js.map +1 -0
  814. package/dist/pure.js +379 -0
  815. package/dist/pure.js.map +1 -0
  816. package/dist/styles.css +190 -0
  817. package/dist/theme.css +360 -0
  818. package/dist/types/components/Accordion.d.ts +15 -0
  819. package/dist/types/components/AgentWorkingSpinner.d.ts +23 -0
  820. package/dist/types/components/AppShell.d.ts +164 -0
  821. package/dist/types/components/Attention.d.ts +87 -0
  822. package/dist/types/components/Avatar.d.ts +154 -0
  823. package/dist/types/components/Badge.d.ts +131 -0
  824. package/dist/types/components/Board.d.ts +239 -0
  825. package/dist/types/components/Button.d.ts +208 -0
  826. package/dist/types/components/Callout.d.ts +163 -0
  827. package/dist/types/components/Card.d.ts +219 -0
  828. package/dist/types/components/Choice.d.ts +127 -0
  829. package/dist/types/components/CodeEditor.d.ts +86 -0
  830. package/dist/types/components/ColorPicker.d.ts +14 -0
  831. package/dist/types/components/Combobox.d.ts +43 -0
  832. package/dist/types/components/CommandPalette.d.ts +35 -0
  833. package/dist/types/components/ConcentricRing.d.ts +61 -0
  834. package/dist/types/components/ConnectionCard.d.ts +64 -0
  835. package/dist/types/components/ContextItemRow.d.ts +35 -0
  836. package/dist/types/components/CopyValue.d.ts +14 -0
  837. package/dist/types/components/CountBadge.d.ts +14 -0
  838. package/dist/types/components/DateCalendar.d.ts +30 -0
  839. package/dist/types/components/DateField.d.ts +29 -0
  840. package/dist/types/components/DatePicker.d.ts +20 -0
  841. package/dist/types/components/DateTimeText.d.ts +9 -0
  842. package/dist/types/components/DescriptionList.d.ts +40 -0
  843. package/dist/types/components/Dialog.d.ts +269 -0
  844. package/dist/types/components/DragDrop.d.ts +196 -0
  845. package/dist/types/components/Drawer.d.ts +163 -0
  846. package/dist/types/components/EditGutter.d.ts +44 -0
  847. package/dist/types/components/EmojiPicker.d.ts +30 -0
  848. package/dist/types/components/ErrorBoundary.d.ts +43 -0
  849. package/dist/types/components/Field.d.ts +37 -0
  850. package/dist/types/components/FileUpload.d.ts +22 -0
  851. package/dist/types/components/FilterMenu.d.ts +120 -0
  852. package/dist/types/components/GatesSection.d.ts +79 -0
  853. package/dist/types/components/Icon.d.ts +40 -0
  854. package/dist/types/components/IconButton.d.ts +69 -0
  855. package/dist/types/components/IconStack.d.ts +28 -0
  856. package/dist/types/components/ImageUploadField.d.ts +38 -0
  857. package/dist/types/components/InlineEdit.d.ts +183 -0
  858. package/dist/types/components/InlineMarkdownEdit.d.ts +100 -0
  859. package/dist/types/components/Input.d.ts +128 -0
  860. package/dist/types/components/LegalDocument.d.ts +23 -0
  861. package/dist/types/components/LineDiff.d.ts +53 -0
  862. package/dist/types/components/ListHeader.d.ts +45 -0
  863. package/dist/types/components/Loading.d.ts +131 -0
  864. package/dist/types/components/Markdown.d.ts +35 -0
  865. package/dist/types/components/MarkdownEditor.d.ts +129 -0
  866. package/dist/types/components/Menu.d.ts +157 -0
  867. package/dist/types/components/Navigation.d.ts +67 -0
  868. package/dist/types/components/NumberInput.d.ts +177 -0
  869. package/dist/types/components/OTPInput.d.ts +13 -0
  870. package/dist/types/components/OrderedEntityManager.d.ts +64 -0
  871. package/dist/types/components/PagedWindowList.d.ts +23 -0
  872. package/dist/types/components/PaginationBar.d.ts +31 -0
  873. package/dist/types/components/Panel.d.ts +94 -0
  874. package/dist/types/components/PasswordInput.d.ts +7 -0
  875. package/dist/types/components/PasswordRequirements.d.ts +11 -0
  876. package/dist/types/components/PatchDiff.d.ts +38 -0
  877. package/dist/types/components/PendingVeil.d.ts +8 -0
  878. package/dist/types/components/Popover.d.ts +231 -0
  879. package/dist/types/components/Progress.d.ts +580 -0
  880. package/dist/types/components/RatingScale.d.ts +30 -0
  881. package/dist/types/components/ReadMore.d.ts +26 -0
  882. package/dist/types/components/RecordCard.d.ts +413 -0
  883. package/dist/types/components/RelativeTime.d.ts +17 -0
  884. package/dist/types/components/SandboxedFrame.d.ts +37 -0
  885. package/dist/types/components/SearchInput.d.ts +6 -0
  886. package/dist/types/components/SecretField.d.ts +90 -0
  887. package/dist/types/components/SectionNav.d.ts +15 -0
  888. package/dist/types/components/Select.d.ts +53 -0
  889. package/dist/types/components/SequenceDiagram.d.ts +15 -0
  890. package/dist/types/components/SettingRow.d.ts +144 -0
  891. package/dist/types/components/SignOffRings.d.ts +29 -0
  892. package/dist/types/components/Slider.d.ts +255 -0
  893. package/dist/types/components/SolutionChoice.d.ts +49 -0
  894. package/dist/types/components/SortMenu.d.ts +45 -0
  895. package/dist/types/components/Spinner.d.ts +29 -0
  896. package/dist/types/components/Stat.d.ts +136 -0
  897. package/dist/types/components/StatusSelect.d.ts +93 -0
  898. package/dist/types/components/Surface.d.ts +145 -0
  899. package/dist/types/components/Table.d.ts +164 -0
  900. package/dist/types/components/Tabs.d.ts +142 -0
  901. package/dist/types/components/ThemeMenu.d.ts +56 -0
  902. package/dist/types/components/Toast.d.ts +63 -0
  903. package/dist/types/components/Toggle.d.ts +168 -0
  904. package/dist/types/components/ToggleMatrix.d.ts +51 -0
  905. package/dist/types/components/Tree.d.ts +20 -0
  906. package/dist/types/components/TriStateSwitch.d.ts +63 -0
  907. package/dist/types/components/VideoPlayer.d.ts +26 -0
  908. package/dist/types/components/auth/AcceptInvitationCard.d.ts +54 -0
  909. package/dist/types/components/auth/AuthLayout.d.ts +12 -0
  910. package/dist/types/components/auth/ForgotPasswordForm.d.ts +6 -0
  911. package/dist/types/components/auth/LoginForm.d.ts +13 -0
  912. package/dist/types/components/auth/ResetPasswordForm.d.ts +9 -0
  913. package/dist/types/components/auth/SignInProviders.d.ts +56 -0
  914. package/dist/types/components/auth/SignupCard.d.ts +62 -0
  915. package/dist/types/components/auth/TermsAcceptance.d.ts +14 -0
  916. package/dist/types/components/auth/index.d.ts +8 -0
  917. package/dist/types/components/board/context.d.ts +65 -0
  918. package/dist/types/components/board/recipe.d.ts +97 -0
  919. package/dist/types/components/calendar/CalendarMonth.d.ts +32 -0
  920. package/dist/types/components/calendar/CalendarTimeGrid.d.ts +74 -0
  921. package/dist/types/components/calendar/EventActions.d.ts +16 -0
  922. package/dist/types/components/calendar/format.d.ts +42 -0
  923. package/dist/types/components/calendar/palette.d.ts +17 -0
  924. package/dist/types/components/calendar/use-calendar-drag.d.ts +53 -0
  925. package/dist/types/components/calendar/use-event-keyboard.d.ts +23 -0
  926. package/dist/types/components/calendar/use-grid-navigation.d.ts +47 -0
  927. package/dist/types/components/calendar/use-now.d.ts +20 -0
  928. package/dist/types/components/card-face/AcRingGlyph.d.ts +20 -0
  929. package/dist/types/components/card-face/BoardCardAgentSlot.d.ts +19 -0
  930. package/dist/types/components/card-face/CardFace.d.ts +106 -0
  931. package/dist/types/components/card-face/CardTypeBadge.d.ts +21 -0
  932. package/dist/types/components/card-face/EffortBadge.d.ts +9 -0
  933. package/dist/types/components/card-face/GateRingGlyph.d.ts +22 -0
  934. package/dist/types/components/card-face/OverflowRow.d.ts +40 -0
  935. package/dist/types/components/card-face/TapTip.d.ts +15 -0
  936. package/dist/types/components/card-face/hit-area.d.ts +20 -0
  937. package/dist/types/components/card-face/vocabulary.d.ts +83 -0
  938. package/dist/types/components/chart/BarList.d.ts +27 -0
  939. package/dist/types/components/chart/LineChart.d.ts +64 -0
  940. package/dist/types/components/chart/ShareBar.d.ts +26 -0
  941. package/dist/types/components/chart/TimeSeriesChart.d.ts +60 -0
  942. package/dist/types/components/chart/label-metrics.d.ts +9 -0
  943. package/dist/types/components/chart/line-chart-axis.d.ts +14 -0
  944. package/dist/types/components/chart/line-chart-scale.d.ts +55 -0
  945. package/dist/types/components/chart/line-series-style.d.ts +14 -0
  946. package/dist/types/components/chart/share-bar-labels.d.ts +17 -0
  947. package/dist/types/components/chart/shared.d.ts +122 -0
  948. package/dist/types/components/chart/time-series-scale.d.ts +29 -0
  949. package/dist/types/components/chat/Attachment.d.ts +125 -0
  950. package/dist/types/components/chat/Chat.d.ts +60 -0
  951. package/dist/types/components/chat/Composer.d.ts +62 -0
  952. package/dist/types/components/chat/ContextMeter.d.ts +45 -0
  953. package/dist/types/components/chat/EffortControl.d.ts +23 -0
  954. package/dist/types/components/chat/FileCover.d.ts +14 -0
  955. package/dist/types/components/chat/Message.d.ts +66 -0
  956. package/dist/types/components/chat/MessageScroller.d.ts +18 -0
  957. package/dist/types/components/chat/ModelSelector.d.ts +44 -0
  958. package/dist/types/components/chat/StreamingMarkdown.d.ts +11 -0
  959. package/dist/types/components/chat/download-file.d.ts +7 -0
  960. package/dist/types/components/chat/file-icon.d.ts +29 -0
  961. package/dist/types/components/chat/types.d.ts +165 -0
  962. package/dist/types/components/checklist/StatusChecklist.d.ts +37 -0
  963. package/dist/types/components/checklist/index.d.ts +3 -0
  964. package/dist/types/components/checklist/tally.d.ts +19 -0
  965. package/dist/types/components/checklist/types.d.ts +28 -0
  966. package/dist/types/components/code-editor/context.d.ts +32 -0
  967. package/dist/types/components/code-editor/editing.d.ts +39 -0
  968. package/dist/types/components/code-editor/highlight.d.ts +20 -0
  969. package/dist/types/components/code-editor/recipe.d.ts +109 -0
  970. package/dist/types/components/date-timeline/DateTimeline.d.ts +99 -0
  971. package/dist/types/components/date-timeline/TimelineRow.d.ts +22 -0
  972. package/dist/types/components/date-timeline/useBarDrag.d.ts +15 -0
  973. package/dist/types/components/date-timeline/useMarkerDrag.d.ts +14 -0
  974. package/dist/types/components/date-timeline/useTimelineZoom.d.ts +23 -0
  975. package/dist/types/components/drag-drop/context.d.ts +85 -0
  976. package/dist/types/components/drag-drop/recipe.d.ts +163 -0
  977. package/dist/types/components/drag-drop/shift.d.ts +153 -0
  978. package/dist/types/components/edit/activation.d.ts +21 -0
  979. package/dist/types/components/edit/outcome.d.ts +29 -0
  980. package/dist/types/components/edit/use-edit-session.d.ts +77 -0
  981. package/dist/types/components/file-viewer/FileViewer.d.ts +2 -0
  982. package/dist/types/components/file-viewer/PageNumberJumpField.d.ts +9 -0
  983. package/dist/types/components/file-viewer/ViewerControls.d.ts +20 -0
  984. package/dist/types/components/file-viewer/ViewerRail.d.ts +10 -0
  985. package/dist/types/components/file-viewer/ViewerStage.d.ts +22 -0
  986. package/dist/types/components/file-viewer/frames.d.ts +28 -0
  987. package/dist/types/components/file-viewer/index.d.ts +3 -0
  988. package/dist/types/components/file-viewer/types.d.ts +70 -0
  989. package/dist/types/components/file-viewer/use-frame-cursor.d.ts +13 -0
  990. package/dist/types/components/file-viewer/use-viewer-keys.d.ts +24 -0
  991. package/dist/types/components/file-viewer/use-viewer-zoom.d.ts +29 -0
  992. package/dist/types/components/focus-web/FocusWeb.d.ts +3 -0
  993. package/dist/types/components/focus-web/index.d.ts +4 -0
  994. package/dist/types/components/focus-web/layout.d.ts +55 -0
  995. package/dist/types/components/focus-web/types.d.ts +131 -0
  996. package/dist/types/components/graph-explorer/GraphExplorer.d.ts +42 -0
  997. package/dist/types/components/graph-explorer/camera-math.d.ts +119 -0
  998. package/dist/types/components/graph-explorer/index.d.ts +5 -0
  999. package/dist/types/components/graph-explorer/tree-layout.d.ts +67 -0
  1000. package/dist/types/components/graph-explorer/types.d.ts +62 -0
  1001. package/dist/types/components/graph-explorer/use-camera.d.ts +81 -0
  1002. package/dist/types/components/graph-explorer/viewport-gesture.d.ts +32 -0
  1003. package/dist/types/components/kanban/KanbanBoard.d.ts +72 -0
  1004. package/dist/types/components/kanban/recipe.d.ts +73 -0
  1005. package/dist/types/components/kanban/types.d.ts +55 -0
  1006. package/dist/types/components/markdown/Affordances.d.ts +105 -0
  1007. package/dist/types/components/markdown/AttachmentStrip.d.ts +25 -0
  1008. package/dist/types/components/markdown/ImageUpload.d.ts +56 -0
  1009. package/dist/types/components/media-error.d.ts +11 -0
  1010. package/dist/types/components/nav-sections.d.ts +10 -0
  1011. package/dist/types/components/node-canvas/NodeCanvas.d.ts +66 -0
  1012. package/dist/types/components/node-canvas/index.d.ts +3 -0
  1013. package/dist/types/components/node-canvas/layout.d.ts +29 -0
  1014. package/dist/types/components/node-canvas/types.d.ts +207 -0
  1015. package/dist/types/components/node-canvas/use-canvas-gestures.d.ts +39 -0
  1016. package/dist/types/components/openapi/OpenApiViewer.d.ts +14 -0
  1017. package/dist/types/components/openapi/OperationCard.d.ts +33 -0
  1018. package/dist/types/components/openapi/SchemaView.d.ts +14 -0
  1019. package/dist/types/components/openapi/index.d.ts +6 -0
  1020. package/dist/types/components/openapi/resolve.d.ts +72 -0
  1021. package/dist/types/components/openapi/types.d.ts +128 -0
  1022. package/dist/types/components/overlay-shell.d.ts +48 -0
  1023. package/dist/types/components/overlay-stack.d.ts +18 -0
  1024. package/dist/types/components/paged-window/PageBlock.d.ts +31 -0
  1025. package/dist/types/components/provenance/ConfidenceBar.d.ts +118 -0
  1026. package/dist/types/components/provenance/ConfidenceMeter.d.ts +21 -0
  1027. package/dist/types/components/provenance/ConfidenceReadout.d.ts +17 -0
  1028. package/dist/types/components/provenance/ProvenanceBadge.d.ts +23 -0
  1029. package/dist/types/components/provenance/ProvenanceDetail.d.ts +109 -0
  1030. package/dist/types/components/provenance/ProvenanceDisclosure.d.ts +107 -0
  1031. package/dist/types/components/provenance/absence.d.ts +37 -0
  1032. package/dist/types/components/provenance/index.d.ts +7 -0
  1033. package/dist/types/components/provenance/types.d.ts +137 -0
  1034. package/dist/types/components/rbac/AccessRequestPanel.d.ts +92 -0
  1035. package/dist/types/components/rbac/AccountMenu.d.ts +46 -0
  1036. package/dist/types/components/rbac/AgentKeysList.d.ts +20 -0
  1037. package/dist/types/components/rbac/ApiKeysPanel.d.ts +26 -0
  1038. package/dist/types/components/rbac/ApiKeysTable.d.ts +63 -0
  1039. package/dist/types/components/rbac/Brand.d.ts +8 -0
  1040. package/dist/types/components/rbac/Can.d.ts +19 -0
  1041. package/dist/types/components/rbac/ChangePasswordForm.d.ts +18 -0
  1042. package/dist/types/components/rbac/DangerZone.d.ts +8 -0
  1043. package/dist/types/components/rbac/DevToolsPopover.d.ts +36 -0
  1044. package/dist/types/components/rbac/EndedLine.d.ts +21 -0
  1045. package/dist/types/components/rbac/InvitationsList.d.ts +39 -0
  1046. package/dist/types/components/rbac/InviteMembersDialog.d.ts +21 -0
  1047. package/dist/types/components/rbac/MembersPanel.d.ts +31 -0
  1048. package/dist/types/components/rbac/PermissionRequestPanel.d.ts +36 -0
  1049. package/dist/types/components/rbac/ProfileForm.d.ts +27 -0
  1050. package/dist/types/components/rbac/ProfilePage.d.ts +16 -0
  1051. package/dist/types/components/rbac/RBACProvider.d.ts +69 -0
  1052. package/dist/types/components/rbac/RoleEditorDialog.d.ts +28 -0
  1053. package/dist/types/components/rbac/RoleKeyPicker.d.ts +24 -0
  1054. package/dist/types/components/rbac/RolePermissionMatrix.d.ts +21 -0
  1055. package/dist/types/components/rbac/RolesPermissionsPage.d.ts +24 -0
  1056. package/dist/types/components/rbac/SessionsList.d.ts +35 -0
  1057. package/dist/types/components/rbac/TeamSettingsForm.d.ts +22 -0
  1058. package/dist/types/components/rbac/TeamSwitcher.d.ts +5 -0
  1059. package/dist/types/components/rbac/approvalPanelParts.d.ts +69 -0
  1060. package/dist/types/components/rbac/index.d.ts +25 -0
  1061. package/dist/types/components/rbac/permissionSections.d.ts +8 -0
  1062. package/dist/types/components/rbac/stagedForm.d.ts +25 -0
  1063. package/dist/types/components/rbac/types.d.ts +65 -0
  1064. package/dist/types/components/rbac/useStagedImage.d.ts +15 -0
  1065. package/dist/types/components/roadmap/PhaseManager.d.ts +19 -0
  1066. package/dist/types/components/roadmap/RoadmapItemCard.d.ts +51 -0
  1067. package/dist/types/components/roadmap/RoadmapPage.d.ts +12 -0
  1068. package/dist/types/components/roadmap/RoadmapSwimlaneBoard.d.ts +15 -0
  1069. package/dist/types/components/roadmap/TrackManager.d.ts +19 -0
  1070. package/dist/types/components/roadmap/UseCaseCard.d.ts +30 -0
  1071. package/dist/types/components/roadmap/UseCaseLedgerPage.d.ts +29 -0
  1072. package/dist/types/components/roadmap/chip-tones.d.ts +2 -0
  1073. package/dist/types/components/roadmap/derive.d.ts +39 -0
  1074. package/dist/types/components/roadmap/index.d.ts +10 -0
  1075. package/dist/types/components/roadmap/types.d.ts +86 -0
  1076. package/dist/types/components/stepper/Stepper.d.ts +79 -0
  1077. package/dist/types/components/stepper/derive.d.ts +49 -0
  1078. package/dist/types/components/stepper/index.d.ts +3 -0
  1079. package/dist/types/components/stepper/types.d.ts +118 -0
  1080. package/dist/types/icons/data.d.ts +2054 -0
  1081. package/dist/types/index.d.ts +209 -0
  1082. package/dist/types/lib/attention.d.ts +62 -0
  1083. package/dist/types/lib/board/anchor.d.ts +69 -0
  1084. package/dist/types/lib/board/index.d.ts +17 -0
  1085. package/dist/types/lib/board/model.d.ts +43 -0
  1086. package/dist/types/lib/board/move.d.ts +181 -0
  1087. package/dist/types/lib/board/position.d.ts +22 -0
  1088. package/dist/types/lib/board/rejection.d.ts +8 -0
  1089. package/dist/types/lib/board/types.d.ts +294 -0
  1090. package/dist/types/lib/board/use-board.d.ts +47 -0
  1091. package/dist/types/lib/calendar/band-packer.d.ts +53 -0
  1092. package/dist/types/lib/calendar/drag.d.ts +125 -0
  1093. package/dist/types/lib/calendar/index.d.ts +4 -0
  1094. package/dist/types/lib/calendar/lane-packer.d.ts +88 -0
  1095. package/dist/types/lib/calendar/segments.d.ts +91 -0
  1096. package/dist/types/lib/calendar/types.d.ts +166 -0
  1097. package/dist/types/lib/chart-palette.d.ts +14 -0
  1098. package/dist/types/lib/clipboard.d.ts +12 -0
  1099. package/dist/types/lib/cn.d.ts +7 -0
  1100. package/dist/types/lib/color.d.ts +14 -0
  1101. package/dist/types/lib/component-guidance.d.ts +15 -0
  1102. package/dist/types/lib/confidence.d.ts +28 -0
  1103. package/dist/types/lib/date-timeline/scale.d.ts +143 -0
  1104. package/dist/types/lib/design-frame/document.d.ts +39 -0
  1105. package/dist/types/lib/design-frame/mini-app-script.d.ts +29 -0
  1106. package/dist/types/lib/design-frame/mini-app.d.ts +17 -0
  1107. package/dist/types/lib/design-frame/protocol.d.ts +78 -0
  1108. package/dist/types/lib/dev-warn.d.ts +10 -0
  1109. package/dist/types/lib/dnd/announce.d.ts +124 -0
  1110. package/dist/types/lib/dnd/autoscroll.d.ts +88 -0
  1111. package/dist/types/lib/dnd/cross-drop.d.ts +18 -0
  1112. package/dist/types/lib/dnd/geometry.d.ts +126 -0
  1113. package/dist/types/lib/dnd/index.d.ts +17 -0
  1114. package/dist/types/lib/dnd/sensors/gesture.d.ts +37 -0
  1115. package/dist/types/lib/dnd/sensors/keyboard.d.ts +54 -0
  1116. package/dist/types/lib/dnd/sensors/pointer.d.ts +59 -0
  1117. package/dist/types/lib/dnd/session.d.ts +124 -0
  1118. package/dist/types/lib/dnd/types.d.ts +226 -0
  1119. package/dist/types/lib/dnd/use-drag.d.ts +82 -0
  1120. package/dist/types/lib/dom/scroll-ancestor.d.ts +15 -0
  1121. package/dist/types/lib/format.d.ts +33 -0
  1122. package/dist/types/lib/group-in-order.d.ts +13 -0
  1123. package/dist/types/lib/header-fold.d.ts +10 -0
  1124. package/dist/types/lib/i18n/areas/auth-provenance-flows.d.ts +287 -0
  1125. package/dist/types/lib/i18n/areas/board.d.ts +51 -0
  1126. package/dist/types/lib/i18n/areas/card-face.d.ts +8 -0
  1127. package/dist/types/lib/i18n/areas/chat-chart.d.ts +202 -0
  1128. package/dist/types/lib/i18n/areas/code-editor.d.ts +40 -0
  1129. package/dist/types/lib/i18n/areas/date-timeline.d.ts +36 -0
  1130. package/dist/types/lib/i18n/areas/dates.d.ts +103 -0
  1131. package/dist/types/lib/i18n/areas/docs-views.d.ts +297 -0
  1132. package/dist/types/lib/i18n/areas/feedback.d.ts +132 -0
  1133. package/dist/types/lib/i18n/areas/formats.d.ts +30 -0
  1134. package/dist/types/lib/i18n/areas/forms.d.ts +182 -0
  1135. package/dist/types/lib/i18n/areas/keys.d.ts +15 -0
  1136. package/dist/types/lib/i18n/areas/markdown.d.ts +150 -0
  1137. package/dist/types/lib/i18n/areas/move-rejected.d.ts +16 -0
  1138. package/dist/types/lib/i18n/areas/navigation.d.ts +185 -0
  1139. package/dist/types/lib/i18n/areas/rbac.d.ts +633 -0
  1140. package/dist/types/lib/i18n/emphasis.d.ts +3 -0
  1141. package/dist/types/lib/i18n/index.d.ts +10 -0
  1142. package/dist/types/lib/i18n/number-format.d.ts +5 -0
  1143. package/dist/types/lib/i18n/plural.d.ts +7 -0
  1144. package/dist/types/lib/i18n/provider.d.ts +16 -0
  1145. package/dist/types/lib/i18n/strings.d.ts +18 -0
  1146. package/dist/types/lib/icons.d.ts +22 -0
  1147. package/dist/types/lib/interactive-target.d.ts +3 -0
  1148. package/dist/types/lib/intl-cache.d.ts +31 -0
  1149. package/dist/types/lib/legal-document.d.ts +82 -0
  1150. package/dist/types/lib/line-diff-model.d.ts +39 -0
  1151. package/dist/types/lib/markdown/attachments.d.ts +50 -0
  1152. package/dist/types/lib/markdown/caret-map.d.ts +69 -0
  1153. package/dist/types/lib/markdown/caret.d.ts +6 -0
  1154. package/dist/types/lib/markdown/commands.d.ts +186 -0
  1155. package/dist/types/lib/markdown/convert.d.ts +99 -0
  1156. package/dist/types/lib/markdown/dom.d.ts +30 -0
  1157. package/dist/types/lib/markdown/edit.d.ts +16 -0
  1158. package/dist/types/lib/markdown/history.d.ts +59 -0
  1159. package/dist/types/lib/markdown/hotkeys.d.ts +63 -0
  1160. package/dist/types/lib/markdown/image-pipeline.d.ts +173 -0
  1161. package/dist/types/lib/markdown/images.d.ts +138 -0
  1162. package/dist/types/lib/markdown/input.d.ts +38 -0
  1163. package/dist/types/lib/markdown/keys.d.ts +34 -0
  1164. package/dist/types/lib/markdown/paste.d.ts +9 -0
  1165. package/dist/types/lib/markdown/position.d.ts +43 -0
  1166. package/dist/types/lib/markdown/project.d.ts +88 -0
  1167. package/dist/types/lib/markdown/reconcile.d.ts +63 -0
  1168. package/dist/types/lib/markdown/surface.d.ts +236 -0
  1169. package/dist/types/lib/motion.d.ts +30 -0
  1170. package/dist/types/lib/pad.d.ts +6 -0
  1171. package/dist/types/lib/paged-window/index.d.ts +2 -0
  1172. package/dist/types/lib/paged-window/layout.d.ts +21 -0
  1173. package/dist/types/lib/paged-window/list-owner.d.ts +12 -0
  1174. package/dist/types/lib/paged-window/records-binding.d.ts +102 -0
  1175. package/dist/types/lib/paged-window/store.d.ts +307 -0
  1176. package/dist/types/lib/paged-window/use-measured-pitch.d.ts +34 -0
  1177. package/dist/types/lib/paged-window/use-page-visibility.d.ts +20 -0
  1178. package/dist/types/lib/paged-window/use-paged-window.d.ts +61 -0
  1179. package/dist/types/lib/paged-window/use-scroll-root.d.ts +18 -0
  1180. package/dist/types/lib/persist.d.ts +57 -0
  1181. package/dist/types/lib/preference-values.d.ts +72 -0
  1182. package/dist/types/lib/preferences.d.ts +26 -0
  1183. package/dist/types/lib/reads/hooks.d.ts +49 -0
  1184. package/dist/types/lib/reads/index.d.ts +5 -0
  1185. package/dist/types/lib/reads/optimistic.d.ts +119 -0
  1186. package/dist/types/lib/reads/refetch.d.ts +83 -0
  1187. package/dist/types/lib/reads/slots.d.ts +137 -0
  1188. package/dist/types/lib/reads/types.d.ts +155 -0
  1189. package/dist/types/lib/realtime/hooks.d.ts +38 -0
  1190. package/dist/types/lib/realtime/index.d.ts +4 -0
  1191. package/dist/types/lib/realtime/provider.d.ts +38 -0
  1192. package/dist/types/lib/realtime/registry.d.ts +225 -0
  1193. package/dist/types/lib/realtime/types.d.ts +242 -0
  1194. package/dist/types/lib/records/define-record-type.d.ts +29 -0
  1195. package/dist/types/lib/records/hooks.d.ts +46 -0
  1196. package/dist/types/lib/records/index.d.ts +5 -0
  1197. package/dist/types/lib/records/store.d.ts +289 -0
  1198. package/dist/types/lib/records/types.d.ts +195 -0
  1199. package/dist/types/lib/records/wire.d.ts +96 -0
  1200. package/dist/types/lib/reduced-motion-help.d.ts +23 -0
  1201. package/dist/types/lib/scroll-caret.d.ts +6 -0
  1202. package/dist/types/lib/sim/createSimStore.d.ts +18 -0
  1203. package/dist/types/lib/sim/index.d.ts +5 -0
  1204. package/dist/types/lib/sim/latency.d.ts +10 -0
  1205. package/dist/types/lib/sim/registry.d.ts +14 -0
  1206. package/dist/types/lib/sim/settings.d.ts +11 -0
  1207. package/dist/types/lib/sim/types.d.ts +3 -0
  1208. package/dist/types/lib/submit-shortcut.d.ts +24 -0
  1209. package/dist/types/lib/syntax/index.d.ts +16 -0
  1210. package/dist/types/lib/syntax/languages/bash.d.ts +1 -0
  1211. package/dist/types/lib/syntax/languages/css.d.ts +1 -0
  1212. package/dist/types/lib/syntax/languages/html.d.ts +17 -0
  1213. package/dist/types/lib/syntax/languages/index.d.ts +33 -0
  1214. package/dist/types/lib/syntax/languages/javascript.d.ts +22 -0
  1215. package/dist/types/lib/syntax/languages/json.d.ts +1 -0
  1216. package/dist/types/lib/syntax/languages/mongodb.d.ts +1 -0
  1217. package/dist/types/lib/syntax/languages/plain.d.ts +9 -0
  1218. package/dist/types/lib/syntax/languages/sql.d.ts +4 -0
  1219. package/dist/types/lib/syntax/languages/vue.d.ts +1 -0
  1220. package/dist/types/lib/syntax/languages/yaml.d.ts +1 -0
  1221. package/dist/types/lib/syntax/markdown/frames.d.ts +145 -0
  1222. package/dist/types/lib/syntax/markdown/grammar.d.ts +1 -0
  1223. package/dist/types/lib/syntax/markdown/index.d.ts +5 -0
  1224. package/dist/types/lib/syntax/markdown/inline.d.ts +21 -0
  1225. package/dist/types/lib/syntax/markdown/parse.d.ts +15 -0
  1226. package/dist/types/lib/syntax/markdown/refs.d.ts +47 -0
  1227. package/dist/types/lib/syntax/markdown/render.d.ts +25 -0
  1228. package/dist/types/lib/syntax/markdown/spans.d.ts +84 -0
  1229. package/dist/types/lib/syntax/markdown/types.d.ts +108 -0
  1230. package/dist/types/lib/syntax/registry.d.ts +37 -0
  1231. package/dist/types/lib/syntax/tokenize.d.ts +17 -0
  1232. package/dist/types/lib/syntax/types.d.ts +119 -0
  1233. package/dist/types/lib/time/index.d.ts +4 -0
  1234. package/dist/types/lib/time/instant.d.ts +2 -0
  1235. package/dist/types/lib/time/plain.d.ts +61 -0
  1236. package/dist/types/lib/time/relativeAge.d.ts +18 -0
  1237. package/dist/types/lib/time/relativeClock.d.ts +8 -0
  1238. package/dist/types/lib/time/types.d.ts +87 -0
  1239. package/dist/types/lib/time/zone.d.ts +106 -0
  1240. package/dist/types/lib/use-controllable.d.ts +14 -0
  1241. package/dist/types/lib/use-fill-height.d.ts +26 -0
  1242. package/dist/types/lib/use-hydrated.d.ts +8 -0
  1243. package/dist/types/lib/use-media-query.d.ts +29 -0
  1244. package/dist/types/lib/use-relabel-base-ui-dismiss.d.ts +6 -0
  1245. package/dist/types/lib/use-release-snap-drag.d.ts +25 -0
  1246. package/dist/types/lib/use-roving-options.d.ts +10 -0
  1247. package/dist/types/lib/values/absent.d.ts +7 -0
  1248. package/dist/types/lib/values/boolean.d.ts +29 -0
  1249. package/dist/types/lib/values/currency.d.ts +22 -0
  1250. package/dist/types/lib/values/date.d.ts +30 -0
  1251. package/dist/types/lib/values/datetime.d.ts +48 -0
  1252. package/dist/types/lib/values/index.d.ts +5 -0
  1253. package/dist/types/lib/values/locale-date.d.ts +34 -0
  1254. package/dist/types/lib/values/number.d.ts +27 -0
  1255. package/dist/types/pure.d.ts +48 -0
  1256. package/package.json +136 -4
@@ -0,0 +1,210 @@
1
+ import { sourceOffsetAt as E } from "./position.js";
2
+ import { resolveKey as A } from "./keys.js";
3
+ import { hotkeyFor as C } from "./hotkeys.js";
4
+ import { nearestStop as S } from "./caret-map.js";
5
+ import { htmlFragmentToMarkdown as P } from "./paste.js";
6
+ import { sanitizeHref as R } from "../syntax/markdown/render.js";
7
+ const K = /* @__PURE__ */ new Set([
8
+ "insertText",
9
+ "insertReplacementText",
10
+ "insertFromPaste",
11
+ "insertFromPasteAsQuotation",
12
+ "insertFromDrop",
13
+ "insertFromYank",
14
+ "insertTranspose",
15
+ "insertLink"
16
+ ]), I = /* @__PURE__ */ new Set([
17
+ "deleteContent",
18
+ "deleteContentBackward",
19
+ "deleteContentForward",
20
+ "deleteWordBackward",
21
+ "deleteWordForward",
22
+ "deleteSoftLineBackward",
23
+ "deleteSoftLineForward",
24
+ "deleteEntireSoftLine",
25
+ "deleteHardLineBackward",
26
+ "deleteHardLineForward",
27
+ "deleteByDrag",
28
+ "deleteByCut"
29
+ ]);
30
+ function Y(t, r = {}) {
31
+ const o = t.root, n = (e) => {
32
+ const a = e.inputType;
33
+ if (!e.cancelable) return;
34
+ if (a === "historyUndo") {
35
+ e.preventDefault(), t.undo();
36
+ return;
37
+ }
38
+ if (a === "historyRedo") {
39
+ e.preventDefault(), t.redo();
40
+ return;
41
+ }
42
+ const d = O(o, e) ?? M(t);
43
+ if (!d) return;
44
+ const c = t.getSelection(), u = c !== null && c.anchor === c.head ? c : null, p = (h, D, b = u ?? { anchor: d.start, head: d.end }) => {
45
+ const k = A(
46
+ { source: t.getSource(), projection: t.getProjection(), map: t.getCaretMap() },
47
+ b,
48
+ h
49
+ );
50
+ return k ? (t.apply(k.splice, k.select, D), !0) : !1;
51
+ };
52
+ if (K.has(a)) {
53
+ e.preventDefault();
54
+ const h = H(e);
55
+ if (h === null) {
56
+ r.onUnhandled?.(a);
57
+ return;
58
+ }
59
+ p({ kind: "insert", text: h }, "type");
60
+ return;
61
+ }
62
+ if (I.has(a)) {
63
+ e.preventDefault(), p(
64
+ { kind: a === "deleteContentBackward" || a === "deleteWordBackward" ? "backspace" : "delete" },
65
+ "delete",
66
+ (a === "deleteContentBackward" || a === "deleteContentForward" || a === "deleteContent") && u ? u : { anchor: d.start, head: d.end }
67
+ );
68
+ return;
69
+ }
70
+ if (a === "insertParagraph" || a === "insertLineBreak") {
71
+ e.preventDefault(), p({ kind: a === "insertParagraph" ? "enter" : "lineBreak" }, "type");
72
+ return;
73
+ }
74
+ e.preventDefault(), r.onUnhandled?.(a);
75
+ }, i = /* @__PURE__ */ new Set([
76
+ "ArrowLeft",
77
+ "ArrowRight",
78
+ "ArrowUp",
79
+ "ArrowDown",
80
+ "Home",
81
+ "End",
82
+ "PageUp",
83
+ "PageDown"
84
+ ]), s = () => t.breakUndoGroup(), f = (e) => {
85
+ if (!e.ctrlKey && !e.metaKey) return;
86
+ const c = e.target?.closest?.("[data-md-href]")?.getAttribute("data-md-href");
87
+ if (!c) return;
88
+ const u = R(c);
89
+ u && (e.preventDefault(), o.ownerDocument.defaultView?.open(u, "_blank", "noopener,noreferrer"));
90
+ }, l = (e) => {
91
+ const a = C(e);
92
+ if (a?.request) {
93
+ r.onRequest && (e.preventDefault(), r.onRequest(a.request));
94
+ return;
95
+ }
96
+ if (a?.command) {
97
+ const u = t.getSelection(), p = u ? a.command(t.getSource(), u) : null;
98
+ p && (e.preventDefault(), t.breakUndoGroup(), t.apply(p.splice, p.select, "other"));
99
+ return;
100
+ }
101
+ if (i.has(e.key)) {
102
+ t.breakUndoGroup(), (e.key === "ArrowLeft" || e.key === "ArrowRight") && !e.ctrlKey && !e.altKey && !e.metaKey ? t.moveCaret(e.key === "ArrowRight" ? 1 : -1, e.shiftKey) && e.preventDefault() : (e.key === "Home" || e.key === "End") && !e.ctrlKey && !e.altKey && !e.metaKey && t.moveToLineEdge(e.key === "Home" ? "start" : "end", e.shiftKey) && e.preventDefault();
103
+ return;
104
+ }
105
+ const d = e.ctrlKey || e.metaKey, c = e.key.toLowerCase();
106
+ if (d && c === "z" && !e.shiftKey) {
107
+ e.preventDefault(), t.undo();
108
+ return;
109
+ }
110
+ d && (c === "z" && e.shiftKey || c === "y") && (e.preventDefault(), t.redo());
111
+ }, m = o.ownerDocument, g = () => {
112
+ const a = m.getSelection()?.anchorNode;
113
+ !a || !o.contains(a) || t.snapCaret();
114
+ }, y = r.files ? x(t, r.files) : () => {
115
+ };
116
+ return o.addEventListener("beforeinput", n), o.addEventListener("pointerdown", s), o.addEventListener("click", f), o.addEventListener("keydown", l), m.addEventListener("selectionchange", g), () => {
117
+ y(), o.removeEventListener("beforeinput", n), o.removeEventListener("pointerdown", s), o.removeEventListener("click", f), o.removeEventListener("keydown", l), m.removeEventListener("selectionchange", g);
118
+ };
119
+ }
120
+ const L = "data-md-drop-target";
121
+ function T(t, r) {
122
+ return t ? Array.from(t.files).filter((o) => r(o.type)) : [];
123
+ }
124
+ function F(t, r) {
125
+ return t ? Array.from(t.items).some((o) => o.kind === "file" && r(o.type)) : !1;
126
+ }
127
+ function B(t, r) {
128
+ const o = new Set(r.map((i) => i.name)), n = t.split(/\r?\n/).map((i) => i.trim()).filter(Boolean);
129
+ return n.length > 0 && n.every((i) => o.has(i) || o.has(i.split(/[\\/]/).pop() ?? ""));
130
+ }
131
+ function w(t) {
132
+ return !!t && Array.from(t.types).includes("Files");
133
+ }
134
+ function N(t, r, o) {
135
+ const n = t.root.ownerDocument;
136
+ let i = null, s = 0;
137
+ if (typeof n.caretPositionFromPoint == "function") {
138
+ const l = n.caretPositionFromPoint(r, o);
139
+ l && (i = l.offsetNode, s = l.offset);
140
+ } else if (typeof n.caretRangeFromPoint == "function") {
141
+ const l = n.caretRangeFromPoint(r, o);
142
+ l && (i = l.startContainer, s = l.startOffset);
143
+ }
144
+ if (!i || !t.root.contains(i)) return null;
145
+ const f = E(t.root, i, s);
146
+ return f === null ? null : S(t.getCaretMap(), f);
147
+ }
148
+ function x(t, { accepts: r, receive: o }) {
149
+ const n = t.root;
150
+ let i = 0;
151
+ const s = (e) => {
152
+ e ? n.setAttribute(L, "") : n.removeAttribute(L);
153
+ }, f = (e) => {
154
+ if (!n.isContentEditable) return;
155
+ const a = e.clipboardData, d = T(a, r);
156
+ if (!d.length) return;
157
+ const c = a.getData("text/plain");
158
+ c.length && !B(c, d) || (e.preventDefault(), o(d, t.getSelection()));
159
+ }, l = (e) => {
160
+ !n.isContentEditable || !w(e.dataTransfer) || (i++, s(F(e.dataTransfer, r)));
161
+ }, m = (e) => {
162
+ !n.isContentEditable || !w(e.dataTransfer) || (e.preventDefault(), e.dataTransfer.dropEffect = F(e.dataTransfer, r) ? "copy" : "none");
163
+ }, g = (e) => {
164
+ w(e.dataTransfer) && (i = Math.max(0, i - 1), i === 0 && s(!1));
165
+ }, y = (e) => {
166
+ if (!n.isContentEditable || !w(e.dataTransfer)) return;
167
+ e.preventDefault(), i = 0, s(!1);
168
+ const a = T(e.dataTransfer, r);
169
+ if (!a.length) return;
170
+ const d = N(t, e.clientX, e.clientY);
171
+ o(a, d === null ? null : { anchor: d, head: d });
172
+ };
173
+ return n.addEventListener("paste", f), n.addEventListener("dragenter", l), n.addEventListener("dragover", m), n.addEventListener("dragleave", g), n.addEventListener("drop", y), () => {
174
+ n.removeEventListener("paste", f), n.removeEventListener("dragenter", l), n.removeEventListener("dragover", m), n.removeEventListener("dragleave", g), n.removeEventListener("drop", y), s(!1);
175
+ };
176
+ }
177
+ function O(t, r) {
178
+ const o = typeof r.getTargetRanges == "function" ? r.getTargetRanges() : [];
179
+ if (!o.length) return null;
180
+ let n = Number.POSITIVE_INFINITY, i = Number.NEGATIVE_INFINITY;
181
+ for (const s of o) {
182
+ const f = E(t, s.startContainer, s.startOffset), l = E(t, s.endContainer, s.endOffset);
183
+ if (f === null || l === null) return null;
184
+ n = Math.min(n, f, l), i = Math.max(i, f, l);
185
+ }
186
+ return Number.isFinite(n) ? { start: n, end: i } : null;
187
+ }
188
+ function M(t) {
189
+ const r = t.getSelection();
190
+ return r ? { start: Math.min(r.anchor, r.head), end: Math.max(r.anchor, r.head) } : null;
191
+ }
192
+ function H(t) {
193
+ if (typeof t.data == "string") return t.data;
194
+ const r = t.dataTransfer;
195
+ if (!r) return null;
196
+ const o = r.getData("text/plain"), n = r.getData("text/html");
197
+ if (n && n.trim().length) {
198
+ const i = P(
199
+ n,
200
+ (s) => new DOMParser().parseFromString(s, "text/html")
201
+ );
202
+ if (i && i !== o) return i;
203
+ }
204
+ return o.length ? o : null;
205
+ }
206
+ export {
207
+ L as DROP_TARGET_ATTR,
208
+ Y as attachInput
209
+ };
210
+ //# sourceMappingURL=input.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"input.js","sources":["../../../src/lib/markdown/input.ts"],"sourcesContent":["/* ============================================================================\n INPUT — `beforeinput`, never `keydown`; intents, never keystrokes.\n\n THE SINGLE CHOICE THIS FILE IS ABOUT. Most text entry is not a key press.\n Android's keyboard sends no meaningful `keydown` at all — `keyCode` is 229\n for everything — and swipe typing inserts a whole word at once. Paste,\n drag-and-drop and autofill have no keystroke. Dictation, the emoji picker,\n autocorrect and spellcheck \"replace with\" all arrive as `beforeinput` with no\n key. An editor whose handler is keydown-shaped is wrong on every one of them,\n the first time a real person uses it.\n\n `beforeinput` reports the INTENT — `insertText`, `deleteContentBackward`,\n `insertFromPaste`, `historyUndo` — uniformly, for every source, and it is\n cancellable. There are 44 inputType values across insert, delete, format and\n history; every one is a case to handle or to deliberately fall through.\n\n THREE RULES THAT ARE NOT NEGOTIABLE.\n\n 1. BIND NATIVELY, NEVER React's `onBeforeInput`. React's synthetic event is\n not the native one: no `inputType`, no `getTargetRanges()`. It works in\n desktop Chrome and silently loses every autocorrect, dictation and IME\n path — which makes it the cheapest catastrophic mistake available here,\n and there is a source sweep against it.\n\n 2. USE `getTargetRanges()`, NOT THE SELECTION. For a backspace the browser\n has already worked out what one \"character\" means — a grapheme cluster, a\n flag emoji, a Hangul syllable — and the answer is in the target range.\n Recomputing it from the selection is how an editor eats half an emoji.\n\n 3. CANCEL WHAT IS CANCELLABLE, INCLUDING WHAT WE DO NOT HANDLE. An\n unhandled `formatBold` left to the browser wraps the selection in a `<b>`\n the projection has no idea about. Cancelling and ignoring is a no-op;\n letting it through is a DOM this editor can no longer map.\n\n WHAT CANNOT BE CANCELLED falls to the surface's mutation-observation repair,\n and that is a requirement rather than a safety net: Chrome on Android reports\n `cancelable: true` on `deleteContentBackward` and deletes anyway,\n `insertCompositionText` is non-cancelable by spec, and iOS dictation fires no\n composition events at all.\n ========================================================================= */\n\nimport { sourceOffsetAt, type SourceSelection } from \"./position\";\nimport { resolveKey, type KeyIntent } from \"./keys\";\nimport type { EditKind } from \"./history\";\nimport { hotkeyFor, type EditorRequest } from \"./hotkeys\";\nimport { nearestStop } from \"./caret-map\";\nimport { htmlFragmentToMarkdown } from \"./paste\";\nimport { sanitizeHref } from \"../syntax/markdown/render\";\nimport type { MarkdownSurface } from \"./surface\";\n\n/** Insert intents whose payload is `data` or the DataTransfer's plain text. */\nconst INSERTS = new Set([\n \"insertText\",\n \"insertReplacementText\",\n \"insertFromPaste\",\n \"insertFromPasteAsQuotation\",\n \"insertFromDrop\",\n \"insertFromYank\",\n \"insertTranspose\",\n \"insertLink\",\n]);\n\n/** Delete intents. The extent always comes from `getTargetRanges()`. */\nconst DELETES = new Set([\n \"deleteContent\",\n \"deleteContentBackward\",\n \"deleteContentForward\",\n \"deleteWordBackward\",\n \"deleteWordForward\",\n \"deleteSoftLineBackward\",\n \"deleteSoftLineForward\",\n \"deleteEntireSoftLine\",\n \"deleteHardLineBackward\",\n \"deleteHardLineForward\",\n \"deleteByDrag\",\n \"deleteByCut\",\n]);\n\nexport interface InputOptions {\n /**\n * Called for an intent this layer cancelled but did not act on.\n *\n * Not a warning to be silenced — it is the list of what phase 4 owes. An\n * editor that quietly ignores `formatBold` looks like one where Ctrl+B is\n * broken, and this is how that gets noticed before a user reports it.\n */\n onUnhandled?: (inputType: string) => void;\n /**\n * Receives the files of a paste or a drop, and where they go (DX-3134, DXUI-74).\n *\n * `accepts` says from a MIME type alone whether the editor takes that file (a drag only exposes the type, never\n * the file, until it is dropped). `receive` gets the accepted files and `at`: the caret for a paste and the drop\n * point for a drop, already on a caret stop. Without this option files are not handled here at all, and a paste\n * or drop behaves exactly as it always did.\n */\n files?: {\n accepts: (mimeType: string) => boolean;\n receive: (files: File[], at: SourceSelection | null) => void;\n };\n /**\n * Receives a hotkey that asks the EDITOR to do something rather than making\n * an edit — the Attach-file chord opening a file picker (DX-3134). A\n * request with no receiver lets the key fall through, like a command that\n * declined.\n */\n onRequest?: (request: EditorRequest) => void;\n}\n\n/**\n * Binds the input layer to a surface. Returns the unbind function.\n */\nexport function attachInput(surface: MarkdownSurface, options: InputOptions = {}): () => void {\n const root = surface.root;\n\n const onBeforeInput = (event: InputEvent) => {\n const type = event.inputType;\n\n /* Not cancellable: let the DOM change and let the surface repair from it.\n This is the Android and IME path, and it is the majority path there. */\n if (!event.cancelable) return;\n\n if (type === \"historyUndo\") {\n event.preventDefault();\n surface.undo();\n return;\n }\n if (type === \"historyRedo\") {\n event.preventDefault();\n surface.redo();\n return;\n }\n\n const target = targetRange(root, event) ?? selectionRange(surface);\n if (!target) return;\n\n /* EVERY DECISION BELOW BELONGS TO `keys.ts`, and this function's whole job\n is to say which intent arrived. That split is what lets the keystroke\n tests drive the real logic without a DOM — before it, the only way to\n assert \"Backspace here produces exactly this markdown\" was to\n re-implement this dispatch in the test and assert against the copy. */\n /* A COLLAPSED CARET IS THE MODEL'S TO LOCATE, not the browser's.\n `getTargetRanges()` and the raw DOM selection both report a position in\n the tree, and a caret stop can have no text node of its own — the place\n after the marker of an empty list item is inside a zero-width span, so the\n surface writes it into the newline before it and the browser reads back an\n offset one group away. Typing then landed BEFORE the marker and turned\n `- one\\n- ` into `- one\\ntwo- `. `getSelection()` puts it back through the\n same map that produced it. A real range is still the browser's. */\n const caret = surface.getSelection();\n const collapsed = caret !== null && caret.anchor === caret.head ? caret : null;\n\n const press = (intent: KeyIntent, kind: EditKind, over = collapsed ?? { anchor: target.start, head: target.end }): boolean => {\n const edit = resolveKey(\n { source: surface.getSource(), projection: surface.getProjection(), map: surface.getCaretMap() },\n over,\n intent,\n );\n if (!edit) return false;\n surface.apply(edit.splice, edit.select, kind);\n return true;\n };\n\n if (INSERTS.has(type)) {\n event.preventDefault();\n const text = insertedText(event);\n if (text === null) {\n options.onUnhandled?.(type);\n return;\n }\n press({ kind: \"insert\", text }, \"type\");\n return;\n }\n\n if (DELETES.has(type)) {\n event.preventDefault();\n /* THE SELECTION DECIDES WHETHER THIS IS A CARET OR A RANGE, not the\n target range — and that inverts rule 2 of this file's header for the\n one-character deletes.\n\n `getTargetRanges()` answers \"what would the browser delete\", and for a\n collapsed caret it answers with the previous SOURCE character, which\n under always-hidden markup is routinely one asterisk of a `**` or the\n newline above a list item. Reading that as a range made every backspace\n at a construct's edge a no-op: a one-character range over pure markup\n holds nothing visible to delete. The probe caught it as thirteen\n constructs where the key did nothing at all.\n\n The browser's extent is still exactly right for a real selection, and\n still right for word- and line-wise deletes, where it knows where a\n word ends and we do not. What it cannot know is what one VISIBLE\n character means here, so that case is ours. */\n const backward = type === \"deleteContentBackward\" || type === \"deleteWordBackward\";\n /* Word- and line-wise deletes keep the browser's extent: it knows where a\n word ends and this layer does not. Only the one-character deletes are\n ours, because only they depend on what one VISIBLE character means. */\n const single = type === \"deleteContentBackward\" || type === \"deleteContentForward\" || type === \"deleteContent\";\n press(\n { kind: backward ? \"backspace\" : \"delete\" },\n \"delete\",\n single && collapsed ? collapsed : { anchor: target.start, head: target.end },\n );\n return;\n }\n\n if (type === \"insertParagraph\" || type === \"insertLineBreak\") {\n event.preventDefault();\n press({ kind: type === \"insertParagraph\" ? \"enter\" : \"lineBreak\" }, \"type\");\n return;\n }\n\n /* Everything else — the sixteen `format*` intents above all. Cancelled so\n the browser cannot put markup into the projection, and reported so the\n gap is visible rather than mysterious. */\n event.preventDefault();\n options.onUnhandled?.(type);\n };\n\n /* An edit after the caret was deliberately moved is a different thought, so\n it starts a new undo group however soon it arrives. This is the coalescing\n rule a timer cannot express, and it is bound to the two things that\n actually move a caret on purpose — a click and a navigation key.\n Not `selectionchange`: that also fires for the surface's OWN caret\n restore after every edit, which would break the group on every keystroke\n and leave undo giving text back one character at a time. */\n const NAVIGATION = new Set([\n \"ArrowLeft\",\n \"ArrowRight\",\n \"ArrowUp\",\n \"ArrowDown\",\n \"Home\",\n \"End\",\n \"PageUp\",\n \"PageDown\",\n ]);\n const onPointerDown = () => surface.breakUndoGroup();\n\n /**\n * A modifier-click opens a link.\n *\n * Links render as SPANS, not anchors — an anchor inside a contenteditable is\n * a trap: the browser gives it its own selection behaviour, some engines make\n * it draggable, and a plain click navigates away from the document being\n * edited. So the appearance is a class and the behaviour is this, which means\n * a plain click still puts the caret in the link's text where an author needs\n * it, and Ctrl (or Cmd) opens.\n *\n * `noopener` is not optional: without it the opened page gets a handle on\n * this one through `window.opener` and can navigate it anywhere.\n */\n const onClick = (event: MouseEvent) => {\n if (!event.ctrlKey && !event.metaKey) return;\n const target = event.target as HTMLElement | null;\n const anchor = target?.closest?.(\"[data-md-href]\");\n const href = anchor?.getAttribute(\"data-md-href\");\n if (!href) return;\n const safe = sanitizeHref(href);\n if (!safe) return;\n event.preventDefault();\n // I18N-ALLOW: window.open target and feature tokens\n root.ownerDocument.defaultView?.open(safe, \"_blank\", \"noopener,noreferrer\");\n };\n const onKeyDown = (event: KeyboardEvent) => {\n /* THE TABLE IS CONSULTED FIRST, because four of its chords ARE arrow keys —\n `ctrl+alt+shift+ArrowUp` inserts a table row. Letting the navigation\n branch below claim every arrow would have made those four silently\n inert, which is the shape of bug nobody reports because nobody knew the\n key existed. */\n const hotkey = hotkeyFor(event);\n if (hotkey?.request) {\n if (options.onRequest) {\n event.preventDefault();\n options.onRequest(hotkey.request);\n }\n return;\n }\n if (hotkey?.command) {\n const selection = surface.getSelection();\n const edit = selection ? hotkey.command(surface.getSource(), selection) : null;\n if (edit) {\n event.preventDefault();\n /* Every authoring command is its own undo step: merging \"make this a\n heading\" into the typing before it means one Ctrl+Z takes back both. */\n surface.breakUndoGroup();\n surface.apply(edit.splice, edit.select, \"other\");\n }\n /* A command that DECLINED lets the key fall through, which is what makes\n Tab leave the editor everywhere except inside a list. */\n return;\n }\n\n if (NAVIGATION.has(event.key)) {\n surface.breakUndoGroup();\n /* HORIZONTAL MOVEMENT AND LINE-EDGE MOVEMENT ARE OURS; vertical and\n word-wise movement are the browser's. The split is not arbitrary: one\n source offset can be two DOM points — the end of one node and the\n start of the next — and across a table-cell boundary the browser\n visits both, so a plain Right appears to stall. Rule 1 of the caret\n contract says Left moves back exactly one character always, and the\n only way to mean that is to move in the model. Ctrl/Alt variants fall\n through, because word-wise (and, for Home/End, whole-document)\n movement depends on layout and locale and reimplementing it is how\n editors lose a decade.\n\n Home/End used to be on the browser's side of this split too, on the\n theory that they are as native as vertical movement. SG-799 found\n that theory wrong: a block's leading markup renders as a zero-size\n `inline-block` (`styles/markdown.css`), which is an ATOMIC box to\n Chromium's own line navigation, and a real Chromium probe caught\n native End landing the browser's selection INSIDE that leading box —\n the same on-screen point the caret already stood at — instead of at\n the line's true end, on every block with a leading marker. Home had\n the identical exposure and simply hadn't been caught: `lineStartStop`\n already existed in `caret-map.ts` for it and was never called from\n here. Both are now computed in the model and written directly, same\n as ArrowLeft/ArrowRight already were. */\n if ((event.key === \"ArrowLeft\" || event.key === \"ArrowRight\") && !event.ctrlKey && !event.altKey && !event.metaKey) {\n if (surface.moveCaret(event.key === \"ArrowRight\" ? 1 : -1, event.shiftKey)) event.preventDefault();\n } else if ((event.key === \"Home\" || event.key === \"End\") && !event.ctrlKey && !event.altKey && !event.metaKey) {\n if (surface.moveToLineEdge(event.key === \"Home\" ? \"start\" : \"end\", event.shiftKey)) event.preventDefault();\n }\n return;\n }\n\n /* UNDO IS BOUND HERE AS WELL AS AT `historyUndo`, and the browser probe is\n why. Chrome only fires the `historyUndo` intent when its OWN undo stack\n has something in it — and this editor cancels every cancellable input, so\n that stack is permanently empty and Ctrl+Z produced no event at all.\n Two sources for one intent, not a fallback chain: the keymap is what a\n keyboard user hits, and `historyUndo` is what arrives from an Edit menu,\n a trackpad gesture, or a phone's shake-to-undo. Neither covers the other.\n Both land on the same model-level history. */\n const accel = event.ctrlKey || event.metaKey;\n const key = event.key.toLowerCase();\n if (accel && key === \"z\" && !event.shiftKey) {\n event.preventDefault();\n surface.undo();\n return;\n }\n if (accel && ((key === \"z\" && event.shiftKey) || key === \"y\")) {\n event.preventDefault();\n surface.redo();\n }\n };\n\n /* THE REVEAL FOLLOWS THE CARET. Rule 2 of the caret contract: markup is\n revealed for the caret's own line, and the caret moves without the document\n changing — arrow keys, clicks, drags. `selectionchange` is a DOCUMENT\n event, never an element one, and it is the only signal for a caret the\n browser moved on its own.\n\n It fires for the surface's own caret restore too, which is why this only\n ever touches ATTRIBUTES: re-projecting here would put a patch on the end of\n every keystroke, and every patch is a chance to disturb a caret that was\n already exactly where it belonged. */\n const document = root.ownerDocument;\n const onSelectionChange = () => {\n const selection = document.getSelection();\n const node = selection?.anchorNode;\n if (!node || !root.contains(node)) return;\n surface.snapCaret();\n };\n\n const unbindFiles = options.files ? attachFiles(surface, options.files) : () => {};\n\n root.addEventListener(\"beforeinput\", onBeforeInput as EventListener);\n root.addEventListener(\"pointerdown\", onPointerDown);\n root.addEventListener(\"click\", onClick);\n root.addEventListener(\"keydown\", onKeyDown);\n document.addEventListener(\"selectionchange\", onSelectionChange);\n return () => {\n unbindFiles();\n root.removeEventListener(\"beforeinput\", onBeforeInput as EventListener);\n root.removeEventListener(\"pointerdown\", onPointerDown);\n root.removeEventListener(\"click\", onClick);\n root.removeEventListener(\"keydown\", onKeyDown);\n document.removeEventListener(\"selectionchange\", onSelectionChange);\n };\n}\n\n/* --- Files: paste and drop ------------------------------------------------- */\n\n/** Marks the surface while files it takes are dragged over it, for the affordance. */\nexport const DROP_TARGET_ATTR = \"data-md-drop-target\";\n\n/** The files a DataTransfer carries that `accepts` takes, in the order it lists them. */\nfunction acceptedFilesOf(transfer: DataTransfer | null, accepts: (mimeType: string) => boolean): File[] {\n if (!transfer) return [];\n return Array.from(transfer.files).filter((file) => accepts(file.type));\n}\n\n/**\n * Whether a drag carries at least one file `accepts` takes.\n *\n * Read from `items`, not `files`: during `dragenter`/`dragover` the browser\n * keeps the files themselves protected and `files` is empty, while each item's\n * `kind` and MIME `type` are already readable.\n */\nfunction dragHasAccepted(transfer: DataTransfer | null, accepts: (mimeType: string) => boolean): boolean {\n if (!transfer) return false;\n return Array.from(transfer.items).some((item) => item.kind === \"file\" && accepts(item.type));\n}\n\n/**\n * Whether a clipboard's plain text is nothing but the NAMES of its files.\n *\n * Copying a file in a desktop file manager (Finder does this) puts the file on\n * the clipboard AND its name as plain text. That text is a label for the file,\n * not content the author wrote — pasting \"photo.png\" instead of the photo is\n * the wrong reading of it. Anything more than the names, and text wins as\n * usual.\n */\nfunction namesOnly(plain: string, files: readonly File[]): boolean {\n const names = new Set(files.map((file) => file.name));\n const lines = plain.split(/\\r?\\n/).map((line) => line.trim()).filter(Boolean);\n return lines.length > 0 && lines.every((line) => names.has(line) || names.has(line.split(/[\\\\/]/).pop() ?? \"\"));\n}\n\n/** Whether a drag carries files at all — of any kind. */\nfunction dragHasFiles(transfer: DataTransfer | null): boolean {\n return !!transfer && Array.from(transfer.types).includes(\"Files\");\n}\n\n/**\n * The source offset under a viewport point, snapped to a caret stop — where a\n * drop lands.\n *\n * `caretPositionFromPoint` is the standard and `caretRangeFromPoint` the\n * WebKit spelling of the same question; Safari shipped only the latter until\n * 2024, so both are asked for by feature detection, never as a fallback for a\n * wrong answer. A point that resolves outside this surface returns null.\n */\nfunction offsetAtPoint(surface: MarkdownSurface, x: number, y: number): number | null {\n const doc = surface.root.ownerDocument as Document & {\n caretPositionFromPoint?: (x: number, y: number) => { offsetNode: Node; offset: number } | null;\n caretRangeFromPoint?: (x: number, y: number) => Range | null;\n };\n let node: Node | null = null;\n let offset = 0;\n if (typeof doc.caretPositionFromPoint === \"function\") {\n const position = doc.caretPositionFromPoint(x, y);\n if (position) {\n node = position.offsetNode;\n offset = position.offset;\n }\n } else if (typeof doc.caretRangeFromPoint === \"function\") {\n const range = doc.caretRangeFromPoint(x, y);\n if (range) {\n node = range.startContainer;\n offset = range.startOffset;\n }\n }\n if (!node || !surface.root.contains(node)) return null;\n const at = sourceOffsetAt(surface.root, node, offset);\n return at === null ? null : nearestStop(surface.getCaretMap(), at);\n}\n\n/**\n * Binds paste and drop of FILES. Returns the unbind function.\n *\n * NATIVE `paste` / `drop` EVENTS, NOT `beforeinput`, and that is not a\n * contradiction of this file's header. `beforeinput` carries intents that have\n * TEXT; whether a browser fires `insertFromPaste` at all for a clipboard\n * holding only a file — and whether its `dataTransfer` exposes the file — is\n * not something the spec pins down. `ClipboardEvent.clipboardData` and\n * `DragEvent.dataTransfer` are where every engine puts the files, and\n * cancelling either event cancels the `beforeinput` that would follow, so one\n * gesture can never be inserted twice. Before DX-3134 a file-only paste reached\n * `beforeinput`, was cancelled there, found no text, and vanished.\n *\n * TEXT WINS WHEN THERE IS TEXT. Copying from a word processor or a spreadsheet\n * puts plain text, HTML AND a picture of the selection on the clipboard; the\n * author meant the text, and that paste must behave exactly as it did before.\n * Files are taken only when the clipboard has no plain text — a screenshot, or\n * \"Copy image\" in a browser — or when its text is just the files' own names\n * (a file copied in a file manager; see `namesOnly`).\n *\n * A DROP IS THE OTHER WAY ROUND, deliberately: a drag carrying files is always\n * the files, because no application drags a file and means its text.\n */\nfunction attachFiles(surface: MarkdownSurface, { accepts, receive }: NonNullable<InputOptions[\"files\"]>): () => void {\n const root = surface.root;\n /* Enter and leave fire for every CHILD the pointer crosses, so a boolean\n would flicker off at the first inline element. A depth counter reads true\n for as long as the pointer is anywhere inside. */\n let depth = 0;\n const setTarget = (on: boolean) => {\n if (on) root.setAttribute(DROP_TARGET_ATTR, \"\");\n else root.removeAttribute(DROP_TARGET_ATTR);\n };\n\n const onPaste = (event: ClipboardEvent) => {\n if (!root.isContentEditable) return;\n const transfer = event.clipboardData;\n const files = acceptedFilesOf(transfer, accepts);\n if (!files.length) return;\n const plain = transfer!.getData(\"text/plain\");\n if (plain.length && !namesOnly(plain, files)) return;\n event.preventDefault();\n receive(files, surface.getSelection());\n };\n\n const onDragEnter = (event: DragEvent) => {\n if (!root.isContentEditable || !dragHasFiles(event.dataTransfer)) return;\n depth++;\n setTarget(dragHasAccepted(event.dataTransfer, accepts));\n };\n\n const onDragOver = (event: DragEvent) => {\n if (!root.isContentEditable || !dragHasFiles(event.dataTransfer)) return;\n /* A FILE DRAG IS ALWAYS OURS once it is over the surface, images or not.\n Left to the browser, a file dropped on a page may be OPENED — the tab\n navigates to it and takes the unsaved document with it. Accepting the\n drag here is what stops that; the drop below ignores what is not\n accepted. A TEXT drag has no \"Files\" type and never reaches this line, so\n moving text around the document works exactly as it did. */\n event.preventDefault();\n event.dataTransfer!.dropEffect = dragHasAccepted(event.dataTransfer, accepts) ? \"copy\" : \"none\";\n };\n\n const onDragLeave = (event: DragEvent) => {\n if (!dragHasFiles(event.dataTransfer)) return;\n depth = Math.max(0, depth - 1);\n if (depth === 0) setTarget(false);\n };\n\n const onDrop = (event: DragEvent) => {\n if (!root.isContentEditable || !dragHasFiles(event.dataTransfer)) return;\n event.preventDefault();\n depth = 0;\n setTarget(false);\n const files = acceptedFilesOf(event.dataTransfer, accepts);\n if (!files.length) return;\n const at = offsetAtPoint(surface, event.clientX, event.clientY);\n receive(files, at === null ? null : { anchor: at, head: at });\n };\n\n root.addEventListener(\"paste\", onPaste);\n root.addEventListener(\"dragenter\", onDragEnter);\n root.addEventListener(\"dragover\", onDragOver);\n root.addEventListener(\"dragleave\", onDragLeave);\n root.addEventListener(\"drop\", onDrop);\n return () => {\n root.removeEventListener(\"paste\", onPaste);\n root.removeEventListener(\"dragenter\", onDragEnter);\n root.removeEventListener(\"dragover\", onDragOver);\n root.removeEventListener(\"dragleave\", onDragLeave);\n root.removeEventListener(\"drop\", onDrop);\n setTarget(false);\n };\n}\n\n/* --- Ranges --------------------------------------------------------------- */\n\ninterface Extent {\n start: number;\n end: number;\n}\n\n/**\n * The source extent the browser says it intends to change.\n *\n * Returns null when the ranges point into nodes this editor did not build —\n * which happens for real, mid-composition and after a drop — so the caller\n * falls back to the selection rather than acting on a guessed number.\n */\nfunction targetRange(root: HTMLElement, event: InputEvent): Extent | null {\n const ranges = typeof event.getTargetRanges === \"function\" ? event.getTargetRanges() : [];\n if (!ranges.length) return null;\n\n let start = Number.POSITIVE_INFINITY;\n let end = Number.NEGATIVE_INFINITY;\n for (const range of ranges) {\n const from = sourceOffsetAt(root, range.startContainer, range.startOffset);\n const to = sourceOffsetAt(root, range.endContainer, range.endOffset);\n if (from === null || to === null) return null;\n start = Math.min(start, from, to);\n end = Math.max(end, from, to);\n }\n return Number.isFinite(start) ? { start, end } : null;\n}\n\nfunction selectionRange(surface: MarkdownSurface): Extent | null {\n const selection: SourceSelection | null = surface.getSelection();\n if (!selection) return null;\n return { start: Math.min(selection.anchor, selection.head), end: Math.max(selection.anchor, selection.head) };\n}\n\n/**\n * The text an insert intent carries.\n *\n * `data` for typing; the DataTransfer for paste and drop.\n *\n * RICH HTML BECOMES MARKDOWN, and this is the ONLY place in the editor where an\n * HTML-to-markdown conversion happens. ARCH-1 struck the document-wide one and\n * that stands: a document serializer runs on every edit over text the user did\n * not touch, which is what reformats a whole file because someone fixed a typo.\n * This runs once, on bytes from outside the document, at the user's request.\n *\n * PLAIN TEXT WINS WHEN IT IS ALL THERE IS, and also when the HTML is just the\n * plain text wrapped in a `<div>` — which is what a plain-text copy looks like\n * from most applications, and converting it would escape characters the user\n * typed deliberately.\n */\nfunction insertedText(event: InputEvent): string | null {\n if (typeof event.data === \"string\") return event.data;\n const transfer = event.dataTransfer;\n if (!transfer) return null;\n\n const plain = transfer.getData(\"text/plain\");\n const html = transfer.getData(\"text/html\");\n if (html && html.trim().length) {\n const markdown = htmlFragmentToMarkdown(html, (source) =>\n new DOMParser().parseFromString(source, \"text/html\"),\n );\n /* If the conversion produced the plain text back, prefer the plain text:\n it carries no escapes, and the two agreeing means there was no markup to\n preserve in the first place. */\n if (markdown && markdown !== plain) return markdown;\n }\n return plain.length ? plain : null;\n}\n"],"names":["INSERTS","DELETES","attachInput","surface","options","root","onBeforeInput","event","type","target","targetRange","selectionRange","caret","collapsed","press","intent","kind","over","edit","resolveKey","text","insertedText","NAVIGATION","onPointerDown","onClick","href","safe","sanitizeHref","onKeyDown","hotkey","hotkeyFor","selection","accel","key","document","onSelectionChange","node","unbindFiles","attachFiles","DROP_TARGET_ATTR","acceptedFilesOf","transfer","accepts","file","dragHasAccepted","item","namesOnly","plain","files","names","lines","line","dragHasFiles","offsetAtPoint","x","y","doc","offset","position","range","at","sourceOffsetAt","nearestStop","receive","depth","setTarget","on","onPaste","onDragEnter","onDragOver","onDragLeave","onDrop","ranges","start","end","from","to","html","markdown","htmlFragmentToMarkdown","source"],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ import { smartShiftTab as p, smartTab as u, smartEnter as h, backspaceBlockPrefix as f } from "./commands.js";
2
+ import { deleteVisible as c, deleteVisibleAfter as d, deleteVisibleBefore as m } from "./edit.js";
3
+ const l = (e) => ({
4
+ start: Math.min(e.anchor, e.head),
5
+ end: Math.max(e.anchor, e.head)
6
+ }), o = (e, a, n) => ({
7
+ splice: { start: e, end: a, text: n },
8
+ select: { anchor: e + n.length, head: e + n.length }
9
+ });
10
+ function j(e, a, n) {
11
+ const { start: r, end: s } = l(a), t = r === s;
12
+ switch (n.kind) {
13
+ case "insert":
14
+ return o(r, s, n.text);
15
+ case "backspace": {
16
+ if (!t) return c(e.projection, r, s);
17
+ const i = f(e.source, a);
18
+ return i || m(e.projection, e.map, r);
19
+ }
20
+ case "delete":
21
+ return t ? d(e.projection, e.map, r) : c(e.projection, r, s);
22
+ case "enter":
23
+ return h(e.source, a) ?? o(r, s, `
24
+ `);
25
+ case "lineBreak":
26
+ return o(r, s, `
27
+ `);
28
+ case "tab":
29
+ return u(e.source, a);
30
+ case "shiftTab":
31
+ return p(e.source, a);
32
+ }
33
+ }
34
+ export {
35
+ j as resolveKey
36
+ };
37
+ //# sourceMappingURL=keys.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keys.js","sources":["../../../src/lib/markdown/keys.ts"],"sourcesContent":["/* ============================================================================\n KEYS — what a keystroke does to the source, as a pure function.\n\n WHY THIS IS ITS OWN MODULE. The behaviour a user actually notices is\n \"I pressed Backspace and the document became this\", and until now that\n sentence had nowhere to live: the decisions were spread across the\n `beforeinput` handler, so the only way to test them was to drive a real DOM,\n and the only way to test them CHEAPLY was to re-implement the dispatch in the\n test — which tests a copy of the logic rather than the logic.\n\n So the dispatch moved here, and `input.ts` became the adapter that turns a\n browser event into one of these intents. The tests drive exactly the code the\n editor runs, with no DOM and no duplication.\n\n THE INTENTS ARE NOT KEYSTROKES. `input.ts` still binds `beforeinput` and\n still reads `inputType`, for all the reasons its own header gives — Android\n sends no meaningful keydown, dictation and paste have no key at all. What\n arrives here is the intent that survived that translation, which is why\n `insert` carries text rather than a key name.\n ========================================================================= */\n\nimport type { CaretMap } from \"./caret-map\";\nimport { backspaceBlockPrefix, smartEnter, smartShiftTab, smartTab } from \"./commands\";\nimport { deleteVisible, deleteVisibleAfter, deleteVisibleBefore, type Edit } from \"./edit\";\nimport type { SourceSelection } from \"./position\";\nimport type { Projection } from \"./project\";\n\nexport type KeyIntent =\n | { kind: \"insert\"; text: string }\n | { kind: \"backspace\" }\n | { kind: \"delete\" }\n | { kind: \"enter\" }\n | { kind: \"lineBreak\" }\n | { kind: \"tab\" }\n | { kind: \"shiftTab\" };\n\n/** Everything a decision needs, and nothing it does not. */\nexport interface KeyContext {\n source: string;\n projection: Projection;\n map: CaretMap;\n}\n\nconst span = (selection: SourceSelection) => ({\n start: Math.min(selection.anchor, selection.head),\n end: Math.max(selection.anchor, selection.head),\n});\n\n/** A plain splice, with the caret left where the inserted text ends. */\nconst plain = (start: number, end: number, text: string): Edit => ({\n splice: { start, end, text },\n select: { anchor: start + text.length, head: start + text.length },\n});\n\n/**\n * The edit a keystroke produces, or null to let the caller decline the key.\n *\n * Null is a real answer and not a failure: Tab outside a list declines so focus\n * can leave the editor, which is what makes the WCAG 2.1.2 keyboard trap not\n * happen in the first place.\n */\nexport function resolveKey(ctx: KeyContext, selection: SourceSelection, intent: KeyIntent): Edit | null {\n const { start, end } = span(selection);\n const collapsed = start === end;\n\n switch (intent.kind) {\n case \"insert\":\n return plain(start, end, intent.text);\n\n case \"backspace\": {\n if (!collapsed) return deleteVisible(ctx.projection, start, end);\n /* THE BLOCK RULE COMES FIRST, and it has to: at a block's content start\n the previous visible character is the newline above, so the fallback\n would merge a list item into the line before it and print its marker\n as prose. This is the only way to remove markup that is never shown. */\n const prefix = backspaceBlockPrefix(ctx.source, selection);\n if (prefix) return prefix;\n return deleteVisibleBefore(ctx.projection, ctx.map, start);\n }\n\n case \"delete\": {\n if (!collapsed) return deleteVisible(ctx.projection, start, end);\n return deleteVisibleAfter(ctx.projection, ctx.map, start);\n }\n\n case \"enter\":\n return smartEnter(ctx.source, selection) ?? plain(start, end, \"\\n\");\n\n case \"lineBreak\":\n /* Shift+Enter means \"a line break, not a new block\", so it stays literal\n while plain Enter carries the block structure onto the next line. */\n return plain(start, end, \"\\n\");\n\n case \"tab\":\n return smartTab(ctx.source, selection);\n\n case \"shiftTab\":\n return smartShiftTab(ctx.source, selection);\n }\n}\n"],"names":["span","selection","plain","start","end","text","resolveKey","ctx","intent","collapsed","deleteVisible","prefix","backspaceBlockPrefix","deleteVisibleBefore","deleteVisibleAfter","smartEnter","smartTab","smartShiftTab"],"mappings":";;AA2CA,MAAMA,IAAO,CAACC,OAAgC;AAAA,EAC5C,OAAO,KAAK,IAAIA,EAAU,QAAQA,EAAU,IAAI;AAAA,EAChD,KAAK,KAAK,IAAIA,EAAU,QAAQA,EAAU,IAAI;AAChD,IAGMC,IAAQ,CAACC,GAAeC,GAAaC,OAAwB;AAAA,EACjE,QAAQ,EAAE,OAAAF,GAAO,KAAAC,GAAK,MAAAC,EAAA;AAAA,EACtB,QAAQ,EAAE,QAAQF,IAAQE,EAAK,QAAQ,MAAMF,IAAQE,EAAK,OAAA;AAC5D;AASO,SAASC,EAAWC,GAAiBN,GAA4BO,GAAgC;AACtG,QAAM,EAAE,OAAAL,GAAO,KAAAC,MAAQJ,EAAKC,CAAS,GAC/BQ,IAAYN,MAAUC;AAE5B,UAAQI,EAAO,MAAA;AAAA,IACb,KAAK;AACH,aAAON,EAAMC,GAAOC,GAAKI,EAAO,IAAI;AAAA,IAEtC,KAAK,aAAa;AAChB,UAAI,CAACC,EAAW,QAAOC,EAAcH,EAAI,YAAYJ,GAAOC,CAAG;AAK/D,YAAMO,IAASC,EAAqBL,EAAI,QAAQN,CAAS;AACzD,aAAIU,KACGE,EAAoBN,EAAI,YAAYA,EAAI,KAAKJ,CAAK;AAAA,IAC3D;AAAA,IAEA,KAAK;AACH,aAAKM,IACEK,EAAmBP,EAAI,YAAYA,EAAI,KAAKJ,CAAK,IADjCO,EAAcH,EAAI,YAAYJ,GAAOC,CAAG;AAAA,IAIjE,KAAK;AACH,aAAOW,EAAWR,EAAI,QAAQN,CAAS,KAAKC,EAAMC,GAAOC,GAAK;AAAA,CAAI;AAAA,IAEpE,KAAK;AAGH,aAAOF,EAAMC,GAAOC,GAAK;AAAA,CAAI;AAAA,IAE/B,KAAK;AACH,aAAOY,EAAST,EAAI,QAAQN,CAAS;AAAA,IAEvC,KAAK;AACH,aAAOgB,EAAcV,EAAI,QAAQN,CAAS;AAAA,EAAA;AAEhD;"}
@@ -0,0 +1,180 @@
1
+ function p(n) {
2
+ return n.replace(/([\\`*_[\]<>])/g, "\\$1");
3
+ }
4
+ function u(n, t) {
5
+ return n.getAttribute(t) ?? "";
6
+ }
7
+ function w(n, t) {
8
+ const r = t(n).body;
9
+ return r ? i(r, "").trim().replace(/\n{3,}/g, `
10
+
11
+ `) : "";
12
+ }
13
+ function i(n, t) {
14
+ let e = "";
15
+ for (let r = n.firstChild; r; r = r.nextSibling) e += d(r, t);
16
+ return e;
17
+ }
18
+ function d(n, t) {
19
+ if (n.nodeType === 3)
20
+ return p(n.data.replace(/\s+/g, " "));
21
+ if (n.nodeType !== 1) return "";
22
+ const e = n, r = e.tagName.toLowerCase(), s = () => i(e, t);
23
+ switch (r) {
24
+ case "br":
25
+ return `
26
+ `;
27
+ case "hr":
28
+ return `
29
+
30
+ ---
31
+
32
+ `;
33
+ case "p":
34
+ case "div":
35
+ return `
36
+
37
+ ${s()}
38
+
39
+ `;
40
+ case "h1":
41
+ case "h2":
42
+ case "h3":
43
+ case "h4":
44
+ case "h5":
45
+ case "h6":
46
+ return `
47
+
48
+ ${"#".repeat(Number(r[1]))} ${s()}
49
+
50
+ `;
51
+ /* AN INLINE TAG WRAPPING BLOCKS IS A CONTAINER, not emphasis. Google Docs
52
+ puts the entire clipboard payload inside
53
+ `<b style="font-weight:normal" id="docs-internal-guid-…">`, and taking
54
+ that literally bolds the whole paste and puts the markers on their own
55
+ lines around it. If it holds a paragraph, it is not a mark. */
56
+ case "strong":
57
+ case "b":
58
+ return h(e) ? s() : `**${s()}**`;
59
+ case "em":
60
+ case "i":
61
+ return h(e) ? s() : `*${s()}*`;
62
+ case "del":
63
+ case "s":
64
+ case "strike":
65
+ return h(e) ? s() : `~~${s()}~~`;
66
+ case "code":
67
+ return e.parentElement?.tagName.toLowerCase() === "pre" ? e.textContent ?? "" : g(e.textContent ?? "");
68
+ case "pre":
69
+ return `
70
+
71
+ \`\`\`
72
+ ${(e.textContent ?? "").replace(/\n+$/, "")}
73
+ \`\`\`
74
+
75
+ `;
76
+ case "blockquote":
77
+ return `
78
+
79
+ ${i(e, t).trim().replace(/\n{3,}/g, `
80
+
81
+ `).split(`
82
+ `).map((o) => `> ${o}`).join(`
83
+ `)}
84
+
85
+ `;
86
+ case "a": {
87
+ const o = u(e, "href"), c = s();
88
+ return o ? `[${c}](${o})` : c;
89
+ }
90
+ case "img": {
91
+ const o = u(e, "src"), c = u(e, "alt");
92
+ return o ? `![${c}](${o})` : "";
93
+ }
94
+ case "ul":
95
+ case "ol":
96
+ return `
97
+
98
+ ${b(e, t, r === "ol")}
99
+
100
+ `;
101
+ case "li":
102
+ return `
103
+ ${t}- ${s().trim()}`;
104
+ case "table":
105
+ return `
106
+
107
+ ${y(e)}
108
+
109
+ `;
110
+ case "script":
111
+ case "style":
112
+ case "head":
113
+ return "";
114
+ case "span":
115
+ return m(e, s());
116
+ default:
117
+ return s();
118
+ }
119
+ }
120
+ function m(n, t) {
121
+ const e = u(n, "style").toLowerCase();
122
+ if (!e) return t;
123
+ let r = t;
124
+ /text-decoration[^;]*line-through/.test(e) && (r = `~~${r}~~`), /font-style\s*:\s*italic/.test(e) && (r = `*${r}*`);
125
+ const s = /font-weight\s*:\s*([a-z0-9]+)/.exec(e);
126
+ if (s) {
127
+ const o = s[1];
128
+ (o === "bold" || o === "bolder" || Number(o) >= 600) && (r = `**${r}**`);
129
+ }
130
+ return r;
131
+ }
132
+ const $ = /* @__PURE__ */ new Set(["p", "div", "h1", "h2", "h3", "h4", "h5", "h6", "ul", "ol", "li", "table", "blockquote", "pre", "hr"]);
133
+ function h(n) {
134
+ for (let t = n.firstChild; t; t = t.nextSibling)
135
+ if (t.nodeType === 1 && $.has(t.tagName.toLowerCase())) return !0;
136
+ return !1;
137
+ }
138
+ function g(n) {
139
+ const t = (n.match(/`+/g) ?? []).reduce((s, o) => Math.max(s, o.length), 0), e = "`".repeat(t + 1), r = n.startsWith("`") || n.endsWith("`") ? " " : "";
140
+ return `${e}${r}${n}${r}${e}`;
141
+ }
142
+ function b(n, t, e) {
143
+ const r = [];
144
+ let s = Number(n.getAttribute("start") ?? "1") || 1;
145
+ for (let o = n.firstChild; o; o = o.nextSibling) {
146
+ if (o.nodeType !== 1 || o.tagName.toLowerCase() !== "li") continue;
147
+ const c = e ? `${s++}. ` : "- ", l = t + " ".repeat(c.length), a = i(o, "").trim().replace(/\n{2,}/g, `
148
+ `);
149
+ r.push(`${t}${c}${a.split(`
150
+ `).join(`
151
+ ${l}`)}`);
152
+ }
153
+ return r.join(`
154
+ `);
155
+ }
156
+ function y(n) {
157
+ const t = [];
158
+ for (const l of Array.from(n.querySelectorAll("tr"))) {
159
+ const a = Array.from(l.querySelectorAll("th, td")).map(
160
+ (f) => (
161
+ /* A pipe inside a cell would end the cell, and a newline would end the
162
+ row — both have to go, and there is no escape for the second. */
163
+ i(f, "").replace(/\|/g, "\\|").replace(/\s*\n\s*/g, " ").trim()
164
+ )
165
+ );
166
+ a.length && t.push(a);
167
+ }
168
+ if (!t.length) return "";
169
+ const e = Math.max(...t.map((l) => l.length)), r = (l) => {
170
+ const a = l.slice(0, e);
171
+ for (; a.length < e; ) a.push("");
172
+ return `| ${a.join(" | ")} |`;
173
+ }, s = n.querySelector("th") !== null, o = s ? t[0] : Array.from({ length: e }, () => ""), c = s ? t.slice(1) : t;
174
+ return [r(o), `| ${Array.from({ length: e }, () => "---").join(" | ")} |`, ...c.map(r)].join(`
175
+ `);
176
+ }
177
+ export {
178
+ w as htmlFragmentToMarkdown
179
+ };
180
+ //# sourceMappingURL=paste.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paste.js","sources":["../../../src/lib/markdown/paste.ts"],"sourcesContent":["/* ============================================================================\n PASTE — the ONE place HTML becomes markdown, and it is a fragment.\n\n ARCH-1 struck the document-wide `htmlToMarkdown` — 407 lines, the largest new\n module on NEXT-4's mapping — because a DOM-to-markdown leg is lossy by nature\n and every serializer disaster in the research belongs to it. That decision\n stands and this does not weaken it. The difference is total:\n\n - A document serializer runs on EVERY EDIT, over text the user did not\n touch. That is what reformats a whole file because someone fixed a typo,\n and it is what made Obsidian's version-control users revolt.\n - This runs ONCE, on bytes that came from OUTSIDE the document, at the\n user's explicit request. There is no \"unchanged region\" to preserve\n because none of it was ever in the document.\n\n Pasting rich HTML as its literal source would be worse than either. So the\n conversion exists, scoped as tightly as it can be, and it is allowed to be\n imperfect in a way the document model is not.\n\n WHAT IS DELIBERATELY NOT HERE: any dependency on the projection, the surface\n or the DOM the editor owns. It takes an HTML string, parses it in an inert\n document, and returns markdown.\n ========================================================================= */\n\n/** Characters that would change a document's meaning if pasted raw. */\nfunction escapeText(text: string): string {\n /* Only the characters that START something. Escaping every punctuation mark\n is what makes pasted prose unreadable in source view, and CommonMark only\n gives these meaning at a position where they could open a construct. */\n return text.replace(/([\\\\`*_[\\]<>])/g, \"\\\\$1\");\n}\n\nfunction attr(element: Element, name: string): string {\n return element.getAttribute(name) ?? \"\";\n}\n\n/**\n * Converts one pasted HTML fragment to markdown.\n *\n * `parser` is injected so this stays testable and so it never reaches for a\n * global — the editor passes its own document, and a test passes whatever it\n * has. A module that grabs `window` is a module that cannot be tested without\n * one.\n */\nexport function htmlFragmentToMarkdown(html: string, parse: (html: string) => Document): string {\n const document = parse(html);\n const body = document.body;\n if (!body) return \"\";\n const out = convertChildren(body, \"\").trim();\n /* Collapse runs of three or more newlines: nested block elements each add\n their own separation, and the result is never meant to be a blank page. */\n return out.replace(/\\n{3,}/g, \"\\n\\n\");\n}\n\nfunction convertChildren(node: Node, indent: string): string {\n let out = \"\";\n for (let child = node.firstChild; child; child = child.nextSibling) out += convert(child, indent);\n return out;\n}\n\nfunction convert(node: Node, indent: string): string {\n if (node.nodeType === 3) {\n /* Whitespace between block elements is layout, not content — HTML collapses\n it and so must this, or every paste arrives with the source's own\n indentation baked into the prose. */\n return escapeText((node as Text).data.replace(/\\s+/g, \" \"));\n }\n if (node.nodeType !== 1) return \"\";\n\n const element = node as Element;\n const tag = element.tagName.toLowerCase();\n const inner = () => convertChildren(element, indent);\n\n switch (tag) {\n case \"br\":\n return \"\\n\";\n case \"hr\":\n return \"\\n\\n---\\n\\n\";\n case \"p\":\n case \"div\":\n return `\\n\\n${inner()}\\n\\n`;\n case \"h1\":\n case \"h2\":\n case \"h3\":\n case \"h4\":\n case \"h5\":\n case \"h6\":\n return `\\n\\n${\"#\".repeat(Number(tag[1]))} ${inner()}\\n\\n`;\n /* AN INLINE TAG WRAPPING BLOCKS IS A CONTAINER, not emphasis. Google Docs\n puts the entire clipboard payload inside\n `<b style=\"font-weight:normal\" id=\"docs-internal-guid-…\">`, and taking\n that literally bolds the whole paste and puts the markers on their own\n lines around it. If it holds a paragraph, it is not a mark. */\n case \"strong\":\n case \"b\":\n return wrapsBlocks(element) ? inner() : `**${inner()}**`;\n case \"em\":\n case \"i\":\n return wrapsBlocks(element) ? inner() : `*${inner()}*`;\n case \"del\":\n case \"s\":\n case \"strike\":\n return wrapsBlocks(element) ? inner() : `~~${inner()}~~`;\n case \"code\":\n /* Inside a `<pre>` the parent handles the fence; a bare `<code>` is a\n span. Backticks in the content need a longer fence, which is the one\n piece of CommonMark subtlety worth honouring here. */\n if (element.parentElement?.tagName.toLowerCase() === \"pre\") return element.textContent ?? \"\";\n return spanCode(element.textContent ?? \"\");\n case \"pre\": {\n const text = element.textContent ?? \"\";\n return `\\n\\n\\`\\`\\`\\n${text.replace(/\\n+$/, \"\")}\\n\\`\\`\\`\\n\\n`;\n }\n case \"blockquote\":\n return `\\n\\n${convertChildren(element, indent)\n .trim()\n /* Collapsed BEFORE prefixing: each inner block contributes its own\n blank lines, and prefixing first turns three of them into three\n `> ` lines — which is a quote with holes in it. */\n .replace(/\\n{3,}/g, \"\\n\\n\")\n .split(\"\\n\")\n .map((line) => `> ${line}`)\n .join(\"\\n\")}\\n\\n`;\n case \"a\": {\n const href = attr(element, \"href\");\n const label = inner();\n return href ? `[${label}](${href})` : label;\n }\n case \"img\": {\n const src = attr(element, \"src\");\n const alt = attr(element, \"alt\");\n return src ? `![${alt}](${src})` : \"\";\n }\n case \"ul\":\n case \"ol\":\n return `\\n\\n${listItems(element, indent, tag === \"ol\")}\\n\\n`;\n case \"li\":\n /* Reached only for a stray `<li>` outside a list; the list case handles\n the normal one, because only it knows the numbering. */\n return `\\n${indent}- ${inner().trim()}`;\n case \"table\":\n return `\\n\\n${convertTable(element)}\\n\\n`;\n case \"script\":\n case \"style\":\n case \"head\":\n /* Never their text. A pasted `<style>` block would arrive as a paragraph\n of CSS, which is the least useful possible reading of it. */\n return \"\";\n case \"span\":\n /* GOOGLE DOCS AND WORD DO NOT EMIT `<strong>`. Docs spells bold as\n `<span style=\"font-weight:700\">` and italic as `font-style:italic`, so\n reading only the semantic tags loses every mark in a paste from the two\n applications people paste from most. This is a heuristic and it is the\n standard one; it fires only on an explicit inline style. */\n return styled(element, inner());\n default:\n return inner();\n }\n}\n\n/** Marks a span carries as inline CSS rather than as tags. */\nfunction styled(element: Element, inner: string): string {\n const style = attr(element, \"style\").toLowerCase();\n if (!style) return inner;\n let out = inner;\n if (/text-decoration[^;]*line-through/.test(style)) out = `~~${out}~~`;\n if (/font-style\\s*:\\s*italic/.test(style)) out = `*${out}*`;\n /* `font-weight: normal` is how Docs marks its OWN wrapper as not-bold, so a\n numeric threshold is not enough on its own — the keyword has to lose. */\n const weight = /font-weight\\s*:\\s*([a-z0-9]+)/.exec(style);\n if (weight) {\n const value = weight[1];\n const bold = value === \"bold\" || value === \"bolder\" || Number(value) >= 600;\n if (bold) out = `**${out}**`;\n }\n return out;\n}\n\nconst BLOCK_TAGS = new Set([\"p\", \"div\", \"h1\", \"h2\", \"h3\", \"h4\", \"h5\", \"h6\", \"ul\", \"ol\", \"li\", \"table\", \"blockquote\", \"pre\", \"hr\"]);\n\n/** Whether an inline tag is really being used as a container. */\nfunction wrapsBlocks(element: Element): boolean {\n for (let child = element.firstChild; child; child = child.nextSibling) {\n if (child.nodeType === 1 && BLOCK_TAGS.has((child as Element).tagName.toLowerCase())) return true;\n }\n return false;\n}\n\nfunction spanCode(text: string): string {\n const longest = (text.match(/`+/g) ?? []).reduce((max, run) => Math.max(max, run.length), 0);\n const fence = \"`\".repeat(longest + 1);\n const pad = text.startsWith(\"`\") || text.endsWith(\"`\") ? \" \" : \"\";\n return `${fence}${pad}${text}${pad}${fence}`;\n}\n\nfunction listItems(list: Element, indent: string, ordered: boolean): string {\n const items: string[] = [];\n let index = Number(list.getAttribute(\"start\") ?? \"1\") || 1;\n for (let child = list.firstChild; child; child = child.nextSibling) {\n if (child.nodeType !== 1 || (child as Element).tagName.toLowerCase() !== \"li\") continue;\n const marker = ordered ? `${index++}. ` : \"- \";\n const nested = indent + \" \".repeat(marker.length);\n /* Converted at NO indent, then indented once by the join below. Passing\n `nested` down as well double-indents every nested list — a two-level list\n came out four spaces deep, which markdown reads as a code block. */\n const body = convertChildren(child as Element, \"\").trim().replace(/\\n{2,}/g, \"\\n\");\n /* Continuation lines line up under the marker, which is what makes a nested\n list a nested list rather than a new one. */\n items.push(`${indent}${marker}${body.split(\"\\n\").join(`\\n${nested}`)}`);\n }\n return items.join(\"\\n\");\n}\n\nfunction convertTable(table: Element): string {\n const rows: string[][] = [];\n for (const row of Array.from(table.querySelectorAll(\"tr\"))) {\n const cells = Array.from(row.querySelectorAll(\"th, td\")).map((cell) =>\n /* A pipe inside a cell would end the cell, and a newline would end the\n row — both have to go, and there is no escape for the second. */\n convertChildren(cell, \"\").replace(/\\|/g, \"\\\\|\").replace(/\\s*\\n\\s*/g, \" \").trim(),\n );\n if (cells.length) rows.push(cells);\n }\n if (!rows.length) return \"\";\n\n const width = Math.max(...rows.map((row) => row.length));\n const pad = (row: string[]) => {\n const copy = row.slice(0, width);\n while (copy.length < width) copy.push(\"\");\n return `| ${copy.join(\" | \")} |`;\n };\n const hasHeader = table.querySelector(\"th\") !== null;\n const header = hasHeader ? rows[0] : Array.from({ length: width }, () => \"\");\n const body = hasHeader ? rows.slice(1) : rows;\n return [pad(header), `| ${Array.from({ length: width }, () => \"---\").join(\" | \")} |`, ...body.map(pad)].join(\"\\n\");\n}\n"],"names":["escapeText","text","attr","element","name","htmlFragmentToMarkdown","html","parse","body","convertChildren","node","indent","out","child","convert","tag","inner","wrapsBlocks","spanCode","line","href","label","src","alt","listItems","convertTable","styled","style","weight","value","BLOCK_TAGS","longest","max","run","fence","pad","list","ordered","items","index","marker","nested","table","rows","row","cells","cell","width","copy","hasHeader","header"],"mappings":"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"}