@milkdown/crepe 7.4.0 → 7.5.1

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 (424) hide show
  1. package/lib/cjs/clsx-dASsG01A.js +6 -0
  2. package/lib/cjs/clsx-dASsG01A.js.map +1 -0
  3. package/lib/cjs/{index-5PcT4iSf.js → index--2zEz40J.js} +8 -22
  4. package/lib/cjs/{index-5PcT4iSf.js.map → index--2zEz40J.js.map} +1 -1
  5. package/lib/cjs/{index-lrFGGa_l.js → index-5n9R-QCl.js} +5 -19
  6. package/lib/cjs/{index-lrFGGa_l.js.map → index-5n9R-QCl.js.map} +1 -1
  7. package/lib/cjs/{index-SxWWV8XD.js → index-HEdBw63r.js} +8 -22
  8. package/lib/cjs/{index-SxWWV8XD.js.map → index-HEdBw63r.js.map} +1 -1
  9. package/lib/cjs/{index-vlxA_KJ8.js → index-Hlt9dRH5.js} +5 -19
  10. package/lib/cjs/{index-vlxA_KJ8.js.map → index-Hlt9dRH5.js.map} +1 -1
  11. package/lib/cjs/{index-TEjdwq--.js → index-KCW2CzRk.js} +8 -22
  12. package/lib/{esm/index-DoEghZHy.js.map → cjs/index-KCW2CzRk.js.map} +1 -1
  13. package/lib/cjs/{index-qRg5-QJH.js → index-KSZhahYb.js} +6 -20
  14. package/lib/cjs/{index-qRg5-QJH.js.map → index-KSZhahYb.js.map} +1 -1
  15. package/lib/cjs/index-N1cRxqdw.js +39 -0
  16. package/lib/cjs/index-N1cRxqdw.js.map +1 -0
  17. package/lib/cjs/{index-fkT0ywfA.js → index-NNo_VSEA.js} +5 -19
  18. package/lib/cjs/{index-fkT0ywfA.js.map → index-NNo_VSEA.js.map} +1 -1
  19. package/lib/cjs/{index-OtaMLv5l.js → index-O1bDbloo.js} +5 -19
  20. package/lib/cjs/{index-OtaMLv5l.js.map → index-O1bDbloo.js.map} +1 -1
  21. package/lib/cjs/{index-mJ47ZWO2.js → index-OPh9naof.js} +8 -22
  22. package/lib/cjs/{index-mJ47ZWO2.js.map → index-OPh9naof.js.map} +1 -1
  23. package/lib/cjs/{index-OA_u95ey.js → index-PAhfZtcH.js} +5 -19
  24. package/lib/cjs/{index-OA_u95ey.js.map → index-PAhfZtcH.js.map} +1 -1
  25. package/lib/cjs/{index-zBr61zy6.js → index-PeRHVz4A.js} +5 -19
  26. package/lib/{esm/index-6P9Xk934.js.map → cjs/index-PeRHVz4A.js.map} +1 -1
  27. package/lib/cjs/{index-llNS_EuP.js → index-U7GWrg-w.js} +26 -470
  28. package/lib/cjs/index-U7GWrg-w.js.map +1 -0
  29. package/lib/cjs/{index-wXLifZgm.js → index-UTb0Az5e.js} +2 -2
  30. package/lib/cjs/{index-wXLifZgm.js.map → index-UTb0Az5e.js.map} +1 -1
  31. package/lib/cjs/{index-t_GA5F26.js → index-UnEAyH8X.js} +5 -19
  32. package/lib/cjs/{index-t_GA5F26.js.map → index-UnEAyH8X.js.map} +1 -1
  33. package/lib/cjs/{index-i0_v2uVp.js → index-VCkq0ru1.js} +5 -19
  34. package/lib/{esm/index-4QzlLVWs.js.map → cjs/index-VCkq0ru1.js.map} +1 -1
  35. package/lib/cjs/{index-OIQn1x0L.js → index-WQl7Du53.js} +4 -18
  36. package/lib/cjs/index-WQl7Du53.js.map +1 -0
  37. package/lib/cjs/{index-GEIgbcVc.js → index-ahL5MvrQ.js} +28 -42
  38. package/lib/cjs/{index-GEIgbcVc.js.map → index-ahL5MvrQ.js.map} +1 -1
  39. package/lib/cjs/{index-tbEq3xma.js → index-bpgWLeRY.js} +5 -19
  40. package/lib/cjs/{index-tbEq3xma.js.map → index-bpgWLeRY.js.map} +1 -1
  41. package/lib/cjs/index-dEVmN_aj.js +26 -0
  42. package/lib/cjs/index-dEVmN_aj.js.map +1 -0
  43. package/lib/cjs/{index-w9buMrFW.js → index-fZupvR_f.js} +8 -22
  44. package/lib/{esm/index-hQaRWeq1.js.map → cjs/index-fZupvR_f.js.map} +1 -1
  45. package/lib/cjs/{index-ortUqbAp.js → index-gSM-jgti.js} +5 -19
  46. package/lib/{esm/index-oMy83ynO.js.map → cjs/index-gSM-jgti.js.map} +1 -1
  47. package/lib/cjs/{index-LdEYPSZc.js → index-jlPr_A_N.js} +5 -19
  48. package/lib/cjs/{index-LdEYPSZc.js.map → index-jlPr_A_N.js.map} +1 -1
  49. package/lib/cjs/index-ocxd4A-M.js +675 -0
  50. package/lib/cjs/index-ocxd4A-M.js.map +1 -0
  51. package/lib/cjs/{index-xqKfEyRA.js → index-rFFAL9YA.js} +14 -17
  52. package/lib/cjs/index-rFFAL9YA.js.map +1 -0
  53. package/lib/cjs/index-tlx25I_m.js +36 -0
  54. package/lib/cjs/index-tlx25I_m.js.map +1 -0
  55. package/lib/cjs/index-tqAbVyds.js +28 -0
  56. package/lib/cjs/index-tqAbVyds.js.map +1 -0
  57. package/lib/cjs/index-udZSknd8.js +167 -0
  58. package/lib/cjs/index-udZSknd8.js.map +1 -0
  59. package/lib/cjs/index-uleaJDBC.js +19 -0
  60. package/lib/cjs/index-uleaJDBC.js.map +1 -0
  61. package/lib/cjs/{index-de3dfsQr.js → index-urB-WDqA.js} +7 -21
  62. package/lib/cjs/{index-de3dfsQr.js.map → index-urB-WDqA.js.map} +1 -1
  63. package/lib/cjs/{index-78P4PeZ9.js → index-xWgWtxUR.js} +6 -20
  64. package/lib/cjs/{index-78P4PeZ9.js.map → index-xWgWtxUR.js.map} +1 -1
  65. package/lib/cjs/index-z6pe2alg.js.map +1 -1
  66. package/lib/cjs/index.js +150 -13
  67. package/lib/cjs/index.js.map +1 -1
  68. package/lib/cjs/todoList-YYRQo7wG.js +404 -0
  69. package/lib/cjs/todoList-YYRQo7wG.js.map +1 -0
  70. package/lib/esm/clsx-RxCLxYpD.js +4 -0
  71. package/lib/esm/clsx-RxCLxYpD.js.map +1 -0
  72. package/lib/esm/{index-a-SAfeeT.js → index-1NetiFdJ.js} +8 -22
  73. package/lib/esm/{index-a-SAfeeT.js.map → index-1NetiFdJ.js.map} +1 -1
  74. package/lib/esm/{index-NmjiRA0M.js → index-2I_xbjAZ.js} +28 -42
  75. package/lib/esm/{index-NmjiRA0M.js.map → index-2I_xbjAZ.js.map} +1 -1
  76. package/lib/esm/{index-Grquo08f.js → index-2huXYfuJ.js} +8 -22
  77. package/lib/esm/{index-Grquo08f.js.map → index-2huXYfuJ.js.map} +1 -1
  78. package/lib/esm/{index-U8q-F7hU.js → index-4x6_TVZv.js} +5 -19
  79. package/lib/esm/{index-U8q-F7hU.js.map → index-4x6_TVZv.js.map} +1 -1
  80. package/lib/esm/index-6JoGWH2I.js +17 -0
  81. package/lib/esm/index-6JoGWH2I.js.map +1 -0
  82. package/lib/esm/{index-x-zW6gKj.js → index-A-dNwMMf.js} +2 -2
  83. package/lib/esm/{index-x-zW6gKj.js.map → index-A-dNwMMf.js.map} +1 -1
  84. package/lib/esm/{index-oMy83ynO.js → index-AV99ipmP.js} +5 -19
  85. package/lib/{cjs/index-ortUqbAp.js.map → esm/index-AV99ipmP.js.map} +1 -1
  86. package/lib/esm/{index-VyZguCIt.js → index-CMGDOz11.js} +10 -13
  87. package/lib/esm/index-CMGDOz11.js.map +1 -0
  88. package/lib/esm/index-HlPKwzLC.js +34 -0
  89. package/lib/esm/index-HlPKwzLC.js.map +1 -0
  90. package/lib/esm/index-Jvxff1vU.js.map +1 -1
  91. package/lib/esm/{index-vwrMVELn.js → index-PC2bahtq.js} +5 -19
  92. package/lib/esm/{index-vwrMVELn.js.map → index-PC2bahtq.js.map} +1 -1
  93. package/lib/esm/{index-UBeneu17.js → index-QBYz82jZ.js} +5 -19
  94. package/lib/esm/{index-UBeneu17.js.map → index-QBYz82jZ.js.map} +1 -1
  95. package/lib/esm/{index-bsED907r.js → index-W1pAMr_8.js} +6 -20
  96. package/lib/esm/{index-bsED907r.js.map → index-W1pAMr_8.js.map} +1 -1
  97. package/lib/esm/{index-q-qE7-96.js → index-Xzdc2jbA.js} +25 -469
  98. package/lib/esm/index-Xzdc2jbA.js.map +1 -0
  99. package/lib/esm/{index-A9zdyi2L.js → index-ZAtZWqJQ.js} +5 -19
  100. package/lib/esm/{index-A9zdyi2L.js.map → index-ZAtZWqJQ.js.map} +1 -1
  101. package/lib/esm/index-_A9vu1ED.js +673 -0
  102. package/lib/esm/index-_A9vu1ED.js.map +1 -0
  103. package/lib/esm/{index-U71v7KdA.js → index-bnSKBrbD.js} +5 -19
  104. package/lib/esm/{index-U71v7KdA.js.map → index-bnSKBrbD.js.map} +1 -1
  105. package/lib/esm/index-fVrfHXda.js +24 -0
  106. package/lib/esm/index-fVrfHXda.js.map +1 -0
  107. package/lib/esm/{index-PkBZpDL4.js → index-ftnOhuRS.js} +4 -18
  108. package/lib/esm/index-ftnOhuRS.js.map +1 -0
  109. package/lib/esm/{index-4oMdufW4.js → index-iQPB0Rdl.js} +6 -20
  110. package/lib/esm/{index-4oMdufW4.js.map → index-iQPB0Rdl.js.map} +1 -1
  111. package/lib/esm/{index-0khVa44f.js → index-kPj3-TKp.js} +5 -19
  112. package/lib/esm/{index-0khVa44f.js.map → index-kPj3-TKp.js.map} +1 -1
  113. package/lib/esm/{index-hQaRWeq1.js → index-kgOR7SZ6.js} +8 -22
  114. package/lib/{cjs/index-w9buMrFW.js.map → esm/index-kgOR7SZ6.js.map} +1 -1
  115. package/lib/esm/index-lm00PM0y.js +165 -0
  116. package/lib/esm/index-lm00PM0y.js.map +1 -0
  117. package/lib/esm/{index-4QzlLVWs.js → index-m49Bj3q7.js} +5 -19
  118. package/lib/{cjs/index-i0_v2uVp.js.map → esm/index-m49Bj3q7.js.map} +1 -1
  119. package/lib/esm/index-ohmbt6Ys.js +37 -0
  120. package/lib/esm/index-ohmbt6Ys.js.map +1 -0
  121. package/lib/esm/{index-DoEghZHy.js → index-sWVjGw-3.js} +8 -22
  122. package/lib/esm/index-sWVjGw-3.js.map +1 -0
  123. package/lib/esm/{index-L7VXk-jT.js → index-twh8lL5o.js} +5 -19
  124. package/lib/esm/{index-L7VXk-jT.js.map → index-twh8lL5o.js.map} +1 -1
  125. package/lib/esm/{index-6P9Xk934.js → index-v02MCz4_.js} +5 -19
  126. package/lib/{cjs/index-zBr61zy6.js.map → esm/index-v02MCz4_.js.map} +1 -1
  127. package/lib/esm/index-v3rvbocl.js +26 -0
  128. package/lib/esm/index-v3rvbocl.js.map +1 -0
  129. package/lib/esm/{index-7BVeXLQZ.js → index-wEXT8mbN.js} +5 -19
  130. package/lib/esm/{index-7BVeXLQZ.js.map → index-wEXT8mbN.js.map} +1 -1
  131. package/lib/esm/{index-rwcSpYkt.js → index-wFIac5Kw.js} +7 -21
  132. package/lib/esm/{index-rwcSpYkt.js.map → index-wFIac5Kw.js.map} +1 -1
  133. package/lib/esm/{index-bVubJ6Rv.js → index-wg94ewRo.js} +8 -22
  134. package/lib/esm/{index-bVubJ6Rv.js.map → index-wg94ewRo.js.map} +1 -1
  135. package/lib/esm/index.js +152 -11
  136. package/lib/esm/index.js.map +1 -1
  137. package/lib/esm/todoList-9QsDDcmB.js +368 -0
  138. package/lib/esm/todoList-9QsDDcmB.js.map +1 -0
  139. package/lib/theme/_internal/classic-common.css +3 -2
  140. package/lib/theme/common/block-edit.css +3 -1
  141. package/lib/theme/common/code-mirror.css +15 -0
  142. package/lib/theme/common/cursor.css +1 -1
  143. package/lib/theme/common/image-block.css +2 -0
  144. package/lib/theme/common/link-tooltip.css +10 -13
  145. package/lib/theme/common/list-item.css +16 -1
  146. package/lib/theme/common/prosemirror.css +1 -1
  147. package/lib/theme/common/style.css +1 -0
  148. package/lib/theme/common/table.css +217 -0
  149. package/lib/theme/common/toolbar.css +11 -4
  150. package/lib/theme/{classic-dark → crepe-dark}/style.css +2 -2
  151. package/lib/theme/frame/style.css +28 -0
  152. package/lib/theme/frame-dark/style.css +28 -0
  153. package/lib/theme/nord/style.css +28 -0
  154. package/lib/theme/nord-dark/style.css +28 -0
  155. package/lib/types/core/crepe.d.ts +5 -3
  156. package/lib/types/core/crepe.d.ts.map +1 -1
  157. package/lib/types/core/slice.d.ts +2 -2
  158. package/lib/types/core/slice.d.ts.map +1 -1
  159. package/lib/types/feature/block-edit/handle/component.d.ts +3 -0
  160. package/lib/types/feature/block-edit/handle/component.d.ts.map +1 -1
  161. package/lib/types/feature/block-edit/handle/index.d.ts +5 -4
  162. package/lib/types/feature/block-edit/handle/index.d.ts.map +1 -1
  163. package/lib/types/feature/block-edit/index.d.ts +43 -2
  164. package/lib/types/feature/block-edit/index.d.ts.map +1 -1
  165. package/lib/types/feature/block-edit/menu/component.d.ts +3 -1
  166. package/lib/types/feature/block-edit/menu/component.d.ts.map +1 -1
  167. package/lib/types/feature/block-edit/menu/config.d.ts +3 -12
  168. package/lib/types/feature/block-edit/menu/config.d.ts.map +1 -1
  169. package/lib/types/feature/block-edit/menu/group-builder.d.ts +29 -0
  170. package/lib/types/feature/block-edit/menu/group-builder.d.ts.map +1 -0
  171. package/lib/types/feature/block-edit/menu/index.d.ts +5 -4
  172. package/lib/types/feature/block-edit/menu/index.d.ts.map +1 -1
  173. package/lib/types/feature/block-edit/menu/utils.d.ts +28 -0
  174. package/lib/types/feature/block-edit/menu/utils.d.ts.map +1 -0
  175. package/lib/types/feature/code-mirror/index.d.ts +9 -1
  176. package/lib/types/feature/code-mirror/index.d.ts.map +1 -1
  177. package/lib/types/feature/cursor/index.d.ts +1 -1
  178. package/lib/types/feature/cursor/index.d.ts.map +1 -1
  179. package/lib/types/feature/image-block/index.d.ts +19 -2
  180. package/lib/types/feature/image-block/index.d.ts.map +1 -1
  181. package/lib/types/feature/index.d.ts +17 -2
  182. package/lib/types/feature/index.d.ts.map +1 -1
  183. package/lib/types/feature/link-tooltip/index.d.ts +12 -2
  184. package/lib/types/feature/link-tooltip/index.d.ts.map +1 -1
  185. package/lib/types/feature/list-item/index.d.ts +8 -2
  186. package/lib/types/feature/list-item/index.d.ts.map +1 -1
  187. package/lib/types/feature/placeholder/index.d.ts +2 -2
  188. package/lib/types/feature/placeholder/index.d.ts.map +1 -1
  189. package/lib/types/feature/shared.d.ts +3 -1
  190. package/lib/types/feature/shared.d.ts.map +1 -1
  191. package/lib/types/feature/table/index.d.ts +16 -0
  192. package/lib/types/feature/table/index.d.ts.map +1 -0
  193. package/lib/types/feature/toolbar/component.d.ts +3 -1
  194. package/lib/types/feature/toolbar/component.d.ts.map +1 -1
  195. package/lib/types/feature/toolbar/index.d.ts +11 -2
  196. package/lib/types/feature/toolbar/index.d.ts.map +1 -1
  197. package/lib/types/icons/alignCenter.d.ts +2 -0
  198. package/lib/types/icons/alignCenter.d.ts.map +1 -0
  199. package/lib/types/icons/alignLeft.d.ts +2 -0
  200. package/lib/types/icons/alignLeft.d.ts.map +1 -0
  201. package/lib/types/icons/alignRight.d.ts +2 -0
  202. package/lib/types/icons/alignRight.d.ts.map +1 -0
  203. package/lib/types/icons/bold.d.ts +2 -0
  204. package/lib/types/icons/bold.d.ts.map +1 -0
  205. package/lib/types/{feature/list-item/consts.d.ts → icons/bullet.d.ts} +1 -1
  206. package/lib/types/icons/bullet.d.ts.map +1 -0
  207. package/lib/types/icons/bulletList.d.ts +2 -0
  208. package/lib/types/icons/bulletList.d.ts.map +1 -0
  209. package/lib/types/icons/caption.d.ts +2 -0
  210. package/lib/types/icons/caption.d.ts.map +1 -0
  211. package/lib/types/icons/checkBoxChecked.d.ts +2 -0
  212. package/lib/types/icons/checkBoxChecked.d.ts.map +1 -0
  213. package/lib/types/icons/checkBoxUnchecked.d.ts +2 -0
  214. package/lib/types/icons/checkBoxUnchecked.d.ts.map +1 -0
  215. package/lib/types/icons/chevronDown.d.ts +2 -0
  216. package/lib/types/icons/chevronDown.d.ts.map +1 -0
  217. package/lib/types/icons/clear.d.ts +2 -0
  218. package/lib/types/icons/clear.d.ts.map +1 -0
  219. package/lib/types/icons/code.d.ts +2 -0
  220. package/lib/types/icons/code.d.ts.map +1 -0
  221. package/lib/types/icons/confirm.d.ts +2 -0
  222. package/lib/types/icons/confirm.d.ts.map +1 -0
  223. package/lib/types/icons/divider.d.ts +2 -0
  224. package/lib/types/icons/divider.d.ts.map +1 -0
  225. package/lib/types/icons/dragHandle.d.ts +2 -0
  226. package/lib/types/icons/dragHandle.d.ts.map +1 -0
  227. package/lib/types/icons/edit.d.ts +2 -0
  228. package/lib/types/icons/edit.d.ts.map +1 -0
  229. package/lib/types/icons/h1.d.ts +2 -0
  230. package/lib/types/icons/h1.d.ts.map +1 -0
  231. package/lib/types/icons/h2.d.ts +2 -0
  232. package/lib/types/icons/h2.d.ts.map +1 -0
  233. package/lib/types/icons/h3.d.ts +2 -0
  234. package/lib/types/icons/h3.d.ts.map +1 -0
  235. package/lib/types/icons/h4.d.ts +2 -0
  236. package/lib/types/icons/h4.d.ts.map +1 -0
  237. package/lib/types/icons/h5.d.ts +2 -0
  238. package/lib/types/icons/h5.d.ts.map +1 -0
  239. package/lib/types/icons/h6.d.ts +2 -0
  240. package/lib/types/icons/h6.d.ts.map +1 -0
  241. package/lib/types/icons/image.d.ts +2 -0
  242. package/lib/types/icons/image.d.ts.map +1 -0
  243. package/lib/types/icons/index.d.ts +36 -0
  244. package/lib/types/icons/index.d.ts.map +1 -0
  245. package/lib/types/icons/italic.d.ts +2 -0
  246. package/lib/types/icons/italic.d.ts.map +1 -0
  247. package/lib/types/icons/link.d.ts +2 -0
  248. package/lib/types/icons/link.d.ts.map +1 -0
  249. package/lib/types/icons/menu.d.ts +2 -0
  250. package/lib/types/icons/menu.d.ts.map +1 -0
  251. package/lib/types/icons/orderedList.d.ts +2 -0
  252. package/lib/types/icons/orderedList.d.ts.map +1 -0
  253. package/lib/types/icons/plus.d.ts +2 -0
  254. package/lib/types/icons/plus.d.ts.map +1 -0
  255. package/lib/types/icons/quote.d.ts +2 -0
  256. package/lib/types/icons/quote.d.ts.map +1 -0
  257. package/lib/types/icons/remove.d.ts +2 -0
  258. package/lib/types/icons/remove.d.ts.map +1 -0
  259. package/lib/types/icons/search.d.ts +2 -0
  260. package/lib/types/icons/search.d.ts.map +1 -0
  261. package/lib/types/icons/strikethrough.d.ts +2 -0
  262. package/lib/types/icons/strikethrough.d.ts.map +1 -0
  263. package/lib/types/icons/table.d.ts +2 -0
  264. package/lib/types/icons/table.d.ts.map +1 -0
  265. package/lib/types/icons/text.d.ts +2 -0
  266. package/lib/types/icons/text.d.ts.map +1 -0
  267. package/lib/types/icons/todoList.d.ts +2 -0
  268. package/lib/types/icons/todoList.d.ts.map +1 -0
  269. package/lib/types/utils/index.d.ts +1 -1
  270. package/lib/types/utils/index.d.ts.map +1 -1
  271. package/package.json +9 -23
  272. package/src/core/crepe.ts +15 -9
  273. package/src/core/slice.ts +2 -2
  274. package/src/feature/block-edit/handle/component.ts +13 -29
  275. package/src/feature/block-edit/handle/index.ts +16 -17
  276. package/src/feature/block-edit/index.ts +50 -5
  277. package/src/feature/block-edit/menu/component.ts +6 -7
  278. package/src/feature/block-edit/menu/config.ts +203 -274
  279. package/src/feature/block-edit/menu/group-builder.ts +50 -0
  280. package/src/feature/block-edit/menu/index.ts +11 -8
  281. package/src/feature/block-edit/menu/utils.ts +89 -0
  282. package/src/feature/code-mirror/index.ts +27 -19
  283. package/src/feature/cursor/index.ts +3 -4
  284. package/src/feature/image-block/index.ts +34 -41
  285. package/src/feature/index.ts +23 -3
  286. package/src/feature/link-tooltip/index.ts +23 -10
  287. package/src/feature/list-item/index.ts +21 -9
  288. package/src/feature/placeholder/index.ts +11 -6
  289. package/src/feature/shared.ts +4 -1
  290. package/src/feature/table/index.ts +54 -0
  291. package/src/feature/toolbar/component.ts +29 -11
  292. package/src/feature/toolbar/index.ts +21 -9
  293. package/src/icons/alignCenter.ts +7 -0
  294. package/src/icons/alignLeft.ts +7 -0
  295. package/src/icons/alignRight.ts +7 -0
  296. package/src/icons/bold.ts +7 -0
  297. package/src/{feature/list-item/consts.ts → icons/bullet.ts} +3 -3
  298. package/src/icons/bulletList.ts +14 -0
  299. package/src/icons/caption.ts +7 -0
  300. package/src/icons/checkBoxChecked.ts +14 -0
  301. package/src/icons/checkBoxUnchecked.ts +14 -0
  302. package/src/icons/chevronDown.ts +7 -0
  303. package/src/icons/clear.ts +14 -0
  304. package/src/icons/code.ts +14 -0
  305. package/src/icons/confirm.ts +14 -0
  306. package/src/icons/divider.ts +14 -0
  307. package/src/icons/dragHandle.ts +7 -0
  308. package/src/icons/edit.ts +14 -0
  309. package/src/icons/h1.ts +14 -0
  310. package/src/icons/h2.ts +14 -0
  311. package/src/icons/h3.ts +14 -0
  312. package/src/icons/h4.ts +14 -0
  313. package/src/icons/h5.ts +14 -0
  314. package/src/icons/h6.ts +14 -0
  315. package/src/icons/image.ts +14 -0
  316. package/src/icons/index.ts +35 -0
  317. package/src/icons/italic.ts +7 -0
  318. package/src/icons/link.ts +7 -0
  319. package/src/icons/menu.ts +14 -0
  320. package/src/icons/orderedList.ts +14 -0
  321. package/src/icons/plus.ts +14 -0
  322. package/src/icons/quote.ts +14 -0
  323. package/src/icons/remove.ts +7 -0
  324. package/src/icons/search.ts +7 -0
  325. package/src/icons/strikethrough.ts +7 -0
  326. package/src/icons/table.ts +14 -0
  327. package/src/icons/text.ts +14 -0
  328. package/src/icons/todoList.ts +7 -0
  329. package/src/theme/_internal/classic-common.css +3 -2
  330. package/src/theme/common/block-edit.css +3 -1
  331. package/src/theme/common/code-mirror.css +13 -0
  332. package/src/theme/common/cursor.css +1 -1
  333. package/src/theme/common/image-block.css +2 -0
  334. package/src/theme/common/link-tooltip.css +11 -14
  335. package/src/theme/common/list-item.css +9 -0
  336. package/src/theme/common/prosemirror.css +1 -1
  337. package/src/theme/common/style.css +1 -0
  338. package/src/theme/common/table.css +204 -0
  339. package/src/theme/common/toolbar.css +14 -4
  340. package/src/theme/{classic-dark → crepe-dark}/style.css +2 -2
  341. package/src/theme/frame/style.css +28 -0
  342. package/src/theme/frame-dark/style.css +28 -0
  343. package/src/theme/nord/style.css +28 -0
  344. package/src/theme/nord-dark/style.css +28 -0
  345. package/src/utils/index.ts +1 -1
  346. package/lib/cjs/_view-TbSIR42F.js +0 -27
  347. package/lib/cjs/_view-TbSIR42F.js.map +0 -1
  348. package/lib/cjs/clsx-7JLENl8W.js +0 -62
  349. package/lib/cjs/clsx-7JLENl8W.js.map +0 -1
  350. package/lib/cjs/composed-offset-position.browser.min-FwypoGc1.js +0 -1138
  351. package/lib/cjs/composed-offset-position.browser.min-FwypoGc1.js.map +0 -1
  352. package/lib/cjs/helper-OEW-2Vxr.js +0 -9
  353. package/lib/cjs/helper-OEW-2Vxr.js.map +0 -1
  354. package/lib/cjs/index-2oxl5Zo4.js +0 -551
  355. package/lib/cjs/index-2oxl5Zo4.js.map +0 -1
  356. package/lib/cjs/index-GKolgvC5.js +0 -505
  357. package/lib/cjs/index-GKolgvC5.js.map +0 -1
  358. package/lib/cjs/index-JAqL0ybh.js +0 -55
  359. package/lib/cjs/index-JAqL0ybh.js.map +0 -1
  360. package/lib/cjs/index-Ne_pk53w.js +0 -178
  361. package/lib/cjs/index-Ne_pk53w.js.map +0 -1
  362. package/lib/cjs/index-O3vRXWIP.js +0 -199
  363. package/lib/cjs/index-O3vRXWIP.js.map +0 -1
  364. package/lib/cjs/index-OIQn1x0L.js.map +0 -1
  365. package/lib/cjs/index-PF7s7DOo.js +0 -386
  366. package/lib/cjs/index-PF7s7DOo.js.map +0 -1
  367. package/lib/cjs/index-TEjdwq--.js.map +0 -1
  368. package/lib/cjs/index-kNI3S3lF.js +0 -22477
  369. package/lib/cjs/index-kNI3S3lF.js.map +0 -1
  370. package/lib/cjs/index-kvO8ReCY.js +0 -1960
  371. package/lib/cjs/index-kvO8ReCY.js.map +0 -1
  372. package/lib/cjs/index-llNS_EuP.js.map +0 -1
  373. package/lib/cjs/index-xqKfEyRA.js.map +0 -1
  374. package/lib/cjs/meta-q8q9fHyr.js +0 -14
  375. package/lib/cjs/meta-q8q9fHyr.js.map +0 -1
  376. package/lib/cjs/schema-7d3meDfB.js +0 -74
  377. package/lib/cjs/schema-7d3meDfB.js.map +0 -1
  378. package/lib/cjs/tooltip-plugin-Mk9fRTxI.js +0 -200
  379. package/lib/cjs/tooltip-plugin-Mk9fRTxI.js.map +0 -1
  380. package/lib/esm/_view-JjtfhQ8k.js +0 -25
  381. package/lib/esm/_view-JjtfhQ8k.js.map +0 -1
  382. package/lib/esm/clsx-R7WFaNKL.js +0 -52
  383. package/lib/esm/clsx-R7WFaNKL.js.map +0 -1
  384. package/lib/esm/composed-offset-position.browser.min-Tnm31e-m.js +0 -1132
  385. package/lib/esm/composed-offset-position.browser.min-Tnm31e-m.js.map +0 -1
  386. package/lib/esm/helper-iYEjPbOY.js +0 -7
  387. package/lib/esm/helper-iYEjPbOY.js.map +0 -1
  388. package/lib/esm/index-218OjRxG.js +0 -549
  389. package/lib/esm/index-218OjRxG.js.map +0 -1
  390. package/lib/esm/index-AHPvVH4H.js +0 -197
  391. package/lib/esm/index-AHPvVH4H.js.map +0 -1
  392. package/lib/esm/index-Bg5GFp0g.js +0 -384
  393. package/lib/esm/index-Bg5GFp0g.js.map +0 -1
  394. package/lib/esm/index-JkHHp3K-.js +0 -22445
  395. package/lib/esm/index-JkHHp3K-.js.map +0 -1
  396. package/lib/esm/index-PkBZpDL4.js.map +0 -1
  397. package/lib/esm/index-TNMG6UrN.js +0 -53
  398. package/lib/esm/index-TNMG6UrN.js.map +0 -1
  399. package/lib/esm/index-VyZguCIt.js.map +0 -1
  400. package/lib/esm/index-h1arGiXv.js +0 -1958
  401. package/lib/esm/index-h1arGiXv.js.map +0 -1
  402. package/lib/esm/index-pHsvfB_I.js +0 -503
  403. package/lib/esm/index-pHsvfB_I.js.map +0 -1
  404. package/lib/esm/index-q-qE7-96.js.map +0 -1
  405. package/lib/esm/index-u8tWJbca.js +0 -176
  406. package/lib/esm/index-u8tWJbca.js.map +0 -1
  407. package/lib/esm/meta-3ZYGAGrY.js +0 -12
  408. package/lib/esm/meta-3ZYGAGrY.js.map +0 -1
  409. package/lib/esm/schema-hVsy-vme.js +0 -71
  410. package/lib/esm/schema-hVsy-vme.js.map +0 -1
  411. package/lib/esm/tooltip-plugin-vZefVSGL.js +0 -194
  412. package/lib/esm/tooltip-plugin-vZefVSGL.js.map +0 -1
  413. package/lib/types/feature/block-edit/menu/icons.d.ts +0 -14
  414. package/lib/types/feature/block-edit/menu/icons.d.ts.map +0 -1
  415. package/lib/types/feature/link-tooltip/consts.d.ts +0 -5
  416. package/lib/types/feature/link-tooltip/consts.d.ts.map +0 -1
  417. package/lib/types/feature/list-item/consts.d.ts.map +0 -1
  418. package/lib/types/feature/toolbar/consts.d.ts +0 -5
  419. package/lib/types/feature/toolbar/consts.d.ts.map +0 -1
  420. package/src/feature/block-edit/menu/icons.ts +0 -170
  421. package/src/feature/link-tooltip/consts.ts +0 -46
  422. package/src/feature/toolbar/consts.ts +0 -25
  423. /package/lib/theme/{classic → crepe}/style.css +0 -0
  424. /package/src/theme/{classic → crepe}/style.css +0 -0
