@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.
@@ -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;AAsCjG,OAAO,EAML,KAAK,gBAAgB,EAEtB,MAAM,kCAAkC,CAAA;AAEzC,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAG/C,OAAO,EAAE,eAAe,EAAE,CAAA;AA8V1B,wBAAgB,cAAc,CAAC,EAC7B,KAAK,EACL,KAAK,EACL,OAAO,EACP,MAAM,EACN,KAAK,EACL,KAAK,EACL,IAAI,EACJ,KAAK,EACL,CAAC,GACF,EAAE,gBAAgB,qBAyGlB"}
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"}
@@ -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 { eachLexicalNode, newRowId, safeLinkUrl } from '@payload-onpage/core';
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 { bold: false, italic: false, underline: false, block: 'paragraph', link: false };
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
- /** Link the selection to `url`; an empty url removes the link around it. */
79
- /** Link the selection; returns false (and changes nothing) for an unsafe URL such as `javascript:`. */
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.map((n) => $findMatchingParent(n, $isPayloadLinkNode)).find(Boolean);
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: "Apply" })] }))] }));
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 (node && $isTextNode(node))
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":"AAAA,YAAY,CAAA;;AAEZ;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,EAAE,WAAW,EAAE,SAAS,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AACjG,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAA;AAChE,OAAO,EAAE,yBAAyB,EAAE,MAAM,uCAAuC,CAAA;AACjF,OAAO,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAA;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAA;AACvE,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAA;AACnE,OAAO,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAA;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAA;AAC1E,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,cAAc,EACd,YAAY,GAEb,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EACL,WAAW,EACX,2BAA2B,EAC3B,6BAA6B,EAC7B,mBAAmB,GAEpB,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AACpD,OAAO,EACL,oBAAoB,EACpB,4BAA4B,EAC5B,0BAA0B,EAC1B,QAAQ,EACR,aAAa,EACb,iBAAiB,EACjB,WAAW,EACX,aAAa,EACb,mBAAmB,EAEnB,YAAY,EACZ,YAAY,GAEb,MAAM,SAAS,CAAA;AAChB,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAoB,MAAM,sBAAsB,CAAA;AAC9E,OAAO,EACL,MAAM,EACN,OAAO,EACP,SAAS,EACT,QAAQ,EACR,eAAe,GAGhB,MAAM,kCAAkC,CAAA;AACzC,OAAO,EAAE,sBAAsB,EAAE,kBAAkB,EAAwB,MAAM,YAAa,CAAA;AAC9F,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAC/C,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAEnF,OAAO,EAAE,eAAe,EAAE,CAAA;AAa1B,MAAM,aAAa,GAAiB;IAClC,IAAI,EAAE,KAAK;IACX,MAAM,EAAE,KAAK;IACb,SAAS,EAAE,KAAK;IAChB,KAAK,EAAE,WAAW;IAClB,IAAI,EAAE,KAAK;CACZ,CAAA;AAED,SAAS,gBAAgB;IACvB,MAAM,GAAG,GAAG,aAAa,EAAE,CAAA;IAC3B,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC;QAAE,OAAO,aAAa,CAAA;IACjD,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,CAAA;IACnC,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,yBAAyB,EAAE,CAAA;IACpF,MAAM,IAAI,GAAG,mBAAmB,CAAC,MAAM,EAAE,WAAW,CAAC,CAAA;IACrD,MAAM,KAAK,GAAc,IAAI;QAC3B,CAAC,CAAC,QAAQ,IAAI,CAAC,WAAW,EAAE,EAAE;QAC9B,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC;YACnB,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE;YACd,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC;gBACjB,CAAC,CAAC,OAAO;gBACT,CAAC,CAAC,WAAW,CAAA;IACnB,OAAO;QACL,IAAI,EAAE,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC;QAC3B,MAAM,EAAE,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC;QAC/B,SAAS,EAAE,GAAG,CAAC,SAAS,CAAC,WAAW,CAAC;QACrC,KAAK;QACL,IAAI,EAAE,CAAC,CAAC,mBAAmB,CAAC,MAAM,EAAE,kBAAkB,CAAC;KACxD,CAAA;AACH,CAAC;AAED;;;;;GAKG;AACH,SAAS,aAAa,CAAC,MAAqB;IAC1C,MAAM,GAAG,GAAG,MAAM,CAAC,YAAY,EAAE,CAAA;IACjC,MAAM,IAAI,GAAG,MAAM,CAAC,cAAc,EAAE,CAAA;IACpC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC;QAAE,OAAM;IAC9E,MAAM,CAAC,MAAM,CACX,GAAG,EAAE;QACH,MAAM,GAAG,GAAG,4BAA4B,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;QACrD,IAAI,GAAG;YAAE,aAAa,CAAC,GAAG,CAAC,CAAA;IAC7B,CAAC,EACD,EAAE,QAAQ,EAAE,IAAI,EAAE,CACnB,CAAA;AACH,CAAC;AAED,wDAAwD;AACxD,SAAS,cAAc,CAAC,MAAqB;IAC3C,IAAI,GAAuB,CAAA;IAC3B,MAAM,CAAC,cAAc,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;QAChC,MAAM,GAAG,GAAG,aAAa,EAAE,CAAA;QAC3B,IAAI,iBAAiB,CAAC,GAAG,CAAC;YACxB,GAAG,GAAG,mBAAmB,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,kBAAkB,CAAC,EAAE,SAAS,EAAE,CAAC,GAAG,CAAA;IACxF,CAAC,CAAC,CAAA;IACF,OAAO,GAAG,CAAA;AACZ,CAAC;AAED;;;GAGG;AACH,SAAS,SAAS,CAAC,MAAqB,EAAE,MAAc,EAAE,KAA2B;IACnF,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,EAAE,CAAA;IACzB,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;QAAE,OAAO,KAAK,CAAA;IAC1C,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE;QACjB,0EAA0E;QAC1E,IAAI,KAAK;YAAE,aAAa,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAA;QACvC,MAAM,GAAG,GAAG,aAAa,EAAE,CAAA;QAC3B,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC;YAAE,OAAM;QACnC,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,EAAE,CAAA;QAC3B,MAAM,QAAQ,GAAG,KAAK;aACnB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,mBAAmB,CAAC,CAAC,EAAE,kBAAkB,CAAC,CAAC;aACtD,IAAI,CAAC,CAAC,CAAC,EAAwB,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAA;QAChD,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,CAAC,GAAG,EAAE,CAAC;gBACT,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,WAAW,EAAE;oBAAE,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,CAAA;gBACxE,QAAQ,CAAC,MAAM,EAAE,CAAA;YACnB,CAAC;iBAAM,CAAC;gBACN,QAAQ,CAAC,SAAS,CAAC,EAAE,GAAG,QAAQ,CAAC,SAAS,EAAE,EAAE,GAAG,EAAE,CAAC,CAAA;YACtD,CAAC;YACD,OAAM;QACR,CAAC;QACD,IAAI,CAAC,GAAG;YAAE,OAAM;QAChB,IAAI,IAAI,GAA2B,IAAI,CAAA;QACvC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,mBAAmB,CAAC,IAAI,EAAE,kBAAkB,CAAC;gBAAE,SAAQ;YACjF,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,kBAAkB,EAAE,KAAK,IAAI,EAAE,CAAC;gBAChD,qDAAqD;gBACrD,IAAI,GAAG,sBAAsB,CAC3B,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,EACzD,QAAQ,EAAE,CACX,CAAA;gBACD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;YACzB,CAAC;YACD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QACnB,CAAC;IACH,CAAC,CAAC,CAAA;IACF,OAAO,IAAI,CAAA;AACb,CAAC;AAED,iGAAiG;AACjG,SAAS,UAAU,CAAC,EAClB,KAAK,EACL,KAAK,EACL,OAAO,GAAG,KAAK,EACf,QAAQ,EACR,EAAE,GAOH;IACC,MAAM,CAAC,MAAM,CAAC,GAAG,yBAAyB,EAAE,CAAA;IAC5C,OAAO,CACL,iBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,QAAQ,EAClB,KAAK,EAAE,KAAK,gBACA,KAAK,kBACH,OAAO,iBACR,aAAa,EAAE,EAAE,EAC9B,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC,iCAAiC,EACxE,OAAO,EAAE,GAAG,EAAE;YACZ,aAAa,CAAC,MAAM,CAAC,CAAA;YACrB,QAAQ,EAAE,CAAA;QACZ,CAAC,YAEA,KAAK,GACC,CACV,CAAA;AACH,CAAC;AAED,SAAS,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC,EAAwC;IAClE,MAAM,CAAC,MAAM,CAAC,GAAG,yBAAyB,EAAE,CAAA;IAC5C,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAe,aAAa,CAAC,CAAA;IAC/D,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAA;IAC/D,MAAM,cAAc,GAAG,MAAM,CAAuB,IAAI,CAAC,CAAA;IACzD,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IACjD,MAAM,QAAQ,GAAG,GAAG,EAAE;QACpB,MAAM,CAAC,cAAc,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;YAChC,cAAc,CAAC,OAAO,GAAG,aAAa,EAAE,EAAE,KAAK,EAAE,IAAI,IAAI,CAAA;QAC3D,CAAC,CAAC,CAAA;QACF,YAAY,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,UAAU,CAAC,CAAA;IACpD,CAAC,CAAA;IACD,MAAM,QAAQ,GAAG,GAAG,EAAE;QACpB,IAAI,SAAS,KAAK,IAAI;YAAE,OAAM;QAC9B,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,KAAK,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;YAC1F,YAAY,CAAC,IAAI,CAAC,CAAA;YAClB,OAAM;QACR,CAAC;QACD,YAAY,CAAC,KAAK,CAAC,CAAA;QACnB,YAAY,CAAC,IAAI,CAAC,CAAA;QAClB,MAAM,CAAC,KAAK,EAAE,CAAA;IAChB,CAAC,CAAA;IACD,SAAS,CACP,GAAG,EAAE,CACH,MAAM,CAAC,sBAAsB,CAAC,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAChD,WAAW,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,gBAAgB,EAAE,CAAC,CAAC,CACrD,EACH,CAAC,MAAM,CAAC,CACT,CAAA;IAED,MAAM,QAAQ,GAAG,CAAC,IAAyC,EAAE,EAAE,CAC7D,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE;QACjB,MAAM,GAAG,GAAG,aAAa,EAAE,CAAA;QAC3B,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC;YAAE,OAAM;QACnC,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAA;QACxD,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,CACvB,MAAM,KAAK,WAAW;YACpB,CAAC,CAAC,oBAAoB,EAAE;YACxB,CAAC,CAAC,MAAM,KAAK,OAAO;gBAClB,CAAC,CAAC,gBAAgB,EAAE;gBACpB,CAAC,CAAC,kBAAkB,CAAC,MAAM,CAAC,CACjC,CAAA;IACH,CAAC,CAAC,CAAA;IACJ,MAAM,IAAI,GAAG,CAAC,IAAyB,EAAE,EAAE;QACzC,IAAI,KAAK,CAAC,KAAK,KAAK,QAAQ,IAAI,EAAE;YAAE,MAAM,CAAC,eAAe,CAAC,mBAAmB,EAAE,SAAS,CAAC,CAAA;;YAExF,MAAM,CAAC,eAAe,CACpB,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,2BAA2B,EAC/E,SAAS,CACV,CAAA;IACL,CAAC,CAAA;IACD,OAAO,CACL,eAAK,SAAS,EAAC,eAAe,EAAC,IAAI,EAAC,SAAS,gBAAa,CAAC,CAAC,YAAY,CAAC,aACvE,KAAC,UAAU,IACT,KAAK,EAAE,4BAAQ,EACf,KAAK,EAAE,CAAC,CAAC,SAAS,CAAC,EACnB,OAAO,EAAE,KAAK,CAAC,IAAI,EACnB,QAAQ,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,mBAAmB,EAAE,MAAM,CAAC,EACnE,EAAE,EAAC,MAAM,GACT,EACF,KAAC,UAAU,IACT,KAAK,EAAE,4BAAQ,EACf,KAAK,EAAE,CAAC,CAAC,WAAW,CAAC,EACrB,OAAO,EAAE,KAAK,CAAC,MAAM,EACrB,QAAQ,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,mBAAmB,EAAE,QAAQ,CAAC,EACrE,EAAE,EAAC,QAAQ,GACX,EACF,KAAC,UAAU,IACT,KAAK,EAAE,4BAAQ,EACf,KAAK,EAAE,CAAC,CAAC,cAAc,CAAC,EACxB,OAAO,EAAE,KAAK,CAAC,SAAS,EACxB,QAAQ,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,mBAAmB,EAAE,WAAW,CAAC,EACxE,EAAE,EAAC,WAAW,GACd,EACF,KAAC,UAAU,IACT,KAAK,EAAC,cAAI,EACV,KAAK,EAAE,CAAC,CAAC,SAAS,CAAC,EACnB,OAAO,EAAE,KAAK,CAAC,IAAI,EACnB,QAAQ,EAAE,QAAQ,EAClB,EAAE,EAAC,MAAM,GACT,EACF,KAAC,UAAU,IACT,KAAK,EAAC,IAAI,EACV,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,EACjB,OAAO,EAAE,KAAK,CAAC,KAAK,KAAK,IAAI,EAC7B,QAAQ,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAC9B,EAAE,EAAC,IAAI,GACP,EACF,KAAC,UAAU,IACT,KAAK,EAAC,IAAI,EACV,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,EACjB,OAAO,EAAE,KAAK,CAAC,KAAK,KAAK,IAAI,EAC7B,QAAQ,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAC9B,EAAE,EAAC,IAAI,GACP,EACF,KAAC,UAAU,IACT,KAAK,EAAC,QAAG,EACT,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,EACjB,OAAO,EAAE,KAAK,CAAC,KAAK,KAAK,aAAa,EACtC,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAC9B,EAAE,EAAC,IAAI,GACP,EACF,KAAC,UAAU,IACT,KAAK,EAAC,IAAI,EACV,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,EACjB,OAAO,EAAE,KAAK,CAAC,KAAK,KAAK,aAAa,EACtC,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAC9B,EAAE,EAAC,IAAI,GACP,EACF,KAAC,UAAU,IACT,KAAK,EAAC,QAAG,EACT,KAAK,EAAE,CAAC,CAAC,UAAU,CAAC,EACpB,OAAO,EAAE,KAAK,CAAC,KAAK,KAAK,OAAO,EAChC,QAAQ,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,EACjC,EAAE,EAAC,OAAO,GACV,EACF,KAAC,UAAU,IACT,KAAK,EAAC,QAAG,EACT,KAAK,EAAE,CAAC,CAAC,WAAW,CAAC,EACrB,QAAQ,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,YAAY,EAAE,SAAS,CAAC,EAC/D,EAAE,EAAC,MAAM,GACT,EACF,KAAC,UAAU,IACT,KAAK,EAAC,QAAG,EACT,KAAK,EAAE,CAAC,CAAC,WAAW,CAAC,EACrB,QAAQ,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,YAAY,EAAE,SAAS,CAAC,EAC/D,EAAE,EAAC,MAAM,GACT,EACF,KAAC,UAAU,IAAC,KAAK,EAAE,CAAC,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAC,MAAM,GAAG,EACnF,SAAS,KAAK,IAAI,IAAI,CACrB,gBAAM,KAAK,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE,GAAG,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,aAC5D,gBACE,SAAS,EAAC,UAAU,EACpB,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,EACjC,KAAK,EAAE,SAAS,kBACF,SAAS,IAAI,SAAS,EACpC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,SAAS,EAClD,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,EACxB,WAAW,EAAE,CAAC,CAAC,oBAAoB,CAAC,EACpC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAC7C,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE;4BACf,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO,EAAE,CAAC;gCACtB,CAAC,CAAC,cAAc,EAAE,CAAA;gCAClB,QAAQ,EAAE,CAAA;4BACZ,CAAC;iCAAM,IAAI,CAAC,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;gCAC9B,CAAC,CAAC,cAAc,EAAE,CAAA;gCAClB,CAAC,CAAC,eAAe,EAAE,CAAA;gCACnB,YAAY,CAAC,IAAI,CAAC,CAAA;4BACpB,CAAC;wBACH,CAAC,iBACW,sBAAsB,GAClC,EACF,iBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,QAAQ,EAClB,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,cAAc,EAAE,EACtC,OAAO,EAAE,QAAQ,iBACL,sBAAsB,YAEjC,CAAC,CAAC,cAAc,CAAC,GACX,IACJ,CACR,IACG,CACP,CAAA;AACH,CAAC;AAED;;;;GAIG;AACH,SAAS,MAAM,CAAC,EACd,OAAO,EACP,KAAK,GAIN;IACC,MAAM,CAAC,MAAM,CAAC,GAAG,yBAAyB,EAAE,CAAA;IAC5C,SAAS,CAAC,GAAG,EAAE;QACb,OAAO,CAAC,MAAM,CAAC,CAAA;QACf,MAAM,IAAI,GAAG,MAAM,CAAC,cAAc,EAAE,CAAA;QACpC,IAAI,CAAC,IAAI;YAAE,OAAM;QACjB,sEAAsE;QACtE,IAAI,GAAG,GAAG,qBAAqB,CAC7B,GAAG,EAAE,CACH,CAAC,GAAG,GAAG,qBAAqB,CAAC,GAAG,EAAE;YAChC,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;YAC/C,2EAA2E;YAC3E,8CAA8C;YAC9C,IAAI,CAAC,KAAK,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAA;YACnC,MAAM,CAAC,MAAM,CACX,GAAG,EAAE;gBACH,MAAM,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,0BAA0B,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;gBAC9D,IAAI,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC;oBAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;;oBAC5D,QAAQ,EAAE,CAAC,SAAS,EAAE,CAAA;YAC7B,CAAC,EACD,EAAE,QAAQ,EAAE,IAAI,EAAE,CACnB,CAAA;QACH,CAAC,CAAC,CAAC,CACN,CAAA;QACD,OAAO,GAAG,EAAE,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAA;IACxC,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAA;IAC5B,OAAO,IAAI,CAAA;AACb,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,EAC7B,KAAK,EACL,KAAK,EACL,OAAO,EACP,MAAM,EACN,KAAK,EACL,KAAK,EACL,IAAI,EACJ,KAAK,EACL,CAAC,GAC6B;IAC9B,MAAM,GAAG,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAA;IACxC,MAAM,SAAS,GAAG,MAAM,CAAuB,IAAI,CAAC,CAAA;IACpD,MAAM,QAAQ,GAAG,MAAM,CAAgB,IAAI,CAAC,CAAA;IAC5C,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA;IAC1B,6EAA6E;IAC7E,MAAM,CAAC,SAAS,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE;QAChC,MAAM,GAAG,GAAG,OAAO,EAAE,EAAE,SAAS,CAAA;QAChC,OAAO,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAA;IAC3C,CAAC,CAAC,CAAA;IACF,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,MAAqB,EAAE,EAAE;QACpD,SAAS,CAAC,OAAO,GAAG,MAAM,CAAA;QAC1B,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,MAAM,EAAE,CAAC,CAAA;IACrE,CAAC,EAAE,EAAE,CAAC,CAAA;IACN,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA,CAAC,kDAAkD;IAE/H,eAAe,CAAC,GAAG,EAAE;QACnB,MAAM,EAAE,GAAG,OAAO,EAAE,CAAA;QACpB,IAAI,EAAE,EAAE,CAAC;YACP,wEAAwE;YACxE,IAAI,GAAG,CAAC,OAAO;gBAAE,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC,CAAA;YAC3C,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QACjC,CAAC;QACD,OAAO,GAAG,EAAE,CAAC,OAAO,EAAE,EAAE,eAAe,CAAC,MAAM,CAAC,CAAA;QAC/C,uDAAuD;IACzD,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,qEAAqE;IACrE,eAAe,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE;QAC9B,IAAI,CAAC,GAAG,CAAC,OAAO;YAAE,OAAM;QACxB,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC;YAAE,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QAC7D,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC,CAAA;IAC5B,CAAC,CAAC,CAAA;IAEF,MAAM,MAAM,GAAG,CAAC,IAAa,EAAE,EAAE;QAC/B,IAAI,IAAI,CAAC,OAAO;YAAE,OAAM;QACxB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAA;QACnB,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAA;QAChC,IAAI,IAAI,IAAI,MAAM,EAAE,CAAC;YACnB,MAAM,IAAI,GAAG,MAAM,CAAC,cAAc,EAAE,CAAC,MAAM,EAAE,CAAA;YAC7C,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,QAAQ,CAAC,OAAO,EAAE,CAAC;gBAC9C,MAAM,IAAI,GAAG,eAAe,CAAC,IAAI,CAAC,CAAA;gBAClC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;gBACxD,MAAM,OAAO,GAAG,MAAM,CAAC,cAAc,EAAE,CAAA;gBACvC,IAAI,CAAC,IAAI,IAAI,OAAO;oBAAE,KAAK,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,SAAS,EAAE,SAAS,EAAE,CAAC,CAAA;YACrE,CAAC;QACH,CAAC;QACD,KAAK,EAAE,CAAA;IACT,CAAC,CAAA;IAED,2DAA2D;IAC3D,sCAAsC;IACtC,MAAM,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAe,EAAE,EAAE;QAC7C,IAAI,GAAG,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAc,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,CAAA;IAC1E,CAAC,CAAC,CAAA;IACF,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAgB,EAAE,EAAE;QAC7C,IAAI,CAAC,CAAC,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;YACxE,CAAC,CAAC,cAAc,EAAE,CAAA;YAClB,MAAM,CAAC,KAAK,CAAC,CAAA;QACf,CAAC;IACH,CAAC,CAAC,CAAA;IACF,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,MAAM,GAAG,CAAC,CAAe,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;QAChD,MAAM,KAAK,GAAG,CAAC,CAAgB,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;QAC/C,QAAQ,CAAC,gBAAgB,CAAC,aAAa,EAAE,MAAM,EAAE,IAAI,CAAC,CAAA;QACtD,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA;QAC3C,OAAO,GAAG,EAAE;YACV,QAAQ,CAAC,mBAAmB,CAAC,aAAa,EAAE,MAAM,EAAE,IAAI,CAAC,CAAA;YACzD,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA;QAChD,CAAC,CAAA;IACH,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAA;IAEzB,OAAO,CACL,cACE,GAAG,EAAE,GAAG,EACR,SAAS,EAAC,OAAO,EACjB,IAAI,EAAC,OAAO,gBACA,CAAC,CAAC,cAAc,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,iBACzC,wBAAwB,YAEpC,MAAC,eAAe,IACd,aAAa,EAAE;gBACb,SAAS,EAAE,gBAAgB;gBAC3B,KAAK,EAAE,eAAe;gBACtB,WAAW,EAAE,YAAY;gBACzB,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,KAAK,CAAC;gBACtE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE;aACrE,aAED,KAAC,OAAO,IAAC,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,GAAI,EAC7C,KAAC,cAAc,IACb,eAAe,EACb,KAAC,eAAe,IACd,SAAS,EAAE,GAAG,SAAS,gBAAgB,gBAC3B,CAAC,CAAC,cAAc,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,GACrD,EAEJ,aAAa,EAAE,oBAAoB,GACnC,EACF,KAAC,aAAa,KAAG,EACjB,KAAC,UAAU,KAAG,EACd,KAAC,MAAM,IAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,GAAI,IAC1B,GACd,CACP,CAAA;AACH,CAAC"}
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
- export declare function fromEditorState(state: RichTextState): RichTextState;
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
@@ -1 +1 @@
1
- {"version":3,"file":"convert.d.ts","sourceRoot":"","sources":["../src/convert.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAqC,KAAK,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAG3F,eAAO,MAAM,mBAAmB,aAW9B,CAAA;AAGF,MAAM,MAAM,aAAa,GAAG,YAAY,CAAA;AAExC,eAAO,MAAM,WAAW,EAAE,aAWzB,CAAA;AAYD,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,aAAa,CAItE;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,aAAa,CAM3D;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,aAAa,GAAG,aAAa,CAEnE;AAED,0EAA0E;AAC1E,wBAAgB,SAAS,CAAC,KAAK,EAAE,aAAa,GAAG,MAAM,CAMtD"}
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
- if (!root.children?.length)
50
- root.children = EMPTY_STATE.root.children;
51
- return { root };
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
- return { root: unwrap(state.root) };
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
@@ -1 +1 @@
1
- {"version":3,"file":"convert.js","sourceRoot":"","sources":["../src/convert.ts"],"names":[],"mappings":"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"}
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 { EditorRegistry } from '@payload-onpage/react/editor-kit';
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';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;GAWG;AACH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAA;AAOtE,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"}
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;AAeZ,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,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,cAAc,EAAE;CACxD,CAAA;AAED,OAAO,EACL,aAAa,EACb,eAAe,EACf,SAAS,EACT,eAAe,GAEhB,MAAM,cAAc,CAAA;AACrB,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,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?: string;
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);
@@ -1 +1 @@
1
- {"version":3,"file":"nodes.d.ts","sourceRoot":"","sources":["../src/nodes.tsx"],"names":[],"mappings":"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"}
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
- return $createPayloadLinkNode(json.fields ?? {}, json.id).updateFromJSON(json);
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: { ...this.getLatest().__fields },
52
- ...(this.getLatest().__linkId ? { id: this.getLatest().__linkId } : {}),
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":"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"}
1
+ {"version":3,"file":"nodes.js","sourceRoot":"","sources":["../src/nodes.tsx"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@payload-onpage/lexical",
3
- "version": "0.2.1",
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.2.1",
57
- "@payload-onpage/react": "0.2.1"
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",
@@ -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 { eachLexicalNode, newRowId, safeLinkUrl } from '@payload-onpage/core'
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, type RichTextState } from './convert.ts'
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: string
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
- /** Link the selection to `url`; an empty url removes the link around it. */
125
- /** Link the selection; returns false (and changes nothing) for an unsafe URL such as `javascript:`. */
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.map((n) => $findMatchingParent(n, $isPayloadLinkNode)).find(Boolean) as
136
- PayloadLinkNode | undefined
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
- Apply
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 (node && $isTextNode(node)) node.select(hit!.offset, hit!.offset)
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() as unknown as RichTextState
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 { eachLexicalNode, type LexicalNode, type LexicalState } from '@payload-onpage/core'
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
- if (!root.children?.length) root.children = EMPTY_STATE.root.children
59
- return { root }
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
- export function fromEditorState(state: RichTextState): RichTextState {
63
- return { root: unwrap(state.root) }
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 { EditorRegistry } from '@payload-onpage/react/editor-kit'
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?: string
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
- return $createPayloadLinkNode(json.fields ?? {}, json.id).updateFromJSON(json)
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: { ...this.getLatest().__fields },
90
- ...(this.getLatest().__linkId ? { id: this.getLatest().__linkId } : {}),
93
+ fields: { ...latest.__fields },
94
+ ...(latest.__linkId ? { id: latest.__linkId } : {}),
91
95
  }
92
96
  }
93
97