@prosekit/extensions 0.11.4 → 0.11.6

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 (384) 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-E7nCfdnR.js +58 -0
  5. package/dist/drop-indicator-E7nCfdnR.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/file-DVUhe5KJ.js +134 -0
  9. package/dist/file-DVUhe5KJ.js.map +1 -0
  10. package/dist/gap-cursor/style.css +2 -0
  11. package/dist/gap-cursor/style.css.map +1 -0
  12. package/dist/gap-cursor/style.js +1 -0
  13. package/dist/index-DY6lIIYV.d.ts +134 -0
  14. package/dist/index-DY6lIIYV.d.ts.map +1 -0
  15. package/dist/{input-rule-Gji4N7Oe.js → input-rule-B17tpW4m.js} +3 -3
  16. package/dist/input-rule-B17tpW4m.js.map +1 -0
  17. package/dist/list/style.css +2 -0
  18. package/dist/list/style.css.map +1 -0
  19. package/dist/list/style.js +1 -0
  20. package/dist/loro/style.css +2 -0
  21. package/dist/loro/style.css.map +1 -0
  22. package/dist/loro/style.js +1 -0
  23. package/dist/{mark-rule-D7zaa32n.js → mark-rule-CGmswjQ_.js} +3 -3
  24. package/dist/mark-rule-CGmswjQ_.js.map +1 -0
  25. package/dist/{paste-rule-Cca3n5TA.js → paste-rule-BIztzELg.js} +5 -15
  26. package/dist/paste-rule-BIztzELg.js.map +1 -0
  27. package/dist/placeholder/style.css +2 -0
  28. package/dist/placeholder/style.css.map +1 -0
  29. package/dist/placeholder/style.js +1 -0
  30. package/dist/prosekit-extensions-autocomplete.d.ts +2 -1
  31. package/dist/prosekit-extensions-autocomplete.d.ts.map +1 -0
  32. package/dist/prosekit-extensions-autocomplete.js +2 -9
  33. package/dist/prosekit-extensions-autocomplete.js.map +1 -0
  34. package/dist/prosekit-extensions-blockquote.d.ts +2 -1
  35. package/dist/prosekit-extensions-blockquote.d.ts.map +1 -0
  36. package/dist/prosekit-extensions-blockquote.js +4 -4
  37. package/dist/prosekit-extensions-blockquote.js.map +1 -0
  38. package/dist/prosekit-extensions-bold.d.ts +2 -1
  39. package/dist/prosekit-extensions-bold.d.ts.map +1 -0
  40. package/dist/prosekit-extensions-bold.js +3 -2
  41. package/dist/prosekit-extensions-bold.js.map +1 -0
  42. package/dist/prosekit-extensions-code-block.d.ts +3 -2
  43. package/dist/prosekit-extensions-code-block.d.ts.map +1 -0
  44. package/dist/prosekit-extensions-code-block.js +5 -6
  45. package/dist/prosekit-extensions-code-block.js.map +1 -0
  46. package/dist/prosekit-extensions-code.d.ts +2 -1
  47. package/dist/prosekit-extensions-code.d.ts.map +1 -0
  48. package/dist/prosekit-extensions-code.js +3 -2
  49. package/dist/prosekit-extensions-code.js.map +1 -0
  50. package/dist/prosekit-extensions-commit.d.ts +2 -1
  51. package/dist/prosekit-extensions-commit.d.ts.map +1 -0
  52. package/dist/prosekit-extensions-commit.js +11 -13
  53. package/dist/prosekit-extensions-commit.js.map +1 -0
  54. package/dist/prosekit-extensions-doc.d.ts +2 -1
  55. package/dist/prosekit-extensions-doc.d.ts.map +1 -0
  56. package/dist/prosekit-extensions-doc.js +2 -1
  57. package/dist/prosekit-extensions-doc.js.map +1 -0
  58. package/dist/prosekit-extensions-drop-cursor.d.ts +2 -1
  59. package/dist/prosekit-extensions-drop-cursor.d.ts.map +1 -0
  60. package/dist/prosekit-extensions-drop-cursor.js +2 -1
  61. package/dist/prosekit-extensions-drop-cursor.js.map +1 -0
  62. package/dist/prosekit-extensions-drop-indicator.d.ts +5 -107
  63. package/dist/prosekit-extensions-drop-indicator.d.ts.map +1 -0
  64. package/dist/prosekit-extensions-drop-indicator.js +1 -1
  65. package/dist/prosekit-extensions-enter-rule.d.ts +2 -1
  66. package/dist/prosekit-extensions-enter-rule.d.ts.map +1 -0
  67. package/dist/prosekit-extensions-file.d.ts +2 -125
  68. package/dist/prosekit-extensions-file.js +1 -139
  69. package/dist/prosekit-extensions-gap-cursor.d.ts +2 -2
  70. package/dist/prosekit-extensions-gap-cursor.d.ts.map +1 -0
  71. package/dist/prosekit-extensions-gap-cursor.js +2 -1
  72. package/dist/prosekit-extensions-gap-cursor.js.map +1 -0
  73. package/dist/prosekit-extensions-hard-break.d.ts +2 -5
  74. package/dist/prosekit-extensions-hard-break.d.ts.map +1 -0
  75. package/dist/prosekit-extensions-hard-break.js +2 -1
  76. package/dist/prosekit-extensions-hard-break.js.map +1 -0
  77. package/dist/prosekit-extensions-heading.d.ts +2 -1
  78. package/dist/prosekit-extensions-heading.d.ts.map +1 -0
  79. package/dist/prosekit-extensions-heading.js +5 -6
  80. package/dist/prosekit-extensions-heading.js.map +1 -0
  81. package/dist/prosekit-extensions-horizontal-rule.d.ts +2 -1
  82. package/dist/prosekit-extensions-horizontal-rule.d.ts.map +1 -0
  83. package/dist/prosekit-extensions-horizontal-rule.js +5 -6
  84. package/dist/prosekit-extensions-horizontal-rule.js.map +1 -0
  85. package/dist/prosekit-extensions-image.d.ts +80 -3
  86. package/dist/prosekit-extensions-image.d.ts.map +1 -0
  87. package/dist/prosekit-extensions-image.js +90 -10
  88. package/dist/prosekit-extensions-image.js.map +1 -0
  89. package/dist/prosekit-extensions-input-rule.d.ts +2 -1
  90. package/dist/prosekit-extensions-input-rule.d.ts.map +1 -0
  91. package/dist/prosekit-extensions-input-rule.js +1 -1
  92. package/dist/prosekit-extensions-italic.d.ts +2 -1
  93. package/dist/prosekit-extensions-italic.d.ts.map +1 -0
  94. package/dist/prosekit-extensions-italic.js +3 -2
  95. package/dist/prosekit-extensions-italic.js.map +1 -0
  96. package/dist/prosekit-extensions-link.d.ts +2 -1
  97. package/dist/prosekit-extensions-link.d.ts.map +1 -0
  98. package/dist/prosekit-extensions-link.js +6 -5
  99. package/dist/prosekit-extensions-link.js.map +1 -0
  100. package/dist/prosekit-extensions-list.d.ts +22 -21
  101. package/dist/prosekit-extensions-list.d.ts.map +1 -0
  102. package/dist/prosekit-extensions-list.js +7 -8
  103. package/dist/prosekit-extensions-list.js.map +1 -0
  104. package/dist/prosekit-extensions-loro.d.ts +14 -13
  105. package/dist/prosekit-extensions-loro.d.ts.map +1 -0
  106. package/dist/prosekit-extensions-loro.js +2 -1
  107. package/dist/prosekit-extensions-loro.js.map +1 -0
  108. package/dist/prosekit-extensions-mark-rule.d.ts +2 -1
  109. package/dist/prosekit-extensions-mark-rule.d.ts.map +1 -0
  110. package/dist/prosekit-extensions-mark-rule.js +1 -1
  111. package/dist/prosekit-extensions-mention.d.ts +2 -1
  112. package/dist/prosekit-extensions-mention.d.ts.map +1 -0
  113. package/dist/prosekit-extensions-mention.js +2 -1
  114. package/dist/prosekit-extensions-mention.js.map +1 -0
  115. package/dist/prosekit-extensions-mod-click-prevention.d.ts +2 -1
  116. package/dist/prosekit-extensions-mod-click-prevention.d.ts.map +1 -0
  117. package/dist/prosekit-extensions-mod-click-prevention.js +2 -1
  118. package/dist/prosekit-extensions-mod-click-prevention.js.map +1 -0
  119. package/dist/prosekit-extensions-paragraph.d.ts +2 -5
  120. package/dist/prosekit-extensions-paragraph.d.ts.map +1 -0
  121. package/dist/prosekit-extensions-paragraph.js +2 -1
  122. package/dist/prosekit-extensions-paragraph.js.map +1 -0
  123. package/dist/prosekit-extensions-paste-rule.d.ts +2 -1
  124. package/dist/prosekit-extensions-paste-rule.d.ts.map +1 -0
  125. package/dist/prosekit-extensions-paste-rule.js +1 -1
  126. package/dist/prosekit-extensions-placeholder.d.ts +2 -1
  127. package/dist/prosekit-extensions-placeholder.d.ts.map +1 -0
  128. package/dist/prosekit-extensions-placeholder.js +5 -5
  129. package/dist/prosekit-extensions-placeholder.js.map +1 -0
  130. package/dist/prosekit-extensions-readonly.d.ts +2 -1
  131. package/dist/prosekit-extensions-readonly.d.ts.map +1 -0
  132. package/dist/prosekit-extensions-readonly.js +2 -1
  133. package/dist/prosekit-extensions-readonly.js.map +1 -0
  134. package/dist/prosekit-extensions-search.d.ts +2 -1
  135. package/dist/prosekit-extensions-search.d.ts.map +1 -0
  136. package/dist/prosekit-extensions-search.js +3 -3
  137. package/dist/prosekit-extensions-search.js.map +1 -0
  138. package/dist/prosekit-extensions-strike.d.ts +2 -1
  139. package/dist/prosekit-extensions-strike.d.ts.map +1 -0
  140. package/dist/prosekit-extensions-strike.js +3 -2
  141. package/dist/prosekit-extensions-strike.js.map +1 -0
  142. package/dist/prosekit-extensions-table.d.ts +47 -114
  143. package/dist/prosekit-extensions-table.d.ts.map +1 -0
  144. package/dist/prosekit-extensions-table.js +2 -2
  145. package/dist/prosekit-extensions-text-align.d.ts +2 -1
  146. package/dist/prosekit-extensions-text-align.d.ts.map +1 -0
  147. package/dist/prosekit-extensions-text-align.js +2 -1
  148. package/dist/prosekit-extensions-text-align.js.map +1 -0
  149. package/dist/prosekit-extensions-text.d.ts +2 -1
  150. package/dist/prosekit-extensions-text.d.ts.map +1 -0
  151. package/dist/prosekit-extensions-text.js +2 -1
  152. package/dist/prosekit-extensions-text.js.map +1 -0
  153. package/dist/prosekit-extensions-underline.d.ts +2 -1
  154. package/dist/prosekit-extensions-underline.d.ts.map +1 -0
  155. package/dist/prosekit-extensions-underline.js +2 -1
  156. package/dist/prosekit-extensions-underline.js.map +1 -0
  157. package/dist/prosekit-extensions-virtual-selection.d.ts +2 -1
  158. package/dist/prosekit-extensions-virtual-selection.d.ts.map +1 -0
  159. package/dist/prosekit-extensions-virtual-selection.js +3 -3
  160. package/dist/prosekit-extensions-virtual-selection.js.map +1 -0
  161. package/dist/prosekit-extensions-yjs.d.ts +2 -1
  162. package/dist/prosekit-extensions-yjs.d.ts.map +1 -0
  163. package/dist/prosekit-extensions-yjs.js +2 -1
  164. package/dist/prosekit-extensions-yjs.js.map +1 -0
  165. package/dist/prosekit-extensions.js +1 -0
  166. package/dist/search/style.css +2 -0
  167. package/dist/search/style.css.map +1 -0
  168. package/dist/search/style.js +1 -0
  169. package/dist/{shiki-highlighter-chunk-DSPM0T27.d.ts → shiki-highlighter-chunk-Cwu1Jr9o.d.ts} +2 -1
  170. package/dist/shiki-highlighter-chunk-Cwu1Jr9o.d.ts.map +1 -0
  171. package/dist/shiki-highlighter-chunk.d.ts +1 -1
  172. package/dist/shiki-highlighter-chunk.js +3 -5
  173. package/dist/shiki-highlighter-chunk.js.map +1 -0
  174. package/dist/table/style.css +2 -0
  175. package/dist/table/style.css.map +1 -0
  176. package/dist/table/style.js +1 -0
  177. package/dist/table-BNwuK7xg.js +297 -0
  178. package/dist/table-BNwuK7xg.js.map +1 -0
  179. package/dist/virtual-selection/style.css +2 -0
  180. package/dist/virtual-selection/style.css.map +1 -0
  181. package/dist/virtual-selection/style.js +1 -0
  182. package/dist/yjs/style.css +2 -0
  183. package/dist/yjs/style.css.map +1 -0
  184. package/dist/yjs/style.js +1 -0
  185. package/package.json +12 -10
  186. package/src/autocomplete/autocomplete-helpers.ts +74 -0
  187. package/src/autocomplete/autocomplete-plugin.ts +186 -0
  188. package/src/autocomplete/autocomplete-rule.ts +117 -0
  189. package/src/autocomplete/autocomplete.spec.ts +132 -0
  190. package/src/autocomplete/autocomplete.ts +29 -0
  191. package/src/autocomplete/index.ts +9 -0
  192. package/src/blockquote/blockquote-commands.ts +32 -0
  193. package/src/blockquote/blockquote-input-rule.ts +14 -0
  194. package/src/blockquote/blockquote-keymap.spec.ts +45 -0
  195. package/src/blockquote/blockquote-keymap.ts +31 -0
  196. package/src/blockquote/blockquote-spec.ts +24 -0
  197. package/src/blockquote/blockquote.ts +34 -0
  198. package/src/blockquote/index.ts +14 -0
  199. package/src/bold/bold-commands.ts +23 -0
  200. package/src/bold/bold-input-rule.spec.ts +51 -0
  201. package/src/bold/bold-input-rule.ts +18 -0
  202. package/src/bold/bold-keymap.ts +14 -0
  203. package/src/bold/bold-spec.ts +53 -0
  204. package/src/bold/bold.ts +32 -0
  205. package/src/bold/index.ts +14 -0
  206. package/src/code/code-commands.ts +23 -0
  207. package/src/code/code-input-rule.ts +18 -0
  208. package/src/code/code-keymap.ts +14 -0
  209. package/src/code/code-spec.ts +28 -0
  210. package/src/code/code.ts +32 -0
  211. package/src/code/index.ts +14 -0
  212. package/src/code-block/code-block-commands.ts +44 -0
  213. package/src/code-block/code-block-highlight.ts +40 -0
  214. package/src/code-block/code-block-input-rule.ts +36 -0
  215. package/src/code-block/code-block-keymap.ts +61 -0
  216. package/src/code-block/code-block-shiki.ts +58 -0
  217. package/src/code-block/code-block-spec.spec.ts +164 -0
  218. package/src/code-block/code-block-spec.ts +71 -0
  219. package/src/code-block/code-block-types.ts +8 -0
  220. package/src/code-block/code-block.ts +46 -0
  221. package/src/code-block/index.ts +32 -0
  222. package/src/code-block/shiki-bundle.ts +8 -0
  223. package/src/code-block/shiki-highlighter-chunk.ts +84 -0
  224. package/src/code-block/shiki-highlighter.ts +22 -0
  225. package/src/code-block/shiki-parser.ts +36 -0
  226. package/src/commit/index.ts +330 -0
  227. package/src/commit/style.css +7 -0
  228. package/src/doc/index.ts +21 -0
  229. package/src/drop-cursor/drop-cursor.ts +46 -0
  230. package/src/drop-cursor/index.ts +5 -0
  231. package/src/drop-indicator/drop-indicator-facet.ts +62 -0
  232. package/src/drop-indicator/drop-indicator.ts +35 -0
  233. package/src/drop-indicator/index.ts +14 -0
  234. package/src/enter-rule/index.ts +241 -0
  235. package/src/file/file-drop-handler.ts +75 -0
  236. package/src/file/file-paste-handler.spec.ts +95 -0
  237. package/src/file/file-paste-handler.ts +59 -0
  238. package/src/file/file-upload.ts +140 -0
  239. package/src/file/helpers.ts +39 -0
  240. package/src/file/index.ts +16 -0
  241. package/src/gap-cursor/gap-cursor.ts +28 -0
  242. package/src/gap-cursor/index.ts +4 -0
  243. package/src/gap-cursor/style.css +25 -0
  244. package/src/hard-break/hard-break-commands.ts +31 -0
  245. package/src/hard-break/hard-break-keymap.spec.ts +45 -0
  246. package/src/hard-break/hard-break-keymap.ts +16 -0
  247. package/src/hard-break/hard-break-spec.ts +31 -0
  248. package/src/hard-break/hard-break.ts +32 -0
  249. package/src/hard-break/index.ts +13 -0
  250. package/src/heading/heading-commands.ts +37 -0
  251. package/src/heading/heading-input-rule.ts +22 -0
  252. package/src/heading/heading-keymap.spec.ts +53 -0
  253. package/src/heading/heading-keymap.ts +40 -0
  254. package/src/heading/heading-spec.ts +39 -0
  255. package/src/heading/heading-types.ts +3 -0
  256. package/src/heading/heading.ts +34 -0
  257. package/src/heading/index.ts +15 -0
  258. package/src/horizontal-rule/horizontal-rule-commands.spec.ts +61 -0
  259. package/src/horizontal-rule/horizontal-rule-commands.ts +37 -0
  260. package/src/horizontal-rule/horizontal-rule-input-rule.spec.ts +61 -0
  261. package/src/horizontal-rule/horizontal-rule-input-rule.ts +26 -0
  262. package/src/horizontal-rule/horizontal-rule-spec.ts +21 -0
  263. package/src/horizontal-rule/horizontal-rule.ts +29 -0
  264. package/src/horizontal-rule/index.ts +14 -0
  265. package/src/image/image-commands.ts +36 -0
  266. package/src/image/image-spec.ts +72 -0
  267. package/src/image/image-upload-handler.ts +156 -0
  268. package/src/image/image.ts +25 -0
  269. package/src/image/index.ts +22 -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/drop-indicator-dB9rZn8e.js +0 -267
  384. package/dist/table-CPI9ZxbK.js +0 -760
