@pstdio/ui 0.25.0 → 0.35.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 (607) hide show
  1. package/README.md +8 -1
  2. package/dist/EquationComponent-DDd5UoIP.js +65 -0
  3. package/dist/EquationComponent-DDd5UoIP.js.map +1 -0
  4. package/dist/MermaidComponent-DGDnQ6pb.js +90 -0
  5. package/dist/MermaidComponent-DGDnQ6pb.js.map +1 -0
  6. package/dist/browser-storage-C_ipoNwP.js +37 -0
  7. package/dist/browser-storage-C_ipoNwP.js.map +1 -0
  8. package/dist/chat-ui.d.ts +688 -2
  9. package/dist/chat-ui.js +3272 -2763
  10. package/dist/chat-ui.js.map +1 -1
  11. package/dist/data-table-stats-row-DNJG8tLZ.js +415 -0
  12. package/dist/data-table-stats-row-DNJG8tLZ.js.map +1 -0
  13. package/dist/data-table.d.ts +143 -2
  14. package/dist/data-table.js +1216 -1188
  15. package/dist/data-table.js.map +1 -1
  16. package/dist/diff-bubble-DZsarmSG.js +61 -0
  17. package/dist/diff-bubble-DZsarmSG.js.map +1 -0
  18. package/dist/diff-drawer-45rpk3aq.js +776 -0
  19. package/dist/diff-drawer-45rpk3aq.js.map +1 -0
  20. package/dist/diff-editor-CGpeyoCE.js +124 -0
  21. package/dist/diff-editor-CGpeyoCE.js.map +1 -0
  22. package/dist/diff-size-Dydn_Uw5.js +61 -0
  23. package/dist/diff-size-Dydn_Uw5.js.map +1 -0
  24. package/dist/diff-viewer-hGkaF_zW.js +558 -0
  25. package/dist/diff-viewer-hGkaF_zW.js.map +1 -0
  26. package/dist/diff.d.ts +128 -2
  27. package/dist/diff.js +163 -1300
  28. package/dist/diff.js.map +1 -1
  29. package/dist/empty-state-3mVV_pV-.js +38 -0
  30. package/dist/empty-state-3mVV_pV-.js.map +1 -0
  31. package/dist/file-change-badge-0QFNv82B.js +64 -0
  32. package/dist/file-change-badge-0QFNv82B.js.map +1 -0
  33. package/dist/index-BfFLdci8.d.ts +189 -0
  34. package/dist/index-Dd6e8lU_.d.ts +61 -0
  35. package/dist/index-DlmvvQ6x.d.ts +143 -0
  36. package/dist/index.d.ts +1508 -41
  37. package/dist/index.js +3167 -3173
  38. package/dist/index.js.map +1 -1
  39. package/dist/kanban-renderer.d.ts +337 -2
  40. package/dist/kanban-renderer.js +1413 -1084
  41. package/dist/kanban-renderer.js.map +1 -1
  42. package/dist/list-row-De9R2zKU.js +1008 -0
  43. package/dist/list-row-De9R2zKU.js.map +1 -0
  44. package/dist/mermaid-renderer-DImi0fDp.js +553 -0
  45. package/dist/mermaid-renderer-DImi0fDp.js.map +1 -0
  46. package/dist/mermaid.d.ts +12 -2
  47. package/dist/mermaid.js +2 -5
  48. package/dist/monaco-browser-CLRPSE4-.js +14 -0
  49. package/dist/monaco-browser-CLRPSE4-.js.map +1 -0
  50. package/dist/param-editor-IJzw1cA2.js +225 -0
  51. package/dist/param-editor-IJzw1cA2.js.map +1 -0
  52. package/dist/param-editor-field-DscIjv8s.js +2368 -0
  53. package/dist/param-editor-field-DscIjv8s.js.map +1 -0
  54. package/dist/param-editor.d.ts +407 -0
  55. package/dist/param-editor.js +3 -0
  56. package/dist/prism-pSHJejZx.js +646 -0
  57. package/dist/prism-pSHJejZx.js.map +1 -0
  58. package/dist/radio-CiFrDN6O.js +54 -0
  59. package/dist/radio-CiFrDN6O.js.map +1 -0
  60. package/dist/resource-badge-95WPVlZf.d.ts +76 -0
  61. package/dist/rich-text-DtQpHBlX.js +7018 -0
  62. package/dist/rich-text-DtQpHBlX.js.map +1 -0
  63. package/dist/rich-text.d.ts +3 -2
  64. package/dist/rich-text.js +2 -265
  65. package/dist/rolldown-runtime-Dy4uBu1J.js +11 -0
  66. package/dist/scroll-area-Cr1lNXAr.js +100 -0
  67. package/dist/scroll-area-Cr1lNXAr.js.map +1 -0
  68. package/dist/slider-hwHYe98I.js +423 -0
  69. package/dist/slider-hwHYe98I.js.map +1 -0
  70. package/dist/style.css +2 -1
  71. package/dist/terminal.d.ts +203 -2
  72. package/dist/terminal.js +324 -357
  73. package/dist/terminal.js.map +1 -1
  74. package/dist/theme-kSkOHzbV.js +2852 -0
  75. package/dist/theme-kSkOHzbV.js.map +1 -0
  76. package/dist/theme-preference-pzfuK5cH.js +101 -0
  77. package/dist/theme-preference-pzfuK5cH.js.map +1 -0
  78. package/dist/theme.d.ts +3 -2
  79. package/dist/theme.js +2 -15
  80. package/dist/tree-list-BUfDQz3v.js +1449 -0
  81. package/dist/tree-list-BUfDQz3v.js.map +1 -0
  82. package/dist/types-yjKBk07w.d.ts +161 -0
  83. package/dist/workspace-badge-9g78pXHS.js +245 -0
  84. package/dist/workspace-badge-9g78pXHS.js.map +1 -0
  85. package/dist/workspace-badge-CkJ_jTQw.d.ts +75 -0
  86. package/dist-monaco/assets/codicon-ngg6Pgfi.ttf +0 -0
  87. package/dist-monaco/assets/css.worker-DFdt6_zu.js +89 -0
  88. package/dist-monaco/assets/editor.worker-O-CH8JUO.js +26 -0
  89. package/dist-monaco/assets/html.worker-JUzsMP-j.js +502 -0
  90. package/dist-monaco/assets/json.worker-B4dEhy0e.js +58 -0
  91. package/dist-monaco/assets/ts.worker-CmEKzkmF.js +67734 -0
  92. package/dist-monaco/monaco.css +1 -0
  93. package/dist-monaco/monaco.js +1201 -0
  94. package/package.json +30 -12
  95. package/dist/EquationComponent-DeDYHvqY.js +0 -62
  96. package/dist/EquationComponent-DeDYHvqY.js.map +0 -1
  97. package/dist/MermaidComponent-BVdDqDRU.js +0 -60
  98. package/dist/MermaidComponent-BVdDqDRU.js.map +0 -1
  99. package/dist/browser-storage-DPtOQJx0.js +0 -127
  100. package/dist/browser-storage-DPtOQJx0.js.map +0 -1
  101. package/dist/components/activity/activity-avatar.d.ts +0 -9
  102. package/dist/components/activity/activity-comment.d.ts +0 -27
  103. package/dist/components/activity/activity-composer.d.ts +0 -18
  104. package/dist/components/activity/activity-event.d.ts +0 -12
  105. package/dist/components/activity/activity-root.d.ts +0 -15
  106. package/dist/components/activity/activity-timeline.d.ts +0 -6
  107. package/dist/components/activity/activity.types.d.ts +0 -5
  108. package/dist/components/activity/index.d.ts +0 -27
  109. package/dist/components/activity/resource-activity-feed.d.ts +0 -58
  110. package/dist/components/chat-ui/components/ai-conversation.d.ts +0 -603
  111. package/dist/components/chat-ui/components/ai-message.d.ts +0 -91
  112. package/dist/components/chat-ui/components/ai-response.d.ts +0 -5
  113. package/dist/components/chat-ui/components/approval-prompt.d.ts +0 -8
  114. package/dist/components/chat-ui/components/attachment-list.d.ts +0 -23
  115. package/dist/components/chat-ui/components/auto-scroll.d.ts +0 -37
  116. package/dist/components/chat-ui/components/chat-input-actions.d.ts +0 -13
  117. package/dist/components/chat-ui/components/chat-input-attachments.d.ts +0 -12
  118. package/dist/components/chat-ui/components/chat-input-question-prompt.d.ts +0 -36
  119. package/dist/components/chat-ui/components/chat-input.d.ts +0 -31
  120. package/dist/components/chat-ui/components/chat-message-animation.d.ts +0 -22
  121. package/dist/components/chat-ui/components/chat-message-list-items.d.ts +0 -17
  122. package/dist/components/chat-ui/components/chat-message-list.d.ts +0 -12
  123. package/dist/components/chat-ui/components/chat-panel-sticky-user-message.d.ts +0 -13
  124. package/dist/components/chat-ui/components/chat-panel.d.ts +0 -45
  125. package/dist/components/chat-ui/components/chat-skeleton.d.ts +0 -1
  126. package/dist/components/chat-ui/components/composer-constants.d.ts +0 -1
  127. package/dist/components/chat-ui/components/conversation-browse.d.ts +0 -22
  128. package/dist/components/chat-ui/components/message-action-panel.d.ts +0 -10
  129. package/dist/components/chat-ui/components/message-parts-renderer.d.ts +0 -13
  130. package/dist/components/chat-ui/components/message-types.d.ts +0 -116
  131. package/dist/components/chat-ui/components/model-swap-separator.d.ts +0 -5
  132. package/dist/components/chat-ui/components/queued-follow-up-list-state.d.ts +0 -4
  133. package/dist/components/chat-ui/components/queued-follow-up-list.d.ts +0 -11
  134. package/dist/components/chat-ui/components/send-button.d.ts +0 -7
  135. package/dist/components/chat-ui/components/timeline-title.d.ts +0 -6
  136. package/dist/components/chat-ui/components/timeline-tool-blocks.d.ts +0 -14
  137. package/dist/components/chat-ui/components/timeline.d.ts +0 -113
  138. package/dist/components/chat-ui/components/tool-invocation-timeline.d.ts +0 -8
  139. package/dist/components/chat-ui/components/working-indicator.d.ts +0 -9
  140. package/dist/components/chat-ui/components/workspace-hub.d.ts +0 -19
  141. package/dist/components/chat-ui/index.d.ts +0 -19
  142. package/dist/components/chat-ui/mocks/library/index.d.ts +0 -10
  143. package/dist/components/chat-ui/performance/chat-mount-metrics.d.ts +0 -37
  144. package/dist/components/chat-ui/performance/chat-panel.perf.d.ts +0 -18
  145. package/dist/components/chat-ui/performance/chat-performance-fixtures.d.ts +0 -28
  146. package/dist/components/chat-ui/performance/chat-performance-panel.d.ts +0 -23
  147. package/dist/components/chat-ui/performance/chat-performance-story-utils.d.ts +0 -30
  148. package/dist/components/chat-ui/tool-rendering/apply-patch-renderer.d.ts +0 -2
  149. package/dist/components/chat-ui/tool-rendering/build-timeline.d.ts +0 -13
  150. package/dist/components/chat-ui/tool-rendering/default-renderers.d.ts +0 -13
  151. package/dist/components/chat-ui/tool-rendering/edit-renderer.d.ts +0 -2
  152. package/dist/components/chat-ui/tool-rendering/index.d.ts +0 -3
  153. package/dist/components/chat-ui/tool-rendering/question-prompt.d.ts +0 -9
  154. package/dist/components/chat-ui/tool-rendering/question-renderer.d.ts +0 -10
  155. package/dist/components/chat-ui/tool-rendering/shared.d.ts +0 -53
  156. package/dist/components/chat-ui/tool-rendering/standard-renderers.d.ts +0 -7
  157. package/dist/components/chat-ui/tool-rendering/todowrite-renderer.d.ts +0 -10
  158. package/dist/components/chat-ui/tool-rendering/types.d.ts +0 -12
  159. package/dist/components/chat-ui/utils/diff.d.ts +0 -21
  160. package/dist/components/chat-ui/utils/editor-state.d.ts +0 -1
  161. package/dist/components/chat-ui/utils/get-icon.d.ts +0 -36
  162. package/dist/components/chat-ui/utils/tool-name.d.ts +0 -2
  163. package/dist/components/command-palette/index.d.ts +0 -4
  164. package/dist/components/command-palette/palette-filter.d.ts +0 -23
  165. package/dist/components/command-palette/palette-list.d.ts +0 -11
  166. package/dist/components/command-palette/palette-shortcut.d.ts +0 -12
  167. package/dist/components/command-palette/palette.d.ts +0 -48
  168. package/dist/components/data-table/build-columns.d.ts +0 -16
  169. package/dist/components/data-table/categorical-color-cell.d.ts +0 -8
  170. package/dist/components/data-table/color-cell-style.d.ts +0 -13
  171. package/dist/components/data-table/color-scale-cell.d.ts +0 -7
  172. package/dist/components/data-table/data-table-column-menu.d.ts +0 -17
  173. package/dist/components/data-table/data-table-header.d.ts +0 -12
  174. package/dist/components/data-table/data-table-row-display.d.ts +0 -11
  175. package/dist/components/data-table/data-table-skeleton.d.ts +0 -13
  176. package/dist/components/data-table/data-table-stat-chart.d.ts +0 -21
  177. package/dist/components/data-table/data-table-state.d.ts +0 -27
  178. package/dist/components/data-table/data-table-stats-row.d.ts +0 -11
  179. package/dist/components/data-table/data-table-stats.d.ts +0 -19
  180. package/dist/components/data-table/data-table-table-parts.d.ts +0 -22
  181. package/dist/components/data-table/data-table.d.ts +0 -2
  182. package/dist/components/data-table/data-table.story-descriptions.d.ts +0 -6
  183. package/dist/components/data-table/data-table.story-fixtures.d.ts +0 -6
  184. package/dist/components/data-table/edit-mode-data-table-body.d.ts +0 -30
  185. package/dist/components/data-table/edit-mode-data-table-cell.d.ts +0 -16
  186. package/dist/components/data-table/edit-mode-data-table-editors.d.ts +0 -19
  187. package/dist/components/data-table/edit-mode-data-table-header.d.ts +0 -24
  188. package/dist/components/data-table/edit-mode-data-table-selection.d.ts +0 -12
  189. package/dist/components/data-table/edit-mode-data-table.d.ts +0 -2
  190. package/dist/components/data-table/edit-mode-story.d.ts +0 -5
  191. package/dist/components/data-table/friendly-json-display.d.ts +0 -31
  192. package/dist/components/data-table/helpers.d.ts +0 -10
  193. package/dist/components/data-table/index.d.ts +0 -7
  194. package/dist/components/data-table/json-cell.d.ts +0 -6
  195. package/dist/components/data-table/pagination-footer.d.ts +0 -11
  196. package/dist/components/data-table/selection-toolbar.d.ts +0 -11
  197. package/dist/components/data-table/types.d.ts +0 -117
  198. package/dist/components/diff-viewer/build-changed-files-tree.d.ts +0 -4
  199. package/dist/components/diff-viewer/code-editor.d.ts +0 -43
  200. package/dist/components/diff-viewer/diff-bubble.d.ts +0 -14
  201. package/dist/components/diff-viewer/diff-card-body.d.ts +0 -60
  202. package/dist/components/diff-viewer/diff-card-content.d.ts +0 -23
  203. package/dist/components/diff-viewer/diff-card-load-state.d.ts +0 -9
  204. package/dist/components/diff-viewer/diff-card.d.ts +0 -46
  205. package/dist/components/diff-viewer/diff-drawer-empty-state.d.ts +0 -1
  206. package/dist/components/diff-viewer/diff-drawer-height.d.ts +0 -10
  207. package/dist/components/diff-viewer/diff-drawer-scroll.d.ts +0 -28
  208. package/dist/components/diff-viewer/diff-drawer.d.ts +0 -29
  209. package/dist/components/diff-viewer/diff-editor.d.ts +0 -20
  210. package/dist/components/diff-viewer/diff-size.d.ts +0 -16
  211. package/dist/components/diff-viewer/diff-view-adapter.d.ts +0 -27
  212. package/dist/components/diff-viewer/diff-viewer-options-menu.d.ts +0 -16
  213. package/dist/components/diff-viewer/diff-viewer.d.ts +0 -14
  214. package/dist/components/diff-viewer/diff-viewer.store.d.ts +0 -21
  215. package/dist/components/diff-viewer/file-change-badge.d.ts +0 -3
  216. package/dist/components/diff-viewer/file-list-panel.d.ts +0 -18
  217. package/dist/components/diff-viewer/index.d.ts +0 -9
  218. package/dist/components/diff-viewer/monaco-browser.d.ts +0 -1
  219. package/dist/components/diff-viewer/types.d.ts +0 -13
  220. package/dist/components/diff-viewer/use-selected-diff-scroll.d.ts +0 -23
  221. package/dist/components/file-browser/column-file-browser.d.ts +0 -20
  222. package/dist/components/internal/performance-panel.d.ts +0 -40
  223. package/dist/components/internal/style-guide.d.ts +0 -14
  224. package/dist/components/internal/token-editor-controls.d.ts +0 -8
  225. package/dist/components/internal/token-editor-data.d.ts +0 -40
  226. package/dist/components/internal/token-editor-state.d.ts +0 -22
  227. package/dist/components/kanban-renderer/collection-badge.d.ts +0 -7
  228. package/dist/components/kanban-renderer/display-menu.d.ts +0 -16
  229. package/dist/components/kanban-renderer/filter-menu.d.ts +0 -12
  230. package/dist/components/kanban-renderer/index.d.ts +0 -19
  231. package/dist/components/kanban-renderer/kanban-renderer-attribute-badge.d.ts +0 -7
  232. package/dist/components/kanban-renderer/kanban-renderer-badge-helpers.d.ts +0 -46
  233. package/dist/components/kanban-renderer/kanban-renderer-board-column-header.d.ts +0 -8
  234. package/dist/components/kanban-renderer/kanban-renderer-board-group-section.d.ts +0 -17
  235. package/dist/components/kanban-renderer/kanban-renderer-board-move.d.ts +0 -21
  236. package/dist/components/kanban-renderer/kanban-renderer-board.d.ts +0 -49
  237. package/dist/components/kanban-renderer/kanban-renderer-card.d.ts +0 -17
  238. package/dist/components/kanban-renderer/kanban-renderer-content.d.ts +0 -27
  239. package/dist/components/kanban-renderer/kanban-renderer-create-dialog.d.ts +0 -12
  240. package/dist/components/kanban-renderer/kanban-renderer-create-field.d.ts +0 -10
  241. package/dist/components/kanban-renderer/kanban-renderer-enum-helpers.d.ts +0 -10
  242. package/dist/components/kanban-renderer/kanban-renderer-grouping.d.ts +0 -23
  243. package/dist/components/kanban-renderer/kanban-renderer-helpers.d.ts +0 -58
  244. package/dist/components/kanban-renderer/kanban-renderer-list-items.d.ts +0 -25
  245. package/dist/components/kanban-renderer/kanban-renderer-list.d.ts +0 -43
  246. package/dist/components/kanban-renderer/kanban-renderer-story-fixtures.d.ts +0 -14
  247. package/dist/components/kanban-renderer/kanban-renderer-toolbar.d.ts +0 -15
  248. package/dist/components/kanban-renderer/kanban-renderer-view-bar.d.ts +0 -14
  249. package/dist/components/kanban-renderer/kanban-renderer-views.d.ts +0 -12
  250. package/dist/components/kanban-renderer/kanban-renderer.d.ts +0 -43
  251. package/dist/components/kanban-renderer/types.d.ts +0 -159
  252. package/dist/components/kanban-renderer/use-kanban-renderer-store.d.ts +0 -78
  253. package/dist/components/kanban-renderer/use-resolved-attributes.d.ts +0 -14
  254. package/dist/components/layout/header.d.ts +0 -7
  255. package/dist/components/layout/horizontal-menu-stack.d.ts +0 -6
  256. package/dist/components/layout/index.d.ts +0 -8
  257. package/dist/components/layout/item-section.d.ts +0 -11
  258. package/dist/components/layout/panel-header.constants.d.ts +0 -3
  259. package/dist/components/layout/resizable-split-layout.d.ts +0 -22
  260. package/dist/components/layout/resizable-split-layout.geometry.d.ts +0 -56
  261. package/dist/components/layout/resizable-split-layout.handle.d.ts +0 -25
  262. package/dist/components/layout/resizable-split-layout.panels.d.ts +0 -29
  263. package/dist/components/layout/resizable-split-layout.root-size.d.ts +0 -3
  264. package/dist/components/list-row/list-row-actions.d.ts +0 -11
  265. package/dist/components/list-row/list-row-chrome.d.ts +0 -11
  266. package/dist/components/list-row/list-row-content.d.ts +0 -17
  267. package/dist/components/list-row/list-row-menu.d.ts +0 -12
  268. package/dist/components/list-row/list-row-root-props.d.ts +0 -34
  269. package/dist/components/list-row/list-row.d.ts +0 -2
  270. package/dist/components/list-row/list-row.types.d.ts +0 -109
  271. package/dist/components/list-row/searchable-action-menu.d.ts +0 -6
  272. package/dist/components/mermaid-renderer/download-png.d.ts +0 -7
  273. package/dist/components/mermaid-renderer/index.d.ts +0 -2
  274. package/dist/components/mermaid-renderer/mermaid-error-state.d.ts +0 -6
  275. package/dist/components/mermaid-renderer/mermaid-fixtures.d.ts +0 -9
  276. package/dist/components/mermaid-renderer/mermaid-fullscreen.d.ts +0 -10
  277. package/dist/components/mermaid-renderer/mermaid-renderer.d.ts +0 -8
  278. package/dist/components/mermaid-renderer/mermaid-svg-view.d.ts +0 -12
  279. package/dist/components/mermaid-renderer/mermaid-toolbar.d.ts +0 -12
  280. package/dist/components/mermaid-renderer/mermaid-zoom.d.ts +0 -6
  281. package/dist/components/mermaid-renderer/svg-data-url.d.ts +0 -6
  282. package/dist/components/mermaid-renderer/use-mermaid-render.d.ts +0 -5
  283. package/dist/components/notification-center/index.d.ts +0 -2
  284. package/dist/components/notification-center/notification-center.d.ts +0 -2
  285. package/dist/components/notification-center/notification-center.types.d.ts +0 -37
  286. package/dist/components/overlays/attached-menu.d.ts +0 -6
  287. package/dist/components/overlays/attached-panel.d.ts +0 -9
  288. package/dist/components/overlays/attachment-chip.d.ts +0 -13
  289. package/dist/components/overlays/bubble-button.d.ts +0 -10
  290. package/dist/components/overlays/bubble-panel.d.ts +0 -18
  291. package/dist/components/overlays/delete-confirmation-modal.d.ts +0 -13
  292. package/dist/components/overlays/dialog-accept-shortcut.d.ts +0 -12
  293. package/dist/components/overlays/index.d.ts +0 -17
  294. package/dist/components/overlays/repo-picker-dialog.d.ts +0 -25
  295. package/dist/components/overlays/resource-context-menu.d.ts +0 -35
  296. package/dist/components/overlays/search-modal-content.d.ts +0 -20
  297. package/dist/components/overlays/searchable-menu-input.d.ts +0 -9
  298. package/dist/components/overlays/searchable-menu.d.ts +0 -65
  299. package/dist/components/param-editor/index.d.ts +0 -31
  300. package/dist/components/param-editor/inputs/action-input.d.ts +0 -14
  301. package/dist/components/param-editor/inputs/anchor-grid-input.d.ts +0 -12
  302. package/dist/components/param-editor/inputs/anchor-grid.d.ts +0 -4
  303. package/dist/components/param-editor/inputs/boolean-input.d.ts +0 -13
  304. package/dist/components/param-editor/inputs/color-input.d.ts +0 -14
  305. package/dist/components/param-editor/inputs/date-input.d.ts +0 -16
  306. package/dist/components/param-editor/inputs/file-upload-input.d.ts +0 -15
  307. package/dist/components/param-editor/inputs/file-upload-value.d.ts +0 -7
  308. package/dist/components/param-editor/inputs/horizontal-text-input.d.ts +0 -13
  309. package/dist/components/param-editor/inputs/markdown-input.d.ts +0 -13
  310. package/dist/components/param-editor/inputs/number-input.d.ts +0 -18
  311. package/dist/components/param-editor/inputs/numeric-value.d.ts +0 -6
  312. package/dist/components/param-editor/inputs/range-input.d.ts +0 -18
  313. package/dist/components/param-editor/inputs/range-value.d.ts +0 -5
  314. package/dist/components/param-editor/inputs/resource-input-chips.d.ts +0 -15
  315. package/dist/components/param-editor/inputs/resource-input.d.ts +0 -20
  316. package/dist/components/param-editor/inputs/segmented-input.d.ts +0 -15
  317. package/dist/components/param-editor/inputs/selection-input.d.ts +0 -27
  318. package/dist/components/param-editor/inputs/selection-menu.d.ts +0 -39
  319. package/dist/components/param-editor/inputs/slider-marks.d.ts +0 -5
  320. package/dist/components/param-editor/inputs/text-input.d.ts +0 -14
  321. package/dist/components/param-editor/inputs/vector-input.d.ts +0 -17
  322. package/dist/components/param-editor/inputs/vector-value.d.ts +0 -7
  323. package/dist/components/param-editor/param-editor-advanced-field.d.ts +0 -14
  324. package/dist/components/param-editor/param-editor-control-fixtures.d.ts +0 -24
  325. package/dist/components/param-editor/param-editor-control-item.d.ts +0 -15
  326. package/dist/components/param-editor/param-editor-control-list.d.ts +0 -5
  327. package/dist/components/param-editor/param-editor-field-label.d.ts +0 -1
  328. package/dist/components/param-editor/param-editor-field.d.ts +0 -13
  329. package/dist/components/param-editor/param-editor-horizontal.d.ts +0 -11
  330. package/dist/components/param-editor/param-editor-inline-group.d.ts +0 -5
  331. package/dist/components/param-editor/param-editor-label.d.ts +0 -7
  332. package/dist/components/param-editor/param-editor-presentation.d.ts +0 -3
  333. package/dist/components/param-editor/param-editor-read-only-field.d.ts +0 -9
  334. package/dist/components/param-editor/param-editor-read-only-value.d.ts +0 -8
  335. package/dist/components/param-editor/param-editor-row.d.ts +0 -17
  336. package/dist/components/param-editor/param-editor-section.d.ts +0 -17
  337. package/dist/components/param-editor/param-editor.d.ts +0 -12
  338. package/dist/components/param-editor/param-editor.types.d.ts +0 -31
  339. package/dist/components/param-editor/resolve-param-value.d.ts +0 -2
  340. package/dist/components/primitives/alert.d.ts +0 -9
  341. package/dist/components/primitives/breadcrumb.d.ts +0 -20
  342. package/dist/components/primitives/checkbox.d.ts +0 -8
  343. package/dist/components/primitives/chip.d.ts +0 -4
  344. package/dist/components/primitives/content-placeholder.d.ts +0 -6
  345. package/dist/components/primitives/empty-state.d.ts +0 -12
  346. package/dist/components/primitives/error-boundary.d.ts +0 -26
  347. package/dist/components/primitives/glyph-icon.d.ts +0 -16
  348. package/dist/components/primitives/icon-color-picker.d.ts +0 -15
  349. package/dist/components/primitives/icon-options.d.ts +0 -301
  350. package/dist/components/primitives/index.d.ts +0 -39
  351. package/dist/components/primitives/info-card.d.ts +0 -12
  352. package/dist/components/primitives/integration-card.d.ts +0 -12
  353. package/dist/components/primitives/number-input.d.ts +0 -6
  354. package/dist/components/primitives/radio.d.ts +0 -8
  355. package/dist/components/primitives/resource-badge.d.ts +0 -64
  356. package/dist/components/primitives/scroll-area.d.ts +0 -17
  357. package/dist/components/primitives/segmented-control.d.ts +0 -20
  358. package/dist/components/primitives/session-indicator.d.ts +0 -15
  359. package/dist/components/primitives/simple-card.d.ts +0 -5
  360. package/dist/components/primitives/slider.d.ts +0 -5
  361. package/dist/components/primitives/switch.d.ts +0 -15
  362. package/dist/components/primitives/tag-swatch.d.ts +0 -10
  363. package/dist/components/primitives/toaster.d.ts +0 -3
  364. package/dist/components/primitives/tooltip.d.ts +0 -11
  365. package/dist/components/primitives/workspace-badge.d.ts +0 -23
  366. package/dist/components/rich-text/collaborative-markdown-editor/awareness-cursors.d.ts +0 -5
  367. package/dist/components/rich-text/collaborative-markdown-editor/collaborative-markdown-editor.d.ts +0 -9
  368. package/dist/components/rich-text/index.d.ts +0 -17
  369. package/dist/components/rich-text/lazy-markdown-editor.d.ts +0 -2
  370. package/dist/components/rich-text/markdown-editor/markdown-editor.d.ts +0 -17
  371. package/dist/components/rich-text/markdown-editor/markdown-table.story-fixture.d.ts +0 -3
  372. package/dist/components/rich-text/markdown-editor/plugins/MarkdownSectionNavigationPlugin.d.ts +0 -8
  373. package/dist/components/rich-text/markdown-editor/plugins/MarkdownSlashCommandPlugin.d.ts +0 -1
  374. package/dist/components/rich-text/markdown-editor/plugins/ReferenceLinkPlugin/ReferenceLinkNode.d.ts +0 -21
  375. package/dist/components/rich-text/markdown-editor/plugins/ReferenceLinkPlugin/ReferenceLinkTransformer.d.ts +0 -2
  376. package/dist/components/rich-text/markdown-editor/plugins/ReferenceLinkPlugin/index.d.ts +0 -2
  377. package/dist/components/rich-text/markdown-editor/plugins/markdown-history-plugin.d.ts +0 -1
  378. package/dist/components/rich-text/markdown-editor/plugins/markdown-section-navigation.d.ts +0 -20
  379. package/dist/components/rich-text/prompt-input/commands.d.ts +0 -2
  380. package/dist/components/rich-text/prompt-input/events.d.ts +0 -2
  381. package/dist/components/rich-text/prompt-input/plugins/CommentPlugin/CommentPlugin.d.ts +0 -1
  382. package/dist/components/rich-text/prompt-input/plugins/CommentPlugin/hooks/useCommentCommands.d.ts +0 -3
  383. package/dist/components/rich-text/prompt-input/plugins/CommentPlugin/hooks/useCommentSchema.d.ts +0 -1
  384. package/dist/components/rich-text/prompt-input/plugins/CommentPlugin/nodes/CommentNode/CommentNode.d.ts +0 -16
  385. package/dist/components/rich-text/prompt-input/plugins/ImperativeAPIPlugin.d.ts +0 -7
  386. package/dist/components/rich-text/prompt-input/plugins/KeyboardShortcutPlugin.d.ts +0 -4
  387. package/dist/components/rich-text/prompt-input/plugins/ReferenceMenuPlugin/ReferenceMenuOption.d.ts +0 -12
  388. package/dist/components/rich-text/prompt-input/plugins/ReferenceMenuPlugin/ReferenceMenuPlugin.d.ts +0 -11
  389. package/dist/components/rich-text/prompt-input/plugins/ReferenceMenuPlugin/components/ReferenceMenu/ReferenceMenu.d.ts +0 -9
  390. package/dist/components/rich-text/prompt-input/plugins/ReferenceMenuPlugin/components/ReferenceMenu/ReferenceMenuItem.d.ts +0 -12
  391. package/dist/components/rich-text/prompt-input/plugins/ReferenceMenuPlugin/constants.d.ts +0 -2
  392. package/dist/components/rich-text/prompt-input/plugins/ReferenceMenuPlugin/hooks/useContextLookup.d.ts +0 -14
  393. package/dist/components/rich-text/prompt-input/plugins/ReferenceMenuPlugin/utils/checkForTriggers.d.ts +0 -9
  394. package/dist/components/rich-text/prompt-input/plugins/ReferenceMenuPlugin/utils/getSortedMenuOptions.d.ts +0 -2
  395. package/dist/components/rich-text/prompt-input/plugins/ReferencePlugin/ReferencePlugin.d.ts +0 -7
  396. package/dist/components/rich-text/prompt-input/plugins/ReferencePlugin/nodes/ReferenceNode/ReferenceNode.d.ts +0 -25
  397. package/dist/components/rich-text/prompt-input/plugins/keyboard-shortcuts.d.ts +0 -9
  398. package/dist/components/rich-text/prompt-input/prompt-input.d.ts +0 -25
  399. package/dist/components/rich-text/prompt-input/theme/prompt-input-theme.d.ts +0 -3
  400. package/dist/components/rich-text/prompt-input/utils.d.ts +0 -22
  401. package/dist/components/rich-text/rich-message/plugins/ReferenceLinkPlugin/ReferenceLinkNode.d.ts +0 -21
  402. package/dist/components/rich-text/rich-message/plugins/ReferenceLinkPlugin/ReferenceLinkTransformer.d.ts +0 -2
  403. package/dist/components/rich-text/rich-message/plugins/ReferenceLinkPlugin/index.d.ts +0 -2
  404. package/dist/components/rich-text/rich-message/rich-message.d.ts +0 -10
  405. package/dist/components/rich-text/shared/components/content-editable.d.ts +0 -9
  406. package/dist/components/rich-text/shared/components/default-rich-text-components.d.ts +0 -3
  407. package/dist/components/rich-text/shared/editor-config.d.ts +0 -5
  408. package/dist/components/rich-text/shared/lexical-code.d.ts +0 -2
  409. package/dist/components/rich-text/shared/markdown-ast.d.ts +0 -7
  410. package/dist/components/rich-text/shared/markdown-codec.d.ts +0 -3
  411. package/dist/components/rich-text/shared/markdown-export.d.ts +0 -2
  412. package/dist/components/rich-text/shared/markdown-import.d.ts +0 -2
  413. package/dist/components/rich-text/shared/markdown-inline.d.ts +0 -5
  414. package/dist/components/rich-text/shared/markdown-source-document.d.ts +0 -7
  415. package/dist/components/rich-text/shared/markdown-source-links.d.ts +0 -11
  416. package/dist/components/rich-text/shared/markdown-source-map.d.ts +0 -10
  417. package/dist/components/rich-text/shared/markdown-table.d.ts +0 -41
  418. package/dist/components/rich-text/shared/markdown-url-context.d.ts +0 -9
  419. package/dist/components/rich-text/shared/markdown-url.d.ts +0 -3
  420. package/dist/components/rich-text/shared/nodes/DataTableNode.d.ts +0 -24
  421. package/dist/components/rich-text/shared/nodes/MarkdownImageNode.d.ts +0 -35
  422. package/dist/components/rich-text/shared/nodes/MarkdownLinkNode.d.ts +0 -18
  423. package/dist/components/rich-text/shared/nodes/RawHtmlNode.d.ts +0 -31
  424. package/dist/components/rich-text/shared/plugins/CodePlugin/CodeBlockActionsPlugin.d.ts +0 -4
  425. package/dist/components/rich-text/shared/plugins/CodePlugin/CodeBlockPlugin.d.ts +0 -3
  426. package/dist/components/rich-text/shared/plugins/CodePlugin/CodeHighlightingPlugin.d.ts +0 -1
  427. package/dist/components/rich-text/shared/plugins/EquationPlugin/EquationComponent.d.ts +0 -6
  428. package/dist/components/rich-text/shared/plugins/EquationPlugin/EquationNode.d.ts +0 -26
  429. package/dist/components/rich-text/shared/plugins/EquationPlugin/EquationPlugin.d.ts +0 -4
  430. package/dist/components/rich-text/shared/plugins/EquationPlugin/KatexRenderer.d.ts +0 -4
  431. package/dist/components/rich-text/shared/plugins/FloatingTextFormatToolbarPlugin/FloatingTextFormatToolbarPlugin.d.ts +0 -4
  432. package/dist/components/rich-text/shared/plugins/FloatingTextFormatToolbarPlugin/floating-toolbar-buttons.d.ts +0 -18
  433. package/dist/components/rich-text/shared/plugins/FloatingTextFormatToolbarPlugin/index.d.ts +0 -1
  434. package/dist/components/rich-text/shared/plugins/FloatingTextFormatToolbarPlugin/resolve-block-type.d.ts +0 -17
  435. package/dist/components/rich-text/shared/plugins/FloatingTextFormatToolbarPlugin/should-show-floating-toolbar.d.ts +0 -11
  436. package/dist/components/rich-text/shared/plugins/HorizontalRulePlugin/HorizontalRuleNode.d.ts +0 -13
  437. package/dist/components/rich-text/shared/plugins/HorizontalRulePlugin/horizontalRule.d.ts +0 -2
  438. package/dist/components/rich-text/shared/plugins/LinkEditorPlugin/LinkEditorPlugin.d.ts +0 -4
  439. package/dist/components/rich-text/shared/plugins/LinkEditorPlugin/LinkPlugin.d.ts +0 -1
  440. package/dist/components/rich-text/shared/plugins/LinkEditorPlugin/commands.d.ts +0 -2
  441. package/dist/components/rich-text/shared/plugins/LinkEditorPlugin/index.d.ts +0 -3
  442. package/dist/components/rich-text/shared/plugins/LinkEditorPlugin/link-editor-content.d.ts +0 -18
  443. package/dist/components/rich-text/shared/plugins/LinkEditorPlugin/utils/getSelectedNode.d.ts +0 -2
  444. package/dist/components/rich-text/shared/plugins/LinkEditorPlugin/utils/link-edit-state.d.ts +0 -1
  445. package/dist/components/rich-text/shared/plugins/LinkEditorPlugin/utils/selection-link-url.d.ts +0 -2
  446. package/dist/components/rich-text/shared/plugins/LinkEditorPlugin/utils/setFloatingElemPos.d.ts +0 -1
  447. package/dist/components/rich-text/shared/plugins/LinkEditorPlugin/utils/url.d.ts +0 -2
  448. package/dist/components/rich-text/shared/plugins/MermaidPlugin/MermaidComponent.d.ts +0 -6
  449. package/dist/components/rich-text/shared/plugins/MermaidPlugin/MermaidNode.d.ts +0 -23
  450. package/dist/components/rich-text/shared/plugins/StateUpdatePlugin.d.ts +0 -6
  451. package/dist/components/rich-text/shared/plugins/ToggleEditablePlugin.d.ts +0 -3
  452. package/dist/components/rich-text/shared/plugins/TreeViewPlugin/TreeViewPlugin.d.ts +0 -1
  453. package/dist/components/rich-text/shared/prism-global.d.ts +0 -2
  454. package/dist/components/rich-text/shared/transformers/markdown-transformers-test-utils.d.ts +0 -3
  455. package/dist/components/rich-text/shared/transformers/markdown-transformers.d.ts +0 -16
  456. package/dist/components/rich-text/shared/types/rich-text-components.d.ts +0 -15
  457. package/dist/components/rich-text/theme/rich-text-theme.d.ts +0 -3
  458. package/dist/components/rich-text/types.d.ts +0 -8
  459. package/dist/components/rich-text/utils/inferResourceType.d.ts +0 -1
  460. package/dist/components/rich-text/utils/markdown.d.ts +0 -5
  461. package/dist/components/rich-text/utils/mediaType.d.ts +0 -1
  462. package/dist/components/sidenav/sidenav-footer.d.ts +0 -6
  463. package/dist/components/sidenav/sidenav-header.d.ts +0 -6
  464. package/dist/components/sidenav/sidenav.d.ts +0 -2
  465. package/dist/components/sidenav/sidenav.store.d.ts +0 -49
  466. package/dist/components/sidenav/sidenav.types.d.ts +0 -31
  467. package/dist/components/tab-strip/tab-visibility-filter.d.ts +0 -22
  468. package/dist/components/tab-strip/tab-visibility.store.d.ts +0 -41
  469. package/dist/components/tab-strip/window-tabs.d.ts +0 -15
  470. package/dist/components/tab-strip/window-title-bar.d.ts +0 -6
  471. package/dist/components/tag-editor/index.d.ts +0 -8
  472. package/dist/components/tag-editor/tag-editor-heading.d.ts +0 -11
  473. package/dist/components/tag-editor/tag-editor-row.d.ts +0 -20
  474. package/dist/components/tag-editor/tag-editor-save-bar.d.ts +0 -13
  475. package/dist/components/tag-editor/tag-editor.d.ts +0 -2
  476. package/dist/components/tag-editor/tag-editor.types.d.ts +0 -57
  477. package/dist/components/tag-editor/tag-settings-panel.d.ts +0 -30
  478. package/dist/components/terminal/bind-session.d.ts +0 -33
  479. package/dist/components/terminal/index.d.ts +0 -6
  480. package/dist/components/terminal/scripted-bridge.d.ts +0 -35
  481. package/dist/components/terminal/terminal-contract.d.ts +0 -22
  482. package/dist/components/terminal/terminal-theme.d.ts +0 -12
  483. package/dist/components/terminal/terminal.d.ts +0 -56
  484. package/dist/components/terminal/types.d.ts +0 -35
  485. package/dist/components/terminal/use-terminal-session.d.ts +0 -21
  486. package/dist/components/tree-list/tree-list-background.d.ts +0 -8
  487. package/dist/components/tree-list/tree-list-drag-provider.d.ts +0 -13
  488. package/dist/components/tree-list/tree-list-drag.d.ts +0 -7
  489. package/dist/components/tree-list/tree-list-inline-creation-story.d.ts +0 -3
  490. package/dist/components/tree-list/tree-list-inline-input.d.ts +0 -9
  491. package/dist/components/tree-list/tree-list-model.d.ts +0 -58
  492. package/dist/components/tree-list/tree-list-move-surface.d.ts +0 -7
  493. package/dist/components/tree-list/tree-list-node-row.d.ts +0 -21
  494. package/dist/components/tree-list/tree-list-order-filter.d.ts +0 -2
  495. package/dist/components/tree-list/tree-list-order.store.d.ts +0 -45
  496. package/dist/components/tree-list/tree-list-reorder.d.ts +0 -24
  497. package/dist/components/tree-list/tree-list-section-header.d.ts +0 -14
  498. package/dist/components/tree-list/tree-list-sortable.d.ts +0 -24
  499. package/dist/components/tree-list/tree-list-visibility-filter.d.ts +0 -24
  500. package/dist/components/tree-list/tree-list-visibility.store.d.ts +0 -45
  501. package/dist/components/tree-list/tree-list.d.ts +0 -41
  502. package/dist/components/tree-list/tree-list.types.d.ts +0 -63
  503. package/dist/components/tree-list/use-tree-list-keyboard-navigation.d.ts +0 -15
  504. package/dist/diff-bubble-DvUPRnfB.js +0 -183
  505. package/dist/diff-bubble-DvUPRnfB.js.map +0 -1
  506. package/dist/edit-mode-data-table-B8UpWb7i.js +0 -846
  507. package/dist/edit-mode-data-table-B8UpWb7i.js.map +0 -1
  508. package/dist/empty-state-Bo4HVrgr.js +0 -34
  509. package/dist/empty-state-Bo4HVrgr.js.map +0 -1
  510. package/dist/foundations/gallery/gallery-frame.d.ts +0 -21
  511. package/dist/foundations/gallery/sections/badges-section.d.ts +0 -1
  512. package/dist/foundations/gallery/sections/buttons-section.d.ts +0 -1
  513. package/dist/foundations/gallery/sections/composite-chat-section.d.ts +0 -1
  514. package/dist/foundations/gallery/sections/composites-section.d.ts +0 -1
  515. package/dist/foundations/gallery/sections/feedback-section.d.ts +0 -1
  516. package/dist/foundations/gallery/sections/input-authoring-card.d.ts +0 -1
  517. package/dist/foundations/gallery/sections/inputs-section.d.ts +0 -1
  518. package/dist/foundations/gallery/sections/layout-section.d.ts +0 -1
  519. package/dist/foundations/gallery/sections/navigation-identity-section.d.ts +0 -1
  520. package/dist/foundations/gallery/sections/overlays-section.d.ts +0 -1
  521. package/dist/foundations/gallery/sections/panels-section.d.ts +0 -1
  522. package/dist/foundations/gallery/sections/param-editor-composite-card.d.ts +0 -1
  523. package/dist/foundations/gallery/sections/settings-composite-cards.d.ts +0 -1
  524. package/dist/kanban-renderer-toolbar-DzY6THJY.js +0 -1374
  525. package/dist/kanban-renderer-toolbar-DzY6THJY.js.map +0 -1
  526. package/dist/lazy-markdown-editor-ClZPZuaU.js +0 -235
  527. package/dist/lazy-markdown-editor-ClZPZuaU.js.map +0 -1
  528. package/dist/list-row-BDoV_iMV.js +0 -815
  529. package/dist/list-row-BDoV_iMV.js.map +0 -1
  530. package/dist/markdown-editor-CAVqJ9yR.js +0 -1019
  531. package/dist/markdown-editor-CAVqJ9yR.js.map +0 -1
  532. package/dist/markdown-gNucAjnF.js +0 -1643
  533. package/dist/markdown-gNucAjnF.js.map +0 -1
  534. package/dist/mermaid-renderer-CVnuKs-A.js +0 -425
  535. package/dist/mermaid-renderer-CVnuKs-A.js.map +0 -1
  536. package/dist/mermaid.js.map +0 -1
  537. package/dist/monaco-browser-l82HnffN.js +0 -22
  538. package/dist/monaco-browser-l82HnffN.js.map +0 -1
  539. package/dist/param-editor-CTx3mDxQ.js +0 -161
  540. package/dist/param-editor-CTx3mDxQ.js.map +0 -1
  541. package/dist/param-editor-field-DteDEyeU.js +0 -2810
  542. package/dist/param-editor-field-DteDEyeU.js.map +0 -1
  543. package/dist/prompt-input-DNpRL5tI.js +0 -564
  544. package/dist/prompt-input-DNpRL5tI.js.map +0 -1
  545. package/dist/radio-cLMEBBZk.js +0 -76
  546. package/dist/radio-cLMEBBZk.js.map +0 -1
  547. package/dist/rich-message-CuPiKxKX.js +0 -78
  548. package/dist/rich-message-CuPiKxKX.js.map +0 -1
  549. package/dist/rich-text.js.map +0 -1
  550. package/dist/test-utils/local-storage.d.ts +0 -1
  551. package/dist/theme/custom/index.d.ts +0 -2
  552. package/dist/theme/custom/vscode-theme.d.ts +0 -32
  553. package/dist/theme/global.d.ts +0 -62
  554. package/dist/theme/index.d.ts +0 -3
  555. package/dist/theme/primitives/colors.d.ts +0 -1081
  556. package/dist/theme/primitives/fonts.d.ts +0 -84
  557. package/dist/theme/primitives/sizes.d.ts +0 -207
  558. package/dist/theme/recipes/activity-comment.d.ts +0 -36
  559. package/dist/theme/recipes/alert.d.ts +0 -1
  560. package/dist/theme/recipes/badge.d.ts +0 -58
  561. package/dist/theme/recipes/button.d.ts +0 -188
  562. package/dist/theme/recipes/color-picker.d.ts +0 -18
  563. package/dist/theme/recipes/dialog.d.ts +0 -1
  564. package/dist/theme/recipes/divider.d.ts +0 -1
  565. package/dist/theme/recipes/drawer.d.ts +0 -1
  566. package/dist/theme/recipes/editable.d.ts +0 -46
  567. package/dist/theme/recipes/form.d.ts +0 -1
  568. package/dist/theme/recipes/input.d.ts +0 -94
  569. package/dist/theme/recipes/kbd.d.ts +0 -41
  570. package/dist/theme/recipes/menu.d.ts +0 -1
  571. package/dist/theme/recipes/number-input.d.ts +0 -98
  572. package/dist/theme/recipes/popover.d.ts +0 -16
  573. package/dist/theme/recipes/progress-circle.d.ts +0 -28
  574. package/dist/theme/recipes/resizable-split-layout.d.ts +0 -106
  575. package/dist/theme/recipes/segmented-control.d.ts +0 -22
  576. package/dist/theme/recipes/skeleton.d.ts +0 -1
  577. package/dist/theme/recipes/switch.d.ts +0 -18
  578. package/dist/theme/recipes/tabs.d.ts +0 -80
  579. package/dist/theme/recipes/textarea.d.ts +0 -62
  580. package/dist/theme/recipes/timeline.d.ts +0 -74
  581. package/dist/theme/recipes/tooltip.d.ts +0 -1
  582. package/dist/theme/recipes/window-title-bar.d.ts +0 -19
  583. package/dist/theme/shadowless-default-config.d.ts +0 -2
  584. package/dist/theme/theme.d.ts +0 -2
  585. package/dist/theme/tokens/borders.d.ts +0 -17
  586. package/dist/theme/tokens/colors-background.d.ts +0 -260
  587. package/dist/theme/tokens/colors-visualization.d.ts +0 -162
  588. package/dist/theme/tokens/colors.d.ts +0 -878
  589. package/dist/theme/tokens/layer-styles.d.ts +0 -1
  590. package/dist/theme/tokens/text.d.ts +0 -1
  591. package/dist/theme-Dc7hVvMC.js +0 -3990
  592. package/dist/theme-Dc7hVvMC.js.map +0 -1
  593. package/dist/theme-preference-Bpobguh4.js +0 -114
  594. package/dist/theme-preference-Bpobguh4.js.map +0 -1
  595. package/dist/theme.js.map +0 -1
  596. package/dist/tree-list-CZvcg3_6.js +0 -1348
  597. package/dist/tree-list-CZvcg3_6.js.map +0 -1
  598. package/dist/utils/apply-file-icon-theme-preference.d.ts +0 -35
  599. package/dist/utils/apply-theme-preference.d.ts +0 -22
  600. package/dist/utils/browser-storage.d.ts +0 -7
  601. package/dist/utils/file-icon-theme-preference.d.ts +0 -15
  602. package/dist/utils/get-file-type-icon.d.ts +0 -2
  603. package/dist/utils/prism.d.ts +0 -1
  604. package/dist/utils/resolve-file-icon-element.d.ts +0 -8
  605. package/dist/utils/theme-preference.d.ts +0 -20
  606. package/dist/workspace-badge-BR_GgsAG.js +0 -175
  607. package/dist/workspace-badge-BR_GgsAG.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"markdown-gNucAjnF.js","sources":["../src/components/rich-text/shared/components/content-editable.tsx","../src/components/rich-text/markdown-editor/plugins/ReferenceLinkPlugin/ReferenceLinkNode.tsx","../src/components/rich-text/markdown-editor/plugins/ReferenceLinkPlugin/ReferenceLinkTransformer.ts","../src/components/rich-text/theme/rich-text-theme.tsx","../src/components/rich-text/shared/markdown-ast.ts","../src/components/rich-text/shared/markdown-url.ts","../src/components/rich-text/shared/markdown-url-context.tsx","../src/components/rich-text/shared/nodes/MarkdownImageNode.tsx","../src/components/rich-text/shared/nodes/RawHtmlNode.tsx","../src/components/rich-text/shared/markdown-inline.tsx","../src/components/rich-text/shared/nodes/DataTableNode.tsx","../src/components/rich-text/shared/nodes/MarkdownLinkNode.ts","../src/components/rich-text/shared/plugins/EquationPlugin/EquationNode.tsx","../src/components/rich-text/shared/plugins/EquationPlugin/EquationPlugin.tsx","../src/components/rich-text/shared/plugins/HorizontalRulePlugin/HorizontalRuleNode.ts","../src/components/rich-text/shared/plugins/MermaidPlugin/MermaidNode.tsx","../src/components/rich-text/shared/plugins/HorizontalRulePlugin/horizontalRule.ts","../src/components/rich-text/shared/transformers/markdown-transformers.ts","../src/components/rich-text/shared/editor-config.ts","../src/components/rich-text/shared/plugins/CodePlugin/CodeBlockPlugin.tsx","../src/components/rich-text/shared/plugins/CodePlugin/CodeHighlightingPlugin.tsx","../src/components/rich-text/shared/markdown-export.ts","../src/components/rich-text/shared/markdown-import.ts","../src/components/rich-text/shared/markdown-source-links.ts","../src/components/rich-text/shared/markdown-source-map.ts","../src/components/rich-text/shared/markdown-source-document.ts","../src/components/rich-text/shared/plugins/ToggleEditablePlugin.tsx","../src/components/rich-text/shared/plugins/TreeViewPlugin/TreeViewPlugin.tsx","../src/components/rich-text/utils/markdown.ts"],"sourcesContent":["import { Box, chakra } from \"@chakra-ui/react\";\nimport { ContentEditable as LexicalContentEditable } from \"@lexical/react/LexicalContentEditable\";\nimport { ScrollArea } from \"@/components/primitives/scroll-area\";\n\nconst StyledEditable = chakra(LexicalContentEditable);\n\ninterface ContentEditableProps {\n onRef?: (elem: HTMLDivElement) => void;\n fullWidth?: boolean;\n padding?: string;\n isRichMessage?: boolean;\n scrollable?: boolean;\n}\n\nexport function ContentEditable({\n onRef,\n fullWidth = false,\n padding,\n isRichMessage = false,\n scrollable = true,\n}: ContentEditableProps) {\n const editor = (\n <Box ref={onRef} width=\"100%\" minH=\"100%\" padding={padding}>\n <StyledEditable\n data-testid=\"content-editable\"\n height=\"fit-content\"\n minH=\"100%\"\n width=\"100%\"\n maxWidth={fullWidth ? \"100%\" : \"45rem\"}\n marginInline={fullWidth ? \"0\" : \"auto\"}\n textStyle=\"paragraph/M/regular\"\n fontSize=\"calc(var(--chakra-font-sizes-md) * var(--rich-text-font-scale))\"\n position=\"relative\"\n outline=\"none\"\n />\n </Box>\n );\n\n if (!scrollable) return editor;\n\n return (\n <ScrollArea\n className=\"rich-text\"\n data-rich-message={isRichMessage ? \"true\" : undefined}\n height=\"100%\"\n minH=\"0\"\n position=\"relative\"\n contentProps={{ width: \"100%\", minH: \"100%\" }}\n >\n {editor}\n </ScrollArea>\n );\n}\n","import { Box } from \"@chakra-ui/react\";\nimport {\n DecoratorNode,\n type EditorConfig,\n type LexicalEditor,\n type LexicalNode,\n type NodeKey,\n type SerializedLexicalNode,\n type Spread,\n} from \"lexical\";\nimport type { ReactElement } from \"react\";\nimport { ResourceBadge } from \"@/components/primitives/resource-badge\";\n\nexport type SerializedReferenceLinkNode = Spread<\n {\n href: string;\n label?: string;\n },\n SerializedLexicalNode\n>;\n\nexport class ReferenceLinkNode extends DecoratorNode<ReactElement> {\n __href: string;\n __label?: string;\n\n static getType(): string {\n return \"reference-link\";\n }\n\n static clone(node: ReferenceLinkNode): ReferenceLinkNode {\n return new ReferenceLinkNode(node.__href, node.__label, node.__key);\n }\n\n constructor(href: string, label?: string, key?: NodeKey) {\n super(key);\n this.__href = href;\n this.__label = label;\n }\n\n createDOM(_config: EditorConfig, _editor: LexicalEditor): HTMLElement {\n return document.createElement(\"span\");\n }\n\n updateDOM(_prevNode: ReferenceLinkNode, _dom: HTMLElement, _config: EditorConfig): boolean {\n return false;\n }\n\n getTextContent(): string {\n const label = this.__label ?? this.__href;\n return `{{link('${label}')}}`;\n }\n\n exportJSON(): SerializedReferenceLinkNode {\n return {\n type: ReferenceLinkNode.getType(),\n version: 1,\n href: this.__href,\n label: this.__label,\n };\n }\n\n static importJSON(serializedNode: SerializedReferenceLinkNode): ReferenceLinkNode {\n return $createReferenceLinkNode(serializedNode.href, serializedNode.label);\n }\n\n decorate(_editor: LexicalEditor, _config: EditorConfig): ReactElement {\n const href = this.__href;\n const fileName = href.split(\"/\").pop();\n const label = fileName || \"unknown\";\n const isExternal = /^https?:\\/\\//i.test(href);\n const isProjectFile = /^#?\\$PROJECT\\//i.test(href);\n\n return (\n <Box width=\"fit-content\" display=\"inline-block\">\n <ResourceBadge\n fileName={label}\n onSelect={() => {\n if (isExternal) {\n window.open(href, \"_blank\", \"noopener,noreferrer\");\n } else if (isProjectFile) {\n const projectPath = href.replace(/^#?\\$PROJECT\\//i, \"\");\n const event = new CustomEvent(\"ui:open-project-file\", { detail: projectPath });\n window.dispatchEvent(event);\n } else {\n window.location.assign(href);\n }\n }}\n />\n </Box>\n );\n }\n}\n\nexport function $createReferenceLinkNode(href: string, label?: string): ReferenceLinkNode {\n return new ReferenceLinkNode(href, label);\n}\n\nexport function $isReferenceLinkNode(node: LexicalNode | null | undefined): node is ReferenceLinkNode {\n return node instanceof ReferenceLinkNode;\n}\n","import type { TextMatchTransformer } from \"@lexical/markdown\";\nimport { $createReferenceLinkNode, $isReferenceLinkNode, ReferenceLinkNode } from \"./ReferenceLinkNode\";\n\n// Matches {{link('xxx')}} or {{ link(\"xxx\") }}\nconst LINK_REGEXP = /\\{\\{\\s*link\\((['\"])([^'\"\\s]+)\\1\\)\\s*\\}\\}/;\n\nexport const REFERENCE_LINK_TRANSFORMER: TextMatchTransformer = {\n dependencies: [ReferenceLinkNode],\n export: (node) => {\n if ($isReferenceLinkNode(node)) {\n const href = (node as ReferenceLinkNode).__href;\n const label = (node as ReferenceLinkNode).__label ?? href;\n // Export back to token form so markdown roundtrips\n if (label) {\n return `{{link('${label}')}}`;\n }\n return `{{link('${href}')}}`;\n }\n return null;\n },\n regExp: LINK_REGEXP,\n importRegExp: LINK_REGEXP,\n replace: (textNode, match) => {\n const value = match[2];\n // For now we assume value is both label and href; if it looks like a URL, use as href.\n const looksLikeUrl = /^(https?:\\/\\/|\\/)/i.test(value);\n const href = looksLikeUrl ? value : `#${value}`;\n const label = value;\n textNode.replace($createReferenceLinkNode(href, label));\n },\n type: \"text-match\",\n};\n","import type { EditorThemeClasses } from \"lexical\";\n\nimport \"./rich-text-theme.css\";\n\nconst theme: EditorThemeClasses = {\n code: \"rich-text__code\",\n codeHighlight: {\n atrule: \"rich-text__tokenAttr\",\n attr: \"rich-text__tokenAttr\",\n boolean: \"rich-text__tokenProperty\",\n builtin: \"rich-text__tokenSelector\",\n cdata: \"rich-text__tokenComment\",\n char: \"rich-text__tokenSelector\",\n class: \"rich-text__tokenFunction\",\n \"class-name\": \"rich-text__tokenFunction\",\n comment: \"rich-text__tokenComment\",\n constant: \"rich-text__tokenProperty\",\n deleted: \"rich-text__tokenProperty\",\n doctype: \"rich-text__tokenComment\",\n entity: \"rich-text__tokenOperator\",\n function: \"rich-text__tokenFunction\",\n important: \"rich-text__tokenVariable\",\n inserted: \"rich-text__tokenSelector\",\n keyword: \"rich-text__tokenAttr\",\n namespace: \"rich-text__tokenVariable\",\n number: \"rich-text__tokenProperty\",\n operator: \"rich-text__tokenOperator\",\n prolog: \"rich-text__tokenComment\",\n property: \"rich-text__tokenProperty\",\n punctuation: \"rich-text__tokenPunctuation\",\n regex: \"rich-text__tokenVariable\",\n selector: \"rich-text__tokenSelector\",\n string: \"rich-text__tokenSelector\",\n symbol: \"rich-text__tokenProperty\",\n tag: \"rich-text__tokenProperty\",\n url: \"rich-text__tokenOperator\",\n variable: \"rich-text__tokenVariable\",\n },\n embedBlock: {\n base: \"rich-text__embedBlock\",\n focus: \"rich-text__embedBlockFocus\",\n },\n list: {\n checklist: \"rich-text__checklist\",\n listitem: \"rich-text__listItem\",\n listitemChecked: \"rich-text__listItemChecked\",\n listitemUnchecked: \"rich-text__listItemUnchecked\",\n nested: {\n listitem: \"rich-text__nestedListItem\",\n },\n olDepth: [\"rich-text__ol1\", \"rich-text__ol2\", \"rich-text__ol3\", \"rich-text__ol4\", \"rich-text__ol5\"],\n ol: \"rich-text__ol\",\n ul: \"rich-text__ul\",\n },\n heading: {\n h1: \"rich-text__h1\",\n h2: \"rich-text__h2\",\n h3: \"rich-text__h3\",\n },\n paragraph: \"rich-text__p\",\n text: {\n underline: \"rich-text__textUnderline\",\n italic: \"rich-text__textItalic\",\n code: \"rich-text__textCode\",\n },\n link: \"rich-text__link\",\n quote: \"rich-text__quote\",\n reference: \"rich-text__reference\",\n table: \"rich-text__table\",\n tableCell: \"rich-text__tableCell\",\n tableRow: \"rich-text__tableRow\",\n tableCellHeader: \"rich-text__tableCellHeader\",\n layoutContainer: \"rich-text__layoutContainer\",\n layoutItem: \"rich-text__layoutItem\",\n draggableBlockDemo: {\n row: \"rich-text__row\",\n content: \"rich-text__content\",\n },\n};\n\nexport default theme;\n","import type { Paragraph, PhrasingContent, Root, RootContent } from \"mdast\";\nimport { fromMarkdown } from \"mdast-util-from-markdown\";\nimport { gfmFromMarkdown, gfmToMarkdown } from \"mdast-util-gfm\";\nimport { mathFromMarkdown, mathToMarkdown } from \"mdast-util-math\";\nimport { toMarkdown } from \"mdast-util-to-markdown\";\nimport { gfm } from \"micromark-extension-gfm\";\nimport { math } from \"micromark-extension-math\";\n\nconst parserOptions = {\n extensions: [gfm(), math()],\n mdastExtensions: [gfmFromMarkdown(), mathFromMarkdown()],\n};\n\nconst serializerOptions = {\n bullet: \"-\" as const,\n emphasis: \"*\" as const,\n extensions: [gfmToMarkdown(), mathToMarkdown()],\n fence: \"`\" as const,\n fences: true,\n listItemIndent: \"one\" as const,\n rule: \"-\" as const,\n strong: \"*\" as const,\n};\n\nconst fenceStart = (line: string) => line.match(/^ {0,3}(`{3,}|~{3,})/);\n\nconst normalizeLegacyInlineMath = (line: string) => {\n let codeFenceLength: number | null = null;\n let result = \"\";\n\n for (let index = 0; index < line.length; ) {\n if (line[index] === \"`\") {\n let end = index;\n while (line[end] === \"`\") end += 1;\n const length = end - index;\n\n if (codeFenceLength === null) codeFenceLength = length;\n else if (codeFenceLength === length) codeFenceLength = null;\n\n result += line.slice(index, end);\n index = end;\n continue;\n }\n\n const delimiter = line.slice(index, index + 2);\n if (codeFenceLength === null && (delimiter === \"\\\\(\" || delimiter === \"\\\\)\")) {\n result += \"$\";\n index += 2;\n continue;\n }\n if (codeFenceLength === null && (delimiter === \"\\\\[\" || delimiter === \"\\\\]\")) {\n result += \"$$\";\n index += 2;\n continue;\n }\n\n result += line[index];\n index += 1;\n }\n\n return result;\n};\n\nconst normalizeLegacyMath = (markdown: string) => {\n let fencedCode: { character: string; length: number } | null = null;\n const normalized: string[] = [];\n\n for (const line of markdown.split(\"\\n\")) {\n if (fencedCode) {\n normalized.push(line);\n const closingFence = line.match(/^ {0,3}(`+|~+)[ \\t]*$/)?.[1];\n if (closingFence?.[0] === fencedCode.character && closingFence.length >= fencedCode.length) {\n fencedCode = null;\n }\n continue;\n }\n\n const openingFence = fenceStart(line)?.[1];\n if (openingFence) {\n fencedCode = { character: openingFence[0] ?? \"`\", length: openingFence.length };\n normalized.push(line);\n continue;\n }\n\n const displayMath = line.match(/^( {0,3})\\\\\\[\\s*(.*?)\\s*\\\\\\][ \\t]*$/);\n if (displayMath) {\n const indent = displayMath[1] ?? \"\";\n normalized.push(`${indent}$$`, displayMath[2] ?? \"\", `${indent}$$`);\n continue;\n }\n\n if (/^ {0,3}\\\\\\[[ \\t]*$/.test(line)) {\n normalized.push(line.replace(\"\\\\[\", () => \"$$\"));\n continue;\n }\n if (/^ {0,3}\\\\\\][ \\t]*$/.test(line)) {\n normalized.push(line.replace(\"\\\\]\", () => \"$$\"));\n continue;\n }\n\n normalized.push(normalizeLegacyInlineMath(line));\n }\n\n return normalized.join(\"\\n\");\n};\n\nexport const parseMarkdown = (markdown: string) => fromMarkdown(normalizeLegacyMath(markdown), parserOptions);\n\nexport const parseMarkdownSource = (markdown: string) => fromMarkdown(markdown, parserOptions);\n\nexport const serializeMarkdownAst = (tree: Root) => toMarkdown(tree, serializerOptions).trimEnd();\n\nexport const serializeMarkdownBlock = (node: RootContent) => serializeMarkdownAst({ type: \"root\", children: [node] });\n\nexport const serializeMarkdownInline = (children: PhrasingContent[]) => {\n const paragraph: Paragraph = { type: \"paragraph\", children };\n return serializeMarkdownBlock(paragraph);\n};\n\nexport const parseMarkdownInline = (markdown: string) => {\n const tree = parseMarkdown(markdown);\n const first = tree.children[0];\n\n return first?.type === \"paragraph\" || first?.type === \"heading\" ? first.children : [];\n};\n","export type MarkdownUrlKind = \"link\" | \"image\";\n\nexport type MarkdownUrlResolver = (source: string, kind: MarkdownUrlKind) => string | null;\n\nconst SAFE_LINK_PROTOCOLS = new Set([\"http:\", \"https:\", \"mailto:\", \"sms:\", \"tel:\"]);\nconst SAFE_IMAGE_DATA_URL = /^data:image\\/(?:png|gif|jpeg|webp);base64,[a-z0-9+/=]+$/i;\nconst PROTOCOL = /^[a-z][a-z\\d+.-]*:/i;\n\nconst hasSafeLinkProtocol = (source: string) => {\n if (source.startsWith(\"#\") || source.startsWith(\"/\") || source.startsWith(\"./\") || source.startsWith(\"../\")) {\n return true;\n }\n\n if (!PROTOCOL.test(source)) return true;\n\n try {\n return SAFE_LINK_PROTOCOLS.has(new URL(source).protocol);\n } catch {\n return false;\n }\n};\n\nconst hasSafeImageProtocol = (source: string) => {\n if (source.startsWith(\"https://\")) return true;\n return SAFE_IMAGE_DATA_URL.test(source);\n};\n\nexport const resolveMarkdownUrl = (source: string, kind: MarkdownUrlKind, resolver?: MarkdownUrlResolver) => {\n const resolved = resolver ? resolver(source, kind) : source;\n if (resolved === null) return null;\n\n if (kind === \"image\") {\n const sourceIsRelative = !PROTOCOL.test(source);\n if (sourceIsRelative && !resolver) return null;\n return hasSafeImageProtocol(resolved) ? resolved : null;\n }\n\n return hasSafeLinkProtocol(resolved) ? resolved : null;\n};\n","import { createContext, type ReactNode, useContext } from \"react\";\nimport type { MarkdownUrlResolver } from \"./markdown-url\";\n\nconst MarkdownUrlContext = createContext<MarkdownUrlResolver | undefined>(undefined);\n\ninterface MarkdownUrlProviderProps {\n children: ReactNode;\n resolver?: MarkdownUrlResolver;\n}\n\nexport const MarkdownUrlProvider = (props: MarkdownUrlProviderProps) => {\n const { children, resolver } = props;\n return <MarkdownUrlContext.Provider value={resolver}>{children}</MarkdownUrlContext.Provider>;\n};\n\nexport const useMarkdownUrlResolver = () => useContext(MarkdownUrlContext);\n","import { Box, Image, Text } from \"@chakra-ui/react\";\nimport {\n $applyNodeReplacement,\n $getNodeByKey,\n $getSelection,\n $isRangeSelection,\n DecoratorNode,\n type LexicalEditor,\n type LexicalNode,\n type NodeKey,\n type SerializedLexicalNode,\n type Spread,\n} from \"lexical\";\nimport type { ReactNode } from \"react\";\nimport { resolveMarkdownUrl } from \"../markdown-url\";\nimport { useMarkdownUrlResolver } from \"../markdown-url-context\";\n\nexport type SerializedMarkdownImageNode = Spread<\n { source: string; alt: string; title: string | null },\n SerializedLexicalNode\n>;\n\ninterface MarkdownImageProps {\n source: string;\n alt: string;\n title: string | null;\n onLoad?: () => void;\n}\n\nexport const MarkdownImage = (props: MarkdownImageProps) => {\n const { source, alt, title, onLoad } = props;\n const resolver = useMarkdownUrlResolver();\n const resolved = resolveMarkdownUrl(source, \"image\", resolver);\n\n if (!resolved) {\n return (\n <Box as=\"span\" display=\"inline-block\" paddingX=\"xs\" paddingY=\"2xs\" background=\"bg.muted\" borderRadius=\"sm\">\n <Text as=\"span\" textStyle=\"label/S/regular\" color=\"fg.muted\">\n {alt || \"Image\"}\n </Text>\n </Box>\n );\n }\n\n return (\n <Image\n src={resolved}\n alt={alt}\n title={title ?? undefined}\n loading=\"lazy\"\n referrerPolicy=\"no-referrer\"\n onLoad={onLoad}\n />\n );\n};\n\nexport class MarkdownImageNode extends DecoratorNode<ReactNode> {\n __source: string;\n __alt: string;\n __title: string | null;\n\n static getType() {\n return \"markdown-image\";\n }\n\n static clone(node: MarkdownImageNode) {\n return new MarkdownImageNode(node.__source, node.__alt, node.__title, node.__key);\n }\n\n constructor(source: string, alt: string, title: string | null = null, key?: NodeKey) {\n super(key);\n this.__source = source;\n this.__alt = alt;\n this.__title = title;\n }\n\n createDOM() {\n return document.createElement(\"span\");\n }\n\n updateDOM() {\n return false;\n }\n\n isInline() {\n return true;\n }\n\n getSource() {\n return this.__source;\n }\n\n getAlt() {\n return this.__alt;\n }\n\n getTitle() {\n return this.__title;\n }\n\n getTextContent() {\n return this.__alt;\n }\n\n exportJSON(): SerializedMarkdownImageNode {\n return {\n type: \"markdown-image\",\n version: 1,\n source: this.__source,\n alt: this.__alt,\n title: this.__title,\n };\n }\n\n static importJSON(node: SerializedMarkdownImageNode) {\n return $createMarkdownImageNode(node.source, node.alt, node.title);\n }\n\n decorate(editor: LexicalEditor) {\n const keepFollowingSelectionVisible = () => {\n if (!editor.isEditable()) return;\n\n let selectedBlockKey: NodeKey | null = null;\n editor.getEditorState().read(() => {\n const selection = $getSelection();\n const imageNode = $getNodeByKey(this.getKey());\n if (!$isRangeSelection(selection) || !selection.isCollapsed() || !imageNode) return;\n\n const imageBlock = imageNode.getTopLevelElement();\n const followingBlock = imageBlock?.getNextSibling();\n const followingBlockKey = followingBlock?.getKey();\n const selectionBlock = selection.anchor.getNode().getTopLevelElement();\n if (followingBlockKey && followingBlockKey === selectionBlock?.getKey()) {\n selectedBlockKey = followingBlockKey;\n }\n });\n\n const blockKey = selectedBlockKey;\n if (!blockKey) return;\n requestAnimationFrame(() => {\n editor.getElementByKey(blockKey)?.scrollIntoView({ block: \"end\" });\n });\n };\n\n return (\n <MarkdownImage\n source={this.__source}\n alt={this.__alt}\n title={this.__title}\n onLoad={keepFollowingSelectionVisible}\n />\n );\n }\n}\n\nexport const $createMarkdownImageNode = (source: string, alt: string, title: string | null = null) =>\n $applyNodeReplacement(new MarkdownImageNode(source, alt, title));\n\nexport const $isMarkdownImageNode = (node: LexicalNode | null | undefined): node is MarkdownImageNode =>\n node instanceof MarkdownImageNode;\n","import DOMPurify from \"dompurify\";\nimport {\n $applyNodeReplacement,\n DecoratorNode,\n type LexicalNode,\n type NodeKey,\n type SerializedLexicalNode,\n type Spread,\n} from \"lexical\";\nimport { type ReactNode, useEffect, useRef } from \"react\";\nimport { resolveMarkdownUrl } from \"../markdown-url\";\nimport { useMarkdownUrlResolver } from \"../markdown-url-context\";\n\nexport type RawHtmlDisplay = \"inline\" | \"block\";\n\nexport type SerializedRawHtmlNode = Spread<{ source: string; display: RawHtmlDisplay }, SerializedLexicalNode>;\n\nconst isHtmlComment = (source: string) => /^<!--[\\s\\S]*-->$/.test(source.trim());\n\nconst sanitizeMarkdownHtml = (source: string, resolver: ReturnType<typeof useMarkdownUrlResolver>) => {\n if (typeof document === \"undefined\") return null;\n\n const clean = DOMPurify.sanitize(source, {\n FORBID_TAGS: [\"script\", \"style\", \"iframe\", \"object\", \"embed\", \"form\", \"input\", \"button\", \"textarea\", \"select\"],\n });\n const template = document.createElement(\"template\");\n template.innerHTML = clean;\n\n for (const element of template.content.querySelectorAll<HTMLElement>(\"[href], [src]\")) {\n const attribute = element.hasAttribute(\"href\") ? \"href\" : \"src\";\n const kind = attribute === \"href\" ? \"link\" : \"image\";\n const sourceUrl = element.getAttribute(attribute) ?? \"\";\n const resolved = resolveMarkdownUrl(sourceUrl, kind, resolver);\n\n if (resolved) element.setAttribute(attribute, resolved);\n else element.removeAttribute(attribute);\n }\n\n return template.content;\n};\n\ninterface RawHtmlProps {\n source: string;\n display: RawHtmlDisplay;\n}\n\nexport const RawHtml = (props: RawHtmlProps) => {\n const { source, display } = props;\n const resolver = useMarkdownUrlResolver();\n const elementRef = useRef<HTMLElement | null>(null);\n const attachElement = (element: HTMLElement | null) => {\n elementRef.current = element;\n };\n\n useEffect(() => {\n const fragment = sanitizeMarkdownHtml(source, resolver);\n const element = elementRef.current;\n if (!element) return;\n\n element.replaceChildren(fragment ? fragment.cloneNode(true) : document.createTextNode(\"\"));\n }, [resolver, source]);\n\n if (isHtmlComment(source)) return null;\n if (display === \"inline\") return <span ref={attachElement} />;\n return <div ref={attachElement} />;\n};\n\nexport class RawHtmlNode extends DecoratorNode<ReactNode> {\n __source: string;\n __display: RawHtmlDisplay;\n\n static getType() {\n return \"raw-html\";\n }\n\n static clone(node: RawHtmlNode) {\n return new RawHtmlNode(node.__source, node.__display, node.__key);\n }\n\n constructor(source: string, display: RawHtmlDisplay, key?: NodeKey) {\n super(key);\n this.__source = source;\n this.__display = display;\n }\n\n createDOM() {\n return document.createElement(this.__display === \"inline\" ? \"span\" : \"div\");\n }\n\n updateDOM(previous: RawHtmlNode) {\n return previous.__display !== this.__display;\n }\n\n isInline() {\n return this.__display === \"inline\";\n }\n\n getSource() {\n return this.__source;\n }\n\n getDisplay() {\n return this.__display;\n }\n\n getTextContent() {\n return isHtmlComment(this.__source) ? \"\" : this.__source;\n }\n\n exportJSON(): SerializedRawHtmlNode {\n return {\n type: \"raw-html\",\n version: 1,\n source: this.__source,\n display: this.__display,\n };\n }\n\n static importJSON(node: SerializedRawHtmlNode) {\n return $createRawHtmlNode(node.source, node.display);\n }\n\n decorate() {\n return <RawHtml source={this.__source} display={this.__display} />;\n }\n}\n\nexport const $createRawHtmlNode = (source: string, display: RawHtmlDisplay) =>\n $applyNodeReplacement(new RawHtmlNode(source, display));\n\nexport const $isRawHtmlNode = (node: LexicalNode | null | undefined): node is RawHtmlNode =>\n node instanceof RawHtmlNode;\n","import { Box, Code, Link, Text } from \"@chakra-ui/react\";\nimport type { PhrasingContent } from \"mdast\";\nimport { Fragment, type ReactNode } from \"react\";\nimport { parseMarkdownInline } from \"./markdown-ast\";\nimport { resolveMarkdownUrl } from \"./markdown-url\";\nimport { useMarkdownUrlResolver } from \"./markdown-url-context\";\nimport { MarkdownImage } from \"./nodes/MarkdownImageNode\";\nimport { RawHtml } from \"./nodes/RawHtmlNode\";\n\ninterface MarkdownInlineProps {\n value: string;\n}\n\ninterface InlineChildrenProps {\n nodes: PhrasingContent[];\n}\n\nconst InlineChildren = (props: InlineChildrenProps) => {\n const { nodes } = props;\n const resolver = useMarkdownUrlResolver();\n\n return nodes.map((node, index): ReactNode => {\n const key = `${node.type}-${index}`;\n\n switch (node.type) {\n case \"text\":\n return <Fragment key={key}>{node.value}</Fragment>;\n case \"strong\":\n return (\n <Text as=\"strong\" key={key} fontWeight=\"semibold\">\n <InlineChildren nodes={node.children} />\n </Text>\n );\n case \"emphasis\":\n return (\n <Box as=\"em\" key={key}>\n <InlineChildren nodes={node.children} />\n </Box>\n );\n case \"delete\":\n return (\n <Box as=\"del\" key={key}>\n <InlineChildren nodes={node.children} />\n </Box>\n );\n case \"inlineCode\":\n return <Code key={key}>{node.value}</Code>;\n case \"break\":\n return <br key={key} />;\n case \"link\": {\n const href = resolveMarkdownUrl(node.url, \"link\", resolver);\n if (!href) return <InlineChildren key={key} nodes={node.children} />;\n return (\n <Link key={key} href={href} title={node.title ?? undefined} target=\"_blank\" rel=\"noopener noreferrer\">\n <InlineChildren nodes={node.children} />\n </Link>\n );\n }\n case \"image\":\n return <MarkdownImage key={key} source={node.url} alt={node.alt ?? \"\"} title={node.title ?? null} />;\n case \"html\":\n return <RawHtml key={key} source={node.value} display=\"inline\" />;\n case \"inlineMath\":\n return <Code key={key}>{node.value}</Code>;\n default:\n return null;\n }\n });\n};\n\nexport const MarkdownInline = (props: MarkdownInlineProps) => {\n const { value } = props;\n return <InlineChildren nodes={parseMarkdownInline(value)} />;\n};\n","import { Box } from \"@chakra-ui/react\";\nimport {\n $applyNodeReplacement,\n $createParagraphNode,\n $getNodeByKey,\n DecoratorNode,\n HISTORY_PUSH_TAG,\n type LexicalEditor,\n type LexicalNode,\n type NodeKey,\n REDO_COMMAND,\n type SerializedLexicalNode,\n type Spread,\n UNDO_COMMAND,\n} from \"lexical\";\nimport type React from \"react\";\nimport { type FocusEvent, type KeyboardEvent, type MouseEvent, useRef, useState } from \"react\";\nimport { EditModeDataTable } from \"@/components/data-table/edit-mode-data-table\";\nimport type { DataTableEditModeColumn, RowData } from \"@/components/data-table/types\";\nimport { LazyMarkdownEditor } from \"../../lazy-markdown-editor\";\nimport { MarkdownInline } from \"../markdown-inline\";\nimport type { MarkdownTableValue } from \"../markdown-table\";\n\ninterface MarkdownDataTableProps {\n editor: LexicalEditor;\n nodeKey: NodeKey;\n table: MarkdownTableValue;\n}\n\nconst projectRows = (table: MarkdownTableValue): RowData[] => table.rows.map((row) => ({ id: row.id, ...row.cells }));\n\nconst projectColumns = (table: MarkdownTableValue): DataTableEditModeColumn[] => table.columns;\n\nconst MarkdownDataTable = (props: MarkdownDataTableProps) => {\n const { editor, nodeKey, table } = props;\n const [isSelected, setSelected] = useState(false);\n const containerRef = useRef<HTMLDivElement>(null);\n\n const focusTable = () => {\n setTimeout(() => containerRef.current?.focus(), 0);\n };\n\n const updateTable = (change: (current: MarkdownTableValue) => MarkdownTableValue) => {\n editor.update(\n () => {\n const node = $getNodeByKey(nodeKey);\n if ($isDataTableNode(node)) node.setTable(change(node.getTable()));\n },\n { tag: HISTORY_PUSH_TAG },\n );\n focusTable();\n };\n\n const handleColumnsChange = (columns: DataTableEditModeColumn[]) => {\n updateTable((current) => ({\n columns,\n rows: current.rows.map((row) => ({\n ...row,\n cells: Object.fromEntries(columns.map((column) => [column.id, row.cells[column.id] ?? \"\"])),\n })),\n }));\n };\n\n const handleDataChange = (data: RowData[]) => {\n updateTable((current) => ({\n ...current,\n rows: data.map((row, index) => ({\n id: String(row.id ?? current.rows[index]?.id ?? `row-${index + 1}`),\n cells: Object.fromEntries(current.columns.map((column) => [column.id, String(row[column.id] ?? \"\")])),\n })),\n }));\n };\n\n const deleteTable = () => {\n editor.update(\n () => {\n const node = $getNodeByKey(nodeKey);\n if ($isDataTableNode(node)) {\n const paragraph = $createParagraphNode();\n node.replace(paragraph);\n paragraph.select();\n }\n },\n { tag: HISTORY_PUSH_TAG },\n );\n setTimeout(() => editor.focus(), 0);\n };\n\n const handleClick = (event: MouseEvent<HTMLDivElement>) => {\n const target = event.target as HTMLElement;\n if (target.closest(\"button, input, textarea, [contenteditable='true'], [role='menuitem']\")) return;\n\n event.preventDefault();\n containerRef.current?.focus();\n };\n\n const handleBlur = (event: FocusEvent<HTMLDivElement>) => {\n if (!event.currentTarget.contains(event.relatedTarget as Node | null)) setSelected(false);\n };\n\n const handleKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n const target = event.target as HTMLElement;\n const isTextInput = target.matches(\"input, textarea\") || target.isContentEditable;\n const isUndo = (event.ctrlKey || event.metaKey) && event.key.toLowerCase() === \"z\";\n\n if (isUndo && !isTextInput) {\n event.preventDefault();\n event.stopPropagation();\n editor.dispatchCommand(event.shiftKey ? REDO_COMMAND : UNDO_COMMAND, undefined);\n return;\n }\n\n if (isTextInput) return;\n\n if (isSelected && (event.key === \"Delete\" || event.key === \"Backspace\")) {\n event.preventDefault();\n event.stopPropagation();\n deleteTable();\n }\n };\n\n return (\n <Box\n ref={containerRef}\n data-testid=\"markdown-table-node\"\n data-selected={String(isSelected)}\n aria-label=\"Markdown table\"\n aria-selected={isSelected}\n tabIndex={0}\n outline={isSelected ? \"2px solid\" : \"none\"}\n outlineColor=\"border.accent-light\"\n outlineOffset=\"2px\"\n borderRadius=\"sm\"\n onFocus={() => setSelected(true)}\n onBlur={handleBlur}\n onClick={handleClick}\n onKeyDownCapture={handleKeyDown}\n >\n <EditModeDataTable\n data={projectRows(table)}\n editMode={{\n columns: projectColumns(table),\n onColumnsChange: handleColumnsChange,\n onDataChange: handleDataChange,\n renderHeader: (column) => <MarkdownInline value={column.label} />,\n renderCell: (context) => <MarkdownInline value={String(context.value ?? \"\")} />,\n renderCellEditor: ({ value, onChange }) => (\n <LazyMarkdownEditor\n autoFocus\n defaultState={value}\n fullWidth\n isEditable\n padding=\"xs\"\n scrollable={false}\n onChange={onChange}\n />\n ),\n }}\n fullWidth\n getRowId={(row) => String(row.id)}\n initialPageSize={30}\n isReadOnly={!editor.isEditable()}\n />\n </Box>\n );\n};\n\nexport class DataTableNode extends DecoratorNode<React.JSX.Element> {\n __table: MarkdownTableValue;\n\n static getType() {\n return \"data_table\";\n }\n\n static clone(node: DataTableNode) {\n return new DataTableNode(node.__table, node.__key);\n }\n\n constructor(table: MarkdownTableValue, key?: NodeKey) {\n super(key);\n this.__table = table;\n }\n\n getTable() {\n return this.getLatest().__table;\n }\n\n setTable(table: MarkdownTableValue) {\n const writable = this.getWritable();\n writable.__table = table;\n }\n\n createDOM() {\n return document.createElement(\"div\");\n }\n\n updateDOM() {\n return false;\n }\n\n decorate(editor: LexicalEditor) {\n return <MarkdownDataTable editor={editor} nodeKey={this.__key} table={this.__table} />;\n }\n\n exportJSON(): SerializedDataTableNode {\n return {\n type: \"data_table\",\n version: 2,\n table: this.__table,\n };\n }\n\n static importJSON(json: SerializedDataTableNode) {\n return $createDataTableNode(json.table);\n }\n\n getTextContent() {\n const headers = this.__table.columns.map((column) => column.label).join(\" | \");\n const separator = this.__table.columns.map(() => \"---\").join(\" | \");\n const rows = this.__table.rows.map((row) =>\n this.__table.columns.map((column) => row.cells[column.id] ?? \"\").join(\" | \"),\n );\n return [headers, separator, ...rows].join(\"\\n\");\n }\n}\n\nexport type SerializedDataTableNode = Spread<\n { table: MarkdownTableValue; type: \"data_table\"; version: 2 },\n SerializedLexicalNode\n>;\n\nexport const $createDataTableNode = (table: MarkdownTableValue) => $applyNodeReplacement(new DataTableNode(table));\n\nexport const $isDataTableNode = (node: LexicalNode | null | undefined): node is DataTableNode =>\n node instanceof DataTableNode;\n","import { type LinkAttributes, LinkNode, type SerializedLinkNode } from \"@lexical/link\";\nimport {\n $applyNodeReplacement,\n type LexicalNode,\n type NodeKey,\n type SerializedLexicalNode,\n type Spread,\n} from \"lexical\";\nimport { type MarkdownUrlResolver, resolveMarkdownUrl } from \"../markdown-url\";\n\nexport type SerializedMarkdownLinkNode = Spread<{ source: string }, Spread<SerializedLinkNode, SerializedLexicalNode>>;\n\nconst safeLinkUrl = (source: string, resolver?: MarkdownUrlResolver) =>\n resolveMarkdownUrl(source, \"link\", resolver) ?? \"about:blank\";\n\nexport class MarkdownLinkNode extends LinkNode {\n __source: string;\n\n static getType() {\n return \"markdown-link\";\n }\n\n static clone(node: MarkdownLinkNode) {\n return new MarkdownLinkNode(\n node.__source,\n node.__url,\n { rel: node.__rel, target: node.__target, title: node.__title },\n node.__key,\n );\n }\n\n constructor(source = \"\", resolvedUrl?: string | null, attributes?: LinkAttributes, key?: NodeKey) {\n super(resolvedUrl ?? safeLinkUrl(source), attributes, key);\n this.__source = source;\n }\n\n getSource() {\n return this.__source;\n }\n\n setURL(url: string) {\n const writable = this.getWritable();\n writable.__source = url;\n writable.__url = safeLinkUrl(url);\n return writable;\n }\n\n exportJSON(): SerializedMarkdownLinkNode {\n return {\n ...super.exportJSON(),\n source: this.__source,\n type: \"markdown-link\",\n version: 1,\n };\n }\n\n static importJSON(node: SerializedMarkdownLinkNode) {\n return $createMarkdownLinkNode(node.source, undefined, {\n rel: node.rel,\n target: node.target,\n title: node.title,\n });\n }\n}\n\nexport const $createMarkdownLinkNode = (source: string, resolver?: MarkdownUrlResolver, attributes?: LinkAttributes) =>\n $applyNodeReplacement(new MarkdownLinkNode(source, safeLinkUrl(source, resolver), attributes));\n\nexport const $isMarkdownLinkNode = (node: LexicalNode | null | undefined): node is MarkdownLinkNode =>\n node instanceof MarkdownLinkNode;\n","import katex from \"katex\";\nimport type {\n DOMConversionMap,\n DOMConversionOutput,\n EditorConfig,\n LexicalNode,\n NodeKey,\n SerializedLexicalNode,\n Spread,\n} from \"lexical\";\nimport { $applyNodeReplacement, DecoratorNode, type DOMExportOutput } from \"lexical\";\nimport * as React from \"react\";\nimport { Suspense } from \"react\";\n\nconst EquationComponent = React.lazy(() => import(\"./EquationComponent\"));\n\nexport type SerializedEquationNode = Spread<\n {\n equation: string;\n inline: boolean;\n },\n SerializedLexicalNode\n>;\n\nfunction $convertEquationElement(domNode: HTMLElement): null | DOMConversionOutput {\n let equation = domNode.getAttribute(\"data-lexical-equation\");\n const inline = domNode.getAttribute(\"data-lexical-inline\") === \"true\";\n\n // Decode the equation from base64\n equation = atob(equation || \"\");\n\n if (equation) {\n const node = $createEquationNode(equation, inline);\n return { node };\n }\n\n return null;\n}\n\nexport class EquationNode extends DecoratorNode<React.ReactNode> {\n __equation: string;\n __inline: boolean;\n\n static getType(): string {\n return \"equation\";\n }\n\n static clone(node: EquationNode): EquationNode {\n return new EquationNode(node.__equation, node.__inline, node.__key);\n }\n\n constructor(equation: string, inline?: boolean, key?: NodeKey) {\n super(key);\n this.__equation = equation;\n this.__inline = inline ?? false;\n }\n\n static importJSON(serializedNode: SerializedEquationNode): EquationNode {\n return $createEquationNode(serializedNode.equation, serializedNode.inline);\n }\n\n exportJSON(): SerializedEquationNode {\n return {\n equation: this.getEquation(),\n inline: this.__inline,\n type: \"equation\",\n version: 1,\n };\n }\n\n createDOM(_config: EditorConfig): HTMLElement {\n const element = document.createElement(this.__inline ? \"span\" : \"div\");\n\n // EquationNodes should implement `user-action:none` in their CSS to avoid issues with deletion on Android.\n element.className = \"editor-equation\";\n return element;\n }\n\n exportDOM(): DOMExportOutput {\n const element = document.createElement(this.__inline ? \"span\" : \"div\");\n\n // Encode the equation as base64 to avoid issues with special characters\n const equation = btoa(this.__equation);\n element.setAttribute(\"data-lexical-equation\", equation);\n element.setAttribute(\"data-lexical-inline\", `${this.__inline}`);\n katex.render(this.__equation, element, {\n displayMode: !this.__inline, // true === block display //\n errorColor: \"#cc0000\",\n output: \"html\",\n strict: \"warn\",\n throwOnError: false,\n trust: false,\n });\n\n return { element };\n }\n\n static importDOM(): DOMConversionMap | null {\n return {\n div: (domNode: HTMLElement) => {\n if (!domNode.hasAttribute(\"data-lexical-equation\")) {\n return null;\n }\n\n return {\n conversion: $convertEquationElement,\n priority: 2,\n };\n },\n span: (domNode: HTMLElement) => {\n if (!domNode.hasAttribute(\"data-lexical-equation\")) {\n return null;\n }\n\n return {\n conversion: $convertEquationElement,\n priority: 1,\n };\n },\n };\n }\n\n updateDOM(prevNode: EquationNode): boolean {\n // If the inline property changes, replace the element\n return this.__inline !== prevNode.__inline;\n }\n\n getTextContent(): string {\n return this.__equation;\n }\n\n getEquation(): string {\n return this.__equation;\n }\n\n setEquation(equation: string): void {\n const writable = this.getWritable();\n writable.__equation = equation;\n }\n\n isInline(): boolean {\n return this.__inline;\n }\n\n decorate() {\n return (\n <Suspense fallback={null}>\n <EquationComponent equation={this.__equation} inline={this.__inline} />\n </Suspense>\n );\n }\n}\n\nexport function $createEquationNode(equation = \"\", inline = false): EquationNode {\n const equationNode = new EquationNode(equation, inline);\n return $applyNodeReplacement(equationNode);\n}\n\nexport function $isEquationNode(node: LexicalNode | null | undefined): node is EquationNode {\n return node instanceof EquationNode;\n}\n","import \"./EquationPlugin.css\";\n\nimport type { MultilineElementTransformer, TextMatchTransformer } from \"@lexical/markdown\";\nimport { $createEquationNode, $isEquationNode, EquationNode } from \"./EquationNode.tsx\";\n\nexport const EQUATION_INLINE: TextMatchTransformer = {\n dependencies: [EquationNode],\n export: (node) => {\n if ($isEquationNode(node) && node.isInline()) {\n return `\\\\( ${node.getEquation().trim()} \\\\)`;\n }\n return null;\n },\n importRegExp: /\\\\\\((.*?)\\\\\\)/,\n regExp: /\\\\\\((.*?)\\\\\\)/,\n replace: (textNode, match) => {\n const equationNode = $createEquationNode(match[1].trim(), true);\n textNode.replace(equationNode);\n },\n type: \"text-match\",\n};\n\nexport const EQUATION_MULTILINE: MultilineElementTransformer = {\n dependencies: [EquationNode],\n regExpStart: /\\\\\\[/,\n regExpEnd: /\\\\]/,\n export: (node) => {\n if ($isEquationNode(node) && !node.isInline()) {\n return `\\\\[ ${node.getEquation().trim()} \\\\]`;\n }\n return null;\n },\n replace: (rootNode, _children, _startMatch, _endMatch, linesInBetween) => {\n if (linesInBetween) {\n rootNode.append($createEquationNode(linesInBetween.join(\" \"), false));\n return true;\n }\n return false;\n },\n type: \"multiline-element\",\n};\n\nexport function EquationPlugin(): null {\n return null;\n}\n","import {\n type EditorConfig,\n ElementNode,\n type LexicalEditor,\n type LexicalNode,\n type SerializedElementNode,\n type Spread,\n} from \"lexical\";\n\nexport type SerializedHRNode = Spread<SerializedElementNode, SerializedElementNode>;\n\nexport class HRNode extends ElementNode {\n static getType() {\n return \"hr\";\n }\n\n static clone(node: HRNode) {\n return new HRNode(node?.__key);\n }\n\n static importJSON(_serializedNode: SerializedHRNode) {\n return $createHRNode();\n }\n\n exportJSON(): SerializedHRNode {\n return {\n ...super.exportJSON(),\n };\n }\n\n createDOM(_config: EditorConfig, _editor: LexicalEditor): HTMLElement {\n const element = document.createElement(\"hr\");\n element.style = \"margin: 2rem 0;\";\n return element;\n }\n\n updateDOM(_prevNode: unknown, _dom: HTMLElement, _config: EditorConfig): boolean {\n return false;\n }\n\n decorate(_editor: LexicalEditor) {\n return null;\n }\n}\n\nexport function $createHRNode(): HRNode {\n return new HRNode();\n}\n\nexport function $isHRNode(node: LexicalNode | null | undefined): node is HRNode {\n return node instanceof HRNode;\n}\n","import type { LexicalNode, NodeKey, SerializedLexicalNode } from \"lexical\";\nimport { $applyNodeReplacement, DecoratorNode } from \"lexical\";\nimport type { ReactNode } from \"react\";\nimport { lazy, Suspense } from \"react\";\n\nconst MermaidComponent = lazy(() => import(\"./MermaidComponent\"));\n\nexport interface SerializedMermaidNode extends SerializedLexicalNode {\n type: \"mermaid\";\n code: string;\n version: 1;\n}\n\nexport class MermaidNode extends DecoratorNode<ReactNode> {\n __code: string;\n\n static getType() {\n return \"mermaid\";\n }\n\n static clone(node: MermaidNode) {\n return new MermaidNode(node.__code, node.__key);\n }\n\n constructor(code: string, key?: NodeKey) {\n super(key);\n this.__code = code;\n }\n\n createDOM() {\n return document.createElement(\"div\");\n }\n\n updateDOM() {\n return false;\n }\n\n static importJSON(serializedNode: SerializedMermaidNode): MermaidNode {\n return new MermaidNode(serializedNode.code);\n }\n\n exportJSON(): SerializedMermaidNode {\n return {\n type: \"mermaid\",\n code: this.__code,\n version: 1,\n };\n }\n\n getTextContent() {\n return `\\`\\`\\`mermaid\\n${this.__code}\\n\\`\\`\\``;\n }\n\n getCode() {\n return this.__code;\n }\n\n setCode(code: string) {\n const writable = this.getWritable();\n writable.__code = code;\n }\n\n decorate() {\n return (\n <Suspense fallback={null}>\n <MermaidComponent code={this.__code} nodeKey={this.__key} />\n </Suspense>\n );\n }\n}\n\nexport function $isMermaidNode(node: LexicalNode | null | undefined): node is MermaidNode {\n return node instanceof MermaidNode;\n}\n\nexport function $createMermaidNode(code: string) {\n return $applyNodeReplacement(new MermaidNode(code));\n}\n","import type { ElementTransformer } from \"@lexical/markdown\";\nimport type { LexicalNode } from \"lexical\";\nimport { $createHRNode, $isHRNode, HRNode } from \"./HorizontalRuleNode\";\n\nexport const HR: ElementTransformer = {\n dependencies: [HRNode],\n export: (node: LexicalNode) => {\n return $isHRNode(node) ? \"***\" : null;\n },\n regExp: /^(---|\\*\\*\\*|___)\\s?$/,\n replace: (parentNode) => {\n const line = $createHRNode();\n parentNode.replace(line);\n },\n type: \"element\",\n};\n","import {\n $createAutoLinkNode,\n $createLinkNode,\n $isAutoLinkNode,\n $isLinkNode,\n AutoLinkNode,\n LinkNode,\n} from \"@lexical/link\";\nimport type { TextMatchTransformer } from \"@lexical/markdown\";\nimport { $createTextNode, TextNode } from \"lexical\";\nimport { HR } from \"../plugins/HorizontalRulePlugin/horizontalRule\";\n\nexport const UNDERLINE_INS_TAG: TextMatchTransformer = {\n dependencies: [TextNode],\n export: (node, _children) => {\n if (node instanceof TextNode) {\n let markdownText = node.getTextContent();\n\n if (node.hasFormat(\"bold\")) {\n markdownText = `**${markdownText}**`;\n } else if (node.hasFormat(\"italic\")) {\n markdownText = `*${markdownText}*`;\n } else if (node.hasFormat(\"underline\")) {\n markdownText = `<ins>${markdownText}</ins>`;\n } else {\n return null;\n }\n\n return markdownText;\n }\n return null;\n },\n regExp: /<ins>(.*)<\\/ins>/,\n importRegExp: /<ins>(.*)<\\/ins>/,\n replace: (node, match) => {\n const textNode = $createTextNode(match[1]);\n textNode.toggleFormat(\"underline\");\n node.replace(textNode);\n },\n type: \"text-match\",\n};\n\nexport const UNDERLINE_U_TAG: TextMatchTransformer = {\n dependencies: [TextNode],\n export: (_node, _children) => {\n return null;\n },\n regExp: /<u>(.*)<\\/u>/,\n importRegExp: /<u>(.*)<\\/u>/,\n replace: (node, match) => {\n const textNode = $createTextNode(match[1]);\n textNode.toggleFormat(\"underline\");\n node.replace(textNode);\n },\n type: \"text-match\",\n};\n\nconst BARE_URL_REGEXP = /https?:\\/\\/[^\\s<>\"']*[^\\s<>\"'.,:;\"')\\]}]/;\n\n// Strip markdown character escapes that may have leaked into a URL, e.g.\n// `https://example.com/foo\\_bar` -> `https://example.com/foo_bar`.\n// Without this, repeated save/reopen cycles would accumulate backslashes\n// because the URL is stored as both text content and href.\nconst unescapeUrl = (url: string) => url.replace(/\\\\([*_`~\\\\])/g, \"$1\");\n\nconst escapeLinkTitle = (title: string) => title.replace(/\\\\/g, \"\\\\\\\\\").replace(/\"/g, '\\\\\"');\n\nconst unescapeLinkTitle = (title: string | undefined) => title?.replace(/\\\\([\"\\\\])/g, \"$1\");\n\nconst normalizeEscapedUrlText = (textContent: string, href: string, exportedText: string) => {\n if (textContent !== href) {\n return exportedText;\n }\n\n const escapedHref = href.replace(/([*_`~\\\\])/g, \"\\\\$1\");\n\n return exportedText.replace(escapedHref, href);\n};\n\nexport const LINK: TextMatchTransformer = {\n dependencies: [LinkNode],\n export: (node, exportChildren) => {\n if (!$isLinkNode(node) || $isAutoLinkNode(node)) {\n return null;\n }\n\n const title = node.getTitle();\n const href = unescapeUrl(node.getURL());\n const textContent = normalizeEscapedUrlText(node.getTextContent(), href, exportChildren(node));\n\n return title != null ? `[${textContent}](${href} \"${escapeLinkTitle(title)}\")` : `[${textContent}](${href})`;\n },\n importRegExp: /(?:\\[(.+?)\\])(?:\\((?:([^()\\s]+)(?:\\s\"((?:[^\"]*\\\\\")*[^\"]*)\"\\s*)?)\\))/,\n regExp: /(?:\\[(.+?)\\])(?:\\((?:([^()\\s]+)(?:\\s\"((?:[^\"]*\\\\\")*[^\"]*)\"\\s*)?)\\))$/,\n replace: (textNode, match) => {\n const [, linkText, linkUrl, linkTitle] = match;\n const href = unescapeUrl(linkUrl);\n const linkNode = $createLinkNode(href, { title: unescapeLinkTitle(linkTitle) });\n const openBracketAmount = linkText.split(\"[\").length - 1;\n const closeBracketAmount = linkText.split(\"]\").length - 1;\n let parsedLinkText = linkText;\n let outsideLinkText = \"\";\n\n if (openBracketAmount < closeBracketAmount) {\n return;\n }\n\n if (openBracketAmount > closeBracketAmount) {\n const linkTextParts = linkText.split(\"[\");\n outsideLinkText = `[${linkTextParts[0]}`;\n parsedLinkText = linkTextParts.slice(1).join(\"[\");\n }\n\n const normalizedLinkText = unescapeUrl(parsedLinkText);\n const linkTextNode = $createTextNode(normalizedLinkText === href ? href : normalizedLinkText);\n\n linkTextNode.setFormat(textNode.getFormat());\n linkNode.append(linkTextNode);\n textNode.replace(linkNode);\n\n if (outsideLinkText) {\n linkNode.insertBefore($createTextNode(outsideLinkText));\n }\n\n return linkTextNode;\n },\n trigger: \")\",\n type: \"text-match\",\n};\n\nexport const BARE_URL: TextMatchTransformer = {\n dependencies: [AutoLinkNode],\n export: (node, exportChildren) => {\n if (!$isAutoLinkNode(node)) {\n return null;\n }\n\n const href = unescapeUrl(node.getURL());\n\n return normalizeEscapedUrlText(node.getTextContent(), href, exportChildren(node));\n },\n regExp: BARE_URL_REGEXP,\n importRegExp: BARE_URL_REGEXP,\n replace: (textNode, match) => {\n const href = unescapeUrl(match[0]);\n const autoLinkNode = $createAutoLinkNode(href);\n const linkTextNode = $createTextNode(href);\n\n linkTextNode.setFormat(textNode.getFormat());\n autoLinkNode.append(linkTextNode);\n textNode.replace(autoLinkNode);\n },\n type: \"text-match\",\n};\n\nexport const TRANSFORMERS_EXTENDED = [HR, UNDERLINE_INS_TAG, UNDERLINE_U_TAG, LINK, BARE_URL];\n","import { AutoLinkNode, LinkNode } from \"@lexical/link\";\nimport { ListItemNode, ListNode } from \"@lexical/list\";\nimport { CHECK_LIST, LINK as LEXICAL_LINK, TRANSFORMERS } from \"@lexical/markdown\";\nimport { HeadingNode, QuoteNode } from \"@lexical/rich-text\";\nimport type { Klass, LexicalNode } from \"lexical\";\nimport { REFERENCE_LINK_TRANSFORMER, ReferenceLinkNode } from \"../markdown-editor/plugins/ReferenceLinkPlugin\";\nimport theme from \"../theme/rich-text-theme\";\nimport { CodeHighlightNode, CodeNode } from \"./lexical-code\";\nimport { DataTableNode } from \"./nodes/DataTableNode\";\nimport { MarkdownImageNode } from \"./nodes/MarkdownImageNode\";\nimport { MarkdownLinkNode } from \"./nodes/MarkdownLinkNode\";\nimport { RawHtmlNode } from \"./nodes/RawHtmlNode\";\nimport { EquationNode } from \"./plugins/EquationPlugin/EquationNode\";\nimport { EQUATION_INLINE, EQUATION_MULTILINE } from \"./plugins/EquationPlugin/EquationPlugin\";\nimport { HRNode } from \"./plugins/HorizontalRulePlugin/HorizontalRuleNode\";\nimport { MermaidNode } from \"./plugins/MermaidPlugin/MermaidNode\";\nimport { TRANSFORMERS_EXTENDED } from \"./transformers/markdown-transformers\";\n\nexport const editorNodes: Array<Klass<LexicalNode>> = [\n QuoteNode,\n LinkNode,\n AutoLinkNode,\n MarkdownLinkNode,\n MarkdownImageNode,\n RawHtmlNode,\n DataTableNode,\n HeadingNode,\n ListNode,\n ListItemNode,\n CodeNode,\n CodeHighlightNode,\n MermaidNode,\n EquationNode,\n HRNode,\n ReferenceLinkNode,\n];\n\nexport const baseEditorTransformers = [\n CHECK_LIST,\n ...TRANSFORMERS.filter((transformer) => transformer !== LEXICAL_LINK),\n ...TRANSFORMERS_EXTENDED,\n EQUATION_INLINE,\n EQUATION_MULTILINE,\n];\n\nexport const editorTransformers = [...baseEditorTransformers, REFERENCE_LINK_TRANSFORMER];\n\nexport const editorTheme = theme;\n","import { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { $nodesOfType } from \"lexical\";\nimport { useEffect } from \"react\";\nimport { CodeNode } from \"../../lexical-code\";\nimport { MermaidNode } from \"../MermaidPlugin/MermaidNode\";\n\nfunction isMermaidLanguage(language: string) {\n return language.trim().toLowerCase() === \"mermaid\";\n}\n\nexport function replaceCodeNodeWithMermaidNode(node: CodeNode) {\n const language = node.getLanguage() ?? \"plaintext\";\n if (!isMermaidLanguage(language)) {\n return false;\n }\n\n node.replace(new MermaidNode(node.getTextContent()));\n return true;\n}\n\nexport function ImportCodeBlocksPlugin() {\n const [editor] = useLexicalComposerContext();\n\n useEffect(() => {\n editor.update(() => {\n const codeNodes = $nodesOfType(CodeNode);\n for (const n of codeNodes) {\n replaceCodeNodeWithMermaidNode(n);\n }\n });\n }, [editor]);\n\n return null;\n}\n","import { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { useEffect } from \"react\";\nimport { registerCodeHighlighting } from \"../../lexical-code\";\n\nexport function CodeHighlightingPlugin() {\n const [editor] = useLexicalComposerContext();\n\n useEffect(() => {\n return registerCodeHighlighting(editor);\n }, [editor]);\n\n return null;\n}\n","import { $isLinkNode } from \"@lexical/link\";\nimport { $isListItemNode, $isListNode, type ListItemNode, type ListNode } from \"@lexical/list\";\nimport { $isHeadingNode, $isQuoteNode } from \"@lexical/rich-text\";\nimport {\n $isElementNode,\n $isLineBreakNode,\n $isParagraphNode,\n $isTextNode,\n type ElementNode,\n type LexicalNode,\n type TextNode,\n} from \"lexical\";\nimport type { BlockContent, ListItem, Paragraph, PhrasingContent, Root, Table, TableCell } from \"mdast\";\nimport { $isReferenceLinkNode } from \"../markdown-editor/plugins/ReferenceLinkPlugin/ReferenceLinkNode\";\nimport { $isCodeNode } from \"./lexical-code\";\nimport { parseMarkdownInline, serializeMarkdownAst } from \"./markdown-ast\";\nimport { $isDataTableNode, type DataTableNode } from \"./nodes/DataTableNode\";\nimport { $isMarkdownImageNode } from \"./nodes/MarkdownImageNode\";\nimport { $isMarkdownLinkNode } from \"./nodes/MarkdownLinkNode\";\nimport { $isRawHtmlNode } from \"./nodes/RawHtmlNode\";\nimport { $isEquationNode } from \"./plugins/EquationPlugin/EquationNode\";\nimport { $isHRNode } from \"./plugins/HorizontalRulePlugin/HorizontalRuleNode\";\nimport { $isMermaidNode } from \"./plugins/MermaidPlugin/MermaidNode\";\n\nconst exportText = (node: TextNode) => {\n let content: PhrasingContent = node.hasFormat(\"code\")\n ? { type: \"inlineCode\", value: node.getTextContent() }\n : { type: \"text\", value: node.getTextContent() };\n\n if (!node.hasFormat(\"code\")) {\n if (node.hasFormat(\"bold\")) content = { type: \"strong\", children: [content] };\n if (node.hasFormat(\"italic\")) content = { type: \"emphasis\", children: [content] };\n if (node.hasFormat(\"strikethrough\")) content = { type: \"delete\", children: [content] };\n }\n\n if (node.hasFormat(\"underline\")) {\n return [\n { type: \"html\", value: \"<ins>\" } as PhrasingContent,\n content,\n { type: \"html\", value: \"</ins>\" } as PhrasingContent,\n ];\n }\n\n return [content];\n};\n\nconst exportInlineNode = (node: LexicalNode): PhrasingContent[] => {\n if ($isTextNode(node)) return exportText(node);\n if ($isLineBreakNode(node)) return [{ type: \"break\" }];\n if ($isMarkdownImageNode(node)) {\n return [{ type: \"image\", url: node.getSource(), alt: node.getAlt(), title: node.getTitle() }];\n }\n if ($isEquationNode(node) && node.isInline()) return [{ type: \"inlineMath\", value: node.getEquation() }];\n if ($isRawHtmlNode(node)) return [{ type: \"html\", value: node.getSource() }];\n if ($isReferenceLinkNode(node)) return [{ type: \"text\", value: node.getTextContent() }];\n\n if ($isLinkNode(node)) {\n return [\n {\n type: \"link\",\n url: $isMarkdownLinkNode(node) ? node.getSource() : node.getURL(),\n title: node.getTitle(),\n children: exportInlineChildren(node),\n },\n ];\n }\n\n if ($isElementNode(node)) return exportInlineChildren(node);\n const value = node.getTextContent();\n return value ? [{ type: \"text\", value }] : [];\n};\n\nconst exportInlineChildren = (node: ElementNode) => node.getChildren().flatMap(exportInlineNode);\n\nconst paragraphFrom = (node: ElementNode): Paragraph => ({\n type: \"paragraph\",\n children: exportInlineChildren(node),\n});\n\nconst exportListItem = (node: ListItemNode): ListItem => {\n const children: BlockContent[] = [];\n const inline: PhrasingContent[] = [];\n\n for (const child of node.getChildren()) {\n if ($isListNode(child)) {\n if (inline.length) children.push({ type: \"paragraph\", children: inline.splice(0) });\n children.push(exportList(child));\n } else if ($isParagraphNode(child)) {\n if (inline.length) children.push({ type: \"paragraph\", children: inline.splice(0) });\n children.push(paragraphFrom(child));\n } else {\n inline.push(...exportInlineNode(child));\n }\n }\n\n if (inline.length || children.length === 0) children.unshift({ type: \"paragraph\", children: inline });\n\n return {\n type: \"listItem\",\n checked: node.getChecked(),\n spread: false,\n children,\n };\n};\n\nconst exportList = (node: ListNode) => ({\n type: \"list\" as const,\n ordered: node.getListType() === \"number\",\n start: node.getListType() === \"number\" ? node.getStart() : null,\n spread: false,\n children: node.getChildren().filter($isListItemNode).map(exportListItem),\n});\n\nconst tableCell = (value: string): TableCell => ({\n type: \"tableCell\",\n children: parseMarkdownInline(value),\n});\n\nconst exportTable = (node: DataTableNode): Table => {\n const table = node.getTable();\n return {\n type: \"table\",\n align: table.columns.map((column) => column.alignment),\n children: [\n {\n type: \"tableRow\",\n children: table.columns.map((column) => tableCell(column.label)),\n },\n ...table.rows.map((row) => ({\n type: \"tableRow\" as const,\n children: table.columns.map((column) => tableCell(row.cells[column.id] ?? \"\")),\n })),\n ],\n };\n};\n\nconst exportBlock = (node: LexicalNode): BlockContent | null => {\n if ($isParagraphNode(node)) return paragraphFrom(node);\n if ($isHeadingNode(node)) {\n return {\n type: \"heading\",\n depth: Number(node.getTag().slice(1)) as 1 | 2 | 3 | 4 | 5 | 6,\n children: exportInlineChildren(node),\n };\n }\n if ($isQuoteNode(node)) {\n return {\n type: \"blockquote\",\n children: node\n .getChildren()\n .map(exportBlock)\n .filter((child) => child !== null),\n };\n }\n if ($isListNode(node)) return exportList(node);\n if ($isCodeNode(node)) {\n return { type: \"code\", lang: node.getLanguage() || null, meta: null, value: node.getTextContent() };\n }\n if ($isMermaidNode(node)) return { type: \"code\", lang: \"mermaid\", meta: null, value: node.getCode() };\n if ($isEquationNode(node)) return { type: \"math\", meta: null, value: node.getEquation() };\n if ($isHRNode(node)) return { type: \"thematicBreak\" };\n if ($isDataTableNode(node)) return exportTable(node);\n if ($isRawHtmlNode(node)) return { type: \"html\", value: node.getSource() };\n if ($isElementNode(node)) return paragraphFrom(node);\n\n const value = node.getTextContent();\n return value ? { type: \"paragraph\", children: [{ type: \"text\", value }] } : null;\n};\n\nexport const exportLexicalToMarkdown = (root: ElementNode) => {\n const tree: Root = {\n type: \"root\",\n children: root\n .getChildren()\n .map(exportBlock)\n .filter((node) => node !== null),\n };\n return serializeMarkdownAst(tree);\n};\n","import { $createListItemNode, $createListNode } from \"@lexical/list\";\nimport { $createHeadingNode, $createQuoteNode } from \"@lexical/rich-text\";\nimport {\n $createLineBreakNode,\n $createParagraphNode,\n $createTextNode,\n $getRoot,\n type ElementNode,\n type LexicalNode,\n type TextFormatType,\n} from \"lexical\";\nimport type { Definition, ImageReference, LinkReference, PhrasingContent, RootContent, Table } from \"mdast\";\nimport { $createReferenceLinkNode } from \"../markdown-editor/plugins/ReferenceLinkPlugin/ReferenceLinkNode\";\nimport { $createCodeNode } from \"./lexical-code\";\nimport { parseMarkdown, serializeMarkdownBlock, serializeMarkdownInline } from \"./markdown-ast\";\nimport type { MarkdownTableAlignment, MarkdownTableValue } from \"./markdown-table\";\nimport type { MarkdownUrlResolver } from \"./markdown-url\";\nimport { $createDataTableNode } from \"./nodes/DataTableNode\";\nimport { $createMarkdownImageNode } from \"./nodes/MarkdownImageNode\";\nimport { $createMarkdownLinkNode } from \"./nodes/MarkdownLinkNode\";\nimport { $createRawHtmlNode } from \"./nodes/RawHtmlNode\";\nimport { $createEquationNode } from \"./plugins/EquationPlugin/EquationNode\";\nimport { $createHRNode } from \"./plugins/HorizontalRulePlugin/HorizontalRuleNode\";\nimport { $createMermaidNode } from \"./plugins/MermaidPlugin/MermaidNode\";\n\ninterface ImportContext {\n definitions: Map<string, Definition>;\n resolver?: MarkdownUrlResolver;\n tableIndex: number;\n}\n\nconst REFERENCE_TOKEN = /\\{\\{\\s*link\\((['\"])([^'\"\\s]+)\\1\\)\\s*\\}\\}/g;\n\nconst formattedText = (value: string, formats: Set<TextFormatType>) => {\n const node = $createTextNode(value);\n for (const format of formats) node.toggleFormat(format);\n return node;\n};\n\nconst textWithReferences = (value: string, formats: Set<TextFormatType>) => {\n const nodes: LexicalNode[] = [];\n let start = 0;\n\n for (const match of value.matchAll(REFERENCE_TOKEN)) {\n const index = match.index ?? 0;\n if (index > start) nodes.push(formattedText(value.slice(start, index), formats));\n const label = match[2] ?? \"\";\n const href = /^(?:https?:\\/\\/|\\/)/i.test(label) ? label : `#${label}`;\n nodes.push($createReferenceLinkNode(href, label));\n start = index + match[0].length;\n }\n\n if (start < value.length) nodes.push(formattedText(value.slice(start), formats));\n return nodes;\n};\n\nconst referenceDefinition = (node: LinkReference | ImageReference, context: ImportContext) =>\n context.definitions.get(node.identifier.toLowerCase());\n\nfunction importInlineNode(node: PhrasingContent, context: ImportContext, formats: Set<TextFormatType>) {\n switch (node.type) {\n case \"text\":\n return textWithReferences(node.value, formats);\n case \"strong\":\n return importInlineChildren(node.children, context, new Set([...formats, \"bold\"]));\n case \"emphasis\":\n return importInlineChildren(node.children, context, new Set([...formats, \"italic\"]));\n case \"delete\":\n return importInlineChildren(node.children, context, new Set([...formats, \"strikethrough\"]));\n case \"inlineCode\":\n return [formattedText(node.value, new Set([...formats, \"code\"]))];\n case \"break\":\n return [$createLineBreakNode()];\n case \"link\": {\n const link = $createMarkdownLinkNode(node.url, context.resolver, { title: node.title });\n link.append(...importInlineChildren(node.children, context, formats));\n return [link];\n }\n case \"linkReference\": {\n const definition = referenceDefinition(node, context);\n if (!definition) return [formattedText(serializeMarkdownInline([node]), formats)];\n const link = $createMarkdownLinkNode(definition.url, context.resolver, { title: definition.title });\n link.append(...importInlineChildren(node.children, context, formats));\n return [link];\n }\n case \"image\":\n return [$createMarkdownImageNode(node.url, node.alt ?? \"\", node.title ?? null)];\n case \"imageReference\": {\n const definition = referenceDefinition(node, context);\n if (!definition) return [formattedText(serializeMarkdownInline([node]), formats)];\n return [$createMarkdownImageNode(definition.url, node.alt ?? \"\", definition.title ?? null)];\n }\n case \"inlineMath\":\n return [$createEquationNode(node.value, true)];\n case \"html\":\n return [$createRawHtmlNode(node.value, \"inline\")];\n default:\n return [formattedText(serializeMarkdownInline([node]), formats)];\n }\n}\n\nfunction importInlineChildren(\n children: PhrasingContent[],\n context: ImportContext,\n formats = new Set<TextFormatType>(),\n) {\n const nodes: LexicalNode[] = [];\n let underlineDepth = 0;\n\n for (const node of children) {\n if (node.type === \"html\" && /^<(?:ins|u)>$/i.test(node.value.trim())) {\n underlineDepth += 1;\n continue;\n }\n if (node.type === \"html\" && /^<\\/(?:ins|u)>$/i.test(node.value.trim())) {\n underlineDepth = Math.max(underlineDepth - 1, 0);\n continue;\n }\n\n const activeFormats = new Set(formats);\n if (underlineDepth > 0) activeFormats.add(\"underline\");\n nodes.push(...importInlineNode(node, context, activeFormats));\n }\n\n return nodes;\n}\n\nconst tableValue = (table: Table, context: ImportContext): MarkdownTableValue => {\n context.tableIndex += 1;\n const prefix = `table-${context.tableIndex}`;\n const header = table.children[0];\n const columnCount = Math.max(header?.children.length ?? 0, 1);\n const columns = Array.from({ length: columnCount }, (_, index) => ({\n id: `${prefix}-column-${index + 1}`,\n label: header?.children[index] ? serializeMarkdownInline(header.children[index].children) : \"\",\n alignment: (table.align?.[index] ?? null) as MarkdownTableAlignment,\n }));\n const rows = table.children.slice(1).map((row, rowIndex) => ({\n id: `${prefix}-row-${rowIndex + 1}`,\n cells: Object.fromEntries(\n columns.map((column, columnIndex) => [\n column.id,\n row.children[columnIndex] ? serializeMarkdownInline(row.children[columnIndex].children) : \"\",\n ]),\n ),\n }));\n\n return { columns, rows };\n};\n\nconst appendListItem = (parent: ElementNode, node: RootContent, context: ImportContext) => {\n if (node.type !== \"listItem\") return;\n const item = $createListItemNode(node.checked ?? undefined);\n parent.append(item);\n\n for (const child of node.children) {\n if (child.type === \"paragraph\") item.append(...importInlineChildren(child.children, context));\n else if (child.type === \"list\") appendBlock(item, child, context);\n else item.append(formattedText(serializeMarkdownBlock(child), new Set()));\n }\n};\n\nconst appendBlock = (parent: ElementNode, node: RootContent, context: ImportContext) => {\n switch (node.type) {\n case \"paragraph\": {\n const paragraph = $createParagraphNode();\n paragraph.append(...importInlineChildren(node.children, context));\n parent.append(paragraph);\n break;\n }\n case \"heading\": {\n const heading = $createHeadingNode(`h${node.depth}`);\n heading.append(...importInlineChildren(node.children, context));\n parent.append(heading);\n break;\n }\n case \"blockquote\": {\n const quote = $createQuoteNode();\n parent.append(quote);\n for (const child of node.children) appendBlock(quote, child, context);\n break;\n }\n case \"list\": {\n const hasTasks = node.children.some((item) => item.checked !== null && item.checked !== undefined);\n let listType: \"bullet\" | \"check\" | \"number\" = \"bullet\";\n if (node.ordered) listType = \"number\";\n else if (hasTasks) listType = \"check\";\n const list = $createListNode(listType, node.start ?? 1);\n parent.append(list);\n for (const item of node.children) appendListItem(list, item, context);\n break;\n }\n case \"code\":\n parent.append(\n node.lang === \"mermaid\"\n ? $createMermaidNode(node.value)\n : $createCodeNode(node.lang ?? undefined).append($createTextNode(node.value)),\n );\n break;\n case \"math\":\n parent.append($createEquationNode(node.value, false));\n break;\n case \"thematicBreak\":\n parent.append($createHRNode());\n break;\n case \"table\":\n parent.append($createDataTableNode(tableValue(node, context)));\n break;\n case \"html\":\n parent.append($createRawHtmlNode(node.value, \"block\"));\n break;\n case \"definition\":\n break;\n default: {\n const paragraph = $createParagraphNode();\n paragraph.append($createTextNode(serializeMarkdownBlock(node)));\n parent.append(paragraph);\n }\n }\n};\n\nexport const importMarkdownToLexical = (markdown: string, resolver?: MarkdownUrlResolver) => {\n const tree = parseMarkdown(markdown);\n const definitions = new Map(\n tree.children\n .filter((node): node is Definition => node.type === \"definition\")\n .map((node) => [node.identifier.toLowerCase(), node]),\n );\n const context: ImportContext = { definitions, resolver, tableIndex: 0 };\n const root = $getRoot();\n root.clear();\n\n for (const node of tree.children) appendBlock(root, node, context);\n // Lexical treats a root-only state as uninitialized and skips its first change notification.\n if (root.isEmpty()) root.append($createParagraphNode());\n};\n","import type { Link, LinkReference, Parent, RootContent } from \"mdast\";\nimport { parseMarkdownSource } from \"./markdown-ast\";\n\ninterface TextEdit {\n end: number;\n replacement: string;\n start: number;\n}\n\ninterface LinkChanges {\n edits: TextEdit[];\n normalizedCurrent: string;\n}\n\ninterface LinkOccurrence {\n block: RootContent;\n node: Link | LinkReference;\n}\n\nconst nodeOffsets = (node: { position?: { start: { offset?: number }; end: { offset?: number } } }) => {\n const start = node.position?.start.offset;\n const end = node.position?.end.offset;\n return start === undefined || end === undefined ? null : { end, start };\n};\n\nconst isParent = (node: unknown): node is Parent =>\n typeof node === \"object\" && node !== null && \"children\" in node && Array.isArray(node.children);\n\nconst isLink = (node: unknown): node is Link | LinkReference =>\n typeof node === \"object\" &&\n node !== null &&\n \"type\" in node &&\n (node.type === \"link\" || node.type === \"linkReference\");\n\nconst linksIn = (node: unknown) => {\n const links: Array<Link | LinkReference> = [];\n\n if (!isParent(node)) return links;\n\n for (const child of node.children) {\n if (isLink(child)) links.push(child);\n if (isParent(child)) links.push(...linksIn(child));\n }\n\n return links;\n};\n\nconst linkOccurrencesIn = (markdown: string) =>\n parseMarkdownSource(markdown).children.flatMap((block) =>\n block.type === \"table\" ? [] : linksIn(block).map((node) => ({ block, node })),\n );\n\nconst removedLinkReplacements = (\n baseline: string,\n current: string,\n sourceLinks: LinkOccurrence[],\n baselineBlock: RootContent,\n baselineLinks: Array<Link | LinkReference>,\n currentBlock: RootContent,\n) => {\n const baselineBlockOffsets = nodeOffsets(baselineBlock);\n const currentBlockOffsets = nodeOffsets(currentBlock);\n if (!baselineBlockOffsets || !currentBlockOffsets) return [];\n\n const linkOffsets = baselineLinks.map(nodeOffsets);\n if (linkOffsets.some((offsets) => !offsets)) return [];\n\n const segments: string[] = [];\n let baselineOffset = baselineBlockOffsets.start;\n for (const offsets of linkOffsets) {\n if (!offsets) return [];\n segments.push(baseline.slice(baselineOffset, offsets.start));\n baselineOffset = offsets.end;\n }\n segments.push(baseline.slice(baselineOffset, baselineBlockOffsets.end));\n\n const currentBlockSource = current.slice(currentBlockOffsets.start, currentBlockOffsets.end);\n const firstSegment = segments[0] ?? \"\";\n if (!currentBlockSource.startsWith(firstSegment)) return [];\n\n const replacements: Array<{ end: number; start: number; value: string }> = [];\n let currentOffset = firstSegment.length;\n\n for (let index = 0; index < baselineLinks.length; index += 1) {\n const nextSegment = segments[index + 1] ?? \"\";\n const replacementEnd =\n index === baselineLinks.length - 1\n ? currentBlockSource.length - nextSegment.length\n : currentBlockSource.indexOf(nextSegment, currentOffset);\n if (replacementEnd < currentOffset) return [];\n\n replacements.push({\n start: currentOffset,\n end: replacementEnd,\n value: currentBlockSource.slice(currentOffset, replacementEnd),\n });\n currentOffset = replacementEnd + nextSegment.length;\n }\n\n if (currentOffset !== currentBlockSource.length) return [];\n\n return replacements.flatMap((replacement, index) => {\n if (linkOccurrencesIn(replacement.value).length > 0) return [];\n\n const sourceLinkOffsets = nodeOffsets(sourceLinks[index]?.node ?? {});\n const baselineLinkOffsets = linkOffsets[index];\n if (!sourceLinkOffsets || !baselineLinkOffsets) return [];\n\n return [\n {\n edit: { ...sourceLinkOffsets, replacement: replacement.value },\n normalization: {\n start: currentBlockOffsets.start + replacement.start,\n end: currentBlockOffsets.start + replacement.end,\n replacement: baseline.slice(baselineLinkOffsets.start, baselineLinkOffsets.end),\n },\n },\n ];\n });\n};\n\nconst findRemovedLinkReplacements = (\n sourceLinks: LinkOccurrence[],\n baseline: string,\n current: string,\n baselineBlock: RootContent,\n baselineLinks: Array<Link | LinkReference>,\n currentBlocks: RootContent[],\n preferredBlockIndex: number,\n usedCurrentBlocks: Set<number>,\n) => {\n const candidateIndexes = currentBlocks.map((_, index) => index);\n candidateIndexes.sort((left, right) => Number(right === preferredBlockIndex) - Number(left === preferredBlockIndex));\n\n for (const currentBlockIndex of candidateIndexes) {\n if (usedCurrentBlocks.has(currentBlockIndex)) continue;\n const currentBlock = currentBlocks[currentBlockIndex];\n if (!currentBlock) continue;\n\n const currentLinks = linksIn(currentBlock);\n if (baselineLinks.length <= currentLinks.length) continue;\n\n const replacements = removedLinkReplacements(\n baseline,\n current,\n sourceLinks,\n baselineBlock,\n baselineLinks,\n currentBlock,\n );\n if (replacements.length === baselineLinks.length - currentLinks.length) {\n return { currentBlockIndex, replacements };\n }\n }\n\n return null;\n};\n\nexport const collectMarkdownLinkChanges = (source: string, baseline: string, current: string): LinkChanges => {\n const sourceLinks = linkOccurrencesIn(source);\n if (linkOccurrencesIn(current).length >= linkOccurrencesIn(baseline).length) {\n return { edits: [], normalizedCurrent: current };\n }\n\n const baselineTree = parseMarkdownSource(baseline);\n const currentTree = parseMarkdownSource(current);\n const edits: TextEdit[] = [];\n const normalizations: TextEdit[] = [];\n const usedCurrentBlocks = new Set<number>();\n let linkOrdinal = 0;\n\n for (let blockIndex = 0; blockIndex < baselineTree.children.length; blockIndex += 1) {\n const baselineBlock = baselineTree.children[blockIndex];\n if (!baselineBlock || baselineBlock.type === \"table\") continue;\n\n const baselineLinks = linksIn(baselineBlock);\n const linkChanges = findRemovedLinkReplacements(\n sourceLinks.slice(linkOrdinal, linkOrdinal + baselineLinks.length),\n baseline,\n current,\n baselineBlock,\n baselineLinks,\n currentTree.children,\n blockIndex,\n usedCurrentBlocks,\n );\n if (linkChanges) {\n for (const replacement of linkChanges.replacements) {\n edits.push(replacement.edit);\n normalizations.push(replacement.normalization);\n }\n usedCurrentBlocks.add(linkChanges.currentBlockIndex);\n }\n\n linkOrdinal += baselineLinks.length;\n }\n\n let normalizedCurrent = current;\n for (const normalization of normalizations.sort((left, right) => right.start - left.start)) {\n normalizedCurrent =\n normalizedCurrent.slice(0, normalization.start) +\n normalization.replacement +\n normalizedCurrent.slice(normalization.end);\n }\n\n return { edits, normalizedCurrent };\n};\n","import { diffChars } from \"diff\";\nimport { parseMarkdownSource } from \"./markdown-ast\";\n\nexport interface SourceMap {\n end: number[];\n start: number[];\n}\n\nfunction* diffSourceBlocks(canonical: string, source: string) {\n const canonicalBlocks = parseMarkdownSource(canonical).children;\n const sourceBlocks = parseMarkdownSource(source).children;\n const sameBlocks =\n canonicalBlocks.length === sourceBlocks.length &&\n canonicalBlocks.every(\n (block, index) =>\n block.type === sourceBlocks[index]?.type &&\n block.position?.end.offset !== undefined &&\n sourceBlocks[index]?.position?.end.offset !== undefined,\n );\n\n if (!sameBlocks) {\n yield* diffChars(canonical, source);\n return;\n }\n\n // Import preserves block order. Match spelling within those blocks so many\n // normalized tokens do not create one quadratic diff across the document.\n let canonicalOffset = 0;\n let sourceOffset = 0;\n for (let index = 0; index < canonicalBlocks.length; index += 1) {\n const canonicalEnd = canonicalBlocks[index]!.position!.end.offset!;\n const sourceEnd = sourceBlocks[index]!.position!.end.offset!;\n yield* diffChars(canonical.slice(canonicalOffset, canonicalEnd), source.slice(sourceOffset, sourceEnd));\n canonicalOffset = canonicalEnd;\n sourceOffset = sourceEnd;\n }\n yield* diffChars(canonical.slice(canonicalOffset), source.slice(sourceOffset));\n}\n\nexport const buildSourceMap = (canonical: string, source: string) => {\n const start = Array.from<number>({ length: canonical.length + 1 }).fill(-1);\n const end = Array.from<number>({ length: canonical.length + 1 }).fill(-1);\n let canonicalOffset = 0;\n let sourceOffset = 0;\n let removedAtBoundary = false;\n\n start[0] = 0;\n end[0] = 0;\n\n for (const change of diffSourceBlocks(canonical, source)) {\n const length = change.value.length;\n\n if (change.added) {\n end[canonicalOffset] = sourceOffset;\n sourceOffset += length;\n start[canonicalOffset] = sourceOffset;\n if (removedAtBoundary) end[canonicalOffset] = sourceOffset;\n removedAtBoundary = false;\n continue;\n }\n\n if (change.removed) {\n for (let index = 0; index <= length; index += 1) {\n start[canonicalOffset + index] = sourceOffset;\n end[canonicalOffset + index] = sourceOffset;\n }\n canonicalOffset += length;\n removedAtBoundary = true;\n continue;\n }\n\n for (let index = 0; index <= length; index += 1) {\n const offset = canonicalOffset + index;\n start[offset] = sourceOffset + index;\n // A source-only insertion at this boundary belongs between the\n // canonical characters. Keep its left edge as the end of the preceding\n // range so an edit before it does not consume untouched source.\n if (end[offset] === undefined || end[offset] < 0) end[offset] = sourceOffset + index;\n }\n canonicalOffset += length;\n sourceOffset += length;\n removedAtBoundary = false;\n }\n\n return { end, start } satisfies SourceMap;\n};\n\nconst nearestMappedOffset = (values: number[], index: number, direction: -1 | 1) => {\n for (let offset = index; offset >= 0 && offset < values.length; offset += direction) {\n const value = values[offset];\n if (value !== undefined && value >= 0) return value;\n }\n return direction === -1 ? 0 : (values.at(-1) ?? 0);\n};\n\nexport const mappedStart = (map: SourceMap, index: number) => {\n const exact = map.start[index];\n if (exact !== undefined && exact >= 0) return exact;\n return nearestMappedOffset(map.start, index, -1);\n};\n\nexport const mappedEnd = (map: SourceMap, index: number) => {\n const exact = map.end[index];\n if (exact !== undefined && exact >= 0) return exact;\n return nearestMappedOffset(map.end, index, 1);\n};\n","import { diffChars } from \"diff\";\nimport { $getRoot, type ElementNode } from \"lexical\";\nimport type { Table, TableCell } from \"mdast\";\nimport { parseMarkdownSource } from \"./markdown-ast\";\nimport { exportLexicalToMarkdown } from \"./markdown-export\";\nimport { importMarkdownToLexical } from \"./markdown-import\";\nimport { collectMarkdownLinkChanges } from \"./markdown-source-links\";\nimport { buildSourceMap, mappedEnd, mappedStart, type SourceMap } from \"./markdown-source-map\";\nimport type { MarkdownUrlResolver } from \"./markdown-url\";\n\ninterface TextEdit {\n end: number;\n replacement: string;\n start: number;\n}\n\ninterface TableChanges {\n edits: TextEdit[];\n normalizedCurrent: string;\n}\n\nconst collectEdits = (baseline: string, current: string) => {\n const edits: TextEdit[] = [];\n let baselineOffset = 0;\n let pending: TextEdit | null = null;\n\n const finishPending = () => {\n if (!pending) return;\n edits.push(pending);\n pending = null;\n };\n\n for (const change of diffChars(baseline, current)) {\n if (!change.added && !change.removed) {\n finishPending();\n baselineOffset += change.value.length;\n continue;\n }\n\n pending ??= { start: baselineOffset, end: baselineOffset, replacement: \"\" };\n if (change.added) {\n pending.replacement += change.value;\n continue;\n }\n\n baselineOffset += change.value.length;\n pending.end = baselineOffset;\n }\n\n finishPending();\n return edits;\n};\n\nconst sourceLineEnding = (source: string) => (source.includes(\"\\r\\n\") ? \"\\r\\n\" : \"\\n\");\n\nconst withSourceLineEndings = (value: string, source: string) => {\n const lineEnding = sourceLineEnding(source);\n return lineEnding === \"\\n\" ? value : value.replaceAll(\"\\n\", lineEnding);\n};\n\nconst withoutPosition = (value: unknown): unknown => {\n if (Array.isArray(value)) return value.map(withoutPosition);\n if (!value || typeof value !== \"object\") return value;\n\n return Object.fromEntries(\n Object.entries(value)\n .filter(([key]) => key !== \"position\")\n .map(([key, entry]) => [key, withoutPosition(entry)]),\n );\n};\n\nconst sameMarkdownNode = (left: unknown, right: unknown) =>\n JSON.stringify(withoutPosition(left)) === JSON.stringify(withoutPosition(right));\n\nconst tablesIn = (markdown: string) =>\n parseMarkdownSource(markdown).children.filter(\n (node): node is Table => node.type === \"table\" && Boolean(node.position),\n );\n\nconst tableCells = (table: Table) => table.children.flatMap((row) => row.children);\n\nconst sameTableShape = (left: Table, right: Table) =>\n left.children.length === right.children.length &&\n left.children.every((row, index) => row.children.length === right.children[index]?.children.length);\n\nconst nodeOffsets = (node: { position?: { start: { offset?: number }; end: { offset?: number } } }) => {\n const start = node.position?.start.offset;\n const end = node.position?.end.offset;\n return start === undefined || end === undefined ? null : { end, start };\n};\n\nconst cellContentOffsets = (markdown: string, cell: TableCell) => {\n const first = cell.children[0];\n const last = cell.children.at(-1);\n const contentStart = first?.position?.start.offset;\n const contentEnd = last?.position?.end.offset;\n\n if (contentStart !== undefined && contentEnd !== undefined) {\n return { start: contentStart, end: contentEnd };\n }\n\n const cellOffsets = nodeOffsets(cell);\n if (!cellOffsets) return null;\n const cellSource = markdown.slice(cellOffsets.start, cellOffsets.end);\n const leftDelimiter = cellSource.indexOf(\"|\");\n const rightDelimiter = cellSource.endsWith(\"|\") ? cellSource.length - 1 : cellSource.length;\n const insideStart = leftDelimiter < 0 ? 0 : leftDelimiter + 1;\n const leadingSpace = cellSource.slice(insideStart, rightDelimiter).match(/^\\s*/)?.[0].length ?? 0;\n const offset = cellOffsets.start + insideStart + leadingSpace;\n return { start: offset, end: offset };\n};\n\nconst cellMarkdown = (markdown: string, cell: TableCell) => {\n const offsets = cellContentOffsets(markdown, cell);\n return offsets ? markdown.slice(offsets.start, offsets.end) : \"\";\n};\n\nconst collectTableCellEdits = (\n source: string,\n current: string,\n sourceTable: Table,\n baselineTable: Table,\n currentTable: Table,\n) => {\n const sourceCells = tableCells(sourceTable);\n const baselineCells = tableCells(baselineTable);\n const currentCells = tableCells(currentTable);\n\n return currentCells.flatMap((currentCell, index) => {\n const sourceCell = sourceCells[index];\n const baselineCell = baselineCells[index];\n if (!sourceCell || !baselineCell || sameMarkdownNode(baselineCell, currentCell)) return [];\n\n const sourceContent = cellContentOffsets(source, sourceCell);\n if (!sourceContent) return [];\n return [{ ...sourceContent, replacement: cellMarkdown(current, currentCell) }];\n });\n};\n\nconst editsForTable = (\n source: string,\n current: string,\n sourceTable: Table,\n baselineTable: Table,\n currentTable: Table,\n) => {\n if (sameMarkdownNode(baselineTable, currentTable)) return [];\n\n const cellOnlyChange =\n sameTableShape(baselineTable, currentTable) &&\n sameTableShape(sourceTable, baselineTable) &&\n JSON.stringify(baselineTable.align) === JSON.stringify(currentTable.align);\n\n if (cellOnlyChange) {\n return collectTableCellEdits(source, current, sourceTable, baselineTable, currentTable);\n }\n\n const sourceOffsets = nodeOffsets(sourceTable);\n const currentOffsets = nodeOffsets(currentTable);\n if (!sourceOffsets || !currentOffsets) return [];\n return [\n {\n start: sourceOffsets.start,\n end: sourceOffsets.end,\n replacement: current.slice(currentOffsets.start, currentOffsets.end),\n },\n ];\n};\n\nconst collectTableChanges = (source: string, baseline: string, current: string): TableChanges => {\n const sourceTables = tablesIn(source);\n const baselineTables = tablesIn(baseline);\n const currentTables = tablesIn(current);\n\n if (sourceTables.length !== baselineTables.length || baselineTables.length !== currentTables.length) {\n return { edits: [], normalizedCurrent: current };\n }\n\n const edits: TextEdit[] = [];\n let normalizedCurrent = current;\n\n for (let index = currentTables.length - 1; index >= 0; index -= 1) {\n const sourceTable = sourceTables[index];\n const baselineTable = baselineTables[index];\n const currentTable = currentTables[index];\n if (!sourceTable || !baselineTable || !currentTable) continue;\n\n const baselineOffsets = nodeOffsets(baselineTable);\n const currentOffsets = nodeOffsets(currentTable);\n if (!baselineOffsets || !currentOffsets) continue;\n\n normalizedCurrent =\n normalizedCurrent.slice(0, currentOffsets.start) +\n baseline.slice(baselineOffsets.start, baselineOffsets.end) +\n normalizedCurrent.slice(currentOffsets.end);\n\n edits.push(...editsForTable(source, current, sourceTable, baselineTable, currentTable));\n }\n\n return { edits, normalizedCurrent };\n};\n\nconst applyChanges = (source: string, sourceMap: SourceMap, baseline: string, current: string) => {\n if (baseline === current) return source;\n\n const linkChanges = collectMarkdownLinkChanges(source, baseline, current);\n const tableChanges = collectTableChanges(source, baseline, linkChanges.normalizedCurrent);\n\n // Lexical reports semantic Markdown but normalizes its spelling. Map those\n // semantic edits back onto the loaded source so unrelated syntax never moves.\n const edits = collectEdits(baseline, tableChanges.normalizedCurrent)\n .map((edit) => ({\n start: edit.start === edit.end ? mappedEnd(sourceMap, edit.start) : mappedStart(sourceMap, edit.start),\n end: mappedEnd(sourceMap, edit.end),\n replacement: withSourceLineEndings(edit.replacement, source),\n }))\n .concat(\n linkChanges.edits.map((edit) => ({\n ...edit,\n replacement: withSourceLineEndings(edit.replacement, source),\n })),\n )\n .concat(\n tableChanges.edits.map((edit) => ({\n ...edit,\n replacement: withSourceLineEndings(edit.replacement, source),\n })),\n )\n .sort((left, right) => right.start - left.start);\n\n let result = source;\n for (const edit of edits) {\n result = result.slice(0, edit.start) + edit.replacement + result.slice(edit.end);\n }\n return result;\n};\n\nexport interface MarkdownSourceDocument {\n exportFromLexical: (root: ElementNode) => string;\n importToLexical: () => void;\n}\n\nexport const createMarkdownSourceDocument = (\n source: string,\n resolver?: MarkdownUrlResolver,\n): MarkdownSourceDocument => {\n let baseline: string | null = null;\n let sourceMap: SourceMap | null = null;\n\n return {\n importToLexical() {\n importMarkdownToLexical(source, resolver);\n baseline = exportLexicalToMarkdown($getRoot());\n sourceMap = buildSourceMap(baseline, source);\n },\n exportFromLexical(root) {\n const current = exportLexicalToMarkdown(root);\n const loadedBaseline = baseline ?? current;\n return applyChanges(source, sourceMap ?? buildSourceMap(loadedBaseline, source), loadedBaseline, current);\n },\n };\n};\n","import { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { useEffect } from \"react\";\n\nexport default function ToggleEditablePlugin({ isEditable }: { isEditable: boolean }) {\n const [editor] = useLexicalComposerContext();\n\n useEffect(() => {\n editor.setEditable(isEditable);\n }, [isEditable, editor]);\n\n return null;\n}\n","import { Box } from \"@chakra-ui/react\";\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { TreeView } from \"@lexical/react/LexicalTreeView\";\n\nexport function TreeViewPlugin() {\n const [editor] = useLexicalComposerContext();\n return (\n <Box fontSize=\"xs\" color=\"fg.muted\" padding=\"4\">\n <TreeView\n treeTypeButtonClassName=\"debug-treetype-button\"\n timeTravelButtonClassName=\"debug-timetravel-button\"\n timeTravelPanelButtonClassName=\"debug-timetravel-button\"\n timeTravelPanelClassName=\"debug-timetravel-panel\"\n timeTravelPanelSliderClassName=\"debug-timetravel-slider\"\n viewClassName=\"tree-view-output\"\n editor={editor}\n />\n </Box>\n );\n}\n","const FRONTMATTER_PATTERN = /^---\\s*\\n([\\s\\S]*?)\\n---\\s*(?:\\n|$)/;\n\nconst FENCE_PATTERN = /^```/;\nconst LIST_ITEM_PATTERN = /^([ \\t]*)((?:[-*+])|(?:\\d+\\.))\\s+/;\nconst INDENTED_LINE_PATTERN = /^([ \\t]+)/;\n\ninterface ActiveListIndent {\n normalizedIndentWidth: number;\n sourceIndentWidth: number;\n}\n\ninterface MarkdownListState {\n isInCodeFence: boolean;\n activeListIndents: ActiveListIndent[];\n}\n\nfunction getExpandedIndentWidth(indent: string) {\n let width = 0;\n\n for (const char of indent) {\n width += char === \"\\t\" ? 4 : 1;\n }\n\n return width;\n}\n\nfunction findParentIndent(activeListIndents: ActiveListIndent[], sourceIndentWidth: number) {\n return [...activeListIndents].reverse().find((indent) => indent.sourceIndentWidth < sourceIndentWidth);\n}\n\nfunction toNormalizedIndent(indent: string, normalizedWidth: number, sourceWidth: number) {\n if (normalizedWidth === sourceWidth && !indent.includes(\"\\t\")) return indent;\n return \" \".repeat(normalizedWidth);\n}\n\nfunction normalizeIndentedContinuation(line: string, activeListIndents: ActiveListIndent[]) {\n const indentedLineMatch = line.match(INDENTED_LINE_PATTERN);\n if (!indentedLineMatch) {\n if (line.trim() !== \"\") {\n activeListIndents.length = 0;\n }\n\n return line;\n }\n\n const sourceIndentWidth = getExpandedIndentWidth(indentedLineMatch[1]);\n const parentLevel = findParentIndent(activeListIndents, sourceIndentWidth);\n if (!parentLevel) return line;\n\n const normalizedIndentWidth = sourceIndentWidth + (parentLevel.normalizedIndentWidth - parentLevel.sourceIndentWidth);\n const normalizedIndent = toNormalizedIndent(indentedLineMatch[1], normalizedIndentWidth, sourceIndentWidth);\n\n if (normalizedIndent === indentedLineMatch[1]) return line;\n\n return `${normalizedIndent}${line.slice(indentedLineMatch[1].length)}`;\n}\n\nfunction normalizeListItem(line: string, match: RegExpMatchArray, activeListIndents: ActiveListIndent[]) {\n const sourceIndentWidth = getExpandedIndentWidth(match[1]);\n\n while (activeListIndents.length && activeListIndents.at(-1)!.sourceIndentWidth > sourceIndentWidth) {\n activeListIndents.pop();\n }\n\n const currentLevel = activeListIndents.at(-1);\n if (currentLevel?.sourceIndentWidth === sourceIndentWidth) {\n return `${toNormalizedIndent(match[1], currentLevel.normalizedIndentWidth, sourceIndentWidth)}${line.slice(match[1].length)}`;\n }\n\n const parentLevel = activeListIndents.at(-1);\n const indentStep = sourceIndentWidth - (parentLevel?.sourceIndentWidth ?? 0);\n let normalizedIndentWidth = sourceIndentWidth;\n\n if (parentLevel && indentStep === 2 && !match[1].includes(\"\\t\")) {\n normalizedIndentWidth = parentLevel.normalizedIndentWidth + 4;\n }\n\n activeListIndents.push({ normalizedIndentWidth, sourceIndentWidth });\n\n return `${toNormalizedIndent(match[1], normalizedIndentWidth, sourceIndentWidth)}${line.slice(match[1].length)}`;\n}\n\nfunction normalizeMarkdownLine(line: string, state: MarkdownListState) {\n if (FENCE_PATTERN.test(line.trimStart())) {\n state.isInCodeFence = !state.isInCodeFence;\n return line;\n }\n\n if (state.isInCodeFence) return line;\n\n const match = line.match(LIST_ITEM_PATTERN);\n if (!match) return normalizeIndentedContinuation(line, state.activeListIndents);\n\n return normalizeListItem(line, match, state.activeListIndents);\n}\n\nexport function normalizeMarkdownListIndentation(content: string) {\n const lines = content.split(\"\\n\");\n const state: MarkdownListState = { isInCodeFence: false, activeListIndents: [] };\n\n return lines.map((line) => normalizeMarkdownLine(line, state)).join(\"\\n\");\n}\n\nexport function splitFrontmatter(content: string) {\n const match = content.match(FRONTMATTER_PATTERN);\n if (!match) {\n return { frontmatter: \"\", body: content };\n }\n return {\n frontmatter: match[0],\n body: content.slice(match[0].length),\n };\n}\n"],"names":["StyledEditable","chakra","LexicalContentEditable","ContentEditable","t0","$","_c","onRef","fullWidth","t1","padding","isRichMessage","t2","scrollable","t3","undefined","t4","t5","t6","jsx","t7","Box","editor","t8","t9","Symbol","for","width","minH","t10","ScrollArea","ReferenceLinkNode","DecoratorNode","__href","__label","getType","clone","node","__key","constructor","href","label","key","createDOM","_config","_editor","document","createElement","updateDOM","_prevNode","_dom","getTextContent","exportJSON","type","version","importJSON","serializedNode","$createReferenceLinkNode","decorate","split","pop","isExternal","test","isProjectFile","ResourceBadge","window","open","projectPath","replace","event","CustomEvent","detail","dispatchEvent","location","assign","$isReferenceLinkNode","LINK_REGEXP","REFERENCE_LINK_TRANSFORMER","dependencies","export","regExp","importRegExp","textNode","match","value","theme","code","codeHighlight","atrule","attr","boolean","builtin","cdata","char","class","comment","constant","deleted","doctype","entity","function","important","inserted","keyword","namespace","number","operator","prolog","property","punctuation","regex","selector","string","symbol","tag","url","variable","embedBlock","base","focus","list","checklist","listitem","listitemChecked","listitemUnchecked","nested","olDepth","ol","ul","heading","h1","h2","h3","paragraph","text","underline","italic","link","quote","reference","table","tableCell","tableRow","tableCellHeader","layoutContainer","layoutItem","draggableBlockDemo","row","content","parserOptions","extensions","gfm","math","mdastExtensions","gfmFromMarkdown","mathFromMarkdown","serializerOptions","bullet","emphasis","gfmToMarkdown","mathToMarkdown","fence","fences","listItemIndent","rule","strong","fenceStart","line","normalizeLegacyInlineMath","codeFenceLength","result","index","length","end","slice","delimiter","normalizeLegacyMath","markdown","fencedCode","normalized","push","closingFence","character","openingFence","displayMath","indent","join","parseMarkdown","fromMarkdown","parseMarkdownSource","serializeMarkdownAst","tree","toMarkdown","trimEnd","serializeMarkdownBlock","children","serializeMarkdownInline","parseMarkdownInline","first","SAFE_LINK_PROTOCOLS","Set","SAFE_IMAGE_DATA_URL","PROTOCOL","hasSafeLinkProtocol","source","startsWith","has","URL","protocol","hasSafeImageProtocol","resolveMarkdownUrl","kind","resolver","resolved","MarkdownUrlContext","createContext","MarkdownUrlProvider","props","useMarkdownUrlResolver","useContext","MarkdownImage","alt","title","onLoad","Text","Image","MarkdownImageNode","__source","__alt","__title","isInline","getSource","getAlt","getTitle","$createMarkdownImageNode","keepFollowingSelectionVisible","isEditable","selectedBlockKey","getEditorState","read","selection","$getSelection","imageNode","$getNodeByKey","getKey","$isRangeSelection","isCollapsed","followingBlockKey","getTopLevelElement","getNextSibling","selectionBlock","anchor","getNode","blockKey","requestAnimationFrame","getElementByKey","scrollIntoView","block","$applyNodeReplacement","$isMarkdownImageNode","isHtmlComment","trim","sanitizeMarkdownHtml","clean","DOMPurify","sanitize","FORBID_TAGS","template","innerHTML","element","querySelectorAll","attribute","hasAttribute","sourceUrl","getAttribute","setAttribute","removeAttribute","RawHtml","display","elementRef","useRef","current","attachElement","fragment","element_0","replaceChildren","cloneNode","createTextNode","useEffect","RawHtmlNode","__display","previous","getDisplay","$createRawHtmlNode","$isRawHtmlNode","InlineChildren","nodes","Fragment","Code","Link","map","MarkdownInline","projectRows","rows","id","cells","projectColumns","columns","MarkdownDataTable","nodeKey","isSelected","setSelected","useState","containerRef","setTimeout","focusTable","change","update","$isDataTableNode","setTable","getTable","HISTORY_PUSH_TAG","updateTable","Object","fromEntries","column","handleColumnsChange","data","current_0","row_0","String","column_0","handleDataChange","node_0","$createParagraphNode","select","deleteTable","target","closest","preventDefault","handleClick","event_0","currentTarget","contains","relatedTarget","handleBlur","event_1","target_0","isTextInput","matches","isContentEditable","ctrlKey","metaKey","toLowerCase","stopPropagation","dispatchCommand","shiftKey","REDO_COMMAND","UNDO_COMMAND","handleKeyDown","t11","t12","t13","onColumnsChange","onDataChange","renderHeader","_temp","renderCell","_temp2","renderCellEditor","_temp3","t14","t15","t16","EditModeDataTable","_temp4","t17","DataTableNode","__table","getLatest","writable","getWritable","json","$createDataTableNode","headers","separator","column_1","context","onChange","LazyMarkdownEditor","row_1","safeLinkUrl","MarkdownLinkNode","LinkNode","__url","rel","__rel","__target","resolvedUrl","attributes","setURL","$createMarkdownLinkNode","$isMarkdownLinkNode","EquationComponent","React","lazy","$convertEquationElement","domNode","equation","inline","atob","$createEquationNode","EquationNode","__equation","__inline","getEquation","className","exportDOM","btoa","katex","render","displayMode","errorColor","output","strict","throwOnError","trust","importDOM","div","conversion","priority","span","prevNode","setEquation","Suspense","equationNode","$isEquationNode","EQUATION_INLINE","EQUATION_MULTILINE","regExpStart","regExpEnd","rootNode","_children","_startMatch","_endMatch","linesInBetween","append","EquationPlugin","HRNode","ElementNode","_serializedNode","$createHRNode","style","$isHRNode","MermaidComponent","MermaidNode","__code","getCode","setCode","$isMermaidNode","$createMermaidNode","HR","parentNode","UNDERLINE_INS_TAG","TextNode","markdownText","hasFormat","$createTextNode","toggleFormat","UNDERLINE_U_TAG","_node","BARE_URL_REGEXP","unescapeUrl","escapeLinkTitle","unescapeLinkTitle","normalizeEscapedUrlText","textContent","exportedText","escapedHref","LINK","exportChildren","$isLinkNode","$isAutoLinkNode","getURL","linkText","linkUrl","linkTitle","linkNode","$createLinkNode","openBracketAmount","closeBracketAmount","parsedLinkText","outsideLinkText","linkTextParts","normalizedLinkText","linkTextNode","setFormat","getFormat","insertBefore","trigger","BARE_URL","AutoLinkNode","autoLinkNode","$createAutoLinkNode","TRANSFORMERS_EXTENDED","editorNodes","QuoteNode","HeadingNode","ListNode","ListItemNode","CodeNode","CodeHighlightNode","baseEditorTransformers","CHECK_LIST","TRANSFORMERS","filter","transformer","LEXICAL_LINK","editorTransformers","editorTheme","isMermaidLanguage","language","replaceCodeNodeWithMermaidNode","getLanguage","ImportCodeBlocksPlugin","useLexicalComposerContext","codeNodes","$nodesOfType","n","CodeHighlightingPlugin","registerCodeHighlighting","exportText","exportInlineNode","$isTextNode","$isLineBreakNode","exportInlineChildren","$isElementNode","getChildren","flatMap","paragraphFrom","exportListItem","child","$isListNode","splice","exportList","$isParagraphNode","unshift","checked","getChecked","spread","ordered","getListType","start","getStart","$isListItemNode","exportTable","align","alignment","exportBlock","$isHeadingNode","depth","Number","getTag","$isQuoteNode","$isCodeNode","lang","meta","exportLexicalToMarkdown","root","REFERENCE_TOKEN","formattedText","formats","format","textWithReferences","matchAll","referenceDefinition","definitions","get","identifier","importInlineNode","importInlineChildren","$createLineBreakNode","definition","underlineDepth","Math","max","activeFormats","add","tableValue","tableIndex","prefix","header","columnCount","Array","from","_","rowIndex","columnIndex","appendListItem","parent","item","$createListItemNode","appendBlock","$createHeadingNode","$createQuoteNode","hasTasks","some","listType","$createListNode","$createCodeNode","importMarkdownToLexical","Map","$getRoot","clear","isEmpty","nodeOffsets","position","offset","isParent","isArray","isLink","linksIn","links","linkOccurrencesIn","removedLinkReplacements","baseline","sourceLinks","baselineBlock","baselineLinks","currentBlock","baselineBlockOffsets","currentBlockOffsets","linkOffsets","offsets","segments","baselineOffset","currentBlockSource","firstSegment","replacements","currentOffset","nextSegment","replacementEnd","indexOf","replacement","sourceLinkOffsets","baselineLinkOffsets","edit","normalization","findRemovedLinkReplacements","currentBlocks","preferredBlockIndex","usedCurrentBlocks","candidateIndexes","sort","left","right","currentBlockIndex","currentLinks","collectMarkdownLinkChanges","edits","normalizedCurrent","baselineTree","currentTree","normalizations","linkOrdinal","blockIndex","linkChanges","diffSourceBlocks","canonical","canonicalBlocks","sourceBlocks","every","diffChars","canonicalOffset","sourceOffset","canonicalEnd","sourceEnd","buildSourceMap","fill","removedAtBoundary","added","removed","nearestMappedOffset","values","direction","at","mappedStart","exact","mappedEnd","collectEdits","pending","finishPending","sourceLineEnding","includes","withSourceLineEndings","lineEnding","replaceAll","withoutPosition","entries","entry","sameMarkdownNode","JSON","stringify","tablesIn","Boolean","tableCells","sameTableShape","cellContentOffsets","cell","last","contentStart","contentEnd","cellOffsets","cellSource","leftDelimiter","rightDelimiter","endsWith","insideStart","leadingSpace","cellMarkdown","collectTableCellEdits","sourceTable","baselineTable","currentTable","sourceCells","baselineCells","currentCell","sourceCell","baselineCell","sourceContent","editsForTable","sourceOffsets","currentOffsets","collectTableChanges","sourceTables","baselineTables","currentTables","baselineOffsets","applyChanges","sourceMap","tableChanges","concat","createMarkdownSourceDocument","importToLexical","exportFromLexical","loadedBaseline","ToggleEditablePlugin","setEditable","TreeViewPlugin","TreeView","FRONTMATTER_PATTERN","splitFrontmatter","frontmatter","body"],"mappings":"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"}