mossmd 0.8.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/CHANGELOG.md +87 -0
- package/LICENSE +21 -0
- package/README.md +336 -0
- package/dist/collab/index.d.ts +14 -0
- package/dist/collab/index.d.ts.map +1 -0
- package/dist/collab/index.js +6 -0
- package/dist/collab/index.js.map +1 -0
- package/dist/core/code-languages.d.ts +3 -0
- package/dist/core/code-languages.d.ts.map +1 -0
- package/dist/core/code-languages.js +130 -0
- package/dist/core/code-languages.js.map +1 -0
- package/dist/core/decoration-utils.d.ts +4 -0
- package/dist/core/decoration-utils.d.ts.map +1 -0
- package/dist/core/decoration-utils.js +25 -0
- package/dist/core/decoration-utils.js.map +1 -0
- package/dist/core/edit-helpers.d.ts +13 -0
- package/dist/core/edit-helpers.d.ts.map +1 -0
- package/dist/core/edit-helpers.js +318 -0
- package/dist/core/edit-helpers.js.map +1 -0
- package/dist/core/icons.d.ts +16 -0
- package/dist/core/icons.d.ts.map +1 -0
- package/dist/core/icons.js +86 -0
- package/dist/core/icons.js.map +1 -0
- package/dist/core/inline-preview.d.ts +32 -0
- package/dist/core/inline-preview.d.ts.map +1 -0
- package/dist/core/inline-preview.js +925 -0
- package/dist/core/inline-preview.js.map +1 -0
- package/dist/core/list-editing.d.ts +10 -0
- package/dist/core/list-editing.d.ts.map +1 -0
- package/dist/core/list-editing.js +244 -0
- package/dist/core/list-editing.js.map +1 -0
- package/dist/core/list-model.d.ts +40 -0
- package/dist/core/list-model.d.ts.map +1 -0
- package/dist/core/list-model.js +114 -0
- package/dist/core/list-model.js.map +1 -0
- package/dist/core/list-navigation.d.ts +3 -0
- package/dist/core/list-navigation.d.ts.map +1 -0
- package/dist/core/list-navigation.js +234 -0
- package/dist/core/list-navigation.js.map +1 -0
- package/dist/core/markdown-context.d.ts +3 -0
- package/dist/core/markdown-context.d.ts.map +1 -0
- package/dist/core/markdown-context.js +10 -0
- package/dist/core/markdown-context.js.map +1 -0
- package/dist/core/preview-activity.d.ts +18 -0
- package/dist/core/preview-activity.d.ts.map +1 -0
- package/dist/core/preview-activity.js +199 -0
- package/dist/core/preview-activity.js.map +1 -0
- package/dist/core/preview-widgets.d.ts +65 -0
- package/dist/core/preview-widgets.d.ts.map +1 -0
- package/dist/core/preview-widgets.js +359 -0
- package/dist/core/preview-widgets.js.map +1 -0
- package/dist/core/read-only.d.ts +26 -0
- package/dist/core/read-only.d.ts.map +1 -0
- package/dist/core/read-only.js +49 -0
- package/dist/core/read-only.js.map +1 -0
- package/dist/core/tree-progress.d.ts +29 -0
- package/dist/core/tree-progress.d.ts.map +1 -0
- package/dist/core/tree-progress.js +143 -0
- package/dist/core/tree-progress.js.map +1 -0
- package/dist/editor.d.ts +219 -0
- package/dist/editor.d.ts.map +1 -0
- package/dist/editor.js +551 -0
- package/dist/editor.js.map +1 -0
- package/dist/features/callout/index.d.ts +9 -0
- package/dist/features/callout/index.d.ts.map +1 -0
- package/dist/features/callout/index.js +223 -0
- package/dist/features/callout/index.js.map +1 -0
- package/dist/features/file-blocks/index.d.ts +12 -0
- package/dist/features/file-blocks/index.d.ts.map +1 -0
- package/dist/features/file-blocks/index.js +397 -0
- package/dist/features/file-blocks/index.js.map +1 -0
- package/dist/features/image/index.d.ts +28 -0
- package/dist/features/image/index.d.ts.map +1 -0
- package/dist/features/image/index.js +699 -0
- package/dist/features/image/index.js.map +1 -0
- package/dist/features/index.d.ts +17 -0
- package/dist/features/index.d.ts.map +1 -0
- package/dist/features/index.js +9 -0
- package/dist/features/index.js.map +1 -0
- package/dist/features/search/index.d.ts +4 -0
- package/dist/features/search/index.d.ts.map +1 -0
- package/dist/features/search/index.js +131 -0
- package/dist/features/search/index.js.map +1 -0
- package/dist/features/slash-commands/index.d.ts +52 -0
- package/dist/features/slash-commands/index.d.ts.map +1 -0
- package/dist/features/slash-commands/index.js +422 -0
- package/dist/features/slash-commands/index.js.map +1 -0
- package/dist/features/table/index.d.ts +44 -0
- package/dist/features/table/index.d.ts.map +1 -0
- package/dist/features/table/index.js +1262 -0
- package/dist/features/table/index.js.map +1 -0
- package/dist/features/upload/index.d.ts +80 -0
- package/dist/features/upload/index.d.ts.map +1 -0
- package/dist/features/upload/index.js +790 -0
- package/dist/features/upload/index.js.map +1 -0
- package/dist/features/wiki-links/index.d.ts +27 -0
- package/dist/features/wiki-links/index.d.ts.map +1 -0
- package/dist/features/wiki-links/index.js +577 -0
- package/dist/features/wiki-links/index.js.map +1 -0
- package/dist/index.d.ts +17 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +12 -0
- package/dist/index.js.map +1 -0
- package/dist/styles/content.css +247 -0
- package/dist/styles/inline-preview.css +2116 -0
- package/dist/styles/tokens.css +234 -0
- package/dist/syntax/highlight.d.ts +10 -0
- package/dist/syntax/highlight.d.ts.map +1 -0
- package/dist/syntax/highlight.js +75 -0
- package/dist/syntax/highlight.js.map +1 -0
- package/dist/syntax/index.d.ts +16 -0
- package/dist/syntax/index.d.ts.map +1 -0
- package/dist/syntax/index.js +29 -0
- package/dist/syntax/index.js.map +1 -0
- package/dist/theme/index.d.ts +6 -0
- package/dist/theme/index.d.ts.map +1 -0
- package/dist/theme/index.js +204 -0
- package/dist/theme/index.js.map +1 -0
- package/package.json +237 -0
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
import { ensureSyntaxTree, syntaxTree } from '@codemirror/language';
|
|
2
|
+
import { EditorSelection, Prec, RangeSet, } from '@codemirror/state';
|
|
3
|
+
import { Decoration, Direction, EditorView, ViewPlugin, keymap, } from '@codemirror/view';
|
|
4
|
+
import { treeGrowthEffect } from './tree-progress';
|
|
5
|
+
import { listContentStart } from './list-model';
|
|
6
|
+
const LIST_STRUCTURE_DECORATION = Decoration.replace({});
|
|
7
|
+
function nearestListItem(node) {
|
|
8
|
+
for (let current = node; current; current = current.parent) {
|
|
9
|
+
if (current.name === 'ListItem')
|
|
10
|
+
return current;
|
|
11
|
+
}
|
|
12
|
+
return null;
|
|
13
|
+
}
|
|
14
|
+
function sameListItem(a, b) {
|
|
15
|
+
return a?.name === 'ListItem' && a.from === b.from && a.to === b.to;
|
|
16
|
+
}
|
|
17
|
+
function buildListStructureAtoms(view) {
|
|
18
|
+
const { state } = view;
|
|
19
|
+
const { doc } = state;
|
|
20
|
+
const tree = ensureSyntaxTree(state, state.doc.length, 200) ?? syntaxTree(state);
|
|
21
|
+
const ranges = [];
|
|
22
|
+
tree.iterate({
|
|
23
|
+
enter: (node) => {
|
|
24
|
+
if (node.name !== 'ListMark' || node.from >= node.to)
|
|
25
|
+
return;
|
|
26
|
+
const listItem = nearestListItem(node.node);
|
|
27
|
+
if (!listItem)
|
|
28
|
+
return;
|
|
29
|
+
const firstLine = doc.lineAt(listItem.from);
|
|
30
|
+
const lastLine = doc.lineAt(listItem.to);
|
|
31
|
+
for (let number = firstLine.number; number <= lastLine.number; number++) {
|
|
32
|
+
const line = doc.line(number);
|
|
33
|
+
const contentOffset = line.text.search(/\S/);
|
|
34
|
+
if (contentOffset <= 0)
|
|
35
|
+
continue;
|
|
36
|
+
const contentFrom = line.from + contentOffset;
|
|
37
|
+
const owner = nearestListItem(tree.resolve(contentFrom, 1));
|
|
38
|
+
if (!sameListItem(owner, listItem))
|
|
39
|
+
continue;
|
|
40
|
+
ranges.push(LIST_STRUCTURE_DECORATION.range(line.from, contentFrom));
|
|
41
|
+
}
|
|
42
|
+
},
|
|
43
|
+
});
|
|
44
|
+
return RangeSet.of(ranges, true);
|
|
45
|
+
}
|
|
46
|
+
const listStructurePlugin = ViewPlugin.fromClass(class {
|
|
47
|
+
constructor(view) {
|
|
48
|
+
Object.defineProperty(this, "ranges", {
|
|
49
|
+
enumerable: true,
|
|
50
|
+
configurable: true,
|
|
51
|
+
writable: true,
|
|
52
|
+
value: void 0
|
|
53
|
+
});
|
|
54
|
+
this.ranges = buildListStructureAtoms(view);
|
|
55
|
+
}
|
|
56
|
+
update(update) {
|
|
57
|
+
let treeGrew = false;
|
|
58
|
+
for (const tr of update.transactions) {
|
|
59
|
+
if (tr.effects.some((effect) => effect.is(treeGrowthEffect))) {
|
|
60
|
+
treeGrew = true;
|
|
61
|
+
break;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
if (update.docChanged || treeGrew) {
|
|
65
|
+
this.ranges = buildListStructureAtoms(update.view);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
function skipListStructure(view, position, forward) {
|
|
70
|
+
const plugin = view.plugin(listStructurePlugin);
|
|
71
|
+
if (!plugin)
|
|
72
|
+
return position;
|
|
73
|
+
let result = position;
|
|
74
|
+
plugin.ranges.between(Math.max(0, position - 1), Math.min(view.state.doc.length, position + 1), (from, to) => {
|
|
75
|
+
// A replace decoration collapses the entire structural indent to one
|
|
76
|
+
// visual point. Treat entering it from the preceding line as entering
|
|
77
|
+
// the atom, otherwise rightward movement still visits invisible indent
|
|
78
|
+
// positions one keypress at a time.
|
|
79
|
+
if ((forward && result >= from && result < to) ||
|
|
80
|
+
(!forward && result > from && result < to)) {
|
|
81
|
+
// Keep the marker's left boundary editable. When moving left from
|
|
82
|
+
// that boundary, cross the hidden indent and its line break so the
|
|
83
|
+
// caret lands on the previous line rather than over the marker.
|
|
84
|
+
result = forward ? to : Math.max(0, from - 1);
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
return result;
|
|
88
|
+
}
|
|
89
|
+
function moveListLineBoundary(view, toStart, extend) {
|
|
90
|
+
const { state } = view;
|
|
91
|
+
let handled = false;
|
|
92
|
+
const ranges = state.selection.ranges.map((range) => {
|
|
93
|
+
if (!extend && !range.empty) {
|
|
94
|
+
return EditorSelection.cursor(toStart ? range.from : range.to);
|
|
95
|
+
}
|
|
96
|
+
const line = state.doc.lineAt(range.head);
|
|
97
|
+
const content = listContentStart(line);
|
|
98
|
+
if (!content)
|
|
99
|
+
return range;
|
|
100
|
+
handled = true;
|
|
101
|
+
// Match CodeMirror's normal indentation behavior: Home first reaches
|
|
102
|
+
// editable content, then a second press reaches the list marker.
|
|
103
|
+
const target = toStart
|
|
104
|
+
? range.head === content.contentFrom
|
|
105
|
+
? content.markerFrom
|
|
106
|
+
: content.contentFrom
|
|
107
|
+
: line.to;
|
|
108
|
+
return extend
|
|
109
|
+
? EditorSelection.range(range.anchor, target)
|
|
110
|
+
: EditorSelection.cursor(target, toStart ? 1 : -1);
|
|
111
|
+
});
|
|
112
|
+
if (!handled)
|
|
113
|
+
return false;
|
|
114
|
+
const selection = EditorSelection.create(ranges, state.selection.mainIndex);
|
|
115
|
+
if (!selection.eq(state.selection)) {
|
|
116
|
+
view.dispatch({ selection, userEvent: 'select' });
|
|
117
|
+
}
|
|
118
|
+
return true;
|
|
119
|
+
}
|
|
120
|
+
function moveListHorizontally(view, right, extend) {
|
|
121
|
+
const { state } = view;
|
|
122
|
+
let needsCustomMovement = false;
|
|
123
|
+
const nextRanges = state.selection.ranges.map((range) => {
|
|
124
|
+
const forward = right === (view.textDirectionAt(range.head) === Direction.LTR);
|
|
125
|
+
if (!extend && !range.empty) {
|
|
126
|
+
return EditorSelection.cursor(forward ? range.to : range.from);
|
|
127
|
+
}
|
|
128
|
+
const moved = view.moveByChar(EditorSelection.cursor(range.head, range.assoc), forward);
|
|
129
|
+
const head = skipListStructure(view, moved.head, forward);
|
|
130
|
+
if (head !== moved.head)
|
|
131
|
+
needsCustomMovement = true;
|
|
132
|
+
const movedRange = EditorSelection.cursor(head, head < range.head ? 1 : -1);
|
|
133
|
+
return extend
|
|
134
|
+
? EditorSelection.range(range.anchor, movedRange.head)
|
|
135
|
+
: movedRange;
|
|
136
|
+
});
|
|
137
|
+
if (!needsCustomMovement)
|
|
138
|
+
return false;
|
|
139
|
+
const next = EditorSelection.create(nextRanges, state.selection.mainIndex);
|
|
140
|
+
if (next.eq(state.selection))
|
|
141
|
+
return false;
|
|
142
|
+
view.dispatch({ selection: next, userEvent: 'select' });
|
|
143
|
+
return true;
|
|
144
|
+
}
|
|
145
|
+
function moveListVertically(view, forward) {
|
|
146
|
+
const selection = view.state.selection.main;
|
|
147
|
+
if (!selection.empty)
|
|
148
|
+
return false;
|
|
149
|
+
const line = view.state.doc.lineAt(selection.head);
|
|
150
|
+
const source = listContentStart(line);
|
|
151
|
+
if (!source || selection.head < source.contentFrom)
|
|
152
|
+
return false;
|
|
153
|
+
const moved = view.moveVertically(selection, forward);
|
|
154
|
+
const movedLine = view.state.doc.lineAt(moved.head);
|
|
155
|
+
if (movedLine.number === line.number)
|
|
156
|
+
return false;
|
|
157
|
+
const adjacentLineNumber = line.number + (forward ? 1 : -1);
|
|
158
|
+
if (adjacentLineNumber < 1 || adjacentLineNumber > view.state.doc.lines) {
|
|
159
|
+
return false;
|
|
160
|
+
}
|
|
161
|
+
const adjacentLine = view.state.doc.line(adjacentLineNumber);
|
|
162
|
+
const target = listContentStart(adjacentLine);
|
|
163
|
+
if (!target)
|
|
164
|
+
return false;
|
|
165
|
+
// Source indentation and marker widths are hidden/relaid out by live
|
|
166
|
+
// preview, so document columns no longer represent visual content columns.
|
|
167
|
+
// Preserve the offset within the item body when crossing to an adjacent
|
|
168
|
+
// list item instead of letting position mapping settle on its number.
|
|
169
|
+
const offset = selection.head - source.contentFrom;
|
|
170
|
+
view.dispatch({
|
|
171
|
+
selection: EditorSelection.cursor(Math.min(adjacentLine.to, target.contentFrom + offset)),
|
|
172
|
+
userEvent: 'select',
|
|
173
|
+
});
|
|
174
|
+
return true;
|
|
175
|
+
}
|
|
176
|
+
function listMarkerMouseDown(event, view) {
|
|
177
|
+
if (event.button !== 0 ||
|
|
178
|
+
event.detail !== 1 ||
|
|
179
|
+
event.metaKey ||
|
|
180
|
+
event.ctrlKey ||
|
|
181
|
+
event.shiftKey ||
|
|
182
|
+
event.altKey) {
|
|
183
|
+
return false;
|
|
184
|
+
}
|
|
185
|
+
const target = event.target;
|
|
186
|
+
if (!(target instanceof Element))
|
|
187
|
+
return false;
|
|
188
|
+
const marker = target.closest('.cm-moss-list-marker');
|
|
189
|
+
if (!marker || !view.contentDOM.contains(marker))
|
|
190
|
+
return false;
|
|
191
|
+
const markerFrom = view.posAtDOM(marker, 0);
|
|
192
|
+
if (markerFrom < 0)
|
|
193
|
+
return false;
|
|
194
|
+
const markerLength = marker.textContent?.length ?? 0;
|
|
195
|
+
if (markerLength === 0)
|
|
196
|
+
return false;
|
|
197
|
+
view.focus();
|
|
198
|
+
view.dispatch({
|
|
199
|
+
selection: EditorSelection.cursor(markerFrom + markerLength),
|
|
200
|
+
userEvent: 'select.pointer',
|
|
201
|
+
});
|
|
202
|
+
return true;
|
|
203
|
+
}
|
|
204
|
+
export function listNavigationExtension() {
|
|
205
|
+
return [
|
|
206
|
+
listStructurePlugin,
|
|
207
|
+
EditorView.domEventHandlers({ mousedown: listMarkerMouseDown }),
|
|
208
|
+
Prec.highest(keymap.of([
|
|
209
|
+
{ key: 'ArrowUp', run: (view) => moveListVertically(view, false) },
|
|
210
|
+
{ key: 'ArrowDown', run: (view) => moveListVertically(view, true) },
|
|
211
|
+
{
|
|
212
|
+
key: 'Home',
|
|
213
|
+
run: (view) => moveListLineBoundary(view, true, false),
|
|
214
|
+
shift: (view) => moveListLineBoundary(view, true, true),
|
|
215
|
+
},
|
|
216
|
+
{
|
|
217
|
+
key: 'End',
|
|
218
|
+
run: (view) => moveListLineBoundary(view, false, false),
|
|
219
|
+
shift: (view) => moveListLineBoundary(view, false, true),
|
|
220
|
+
},
|
|
221
|
+
{
|
|
222
|
+
key: 'ArrowLeft',
|
|
223
|
+
run: (view) => moveListHorizontally(view, false, false),
|
|
224
|
+
shift: (view) => moveListHorizontally(view, false, true),
|
|
225
|
+
},
|
|
226
|
+
{
|
|
227
|
+
key: 'ArrowRight',
|
|
228
|
+
run: (view) => moveListHorizontally(view, true, false),
|
|
229
|
+
shift: (view) => moveListHorizontally(view, true, true),
|
|
230
|
+
},
|
|
231
|
+
])),
|
|
232
|
+
];
|
|
233
|
+
}
|
|
234
|
+
//# sourceMappingURL=list-navigation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-navigation.js","sourceRoot":"","sources":["../../src/core/list-navigation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,EACL,eAAe,EACf,IAAI,EACJ,QAAQ,GAGT,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,UAAU,EACV,SAAS,EACT,UAAU,EACV,UAAU,EACV,MAAM,GAEP,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEhD,MAAM,yBAAyB,GAAG,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AAEzD,SAAS,eAAe,CAAC,IAAuB;IAC9C,KAAK,IAAI,OAAO,GAAG,IAAI,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;QAC3D,IAAI,OAAO,CAAC,IAAI,KAAK,UAAU;YAAE,OAAO,OAAO,CAAC;IAClD,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,YAAY,CAAC,CAAoB,EAAE,CAAa;IACvD,OAAO,CAAC,EAAE,IAAI,KAAK,UAAU,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC;AACtE,CAAC;AAED,SAAS,uBAAuB,CAAC,IAAgB;IAC/C,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;IACvB,MAAM,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC;IACtB,MAAM,IAAI,GACR,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC;IACtE,MAAM,MAAM,GAA8C,EAAE,CAAC;IAE7D,IAAI,CAAC,OAAO,CAAC;QACX,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE;YACd,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE;gBAAE,OAAO;YAE7D,MAAM,QAAQ,GAAG,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC5C,IAAI,CAAC,QAAQ;gBAAE,OAAO;YAEtB,MAAM,SAAS,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC5C,MAAM,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YACzC,KACE,IAAI,MAAM,GAAG,SAAS,CAAC,MAAM,EAC7B,MAAM,IAAI,QAAQ,CAAC,MAAM,EACzB,MAAM,EAAE,EACR,CAAC;gBACD,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC9B,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBAC7C,IAAI,aAAa,IAAI,CAAC;oBAAE,SAAS;gBAEjC,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;gBAC9C,MAAM,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC5D,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,QAAQ,CAAC;oBAAE,SAAS;gBAE7C,MAAM,CAAC,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC;YACvE,CAAC;QACH,CAAC;KACF,CAAC,CAAC;IAEH,OAAO,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,mBAAmB,GAAG,UAAU,CAAC,SAAS,CAC9C;IAGE,YAAY,IAAgB;QAF5B;;;;;WAAmD;QAGjD,IAAI,CAAC,MAAM,GAAG,uBAAuB,CAAC,IAAI,CAAC,CAAC;IAC9C,CAAC;IAED,MAAM,CAAC,MAAkB;QACvB,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,KAAK,MAAM,EAAE,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;YACrC,IAAI,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC;gBAC7D,QAAQ,GAAG,IAAI,CAAC;gBAChB,MAAM;YACR,CAAC;QACH,CAAC;QACD,IAAI,MAAM,CAAC,UAAU,IAAI,QAAQ,EAAE,CAAC;YAClC,IAAI,CAAC,MAAM,GAAG,uBAAuB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACrD,CAAC;IACH,CAAC;CACF,CACF,CAAC;AAEF,SAAS,iBAAiB,CACxB,IAAgB,EAChB,QAAgB,EAChB,OAAgB;IAEhB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;IAChD,IAAI,CAAC,MAAM;QAAE,OAAO,QAAQ,CAAC;IAE7B,IAAI,MAAM,GAAG,QAAQ,CAAC;IACtB,MAAM,CAAC,MAAM,CAAC,OAAO,CACnB,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,GAAG,CAAC,CAAC,EACzB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,GAAG,CAAC,CAAC,EAC7C,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE;QACX,qEAAqE;QACrE,sEAAsE;QACtE,uEAAuE;QACvE,oCAAoC;QACpC,IACE,CAAC,OAAO,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,GAAG,EAAE,CAAC;YAC1C,CAAC,CAAC,OAAO,IAAI,MAAM,GAAG,IAAI,IAAI,MAAM,GAAG,EAAE,CAAC,EAC1C,CAAC;YACD,kEAAkE;YAClE,mEAAmE;YACnE,gEAAgE;YAChE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC;QAChD,CAAC;IACH,CAAC,CACF,CAAC;IACF,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,oBAAoB,CAC3B,IAAgB,EAChB,OAAgB,EAChB,MAAe;IAEf,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;IACvB,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QAClD,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YAC5B,OAAO,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACjE,CAAC;QAED,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC1C,MAAM,OAAO,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,OAAO;YAAE,OAAO,KAAK,CAAC;QAC3B,OAAO,GAAG,IAAI,CAAC;QAEf,qEAAqE;QACrE,iEAAiE;QACjE,MAAM,MAAM,GAAG,OAAO;YACpB,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,WAAW;gBAClC,CAAC,CAAC,OAAO,CAAC,UAAU;gBACpB,CAAC,CAAC,OAAO,CAAC,WAAW;YACvB,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;QACZ,OAAO,MAAM;YACX,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC;YAC7C,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,OAAO;QAAE,OAAO,KAAK,CAAC;IAC3B,MAAM,SAAS,GAAG,eAAe,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IAC5E,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;QACnC,IAAI,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC;IACpD,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,oBAAoB,CAC3B,IAAgB,EAChB,KAAc,EACd,MAAe;IAEf,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;IACvB,IAAI,mBAAmB,GAAG,KAAK,CAAC;IAChC,MAAM,UAAU,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACtD,MAAM,OAAO,GACX,KAAK,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,SAAS,CAAC,GAAG,CAAC,CAAC;QAEjE,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YAC5B,OAAO,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACjE,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAC3B,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,EAC/C,OAAO,CACR,CAAC;QACF,MAAM,IAAI,GAAG,iBAAiB,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC1D,IAAI,IAAI,KAAK,KAAK,CAAC,IAAI;YAAE,mBAAmB,GAAG,IAAI,CAAC;QACpD,MAAM,UAAU,GAAG,eAAe,CAAC,MAAM,CACvC,IAAI,EACJ,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAC3B,CAAC;QACF,OAAO,MAAM;YACX,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,UAAU,CAAC,IAAI,CAAC;YACtD,CAAC,CAAC,UAAU,CAAC;IACjB,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,mBAAmB;QAAE,OAAO,KAAK,CAAC;IAEvC,MAAM,IAAI,GAAG,eAAe,CAAC,MAAM,CAAC,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IAC3E,IAAI,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC;QAAE,OAAO,KAAK,CAAC;IAE3C,IAAI,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC;IACxD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAgB,EAAE,OAAgB;IAC5D,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC;IAC5C,IAAI,CAAC,SAAS,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC;IAEnC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACnD,MAAM,MAAM,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACtC,IAAI,CAAC,MAAM,IAAI,SAAS,CAAC,IAAI,GAAG,MAAM,CAAC,WAAW;QAAE,OAAO,KAAK,CAAC;IAEjE,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IACtD,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACpD,IAAI,SAAS,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAEnD,MAAM,kBAAkB,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5D,IAAI,kBAAkB,GAAG,CAAC,IAAI,kBAAkB,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;QACxE,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAC7D,MAAM,MAAM,GAAG,gBAAgB,CAAC,YAAY,CAAC,CAAC;IAC9C,IAAI,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAE1B,qEAAqE;IACrE,2EAA2E;IAC3E,wEAAwE;IACxE,sEAAsE;IACtE,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC;IACnD,IAAI,CAAC,QAAQ,CAAC;QACZ,SAAS,EAAE,eAAe,CAAC,MAAM,CAC/B,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,EAAE,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC,CACvD;QACD,SAAS,EAAE,QAAQ;KACpB,CAAC,CAAC;IACH,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAiB,EAAE,IAAgB;IAC9D,IACE,KAAK,CAAC,MAAM,KAAK,CAAC;QAClB,KAAK,CAAC,MAAM,KAAK,CAAC;QAClB,KAAK,CAAC,OAAO;QACb,KAAK,CAAC,OAAO;QACb,KAAK,CAAC,QAAQ;QACd,KAAK,CAAC,MAAM,EACZ,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAC5B,IAAI,CAAC,CAAC,MAAM,YAAY,OAAO,CAAC;QAAE,OAAO,KAAK,CAAC;IAC/C,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAc,sBAAsB,CAAC,CAAC;IACnE,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,KAAK,CAAC;IAE/D,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAC5C,IAAI,UAAU,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IACjC,MAAM,YAAY,GAAG,MAAM,CAAC,WAAW,EAAE,MAAM,IAAI,CAAC,CAAC;IACrD,IAAI,YAAY,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAErC,IAAI,CAAC,KAAK,EAAE,CAAC;IACb,IAAI,CAAC,QAAQ,CAAC;QACZ,SAAS,EAAE,eAAe,CAAC,MAAM,CAAC,UAAU,GAAG,YAAY,CAAC;QAC5D,SAAS,EAAE,gBAAgB;KAC5B,CAAC,CAAC;IACH,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,uBAAuB;IACrC,OAAO;QACL,mBAAmB;QACnB,UAAU,CAAC,gBAAgB,CAAC,EAAE,SAAS,EAAE,mBAAmB,EAAE,CAAC;QAC/D,IAAI,CAAC,OAAO,CACV,MAAM,CAAC,EAAE,CAAC;YACR,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,kBAAkB,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE;YAClE,EAAE,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,kBAAkB,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE;YACnE;gBACE,GAAG,EAAE,MAAM;gBACX,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,oBAAoB,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC;gBACtD,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,oBAAoB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;aACxD;YACD;gBACE,GAAG,EAAE,KAAK;gBACV,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,oBAAoB,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC;gBACvD,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,oBAAoB,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC;aACzD;YACD;gBACE,GAAG,EAAE,WAAW;gBAChB,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,oBAAoB,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC;gBACvD,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,oBAAoB,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC;aACzD;YACD;gBACE,GAAG,EAAE,YAAY;gBACjB,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,oBAAoB,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC;gBACtD,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,oBAAoB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;aACxD;SACF,CAAC,CACH;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"markdown-context.d.ts","sourceRoot":"","sources":["../../src/core/markdown-context.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGrD,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,WAAW,EAClB,UAAU,EAAE,MAAM,GACjB,OAAO,CAUT"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { syntaxTree } from '@codemirror/language';
|
|
2
|
+
export function isLineInsideMarkdownCode(state, lineNumber) {
|
|
3
|
+
const line = state.doc.line(lineNumber);
|
|
4
|
+
for (let node = syntaxTree(state).resolveInner(line.from, -1); node; node = node.parent) {
|
|
5
|
+
if (node.name === 'CodeBlock' || node.name === 'FencedCode')
|
|
6
|
+
return true;
|
|
7
|
+
}
|
|
8
|
+
return false;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=markdown-context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"markdown-context.js","sourceRoot":"","sources":["../../src/core/markdown-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAIlD,MAAM,UAAU,wBAAwB,CACtC,KAAkB,EAClB,UAAkB;IAElB,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACxC,KACE,IAAI,IAAI,GAAsB,UAAU,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAC3E,IAAI,EACJ,IAAI,GAAG,IAAI,CAAC,MAAM,EAClB,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY;YAAE,OAAO,IAAI,CAAC;IAC3E,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { EditorView } from '@codemirror/view';
|
|
2
|
+
import { StateField, type Extension } from '@codemirror/state';
|
|
3
|
+
import type { ParsedTaskMarker } from './preview-widgets';
|
|
4
|
+
export declare const setFrozen: import("@codemirror/state").StateEffectType<boolean>;
|
|
5
|
+
export declare const refreshInlinePreview: import("@codemirror/state").StateEffectType<void>;
|
|
6
|
+
export declare const previewFrozenField: StateField<boolean>;
|
|
7
|
+
export interface PreviewActivity {
|
|
8
|
+
editorFocused: boolean;
|
|
9
|
+
activeLines: ReadonlySet<number>;
|
|
10
|
+
frozen: boolean;
|
|
11
|
+
}
|
|
12
|
+
export declare function getPreviewActivity(view: EditorView): PreviewActivity;
|
|
13
|
+
export declare function shouldRevealTaskSource(view: EditorView, lineFrom: number, taskInfo: ParsedTaskMarker): boolean;
|
|
14
|
+
export declare function defaultOnLinkClick(url: string): void;
|
|
15
|
+
export declare function linkIconHitTarget(event: MouseEvent, root?: HTMLElement): HTMLElement | null;
|
|
16
|
+
export declare function linkElementFromEvent(event: MouseEvent, root?: HTMLElement): HTMLElement | null;
|
|
17
|
+
export declare function previewActivityExtension(): Extension;
|
|
18
|
+
//# sourceMappingURL=preview-activity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preview-activity.d.ts","sourceRoot":"","sources":["../../src/core/preview-activity.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EAGX,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAEL,UAAU,EACV,KAAK,SAAS,EACf,MAAM,mBAAmB,CAAC;AAE3B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAI1D,eAAO,MAAM,SAAS,sDAAgC,CAAC;AACvD,eAAO,MAAM,oBAAoB,mDAA6B,CAAC;AAE/D,eAAO,MAAM,kBAAkB,qBAQ7B,CAAC;AAEH,MAAM,WAAW,eAAe;IAC9B,aAAa,EAAE,OAAO,CAAC;IACvB,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACjC,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,UAAU,GAAG,eAAe,CAkBpE;AAED,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,UAAU,EAChB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,gBAAgB,GACzB,OAAO,CAYT;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAMpD;AAED,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,UAAU,EACjB,IAAI,CAAC,EAAE,WAAW,GACjB,WAAW,GAAG,IAAI,CAkBpB;AAED,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,UAAU,EACjB,IAAI,CAAC,EAAE,WAAW,GACjB,WAAW,GAAG,IAAI,CAMpB;AA2FD,wBAAgB,wBAAwB,IAAI,SAAS,CAEpD"}
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
import { ViewPlugin, } from '@codemirror/view';
|
|
2
|
+
import { StateEffect, StateField, } from '@codemirror/state';
|
|
3
|
+
import { readOnlyFacet } from './read-only';
|
|
4
|
+
const FREEZE_TAIL_MS = 100;
|
|
5
|
+
export const setFrozen = StateEffect.define();
|
|
6
|
+
export const refreshInlinePreview = StateEffect.define();
|
|
7
|
+
export const previewFrozenField = StateField.define({
|
|
8
|
+
create: () => false,
|
|
9
|
+
update(prev, tr) {
|
|
10
|
+
for (const effect of tr.effects) {
|
|
11
|
+
if (effect.is(setFrozen))
|
|
12
|
+
return effect.value;
|
|
13
|
+
}
|
|
14
|
+
return prev;
|
|
15
|
+
},
|
|
16
|
+
});
|
|
17
|
+
export function getPreviewActivity(view) {
|
|
18
|
+
const editorFocused = view.hasFocus && !view.state.facet(readOnlyFacet);
|
|
19
|
+
const activeLines = new Set();
|
|
20
|
+
if (editorFocused) {
|
|
21
|
+
for (const range of view.state.selection.ranges) {
|
|
22
|
+
const firstLine = view.state.doc.lineAt(range.from).number;
|
|
23
|
+
const lastLine = view.state.doc.lineAt(range.to).number;
|
|
24
|
+
for (let number = firstLine; number <= lastLine; number++) {
|
|
25
|
+
activeLines.add(number);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
return {
|
|
30
|
+
editorFocused,
|
|
31
|
+
activeLines,
|
|
32
|
+
frozen: view.state.field(previewFrozenField),
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
export function shouldRevealTaskSource(view, lineFrom, taskInfo) {
|
|
36
|
+
if (!getPreviewActivity(view).editorFocused)
|
|
37
|
+
return false;
|
|
38
|
+
const from = lineFrom + taskInfo.listFrom;
|
|
39
|
+
const to = lineFrom + taskInfo.markerTo;
|
|
40
|
+
for (const range of view.state.selection.ranges) {
|
|
41
|
+
if (range.empty) {
|
|
42
|
+
if (range.head >= from && range.head <= to)
|
|
43
|
+
return true;
|
|
44
|
+
}
|
|
45
|
+
else if (range.from <= to && range.to >= from) {
|
|
46
|
+
return true;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
return false;
|
|
50
|
+
}
|
|
51
|
+
export function defaultOnLinkClick(url) {
|
|
52
|
+
try {
|
|
53
|
+
window.open(url, '_blank', 'noopener,noreferrer');
|
|
54
|
+
}
|
|
55
|
+
catch {
|
|
56
|
+
// window.open can throw in sandboxed iframes; consumers can provide an opener.
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
export function linkIconHitTarget(event, root) {
|
|
60
|
+
const target = event.target;
|
|
61
|
+
if (!(target instanceof Element))
|
|
62
|
+
return null;
|
|
63
|
+
const linkEl = target.closest('.cm-moss-link');
|
|
64
|
+
if (!linkEl || (root && !root.contains(linkEl)))
|
|
65
|
+
return null;
|
|
66
|
+
const rects = Array.from(linkEl.getClientRects());
|
|
67
|
+
if (rects.length === 0)
|
|
68
|
+
return null;
|
|
69
|
+
const lastRect = rects[rects.length - 1];
|
|
70
|
+
const emSize = parseFloat(window.getComputedStyle(linkEl).fontSize);
|
|
71
|
+
const iconZone = emSize * 1.25;
|
|
72
|
+
const onIcon = event.clientX >= lastRect.right - iconZone &&
|
|
73
|
+
event.clientX <= lastRect.right &&
|
|
74
|
+
event.clientY >= lastRect.top &&
|
|
75
|
+
event.clientY <= lastRect.bottom;
|
|
76
|
+
return onIcon ? linkEl : null;
|
|
77
|
+
}
|
|
78
|
+
export function linkElementFromEvent(event, root) {
|
|
79
|
+
const target = event.target;
|
|
80
|
+
if (!(target instanceof Element))
|
|
81
|
+
return null;
|
|
82
|
+
const linkEl = target.closest('.cm-moss-link');
|
|
83
|
+
if (!linkEl || (root && !root.contains(linkEl)))
|
|
84
|
+
return null;
|
|
85
|
+
return linkEl;
|
|
86
|
+
}
|
|
87
|
+
const freezeMousePlugin = ViewPlugin.fromClass(class {
|
|
88
|
+
freezeDuringPointer() {
|
|
89
|
+
this.down = true;
|
|
90
|
+
if (this.releaseTimer != null) {
|
|
91
|
+
window.clearTimeout(this.releaseTimer);
|
|
92
|
+
this.releaseTimer = null;
|
|
93
|
+
}
|
|
94
|
+
if (!this.view.state.field(previewFrozenField)) {
|
|
95
|
+
this.view.dispatch({ effects: setFrozen.of(true) });
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
selectFromScrollerSpace(event) {
|
|
99
|
+
const contentRect = this.view.contentDOM.getBoundingClientRect();
|
|
100
|
+
if (contentRect.width <= 0 || contentRect.height <= 0)
|
|
101
|
+
return;
|
|
102
|
+
const x = Math.min(Math.max(event.clientX, contentRect.left + 1), contentRect.right - 1);
|
|
103
|
+
const pos = this.view.posAtCoords({ x, y: event.clientY });
|
|
104
|
+
if (pos == null)
|
|
105
|
+
return;
|
|
106
|
+
event.preventDefault();
|
|
107
|
+
this.freezeDuringPointer();
|
|
108
|
+
this.view.focus();
|
|
109
|
+
this.view.dispatch({
|
|
110
|
+
selection: { anchor: pos },
|
|
111
|
+
userEvent: 'select.pointer',
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
constructor(view) {
|
|
115
|
+
Object.defineProperty(this, "view", {
|
|
116
|
+
enumerable: true,
|
|
117
|
+
configurable: true,
|
|
118
|
+
writable: true,
|
|
119
|
+
value: view
|
|
120
|
+
});
|
|
121
|
+
Object.defineProperty(this, "down", {
|
|
122
|
+
enumerable: true,
|
|
123
|
+
configurable: true,
|
|
124
|
+
writable: true,
|
|
125
|
+
value: false
|
|
126
|
+
});
|
|
127
|
+
Object.defineProperty(this, "releaseTimer", {
|
|
128
|
+
enumerable: true,
|
|
129
|
+
configurable: true,
|
|
130
|
+
writable: true,
|
|
131
|
+
value: null
|
|
132
|
+
});
|
|
133
|
+
Object.defineProperty(this, "onDown", {
|
|
134
|
+
enumerable: true,
|
|
135
|
+
configurable: true,
|
|
136
|
+
writable: true,
|
|
137
|
+
value: (event) => {
|
|
138
|
+
if (event.button !== 0)
|
|
139
|
+
return;
|
|
140
|
+
if (this.view.state.facet(readOnlyFacet))
|
|
141
|
+
return;
|
|
142
|
+
const target = event.target;
|
|
143
|
+
if (!(target instanceof Node) || !this.view.dom.contains(target)) {
|
|
144
|
+
return;
|
|
145
|
+
}
|
|
146
|
+
if (!this.view.contentDOM.contains(target)) {
|
|
147
|
+
if (this.view.scrollDOM.contains(target)) {
|
|
148
|
+
this.selectFromScrollerSpace(event);
|
|
149
|
+
}
|
|
150
|
+
return;
|
|
151
|
+
}
|
|
152
|
+
if (linkIconHitTarget(event, this.view.contentDOM)) {
|
|
153
|
+
event.preventDefault();
|
|
154
|
+
event.stopImmediatePropagation();
|
|
155
|
+
return;
|
|
156
|
+
}
|
|
157
|
+
this.freezeDuringPointer();
|
|
158
|
+
}
|
|
159
|
+
});
|
|
160
|
+
Object.defineProperty(this, "onUp", {
|
|
161
|
+
enumerable: true,
|
|
162
|
+
configurable: true,
|
|
163
|
+
writable: true,
|
|
164
|
+
value: () => {
|
|
165
|
+
if (!this.down)
|
|
166
|
+
return;
|
|
167
|
+
this.down = false;
|
|
168
|
+
if (this.releaseTimer != null)
|
|
169
|
+
window.clearTimeout(this.releaseTimer);
|
|
170
|
+
this.releaseTimer = window.setTimeout(() => {
|
|
171
|
+
this.releaseTimer = null;
|
|
172
|
+
if (!this.view.state.field(previewFrozenField))
|
|
173
|
+
return;
|
|
174
|
+
try {
|
|
175
|
+
this.view.dispatch({ effects: setFrozen.of(false) });
|
|
176
|
+
}
|
|
177
|
+
catch {
|
|
178
|
+
// view destroyed while the release timer was pending.
|
|
179
|
+
}
|
|
180
|
+
}, FREEZE_TAIL_MS);
|
|
181
|
+
}
|
|
182
|
+
});
|
|
183
|
+
view.dom.addEventListener('pointerdown', this.onDown, true);
|
|
184
|
+
window.addEventListener('pointerup', this.onUp);
|
|
185
|
+
window.addEventListener('pointercancel', this.onUp);
|
|
186
|
+
}
|
|
187
|
+
update(_) { }
|
|
188
|
+
destroy() {
|
|
189
|
+
this.view.dom.removeEventListener('pointerdown', this.onDown, true);
|
|
190
|
+
window.removeEventListener('pointerup', this.onUp);
|
|
191
|
+
window.removeEventListener('pointercancel', this.onUp);
|
|
192
|
+
if (this.releaseTimer != null)
|
|
193
|
+
window.clearTimeout(this.releaseTimer);
|
|
194
|
+
}
|
|
195
|
+
});
|
|
196
|
+
export function previewActivityExtension() {
|
|
197
|
+
return [previewFrozenField, freezeMousePlugin];
|
|
198
|
+
}
|
|
199
|
+
//# sourceMappingURL=preview-activity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preview-activity.js","sourceRoot":"","sources":["../../src/core/preview-activity.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { Facet, type Text } from '@codemirror/state';
|
|
2
|
+
import { EditorView, WidgetType } from '@codemirror/view';
|
|
3
|
+
import { type MossIconRenderer } from './icons';
|
|
4
|
+
export interface MossTaskCheckboxStatus {
|
|
5
|
+
icon?: MossIconRenderer;
|
|
6
|
+
label?: string;
|
|
7
|
+
completed?: boolean;
|
|
8
|
+
filled?: boolean;
|
|
9
|
+
toggleTo?: string;
|
|
10
|
+
}
|
|
11
|
+
export interface ResolvedTaskCheckboxStatus {
|
|
12
|
+
icon: MossIconRenderer;
|
|
13
|
+
label: string;
|
|
14
|
+
completed: boolean;
|
|
15
|
+
filled: boolean;
|
|
16
|
+
toggleTo: string | null;
|
|
17
|
+
}
|
|
18
|
+
export declare const DEFAULT_TASK_CHECKBOXES: Record<string, ResolvedTaskCheckboxStatus>;
|
|
19
|
+
export declare const taskCheckboxConfigFacet: Facet<Partial<Record<string, MossTaskCheckboxStatus>>, Partial<Record<string, MossTaskCheckboxStatus>>>;
|
|
20
|
+
export declare function resolveTaskCheckboxStatus(key: string, config: Partial<Record<string, MossTaskCheckboxStatus>>): ResolvedTaskCheckboxStatus | null;
|
|
21
|
+
export declare function shouldUseNativeTaskCheckbox(key: string, config: Partial<Record<string, MossTaskCheckboxStatus>>): boolean;
|
|
22
|
+
export interface ParsedTaskMarker {
|
|
23
|
+
key: string;
|
|
24
|
+
raw: string;
|
|
25
|
+
markerFrom: number;
|
|
26
|
+
markerTo: number;
|
|
27
|
+
listFrom: number;
|
|
28
|
+
separator: string;
|
|
29
|
+
status: ResolvedTaskCheckboxStatus;
|
|
30
|
+
}
|
|
31
|
+
export declare function parseListTaskMarker(lineText: string, config: Partial<Record<string, MossTaskCheckboxStatus>>): ParsedTaskMarker | null;
|
|
32
|
+
export declare function fencedCodeSource(doc: Text, from: number, to: number): string;
|
|
33
|
+
export declare class BulletWidget extends WidgetType {
|
|
34
|
+
private readonly symbol;
|
|
35
|
+
constructor(depth: number);
|
|
36
|
+
eq(other: BulletWidget): boolean;
|
|
37
|
+
toDOM(): HTMLElement;
|
|
38
|
+
ignoreEvent(): boolean;
|
|
39
|
+
}
|
|
40
|
+
export declare class CodeCopyWidget extends WidgetType {
|
|
41
|
+
readonly code: string;
|
|
42
|
+
constructor(code: string);
|
|
43
|
+
private button;
|
|
44
|
+
private copiedTimer;
|
|
45
|
+
eq(other: CodeCopyWidget): boolean;
|
|
46
|
+
private setCopied;
|
|
47
|
+
private clearTimer;
|
|
48
|
+
private flashCopied;
|
|
49
|
+
toDOM(): HTMLElement;
|
|
50
|
+
destroy(): void;
|
|
51
|
+
ignoreEvent(event: Event): boolean;
|
|
52
|
+
}
|
|
53
|
+
export declare class TaskCheckboxWidget extends WidgetType {
|
|
54
|
+
readonly key: string;
|
|
55
|
+
readonly raw: string;
|
|
56
|
+
readonly status: ResolvedTaskCheckboxStatus;
|
|
57
|
+
readonly markerFrom: number;
|
|
58
|
+
readonly native: boolean;
|
|
59
|
+
constructor(key: string, raw: string, status: ResolvedTaskCheckboxStatus, markerFrom: number, native?: boolean);
|
|
60
|
+
eq(other: TaskCheckboxWidget): boolean;
|
|
61
|
+
toDOM(view: EditorView): HTMLElement;
|
|
62
|
+
private bindToggle;
|
|
63
|
+
ignoreEvent(event: Event): boolean;
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=preview-widgets.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preview-widgets.d.ts","sourceRoot":"","sources":["../../src/core/preview-widgets.ts"],"names":[],"mappings":"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"}
|