@@ -1,16 +1,24 @@
1
- import { defineCommands, defineNodeSpec, insertNode, union } from "@prosekit/core";
1
+ import { UploadTask, defineFileDropHandler, defineFilePasteHandler } from "./file-DVUhe5KJ.js";
2
+ import { ProseKitError, defineCommands, defineNodeSpec, insertNode, union } from "@prosekit/core";
2
3
 
3
4
  //#region src/image/image-commands.ts
4
5
  /**
6
+ * Returns a command that inserts an image node with the given attributes at the
7
+ * current selection position.
8
+ *
9
+ * @public
10
+ */
11
+ function insertImage(attrs) {
12
+ return insertNode({
13
+ type: "image",
14
+ attrs
15
+ });
16
+ }
17
+ /**
5
18
  * @internal
6
19
  */
7
20
  function defineImageCommands() {
8
- return defineCommands({ insertImage: (attrs) => {
9
- return insertNode({
10
- type: "image",
11
- attrs
12
- });
13
- } });
21
+ return defineCommands({ insertImage });
14
22
  }
15
23
 
16
24
  //#endregion
@@ -61,8 +69,7 @@ function defineImageSpec() {
61
69
  }
62
70
  }],
63
71
  toDOM(node) {
64
- const attrs = node.attrs;
65
- return ["img", attrs];
72
+ return ["img", node.attrs];
66
73
  }
67
74
  });
68
75
  }
@@ -77,4 +84,77 @@ function defineImage() {
77
84
  }
78
85
 
79
86
  //#endregion
80
- export { defineImage, defineImageCommands, defineImageSpec };
87
+ //#region src/image/image-upload-handler.ts
88
+ function defaultCanUpload({ file }) {
89
+ return file.type.startsWith("image/");
90
+ }
91
+ const defaultOnError = ({ error }) => {
92
+ console.error("[prosekit] Failed to upload image:", error);
93
+ };
94
+ /**
95
+ * Returns an extension that handles image file uploads when pasting or dropping
96
+ * images into the editor.
97
+ *
98
+ * @param options
99
+ */
100
+ function defineImageUploadHandler({ uploader, canPaste = defaultCanUpload, canDrop = defaultCanUpload, onError = defaultOnError }) {
101
+ const handleInsert = (view, file, pos) => {
102
+ const uploadTask = new UploadTask({
103
+ file,
104
+ uploader
105
+ });
106
+ const objectURL = uploadTask.objectURL;
107
+ const attrs = { src: objectURL };
108
+ uploadTask.finished.then((resultURL) => {
109
+ if (view.isDestroyed) return;
110
+ else if (typeof resultURL !== "string") {
111
+ const error = new ProseKitError(`Unexpected upload result. Expected a string but got ${typeof resultURL}`);
112
+ onError({
113
+ file,
114
+ error,
115
+ uploadTask
116
+ });
117
+ } else {
118
+ replaceImageURL(view, objectURL, resultURL);
119
+ UploadTask.delete(objectURL);
120
+ }
121
+ }).catch((error) => {
122
+ onError({
123
+ file,
124
+ error,
125
+ uploadTask
126
+ });
127
+ });
128
+ return insertNode({
129
+ type: "image",
130
+ attrs,
131
+ pos
132
+ })(view.state, view.dispatch, view);
133
+ };
134
+ const handlePaste = (options) => {
135
+ if (!canPaste(options)) return false;
136
+ return handleInsert(options.view, options.file);
137
+ };
138
+ const handleDrop = (options) => {
139
+ if (!canDrop(options)) return false;
140
+ return handleInsert(options.view, options.file, options.pos);
141
+ };
142
+ return union(defineFilePasteHandler(handlePaste), defineFileDropHandler(handleDrop));
143
+ }
144
+ function replaceImageURL(view, oldURL, newURL) {
145
+ const positions = [];
146
+ view.state.doc.descendants((node, pos) => {
147
+ if (node.type.name === "image") {
148
+ if (node.attrs.src === oldURL) positions.push(pos);
149
+ }
150
+ });
151
+ if (positions.length > 0) {
152
+ const tr = view.state.tr;
153
+ for (const pos of positions) tr.setNodeAttribute(pos, "src", newURL);
154
+ view.dispatch(tr);
155
+ }
156
+ }
157
+
158
+ //#endregion
159
+ export { defineImage, defineImageCommands, defineImageSpec, defineImageUploadHandler, insertImage };
160
+ //# sourceMappingURL=prosekit-extensions-image.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prosekit-extensions-image.js","names":["width: number | null","height: number | null","defaultOnError: ImageUploadErrorHandler","attrs: ImageAttrs","handlePaste: FilePasteHandler","handleDrop: FileDropHandler","positions: number[]"],"sources":["../src/image/image-commands.ts","../src/image/image-spec.ts","../src/image/image.ts","../src/image/image-upload-handler.ts"],"sourcesContent":["import {\n defineCommands,\n insertNode,\n type Extension,\n} from '@prosekit/core'\nimport type { Command } from '@prosekit/pm/state'\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 * Returns a command that inserts an image node with the given attributes at the\n * current selection position.\n *\n * @public\n */\nexport function insertImage(attrs?: ImageAttrs): Command {\n return insertNode({ type: 'image', attrs })\n}\n\n/**\n * @internal\n */\nexport function defineImageCommands(): ImageCommandsExtension {\n return defineCommands({\n insertImage,\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","import {\n insertNode,\n ProseKitError,\n union,\n type PlainExtension,\n} from '@prosekit/core'\nimport type { EditorView } from '@prosekit/pm/view'\n\nimport {\n defineFileDropHandler,\n defineFilePasteHandler,\n UploadTask,\n type FileDropHandler,\n type FileDropHandlerOptions,\n type FilePasteHandler,\n type FilePasteHandlerOptions,\n type Uploader,\n} from '../file'\n\nimport type { ImageAttrs } from './image-spec'\n\n/**\n * A predicate to determine if the pasted file should be uploaded and inserted as an image.\n */\nexport type ImageCanPastePredicate = (options: FilePasteHandlerOptions) => boolean\n\n/**\n * A predicate to determine if the dropped file should be uploaded and inserted as an image.\n */\nexport type ImageCanDropPredicate = (options: FileDropHandlerOptions) => boolean\n\n/**\n * A handler to be called when an error occurs during the upload.\n */\nexport type ImageUploadErrorHandler = (options: ImageUploadErrorHandlerOptions) => void\n\n/**\n * Options for the {@link ImageUploadErrorHandler} callback.\n */\nexport interface ImageUploadErrorHandlerOptions {\n /**\n * The file that was uploaded.\n */\n file: File\n /**\n * The error that occurred during the upload.\n */\n error: unknown\n /**\n * The upload task that was used to upload the file.\n */\n uploadTask: UploadTask<string>\n}\n\n/**\n * Options for {@link defineImageUploadHandler}.\n */\nexport interface ImageUploadHandlerOptions {\n /**\n * The uploader used to upload the file. It should return a promise that\n * resolves to the URL of the uploaded image.\n */\n uploader: Uploader<string>\n /**\n * A predicate to determine if the pasted file should be uploaded and inserted as an image.\n * If not provided, it defaults to only allowing paste of files with a content type starting with `image/`.\n */\n canPaste?: ImageCanPastePredicate\n /**\n * A predicate to determine if the dropped file should be uploaded and inserted as an image.\n * If not provided, it defaults to only allowing drop of files with a content type starting with `image/`.\n */\n canDrop?: ImageCanDropPredicate\n /**\n * A handler to be called when an error occurs during the upload.\n * If not provided, it defaults to logging the error to the console.\n */\n onError?: ImageUploadErrorHandler\n}\n\nfunction defaultCanUpload({ file }: { file: File }): boolean {\n // Only handle image files by default\n return file.type.startsWith('image/')\n}\n\nconst defaultOnError: ImageUploadErrorHandler = ({ error }) => {\n console.error('[prosekit] Failed to upload image:', error)\n}\n\n/**\n * Returns an extension that handles image file uploads when pasting or dropping\n * images into the editor.\n *\n * @param options\n */\nexport function defineImageUploadHandler({\n uploader,\n canPaste = defaultCanUpload,\n canDrop = defaultCanUpload,\n onError = defaultOnError,\n}: ImageUploadHandlerOptions): PlainExtension {\n const handleInsert = (view: EditorView, file: File, pos?: number): boolean => {\n const uploadTask = new UploadTask({ file, uploader })\n const objectURL = uploadTask.objectURL\n const attrs: ImageAttrs = { src: objectURL }\n uploadTask.finished.then((resultURL) => {\n if (view.isDestroyed) {\n return\n } else if (typeof resultURL !== 'string') {\n const error = new ProseKitError(`Unexpected upload result. Expected a string but got ${typeof resultURL}`)\n onError({ file, error, uploadTask })\n } else {\n replaceImageURL(view, objectURL, resultURL)\n UploadTask.delete(objectURL)\n }\n }).catch((error) => {\n onError({ file, error, uploadTask })\n })\n const command = insertNode({ type: 'image', attrs, pos })\n return command(view.state, view.dispatch, view)\n }\n\n const handlePaste: FilePasteHandler = (options) => {\n if (!canPaste(options)) return false\n return handleInsert(options.view, options.file)\n }\n\n const handleDrop: FileDropHandler = (options) => {\n if (!canDrop(options)) return false\n return handleInsert(options.view, options.file, options.pos)\n }\n\n return union(\n defineFilePasteHandler(handlePaste),\n defineFileDropHandler(handleDrop),\n )\n}\n\nfunction replaceImageURL(view: EditorView, oldURL: string, newURL: string) {\n const positions: number[] = []\n view.state.doc.descendants((node, pos) => {\n if (node.type.name === 'image') {\n const attrs = node.attrs as ImageAttrs\n if (attrs.src === oldURL) {\n positions.push(pos)\n }\n }\n })\n if (positions.length > 0) {\n const tr = view.state.tr\n for (const pos of positions) {\n tr.setNodeAttribute(pos, 'src', newURL)\n }\n view.dispatch(tr)\n }\n}\n"],"mappings":";;;;;;;;;;AAwBA,SAAgB,YAAY,OAA6B;AACvD,QAAO,WAAW;EAAE,MAAM;EAAS;EAAO,CAAC;;;;;AAM7C,SAAgB,sBAA8C;AAC5D,QAAO,eAAe,EACpB,aACD,CAAC;;;;;;;;ACRJ,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;;;;;ACyDxD,SAAS,iBAAiB,EAAE,QAAiC;AAE3D,QAAO,KAAK,KAAK,WAAW,SAAS;;AAGvC,MAAMC,kBAA2C,EAAE,YAAY;AAC7D,SAAQ,MAAM,sCAAsC,MAAM;;;;;;;;AAS5D,SAAgB,yBAAyB,EACvC,UACA,WAAW,kBACX,UAAU,kBACV,UAAU,kBACkC;CAC5C,MAAM,gBAAgB,MAAkB,MAAY,QAA0B;EAC5E,MAAM,aAAa,IAAI,WAAW;GAAE;GAAM;GAAU,CAAC;EACrD,MAAM,YAAY,WAAW;EAC7B,MAAMC,QAAoB,EAAE,KAAK,WAAW;AAC5C,aAAW,SAAS,MAAM,cAAc;AACtC,OAAI,KAAK,YACP;YACS,OAAO,cAAc,UAAU;IACxC,MAAM,QAAQ,IAAI,cAAc,uDAAuD,OAAO,YAAY;AAC1G,YAAQ;KAAE;KAAM;KAAO;KAAY,CAAC;UAC/B;AACL,oBAAgB,MAAM,WAAW,UAAU;AAC3C,eAAW,OAAO,UAAU;;IAE9B,CAAC,OAAO,UAAU;AAClB,WAAQ;IAAE;IAAM;IAAO;IAAY,CAAC;IACpC;AAEF,SADgB,WAAW;GAAE,MAAM;GAAS;GAAO;GAAK,CAAC,CAC1C,KAAK,OAAO,KAAK,UAAU,KAAK;;CAGjD,MAAMC,eAAiC,YAAY;AACjD,MAAI,CAAC,SAAS,QAAQ,CAAE,QAAO;AAC/B,SAAO,aAAa,QAAQ,MAAM,QAAQ,KAAK;;CAGjD,MAAMC,cAA+B,YAAY;AAC/C,MAAI,CAAC,QAAQ,QAAQ,CAAE,QAAO;AAC9B,SAAO,aAAa,QAAQ,MAAM,QAAQ,MAAM,QAAQ,IAAI;;AAG9D,QAAO,MACL,uBAAuB,YAAY,EACnC,sBAAsB,WAAW,CAClC;;AAGH,SAAS,gBAAgB,MAAkB,QAAgB,QAAgB;CACzE,MAAMC,YAAsB,EAAE;AAC9B,MAAK,MAAM,IAAI,aAAa,MAAM,QAAQ;AACxC,MAAI,KAAK,KAAK,SAAS,SAErB;OADc,KAAK,MACT,QAAQ,OAChB,WAAU,KAAK,IAAI;;GAGvB;AACF,KAAI,UAAU,SAAS,GAAG;EACxB,MAAM,KAAK,KAAK,MAAM;AACtB,OAAK,MAAM,OAAO,UAChB,IAAG,iBAAiB,KAAK,OAAO,OAAO;AAEzC,OAAK,SAAS,GAAG"}
@@ -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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prosekit-extensions-link.d.ts","names":[],"sources":["../src/link/link-paste-rule.ts","../src/link/link-types.ts","../src/link/index.ts"],"sourcesContent":[],"mappings":";;;;;;AAUA;iBAAgB,mBAAA,CAAA,GAAuB;;;;;;AAAvB,UCPC,SAAA,CDOkB;;;;ACPnC;;;;;AAAA;KC6BY,iBAAA,GAAoB;;UAEtB;EAFE,CAAA;CAAiB,CAAA;;;;AASb,iBAAA,cAAA,CAAA,CAAkB,EAAA,iBAAiB;AA+BnD;;;AAIwB,KAJZ,qBAAA,GAAwB,SAIZ,CAAA;UAJY,EAAA;IAAS,OAAA,EAAA,CAAA,KAAA,EAExB,SAFwB,CAAA;IAS7B,UAAA,EAAA,EAAA;IAcA,UAAA,EAAA,CAAA,KAAmB,EAnBX,SAmBe,CAAA;IAiBvB,UAAA,EAAA,EAAA;EAmBA,CAAA;AAWhB,CAAA,CAAA;AAAyB,iBA7DT,kBAAA,CAAA,CA6DS,EA7Da,qBA6Db;;;;;AAKzB;iBApDgB,mBAAA,CAAA,GAAuB;;;;;;iBAiBvB,mBAAA,CAAA,GAAuB;;;;;;iBAmBvB,kBAAA,CAAA,GAAsB;;;;KAW1B,aAAA,GAAgB,OAAO,mBAAmB;;;;iBAKtC,UAAA,CAAA,GAAc"}
@@ -1,7 +1,7 @@
1
- import { defineInputRule } from "./input-rule-Gji4N7Oe.js";
1
+ import { defineInputRule } from "./input-rule-B17tpW4m.js";
2
2
  import { defineEnterRule } from "./enter-rule-RdhEA900.js";
