@milkdown/crepe 7.6.1 → 7.6.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/lib/cjs/{todo-list-V4JWO5-M.js → functions-Dk90yOUc.js} +16 -1
- package/lib/cjs/functions-Dk90yOUc.js.map +1 -0
- package/lib/cjs/{index-YUwSTgPK.js → index-AlHHvSR_.js} +3 -3
- package/lib/cjs/{index-YUwSTgPK.js.map → index-AlHHvSR_.js.map} +1 -1
- package/lib/cjs/{index-C4JjdSvv.js → index-BuSAwj4j.js} +3 -3
- package/lib/cjs/{index-C4JjdSvv.js.map → index-BuSAwj4j.js.map} +1 -1
- package/lib/cjs/{index-koRsjvWB.js → index-CfM-XVoy.js} +14 -28
- package/lib/cjs/index-CfM-XVoy.js.map +1 -0
- package/lib/cjs/index-CvmlYYXX.js +38 -0
- package/lib/cjs/{index-nDWnWxJ8.js.map → index-CvmlYYXX.js.map} +1 -1
- package/lib/cjs/index-D3lu92SA.js +39 -0
- package/lib/cjs/{index-C6EzkFZ_.js.map → index-D3lu92SA.js.map} +1 -1
- package/lib/cjs/{index-B4NxKjEA.js → index-D9Fk7rLS.js} +140 -108
- package/lib/cjs/index-D9Fk7rLS.js.map +1 -0
- package/lib/cjs/{index-D0OPKY6K.js → index-DQll67YS.js} +8 -8
- package/lib/cjs/{index-D0OPKY6K.js.map → index-DQll67YS.js.map} +1 -1
- package/lib/cjs/{index-BOmVuuoY.js → index-Dub20F3z.js} +3 -3
- package/lib/cjs/{index-BOmVuuoY.js.map → index-Dub20F3z.js.map} +1 -1
- package/lib/cjs/{index-DkHBuNoK.js → index-dpBsp7Eo.js} +16 -12
- package/lib/cjs/index-dpBsp7Eo.js.map +1 -0
- package/lib/cjs/{index-DnFbvtbD.js → index-gk_gJ489.js} +17 -17
- package/lib/cjs/index-gk_gJ489.js.map +1 -0
- package/lib/cjs/{index-8COAwUnB.js → index-hPk2gbSt.js} +5 -5
- package/lib/cjs/{index-8COAwUnB.js.map → index-hPk2gbSt.js.map} +1 -1
- package/lib/cjs/index-nrFkJeLW.js +26 -0
- package/lib/cjs/{index-6oBtF_11.js.map → index-nrFkJeLW.js.map} +1 -1
- package/lib/cjs/index.js +2 -1
- package/lib/cjs/index.js.map +1 -1
- package/lib/cjs/{inline-latex-CwU8Nsfj.js → inline-latex-D0G71cGk.js} +2 -2
- package/lib/cjs/{inline-latex-CwU8Nsfj.js.map → inline-latex-D0G71cGk.js.map} +1 -1
- package/lib/esm/{todo-list-B78GeGtK.js → functions-Bsik6ikd.js} +16 -2
- package/lib/esm/functions-Bsik6ikd.js.map +1 -0
- package/lib/esm/{index-BxpDIDRS.js → index-B3KiKTSt.js} +5 -5
- package/lib/esm/{index-BxpDIDRS.js.map → index-B3KiKTSt.js.map} +1 -1
- package/lib/esm/index-BFsG6770.js +36 -0
- package/lib/esm/{index-BOzN8fKq.js.map → index-BFsG6770.js.map} +1 -1
- package/lib/esm/{index-BUFg1FSH.js → index-BMNULyuq.js} +16 -13
- package/lib/esm/index-BMNULyuq.js.map +1 -0
- package/lib/esm/index-CBrOT1fW.js +37 -0
- package/lib/esm/{index-C8tiRHTF.js.map → index-CBrOT1fW.js.map} +1 -1
- package/lib/esm/{index-DroARb55.js → index-COPjfgxB.js} +15 -29
- package/lib/esm/index-COPjfgxB.js.map +1 -0
- package/lib/esm/{index-C7Xr_l-d.js → index-Cuk7cL-r.js} +5 -5
- package/lib/esm/{index-C7Xr_l-d.js.map → index-Cuk7cL-r.js.map} +1 -1
- package/lib/esm/{index-C7_YCA3P.js → index-CxJ9fxJm.js} +3 -3
- package/lib/esm/{index-C7_YCA3P.js.map → index-CxJ9fxJm.js.map} +1 -1
- package/lib/esm/{index-CD8fvrRC.js → index-D6fLMv29.js} +3 -3
- package/lib/esm/{index-CD8fvrRC.js.map → index-D6fLMv29.js.map} +1 -1
- package/lib/esm/{index-C5_dM0IB.js → index-DO_xaFxN.js} +16 -16
- package/lib/esm/index-DO_xaFxN.js.map +1 -0
- package/lib/esm/{index-WCe-Xh61.js → index-DOrkOhki.js} +3 -3
- package/lib/esm/{index-WCe-Xh61.js.map → index-DOrkOhki.js.map} +1 -1
- package/lib/esm/index-DcRgwPLd.js +24 -0
- package/lib/esm/{index-CEup1V8i.js.map → index-DcRgwPLd.js.map} +1 -1
- package/lib/esm/{index-HnGoJxjJ.js → index-Yr5XBaro.js} +138 -106
- package/lib/esm/index-Yr5XBaro.js.map +1 -0
- package/lib/esm/index.js +1 -1
- package/lib/esm/{inline-latex-BLd2QrJC.js → inline-latex-C9IGAXXQ.js} +2 -2
- package/lib/esm/{inline-latex-BLd2QrJC.js.map → inline-latex-C9IGAXXQ.js.map} +1 -1
- package/lib/theme/common/image-block.css +2 -1
- package/lib/theme/crepe/style.css +6 -5
- package/lib/theme/crepe-dark/style.css +6 -3
- package/lib/theme/frame/style.css +6 -6
- package/lib/theme/frame-dark/style.css +6 -4
- package/lib/theme/nord/style.css +6 -6
- package/lib/theme/nord-dark/style.css +6 -4
- package/lib/types/core/crepe.d.ts.map +1 -1
- package/lib/types/core/index.d.ts +1 -0
- package/lib/types/core/index.d.ts.map +1 -1
- package/lib/types/core/slice.d.ts +2 -0
- package/lib/types/core/slice.d.ts.map +1 -1
- package/lib/types/feature/block-edit/index.d.ts +2 -0
- package/lib/types/feature/block-edit/index.d.ts.map +1 -1
- package/lib/types/feature/block-edit/menu/component.d.ts.map +1 -1
- package/lib/types/feature/block-edit/menu/config.d.ts +2 -1
- package/lib/types/feature/block-edit/menu/config.d.ts.map +1 -1
- package/lib/types/feature/toolbar/component.d.ts.map +1 -1
- package/lib/types/icons/index.d.ts +1 -0
- package/lib/types/icons/index.d.ts.map +1 -1
- package/lib/types/index.d.ts +1 -1
- package/lib/types/index.d.ts.map +1 -1
- package/package.json +3 -3
- package/src/core/crepe.ts +4 -1
- package/src/core/index.ts +1 -0
- package/src/core/slice.ts +3 -0
- package/src/feature/block-edit/index.ts +2 -0
- package/src/feature/block-edit/menu/component.ts +4 -1
- package/src/feature/block-edit/menu/config.ts +43 -9
- package/src/feature/latex/block-latex.ts +1 -1
- package/src/feature/toolbar/component.ts +1 -1
- package/src/icons/index.ts +1 -0
- package/src/index.ts +1 -1
- package/src/theme/common/image-block.css +2 -1
- package/src/theme/crepe/style.css +6 -5
- package/src/theme/crepe-dark/style.css +6 -3
- package/src/theme/frame/style.css +6 -6
- package/src/theme/frame-dark/style.css +6 -4
- package/src/theme/nord/style.css +6 -6
- package/src/theme/nord-dark/style.css +6 -4
- package/lib/cjs/index-6oBtF_11.js +0 -26
- package/lib/cjs/index-B4NxKjEA.js.map +0 -1
- package/lib/cjs/index-C6EzkFZ_.js +0 -39
- package/lib/cjs/index-DkHBuNoK.js.map +0 -1
- package/lib/cjs/index-DnFbvtbD.js.map +0 -1
- package/lib/cjs/index-koRsjvWB.js.map +0 -1
- package/lib/cjs/index-nDWnWxJ8.js +0 -38
- package/lib/cjs/todo-list-V4JWO5-M.js.map +0 -1
- package/lib/esm/index-BOzN8fKq.js +0 -36
- package/lib/esm/index-BUFg1FSH.js.map +0 -1
- package/lib/esm/index-C5_dM0IB.js.map +0 -1
- package/lib/esm/index-C8tiRHTF.js +0 -37
- package/lib/esm/index-CEup1V8i.js +0 -24
- package/lib/esm/index-DroARb55.js.map +0 -1
- package/lib/esm/index-HnGoJxjJ.js.map +0 -1
- package/lib/esm/todo-list-B78GeGtK.js.map +0 -1
|
@@ -5,7 +5,7 @@ var codemirror = require('codemirror');
|
|
|
5
5
|
var view = require('@codemirror/view');
|
|
6
6
|
var commands = require('@codemirror/commands');
|
|
7
7
|
var atomico = require('atomico');
|
|
8
|
-
var
|
|
8
|
+
var functions = require('./functions-Dk90yOUc.js');
|
|
9
9
|
|
|
10
10
|
const visibilityOffIcon = atomico.html`
|
|
11
11
|
<svg
|
|
@@ -38,12 +38,12 @@ const defineFeature = (editor, config = {}) => {
|
|
|
38
38
|
view.keymap.of(commands.defaultKeymap.concat(commands.indentWithTab)),
|
|
39
39
|
codemirror.basicSetup,
|
|
40
40
|
theme,
|
|
41
|
-
...(_a = config == null ?
|
|
41
|
+
...(_a = config == null ? void 0 : config.extensions) != null ? _a : []
|
|
42
42
|
],
|
|
43
43
|
languages,
|
|
44
|
-
expandIcon: config.expandIcon || (() =>
|
|
45
|
-
searchIcon: config.searchIcon || (() =>
|
|
46
|
-
clearSearchIcon: config.clearSearchIcon || (() =>
|
|
44
|
+
expandIcon: config.expandIcon || (() => functions.chevronDownIcon),
|
|
45
|
+
searchIcon: config.searchIcon || (() => functions.searchIcon),
|
|
46
|
+
clearSearchIcon: config.clearSearchIcon || (() => functions.clearIcon),
|
|
47
47
|
searchPlaceholder: config.searchPlaceholder || "Search language",
|
|
48
48
|
noResultText: config.noResultText || "No result",
|
|
49
49
|
renderLanguage: config.renderLanguage || defaultConfig.renderLanguage,
|
|
@@ -51,8 +51,8 @@ const defineFeature = (editor, config = {}) => {
|
|
|
51
51
|
previewToggleButton: (previewOnlyMode) => {
|
|
52
52
|
var _a2, _b;
|
|
53
53
|
return atomico.html`
|
|
54
|
-
${((_a2 = config.previewToggleIcon) == null ?
|
|
55
|
-
${((_b = config.previewToggleText) == null ?
|
|
54
|
+
${((_a2 = config.previewToggleIcon) == null ? void 0 : _a2.call(config, previewOnlyMode)) || (previewOnlyMode ? functions.editIcon : visibilityOffIcon)}
|
|
55
|
+
${((_b = config.previewToggleText) == null ? void 0 : _b.call(config, previewOnlyMode)) || (previewOnlyMode ? "Edit" : "Hide")}
|
|
56
56
|
`;
|
|
57
57
|
},
|
|
58
58
|
previewLabel: config.previewLabel || defaultConfig.previewLabel
|
|
@@ -62,4 +62,4 @@ const defineFeature = (editor, config = {}) => {
|
|
|
62
62
|
};
|
|
63
63
|
|
|
64
64
|
exports.defineFeature = defineFeature;
|
|
65
|
-
//# sourceMappingURL=index-
|
|
65
|
+
//# sourceMappingURL=index-DQll67YS.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-
|
|
1
|
+
{"version":3,"file":"index-DQll67YS.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,MAAA,GAAA,MAAA,CAAQ,UAAR,KAAA,IAAA,GAAA,EAAA,GAAsB;AAAC,SAC7B;AAAA,QACA,SAAA;AAAA,QAEA,UAAA,EAAY,MAAO,CAAA,UAAA,KAAe,MAAMC,yBAAA,CAAA;AAAA,QACxC,UAAA,EAAY,MAAO,CAAA,UAAA,KAAe,MAAMC,oBAAA,CAAA;AAAA,QACxC,eAAA,EAAiB,MAAO,CAAA,eAAA,KAAoB,MAAMC,mBAAA,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,MAAA,GAAAA,IAAA,IAA2B,CAAA,MAAA,EAAA,eAAA,CAAA,MAC5B,eAAkB,GAAAC,kBAAA,GAAW,iBAAkB,CAAA;AAAA,YAAA,EAAA,CAAA,CAC9C,YAAO,iBAAP,KAAA,IAAA,GAAA,MAAA,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;;;;"}
|
|
@@ -4,11 +4,11 @@ var utils = require('@milkdown/kit/utils');
|
|
|
4
4
|
var state = require('@milkdown/kit/prose/state');
|
|
5
5
|
var view = require('@milkdown/kit/prose/view');
|
|
6
6
|
var prose = require('@milkdown/kit/prose');
|
|
7
|
-
var index = require('./index-
|
|
7
|
+
var index = require('./index-AlHHvSR_.js');
|
|
8
8
|
|
|
9
9
|
function isDocEmpty(doc) {
|
|
10
10
|
var _a;
|
|
11
|
-
return doc.childCount <= 1 && !((_a = doc.firstChild) == null ?
|
|
11
|
+
return doc.childCount <= 1 && !((_a = doc.firstChild) == null ? void 0 : _a.content.size);
|
|
12
12
|
}
|
|
13
13
|
function createPlaceholderDecoration(state, placeholderText) {
|
|
14
14
|
const { selection } = state;
|
|
@@ -65,4 +65,4 @@ const defineFeature = (editor, config) => {
|
|
|
65
65
|
exports.defineFeature = defineFeature;
|
|
66
66
|
exports.placeholderConfig = placeholderConfig;
|
|
67
67
|
exports.placeholderPlugin = placeholderPlugin;
|
|
68
|
-
//# sourceMappingURL=index-
|
|
68
|
+
//# sourceMappingURL=index-Dub20F3z.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-
|
|
1
|
+
{"version":3,"file":"index-Dub20F3z.js","sources":["../../src/feature/placeholder/index.ts"],"sourcesContent":["import { $ctx, $prose } from '@milkdown/kit/utils'\nimport type { EditorState } from '@milkdown/kit/prose/state'\nimport { Plugin, PluginKey } from '@milkdown/kit/prose/state'\nimport type { Node } from '@milkdown/kit/prose/model'\nimport { Decoration, DecorationSet } from '@milkdown/kit/prose/view'\nimport { findParent } from '@milkdown/kit/prose'\nimport type { DefineFeature } from '../shared'\nimport { isInCodeBlock, isInList } from '../../utils'\n\nfunction isDocEmpty(doc: Node) {\n return doc.childCount <= 1 && !doc.firstChild?.content.size\n}\n\nfunction createPlaceholderDecoration(\n state: EditorState,\n placeholderText: string\n): Decoration | null {\n const { selection } = state\n if (!selection.empty) return null\n\n const $pos = selection.$anchor\n const node = $pos.parent\n if (node.content.size > 0) return null\n\n const inTable = findParent((node) => node.type.name === 'table')($pos)\n if (inTable) return null\n\n const before = $pos.before()\n\n return Decoration.node(before, before + node.nodeSize, {\n class: 'crepe-placeholder',\n 'data-placeholder': placeholderText,\n })\n}\n\ninterface PlaceholderConfig {\n text: string\n mode: 'doc' | 'block'\n}\n\nexport type PlaceHolderFeatureConfig = Partial<PlaceholderConfig>\n\nexport const placeholderConfig = $ctx(\n {\n text: 'Please enter...',\n mode: 'block',\n } as PlaceholderConfig,\n 'placeholderConfigCtx'\n)\n\nexport const placeholderPlugin = $prose((ctx) => {\n return new Plugin({\n key: new PluginKey('CREPE_PLACEHOLDER'),\n props: {\n decorations: (state) => {\n const config = ctx.get(placeholderConfig.key)\n if (config.mode === 'doc' && !isDocEmpty(state.doc)) return null\n\n if (isInCodeBlock(state.selection) || isInList(state.selection))\n return null\n\n const placeholderText = config.text ?? 'Please enter...'\n const deco = createPlaceholderDecoration(state, placeholderText)\n if (!deco) return null\n\n return DecorationSet.create(state.doc, [deco])\n },\n },\n })\n})\n\nexport const defineFeature: DefineFeature<PlaceHolderFeatureConfig> = (\n editor,\n config\n) => {\n editor\n .config((ctx) => {\n if (config) {\n ctx.update(placeholderConfig.key, (prev) => {\n return {\n ...prev,\n ...config,\n }\n })\n }\n })\n .use(placeholderPlugin)\n .use(placeholderConfig)\n}\n"],"names":["findParent","node","Decoration","$ctx","$prose","Plugin","PluginKey","isInCodeBlock","isInList","DecorationSet"],"mappings":";;;;;;;;AASA,SAAS,WAAW,GAAW,EAAA;AAT/B,EAAA,IAAA,EAAA;AAUE,EAAA,OAAO,IAAI,UAAc,IAAA,CAAA,IAAK,GAAC,EAAI,GAAA,GAAA,CAAA,UAAA,KAAJ,mBAAgB,OAAQ,CAAA,IAAA,CAAA;AACzD;AAEA,SAAS,2BAAA,CACP,OACA,eACmB,EAAA;AACnB,EAAM,MAAA,EAAE,WAAc,GAAA,KAAA;AACtB,EAAI,IAAA,CAAC,SAAU,CAAA,KAAA,EAAc,OAAA,IAAA;AAE7B,EAAA,MAAM,OAAO,SAAU,CAAA,OAAA;AACvB,EAAA,MAAM,OAAO,IAAK,CAAA,MAAA;AAClB,EAAA,IAAI,IAAK,CAAA,OAAA,CAAQ,IAAO,GAAA,CAAA,EAAU,OAAA,IAAA;AAElC,EAAM,MAAA,OAAA,GAAUA,iBAAW,CAACC,KAAAA,KAASA,MAAK,IAAK,CAAA,IAAA,KAAS,OAAO,CAAA,CAAE,IAAI,CAAA;AACrE,EAAA,IAAI,SAAgB,OAAA,IAAA;AAEpB,EAAM,MAAA,MAAA,GAAS,KAAK,MAAO,EAAA;AAE3B,EAAA,OAAOC,eAAW,CAAA,IAAA,CAAK,MAAQ,EAAA,MAAA,GAAS,KAAK,QAAU,EAAA;AAAA,IACrD,KAAO,EAAA,mBAAA;AAAA,IACP,kBAAoB,EAAA;AAAA,GACrB,CAAA;AACH;AASO,MAAM,iBAAoB,GAAAC,UAAA;AAAA,EAC/B;AAAA,IACE,IAAM,EAAA,iBAAA;AAAA,IACN,IAAM,EAAA;AAAA,GACR;AAAA,EACA;AACF;AAEa,MAAA,iBAAA,GAAoBC,YAAO,CAAA,CAAC,GAAQ,KAAA;AAC/C,EAAA,OAAO,IAAIC,YAAO,CAAA;AAAA,IAChB,GAAA,EAAK,IAAIC,eAAA,CAAU,mBAAmB,CAAA;AAAA,IACtC,KAAO,EAAA;AAAA,MACL,WAAA,EAAa,CAAC,KAAU,KAAA;AAtD9B,QAAA,IAAA,EAAA;AAuDQ,QAAA,MAAM,MAAS,GAAA,GAAA,CAAI,GAAI,CAAA,iBAAA,CAAkB,GAAG,CAAA;AAC5C,QAAI,IAAA,MAAA,CAAO,SAAS,KAAS,IAAA,CAAC,WAAW,KAAM,CAAA,GAAG,GAAU,OAAA,IAAA;AAE5D,QAAA,IAAIC,oBAAc,KAAM,CAAA,SAAS,CAAK,IAAAC,cAAA,CAAS,MAAM,SAAS,CAAA;AAC5D,UAAO,OAAA,IAAA;AAET,QAAM,MAAA,eAAA,GAAA,CAAkB,EAAO,GAAA,MAAA,CAAA,IAAA,KAAP,IAAe,GAAA,EAAA,GAAA,iBAAA;AACvC,QAAM,MAAA,IAAA,GAAO,2BAA4B,CAAA,KAAA,EAAO,eAAe,CAAA;AAC/D,QAAI,IAAA,CAAC,MAAa,OAAA,IAAA;AAElB,QAAA,OAAOC,mBAAc,MAAO,CAAA,KAAA,CAAM,GAAK,EAAA,CAAC,IAAI,CAAC,CAAA;AAAA;AAC/C;AACF,GACD,CAAA;AACH,CAAC;AAEY,MAAA,aAAA,GAAyD,CACpE,MAAA,EACA,MACG,KAAA;AACH,EACG,MAAA,CAAA,MAAA,CAAO,CAAC,GAAQ,KAAA;AACf,IAAA,IAAI,MAAQ,EAAA;AACV,MAAA,GAAA,CAAI,MAAO,CAAA,iBAAA,CAAkB,GAAK,EAAA,CAAC,IAAS,KAAA;AAC1C,QAAO,OAAA;AAAA,UACL,GAAG,IAAA;AAAA,UACH,GAAG;AAAA,SACL;AAAA,OACD,CAAA;AAAA;AACH,GACD,CACA,CAAA,GAAA,CAAI,iBAAiB,CAAA,CACrB,IAAI,iBAAiB,CAAA;AAC1B;;;;;;"}
|
|
@@ -39,49 +39,50 @@ const defaultFeatures = {
|
|
|
39
39
|
async function loadFeature(feature, editor, config) {
|
|
40
40
|
switch (feature) {
|
|
41
41
|
case "code-mirror" /* CodeMirror */: {
|
|
42
|
-
const { defineFeature } = await Promise.resolve().then(function () { return require('./index-
|
|
42
|
+
const { defineFeature } = await Promise.resolve().then(function () { return require('./index-DQll67YS.js'); });
|
|
43
43
|
return defineFeature(editor, config);
|
|
44
44
|
}
|
|
45
45
|
case "list-item" /* ListItem */: {
|
|
46
|
-
const { defineFeature } = await Promise.resolve().then(function () { return require('./index-
|
|
46
|
+
const { defineFeature } = await Promise.resolve().then(function () { return require('./index-hPk2gbSt.js'); });
|
|
47
47
|
return defineFeature(editor, config);
|
|
48
48
|
}
|
|
49
49
|
case "link-tooltip" /* LinkTooltip */: {
|
|
50
|
-
const { defineFeature } = await Promise.resolve().then(function () { return require('./index-
|
|
50
|
+
const { defineFeature } = await Promise.resolve().then(function () { return require('./index-nrFkJeLW.js'); });
|
|
51
51
|
return defineFeature(editor, config);
|
|
52
52
|
}
|
|
53
53
|
case "image-block" /* ImageBlock */: {
|
|
54
|
-
const { defineFeature } = await Promise.resolve().then(function () { return require('./index-
|
|
54
|
+
const { defineFeature } = await Promise.resolve().then(function () { return require('./index-CvmlYYXX.js'); });
|
|
55
55
|
return defineFeature(editor, config);
|
|
56
56
|
}
|
|
57
57
|
case "cursor" /* Cursor */: {
|
|
58
|
-
const { defineFeature } = await Promise.resolve().then(function () { return require('./index-
|
|
58
|
+
const { defineFeature } = await Promise.resolve().then(function () { return require('./index-BuSAwj4j.js'); });
|
|
59
59
|
return defineFeature(editor, config);
|
|
60
60
|
}
|
|
61
61
|
case "block-edit" /* BlockEdit */: {
|
|
62
|
-
const { defineFeature } = await Promise.resolve().then(function () { return require('./index-
|
|
62
|
+
const { defineFeature } = await Promise.resolve().then(function () { return require('./index-D9Fk7rLS.js'); });
|
|
63
63
|
return defineFeature(editor, config);
|
|
64
64
|
}
|
|
65
65
|
case "placeholder" /* Placeholder */: {
|
|
66
|
-
const { defineFeature } = await Promise.resolve().then(function () { return require('./index-
|
|
66
|
+
const { defineFeature } = await Promise.resolve().then(function () { return require('./index-Dub20F3z.js'); });
|
|
67
67
|
return defineFeature(editor, config);
|
|
68
68
|
}
|
|
69
69
|
case "toolbar" /* Toolbar */: {
|
|
70
|
-
const { defineFeature } = await Promise.resolve().then(function () { return require('./index-
|
|
70
|
+
const { defineFeature } = await Promise.resolve().then(function () { return require('./index-CfM-XVoy.js'); });
|
|
71
71
|
return defineFeature(editor, config);
|
|
72
72
|
}
|
|
73
73
|
case "table" /* Table */: {
|
|
74
|
-
const { defineFeature } = await Promise.resolve().then(function () { return require('./index-
|
|
74
|
+
const { defineFeature } = await Promise.resolve().then(function () { return require('./index-D3lu92SA.js'); });
|
|
75
75
|
return defineFeature(editor, config);
|
|
76
76
|
}
|
|
77
77
|
case "latex" /* Latex */: {
|
|
78
|
-
const { defineFeature } = await Promise.resolve().then(function () { return require('./index-
|
|
78
|
+
const { defineFeature } = await Promise.resolve().then(function () { return require('./index-gk_gJ489.js'); });
|
|
79
79
|
return defineFeature(editor, config);
|
|
80
80
|
}
|
|
81
81
|
}
|
|
82
82
|
}
|
|
83
83
|
|
|
84
84
|
const FeaturesCtx = ctx.createSlice([], "FeaturesCtx");
|
|
85
|
+
const crepeCtx = ctx.createSlice({}, "CrepeCtx");
|
|
85
86
|
function configureFeatures(features) {
|
|
86
87
|
return (ctx) => {
|
|
87
88
|
ctx.inject(FeaturesCtx, features);
|
|
@@ -113,7 +114,9 @@ class Crepe {
|
|
|
113
114
|
...features
|
|
114
115
|
}).filter(([, enabled]) => enabled).map(([feature]) => feature);
|
|
115
116
|
__privateSet(this, _rootElement, (_a = typeof root === "string" ? document.querySelector(root) : root) != null ? _a : document.body);
|
|
116
|
-
__privateSet(this, _editor, core.Editor.make().config(
|
|
117
|
+
__privateSet(this, _editor, core.Editor.make().config((ctx) => {
|
|
118
|
+
ctx.inject(crepeCtx, this);
|
|
119
|
+
}).config(configureFeatures(enabledFeatures)).config((ctx) => {
|
|
117
120
|
ctx.set(core.rootCtx, __privateGet(this, _rootElement));
|
|
118
121
|
ctx.set(core.defaultValueCtx, defaultValue);
|
|
119
122
|
ctx.set(core.editorViewOptionsCtx, {
|
|
@@ -173,4 +176,5 @@ Crepe.Feature = CrepeFeature;
|
|
|
173
176
|
exports.Crepe = Crepe;
|
|
174
177
|
exports.CrepeFeature = CrepeFeature;
|
|
175
178
|
exports.FeaturesCtx = FeaturesCtx;
|
|
176
|
-
|
|
179
|
+
exports.crepeCtx = crepeCtx;
|
|
180
|
+
//# sourceMappingURL=index-dpBsp7Eo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-dpBsp7Eo.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'\nimport type { Crepe } from './crepe'\n\nexport const FeaturesCtx = createSlice([] as CrepeFeature[], 'FeaturesCtx')\n\nexport const crepeCtx = createSlice({} as Crepe, 'CrepeCtx')\n\nexport function configureFeatures(features: CrepeFeature[]) {\n return (ctx: Ctx) => {\n ctx.inject(FeaturesCtx, features)\n }\n}\n","import type { DefaultValue } from '@milkdown/kit/core'\nimport {\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, crepeCtx } 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((ctx) => {\n ctx.inject(crepeCtx, this)\n })\n .config(configureFeatures(enabledFeatures))\n .config((ctx) => {\n ctx.set(rootCtx, this.#rootElement)\n ctx.set(defaultValueCtx, defaultValue)\n ctx.set(editorViewOptionsCtx, {\n editable: () => this.#editable,\n })\n ctx.update(indentConfig.key, (value) => ({\n ...value,\n size: 4,\n }))\n })\n .use(commonmark)\n .use(listener)\n .use(history)\n .use(indent)\n .use(trailing)\n .use(clipboard)\n .use(gfm)\n\n const promiseList: Promise<unknown>[] = []\n\n enabledFeatures.forEach((feature) => {\n const config = (featureConfigs as Partial<Record<CrepeFeature, never>>)[\n feature\n ]\n promiseList.push(loadFeature(feature, this.#editor, config))\n })\n\n this.#initPromise = Promise.all(promiseList)\n }\n\n 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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"}
|
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
var katex = require('katex');
|
|
4
4
|
var codeBlock = require('@milkdown/kit/component/code-block');
|
|
5
|
-
var index
|
|
5
|
+
var index = require('./index-dpBsp7Eo.js');
|
|
6
6
|
var remarkMath = require('remark-math');
|
|
7
7
|
var utils = require('@milkdown/kit/utils');
|
|
8
8
|
var unistUtilVisit = require('unist-util-visit');
|
|
9
|
-
var inlineLatex = require('./inline-latex-
|
|
10
|
-
var index = require('./index-
|
|
9
|
+
var inlineLatex = require('./inline-latex-D0G71cGk.js');
|
|
10
|
+
var index$1 = require('./index-AlHHvSR_.js');
|
|
11
11
|
var atomico = require('atomico');
|
|
12
12
|
var tooltip = require('@milkdown/kit/plugin/tooltip');
|
|
13
13
|
var state = require('@milkdown/kit/prose/state');
|
|
@@ -15,7 +15,7 @@ var view = require('@milkdown/kit/prose/view');
|
|
|
15
15
|
var keymap = require('@milkdown/kit/prose/keymap');
|
|
16
16
|
var history = require('@milkdown/kit/prose/history');
|
|
17
17
|
var model = require('@milkdown/kit/prose/model');
|
|
18
|
-
var
|
|
18
|
+
var functions = require('./functions-Dk90yOUc.js');
|
|
19
19
|
var prose = require('@milkdown/kit/prose');
|
|
20
20
|
var commonmark = require('@milkdown/kit/preset/commonmark');
|
|
21
21
|
var inputrules = require('@milkdown/kit/prose/inputrules');
|
|
@@ -60,14 +60,14 @@ const latexEditComponent = ({
|
|
|
60
60
|
var _a;
|
|
61
61
|
const onMouseDown = (e) => {
|
|
62
62
|
e.preventDefault();
|
|
63
|
-
updateValue == null ?
|
|
63
|
+
updateValue == null ? void 0 : updateValue();
|
|
64
64
|
};
|
|
65
65
|
return atomico.html`
|
|
66
66
|
<host>
|
|
67
67
|
<div class="container">
|
|
68
68
|
${innerView && atomico.h(innerView.dom, {})}
|
|
69
69
|
<button onmousedown=${onMouseDown}>
|
|
70
|
-
${(_a = config == null ?
|
|
70
|
+
${(_a = config == null ? void 0 : config.inlineEditConfirm) == null ? void 0 : _a.call(config)}
|
|
71
71
|
</button>
|
|
72
72
|
</div>
|
|
73
73
|
</host>
|
|
@@ -143,7 +143,7 @@ class LatexInlineTooltip {
|
|
|
143
143
|
"Mod-y": history.redo,
|
|
144
144
|
Enter: () => {
|
|
145
145
|
var _a, _b;
|
|
146
|
-
(_b = (_a = __privateGet(this, _content)).updateValue) == null ?
|
|
146
|
+
(_b = (_a = __privateGet(this, _content)).updateValue) == null ? void 0 : _b.call(_a);
|
|
147
147
|
return true;
|
|
148
148
|
}
|
|
149
149
|
})
|
|
@@ -219,13 +219,13 @@ const blockLatexSchema = commonmark.codeBlockSchema.extendSchema((prev) => {
|
|
|
219
219
|
toMarkdown: {
|
|
220
220
|
match: baseSchema.toMarkdown.match,
|
|
221
221
|
runner: (state, node) => {
|
|
222
|
-
var _a;
|
|
223
|
-
const language = node.attrs.language;
|
|
222
|
+
var _a, _b;
|
|
223
|
+
const language = (_a = node.attrs.language) != null ? _a : "";
|
|
224
224
|
if (language.toLowerCase() === "latex") {
|
|
225
225
|
state.addNode(
|
|
226
226
|
"math",
|
|
227
|
-
|
|
228
|
-
((
|
|
227
|
+
void 0,
|
|
228
|
+
((_b = node.content.firstChild) == null ? void 0 : _b.text) || ""
|
|
229
229
|
);
|
|
230
230
|
} else {
|
|
231
231
|
return baseSchema.toMarkdown.runner(state, node);
|
|
@@ -236,11 +236,11 @@ const blockLatexSchema = commonmark.codeBlockSchema.extendSchema((prev) => {
|
|
|
236
236
|
};
|
|
237
237
|
});
|
|
238
238
|
|
|
239
|
-
index.defIfNotExists("milkdown-latex-inline-edit", LatexInlineEditElement);
|
|
239
|
+
index$1.defIfNotExists("milkdown-latex-inline-edit", LatexInlineEditElement);
|
|
240
240
|
const defineFeature = (editor, config) => {
|
|
241
241
|
editor.config((ctx) => {
|
|
242
|
-
const flags = ctx.get(index
|
|
243
|
-
const isCodeMirrorEnabled = flags.includes(index
|
|
242
|
+
const flags = ctx.get(index.FeaturesCtx);
|
|
243
|
+
const isCodeMirrorEnabled = flags.includes(index.CrepeFeature.CodeMirror);
|
|
244
244
|
if (!isCodeMirrorEnabled) {
|
|
245
245
|
throw new Error("You need to enable CodeMirror to use LaTeX feature");
|
|
246
246
|
}
|
|
@@ -248,7 +248,7 @@ const defineFeature = (editor, config) => {
|
|
|
248
248
|
...prev,
|
|
249
249
|
renderPreview: (language, content) => {
|
|
250
250
|
if (language.toLowerCase() === "latex" && content.length > 0) {
|
|
251
|
-
return renderLatex(content, config == null ?
|
|
251
|
+
return renderLatex(content, config == null ? void 0 : config.katexOptions);
|
|
252
252
|
}
|
|
253
253
|
const renderPreview = prev.renderPreview;
|
|
254
254
|
return renderPreview(language, content);
|
|
@@ -258,7 +258,7 @@ const defineFeature = (editor, config) => {
|
|
|
258
258
|
view: (view) => {
|
|
259
259
|
var _a;
|
|
260
260
|
return new LatexInlineTooltip(ctx, view, {
|
|
261
|
-
inlineEditConfirm: (_a = config == null ?
|
|
261
|
+
inlineEditConfirm: (_a = config == null ? void 0 : config.inlineEditConfirm) != null ? _a : () => functions.confirmIcon,
|
|
262
262
|
...config
|
|
263
263
|
});
|
|
264
264
|
}
|
|
@@ -275,4 +275,4 @@ function renderLatex(content, options) {
|
|
|
275
275
|
}
|
|
276
276
|
|
|
277
277
|
exports.defineFeature = defineFeature;
|
|
278
|
-
//# sourceMappingURL=index-
|
|
278
|
+
//# sourceMappingURL=index-gk_gJ489.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-gk_gJ489.js","sources":["../../src/feature/latex/remark.ts","../../src/feature/latex/inline-tooltip/component.ts","../../src/feature/latex/inline-tooltip/tooltip.ts","../../src/feature/latex/inline-tooltip/view.ts","../../src/feature/latex/input-rule.ts","../../src/feature/latex/block-latex.ts","../../src/feature/latex/index.ts"],"sourcesContent":["import remarkMath from 'remark-math'\nimport { $remark } from '@milkdown/kit/utils'\nimport type { Node } from '@milkdown/kit/transformer'\nimport { visit } from 'unist-util-visit'\n\nexport const remarkMathPlugin = $remark<'remarkMath', undefined>(\n 'remarkMath',\n () => remarkMath\n)\n\nfunction visitMathBlock(ast: Node) {\n return visit(\n ast,\n 'math',\n (\n node: Node & { value: string },\n index: number,\n parent: Node & { children: Node[] }\n ) => {\n const { value } = node as Node & { value: string }\n const newNode = {\n type: 'code',\n lang: 'LaTeX',\n value,\n }\n parent.children.splice(index, 1, newNode)\n }\n )\n}\n\n/// Turn math block into code block with language LaTeX.\nexport const remarkMathBlockPlugin = $remark(\n 'remarkMathBlock',\n () => () => visitMathBlock\n)\n","import { c, h, html, type Component } from 'atomico'\nimport type { LatexConfig } from '..'\nimport type { EditorView } from '@milkdown/kit/prose/view'\n\ntype LatexEditComponentProps = {\n config: Partial<LatexConfig>\n innerView: EditorView\n updateValue: () => void\n}\n\nexport const latexEditComponent: Component<LatexEditComponentProps> = ({\n config,\n innerView,\n updateValue,\n}) => {\n const onMouseDown = (e: MouseEvent) => {\n e.preventDefault()\n updateValue?.()\n }\n return html`\n <host>\n <div class=\"container\">\n ${innerView && h(innerView.dom, {})}\n <button onmousedown=${onMouseDown}>\n ${config?.inlineEditConfirm?.()}\n </button>\n </div>\n </host>\n `\n}\n\nlatexEditComponent.props = {\n config: Object,\n innerView: Object,\n updateValue: Function,\n}\n\nexport const LatexInlineEditElement = c(latexEditComponent)\n","import { tooltipFactory } from '@milkdown/kit/plugin/tooltip'\n\nexport const inlineLatexTooltip = tooltipFactory('INLINE_LATEX')\n","import type { Ctx } from '@milkdown/kit/ctx'\nimport { TooltipProvider } from '@milkdown/kit/plugin/tooltip'\nimport type { PluginView } from '@milkdown/kit/prose/state'\nimport { EditorState, NodeSelection } from '@milkdown/kit/prose/state'\nimport { EditorView } from '@milkdown/kit/prose/view'\nimport { mathInlineId } from '../inline-latex'\nimport { LatexInlineEditElement } from './component'\nimport type { LatexConfig } from '..'\nimport { keymap } from '@milkdown/kit/prose/keymap'\nimport { redo, undo } from '@milkdown/kit/prose/history'\nimport { Schema } from '@milkdown/kit/prose/model'\n\nexport class LatexInlineTooltip implements PluginView {\n #content = new LatexInlineEditElement()\n #provider: TooltipProvider\n #dom: HTMLElement\n #innerView: EditorView | null\n\n constructor(\n readonly ctx: Ctx,\n view: EditorView,\n config: Partial<LatexConfig>\n ) {\n this.#provider = new TooltipProvider({\n debounce: 0,\n content: this.#content,\n shouldShow: this.#shouldShow,\n offset: 10,\n floatingUIOptions: {\n placement: 'bottom',\n },\n })\n this.#content.config = config\n this.#provider.update(view)\n this.#dom = document.createElement('div')\n this.#innerView = null\n }\n\n #onHide = () => {\n if (this.#innerView) {\n this.#innerView.destroy()\n this.#innerView = null\n }\n }\n\n #shouldShow = (view: EditorView) => {\n const shouldShow = () => {\n const { selection, schema } = view.state\n if (selection.empty) return false\n if (!(selection instanceof NodeSelection)) return false\n const node = selection.node\n if (node.type.name !== mathInlineId) return false\n\n const textFrom = selection.from\n\n const paragraph = schema.nodes.paragraph!.create(\n null,\n schema.text(node.attrs.value)\n )\n\n const innerView = new EditorView(this.#dom, {\n state: EditorState.create({\n doc: paragraph,\n schema: new Schema({\n nodes: {\n doc: {\n content: 'block+',\n },\n paragraph: {\n content: 'inline*',\n group: 'block',\n parseDOM: [{ tag: 'p' }],\n toDOM() {\n return ['p', 0]\n },\n },\n text: {\n group: 'inline',\n },\n },\n }),\n plugins: [\n keymap({\n 'Mod-z': undo,\n 'Mod-Z': redo,\n 'Mod-y': redo,\n Enter: () => {\n this.#content.updateValue?.()\n return true\n },\n }),\n ],\n }),\n })\n\n this.#innerView = innerView\n this.#content.innerView = this.#innerView\n this.#content.updateValue = () => {\n const { tr } = view.state\n tr.setNodeAttribute(textFrom, 'value', innerView.state.doc.textContent)\n view.dispatch(tr)\n requestAnimationFrame(() => {\n view.focus()\n })\n }\n return true\n }\n\n const show = shouldShow()\n if (!show) this.#onHide()\n return show\n }\n\n update = (view: EditorView, prevState?: EditorState) => {\n this.#provider.update(view, prevState)\n }\n\n destroy = () => {\n this.#provider.destroy()\n this.#content.remove()\n }\n}\n","import { $inputRule } from '@milkdown/kit/utils'\nimport { nodeRule } from '@milkdown/kit/prose'\nimport { mathInlineSchema } from './inline-latex'\nimport { codeBlockSchema } from '@milkdown/kit/preset/commonmark'\nimport { textblockTypeInputRule } from '@milkdown/kit/prose/inputrules'\n\n/// Input rule for inline math.\n/// When you type $E=MC^2$, it will create an inline math node.\nexport const mathInlineInputRule = $inputRule((ctx) =>\n nodeRule(/(?:\\$)([^$]+)(?:\\$)$/, mathInlineSchema.type(ctx), {\n getAttr: (match) => {\n return {\n value: match[1] ?? '',\n }\n },\n })\n)\n\n/// A input rule for creating block math.\n/// For example, `$$ ` will create a code block with language javascript.\nexport const mathBlockInputRule = $inputRule((ctx) =>\n textblockTypeInputRule(/^\\$\\$[\\s\\n]$/, codeBlockSchema.type(ctx), () => ({\n language: 'LaTeX',\n }))\n)\n","import { codeBlockSchema } from '@milkdown/kit/preset/commonmark'\n\nexport const blockLatexSchema = codeBlockSchema.extendSchema((prev) => {\n return (ctx) => {\n const baseSchema = prev(ctx)\n return {\n ...baseSchema,\n toMarkdown: {\n match: baseSchema.toMarkdown.match,\n runner: (state, node) => {\n const language = node.attrs.language ?? ''\n if (language.toLowerCase() === 'latex') {\n state.addNode(\n 'math',\n undefined,\n node.content.firstChild?.text || ''\n )\n } else {\n return baseSchema.toMarkdown.runner(state, node)\n }\n },\n },\n }\n }\n})\n","import type { KatexOptions } from 'katex'\nimport katex from 'katex'\nimport { codeBlockConfig } from '@milkdown/kit/component/code-block'\nimport { CrepeFeature } from '../..'\nimport { FeaturesCtx } from '../../core/slice'\nimport type { DefineFeature, Icon } from '../shared'\nimport { remarkMathBlockPlugin, remarkMathPlugin } from './remark'\nimport { mathInlineSchema } from './inline-latex'\nimport { defIfNotExists } from '../../utils'\nimport { LatexInlineEditElement } from './inline-tooltip/component'\nimport { inlineLatexTooltip } from './inline-tooltip/tooltip'\nimport { LatexInlineTooltip } from './inline-tooltip/view'\nimport { confirmIcon } from '../../icons'\nimport { mathBlockInputRule, mathInlineInputRule } from './input-rule'\nimport { blockLatexSchema } from './block-latex'\n\nexport interface LatexConfig {\n katexOptions: KatexOptions\n inlineEditConfirm: Icon\n}\n\nexport type LatexFeatureConfig = Partial<LatexConfig>\n\ndefIfNotExists('milkdown-latex-inline-edit', LatexInlineEditElement)\nexport const defineFeature: DefineFeature<LatexFeatureConfig> = (\n editor,\n config\n) => {\n editor\n .config((ctx) => {\n const flags = ctx.get(FeaturesCtx)\n const isCodeMirrorEnabled = flags.includes(CrepeFeature.CodeMirror)\n if (!isCodeMirrorEnabled) {\n throw new Error('You need to enable CodeMirror to use LaTeX feature')\n }\n\n ctx.update(codeBlockConfig.key, (prev) => ({\n ...prev,\n renderPreview: (language, content) => {\n if (language.toLowerCase() === 'latex' && content.length > 0) {\n return renderLatex(content, config?.katexOptions)\n }\n const renderPreview = prev.renderPreview\n return renderPreview(language, content)\n },\n }))\n\n ctx.set(inlineLatexTooltip.key, {\n view: (view) => {\n return new LatexInlineTooltip(ctx, view, {\n inlineEditConfirm: config?.inlineEditConfirm ?? (() => confirmIcon),\n ...config,\n })\n },\n })\n })\n .use(remarkMathPlugin)\n .use(remarkMathBlockPlugin)\n .use(mathInlineSchema)\n .use(inlineLatexTooltip)\n .use(mathInlineInputRule)\n .use(mathBlockInputRule)\n .use(blockLatexSchema)\n}\n\nfunction renderLatex(content: string, options?: KatexOptions) {\n const html = katex.renderToString(content, {\n ...options,\n throwOnError: false,\n displayMode: true,\n })\n return html\n}\n"],"names":["$remark","visit","html","h","c","tooltipFactory","view","NodeSelection","mathInlineId","EditorView","EditorState","Schema","keymap","undo","redo","TooltipProvider","$inputRule","nodeRule","mathInlineSchema","textblockTypeInputRule","codeBlockSchema","defIfNotExists","FeaturesCtx","CrepeFeature","codeBlockConfig","confirmIcon"],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
var listItemBlock = require('@milkdown/kit/component/list-item-block');
|
|
4
4
|
var atomico = require('atomico');
|
|
5
5
|
var clsx = require('clsx');
|
|
6
|
-
var
|
|
6
|
+
var functions = require('./functions-Dk90yOUc.js');
|
|
7
7
|
|
|
8
8
|
function configureListItem(ctx, config) {
|
|
9
9
|
ctx.set(listItemBlock.listItemBlockConfig.key, {
|
|
@@ -12,17 +12,17 @@ function configureListItem(ctx, config) {
|
|
|
12
12
|
if (checked == null) {
|
|
13
13
|
if (listType === "bullet")
|
|
14
14
|
return atomico.html`<span class="label"
|
|
15
|
-
>${(_b = (_a = config == null ?
|
|
15
|
+
>${(_b = (_a = config == null ? void 0 : config.bulletIcon) == null ? void 0 : _a.call(config)) != null ? _b : functions.bulletIcon}</span
|
|
16
16
|
>`;
|
|
17
17
|
return atomico.html`<span class="label">${label}</span>`;
|
|
18
18
|
}
|
|
19
19
|
if (checked)
|
|
20
20
|
return atomico.html`<span
|
|
21
21
|
class=${clsx("label checkbox", readonly && "readonly")}
|
|
22
|
-
>${(_d = (_c = config == null ?
|
|
22
|
+
>${(_d = (_c = config == null ? void 0 : config.checkBoxCheckedIcon) == null ? void 0 : _c.call(config)) != null ? _d : functions.checkBoxCheckedIcon}</span
|
|
23
23
|
>`;
|
|
24
24
|
return atomico.html`<span class=${clsx("label checkbox", readonly && "readonly")}
|
|
25
|
-
>${(_f = (_e = config == null ?
|
|
25
|
+
>${(_f = (_e = config == null ? void 0 : config.checkBoxUncheckedIcon) == null ? void 0 : _e.call(config)) != null ? _f : functions.checkBoxUncheckedIcon}</span
|
|
26
26
|
>`;
|
|
27
27
|
}
|
|
28
28
|
});
|
|
@@ -32,4 +32,4 @@ const defineFeature = (editor, config) => {
|
|
|
32
32
|
};
|
|
33
33
|
|
|
34
34
|
exports.defineFeature = defineFeature;
|
|
35
|
-
//# sourceMappingURL=index-
|
|
35
|
+
//# sourceMappingURL=index-hPk2gbSt.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-
|
|
1
|
+
{"version":3,"file":"index-hPk2gbSt.js","sources":["../../src/feature/list-item/index.ts"],"sourcesContent":["import type { Ctx } from '@milkdown/kit/ctx'\nimport {\n listItemBlockComponent,\n listItemBlockConfig,\n} from '@milkdown/kit/component/list-item-block'\nimport { html } from 'atomico'\nimport clsx from 'clsx'\nimport type { DefineFeature, Icon } from '../shared'\nimport {\n bulletIcon,\n checkBoxCheckedIcon,\n checkBoxUncheckedIcon,\n} from '../../icons'\n\nexport interface ListItemConfig {\n bulletIcon: Icon\n checkBoxCheckedIcon: Icon\n checkBoxUncheckedIcon: Icon\n}\n\nexport type ListItemFeatureConfig = Partial<ListItemConfig>\n\nfunction configureListItem(ctx: Ctx, config?: ListItemFeatureConfig) {\n ctx.set(listItemBlockConfig.key, {\n renderLabel: ({ label, listType, checked, readonly }) => {\n if (checked == null) {\n if (listType === 'bullet')\n return html`<span class=\"label\"\n >${config?.bulletIcon?.() ?? bulletIcon}</span\n >`\n\n return html`<span class=\"label\">${label}</span>`\n }\n\n if (checked)\n return html`<span\n class=${clsx('label checkbox', readonly && 'readonly')}\n >${config?.checkBoxCheckedIcon?.() ?? checkBoxCheckedIcon}</span\n >`\n\n return html`<span class=${clsx('label checkbox', readonly && 'readonly')}\n >${config?.checkBoxUncheckedIcon?.() ?? checkBoxUncheckedIcon}</span\n >`\n },\n })\n}\n\nexport const defineFeature: DefineFeature<ListItemFeatureConfig> = (\n editor,\n config\n) => {\n editor\n .config((ctx) => configureListItem(ctx, config))\n .use(listItemBlockComponent)\n}\n"],"names":["listItemBlockConfig","html","bulletIcon","checkBoxCheckedIcon","checkBoxUncheckedIcon","listItemBlockComponent"],"mappings":";;;;;;;AAsBA,SAAS,iBAAA,CAAkB,KAAU,MAAgC,EAAA;AACnE,EAAI,GAAA,CAAA,GAAA,CAAIA,kCAAoB,GAAK,EAAA;AAAA,IAC/B,aAAa,CAAC,EAAE,OAAO,QAAU,EAAA,OAAA,EAAS,UAAe,KAAA;AAxB7D,MAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA;AAyBM,MAAA,IAAI,WAAW,IAAM,EAAA;AACnB,QAAA,IAAI,QAAa,KAAA,QAAA;AACf,UAAO,OAAAC,YAAA,CAAA;AAAA,aACF,EAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,MAAA,IAAA,IAAA,GAAA,MAAA,GAAA,MAAA,CAAQ,UAAR,KAAA,IAAA,GAAA,MAAA,GAAA,EAAA,CAAA,IAAA,CAAA,MAAA,CAAA,KAAA,IAAA,GAAA,EAAA,GAA0BC,oBAAU,CAAA;AAAA,WAAA,CAAA;AAG3C,QAAA,OAAOD,mCAA2B,KAAK,CAAA,OAAA,CAAA;AAAA;AAGzC,MAAI,IAAA,OAAA;AACF,QAAO,OAAAA,YAAA,CAAA;AAAA,gBAAA,EACG,IAAK,CAAA,gBAAA,EAAkB,QAAY,IAAA,UAAU,CAAC;AAAA,WACnD,EAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,MAAA,IAAA,IAAA,GAAA,MAAA,GAAA,MAAA,CAAQ,mBAAR,KAAA,IAAA,GAAA,MAAA,GAAA,EAAA,CAAA,IAAA,CAAA,MAAA,CAAA,KAAA,IAAA,GAAA,EAAA,GAAmCE,6BAAmB,CAAA;AAAA,SAAA,CAAA;AAG7D,MAAA,OAAOF,YAAmB,CAAA,YAAA,EAAA,IAAA,CAAK,gBAAkB,EAAA,QAAA,IAAY,UAAU,CAAC;AAAA,SACnE,EAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,MAAA,IAAA,IAAA,GAAA,MAAA,GAAA,MAAA,CAAQ,qBAAR,KAAA,IAAA,GAAA,MAAA,GAAA,EAAA,CAAA,IAAA,CAAA,MAAA,CAAA,KAAA,IAAA,GAAA,EAAA,GAAqCG,+BAAqB,CAAA;AAAA,OAAA,CAAA;AAAA;AAEjE,GACD,CAAA;AACH;AAEa,MAAA,aAAA,GAAsD,CACjE,MAAA,EACA,MACG,KAAA;AACH,EACG,MAAA,CAAA,MAAA,CAAO,CAAC,GAAQ,KAAA,iBAAA,CAAkB,KAAK,MAAM,CAAC,CAC9C,CAAA,GAAA,CAAIC,oCAAsB,CAAA;AAC/B;;;;"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var linkTooltip = require('@milkdown/kit/component/link-tooltip');
|
|
4
|
+
var functions = require('./functions-Dk90yOUc.js');
|
|
5
|
+
require('atomico');
|
|
6
|
+
|
|
7
|
+
const defineFeature = (editor, config) => {
|
|
8
|
+
editor.config(linkTooltip.configureLinkTooltip).config((ctx) => {
|
|
9
|
+
ctx.update(linkTooltip.linkTooltipConfig.key, (prev) => {
|
|
10
|
+
var _a, _b, _c, _d, _e, _f;
|
|
11
|
+
return {
|
|
12
|
+
...prev,
|
|
13
|
+
linkIcon: (_a = config == null ? void 0 : config.linkIcon) != null ? _a : () => functions.copyIcon,
|
|
14
|
+
editButton: (_b = config == null ? void 0 : config.editButton) != null ? _b : () => functions.editIcon,
|
|
15
|
+
removeButton: (_c = config == null ? void 0 : config.removeButton) != null ? _c : () => functions.removeIcon,
|
|
16
|
+
confirmButton: (_d = config == null ? void 0 : config.confirmButton) != null ? _d : () => functions.confirmIcon,
|
|
17
|
+
inputPlaceholder: (_e = config == null ? void 0 : config.inputPlaceholder) != null ? _e : "Paste link...",
|
|
18
|
+
onCopyLink: (_f = config == null ? void 0 : config.onCopyLink) != null ? _f : () => {
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
});
|
|
22
|
+
}).use(linkTooltip.linkTooltipPlugin);
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
exports.defineFeature = defineFeature;
|
|
26
|
+
//# sourceMappingURL=index-nrFkJeLW.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-
|
|
1
|
+
{"version":3,"file":"index-nrFkJeLW.js","sources":["../../src/feature/link-tooltip/index.ts"],"sourcesContent":["import {\n configureLinkTooltip,\n linkTooltipConfig,\n linkTooltipPlugin,\n} from '@milkdown/kit/component/link-tooltip'\nimport type { DefineFeature, Icon } from '../shared'\nimport { confirmIcon, copyIcon, editIcon, removeIcon } from '../../icons'\n\ninterface LinkTooltipConfig {\n linkIcon: Icon\n editButton: Icon\n removeButton: Icon\n confirmButton: Icon\n inputPlaceholder: string\n onCopyLink: (link: string) => void\n}\n\nexport type LinkTooltipFeatureConfig = Partial<LinkTooltipConfig>\n\nexport const defineFeature: DefineFeature<LinkTooltipFeatureConfig> = (\n editor,\n config\n) => {\n editor\n .config(configureLinkTooltip)\n .config((ctx) => {\n ctx.update(linkTooltipConfig.key, (prev) => ({\n ...prev,\n linkIcon: config?.linkIcon ?? (() => copyIcon),\n editButton: config?.editButton ?? (() => editIcon),\n removeButton: config?.removeButton ?? (() => removeIcon),\n confirmButton: config?.confirmButton ?? (() => confirmIcon),\n inputPlaceholder: config?.inputPlaceholder ?? 'Paste link...',\n onCopyLink: config?.onCopyLink ?? (() => {}),\n }))\n })\n .use(linkTooltipPlugin)\n}\n"],"names":["configureLinkTooltip","linkTooltipConfig","copyIcon","editIcon","removeIcon","confirmIcon","linkTooltipPlugin"],"mappings":";;;;;;AAmBa,MAAA,aAAA,GAAyD,CACpE,MAAA,EACA,MACG,KAAA;AACH,EAAA,MAAA,CACG,MAAO,CAAAA,gCAAoB,CAC3B,CAAA,MAAA,CAAO,CAAC,GAAQ,KAAA;AACf,IAAA,GAAA,CAAI,MAAO,CAAAC,6BAAA,CAAkB,GAAK,EAAA,CAAC,IAAM,KAAA;AA1B/C,MAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA;AA0BmD,MAAA,OAAA;AAAA,QAC3C,GAAG,IAAA;AAAA,QACH,QAAU,EAAA,CAAA,EAAA,GAAA,MAAA,IAAA,IAAA,GAAA,MAAA,GAAA,MAAA,CAAQ,QAAR,KAAA,IAAA,GAAA,EAAA,GAAqB,MAAMC,kBAAA;AAAA,QACrC,UAAY,EAAA,CAAA,EAAA,GAAA,MAAA,IAAA,IAAA,GAAA,MAAA,GAAA,MAAA,CAAQ,UAAR,KAAA,IAAA,GAAA,EAAA,GAAuB,MAAMC,kBAAA;AAAA,QACzC,YAAc,EAAA,CAAA,EAAA,GAAA,MAAA,IAAA,IAAA,GAAA,MAAA,GAAA,MAAA,CAAQ,YAAR,KAAA,IAAA,GAAA,EAAA,GAAyB,MAAMC,oBAAA;AAAA,QAC7C,aAAe,EAAA,CAAA,EAAA,GAAA,MAAA,IAAA,IAAA,GAAA,MAAA,GAAA,MAAA,CAAQ,aAAR,KAAA,IAAA,GAAA,EAAA,GAA0B,MAAMC,qBAAA;AAAA,QAC/C,gBAAA,EAAA,CAAkB,EAAQ,GAAA,MAAA,IAAA,IAAA,GAAA,MAAA,GAAA,MAAA,CAAA,gBAAA,KAAR,IAA4B,GAAA,EAAA,GAAA,eAAA;AAAA,QAC9C,UAAY,EAAA,CAAA,EAAA,GAAA,MAAA,IAAA,IAAA,GAAA,MAAA,GAAA,MAAA,CAAQ,UAAR,KAAA,IAAA,GAAA,EAAA,GAAuB,MAAM;AAAA;AAAC,OAC5C;AAAA,KAAE,CAAA;AAAA,GACH,CACA,CAAA,GAAA,CAAIC,6BAAiB,CAAA;AAC1B;;;;"}
|
package/lib/cjs/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var index = require('./index-
|
|
3
|
+
var index = require('./index-dpBsp7Eo.js');
|
|
4
4
|
require('@milkdown/kit/core');
|
|
5
5
|
require('@milkdown/kit/preset/commonmark');
|
|
6
6
|
require('@milkdown/kit/preset/gfm');
|
|
@@ -16,4 +16,5 @@ require('@milkdown/kit/plugin/listener');
|
|
|
16
16
|
|
|
17
17
|
exports.Crepe = index.Crepe;
|
|
18
18
|
exports.CrepeFeature = index.CrepeFeature;
|
|
19
|
+
exports.crepeCtx = index.crepeCtx;
|
|
19
20
|
//# sourceMappingURL=index.js.map
|
package/lib/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;"}
|
|
@@ -44,11 +44,11 @@ const mathInlineSchema = utils.$nodeSchema(mathInlineId, () => ({
|
|
|
44
44
|
toMarkdown: {
|
|
45
45
|
match: (node) => node.type.name === mathInlineId,
|
|
46
46
|
runner: (state, node) => {
|
|
47
|
-
state.addNode("inlineMath",
|
|
47
|
+
state.addNode("inlineMath", void 0, node.attrs.value);
|
|
48
48
|
}
|
|
49
49
|
}
|
|
50
50
|
}));
|
|
51
51
|
|
|
52
52
|
exports.mathInlineId = mathInlineId;
|
|
53
53
|
exports.mathInlineSchema = mathInlineSchema;
|
|
54
|
-
//# sourceMappingURL=inline-latex-
|
|
54
|
+
//# sourceMappingURL=inline-latex-D0G71cGk.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inline-latex-
|
|
1
|
+
{"version":3,"file":"inline-latex-D0G71cGk.js","sources":["../../src/feature/latex/inline-latex.ts"],"sourcesContent":["import { $nodeSchema } from '@milkdown/kit/utils'\nimport katex from 'katex'\n\nexport const mathInlineId = 'math_inline'\n\n/// Schema for inline math node.\n/// Add support for:\n///\n/// ```markdown\n/// $a^2 + b^2 = c^2$\n/// ```\nexport const mathInlineSchema = $nodeSchema(mathInlineId, () => ({\n group: 'inline',\n inline: true,\n draggable: true,\n atom: true,\n attrs: {\n value: {\n default: '',\n },\n },\n parseDOM: [\n {\n tag: `span[data-type=\"${mathInlineId}\"]`,\n getAttrs: (dom) => {\n return {\n value: (dom as HTMLElement).dataset.value ?? '',\n }\n },\n },\n ],\n toDOM: (node) => {\n const code: string = node.attrs.value\n const dom = document.createElement('span')\n dom.dataset.type = mathInlineId\n dom.dataset.value = code\n katex.render(code, dom, {\n throwOnError: false,\n })\n\n return dom\n },\n parseMarkdown: {\n match: (node) => node.type === 'inlineMath',\n runner: (state, node, type) => {\n state.addNode(type, { value: node.value as string })\n },\n },\n toMarkdown: {\n match: (node) => node.type.name === mathInlineId,\n runner: (state, node) => {\n state.addNode('inlineMath', undefined, node.attrs.value)\n },\n },\n}))\n"],"names":["$nodeSchema"],"mappings":";;;;;AAGO,MAAM,YAAe,GAAA;AAQf,MAAA,gBAAA,GAAmBA,iBAAY,CAAA,YAAA,EAAc,OAAO;AAAA,EAC/D,KAAO,EAAA,QAAA;AAAA,EACP,MAAQ,EAAA,IAAA;AAAA,EACR,SAAW,EAAA,IAAA;AAAA,EACX,IAAM,EAAA,IAAA;AAAA,EACN,KAAO,EAAA;AAAA,IACL,KAAO,EAAA;AAAA,MACL,OAAS,EAAA;AAAA;AACX,GACF;AAAA,EACA,QAAU,EAAA;AAAA,IACR;AAAA,MACE,GAAA,EAAK,mBAAmB,YAAY,CAAA,EAAA,CAAA;AAAA,MACpC,QAAA,EAAU,CAAC,GAAQ,KAAA;AAxBzB,QAAA,IAAA,EAAA;AAyBQ,QAAO,OAAA;AAAA,UACL,KAAQ,EAAA,CAAA,EAAA,GAAA,GAAA,CAAoB,OAAQ,CAAA,KAAA,KAA5B,IAAqC,GAAA,EAAA,GAAA;AAAA,SAC/C;AAAA;AACF;AACF,GACF;AAAA,EACA,KAAA,EAAO,CAAC,IAAS,KAAA;AACf,IAAM,MAAA,IAAA,GAAe,KAAK,KAAM,CAAA,KAAA;AAChC,IAAM,MAAA,GAAA,GAAM,QAAS,CAAA,aAAA,CAAc,MAAM,CAAA;AACzC,IAAA,GAAA,CAAI,QAAQ,IAAO,GAAA,YAAA;AACnB,IAAA,GAAA,CAAI,QAAQ,KAAQ,GAAA,IAAA;AACpB,IAAM,KAAA,CAAA,MAAA,CAAO,MAAM,GAAK,EAAA;AAAA,MACtB,YAAc,EAAA;AAAA,KACf,CAAA;AAED,IAAO,OAAA,GAAA;AAAA,GACT;AAAA,EACA,aAAe,EAAA;AAAA,IACb,KAAO,EAAA,CAAC,IAAS,KAAA,IAAA,CAAK,IAAS,KAAA,YAAA;AAAA,IAC/B,MAAQ,EAAA,CAAC,KAAO,EAAA,IAAA,EAAM,IAAS,KAAA;AAC7B,MAAA,KAAA,CAAM,QAAQ,IAAM,EAAA,EAAE,KAAO,EAAA,IAAA,CAAK,OAAiB,CAAA;AAAA;AACrD,GACF;AAAA,EACA,UAAY,EAAA;AAAA,IACV,KAAO,EAAA,CAAC,IAAS,KAAA,IAAA,CAAK,KAAK,IAAS,KAAA,YAAA;AAAA,IACpC,MAAA,EAAQ,CAAC,KAAA,EAAO,IAAS,KAAA;AACvB,MAAA,KAAA,CAAM,OAAQ,CAAA,YAAA,EAAc,MAAW,EAAA,IAAA,CAAK,MAAM,KAAK,CAAA;AAAA;AACzD;AAEJ,CAAE,CAAA;;;;;"}
|
|
@@ -634,5 +634,19 @@ const todoListIcon = html`
|
|
|
634
634
|
</svg>
|
|
635
635
|
`;
|
|
636
636
|
|
|
637
|
-
|
|
638
|
-
|
|
637
|
+
const functionsIcon = html`
|
|
638
|
+
<svg
|
|
639
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
640
|
+
width="32"
|
|
641
|
+
height="32"
|
|
642
|
+
viewBox="0 0 24 24"
|
|
643
|
+
>
|
|
644
|
+
<path
|
|
645
|
+
fill="currentColor"
|
|
646
|
+
d="M7 19v-.808L13.096 12L7 5.808V5h10v1.25H9.102L14.727 12l-5.625 5.77H17V19z"
|
|
647
|
+
/>
|
|
648
|
+
</svg>
|
|
649
|
+
`;
|
|
650
|
+
|
|
651
|
+
export { functionsIcon as A, plusIcon as B, menuIcon as C, boldIcon as D, italicIcon as E, strikethroughIcon as F, linkIcon as G, dragHandleIcon as H, alignRightIcon as I, alignCenterIcon as J, alignLeftIcon as K, chevronDownIcon as a, bulletIcon as b, clearIcon as c, checkBoxCheckedIcon as d, editIcon as e, checkBoxUncheckedIcon as f, confirmIcon as g, copyIcon as h, imageIcon as i, captionIcon as j, h1Icon as k, h2Icon as l, h3Icon as m, h4Icon as n, h5Icon as o, h6Icon as p, quoteIcon as q, removeIcon as r, searchIcon as s, textIcon as t, dividerIcon as u, bulletListIcon as v, orderedListIcon as w, todoListIcon as x, codeIcon as y, tableIcon as z };
|
|
652
|
+
//# sourceMappingURL=functions-Bsik6ikd.js.map
|