@meowdown/react 0.71.1 → 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 +2 -1
- package/dist/index.js +13 -29
- package/package.json +10 -9
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
|
|
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,
|
|
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
|
|
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
|
|
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
|
|
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 =
|
|
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
|
|
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) =>
|
|
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.
|
|
4
|
+
"version": "0.71.3",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
7
7
|
"type": "git",
|
|
@@ -21,9 +21,9 @@
|
|
|
21
21
|
"./dist/**/*.css"
|
|
22
22
|
],
|
|
23
23
|
"dependencies": {
|
|
24
|
-
"@base-ui/react": "^1.
|
|
24
|
+
"@base-ui/react": "^1.8.0",
|
|
25
25
|
"@ocavue/utils": "^1.8.0",
|
|
26
|
-
"@post-embed/elements": "^0.
|
|
26
|
+
"@post-embed/elements": "^0.5.0",
|
|
27
27
|
"@post-embed/types": "^0.4.0",
|
|
28
28
|
"@prosekit/core": "^0.13.2",
|
|
29
29
|
"@prosekit/pm": "^0.1.19",
|
|
@@ -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.
|
|
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
|
|
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.
|
|
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
|
|
61
|
-
"vitest": "^5.0.
|
|
61
|
+
"tsdown": "^0.23.0",
|
|
62
|
+
"vitest": "^5.0.1",
|
|
62
63
|
"vitest-browser-commands": "^0.4.1",
|
|
63
|
-
"vitest-browser-react": "^2.
|
|
64
|
+
"vitest-browser-react": "^2.3.0",
|
|
64
65
|
"@meowdown/vitest": "0.0.0"
|
|
65
66
|
},
|
|
66
67
|
"publishConfig": {
|