@meowdown/react 0.71.2 → 0.71.3

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
@@ -706,7 +706,8 @@ interface WikilinkHoverCardProps {
706
706
  readonly className?: string;
707
707
  }
708
708
  /**
709
- * Show host-rendered content after a 300ms dwell over a rendered wiki link.
709
+ * Show host-rendered content for the wiki link the pointer rests on. The
710
+ * open and close delays live in the core hover handler.
710
711
  */
711
712
  export declare function WikilinkHoverCard({ children, className }: WikilinkHoverCardProps): ReactNode;
712
713
  //#endregion
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { clsx } from "clsx/lite";
2
2
  import { Fragment, cloneElement, createElement, memo, useCallback, useDeferredValue, useEffect, useImperativeHandle, useLayoutEffect, useMemo, useRef, useState } from "react";
3
- import { buildFileMarkdown, codeBlockLanguages, collectReferenceDefinitions, defaultResolveImageUrl, defaultResolveXPost, defaultResolveYouTubeVideo, defineCodeBlockPreviewPlugin, defineEditorExtension, defineLinkEditKeymap, defineLinkHoverHandler, definePendingReplacementHandler, defineSearchStatusHandler, defineVirtualCaret, defineWikilinkHoverHandler, docToMarkdown, formatFileSize, getCodeTokens, getFileKind, getLinkText, getMarkBuilders, getPendingReplacement, getSearchStatus, getSelectedText, getTableColumnAlign, getTextblockDisplayText, getVirtualElementFromRange, inlineTextToMarkChunksWithContext, isCodeBlockPreviewHiddenDecoration, isLinkTextForHref, isModEvent, isNodeOfType, isReferenceDefinitionNode, isSelectionInTableCell, loadKaTeX, markdownToDoc, matchPostEmbed, normalizeHref, parsePostEmbedSnapshot, renderMathInto, updateEditorConfig } from "@meowdown/core";
3
+ import { buildFileMarkdown, codeBlockLanguages, collectReferenceDefinitions, defaultResolveImageUrl, defaultResolveXPost, defaultResolveYouTubeVideo, defineCodeBlockPreviewPlugin, defineEditorExtension, defineLinkEditKeymap, defineLinkHoverHandler, definePendingReplacementHandler, defineSearchStatusHandler, defineVirtualCaret, defineWikilinkHoverHandler, docToMarkdown, formatFileSize, getCodeTokens, getFileKind, getLinkText, getMarkBuilders, getPendingReplacement, getSearchStatus, getSelectedText, getTableColumnAlign, getTextblockDisplayText, getVirtualElementFromRange, inlineTextToMarkChunksWithContext, isCodeBlockPreviewHiddenDecoration, isLinkTextForHref, isModEvent, isNodeOfType, isReferenceDefinitionNode, isSelectionInTableCell, loadKaTeX, markdownToDoc, normalizeHref, parsePostEmbedSnapshot, renderMathInto, updateEditorConfig } 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";
@@ -15,6 +15,7 @@ import { Popover } from "@base-ui/react/popover";
15
15
  import { AutocompleteEmpty, AutocompleteItem, AutocompletePopup, AutocompletePositioner, AutocompleteRoot } from "@prosekit/react/autocomplete";
16
16
  import { MenuItem, MenuPopup, MenuPositioner } from "@prosekit/react/menu";
17
17
  import { TableHandleColumnMenuRoot, TableHandleColumnMenuTrigger, TableHandleColumnPopup, TableHandleColumnPositioner, TableHandleDragPreview, TableHandleDropIndicator, TableHandleRoot, TableHandleRowMenuRoot, TableHandleRowMenuTrigger, TableHandleRowPopup, TableHandleRowPositioner } from "@prosekit/react/table-handle";
18
+ import { matchEmbed } from "@meowdown/markdown";
18
19
  import { registerXPost } from "@post-embed/elements/x";
19
20
  import { registerYouTubeVideo } from "@post-embed/elements/youtube";
20
21
  import { Mark } from "@prosekit/pm/model";
