@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.
- package/lib/cjs/index-6oBtF_11.js +26 -0
- package/lib/cjs/{index-BIXWL4Or.js.map → index-6oBtF_11.js.map} +1 -1
- package/lib/cjs/{index-Dt55rF23.js → index-8COAwUnB.js} +5 -5
- package/lib/cjs/{index-Dt55rF23.js.map → index-8COAwUnB.js.map} +1 -1
- package/lib/cjs/{index-By3ewOiO.js → index-B4NxKjEA.js} +52 -52
- package/lib/cjs/index-B4NxKjEA.js.map +1 -0
- package/lib/cjs/{index-Dub20F3z.js → index-BOmVuuoY.js} +3 -3
- package/lib/cjs/{index-Dub20F3z.js.map → index-BOmVuuoY.js.map} +1 -1
- package/lib/cjs/{index-BuSAwj4j.js → index-C4JjdSvv.js} +3 -3
- package/lib/cjs/{index-BuSAwj4j.js.map → index-C4JjdSvv.js.map} +1 -1
- package/lib/cjs/index-C6EzkFZ_.js +39 -0
- package/lib/cjs/{index-DmOOfQPi.js.map → index-C6EzkFZ_.js.map} +1 -1
- package/lib/cjs/index-D0OPKY6K.js +65 -0
- package/lib/cjs/index-D0OPKY6K.js.map +1 -0
- package/lib/cjs/index-DkHBuNoK.js +176 -0
- package/lib/cjs/index-DkHBuNoK.js.map +1 -0
- package/lib/cjs/index-DnFbvtbD.js +278 -0
- package/lib/cjs/index-DnFbvtbD.js.map +1 -0
- package/lib/cjs/{index-AlHHvSR_.js → index-YUwSTgPK.js} +3 -3
- package/lib/cjs/{index-AlHHvSR_.js.map → index-YUwSTgPK.js.map} +1 -1
- package/lib/cjs/{index-A8IrOmzS.js → index-koRsjvWB.js} +116 -18
- package/lib/cjs/index-koRsjvWB.js.map +1 -0
- package/lib/cjs/index-nDWnWxJ8.js +38 -0
- package/lib/cjs/{index-CtNE-wHT.js.map → index-nDWnWxJ8.js.map} +1 -1
- package/lib/cjs/index.js +13 -148
- package/lib/cjs/index.js.map +1 -1
- package/lib/cjs/inline-latex-CwU8Nsfj.js +54 -0
- package/lib/cjs/inline-latex-CwU8Nsfj.js.map +1 -0
- package/lib/cjs/{todoList-V4JWO5-M.js → todo-list-V4JWO5-M.js} +1 -1
- package/lib/cjs/todo-list-V4JWO5-M.js.map +1 -0
- package/lib/esm/index-BOzN8fKq.js +36 -0
- package/lib/esm/{index-BEWessT5.js.map → index-BOzN8fKq.js.map} +1 -1
- package/lib/esm/index-BUFg1FSH.js +172 -0
- package/lib/esm/index-BUFg1FSH.js.map +1 -0
- package/lib/esm/index-BxpDIDRS.js +63 -0
- package/lib/esm/index-BxpDIDRS.js.map +1 -0
- package/lib/esm/index-C5_dM0IB.js +276 -0
- package/lib/esm/index-C5_dM0IB.js.map +1 -0
- package/lib/esm/{index-DlX33Dj0.js → index-C7Xr_l-d.js} +5 -5
- package/lib/esm/{index-DlX33Dj0.js.map → index-C7Xr_l-d.js.map} +1 -1
- package/lib/esm/{index-CxJ9fxJm.js → index-C7_YCA3P.js} +3 -3
- package/lib/esm/{index-CxJ9fxJm.js.map → index-C7_YCA3P.js.map} +1 -1
- package/lib/esm/index-C8tiRHTF.js +37 -0
- package/lib/esm/{index-BDGHz9p-.js.map → index-C8tiRHTF.js.map} +1 -1
- package/lib/esm/{index-D6fLMv29.js → index-CD8fvrRC.js} +3 -3
- package/lib/esm/{index-D6fLMv29.js.map → index-CD8fvrRC.js.map} +1 -1
- package/lib/esm/index-CEup1V8i.js +24 -0
- package/lib/esm/{index-6VoEpEnX.js.map → index-CEup1V8i.js.map} +1 -1
- package/lib/esm/{index-kGl7HgN2.js → index-DroARb55.js} +117 -19
- package/lib/esm/index-DroARb55.js.map +1 -0
- package/lib/esm/{index-zKiGjwHz.js → index-HnGoJxjJ.js} +52 -52
- package/lib/esm/index-HnGoJxjJ.js.map +1 -0
- package/lib/esm/{index-DOrkOhki.js → index-WCe-Xh61.js} +3 -3
- package/lib/esm/{index-DOrkOhki.js.map → index-WCe-Xh61.js.map} +1 -1
- package/lib/esm/index.js +11 -150
- package/lib/esm/index.js.map +1 -1
- package/lib/esm/inline-latex-BLd2QrJC.js +51 -0
- package/lib/esm/inline-latex-BLd2QrJC.js.map +1 -0
- package/lib/esm/{todoList-CAbx4396.js → todo-list-B78GeGtK.js} +2 -2
- package/lib/esm/todo-list-B78GeGtK.js.map +1 -0
- package/lib/theme/common/code-mirror.css +93 -34
- package/lib/theme/common/latex.css +44 -0
- package/lib/theme/common/style.css +1 -0
- package/lib/types/core/crepe.d.ts +2 -0
- package/lib/types/core/crepe.d.ts.map +1 -1
- package/lib/types/feature/code-mirror/index.d.ts +6 -2
- package/lib/types/feature/code-mirror/index.d.ts.map +1 -1
- package/lib/types/feature/index.d.ts +4 -1
- package/lib/types/feature/index.d.ts.map +1 -1
- package/lib/types/feature/latex/block-latex.d.ts +2 -0
- package/lib/types/feature/latex/block-latex.d.ts.map +1 -0
- package/lib/types/feature/latex/index.d.ts +9 -0
- package/lib/types/feature/latex/index.d.ts.map +1 -0
- package/lib/types/feature/latex/inline-latex.d.ts +3 -0
- package/lib/types/feature/latex/inline-latex.d.ts.map +1 -0
- package/lib/types/feature/latex/inline-tooltip/component.d.ts +15 -0
- package/lib/types/feature/latex/inline-tooltip/component.d.ts.map +1 -0
- package/lib/types/feature/latex/inline-tooltip/tooltip.d.ts +2 -0
- package/lib/types/feature/latex/inline-tooltip/tooltip.d.ts.map +1 -0
- package/lib/types/feature/latex/inline-tooltip/view.d.ts +13 -0
- package/lib/types/feature/latex/inline-tooltip/view.d.ts.map +1 -0
- package/lib/types/feature/latex/input-rule.d.ts +3 -0
- package/lib/types/feature/latex/input-rule.d.ts.map +1 -0
- package/lib/types/feature/latex/remark.d.ts +3 -0
- package/lib/types/feature/latex/remark.d.ts.map +1 -0
- package/lib/types/feature/shared.d.ts +1 -1
- package/lib/types/feature/shared.d.ts.map +1 -1
- package/lib/types/feature/toolbar/component.d.ts +2 -0
- package/lib/types/feature/toolbar/component.d.ts.map +1 -1
- package/lib/types/feature/toolbar/index.d.ts +1 -0
- package/lib/types/feature/toolbar/index.d.ts.map +1 -1
- package/lib/types/icons/{alignCenter.d.ts → align-center.d.ts} +1 -1
- package/lib/types/icons/align-center.d.ts.map +1 -0
- package/lib/types/icons/{alignLeft.d.ts → align-left.d.ts} +1 -1
- package/lib/types/icons/align-left.d.ts.map +1 -0
- package/lib/types/icons/{alignRight.d.ts → align-right.d.ts} +1 -1
- package/lib/types/icons/align-right.d.ts.map +1 -0
- package/lib/types/icons/{bulletList.d.ts → bullet-list.d.ts} +1 -1
- package/lib/types/icons/bullet-list.d.ts.map +1 -0
- package/lib/types/icons/{checkBoxChecked.d.ts → check-box-checked.d.ts} +1 -1
- package/lib/types/icons/check-box-checked.d.ts.map +1 -0
- package/lib/types/icons/{checkBoxUnchecked.d.ts → check-box-unchecked.d.ts} +1 -1
- package/lib/types/icons/check-box-unchecked.d.ts.map +1 -0
- package/lib/types/icons/{chevronDown.d.ts → chevron-down.d.ts} +1 -1
- package/lib/types/icons/chevron-down.d.ts.map +1 -0
- package/lib/types/icons/{dragHandle.d.ts → drag-handle.d.ts} +1 -1
- package/lib/types/icons/drag-handle.d.ts.map +1 -0
- package/lib/types/icons/functions.d.ts +2 -0
- package/lib/types/icons/functions.d.ts.map +1 -0
- package/lib/types/icons/index.d.ts +10 -10
- package/lib/types/icons/index.d.ts.map +1 -1
- package/lib/types/icons/{orderedList.d.ts → ordered-list.d.ts} +1 -1
- package/lib/types/icons/ordered-list.d.ts.map +1 -0
- package/lib/types/icons/{todoList.d.ts → todo-list.d.ts} +1 -1
- package/lib/types/icons/todo-list.d.ts.map +1 -0
- package/lib/types/icons/visibility-off.d.ts +2 -0
- package/lib/types/icons/visibility-off.d.ts.map +1 -0
- package/package.json +7 -4
- package/src/core/crepe.ts +19 -0
- package/src/feature/block-edit/handle/index.ts +1 -1
- package/src/feature/code-mirror/index.ts +23 -3
- package/src/feature/index.ts +8 -0
- package/src/feature/latex/block-latex.ts +25 -0
- package/src/feature/latex/index.ts +73 -0
- package/src/feature/latex/inline-latex.ts +55 -0
- package/src/feature/latex/inline-tooltip/component.ts +38 -0
- package/src/feature/latex/inline-tooltip/tooltip.ts +3 -0
- package/src/feature/latex/inline-tooltip/view.ts +122 -0
- package/src/feature/latex/input-rule.ts +25 -0
- package/src/feature/latex/remark.ts +35 -0
- package/src/feature/shared.ts +1 -1
- package/src/feature/toolbar/component.ts +91 -3
- package/src/feature/toolbar/index.ts +3 -1
- package/src/icons/functions.ts +15 -0
- package/src/icons/index.ts +10 -10
- package/src/icons/visibility-off.ts +14 -0
- package/src/theme/common/code-mirror.css +95 -34
- package/src/theme/common/latex.css +44 -0
- package/src/theme/common/style.css +1 -0
- package/lib/cjs/index-3mj4YaCA.js +0 -43
- package/lib/cjs/index-3mj4YaCA.js.map +0 -1
- package/lib/cjs/index-A8IrOmzS.js.map +0 -1
- package/lib/cjs/index-BIXWL4Or.js +0 -26
- package/lib/cjs/index-By3ewOiO.js.map +0 -1
- package/lib/cjs/index-CtNE-wHT.js +0 -38
- package/lib/cjs/index-DmOOfQPi.js +0 -39
- package/lib/cjs/todoList-V4JWO5-M.js.map +0 -1
- package/lib/esm/index-6VoEpEnX.js +0 -24
- package/lib/esm/index-BB3Rq6BU.js +0 -41
- package/lib/esm/index-BB3Rq6BU.js.map +0 -1
- package/lib/esm/index-BDGHz9p-.js +0 -37
- package/lib/esm/index-BEWessT5.js +0 -36
- package/lib/esm/index-kGl7HgN2.js.map +0 -1
- package/lib/esm/index-zKiGjwHz.js.map +0 -1
- package/lib/esm/todoList-CAbx4396.js.map +0 -1
- package/lib/types/icons/alignCenter.d.ts.map +0 -1
- package/lib/types/icons/alignLeft.d.ts.map +0 -1
- package/lib/types/icons/alignRight.d.ts.map +0 -1
- package/lib/types/icons/bulletList.d.ts.map +0 -1
- package/lib/types/icons/checkBoxChecked.d.ts.map +0 -1
- package/lib/types/icons/checkBoxUnchecked.d.ts.map +0 -1
- package/lib/types/icons/chevronDown.d.ts.map +0 -1
- package/lib/types/icons/dragHandle.d.ts.map +0 -1
- package/lib/types/icons/orderedList.d.ts.map +0 -1
- package/lib/types/icons/todoList.d.ts.map +0 -1
- /package/src/icons/{alignCenter.ts → align-center.ts} +0 -0
- /package/src/icons/{alignLeft.ts → align-left.ts} +0 -0
- /package/src/icons/{alignRight.ts → align-right.ts} +0 -0
- /package/src/icons/{bulletList.ts → bullet-list.ts} +0 -0
- /package/src/icons/{checkBoxChecked.ts → check-box-checked.ts} +0 -0
- /package/src/icons/{checkBoxUnchecked.ts → check-box-unchecked.ts} +0 -0
- /package/src/icons/{chevronDown.ts → chevron-down.ts} +0 -0
- /package/src/icons/{dragHandle.ts → drag-handle.ts} +0 -0
- /package/src/icons/{orderedList.ts → ordered-list.ts} +0 -0
- /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-
|
|
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":"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"}
|
|
@@ -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
|