@@ -0,0 +1,675 @@
1
+ 'use strict';
2
+
3
+ var block = require('@milkdown/kit/plugin/block');
4
+ var state = require('@milkdown/kit/prose/state');
5
+ var core = require('@milkdown/kit/core');
6
+ var commonmark = require('@milkdown/kit/preset/commonmark');
7
+ var slash = require('@milkdown/kit/plugin/slash');
8
+ var utils = require('@milkdown/kit/utils');
9
+ var index = require('./index-z6pe2alg.js');
10
+ var atomico = require('atomico');
11
+ var imageBlock = require('@milkdown/kit/component/image-block');
12
+ var gfm = require('@milkdown/kit/preset/gfm');
13
+ var todoList = require('./todoList-YYRQo7wG.js');
14
+ var transform = require('@milkdown/kit/prose/transform');
15
+
16
+ function clearRange(tr) {
17
+ const { $from, $to } = tr.selection;
18
+ const { pos: from } = $from;
19
+ const { pos: to } = $to;
20
+ tr = tr.deleteRange(from - $from.node().content.size, to);
21
+ return tr;
22
+ }
23
+ function setBlockType(tr, nodeType, attrs = null) {
24
+ const { from, to } = tr.selection;
25
+ return tr.setBlockType(from, to, nodeType, attrs);
26
+ }
27
+ function wrapInBlockType(tr, nodeType, attrs = null) {
28
+ const { $from, $to } = tr.selection;
29
+ const range = $from.blockRange($to);
30
+ const wrapping = range && transform.findWrapping(range, nodeType, attrs);
31
+ if (!wrapping)
32
+ return null;
33
+ return tr.wrap(range, wrapping);
34
+ }
35
+ function addBlockType(tr, nodeType, attrs = null) {
36
+ const node = nodeType.createAndFill(attrs);
37
+ if (!node)
38
+ return null;
39
+ return tr.replaceSelectionWith(node);
40
+ }
41
+ function clearContentAndSetBlockType(nodeType, attrs = null) {
42
+ return (state, dispatch) => {
43
+ if (dispatch) {
44
+ const tr = setBlockType(clearRange(state.tr), nodeType, attrs);
45
+ dispatch(tr.scrollIntoView());
46
+ }
47
+ return true;
48
+ };
49
+ }
50
+ function clearContentAndWrapInBlockType(nodeType, attrs = null) {
51
+ return (state, dispatch) => {
52
+ const tr = wrapInBlockType(clearRange(state.tr), nodeType, attrs);
53
+ if (!tr)
54
+ return false;
55
+ if (dispatch)
56
+ dispatch(tr.scrollIntoView());
57
+ return true;
58
+ };
59
+ }
60
+ function clearContentAndAddBlockType(nodeType, attrs = null) {
61
+ return (state, dispatch) => {
62
+ const tr = addBlockType(clearRange(state.tr), nodeType, attrs);
63
+ if (!tr)
64
+ return false;
65
+ if (dispatch)
66
+ dispatch(tr.scrollIntoView());
67
+ return true;
68
+ };
69
+ }
70
+
71
+ var __typeError$2 = (msg) => {
72
+ throw TypeError(msg);
73
+ };
74
+ var __accessCheck$2 = (obj, member, msg) => member.has(obj) || __typeError$2("Cannot " + msg);
75
+ var __privateGet$2 = (obj, member, getter) => (__accessCheck$2(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
76
+ var __privateAdd$2 = (obj, member, value) => member.has(obj) ? __typeError$2("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
77
+ var __privateSet$2 = (obj, member, value, setter) => (__accessCheck$2(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value);
78
+ var _groups, _getGroupInstance;
79
+ class GroupBuilder {
80
+ constructor() {
81
+ __privateAdd$2(this, _groups, []);
82
+ this.clear = () => {
83
+ __privateSet$2(this, _groups, []);
84
+ return this;
85
+ };
86
+ __privateAdd$2(this, _getGroupInstance, (group) => {
87
+ const groupInstance = {
88
+ group,
89
+ addItem: (key, item) => {
90
+ const data = { key, ...item };
91
+ group.items.push(data);
92
+ return groupInstance;
93
+ },
94
+ clear: () => {
95
+ group.items = [];
96
+ return groupInstance;
97
+ }
98
+ };
99
+ return groupInstance;
100
+ });
101
+ this.addGroup = (key, label) => {
102
+ const items = [];
103
+ const group = {
104
+ key,
105
+ label,
106
+ items
107
+ };
108
+ __privateGet$2(this, _groups).push(group);
109
+ return __privateGet$2(this, _getGroupInstance).call(this, group);
110
+ };
111
+ this.getGroup = (key) => {
112
+ const group = __privateGet$2(this, _groups).find((group2) => group2.key === key);
113
+ if (!group)
114
+ throw new Error(`Group with key ${key} not found`);
115
+ return __privateGet$2(this, _getGroupInstance).call(this, group);
116
+ };
117
+ this.build = () => {
118
+ return __privateGet$2(this, _groups);
119
+ };
120
+ }
121
+ }
122
+ _groups = new WeakMap();
123
+ _getGroupInstance = new WeakMap();
124
+
125
+ function getGroups(filter, config) {
126
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _A, _B, _C, _D, _E, _F, _G, _H, _I, _J, _K, _L, _M, _N, _O, _P, _Q, _R, _S, _T, _U, _V, _W;
127
+ const groupBuilder = new GroupBuilder();
128
+ groupBuilder.addGroup("text", (_a = config == null ? void 0 : config.slashMenuTextGroupLabel) != null ? _a : "Text").addItem("text", {
129
+ label: (_b = config == null ? void 0 : config.slashMenuTextGroupLabel) != null ? _b : "Text",
130
+ icon: (_d = (_c = config == null ? void 0 : config.slashMenuTextIcon) == null ? void 0 : _c.call(config)) != null ? _d : todoList.textIcon,
131
+ onRun: (ctx) => {
132
+ const view = ctx.get(core.editorViewCtx);
133
+ const { dispatch, state } = view;
134
+ const command = clearContentAndSetBlockType(commonmark.paragraphSchema.type(ctx));
135
+ command(state, dispatch);
136
+ }
137
+ }).addItem("h1", {
138
+ label: (_e = config == null ? void 0 : config.slashMenuH1Label) != null ? _e : "Heading 1",
139
+ icon: (_g = (_f = config == null ? void 0 : config.slashMenuH1Icon) == null ? void 0 : _f.call(config)) != null ? _g : todoList.h1Icon,
140
+ onRun: (ctx) => {
141
+ const view = ctx.get(core.editorViewCtx);
142
+ const { dispatch, state } = view;
143
+ const command = clearContentAndSetBlockType(commonmark.headingSchema.type(ctx), { level: 1 });
144
+ command(state, dispatch);
145
+ }
146
+ }).addItem("h2", {
147
+ label: (_h = config == null ? void 0 : config.slashMenuH2Label) != null ? _h : "Heading 2",
148
+ icon: (_j = (_i = config == null ? void 0 : config.slashMenuH2Icon) == null ? void 0 : _i.call(config)) != null ? _j : todoList.h2Icon,
149
+ onRun: (ctx) => {
150
+ const view = ctx.get(core.editorViewCtx);
151
+ const { dispatch, state } = view;
152
+ const command = clearContentAndSetBlockType(commonmark.headingSchema.type(ctx), { level: 2 });
153
+ command(state, dispatch);
154
+ }
155
+ }).addItem("h3", {
156
+ label: (_k = config == null ? void 0 : config.slashMenuH3Label) != null ? _k : "Heading 3",
157
+ icon: (_m = (_l = config == null ? void 0 : config.slashMenuH3Icon) == null ? void 0 : _l.call(config)) != null ? _m : todoList.h3Icon,
158
+ onRun: (ctx) => {
159
+ const view = ctx.get(core.editorViewCtx);
160
+ const { dispatch, state } = view;
161
+ const command = clearContentAndSetBlockType(commonmark.headingSchema.type(ctx), { level: 3 });
162
+ command(state, dispatch);
163
+ }
164
+ }).addItem("h4", {
165
+ label: (_n = config == null ? void 0 : config.slashMenuH4Label) != null ? _n : "Heading 4",
166
+ icon: (_p = (_o = config == null ? void 0 : config.slashMenuH4Icon) == null ? void 0 : _o.call(config)) != null ? _p : todoList.h4Icon,
167
+ onRun: (ctx) => {
168
+ const view = ctx.get(core.editorViewCtx);
169
+ const { dispatch, state } = view;
170
+ const command = clearContentAndSetBlockType(commonmark.headingSchema.type(ctx), { level: 4 });
171
+ command(state, dispatch);
172
+ }
173
+ }).addItem("h5", {
174
+ label: (_q = config == null ? void 0 : config.slashMenuH5Label) != null ? _q : "Heading 5",
175
+ icon: (_s = (_r = config == null ? void 0 : config.slashMenuH5Icon) == null ? void 0 : _r.call(config)) != null ? _s : todoList.h5Icon,
176
+ onRun: (ctx) => {
177
+ const view = ctx.get(core.editorViewCtx);
178
+ const { dispatch, state } = view;
179
+ const command = clearContentAndSetBlockType(commonmark.headingSchema.type(ctx), { level: 5 });
180
+ command(state, dispatch);
181
+ }
182
+ }).addItem("h6", {
183
+ label: (_t = config == null ? void 0 : config.slashMenuH6Label) != null ? _t : "Heading 6",
184
+ icon: (_v = (_u = config == null ? void 0 : config.slashMenuH6Icon) == null ? void 0 : _u.call(config)) != null ? _v : todoList.h6Icon,
185
+ onRun: (ctx) => {
186
+ const view = ctx.get(core.editorViewCtx);
187
+ const { dispatch, state } = view;
188
+ const command = clearContentAndSetBlockType(commonmark.headingSchema.type(ctx), { level: 6 });
189
+ command(state, dispatch);
190
+ }
191
+ }).addItem("quote", {
192
+ label: (_w = config == null ? void 0 : config.slashMenuQuoteLabel) != null ? _w : "Quote",
193
+ icon: (_y = (_x = config == null ? void 0 : config.slashMenuQuoteIcon) == null ? void 0 : _x.call(config)) != null ? _y : todoList.quoteIcon,
194
+ onRun: (ctx) => {
195
+ const view = ctx.get(core.editorViewCtx);
196
+ const { dispatch, state } = view;
197
+ const command = clearContentAndWrapInBlockType(commonmark.blockquoteSchema.type(ctx));
198
+ command(state, dispatch);
199
+ }
200
+ }).addItem("divider", {
201
+ label: (_z = config == null ? void 0 : config.slashMenuDividerLabel) != null ? _z : "Divider",
202
+ icon: (_B = (_A = config == null ? void 0 : config.slashMenuDividerIcon) == null ? void 0 : _A.call(config)) != null ? _B : todoList.dividerIcon,
203
+ onRun: (ctx) => {
204
+ const view = ctx.get(core.editorViewCtx);
205
+ const { dispatch, state } = view;
206
+ const command = clearContentAndAddBlockType(commonmark.hrSchema.type(ctx));
207
+ command(state, dispatch);
208
+ }
209
+ });
210
+ groupBuilder.addGroup("list", (_C = config == null ? void 0 : config.slashMenuListGroupLabel) != null ? _C : "List").addItem("bullet-list", {
211
+ label: (_D = config == null ? void 0 : config.slashMenuBulletListLabel) != null ? _D : "Bullet List",
212
+ icon: (_F = (_E = config == null ? void 0 : config.slashMenuBulletListIcon) == null ? void 0 : _E.call(config)) != null ? _F : todoList.bulletListIcon,
213
+ onRun: (ctx) => {
214
+ const view = ctx.get(core.editorViewCtx);
215
+ const { dispatch, state } = view;
216
+ const command = clearContentAndWrapInBlockType(commonmark.bulletListSchema.type(ctx));
217
+ command(state, dispatch);
218
+ }
219
+ }).addItem("ordered-list", {
220
+ label: (_G = config == null ? void 0 : config.slashMenuOrderedListLabel) != null ? _G : "Ordered List",
221
+ icon: (_I = (_H = config == null ? void 0 : config.slashMenuOrderedListIcon) == null ? void 0 : _H.call(config)) != null ? _I : todoList.orderedListIcon,
222
+ onRun: (ctx) => {
223
+ const view = ctx.get(core.editorViewCtx);
224
+ const { dispatch, state } = view;
225
+ const command = clearContentAndWrapInBlockType(commonmark.orderedListSchema.type(ctx));
226
+ command(state, dispatch);
227
+ }
228
+ }).addItem("todo-list", {
229
+ label: (_J = config == null ? void 0 : config.slashMenuTaskListLabel) != null ? _J : "Todo List",
230
+ icon: (_L = (_K = config == null ? void 0 : config.slashMenuTaskListIcon) == null ? void 0 : _K.call(config)) != null ? _L : todoList.todoListIcon,
231
+ onRun: (ctx) => {
232
+ const view = ctx.get(core.editorViewCtx);
233
+ const { dispatch, state } = view;
234
+ const command = clearContentAndWrapInBlockType(commonmark.listItemSchema.type(ctx), { checked: false });
235
+ command(state, dispatch);
236
+ }
237
+ });
238
+ groupBuilder.addGroup("advanced", (_M = config == null ? void 0 : config.slashMenuAdvancedGroupLabel) != null ? _M : "Advanced").addItem("image", {
239
+ label: (_N = config == null ? void 0 : config.slashMenuImageLabel) != null ? _N : "Image",
240
+ icon: (_P = (_O = config == null ? void 0 : config.slashMenuImageIcon) == null ? void 0 : _O.call(config)) != null ? _P : todoList.imageIcon,
241
+ onRun: (ctx) => {
242
+ const view = ctx.get(core.editorViewCtx);
243
+ const { dispatch, state } = view;
244
+ const command = clearContentAndAddBlockType(imageBlock.imageBlockSchema.type(ctx));
245
+ command(state, dispatch);
246
+ }
247
+ }).addItem("code", {
248
+ label: (_Q = config == null ? void 0 : config.slashMenuCodeBlockLabel) != null ? _Q : "Code",
249
+ icon: (_S = (_R = config == null ? void 0 : config.slashMenuCodeBlockIcon) == null ? void 0 : _R.call(config)) != null ? _S : todoList.codeIcon,
250
+ onRun: (ctx) => {
251
+ const view = ctx.get(core.editorViewCtx);
252
+ const { dispatch, state } = view;
253
+ const command = clearContentAndAddBlockType(commonmark.codeBlockSchema.type(ctx));
254
+ command(state, dispatch);
255
+ }
256
+ }).addItem("table", {
257
+ label: (_T = config == null ? void 0 : config.slashMenuTableLabel) != null ? _T : "Table",
258
+ icon: (_V = (_U = config == null ? void 0 : config.slashMenuTableIcon) == null ? void 0 : _U.call(config)) != null ? _V : todoList.tableIcon,
259
+ onRun: (ctx) => {
260
+ const view = ctx.get(core.editorViewCtx);
261
+ const { dispatch, state: state$1 } = view;
262
+ const tr = clearRange(state$1.tr);
263
+ const table = gfm.createTable(ctx, 3, 3);
264
+ tr.replaceSelectionWith(table);
265
+ const { from } = tr.selection;
266
+ const pos = from - table.nodeSize + 2;
267
+ dispatch(tr);
268
+ requestAnimationFrame(() => {
269
+ const selection = state.NodeSelection.create(view.state.tr.doc, pos);
270
+ dispatch(view.state.tr.setSelection(selection).scrollIntoView());
271
+ });
272
+ }
273
+ });
274
+ (_W = config == null ? void 0 : config.buildMenu) == null ? void 0 : _W.call(config, groupBuilder);
275
+ let groups = groupBuilder.build();
276
+ if (filter) {
277
+ groups = groups.map((group) => {
278
+ const items2 = group.items.filter((item) => item.label.toLowerCase().includes(filter.toLowerCase()));
279
+ return {
280
+ ...group,
281
+ items: items2
282
+ };
283
+ }).filter((group) => group.items.length > 0);
284
+ }
285
+ const items = groups.flatMap((groups2) => groups2.items);
286
+ items.forEach((item, index) => {
287
+ Object.assign(item, { index });
288
+ });
289
+ groups.reduce((acc, group) => {
290
+ const end = acc + group.items.length;
291
+ Object.assign(group, {
292
+ range: [acc, end]
293
+ });
294
+ return end;
295
+ }, 0);
296
+ return {
297
+ groups,
298
+ size: items.length
299
+ };
300
+ }
301
+
302
+ const menuComponent = ({
303
+ show,
304
+ hide,
305
+ ctx,
306
+ filter,
307
+ config
308
+ }) => {
309
+ const { groups, size } = atomico.useMemo(() => getGroups(filter, config), [filter]);
310
+ const host = atomico.useHost();
311
+ const [hoverIndex, setHoverIndex] = atomico.useState(0);
312
+ const root = atomico.useMemo(() => host.current.getRootNode(), [host]);
313
+ const prevMousePosition = atomico.useRef({ x: -999, y: -999 });
314
+ const onMouseMove = atomico.useCallback((e) => {
315
+ const prevPos = prevMousePosition.current;
316
+ if (!prevPos)
317
+ return;
318
+ const { x, y } = e;
319
+ prevPos.x = x;
320
+ prevPos.y = y;
321
+ }, []);
322
+ atomico.useEffect(() => {
323
+ if (size === 0 && show)
324
+ hide == null ? void 0 : hide();
325
+ }, [size, show]);
326
+ const onHover = atomico.useCallback((index, after) => {
327
+ setHoverIndex((prev) => {
328
+ const next = typeof index === "function" ? index(prev) : index;
329
+ after == null ? void 0 : after(next);
330
+ return next;
331
+ });
332
+ }, []);
333
+ const scrollToIndex = atomico.useCallback((index) => {
334
+ const target = host.current.querySelector(`[data-index="${index}"]`);
335
+ const scrollRoot = host.current.querySelector(".menu-groups");
336
+ if (!target || !scrollRoot)
337
+ return;
338
+ scrollRoot.scrollTop = target.offsetTop - scrollRoot.offsetTop;
339
+ }, []);
340
+ const runByIndex = atomico.useCallback((index) => {
341
+ const item = groups.flatMap((group) => group.items).at(index);
342
+ if (item && ctx)
343
+ item.onRun(ctx);
344
+ hide == null ? void 0 : hide();
345
+ }, [groups]);
346
+ const onKeydown = atomico.useCallback((e) => {
347
+ if (e.key === "Escape") {
348
+ e.preventDefault();
349
+ hide == null ? void 0 : hide();
350
+ return;
351
+ }
352
+ if (e.key === "ArrowDown") {
353
+ e.preventDefault();
354
+ return onHover((index) => index < size - 1 ? index + 1 : index, scrollToIndex);
355
+ }
356
+ if (e.key === "ArrowUp") {
357
+ e.preventDefault();
358
+ return onHover((index) => index <= 0 ? index : index - 1, scrollToIndex);
359
+ }
360
+ if (e.key === "ArrowLeft") {
361
+ e.preventDefault();
362
+ return onHover((index) => {
363
+ const group = groups.find((group2) => group2.range[0] <= index && group2.range[1] > index);
364
+ if (!group)
365
+ return index;
366
+ const prevGroup = groups[groups.indexOf(group) - 1];
367
+ if (!prevGroup)
368
+ return index;
369
+ return prevGroup.range[1] - 1;
370
+ }, scrollToIndex);
371
+ }
372
+ if (e.key === "ArrowRight") {
373
+ e.preventDefault();
374
+ return onHover((index) => {
375
+ const group = groups.find((group2) => group2.range[0] <= index && group2.range[1] > index);
376
+ if (!group)
377
+ return index;
378
+ const nextGroup = groups[groups.indexOf(group) + 1];
379
+ if (!nextGroup)
380
+ return index;
381
+ return nextGroup.range[0];
382
+ }, scrollToIndex);
383
+ }
384
+ if (e.key === "Enter") {
385
+ e.preventDefault();
386
+ runByIndex(hoverIndex);
387
+ }
388
+ }, [hide, groups, hoverIndex]);
389
+ const onMouseEnter = atomico.useCallback((index) => {
390
+ return (e) => {
391
+ const prevPos = prevMousePosition.current;
392
+ if (!prevPos)
393
+ return;
394
+ const { x, y } = e;
395
+ if (x === prevPos.x && y === prevPos.y)
396
+ return;
397
+ onHover(index);
398
+ };
399
+ }, []);
400
+ atomico.useEffect(() => {
401
+ if (show)
402
+ root.addEventListener("keydown", onKeydown, { capture: true });
403
+ else root.removeEventListener("keydown", onKeydown, { capture: true });
404
+ return () => {
405
+ root.removeEventListener("keydown", onKeydown, { capture: true });
406
+ };
407
+ }, [show, onKeydown]);
408
+ return atomico.html`
409
+ <host onmousedown=${(e) => e.preventDefault()}>
410
+ <nav class="tab-group">
411
+ <ul>
412
+ ${groups.map((group) => atomico.html`<li
413
+ key=${group.key}
414
+ onmousedown=${() => onHover(group.range[0], scrollToIndex)}
415
+ class=${hoverIndex >= group.range[0] && hoverIndex < group.range[1] ? "selected" : ""}
416
+ >
417
+ ${group.label}
418
+ </li>`)}
419
+ </ul>
420
+ </nav>
421
+ <div class="menu-groups" onmousemove=${onMouseMove}>
422
+ ${groups.map((group) => {
423
+ return atomico.html`
424
+ <div key=${group.key} class="menu-group">
425
+ <h6>${group.label}</h6>
426
+ <ul>
427
+ ${group.items.map(
428
+ (item) => atomico.html`<li
429
+ key=${item.key}
430
+ data-index=${item.index}
431
+ class=${hoverIndex === item.index ? "hover" : ""}
432
+ onmouseenter=${onMouseEnter(item.index)}
433
+ onmousedown=${() => {
434
+ var _a;
435
+ (_a = host.current.querySelector(`[data-index="${item.index}"]`)) == null ? void 0 : _a.classList.add("active");
436
+ }}
437
+ onmouseup=${() => {
438
+ var _a;
439
+ (_a = host.current.querySelector(`[data-index="${item.index}"]`)) == null ? void 0 : _a.classList.remove("active");
440
+ runByIndex(item.index);
441
+ }}
442
+ >
443
+ ${item.icon}
444
+ <span>${item.label}</span>
445
+ </li>`
446
+ )}
447
+ </ul>
448
+ </div>
449
+ `;
450
+ })}
451
+ </div>
452
+ </host>
453
+ `;
454
+ };
455
+ menuComponent.props = {
456
+ ctx: Object,
457
+ config: Object,
458
+ show: Boolean,
459
+ filter: String,
460
+ hide: Function
461
+ };
462
+ const MenuElement = atomico.c(menuComponent);
463
+
464
+ var __typeError$1 = (msg) => {
465
+ throw TypeError(msg);
466
+ };
467
+ var __accessCheck$1 = (obj, member, msg) => member.has(obj) || __typeError$1("Cannot " + msg);
468
+ var __privateGet$1 = (obj, member, getter) => (__accessCheck$1(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
469
+ var __privateAdd$1 = (obj, member, value) => member.has(obj) ? __typeError$1("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
470
+ var __privateSet$1 = (obj, member, value, setter) => (__accessCheck$1(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value);
471
+ var _content$1, _slashProvider, _programmaticallyPos;
472
+ const menu = slash.slashFactory("CREPE_MENU");
473
+ const menuAPI = utils.$ctx({
474
+ show: () => {
475
+ },
476
+ hide: () => {
477
+ }
478
+ }, "menuAPICtx");
479
+ index.defIfNotExists("milkdown-slash-menu", MenuElement);
480
+ function configureMenu(ctx, config) {
481
+ ctx.set(menu.key, {
482
+ view: (view) => new MenuView(ctx, view, config)
483
+ });
484
+ }
485
+ class MenuView {
486
+ constructor(ctx, view, config) {
487
+ __privateAdd$1(this, _content$1);
488
+ __privateAdd$1(this, _slashProvider);
489
+ __privateAdd$1(this, _programmaticallyPos, null);
490
+ this.update = (view) => {
491
+ __privateGet$1(this, _slashProvider).update(view);
492
+ };
493
+ this.show = (pos) => {
494
+ __privateSet$1(this, _programmaticallyPos, pos);
495
+ __privateGet$1(this, _content$1).filter = "";
496
+ __privateGet$1(this, _slashProvider).show();
497
+ };
498
+ this.hide = () => {
499
+ __privateSet$1(this, _programmaticallyPos, null);
500
+ __privateGet$1(this, _slashProvider).hide();
501
+ };
502
+ this.destroy = () => {
503
+ __privateGet$1(this, _slashProvider).destroy();
504
+ __privateGet$1(this, _content$1).remove();
505
+ };
506
+ __privateSet$1(this, _content$1, new MenuElement());
507
+ __privateGet$1(this, _content$1).hide = this.hide;
508
+ __privateGet$1(this, _content$1).ctx = ctx;
509
+ __privateGet$1(this, _content$1).config = config;
510
+ const self = this;
511
+ __privateSet$1(this, _slashProvider, new slash.SlashProvider({
512
+ content: __privateGet$1(this, _content$1),
513
+ debounce: 20,
514
+ shouldShow(view2) {
515
+ if (index.isInCodeBlock(view2.state.selection) || index.isInList(view2.state.selection))
516
+ return false;
517
+ const currentText = this.getContent(view2, (node) => ["paragraph", "heading"].includes(node.type.name));
518
+ if (currentText == null)
519
+ return false;
520
+ const pos = __privateGet$1(self, _programmaticallyPos);
521
+ __privateGet$1(self, _content$1).filter = currentText.startsWith("/") ? currentText.slice(1) : currentText;
522
+ if (typeof pos === "number") {
523
+ if (view2.state.doc.resolve(pos).node() !== view2.state.doc.resolve(view2.state.selection.from).node()) {
524
+ __privateSet$1(self, _programmaticallyPos, null);
525
+ return false;
526
+ }
527
+ return true;
528
+ }
529
+ if (!currentText.startsWith("/"))
530
+ return false;
531
+ return true;
532
+ },
533
+ offset: 10
534
+ }));
535
+ __privateGet$1(this, _slashProvider).onShow = () => {
536
+ __privateGet$1(this, _content$1).show = true;
537
+ };
538
+ __privateGet$1(this, _slashProvider).onHide = () => {
539
+ __privateGet$1(this, _content$1).show = false;
540
+ };
541
+ this.update(view);
542
+ ctx.set(menuAPI.key, {
543
+ show: (pos) => this.show(pos),
544
+ hide: () => this.hide()
545
+ });
546
+ }
547
+ }
548
+ _content$1 = new WeakMap();
549
+ _slashProvider = new WeakMap();
550
+ _programmaticallyPos = new WeakMap();
551
+
552
+ const blockHandleComponent = ({
553
+ onAdd,
554
+ addIcon,
555
+ handleIcon
556
+ }) => {
557
+ const ref = atomico.useRef();
558
+ atomico.useEffect(() => {
559
+ var _a;
560
+ (_a = ref.current) == null ? void 0 : _a.classList.remove("active");
561
+ });
562
+ const onMouseDown = (e) => {
563
+ var _a;
564
+ e.preventDefault();
565
+ e.stopPropagation();
566
+ (_a = ref.current) == null ? void 0 : _a.classList.add("active");
567
+ };
568
+ const onMouseUp = (e) => {
569
+ var _a;
570
+ e.preventDefault();
571
+ e.stopPropagation();
572
+ onAdd == null ? void 0 : onAdd();
573
+ (_a = ref.current) == null ? void 0 : _a.classList.remove("active");
574
+ };
575
+ return atomico.html`
576
+ <host>
577
+ <div ref=${ref} onmousedown=${onMouseDown} onmouseup=${onMouseUp} class="operation-item">
578
+ ${(addIcon == null ? void 0 : addIcon()) || todoList.plusIcon}
579
+ </div>
580
+ <div class="operation-item">
581
+ ${(handleIcon == null ? void 0 : handleIcon()) || todoList.menuIcon}
582
+ </div>
583
+ </host>
584
+ `;
585
+ };
586
+ blockHandleComponent.props = {
587
+ show: Boolean,
588
+ onAdd: Function,
589
+ addIcon: Function,
590
+ handleIcon: Function
591
+ };
592
+ const BlockHandleElement = atomico.c(blockHandleComponent);
593
+
594
+ var __typeError = (msg) => {
595
+ throw TypeError(msg);
596
+ };
597
+ var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
598
+ var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
599
+ var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
600
+ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value);
601
+ var _content, _provider, _ctx;
602
+ class BlockHandleView {
603
+ constructor(ctx, config) {
604
+ __privateAdd(this, _content);
605
+ __privateAdd(this, _provider);
606
+ __privateAdd(this, _ctx);
607
+ this.update = () => {
608
+ __privateGet(this, _provider).update();
609
+ };
610
+ this.destroy = () => {
611
+ __privateGet(this, _provider).destroy();
612
+ __privateGet(this, _content).remove();
613
+ };
614
+ this.onAdd = () => {
615
+ const ctx = __privateGet(this, _ctx);
616
+ const view = ctx.get(core.editorViewCtx);
617
+ if (!view.hasFocus())
618
+ view.focus();
619
+ const { state: state$1, dispatch } = view;
620
+ const active = __privateGet(this, _provider).active;
621
+ if (!active)
622
+ return;
623
+ const $pos = active.$pos;
624
+ const pos = $pos.pos + active.node.nodeSize;
625
+ let tr = state$1.tr.insert(pos, commonmark.paragraphSchema.type(ctx).create());
626
+ tr = tr.setSelection(state.TextSelection.near(tr.doc.resolve(pos)));
627
+ dispatch(tr.scrollIntoView());
628
+ __privateGet(this, _provider).hide();
629
+ ctx.get(menuAPI.key).show(tr.selection.from);
630
+ };
631
+ __privateSet(this, _ctx, ctx);
632
+ const content = new BlockHandleElement();
633
+ __privateSet(this, _content, content);
634
+ __privateGet(this, _content).onAdd = this.onAdd;
635
+ __privateGet(this, _content).addIcon = config == null ? void 0 : config.handleAddIcon;
636
+ __privateGet(this, _content).handleIcon = config == null ? void 0 : config.handleDragIcon;
637
+ __privateSet(this, _provider, new block.BlockProvider({
638
+ ctx,
639
+ content,
640
+ getOffset: () => 16,
641
+ getPlacement: ({ active, blockDom }) => {
642
+ let totalDescendant = 0;
643
+ active.node.descendants((node) => {
644
+ totalDescendant += node.childCount;
645
+ });
646
+ const dom = active.el;
647
+ const domRect = dom.getBoundingClientRect();
648
+ const handleRect = blockDom.getBoundingClientRect();
649
+ const style = window.getComputedStyle(dom);
650
+ const paddingTop = Number.parseInt(style.paddingTop, 10) || 0;
651
+ const paddingBottom = Number.parseInt(style.paddingBottom, 10) || 0;
652
+ const height = domRect.height - paddingTop - paddingBottom;
653
+ const handleHeight = handleRect.height;
654
+ return totalDescendant > 2 || handleHeight * 2 < height ? "left-start" : "left";
655
+ }
656
+ }));
657
+ this.update();
658
+ }
659
+ }
660
+ _content = new WeakMap();
661
+ _provider = new WeakMap();
662
+ _ctx = new WeakMap();
663
+ index.defIfNotExists("milkdown-block-handle", BlockHandleElement);
664
+ function configureBlockHandle(ctx, config) {
665
+ ctx.set(block.block.key, {
666
+ view: () => new BlockHandleView(ctx, config)
667
+ });
668
+ }
669
+
670
+ const defineFeature = (editor, config) => {
671
+ editor.config((ctx) => configureBlockHandle(ctx, config)).config((ctx) => configureMenu(ctx, config)).use(menuAPI).use(block.block).use(menu);
672
+ };
673
+
674
+ exports.defineFeature = defineFeature;
675
+ //# sourceMappingURL=index-ocxd4A-M.js.map