@payload-onpage/lexical 0.2.1 → 0.3.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/InlineRichText.d.ts +2 -1
- package/dist/InlineRichText.d.ts.map +1 -1
- package/dist/InlineRichText.js +21 -29
- package/dist/InlineRichText.js.map +1 -1
- package/dist/convert.d.ts +9 -1
- package/dist/convert.d.ts.map +1 -1
- package/dist/convert.js +25 -11
- package/dist/convert.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +14 -1
- package/dist/index.js.map +1 -1
- package/dist/nodes.d.ts +1 -1
- package/dist/nodes.d.ts.map +1 -1
- package/dist/nodes.js +19 -3
- package/dist/nodes.js.map +1 -1
- package/package.json +3 -3
- package/src/InlineRichText.tsx +31 -38
- package/src/convert.ts +32 -11
- package/src/index.ts +2 -2
- package/src/nodes.tsx +8 -4
package/dist/InlineRichText.d.ts
CHANGED
|
@@ -6,8 +6,9 @@
|
|
|
6
6
|
* editor produced for the untouched content.
|
|
7
7
|
*/
|
|
8
8
|
import React from 'react';
|
|
9
|
+
import { type ScalarField } from '@payload-onpage/core';
|
|
9
10
|
import { type FieldEditorProps } from '@payload-onpage/react/editor-kit';
|
|
10
11
|
import { RICH_TEXT_NODES } from './nodeList.ts';
|
|
11
12
|
export { RICH_TEXT_NODES };
|
|
12
|
-
export declare function InlineRichText({ field, value, element, commit, close, ghost, live, point, t, }: FieldEditorProps): React.JSX.Element;
|
|
13
|
+
export declare function InlineRichText({ field, value, element, commit, close, ghost, live, point, t, }: FieldEditorProps<ScalarField>): React.JSX.Element;
|
|
13
14
|
//# sourceMappingURL=InlineRichText.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InlineRichText.d.ts","sourceRoot":"","sources":["../src/InlineRichText.tsx"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,OAAO,KAA6E,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"InlineRichText.d.ts","sourceRoot":"","sources":["../src/InlineRichText.tsx"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,OAAO,KAA6E,MAAM,OAAO,CAAA;AAuCjG,OAAO,EAAyB,KAAK,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAC9E,OAAO,EAML,KAAK,gBAAgB,EAEtB,MAAM,kCAAkC,CAAA;AAEzC,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAG/C,OAAO,EAAE,eAAe,EAAE,CAAA;AAqW1B,wBAAgB,cAAc,CAAC,EAC7B,KAAK,EACL,KAAK,EACL,OAAO,EACP,MAAM,EACN,KAAK,EACL,KAAK,EACL,IAAI,EACJ,KAAK,EACL,CAAC,GACF,EAAE,gBAAgB,CAAC,WAAW,CAAC,qBAyG/B"}
|
package/dist/InlineRichText.js
CHANGED
|
@@ -7,7 +7,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
7
7
|
* Only a real change is written: the value is compared with what the same
|
|
8
8
|
* editor produced for the untouched content.
|
|
9
9
|
*/
|
|
10
|
-
import { useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState } from 'react';
|
|
10
|
+
import React, { useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState } from 'react';
|
|
11
11
|
import { LexicalComposer } from '@lexical/react/LexicalComposer';
|
|
12
12
|
import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext';
|
|
13
13
|
import { RichTextPlugin } from '@lexical/react/LexicalRichTextPlugin';
|
|
@@ -20,16 +20,23 @@ import { $isListNode, INSERT_ORDERED_LIST_COMMAND, INSERT_UNORDERED_LIST_COMMAND
|
|
|
20
20
|
import { $setBlocksType } from '@lexical/selection';
|
|
21
21
|
import { $findMatchingParent } from '@lexical/utils';
|
|
22
22
|
import { $createParagraphNode, $createRangeSelectionFromDom, $getNearestNodeFromDOMNode, $getRoot, $getSelection, $isRangeSelection, $isTextNode, $setSelection, FORMAT_TEXT_COMMAND, REDO_COMMAND, UNDO_COMMAND, } from 'lexical';
|
|
23
|
-
import {
|
|
23
|
+
import { newRowId, safeLinkUrl } from '@payload-onpage/core';
|
|
24
24
|
import { HIDDEN, caretAt, placeOver, useEvent, useTrackElement, } from '@payload-onpage/react/editor-kit';
|
|
25
25
|
import { $createPayloadLinkNode, $isPayloadLinkNode } from "./nodes.js";
|
|
26
26
|
import { RICH_TEXT_NODES } from "./nodeList.js";
|
|
27
|
-
import { fromEditorState, plainText, toEditorState } from "./convert.js";
|
|
27
|
+
import { fromEditorState, hasOpaque, plainText, toEditorState } from "./convert.js";
|
|
28
28
|
export { RICH_TEXT_NODES };
|
|
29
|
+
const EMPTY_TOOLBAR = {
|
|
30
|
+
bold: false,
|
|
31
|
+
italic: false,
|
|
32
|
+
underline: false,
|
|
33
|
+
block: 'paragraph',
|
|
34
|
+
link: false,
|
|
35
|
+
};
|
|
29
36
|
function readToolbarState() {
|
|
30
37
|
const sel = $getSelection();
|
|
31
38
|
if (!$isRangeSelection(sel))
|
|
32
|
-
return
|
|
39
|
+
return EMPTY_TOOLBAR;
|
|
33
40
|
const anchor = sel.anchor.getNode();
|
|
34
41
|
const top = anchor.getKey() === 'root' ? anchor : anchor.getTopLevelElementOrThrow();
|
|
35
42
|
const list = $findMatchingParent(anchor, $isListNode);
|
|
@@ -75,8 +82,10 @@ function currentLinkUrl(editor) {
|
|
|
75
82
|
});
|
|
76
83
|
return url;
|
|
77
84
|
}
|
|
78
|
-
/**
|
|
79
|
-
|
|
85
|
+
/**
|
|
86
|
+
* Link the selection to `url`; an empty url removes the link around it. Returns
|
|
87
|
+
* false (and changes nothing) for an unsafe URL such as `javascript:`.
|
|
88
|
+
*/
|
|
80
89
|
function applyLink(editor, rawUrl, saved) {
|
|
81
90
|
const url = rawUrl.trim();
|
|
82
91
|
if (url && !safeLinkUrl(url))
|
|
@@ -89,7 +98,9 @@ function applyLink(editor, rawUrl, saved) {
|
|
|
89
98
|
if (!$isRangeSelection(sel))
|
|
90
99
|
return;
|
|
91
100
|
const nodes = sel.extract();
|
|
92
|
-
const existing = nodes
|
|
101
|
+
const existing = nodes
|
|
102
|
+
.map((n) => $findMatchingParent(n, $isPayloadLinkNode))
|
|
103
|
+
.find((n) => n !== null);
|
|
93
104
|
if (existing) {
|
|
94
105
|
if (!url) {
|
|
95
106
|
for (const child of existing.getChildren())
|
|
@@ -127,13 +138,7 @@ function ToolButton({ label, title, pressed = false, onAction, id, }) {
|
|
|
127
138
|
}
|
|
128
139
|
function Toolbar({ onDone, t }) {
|
|
129
140
|
const [editor] = useLexicalComposerContext();
|
|
130
|
-
const [state, setState] = useState(
|
|
131
|
-
bold: false,
|
|
132
|
-
italic: false,
|
|
133
|
-
underline: false,
|
|
134
|
-
block: 'paragraph',
|
|
135
|
-
link: false,
|
|
136
|
-
});
|
|
141
|
+
const [state, setState] = useState(EMPTY_TOOLBAR);
|
|
137
142
|
const [linkDraft, setLinkDraft] = useState(null);
|
|
138
143
|
const savedSelection = useRef(null);
|
|
139
144
|
const [linkError, setLinkError] = useState(false);
|
|
@@ -182,7 +187,7 @@ function Toolbar({ onDone, t }) {
|
|
|
182
187
|
e.stopPropagation();
|
|
183
188
|
setLinkDraft(null);
|
|
184
189
|
}
|
|
185
|
-
}, "data-testid": "onpage-rt-link-input" }), _jsx("button", { type: "button", className: "po-btn", onMouseDown: (e) => e.preventDefault(), onClick: saveLink, "data-testid": "onpage-rt-link-apply", children:
|
|
190
|
+
}, "data-testid": "onpage-rt-link-input" }), _jsx("button", { type: "button", className: "po-btn", onMouseDown: (e) => e.preventDefault(), onClick: saveLink, "data-testid": "onpage-rt-link-apply", children: t('rt.linkApply') })] }))] }));
|
|
186
191
|
}
|
|
187
192
|
/**
|
|
188
193
|
* Grabs the editor instance and puts the caret where the user clicked —
|
|
@@ -204,7 +209,7 @@ function Bridge({ onReady, point, }) {
|
|
|
204
209
|
root.focus({ preventScroll: true });
|
|
205
210
|
editor.update(() => {
|
|
206
211
|
const node = hit ? $getNearestNodeFromDOMNode(hit.node) : null;
|
|
207
|
-
if (
|
|
212
|
+
if (hit && $isTextNode(node))
|
|
208
213
|
node.select(hit.offset, hit.offset);
|
|
209
214
|
else
|
|
210
215
|
$getRoot().selectEnd();
|
|
@@ -295,17 +300,4 @@ export function InlineRichText({ field, value, element, commit, close, ghost, li
|
|
|
295
300
|
theme: { text: { bold: 'po-b', italic: 'po-i', underline: 'po-u' } },
|
|
296
301
|
}, children: [_jsx(Toolbar, { onDone: () => finish(true), t: t }), _jsx(RichTextPlugin, { contentEditable: _jsx(ContentEditable, { className: `${className} po-rt-surface`, "aria-label": t('inline.label', { field: field.label }) }), ErrorBoundary: LexicalErrorBoundary }), _jsx(HistoryPlugin, {}), _jsx(ListPlugin, {}), _jsx(Bridge, { onReady: onReady, point: point })] }) }));
|
|
297
302
|
}
|
|
298
|
-
/** Does the value hold nodes the editor shows as placeholders (uploads, blocks…)? Then it isn't empty. */
|
|
299
|
-
function hasOpaque(state) {
|
|
300
|
-
let found = false;
|
|
301
|
-
eachLexicalNode(state, (n) => {
|
|
302
|
-
if (n.type !== 'root' &&
|
|
303
|
-
n.type !== 'paragraph' &&
|
|
304
|
-
n.type !== 'text' &&
|
|
305
|
-
n.type !== 'linebreak' &&
|
|
306
|
-
!n.children)
|
|
307
|
-
found = true;
|
|
308
|
-
});
|
|
309
|
-
return found;
|
|
310
|
-
}
|
|
311
303
|
//# sourceMappingURL=InlineRichText.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InlineRichText.js","sourceRoot":"","sources":["../src/InlineRichText.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"InlineRichText.js","sourceRoot":"","sources":["../src/InlineRichText.tsx"],"names":[],"mappings":"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"}
|
package/dist/convert.d.ts
CHANGED
|
@@ -4,12 +4,20 @@
|
|
|
4
4
|
* unwrapped on the way out, byte-for-byte.
|
|
5
5
|
*/
|
|
6
6
|
import { type LexicalState } from '@payload-onpage/core';
|
|
7
|
+
import type { SerializedEditorState } from 'lexical';
|
|
7
8
|
export declare const EDITABLE_NODE_TYPES: Set<string>;
|
|
8
9
|
export type RichTextState = LexicalState;
|
|
9
10
|
export declare const EMPTY_STATE: RichTextState;
|
|
10
11
|
export declare function isRichTextState(value: unknown): value is RichTextState;
|
|
11
12
|
export declare function toEditorState(value: unknown): RichTextState;
|
|
12
|
-
|
|
13
|
+
/**
|
|
14
|
+
* The editor's state (`editorState.toJSON()`) back to Payload JSON, unwrapping
|
|
15
|
+
* placeholders. Lexical's serialized types are closed interfaces, so they are
|
|
16
|
+
* read through our open `LexicalState` here, once, instead of at every caller.
|
|
17
|
+
*/
|
|
18
|
+
export declare function fromEditorState(state: SerializedEditorState | RichTextState): RichTextState;
|
|
13
19
|
/** Plain text of a state (used to treat a blank editor as "no value"). */
|
|
14
20
|
export declare function plainText(state: RichTextState): string;
|
|
21
|
+
/** Does the value hold nodes the editor shows as placeholders (uploads, blocks…)? Then it isn't empty. */
|
|
22
|
+
export declare function hasOpaque(state: RichTextState): boolean;
|
|
15
23
|
//# sourceMappingURL=convert.d.ts.map
|
package/dist/convert.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"convert.d.ts","sourceRoot":"","sources":["../src/convert.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,
|
|
1
|
+
{"version":3,"file":"convert.d.ts","sourceRoot":"","sources":["../src/convert.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAIL,KAAK,YAAY,EAClB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAA;AAGpD,eAAO,MAAM,mBAAmB,aAW9B,CAAA;AAGF,MAAM,MAAM,aAAa,GAAG,YAAY,CAAA;AAExC,eAAO,MAAM,WAAW,EAAE,aAWzB,CAAA;AASD,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,aAAa,CAItE;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,aAAa,CAS3D;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,qBAAqB,GAAG,aAAa,GAAG,aAAa,CAG3F;AAED,0EAA0E;AAC1E,wBAAgB,SAAS,CAAC,KAAK,EAAE,aAAa,GAAG,MAAM,CAMtD;AAED,0GAA0G;AAC1G,wBAAgB,SAAS,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAMvD"}
|
package/dist/convert.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* through as-is; everything else is wrapped in an OpaqueNode on the way in and
|
|
4
4
|
* unwrapped on the way out, byte-for-byte.
|
|
5
5
|
*/
|
|
6
|
-
import { eachLexicalNode } from '@payload-onpage/core';
|
|
6
|
+
import { eachLexicalNode, mapLexical, } from '@payload-onpage/core';
|
|
7
7
|
import { OPAQUE_TYPE } from "./constants.js";
|
|
8
8
|
export const EDITABLE_NODE_TYPES = new Set([
|
|
9
9
|
'root',
|
|
@@ -29,29 +29,34 @@ export const EMPTY_STATE = {
|
|
|
29
29
|
],
|
|
30
30
|
},
|
|
31
31
|
};
|
|
32
|
+
// Hand-written (not mapLexical): it must stop descending at a node it wraps, so
|
|
33
|
+
// everything inside a placeholder stays byte-for-byte.
|
|
32
34
|
function wrap(node) {
|
|
33
35
|
if (!EDITABLE_NODE_TYPES.has(node.type))
|
|
34
36
|
return { type: OPAQUE_TYPE, version: 1, data: node };
|
|
35
37
|
return Array.isArray(node.children) ? { ...node, children: node.children.map(wrap) } : node;
|
|
36
38
|
}
|
|
37
|
-
function unwrap(node) {
|
|
38
|
-
if (node.type === OPAQUE_TYPE)
|
|
39
|
-
return node.data;
|
|
40
|
-
return Array.isArray(node.children) ? { ...node, children: node.children.map(unwrap) } : node;
|
|
41
|
-
}
|
|
42
39
|
export function isRichTextState(value) {
|
|
43
40
|
return (!!value && typeof value === 'object' && value.root?.type === 'root');
|
|
44
41
|
}
|
|
45
42
|
export function toEditorState(value) {
|
|
46
43
|
const state = isRichTextState(value) ? value : EMPTY_STATE;
|
|
47
44
|
const root = wrap(state.root);
|
|
48
|
-
// Lexical needs at least one block child to place a caret.
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
return
|
|
45
|
+
// Lexical needs at least one block child to place a caret. Build a new root:
|
|
46
|
+
// wrap() returns the input itself when there's nothing to wrap, and the empty
|
|
47
|
+
// children must never be shared between documents.
|
|
48
|
+
return root.children?.length
|
|
49
|
+
? { root }
|
|
50
|
+
: { root: { ...root, children: structuredClone(EMPTY_STATE.root.children ?? []) } };
|
|
52
51
|
}
|
|
52
|
+
/**
|
|
53
|
+
* The editor's state (`editorState.toJSON()`) back to Payload JSON, unwrapping
|
|
54
|
+
* placeholders. Lexical's serialized types are closed interfaces, so they are
|
|
55
|
+
* read through our open `LexicalState` here, once, instead of at every caller.
|
|
56
|
+
*/
|
|
53
57
|
export function fromEditorState(state) {
|
|
54
|
-
|
|
58
|
+
const open = state;
|
|
59
|
+
return mapLexical(open, (n) => (n.type === OPAQUE_TYPE ? n.data : n));
|
|
55
60
|
}
|
|
56
61
|
/** Plain text of a state (used to treat a blank editor as "no value"). */
|
|
57
62
|
export function plainText(state) {
|
|
@@ -62,4 +67,13 @@ export function plainText(state) {
|
|
|
62
67
|
});
|
|
63
68
|
return parts.join('').trim();
|
|
64
69
|
}
|
|
70
|
+
/** Does the value hold nodes the editor shows as placeholders (uploads, blocks…)? Then it isn't empty. */
|
|
71
|
+
export function hasOpaque(state) {
|
|
72
|
+
let found = false;
|
|
73
|
+
eachLexicalNode(state, (n) => {
|
|
74
|
+
if (!EDITABLE_NODE_TYPES.has(n.type))
|
|
75
|
+
found = true;
|
|
76
|
+
});
|
|
77
|
+
return found;
|
|
78
|
+
}
|
|
65
79
|
//# sourceMappingURL=convert.js.map
|
package/dist/convert.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"convert.js","sourceRoot":"","sources":["../src/convert.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,
|
|
1
|
+
{"version":3,"file":"convert.js","sourceRoot":"","sources":["../src/convert.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
* (uploads, blocks, relationships…) are kept as-is and shown as placeholders.
|
|
11
11
|
* The editor component and its nodes are in `@payload-onpage/lexical/editor`.
|
|
12
12
|
*/
|
|
13
|
-
import type
|
|
13
|
+
import { type EditorRegistry } from '@payload-onpage/react/editor-kit';
|
|
14
14
|
export declare const lexicalEditors: EditorRegistry;
|
|
15
15
|
export { toEditorState, fromEditorState, plainText, isRichTextState, type RichTextState, } from './convert.ts';
|
|
16
16
|
export { OPAQUE_TYPE } from './constants.ts';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;GAWG;AACH,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;GAWG;AACH,OAAO,EAAgB,KAAK,cAAc,EAAE,MAAM,kCAAkC,CAAA;AAOpF,eAAO,MAAM,cAAc,EAAE,cAE5B,CAAA;AAED,OAAO,EACL,aAAa,EACb,eAAe,EACf,SAAS,EACT,eAAe,EACf,KAAK,aAAa,GACnB,MAAM,cAAc,CAAA;AACrB,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -1,8 +1,21 @@
|
|
|
1
1
|
'use client';
|
|
2
|
+
/**
|
|
3
|
+
* @payload-onpage/lexical — inline rich-text editing for Payload's Lexical
|
|
4
|
+
* richText fields.
|
|
5
|
+
*
|
|
6
|
+
* <OnPageEditor editors={lexicalEditors} … /> // the Next adapter includes it by default
|
|
7
|
+
*
|
|
8
|
+
* Light by design: the Lexical editor itself (~75 KB gz with Lexical) loads
|
|
9
|
+
* only when someone opens a rich-text field. It reads and writes Payload's
|
|
10
|
+
* Lexical JSON; links keep Payload's shape, and nodes it doesn't edit
|
|
11
|
+
* (uploads, blocks, relationships…) are kept as-is and shown as placeholders.
|
|
12
|
+
* The editor component and its nodes are in `@payload-onpage/lexical/editor`.
|
|
13
|
+
*/
|
|
14
|
+
import { defineEditor } from '@payload-onpage/react/editor-kit';
|
|
2
15
|
import { lazy } from 'react';
|
|
3
16
|
const InlineRichText = lazy(() => import("./InlineRichText.js").then((m) => ({ default: m.InlineRichText })));
|
|
4
17
|
export const lexicalEditors = {
|
|
5
|
-
richText: { mode: 'inline', component: InlineRichText },
|
|
18
|
+
richText: defineEditor({ mode: 'inline', accepts: ['richText'], component: InlineRichText }),
|
|
6
19
|
};
|
|
7
20
|
export { toEditorState, fromEditorState, plainText, isRichTextState, } from "./convert.js";
|
|
8
21
|
export { OPAQUE_TYPE } from "./constants.js";
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,CAAA;AAEZ;;;;;;;;;;;GAWG;AACH,OAAO,EAAE,YAAY,EAAuB,MAAM,kCAAkC,CAAA;AACpF,OAAO,EAAE,IAAI,EAAE,MAAM,OAAO,CAAA;AAE5B,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,CAC/B,MAAM,CAAC,qBAAsB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,CAC5E,CAAA;AAED,MAAM,CAAC,MAAM,cAAc,GAAmB;IAC5C,QAAQ,EAAE,YAAY,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,UAAU,CAAC,EAAE,SAAS,EAAE,cAAc,EAAE,CAAC;CAC7F,CAAA;AAED,OAAO,EACL,aAAa,EACb,eAAe,EACf,SAAS,EACT,eAAe,GAEhB,MAAM,cAAc,CAAA;AACrB,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA"}
|
package/dist/nodes.d.ts
CHANGED
|
@@ -25,7 +25,7 @@ export type SerializedPayloadLinkNode = Spread<{
|
|
|
25
25
|
}, SerializedElementNode>;
|
|
26
26
|
export declare class PayloadLinkNode extends ElementNode {
|
|
27
27
|
__fields: PayloadLinkFields;
|
|
28
|
-
__linkId
|
|
28
|
+
__linkId: string | undefined;
|
|
29
29
|
static getType(): string;
|
|
30
30
|
static clone(node: PayloadLinkNode): PayloadLinkNode;
|
|
31
31
|
constructor(fields?: PayloadLinkFields, id?: string, key?: NodeKey);
|
package/dist/nodes.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nodes.d.ts","sourceRoot":"","sources":["../src/nodes.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"nodes.d.ts","sourceRoot":"","sources":["../src/nodes.tsx"],"names":[],"mappings":"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"}
|
package/dist/nodes.js
CHANGED
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
/**
|
|
4
|
+
* Lexical nodes for editing Payload rich text in place.
|
|
5
|
+
*
|
|
6
|
+
* - PayloadLinkNode — Payload stores links as
|
|
7
|
+
* { type: "link", id, fields: { url, newTab, linkType, doc? }, children, … }
|
|
8
|
+
* (not @lexical/link's { url, rel, target }). This node reads and writes that
|
|
9
|
+
* shape, keeping `id` and every key in `fields`.
|
|
10
|
+
* - OpaqueNode — any node type we don't edit (upload, block, relationship,
|
|
11
|
+
* horizontalrule…) is carried through untouched and shown as a locked chip,
|
|
12
|
+
* so editing a paragraph never loses an image or embed.
|
|
13
|
+
*/
|
|
14
|
+
import React from 'react';
|
|
15
|
+
import { newRowId } from '@payload-onpage/core';
|
|
3
16
|
import { DecoratorNode, ElementNode, } from 'lexical';
|
|
4
17
|
export class PayloadLinkNode extends ElementNode {
|
|
5
18
|
__fields;
|
|
@@ -41,15 +54,18 @@ export class PayloadLinkNode extends ElementNode {
|
|
|
41
54
|
return false;
|
|
42
55
|
}
|
|
43
56
|
static importJSON(json) {
|
|
44
|
-
|
|
57
|
+
// We always export version 3, which Payload expects to carry an id; it only
|
|
58
|
+
// mints one itself when importing version 2. Give older links one here.
|
|
59
|
+
return $createPayloadLinkNode(json.fields ?? {}, json.id || newRowId()).updateFromJSON(json);
|
|
45
60
|
}
|
|
46
61
|
exportJSON() {
|
|
62
|
+
const latest = this.getLatest();
|
|
47
63
|
return {
|
|
48
64
|
...super.exportJSON(),
|
|
49
65
|
type: 'link',
|
|
50
66
|
version: 3,
|
|
51
|
-
fields: { ...
|
|
52
|
-
...(
|
|
67
|
+
fields: { ...latest.__fields },
|
|
68
|
+
...(latest.__linkId ? { id: latest.__linkId } : {}),
|
|
53
69
|
};
|
|
54
70
|
}
|
|
55
71
|
getFields() {
|
package/dist/nodes.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nodes.js","sourceRoot":"","sources":["../src/nodes.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;
|
|
1
|
+
{"version":3,"file":"nodes.js","sourceRoot":"","sources":["../src/nodes.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ;;;;;;;;;;GAUG;AACH,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAC/C,OAAO,EACL,aAAa,EACb,WAAW,GAMZ,MAAM,SAAS,CAAA;AAchB,MAAM,OAAO,eAAgB,SAAQ,WAAW;IAC9C,QAAQ,CAAmB;IAC3B,QAAQ,CAAoB;IAE5B,MAAM,CAAU,OAAO;QACrB,OAAO,MAAM,CAAA;IACf,CAAC;IAED,MAAM,CAAU,KAAK,CAAC,IAAqB;QACzC,OAAO,IAAI,eAAe,CAAC,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,CAAA;IAC7E,CAAC;IAED,YAAY,SAA4B,EAAE,EAAE,EAAW,EAAE,GAAa;QACpE,KAAK,CAAC,GAAG,CAAC,CAAA;QACV,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAA;QACtB,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAA;IACpB,CAAC;IAEQ,SAAS;QAChB,MAAM,CAAC,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAA;QACrC,CAAC,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,GAAG,CAAC,CAAA;QAChD,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;YACzB,CAAC,CAAC,YAAY,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;YAClC,CAAC,CAAC,YAAY,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAAA;QAC9C,CAAC;QACD,CAAC,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC,CAAA;QACtD,OAAO,CAAC,CAAA;IACV,CAAC;IAEQ,SAAS,CAAC,IAAqB,EAAE,GAAgB;QACxD,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,KAAK,IAAI,CAAC,QAAQ,CAAC,GAAG;YAAE,GAAG,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,GAAG,CAAC,CAAA;QAC/F,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;YAClD,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;gBACzB,GAAG,CAAC,YAAY,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;gBACpC,GAAG,CAAC,YAAY,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAAA;YAChD,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAA;gBAC7B,GAAG,CAAC,eAAe,CAAC,KAAK,CAAC,CAAA;YAC5B,CAAC;QACH,CAAC;QACD,OAAO,KAAK,CAAA;IACd,CAAC;IAED,MAAM,CAAU,UAAU,CAAC,IAA+B;QACxD,4EAA4E;QAC5E,wEAAwE;QACxE,OAAO,sBAAsB,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,QAAQ,EAAE,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAA;IAC9F,CAAC;IAEQ,UAAU;QACjB,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAA;QAC/B,OAAO;YACL,GAAG,KAAK,CAAC,UAAU,EAAE;YACrB,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,CAAC;YACV,MAAM,EAAE,EAAE,GAAG,MAAM,CAAC,QAAQ,EAAE;YAC9B,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACpD,CAAA;IACH,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC,QAAQ,CAAA;IAClC,CAAC;IAED,SAAS,CAAC,MAAyB;QACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAA;QACnC,QAAQ,CAAC,QAAQ,GAAG,MAAM,CAAA;QAC1B,OAAO,QAAQ,CAAA;IACjB,CAAC;IAEQ,QAAQ;QACf,OAAO,IAAI,CAAA;IACb,CAAC;IAEQ,UAAU;QACjB,OAAO,KAAK,CAAA;IACd,CAAC;IAEQ,mBAAmB;QAC1B,OAAO,KAAK,CAAA;IACd,CAAC;IAEQ,kBAAkB;QACzB,OAAO,KAAK,CAAA;IACd,CAAC;CACF;AAED,MAAM,UAAU,sBAAsB,CAAC,MAAyB,EAAE,EAAW;IAC3E,OAAO,IAAI,eAAe,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;AACxC,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,IAAoC;IACrE,OAAO,IAAI,YAAY,eAAe,CAAA;AACxC,CAAC;AAED,4EAA4E;AAE5E,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAE5C,OAAO,EAAE,WAAW,EAAE,CAAA;AACtB,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC,CAAA;AAezD,MAAM,UAAU,YAAY,CAAC,IAAgB;IAC3C,MAAM,QAAQ,GACZ,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,IAAI,OAAO,IAAI,CAAC,KAAK,EAAE,QAAQ,KAAK,QAAQ;QACxE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ;QACrB,CAAC,CAAC,EAAE,CAAA;IACR,MAAM,SAAS,GAAG,OAAO,IAAI,CAAC,MAAM,EAAE,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAA;IAC9F,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,QAAQ;YACX,OAAO,QAAQ,QAAQ,CAAC,CAAC,CAAC,MAAM,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,kBAAkB,CAAA;QACnE,KAAK,gBAAgB;YACnB,OAAO,SAAS,CAAA;QAClB,KAAK,OAAO,CAAC;QACb,KAAK,aAAa;YAChB,OAAO,GAAG,SAAS,kBAAkB,CAAA;QACvC,KAAK,cAAc;YACjB,OAAO,iCAAiC,CAAA;QAC1C;YACE,OAAO,GAAG,IAAI,CAAC,IAAI,IAAI,SAAS,kBAAkB,CAAA;IACtD,CAAC;AACH,CAAC;AAED,MAAM,OAAO,UAAW,SAAQ,aAA8B;IAC5D,MAAM,CAAY;IAElB,MAAM,CAAU,OAAO;QACrB,OAAO,WAAW,CAAA;IACpB,CAAC;IAED,MAAM,CAAU,KAAK,CAAC,IAAgB;QACpC,OAAO,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAA;IAChD,CAAC;IAED,YAAY,IAAgB,EAAE,GAAa;QACzC,KAAK,CAAC,GAAG,CAAC,CAAA;QACV,IAAI,CAAC,MAAM,GAAG,IAAI,CAAA;IACpB,CAAC;IAEQ,SAAS;QAChB,OAAO,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;IACjE,CAAC;IAEQ,SAAS;QAChB,OAAO,KAAK,CAAA;IACd,CAAC;IAEQ,QAAQ;QACf,OAAO,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAA;IACjD,CAAC;IAED,MAAM,CAAU,UAAU,CAAC,IAA0B;QACnD,OAAO,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAClC,CAAC;IAEQ,UAAU;QACjB,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,MAAM,EAAE,CAAA;IACzE,CAAC;IAEQ,QAAQ;QACf,OAAO,CACL,gBAAM,SAAS,EAAC,WAAW,EAAC,eAAe,EAAE,KAAK,iBAAc,eAAe,wBAC1E,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,IACvB,CACR,CAAA;IACH,CAAC;CACF"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@payload-onpage/lexical",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "payload-onpage rich-text field editor: inline Lexical editing compatible with Payload's Lexical JSON.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -53,8 +53,8 @@
|
|
|
53
53
|
"provenance": true
|
|
54
54
|
},
|
|
55
55
|
"dependencies": {
|
|
56
|
-
"@payload-onpage/core": "0.
|
|
57
|
-
"@payload-onpage/react": "0.
|
|
56
|
+
"@payload-onpage/core": "0.3.0",
|
|
57
|
+
"@payload-onpage/react": "0.3.0"
|
|
58
58
|
},
|
|
59
59
|
"peerDependencies": {
|
|
60
60
|
"@lexical/list": "~0.50.0",
|
package/src/InlineRichText.tsx
CHANGED
|
@@ -20,12 +20,14 @@ import {
|
|
|
20
20
|
$createQuoteNode,
|
|
21
21
|
$isHeadingNode,
|
|
22
22
|
$isQuoteNode,
|
|
23
|
+
type HeadingTagType,
|
|
23
24
|
} from '@lexical/rich-text'
|
|
24
25
|
import {
|
|
25
26
|
$isListNode,
|
|
26
27
|
INSERT_ORDERED_LIST_COMMAND,
|
|
27
28
|
INSERT_UNORDERED_LIST_COMMAND,
|
|
28
29
|
REMOVE_LIST_COMMAND,
|
|
30
|
+
type ListType,
|
|
29
31
|
} from '@lexical/list'
|
|
30
32
|
import { $setBlocksType } from '@lexical/selection'
|
|
31
33
|
import { $findMatchingParent } from '@lexical/utils'
|
|
@@ -44,7 +46,7 @@ import {
|
|
|
44
46
|
UNDO_COMMAND,
|
|
45
47
|
type LexicalEditor,
|
|
46
48
|
} from 'lexical'
|
|
47
|
-
import {
|
|
49
|
+
import { newRowId, safeLinkUrl, type ScalarField } from '@payload-onpage/core'
|
|
48
50
|
import {
|
|
49
51
|
HIDDEN,
|
|
50
52
|
caretAt,
|
|
@@ -56,26 +58,36 @@ import {
|
|
|
56
58
|
} from '@payload-onpage/react/editor-kit'
|
|
57
59
|
import { $createPayloadLinkNode, $isPayloadLinkNode, type PayloadLinkNode } from './nodes.tsx'
|
|
58
60
|
import { RICH_TEXT_NODES } from './nodeList.ts'
|
|
59
|
-
import { fromEditorState, plainText, toEditorState
|
|
61
|
+
import { fromEditorState, hasOpaque, plainText, toEditorState } from './convert.ts'
|
|
60
62
|
|
|
61
63
|
export { RICH_TEXT_NODES }
|
|
62
64
|
|
|
65
|
+
/** The block the selection is in, as the toolbar shows it. */
|
|
66
|
+
type BlockKind = 'paragraph' | 'quote' | HeadingTagType | `list-${ListType}`
|
|
67
|
+
|
|
63
68
|
interface ToolbarState {
|
|
64
69
|
bold: boolean
|
|
65
70
|
italic: boolean
|
|
66
71
|
underline: boolean
|
|
67
|
-
block:
|
|
72
|
+
block: BlockKind
|
|
68
73
|
link: boolean
|
|
69
74
|
}
|
|
70
75
|
|
|
76
|
+
const EMPTY_TOOLBAR: ToolbarState = {
|
|
77
|
+
bold: false,
|
|
78
|
+
italic: false,
|
|
79
|
+
underline: false,
|
|
80
|
+
block: 'paragraph',
|
|
81
|
+
link: false,
|
|
82
|
+
}
|
|
83
|
+
|
|
71
84
|
function readToolbarState(): ToolbarState {
|
|
72
85
|
const sel = $getSelection()
|
|
73
|
-
if (!$isRangeSelection(sel))
|
|
74
|
-
return { bold: false, italic: false, underline: false, block: 'paragraph', link: false }
|
|
86
|
+
if (!$isRangeSelection(sel)) return EMPTY_TOOLBAR
|
|
75
87
|
const anchor = sel.anchor.getNode()
|
|
76
88
|
const top = anchor.getKey() === 'root' ? anchor : anchor.getTopLevelElementOrThrow()
|
|
77
89
|
const list = $findMatchingParent(anchor, $isListNode)
|
|
78
|
-
const block = list
|
|
90
|
+
const block: BlockKind = list
|
|
79
91
|
? `list-${list.getListType()}`
|
|
80
92
|
: $isHeadingNode(top)
|
|
81
93
|
? top.getTag()
|
|
@@ -121,8 +133,10 @@ function currentLinkUrl(editor: LexicalEditor): string | undefined {
|
|
|
121
133
|
return url
|
|
122
134
|
}
|
|
123
135
|
|
|
124
|
-
/**
|
|
125
|
-
|
|
136
|
+
/**
|
|
137
|
+
* Link the selection to `url`; an empty url removes the link around it. Returns
|
|
138
|
+
* false (and changes nothing) for an unsafe URL such as `javascript:`.
|
|
139
|
+
*/
|
|
126
140
|
function applyLink(editor: LexicalEditor, rawUrl: string, saved: BaseSelection | null): boolean {
|
|
127
141
|
const url = rawUrl.trim()
|
|
128
142
|
if (url && !safeLinkUrl(url)) return false
|
|
@@ -132,8 +146,9 @@ function applyLink(editor: LexicalEditor, rawUrl: string, saved: BaseSelection |
|
|
|
132
146
|
const sel = $getSelection()
|
|
133
147
|
if (!$isRangeSelection(sel)) return
|
|
134
148
|
const nodes = sel.extract()
|
|
135
|
-
const existing = nodes
|
|
136
|
-
|
|
149
|
+
const existing = nodes
|
|
150
|
+
.map((n) => $findMatchingParent(n, $isPayloadLinkNode))
|
|
151
|
+
.find((n): n is PayloadLinkNode => n !== null)
|
|
137
152
|
if (existing) {
|
|
138
153
|
if (!url) {
|
|
139
154
|
for (const child of existing.getChildren()) existing.insertBefore(child)
|
|
@@ -197,13 +212,7 @@ function ToolButton({
|
|
|
197
212
|
|
|
198
213
|
function Toolbar({ onDone, t }: { onDone: () => void; t: Translate }) {
|
|
199
214
|
const [editor] = useLexicalComposerContext()
|
|
200
|
-
const [state, setState] = useState<ToolbarState>(
|
|
201
|
-
bold: false,
|
|
202
|
-
italic: false,
|
|
203
|
-
underline: false,
|
|
204
|
-
block: 'paragraph',
|
|
205
|
-
link: false,
|
|
206
|
-
})
|
|
215
|
+
const [state, setState] = useState<ToolbarState>(EMPTY_TOOLBAR)
|
|
207
216
|
const [linkDraft, setLinkDraft] = useState<string | null>(null)
|
|
208
217
|
const savedSelection = useRef<BaseSelection | null>(null)
|
|
209
218
|
const [linkError, setLinkError] = useState(false)
|
|
@@ -360,7 +369,7 @@ function Toolbar({ onDone, t }: { onDone: () => void; t: Translate }) {
|
|
|
360
369
|
onClick={saveLink}
|
|
361
370
|
data-testid="onpage-rt-link-apply"
|
|
362
371
|
>
|
|
363
|
-
|
|
372
|
+
{t('rt.linkApply')}
|
|
364
373
|
</button>
|
|
365
374
|
</span>
|
|
366
375
|
)}
|
|
@@ -378,7 +387,7 @@ function Bridge({
|
|
|
378
387
|
point,
|
|
379
388
|
}: {
|
|
380
389
|
onReady: (editor: LexicalEditor) => void
|
|
381
|
-
point?: { x: number; y: number }
|
|
390
|
+
point?: { x: number; y: number } | undefined
|
|
382
391
|
}) {
|
|
383
392
|
const [editor] = useLexicalComposerContext()
|
|
384
393
|
useEffect(() => {
|
|
@@ -396,7 +405,7 @@ function Bridge({
|
|
|
396
405
|
editor.update(
|
|
397
406
|
() => {
|
|
398
407
|
const node = hit ? $getNearestNodeFromDOMNode(hit.node) : null
|
|
399
|
-
if (
|
|
408
|
+
if (hit && $isTextNode(node)) node.select(hit.offset, hit.offset)
|
|
400
409
|
else $getRoot().selectEnd()
|
|
401
410
|
},
|
|
402
411
|
{ discrete: true },
|
|
@@ -418,7 +427,7 @@ export function InlineRichText({
|
|
|
418
427
|
live,
|
|
419
428
|
point,
|
|
420
429
|
t,
|
|
421
|
-
}: FieldEditorProps) {
|
|
430
|
+
}: FieldEditorProps<ScalarField>) {
|
|
422
431
|
const box = useRef<HTMLDivElement>(null)
|
|
423
432
|
const editorRef = useRef<LexicalEditor | null>(null)
|
|
424
433
|
const baseline = useRef<string | null>(null)
|
|
@@ -457,7 +466,7 @@ export function InlineRichText({
|
|
|
457
466
|
done.current = true
|
|
458
467
|
const editor = editorRef.current
|
|
459
468
|
if (save && editor) {
|
|
460
|
-
const json = editor.getEditorState().toJSON()
|
|
469
|
+
const json = editor.getEditorState().toJSON()
|
|
461
470
|
if (JSON.stringify(json) !== baseline.current) {
|
|
462
471
|
const next = fromEditorState(json)
|
|
463
472
|
commit(plainText(next) || hasOpaque(next) ? next : null)
|
|
@@ -524,19 +533,3 @@ export function InlineRichText({
|
|
|
524
533
|
</div>
|
|
525
534
|
)
|
|
526
535
|
}
|
|
527
|
-
|
|
528
|
-
/** Does the value hold nodes the editor shows as placeholders (uploads, blocks…)? Then it isn't empty. */
|
|
529
|
-
function hasOpaque(state: RichTextState): boolean {
|
|
530
|
-
let found = false
|
|
531
|
-
eachLexicalNode(state, (n) => {
|
|
532
|
-
if (
|
|
533
|
-
n.type !== 'root' &&
|
|
534
|
-
n.type !== 'paragraph' &&
|
|
535
|
-
n.type !== 'text' &&
|
|
536
|
-
n.type !== 'linebreak' &&
|
|
537
|
-
!n.children
|
|
538
|
-
)
|
|
539
|
-
found = true
|
|
540
|
-
})
|
|
541
|
-
return found
|
|
542
|
-
}
|
package/src/convert.ts
CHANGED
|
@@ -3,7 +3,13 @@
|
|
|
3
3
|
* through as-is; everything else is wrapped in an OpaqueNode on the way in and
|
|
4
4
|
* unwrapped on the way out, byte-for-byte.
|
|
5
5
|
*/
|
|
6
|
-
import {
|
|
6
|
+
import {
|
|
7
|
+
eachLexicalNode,
|
|
8
|
+
mapLexical,
|
|
9
|
+
type LexicalNode,
|
|
10
|
+
type LexicalState,
|
|
11
|
+
} from '@payload-onpage/core'
|
|
12
|
+
import type { SerializedEditorState } from 'lexical'
|
|
7
13
|
import { OPAQUE_TYPE } from './constants.ts'
|
|
8
14
|
|
|
9
15
|
export const EDITABLE_NODE_TYPES = new Set([
|
|
@@ -35,16 +41,13 @@ export const EMPTY_STATE: RichTextState = {
|
|
|
35
41
|
},
|
|
36
42
|
}
|
|
37
43
|
|
|
44
|
+
// Hand-written (not mapLexical): it must stop descending at a node it wraps, so
|
|
45
|
+
// everything inside a placeholder stays byte-for-byte.
|
|
38
46
|
function wrap(node: Node): Node {
|
|
39
47
|
if (!EDITABLE_NODE_TYPES.has(node.type)) return { type: OPAQUE_TYPE, version: 1, data: node }
|
|
40
48
|
return Array.isArray(node.children) ? { ...node, children: node.children.map(wrap) } : node
|
|
41
49
|
}
|
|
42
50
|
|
|
43
|
-
function unwrap(node: Node): Node {
|
|
44
|
-
if (node.type === OPAQUE_TYPE) return node.data as Node
|
|
45
|
-
return Array.isArray(node.children) ? { ...node, children: node.children.map(unwrap) } : node
|
|
46
|
-
}
|
|
47
|
-
|
|
48
51
|
export function isRichTextState(value: unknown): value is RichTextState {
|
|
49
52
|
return (
|
|
50
53
|
!!value && typeof value === 'object' && (value as Partial<RichTextState>).root?.type === 'root'
|
|
@@ -54,13 +57,22 @@ export function isRichTextState(value: unknown): value is RichTextState {
|
|
|
54
57
|
export function toEditorState(value: unknown): RichTextState {
|
|
55
58
|
const state = isRichTextState(value) ? value : EMPTY_STATE
|
|
56
59
|
const root = wrap(state.root)
|
|
57
|
-
// Lexical needs at least one block child to place a caret.
|
|
58
|
-
|
|
59
|
-
|
|
60
|
+
// Lexical needs at least one block child to place a caret. Build a new root:
|
|
61
|
+
// wrap() returns the input itself when there's nothing to wrap, and the empty
|
|
62
|
+
// children must never be shared between documents.
|
|
63
|
+
return root.children?.length
|
|
64
|
+
? { root }
|
|
65
|
+
: { root: { ...root, children: structuredClone(EMPTY_STATE.root.children ?? []) } }
|
|
60
66
|
}
|
|
61
67
|
|
|
62
|
-
|
|
63
|
-
|
|
68
|
+
/**
|
|
69
|
+
* The editor's state (`editorState.toJSON()`) back to Payload JSON, unwrapping
|
|
70
|
+
* placeholders. Lexical's serialized types are closed interfaces, so they are
|
|
71
|
+
* read through our open `LexicalState` here, once, instead of at every caller.
|
|
72
|
+
*/
|
|
73
|
+
export function fromEditorState(state: SerializedEditorState | RichTextState): RichTextState {
|
|
74
|
+
const open = state as unknown as RichTextState
|
|
75
|
+
return mapLexical(open, (n) => (n.type === OPAQUE_TYPE ? (n.data as Node) : n))
|
|
64
76
|
}
|
|
65
77
|
|
|
66
78
|
/** Plain text of a state (used to treat a blank editor as "no value"). */
|
|
@@ -71,3 +83,12 @@ export function plainText(state: RichTextState): string {
|
|
|
71
83
|
})
|
|
72
84
|
return parts.join('').trim()
|
|
73
85
|
}
|
|
86
|
+
|
|
87
|
+
/** Does the value hold nodes the editor shows as placeholders (uploads, blocks…)? Then it isn't empty. */
|
|
88
|
+
export function hasOpaque(state: RichTextState): boolean {
|
|
89
|
+
let found = false
|
|
90
|
+
eachLexicalNode(state, (n) => {
|
|
91
|
+
if (!EDITABLE_NODE_TYPES.has(n.type)) found = true
|
|
92
|
+
})
|
|
93
|
+
return found
|
|
94
|
+
}
|
package/src/index.ts
CHANGED
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
* (uploads, blocks, relationships…) are kept as-is and shown as placeholders.
|
|
13
13
|
* The editor component and its nodes are in `@payload-onpage/lexical/editor`.
|
|
14
14
|
*/
|
|
15
|
-
import type
|
|
15
|
+
import { defineEditor, type EditorRegistry } from '@payload-onpage/react/editor-kit'
|
|
16
16
|
import { lazy } from 'react'
|
|
17
17
|
|
|
18
18
|
const InlineRichText = lazy(() =>
|
|
@@ -20,7 +20,7 @@ const InlineRichText = lazy(() =>
|
|
|
20
20
|
)
|
|
21
21
|
|
|
22
22
|
export const lexicalEditors: EditorRegistry = {
|
|
23
|
-
richText: { mode: 'inline', component: InlineRichText },
|
|
23
|
+
richText: defineEditor({ mode: 'inline', accepts: ['richText'], component: InlineRichText }),
|
|
24
24
|
}
|
|
25
25
|
|
|
26
26
|
export {
|
package/src/nodes.tsx
CHANGED
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
* so editing a paragraph never loses an image or embed.
|
|
13
13
|
*/
|
|
14
14
|
import React from 'react'
|
|
15
|
+
import { newRowId } from '@payload-onpage/core'
|
|
15
16
|
import {
|
|
16
17
|
DecoratorNode,
|
|
17
18
|
ElementNode,
|
|
@@ -36,7 +37,7 @@ export type SerializedPayloadLinkNode = Spread<
|
|
|
36
37
|
|
|
37
38
|
export class PayloadLinkNode extends ElementNode {
|
|
38
39
|
__fields: PayloadLinkFields
|
|
39
|
-
__linkId
|
|
40
|
+
__linkId: string | undefined
|
|
40
41
|
|
|
41
42
|
static override getType(): string {
|
|
42
43
|
return 'link'
|
|
@@ -78,16 +79,19 @@ export class PayloadLinkNode extends ElementNode {
|
|
|
78
79
|
}
|
|
79
80
|
|
|
80
81
|
static override importJSON(json: SerializedPayloadLinkNode): PayloadLinkNode {
|
|
81
|
-
|
|
82
|
+
// We always export version 3, which Payload expects to carry an id; it only
|
|
83
|
+
// mints one itself when importing version 2. Give older links one here.
|
|
84
|
+
return $createPayloadLinkNode(json.fields ?? {}, json.id || newRowId()).updateFromJSON(json)
|
|
82
85
|
}
|
|
83
86
|
|
|
84
87
|
override exportJSON(): SerializedPayloadLinkNode {
|
|
88
|
+
const latest = this.getLatest()
|
|
85
89
|
return {
|
|
86
90
|
...super.exportJSON(),
|
|
87
91
|
type: 'link',
|
|
88
92
|
version: 3,
|
|
89
|
-
fields: { ...
|
|
90
|
-
...(
|
|
93
|
+
fields: { ...latest.__fields },
|
|
94
|
+
...(latest.__linkId ? { id: latest.__linkId } : {}),
|
|
91
95
|
}
|
|
92
96
|
}
|
|
93
97
|
|