@meowdown/react 0.64.3 → 0.65.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/dist/index.d.ts CHANGED
@@ -410,9 +410,9 @@ interface EditorProps {
410
410
  */
411
411
  onFileSaveError?: FilePasteOptions['onFileSaveError'];
412
412
  /**
413
- * Called when the user clicks a rendered image, with its markdown `src`,
414
- * `alt`, and the originating `MouseEvent`. Pass a stable function (e.g. from
415
- * `useCallback`).
413
+ * Called when the user clicks a rendered image (or presses `Enter` on a
414
+ * selected one), with its markdown `src`, `alt`, and the originating event.
415
+ * Pass a stable function (e.g. from `useCallback`).
416
416
  */
417
417
  onImageClick?: ImageClickHandler;
418
418
  /**
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { clsx } from "clsx/lite";
2
2
  import { Fragment, cloneElement, createElement, useCallback, useDeferredValue, useEffect, useImperativeHandle, useLayoutEffect, useMemo, useRef, useState } from "react";
3
- import { buildFileMarkdown, codeBlockLanguages, collectReferenceDefinitions, defaultResolveImageUrl, defineBulletAfterHeading, defineCodeBlockPreviewPlugin, defineEditorExtension, defineEmbedPaste, defineExitBoundaryHandler, defineFileClickHandler, defineFilePaste, defineFileView, defineFollowLinkHandler, defineImage, defineImageClickHandler, defineLinkClickHandler, defineLinkEditKeymap, defineLinkHoverHandler, defineLinkPaste, definePendingReplacementHandler, definePlaceholder, defineReadonly, defineSearchStatusHandler, defineSpellCheckPlugin, defineSubstitution, defineTagClickHandler, defineViewAttributes, defineVirtualCaret, defineWikilinkClickHandler, defineWikilinkHoverHandler, defineWikilinkTrigger, docToMarkdown, formatFileSize, getCodeTokens, getFileKind, getMarkBuilders, getPendingReplacement, getSearchStatus, getSelectedText, getTableColumnAlign, getTextblockDisplayText, getVirtualElementFromRange, inlineTextToMarkChunksWithContext, isCodeBlockPreviewHiddenDecoration, isNodeOfType, isSelectionInTableCell, listenForTweetHeight, loadKaTeX, markdownToDoc, matchEmbed, renderMathInto } from "@meowdown/core";
3
+ import { buildFileMarkdown, codeBlockLanguages, collectReferenceDefinitions, defaultResolveImageUrl, defineBulletAfterHeading, defineCodeBlockPreviewPlugin, defineEditorExtension, defineEmbedPaste, defineExitBoundaryHandler, defineFileClickHandler, defineFilePaste, defineFileView, defineFollowLinkHandler, defineImage, defineImageClickHandler, defineLinkClickHandler, defineLinkEditKeymap, defineLinkHoverHandler, defineLinkPaste, definePendingReplacementHandler, definePlaceholder, defineReadonly, defineSearchStatusHandler, defineSubstitution, defineTagClickHandler, defineViewAttributes, defineVirtualCaret, defineWikilinkClickHandler, defineWikilinkHoverHandler, defineWikilinkTrigger, docToMarkdown, formatFileSize, getCodeTokens, getFileKind, getMarkBuilders, getPendingReplacement, getSearchStatus, getSelectedText, getTableColumnAlign, getTextblockDisplayText, getVirtualElementFromRange, inlineTextToMarkChunksWithContext, isCodeBlockPreviewHiddenDecoration, isModEvent, isNodeOfType, isSelectionInTableCell, listenForTweetHeight, loadKaTeX, markdownToDoc, matchEmbed, renderMathInto } from "@meowdown/core";
4
4
  import { clamp } from "@ocavue/utils";
5
5
  import { canUseRegexLookbehind, createEditor, defineDocChangeHandler, defineUpdateHandler, isTextSelection, union } from "@prosekit/core";
6
6
  import { Selection, TextSelection } from "@prosekit/pm/state";
@@ -401,6 +401,11 @@ function EditorExtensions({ markMode, onDocChange, onWikilinkClick, onLinkClick,
401
401
  const extension = defineViewAttributes({ class: editorClassName });
402
402
  return editor.use(extension);
403
403
  }, [editor, editorClassName]);
404
+ useLayoutEffect(() => {
405
+ if (spellCheck == null) return;
406
+ const extension = defineViewAttributes({ spellcheck: spellCheck ? "true" : "false" });
407
+ return editor.use(extension);
408
+ }, [editor, spellCheck]);
404
409
  const deferredSearchQuery = useDeferredValue(searchQuery);
405
410
  useEffect(() => {
406
411
  editor.commands.setSearchQuery({
@@ -425,17 +430,19 @@ function EditorExtensions({ markMode, onDocChange, onWikilinkClick, onLinkClick,
425
430
  return onTagClick ? defineTagClickHandler(onTagClick) : null;
426
431
  }, [onTagClick]));
427
432
  useExtension$1(useMemo(() => {
428
- return onWikilinkClick || onTagClick || onFileClick || onLinkClick ? defineFollowLinkHandler({
433
+ return onWikilinkClick || onTagClick || onFileClick || onLinkClick || onImageClick ? defineFollowLinkHandler({
429
434
  onWikilinkClick,
430
435
  onTagClick,
431
436
  onFileClick,
432
- onLinkClick
437
+ onLinkClick,
438
+ onImageClick
433
439
  }) : null;
434
440
  }, [
435
441
  onWikilinkClick,
436
442
  onTagClick,
437
443
  onFileClick,
438
- onLinkClick
444
+ onLinkClick,
445
+ onImageClick
439
446
  ]));
440
447
  useExtension$1(useMemo(() => {
441
448
  return onExitBoundary ? defineExitBoundaryHandler(onExitBoundary) : null;
@@ -479,9 +486,6 @@ function EditorExtensions({ markMode, onDocChange, onWikilinkClick, onLinkClick,
479
486
  useExtension$1(useMemo(() => {
480
487
  return wikilinkEnabled ? defineWikilinkTrigger() : null;
481
488
  }, [wikilinkEnabled]));
482
- useExtension$1(useMemo(() => {
483
- return spellCheck == null ? null : defineSpellCheckPlugin(spellCheck);
484
- }, [spellCheck]));
485
489
  return null;
486
490
  }
487
491
 
@@ -585,7 +589,8 @@ function LinkInfoContent({ href, onLinkClick, onLinkCopy, onEdit, onRemove }) {
585
589
  event.preventDefault();
586
590
  onLinkClick({
587
591
  href,
588
- event: event.nativeEvent
592
+ event: event.nativeEvent,
593
+ mod: isModEvent(event)
589
594
  });
590
595
  },
591
596
  children: href
@@ -2184,7 +2189,8 @@ function WikilinkChip(props) {
2184
2189
  contentEditable: false,
2185
2190
  onClick: onWikilinkClick ? (event) => onWikilinkClick({
2186
2191
  target,
2187
- event: event.nativeEvent
2192
+ event: event.nativeEvent,
2193
+ mod: isModEvent(event)
2188
2194
  }) : void 0,
2189
2195
  children: /* @__PURE__ */ jsx("span", {
2190
2196
  className: "md-wikilink-view-label",
@@ -2248,7 +2254,8 @@ function ImagePreview(props) {
2248
2254
  onClick: onImageClick ? (event) => onImageClick({
2249
2255
  src,
2250
2256
  alt,
2251
- event: event.nativeEvent
2257
+ event: event.nativeEvent,
2258
+ mod: isModEvent(event)
2252
2259
  }) : void 0,
2253
2260
  style: width == null ? void 0 : { width: `${width}px` }
2254
2261
  })
@@ -2298,11 +2305,14 @@ function FileView(props) {
2298
2305
  };
2299
2306
  }, [resolveFileInfo, href]);
