@milkdown/crepe 7.5.9 → 7.6.1
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,276 @@
|
|
|
1
|
+
import katex from 'katex';
|
|
2
|
+
import { codeBlockConfig } from '@milkdown/kit/component/code-block';
|
|
3
|
+
import { F as FeaturesCtx, C as CrepeFeature } from './index-BUFg1FSH.js';
|
|
4
|
+
import remarkMath from 'remark-math';
|
|
5
|
+
import { $remark, $inputRule } from '@milkdown/kit/utils';
|
|
6
|
+
import { visit } from 'unist-util-visit';
|
|
7
|
+
import { a as mathInlineId, m as mathInlineSchema } from './inline-latex-BLd2QrJC.js';
|
|
8
|
+
import { d as defIfNotExists } from './index-CD8fvrRC.js';
|
|
9
|
+
import { c, html, h } from 'atomico';
|
|
10
|
+
import { tooltipFactory, TooltipProvider } from '@milkdown/kit/plugin/tooltip';
|
|
11
|
+
import { NodeSelection, EditorState } from '@milkdown/kit/prose/state';
|
|
12
|
+
import { EditorView } from '@milkdown/kit/prose/view';
|
|
13
|
+
import { keymap } from '@milkdown/kit/prose/keymap';
|
|
14
|
+
import { undo, redo } from '@milkdown/kit/prose/history';
|
|
15
|
+
import { Schema } from '@milkdown/kit/prose/model';
|
|
16
|
+
import { h as confirmIcon } from './todo-list-B78GeGtK.js';
|
|
17
|
+
import { nodeRule } from '@milkdown/kit/prose';
|
|
18
|
+
import { codeBlockSchema } from '@milkdown/kit/preset/commonmark';
|
|
19
|
+
import { textblockTypeInputRule } from '@milkdown/kit/prose/inputrules';
|
|
20
|
+
import '@milkdown/kit/core';
|
|
21
|
+
import '@milkdown/kit/preset/gfm';
|
|
22
|
+
import '@milkdown/kit/plugin/history';
|
|
23
|
+
import '@milkdown/kit/plugin/indent';
|
|
24
|
+
import '@milkdown/kit/plugin/clipboard';
|
|
25
|
+
import '@milkdown/kit/plugin/trailing';
|
|
26
|
+
import '@milkdown/kit/ctx';
|
|
27
|
+
import '@milkdown/kit/plugin/listener';
|
|
28
|
+
|
|
29
|
+
const remarkMathPlugin = $remark(
|
|
30
|
+
"remarkMath",
|
|
31
|
+
() => remarkMath
|
|
32
|
+
);
|
|
33
|
+
function visitMathBlock(ast) {
|
|
34
|
+
return visit(
|
|
35
|
+
ast,
|
|
36
|
+
"math",
|
|
37
|
+
(node, index, parent) => {
|
|
38
|
+
const { value } = node;
|
|
39
|
+
const newNode = {
|
|
40
|
+
type: "code",
|
|
41
|
+
lang: "LaTeX",
|
|
42
|
+
value
|
|
43
|
+
};
|
|
44
|
+
parent.children.splice(index, 1, newNode);
|
|
45
|
+
}
|
|
46
|
+
);
|
|
47
|
+
}
|
|
48
|
+
const remarkMathBlockPlugin = $remark(
|
|
49
|
+
"remarkMathBlock",
|
|
50
|
+
() => () => visitMathBlock
|
|
51
|
+
);
|
|
52
|
+
|
|
53
|
+
const latexEditComponent = ({
|
|
54
|
+
config,
|
|
55
|
+
innerView,
|
|
56
|
+
updateValue
|
|
57
|
+
}) => {
|
|
58
|
+
var _a;
|
|
59
|
+
const onMouseDown = (e) => {
|
|
60
|
+
e.preventDefault();
|
|
61
|
+
updateValue == null ? undefined : updateValue();
|
|
62
|
+
};
|
|
63
|
+
return html`
|
|
64
|
+
<host>
|
|
65
|
+
<div class="container">
|
|
66
|
+
${innerView && h(innerView.dom, {})}
|
|
67
|
+
<button onmousedown=${onMouseDown}>
|
|
68
|
+
${(_a = config == null ? undefined : config.inlineEditConfirm) == null ? undefined : _a.call(config)}
|
|
69
|
+
</button>
|
|
70
|
+
</div>
|
|
71
|
+
</host>
|
|
72
|
+
`;
|
|
73
|
+
};
|
|
74
|
+
latexEditComponent.props = {
|
|
75
|
+
config: Object,
|
|
76
|
+
innerView: Object,
|
|
77
|
+
updateValue: Function
|
|
78
|
+
};
|
|
79
|
+
const LatexInlineEditElement = c(latexEditComponent);
|
|
80
|
+
|
|
81
|
+
const inlineLatexTooltip = tooltipFactory("INLINE_LATEX");
|
|
82
|
+
|
|
83
|
+
var __typeError = (msg) => {
|
|
84
|
+
throw TypeError(msg);
|
|
85
|
+
};
|
|
86
|
+
var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
|
|
87
|
+
var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
|
|
88
|
+
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);
|
|
89
|
+
var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), member.set(obj, value), value);
|
|
90
|
+
var _content, _provider, _dom, _innerView, _onHide, _shouldShow;
|
|
91
|
+
class LatexInlineTooltip {
|
|
92
|
+
constructor(ctx, view, config) {
|
|
93
|
+
this.ctx = ctx;
|
|
94
|
+
__privateAdd(this, _content, new LatexInlineEditElement());
|
|
95
|
+
__privateAdd(this, _provider);
|
|
96
|
+
__privateAdd(this, _dom);
|
|
97
|
+
__privateAdd(this, _innerView);
|
|
98
|
+
__privateAdd(this, _onHide, () => {
|
|
99
|
+
if (__privateGet(this, _innerView)) {
|
|
100
|
+
__privateGet(this, _innerView).destroy();
|
|
101
|
+
__privateSet(this, _innerView, null);
|
|
102
|
+
}
|
|
103
|
+
});
|
|
104
|
+
__privateAdd(this, _shouldShow, (view) => {
|
|
105
|
+
const shouldShow = () => {
|
|
106
|
+
const { selection, schema } = view.state;
|
|
107
|
+
if (selection.empty) return false;
|
|
108
|
+
if (!(selection instanceof NodeSelection)) return false;
|
|
109
|
+
const node = selection.node;
|
|
110
|
+
if (node.type.name !== mathInlineId) return false;
|
|
111
|
+
const textFrom = selection.from;
|
|
112
|
+
const paragraph = schema.nodes.paragraph.create(
|
|
113
|
+
null,
|
|
114
|
+
schema.text(node.attrs.value)
|
|
115
|
+
);
|
|
116
|
+
const innerView = new EditorView(__privateGet(this, _dom), {
|
|
117
|
+
state: EditorState.create({
|
|
118
|
+
doc: paragraph,
|
|
119
|
+
schema: new Schema({
|
|
120
|
+
nodes: {
|
|
121
|
+
doc: {
|
|
122
|
+
content: "block+"
|
|
123
|
+
},
|
|
124
|
+
paragraph: {
|
|
125
|
+
content: "inline*",
|
|
126
|
+
group: "block",
|
|
127
|
+
parseDOM: [{ tag: "p" }],
|
|
128
|
+
toDOM() {
|
|
129
|
+
return ["p", 0];
|
|
130
|
+
}
|
|
131
|
+
},
|
|
132
|
+
text: {
|
|
133
|
+
group: "inline"
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
}),
|
|
137
|
+
plugins: [
|
|
138
|
+
keymap({
|
|
139
|
+
"Mod-z": undo,
|
|
140
|
+
"Mod-Z": redo,
|
|
141
|
+
"Mod-y": redo,
|
|
142
|
+
Enter: () => {
|
|
143
|
+
var _a, _b;
|
|
144
|
+
(_b = (_a = __privateGet(this, _content)).updateValue) == null ? undefined : _b.call(_a);
|
|
145
|
+
return true;
|
|
146
|
+
}
|
|
147
|
+
})
|
|
148
|
+
]
|
|
149
|
+
})
|
|
150
|
+
});
|
|
151
|
+
__privateSet(this, _innerView, innerView);
|
|
152
|
+
__privateGet(this, _content).innerView = __privateGet(this, _innerView);
|
|
153
|
+
__privateGet(this, _content).updateValue = () => {
|
|
154
|
+
const { tr } = view.state;
|
|
155
|
+
tr.setNodeAttribute(textFrom, "value", innerView.state.doc.textContent);
|
|
156
|
+
view.dispatch(tr);
|
|
157
|
+
requestAnimationFrame(() => {
|
|
158
|
+
view.focus();
|
|
159
|
+
});
|
|
160
|
+
};
|
|
161
|
+
return true;
|
|
162
|
+
};
|
|
163
|
+
const show = shouldShow();
|
|
164
|
+
if (!show) __privateGet(this, _onHide).call(this);
|
|
165
|
+
return show;
|
|
166
|
+
});
|
|
167
|
+
this.update = (view, prevState) => {
|
|
168
|
+
__privateGet(this, _provider).update(view, prevState);
|
|
169
|
+
};
|
|
170
|
+
this.destroy = () => {
|
|
171
|
+
__privateGet(this, _provider).destroy();
|
|
172
|
+
__privateGet(this, _content).remove();
|
|
173
|
+
};
|
|
174
|
+
__privateSet(this, _provider, new TooltipProvider({
|
|
175
|
+
debounce: 0,
|
|
176
|
+
content: __privateGet(this, _content),
|
|
177
|
+
shouldShow: __privateGet(this, _shouldShow),
|
|
178
|
+
offset: 10,
|
|
179
|
+
floatingUIOptions: {
|
|
180
|
+
placement: "bottom"
|
|
181
|
+
}
|
|
182
|
+
}));
|
|
183
|
+
__privateGet(this, _content).config = config;
|
|
184
|
+
__privateGet(this, _provider).update(view);
|
|
185
|
+
__privateSet(this, _dom, document.createElement("div"));
|
|
186
|
+
__privateSet(this, _innerView, null);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
_content = new WeakMap();
|
|
190
|
+
_provider = new WeakMap();
|
|
191
|
+
_dom = new WeakMap();
|
|
192
|
+
_innerView = new WeakMap();
|
|
193
|
+
_onHide = new WeakMap();
|
|
194
|
+
_shouldShow = new WeakMap();
|
|
195
|
+
|
|
196
|
+
const mathInlineInputRule = $inputRule(
|
|
197
|
+
(ctx) => nodeRule(/(?:\$)([^$]+)(?:\$)$/, mathInlineSchema.type(ctx), {
|
|
198
|
+
getAttr: (match) => {
|
|
199
|
+
var _a;
|
|
200
|
+
return {
|
|
201
|
+
value: (_a = match[1]) != null ? _a : ""
|
|
202
|
+
};
|
|
203
|
+
}
|
|
204
|
+
})
|
|
205
|
+
);
|
|
206
|
+
const mathBlockInputRule = $inputRule(
|
|
207
|
+
(ctx) => textblockTypeInputRule(/^\$\$[\s\n]$/, codeBlockSchema.type(ctx), () => ({
|
|
208
|
+
language: "LaTeX"
|
|
209
|
+
}))
|
|
210
|
+
);
|
|
211
|
+
|
|
212
|
+
const blockLatexSchema = codeBlockSchema.extendSchema((prev) => {
|
|
213
|
+
return (ctx) => {
|
|
214
|
+
const baseSchema = prev(ctx);
|
|
215
|
+
return {
|
|
216
|
+
...baseSchema,
|
|
217
|
+
toMarkdown: {
|
|
218
|
+
match: baseSchema.toMarkdown.match,
|
|
219
|
+
runner: (state, node) => {
|
|
220
|
+
var _a;
|
|
221
|
+
const language = node.attrs.language;
|
|
222
|
+
if (language.toLowerCase() === "latex") {
|
|
223
|
+
state.addNode(
|
|
224
|
+
"math",
|
|
225
|
+
undefined,
|
|
226
|
+
((_a = node.content.firstChild) == null ? undefined : _a.text) || ""
|
|
227
|
+
);
|
|
228
|
+
} else {
|
|
229
|
+
return baseSchema.toMarkdown.runner(state, node);
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
};
|
|
234
|
+
};
|
|
235
|
+
});
|
|
236
|
+
|
|
237
|
+
defIfNotExists("milkdown-latex-inline-edit", LatexInlineEditElement);
|
|
238
|
+
const defineFeature = (editor, config) => {
|
|
239
|
+
editor.config((ctx) => {
|
|
240
|
+
const flags = ctx.get(FeaturesCtx);
|
|
241
|
+
const isCodeMirrorEnabled = flags.includes(CrepeFeature.CodeMirror);
|
|
242
|
+
if (!isCodeMirrorEnabled) {
|
|
243
|
+
throw new Error("You need to enable CodeMirror to use LaTeX feature");
|
|
244
|
+
}
|
|
245
|
+
ctx.update(codeBlockConfig.key, (prev) => ({
|
|
246
|
+
...prev,
|
|
247
|
+
renderPreview: (language, content) => {
|
|
248
|
+
if (language.toLowerCase() === "latex" && content.length > 0) {
|
|
249
|
+
return renderLatex(content, config == null ? undefined : config.katexOptions);
|
|
250
|
+
}
|
|
251
|
+
const renderPreview = prev.renderPreview;
|
|
252
|
+
return renderPreview(language, content);
|
|
253
|
+
}
|
|
254
|
+
}));
|
|
255
|
+
ctx.set(inlineLatexTooltip.key, {
|
|
256
|
+
view: (view) => {
|
|
257
|
+
var _a;
|
|
258
|
+
return new LatexInlineTooltip(ctx, view, {
|
|
259
|
+
inlineEditConfirm: (_a = config == null ? undefined : config.inlineEditConfirm) != null ? _a : () => confirmIcon,
|
|
260
|
+
...config
|
|
261
|
+
});
|
|
262
|
+
}
|
|
263
|
+
});
|
|
264
|
+
}).use(remarkMathPlugin).use(remarkMathBlockPlugin).use(mathInlineSchema).use(inlineLatexTooltip).use(mathInlineInputRule).use(mathBlockInputRule).use(blockLatexSchema);
|
|
265
|
+
};
|
|
266
|
+
function renderLatex(content, options) {
|
|
267
|
+
const html = katex.renderToString(content, {
|
|
268
|
+
...options,
|
|
269
|
+
throwOnError: false,
|
|
270
|
+
displayMode: true
|
|
271
|
+
});
|
|
272
|
+
return html;
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
export { defineFeature };
|
|
276
|
+
//# sourceMappingURL=index-C5_dM0IB.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-C5_dM0IB.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":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { listItemBlockComponent, listItemBlockConfig } from '@milkdown/kit/component/list-item-block';
|
|
2
2
|
import { html } from 'atomico';
|
|
3
3
|
import clsx from 'clsx';
|
|
4
|
-
import { b as bulletIcon, d as checkBoxCheckedIcon,
|
|
4
|
+
import { b as bulletIcon, d as checkBoxCheckedIcon, f as checkBoxUncheckedIcon } from './todo-list-B78GeGtK.js';
|
|
5
5
|
|
|
6
6
|
function configureListItem(ctx, config) {
|
|
7
7
|
ctx.set(listItemBlockConfig.key, {
|
|
@@ -10,17 +10,17 @@ function configureListItem(ctx, config) {
|
|
|
10
10
|
if (checked == null) {
|
|
11
11
|
if (listType === "bullet")
|
|
12
12
|
return html`<span class="label"
|
|
13
|
-
>${(_b = (_a = config == null ?
|
|
13
|
+
>${(_b = (_a = config == null ? undefined : config.bulletIcon) == null ? undefined : _a.call(config)) != null ? _b : bulletIcon}</span
|
|
14
14
|
>`;
|
|
15
15
|
return html`<span class="label">${label}</span>`;
|
|
16
16
|
}
|
|
17
17
|
if (checked)
|
|
18
18
|
return html`<span
|
|
19
19
|
class=${clsx("label checkbox", readonly && "readonly")}
|
|
20
|
-
>${(_d = (_c = config == null ?
|
|
20
|
+
>${(_d = (_c = config == null ? undefined : config.checkBoxCheckedIcon) == null ? undefined : _c.call(config)) != null ? _d : checkBoxCheckedIcon}</span
|
|
21
21
|
>`;
|
|
22
22
|
return html`<span class=${clsx("label checkbox", readonly && "readonly")}
|
|
23
|
-
>${(_f = (_e = config == null ?
|
|
23
|
+
>${(_f = (_e = config == null ? undefined : config.checkBoxUncheckedIcon) == null ? undefined : _e.call(config)) != null ? _f : checkBoxUncheckedIcon}</span
|
|
24
24
|
>`;
|
|
25
25
|
}
|
|
26
26
|
});
|
|
@@ -30,4 +30,4 @@ const defineFeature = (editor, config) => {
|
|
|
30
30
|
};
|
|
31
31
|
|
|
32
32
|
export { defineFeature };
|
|
33
|
-
//# sourceMappingURL=index-
|
|
33
|
+
//# sourceMappingURL=index-C7Xr_l-d.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-
|
|
1
|
+
{"version":3,"file":"index-C7Xr_l-d.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":[],"mappings":";;;;;AAsBA,SAAS,iBAAA,CAAkB,KAAU,MAAgC,EAAA;AACnE,EAAI,GAAA,CAAA,GAAA,CAAI,oBAAoB,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,OAAA,IAAA,CAAA;AAAA,aACF,EAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,MAAA,IAAA,IAAA,GAAA,SAAA,GAAA,MAAA,CAAQ,UAAR,KAAA,IAAA,GAAA,SAAA,GAAA,EAAA,CAAA,IAAA,CAAA,MAAA,CAAA,KAAA,IAAA,GAAA,EAAA,GAA0B,UAAU,CAAA;AAAA,WAAA,CAAA;AAG3C,QAAA,OAAO,2BAA2B,KAAK,CAAA,OAAA,CAAA;AAAA;AAGzC,MAAI,IAAA,OAAA;AACF,QAAO,OAAA,IAAA,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,SAAA,GAAA,MAAA,CAAQ,mBAAR,KAAA,IAAA,GAAA,SAAA,GAAA,EAAA,CAAA,IAAA,CAAA,MAAA,CAAA,KAAA,IAAA,GAAA,EAAA,GAAmC,mBAAmB,CAAA;AAAA,SAAA,CAAA;AAG7D,MAAA,OAAO,IAAmB,CAAA,YAAA,EAAA,IAAA,CAAK,gBAAkB,EAAA,QAAA,IAAY,UAAU,CAAC;AAAA,SACnE,EAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,MAAA,IAAA,IAAA,GAAA,SAAA,GAAA,MAAA,CAAQ,qBAAR,KAAA,IAAA,GAAA,SAAA,GAAA,EAAA,CAAA,IAAA,CAAA,MAAA,CAAA,KAAA,IAAA,GAAA,EAAA,GAAqC,qBAAqB,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,CAAI,sBAAsB,CAAA;AAC/B;;;;"}
|
|
@@ -6,12 +6,12 @@ const defineFeature = (editor, config) => {
|
|
|
6
6
|
var _a, _b;
|
|
7
7
|
return {
|
|
8
8
|
class: "crepe-drop-cursor",
|
|
9
|
-
width: (_a = config == null ?
|
|
10
|
-
color: (_b = config == null ?
|
|
9
|
+
width: (_a = config == null ? undefined : config.width) != null ? _a : 4,
|
|
10
|
+
color: (_b = config == null ? undefined : config.color) != null ? _b : false
|
|
11
11
|
};
|
|
12
12
|
});
|
|
13
13
|
}).use(cursor);
|
|
14
14
|
};
|
|
15
15
|
|
|
16
16
|
export { defineFeature };
|
|
17
|
-
//# sourceMappingURL=index-
|
|
17
|
+
//# sourceMappingURL=index-C7_YCA3P.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-
|
|
1
|
+
{"version":3,"file":"index-C7_YCA3P.js","sources":["../../src/feature/cursor/index.ts"],"sourcesContent":["import { cursor, dropCursorConfig } from '@milkdown/kit/plugin/cursor'\n\nimport type { DefineFeature } from '../shared'\n\ninterface CursorConfig {\n color: string | false\n width: number\n}\nexport type CursorFeatureConfig = Partial<CursorConfig>\n\nexport const defineFeature: DefineFeature<CursorFeatureConfig> = (\n editor,\n config\n) => {\n editor\n .config((ctx) => {\n ctx.update(dropCursorConfig.key, () => ({\n class: 'crepe-drop-cursor',\n width: config?.width ?? 4,\n color: config?.color ?? false,\n }))\n })\n .use(cursor)\n}\n"],"names":[],"mappings":";;AAUa,MAAA,aAAA,GAAoD,CAC/D,MAAA,EACA,MACG,KAAA;AACH,EACG,MAAA,CAAA,MAAA,CAAO,CAAC,GAAQ,KAAA;AACf,IAAI,GAAA,CAAA,MAAA,CAAO,gBAAiB,CAAA,GAAA,EAAK,MAAG;AAhB1C,MAAA,IAAA,EAAA,EAAA,EAAA;AAgB8C,MAAA,OAAA;AAAA,QACtC,KAAO,EAAA,mBAAA;AAAA,QACP,KAAA,EAAA,CAAO,EAAQ,GAAA,MAAA,IAAA,IAAA,GAAA,SAAA,GAAA,MAAA,CAAA,KAAA,KAAR,IAAiB,GAAA,EAAA,GAAA,CAAA;AAAA,QACxB,KAAA,EAAA,CAAO,EAAQ,GAAA,MAAA,IAAA,IAAA,GAAA,SAAA,GAAA,MAAA,CAAA,KAAA,KAAR,IAAiB,GAAA,EAAA,GAAA;AAAA,OAC1B;AAAA,KAAE,CAAA;AAAA,GACH,CACA,CAAA,GAAA,CAAI,MAAM,CAAA;AACf;;;;"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { tableBlockConfig, tableBlock } from '@milkdown/kit/component/table-block';
|
|
2
|
+
import { G as dragHandleIcon, H as alignRightIcon, I as alignCenterIcon, J as alignLeftIcon, r as removeIcon, A as plusIcon } from './todo-list-B78GeGtK.js';
|
|
3
|
+
import 'atomico';
|
|
4
|
+
|
|
5
|
+
const defineFeature = (editor, config) => {
|
|
6
|
+
editor.config((ctx) => {
|
|
7
|
+
ctx.update(tableBlockConfig.key, (defaultConfig) => ({
|
|
8
|
+
...defaultConfig,
|
|
9
|
+
renderButton: (renderType) => {
|
|
10
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r;
|
|
11
|
+
switch (renderType) {
|
|
12
|
+
case "add_row":
|
|
13
|
+
return (_b = (_a = config == null ? undefined : config.addRowIcon) == null ? undefined : _a.call(config)) != null ? _b : plusIcon;
|
|
14
|
+
case "add_col":
|
|
15
|
+
return (_d = (_c = config == null ? undefined : config.addColIcon) == null ? undefined : _c.call(config)) != null ? _d : plusIcon;
|
|
16
|
+
case "delete_row":
|
|
17
|
+
return (_f = (_e = config == null ? undefined : config.deleteRowIcon) == null ? undefined : _e.call(config)) != null ? _f : removeIcon;
|
|
18
|
+
case "delete_col":
|
|
19
|
+
return (_h = (_g = config == null ? undefined : config.deleteColIcon) == null ? undefined : _g.call(config)) != null ? _h : removeIcon;
|
|
20
|
+
case "align_col_left":
|
|
21
|
+
return (_j = (_i = config == null ? undefined : config.alignLeftIcon) == null ? undefined : _i.call(config)) != null ? _j : alignLeftIcon;
|
|
22
|
+
case "align_col_center":
|
|
23
|
+
return (_l = (_k = config == null ? undefined : config.alignCenterIcon) == null ? undefined : _k.call(config)) != null ? _l : alignCenterIcon;
|
|
24
|
+
case "align_col_right":
|
|
25
|
+
return (_n = (_m = config == null ? undefined : config.alignRightIcon) == null ? undefined : _m.call(config)) != null ? _n : alignRightIcon;
|
|
26
|
+
case "col_drag_handle":
|
|
27
|
+
return (_p = (_o = config == null ? undefined : config.colDragHandleIcon) == null ? undefined : _o.call(config)) != null ? _p : dragHandleIcon;
|
|
28
|
+
case "row_drag_handle":
|
|
29
|
+
return (_r = (_q = config == null ? undefined : config.rowDragHandleIcon) == null ? undefined : _q.call(config)) != null ? _r : dragHandleIcon;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}));
|
|
33
|
+
}).use(tableBlock);
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
export { defineFeature };
|
|
37
|
+
//# sourceMappingURL=index-C8tiRHTF.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-
|
|
1
|
+
{"version":3,"file":"index-C8tiRHTF.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":[],"mappings":"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"}
|
|
@@ -4,8 +4,8 @@ function isInCodeBlock(selection) {
|
|
|
4
4
|
}
|
|
5
5
|
function isInList(selection) {
|
|
6
6
|
var _a;
|
|
7
|
-
const type = (_a = selection.$from.node(selection.$from.depth - 1)) == null ?
|
|
8
|
-
return (type == null ?
|
|
7
|
+
const type = (_a = selection.$from.node(selection.$from.depth - 1)) == null ? undefined : _a.type;
|
|
8
|
+
return (type == null ? undefined : type.name) === "list_item";
|
|
9
9
|
}
|
|
10
10
|
function defIfNotExists(tagName, element) {
|
|
11
11
|
if (customElements.get(tagName) == null)
|
|
@@ -13,4 +13,4 @@ function defIfNotExists(tagName, element) {
|
|
|
13
13
|
}
|
|
14
14
|
|
|
15
15
|
export { isInList as a, defIfNotExists as d, isInCodeBlock as i };
|
|
16
|
-
//# sourceMappingURL=index-
|
|
16
|
+
//# sourceMappingURL=index-CD8fvrRC.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-
|
|
1
|
+
{"version":3,"file":"index-CD8fvrRC.js","sources":["../../src/utils/index.ts"],"sourcesContent":["import type { Selection } from '@milkdown/kit/prose/state'\n\nexport function isInCodeBlock(selection: Selection) {\n const type = selection.$from.parent.type\n return type.name === 'code_block'\n}\n\nexport function isInList(selection: Selection) {\n const type = selection.$from.node(selection.$from.depth - 1)?.type\n return type?.name === 'list_item'\n}\n\nexport function defIfNotExists(\n tagName: string,\n element: CustomElementConstructor\n) {\n if (customElements.get(tagName) == null)\n customElements.define(tagName, element)\n}\n"],"names":[],"mappings":"AAEO,SAAS,cAAc,SAAsB,EAAA;AAClD,EAAM,MAAA,IAAA,GAAO,SAAU,CAAA,KAAA,CAAM,MAAO,CAAA,IAAA;AACpC,EAAA,OAAO,KAAK,IAAS,KAAA,YAAA;AACvB;AAEO,SAAS,SAAS,SAAsB,EAAA;AAP/C,EAAA,IAAA,EAAA;AAQE,EAAM,MAAA,IAAA,GAAA,CAAO,eAAU,KAAM,CAAA,IAAA,CAAK,UAAU,KAAM,CAAA,KAAA,GAAQ,CAAC,CAAA,KAA9C,IAAiD,GAAA,SAAA,GAAA,EAAA,CAAA,IAAA;AAC9D,EAAA,OAAA,CAAO,gCAAM,IAAS,MAAA,WAAA;AACxB;AAEgB,SAAA,cAAA,CACd,SACA,OACA,EAAA;AACA,EAAI,IAAA,cAAA,CAAe,GAAI,CAAA,OAAO,CAAK,IAAA,IAAA;AACjC,IAAe,cAAA,CAAA,MAAA,CAAO,SAAS,OAAO,CAAA;AAC1C;;;;"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { configureLinkTooltip, linkTooltipConfig, linkTooltipPlugin } from '@milkdown/kit/component/link-tooltip';
|
|
2
|
+
import { g as copyIcon, e as editIcon, r as removeIcon, h as confirmIcon } from './todo-list-B78GeGtK.js';
|
|
3
|
+
import 'atomico';
|
|
4
|
+
|
|
5
|
+
const defineFeature = (editor, config) => {
|
|
6
|
+
editor.config(configureLinkTooltip).config((ctx) => {
|
|
7
|
+
ctx.update(linkTooltipConfig.key, (prev) => {
|
|
8
|
+
var _a, _b, _c, _d, _e, _f;
|
|
9
|
+
return {
|
|
10
|
+
...prev,
|
|
11
|
+
linkIcon: (_a = config == null ? undefined : config.linkIcon) != null ? _a : () => copyIcon,
|
|
12
|
+
editButton: (_b = config == null ? undefined : config.editButton) != null ? _b : () => editIcon,
|
|
13
|
+
removeButton: (_c = config == null ? undefined : config.removeButton) != null ? _c : () => removeIcon,
|
|
14
|
+
confirmButton: (_d = config == null ? undefined : config.confirmButton) != null ? _d : () => confirmIcon,
|
|
15
|
+
inputPlaceholder: (_e = config == null ? undefined : config.inputPlaceholder) != null ? _e : "Paste link...",
|
|
16
|
+
onCopyLink: (_f = config == null ? undefined : config.onCopyLink) != null ? _f : () => {
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
});
|
|
20
|
+
}).use(linkTooltipPlugin);
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
export { defineFeature };
|
|
24
|
+
//# sourceMappingURL=index-CEup1V8i.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-
|
|
1
|
+
{"version":3,"file":"index-CEup1V8i.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":[],"mappings":";;;;AAmBa,MAAA,aAAA,GAAyD,CACpE,MAAA,EACA,MACG,KAAA;AACH,EAAA,MAAA,CACG,MAAO,CAAA,oBAAoB,CAC3B,CAAA,MAAA,CAAO,CAAC,GAAQ,KAAA;AACf,IAAA,GAAA,CAAI,MAAO,CAAA,iBAAA,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,SAAA,GAAA,MAAA,CAAQ,QAAR,KAAA,IAAA,GAAA,EAAA,GAAqB,MAAM,QAAA;AAAA,QACrC,UAAY,EAAA,CAAA,EAAA,GAAA,MAAA,IAAA,IAAA,GAAA,SAAA,GAAA,MAAA,CAAQ,UAAR,KAAA,IAAA,GAAA,EAAA,GAAuB,MAAM,QAAA;AAAA,QACzC,YAAc,EAAA,CAAA,EAAA,GAAA,MAAA,IAAA,IAAA,GAAA,SAAA,GAAA,MAAA,CAAQ,YAAR,KAAA,IAAA,GAAA,EAAA,GAAyB,MAAM,UAAA;AAAA,QAC7C,aAAe,EAAA,CAAA,EAAA,GAAA,MAAA,IAAA,IAAA,GAAA,SAAA,GAAA,MAAA,CAAQ,aAAR,KAAA,IAAA,GAAA,EAAA,GAA0B,MAAM,WAAA;AAAA,QAC/C,gBAAA,EAAA,CAAkB,EAAQ,GAAA,MAAA,IAAA,IAAA,GAAA,SAAA,GAAA,MAAA,CAAA,gBAAA,KAAR,IAA4B,GAAA,EAAA,GAAA,eAAA;AAAA,QAC9C,UAAY,EAAA,CAAA,EAAA,GAAA,MAAA,IAAA,IAAA,GAAA,SAAA,GAAA,MAAA,CAAQ,UAAR,KAAA,IAAA,GAAA,EAAA,GAAuB,MAAM;AAAA;AAAC,OAC5C;AAAA,KAAE,CAAA;AAAA,GACH,CACA,CAAA,GAAA,CAAI,iBAAiB,CAAA;AAC1B;;;;"}
|