@meowdown/react 0.46.1 → 0.48.0

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
@@ -333,6 +333,11 @@ interface EditorProps {
333
333
  * Off by default.
334
334
  */
335
335
  bulletAfterHeading?: boolean;
336
+ /**
337
+ * Replaces typed character sequences with their typographic equivalents,
338
+ * e.g. `->` with `→` and `(c)` with `©`. On by default.
339
+ */
340
+ substitution?: boolean;
336
341
  /** Handles a leading `---` frontmatter block (off by default). */
337
342
  frontmatter?: boolean;
338
343
  /**
@@ -369,7 +374,7 @@ interface EditorProps {
369
374
  /** Nodes rendered inside the editor's ProseKit context. */
370
375
  children?: ReactNode;
371
376
  }
372
- declare function MeowdownEditor({ mode, initialMarkdown, onDocChange, onSlashMenuSearch, onTagSearch, onWikilinkSearch, onSelectionMenuSearch, selectionMenuAffordance, pendingReplacementActions, onPendingReplacementResolve, onWikilinkClick, onLinkClick, onLinkCopy, onTagClick, onExitBoundary, resolveImageUrl, resolveFileLink, resolveFileInfo, onFileClick, onFilePaste, onFileSaveError, onImageClick, embedPaste, linkPaste, bulletAfterHeading, frontmatter, blockHandle, placeholder, readOnly, spellCheck, timeFormat, editorClassName, wrapperClassName, handleRef, children }: EditorProps): import("react").JSX.Element;
377
+ declare function MeowdownEditor({ mode, initialMarkdown, onDocChange, onSlashMenuSearch, onTagSearch, onWikilinkSearch, onSelectionMenuSearch, selectionMenuAffordance, pendingReplacementActions, onPendingReplacementResolve, onWikilinkClick, onLinkClick, onLinkCopy, onTagClick, onExitBoundary, resolveImageUrl, resolveFileLink, resolveFileInfo, onFileClick, onFilePaste, onFileSaveError, onImageClick, embedPaste, linkPaste, bulletAfterHeading, substitution, frontmatter, blockHandle, placeholder, readOnly, spellCheck, timeFormat, editorClassName, wrapperClassName, handleRef, children }: EditorProps): import("react").JSX.Element;
373
378
  //#endregion
374
379
  //#region src/components/markdown-view.d.ts
375
380
  /** Payload for {@link TaskClickHandler}. */
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { clsx } from "clsx/lite";
2
2
  import { Fragment, cloneElement, createElement, useCallback, useEffect, useImperativeHandle, useLayoutEffect, useMemo, useRef, useState } from "react";