3
- import { defineMarkRule } from "./mark-rule-D7zaa32n.js";
4
- import { defineMarkPasteRule } from "./paste-rule-Cca3n5TA.js";
3
+ import { defineMarkRule } from "./mark-rule-CGmswjQ_.js";
4
+ import { defineMarkPasteRule } from "./paste-rule-BIztzELg.js";
5
5
  import { addMark, defineCommands, defineMarkSpec, expandMark, removeMark, toggleMark, union } from "@prosekit/core";
6
6
  import { InputRule } from "@prosekit/pm/inputrules";
7
7
 
@@ -9,7 +9,7 @@ import { InputRule } from "@prosekit/pm/inputrules";
9
9
  const TLD_RE_PATTERN = "a(?:a(?:a|rp)|b(?:arth|b(?:ott|vie)?|c|le|ogado|udhabi)|c(?:ademy|c(?:enture|ountants?)|o|tor)?|d(?:s|ult)?|e(?:g|ro|tna)?|f(?:l|rica)?|g(?:akhan|ency)?|i(?:g|r(?:bus|force|tel))?|kdn|l(?:faromeo|i(?:baba|pay)|l(?:finanz|state|y)|s(?:ace|tom))?|m(?:azon|e(?:rican(?:express|family)|x)|fam|ica|sterdam)?|n(?:alytics|droid|quan|z)|ol?|p(?:artments|p(?:le)?)|q(?:uarelle)?|r(?:a(?:b|mco)|chi|my|pa|te?)?|s(?:da|ia|sociates)?|t(?:hleta|torney)?|u(?:ction|di(?:ble|o)?|spost|t(?:hor|os?))?|vianca|ws?|xa?|z(?:ure)?)|b(?:a(?:by|idu|n(?:a(?:mex|narepublic)|d|k)|r(?:c(?:elona|lay(?:card|s))|efoot|gains)?|s(?:eball|ketball)|uhaus|yern)?|b(?:c|t|va)?|c[gn]|d|e(?:a(?:ts|uty)|er|ntley|rlin|st(?:buy)?|t)?|f|g|h(?:arti)?|i(?:ble|d|ke|ngo?|o|z)?|j|l(?:ack(?:friday)?|o(?:ckbuster|g|omberg)|ue)|m[sw]?|n(?:pparibas)?|o(?:ats|ehringer|fa|m|nd|o(?:k(?:ing)?)?|s(?:ch|t(?:ik|on))|t|utique|x)?|r(?:adesco|idgestone|o(?:adway|ker|ther)|ussels)?|s|t|u(?:ild(?:ers)?|siness|y|zz)|v|w|y|zh?)|c(?:a(?:b|fe|l(?:l|vinklein)?|m(?:era|p)?|non|p(?:etown|ital(?:one)?)|r(?:avan|ds|e(?:ers?)?|s)?|s(?:a|e|h|ino)|t(?:ering|holic)?)?|b(?:a|n|re|s)|c|d|e(?:nter|o|rn)|f[ad]?|g|h(?:a(?:n(?:el|nel)|rity|se|t)|eap|intai|r(?:istmas|ome)|urch)?|i(?:priani|rcle|sco|t(?:adel|ic?|y(?:eats)?))?|k|l(?:aims|eaning|i(?:ck|ni(?:c|que))|o(?:thing|ud)|ub(?:med)?)?|m|n|o(?:ach|des|ffee|l(?:lege|ogne)|m(?:cast|m(?:bank|unity)|p(?:a(?:ny|re)|uter)|sec)?|n(?:dos|s(?:truction|ulting)|t(?:act|ractors))|o(?:king(?:channel)?|l|p)|rsica|u(?:ntry|pons?|rses))?|pa|r(?:edit(?:card|union)?|icket|own|s|uises?)?|u(?:isinella)?|v|w|x|y(?:mru|ou)?|z)|d(?:a(?:bur|d|nce|t(?:a|e|ing|sun)|y)|clk|ds|e(?:al(?:er|s)?|gree|l(?:ivery|l|oitte|ta)|mocrat|nt(?:al|ist)|si(?:gn)?|v)?|hl|i(?:amonds|et|gital|rect(?:ory)?|s(?:co(?:unt|ver)|h)|y)|j|k|m|np|o(?:c(?:s|tor)|g|mains|t|wnload)?|rive|tv|u(?:bai|nlop|pont|rban)|v(?:ag|r)|z)|e(?:a(?:rth|t)|co?|d(?:eka|u(?:cation)?)|e|g|m(?:ail|erck)|n(?:ergy|gineer(?:ing)?|terprises)|pson|quipment|r(?:icsson|ni)?|s(?:q|tate)?|t(?:isalat)?|u(?:rovision|s)?|vents|x(?:change|p(?:ert|osed|ress)|traspace))|f(?:a(?:ge|i(?:l|rwinds|th)|mily|ns?|rm(?:ers)?|s(?:hion|t))|e(?:dex|edback|rr(?:ari|ero))|i(?:at|d(?:elity|o)|lm|na(?:l|nc(?:e|ial))|r(?:e(?:stone)?|mdale)|sh(?:ing)?|t(?:ness)?)?|j|k|l(?:i(?:ckr|ghts|r)|o(?:rist|wers)|y)|m|o(?:o(?:d(?:network)?|tball)?|r(?:d|ex|sale|um)|undation|x)?|r(?:e(?:e|senius)|l|o(?:gans|nt(?:door|ier)))?|tr|u(?:jitsu|nd?|rniture|tbol)|yi)|g(?:a(?:l(?:l(?:ery|o|up))?|mes?|p|rden|y)?|b(?:iz)?|dn?|e(?:a|nt(?:ing)?|orge)?|f|g(?:ee)?|h|i(?:fts?|v(?:es|ing))?|l(?:ass|e|ob(?:al|o))?|m(?:ail|bh|o|x)?|n|o(?:daddy|l(?:d(?:point)?|f)|o(?:dyear|g(?:le)?)?|p|t|v)|p|q|r(?:a(?:inger|phics|tis)|een|ipe|o(?:cery|up))?|s|t|u(?:ardian|cci|ge|i(?:de|tars)|ru)?|w|y)|h(?:a(?:ir|mburg|ngout|us)|bo|dfc(?:bank)?|e(?:alth(?:care)?|l(?:p|sinki)|r(?:e|mes))|gtv|i(?:phop|samitsu|tachi|v)|kt?|m|n|o(?:ckey|l(?:dings|iday)|me(?:depot|goods|s(?:ense)?)|nda|rse|s(?:pital|t(?:ing)?)|t(?:el(?:es|s)|mail)?|use|w)|r|sbc|t|u(?:ghes)?|y(?:att|undai))|i(?:bm|c(?:bc|e|u)|d|e(?:ee)?|fm|kano|l|m(?:amat|db|mo(?:bilien)?)?|n(?:c|dustries|f(?:initi|o)|g|k|s(?:titute|ur(?:ance|e))|t(?:ernational|uit)?|vestments)?|o|piranga|q|r(?:ish)?|s(?:maili|t(?:anbul)?)?|t(?:au|v)?)|j(?:a(?:guar|va)|cb|e(?:ep|tzt|welry)?|io|ll|mp?|nj|o(?:b(?:s|urg)|t|y)?|p(?:morgan|rs)?|u(?:egos|niper))|k(?:aufen|ddi|e(?:rry(?:hotels|logistics|properties))?|fh|g|h|i(?:a|ds|m|nd(?:er|le)|tchen|wi)?|m|n|o(?:eln|matsu|sher)|p(?:mg|n)?|r(?:d|ed)?|uokgroup|w|y(?:oto)?|z)|l(?:a(?:caixa|m(?:borghini|er)|n(?:c(?:aster|ia)|d(?:rover)?|xess)|salle|t(?:ino|robe)?|w(?:yer)?)?|b|c|ds|e(?:ase|clerc|frak|g(?:al|o)|xus)|gbt|i(?:dl|fe(?:insurance|style)?|ghting|ke|lly|m(?:ited|o)|n(?:coln|de|k)|psy|v(?:e|ing))?|k|l[cp]|o(?:ans?|c(?:ker|us)|l|ndon|tt[eo]|ve)|pl(?:financial)?|r|s|t(?:da?)?|u(?:ndbeck|x(?:e|ury))?|v|y)|m(?:a(?:cys|drid|i(?:f|son)|keup|n(?:agement|go)?|p|r(?:ket(?:ing|s)?|riott|shalls)|serati|ttel)?|ba|c(?:kinsey)?|d|e(?:d(?:ia)?|et|lbourne|m(?:e|orial)|nu?|rckmsd)?|g|h|i(?:ami|crosoft|l|n[it]|t(?:subishi)?)|k|l[bs]?|ma?|n|o(?:bi(?:le)?|da|e|i|m|n(?:ash|ey|ster)|r(?:mon|tgage)|scow|to(?:rcycles)?|v(?:ie)?)?|p|q|r|sd?|t[nr]?|u(?:s(?:eum|ic)|tual)?|v|w|x|y|z)|n(?:a(?:b|goya|me|tura|vy)?|ba|c|e(?:c|t(?:bank|flix|work)?|ustar|ws?|x(?:t(?:direct)?|us))?|fl?|go?|hk|i(?:co|k(?:e|on)|nja|ssa[ny])?|l|o(?:kia|rt(?:hwesternmutual|on)|w(?:ruz|tv)?)?|p|r[aw]?|tt|u|yc|z)|o(?:b(?:i|server)|ffice|kinawa|l(?:ayan(?:group)?|dnavy|lo)|m(?:ega)?|n(?:e|g|l(?:ine)?)|oo|pen|r(?:a(?:cle|nge)|g(?:anic)?|igins)|saka|t(?:suka|t)|vh)|p(?:a(?:ge|nasonic|r(?:is|s|t(?:ners|s|y))|ssagens|y)?|ccw|et?|f(?:izer)?|g|h(?:armacy|d|ilips|o(?:ne|to(?:graphy|s)?)|ysio)?|i(?:c(?:s|t(?:et|ures))|d|n[gk]?|oneer|zza)|k|l(?:a(?:ce|y(?:station)?)|u(?:mbing|s))?|m|nc?|o(?:hl|ker|litie|rn|st)|r(?:a(?:merica|xi)|ess|ime|o(?:d(?:uctions)?|f|gressive|mo|pert(?:ies|y)|tection)?|u(?:dential)?)?|s|t|ub|wc?|y)|q(?:a|pon|ue(?:bec|st))|r(?:a(?:cing|dio)|e(?:a(?:d|l(?:estate|t(?:or|y)))|cipes|d(?:stone|umbrella)?|hab|i(?:sen?|t)|liance|n(?:t(?:als)?)?|p(?:air|ort|ublican)|st(?:aurant)?|views?|xroth)?|i(?:c(?:h(?:ardli)?|oh)|l|o|p)|o(?:c(?:her|ks)|deo|gers|om)?|s(?:vp)?|u(?:gby|hr|n)?|we?|yukyu)|s(?:a(?:arland|fe(?:ty)?|kura|l(?:e|on)|ms(?:club|ung)|n(?:dvik(?:coromant)?|ofi)|p|rl|s|ve|xo)?|b[is]?|c(?:a|b|h(?:aeffler|midt|o(?:larships|ol)|ule|warz)|ience|ot)?|d|e(?:a(?:rch|t)|cur(?:e|ity)|ek|lect|ner|rvices|ven|w|xy?)?|fr|g|h(?:a(?:ngrila|rp|w)|ell|i(?:a|ksha)|o(?:es|p(?:ping)?|uji|w(?:time)?))?|i(?:lk|n(?:a|gles)|te)?|j|k(?:in?|y(?:pe)?)?|l(?:ing)?|m(?:art|ile)?|n(?:cf)?|o(?:c(?:cer|ial)|ft(?:bank|ware)|hu|l(?:ar|utions)|n[gy]|y)?|p(?:a(?:ce)?|o(?:rt|t))|rl?|s|t(?:a(?:da|ples|r|te(?:bank|farm))|c(?:group)?|o(?:ckholm|r(?:age|e))|ream|ud(?:io|y)|yle)?|u(?:cks|pp(?:l(?:ies|y)|ort)|r(?:f|gery)|zuki)?|v|w(?:atch|iss)|x|y(?:dney|stems)?|z)|t(?:a(?:b|ipei|lk|obao|rget|t(?:a(?:motors|r)|too)|xi?)|ci?|dk?|e(?:am|ch(?:nology)?|l|masek|nnis|va)|f|g|h(?:d|eat(?:er|re))?|i(?:aa|ckets|enda|ffany|ps|r(?:es|ol))|j(?:maxx|x)?|k(?:maxx)?|l|m(?:all)?|n|o(?:day|kyo|ols|p|ray|shiba|tal|urs|wn|y(?:ota|s))?|r(?:a(?:d(?:e|ing)|ining|vel(?:channel|ers(?:insurance)?)?)|ust|v)?|t|u(?:be|i|nes|shu)|vs?|w|z)|u(?:a|b(?:ank|s)|g|k|n(?:i(?:com|versity)|o)|ol|ps|s|y|z)|v(?:a(?:cations|n(?:a|guard))?|c|e(?:gas|ntures|r(?:isign|sicherung)|t)?|g|i(?:ajes|deo|g|king|llas|n|p|rgin|s(?:a|ion)|v[ao])?|laanderen|n|o(?:dka|l(?:kswagen|vo)|t(?:e|ing|o)|yage)|u(?:elos)?)|w(?:a(?:l(?:es|mart|ter)|ng(?:gou)?|tch(?:es)?)|e(?:ather(?:channel)?|b(?:cam|er|site)|d(?:ding)?|i(?:bo|r))|f|hoswho|i(?:en|ki|lliamhill|n(?:dows|e|ners)?)|me|o(?:lterskluwer|odside|r(?:ks?|ld)|w)|s|t[cf])|x(?:box|erox|finity|i(?:huan|n)|xx|yz)|y(?:a(?:chts|hoo|maxun|ndex)|e|o(?:dobashi|ga|kohama|u(?:tube)?)|t|un)|z(?:a(?:ppos|ra)?|ero|ip|m|one|uerich|w)";
