@payloadcms/richtext-lexical 3.80.0-internal-debug.4c84b90 → 3.80.0-internal-debug.7019cc9
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/features/blocks/client/component/index.d.ts.map +1 -1
- package/dist/features/blocks/client/component/index.js +67 -62
- package/dist/features/blocks/client/component/index.js.map +1 -1
- package/dist/features/blocks/client/componentInline/index.d.ts.map +1 -1
- package/dist/features/blocks/client/componentInline/index.js +69 -72
- package/dist/features/blocks/client/componentInline/index.js.map +1 -1
- package/package.json +6 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/features/blocks/client/component/index.tsx"],"names":[],"mappings":"AAkCA,OAAO,KAAkD,MAAM,OAAO,CAAA;AAGtE,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAA;AACtE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAA;AAEnE,OAAO,cAAc,CAAA;AAWrB,MAAM,MAAM,mBAAmB,CAAC,SAAS,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,WAAW,IAAI;IACzF;;;;OAIG;IACH,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B;;;OAGG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,0BAA0B,CAAC,CAAA;IAC3D;;;OAGG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,0BAA0B,CAAC,CAAA;IAC3D;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAA;IAC5B;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CACzB,CAAA;AAED,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/features/blocks/client/component/index.tsx"],"names":[],"mappings":"AAkCA,OAAO,KAAkD,MAAM,OAAO,CAAA;AAGtE,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAA;AACtE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAA;AAEnE,OAAO,cAAc,CAAA;AAWrB,MAAM,MAAM,mBAAmB,CAAC,SAAS,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,WAAW,IAAI;IACzF;;;;OAIG;IACH,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B;;;OAGG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,0BAA0B,CAAC,CAAA;IAC3D;;;OAGG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,0BAA0B,CAAC,CAAA;IAC3D;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAA;IAC5B;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CACzB,CAAA;AAED,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CAmpBxD,CAAA"}
|
|
@@ -92,42 +92,74 @@ import { removeEmptyArrayValues } from './removeEmptyArrayValues.js';
|
|
|
92
92
|
}, [
|
|
93
93
|
cacheBuster
|
|
94
94
|
]);
|
|
95
|
+
const [formUuid] = React.useState(()=>uuid());
|
|
96
|
+
// Server-rendered custom components (from admin.components, NOT viewMap).
|
|
97
|
+
// When viewMap components exist (CustomBlockFromProps/CustomLabelFromProps),
|
|
98
|
+
// we render them directly with formData instead, so these states are unused.
|
|
95
99
|
const [CustomLabel, setCustomLabel] = React.useState(()=>{
|
|
96
100
|
if (CustomLabelFromProps) {
|
|
97
|
-
return
|
|
101
|
+
return undefined;
|
|
102
|
+
}
|
|
103
|
+
// @ts-expect-error - vestiges of when tsconfig was not strict. Feel free to improve
|
|
104
|
+
return initialState?.['_components']?.customComponents?.BlockLabel ?? undefined;
|
|
105
|
+
});
|
|
106
|
+
const [CustomBlock, setCustomBlock] = React.useState(()=>{
|
|
107
|
+
if (CustomBlockFromProps) {
|
|
108
|
+
return undefined;
|
|
109
|
+
}
|
|
110
|
+
// @ts-expect-error - vestiges of when tsconfig was not strict. Feel free to improve
|
|
111
|
+
return initialState?.['_components']?.customComponents?.Block ?? undefined;
|
|
112
|
+
});
|
|
113
|
+
// When viewMap components exist, render directly with formData (always current from
|
|
114
|
+
// the lexical node). When they don't, fall back to server-rendered state.
|
|
115
|
+
const resolvedCustomBlock = useMemo(()=>{
|
|
116
|
+
if (CustomBlockFromProps) {
|
|
117
|
+
return /*#__PURE__*/ _jsxDEV(CustomBlockFromProps, {
|
|
98
118
|
className: baseClass,
|
|
99
119
|
formData: formData,
|
|
100
120
|
isEditor: true,
|
|
101
121
|
isJSXConverter: false,
|
|
102
122
|
nodeKey: nodeKey,
|
|
123
|
+
// eslint-disable-next-line react-compiler/react-compiler -- intentionally passed as a prop for custom block components to call
|
|
103
124
|
useBlockComponentContext: useBlockComponentContext
|
|
104
125
|
}, void 0, false, {
|
|
105
126
|
fileName: "src/features/blocks/client/component/index.tsx",
|
|
106
|
-
lineNumber:
|
|
127
|
+
lineNumber: 199,
|
|
107
128
|
columnNumber: 9
|
|
108
129
|
}, this);
|
|
109
130
|
}
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
131
|
+
return CustomBlock;
|
|
132
|
+
}, [
|
|
133
|
+
CustomBlockFromProps,
|
|
134
|
+
baseClass,
|
|
135
|
+
formData,
|
|
136
|
+
nodeKey,
|
|
137
|
+
CustomBlock
|
|
138
|
+
]);
|
|
139
|
+
const resolvedCustomLabel = useMemo(()=>{
|
|
140
|
+
if (CustomLabelFromProps) {
|
|
141
|
+
return /*#__PURE__*/ _jsxDEV(CustomLabelFromProps, {
|
|
116
142
|
className: baseClass,
|
|
117
143
|
formData: formData,
|
|
118
144
|
isEditor: true,
|
|
119
145
|
isJSXConverter: false,
|
|
120
146
|
nodeKey: nodeKey,
|
|
147
|
+
// eslint-disable-next-line react-compiler/react-compiler -- intentionally passed as a prop for custom block components to call
|
|
121
148
|
useBlockComponentContext: useBlockComponentContext
|
|
122
149
|
}, void 0, false, {
|
|
123
150
|
fileName: "src/features/blocks/client/component/index.tsx",
|
|
124
|
-
lineNumber:
|
|
151
|
+
lineNumber: 216,
|
|
125
152
|
columnNumber: 9
|
|
126
153
|
}, this);
|
|
127
154
|
}
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
155
|
+
return CustomLabel;
|
|
156
|
+
}, [
|
|
157
|
+
CustomLabelFromProps,
|
|
158
|
+
baseClass,
|
|
159
|
+
formData,
|
|
160
|
+
nodeKey,
|
|
161
|
+
CustomLabel
|
|
162
|
+
]);
|
|
131
163
|
// Initial state for newly created blocks
|
|
132
164
|
useEffect(()=>{
|
|
133
165
|
const abortController = new AbortController();
|
|
@@ -257,36 +289,10 @@ import { removeEmptyArrayValues } from './removeEmptyArrayValues.js';
|
|
|
257
289
|
});
|
|
258
290
|
}, 0);
|
|
259
291
|
if (submit) {
|
|
260
|
-
if (CustomLabelFromProps) {
|
|
261
|
-
setCustomLabel(/*#__PURE__*/ _jsxDEV(CustomLabelFromProps, {
|
|
262
|
-
className: baseClass,
|
|
263
|
-
formData: newFormStateData,
|
|
264
|
-
isEditor: true,
|
|
265
|
-
isJSXConverter: false,
|
|
266
|
-
nodeKey: nodeKey,
|
|
267
|
-
useBlockComponentContext: useBlockComponentContext
|
|
268
|
-
}, void 0, false, {
|
|
269
|
-
fileName: "src/features/blocks/client/component/index.tsx",
|
|
270
|
-
lineNumber: 370,
|
|
271
|
-
columnNumber: 13
|
|
272
|
-
}, this));
|
|
273
|
-
} else {
|
|
292
|
+
if (!CustomLabelFromProps) {
|
|
274
293
|
setCustomLabel(newFormState._components?.customComponents?.BlockLabel ?? undefined);
|
|
275
294
|
}
|
|
276
|
-
if (CustomBlockFromProps) {
|
|
277
|
-
setCustomBlock(/*#__PURE__*/ _jsxDEV(CustomBlockFromProps, {
|
|
278
|
-
className: baseClass,
|
|
279
|
-
formData: newFormStateData,
|
|
280
|
-
isEditor: true,
|
|
281
|
-
isJSXConverter: false,
|
|
282
|
-
nodeKey: nodeKey,
|
|
283
|
-
useBlockComponentContext: useBlockComponentContext
|
|
284
|
-
}, void 0, false, {
|
|
285
|
-
fileName: "src/features/blocks/client/component/index.tsx",
|
|
286
|
-
lineNumber: 384,
|
|
287
|
-
columnNumber: 13
|
|
288
|
-
}, this));
|
|
289
|
-
} else {
|
|
295
|
+
if (!CustomBlockFromProps) {
|
|
290
296
|
setCustomBlock(newFormState._components?.customComponents?.Block ?? undefined);
|
|
291
297
|
}
|
|
292
298
|
let rowErrorCount = 0;
|
|
@@ -310,7 +316,6 @@ import { removeEmptyArrayValues } from './removeEmptyArrayValues.js';
|
|
|
310
316
|
isEditable,
|
|
311
317
|
editor,
|
|
312
318
|
nodeKey,
|
|
313
|
-
baseClass,
|
|
314
319
|
CustomBlockFromProps,
|
|
315
320
|
CustomLabelFromProps
|
|
316
321
|
]);
|
|
@@ -419,7 +424,7 @@ import { removeEmptyArrayValues } from './removeEmptyArrayValues.js';
|
|
|
419
424
|
header: /*#__PURE__*/ _jsxDEV("div", {
|
|
420
425
|
className: `${baseClass}__block-header`,
|
|
421
426
|
children: [
|
|
422
|
-
typeof Label !== 'undefined' ? Label : typeof
|
|
427
|
+
typeof Label !== 'undefined' ? Label : typeof resolvedCustomLabel !== 'undefined' ? resolvedCustomLabel : /*#__PURE__*/ _jsxDEV("div", {
|
|
423
428
|
className: `${baseClass}__block-label`,
|
|
424
429
|
children: [
|
|
425
430
|
typeof CustomPill !== 'undefined' ? CustomPill : /*#__PURE__*/ _jsxDEV(Pill, {
|
|
@@ -459,14 +464,14 @@ import { removeEmptyArrayValues } from './removeEmptyArrayValues.js';
|
|
|
459
464
|
className: `${baseClass}__block-actions`,
|
|
460
465
|
children: typeof Actions !== 'undefined' ? Actions : /*#__PURE__*/ _jsxDEV(_Fragment, {
|
|
461
466
|
children: [
|
|
462
|
-
|
|
467
|
+
resolvedCustomBlock && editButton !== false || !resolvedCustomBlock && editButton ? /*#__PURE__*/ _jsxDEV(EditButton, {}, void 0, false, {
|
|
463
468
|
fileName: "src/features/blocks/client/component/index.tsx",
|
|
464
|
-
lineNumber:
|
|
469
|
+
lineNumber: 580,
|
|
465
470
|
columnNumber: 27
|
|
466
471
|
}, void 0) : null,
|
|
467
472
|
removeButton !== false && isEditable ? /*#__PURE__*/ _jsxDEV(RemoveButton, {}, void 0, false, {
|
|
468
473
|
fileName: "src/features/blocks/client/component/index.tsx",
|
|
469
|
-
lineNumber:
|
|
474
|
+
lineNumber: 582,
|
|
470
475
|
columnNumber: 65
|
|
471
476
|
}, void 0) : null
|
|
472
477
|
]
|
|
@@ -500,8 +505,8 @@ import { removeEmptyArrayValues } from './removeEmptyArrayValues.js';
|
|
|
500
505
|
columnNumber: 11
|
|
501
506
|
}, this);
|
|
502
507
|
}, [
|
|
503
|
-
|
|
504
|
-
|
|
508
|
+
resolvedCustomBlock,
|
|
509
|
+
resolvedCustomLabel,
|
|
505
510
|
EditButton,
|
|
506
511
|
RemoveButton,
|
|
507
512
|
blockDisplayName,
|
|
@@ -534,7 +539,7 @@ import { removeEmptyArrayValues } from './removeEmptyArrayValues.js';
|
|
|
534
539
|
readOnly: !isEditable
|
|
535
540
|
}, void 0, false, {
|
|
536
541
|
fileName: "src/features/blocks/client/component/index.tsx",
|
|
537
|
-
lineNumber:
|
|
542
|
+
lineNumber: 631,
|
|
538
543
|
columnNumber: 15
|
|
539
544
|
}, this),
|
|
540
545
|
/*#__PURE__*/ _jsxDEV(FormSubmit, {
|
|
@@ -542,19 +547,19 @@ import { removeEmptyArrayValues } from './removeEmptyArrayValues.js';
|
|
|
542
547
|
children: t('fields:saveChanges')
|
|
543
548
|
}, void 0, false, {
|
|
544
549
|
fileName: "src/features/blocks/client/component/index.tsx",
|
|
545
|
-
lineNumber:
|
|
550
|
+
lineNumber: 640,
|
|
546
551
|
columnNumber: 15
|
|
547
552
|
}, this)
|
|
548
553
|
]
|
|
549
554
|
}, void 0, true) : null
|
|
550
555
|
}, void 0, false, {
|
|
551
556
|
fileName: "src/features/blocks/client/component/index.tsx",
|
|
552
|
-
lineNumber:
|
|
557
|
+
lineNumber: 622,
|
|
553
558
|
columnNumber: 9
|
|
554
559
|
}, this)
|
|
555
560
|
}, void 0, false, {
|
|
556
561
|
fileName: "src/features/blocks/client/component/index.tsx",
|
|
557
|
-
lineNumber:
|
|
562
|
+
lineNumber: 621,
|
|
558
563
|
columnNumber: 7
|
|
559
564
|
}, this), [
|
|
560
565
|
initialState,
|
|
@@ -605,13 +610,13 @@ import { removeEmptyArrayValues } from './removeEmptyArrayValues.js';
|
|
|
605
610
|
toggleDrawer();
|
|
606
611
|
},
|
|
607
612
|
submitted: submitted,
|
|
608
|
-
uuid:
|
|
613
|
+
uuid: formUuid,
|
|
609
614
|
children: /*#__PURE__*/ _jsxDEV(BlockContent, {
|
|
610
615
|
baseClass: baseClass,
|
|
611
616
|
BlockDrawer: BlockDrawer,
|
|
612
617
|
Collapsible: BlockCollapsible,
|
|
613
|
-
CustomBlock:
|
|
614
|
-
CustomLabel:
|
|
618
|
+
CustomBlock: resolvedCustomBlock,
|
|
619
|
+
CustomLabel: resolvedCustomLabel,
|
|
615
620
|
EditButton: EditButton,
|
|
616
621
|
errorCount: errorCount,
|
|
617
622
|
formSchema: clientBlock?.fields ?? [],
|
|
@@ -620,24 +625,24 @@ import { removeEmptyArrayValues } from './removeEmptyArrayValues.js';
|
|
|
620
625
|
RemoveButton: RemoveButton
|
|
621
626
|
}, void 0, false, {
|
|
622
627
|
fileName: "src/features/blocks/client/component/index.tsx",
|
|
623
|
-
lineNumber:
|
|
628
|
+
lineNumber: 691,
|
|
624
629
|
columnNumber: 11
|
|
625
630
|
}, this)
|
|
626
631
|
}, void 0, false, {
|
|
627
632
|
fileName: "src/features/blocks/client/component/index.tsx",
|
|
628
|
-
lineNumber:
|
|
633
|
+
lineNumber: 666,
|
|
629
634
|
columnNumber: 9
|
|
630
635
|
}, this)
|
|
631
636
|
}, void 0, false, {
|
|
632
637
|
fileName: "src/features/blocks/client/component/index.tsx",
|
|
633
|
-
lineNumber:
|
|
638
|
+
lineNumber: 665,
|
|
634
639
|
columnNumber: 7
|
|
635
640
|
}, this);
|
|
636
641
|
}, [
|
|
637
642
|
BlockCollapsible,
|
|
638
643
|
BlockDrawer,
|
|
639
|
-
|
|
640
|
-
|
|
644
|
+
resolvedCustomBlock,
|
|
645
|
+
resolvedCustomLabel,
|
|
641
646
|
blockType,
|
|
642
647
|
drawerSlug,
|
|
643
648
|
RemoveButton,
|
|
@@ -647,7 +652,7 @@ import { removeEmptyArrayValues } from './removeEmptyArrayValues.js';
|
|
|
647
652
|
errorCount,
|
|
648
653
|
toggleDrawer,
|
|
649
654
|
clientBlock?.fields,
|
|
650
|
-
|
|
655
|
+
formUuid,
|
|
651
656
|
initialState,
|
|
652
657
|
nodeKey,
|
|
653
658
|
onChange,
|
|
@@ -666,12 +671,12 @@ import { removeEmptyArrayValues } from './removeEmptyArrayValues.js';
|
|
|
666
671
|
]
|
|
667
672
|
}, void 0, true, {
|
|
668
673
|
fileName: "src/features/blocks/client/component/index.tsx",
|
|
669
|
-
lineNumber:
|
|
674
|
+
lineNumber: 731,
|
|
670
675
|
columnNumber: 9
|
|
671
676
|
}, this)
|
|
672
677
|
}, void 0, false, {
|
|
673
678
|
fileName: "src/features/blocks/client/component/index.tsx",
|
|
674
|
-
lineNumber:
|
|
679
|
+
lineNumber: 730,
|
|
675
680
|
columnNumber: 7
|
|
676
681
|
}, this);
|
|
677
682
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/features/blocks/client/component/index.tsx"],"sourcesContent":["'use client'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext'\nimport { useLexicalEditable } from '@lexical/react/useLexicalEditable'\nimport { getTranslation } from '@payloadcms/translations'\nimport {\n Button,\n Collapsible,\n Drawer,\n EditDepthProvider,\n ErrorPill,\n Form,\n formatDrawerSlug,\n FormSubmit,\n Pill,\n RenderFields,\n SectionTitle,\n useConfig,\n useDocumentForm,\n useDocumentInfo,\n useEditDepth,\n useFormSubmitted,\n useServerFunctions,\n useTranslation,\n} from '@payloadcms/ui'\nimport { abortAndIgnore } from '@payloadcms/ui/shared'\nimport { $getNodeByKey } from 'lexical'\nimport {\n type BlocksFieldClient,\n type ClientBlock,\n type CollapsedPreferences,\n type FormState,\n} from 'payload'\nimport { deepCopyObjectSimpleWithoutReactComponents, reduceFieldsToValues } from 'payload/shared'\nimport React, { useCallback, useEffect, useMemo, useRef } from 'react'\nimport { v4 as uuid } from 'uuid'\n\nimport type { ViewMapBlockComponentProps } from '../../../../types.js'\nimport type { BlockFields } from '../../server/nodes/BlocksNode.js'\n\nimport './index.scss'\nimport { useEditorConfigContext } from '../../../../lexical/config/client/EditorConfigProvider.js'\nimport { useLexicalDrawer } from '../../../../utilities/fieldsDrawer/useLexicalDrawer.js'\nimport { $isBlockNode } from '../nodes/BlocksNode.js'\nimport {\n type BlockCollapsibleWithErrorProps,\n BlockContent,\n useBlockComponentContext,\n} from './BlockContent.js'\nimport { removeEmptyArrayValues } from './removeEmptyArrayValues.js'\n\nexport type BlockComponentProps<TFormData extends Record<string, unknown> = BlockFields> = {\n /**\n * Can be modified by the node in order to trigger the re-fetch of the initial state based on the\n * formData. This is useful when node.setFields() is explicitly called from outside of the form - in\n * this case, the new field state is likely not reflected in the form state, so we need to re-fetch\n */\n readonly cacheBuster: number\n readonly className: string\n /**\n * Custom block component from view map\n * Will be rendered with useBlockComponentContext hook.\n */\n readonly CustomBlock?: React.FC<ViewMapBlockComponentProps>\n /**\n * Custom block label from view map\n * Will be rendered with useBlockComponentContext hook.\n */\n readonly CustomLabel?: React.FC<ViewMapBlockComponentProps>\n /**\n * The block's form data (field values).\n */\n readonly formData: TFormData\n /**\n * The unique key identifying this block node in the current editor instance.\n */\n readonly nodeKey: string\n}\n\nexport const BlockComponent: React.FC<BlockComponentProps> = (props) => {\n const {\n cacheBuster,\n className: baseClass,\n CustomBlock: CustomBlockFromProps,\n CustomLabel: CustomLabelFromProps,\n formData,\n nodeKey,\n } = props\n\n const submitted = useFormSubmitted()\n const { id, collectionSlug, globalSlug } = useDocumentInfo()\n const {\n fieldProps: {\n featureClientSchemaMap,\n field: parentLexicalRichTextField,\n initialLexicalFormState,\n schemaPath,\n },\n uuid: uuidFromContext,\n } = useEditorConfigContext()\n\n const { fields: parentDocumentFields } = useDocumentForm()\n const onChangeAbortControllerRef = useRef(new AbortController())\n const editDepth = useEditDepth()\n const [errorCount, setErrorCount] = React.useState(0)\n\n const { config } = useConfig()\n\n const drawerSlug = formatDrawerSlug({\n slug: `lexical-blocks-create-${uuidFromContext}-${formData.id}`,\n depth: editDepth,\n })\n const { toggleDrawer } = useLexicalDrawer(drawerSlug)\n\n // Used for saving collapsed to preferences (and gettin' it from there again)\n // Remember, these preferences are scoped to the whole document, not just this form. This\n // is important to consider for the data path used in setDocFieldPreferences\n const { getDocPreferences, setDocFieldPreferences } = useDocumentInfo()\n const [editor] = useLexicalComposerContext()\n const isEditable = useLexicalEditable()\n\n const blockType = formData.blockType\n\n const { getFormState } = useServerFunctions()\n const schemaFieldsPath = `${schemaPath}.lexical_internal_feature.blocks.lexical_blocks.${blockType}.fields`\n\n const [initialState, setInitialState] = React.useState<false | FormState | undefined>(() => {\n // Initial form state that was calculated server-side. May have stale values\n const cachedFormState = initialLexicalFormState?.[formData.id]?.formState\n if (!cachedFormState) {\n return false\n }\n\n // Merge current formData values into the cached form state\n // This ensures that when the component remounts (e.g., due to view changes), we don't lose user edits\n const mergedState = Object.fromEntries(\n Object.entries(cachedFormState).map(([fieldName, fieldState]) => [\n fieldName,\n fieldName in formData\n ? {\n ...fieldState,\n initialValue: formData[fieldName],\n value: formData[fieldName],\n }\n : fieldState,\n ]),\n )\n\n // Manually add blockName, as it's not part of cachedFormState\n mergedState.blockName = {\n initialValue: formData.blockName,\n passesCondition: true,\n valid: true,\n value: formData.blockName,\n }\n\n return mergedState\n })\n\n const hasMounted = useRef(false)\n const prevCacheBuster = useRef(cacheBuster)\n useEffect(() => {\n if (hasMounted.current) {\n if (prevCacheBuster.current !== cacheBuster) {\n setInitialState(false)\n }\n prevCacheBuster.current = cacheBuster\n } else {\n hasMounted.current = true\n }\n }, [cacheBuster])\n\n const [CustomLabel, setCustomLabel] = React.useState<React.ReactNode | undefined>(() => {\n if (CustomLabelFromProps) {\n return (\n <CustomLabelFromProps\n className={baseClass}\n formData={formData}\n isEditor={true}\n isJSXConverter={false}\n nodeKey={nodeKey}\n useBlockComponentContext={useBlockComponentContext}\n />\n )\n }\n // @ts-expect-error - vestiges of when tsconfig was not strict. Feel free to improve\n return initialState?.['_components']?.customComponents?.BlockLabel ?? undefined\n })\n\n const [CustomBlock, setCustomBlock] = React.useState<React.ReactNode | undefined>(() => {\n if (CustomBlockFromProps) {\n return (\n <CustomBlockFromProps\n className={baseClass}\n formData={formData}\n isEditor={true}\n isJSXConverter={false}\n nodeKey={nodeKey}\n useBlockComponentContext={useBlockComponentContext}\n />\n )\n }\n // @ts-expect-error - vestiges of when tsconfig was not strict. Feel free to improve\n return initialState?.['_components']?.customComponents?.Block ?? undefined\n })\n\n // Initial state for newly created blocks\n useEffect(() => {\n const abortController = new AbortController()\n\n const awaitInitialState = async () => {\n /*\n * This will only run if a new block is created. For all existing blocks that are loaded when the document is loaded, or when the form is saved,\n * this is not run, as the lexical field RSC will fetch the state server-side and pass it to the client. That way, we avoid unnecessary client-side\n * requests. Though for newly created blocks, we need to fetch the state client-side, as the server doesn't know about the block yet.\n */\n const { state } = await getFormState({\n id,\n collectionSlug,\n data: formData,\n docPermissions: { fields: true },\n docPreferences: await getDocPreferences(),\n documentFormState: deepCopyObjectSimpleWithoutReactComponents(parentDocumentFields, {\n excludeFiles: true,\n }),\n globalSlug,\n initialBlockData: formData,\n operation: 'update',\n readOnly: !isEditable,\n renderAllFields: true,\n schemaPath: schemaFieldsPath,\n signal: abortController.signal,\n })\n\n if (state) {\n state.blockName = {\n initialValue: formData.blockName,\n passesCondition: true,\n valid: true,\n value: formData.blockName,\n }\n\n const newFormStateData: BlockFields = reduceFieldsToValues(\n deepCopyObjectSimpleWithoutReactComponents(state, { excludeFiles: true }),\n true,\n ) as BlockFields\n\n // Things like default values may come back from the server => update the node with the new data\n editor.update(() => {\n const node = $getNodeByKey(nodeKey)\n if (node && $isBlockNode(node)) {\n const newData = newFormStateData\n newData.blockType = blockType\n\n node.setFields(newData, true)\n }\n })\n\n setInitialState(state)\n if (!CustomLabelFromProps) {\n setCustomLabel(state._components?.customComponents?.BlockLabel ?? undefined)\n }\n if (!CustomBlockFromProps) {\n setCustomBlock(state._components?.customComponents?.Block ?? undefined)\n }\n }\n }\n\n if (formData && !initialState) {\n void awaitInitialState()\n }\n\n return () => {\n abortAndIgnore(abortController)\n }\n }, [\n getFormState,\n schemaFieldsPath,\n isEditable,\n id,\n CustomLabelFromProps,\n CustomBlockFromProps,\n formData,\n editor,\n nodeKey,\n initialState,\n collectionSlug,\n globalSlug,\n getDocPreferences,\n parentDocumentFields,\n blockType,\n ])\n\n const [isCollapsed, setIsCollapsed] = React.useState<boolean>(\n initialLexicalFormState?.[formData.id]?.collapsed ?? false,\n )\n\n const componentMapRenderedBlockPath = `${schemaPath}.lexical_internal_feature.blocks.lexical_blocks.${blockType}`\n\n const clientSchemaMap = featureClientSchemaMap['blocks']\n\n const blocksField: BlocksFieldClient | undefined = clientSchemaMap?.[\n componentMapRenderedBlockPath\n ]?.[0] as BlocksFieldClient\n\n const clientBlock: ClientBlock | undefined = blocksField.blockReferences\n ? typeof blocksField?.blockReferences?.[0] === 'string'\n ? config.blocksMap[blocksField?.blockReferences?.[0]]\n : blocksField?.blockReferences?.[0]\n : blocksField?.blocks?.[0]\n\n const { i18n, t } = useTranslation<object, string>()\n\n const onChange = useCallback(\n async ({ formState: prevFormState, submit }: { formState: FormState; submit?: boolean }) => {\n abortAndIgnore(onChangeAbortControllerRef.current)\n\n const controller = new AbortController()\n onChangeAbortControllerRef.current = controller\n\n const { state: newFormState } = await getFormState({\n id,\n collectionSlug,\n docPermissions: {\n fields: true,\n },\n docPreferences: await getDocPreferences(),\n documentFormState: deepCopyObjectSimpleWithoutReactComponents(parentDocumentFields, {\n excludeFiles: true,\n }),\n formState: prevFormState,\n globalSlug,\n initialBlockFormState: prevFormState,\n operation: 'update',\n readOnly: !isEditable,\n renderAllFields: submit ? true : false,\n schemaPath: schemaFieldsPath,\n signal: controller.signal,\n })\n\n if (!newFormState) {\n return prevFormState\n }\n\n if (prevFormState.blockName) {\n newFormState.blockName = prevFormState.blockName\n }\n\n const newFormStateData: BlockFields = reduceFieldsToValues(\n removeEmptyArrayValues({\n fields: deepCopyObjectSimpleWithoutReactComponents(newFormState, { excludeFiles: true }),\n }),\n true,\n ) as BlockFields\n\n setTimeout(() => {\n editor.update(() => {\n const node = $getNodeByKey(nodeKey)\n if (node && $isBlockNode(node)) {\n const newData = newFormStateData\n newData.blockType = blockType\n node.setFields(newData, true)\n }\n })\n }, 0)\n\n if (submit) {\n if (CustomLabelFromProps) {\n setCustomLabel(\n <CustomLabelFromProps\n className={baseClass}\n formData={newFormStateData}\n isEditor={true}\n isJSXConverter={false}\n nodeKey={nodeKey}\n useBlockComponentContext={useBlockComponentContext}\n />,\n )\n } else {\n setCustomLabel(newFormState._components?.customComponents?.BlockLabel ?? undefined)\n }\n if (CustomBlockFromProps) {\n setCustomBlock(\n <CustomBlockFromProps\n className={baseClass}\n formData={newFormStateData}\n isEditor={true}\n isJSXConverter={false}\n nodeKey={nodeKey}\n useBlockComponentContext={useBlockComponentContext}\n />,\n )\n } else {\n setCustomBlock(newFormState._components?.customComponents?.Block ?? undefined)\n }\n\n let rowErrorCount = 0\n for (const formField of Object.values(newFormState)) {\n if (formField?.valid === false) {\n rowErrorCount++\n }\n }\n setErrorCount(rowErrorCount)\n }\n\n return newFormState\n },\n\n [\n getFormState,\n id,\n collectionSlug,\n getDocPreferences,\n globalSlug,\n schemaFieldsPath,\n blockType,\n parentDocumentFields,\n isEditable,\n editor,\n nodeKey,\n baseClass,\n CustomBlockFromProps,\n CustomLabelFromProps,\n ],\n )\n\n useEffect(() => {\n return () => {\n abortAndIgnore(onChangeAbortControllerRef.current)\n }\n }, [])\n\n const removeBlock = useCallback(() => {\n editor.update(() => {\n $getNodeByKey(nodeKey)?.remove()\n })\n }, [editor, nodeKey])\n\n const blockDisplayName = clientBlock?.labels?.singular\n ? getTranslation(clientBlock.labels.singular, i18n)\n : clientBlock?.slug\n\n const onCollapsedChange = useCallback(\n (changedCollapsed: boolean) => {\n void getDocPreferences().then((currentDocPreferences) => {\n const currentFieldPreferences =\n currentDocPreferences?.fields?.[parentLexicalRichTextField.name]\n\n const collapsedArray = currentFieldPreferences?.collapsed\n\n const newCollapsed: CollapsedPreferences =\n collapsedArray && collapsedArray?.length ? collapsedArray : []\n\n if (changedCollapsed) {\n if (!newCollapsed.includes(formData.id)) {\n newCollapsed.push(formData.id)\n }\n } else {\n if (newCollapsed.includes(formData.id)) {\n newCollapsed.splice(newCollapsed.indexOf(formData.id), 1)\n }\n }\n\n setDocFieldPreferences(parentLexicalRichTextField.name, {\n collapsed: newCollapsed,\n hello: 'hi',\n })\n })\n },\n [getDocPreferences, parentLexicalRichTextField.name, setDocFieldPreferences, formData.id],\n )\n\n const EditButton = useMemo(\n () => () => (\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__editButton`}\n disabled={!isEditable}\n el=\"button\"\n icon=\"edit\"\n onClick={(e) => {\n e.preventDefault()\n e.stopPropagation()\n toggleDrawer()\n return false\n }}\n onMouseDown={(e) => {\n // Needed to preserve lexical selection for toggleDrawer lexical selection restore.\n // I believe this is needed due to this button (usually) being inside of a collapsible.\n e.preventDefault()\n }}\n round\n size=\"small\"\n tooltip={t('lexical:blocks:inlineBlocks:edit', { label: blockDisplayName })}\n />\n ),\n [baseClass, isEditable, t, blockDisplayName, toggleDrawer],\n )\n\n const RemoveButton = useMemo(\n () => () => (\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__removeButton`}\n disabled={!isEditable}\n icon=\"x\"\n onClick={(e) => {\n e.preventDefault()\n removeBlock()\n }}\n round\n tooltip=\"Remove Block\"\n />\n ),\n [baseClass, isEditable, removeBlock],\n )\n\n const BlockCollapsible = useMemo(\n () =>\n ({\n Actions,\n children,\n className,\n collapsibleProps,\n disableBlockName,\n editButton,\n errorCount,\n fieldHasErrors,\n Label,\n Pill: CustomPill,\n removeButton,\n }: BlockCollapsibleWithErrorProps) => {\n return (\n <div className={`${baseClass}__container ${baseClass}-${blockType}`}>\n <Collapsible\n className={[\n `${baseClass}__row`,\n fieldHasErrors ? `${baseClass}__row--has-errors` : `${baseClass}__row--no-errors`,\n className,\n ]\n .filter(Boolean)\n .join(' ')}\n collapsibleStyle={fieldHasErrors ? 'error' : 'default'}\n header={\n <div className={`${baseClass}__block-header`}>\n {typeof Label !== 'undefined' ? (\n Label\n ) : typeof CustomLabel !== 'undefined' ? (\n CustomLabel\n ) : (\n <div className={`${baseClass}__block-label`}>\n {typeof CustomPill !== 'undefined' ? (\n CustomPill\n ) : (\n <Pill\n className={`${baseClass}__block-pill ${baseClass}__block-pill-${blockType}`}\n pillStyle=\"white\"\n size=\"small\"\n >\n {blockDisplayName ?? blockType}\n </Pill>\n )}\n {!disableBlockName && !clientBlock?.admin?.disableBlockName && (\n <SectionTitle path=\"blockName\" readOnly={!isEditable} />\n )}\n\n {fieldHasErrors && (\n <ErrorPill count={errorCount ?? 0} i18n={i18n} withMessage />\n )}\n </div>\n )}\n\n <div className={`${baseClass}__block-actions`}>\n {typeof Actions !== 'undefined' ? (\n Actions\n ) : (\n <>\n {(CustomBlock && editButton !== false) || (!CustomBlock && editButton) ? (\n <EditButton />\n ) : null}\n {removeButton !== false && isEditable ? <RemoveButton /> : null}\n </>\n )}\n </div>\n </div>\n }\n isCollapsed={isCollapsed}\n key={0}\n onToggle={(incomingCollapsedState) => {\n onCollapsedChange(incomingCollapsedState)\n setIsCollapsed(incomingCollapsedState)\n }}\n {...(collapsibleProps || {})}\n >\n {children}\n </Collapsible>\n </div>\n )\n },\n [\n CustomBlock,\n CustomLabel,\n EditButton,\n RemoveButton,\n blockDisplayName,\n baseClass,\n clientBlock?.admin?.disableBlockName,\n blockType,\n i18n,\n isCollapsed,\n onCollapsedChange,\n isEditable,\n ],\n )\n\n const blockID = formData?.id\n\n const BlockDrawer = useMemo(\n () => () => (\n <EditDepthProvider>\n <Drawer\n className={''}\n slug={drawerSlug}\n title={t(`lexical:blocks:inlineBlocks:${blockID ? 'edit' : 'create'}`, {\n label: blockDisplayName ?? t('lexical:blocks:inlineBlocks:label'),\n })}\n >\n {initialState ? (\n <>\n <RenderFields\n fields={clientBlock?.fields ?? []}\n forceRender\n parentIndexPath=\"\"\n parentPath=\"\" // See Blocks feature path for details as for why this is empty\n parentSchemaPath={schemaFieldsPath}\n permissions={true}\n readOnly={!isEditable}\n />\n <FormSubmit programmaticSubmit={true}>{t('fields:saveChanges')}</FormSubmit>\n </>\n ) : null}\n </Drawer>\n </EditDepthProvider>\n ),\n [\n initialState,\n drawerSlug,\n blockID,\n blockDisplayName,\n t,\n isEditable,\n clientBlock?.fields,\n schemaFieldsPath,\n // DO NOT ADD FORMDATA HERE! Adding formData will kick you out of sub block editors while writing.\n ],\n )\n\n // Memoized Form JSX\n const Block = useMemo(() => {\n if (!initialState) {\n return null\n }\n return (\n <div data-block-drawer-slug={drawerSlug} style={{ display: 'contents' }}>\n <Form\n beforeSubmit={[\n async ({ formState }) => {\n // This is only called when form is submitted from drawer - usually only the case if the block has a custom Block component\n return await onChange({ formState, submit: true })\n },\n ]}\n el=\"div\"\n fields={clientBlock?.fields ?? []}\n initialState={initialState}\n onChange={[onChange]}\n onSubmit={(formState, newData) => {\n // This is only called when form is submitted from drawer - usually only the case if the block has a custom Block component\n newData.blockType = blockType\n editor.update(() => {\n const node = $getNodeByKey(nodeKey)\n if (node && $isBlockNode(node)) {\n node.setFields(newData as BlockFields, true)\n }\n })\n toggleDrawer()\n }}\n submitted={submitted}\n uuid={uuid()}\n >\n <BlockContent\n baseClass={baseClass}\n BlockDrawer={BlockDrawer}\n Collapsible={BlockCollapsible}\n CustomBlock={CustomBlock}\n CustomLabel={CustomLabel}\n EditButton={EditButton}\n errorCount={errorCount}\n formSchema={clientBlock?.fields ?? []}\n initialState={initialState}\n nodeKey={nodeKey}\n RemoveButton={RemoveButton}\n />\n </Form>\n </div>\n )\n }, [\n BlockCollapsible,\n BlockDrawer,\n CustomBlock,\n CustomLabel,\n blockType,\n drawerSlug,\n RemoveButton,\n EditButton,\n baseClass,\n editor,\n errorCount,\n toggleDrawer,\n clientBlock?.fields,\n // DO NOT ADD FORMDATA HERE! Adding formData will kick you out of sub block editors while writing.\n initialState,\n nodeKey,\n onChange,\n submitted,\n ])\n\n if (!clientBlock) {\n return (\n <BlockCollapsible disableBlockName={true} fieldHasErrors={true}>\n <div className={`${baseClass}-not-found`}>\n Error: Block '{blockType}' not found in the config but exists in the lexical data\n </div>\n </BlockCollapsible>\n )\n }\n\n return Block\n}\n"],"names":["useLexicalComposerContext","useLexicalEditable","getTranslation","Button","Collapsible","Drawer","EditDepthProvider","ErrorPill","Form","formatDrawerSlug","FormSubmit","Pill","RenderFields","SectionTitle","useConfig","useDocumentForm","useDocumentInfo","useEditDepth","useFormSubmitted","useServerFunctions","useTranslation","abortAndIgnore","$getNodeByKey","deepCopyObjectSimpleWithoutReactComponents","reduceFieldsToValues","React","useCallback","useEffect","useMemo","useRef","v4","uuid","useEditorConfigContext","useLexicalDrawer","$isBlockNode","BlockContent","useBlockComponentContext","removeEmptyArrayValues","BlockComponent","props","cacheBuster","className","baseClass","CustomBlock","CustomBlockFromProps","CustomLabel","CustomLabelFromProps","formData","nodeKey","submitted","id","collectionSlug","globalSlug","fieldProps","featureClientSchemaMap","field","parentLexicalRichTextField","initialLexicalFormState","schemaPath","uuidFromContext","fields","parentDocumentFields","onChangeAbortControllerRef","AbortController","editDepth","errorCount","setErrorCount","useState","config","drawerSlug","slug","depth","toggleDrawer","getDocPreferences","setDocFieldPreferences","editor","isEditable","blockType","getFormState","schemaFieldsPath","initialState","setInitialState","cachedFormState","formState","mergedState","Object","fromEntries","entries","map","fieldName","fieldState","initialValue","value","blockName","passesCondition","valid","hasMounted","prevCacheBuster","current","setCustomLabel","isEditor","isJSXConverter","customComponents","BlockLabel","undefined","setCustomBlock","Block","abortController","awaitInitialState","state","data","docPermissions","docPreferences","documentFormState","excludeFiles","initialBlockData","operation","readOnly","renderAllFields","signal","newFormStateData","update","node","newData","setFields","_components","isCollapsed","setIsCollapsed","collapsed","componentMapRenderedBlockPath","clientSchemaMap","blocksField","clientBlock","blockReferences","blocksMap","blocks","i18n","t","onChange","prevFormState","submit","controller","newFormState","initialBlockFormState","setTimeout","rowErrorCount","formField","values","removeBlock","remove","blockDisplayName","labels","singular","onCollapsedChange","changedCollapsed","then","currentDocPreferences","currentFieldPreferences","name","collapsedArray","newCollapsed","length","includes","push","splice","indexOf","hello","EditButton","buttonStyle","disabled","el","icon","onClick","e","preventDefault","stopPropagation","onMouseDown","round","size","tooltip","label","RemoveButton","BlockCollapsible","Actions","children","collapsibleProps","disableBlockName","editButton","fieldHasErrors","Label","CustomPill","removeButton","div","filter","Boolean","join","collapsibleStyle","header","pillStyle","admin","path","count","withMessage","onToggle","incomingCollapsedState","blockID","BlockDrawer","title","forceRender","parentIndexPath","parentPath","parentSchemaPath","permissions","programmaticSubmit","data-block-drawer-slug","style","display","beforeSubmit","onSubmit","formSchema"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../../../src/features/blocks/client/component/index.tsx"],"sourcesContent":["'use client'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext'\nimport { useLexicalEditable } from '@lexical/react/useLexicalEditable'\nimport { getTranslation } from '@payloadcms/translations'\nimport {\n Button,\n Collapsible,\n Drawer,\n EditDepthProvider,\n ErrorPill,\n Form,\n formatDrawerSlug,\n FormSubmit,\n Pill,\n RenderFields,\n SectionTitle,\n useConfig,\n useDocumentForm,\n useDocumentInfo,\n useEditDepth,\n useFormSubmitted,\n useServerFunctions,\n useTranslation,\n} from '@payloadcms/ui'\nimport { abortAndIgnore } from '@payloadcms/ui/shared'\nimport { $getNodeByKey } from 'lexical'\nimport {\n type BlocksFieldClient,\n type ClientBlock,\n type CollapsedPreferences,\n type FormState,\n} from 'payload'\nimport { deepCopyObjectSimpleWithoutReactComponents, reduceFieldsToValues } from 'payload/shared'\nimport React, { useCallback, useEffect, useMemo, useRef } from 'react'\nimport { v4 as uuid } from 'uuid'\n\nimport type { ViewMapBlockComponentProps } from '../../../../types.js'\nimport type { BlockFields } from '../../server/nodes/BlocksNode.js'\n\nimport './index.scss'\nimport { useEditorConfigContext } from '../../../../lexical/config/client/EditorConfigProvider.js'\nimport { useLexicalDrawer } from '../../../../utilities/fieldsDrawer/useLexicalDrawer.js'\nimport { $isBlockNode } from '../nodes/BlocksNode.js'\nimport {\n type BlockCollapsibleWithErrorProps,\n BlockContent,\n useBlockComponentContext,\n} from './BlockContent.js'\nimport { removeEmptyArrayValues } from './removeEmptyArrayValues.js'\n\nexport type BlockComponentProps<TFormData extends Record<string, unknown> = BlockFields> = {\n /**\n * Can be modified by the node in order to trigger the re-fetch of the initial state based on the\n * formData. This is useful when node.setFields() is explicitly called from outside of the form - in\n * this case, the new field state is likely not reflected in the form state, so we need to re-fetch\n */\n readonly cacheBuster: number\n readonly className: string\n /**\n * Custom block component from view map\n * Will be rendered with useBlockComponentContext hook.\n */\n readonly CustomBlock?: React.FC<ViewMapBlockComponentProps>\n /**\n * Custom block label from view map\n * Will be rendered with useBlockComponentContext hook.\n */\n readonly CustomLabel?: React.FC<ViewMapBlockComponentProps>\n /**\n * The block's form data (field values).\n */\n readonly formData: TFormData\n /**\n * The unique key identifying this block node in the current editor instance.\n */\n readonly nodeKey: string\n}\n\nexport const BlockComponent: React.FC<BlockComponentProps> = (props) => {\n const {\n cacheBuster,\n className: baseClass,\n CustomBlock: CustomBlockFromProps,\n CustomLabel: CustomLabelFromProps,\n formData,\n nodeKey,\n } = props\n\n const submitted = useFormSubmitted()\n const { id, collectionSlug, globalSlug } = useDocumentInfo()\n const {\n fieldProps: {\n featureClientSchemaMap,\n field: parentLexicalRichTextField,\n initialLexicalFormState,\n schemaPath,\n },\n uuid: uuidFromContext,\n } = useEditorConfigContext()\n\n const { fields: parentDocumentFields } = useDocumentForm()\n const onChangeAbortControllerRef = useRef(new AbortController())\n const editDepth = useEditDepth()\n const [errorCount, setErrorCount] = React.useState(0)\n\n const { config } = useConfig()\n\n const drawerSlug = formatDrawerSlug({\n slug: `lexical-blocks-create-${uuidFromContext}-${formData.id}`,\n depth: editDepth,\n })\n const { toggleDrawer } = useLexicalDrawer(drawerSlug)\n\n // Used for saving collapsed to preferences (and gettin' it from there again)\n // Remember, these preferences are scoped to the whole document, not just this form. This\n // is important to consider for the data path used in setDocFieldPreferences\n const { getDocPreferences, setDocFieldPreferences } = useDocumentInfo()\n const [editor] = useLexicalComposerContext()\n const isEditable = useLexicalEditable()\n\n const blockType = formData.blockType\n\n const { getFormState } = useServerFunctions()\n const schemaFieldsPath = `${schemaPath}.lexical_internal_feature.blocks.lexical_blocks.${blockType}.fields`\n\n const [initialState, setInitialState] = React.useState<false | FormState | undefined>(() => {\n // Initial form state that was calculated server-side. May have stale values\n const cachedFormState = initialLexicalFormState?.[formData.id]?.formState\n if (!cachedFormState) {\n return false\n }\n\n // Merge current formData values into the cached form state\n // This ensures that when the component remounts (e.g., due to view changes), we don't lose user edits\n const mergedState = Object.fromEntries(\n Object.entries(cachedFormState).map(([fieldName, fieldState]) => [\n fieldName,\n fieldName in formData\n ? {\n ...fieldState,\n initialValue: formData[fieldName],\n value: formData[fieldName],\n }\n : fieldState,\n ]),\n )\n\n // Manually add blockName, as it's not part of cachedFormState\n mergedState.blockName = {\n initialValue: formData.blockName,\n passesCondition: true,\n valid: true,\n value: formData.blockName,\n }\n\n return mergedState\n })\n\n const hasMounted = useRef(false)\n const prevCacheBuster = useRef(cacheBuster)\n useEffect(() => {\n if (hasMounted.current) {\n if (prevCacheBuster.current !== cacheBuster) {\n setInitialState(false)\n }\n prevCacheBuster.current = cacheBuster\n } else {\n hasMounted.current = true\n }\n }, [cacheBuster])\n\n const [formUuid] = React.useState(() => uuid())\n\n // Server-rendered custom components (from admin.components, NOT viewMap).\n // When viewMap components exist (CustomBlockFromProps/CustomLabelFromProps),\n // we render them directly with formData instead, so these states are unused.\n const [CustomLabel, setCustomLabel] = React.useState<React.ReactNode | undefined>(() => {\n if (CustomLabelFromProps) {\n return undefined\n }\n // @ts-expect-error - vestiges of when tsconfig was not strict. Feel free to improve\n return initialState?.['_components']?.customComponents?.BlockLabel ?? undefined\n })\n\n const [CustomBlock, setCustomBlock] = React.useState<React.ReactNode | undefined>(() => {\n if (CustomBlockFromProps) {\n return undefined\n }\n // @ts-expect-error - vestiges of when tsconfig was not strict. Feel free to improve\n return initialState?.['_components']?.customComponents?.Block ?? undefined\n })\n\n // When viewMap components exist, render directly with formData (always current from\n // the lexical node). When they don't, fall back to server-rendered state.\n const resolvedCustomBlock = useMemo(() => {\n if (CustomBlockFromProps) {\n return (\n <CustomBlockFromProps\n className={baseClass}\n formData={formData}\n isEditor={true}\n isJSXConverter={false}\n nodeKey={nodeKey}\n // eslint-disable-next-line react-compiler/react-compiler -- intentionally passed as a prop for custom block components to call\n useBlockComponentContext={useBlockComponentContext}\n />\n )\n }\n return CustomBlock\n }, [CustomBlockFromProps, baseClass, formData, nodeKey, CustomBlock])\n\n const resolvedCustomLabel = useMemo(() => {\n if (CustomLabelFromProps) {\n return (\n <CustomLabelFromProps\n className={baseClass}\n formData={formData}\n isEditor={true}\n isJSXConverter={false}\n nodeKey={nodeKey}\n // eslint-disable-next-line react-compiler/react-compiler -- intentionally passed as a prop for custom block components to call\n useBlockComponentContext={useBlockComponentContext}\n />\n )\n }\n return CustomLabel\n }, [CustomLabelFromProps, baseClass, formData, nodeKey, CustomLabel])\n\n // Initial state for newly created blocks\n useEffect(() => {\n const abortController = new AbortController()\n\n const awaitInitialState = async () => {\n /*\n * This will only run if a new block is created. For all existing blocks that are loaded when the document is loaded, or when the form is saved,\n * this is not run, as the lexical field RSC will fetch the state server-side and pass it to the client. That way, we avoid unnecessary client-side\n * requests. Though for newly created blocks, we need to fetch the state client-side, as the server doesn't know about the block yet.\n */\n const { state } = await getFormState({\n id,\n collectionSlug,\n data: formData,\n docPermissions: { fields: true },\n docPreferences: await getDocPreferences(),\n documentFormState: deepCopyObjectSimpleWithoutReactComponents(parentDocumentFields, {\n excludeFiles: true,\n }),\n globalSlug,\n initialBlockData: formData,\n operation: 'update',\n readOnly: !isEditable,\n renderAllFields: true,\n schemaPath: schemaFieldsPath,\n signal: abortController.signal,\n })\n\n if (state) {\n state.blockName = {\n initialValue: formData.blockName,\n passesCondition: true,\n valid: true,\n value: formData.blockName,\n }\n\n const newFormStateData: BlockFields = reduceFieldsToValues(\n deepCopyObjectSimpleWithoutReactComponents(state, { excludeFiles: true }),\n true,\n ) as BlockFields\n\n // Things like default values may come back from the server => update the node with the new data\n editor.update(() => {\n const node = $getNodeByKey(nodeKey)\n if (node && $isBlockNode(node)) {\n const newData = newFormStateData\n newData.blockType = blockType\n\n node.setFields(newData, true)\n }\n })\n\n setInitialState(state)\n if (!CustomLabelFromProps) {\n setCustomLabel(state._components?.customComponents?.BlockLabel ?? undefined)\n }\n if (!CustomBlockFromProps) {\n setCustomBlock(state._components?.customComponents?.Block ?? undefined)\n }\n }\n }\n\n if (formData && !initialState) {\n void awaitInitialState()\n }\n\n return () => {\n abortAndIgnore(abortController)\n }\n }, [\n getFormState,\n schemaFieldsPath,\n isEditable,\n id,\n CustomLabelFromProps,\n CustomBlockFromProps,\n formData,\n editor,\n nodeKey,\n initialState,\n collectionSlug,\n globalSlug,\n getDocPreferences,\n parentDocumentFields,\n blockType,\n ])\n\n const [isCollapsed, setIsCollapsed] = React.useState<boolean>(\n initialLexicalFormState?.[formData.id]?.collapsed ?? false,\n )\n\n const componentMapRenderedBlockPath = `${schemaPath}.lexical_internal_feature.blocks.lexical_blocks.${blockType}`\n\n const clientSchemaMap = featureClientSchemaMap['blocks']\n\n const blocksField: BlocksFieldClient | undefined = clientSchemaMap?.[\n componentMapRenderedBlockPath\n ]?.[0] as BlocksFieldClient\n\n const clientBlock: ClientBlock | undefined = blocksField.blockReferences\n ? typeof blocksField?.blockReferences?.[0] === 'string'\n ? config.blocksMap[blocksField?.blockReferences?.[0]]\n : blocksField?.blockReferences?.[0]\n : blocksField?.blocks?.[0]\n\n const { i18n, t } = useTranslation<object, string>()\n\n const onChange = useCallback(\n async ({ formState: prevFormState, submit }: { formState: FormState; submit?: boolean }) => {\n abortAndIgnore(onChangeAbortControllerRef.current)\n\n const controller = new AbortController()\n onChangeAbortControllerRef.current = controller\n\n const { state: newFormState } = await getFormState({\n id,\n collectionSlug,\n docPermissions: {\n fields: true,\n },\n docPreferences: await getDocPreferences(),\n documentFormState: deepCopyObjectSimpleWithoutReactComponents(parentDocumentFields, {\n excludeFiles: true,\n }),\n formState: prevFormState,\n globalSlug,\n initialBlockFormState: prevFormState,\n operation: 'update',\n readOnly: !isEditable,\n renderAllFields: submit ? true : false,\n schemaPath: schemaFieldsPath,\n signal: controller.signal,\n })\n\n if (!newFormState) {\n return prevFormState\n }\n\n if (prevFormState.blockName) {\n newFormState.blockName = prevFormState.blockName\n }\n\n const newFormStateData: BlockFields = reduceFieldsToValues(\n removeEmptyArrayValues({\n fields: deepCopyObjectSimpleWithoutReactComponents(newFormState, { excludeFiles: true }),\n }),\n true,\n ) as BlockFields\n\n setTimeout(() => {\n editor.update(() => {\n const node = $getNodeByKey(nodeKey)\n if (node && $isBlockNode(node)) {\n const newData = newFormStateData\n newData.blockType = blockType\n node.setFields(newData, true)\n }\n })\n }, 0)\n\n if (submit) {\n if (!CustomLabelFromProps) {\n setCustomLabel(newFormState._components?.customComponents?.BlockLabel ?? undefined)\n }\n if (!CustomBlockFromProps) {\n setCustomBlock(newFormState._components?.customComponents?.Block ?? undefined)\n }\n\n let rowErrorCount = 0\n for (const formField of Object.values(newFormState)) {\n if (formField?.valid === false) {\n rowErrorCount++\n }\n }\n setErrorCount(rowErrorCount)\n }\n\n return newFormState\n },\n\n [\n getFormState,\n id,\n collectionSlug,\n getDocPreferences,\n globalSlug,\n schemaFieldsPath,\n blockType,\n parentDocumentFields,\n isEditable,\n editor,\n nodeKey,\n CustomBlockFromProps,\n CustomLabelFromProps,\n ],\n )\n\n useEffect(() => {\n return () => {\n abortAndIgnore(onChangeAbortControllerRef.current)\n }\n }, [])\n\n const removeBlock = useCallback(() => {\n editor.update(() => {\n $getNodeByKey(nodeKey)?.remove()\n })\n }, [editor, nodeKey])\n\n const blockDisplayName = clientBlock?.labels?.singular\n ? getTranslation(clientBlock.labels.singular, i18n)\n : clientBlock?.slug\n\n const onCollapsedChange = useCallback(\n (changedCollapsed: boolean) => {\n void getDocPreferences().then((currentDocPreferences) => {\n const currentFieldPreferences =\n currentDocPreferences?.fields?.[parentLexicalRichTextField.name]\n\n const collapsedArray = currentFieldPreferences?.collapsed\n\n const newCollapsed: CollapsedPreferences =\n collapsedArray && collapsedArray?.length ? collapsedArray : []\n\n if (changedCollapsed) {\n if (!newCollapsed.includes(formData.id)) {\n newCollapsed.push(formData.id)\n }\n } else {\n if (newCollapsed.includes(formData.id)) {\n newCollapsed.splice(newCollapsed.indexOf(formData.id), 1)\n }\n }\n\n setDocFieldPreferences(parentLexicalRichTextField.name, {\n collapsed: newCollapsed,\n hello: 'hi',\n })\n })\n },\n [getDocPreferences, parentLexicalRichTextField.name, setDocFieldPreferences, formData.id],\n )\n\n const EditButton = useMemo(\n () => () => (\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__editButton`}\n disabled={!isEditable}\n el=\"button\"\n icon=\"edit\"\n onClick={(e) => {\n e.preventDefault()\n e.stopPropagation()\n toggleDrawer()\n return false\n }}\n onMouseDown={(e) => {\n // Needed to preserve lexical selection for toggleDrawer lexical selection restore.\n // I believe this is needed due to this button (usually) being inside of a collapsible.\n e.preventDefault()\n }}\n round\n size=\"small\"\n tooltip={t('lexical:blocks:inlineBlocks:edit', { label: blockDisplayName })}\n />\n ),\n [baseClass, isEditable, t, blockDisplayName, toggleDrawer],\n )\n\n const RemoveButton = useMemo(\n () => () => (\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__removeButton`}\n disabled={!isEditable}\n icon=\"x\"\n onClick={(e) => {\n e.preventDefault()\n removeBlock()\n }}\n round\n tooltip=\"Remove Block\"\n />\n ),\n [baseClass, isEditable, removeBlock],\n )\n\n const BlockCollapsible = useMemo(\n () =>\n ({\n Actions,\n children,\n className,\n collapsibleProps,\n disableBlockName,\n editButton,\n errorCount,\n fieldHasErrors,\n Label,\n Pill: CustomPill,\n removeButton,\n }: BlockCollapsibleWithErrorProps) => {\n return (\n <div className={`${baseClass}__container ${baseClass}-${blockType}`}>\n <Collapsible\n className={[\n `${baseClass}__row`,\n fieldHasErrors ? `${baseClass}__row--has-errors` : `${baseClass}__row--no-errors`,\n className,\n ]\n .filter(Boolean)\n .join(' ')}\n collapsibleStyle={fieldHasErrors ? 'error' : 'default'}\n header={\n <div className={`${baseClass}__block-header`}>\n {typeof Label !== 'undefined' ? (\n Label\n ) : typeof resolvedCustomLabel !== 'undefined' ? (\n resolvedCustomLabel\n ) : (\n <div className={`${baseClass}__block-label`}>\n {typeof CustomPill !== 'undefined' ? (\n CustomPill\n ) : (\n <Pill\n className={`${baseClass}__block-pill ${baseClass}__block-pill-${blockType}`}\n pillStyle=\"white\"\n size=\"small\"\n >\n {blockDisplayName ?? blockType}\n </Pill>\n )}\n {!disableBlockName && !clientBlock?.admin?.disableBlockName && (\n <SectionTitle path=\"blockName\" readOnly={!isEditable} />\n )}\n\n {fieldHasErrors && (\n <ErrorPill count={errorCount ?? 0} i18n={i18n} withMessage />\n )}\n </div>\n )}\n\n <div className={`${baseClass}__block-actions`}>\n {typeof Actions !== 'undefined' ? (\n Actions\n ) : (\n <>\n {(resolvedCustomBlock && editButton !== false) ||\n (!resolvedCustomBlock && editButton) ? (\n <EditButton />\n ) : null}\n {removeButton !== false && isEditable ? <RemoveButton /> : null}\n </>\n )}\n </div>\n </div>\n }\n isCollapsed={isCollapsed}\n key={0}\n onToggle={(incomingCollapsedState) => {\n onCollapsedChange(incomingCollapsedState)\n setIsCollapsed(incomingCollapsedState)\n }}\n {...(collapsibleProps || {})}\n >\n {children}\n </Collapsible>\n </div>\n )\n },\n [\n resolvedCustomBlock,\n resolvedCustomLabel,\n EditButton,\n RemoveButton,\n blockDisplayName,\n baseClass,\n clientBlock?.admin?.disableBlockName,\n blockType,\n i18n,\n isCollapsed,\n onCollapsedChange,\n isEditable,\n ],\n )\n\n const blockID = formData?.id\n\n const BlockDrawer = useMemo(\n () => () => (\n <EditDepthProvider>\n <Drawer\n className={''}\n slug={drawerSlug}\n title={t(`lexical:blocks:inlineBlocks:${blockID ? 'edit' : 'create'}`, {\n label: blockDisplayName ?? t('lexical:blocks:inlineBlocks:label'),\n })}\n >\n {initialState ? (\n <>\n <RenderFields\n fields={clientBlock?.fields ?? []}\n forceRender\n parentIndexPath=\"\"\n parentPath=\"\" // See Blocks feature path for details as for why this is empty\n parentSchemaPath={schemaFieldsPath}\n permissions={true}\n readOnly={!isEditable}\n />\n <FormSubmit programmaticSubmit={true}>{t('fields:saveChanges')}</FormSubmit>\n </>\n ) : null}\n </Drawer>\n </EditDepthProvider>\n ),\n [\n initialState,\n drawerSlug,\n blockID,\n blockDisplayName,\n t,\n isEditable,\n clientBlock?.fields,\n schemaFieldsPath,\n // DO NOT ADD FORMDATA HERE! Adding formData will kick you out of sub block editors while writing.\n ],\n )\n\n // Memoized Form JSX\n const Block = useMemo(() => {\n if (!initialState) {\n return null\n }\n return (\n <div data-block-drawer-slug={drawerSlug} style={{ display: 'contents' }}>\n <Form\n beforeSubmit={[\n async ({ formState }) => {\n // This is only called when form is submitted from drawer - usually only the case if the block has a custom Block component\n return await onChange({ formState, submit: true })\n },\n ]}\n el=\"div\"\n fields={clientBlock?.fields ?? []}\n initialState={initialState}\n onChange={[onChange]}\n onSubmit={(formState, newData) => {\n // This is only called when form is submitted from drawer - usually only the case if the block has a custom Block component\n newData.blockType = blockType\n editor.update(() => {\n const node = $getNodeByKey(nodeKey)\n if (node && $isBlockNode(node)) {\n node.setFields(newData as BlockFields, true)\n }\n })\n toggleDrawer()\n }}\n submitted={submitted}\n uuid={formUuid}\n >\n <BlockContent\n baseClass={baseClass}\n BlockDrawer={BlockDrawer}\n Collapsible={BlockCollapsible}\n CustomBlock={resolvedCustomBlock}\n CustomLabel={resolvedCustomLabel}\n EditButton={EditButton}\n errorCount={errorCount}\n formSchema={clientBlock?.fields ?? []}\n initialState={initialState}\n nodeKey={nodeKey}\n RemoveButton={RemoveButton}\n />\n </Form>\n </div>\n )\n }, [\n BlockCollapsible,\n BlockDrawer,\n resolvedCustomBlock,\n resolvedCustomLabel,\n blockType,\n drawerSlug,\n RemoveButton,\n EditButton,\n baseClass,\n editor,\n errorCount,\n toggleDrawer,\n clientBlock?.fields,\n formUuid,\n initialState,\n nodeKey,\n onChange,\n submitted,\n ])\n\n if (!clientBlock) {\n return (\n <BlockCollapsible disableBlockName={true} fieldHasErrors={true}>\n <div className={`${baseClass}-not-found`}>\n Error: Block '{blockType}' not found in the config but exists in the lexical data\n </div>\n </BlockCollapsible>\n )\n }\n\n return Block\n}\n"],"names":["useLexicalComposerContext","useLexicalEditable","getTranslation","Button","Collapsible","Drawer","EditDepthProvider","ErrorPill","Form","formatDrawerSlug","FormSubmit","Pill","RenderFields","SectionTitle","useConfig","useDocumentForm","useDocumentInfo","useEditDepth","useFormSubmitted","useServerFunctions","useTranslation","abortAndIgnore","$getNodeByKey","deepCopyObjectSimpleWithoutReactComponents","reduceFieldsToValues","React","useCallback","useEffect","useMemo","useRef","v4","uuid","useEditorConfigContext","useLexicalDrawer","$isBlockNode","BlockContent","useBlockComponentContext","removeEmptyArrayValues","BlockComponent","props","cacheBuster","className","baseClass","CustomBlock","CustomBlockFromProps","CustomLabel","CustomLabelFromProps","formData","nodeKey","submitted","id","collectionSlug","globalSlug","fieldProps","featureClientSchemaMap","field","parentLexicalRichTextField","initialLexicalFormState","schemaPath","uuidFromContext","fields","parentDocumentFields","onChangeAbortControllerRef","AbortController","editDepth","errorCount","setErrorCount","useState","config","drawerSlug","slug","depth","toggleDrawer","getDocPreferences","setDocFieldPreferences","editor","isEditable","blockType","getFormState","schemaFieldsPath","initialState","setInitialState","cachedFormState","formState","mergedState","Object","fromEntries","entries","map","fieldName","fieldState","initialValue","value","blockName","passesCondition","valid","hasMounted","prevCacheBuster","current","formUuid","setCustomLabel","undefined","customComponents","BlockLabel","setCustomBlock","Block","resolvedCustomBlock","isEditor","isJSXConverter","resolvedCustomLabel","abortController","awaitInitialState","state","data","docPermissions","docPreferences","documentFormState","excludeFiles","initialBlockData","operation","readOnly","renderAllFields","signal","newFormStateData","update","node","newData","setFields","_components","isCollapsed","setIsCollapsed","collapsed","componentMapRenderedBlockPath","clientSchemaMap","blocksField","clientBlock","blockReferences","blocksMap","blocks","i18n","t","onChange","prevFormState","submit","controller","newFormState","initialBlockFormState","setTimeout","rowErrorCount","formField","values","removeBlock","remove","blockDisplayName","labels","singular","onCollapsedChange","changedCollapsed","then","currentDocPreferences","currentFieldPreferences","name","collapsedArray","newCollapsed","length","includes","push","splice","indexOf","hello","EditButton","buttonStyle","disabled","el","icon","onClick","e","preventDefault","stopPropagation","onMouseDown","round","size","tooltip","label","RemoveButton","BlockCollapsible","Actions","children","collapsibleProps","disableBlockName","editButton","fieldHasErrors","Label","CustomPill","removeButton","div","filter","Boolean","join","collapsibleStyle","header","pillStyle","admin","path","count","withMessage","onToggle","incomingCollapsedState","blockID","BlockDrawer","title","forceRender","parentIndexPath","parentPath","parentSchemaPath","permissions","programmaticSubmit","data-block-drawer-slug","style","display","beforeSubmit","onSubmit","formSchema"],"mappings":"AAAA;;AAEA,SAASA,yBAAyB,QAAQ,wCAAuC;AACjF,SAASC,kBAAkB,QAAQ,oCAAmC;AACtE,SAASC,cAAc,QAAQ,2BAA0B;AACzD,SACEC,MAAM,EACNC,WAAW,EACXC,MAAM,EACNC,iBAAiB,EACjBC,SAAS,EACTC,IAAI,EACJC,gBAAgB,EAChBC,UAAU,EACVC,IAAI,EACJC,YAAY,EACZC,YAAY,EACZC,SAAS,EACTC,eAAe,EACfC,eAAe,EACfC,YAAY,EACZC,gBAAgB,EAChBC,kBAAkB,EAClBC,cAAc,QACT,iBAAgB;AACvB,SAASC,cAAc,QAAQ,wBAAuB;AACtD,SAASC,aAAa,QAAQ,UAAS;AAOvC,SAASC,0CAA0C,EAAEC,oBAAoB,QAAQ,iBAAgB;AACjG,OAAOC,SAASC,WAAW,EAAEC,SAAS,EAAEC,OAAO,EAAEC,MAAM,QAAQ,QAAO;AACtE,SAASC,MAAMC,IAAI,QAAQ,OAAM;AAKjC,OAAO,eAAc;AACrB,SAASC,sBAAsB,QAAQ,4DAA2D;AAClG,SAASC,gBAAgB,QAAQ,yDAAwD;AACzF,SAASC,YAAY,QAAQ,yBAAwB;AACrD,SAEEC,YAAY,EACZC,wBAAwB,QACnB,oBAAmB;AAC1B,SAASC,sBAAsB,QAAQ,8BAA6B;AAGlE;;;;GAIC,GAGD;;;GAGC,GAED;;;GAGC,GAED;;GAEC,GAED;;GAEC,GAIH,OAAO,MAAMC,iBAAgD,CAACC;IAC5D,MAAM,EACJC,WAAW,EACXC,WAAWC,SAAS,EACpBC,aAAaC,oBAAoB,EACjCC,aAAaC,oBAAoB,EACjCC,QAAQ,EACRC,OAAO,EACR,GAAGT;IAEJ,MAAMU,YAAY/B;IAClB,MAAM,EAAEgC,EAAE,EAAEC,cAAc,EAAEC,UAAU,EAAE,GAAGpC;IAC3C,MAAM,EACJqC,YAAY,EACVC,sBAAsB,EACtBC,OAAOC,0BAA0B,EACjCC,uBAAuB,EACvBC,UAAU,EACX,EACD3B,MAAM4B,eAAe,EACtB,GAAG3B;IAEJ,MAAM,EAAE4B,QAAQC,oBAAoB,EAAE,GAAG9C;IACzC,MAAM+C,6BAA6BjC,OAAO,IAAIkC;IAC9C,MAAMC,YAAY/C;IAClB,MAAM,CAACgD,YAAYC,cAAc,GAAGzC,MAAM0C,QAAQ,CAAC;IAEnD,MAAM,EAAEC,MAAM,EAAE,GAAGtD;IAEnB,MAAMuD,aAAa5D,iBAAiB;QAClC6D,MAAM,CAAC,sBAAsB,EAAEX,gBAAgB,CAAC,EAAEZ,SAASG,EAAE,EAAE;QAC/DqB,OAAOP;IACT;IACA,MAAM,EAAEQ,YAAY,EAAE,GAAGvC,iBAAiBoC;IAE1C,6EAA6E;IAC7E,yFAAyF;IACzF,4EAA4E;IAC5E,MAAM,EAAEI,iBAAiB,EAAEC,sBAAsB,EAAE,GAAG1D;IACtD,MAAM,CAAC2D,OAAO,GAAG3E;IACjB,MAAM4E,aAAa3E;IAEnB,MAAM4E,YAAY9B,SAAS8B,SAAS;IAEpC,MAAM,EAAEC,YAAY,EAAE,GAAG3D;IACzB,MAAM4D,mBAAmB,GAAGrB,WAAW,gDAAgD,EAAEmB,UAAU,OAAO,CAAC;IAE3G,MAAM,CAACG,cAAcC,gBAAgB,GAAGxD,MAAM0C,QAAQ,CAAgC;QACpF,4EAA4E;QAC5E,MAAMe,kBAAkBzB,yBAAyB,CAACV,SAASG,EAAE,CAAC,EAAEiC;QAChE,IAAI,CAACD,iBAAiB;YACpB,OAAO;QACT;QAEA,2DAA2D;QAC3D,sGAAsG;QACtG,MAAME,cAAcC,OAAOC,WAAW,CACpCD,OAAOE,OAAO,CAACL,iBAAiBM,GAAG,CAAC,CAAC,CAACC,WAAWC,WAAW,GAAK;gBAC/DD;gBACAA,aAAa1C,WACT;oBACE,GAAG2C,UAAU;oBACbC,cAAc5C,QAAQ,CAAC0C,UAAU;oBACjCG,OAAO7C,QAAQ,CAAC0C,UAAU;gBAC5B,IACAC;aACL;QAGH,8DAA8D;QAC9DN,YAAYS,SAAS,GAAG;YACtBF,cAAc5C,SAAS8C,SAAS;YAChCC,iBAAiB;YACjBC,OAAO;YACPH,OAAO7C,SAAS8C,SAAS;QAC3B;QAEA,OAAOT;IACT;IAEA,MAAMY,aAAanE,OAAO;IAC1B,MAAMoE,kBAAkBpE,OAAOW;IAC/Bb,UAAU;QACR,IAAIqE,WAAWE,OAAO,EAAE;YACtB,IAAID,gBAAgBC,OAAO,KAAK1D,aAAa;gBAC3CyC,gBAAgB;YAClB;YACAgB,gBAAgBC,OAAO,GAAG1D;QAC5B,OAAO;YACLwD,WAAWE,OAAO,GAAG;QACvB;IACF,GAAG;QAAC1D;KAAY;IAEhB,MAAM,CAAC2D,SAAS,GAAG1E,MAAM0C,QAAQ,CAAC,IAAMpC;IAExC,0EAA0E;IAC1E,6EAA6E;IAC7E,6EAA6E;IAC7E,MAAM,CAACc,aAAauD,eAAe,GAAG3E,MAAM0C,QAAQ,CAA8B;QAChF,IAAIrB,sBAAsB;YACxB,OAAOuD;QACT;QACA,oFAAoF;QACpF,OAAOrB,cAAc,CAAC,cAAc,EAAEsB,kBAAkBC,cAAcF;IACxE;IAEA,MAAM,CAAC1D,aAAa6D,eAAe,GAAG/E,MAAM0C,QAAQ,CAA8B;QAChF,IAAIvB,sBAAsB;YACxB,OAAOyD;QACT;QACA,oFAAoF;QACpF,OAAOrB,cAAc,CAAC,cAAc,EAAEsB,kBAAkBG,SAASJ;IACnE;IAEA,oFAAoF;IACpF,0EAA0E;IAC1E,MAAMK,sBAAsB9E,QAAQ;QAClC,IAAIgB,sBAAsB;YACxB,qBACE,QAACA;gBACCH,WAAWC;gBACXK,UAAUA;gBACV4D,UAAU;gBACVC,gBAAgB;gBAChB5D,SAASA;gBACT,+HAA+H;gBAC/HZ,0BAA0BA;;;;;;QAGhC;QACA,OAAOO;IACT,GAAG;QAACC;QAAsBF;QAAWK;QAAUC;QAASL;KAAY;IAEpE,MAAMkE,sBAAsBjF,QAAQ;QAClC,IAAIkB,sBAAsB;YACxB,qBACE,QAACA;gBACCL,WAAWC;gBACXK,UAAUA;gBACV4D,UAAU;gBACVC,gBAAgB;gBAChB5D,SAASA;gBACT,+HAA+H;gBAC/HZ,0BAA0BA;;;;;;QAGhC;QACA,OAAOS;IACT,GAAG;QAACC;QAAsBJ;QAAWK;QAAUC;QAASH;KAAY;IAEpE,yCAAyC;IACzClB,UAAU;QACR,MAAMmF,kBAAkB,IAAI/C;QAE5B,MAAMgD,oBAAoB;YACxB;;;;OAIC,GACD,MAAM,EAAEC,KAAK,EAAE,GAAG,MAAMlC,aAAa;gBACnC5B;gBACAC;gBACA8D,MAAMlE;gBACNmE,gBAAgB;oBAAEtD,QAAQ;gBAAK;gBAC/BuD,gBAAgB,MAAM1C;gBACtB2C,mBAAmB7F,2CAA2CsC,sBAAsB;oBAClFwD,cAAc;gBAChB;gBACAjE;gBACAkE,kBAAkBvE;gBAClBwE,WAAW;gBACXC,UAAU,CAAC5C;gBACX6C,iBAAiB;gBACjB/D,YAAYqB;gBACZ2C,QAAQZ,gBAAgBY,MAAM;YAChC;YAEA,IAAIV,OAAO;gBACTA,MAAMnB,SAAS,GAAG;oBAChBF,cAAc5C,SAAS8C,SAAS;oBAChCC,iBAAiB;oBACjBC,OAAO;oBACPH,OAAO7C,SAAS8C,SAAS;gBAC3B;gBAEA,MAAM8B,mBAAgCnG,qBACpCD,2CAA2CyF,OAAO;oBAAEK,cAAc;gBAAK,IACvE;gBAGF,gGAAgG;gBAChG1C,OAAOiD,MAAM,CAAC;oBACZ,MAAMC,OAAOvG,cAAc0B;oBAC3B,IAAI6E,QAAQ3F,aAAa2F,OAAO;wBAC9B,MAAMC,UAAUH;wBAChBG,QAAQjD,SAAS,GAAGA;wBAEpBgD,KAAKE,SAAS,CAACD,SAAS;oBAC1B;gBACF;gBAEA7C,gBAAgB+B;gBAChB,IAAI,CAAClE,sBAAsB;oBACzBsD,eAAeY,MAAMgB,WAAW,EAAE1B,kBAAkBC,cAAcF;gBACpE;gBACA,IAAI,CAACzD,sBAAsB;oBACzB4D,eAAeQ,MAAMgB,WAAW,EAAE1B,kBAAkBG,SAASJ;gBAC/D;YACF;QACF;QAEA,IAAItD,YAAY,CAACiC,cAAc;YAC7B,KAAK+B;QACP;QAEA,OAAO;YACL1F,eAAeyF;QACjB;IACF,GAAG;QACDhC;QACAC;QACAH;QACA1B;QACAJ;QACAF;QACAG;QACA4B;QACA3B;QACAgC;QACA7B;QACAC;QACAqB;QACAZ;QACAgB;KACD;IAED,MAAM,CAACoD,aAAaC,eAAe,GAAGzG,MAAM0C,QAAQ,CAClDV,yBAAyB,CAACV,SAASG,EAAE,CAAC,EAAEiF,aAAa;IAGvD,MAAMC,gCAAgC,GAAG1E,WAAW,gDAAgD,EAAEmB,WAAW;IAEjH,MAAMwD,kBAAkB/E,sBAAsB,CAAC,SAAS;IAExD,MAAMgF,cAA6CD,iBAAiB,CAClED,8BACD,EAAE,CAAC,EAAE;IAEN,MAAMG,cAAuCD,YAAYE,eAAe,GACpE,OAAOF,aAAaE,iBAAiB,CAAC,EAAE,KAAK,WAC3CpE,OAAOqE,SAAS,CAACH,aAAaE,iBAAiB,CAAC,EAAE,CAAC,GACnDF,aAAaE,iBAAiB,CAAC,EAAE,GACnCF,aAAaI,QAAQ,CAAC,EAAE;IAE5B,MAAM,EAAEC,IAAI,EAAEC,CAAC,EAAE,GAAGxH;IAEpB,MAAMyH,WAAWnH,YACf,OAAO,EAAEyD,WAAW2D,aAAa,EAAEC,MAAM,EAA8C;QACrF1H,eAAeyC,2BAA2BoC,OAAO;QAEjD,MAAM8C,aAAa,IAAIjF;QACvBD,2BAA2BoC,OAAO,GAAG8C;QAErC,MAAM,EAAEhC,OAAOiC,YAAY,EAAE,GAAG,MAAMnE,aAAa;YACjD5B;YACAC;YACA+D,gBAAgB;gBACdtD,QAAQ;YACV;YACAuD,gBAAgB,MAAM1C;YACtB2C,mBAAmB7F,2CAA2CsC,sBAAsB;gBAClFwD,cAAc;YAChB;YACAlC,WAAW2D;YACX1F;YACA8F,uBAAuBJ;YACvBvB,WAAW;YACXC,UAAU,CAAC5C;YACX6C,iBAAiBsB,SAAS,OAAO;YACjCrF,YAAYqB;YACZ2C,QAAQsB,WAAWtB,MAAM;QAC3B;QAEA,IAAI,CAACuB,cAAc;YACjB,OAAOH;QACT;QAEA,IAAIA,cAAcjD,SAAS,EAAE;YAC3BoD,aAAapD,SAAS,GAAGiD,cAAcjD,SAAS;QAClD;QAEA,MAAM8B,mBAAgCnG,qBACpCa,uBAAuB;YACrBuB,QAAQrC,2CAA2C0H,cAAc;gBAAE5B,cAAc;YAAK;QACxF,IACA;QAGF8B,WAAW;YACTxE,OAAOiD,MAAM,CAAC;gBACZ,MAAMC,OAAOvG,cAAc0B;gBAC3B,IAAI6E,QAAQ3F,aAAa2F,OAAO;oBAC9B,MAAMC,UAAUH;oBAChBG,QAAQjD,SAAS,GAAGA;oBACpBgD,KAAKE,SAAS,CAACD,SAAS;gBAC1B;YACF;QACF,GAAG;QAEH,IAAIiB,QAAQ;YACV,IAAI,CAACjG,sBAAsB;gBACzBsD,eAAe6C,aAAajB,WAAW,EAAE1B,kBAAkBC,cAAcF;YAC3E;YACA,IAAI,CAACzD,sBAAsB;gBACzB4D,eAAeyC,aAAajB,WAAW,EAAE1B,kBAAkBG,SAASJ;YACtE;YAEA,IAAI+C,gBAAgB;YACpB,KAAK,MAAMC,aAAahE,OAAOiE,MAAM,CAACL,cAAe;gBACnD,IAAII,WAAWtD,UAAU,OAAO;oBAC9BqD;gBACF;YACF;YACAlF,cAAckF;QAChB;QAEA,OAAOH;IACT,GAEA;QACEnE;QACA5B;QACAC;QACAsB;QACArB;QACA2B;QACAF;QACAhB;QACAe;QACAD;QACA3B;QACAJ;QACAE;KACD;IAGHnB,UAAU;QACR,OAAO;YACLN,eAAeyC,2BAA2BoC,OAAO;QACnD;IACF,GAAG,EAAE;IAEL,MAAMqD,cAAc7H,YAAY;QAC9BiD,OAAOiD,MAAM,CAAC;YACZtG,cAAc0B,UAAUwG;QAC1B;IACF,GAAG;QAAC7E;QAAQ3B;KAAQ;IAEpB,MAAMyG,mBAAmBlB,aAAamB,QAAQC,WAC1CzJ,eAAeqI,YAAYmB,MAAM,CAACC,QAAQ,EAAEhB,QAC5CJ,aAAajE;IAEjB,MAAMsF,oBAAoBlI,YACxB,CAACmI;QACC,KAAKpF,oBAAoBqF,IAAI,CAAC,CAACC;YAC7B,MAAMC,0BACJD,uBAAuBnG,QAAQ,CAACJ,2BAA2ByG,IAAI,CAAC;YAElE,MAAMC,iBAAiBF,yBAAyB7B;YAEhD,MAAMgC,eACJD,kBAAkBA,gBAAgBE,SAASF,iBAAiB,EAAE;YAEhE,IAAIL,kBAAkB;gBACpB,IAAI,CAACM,aAAaE,QAAQ,CAACtH,SAASG,EAAE,GAAG;oBACvCiH,aAAaG,IAAI,CAACvH,SAASG,EAAE;gBAC/B;YACF,OAAO;gBACL,IAAIiH,aAAaE,QAAQ,CAACtH,SAASG,EAAE,GAAG;oBACtCiH,aAAaI,MAAM,CAACJ,aAAaK,OAAO,CAACzH,SAASG,EAAE,GAAG;gBACzD;YACF;YAEAwB,uBAAuBlB,2BAA2ByG,IAAI,EAAE;gBACtD9B,WAAWgC;gBACXM,OAAO;YACT;QACF;IACF,GACA;QAAChG;QAAmBjB,2BAA2ByG,IAAI;QAAEvF;QAAwB3B,SAASG,EAAE;KAAC;IAG3F,MAAMwH,aAAa9I,QACjB,IAAM,kBACJ,QAACzB;gBACCwK,aAAY;gBACZlI,WAAW,GAAGC,UAAU,YAAY,CAAC;gBACrCkI,UAAU,CAAChG;gBACXiG,IAAG;gBACHC,MAAK;gBACLC,SAAS,CAACC;oBACRA,EAAEC,cAAc;oBAChBD,EAAEE,eAAe;oBACjB1G;oBACA,OAAO;gBACT;gBACA2G,aAAa,CAACH;oBACZ,mFAAmF;oBACnF,uFAAuF;oBACvFA,EAAEC,cAAc;gBAClB;gBACAG,KAAK;gBACLC,MAAK;gBACLC,SAAS1C,EAAE,oCAAoC;oBAAE2C,OAAO9B;gBAAiB;;;;;sBAG7E;QAAC/G;QAAWkC;QAAYgE;QAAGa;QAAkBjF;KAAa;IAG5D,MAAMgH,eAAe5J,QACnB,IAAM,kBACJ,QAACzB;gBACCwK,aAAY;gBACZlI,WAAW,GAAGC,UAAU,cAAc,CAAC;gBACvCkI,UAAU,CAAChG;gBACXkG,MAAK;gBACLC,SAAS,CAACC;oBACRA,EAAEC,cAAc;oBAChB1B;gBACF;gBACA6B,KAAK;gBACLE,SAAQ;;;;;sBAGZ;QAAC5I;QAAWkC;QAAY2E;KAAY;IAGtC,MAAMkC,mBAAmB7J,QACvB,IACE,CAAC,EACC8J,OAAO,EACPC,QAAQ,EACRlJ,SAAS,EACTmJ,gBAAgB,EAChBC,gBAAgB,EAChBC,UAAU,EACV7H,UAAU,EACV8H,cAAc,EACdC,KAAK,EACLrL,MAAMsL,UAAU,EAChBC,YAAY,EACmB;YAC/B,qBACE,QAACC;gBAAI1J,WAAW,GAAGC,UAAU,YAAY,EAAEA,UAAU,CAAC,EAAEmC,WAAW;0BACjE,cAAA,QAACzE;oBACCqC,WAAW;wBACT,GAAGC,UAAU,KAAK,CAAC;wBACnBqJ,iBAAiB,GAAGrJ,UAAU,iBAAiB,CAAC,GAAG,GAAGA,UAAU,gBAAgB,CAAC;wBACjFD;qBACD,CACE2J,MAAM,CAACC,SACPC,IAAI,CAAC;oBACRC,kBAAkBR,iBAAiB,UAAU;oBAC7CS,sBACE,QAACL;wBAAI1J,WAAW,GAAGC,UAAU,cAAc,CAAC;;4BACzC,OAAOsJ,UAAU,cAChBA,QACE,OAAOnF,wBAAwB,cACjCA,oCAEA,QAACsF;gCAAI1J,WAAW,GAAGC,UAAU,aAAa,CAAC;;oCACxC,OAAOuJ,eAAe,cACrBA,2BAEA,QAACtL;wCACC8B,WAAW,GAAGC,UAAU,aAAa,EAAEA,UAAU,aAAa,EAAEmC,WAAW;wCAC3E4H,WAAU;wCACVpB,MAAK;kDAEJ5B,oBAAoB5E;;;;;;oCAGxB,CAACgH,oBAAoB,CAACtD,aAAamE,OAAOb,kCACzC,QAAChL;wCAAa8L,MAAK;wCAAYnF,UAAU,CAAC5C;;;;;;oCAG3CmH,gCACC,QAACxL;wCAAUqM,OAAO3I,cAAc;wCAAG0E,MAAMA;wCAAMkE,WAAW;;;;;;;;;;;;0CAKhE,QAACV;gCAAI1J,WAAW,GAAGC,UAAU,eAAe,CAAC;0CAC1C,OAAOgJ,YAAY,cAClBA,wBAEA;;wCACIhF,uBAAuBoF,eAAe,SACvC,CAACpF,uBAAuBoF,2BACvB,QAACpB;;;;qDACC;wCACHwB,iBAAiB,SAAStH,2BAAa,QAAC4G;;;;qDAAkB;;;;;;;;;;;;;;oBAMrEvD,aAAaA;oBAEb6E,UAAU,CAACC;wBACTnD,kBAAkBmD;wBAClB7E,eAAe6E;oBACjB;oBACC,GAAInB,oBAAoB,CAAC,CAAC;8BAE1BD;mBAPI;;;;;;;;;;QAWb,GACF;QACEjF;QACAG;QACA6D;QACAc;QACA/B;QACA/G;QACA6F,aAAamE,OAAOb;QACpBhH;QACA8D;QACAV;QACA2B;QACAhF;KACD;IAGH,MAAMoI,UAAUjK,UAAUG;IAE1B,MAAM+J,cAAcrL,QAClB,IAAM,kBACJ,QAACtB;0BACC,cAAA,QAACD;oBACCoC,WAAW;oBACX6B,MAAMD;oBACN6I,OAAOtE,EAAE,CAAC,4BAA4B,EAAEoE,UAAU,SAAS,UAAU,EAAE;wBACrEzB,OAAO9B,oBAAoBb,EAAE;oBAC/B;8BAEC5D,6BACC;;0CACE,QAACpE;gCACCgD,QAAQ2E,aAAa3E,UAAU,EAAE;gCACjCuJ,WAAW;gCACXC,iBAAgB;gCAChBC,YAAc,+DAA+D;gCAAlE;gCACXC,kBAAkBvI;gCAClBwI,aAAa;gCACb/F,UAAU,CAAC5C;;;;;;0CAEb,QAAClE;gCAAW8M,oBAAoB;0CAAO5E,EAAE;;;;;;;uCAEzC;;;;;;;;;;sBAIV;QACE5D;QACAX;QACA2I;QACAvD;QACAb;QACAhE;QACA2D,aAAa3E;QACbmB;KAED;IADC,kGAAkG;IAItG,oBAAoB;IACpB,MAAM0B,QAAQ7E,QAAQ;QACpB,IAAI,CAACoD,cAAc;YACjB,OAAO;QACT;QACA,qBACE,QAACmH;YAAIsB,0BAAwBpJ;YAAYqJ,OAAO;gBAAEC,SAAS;YAAW;sBACpE,cAAA,QAACnN;gBACCoN,cAAc;oBACZ,OAAO,EAAEzI,SAAS,EAAE;wBAClB,2HAA2H;wBAC3H,OAAO,MAAM0D,SAAS;4BAAE1D;4BAAW4D,QAAQ;wBAAK;oBAClD;iBACD;gBACD8B,IAAG;gBACHjH,QAAQ2E,aAAa3E,UAAU,EAAE;gBACjCoB,cAAcA;gBACd6D,UAAU;oBAACA;iBAAS;gBACpBgF,UAAU,CAAC1I,WAAW2C;oBACpB,2HAA2H;oBAC3HA,QAAQjD,SAAS,GAAGA;oBACpBF,OAAOiD,MAAM,CAAC;wBACZ,MAAMC,OAAOvG,cAAc0B;wBAC3B,IAAI6E,QAAQ3F,aAAa2F,OAAO;4BAC9BA,KAAKE,SAAS,CAACD,SAAwB;wBACzC;oBACF;oBACAtD;gBACF;gBACAvB,WAAWA;gBACXlB,MAAMoE;0BAEN,cAAA,QAAChE;oBACCO,WAAWA;oBACXuK,aAAaA;oBACb7M,aAAaqL;oBACb9I,aAAa+D;oBACb7D,aAAagE;oBACb6D,YAAYA;oBACZzG,YAAYA;oBACZ6J,YAAYvF,aAAa3E,UAAU,EAAE;oBACrCoB,cAAcA;oBACdhC,SAASA;oBACTwI,cAAcA;;;;;;;;;;;;;;;;IAKxB,GAAG;QACDC;QACAwB;QACAvG;QACAG;QACAhC;QACAR;QACAmH;QACAd;QACAhI;QACAiC;QACAV;QACAO;QACA+D,aAAa3E;QACbuC;QACAnB;QACAhC;QACA6F;QACA5F;KACD;IAED,IAAI,CAACsF,aAAa;QAChB,qBACE,QAACkD;YAAiBI,kBAAkB;YAAME,gBAAgB;sBACxD,cAAA,QAACI;gBAAI1J,WAAW,GAAGC,UAAU,UAAU,CAAC;;oBAAE;oBACzBmC;oBAAU;;;;;;;;;;;;IAIjC;IAEA,OAAO4B;AACT,EAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/features/blocks/client/componentInline/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAwC,SAAS,EAAE,MAAM,SAAS,CAAA;AAwB9E,OAAO,cAAc,CAAA;AAGrB,OAAO,KAAiE,MAAM,OAAO,CAAA;AAGrF,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,sBAAsB,CAAA;AAC5E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAA;AAC/E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAMhE,MAAM,MAAM,yBAAyB,CACnC,SAAS,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,iBAAiB,IAC3D;IACF,QAAQ,CAAC,WAAW,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,gCAAgC,CAAC,CAAA;IACjE,QAAQ,CAAC,WAAW,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,gCAAgC,CAAC,CAAA;CAClE,GAAG,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,EAAE,aAAa,GAAG,WAAW,GAAG,UAAU,GAAG,SAAS,CAAC,CAAA;AAE9F,MAAM,MAAM,+BAA+B,GAAG;IAC5C,UAAU,CAAC,EAAE,KAAK,CAAC,EAAE,CAAA;IACrB,YAAY,EAAE,KAAK,GAAG,SAAS,GAAG,SAAS,CAAA;IAC3C,oBAAoB,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;QAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;KAAE,CAAC,CAAA;IAC9D,KAAK,CAAC,EAAE,KAAK,CAAC,EAAE,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,YAAY,CAAC,EAAE,KAAK,CAAC,EAAE,CAAA;CACxB,CAAA;AAMD,eAAO,MAAM,8BAA8B,uCAA+C,CAAA;AAE1F,eAAO,MAAM,oBAAoB,EAAE,KAAK,CAAC,EAAE,CAAC,yBAAyB,CAAC,iBAAiB,CAAC,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/features/blocks/client/componentInline/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAwC,SAAS,EAAE,MAAM,SAAS,CAAA;AAwB9E,OAAO,cAAc,CAAA;AAGrB,OAAO,KAAiE,MAAM,OAAO,CAAA;AAGrF,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,sBAAsB,CAAA;AAC5E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAA;AAC/E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAMhE,MAAM,MAAM,yBAAyB,CACnC,SAAS,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,iBAAiB,IAC3D;IACF,QAAQ,CAAC,WAAW,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,gCAAgC,CAAC,CAAA;IACjE,QAAQ,CAAC,WAAW,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,gCAAgC,CAAC,CAAA;CAClE,GAAG,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,EAAE,aAAa,GAAG,WAAW,GAAG,UAAU,GAAG,SAAS,CAAC,CAAA;AAE9F,MAAM,MAAM,+BAA+B,GAAG;IAC5C,UAAU,CAAC,EAAE,KAAK,CAAC,EAAE,CAAA;IACrB,YAAY,EAAE,KAAK,GAAG,SAAS,GAAG,SAAS,CAAA;IAC3C,oBAAoB,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;QAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;KAAE,CAAC,CAAA;IAC9D,KAAK,CAAC,EAAE,KAAK,CAAC,EAAE,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,YAAY,CAAC,EAAE,KAAK,CAAC,EAAE,CAAA;CACxB,CAAA;AAMD,eAAO,MAAM,8BAA8B,uCAA+C,CAAA;AAE1F,eAAO,MAAM,oBAAoB,EAAE,KAAK,CAAC,EAAE,CAAC,yBAAyB,CAAC,iBAAiB,CAAC,CAuevF,CAAA"}
|
|
@@ -58,43 +58,71 @@ export const InlineBlockComponent = (props)=>{
|
|
|
58
58
|
}, [
|
|
59
59
|
cacheBuster
|
|
60
60
|
]);
|
|
61
|
+
const [formUuid] = React.useState(()=>uuid());
|
|
62
|
+
// Server-rendered custom components (from admin.components, NOT viewMap).
|
|
63
|
+
// When viewMap components exist, we render them directly with formData instead.
|
|
61
64
|
const [CustomLabel, setCustomLabel] = React.useState(()=>{
|
|
62
65
|
if (CustomLabelFromProps) {
|
|
63
|
-
return
|
|
66
|
+
return undefined;
|
|
67
|
+
}
|
|
68
|
+
// @ts-expect-error - vestiges of when tsconfig was not strict. Feel free to improve
|
|
69
|
+
return initialState?.['_components']?.customComponents?.BlockLabel ?? undefined;
|
|
70
|
+
});
|
|
71
|
+
const [CustomBlock, setCustomBlock] = React.useState(()=>{
|
|
72
|
+
if (CustomBlockFromProps) {
|
|
73
|
+
return undefined;
|
|
74
|
+
}
|
|
75
|
+
// @ts-expect-error - vestiges of when tsconfig was not strict. Feel free to improve
|
|
76
|
+
return initialState?.['_components']?.customComponents?.Block ?? undefined;
|
|
77
|
+
});
|
|
78
|
+
const resolvedCustomBlock = useMemo(()=>{
|
|
79
|
+
if (CustomBlockFromProps) {
|
|
80
|
+
return /*#__PURE__*/ _jsxDEV(CustomBlockFromProps, {
|
|
64
81
|
className: baseClass,
|
|
65
82
|
formData: formData,
|
|
66
83
|
isEditor: true,
|
|
67
84
|
isJSXConverter: false,
|
|
68
85
|
nodeKey: nodeKey,
|
|
86
|
+
// eslint-disable-next-line react-compiler/react-compiler -- intentionally passed as a prop for custom block components to call
|
|
69
87
|
useInlineBlockComponentContext: useInlineBlockComponentContext
|
|
70
88
|
}, void 0, false, {
|
|
71
89
|
fileName: "src/features/blocks/client/componentInline/index.tsx",
|
|
72
|
-
lineNumber:
|
|
90
|
+
lineNumber: 149,
|
|
73
91
|
columnNumber: 9
|
|
74
92
|
}, this);
|
|
75
93
|
}
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
94
|
+
return CustomBlock;
|
|
95
|
+
}, [
|
|
96
|
+
CustomBlockFromProps,
|
|
97
|
+
baseClass,
|
|
98
|
+
formData,
|
|
99
|
+
nodeKey,
|
|
100
|
+
CustomBlock
|
|
101
|
+
]);
|
|
102
|
+
const resolvedCustomLabel = useMemo(()=>{
|
|
103
|
+
if (CustomLabelFromProps) {
|
|
104
|
+
return /*#__PURE__*/ _jsxDEV(CustomLabelFromProps, {
|
|
83
105
|
className: baseClass,
|
|
84
106
|
formData: formData,
|
|
85
107
|
isEditor: true,
|
|
86
108
|
isJSXConverter: false,
|
|
87
109
|
nodeKey: nodeKey,
|
|
110
|
+
// eslint-disable-next-line react-compiler/react-compiler -- intentionally passed as a prop for custom block components to call
|
|
88
111
|
useInlineBlockComponentContext: useInlineBlockComponentContext
|
|
89
112
|
}, void 0, false, {
|
|
90
113
|
fileName: "src/features/blocks/client/componentInline/index.tsx",
|
|
91
|
-
lineNumber:
|
|
114
|
+
lineNumber: 166,
|
|
92
115
|
columnNumber: 9
|
|
93
116
|
}, this);
|
|
94
117
|
}
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
118
|
+
return CustomLabel;
|
|
119
|
+
}, [
|
|
120
|
+
CustomLabelFromProps,
|
|
121
|
+
baseClass,
|
|
122
|
+
formData,
|
|
123
|
+
nodeKey,
|
|
124
|
+
CustomLabel
|
|
125
|
+
]);
|
|
98
126
|
const drawerSlug = formatDrawerSlug({
|
|
99
127
|
slug: `lexical-inlineBlocks-create-${uuidFromContext}-${formData.id}`,
|
|
100
128
|
depth: editDepth
|
|
@@ -237,39 +265,10 @@ export const InlineBlockComponent = (props)=>{
|
|
|
237
265
|
return prevFormState;
|
|
238
266
|
}
|
|
239
267
|
if (submit) {
|
|
240
|
-
|
|
241
|
-
excludeFiles: true
|
|
242
|
-
}), true);
|
|
243
|
-
if (CustomLabelFromProps) {
|
|
244
|
-
setCustomLabel(/*#__PURE__*/ _jsxDEV(CustomLabelFromProps, {
|
|
245
|
-
className: baseClass,
|
|
246
|
-
formData: newFormStateData,
|
|
247
|
-
isEditor: true,
|
|
248
|
-
isJSXConverter: false,
|
|
249
|
-
nodeKey: nodeKey,
|
|
250
|
-
useInlineBlockComponentContext: useInlineBlockComponentContext
|
|
251
|
-
}, void 0, false, {
|
|
252
|
-
fileName: "src/features/blocks/client/componentInline/index.tsx",
|
|
253
|
-
lineNumber: 334,
|
|
254
|
-
columnNumber: 13
|
|
255
|
-
}, this));
|
|
256
|
-
} else {
|
|
268
|
+
if (!CustomLabelFromProps) {
|
|
257
269
|
setCustomLabel(state['_components']?.customComponents?.BlockLabel);
|
|
258
270
|
}
|
|
259
|
-
if (CustomBlockFromProps) {
|
|
260
|
-
setCustomBlock(/*#__PURE__*/ _jsxDEV(CustomBlockFromProps, {
|
|
261
|
-
className: baseClass,
|
|
262
|
-
formData: newFormStateData,
|
|
263
|
-
isEditor: true,
|
|
264
|
-
isJSXConverter: false,
|
|
265
|
-
nodeKey: nodeKey,
|
|
266
|
-
useInlineBlockComponentContext: useInlineBlockComponentContext
|
|
267
|
-
}, void 0, false, {
|
|
268
|
-
fileName: "src/features/blocks/client/componentInline/index.tsx",
|
|
269
|
-
lineNumber: 348,
|
|
270
|
-
columnNumber: 13
|
|
271
|
-
}, this));
|
|
272
|
-
} else {
|
|
271
|
+
if (!CustomBlockFromProps) {
|
|
273
272
|
setCustomBlock(state['_components']?.customComponents?.Block);
|
|
274
273
|
}
|
|
275
274
|
}
|
|
@@ -283,8 +282,6 @@ export const InlineBlockComponent = (props)=>{
|
|
|
283
282
|
globalSlug,
|
|
284
283
|
isEditable,
|
|
285
284
|
schemaFieldsPath,
|
|
286
|
-
baseClass,
|
|
287
|
-
nodeKey,
|
|
288
285
|
CustomBlockFromProps,
|
|
289
286
|
CustomLabelFromProps
|
|
290
287
|
]);
|
|
@@ -337,7 +334,7 @@ export const InlineBlockComponent = (props)=>{
|
|
|
337
334
|
})
|
|
338
335
|
}, void 0, false, {
|
|
339
336
|
fileName: "src/features/blocks/client/componentInline/index.tsx",
|
|
340
|
-
lineNumber:
|
|
337
|
+
lineNumber: 407,
|
|
341
338
|
columnNumber: 7
|
|
342
339
|
}, this), [
|
|
343
340
|
baseClass,
|
|
@@ -362,7 +359,7 @@ export const InlineBlockComponent = (props)=>{
|
|
|
362
359
|
})
|
|
363
360
|
}, void 0, false, {
|
|
364
361
|
fileName: "src/features/blocks/client/componentInline/index.tsx",
|
|
365
|
-
lineNumber:
|
|
362
|
+
lineNumber: 426,
|
|
366
363
|
columnNumber: 7
|
|
367
364
|
}, this), [
|
|
368
365
|
baseClass,
|
|
@@ -381,26 +378,26 @@ export const InlineBlockComponent = (props)=>{
|
|
|
381
378
|
children: children
|
|
382
379
|
}, void 0, false, {
|
|
383
380
|
fileName: "src/features/blocks/client/componentInline/index.tsx",
|
|
384
|
-
lineNumber:
|
|
381
|
+
lineNumber: 446,
|
|
385
382
|
columnNumber: 9
|
|
386
383
|
}, this), [
|
|
387
384
|
baseClass,
|
|
388
385
|
formData.blockType
|
|
389
386
|
]);
|
|
390
387
|
const Label = useMemo(()=>{
|
|
391
|
-
if (
|
|
392
|
-
return ()=>
|
|
388
|
+
if (resolvedCustomLabel) {
|
|
389
|
+
return ()=>resolvedCustomLabel;
|
|
393
390
|
} else {
|
|
394
391
|
return ()=>/*#__PURE__*/ _jsxDEV("div", {
|
|
395
392
|
children: clientBlock?.labels ? getTranslation(clientBlock?.labels.singular, i18n) : ''
|
|
396
393
|
}, void 0, false, {
|
|
397
394
|
fileName: "src/features/blocks/client/componentInline/index.tsx",
|
|
398
|
-
lineNumber:
|
|
395
|
+
lineNumber: 463,
|
|
399
396
|
columnNumber: 9
|
|
400
397
|
}, this);
|
|
401
398
|
}
|
|
402
399
|
}, [
|
|
403
|
-
|
|
400
|
+
resolvedCustomLabel,
|
|
404
401
|
clientBlock?.labels,
|
|
405
402
|
i18n
|
|
406
403
|
]);
|
|
@@ -416,25 +413,25 @@ export const InlineBlockComponent = (props)=>{
|
|
|
416
413
|
]
|
|
417
414
|
}, void 0, true, {
|
|
418
415
|
fileName: "src/features/blocks/client/componentInline/index.tsx",
|
|
419
|
-
lineNumber:
|
|
416
|
+
lineNumber: 471,
|
|
420
417
|
columnNumber: 9
|
|
421
418
|
}, this),
|
|
422
419
|
isEditable ? /*#__PURE__*/ _jsxDEV("div", {
|
|
423
420
|
className: `${baseClass}__actions`,
|
|
424
421
|
children: /*#__PURE__*/ _jsxDEV(RemoveButton, {}, void 0, false, {
|
|
425
422
|
fileName: "src/features/blocks/client/componentInline/index.tsx",
|
|
426
|
-
lineNumber:
|
|
423
|
+
lineNumber: 474,
|
|
427
424
|
columnNumber: 13
|
|
428
425
|
}, this)
|
|
429
426
|
}, void 0, false, {
|
|
430
427
|
fileName: "src/features/blocks/client/componentInline/index.tsx",
|
|
431
|
-
lineNumber:
|
|
428
|
+
lineNumber: 473,
|
|
432
429
|
columnNumber: 11
|
|
433
430
|
}, this) : null
|
|
434
431
|
]
|
|
435
432
|
}, void 0, true, {
|
|
436
433
|
fileName: "src/features/blocks/client/componentInline/index.tsx",
|
|
437
|
-
lineNumber:
|
|
434
|
+
lineNumber: 470,
|
|
438
435
|
columnNumber: 7
|
|
439
436
|
}, this);
|
|
440
437
|
}
|
|
@@ -459,7 +456,7 @@ export const InlineBlockComponent = (props)=>{
|
|
|
459
456
|
onFormSubmit(formState, data);
|
|
460
457
|
toggleDrawer();
|
|
461
458
|
},
|
|
462
|
-
uuid:
|
|
459
|
+
uuid: formUuid,
|
|
463
460
|
children: [
|
|
464
461
|
/*#__PURE__*/ _jsxDEV(EditDepthProvider, {
|
|
465
462
|
children: /*#__PURE__*/ _jsxDEV(Drawer, {
|
|
@@ -481,7 +478,7 @@ export const InlineBlockComponent = (props)=>{
|
|
|
481
478
|
readOnly: !isEditable
|
|
482
479
|
}, void 0, false, {
|
|
483
480
|
fileName: "src/features/blocks/client/componentInline/index.tsx",
|
|
484
|
-
lineNumber:
|
|
481
|
+
lineNumber: 510,
|
|
485
482
|
columnNumber: 15
|
|
486
483
|
}, this),
|
|
487
484
|
/*#__PURE__*/ _jsxDEV(FormSubmit, {
|
|
@@ -489,22 +486,22 @@ export const InlineBlockComponent = (props)=>{
|
|
|
489
486
|
children: t('fields:saveChanges')
|
|
490
487
|
}, void 0, false, {
|
|
491
488
|
fileName: "src/features/blocks/client/componentInline/index.tsx",
|
|
492
|
-
lineNumber:
|
|
489
|
+
lineNumber: 519,
|
|
493
490
|
columnNumber: 15
|
|
494
491
|
}, this)
|
|
495
492
|
]
|
|
496
493
|
}, void 0, true) : null
|
|
497
494
|
}, void 0, false, {
|
|
498
495
|
fileName: "src/features/blocks/client/componentInline/index.tsx",
|
|
499
|
-
lineNumber:
|
|
496
|
+
lineNumber: 501,
|
|
500
497
|
columnNumber: 9
|
|
501
498
|
}, this)
|
|
502
499
|
}, void 0, false, {
|
|
503
500
|
fileName: "src/features/blocks/client/componentInline/index.tsx",
|
|
504
|
-
lineNumber:
|
|
501
|
+
lineNumber: 500,
|
|
505
502
|
columnNumber: 7
|
|
506
503
|
}, this),
|
|
507
|
-
|
|
504
|
+
resolvedCustomBlock ? /*#__PURE__*/ _jsxDEV(InlineBlockComponentContext, {
|
|
508
505
|
value: {
|
|
509
506
|
EditButton,
|
|
510
507
|
initialState,
|
|
@@ -513,23 +510,23 @@ export const InlineBlockComponent = (props)=>{
|
|
|
513
510
|
nodeKey,
|
|
514
511
|
RemoveButton
|
|
515
512
|
},
|
|
516
|
-
children:
|
|
513
|
+
children: resolvedCustomBlock
|
|
517
514
|
}, void 0, false, {
|
|
518
515
|
fileName: "src/features/blocks/client/componentInline/index.tsx",
|
|
519
|
-
lineNumber:
|
|
516
|
+
lineNumber: 525,
|
|
520
517
|
columnNumber: 9
|
|
521
518
|
}, this) : /*#__PURE__*/ _jsxDEV(InlineBlockContainer, {
|
|
522
519
|
children: [
|
|
523
520
|
initialState ? /*#__PURE__*/ _jsxDEV(Label, {}, void 0, false, {
|
|
524
521
|
fileName: "src/features/blocks/client/componentInline/index.tsx",
|
|
525
|
-
lineNumber:
|
|
522
|
+
lineNumber: 539,
|
|
526
523
|
columnNumber: 27
|
|
527
524
|
}, this) : /*#__PURE__*/ _jsxDEV(ShimmerEffect, {
|
|
528
525
|
height: "15px",
|
|
529
526
|
width: "40px"
|
|
530
527
|
}, void 0, false, {
|
|
531
528
|
fileName: "src/features/blocks/client/componentInline/index.tsx",
|
|
532
|
-
lineNumber:
|
|
529
|
+
lineNumber: 539,
|
|
533
530
|
columnNumber: 39
|
|
534
531
|
}, this),
|
|
535
532
|
isEditable ? /*#__PURE__*/ _jsxDEV("div", {
|
|
@@ -537,30 +534,30 @@ export const InlineBlockComponent = (props)=>{
|
|
|
537
534
|
children: [
|
|
538
535
|
/*#__PURE__*/ _jsxDEV(EditButton, {}, void 0, false, {
|
|
539
536
|
fileName: "src/features/blocks/client/componentInline/index.tsx",
|
|
540
|
-
lineNumber:
|
|
537
|
+
lineNumber: 542,
|
|
541
538
|
columnNumber: 15
|
|
542
539
|
}, this),
|
|
543
540
|
/*#__PURE__*/ _jsxDEV(RemoveButton, {}, void 0, false, {
|
|
544
541
|
fileName: "src/features/blocks/client/componentInline/index.tsx",
|
|
545
|
-
lineNumber:
|
|
542
|
+
lineNumber: 543,
|
|
546
543
|
columnNumber: 15
|
|
547
544
|
}, this)
|
|
548
545
|
]
|
|
549
546
|
}, void 0, true, {
|
|
550
547
|
fileName: "src/features/blocks/client/componentInline/index.tsx",
|
|
551
|
-
lineNumber:
|
|
548
|
+
lineNumber: 541,
|
|
552
549
|
columnNumber: 13
|
|
553
550
|
}, this) : null
|
|
554
551
|
]
|
|
555
552
|
}, void 0, true, {
|
|
556
553
|
fileName: "src/features/blocks/client/componentInline/index.tsx",
|
|
557
|
-
lineNumber:
|
|
554
|
+
lineNumber: 538,
|
|
558
555
|
columnNumber: 9
|
|
559
556
|
}, this)
|
|
560
557
|
]
|
|
561
558
|
}, void 0, true, {
|
|
562
559
|
fileName: "src/features/blocks/client/componentInline/index.tsx",
|
|
563
|
-
lineNumber:
|
|
560
|
+
lineNumber: 482,
|
|
564
561
|
columnNumber: 5
|
|
565
562
|
}, this);
|
|
566
563
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/features/blocks/client/componentInline/index.tsx"],"sourcesContent":["'use client'\n\nimport type { BlocksFieldClient, ClientBlock, Data, FormState } from 'payload'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext'\nimport { useLexicalEditable } from '@lexical/react/useLexicalEditable'\nimport { getTranslation } from '@payloadcms/translations'\nimport {\n Button,\n Drawer,\n EditDepthProvider,\n Form,\n formatDrawerSlug,\n FormSubmit,\n RenderFields,\n ShimmerEffect,\n useConfig,\n useDocumentForm,\n useDocumentInfo,\n useEditDepth,\n useServerFunctions,\n useTranslation,\n} from '@payloadcms/ui'\nimport { abortAndIgnore } from '@payloadcms/ui/shared'\nimport { $getNodeByKey } from 'lexical'\n\nimport './index.scss'\n\nimport { deepCopyObjectSimpleWithoutReactComponents, reduceFieldsToValues } from 'payload/shared'\nimport React, { createContext, useCallback, useEffect, useMemo, useRef } from 'react'\nimport { v4 as uuid } from 'uuid'\n\nimport type { ViewMapInlineBlockComponentProps } from '../../../../types.js'\nimport type { InlineBlockFields } from '../../server/nodes/InlineBlocksNode.js'\nimport type { BlockComponentProps } from '../component/index.js'\n\nimport { useEditorConfigContext } from '../../../../lexical/config/client/EditorConfigProvider.js'\nimport { useLexicalDrawer } from '../../../../utilities/fieldsDrawer/useLexicalDrawer.js'\nimport { $isInlineBlockNode } from '../nodes/InlineBlocksNode.js'\n\nexport type InlineBlockComponentProps<\n TFormData extends Record<string, unknown> = InlineBlockFields,\n> = {\n readonly CustomBlock?: React.FC<ViewMapInlineBlockComponentProps>\n readonly CustomLabel?: React.FC<ViewMapInlineBlockComponentProps>\n} & Pick<BlockComponentProps<TFormData>, 'cacheBuster' | 'className' | 'formData' | 'nodeKey'>\n\nexport type InlineBlockComponentContextType = {\n EditButton?: React.FC\n initialState: false | FormState | undefined\n InlineBlockContainer?: React.FC<{ children: React.ReactNode }>\n Label?: React.FC\n nodeKey?: string\n RemoveButton?: React.FC\n}\n\nconst InlineBlockComponentContext = createContext<InlineBlockComponentContextType>({\n initialState: false,\n})\n\nexport const useInlineBlockComponentContext = () => React.use(InlineBlockComponentContext)\n\nexport const InlineBlockComponent: React.FC<InlineBlockComponentProps<InlineBlockFields>> = (\n props,\n) => {\n const {\n cacheBuster,\n className: baseClass,\n CustomBlock: CustomBlockFromProps,\n CustomLabel: CustomLabelFromProps,\n formData,\n nodeKey,\n } = props\n\n const [editor] = useLexicalComposerContext()\n const isEditable = useLexicalEditable()\n const { i18n, t } = useTranslation<object, string>()\n const {\n createdInlineBlock,\n fieldProps: { featureClientSchemaMap, initialLexicalFormState, schemaPath },\n setCreatedInlineBlock,\n uuid: uuidFromContext,\n } = useEditorConfigContext()\n const { fields: parentDocumentFields } = useDocumentForm()\n\n const { getFormState } = useServerFunctions()\n const editDepth = useEditDepth()\n const firstTimeDrawer = useRef(false)\n\n const [initialState, setInitialState] = React.useState<false | FormState | undefined>(() => {\n // Initial form state that was calculated server-side. May have stale values\n const cachedFormState = initialLexicalFormState?.[formData.id]?.formState\n if (!cachedFormState) {\n return false\n }\n\n // Merge current formData values into the cached form state\n // This ensures that when the component remounts (e.g., due to view changes), we don't lose user edits\n return Object.fromEntries(\n Object.entries(cachedFormState).map(([fieldName, fieldState]) => [\n fieldName,\n fieldName in formData\n ? {\n ...fieldState,\n initialValue: formData[fieldName],\n value: formData[fieldName],\n }\n : fieldState,\n ]),\n )\n })\n\n const hasMounted = useRef(false)\n const prevCacheBuster = useRef(cacheBuster)\n useEffect(() => {\n if (hasMounted.current) {\n if (prevCacheBuster.current !== cacheBuster) {\n setInitialState(false)\n }\n prevCacheBuster.current = cacheBuster\n } else {\n hasMounted.current = true\n }\n }, [cacheBuster])\n\n const [CustomLabel, setCustomLabel] = React.useState<React.ReactNode | undefined>(() => {\n if (CustomLabelFromProps) {\n return (\n <CustomLabelFromProps\n className={baseClass}\n formData={formData}\n isEditor={true}\n isJSXConverter={false}\n nodeKey={nodeKey}\n useInlineBlockComponentContext={useInlineBlockComponentContext}\n />\n )\n }\n // @ts-expect-error - vestiges of when tsconfig was not strict. Feel free to improve\n return initialState?.['_components']?.customComponents?.BlockLabel ?? undefined\n })\n\n const [CustomBlock, setCustomBlock] = React.useState<React.ReactNode | undefined>(() => {\n if (CustomBlockFromProps) {\n // Pass useInlineBlockComponentContext as useBlockComponentContext for inline blocks\n return (\n <CustomBlockFromProps\n className={baseClass}\n formData={formData}\n isEditor={true}\n isJSXConverter={false}\n nodeKey={nodeKey}\n useInlineBlockComponentContext={useInlineBlockComponentContext}\n />\n )\n }\n // @ts-expect-error - vestiges of when tsconfig was not strict. Feel free to improve\n return initialState?.['_components']?.customComponents?.Block ?? undefined\n })\n\n const drawerSlug = formatDrawerSlug({\n slug: `lexical-inlineBlocks-create-${uuidFromContext}-${formData.id}`,\n depth: editDepth,\n })\n const { toggleDrawer } = useLexicalDrawer(drawerSlug, true)\n\n const inlineBlockElemElemRef = useRef<HTMLDivElement | null>(null)\n const { id, collectionSlug, getDocPreferences, globalSlug } = useDocumentInfo()\n const { config } = useConfig()\n\n const componentMapRenderedBlockPath = `${schemaPath}.lexical_internal_feature.blocks.lexical_inline_blocks.${formData.blockType}`\n\n const clientSchemaMap = featureClientSchemaMap['blocks']\n\n const blocksField: BlocksFieldClient = clientSchemaMap?.[\n componentMapRenderedBlockPath\n ]?.[0] as BlocksFieldClient\n\n const clientBlock: ClientBlock | undefined = blocksField.blockReferences\n ? typeof blocksField?.blockReferences?.[0] === 'string'\n ? config.blocksMap[blocksField?.blockReferences?.[0]]\n : blocksField?.blockReferences?.[0]\n : blocksField?.blocks?.[0]\n\n const clientBlockFields = clientBlock?.fields ?? []\n\n // Open drawer on \"mount\"\n useEffect(() => {\n if (!firstTimeDrawer.current && createdInlineBlock?.getKey() === nodeKey) {\n // > 2 because they always have \"id\" and \"blockName\" fields\n if (clientBlockFields.length > 2) {\n toggleDrawer()\n }\n setCreatedInlineBlock?.(undefined)\n firstTimeDrawer.current = true\n }\n }, [clientBlockFields.length, createdInlineBlock, nodeKey, setCreatedInlineBlock, toggleDrawer])\n\n const removeInlineBlock = useCallback(() => {\n editor.update(() => {\n $getNodeByKey(nodeKey)?.remove()\n })\n }, [editor, nodeKey])\n\n const blockDisplayName = clientBlock?.labels?.singular\n ? getTranslation(clientBlock?.labels.singular, i18n)\n : clientBlock?.slug\n\n const onChangeAbortControllerRef = useRef(new AbortController())\n const schemaFieldsPath = `${schemaPath}.lexical_internal_feature.blocks.lexical_inline_blocks.${clientBlock?.slug}.fields`\n\n // Initial state for newly created blocks\n useEffect(() => {\n const abortController = new AbortController()\n\n const awaitInitialState = async () => {\n /*\n * This will only run if a new block is created. For all existing blocks that are loaded when the document is loaded, or when the form is saved,\n * this is not run, as the lexical field RSC will fetch the state server-side and pass it to the client. That way, we avoid unnecessary client-side\n * requests. Though for newly created blocks, we need to fetch the state client-side, as the server doesn't know about the block yet.\n */\n const { state } = await getFormState({\n id,\n collectionSlug,\n data: formData,\n docPermissions: { fields: true },\n docPreferences: await getDocPreferences(),\n documentFormState: deepCopyObjectSimpleWithoutReactComponents(parentDocumentFields, {\n excludeFiles: true,\n }),\n globalSlug,\n initialBlockData: formData,\n initialBlockFormState: formData,\n operation: 'update',\n readOnly: !isEditable,\n renderAllFields: true,\n schemaPath: schemaFieldsPath,\n signal: abortController.signal,\n })\n\n if (state) {\n const newFormStateData: InlineBlockFields = reduceFieldsToValues(\n deepCopyObjectSimpleWithoutReactComponents(state, { excludeFiles: true }),\n true,\n ) as InlineBlockFields\n\n // Things like default values may come back from the server => update the node with the new data\n editor.update(() => {\n const node = $getNodeByKey(nodeKey)\n if (node && $isInlineBlockNode(node)) {\n const newData = newFormStateData\n newData.blockType = formData.blockType\n\n node.setFields(newData, true)\n }\n })\n\n setInitialState(state)\n if (!CustomLabelFromProps) {\n setCustomLabel(state['_components']?.customComponents?.BlockLabel)\n }\n if (!CustomBlockFromProps) {\n setCustomBlock(state['_components']?.customComponents?.Block)\n }\n }\n }\n\n if (formData && !initialState) {\n void awaitInitialState()\n }\n\n return () => {\n abortAndIgnore(abortController)\n }\n }, [\n getFormState,\n editor,\n nodeKey,\n isEditable,\n CustomLabelFromProps,\n CustomBlockFromProps,\n schemaFieldsPath,\n id,\n formData,\n initialState,\n collectionSlug,\n globalSlug,\n getDocPreferences,\n parentDocumentFields,\n ])\n\n /**\n * HANDLE ONCHANGE\n */\n const onChange = useCallback(\n async ({ formState: prevFormState, submit }: { formState: FormState; submit?: boolean }) => {\n abortAndIgnore(onChangeAbortControllerRef.current)\n\n const controller = new AbortController()\n onChangeAbortControllerRef.current = controller\n\n const { state } = await getFormState({\n id,\n collectionSlug,\n docPermissions: {\n fields: true,\n },\n docPreferences: await getDocPreferences(),\n documentFormState: deepCopyObjectSimpleWithoutReactComponents(parentDocumentFields, {\n excludeFiles: true,\n }),\n formState: prevFormState,\n globalSlug,\n initialBlockFormState: prevFormState,\n operation: 'update',\n readOnly: !isEditable,\n renderAllFields: submit ? true : false,\n schemaPath: schemaFieldsPath,\n signal: controller.signal,\n })\n\n if (!state) {\n return prevFormState\n }\n\n if (submit) {\n const newFormStateData: InlineBlockFields = reduceFieldsToValues(\n deepCopyObjectSimpleWithoutReactComponents(state, { excludeFiles: true }),\n true,\n ) as InlineBlockFields\n\n if (CustomLabelFromProps) {\n setCustomLabel(\n <CustomLabelFromProps\n className={baseClass}\n formData={newFormStateData}\n isEditor={true}\n isJSXConverter={false}\n nodeKey={nodeKey}\n useInlineBlockComponentContext={useInlineBlockComponentContext}\n />,\n )\n } else {\n setCustomLabel(state['_components']?.customComponents?.BlockLabel)\n }\n if (CustomBlockFromProps) {\n setCustomBlock(\n <CustomBlockFromProps\n className={baseClass}\n formData={newFormStateData}\n isEditor={true}\n isJSXConverter={false}\n nodeKey={nodeKey}\n useInlineBlockComponentContext={useInlineBlockComponentContext}\n />,\n )\n } else {\n setCustomBlock(state['_components']?.customComponents?.Block)\n }\n }\n\n return state\n },\n [\n getFormState,\n id,\n collectionSlug,\n getDocPreferences,\n parentDocumentFields,\n globalSlug,\n isEditable,\n schemaFieldsPath,\n baseClass,\n nodeKey,\n CustomBlockFromProps,\n CustomLabelFromProps,\n ],\n )\n // cleanup effect\n useEffect(() => {\n const isStateOutOfSync = (formData: InlineBlockFields, initialState: FormState) => {\n return Object.keys(initialState).some(\n (key) => initialState[key] && formData[key] !== initialState[key].value,\n )\n }\n\n return () => {\n // If the component is unmounted (either via removeInlineBlock or via lexical itself) and the form state got changed before,\n // we need to reset the initial state to force a re-fetch of the initial state when it gets mounted again (e.g. via lexical history undo).\n // Otherwise it would use an outdated initial state.\n if (initialState && isStateOutOfSync(formData, initialState)) {\n setInitialState(false)\n }\n abortAndIgnore(onChangeAbortControllerRef.current)\n }\n }, [formData, initialState])\n\n /**\n * HANDLE FORM SUBMIT\n */\n const onFormSubmit = useCallback(\n (formState: FormState, newData: Data) => {\n newData.blockType = formData.blockType\n\n editor.update(() => {\n const node = $getNodeByKey(nodeKey)\n if (node && $isInlineBlockNode(node)) {\n node.setFields(newData as InlineBlockFields, true)\n }\n })\n },\n [editor, nodeKey, formData],\n )\n\n const RemoveButton = useMemo(\n () => () => (\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__removeButton`}\n disabled={!isEditable}\n icon=\"x\"\n onClick={(e) => {\n e.preventDefault()\n removeInlineBlock()\n }}\n round\n size=\"small\"\n tooltip={t('lexical:blocks:inlineBlocks:remove', { label: blockDisplayName })}\n />\n ),\n [baseClass, blockDisplayName, isEditable, removeInlineBlock, t],\n )\n\n const EditButton = useMemo(\n () => () => (\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__editButton`}\n disabled={!isEditable}\n el=\"button\"\n icon=\"edit\"\n onClick={() => {\n toggleDrawer()\n }}\n round\n size=\"small\"\n tooltip={t('lexical:blocks:inlineBlocks:edit', { label: blockDisplayName })}\n />\n ),\n [baseClass, blockDisplayName, isEditable, t, toggleDrawer],\n )\n\n const InlineBlockContainer = useMemo(\n () =>\n ({ children, className }: { children: React.ReactNode; className?: string }) => (\n <div\n className={[`${baseClass}__container`, baseClass + '-' + formData.blockType, className]\n .filter(Boolean)\n .join(' ')}\n ref={inlineBlockElemElemRef}\n >\n {children}\n </div>\n ),\n [baseClass, formData.blockType],\n )\n\n const Label = useMemo(() => {\n if (CustomLabel) {\n return () => CustomLabel\n } else {\n return () => (\n <div>{clientBlock?.labels ? getTranslation(clientBlock?.labels.singular, i18n) : ''}</div>\n )\n }\n }, [CustomLabel, clientBlock?.labels, i18n])\n\n if (!clientBlock) {\n return (\n <InlineBlockContainer className={`${baseClass}-not-found`}>\n <span>Error: Block '{formData.blockType}' not found</span>\n {isEditable ? (\n <div className={`${baseClass}__actions`}>\n <RemoveButton />\n </div>\n ) : null}\n </InlineBlockContainer>\n )\n }\n\n return (\n <Form\n beforeSubmit={[\n async ({ formState }) => {\n // This is only called when form is submitted from drawer\n return await onChange({ formState, submit: true })\n },\n ]}\n disableValidationOnSubmit\n el=\"div\"\n fields={clientBlock?.fields}\n initialState={initialState || {}}\n onChange={[onChange]}\n onSubmit={(formState, data) => {\n onFormSubmit(formState, data)\n toggleDrawer()\n }}\n uuid={uuid()}\n >\n <EditDepthProvider>\n <Drawer\n className={''}\n slug={drawerSlug}\n title={t(`lexical:blocks:inlineBlocks:${formData?.id ? 'edit' : 'create'}`, {\n label: blockDisplayName ?? t('lexical:blocks:inlineBlocks:label'),\n })}\n >\n {initialState ? (\n <>\n <RenderFields\n fields={clientBlock?.fields}\n forceRender\n parentIndexPath=\"\"\n parentPath=\"\" // See Blocks feature path for details as for why this is empty\n parentSchemaPath={schemaFieldsPath}\n permissions={true}\n readOnly={!isEditable}\n />\n <FormSubmit programmaticSubmit={true}>{t('fields:saveChanges')}</FormSubmit>\n </>\n ) : null}\n </Drawer>\n </EditDepthProvider>\n {CustomBlock ? (\n <InlineBlockComponentContext\n value={{\n EditButton,\n initialState,\n InlineBlockContainer,\n Label,\n nodeKey,\n RemoveButton,\n }}\n >\n {CustomBlock}\n </InlineBlockComponentContext>\n ) : (\n <InlineBlockContainer>\n {initialState ? <Label /> : <ShimmerEffect height=\"15px\" width=\"40px\" />}\n {isEditable ? (\n <div className={`${baseClass}__actions`}>\n <EditButton />\n <RemoveButton />\n </div>\n ) : null}\n </InlineBlockContainer>\n )}\n </Form>\n )\n}\n"],"names":["useLexicalComposerContext","useLexicalEditable","getTranslation","Button","Drawer","EditDepthProvider","Form","formatDrawerSlug","FormSubmit","RenderFields","ShimmerEffect","useConfig","useDocumentForm","useDocumentInfo","useEditDepth","useServerFunctions","useTranslation","abortAndIgnore","$getNodeByKey","deepCopyObjectSimpleWithoutReactComponents","reduceFieldsToValues","React","createContext","useCallback","useEffect","useMemo","useRef","v4","uuid","useEditorConfigContext","useLexicalDrawer","$isInlineBlockNode","InlineBlockComponentContext","initialState","useInlineBlockComponentContext","use","InlineBlockComponent","props","cacheBuster","className","baseClass","CustomBlock","CustomBlockFromProps","CustomLabel","CustomLabelFromProps","formData","nodeKey","editor","isEditable","i18n","t","createdInlineBlock","fieldProps","featureClientSchemaMap","initialLexicalFormState","schemaPath","setCreatedInlineBlock","uuidFromContext","fields","parentDocumentFields","getFormState","editDepth","firstTimeDrawer","setInitialState","useState","cachedFormState","id","formState","Object","fromEntries","entries","map","fieldName","fieldState","initialValue","value","hasMounted","prevCacheBuster","current","setCustomLabel","isEditor","isJSXConverter","customComponents","BlockLabel","undefined","setCustomBlock","Block","drawerSlug","slug","depth","toggleDrawer","inlineBlockElemElemRef","collectionSlug","getDocPreferences","globalSlug","config","componentMapRenderedBlockPath","blockType","clientSchemaMap","blocksField","clientBlock","blockReferences","blocksMap","blocks","clientBlockFields","getKey","length","removeInlineBlock","update","remove","blockDisplayName","labels","singular","onChangeAbortControllerRef","AbortController","schemaFieldsPath","abortController","awaitInitialState","state","data","docPermissions","docPreferences","documentFormState","excludeFiles","initialBlockData","initialBlockFormState","operation","readOnly","renderAllFields","signal","newFormStateData","node","newData","setFields","onChange","prevFormState","submit","controller","isStateOutOfSync","keys","some","key","onFormSubmit","RemoveButton","buttonStyle","disabled","icon","onClick","e","preventDefault","round","size","tooltip","label","EditButton","el","InlineBlockContainer","children","div","filter","Boolean","join","ref","Label","span","beforeSubmit","disableValidationOnSubmit","onSubmit","title","forceRender","parentIndexPath","parentPath","parentSchemaPath","permissions","programmaticSubmit","height","width"],"mappings":"AAAA;;AAIA,SAASA,yBAAyB,QAAQ,wCAAuC;AACjF,SAASC,kBAAkB,QAAQ,oCAAmC;AACtE,SAASC,cAAc,QAAQ,2BAA0B;AACzD,SACEC,MAAM,EACNC,MAAM,EACNC,iBAAiB,EACjBC,IAAI,EACJC,gBAAgB,EAChBC,UAAU,EACVC,YAAY,EACZC,aAAa,EACbC,SAAS,EACTC,eAAe,EACfC,eAAe,EACfC,YAAY,EACZC,kBAAkB,EAClBC,cAAc,QACT,iBAAgB;AACvB,SAASC,cAAc,QAAQ,wBAAuB;AACtD,SAASC,aAAa,QAAQ,UAAS;AAEvC,OAAO,eAAc;AAErB,SAASC,0CAA0C,EAAEC,oBAAoB,QAAQ,iBAAgB;AACjG,OAAOC,SAASC,aAAa,EAAEC,WAAW,EAAEC,SAAS,EAAEC,OAAO,EAAEC,MAAM,QAAQ,QAAO;AACrF,SAASC,MAAMC,IAAI,QAAQ,OAAM;AAMjC,SAASC,sBAAsB,QAAQ,4DAA2D;AAClG,SAASC,gBAAgB,QAAQ,yDAAwD;AACzF,SAASC,kBAAkB,QAAQ,+BAA8B;AAkBjE,MAAMC,4CAA8BV,cAA+C;IACjFW,cAAc;AAChB;AAEA,OAAO,MAAMC,iCAAiC,IAAMb,MAAMc,GAAG,CAACH,6BAA4B;AAE1F,OAAO,MAAMI,uBAA+E,CAC1FC;IAEA,MAAM,EACJC,WAAW,EACXC,WAAWC,SAAS,EACpBC,aAAaC,oBAAoB,EACjCC,aAAaC,oBAAoB,EACjCC,QAAQ,EACRC,OAAO,EACR,GAAGT;IAEJ,MAAM,CAACU,OAAO,GAAG/C;IACjB,MAAMgD,aAAa/C;IACnB,MAAM,EAAEgD,IAAI,EAAEC,CAAC,EAAE,GAAGlC;IACpB,MAAM,EACJmC,kBAAkB,EAClBC,YAAY,EAAEC,sBAAsB,EAAEC,uBAAuB,EAAEC,UAAU,EAAE,EAC3EC,qBAAqB,EACrB5B,MAAM6B,eAAe,EACtB,GAAG5B;IACJ,MAAM,EAAE6B,QAAQC,oBAAoB,EAAE,GAAG/C;IAEzC,MAAM,EAAEgD,YAAY,EAAE,GAAG7C;IACzB,MAAM8C,YAAY/C;IAClB,MAAMgD,kBAAkBpC,OAAO;IAE/B,MAAM,CAACO,cAAc8B,gBAAgB,GAAG1C,MAAM2C,QAAQ,CAAgC;QACpF,4EAA4E;QAC5E,MAAMC,kBAAkBX,yBAAyB,CAACT,SAASqB,EAAE,CAAC,EAAEC;QAChE,IAAI,CAACF,iBAAiB;YACpB,OAAO;QACT;QAEA,2DAA2D;QAC3D,sGAAsG;QACtG,OAAOG,OAAOC,WAAW,CACvBD,OAAOE,OAAO,CAACL,iBAAiBM,GAAG,CAAC,CAAC,CAACC,WAAWC,WAAW,GAAK;gBAC/DD;gBACAA,aAAa3B,WACT;oBACE,GAAG4B,UAAU;oBACbC,cAAc7B,QAAQ,CAAC2B,UAAU;oBACjCG,OAAO9B,QAAQ,CAAC2B,UAAU;gBAC5B,IACAC;aACL;IAEL;IAEA,MAAMG,aAAalD,OAAO;IAC1B,MAAMmD,kBAAkBnD,OAAOY;IAC/Bd,UAAU;QACR,IAAIoD,WAAWE,OAAO,EAAE;YACtB,IAAID,gBAAgBC,OAAO,KAAKxC,aAAa;gBAC3CyB,gBAAgB;YAClB;YACAc,gBAAgBC,OAAO,GAAGxC;QAC5B,OAAO;YACLsC,WAAWE,OAAO,GAAG;QACvB;IACF,GAAG;QAACxC;KAAY;IAEhB,MAAM,CAACK,aAAaoC,eAAe,GAAG1D,MAAM2C,QAAQ,CAA8B;QAChF,IAAIpB,sBAAsB;YACxB,qBACE,QAACA;gBACCL,WAAWC;gBACXK,UAAUA;gBACVmC,UAAU;gBACVC,gBAAgB;gBAChBnC,SAASA;gBACTZ,gCAAgCA;;;;;;QAGtC;QACA,oFAAoF;QACpF,OAAOD,cAAc,CAAC,cAAc,EAAEiD,kBAAkBC,cAAcC;IACxE;IAEA,MAAM,CAAC3C,aAAa4C,eAAe,GAAGhE,MAAM2C,QAAQ,CAA8B;QAChF,IAAItB,sBAAsB;YACxB,oFAAoF;YACpF,qBACE,QAACA;gBACCH,WAAWC;gBACXK,UAAUA;gBACVmC,UAAU;gBACVC,gBAAgB;gBAChBnC,SAASA;gBACTZ,gCAAgCA;;;;;;QAGtC;QACA,oFAAoF;QACpF,OAAOD,cAAc,CAAC,cAAc,EAAEiD,kBAAkBI,SAASF;IACnE;IAEA,MAAMG,aAAahF,iBAAiB;QAClCiF,MAAM,CAAC,4BAA4B,EAAE/B,gBAAgB,CAAC,EAAEZ,SAASqB,EAAE,EAAE;QACrEuB,OAAO5B;IACT;IACA,MAAM,EAAE6B,YAAY,EAAE,GAAG5D,iBAAiByD,YAAY;IAEtD,MAAMI,yBAAyBjE,OAA8B;IAC7D,MAAM,EAAEwC,EAAE,EAAE0B,cAAc,EAAEC,iBAAiB,EAAEC,UAAU,EAAE,GAAGjF;IAC9D,MAAM,EAAEkF,MAAM,EAAE,GAAGpF;IAEnB,MAAMqF,gCAAgC,GAAGzC,WAAW,uDAAuD,EAAEV,SAASoD,SAAS,EAAE;IAEjI,MAAMC,kBAAkB7C,sBAAsB,CAAC,SAAS;IAExD,MAAM8C,cAAiCD,iBAAiB,CACtDF,8BACD,EAAE,CAAC,EAAE;IAEN,MAAMI,cAAuCD,YAAYE,eAAe,GACpE,OAAOF,aAAaE,iBAAiB,CAAC,EAAE,KAAK,WAC3CN,OAAOO,SAAS,CAACH,aAAaE,iBAAiB,CAAC,EAAE,CAAC,GACnDF,aAAaE,iBAAiB,CAAC,EAAE,GACnCF,aAAaI,QAAQ,CAAC,EAAE;IAE5B,MAAMC,oBAAoBJ,aAAa1C,UAAU,EAAE;IAEnD,yBAAyB;IACzBlC,UAAU;QACR,IAAI,CAACsC,gBAAgBgB,OAAO,IAAI3B,oBAAoBsD,aAAa3D,SAAS;YACxE,2DAA2D;YAC3D,IAAI0D,kBAAkBE,MAAM,GAAG,GAAG;gBAChChB;YACF;YACAlC,wBAAwB4B;YACxBtB,gBAAgBgB,OAAO,GAAG;QAC5B;IACF,GAAG;QAAC0B,kBAAkBE,MAAM;QAAEvD;QAAoBL;QAASU;QAAuBkC;KAAa;IAE/F,MAAMiB,oBAAoBpF,YAAY;QACpCwB,OAAO6D,MAAM,CAAC;YACZ1F,cAAc4B,UAAU+D;QAC1B;IACF,GAAG;QAAC9D;QAAQD;KAAQ;IAEpB,MAAMgE,mBAAmBV,aAAaW,QAAQC,WAC1C9G,eAAekG,aAAaW,OAAOC,UAAU/D,QAC7CmD,aAAaZ;IAEjB,MAAMyB,6BAA6BvF,OAAO,IAAIwF;IAC9C,MAAMC,mBAAmB,GAAG5D,WAAW,uDAAuD,EAAE6C,aAAaZ,KAAK,OAAO,CAAC;IAE1H,yCAAyC;IACzChE,UAAU;QACR,MAAM4F,kBAAkB,IAAIF;QAE5B,MAAMG,oBAAoB;YACxB;;;;OAIC,GACD,MAAM,EAAEC,KAAK,EAAE,GAAG,MAAM1D,aAAa;gBACnCM;gBACA0B;gBACA2B,MAAM1E;gBACN2E,gBAAgB;oBAAE9D,QAAQ;gBAAK;gBAC/B+D,gBAAgB,MAAM5B;gBACtB6B,mBAAmBvG,2CAA2CwC,sBAAsB;oBAClFgE,cAAc;gBAChB;gBACA7B;gBACA8B,kBAAkB/E;gBAClBgF,uBAAuBhF;gBACvBiF,WAAW;gBACXC,UAAU,CAAC/E;gBACXgF,iBAAiB;gBACjBzE,YAAY4D;gBACZc,QAAQb,gBAAgBa,MAAM;YAChC;YAEA,IAAIX,OAAO;gBACT,MAAMY,mBAAsC9G,qBAC1CD,2CAA2CmG,OAAO;oBAAEK,cAAc;gBAAK,IACvE;gBAGF,gGAAgG;gBAChG5E,OAAO6D,MAAM,CAAC;oBACZ,MAAMuB,OAAOjH,cAAc4B;oBAC3B,IAAIqF,QAAQpG,mBAAmBoG,OAAO;wBACpC,MAAMC,UAAUF;wBAChBE,QAAQnC,SAAS,GAAGpD,SAASoD,SAAS;wBAEtCkC,KAAKE,SAAS,CAACD,SAAS;oBAC1B;gBACF;gBAEArE,gBAAgBuD;gBAChB,IAAI,CAAC1E,sBAAsB;oBACzBmC,eAAeuC,KAAK,CAAC,cAAc,EAAEpC,kBAAkBC;gBACzD;gBACA,IAAI,CAACzC,sBAAsB;oBACzB2C,eAAeiC,KAAK,CAAC,cAAc,EAAEpC,kBAAkBI;gBACzD;YACF;QACF;QAEA,IAAIzC,YAAY,CAACZ,cAAc;YAC7B,KAAKoF;QACP;QAEA,OAAO;YACLpG,eAAemG;QACjB;IACF,GAAG;QACDxD;QACAb;QACAD;QACAE;QACAJ;QACAF;QACAyE;QACAjD;QACArB;QACAZ;QACA2D;QACAE;QACAD;QACAlC;KACD;IAED;;GAEC,GACD,MAAM2E,WAAW/G,YACf,OAAO,EAAE4C,WAAWoE,aAAa,EAAEC,MAAM,EAA8C;QACrFvH,eAAegG,2BAA2BnC,OAAO;QAEjD,MAAM2D,aAAa,IAAIvB;QACvBD,2BAA2BnC,OAAO,GAAG2D;QAErC,MAAM,EAAEnB,KAAK,EAAE,GAAG,MAAM1D,aAAa;YACnCM;YACA0B;YACA4B,gBAAgB;gBACd9D,QAAQ;YACV;YACA+D,gBAAgB,MAAM5B;YACtB6B,mBAAmBvG,2CAA2CwC,sBAAsB;gBAClFgE,cAAc;YAChB;YACAxD,WAAWoE;YACXzC;YACA+B,uBAAuBU;YACvBT,WAAW;YACXC,UAAU,CAAC/E;YACXgF,iBAAiBQ,SAAS,OAAO;YACjCjF,YAAY4D;YACZc,QAAQQ,WAAWR,MAAM;QAC3B;QAEA,IAAI,CAACX,OAAO;YACV,OAAOiB;QACT;QAEA,IAAIC,QAAQ;YACV,MAAMN,mBAAsC9G,qBAC1CD,2CAA2CmG,OAAO;gBAAEK,cAAc;YAAK,IACvE;YAGF,IAAI/E,sBAAsB;gBACxBmC,6BACE,QAACnC;oBACCL,WAAWC;oBACXK,UAAUqF;oBACVlD,UAAU;oBACVC,gBAAgB;oBAChBnC,SAASA;oBACTZ,gCAAgCA;;;;;;YAGtC,OAAO;gBACL6C,eAAeuC,KAAK,CAAC,cAAc,EAAEpC,kBAAkBC;YACzD;YACA,IAAIzC,sBAAsB;gBACxB2C,6BACE,QAAC3C;oBACCH,WAAWC;oBACXK,UAAUqF;oBACVlD,UAAU;oBACVC,gBAAgB;oBAChBnC,SAASA;oBACTZ,gCAAgCA;;;;;;YAGtC,OAAO;gBACLmD,eAAeiC,KAAK,CAAC,cAAc,EAAEpC,kBAAkBI;YACzD;QACF;QAEA,OAAOgC;IACT,GACA;QACE1D;QACAM;QACA0B;QACAC;QACAlC;QACAmC;QACA9C;QACAmE;QACA3E;QACAM;QACAJ;QACAE;KACD;IAEH,iBAAiB;IACjBpB,UAAU;QACR,MAAMkH,mBAAmB,CAAC7F,UAA6BZ;YACrD,OAAOmC,OAAOuE,IAAI,CAAC1G,cAAc2G,IAAI,CACnC,CAACC,MAAQ5G,YAAY,CAAC4G,IAAI,IAAIhG,QAAQ,CAACgG,IAAI,KAAK5G,YAAY,CAAC4G,IAAI,CAAClE,KAAK;QAE3E;QAEA,OAAO;YACL,4HAA4H;YAC5H,0IAA0I;YAC1I,oDAAoD;YACpD,IAAI1C,gBAAgByG,iBAAiB7F,UAAUZ,eAAe;gBAC5D8B,gBAAgB;YAClB;YACA9C,eAAegG,2BAA2BnC,OAAO;QACnD;IACF,GAAG;QAACjC;QAAUZ;KAAa;IAE3B;;GAEC,GACD,MAAM6G,eAAevH,YACnB,CAAC4C,WAAsBiE;QACrBA,QAAQnC,SAAS,GAAGpD,SAASoD,SAAS;QAEtClD,OAAO6D,MAAM,CAAC;YACZ,MAAMuB,OAAOjH,cAAc4B;YAC3B,IAAIqF,QAAQpG,mBAAmBoG,OAAO;gBACpCA,KAAKE,SAAS,CAACD,SAA8B;YAC/C;QACF;IACF,GACA;QAACrF;QAAQD;QAASD;KAAS;IAG7B,MAAMkG,eAAetH,QACnB,IAAM,kBACJ,QAACtB;gBACC6I,aAAY;gBACZzG,WAAW,GAAGC,UAAU,cAAc,CAAC;gBACvCyG,UAAU,CAACjG;gBACXkG,MAAK;gBACLC,SAAS,CAACC;oBACRA,EAAEC,cAAc;oBAChB1C;gBACF;gBACA2C,KAAK;gBACLC,MAAK;gBACLC,SAAStG,EAAE,sCAAsC;oBAAEuG,OAAO3C;gBAAiB;;;;;sBAG/E;QAACtE;QAAWsE;QAAkB9D;QAAY2D;QAAmBzD;KAAE;IAGjE,MAAMwG,aAAajI,QACjB,IAAM,kBACJ,QAACtB;gBACC6I,aAAY;gBACZzG,WAAW,GAAGC,UAAU,YAAY,CAAC;gBACrCyG,UAAU,CAACjG;gBACX2G,IAAG;gBACHT,MAAK;gBACLC,SAAS;oBACPzD;gBACF;gBACA4D,KAAK;gBACLC,MAAK;gBACLC,SAAStG,EAAE,oCAAoC;oBAAEuG,OAAO3C;gBAAiB;;;;;sBAG7E;QAACtE;QAAWsE;QAAkB9D;QAAYE;QAAGwC;KAAa;IAG5D,MAAMkE,uBAAuBnI,QAC3B,IACE,CAAC,EAAEoI,QAAQ,EAAEtH,SAAS,EAAqD,iBACzE,QAACuH;gBACCvH,WAAW;oBAAC,GAAGC,UAAU,WAAW,CAAC;oBAAEA,YAAY,MAAMK,SAASoD,SAAS;oBAAE1D;iBAAU,CACpFwH,MAAM,CAACC,SACPC,IAAI,CAAC;gBACRC,KAAKvE;0BAEJkE;;;;;sBAGP;QAACrH;QAAWK,SAASoD,SAAS;KAAC;IAGjC,MAAMkE,QAAQ1I,QAAQ;QACpB,IAAIkB,aAAa;YACf,OAAO,IAAMA;QACf,OAAO;YACL,OAAO,kBACL,QAACmH;8BAAK1D,aAAaW,SAAS7G,eAAekG,aAAaW,OAAOC,UAAU/D,QAAQ;;;;;;QAErF;IACF,GAAG;QAACN;QAAayD,aAAaW;QAAQ9D;KAAK;IAE3C,IAAI,CAACmD,aAAa;QAChB,qBACE,QAACwD;YAAqBrH,WAAW,GAAGC,UAAU,UAAU,CAAC;;8BACvD,QAAC4H;;wBAAK;wBAAevH,SAASoD,SAAS;wBAAC;;;;;;;gBACvCjD,2BACC,QAAC8G;oBAAIvH,WAAW,GAAGC,UAAU,SAAS,CAAC;8BACrC,cAAA,QAACuG;;;;;;;;;2BAED;;;;;;;IAGV;IAEA,qBACE,QAACzI;QACC+J,cAAc;YACZ,OAAO,EAAElG,SAAS,EAAE;gBAClB,yDAAyD;gBACzD,OAAO,MAAMmE,SAAS;oBAAEnE;oBAAWqE,QAAQ;gBAAK;YAClD;SACD;QACD8B,yBAAyB;QACzBX,IAAG;QACHjG,QAAQ0C,aAAa1C;QACrBzB,cAAcA,gBAAgB,CAAC;QAC/BqG,UAAU;YAACA;SAAS;QACpBiC,UAAU,CAACpG,WAAWoD;YACpBuB,aAAa3E,WAAWoD;YACxB7B;QACF;QACA9D,MAAMA;;0BAEN,QAACvB;0BACC,cAAA,QAACD;oBACCmC,WAAW;oBACXiD,MAAMD;oBACNiF,OAAOtH,EAAE,CAAC,4BAA4B,EAAEL,UAAUqB,KAAK,SAAS,UAAU,EAAE;wBAC1EuF,OAAO3C,oBAAoB5D,EAAE;oBAC/B;8BAECjB,6BACC;;0CACE,QAACxB;gCACCiD,QAAQ0C,aAAa1C;gCACrB+G,WAAW;gCACXC,iBAAgB;gCAChBC,YAAc,+DAA+D;gCAAlE;gCACXC,kBAAkBzD;gCAClB0D,aAAa;gCACb9C,UAAU,CAAC/E;;;;;;0CAEb,QAACxC;gCAAWsK,oBAAoB;0CAAO5H,EAAE;;;;;;;uCAEzC;;;;;;;;;;;YAGPT,4BACC,QAACT;gBACC2C,OAAO;oBACL+E;oBACAzH;oBACA2H;oBACAO;oBACArH;oBACAiG;gBACF;0BAECtG;;;;;qCAGH,QAACmH;;oBACE3H,6BAAe,QAACkI;;;;6CAAW,QAACzJ;wBAAcqK,QAAO;wBAAOC,OAAM;;;;;;oBAC9DhI,2BACC,QAAC8G;wBAAIvH,WAAW,GAAGC,UAAU,SAAS,CAAC;;0CACrC,QAACkH;;;;;0CACD,QAACX;;;;;;;;;;+BAED;;;;;;;;;;;;;AAKd,EAAC"}
|
|
1
|
+
{"version":3,"sources":["../../../../../src/features/blocks/client/componentInline/index.tsx"],"sourcesContent":["'use client'\n\nimport type { BlocksFieldClient, ClientBlock, Data, FormState } from 'payload'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext'\nimport { useLexicalEditable } from '@lexical/react/useLexicalEditable'\nimport { getTranslation } from '@payloadcms/translations'\nimport {\n Button,\n Drawer,\n EditDepthProvider,\n Form,\n formatDrawerSlug,\n FormSubmit,\n RenderFields,\n ShimmerEffect,\n useConfig,\n useDocumentForm,\n useDocumentInfo,\n useEditDepth,\n useServerFunctions,\n useTranslation,\n} from '@payloadcms/ui'\nimport { abortAndIgnore } from '@payloadcms/ui/shared'\nimport { $getNodeByKey } from 'lexical'\n\nimport './index.scss'\n\nimport { deepCopyObjectSimpleWithoutReactComponents, reduceFieldsToValues } from 'payload/shared'\nimport React, { createContext, useCallback, useEffect, useMemo, useRef } from 'react'\nimport { v4 as uuid } from 'uuid'\n\nimport type { ViewMapInlineBlockComponentProps } from '../../../../types.js'\nimport type { InlineBlockFields } from '../../server/nodes/InlineBlocksNode.js'\nimport type { BlockComponentProps } from '../component/index.js'\n\nimport { useEditorConfigContext } from '../../../../lexical/config/client/EditorConfigProvider.js'\nimport { useLexicalDrawer } from '../../../../utilities/fieldsDrawer/useLexicalDrawer.js'\nimport { $isInlineBlockNode } from '../nodes/InlineBlocksNode.js'\n\nexport type InlineBlockComponentProps<\n TFormData extends Record<string, unknown> = InlineBlockFields,\n> = {\n readonly CustomBlock?: React.FC<ViewMapInlineBlockComponentProps>\n readonly CustomLabel?: React.FC<ViewMapInlineBlockComponentProps>\n} & Pick<BlockComponentProps<TFormData>, 'cacheBuster' | 'className' | 'formData' | 'nodeKey'>\n\nexport type InlineBlockComponentContextType = {\n EditButton?: React.FC\n initialState: false | FormState | undefined\n InlineBlockContainer?: React.FC<{ children: React.ReactNode }>\n Label?: React.FC\n nodeKey?: string\n RemoveButton?: React.FC\n}\n\nconst InlineBlockComponentContext = createContext<InlineBlockComponentContextType>({\n initialState: false,\n})\n\nexport const useInlineBlockComponentContext = () => React.use(InlineBlockComponentContext)\n\nexport const InlineBlockComponent: React.FC<InlineBlockComponentProps<InlineBlockFields>> = (\n props,\n) => {\n const {\n cacheBuster,\n className: baseClass,\n CustomBlock: CustomBlockFromProps,\n CustomLabel: CustomLabelFromProps,\n formData,\n nodeKey,\n } = props\n\n const [editor] = useLexicalComposerContext()\n const isEditable = useLexicalEditable()\n const { i18n, t } = useTranslation<object, string>()\n const {\n createdInlineBlock,\n fieldProps: { featureClientSchemaMap, initialLexicalFormState, schemaPath },\n setCreatedInlineBlock,\n uuid: uuidFromContext,\n } = useEditorConfigContext()\n const { fields: parentDocumentFields } = useDocumentForm()\n\n const { getFormState } = useServerFunctions()\n const editDepth = useEditDepth()\n const firstTimeDrawer = useRef(false)\n\n const [initialState, setInitialState] = React.useState<false | FormState | undefined>(() => {\n // Initial form state that was calculated server-side. May have stale values\n const cachedFormState = initialLexicalFormState?.[formData.id]?.formState\n if (!cachedFormState) {\n return false\n }\n\n // Merge current formData values into the cached form state\n // This ensures that when the component remounts (e.g., due to view changes), we don't lose user edits\n return Object.fromEntries(\n Object.entries(cachedFormState).map(([fieldName, fieldState]) => [\n fieldName,\n fieldName in formData\n ? {\n ...fieldState,\n initialValue: formData[fieldName],\n value: formData[fieldName],\n }\n : fieldState,\n ]),\n )\n })\n\n const hasMounted = useRef(false)\n const prevCacheBuster = useRef(cacheBuster)\n useEffect(() => {\n if (hasMounted.current) {\n if (prevCacheBuster.current !== cacheBuster) {\n setInitialState(false)\n }\n prevCacheBuster.current = cacheBuster\n } else {\n hasMounted.current = true\n }\n }, [cacheBuster])\n\n const [formUuid] = React.useState(() => uuid())\n\n // Server-rendered custom components (from admin.components, NOT viewMap).\n // When viewMap components exist, we render them directly with formData instead.\n const [CustomLabel, setCustomLabel] = React.useState<React.ReactNode | undefined>(() => {\n if (CustomLabelFromProps) {\n return undefined\n }\n // @ts-expect-error - vestiges of when tsconfig was not strict. Feel free to improve\n return initialState?.['_components']?.customComponents?.BlockLabel ?? undefined\n })\n\n const [CustomBlock, setCustomBlock] = React.useState<React.ReactNode | undefined>(() => {\n if (CustomBlockFromProps) {\n return undefined\n }\n // @ts-expect-error - vestiges of when tsconfig was not strict. Feel free to improve\n return initialState?.['_components']?.customComponents?.Block ?? undefined\n })\n\n const resolvedCustomBlock = useMemo(() => {\n if (CustomBlockFromProps) {\n return (\n <CustomBlockFromProps\n className={baseClass}\n formData={formData}\n isEditor={true}\n isJSXConverter={false}\n nodeKey={nodeKey}\n // eslint-disable-next-line react-compiler/react-compiler -- intentionally passed as a prop for custom block components to call\n useInlineBlockComponentContext={useInlineBlockComponentContext}\n />\n )\n }\n return CustomBlock\n }, [CustomBlockFromProps, baseClass, formData, nodeKey, CustomBlock])\n\n const resolvedCustomLabel = useMemo(() => {\n if (CustomLabelFromProps) {\n return (\n <CustomLabelFromProps\n className={baseClass}\n formData={formData}\n isEditor={true}\n isJSXConverter={false}\n nodeKey={nodeKey}\n // eslint-disable-next-line react-compiler/react-compiler -- intentionally passed as a prop for custom block components to call\n useInlineBlockComponentContext={useInlineBlockComponentContext}\n />\n )\n }\n return CustomLabel\n }, [CustomLabelFromProps, baseClass, formData, nodeKey, CustomLabel])\n\n const drawerSlug = formatDrawerSlug({\n slug: `lexical-inlineBlocks-create-${uuidFromContext}-${formData.id}`,\n depth: editDepth,\n })\n const { toggleDrawer } = useLexicalDrawer(drawerSlug, true)\n\n const inlineBlockElemElemRef = useRef<HTMLDivElement | null>(null)\n const { id, collectionSlug, getDocPreferences, globalSlug } = useDocumentInfo()\n const { config } = useConfig()\n\n const componentMapRenderedBlockPath = `${schemaPath}.lexical_internal_feature.blocks.lexical_inline_blocks.${formData.blockType}`\n\n const clientSchemaMap = featureClientSchemaMap['blocks']\n\n const blocksField: BlocksFieldClient = clientSchemaMap?.[\n componentMapRenderedBlockPath\n ]?.[0] as BlocksFieldClient\n\n const clientBlock: ClientBlock | undefined = blocksField.blockReferences\n ? typeof blocksField?.blockReferences?.[0] === 'string'\n ? config.blocksMap[blocksField?.blockReferences?.[0]]\n : blocksField?.blockReferences?.[0]\n : blocksField?.blocks?.[0]\n\n const clientBlockFields = clientBlock?.fields ?? []\n\n // Open drawer on \"mount\"\n useEffect(() => {\n if (!firstTimeDrawer.current && createdInlineBlock?.getKey() === nodeKey) {\n // > 2 because they always have \"id\" and \"blockName\" fields\n if (clientBlockFields.length > 2) {\n toggleDrawer()\n }\n setCreatedInlineBlock?.(undefined)\n firstTimeDrawer.current = true\n }\n }, [clientBlockFields.length, createdInlineBlock, nodeKey, setCreatedInlineBlock, toggleDrawer])\n\n const removeInlineBlock = useCallback(() => {\n editor.update(() => {\n $getNodeByKey(nodeKey)?.remove()\n })\n }, [editor, nodeKey])\n\n const blockDisplayName = clientBlock?.labels?.singular\n ? getTranslation(clientBlock?.labels.singular, i18n)\n : clientBlock?.slug\n\n const onChangeAbortControllerRef = useRef(new AbortController())\n const schemaFieldsPath = `${schemaPath}.lexical_internal_feature.blocks.lexical_inline_blocks.${clientBlock?.slug}.fields`\n\n // Initial state for newly created blocks\n useEffect(() => {\n const abortController = new AbortController()\n\n const awaitInitialState = async () => {\n /*\n * This will only run if a new block is created. For all existing blocks that are loaded when the document is loaded, or when the form is saved,\n * this is not run, as the lexical field RSC will fetch the state server-side and pass it to the client. That way, we avoid unnecessary client-side\n * requests. Though for newly created blocks, we need to fetch the state client-side, as the server doesn't know about the block yet.\n */\n const { state } = await getFormState({\n id,\n collectionSlug,\n data: formData,\n docPermissions: { fields: true },\n docPreferences: await getDocPreferences(),\n documentFormState: deepCopyObjectSimpleWithoutReactComponents(parentDocumentFields, {\n excludeFiles: true,\n }),\n globalSlug,\n initialBlockData: formData,\n initialBlockFormState: formData,\n operation: 'update',\n readOnly: !isEditable,\n renderAllFields: true,\n schemaPath: schemaFieldsPath,\n signal: abortController.signal,\n })\n\n if (state) {\n const newFormStateData: InlineBlockFields = reduceFieldsToValues(\n deepCopyObjectSimpleWithoutReactComponents(state, { excludeFiles: true }),\n true,\n ) as InlineBlockFields\n\n // Things like default values may come back from the server => update the node with the new data\n editor.update(() => {\n const node = $getNodeByKey(nodeKey)\n if (node && $isInlineBlockNode(node)) {\n const newData = newFormStateData\n newData.blockType = formData.blockType\n\n node.setFields(newData, true)\n }\n })\n\n setInitialState(state)\n if (!CustomLabelFromProps) {\n setCustomLabel(state['_components']?.customComponents?.BlockLabel)\n }\n if (!CustomBlockFromProps) {\n setCustomBlock(state['_components']?.customComponents?.Block)\n }\n }\n }\n\n if (formData && !initialState) {\n void awaitInitialState()\n }\n\n return () => {\n abortAndIgnore(abortController)\n }\n }, [\n getFormState,\n editor,\n nodeKey,\n isEditable,\n CustomLabelFromProps,\n CustomBlockFromProps,\n schemaFieldsPath,\n id,\n formData,\n initialState,\n collectionSlug,\n globalSlug,\n getDocPreferences,\n parentDocumentFields,\n ])\n\n /**\n * HANDLE ONCHANGE\n */\n const onChange = useCallback(\n async ({ formState: prevFormState, submit }: { formState: FormState; submit?: boolean }) => {\n abortAndIgnore(onChangeAbortControllerRef.current)\n\n const controller = new AbortController()\n onChangeAbortControllerRef.current = controller\n\n const { state } = await getFormState({\n id,\n collectionSlug,\n docPermissions: {\n fields: true,\n },\n docPreferences: await getDocPreferences(),\n documentFormState: deepCopyObjectSimpleWithoutReactComponents(parentDocumentFields, {\n excludeFiles: true,\n }),\n formState: prevFormState,\n globalSlug,\n initialBlockFormState: prevFormState,\n operation: 'update',\n readOnly: !isEditable,\n renderAllFields: submit ? true : false,\n schemaPath: schemaFieldsPath,\n signal: controller.signal,\n })\n\n if (!state) {\n return prevFormState\n }\n\n if (submit) {\n if (!CustomLabelFromProps) {\n setCustomLabel(state['_components']?.customComponents?.BlockLabel)\n }\n if (!CustomBlockFromProps) {\n setCustomBlock(state['_components']?.customComponents?.Block)\n }\n }\n\n return state\n },\n [\n getFormState,\n id,\n collectionSlug,\n getDocPreferences,\n parentDocumentFields,\n globalSlug,\n isEditable,\n schemaFieldsPath,\n CustomBlockFromProps,\n CustomLabelFromProps,\n ],\n )\n // cleanup effect\n useEffect(() => {\n const isStateOutOfSync = (formData: InlineBlockFields, initialState: FormState) => {\n return Object.keys(initialState).some(\n (key) => initialState[key] && formData[key] !== initialState[key].value,\n )\n }\n\n return () => {\n // If the component is unmounted (either via removeInlineBlock or via lexical itself) and the form state got changed before,\n // we need to reset the initial state to force a re-fetch of the initial state when it gets mounted again (e.g. via lexical history undo).\n // Otherwise it would use an outdated initial state.\n if (initialState && isStateOutOfSync(formData, initialState)) {\n setInitialState(false)\n }\n abortAndIgnore(onChangeAbortControllerRef.current)\n }\n }, [formData, initialState])\n\n /**\n * HANDLE FORM SUBMIT\n */\n const onFormSubmit = useCallback(\n (formState: FormState, newData: Data) => {\n newData.blockType = formData.blockType\n\n editor.update(() => {\n const node = $getNodeByKey(nodeKey)\n if (node && $isInlineBlockNode(node)) {\n node.setFields(newData as InlineBlockFields, true)\n }\n })\n },\n [editor, nodeKey, formData],\n )\n\n const RemoveButton = useMemo(\n () => () => (\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__removeButton`}\n disabled={!isEditable}\n icon=\"x\"\n onClick={(e) => {\n e.preventDefault()\n removeInlineBlock()\n }}\n round\n size=\"small\"\n tooltip={t('lexical:blocks:inlineBlocks:remove', { label: blockDisplayName })}\n />\n ),\n [baseClass, blockDisplayName, isEditable, removeInlineBlock, t],\n )\n\n const EditButton = useMemo(\n () => () => (\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__editButton`}\n disabled={!isEditable}\n el=\"button\"\n icon=\"edit\"\n onClick={() => {\n toggleDrawer()\n }}\n round\n size=\"small\"\n tooltip={t('lexical:blocks:inlineBlocks:edit', { label: blockDisplayName })}\n />\n ),\n [baseClass, blockDisplayName, isEditable, t, toggleDrawer],\n )\n\n const InlineBlockContainer = useMemo(\n () =>\n ({ children, className }: { children: React.ReactNode; className?: string }) => (\n <div\n className={[`${baseClass}__container`, baseClass + '-' + formData.blockType, className]\n .filter(Boolean)\n .join(' ')}\n ref={inlineBlockElemElemRef}\n >\n {children}\n </div>\n ),\n [baseClass, formData.blockType],\n )\n\n const Label = useMemo(() => {\n if (resolvedCustomLabel) {\n return () => resolvedCustomLabel\n } else {\n return () => (\n <div>{clientBlock?.labels ? getTranslation(clientBlock?.labels.singular, i18n) : ''}</div>\n )\n }\n }, [resolvedCustomLabel, clientBlock?.labels, i18n])\n\n if (!clientBlock) {\n return (\n <InlineBlockContainer className={`${baseClass}-not-found`}>\n <span>Error: Block '{formData.blockType}' not found</span>\n {isEditable ? (\n <div className={`${baseClass}__actions`}>\n <RemoveButton />\n </div>\n ) : null}\n </InlineBlockContainer>\n )\n }\n\n return (\n <Form\n beforeSubmit={[\n async ({ formState }) => {\n // This is only called when form is submitted from drawer\n return await onChange({ formState, submit: true })\n },\n ]}\n disableValidationOnSubmit\n el=\"div\"\n fields={clientBlock?.fields}\n initialState={initialState || {}}\n onChange={[onChange]}\n onSubmit={(formState, data) => {\n onFormSubmit(formState, data)\n toggleDrawer()\n }}\n uuid={formUuid}\n >\n <EditDepthProvider>\n <Drawer\n className={''}\n slug={drawerSlug}\n title={t(`lexical:blocks:inlineBlocks:${formData?.id ? 'edit' : 'create'}`, {\n label: blockDisplayName ?? t('lexical:blocks:inlineBlocks:label'),\n })}\n >\n {initialState ? (\n <>\n <RenderFields\n fields={clientBlock?.fields}\n forceRender\n parentIndexPath=\"\"\n parentPath=\"\" // See Blocks feature path for details as for why this is empty\n parentSchemaPath={schemaFieldsPath}\n permissions={true}\n readOnly={!isEditable}\n />\n <FormSubmit programmaticSubmit={true}>{t('fields:saveChanges')}</FormSubmit>\n </>\n ) : null}\n </Drawer>\n </EditDepthProvider>\n {resolvedCustomBlock ? (\n <InlineBlockComponentContext\n value={{\n EditButton,\n initialState,\n InlineBlockContainer,\n Label,\n nodeKey,\n RemoveButton,\n }}\n >\n {resolvedCustomBlock}\n </InlineBlockComponentContext>\n ) : (\n <InlineBlockContainer>\n {initialState ? <Label /> : <ShimmerEffect height=\"15px\" width=\"40px\" />}\n {isEditable ? (\n <div className={`${baseClass}__actions`}>\n <EditButton />\n <RemoveButton />\n </div>\n ) : null}\n </InlineBlockContainer>\n )}\n </Form>\n )\n}\n"],"names":["useLexicalComposerContext","useLexicalEditable","getTranslation","Button","Drawer","EditDepthProvider","Form","formatDrawerSlug","FormSubmit","RenderFields","ShimmerEffect","useConfig","useDocumentForm","useDocumentInfo","useEditDepth","useServerFunctions","useTranslation","abortAndIgnore","$getNodeByKey","deepCopyObjectSimpleWithoutReactComponents","reduceFieldsToValues","React","createContext","useCallback","useEffect","useMemo","useRef","v4","uuid","useEditorConfigContext","useLexicalDrawer","$isInlineBlockNode","InlineBlockComponentContext","initialState","useInlineBlockComponentContext","use","InlineBlockComponent","props","cacheBuster","className","baseClass","CustomBlock","CustomBlockFromProps","CustomLabel","CustomLabelFromProps","formData","nodeKey","editor","isEditable","i18n","t","createdInlineBlock","fieldProps","featureClientSchemaMap","initialLexicalFormState","schemaPath","setCreatedInlineBlock","uuidFromContext","fields","parentDocumentFields","getFormState","editDepth","firstTimeDrawer","setInitialState","useState","cachedFormState","id","formState","Object","fromEntries","entries","map","fieldName","fieldState","initialValue","value","hasMounted","prevCacheBuster","current","formUuid","setCustomLabel","undefined","customComponents","BlockLabel","setCustomBlock","Block","resolvedCustomBlock","isEditor","isJSXConverter","resolvedCustomLabel","drawerSlug","slug","depth","toggleDrawer","inlineBlockElemElemRef","collectionSlug","getDocPreferences","globalSlug","config","componentMapRenderedBlockPath","blockType","clientSchemaMap","blocksField","clientBlock","blockReferences","blocksMap","blocks","clientBlockFields","getKey","length","removeInlineBlock","update","remove","blockDisplayName","labels","singular","onChangeAbortControllerRef","AbortController","schemaFieldsPath","abortController","awaitInitialState","state","data","docPermissions","docPreferences","documentFormState","excludeFiles","initialBlockData","initialBlockFormState","operation","readOnly","renderAllFields","signal","newFormStateData","node","newData","setFields","onChange","prevFormState","submit","controller","isStateOutOfSync","keys","some","key","onFormSubmit","RemoveButton","buttonStyle","disabled","icon","onClick","e","preventDefault","round","size","tooltip","label","EditButton","el","InlineBlockContainer","children","div","filter","Boolean","join","ref","Label","span","beforeSubmit","disableValidationOnSubmit","onSubmit","title","forceRender","parentIndexPath","parentPath","parentSchemaPath","permissions","programmaticSubmit","height","width"],"mappings":"AAAA;;AAIA,SAASA,yBAAyB,QAAQ,wCAAuC;AACjF,SAASC,kBAAkB,QAAQ,oCAAmC;AACtE,SAASC,cAAc,QAAQ,2BAA0B;AACzD,SACEC,MAAM,EACNC,MAAM,EACNC,iBAAiB,EACjBC,IAAI,EACJC,gBAAgB,EAChBC,UAAU,EACVC,YAAY,EACZC,aAAa,EACbC,SAAS,EACTC,eAAe,EACfC,eAAe,EACfC,YAAY,EACZC,kBAAkB,EAClBC,cAAc,QACT,iBAAgB;AACvB,SAASC,cAAc,QAAQ,wBAAuB;AACtD,SAASC,aAAa,QAAQ,UAAS;AAEvC,OAAO,eAAc;AAErB,SAASC,0CAA0C,EAAEC,oBAAoB,QAAQ,iBAAgB;AACjG,OAAOC,SAASC,aAAa,EAAEC,WAAW,EAAEC,SAAS,EAAEC,OAAO,EAAEC,MAAM,QAAQ,QAAO;AACrF,SAASC,MAAMC,IAAI,QAAQ,OAAM;AAMjC,SAASC,sBAAsB,QAAQ,4DAA2D;AAClG,SAASC,gBAAgB,QAAQ,yDAAwD;AACzF,SAASC,kBAAkB,QAAQ,+BAA8B;AAkBjE,MAAMC,4CAA8BV,cAA+C;IACjFW,cAAc;AAChB;AAEA,OAAO,MAAMC,iCAAiC,IAAMb,MAAMc,GAAG,CAACH,6BAA4B;AAE1F,OAAO,MAAMI,uBAA+E,CAC1FC;IAEA,MAAM,EACJC,WAAW,EACXC,WAAWC,SAAS,EACpBC,aAAaC,oBAAoB,EACjCC,aAAaC,oBAAoB,EACjCC,QAAQ,EACRC,OAAO,EACR,GAAGT;IAEJ,MAAM,CAACU,OAAO,GAAG/C;IACjB,MAAMgD,aAAa/C;IACnB,MAAM,EAAEgD,IAAI,EAAEC,CAAC,EAAE,GAAGlC;IACpB,MAAM,EACJmC,kBAAkB,EAClBC,YAAY,EAAEC,sBAAsB,EAAEC,uBAAuB,EAAEC,UAAU,EAAE,EAC3EC,qBAAqB,EACrB5B,MAAM6B,eAAe,EACtB,GAAG5B;IACJ,MAAM,EAAE6B,QAAQC,oBAAoB,EAAE,GAAG/C;IAEzC,MAAM,EAAEgD,YAAY,EAAE,GAAG7C;IACzB,MAAM8C,YAAY/C;IAClB,MAAMgD,kBAAkBpC,OAAO;IAE/B,MAAM,CAACO,cAAc8B,gBAAgB,GAAG1C,MAAM2C,QAAQ,CAAgC;QACpF,4EAA4E;QAC5E,MAAMC,kBAAkBX,yBAAyB,CAACT,SAASqB,EAAE,CAAC,EAAEC;QAChE,IAAI,CAACF,iBAAiB;YACpB,OAAO;QACT;QAEA,2DAA2D;QAC3D,sGAAsG;QACtG,OAAOG,OAAOC,WAAW,CACvBD,OAAOE,OAAO,CAACL,iBAAiBM,GAAG,CAAC,CAAC,CAACC,WAAWC,WAAW,GAAK;gBAC/DD;gBACAA,aAAa3B,WACT;oBACE,GAAG4B,UAAU;oBACbC,cAAc7B,QAAQ,CAAC2B,UAAU;oBACjCG,OAAO9B,QAAQ,CAAC2B,UAAU;gBAC5B,IACAC;aACL;IAEL;IAEA,MAAMG,aAAalD,OAAO;IAC1B,MAAMmD,kBAAkBnD,OAAOY;IAC/Bd,UAAU;QACR,IAAIoD,WAAWE,OAAO,EAAE;YACtB,IAAID,gBAAgBC,OAAO,KAAKxC,aAAa;gBAC3CyB,gBAAgB;YAClB;YACAc,gBAAgBC,OAAO,GAAGxC;QAC5B,OAAO;YACLsC,WAAWE,OAAO,GAAG;QACvB;IACF,GAAG;QAACxC;KAAY;IAEhB,MAAM,CAACyC,SAAS,GAAG1D,MAAM2C,QAAQ,CAAC,IAAMpC;IAExC,0EAA0E;IAC1E,gFAAgF;IAChF,MAAM,CAACe,aAAaqC,eAAe,GAAG3D,MAAM2C,QAAQ,CAA8B;QAChF,IAAIpB,sBAAsB;YACxB,OAAOqC;QACT;QACA,oFAAoF;QACpF,OAAOhD,cAAc,CAAC,cAAc,EAAEiD,kBAAkBC,cAAcF;IACxE;IAEA,MAAM,CAACxC,aAAa2C,eAAe,GAAG/D,MAAM2C,QAAQ,CAA8B;QAChF,IAAItB,sBAAsB;YACxB,OAAOuC;QACT;QACA,oFAAoF;QACpF,OAAOhD,cAAc,CAAC,cAAc,EAAEiD,kBAAkBG,SAASJ;IACnE;IAEA,MAAMK,sBAAsB7D,QAAQ;QAClC,IAAIiB,sBAAsB;YACxB,qBACE,QAACA;gBACCH,WAAWC;gBACXK,UAAUA;gBACV0C,UAAU;gBACVC,gBAAgB;gBAChB1C,SAASA;gBACT,+HAA+H;gBAC/HZ,gCAAgCA;;;;;;QAGtC;QACA,OAAOO;IACT,GAAG;QAACC;QAAsBF;QAAWK;QAAUC;QAASL;KAAY;IAEpE,MAAMgD,sBAAsBhE,QAAQ;QAClC,IAAImB,sBAAsB;YACxB,qBACE,QAACA;gBACCL,WAAWC;gBACXK,UAAUA;gBACV0C,UAAU;gBACVC,gBAAgB;gBAChB1C,SAASA;gBACT,+HAA+H;gBAC/HZ,gCAAgCA;;;;;;QAGtC;QACA,OAAOS;IACT,GAAG;QAACC;QAAsBJ;QAAWK;QAAUC;QAASH;KAAY;IAEpE,MAAM+C,aAAanF,iBAAiB;QAClCoF,MAAM,CAAC,4BAA4B,EAAElC,gBAAgB,CAAC,EAAEZ,SAASqB,EAAE,EAAE;QACrE0B,OAAO/B;IACT;IACA,MAAM,EAAEgC,YAAY,EAAE,GAAG/D,iBAAiB4D,YAAY;IAEtD,MAAMI,yBAAyBpE,OAA8B;IAC7D,MAAM,EAAEwC,EAAE,EAAE6B,cAAc,EAAEC,iBAAiB,EAAEC,UAAU,EAAE,GAAGpF;IAC9D,MAAM,EAAEqF,MAAM,EAAE,GAAGvF;IAEnB,MAAMwF,gCAAgC,GAAG5C,WAAW,uDAAuD,EAAEV,SAASuD,SAAS,EAAE;IAEjI,MAAMC,kBAAkBhD,sBAAsB,CAAC,SAAS;IAExD,MAAMiD,cAAiCD,iBAAiB,CACtDF,8BACD,EAAE,CAAC,EAAE;IAEN,MAAMI,cAAuCD,YAAYE,eAAe,GACpE,OAAOF,aAAaE,iBAAiB,CAAC,EAAE,KAAK,WAC3CN,OAAOO,SAAS,CAACH,aAAaE,iBAAiB,CAAC,EAAE,CAAC,GACnDF,aAAaE,iBAAiB,CAAC,EAAE,GACnCF,aAAaI,QAAQ,CAAC,EAAE;IAE5B,MAAMC,oBAAoBJ,aAAa7C,UAAU,EAAE;IAEnD,yBAAyB;IACzBlC,UAAU;QACR,IAAI,CAACsC,gBAAgBgB,OAAO,IAAI3B,oBAAoByD,aAAa9D,SAAS;YACxE,2DAA2D;YAC3D,IAAI6D,kBAAkBE,MAAM,GAAG,GAAG;gBAChChB;YACF;YACArC,wBAAwByB;YACxBnB,gBAAgBgB,OAAO,GAAG;QAC5B;IACF,GAAG;QAAC6B,kBAAkBE,MAAM;QAAE1D;QAAoBL;QAASU;QAAuBqC;KAAa;IAE/F,MAAMiB,oBAAoBvF,YAAY;QACpCwB,OAAOgE,MAAM,CAAC;YACZ7F,cAAc4B,UAAUkE;QAC1B;IACF,GAAG;QAACjE;QAAQD;KAAQ;IAEpB,MAAMmE,mBAAmBV,aAAaW,QAAQC,WAC1CjH,eAAeqG,aAAaW,OAAOC,UAAUlE,QAC7CsD,aAAaZ;IAEjB,MAAMyB,6BAA6B1F,OAAO,IAAI2F;IAC9C,MAAMC,mBAAmB,GAAG/D,WAAW,uDAAuD,EAAEgD,aAAaZ,KAAK,OAAO,CAAC;IAE1H,yCAAyC;IACzCnE,UAAU;QACR,MAAM+F,kBAAkB,IAAIF;QAE5B,MAAMG,oBAAoB;YACxB;;;;OAIC,GACD,MAAM,EAAEC,KAAK,EAAE,GAAG,MAAM7D,aAAa;gBACnCM;gBACA6B;gBACA2B,MAAM7E;gBACN8E,gBAAgB;oBAAEjE,QAAQ;gBAAK;gBAC/BkE,gBAAgB,MAAM5B;gBACtB6B,mBAAmB1G,2CAA2CwC,sBAAsB;oBAClFmE,cAAc;gBAChB;gBACA7B;gBACA8B,kBAAkBlF;gBAClBmF,uBAAuBnF;gBACvBoF,WAAW;gBACXC,UAAU,CAAClF;gBACXmF,iBAAiB;gBACjB5E,YAAY+D;gBACZc,QAAQb,gBAAgBa,MAAM;YAChC;YAEA,IAAIX,OAAO;gBACT,MAAMY,mBAAsCjH,qBAC1CD,2CAA2CsG,OAAO;oBAAEK,cAAc;gBAAK,IACvE;gBAGF,gGAAgG;gBAChG/E,OAAOgE,MAAM,CAAC;oBACZ,MAAMuB,OAAOpH,cAAc4B;oBAC3B,IAAIwF,QAAQvG,mBAAmBuG,OAAO;wBACpC,MAAMC,UAAUF;wBAChBE,QAAQnC,SAAS,GAAGvD,SAASuD,SAAS;wBAEtCkC,KAAKE,SAAS,CAACD,SAAS;oBAC1B;gBACF;gBAEAxE,gBAAgB0D;gBAChB,IAAI,CAAC7E,sBAAsB;oBACzBoC,eAAeyC,KAAK,CAAC,cAAc,EAAEvC,kBAAkBC;gBACzD;gBACA,IAAI,CAACzC,sBAAsB;oBACzB0C,eAAeqC,KAAK,CAAC,cAAc,EAAEvC,kBAAkBG;gBACzD;YACF;QACF;QAEA,IAAIxC,YAAY,CAACZ,cAAc;YAC7B,KAAKuF;QACP;QAEA,OAAO;YACLvG,eAAesG;QACjB;IACF,GAAG;QACD3D;QACAb;QACAD;QACAE;QACAJ;QACAF;QACA4E;QACApD;QACArB;QACAZ;QACA8D;QACAE;QACAD;QACArC;KACD;IAED;;GAEC,GACD,MAAM8E,WAAWlH,YACf,OAAO,EAAE4C,WAAWuE,aAAa,EAAEC,MAAM,EAA8C;QACrF1H,eAAemG,2BAA2BtC,OAAO;QAEjD,MAAM8D,aAAa,IAAIvB;QACvBD,2BAA2BtC,OAAO,GAAG8D;QAErC,MAAM,EAAEnB,KAAK,EAAE,GAAG,MAAM7D,aAAa;YACnCM;YACA6B;YACA4B,gBAAgB;gBACdjE,QAAQ;YACV;YACAkE,gBAAgB,MAAM5B;YACtB6B,mBAAmB1G,2CAA2CwC,sBAAsB;gBAClFmE,cAAc;YAChB;YACA3D,WAAWuE;YACXzC;YACA+B,uBAAuBU;YACvBT,WAAW;YACXC,UAAU,CAAClF;YACXmF,iBAAiBQ,SAAS,OAAO;YACjCpF,YAAY+D;YACZc,QAAQQ,WAAWR,MAAM;QAC3B;QAEA,IAAI,CAACX,OAAO;YACV,OAAOiB;QACT;QAEA,IAAIC,QAAQ;YACV,IAAI,CAAC/F,sBAAsB;gBACzBoC,eAAeyC,KAAK,CAAC,cAAc,EAAEvC,kBAAkBC;YACzD;YACA,IAAI,CAACzC,sBAAsB;gBACzB0C,eAAeqC,KAAK,CAAC,cAAc,EAAEvC,kBAAkBG;YACzD;QACF;QAEA,OAAOoC;IACT,GACA;QACE7D;QACAM;QACA6B;QACAC;QACArC;QACAsC;QACAjD;QACAsE;QACA5E;QACAE;KACD;IAEH,iBAAiB;IACjBpB,UAAU;QACR,MAAMqH,mBAAmB,CAAChG,UAA6BZ;YACrD,OAAOmC,OAAO0E,IAAI,CAAC7G,cAAc8G,IAAI,CACnC,CAACC,MAAQ/G,YAAY,CAAC+G,IAAI,IAAInG,QAAQ,CAACmG,IAAI,KAAK/G,YAAY,CAAC+G,IAAI,CAACrE,KAAK;QAE3E;QAEA,OAAO;YACL,4HAA4H;YAC5H,0IAA0I;YAC1I,oDAAoD;YACpD,IAAI1C,gBAAgB4G,iBAAiBhG,UAAUZ,eAAe;gBAC5D8B,gBAAgB;YAClB;YACA9C,eAAemG,2BAA2BtC,OAAO;QACnD;IACF,GAAG;QAACjC;QAAUZ;KAAa;IAE3B;;GAEC,GACD,MAAMgH,eAAe1H,YACnB,CAAC4C,WAAsBoE;QACrBA,QAAQnC,SAAS,GAAGvD,SAASuD,SAAS;QAEtCrD,OAAOgE,MAAM,CAAC;YACZ,MAAMuB,OAAOpH,cAAc4B;YAC3B,IAAIwF,QAAQvG,mBAAmBuG,OAAO;gBACpCA,KAAKE,SAAS,CAACD,SAA8B;YAC/C;QACF;IACF,GACA;QAACxF;QAAQD;QAASD;KAAS;IAG7B,MAAMqG,eAAezH,QACnB,IAAM,kBACJ,QAACtB;gBACCgJ,aAAY;gBACZ5G,WAAW,GAAGC,UAAU,cAAc,CAAC;gBACvC4G,UAAU,CAACpG;gBACXqG,MAAK;gBACLC,SAAS,CAACC;oBACRA,EAAEC,cAAc;oBAChB1C;gBACF;gBACA2C,KAAK;gBACLC,MAAK;gBACLC,SAASzG,EAAE,sCAAsC;oBAAE0G,OAAO3C;gBAAiB;;;;;sBAG/E;QAACzE;QAAWyE;QAAkBjE;QAAY8D;QAAmB5D;KAAE;IAGjE,MAAM2G,aAAapI,QACjB,IAAM,kBACJ,QAACtB;gBACCgJ,aAAY;gBACZ5G,WAAW,GAAGC,UAAU,YAAY,CAAC;gBACrC4G,UAAU,CAACpG;gBACX8G,IAAG;gBACHT,MAAK;gBACLC,SAAS;oBACPzD;gBACF;gBACA4D,KAAK;gBACLC,MAAK;gBACLC,SAASzG,EAAE,oCAAoC;oBAAE0G,OAAO3C;gBAAiB;;;;;sBAG7E;QAACzE;QAAWyE;QAAkBjE;QAAYE;QAAG2C;KAAa;IAG5D,MAAMkE,uBAAuBtI,QAC3B,IACE,CAAC,EAAEuI,QAAQ,EAAEzH,SAAS,EAAqD,iBACzE,QAAC0H;gBACC1H,WAAW;oBAAC,GAAGC,UAAU,WAAW,CAAC;oBAAEA,YAAY,MAAMK,SAASuD,SAAS;oBAAE7D;iBAAU,CACpF2H,MAAM,CAACC,SACPC,IAAI,CAAC;gBACRC,KAAKvE;0BAEJkE;;;;;sBAGP;QAACxH;QAAWK,SAASuD,SAAS;KAAC;IAGjC,MAAMkE,QAAQ7I,QAAQ;QACpB,IAAIgE,qBAAqB;YACvB,OAAO,IAAMA;QACf,OAAO;YACL,OAAO,kBACL,QAACwE;8BAAK1D,aAAaW,SAAShH,eAAeqG,aAAaW,OAAOC,UAAUlE,QAAQ;;;;;;QAErF;IACF,GAAG;QAACwC;QAAqBc,aAAaW;QAAQjE;KAAK;IAEnD,IAAI,CAACsD,aAAa;QAChB,qBACE,QAACwD;YAAqBxH,WAAW,GAAGC,UAAU,UAAU,CAAC;;8BACvD,QAAC+H;;wBAAK;wBAAe1H,SAASuD,SAAS;wBAAC;;;;;;;gBACvCpD,2BACC,QAACiH;oBAAI1H,WAAW,GAAGC,UAAU,SAAS,CAAC;8BACrC,cAAA,QAAC0G;;;;;;;;;2BAED;;;;;;;IAGV;IAEA,qBACE,QAAC5I;QACCkK,cAAc;YACZ,OAAO,EAAErG,SAAS,EAAE;gBAClB,yDAAyD;gBACzD,OAAO,MAAMsE,SAAS;oBAAEtE;oBAAWwE,QAAQ;gBAAK;YAClD;SACD;QACD8B,yBAAyB;QACzBX,IAAG;QACHpG,QAAQ6C,aAAa7C;QACrBzB,cAAcA,gBAAgB,CAAC;QAC/BwG,UAAU;YAACA;SAAS;QACpBiC,UAAU,CAACvG,WAAWuD;YACpBuB,aAAa9E,WAAWuD;YACxB7B;QACF;QACAjE,MAAMmD;;0BAEN,QAAC1E;0BACC,cAAA,QAACD;oBACCmC,WAAW;oBACXoD,MAAMD;oBACNiF,OAAOzH,EAAE,CAAC,4BAA4B,EAAEL,UAAUqB,KAAK,SAAS,UAAU,EAAE;wBAC1E0F,OAAO3C,oBAAoB/D,EAAE;oBAC/B;8BAECjB,6BACC;;0CACE,QAACxB;gCACCiD,QAAQ6C,aAAa7C;gCACrBkH,WAAW;gCACXC,iBAAgB;gCAChBC,YAAc,+DAA+D;gCAAlE;gCACXC,kBAAkBzD;gCAClB0D,aAAa;gCACb9C,UAAU,CAAClF;;;;;;0CAEb,QAACxC;gCAAWyK,oBAAoB;0CAAO/H,EAAE;;;;;;;uCAEzC;;;;;;;;;;;YAGPoC,oCACC,QAACtD;gBACC2C,OAAO;oBACLkF;oBACA5H;oBACA8H;oBACAO;oBACAxH;oBACAoG;gBACF;0BAEC5D;;;;;qCAGH,QAACyE;;oBACE9H,6BAAe,QAACqI;;;;6CAAW,QAAC5J;wBAAcwK,QAAO;wBAAOC,OAAM;;;;;;oBAC9DnI,2BACC,QAACiH;wBAAI1H,WAAW,GAAGC,UAAU,SAAS,CAAC;;0CACrC,QAACqH;;;;;0CACD,QAACX;;;;;;;;;;+BAED;;;;;;;;;;;;;AAKd,EAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@payloadcms/richtext-lexical",
|
|
3
|
-
"version": "3.80.0-internal-debug.
|
|
3
|
+
"version": "3.80.0-internal-debug.7019cc9",
|
|
4
4
|
"description": "The officially supported Lexical richtext adapter for Payload",
|
|
5
5
|
"homepage": "https://payloadcms.com",
|
|
6
6
|
"repository": {
|
|
@@ -379,8 +379,8 @@
|
|
|
379
379
|
"react-error-boundary": "4.1.2",
|
|
380
380
|
"ts-essentials": "10.0.3",
|
|
381
381
|
"uuid": "10.0.0",
|
|
382
|
-
"@payloadcms/translations": "3.80.0-internal-debug.
|
|
383
|
-
"@payloadcms/ui": "3.80.0-internal-debug.
|
|
382
|
+
"@payloadcms/translations": "3.80.0-internal-debug.7019cc9",
|
|
383
|
+
"@payloadcms/ui": "3.80.0-internal-debug.7019cc9"
|
|
384
384
|
},
|
|
385
385
|
"devDependencies": {
|
|
386
386
|
"@babel/cli": "7.27.2",
|
|
@@ -400,15 +400,15 @@
|
|
|
400
400
|
"esbuild-sass-plugin": "3.3.1",
|
|
401
401
|
"swc-plugin-transform-remove-imports": "8.3.0",
|
|
402
402
|
"@payloadcms/eslint-config": "3.28.0",
|
|
403
|
-
"payload": "3.80.0-internal-debug.
|
|
403
|
+
"payload": "3.80.0-internal-debug.7019cc9"
|
|
404
404
|
},
|
|
405
405
|
"peerDependencies": {
|
|
406
406
|
"@faceless-ui/modal": "3.0.0",
|
|
407
407
|
"@faceless-ui/scroll-info": "2.0.0",
|
|
408
408
|
"react": "^19.0.1 || ^19.1.2 || ^19.2.1",
|
|
409
409
|
"react-dom": "^19.0.1 || ^19.1.2 || ^19.2.1",
|
|
410
|
-
"@payloadcms/next": "3.80.0-internal-debug.
|
|
411
|
-
"payload": "3.80.0-internal-debug.
|
|
410
|
+
"@payloadcms/next": "3.80.0-internal-debug.7019cc9",
|
|
411
|
+
"payload": "3.80.0-internal-debug.7019cc9"
|
|
412
412
|
},
|
|
413
413
|
"engines": {
|
|
414
414
|
"node": "^18.20.2 || >=20.9.0"
|