@milkdown/crepe 7.5.9 → 7.6.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 (175) hide show
  1. package/lib/cjs/index-6oBtF_11.js +26 -0
  2. package/lib/cjs/{index-BIXWL4Or.js.map → index-6oBtF_11.js.map} +1 -1
  3. package/lib/cjs/{index-Dt55rF23.js → index-8COAwUnB.js} +5 -5
  4. package/lib/cjs/{index-Dt55rF23.js.map → index-8COAwUnB.js.map} +1 -1
  5. package/lib/cjs/{index-By3ewOiO.js → index-B4NxKjEA.js} +52 -52
  6. package/lib/cjs/index-B4NxKjEA.js.map +1 -0
  7. package/lib/cjs/{index-Dub20F3z.js → index-BOmVuuoY.js} +3 -3
  8. package/lib/cjs/{index-Dub20F3z.js.map → index-BOmVuuoY.js.map} +1 -1
  9. package/lib/cjs/{index-BuSAwj4j.js → index-C4JjdSvv.js} +3 -3
  10. package/lib/cjs/{index-BuSAwj4j.js.map → index-C4JjdSvv.js.map} +1 -1
  11. package/lib/cjs/index-C6EzkFZ_.js +39 -0
  12. package/lib/cjs/{index-DmOOfQPi.js.map → index-C6EzkFZ_.js.map} +1 -1
  13. package/lib/cjs/index-D0OPKY6K.js +65 -0
  14. package/lib/cjs/index-D0OPKY6K.js.map +1 -0
  15. package/lib/cjs/index-DkHBuNoK.js +176 -0
  16. package/lib/cjs/index-DkHBuNoK.js.map +1 -0
  17. package/lib/cjs/index-DnFbvtbD.js +278 -0
  18. package/lib/cjs/index-DnFbvtbD.js.map +1 -0
  19. package/lib/cjs/{index-AlHHvSR_.js → index-YUwSTgPK.js} +3 -3
  20. package/lib/cjs/{index-AlHHvSR_.js.map → index-YUwSTgPK.js.map} +1 -1
  21. package/lib/cjs/{index-A8IrOmzS.js → index-koRsjvWB.js} +116 -18
  22. package/lib/cjs/index-koRsjvWB.js.map +1 -0
  23. package/lib/cjs/index-nDWnWxJ8.js +38 -0
  24. package/lib/cjs/{index-CtNE-wHT.js.map → index-nDWnWxJ8.js.map} +1 -1
  25. package/lib/cjs/index.js +13 -148
  26. package/lib/cjs/index.js.map +1 -1
  27. package/lib/cjs/inline-latex-CwU8Nsfj.js +54 -0
  28. package/lib/cjs/inline-latex-CwU8Nsfj.js.map +1 -0
  29. package/lib/cjs/{todoList-V4JWO5-M.js → todo-list-V4JWO5-M.js} +1 -1
  30. package/lib/cjs/todo-list-V4JWO5-M.js.map +1 -0
  31. package/lib/esm/index-BOzN8fKq.js +36 -0
  32. package/lib/esm/{index-BEWessT5.js.map → index-BOzN8fKq.js.map} +1 -1
  33. package/lib/esm/index-BUFg1FSH.js +172 -0
  34. package/lib/esm/index-BUFg1FSH.js.map +1 -0
  35. package/lib/esm/index-BxpDIDRS.js +63 -0
  36. package/lib/esm/index-BxpDIDRS.js.map +1 -0
  37. package/lib/esm/index-C5_dM0IB.js +276 -0
  38. package/lib/esm/index-C5_dM0IB.js.map +1 -0
  39. package/lib/esm/{index-DlX33Dj0.js → index-C7Xr_l-d.js} +5 -5
  40. package/lib/esm/{index-DlX33Dj0.js.map → index-C7Xr_l-d.js.map} +1 -1
  41. package/lib/esm/{index-CxJ9fxJm.js → index-C7_YCA3P.js} +3 -3
  42. package/lib/esm/{index-CxJ9fxJm.js.map → index-C7_YCA3P.js.map} +1 -1
  43. package/lib/esm/index-C8tiRHTF.js +37 -0
  44. package/lib/esm/{index-BDGHz9p-.js.map → index-C8tiRHTF.js.map} +1 -1
  45. package/lib/esm/{index-D6fLMv29.js → index-CD8fvrRC.js} +3 -3
  46. package/lib/esm/{index-D6fLMv29.js.map → index-CD8fvrRC.js.map} +1 -1
  47. package/lib/esm/index-CEup1V8i.js +24 -0
  48. package/lib/esm/{index-6VoEpEnX.js.map → index-CEup1V8i.js.map} +1 -1
  49. package/lib/esm/{index-kGl7HgN2.js → index-DroARb55.js} +117 -19
  50. package/lib/esm/index-DroARb55.js.map +1 -0
  51. package/lib/esm/{index-zKiGjwHz.js → index-HnGoJxjJ.js} +52 -52
  52. package/lib/esm/index-HnGoJxjJ.js.map +1 -0
  53. package/lib/esm/{index-DOrkOhki.js → index-WCe-Xh61.js} +3 -3
  54. package/lib/esm/{index-DOrkOhki.js.map → index-WCe-Xh61.js.map} +1 -1
  55. package/lib/esm/index.js +11 -150
  56. package/lib/esm/index.js.map +1 -1
  57. package/lib/esm/inline-latex-BLd2QrJC.js +51 -0
  58. package/lib/esm/inline-latex-BLd2QrJC.js.map +1 -0
  59. package/lib/esm/{todoList-CAbx4396.js → todo-list-B78GeGtK.js} +2 -2
  60. package/lib/esm/todo-list-B78GeGtK.js.map +1 -0
  61. package/lib/theme/common/code-mirror.css +93 -34
  62. package/lib/theme/common/latex.css +44 -0
  63. package/lib/theme/common/style.css +1 -0
  64. package/lib/types/core/crepe.d.ts +2 -0
  65. package/lib/types/core/crepe.d.ts.map +1 -1
  66. package/lib/types/feature/code-mirror/index.d.ts +6 -2
  67. package/lib/types/feature/code-mirror/index.d.ts.map +1 -1
  68. package/lib/types/feature/index.d.ts +4 -1
  69. package/lib/types/feature/index.d.ts.map +1 -1
  70. package/lib/types/feature/latex/block-latex.d.ts +2 -0
  71. package/lib/types/feature/latex/block-latex.d.ts.map +1 -0
  72. package/lib/types/feature/latex/index.d.ts +9 -0
  73. package/lib/types/feature/latex/index.d.ts.map +1 -0
  74. package/lib/types/feature/latex/inline-latex.d.ts +3 -0
  75. package/lib/types/feature/latex/inline-latex.d.ts.map +1 -0
  76. package/lib/types/feature/latex/inline-tooltip/component.d.ts +15 -0
  77. package/lib/types/feature/latex/inline-tooltip/component.d.ts.map +1 -0
  78. package/lib/types/feature/latex/inline-tooltip/tooltip.d.ts +2 -0
  79. package/lib/types/feature/latex/inline-tooltip/tooltip.d.ts.map +1 -0
  80. package/lib/types/feature/latex/inline-tooltip/view.d.ts +13 -0
  81. package/lib/types/feature/latex/inline-tooltip/view.d.ts.map +1 -0
  82. package/lib/types/feature/latex/input-rule.d.ts +3 -0
  83. package/lib/types/feature/latex/input-rule.d.ts.map +1 -0
  84. package/lib/types/feature/latex/remark.d.ts +3 -0
  85. package/lib/types/feature/latex/remark.d.ts.map +1 -0
  86. package/lib/types/feature/shared.d.ts +1 -1
  87. package/lib/types/feature/shared.d.ts.map +1 -1
  88. package/lib/types/feature/toolbar/component.d.ts +2 -0
  89. package/lib/types/feature/toolbar/component.d.ts.map +1 -1
  90. package/lib/types/feature/toolbar/index.d.ts +1 -0
  91. package/lib/types/feature/toolbar/index.d.ts.map +1 -1
  92. package/lib/types/icons/{alignCenter.d.ts → align-center.d.ts} +1 -1
  93. package/lib/types/icons/align-center.d.ts.map +1 -0
  94. package/lib/types/icons/{alignLeft.d.ts → align-left.d.ts} +1 -1
  95. package/lib/types/icons/align-left.d.ts.map +1 -0
  96. package/lib/types/icons/{alignRight.d.ts → align-right.d.ts} +1 -1
  97. package/lib/types/icons/align-right.d.ts.map +1 -0
  98. package/lib/types/icons/{bulletList.d.ts → bullet-list.d.ts} +1 -1
  99. package/lib/types/icons/bullet-list.d.ts.map +1 -0
  100. package/lib/types/icons/{checkBoxChecked.d.ts → check-box-checked.d.ts} +1 -1
  101. package/lib/types/icons/check-box-checked.d.ts.map +1 -0
  102. package/lib/types/icons/{checkBoxUnchecked.d.ts → check-box-unchecked.d.ts} +1 -1
  103. package/lib/types/icons/check-box-unchecked.d.ts.map +1 -0
  104. package/lib/types/icons/{chevronDown.d.ts → chevron-down.d.ts} +1 -1
  105. package/lib/types/icons/chevron-down.d.ts.map +1 -0
  106. package/lib/types/icons/{dragHandle.d.ts → drag-handle.d.ts} +1 -1
  107. package/lib/types/icons/drag-handle.d.ts.map +1 -0
  108. package/lib/types/icons/functions.d.ts +2 -0
  109. package/lib/types/icons/functions.d.ts.map +1 -0
  110. package/lib/types/icons/index.d.ts +10 -10
  111. package/lib/types/icons/index.d.ts.map +1 -1
  112. package/lib/types/icons/{orderedList.d.ts → ordered-list.d.ts} +1 -1
  113. package/lib/types/icons/ordered-list.d.ts.map +1 -0
  114. package/lib/types/icons/{todoList.d.ts → todo-list.d.ts} +1 -1
  115. package/lib/types/icons/todo-list.d.ts.map +1 -0
  116. package/lib/types/icons/visibility-off.d.ts +2 -0
  117. package/lib/types/icons/visibility-off.d.ts.map +1 -0
  118. package/package.json +7 -4
  119. package/src/core/crepe.ts +19 -0
  120. package/src/feature/block-edit/handle/index.ts +1 -1
  121. package/src/feature/code-mirror/index.ts +23 -3
  122. package/src/feature/index.ts +8 -0
  123. package/src/feature/latex/block-latex.ts +25 -0
  124. package/src/feature/latex/index.ts +73 -0
  125. package/src/feature/latex/inline-latex.ts +55 -0
  126. package/src/feature/latex/inline-tooltip/component.ts +38 -0
  127. package/src/feature/latex/inline-tooltip/tooltip.ts +3 -0
  128. package/src/feature/latex/inline-tooltip/view.ts +122 -0
  129. package/src/feature/latex/input-rule.ts +25 -0
  130. package/src/feature/latex/remark.ts +35 -0
  131. package/src/feature/shared.ts +1 -1
  132. package/src/feature/toolbar/component.ts +91 -3
  133. package/src/feature/toolbar/index.ts +3 -1
  134. package/src/icons/functions.ts +15 -0
  135. package/src/icons/index.ts +10 -10
  136. package/src/icons/visibility-off.ts +14 -0
  137. package/src/theme/common/code-mirror.css +95 -34
  138. package/src/theme/common/latex.css +44 -0
  139. package/src/theme/common/style.css +1 -0
  140. package/lib/cjs/index-3mj4YaCA.js +0 -43
  141. package/lib/cjs/index-3mj4YaCA.js.map +0 -1
  142. package/lib/cjs/index-A8IrOmzS.js.map +0 -1
  143. package/lib/cjs/index-BIXWL4Or.js +0 -26
  144. package/lib/cjs/index-By3ewOiO.js.map +0 -1
  145. package/lib/cjs/index-CtNE-wHT.js +0 -38
  146. package/lib/cjs/index-DmOOfQPi.js +0 -39
  147. package/lib/cjs/todoList-V4JWO5-M.js.map +0 -1
  148. package/lib/esm/index-6VoEpEnX.js +0 -24
  149. package/lib/esm/index-BB3Rq6BU.js +0 -41
  150. package/lib/esm/index-BB3Rq6BU.js.map +0 -1
  151. package/lib/esm/index-BDGHz9p-.js +0 -37
  152. package/lib/esm/index-BEWessT5.js +0 -36
  153. package/lib/esm/index-kGl7HgN2.js.map +0 -1
  154. package/lib/esm/index-zKiGjwHz.js.map +0 -1
  155. package/lib/esm/todoList-CAbx4396.js.map +0 -1
  156. package/lib/types/icons/alignCenter.d.ts.map +0 -1
  157. package/lib/types/icons/alignLeft.d.ts.map +0 -1
  158. package/lib/types/icons/alignRight.d.ts.map +0 -1
  159. package/lib/types/icons/bulletList.d.ts.map +0 -1
  160. package/lib/types/icons/checkBoxChecked.d.ts.map +0 -1
  161. package/lib/types/icons/checkBoxUnchecked.d.ts.map +0 -1
  162. package/lib/types/icons/chevronDown.d.ts.map +0 -1
  163. package/lib/types/icons/dragHandle.d.ts.map +0 -1
  164. package/lib/types/icons/orderedList.d.ts.map +0 -1
  165. package/lib/types/icons/todoList.d.ts.map +0 -1
  166. /package/src/icons/{alignCenter.ts → align-center.ts} +0 -0
  167. /package/src/icons/{alignLeft.ts → align-left.ts} +0 -0
  168. /package/src/icons/{alignRight.ts → align-right.ts} +0 -0
  169. /package/src/icons/{bulletList.ts → bullet-list.ts} +0 -0
  170. /package/src/icons/{checkBoxChecked.ts → check-box-checked.ts} +0 -0
  171. /package/src/icons/{checkBoxUnchecked.ts → check-box-unchecked.ts} +0 -0
  172. /package/src/icons/{chevronDown.ts → chevron-down.ts} +0 -0
  173. /package/src/icons/{dragHandle.ts → drag-handle.ts} +0 -0
  174. /package/src/icons/{orderedList.ts → ordered-list.ts} +0 -0
  175. /package/src/icons/{todoList.ts → todo-list.ts} +0 -0
