@prosekit/extensions 0.13.0 → 0.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (311) hide show
  1. package/dist/{drop-indicator-B1QHFb5m.js → drop-indicator-B_oMfeVP.js} +11 -10
  2. package/dist/drop-indicator-B_oMfeVP.js.map +1 -0
  3. package/dist/{enter-rule-CzWOZF_Z.js → enter-rule-D-p4ykfv.js} +1 -1
  4. package/dist/enter-rule-D-p4ykfv.js.map +1 -0
  5. package/dist/{file-DrfcSid-.js → file-iLVR0eM0.js} +3 -3
  6. package/dist/file-iLVR0eM0.js.map +1 -0
  7. package/dist/{index-oIc1a2f2.d.ts → index-cp1u4e0e.d.ts} +1 -1
  8. package/dist/index-cp1u4e0e.d.ts.map +1 -0
  9. package/dist/{input-rule-dmsb3j6w.js → input-rule-COGr_GBb.js} +1 -1
  10. package/dist/input-rule-COGr_GBb.js.map +1 -0
  11. package/dist/{mark-rule-BcLB4Uv2.js → mark-rule-CYe8zk4q.js} +6 -6
  12. package/dist/mark-rule-CYe8zk4q.js.map +1 -0
  13. package/dist/{paste-rule-pVb4sqvJ.js → paste-rule-BaDghcaU.js} +7 -7
  14. package/dist/paste-rule-BaDghcaU.js.map +1 -0
  15. package/dist/prosekit-extensions-autocomplete.d.ts.map +1 -1
  16. package/dist/prosekit-extensions-autocomplete.js.map +1 -1
  17. package/dist/prosekit-extensions-background-color.d.ts +62 -0
  18. package/dist/prosekit-extensions-background-color.d.ts.map +1 -0
  19. package/dist/prosekit-extensions-background-color.js +76 -0
  20. package/dist/prosekit-extensions-background-color.js.map +1 -0
  21. package/dist/prosekit-extensions-blockquote.d.ts.map +1 -1
  22. package/dist/prosekit-extensions-blockquote.js +1 -1
  23. package/dist/prosekit-extensions-blockquote.js.map +1 -1
  24. package/dist/prosekit-extensions-bold.d.ts.map +1 -1
  25. package/dist/prosekit-extensions-bold.js +1 -1
  26. package/dist/prosekit-extensions-bold.js.map +1 -1
  27. package/dist/prosekit-extensions-code-block.d.ts +1 -1
  28. package/dist/prosekit-extensions-code-block.d.ts.map +1 -1
  29. package/dist/prosekit-extensions-code-block.js +4 -4
  30. package/dist/prosekit-extensions-code-block.js.map +1 -1
  31. package/dist/prosekit-extensions-code.d.ts.map +1 -1
  32. package/dist/prosekit-extensions-code.js +1 -1
  33. package/dist/prosekit-extensions-code.js.map +1 -1
  34. package/dist/prosekit-extensions-commit.d.ts +0 -1
  35. package/dist/prosekit-extensions-commit.d.ts.map +1 -1
  36. package/dist/prosekit-extensions-commit.js.map +1 -1
  37. package/dist/prosekit-extensions-doc.d.ts +0 -1
  38. package/dist/prosekit-extensions-doc.d.ts.map +1 -1
  39. package/dist/prosekit-extensions-doc.js.map +1 -1
  40. package/dist/prosekit-extensions-drop-cursor.d.ts.map +1 -1
  41. package/dist/prosekit-extensions-drop-cursor.js.map +1 -1
  42. package/dist/prosekit-extensions-drop-indicator.d.ts +0 -1
  43. package/dist/prosekit-extensions-drop-indicator.d.ts.map +1 -1
  44. package/dist/prosekit-extensions-drop-indicator.js +1 -1
  45. package/dist/prosekit-extensions-enter-rule.d.ts +0 -1
  46. package/dist/prosekit-extensions-enter-rule.d.ts.map +1 -1
  47. package/dist/prosekit-extensions-enter-rule.js +1 -1
  48. package/dist/prosekit-extensions-file.d.ts +1 -1
  49. package/dist/prosekit-extensions-file.js +1 -1
  50. package/dist/prosekit-extensions-gap-cursor.d.ts +0 -1
  51. package/dist/prosekit-extensions-gap-cursor.d.ts.map +1 -1
  52. package/dist/prosekit-extensions-gap-cursor.js.map +1 -1
  53. package/dist/prosekit-extensions-hard-break.d.ts.map +1 -1
  54. package/dist/prosekit-extensions-hard-break.js.map +1 -1
  55. package/dist/prosekit-extensions-heading.d.ts.map +1 -1
  56. package/dist/prosekit-extensions-heading.js +1 -1
  57. package/dist/prosekit-extensions-heading.js.map +1 -1
  58. package/dist/prosekit-extensions-horizontal-rule.d.ts.map +1 -1
  59. package/dist/prosekit-extensions-horizontal-rule.js +1 -1
  60. package/dist/prosekit-extensions-horizontal-rule.js.map +1 -1
  61. package/dist/prosekit-extensions-image.d.ts +9 -2
  62. package/dist/prosekit-extensions-image.d.ts.map +1 -1
  63. package/dist/prosekit-extensions-image.js +17 -4
  64. package/dist/prosekit-extensions-image.js.map +1 -1
  65. package/dist/prosekit-extensions-input-rule.d.ts +0 -1
  66. package/dist/prosekit-extensions-input-rule.d.ts.map +1 -1
  67. package/dist/prosekit-extensions-input-rule.js +1 -1
  68. package/dist/prosekit-extensions-italic.d.ts.map +1 -1
  69. package/dist/prosekit-extensions-italic.js +1 -1
  70. package/dist/prosekit-extensions-italic.js.map +1 -1
  71. package/dist/prosekit-extensions-link.d.ts +0 -1
  72. package/dist/prosekit-extensions-link.d.ts.map +1 -1
  73. package/dist/prosekit-extensions-link.js +4 -4
  74. package/dist/prosekit-extensions-link.js.map +1 -1
  75. package/dist/prosekit-extensions-list.d.ts +0 -1
  76. package/dist/prosekit-extensions-list.d.ts.map +1 -1
  77. package/dist/prosekit-extensions-list.js +3 -3
  78. package/dist/prosekit-extensions-list.js.map +1 -1
  79. package/dist/prosekit-extensions-loro.d.ts.map +1 -1
  80. package/dist/prosekit-extensions-loro.js +2 -2
  81. package/dist/prosekit-extensions-loro.js.map +1 -1
  82. package/dist/prosekit-extensions-mark-rule.d.ts +0 -1
  83. package/dist/prosekit-extensions-mark-rule.d.ts.map +1 -1
  84. package/dist/prosekit-extensions-mark-rule.js +1 -1
  85. package/dist/prosekit-extensions-mention.d.ts.map +1 -1
  86. package/dist/prosekit-extensions-mention.js.map +1 -1
  87. package/dist/prosekit-extensions-mod-click-prevention.d.ts +0 -1
  88. package/dist/prosekit-extensions-mod-click-prevention.d.ts.map +1 -1
  89. package/dist/prosekit-extensions-mod-click-prevention.js.map +1 -1
  90. package/dist/prosekit-extensions-paragraph.d.ts.map +1 -1
  91. package/dist/prosekit-extensions-paragraph.js.map +1 -1
  92. package/dist/prosekit-extensions-paste-rule.d.ts +0 -1
  93. package/dist/prosekit-extensions-paste-rule.d.ts.map +1 -1
  94. package/dist/prosekit-extensions-paste-rule.js +1 -1
  95. package/dist/prosekit-extensions-placeholder.d.ts.map +1 -1
  96. package/dist/prosekit-extensions-placeholder.js +1 -1
  97. package/dist/prosekit-extensions-placeholder.js.map +1 -1
  98. package/dist/prosekit-extensions-readonly.d.ts +0 -1
  99. package/dist/prosekit-extensions-readonly.d.ts.map +1 -1
  100. package/dist/prosekit-extensions-readonly.js.map +1 -1
  101. package/dist/prosekit-extensions-search.d.ts +0 -1
  102. package/dist/prosekit-extensions-search.d.ts.map +1 -1
  103. package/dist/prosekit-extensions-search.js.map +1 -1
  104. package/dist/prosekit-extensions-strike.d.ts +0 -1
  105. package/dist/prosekit-extensions-strike.d.ts.map +1 -1
  106. package/dist/prosekit-extensions-strike.js +1 -1
  107. package/dist/prosekit-extensions-table.d.ts.map +1 -1
  108. package/dist/prosekit-extensions-table.js +1 -1
  109. package/dist/prosekit-extensions-text-align.d.ts +0 -1
  110. package/dist/prosekit-extensions-text-align.d.ts.map +1 -1
  111. package/dist/prosekit-extensions-text-align.js +2 -2
  112. package/dist/prosekit-extensions-text-align.js.map +1 -1
  113. package/dist/prosekit-extensions-text-color.d.ts +62 -0
  114. package/dist/prosekit-extensions-text-color.d.ts.map +1 -0
  115. package/dist/prosekit-extensions-text-color.js +76 -0
  116. package/dist/prosekit-extensions-text-color.js.map +1 -0
  117. package/dist/prosekit-extensions-text.d.ts +0 -1
  118. package/dist/prosekit-extensions-text.d.ts.map +1 -1
  119. package/dist/prosekit-extensions-text.js.map +1 -1
  120. package/dist/prosekit-extensions-underline.d.ts +0 -1
  121. package/dist/prosekit-extensions-underline.d.ts.map +1 -1
  122. package/dist/prosekit-extensions-virtual-selection.d.ts +0 -1
  123. package/dist/prosekit-extensions-virtual-selection.d.ts.map +1 -1
  124. package/dist/prosekit-extensions-virtual-selection.js.map +1 -1
  125. package/dist/prosekit-extensions-yjs.d.ts +9 -2
  126. package/dist/prosekit-extensions-yjs.d.ts.map +1 -1
  127. package/dist/prosekit-extensions-yjs.js.map +1 -1
  128. package/dist/{shiki-highlighter-chunk-rkzofy4z.d.ts → shiki-highlighter-chunk-DNNm2Vow.d.ts} +1 -1
  129. package/dist/shiki-highlighter-chunk-DNNm2Vow.d.ts.map +1 -0
  130. package/dist/shiki-highlighter-chunk.d.ts +1 -1
  131. package/dist/shiki-highlighter-chunk.js.map +1 -1
  132. package/dist/{table-BRDh_9mG.js → table-4oHfV-Ql.js} +2 -2
  133. package/dist/table-4oHfV-Ql.js.map +1 -0
  134. package/package.json +28 -14
  135. package/src/autocomplete/autocomplete-helpers.ts +1 -5
  136. package/src/autocomplete/autocomplete-plugin.ts +3 -13
  137. package/src/autocomplete/autocomplete.spec.ts +4 -19
  138. package/src/autocomplete/autocomplete.ts +1 -7
  139. package/src/background-color/background-color-commands.spec.ts +71 -0
  140. package/src/background-color/background-color-commands.ts +35 -0
  141. package/src/background-color/background-color-spec.spec.ts +286 -0
  142. package/src/background-color/background-color-spec.ts +58 -0
  143. package/src/background-color/background-color.ts +21 -0
  144. package/src/background-color/index.ts +8 -0
  145. package/src/blockquote/blockquote-commands.ts +1 -7
  146. package/src/blockquote/blockquote-keymap.spec.ts +1 -5
  147. package/src/blockquote/blockquote-keymap.ts +1 -6
  148. package/src/blockquote/blockquote-spec.ts +1 -4
  149. package/src/blockquote/blockquote.ts +3 -12
  150. package/src/blockquote/index.ts +3 -12
  151. package/src/bold/bold-commands.ts +1 -5
  152. package/src/bold/bold-input-rule.spec.ts +1 -5
  153. package/src/bold/bold-input-rule.ts +1 -4
  154. package/src/bold/bold-keymap.ts +1 -5
  155. package/src/bold/bold-spec.ts +1 -4
  156. package/src/bold/bold.ts +3 -12
  157. package/src/bold/index.ts +3 -12
  158. package/src/code/code-commands.ts +1 -5
  159. package/src/code/code-input-rule.ts +1 -4
  160. package/src/code/code-keymap.ts +1 -5
  161. package/src/code/code-spec.ts +1 -4
  162. package/src/code/code.ts +3 -12
  163. package/src/code/index.ts +3 -12
  164. package/src/code-block/code-block-commands.ts +1 -8
  165. package/src/code-block/code-block-highlight.ts +2 -8
  166. package/src/code-block/code-block-keymap.ts +2 -9
  167. package/src/code-block/code-block-shiki.ts +1 -4
  168. package/src/code-block/code-block-spec.spec.ts +4 -11
  169. package/src/code-block/code-block-spec.ts +1 -4
  170. package/src/code-block/code-block.ts +4 -16
  171. package/src/code-block/index.ts +5 -21
  172. package/src/code-block/shiki-highlighter-chunk.ts +1 -7
  173. package/src/code-block/shiki-highlighter.ts +1 -4
  174. package/src/code-block/shiki-parser.ts +1 -4
  175. package/src/commit/index.ts +6 -35
  176. package/src/doc/index.ts +1 -4
  177. package/src/drop-cursor/drop-cursor.ts +1 -4
  178. package/src/drop-cursor/index.ts +1 -5
  179. package/src/drop-indicator/drop-indicator-facet.ts +12 -21
  180. package/src/drop-indicator/index.ts +1 -5
  181. package/src/enter-rule/index.ts +2 -11
  182. package/src/file/file-paste-handler.spec.ts +3 -16
  183. package/src/file/index.ts +3 -16
  184. package/src/gap-cursor/gap-cursor.ts +1 -4
  185. package/src/gap-cursor/index.ts +1 -4
  186. package/src/hard-break/hard-break-commands.ts +1 -5
  187. package/src/hard-break/hard-break-keymap.spec.ts +1 -5
  188. package/src/hard-break/hard-break-keymap.ts +1 -4
  189. package/src/hard-break/hard-break-spec.ts +1 -4
  190. package/src/hard-break/hard-break.ts +3 -12
  191. package/src/hard-break/index.ts +3 -12
  192. package/src/heading/heading-commands.ts +1 -7
  193. package/src/heading/heading-keymap.spec.ts +1 -5
  194. package/src/heading/heading-keymap.ts +1 -8
  195. package/src/heading/heading-spec.ts +1 -4
  196. package/src/heading/heading.ts +3 -12
  197. package/src/heading/index.ts +3 -12
  198. package/src/horizontal-rule/horizontal-rule-commands.spec.ts +1 -5
  199. package/src/horizontal-rule/horizontal-rule-commands.ts +2 -9
  200. package/src/horizontal-rule/horizontal-rule-input-rule.spec.ts +5 -9
  201. package/src/horizontal-rule/horizontal-rule-input-rule.ts +1 -5
  202. package/src/horizontal-rule/horizontal-rule-spec.ts +1 -4
  203. package/src/horizontal-rule/horizontal-rule.ts +3 -12
  204. package/src/horizontal-rule/index.ts +3 -13
  205. package/src/image/image-commands/upload-image.spec.ts +245 -0
  206. package/src/image/image-commands/upload-image.ts +46 -11
  207. package/src/image/image-commands.ts +2 -8
  208. package/src/image/image-spec.ts +1 -4
  209. package/src/image/image-upload-handler.ts +2 -8
  210. package/src/image/image.ts +3 -12
  211. package/src/image/index.ts +3 -13
  212. package/src/input-rule/index.ts +2 -13
  213. package/src/italic/index.ts +3 -12
  214. package/src/italic/italic-commands.spec.ts +2 -10
  215. package/src/italic/italic-commands.ts +1 -5
  216. package/src/italic/italic-input-rule.spec.ts +1 -5
  217. package/src/italic/italic-input-rule.ts +1 -4
  218. package/src/italic/italic-keymap.ts +1 -5
  219. package/src/italic/italic-spec.ts +1 -4
  220. package/src/italic/italic.ts +3 -12
  221. package/src/link/index.spec.ts +1 -5
  222. package/src/link/index.ts +1 -5
  223. package/src/link/link-paste-rule.spec.ts +2 -9
  224. package/src/link/link-regex.spec.ts +1 -5
  225. package/src/list/index.ts +3 -12
  226. package/src/list/list-commands.ts +1 -5
  227. package/src/list/list-input-rules.ts +1 -4
  228. package/src/list/list-keymap.spec.ts +1 -5
  229. package/src/list/list-keymap.ts +2 -8
  230. package/src/list/list-plugins.ts +1 -4
  231. package/src/list/list-serializer.ts +2 -9
  232. package/src/list/list-spec.ts +3 -13
  233. package/src/list/list.spec.ts +10 -21
  234. package/src/list/list.ts +3 -12
  235. package/src/loro/index.ts +3 -13
  236. package/src/loro/loro-commands.ts +2 -8
  237. package/src/loro/loro-cursor-plugin.ts +3 -13
  238. package/src/loro/loro-keymap.ts +2 -10
  239. package/src/loro/loro-sync-plugin.ts +2 -8
  240. package/src/loro/loro-undo-plugin.ts +2 -8
  241. package/src/loro/loro.ts +2 -11
  242. package/src/mark-rule/apply.ts +3 -13
  243. package/src/mark-rule/mark-rule.spec.ts +2 -13
  244. package/src/mark-rule/mark-rule.ts +2 -13
  245. package/src/mark-rule/range.ts +2 -8
  246. package/src/mark-rule/types.ts +1 -4
  247. package/src/mention/index.ts +1 -8
  248. package/src/mod-click-prevention/index.ts +2 -9
  249. package/src/paragraph/paragraph-commands.ts +1 -5
  250. package/src/paragraph/paragraph-keymap.ts +1 -4
  251. package/src/paragraph/paragraph-spec.ts +1 -4
  252. package/src/paragraph/paragraph.ts +3 -14
  253. package/src/paste-rule/index.ts +2 -10
  254. package/src/paste-rule/mark-paste-rule.spec.ts +3 -13
  255. package/src/paste-rule/mark-paste-rule.ts +4 -14
  256. package/src/paste-rule/paste-rule-plugin.ts +2 -11
  257. package/src/paste-rule/paste-rule.spec.ts +4 -19
  258. package/src/paste-rule/split-text-by-regex.spec.ts +1 -5
  259. package/src/placeholder/index.ts +3 -16
  260. package/src/readonly/index.ts +2 -8
  261. package/src/search/index.ts +1 -6
  262. package/src/table/index.ts +10 -40
  263. package/src/table/table-commands/delete-cell-selection.spec.ts +1 -5
  264. package/src/table/table-commands/exit-table.spec.ts +1 -5
  265. package/src/table/table-commands/insert-table.spec.ts +1 -5
  266. package/src/table/table-commands/insert-table.ts +1 -4
  267. package/src/table/table-commands/move-table-column.spec.ts +1 -5
  268. package/src/table/table-commands/move-table-column.ts +1 -4
  269. package/src/table/table-commands/move-table-row.spec.ts +1 -5
  270. package/src/table/table-commands/move-table-row.ts +1 -4
  271. package/src/table/table-commands/select-table-cell.spec.ts +1 -5
  272. package/src/table/table-commands/select-table-column.spec.ts +1 -5
  273. package/src/table/table-commands/select-table-row.spec.ts +1 -5
  274. package/src/table/table-commands/select-table.spec.ts +1 -5
  275. package/src/table/table-commands/select-table.ts +1 -4
  276. package/src/table/table-commands.ts +8 -32
  277. package/src/table/table-plugins.ts +2 -8
  278. package/src/table/table-spec.spec.ts +2 -11
  279. package/src/table/table-spec.ts +2 -8
  280. package/src/table/table-utils.ts +2 -6
  281. package/src/table/table.ts +2 -8
  282. package/src/table/test-utils.ts +1 -4
  283. package/src/testing/clipboard.ts +1 -2
  284. package/src/testing/index.ts +7 -12
  285. package/src/text/index.ts +1 -4
  286. package/src/text-align/index.ts +2 -2
  287. package/src/text-color/index.ts +3 -0
  288. package/src/text-color/text-color-commands.spec.ts +71 -0
  289. package/src/text-color/text-color-commands.ts +35 -0
  290. package/src/text-color/text-color-spec.spec.ts +297 -0
  291. package/src/text-color/text-color-spec.ts +58 -0
  292. package/src/text-color/text-color.ts +21 -0
  293. package/src/virtual-selection/index.ts +3 -14
  294. package/src/yjs/index.ts +5 -20
  295. package/src/yjs/yjs-commands.ts +2 -8
  296. package/src/yjs/yjs-cursor-plugin.ts +3 -5
  297. package/src/yjs/yjs-keymap.ts +2 -10
  298. package/src/yjs/yjs-sync-plugin.ts +1 -4
  299. package/src/yjs/yjs-types.ts +10 -0
  300. package/src/yjs/yjs-undo-plugin.ts +2 -8
  301. package/src/yjs/yjs.ts +6 -24
  302. package/dist/drop-indicator-B1QHFb5m.js.map +0 -1
  303. package/dist/enter-rule-CzWOZF_Z.js.map +0 -1
  304. package/dist/file-DrfcSid-.js.map +0 -1
  305. package/dist/index-oIc1a2f2.d.ts.map +0 -1
  306. package/dist/input-rule-dmsb3j6w.js.map +0 -1
  307. package/dist/mark-rule-BcLB4Uv2.js.map +0 -1
  308. package/dist/paste-rule-pVb4sqvJ.js.map +0 -1
  309. package/dist/shiki-highlighter-chunk-rkzofy4z.d.ts.map +0 -1
  310. package/dist/table-BRDh_9mG.js.map +0 -1
  311. package/src/testing/format-html.ts +0 -5
