@milkdown/crepe 7.6.1 → 7.6.3

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 (116) hide show
  1. package/README.md +1 -1
  2. package/lib/cjs/{todo-list-V4JWO5-M.js → functions-Dk90yOUc.js} +16 -1
  3. package/lib/cjs/functions-Dk90yOUc.js.map +1 -0
  4. package/lib/cjs/{index-YUwSTgPK.js → index-AlHHvSR_.js} +3 -3
  5. package/lib/cjs/{index-YUwSTgPK.js.map → index-AlHHvSR_.js.map} +1 -1
  6. package/lib/cjs/{index-C4JjdSvv.js → index-BuSAwj4j.js} +3 -3
  7. package/lib/cjs/{index-C4JjdSvv.js.map → index-BuSAwj4j.js.map} +1 -1
  8. package/lib/cjs/{index-koRsjvWB.js → index-CfM-XVoy.js} +14 -28
  9. package/lib/cjs/index-CfM-XVoy.js.map +1 -0
  10. package/lib/cjs/index-CvmlYYXX.js +38 -0
  11. package/lib/cjs/{index-nDWnWxJ8.js.map → index-CvmlYYXX.js.map} +1 -1
  12. package/lib/cjs/index-D3lu92SA.js +39 -0
  13. package/lib/cjs/{index-C6EzkFZ_.js.map → index-D3lu92SA.js.map} +1 -1
  14. package/lib/cjs/{index-B4NxKjEA.js → index-D9Fk7rLS.js} +140 -108
  15. package/lib/cjs/index-D9Fk7rLS.js.map +1 -0
  16. package/lib/cjs/{index-D0OPKY6K.js → index-DQll67YS.js} +8 -8
  17. package/lib/cjs/{index-D0OPKY6K.js.map → index-DQll67YS.js.map} +1 -1
  18. package/lib/cjs/{index-BOmVuuoY.js → index-Dub20F3z.js} +3 -3
  19. package/lib/cjs/{index-BOmVuuoY.js.map → index-Dub20F3z.js.map} +1 -1
  20. package/lib/cjs/{index-DkHBuNoK.js → index-dpBsp7Eo.js} +16 -12
  21. package/lib/cjs/index-dpBsp7Eo.js.map +1 -0
  22. package/lib/cjs/{index-DnFbvtbD.js → index-gk_gJ489.js} +17 -17
  23. package/lib/cjs/index-gk_gJ489.js.map +1 -0
  24. package/lib/cjs/{index-8COAwUnB.js → index-hPk2gbSt.js} +5 -5
  25. package/lib/cjs/{index-8COAwUnB.js.map → index-hPk2gbSt.js.map} +1 -1
  26. package/lib/cjs/index-nrFkJeLW.js +26 -0
  27. package/lib/cjs/{index-6oBtF_11.js.map → index-nrFkJeLW.js.map} +1 -1
  28. package/lib/cjs/index.js +2 -1
  29. package/lib/cjs/index.js.map +1 -1
  30. package/lib/cjs/{inline-latex-CwU8Nsfj.js → inline-latex-D0G71cGk.js} +2 -2
  31. package/lib/cjs/{inline-latex-CwU8Nsfj.js.map → inline-latex-D0G71cGk.js.map} +1 -1
  32. package/lib/esm/{todo-list-B78GeGtK.js → functions-Bsik6ikd.js} +16 -2
  33. package/lib/esm/functions-Bsik6ikd.js.map +1 -0
  34. package/lib/esm/{index-BxpDIDRS.js → index-B3KiKTSt.js} +5 -5
  35. package/lib/esm/{index-BxpDIDRS.js.map → index-B3KiKTSt.js.map} +1 -1
  36. package/lib/esm/index-BFsG6770.js +36 -0
  37. package/lib/esm/{index-BOzN8fKq.js.map → index-BFsG6770.js.map} +1 -1
  38. package/lib/esm/{index-BUFg1FSH.js → index-BMNULyuq.js} +16 -13
  39. package/lib/esm/index-BMNULyuq.js.map +1 -0
  40. package/lib/esm/index-CBrOT1fW.js +37 -0
  41. package/lib/esm/{index-C8tiRHTF.js.map → index-CBrOT1fW.js.map} +1 -1
  42. package/lib/esm/{index-DroARb55.js → index-COPjfgxB.js} +15 -29
  43. package/lib/esm/index-COPjfgxB.js.map +1 -0
  44. package/lib/esm/{index-C7Xr_l-d.js → index-Cuk7cL-r.js} +5 -5
  45. package/lib/esm/{index-C7Xr_l-d.js.map → index-Cuk7cL-r.js.map} +1 -1
  46. package/lib/esm/{index-C7_YCA3P.js → index-CxJ9fxJm.js} +3 -3
  47. package/lib/esm/{index-C7_YCA3P.js.map → index-CxJ9fxJm.js.map} +1 -1
  48. package/lib/esm/{index-CD8fvrRC.js → index-D6fLMv29.js} +3 -3
  49. package/lib/esm/{index-CD8fvrRC.js.map → index-D6fLMv29.js.map} +1 -1
  50. package/lib/esm/{index-C5_dM0IB.js → index-DO_xaFxN.js} +16 -16
  51. package/lib/esm/index-DO_xaFxN.js.map +1 -0
  52. package/lib/esm/{index-WCe-Xh61.js → index-DOrkOhki.js} +3 -3
  53. package/lib/esm/{index-WCe-Xh61.js.map → index-DOrkOhki.js.map} +1 -1
  54. package/lib/esm/index-DcRgwPLd.js +24 -0
  55. package/lib/esm/{index-CEup1V8i.js.map → index-DcRgwPLd.js.map} +1 -1
  56. package/lib/esm/{index-HnGoJxjJ.js → index-Yr5XBaro.js} +138 -106
  57. package/lib/esm/index-Yr5XBaro.js.map +1 -0
  58. package/lib/esm/index.js +1 -1
  59. package/lib/esm/{inline-latex-BLd2QrJC.js → inline-latex-C9IGAXXQ.js} +2 -2
  60. package/lib/esm/{inline-latex-BLd2QrJC.js.map → inline-latex-C9IGAXXQ.js.map} +1 -1
  61. package/lib/theme/common/image-block.css +2 -1
  62. package/lib/theme/crepe/style.css +6 -5
  63. package/lib/theme/crepe-dark/style.css +6 -3
  64. package/lib/theme/frame/style.css +6 -6
  65. package/lib/theme/frame-dark/style.css +6 -4
  66. package/lib/theme/nord/style.css +6 -6
  67. package/lib/theme/nord-dark/style.css +6 -4
  68. package/lib/types/core/crepe.d.ts.map +1 -1
  69. package/lib/types/core/index.d.ts +1 -0
  70. package/lib/types/core/index.d.ts.map +1 -1
  71. package/lib/types/core/slice.d.ts +2 -0
  72. package/lib/types/core/slice.d.ts.map +1 -1
  73. package/lib/types/feature/block-edit/index.d.ts +2 -0
  74. package/lib/types/feature/block-edit/index.d.ts.map +1 -1
  75. package/lib/types/feature/block-edit/menu/component.d.ts.map +1 -1
  76. package/lib/types/feature/block-edit/menu/config.d.ts +2 -1
  77. package/lib/types/feature/block-edit/menu/config.d.ts.map +1 -1
  78. package/lib/types/feature/toolbar/component.d.ts.map +1 -1
  79. package/lib/types/icons/index.d.ts +1 -0
  80. package/lib/types/icons/index.d.ts.map +1 -1
  81. package/lib/types/index.d.ts +1 -1
  82. package/lib/types/index.d.ts.map +1 -1
  83. package/package.json +3 -3
  84. package/src/core/crepe.ts +4 -1
  85. package/src/core/index.ts +1 -0
  86. package/src/core/slice.ts +3 -0
  87. package/src/feature/block-edit/index.ts +2 -0
  88. package/src/feature/block-edit/menu/component.ts +4 -1
  89. package/src/feature/block-edit/menu/config.ts +43 -9
  90. package/src/feature/latex/block-latex.ts +1 -1
  91. package/src/feature/toolbar/component.ts +1 -1
  92. package/src/icons/index.ts +1 -0
  93. package/src/index.ts +1 -1
  94. package/src/theme/common/image-block.css +2 -1
  95. package/src/theme/crepe/style.css +6 -5
  96. package/src/theme/crepe-dark/style.css +6 -3
  97. package/src/theme/frame/style.css +6 -6
  98. package/src/theme/frame-dark/style.css +6 -4
  99. package/src/theme/nord/style.css +6 -6
  100. package/src/theme/nord-dark/style.css +6 -4
  101. package/lib/cjs/index-6oBtF_11.js +0 -26
  102. package/lib/cjs/index-B4NxKjEA.js.map +0 -1
  103. package/lib/cjs/index-C6EzkFZ_.js +0 -39
  104. package/lib/cjs/index-DkHBuNoK.js.map +0 -1
  105. package/lib/cjs/index-DnFbvtbD.js.map +0 -1
  106. package/lib/cjs/index-koRsjvWB.js.map +0 -1
  107. package/lib/cjs/index-nDWnWxJ8.js +0 -38
  108. package/lib/cjs/todo-list-V4JWO5-M.js.map +0 -1
  109. package/lib/esm/index-BOzN8fKq.js +0 -36
  110. package/lib/esm/index-BUFg1FSH.js.map +0 -1
  111. package/lib/esm/index-C5_dM0IB.js.map +0 -1
  112. package/lib/esm/index-C8tiRHTF.js +0 -37
  113. package/lib/esm/index-CEup1V8i.js +0 -24
  114. package/lib/esm/index-DroARb55.js.map +0 -1
  115. package/lib/esm/index-HnGoJxjJ.js.map +0 -1
  116. package/lib/esm/todo-list-B78GeGtK.js.map +0 -1