@@ -1010,18 +1011,18 @@ function PendingReplacementPreview({ actions, onResolve }) {
1010
1011
  /**
1011
1012
  * Delay before the flag opens, in ms.
1012
1013
  */
1013
- const OPEN_DELAY$1 = 300;
1014
+ const OPEN_DELAY = 300;
1014
1015
  /**
1015
1016
  * Grace before the flag closes, in ms. The window lets a pointer travel from
1016
1017
  * the hovered link onto the popover it anchors.
1017
1018
  */
1018
- const CLOSE_DELAY$1 = 100;
1019
+ const CLOSE_DELAY = 100;
1019
1020
  /**
1020
1021
  * Mirrors `value` into a boolean that flips true `openDelay`ms after `value`
1021
1022
  * becomes true and false `closeDelay`ms after it becomes false, cancelling any
1022
1023
  * pending flip on each change.
1023
1024
  */
1024
- function useDelayedFlag(value, openDelay = OPEN_DELAY$1, closeDelay = CLOSE_DELAY$1) {
1025
+ function useDelayedFlag(value, openDelay = OPEN_DELAY, closeDelay = CLOSE_DELAY) {
1025
1026
  const [flag, setFlag] = useState(false);
1026
1027
  const timerRef = useRef(void 0);
1027
1028
  useEffect(() => {
@@ -2406,7 +2407,7 @@ function PostEmbed(props) {
2406
2407
  }
2407
2408
  function ImagePreview(props) {
2408
2409
  const { src, alt, width, snapshot, resolveImageUrl, resolveXPost, mediaUrlProtocols, resolveYouTubeVideo, onImageClick, interactive } = props;
2409
- const kind = matchPostEmbed(src);
2410
+ const kind = matchEmbed(src);
2410
2411
  if (kind) {
2411
2412
  if (!interactive) return null;
2412
2413
  return /* @__PURE__ */ jsx(PostEmbed, {
@@ -2926,10 +2927,9 @@ var wikilink_hover_card_module_default = {
2926
2927
 
2927
2928
  //#endregion
2928
2929
  //#region src/components/wikilink-hover-card.tsx
2929
- const OPEN_DELAY = 300;
2930
- const CLOSE_DELAY = 100;
2931
2930
  /**
2932
- * Show host-rendered content after a 300ms dwell over a rendered wiki link.
2931
+ * Show host-rendered content for the wiki link the pointer rests on. The
2932
+ * open and close delays live in the core hover handler.
2933
2933
  */
2934
2934
  function WikilinkHoverCard({ children, className }) {
2935
2935
  const [hit, setHit] = useState();
@@ -2938,7 +2938,11 @@ function WikilinkHoverCard({ children, className }) {
2938
2938
  const [open, setOpen] = useState(false);
2939
2939
  const [body, setBody] = useState(null);
2940
2940
  const [hoverExtension] = useState(() => {
2941
- return defineWikilinkHoverHandler((nextHit) => setHit(nextHit));
2941
+ return defineWikilinkHoverHandler((nextHit) => {
2942
+ setHit(nextHit);
2943
+ setOpen(nextHit != null);
2944
+ if (nextHit) setDisplayed(nextHit);
2945
+ });
2942
2946
  });
2943
2947
  useExtension$1(hoverExtension);
2944
2948
  const getRect = useCallback(() => {
@@ -2966,26 +2970,6 @@ function WikilinkHoverCard({ children, className }) {
2966
2970
  stale = true;
2967
2971
  };
2968
2972
  }, [children, displayed]);
2969
- const hasDisplayed = !!displayed;
2970
- const hasBody = body != null;
2971
- useEffect(() => {
2972
- if (!hit) {
2973
- const timer = setTimeout(() => {
2974
- setOpen(false);
2975
- if (!hasBody) setDisplayed(void 0);
2976
- }, hasBody ? CLOSE_DELAY : 0);
2977
- return () => clearTimeout(timer);
2978
- }
2979
- const timer = setTimeout(() => {
2980
- setDisplayed(hit);
2981
- setOpen(true);
2982
- }, hasDisplayed ? 0 : OPEN_DELAY);
2983
- return () => clearTimeout(timer);
2984
- }, [
2985
- hit,
2986
- hasDisplayed,
2987
- hasBody
2988
- ]);
2989
2973
  return /* @__PURE__ */ jsx(PreviewCard.Root, {
2990
2974
  open: open && body != null,
2991
2975
  onOpenChange: (nextOpen) => {
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@meowdown/react",
3
3
  "type": "module",
4
- "version": "0.71.2",
4
+ "version": "0.71.3",
5
5
  "license": "MIT",
6
6
  "repository": {
7
7
  "type": "git",
@@ -21,7 +21,7 @@
21
21
  "./dist/**/*.css"
22
22
  ],
23
23
  "dependencies": {
24
- "@base-ui/react": "^1.7.0",
24
+ "@base-ui/react": "^1.8.0",
25
25
  "@ocavue/utils": "^1.8.0",
26
26
  "@post-embed/elements": "^0.5.0",
27
27
  "@post-embed/types": "^0.4.0",
@@ -33,7 +33,8 @@
33
33
  "github-slugger": "^2.0.0",
34
34
  "lucide-react": "^1.38.0",
35
35
  "react-property": "^2.0.2",
36
- "@meowdown/core": "0.71.2"
36
+ "@meowdown/core": "0.72.0",
37
+ "@meowdown/markdown": "0.72.0"
37
38
  },
38
39
  "peerDependencies": {
39
40
  "react": "^19.0.0",
@@ -50,17 +51,17 @@
50
51
  "devDependencies": {
51
52
  "@css-modules-kit/codegen": "^1.4.0",
52
53
  "@ocavue/tsconfig": "^0.7.1",
53
- "@tsdown/css": "^0.23.0-rc.1",
54
+ "@tsdown/css": "^0.23.0",
54
55
  "@types/react": "^19.3.0",
55
56
  "@types/react-dom": "^19.3.0",
56
- "@vitest/browser-playwright": "^5.0.0",
57
+ "@vitest/browser-playwright": "^5.0.1",
57
58
  "dedent": "^1.7.2",
58
59
  "react": "^19.3.0",
59
60
  "react-dom": "^19.3.0",
60
- "tsdown": "^0.23.0-rc.1",
61
- "vitest": "^5.0.0",
61
+ "tsdown": "^0.23.0",
62
+ "vitest": "^5.0.1",
62
63
  "vitest-browser-commands": "^0.4.1",
63
- "vitest-browser-react": "^2.2.0",
64
+ "vitest-browser-react": "^2.3.0",
64
65
  "@meowdown/vitest": "0.0.0"
65
66
  },
66
67
  "publishConfig": {