@@ -1,40 +1,13 @@
1
- export {
2
- defineTable,
3
- type TableExtension,
4
- } from './table'
5
- export {
6
- defineTableCommands,
7
- type TableCommandsExtension,
8
- } from './table-commands'
1
+ export { defineTable, type TableExtension } from './table'
2
+ export { defineTableCommands, type TableCommandsExtension } from './table-commands'
9
3
  export { exitTable } from './table-commands/exit-table'
10
- export {
11
- insertTable,
12
- type InsertTableOptions,
13
- } from './table-commands/insert-table'
14
- export {
15
- moveTableColumn,
16
- type MoveTableColumnOptions,
17
- } from './table-commands/move-table-column'
18
- export {
19
- moveTableRow,
20
- type MoveTableRowOptions,
21
- } from './table-commands/move-table-row'
22
- export {
23
- selectTable,
24
- type SelectTableOptions,
25
- } from './table-commands/select-table'
26
- export {
27
- selectTableCell,
28
- type SelectTableCellOptions,
29
- } from './table-commands/select-table-cell'
30
- export {
31
- selectTableColumn,
32
- type SelectTableColumnOptions,
33
- } from './table-commands/select-table-column'
34
- export {
35
- selectTableRow,
36
- type SelectTableRowOptions,
37
- } from './table-commands/select-table-row'
4
+ export { insertTable, type InsertTableOptions } from './table-commands/insert-table'
5
+ export { moveTableColumn, type MoveTableColumnOptions } from './table-commands/move-table-column'
6
+ export { moveTableRow, type MoveTableRowOptions } from './table-commands/move-table-row'
7
+ export { selectTable, type SelectTableOptions } from './table-commands/select-table'
8
+ export { selectTableCell, type SelectTableCellOptions } from './table-commands/select-table-cell'
9
+ export { selectTableColumn, type SelectTableColumnOptions } from './table-commands/select-table-column'
10
+ export { selectTableRow, type SelectTableRowOptions } from './table-commands/select-table-row'
38
11
  export { defineTableDropIndicator } from './table-drop-indicator'