2300
2307
  const size = resolvedSize?.href === href && resolvedSize.resolver === resolveFileInfo ? resolvedSize.text : "";
2301
- const handleClick = context.onFileClick ? (event) => context.onFileClick?.({
2302
- href,
2303
- name,
2304
- event: event.nativeEvent
2305
- }) : void 0;
2308
+ const handleClick = context.onFileClick ? (event) => {
2309
+ context.onFileClick?.({
2310
+ href,
2311
+ name,
2312
+ event: event.nativeEvent,
2313
+ mod: isModEvent(event)
2314
+ });
2315
+ } : void 0;
2306
2316
  return /* @__PURE__ */ jsxs("span", {
2307
2317
  className: "md-file-view md-atom-view",
2308
2318
  children: [/* @__PURE__ */ jsxs("span", {
@@ -2487,7 +2497,8 @@ function wrapMark(mark, children, context) {
2487
2497
  event.preventDefault();
2488
2498
  context.onLinkClick?.({
2489
2499
  href: attrs.href,
2490
- event: event.nativeEvent
2500
+ event: event.nativeEvent,
2501
+ mod: isModEvent(event)
2491
2502
  });
2492
2503
  } : void 0;
2493
2504
  return /* @__PURE__ */ jsx("a", {
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@meowdown/react",
3
3
  "type": "module",
4
- "version": "0.64.3",
4
+ "version": "0.65.1",
5
5
  "license": "MIT",
6
6
  "repository": {
7
7
  "type": "git",
@@ -31,7 +31,7 @@
31
31
  "github-slugger": "^2.0.0",
32
32
  "lucide-react": "^1.28.0",
33
33
  "react-property": "^2.0.2",
34
- "@meowdown/core": "0.64.3"
34
+ "@meowdown/core": "0.65.1"
35
35
  },
36
36
  "peerDependencies": {
37
37
  "react": "^19.0.0",