3
- import { buildFileMarkdown, codeBlockLanguages, defaultResolveImageUrl, defineBulletAfterHeading, defineCodeBlockPreviewPlugin, defineEditorExtension, defineEmbedPaste, defineExitBoundaryHandler, defineFileClickHandler, defineFilePaste, defineFileView, defineFollowLinkHandler, defineHTMLPaste, defineImage, defineImageClickHandler, defineLinkClickHandler, defineLinkEditKeymap, defineLinkHoverHandler, defineLinkPaste, defineMarkdownCopy, definePendingReplacementHandler, definePlaceholder, defineReadonly, defineSpellCheckPlugin, defineTagClickHandler, defineWikilinkClickHandler, defineWikilinkHoverHandler, defineWikilinkTrigger, docToMarkdown, getCodeTokens, getMarkBuilders, getPendingReplacement, getSelectedText, getTableColumnAlign, getVirtualElementFromRange, inlineTextToMarkChunks, isCodeBlockPreviewHiddenDecoration, isSelectionInTableCell, listenForTweetHeight, loadKaTeX, markdownToDoc, matchEmbed, renderMathInto } from "@meowdown/core";
3
+ import { buildFileMarkdown, codeBlockLanguages, defaultResolveImageUrl, defineBulletAfterHeading, defineCodeBlockPreviewPlugin, defineEditorExtension, defineEmbedPaste, defineExitBoundaryHandler, defineFileClickHandler, defineFilePaste, defineFileView, defineFollowLinkHandler, defineImage, defineImageClickHandler, defineLinkClickHandler, defineLinkEditKeymap, defineLinkHoverHandler, defineLinkPaste, definePendingReplacementHandler, definePlaceholder, defineReadonly, defineSpellCheckPlugin, defineSubstitution, defineTagClickHandler, defineWikilinkClickHandler, defineWikilinkHoverHandler, defineWikilinkTrigger, docToMarkdown, getCodeTokens, getMarkBuilders, getPendingReplacement, getSelectedText, getTableColumnAlign, getVirtualElementFromRange, inlineTextToMarkChunks, isCodeBlockPreviewHiddenDecoration, 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";
@@ -295,7 +295,7 @@ function DropIndicator$1() {
295
295
 
296
296
  //#endregion
297
297
  //#region src/components/editor-extensions.tsx
298
- function EditorExtensions({ markMode, onDocChange, onWikilinkClick, onLinkClick, onTagClick, onExitBoundary, resolveImageUrl, resolveFileInfo, onFileClick, onFilePaste, onFileSaveError, onImageClick, embedPaste, linkPaste, bulletAfterHeading, placeholder, readOnly, wikilinkEnabled, spellCheck }) {
298
+ function EditorExtensions({ markMode, onDocChange, onWikilinkClick, onLinkClick, onTagClick, onExitBoundary, resolveImageUrl, resolveFileInfo, onFileClick, onFilePaste, onFileSaveError, onImageClick, embedPaste, linkPaste, bulletAfterHeading, substitution, placeholder, readOnly, wikilinkEnabled, spellCheck }) {
299
299
  const editor = useEditor$1();
300
300
  useEffect(() => {
301
301
  editor.commands.setMarkMode(markMode);
@@ -355,15 +355,12 @@ function EditorExtensions({ markMode, onDocChange, onWikilinkClick, onLinkClick,
355
355
  useExtension$1(useMemo(() => {
356
356
  return linkPaste ? defineLinkPaste() : null;
357
357
  }, [linkPaste]));
358
- useExtension$1(useMemo(() => {
359
- return defineHTMLPaste();
360
- }, []));
361
- useExtension$1(useMemo(() => {
362
- return defineMarkdownCopy();
363
- }, []));
364
358
  useExtension$1(useMemo(() => {
365
359
  return bulletAfterHeading ? defineBulletAfterHeading() : null;
366
360
  }, [bulletAfterHeading]));
361
+ useExtension$1(useMemo(() => {
362
+ return substitution ? defineSubstitution() : null;
363
+ }, [substitution]));
367
364
  useExtension$1(useMemo(() => {
368
365
  return placeholder ? definePlaceholder({
369
366
  placeholder,
@@ -1548,7 +1545,7 @@ function resolveSelection(doc, selection) {
1548
1545
  return TextSelection.between(doc.resolve(anchor), doc.resolve(head));
1549
1546
  }
1550
1547
  }
1551
- function ProseKitEditor({ markMode = "focus", initialMarkdown, onDocChange, onSlashMenuSearch, onTagSearch, onWikilinkSearch, onSelectionMenuSearch, selectionMenuAffordance = true, pendingReplacementActions, onPendingReplacementResolve, onWikilinkClick, onLinkClick, onLinkCopy, onTagClick, onExitBoundary, resolveImageUrl, resolveFileLink, resolveFileInfo, onFileClick, onFilePaste, onFileSaveError, onImageClick, embedPaste, linkPaste, bulletAfterHeading, frontmatter = false, blockHandle = true, placeholder, readOnly, spellCheck, timeFormat, editorClassName, ref, children }) {
1548
+ function ProseKitEditor({ markMode = "focus", initialMarkdown, onDocChange, onSlashMenuSearch, onTagSearch, onWikilinkSearch, onSelectionMenuSearch, selectionMenuAffordance = true, pendingReplacementActions, onPendingReplacementResolve, onWikilinkClick, onLinkClick, onLinkCopy, onTagClick, onExitBoundary, resolveImageUrl, resolveFileLink, resolveFileInfo, onFileClick, onFilePaste, onFileSaveError, onImageClick, embedPaste, linkPaste, bulletAfterHeading, substitution = true, frontmatter = false, blockHandle = true, placeholder, readOnly, spellCheck, timeFormat, editorClassName, ref, children }) {
1552
1549
  const [editor] = useState(() => {
1553
1550
  const editor = createEditor({ extension: union(defineEditorExtension({
1554
1551
  resolveFileLink,
@@ -1693,6 +1690,7 @@ function ProseKitEditor({ markMode = "focus", initialMarkdown, onDocChange, onSl
1693
1690
  embedPaste,
1694
1691
  linkPaste,
1695
1692
  bulletAfterHeading,
1693
+ substitution,
1696
1694
  placeholder,
1697
1695
  readOnly,
1698
1696
  wikilinkEnabled: !!onWikilinkSearch,
@@ -1731,7 +1729,7 @@ function ProseKitEditor({ markMode = "focus", initialMarkdown, onDocChange, onSl
1731
1729
 
1732
1730
  //#endregion
1733
1731
  //#region src/components/editor.tsx
1734
- function MeowdownEditor({ mode = "focus", initialMarkdown, onDocChange, onSlashMenuSearch, onTagSearch, onWikilinkSearch, onSelectionMenuSearch, selectionMenuAffordance = true, pendingReplacementActions, onPendingReplacementResolve, onWikilinkClick, onLinkClick, onLinkCopy, onTagClick, onExitBoundary, resolveImageUrl, resolveFileLink, resolveFileInfo, onFileClick, onFilePaste, onFileSaveError, onImageClick, embedPaste = true, linkPaste = true, bulletAfterHeading = false, frontmatter = false, blockHandle = true, placeholder, readOnly, spellCheck, timeFormat, editorClassName, wrapperClassName, handleRef, children }) {
1732
+ function MeowdownEditor({ mode = "focus", initialMarkdown, onDocChange, onSlashMenuSearch, onTagSearch, onWikilinkSearch, onSelectionMenuSearch, selectionMenuAffordance = true, pendingReplacementActions, onPendingReplacementResolve, onWikilinkClick, onLinkClick, onLinkCopy, onTagClick, onExitBoundary, resolveImageUrl, resolveFileLink, resolveFileInfo, onFileClick, onFilePaste, onFileSaveError, onImageClick, embedPaste = true, linkPaste = true, bulletAfterHeading = false, substitution = true, frontmatter = false, blockHandle = true, placeholder, readOnly, spellCheck, timeFormat, editorClassName, wrapperClassName, handleRef, children }) {
1735
1733
  const childRef = useRef(null);
1736
1734
  useImperativeHandle(handleRef, () => {
1737
1735
  function getMarkdown() {
@@ -1837,6 +1835,7 @@ function MeowdownEditor({ mode = "focus", initialMarkdown, onDocChange, onSlashM
1837
1835
  embedPaste,
1838
1836
  linkPaste,
1839
1837
  bulletAfterHeading,
1838
+ substitution,
1840
1839
  frontmatter,
1841
1840
  blockHandle,
1842
1841
  placeholder,
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@meowdown/react",
3
3
  "type": "module",
4
- "version": "0.46.1",
4
+ "version": "0.48.0",
5
5
  "license": "MIT",
6
6
  "repository": {
7
7
  "type": "git",
@@ -24,9 +24,9 @@
24
24
  "@prosekit/pm": "^0.1.19-beta.3",
25
25
  "@prosekit/react": "^0.8.0-beta.21",
26
26
  "clsx": "^2.1.1",
27
- "lucide-react": "^1.21.0",
27
+ "lucide-react": "^1.24.0",
28
28
  "react-property": "^2.0.2",
29
- "@meowdown/core": "0.46.1"
29
+ "@meowdown/core": "0.48.0"
30
30
  },
31
31
  "peerDependencies": {
32
32
  "react": "^19.0.0",
@@ -41,17 +41,17 @@
41
41
  }
42
42
  },
43
43
  "devDependencies": {
44
- "@css-modules-kit/codegen": "^1.3.0",
44
+ "@css-modules-kit/codegen": "^1.4.0",
45
45
  "@ocavue/tsconfig": "^0.7.1",
46
- "@tsdown/css": "^0.22.3",
46
+ "@tsdown/css": "^0.22.7",
47
47
  "@types/react": "^19.2.17",
48
48
  "@types/react-dom": "^19.2.3",
49
- "@vitest/browser-playwright": "^4.1.9",
49
+ "@vitest/browser-playwright": "^4.1.10",
50
50
  "dedent": "^1.7.2",
51
51
  "react": "^19.2.7",
52
52
  "react-dom": "^19.2.7",
53
- "tsdown": "^0.22.3",
54
- "vitest": "^4.1.9",
53
+ "tsdown": "^0.22.7",
54
+ "vitest": "^4.1.10",
55
55
  "vitest-browser-commands": "^0.2.1",
56
56
  "vitest-browser-react": "^2.2.0",
57
57
  "@meowdown/vitest": "0.0.0"