10
10
  const PUNCTUATION_CHAR_PATTERN = "\\.\\,\\;\\!\\?";
11
11
  const STOP_CHAR_PATTERN = "[" + PUNCTUATION_CHAR_PATTERN + "]";
12
- const END_CHAR_PATTERN = "[^\\s" + PUNCTUATION_CHAR_PATTERN + "]";
12
+ "" + PUNCTUATION_CHAR_PATTERN;
13
13
  const LINK_RE_BASE_PATTERN = "((?:(?:(?:https?:)?\\/\\/)?(?:(?:[a-z0-9\\u00a1-\\uffff][a-z0-9\\u00a1-\\uffff_-]{0,62})?[a-z0-9\\u00a1-\\uffff]\\.)+(?:" + TLD_RE_PATTERN + "))(?::\\d{2,5})?(?:/(?:\\S*[^\\s\\.\\,\\;\\!\\?])?)?(?:\\?(?:\\S*[^\\s\\.\\,\\;\\!\\?]))?(?:\\#(?:\\S*[^\\s\\.\\,\\;\\!\\?])?)?)";
14
14
  const LINK_ENTER_PATTERN = LINK_RE_BASE_PATTERN + STOP_CHAR_PATTERN + "?$";
15
15
  const LINK_INPUT_PATTERN = LINK_RE_BASE_PATTERN + STOP_CHAR_PATTERN + "?\\s$";
@@ -142,4 +142,5 @@ function defineLink() {
142
142
  }
143
143
 
144
144
  //#endregion
