@mdzip/editor 1.3.17 → 1.3.19

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.
@@ -1,6 +1,6 @@
1
1
  export declare const MDZIP_RUNTIME_LIBRARIES: readonly [{
2
2
  readonly name: "@mdzip/editor";
3
- readonly version: "1.3.17";
3
+ readonly version: "1.3.19";
4
4
  readonly repositoryUrl: "https://github.com/mdzip-project/mdzip-editor";
5
5
  readonly description: "MDZip workspace engine and browser UI.";
6
6
  }, {
@@ -2,7 +2,7 @@
2
2
  export const MDZIP_RUNTIME_LIBRARIES = [
3
3
  {
4
4
  "name": "@mdzip/editor",
5
- "version": "1.3.17",
5
+ "version": "1.3.19",
6
6
  "repositoryUrl": "https://github.com/mdzip-project/mdzip-editor",
7
7
  "description": "MDZip workspace engine and browser UI."
8
8
  },
@@ -1 +1 @@
1
- {"version":3,"file":"view-css.d.ts","sourceRoot":"","sources":["../src/view-css.ts"],"names":[],"mappings":"AAeA,eAAO,MAAM,aAAa,QA45DzB,CAAC"}
1
+ {"version":3,"file":"view-css.d.ts","sourceRoot":"","sources":["../src/view-css.ts"],"names":[],"mappings":"AAeA,eAAO,MAAM,aAAa,QA06DzB,CAAC"}
package/dist/view-css.js CHANGED
@@ -797,6 +797,16 @@ export const WORKSPACE_CSS = `
797
797
  background: var(--mdzip-hover-background-color);
798
798
  }
799
799
 
800
+ .mdzip-root .nav-context-menu button:disabled {
801
+ opacity: 0.6;
802
+ cursor: default;
803
+ }
804
+
805
+ .mdzip-root .nav-context-menu button:disabled:hover,
806
+ .mdzip-root .nav-context-menu button:disabled:focus-visible {
807
+ background: transparent;
808
+ }
809
+
800
810
  .mdzip-root .nav-menu-separator {
801
811
  height: 1px;
802
812
  margin: 4px 6px;
@@ -879,6 +889,10 @@ export const WORKSPACE_CSS = `
879
889
  overflow: auto;
880
890
  }
881
891
 
892
+ .mdzip-root .preview-pane:focus {
893
+ outline: none;
894
+ }
895
+
882
896
  .mdzip-root .entry-pane {
883
897
  overflow: auto;
884
898
  }
@@ -1 +1 @@
1
- {"version":3,"file":"view-css.js","sourceRoot":"","sources":["../src/view-css.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,mBAAmB,EACpB,MAAM,YAAY,CAAC;AAEpB,MAAM,wBAAwB,GAAG,qBAAqB,CAAC,UAAU,CAC/D,UAAU,EACV,kBAAkB,CACnB,CAAC;AACF,MAAM,uBAAuB,GAAG,oBAAoB,CAAC,UAAU,CAC7D,UAAU,EACV,kBAAkB,CACnB,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG;;;;;;;;;;IAUzB,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA4DnB,wBAAwB;;;;;IAKxB,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAi1D1B,CAAC"}
1
+ {"version":3,"file":"view-css.js","sourceRoot":"","sources":["../src/view-css.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,mBAAmB,EACpB,MAAM,YAAY,CAAC;AAEpB,MAAM,wBAAwB,GAAG,qBAAqB,CAAC,UAAU,CAC/D,UAAU,EACV,kBAAkB,CACnB,CAAC;AACF,MAAM,uBAAuB,GAAG,oBAAoB,CAAC,UAAU,CAC7D,UAAU,EACV,kBAAkB,CACnB,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG;;;;;;;;;;IAUzB,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA4DnB,wBAAwB;;;;;IAKxB,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+1D1B,CAAC"}
package/dist/view.d.ts CHANGED
@@ -62,6 +62,11 @@ export interface MdzipLayoutControlPolicy {
62
62
  split?: boolean;
63
63
  preview?: boolean;
64
64
  }
65
+ export interface MdzipContextMenuControlPolicy {
66
+ enabled?: boolean;
67
+ editor?: boolean;
68
+ preview?: boolean;
69
+ }
65
70
  export interface MdzipFormattingControlPolicy {
66
71
  enabled?: boolean;
67
72
  bold?: boolean;
@@ -84,6 +89,8 @@ export interface MdzipControlPolicy {
84
89
  title?: boolean | MdzipTitleControlPolicy;
85
90
  layout?: boolean | MdzipLayoutControlPolicy;
86
91
  formatting?: boolean | MdzipFormattingControlPolicy;
92
+ /** Right-click context menus for the source editor and rendered preview. */
93
+ contextMenu?: boolean | MdzipContextMenuControlPolicy;
87
94
  lineNumbers?: boolean;
88
95
  save?: boolean;
89
96
  zoom?: boolean;
@@ -111,6 +118,10 @@ export interface MdzipResolvedLayoutControlPolicy {
111
118
  split: boolean;
112
119
  preview: boolean;
113
120
  }
121
+ export interface MdzipResolvedContextMenuControlPolicy {
122
+ editor: boolean;
123
+ preview: boolean;
124
+ }
114
125
  export interface MdzipResolvedFormattingControlPolicy {
115
126
  bold: boolean;
116
127
  italic: boolean;
@@ -132,6 +143,7 @@ export interface MdzipResolvedControlPolicy {
132
143
  title: MdzipResolvedTitleControlPolicy;
133
144
  layout: MdzipResolvedLayoutControlPolicy;
134
145
  formatting: MdzipResolvedFormattingControlPolicy;
146
+ contextMenu: MdzipResolvedContextMenuControlPolicy;
135
147
  lineNumbers: boolean;
136
148
  save: boolean;
137
149
  zoom: boolean;
@@ -323,6 +335,8 @@ export declare class MdzipWorkspaceView {
323
335
  private readonly searchCompartment;
324
336
  private updatingCm;
325
337
  private syncing;
338
+ private lastSyncedEditorScrollTop;
339
+ private lastSyncedPreviewScrollTop;
326
340
  private markdownRenderer?;
327
341
  private markdownExtensions;
328
342
  private entryRenderers;
@@ -596,6 +610,10 @@ export declare class MdzipWorkspaceView {
596
610
  private resetImageInsertSizeValue;
597
611
  private editorMenuItems;
598
612
  private handleEditorMenuAction;
613
+ private previewMenuItems;
614
+ private handlePreviewMenuAction;
615
+ private copyPreviewSelection;
616
+ private selectAllPreviewContent;
599
617
  private insertCodeBlock;
600
618
  private clearSelectionFormatting;
601
619
  private editorClipboard;
@@ -1 +1 @@
1
- {"version":3,"file":"view.d.ts","sourceRoot":"","sources":["../src/view.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"view.d.ts","sourceRoot":"","sources":["../src/view.ts"],"names":[],"mappings":"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"}
package/dist/view.js CHANGED
@@ -5,7 +5,7 @@ import { closeSearchPanel, openSearchPanel, search, searchKeymap } from '@codemi
5
5
  import { Compartment, EditorState } from '@codemirror/state';
6
6
  import { Decoration, EditorView, MatchDecorator, ViewPlugin, dropCursor, keymap, lineNumbers } from '@codemirror/view';
7
7
  import { tags } from '@lezer/highlight';
8
- import { Bold, Check, ChevronDown, ChevronRight, ClipboardPaste, ClipboardType, Code, Columns2, Copy, Eraser, Eye, File, FileBraces, FileImage, Folder, FolderOpen, Hash, Heading1, Heading2, Heading3, Heading4, Heading5, Heading6, Highlighter, ImagePlus, Info, Italic, Link2Off, Link, List, ListOrdered, CornerDownLeft, Moon, PackagePlus, PanelLeft, Pilcrow, Quote, Save, Scissors, Search, SquareCode, SquarePen, Strikethrough, Sun, TextSelect, ZoomIn } from 'lucide';
8
+ import { Bold, Check, ChevronDown, ChevronRight, ClipboardPaste, ClipboardType, Code, Columns2, Copy, Eraser, Eye, File, FileBraces, FileImage, Folder, FolderOpen, Hash, Heading1, Heading2, Heading3, Heading4, Heading5, Heading6, Highlighter, ImagePlus, Info, Italic, Link2Off, Link, List, ListOrdered, CornerDownLeft, Moon, PackagePlus, PanelLeft, Pilcrow, Quote, Save, Scissors, Search, SpellCheck, SquareCode, SquarePen, Strikethrough, Sun, TextSelect, ZoomIn } from 'lucide';
9
9
  import { browserClipboardHasImage, readBrowserClipboardImage } from './browser.js';
10
10
  import { MdzipAssetSession, mdzipArchiveSourceId, sniffImageSize } from './asset-cache.js';
11
11
  import { MD_MARKDOWN_ICON } from './icons/md-markdown.js';
@@ -71,6 +71,7 @@ const MENU_COPY_ICON_HTML = lucideIcon(Copy, MENU_ICON_CLASS);
71
71
  const MENU_PASTE_ICON_HTML = lucideIcon(ClipboardPaste, MENU_ICON_CLASS);
72
72
  const MENU_PASTE_PLAIN_ICON_HTML = lucideIcon(ClipboardType, MENU_ICON_CLASS);
73
73
  const MENU_SELECT_ALL_ICON_HTML = lucideIcon(TextSelect, MENU_ICON_CLASS);
74
+ const MENU_SPELLCHECK_ICON_HTML = lucideIcon(SpellCheck, MENU_ICON_CLASS);
74
75
  const MENU_BOLD_ICON_HTML = lucideIcon(Bold, MENU_ICON_CLASS);
75
76
  const MENU_ITALIC_ICON_HTML = lucideIcon(Italic, MENU_ICON_CLASS);
76
77
  const MENU_STRIKE_ICON_HTML = lucideIcon(Strikethrough, MENU_ICON_CLASS);
@@ -137,7 +138,8 @@ function renderContextMenuItem(item) {
137
138
  const shortcut = item.shortcut
138
139
  ? `<span class="nav-menu-shortcut">${escapeHtml(item.shortcut)}</span>`
139
140
  : '';
140
- return `<button type="button" role="menuitem" data-menu-action="${escapeHtml(item.action)}">${icon}${label}${shortcut}</button>`;
141
+ const disabledAttrs = item.disabled ? ' disabled aria-disabled="true"' : '';
142
+ return `<button type="button" role="menuitem" data-menu-action="${escapeHtml(item.action)}"${disabledAttrs}>${icon}${label}${shortcut}</button>`;
141
143
  }
142
144
  function renderContextMenuItems(items) {
143
145
  return items
@@ -150,6 +152,10 @@ const ALL_LAYOUT_CONTROLS = {
150
152
  split: true,
151
153
  preview: true
152
154
  };
155
+ const ALL_CONTEXT_MENU_CONTROLS = {
156
+ editor: true,
157
+ preview: true
158
+ };
153
159
  const ALL_FORMATTING_CONTROLS = {
154
160
  bold: true,
155
161
  italic: true,
@@ -186,6 +192,7 @@ const CONTROL_PRESETS = {
186
192
  title: { visible: false, editable: false },
187
193
  layout: { source: false, split: false, preview: false },
188
194
  formatting: { ...NO_FORMATTING_CONTROLS },
195
+ contextMenu: { ...ALL_CONTEXT_MENU_CONTROLS },
189
196
  lineNumbers: false,
190
197
  save: false,
191
198
  zoom: false,
@@ -202,6 +209,7 @@ const CONTROL_PRESETS = {
202
209
  title: { visible: true, editable: false },
203
210
  layout: { ...ALL_LAYOUT_CONTROLS },
204
211
  formatting: { ...NO_FORMATTING_CONTROLS },
212
+ contextMenu: { ...ALL_CONTEXT_MENU_CONTROLS },
205
213
  lineNumbers: true,
206
214
  save: false,
207
215
  zoom: true,
@@ -218,6 +226,7 @@ const CONTROL_PRESETS = {
218
226
  title: { visible: true, editable: true },
219
227
  layout: { ...ALL_LAYOUT_CONTROLS },
220
228
  formatting: { ...ALL_FORMATTING_CONTROLS },
229
+ contextMenu: { ...ALL_CONTEXT_MENU_CONTROLS },
221
230
  lineNumbers: true,
222
231
  save: true,
223
232
  zoom: true,
@@ -234,6 +243,7 @@ const CONTROL_PRESETS = {
234
243
  title: { visible: true, editable: true },
235
244
  layout: { ...ALL_LAYOUT_CONTROLS },
236
245
  formatting: { ...ALL_FORMATTING_CONTROLS },
246
+ contextMenu: { ...ALL_CONTEXT_MENU_CONTROLS },
237
247
  lineNumbers: true,
238
248
  save: false,
239
249
  zoom: true,
@@ -267,7 +277,8 @@ export function resolveMdzipControlPolicy(controls) {
267
277
  preset,
268
278
  title: resolveTitleControls(base.title, controls.title),
269
279
  layout: resolveLayoutControls(base.layout, controls.layout),
270
- formatting: resolveFormattingControls(base.formatting, controls.formatting)
280
+ formatting: resolveFormattingControls(base.formatting, controls.formatting),
281
+ contextMenu: resolveContextMenuControls(base.contextMenu, controls.contextMenu)
271
282
  };
272
283
  }
273
284
  function defaultLayoutForPolicy(policy) {
@@ -284,7 +295,8 @@ function cloneResolvedControlPolicy(policy) {
284
295
  formatting: {
285
296
  ...policy.formatting,
286
297
  headings: [...policy.formatting.headings]
287
- }
298
+ },
299
+ contextMenu: { ...policy.contextMenu }
288
300
  };
289
301
  }
290
302
  function resolveTitleControls(base, override) {
@@ -308,6 +320,21 @@ function resolveLayoutControls(base, override) {
308
320
  : base;
309
321
  return { ...resolvedBase, ...controls };
310
322
  }
323
+ function resolveContextMenuControls(base, override) {
324
+ if (typeof override === 'boolean') {
325
+ return { editor: override, preview: override };
326
+ }
327
+ if (!override) {
328
+ return { ...base };
329
+ }
330
+ const { enabled, ...controls } = override;
331
+ const resolvedBase = enabled === false
332
+ ? { editor: false, preview: false }
333
+ : enabled === true
334
+ ? { ...ALL_CONTEXT_MENU_CONTROLS }
335
+ : base;
336
+ return { ...resolvedBase, ...controls };
337
+ }
311
338
  function resolveFormattingControls(base, override) {
312
339
  if (typeof override === 'boolean') {
313
340
  return override
@@ -492,7 +519,10 @@ const hardBreakMarkerHighlight = ViewPlugin.fromClass(class {
492
519
  // the name to be '>' directly, which a URL's ':' never satisfies.
493
520
  const htmlTagMarkerMatcher = new MatchDecorator({
494
521
  regexp: /<\/?(?!br\b)[a-zA-Z][a-zA-Z0-9-]*(?:\s[^<>]*)?\/?>/gi,
495
- decoration: Decoration.mark({ class: 'mdzip-hard-break-marker' })
522
+ // spellcheck="false" on the wrapping span opts this range out of the
523
+ // container-wide spellcheck attribute — tag/attribute names (img, src,
524
+ // align, citation, ...) aren't prose and shouldn't get underlined.
525
+ decoration: Decoration.mark({ class: 'mdzip-hard-break-marker', attributes: { spellcheck: 'false' } })
496
526
  });
497
527
  const htmlTagMarkerHighlight = ViewPlugin.fromClass(class {
498
528
  constructor(view) {
@@ -714,6 +744,11 @@ export class MdzipWorkspaceView {
714
744
  this.searchCompartment = new Compartment();
715
745
  this.updatingCm = false;
716
746
  this.syncing = false;
747
+ // Last value this class itself wrote to each pane's scrollTop, used to
748
+ // recognize and ignore the echoed 'scroll' event that write produces (see
749
+ // syncScrollFromPreview/syncScrollToPreview).
750
+ this.lastSyncedEditorScrollTop = null;
751
+ this.lastSyncedPreviewScrollTop = null;
717
752
  this.markdownExtensions = [];
718
753
  this.entryRenderers = [];
719
754
  this.renderingService = new MdzipRenderingService();
@@ -1912,6 +1947,9 @@ export class MdzipWorkspaceView {
1912
1947
  htmlTagMarkerHighlight,
1913
1948
  EditorView.lineWrapping,
1914
1949
  dropCursor(),
1950
+ // Content is contenteditable, but browsers don't agree on a default
1951
+ // for unconfigured spellcheck there — set it explicitly (#33).
1952
+ EditorView.contentAttributes.of({ spellcheck: 'true' }),
1915
1953
  mdzipEditorTheme,
1916
1954
  this.readOnlyCompartment.of(EditorState.readOnly.of(mode === 'read-only')),
1917
1955
  EditorView.updateListener.of((update) => {
@@ -2168,7 +2206,9 @@ export class MdzipWorkspaceView {
2168
2206
  if (this.contextMenuState) {
2169
2207
  const items = this.contextMenuState.kind === 'nav'
2170
2208
  ? this.navMenuItems(this.contextMenuState.target, snapshot)
2171
- : this.editorMenuItems(snapshot);
2209
+ : this.contextMenuState.kind === 'editor'
2210
+ ? this.editorMenuItems(snapshot)
2211
+ : this.previewMenuItems();
2172
2212
  if (items.length === 0) {
2173
2213
  this.contextMenuState = null;
2174
2214
  }
@@ -2253,6 +2293,21 @@ export class MdzipWorkspaceView {
2253
2293
  this.render();
2254
2294
  }
2255
2295
  });
2296
+ // Ctrl/Cmd+A normally selects the whole page, which in split layout grabs
2297
+ // both panes' text at once. Scope it to the rendered content instead when
2298
+ // focus is inside the preview pane (see the mousedown handler below for
2299
+ // how it gets there); the source editor keeps its own defaultKeymap
2300
+ // binding since CodeMirror's content root sits outside this element.
2301
+ doc.addEventListener('keydown', (e) => {
2302
+ if (e.key.toLowerCase() !== 'a' || !(e.ctrlKey || e.metaKey) || e.shiftKey || e.altKey) {
2303
+ return;
2304
+ }
2305
+ if (!doc.activeElement || !this.elPreviewPane.contains(doc.activeElement)) {
2306
+ return;
2307
+ }
2308
+ e.preventDefault();
2309
+ this.selectAllPreviewContent();
2310
+ });
2256
2311
  this.elNavBtn.addEventListener('click', () => {
2257
2312
  if (!this.controlPolicy.navigation) {
2258
2313
  return;
@@ -2525,6 +2580,9 @@ export class MdzipWorkspaceView {
2525
2580
  if (this.contextMenuState?.kind === 'editor') {
2526
2581
  void this.handleEditorMenuAction(action);
2527
2582
  }
2583
+ else if (this.contextMenuState?.kind === 'preview') {
2584
+ this.handlePreviewMenuAction(action);
2585
+ }
2528
2586
  else {
2529
2587
  void this.handleNavMenuAction(action);
2530
2588
  }
@@ -2555,6 +2613,9 @@ export class MdzipWorkspaceView {
2555
2613
  submenu.style.top = `${clampedTop - rect.top}px`;
2556
2614
  });
2557
2615
  this.elEditorHost.addEventListener('contextmenu', (e) => {
2616
+ if (!this.controlPolicy.contextMenu.editor) {
2617
+ return;
2618
+ }
2558
2619
  const snapshot = this.workspace?.snapshot();
2559
2620
  if (!snapshot || !this.cmEditor) {
2560
2621
  return;
@@ -2575,6 +2636,27 @@ export class MdzipWorkspaceView {
2575
2636
  e.stopPropagation();
2576
2637
  this.render();
2577
2638
  });
2639
+ this.elPreviewPane.addEventListener('contextmenu', (e) => {
2640
+ if (!this.controlPolicy.contextMenu.preview) {
2641
+ return;
2642
+ }
2643
+ // Captured now, not read live in the click handler: clicking the menu
2644
+ // button collapses the browser selection before the action runs (same
2645
+ // reason the editor menu captures its CodeMirror range up front).
2646
+ const domSelection = this.elPreviewPane.ownerDocument.defaultView?.getSelection();
2647
+ const text = domSelection && !domSelection.isCollapsed
2648
+ && this.elPreviewContent.contains(domSelection.anchorNode)
2649
+ ? domSelection.toString()
2650
+ : '';
2651
+ this.contextMenuState = { kind: 'preview', text, x: e.clientX, y: e.clientY };
2652
+ if (this.previewMenuItems().length === 0) {
2653
+ this.contextMenuState = null;
2654
+ return;
2655
+ }
2656
+ e.preventDefault();
2657
+ e.stopPropagation();
2658
+ this.render();
2659
+ });
2578
2660
  this.elNameInput.addEventListener('input', () => {
2579
2661
  if (!this.nameDialogState) {
2580
2662
  return;
@@ -2621,6 +2703,12 @@ export class MdzipWorkspaceView {
2621
2703
  }
2622
2704
  });
2623
2705
  this.elPreviewPane.addEventListener('scroll', () => this.syncScrollFromPreview());
2706
+ // Gives the pane logical focus on click so a subsequent Ctrl/Cmd+A (below)
2707
+ // can be scoped to it. tabindex="-1" keeps it out of Tab order; this is
2708
+ // the only way it becomes focused.
2709
+ this.elPreviewPane.addEventListener('mousedown', () => {
2710
+ this.elPreviewPane.focus({ preventScroll: true });
2711
+ });
2624
2712
  this.elPreviewPane.addEventListener('click', (event) => {
2625
2713
  const link = event.target.closest('a[href]');
2626
2714
  const snapshot = this.workspace?.snapshot();
@@ -3262,6 +3350,19 @@ export class MdzipWorkspaceView {
3262
3350
  groups.push([{ action: 'editor-clear-format', label: 'Clear Formatting', icon: MENU_CLEAR_FORMAT_ICON_HTML }]);
3263
3351
  }
3264
3352
  groups.push([{ action: 'editor-select-all', label: 'Select All', icon: MENU_SELECT_ALL_ICON_HTML, shortcut: this.editorShortcut('A') }]);
3353
+ // This menu replaces the browser's native one, which is the only place
3354
+ // spelling suggestions live — there's no API to read the browser's
3355
+ // dictionary suggestions into a custom menu. Point at the escape hatch
3356
+ // instead of silently dropping the feature.
3357
+ if (editable) {
3358
+ groups.push([{
3359
+ action: 'editor-spelling-suggestions-hint',
3360
+ label: 'Spelling Suggestions',
3361
+ icon: MENU_SPELLCHECK_ICON_HTML,
3362
+ shortcut: 'Shift+Right-Click',
3363
+ disabled: true
3364
+ }]);
3365
+ }
3265
3366
  return groups.flatMap((group, index) => (index === 0 ? group : [null, ...group]));
3266
3367
  }
3267
3368
  async handleEditorMenuAction(action) {
@@ -3327,6 +3428,72 @@ export class MdzipWorkspaceView {
3327
3428
  break;
3328
3429
  }
3329
3430
  }
3431
+ // Items for the rendered-preview selection menu. Taking over `contextmenu`
3432
+ // to offer Select All also suppresses the browser's native menu — which is
3433
+ // the only thing that was otherwise offering Copy on a right-click — so
3434
+ // Copy has to be reinstated explicitly whenever there's a selection.
3435
+ previewMenuItems() {
3436
+ const state = this.contextMenuState;
3437
+ if (state?.kind !== 'preview' || !this.elPreviewContent.textContent?.trim()) {
3438
+ return [];
3439
+ }
3440
+ const items = [];
3441
+ if (state.text) {
3442
+ items.push({ action: 'preview-copy', label: 'Copy', icon: MENU_COPY_ICON_HTML, shortcut: this.editorShortcut('C') });
3443
+ items.push(null);
3444
+ }
3445
+ items.push({
3446
+ action: 'preview-select-all',
3447
+ label: 'Select All',
3448
+ icon: MENU_SELECT_ALL_ICON_HTML,
3449
+ shortcut: this.editorShortcut('A')
3450
+ });
3451
+ return items;
3452
+ }
3453
+ handlePreviewMenuAction(action) {
3454
+ const state = this.contextMenuState;
3455
+ this.contextMenuState = null;
3456
+ this.render();
3457
+ if (state?.kind !== 'preview') {
3458
+ return;
3459
+ }
3460
+ switch (action) {
3461
+ case 'preview-select-all':
3462
+ this.selectAllPreviewContent();
3463
+ break;
3464
+ case 'preview-copy':
3465
+ void this.copyPreviewSelection(state.text);
3466
+ break;
3467
+ }
3468
+ }
3469
+ async copyPreviewSelection(text) {
3470
+ if (!text) {
3471
+ return;
3472
+ }
3473
+ try {
3474
+ await this.editorClipboard()?.writeText(text);
3475
+ }
3476
+ catch (error) {
3477
+ this.options.onFailed?.(error);
3478
+ }
3479
+ }
3480
+ // Selects the full rendered content of the preview pane, scoped to that
3481
+ // pane rather than the whole page (native Ctrl+A / right-click Select All
3482
+ // would otherwise grab the source editor's text too in split layout).
3483
+ selectAllPreviewContent() {
3484
+ const doc = this.elPreviewContent.ownerDocument;
3485
+ const selection = doc.defaultView?.getSelection();
3486
+ if (!selection) {
3487
+ return;
3488
+ }
3489
+ // Focus before selecting: focusing the pane after building the range
3490
+ // collapses the selection right back out.
3491
+ this.elPreviewPane.focus({ preventScroll: true });
3492
+ const range = doc.createRange();
3493
+ range.selectNodeContents(this.elPreviewContent);
3494
+ selection.removeAllRanges();
3495
+ selection.addRange(range);
3496
+ }
3330
3497
  // Inserts a fenced code block, carrying the chosen language as the fence info
3331
3498
  // string. An empty language produces a plain ```` ``` ```` block.
3332
3499
  insertCodeBlock(language) {
@@ -4284,37 +4451,53 @@ export class MdzipWorkspaceView {
4284
4451
  if (this.syncing || !this.cmEditor || this.layout !== 'split') {
4285
4452
  return;
4286
4453
  }
4454
+ const currentTop = this.elPreviewPane.scrollTop;
4455
+ // Recognize this event as the echo of our own prior write (from
4456
+ // syncScrollToPreview) by comparing values instead of racing timing.
4457
+ // Setting scrollTop fires the target's own 'scroll' event
4458
+ // asynchronously, and how many frames later varies by platform — an
4459
+ // earlier version of this guard cleared a `syncing` flag on the next
4460
+ // requestAnimationFrame, which covered Chromium's timing but arrived too
4461
+ // early on Firefox/Linux, let the echo through, and re-triggered a sync
4462
+ // back in the other direction, compounding into visible drift. Comparing
4463
+ // against the exact value we last wrote to this exact property makes the
4464
+ // check independent of how long the echo takes to arrive.
4465
+ if (this.lastSyncedPreviewScrollTop !== null && Math.abs(currentTop - this.lastSyncedPreviewScrollTop) < 2) {
4466
+ return;
4467
+ }
4287
4468
  this.syncing = true;
4288
4469
  const previewHeight = this.elPreviewPane.scrollHeight - this.elPreviewPane.clientHeight;
4289
- const scrollRatio = previewHeight > 0 ? this.elPreviewPane.scrollTop / previewHeight : 0;
4470
+ const scrollRatio = previewHeight > 0 ? currentTop / previewHeight : 0;
4290
4471
  const cmScroller = this.cmEditor.dom.querySelector('.cm-scroller');
4291
4472
  if (cmScroller) {
4292
4473
  const editorHeight = cmScroller.scrollHeight - cmScroller.clientHeight;
4293
- cmScroller.scrollTop = scrollRatio * editorHeight;
4474
+ const target = scrollRatio * editorHeight;
4475
+ this.lastSyncedEditorScrollTop = target;
4476
+ cmScroller.scrollTop = target;
4294
4477
  }
4295
- // Programmatically setting scrollTop fires the target's own 'scroll'
4296
- // event asynchronously (not inline with this assignment), so clearing
4297
- // the guard synchronously here doesn't actually suppress that echo — it
4298
- // arrives after `syncing` is already back to false, triggers a sync back
4299
- // in the other direction, and small rounding differences between the two
4300
- // panes' scroll ratios compound with each round trip. Clearing on the
4301
- // next frame keeps the guard up until the echo has had its chance to fire.
4302
- requestAnimationFrame(() => { this.syncing = false; });
4478
+ this.syncing = false;
4303
4479
  }
4304
4480
  syncScrollToPreview() {
4305
4481
  if (this.syncing || !this.cmEditor || this.layout !== 'split') {
4306
4482
  return;
4307
4483
  }
4308
- this.syncing = true;
4309
4484
  const cmScroller = this.cmEditor.dom.querySelector('.cm-scroller');
4310
- if (cmScroller) {
4311
- const editorHeight = cmScroller.scrollHeight - cmScroller.clientHeight;
4312
- const scrollRatio = editorHeight > 0 ? cmScroller.scrollTop / editorHeight : 0;
4313
- const previewHeight = this.elPreviewPane.scrollHeight - this.elPreviewPane.clientHeight;
4314
- this.elPreviewPane.scrollTop = scrollRatio * previewHeight;
4485
+ if (!cmScroller) {
4486
+ return;
4315
4487
  }
4316
- // See syncScrollFromPreview: deferred for the same reason.
4317
- requestAnimationFrame(() => { this.syncing = false; });
4488
+ const currentTop = cmScroller.scrollTop;
4489
+ // See syncScrollFromPreview: same echo-recognition approach, mirrored.
4490
+ if (this.lastSyncedEditorScrollTop !== null && Math.abs(currentTop - this.lastSyncedEditorScrollTop) < 2) {
4491
+ return;
4492
+ }
4493
+ this.syncing = true;
4494
+ const editorHeight = cmScroller.scrollHeight - cmScroller.clientHeight;
4495
+ const scrollRatio = editorHeight > 0 ? currentTop / editorHeight : 0;
4496
+ const previewHeight = this.elPreviewPane.scrollHeight - this.elPreviewPane.clientHeight;
4497
+ const target = scrollRatio * previewHeight;
4498
+ this.lastSyncedPreviewScrollTop = target;
4499
+ this.elPreviewPane.scrollTop = target;
4500
+ this.syncing = false;
4318
4501
  }
4319
4502
  }
4320
4503
  function canShowSourceLayout(snapshot) {
@@ -4578,7 +4761,7 @@ const SHELL_HTML = `
4578
4761
  </section>
4579
4762
  <div class="split-resizer" data-ref="split-resizer"
4580
4763
  role="separator" aria-orientation="vertical" aria-label="Resize split panes"></div>
4581
- <section class="pane preview-pane" data-ref="preview-pane">
4764
+ <section class="pane preview-pane" data-ref="preview-pane" tabindex="-1">
4582
4765
  <article class="preview-content" data-ref="preview-content"></article>
4583
4766
  </section>
4584
4767
  <section class="pane entry-pane" data-ref="entry-pane"></section>