@prosekit/extensions 0.11.4 → 0.11.5

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 (383) hide show
  1. package/dist/commit/style.css +2 -0
  2. package/dist/commit/style.css.map +1 -0
  3. package/dist/commit/style.js +1 -0
  4. package/dist/{drop-indicator-dB9rZn8e.js → drop-indicator-D1eHOhSi.js} +4 -4
  5. package/dist/drop-indicator-D1eHOhSi.js.map +1 -0
  6. package/dist/enter-rule-RdhEA900.js +2 -1
  7. package/dist/enter-rule-RdhEA900.js.map +1 -0
  8. package/dist/gap-cursor/style.css +2 -0
  9. package/dist/gap-cursor/style.css.map +1 -0
  10. package/dist/gap-cursor/style.js +1 -0
  11. package/dist/{input-rule-Gji4N7Oe.js → input-rule-B17tpW4m.js} +3 -3
  12. package/dist/input-rule-B17tpW4m.js.map +1 -0
  13. package/dist/list/style.css +2 -0
  14. package/dist/list/style.css.map +1 -0
  15. package/dist/list/style.js +1 -0
  16. package/dist/loro/style.css +2 -0
  17. package/dist/loro/style.css.map +1 -0
  18. package/dist/loro/style.js +1 -0
  19. package/dist/{mark-rule-D7zaa32n.js → mark-rule-BCqIZMDu.js} +3 -3
  20. package/dist/mark-rule-BCqIZMDu.js.map +1 -0
  21. package/dist/{paste-rule-Cca3n5TA.js → paste-rule-DIEJKIje.js} +5 -15
  22. package/dist/paste-rule-DIEJKIje.js.map +1 -0
  23. package/dist/placeholder/style.css +2 -0
  24. package/dist/placeholder/style.css.map +1 -0
  25. package/dist/placeholder/style.js +1 -0
  26. package/dist/prosekit-extensions-autocomplete.d.ts +2 -1
  27. package/dist/prosekit-extensions-autocomplete.d.ts.map +1 -0
  28. package/dist/prosekit-extensions-autocomplete.js +2 -9
  29. package/dist/prosekit-extensions-autocomplete.js.map +1 -0
  30. package/dist/prosekit-extensions-blockquote.d.ts +2 -1
  31. package/dist/prosekit-extensions-blockquote.d.ts.map +1 -0
  32. package/dist/prosekit-extensions-blockquote.js +4 -4
  33. package/dist/prosekit-extensions-blockquote.js.map +1 -0
  34. package/dist/prosekit-extensions-bold.d.ts +2 -1
  35. package/dist/prosekit-extensions-bold.d.ts.map +1 -0
  36. package/dist/prosekit-extensions-bold.js +3 -2
  37. package/dist/prosekit-extensions-bold.js.map +1 -0
  38. package/dist/prosekit-extensions-code-block.d.ts +2 -1
  39. package/dist/prosekit-extensions-code-block.d.ts.map +1 -0
  40. package/dist/prosekit-extensions-code-block.js +5 -6
  41. package/dist/prosekit-extensions-code-block.js.map +1 -0
  42. package/dist/prosekit-extensions-code.d.ts +2 -1
  43. package/dist/prosekit-extensions-code.d.ts.map +1 -0
  44. package/dist/prosekit-extensions-code.js +3 -2
  45. package/dist/prosekit-extensions-code.js.map +1 -0
  46. package/dist/prosekit-extensions-commit.d.ts +2 -1
  47. package/dist/prosekit-extensions-commit.d.ts.map +1 -0
  48. package/dist/prosekit-extensions-commit.js +11 -13
  49. package/dist/prosekit-extensions-commit.js.map +1 -0
  50. package/dist/prosekit-extensions-doc.d.ts +2 -1
  51. package/dist/prosekit-extensions-doc.d.ts.map +1 -0
  52. package/dist/prosekit-extensions-doc.js +2 -1
  53. package/dist/prosekit-extensions-doc.js.map +1 -0
  54. package/dist/prosekit-extensions-drop-cursor.d.ts +2 -1
  55. package/dist/prosekit-extensions-drop-cursor.d.ts.map +1 -0
  56. package/dist/prosekit-extensions-drop-cursor.js +2 -1
  57. package/dist/prosekit-extensions-drop-cursor.js.map +1 -0
  58. package/dist/prosekit-extensions-drop-indicator.d.ts +2 -1
  59. package/dist/prosekit-extensions-drop-indicator.d.ts.map +1 -0
  60. package/dist/prosekit-extensions-drop-indicator.js +1 -1
  61. package/dist/prosekit-extensions-enter-rule.d.ts +2 -1
  62. package/dist/prosekit-extensions-enter-rule.d.ts.map +1 -0
  63. package/dist/prosekit-extensions-file.d.ts +2 -1
  64. package/dist/prosekit-extensions-file.d.ts.map +1 -0
  65. package/dist/prosekit-extensions-file.js +4 -16
  66. package/dist/prosekit-extensions-file.js.map +1 -0
  67. package/dist/prosekit-extensions-gap-cursor.d.ts +2 -2
  68. package/dist/prosekit-extensions-gap-cursor.d.ts.map +1 -0
  69. package/dist/prosekit-extensions-gap-cursor.js +2 -1
  70. package/dist/prosekit-extensions-gap-cursor.js.map +1 -0
  71. package/dist/prosekit-extensions-hard-break.d.ts +2 -1
  72. package/dist/prosekit-extensions-hard-break.d.ts.map +1 -0
  73. package/dist/prosekit-extensions-hard-break.js +2 -1
  74. package/dist/prosekit-extensions-hard-break.js.map +1 -0
  75. package/dist/prosekit-extensions-heading.d.ts +2 -1
  76. package/dist/prosekit-extensions-heading.d.ts.map +1 -0
  77. package/dist/prosekit-extensions-heading.js +5 -6
  78. package/dist/prosekit-extensions-heading.js.map +1 -0
  79. package/dist/prosekit-extensions-horizontal-rule.d.ts +2 -1
  80. package/dist/prosekit-extensions-horizontal-rule.d.ts.map +1 -0
  81. package/dist/prosekit-extensions-horizontal-rule.js +5 -6
  82. package/dist/prosekit-extensions-horizontal-rule.js.map +1 -0
  83. package/dist/prosekit-extensions-image.d.ts +2 -1
  84. package/dist/prosekit-extensions-image.d.ts.map +1 -0
  85. package/dist/prosekit-extensions-image.js +3 -3
  86. package/dist/prosekit-extensions-image.js.map +1 -0
  87. package/dist/prosekit-extensions-input-rule.d.ts +2 -1
  88. package/dist/prosekit-extensions-input-rule.d.ts.map +1 -0
  89. package/dist/prosekit-extensions-input-rule.js +1 -1
  90. package/dist/prosekit-extensions-italic.d.ts +2 -1
  91. package/dist/prosekit-extensions-italic.d.ts.map +1 -0
  92. package/dist/prosekit-extensions-italic.js +3 -2
  93. package/dist/prosekit-extensions-italic.js.map +1 -0
  94. package/dist/prosekit-extensions-link.d.ts +2 -1
  95. package/dist/prosekit-extensions-link.d.ts.map +1 -0
  96. package/dist/prosekit-extensions-link.js +6 -5
  97. package/dist/prosekit-extensions-link.js.map +1 -0
  98. package/dist/prosekit-extensions-list.d.ts +22 -21
  99. package/dist/prosekit-extensions-list.d.ts.map +1 -0
  100. package/dist/prosekit-extensions-list.js +6 -7
  101. package/dist/prosekit-extensions-list.js.map +1 -0
  102. package/dist/prosekit-extensions-loro.d.ts +14 -13
  103. package/dist/prosekit-extensions-loro.d.ts.map +1 -0
  104. package/dist/prosekit-extensions-loro.js +2 -1
  105. package/dist/prosekit-extensions-loro.js.map +1 -0
  106. package/dist/prosekit-extensions-mark-rule.d.ts +2 -1
  107. package/dist/prosekit-extensions-mark-rule.d.ts.map +1 -0
  108. package/dist/prosekit-extensions-mark-rule.js +1 -1
  109. package/dist/prosekit-extensions-mention.d.ts +2 -1
  110. package/dist/prosekit-extensions-mention.d.ts.map +1 -0
  111. package/dist/prosekit-extensions-mention.js +2 -1
  112. package/dist/prosekit-extensions-mention.js.map +1 -0
  113. package/dist/prosekit-extensions-mod-click-prevention.d.ts +2 -1
  114. package/dist/prosekit-extensions-mod-click-prevention.d.ts.map +1 -0
  115. package/dist/prosekit-extensions-mod-click-prevention.js +2 -1
  116. package/dist/prosekit-extensions-mod-click-prevention.js.map +1 -0
  117. package/dist/prosekit-extensions-paragraph.d.ts +2 -1
  118. package/dist/prosekit-extensions-paragraph.d.ts.map +1 -0
  119. package/dist/prosekit-extensions-paragraph.js +2 -1
  120. package/dist/prosekit-extensions-paragraph.js.map +1 -0
  121. package/dist/prosekit-extensions-paste-rule.d.ts +2 -1
  122. package/dist/prosekit-extensions-paste-rule.d.ts.map +1 -0
  123. package/dist/prosekit-extensions-paste-rule.js +1 -1
  124. package/dist/prosekit-extensions-placeholder.d.ts +2 -1
  125. package/dist/prosekit-extensions-placeholder.d.ts.map +1 -0
  126. package/dist/prosekit-extensions-placeholder.js +5 -5
  127. package/dist/prosekit-extensions-placeholder.js.map +1 -0
  128. package/dist/prosekit-extensions-readonly.d.ts +2 -1
  129. package/dist/prosekit-extensions-readonly.d.ts.map +1 -0
  130. package/dist/prosekit-extensions-readonly.js +2 -1
  131. package/dist/prosekit-extensions-readonly.js.map +1 -0
  132. package/dist/prosekit-extensions-search.d.ts +2 -1
  133. package/dist/prosekit-extensions-search.d.ts.map +1 -0
  134. package/dist/prosekit-extensions-search.js +3 -3
  135. package/dist/prosekit-extensions-search.js.map +1 -0
  136. package/dist/prosekit-extensions-strike.d.ts +2 -1
  137. package/dist/prosekit-extensions-strike.d.ts.map +1 -0
  138. package/dist/prosekit-extensions-strike.js +3 -2
  139. package/dist/prosekit-extensions-strike.js.map +1 -0
  140. package/dist/prosekit-extensions-table.d.ts +47 -114
  141. package/dist/prosekit-extensions-table.d.ts.map +1 -0
  142. package/dist/prosekit-extensions-table.js +2 -2
  143. package/dist/prosekit-extensions-text-align.d.ts +2 -1
  144. package/dist/prosekit-extensions-text-align.d.ts.map +1 -0
  145. package/dist/prosekit-extensions-text-align.js +2 -1
  146. package/dist/prosekit-extensions-text-align.js.map +1 -0
  147. package/dist/prosekit-extensions-text.d.ts +2 -1
  148. package/dist/prosekit-extensions-text.d.ts.map +1 -0
  149. package/dist/prosekit-extensions-text.js +2 -1
  150. package/dist/prosekit-extensions-text.js.map +1 -0
  151. package/dist/prosekit-extensions-underline.d.ts +2 -1
  152. package/dist/prosekit-extensions-underline.d.ts.map +1 -0
  153. package/dist/prosekit-extensions-underline.js +2 -1
  154. package/dist/prosekit-extensions-underline.js.map +1 -0
  155. package/dist/prosekit-extensions-virtual-selection.d.ts +2 -1
  156. package/dist/prosekit-extensions-virtual-selection.d.ts.map +1 -0
  157. package/dist/prosekit-extensions-virtual-selection.js +3 -3
  158. package/dist/prosekit-extensions-virtual-selection.js.map +1 -0
  159. package/dist/prosekit-extensions-yjs.d.ts +2 -1
  160. package/dist/prosekit-extensions-yjs.d.ts.map +1 -0
  161. package/dist/prosekit-extensions-yjs.js +2 -1
  162. package/dist/prosekit-extensions-yjs.js.map +1 -0
  163. package/dist/prosekit-extensions.d.ts +1 -1
  164. package/dist/prosekit-extensions.js +1 -0
  165. package/dist/search/style.css +2 -0
  166. package/dist/search/style.css.map +1 -0
  167. package/dist/search/style.js +1 -0
  168. package/dist/shiki-highlighter-chunk-DSPM0T27.d.ts +2 -1
  169. package/dist/shiki-highlighter-chunk-DSPM0T27.d.ts.map +1 -0
  170. package/dist/shiki-highlighter-chunk.js +3 -5
  171. package/dist/shiki-highlighter-chunk.js.map +1 -0
  172. package/dist/table/style.css +2 -0
  173. package/dist/table/style.css.map +1 -0
  174. package/dist/table/style.js +1 -0
  175. package/dist/table-Bi7WsMI3.js +297 -0
  176. package/dist/table-Bi7WsMI3.js.map +1 -0
  177. package/dist/virtual-selection/style.css +2 -0
  178. package/dist/virtual-selection/style.css.map +1 -0
  179. package/dist/virtual-selection/style.js +1 -0
  180. package/dist/yjs/style.css +2 -0
  181. package/dist/yjs/style.css.map +1 -0
  182. package/dist/yjs/style.js +1 -0
  183. package/package.json +10 -9
  184. package/src/autocomplete/autocomplete-helpers.ts +74 -0
  185. package/src/autocomplete/autocomplete-plugin.ts +186 -0
  186. package/src/autocomplete/autocomplete-rule.ts +117 -0
  187. package/src/autocomplete/autocomplete.spec.ts +132 -0
  188. package/src/autocomplete/autocomplete.ts +29 -0
  189. package/src/autocomplete/index.ts +9 -0
  190. package/src/blockquote/blockquote-commands.ts +32 -0
  191. package/src/blockquote/blockquote-input-rule.ts +14 -0
  192. package/src/blockquote/blockquote-keymap.spec.ts +45 -0
  193. package/src/blockquote/blockquote-keymap.ts +31 -0
  194. package/src/blockquote/blockquote-spec.ts +24 -0
  195. package/src/blockquote/blockquote.ts +34 -0
  196. package/src/blockquote/index.ts +14 -0
  197. package/src/bold/bold-commands.ts +23 -0
  198. package/src/bold/bold-input-rule.spec.ts +51 -0
  199. package/src/bold/bold-input-rule.ts +18 -0
  200. package/src/bold/bold-keymap.ts +14 -0
  201. package/src/bold/bold-spec.ts +53 -0
  202. package/src/bold/bold.ts +32 -0
  203. package/src/bold/index.ts +14 -0
  204. package/src/code/code-commands.ts +23 -0
  205. package/src/code/code-input-rule.ts +18 -0
  206. package/src/code/code-keymap.ts +14 -0
  207. package/src/code/code-spec.ts +28 -0
  208. package/src/code/code.ts +32 -0
  209. package/src/code/index.ts +14 -0
  210. package/src/code-block/code-block-commands.ts +44 -0
  211. package/src/code-block/code-block-highlight.ts +40 -0
  212. package/src/code-block/code-block-input-rule.ts +36 -0
  213. package/src/code-block/code-block-keymap.ts +61 -0
  214. package/src/code-block/code-block-shiki.ts +58 -0
  215. package/src/code-block/code-block-spec.spec.ts +164 -0
  216. package/src/code-block/code-block-spec.ts +71 -0
  217. package/src/code-block/code-block-types.ts +8 -0
  218. package/src/code-block/code-block.ts +46 -0
  219. package/src/code-block/index.ts +32 -0
  220. package/src/code-block/shiki-bundle.ts +8 -0
  221. package/src/code-block/shiki-highlighter-chunk.ts +84 -0
  222. package/src/code-block/shiki-highlighter.ts +22 -0
  223. package/src/code-block/shiki-parser.ts +36 -0
  224. package/src/commit/index.ts +330 -0
  225. package/src/commit/style.css +7 -0
  226. package/src/doc/index.ts +21 -0
  227. package/src/drop-cursor/drop-cursor.ts +46 -0
  228. package/src/drop-cursor/index.ts +5 -0
  229. package/src/drop-indicator/drop-indicator-facet.ts +84 -0
  230. package/src/drop-indicator/drop-indicator-plugin.ts +147 -0
  231. package/src/drop-indicator/drop-indicator.ts +37 -0
  232. package/src/drop-indicator/drop-target.ts +168 -0
  233. package/src/drop-indicator/index.ts +14 -0
  234. package/src/drop-indicator/types.ts +90 -0
  235. package/src/enter-rule/index.ts +241 -0
  236. package/src/file/file-drop-handler.ts +75 -0
  237. package/src/file/file-paste-handler.spec.ts +95 -0
  238. package/src/file/file-paste-handler.ts +59 -0
  239. package/src/file/file-upload.ts +119 -0
  240. package/src/file/helpers.ts +39 -0
  241. package/src/file/index.ts +16 -0
  242. package/src/gap-cursor/gap-cursor.ts +28 -0
  243. package/src/gap-cursor/index.ts +4 -0
  244. package/src/gap-cursor/style.css +25 -0
  245. package/src/hard-break/hard-break-commands.ts +31 -0
  246. package/src/hard-break/hard-break-keymap.spec.ts +45 -0
  247. package/src/hard-break/hard-break-keymap.ts +16 -0
  248. package/src/hard-break/hard-break-spec.ts +31 -0
  249. package/src/hard-break/hard-break.ts +32 -0
  250. package/src/hard-break/index.ts +13 -0
  251. package/src/heading/heading-commands.ts +37 -0
  252. package/src/heading/heading-input-rule.ts +22 -0
  253. package/src/heading/heading-keymap.spec.ts +53 -0
  254. package/src/heading/heading-keymap.ts +40 -0
  255. package/src/heading/heading-spec.ts +39 -0
  256. package/src/heading/heading-types.ts +3 -0
  257. package/src/heading/heading.ts +34 -0
  258. package/src/heading/index.ts +15 -0
  259. package/src/horizontal-rule/horizontal-rule-commands.spec.ts +61 -0
  260. package/src/horizontal-rule/horizontal-rule-commands.ts +37 -0
  261. package/src/horizontal-rule/horizontal-rule-input-rule.spec.ts +61 -0
  262. package/src/horizontal-rule/horizontal-rule-input-rule.ts +26 -0
  263. package/src/horizontal-rule/horizontal-rule-spec.ts +21 -0
  264. package/src/horizontal-rule/horizontal-rule.ts +29 -0
  265. package/src/horizontal-rule/index.ts +14 -0
  266. package/src/image/image-commands.ts +27 -0
  267. package/src/image/image-spec.ts +72 -0
  268. package/src/image/image.ts +25 -0
  269. package/src/image/index.ts +13 -0
  270. package/src/index.ts +1 -0
  271. package/src/input-rule/index.ts +237 -0
  272. package/src/italic/index.ts +14 -0
  273. package/src/italic/italic-commands.spec.ts +75 -0
  274. package/src/italic/italic-commands.ts +23 -0
  275. package/src/italic/italic-input-rule.spec.ts +25 -0
  276. package/src/italic/italic-input-rule.ts +18 -0
  277. package/src/italic/italic-keymap.ts +14 -0
  278. package/src/italic/italic-spec.ts +35 -0
  279. package/src/italic/italic.ts +34 -0
  280. package/src/link/index.spec.ts +88 -0
  281. package/src/link/index.ts +156 -0
  282. package/src/link/link-paste-rule.spec.ts +194 -0
  283. package/src/link/link-paste-rule.ts +22 -0
  284. package/src/link/link-regex.spec.ts +82 -0
  285. package/src/link/link-regex.ts +79 -0
  286. package/src/link/link-types.ts +8 -0
  287. package/src/list/index.ts +25 -0
  288. package/src/list/list-commands.ts +61 -0
  289. package/src/list/list-drop-indicator.ts +37 -0
  290. package/src/list/list-input-rules.ts +14 -0
  291. package/src/list/list-keymap.spec.ts +39 -0
  292. package/src/list/list-keymap.ts +48 -0
  293. package/src/list/list-plugins.ts +35 -0
  294. package/src/list/list-serializer.ts +38 -0
  295. package/src/list/list-spec.ts +60 -0
  296. package/src/list/list-types.spec.ts +10 -0
  297. package/src/list/list-types.ts +23 -0
  298. package/src/list/list.spec.ts +134 -0
  299. package/src/list/list.ts +38 -0
  300. package/src/list/style.css +128 -0
  301. package/src/loro/index.ts +17 -0
  302. package/src/loro/loro-commands.ts +27 -0
  303. package/src/loro/loro-cursor-plugin.ts +28 -0
  304. package/src/loro/loro-keymap.ts +23 -0
  305. package/src/loro/loro-sync-plugin.ts +14 -0
  306. package/src/loro/loro-undo-plugin.ts +12 -0
  307. package/src/loro/loro.ts +75 -0
  308. package/src/loro/style.css +33 -0
  309. package/src/mark-rule/apply.ts +129 -0
  310. package/src/mark-rule/index.ts +2 -0
  311. package/src/mark-rule/mark-rule.spec.ts +123 -0
  312. package/src/mark-rule/mark-rule.ts +48 -0
  313. package/src/mark-rule/range.ts +107 -0
  314. package/src/mark-rule/types.ts +30 -0
  315. package/src/mention/index.ts +90 -0
  316. package/src/mod-click-prevention/index.ts +35 -0
  317. package/src/paragraph/index.ts +7 -0
  318. package/src/paragraph/paragraph-commands.ts +29 -0
  319. package/src/paragraph/paragraph-keymap.ts +15 -0
  320. package/src/paragraph/paragraph-spec.ts +31 -0
  321. package/src/paragraph/paragraph.ts +37 -0
  322. package/src/paste-rule/index.ts +10 -0
  323. package/src/paste-rule/mark-paste-rule.spec.ts +112 -0
  324. package/src/paste-rule/mark-paste-rule.ts +194 -0
  325. package/src/paste-rule/paste-rule-plugin.ts +53 -0
  326. package/src/paste-rule/paste-rule.spec.ts +96 -0
  327. package/src/paste-rule/paste-rule.ts +60 -0
  328. package/src/paste-rule/split-text-by-regex.spec.ts +97 -0
  329. package/src/paste-rule/split-text-by-regex.ts +44 -0
  330. package/src/placeholder/index.ts +113 -0
  331. package/src/placeholder/style.css +7 -0
  332. package/src/readonly/index.ts +22 -0
  333. package/src/search/index.ts +140 -0
  334. package/src/search/style.css +13 -0
  335. package/src/strike/index.ts +101 -0
  336. package/src/table/index.ts +53 -0
  337. package/src/table/style.css +42 -0
  338. package/src/table/table-commands/delete-cell-selection.spec.ts +41 -0
  339. package/src/table/table-commands/delete-cell-selection.ts +1 -0
  340. package/src/table/table-commands/exit-table.spec.ts +45 -0
  341. package/src/table/table-commands/exit-table.ts +49 -0
  342. package/src/table/table-commands/insert-table.spec.ts +39 -0
  343. package/src/table/table-commands/insert-table.ts +80 -0
  344. package/src/table/table-commands/move-table-column.spec.ts +618 -0
  345. package/src/table/table-commands/move-table-column.ts +4 -0
  346. package/src/table/table-commands/move-table-row.spec.ts +380 -0
  347. package/src/table/table-commands/move-table-row.ts +4 -0
  348. package/src/table/table-commands/select-table-cell.spec.ts +34 -0
  349. package/src/table/table-commands/select-table-cell.ts +35 -0
  350. package/src/table/table-commands/select-table-column.spec.ts +33 -0
  351. package/src/table/table-commands/select-table-column.ts +39 -0
  352. package/src/table/table-commands/select-table-row.spec.ts +32 -0
  353. package/src/table/table-commands/select-table-row.ts +39 -0
  354. package/src/table/table-commands/select-table.spec.ts +36 -0
  355. package/src/table/table-commands/select-table.ts +50 -0
  356. package/src/table/table-commands.ts +110 -0
  357. package/src/table/table-drop-indicator.ts +40 -0
  358. package/src/table/table-plugins.ts +15 -0
  359. package/src/table/table-spec.spec.ts +113 -0
  360. package/src/table/table-spec.ts +109 -0
  361. package/src/table/table-utils.ts +16 -0
  362. package/src/table/table.ts +49 -0
  363. package/src/table/test-utils.ts +28 -0
  364. package/src/testing/clipboard.ts +58 -0
  365. package/src/testing/format-html.ts +5 -0
  366. package/src/testing/index.ts +161 -0
  367. package/src/testing/keyboard.ts +36 -0
  368. package/src/testing/markdown.ts +23 -0
  369. package/src/text/index.ts +24 -0
  370. package/src/text-align/index.ts +133 -0
  371. package/src/types/assert-type-equal.ts +8 -0
  372. package/src/underline/index.ts +83 -0
  373. package/src/virtual-selection/index.ts +100 -0
  374. package/src/virtual-selection/style.css +5 -0
  375. package/src/yjs/index.ts +22 -0
  376. package/src/yjs/style.css +31 -0
  377. package/src/yjs/yjs-commands.ts +27 -0
  378. package/src/yjs/yjs-cursor-plugin.ts +25 -0
  379. package/src/yjs/yjs-keymap.ts +23 -0
  380. package/src/yjs/yjs-sync-plugin.ts +23 -0
  381. package/src/yjs/yjs-undo-plugin.ts +87 -0
  382. package/src/yjs/yjs.ts +84 -0
  383. package/dist/table-CPI9ZxbK.js +0 -760