@@ -7,12 +7,19 @@ var commonmark = require('@milkdown/kit/preset/commonmark');
7
7
  var prose = require('@milkdown/kit/prose');
8
8
  var slash = require('@milkdown/kit/plugin/slash');
9
9
  var utils = require('@milkdown/kit/utils');
10
- var index = require('./index-YUwSTgPK.js');
10
+ var index$1 = require('./index-AlHHvSR_.js');
11
11
  var atomico = require('atomico');
12
12
  var imageBlock = require('@milkdown/kit/component/image-block');
13
13
  var gfm = require('@milkdown/kit/preset/gfm');
14
- var todoList = require('./todo-list-V4JWO5-M.js');
14
+ var functions = require('./functions-Dk90yOUc.js');
15
15
  var transform = require('@milkdown/kit/prose/transform');
16
+ var index = require('./index-dpBsp7Eo.js');
17
+ require('@milkdown/kit/plugin/history');
18
+ require('@milkdown/kit/plugin/indent');
19
+ require('@milkdown/kit/plugin/clipboard');
20
+ require('@milkdown/kit/plugin/trailing');
21
+ require('@milkdown/kit/ctx');
22
+ require('@milkdown/kit/plugin/listener');
16
23
 
17
24
  function clearRange(tr) {
18
25
  const { $from, $to } = tr.selection;
@@ -116,177 +123,199 @@ class GroupBuilder {
116
123
  _groups = new WeakMap();
117
124
  _getGroupInstance = new WeakMap();
118
125
 
119
- function getGroups(filter, config) {
120
- 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;
126
+ function getGroups(filter, config, ctx) {
127
+ 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, _X, _Y, _Z;
128
+ const flags = ctx == null ? void 0 : ctx.get(index.FeaturesCtx);
129
+ const isLatexEnabled = flags == null ? void 0 : flags.includes(index.CrepeFeature.Latex);
121
130
  const groupBuilder = new GroupBuilder();
122
- groupBuilder.addGroup("text", (_a = config == null ? undefined : config.slashMenuTextGroupLabel) != null ? _a : "Text").addItem("text", {
123
- label: (_b = config == null ? undefined : config.slashMenuTextGroupLabel) != null ? _b : "Text",
124
- icon: (_d = (_c = config == null ? undefined : config.slashMenuTextIcon) == null ? undefined : _c.call(config)) != null ? _d : todoList.textIcon,
125
- onRun: (ctx) => {
126
- const view = ctx.get(core.editorViewCtx);
131
+ groupBuilder.addGroup("text", (_a = config == null ? void 0 : config.slashMenuTextGroupLabel) != null ? _a : "Text").addItem("text", {
132
+ label: (_b = config == null ? void 0 : config.slashMenuTextGroupLabel) != null ? _b : "Text",
133
+ icon: (_d = (_c = config == null ? void 0 : config.slashMenuTextIcon) == null ? void 0 : _c.call(config)) != null ? _d : functions.textIcon,
134
+ onRun: (ctx2) => {
135
+ const view = ctx2.get(core.editorViewCtx);
127
136
  const { dispatch, state } = view;
128
- const command = clearContentAndSetBlockType(commonmark.paragraphSchema.type(ctx));
137
+ const command = clearContentAndSetBlockType(commonmark.paragraphSchema.type(ctx2));
129
138
  command(state, dispatch);
130
139
  }
131
140
  }).addItem("h1", {
132
- label: (_e = config == null ? undefined : config.slashMenuH1Label) != null ? _e : "Heading 1",
133
- icon: (_g = (_f = config == null ? undefined : config.slashMenuH1Icon) == null ? undefined : _f.call(config)) != null ? _g : todoList.h1Icon,
134
- onRun: (ctx) => {
135
- const view = ctx.get(core.editorViewCtx);
141
+ label: (_e = config == null ? void 0 : config.slashMenuH1Label) != null ? _e : "Heading 1",
142
+ icon: (_g = (_f = config == null ? void 0 : config.slashMenuH1Icon) == null ? void 0 : _f.call(config)) != null ? _g : functions.h1Icon,
143
+ onRun: (ctx2) => {
144
+ const view = ctx2.get(core.editorViewCtx);
136
145
  const { dispatch, state } = view;
137
- const command = clearContentAndSetBlockType(commonmark.headingSchema.type(ctx), {
146
+ const command = clearContentAndSetBlockType(commonmark.headingSchema.type(ctx2), {
138
147
  level: 1
139
148
  });
140
149
  command(state, dispatch);
141
150
  }
142
151
  }).addItem("h2", {
143
- label: (_h = config == null ? undefined : config.slashMenuH2Label) != null ? _h : "Heading 2",
144
- icon: (_j = (_i = config == null ? undefined : config.slashMenuH2Icon) == null ? undefined : _i.call(config)) != null ? _j : todoList.h2Icon,
145
- onRun: (ctx) => {
146
- const view = ctx.get(core.editorViewCtx);
152
+ label: (_h = config == null ? void 0 : config.slashMenuH2Label) != null ? _h : "Heading 2",
153
+ icon: (_j = (_i = config == null ? void 0 : config.slashMenuH2Icon) == null ? void 0 : _i.call(config)) != null ? _j : functions.h2Icon,
154
+ onRun: (ctx2) => {
155
+ const view = ctx2.get(core.editorViewCtx);
147
156
  const { dispatch, state } = view;
148
- const command = clearContentAndSetBlockType(commonmark.headingSchema.type(ctx), {
157
+ const command = clearContentAndSetBlockType(commonmark.headingSchema.type(ctx2), {
149
158
  level: 2
150
159
  });
151
160
  command(state, dispatch);
152
161
  }
153
162
  }).addItem("h3", {
154
- label: (_k = config == null ? undefined : config.slashMenuH3Label) != null ? _k : "Heading 3",
155
- icon: (_m = (_l = config == null ? undefined : config.slashMenuH3Icon) == null ? undefined : _l.call(config)) != null ? _m : todoList.h3Icon,
156
- onRun: (ctx) => {
157
- const view = ctx.get(core.editorViewCtx);
163
+ label: (_k = config == null ? void 0 : config.slashMenuH3Label) != null ? _k : "Heading 3",
164
+ icon: (_m = (_l = config == null ? void 0 : config.slashMenuH3Icon) == null ? void 0 : _l.call(config)) != null ? _m : functions.h3Icon,
165
+ onRun: (ctx2) => {
166
+ const view = ctx2.get(core.editorViewCtx);
158
167
  const { dispatch, state } = view;
159
- const command = clearContentAndSetBlockType(commonmark.headingSchema.type(ctx), {
168
+ const command = clearContentAndSetBlockType(commonmark.headingSchema.type(ctx2), {
160
169
  level: 3
161
170
  });
162
171
  command(state, dispatch);
163
172
  }
164
173
  }).addItem("h4", {
165
- label: (_n = config == null ? undefined : config.slashMenuH4Label) != null ? _n : "Heading 4",
166
- icon: (_p = (_o = config == null ? undefined : config.slashMenuH4Icon) == null ? undefined : _o.call(config)) != null ? _p : todoList.h4Icon,
167
- onRun: (ctx) => {
168
- const view = ctx.get(core.editorViewCtx);
174
+ label: (_n = config == null ? void 0 : config.slashMenuH4Label) != null ? _n : "Heading 4",
175
+ icon: (_p = (_o = config == null ? void 0 : config.slashMenuH4Icon) == null ? void 0 : _o.call(config)) != null ? _p : functions.h4Icon,
176
+ onRun: (ctx2) => {
177
+ const view = ctx2.get(core.editorViewCtx);
169
178
  const { dispatch, state } = view;
170
- const command = clearContentAndSetBlockType(commonmark.headingSchema.type(ctx), {
179
+ const command = clearContentAndSetBlockType(commonmark.headingSchema.type(ctx2), {
171
180
  level: 4
172
181
  });
173
182
  command(state, dispatch);
174
183
  }
175
184
  }).addItem("h5", {
176
- label: (_q = config == null ? undefined : config.slashMenuH5Label) != null ? _q : "Heading 5",
177
- icon: (_s = (_r = config == null ? undefined : config.slashMenuH5Icon) == null ? undefined : _r.call(config)) != null ? _s : todoList.h5Icon,
178
- onRun: (ctx) => {
179
- const view = ctx.get(core.editorViewCtx);
185
+ label: (_q = config == null ? void 0 : config.slashMenuH5Label) != null ? _q : "Heading 5",
186
+ icon: (_s = (_r = config == null ? void 0 : config.slashMenuH5Icon) == null ? void 0 : _r.call(config)) != null ? _s : functions.h5Icon,
187
+ onRun: (ctx2) => {
188
+ const view = ctx2.get(core.editorViewCtx);
180
189
  const { dispatch, state } = view;
181
- const command = clearContentAndSetBlockType(commonmark.headingSchema.type(ctx), {
190
+ const command = clearContentAndSetBlockType(commonmark.headingSchema.type(ctx2), {
182
191
  level: 5
183
192
  });
184
193
  command(state, dispatch);
185
194
  }
186
195
  }).addItem("h6", {
187
- label: (_t = config == null ? undefined : config.slashMenuH6Label) != null ? _t : "Heading 6",
188
- icon: (_v = (_u = config == null ? undefined : config.slashMenuH6Icon) == null ? undefined : _u.call(config)) != null ? _v : todoList.h6Icon,
189
- onRun: (ctx) => {
190
- const view = ctx.get(core.editorViewCtx);
196
+ label: (_t = config == null ? void 0 : config.slashMenuH6Label) != null ? _t : "Heading 6",
197
+ icon: (_v = (_u = config == null ? void 0 : config.slashMenuH6Icon) == null ? void 0 : _u.call(config)) != null ? _v : functions.h6Icon,
198
+ onRun: (ctx2) => {
199
+ const view = ctx2.get(core.editorViewCtx);
191
200
  const { dispatch, state } = view;
192
- const command = clearContentAndSetBlockType(commonmark.headingSchema.type(ctx), {
201
+ const command = clearContentAndSetBlockType(commonmark.headingSchema.type(ctx2), {
193
202
  level: 6
194
203
  });
195
204
  command(state, dispatch);
196
205
  }
197
206
  }).addItem("quote", {
198
- label: (_w = config == null ? undefined : config.slashMenuQuoteLabel) != null ? _w : "Quote",
199
- icon: (_y = (_x = config == null ? undefined : config.slashMenuQuoteIcon) == null ? undefined : _x.call(config)) != null ? _y : todoList.quoteIcon,
200
- onRun: (ctx) => {
201
- const view = ctx.get(core.editorViewCtx);
207
+ label: (_w = config == null ? void 0 : config.slashMenuQuoteLabel) != null ? _w : "Quote",
208
+ icon: (_y = (_x = config == null ? void 0 : config.slashMenuQuoteIcon) == null ? void 0 : _x.call(config)) != null ? _y : functions.quoteIcon,
209
+ onRun: (ctx2) => {
210
+ const view = ctx2.get(core.editorViewCtx);
202
211
  const { dispatch, state } = view;
203
212
  const command = clearContentAndWrapInBlockType(
204
- commonmark.blockquoteSchema.type(ctx)
213
+ commonmark.blockquoteSchema.type(ctx2)
205
214
  );
206
215
  command(state, dispatch);
207
216
  }
208
217
  }).addItem("divider", {
209
- label: (_z = config == null ? undefined : config.slashMenuDividerLabel) != null ? _z : "Divider",
210
- icon: (_B = (_A = config == null ? undefined : config.slashMenuDividerIcon) == null ? undefined : _A.call(config)) != null ? _B : todoList.dividerIcon,
211
- onRun: (ctx) => {
212
- const view = ctx.get(core.editorViewCtx);
218
+ label: (_z = config == null ? void 0 : config.slashMenuDividerLabel) != null ? _z : "Divider",
219
+ icon: (_B = (_A = config == null ? void 0 : config.slashMenuDividerIcon) == null ? void 0 : _A.call(config)) != null ? _B : functions.dividerIcon,
220
+ onRun: (ctx2) => {
221
+ const view = ctx2.get(core.editorViewCtx);
213
222
  const { dispatch, state } = view;
214
- const command = clearContentAndAddBlockType(commonmark.hrSchema.type(ctx));
223
+ const command = clearContentAndAddBlockType(commonmark.hrSchema.type(ctx2));
215
224
  command(state, dispatch);
216
225
  }
217
226
  });
218
- groupBuilder.addGroup("list", (_C = config == null ? undefined : config.slashMenuListGroupLabel) != null ? _C : "List").addItem("bullet-list", {
219
- label: (_D = config == null ? undefined : config.slashMenuBulletListLabel) != null ? _D : "Bullet List",
220
- icon: (_F = (_E = config == null ? undefined : config.slashMenuBulletListIcon) == null ? undefined : _E.call(config)) != null ? _F : todoList.bulletListIcon,
221
- onRun: (ctx) => {
222
- const view = ctx.get(core.editorViewCtx);
227
+ groupBuilder.addGroup("list", (_C = config == null ? void 0 : config.slashMenuListGroupLabel) != null ? _C : "List").addItem("bullet-list", {
228
+ label: (_D = config == null ? void 0 : config.slashMenuBulletListLabel) != null ? _D : "Bullet List",
229
+ icon: (_F = (_E = config == null ? void 0 : config.slashMenuBulletListIcon) == null ? void 0 : _E.call(config)) != null ? _F : functions.bulletListIcon,
230
+ onRun: (ctx2) => {
231
+ const view = ctx2.get(core.editorViewCtx);
223
232
  const { dispatch, state } = view;
224
233
  const command = clearContentAndWrapInBlockType(
225
- commonmark.bulletListSchema.type(ctx)
234
+ commonmark.bulletListSchema.type(ctx2)
226
235
  );
227
236
  command(state, dispatch);
228
237
  }
229
238
  }).addItem("ordered-list", {
230
- label: (_G = config == null ? undefined : config.slashMenuOrderedListLabel) != null ? _G : "Ordered List",
231
- icon: (_I = (_H = config == null ? undefined : config.slashMenuOrderedListIcon) == null ? undefined : _H.call(config)) != null ? _I : todoList.orderedListIcon,
232
- onRun: (ctx) => {
233
- const view = ctx.get(core.editorViewCtx);
239
+ label: (_G = config == null ? void 0 : config.slashMenuOrderedListLabel) != null ? _G : "Ordered List",
240
+ icon: (_I = (_H = config == null ? void 0 : config.slashMenuOrderedListIcon) == null ? void 0 : _H.call(config)) != null ? _I : functions.orderedListIcon,
241
+ onRun: (ctx2) => {
242
+ const view = ctx2.get(core.editorViewCtx);
234
243
  const { dispatch, state } = view;
235
244
  const command = clearContentAndWrapInBlockType(
236
- commonmark.orderedListSchema.type(ctx)
245
+ commonmark.orderedListSchema.type(ctx2)
237
246
  );
238
247
  command(state, dispatch);
239
248
  }
240
249
  }).addItem("todo-list", {
241
- label: (_J = config == null ? undefined : config.slashMenuTaskListLabel) != null ? _J : "Todo List",
242
- icon: (_L = (_K = config == null ? undefined : config.slashMenuTaskListIcon) == null ? undefined : _K.call(config)) != null ? _L : todoList.todoListIcon,
243
- onRun: (ctx) => {
244
- const view = ctx.get(core.editorViewCtx);
250
+ label: (_J = config == null ? void 0 : config.slashMenuTaskListLabel) != null ? _J : "Todo List",
251
+ icon: (_L = (_K = config == null ? void 0 : config.slashMenuTaskListIcon) == null ? void 0 : _K.call(config)) != null ? _L : functions.todoListIcon,
252
+ onRun: (ctx2) => {
253
+ const view = ctx2.get(core.editorViewCtx);
245
254
  const { dispatch, state } = view;
246
255
  const command = clearContentAndWrapInBlockType(
247
- commonmark.listItemSchema.type(ctx),
256
+ commonmark.listItemSchema.type(ctx2),
248
257
  { checked: false }
249
258
  );
250
259
  command(state, dispatch);
251
260
  }
252
261
  });
253
- groupBuilder.addGroup("advanced", (_M = config == null ? undefined : config.slashMenuAdvancedGroupLabel) != null ? _M : "Advanced").addItem("image", {
254
- label: (_N = config == null ? undefined : config.slashMenuImageLabel) != null ? _N : "Image",
255
- icon: (_P = (_O = config == null ? undefined : config.slashMenuImageIcon) == null ? undefined : _O.call(config)) != null ? _P : todoList.imageIcon,
256
- onRun: (ctx) => {
257
- const view = ctx.get(core.editorViewCtx);
262
+ const advancedGroup = groupBuilder.addGroup("advanced", (_M = config == null ? void 0 : config.slashMenuAdvancedGroupLabel) != null ? _M : "Advanced").addItem("image", {
263
+ label: (_N = config == null ? void 0 : config.slashMenuImageLabel) != null ? _N : "Image",
264
+ icon: (_P = (_O = config == null ? void 0 : config.slashMenuImageIcon) == null ? void 0 : _O.call(config)) != null ? _P : functions.imageIcon,
265
+ onRun: (ctx2) => {
266
+ const view = ctx2.get(core.editorViewCtx);
258
267
  const { dispatch, state } = view;
259
- const command = clearContentAndAddBlockType(imageBlock.imageBlockSchema.type(ctx));
268
+ const command = clearContentAndAddBlockType(imageBlock.imageBlockSchema.type(ctx2));
260
269
  command(state, dispatch);
261
270
  }
262
271
  }).addItem("code", {
263
- label: (_Q = config == null ? undefined : config.slashMenuCodeBlockLabel) != null ? _Q : "Code",
264
- icon: (_S = (_R = config == null ? undefined : config.slashMenuCodeBlockIcon) == null ? undefined : _R.call(config)) != null ? _S : todoList.codeIcon,
265
- onRun: (ctx) => {
266
- const view = ctx.get(core.editorViewCtx);
272
+ label: (_Q = config == null ? void 0 : config.slashMenuCodeBlockLabel) != null ? _Q : "Code",
273
+ icon: (_S = (_R = config == null ? void 0 : config.slashMenuCodeBlockIcon) == null ? void 0 : _R.call(config)) != null ? _S : functions.codeIcon,
274
+ onRun: (ctx2) => {
275
+ const view = ctx2.get(core.editorViewCtx);
267
276
  const { dispatch, state } = view;
268
- const command = clearContentAndAddBlockType(commonmark.codeBlockSchema.type(ctx));
277
+ const command = clearContentAndAddBlockType(commonmark.codeBlockSchema.type(ctx2));
269
278
  command(state, dispatch);
270
279
  }
271
280
  }).addItem("table", {
272
- label: (_T = config == null ? undefined : config.slashMenuTableLabel) != null ? _T : "Table",
273
- icon: (_V = (_U = config == null ? undefined : config.slashMenuTableIcon) == null ? undefined : _U.call(config)) != null ? _V : todoList.tableIcon,
274
- onRun: (ctx) => {
275
- const view = ctx.get(core.editorViewCtx);
281
+ label: (_T = config == null ? void 0 : config.slashMenuTableLabel) != null ? _T : "Table",
282
+ icon: (_V = (_U = config == null ? void 0 : config.slashMenuTableIcon) == null ? void 0 : _U.call(config)) != null ? _V : functions.tableIcon,
283
+ onRun: (ctx2) => {
284
+ const view = ctx2.get(core.editorViewCtx);
276
285
  const { dispatch, state: state$1 } = view;
277
- const tr = clearRange(state$1.tr);
278
- const table = gfm.createTable(ctx, 3, 3);
279
- tr.replaceSelectionWith(table);
280
- const { from } = tr.selection;
281
- const pos = from - table.nodeSize + 2;
286
+ let { tr } = state$1;
287
+ tr = clearRange(tr);
288
+ const from = tr.selection.from;
289
+ const table = gfm.createTable(ctx2, 3, 3);
290
+ tr = tr.replaceSelectionWith(table);
282
291
  dispatch(tr);
283
292
  requestAnimationFrame(() => {
284
- const selection = state.NodeSelection.create(view.state.tr.doc, pos);
285
- dispatch(view.state.tr.setSelection(selection).scrollIntoView());
293
+ const docSize = view.state.doc.content.size;
294
+ const $pos = view.state.doc.resolve(
295
+ from > docSize ? docSize : from < 0 ? 0 : from
296
+ );
297
+ const selection = state.TextSelection.near($pos);
298
+ const tr2 = view.state.tr;
299
+ tr2.setSelection(selection);
300
+ dispatch(tr2.scrollIntoView());
286
301
  });
287
302
  }
288
303
  });
289
- (_W = config == null ? undefined : config.buildMenu) == null ? undefined : _W.call(config, groupBuilder);
304
+ if (isLatexEnabled) {
305
+ advancedGroup.addItem("math", {
306
+ label: (_W = config == null ? void 0 : config.slashMenuMathLabel) != null ? _W : "Math",
307
+ icon: (_Y = (_X = config == null ? void 0 : config.slashMenuMathIcon) == null ? void 0 : _X.call(config)) != null ? _Y : functions.functionsIcon,
308
+ onRun: (ctx2) => {
309
+ const view = ctx2.get(core.editorViewCtx);
310
+ const { dispatch, state } = view;
311
+ const command = clearContentAndAddBlockType(commonmark.codeBlockSchema.type(ctx2), {
312
+ language: "LaTex"
313
+ });
314
+ command(state, dispatch);
315
+ }
316
+ });
317
+ }
318
+ (_Z = config == null ? void 0 : config.buildMenu) == null ? void 0 : _Z.call(config, groupBuilder);
290
319
  let groups = groupBuilder.build();
291
320
  if (filter) {
292
321
  groups = groups.map((group) => {
@@ -323,7 +352,10 @@ const menuComponent = ({
323
352
  filter,
324
353
  config
325
354
  }) => {
326
- const { groups, size } = atomico.useMemo(() => getGroups(filter, config), [filter]);
355
+ const { groups, size } = atomico.useMemo(
356
+ () => getGroups(filter, config, ctx),
357
+ [filter]
358
+ );
327
359
  const host = atomico.useHost();
328
360
  const [hoverIndex, setHoverIndex] = atomico.useState(0);
329
361
  const root = atomico.useMemo(() => host.current.getRootNode(), [host]);
@@ -336,14 +368,14 @@ const menuComponent = ({
336
368
  prevPos.y = y;
337
369
  }, []);
338
370
  atomico.useEffect(() => {
339
- if (size === 0 && show) hide == null ? undefined : hide();
371
+ if (size === 0 && show) hide == null ? void 0 : hide();
340
372
  else if (hoverIndex >= size) setHoverIndex(0);
341
373
  }, [size, show]);
342
374
  const onHover = atomico.useCallback(
343
375
  (index, after) => {
344
376
  setHoverIndex((prev) => {
345
377
  const next = typeof index === "function" ? index(prev) : index;
346
- after == null ? undefined : after(next);
378
+ after == null ? void 0 : after(next);
347
379
  return next;
348
380
  });
349
381
  },
@@ -361,7 +393,7 @@ const menuComponent = ({
361
393
  (index) => {
362
394
  const item = groups.flatMap((group) => group.items).at(index);
363
395
  if (item && ctx) item.onRun(ctx);
364
- hide == null ? undefined : hide();
396
+ hide == null ? void 0 : hide();
365
397
  },
366
398
  [groups]
367
399
  );
@@ -369,7 +401,7 @@ const menuComponent = ({
369
401
  (e) => {
370
402
  if (e.key === "Escape") {
371
403
  e.preventDefault();
372
- hide == null ? undefined : hide();
404
+ hide == null ? void 0 : hide();
373
405
  return;
374
406
  }
375
407
  if (e.key === "ArrowDown") {
@@ -462,11 +494,11 @@ const menuComponent = ({
462
494
  onmouseenter=${onMouseEnter(item.index)}
463
495
  onmousedown=${() => {
464
496
  var _a;
465
- (_a = host.current.querySelector(`[data-index="${item.index}"]`)) == null ? undefined : _a.classList.add("active");
497
+ (_a = host.current.querySelector(`[data-index="${item.index}"]`)) == null ? void 0 : _a.classList.add("active");
466
498
  }}
467
499
  onmouseup=${() => {
468
500
  var _a;
469
- (_a = host.current.querySelector(`[data-index="${item.index}"]`)) == null ? undefined : _a.classList.remove("active");
501
+ (_a = host.current.querySelector(`[data-index="${item.index}"]`)) == null ? void 0 : _a.classList.remove("active");
470
502
  runByIndex(item.index);
471
503
  }}
472
504
  >
@@ -509,7 +541,7 @@ const menuAPI = utils.$ctx(
509
541
  },
510
542
  "menuAPICtx"
511
543
  );
512
- index.defIfNotExists("milkdown-slash-menu", MenuElement);
544
+ index$1.defIfNotExists("milkdown-slash-menu", MenuElement);
513
545
  function configureMenu(ctx, config) {
514
546
  ctx.set(menu.key, {
515
547
  view: (view) => new MenuView(ctx, view, config)
@@ -545,7 +577,7 @@ class MenuView {
545
577
  content: __privateGet$1(this, _content$1),
546
578
  debounce: 20,
547
579
  shouldShow(view2) {
548
- if (index.isInCodeBlock(view2.state.selection) || index.isInList(view2.state.selection))
580
+ if (index$1.isInCodeBlock(view2.state.selection) || index$1.isInList(view2.state.selection))
549
581
  return false;
550
582
  const currentText = this.getContent(
551
583
  view2,
@@ -591,20 +623,20 @@ const blockHandleComponent = ({
591
623
  const ref = atomico.useRef();
592
624
  atomico.useEffect(() => {
593
625
  var _a;
594
- (_a = ref.current) == null ? undefined : _a.classList.remove("active");
626
+ (_a = ref.current) == null ? void 0 : _a.classList.remove("active");
595
627
  });
596
628
  const onMouseDown = (e) => {
597
629
  var _a;
598
630
  e.preventDefault();
599
631
  e.stopPropagation();
600
- (_a = ref.current) == null ? undefined : _a.classList.add("active");
632
+ (_a = ref.current) == null ? void 0 : _a.classList.add("active");
601
633
  };
602
634
  const onMouseUp = (e) => {
603
635
  var _a;
604
636
  e.preventDefault();
605
637
  e.stopPropagation();
606
- onAdd == null ? undefined : onAdd();
607
- (_a = ref.current) == null ? undefined : _a.classList.remove("active");
638
+ onAdd == null ? void 0 : onAdd();
639
+ (_a = ref.current) == null ? void 0 : _a.classList.remove("active");
608
640
  };
609
641
  return atomico.html`
610
642
  <host>
@@ -614,9 +646,9 @@ const blockHandleComponent = ({
614
646
  onmouseup=${onMouseUp}
615
647
  class="operation-item"
616
648
  >
617
- ${(addIcon == null ? undefined : addIcon()) || todoList.plusIcon}
649
+ ${(addIcon == null ? void 0 : addIcon()) || functions.plusIcon}
618
650
  </div>
619
- <div class="operation-item">${(handleIcon == null ? undefined : handleIcon()) || todoList.menuIcon}</div>
651
+ <div class="operation-item">${(handleIcon == null ? void 0 : handleIcon()) || functions.menuIcon}</div>
620
652
  </host>
621
653
  `;
622
654
  };
@@ -667,8 +699,8 @@ class BlockHandleView {
667
699
  const content = new BlockHandleElement();
668
700
  __privateSet(this, _content, content);
669
701
  __privateGet(this, _content).onAdd = this.onAdd;
670
- __privateGet(this, _content).addIcon = config == null ? undefined : config.handleAddIcon;
671
- __privateGet(this, _content).handleIcon = config == null ? undefined : config.handleDragIcon;
702
+ __privateGet(this, _content).addIcon = config == null ? void 0 : config.handleAddIcon;
703
+ __privateGet(this, _content).handleIcon = config == null ? void 0 : config.handleDragIcon;
672
704
  __privateSet(this, _provider, new block.BlockProvider({
673
705
  ctx,
674
706
  content,
@@ -696,7 +728,7 @@ class BlockHandleView {
696
728
  _content = new WeakMap();
697
729
  _provider = new WeakMap();
698
730
  _ctx = new WeakMap();
699
- index.defIfNotExists("milkdown-block-handle", BlockHandleElement);
731
+ index$1.defIfNotExists("milkdown-block-handle", BlockHandleElement);
700
732
  function configureBlockHandle(ctx, config) {
701
733
  ctx.set(block.blockConfig.key, {
702
734
  filterNodes: (pos) => {
@@ -717,4 +749,4 @@ const defineFeature = (editor, config) => {
717
749
  };
718
750
 
719
751
  exports.defineFeature = defineFeature;
720
- //# sourceMappingURL=index-B4NxKjEA.js.map
752
+ //# sourceMappingURL=index-D9Fk7rLS.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-D9Fk7rLS.js","sources":["../../src/feature/block-edit/menu/utils.ts","../../src/feature/block-edit/menu/group-builder.ts","../../src/feature/block-edit/menu/config.ts","../../src/feature/block-edit/menu/component.ts","../../src/feature/block-edit/menu/index.ts","../../src/feature/block-edit/handle/component.ts","../../src/feature/block-edit/handle/index.ts","../../src/feature/block-edit/index.ts"],"sourcesContent":["import type { html } from 'atomico'\nimport type { Ctx } from '@milkdown/kit/ctx'\nimport type { Command, Transaction } from '@milkdown/kit/prose/state'\nimport type { Attrs, NodeType } from '@milkdown/kit/prose/model'\nimport { findWrapping } from '@milkdown/kit/prose/transform'\n\nexport interface MenuItem {\n index: number\n key: string\n label: string\n icon: ReturnType<typeof html>\n onRun: (ctx: Ctx) => void\n}\n\ntype WithRange<T, HasIndex extends true | false = true> = HasIndex extends true\n ? T & { range: [start: number, end: number] }\n : T\n\nexport type MenuItemGroup<HasIndex extends true | false = true> = WithRange<\n {\n key: string\n label: string\n items: HasIndex extends true ? MenuItem[] : Omit<MenuItem, 'index'>[]\n },\n HasIndex\n>\n\nexport function clearRange(tr: Transaction) {\n const { $from, $to } = tr.selection\n const { pos: from } = $from\n const { pos: to } = $to\n tr = tr.deleteRange(from - $from.node().content.size, to)\n return tr\n}\n\nexport function setBlockType(\n tr: Transaction,\n nodeType: NodeType,\n attrs: Attrs | null = null\n) {\n const { from, to } = tr.selection\n return tr.setBlockType(from, to, nodeType, attrs)\n}\n\nexport function wrapInBlockType(\n tr: Transaction,\n nodeType: NodeType,\n attrs: Attrs | null = null\n) {\n const { $from, $to } = tr.selection\n\n const range = $from.blockRange($to)\n const wrapping = range && findWrapping(range, nodeType, attrs)\n if (!wrapping) return null\n\n return tr.wrap(range, wrapping)\n}\n\nexport function addBlockType(\n tr: Transaction,\n nodeType: NodeType,\n attrs: Attrs | null = null\n) {\n const node = nodeType.createAndFill(attrs)\n if (!node) return null\n\n return tr.replaceSelectionWith(node)\n}\n\nexport function clearContentAndSetBlockType(\n nodeType: NodeType,\n attrs: Attrs | null = null\n): Command {\n return (state, dispatch) => {\n if (dispatch) {\n const tr = setBlockType(clearRange(state.tr), nodeType, attrs)\n dispatch(tr.scrollIntoView())\n }\n return true\n }\n}\n\nexport function clearContentAndWrapInBlockType(\n nodeType: NodeType,\n attrs: Attrs | null = null\n): Command {\n return (state, dispatch) => {\n const tr = wrapInBlockType(clearRange(state.tr), nodeType, attrs)\n if (!tr) return false\n\n if (dispatch) dispatch(tr.scrollIntoView())\n\n return true\n }\n}\n\nexport function clearContentAndAddBlockType(\n nodeType: NodeType,\n attrs: Attrs | null = null\n): Command {\n return (state, dispatch) => {\n const tr = addBlockType(clearRange(state.tr), nodeType, attrs)\n if (!tr) return false\n\n if (dispatch) dispatch(tr.scrollIntoView())\n\n return true\n }\n}\n","import type { MenuItem, MenuItemGroup } from './utils'\n\nexport class GroupBuilder {\n #groups: MenuItemGroup<false>[] = []\n\n clear = () => {\n this.#groups = []\n return this\n }\n\n #getGroupInstance = (group: MenuItemGroup<false>) => {\n const groupInstance = {\n group,\n addItem: (key: string, item: Omit<MenuItem, 'key' | 'index'>) => {\n const data = { key, ...item }\n group.items.push(data)\n return groupInstance\n },\n clear: () => {\n group.items = []\n return groupInstance\n },\n }\n return groupInstance\n }\n\n addGroup = (key: string, label: string) => {\n const items: Omit<MenuItem, 'index'>[] = []\n const group: MenuItemGroup<false> = {\n key,\n label,\n items,\n }\n this.#groups.push(group)\n\n return this.#getGroupInstance(group)\n }\n\n getGroup = (key: string) => {\n const group = this.#groups.find((group) => group.key === key)\n if (!group) throw new Error(`Group with key ${key} not found`)\n\n return this.#getGroupInstance(group)\n }\n\n build = () => {\n return this.#groups\n }\n}\n","import { editorViewCtx } from '@milkdown/kit/core'\nimport {\n blockquoteSchema,\n bulletListSchema,\n codeBlockSchema,\n headingSchema,\n hrSchema,\n listItemSchema,\n orderedListSchema,\n paragraphSchema,\n} from '@milkdown/kit/preset/commonmark'\nimport { TextSelection } from '@milkdown/kit/prose/state'\nimport { imageBlockSchema } from '@milkdown/kit/component/image-block'\nimport { createTable } from '@milkdown/kit/preset/gfm'\nimport {\n bulletListIcon,\n codeIcon,\n dividerIcon,\n h1Icon,\n h2Icon,\n h3Icon,\n h4Icon,\n h5Icon,\n h6Icon,\n imageIcon,\n orderedListIcon,\n quoteIcon,\n tableIcon,\n textIcon,\n todoListIcon,\n functionsIcon,\n} from '../../../icons'\nimport type { BlockEditFeatureConfig } from '../index'\nimport type { MenuItemGroup } from './utils'\nimport {\n clearContentAndAddBlockType,\n clearContentAndSetBlockType,\n clearContentAndWrapInBlockType,\n clearRange,\n} from './utils'\nimport { GroupBuilder } from './group-builder'\nimport type { Ctx } from '@milkdown/kit/ctx'\nimport { FeaturesCtx } from '../../../core/slice'\nimport { CrepeFeature } from '../../..'\n\nexport function getGroups(\n filter?: string,\n config?: BlockEditFeatureConfig,\n ctx?: Ctx\n) {\n const flags = ctx?.get(FeaturesCtx)\n const isLatexEnabled = flags?.includes(CrepeFeature.Latex)\n\n const groupBuilder = new GroupBuilder()\n groupBuilder\n .addGroup('text', config?.slashMenuTextGroupLabel ?? 'Text')\n .addItem('text', {\n label: config?.slashMenuTextGroupLabel ?? 'Text',\n icon: config?.slashMenuTextIcon?.() ?? textIcon,\n onRun: (ctx) => {\n const view = ctx.get(editorViewCtx)\n const { dispatch, state } = view\n\n const command = clearContentAndSetBlockType(paragraphSchema.type(ctx))\n command(state, dispatch)\n },\n })\n .addItem('h1', {\n label: config?.slashMenuH1Label ?? 'Heading 1',\n icon: config?.slashMenuH1Icon?.() ?? h1Icon,\n onRun: (ctx) => {\n const view = ctx.get(editorViewCtx)\n const { dispatch, state } = view\n\n const command = clearContentAndSetBlockType(headingSchema.type(ctx), {\n level: 1,\n })\n command(state, dispatch)\n },\n })\n .addItem('h2', {\n label: config?.slashMenuH2Label ?? 'Heading 2',\n icon: config?.slashMenuH2Icon?.() ?? h2Icon,\n onRun: (ctx) => {\n const view = ctx.get(editorViewCtx)\n const { dispatch, state } = view\n\n const command = clearContentAndSetBlockType(headingSchema.type(ctx), {\n level: 2,\n })\n command(state, dispatch)\n },\n })\n .addItem('h3', {\n label: config?.slashMenuH3Label ?? 'Heading 3',\n icon: config?.slashMenuH3Icon?.() ?? h3Icon,\n onRun: (ctx) => {\n const view = ctx.get(editorViewCtx)\n const { dispatch, state } = view\n\n const command = clearContentAndSetBlockType(headingSchema.type(ctx), {\n level: 3,\n })\n command(state, dispatch)\n },\n })\n .addItem('h4', {\n label: config?.slashMenuH4Label ?? 'Heading 4',\n icon: config?.slashMenuH4Icon?.() ?? h4Icon,\n onRun: (ctx) => {\n const view = ctx.get(editorViewCtx)\n const { dispatch, state } = view\n\n const command = clearContentAndSetBlockType(headingSchema.type(ctx), {\n level: 4,\n })\n command(state, dispatch)\n },\n })\n .addItem('h5', {\n label: config?.slashMenuH5Label ?? 'Heading 5',\n icon: config?.slashMenuH5Icon?.() ?? h5Icon,\n onRun: (ctx) => {\n const view = ctx.get(editorViewCtx)\n const { dispatch, state } = view\n\n const command = clearContentAndSetBlockType(headingSchema.type(ctx), {\n level: 5,\n })\n command(state, dispatch)\n },\n })\n .addItem('h6', {\n label: config?.slashMenuH6Label ?? 'Heading 6',\n icon: config?.slashMenuH6Icon?.() ?? h6Icon,\n onRun: (ctx) => {\n const view = ctx.get(editorViewCtx)\n const { dispatch, state } = view\n\n const command = clearContentAndSetBlockType(headingSchema.type(ctx), {\n level: 6,\n })\n command(state, dispatch)\n },\n })\n .addItem('quote', {\n label: config?.slashMenuQuoteLabel ?? 'Quote',\n icon: config?.slashMenuQuoteIcon?.() ?? quoteIcon,\n onRun: (ctx) => {\n const view = ctx.get(editorViewCtx)\n const { dispatch, state } = view\n\n const command = clearContentAndWrapInBlockType(\n blockquoteSchema.type(ctx)\n )\n command(state, dispatch)\n },\n })\n .addItem('divider', {\n label: config?.slashMenuDividerLabel ?? 'Divider',\n icon: config?.slashMenuDividerIcon?.() ?? dividerIcon,\n onRun: (ctx) => {\n const view = ctx.get(editorViewCtx)\n const { dispatch, state } = view\n\n const command = clearContentAndAddBlockType(hrSchema.type(ctx))\n command(state, dispatch)\n },\n })\n\n groupBuilder\n .addGroup('list', config?.slashMenuListGroupLabel ?? 'List')\n .addItem('bullet-list', {\n label: config?.slashMenuBulletListLabel ?? 'Bullet List',\n icon: config?.slashMenuBulletListIcon?.() ?? bulletListIcon,\n onRun: (ctx) => {\n const view = ctx.get(editorViewCtx)\n const { dispatch, state } = view\n\n const command = clearContentAndWrapInBlockType(\n bulletListSchema.type(ctx)\n )\n command(state, dispatch)\n },\n })\n .addItem('ordered-list', {\n label: config?.slashMenuOrderedListLabel ?? 'Ordered List',\n icon: config?.slashMenuOrderedListIcon?.() ?? orderedListIcon,\n onRun: (ctx) => {\n const view = ctx.get(editorViewCtx)\n const { dispatch, state } = view\n\n const command = clearContentAndWrapInBlockType(\n orderedListSchema.type(ctx)\n )\n command(state, dispatch)\n },\n })\n .addItem('todo-list', {\n label: config?.slashMenuTaskListLabel ?? 'Todo List',\n icon: config?.slashMenuTaskListIcon?.() ?? todoListIcon,\n onRun: (ctx) => {\n const view = ctx.get(editorViewCtx)\n const { dispatch, state } = view\n\n const command = clearContentAndWrapInBlockType(\n listItemSchema.type(ctx),\n { checked: false }\n )\n command(state, dispatch)\n },\n })\n\n const advancedGroup = groupBuilder\n .addGroup('advanced', config?.slashMenuAdvancedGroupLabel ?? 'Advanced')\n .addItem('image', {\n label: config?.slashMenuImageLabel ?? 'Image',\n icon: config?.slashMenuImageIcon?.() ?? imageIcon,\n onRun: (ctx) => {\n const view = ctx.get(editorViewCtx)\n const { dispatch, state } = view\n\n const command = clearContentAndAddBlockType(imageBlockSchema.type(ctx))\n command(state, dispatch)\n },\n })\n .addItem('code', {\n label: config?.slashMenuCodeBlockLabel ?? 'Code',\n icon: config?.slashMenuCodeBlockIcon?.() ?? codeIcon,\n onRun: (ctx) => {\n const view = ctx.get(editorViewCtx)\n const { dispatch, state } = view\n\n const command = clearContentAndAddBlockType(codeBlockSchema.type(ctx))\n command(state, dispatch)\n },\n })\n .addItem('table', {\n label: config?.slashMenuTableLabel ?? 'Table',\n icon: config?.slashMenuTableIcon?.() ?? tableIcon,\n onRun: (ctx) => {\n const view = ctx.get(editorViewCtx)\n const { dispatch, state } = view\n let { tr } = state\n tr = clearRange(tr)\n const from = tr.selection.from\n const table = createTable(ctx, 3, 3)\n tr = tr.replaceSelectionWith(table)\n dispatch(tr)\n\n requestAnimationFrame(() => {\n const docSize = view.state.doc.content.size\n const $pos = view.state.doc.resolve(\n from > docSize ? docSize : from < 0 ? 0 : from\n )\n const selection = TextSelection.near($pos)\n const tr = view.state.tr\n tr.setSelection(selection)\n dispatch(tr.scrollIntoView())\n })\n },\n })\n\n if (isLatexEnabled) {\n advancedGroup.addItem('math', {\n label: config?.slashMenuMathLabel ?? 'Math',\n icon: config?.slashMenuMathIcon?.() ?? functionsIcon,\n onRun: (ctx) => {\n const view = ctx.get(editorViewCtx)\n const { dispatch, state } = view\n\n const command = clearContentAndAddBlockType(codeBlockSchema.type(ctx), {\n language: 'LaTex',\n })\n command(state, dispatch)\n },\n })\n }\n\n config?.buildMenu?.(groupBuilder)\n\n let groups = groupBuilder.build()\n\n if (filter) {\n groups = groups\n .map((group) => {\n const items = group.items.filter((item) =>\n item.label.toLowerCase().includes(filter.toLowerCase())\n )\n\n return {\n ...group,\n items,\n }\n })\n .filter((group) => group.items.length > 0)\n }\n\n const items = groups.flatMap((groups) => groups.items)\n items.forEach((item, index) => {\n Object.assign(item, { index })\n })\n\n groups.reduce((acc, group) => {\n const end = acc + group.items.length\n Object.assign(group, {\n range: [acc, end],\n })\n return end\n }, 0)\n\n return {\n groups: groups as MenuItemGroup[],\n size: items.length,\n }\n}\n","import type { Component } from 'atomico'\nimport {\n c,\n html,\n useCallback,\n useEffect,\n useHost,\n useMemo,\n useRef,\n useState,\n} from 'atomico'\nimport type { Ctx } from '@milkdown/kit/ctx'\nimport type { BlockEditFeatureConfig } from '../index'\nimport { getGroups } from './config'\n\nexport interface MenuProps {\n ctx: Ctx\n show: boolean\n filter: string\n hide: () => void\n config?: BlockEditFeatureConfig\n}\n\nexport const menuComponent: Component<MenuProps> = ({\n show,\n hide,\n ctx,\n filter,\n config,\n}) => {\n const { groups, size } = useMemo(\n () => getGroups(filter, config, ctx),\n [filter]\n )\n\n const host = useHost()\n const [hoverIndex, setHoverIndex] = useState(0)\n\n const root = useMemo(() => host.current.getRootNode() as HTMLElement, [host])\n\n const prevMousePosition = useRef({ x: -999, y: -999 })\n\n const onMouseMove = useCallback((e: MouseEvent) => {\n const prevPos = prevMousePosition.current\n if (!prevPos) return\n\n const { x, y } = e\n prevPos.x = x\n prevPos.y = y\n }, [])\n\n useEffect(() => {\n if (size === 0 && show) hide?.()\n else if (hoverIndex >= size) setHoverIndex(0)\n }, [size, show])\n\n const onHover = useCallback(\n (\n index: number | ((prev: number) => number),\n after?: (index: number) => void\n ) => {\n setHoverIndex((prev) => {\n const next = typeof index === 'function' ? index(prev) : index\n\n after?.(next)\n return next\n })\n },\n []\n )\n\n const scrollToIndex = useCallback((index: number) => {\n const target = host.current.querySelector<HTMLElement>(\n `[data-index=\"${index}\"]`\n )\n const scrollRoot = host.current.querySelector<HTMLElement>('.menu-groups')\n\n if (!target || !scrollRoot) return\n\n scrollRoot.scrollTop = target.offsetTop - scrollRoot.offsetTop\n }, [])\n\n const runByIndex = useCallback(\n (index: number) => {\n const item = groups.flatMap((group) => group.items).at(index)\n if (item && ctx) item.onRun(ctx)\n\n hide?.()\n },\n [groups]\n )\n\n const onKeydown = useCallback(\n (e: KeyboardEvent) => {\n if (e.key === 'Escape') {\n e.preventDefault()\n hide?.()\n return\n }\n\n if (e.key === 'ArrowDown') {\n e.preventDefault()\n return onHover(\n (index) => (index < size - 1 ? index + 1 : index),\n scrollToIndex\n )\n }\n\n if (e.key === 'ArrowUp') {\n e.preventDefault()\n return onHover(\n (index) => (index <= 0 ? index : index - 1),\n scrollToIndex\n )\n }\n\n if (e.key === 'ArrowLeft') {\n e.preventDefault()\n return onHover((index) => {\n const group = groups.find(\n (group) => group.range[0] <= index && group.range[1] > index\n )\n if (!group) return index\n\n const prevGroup = groups[groups.indexOf(group) - 1]\n if (!prevGroup) return index\n\n return prevGroup.range[1] - 1\n }, scrollToIndex)\n }\n\n if (e.key === 'ArrowRight') {\n e.preventDefault()\n return onHover((index) => {\n const group = groups.find(\n (group) => group.range[0] <= index && group.range[1] > index\n )\n if (!group) return index\n\n const nextGroup = groups[groups.indexOf(group) + 1]\n if (!nextGroup) return index\n\n return nextGroup.range[0]\n }, scrollToIndex)\n }\n\n if (e.key === 'Enter') {\n e.preventDefault()\n runByIndex(hoverIndex)\n }\n },\n [hide, groups, hoverIndex]\n )\n\n const onMouseEnter = useCallback((index: number) => {\n return (e: MouseEvent) => {\n const prevPos = prevMousePosition.current\n if (!prevPos) return\n\n const { x, y } = e\n if (x === prevPos.x && y === prevPos.y) return\n\n onHover(index)\n }\n }, [])\n\n useEffect(() => {\n if (show) root.addEventListener('keydown', onKeydown, { capture: true })\n else root.removeEventListener('keydown', onKeydown, { capture: true })\n\n return () => {\n root.removeEventListener('keydown', onKeydown, { capture: true })\n }\n }, [show, onKeydown])\n\n return html`\n <host onmousedown=${(e: MouseEvent) => e.preventDefault()}>\n <nav class=\"tab-group\">\n <ul>\n ${groups.map(\n (group) =>\n html`<li\n key=${group.key}\n onmousedown=${() => onHover(group.range[0], scrollToIndex)}\n class=${hoverIndex >= group.range[0] &&\n hoverIndex < group.range[1]\n ? 'selected'\n : ''}\n >\n ${group.label}\n </li>`\n )}\n </ul>\n </nav>\n <div class=\"menu-groups\" onmousemove=${onMouseMove}>\n ${groups.map((group) => {\n return html`\n <div key=${group.key} class=\"menu-group\">\n <h6>${group.label}</h6>\n <ul>\n ${group.items.map(\n (item) =>\n html`<li\n key=${item.key}\n data-index=${item.index}\n class=${hoverIndex === item.index ? 'hover' : ''}\n onmouseenter=${onMouseEnter(item.index)}\n onmousedown=${() => {\n host.current\n .querySelector(`[data-index=\"${item.index}\"]`)\n ?.classList.add('active')\n }}\n onmouseup=${() => {\n host.current\n .querySelector(`[data-index=\"${item.index}\"]`)\n ?.classList.remove('active')\n runByIndex(item.index)\n }}\n >\n ${item.icon}\n <span>${item.label}</span>\n </li>`\n )}\n </ul>\n </div>\n `\n })}\n </div>\n </host>\n `\n}\n\nmenuComponent.props = {\n ctx: Object,\n config: Object,\n show: Boolean,\n filter: String,\n hide: Function,\n}\n\nexport const MenuElement = c(menuComponent)\n","import type { PluginView } from '@milkdown/kit/prose/state'\nimport type { EditorView } from '@milkdown/kit/prose/view'\nimport { SlashProvider, slashFactory } from '@milkdown/kit/plugin/slash'\nimport type { Ctx } from '@milkdown/kit/ctx'\nimport type { AtomicoThis } from 'atomico/types/dom'\nimport { $ctx } from '@milkdown/kit/utils'\nimport { defIfNotExists, isInCodeBlock, isInList } from '../../../utils'\nimport type { BlockEditFeatureConfig } from '../index'\nimport type { MenuProps } from './component'\nimport { MenuElement } from './component'\n\nexport const menu = slashFactory('CREPE_MENU')\n\nexport interface MenuAPI {\n show: (pos: number) => void\n hide: () => void\n}\n\nexport const menuAPI = $ctx(\n {\n show: () => {},\n hide: () => {},\n } as MenuAPI,\n 'menuAPICtx'\n)\n\ndefIfNotExists('milkdown-slash-menu', MenuElement)\nexport function configureMenu(ctx: Ctx, config?: BlockEditFeatureConfig) {\n ctx.set(menu.key, {\n view: (view) => new MenuView(ctx, view, config),\n })\n}\n\nclass MenuView implements PluginView {\n readonly #content: AtomicoThis<MenuProps, HTMLElement>\n readonly #slashProvider: SlashProvider\n #programmaticallyPos: number | null = null\n\n constructor(ctx: Ctx, view: EditorView, config?: BlockEditFeatureConfig) {\n this.#content = new MenuElement()\n this.#content.hide = this.hide\n this.#content.ctx = ctx\n this.#content.config = config\n // eslint-disable-next-line ts/no-this-alias\n const self = this\n this.#slashProvider = new SlashProvider({\n content: this.#content,\n debounce: 20,\n shouldShow(this: SlashProvider, view: EditorView) {\n if (\n isInCodeBlock(view.state.selection) ||\n isInList(view.state.selection)\n )\n return false\n\n const currentText = this.getContent(view, (node) =>\n ['paragraph', 'heading'].includes(node.type.name)\n )\n\n if (currentText == null) return false\n\n const pos = self.#programmaticallyPos\n\n self.#content.filter = currentText.startsWith('/')\n ? currentText.slice(1)\n : currentText\n\n if (typeof pos === 'number') {\n if (\n view.state.doc.resolve(pos).node() !==\n view.state.doc.resolve(view.state.selection.from).node()\n ) {\n self.#programmaticallyPos = null\n\n return false\n }\n\n return true\n }\n\n if (!currentText.startsWith('/')) return false\n\n return true\n },\n offset: 10,\n })\n\n this.#slashProvider.onShow = () => {\n this.#content.show = true\n }\n this.#slashProvider.onHide = () => {\n this.#content.show = false\n }\n this.update(view)\n\n ctx.set(menuAPI.key, {\n show: (pos) => this.show(pos),\n hide: () => this.hide(),\n })\n }\n\n update = (view: EditorView) => {\n this.#slashProvider.update(view)\n }\n\n show = (pos: number) => {\n this.#programmaticallyPos = pos\n this.#content.filter = ''\n this.#slashProvider.show()\n }\n\n hide = () => {\n this.#programmaticallyPos = null\n this.#slashProvider.hide()\n }\n\n destroy = () => {\n this.#slashProvider.destroy()\n this.#content.remove()\n }\n}\n","import { type Component, c, html, useEffect, useRef } from 'atomico'\nimport { menuIcon, plusIcon } from '../../../icons'\nimport type { Icon } from '../../shared'\n\nexport interface BlockHandleProps {\n show: boolean\n onAdd: () => void\n addIcon?: Icon\n handleIcon?: Icon\n}\n\nconst blockHandleComponent: Component<BlockHandleProps> = ({\n onAdd,\n addIcon,\n handleIcon,\n}) => {\n const ref = useRef<HTMLDivElement>()\n useEffect(() => {\n ref.current?.classList.remove('active')\n })\n const onMouseDown = (e: MouseEvent) => {\n e.preventDefault()\n e.stopPropagation()\n ref.current?.classList.add('active')\n }\n const onMouseUp = (e: MouseEvent) => {\n e.preventDefault()\n e.stopPropagation()\n onAdd?.()\n ref.current?.classList.remove('active')\n }\n return html`\n <host>\n <div\n ref=${ref}\n onmousedown=${onMouseDown}\n onmouseup=${onMouseUp}\n class=\"operation-item\"\n >\n ${addIcon?.() || plusIcon}\n </div>\n <div class=\"operation-item\">${handleIcon?.() || menuIcon}</div>\n </host>\n `\n}\n\nblockHandleComponent.props = {\n show: Boolean,\n onAdd: Function,\n addIcon: Function,\n handleIcon: Function,\n}\n\nexport const BlockHandleElement = c(blockHandleComponent)\n","import type { PluginView } from '@milkdown/kit/prose/state'\nimport { TextSelection } from '@milkdown/kit/prose/state'\nimport { BlockProvider, block, blockConfig } from '@milkdown/kit/plugin/block'\nimport type { Ctx } from '@milkdown/kit/ctx'\nimport type { AtomicoThis } from 'atomico/types/dom'\nimport { editorViewCtx } from '@milkdown/kit/core'\nimport { paragraphSchema } from '@milkdown/kit/preset/commonmark'\nimport { findParent } from '@milkdown/kit/prose'\nimport { menuAPI } from '../menu'\nimport { defIfNotExists } from '../../../utils'\nimport type { BlockEditFeatureConfig } from '../index'\nimport type { BlockHandleProps } from './component'\nimport { BlockHandleElement } from './component'\n\nexport class BlockHandleView implements PluginView {\n #content: AtomicoThis<BlockHandleProps>\n #provider: BlockProvider\n readonly #ctx: Ctx\n\n constructor(ctx: Ctx, config?: BlockEditFeatureConfig) {\n this.#ctx = ctx\n const content = new BlockHandleElement()\n this.#content = content\n this.#content.onAdd = this.onAdd\n this.#content.addIcon = config?.handleAddIcon\n this.#content.handleIcon = config?.handleDragIcon\n this.#provider = new BlockProvider({\n ctx,\n content,\n getOffset: () => 16,\n getPlacement: ({ active, blockDom }) => {\n if (active.node.type.name === 'heading') return 'left'\n\n let totalDescendant = 0\n active.node.descendants((node) => {\n totalDescendant += node.childCount\n })\n const dom = active.el\n const domRect = dom.getBoundingClientRect()\n const handleRect = blockDom.getBoundingClientRect()\n const style = window.getComputedStyle(dom)\n const paddingTop = Number.parseInt(style.paddingTop, 10) || 0\n const paddingBottom = Number.parseInt(style.paddingBottom, 10) || 0\n const height = domRect.height - paddingTop - paddingBottom\n const handleHeight = handleRect.height\n return totalDescendant > 2 || handleHeight < height\n ? 'left-start'\n : 'left'\n },\n })\n this.update()\n }\n\n update = () => {\n this.#provider.update()\n }\n\n destroy = () => {\n this.#provider.destroy()\n this.#content.remove()\n }\n\n onAdd = () => {\n const ctx = this.#ctx\n const view = ctx.get(editorViewCtx)\n if (!view.hasFocus()) view.focus()\n\n const { state, dispatch } = view\n const active = this.#provider.active\n if (!active) return\n\n const $pos = active.$pos\n const pos = $pos.pos + active.node.nodeSize\n let tr = state.tr.insert(pos, paragraphSchema.type(ctx).create())\n tr = tr.setSelection(TextSelection.near(tr.doc.resolve(pos)))\n dispatch(tr.scrollIntoView())\n\n this.#provider.hide()\n ctx.get(menuAPI.key).show(tr.selection.from)\n }\n}\n\ndefIfNotExists('milkdown-block-handle', BlockHandleElement)\nexport function configureBlockHandle(\n ctx: Ctx,\n config?: BlockEditFeatureConfig\n) {\n ctx.set(blockConfig.key, {\n filterNodes: (pos) => {\n const filter = findParent((node) =>\n ['table', 'blockquote', 'math_inline'].includes(node.type.name)\n )(pos)\n if (filter) return false\n\n return true\n },\n })\n ctx.set(block.key, {\n view: () => new BlockHandleView(ctx, config),\n })\n}\n","import { block } from '@milkdown/kit/plugin/block'\nimport type { DefineFeature, Icon } from '../shared'\nimport { configureBlockHandle } from './handle'\nimport { configureMenu, menu, menuAPI } from './menu'\nimport type { GroupBuilder } from './menu/group-builder'\n\ninterface BlockEditConfig {\n handleAddIcon: Icon\n handleDragIcon: Icon\n buildMenu: (builder: GroupBuilder) => void\n\n slashMenuTextGroupLabel: string\n slashMenuTextIcon: Icon\n slashMenuTextLabel: string\n slashMenuH1Icon: Icon\n slashMenuH1Label: string\n slashMenuH2Icon: Icon\n slashMenuH2Label: string\n slashMenuH3Icon: Icon\n slashMenuH3Label: string\n slashMenuH4Icon: Icon\n slashMenuH4Label: string\n slashMenuH5Icon: Icon\n slashMenuH5Label: string\n slashMenuH6Icon: Icon\n slashMenuH6Label: string\n slashMenuQuoteIcon: Icon\n slashMenuQuoteLabel: string\n slashMenuDividerIcon: Icon\n slashMenuDividerLabel: string\n\n slashMenuListGroupLabel: string\n slashMenuBulletListIcon: Icon\n slashMenuBulletListLabel: string\n slashMenuOrderedListIcon: Icon\n slashMenuOrderedListLabel: string\n slashMenuTaskListIcon: Icon\n slashMenuTaskListLabel: string\n\n slashMenuAdvancedGroupLabel: string\n slashMenuImageIcon: Icon\n slashMenuImageLabel: string\n slashMenuCodeBlockIcon: Icon\n slashMenuCodeBlockLabel: string\n slashMenuTableIcon: Icon\n slashMenuTableLabel: string\n slashMenuMathIcon: Icon\n slashMenuMathLabel: string\n}\n\nexport type BlockEditFeatureConfig = Partial<BlockEditConfig>\n\nexport const defineFeature: DefineFeature<BlockEditFeatureConfig> = (\n editor,\n config\n) => {\n editor\n .config((ctx) => configureBlockHandle(ctx, config))\n .config((ctx) => configureMenu(ctx, config))\n .use(menuAPI)\n .use(block)\n .use(menu)\n}\n"],"names":["findWrapping","__privateAdd","__privateSet","__privateGet","group","FeaturesCtx","CrepeFeature","textIcon","ctx","editorViewCtx","paragraphSchema","h1Icon","headingSchema","h2Icon","h3Icon","h4Icon","h5Icon","h6Icon","quoteIcon","blockquoteSchema","dividerIcon","hrSchema","bulletListIcon","bulletListSchema","orderedListIcon","orderedListSchema","todoListIcon","listItemSchema","imageIcon","imageBlockSchema","codeIcon","codeBlockSchema","tableIcon","state","createTable","TextSelection","tr","functionsIcon","items","groups","useMemo","useHost","useState","useRef","useCallback","useEffect","html","c","_content","slashFactory","$ctx","defIfNotExists","SlashProvider","view","isInCodeBlock","isInList","plusIcon","menuIcon","BlockProvider","blockConfig","findParent","block"],"mappings":"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"}