@haklex/rich-renderers-edit 0.0.79 → 0.0.81
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/alert.mjs +1 -3
- package/dist/banner.mjs +1 -3
- package/dist/code-snippet.mjs +1 -7
- package/dist/codeblock.mjs +1 -3
- package/dist/config-DAL05ZYj.js +135 -0
- package/dist/config.mjs +2 -16
- package/dist/embed.mjs +1 -8
- package/dist/excalidraw.mjs +1 -5
- package/dist/index.mjs +3 -55
- package/dist/mention.mjs +1 -3
- package/dist/mermaid.mjs +1 -3
- package/dist/slash-menu.mjs +1 -6
- package/package.json +20 -20
- package/dist/config-B6vDEQ9v.js +0 -144
package/dist/alert.mjs
CHANGED
package/dist/banner.mjs
CHANGED
package/dist/code-snippet.mjs
CHANGED
|
@@ -1,8 +1,2 @@
|
|
|
1
1
|
import { $createCodeSnippetEditNode, $isCodeSnippetEditNode, CodeSnippetEditNode, CodeSnippetEditRenderer, codeSnippetEditNodes } from "@haklex/rich-ext-code-snippet";
|
|
2
|
-
export {
|
|
3
|
-
$createCodeSnippetEditNode,
|
|
4
|
-
$isCodeSnippetEditNode,
|
|
5
|
-
CodeSnippetEditNode,
|
|
6
|
-
CodeSnippetEditRenderer,
|
|
7
|
-
codeSnippetEditNodes
|
|
8
|
-
};
|
|
2
|
+
export { $createCodeSnippetEditNode, $isCodeSnippetEditNode, CodeSnippetEditNode, CodeSnippetEditRenderer, codeSnippetEditNodes };
|
package/dist/codeblock.mjs
CHANGED
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
import { CodeSnippetEditRenderer } from "@haklex/rich-ext-code-snippet";
|
|
2
|
+
import { AlertEditRenderer } from "@haklex/rich-renderer-alert";
|
|
3
|
+
import { BannerEditRenderer } from "@haklex/rich-renderer-banner";
|
|
4
|
+
import { CodeBlockEditRenderer } from "@haklex/rich-renderer-codeblock";
|
|
5
|
+
import { ImageEditRenderer } from "@haklex/rich-renderer-image";
|
|
6
|
+
import { MentionEditRenderer } from "@haklex/rich-renderer-mention";
|
|
7
|
+
import { MermaidEditRenderer } from "@haklex/rich-renderer-mermaid";
|
|
8
|
+
import { RubyEditRenderer } from "@haklex/rich-renderer-ruby";
|
|
9
|
+
import { useRendererMode } from "@haklex/rich-editor";
|
|
10
|
+
import { TagRenderer, getTagBgColor } from "@haklex/rich-editor/static";
|
|
11
|
+
import { useLexicalComposerContext } from "@lexical/react/LexicalComposerContext";
|
|
12
|
+
import { $getNearestNodeFromDOMNode } from "lexical";
|
|
13
|
+
import { useCallback, useEffect, useRef, useState } from "react";
|
|
14
|
+
import { jsx } from "react/jsx-runtime";
|
|
15
|
+
import { VideoEditRenderer } from "@haklex/rich-renderer-video";
|
|
16
|
+
import { GalleryEditRenderer } from "@haklex/rich-ext-gallery";
|
|
17
|
+
import { FootnoteRenderer } from "@haklex/rich-editor/renderers";
|
|
18
|
+
import { enhancedRendererConfig } from "@haklex/rich-renderers";
|
|
19
|
+
//#region src/TagEditRenderer.tsx
|
|
20
|
+
function TagEditRenderer(props) {
|
|
21
|
+
if (useRendererMode() !== "editor") return /* @__PURE__ */ jsx(TagRenderer, { ...props });
|
|
22
|
+
return /* @__PURE__ */ jsx(TagEditRendererInner, { ...props });
|
|
23
|
+
}
|
|
24
|
+
function TagEditRendererInner({ text }) {
|
|
25
|
+
const [editor] = useLexicalComposerContext();
|
|
26
|
+
const editable = editor.isEditable();
|
|
27
|
+
const wrapperRef = useRef(null);
|
|
28
|
+
const inputRef = useRef(null);
|
|
29
|
+
const [editing, setEditing] = useState(false);
|
|
30
|
+
const [editText, setEditText] = useState(text);
|
|
31
|
+
useEffect(() => {
|
|
32
|
+
setEditText(text);
|
|
33
|
+
}, [text]);
|
|
34
|
+
useEffect(() => {
|
|
35
|
+
if (editing) requestAnimationFrame(() => inputRef.current?.focus());
|
|
36
|
+
}, [editing]);
|
|
37
|
+
const commitChanges = useCallback(() => {
|
|
38
|
+
const trimmed = editText.trim();
|
|
39
|
+
if (!trimmed || trimmed === text) {
|
|
40
|
+
setEditText(text);
|
|
41
|
+
setEditing(false);
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
if (!wrapperRef.current) return;
|
|
45
|
+
editor.update(() => {
|
|
46
|
+
const node = $getNearestNodeFromDOMNode(wrapperRef.current);
|
|
47
|
+
if (!node) return;
|
|
48
|
+
const writable = node.getWritable();
|
|
49
|
+
writable.__text = trimmed;
|
|
50
|
+
});
|
|
51
|
+
setEditing(false);
|
|
52
|
+
}, [
|
|
53
|
+
editor,
|
|
54
|
+
editText,
|
|
55
|
+
text
|
|
56
|
+
]);
|
|
57
|
+
const handleKeyDown = useCallback((e) => {
|
|
58
|
+
e.stopPropagation();
|
|
59
|
+
if (e.key === "Enter") {
|
|
60
|
+
e.preventDefault();
|
|
61
|
+
commitChanges();
|
|
62
|
+
} else if (e.key === "Escape") {
|
|
63
|
+
e.preventDefault();
|
|
64
|
+
setEditText(text);
|
|
65
|
+
setEditing(false);
|
|
66
|
+
}
|
|
67
|
+
}, [commitChanges, text]);
|
|
68
|
+
if (!editable) return /* @__PURE__ */ jsx(TagRenderer, { text });
|
|
69
|
+
const bgColor = getTagBgColor(editing ? editText : text);
|
|
70
|
+
if (editing) return /* @__PURE__ */ jsx("span", {
|
|
71
|
+
className: "rich-tag",
|
|
72
|
+
ref: wrapperRef,
|
|
73
|
+
style: {
|
|
74
|
+
backgroundColor: bgColor,
|
|
75
|
+
display: "inline-flex",
|
|
76
|
+
alignItems: "center"
|
|
77
|
+
},
|
|
78
|
+
children: /* @__PURE__ */ jsx("input", {
|
|
79
|
+
ref: inputRef,
|
|
80
|
+
style: {
|
|
81
|
+
appearance: "none",
|
|
82
|
+
border: "none",
|
|
83
|
+
backgroundColor: "transparent",
|
|
84
|
+
color: "inherit",
|
|
85
|
+
font: "inherit",
|
|
86
|
+
fontSize: "inherit",
|
|
87
|
+
lineHeight: "inherit",
|
|
88
|
+
padding: 0,
|
|
89
|
+
margin: 0,
|
|
90
|
+
outline: "none",
|
|
91
|
+
width: `${Math.max(editText.length, 1)}ch`,
|
|
92
|
+
minWidth: "2ch"
|
|
93
|
+
},
|
|
94
|
+
type: "text",
|
|
95
|
+
value: editText,
|
|
96
|
+
onBlur: commitChanges,
|
|
97
|
+
onChange: (e) => setEditText(e.target.value),
|
|
98
|
+
onKeyDown: handleKeyDown,
|
|
99
|
+
onMouseDown: (e) => e.stopPropagation()
|
|
100
|
+
})
|
|
101
|
+
});
|
|
102
|
+
return /* @__PURE__ */ jsx("span", {
|
|
103
|
+
className: "rich-tag",
|
|
104
|
+
ref: wrapperRef,
|
|
105
|
+
style: {
|
|
106
|
+
backgroundColor: bgColor,
|
|
107
|
+
cursor: "pointer"
|
|
108
|
+
},
|
|
109
|
+
onClick: (e) => {
|
|
110
|
+
e.preventDefault();
|
|
111
|
+
e.stopPropagation();
|
|
112
|
+
setEditing(true);
|
|
113
|
+
},
|
|
114
|
+
children: text
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
//#endregion
|
|
118
|
+
//#region src/config.ts
|
|
119
|
+
var enhancedEditRendererConfig = {
|
|
120
|
+
...enhancedRendererConfig,
|
|
121
|
+
Alert: AlertEditRenderer,
|
|
122
|
+
Banner: BannerEditRenderer,
|
|
123
|
+
CodeBlock: CodeBlockEditRenderer,
|
|
124
|
+
Footnote: FootnoteRenderer,
|
|
125
|
+
Gallery: GalleryEditRenderer,
|
|
126
|
+
Image: ImageEditRenderer,
|
|
127
|
+
Mention: MentionEditRenderer,
|
|
128
|
+
Ruby: RubyEditRenderer,
|
|
129
|
+
Mermaid: MermaidEditRenderer,
|
|
130
|
+
Tag: TagEditRenderer,
|
|
131
|
+
Video: VideoEditRenderer,
|
|
132
|
+
CodeSnippet: CodeSnippetEditRenderer
|
|
133
|
+
};
|
|
134
|
+
//#endregion
|
|
135
|
+
export { TagEditRenderer as n, enhancedEditRendererConfig as t };
|
package/dist/config.mjs
CHANGED
|
@@ -1,16 +1,2 @@
|
|
|
1
|
-
import "
|
|
2
|
-
|
|
3
|
-
import "@haklex/rich-ext-gallery";
|
|
4
|
-
import "@haklex/rich-renderer-alert";
|
|
5
|
-
import "@haklex/rich-renderer-banner";
|
|
6
|
-
import "@haklex/rich-renderer-codeblock";
|
|
7
|
-
import "@haklex/rich-renderer-image";
|
|
8
|
-
import "@haklex/rich-renderer-mention";
|
|
9
|
-
import "@haklex/rich-renderer-mermaid";
|
|
10
|
-
import "@haklex/rich-renderer-ruby";
|
|
11
|
-
import "@haklex/rich-renderer-video";
|
|
12
|
-
import "@haklex/rich-renderers";
|
|
13
|
-
import { e } from "./config-B6vDEQ9v.js";
|
|
14
|
-
export {
|
|
15
|
-
e as enhancedEditRendererConfig
|
|
16
|
-
};
|
|
1
|
+
import { t as enhancedEditRendererConfig } from "./config-DAL05ZYj.js";
|
|
2
|
+
export { enhancedEditRendererConfig };
|
package/dist/embed.mjs
CHANGED
|
@@ -1,9 +1,2 @@
|
|
|
1
1
|
import { $createEmbedEditNode, $isEmbedEditNode, EmbedEditNode, EmbedPlugin, INSERT_EMBED_COMMAND, embedEditNodes } from "@haklex/rich-ext-embed";
|
|
2
|
-
export {
|
|
3
|
-
$createEmbedEditNode,
|
|
4
|
-
$isEmbedEditNode,
|
|
5
|
-
EmbedEditNode,
|
|
6
|
-
EmbedPlugin,
|
|
7
|
-
INSERT_EMBED_COMMAND,
|
|
8
|
-
embedEditNodes
|
|
9
|
-
};
|
|
2
|
+
export { $createEmbedEditNode, $isEmbedEditNode, EmbedEditNode, EmbedPlugin, INSERT_EMBED_COMMAND, embedEditNodes };
|
package/dist/excalidraw.mjs
CHANGED
|
@@ -1,6 +1,2 @@
|
|
|
1
1
|
import { ExcalidrawEditRenderer, ExcalidrawPlugin, INSERT_EXCALIDRAW_COMMAND } from "@haklex/rich-ext-excalidraw";
|
|
2
|
-
export {
|
|
3
|
-
ExcalidrawEditRenderer,
|
|
4
|
-
ExcalidrawPlugin,
|
|
5
|
-
INSERT_EXCALIDRAW_COMMAND
|
|
6
|
-
};
|
|
2
|
+
export { ExcalidrawEditRenderer, ExcalidrawPlugin, INSERT_EXCALIDRAW_COMMAND };
|
package/dist/index.mjs
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { n as TagEditRenderer, t as enhancedEditRendererConfig } from "./config-DAL05ZYj.js";
|
|
1
2
|
import { $createCodeSnippetEditNode, $isCodeSnippetEditNode, CodeSnippetEditNode, CodeSnippetEditRenderer, codeSnippetEditNodes } from "@haklex/rich-ext-code-snippet";
|
|
2
3
|
import { AlertEditRenderer } from "@haklex/rich-renderer-alert";
|
|
3
4
|
import { BannerEditRenderer } from "@haklex/rich-renderer-banner";
|
|
@@ -6,7 +7,6 @@ import { ImageEditRenderer } from "@haklex/rich-renderer-image";
|
|
|
6
7
|
import { MentionEditRenderer } from "@haklex/rich-renderer-mention";
|
|
7
8
|
import { MermaidEditRenderer } from "@haklex/rich-renderer-mermaid";
|
|
8
9
|
import { RubyEditRenderer } from "@haklex/rich-renderer-ruby";
|
|
9
|
-
import { T, e } from "./config-B6vDEQ9v.js";
|
|
10
10
|
import { VideoEditRenderer } from "@haklex/rich-renderer-video";
|
|
11
11
|
import { $createExcalidrawEditNode, $isExcalidrawEditNode, ExcalidrawEditNode, ExcalidrawEditRenderer, ExcalidrawPlugin, INSERT_EXCALIDRAW_COMMAND } from "@haklex/rich-ext-excalidraw";
|
|
12
12
|
import { $createGalleryEditNode, $isGalleryEditNode, GalleryEditNode, GalleryEditRenderer, galleryEditNodes } from "@haklex/rich-ext-gallery";
|
|
@@ -14,58 +14,6 @@ import { $createEmbedEditNode, $isEmbedEditNode, EmbedEditNode, EmbedPlugin, INS
|
|
|
14
14
|
import { MentionMenuItem, MentionMenuPlugin, builtinPlatforms, getAllPlatforms } from "@haklex/rich-plugin-mention";
|
|
15
15
|
import { SlashMenuItem, SlashMenuList, SlashMenuPlugin, collectNodeSlashItems, getBuiltinItems } from "@haklex/rich-plugin-slash-menu";
|
|
16
16
|
import { BlockHandlePlugin } from "@haklex/rich-plugin-block-handle";
|
|
17
|
-
import { $createLinkCardEditNode, ConvertToLinkCardAction, LinkCardEditNode, PasteLinkCardPlugin, linkCardEditNodes, matchUrl } from "@haklex/rich-renderer-linkcard";
|
|
17
|
+
import { $createLinkCardEditNode, ConvertToLinkCardAction, LinkCardEditNode, PasteLinkCardPlugin, linkCardEditNodes, matchUrl as matchLinkCardUrl } from "@haklex/rich-renderer-linkcard";
|
|
18
18
|
import { KaTeXBlockEditNode, KaTeXInlineEditNode, katexEditNodes } from "@haklex/rich-renderer-katex";
|
|
19
|
-
export {
|
|
20
|
-
$createCodeSnippetEditNode,
|
|
21
|
-
$createEmbedEditNode,
|
|
22
|
-
$createExcalidrawEditNode,
|
|
23
|
-
$createGalleryEditNode,
|
|
24
|
-
$createLinkCardEditNode,
|
|
25
|
-
$isCodeSnippetEditNode,
|
|
26
|
-
$isEmbedEditNode,
|
|
27
|
-
$isExcalidrawEditNode,
|
|
28
|
-
$isGalleryEditNode,
|
|
29
|
-
AlertEditRenderer,
|
|
30
|
-
BannerEditRenderer,
|
|
31
|
-
BlockHandlePlugin,
|
|
32
|
-
CodeBlockEditRenderer,
|
|
33
|
-
CodeSnippetEditNode,
|
|
34
|
-
CodeSnippetEditRenderer,
|
|
35
|
-
ConvertToLinkCardAction,
|
|
36
|
-
EmbedEditNode,
|
|
37
|
-
EmbedPlugin,
|
|
38
|
-
ExcalidrawEditNode,
|
|
39
|
-
ExcalidrawEditRenderer,
|
|
40
|
-
ExcalidrawPlugin,
|
|
41
|
-
GalleryEditNode,
|
|
42
|
-
GalleryEditRenderer,
|
|
43
|
-
INSERT_EMBED_COMMAND,
|
|
44
|
-
INSERT_EXCALIDRAW_COMMAND,
|
|
45
|
-
ImageEditRenderer,
|
|
46
|
-
KaTeXBlockEditNode,
|
|
47
|
-
KaTeXInlineEditNode,
|
|
48
|
-
LinkCardEditNode,
|
|
49
|
-
MentionEditRenderer,
|
|
50
|
-
MentionMenuItem,
|
|
51
|
-
MentionMenuPlugin,
|
|
52
|
-
MermaidEditRenderer,
|
|
53
|
-
PasteLinkCardPlugin,
|
|
54
|
-
RubyEditRenderer,
|
|
55
|
-
SlashMenuItem,
|
|
56
|
-
SlashMenuList,
|
|
57
|
-
SlashMenuPlugin,
|
|
58
|
-
T as TagEditRenderer,
|
|
59
|
-
VideoEditRenderer,
|
|
60
|
-
builtinPlatforms,
|
|
61
|
-
codeSnippetEditNodes,
|
|
62
|
-
collectNodeSlashItems,
|
|
63
|
-
embedEditNodes,
|
|
64
|
-
e as enhancedEditRendererConfig,
|
|
65
|
-
galleryEditNodes,
|
|
66
|
-
getAllPlatforms,
|
|
67
|
-
getBuiltinItems,
|
|
68
|
-
katexEditNodes,
|
|
69
|
-
linkCardEditNodes,
|
|
70
|
-
matchUrl as matchLinkCardUrl
|
|
71
|
-
};
|
|
19
|
+
export { $createCodeSnippetEditNode, $createEmbedEditNode, $createExcalidrawEditNode, $createGalleryEditNode, $createLinkCardEditNode, $isCodeSnippetEditNode, $isEmbedEditNode, $isExcalidrawEditNode, $isGalleryEditNode, AlertEditRenderer, BannerEditRenderer, BlockHandlePlugin, CodeBlockEditRenderer, CodeSnippetEditNode, CodeSnippetEditRenderer, ConvertToLinkCardAction, EmbedEditNode, EmbedPlugin, ExcalidrawEditNode, ExcalidrawEditRenderer, ExcalidrawPlugin, GalleryEditNode, GalleryEditRenderer, INSERT_EMBED_COMMAND, INSERT_EXCALIDRAW_COMMAND, ImageEditRenderer, KaTeXBlockEditNode, KaTeXInlineEditNode, LinkCardEditNode, MentionEditRenderer, MentionMenuItem, MentionMenuPlugin, MermaidEditRenderer, PasteLinkCardPlugin, RubyEditRenderer, SlashMenuItem, SlashMenuList, SlashMenuPlugin, TagEditRenderer, VideoEditRenderer, builtinPlatforms, codeSnippetEditNodes, collectNodeSlashItems, embedEditNodes, enhancedEditRendererConfig, galleryEditNodes, getAllPlatforms, getBuiltinItems, katexEditNodes, linkCardEditNodes, matchLinkCardUrl };
|
package/dist/mention.mjs
CHANGED
package/dist/mermaid.mjs
CHANGED
package/dist/slash-menu.mjs
CHANGED
|
@@ -1,7 +1,2 @@
|
|
|
1
1
|
import { SlashMenuItem, SlashMenuList, SlashMenuPlugin, getBuiltinItems } from "@haklex/rich-plugin-slash-menu";
|
|
2
|
-
export {
|
|
3
|
-
SlashMenuItem,
|
|
4
|
-
SlashMenuList,
|
|
5
|
-
SlashMenuPlugin,
|
|
6
|
-
getBuiltinItems
|
|
7
|
-
};
|
|
2
|
+
export { SlashMenuItem, SlashMenuList, SlashMenuPlugin, getBuiltinItems };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@haklex/rich-renderers-edit",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.81",
|
|
4
4
|
"description": "Edit renderers aggregator for haklex rich editor",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -64,25 +64,25 @@
|
|
|
64
64
|
"dist"
|
|
65
65
|
],
|
|
66
66
|
"dependencies": {
|
|
67
|
-
"@haklex/rich-
|
|
68
|
-
"@haklex/rich-
|
|
69
|
-
"@haklex/rich-ext-
|
|
70
|
-
"@haklex/rich-ext-excalidraw": "0.0.
|
|
71
|
-
"@haklex/rich-
|
|
72
|
-
"@haklex/rich-
|
|
73
|
-
"@haklex/rich-plugin-
|
|
74
|
-
"@haklex/rich-renderer-banner": "0.0.
|
|
75
|
-
"@haklex/rich-plugin-
|
|
76
|
-
"@haklex/rich-renderer-
|
|
77
|
-
"@haklex/rich-renderer-
|
|
78
|
-
"@haklex/rich-renderer-
|
|
79
|
-
"@haklex/rich-renderer-
|
|
80
|
-
"@haklex/rich-renderer-mermaid": "0.0.
|
|
81
|
-
"@haklex/rich-renderer-
|
|
82
|
-
"@haklex/rich-
|
|
83
|
-
"@haklex/rich-renderer-video": "0.0.
|
|
84
|
-
"@haklex/rich-renderer-
|
|
85
|
-
"@haklex/rich-
|
|
67
|
+
"@haklex/rich-editor": "0.0.81",
|
|
68
|
+
"@haklex/rich-ext-embed": "0.0.81",
|
|
69
|
+
"@haklex/rich-ext-gallery": "0.0.81",
|
|
70
|
+
"@haklex/rich-ext-excalidraw": "0.0.81",
|
|
71
|
+
"@haklex/rich-ext-code-snippet": "0.0.81",
|
|
72
|
+
"@haklex/rich-plugin-block-handle": "0.0.81",
|
|
73
|
+
"@haklex/rich-plugin-mention": "0.0.81",
|
|
74
|
+
"@haklex/rich-renderer-banner": "0.0.81",
|
|
75
|
+
"@haklex/rich-plugin-slash-menu": "0.0.81",
|
|
76
|
+
"@haklex/rich-renderer-image": "0.0.81",
|
|
77
|
+
"@haklex/rich-renderer-codeblock": "0.0.81",
|
|
78
|
+
"@haklex/rich-renderer-katex": "0.0.81",
|
|
79
|
+
"@haklex/rich-renderer-alert": "0.0.81",
|
|
80
|
+
"@haklex/rich-renderer-mermaid": "0.0.81",
|
|
81
|
+
"@haklex/rich-renderer-linkcard": "0.0.81",
|
|
82
|
+
"@haklex/rich-renderer-ruby": "0.0.81",
|
|
83
|
+
"@haklex/rich-renderer-video": "0.0.81",
|
|
84
|
+
"@haklex/rich-renderer-mention": "0.0.81",
|
|
85
|
+
"@haklex/rich-renderers": "0.0.81"
|
|
86
86
|
},
|
|
87
87
|
"devDependencies": {
|
|
88
88
|
"@lexical/react": "^0.41.0",
|
package/dist/config-B6vDEQ9v.js
DELETED
|
@@ -1,144 +0,0 @@
|
|
|
1
|
-
import { FootnoteRenderer } from "@haklex/rich-editor/renderers";
|
|
2
|
-
import { CodeSnippetEditRenderer } from "@haklex/rich-ext-code-snippet";
|
|
3
|
-
import { GalleryEditRenderer } from "@haklex/rich-ext-gallery";
|
|
4
|
-
import { AlertEditRenderer } from "@haklex/rich-renderer-alert";
|
|
5
|
-
import { BannerEditRenderer } from "@haklex/rich-renderer-banner";
|
|
6
|
-
import { CodeBlockEditRenderer } from "@haklex/rich-renderer-codeblock";
|
|
7
|
-
import { ImageEditRenderer } from "@haklex/rich-renderer-image";
|
|
8
|
-
import { MentionEditRenderer } from "@haklex/rich-renderer-mention";
|
|
9
|
-
import { MermaidEditRenderer } from "@haklex/rich-renderer-mermaid";
|
|
10
|
-
import { RubyEditRenderer } from "@haklex/rich-renderer-ruby";
|
|
11
|
-
import { VideoEditRenderer } from "@haklex/rich-renderer-video";
|
|
12
|
-
import { enhancedRendererConfig } from "@haklex/rich-renderers";
|
|
13
|
-
import { jsx } from "react/jsx-runtime";
|
|
14
|
-
import { useRendererMode } from "@haklex/rich-editor";
|
|
15
|
-
import { TagRenderer, getTagBgColor } from "@haklex/rich-editor/static";
|
|
16
|
-
import { useLexicalComposerContext } from "@lexical/react/LexicalComposerContext";
|
|
17
|
-
import { $getNearestNodeFromDOMNode } from "lexical";
|
|
18
|
-
import { useRef, useState, useEffect, useCallback } from "react";
|
|
19
|
-
function TagEditRenderer(props) {
|
|
20
|
-
const mode = useRendererMode();
|
|
21
|
-
if (mode !== "editor") {
|
|
22
|
-
return /* @__PURE__ */ jsx(TagRenderer, { ...props });
|
|
23
|
-
}
|
|
24
|
-
return /* @__PURE__ */ jsx(TagEditRendererInner, { ...props });
|
|
25
|
-
}
|
|
26
|
-
function TagEditRendererInner({ text }) {
|
|
27
|
-
const [editor] = useLexicalComposerContext();
|
|
28
|
-
const editable = editor.isEditable();
|
|
29
|
-
const wrapperRef = useRef(null);
|
|
30
|
-
const inputRef = useRef(null);
|
|
31
|
-
const [editing, setEditing] = useState(false);
|
|
32
|
-
const [editText, setEditText] = useState(text);
|
|
33
|
-
useEffect(() => {
|
|
34
|
-
setEditText(text);
|
|
35
|
-
}, [text]);
|
|
36
|
-
useEffect(() => {
|
|
37
|
-
if (editing) {
|
|
38
|
-
requestAnimationFrame(() => inputRef.current?.focus());
|
|
39
|
-
}
|
|
40
|
-
}, [editing]);
|
|
41
|
-
const commitChanges = useCallback(() => {
|
|
42
|
-
const trimmed = editText.trim();
|
|
43
|
-
if (!trimmed || trimmed === text) {
|
|
44
|
-
setEditText(text);
|
|
45
|
-
setEditing(false);
|
|
46
|
-
return;
|
|
47
|
-
}
|
|
48
|
-
if (!wrapperRef.current) return;
|
|
49
|
-
editor.update(() => {
|
|
50
|
-
const node = $getNearestNodeFromDOMNode(wrapperRef.current);
|
|
51
|
-
if (!node) return;
|
|
52
|
-
const writable = node.getWritable();
|
|
53
|
-
writable.__text = trimmed;
|
|
54
|
-
});
|
|
55
|
-
setEditing(false);
|
|
56
|
-
}, [editor, editText, text]);
|
|
57
|
-
const handleKeyDown = useCallback(
|
|
58
|
-
(e) => {
|
|
59
|
-
e.stopPropagation();
|
|
60
|
-
if (e.key === "Enter") {
|
|
61
|
-
e.preventDefault();
|
|
62
|
-
commitChanges();
|
|
63
|
-
} else if (e.key === "Escape") {
|
|
64
|
-
e.preventDefault();
|
|
65
|
-
setEditText(text);
|
|
66
|
-
setEditing(false);
|
|
67
|
-
}
|
|
68
|
-
},
|
|
69
|
-
[commitChanges, text]
|
|
70
|
-
);
|
|
71
|
-
if (!editable) {
|
|
72
|
-
return /* @__PURE__ */ jsx(TagRenderer, { text });
|
|
73
|
-
}
|
|
74
|
-
const bgColor = getTagBgColor(editing ? editText : text);
|
|
75
|
-
if (editing) {
|
|
76
|
-
return /* @__PURE__ */ jsx(
|
|
77
|
-
"span",
|
|
78
|
-
{
|
|
79
|
-
className: "rich-tag",
|
|
80
|
-
ref: wrapperRef,
|
|
81
|
-
style: { backgroundColor: bgColor, display: "inline-flex", alignItems: "center" },
|
|
82
|
-
children: /* @__PURE__ */ jsx(
|
|
83
|
-
"input",
|
|
84
|
-
{
|
|
85
|
-
ref: inputRef,
|
|
86
|
-
style: {
|
|
87
|
-
appearance: "none",
|
|
88
|
-
border: "none",
|
|
89
|
-
backgroundColor: "transparent",
|
|
90
|
-
color: "inherit",
|
|
91
|
-
font: "inherit",
|
|
92
|
-
fontSize: "inherit",
|
|
93
|
-
lineHeight: "inherit",
|
|
94
|
-
padding: 0,
|
|
95
|
-
margin: 0,
|
|
96
|
-
outline: "none",
|
|
97
|
-
width: `${Math.max(editText.length, 1)}ch`,
|
|
98
|
-
minWidth: "2ch"
|
|
99
|
-
},
|
|
100
|
-
type: "text",
|
|
101
|
-
value: editText,
|
|
102
|
-
onBlur: commitChanges,
|
|
103
|
-
onChange: (e) => setEditText(e.target.value),
|
|
104
|
-
onKeyDown: handleKeyDown,
|
|
105
|
-
onMouseDown: (e) => e.stopPropagation()
|
|
106
|
-
}
|
|
107
|
-
)
|
|
108
|
-
}
|
|
109
|
-
);
|
|
110
|
-
}
|
|
111
|
-
return /* @__PURE__ */ jsx(
|
|
112
|
-
"span",
|
|
113
|
-
{
|
|
114
|
-
className: "rich-tag",
|
|
115
|
-
ref: wrapperRef,
|
|
116
|
-
style: { backgroundColor: bgColor, cursor: "pointer" },
|
|
117
|
-
onClick: (e) => {
|
|
118
|
-
e.preventDefault();
|
|
119
|
-
e.stopPropagation();
|
|
120
|
-
setEditing(true);
|
|
121
|
-
},
|
|
122
|
-
children: text
|
|
123
|
-
}
|
|
124
|
-
);
|
|
125
|
-
}
|
|
126
|
-
const enhancedEditRendererConfig = {
|
|
127
|
-
...enhancedRendererConfig,
|
|
128
|
-
Alert: AlertEditRenderer,
|
|
129
|
-
Banner: BannerEditRenderer,
|
|
130
|
-
CodeBlock: CodeBlockEditRenderer,
|
|
131
|
-
Footnote: FootnoteRenderer,
|
|
132
|
-
Gallery: GalleryEditRenderer,
|
|
133
|
-
Image: ImageEditRenderer,
|
|
134
|
-
Mention: MentionEditRenderer,
|
|
135
|
-
Ruby: RubyEditRenderer,
|
|
136
|
-
Mermaid: MermaidEditRenderer,
|
|
137
|
-
Tag: TagEditRenderer,
|
|
138
|
-
Video: VideoEditRenderer,
|
|
139
|
-
CodeSnippet: CodeSnippetEditRenderer
|
|
140
|
-
};
|
|
141
|
-
export {
|
|
142
|
-
TagEditRenderer as T,
|
|
143
|
-
enhancedEditRendererConfig as e
|
|
144
|
-
};
|