@@ -51,4 +51,5 @@ declare function defineCodeInputRule(): PlainExtension;
51
51
  */
52
52
  declare function defineCodeKeymap(): PlainExtension;
53
53
  //#endregion
54
- export { type CodeCommandsExtension, type CodeExtension, type CodeSpecExtension, defineCode, defineCodeCommands, defineCodeInputRule, defineCodeKeymap, defineCodeSpec };
54
+ export { type CodeCommandsExtension, type CodeExtension, type CodeSpecExtension, defineCode, defineCodeCommands, defineCodeInputRule, defineCodeKeymap, defineCodeSpec };
55
+ //# sourceMappingURL=prosekit-extensions-code.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prosekit-extensions-code.d.ts","names":[],"sources":["../src/code/code-commands.ts","../src/code/code-spec.ts","../src/code/code.ts","../src/code/code-input-rule.ts","../src/code/code-keymap.ts"],"sourcesContent":[],"mappings":";;;;;;;AASY,KAAA,qBAAA,GAAwB,SAAA,CAAA;EASpB,QAAA,EAAA;;;;ACThB;;;AAAgC,iBDShB,kBAAA,CAAA,CCTgB,EDSM,qBCTN;;;;;ADAhC;AASgB,KCTJ,iBAAA,GAAoB,SDSM,CAAA;;UCP5B;;AAFV,CAAA,CAAA;;;;AAAyC,iBASzB,cAAA,CAAA,CATyB,EASP,iBATO;;;;ADAzC;AASA;KECY,aAAA,GAAgB,OAAO,mBAAmB;;;ADVtD;AAA6B,iBCeb,UAAA,CAAA,CDfa,ECeC,aDfD;;;;;;ADAjB,iBGCI,mBAAA,CAAA,CHDoB,EGCG,cHDM;;;;;;AAAjC,iBIAI,gBAAA,CAAA,CJAoB,EIAA,cJAS"}
@@ -1,4 +1,4 @@
1
- import { defineMarkInputRule } from "./input-rule-Gji4N7Oe.js";
1
+ import { defineMarkInputRule } from "./input-rule-B17tpW4m.js";
2
2
  import { canUseRegexLookbehind, defineCommands, defineKeymap, defineMarkSpec, toggleMark, union } from "@prosekit/core";
3
3
 
4
4
  //#region src/code/code-commands.ts
@@ -56,4 +56,5 @@ function defineCode() {
56
56
  }
57
57
 
58
58
  //#endregion
