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