145
- export { defineLink, defineLinkCommands, defineLinkEnterRule, defineLinkInputRule, defineLinkMarkRule, defineLinkPasteRule, defineLinkSpec };
145
+ export { defineLink, defineLinkCommands, defineLinkEnterRule, defineLinkInputRule, defineLinkMarkRule, defineLinkPasteRule, defineLinkSpec };
146
+ //# sourceMappingURL=prosekit-extensions-link.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prosekit-extensions-link.js","names":["LINK_ENTER_RE: RegExp","LINK_INPUT_RE: RegExp","LINK_MARK_RE: RegExp"],"sources":["../src/link/link-regex.ts","../src/link/link-paste-rule.ts","../src/link/index.ts"],"sourcesContent":["/* eslint-disable unicorn/prefer-string-raw -- Don't use String.raw here for better bundler minification */\n\n// All valid alpha TLDs.\n// Data source: https://data.iana.org/TLD/tlds-alpha-by-domain.txt\nconst TLD_RE_PATTERN =\n 'a(?:a(?:a|rp)|b(?:arth|b(?:ott|vie)?|c|le|ogado|udhabi)|c(?:ademy|c(?:enture|ountants?)|o|tor)?|d(?:s|ult)?|e(?:g|ro|tna)?|f(?:l|rica)?|g(?:akhan|ency)?|i(?:g|r(?:bus|force|tel))?|kdn|l(?:faromeo|i(?:baba|pay)|l(?:finanz|state|y)|s(?:ace|tom))?|m(?:azon|e(?:rican(?:express|family)|x)|fam|ica|sterdam)?|n(?:alytics|droid|quan|z)|ol?|p(?:artments|p(?:le)?)|q(?:uarelle)?|r(?:a(?:b|mco)|chi|my|pa|te?)?|s(?:da|ia|sociates)?|t(?:hleta|torney)?|u(?:ction|di(?:ble|o)?|spost|t(?:hor|os?))?|vianca|ws?|xa?|z(?:ure)?)|b(?:a(?:by|idu|n(?:a(?:mex|narepublic)|d|k)|r(?:c(?:elona|lay(?:card|s))|efoot|gains)?|s(?:eball|ketball)|uhaus|yern)?|b(?:c|t|va)?|c[gn]|d|e(?:a(?:ts|uty)|er|ntley|rlin|st(?:buy)?|t)?|f|g|h(?:arti)?|i(?:ble|d|ke|ngo?|o|z)?|j|l(?:ack(?:friday)?|o(?:ckbuster|g|omberg)|ue)|m[sw]?|n(?:pparibas)?|o(?:ats|ehringer|fa|m|nd|o(?:k(?:ing)?)?|s(?:ch|t(?:ik|on))|t|utique|x)?|r(?:adesco|idgestone|o(?:adway|ker|ther)|ussels)?|s|t|u(?:ild(?:ers)?|siness|y|zz)|v|w|y|zh?)|c(?:a(?:b|fe|l(?:l|vinklein)?|m(?:era|p)?|non|p(?:etown|ital(?:one)?)|r(?:avan|ds|e(?:ers?)?|s)?|s(?:a|e|h|ino)|t(?:ering|holic)?)?|b(?:a|n|re|s)|c|d|e(?:nter|o|rn)|f[ad]?|g|h(?:a(?:n(?:el|nel)|rity|se|t)|eap|intai|r(?:istmas|ome)|urch)?|i(?:priani|rcle|sco|t(?:adel|ic?|y(?:eats)?))?|k|l(?:aims|eaning|i(?:ck|ni(?:c|que))|o(?:thing|ud)|ub(?:med)?)?|m|n|o(?:ach|des|ffee|l(?:lege|ogne)|m(?:cast|m(?:bank|unity)|p(?:a(?:ny|re)|uter)|sec)?|n(?:dos|s(?:truction|ulting)|t(?:act|ractors))|o(?:king(?:channel)?|l|p)|rsica|u(?:ntry|pons?|rses))?|pa|r(?:edit(?:card|union)?|icket|own|s|uises?)?|u(?:isinella)?|v|w|x|y(?:mru|ou)?|z)|d(?:a(?:bur|d|nce|t(?:a|e|ing|sun)|y)|clk|ds|e(?:al(?:er|s)?|gree|l(?:ivery|l|oitte|ta)|mocrat|nt(?:al|ist)|si(?:gn)?|v)?|hl|i(?:amonds|et|gital|rect(?:ory)?|s(?:co(?:unt|ver)|h)|y)|j|k|m|np|o(?:c(?:s|tor)|g|mains|t|wnload)?|rive|tv|u(?:bai|nlop|pont|rban)|v(?:ag|r)|z)|e(?:a(?:rth|t)|co?|d(?:eka|u(?:cation)?)|e|g|m(?:ail|erck)|n(?:ergy|gineer(?:ing)?|terprises)|pson|quipment|r(?:icsson|ni)?|s(?:q|tate)?|t(?:isalat)?|u(?:rovision|s)?|vents|x(?:change|p(?:ert|osed|ress)|traspace))|f(?:a(?:ge|i(?:l|rwinds|th)|mily|ns?|rm(?:ers)?|s(?:hion|t))|e(?:dex|edback|rr(?:ari|ero))|i(?:at|d(?:elity|o)|lm|na(?:l|nc(?:e|ial))|r(?:e(?:stone)?|mdale)|sh(?:ing)?|t(?:ness)?)?|j|k|l(?:i(?:ckr|ghts|r)|o(?:rist|wers)|y)|m|o(?:o(?:d(?:network)?|tball)?|r(?:d|ex|sale|um)|undation|x)?|r(?:e(?:e|senius)|l|o(?:gans|nt(?:door|ier)))?|tr|u(?:jitsu|nd?|rniture|tbol)|yi)|g(?:a(?:l(?:l(?:ery|o|up))?|mes?|p|rden|y)?|b(?:iz)?|dn?|e(?:a|nt(?:ing)?|orge)?|f|g(?:ee)?|h|i(?:fts?|v(?:es|ing))?|l(?:ass|e|ob(?:al|o))?|m(?:ail|bh|o|x)?|n|o(?:daddy|l(?:d(?:point)?|f)|o(?:dyear|g(?:le)?)?|p|t|v)|p|q|r(?:a(?:inger|phics|tis)|een|ipe|o(?:cery|up))?|s|t|u(?:ardian|cci|ge|i(?:de|tars)|ru)?|w|y)|h(?:a(?:ir|mburg|ngout|us)|bo|dfc(?:bank)?|e(?:alth(?:care)?|l(?:p|sinki)|r(?:e|mes))|gtv|i(?:phop|samitsu|tachi|v)|kt?|m|n|o(?:ckey|l(?:dings|iday)|me(?:depot|goods|s(?:ense)?)|nda|rse|s(?:pital|t(?:ing)?)|t(?:el(?:es|s)|mail)?|use|w)|r|sbc|t|u(?:ghes)?|y(?:att|undai))|i(?:bm|c(?:bc|e|u)|d|e(?:ee)?|fm|kano|l|m(?:amat|db|mo(?:bilien)?)?|n(?:c|dustries|f(?:initi|o)|g|k|s(?:titute|ur(?:ance|e))|t(?:ernational|uit)?|vestments)?|o|piranga|q|r(?:ish)?|s(?:maili|t(?:anbul)?)?|t(?:au|v)?)|j(?:a(?:guar|va)|cb|e(?:ep|tzt|welry)?|io|ll|mp?|nj|o(?:b(?:s|urg)|t|y)?|p(?:morgan|rs)?|u(?:egos|niper))|k(?:aufen|ddi|e(?:rry(?:hotels|logistics|properties))?|fh|g|h|i(?:a|ds|m|nd(?:er|le)|tchen|wi)?|m|n|o(?:eln|matsu|sher)|p(?:mg|n)?|r(?:d|ed)?|uokgroup|w|y(?:oto)?|z)|l(?:a(?:caixa|m(?:borghini|er)|n(?:c(?:aster|ia)|d(?:rover)?|xess)|salle|t(?:ino|robe)?|w(?:yer)?)?|b|c|ds|e(?:ase|clerc|frak|g(?:al|o)|xus)|gbt|i(?:dl|fe(?:insurance|style)?|ghting|ke|lly|m(?:ited|o)|n(?:coln|de|k)|psy|v(?:e|ing))?|k|l[cp]|o(?:ans?|c(?:ker|us)|l|ndon|tt[eo]|ve)|pl(?:financial)?|r|s|t(?:da?)?|u(?:ndbeck|x(?:e|ury))?|v|y)|m(?:a(?:cys|drid|i(?:f|son)|keup|n(?:agement|go)?|p|r(?:ket(?:ing|s)?|riott|shalls)|serati|ttel)?|ba|c(?:kinsey)?|d|e(?:d(?:ia)?|et|lbourne|m(?:e|orial)|nu?|rckmsd)?|g|h|i(?:ami|crosoft|l|n[it]|t(?:subishi)?)|k|l[bs]?|ma?|n|o(?:bi(?:le)?|da|e|i|m|n(?:ash|ey|ster)|r(?:mon|tgage)|scow|to(?:rcycles)?|v(?:ie)?)?|p|q|r|sd?|t[nr]?|u(?:s(?:eum|ic)|tual)?|v|w|x|y|z)|n(?:a(?:b|goya|me|tura|vy)?|ba|c|e(?:c|t(?:bank|flix|work)?|ustar|ws?|x(?:t(?:direct)?|us))?|fl?|go?|hk|i(?:co|k(?:e|on)|nja|ssa[ny])?|l|o(?:kia|rt(?:hwesternmutual|on)|w(?:ruz|tv)?)?|p|r[aw]?|tt|u|yc|z)|o(?:b(?:i|server)|ffice|kinawa|l(?:ayan(?:group)?|dnavy|lo)|m(?:ega)?|n(?:e|g|l(?:ine)?)|oo|pen|r(?:a(?:cle|nge)|g(?:anic)?|igins)|saka|t(?:suka|t)|vh)|p(?:a(?:ge|nasonic|r(?:is|s|t(?:ners|s|y))|ssagens|y)?|ccw|et?|f(?:izer)?|g|h(?:armacy|d|ilips|o(?:ne|to(?:graphy|s)?)|ysio)?|i(?:c(?:s|t(?:et|ures))|d|n[gk]?|oneer|zza)|k|l(?:a(?:ce|y(?:station)?)|u(?:mbing|s))?|m|nc?|o(?:hl|ker|litie|rn|st)|r(?:a(?:merica|xi)|ess|ime|o(?:d(?:uctions)?|f|gressive|mo|pert(?:ies|y)|tection)?|u(?:dential)?)?|s|t|ub|wc?|y)|q(?:a|pon|ue(?:bec|st))|r(?:a(?:cing|dio)|e(?:a(?:d|l(?:estate|t(?:or|y)))|cipes|d(?:stone|umbrella)?|hab|i(?:sen?|t)|liance|n(?:t(?:als)?)?|p(?:air|ort|ublican)|st(?:aurant)?|views?|xroth)?|i(?:c(?:h(?:ardli)?|oh)|l|o|p)|o(?:c(?:her|ks)|deo|gers|om)?|s(?:vp)?|u(?:gby|hr|n)?|we?|yukyu)|s(?:a(?:arland|fe(?:ty)?|kura|l(?:e|on)|ms(?:club|ung)|n(?:dvik(?:coromant)?|ofi)|p|rl|s|ve|xo)?|b[is]?|c(?:a|b|h(?:aeffler|midt|o(?:larships|ol)|ule|warz)|ience|ot)?|d|e(?:a(?:rch|t)|cur(?:e|ity)|ek|lect|ner|rvices|ven|w|xy?)?|fr|g|h(?:a(?:ngrila|rp|w)|ell|i(?:a|ksha)|o(?:es|p(?:ping)?|uji|w(?:time)?))?|i(?:lk|n(?:a|gles)|te)?|j|k(?:in?|y(?:pe)?)?|l(?:ing)?|m(?:art|ile)?|n(?:cf)?|o(?:c(?:cer|ial)|ft(?:bank|ware)|hu|l(?:ar|utions)|n[gy]|y)?|p(?:a(?:ce)?|o(?:rt|t))|rl?|s|t(?:a(?:da|ples|r|te(?:bank|farm))|c(?:group)?|o(?:ckholm|r(?:age|e))|ream|ud(?:io|y)|yle)?|u(?:cks|pp(?:l(?:ies|y)|ort)|r(?:f|gery)|zuki)?|v|w(?:atch|iss)|x|y(?:dney|stems)?|z)|t(?:a(?:b|ipei|lk|obao|rget|t(?:a(?:motors|r)|too)|xi?)|ci?|dk?|e(?:am|ch(?:nology)?|l|masek|nnis|va)|f|g|h(?:d|eat(?:er|re))?|i(?:aa|ckets|enda|ffany|ps|r(?:es|ol))|j(?:maxx|x)?|k(?:maxx)?|l|m(?:all)?|n|o(?:day|kyo|ols|p|ray|shiba|tal|urs|wn|y(?:ota|s))?|r(?:a(?:d(?:e|ing)|ining|vel(?:channel|ers(?:insurance)?)?)|ust|v)?|t|u(?:be|i|nes|shu)|vs?|w|z)|u(?:a|b(?:ank|s)|g|k|n(?:i(?:com|versity)|o)|ol|ps|s|y|z)|v(?:a(?:cations|n(?:a|guard))?|c|e(?:gas|ntures|r(?:isign|sicherung)|t)?|g|i(?:ajes|deo|g|king|llas|n|p|rgin|s(?:a|ion)|v[ao])?|laanderen|n|o(?:dka|l(?:kswagen|vo)|t(?:e|ing|o)|yage)|u(?:elos)?)|w(?:a(?:l(?:es|mart|ter)|ng(?:gou)?|tch(?:es)?)|e(?:ather(?:channel)?|b(?:cam|er|site)|d(?:ding)?|i(?:bo|r))|f|hoswho|i(?:en|ki|lliamhill|n(?:dows|e|ners)?)|me|o(?:lterskluwer|odside|r(?:ks?|ld)|w)|s|t[cf])|x(?:box|erox|finity|i(?:huan|n)|xx|yz)|y(?:a(?:chts|hoo|maxun|ndex)|e|o(?:dobashi|ga|kohama|u(?:tube)?)|t|un)|z(?:a(?:ppos|ra)?|ero|ip|m|one|uerich|w)'\n\n// Some common punctuations that can be used to stop a link\nconst PUNCTUATION_CHAR_PATTERN = '\\\\.\\\\,\\\\;\\\\!\\\\?'\n\nconst STOP_CHAR_PATTERN = '[' + PUNCTUATION_CHAR_PATTERN + ']'\n\nconst END_CHAR_PATTERN = '[^' + '\\\\s' + PUNCTUATION_CHAR_PATTERN + ']'\n\n// dprint-ignore\nconst LINK_RE_BASE_PATTERN = (\n // start of the link group\n '(' + \n '(?:' +\n // protocol identifier (optional)\n // short syntax // is allowed\n '(?:(?:https?:)?\\\\/\\\\/)?' +\n\n // host & domain names.\n '(?:' +\n '(?:' +\n '[a-z0-9\\\\u00a1-\\\\uffff]' +\n '[a-z0-9\\\\u00a1-\\\\uffff_-]{0,62}' +\n ')?' +\n '[a-z0-9\\\\u00a1-\\\\uffff]\\\\.' +\n ')+' +\n\n // TLD identifier name, must not end with dot\n '(?:' +\n TLD_RE_PATTERN +\n ')' +\n ')' +\n\n // port number (optional)\n '(?::\\\\d{2,5})?' +\n\n // sub path (optional)\n '(?:/' +\n '(?:' + \n '\\\\S*' +\n END_CHAR_PATTERN +\n ')?' +\n ')?' +\n\n // query string (optional)\n '(?:\\\\?' + \n '(?:' + \n '\\\\S*' +\n END_CHAR_PATTERN +\n ')' +\n ')?' +\n\n // fragment (optional)\n '(?:\\\\#' + \n '(?:' + \n '\\\\S*' +\n END_CHAR_PATTERN +\n ')?' +\n ')?' +\n\n // end of the link group\n ')'\n)\n\n// dprint-ignore\nconst LINK_ENTER_PATTERN = LINK_RE_BASE_PATTERN + STOP_CHAR_PATTERN + '?' + '$'\n// dprint-ignore\nconst LINK_INPUT_PATTERN = LINK_RE_BASE_PATTERN + STOP_CHAR_PATTERN + '?' + '\\\\s$'\n// dprint-ignore\nconst LINK_MARK_PATTERN = LINK_RE_BASE_PATTERN + '(?=' + STOP_CHAR_PATTERN + '|\\\\s|$)'\n\nexport const LINK_ENTER_RE: RegExp = new RegExp(LINK_ENTER_PATTERN, 'gi')\nexport const LINK_INPUT_RE: RegExp = new RegExp(LINK_INPUT_PATTERN, 'gi')\nexport const LINK_MARK_RE: RegExp = new RegExp(LINK_MARK_PATTERN, 'gi')\n","import type { PlainExtension } from '@prosekit/core'\n\nimport { defineMarkPasteRule } from '../paste-rule'\n\nimport { LINK_MARK_RE } from './link-regex'\nimport type { LinkAttrs } from './link-types'\n\n/**\n * @internal\n */\nexport function defineLinkPasteRule(): PlainExtension {\n return defineMarkPasteRule({\n type: 'link',\n regex: LINK_MARK_RE,\n getAttrs: (match: RegExpExecArray): LinkAttrs | false => {\n if (match[1]) {\n return { href: match[1] } satisfies LinkAttrs\n }\n return false\n },\n })\n}\n","import {\n addMark,\n defineCommands,\n defineMarkSpec,\n expandMark,\n removeMark,\n toggleMark,\n union,\n type Extension,\n type PlainExtension,\n type Union,\n} from '@prosekit/core'\nimport { InputRule } from '@prosekit/pm/inputrules'\n\nimport { defineEnterRule } from '../enter-rule'\nimport { defineInputRule } from '../input-rule'\nimport { defineMarkRule } from '../mark-rule'\n\nimport { defineLinkPasteRule } from './link-paste-rule'\nimport {\n LINK_ENTER_RE,\n LINK_INPUT_RE,\n LINK_MARK_RE,\n} from './link-regex'\nimport type { LinkAttrs } from './link-types'\n\nexport { defineLinkPasteRule }\nexport type { LinkAttrs }\n\n/**\n * @internal\n */\nexport type LinkSpecExtension = Extension<{\n Marks: {\n link: LinkAttrs\n }\n}>\n\n/**\n * @internal\n */\nexport function defineLinkSpec(): LinkSpecExtension {\n return defineMarkSpec<'link', LinkAttrs>({\n name: 'link',\n inclusive: false,\n attrs: {\n href: { validate: 'string' },\n target: { default: null, validate: 'string|null' },\n rel: { default: null, validate: 'string|null' },\n },\n parseDOM: [\n {\n tag: 'a[href]',\n getAttrs: (dom: HTMLElement) => {\n return {\n href: dom.getAttribute('href') || '',\n target: dom.getAttribute('target') || null,\n rel: dom.getAttribute('rel') || null,\n }\n },\n },\n ],\n toDOM(node) {\n const { href, target, rel } = node.attrs as LinkAttrs\n return ['a', { href, target, rel }, 0]\n },\n })\n}\n\n/**\n * @internal\n */\nexport type LinkCommandsExtension = Extension<{\n Commands: {\n addLink: [attrs: LinkAttrs]\n removeLink: []\n toggleLink: [attrs: LinkAttrs]\n expandLink: []\n }\n}>\n\nexport function defineLinkCommands(): LinkCommandsExtension {\n return defineCommands({\n addLink: (attrs: LinkAttrs) => addMark({ type: 'link', attrs }),\n removeLink: () => removeMark({ type: 'link' }),\n toggleLink: (attrs: LinkAttrs) => toggleMark({ type: 'link', attrs }),\n expandLink: () => expandMark({ type: 'link' }),\n })\n}\n\n/**\n * Apply link marks after pressing Space.\n *\n * @internal\n */\nexport function defineLinkInputRule(): PlainExtension {\n return defineInputRule(\n new InputRule(LINK_INPUT_RE, (state, match, from) => {\n const href = match[1]\n if (!href) return null\n\n const mark = state.schema.marks.link.create({ href })\n return state.tr.addMark(from, from + href.length, mark).insertText(' ')\n }),\n )\n}\n\n/**\n * Apply link marks after typing Enter.\n *\n * @internal\n */\nexport function defineLinkEnterRule(): PlainExtension {\n return defineEnterRule({\n regex: LINK_ENTER_RE,\n handler: ({ state, from, match }) => {\n const href = match[1]\n if (!href) return null\n\n const mark = state.schema.marks.link.create({ href })\n const tr = state.tr.addMark(from, from + href.length, mark)\n return tr.docChanged ? tr : null\n },\n })\n}\n\n/**\n * Apply and remove link marks to the text during typing.\n *\n * @internal\n */\nexport function defineLinkMarkRule(): PlainExtension {\n return defineMarkRule({\n regex: LINK_MARK_RE,\n type: 'link',\n attrs: (match) => ({ href: match[1] }),\n })\n}\n\n/**\n * @internal\n */\nexport type LinkExtension = Union<[LinkSpecExtension, LinkCommandsExtension]>\n\n/**\n * @public\n */\nexport function defineLink(): LinkExtension {\n return union(\n defineLinkSpec(),\n defineLinkCommands(),\n defineLinkInputRule(),\n defineLinkEnterRule(),\n defineLinkPasteRule(),\n )\n}\n"],"mappings":";;;;;;;;AAIA,MAAM,iBACJ;AAGF,MAAM,2BAA2B;AAEjC,MAAM,oBAAoB,MAAM,2BAA2B;AAElC,KAAe;AAGxC,MAAM,uBAEF,6HAiBY,iBACJ;AAmCZ,MAAM,qBAAqB,uBAAuB,oBAAoB;AAEtE,MAAM,qBAAqB,uBAAuB,oBAAoB;AAEtE,MAAM,oBAAoB,uBAAuB;AAEjD,MAAaA,gBAAwB,IAAI,OAAO,oBAAoB,KAAK;AACzE,MAAaC,gBAAwB,IAAI,OAAO,oBAAoB,KAAK;AACzE,MAAaC,eAAuB,IAAI,OAAO,mBAAmB,KAAK;;;;;;;ACpEvE,SAAgB,sBAAsC;AACpD,QAAO,oBAAoB;EACzB,MAAM;EACN,OAAO;EACP,WAAW,UAA8C;AACvD,OAAI,MAAM,GACR,QAAO,EAAE,MAAM,MAAM,IAAI;AAE3B,UAAO;;EAEV,CAAC;;;;;;;;ACqBJ,SAAgB,iBAAoC;AAClD,QAAO,eAAkC;EACvC,MAAM;EACN,WAAW;EACX,OAAO;GACL,MAAM,EAAE,UAAU,UAAU;GAC5B,QAAQ;IAAE,SAAS;IAAM,UAAU;IAAe;GAClD,KAAK;IAAE,SAAS;IAAM,UAAU;IAAe;GAChD;EACD,UAAU,CACR;GACE,KAAK;GACL,WAAW,QAAqB;AAC9B,WAAO;KACL,MAAM,IAAI,aAAa,OAAO,IAAI;KAClC,QAAQ,IAAI,aAAa,SAAS,IAAI;KACtC,KAAK,IAAI,aAAa,MAAM,IAAI;KACjC;;GAEJ,CACF;EACD,MAAM,MAAM;GACV,MAAM,EAAE,MAAM,QAAQ,QAAQ,KAAK;AACnC,UAAO;IAAC;IAAK;KAAE;KAAM;KAAQ;KAAK;IAAE;IAAE;;EAEzC,CAAC;;AAeJ,SAAgB,qBAA4C;AAC1D,QAAO,eAAe;EACpB,UAAU,UAAqB,QAAQ;GAAE,MAAM;GAAQ;GAAO,CAAC;EAC/D,kBAAkB,WAAW,EAAE,MAAM,QAAQ,CAAC;EAC9C,aAAa,UAAqB,WAAW;GAAE,MAAM;GAAQ;GAAO,CAAC;EACrE,kBAAkB,WAAW,EAAE,MAAM,QAAQ,CAAC;EAC/C,CAAC;;;;;;;AAQJ,SAAgB,sBAAsC;AACpD,QAAO,gBACL,IAAI,UAAU,gBAAgB,OAAO,OAAO,SAAS;EACnD,MAAM,OAAO,MAAM;AACnB,MAAI,CAAC,KAAM,QAAO;EAElB,MAAM,OAAO,MAAM,OAAO,MAAM,KAAK,OAAO,EAAE,MAAM,CAAC;AACrD,SAAO,MAAM,GAAG,QAAQ,MAAM,OAAO,KAAK,QAAQ,KAAK,CAAC,WAAW,IAAI;GACvE,CACH;;;;;;;AAQH,SAAgB,sBAAsC;AACpD,QAAO,gBAAgB;EACrB,OAAO;EACP,UAAU,EAAE,OAAO,MAAM,YAAY;GACnC,MAAM,OAAO,MAAM;AACnB,OAAI,CAAC,KAAM,QAAO;GAElB,MAAM,OAAO,MAAM,OAAO,MAAM,KAAK,OAAO,EAAE,MAAM,CAAC;GACrD,MAAM,KAAK,MAAM,GAAG,QAAQ,MAAM,OAAO,KAAK,QAAQ,KAAK;AAC3D,UAAO,GAAG,aAAa,KAAK;;EAE/B,CAAC;;;;;;;AAQJ,SAAgB,qBAAqC;AACnD,QAAO,eAAe;EACpB,OAAO;EACP,MAAM;EACN,QAAQ,WAAW,EAAE,MAAM,MAAM,IAAI;EACtC,CAAC;;;;;AAWJ,SAAgB,aAA4B;AAC1C,QAAO,MACL,gBAAgB,EAChB,oBAAoB,EACpB,qBAAqB,EACrB,qBAAqB,EACrB,qBAAqB,CACtB"}
@@ -26,26 +26,6 @@ type ListCommandsExtension = Extension<{
26
26
  */
27
27
  declare function defineListCommands(): ListCommandsExtension;
28
28
  //#endregion
29
- //#region src/list/list-input-rules.d.ts
30
- /**
31
- * @internal
32
- */
33
- declare function defineListInputRules(): Extension;
34
- //#endregion
35
- //#region src/list/list-keymap.d.ts
36
- /**
37
- * Returns a extension that adds key bindings for list.
38
- *
39
- * @internal
40
- */
41
- declare function defineListKeymap(): PlainExtension;
42
- //#endregion
43
- //#region src/list/list-plugins.d.ts
44
- /**
45
- * @internal
46
- */
47
- declare function defineListPlugins(): PlainExtension;
48
- //#endregion
49
29
  //#region src/list/list-types.d.ts
50
30
  /**
51
31
  * The attributes of a list node.
@@ -95,10 +75,31 @@ type ListExtension = Union<[ListSpecExtension, ListCommandsExtension]>;
95
75
  */
96
76
  declare function defineList(): ListExtension;
97
77
  //#endregion
78
+ //#region src/list/list-input-rules.d.ts
79
+ /**
80
+ * @internal
81
+ */
82
+ declare function defineListInputRules(): Extension;
83
+ //#endregion
84
+ //#region src/list/list-keymap.d.ts
85
+ /**
86
+ * Returns a extension that adds key bindings for list.
87
+ *
88
+ * @internal
89
+ */
90
+ declare function defineListKeymap(): PlainExtension;
91
+ //#endregion
92
+ //#region src/list/list-plugins.d.ts
93
+ /**
94
+ * @internal
95
+ */
96
+ declare function defineListPlugins(): PlainExtension;
97
+ //#endregion
98
98
  //#region src/list/list-serializer.d.ts
99
99
  /**
100
100
  * @internal
101
101
  */
102
102
  declare function defineListSerializer(): PlainExtension;
103
103
  //#endregion
104
- export { type DedentListOptions, type IndentListOptions, type ListAttrs, type ListCommandsExtension, ListDOMSerializer, type ListExtension, type ListSpecExtension, type ToggleCollapsedOptions, type UnwrapListOptions, type WrapInListGetAttrs, defineList, defineListCommands, defineListInputRules, defineListKeymap, defineListPlugins, defineListSerializer, defineListSpec };
104
+ export { type DedentListOptions, type IndentListOptions, type ListAttrs, type ListCommandsExtension, ListDOMSerializer, type ListExtension, type ListSpecExtension, type ToggleCollapsedOptions, type UnwrapListOptions, type WrapInListGetAttrs, defineList, defineListCommands, defineListInputRules, defineListKeymap, defineListPlugins, defineListSerializer, defineListSpec };
105
+ //# sourceMappingURL=prosekit-extensions-list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prosekit-extensions-list.d.ts","names":[],"sources":["../src/list/list-commands.ts","../src/list/list-types.ts","../src/list/list-spec.ts","../src/list/list.ts","../src/list/list-input-rules.ts","../src/list/list-keymap.ts","../src/list/list-plugins.ts","../src/list/list-serializer.ts"],"sourcesContent":[],"mappings":";;;;;;;AA6BA;AAAiC,KAArB,qBAAA,GAAwB,SAAH,CAAA;UAEN,EAAA;IACA,UAAA,EAAA,CAAA,OAAA,GADA,mBACA,CAAA;IAGK,UAAA,EAAA,CAAA,OAAA,GAHL,mBAGK,CAAA;IACL,QAAA,EAAA,CAAA,SAAA,EAAA,IAAA,GAAA,MAAA,CAAA;IACF,SAAA,EAAA,EAAA;IACA,eAAA,EAAA,CAAA,OAAA,GAHO,wBAGP,CAAA;IACA,UAAA,EAAA,CAAA,OAAA,GAHE,mBAGF,CAAA;IAVW,UAAA,EAAA,CAAA,KAAA,GAQX,cARW,CAAA;IAAS,UAAA,EAAA,CAAA,KAAA,GASpB,cAToB,CAAA;IAmB7B,UAAA,EAAA,CAAA,KAAkB,GATT,cASa,CAAA;;;;AC3CtC;;;;ACcY,iBF6BI,kBAAA,CAAA,CE7Ba,EF6BS,qBE7BT;;;;;;;AFU7B;AAAiC,UCxBhB,SAAA,CDwBgB;;;;MAON,CAAA,EAAA,QAAA,GAAA,SAAA,GAAA,MAAA,GAAA,QAAA;;;;OAPS,CAAA,EAAA,MAAA,GAAA,IAAA;EAAS;AAmB7C;;;;AC3CA;;;;;;;;ADwBA;AAAiC,KEVrB,iBAAA,GAAoB,SFUC,CAAA;OAEN,EAAA;IACA,IAAA,EEXjB,SFWiB;;;;;;AAHS,iBEoBpB,cAAA,CAAA,CFpBoB,EEoBF,iBFpBE;;;;AAApC;;AAE2B,KGTf,aAAA,GAAgB,KHSD,CAAA,CGTQ,iBHSR,EGT2B,qBHS3B,CAAA,CAAA;;;;AAMF,iBGVT,UAAA,CAAA,CHUS,EGVK,aHUL;;;;;;AARb,iBIlBI,oBAAA,CAAA,CJkBiB,EIlBO,SJkBP;;;;;;AAAjC;;AAE2B,iBKcX,gBAAA,CAAA,CLdW,EKcS,cLdT;;;;;;AAFf,iBMGI,iBAAA,CAAA,CNHiB,EMGI,cNHJ;;;;;;AAArB,iBOhBI,oBAAA,CAAA,CPgBiB,EOhBO,cPgBP"}
@@ -1,10 +1,10 @@
1
- import { defineInputRule } from "./input-rule-Gji4N7Oe.js";
2
- import { defineDropIndicator } from "./drop-indicator-dB9rZn8e.js";
1
+ import { defineInputRule } from "./input-rule-B17tpW4m.js";
2
+ import { defineDropIndicator } from "./drop-indicator-E7nCfdnR.js";
3
3
  import { defineClipboardSerializer, defineCommands, defineKeymap, defineNodeSpec, definePlugin, insertNode, union } from "@prosekit/core";
4
4
  import { Plugin } from "@prosekit/pm/state";
5
5
  import { chainCommands, deleteSelection } from "@prosekit/pm/commands";
6
- import { isElementLike } from "@ocavue/utils";
7
6
  import { ListDOMSerializer, createDedentListCommand, createIndentListCommand, createListEventPlugin, createListRenderingPlugin, createListSpec, createMoveListCommand, createSafariInputMethodWorkaroundPlugin, createSplitListCommand, createToggleCollapsedCommand, createToggleListCommand, createUnwrapListCommand, createWrapInListCommand, deleteCommand, enterCommand, joinCollapsedListBackward, joinListElements, joinListUp, listInputRules, listToDOM, protectCollapsed, unwrapListSlice } from "prosemirror-flat-list";
7
+ import { isElementLike } from "@ocavue/utils";
8
8
 
9
9
  //#region src/list/list-commands.ts
10
10
  function insertList(attrs) {
@@ -48,8 +48,7 @@ function defineListDropIndicator() {
48
48
  const onDrag = ({ view, pos }) => {
49
49
  const slice = view.dragging?.slice;
50
50
  if (slice && slice.openStart === 0 && slice.openEnd === 0 && slice.content.childCount === 1) {
51
- const node = slice.content.child(0);
52
- if (node.type.name === "list") {
51
+ if (slice.content.child(0).type.name === "list") {
53
52
  const $pos = view.state.doc.resolve(pos);
54
53
  if ($pos.parent.type.name === "list" && $pos.index() === 0) return false;
55
54
  }
@@ -130,9 +129,8 @@ function defineListSerializer() {
130
129
  },
131
130
  nodesFromSchemaWrapper: (fn) => {
132
131
  return (...args) => {
133
- const nodes = fn(...args);
134
132
  return {
135
- ...nodes,
133
+ ...fn(...args),
136
134
  list: (node) => listToDOM({
137
135
  node,
138
136
  nativeList: true,
@@ -183,4 +181,5 @@ function defineList() {
183
181
  }
184
182
 
185
183
  //#endregion
186
- export { ListDOMSerializer, defineList, defineListCommands, defineListInputRules, defineListKeymap, defineListPlugins, defineListSerializer, defineListSpec };
184
+ export { ListDOMSerializer, defineList, defineListCommands, defineListInputRules, defineListKeymap, defineListPlugins, defineListSerializer, defineListSpec };
185
+ //# sourceMappingURL=prosekit-extensions-list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prosekit-extensions-list.js","names":["onDrag: DragEventHandler"],"sources":["../src/list/list-commands.ts","../src/list/list-drop-indicator.ts","../src/list/list-input-rules.ts","../src/list/list-keymap.ts","../src/list/list-plugins.ts","../src/list/list-serializer.ts","../src/list/list-spec.ts","../src/list/list.ts"],"sourcesContent":["import {\n defineCommands,\n insertNode,\n type Extension,\n} from '@prosekit/core'\nimport type { Command } from '@prosekit/pm/state'\nimport {\n createDedentListCommand as dedentList,\n createIndentListCommand as indentList,\n createMoveListCommand as moveList,\n createSplitListCommand as splitList,\n createToggleCollapsedCommand as toggleCollapsed,\n createToggleListCommand as toggleList,\n createUnwrapListCommand as unwrapList,\n createWrapInListCommand as wrapInList,\n type DedentListOptions,\n type IndentListOptions,\n type ListAttributes,\n type ToggleCollapsedOptions,\n type UnwrapListOptions,\n} from 'prosemirror-flat-list'\n\nfunction insertList(attrs?: ListAttributes): Command {\n return insertNode({ type: 'list', attrs })\n}\n\n/**\n * @internal\n */\nexport type ListCommandsExtension = Extension<{\n Commands: {\n dedentList: [options?: DedentListOptions]\n indentList: [options?: IndentListOptions]\n moveList: [direction: 'up' | 'down']\n splitList: []\n toggleCollapsed: [options?: ToggleCollapsedOptions]\n unwrapList: [options?: UnwrapListOptions]\n toggleList: [attrs?: ListAttributes]\n wrapInList: [attrs?: ListAttributes]\n insertList: [attrs?: ListAttributes]\n }\n}>\n\n/**\n * Defines list commands.\n *\n * @internal\n */\nexport function defineListCommands(): ListCommandsExtension {\n return defineCommands({\n dedentList,\n indentList,\n moveList,\n splitList,\n toggleCollapsed,\n unwrapList,\n toggleList,\n wrapInList,\n insertList,\n })\n}\n","import type { PlainExtension } from '@prosekit/core'\n\nimport type { DragEventHandler } from '../drop-indicator'\nimport { defineDropIndicator } from '../drop-indicator'\n\n/**\n * Configures drop indicator to avoid unexpected drop point.\n *\n * We don't want to drag a list node and drop it as the first\n * child of another list node.\n *\n * @internal\n */\nexport function defineListDropIndicator(): PlainExtension {\n return defineDropIndicator({\n onDrag,\n })\n}\n\nconst onDrag: DragEventHandler = ({ view, pos }): boolean => {\n const slice = view.dragging?.slice\n if (\n slice\n && slice.openStart === 0\n && slice.openEnd === 0\n && slice.content.childCount === 1\n ) {\n const node = slice.content.child(0)\n if (node.type.name === 'list') {\n const $pos = view.state.doc.resolve(pos)\n if ($pos.parent.type.name === 'list' && $pos.index() === 0) {\n return false\n }\n }\n }\n return true\n}\n","import {\n union,\n type Extension,\n} from '@prosekit/core'\nimport { listInputRules } from 'prosemirror-flat-list'\n\nimport { defineInputRule } from '../input-rule'\n\n/**\n * @internal\n */\nexport function defineListInputRules(): Extension {\n return union(listInputRules.map(defineInputRule))\n}\n","import {\n defineKeymap,\n type PlainExtension,\n} from '@prosekit/core'\nimport {\n chainCommands,\n deleteSelection,\n} from '@prosekit/pm/commands'\nimport {\n createDedentListCommand,\n createIndentListCommand,\n deleteCommand,\n enterCommand,\n joinCollapsedListBackward,\n joinListUp,\n protectCollapsed,\n} from 'prosemirror-flat-list'\n\n// This is different from the one exported by prosemirror-flat-list, because\n// some commands are moved to `defineBaseKeymap` in `prosekit/core`.\nconst backspaceCommand = chainCommands(\n protectCollapsed,\n deleteSelection,\n joinListUp,\n joinCollapsedListBackward,\n)\n\nconst dedentListCommand = createDedentListCommand()\nconst indentListCommand = createIndentListCommand()\n\nconst listKeymap = {\n 'Enter': enterCommand,\n 'Backspace': backspaceCommand,\n 'Delete': deleteCommand,\n 'Mod-]': indentListCommand,\n 'Mod-[': dedentListCommand,\n 'Tab': indentListCommand,\n 'Shift-Tab': dedentListCommand,\n}\n\n/**\n * Returns a extension that adds key bindings for list.\n *\n * @internal\n */\nexport function defineListKeymap(): PlainExtension {\n return defineKeymap(listKeymap)\n}\n","import {\n definePlugin,\n type PlainExtension,\n} from '@prosekit/core'\nimport { Plugin } from '@prosekit/pm/state'\nimport {\n createListEventPlugin,\n createListRenderingPlugin,\n createSafariInputMethodWorkaroundPlugin,\n unwrapListSlice,\n} from 'prosemirror-flat-list'\n\nfunction createListClipboardPlugin(): Plugin {\n return new Plugin({\n props: {\n transformCopied: unwrapListSlice,\n },\n })\n}\n\nfunction createListPlugins(): Plugin[] {\n return [\n createListEventPlugin(),\n createListRenderingPlugin(),\n createListClipboardPlugin(),\n createSafariInputMethodWorkaroundPlugin(),\n ]\n}\n\n/**\n * @internal\n */\nexport function defineListPlugins(): PlainExtension {\n return definePlugin(createListPlugins)\n}\n","import { isElementLike } from '@ocavue/utils'\nimport {\n defineClipboardSerializer,\n type PlainExtension,\n} from '@prosekit/core'\nimport {\n joinListElements,\n listToDOM,\n} from 'prosemirror-flat-list'\n\n/**\n * @internal\n */\nexport function defineListSerializer(): PlainExtension {\n return defineClipboardSerializer({\n serializeFragmentWrapper: (fn) => {\n return (...args) => {\n const dom = fn(...args)\n return joinListElements(dom)\n }\n },\n serializeNodeWrapper: (fn) => {\n return (...args) => {\n const dom = fn(...args)\n return isElementLike(dom) ? joinListElements(dom) : dom\n }\n },\n nodesFromSchemaWrapper: (fn) => {\n return (...args) => {\n const nodes = fn(...args)\n return {\n ...nodes,\n list: (node) => listToDOM({ node, nativeList: true, getMarkers: () => null }),\n }\n }\n },\n })\n}\n","import {\n defineNodeSpec,\n type Extension,\n} from '@prosekit/core'\nimport type {\n DOMOutputSpec,\n ProseMirrorNode,\n} from '@prosekit/pm/model'\nimport {\n createListSpec,\n listToDOM,\n type ListAttributes,\n} from 'prosemirror-flat-list'\n\nimport type { ListAttrs } from './list-types'\n\n/**\n * @internal\n */\nexport type ListSpecExtension = Extension<{\n Nodes: {\n list: ListAttrs\n }\n}>\n\nfunction getMarkers(node: ProseMirrorNode): DOMOutputSpec[] {\n const attrs = node.attrs as ListAttributes\n switch (attrs.kind) {\n case 'task':\n // Use a `label` element here so that the area around the checkbox is also checkable.\n return [\n [\n 'label',\n [\n 'input',\n { type: 'checkbox', checked: attrs.checked ? '' : undefined },\n ],\n ],\n ]\n default:\n // Always return an empty array so that the marker element is rendered. This\n // is required to make the drop indicator locate the correct position.\n return []\n }\n}\n\n/**\n * @internal\n */\nexport function defineListSpec(): ListSpecExtension {\n const spec = createListSpec()\n\n return defineNodeSpec<'list', ListAttrs>({\n ...spec,\n toDOM: (node) => {\n return listToDOM({ node, getMarkers })\n },\n name: 'list',\n })\n}\n","import {\n union,\n type Union,\n} from '@prosekit/core'\n\nimport {\n defineListCommands,\n type ListCommandsExtension,\n} from './list-commands'\nimport { defineListDropIndicator } from './list-drop-indicator'\nimport { defineListInputRules } from './list-input-rules'\nimport { defineListKeymap } from './list-keymap'\nimport { defineListPlugins } from './list-plugins'\nimport { defineListSerializer } from './list-serializer'\nimport {\n defineListSpec,\n type ListSpecExtension,\n} from './list-spec'\n\n/**\n * @internal\n */\nexport type ListExtension = Union<[ListSpecExtension, ListCommandsExtension]>\n\n/**\n * @public\n */\nexport function defineList(): ListExtension {\n return union(\n defineListSpec(),\n defineListPlugins(),\n defineListKeymap(),\n defineListInputRules(),\n defineListCommands(),\n defineListSerializer(),\n defineListDropIndicator(),\n )\n}\n"],"mappings":";;;;;;;;;AAsBA,SAAS,WAAW,OAAiC;AACnD,QAAO,WAAW;EAAE,MAAM;EAAQ;EAAO,CAAC;;;;;;;AAyB5C,SAAgB,qBAA4C;AAC1D,QAAO,eAAe;EACpB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD,CAAC;;;;;;;;;;;;;AC9CJ,SAAgB,0BAA0C;AACxD,QAAO,oBAAoB,EACzB,QACD,CAAC;;AAGJ,MAAMA,UAA4B,EAAE,MAAM,UAAmB;CAC3D,MAAM,QAAQ,KAAK,UAAU;AAC7B,KACE,SACG,MAAM,cAAc,KACpB,MAAM,YAAY,KAClB,MAAM,QAAQ,eAAe,GAGhC;MADa,MAAM,QAAQ,MAAM,EAAE,CAC1B,KAAK,SAAS,QAAQ;GAC7B,MAAM,OAAO,KAAK,MAAM,IAAI,QAAQ,IAAI;AACxC,OAAI,KAAK,OAAO,KAAK,SAAS,UAAU,KAAK,OAAO,KAAK,EACvD,QAAO;;;AAIb,QAAO;;;;;;;;ACxBT,SAAgB,uBAAkC;AAChD,QAAO,MAAM,eAAe,IAAI,gBAAgB,CAAC;;;;;ACQnD,MAAM,mBAAmB,cACvB,kBACA,iBACA,YACA,0BACD;AAED,MAAM,oBAAoB,yBAAyB;AACnD,MAAM,oBAAoB,yBAAyB;AAEnD,MAAM,aAAa;CACjB,SAAS;CACT,aAAa;CACb,UAAU;CACV,SAAS;CACT,SAAS;CACT,OAAO;CACP,aAAa;CACd;;;;;;AAOD,SAAgB,mBAAmC;AACjD,QAAO,aAAa,WAAW;;;;;AClCjC,SAAS,4BAAoC;AAC3C,QAAO,IAAI,OAAO,EAChB,OAAO,EACL,iBAAiB,iBAClB,EACF,CAAC;;AAGJ,SAAS,oBAA8B;AACrC,QAAO;EACL,uBAAuB;EACvB,2BAA2B;EAC3B,2BAA2B;EAC3B,yCAAyC;EAC1C;;;;;AAMH,SAAgB,oBAAoC;AAClD,QAAO,aAAa,kBAAkB;;;;;;;;ACpBxC,SAAgB,uBAAuC;AACrD,QAAO,0BAA0B;EAC/B,2BAA2B,OAAO;AAChC,WAAQ,GAAG,SAAS;IAClB,MAAM,MAAM,GAAG,GAAG,KAAK;AACvB,WAAO,iBAAiB,IAAI;;;EAGhC,uBAAuB,OAAO;AAC5B,WAAQ,GAAG,SAAS;IAClB,MAAM,MAAM,GAAG,GAAG,KAAK;AACvB,WAAO,cAAc,IAAI,GAAG,iBAAiB,IAAI,GAAG;;;EAGxD,yBAAyB,OAAO;AAC9B,WAAQ,GAAG,SAAS;AAElB,WAAO;KACL,GAFY,GAAG,GAAG,KAAK;KAGvB,OAAO,SAAS,UAAU;MAAE;MAAM,YAAY;MAAM,kBAAkB;MAAM,CAAC;KAC9E;;;EAGN,CAAC;;;;;ACXJ,SAAS,WAAW,MAAwC;CAC1D,MAAM,QAAQ,KAAK;AACnB,SAAQ,MAAM,MAAd;EACE,KAAK,OAEH,QAAO,CACL,CACE,SACA,CACE,SACA;GAAE,MAAM;GAAY,SAAS,MAAM,UAAU,KAAK;GAAW,CAC9D,CACF,CACF;EACH,QAGE,QAAO,EAAE;;;;;;AAOf,SAAgB,iBAAoC;CAClD,MAAM,OAAO,gBAAgB;AAE7B,QAAO,eAAkC;EACvC,GAAG;EACH,QAAQ,SAAS;AACf,UAAO,UAAU;IAAE;IAAM;IAAY,CAAC;;EAExC,MAAM;EACP,CAAC;;;;;;;;AC/BJ,SAAgB,aAA4B;AAC1C,QAAO,MACL,gBAAgB,EAChB,mBAAmB,EACnB,kBAAkB,EAClB,sBAAsB,EACtB,oBAAoB,EACpB,sBAAsB,EACtB,yBAAyB,CAC1B"}
@@ -1,7 +1,7 @@
1
1
  import { Extension, PlainExtension, Union } from "@prosekit/core";
2
2
  import { EditorState, Selection } from "@prosekit/pm/state";
3
3
  import { DecorationAttrs } from "@prosekit/pm/view";
4
- import { CursorAwareness, LoroDocType, LoroSyncPluginProps, LoroSyncPluginProps as LoroSyncPluginProps$1, LoroSyncPluginProps as LoroSyncPluginProps$2, LoroUndoPluginProps, LoroUndoPluginProps as LoroUndoPluginProps$1, LoroUndoPluginProps as LoroUndoPluginProps$2 } from "loro-prosemirror";
4
+ import { CursorAwareness, LoroDocType, LoroSyncPluginProps, LoroSyncPluginProps as LoroSyncPluginProps$1, LoroUndoPluginProps, LoroUndoPluginProps as LoroUndoPluginProps$1 } from "loro-prosemirror";
5
5
  import { PeerID } from "loro-crdt";
6
6
 
7
7
  //#region src/loro/loro-commands.d.ts
@@ -25,15 +25,6 @@ interface LoroCursorOptions {
25
25
  }
26
26
  declare function defineLoroCursorPlugin(options: LoroCursorOptions): PlainExtension;
27
27
  //#endregion
28
- //#region src/loro/loro-keymap.d.ts
29
- declare function defineLoroKeymap(): PlainExtension;
30
- //#endregion
31
- //#region src/loro/loro-sync-plugin.d.ts
32
- declare function defineLoroSyncPlugin(options: LoroSyncPluginProps$1): PlainExtension;
33
- //#endregion
34
- //#region src/loro/loro-undo-plugin.d.ts
35
- declare function defineLoroUndoPlugin(options: LoroUndoPluginProps$1): PlainExtension;
36
- //#endregion
37
28
  //#region src/loro/loro.d.ts
38
29
  interface LoroOptions {
39
30
  /**
@@ -47,11 +38,11 @@ interface LoroOptions {
47
38
  /**
48
39
  * Extra options for `LoroSyncPlugin`.
49
40
  */
50
- sync?: Omit<LoroSyncPluginProps$2, 'doc'>;
41
+ sync?: Omit<LoroSyncPluginProps$1, 'doc'>;
51
42
  /**
52
43
  * Extra options for the `LoroUndoPlugin`.
53
44
  */
54
- undo?: Omit<LoroUndoPluginProps$2, 'doc'>;
45
+ undo?: Omit<LoroUndoPluginProps$1, 'doc'>;
55
46
  /**
56
47
  * Extra options for `LoroCursorPlugin`.
57
48
  */
@@ -66,4 +57,14 @@ type LoroExtension = Union<[LoroCommandsExtension, PlainExtension]>;
66
57
  */
67
58
  declare function defineLoro(options: LoroOptions): LoroExtension;
68
59
  //#endregion
69
- export { type LoroCursorOptions, type LoroExtension, type LoroOptions, type LoroSyncPluginProps, type LoroUndoPluginProps, defineLoro, defineLoroCommands, defineLoroCursorPlugin, defineLoroKeymap, defineLoroSyncPlugin, defineLoroUndoPlugin };
60
+ //#region src/loro/loro-keymap.d.ts
61
+ declare function defineLoroKeymap(): PlainExtension;
62
+ //#endregion
63
+ //#region src/loro/loro-sync-plugin.d.ts
64
+ declare function defineLoroSyncPlugin(options: LoroSyncPluginProps$1): PlainExtension;
65
+ //#endregion
66
+ //#region src/loro/loro-undo-plugin.d.ts
67
+ declare function defineLoroUndoPlugin(options: LoroUndoPluginProps$1): PlainExtension;
68
+ //#endregion
69
+ export { type LoroCursorOptions, type LoroExtension, type LoroOptions, type LoroSyncPluginProps, type LoroUndoPluginProps, defineLoro, defineLoroCommands, defineLoroCursorPlugin, defineLoroKeymap, defineLoroSyncPlugin, defineLoroUndoPlugin };
70
+ //# sourceMappingURL=prosekit-extensions-loro.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prosekit-extensions-loro.d.ts","names":[],"sources":["../src/loro/loro-commands.ts","../src/loro/loro-cursor-plugin.ts","../src/loro/loro.ts","../src/loro/loro-keymap.ts","../src/loro/loro-sync-plugin.ts","../src/loro/loro-undo-plugin.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;KAiBY,qBAAA,GAAwB;;;IAAxB,IAAA,EAAA,EAAA;EAOI,CAAA;;iBAAA,kBAAA,CAAA,GAAsB;;;UCTrB,iBAAA;aACJ;EDCD,YAAA,CAAA,EAAA,CAAA,KAAA,ECAa,WDAQ,EAAG,GCAK,SDAI;EAO7B,YAAA,CAAA,EAAA,CAAA,IAAA,ECNQ,MDMU,EAAA,GCNC,ODMG;2BCLX,WAAW;;iBAGtB,sBAAA,UACL,oBACR;;;UCEc,WAAA;;;AFTjB;EAOgB,GAAA,EEMT,WFNS;;;;ECTC,SAAA,ECoBJ,eDpBqB;EAAA;;;MAEO,CAAA,ECuBhC,IDvBgC,CCuB3B,qBDvB2B,EAAA,KAAA,CAAA;;;;MAEH,CAAA,EC0B7B,ID1B6B,CC0BxB,qBD1BwB,EAAA,KAAA,CAAA;EAAe;AAGrD;;QACW,CAAA,EC2BA,ID3BA,CC2BK,iBD3BL,EAAA,WAAA,CAAA;;;;;KCiCC,aAAA,GAAgB,OAAO,uBAAuB;AA9B1D;;;AASa,iBA0BG,UAAA,CA1BH,OAAA,EA0BuB,WA1BvB,CAAA,EA0BqC,aA1BrC;;;iBCfG,gBAAA,CAAA,GAAoB;;;iBCXpB,oBAAA,UACL,wBACR;;;iBCFa,oBAAA,UAA8B,wBAAsB"}
@@ -66,4 +66,5 @@ function defineLoro(options) {
66
66
  }
67
67
 
68
68
  //#endregion
69
- export { defineLoro, defineLoroCommands, defineLoroCursorPlugin, defineLoroKeymap, defineLoroSyncPlugin, defineLoroUndoPlugin };
69
+ export { defineLoro, defineLoroCommands, defineLoroCursorPlugin, defineLoroKeymap, defineLoroSyncPlugin, defineLoroUndoPlugin };
70
+ //# sourceMappingURL=prosekit-extensions-loro.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prosekit-extensions-loro.js","names":["keymap: Keymap","undo"],"sources":["../src/loro/loro-commands.ts","../src/loro/loro-cursor-plugin.ts","../src/loro/loro-keymap.ts","../src/loro/loro-sync-plugin.ts","../src/loro/loro-undo-plugin.ts","../src/loro/loro.ts"],"sourcesContent":["import {\n defineCommands,\n type Extension,\n} from '@prosekit/core'\nimport {\n redo,\n undo,\n} from 'loro-prosemirror'\n\nconst commands = {\n undo: () => undo,\n redo: () => redo,\n} as const\n\n/**\n * @internal\n */\nexport type LoroCommandsExtension = Extension<{\n Commands: {\n undo: []\n redo: []\n }\n}>\n\nexport function defineLoroCommands(): LoroCommandsExtension {\n return defineCommands(commands)\n}\n","import {\n definePlugin,\n type PlainExtension,\n} from '@prosekit/core'\nimport type {\n EditorState,\n Selection,\n} from '@prosekit/pm/state'\nimport type { DecorationAttrs } from '@prosekit/pm/view'\nimport type { PeerID } from 'loro-crdt'\nimport {\n LoroCursorPlugin,\n type CursorAwareness,\n} from 'loro-prosemirror'\n\nexport interface LoroCursorOptions {\n awareness: CursorAwareness\n getSelection?: (state: EditorState) => Selection\n createCursor?: (user: PeerID) => Element\n createSelection?: (user: PeerID) => DecorationAttrs\n}\n\nexport function defineLoroCursorPlugin(\n options: LoroCursorOptions,\n): PlainExtension {\n const { awareness, ...rest } = options\n return definePlugin(LoroCursorPlugin(awareness, rest))\n}\n","import {\n defineKeymap,\n isApple,\n type Keymap,\n type PlainExtension,\n} from '@prosekit/core'\nimport {\n redo,\n undo,\n} from 'loro-prosemirror'\n\nconst keymap: Keymap = {\n 'Mod-z': undo,\n 'Shift-Mod-z': redo,\n}\n\nif (!isApple) {\n keymap['Mod-y'] = redo\n}\n\nexport function defineLoroKeymap(): PlainExtension {\n return defineKeymap(keymap)\n}\n","import {\n definePlugin,\n type PlainExtension,\n} from '@prosekit/core'\nimport {\n LoroSyncPlugin,\n type LoroSyncPluginProps,\n} from 'loro-prosemirror'\n\nexport function defineLoroSyncPlugin(\n options: LoroSyncPluginProps,\n): PlainExtension {\n return definePlugin(LoroSyncPlugin(options))\n}\n","import {\n definePlugin,\n type PlainExtension,\n} from '@prosekit/core'\nimport {\n LoroUndoPlugin,\n type LoroUndoPluginProps,\n} from 'loro-prosemirror'\n\nexport function defineLoroUndoPlugin(options: LoroUndoPluginProps): PlainExtension {\n return definePlugin(LoroUndoPlugin(options))\n}\n","import {\n Priority,\n union,\n withPriority,\n type PlainExtension,\n type Union,\n} from '@prosekit/core'\nimport type {\n CursorAwareness,\n LoroDocType,\n LoroSyncPluginProps,\n LoroUndoPluginProps,\n} from 'loro-prosemirror'\n\nimport {\n defineLoroCommands,\n type LoroCommandsExtension,\n} from './loro-commands'\nimport {\n defineLoroCursorPlugin,\n type LoroCursorOptions,\n} from './loro-cursor-plugin'\nimport { defineLoroKeymap } from './loro-keymap'\nimport { defineLoroSyncPlugin } from './loro-sync-plugin'\nimport { defineLoroUndoPlugin } from './loro-undo-plugin'\n\nexport interface LoroOptions {\n /**\n * The Loro instance handles the state of shared data.\n */\n doc: LoroDocType\n\n /**\n * The Awareness instance.\n */\n awareness: CursorAwareness\n\n /**\n * Extra options for `LoroSyncPlugin`.\n */\n sync?: Omit<LoroSyncPluginProps, 'doc'>\n\n /**\n * Extra options for the `LoroUndoPlugin`.\n */\n undo?: Omit<LoroUndoPluginProps, 'doc'>\n\n /**\n * Extra options for `LoroCursorPlugin`.\n */\n cursor?: Omit<LoroCursorOptions, 'awareness'>\n}\n\n/**\n * @internal\n */\nexport type LoroExtension = Union<[LoroCommandsExtension, PlainExtension]>\n\n/**\n * @public\n */\nexport function defineLoro(options: LoroOptions): LoroExtension {\n const { doc, awareness, sync, undo, cursor } = options\n\n return withPriority(\n union([\n defineLoroKeymap(),\n defineLoroCommands(),\n defineLoroCursorPlugin({ ...cursor, awareness }),\n defineLoroUndoPlugin({ ...undo, doc }),\n defineLoroSyncPlugin({ ...sync, doc }),\n ]),\n Priority.high,\n )\n}\n"],"mappings":";;;;AASA,MAAM,WAAW;CACf,YAAY;CACZ,YAAY;CACb;AAYD,SAAgB,qBAA4C;AAC1D,QAAO,eAAe,SAAS;;;;;ACHjC,SAAgB,uBACd,SACgB;CAChB,MAAM,EAAE,UAAW,GAAG,SAAS;AAC/B,QAAO,aAAa,iBAAiB,WAAW,KAAK,CAAC;;;;;ACfxD,MAAMA,SAAiB;CACrB,SAAS;CACT,eAAe;CAChB;AAED,IAAI,CAAC,QACH,QAAO,WAAW;AAGpB,SAAgB,mBAAmC;AACjD,QAAO,aAAa,OAAO;;;;;ACZ7B,SAAgB,qBACd,SACgB;AAChB,QAAO,aAAa,eAAe,QAAQ,CAAC;;;;;ACH9C,SAAgB,qBAAqB,SAA8C;AACjF,QAAO,aAAa,eAAe,QAAQ,CAAC;;;;;;;;ACmD9C,SAAgB,WAAW,SAAqC;CAC9D,MAAM,EAAE,KAAK,WAAW,MAAM,cAAM,WAAW;AAE/C,QAAO,aACL,MAAM;EACJ,kBAAkB;EAClB,oBAAoB;EACpB,uBAAuB;GAAE,GAAG;GAAQ;GAAW,CAAC;EAChD,qBAAqB;GAAE,GAAGC;GAAM;GAAK,CAAC;EACtC,qBAAqB;GAAE,GAAG;GAAM;GAAK,CAAC;EACvC,CAAC,EACF,SAAS,KACV"}
@@ -34,4 +34,5 @@ interface MarkRuleOptions {
34
34
  */
35
35
  declare function defineMarkRule(options: MarkRuleOptions): PlainExtension;
36
36
  //#endregion
37
- export { type MarkRuleOptions, defineMarkRule };
37
+ export { type MarkRuleOptions, defineMarkRule };
38
+ //# sourceMappingURL=prosekit-extensions-mark-rule.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prosekit-extensions-mark-rule.d.ts","names":[],"sources":["../src/mark-rule/types.ts","../src/mark-rule/mark-rule.ts"],"sourcesContent":[],"mappings":";;;;;;;;AAUA;;AAKS,UALQ,eAAA,CAKR;;;;;EAamD,KAAA,EAbnD,MAamD;;;;ECP5C,IAAA,EAAA,MAAA,GDDC,QCCa;EAAA;;;;;;UDOpB,wBAAwB,qBAAqB;;;;;;AAlBvD;;AAKS,iBCMO,cAAA,CDNP,OAAA,ECM+B,eDN/B,CAAA,ECMiD,cDNjD"}
@@ -1,3 +1,3 @@
1
- import { defineMarkRule } from "./mark-rule-D7zaa32n.js";
1
+ import { defineMarkRule } from "./mark-rule-CGmswjQ_.js";
2
2
 
3
3
  export { defineMarkRule };
@@ -36,4 +36,5 @@ type MentionExtension = Union<[MentionSpecExtension, MentionCommandsExtension]>;
36
36
  */
37
37
  declare function defineMention(): MentionExtension;
38
38
  //#endregion
39
- export { MentionAttrs, MentionCommandsExtension, MentionExtension, MentionSpecExtension, defineMention, defineMentionCommands, defineMentionSpec };
39
+ export { MentionAttrs, MentionCommandsExtension, MentionExtension, MentionSpecExtension, defineMention, defineMentionCommands, defineMentionSpec };
40
+ //# sourceMappingURL=prosekit-extensions-mention.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prosekit-extensions-mention.d.ts","names":[],"sources":["../src/mention/index.ts"],"sourcesContent":[],"mappings":";;;UASiB,YAAA;;EAAA,KAAA,EAAA,MAAA;EASL,IAAA,EAAA,MAAA;;;;;AASI,KATJ,oBAAA,GAAuB,SASE,CAAA;EAsCzB,KAAA,EAAA;IAAwB,OAAA,EA7CvB,YA6CuB;;;;AAMpC;AAWA;AAA4B,iBAvDZ,iBAAA,CAAA,CAuDY,EAvDS,oBAuDT;;;;AAAQ,KAjBxB,wBAAA,GAA2B,SAiBH,CAAA;EAKpB,QAAA,EAAA;2BApBW;;;iBAIX,qBAAA,CAAA,GAAyB;;;;KAW7B,gBAAA,GAAmB,OAAO,sBAAsB;;;;iBAK5C,aAAA,CAAA,GAAiB"}
@@ -55,4 +55,5 @@ function defineMention() {
55
55
  }
56
56
 
57
57
  //#endregion
58
- export { defineMention, defineMentionCommands, defineMentionSpec };
58
+ export { defineMention, defineMentionCommands, defineMentionSpec };
59
+ //# sourceMappingURL=prosekit-extensions-mention.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prosekit-extensions-mention.js","names":[],"sources":["../src/mention/index.ts"],"sourcesContent":["import {\n defineCommands,\n defineNodeSpec,\n insertNode,\n union,\n type Extension,\n type Union,\n} from '@prosekit/core'\n\nexport interface MentionAttrs {\n id: string\n value: string\n kind: string\n}\n\n/**\n * @internal\n */\nexport type MentionSpecExtension = Extension<{\n Nodes: {\n mention: MentionAttrs\n }\n}>\n\n/**\n * @public\n */\nexport function defineMentionSpec(): MentionSpecExtension {\n return defineNodeSpec<'mention', MentionAttrs>({\n name: 'mention',\n atom: true,\n group: 'inline',\n attrs: {\n id: { validate: 'string' },\n value: { validate: 'string' },\n kind: { default: '', validate: 'string' },\n },\n inline: true,\n leafText: (node) => (node.attrs as MentionAttrs).value.toString(),\n parseDOM: [\n {\n tag: `span[data-mention]`,\n getAttrs: (dom: HTMLElement): MentionAttrs => ({\n id: dom.getAttribute('data-id') || '',\n kind: dom.getAttribute('data-mention') || '',\n value: dom.textContent || '',\n }),\n },\n ],\n toDOM(node) {\n return [\n 'span',\n {\n 'data-id': (node.attrs as MentionAttrs).id.toString(),\n 'data-mention': (node.attrs as MentionAttrs).kind.toString(),\n },\n (node.attrs as MentionAttrs).value.toString(),\n ]\n },\n })\n}\n\n/**\n * @internal\n */\nexport type MentionCommandsExtension = Extension<{\n Commands: {\n insertMention: [attrs: MentionAttrs]\n }\n}>\n\nexport function defineMentionCommands(): MentionCommandsExtension {\n return defineCommands({\n insertMention: (attrs: MentionAttrs) => {\n return insertNode({ type: 'mention', attrs })\n },\n })\n}\n\n/**\n * @internal\n */\nexport type MentionExtension = Union<[MentionSpecExtension, MentionCommandsExtension]>\n\n/**\n * @public\n */\nexport function defineMention(): MentionExtension {\n return union(defineMentionSpec(), defineMentionCommands())\n}\n"],"mappings":";;;;;;AA2BA,SAAgB,oBAA0C;AACxD,QAAO,eAAwC;EAC7C,MAAM;EACN,MAAM;EACN,OAAO;EACP,OAAO;GACL,IAAI,EAAE,UAAU,UAAU;GAC1B,OAAO,EAAE,UAAU,UAAU;GAC7B,MAAM;IAAE,SAAS;IAAI,UAAU;IAAU;GAC1C;EACD,QAAQ;EACR,WAAW,SAAU,KAAK,MAAuB,MAAM,UAAU;EACjE,UAAU,CACR;GACE,KAAK;GACL,WAAW,SAAoC;IAC7C,IAAI,IAAI,aAAa,UAAU,IAAI;IACnC,MAAM,IAAI,aAAa,eAAe,IAAI;IAC1C,OAAO,IAAI,eAAe;IAC3B;GACF,CACF;EACD,MAAM,MAAM;AACV,UAAO;IACL;IACA;KACE,WAAY,KAAK,MAAuB,GAAG,UAAU;KACrD,gBAAiB,KAAK,MAAuB,KAAK,UAAU;KAC7D;IACA,KAAK,MAAuB,MAAM,UAAU;IAC9C;;EAEJ,CAAC;;AAYJ,SAAgB,wBAAkD;AAChE,QAAO,eAAe,EACpB,gBAAgB,UAAwB;AACtC,SAAO,WAAW;GAAE,MAAM;GAAW;GAAO,CAAC;IAEhD,CAAC;;;;;AAWJ,SAAgB,gBAAkC;AAChD,QAAO,MAAM,mBAAmB,EAAE,uBAAuB,CAAC"}
@@ -14,4 +14,5 @@ type ModClickPreventionExtension = PlainExtension;
14
14
  */
15
15
  declare function defineModClickPrevention(): ModClickPreventionExtension;
16
16
  //#endregion
17
- export { ModClickPreventionExtension, defineModClickPrevention };
17
+ export { ModClickPreventionExtension, defineModClickPrevention };
18
+ //# sourceMappingURL=prosekit-extensions-mod-click-prevention.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prosekit-extensions-mod-click-prevention.d.ts","names":[],"sources":["../src/mod-click-prevention/index.ts"],"sourcesContent":[],"mappings":";;;;;;AAcA;AAQgB,KARJ,2BAAA,GAA8B,cAQE;;;;;;;iBAA5B,wBAAA,CAAA,GAA4B"}
@@ -21,4 +21,5 @@ function handleClick(_view, _pos, event) {
21
21
  const selectNodeModifier = isApple ? "metaKey" : "ctrlKey";
22
22
 
23
23
  //#endregion
24
- export { defineModClickPrevention };
24
+ export { defineModClickPrevention };
25
+ //# sourceMappingURL=prosekit-extensions-mod-click-prevention.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prosekit-extensions-mod-click-prevention.js","names":["selectNodeModifier: 'metaKey' | 'ctrlKey'"],"sources":["../src/mod-click-prevention/index.ts"],"sourcesContent":["import {\n definePlugin,\n isApple,\n type PlainExtension,\n} from '@prosekit/core'\nimport {\n Plugin,\n PluginKey,\n} from '@prosekit/pm/state'\nimport type { EditorView } from '@prosekit/pm/view'\n\n/**\n * @internal\n */\nexport type ModClickPreventionExtension = PlainExtension\n\n/**\n * By default, clicking a node while holding the mod key will select the node. This\n * extension disables that behavior.\n *\n * @public\n */\nexport function defineModClickPrevention(): ModClickPreventionExtension {\n return definePlugin(new Plugin({ key, props: { handleClick } }))\n}\n\nconst key = new PluginKey('prosekit-mod-click-prevention')\n\nfunction handleClick(_view: EditorView, _pos: number, event: MouseEvent) {\n return !!event[selectNodeModifier]\n}\n\nconst selectNodeModifier: 'metaKey' | 'ctrlKey' = isApple\n ? 'metaKey'\n : 'ctrlKey'\n"],"mappings":";;;;;;;;;;AAsBA,SAAgB,2BAAwD;AACtE,QAAO,aAAa,IAAI,OAAO;EAAE;EAAK,OAAO,EAAE,aAAa;EAAE,CAAC,CAAC;;AAGlE,MAAM,MAAM,IAAI,UAAU,gCAAgC;AAE1D,SAAS,YAAY,OAAmB,MAAc,OAAmB;AACvE,QAAO,CAAC,CAAC,MAAM;;AAGjB,MAAMA,qBAA4C,UAC9C,YACA"}
@@ -11,10 +11,6 @@ type ParagraphCommandsExtension = Extension<{
11
11
  setParagraph: [];
12
12
  };
13
13
  }>;
14
- /**
15
- * @internal
16
- */
17
-
18
14
  /**
19
15
  * @internal
20
16
  */
@@ -57,4 +53,5 @@ declare function defineParagraph(): ParagraphExtension;
57
53
  */
58
54
  declare function defineParagraphKeymap(): PlainExtension;
59
55
  //#endregion
60
- export { type ParagraphCommandsExtension, type ParagraphExtension, type ParagraphSpecExtension, defineParagraph, defineParagraphCommands, defineParagraphKeymap, defineParagraphSpec };
56
+ export { type ParagraphCommandsExtension, type ParagraphExtension, type ParagraphSpecExtension, defineParagraph, defineParagraphCommands, defineParagraphKeymap, defineParagraphSpec };
57
+ //# sourceMappingURL=prosekit-extensions-paragraph.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prosekit-extensions-paragraph.d.ts","names":[],"sources":["../src/paragraph/paragraph-commands.ts","../src/paragraph/paragraph-spec.ts","../src/paragraph/paragraph.ts","../src/paragraph/paragraph-keymap.ts"],"sourcesContent":[],"mappings":";;;;;;;;AAUY,KAAA,0BAAA,GAA6B,SAAA,CAAA;EAgBzB,QAAA,EAAA;;;;;ACNhB;;iBDMgB,uBAAA,CAAA,GAA2B;;;;;;AAhB/B,KCDA,sBAAA,GAAyB,SDCI,CAAA;EAgBzB,KAAA,EAAA;eCfD;;;AAFf;;;;;AAWgB,iBAAA,mBAAA,CAAA,CAAuB,EAAA,sBAAsB;;;;;ADV7D;AAgBgB,KENJ,kBAAA,GAAqB,KFMM,CAAA,CENC,sBFMG,EENqB,0BFMK,CAAA,CAAA;;;;ACjBrE;;;;;AAWgB,iBCUA,eAAA,CAAA,CDVuB,ECUJ,kBDV0B;;;;;;iBEV7C,qBAAA,CAAA,GAAyB"}