@payloadcms/richtext-lexical 3.68.0-internal-debug.35482da → 3.68.0-internal-debug.654e4ad
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/index.d.ts +1 -0
- package/dist/exports/client/index.d.ts.map +1 -1
- package/dist/exports/client/index.js +1 -0
- package/dist/exports/client/index.js.map +1 -1
- package/dist/exports/client/internal-client.d.ts +3 -0
- package/dist/exports/client/internal-client.d.ts.map +1 -0
- package/dist/exports/client/internal-client.js +4 -0
- package/dist/exports/client/internal-client.js.map +1 -0
- package/dist/exports/react/index.d.ts +1 -1
- package/dist/exports/react/index.d.ts.map +1 -1
- package/dist/exports/react/index.js.map +1 -1
- package/dist/features/blocks/client/component/index.js +2 -2
- package/dist/features/blocks/client/component/index.js.map +1 -1
- package/dist/features/blocks/client/componentInline/index.js +2 -2
- package/dist/features/blocks/client/componentInline/index.js.map +1 -1
- package/dist/features/blocks/server/nodes/BlocksNode.js.map +1 -1
- package/dist/features/blocks/server/nodes/InlineBlocksNode.js.map +1 -1
- package/dist/features/converters/lexicalToJSX/Component/index.d.ts +2 -14
- package/dist/features/converters/lexicalToJSX/Component/index.d.ts.map +1 -1
- package/dist/features/converters/lexicalToJSX/Component/index.js +4 -9
- package/dist/features/converters/lexicalToJSX/Component/index.js.map +1 -1
- package/dist/features/converters/lexicalToJSX/converter/index.d.ts +16 -1
- package/dist/features/converters/lexicalToJSX/converter/index.d.ts.map +1 -1
- package/dist/features/converters/lexicalToJSX/converter/index.js +87 -5
- package/dist/features/converters/lexicalToJSX/converter/index.js.map +1 -1
- package/dist/features/converters/lexicalToJSX/converter/types.d.ts +14 -10
- package/dist/features/converters/lexicalToJSX/converter/types.d.ts.map +1 -1
- package/dist/features/converters/lexicalToJSX/converter/types.js.map +1 -1
- package/dist/features/debug/jsxConverter/client/plugin/index.js +1 -1
- package/dist/features/debug/jsxConverter/client/plugin/index.js.map +1 -1
- package/dist/features/link/nodes/LinkNode.js.map +1 -1
- package/dist/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/index.js.map +1 -1
- package/dist/features/migrations/slateToLexical/nodes/unknownConvertedNode/index.js.map +1 -1
- package/dist/features/relationship/server/nodes/RelationshipNode.js.map +1 -1
- package/dist/features/upload/server/nodes/UploadNode.js.map +1 -1
- package/dist/field/Field.d.ts.map +1 -1
- package/dist/field/Field.js +37 -21
- package/dist/field/Field.js.map +1 -1
- package/dist/field/RichTextViewProvider.d.ts +83 -0
- package/dist/field/RichTextViewProvider.d.ts.map +1 -0
- package/dist/field/RichTextViewProvider.js +102 -0
- package/dist/field/RichTextViewProvider.js.map +1 -0
- package/dist/field/ViewSelector.d.ts +4 -0
- package/dist/field/ViewSelector.d.ts.map +1 -0
- package/dist/field/ViewSelector.js +90 -0
- package/dist/field/ViewSelector.js.map +1 -0
- package/dist/field/ViewSelector.scss +34 -0
- package/dist/field/index.d.ts +1 -0
- package/dist/field/index.d.ts.map +1 -1
- package/dist/field/index.js +41 -16
- package/dist/field/index.js.map +1 -1
- package/dist/field/index.scss +12 -0
- package/dist/field/rscEntry.d.ts +1 -1
- package/dist/field/rscEntry.d.ts.map +1 -1
- package/dist/field/rscEntry.js +13 -1
- package/dist/field/rscEntry.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/lexical/LexicalEditor.d.ts.map +1 -1
- package/dist/lexical/LexicalEditor.js +34 -28
- package/dist/lexical/LexicalEditor.js.map +1 -1
- package/dist/lexical/LexicalProvider.d.ts.map +1 -1
- package/dist/lexical/LexicalProvider.js +19 -11
- package/dist/lexical/LexicalProvider.js.map +1 -1
- package/dist/lexical/config/client/sanitize.d.ts +1 -1
- package/dist/lexical/config/client/sanitize.d.ts.map +1 -1
- package/dist/lexical/config/client/sanitize.js +3 -2
- package/dist/lexical/config/client/sanitize.js.map +1 -1
- package/dist/lexical/config/types.d.ts +4 -0
- package/dist/lexical/config/types.d.ts.map +1 -1
- package/dist/lexical/config/types.js +3 -1
- package/dist/lexical/config/types.js.map +1 -1
- package/dist/lexical/nodes/index.d.ts +12 -2
- package/dist/lexical/nodes/index.d.ts.map +1 -1
- package/dist/lexical/nodes/index.js +187 -2
- package/dist/lexical/nodes/index.js.map +1 -1
- package/dist/lexical/plugins/NodeViewOverridePlugin/index.d.ts +2 -0
- package/dist/lexical/plugins/NodeViewOverridePlugin/index.d.ts.map +1 -0
- package/dist/lexical/plugins/NodeViewOverridePlugin/index.js +31 -0
- package/dist/lexical/plugins/NodeViewOverridePlugin/index.js.map +1 -0
- package/dist/lexical/utils/point.js.map +1 -1
- package/dist/lexical/utils/rect.js.map +1 -1
- package/dist/types.d.ts +152 -2
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +55 -0
- package/dist/types.js.map +1 -1
- package/dist/utilities/fieldsDrawer/DrawerContent.js +2 -2
- package/dist/utilities/fieldsDrawer/DrawerContent.js.map +1 -1
- package/dist/utilities/generateImportMap.d.ts.map +1 -1
- package/dist/utilities/generateImportMap.js +1 -0
- package/dist/utilities/generateImportMap.js.map +1 -1
- package/dist/validate/hasText.d.ts +6 -1
- package/dist/validate/hasText.d.ts.map +1 -1
- package/dist/validate/hasText.js +10 -4
- package/dist/validate/hasText.js.map +1 -1
- package/package.json +13 -8
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsxDEV as _jsxDEV } from "react/jsx-dev-runtime";
|
|
3
|
+
import { ChevronIcon, Popup, PopupList } from '@payloadcms/ui';
|
|
4
|
+
import React from 'react';
|
|
5
|
+
import { useRichTextView } from './RichTextViewProvider.js';
|
|
6
|
+
import './ViewSelector.scss';
|
|
7
|
+
export function ViewSelector() {
|
|
8
|
+
const { currentView, setCurrentView, views } = useRichTextView();
|
|
9
|
+
// Don't show if no views or only default exists
|
|
10
|
+
if (!views || Object.keys(views).length === 0) {
|
|
11
|
+
return null;
|
|
12
|
+
}
|
|
13
|
+
const viewKeys = Object.keys(views);
|
|
14
|
+
const hasNonDefaultViews = viewKeys.some((key)=>key !== 'default');
|
|
15
|
+
// If only 'default' exists, no need to show selector
|
|
16
|
+
if (!hasNonDefaultViews) {
|
|
17
|
+
return null;
|
|
18
|
+
}
|
|
19
|
+
// Build list of available views
|
|
20
|
+
const allViews = [
|
|
21
|
+
'default',
|
|
22
|
+
...viewKeys.filter((key)=>key !== 'default')
|
|
23
|
+
];
|
|
24
|
+
const currentViewLabel = currentView.charAt(0).toUpperCase() + currentView.slice(1);
|
|
25
|
+
return /*#__PURE__*/ _jsxDEV("div", {
|
|
26
|
+
className: "lexical-view-selector",
|
|
27
|
+
children: /*#__PURE__*/ _jsxDEV(Popup, {
|
|
28
|
+
button: /*#__PURE__*/ _jsxDEV("button", {
|
|
29
|
+
className: "lexical-view-selector__button",
|
|
30
|
+
type: "button",
|
|
31
|
+
children: [
|
|
32
|
+
/*#__PURE__*/ _jsxDEV("span", {
|
|
33
|
+
className: "lexical-view-selector__label",
|
|
34
|
+
children: currentViewLabel
|
|
35
|
+
}, void 0, false, {
|
|
36
|
+
fileName: "src/field/ViewSelector.tsx",
|
|
37
|
+
lineNumber: 34,
|
|
38
|
+
columnNumber: 13
|
|
39
|
+
}, void 0),
|
|
40
|
+
/*#__PURE__*/ _jsxDEV(ChevronIcon, {
|
|
41
|
+
className: "lexical-view-selector__icon"
|
|
42
|
+
}, void 0, false, {
|
|
43
|
+
fileName: "src/field/ViewSelector.tsx",
|
|
44
|
+
lineNumber: 35,
|
|
45
|
+
columnNumber: 13
|
|
46
|
+
}, void 0)
|
|
47
|
+
]
|
|
48
|
+
}, void 0, true, {
|
|
49
|
+
fileName: "src/field/ViewSelector.tsx",
|
|
50
|
+
lineNumber: 33,
|
|
51
|
+
columnNumber: 11
|
|
52
|
+
}, void 0),
|
|
53
|
+
buttonType: "custom",
|
|
54
|
+
horizontalAlign: "left",
|
|
55
|
+
render: ({ close })=>/*#__PURE__*/ _jsxDEV(PopupList.ButtonGroup, {
|
|
56
|
+
children: allViews.map((viewName)=>{
|
|
57
|
+
const viewLabel = viewName.charAt(0).toUpperCase() + viewName.slice(1);
|
|
58
|
+
return /*#__PURE__*/ _jsxDEV(PopupList.Button, {
|
|
59
|
+
active: viewName === currentView,
|
|
60
|
+
disabled: viewName === currentView,
|
|
61
|
+
onClick: ()=>{
|
|
62
|
+
setCurrentView?.(viewName);
|
|
63
|
+
close();
|
|
64
|
+
},
|
|
65
|
+
children: viewLabel
|
|
66
|
+
}, viewName, false, {
|
|
67
|
+
fileName: "src/field/ViewSelector.tsx",
|
|
68
|
+
lineNumber: 46,
|
|
69
|
+
columnNumber: 17
|
|
70
|
+
}, void 0);
|
|
71
|
+
})
|
|
72
|
+
}, void 0, false, {
|
|
73
|
+
fileName: "src/field/ViewSelector.tsx",
|
|
74
|
+
lineNumber: 41,
|
|
75
|
+
columnNumber: 11
|
|
76
|
+
}, void 0),
|
|
77
|
+
size: "large"
|
|
78
|
+
}, void 0, false, {
|
|
79
|
+
fileName: "src/field/ViewSelector.tsx",
|
|
80
|
+
lineNumber: 31,
|
|
81
|
+
columnNumber: 7
|
|
82
|
+
}, this)
|
|
83
|
+
}, void 0, false, {
|
|
84
|
+
fileName: "src/field/ViewSelector.tsx",
|
|
85
|
+
lineNumber: 30,
|
|
86
|
+
columnNumber: 5
|
|
87
|
+
}, this);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
//# sourceMappingURL=ViewSelector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/field/ViewSelector.tsx"],"sourcesContent":["'use client'\nimport { ChevronIcon, Popup, PopupList } from '@payloadcms/ui'\nimport React from 'react'\n\nimport { useRichTextView } from './RichTextViewProvider.js'\nimport './ViewSelector.scss'\n\nexport function ViewSelector(): null | React.ReactElement {\n const { currentView, setCurrentView, views } = useRichTextView()\n\n // Don't show if no views or only default exists\n if (!views || Object.keys(views).length === 0) {\n return null\n }\n\n const viewKeys = Object.keys(views)\n const hasNonDefaultViews = viewKeys.some((key) => key !== 'default')\n\n // If only 'default' exists, no need to show selector\n if (!hasNonDefaultViews) {\n return null\n }\n\n // Build list of available views\n const allViews = ['default', ...viewKeys.filter((key) => key !== 'default')]\n\n const currentViewLabel = currentView.charAt(0).toUpperCase() + currentView.slice(1)\n\n return (\n <div className=\"lexical-view-selector\">\n <Popup\n button={\n <button className=\"lexical-view-selector__button\" type=\"button\">\n <span className=\"lexical-view-selector__label\">{currentViewLabel}</span>\n <ChevronIcon className=\"lexical-view-selector__icon\" />\n </button>\n }\n buttonType=\"custom\"\n horizontalAlign=\"left\"\n render={({ close }) => (\n <PopupList.ButtonGroup>\n {allViews.map((viewName) => {\n const viewLabel = viewName.charAt(0).toUpperCase() + viewName.slice(1)\n\n return (\n <PopupList.Button\n active={viewName === currentView}\n disabled={viewName === currentView}\n key={viewName}\n onClick={() => {\n setCurrentView?.(viewName)\n close()\n }}\n >\n {viewLabel}\n </PopupList.Button>\n )\n })}\n </PopupList.ButtonGroup>\n )}\n size=\"large\"\n />\n </div>\n )\n}\n"],"names":["ChevronIcon","Popup","PopupList","React","useRichTextView","ViewSelector","currentView","setCurrentView","views","Object","keys","length","viewKeys","hasNonDefaultViews","some","key","allViews","filter","currentViewLabel","charAt","toUpperCase","slice","div","className","button","type","span","buttonType","horizontalAlign","render","close","ButtonGroup","map","viewName","viewLabel","Button","active","disabled","onClick","size"],"mappings":"AAAA;;AACA,SAASA,WAAW,EAAEC,KAAK,EAAEC,SAAS,QAAQ,iBAAgB;AAC9D,OAAOC,WAAW,QAAO;AAEzB,SAASC,eAAe,QAAQ,4BAA2B;AAC3D,OAAO,sBAAqB;AAE5B,OAAO,SAASC;IACd,MAAM,EAAEC,WAAW,EAAEC,cAAc,EAAEC,KAAK,EAAE,GAAGJ;IAE/C,gDAAgD;IAChD,IAAI,CAACI,SAASC,OAAOC,IAAI,CAACF,OAAOG,MAAM,KAAK,GAAG;QAC7C,OAAO;IACT;IAEA,MAAMC,WAAWH,OAAOC,IAAI,CAACF;IAC7B,MAAMK,qBAAqBD,SAASE,IAAI,CAAC,CAACC,MAAQA,QAAQ;IAE1D,qDAAqD;IACrD,IAAI,CAACF,oBAAoB;QACvB,OAAO;IACT;IAEA,gCAAgC;IAChC,MAAMG,WAAW;QAAC;WAAcJ,SAASK,MAAM,CAAC,CAACF,MAAQA,QAAQ;KAAW;IAE5E,MAAMG,mBAAmBZ,YAAYa,MAAM,CAAC,GAAGC,WAAW,KAAKd,YAAYe,KAAK,CAAC;IAEjF,qBACE,QAACC;QAAIC,WAAU;kBACb,cAAA,QAACtB;YACCuB,sBACE,QAACA;gBAAOD,WAAU;gBAAgCE,MAAK;;kCACrD,QAACC;wBAAKH,WAAU;kCAAgCL;;;;;;kCAChD,QAAClB;wBAAYuB,WAAU;;;;;;;;;;;;YAG3BI,YAAW;YACXC,iBAAgB;YAChBC,QAAQ,CAAC,EAAEC,KAAK,EAAE,iBAChB,QAAC5B,UAAU6B,WAAW;8BACnBf,SAASgB,GAAG,CAAC,CAACC;wBACb,MAAMC,YAAYD,SAASd,MAAM,CAAC,GAAGC,WAAW,KAAKa,SAASZ,KAAK,CAAC;wBAEpE,qBACE,QAACnB,UAAUiC,MAAM;4BACfC,QAAQH,aAAa3B;4BACrB+B,UAAUJ,aAAa3B;4BAEvBgC,SAAS;gCACP/B,iBAAiB0B;gCACjBH;4BACF;sCAECI;2BANID;;;;;oBASX;;;;;;YAGJM,MAAK;;;;;;;;;;;AAIb"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
@import '~@payloadcms/ui/scss';
|
|
2
|
+
|
|
3
|
+
.lexical-view-selector {
|
|
4
|
+
display: inline-flex;
|
|
5
|
+
margin-left: var(--spacing-xs);
|
|
6
|
+
vertical-align: middle;
|
|
7
|
+
|
|
8
|
+
&__button {
|
|
9
|
+
all: unset;
|
|
10
|
+
display: inline-flex;
|
|
11
|
+
align-items: center;
|
|
12
|
+
gap: 4px;
|
|
13
|
+
padding: 2px 6px;
|
|
14
|
+
background: transparent;
|
|
15
|
+
border-radius: var(--border-radius-s);
|
|
16
|
+
cursor: pointer;
|
|
17
|
+
color: var(--theme-elevation-600);
|
|
18
|
+
box-sizing: border-box;
|
|
19
|
+
|
|
20
|
+
&:hover {
|
|
21
|
+
background: var(--theme-elevation-100);
|
|
22
|
+
color: var(--theme-elevation-800);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
&__label {
|
|
27
|
+
line-height: 1;
|
|
28
|
+
white-space: nowrap;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
&__icon {
|
|
32
|
+
flex-shrink: 0;
|
|
33
|
+
}
|
|
34
|
+
}
|
package/dist/field/index.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import type { LexicalRichTextFieldProps } from '../types.js';
|
|
3
3
|
export declare const RichTextField: React.FC<LexicalRichTextFieldProps>;
|
|
4
|
+
export declare const RichTextFieldImpl: React.FC<LexicalRichTextFieldProps>;
|
|
4
5
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/field/index.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/field/index.tsx"],"names":[],"mappings":"AAMA,OAAO,KAA8C,MAAM,OAAO,CAAA;AAIlE,OAAO,KAAK,EAAgC,yBAAyB,EAAE,MAAM,aAAa,CAAA;AAW1F,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,yBAAyB,CAM7D,CAAA;AAED,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC,yBAAyB,CAgFjE,CAAA"}
|
package/dist/field/index.js
CHANGED
|
@@ -1,19 +1,40 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { jsxDEV as _jsxDEV } from "react/jsx-dev-runtime";
|
|
3
|
+
import { createElement as _createElement } from "react";
|
|
3
4
|
import { ShimmerEffect, useConfig } from '@payloadcms/ui';
|
|
4
5
|
import React, { lazy, Suspense, useEffect, useState } from 'react';
|
|
5
6
|
import { defaultEditorLexicalConfig } from '../lexical/config/client/default.js';
|
|
6
7
|
import { loadClientFeatures } from '../lexical/config/client/loader.js';
|
|
7
8
|
import { sanitizeClientEditorConfig } from '../lexical/config/client/sanitize.js';
|
|
9
|
+
import { RichTextViewProvider, useRichTextView } from './RichTextViewProvider.js';
|
|
8
10
|
const RichTextEditor = /*#__PURE__*/ lazy(()=>import('./Field.js').then((module)=>({
|
|
9
11
|
default: module.RichText
|
|
10
12
|
})));
|
|
11
13
|
export const RichTextField = (props)=>{
|
|
12
|
-
|
|
14
|
+
return /*#__PURE__*/ _jsxDEV(RichTextViewProvider, {
|
|
15
|
+
views: props.views,
|
|
16
|
+
children: /*#__PURE__*/ _jsxDEV(RichTextFieldImpl, {
|
|
17
|
+
...props
|
|
18
|
+
}, void 0, false, {
|
|
19
|
+
fileName: "src/field/index.tsx",
|
|
20
|
+
lineNumber: 25,
|
|
21
|
+
columnNumber: 7
|
|
22
|
+
}, this)
|
|
23
|
+
}, void 0, false, {
|
|
24
|
+
fileName: "src/field/index.tsx",
|
|
25
|
+
lineNumber: 24,
|
|
26
|
+
columnNumber: 5
|
|
27
|
+
}, this);
|
|
28
|
+
};
|
|
29
|
+
export const RichTextFieldImpl = (props)=>{
|
|
30
|
+
const { admin: _admin = {}, clientFeatures, featureClientImportMap = {}, featureClientSchemaMap, field, lexicalEditorConfig: _lexicalEditorConfig = defaultEditorLexicalConfig, schemaPath, views } = props;
|
|
31
|
+
const { currentView } = useRichTextView();
|
|
32
|
+
const currentViewAdminConfig = views?.[currentView]?.admin ?? _admin;
|
|
33
|
+
const currentViewLexicalEditorConfig = views?.[currentView]?.lexical ?? _lexicalEditorConfig;
|
|
13
34
|
const { config } = useConfig();
|
|
14
35
|
const [finalSanitizedEditorConfig, setFinalSanitizedEditorConfig] = useState(null);
|
|
15
36
|
useEffect(()=>{
|
|
16
|
-
if (finalSanitizedEditorConfig) {
|
|
37
|
+
if (finalSanitizedEditorConfig && finalSanitizedEditorConfig.view === currentView) {
|
|
17
38
|
return;
|
|
18
39
|
}
|
|
19
40
|
const featureProvidersLocal = [];
|
|
@@ -32,20 +53,21 @@ export const RichTextField = (props)=>{
|
|
|
32
53
|
schemaPath: schemaPath ?? field.name,
|
|
33
54
|
unSanitizedEditorConfig: {
|
|
34
55
|
features: featureProvidersLocal,
|
|
35
|
-
lexical:
|
|
56
|
+
lexical: currentViewLexicalEditorConfig
|
|
36
57
|
}
|
|
37
58
|
});
|
|
38
|
-
setFinalSanitizedEditorConfig(sanitizeClientEditorConfig(resolvedClientFeatures,
|
|
59
|
+
setFinalSanitizedEditorConfig(sanitizeClientEditorConfig(resolvedClientFeatures, currentViewLexicalEditorConfig, currentViewAdminConfig, currentView));
|
|
39
60
|
}, [
|
|
40
|
-
|
|
61
|
+
currentViewAdminConfig,
|
|
41
62
|
clientFeatures,
|
|
42
63
|
config,
|
|
43
64
|
featureClientImportMap,
|
|
44
65
|
featureClientSchemaMap,
|
|
45
66
|
field,
|
|
46
67
|
finalSanitizedEditorConfig,
|
|
47
|
-
|
|
48
|
-
schemaPath
|
|
68
|
+
currentViewLexicalEditorConfig,
|
|
69
|
+
schemaPath,
|
|
70
|
+
currentView
|
|
49
71
|
]);
|
|
50
72
|
// TODO: Optimize this and use useMemo for this in the future. This might break sub-richtext-blocks from the blocks feature. Need to investigate
|
|
51
73
|
return /*#__PURE__*/ _jsxDEV(Suspense, {
|
|
@@ -53,20 +75,23 @@ export const RichTextField = (props)=>{
|
|
|
53
75
|
height: "35vh"
|
|
54
76
|
}, void 0, false, {
|
|
55
77
|
fileName: "src/field/index.tsx",
|
|
56
|
-
lineNumber:
|
|
78
|
+
lineNumber: 100,
|
|
57
79
|
columnNumber: 25
|
|
58
80
|
}, void 0),
|
|
59
|
-
children: finalSanitizedEditorConfig && /*#__PURE__*/
|
|
81
|
+
children: finalSanitizedEditorConfig && /*#__PURE__*/ _createElement(RichTextEditor, {
|
|
60
82
|
...props,
|
|
61
|
-
editorConfig: finalSanitizedEditorConfig
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
83
|
+
editorConfig: finalSanitizedEditorConfig,
|
|
84
|
+
key: finalSanitizedEditorConfig.view,
|
|
85
|
+
__source: {
|
|
86
|
+
fileName: "src/field/index.tsx",
|
|
87
|
+
lineNumber: 102,
|
|
88
|
+
columnNumber: 9
|
|
89
|
+
},
|
|
90
|
+
__self: this
|
|
91
|
+
})
|
|
67
92
|
}, void 0, false, {
|
|
68
93
|
fileName: "src/field/index.tsx",
|
|
69
|
-
lineNumber:
|
|
94
|
+
lineNumber: 100,
|
|
70
95
|
columnNumber: 5
|
|
71
96
|
}, this);
|
|
72
97
|
};
|
package/dist/field/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/field/index.tsx"],"sourcesContent":["'use client'\n\nimport type { RichTextFieldClient } from 'payload'\n\nimport { ShimmerEffect, useConfig } from '@payloadcms/ui'\nimport React, { lazy, Suspense, useEffect, useState } from 'react'\n\nimport type { FeatureProviderClient } from '../features/typesClient.js'\nimport type { SanitizedClientEditorConfig } from '../lexical/config/types.js'\nimport type { LexicalRichTextFieldProps } from '../types.js'\n\nimport { defaultEditorLexicalConfig } from '../lexical/config/client/default.js'\nimport { loadClientFeatures } from '../lexical/config/client/loader.js'\nimport { sanitizeClientEditorConfig } from '../lexical/config/client/sanitize.js'\n\nconst RichTextEditor = lazy(() =>\n import('./Field.js').then((module) => ({ default: module.RichText })),\n)\n\nexport const RichTextField: React.FC<LexicalRichTextFieldProps> = (props) => {\n const {\n admin = {},\n clientFeatures,\n featureClientImportMap = {},\n featureClientSchemaMap,\n field,\n lexicalEditorConfig = defaultEditorLexicalConfig,\n schemaPath,\n } = props\n\n const { config } = useConfig()\n\n const [finalSanitizedEditorConfig, setFinalSanitizedEditorConfig] =\n useState<null | SanitizedClientEditorConfig>(null)\n\n useEffect(() => {\n if (finalSanitizedEditorConfig) {\n return\n }\n\n const featureProvidersLocal: FeatureProviderClient<any, any>[] = []\n for (const clientFeature of Object.values(clientFeatures)) {\n if (!clientFeature.clientFeatureProvider) {\n continue\n }\n featureProvidersLocal.push(\n clientFeature.clientFeatureProvider(clientFeature.clientFeatureProps),\n ) // Execute the clientFeatureProvider function here, as the server cannot execute functions imported from use client files\n }\n\n const resolvedClientFeatures = loadClientFeatures({\n config,\n featureClientImportMap,\n featureClientSchemaMap,\n field: field as RichTextFieldClient,\n schemaPath: schemaPath ?? field.name,\n unSanitizedEditorConfig: {\n features: featureProvidersLocal,\n lexical:
|
|
1
|
+
{"version":3,"sources":["../../src/field/index.tsx"],"sourcesContent":["'use client'\n\nimport type { EditorConfig as LexicalEditorConfig } from 'lexical'\nimport type { RichTextFieldClient } from 'payload'\n\nimport { ShimmerEffect, useConfig } from '@payloadcms/ui'\nimport React, { lazy, Suspense, useEffect, useState } from 'react'\n\nimport type { FeatureProviderClient } from '../features/typesClient.js'\nimport type { SanitizedClientEditorConfig } from '../lexical/config/types.js'\nimport type { LexicalFieldAdminClientProps, LexicalRichTextFieldProps } from '../types.js'\n\nimport { defaultEditorLexicalConfig } from '../lexical/config/client/default.js'\nimport { loadClientFeatures } from '../lexical/config/client/loader.js'\nimport { sanitizeClientEditorConfig } from '../lexical/config/client/sanitize.js'\nimport { RichTextViewProvider, useRichTextView } from './RichTextViewProvider.js'\n\nconst RichTextEditor = lazy(() =>\n import('./Field.js').then((module) => ({ default: module.RichText })),\n)\n\nexport const RichTextField: React.FC<LexicalRichTextFieldProps> = (props) => {\n return (\n <RichTextViewProvider views={props.views}>\n <RichTextFieldImpl {...props} />\n </RichTextViewProvider>\n )\n}\n\nexport const RichTextFieldImpl: React.FC<LexicalRichTextFieldProps> = (props) => {\n const {\n admin: _admin = {},\n clientFeatures,\n featureClientImportMap = {},\n featureClientSchemaMap,\n field,\n lexicalEditorConfig: _lexicalEditorConfig = defaultEditorLexicalConfig,\n schemaPath,\n views,\n } = props\n const { currentView } = useRichTextView()\n const currentViewAdminConfig: LexicalFieldAdminClientProps = views?.[currentView]?.admin ?? _admin\n const currentViewLexicalEditorConfig: LexicalEditorConfig =\n views?.[currentView]?.lexical ?? _lexicalEditorConfig\n\n const { config } = useConfig()\n\n const [finalSanitizedEditorConfig, setFinalSanitizedEditorConfig] =\n useState<null | SanitizedClientEditorConfig>(null)\n\n useEffect(() => {\n if (finalSanitizedEditorConfig && finalSanitizedEditorConfig.view === currentView) {\n return\n }\n\n const featureProvidersLocal: FeatureProviderClient<any, any>[] = []\n for (const clientFeature of Object.values(clientFeatures)) {\n if (!clientFeature.clientFeatureProvider) {\n continue\n }\n featureProvidersLocal.push(\n clientFeature.clientFeatureProvider(clientFeature.clientFeatureProps),\n ) // Execute the clientFeatureProvider function here, as the server cannot execute functions imported from use client files\n }\n\n const resolvedClientFeatures = loadClientFeatures({\n config,\n featureClientImportMap,\n featureClientSchemaMap,\n field: field as RichTextFieldClient,\n schemaPath: schemaPath ?? field.name,\n unSanitizedEditorConfig: {\n features: featureProvidersLocal,\n lexical: currentViewLexicalEditorConfig,\n },\n })\n\n setFinalSanitizedEditorConfig(\n sanitizeClientEditorConfig(\n resolvedClientFeatures,\n currentViewLexicalEditorConfig,\n currentViewAdminConfig,\n currentView,\n ),\n )\n }, [\n currentViewAdminConfig,\n clientFeatures,\n config,\n featureClientImportMap,\n featureClientSchemaMap,\n field,\n finalSanitizedEditorConfig,\n currentViewLexicalEditorConfig,\n schemaPath,\n currentView,\n ]) // TODO: Optimize this and use useMemo for this in the future. This might break sub-richtext-blocks from the blocks feature. Need to investigate\n\n return (\n <Suspense fallback={<ShimmerEffect height=\"35vh\" />}>\n {finalSanitizedEditorConfig && (\n <RichTextEditor\n {...props}\n editorConfig={finalSanitizedEditorConfig}\n key={finalSanitizedEditorConfig.view}\n />\n )}\n </Suspense>\n )\n}\n"],"names":["ShimmerEffect","useConfig","React","lazy","Suspense","useEffect","useState","defaultEditorLexicalConfig","loadClientFeatures","sanitizeClientEditorConfig","RichTextViewProvider","useRichTextView","RichTextEditor","then","module","default","RichText","RichTextField","props","views","RichTextFieldImpl","admin","_admin","clientFeatures","featureClientImportMap","featureClientSchemaMap","field","lexicalEditorConfig","_lexicalEditorConfig","schemaPath","currentView","currentViewAdminConfig","currentViewLexicalEditorConfig","lexical","config","finalSanitizedEditorConfig","setFinalSanitizedEditorConfig","view","featureProvidersLocal","clientFeature","Object","values","clientFeatureProvider","push","clientFeatureProps","resolvedClientFeatures","name","unSanitizedEditorConfig","features","fallback","height","editorConfig","key"],"mappings":"AAAA;;;AAKA,SAASA,aAAa,EAAEC,SAAS,QAAQ,iBAAgB;AACzD,OAAOC,SAASC,IAAI,EAAEC,QAAQ,EAAEC,SAAS,EAAEC,QAAQ,QAAQ,QAAO;AAMlE,SAASC,0BAA0B,QAAQ,sCAAqC;AAChF,SAASC,kBAAkB,QAAQ,qCAAoC;AACvE,SAASC,0BAA0B,QAAQ,uCAAsC;AACjF,SAASC,oBAAoB,EAAEC,eAAe,QAAQ,4BAA2B;AAEjF,MAAMC,+BAAiBT,KAAK,IAC1B,MAAM,CAAC,cAAcU,IAAI,CAAC,CAACC,SAAY,CAAA;YAAEC,SAASD,OAAOE,QAAQ;QAAC,CAAA;AAGpE,OAAO,MAAMC,gBAAqD,CAACC;IACjE,qBACE,QAACR;QAAqBS,OAAOD,MAAMC,KAAK;kBACtC,cAAA,QAACC;YAAmB,GAAGF,KAAK;;;;;;;;;;;AAGlC,EAAC;AAED,OAAO,MAAME,oBAAyD,CAACF;IACrE,MAAM,EACJG,OAAOC,SAAS,CAAC,CAAC,EAClBC,cAAc,EACdC,yBAAyB,CAAC,CAAC,EAC3BC,sBAAsB,EACtBC,KAAK,EACLC,qBAAqBC,uBAAuBrB,0BAA0B,EACtEsB,UAAU,EACVV,KAAK,EACN,GAAGD;IACJ,MAAM,EAAEY,WAAW,EAAE,GAAGnB;IACxB,MAAMoB,yBAAuDZ,OAAO,CAACW,YAAY,EAAET,SAASC;IAC5F,MAAMU,iCACJb,OAAO,CAACW,YAAY,EAAEG,WAAWL;IAEnC,MAAM,EAAEM,MAAM,EAAE,GAAGjC;IAEnB,MAAM,CAACkC,4BAA4BC,8BAA8B,GAC/D9B,SAA6C;IAE/CD,UAAU;QACR,IAAI8B,8BAA8BA,2BAA2BE,IAAI,KAAKP,aAAa;YACjF;QACF;QAEA,MAAMQ,wBAA2D,EAAE;QACnE,KAAK,MAAMC,iBAAiBC,OAAOC,MAAM,CAAClB,gBAAiB;YACzD,IAAI,CAACgB,cAAcG,qBAAqB,EAAE;gBACxC;YACF;YACAJ,sBAAsBK,IAAI,CACxBJ,cAAcG,qBAAqB,CAACH,cAAcK,kBAAkB;QAExE;QADI,yHAAyH;QAG7H,MAAMC,yBAAyBrC,mBAAmB;YAChD0B;YACAV;YACAC;YACAC,OAAOA;YACPG,YAAYA,cAAcH,MAAMoB,IAAI;YACpCC,yBAAyB;gBACvBC,UAAUV;gBACVL,SAASD;YACX;QACF;QAEAI,8BACE3B,2BACEoC,wBACAb,gCACAD,wBACAD;IAGN,GAAG;QACDC;QACAR;QACAW;QACAV;QACAC;QACAC;QACAS;QACAH;QACAH;QACAC;KACD;IAAE,gJAAgJ;IAEnJ,qBACE,QAAC1B;QAAS6C,wBAAU,QAACjD;YAAckD,QAAO;;;;;;kBACvCf,4CACC,eAACvB;YACE,GAAGM,KAAK;YACTiC,cAAchB;YACdiB,KAAKjB,2BAA2BE,IAAI;;;;;;;;;;;;;AAK9C,EAAC"}
|
package/dist/field/index.scss
CHANGED
|
@@ -15,6 +15,18 @@
|
|
|
15
15
|
}
|
|
16
16
|
}
|
|
17
17
|
|
|
18
|
+
&__label-row {
|
|
19
|
+
display: flex;
|
|
20
|
+
align-items: center;
|
|
21
|
+
margin-bottom: calc(var(--base) / 4);
|
|
22
|
+
gap: calc(var(--base) / 3);
|
|
23
|
+
|
|
24
|
+
label.field-label:not(.unstyled) {
|
|
25
|
+
margin-right: unset;
|
|
26
|
+
padding-bottom: unset;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
|
|
18
30
|
&__wrap {
|
|
19
31
|
width: 100%;
|
|
20
32
|
position: relative;
|
package/dist/field/rscEntry.d.ts
CHANGED
|
@@ -4,5 +4,5 @@ import type { SanitizedServerEditorConfig } from '../lexical/config/types.js';
|
|
|
4
4
|
import type { LexicalEditorProps } from '../types.js';
|
|
5
5
|
export declare const RscEntryLexicalField: React.FC<{
|
|
6
6
|
sanitizedEditorConfig: SanitizedServerEditorConfig;
|
|
7
|
-
} & ClientComponentProps & Pick<FieldPaths, 'path'> & Pick<LexicalEditorProps, 'admin'> & ServerComponentProps>;
|
|
7
|
+
} & ClientComponentProps & Pick<FieldPaths, 'path'> & Pick<LexicalEditorProps, 'admin' | 'views'> & ServerComponentProps>;
|
|
8
8
|
//# sourceMappingURL=rscEntry.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rscEntry.d.ts","sourceRoot":"","sources":["../../src/field/rscEntry.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,oBAAoB,EACpB,UAAU,EAGV,oBAAoB,EACrB,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"rscEntry.d.ts","sourceRoot":"","sources":["../../src/field/rscEntry.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,oBAAoB,EACpB,UAAU,EAGV,oBAAoB,EACrB,MAAM,SAAS,CAAA;AAKhB,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAA;AAC7E,OAAO,KAAK,EACV,kBAAkB,EAInB,MAAM,aAAa,CAAA;AAOpB,eAAO,MAAM,oBAAoB,EAAE,KAAK,CAAC,EAAE,CACzC;IACE,qBAAqB,EAAE,2BAA2B,CAAA;CACnD,GAAG,oBAAoB,GACtB,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,GACxB,IAAI,CAAC,kBAAkB,EAAE,OAAO,GAAG,OAAO,CAAC,GAC3C,oBAAoB,CAyGvB,CAAA"}
|
package/dist/field/rscEntry.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { jsxDEV as _jsxDEV } from "react/jsx-dev-runtime";
|
|
2
2
|
import { getTranslation } from '@payloadcms/translations';
|
|
3
3
|
import { renderField } from '@payloadcms/ui/forms/renderField';
|
|
4
|
+
import { getFromImportMap } from 'payload/shared';
|
|
4
5
|
import React from 'react';
|
|
5
6
|
// eslint-disable-next-line payload/no-imports-from-exports-dir
|
|
6
7
|
import { RichTextField } from '../exports/client/index.js';
|
|
@@ -76,6 +77,17 @@ export const RscEntryLexicalField = async (args)=>{
|
|
|
76
77
|
renderedBlocks: args.renderedBlocks,
|
|
77
78
|
schemaPath
|
|
78
79
|
};
|
|
80
|
+
if (args?.views) {
|
|
81
|
+
const viewMap = getFromImportMap({
|
|
82
|
+
importMap: args.payload.importMap,
|
|
83
|
+
PayloadComponent: args.views,
|
|
84
|
+
schemaPath: 'lexical-viewMap',
|
|
85
|
+
silent: true
|
|
86
|
+
});
|
|
87
|
+
if (viewMap) {
|
|
88
|
+
props.views = viewMap;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
79
91
|
if (Object.keys(admin).length) {
|
|
80
92
|
props.admin = admin;
|
|
81
93
|
}
|
|
@@ -91,7 +103,7 @@ export const RscEntryLexicalField = async (args)=>{
|
|
|
91
103
|
...props
|
|
92
104
|
}, void 0, false, {
|
|
93
105
|
fileName: "src/field/rscEntry.tsx",
|
|
94
|
-
lineNumber:
|
|
106
|
+
lineNumber: 138,
|
|
95
107
|
columnNumber: 10
|
|
96
108
|
}, this);
|
|
97
109
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/field/rscEntry.tsx"],"sourcesContent":["import type { SerializedLexicalNode } from 'lexical'\nimport type {\n ClientComponentProps,\n FieldPaths,\n RichTextFieldClient,\n RichTextField as RichTextFieldType,\n ServerComponentProps,\n} from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport { renderField } from '@payloadcms/ui/forms/renderField'\nimport React from 'react'\n\nimport type { SanitizedServerEditorConfig } from '../lexical/config/types.js'\nimport type {\n LexicalEditorProps,\n LexicalFieldAdminClientProps,\n LexicalRichTextFieldProps,\n} from '../types.js'\n\n// eslint-disable-next-line payload/no-imports-from-exports-dir\nimport { RichTextField } from '../exports/client/index.js'\nimport { buildInitialState } from '../utilities/buildInitialState.js'\nimport { initLexicalFeatures } from '../utilities/initLexicalFeatures.js'\n\nexport const RscEntryLexicalField: React.FC<\n {\n sanitizedEditorConfig: SanitizedServerEditorConfig\n } & ClientComponentProps &\n Pick<FieldPaths, 'path'> &\n Pick<LexicalEditorProps, 'admin'> &\n ServerComponentProps\n> = async (args) => {\n const field: RichTextFieldType = args.field as RichTextFieldType\n const path = args.path ?? (args.clientField as RichTextFieldClient).name\n const schemaPath = args.schemaPath ?? path\n\n const disabled = args?.readOnly || field?.admin?.readOnly\n\n if (!(args?.clientField as RichTextFieldClient)?.name) {\n throw new Error('Initialized lexical RSC field without a field name')\n }\n\n const { clientFeatures, featureClientImportMap, featureClientSchemaMap } = initLexicalFeatures({\n clientFieldSchemaMap: args.clientFieldSchemaMap,\n fieldSchemaMap: args.fieldSchemaMap,\n i18n: args.i18n,\n path,\n payload: args.payload,\n sanitizedEditorConfig: args.sanitizedEditorConfig,\n schemaPath,\n })\n\n let initialLexicalFormState = {}\n if (args.siblingData?.[field.name]?.root?.children?.length) {\n initialLexicalFormState = await buildInitialState({\n context: {\n id: args.id,\n clientFieldSchemaMap: args.clientFieldSchemaMap,\n collectionSlug: args.collectionSlug,\n disabled,\n documentData: args.data,\n field,\n fieldSchemaMap: args.fieldSchemaMap,\n lexicalFieldSchemaPath: schemaPath,\n operation: args.operation,\n permissions: args.permissions,\n preferences: args.preferences,\n renderFieldFn: renderField,\n req: args.req,\n },\n nodeData: args.siblingData?.[field.name]?.root?.children as SerializedLexicalNode[],\n })\n }\n\n const placeholderFromArgs = args.admin?.placeholder\n const placeholder = placeholderFromArgs\n ? getTranslation(placeholderFromArgs, args.i18n)\n : undefined\n\n const admin: LexicalFieldAdminClientProps = {}\n if (placeholder) {\n admin.placeholder = placeholder\n }\n if (args.admin?.hideGutter) {\n admin.hideGutter = true\n }\n if (args.admin?.hideInsertParagraphAtEnd) {\n admin.hideInsertParagraphAtEnd = true\n }\n if (args.admin?.hideAddBlockButton) {\n admin.hideAddBlockButton = true\n }\n if (args.admin?.hideDraggableBlockElement) {\n admin.hideDraggableBlockElement = true\n }\n\n const props: LexicalRichTextFieldProps = {\n clientFeatures,\n featureClientSchemaMap, // TODO: Does client need this? Why cant this just live in the server\n field: args.clientField as RichTextFieldClient,\n forceRender: args.forceRender,\n initialLexicalFormState,\n lexicalEditorConfig: args.sanitizedEditorConfig.lexical,\n path,\n permissions: args.permissions,\n readOnly: args.readOnly,\n renderedBlocks: args.renderedBlocks,\n schemaPath,\n }\n if (Object.keys(admin).length) {\n props.admin = admin\n }\n if (Object.keys(featureClientImportMap).length) {\n props.featureClientImportMap = featureClientImportMap\n }\n\n for (const key in props) {\n if (props[key as keyof LexicalRichTextFieldProps] === undefined) {\n delete props[key as keyof LexicalRichTextFieldProps]\n }\n }\n\n return <RichTextField {...props} />\n}\n"],"names":["getTranslation","renderField","React","RichTextField","buildInitialState","initLexicalFeatures","RscEntryLexicalField","args","field","path","clientField","name","schemaPath","disabled","readOnly","admin","Error","clientFeatures","featureClientImportMap","featureClientSchemaMap","clientFieldSchemaMap","fieldSchemaMap","i18n","payload","sanitizedEditorConfig","initialLexicalFormState","siblingData","root","children","length","context","id","collectionSlug","documentData","data","lexicalFieldSchemaPath","operation","permissions","preferences","renderFieldFn","req","nodeData","placeholderFromArgs","placeholder","undefined","hideGutter","hideInsertParagraphAtEnd","hideAddBlockButton","hideDraggableBlockElement","props","forceRender","lexicalEditorConfig","lexical","renderedBlocks","Object","keys","key"],"mappings":";AASA,SAASA,cAAc,QAAQ,2BAA0B;AACzD,SAASC,WAAW,QAAQ,mCAAkC;AAC9D,OAAOC,WAAW,QAAO;
|
|
1
|
+
{"version":3,"sources":["../../src/field/rscEntry.tsx"],"sourcesContent":["import type { SerializedLexicalNode } from 'lexical'\nimport type {\n ClientComponentProps,\n FieldPaths,\n RichTextFieldClient,\n RichTextField as RichTextFieldType,\n ServerComponentProps,\n} from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport { renderField } from '@payloadcms/ui/forms/renderField'\nimport { getFromImportMap } from 'payload/shared'\nimport React from 'react'\n\nimport type { SanitizedServerEditorConfig } from '../lexical/config/types.js'\nimport type {\n LexicalEditorProps,\n LexicalEditorViewMap,\n LexicalFieldAdminClientProps,\n LexicalRichTextFieldProps,\n} from '../types.js'\n\n// eslint-disable-next-line payload/no-imports-from-exports-dir\nimport { RichTextField } from '../exports/client/index.js'\nimport { buildInitialState } from '../utilities/buildInitialState.js'\nimport { initLexicalFeatures } from '../utilities/initLexicalFeatures.js'\n\nexport const RscEntryLexicalField: React.FC<\n {\n sanitizedEditorConfig: SanitizedServerEditorConfig\n } & ClientComponentProps &\n Pick<FieldPaths, 'path'> &\n Pick<LexicalEditorProps, 'admin' | 'views'> &\n ServerComponentProps\n> = async (args) => {\n const field: RichTextFieldType = args.field as RichTextFieldType\n const path = args.path ?? (args.clientField as RichTextFieldClient).name\n const schemaPath = args.schemaPath ?? path\n\n const disabled = args?.readOnly || field?.admin?.readOnly\n\n if (!(args?.clientField as RichTextFieldClient)?.name) {\n throw new Error('Initialized lexical RSC field without a field name')\n }\n\n const { clientFeatures, featureClientImportMap, featureClientSchemaMap } = initLexicalFeatures({\n clientFieldSchemaMap: args.clientFieldSchemaMap,\n fieldSchemaMap: args.fieldSchemaMap,\n i18n: args.i18n,\n path,\n payload: args.payload,\n sanitizedEditorConfig: args.sanitizedEditorConfig,\n schemaPath,\n })\n\n let initialLexicalFormState = {}\n if (args.siblingData?.[field.name]?.root?.children?.length) {\n initialLexicalFormState = await buildInitialState({\n context: {\n id: args.id,\n clientFieldSchemaMap: args.clientFieldSchemaMap,\n collectionSlug: args.collectionSlug,\n disabled,\n documentData: args.data,\n field,\n fieldSchemaMap: args.fieldSchemaMap,\n lexicalFieldSchemaPath: schemaPath,\n operation: args.operation,\n permissions: args.permissions,\n preferences: args.preferences,\n renderFieldFn: renderField,\n req: args.req,\n },\n nodeData: args.siblingData?.[field.name]?.root?.children as SerializedLexicalNode[],\n })\n }\n\n const placeholderFromArgs = args.admin?.placeholder\n const placeholder = placeholderFromArgs\n ? getTranslation(placeholderFromArgs, args.i18n)\n : undefined\n\n const admin: LexicalFieldAdminClientProps = {}\n if (placeholder) {\n admin.placeholder = placeholder\n }\n if (args.admin?.hideGutter) {\n admin.hideGutter = true\n }\n if (args.admin?.hideInsertParagraphAtEnd) {\n admin.hideInsertParagraphAtEnd = true\n }\n if (args.admin?.hideAddBlockButton) {\n admin.hideAddBlockButton = true\n }\n if (args.admin?.hideDraggableBlockElement) {\n admin.hideDraggableBlockElement = true\n }\n\n const props: LexicalRichTextFieldProps = {\n clientFeatures,\n featureClientSchemaMap, // TODO: Does client need this? Why cant this just live in the server\n field: args.clientField as RichTextFieldClient,\n forceRender: args.forceRender,\n initialLexicalFormState,\n lexicalEditorConfig: args.sanitizedEditorConfig.lexical,\n path,\n permissions: args.permissions,\n readOnly: args.readOnly,\n renderedBlocks: args.renderedBlocks,\n schemaPath,\n }\n if (args?.views) {\n const viewMap = getFromImportMap<LexicalEditorViewMap>({\n importMap: args.payload.importMap,\n PayloadComponent: args.views,\n schemaPath: 'lexical-viewMap',\n silent: true,\n })\n if (viewMap) {\n props.views = viewMap\n }\n }\n\n if (Object.keys(admin).length) {\n props.admin = admin\n }\n if (Object.keys(featureClientImportMap).length) {\n props.featureClientImportMap = featureClientImportMap\n }\n\n for (const key in props) {\n if (props[key as keyof LexicalRichTextFieldProps] === undefined) {\n delete props[key as keyof LexicalRichTextFieldProps]\n }\n }\n\n return <RichTextField {...props} />\n}\n"],"names":["getTranslation","renderField","getFromImportMap","React","RichTextField","buildInitialState","initLexicalFeatures","RscEntryLexicalField","args","field","path","clientField","name","schemaPath","disabled","readOnly","admin","Error","clientFeatures","featureClientImportMap","featureClientSchemaMap","clientFieldSchemaMap","fieldSchemaMap","i18n","payload","sanitizedEditorConfig","initialLexicalFormState","siblingData","root","children","length","context","id","collectionSlug","documentData","data","lexicalFieldSchemaPath","operation","permissions","preferences","renderFieldFn","req","nodeData","placeholderFromArgs","placeholder","undefined","hideGutter","hideInsertParagraphAtEnd","hideAddBlockButton","hideDraggableBlockElement","props","forceRender","lexicalEditorConfig","lexical","renderedBlocks","views","viewMap","importMap","PayloadComponent","silent","Object","keys","key"],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -72,7 +72,7 @@ export type * from './nodeTypes.js';
|
|
|
72
72
|
export { $convertFromMarkdownString } from './packages/@lexical/markdown/index.js';
|
|
73
73
|
export { defaultRichTextValue } from './populateGraphQL/defaultValue.js';
|
|
74
74
|
export { populate } from './populateGraphQL/populate.js';
|
|
75
|
-
export type { LexicalEditorProps, LexicalFieldAdminProps, LexicalRichTextAdapter } from './types.js';
|
|
75
|
+
export type { LexicalEditorNodeMap, LexicalEditorProps, LexicalEditorViewMap, LexicalFieldAdminProps, LexicalRichTextAdapter, NodeMapValue, } from './types.js';
|
|
76
76
|
export { buildDefaultEditorState, buildEditorState } from './utilities/buildEditorState.js';
|
|
77
77
|
export { createServerFeature } from './utilities/createServerFeature.js';
|
|
78
78
|
export { editorConfigFactory } from './utilities/editorConfigFactory.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -72,12 +72,14 @@ export function lexicalEditor(args) {
|
|
|
72
72
|
FieldComponent: {
|
|
73
73
|
path: '@payloadcms/richtext-lexical/rsc#RscEntryLexicalField',
|
|
74
74
|
serverProps: {
|
|
75
|
-
admin: args?.admin
|
|
75
|
+
admin: args?.admin,
|
|
76
|
+
views: args?.views
|
|
76
77
|
}
|
|
77
78
|
},
|
|
78
79
|
// SanitizedEditorConfig is manually passed by `renderField` in `fieldSchemasToFormState/renderField.tsx`
|
|
79
80
|
// in order to reduce the size of the field schema
|
|
80
81
|
generateImportMap: getGenerateImportMap({
|
|
82
|
+
lexicalEditorArgs: args,
|
|
81
83
|
resolvedFeatureMap
|
|
82
84
|
}),
|
|
83
85
|
generateSchemaMap: getGenerateSchemaMap({
|