@milkdown/crepe 7.11.0 → 7.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (209) hide show
  1. package/lib/cjs/builder/builder.js +107 -0
  2. package/lib/cjs/builder/builder.js.map +1 -0
  3. package/lib/cjs/{index-oVztbsWz.js → feature/block-edit/index.js} +165 -61
  4. package/lib/cjs/feature/block-edit/index.js.map +1 -0
  5. package/lib/cjs/feature/code-mirror/index.js +161 -0
  6. package/lib/cjs/feature/code-mirror/index.js.map +1 -0
  7. package/lib/cjs/feature/cursor/index.js +57 -0
  8. package/lib/cjs/feature/cursor/index.js.map +1 -0
  9. package/lib/cjs/feature/image-block/index.js +123 -0
  10. package/lib/cjs/feature/image-block/index.js.map +1 -0
  11. package/lib/cjs/{index-DdWGHNC3.js → feature/latex/index.js} +111 -24
  12. package/lib/cjs/feature/latex/index.js.map +1 -0
  13. package/lib/cjs/feature/link-tooltip/index.js +124 -0
  14. package/lib/cjs/feature/link-tooltip/index.js.map +1 -0
  15. package/lib/cjs/{index-Dw6lXgs6.js → feature/list-item/index.js} +39 -8
  16. package/lib/cjs/feature/list-item/index.js.map +1 -0
  17. package/lib/cjs/{index-B91KhPew.js → feature/placeholder/index.js} +46 -6
  18. package/lib/cjs/feature/placeholder/index.js.map +1 -0
  19. package/lib/cjs/{index-DEs_IHHy.js → feature/table/index.js} +78 -16
  20. package/lib/cjs/feature/table/index.js.map +1 -0
  21. package/lib/cjs/{index-CqC8Inzm.js → feature/toolbar/index.js} +133 -31
  22. package/lib/cjs/feature/toolbar/index.js.map +1 -0
  23. package/lib/cjs/index/index.js +2464 -0
  24. package/lib/cjs/index/index.js.map +1 -0
  25. package/lib/esm/builder/builder.js +105 -0
  26. package/lib/esm/builder/builder.js.map +1 -0
  27. package/lib/esm/{index-BUOhiAN3.js → feature/block-edit/index.js} +161 -57
  28. package/lib/esm/feature/block-edit/index.js.map +1 -0
  29. package/lib/esm/feature/code-mirror/index.js +159 -0
  30. package/lib/esm/feature/code-mirror/index.js.map +1 -0
  31. package/lib/esm/feature/cursor/index.js +55 -0
  32. package/lib/esm/feature/cursor/index.js.map +1 -0
  33. package/lib/esm/feature/image-block/index.js +121 -0
  34. package/lib/esm/feature/image-block/index.js.map +1 -0
  35. package/lib/esm/{index-CQOlw1Xn.js → feature/latex/index.js} +107 -20
  36. package/lib/esm/feature/latex/index.js.map +1 -0
  37. package/lib/esm/feature/link-tooltip/index.js +122 -0
  38. package/lib/esm/feature/link-tooltip/index.js.map +1 -0
  39. package/lib/esm/{index-E8UgFLeN.js → feature/list-item/index.js} +39 -8
  40. package/lib/esm/feature/list-item/index.js.map +1 -0
  41. package/lib/esm/{index-BCvtgOeI.js → feature/placeholder/index.js} +45 -5
  42. package/lib/esm/feature/placeholder/index.js.map +1 -0
  43. package/lib/esm/{index-CwMVnVeI.js → feature/table/index.js} +78 -16
  44. package/lib/esm/feature/table/index.js.map +1 -0
  45. package/lib/esm/{index-B69WyZeK.js → feature/toolbar/index.js} +128 -26
  46. package/lib/esm/feature/toolbar/index.js.map +1 -0
  47. package/lib/esm/index/index.js +2458 -0
  48. package/lib/esm/index/index.js.map +1 -0
  49. package/lib/theme/common/code-mirror.css +69 -1
  50. package/lib/theme/common/style.css +1 -0
  51. package/lib/theme/crepe/style.css +0 -2
  52. package/lib/theme/crepe-dark/style.css +0 -2
  53. package/lib/theme/frame/style.css +0 -2
  54. package/lib/theme/frame-dark/style.css +0 -2
  55. package/lib/theme/nord/style.css +0 -2
  56. package/lib/theme/nord-dark/style.css +0 -2
  57. package/lib/tsconfig.tsbuildinfo +1 -1
  58. package/lib/types/builder.d.ts +2 -0
  59. package/lib/types/builder.d.ts.map +1 -0
  60. package/lib/types/core/builder.d.ts +23 -0
  61. package/lib/types/core/builder.d.ts.map +1 -0
  62. package/lib/types/core/crepe.d.ts +4 -15
  63. package/lib/types/core/crepe.d.ts.map +1 -1
  64. package/lib/types/core/index.d.ts +2 -1
  65. package/lib/types/core/index.d.ts.map +1 -1
  66. package/lib/types/core/slice.d.ts +6 -4
  67. package/lib/types/core/slice.d.ts.map +1 -1
  68. package/lib/types/default-config/index.d.ts +3 -0
  69. package/lib/types/default-config/index.d.ts.map +1 -0
  70. package/lib/types/feature/block-edit/handle/component.d.ts +2 -3
  71. package/lib/types/feature/block-edit/handle/component.d.ts.map +1 -1
  72. package/lib/types/feature/block-edit/index.d.ts +20 -20
  73. package/lib/types/feature/block-edit/index.d.ts.map +1 -1
  74. package/lib/types/feature/code-mirror/index.d.ts +7 -7
  75. package/lib/types/feature/code-mirror/index.d.ts.map +1 -1
  76. package/lib/types/feature/cursor/index.d.ts +1 -1
  77. package/lib/types/feature/cursor/index.d.ts.map +1 -1
  78. package/lib/types/feature/image-block/index.d.ts +9 -9
  79. package/lib/types/feature/image-block/index.d.ts.map +1 -1
  80. package/lib/types/feature/index.d.ts +2 -4
  81. package/lib/types/feature/index.d.ts.map +1 -1
  82. package/lib/types/feature/latex/index.d.ts +3 -3
  83. package/lib/types/feature/latex/index.d.ts.map +1 -1
  84. package/lib/types/feature/link-tooltip/index.d.ts +6 -6
  85. package/lib/types/feature/link-tooltip/index.d.ts.map +1 -1
  86. package/lib/types/feature/list-item/index.d.ts +5 -5
  87. package/lib/types/feature/list-item/index.d.ts.map +1 -1
  88. package/lib/types/feature/loader.d.ts +4 -0
  89. package/lib/types/feature/loader.d.ts.map +1 -0
  90. package/lib/types/feature/placeholder/index.d.ts +2 -2
  91. package/lib/types/feature/placeholder/index.d.ts.map +1 -1
  92. package/lib/types/feature/shared.d.ts +1 -2
  93. package/lib/types/feature/shared.d.ts.map +1 -1
  94. package/lib/types/feature/table/index.d.ts +11 -11
  95. package/lib/types/feature/table/index.d.ts.map +1 -1
  96. package/lib/types/feature/toolbar/index.d.ts +8 -8
  97. package/lib/types/feature/toolbar/index.d.ts.map +1 -1
  98. package/lib/types/icons/index.d.ts +1 -0
  99. package/lib/types/icons/index.d.ts.map +1 -1
  100. package/lib/types/index.d.ts +1 -1
  101. package/lib/types/index.d.ts.map +1 -1
  102. package/lib/types/utils/index.d.ts +0 -1
  103. package/lib/types/utils/index.d.ts.map +1 -1
  104. package/package.json +60 -3
  105. package/src/builder.ts +1 -0
  106. package/src/core/builder.ts +143 -0
  107. package/src/core/crepe.ts +23 -110
  108. package/src/core/index.ts +2 -1
  109. package/src/core/slice.ts +47 -7
  110. package/src/default-config/index.ts +25 -0
  111. package/src/feature/block-edit/handle/component.tsx +6 -8
  112. package/src/feature/block-edit/handle/index.ts +2 -2
  113. package/src/feature/block-edit/index.ts +23 -20
  114. package/src/feature/block-edit/menu/config.ts +19 -19
  115. package/src/feature/code-mirror/index.ts +32 -28
  116. package/src/feature/cursor/index.ts +10 -6
  117. package/src/feature/image-block/index.ts +19 -16
  118. package/src/feature/index.ts +24 -53
  119. package/src/feature/latex/index.ts +8 -10
  120. package/src/feature/latex/inline-tooltip/component.tsx +1 -1
  121. package/src/feature/link-tooltip/index.ts +13 -10
  122. package/src/feature/list-item/index.ts +11 -8
  123. package/src/feature/loader.ts +52 -0
  124. package/src/feature/placeholder/index.ts +5 -2
  125. package/src/feature/shared.ts +1 -3
  126. package/src/feature/table/index.ts +23 -23
  127. package/src/feature/toolbar/component.tsx +9 -9
  128. package/src/feature/toolbar/index.ts +14 -11
  129. package/src/icons/index.ts +1 -0
  130. package/src/index.ts +1 -1
  131. package/src/theme/common/code-mirror.css +61 -1
  132. package/src/theme/common/style.css +1 -0
  133. package/src/theme/crepe/style.css +0 -2
  134. package/src/theme/crepe-dark/style.css +0 -2
  135. package/src/theme/frame/style.css +0 -2
  136. package/src/theme/frame-dark/style.css +0 -2
  137. package/src/theme/nord/style.css +0 -2
  138. package/src/theme/nord-dark/style.css +0 -2
  139. package/src/utils/index.ts +0 -8
  140. package/lib/cjs/confirm-CNveM9QH.js +0 -26
  141. package/lib/cjs/confirm-CNveM9QH.js.map +0 -1
  142. package/lib/cjs/edit-BUtBJHpV.js +0 -24
  143. package/lib/cjs/edit-BUtBJHpV.js.map +0 -1
  144. package/lib/cjs/functions-BAY51plB.js +0 -39
  145. package/lib/cjs/functions-BAY51plB.js.map +0 -1
  146. package/lib/cjs/image-BXLkOVnO.js +0 -24
  147. package/lib/cjs/image-BXLkOVnO.js.map +0 -1
  148. package/lib/cjs/index-B91KhPew.js.map +0 -1
  149. package/lib/cjs/index-BsrJn8Jp.js +0 -41
  150. package/lib/cjs/index-BsrJn8Jp.js.map +0 -1
  151. package/lib/cjs/index-C2CAbC2F.js +0 -26
  152. package/lib/cjs/index-C2CAbC2F.js.map +0 -1
  153. package/lib/cjs/index-CqC8Inzm.js.map +0 -1
  154. package/lib/cjs/index-DEs_IHHy.js.map +0 -1
  155. package/lib/cjs/index-DLIudQKW.js +0 -126
  156. package/lib/cjs/index-DLIudQKW.js.map +0 -1
  157. package/lib/cjs/index-DRKcvY0k.js +0 -188
  158. package/lib/cjs/index-DRKcvY0k.js.map +0 -1
  159. package/lib/cjs/index-DdWGHNC3.js.map +0 -1
  160. package/lib/cjs/index-Dw6lXgs6.js.map +0 -1
  161. package/lib/cjs/index-oVztbsWz.js.map +0 -1
  162. package/lib/cjs/index-xbwf60wt.js +0 -15
  163. package/lib/cjs/index-xbwf60wt.js.map +0 -1
  164. package/lib/cjs/index-xbxqAqH2.js +0 -52
  165. package/lib/cjs/index-xbxqAqH2.js.map +0 -1
  166. package/lib/cjs/index.js +0 -20
  167. package/lib/cjs/index.js.map +0 -1
  168. package/lib/cjs/inline-latex-D0G71cGk.js +0 -54
  169. package/lib/cjs/inline-latex-D0G71cGk.js.map +0 -1
  170. package/lib/cjs/plus-XLomtlXf.js +0 -24
  171. package/lib/cjs/plus-XLomtlXf.js.map +0 -1
  172. package/lib/cjs/remove-Ba-ypwBf.js +0 -17
  173. package/lib/cjs/remove-Ba-ypwBf.js.map +0 -1
  174. package/lib/esm/confirm-DtE-HkVd.js +0 -24
  175. package/lib/esm/confirm-DtE-HkVd.js.map +0 -1
  176. package/lib/esm/edit-D--t_JAb.js +0 -22
  177. package/lib/esm/edit-D--t_JAb.js.map +0 -1
  178. package/lib/esm/functions-DlJPkGmE.js +0 -36
  179. package/lib/esm/functions-DlJPkGmE.js.map +0 -1
  180. package/lib/esm/image-DoB1o1sl.js +0 -22
  181. package/lib/esm/image-DoB1o1sl.js.map +0 -1
  182. package/lib/esm/index-B69WyZeK.js.map +0 -1
  183. package/lib/esm/index-BCvtgOeI.js.map +0 -1
  184. package/lib/esm/index-BPG8iO8t.js +0 -12
  185. package/lib/esm/index-BPG8iO8t.js.map +0 -1
  186. package/lib/esm/index-BUBXHhHG.js +0 -39
  187. package/lib/esm/index-BUBXHhHG.js.map +0 -1
  188. package/lib/esm/index-BUOhiAN3.js.map +0 -1
  189. package/lib/esm/index-Bvz1Yyiz.js +0 -24
  190. package/lib/esm/index-Bvz1Yyiz.js.map +0 -1
  191. package/lib/esm/index-C1aVAv1l.js +0 -124
  192. package/lib/esm/index-C1aVAv1l.js.map +0 -1
  193. package/lib/esm/index-CQOlw1Xn.js.map +0 -1
  194. package/lib/esm/index-CdjziarM.js +0 -183
  195. package/lib/esm/index-CdjziarM.js.map +0 -1
  196. package/lib/esm/index-ChR5Qhyf.js +0 -50
  197. package/lib/esm/index-ChR5Qhyf.js.map +0 -1
  198. package/lib/esm/index-CwMVnVeI.js.map +0 -1
  199. package/lib/esm/index-E8UgFLeN.js.map +0 -1
  200. package/lib/esm/index.js +0 -12
  201. package/lib/esm/index.js.map +0 -1
  202. package/lib/esm/inline-latex-C9IGAXXQ.js +0 -51
  203. package/lib/esm/inline-latex-C9IGAXXQ.js.map +0 -1
  204. package/lib/esm/plus-lrX0Q75O.js +0 -22
  205. package/lib/esm/plus-lrX0Q75O.js.map +0 -1
  206. package/lib/esm/remove-D3g0Cd6_.js +0 -15
  207. package/lib/esm/remove-D3g0Cd6_.js.map +0 -1
  208. /package/lib/theme/{_internal/classic-common.css → common/reset.css} +0 -0
  209. /package/src/theme/{_internal/classic-common.css → common/reset.css} +0 -0