39
12
  export { defineTablePlugins } from './table-plugins'
40
13
  export {
@@ -47,7 +20,4 @@ export {
47
20
  type TableRowSpecExtension,
48
21
  type TableSpecExtension,
49
22
  } from './table-spec'
50
- export {
51
- findTable,
52
- isCellSelection,
53
- } from './table-utils'
23
+ export { findTable, isCellSelection } from './table-utils'
@@ -1,8 +1,4 @@
1
- import {
2
- describe,
3
- expect,
4
- it,
5
- } from 'vitest'
1
+ import { describe, expect, it } from 'vitest'
6
2
 
7
3
  import { setupTest } from '../../testing'
8
4
  import { isCellSelection } from '../table-utils'
@@ -1,8 +1,4 @@
1
- import {
2
- describe,
3
- expect,
4
- it,
5
- } from 'vitest'
1
+ import { describe, expect, it } from 'vitest'
6
2
 
7
3
  import { setupTest } from '../../testing'
8
4
  import { inputText } from '../../testing/keyboard'
@@ -1,8 +1,4 @@
1
- import {
2
- describe,
3
- expect,
4
- it,
5
- } from 'vitest'
1
+ import { describe, expect, it } from 'vitest'
6
2
 
7
3
  import { setupTest } from '../../testing'
8
4
 
@@ -1,7 +1,4 @@
1
- import {
2
- getNodeType,
3
- insertNode,
4
- } from '@prosekit/core'
1
+ import { getNodeType, insertNode } from '@prosekit/core'
5
2
  import type { Schema } from '@prosekit/pm/model'
6
3
  import type { Command } from '@prosekit/pm/state'
7
4
 
@@ -1,10 +1,6 @@
1
1
  import type { Command } from '@prosekit/pm/state'
2
2
  import { CellSelection } from 'prosemirror-tables'
3
- import {
4
- describe,
5
- expect,
6
- it,
7
- } from 'vitest'
3
+ import { describe, expect, it } from 'vitest'
8
4
 
9
5
  import { setupTest } from '../../testing'
10
6
 
@@ -1,4 +1 @@
1
- export {
2
- moveTableColumn,
3
- type MoveTableColumnOptions,
4
- } from 'prosemirror-tables'
1
+ export { moveTableColumn, type MoveTableColumnOptions } from 'prosemirror-tables'
@@ -1,10 +1,6 @@
1
1
  import type { Command } from '@prosekit/pm/state'
2
2
  import { CellSelection } from 'prosemirror-tables'
3
- import {
4
- describe,
5
- expect,
6
- it,
7
- } from 'vitest'
3
+ import { describe, expect, it } from 'vitest'
8
4
 
9
5
  import { setupTest } from '../../testing'
10
6
 
@@ -1,4 +1 @@
1
- export {
2
- moveTableRow,
3
- type MoveTableRowOptions,
4
- } from 'prosemirror-tables'
1
+ export { moveTableRow, type MoveTableRowOptions } from 'prosemirror-tables'
@@ -1,8 +1,4 @@
1
- import {
2
- describe,
3
- expect,
4
- it,
5
- } from 'vitest'
1
+ import { describe, expect, it } from 'vitest'
6
2
 
7
3
  import { setupTest } from '../../testing'
8
4
  import { isCellSelection } from '../table-utils'
@@ -1,8 +1,4 @@
1
- import {
2
- describe,
3
- expect,
4
- it,
5
- } from 'vitest'
1
+ import { describe, expect, it } from 'vitest'
6
2
 
7
3
  import { setupTest } from '../../testing'
8
4
  import { inspectSelectedCells } from '../test-utils'
@@ -1,8 +1,4 @@
1
- import {
2
- describe,
3
- expect,
4
- it,
5
- } from 'vitest'
1
+ import { describe, expect, it } from 'vitest'
6
2
 
7
3
  import { setupTest } from '../../testing'
8
4
  import { inspectSelectedCells } from '../test-utils'
@@ -1,8 +1,4 @@
1
- import {
2
- describe,
3
- expect,
4
- it,
5
- } from 'vitest'
1
+ import { describe, expect, it } from 'vitest'
6
2
 
7
3
  import { setupTest } from '../../testing'
8
4
  import { inspectSelectedCells } from '../test-utils'
@@ -1,8 +1,5 @@
1
1
  import type { Command } from '@prosekit/pm/state'
2
- import {
3
- CellSelection,
4
- TableMap,
5
- } from 'prosemirror-tables'
2
+ import { CellSelection, TableMap } from 'prosemirror-tables'
6
3
 
7
4
  import { findTable } from '../table-utils'
8
5
 
@@ -1,7 +1,4 @@
1
- import {
2
- defineCommands,
3
- type Extension,
4
- } from '@prosekit/core'
1
+ import { defineCommands, type Extension } from '@prosekit/core'
5
2
  import {
6
3
  addColumnAfter,
7
4
  addColumnBefore,
@@ -16,34 +13,13 @@ import {
16
13
 
17
14
  import { deleteCellSelection } from './table-commands/delete-cell-selection'
18
15
  import { exitTable } from './table-commands/exit-table'
19
- import {
20
- insertTable,
21
- type InsertTableOptions,
22
- } from './table-commands/insert-table'
23
- import {
24
- moveTableColumn,
25
- type MoveTableColumnOptions,
26
- } from './table-commands/move-table-column'
27
- import {
28
- moveTableRow,
29
- type MoveTableRowOptions,
30
- } from './table-commands/move-table-row'
31
- import {
32
- selectTable,
33
- type SelectTableOptions,
34
- } from './table-commands/select-table'
35
- import {
36
- selectTableCell,
37
- type SelectTableCellOptions,
38
- } from './table-commands/select-table-cell'
39
- import {
40
- selectTableColumn,
41
- type SelectTableColumnOptions,
42
- } from './table-commands/select-table-column'
43
- import {
44
- selectTableRow,
45
- type SelectTableRowOptions,
46
- } from './table-commands/select-table-row'
16
+ import { insertTable, type InsertTableOptions } from './table-commands/insert-table'
17
+ import { moveTableColumn, type MoveTableColumnOptions } from './table-commands/move-table-column'
18
+ import { moveTableRow, type MoveTableRowOptions } from './table-commands/move-table-row'
19
+ import { selectTable, type SelectTableOptions } from './table-commands/select-table'
20
+ import { selectTableCell, type SelectTableCellOptions } from './table-commands/select-table-cell'
21
+ import { selectTableColumn, type SelectTableColumnOptions } from './table-commands/select-table-column'
22
+ import { selectTableRow, type SelectTableRowOptions } from './table-commands/select-table-row'
47
23
 
48
24
  /**
49
25
  * @internal
@@ -1,11 +1,5 @@
1
- import {
2
- definePlugin,
3
- type PlainExtension,
4
- } from '@prosekit/core'
5
- import {
6
- columnResizing,
7
- tableEditing,
8
- } from 'prosemirror-tables'
1
+ import { definePlugin, type PlainExtension } from '@prosekit/core'
2
+ import { columnResizing, tableEditing } from 'prosemirror-tables'
9
3
 
10
4
  /**
11
5
  * @public
@@ -1,21 +1,12 @@
1
1
  import { union } from '@prosekit/core'
2
2
  import pick from 'just-pick'
3
- import {
4
- describe,
5
- expect,
6
- it,
7
- } from 'vitest'
3
+ import { describe, expect, it } from 'vitest'
8
4
 
9
5
  import { defineDoc } from '../doc'
10
6
  import { defineParagraph } from '../paragraph'
11
7
  import { defineText } from '../text'
12
8
 
13
- import {
14
- defineTableCellSpec,
15
- defineTableHeaderCellSpec,
16
- defineTableRowSpec,
17
- defineTableSpec,
18
- } from './table-spec'
9
+ import { defineTableCellSpec, defineTableHeaderCellSpec, defineTableRowSpec, defineTableSpec } from './table-spec'
19
10
 
20
11
  describe('table spec', () => {
21
12
  it('should be defined', () => {
@@ -1,11 +1,5 @@
1
- import {
2
- defineNodeSpec,
3
- type Extension,
4
- } from '@prosekit/core'
5
- import type {
6
- AttributeSpec,
7
- Attrs,
8
- } from '@prosekit/pm/model'
1
+ import { defineNodeSpec, type Extension } from '@prosekit/core'
2
+ import type { AttributeSpec, Attrs } from '@prosekit/pm/model'
9
3
  import { tableNodes } from 'prosemirror-tables'
10
4
 
11
5
  const cellContent = 'block+'
@@ -1,10 +1,6 @@
1
- import { CellSelection } from 'prosemirror-tables'
1
+ import { CellSelection, findCellPos, findCellRange, findTable } from 'prosemirror-tables'
2
2
 
3
- export {
4
- findCellPos,
5
- findCellRange,
6
- findTable,
7
- } from 'prosemirror-tables'
3
+ export { findCellPos, findCellRange, findTable }
8
4
 
9
5
  /**
10
6
  * Checks if the given object is a `CellSelection` instance.
@@ -1,12 +1,6 @@
1
- import {
2
- union,
3
- type Union,
4
- } from '@prosekit/core'
1
+ import { union, type Union } from '@prosekit/core'
5
2
 
6
- import {
7
- defineTableCommands,
8
- type TableCommandsExtension,
9
- } from './table-commands'
3
+ import { defineTableCommands, type TableCommandsExtension } from './table-commands'
10
4
  import { defineTableDropIndicator } from './table-drop-indicator'
11
5
  import { defineTablePlugins } from './table-plugins'
12
6
  import {
@@ -1,7 +1,4 @@
1
- import type {
2
- Command,
3
- Selection,
4
- } from '@prosekit/pm/state'
1
+ import type { Command, Selection } from '@prosekit/pm/state'
5
2
  import { CellSelection } from 'prosemirror-tables'
6
3
 
7
4
  import { isCellSelection } from './table-utils'
@@ -1,6 +1,5 @@
1
1
  import type { EditorView } from '@prosekit/pm/view'
2
-
3
- import { formatHTML } from './format-html'
2
+ import { formatHTML } from 'diffable-html-snapshot'
4
3
 
5
4
  async function readBlobFromClipboard(mimeType: string): Promise<Blob | undefined> {
6
5
  const clipboardItems = await navigator.clipboard.read()
@@ -10,12 +10,10 @@ import {
10
10
  type ExtractNodeActions,
11
11
  type NodeChild,
12
12
  } from '@prosekit/core'
13
- import {
14
- createTestEditor,
15
- type TestEditor,
16
- } from '@prosekit/core/test'
13
+ import { createTestEditor, type TestEditor } from '@prosekit/core/test'
17
14
  import { keyboard } from 'vitest-browser-commands/playwright'
18
15
 
16
+ import { defineBackgroundColor } from '../background-color'
19
17
  import { defineBlockquote } from '../blockquote'
20
18
  import { defineBold } from '../bold'
21
19
  import { defineCode } from '../code'
@@ -27,21 +25,16 @@ import { defineHorizontalRule } from '../horizontal-rule'
27
25
  import { defineImage } from '../image'
28
26
  import { defineItalic } from '../italic'
29
27
  import { defineLink } from '../link'
30
- import {
31
- defineList,
32
- type ListAttrs,
33
- } from '../list'
28
+ import { defineList, type ListAttrs } from '../list'
34
29
  import { defineParagraph } from '../paragraph'
35
30
  import { defineStrike } from '../strike'
36
31
  import { defineTable } from '../table'
37
32
  import type { CellAttrs } from '../table/table-spec'
38
33
  import { defineText } from '../text'
34
+ import { defineTextColor } from '../text-color'
39
35
  import { defineUnderline } from '../underline'
40
36
 
41
- import {
42
- readHtmlTextFromClipboard,
43
- readPlainTextFromClipboard,
44
- } from './clipboard'
37
+ import { readHtmlTextFromClipboard, readPlainTextFromClipboard } from './clipboard'
45
38
 
46
39
  /**
47
40
  * @internal
@@ -61,6 +54,8 @@ export function defineTestExtension() {
61
54
  defineUnderline(),
62
55
  defineStrike(),
63
56
  defineCode(),
57
+ defineTextColor(),
58
+ defineBackgroundColor(),
64
59
  defineLink(),
65
60
  defineImage(),
66
61
  defineParagraph(),
package/src/text/index.ts CHANGED
@@ -1,7 +1,4 @@
1
- import {
2
- defineNodeSpec,
3
- type Extension,
4
- } from '@prosekit/core'
1
+ import { defineNodeSpec, type Extension } from '@prosekit/core'
5
2
  import type { Attrs } from '@prosekit/pm/model'
6
3
 
7
4
  /**
@@ -2,7 +2,7 @@ import {
2
2
  defineCommands,
3
3
  defineKeymap,
4
4
  defineNodeAttr,
5
- setNodeAttrs,
5
+ setNodeAttrsBetween,
6
6
  union,
7
7
  type Extension,
8
8
  type PlainExtension,
@@ -74,7 +74,7 @@ export function setTextAlign({
74
74
  types: string[]
75
75
  value: string | null
76
76
  }): Command {
77
- return setNodeAttrs({ type: types, attrs: { textAlign: value } })
77
+ return setNodeAttrsBetween({ type: types, attrs: { textAlign: value } })
78
78
  }
79
79
 
80
80
  /**
@@ -0,0 +1,3 @@
1
+ export { defineTextColor, type TextColorExtension } from './text-color'
2
+ export { addTextColor, defineTextColorCommands, removeTextColor, type TextColorCommandsExtension } from './text-color-commands'
3
+ export { defineTextColorSpec, type TextColorAttrs, type TextColorSpecExtension } from './text-color-spec'
@@ -0,0 +1,71 @@
1
+ import { describe, expect, it } from 'vitest'
2
+
3
+ import { setupTest } from '../testing'
4
+
5
+ describe('addTextColor', () => {
6
+ it('can add color to text', () => {
7
+ const { editor, n, m } = setupTest()
8
+
9
+ const doc1 = n.doc(
10
+ n.p('Hello <a>world<b>'),
11
+ )
12
+ const doc2 = n.doc(
13
+ n.p('Hello ', m.textColor({ color: 'red' }, 'world')),
14
+ )
15
+
16
+ editor.set(doc1)
17
+ editor.commands.addTextColor({ color: 'red' })
18
+ expect(editor.getDocJSON()).toEqual(doc2.toJSON())
19
+ })
20
+
21
+ it('can override existing color', () => {
22
+ const { editor, n, m } = setupTest()
23
+
24
+ const doc1 = n.doc(
25
+ n.p(
26
+ 'A',
27
+ m.textColor({ color: 'red' }, 'B<a>C'),
28
+ m.textColor({ color: 'red' }, 'DE'),
29
+ 'F<b>G',
30
+ ),
31
+ )
32
+ const doc2 = n.doc(
33
+ n.p(
34
+ 'A',
35
+ m.textColor({ color: 'red' }, 'B'),
36
+ m.textColor({ color: 'blue' }, 'CDEF'),
37
+ 'G',
38
+ ),
39
+ )
40
+
41
+ editor.set(doc1)
42
+ editor.commands.addTextColor({ color: 'blue' })
43
+ expect(editor.getDocJSON()).toEqual(doc2.toJSON())
44
+ })
45
+ })
46
+
47
+ describe('removeColor', () => {
48
+ it('can remove color from text', () => {
49
+ const { editor, n, m } = setupTest()
50
+
51
+ const doc1 = n.doc(
52
+ n.p(
53
+ 'A',
54
+ m.textColor({ color: 'red' }, 'B<a>C'),
55
+ m.textColor({ color: 'blue' }, 'DE'),
56
+ 'F<b>G',
57
+ ),
58
+ )
59
+ const doc2 = n.doc(
60
+ n.p(
61
+ 'A',
62
+ m.textColor({ color: 'red' }, 'B'),
63
+ 'CDEFG',
64
+ ),
65
+ )
66
+
67
+ editor.set(doc1)
68
+ editor.commands.removeTextColor()
69
+ expect(editor.getDocJSON()).toEqual(doc2.toJSON())
70
+ })
71
+ })
@@ -0,0 +1,35 @@
1
+ import { addMark, defineCommands, removeMark, type Extension } from '@prosekit/core'
2
+ import type { Command } from '@prosekit/pm/state'
3
+
4
+ import type { TextColorAttrs } from './text-color-spec'
5
+
6
+ /**
7
+ * @internal
8
+ */
9
+ export function addTextColor(attrs: TextColorAttrs): Command {
10
+ return addMark({ type: 'textColor', attrs })
11
+ }
12
+
13
+ /**
14
+ * @internal
15
+ */
16
+ export function removeTextColor(): Command {
17
+ return removeMark({ type: 'textColor' })
18
+ }
19
+
20
+ /**
21
+ * @internal
22
+ */
23
+ export type TextColorCommandsExtension = Extension<{
24
+ Commands: {
25
+ addTextColor: [attrs: TextColorAttrs]
26
+ removeTextColor: []
27
+ }
28
+ }>
29
+
30
+ /**
31
+ * @internal
32
+ */
33
+ export function defineTextColorCommands(): TextColorCommandsExtension {
34
+ return defineCommands({ addTextColor, removeTextColor })
35
+ }