59
- export { defineCode, defineCodeCommands, defineCodeInputRule, defineCodeKeymap, defineCodeSpec };
59
+ export { defineCode, defineCodeCommands, defineCodeInputRule, defineCodeKeymap, defineCodeSpec };
60
+ //# sourceMappingURL=prosekit-extensions-code.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prosekit-extensions-code.js","names":[],"sources":["../src/code/code-commands.ts","../src/code/code-input-rule.ts","../src/code/code-keymap.ts","../src/code/code-spec.ts","../src/code/code.ts"],"sourcesContent":["import {\n defineCommands,\n toggleMark,\n type Extension,\n} from '@prosekit/core'\n\n/**\n * @internal\n */\nexport type CodeCommandsExtension = Extension<{\n Commands: {\n toggleCode: []\n }\n}>\n\n/**\n * @internal\n */\nexport function defineCodeCommands(): CodeCommandsExtension {\n return defineCommands({\n toggleCode: () => toggleMark({ type: 'code' }),\n })\n}\n","import {\n canUseRegexLookbehind,\n type PlainExtension,\n} from '@prosekit/core'\n\nimport { defineMarkInputRule } from '../input-rule'\n\n/**\n * @internal\n */\nexport function defineCodeInputRule(): PlainExtension {\n return defineMarkInputRule({\n regex: canUseRegexLookbehind()\n ? /(?<=\\s|^)`([^\\s`]|[^\\s`][^`]*[^\\s`])`$/\n : /`([^\\s`]|[^\\s`][^`]*[^\\s`])`$/,\n type: 'code',\n })\n}\n","import {\n defineKeymap,\n toggleMark,\n type PlainExtension,\n} from '@prosekit/core'\n\n/**\n * @internal\n */\nexport function defineCodeKeymap(): PlainExtension {\n return defineKeymap({\n 'Mod-e': toggleMark({ type: 'code' }),\n })\n}\n","import {\n defineMarkSpec,\n type Extension,\n} from '@prosekit/core'\nimport type { Attrs } from '@prosekit/pm/model'\n\n/**\n * @internal\n */\nexport type CodeSpecExtension = Extension<{\n Marks: {\n code: Attrs\n }\n}>\n\n/**\n * @internal\n */\nexport function defineCodeSpec(): CodeSpecExtension {\n return defineMarkSpec({\n name: 'code',\n parseDOM: [{ tag: 'code' }],\n code: true,\n toDOM() {\n return ['code', 0]\n },\n })\n}\n","import {\n union,\n type Union,\n} from '@prosekit/core'\n\nimport {\n defineCodeCommands,\n type CodeCommandsExtension,\n} from './code-commands'\nimport { defineCodeInputRule } from './code-input-rule'\nimport { defineCodeKeymap } from './code-keymap'\nimport {\n defineCodeSpec,\n type CodeSpecExtension,\n} from './code-spec'\n\n/**\n * @internal\n */\nexport type CodeExtension = Union<[CodeSpecExtension, CodeCommandsExtension]>\n\n/**\n * @public\n */\nexport function defineCode(): CodeExtension {\n return union(\n defineCodeSpec(),\n defineCodeCommands(),\n defineCodeKeymap(),\n defineCodeInputRule(),\n )\n}\n"],"mappings":";;;;;;;AAkBA,SAAgB,qBAA4C;AAC1D,QAAO,eAAe,EACpB,kBAAkB,WAAW,EAAE,MAAM,QAAQ,CAAC,EAC/C,CAAC;;;;;;;;ACXJ,SAAgB,sBAAsC;AACpD,QAAO,oBAAoB;EACzB,OAAO,uBAAuB,GAC1B,2CACA;EACJ,MAAM;EACP,CAAC;;;;;;;;ACPJ,SAAgB,mBAAmC;AACjD,QAAO,aAAa,EAClB,SAAS,WAAW,EAAE,MAAM,QAAQ,CAAC,EACtC,CAAC;;;;;;;;ACMJ,SAAgB,iBAAoC;AAClD,QAAO,eAAe;EACpB,MAAM;EACN,UAAU,CAAC,EAAE,KAAK,QAAQ,CAAC;EAC3B,MAAM;EACN,QAAQ;AACN,UAAO,CAAC,QAAQ,EAAE;;EAErB,CAAC;;;;;;;;ACFJ,SAAgB,aAA4B;AAC1C,QAAO,MACL,gBAAgB,EAChB,oBAAoB,EACpB,kBAAkB,EAClB,qBAAqB,CACtB"}
@@ -49,4 +49,5 @@ declare class CommitRecorder {
49
49
  */
50
50
  declare function defineCommitRecorder(commitRecorder: CommitRecorder): PlainExtension;
51
51
  //#endregion
52
- export { type Commit, CommitRecorder, defineCommitRecorder, defineCommitViewer };
52
+ export { type Commit, CommitRecorder, defineCommitRecorder, defineCommitViewer };
53
+ //# sourceMappingURL=prosekit-extensions-commit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prosekit-extensions-commit.d.ts","names":[],"sources":["../src/commit/index.ts"],"sourcesContent":[],"mappings":";;;;;;;;AAmB2B;UAejB,MAAA,CAAM;;;;EAaC,GAAA,EATV,QASU;EA2MR;;;QAAoC,EAhNnC,QAgNmC;EAAc;AAAA;;;OAsC/C,EAjPH,QAiPG,EAAA;;;AASW;;iBA/Cd,kBAAA,CAwDqC,MAAA,EAxDV,MAwDU,CAAA,EAxDD,cAwDC;cAjDxC,cAAA,CAiDyD;EAAc,QAAA,MAAA;;;;;;;YAxCjE;;;;YAsBA;;;;YASA;;;;;iBASH,oBAAA,iBAAqC,iBAAiB"}
@@ -7,13 +7,10 @@ import { ChangeSet } from "prosemirror-changeset";
7
7
 
8
8
  //#region src/commit/index.ts
9
9
  function getChanges(doc, parent, steps) {
10
- const initSet = ChangeSet.create(parent);
11
- const currSet = initSet.addSteps(doc, steps.map((step) => step.getMap()), null);
12
- return currSet.changes;
10
+ return ChangeSet.create(parent).addSteps(doc, steps.map((step) => step.getMap()), null).changes;
13
11
  }
14
12
  function renderDivWeight(view) {
15
- const document = view.dom.ownerDocument;
16
- return document.createElement("div");
13
+ return view.dom.ownerDocument.createElement("div");
17
14
  }
18
15
  function decorateDeletionSlice(slice) {
19
16
  let { openStart, openEnd, content } = slice;
@@ -49,8 +46,7 @@ function decorateDeletionSlice(slice) {
49
46
  const render = (view) => {
50
47
  const document = view.dom.ownerDocument;
51
48
  const element = document.createElement(isInline ? "span" : "div");
52
- const serializer = DOMSerializer.fromSchema(schema);
53
- serializer.serializeFragment(content, { document }, element);
49
+ DOMSerializer.fromSchema(schema).serializeFragment(content, { document }, element);
54
50
  element.classList.add("prosekit-commit-deletion");
55
51
  return element;
56
52
  };
@@ -76,8 +72,7 @@ function decorateChange(prev, change) {
76
72
  return decorations;
77
73
  }
78
74
  function decorateCommit(doc, parent, steps) {
79
- const changes = getChanges(doc, parent, steps);
80
- const decorations = changes.flatMap((change) => decorateChange(parent, change));
75
+ const decorations = getChanges(doc, parent, steps).flatMap((change) => decorateChange(parent, change));
81
76
  return DecorationSet.create(doc, decorations);
82
77
  }
83
78
  function defineCommitDecoration(commit) {
@@ -108,9 +103,11 @@ function defineCommitViewer(commit) {
108
103
  return union(defineDefaultState({ defaultDoc: commit.doc }), defineCommitDecoration(commit));
109
104
  }
110
105
  var CommitRecorder = class {
111
- parent = null;
112
- doc = null;
113
- steps = [];
106
+ constructor() {
107
+ this.parent = null;
108
+ this.doc = null;
109
+ this.steps = [];
110
+ }
114
111
  /**
115
112
  * Return a commit object including all changes since the last commit. `null`
116
113
  * will be returned if there is no change.
@@ -160,4 +157,5 @@ function defineCommitRecorder(commitRecorder) {
160
157
  }
161
158
 
162
159
  //#endregion
163
- export { CommitRecorder, defineCommitRecorder, defineCommitViewer };
160
+ export { CommitRecorder, defineCommitRecorder, defineCommitViewer };
161
+ //# sourceMappingURL=prosekit-extensions-commit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prosekit-extensions-commit.js","names":["decorations: Decoration[]","commit: Commit"],"sources":["../src/commit/index.ts"],"sourcesContent":["import {\n defineDefaultState,\n definePlugin,\n jsonFromNode,\n union,\n type NodeJSON,\n type PlainExtension,\n type StepJSON,\n} from '@prosekit/core'\nimport {\n DOMSerializer,\n Fragment,\n Slice,\n type ProseMirrorNode,\n} from '@prosekit/pm/model'\nimport {\n PluginKey,\n ProseMirrorPlugin,\n type Transaction,\n} from '@prosekit/pm/state'\nimport { Step } from '@prosekit/pm/transform'\nimport {\n Decoration,\n DecorationSet,\n type EditorView,\n} from '@prosekit/pm/view'\nimport {\n ChangeSet,\n type Change,\n} from 'prosemirror-changeset'\n\n/**\n * A JSON representation of a commit.\n */\ninterface Commit {\n /**\n * The current doc node in the JSON format\n */\n doc: NodeJSON\n /**\n * The parent node in the JSON format\n */\n parent: NodeJSON\n /**\n * An array of steps in the JSON format that transform the parent node to the\n * current doc node.\n */\n steps: StepJSON[]\n}\n\nfunction getChanges(\n doc: ProseMirrorNode,\n parent: ProseMirrorNode,\n steps: Step[],\n): readonly Change[] {\n const initSet = ChangeSet.create(parent)\n const currSet = initSet.addSteps(\n doc,\n steps.map((step) => step.getMap()),\n null,\n )\n return currSet.changes\n}\n\nfunction renderDivWeight(view: EditorView): HTMLElement {\n const document = view.dom.ownerDocument\n return document.createElement('div')\n}\n\nfunction decorateDeletionSlice(\n slice: Slice,\n): Array<(view: EditorView) => HTMLElement> {\n // Get the fragment of the deleted content\n let { openStart, openEnd, content } = slice\n\n while (openStart > 0 && openEnd > 0 && content.childCount === 1) {\n openStart--\n openEnd--\n content = content.child(0).content\n }\n\n // Nothing to render\n if (content.childCount === 0) {\n return []\n }\n\n // For example, if the slice is\n // {\n // openStart: 1,\n // openEnd: 1,\n // content: <p>Hello</p><p>World</p>\n // }\n // We should render the following decorations:\n // <span>Hello</span>\n // <div></div>\n // <span>World</span>\n if (openStart > 0 && openEnd > 0 && content.childCount === 2) {\n const head = Fragment.from([content.child(0)])\n const tail = Fragment.from([content.child(1)])\n return [\n ...decorateDeletionSlice(new Slice(head, openStart, openStart)),\n renderDivWeight,\n ...decorateDeletionSlice(new Slice(tail, openEnd, openEnd)),\n ]\n }\n\n // For example, if the slice is\n // {\n // openStart: 1,\n // openEnd: 0,\n // content: <p>Hello</p><p>World</p>\n // }\n // We should render the following decorations:\n // <span>Hello</span>\n // <div><p>World</p></div>\n if (openStart > 0 && content.childCount >= 2) {\n const nodes = content.content\n const head = Fragment.from(nodes.slice(0, 1))\n const body = Fragment.from(nodes.slice(1))\n\n return [\n ...decorateDeletionSlice(new Slice(head, openStart, openStart)),\n ...decorateDeletionSlice(new Slice(body, 0, openEnd)),\n ]\n }\n\n // For example, if the slice is\n // {\n // openStart: 0,\n // openEnd: 1,\n // content: <p>Hello</p><p>World</p>\n // }\n // We should render the following decorations:\n // <div><p>Hello</p></div>\n // <span>World</span>\n if (openEnd > 0 && content.childCount >= 2) {\n const nodes = content.content\n const body = Fragment.from(nodes.slice(0, -1))\n const tail = Fragment.from(nodes.slice(-1))\n return [\n ...decorateDeletionSlice(new Slice(body, openStart, 0)),\n ...decorateDeletionSlice(new Slice(tail, openEnd, openEnd)),\n ]\n }\n\n const schema = content.child(0).type.schema\n const isInline = content.child(0).isInline\n\n const render = (view: EditorView): HTMLElement => {\n const document = view.dom.ownerDocument\n\n // Render the fragment to HTML\n const element = document.createElement(isInline ? 'span' : 'div')\n const serializer = DOMSerializer.fromSchema(schema)\n serializer.serializeFragment(content, { document }, element)\n\n // Add the class to the element\n element.classList.add('prosekit-commit-deletion')\n return element\n }\n\n return [render]\n}\n\nfunction decorateDeletion(\n /** The doc node before the deletion */\n doc: ProseMirrorNode,\n /** The start position of the deleted text in the doc node */\n from: number,\n /** The end position of the deleted text in the doc node */\n to: number,\n /** The insert position of the decoration in the doc node after the change */\n pos: number,\n): Decoration[] {\n const slice = doc.slice(from, to)\n\n const renders = decorateDeletionSlice(slice)\n const count = renders.length\n\n return renders.map((render, index) =>\n Decoration.widget(pos, render, {\n side: -20 - count + index,\n // Ensure the text in the decoration is able to be selected.\n ignoreSelection: true,\n })\n )\n}\n\nfunction decorateAddition(\n /** The start position of the inserted text in the doc node */\n from: number,\n /** The end position of the inserted text in the doc node */\n to: number,\n): Decoration {\n return Decoration.inline(from, to, { class: 'prosekit-commit-addition' })\n}\n\nfunction decorateChange(prev: ProseMirrorNode, change: Change): Decoration[] {\n const { fromA, toA, fromB, toB } = change\n const decorations: Decoration[] = []\n\n if (fromA < toA) {\n decorations.push(...decorateDeletion(prev, fromA, toA, fromB))\n }\n if (fromB < toB) {\n decorations.push(decorateAddition(fromB, toB))\n }\n\n return decorations\n}\n\nfunction decorateCommit(\n doc: ProseMirrorNode,\n parent: ProseMirrorNode,\n steps: Step[],\n): DecorationSet {\n const changes = getChanges(doc, parent, steps)\n const decorations = changes.flatMap((change) => decorateChange(parent, change))\n return DecorationSet.create(doc, decorations)\n}\n\nfunction defineCommitDecoration(commit: Commit): PlainExtension {\n const key = new PluginKey<DecorationSet>('prosekit-commit-decoration')\n\n return definePlugin(({ schema }): ProseMirrorPlugin => {\n const parent = schema.nodeFromJSON(commit.parent)\n const steps = commit.steps.map((step) => Step.fromJSON(schema, step))\n\n return new ProseMirrorPlugin({\n key,\n state: {\n init: (_, instance): DecorationSet => {\n return decorateCommit(instance.doc, parent, steps)\n },\n apply: (tr, deco: DecorationSet): DecorationSet => {\n return deco.map(tr.mapping, tr.doc)\n },\n },\n props: {\n decorations: (state): DecorationSet | undefined => {\n return key.getState(state)\n },\n },\n })\n })\n}\n\n/**\n * Define an extension to display the changes from the given commit in the editor.\n */\nfunction defineCommitViewer(commit: Commit): PlainExtension {\n return union(\n defineDefaultState({ defaultDoc: commit.doc }),\n defineCommitDecoration(commit),\n )\n}\n\nclass CommitRecorder {\n private parent: ProseMirrorNode | null = null\n private doc: ProseMirrorNode | null = null\n private steps: Step[] = []\n\n /**\n * Return a commit object including all changes since the last commit. `null`\n * will be returned if there is no change.\n */\n commit(): Commit | null {\n if (\n !this.parent\n || !this.doc\n || this.steps.length === 0\n || this.parent.eq(this.doc)\n ) {\n return null\n }\n\n const commit: Commit = {\n doc: jsonFromNode(this.doc),\n parent: jsonFromNode(this.parent),\n steps: this.steps.map((step) => step.toJSON() as StepJSON),\n }\n this.init(this.doc)\n return commit\n }\n\n /**\n * @internal\n */\n init(doc: ProseMirrorNode): void {\n this.doc = doc\n this.parent = doc\n this.steps = []\n }\n\n /**\n * @internal\n */\n apply(tr: Transaction): void {\n this.steps.push(...tr.steps)\n this.doc = tr.doc\n }\n}\n\n/**\n * Define an extension that can record the changes in the editor.\n */\nfunction defineCommitRecorder(commitRecorder: CommitRecorder): PlainExtension {\n const key = new PluginKey<DecorationSet>('prosekit-commit-recorder')\n\n return definePlugin(\n new ProseMirrorPlugin({\n key,\n state: {\n init: (_, state): void => {\n commitRecorder.init(state.doc)\n },\n apply: (tr): void => {\n commitRecorder.apply(tr)\n },\n },\n }),\n )\n}\n\nexport {\n CommitRecorder,\n defineCommitRecorder,\n defineCommitViewer,\n type Commit,\n}\n"],"mappings":";;;;;;;;AAkDA,SAAS,WACP,KACA,QACA,OACmB;AAOnB,QANgB,UAAU,OAAO,OAAO,CAChB,SACtB,KACA,MAAM,KAAK,SAAS,KAAK,QAAQ,CAAC,EAClC,KACD,CACc;;AAGjB,SAAS,gBAAgB,MAA+B;AAEtD,QADiB,KAAK,IAAI,cACV,cAAc,MAAM;;AAGtC,SAAS,sBACP,OAC0C;CAE1C,IAAI,EAAE,WAAW,SAAS,YAAY;AAEtC,QAAO,YAAY,KAAK,UAAU,KAAK,QAAQ,eAAe,GAAG;AAC/D;AACA;AACA,YAAU,QAAQ,MAAM,EAAE,CAAC;;AAI7B,KAAI,QAAQ,eAAe,EACzB,QAAO,EAAE;AAaX,KAAI,YAAY,KAAK,UAAU,KAAK,QAAQ,eAAe,GAAG;EAC5D,MAAM,OAAO,SAAS,KAAK,CAAC,QAAQ,MAAM,EAAE,CAAC,CAAC;EAC9C,MAAM,OAAO,SAAS,KAAK,CAAC,QAAQ,MAAM,EAAE,CAAC,CAAC;AAC9C,SAAO;GACL,GAAG,sBAAsB,IAAI,MAAM,MAAM,WAAW,UAAU,CAAC;GAC/D;GACA,GAAG,sBAAsB,IAAI,MAAM,MAAM,SAAS,QAAQ,CAAC;GAC5D;;AAYH,KAAI,YAAY,KAAK,QAAQ,cAAc,GAAG;EAC5C,MAAM,QAAQ,QAAQ;EACtB,MAAM,OAAO,SAAS,KAAK,MAAM,MAAM,GAAG,EAAE,CAAC;EAC7C,MAAM,OAAO,SAAS,KAAK,MAAM,MAAM,EAAE,CAAC;AAE1C,SAAO,CACL,GAAG,sBAAsB,IAAI,MAAM,MAAM,WAAW,UAAU,CAAC,EAC/D,GAAG,sBAAsB,IAAI,MAAM,MAAM,GAAG,QAAQ,CAAC,CACtD;;AAYH,KAAI,UAAU,KAAK,QAAQ,cAAc,GAAG;EAC1C,MAAM,QAAQ,QAAQ;EACtB,MAAM,OAAO,SAAS,KAAK,MAAM,MAAM,GAAG,GAAG,CAAC;EAC9C,MAAM,OAAO,SAAS,KAAK,MAAM,MAAM,GAAG,CAAC;AAC3C,SAAO,CACL,GAAG,sBAAsB,IAAI,MAAM,MAAM,WAAW,EAAE,CAAC,EACvD,GAAG,sBAAsB,IAAI,MAAM,MAAM,SAAS,QAAQ,CAAC,CAC5D;;CAGH,MAAM,SAAS,QAAQ,MAAM,EAAE,CAAC,KAAK;CACrC,MAAM,WAAW,QAAQ,MAAM,EAAE,CAAC;CAElC,MAAM,UAAU,SAAkC;EAChD,MAAM,WAAW,KAAK,IAAI;EAG1B,MAAM,UAAU,SAAS,cAAc,WAAW,SAAS,MAAM;AAEjE,EADmB,cAAc,WAAW,OAAO,CACxC,kBAAkB,SAAS,EAAE,UAAU,EAAE,QAAQ;AAG5D,UAAQ,UAAU,IAAI,2BAA2B;AACjD,SAAO;;AAGT,QAAO,CAAC,OAAO;;AAGjB,SAAS,iBAEP,KAEA,MAEA,IAEA,KACc;CACd,MAAM,QAAQ,IAAI,MAAM,MAAM,GAAG;CAEjC,MAAM,UAAU,sBAAsB,MAAM;CAC5C,MAAM,QAAQ,QAAQ;AAEtB,QAAO,QAAQ,KAAK,QAAQ,UAC1B,WAAW,OAAO,KAAK,QAAQ;EAC7B,MAAM,MAAM,QAAQ;EAEpB,iBAAiB;EAClB,CAAC,CACH;;AAGH,SAAS,iBAEP,MAEA,IACY;AACZ,QAAO,WAAW,OAAO,MAAM,IAAI,EAAE,OAAO,4BAA4B,CAAC;;AAG3E,SAAS,eAAe,MAAuB,QAA8B;CAC3E,MAAM,EAAE,OAAO,KAAK,OAAO,QAAQ;CACnC,MAAMA,cAA4B,EAAE;AAEpC,KAAI,QAAQ,IACV,aAAY,KAAK,GAAG,iBAAiB,MAAM,OAAO,KAAK,MAAM,CAAC;AAEhE,KAAI,QAAQ,IACV,aAAY,KAAK,iBAAiB,OAAO,IAAI,CAAC;AAGhD,QAAO;;AAGT,SAAS,eACP,KACA,QACA,OACe;CAEf,MAAM,cADU,WAAW,KAAK,QAAQ,MAAM,CAClB,SAAS,WAAW,eAAe,QAAQ,OAAO,CAAC;AAC/E,QAAO,cAAc,OAAO,KAAK,YAAY;;AAG/C,SAAS,uBAAuB,QAAgC;CAC9D,MAAM,MAAM,IAAI,UAAyB,6BAA6B;AAEtE,QAAO,cAAc,EAAE,aAAgC;EACrD,MAAM,SAAS,OAAO,aAAa,OAAO,OAAO;EACjD,MAAM,QAAQ,OAAO,MAAM,KAAK,SAAS,KAAK,SAAS,QAAQ,KAAK,CAAC;AAErE,SAAO,IAAI,kBAAkB;GAC3B;GACA,OAAO;IACL,OAAO,GAAG,aAA4B;AACpC,YAAO,eAAe,SAAS,KAAK,QAAQ,MAAM;;IAEpD,QAAQ,IAAI,SAAuC;AACjD,YAAO,KAAK,IAAI,GAAG,SAAS,GAAG,IAAI;;IAEtC;GACD,OAAO,EACL,cAAc,UAAqC;AACjD,WAAO,IAAI,SAAS,MAAM;MAE7B;GACF,CAAC;GACF;;;;;AAMJ,SAAS,mBAAmB,QAAgC;AAC1D,QAAO,MACL,mBAAmB,EAAE,YAAY,OAAO,KAAK,CAAC,EAC9C,uBAAuB,OAAO,CAC/B;;AAGH,IAAM,iBAAN,MAAqB;;gBACsB;aACH;eACd,EAAE;;;;;;CAM1B,SAAwB;AACtB,MACE,CAAC,KAAK,UACH,CAAC,KAAK,OACN,KAAK,MAAM,WAAW,KACtB,KAAK,OAAO,GAAG,KAAK,IAAI,CAE3B,QAAO;EAGT,MAAMC,SAAiB;GACrB,KAAK,aAAa,KAAK,IAAI;GAC3B,QAAQ,aAAa,KAAK,OAAO;GACjC,OAAO,KAAK,MAAM,KAAK,SAAS,KAAK,QAAQ,CAAa;GAC3D;AACD,OAAK,KAAK,KAAK,IAAI;AACnB,SAAO;;;;;CAMT,KAAK,KAA4B;AAC/B,OAAK,MAAM;AACX,OAAK,SAAS;AACd,OAAK,QAAQ,EAAE;;;;;CAMjB,MAAM,IAAuB;AAC3B,OAAK,MAAM,KAAK,GAAG,GAAG,MAAM;AAC5B,OAAK,MAAM,GAAG;;;;;;AAOlB,SAAS,qBAAqB,gBAAgD;CAC5E,MAAM,MAAM,IAAI,UAAyB,2BAA2B;AAEpE,QAAO,aACL,IAAI,kBAAkB;EACpB;EACA,OAAO;GACL,OAAO,GAAG,UAAgB;AACxB,mBAAe,KAAK,MAAM,IAAI;;GAEhC,QAAQ,OAAa;AACnB,mBAAe,MAAM,GAAG;;GAE3B;EACF,CAAC,CACH"}
@@ -16,4 +16,5 @@ type DocExtension = Extension<{
16
16
  */
17
17
  declare function defineDoc(): DocExtension;
18
18
  //#endregion
19
- export { DocExtension, defineDoc };
19
+ export { DocExtension, defineDoc };
20
+ //# sourceMappingURL=prosekit-extensions-doc.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prosekit-extensions-doc.d.ts","names":[],"sources":["../src/doc/index.ts"],"sourcesContent":[],"mappings":";;;;;;;AASA;AAAwB,KAAZ,YAAA,GAAe,SAAH,CAAA;OAA6B,EAAA;IAA1B,GAAA,EAA0B,KAA1B;EAAS,CAAA;AAKpC,CAAA,CAAA;;;;iBAAgB,SAAA,CAAA,GAAa"}
@@ -13,4 +13,5 @@ function defineDoc() {
13
13
  }
14
14
 
15
15
  //#endregion
16
- export { defineDoc };
16
+ export { defineDoc };
17
+ //# sourceMappingURL=prosekit-extensions-doc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prosekit-extensions-doc.js","names":[],"sources":["../src/doc/index.ts"],"sourcesContent":["import {\n defineNodeSpec,\n type Extension,\n} from '@prosekit/core'\nimport type { Attrs } from '@prosekit/pm/model'\n\n/**\n * @internal\n */\nexport type DocExtension = Extension<{ Nodes: { doc: Attrs } }>\n\n/**\n * @public\n */\nexport function defineDoc(): DocExtension {\n return defineNodeSpec({\n name: 'doc',\n content: 'block+',\n topNode: true,\n })\n}\n"],"mappings":";;;;;;AAcA,SAAgB,YAA0B;AACxC,QAAO,eAAe;EACpB,MAAM;EACN,SAAS;EACT,SAAS;EACV,CAAC"}
@@ -34,4 +34,5 @@ type DropCursorExtension = PlainExtension;
34
34
  */
35
35
  declare function defineDropCursor(options?: DropCursorOptions): DropCursorExtension;
36
36
  //#endregion
37
- export { type DropCursorExtension, type DropCursorOptions, defineDropCursor };
37
+ export { type DropCursorExtension, type DropCursorOptions, defineDropCursor };
38
+ //# sourceMappingURL=prosekit-extensions-drop-cursor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prosekit-extensions-drop-cursor.d.ts","names":[],"sources":["../src/drop-cursor/drop-cursor.ts"],"sourcesContent":[],"mappings":";;;UAMiB,iBAAA;;AAAjB;AAwBA;AAWA;;OACY,CAAA,EAAA,MAAA,GAAA,KAAA;;;;;;;;;;;;;;;KAZA,mBAAA,GAAsB;;;;;;;;;;iBAWlB,gBAAA,WACJ,oBACT"}
@@ -16,4 +16,5 @@ function defineDropCursor(options) {
16
16
  }
17
17
 
18
18
  //#endregion
19
- export { defineDropCursor };
19
+ export { defineDropCursor };
20
+ //# sourceMappingURL=prosekit-extensions-drop-cursor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prosekit-extensions-drop-cursor.js","names":[],"sources":["../src/drop-cursor/drop-cursor.ts"],"sourcesContent":["import {\n definePlugin,\n type PlainExtension,\n} from '@prosekit/core'\nimport { dropCursor } from 'prosemirror-dropcursor'\n\nexport interface DropCursorOptions {\n /**\n * The color of the cursor. Use `false` to apply no color and rely only on class.\n *\n * @default 'black'\n */\n color?: string | false\n\n /**\n * The precise width of the cursor in pixels.\n *\n * @default 1\n */\n width?: number\n\n /**\n * A CSS class name to add to the cursor element.\n */\n class?: string\n}\n\n/**\n * @internal\n */\nexport type DropCursorExtension = PlainExtension\n\n/**\n * Show up a decoration at the drop position when something is dragged over the editor.\n *\n * See [prosemirror-dropcursor](https://github.com/ProseMirror/prosemirror-dropcursor) for more information.\n *\n * You probably want to use `<DropIndicator />` component instead of this extension.\n *\n * @public\n */\nexport function defineDropCursor(\n options?: DropCursorOptions,\n): DropCursorExtension {\n return definePlugin(() => dropCursor(options))\n}\n"],"mappings":";;;;;;;;;;;;;AAyCA,SAAgB,iBACd,SACqB;AACrB,QAAO,mBAAmB,WAAW,QAAQ,CAAC"}
@@ -131,4 +131,5 @@ declare function defineDropIndicator(options?: DropIndicatorOptions): DropIndica
131
131
  */
132
132
  interface DropIndicatorOptions extends DropIndicatorPayload {}
133
133
  //#endregion
134
- export { type DragEventHandler, type DragEventHandlerOptions, type DropIndicatorExtension, type DropIndicatorOptions, type Line, type Point, type ShowHandler, type ShowHandlerOptions, type ViewDragging, defineDropIndicator };
134
+ export { type DragEventHandler, type DragEventHandlerOptions, type DropIndicatorExtension, type DropIndicatorOptions, type Line, type Point, type ShowHandler, type ShowHandlerOptions, type ViewDragging, defineDropIndicator };
135
+ //# sourceMappingURL=prosekit-extensions-drop-indicator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prosekit-extensions-drop-indicator.d.ts","names":[],"sources":["../src/drop-indicator/types.ts","../src/drop-indicator/drop-indicator-facet.ts","../src/drop-indicator/drop-indicator.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;AAWA;AAOA;;;AAYS,KAnBG,gBAAA,GAmBH,CAAA,OAAA,EAnBgC,uBAmBhC,EAAA,GAAA,OAAA;;AAQT;AAOA;;;AAcQ,UAzCS,uBAAA,CAyCT;EAAI;AAMZ;AAQA;EAAqB,IAAA,EAnDb,UAmDa;;;;EAYJ,GAAA,EAAA,MAAA;EAAY;;;EAGE,KAAA,EA1DtB,SA0DsB;;;;AC9D/B;;;AASW,KDGC,WAAA,GCHD,CAAA,OAAA,EDGyB,kBCHzB,EAAA,GAAA,IAAA;;;;;;ACzBC,UFmCK,kBAAA,CEnCiB;EAelB;;;MAEb,EFsBK,UEtBL;EAAsB;AASzB;;;;;;QFuBQ;;;;;UAMS,KAAA;;;;;;;UAQA,IAAA;eACF;eACA;;;;;;;;;UAUE,YAAA;kBACC;;kBAEA;;;;AA7ElB;AAOA;;AAIQ,UCIS,oBAAA,CDJT;;;AAgBR;EAOiB,MAAA,CAAA,ECfN,WDeM;EAAkB;;;EAcvB,MAAA,CAAA,ECxBD,YDwBC;EAMK;AAQjB;;;;EAEoB,MAAA,CAAA,ECjCT,gBDiCS;AAUpB;;;;;;KE3EY,sBAAA,GAAyB;AFCrC;AAOA;;;;;AAoBA;AAOA;;;;;AAoBA;AAQiB,iBEhDD,mBAAA,CFgDK,OAAA,CAAA,EE/CT,oBF+CS,CAAA,EE9ClB,sBF8CkB;;;;;AAYrB;AAA6B,UEjDZ,oBAAA,SAA6B,oBFiDjB,CAAA"}
@@ -1,3 +1,3 @@
1
- import { defineDropIndicator } from "./drop-indicator-dB9rZn8e.js";
1
+ import { defineDropIndicator } from "./drop-indicator-D1eHOhSi.js";
2
2
 
3
3
  export { defineDropIndicator };
@@ -108,4 +108,5 @@ declare function defineTextBlockEnterRule({
108
108
  stop
109
109
  }: TextBlockEnterRuleOptions): PlainExtension;
110
110
  //#endregion
111
- export { EnterRuleHandler, EnterRuleHandlerOptions, EnterRuleOptions, TextBlockEnterRuleOptions, defineEnterRule, defineTextBlockEnterRule };
111
+ export { EnterRuleHandler, EnterRuleHandlerOptions, EnterRuleOptions, TextBlockEnterRuleOptions, defineEnterRule, defineTextBlockEnterRule };
112
+ //# sourceMappingURL=prosekit-extensions-enter-rule.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prosekit-extensions-enter-rule.d.ts","names":[],"sources":["../src/enter-rule/index.ts"],"sourcesContent":[],"mappings":";;;;;;;;AA8BA;;;AAmBS,UAnBQ,uBAAA,CAmBR;EAAe;AAMxB;;OAAyC,EArBhC,WAqBgC;;;AAOzC;EAA4B,IAAA,EAAA,MAAA;;;;EAwBX,EAAA,EAAA,MAAA;EAAyB;;;OAehC,EApDD,eAoDC;;;;AAmBV;AAA+B,KAjEnB,gBAAA,GAiEmB,CAAA,OAAA,EAjEU,uBAiEV,EAAA,GAjEsC,WAiEtC,GAAA,IAAA;;;;;;AAIK,KA9DxB,gBAAA,GA8DwB;EAcpB;;;OAEd,EA1EO,MA0EP;;;;SAG6B,EAxEpB,gBAwEoB;EAAc;;;;;;;;;;;;UAzD5B,yBAAA;;;;SAIR;;;;iBAKQ;;;;;UAMP,wBAAwB,qBAAqB;;;;;;;;;;;;;;;;;iBAmBvC,eAAA;;;;GAIb,mBAAmB;;;;;;;;;;iBAcN,wBAAA;;;;;GAKb,4BAA4B"}
@@ -122,4 +122,5 @@ declare class UploadTask<Result> {
122
122
  static delete(objectURL: string): void;
123
123
  }
124
124
  //#endregion
125
- export { type FileDropHandlerOptions, type FilePasteHandlerOptions, type UploadProgress, UploadTask, type Uploader, type UploaderOptions, defineFileDropHandler, defineFilePasteHandler };
125
+ export { type FileDropHandler, type FileDropHandlerOptions, type FilePasteHandler, type FilePasteHandlerOptions, type UploadProgress, UploadTask, type Uploader, type UploaderOptions, defineFileDropHandler, defineFilePasteHandler };
126
+ //# sourceMappingURL=prosekit-extensions-file.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prosekit-extensions-file.d.ts","names":[],"sources":["../src/file/file-drop-handler.ts","../src/file/file-paste-handler.ts","../src/file/file-upload.ts"],"sourcesContent":[],"mappings":";;;;UAYiB,sBAAA;;AAAjB;;MAIQ,EAAA,UAAA;;;;EAwBI,KAAA,EAnBH,SAmBG;EAII;;;MAEb,EApBK,IAoBL;EAAc;;;;AClCjB;;;;;;AAuBA;AAIgB,KDCJ,eAAA,GCD0B,CAAA,OAAA,EDE3B,sBCF2B,EAAA,GAAA,OAAA,GAAA,IAAA;AAAA,iBDKtB,qBAAA,CCLsB,OAAA,EDM3B,eCN2B,CAAA,EDOnC,cCPmC;;;UA3BrB,uBAAA;;ADAjB;;MAIQ,ECAA,UDAA;;;;EAwBI,KAAA,ECnBH,cDmBkB;EAIX;;;MAEb,ECpBK,IDoBL;;;;;AClCH;;;AASS,KAcG,gBAAA,GAdH,CAAA,OAAA,EAeE,uBAfF,EAAA,GAAA,OAAA,GAAA,IAAA;AAKD,iBAaQ,sBAAA,CAbR,OAAA,EAcG,gBAdH,CAAA,EAeL,cAfK;;;;;;UCvBS,cAAA;EFSA,MAAA,EAAA,MAAA;EAAsB,KAAA,EAAA,MAAA;;AAS9B,UETQ,eAAA,CFSR;;;AAmBT;EAIgB,IAAA,EE5BR,IF4BQ;EAAqB;;;EAEpB,UAAA,EAAA,CAAA,QAAA,EEzBQ,cFyBR,EAAA,GAAA,IAAA;;;;AClCjB;;AAIQ,KCYI,QDZJ,CAAA,MAAA,CAAA,GAAA,CAAA,OAAA,ECYiC,eDZjC,EAAA,GCYqD,ODZrD,CCY6D,MDZ7D,CAAA;;;;AAmBI,cCFC,UDEe,CAAA,MACjB,CAAA,CAAA;EAGK;;;;;;;;ACpChB;EASiB,UAAA,IAAA,EAAA,OAAe;EAAA;;;EASO,SAAA,QAAA,EA4BlB,OA5BkB,CA4BV,MA5BU,CAAA;EAO3B,QAAA,WAAQ;EAAA;;;;;AAKpB;EAAuB,WAAA,CAAA;IAAA,IAAA;IAAA;GAAA,EAAA;IAgBM,IAAA,EAUa,IAVb;IAAR,QAAA,EAUqC,QAVrC,CAU8C,MAV9C,CAAA;;;;;mBAUqC,CAAA,QAAA,EAAA,CAAA,QAAA,EAgCjC,cAhCiC,EAAA,GAAA,IAAA,CAAA,EAiCrD,YAjCqD;;;;SA+CrD,GAAA,CAAA,SAAA,OAAA,CAAA,CAAA,SAAA,EAAA,MAAA,CAAA,EAAA,UAAA,CAAW,MAAX,CAAA,GAAA,SAAA;EAAU"}
@@ -72,21 +72,6 @@ const facet = defineFacet({
72
72
  * A class that represents a upload task.
73
73
  */
74
74
  var UploadTask = class {
75
- /**
76
- * An [object URL](https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL)
77
- * representing the file to be uploaded. This URL will be revoked once the
78
- * upload is complete successfully.
79
- */
80
- objectURL;
81
- /**
82
- * A boolean indicating whether the upload is complete (either successfully or with an error).
83
- */
84
- done = false;
85
- /**
86
- * A promise that fulfills once the upload is complete, or rejects if an error occurs.
87
- */
88
- finished;
89
- subscribers = [];
90
75
  /**
91
76
  * Creates a new upload task. You can find the upload task by its object URL
92
77
  * later using `UploadTask.get()`.
@@ -94,6 +79,8 @@ var UploadTask = class {
94
79
  * @param options - The options for the upload task.
95
80
  */
96
81
  constructor({ file, uploader }) {
82
+ this.done = false;
83
+ this.subscribers = [];
97
84
  this.objectURL = URL.createObjectURL(file);
98
85
  this.finished = new Promise((resolve, reject) => {
99
86
  const maybePromise = uploader({
@@ -138,4 +125,5 @@ var UploadTask = class {
138
125
  const store = /* @__PURE__ */ new Map();
139
126
 
140
127
  //#endregion
141
- export { UploadTask, defineFileDropHandler, defineFilePasteHandler };
128
+ export { UploadTask, defineFileDropHandler, defineFilePasteHandler };
129
+ //# sourceMappingURL=prosekit-extensions-file.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prosekit-extensions-file.js","names":["getFiles","facet","getFiles","dropHandler: DropHandler","pasteHandler: PasteHandler"],"sources":["../src/file/helpers.ts","../src/file/file-drop-handler.ts","../src/file/file-paste-handler.ts","../src/file/file-upload.ts"],"sourcesContent":["import type { EditorView } from '@prosekit/pm/view'\n\ntype FileHandler<E extends Event> = (options: {\n view: EditorView\n event: E\n file: File\n}) => boolean | void\n\nfunction handleFile<E extends Event>(\n view: EditorView,\n event: E,\n file: File,\n handlers: FileHandler<E>[],\n) {\n // The last item in `handlers` should has the highest priority.\n for (let i = handlers.length - 1; i >= 0; i--) {\n const handler = handlers[i]\n if (handler({ view, event, file })) {\n return true\n }\n }\n return false\n}\n\nexport function handleEvent<E extends Event>(\n view: EditorView,\n event: E,\n handlers: FileHandler<E>[],\n getFiles: (event: E) => File[],\n): boolean {\n const files = getFiles(event)\n let handled = false\n for (const file of files) {\n if (handleFile(view, event, file, handlers)) {\n handled = true\n }\n }\n return handled\n}\n","import {\n defineFacet,\n defineFacetPayload,\n editorEventFacet,\n type DropHandler,\n type EditorEventPayload,\n type PlainExtension,\n} from '@prosekit/core'\nimport type { EditorView } from '@prosekit/pm/view'\n\nimport { handleEvent } from './helpers'\n\nexport interface FileDropHandlerOptions {\n /**\n * The editor view.\n */\n view: EditorView\n\n /**\n * The event that triggered the drop.\n */\n event: DragEvent\n\n /**\n * The file that was dropped.\n */\n file: File\n\n /**\n * The position of the document where the file was dropped.\n */\n pos: number\n}\n\n/**\n * A function that handles one of the files in a drop event.\n *\n * Returns `true` if the file was handled and thus should not be handled by\n * other handlers.\n */\nexport type FileDropHandler = (\n options: FileDropHandlerOptions,\n) => boolean | void\n\nexport function defineFileDropHandler(\n handler: FileDropHandler,\n): PlainExtension {\n return defineFacetPayload(facet, [handler]) as PlainExtension\n}\n\nfunction getFiles(event: DragEvent) {\n return Array.from(event.dataTransfer?.files ?? [])\n}\n\nconst facet = defineFacet<FileDropHandler, EditorEventPayload>({\n parent: editorEventFacet,\n singleton: true,\n reducer: (handlers: FileDropHandler[]): EditorEventPayload => {\n const dropHandler: DropHandler = (view, event): boolean => {\n const position = view.posAtCoords({ left: event.x, top: event.y })\n if (!position) {\n return false\n }\n const pos = position.inside > 0 ? position.inside : position.pos\n\n return handleEvent<DragEvent>(\n view,\n event,\n handlers.map((handler) => (options) => handler({ ...options, pos })),\n getFiles,\n )\n }\n return ['drop', dropHandler]\n },\n})\n","import {\n defineFacet,\n defineFacetPayload,\n editorEventFacet,\n type EditorEventPayload,\n type PasteHandler,\n type PlainExtension,\n} from '@prosekit/core'\nimport type { EditorView } from '@prosekit/pm/view'\n\nimport { handleEvent } from './helpers'\n\nexport interface FilePasteHandlerOptions {\n /**\n * The editor view.\n */\n view: EditorView\n\n /**\n * The event that triggered the paste.\n */\n event: ClipboardEvent\n\n /**\n * The file that was pasted.\n */\n file: File\n}\n\n/**\n * A function that handles one of the files in a paste event.\n *\n * Returns `true` if the file was handled and thus should not be handled by\n * other handlers.\n */\nexport type FilePasteHandler = (\n options: FilePasteHandlerOptions,\n) => boolean | void\n\nexport function defineFilePasteHandler(\n handler: FilePasteHandler,\n): PlainExtension {\n return defineFacetPayload(facet, [handler]) as PlainExtension\n}\n\nfunction getFiles(event: ClipboardEvent) {\n return Array.from(event.clipboardData?.files ?? [])\n}\n\nconst facet = defineFacet<FilePasteHandler, EditorEventPayload>({\n parent: editorEventFacet,\n singleton: true,\n reducer: (handlers: FilePasteHandler[]): EditorEventPayload => {\n const pasteHandler: PasteHandler = (view, event): boolean => {\n return handleEvent<ClipboardEvent>(view, event, handlers, getFiles)\n }\n return ['paste', pasteHandler]\n },\n})\n","/**\n * An interface representing the upload progress.\n */\nexport interface UploadProgress {\n // A number representing the amount of work already performed by the\n // underlying process.\n loaded: number\n // A number representing the total amount of work that the underlying\n // process is in the progress of performing.\n total: number\n}\n\nexport interface UploaderOptions {\n /**\n * The file to be uploaded.\n */\n file: File\n\n /**\n * A callback function that should be called with the upload progress updates.\n */\n onProgress: (progress: UploadProgress) => void\n}\n\n/**\n * The implementation of the actual upload function. You need to implement this\n * function to upload files to your desired destination.\n */\nexport type Uploader<Result> = (options: UploaderOptions) => Promise<Result>\n\n/**\n * A class that represents a upload task.\n */\nexport class UploadTask<Result> {\n /**\n * An [object URL](https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL)\n * representing the file to be uploaded. This URL will be revoked once the\n * upload is complete successfully.\n */\n readonly objectURL: string\n\n /**\n * A boolean indicating whether the upload is complete (either successfully or with an error).\n */\n protected done = false\n\n /**\n * A promise that fulfills once the upload is complete, or rejects if an error occurs.\n */\n readonly finished: Promise<Result>\n\n private subscribers: ((progress: UploadProgress) => void)[] = []\n\n /**\n * Creates a new upload task. You can find the upload task by its object URL\n * later using `UploadTask.get()`.\n *\n * @param options - The options for the upload task.\n */\n constructor({ file, uploader }: { file: File; uploader: Uploader<Result> }) {\n this.objectURL = URL.createObjectURL(file)\n this.finished = new Promise((resolve, reject) => {\n const maybePromise = uploader({\n file,\n onProgress: (progress) => {\n for (const subscriber of this.subscribers) {\n subscriber(progress)\n }\n },\n })\n Promise.resolve(maybePromise).then(\n (result) => {\n this.done = true\n URL.revokeObjectURL(this.objectURL)\n resolve(result)\n },\n (error) => {\n this.done = true\n reject(\n new Error('[prosekit] Failed to upload file', { cause: error }),\n )\n },\n )\n })\n store.set(this.objectURL, this)\n }\n\n /**\n * Subscribes to progress updates. Returns a function to unsubscribe.\n */\n public subscribeProgress(\n callback: (progress: UploadProgress) => void,\n ): VoidFunction {\n this.subscribers.push(callback)\n return () => {\n this.subscribers = this.subscribers.filter(\n (subscriber) => subscriber !== callback,\n )\n }\n }\n\n /**\n * Finds an upload task by its object URL.\n */\n static get<Result = unknown>(\n objectURL: string,\n ): UploadTask<Result> | undefined {\n return store.get(objectURL) as UploadTask<Result> | undefined\n }\n\n /**\n * Deletes an upload task by its object URL.\n */\n static delete(objectURL: string): void {\n store.delete(objectURL)\n }\n}\n\nconst store = new Map<string, UploadTask<unknown>>()\n"],"mappings":";;;AAQA,SAAS,WACP,MACA,OACA,MACA,UACA;AAEA,MAAK,IAAI,IAAI,SAAS,SAAS,GAAG,KAAK,GAAG,KAAK;EAC7C,MAAM,UAAU,SAAS;AACzB,MAAI,QAAQ;GAAE;GAAM;GAAO;GAAM,CAAC,CAChC,QAAO;;AAGX,QAAO;;AAGT,SAAgB,YACd,MACA,OACA,UACA,YACS;CACT,MAAM,QAAQA,WAAS,MAAM;CAC7B,IAAI,UAAU;AACd,MAAK,MAAM,QAAQ,MACjB,KAAI,WAAW,MAAM,OAAO,MAAM,SAAS,CACzC,WAAU;AAGd,QAAO;;;;;ACOT,SAAgB,sBACd,SACgB;AAChB,QAAO,mBAAmBC,SAAO,CAAC,QAAQ,CAAC;;AAG7C,SAASC,WAAS,OAAkB;AAClC,QAAO,MAAM,KAAK,MAAM,cAAc,SAAS,EAAE,CAAC;;AAGpD,MAAMD,UAAQ,YAAiD;CAC7D,QAAQ;CACR,WAAW;CACX,UAAU,aAAoD;EAC5D,MAAME,eAA4B,MAAM,UAAmB;GACzD,MAAM,WAAW,KAAK,YAAY;IAAE,MAAM,MAAM;IAAG,KAAK,MAAM;IAAG,CAAC;AAClE,OAAI,CAAC,SACH,QAAO;GAET,MAAM,MAAM,SAAS,SAAS,IAAI,SAAS,SAAS,SAAS;AAE7D,UAAO,YACL,MACA,OACA,SAAS,KAAK,aAAa,YAAY,QAAQ;IAAE,GAAG;IAAS;IAAK,CAAC,CAAC,EACpED,WACD;;AAEH,SAAO,CAAC,QAAQ,YAAY;;CAE/B,CAAC;;;;ACnCF,SAAgB,uBACd,SACgB;AAChB,QAAO,mBAAmB,OAAO,CAAC,QAAQ,CAAC;;AAG7C,SAAS,SAAS,OAAuB;AACvC,QAAO,MAAM,KAAK,MAAM,eAAe,SAAS,EAAE,CAAC;;AAGrD,MAAM,QAAQ,YAAkD;CAC9D,QAAQ;CACR,WAAW;CACX,UAAU,aAAqD;EAC7D,MAAME,gBAA8B,MAAM,UAAmB;AAC3D,UAAO,YAA4B,MAAM,OAAO,UAAU,SAAS;;AAErE,SAAO,CAAC,SAAS,aAAa;;CAEjC,CAAC;;;;;;;ACzBF,IAAa,aAAb,MAAgC;;;;;;;CA0B9B,YAAY,EAAE,MAAM,YAAwD;cAf3D;qBAO6C,EAAE;AAS9D,OAAK,YAAY,IAAI,gBAAgB,KAAK;AAC1C,OAAK,WAAW,IAAI,SAAS,SAAS,WAAW;GAC/C,MAAM,eAAe,SAAS;IAC5B;IACA,aAAa,aAAa;AACxB,UAAK,MAAM,cAAc,KAAK,YAC5B,YAAW,SAAS;;IAGzB,CAAC;AACF,WAAQ,QAAQ,aAAa,CAAC,MAC3B,WAAW;AACV,SAAK,OAAO;AACZ,QAAI,gBAAgB,KAAK,UAAU;AACnC,YAAQ,OAAO;OAEhB,UAAU;AACT,SAAK,OAAO;AACZ,WACE,IAAI,MAAM,oCAAoC,EAAE,OAAO,OAAO,CAAC,CAChE;KAEJ;IACD;AACF,QAAM,IAAI,KAAK,WAAW,KAAK;;;;;CAMjC,AAAO,kBACL,UACc;AACd,OAAK,YAAY,KAAK,SAAS;AAC/B,eAAa;AACX,QAAK,cAAc,KAAK,YAAY,QACjC,eAAe,eAAe,SAChC;;;;;;CAOL,OAAO,IACL,WACgC;AAChC,SAAO,MAAM,IAAI,UAAU;;;;;CAM7B,OAAO,OAAO,WAAyB;AACrC,QAAM,OAAO,UAAU;;;AAI3B,MAAM,wBAAQ,IAAI,KAAkC"}
@@ -1,5 +1,4 @@
1
1
  import { PlainExtension } from "@prosekit/core";
2
- import "prosemirror-gapcursor";
3
2
 
4
3
  //#region src/gap-cursor/gap-cursor.d.ts
5
4
 
@@ -23,4 +22,5 @@ type GapCursorExtension = PlainExtension;
23
22
  */
24
23
  declare function defineGapCursor(): GapCursorExtension;
25
24
  //#endregion
26
- export { type GapCursorExtension, defineGapCursor };
25
+ export { type GapCursorExtension, defineGapCursor };
26
+ //# sourceMappingURL=prosekit-extensions-gap-cursor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prosekit-extensions-gap-cursor.d.ts","names":[],"sources":["../src/gap-cursor/gap-cursor.ts"],"sourcesContent":[],"mappings":";;;;;;AASA;AAgBgB,KAhBJ,kBAAA,GAAqB,cAgBE;;;;;;;;;;;;;;;iBAAnB,eAAA,CAAA,GAAmB"}
@@ -21,4 +21,5 @@ function defineGapCursor() {
21
21
  }
22
22
 
23
23
  //#endregion
24
- export { defineGapCursor };
24
+ export { defineGapCursor };
25
+ //# sourceMappingURL=prosekit-extensions-gap-cursor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prosekit-extensions-gap-cursor.js","names":[],"sources":["../src/gap-cursor/gap-cursor.ts"],"sourcesContent":["import {\n definePlugin,\n type PlainExtension,\n} from '@prosekit/core'\nimport { gapCursor } from 'prosemirror-gapcursor'\n\n/**\n * @internal\n */\nexport type GapCursorExtension = PlainExtension\n\n/**\n * Capture clicks near and arrow-key-motion past places that don't have a\n * normally selectable position nearby, and create a gap cursor selection for\n * them. The cursor is drawn as an element with class `ProseMirror-gapcursor`.\n *\n * You can either include `prosekit/extensions/gap-cursor.css` or add your own\n * styles to make it visible.\n *\n * See\n * [prosemirror-gapcursor](https://github.com/ProseMirror/prosemirror-gapcursor)\n * for more information.\n *\n * @public\n */\nexport function defineGapCursor(): GapCursorExtension {\n return definePlugin(() => gapCursor())\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAyBA,SAAgB,kBAAsC;AACpD,QAAO,mBAAmB,WAAW,CAAC"}
@@ -50,4 +50,5 @@ declare function defineHardBreak(): HardBreakExtension;
50
50
  */
51
51
  declare function defineHardBreakKeymap(): PlainExtension;
52
52
  //#endregion
53
- export { type HardBreakCommandsExtension, type HardBreakExtension, type HardBreakSpecExtension, defineHardBreak, defineHardBreakCommands, defineHardBreakKeymap, defineHardBreakSpec };
53
+ export { type HardBreakCommandsExtension, type HardBreakExtension, type HardBreakSpecExtension, defineHardBreak, defineHardBreakCommands, defineHardBreakKeymap, defineHardBreakSpec };
54
+ //# sourceMappingURL=prosekit-extensions-hard-break.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prosekit-extensions-hard-break.d.ts","names":[],"sources":["../src/hard-break/hard-break-commands.ts","../src/hard-break/hard-break-spec.ts","../src/hard-break/hard-break.ts","../src/hard-break/hard-break-keymap.ts"],"sourcesContent":[],"mappings":";;;;;;;;AAUY,KAAA,0BAAA,GAA6B,SAAA,CAAA;EAgBzB,QAAA,EAAA;;;;ACjBhB;;;;;AASA;;iBDQgB,uBAAA,CAAA,GAA2B;;;;;;AAhB/B,KCDA,sBAAA,GAAyB,SDCI,CAAA;EAgBzB,KAAA,EAAA;eCfD;;;AAFf;;;AAAqC,iBASrB,mBAAA,CAAA,CATqB,EASE,sBATF;;;;;ADCrC;AAgBgB,KERJ,kBAAA,GAAqB,KFQM,CAAA,CEPpC,wBAAwB;ADV3B;;;AAAqC,iBCgBrB,eAAA,CAAA,CDhBqB,ECgBF,kBDhBE;;;;;;iBECrB,qBAAA,CAAA,GAAyB"}
@@ -55,4 +55,5 @@ function defineHardBreak() {
55
55
  }
56
56
 
57
57
  //#endregion
58
- export { defineHardBreak, defineHardBreakCommands, defineHardBreakKeymap, defineHardBreakSpec };
58
+ export { defineHardBreak, defineHardBreakCommands, defineHardBreakKeymap, defineHardBreakSpec };
59
+ //# sourceMappingURL=prosekit-extensions-hard-break.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prosekit-extensions-hard-break.js","names":[],"sources":["../src/hard-break/hard-break-commands.ts","../src/hard-break/hard-break-keymap.ts","../src/hard-break/hard-break-spec.ts","../src/hard-break/hard-break.ts"],"sourcesContent":["import {\n defineCommands,\n insertNode,\n type Extension,\n} from '@prosekit/core'\nimport type { Command } from '@prosekit/pm/state'\n\n/**\n * @internal\n */\nexport type HardBreakCommandsExtension = Extension<{\n Commands: {\n insertHardBreak: []\n }\n}>\n\n/**\n * @internal\n */\nexport function insertHardBreak(): Command {\n return insertNode({ type: 'hardBreak' })\n}\n\n/**\n * @internal\n */\nexport function defineHardBreakCommands(): HardBreakCommandsExtension {\n return defineCommands({\n insertHardBreak: insertHardBreak,\n })\n}\n","import {\n defineKeymap,\n type PlainExtension,\n} from '@prosekit/core'\n\nimport { insertHardBreak } from './hard-break-commands'\n\n/**\n * @internal\n */\nexport function defineHardBreakKeymap(): PlainExtension {\n return defineKeymap({\n 'Mod-Enter': insertHardBreak(),\n 'Shift-Enter': insertHardBreak(),\n })\n}\n","import {\n defineNodeSpec,\n type Extension,\n} from '@prosekit/core'\nimport type { Attrs } from '@prosekit/pm/model'\n\n/**\n * @internal\n */\nexport type HardBreakSpecExtension = Extension<{\n Nodes: {\n hardBreak: Attrs\n }\n}>\n\n/**\n * @internal\n */\nexport function defineHardBreakSpec(): HardBreakSpecExtension {\n return defineNodeSpec({\n name: 'hardBreak',\n inline: true,\n selectable: false,\n leafText: () => '\\n',\n group: 'inline',\n parseDOM: [{ tag: 'br' }],\n toDOM() {\n return ['br']\n },\n })\n}\n","import {\n union,\n type Union,\n} from '@prosekit/core'\n\nimport {\n defineHardBreakCommands,\n type HardBreakCommandsExtension,\n} from './hard-break-commands'\nimport { defineHardBreakKeymap } from './hard-break-keymap'\nimport {\n defineHardBreakSpec,\n type HardBreakSpecExtension,\n} from './hard-break-spec'\n\n/**\n * @internal\n */\nexport type HardBreakExtension = Union<\n [HardBreakSpecExtension, HardBreakCommandsExtension]\n>\n\n/**\n * @public\n */\nexport function defineHardBreak(): HardBreakExtension {\n return union(\n defineHardBreakSpec(),\n defineHardBreakKeymap(),\n defineHardBreakCommands(),\n )\n}\n"],"mappings":";;;;;;AAmBA,SAAgB,kBAA2B;AACzC,QAAO,WAAW,EAAE,MAAM,aAAa,CAAC;;;;;AAM1C,SAAgB,0BAAsD;AACpE,QAAO,eAAe,EACH,iBAClB,CAAC;;;;;;;;ACnBJ,SAAgB,wBAAwC;AACtD,QAAO,aAAa;EAClB,aAAa,iBAAiB;EAC9B,eAAe,iBAAiB;EACjC,CAAC;;;;;;;;ACIJ,SAAgB,sBAA8C;AAC5D,QAAO,eAAe;EACpB,MAAM;EACN,QAAQ;EACR,YAAY;EACZ,gBAAgB;EAChB,OAAO;EACP,UAAU,CAAC,EAAE,KAAK,MAAM,CAAC;EACzB,QAAQ;AACN,UAAO,CAAC,KAAK;;EAEhB,CAAC;;;;;;;;ACJJ,SAAgB,kBAAsC;AACpD,QAAO,MACL,qBAAqB,EACrB,uBAAuB,EACvB,yBAAyB,CAC1B"}
@@ -60,4 +60,5 @@ declare function defineHeadingInputRule(): PlainExtension;
60
60
  */
61
61
  declare function defineHeadingKeymap(): PlainExtension;
62
62
  //#endregion
63
- export { type HeadingAttrs, type HeadingCommandsExtension, type HeadingExtension, type HeadingSpecExtension, defineHeading, defineHeadingCommands, defineHeadingInputRule, defineHeadingKeymap, defineHeadingSpec };
63
+ export { type HeadingAttrs, type HeadingCommandsExtension, type HeadingExtension, type HeadingSpecExtension, defineHeading, defineHeadingCommands, defineHeadingInputRule, defineHeadingKeymap, defineHeadingSpec };
64
+ //# sourceMappingURL=prosekit-extensions-heading.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prosekit-extensions-heading.d.ts","names":[],"sources":["../src/heading/heading-types.ts","../src/heading/heading-commands.ts","../src/heading/heading-spec.ts","../src/heading/heading.ts","../src/heading/heading-input-rule.ts","../src/heading/heading-keymap.ts"],"sourcesContent":[],"mappings":";;;UAAiB,YAAA;;;;;;AAAjB;;KCaY,wBAAA,GAA2B;;IAA3B,UAAA,EAAA,CAAA,KAAA,GAEa,YAFW,GAAA,SAAA,CAAA;IAAA,aAAA,EAAA,CAAA,KAAA,GAGR,YAHQ,GAAA,SAAA,CAAA;IAEX,aAAA,EAAA,CAAA,KAAA,GAEG,YAFH,GAAA,SAAA,CAAA;;;;;AASzB;iBAAgB,qBAAA,CAAA,GAAyB;;;;ADxBzC;;KEUY,oBAAA,GAAuB;;IDGvB,OAAA,ECDC,YDCD;EAAwB,CAAA;;;;;AAAY,iBCMhC,iBAAA,CAAA,CDNgC,ECMX,oBDNW;;;ADbhD;;;KGmBY,gBAAA,GAAmB,OAC5B,oBFPS,EEOa,wBFPW;;;;AAAY,iBEahC,aAAA,CAAA,CFbgC,EEaf,gBFbe;;;;;ADbhD;;;;ACaY,iBGDI,sBAAA,CAAA,CHCoB,EGDM,cHCN;;;;;ADbpC;iBK6BgB,mBAAA,CAAA,GAAuB"}
@@ -1,4 +1,4 @@
1
- import { defineTextBlockInputRule } from "./input-rule-Gji4N7Oe.js";
1
+ import { defineTextBlockInputRule } from "./input-rule-B17tpW4m.js";
2
2
  import { defineCommands, defineKeymap, defineNodeSpec, insertNode, isAtBlockStart, setBlockType, toggleNode, union, unsetBlockType, withSkipCodeBlock } from "@prosekit/core";
3
3
 
4
4
  //#region src/heading/heading-commands.ts
@@ -41,8 +41,7 @@ function defineHeadingInputRule() {
41
41
  regex: /^(#{1,6})\s$/,
42
42
  type: "heading",
43
43
  attrs: (match) => {
44
- const level = match[1]?.length ?? 1;
45
- return { level };
44
+ return { level: match[1]?.length ?? 1 };
46
45
  }
47
46
  });
48
47
  }
@@ -60,8 +59,7 @@ function toggleHeadingKeybinding(level) {
60
59
  * the start of a heading block.
61
60
  */
62
61
  const backspaceUnsetHeading = (state, dispatch, view) => {
63
- const $pos = isAtBlockStart(state, view);
64
- if ($pos?.parent.type.name === "heading") return unsetBlockType()(state, dispatch, view);
62
+ if (isAtBlockStart(state, view)?.parent.type.name === "heading") return unsetBlockType()(state, dispatch, view);
65
63
  return false;
66
64
  };
67
65
  /**
@@ -136,4 +134,5 @@ function defineHeading() {
136
134
  }
137
135
 
138
136
  //#endregion
139
- export { defineHeading, defineHeadingCommands, defineHeadingInputRule, defineHeadingKeymap, defineHeadingSpec };
137
+ export { defineHeading, defineHeadingCommands, defineHeadingInputRule, defineHeadingKeymap, defineHeadingSpec };
138
+ //# sourceMappingURL=prosekit-extensions-heading.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prosekit-extensions-heading.js","names":["backspaceUnsetHeading: Command"],"sources":["../src/heading/heading-commands.ts","../src/heading/heading-input-rule.ts","../src/heading/heading-keymap.ts","../src/heading/heading-spec.ts","../src/heading/heading.ts"],"sourcesContent":["import {\n defineCommands,\n insertNode,\n setBlockType,\n toggleNode,\n type Extension,\n} from '@prosekit/core'\n\nimport type { HeadingAttrs } from './heading-types'\n\n/**\n * @internal\n */\nexport type HeadingCommandsExtension = Extension<{\n Commands: {\n setHeading: [attrs?: HeadingAttrs | undefined]\n insertHeading: [attrs?: HeadingAttrs | undefined]\n toggleHeading: [attrs?: HeadingAttrs | undefined]\n }\n}>\n\n/**\n * @internal\n */\nexport function defineHeadingCommands(): HeadingCommandsExtension {\n return defineCommands({\n setHeading: (attrs?: HeadingAttrs) => {\n return setBlockType({ type: 'heading', attrs })\n },\n insertHeading: (attrs?: HeadingAttrs) => {\n return insertNode({ type: 'heading', attrs })\n },\n toggleHeading: (attrs?: HeadingAttrs) => {\n return toggleNode({ type: 'heading', attrs })\n },\n })\n}\n","import type { PlainExtension } from '@prosekit/core'\n\nimport { defineTextBlockInputRule } from '../input-rule'\n\nimport type { HeadingAttrs } from './heading-types'\n\n/**\n * Converts the text block to a heading when `#` is typed at the start of a new\n * line followed by a space.\n *\n * @internal\n */\nexport function defineHeadingInputRule(): PlainExtension {\n return defineTextBlockInputRule({\n regex: /^(#{1,6})\\s$/,\n type: 'heading',\n attrs: (match) => {\n const level: number = match[1]?.length ?? 1\n return { level } satisfies HeadingAttrs\n },\n })\n}\n","import {\n defineKeymap,\n isAtBlockStart,\n toggleNode,\n unsetBlockType,\n withSkipCodeBlock,\n type PlainExtension,\n} from '@prosekit/core'\nimport type { Command } from '@prosekit/pm/state'\n\nfunction toggleHeadingKeybinding(level: number): Command {\n return withSkipCodeBlock(toggleNode({ type: 'heading', attrs: { level } }))\n}\n\n/**\n * Set the block type to default (usually `paragraph`) when pressing Backspace at\n * the start of a heading block.\n */\nconst backspaceUnsetHeading: Command = (state, dispatch, view) => {\n const $pos = isAtBlockStart(state, view)\n if ($pos?.parent.type.name === 'heading') {\n return unsetBlockType()(state, dispatch, view)\n }\n return false\n}\n\n/**\n * @internal\n */\nexport function defineHeadingKeymap(): PlainExtension {\n return defineKeymap({\n 'mod-alt-1': toggleHeadingKeybinding(1),\n 'mod-alt-2': toggleHeadingKeybinding(2),\n 'mod-alt-3': toggleHeadingKeybinding(3),\n 'mod-alt-4': toggleHeadingKeybinding(4),\n 'mod-alt-5': toggleHeadingKeybinding(5),\n 'mod-alt-6': toggleHeadingKeybinding(6),\n 'Backspace': backspaceUnsetHeading,\n })\n}\n","import {\n defineNodeSpec,\n type Extension,\n} from '@prosekit/core'\n\nimport type { HeadingAttrs } from './heading-types'\n\n/**\n * @internal\n */\nexport type HeadingSpecExtension = Extension<{\n Nodes: {\n heading: HeadingAttrs\n }\n}>\n\n/**\n * @internal\n */\nexport function defineHeadingSpec(): HeadingSpecExtension {\n return defineNodeSpec({\n name: 'heading',\n attrs: { level: { default: 1, validate: 'number' } },\n content: 'inline*',\n group: 'block',\n defining: true,\n parseDOM: [\n { tag: 'h1', attrs: { level: 1 } },\n { tag: 'h2', attrs: { level: 2 } },\n { tag: 'h3', attrs: { level: 3 } },\n { tag: 'h4', attrs: { level: 4 } },\n { tag: 'h5', attrs: { level: 5 } },\n { tag: 'h6', attrs: { level: 6 } },\n ],\n toDOM(node) {\n return [`h${node.attrs.level}`, 0]\n },\n })\n}\n","import {\n union,\n type Union,\n} from '@prosekit/core'\n\nimport {\n defineHeadingCommands,\n type HeadingCommandsExtension,\n} from './heading-commands'\nimport { defineHeadingInputRule } from './heading-input-rule'\nimport { defineHeadingKeymap } from './heading-keymap'\nimport {\n defineHeadingSpec,\n type HeadingSpecExtension,\n} from './heading-spec'\n\n/**\n * @internal\n */\nexport type HeadingExtension = Union<\n [HeadingSpecExtension, HeadingCommandsExtension]\n>\n\n/**\n * @public\n */\nexport function defineHeading(): HeadingExtension {\n return union(\n defineHeadingSpec(),\n defineHeadingInputRule(),\n defineHeadingKeymap(),\n defineHeadingCommands(),\n )\n}\n"],"mappings":";;;;;;;AAwBA,SAAgB,wBAAkD;AAChE,QAAO,eAAe;EACpB,aAAa,UAAyB;AACpC,UAAO,aAAa;IAAE,MAAM;IAAW;IAAO,CAAC;;EAEjD,gBAAgB,UAAyB;AACvC,UAAO,WAAW;IAAE,MAAM;IAAW;IAAO,CAAC;;EAE/C,gBAAgB,UAAyB;AACvC,UAAO,WAAW;IAAE,MAAM;IAAW;IAAO,CAAC;;EAEhD,CAAC;;;;;;;;;;;ACvBJ,SAAgB,yBAAyC;AACvD,QAAO,yBAAyB;EAC9B,OAAO;EACP,MAAM;EACN,QAAQ,UAAU;AAEhB,UAAO,EAAE,OADa,MAAM,IAAI,UAAU,GAC1B;;EAEnB,CAAC;;;;;ACVJ,SAAS,wBAAwB,OAAwB;AACvD,QAAO,kBAAkB,WAAW;EAAE,MAAM;EAAW,OAAO,EAAE,OAAO;EAAE,CAAC,CAAC;;;;;;AAO7E,MAAMA,yBAAkC,OAAO,UAAU,SAAS;AAEhE,KADa,eAAe,OAAO,KAAK,EAC9B,OAAO,KAAK,SAAS,UAC7B,QAAO,gBAAgB,CAAC,OAAO,UAAU,KAAK;AAEhD,QAAO;;;;;AAMT,SAAgB,sBAAsC;AACpD,QAAO,aAAa;EAClB,aAAa,wBAAwB,EAAE;EACvC,aAAa,wBAAwB,EAAE;EACvC,aAAa,wBAAwB,EAAE;EACvC,aAAa,wBAAwB,EAAE;EACvC,aAAa,wBAAwB,EAAE;EACvC,aAAa,wBAAwB,EAAE;EACvC,aAAa;EACd,CAAC;;;;;;;;ACnBJ,SAAgB,oBAA0C;AACxD,QAAO,eAAe;EACpB,MAAM;EACN,OAAO,EAAE,OAAO;GAAE,SAAS;GAAG,UAAU;GAAU,EAAE;EACpD,SAAS;EACT,OAAO;EACP,UAAU;EACV,UAAU;GACR;IAAE,KAAK;IAAM,OAAO,EAAE,OAAO,GAAG;IAAE;GAClC;IAAE,KAAK;IAAM,OAAO,EAAE,OAAO,GAAG;IAAE;GAClC;IAAE,KAAK;IAAM,OAAO,EAAE,OAAO,GAAG;IAAE;GAClC;IAAE,KAAK;IAAM,OAAO,EAAE,OAAO,GAAG;IAAE;GAClC;IAAE,KAAK;IAAM,OAAO,EAAE,OAAO,GAAG;IAAE;GAClC;IAAE,KAAK;IAAM,OAAO,EAAE,OAAO,GAAG;IAAE;GACnC;EACD,MAAM,MAAM;AACV,UAAO,CAAC,IAAI,KAAK,MAAM,SAAS,EAAE;;EAErC,CAAC;;;;;;;;ACXJ,SAAgB,gBAAkC;AAChD,QAAO,MACL,mBAAmB,EACnB,wBAAwB,EACxB,qBAAqB,EACrB,uBAAuB,CACxB"}
@@ -35,4 +35,5 @@ declare function defineHorizontalRule(): HorizontalRuleExtension;
35
35
  */
36
36
  declare function defineHorizontalRuleInputRule(): PlainExtension;
37
37
  //#endregion
38
- export { type HorizontalRuleCommandsExtension, type HorizontalRuleExtension, type HorizontalRuleSpecExtension, defineHorizontalRule, defineHorizontalRuleCommands, defineHorizontalRuleInputRule, defineHorizontalRuleSpec, insertHorizontalRule };
38
+ export { type HorizontalRuleCommandsExtension, type HorizontalRuleExtension, type HorizontalRuleSpecExtension, defineHorizontalRule, defineHorizontalRuleCommands, defineHorizontalRuleInputRule, defineHorizontalRuleSpec, insertHorizontalRule };
39
+ //# sourceMappingURL=prosekit-extensions-horizontal-rule.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prosekit-extensions-horizontal-rule.d.ts","names":[],"sources":["../src/horizontal-rule/horizontal-rule-commands.ts","../src/horizontal-rule/horizontal-rule-spec.ts","../src/horizontal-rule/horizontal-rule.ts","../src/horizontal-rule/horizontal-rule-input-rule.ts"],"sourcesContent":[],"mappings":";;;;;KAWY,+BAAA,GAAkC;;;EAAlC,CAAA;AASZ,CAAA,CAAA;AAcA;;;iBAdgB,oBAAA,CAAA,GAAwB;ACd5B,iBD4BI,4BAAA,CAAA,CC5BuB,ED4BS,+BC5BT;;;KAA3B,2BAAA,GAA8B;;oBAEtB;EDGR,CAAA;AASZ,CAAA,CAAA;AAcgB,iBCtBA,wBAAA,CAAA,CDsBgC,ECtBJ,2BDsBmC;;;KEnBnE,uBAAA,GAA0B,OACnC,6BAA6B,+BFLpB,CASZ,CAAA;AAcA;;;iBEZgB,oBAAA,CAAA,GAAwB;;;;;;iBCVxB,6BAAA,CAAA,GAAiC"}
@@ -1,4 +1,4 @@
1
- import { defineInputRule } from "./input-rule-Gji4N7Oe.js";
1
+ import { defineInputRule } from "./input-rule-B17tpW4m.js";
2
2
  import { defineCommands, defineNodeSpec, getNodeType, union } from "@prosekit/core";
3
3
  import { InputRule } from "@prosekit/pm/inputrules";
4
4
  import { Fragment, Slice } from "@prosekit/pm/model";
@@ -11,8 +11,7 @@ function insertHorizontalRule() {
11
11
  return (state, dispatch) => {
12
12
  if (!dispatch) return true;
13
13
  const { schema, tr } = state;
14
- const type = getNodeType(schema, "horizontalRule");
15
- const node = type.createChecked();
14
+ const node = getNodeType(schema, "horizontalRule").createChecked();
16
15
  const pos = tr.selection.anchor;
17
16
  tr.replaceRange(pos, pos, new Slice(Fragment.from(node), 0, 0));
18
17
  dispatch(tr);
@@ -32,8 +31,7 @@ function defineHorizontalRuleInputRule() {
32
31
  return union(defineInputRule(new InputRule(/^---$/, (state, match, start, end) => {
33
32
  const { schema } = state;
34
33
  const { tr } = state;
35
- const type = getNodeType(schema, "horizontalRule");
36
- const node = type.createChecked();
34
+ const node = getNodeType(schema, "horizontalRule").createChecked();
37
35
  tr.delete(start, end).insert(start - 1, node);
38
36
  return tr.scrollIntoView();
39
37
  })));
@@ -64,4 +62,5 @@ function defineHorizontalRule() {
64
62
  }
65
63
 
66
64
  //#endregion
67
- export { defineHorizontalRule, defineHorizontalRuleCommands, defineHorizontalRuleInputRule, defineHorizontalRuleSpec, insertHorizontalRule };
65
+ export { defineHorizontalRule, defineHorizontalRuleCommands, defineHorizontalRuleInputRule, defineHorizontalRuleSpec, insertHorizontalRule };
66
+ //# sourceMappingURL=prosekit-extensions-horizontal-rule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prosekit-extensions-horizontal-rule.js","names":[],"sources":["../src/horizontal-rule/horizontal-rule-commands.ts","../src/horizontal-rule/horizontal-rule-input-rule.ts","../src/horizontal-rule/horizontal-rule-spec.ts","../src/horizontal-rule/horizontal-rule.ts"],"sourcesContent":["import {\n defineCommands,\n getNodeType,\n type Extension,\n} from '@prosekit/core'\nimport {\n Fragment,\n Slice,\n} from '@prosekit/pm/model'\nimport type { Command } from '@prosekit/pm/state'\n\nexport type HorizontalRuleCommandsExtension = Extension<{\n Commands: {\n insertHorizontalRule: []\n }\n}>\n\n/**\n * Returns a command that inserts a horizontal rule at the current selection.\n */\nexport function insertHorizontalRule(): Command {\n return (state, dispatch) => {\n if (!dispatch) return true\n\n const { schema, tr } = state\n const type = getNodeType(schema, 'horizontalRule')\n const node = type.createChecked()\n const pos = tr.selection.anchor\n tr.replaceRange(pos, pos, new Slice(Fragment.from(node), 0, 0))\n dispatch(tr)\n return true\n }\n}\n\nexport function defineHorizontalRuleCommands(): HorizontalRuleCommandsExtension {\n return defineCommands({ insertHorizontalRule })\n}\n","import {\n getNodeType,\n union,\n type PlainExtension,\n} from '@prosekit/core'\nimport { InputRule } from '@prosekit/pm/inputrules'\n\nimport { defineInputRule } from '../input-rule'\n\n/**\n * @public\n */\nexport function defineHorizontalRuleInputRule(): PlainExtension {\n return union(\n defineInputRule(\n new InputRule(/^---$/, (state, match, start, end) => {\n const { schema } = state\n const { tr } = state\n const type = getNodeType(schema, 'horizontalRule')\n const node = type.createChecked()\n tr.delete(start, end).insert(start - 1, node)\n return tr.scrollIntoView()\n }),\n ),\n )\n}\n","import {\n defineNodeSpec,\n type Extension,\n} from '@prosekit/core'\nimport type { Attrs } from '@prosekit/pm/model'\n\nexport type HorizontalRuleSpecExtension = Extension<{\n Nodes: {\n horizontalRule: Attrs\n }\n}>\n\nexport function defineHorizontalRuleSpec(): HorizontalRuleSpecExtension {\n return defineNodeSpec({\n name: 'horizontalRule',\n group: 'block',\n parseDOM: [{ tag: 'hr' }],\n // Wrap the `<hr>` in a `<div>` so that we can make it taller and easier to click.\n toDOM: () => ['div', { class: 'prosekit-horizontal-rule' }, ['hr']],\n })\n}\n","import {\n union,\n type Union,\n} from '@prosekit/core'\n\nimport {\n defineHorizontalRuleCommands,\n type HorizontalRuleCommandsExtension,\n} from './horizontal-rule-commands'\nimport { defineHorizontalRuleInputRule } from './horizontal-rule-input-rule'\nimport {\n defineHorizontalRuleSpec,\n type HorizontalRuleSpecExtension,\n} from './horizontal-rule-spec'\n\nexport type HorizontalRuleExtension = Union<\n [HorizontalRuleSpecExtension, HorizontalRuleCommandsExtension]\n>\n\n/**\n * @public\n */\nexport function defineHorizontalRule(): HorizontalRuleExtension {\n return union(\n defineHorizontalRuleSpec(),\n defineHorizontalRuleInputRule(),\n defineHorizontalRuleCommands(),\n )\n}\n"],"mappings":";;;;;;;;;AAoBA,SAAgB,uBAAgC;AAC9C,SAAQ,OAAO,aAAa;AAC1B,MAAI,CAAC,SAAU,QAAO;EAEtB,MAAM,EAAE,QAAQ,OAAO;EAEvB,MAAM,OADO,YAAY,QAAQ,iBAAiB,CAChC,eAAe;EACjC,MAAM,MAAM,GAAG,UAAU;AACzB,KAAG,aAAa,KAAK,KAAK,IAAI,MAAM,SAAS,KAAK,KAAK,EAAE,GAAG,EAAE,CAAC;AAC/D,WAAS,GAAG;AACZ,SAAO;;;AAIX,SAAgB,+BAAgE;AAC9E,QAAO,eAAe,EAAE,sBAAsB,CAAC;;;;;;;;ACvBjD,SAAgB,gCAAgD;AAC9D,QAAO,MACL,gBACE,IAAI,UAAU,UAAU,OAAO,OAAO,OAAO,QAAQ;EACnD,MAAM,EAAE,WAAW;EACnB,MAAM,EAAE,OAAO;EAEf,MAAM,OADO,YAAY,QAAQ,iBAAiB,CAChC,eAAe;AACjC,KAAG,OAAO,OAAO,IAAI,CAAC,OAAO,QAAQ,GAAG,KAAK;AAC7C,SAAO,GAAG,gBAAgB;GAC1B,CACH,CACF;;;;;ACZH,SAAgB,2BAAwD;AACtE,QAAO,eAAe;EACpB,MAAM;EACN,OAAO;EACP,UAAU,CAAC,EAAE,KAAK,MAAM,CAAC;EAEzB,aAAa;GAAC;GAAO,EAAE,OAAO,4BAA4B;GAAE,CAAC,KAAK;GAAC;EACpE,CAAC;;;;;;;;ACGJ,SAAgB,uBAAgD;AAC9D,QAAO,MACL,0BAA0B,EAC1B,+BAA+B,EAC/B,8BAA8B,CAC/B"}
@@ -47,4 +47,5 @@ type ImageExtension = Union<[ImageSpecExtension, ImageCommandsExtension]>;
47
47
  */
48
48
  declare function defineImage(): ImageExtension;
49
49
  //#endregion
50
- export { type ImageAttrs, type ImageCommandsExtension, type ImageExtension, type ImageSpecExtension, defineImage, defineImageCommands, defineImageSpec };
50
+ export { type ImageAttrs, type ImageCommandsExtension, type ImageExtension, type ImageSpecExtension, defineImage, defineImageCommands, defineImageSpec };
51
+ //# sourceMappingURL=prosekit-extensions-image.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prosekit-extensions-image.d.ts","names":[],"sources":["../src/image/image-spec.ts","../src/image/image-commands.ts","../src/image/image.ts"],"sourcesContent":[],"mappings":";;;;;;AAQA;AASY,UATK,UAAA,CASa;EAAA,GAAA,CAAA,EAAA,MAAA,GAAA,IAAA;OAEnB,CAAA,EAAA,MAAA,GAAA,IAAA;QAFsB,CAAA,EAAA,MAAA,GAAA,IAAA;;AASjC;;;KATY,kBAAA,GAAqB;ECNrB,KAAA,EAAA;IAAsB,KAAA,EDQvB,UCRuB;;;;AASlC;;iBDMgB,eAAA,CAAA,GAAmB;;;;AAlBnC;AASA;AAA8B,KCNlB,sBAAA,GAAyB,SDMP,CAAA;UAEnB,EAAA;IAFsB,WAAA,EAAA,CAAA,KAAA,GCJP,UDIO,CAAA;EAAS,CAAA;AAS1C,CAAA,CAAA;;;;ACfY,iBASI,mBAAA,CAAA,CATkB,EASK,sBATL;;;ADHlC;AASA;;AAEW,KEFC,cAAA,GAAiB,KFElB,CAAA,CEFyB,kBFEzB,EEF6C,sBFE7C,CAAA,CAAA;;;AAOX;iBEJgB,WAAA,CAAA,GAAe"}
@@ -61,8 +61,7 @@ function defineImageSpec() {
61
61
  }
62
62
  }],
63
63
  toDOM(node) {
64
- const attrs = node.attrs;
65
- return ["img", attrs];
64
+ return ["img", node.attrs];
66
65
  }
67
66
  });
68
67
  }
@@ -77,4 +76,5 @@ function defineImage() {
77
76
  }
78
77
 
79
78
  //#endregion
80
- export { defineImage, defineImageCommands, defineImageSpec };
79
+ export { defineImage, defineImageCommands, defineImageSpec };
80
+ //# sourceMappingURL=prosekit-extensions-image.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prosekit-extensions-image.js","names":["width: number | null","height: number | null"],"sources":["../src/image/image-commands.ts","../src/image/image-spec.ts","../src/image/image.ts"],"sourcesContent":["import {\n defineCommands,\n insertNode,\n type Extension,\n} from '@prosekit/core'\n\nimport type { ImageAttrs } from './image-spec'\n\n/**\n * @internal\n */\nexport type ImageCommandsExtension = Extension<{\n Commands: {\n insertImage: [attrs?: ImageAttrs]\n }\n}>\n\n/**\n * @internal\n */\nexport function defineImageCommands(): ImageCommandsExtension {\n return defineCommands({\n insertImage: (attrs?: ImageAttrs) => {\n return insertNode({ type: 'image', attrs })\n },\n })\n}\n","import {\n defineNodeSpec,\n type Extension,\n} from '@prosekit/core'\n\n/**\n * @public\n */\nexport interface ImageAttrs {\n src?: string | null\n width?: number | null\n height?: number | null\n}\n\n/**\n * @internal\n */\nexport type ImageSpecExtension = Extension<{\n Nodes: {\n image: ImageAttrs\n }\n}>\n\n/**\n * @internal\n */\nexport function defineImageSpec(): ImageSpecExtension {\n return defineNodeSpec({\n name: 'image',\n attrs: {\n src: { default: null, validate: 'string|null' },\n width: { default: null, validate: 'number|null' },\n height: { default: null, validate: 'number|null' },\n },\n group: 'block',\n defining: true,\n draggable: true,\n parseDOM: [\n {\n tag: 'img[src]',\n getAttrs: (element): ImageAttrs => {\n if (typeof element === 'string') {\n return { src: null }\n }\n\n const src = element.getAttribute('src') || null\n\n let width: number | null = null\n let height: number | null = null\n\n const rect = element.getBoundingClientRect()\n if (rect.width > 0 && rect.height > 0) {\n width = rect.width\n height = rect.height\n } else if (\n element instanceof HTMLImageElement\n && element.naturalWidth > 0\n && element.naturalHeight > 0\n ) {\n width = element.naturalWidth\n height = element.naturalHeight\n }\n return { src, width, height }\n },\n },\n ],\n toDOM(node) {\n const attrs = node.attrs as ImageAttrs\n return ['img', attrs]\n },\n })\n}\n","import {\n union,\n type Union,\n} from '@prosekit/core'\n\nimport {\n defineImageCommands,\n type ImageCommandsExtension,\n} from './image-commands'\nimport {\n defineImageSpec,\n type ImageSpecExtension,\n} from './image-spec'\n\n/**\n * @internal\n */\nexport type ImageExtension = Union<[ImageSpecExtension, ImageCommandsExtension]>\n\n/**\n * @public\n */\nexport function defineImage(): ImageExtension {\n return union(defineImageSpec(), defineImageCommands())\n}\n"],"mappings":";;;;;;AAoBA,SAAgB,sBAA8C;AAC5D,QAAO,eAAe,EACpB,cAAc,UAAuB;AACnC,SAAO,WAAW;GAAE,MAAM;GAAS;GAAO,CAAC;IAE9C,CAAC;;;;;;;;ACCJ,SAAgB,kBAAsC;AACpD,QAAO,eAAe;EACpB,MAAM;EACN,OAAO;GACL,KAAK;IAAE,SAAS;IAAM,UAAU;IAAe;GAC/C,OAAO;IAAE,SAAS;IAAM,UAAU;IAAe;GACjD,QAAQ;IAAE,SAAS;IAAM,UAAU;IAAe;GACnD;EACD,OAAO;EACP,UAAU;EACV,WAAW;EACX,UAAU,CACR;GACE,KAAK;GACL,WAAW,YAAwB;AACjC,QAAI,OAAO,YAAY,SACrB,QAAO,EAAE,KAAK,MAAM;IAGtB,MAAM,MAAM,QAAQ,aAAa,MAAM,IAAI;IAE3C,IAAIA,QAAuB;IAC3B,IAAIC,SAAwB;IAE5B,MAAM,OAAO,QAAQ,uBAAuB;AAC5C,QAAI,KAAK,QAAQ,KAAK,KAAK,SAAS,GAAG;AACrC,aAAQ,KAAK;AACb,cAAS,KAAK;eAEd,mBAAmB,oBAChB,QAAQ,eAAe,KACvB,QAAQ,gBAAgB,GAC3B;AACA,aAAQ,QAAQ;AAChB,cAAS,QAAQ;;AAEnB,WAAO;KAAE;KAAK;KAAO;KAAQ;;GAEhC,CACF;EACD,MAAM,MAAM;AAEV,UAAO,CAAC,OADM,KAAK,MACE;;EAExB,CAAC;;;;;;;;AChDJ,SAAgB,cAA8B;AAC5C,QAAO,MAAM,iBAAiB,EAAE,qBAAqB,CAAC"}
@@ -126,4 +126,5 @@ declare function defineWrappingInputRule({
126
126
  join?: (match: RegExpMatchArray, node: ProseMirrorNode) => boolean;
127
127
  }): PlainExtension;
128
128
  //#endregion
129
- export { MarkInputRuleOptions, createMarkInputRule, defineInputRule, defineMarkInputRule, defineTextBlockInputRule, defineWrappingInputRule };
129
+ export { MarkInputRuleOptions, createMarkInputRule, defineInputRule, defineMarkInputRule, defineTextBlockInputRule, defineWrappingInputRule };
130
+ //# sourceMappingURL=prosekit-extensions-input-rule.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prosekit-extensions-input-rule.d.ts","names":[],"sources":["../src/input-rule/index.ts"],"sourcesContent":[],"mappings":";;;;;;;;AAiCA;;;;;AASiB,iBATD,eAAA,CASqB,IAAA,EATC,SASD,CAAA,EATa,cASb;;;;;;AAgBkB,UAhBtC,oBAAA,CAgBsC;EAAK;AAa5D;;;;OAGE,EA1BO,MA0BP;;;;EAEiC,IAAA,EAAA,MAAA,GAvBlB,QAuBkB;EAqDnB;;;OAEb,CAAA,EAzEO,KAyEP,GAAA,IAAA,GAAA,CAAA,CAAA,KAAA,EAzE+B,gBAyE/B,EAAA,GAzEoD,KAyEpD,GAAA,IAAA,CAAA;EAAc;AAcjB;;;;YAGE,CAAA,EAAA,OAAA;;;;;AAiBqD,iBA9FvC,mBAAA,CA8FuC;EAAA,KAAA;EAAA,IAAA;EAAA,KAAA;EAAA;AAAA,CAAA,EAzFpD,oBAyFoD,CAAA,EAzF7B,SAyF6B;;;AAkBvD;;;;AAGE,iBAzDc,mBAAA,CAyDd,OAAA,EAxDS,oBAwDT,CAAA,EAvDC,cAuDD;;;;;;;;;;;iBAzCc,wBAAA;;;;;;;;;;SAUP;;;;iBAKQ;;;;UAKP,wBAAwB,qBAAqB;IACnD;;;;;;;;;;;iBAiBY,uBAAA;;;;;;;;;;;SAWP;;;;iBAKQ;;;;UAKP,wBAAwB,qBAAqB;;;;;;;;;iBAUtC,wBAAwB;IACrC"}
@@ -1,3 +1,3 @@
1
- import { createMarkInputRule, defineInputRule, defineMarkInputRule, defineTextBlockInputRule, defineWrappingInputRule } from "./input-rule-Gji4N7Oe.js";
1
+ import { createMarkInputRule, defineInputRule, defineMarkInputRule, defineTextBlockInputRule, defineWrappingInputRule } from "./input-rule-B17tpW4m.js";
2
2
 
3
3
  export { createMarkInputRule, defineInputRule, defineMarkInputRule, defineTextBlockInputRule, defineWrappingInputRule };
@@ -51,4 +51,5 @@ declare function defineItalicInputRule(): PlainExtension;
51
51
  */
52
52
  declare function defineItalicKeymap(): PlainExtension;
53
53
  //#endregion
54
- export { type ItalicCommandsExtension, type ItalicExtension, type ItalicSpecExtension, defineItalic, defineItalicCommands, defineItalicInputRule, defineItalicKeymap, defineItalicSpec };
54
+ export { type ItalicCommandsExtension, type ItalicExtension, type ItalicSpecExtension, defineItalic, defineItalicCommands, defineItalicInputRule, defineItalicKeymap, defineItalicSpec };
55
+ //# sourceMappingURL=prosekit-extensions-italic.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prosekit-extensions-italic.d.ts","names":[],"sources":["../src/italic/italic-commands.ts","../src/italic/italic-spec.ts","../src/italic/italic.ts","../src/italic/italic-input-rule.ts","../src/italic/italic-keymap.ts"],"sourcesContent":[],"mappings":";;;;;;;AASY,KAAA,uBAAA,GAA0B,SAAA,CAAA;EAStB,QAAA,EAAA;;;;ACThB;;;AAAkC,iBDSlB,oBAAA,CAAA,CCTkB,EDSM,uBCTN;;;;;ADAlC;AASgB,KCTJ,mBAAA,GAAsB,SDSM,CAAA;;YCP5B;;AAFZ,CAAA,CAAA;;;;AAA2C,iBAS3B,gBAAA,CAAA,CAT2B,EASP,mBATO;;;;ADA3C;AASA;KECY,eAAA,GAAkB,OAC3B,qBAAqB,wBDXxB,CAAA;;;;AAA2C,iBCiB3B,YAAA,CAAA,CDjB2B,ECiBX,eDjBW;;;;;;ADA/B,iBGCI,qBAAA,CAAA,CHDsB,EGCG,cHDM;;;;;;AAAnC,iBIAI,kBAAA,CAAA,CJAsB,EIAA,cJAS"}
@@ -1,4 +1,4 @@
1
- import { defineMarkInputRule } from "./input-rule-Gji4N7Oe.js";
1
+ import { defineMarkInputRule } from "./input-rule-B17tpW4m.js";
2
2
  import { canUseRegexLookbehind, defineCommands, defineKeymap, defineMarkSpec, toggleMark, union } from "@prosekit/core";
3
3
 
4
4
  //#region src/italic/italic-commands.ts
@@ -63,4 +63,5 @@ function defineItalic() {
63
63
  }
64
64
 
65
65
  //#endregion
66
- export { defineItalic, defineItalicCommands, defineItalicInputRule, defineItalicKeymap, defineItalicSpec };
66
+ export { defineItalic, defineItalicCommands, defineItalicInputRule, defineItalicKeymap, defineItalicSpec };
67
+ //# sourceMappingURL=prosekit-extensions-italic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prosekit-extensions-italic.js","names":[],"sources":["../src/italic/italic-commands.ts","../src/italic/italic-input-rule.ts","../src/italic/italic-keymap.ts","../src/italic/italic-spec.ts","../src/italic/italic.ts"],"sourcesContent":["import {\n defineCommands,\n toggleMark,\n type Extension,\n} from '@prosekit/core'\n\n/**\n * @internal\n */\nexport type ItalicCommandsExtension = Extension<{\n Commands: {\n toggleItalic: []\n }\n}>\n\n/**\n * @internal\n */\nexport function defineItalicCommands(): ItalicCommandsExtension {\n return defineCommands({\n toggleItalic: () => toggleMark({ type: 'italic' }),\n })\n}\n","import {\n canUseRegexLookbehind,\n type PlainExtension,\n} from '@prosekit/core'\n\nimport { defineMarkInputRule } from '../input-rule'\n\n/**\n * @internal\n */\nexport function defineItalicInputRule(): PlainExtension {\n return defineMarkInputRule({\n regex: canUseRegexLookbehind()\n ? /(?<=\\s|^)\\*([^\\s*]|[^\\s*][^*]*[^\\s*])\\*$/\n : /\\*([^\\s*]|[^\\s*][^*]*[^\\s*])\\*$/,\n type: 'italic',\n })\n}\n","import {\n defineKeymap,\n toggleMark,\n type PlainExtension,\n} from '@prosekit/core'\n\n/**\n * @internal\n */\nexport function defineItalicKeymap(): PlainExtension {\n return defineKeymap({\n 'Mod-i': toggleMark({ type: 'italic' }),\n })\n}\n","import {\n defineMarkSpec,\n type Extension,\n} from '@prosekit/core'\nimport type { Attrs } from '@prosekit/pm/model'\n\n/**\n * @internal\n */\nexport type ItalicSpecExtension = Extension<{\n Marks: {\n italic: Attrs\n }\n}>\n\n/**\n * @internal\n */\nexport function defineItalicSpec(): ItalicSpecExtension {\n return defineMarkSpec({\n name: 'italic',\n parseDOM: [\n { tag: 'i' },\n { tag: 'em' },\n { style: 'font-style=italic' },\n {\n style: 'font-style=normal',\n clearMark: (m) => m.type.name === 'italic',\n },\n ],\n toDOM() {\n return ['em', 0]\n },\n })\n}\n","import {\n union,\n type Union,\n} from '@prosekit/core'\n\nimport {\n defineItalicCommands,\n type ItalicCommandsExtension,\n} from './italic-commands'\nimport { defineItalicInputRule } from './italic-input-rule'\nimport { defineItalicKeymap } from './italic-keymap'\nimport {\n defineItalicSpec,\n type ItalicSpecExtension,\n} from './italic-spec'\n\n/**\n * @internal\n */\nexport type ItalicExtension = Union<\n [ItalicSpecExtension, ItalicCommandsExtension]\n>\n\n/**\n * @public\n */\nexport function defineItalic(): ItalicExtension {\n return union(\n defineItalicSpec(),\n defineItalicCommands(),\n defineItalicKeymap(),\n defineItalicInputRule(),\n )\n}\n"],"mappings":";;;;;;;AAkBA,SAAgB,uBAAgD;AAC9D,QAAO,eAAe,EACpB,oBAAoB,WAAW,EAAE,MAAM,UAAU,CAAC,EACnD,CAAC;;;;;;;;ACXJ,SAAgB,wBAAwC;AACtD,QAAO,oBAAoB;EACzB,OAAO,uBAAuB,GAC1B,6CACA;EACJ,MAAM;EACP,CAAC;;;;;;;;ACPJ,SAAgB,qBAAqC;AACnD,QAAO,aAAa,EAClB,SAAS,WAAW,EAAE,MAAM,UAAU,CAAC,EACxC,CAAC;;;;;;;;ACMJ,SAAgB,mBAAwC;AACtD,QAAO,eAAe;EACpB,MAAM;EACN,UAAU;GACR,EAAE,KAAK,KAAK;GACZ,EAAE,KAAK,MAAM;GACb,EAAE,OAAO,qBAAqB;GAC9B;IACE,OAAO;IACP,YAAY,MAAM,EAAE,KAAK,SAAS;IACnC;GACF;EACD,QAAQ;AACN,UAAO,CAAC,MAAM,EAAE;;EAEnB,CAAC;;;;;;;;ACPJ,SAAgB,eAAgC;AAC9C,QAAO,MACL,kBAAkB,EAClB,sBAAsB,EACtB,oBAAoB,EACpB,uBAAuB,CACxB"}
@@ -69,4 +69,5 @@ type LinkExtension = Union<[LinkSpecExtension, LinkCommandsExtension]>;
69
69
  */
70
70
  declare function defineLink(): LinkExtension;
71
71
  //#endregion
72
- export { type LinkAttrs, LinkCommandsExtension, LinkExtension, LinkSpecExtension, defineLink, defineLinkCommands, defineLinkEnterRule, defineLinkInputRule, defineLinkMarkRule, defineLinkPasteRule, defineLinkSpec };
72
+ export { type LinkAttrs, LinkCommandsExtension, LinkExtension, LinkSpecExtension, defineLink, defineLinkCommands, defineLinkEnterRule, defineLinkInputRule, defineLinkMarkRule, defineLinkPasteRule, defineLinkSpec };
73
+ //# sourceMappingURL=prosekit-extensions-link.d.ts.map