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.
Files changed (119) hide show
  1. package/CHANGELOG.md +87 -0
  2. package/LICENSE +21 -0
  3. package/README.md +336 -0
  4. package/dist/collab/index.d.ts +14 -0
  5. package/dist/collab/index.d.ts.map +1 -0
  6. package/dist/collab/index.js +6 -0
  7. package/dist/collab/index.js.map +1 -0
  8. package/dist/core/code-languages.d.ts +3 -0
  9. package/dist/core/code-languages.d.ts.map +1 -0
  10. package/dist/core/code-languages.js +130 -0
  11. package/dist/core/code-languages.js.map +1 -0
  12. package/dist/core/decoration-utils.d.ts +4 -0
  13. package/dist/core/decoration-utils.d.ts.map +1 -0
  14. package/dist/core/decoration-utils.js +25 -0
  15. package/dist/core/decoration-utils.js.map +1 -0
  16. package/dist/core/edit-helpers.d.ts +13 -0
  17. package/dist/core/edit-helpers.d.ts.map +1 -0
  18. package/dist/core/edit-helpers.js +318 -0
  19. package/dist/core/edit-helpers.js.map +1 -0
  20. package/dist/core/icons.d.ts +16 -0
  21. package/dist/core/icons.d.ts.map +1 -0
  22. package/dist/core/icons.js +86 -0
  23. package/dist/core/icons.js.map +1 -0
  24. package/dist/core/inline-preview.d.ts +32 -0
  25. package/dist/core/inline-preview.d.ts.map +1 -0
  26. package/dist/core/inline-preview.js +925 -0
  27. package/dist/core/inline-preview.js.map +1 -0
  28. package/dist/core/list-editing.d.ts +10 -0
  29. package/dist/core/list-editing.d.ts.map +1 -0
  30. package/dist/core/list-editing.js +244 -0
  31. package/dist/core/list-editing.js.map +1 -0
  32. package/dist/core/list-model.d.ts +40 -0
  33. package/dist/core/list-model.d.ts.map +1 -0
  34. package/dist/core/list-model.js +114 -0
  35. package/dist/core/list-model.js.map +1 -0
  36. package/dist/core/list-navigation.d.ts +3 -0
  37. package/dist/core/list-navigation.d.ts.map +1 -0
  38. package/dist/core/list-navigation.js +234 -0
  39. package/dist/core/list-navigation.js.map +1 -0
  40. package/dist/core/markdown-context.d.ts +3 -0
  41. package/dist/core/markdown-context.d.ts.map +1 -0
  42. package/dist/core/markdown-context.js +10 -0
  43. package/dist/core/markdown-context.js.map +1 -0
  44. package/dist/core/preview-activity.d.ts +18 -0
  45. package/dist/core/preview-activity.d.ts.map +1 -0
  46. package/dist/core/preview-activity.js +199 -0
  47. package/dist/core/preview-activity.js.map +1 -0
  48. package/dist/core/preview-widgets.d.ts +65 -0
  49. package/dist/core/preview-widgets.d.ts.map +1 -0
  50. package/dist/core/preview-widgets.js +359 -0
  51. package/dist/core/preview-widgets.js.map +1 -0
  52. package/dist/core/read-only.d.ts +26 -0
  53. package/dist/core/read-only.d.ts.map +1 -0
  54. package/dist/core/read-only.js +49 -0
  55. package/dist/core/read-only.js.map +1 -0
  56. package/dist/core/tree-progress.d.ts +29 -0
  57. package/dist/core/tree-progress.d.ts.map +1 -0
  58. package/dist/core/tree-progress.js +143 -0
  59. package/dist/core/tree-progress.js.map +1 -0
  60. package/dist/editor.d.ts +219 -0
  61. package/dist/editor.d.ts.map +1 -0
  62. package/dist/editor.js +551 -0
  63. package/dist/editor.js.map +1 -0
  64. package/dist/features/callout/index.d.ts +9 -0
  65. package/dist/features/callout/index.d.ts.map +1 -0
  66. package/dist/features/callout/index.js +223 -0
  67. package/dist/features/callout/index.js.map +1 -0
  68. package/dist/features/file-blocks/index.d.ts +12 -0
  69. package/dist/features/file-blocks/index.d.ts.map +1 -0
  70. package/dist/features/file-blocks/index.js +397 -0
  71. package/dist/features/file-blocks/index.js.map +1 -0
  72. package/dist/features/image/index.d.ts +28 -0
  73. package/dist/features/image/index.d.ts.map +1 -0
  74. package/dist/features/image/index.js +699 -0
  75. package/dist/features/image/index.js.map +1 -0
  76. package/dist/features/index.d.ts +17 -0
  77. package/dist/features/index.d.ts.map +1 -0
  78. package/dist/features/index.js +9 -0
  79. package/dist/features/index.js.map +1 -0
  80. package/dist/features/search/index.d.ts +4 -0
  81. package/dist/features/search/index.d.ts.map +1 -0
  82. package/dist/features/search/index.js +131 -0
  83. package/dist/features/search/index.js.map +1 -0
  84. package/dist/features/slash-commands/index.d.ts +52 -0
  85. package/dist/features/slash-commands/index.d.ts.map +1 -0
  86. package/dist/features/slash-commands/index.js +422 -0
  87. package/dist/features/slash-commands/index.js.map +1 -0
  88. package/dist/features/table/index.d.ts +44 -0
  89. package/dist/features/table/index.d.ts.map +1 -0
  90. package/dist/features/table/index.js +1262 -0
  91. package/dist/features/table/index.js.map +1 -0
  92. package/dist/features/upload/index.d.ts +80 -0
  93. package/dist/features/upload/index.d.ts.map +1 -0
  94. package/dist/features/upload/index.js +790 -0
  95. package/dist/features/upload/index.js.map +1 -0
  96. package/dist/features/wiki-links/index.d.ts +27 -0
  97. package/dist/features/wiki-links/index.d.ts.map +1 -0
  98. package/dist/features/wiki-links/index.js +577 -0
  99. package/dist/features/wiki-links/index.js.map +1 -0
  100. package/dist/index.d.ts +17 -0
  101. package/dist/index.d.ts.map +1 -0
  102. package/dist/index.js +12 -0
  103. package/dist/index.js.map +1 -0
  104. package/dist/styles/content.css +247 -0
  105. package/dist/styles/inline-preview.css +2116 -0
  106. package/dist/styles/tokens.css +234 -0
  107. package/dist/syntax/highlight.d.ts +10 -0
  108. package/dist/syntax/highlight.d.ts.map +1 -0
  109. package/dist/syntax/highlight.js +75 -0
  110. package/dist/syntax/highlight.js.map +1 -0
  111. package/dist/syntax/index.d.ts +16 -0
  112. package/dist/syntax/index.d.ts.map +1 -0
  113. package/dist/syntax/index.js +29 -0
  114. package/dist/syntax/index.js.map +1 -0
  115. package/dist/theme/index.d.ts +6 -0
  116. package/dist/theme/index.d.ts.map +1 -0
  117. package/dist/theme/index.js +204 -0
  118. package/dist/theme/index.js.map +1 -0
  119. 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":"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"}
@@ -0,0 +1,3 @@
1
+ import type { EditorState } from '@codemirror/state';
2
+ export declare function isLineInsideMarkdownCode(state: EditorState, lineNumber: number): boolean;
3
+ //# sourceMappingURL=markdown-context.d.ts.map
@@ -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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"}