@@ -0,0 +1,39 @@
1
+ 'use strict';
2
+
3
+ var tableBlock = require('@milkdown/kit/component/table-block');
4
+ var todoList = require('./todo-list-V4JWO5-M.js');
5
+ require('atomico');
6
+
7
+ const defineFeature = (editor, config) => {
8
+ editor.config((ctx) => {
9
+ ctx.update(tableBlock.tableBlockConfig.key, (defaultConfig) => ({
10
+ ...defaultConfig,
11
+ renderButton: (renderType) => {
12
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r;
13
+ switch (renderType) {
14
+ case "add_row":
15
+ return (_b = (_a = config == null ? undefined : config.addRowIcon) == null ? undefined : _a.call(config)) != null ? _b : todoList.plusIcon;
16
+ case "add_col":
17
+ return (_d = (_c = config == null ? undefined : config.addColIcon) == null ? undefined : _c.call(config)) != null ? _d : todoList.plusIcon;
18
+ case "delete_row":
19
+ return (_f = (_e = config == null ? undefined : config.deleteRowIcon) == null ? undefined : _e.call(config)) != null ? _f : todoList.removeIcon;
20
+ case "delete_col":
21
+ return (_h = (_g = config == null ? undefined : config.deleteColIcon) == null ? undefined : _g.call(config)) != null ? _h : todoList.removeIcon;
22
+ case "align_col_left":
23
+ return (_j = (_i = config == null ? undefined : config.alignLeftIcon) == null ? undefined : _i.call(config)) != null ? _j : todoList.alignLeftIcon;
24
+ case "align_col_center":
25
+ return (_l = (_k = config == null ? undefined : config.alignCenterIcon) == null ? undefined : _k.call(config)) != null ? _l : todoList.alignCenterIcon;
26
+ case "align_col_right":
27
+ return (_n = (_m = config == null ? undefined : config.alignRightIcon) == null ? undefined : _m.call(config)) != null ? _n : todoList.alignRightIcon;
28
+ case "col_drag_handle":
29
+ return (_p = (_o = config == null ? undefined : config.colDragHandleIcon) == null ? undefined : _o.call(config)) != null ? _p : todoList.dragHandleIcon;
30
+ case "row_drag_handle":
31
+ return (_r = (_q = config == null ? undefined : config.rowDragHandleIcon) == null ? undefined : _q.call(config)) != null ? _r : todoList.dragHandleIcon;
32
+ }
33
+ }
34
+ }));
35
+ }).use(tableBlock.tableBlock);
36
+ };
37
+
38
+ exports.defineFeature = defineFeature;
39
+ //# sourceMappingURL=index-C6EzkFZ_.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index-DmOOfQPi.js","sources":["../../src/feature/table/index.ts"],"sourcesContent":["import {\n tableBlock,\n tableBlockConfig,\n} from '@milkdown/kit/component/table-block'\nimport type { DefineFeature, Icon } from '../shared'\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","alignLeftIcon","alignCenterIcon","alignRightIcon","dragHandleIcon","tableBlock"],"mappings":"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"}
1
+ {"version":3,"file":"index-C6EzkFZ_.js","sources":["../../src/feature/table/index.ts"],"sourcesContent":["import {\n tableBlock,\n tableBlockConfig,\n} from '@milkdown/kit/component/table-block'\nimport type { DefineFeature, Icon } from '../shared'\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","alignLeftIcon","alignCenterIcon","alignRightIcon","dragHandleIcon","tableBlock"],"mappings":"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"}
@@ -0,0 +1,65 @@
1
+ 'use strict';
2
+
3
+ var codeBlock = require('@milkdown/kit/component/code-block');
4
+ var codemirror = require('codemirror');
5
+ var view = require('@codemirror/view');
6
+ var commands = require('@codemirror/commands');
7
+ var atomico = require('atomico');
8
+ var todoList = require('./todo-list-V4JWO5-M.js');
9
+
10
+ const visibilityOffIcon = atomico.html`
11
+ <svg
12
+ xmlns="http://www.w3.org/2000/svg"
13
+ height="24px"
14
+ viewBox="0 -960 960 960"
15
+ width="24px"
16
+ >
17
+ <path
18
+ 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"
19
+ />
20
+ </svg>
21
+ `;
22
+
23
+ const defineFeature = (editor, config = {}) => {
24
+ editor.config(async (ctx) => {
25
+ let { languages, theme } = config;
26
+ if (!languages) {
27
+ const { languages: langList } = await import('@codemirror/language-data');
28
+ languages = langList;
29
+ }
30
+ if (!theme) {
31
+ const { oneDark } = await import('@codemirror/theme-one-dark');
32
+ theme = oneDark;
33
+ }
34
+ ctx.update(codeBlock.codeBlockConfig.key, (defaultConfig) => {
35
+ var _a;
36
+ return {
37
+ extensions: [
38
+ view.keymap.of(commands.defaultKeymap.concat(commands.indentWithTab)),
39
+ codemirror.basicSetup,
40
+ theme,
41
+ ...(_a = config == null ? undefined : config.extensions) != null ? _a : []
42
+ ],
43
+ languages,
44
+ expandIcon: config.expandIcon || (() => todoList.chevronDownIcon),
45
+ searchIcon: config.searchIcon || (() => todoList.searchIcon),
46
+ clearSearchIcon: config.clearSearchIcon || (() => todoList.clearIcon),
47
+ searchPlaceholder: config.searchPlaceholder || "Search language",
48
+ noResultText: config.noResultText || "No result",
49
+ renderLanguage: config.renderLanguage || defaultConfig.renderLanguage,
50
+ renderPreview: config.renderPreview || defaultConfig.renderPreview,
51
+ previewToggleButton: (previewOnlyMode) => {
52
+ var _a2, _b;
53
+ return atomico.html`
54
+ ${((_a2 = config.previewToggleIcon) == null ? undefined : _a2.call(config, previewOnlyMode)) || (previewOnlyMode ? todoList.editIcon : visibilityOffIcon)}
55
+ ${((_b = config.previewToggleText) == null ? undefined : _b.call(config, previewOnlyMode)) || (previewOnlyMode ? "Edit" : "Hide")}
56
+ `;
57
+ },
58
+ previewLabel: config.previewLabel || defaultConfig.previewLabel
59
+ };
60
+ });
61
+ }).use(codeBlock.codeBlockComponent);
62
+ };
63
+
64
+ exports.defineFeature = defineFeature;
65
+ //# sourceMappingURL=index-D0OPKY6K.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-D0OPKY6K.js","sources":["../../src/icons/visibility-off.ts","../../src/feature/code-mirror/index.ts"],"sourcesContent":["import { html } from 'atomico'\n\nexport const visibilityOffIcon = html`\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 {\n codeBlockComponent,\n codeBlockConfig,\n} from '@milkdown/kit/component/code-block'\nimport type { LanguageDescription } from '@codemirror/language'\nimport type { Extension } from '@codemirror/state'\nimport { basicSetup } from 'codemirror'\nimport { keymap } from '@codemirror/view'\nimport { defaultKeymap, indentWithTab } from '@codemirror/commands'\nimport { html } from 'atomico'\nimport type { DefineFeature, Icon } from '../shared'\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: (\n language: string,\n selected: boolean\n ) => ReturnType<typeof html> | 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) => ReturnType<typeof html>\n previewLabel: () => ReturnType<typeof html>\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 return html`\n ${config.previewToggleIcon?.(previewOnlyMode) ||\n (previewOnlyMode ? editIcon : visibilityOffIcon)}\n ${config.previewToggleText?.(previewOnlyMode) ||\n (previewOnlyMode ? 'Edit' : 'Hide')}\n `\n },\n previewLabel: config.previewLabel || defaultConfig.previewLabel,\n }))\n })\n .use(codeBlockComponent)\n}\n"],"names":["html","codeBlockConfig","keymap","defaultKeymap","indentWithTab","basicSetup","chevronDownIcon","searchIcon","clearIcon","_a","editIcon","codeBlockComponent"],"mappings":";;;;;;;;;AAEO,MAAM,iBAAoB,GAAAA,YAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAAA;;ACwC1B,MAAM,aAAwD,GAAA,CACnE,MACA,EAAA,MAAA,GAAS,EACN,KAAA;AACH,EACG,MAAA,CAAA,MAAA,CAAO,OAAO,GAAQ,KAAA;AACrB,IAAI,IAAA,EAAE,SAAW,EAAA,KAAA,EAAU,GAAA,MAAA;AAC3B,IAAA,IAAI,CAAC,SAAW,EAAA;AACd,MAAA,MAAM,EAAE,SAAW,EAAA,QAAA,EAAa,GAAA,MAAM,OACpC,2BACF,CAAA;AACA,MAAY,SAAA,GAAA,QAAA;AAAA;AAEd,IAAA,IAAI,CAAC,KAAO,EAAA;AACV,MAAA,MAAM,EAAE,OAAA,EAAY,GAAA,MAAM,OAAO,4BAA4B,CAAA;AAC7D,MAAQ,KAAA,GAAA,OAAA;AAAA;AAEV,IAAA,GAAA,CAAI,MAAO,CAAAC,yBAAA,CAAgB,GAAK,EAAA,CAAC,aAAe,KAAA;AA3DtD,MAAA,IAAA,EAAA;AA2D0D,MAAA,OAAA;AAAA,QAClD,UAAY,EAAA;AAAA,UACVC,WAAO,CAAA,EAAA,CAAGC,sBAAc,CAAA,MAAA,CAAOC,sBAAa,CAAC,CAAA;AAAA,UAC7CC,qBAAA;AAAA,UACA,KAAA;AAAA,UACA,GAAI,CAAA,EAAA,GAAA,MAAA,IAAA,IAAA,GAAA,SAAA,GAAA,MAAA,CAAQ,UAAR,KAAA,IAAA,GAAA,EAAA,GAAsB;AAAC,SAC7B;AAAA,QACA,SAAA;AAAA,QAEA,UAAA,EAAY,MAAO,CAAA,UAAA,KAAe,MAAMC,wBAAA,CAAA;AAAA,QACxC,UAAA,EAAY,MAAO,CAAA,UAAA,KAAe,MAAMC,mBAAA,CAAA;AAAA,QACxC,eAAA,EAAiB,MAAO,CAAA,eAAA,KAAoB,MAAMC,kBAAA,CAAA;AAAA,QAClD,iBAAA,EAAmB,OAAO,iBAAqB,IAAA,iBAAA;AAAA,QAC/C,YAAA,EAAc,OAAO,YAAgB,IAAA,WAAA;AAAA,QACrC,cAAA,EAAgB,MAAO,CAAA,cAAA,IAAkB,aAAc,CAAA,cAAA;AAAA,QACvD,aAAA,EAAe,MAAO,CAAA,aAAA,IAAiB,aAAc,CAAA,aAAA;AAAA,QACrD,mBAAA,EAAqB,CAAC,eAAoB,KAAA;AA3ElD,UAAA,IAAAC,GAAA,EAAA,EAAA;AA4EU,UAAO,OAAAT,YAAA;AAAA,YACHS,EAAAA,CAAAA,CAAAA,GAAAA,GAAA,OAAO,iBAAP,KAAA,IAAA,GAAA,SAAA,GAAAA,IAAA,IAA2B,CAAA,MAAA,EAAA,eAAA,CAAA,MAC5B,eAAkB,GAAAC,iBAAA,GAAW,iBAAkB,CAAA;AAAA,YAAA,EAAA,CAAA,CAC9C,YAAO,iBAAP,KAAA,IAAA,GAAA,SAAA,GAAA,EAAA,CAAA,IAAA,CAAA,MAAA,EAA2B,eAC5B,CAAA,MAAA,eAAA,GAAkB,SAAS,MAAO,CAAA;AAAA,UAAA,CAAA;AAAA,SAEvC;AAAA,QACA,YAAA,EAAc,MAAO,CAAA,YAAA,IAAgB,aAAc,CAAA;AAAA,OACrD;AAAA,KAAE,CAAA;AAAA,GACH,CACA,CAAA,GAAA,CAAIC,4BAAkB,CAAA;AAC3B;;;;"}
@@ -0,0 +1,176 @@
1
+ 'use strict';
2
+
3
+ var core = require('@milkdown/kit/core');
4
+ var commonmark = require('@milkdown/kit/preset/commonmark');
5
+ var gfm = require('@milkdown/kit/preset/gfm');
6
+ var history = require('@milkdown/kit/plugin/history');
7
+ var indent = require('@milkdown/kit/plugin/indent');
8
+ var utils = require('@milkdown/kit/utils');
9
+ var clipboard = require('@milkdown/kit/plugin/clipboard');
10
+ var trailing = require('@milkdown/kit/plugin/trailing');
11
+ var ctx = require('@milkdown/kit/ctx');
12
+ var listener = require('@milkdown/kit/plugin/listener');
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-D0OPKY6K.js'); });
43
+ return defineFeature(editor, config);
44
+ }
45
+ case "list-item" /* ListItem */: {
46
+ const { defineFeature } = await Promise.resolve().then(function () { return require('./index-8COAwUnB.js'); });
47
+ return defineFeature(editor, config);
48
+ }
49
+ case "link-tooltip" /* LinkTooltip */: {
50
+ const { defineFeature } = await Promise.resolve().then(function () { return require('./index-6oBtF_11.js'); });
51
+ return defineFeature(editor, config);
52
+ }
53
+ case "image-block" /* ImageBlock */: {
54
+ const { defineFeature } = await Promise.resolve().then(function () { return require('./index-nDWnWxJ8.js'); });
55
+ return defineFeature(editor, config);
56
+ }
57
+ case "cursor" /* Cursor */: {
58
+ const { defineFeature } = await Promise.resolve().then(function () { return require('./index-C4JjdSvv.js'); });
59
+ return defineFeature(editor, config);
60
+ }
61
+ case "block-edit" /* BlockEdit */: {
62
+ const { defineFeature } = await Promise.resolve().then(function () { return require('./index-B4NxKjEA.js'); });
63
+ return defineFeature(editor, config);
64
+ }
65
+ case "placeholder" /* Placeholder */: {
66
+ const { defineFeature } = await Promise.resolve().then(function () { return require('./index-BOmVuuoY.js'); });
67
+ return defineFeature(editor, config);
68
+ }
69
+ case "toolbar" /* Toolbar */: {
70
+ const { defineFeature } = await Promise.resolve().then(function () { return require('./index-koRsjvWB.js'); });
71
+ return defineFeature(editor, config);
72
+ }
73
+ case "table" /* Table */: {
74
+ const { defineFeature } = await Promise.resolve().then(function () { return require('./index-C6EzkFZ_.js'); });
75
+ return defineFeature(editor, config);
76
+ }
77
+ case "latex" /* Latex */: {
78
+ const { defineFeature } = await Promise.resolve().then(function () { return require('./index-DnFbvtbD.js'); });
79
+ return defineFeature(editor, config);
80
+ }
81
+ }
82
+ }
83
+
84
+ const FeaturesCtx = ctx.createSlice([], "FeaturesCtx");
85
+ function configureFeatures(features) {
86
+ return (ctx) => {
87
+ ctx.inject(FeaturesCtx, features);
88
+ };
89
+ }
90
+
91
+ var __typeError = (msg) => {
92
+ throw TypeError(msg);
93
+ };
94
+ var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
95
+ var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
96
+ 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);
97
+ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), member.set(obj, value), value);
98
+ var _editor, _initPromise, _rootElement, _editable;
99
+ class Crepe {
100
+ constructor({
101
+ root,
102
+ features = {},
103
+ featureConfigs = {},
104
+ defaultValue = ""
105
+ }) {
106
+ __privateAdd(this, _editor);
107
+ __privateAdd(this, _initPromise);
108
+ __privateAdd(this, _rootElement);
109
+ __privateAdd(this, _editable, true);
110
+ var _a;
111
+ const enabledFeatures = Object.entries({
112
+ ...defaultFeatures,
113
+ ...features
114
+ }).filter(([, enabled]) => enabled).map(([feature]) => feature);
115
+ __privateSet(this, _rootElement, (_a = typeof root === "string" ? document.querySelector(root) : root) != null ? _a : document.body);
116
+ __privateSet(this, _editor, core.Editor.make().config(configureFeatures(enabledFeatures)).config((ctx) => {
117
+ ctx.set(core.rootCtx, __privateGet(this, _rootElement));
118
+ ctx.set(core.defaultValueCtx, defaultValue);
119
+ ctx.set(core.editorViewOptionsCtx, {
120
+ editable: () => __privateGet(this, _editable)
121
+ });
122
+ ctx.update(indent.indentConfig.key, (value) => ({
123
+ ...value,
124
+ size: 4
125
+ }));
126
+ }).use(commonmark.commonmark).use(listener.listener).use(history.history).use(indent.indent).use(trailing.trailing).use(clipboard.clipboard).use(gfm.gfm));
127
+ const promiseList = [];
128
+ enabledFeatures.forEach((feature) => {
129
+ const config = featureConfigs[feature];
130
+ promiseList.push(loadFeature(feature, __privateGet(this, _editor), config));
131
+ });
132
+ __privateSet(this, _initPromise, Promise.all(promiseList));
133
+ }
134
+ async create() {
135
+ await __privateGet(this, _initPromise);
136
+ return __privateGet(this, _editor).create();
137
+ }
138
+ async destroy() {
139
+ await __privateGet(this, _initPromise);
140
+ return __privateGet(this, _editor).destroy();
141
+ }
142
+ get editor() {
143
+ return __privateGet(this, _editor);
144
+ }
145
+ setReadonly(value) {
146
+ __privateSet(this, _editable, !value);
147
+ return this;
148
+ }
149
+ getMarkdown() {
150
+ return __privateGet(this, _editor).action(utils.getMarkdown());
151
+ }
152
+ on(fn) {
153
+ if (__privateGet(this, _editor).status !== core.EditorStatus.Created) {
154
+ __privateGet(this, _editor).config((ctx) => {
155
+ const listener2 = ctx.get(listener.listenerCtx);
156
+ fn(listener2);
157
+ });
158
+ return this;
159
+ }
160
+ __privateGet(this, _editor).action((ctx) => {
161
+ const listener2 = ctx.get(listener.listenerCtx);
162
+ fn(listener2);
163
+ });
164
+ return this;
165
+ }
166
+ }
167
+ _editor = new WeakMap();
168
+ _initPromise = new WeakMap();
169
+ _rootElement = new WeakMap();
170
+ _editable = new WeakMap();
171
+ Crepe.Feature = CrepeFeature;
172
+
173
+ exports.Crepe = Crepe;
174
+ exports.CrepeFeature = CrepeFeature;
175
+ exports.FeaturesCtx = FeaturesCtx;
176
+ //# sourceMappingURL=index-DkHBuNoK.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-DkHBuNoK.js","sources":["../../src/feature/index.ts","../../src/core/slice.ts","../../src/core/crepe.ts"],"sourcesContent":["import type { Editor } from '@milkdown/kit/core'\nimport type { PlaceHolderFeatureConfig } from './placeholder'\nimport type { CodeMirrorFeatureConfig } from './code-mirror'\nimport type { BlockEditFeatureConfig } from './block-edit'\nimport type { CursorFeatureConfig } from './cursor'\nimport type { ImageBlockFeatureConfig } from './image-block'\nimport type { LinkTooltipFeatureConfig } from './link-tooltip'\nimport type { ListItemFeatureConfig } from './list-item'\nimport type { ToolbarFeatureConfig } from './toolbar'\nimport type { TableFeatureConfig } from './table'\nimport type { LatexFeatureConfig } from './latex'\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'\nimport { createSlice } from '@milkdown/kit/ctx'\nimport type { CrepeFeature } from '../feature'\n\nexport const FeaturesCtx = createSlice([] as CrepeFeature[], 'FeaturesCtx')\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 {\n Editor,\n EditorStatus,\n defaultValueCtx,\n editorViewOptionsCtx,\n rootCtx,\n} from '@milkdown/kit/core'\n\nimport { commonmark } from '@milkdown/kit/preset/commonmark'\nimport { gfm } from '@milkdown/kit/preset/gfm'\nimport { history } from '@milkdown/kit/plugin/history'\nimport { indent, indentConfig } from '@milkdown/kit/plugin/indent'\nimport { getMarkdown } from '@milkdown/kit/utils'\nimport { clipboard } from '@milkdown/kit/plugin/clipboard'\nimport { trailing } from '@milkdown/kit/plugin/trailing'\n\nimport type { CrepeFeatureConfig } from '../feature'\nimport { CrepeFeature, defaultFeatures, loadFeature } from '../feature'\nimport { configureFeatures } from './slice'\nimport type { ListenerManager } from '@milkdown/kit/plugin/listener'\nimport { listener, listenerCtx } from '@milkdown/kit/plugin/listener'\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(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 async create() {\n await this.#initPromise\n return this.#editor.create()\n }\n\n async destroy() {\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 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","Editor","rootCtx","defaultValueCtx","editorViewOptionsCtx","indentConfig","commonmark","listener","history","indent","trailing","clipboard","gfm","getMarkdown","EditorStatus","listenerCtx"],"mappings":";;;;;;;;;;;;;AAYY,IAAA,YAAA,qBAAAA,aAAL,KAAA;AACL,EAAAA,cAAA,YAAa,CAAA,GAAA,aAAA;AACb,EAAAA,cAAA,UAAW,CAAA,GAAA,WAAA;AACX,EAAAA,cAAA,aAAc,CAAA,GAAA,cAAA;AACd,EAAAA,cAAA,QAAS,CAAA,GAAA,QAAA;AACT,EAAAA,cAAA,YAAa,CAAA,GAAA,aAAA;AACb,EAAAA,cAAA,WAAY,CAAA,GAAA,YAAA;AACZ,EAAAA,cAAA,SAAU,CAAA,GAAA,SAAA;AACV,EAAAA,cAAA,aAAc,CAAA,GAAA,aAAA;AACd,EAAAA,cAAA,OAAQ,CAAA,GAAA,OAAA;AACR,EAAAA,cAAA,OAAQ,CAAA,GAAA,OAAA;AAVE,EAAAA,OAAAA,aAAAA;AAAA,CAAA,EAAA,YAAA,IAAA,EAAA;AA0BL,MAAM,eAAiD,GAAA;AAAA,EAC5D,CAAC,wBAAsB,IAAA;AAAA,EACvB,CAAC,6BAAwB,IAAA;AAAA,EACzB,CAAC,mCAA2B,IAAA;AAAA,EAC5B,CAAC,iCAA0B,IAAA;AAAA,EAC3B,CAAC,+BAAyB,IAAA;AAAA,EAC1B,CAAC,kCAA2B,IAAA;AAAA,EAC5B,CAAC,0BAAuB,IAAA;AAAA,EACxB,CAAC,iCAA0B,IAAA;AAAA,EAC3B,CAAC,sBAAqB,IAAA;AAAA,EACtB,CAAC,sBAAqB;AACxB,CAAA;AAEsB,eAAA,WAAA,CACpB,OACA,EAAA,MAAA,EACA,MACA,EAAA;AACA,EAAA,QAAQ,OAAS;AAAA,IACf,KAAK,aAAyB,mBAAA;AAC5B,MAAA,MAAM,EAAE,aAAA,EAAkB,GAAA,MAAM,oDAAO,qBAAe,KAAA;AACtD,MAAO,OAAA,aAAA,CAAc,QAAQ,MAAM,CAAA;AAAA;AACrC,IACA,KAAK,WAAuB,iBAAA;AAC1B,MAAA,MAAM,EAAE,aAAA,EAAkB,GAAA,MAAM,oDAAO,qBAAa,KAAA;AACpD,MAAO,OAAA,aAAA,CAAc,QAAQ,MAAM,CAAA;AAAA;AACrC,IACA,KAAK,cAA0B,oBAAA;AAC7B,MAAA,MAAM,EAAE,aAAA,EAAkB,GAAA,MAAM,oDAAO,qBAAgB,KAAA;AACvD,MAAO,OAAA,aAAA,CAAc,QAAQ,MAAM,CAAA;AAAA;AACrC,IACA,KAAK,aAAyB,mBAAA;AAC5B,MAAA,MAAM,EAAE,aAAA,EAAkB,GAAA,MAAM,oDAAO,qBAAe,KAAA;AACtD,MAAO,OAAA,aAAA,CAAc,QAAQ,MAAM,CAAA;AAAA;AACrC,IACA,KAAK,QAAqB,eAAA;AACxB,MAAA,MAAM,EAAE,aAAA,EAAkB,GAAA,MAAM,oDAAO,qBAAU,KAAA;AACjD,MAAO,OAAA,aAAA,CAAc,QAAQ,MAAM,CAAA;AAAA;AACrC,IACA,KAAK,YAAwB,kBAAA;AAC3B,MAAA,MAAM,EAAE,aAAA,EAAkB,GAAA,MAAM,oDAAO,qBAAc,KAAA;AACrD,MAAO,OAAA,aAAA,CAAc,QAAQ,MAAM,CAAA;AAAA;AACrC,IACA,KAAK,aAA0B,oBAAA;AAC7B,MAAA,MAAM,EAAE,aAAA,EAAkB,GAAA,MAAM,oDAAO,qBAAe,KAAA;AACtD,MAAO,OAAA,aAAA,CAAc,QAAQ,MAAM,CAAA;AAAA;AACrC,IACA,KAAK,SAAsB,gBAAA;AACzB,MAAA,MAAM,EAAE,aAAA,EAAkB,GAAA,MAAM,oDAAO,qBAAW,KAAA;AAClD,MAAO,OAAA,aAAA,CAAc,QAAQ,MAAM,CAAA;AAAA;AACrC,IACA,KAAK,OAAoB,cAAA;AACvB,MAAA,MAAM,EAAE,aAAA,EAAkB,GAAA,MAAM,oDAAO,qBAAS,KAAA;AAChD,MAAO,OAAA,aAAA,CAAc,QAAQ,MAAM,CAAA;AAAA;AACrC,IACA,KAAK,OAAoB,cAAA;AACvB,MAAA,MAAM,EAAE,aAAA,EAAkB,GAAA,MAAM,oDAAO,qBAAS,KAAA;AAChD,MAAO,OAAA,aAAA,CAAc,QAAQ,MAAM,CAAA;AAAA;AACrC;AAEJ;;AC9FO,MAAM,WAAc,GAAAC,eAAA,CAAY,EAAC,EAAqB,aAAa;AAEnE,SAAS,kBAAkB,QAA0B,EAAA;AAC1D,EAAA,OAAO,CAAC,GAAa,KAAA;AACnB,IAAI,GAAA,CAAA,MAAA,CAAO,aAAa,QAAQ,CAAA;AAAA,GAClC;AACF;;;;;;;;;ACVA,IAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,SAAA;AA8BO,MAAM,KAAM,CAAA;AAAA,EAOjB,WAAY,CAAA;AAAA,IACV,IAAA;AAAA,IACA,WAAW,EAAC;AAAA,IACZ,iBAAiB,EAAC;AAAA,IAClB,YAAe,GAAA;AAAA,GACD,EAAA;AAVhB,IAAS,YAAA,CAAA,IAAA,EAAA,OAAA,CAAA;AACT,IAAS,YAAA,CAAA,IAAA,EAAA,YAAA,CAAA;AACT,IAAS,YAAA,CAAA,IAAA,EAAA,YAAA,CAAA;AACT,IAAY,YAAA,CAAA,IAAA,EAAA,SAAA,EAAA,IAAA,CAAA;AAnCd,IAAA,IAAA,EAAA;AA2CI,IAAM,MAAA,eAAA,GAAkB,OAAO,OAAQ,CAAA;AAAA,MACrC,GAAG,eAAA;AAAA,MACH,GAAG;AAAA,KACJ,CAAA,CACE,MAAO,CAAA,CAAC,GAAG,OAAO,CAAM,KAAA,OAAO,EAC/B,GAAI,CAAA,CAAC,CAAC,OAAO,MAAM,OAAuB,CAAA;AAE7C,IAAK,YAAA,CAAA,IAAA,EAAA,YAAA,EAAA,CACF,EAAO,GAAA,OAAA,IAAA,KAAS,QAAW,GAAA,QAAA,CAAS,cAAc,IAAI,CAAA,GAAI,IAA1D,KAAA,IAAA,GAAA,EAAA,GACD,QAAS,CAAA,IAAA,CAAA;AACX,IAAK,YAAA,CAAA,IAAA,EAAA,OAAA,EAAUC,WAAO,CAAA,IAAA,EACnB,CAAA,MAAA,CAAO,iBAAkB,CAAA,eAAe,CAAC,CAAA,CACzC,MAAO,CAAA,CAAC,GAAQ,KAAA;AACf,MAAI,GAAA,CAAA,GAAA,CAAIC,YAAS,EAAA,YAAA,CAAA,IAAA,EAAK,YAAY,CAAA,CAAA;AAClC,MAAI,GAAA,CAAA,GAAA,CAAIC,sBAAiB,YAAY,CAAA;AACrC,MAAA,GAAA,CAAI,IAAIC,yBAAsB,EAAA;AAAA,QAC5B,QAAA,EAAU,MAAM,YAAK,CAAA,IAAA,EAAA,SAAA;AAAA,OACtB,CAAA;AACD,MAAA,GAAA,CAAI,MAAO,CAAAC,mBAAA,CAAa,GAAK,EAAA,CAAC,KAAW,MAAA;AAAA,QACvC,GAAG,KAAA;AAAA,QACH,IAAM,EAAA;AAAA,OACN,CAAA,CAAA;AAAA,KACH,EACA,GAAI,CAAAC,qBAAU,EACd,GAAI,CAAAC,iBAAQ,EACZ,GAAI,CAAAC,eAAO,EACX,GAAI,CAAAC,aAAM,EACV,GAAI,CAAAC,iBAAQ,EACZ,GAAI,CAAAC,mBAAS,CACb,CAAA,GAAA,CAAIC,OAAG,CAAA,CAAA;AAEV,IAAA,MAAM,cAAkC,EAAC;AAEzC,IAAgB,eAAA,CAAA,OAAA,CAAQ,CAAC,OAAY,KAAA;AACnC,MAAM,MAAA,MAAA,GAAU,eACd,OACF,CAAA;AACA,MAAA,WAAA,CAAY,KAAK,WAAY,CAAA,OAAA,EAAS,YAAK,CAAA,IAAA,EAAA,OAAA,CAAA,EAAS,MAAM,CAAC,CAAA;AAAA,KAC5D,CAAA;AAED,IAAK,YAAA,CAAA,IAAA,EAAA,YAAA,EAAe,OAAQ,CAAA,GAAA,CAAI,WAAW,CAAA,CAAA;AAAA;AAC7C,EAEA,MAAM,MAAS,GAAA;AACb,IAAA,MAAM,YAAK,CAAA,IAAA,EAAA,YAAA,CAAA;AACX,IAAO,OAAA,YAAA,CAAA,IAAA,EAAK,SAAQ,MAAO,EAAA;AAAA;AAC7B,EAEA,MAAM,OAAU,GAAA;AACd,IAAA,MAAM,YAAK,CAAA,IAAA,EAAA,YAAA,CAAA;AACX,IAAO,OAAA,YAAA,CAAA,IAAA,EAAK,SAAQ,OAAQ,EAAA;AAAA;AAC9B,EAEA,IAAI,MAAiB,GAAA;AACnB,IAAA,OAAO,YAAK,CAAA,IAAA,EAAA,OAAA,CAAA;AAAA;AACd,EAEA,YAAY,KAAgB,EAAA;AAC1B,IAAA,YAAA,CAAA,IAAA,EAAK,WAAY,CAAC,KAAA,CAAA;AAClB,IAAO,OAAA,IAAA;AAAA;AACT,EAEA,WAAc,GAAA;AACZ,IAAA,OAAO,YAAK,CAAA,IAAA,EAAA,OAAA,CAAA,CAAQ,MAAO,CAAAC,iBAAA,EAAa,CAAA;AAAA;AAC1C,EAEA,GAAG,EAAoC,EAAA;AACrC,IAAA,IAAI,YAAK,CAAA,IAAA,EAAA,OAAA,CAAA,CAAQ,MAAW,KAAAC,iBAAA,CAAa,OAAS,EAAA;AAChD,MAAK,YAAA,CAAA,IAAA,EAAA,OAAA,CAAA,CAAQ,MAAO,CAAA,CAAC,GAAQ,KAAA;AAC3B,QAAMP,MAAAA,SAAAA,GAAW,GAAI,CAAA,GAAA,CAAIQ,oBAAW,CAAA;AACpC,QAAA,EAAA,CAAGR,SAAQ,CAAA;AAAA,OACZ,CAAA;AACD,MAAO,OAAA,IAAA;AAAA;AAET,IAAK,YAAA,CAAA,IAAA,EAAA,OAAA,CAAA,CAAQ,MAAO,CAAA,CAAC,GAAQ,KAAA;AAC3B,MAAMA,MAAAA,SAAAA,GAAW,GAAI,CAAA,GAAA,CAAIQ,oBAAW,CAAA;AACpC,MAAA,EAAA,CAAGR,SAAQ,CAAA;AAAA,KACZ,CAAA;AACD,IAAO,OAAA,IAAA;AAAA;AAEX;AA3FW,OAAA,GAAA,IAAA,OAAA,EAAA;AACA,YAAA,GAAA,IAAA,OAAA,EAAA;AACA,YAAA,GAAA,IAAA,OAAA,EAAA;AACT,SAAA,GAAA,IAAA,OAAA,EAAA;AALW,KAAA,CACJ,OAAU,GAAA,YAAA;;;;;;"}
@@ -0,0 +1,278 @@
1
+ 'use strict';
2
+
3
+ var katex = require('katex');
4
+ var codeBlock = require('@milkdown/kit/component/code-block');
5
+ var index$1 = require('./index-DkHBuNoK.js');
6
+ var remarkMath = require('remark-math');
7
+ var utils = require('@milkdown/kit/utils');
8
+ var unistUtilVisit = require('unist-util-visit');
9
+ var inlineLatex = require('./inline-latex-CwU8Nsfj.js');
10
+ var index = require('./index-YUwSTgPK.js');
11
+ var atomico = require('atomico');
12
+ var tooltip = require('@milkdown/kit/plugin/tooltip');
13
+ var state = require('@milkdown/kit/prose/state');
14
+ var view = require('@milkdown/kit/prose/view');
15
+ var keymap = require('@milkdown/kit/prose/keymap');
16
+ var history = require('@milkdown/kit/prose/history');
17
+ var model = require('@milkdown/kit/prose/model');
18
+ var todoList = require('./todo-list-V4JWO5-M.js');
19
+ var prose = require('@milkdown/kit/prose');
20
+ var commonmark = require('@milkdown/kit/preset/commonmark');
21
+ var inputrules = require('@milkdown/kit/prose/inputrules');
22
+ require('@milkdown/kit/core');
23
+ require('@milkdown/kit/preset/gfm');
24
+ require('@milkdown/kit/plugin/history');
25
+ require('@milkdown/kit/plugin/indent');
26
+ require('@milkdown/kit/plugin/clipboard');
27
+ require('@milkdown/kit/plugin/trailing');
28
+ require('@milkdown/kit/ctx');
29
+ require('@milkdown/kit/plugin/listener');
30
+
31
+ const remarkMathPlugin = utils.$remark(
32
+ "remarkMath",
33
+ () => remarkMath
34
+ );
35
+ function visitMathBlock(ast) {
36
+ return unistUtilVisit.visit(
37
+ ast,
38
+ "math",
39
+ (node, index, parent) => {
40
+ const { value } = node;
41
+ const newNode = {
42
+ type: "code",
43
+ lang: "LaTeX",
44
+ value
45
+ };
46
+ parent.children.splice(index, 1, newNode);
47
+ }
48
+ );
49
+ }
50
+ const remarkMathBlockPlugin = utils.$remark(
51
+ "remarkMathBlock",
52
+ () => () => visitMathBlock
53
+ );
54
+
55
+ const latexEditComponent = ({
56
+ config,
57
+ innerView,
58
+ updateValue
59
+ }) => {
60
+ var _a;
61
+ const onMouseDown = (e) => {
62
+ e.preventDefault();
63
+ updateValue == null ? undefined : updateValue();
64
+ };
65
+ return atomico.html`
66
+ <host>
67
+ <div class="container">
68
+ ${innerView && atomico.h(innerView.dom, {})}
69
+ <button onmousedown=${onMouseDown}>
70
+ ${(_a = config == null ? undefined : config.inlineEditConfirm) == null ? undefined : _a.call(config)}
71
+ </button>
72
+ </div>
73
+ </host>
74
+ `;
75
+ };
76
+ latexEditComponent.props = {
77
+ config: Object,
78
+ innerView: Object,
79
+ updateValue: Function
80
+ };
81
+ const LatexInlineEditElement = atomico.c(latexEditComponent);
82
+
83
+ const inlineLatexTooltip = tooltip.tooltipFactory("INLINE_LATEX");
84
+
85
+ var __typeError = (msg) => {
86
+ throw TypeError(msg);
87
+ };
88
+ var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
89
+ var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
90
+ 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);
91
+ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), member.set(obj, value), value);
92
+ var _content, _provider, _dom, _innerView, _onHide, _shouldShow;
93
+ class LatexInlineTooltip {
94
+ constructor(ctx, view$1, config) {
95
+ this.ctx = ctx;
96
+ __privateAdd(this, _content, new LatexInlineEditElement());
97
+ __privateAdd(this, _provider);
98
+ __privateAdd(this, _dom);
99
+ __privateAdd(this, _innerView);
100
+ __privateAdd(this, _onHide, () => {
101
+ if (__privateGet(this, _innerView)) {
102
+ __privateGet(this, _innerView).destroy();
103
+ __privateSet(this, _innerView, null);
104
+ }
105
+ });
106
+ __privateAdd(this, _shouldShow, (view$1) => {
107
+ const shouldShow = () => {
108
+ const { selection, schema } = view$1.state;
109
+ if (selection.empty) return false;
110
+ if (!(selection instanceof state.NodeSelection)) return false;
111
+ const node = selection.node;
112
+ if (node.type.name !== inlineLatex.mathInlineId) return false;
113
+ const textFrom = selection.from;
114
+ const paragraph = schema.nodes.paragraph.create(
115
+ null,
116
+ schema.text(node.attrs.value)
117
+ );
118
+ const innerView = new view.EditorView(__privateGet(this, _dom), {
119
+ state: state.EditorState.create({
120
+ doc: paragraph,
121
+ schema: new model.Schema({
122
+ nodes: {
123
+ doc: {
124
+ content: "block+"
125
+ },
126
+ paragraph: {
127
+ content: "inline*",
128
+ group: "block",
129
+ parseDOM: [{ tag: "p" }],
130
+ toDOM() {
131
+ return ["p", 0];
132
+ }
133
+ },
134
+ text: {
135
+ group: "inline"
136
+ }
137
+ }
138
+ }),
139
+ plugins: [
140
+ keymap.keymap({
141
+ "Mod-z": history.undo,
142
+ "Mod-Z": history.redo,
143
+ "Mod-y": history.redo,
144
+ Enter: () => {
145
+ var _a, _b;
146
+ (_b = (_a = __privateGet(this, _content)).updateValue) == null ? undefined : _b.call(_a);
147
+ return true;
148
+ }
149
+ })
150
+ ]
151
+ })
152
+ });
153
+ __privateSet(this, _innerView, innerView);
154
+ __privateGet(this, _content).innerView = __privateGet(this, _innerView);
155
+ __privateGet(this, _content).updateValue = () => {
156
+ const { tr } = view$1.state;
157
+ tr.setNodeAttribute(textFrom, "value", innerView.state.doc.textContent);
158
+ view$1.dispatch(tr);
159
+ requestAnimationFrame(() => {
160
+ view$1.focus();
161
+ });
162
+ };
163
+ return true;
164
+ };
165
+ const show = shouldShow();
166
+ if (!show) __privateGet(this, _onHide).call(this);
167
+ return show;
168
+ });
169
+ this.update = (view, prevState) => {
170
+ __privateGet(this, _provider).update(view, prevState);
171
+ };
172
+ this.destroy = () => {
173
+ __privateGet(this, _provider).destroy();
174
+ __privateGet(this, _content).remove();
175
+ };
176
+ __privateSet(this, _provider, new tooltip.TooltipProvider({
177
+ debounce: 0,
178
+ content: __privateGet(this, _content),
179
+ shouldShow: __privateGet(this, _shouldShow),
180
+ offset: 10,
181
+ floatingUIOptions: {
182
+ placement: "bottom"
183
+ }
184
+ }));
185
+ __privateGet(this, _content).config = config;
186
+ __privateGet(this, _provider).update(view$1);
187
+ __privateSet(this, _dom, document.createElement("div"));
188
+ __privateSet(this, _innerView, null);
189
+ }
190
+ }
191
+ _content = new WeakMap();
192
+ _provider = new WeakMap();
193
+ _dom = new WeakMap();
194
+ _innerView = new WeakMap();
195
+ _onHide = new WeakMap();
196
+ _shouldShow = new WeakMap();
197
+
198
+ const mathInlineInputRule = utils.$inputRule(
199
+ (ctx) => prose.nodeRule(/(?:\$)([^$]+)(?:\$)$/, inlineLatex.mathInlineSchema.type(ctx), {
200
+ getAttr: (match) => {
201
+ var _a;
202
+ return {
203
+ value: (_a = match[1]) != null ? _a : ""
204
+ };
205
+ }
206
+ })
207
+ );
208
+ const mathBlockInputRule = utils.$inputRule(
209
+ (ctx) => inputrules.textblockTypeInputRule(/^\$\$[\s\n]$/, commonmark.codeBlockSchema.type(ctx), () => ({
210
+ language: "LaTeX"
211
+ }))
212
+ );
213
+
214
+ const blockLatexSchema = commonmark.codeBlockSchema.extendSchema((prev) => {
215
+ return (ctx) => {
216
+ const baseSchema = prev(ctx);
217
+ return {
218
+ ...baseSchema,
219
+ toMarkdown: {
220
+ match: baseSchema.toMarkdown.match,
221
+ runner: (state, node) => {
222
+ var _a;
223
+ const language = node.attrs.language;
224
+ if (language.toLowerCase() === "latex") {
225
+ state.addNode(
226
+ "math",
227
+ undefined,
228
+ ((_a = node.content.firstChild) == null ? undefined : _a.text) || ""
229
+ );
230
+ } else {
231
+ return baseSchema.toMarkdown.runner(state, node);
232
+ }
233
+ }
234
+ }
235
+ };
236
+ };
237
+ });
238
+
239
+ index.defIfNotExists("milkdown-latex-inline-edit", LatexInlineEditElement);
240
+ const defineFeature = (editor, config) => {
241
+ editor.config((ctx) => {
242
+ const flags = ctx.get(index$1.FeaturesCtx);
243
+ const isCodeMirrorEnabled = flags.includes(index$1.CrepeFeature.CodeMirror);
244
+ if (!isCodeMirrorEnabled) {
245
+ throw new Error("You need to enable CodeMirror to use LaTeX feature");
246
+ }
247
+ ctx.update(codeBlock.codeBlockConfig.key, (prev) => ({
248
+ ...prev,
249
+ renderPreview: (language, content) => {
250
+ if (language.toLowerCase() === "latex" && content.length > 0) {
251
+ return renderLatex(content, config == null ? undefined : config.katexOptions);
252
+ }
253
+ const renderPreview = prev.renderPreview;
254
+ return renderPreview(language, content);
255
+ }
256
+ }));
257
+ ctx.set(inlineLatexTooltip.key, {
258
+ view: (view) => {
259
+ var _a;
260
+ return new LatexInlineTooltip(ctx, view, {
261
+ inlineEditConfirm: (_a = config == null ? undefined : config.inlineEditConfirm) != null ? _a : () => todoList.confirmIcon,
262
+ ...config
263
+ });
264
+ }
265
+ });
266
+ }).use(remarkMathPlugin).use(remarkMathBlockPlugin).use(inlineLatex.mathInlineSchema).use(inlineLatexTooltip).use(mathInlineInputRule).use(mathBlockInputRule).use(blockLatexSchema);
267
+ };
268
+ function renderLatex(content, options) {
269
+ const html = katex.renderToString(content, {
270
+ ...options,
271
+ throwOnError: false,
272
+ displayMode: true
273
+ });
274
+ return html;
275
+ }
276
+
277
+ exports.defineFeature = defineFeature;
278
+ //# sourceMappingURL=index-DnFbvtbD.js.map