@payloadcms/richtext-lexical 3.0.0-beta.133 → 3.0.0-beta.134
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/exports/client/Field-S5G27AVI.js +2 -0
- package/dist/exports/client/Field-S5G27AVI.js.map +7 -0
- package/dist/exports/client/bundled.css +1 -1
- package/dist/exports/client/chunk-2CYU43GM.js +2 -0
- package/dist/exports/client/chunk-2CYU43GM.js.map +7 -0
- package/dist/exports/client/chunk-C7S3V4EB.js +2 -0
- package/dist/exports/client/chunk-C7S3V4EB.js.map +7 -0
- package/dist/exports/client/chunk-U7O7EYCP.js +2 -0
- package/dist/exports/client/chunk-U7O7EYCP.js.map +7 -0
- package/dist/exports/client/component-H3EYQ5KG.js +2 -0
- package/dist/exports/client/{component-YICNYPTU.js.map → component-H3EYQ5KG.js.map} +1 -1
- package/dist/exports/client/componentInline-ZGO3K4TA.js +2 -0
- package/dist/exports/client/componentInline-ZGO3K4TA.js.map +7 -0
- package/dist/exports/client/index.d.ts +7 -0
- package/dist/exports/client/index.d.ts.map +1 -1
- package/dist/exports/client/index.js +7 -7
- package/dist/exports/client/index.js.map +4 -4
- package/dist/features/blocks/client/component/BlockContent.d.ts +34 -9
- package/dist/features/blocks/client/component/BlockContent.d.ts.map +1 -1
- package/dist/features/blocks/client/component/BlockContent.js +63 -158
- package/dist/features/blocks/client/component/BlockContent.js.map +1 -1
- package/dist/features/blocks/client/component/components/BlockCollapsible.d.ts +11 -0
- package/dist/features/blocks/client/component/components/BlockCollapsible.d.ts.map +1 -0
- package/dist/features/blocks/client/component/components/BlockCollapsible.js +37 -0
- package/dist/features/blocks/client/component/components/BlockCollapsible.js.map +1 -0
- package/dist/features/blocks/client/component/components/BlockEditButton.d.ts +3 -0
- package/dist/features/blocks/client/component/components/BlockEditButton.d.ts.map +1 -0
- package/dist/features/blocks/client/component/components/BlockEditButton.js +22 -0
- package/dist/features/blocks/client/component/components/BlockEditButton.js.map +1 -0
- package/dist/features/blocks/client/component/components/BlockRemoveButton.d.ts +3 -0
- package/dist/features/blocks/client/component/components/BlockRemoveButton.d.ts.map +1 -0
- package/dist/features/blocks/client/component/components/BlockRemoveButton.js +22 -0
- package/dist/features/blocks/client/component/components/BlockRemoveButton.js.map +1 -0
- package/dist/features/blocks/client/component/index.d.ts.map +1 -1
- package/dist/features/blocks/client/component/index.js +242 -63
- package/dist/features/blocks/client/component/index.js.map +1 -1
- package/dist/features/blocks/client/componentInline/components/InlineBlockContainer.d.ts +5 -0
- package/dist/features/blocks/client/componentInline/components/InlineBlockContainer.d.ts.map +1 -0
- package/dist/features/blocks/client/componentInline/components/InlineBlockContainer.js +28 -0
- package/dist/features/blocks/client/componentInline/components/InlineBlockContainer.js.map +1 -0
- package/dist/features/blocks/client/componentInline/components/InlineBlockEditButton.d.ts +3 -0
- package/dist/features/blocks/client/componentInline/components/InlineBlockEditButton.d.ts.map +1 -0
- package/dist/features/blocks/client/componentInline/components/InlineBlockEditButton.js +22 -0
- package/dist/features/blocks/client/componentInline/components/InlineBlockEditButton.js.map +1 -0
- package/dist/features/blocks/client/componentInline/components/InlineBlockLabel.d.ts +3 -0
- package/dist/features/blocks/client/componentInline/components/InlineBlockLabel.d.ts.map +1 -0
- package/dist/features/blocks/client/componentInline/components/InlineBlockLabel.js +22 -0
- package/dist/features/blocks/client/componentInline/components/InlineBlockLabel.js.map +1 -0
- package/dist/features/blocks/client/componentInline/components/InlineBlockRemoveButton.d.ts +3 -0
- package/dist/features/blocks/client/componentInline/components/InlineBlockRemoveButton.d.ts.map +1 -0
- package/dist/features/blocks/client/componentInline/components/InlineBlockRemoveButton.js +22 -0
- package/dist/features/blocks/client/componentInline/components/InlineBlockRemoveButton.js.map +1 -0
- package/dist/features/blocks/client/componentInline/index.d.ts +13 -1
- package/dist/features/blocks/client/componentInline/index.d.ts.map +1 -1
- package/dist/features/blocks/client/componentInline/index.js +219 -43
- package/dist/features/blocks/client/componentInline/index.js.map +1 -1
- package/dist/features/blocks/client/index.d.ts.map +1 -1
- package/dist/features/blocks/client/index.js +7 -10
- package/dist/features/blocks/client/index.js.map +1 -1
- package/dist/features/blocks/client/nodes/BlocksNode.d.ts.map +1 -1
- package/dist/features/blocks/client/nodes/BlocksNode.js +1 -3
- package/dist/features/blocks/client/nodes/BlocksNode.js.map +1 -1
- package/dist/features/blocks/client/plugin/commands.d.ts +0 -4
- package/dist/features/blocks/client/plugin/commands.d.ts.map +1 -1
- package/dist/features/blocks/client/plugin/commands.js +0 -1
- package/dist/features/blocks/client/plugin/commands.js.map +1 -1
- package/dist/features/blocks/client/plugin/index.d.ts.map +1 -1
- package/dist/features/blocks/client/plugin/index.js +28 -135
- package/dist/features/blocks/client/plugin/index.js.map +1 -1
- package/dist/features/blocks/server/index.d.ts.map +1 -1
- package/dist/features/blocks/server/index.js +28 -2
- package/dist/features/blocks/server/index.js.map +1 -1
- package/dist/features/typesClient.d.ts +1 -17
- package/dist/features/typesClient.d.ts.map +1 -1
- package/dist/features/typesClient.js.map +1 -1
- package/dist/field/Field.d.ts.map +1 -1
- package/dist/field/Field.js +163 -78
- package/dist/field/Field.js.map +1 -1
- package/dist/field/bundled.css +1 -1
- package/dist/field/rscEntry.d.ts.map +1 -1
- package/dist/field/rscEntry.js +23 -1
- package/dist/field/rscEntry.js.map +1 -1
- package/dist/lexical/LexicalProvider.d.ts.map +1 -1
- package/dist/lexical/LexicalProvider.js +9 -18
- package/dist/lexical/LexicalProvider.js.map +1 -1
- package/dist/lexical/config/client/sanitize.d.ts.map +1 -1
- package/dist/lexical/config/client/sanitize.js +0 -12
- package/dist/lexical/config/client/sanitize.js.map +1 -1
- package/dist/types.d.ts +2 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/utilities/buildInitialState.d.ts +27 -0
- package/dist/utilities/buildInitialState.d.ts.map +1 -0
- package/dist/utilities/buildInitialState.js +53 -0
- package/dist/utilities/buildInitialState.js.map +1 -0
- package/dist/utilities/fieldsDrawer/DrawerContent.d.ts.map +1 -1
- package/dist/utilities/fieldsDrawer/DrawerContent.js +8 -5
- package/dist/utilities/fieldsDrawer/DrawerContent.js.map +1 -1
- package/dist/utilities/fieldsDrawer/useLexicalDrawer.d.ts.map +1 -1
- package/dist/utilities/fieldsDrawer/useLexicalDrawer.js +8 -8
- package/dist/utilities/fieldsDrawer/useLexicalDrawer.js.map +1 -1
- package/package.json +6 -6
- package/dist/exports/client/Field-GWJ72IYP.js +0 -2
- package/dist/exports/client/Field-GWJ72IYP.js.map +0 -7
- package/dist/exports/client/chunk-D7PD5DUW.js +0 -2
- package/dist/exports/client/chunk-D7PD5DUW.js.map +0 -7
- package/dist/exports/client/chunk-XDEGE6I5.js +0 -2
- package/dist/exports/client/chunk-XDEGE6I5.js.map +0 -7
- package/dist/exports/client/chunk-YGRKYSDC.js +0 -2
- package/dist/exports/client/chunk-YGRKYSDC.js.map +0 -7
- package/dist/exports/client/component-KLNTKKNE.js +0 -2
- package/dist/exports/client/component-KLNTKKNE.js.map +0 -7
- package/dist/exports/client/component-YICNYPTU.js +0 -2
- package/dist/exports/client/componentInline-6RPSMLNJ.js +0 -2
- package/dist/exports/client/componentInline-6RPSMLNJ.js.map +0 -7
- package/dist/features/blocks/client/component/FormSavePlugin.d.ts +0 -11
- package/dist/features/blocks/client/component/FormSavePlugin.d.ts.map +0 -1
- package/dist/features/blocks/client/component/FormSavePlugin.js +0 -53
- package/dist/features/blocks/client/component/FormSavePlugin.js.map +0 -1
|
@@ -1,10 +1,22 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import type {
|
|
2
|
+
import type { FormState } from 'payload';
|
|
3
3
|
import './index.scss';
|
|
4
|
+
import type { InlineBlockFields } from '../nodes/InlineBlocksNode.js';
|
|
4
5
|
type Props = {
|
|
5
6
|
readonly formData: InlineBlockFields;
|
|
6
7
|
readonly nodeKey: string;
|
|
7
8
|
};
|
|
9
|
+
type InlineBlockComponentContextType = {
|
|
10
|
+
EditButton?: React.FC;
|
|
11
|
+
initialState: false | FormState | undefined;
|
|
12
|
+
InlineBlockContainer?: React.FC<{
|
|
13
|
+
children: React.ReactNode;
|
|
14
|
+
}>;
|
|
15
|
+
Label?: React.FC;
|
|
16
|
+
nodeKey?: string;
|
|
17
|
+
RemoveButton?: React.FC;
|
|
18
|
+
};
|
|
19
|
+
export declare const useInlineBlockComponentContext: () => InlineBlockComponentContextType;
|
|
8
20
|
export declare const InlineBlockComponent: React.FC<Props>;
|
|
9
21
|
export {};
|
|
10
22
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/features/blocks/client/componentInline/index.tsx"],"names":[],"mappings":"AAEA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/features/blocks/client/componentInline/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAiE,MAAM,OAAO,CAAA;AAGrF,OAAO,KAAK,EAAqB,SAAS,EAAE,MAAM,SAAS,CAAA;AAgC3D,OAAO,cAAc,CAAA;AAIrB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAA;AAMrE,KAAK,KAAK,GAAG;IACX,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAA;IACpC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CACzB,CAAA;AAED,KAAK,+BAA+B,GAAG;IACrC,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,uCAAsD,CAAA;AAEjG,eAAO,MAAM,oBAAoB,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAiVhD,CAAA"}
|
|
@@ -1,17 +1,26 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
4
|
-
import React, { useCallback, useEffect, useRef } from 'react';
|
|
3
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
4
|
+
import React, { createContext, useCallback, useEffect, useMemo, useRef } from 'react';
|
|
5
5
|
const baseClass = 'inline-block';
|
|
6
6
|
import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext';
|
|
7
7
|
import { useLexicalNodeSelection } from '@lexical/react/useLexicalNodeSelection';
|
|
8
8
|
import { mergeRegister } from '@lexical/utils';
|
|
9
9
|
import { getTranslation } from '@payloadcms/translations';
|
|
10
|
-
import { Button, useTranslation } from '@payloadcms/ui';
|
|
10
|
+
import { Button, Drawer, EditDepthProvider, Form, formatDrawerSlug, FormSubmit, RenderFields, ShimmerEffect, useDocumentInfo, useEditDepth, useServerFunctions, useTranslation } from '@payloadcms/ui';
|
|
11
|
+
import { abortAndIgnore } from '@payloadcms/ui/shared';
|
|
11
12
|
import { $getNodeByKey, $getSelection, $isNodeSelection, CLICK_COMMAND, COMMAND_PRIORITY_LOW, KEY_BACKSPACE_COMMAND, KEY_DELETE_COMMAND } from 'lexical';
|
|
13
|
+
import { reduceFieldsToValues } from 'payload/shared';
|
|
14
|
+
import { v4 as uuid } from 'uuid';
|
|
12
15
|
import { useEditorConfigContext } from '../../../../lexical/config/client/EditorConfigProvider.js';
|
|
16
|
+
import { useLexicalDrawer } from '../../../../utilities/fieldsDrawer/useLexicalDrawer.js';
|
|
13
17
|
import { $isInlineBlockNode } from '../nodes/InlineBlocksNode.js';
|
|
14
|
-
|
|
18
|
+
const InlineBlockComponentContext = /*#__PURE__*/createContext({
|
|
19
|
+
initialState: false
|
|
20
|
+
});
|
|
21
|
+
export const useInlineBlockComponentContext = () => {
|
|
22
|
+
return React.useContext(InlineBlockComponentContext);
|
|
23
|
+
};
|
|
15
24
|
export const InlineBlockComponent = props => {
|
|
16
25
|
const {
|
|
17
26
|
formData,
|
|
@@ -25,12 +34,33 @@ export const InlineBlockComponent = props => {
|
|
|
25
34
|
const {
|
|
26
35
|
fieldProps: {
|
|
27
36
|
featureClientSchemaMap,
|
|
37
|
+
initialLexicalFormState,
|
|
38
|
+
permissions,
|
|
28
39
|
readOnly,
|
|
29
40
|
schemaPath
|
|
30
|
-
}
|
|
41
|
+
},
|
|
42
|
+
uuid: uuidFromContext
|
|
31
43
|
} = useEditorConfigContext();
|
|
44
|
+
const {
|
|
45
|
+
getFormState
|
|
46
|
+
} = useServerFunctions();
|
|
47
|
+
const editDepth = useEditDepth();
|
|
48
|
+
const [initialState, setInitialState] = React.useState(initialLexicalFormState?.[formData.id]?.formState);
|
|
49
|
+
const drawerSlug = formatDrawerSlug({
|
|
50
|
+
slug: `lexical-inlineBlocks-create-` + uuidFromContext,
|
|
51
|
+
depth: editDepth
|
|
52
|
+
});
|
|
53
|
+
const {
|
|
54
|
+
toggleDrawer
|
|
55
|
+
} = useLexicalDrawer(drawerSlug, true);
|
|
32
56
|
const inlineBlockElemElemRef = useRef(null);
|
|
33
57
|
const [isSelected, setSelected, clearSelection] = useLexicalNodeSelection(nodeKey);
|
|
58
|
+
const {
|
|
59
|
+
id,
|
|
60
|
+
collectionSlug,
|
|
61
|
+
getDocPreferences,
|
|
62
|
+
globalSlug
|
|
63
|
+
} = useDocumentInfo();
|
|
34
64
|
const componentMapRenderedBlockPath = `${schemaPath}.lexical_internal_feature.blocks.lexical_inline_blocks.${formData.blockType}`;
|
|
35
65
|
const clientSchemaMap = featureClientSchemaMap['blocks'];
|
|
36
66
|
const blocksField = clientSchemaMap[componentMapRenderedBlockPath][0];
|
|
@@ -74,46 +104,192 @@ export const InlineBlockComponent = props => {
|
|
|
74
104
|
return mergeRegister(editor.registerCommand(CLICK_COMMAND, onClick, COMMAND_PRIORITY_LOW), editor.registerCommand(KEY_DELETE_COMMAND, $onDelete, COMMAND_PRIORITY_LOW), editor.registerCommand(KEY_BACKSPACE_COMMAND, $onDelete, COMMAND_PRIORITY_LOW));
|
|
75
105
|
}, [clearSelection, editor, isSelected, nodeKey, $onDelete, setSelected, onClick]);
|
|
76
106
|
const blockDisplayName = clientBlock?.labels?.singular ? getTranslation(clientBlock.labels.singular, i18n) : clientBlock?.slug;
|
|
77
|
-
const
|
|
78
|
-
|
|
107
|
+
const onChangeAbortControllerRef = useRef(new AbortController());
|
|
108
|
+
const schemaFieldsPath = `${schemaPath}.lexical_internal_feature.blocks.lexical_inline_blocks.${clientBlock?.slug}.fields`;
|
|
109
|
+
// Initial state for newly created blocks
|
|
110
|
+
useEffect(() => {
|
|
111
|
+
const abortController = new AbortController();
|
|
112
|
+
const awaitInitialState = async () => {
|
|
113
|
+
/*
|
|
114
|
+
* 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,
|
|
115
|
+
* 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
|
|
116
|
+
* requests. Though for newly created blocks, we need to fetch the state client-side, as the server doesn't know about the block yet.
|
|
117
|
+
*/
|
|
118
|
+
const {
|
|
119
|
+
state
|
|
120
|
+
} = await getFormState({
|
|
121
|
+
id,
|
|
122
|
+
collectionSlug,
|
|
123
|
+
data: formData,
|
|
124
|
+
docPermissions: {
|
|
125
|
+
fields: true
|
|
126
|
+
},
|
|
127
|
+
docPreferences: await getDocPreferences(),
|
|
128
|
+
globalSlug,
|
|
129
|
+
operation: 'update',
|
|
130
|
+
renderAllFields: true,
|
|
131
|
+
schemaPath: schemaFieldsPath,
|
|
132
|
+
signal: abortController.signal
|
|
133
|
+
});
|
|
134
|
+
if (state) {
|
|
135
|
+
setInitialState(state);
|
|
136
|
+
}
|
|
137
|
+
};
|
|
138
|
+
if (formData && !initialState) {
|
|
139
|
+
void awaitInitialState();
|
|
140
|
+
}
|
|
141
|
+
return () => {
|
|
142
|
+
abortAndIgnore(abortController);
|
|
143
|
+
};
|
|
144
|
+
}, [getFormState, schemaFieldsPath, id, formData, initialState, collectionSlug, globalSlug, getDocPreferences]);
|
|
145
|
+
/**
|
|
146
|
+
* HANDLE ONCHANGE
|
|
147
|
+
*/
|
|
148
|
+
const onChange = useCallback(async ({
|
|
149
|
+
formState: prevFormState
|
|
150
|
+
}) => {
|
|
151
|
+
abortAndIgnore(onChangeAbortControllerRef.current);
|
|
152
|
+
const controller = new AbortController();
|
|
153
|
+
onChangeAbortControllerRef.current = controller;
|
|
154
|
+
const {
|
|
155
|
+
state: state_0
|
|
156
|
+
} = await getFormState({
|
|
157
|
+
id,
|
|
158
|
+
collectionSlug,
|
|
159
|
+
docPermissions: {
|
|
160
|
+
fields: true
|
|
161
|
+
},
|
|
162
|
+
docPreferences: await getDocPreferences(),
|
|
163
|
+
formState: prevFormState,
|
|
164
|
+
globalSlug,
|
|
165
|
+
operation: 'update',
|
|
166
|
+
schemaPath: schemaFieldsPath,
|
|
167
|
+
signal: controller.signal
|
|
168
|
+
});
|
|
169
|
+
if (!state_0) {
|
|
170
|
+
return prevFormState;
|
|
171
|
+
}
|
|
172
|
+
return state_0;
|
|
173
|
+
}, [getFormState, id, collectionSlug, getDocPreferences, globalSlug, schemaFieldsPath]);
|
|
174
|
+
// cleanup effect
|
|
175
|
+
useEffect(() => {
|
|
176
|
+
return () => {
|
|
177
|
+
abortAndIgnore(onChangeAbortControllerRef.current);
|
|
178
|
+
};
|
|
179
|
+
}, []);
|
|
180
|
+
/**
|
|
181
|
+
* HANDLE FORM SUBMIT
|
|
182
|
+
*/
|
|
183
|
+
const onFormSubmit = useCallback(formState => {
|
|
184
|
+
const newData = reduceFieldsToValues(formState);
|
|
185
|
+
newData.blockType = formData.blockType;
|
|
186
|
+
editor.update(() => {
|
|
187
|
+
const node_0 = $getNodeByKey(nodeKey);
|
|
188
|
+
if (node_0 && $isInlineBlockNode(node_0)) {
|
|
189
|
+
node_0.setFields(newData);
|
|
190
|
+
}
|
|
191
|
+
});
|
|
192
|
+
}, [editor, nodeKey, formData]);
|
|
193
|
+
const CustomLabel = initialState?.['_components']?.customComponents?.BlockLabel;
|
|
194
|
+
const CustomBlock = initialState?.['_components']?.customComponents?.Block;
|
|
195
|
+
const RemoveButton = useMemo(() => () => /*#__PURE__*/_jsx(Button, {
|
|
196
|
+
buttonStyle: "icon-label",
|
|
197
|
+
className: `${baseClass}__removeButton`,
|
|
198
|
+
disabled: readOnly,
|
|
199
|
+
icon: "x",
|
|
200
|
+
onClick: e => {
|
|
201
|
+
e.preventDefault();
|
|
202
|
+
removeInlineBlock();
|
|
203
|
+
},
|
|
204
|
+
round: true,
|
|
205
|
+
size: "small",
|
|
206
|
+
tooltip: t('lexical:blocks:inlineBlocks:remove', {
|
|
207
|
+
label: blockDisplayName
|
|
208
|
+
})
|
|
209
|
+
}), [blockDisplayName, readOnly, removeInlineBlock, t]);
|
|
210
|
+
const EditButton = useMemo(() => () => /*#__PURE__*/_jsx(Button, {
|
|
211
|
+
buttonStyle: "icon-label",
|
|
212
|
+
className: `${baseClass}__editButton`,
|
|
213
|
+
disabled: readOnly,
|
|
214
|
+
el: "div",
|
|
215
|
+
icon: "edit",
|
|
216
|
+
onClick: () => {
|
|
217
|
+
toggleDrawer();
|
|
218
|
+
},
|
|
219
|
+
round: true,
|
|
220
|
+
size: "small",
|
|
221
|
+
tooltip: t('lexical:blocks:inlineBlocks:edit', {
|
|
222
|
+
label: blockDisplayName
|
|
223
|
+
})
|
|
224
|
+
}), [blockDisplayName, readOnly, t, toggleDrawer]);
|
|
225
|
+
const InlineBlockContainer = useMemo(() => ({
|
|
226
|
+
children
|
|
227
|
+
}) => /*#__PURE__*/_jsx("div", {
|
|
79
228
|
className: [baseClass, baseClass + '-' + formData.blockType, isSelected && `${baseClass}--selected`].filter(Boolean).join(' '),
|
|
80
229
|
ref: inlineBlockElemElemRef,
|
|
81
|
-
children:
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
230
|
+
children: children
|
|
231
|
+
}), [formData.blockType, isSelected]);
|
|
232
|
+
const Label = useMemo(() => {
|
|
233
|
+
if (CustomLabel) {
|
|
234
|
+
return () => CustomLabel;
|
|
235
|
+
} else {
|
|
236
|
+
return () => /*#__PURE__*/_jsx("div", {
|
|
237
|
+
children: getTranslation(clientBlock.labels.singular, i18n)
|
|
238
|
+
});
|
|
239
|
+
}
|
|
240
|
+
}, [CustomLabel, clientBlock.labels, i18n]);
|
|
241
|
+
return /*#__PURE__*/_jsxs(Form, {
|
|
242
|
+
beforeSubmit: [onChange],
|
|
243
|
+
disableValidationOnSubmit: true,
|
|
244
|
+
fields: clientBlock.fields,
|
|
245
|
+
initialState: initialState || {},
|
|
246
|
+
onChange: [onChange],
|
|
247
|
+
onSubmit: formState_0 => {
|
|
248
|
+
onFormSubmit(formState_0);
|
|
249
|
+
toggleDrawer();
|
|
250
|
+
},
|
|
251
|
+
uuid: uuid(),
|
|
252
|
+
children: [/*#__PURE__*/_jsx(EditDepthProvider, {
|
|
253
|
+
children: /*#__PURE__*/_jsx(Drawer, {
|
|
254
|
+
className: '',
|
|
255
|
+
slug: drawerSlug,
|
|
256
|
+
title: t(`lexical:blocks:inlineBlocks:${formData?.id ? 'edit' : 'create'}`, {
|
|
257
|
+
label: blockDisplayName ?? t('lexical:blocks:inlineBlocks:label')
|
|
258
|
+
}),
|
|
259
|
+
children: initialState ? /*#__PURE__*/_jsxs(_Fragment, {
|
|
260
|
+
children: [/*#__PURE__*/_jsx(RenderFields, {
|
|
261
|
+
fields: clientBlock.fields,
|
|
262
|
+
forceRender: true,
|
|
263
|
+
parentIndexPath: "",
|
|
264
|
+
parentPath: "" // See Blocks feature path for details as for why this is empty
|
|
265
|
+
,
|
|
266
|
+
|
|
267
|
+
parentSchemaPath: schemaFieldsPath,
|
|
268
|
+
permissions: permissions,
|
|
269
|
+
readOnly: false
|
|
270
|
+
}), /*#__PURE__*/_jsx(FormSubmit, {
|
|
271
|
+
children: t('fields:saveChanges')
|
|
272
|
+
})]
|
|
273
|
+
}) : null
|
|
274
|
+
})
|
|
275
|
+
}), CustomBlock ? /*#__PURE__*/_jsx(InlineBlockComponentContext.Provider, {
|
|
276
|
+
value: {
|
|
277
|
+
EditButton,
|
|
278
|
+
initialState,
|
|
279
|
+
InlineBlockContainer,
|
|
280
|
+
Label,
|
|
281
|
+
nodeKey,
|
|
282
|
+
RemoveButton
|
|
283
|
+
},
|
|
284
|
+
children: CustomBlock
|
|
285
|
+
}) : /*#__PURE__*/_jsxs(InlineBlockContainer, {
|
|
286
|
+
children: [initialState ? /*#__PURE__*/_jsx(Label, {}) : /*#__PURE__*/_jsx(ShimmerEffect, {
|
|
287
|
+
height: "15px",
|
|
288
|
+
width: "40px"
|
|
289
|
+
}), editor.isEditable() ? /*#__PURE__*/_jsxs("div", {
|
|
290
|
+
className: `${baseClass}__actions`,
|
|
291
|
+
children: [/*#__PURE__*/_jsx(EditButton, {}), /*#__PURE__*/_jsx(RemoveButton, {})]
|
|
292
|
+
}) : null]
|
|
117
293
|
})]
|
|
118
294
|
});
|
|
119
295
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["React","useCallback","useEffect","useRef","baseClass","useLexicalComposerContext","useLexicalNodeSelection","mergeRegister","getTranslation","Button","useTranslation","$getNodeByKey","$getSelection","$isNodeSelection","CLICK_COMMAND","COMMAND_PRIORITY_LOW","KEY_BACKSPACE_COMMAND","KEY_DELETE_COMMAND","useEditorConfigContext","$isInlineBlockNode","OPEN_INLINE_BLOCK_DRAWER_COMMAND","InlineBlockComponent","props","formData","nodeKey","editor","i18n","t","fieldProps","featureClientSchemaMap","readOnly","schemaPath","inlineBlockElemElemRef","isSelected","setSelected","clearSelection","componentMapRenderedBlockPath","blockType","clientSchemaMap","blocksField","clientBlock","blocks","removeInlineBlock","update","remove","$onDelete","event","deleteSelection","preventDefault","getNodes","forEach","node","onClick","payload","target","current","contains","shiftKey","registerCommand","blockDisplayName","labels","singular","slug","Label","admin","components","_jsxs","className","filter","Boolean","join","ref","_jsx","isEditable","buttonStyle","disabled","el","icon","dispatchCommand","fields","round","size","tooltip","label","e"],"sources":["../../../../../src/features/blocks/client/componentInline/index.tsx"],"sourcesContent":["'use client'\n\nimport React, { useCallback, useEffect, useRef } from 'react'\nconst baseClass = 'inline-block'\n\nimport type { BlocksFieldClient } from 'payload'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext'\nimport { useLexicalNodeSelection } from '@lexical/react/useLexicalNodeSelection'\nimport { mergeRegister } from '@lexical/utils'\nimport { getTranslation } from '@payloadcms/translations'\nimport { Button, useTranslation } from '@payloadcms/ui'\nimport {\n $getNodeByKey,\n $getSelection,\n $isNodeSelection,\n CLICK_COMMAND,\n COMMAND_PRIORITY_LOW,\n KEY_BACKSPACE_COMMAND,\n KEY_DELETE_COMMAND,\n} from 'lexical'\n\nimport type { InlineBlockFields } from '../nodes/InlineBlocksNode.js'\n\nimport { useEditorConfigContext } from '../../../../lexical/config/client/EditorConfigProvider.js'\nimport { $isInlineBlockNode } from '../nodes/InlineBlocksNode.js'\nimport { OPEN_INLINE_BLOCK_DRAWER_COMMAND } from '../plugin/commands.js'\nimport './index.scss'\n\ntype Props = {\n readonly formData: InlineBlockFields\n readonly nodeKey: string\n}\n\nexport const InlineBlockComponent: React.FC<Props> = (props) => {\n const { formData, nodeKey } = props\n const [editor] = useLexicalComposerContext()\n const { i18n, t } = useTranslation<object, string>()\n const {\n fieldProps: { featureClientSchemaMap, readOnly, schemaPath },\n } = useEditorConfigContext()\n const inlineBlockElemElemRef = useRef<HTMLDivElement | null>(null)\n const [isSelected, setSelected, clearSelection] = useLexicalNodeSelection(nodeKey)\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 = blocksField.blocks[0]\n\n const removeInlineBlock = useCallback(() => {\n editor.update(() => {\n $getNodeByKey(nodeKey)?.remove()\n })\n }, [editor, nodeKey])\n\n const $onDelete = useCallback(\n (event: KeyboardEvent) => {\n const deleteSelection = $getSelection()\n if (isSelected && $isNodeSelection(deleteSelection)) {\n event.preventDefault()\n editor.update(() => {\n deleteSelection.getNodes().forEach((node) => {\n if ($isInlineBlockNode(node)) {\n node.remove()\n }\n })\n })\n }\n return false\n },\n [editor, isSelected],\n )\n const onClick = useCallback(\n (payload: MouseEvent) => {\n const event = payload\n // Check if inlineBlockElemElemRef.target or anything WITHIN inlineBlockElemElemRef.target was clicked\n if (\n event.target === inlineBlockElemElemRef.current ||\n inlineBlockElemElemRef.current?.contains(event.target as Node)\n ) {\n if (event.shiftKey) {\n setSelected(!isSelected)\n } else {\n if (!isSelected) {\n clearSelection()\n setSelected(true)\n }\n }\n return true\n }\n\n return false\n },\n [isSelected, setSelected, clearSelection],\n )\n\n useEffect(() => {\n return mergeRegister(\n editor.registerCommand<MouseEvent>(CLICK_COMMAND, onClick, COMMAND_PRIORITY_LOW),\n\n editor.registerCommand(KEY_DELETE_COMMAND, $onDelete, COMMAND_PRIORITY_LOW),\n editor.registerCommand(KEY_BACKSPACE_COMMAND, $onDelete, COMMAND_PRIORITY_LOW),\n )\n }, [clearSelection, editor, isSelected, nodeKey, $onDelete, setSelected, onClick])\n\n const blockDisplayName = clientBlock?.labels?.singular\n ? getTranslation(clientBlock.labels.singular, i18n)\n : clientBlock?.slug\n\n const Label = clientBlock?.admin?.components?.Label\n\n return (\n <div\n className={[\n baseClass,\n baseClass + '-' + formData.blockType,\n isSelected && `${baseClass}--selected`,\n ]\n .filter(Boolean)\n .join(' ')}\n ref={inlineBlockElemElemRef}\n >\n {Label ? Label : <div>{getTranslation(clientBlock.labels!.singular, i18n)}</div>}\n {editor.isEditable() && (\n <div className={`${baseClass}__actions`}>\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__editButton`}\n disabled={readOnly}\n el=\"div\"\n icon=\"edit\"\n onClick={() => {\n editor.dispatchCommand(OPEN_INLINE_BLOCK_DRAWER_COMMAND, {\n fields: formData,\n nodeKey,\n })\n }}\n round\n size=\"small\"\n tooltip={t('lexical:blocks:inlineBlocks:edit', { label: blockDisplayName })}\n />\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__removeButton`}\n disabled={readOnly}\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 </div>\n )}\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["React","createContext","useCallback","useEffect","useMemo","useRef","baseClass","useLexicalComposerContext","useLexicalNodeSelection","mergeRegister","getTranslation","Button","Drawer","EditDepthProvider","Form","formatDrawerSlug","FormSubmit","RenderFields","ShimmerEffect","useDocumentInfo","useEditDepth","useServerFunctions","useTranslation","abortAndIgnore","$getNodeByKey","$getSelection","$isNodeSelection","CLICK_COMMAND","COMMAND_PRIORITY_LOW","KEY_BACKSPACE_COMMAND","KEY_DELETE_COMMAND","reduceFieldsToValues","v4","uuid","useEditorConfigContext","useLexicalDrawer","$isInlineBlockNode","InlineBlockComponentContext","initialState","useInlineBlockComponentContext","useContext","InlineBlockComponent","props","formData","nodeKey","editor","i18n","t","fieldProps","featureClientSchemaMap","initialLexicalFormState","permissions","readOnly","schemaPath","uuidFromContext","getFormState","editDepth","setInitialState","useState","id","formState","drawerSlug","slug","depth","toggleDrawer","inlineBlockElemElemRef","isSelected","setSelected","clearSelection","collectionSlug","getDocPreferences","globalSlug","componentMapRenderedBlockPath","blockType","clientSchemaMap","blocksField","clientBlock","blocks","removeInlineBlock","update","remove","$onDelete","event","deleteSelection","preventDefault","getNodes","forEach","node","onClick","payload","target","current","contains","shiftKey","registerCommand","blockDisplayName","labels","singular","onChangeAbortControllerRef","AbortController","schemaFieldsPath","abortController","awaitInitialState","state","data","docPermissions","fields","docPreferences","operation","renderAllFields","signal","onChange","prevFormState","controller","onFormSubmit","newData","setFields","CustomLabel","customComponents","BlockLabel","CustomBlock","Block","RemoveButton","_jsx","buttonStyle","className","disabled","icon","e","round","size","tooltip","label","EditButton","el","InlineBlockContainer","children","filter","Boolean","join","ref","Label","_jsxs","beforeSubmit","disableValidationOnSubmit","onSubmit","title","_Fragment","forceRender","parentIndexPath","parentPath","parentSchemaPath","Provider","value","height","width","isEditable"],"sources":["../../../../../src/features/blocks/client/componentInline/index.tsx"],"sourcesContent":["'use client'\n\nimport React, { createContext, useCallback, useEffect, useMemo, useRef } from 'react'\nconst baseClass = 'inline-block'\n\nimport type { BlocksFieldClient, FormState } from 'payload'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext'\nimport { useLexicalNodeSelection } from '@lexical/react/useLexicalNodeSelection'\nimport { mergeRegister } from '@lexical/utils'\nimport { getTranslation } from '@payloadcms/translations'\nimport {\n Button,\n Drawer,\n EditDepthProvider,\n Form,\n formatDrawerSlug,\n FormSubmit,\n RenderFields,\n ShimmerEffect,\n useDocumentInfo,\n useEditDepth,\n useServerFunctions,\n useTranslation,\n} from '@payloadcms/ui'\nimport { abortAndIgnore } from '@payloadcms/ui/shared'\nimport {\n $getNodeByKey,\n $getSelection,\n $isNodeSelection,\n CLICK_COMMAND,\n COMMAND_PRIORITY_LOW,\n KEY_BACKSPACE_COMMAND,\n KEY_DELETE_COMMAND,\n} from 'lexical'\nimport { reduceFieldsToValues } from 'payload/shared'\n\nimport './index.scss'\n\nimport { v4 as uuid } from 'uuid'\n\nimport type { InlineBlockFields } from '../nodes/InlineBlocksNode.js'\n\nimport { useEditorConfigContext } from '../../../../lexical/config/client/EditorConfigProvider.js'\nimport { useLexicalDrawer } from '../../../../utilities/fieldsDrawer/useLexicalDrawer.js'\nimport { $isInlineBlockNode } from '../nodes/InlineBlocksNode.js'\n\ntype Props = {\n readonly formData: InlineBlockFields\n readonly nodeKey: string\n}\n\ntype 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.useContext(InlineBlockComponentContext)\n\nexport const InlineBlockComponent: React.FC<Props> = (props) => {\n const { formData, nodeKey } = props\n const [editor] = useLexicalComposerContext()\n const { i18n, t } = useTranslation<object, string>()\n const {\n fieldProps: {\n featureClientSchemaMap,\n initialLexicalFormState,\n permissions,\n readOnly,\n schemaPath,\n },\n uuid: uuidFromContext,\n } = useEditorConfigContext()\n const { getFormState } = useServerFunctions()\n const editDepth = useEditDepth()\n\n const [initialState, setInitialState] = React.useState<false | FormState | undefined>(\n initialLexicalFormState?.[formData.id]?.formState,\n )\n\n const drawerSlug = formatDrawerSlug({\n slug: `lexical-inlineBlocks-create-` + uuidFromContext,\n depth: editDepth,\n })\n const { toggleDrawer } = useLexicalDrawer(drawerSlug, true)\n\n const inlineBlockElemElemRef = useRef<HTMLDivElement | null>(null)\n const [isSelected, setSelected, clearSelection] = useLexicalNodeSelection(nodeKey)\n const { id, collectionSlug, getDocPreferences, globalSlug } = useDocumentInfo()\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 = blocksField.blocks[0]\n\n const removeInlineBlock = useCallback(() => {\n editor.update(() => {\n $getNodeByKey(nodeKey)?.remove()\n })\n }, [editor, nodeKey])\n\n const $onDelete = useCallback(\n (event: KeyboardEvent) => {\n const deleteSelection = $getSelection()\n if (isSelected && $isNodeSelection(deleteSelection)) {\n event.preventDefault()\n editor.update(() => {\n deleteSelection.getNodes().forEach((node) => {\n if ($isInlineBlockNode(node)) {\n node.remove()\n }\n })\n })\n }\n return false\n },\n [editor, isSelected],\n )\n const onClick = useCallback(\n (payload: MouseEvent) => {\n const event = payload\n // Check if inlineBlockElemElemRef.target or anything WITHIN inlineBlockElemElemRef.target was clicked\n if (\n event.target === inlineBlockElemElemRef.current ||\n inlineBlockElemElemRef.current?.contains(event.target as Node)\n ) {\n if (event.shiftKey) {\n setSelected(!isSelected)\n } else {\n if (!isSelected) {\n clearSelection()\n setSelected(true)\n }\n }\n return true\n }\n\n return false\n },\n [isSelected, setSelected, clearSelection],\n )\n\n useEffect(() => {\n return mergeRegister(\n editor.registerCommand<MouseEvent>(CLICK_COMMAND, onClick, COMMAND_PRIORITY_LOW),\n\n editor.registerCommand(KEY_DELETE_COMMAND, $onDelete, COMMAND_PRIORITY_LOW),\n editor.registerCommand(KEY_BACKSPACE_COMMAND, $onDelete, COMMAND_PRIORITY_LOW),\n )\n }, [clearSelection, editor, isSelected, nodeKey, $onDelete, setSelected, onClick])\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 globalSlug,\n operation: 'update',\n renderAllFields: true,\n schemaPath: schemaFieldsPath,\n signal: abortController.signal,\n })\n\n if (state) {\n setInitialState(state)\n }\n }\n\n if (formData && !initialState) {\n void awaitInitialState()\n }\n\n return () => {\n abortAndIgnore(abortController)\n }\n }, [\n getFormState,\n schemaFieldsPath,\n id,\n formData,\n initialState,\n collectionSlug,\n globalSlug,\n getDocPreferences,\n ])\n\n /**\n * HANDLE ONCHANGE\n */\n const onChange = useCallback(\n async ({ formState: prevFormState }) => {\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 formState: prevFormState,\n globalSlug,\n operation: 'update',\n schemaPath: schemaFieldsPath,\n signal: controller.signal,\n })\n\n if (!state) {\n return prevFormState\n }\n\n return state\n },\n [getFormState, id, collectionSlug, getDocPreferences, globalSlug, schemaFieldsPath],\n )\n // cleanup effect\n useEffect(() => {\n return () => {\n abortAndIgnore(onChangeAbortControllerRef.current)\n }\n }, [])\n\n /**\n * HANDLE FORM SUBMIT\n */\n const onFormSubmit = useCallback(\n (formState) => {\n const newData: any = reduceFieldsToValues(formState)\n newData.blockType = formData.blockType\n editor.update(() => {\n const node = $getNodeByKey(nodeKey)\n if (node && $isInlineBlockNode(node)) {\n node.setFields(newData)\n }\n })\n },\n [editor, nodeKey, formData],\n )\n\n const CustomLabel = initialState?.['_components']?.customComponents?.BlockLabel\n const CustomBlock = initialState?.['_components']?.customComponents?.Block\n\n const RemoveButton = useMemo(\n () => () => (\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__removeButton`}\n disabled={readOnly}\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 [blockDisplayName, readOnly, removeInlineBlock, t],\n )\n\n const EditButton = useMemo(\n () => () => (\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__editButton`}\n disabled={readOnly}\n el=\"div\"\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 [blockDisplayName, readOnly, t, toggleDrawer],\n )\n\n const InlineBlockContainer = useMemo(\n () =>\n ({ children }) => (\n <div\n className={[\n baseClass,\n baseClass + '-' + formData.blockType,\n isSelected && `${baseClass}--selected`,\n ]\n .filter(Boolean)\n .join(' ')}\n ref={inlineBlockElemElemRef}\n >\n {children}\n </div>\n ),\n [formData.blockType, isSelected],\n )\n\n const Label = useMemo(() => {\n if (CustomLabel) {\n return () => CustomLabel\n } else {\n return () => <div>{getTranslation(clientBlock.labels!.singular, i18n)}</div>\n }\n }, [CustomLabel, clientBlock.labels, i18n])\n\n return (\n <Form\n beforeSubmit={[onChange]}\n disableValidationOnSubmit\n fields={clientBlock.fields}\n initialState={initialState || {}}\n onChange={[onChange]}\n onSubmit={(formState) => {\n onFormSubmit(formState)\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={permissions}\n readOnly={false}\n />\n <FormSubmit>{t('fields:saveChanges')}</FormSubmit>\n </>\n ) : null}\n </Drawer>\n </EditDepthProvider>\n {CustomBlock ? (\n <InlineBlockComponentContext.Provider\n value={{\n EditButton,\n initialState,\n InlineBlockContainer,\n Label,\n nodeKey,\n RemoveButton,\n }}\n >\n {CustomBlock}\n </InlineBlockComponentContext.Provider>\n ) : (\n <InlineBlockContainer>\n {initialState ? <Label /> : <ShimmerEffect height=\"15px\" width=\"40px\" />}\n {editor.isEditable() ? (\n <div className={`${baseClass}__actions`}>\n <EditButton />\n <RemoveButton />\n </div>\n ) : null}\n </InlineBlockContainer>\n )}\n </Form>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/features/blocks/client/index.tsx"],"names":[],"mappings":"AAiBA,MAAM,MAAM,wBAAwB,GAAG;IACrC,gBAAgB,EAAE,MAAM,EAAE,CAAA;IAC1B,sBAAsB,EAAE,MAAM,EAAE,CAAA;CACjC,CAAA;AAED,eAAO,MAAM,mBAAmB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/features/blocks/client/index.tsx"],"names":[],"mappings":"AAiBA,MAAM,MAAM,wBAAwB,GAAG;IACrC,gBAAgB,EAAE,MAAM,EAAE,CAAA;IAC1B,sBAAsB,EAAE,MAAM,EAAE,CAAA;CACjC,CAAA;AAED,eAAO,MAAM,mBAAmB,gHA+K7B,CAAA"}
|
|
@@ -6,7 +6,7 @@ import { InlineBlocksIcon } from '../../../lexical/ui/icons/InlineBlocks/index.j
|
|
|
6
6
|
import { createClientFeature } from '../../../utilities/createClientFeature.js';
|
|
7
7
|
import { BlockNode } from './nodes/BlocksNode.js';
|
|
8
8
|
import { InlineBlockNode } from './nodes/InlineBlocksNode.js';
|
|
9
|
-
import { INSERT_BLOCK_COMMAND,
|
|
9
|
+
import { INSERT_BLOCK_COMMAND, INSERT_INLINE_BLOCK_COMMAND } from './plugin/commands.js';
|
|
10
10
|
import { BlocksPlugin } from './plugin/index.js';
|
|
11
11
|
// @ts-expect-error - TODO: fix this
|
|
12
12
|
export const BlocksFeatureClient = createClientFeature(({
|
|
@@ -77,11 +77,9 @@ export const BlocksFeatureClient = createClientFeature(({
|
|
|
77
77
|
onSelect: ({
|
|
78
78
|
editor
|
|
79
79
|
}) => {
|
|
80
|
-
editor.dispatchCommand(
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
blockType: inlineBlockSlug
|
|
84
|
-
}
|
|
80
|
+
editor.dispatchCommand(INSERT_INLINE_BLOCK_COMMAND, {
|
|
81
|
+
blockName: '',
|
|
82
|
+
blockType: inlineBlockSlug
|
|
85
83
|
});
|
|
86
84
|
}
|
|
87
85
|
};
|
|
@@ -154,10 +152,9 @@ export const BlocksFeatureClient = createClientFeature(({
|
|
|
154
152
|
onSelect: ({
|
|
155
153
|
editor
|
|
156
154
|
}) => {
|
|
157
|
-
editor.dispatchCommand(
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
}
|
|
155
|
+
editor.dispatchCommand(INSERT_INLINE_BLOCK_COMMAND, {
|
|
156
|
+
blockName: '',
|
|
157
|
+
blockType: inlineBlockSlug
|
|
161
158
|
});
|
|
162
159
|
},
|
|
163
160
|
order: index
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["getTranslation","BlockIcon","InlineBlocksIcon","createClientFeature","BlockNode","InlineBlockNode","INSERT_BLOCK_COMMAND","OPEN_INLINE_BLOCK_DRAWER_COMMAND","BlocksPlugin","BlocksFeatureClient","props","nodes","plugins","Component","position","sanitizedClientFeatureProps","slashMenu","groups","clientBlockSlugs","length","items","map","blockSlug","Icon","key","keywords","label","featureClientSchemaMap","i18n","schemaPath","componentMapRenderedBlockPath","clientSchemaMap","blocksField","clientBlock","blocks","blockDisplayName","labels","singular","slug","onSelect","editor","dispatchCommand","blockName","blockType","t","clientInlineBlockSlugs","inlineBlockSlug","fields","filter","Boolean","toolbarFixed","type","ChildComponent","index","isActive","undefined","order"],"sources":["../../../../src/features/blocks/client/index.tsx"],"sourcesContent":["'use client'\n\nimport type { BlocksFieldClient } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\n\nimport type { SlashMenuItem } from '../../../lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/types.js'\nimport type { ToolbarGroup, ToolbarGroupItem } from '../../toolbars/types.js'\n\nimport { BlockIcon } from '../../../lexical/ui/icons/Block/index.js'\nimport { InlineBlocksIcon } from '../../../lexical/ui/icons/InlineBlocks/index.js'\nimport { createClientFeature } from '../../../utilities/createClientFeature.js'\nimport { BlockNode } from './nodes/BlocksNode.js'\nimport { InlineBlockNode } from './nodes/InlineBlocksNode.js'\nimport { INSERT_BLOCK_COMMAND, OPEN_INLINE_BLOCK_DRAWER_COMMAND } from './plugin/commands.js'\nimport { BlocksPlugin } from './plugin/index.js'\n\nexport type BlocksFeatureClientProps = {\n clientBlockSlugs: string[]\n clientInlineBlockSlugs: string[]\n}\n// @ts-expect-error - TODO: fix this\nexport const BlocksFeatureClient = createClientFeature<BlocksFeatureClientProps>(({ props }) => ({\n nodes: [BlockNode, InlineBlockNode],\n plugins: [\n {\n Component: BlocksPlugin,\n position: 'normal',\n },\n ],\n sanitizedClientFeatureProps: props,\n slashMenu: {\n groups: [\n props.clientBlockSlugs?.length\n ? {\n items: props.clientBlockSlugs.map((blockSlug) => {\n return {\n Icon: BlockIcon,\n key: 'block-' + blockSlug,\n keywords: ['block', 'blocks', blockSlug],\n label: ({ featureClientSchemaMap, i18n, schemaPath }) => {\n if (!featureClientSchemaMap) {\n return blockSlug\n }\n\n const componentMapRenderedBlockPath = `${schemaPath}.lexical_internal_feature.blocks.lexical_blocks.${blockSlug}`\n const clientSchemaMap = featureClientSchemaMap['blocks']\n\n const blocksField: BlocksFieldClient = clientSchemaMap[\n componentMapRenderedBlockPath\n ][0] as BlocksFieldClient\n\n const clientBlock = blocksField.blocks[0]\n\n const blockDisplayName = clientBlock?.labels?.singular\n ? getTranslation(clientBlock.labels.singular, i18n)\n : clientBlock?.slug\n\n return blockDisplayName\n },\n onSelect: ({ editor }) => {\n editor.dispatchCommand(INSERT_BLOCK_COMMAND, {\n blockName: '',\n blockType: blockSlug,\n })\n },\n } as SlashMenuItem\n }),\n key: 'blocks',\n label: ({ i18n }) => {\n return i18n.t('lexical:blocks:label')\n },\n }\n : null,\n props.clientInlineBlockSlugs?.length\n ? {\n items: props.clientInlineBlockSlugs.map((inlineBlockSlug) => {\n return {\n Icon: InlineBlocksIcon,\n key: 'inlineBlocks-' + inlineBlockSlug,\n keywords: ['inlineBlock', 'inline block', inlineBlockSlug],\n label: ({ featureClientSchemaMap, i18n, schemaPath }) => {\n const componentMapRenderedBlockPath = `${schemaPath}.lexical_internal_feature.blocks.lexical_inline_blocks.${inlineBlockSlug}`\n const clientSchemaMap = featureClientSchemaMap['blocks']\n\n const blocksField: BlocksFieldClient = clientSchemaMap[\n componentMapRenderedBlockPath\n ][0] as BlocksFieldClient\n\n const clientBlock = blocksField.blocks[0]\n\n const blockDisplayName = clientBlock?.labels?.singular\n ? getTranslation(clientBlock.labels.singular, i18n)\n : clientBlock?.slug\n\n return blockDisplayName\n },\n onSelect: ({ editor }) => {\n editor.dispatchCommand(OPEN_INLINE_BLOCK_DRAWER_COMMAND, {\n fields: {\n blockName: '',\n blockType: inlineBlockSlug,\n },\n })\n },\n } as SlashMenuItem\n }),\n key: 'inlineBlocks',\n label: ({ i18n }) => {\n return i18n.t('lexical:blocks:inlineBlocks:label')\n },\n }\n : null,\n ].filter(Boolean),\n },\n toolbarFixed: {\n groups: [\n props.clientBlockSlugs?.length\n ? {\n type: 'dropdown',\n ChildComponent: BlockIcon,\n items: props.clientBlockSlugs.map((blockSlug, index) => {\n return {\n ChildComponent: BlockIcon,\n isActive: undefined, // At this point, we would be inside a sub-richtext-editor. And at this point this will be run against the focused sub-editor, not the parent editor which has the actual block. Thus, no point in running this\n key: 'block-' + blockSlug,\n label: ({ featureClientSchemaMap, i18n, schemaPath }) => {\n const componentMapRenderedBlockPath = `${schemaPath}.lexical_internal_feature.blocks.lexical_blocks.${blockSlug}`\n const clientSchemaMap = featureClientSchemaMap['blocks']\n\n const blocksField: BlocksFieldClient = clientSchemaMap[\n componentMapRenderedBlockPath\n ][0] as BlocksFieldClient\n\n const clientBlock = blocksField.blocks[0]\n\n const blockDisplayName = clientBlock?.labels?.singular\n ? getTranslation(clientBlock.labels.singular, i18n)\n : clientBlock?.slug\n\n return blockDisplayName\n },\n onSelect: ({ editor }) => {\n editor.dispatchCommand(INSERT_BLOCK_COMMAND, {\n blockName: '',\n blockType: blockSlug,\n })\n },\n order: index,\n } as ToolbarGroupItem\n }),\n key: 'blocks',\n order: 20,\n }\n : null,\n props.clientInlineBlockSlugs?.length\n ? {\n type: 'dropdown',\n ChildComponent: InlineBlocksIcon,\n items: props.clientInlineBlockSlugs.map((inlineBlockSlug, index) => {\n return {\n ChildComponent: InlineBlocksIcon,\n isActive: undefined,\n key: 'inlineBlock-' + inlineBlockSlug,\n label: ({ featureClientSchemaMap, i18n, schemaPath }) => {\n if (!featureClientSchemaMap) {\n return inlineBlockSlug\n }\n\n const componentMapRenderedBlockPath = `${schemaPath}.lexical_internal_feature.blocks.lexical_inline_blocks.${inlineBlockSlug}`\n const clientSchemaMap = featureClientSchemaMap['blocks']\n\n const blocksField: BlocksFieldClient = clientSchemaMap[\n componentMapRenderedBlockPath\n ][0] as BlocksFieldClient\n\n const clientBlock = blocksField.blocks[0]\n\n const blockDisplayName = clientBlock?.labels?.singular\n ? getTranslation(clientBlock.labels.singular, i18n)\n : clientBlock?.slug\n\n return blockDisplayName\n },\n onSelect: ({ editor }) => {\n editor.dispatchCommand(OPEN_INLINE_BLOCK_DRAWER_COMMAND, {\n fields: {\n blockType: inlineBlockSlug,\n },\n })\n },\n order: index,\n } as ToolbarGroupItem\n }),\n key: 'inlineBlocks',\n order: 25,\n }\n : null,\n ].filter(Boolean) as ToolbarGroup[],\n },\n}))\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["getTranslation","BlockIcon","InlineBlocksIcon","createClientFeature","BlockNode","InlineBlockNode","INSERT_BLOCK_COMMAND","INSERT_INLINE_BLOCK_COMMAND","BlocksPlugin","BlocksFeatureClient","props","nodes","plugins","Component","position","sanitizedClientFeatureProps","slashMenu","groups","clientBlockSlugs","length","items","map","blockSlug","Icon","key","keywords","label","featureClientSchemaMap","i18n","schemaPath","componentMapRenderedBlockPath","clientSchemaMap","blocksField","clientBlock","blocks","blockDisplayName","labels","singular","slug","onSelect","editor","dispatchCommand","blockName","blockType","t","clientInlineBlockSlugs","inlineBlockSlug","filter","Boolean","toolbarFixed","type","ChildComponent","index","isActive","undefined","order"],"sources":["../../../../src/features/blocks/client/index.tsx"],"sourcesContent":["'use client'\n\nimport type { BlocksFieldClient } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\n\nimport type { SlashMenuItem } from '../../../lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/types.js'\nimport type { ToolbarGroup, ToolbarGroupItem } from '../../toolbars/types.js'\n\nimport { BlockIcon } from '../../../lexical/ui/icons/Block/index.js'\nimport { InlineBlocksIcon } from '../../../lexical/ui/icons/InlineBlocks/index.js'\nimport { createClientFeature } from '../../../utilities/createClientFeature.js'\nimport { BlockNode } from './nodes/BlocksNode.js'\nimport { InlineBlockNode } from './nodes/InlineBlocksNode.js'\nimport { INSERT_BLOCK_COMMAND, INSERT_INLINE_BLOCK_COMMAND } from './plugin/commands.js'\nimport { BlocksPlugin } from './plugin/index.js'\n\nexport type BlocksFeatureClientProps = {\n clientBlockSlugs: string[]\n clientInlineBlockSlugs: string[]\n}\n// @ts-expect-error - TODO: fix this\nexport const BlocksFeatureClient = createClientFeature<BlocksFeatureClientProps>(({ props }) => ({\n nodes: [BlockNode, InlineBlockNode],\n plugins: [\n {\n Component: BlocksPlugin,\n position: 'normal',\n },\n ],\n sanitizedClientFeatureProps: props,\n slashMenu: {\n groups: [\n props.clientBlockSlugs?.length\n ? {\n items: props.clientBlockSlugs.map((blockSlug) => {\n return {\n Icon: BlockIcon,\n key: 'block-' + blockSlug,\n keywords: ['block', 'blocks', blockSlug],\n label: ({ featureClientSchemaMap, i18n, schemaPath }) => {\n if (!featureClientSchemaMap) {\n return blockSlug\n }\n\n const componentMapRenderedBlockPath = `${schemaPath}.lexical_internal_feature.blocks.lexical_blocks.${blockSlug}`\n const clientSchemaMap = featureClientSchemaMap['blocks']\n\n const blocksField: BlocksFieldClient = clientSchemaMap[\n componentMapRenderedBlockPath\n ][0] as BlocksFieldClient\n\n const clientBlock = blocksField.blocks[0]\n\n const blockDisplayName = clientBlock?.labels?.singular\n ? getTranslation(clientBlock.labels.singular, i18n)\n : clientBlock?.slug\n\n return blockDisplayName\n },\n onSelect: ({ editor }) => {\n editor.dispatchCommand(INSERT_BLOCK_COMMAND, {\n blockName: '',\n blockType: blockSlug,\n })\n },\n } as SlashMenuItem\n }),\n key: 'blocks',\n label: ({ i18n }) => {\n return i18n.t('lexical:blocks:label')\n },\n }\n : null,\n props.clientInlineBlockSlugs?.length\n ? {\n items: props.clientInlineBlockSlugs.map((inlineBlockSlug) => {\n return {\n Icon: InlineBlocksIcon,\n key: 'inlineBlocks-' + inlineBlockSlug,\n keywords: ['inlineBlock', 'inline block', inlineBlockSlug],\n label: ({ featureClientSchemaMap, i18n, schemaPath }) => {\n const componentMapRenderedBlockPath = `${schemaPath}.lexical_internal_feature.blocks.lexical_inline_blocks.${inlineBlockSlug}`\n const clientSchemaMap = featureClientSchemaMap['blocks']\n\n const blocksField: BlocksFieldClient = clientSchemaMap[\n componentMapRenderedBlockPath\n ][0] as BlocksFieldClient\n\n const clientBlock = blocksField.blocks[0]\n\n const blockDisplayName = clientBlock?.labels?.singular\n ? getTranslation(clientBlock.labels.singular, i18n)\n : clientBlock?.slug\n\n return blockDisplayName\n },\n onSelect: ({ editor }) => {\n editor.dispatchCommand(INSERT_INLINE_BLOCK_COMMAND, {\n blockName: '',\n blockType: inlineBlockSlug,\n })\n },\n } as SlashMenuItem\n }),\n key: 'inlineBlocks',\n label: ({ i18n }) => {\n return i18n.t('lexical:blocks:inlineBlocks:label')\n },\n }\n : null,\n ].filter(Boolean),\n },\n toolbarFixed: {\n groups: [\n props.clientBlockSlugs?.length\n ? {\n type: 'dropdown',\n ChildComponent: BlockIcon,\n items: props.clientBlockSlugs.map((blockSlug, index) => {\n return {\n ChildComponent: BlockIcon,\n isActive: undefined, // At this point, we would be inside a sub-richtext-editor. And at this point this will be run against the focused sub-editor, not the parent editor which has the actual block. Thus, no point in running this\n key: 'block-' + blockSlug,\n label: ({ featureClientSchemaMap, i18n, schemaPath }) => {\n const componentMapRenderedBlockPath = `${schemaPath}.lexical_internal_feature.blocks.lexical_blocks.${blockSlug}`\n const clientSchemaMap = featureClientSchemaMap['blocks']\n\n const blocksField: BlocksFieldClient = clientSchemaMap[\n componentMapRenderedBlockPath\n ][0] as BlocksFieldClient\n\n const clientBlock = blocksField.blocks[0]\n\n const blockDisplayName = clientBlock?.labels?.singular\n ? getTranslation(clientBlock.labels.singular, i18n)\n : clientBlock?.slug\n\n return blockDisplayName\n },\n onSelect: ({ editor }) => {\n editor.dispatchCommand(INSERT_BLOCK_COMMAND, {\n blockName: '',\n blockType: blockSlug,\n })\n },\n order: index,\n } as ToolbarGroupItem\n }),\n key: 'blocks',\n order: 20,\n }\n : null,\n props.clientInlineBlockSlugs?.length\n ? {\n type: 'dropdown',\n ChildComponent: InlineBlocksIcon,\n items: props.clientInlineBlockSlugs.map((inlineBlockSlug, index) => {\n return {\n ChildComponent: InlineBlocksIcon,\n isActive: undefined,\n key: 'inlineBlock-' + inlineBlockSlug,\n label: ({ featureClientSchemaMap, i18n, schemaPath }) => {\n if (!featureClientSchemaMap) {\n return inlineBlockSlug\n }\n\n const componentMapRenderedBlockPath = `${schemaPath}.lexical_internal_feature.blocks.lexical_inline_blocks.${inlineBlockSlug}`\n const clientSchemaMap = featureClientSchemaMap['blocks']\n\n const blocksField: BlocksFieldClient = clientSchemaMap[\n componentMapRenderedBlockPath\n ][0] as BlocksFieldClient\n\n const clientBlock = blocksField.blocks[0]\n\n const blockDisplayName = clientBlock?.labels?.singular\n ? getTranslation(clientBlock.labels.singular, i18n)\n : clientBlock?.slug\n\n return blockDisplayName\n },\n onSelect: ({ editor }) => {\n editor.dispatchCommand(INSERT_INLINE_BLOCK_COMMAND, {\n blockName: '',\n blockType: inlineBlockSlug,\n })\n },\n order: index,\n } as ToolbarGroupItem\n }),\n key: 'inlineBlocks',\n order: 25,\n }\n : null,\n ].filter(Boolean) as ToolbarGroup[],\n },\n}))\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BlocksNode.d.ts","sourceRoot":"","sources":["../../../../../src/features/blocks/client/nodes/BlocksNode.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAGvE,OAAc,EAAE,KAAK,GAAG,EAAE,MAAM,OAAO,CAAA;AAEvC,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"BlocksNode.d.ts","sourceRoot":"","sources":["../../../../../src/features/blocks/client/nodes/BlocksNode.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAGvE,OAAc,EAAE,KAAK,GAAG,EAAE,MAAM,OAAO,CAAA;AAEvC,OAAO,KAAK,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAA;AAElG,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAA;AAGlE,qBAAa,SAAU,SAAQ,eAAe;IAC5C,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,eAAe,GAAG,eAAe;IAIpD,MAAM,CAAC,OAAO,IAAI,MAAM;IAIxB,MAAM,CAAC,UAAU,CAAC,cAAc,EAAE,mBAAmB,GAAG,SAAS;IAgBjE,QAAQ,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,YAAY,GAAG,GAAG,CAAC,OAAO;IAIlE,UAAU,IAAI,mBAAmB;CAGlC;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,qBAAqB,GAAG,SAAS,CAOzE;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,SAAS,GAAG,WAAW,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI,IAAI,SAAS,CAEhG"}
|
|
@@ -4,9 +4,7 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
4
4
|
import ObjectID from 'bson-objectid';
|
|
5
5
|
import React from 'react';
|
|
6
6
|
import { ServerBlockNode } from '../../server/nodes/BlocksNode.js';
|
|
7
|
-
|
|
8
|
-
default: module.BlockComponent
|
|
9
|
-
})));
|
|
7
|
+
import { BlockComponent } from '../component/index.js';
|
|
10
8
|
export class BlockNode extends ServerBlockNode {
|
|
11
9
|
static clone(node) {
|
|
12
10
|
return super.clone(node);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BlocksNode.js","names":["ObjectID","React","ServerBlockNode","BlockComponent","
|
|
1
|
+
{"version":3,"file":"BlocksNode.js","names":["ObjectID","React","ServerBlockNode","BlockComponent","BlockNode","clone","node","getType","importJSON","serializedNode","version","fields","data","$createBlockNode","setFormat","format","decorate","editor","config","_jsx","formData","getFields","nodeKey","getKey","exportJSON","id","default","toHexString","$isBlockNode"],"sources":["../../../../../src/features/blocks/client/nodes/BlocksNode.tsx"],"sourcesContent":["'use client'\nimport type { EditorConfig, LexicalEditor, LexicalNode } from 'lexical'\n\nimport ObjectID from 'bson-objectid'\nimport React, { type JSX } from 'react'\n\nimport type { BlockFieldsOptionalID, SerializedBlockNode } from '../../server/nodes/BlocksNode.js'\n\nimport { ServerBlockNode } from '../../server/nodes/BlocksNode.js'\nimport { BlockComponent } from '../component/index.js'\n\nexport class BlockNode extends ServerBlockNode {\n static clone(node: ServerBlockNode): ServerBlockNode {\n return super.clone(node)\n }\n\n static getType(): string {\n return super.getType()\n }\n\n static importJSON(serializedNode: SerializedBlockNode): BlockNode {\n if (serializedNode.version === 1) {\n // Convert (version 1 had the fields wrapped in another, unnecessary data property)\n serializedNode = {\n ...serializedNode,\n fields: {\n ...(serializedNode as any).fields.data,\n },\n version: 2,\n }\n }\n const node = $createBlockNode(serializedNode.fields)\n node.setFormat(serializedNode.format)\n return node\n }\n\n decorate(editor: LexicalEditor, config: EditorConfig): JSX.Element {\n return <BlockComponent formData={this.getFields()} nodeKey={this.getKey()} />\n }\n\n exportJSON(): SerializedBlockNode {\n return super.exportJSON()\n }\n}\n\nexport function $createBlockNode(fields: BlockFieldsOptionalID): BlockNode {\n return new BlockNode({\n fields: {\n ...fields,\n id: fields?.id || new ObjectID.default().toHexString(),\n },\n })\n}\n\nexport function $isBlockNode(node: BlockNode | LexicalNode | null | undefined): node is BlockNode {\n return node instanceof BlockNode\n}\n"],"mappings":"AAAA;;;AAGA,OAAOA,QAAA,MAAc;AACrB,OAAOC,KAAA,MAAyB;AAIhC,SAASC,eAAe,QAAQ;AAChC,SAASC,cAAc,QAAQ;AAE/B,OAAO,MAAMC,SAAA,SAAkBF,eAAA;EAC7B,OAAOG,MAAMC,IAAqB,EAAmB;IACnD,OAAO,KAAK,CAACD,KAAA,CAAMC,IAAA;EACrB;EAEA,OAAOC,QAAA,EAAkB;IACvB,OAAO,KAAK,CAACA,OAAA;EACf;EAEA,OAAOC,WAAWC,cAAmC,EAAa;IAChE,IAAIA,cAAA,CAAeC,OAAO,KAAK,GAAG;MAChC;MACAD,cAAA,GAAiB;QACf,GAAGA,cAAc;QACjBE,MAAA,EAAQ;UACN,GAAGF,cAAC,CAAuBE,MAAM,CAACC;QACpC;QACAF,OAAA,EAAS;MACX;IACF;IACA,MAAMJ,IAAA,GAAOO,gBAAA,CAAiBJ,cAAA,CAAeE,MAAM;IACnDL,IAAA,CAAKQ,SAAS,CAACL,cAAA,CAAeM,MAAM;IACpC,OAAOT,IAAA;EACT;EAEAU,SAASC,MAAqB,EAAEC,MAAoB,EAAe;IACjE,oBAAOC,IAAA,CAAChB,cAAA;MAAeiB,QAAA,EAAU,IAAI,CAACC,SAAS;MAAIC,OAAA,EAAS,IAAI,CAACC,MAAM;;EACzE;EAEAC,WAAA,EAAkC;IAChC,OAAO,KAAK,CAACA,UAAA;EACf;AACF;AAEA,OAAO,SAASX,iBAAiBF,MAA6B;EAC5D,OAAO,IAAIP,SAAA,CAAU;IACnBO,MAAA,EAAQ;MACN,GAAGA,MAAM;MACTc,EAAA,EAAId,MAAA,EAAQc,EAAA,IAAM,IAAIzB,QAAA,CAAS0B,OAAO,GAAGC,WAAW;IACtD;EACF;AACF;AAEA,OAAO,SAASC,aAAatB,IAAgD;EAC3E,OAAOA,IAAA,YAAgBF,SAAA;AACzB","ignoreList":[]}
|
|
@@ -2,8 +2,4 @@ import type { LexicalCommand } from 'lexical';
|
|
|
2
2
|
import type { InsertBlockPayload } from './index.js';
|
|
3
3
|
export declare const INSERT_BLOCK_COMMAND: LexicalCommand<InsertBlockPayload>;
|
|
4
4
|
export declare const INSERT_INLINE_BLOCK_COMMAND: LexicalCommand<Partial<InsertBlockPayload>>;
|
|
5
|
-
export declare const OPEN_INLINE_BLOCK_DRAWER_COMMAND: LexicalCommand<{
|
|
6
|
-
fields: Partial<InsertBlockPayload>;
|
|
7
|
-
nodeKey?: string;
|
|
8
|
-
}>;
|
|
9
5
|
//# sourceMappingURL=commands.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../../../../src/features/blocks/client/plugin/commands.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAI7C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAEpD,eAAO,MAAM,oBAAoB,EAAE,cAAc,CAAC,kBAAkB,CAC7B,CAAA;AAEvC,eAAO,MAAM,2BAA2B,EAAE,cAAc,CAAC,OAAO,CAAC,kBAAkB,CAAC,CACtC,CAAA
|
|
1
|
+
{"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../../../../src/features/blocks/client/plugin/commands.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAI7C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAEpD,eAAO,MAAM,oBAAoB,EAAE,cAAc,CAAC,kBAAkB,CAC7B,CAAA;AAEvC,eAAO,MAAM,2BAA2B,EAAE,cAAc,CAAC,OAAO,CAAC,kBAAkB,CAAC,CACtC,CAAA"}
|
|
@@ -3,5 +3,4 @@
|
|
|
3
3
|
import { createCommand } from 'lexical';
|
|
4
4
|
export const INSERT_BLOCK_COMMAND = createCommand('INSERT_BLOCK_COMMAND');
|
|
5
5
|
export const INSERT_INLINE_BLOCK_COMMAND = createCommand('INSERT_INLINE_BLOCK_COMMAND');
|
|
6
|
-
export const OPEN_INLINE_BLOCK_DRAWER_COMMAND = createCommand('OPEN_INLINE_BLOCK_DRAWER_COMMAND');
|
|
7
6
|
//# sourceMappingURL=commands.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commands.js","names":["createCommand","INSERT_BLOCK_COMMAND","INSERT_INLINE_BLOCK_COMMAND"
|
|
1
|
+
{"version":3,"file":"commands.js","names":["createCommand","INSERT_BLOCK_COMMAND","INSERT_INLINE_BLOCK_COMMAND"],"sources":["../../../../../src/features/blocks/client/plugin/commands.ts"],"sourcesContent":["'use client'\nimport type { LexicalCommand } from 'lexical'\n\nimport { createCommand } from 'lexical'\n\nimport type { InsertBlockPayload } from './index.js'\n\nexport const INSERT_BLOCK_COMMAND: LexicalCommand<InsertBlockPayload> =\n createCommand('INSERT_BLOCK_COMMAND')\n\nexport const INSERT_INLINE_BLOCK_COMMAND: LexicalCommand<Partial<InsertBlockPayload>> =\n createCommand('INSERT_INLINE_BLOCK_COMMAND')\n"],"mappings":"AAAA;;AAGA,SAASA,aAAa,QAAQ;AAI9B,OAAO,MAAMC,oBAAA,GACXD,aAAA,CAAc;AAEhB,OAAO,MAAME,2BAAA,GACXF,aAAA,CAAc","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/features/blocks/client/plugin/index.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/features/blocks/client/plugin/index.tsx"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AAC9D,OAAO,KAAK,EAAe,qBAAqB,EAAE,MAAM,kCAAkC,CAAA;AAC1F,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAA;AAQ3D,MAAM,MAAM,kBAAkB,GAAG,qBAAqB,CAAA;AAEtD,eAAO,MAAM,YAAY,EAAE,eAAe,CAAC,wBAAwB,CAoFlE,CAAA"}
|