@@ -1,26 +0,0 @@
1
- 'use strict';
2
-
3
- var cursor = require('@milkdown/kit/plugin/cursor');
4
- var utils = require('@milkdown/kit/utils');
5
- var prosemirrorVirtualCursor = require('prosemirror-virtual-cursor');
6
-
7
- const defineFeature = (editor, config) => {
8
- editor.config((ctx) => {
9
- ctx.update(cursor.dropCursorConfig.key, () => {
10
- var _a, _b;
11
- return {
12
- class: "crepe-drop-cursor",
13
- width: (_a = config == null ? void 0 : config.width) != null ? _a : 4,
14
- color: (_b = config == null ? void 0 : config.color) != null ? _b : false
15
- };
16
- });
17
- }).use(cursor.cursor);
18
- if ((config == null ? void 0 : config.virtual) === false) {
19
- return;
20
- }
21
- const virtualCursor = prosemirrorVirtualCursor.createVirtualCursor();
22
- editor.use(utils.$prose(() => virtualCursor));
23
- };
24
-
25
- exports.defineFeature = defineFeature;
26
- //# sourceMappingURL=index-C2CAbC2F.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-C2CAbC2F.js","sources":["../../src/feature/cursor/index.ts"],"sourcesContent":["import { cursor, dropCursorConfig } from '@milkdown/kit/plugin/cursor'\nimport { $prose } from '@milkdown/kit/utils'\nimport { createVirtualCursor } from 'prosemirror-virtual-cursor'\n\nimport type { DefineFeature } from '../shared'\n\ninterface CursorConfig {\n color: string | false\n width: number\n virtual: boolean\n}\nexport type CursorFeatureConfig = Partial<CursorConfig>\n\nexport const defineFeature: DefineFeature<CursorFeatureConfig> = (\n editor,\n config\n) => {\n editor\n .config((ctx) => {\n ctx.update(dropCursorConfig.key, () => ({\n class: 'crepe-drop-cursor',\n width: config?.width ?? 4,\n color: config?.color ?? false,\n }))\n })\n .use(cursor)\n\n if (config?.virtual === false) {\n return\n }\n\n const virtualCursor = createVirtualCursor()\n editor.use($prose(() => virtualCursor))\n}\n"],"names":["dropCursorConfig","cursor","createVirtualCursor","$prose"],"mappings":";;;;;;AAaa,MAAA,aAAA,GAAoD,CAC/D,MAAA,EACA,MACG,KAAA;AACH,EACG,MAAA,CAAA,MAAA,CAAO,CAAC,GAAQ,KAAA;AACf,IAAI,GAAA,CAAA,MAAA,CAAOA,uBAAiB,CAAA,GAAA,EAAK,MAAG;AAnB1C,MAAA,IAAA,EAAA,EAAA,EAAA;AAmB8C,MAAA,OAAA;AAAA,QACtC,KAAO,EAAA,mBAAA;AAAA,QACP,KAAA,EAAA,CAAO,EAAQ,GAAA,MAAA,IAAA,IAAA,GAAA,MAAA,GAAA,MAAA,CAAA,KAAA,KAAR,IAAiB,GAAA,EAAA,GAAA,CAAA;AAAA,QACxB,KAAA,EAAA,CAAO,EAAQ,GAAA,MAAA,IAAA,IAAA,GAAA,MAAA,GAAA,MAAA,CAAA,KAAA,KAAR,IAAiB,GAAA,EAAA,GAAA;AAAA,OAC1B;AAAA,KAAE,CAAA;AAAA,GACH,CACA,CAAA,GAAA,CAAIC,aAAM,CAAA;AAEb,EAAI,IAAA,CAAA,MAAA,IAAA,IAAA,GAAA,MAAA,GAAA,MAAA,CAAQ,aAAY,KAAO,EAAA;AAC7B,IAAA;AAAA;AAGF,EAAA,MAAM,gBAAgBC,4CAAoB,EAAA;AAC1C,EAAA,MAAA,CAAO,GAAI,CAAAC,YAAA,CAAO,MAAM,aAAa,CAAC,CAAA;AACxC;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-CqC8Inzm.js","sources":["../../src/icons/bold.ts","../../src/icons/italic.ts","../../src/icons/link.ts","../../src/icons/strikethrough.ts","../../src/feature/toolbar/component.tsx","../../src/feature/toolbar/index.ts"],"sourcesContent":["export const boldIcon = `\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n >\n <path\n d=\"M8.85758 18.625C8.4358 18.625 8.07715 18.4772 7.78163 18.1817C7.48613 17.8862 7.33838 17.5275 7.33838 17.1058V6.8942C7.33838 6.47242 7.48613 6.11377 7.78163 5.81825C8.07715 5.52275 8.4358 5.375 8.85758 5.375H12.1999C13.2191 5.375 14.1406 5.69231 14.9643 6.32693C15.788 6.96154 16.1999 7.81603 16.1999 8.89038C16.1999 9.63779 16.0194 10.2471 15.6585 10.7183C15.2976 11.1894 14.9088 11.5314 14.4922 11.7442C15.005 11.9211 15.4947 12.2708 15.9614 12.7933C16.428 13.3157 16.6614 14.0192 16.6614 14.9038C16.6614 16.182 16.1902 17.1217 15.2479 17.723C14.3056 18.3243 13.3563 18.625 12.3999 18.625H8.85758ZM9.4883 16.6327H12.3191C13.1063 16.6327 13.6627 16.4141 13.9884 15.9769C14.314 15.5397 14.4768 15.1205 14.4768 14.7192C14.4768 14.3179 14.314 13.8987 13.9884 13.4615C13.6627 13.0243 13.0909 12.8057 12.273 12.8057H9.4883V16.6327ZM9.4883 10.875H12.0826C12.6903 10.875 13.172 10.7013 13.5278 10.3539C13.8836 10.0064 14.0615 9.59037 14.0615 9.10575C14.0615 8.59035 13.8733 8.16918 13.497 7.84225C13.1207 7.51533 12.6595 7.35188 12.1133 7.35188H9.4883V10.875Z\"\n />\n </svg>\n`\n","export const italicIcon = `\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n >\n <path\n d=\"M6.29811 18.625C6.04505 18.625 5.83115 18.5375 5.65641 18.3626C5.48166 18.1877 5.39429 17.9736 5.39429 17.7203C5.39429 17.467 5.48166 17.2532 5.65641 17.0788C5.83115 16.9045 6.04505 16.8173 6.29811 16.8173H9.21159L12.452 7.18265H9.53851C9.28545 7.18265 9.07155 7.0952 8.89681 6.9203C8.72206 6.7454 8.63469 6.5313 8.63469 6.278C8.63469 6.02472 8.72206 5.81089 8.89681 5.63652C9.07155 5.46217 9.28545 5.375 9.53851 5.375H16.8847C17.1377 5.375 17.3516 5.46245 17.5264 5.63735C17.7011 5.81225 17.7885 6.02634 17.7885 6.27962C17.7885 6.53293 17.7011 6.74676 17.5264 6.92113C17.3516 7.09548 17.1377 7.18265 16.8847 7.18265H14.2789L11.0385 16.8173H13.6443C13.8973 16.8173 14.1112 16.9048 14.286 17.0797C14.4607 17.2546 14.5481 17.4687 14.5481 17.722C14.5481 17.9752 14.4607 18.1891 14.286 18.3634C14.1112 18.5378 13.8973 18.625 13.6443 18.625H6.29811Z\"\n />\n </svg>\n`\n","export const linkIcon = `\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n >\n <path\n d=\"M17.0385 19.5003V16.5388H14.0769V15.0388H17.0385V12.0773H18.5384V15.0388H21.5V16.5388H18.5384V19.5003H17.0385ZM10.8077 16.5388H7.03845C5.78282 16.5388 4.7125 16.0963 3.8275 15.2114C2.9425 14.3266 2.5 13.2564 2.5 12.0009C2.5 10.7454 2.9425 9.67504 3.8275 8.78979C4.7125 7.90454 5.78282 7.46191 7.03845 7.46191H10.8077V8.96186H7.03845C6.1987 8.96186 5.48235 9.25834 4.8894 9.85129C4.29645 10.4442 3.99998 11.1606 3.99998 12.0003C3.99998 12.8401 4.29645 13.5564 4.8894 14.1494C5.48235 14.7423 6.1987 15.0388 7.03845 15.0388H10.8077V16.5388ZM8.25 12.7503V11.2504H15.75V12.7503H8.25ZM21.5 12.0003H20C20 11.1606 19.7035 10.4442 19.1106 9.85129C18.5176 9.25834 17.8013 8.96186 16.9615 8.96186H13.1923V7.46191H16.9615C18.2171 7.46191 19.2875 7.90441 20.1725 8.78939C21.0575 9.67439 21.5 10.7447 21.5 12.0003Z\"\n />\n </svg>\n`\n","export const strikethroughIcon = `\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n >\n <path\n d=\"M3.25 13.7404C3.0375 13.7404 2.85938 13.6684 2.71563 13.5246C2.57188 13.3808 2.5 13.2026 2.5 12.99C2.5 12.7774 2.57188 12.5993 2.71563 12.4558C2.85938 12.3122 3.0375 12.2404 3.25 12.2404H20.75C20.9625 12.2404 21.1406 12.3123 21.2843 12.4561C21.4281 12.5999 21.5 12.7781 21.5 12.9907C21.5 13.2033 21.4281 13.3814 21.2843 13.525C21.1406 13.6686 20.9625 13.7404 20.75 13.7404H3.25ZM10.9423 10.2596V6.62495H6.5673C6.2735 6.62495 6.02377 6.52201 5.8181 6.31613C5.61245 6.11026 5.50963 5.86027 5.50963 5.56615C5.50963 5.27205 5.61245 5.02083 5.8181 4.8125C6.02377 4.60417 6.2735 4.5 6.5673 4.5H17.4423C17.7361 4.5 17.9858 4.60294 18.1915 4.80883C18.3971 5.01471 18.5 5.2647 18.5 5.5588C18.5 5.85292 18.3971 6.10413 18.1915 6.31245C17.9858 6.52078 17.7361 6.62495 17.4423 6.62495H13.0673V10.2596H10.9423ZM10.9423 15.7211H13.0673V18.4423C13.0673 18.7361 12.9643 18.9858 12.7584 19.1915C12.5526 19.3971 12.3026 19.5 12.0085 19.5C11.7144 19.5 11.4631 19.3962 11.2548 19.1887C11.0465 18.9811 10.9423 18.7291 10.9423 18.4327V15.7211Z\"\n />\n </svg>\n`\n","import type { Ctx } from '@milkdown/kit/ctx'\nimport type { MarkType, NodeType, Node } from '@milkdown/kit/prose/model'\n\nimport { Icon } from '@milkdown/kit/component'\nimport { linkTooltipAPI } from '@milkdown/kit/component/link-tooltip'\nimport { commandsCtx, editorViewCtx } from '@milkdown/kit/core'\nimport {\n emphasisSchema,\n inlineCodeSchema,\n linkSchema,\n strongSchema,\n toggleEmphasisCommand,\n toggleInlineCodeCommand,\n toggleStrongCommand,\n} from '@milkdown/kit/preset/commonmark'\nimport {\n strikethroughSchema,\n toggleStrikethroughCommand,\n} from '@milkdown/kit/preset/gfm'\nimport {\n NodeSelection,\n TextSelection,\n type Selection,\n} from '@milkdown/kit/prose/state'\nimport clsx from 'clsx'\nimport { defineComponent, type Ref, type ShallowRef, h, Fragment } from 'vue'\n\nimport type { ToolbarFeatureConfig } from '.'\n\nimport { CrepeFeature } from '../..'\nimport { FeaturesCtx } from '../../core/slice'\nimport {\n boldIcon,\n codeIcon,\n functionsIcon,\n italicIcon,\n linkIcon,\n strikethroughIcon,\n} from '../../icons'\nimport { mathInlineSchema } from '../latex/inline-latex'\n\nh\nFragment\n\ntype ToolbarProps = {\n ctx: Ctx\n hide: () => void\n show: Ref<boolean>\n selection: ShallowRef<Selection>\n config?: ToolbarFeatureConfig\n}\n\nexport const Toolbar = defineComponent<ToolbarProps>({\n props: {\n ctx: {\n type: Object,\n required: true,\n },\n hide: {\n type: Function,\n required: true,\n },\n show: {\n type: Object,\n required: true,\n },\n selection: {\n type: Object,\n required: true,\n },\n config: {\n type: Object,\n required: false,\n },\n },\n setup(props) {\n const { ctx, hide, config } = props\n\n const onClick = (fn: (ctx: Ctx) => void) => (e: MouseEvent) => {\n e.preventDefault()\n ctx && fn(ctx)\n }\n\n const isActive = (mark: MarkType) => {\n const selection = props.selection.value\n if (!ctx || !selection) return false\n const { state } = ctx.get(editorViewCtx)\n if (!state) return false\n const { doc } = state\n return doc.rangeHasMark(selection.from, selection.to, mark)\n }\n\n const containsNode = (node: NodeType) => {\n const selection = props.selection.value\n if (!ctx || !selection) return false\n const { state } = ctx.get(editorViewCtx)\n if (!state) return false\n const { doc } = state\n if (selection instanceof NodeSelection) {\n return selection.node.type === node\n }\n\n const { from, to } = selection\n\n let hasNode = false\n doc.nodesBetween(from, to, (n) => {\n if (n.type === node) {\n hasNode = true\n return false\n }\n return true\n })\n\n return hasNode\n }\n\n const flags = ctx?.get(FeaturesCtx)\n const isLatexEnabled = flags?.includes(CrepeFeature.Latex)\n\n const toggleLatex = (ctx: Ctx) => {\n const hasLatex = containsNode(mathInlineSchema.type(ctx))\n const view = ctx.get(editorViewCtx)\n const { selection, doc, tr } = view.state\n if (!hasLatex) {\n const text = doc.textBetween(selection.from, selection.to)\n let _tr = tr.replaceSelectionWith(\n mathInlineSchema.type(ctx).create({\n value: text,\n })\n )\n view.dispatch(\n _tr.setSelection(NodeSelection.create(_tr.doc, selection.from))\n )\n return\n }\n\n const { from, to } = selection\n let pos = -1\n let node: Node | null = null\n doc.nodesBetween(from, to, (n, p) => {\n if (node) return false\n if (n.type === mathInlineSchema.type(ctx)) {\n pos = p\n node = n\n return false\n }\n return true\n })\n if (!node || pos < 0) return\n\n let _tr = tr.delete(pos, pos + 1)\n const content = (node as Node).attrs.value\n _tr = _tr.insertText(content, pos)\n view.dispatch(\n _tr.setSelection(\n TextSelection.create(_tr.doc, from, to + content.length - 1)\n )\n )\n }\n\n return () => {\n return (\n <>\n <button\n type=\"button\"\n class={clsx(\n 'toolbar-item',\n ctx && isActive(strongSchema.type(ctx)) && 'active'\n )}\n onPointerdown={onClick((ctx) => {\n const commands = ctx.get(commandsCtx)\n commands.call(toggleStrongCommand.key)\n })}\n >\n <Icon icon={config?.boldIcon?.() ?? boldIcon} />\n </button>\n <button\n type=\"button\"\n class={clsx(\n 'toolbar-item',\n ctx && isActive(emphasisSchema.type(ctx)) && 'active'\n )}\n onPointerdown={onClick((ctx) => {\n const commands = ctx.get(commandsCtx)\n commands.call(toggleEmphasisCommand.key)\n })}\n >\n <Icon icon={config?.italicIcon?.() ?? italicIcon} />\n </button>\n <button\n type=\"button\"\n class={clsx(\n 'toolbar-item',\n ctx && isActive(strikethroughSchema.type(ctx)) && 'active'\n )}\n onPointerdown={onClick((ctx) => {\n const commands = ctx.get(commandsCtx)\n commands.call(toggleStrikethroughCommand.key)\n })}\n >\n <Icon icon={config?.strikethroughIcon?.() ?? strikethroughIcon} />\n </button>\n <div class=\"divider\"></div>\n <button\n type=\"button\"\n class={clsx(\n 'toolbar-item',\n ctx && isActive(inlineCodeSchema.type(ctx)) && 'active'\n )}\n onPointerdown={onClick((ctx) => {\n const commands = ctx.get(commandsCtx)\n commands.call(toggleInlineCodeCommand.key)\n })}\n >\n <Icon icon={config?.codeIcon?.() ?? codeIcon} />\n </button>\n {isLatexEnabled && (\n <button\n type=\"button\"\n class={clsx(\n 'toolbar-item',\n ctx && containsNode(mathInlineSchema.type(ctx)) && 'active'\n )}\n onPointerdown={onClick(toggleLatex)}\n >\n <Icon icon={config?.latexIcon?.() ?? functionsIcon} />\n </button>\n )}\n <button\n type=\"button\"\n class={clsx(\n 'toolbar-item',\n ctx && isActive(linkSchema.type(ctx)) && 'active'\n )}\n onPointerdown={onClick((ctx) => {\n const view = ctx.get(editorViewCtx)\n const { selection } = view.state\n\n if (isActive(linkSchema.type(ctx))) {\n ctx\n .get(linkTooltipAPI.key)\n .removeLink(selection.from, selection.to)\n return\n }\n\n ctx.get(linkTooltipAPI.key).addLink(selection.from, selection.to)\n hide?.()\n })}\n >\n <Icon icon={config?.linkIcon?.() ?? linkIcon} />\n </button>\n </>\n )\n }\n },\n})\n","import type { Ctx } from '@milkdown/kit/ctx'\nimport type {\n EditorState,\n PluginView,\n Selection,\n} from '@milkdown/kit/prose/state'\nimport type { EditorView } from '@milkdown/kit/prose/view'\n\nimport { TooltipProvider, tooltipFactory } from '@milkdown/kit/plugin/tooltip'\nimport { TextSelection } from '@milkdown/kit/prose/state'\nimport { createApp, ref, shallowRef, type App, type ShallowRef } from 'vue'\n\nimport type { DefineFeature, Icon } from '../shared'\n\nimport { Toolbar } from './component'\n\ninterface ToolbarConfig {\n boldIcon: Icon\n codeIcon: Icon\n italicIcon: Icon\n linkIcon: Icon\n strikethroughIcon: Icon\n latexIcon: Icon\n}\n\nexport type ToolbarFeatureConfig = Partial<ToolbarConfig>\n\nconst toolbar = tooltipFactory('CREPE_TOOLBAR')\n\nclass ToolbarView implements PluginView {\n #tooltipProvider: TooltipProvider\n #content: HTMLElement\n #app: App\n #selection: ShallowRef<Selection>\n #show = ref(false)\n\n constructor(ctx: Ctx, view: EditorView, config?: ToolbarFeatureConfig) {\n const content = document.createElement('div')\n content.className = 'milkdown-toolbar'\n this.#selection = shallowRef(view.state.selection)\n const app = createApp(Toolbar, {\n ctx,\n hide: this.hide,\n config,\n selection: this.#selection,\n show: this.#show,\n })\n app.mount(content)\n this.#content = content\n this.#app = app\n\n this.#tooltipProvider = new TooltipProvider({\n content: this.#content,\n debounce: 20,\n offset: 10,\n shouldShow(view: EditorView) {\n const { doc, selection } = view.state\n const { empty, from, to } = selection\n\n const isEmptyTextBlock =\n !doc.textBetween(from, to).length &&\n selection instanceof TextSelection\n\n const isNotTextBlock = !(selection instanceof TextSelection)\n\n const activeElement = (view.dom.getRootNode() as ShadowRoot | Document)\n .activeElement\n const isTooltipChildren = content.contains(activeElement)\n\n const notHasFocus = !view.hasFocus() && !isTooltipChildren\n\n const isReadonly = !view.editable\n\n if (\n notHasFocus ||\n isNotTextBlock ||\n empty ||\n isEmptyTextBlock ||\n isReadonly\n )\n return false\n\n return true\n },\n })\n this.#tooltipProvider.onShow = () => {\n this.#show.value = true\n }\n this.#tooltipProvider.onHide = () => {\n this.#show.value = false\n }\n this.update(view)\n }\n\n update = (view: EditorView, prevState?: EditorState) => {\n this.#tooltipProvider.update(view, prevState)\n this.#selection.value = view.state.selection\n }\n\n destroy = () => {\n this.#tooltipProvider.destroy()\n this.#app.unmount()\n this.#content.remove()\n }\n\n hide = () => {\n this.#tooltipProvider.hide()\n }\n}\n\nexport const defineFeature: DefineFeature<ToolbarFeatureConfig> = (\n editor,\n config\n) => {\n editor\n .config((ctx) => {\n ctx.set(toolbar.key, {\n view: (view) => new ToolbarView(ctx, view, config),\n })\n })\n .use(toolbar)\n}\n"],"names":["defineComponent","editorViewCtx","state","NodeSelection","FeaturesCtx","CrepeFeature","ctx","mathInlineSchema","_tr","TextSelection","h","Fragment","strongSchema","commandsCtx","toggleStrongCommand","Icon","emphasisSchema","toggleEmphasisCommand","strikethroughSchema","toggleStrikethroughCommand","inlineCodeSchema","toggleInlineCodeCommand","codeIcon","functionsIcon","linkSchema","linkTooltipAPI","tooltipFactory","ref","shallowRef","createApp","TooltipProvider","view"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-DEs_IHHy.js","sources":["../../src/icons/align-center.ts","../../src/icons/align-left.ts","../../src/icons/align-right.ts","../../src/icons/drag-handle.ts","../../src/feature/table/index.ts"],"sourcesContent":["export const alignCenterIcon = `\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n >\n <path\n d=\"M4.25 20.5C4.0375 20.5 3.85942 20.4281 3.71575 20.2843C3.57192 20.1404 3.5 19.9622 3.5 19.7498C3.5 19.5371 3.57192 19.359 3.71575 19.2155C3.85942 19.0718 4.0375 19 4.25 19H19.75C19.9625 19 20.1406 19.0719 20.2843 19.2158C20.4281 19.3596 20.5 19.5378 20.5 19.7502C20.5 19.9629 20.4281 20.141 20.2843 20.2845C20.1406 20.4282 19.9625 20.5 19.75 20.5H4.25ZM8.25 16.625C8.0375 16.625 7.85942 16.5531 7.71575 16.4093C7.57192 16.2654 7.5 16.0872 7.5 15.8748C7.5 15.6621 7.57192 15.484 7.71575 15.3405C7.85942 15.1968 8.0375 15.125 8.25 15.125H15.75C15.9625 15.125 16.1406 15.1969 16.2843 15.3408C16.4281 15.4846 16.5 15.6628 16.5 15.8753C16.5 16.0879 16.4281 16.266 16.2843 16.4095C16.1406 16.5532 15.9625 16.625 15.75 16.625H8.25ZM4.25 12.75C4.0375 12.75 3.85942 12.6781 3.71575 12.5343C3.57192 12.3904 3.5 12.2122 3.5 11.9998C3.5 11.7871 3.57192 11.609 3.71575 11.4655C3.85942 11.3218 4.0375 11.25 4.25 11.25H19.75C19.9625 11.25 20.1406 11.3219 20.2843 11.4658C20.4281 11.6096 20.5 11.7878 20.5 12.0003C20.5 12.2129 20.4281 12.391 20.2843 12.5345C20.1406 12.6782 19.9625 12.75 19.75 12.75H4.25ZM8.25 8.875C8.0375 8.875 7.85942 8.80308 7.71575 8.65925C7.57192 8.51542 7.5 8.33725 7.5 8.12475C7.5 7.91208 7.57192 7.734 7.71575 7.5905C7.85942 7.44683 8.0375 7.375 8.25 7.375H15.75C15.9625 7.375 16.1406 7.44692 16.2843 7.59075C16.4281 7.73458 16.5 7.91275 16.5 8.12525C16.5 8.33792 16.4281 8.516 16.2843 8.6595C16.1406 8.80317 15.9625 8.875 15.75 8.875H8.25ZM4.25 5C4.0375 5 3.85942 4.92808 3.71575 4.78425C3.57192 4.64042 3.5 4.46225 3.5 4.24975C3.5 4.03708 3.57192 3.859 3.71575 3.7155C3.85942 3.57183 4.0375 3.5 4.25 3.5H19.75C19.9625 3.5 20.1406 3.57192 20.2843 3.71575C20.4281 3.85958 20.5 4.03775 20.5 4.25025C20.5 4.46292 20.4281 4.641 20.2843 4.7845C20.1406 4.92817 19.9625 5 19.75 5H4.25Z\"\n />\n </svg>\n`\n","export const alignLeftIcon = `\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n >\n <path\n d=\"M4.25 20.5C4.0375 20.5 3.85942 20.4281 3.71575 20.2843C3.57192 20.1404 3.5 19.9622 3.5 19.7498C3.5 19.5371 3.57192 19.359 3.71575 19.2155C3.85942 19.0718 4.0375 19 4.25 19H19.75C19.9625 19 20.1406 19.0719 20.2843 19.2158C20.4281 19.3596 20.5 19.5378 20.5 19.7502C20.5 19.9629 20.4281 20.141 20.2843 20.2845C20.1406 20.4282 19.9625 20.5 19.75 20.5H4.25ZM4.25 16.625C4.0375 16.625 3.85942 16.5531 3.71575 16.4093C3.57192 16.2654 3.5 16.0872 3.5 15.8748C3.5 15.6621 3.57192 15.484 3.71575 15.3405C3.85942 15.1968 4.0375 15.125 4.25 15.125H13.75C13.9625 15.125 14.1406 15.1969 14.2843 15.3408C14.4281 15.4846 14.5 15.6628 14.5 15.8753C14.5 16.0879 14.4281 16.266 14.2843 16.4095C14.1406 16.5532 13.9625 16.625 13.75 16.625H4.25ZM4.25 12.75C4.0375 12.75 3.85942 12.6781 3.71575 12.5343C3.57192 12.3904 3.5 12.2122 3.5 11.9998C3.5 11.7871 3.57192 11.609 3.71575 11.4655C3.85942 11.3218 4.0375 11.25 4.25 11.25H19.75C19.9625 11.25 20.1406 11.3219 20.2843 11.4658C20.4281 11.6096 20.5 11.7878 20.5 12.0003C20.5 12.2129 20.4281 12.391 20.2843 12.5345C20.1406 12.6782 19.9625 12.75 19.75 12.75H4.25ZM4.25 8.875C4.0375 8.875 3.85942 8.80308 3.71575 8.65925C3.57192 8.51542 3.5 8.33725 3.5 8.12475C3.5 7.91208 3.57192 7.734 3.71575 7.5905C3.85942 7.44683 4.0375 7.375 4.25 7.375H13.75C13.9625 7.375 14.1406 7.44692 14.2843 7.59075C14.4281 7.73458 14.5 7.91275 14.5 8.12525C14.5 8.33792 14.4281 8.516 14.2843 8.6595C14.1406 8.80317 13.9625 8.875 13.75 8.875H4.25ZM4.25 5C4.0375 5 3.85942 4.92808 3.71575 4.78425C3.57192 4.64042 3.5 4.46225 3.5 4.24975C3.5 4.03708 3.57192 3.859 3.71575 3.7155C3.85942 3.57183 4.0375 3.5 4.25 3.5H19.75C19.9625 3.5 20.1406 3.57192 20.2843 3.71575C20.4281 3.85958 20.5 4.03775 20.5 4.25025C20.5 4.46292 20.4281 4.641 20.2843 4.7845C20.1406 4.92817 19.9625 5 19.75 5H4.25Z\"\n />\n </svg>\n`\n","export const alignRightIcon = `\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n >\n <path\n d=\"M4.25 5C4.0375 5 3.85942 4.92808 3.71575 4.78425C3.57192 4.64042 3.5 4.46225 3.5 4.24975C3.5 4.03708 3.57192 3.859 3.71575 3.7155C3.85942 3.57183 4.0375 3.5 4.25 3.5H19.75C19.9625 3.5 20.1406 3.57192 20.2843 3.71575C20.4281 3.85958 20.5 4.03775 20.5 4.25025C20.5 4.46292 20.4281 4.641 20.2843 4.7845C20.1406 4.92817 19.9625 5 19.75 5H4.25ZM10.25 8.875C10.0375 8.875 9.85942 8.80308 9.71575 8.65925C9.57192 8.51542 9.5 8.33725 9.5 8.12475C9.5 7.91208 9.57192 7.734 9.71575 7.5905C9.85942 7.44683 10.0375 7.375 10.25 7.375H19.75C19.9625 7.375 20.1406 7.44692 20.2843 7.59075C20.4281 7.73458 20.5 7.91275 20.5 8.12525C20.5 8.33792 20.4281 8.516 20.2843 8.6595C20.1406 8.80317 19.9625 8.875 19.75 8.875H10.25ZM4.25 12.75C4.0375 12.75 3.85942 12.6781 3.71575 12.5343C3.57192 12.3904 3.5 12.2122 3.5 11.9998C3.5 11.7871 3.57192 11.609 3.71575 11.4655C3.85942 11.3218 4.0375 11.25 4.25 11.25H19.75C19.9625 11.25 20.1406 11.3219 20.2843 11.4658C20.4281 11.6096 20.5 11.7878 20.5 12.0003C20.5 12.2129 20.4281 12.391 20.2843 12.5345C20.1406 12.6782 19.9625 12.75 19.75 12.75H4.25ZM10.25 16.625C10.0375 16.625 9.85942 16.5531 9.71575 16.4093C9.57192 16.2654 9.5 16.0872 9.5 15.8748C9.5 15.6621 9.57192 15.484 9.71575 15.3405C9.85942 15.1968 10.0375 15.125 10.25 15.125H19.75C19.9625 15.125 20.1406 15.1969 20.2843 15.3408C20.4281 15.4846 20.5 15.6628 20.5 15.8753C20.5 16.0879 20.4281 16.266 20.2843 16.4095C20.1406 16.5532 19.9625 16.625 19.75 16.625H10.25ZM4.25 20.5C4.0375 20.5 3.85942 20.4281 3.71575 20.2843C3.57192 20.1404 3.5 19.9622 3.5 19.7498C3.5 19.5371 3.57192 19.359 3.71575 19.2155C3.85942 19.0718 4.0375 19 4.25 19H19.75C19.9625 19 20.1406 19.0719 20.2843 19.2158C20.4281 19.3596 20.5 19.5378 20.5 19.7502C20.5 19.9629 20.4281 20.141 20.2843 20.2845C20.1406 20.4282 19.9625 20.5 19.75 20.5H4.25Z\"\n />\n </svg>\n`\n","export const dragHandleIcon = `\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n >\n <path\n d=\"M3.5 9.83366C3.35833 9.83366 3.23961 9.78571 3.14383 9.68983C3.04794 9.59394 3 9.47516 3 9.33349C3 9.19171 3.04794 9.07299 3.14383 8.97733C3.23961 8.88155 3.35833 8.83366 3.5 8.83366H12.5C12.6417 8.83366 12.7604 8.8816 12.8562 8.97749C12.9521 9.07338 13 9.19216 13 9.33383C13 9.4756 12.9521 9.59433 12.8562 9.68999C12.7604 9.78577 12.6417 9.83366 12.5 9.83366H3.5ZM3.5 7.16699C3.35833 7.16699 3.23961 7.11905 3.14383 7.02316C3.04794 6.92727 3 6.80849 3 6.66683C3 6.52505 3.04794 6.40633 3.14383 6.31066C3.23961 6.21488 3.35833 6.16699 3.5 6.16699H12.5C12.6417 6.16699 12.7604 6.21494 12.8562 6.31083C12.9521 6.40671 13 6.52549 13 6.66716C13 6.80894 12.9521 6.92766 12.8562 7.02333C12.7604 7.1191 12.6417 7.16699 12.5 7.16699H3.5Z\"\n />\n </svg>\n`\n","import {\n tableBlock,\n tableBlockConfig,\n} from '@milkdown/kit/component/table-block'\n\nimport type { DefineFeature, Icon } from '../shared'\n\nimport {\n alignCenterIcon,\n alignLeftIcon,\n alignRightIcon,\n dragHandleIcon,\n plusIcon,\n removeIcon,\n} from '../../icons'\n\ninterface TableConfig {\n addRowIcon: Icon\n addColIcon: Icon\n deleteRowIcon: Icon\n deleteColIcon: Icon\n alignLeftIcon: Icon\n alignCenterIcon: Icon\n alignRightIcon: Icon\n colDragHandleIcon: Icon\n rowDragHandleIcon: Icon\n}\n\nexport type TableFeatureConfig = Partial<TableConfig>\n\nexport const defineFeature: DefineFeature<TableFeatureConfig> = (\n editor,\n config\n) => {\n editor\n .config((ctx) => {\n ctx.update(tableBlockConfig.key, (defaultConfig) => ({\n ...defaultConfig,\n renderButton: (renderType) => {\n switch (renderType) {\n case 'add_row':\n return config?.addRowIcon?.() ?? plusIcon\n case 'add_col':\n return config?.addColIcon?.() ?? plusIcon\n case 'delete_row':\n return config?.deleteRowIcon?.() ?? removeIcon\n case 'delete_col':\n return config?.deleteColIcon?.() ?? removeIcon\n case 'align_col_left':\n return config?.alignLeftIcon?.() ?? alignLeftIcon\n case 'align_col_center':\n return config?.alignCenterIcon?.() ?? alignCenterIcon\n case 'align_col_right':\n return config?.alignRightIcon?.() ?? alignRightIcon\n case 'col_drag_handle':\n return config?.colDragHandleIcon?.() ?? dragHandleIcon\n case 'row_drag_handle':\n return config?.rowDragHandleIcon?.() ?? dragHandleIcon\n }\n },\n }))\n })\n .use(tableBlock)\n}\n"],"names":["tableBlockConfig","plusIcon","removeIcon","tableBlock"],"mappings":"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"}
@@ -1,126 +0,0 @@
1
- 'use strict';
2
-
3
- var commands = require('@codemirror/commands');
4
- var view = require('@codemirror/view');
5
- var codeBlock = require('@milkdown/kit/component/code-block');
6
- var codemirror = require('codemirror');
7
- var edit = require('./edit-BUtBJHpV.js');
8
-
9
- const chevronDownIcon = `
10
- <svg
11
- xmlns="http://www.w3.org/2000/svg"
12
- fill="none"
13
- viewBox="0 0 24 24"
14
- stroke-width="1.5"
15
- stroke="currentColor"
16
- class="w-6 h-6"
17
- >
18
- <path
19
- stroke-linecap="round"
20
- stroke-linejoin="round"
21
- d="M19.5 8.25l-7.5 7.5-7.5-7.5"
22
- />
23
- </svg>
24
- `;
25
-
26
- const clearIcon = `
27
- <svg
28
- xmlns="http://www.w3.org/2000/svg"
29
- width="24"
30
- height="24"
31
- viewBox="0 0 24 24"
32
- >
33
- <g clip-path="url(#clip0_1098_15553)">
34
- <path
35
- d="M18.3007 5.70973C17.9107 5.31973 17.2807 5.31973 16.8907 5.70973L12.0007 10.5897L7.1107 5.69973C6.7207 5.30973 6.0907 5.30973 5.7007 5.69973C5.3107 6.08973 5.3107 6.71973 5.7007 7.10973L10.5907 11.9997L5.7007 16.8897C5.3107 17.2797 5.3107 17.9097 5.7007 18.2997C6.0907 18.6897 6.7207 18.6897 7.1107 18.2997L12.0007 13.4097L16.8907 18.2997C17.2807 18.6897 17.9107 18.6897 18.3007 18.2997C18.6907 17.9097 18.6907 17.2797 18.3007 16.8897L13.4107 11.9997L18.3007 7.10973C18.6807 6.72973 18.6807 6.08973 18.3007 5.70973Z"
36
- />
37
- </g>
38
- <defs>
39
- <clipPath id="clip0_1098_15553">
40
- <rect width="24" height="24" />
41
- </clipPath>
42
- </defs>
43
- </svg>
44
- `;
45
-
46
- const searchIcon = `
47
- <svg
48
- xmlns="http://www.w3.org/2000/svg"
49
- fill="none"
50
- viewBox="0 0 24 24"
51
- stroke-width="1.5"
52
- stroke="currentColor"
53
- class="w-6 h-6"
54
- >
55
- <path
56
- stroke-linecap="round"
57
- stroke-linejoin="round"
58
- d="M21 21l-5.197-5.197m0 0A7.5 7.5 0 105.196 5.196a7.5 7.5 0 0010.607 10.607z"
59
- />
60
- </svg>
61
- `;
62
-
63
- const visibilityOffIcon = `
64
- <svg
65
- xmlns="http://www.w3.org/2000/svg"
66
- height="24px"
67
- viewBox="0 -960 960 960"
68
- width="24px"
69
- >
70
- <path
71
- d="m644-428-58-58q9-47-27-88t-93-32l-58-58q17-8 34.5-12t37.5-4q75 0 127.5 52.5T660-500q0 20-4 37.5T644-428Zm128 126-58-56q38-29 67.5-63.5T832-500q-50-101-143.5-160.5T480-720q-29 0-57 4t-55 12l-62-62q41-17 84-25.5t90-8.5q151 0 269 83.5T920-500q-23 59-60.5 109.5T772-302Zm20 246L624-222q-35 11-70.5 16.5T480-200q-151 0-269-83.5T40-500q21-53 53-98.5t73-81.5L56-792l56-56 736 736-56 56ZM222-624q-29 26-53 57t-41 67q50 101 143.5 160.5T480-280q20 0 39-2.5t39-5.5l-36-38q-11 3-21 4.5t-21 1.5q-75 0-127.5-52.5T300-500q0-11 1.5-21t4.5-21l-84-82Zm319 93Zm-151 75Z"
72
- />
73
- </svg>
74
- `;
75
-
76
- const defineFeature = (editor, config = {}) => {
77
- editor.config(async (ctx) => {
78
- let { languages, theme } = config;
79
- if (!languages) {
80
- const { languages: langList } = await import('@codemirror/language-data');
81
- languages = langList;
82
- }
83
- if (!theme) {
84
- const { oneDark } = await import('@codemirror/theme-one-dark');
85
- theme = oneDark;
86
- }
87
- ctx.update(codeBlock.codeBlockConfig.key, (defaultConfig) => {
88
- var _a;
89
- return {
90
- extensions: [
91
- view.keymap.of(commands.defaultKeymap.concat(commands.indentWithTab)),
92
- codemirror.basicSetup,
93
- theme,
94
- ...(_a = config == null ? void 0 : config.extensions) != null ? _a : []
95
- ],
96
- languages,
97
- expandIcon: () => {
98
- var _a2;
99
- return ((_a2 = config.expandIcon) == null ? void 0 : _a2.call(config)) || chevronDownIcon;
100
- },
101
- searchIcon: () => {
102
- var _a2;
103
- return ((_a2 = config.searchIcon) == null ? void 0 : _a2.call(config)) || searchIcon;
104
- },
105
- clearSearchIcon: () => {
106
- var _a2;
107
- return ((_a2 = config.clearSearchIcon) == null ? void 0 : _a2.call(config)) || clearIcon;
108
- },
109
- searchPlaceholder: config.searchPlaceholder || "Search language",
110
- noResultText: config.noResultText || "No result",
111
- renderLanguage: config.renderLanguage || defaultConfig.renderLanguage,
112
- renderPreview: config.renderPreview || defaultConfig.renderPreview,
113
- previewToggleButton: (previewOnlyMode) => {
114
- var _a2, _b;
115
- const icon = ((_a2 = config.previewToggleIcon) == null ? void 0 : _a2.call(config, previewOnlyMode)) || (previewOnlyMode ? edit.editIcon : visibilityOffIcon);
116
- const text = ((_b = config.previewToggleText) == null ? void 0 : _b.call(config, previewOnlyMode)) || (previewOnlyMode ? "Edit" : "Hide");
117
- return [icon, text].map((v) => v.trim()).join(" ");
118
- },
119
- previewLabel: config.previewLabel || defaultConfig.previewLabel
120
- };
121
- });
122
- }).use(codeBlock.codeBlockComponent);
123
- };
124
-
125
- exports.defineFeature = defineFeature;
126
- //# sourceMappingURL=index-DLIudQKW.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-DLIudQKW.js","sources":["../../src/icons/chevron-down.ts","../../src/icons/clear.ts","../../src/icons/search.ts","../../src/icons/visibility-off.ts","../../src/feature/code-mirror/index.ts"],"sourcesContent":["export const chevronDownIcon = `\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke-width=\"1.5\"\n stroke=\"currentColor\"\n class=\"w-6 h-6\"\n >\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n d=\"M19.5 8.25l-7.5 7.5-7.5-7.5\"\n />\n </svg>\n`\n","export const clearIcon = `\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n >\n <g clip-path=\"url(#clip0_1098_15553)\">\n <path\n d=\"M18.3007 5.70973C17.9107 5.31973 17.2807 5.31973 16.8907 5.70973L12.0007 10.5897L7.1107 5.69973C6.7207 5.30973 6.0907 5.30973 5.7007 5.69973C5.3107 6.08973 5.3107 6.71973 5.7007 7.10973L10.5907 11.9997L5.7007 16.8897C5.3107 17.2797 5.3107 17.9097 5.7007 18.2997C6.0907 18.6897 6.7207 18.6897 7.1107 18.2997L12.0007 13.4097L16.8907 18.2997C17.2807 18.6897 17.9107 18.6897 18.3007 18.2997C18.6907 17.9097 18.6907 17.2797 18.3007 16.8897L13.4107 11.9997L18.3007 7.10973C18.6807 6.72973 18.6807 6.08973 18.3007 5.70973Z\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_1098_15553\">\n <rect width=\"24\" height=\"24\" />\n </clipPath>\n </defs>\n </svg>\n`\n","export const searchIcon = `\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke-width=\"1.5\"\n stroke=\"currentColor\"\n class=\"w-6 h-6\"\n >\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n d=\"M21 21l-5.197-5.197m0 0A7.5 7.5 0 105.196 5.196a7.5 7.5 0 0010.607 10.607z\"\n />\n </svg>\n`\n","export const visibilityOffIcon = `\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n height=\"24px\"\n viewBox=\"0 -960 960 960\"\n width=\"24px\"\n >\n <path\n d=\"m644-428-58-58q9-47-27-88t-93-32l-58-58q17-8 34.5-12t37.5-4q75 0 127.5 52.5T660-500q0 20-4 37.5T644-428Zm128 126-58-56q38-29 67.5-63.5T832-500q-50-101-143.5-160.5T480-720q-29 0-57 4t-55 12l-62-62q41-17 84-25.5t90-8.5q151 0 269 83.5T920-500q-23 59-60.5 109.5T772-302Zm20 246L624-222q-35 11-70.5 16.5T480-200q-151 0-269-83.5T40-500q21-53 53-98.5t73-81.5L56-792l56-56 736 736-56 56ZM222-624q-29 26-53 57t-41 67q50 101 143.5 160.5T480-280q20 0 39-2.5t39-5.5l-36-38q-11 3-21 4.5t-21 1.5q-75 0-127.5-52.5T300-500q0-11 1.5-21t4.5-21l-84-82Zm319 93Zm-151 75Z\"\n />\n </svg>\n`\n","import type { LanguageDescription } from '@codemirror/language'\nimport type { Extension } from '@codemirror/state'\n\nimport { defaultKeymap, indentWithTab } from '@codemirror/commands'\nimport { keymap } from '@codemirror/view'\nimport {\n codeBlockComponent,\n codeBlockConfig,\n} from '@milkdown/kit/component/code-block'\nimport { basicSetup } from 'codemirror'\n\nimport type { DefineFeature, Icon } from '../shared'\n\nimport { chevronDownIcon, clearIcon, editIcon, searchIcon } from '../../icons'\nimport { visibilityOffIcon } from '../../icons/visibility-off'\n\ninterface CodeMirrorConfig {\n extensions: Extension[]\n languages: LanguageDescription[]\n theme: Extension\n\n expandIcon: Icon\n searchIcon: Icon\n clearSearchIcon: Icon\n\n searchPlaceholder: string\n noResultText: string\n\n renderLanguage: (language: string, selected: boolean) => string\n\n renderPreview: (\n language: string,\n content: string\n ) => string | HTMLElement | null\n\n previewToggleIcon: (previewOnlyMode: boolean) => ReturnType<Icon>\n previewToggleText: (previewOnlyMode: boolean) => string\n previewLabel: () => string\n}\nexport type CodeMirrorFeatureConfig = Partial<CodeMirrorConfig>\n\nexport const defineFeature: DefineFeature<CodeMirrorFeatureConfig> = (\n editor,\n config = {}\n) => {\n editor\n .config(async (ctx) => {\n let { languages, theme } = config\n if (!languages) {\n const { languages: langList } = await import(\n '@codemirror/language-data'\n )\n languages = langList\n }\n if (!theme) {\n const { oneDark } = await import('@codemirror/theme-one-dark')\n theme = oneDark\n }\n ctx.update(codeBlockConfig.key, (defaultConfig) => ({\n extensions: [\n keymap.of(defaultKeymap.concat(indentWithTab)),\n basicSetup,\n theme,\n ...(config?.extensions ?? []),\n ],\n languages,\n\n expandIcon: () => config.expandIcon?.() || chevronDownIcon,\n searchIcon: () => config.searchIcon?.() || searchIcon,\n clearSearchIcon: () => config.clearSearchIcon?.() || clearIcon,\n searchPlaceholder: config.searchPlaceholder || 'Search language',\n noResultText: config.noResultText || 'No result',\n renderLanguage: config.renderLanguage || defaultConfig.renderLanguage,\n renderPreview: config.renderPreview || defaultConfig.renderPreview,\n previewToggleButton: (previewOnlyMode) => {\n const icon =\n config.previewToggleIcon?.(previewOnlyMode) ||\n (previewOnlyMode ? editIcon : visibilityOffIcon)\n const text =\n config.previewToggleText?.(previewOnlyMode) ||\n (previewOnlyMode ? 'Edit' : 'Hide')\n return [icon, text].map((v) => v.trim()).join(' ')\n },\n previewLabel: config.previewLabel || defaultConfig.previewLabel,\n }))\n })\n .use(codeBlockComponent)\n}\n"],"names":["codeBlockConfig","keymap","defaultKeymap","indentWithTab","basicSetup","_a","editIcon","codeBlockComponent"],"mappings":"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"}
@@ -1,188 +0,0 @@
1
- 'use strict';
2
-
3
- var core = require('@milkdown/kit/core');
4
- var clipboard = require('@milkdown/kit/plugin/clipboard');
5
- var history = require('@milkdown/kit/plugin/history');
6
- var indent = require('@milkdown/kit/plugin/indent');
7
- var listener = require('@milkdown/kit/plugin/listener');
8
- var trailing = require('@milkdown/kit/plugin/trailing');
9
- var commonmark = require('@milkdown/kit/preset/commonmark');
10
- var gfm = require('@milkdown/kit/preset/gfm');
11
- var utils = require('@milkdown/kit/utils');
12
- var ctx = require('@milkdown/kit/ctx');
13
-
14
- var CrepeFeature = /* @__PURE__ */ ((CrepeFeature2) => {
15
- CrepeFeature2["CodeMirror"] = "code-mirror";
16
- CrepeFeature2["ListItem"] = "list-item";
17
- CrepeFeature2["LinkTooltip"] = "link-tooltip";
18
- CrepeFeature2["Cursor"] = "cursor";
19
- CrepeFeature2["ImageBlock"] = "image-block";
20
- CrepeFeature2["BlockEdit"] = "block-edit";
21
- CrepeFeature2["Toolbar"] = "toolbar";
22
- CrepeFeature2["Placeholder"] = "placeholder";
23
- CrepeFeature2["Table"] = "table";
24
- CrepeFeature2["Latex"] = "latex";
25
- return CrepeFeature2;
26
- })(CrepeFeature || {});
27
- const defaultFeatures = {
28
- ["cursor" /* Cursor */]: true,
29
- ["list-item" /* ListItem */]: true,
30
- ["link-tooltip" /* LinkTooltip */]: true,
31
- ["image-block" /* ImageBlock */]: true,
32
- ["block-edit" /* BlockEdit */]: true,
33
- ["placeholder" /* Placeholder */]: true,
34
- ["toolbar" /* Toolbar */]: true,
35
- ["code-mirror" /* CodeMirror */]: true,
36
- ["table" /* Table */]: true,
37
- ["latex" /* Latex */]: true
38
- };
39
- async function loadFeature(feature, editor, config) {
40
- switch (feature) {
41
- case "code-mirror" /* CodeMirror */: {
42
- const { defineFeature } = await Promise.resolve().then(function () { return require('./index-DLIudQKW.js'); });
43
- return defineFeature(editor, config);
44
- }
45
- case "list-item" /* ListItem */: {
46
- const { defineFeature } = await Promise.resolve().then(function () { return require('./index-Dw6lXgs6.js'); });
47
- return defineFeature(editor, config);
48
- }
49
- case "link-tooltip" /* LinkTooltip */: {
50
- const { defineFeature } = await Promise.resolve().then(function () { return require('./index-BsrJn8Jp.js'); });
51
- return defineFeature(editor, config);
52
- }
53
- case "image-block" /* ImageBlock */: {
54
- const { defineFeature } = await Promise.resolve().then(function () { return require('./index-xbxqAqH2.js'); });
55
- return defineFeature(editor, config);
56
- }
57
- case "cursor" /* Cursor */: {
58
- const { defineFeature } = await Promise.resolve().then(function () { return require('./index-C2CAbC2F.js'); });
59
- return defineFeature(editor, config);
60
- }
61
- case "block-edit" /* BlockEdit */: {
62
- const { defineFeature } = await Promise.resolve().then(function () { return require('./index-oVztbsWz.js'); });
63
- return defineFeature(editor, config);
64
- }
65
- case "placeholder" /* Placeholder */: {
66
- const { defineFeature } = await Promise.resolve().then(function () { return require('./index-B91KhPew.js'); });
67
- return defineFeature(editor, config);
68
- }
69
- case "toolbar" /* Toolbar */: {
70
- const { defineFeature } = await Promise.resolve().then(function () { return require('./index-CqC8Inzm.js'); });
71
- return defineFeature(editor, config);
72
- }
73
- case "table" /* Table */: {
74
- const { defineFeature } = await Promise.resolve().then(function () { return require('./index-DEs_IHHy.js'); });
75
- return defineFeature(editor, config);
76
- }
77
- case "latex" /* Latex */: {
78
- const { defineFeature } = await Promise.resolve().then(function () { return require('./index-DdWGHNC3.js'); });
79
- return defineFeature(editor, config);
80
- }
81
- }
82
- }
83
-
84
- const FeaturesCtx = ctx.createSlice([], "FeaturesCtx");
85
- const crepeCtx = ctx.createSlice({}, "CrepeCtx");
86
- function configureFeatures(features) {
87
- return (ctx) => {
88
- ctx.inject(FeaturesCtx, features);
89
- };
90
- }
91
-
92
- var __typeError = (msg) => {
93
- throw TypeError(msg);
94
- };
95
- var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
96
- var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
97
- 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);
98
- var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), member.set(obj, value), value);
99
- var _editor, _initPromise, _rootElement, _editable;
100
- class Crepe {
101
- constructor({
102
- root,
103
- features = {},
104
- featureConfigs = {},
105
- defaultValue = ""
106
- }) {
107
- __privateAdd(this, _editor);
108
- __privateAdd(this, _initPromise);
109
- __privateAdd(this, _rootElement);
110
- __privateAdd(this, _editable, true);
111
- this.create = async () => {
112
- await __privateGet(this, _initPromise);
113
- return __privateGet(this, _editor).create();
114
- };
115
- this.destroy = async () => {
116
- await __privateGet(this, _initPromise);
117
- return __privateGet(this, _editor).destroy();
118
- };
119
- this.setReadonly = (value) => {
120
- __privateSet(this, _editable, !value);
121
- __privateGet(this, _editor).action((ctx) => {
122
- if (__privateGet(this, _editor).status === core.EditorStatus.Created) {
123
- const view = ctx.get(core.editorViewCtx);
124
- view.setProps({
125
- editable: () => !value
126
- });
127
- }
128
- });
129
- return this;
130
- };
131
- this.getMarkdown = () => {
132
- return __privateGet(this, _editor).action(utils.getMarkdown());
133
- };
134
- this.on = (fn) => {
135
- if (__privateGet(this, _editor).status !== core.EditorStatus.Created) {
136
- __privateGet(this, _editor).config((ctx) => {
137
- const listener2 = ctx.get(listener.listenerCtx);
138
- fn(listener2);
139
- });
140
- return this;
141
- }
142
- __privateGet(this, _editor).action((ctx) => {
143
- const listener2 = ctx.get(listener.listenerCtx);
144
- fn(listener2);
145
- });
146
- return this;
147
- };
148
- var _a;
149
- const enabledFeatures = Object.entries({
150
- ...defaultFeatures,
151
- ...features
152
- }).filter(([, enabled]) => enabled).map(([feature]) => feature);
153
- __privateSet(this, _rootElement, (_a = typeof root === "string" ? document.querySelector(root) : root) != null ? _a : document.body);
154
- __privateSet(this, _editor, core.Editor.make().config((ctx) => {
155
- ctx.inject(crepeCtx, this);
156
- }).config(configureFeatures(enabledFeatures)).config((ctx) => {
157
- ctx.set(core.rootCtx, __privateGet(this, _rootElement));
158
- ctx.set(core.defaultValueCtx, defaultValue);
159
- ctx.set(core.editorViewOptionsCtx, {
160
- editable: () => __privateGet(this, _editable)
161
- });
162
- ctx.update(indent.indentConfig.key, (value) => ({
163
- ...value,
164
- size: 4
165
- }));
166
- }).use(commonmark.commonmark).use(listener.listener).use(history.history).use(indent.indent).use(trailing.trailing).use(clipboard.clipboard).use(gfm.gfm));
167
- const promiseList = [];
168
- enabledFeatures.forEach((feature) => {
169
- const config = featureConfigs[feature];
170
- promiseList.push(loadFeature(feature, __privateGet(this, _editor), config));
171
- });
172
- __privateSet(this, _initPromise, Promise.all(promiseList));
173
- }
174
- get editor() {
175
- return __privateGet(this, _editor);
176
- }
177
- }
178
- _editor = new WeakMap();
179
- _initPromise = new WeakMap();
180
- _rootElement = new WeakMap();
181
- _editable = new WeakMap();
182
- Crepe.Feature = CrepeFeature;
183
-
184
- exports.Crepe = Crepe;
185
- exports.CrepeFeature = CrepeFeature;
186
- exports.FeaturesCtx = FeaturesCtx;
187
- exports.crepeCtx = crepeCtx;
188
- //# sourceMappingURL=index-DRKcvY0k.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-DRKcvY0k.js","sources":["../../src/feature/index.ts","../../src/core/slice.ts","../../src/core/crepe.ts"],"sourcesContent":["import type { Editor } from '@milkdown/kit/core'\n\nimport type { BlockEditFeatureConfig } from './block-edit'\nimport type { CodeMirrorFeatureConfig } from './code-mirror'\nimport type { CursorFeatureConfig } from './cursor'\nimport type { ImageBlockFeatureConfig } from './image-block'\nimport type { LatexFeatureConfig } from './latex'\nimport type { LinkTooltipFeatureConfig } from './link-tooltip'\nimport type { ListItemFeatureConfig } from './list-item'\nimport type { PlaceHolderFeatureConfig } from './placeholder'\nimport type { TableFeatureConfig } from './table'\nimport type { ToolbarFeatureConfig } from './toolbar'\n\nexport enum CrepeFeature {\n CodeMirror = 'code-mirror',\n ListItem = 'list-item',\n LinkTooltip = 'link-tooltip',\n Cursor = 'cursor',\n ImageBlock = 'image-block',\n BlockEdit = 'block-edit',\n Toolbar = 'toolbar',\n Placeholder = 'placeholder',\n Table = 'table',\n Latex = 'latex',\n}\n\nexport interface CrepeFeatureConfig {\n [CrepeFeature.Cursor]?: CursorFeatureConfig\n [CrepeFeature.ListItem]?: ListItemFeatureConfig\n [CrepeFeature.LinkTooltip]?: LinkTooltipFeatureConfig\n [CrepeFeature.ImageBlock]?: ImageBlockFeatureConfig\n [CrepeFeature.BlockEdit]?: BlockEditFeatureConfig\n [CrepeFeature.Placeholder]?: PlaceHolderFeatureConfig\n [CrepeFeature.Toolbar]?: ToolbarFeatureConfig\n [CrepeFeature.CodeMirror]?: CodeMirrorFeatureConfig\n [CrepeFeature.Table]?: TableFeatureConfig\n [CrepeFeature.Latex]?: LatexFeatureConfig\n}\n\nexport const defaultFeatures: Record<CrepeFeature, boolean> = {\n [CrepeFeature.Cursor]: true,\n [CrepeFeature.ListItem]: true,\n [CrepeFeature.LinkTooltip]: true,\n [CrepeFeature.ImageBlock]: true,\n [CrepeFeature.BlockEdit]: true,\n [CrepeFeature.Placeholder]: true,\n [CrepeFeature.Toolbar]: true,\n [CrepeFeature.CodeMirror]: true,\n [CrepeFeature.Table]: true,\n [CrepeFeature.Latex]: true,\n}\n\nexport async function loadFeature(\n feature: CrepeFeature,\n editor: Editor,\n config?: never\n) {\n switch (feature) {\n case CrepeFeature.CodeMirror: {\n const { defineFeature } = await import('./code-mirror')\n return defineFeature(editor, config)\n }\n case CrepeFeature.ListItem: {\n const { defineFeature } = await import('./list-item')\n return defineFeature(editor, config)\n }\n case CrepeFeature.LinkTooltip: {\n const { defineFeature } = await import('./link-tooltip')\n return defineFeature(editor, config)\n }\n case CrepeFeature.ImageBlock: {\n const { defineFeature } = await import('./image-block')\n return defineFeature(editor, config)\n }\n case CrepeFeature.Cursor: {\n const { defineFeature } = await import('./cursor')\n return defineFeature(editor, config)\n }\n case CrepeFeature.BlockEdit: {\n const { defineFeature } = await import('./block-edit')\n return defineFeature(editor, config)\n }\n case CrepeFeature.Placeholder: {\n const { defineFeature } = await import('./placeholder')\n return defineFeature(editor, config)\n }\n case CrepeFeature.Toolbar: {\n const { defineFeature } = await import('./toolbar')\n return defineFeature(editor, config)\n }\n case CrepeFeature.Table: {\n const { defineFeature } = await import('./table')\n return defineFeature(editor, config)\n }\n case CrepeFeature.Latex: {\n const { defineFeature } = await import('./latex')\n return defineFeature(editor, config)\n }\n }\n}\n","import type { Ctx } from '@milkdown/kit/ctx'\n\nimport { createSlice } from '@milkdown/kit/ctx'\n\nimport type { CrepeFeature } from '../feature'\nimport type { Crepe } from './crepe'\n\nexport const FeaturesCtx = createSlice([] as CrepeFeature[], 'FeaturesCtx')\n\nexport const crepeCtx = createSlice({} as Crepe, 'CrepeCtx')\n\nexport function configureFeatures(features: CrepeFeature[]) {\n return (ctx: Ctx) => {\n ctx.inject(FeaturesCtx, features)\n }\n}\n","import type { DefaultValue } from '@milkdown/kit/core'\nimport type { ListenerManager } from '@milkdown/kit/plugin/listener'\n\nimport {\n Editor,\n EditorStatus,\n defaultValueCtx,\n editorViewCtx,\n editorViewOptionsCtx,\n rootCtx,\n} from '@milkdown/kit/core'\nimport { clipboard } from '@milkdown/kit/plugin/clipboard'\nimport { history } from '@milkdown/kit/plugin/history'\nimport { indent, indentConfig } from '@milkdown/kit/plugin/indent'\nimport { listener, listenerCtx } from '@milkdown/kit/plugin/listener'\nimport { trailing } from '@milkdown/kit/plugin/trailing'\nimport { commonmark } from '@milkdown/kit/preset/commonmark'\nimport { gfm } from '@milkdown/kit/preset/gfm'\nimport { getMarkdown } from '@milkdown/kit/utils'\n\nimport type { CrepeFeatureConfig } from '../feature'\n\nimport { CrepeFeature, defaultFeatures, loadFeature } from '../feature'\nimport { configureFeatures, crepeCtx } from './slice'\n\nexport interface CrepeConfig {\n features?: Partial<Record<CrepeFeature, boolean>>\n featureConfigs?: CrepeFeatureConfig\n root?: Node | string | null\n defaultValue?: DefaultValue\n}\n\nexport class Crepe {\n static Feature = CrepeFeature\n readonly #editor: Editor\n readonly #initPromise: Promise<unknown>\n readonly #rootElement: Node\n #editable = true\n\n constructor({\n root,\n features = {},\n featureConfigs = {},\n defaultValue = '',\n }: CrepeConfig) {\n const enabledFeatures = Object.entries({\n ...defaultFeatures,\n ...features,\n })\n .filter(([, enabled]) => enabled)\n .map(([feature]) => feature as CrepeFeature)\n\n this.#rootElement =\n (typeof root === 'string' ? document.querySelector(root) : root) ??\n document.body\n this.#editor = Editor.make()\n .config((ctx) => {\n ctx.inject(crepeCtx, this)\n })\n .config(configureFeatures(enabledFeatures))\n .config((ctx) => {\n ctx.set(rootCtx, this.#rootElement)\n ctx.set(defaultValueCtx, defaultValue)\n ctx.set(editorViewOptionsCtx, {\n editable: () => this.#editable,\n })\n ctx.update(indentConfig.key, (value) => ({\n ...value,\n size: 4,\n }))\n })\n .use(commonmark)\n .use(listener)\n .use(history)\n .use(indent)\n .use(trailing)\n .use(clipboard)\n .use(gfm)\n\n const promiseList: Promise<unknown>[] = []\n\n enabledFeatures.forEach((feature) => {\n const config = (featureConfigs as Partial<Record<CrepeFeature, never>>)[\n feature\n ]\n promiseList.push(loadFeature(feature, this.#editor, config))\n })\n\n this.#initPromise = Promise.all(promiseList)\n }\n\n create = async () => {\n await this.#initPromise\n return this.#editor.create()\n }\n\n destroy = async () => {\n await this.#initPromise\n return this.#editor.destroy()\n }\n\n get editor(): Editor {\n return this.#editor\n }\n\n setReadonly = (value: boolean) => {\n this.#editable = !value\n this.#editor.action((ctx) => {\n if (this.#editor.status === EditorStatus.Created) {\n const view = ctx.get(editorViewCtx)\n view.setProps({\n editable: () => !value,\n })\n }\n })\n return this\n }\n\n getMarkdown = () => {\n return this.#editor.action(getMarkdown())\n }\n\n on = (fn: (api: ListenerManager) => void) => {\n if (this.#editor.status !== EditorStatus.Created) {\n this.#editor.config((ctx) => {\n const listener = ctx.get(listenerCtx)\n fn(listener)\n })\n return this\n }\n this.#editor.action((ctx) => {\n const listener = ctx.get(listenerCtx)\n fn(listener)\n })\n return this\n }\n}\n"],"names":["CrepeFeature","createSlice","EditorStatus","editorViewCtx","getMarkdown","listener","listenerCtx","Editor","rootCtx","defaultValueCtx","editorViewOptionsCtx","indentConfig","commonmark","history","indent","trailing","clipboard","gfm"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-DdWGHNC3.js","sources":["../../src/feature/latex/block-latex.ts","../../src/feature/latex/inline-tooltip/tooltip.ts","../../src/feature/latex/inline-tooltip/component.tsx","../../src/feature/latex/inline-tooltip/view.ts","../../src/feature/latex/input-rule.ts","../../src/feature/latex/remark.ts","../../src/feature/latex/index.ts"],"sourcesContent":["import { codeBlockSchema } from '@milkdown/kit/preset/commonmark'\n\nexport const blockLatexSchema = codeBlockSchema.extendSchema((prev) => {\n return (ctx) => {\n const baseSchema = prev(ctx)\n return {\n ...baseSchema,\n toMarkdown: {\n match: baseSchema.toMarkdown.match,\n runner: (state, node) => {\n const language = node.attrs.language ?? ''\n if (language.toLowerCase() === 'latex') {\n state.addNode(\n 'math',\n undefined,\n node.content.firstChild?.text || ''\n )\n } else {\n return baseSchema.toMarkdown.runner(state, node)\n }\n },\n },\n }\n }\n})\n","import { tooltipFactory } from '@milkdown/kit/plugin/tooltip'\n\nexport const inlineLatexTooltip = tooltipFactory('INLINE_LATEX')\n","import type { EditorView } from '@milkdown/kit/prose/view'\n\nimport { Icon } from '@milkdown/kit/component'\nimport { defineComponent, type ShallowRef, type VNodeRef, h } from 'vue'\n\nimport type { LatexConfig } from '..'\n\ntype LatexTooltipProps = {\n config: Partial<LatexConfig>\n innerView: ShallowRef<EditorView | null>\n updateValue: ShallowRef<() => void>\n}\n\nh\n\nexport const LatexTooltip = defineComponent<LatexTooltipProps>({\n props: {\n config: {\n type: Object,\n required: true,\n },\n innerView: {\n type: Object,\n required: true,\n },\n updateValue: {\n type: Object,\n required: true,\n },\n },\n setup(props) {\n const innerViewRef: VNodeRef = (el) => {\n if (!el || !(el instanceof HTMLElement)) return\n while (el.firstChild) {\n el.removeChild(el.firstChild)\n }\n if (props.innerView.value) {\n el.appendChild(props.innerView.value.dom)\n }\n }\n const onUpdate = (e: Event) => {\n e.preventDefault()\n props.updateValue.value()\n }\n\n return () => {\n return (\n <div class=\"container\">\n {props.innerView && <div ref={innerViewRef} />}\n <button onPointerdown={onUpdate}>\n <Icon icon={props.config.inlineEditConfirm?.()} />\n </button>\n </div>\n )\n }\n },\n})\n","import type { Ctx } from '@milkdown/kit/ctx'\nimport type { PluginView } from '@milkdown/kit/prose/state'\n\nimport { TooltipProvider } from '@milkdown/kit/plugin/tooltip'\nimport { redo, undo } from '@milkdown/kit/prose/history'\nimport { keymap } from '@milkdown/kit/prose/keymap'\nimport { Schema } from '@milkdown/kit/prose/model'\nimport { EditorState, NodeSelection } from '@milkdown/kit/prose/state'\nimport { EditorView } from '@milkdown/kit/prose/view'\nimport { createApp, shallowRef, type App, type ShallowRef } from 'vue'\n\nimport type { LatexConfig } from '..'\n\nimport { mathInlineId } from '../inline-latex'\nimport { LatexTooltip } from './component'\n\nexport class LatexInlineTooltip implements PluginView {\n #content: HTMLElement\n #provider: TooltipProvider\n #dom: HTMLElement\n #innerView: ShallowRef<EditorView | null> = shallowRef(null)\n #updateValue: ShallowRef<() => void> = shallowRef(() => {})\n #app: App\n\n constructor(\n readonly ctx: Ctx,\n view: EditorView,\n config: Partial<LatexConfig>\n ) {\n const content = document.createElement('div')\n content.className = 'milkdown-latex-inline-edit'\n this.#content = content\n this.#app = createApp(LatexTooltip, {\n config,\n innerView: this.#innerView,\n updateValue: this.#updateValue,\n })\n this.#app.mount(content)\n this.#provider = new TooltipProvider({\n debounce: 0,\n content: this.#content,\n shouldShow: this.#shouldShow,\n offset: 10,\n floatingUIOptions: {\n placement: 'bottom',\n },\n })\n this.#provider.update(view)\n this.#dom = document.createElement('div')\n }\n\n #onHide = () => {\n if (this.#innerView.value) {\n this.#innerView.value.destroy()\n this.#innerView.value = null\n }\n }\n\n #shouldShow = (view: EditorView) => {\n const shouldShow = () => {\n const { selection, schema } = view.state\n if (selection.empty) return false\n if (!(selection instanceof NodeSelection)) return false\n const node = selection.node\n if (node.type.name !== mathInlineId) return false\n\n const textFrom = selection.from\n\n const paragraph = schema.nodes.paragraph!.create(\n null,\n schema.text(node.attrs.value)\n )\n\n const innerView = new EditorView(this.#dom, {\n state: EditorState.create({\n doc: paragraph,\n schema: new Schema({\n nodes: {\n doc: {\n content: 'block+',\n },\n paragraph: {\n content: 'inline*',\n group: 'block',\n parseDOM: [{ tag: 'p' }],\n toDOM() {\n return ['p', 0]\n },\n },\n text: {\n group: 'inline',\n },\n },\n }),\n plugins: [\n keymap({\n 'Mod-z': undo,\n 'Mod-Z': redo,\n 'Mod-y': redo,\n Enter: () => {\n this.#updateValue.value()\n return true\n },\n }),\n ],\n }),\n })\n\n this.#innerView.value = innerView\n this.#updateValue.value = () => {\n const { tr } = view.state\n tr.setNodeAttribute(textFrom, 'value', innerView.state.doc.textContent)\n view.dispatch(tr)\n requestAnimationFrame(() => {\n view.focus()\n })\n }\n return true\n }\n\n const show = shouldShow()\n if (!show) this.#onHide()\n return show\n }\n\n update = (view: EditorView, prevState?: EditorState) => {\n this.#provider.update(view, prevState)\n }\n\n destroy = () => {\n this.#app.unmount()\n this.#provider.destroy()\n this.#content.remove()\n }\n}\n","import { codeBlockSchema } from '@milkdown/kit/preset/commonmark'\nimport { nodeRule } from '@milkdown/kit/prose'\nimport { textblockTypeInputRule } from '@milkdown/kit/prose/inputrules'\nimport { $inputRule } from '@milkdown/kit/utils'\n\nimport { mathInlineSchema } from './inline-latex'\n\n/// Input rule for inline math.\n/// When you type $E=MC^2$, it will create an inline math node.\nexport const mathInlineInputRule = $inputRule((ctx) =>\n nodeRule(/(?:\\$)([^$]+)(?:\\$)$/, mathInlineSchema.type(ctx), {\n getAttr: (match) => {\n return {\n value: match[1] ?? '',\n }\n },\n })\n)\n\n/// A input rule for creating block math.\n/// For example, `$$ ` will create a code block with language javascript.\nexport const mathBlockInputRule = $inputRule((ctx) =>\n textblockTypeInputRule(/^\\$\\$[\\s\\n]$/, codeBlockSchema.type(ctx), () => ({\n language: 'LaTeX',\n }))\n)\n","import type { Node } from '@milkdown/kit/transformer'\n\nimport { $remark } from '@milkdown/kit/utils'\nimport remarkMath from 'remark-math'\nimport { visit } from 'unist-util-visit'\n\nexport const remarkMathPlugin = $remark<'remarkMath', undefined>(\n 'remarkMath',\n () => remarkMath\n)\n\nfunction visitMathBlock(ast: Node) {\n return visit(\n ast,\n 'math',\n (\n node: Node & { value: string },\n index: number,\n parent: Node & { children: Node[] }\n ) => {\n const { value } = node as Node & { value: string }\n const newNode = {\n type: 'code',\n lang: 'LaTeX',\n value,\n }\n parent.children.splice(index, 1, newNode)\n }\n )\n}\n\n/// Turn math block into code block with language LaTeX.\nexport const remarkMathBlockPlugin = $remark(\n 'remarkMathBlock',\n () => () => visitMathBlock\n)\n","import type { KatexOptions } from 'katex'\n\nimport { codeBlockConfig } from '@milkdown/kit/component/code-block'\nimport katex from 'katex'\n\nimport type { DefineFeature, Icon } from '../shared'\n\nimport { CrepeFeature } from '../..'\nimport { FeaturesCtx } from '../../core/slice'\nimport { confirmIcon } from '../../icons'\nimport { blockLatexSchema } from './block-latex'\nimport { mathInlineSchema } from './inline-latex'\nimport { inlineLatexTooltip } from './inline-tooltip/tooltip'\nimport { LatexInlineTooltip } from './inline-tooltip/view'\nimport { mathBlockInputRule, mathInlineInputRule } from './input-rule'\nimport { remarkMathBlockPlugin, remarkMathPlugin } from './remark'\n\nexport interface LatexConfig {\n katexOptions: KatexOptions\n inlineEditConfirm: Icon\n}\n\nexport type LatexFeatureConfig = Partial<LatexConfig>\n\nexport const defineFeature: DefineFeature<LatexFeatureConfig> = (\n editor,\n config\n) => {\n editor\n .config((ctx) => {\n const flags = ctx.get(FeaturesCtx)\n const isCodeMirrorEnabled = flags.includes(CrepeFeature.CodeMirror)\n if (!isCodeMirrorEnabled) {\n throw new Error('You need to enable CodeMirror to use LaTeX feature')\n }\n\n ctx.update(codeBlockConfig.key, (prev) => ({\n ...prev,\n renderPreview: (language, content) => {\n if (language.toLowerCase() === 'latex' && content.length > 0) {\n return renderLatex(content, config?.katexOptions)\n }\n const renderPreview = prev.renderPreview\n return renderPreview(language, content)\n },\n }))\n\n ctx.set(inlineLatexTooltip.key, {\n view: (view) => {\n return new LatexInlineTooltip(ctx, view, {\n inlineEditConfirm: config?.inlineEditConfirm ?? (() => confirmIcon),\n ...config,\n })\n },\n })\n })\n .use(remarkMathPlugin)\n .use(remarkMathBlockPlugin)\n .use(mathInlineSchema)\n .use(inlineLatexTooltip)\n .use(mathInlineInputRule)\n .use(mathBlockInputRule)\n .use(blockLatexSchema)\n}\n\nfunction renderLatex(content: string, options?: KatexOptions) {\n const html = katex.renderToString(content, {\n ...options,\n throwOnError: false,\n displayMode: true,\n })\n return html\n}\n"],"names":["codeBlockSchema","tooltipFactory","defineComponent","h","Icon","view","shallowRef","NodeSelection","mathInlineId","EditorView","EditorState","Schema","keymap","undo","redo","createApp","TooltipProvider","$inputRule","nodeRule","mathInlineSchema","textblockTypeInputRule","$remark","visit","FeaturesCtx","CrepeFeature","codeBlockConfig","confirmIcon"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-Dw6lXgs6.js","sources":["../../src/icons/bullet.ts","../../src/icons/check-box-checked.ts","../../src/icons/check-box-unchecked.ts","../../src/feature/list-item/index.ts"],"sourcesContent":["export const bulletIcon = `\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n >\n <g clip-path=\"url(#clip0_952_6527)\">\n <circle cx=\"12\" cy=\"12\" r=\"3\" />\n </g>\n <defs>\n <clipPath id=\"clip0_952_6527\">\n <rect width=\"24\" height=\"24\" />\n </clipPath>\n </defs>\n </svg>\n`\n","export const checkBoxCheckedIcon = `\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n >\n <g clip-path=\"url(#clip0_1803_1151)\">\n <path\n d=\"M19 3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H19C20.1 21 21 20.1 21 19V5C21 3.9 20.1 3 19 3ZM10.71 16.29C10.32 16.68 9.69 16.68 9.3 16.29L5.71 12.7C5.32 12.31 5.32 11.68 5.71 11.29C6.1 10.9 6.73 10.9 7.12 11.29L10 14.17L16.88 7.29C17.27 6.9 17.9 6.9 18.29 7.29C18.68 7.68 18.68 8.31 18.29 8.7L10.71 16.29Z\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_1803_1151\">\n <rect width=\"24\" height=\"24\" />\n </clipPath>\n </defs>\n </svg>\n`\n","export const checkBoxUncheckedIcon = `\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n >\n <g clip-path=\"url(#clip0_1803_535)\">\n <path\n d=\"M18 19H6C5.45 19 5 18.55 5 18V6C5 5.45 5.45 5 6 5H18C18.55 5 19 5.45 19 6V18C19 18.55 18.55 19 18 19ZM19 3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H19C20.1 21 21 20.1 21 19V5C21 3.9 20.1 3 19 3Z\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_1803_535\">\n <rect width=\"24\" height=\"24\" />\n </clipPath>\n </defs>\n </svg>\n`\n","import type { Ctx } from '@milkdown/kit/ctx'\n\nimport {\n listItemBlockComponent,\n listItemBlockConfig,\n} from '@milkdown/kit/component/list-item-block'\n\nimport type { DefineFeature, Icon } from '../shared'\n\nimport {\n bulletIcon,\n checkBoxCheckedIcon,\n checkBoxUncheckedIcon,\n} from '../../icons'\n\nexport interface ListItemConfig {\n bulletIcon: Icon\n checkBoxCheckedIcon: Icon\n checkBoxUncheckedIcon: Icon\n}\n\nexport type ListItemFeatureConfig = Partial<ListItemConfig>\n\nfunction configureListItem(ctx: Ctx, config?: ListItemFeatureConfig) {\n ctx.set(listItemBlockConfig.key, {\n renderLabel: ({ label, listType, checked }) => {\n if (checked == null) {\n if (listType === 'bullet') return config?.bulletIcon?.() ?? bulletIcon\n\n return label\n }\n\n if (checked) return config?.checkBoxCheckedIcon?.() ?? checkBoxCheckedIcon\n\n return config?.checkBoxUncheckedIcon?.() ?? checkBoxUncheckedIcon\n },\n })\n}\n\nexport const defineFeature: DefineFeature<ListItemFeatureConfig> = (\n editor,\n config\n) => {\n editor\n .config((ctx) => configureListItem(ctx, config))\n .use(listItemBlockComponent)\n}\n"],"names":["listItemBlockConfig","listItemBlockComponent"],"mappings":";;;;AAAO,MAAM,UAAa,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAAA;;ACAnB,MAAM,mBAAsB,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAAA;;ACA5B,MAAM,qBAAwB,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAAA;;ACuBrC,SAAS,iBAAA,CAAkB,KAAU,MAAgC,EAAA;AACnE,EAAI,GAAA,CAAA,GAAA,CAAIA,kCAAoB,GAAK,EAAA;AAAA,IAC/B,aAAa,CAAC,EAAE,KAAO,EAAA,QAAA,EAAU,SAAc,KAAA;AAzBnD,MAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA;AA0BM,MAAA,IAAI,WAAW,IAAM,EAAA;AACnB,QAAA,IAAI,QAAa,KAAA,QAAA,EAAiB,OAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,MAAA,IAAA,IAAA,GAAA,MAAA,GAAA,MAAA,CAAQ,eAAR,IAA0B,GAAA,MAAA,GAAA,EAAA,CAAA,IAAA,CAAA,MAAA,CAAA,KAAA,IAAA,GAAA,EAAA,GAAA,UAAA;AAE5D,QAAO,OAAA,KAAA;AAAA;AAGT,MAAA,IAAI,OAAS,EAAA,OAAA,CAAO,EAAQ,GAAA,CAAA,EAAA,GAAA,MAAA,IAAA,IAAA,GAAA,MAAA,GAAA,MAAA,CAAA,mBAAA,KAAR,IAAmC,GAAA,MAAA,GAAA,EAAA,CAAA,IAAA,CAAA,MAAA,CAAA,KAAA,IAAA,GAAA,EAAA,GAAA,mBAAA;AAEvD,MAAO,OAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,MAAA,IAAA,IAAA,GAAA,MAAA,GAAA,MAAA,CAAQ,0BAAR,IAAqC,GAAA,MAAA,GAAA,EAAA,CAAA,IAAA,CAAA,MAAA,CAAA,KAAA,IAAA,GAAA,EAAA,GAAA,qBAAA;AAAA;AAC9C,GACD,CAAA;AACH;AAEa,MAAA,aAAA,GAAsD,CACjE,MAAA,EACA,MACG,KAAA;AACH,EACG,MAAA,CAAA,MAAA,CAAO,CAAC,GAAQ,KAAA,iBAAA,CAAkB,KAAK,MAAM,CAAC,CAC9C,CAAA,GAAA,CAAIC,oCAAsB,CAAA;AAC/B;;;;"}