@payloadcms/richtext-lexical 3.38.0-canary.8 → 3.38.0-canary.9

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.
@@ -1,3 +1,4 @@
1
+ import type { CustomGroups } from '../../types.js';
1
2
  export type FixedToolbarFeatureProps = {
2
3
  /**
3
4
  * @default false
@@ -7,6 +8,15 @@ export type FixedToolbarFeatureProps = {
7
8
  * This means that if the editor has a child-editor, and the child-editor is focused, the toolbar will apply to the child-editor, not the parent editor with this feature added.
8
9
  */
9
10
  applyToFocusedEditor?: boolean;
11
+ /**
12
+ * Custom configurations for toolbar groups
13
+ * Key is the group key (e.g. 'format', 'indent', 'align')
14
+ * Value is a partial ToolbarGroup object that will be merged with the default configuration
15
+ *
16
+ * @note Props passed via customGroups must be serializable. Avoid using functions or dynamic components.
17
+ * ChildComponent, if provided, must be a serializable server component.
18
+ */
19
+ customGroups?: CustomGroups;
10
20
  /**
11
21
  * @default false
12
22
  *
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/features/toolbars/fixed/server/index.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,wBAAwB,GAAG;IACrC;;;;;;OAMG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B;;;;OAIG;IACH,8BAA8B,CAAC,EAAE,OAAO,CAAA;CACzC,CAAA;AAED,eAAO,MAAM,mBAAmB,+IAsB9B,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/features/toolbars/fixed/server/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAIlD,MAAM,MAAM,wBAAwB,GAAG;IACrC;;;;;;OAMG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B;;;;;;;OAOG;IACH,YAAY,CAAC,EAAE,YAAY,CAAA;IAC3B;;;;OAIG;IACH,8BAA8B,CAAC,EAAE,OAAO,CAAA;CACzC,CAAA;AAED,eAAO,MAAM,mBAAmB,+IAuB9B,CAAA"}
@@ -5,6 +5,7 @@ export const FixedToolbarFeature = createServerFeature({
5
5
  }) => {
6
6
  const sanitizedProps = {
7
7
  applyToFocusedEditor: props?.applyToFocusedEditor === undefined ? false : props.applyToFocusedEditor,
8
+ customGroups: props?.customGroups,
8
9
  disableIfParentHasFixedToolbar: props?.disableIfParentHasFixedToolbar === undefined ? false : props.disableIfParentHasFixedToolbar
9
10
  };
10
11
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["createServerFeature","FixedToolbarFeature","feature","props","sanitizedProps","applyToFocusedEditor","undefined","disableIfParentHasFixedToolbar","ClientFeature","clientFeatureProps","sanitizedServerFeatureProps","key"],"sources":["../../../../../src/features/toolbars/fixed/server/index.ts"],"sourcesContent":["import { createServerFeature } from '../../../../utilities/createServerFeature.js'\n\nexport type FixedToolbarFeatureProps = {\n /**\n * @default false\n *\n * If this is enabled, the toolbar will apply to the focused editor, not the editor with the FixedToolbarFeature.\n *\n * This means that if the editor has a child-editor, and the child-editor is focused, the toolbar will apply to the child-editor, not the parent editor with this feature added.\n */\n applyToFocusedEditor?: boolean\n /**\n * @default false\n *\n * If there is a parent editor with a fixed toolbar, this will disable the toolbar for this editor.\n */\n disableIfParentHasFixedToolbar?: boolean\n}\n\nexport const FixedToolbarFeature = createServerFeature<\n FixedToolbarFeatureProps,\n FixedToolbarFeatureProps,\n FixedToolbarFeatureProps\n>({\n feature: ({ props }) => {\n const sanitizedProps: FixedToolbarFeatureProps = {\n applyToFocusedEditor:\n props?.applyToFocusedEditor === undefined ? false : props.applyToFocusedEditor,\n disableIfParentHasFixedToolbar:\n props?.disableIfParentHasFixedToolbar === undefined\n ? false\n : props.disableIfParentHasFixedToolbar,\n }\n\n return {\n ClientFeature: '@payloadcms/richtext-lexical/client#FixedToolbarFeatureClient',\n clientFeatureProps: sanitizedProps,\n sanitizedServerFeatureProps: sanitizedProps,\n }\n },\n key: 'toolbarFixed',\n})\n"],"mappings":"AAAA,SAASA,mBAAmB,QAAQ;AAmBpC,OAAO,MAAMC,mBAAA,GAAsBD,mBAAA,CAIjC;EACAE,OAAA,EAASA,CAAC;IAAEC;EAAK,CAAE;IACjB,MAAMC,cAAA,GAA2C;MAC/CC,oBAAA,EACEF,KAAA,EAAOE,oBAAA,KAAyBC,SAAA,GAAY,QAAQH,KAAA,CAAME,oBAAoB;MAChFE,8BAAA,EACEJ,KAAA,EAAOI,8BAAA,KAAmCD,SAAA,GACtC,QACAH,KAAA,CAAMI;IACd;IAEA,OAAO;MACLC,aAAA,EAAe;MACfC,kBAAA,EAAoBL,cAAA;MACpBM,2BAAA,EAA6BN;IAC/B;EACF;EACAO,GAAA,EAAK;AACP","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["createServerFeature","FixedToolbarFeature","feature","props","sanitizedProps","applyToFocusedEditor","undefined","customGroups","disableIfParentHasFixedToolbar","ClientFeature","clientFeatureProps","sanitizedServerFeatureProps","key"],"sources":["../../../../../src/features/toolbars/fixed/server/index.ts"],"sourcesContent":["import type { CustomGroups } from '../../types.js'\n\nimport { createServerFeature } from '../../../../utilities/createServerFeature.js'\n\nexport type FixedToolbarFeatureProps = {\n /**\n * @default false\n *\n * If this is enabled, the toolbar will apply to the focused editor, not the editor with the FixedToolbarFeature.\n *\n * This means that if the editor has a child-editor, and the child-editor is focused, the toolbar will apply to the child-editor, not the parent editor with this feature added.\n */\n applyToFocusedEditor?: boolean\n /**\n * Custom configurations for toolbar groups\n * Key is the group key (e.g. 'format', 'indent', 'align')\n * Value is a partial ToolbarGroup object that will be merged with the default configuration\n *\n * @note Props passed via customGroups must be serializable. Avoid using functions or dynamic components.\n * ChildComponent, if provided, must be a serializable server component.\n */\n customGroups?: CustomGroups\n /**\n * @default false\n *\n * If there is a parent editor with a fixed toolbar, this will disable the toolbar for this editor.\n */\n disableIfParentHasFixedToolbar?: boolean\n}\n\nexport const FixedToolbarFeature = createServerFeature<\n FixedToolbarFeatureProps,\n FixedToolbarFeatureProps,\n FixedToolbarFeatureProps\n>({\n feature: ({ props }) => {\n const sanitizedProps: FixedToolbarFeatureProps = {\n applyToFocusedEditor:\n props?.applyToFocusedEditor === undefined ? false : props.applyToFocusedEditor,\n customGroups: props?.customGroups,\n disableIfParentHasFixedToolbar:\n props?.disableIfParentHasFixedToolbar === undefined\n ? false\n : props.disableIfParentHasFixedToolbar,\n }\n\n return {\n ClientFeature: '@payloadcms/richtext-lexical/client#FixedToolbarFeatureClient',\n clientFeatureProps: sanitizedProps,\n sanitizedServerFeatureProps: sanitizedProps,\n }\n },\n key: 'toolbarFixed',\n})\n"],"mappings":"AAEA,SAASA,mBAAmB,QAAQ;AA4BpC,OAAO,MAAMC,mBAAA,GAAsBD,mBAAA,CAIjC;EACAE,OAAA,EAASA,CAAC;IAAEC;EAAK,CAAE;IACjB,MAAMC,cAAA,GAA2C;MAC/CC,oBAAA,EACEF,KAAA,EAAOE,oBAAA,KAAyBC,SAAA,GAAY,QAAQH,KAAA,CAAME,oBAAoB;MAChFE,YAAA,EAAcJ,KAAA,EAAOI,YAAA;MACrBC,8BAAA,EACEL,KAAA,EAAOK,8BAAA,KAAmCF,SAAA,GACtC,QACAH,KAAA,CAAMK;IACd;IAEA,OAAO;MACLC,aAAA,EAAe;MACfC,kBAAA,EAAoBN,cAAA;MACpBO,2BAAA,EAA6BP;IAC/B;EACF;EACAQ,GAAA,EAAK;AACP","ignoreList":[]}
@@ -99,4 +99,5 @@ export type ToolbarGroupItem = {
99
99
  }) => void;
100
100
  order?: number;
101
101
  };
102
+ export type CustomGroups = Record<string, Partial<Omit<ToolbarButtonsGroup, 'items' | 'key'>> | Partial<Omit<ToolbarDropdownGroup, 'isEnabled' | 'items' | 'key'>>>;
102
103
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/features/toolbars/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/features/toolbars/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","names":[],"sources":["../../../src/features/toolbars/types.ts"],"sourcesContent":["import type { I18nClient } from '@payloadcms/translations'\nimport type { BaseSelection, LexicalEditor } from 'lexical'\nimport type React from 'react'\n\nimport type { EditorConfigContextType } from '../../lexical/config/client/EditorConfigProvider.js'\nimport type { FeatureClientSchemaMap } from '../../types.js'\n\nexport type ToolbarGroup = ToolbarButtonsGroup | ToolbarDropdownGroup\n\nexport type ToolbarDropdownGroup = {\n /**\n * The dropdown toolbar ChildComponent allows you to pass in a React Component which will be displayed within the dropdown button.\n */\n ChildComponent?: React.FC\n /**\n * This is optional and controls if the toolbar group is highlighted or not.\n */\n isEnabled?: ({\n editor,\n editorConfigContext,\n selection,\n }: {\n editor: LexicalEditor\n editorConfigContext: EditorConfigContextType\n selection: BaseSelection\n }) => boolean\n /**\n * All toolbar items part of this toolbar group need to be added here.\n */\n items: Array<ToolbarGroupItem>\n /**\n * Each toolbar group needs to have a unique key. Groups with the same keys will have their items merged together.\n */\n key: string\n /**\n * The maximum number of active items that can be selected at once.\n * Increasing this will hurt performance, as more nodes need to be checked for their active state.\n *\n * E.g. if this is 1, we can stop checking nodes once we find an active node.\n *\n * @default 1\n */\n maxActiveItems?: number\n /**\n * Determines where the toolbar group will be.\n */\n order?: number\n /**\n * Controls the toolbar group type. Set to `dropdown` to create a buttons toolbar group, which displays toolbar items vertically using their icons and labels, if the dropdown is open.\n */\n type: 'dropdown'\n}\n\nexport type ToolbarButtonsGroup = {\n /**\n * All toolbar items part of this toolbar group need to be added here.\n */\n items: Array<ToolbarGroupItem>\n /**\n * Each toolbar group needs to have a unique key. Groups with the same keys will have their items merged together.\n */\n key: string\n /**\n * Determines where the toolbar group will be.\n */\n order?: number\n /**\n * Controls the toolbar group type. Set to `buttons` to create a buttons toolbar group, which displays toolbar items horizontally using only their icons.\n */\n type: 'buttons'\n}\n\nexport type ToolbarGroupItem = {\n /** A React component which is rendered within your toolbar item's default button component. Usually, you want this to be an icon. */\n ChildComponent?: React.FC\n /** A React component which is rendered in place of the toolbar item's default button component, thus completely replacing it. The `ChildComponent` and `onSelect` properties will be ignored. */\n Component?: React.FC<{\n active?: boolean\n anchorElem: HTMLElement\n editor: LexicalEditor\n enabled?: boolean\n item: ToolbarGroupItem\n }>\n /** This is optional and controls if the toolbar item is highlighted or not. */\n isActive?: ({\n editor,\n editorConfigContext,\n selection,\n }: {\n editor: LexicalEditor\n editorConfigContext: EditorConfigContextType\n selection: BaseSelection\n }) => boolean\n /** This is optional and controls if the toolbar item is clickable or not. If `false` is returned here, it will be grayed out and unclickable. */\n isEnabled?: ({\n editor,\n editorConfigContext,\n selection,\n }: {\n editor: LexicalEditor\n editorConfigContext: EditorConfigContextType\n selection: BaseSelection\n }) => boolean\n /** Each toolbar item needs to have a unique key. */\n key: string\n /** The label will be displayed in your toolbar item, if it's within a dropdown group. In order to make use of i18n, this can be a function. */\n label?:\n | ((args: {\n featureClientSchemaMap: FeatureClientSchemaMap\n i18n: I18nClient<{}, string>\n schemaPath: string\n }) => string)\n | string\n /** Each toolbar item needs to have a unique key. */\n onSelect?: ({ editor, isActive }: { editor: LexicalEditor; isActive: boolean }) => void\n order?: number\n}\n"],"mappings":"AAwEA","ignoreList":[]}
1
+ {"version":3,"file":"types.js","names":[],"sources":["../../../src/features/toolbars/types.ts"],"sourcesContent":["import type { I18nClient } from '@payloadcms/translations'\nimport type { BaseSelection, LexicalEditor } from 'lexical'\nimport type React from 'react'\n\nimport type { EditorConfigContextType } from '../../lexical/config/client/EditorConfigProvider.js'\nimport type { FeatureClientSchemaMap } from '../../types.js'\n\nexport type ToolbarGroup = ToolbarButtonsGroup | ToolbarDropdownGroup\n\nexport type ToolbarDropdownGroup = {\n /**\n * The dropdown toolbar ChildComponent allows you to pass in a React Component which will be displayed within the dropdown button.\n */\n ChildComponent?: React.FC\n /**\n * This is optional and controls if the toolbar group is highlighted or not.\n */\n isEnabled?: ({\n editor,\n editorConfigContext,\n selection,\n }: {\n editor: LexicalEditor\n editorConfigContext: EditorConfigContextType\n selection: BaseSelection\n }) => boolean\n /**\n * All toolbar items part of this toolbar group need to be added here.\n */\n items: Array<ToolbarGroupItem>\n /**\n * Each toolbar group needs to have a unique key. Groups with the same keys will have their items merged together.\n */\n key: string\n /**\n * The maximum number of active items that can be selected at once.\n * Increasing this will hurt performance, as more nodes need to be checked for their active state.\n *\n * E.g. if this is 1, we can stop checking nodes once we find an active node.\n *\n * @default 1\n */\n maxActiveItems?: number\n /**\n * Determines where the toolbar group will be.\n */\n order?: number\n /**\n * Controls the toolbar group type. Set to `dropdown` to create a buttons toolbar group, which displays toolbar items vertically using their icons and labels, if the dropdown is open.\n */\n type: 'dropdown'\n}\n\nexport type ToolbarButtonsGroup = {\n /**\n * All toolbar items part of this toolbar group need to be added here.\n */\n items: Array<ToolbarGroupItem>\n /**\n * Each toolbar group needs to have a unique key. Groups with the same keys will have their items merged together.\n */\n key: string\n /**\n * Determines where the toolbar group will be.\n */\n order?: number\n /**\n * Controls the toolbar group type. Set to `buttons` to create a buttons toolbar group, which displays toolbar items horizontally using only their icons.\n */\n type: 'buttons'\n}\n\nexport type ToolbarGroupItem = {\n /** A React component which is rendered within your toolbar item's default button component. Usually, you want this to be an icon. */\n ChildComponent?: React.FC\n /** A React component which is rendered in place of the toolbar item's default button component, thus completely replacing it. The `ChildComponent` and `onSelect` properties will be ignored. */\n Component?: React.FC<{\n active?: boolean\n anchorElem: HTMLElement\n editor: LexicalEditor\n enabled?: boolean\n item: ToolbarGroupItem\n }>\n /** This is optional and controls if the toolbar item is highlighted or not. */\n isActive?: ({\n editor,\n editorConfigContext,\n selection,\n }: {\n editor: LexicalEditor\n editorConfigContext: EditorConfigContextType\n selection: BaseSelection\n }) => boolean\n /** This is optional and controls if the toolbar item is clickable or not. If `false` is returned here, it will be grayed out and unclickable. */\n isEnabled?: ({\n editor,\n editorConfigContext,\n selection,\n }: {\n editor: LexicalEditor\n editorConfigContext: EditorConfigContextType\n selection: BaseSelection\n }) => boolean\n /** Each toolbar item needs to have a unique key. */\n key: string\n /** The label will be displayed in your toolbar item, if it's within a dropdown group. In order to make use of i18n, this can be a function. */\n label?:\n | ((args: {\n featureClientSchemaMap: FeatureClientSchemaMap\n i18n: I18nClient<{}, string>\n schemaPath: string\n }) => string)\n | string\n /** Each toolbar item needs to have a unique key. */\n onSelect?: ({ editor, isActive }: { editor: LexicalEditor; isActive: boolean }) => void\n order?: number\n}\n\nexport type CustomGroups = Record<\n string,\n | Partial<Omit<ToolbarButtonsGroup, 'items' | 'key'>>\n | Partial<Omit<ToolbarDropdownGroup, 'isEnabled' | 'items' | 'key'>>\n>\n"],"mappings":"AAsHA","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"Field.d.ts","sourceRoot":"","sources":["../../src/field/Field.tsx"],"names":[],"mappings":"AAcA,OAAO,KAAoD,MAAM,OAAO,CAAA;AAGxE,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAA;AAE7E,OAAO,mCAAmC,CAAA;AAC1C,OAAO,eAAe,CAAA;AACtB,OAAO,cAAc,CAAA;AAErB,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAA;AAM5D,QAAA,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAC/B;IACE,QAAQ,CAAC,YAAY,EAAE,2BAA2B,CAAA;CACnD,GAAG,yBAAyB,CAgK9B,CAAA;AAaD,eAAO,MAAM,QAAQ,EAAE,OAAO,iBAAqC,CAAA"}
1
+ {"version":3,"file":"Field.d.ts","sourceRoot":"","sources":["../../src/field/Field.tsx"],"names":[],"mappings":"AAcA,OAAO,KAA4D,MAAM,OAAO,CAAA;AAGhF,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAA;AAE7E,OAAO,mCAAmC,CAAA;AAC1C,OAAO,eAAe,CAAA;AACtB,OAAO,cAAc,CAAA;AAErB,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAA;AAM5D,QAAA,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAC/B;IACE,QAAQ,CAAC,YAAY,EAAE,2BAA2B,CAAA;CACnD,GAAG,yBAAyB,CA8K9B,CAAA;AAaD,eAAO,MAAM,QAAQ,EAAE,OAAO,iBAAqC,CAAA"}
@@ -3,7 +3,7 @@
3
3
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
4
4
  import { FieldDescription, FieldError, FieldLabel, RenderCustomComponent, useEditDepth, useEffectEvent, useField } from '@payloadcms/ui';
5
5
  import { mergeFieldStyles } from '@payloadcms/ui/shared';
6
- import React, { useCallback, useEffect, useMemo, useState } from 'react';
6
+ import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';
7
7
  import { ErrorBoundary } from 'react-error-boundary';
8
8
  import './bundled.css';
9
9
  import { LexicalProvider } from '../lexical/LexicalProvider.js';
@@ -80,16 +80,29 @@ const RichTextComponent = props => {
80
80
  }, [isSmallWidthViewport]);
81
81
  const classes = [baseClass, 'field-type', className, showError && 'error', disabled && `${baseClass}--read-only`, editorConfig?.admin?.hideGutter !== true && !isSmallWidthViewport ? `${baseClass}--show-gutter` : null].filter(Boolean).join(' ');
82
82
  const pathWithEditDepth = `${path}.${editDepth}`;
83
- const updateFieldValue = editorState => {
84
- const newState = editorState.toJSON();
85
- prevValueRef.current = newState;
86
- setValue(newState);
87
- };
88
- const handleChange = useCallback(editorState_0 => {
83
+ const dispatchFieldUpdateTask = useRef(undefined);
84
+ const handleChange = useCallback(editorState => {
85
+ const updateFieldValue = editorState_0 => {
86
+ const newState = editorState_0.toJSON();
87
+ prevValueRef.current = newState;
88
+ setValue(newState);
89
+ };
89
90
  if (typeof window.requestIdleCallback === 'function') {
90
- requestIdleCallback(() => updateFieldValue(editorState_0));
91
+ // Cancel earlier scheduled value updates,
92
+ // so that a CPU-limited event loop isn't flooded with n callbacks for n keystrokes into the rich text field,
93
+ // but that there's only ever the latest one state update
94
+ // dispatch task, to be executed with the next idle time,
95
+ // or the deadline of 500ms.
96
+ if (typeof window.cancelIdleCallback === 'function' && dispatchFieldUpdateTask.current) {
97
+ cancelIdleCallback(dispatchFieldUpdateTask.current);
98
+ }
99
+ // Schedule the state update to happen the next time the browser has sufficient resources,
100
+ // or the latest after 500ms.
101
+ dispatchFieldUpdateTask.current = requestIdleCallback(() => updateFieldValue(editorState), {
102
+ timeout: 500
103
+ });
91
104
  } else {
92
- updateFieldValue(editorState_0);
105
+ updateFieldValue(editorState);
93
106
  }
94
107
  }, [setValue]);
95
108
  const styles = useMemo(() => mergeFieldStyles(field), [field]);
@@ -1 +1 @@
1
- {"version":3,"file":"Field.js","names":["FieldDescription","FieldError","FieldLabel","RenderCustomComponent","useEditDepth","useEffectEvent","useField","mergeFieldStyles","React","useCallback","useEffect","useMemo","useState","ErrorBoundary","LexicalProvider","baseClass","RichTextComponent","props","editorConfig","field","admin","className","description","readOnly","readOnlyFromAdmin","label","localized","required","path","pathFromProps","readOnlyFromTopLevelProps","validate","readOnlyFromProps","editDepth","memoizedValidate","value","validationOptions","customComponents","AfterInput","BeforeInput","Description","Error","Label","disabled","disabledFromField","initialValue","setValue","showError","potentiallyStalePath","isSmallWidthViewport","setIsSmallWidthViewport","rerenderProviderKey","setRerenderProviderKey","prevInitialValueRef","useRef","prevValueRef","updateViewPortWidth","isNextSmallWidthViewport","window","matchMedia","matches","addEventListener","removeEventListener","classes","hideGutter","filter","Boolean","join","pathWithEditDepth","updateFieldValue","editorState","newState","toJSON","current","handleChange","requestIdleCallback","styles","handleInitialValueChange","JSON","stringify","Date","Object","is","_jsxs","style","_jsx","CustomComponent","Fallback","fallbackRender","onReset","composerKey","fieldProps","onChange","error","role","color","message","RichText"],"sources":["../../src/field/Field.tsx"],"sourcesContent":["'use client'\nimport type { EditorState, SerializedEditorState } from 'lexical'\nimport type { Validate } from 'payload'\n\nimport {\n FieldDescription,\n FieldError,\n FieldLabel,\n RenderCustomComponent,\n useEditDepth,\n useEffectEvent,\n useField,\n} from '@payloadcms/ui'\nimport { mergeFieldStyles } from '@payloadcms/ui/shared'\nimport React, { useCallback, useEffect, useMemo, useState } from 'react'\nimport { ErrorBoundary } from 'react-error-boundary'\n\nimport type { SanitizedClientEditorConfig } from '../lexical/config/types.js'\n\nimport '../lexical/theme/EditorTheme.scss'\nimport './bundled.css'\nimport './index.scss'\n\nimport type { LexicalRichTextFieldProps } from '../types.js'\n\nimport { LexicalProvider } from '../lexical/LexicalProvider.js'\n\nconst baseClass = 'rich-text-lexical'\n\nconst RichTextComponent: React.FC<\n {\n readonly editorConfig: SanitizedClientEditorConfig // With rendered features n stuff\n } & LexicalRichTextFieldProps\n> = (props) => {\n const {\n editorConfig,\n field,\n field: {\n admin: { className, description, readOnly: readOnlyFromAdmin } = {},\n label,\n localized,\n required,\n },\n path: pathFromProps,\n readOnly: readOnlyFromTopLevelProps,\n validate, // Users can pass in client side validation if they WANT to, but it's not required anymore\n } = props\n\n const readOnlyFromProps = readOnlyFromTopLevelProps || readOnlyFromAdmin\n\n const editDepth = useEditDepth()\n\n const memoizedValidate = useCallback<Validate>(\n (value, validationOptions) => {\n if (typeof validate === 'function') {\n // @ts-expect-error - vestiges of when tsconfig was not strict. Feel free to improve\n return validate(value, { ...validationOptions, required })\n }\n return true\n },\n // Important: do not add props to the dependencies array.\n // This would cause an infinite loop and endless re-rendering.\n // Removing props from the dependencies array fixed this issue: https://github.com/payloadcms/payload/issues/3709\n [validate, required],\n )\n\n const {\n customComponents: { AfterInput, BeforeInput, Description, Error, Label } = {},\n disabled: disabledFromField,\n initialValue,\n path,\n setValue,\n showError,\n value,\n } = useField<SerializedEditorState>({\n potentiallyStalePath: pathFromProps,\n validate: memoizedValidate,\n })\n\n const disabled = readOnlyFromProps || disabledFromField\n\n const [isSmallWidthViewport, setIsSmallWidthViewport] = useState<boolean>(false)\n const [rerenderProviderKey, setRerenderProviderKey] = useState<Date>()\n\n const prevInitialValueRef = React.useRef<SerializedEditorState | undefined>(initialValue)\n const prevValueRef = React.useRef<SerializedEditorState | undefined>(value)\n\n useEffect(() => {\n const updateViewPortWidth = () => {\n const isNextSmallWidthViewport = window.matchMedia('(max-width: 768px)').matches\n\n if (isNextSmallWidthViewport !== isSmallWidthViewport) {\n setIsSmallWidthViewport(isNextSmallWidthViewport)\n }\n }\n updateViewPortWidth()\n window.addEventListener('resize', updateViewPortWidth)\n\n return () => {\n window.removeEventListener('resize', updateViewPortWidth)\n }\n }, [isSmallWidthViewport])\n\n const classes = [\n baseClass,\n 'field-type',\n className,\n showError && 'error',\n disabled && `${baseClass}--read-only`,\n editorConfig?.admin?.hideGutter !== true && !isSmallWidthViewport\n ? `${baseClass}--show-gutter`\n : null,\n ]\n .filter(Boolean)\n .join(' ')\n\n const pathWithEditDepth = `${path}.${editDepth}`\n\n const updateFieldValue = (editorState: EditorState) => {\n const newState = editorState.toJSON()\n prevValueRef.current = newState\n setValue(newState)\n }\n\n const handleChange = useCallback(\n (editorState: EditorState) => {\n if (typeof window.requestIdleCallback === 'function') {\n requestIdleCallback(() => updateFieldValue(editorState))\n } else {\n updateFieldValue(editorState)\n }\n },\n [setValue],\n )\n\n const styles = useMemo(() => mergeFieldStyles(field), [field])\n\n const handleInitialValueChange = useEffectEvent(\n (initialValue: SerializedEditorState | undefined) => {\n // Object deep equality check here, as re-mounting the editor if\n // the new value is the same as the old one is not necessary\n if (\n prevValueRef.current !== value &&\n JSON.stringify(prevValueRef.current) !== JSON.stringify(value)\n ) {\n prevInitialValueRef.current = initialValue\n prevValueRef.current = value\n setRerenderProviderKey(new Date())\n }\n },\n )\n\n useEffect(() => {\n // Needs to trigger for object reference changes - otherwise,\n // reacting to the same initial value change twice will cause\n // the second change to be ignored, even though the value has changed.\n // That's because initialValue is not kept up-to-date\n if (!Object.is(initialValue, prevInitialValueRef.current)) {\n handleInitialValueChange(initialValue)\n }\n }, [initialValue])\n\n return (\n <div className={classes} key={pathWithEditDepth} style={styles}>\n <RenderCustomComponent\n CustomComponent={Error}\n Fallback={<FieldError path={path} showError={showError} />}\n />\n {Label || <FieldLabel label={label} localized={localized} path={path} required={required} />}\n <div className={`${baseClass}__wrap`}>\n <ErrorBoundary fallbackRender={fallbackRender} onReset={() => {}}>\n {BeforeInput}\n <LexicalProvider\n composerKey={pathWithEditDepth}\n editorConfig={editorConfig}\n fieldProps={props}\n isSmallWidthViewport={isSmallWidthViewport}\n key={JSON.stringify({ path, rerenderProviderKey })} // makes sure lexical is completely re-rendered when initialValue changes, bypassing the lexical-internal value memoization. That way, external changes to the form will update the editor. More infos in PR description (https://github.com/payloadcms/payload/pull/5010)\n onChange={handleChange}\n readOnly={disabled}\n value={value}\n />\n {AfterInput}\n </ErrorBoundary>\n {Description}\n <RenderCustomComponent\n CustomComponent={Description}\n Fallback={<FieldDescription description={description} path={path} />}\n />\n </div>\n </div>\n )\n}\n\nfunction fallbackRender({ error }: { error: Error }) {\n // Call resetErrorBoundary() to reset the error boundary and retry the render.\n\n return (\n <div className=\"errorBoundary\" role=\"alert\">\n <p>Something went wrong:</p>\n <pre style={{ color: 'red' }}>{error.message}</pre>\n </div>\n )\n}\n\nexport const RichText: typeof RichTextComponent = RichTextComponent\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"Field.js","names":["FieldDescription","FieldError","FieldLabel","RenderCustomComponent","useEditDepth","useEffectEvent","useField","mergeFieldStyles","React","useCallback","useEffect","useMemo","useRef","useState","ErrorBoundary","LexicalProvider","baseClass","RichTextComponent","props","editorConfig","field","admin","className","description","readOnly","readOnlyFromAdmin","label","localized","required","path","pathFromProps","readOnlyFromTopLevelProps","validate","readOnlyFromProps","editDepth","memoizedValidate","value","validationOptions","customComponents","AfterInput","BeforeInput","Description","Error","Label","disabled","disabledFromField","initialValue","setValue","showError","potentiallyStalePath","isSmallWidthViewport","setIsSmallWidthViewport","rerenderProviderKey","setRerenderProviderKey","prevInitialValueRef","prevValueRef","updateViewPortWidth","isNextSmallWidthViewport","window","matchMedia","matches","addEventListener","removeEventListener","classes","hideGutter","filter","Boolean","join","pathWithEditDepth","dispatchFieldUpdateTask","undefined","handleChange","editorState","updateFieldValue","newState","toJSON","current","requestIdleCallback","cancelIdleCallback","timeout","styles","handleInitialValueChange","JSON","stringify","Date","Object","is","_jsxs","style","_jsx","CustomComponent","Fallback","fallbackRender","onReset","composerKey","fieldProps","onChange","error","role","color","message","RichText"],"sources":["../../src/field/Field.tsx"],"sourcesContent":["'use client'\nimport type { EditorState, SerializedEditorState } from 'lexical'\nimport type { Validate } from 'payload'\n\nimport {\n FieldDescription,\n FieldError,\n FieldLabel,\n RenderCustomComponent,\n useEditDepth,\n useEffectEvent,\n useField,\n} from '@payloadcms/ui'\nimport { mergeFieldStyles } from '@payloadcms/ui/shared'\nimport React, { useCallback, useEffect, useMemo, useRef, useState } from 'react'\nimport { ErrorBoundary } from 'react-error-boundary'\n\nimport type { SanitizedClientEditorConfig } from '../lexical/config/types.js'\n\nimport '../lexical/theme/EditorTheme.scss'\nimport './bundled.css'\nimport './index.scss'\n\nimport type { LexicalRichTextFieldProps } from '../types.js'\n\nimport { LexicalProvider } from '../lexical/LexicalProvider.js'\n\nconst baseClass = 'rich-text-lexical'\n\nconst RichTextComponent: React.FC<\n {\n readonly editorConfig: SanitizedClientEditorConfig // With rendered features n stuff\n } & LexicalRichTextFieldProps\n> = (props) => {\n const {\n editorConfig,\n field,\n field: {\n admin: { className, description, readOnly: readOnlyFromAdmin } = {},\n label,\n localized,\n required,\n },\n path: pathFromProps,\n readOnly: readOnlyFromTopLevelProps,\n validate, // Users can pass in client side validation if they WANT to, but it's not required anymore\n } = props\n\n const readOnlyFromProps = readOnlyFromTopLevelProps || readOnlyFromAdmin\n\n const editDepth = useEditDepth()\n\n const memoizedValidate = useCallback<Validate>(\n (value, validationOptions) => {\n if (typeof validate === 'function') {\n // @ts-expect-error - vestiges of when tsconfig was not strict. Feel free to improve\n return validate(value, { ...validationOptions, required })\n }\n return true\n },\n // Important: do not add props to the dependencies array.\n // This would cause an infinite loop and endless re-rendering.\n // Removing props from the dependencies array fixed this issue: https://github.com/payloadcms/payload/issues/3709\n [validate, required],\n )\n\n const {\n customComponents: { AfterInput, BeforeInput, Description, Error, Label } = {},\n disabled: disabledFromField,\n initialValue,\n path,\n setValue,\n showError,\n value,\n } = useField<SerializedEditorState>({\n potentiallyStalePath: pathFromProps,\n validate: memoizedValidate,\n })\n\n const disabled = readOnlyFromProps || disabledFromField\n\n const [isSmallWidthViewport, setIsSmallWidthViewport] = useState<boolean>(false)\n const [rerenderProviderKey, setRerenderProviderKey] = useState<Date>()\n\n const prevInitialValueRef = React.useRef<SerializedEditorState | undefined>(initialValue)\n const prevValueRef = React.useRef<SerializedEditorState | undefined>(value)\n\n useEffect(() => {\n const updateViewPortWidth = () => {\n const isNextSmallWidthViewport = window.matchMedia('(max-width: 768px)').matches\n\n if (isNextSmallWidthViewport !== isSmallWidthViewport) {\n setIsSmallWidthViewport(isNextSmallWidthViewport)\n }\n }\n updateViewPortWidth()\n window.addEventListener('resize', updateViewPortWidth)\n\n return () => {\n window.removeEventListener('resize', updateViewPortWidth)\n }\n }, [isSmallWidthViewport])\n\n const classes = [\n baseClass,\n 'field-type',\n className,\n showError && 'error',\n disabled && `${baseClass}--read-only`,\n editorConfig?.admin?.hideGutter !== true && !isSmallWidthViewport\n ? `${baseClass}--show-gutter`\n : null,\n ]\n .filter(Boolean)\n .join(' ')\n\n const pathWithEditDepth = `${path}.${editDepth}`\n\n const dispatchFieldUpdateTask = useRef<number>(undefined)\n\n const handleChange = useCallback(\n (editorState: EditorState) => {\n const updateFieldValue = (editorState: EditorState) => {\n const newState = editorState.toJSON()\n prevValueRef.current = newState\n setValue(newState)\n }\n\n if (typeof window.requestIdleCallback === 'function') {\n // Cancel earlier scheduled value updates,\n // so that a CPU-limited event loop isn't flooded with n callbacks for n keystrokes into the rich text field,\n // but that there's only ever the latest one state update\n // dispatch task, to be executed with the next idle time,\n // or the deadline of 500ms.\n if (typeof window.cancelIdleCallback === 'function' && dispatchFieldUpdateTask.current) {\n cancelIdleCallback(dispatchFieldUpdateTask.current)\n }\n // Schedule the state update to happen the next time the browser has sufficient resources,\n // or the latest after 500ms.\n dispatchFieldUpdateTask.current = requestIdleCallback(() => updateFieldValue(editorState), {\n timeout: 500,\n })\n } else {\n updateFieldValue(editorState)\n }\n },\n [setValue],\n )\n\n const styles = useMemo(() => mergeFieldStyles(field), [field])\n\n const handleInitialValueChange = useEffectEvent(\n (initialValue: SerializedEditorState | undefined) => {\n // Object deep equality check here, as re-mounting the editor if\n // the new value is the same as the old one is not necessary\n if (\n prevValueRef.current !== value &&\n JSON.stringify(prevValueRef.current) !== JSON.stringify(value)\n ) {\n prevInitialValueRef.current = initialValue\n prevValueRef.current = value\n setRerenderProviderKey(new Date())\n }\n },\n )\n\n useEffect(() => {\n // Needs to trigger for object reference changes - otherwise,\n // reacting to the same initial value change twice will cause\n // the second change to be ignored, even though the value has changed.\n // That's because initialValue is not kept up-to-date\n if (!Object.is(initialValue, prevInitialValueRef.current)) {\n handleInitialValueChange(initialValue)\n }\n }, [initialValue])\n\n return (\n <div className={classes} key={pathWithEditDepth} style={styles}>\n <RenderCustomComponent\n CustomComponent={Error}\n Fallback={<FieldError path={path} showError={showError} />}\n />\n {Label || <FieldLabel label={label} localized={localized} path={path} required={required} />}\n <div className={`${baseClass}__wrap`}>\n <ErrorBoundary fallbackRender={fallbackRender} onReset={() => {}}>\n {BeforeInput}\n <LexicalProvider\n composerKey={pathWithEditDepth}\n editorConfig={editorConfig}\n fieldProps={props}\n isSmallWidthViewport={isSmallWidthViewport}\n key={JSON.stringify({ path, rerenderProviderKey })} // makes sure lexical is completely re-rendered when initialValue changes, bypassing the lexical-internal value memoization. That way, external changes to the form will update the editor. More infos in PR description (https://github.com/payloadcms/payload/pull/5010)\n onChange={handleChange}\n readOnly={disabled}\n value={value}\n />\n {AfterInput}\n </ErrorBoundary>\n {Description}\n <RenderCustomComponent\n CustomComponent={Description}\n Fallback={<FieldDescription description={description} path={path} />}\n />\n </div>\n </div>\n )\n}\n\nfunction fallbackRender({ error }: { error: Error }) {\n // Call resetErrorBoundary() to reset the error boundary and retry the render.\n\n return (\n <div className=\"errorBoundary\" role=\"alert\">\n <p>Something went wrong:</p>\n <pre style={{ color: 'red' }}>{error.message}</pre>\n </div>\n )\n}\n\nexport const RichText: typeof RichTextComponent = RichTextComponent\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -379,6 +379,7 @@ export function lexicalEditor(args) {
379
379
  mergeLocaleActions,
380
380
  operation,
381
381
  originalDoc,
382
+ overrideAccess,
382
383
  parentIsLocalized,
383
384
  path,
384
385
  previousValue,
@@ -486,6 +487,7 @@ export function lexicalEditor(args) {
486
487
  global,
487
488
  mergeLocaleActions: mergeLocaleActions,
488
489
  operation: operation,
490
+ overrideAccess,
489
491
  parentIndexPath: indexPath.join('-'),
490
492
  parentIsLocalized: parentIsLocalized || field.localized || false,
491
493
  parentPath: path.join('.'),
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["afterChangeTraverseFields","afterReadTraverseFields","beforeChangeTraverseFields","beforeValidateTraverseFields","checkDependencies","withNullableJSONSchemaType","getDefaultSanitizedEditorConfig","i18n","defaultEditorFeatures","populateLexicalPopulationPromises","featuresInputToEditorConfig","getGenerateImportMap","getGenerateSchemaMap","recurseNodeTree","richTextValidateHOC","checkedDependencies","lexicalTargetVersion","lexicalEditor","args","process","env","NODE_ENV","PAYLOAD_DISABLE_DEPENDENCY_CHECKER","dependencyGroups","name","dependencies","targetVersion","config","isRoot","parentIsLocalized","features","resolvedFeatureMap","finalSanitizedEditorConfig","lexical","result","sanitizedConfig","featureI18n","lang","general","CellComponent","path","serverProps","admin","sanitizedEditorConfig","DiffComponent","editorConfig","FieldComponent","generateImportMap","generateSchemaMap","graphQLPopulationPromises","context","currentDepth","depth","draft","field","fieldPromises","findMany","flattenLocales","overrideAccess","populationPromises","req","showHiddenFields","siblingDoc","size","editorPopulationPromises","hooks","afterChange","collection","_context","data","global","indexPath","operation","originalDoc","previousDoc","previousValue","schemaPath","value","length","hook","nodeHooks","getSubFields","nodeIDMap","previousNodeIDMap","originalNodeIDMap","internal","richText","join","Object","keys","nodes","root","children","id","node","entries","afterChangeHooks","afterChangeHooksForNode","get","type","console","warn","originalNode","parentRichTextFieldPath","parentRichTextFieldSchemaPath","previousNode","subFieldFn","subFieldDataFn","getSubFieldsData","subFields","nodeSiblingData","nodeSiblingDoc","nodePreviousSiblingDoc","blockData","doc","fields","parentIndexPath","localized","parentPath","parentSchemaPath","previousSiblingDoc","siblingData","afterRead","fallbackLocale","locale","populate","triggerAccessControl","triggerHooks","flattenedNodes","afterReadHooks","afterReadHooksForNode","populateArg","beforeChange","docWithLocales","errors","fieldLabelPath","mergeLocaleActions","siblingDocWithLocales","skipValidation","originalNodeWithLocalesIDMap","beforeChangeHooks","beforeChangeHooksForNode","originalNodeWithLocales","nodeSiblingDocWithLocales","newOriginalNodeIDMap","previousOriginalValue","beforeValidate","beforeValidateHooks","beforeValidateHooksForNode","outputSchema","collectionIDFieldTypes","interfaceNameDefinitions","isRequired","properties","additionalProperties","items","version","required","direction","oneOf","enum","format","indent","modifyOutputSchema","generatedTypes","modifyOutputSchemas","currentSchema","validate","AlignFeature","BlockquoteFeature","BlocksFeature","$createServerBlockNode","$isServerBlockNode","ServerBlockNode","convertHTMLToLexical","lexicalHTMLField","LinebreakHTMLConverter","ParagraphHTMLConverter","TabHTMLConverter","TextHTMLConverter","defaultHTMLConverters","convertLexicalNodesToHTML","convertLexicalToHTML","consolidateHTMLConverters","lexicalHTML","HTMLConverterFeature","convertLexicalToMarkdown","convertMarkdownToLexical","getPayloadPopulateFn","getRestPopulateFn","DebugJsxConverterFeature","TestRecorderFeature","TreeViewFeature","EXPERIMENTAL_TableFeature","BoldFeature","InlineCodeFeature","ItalicFeature","StrikethroughFeature","SubscriptFeature","SuperscriptFeature","UnderlineFeature","HeadingFeature","HorizontalRuleFeature","IndentFeature","AutoLinkNode","LinkNode","LinkFeature","ChecklistFeature","OrderedListFeature","UnorderedListFeature","ParagraphFeature","RelationshipFeature","RelationshipServerNode","FixedToolbarFeature","InlineToolbarFeature","createNode","UploadFeature","UploadServerNode","defaultEditorConfig","defaultEditorLexicalConfig","loadFeatures","sortFeaturesForOptimalLoading","sanitizeServerEditorConfig","sanitizeServerFeatures","getEnabledNodes","getEnabledNodesFromServerNodes","DETAIL_TYPE_TO_DETAIL","DOUBLE_LINE_BREAK","ELEMENT_FORMAT_TO_TYPE","ELEMENT_TYPE_TO_FORMAT","IS_ALL_FORMATTING","LTR_REGEX","NodeFormat","NON_BREAKING_SPACE","RTL_REGEX","TEXT_MODE_TO_TYPE","TEXT_TYPE_TO_FORMAT","TEXT_TYPE_TO_MODE","sanitizeUrl","validateUrl","$convertFromMarkdownString","defaultRichTextValue","createServerFeature","editorConfigFactory","extractPropsFromJSXPropsString","extractFrontmatter","frontmatterToObject","objectToFrontmatter","propsToJSXString","upgradeLexicalData"],"sources":["../src/index.ts"],"sourcesContent":["import type { JSONSchema4 } from 'json-schema'\nimport type { SerializedEditorState, SerializedLexicalNode } from 'lexical'\n\nimport {\n afterChangeTraverseFields,\n afterReadTraverseFields,\n beforeChangeTraverseFields,\n beforeValidateTraverseFields,\n checkDependencies,\n withNullableJSONSchemaType,\n} from 'payload'\n\nimport type { FeatureProviderServer, ResolvedServerFeatureMap } from './features/typesServer.js'\nimport type { SanitizedServerEditorConfig } from './lexical/config/types.js'\nimport type { AdapterProps, LexicalEditorProps, LexicalRichTextAdapterProvider } from './types.js'\n\nimport { getDefaultSanitizedEditorConfig } from './getDefaultSanitizedEditorConfig.js'\nimport { i18n } from './i18n.js'\nimport { defaultEditorFeatures } from './lexical/config/server/default.js'\nimport { populateLexicalPopulationPromises } from './populateGraphQL/populateLexicalPopulationPromises.js'\nimport { featuresInputToEditorConfig } from './utilities/editorConfigFactory.js'\nimport { getGenerateImportMap } from './utilities/generateImportMap.js'\nimport { getGenerateSchemaMap } from './utilities/generateSchemaMap.js'\nimport { recurseNodeTree } from './utilities/recurseNodeTree.js'\nimport { richTextValidateHOC } from './validate/index.js'\n\nlet checkedDependencies = false\n\nexport const lexicalTargetVersion = '0.28.0'\n\nexport function lexicalEditor(args?: LexicalEditorProps): LexicalRichTextAdapterProvider {\n if (\n process.env.NODE_ENV !== 'production' &&\n process.env.PAYLOAD_DISABLE_DEPENDENCY_CHECKER !== 'true' &&\n !checkedDependencies\n ) {\n checkedDependencies = true\n void checkDependencies({\n dependencyGroups: [\n {\n name: 'lexical',\n dependencies: [\n 'lexical',\n '@lexical/headless',\n '@lexical/link',\n '@lexical/list',\n '@lexical/mark',\n '@lexical/react',\n '@lexical/rich-text',\n '@lexical/selection',\n '@lexical/utils',\n ],\n targetVersion: lexicalTargetVersion,\n },\n ],\n })\n }\n return async ({ config, isRoot, parentIsLocalized }) => {\n let features: FeatureProviderServer<unknown, unknown, unknown>[] = []\n let resolvedFeatureMap: ResolvedServerFeatureMap\n\n let finalSanitizedEditorConfig: SanitizedServerEditorConfig // For server only\n if (!args || (!args.features && !args.lexical)) {\n finalSanitizedEditorConfig = await getDefaultSanitizedEditorConfig({\n config,\n parentIsLocalized,\n })\n\n features = defaultEditorFeatures\n\n resolvedFeatureMap = finalSanitizedEditorConfig.resolvedFeatureMap\n } else {\n const result = await featuresInputToEditorConfig({\n config,\n features: args?.features,\n isRoot,\n lexical: args?.lexical,\n parentIsLocalized,\n })\n finalSanitizedEditorConfig = result.sanitizedConfig\n features = result.features\n resolvedFeatureMap = result.resolvedFeatureMap\n }\n\n const featureI18n = finalSanitizedEditorConfig.features.i18n\n for (const lang in i18n) {\n if (!featureI18n[lang as keyof typeof featureI18n]) {\n featureI18n[lang as keyof typeof featureI18n] = {\n lexical: {},\n }\n }\n // @ts-expect-error - vestiges of when tsconfig was not strict. Feel free to improve\n featureI18n[lang].lexical.general = i18n[lang]\n }\n\n return {\n CellComponent: {\n path: '@payloadcms/richtext-lexical/rsc#RscEntryLexicalCell',\n serverProps: {\n admin: args?.admin,\n sanitizedEditorConfig: finalSanitizedEditorConfig,\n },\n },\n DiffComponent: {\n path: '@payloadcms/richtext-lexical/rsc#LexicalDiffComponent',\n serverProps: {\n admin: args?.admin,\n sanitizedEditorConfig: finalSanitizedEditorConfig,\n },\n },\n editorConfig: finalSanitizedEditorConfig,\n features,\n FieldComponent: {\n path: '@payloadcms/richtext-lexical/rsc#RscEntryLexicalField',\n serverProps: {\n admin: args?.admin,\n sanitizedEditorConfig: finalSanitizedEditorConfig,\n },\n },\n generateImportMap: getGenerateImportMap({\n resolvedFeatureMap,\n }),\n generateSchemaMap: getGenerateSchemaMap({\n resolvedFeatureMap,\n }),\n graphQLPopulationPromises({\n context,\n currentDepth,\n depth,\n draft,\n field,\n fieldPromises,\n findMany,\n flattenLocales,\n overrideAccess,\n parentIsLocalized,\n populationPromises,\n req,\n showHiddenFields,\n siblingDoc,\n }) {\n // check if there are any features with nodes which have populationPromises for this field\n if (finalSanitizedEditorConfig?.features?.graphQLPopulationPromises?.size) {\n populateLexicalPopulationPromises({\n context,\n currentDepth: currentDepth ?? 0,\n depth,\n draft,\n editorPopulationPromises: finalSanitizedEditorConfig.features.graphQLPopulationPromises,\n field,\n fieldPromises,\n findMany,\n flattenLocales,\n overrideAccess,\n parentIsLocalized,\n populationPromises,\n req,\n showHiddenFields,\n siblingDoc,\n })\n }\n },\n hooks: {\n afterChange: [\n async (args) => {\n const {\n collection,\n context: _context,\n data,\n field,\n global,\n indexPath,\n operation,\n originalDoc,\n parentIsLocalized,\n path,\n previousDoc,\n previousValue,\n req,\n schemaPath,\n } = args\n\n let { value } = args\n if (finalSanitizedEditorConfig?.features?.hooks?.afterChange?.length) {\n for (const hook of finalSanitizedEditorConfig.features.hooks.afterChange) {\n value = await hook(args)\n }\n }\n if (\n !finalSanitizedEditorConfig.features.nodeHooks?.afterChange?.size &&\n !finalSanitizedEditorConfig.features.getSubFields?.size\n ) {\n return value\n }\n // TO-DO: We should not use context, as it is intended for external use only\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const context: any = _context\n const nodeIDMap: {\n [key: string]: SerializedLexicalNode\n } = {}\n\n const previousNodeIDMap: {\n [key: string]: SerializedLexicalNode\n } = {}\n\n /**\n * Get the originalNodeIDMap from the beforeValidate hook, which is always run before this hook.\n */\n const originalNodeIDMap: {\n [key: string]: SerializedLexicalNode\n } = context?.internal?.richText?.[path.join('.')]?.originalNodeIDMap\n\n if (!originalNodeIDMap || !Object.keys(originalNodeIDMap).length || !value) {\n return value\n }\n\n recurseNodeTree({\n nodeIDMap,\n nodes: (value as SerializedEditorState)?.root?.children ?? [],\n })\n\n recurseNodeTree({\n nodeIDMap: previousNodeIDMap,\n nodes: (previousValue as SerializedEditorState)?.root?.children ?? [],\n })\n\n // eslint-disable-next-line prefer-const\n for (let [id, node] of Object.entries(nodeIDMap)) {\n const afterChangeHooks = finalSanitizedEditorConfig.features.nodeHooks?.afterChange\n const afterChangeHooksForNode = afterChangeHooks?.get(node.type)\n if (afterChangeHooksForNode) {\n for (const hook of afterChangeHooksForNode) {\n if (!originalNodeIDMap[id]) {\n console.warn(\n '(afterChange) No original node found for node with id',\n id,\n 'node:',\n node,\n 'path',\n path.join('.'),\n )\n continue\n }\n node = await hook({\n context,\n node,\n operation,\n originalNode: originalNodeIDMap[id],\n parentRichTextFieldPath: path,\n parentRichTextFieldSchemaPath: schemaPath,\n\n previousNode: previousNodeIDMap[id]!,\n req,\n })\n }\n }\n const subFieldFn = finalSanitizedEditorConfig.features.getSubFields?.get(node.type)\n const subFieldDataFn = finalSanitizedEditorConfig.features.getSubFieldsData?.get(\n node.type,\n )\n\n if (subFieldFn && subFieldDataFn) {\n const subFields = subFieldFn({ node, req })\n const nodeSiblingData = subFieldDataFn({ node, req }) ?? {}\n\n const nodeSiblingDoc = subFieldDataFn({ node: originalNodeIDMap[id]!, req }) ?? {}\n const nodePreviousSiblingDoc =\n subFieldDataFn({ node: previousNodeIDMap[id]!, req }) ?? {}\n\n if (subFields?.length) {\n await afterChangeTraverseFields({\n blockData: nodeSiblingData,\n collection,\n context,\n data: data ?? {},\n doc: originalDoc,\n fields: subFields,\n global,\n operation,\n parentIndexPath: indexPath.join('-'),\n parentIsLocalized: parentIsLocalized || field.localized || false,\n parentPath: path.join('.'),\n parentSchemaPath: schemaPath.join('.'),\n previousDoc,\n previousSiblingDoc: { ...nodePreviousSiblingDoc },\n req,\n siblingData: nodeSiblingData || {},\n siblingDoc: { ...nodeSiblingDoc },\n })\n }\n }\n }\n return value\n },\n ],\n afterRead: [\n /**\n * afterRead hooks do not receive the originalNode. Thus, they can run on all nodes, not just nodes with an ID.\n */\n async (args) => {\n const {\n collection,\n context: context,\n currentDepth,\n depth,\n draft,\n fallbackLocale,\n field,\n fieldPromises,\n findMany,\n flattenLocales,\n global,\n indexPath,\n locale,\n originalDoc,\n overrideAccess,\n parentIsLocalized,\n path,\n populate,\n populationPromises,\n req,\n schemaPath,\n showHiddenFields,\n triggerAccessControl,\n triggerHooks,\n } = args\n\n let { value } = args\n\n if (finalSanitizedEditorConfig?.features?.hooks?.afterRead?.length) {\n for (const hook of finalSanitizedEditorConfig.features.hooks.afterRead) {\n value = await hook(args)\n }\n }\n\n if (\n !finalSanitizedEditorConfig.features.nodeHooks?.afterRead?.size &&\n !finalSanitizedEditorConfig.features.getSubFields?.size\n ) {\n return value\n }\n const flattenedNodes: SerializedLexicalNode[] = []\n\n recurseNodeTree({\n flattenedNodes,\n nodes: (value as SerializedEditorState)?.root?.children ?? [],\n })\n\n for (let node of flattenedNodes) {\n const afterReadHooks = finalSanitizedEditorConfig.features.nodeHooks?.afterRead\n const afterReadHooksForNode = afterReadHooks?.get(node.type)\n if (afterReadHooksForNode) {\n for (const hook of afterReadHooksForNode) {\n node = await hook({\n context,\n currentDepth: currentDepth!,\n depth: depth!,\n draft: draft!,\n fallbackLocale: fallbackLocale!,\n fieldPromises: fieldPromises!,\n findMany: findMany!,\n flattenLocales: flattenLocales!,\n locale: locale!,\n node,\n overrideAccess: overrideAccess!,\n parentRichTextFieldPath: path,\n parentRichTextFieldSchemaPath: schemaPath,\n populateArg: populate,\n populationPromises: populationPromises!,\n req,\n showHiddenFields: showHiddenFields!,\n triggerAccessControl: triggerAccessControl!,\n triggerHooks: triggerHooks!,\n })\n }\n }\n const subFieldFn = finalSanitizedEditorConfig.features.getSubFields?.get(node.type)\n const subFieldDataFn = finalSanitizedEditorConfig.features.getSubFieldsData?.get(\n node.type,\n )\n\n if (subFieldFn && subFieldDataFn) {\n const subFields = subFieldFn({ node, req })\n const nodeSiblingData = subFieldDataFn({ node, req }) ?? {}\n\n if (subFields?.length) {\n afterReadTraverseFields({\n blockData: nodeSiblingData,\n collection,\n context,\n currentDepth: currentDepth!,\n depth: depth!,\n doc: originalDoc,\n draft: draft!,\n fallbackLocale: fallbackLocale!,\n fieldPromises: fieldPromises!,\n fields: subFields,\n findMany: findMany!,\n flattenLocales: flattenLocales!,\n global,\n locale: locale!,\n overrideAccess: overrideAccess!,\n parentIndexPath: indexPath.join('-'),\n parentIsLocalized: parentIsLocalized || field.localized || false,\n parentPath: path.join('.'),\n parentSchemaPath: schemaPath.join('.'),\n populate,\n populationPromises: populationPromises!,\n req,\n showHiddenFields: showHiddenFields!,\n siblingDoc: nodeSiblingData,\n triggerAccessControl,\n triggerHooks,\n })\n }\n }\n }\n\n return value\n },\n ],\n beforeChange: [\n async (args) => {\n const {\n collection,\n context: _context,\n data,\n docWithLocales,\n errors,\n field,\n fieldLabelPath,\n global,\n indexPath,\n mergeLocaleActions,\n operation,\n originalDoc,\n parentIsLocalized,\n path,\n previousValue,\n req,\n schemaPath,\n siblingData,\n siblingDocWithLocales,\n skipValidation,\n } = args\n\n let { value } = args\n\n if (finalSanitizedEditorConfig?.features?.hooks?.beforeChange?.length) {\n for (const hook of finalSanitizedEditorConfig.features.hooks.beforeChange) {\n value = await hook(args)\n }\n }\n\n if (\n !finalSanitizedEditorConfig.features.nodeHooks?.beforeChange?.size &&\n !finalSanitizedEditorConfig.features.getSubFields?.size\n ) {\n return value\n }\n\n // TO-DO: We should not use context, as it is intended for external use only\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const context: any = _context\n const nodeIDMap: {\n [key: string]: SerializedLexicalNode\n } = {}\n\n /**\n * Get the originalNodeIDMap from the beforeValidate hook, which is always run before this hook.\n */\n const originalNodeIDMap: {\n [key: string]: SerializedLexicalNode\n } = context?.internal?.richText?.[path.join('.')]?.originalNodeIDMap\n\n if (!originalNodeIDMap || !Object.keys(originalNodeIDMap).length || !value) {\n return value\n }\n const previousNodeIDMap: {\n [key: string]: SerializedLexicalNode\n } = {}\n const originalNodeWithLocalesIDMap: {\n [key: string]: SerializedLexicalNode\n } = {}\n\n recurseNodeTree({\n nodeIDMap,\n nodes: (value as SerializedEditorState)?.root?.children ?? [],\n })\n\n recurseNodeTree({\n nodeIDMap: previousNodeIDMap,\n nodes: (previousValue as SerializedEditorState)?.root?.children ?? [],\n })\n if (field.name && siblingDocWithLocales?.[field.name]) {\n recurseNodeTree({\n nodeIDMap: originalNodeWithLocalesIDMap,\n nodes:\n (siblingDocWithLocales[field.name] as SerializedEditorState)?.root?.children ??\n [],\n })\n }\n\n // eslint-disable-next-line prefer-const\n for (let [id, node] of Object.entries(nodeIDMap)) {\n const beforeChangeHooks = finalSanitizedEditorConfig.features.nodeHooks?.beforeChange\n const beforeChangeHooksForNode = beforeChangeHooks?.get(node.type)\n if (beforeChangeHooksForNode) {\n for (const hook of beforeChangeHooksForNode) {\n if (!originalNodeIDMap[id]) {\n console.warn(\n '(beforeChange) No original node found for node with id',\n id,\n 'node:',\n node,\n 'path',\n path.join('.'),\n )\n continue\n }\n node = await hook({\n context,\n errors: errors!,\n mergeLocaleActions: mergeLocaleActions!,\n node,\n operation: operation!,\n originalNode: originalNodeIDMap[id],\n originalNodeWithLocales: originalNodeWithLocalesIDMap[id],\n parentRichTextFieldPath: path,\n parentRichTextFieldSchemaPath: schemaPath,\n\n previousNode: previousNodeIDMap[id]!,\n req,\n skipValidation: skipValidation!,\n })\n }\n }\n\n const subFieldFn = finalSanitizedEditorConfig.features.getSubFields?.get(node.type)\n const subFieldDataFn = finalSanitizedEditorConfig.features.getSubFieldsData?.get(\n node.type,\n )\n\n if (subFieldFn && subFieldDataFn) {\n const subFields = subFieldFn({ node, req })\n const nodeSiblingData = subFieldDataFn({ node, req }) ?? {}\n const nodeSiblingDocWithLocales =\n subFieldDataFn({\n node: originalNodeWithLocalesIDMap[id]!,\n req,\n }) ?? {}\n const nodePreviousSiblingDoc =\n subFieldDataFn({ node: previousNodeIDMap[id]!, req }) ?? {}\n\n if (subFields?.length) {\n await beforeChangeTraverseFields({\n id,\n blockData: nodeSiblingData,\n collection,\n context,\n data: data ?? {},\n doc: originalDoc ?? {},\n docWithLocales: docWithLocales ?? {},\n errors: errors!,\n fieldLabelPath,\n fields: subFields,\n global,\n mergeLocaleActions: mergeLocaleActions!,\n operation: operation!,\n parentIndexPath: indexPath.join('-'),\n parentIsLocalized: parentIsLocalized || field.localized || false,\n parentPath: path.join('.'),\n parentSchemaPath: schemaPath.join('.'),\n req,\n siblingData: nodeSiblingData,\n siblingDoc: nodePreviousSiblingDoc,\n siblingDocWithLocales: nodeSiblingDocWithLocales ?? {},\n skipValidation,\n })\n }\n }\n }\n\n /**\n * within the beforeChange hook, id's may be re-generated.\n * Example:\n * 1. Seed data contains IDs for block feature blocks.\n * 2. Those are used in beforeValidate\n * 3. in beforeChange, those IDs are regenerated, because you cannot provide IDs during document creation. See baseIDField beforeChange hook for reasoning\n * 4. Thus, in order for all post-beforeChange hooks to receive the correct ID, we need to update the originalNodeIDMap with the new ID's, by regenerating the nodeIDMap.\n * The reason this is not generated for every hook, is to save on performance. We know we only really have to generate it in beforeValidate, which is the first hook,\n * and in beforeChange, which is where modifications to the provided IDs can occur.\n */\n const newOriginalNodeIDMap: {\n [key: string]: SerializedLexicalNode\n } = {}\n\n const previousOriginalValue = siblingData[field.name!]\n\n recurseNodeTree({\n nodeIDMap: newOriginalNodeIDMap,\n nodes: (previousOriginalValue as SerializedEditorState)?.root?.children ?? [],\n })\n\n if (!context.internal) {\n // Add to context, for other hooks to use\n context.internal = {}\n }\n if (!context.internal.richText) {\n context.internal.richText = {}\n }\n context.internal.richText[path.join('.')] = {\n originalNodeIDMap: newOriginalNodeIDMap,\n }\n\n return value\n },\n ],\n beforeValidate: [\n async (args) => {\n const {\n collection,\n context,\n data,\n field,\n global,\n indexPath,\n operation,\n originalDoc,\n overrideAccess,\n parentIsLocalized,\n path,\n previousValue,\n req,\n schemaPath,\n } = args\n\n let { value } = args\n if (finalSanitizedEditorConfig?.features?.hooks?.beforeValidate?.length) {\n for (const hook of finalSanitizedEditorConfig.features.hooks.beforeValidate) {\n value = await hook(args)\n }\n }\n\n // return value if there are NO hooks\n if (\n !finalSanitizedEditorConfig.features.nodeHooks?.beforeValidate?.size &&\n !finalSanitizedEditorConfig.features.nodeHooks?.afterChange?.size &&\n !finalSanitizedEditorConfig.features.nodeHooks?.beforeChange?.size &&\n !finalSanitizedEditorConfig.features.getSubFields?.size\n ) {\n return value\n }\n\n /**\n * beforeValidate is the first field hook which runs. This is where we can create the node map, which can then be used in the other hooks.\n *\n */\n\n /**\n * flattenedNodes contains all nodes in the editor, in the order they appear in the editor. They will be used for the following hooks:\n * - afterRead\n *\n * The other hooks require nodes to have IDs, which is why those are ran only from the nodeIDMap. They require IDs because they have both doc/siblingDoc and data/siblingData, and\n * thus require a reliable way to match new node data to old node data. Given that node positions can change in between hooks, this is only reliably possible for nodes which are saved with\n * an ID.\n */\n //const flattenedNodes: SerializedLexicalNode[] = []\n\n /**\n * Only nodes with id's (so, nodes with hooks added to them) will be added to the nodeIDMap. They will be used for the following hooks:\n * - afterChange\n * - beforeChange\n * - beforeValidate\n *\n * Other hooks are handled by the flattenedNodes. All nodes in the nodeIDMap are part of flattenedNodes.\n */\n\n const originalNodeIDMap: {\n [key: string]: SerializedLexicalNode\n } = {}\n\n recurseNodeTree({\n nodeIDMap: originalNodeIDMap,\n nodes: (previousValue as SerializedEditorState)?.root?.children ?? [],\n })\n\n if (!context.internal) {\n // Add to context, for other hooks to use\n context.internal = {}\n }\n if (!(context as any).internal.richText) {\n ;(context as any).internal.richText = {}\n }\n ;(context as any).internal.richText[path.join('.')] = {\n originalNodeIDMap,\n }\n\n /**\n * Now that the maps for all hooks are set up, we can run the validate hook\n */\n if (!finalSanitizedEditorConfig.features.nodeHooks?.beforeValidate?.size) {\n return value\n }\n const nodeIDMap: {\n [key: string]: SerializedLexicalNode\n } = {}\n recurseNodeTree({\n //flattenedNodes,\n nodeIDMap,\n nodes: (value as SerializedEditorState)?.root?.children ?? [],\n })\n\n // eslint-disable-next-line prefer-const\n for (let [id, node] of Object.entries(nodeIDMap)) {\n const beforeValidateHooks =\n finalSanitizedEditorConfig.features.nodeHooks.beforeValidate\n const beforeValidateHooksForNode = beforeValidateHooks?.get(node.type)\n if (beforeValidateHooksForNode) {\n for (const hook of beforeValidateHooksForNode) {\n if (!originalNodeIDMap[id]) {\n console.warn(\n '(beforeValidate) No original node found for node with id',\n id,\n 'node:',\n node,\n 'path',\n path.join('.'),\n )\n continue\n }\n node = await hook({\n context,\n node,\n operation,\n originalNode: originalNodeIDMap[id],\n overrideAccess: overrideAccess!,\n parentRichTextFieldPath: path,\n parentRichTextFieldSchemaPath: schemaPath,\n req,\n })\n }\n }\n const subFieldFn = finalSanitizedEditorConfig.features.getSubFields?.get(node.type)\n const subFieldDataFn = finalSanitizedEditorConfig.features.getSubFieldsData?.get(\n node.type,\n )\n\n if (subFieldFn && subFieldDataFn) {\n const subFields = subFieldFn({ node, req })\n const nodeSiblingData = subFieldDataFn({ node, req }) ?? {}\n\n const nodeSiblingDoc = subFieldDataFn({ node: originalNodeIDMap[id]!, req }) ?? {}\n\n if (subFields?.length) {\n await beforeValidateTraverseFields({\n id,\n blockData: nodeSiblingData,\n collection,\n context,\n data,\n doc: originalDoc,\n fields: subFields,\n global,\n operation,\n overrideAccess: overrideAccess!,\n parentIndexPath: indexPath.join('-'),\n parentIsLocalized: parentIsLocalized || field.localized || false,\n parentPath: path.join('.'),\n parentSchemaPath: schemaPath.join('.'),\n req,\n siblingData: nodeSiblingData,\n siblingDoc: nodeSiblingDoc,\n })\n }\n }\n }\n\n return value\n },\n ],\n },\n i18n: featureI18n,\n outputSchema: ({\n collectionIDFieldTypes,\n config,\n field,\n i18n,\n interfaceNameDefinitions,\n isRequired,\n }) => {\n let outputSchema: JSONSchema4 = {\n // This schema matches the SerializedEditorState type so far, that it's possible to cast SerializedEditorState to this schema without any errors.\n // In the future, we should\n // 1) allow recursive children\n // 2) Pass in all the different types for every node added to the editorconfig. This can be done with refs in the schema.\n type: withNullableJSONSchemaType('object', isRequired),\n properties: {\n root: {\n type: 'object',\n additionalProperties: false,\n properties: {\n type: {\n type: 'string',\n },\n children: {\n type: 'array',\n items: {\n type: 'object',\n additionalProperties: true,\n properties: {\n type: {\n type: 'string',\n },\n version: {\n type: 'integer',\n },\n },\n required: ['type', 'version'],\n },\n },\n direction: {\n oneOf: [\n {\n enum: ['ltr', 'rtl'],\n },\n {\n type: 'null',\n },\n ],\n },\n format: {\n type: 'string',\n enum: ['left', 'start', 'center', 'right', 'end', 'justify', ''], // ElementFormatType, since the root node is an element\n },\n indent: {\n type: 'integer',\n },\n version: {\n type: 'integer',\n },\n },\n required: ['children', 'direction', 'format', 'indent', 'type', 'version'],\n },\n },\n required: ['root'],\n }\n for (const modifyOutputSchema of finalSanitizedEditorConfig.features.generatedTypes\n .modifyOutputSchemas) {\n outputSchema = modifyOutputSchema({\n collectionIDFieldTypes,\n config,\n currentSchema: outputSchema,\n field,\n i18n,\n interfaceNameDefinitions,\n isRequired,\n })\n }\n\n return outputSchema\n },\n validate: richTextValidateHOC({\n editorConfig: finalSanitizedEditorConfig,\n }),\n }\n }\n}\n\nexport { AlignFeature } from './features/align/server/index.js'\nexport { BlockquoteFeature } from './features/blockquote/server/index.js'\nexport { BlocksFeature, type BlocksFeatureProps } from './features/blocks/server/index.js'\nexport {\n $createServerBlockNode,\n $isServerBlockNode,\n type BlockFields,\n ServerBlockNode,\n} from './features/blocks/server/nodes/BlocksNode.js'\n\nexport { convertHTMLToLexical } from './features/converters/htmlToLexical/index.js'\n\nexport { lexicalHTMLField } from './features/converters/lexicalToHtml/async/field/index.js'\nexport { LinebreakHTMLConverter } from './features/converters/lexicalToHtml_deprecated/converter/converters/linebreak.js'\n\nexport { ParagraphHTMLConverter } from './features/converters/lexicalToHtml_deprecated/converter/converters/paragraph.js'\n\nexport { TabHTMLConverter } from './features/converters/lexicalToHtml_deprecated/converter/converters/tab.js'\nexport { TextHTMLConverter } from './features/converters/lexicalToHtml_deprecated/converter/converters/text.js'\nexport { defaultHTMLConverters } from './features/converters/lexicalToHtml_deprecated/converter/defaultConverters.js'\n\nexport {\n convertLexicalNodesToHTML,\n convertLexicalToHTML,\n} from './features/converters/lexicalToHtml_deprecated/converter/index.js'\nexport type { HTMLConverter } from './features/converters/lexicalToHtml_deprecated/converter/types.js'\nexport {\n consolidateHTMLConverters,\n lexicalHTML,\n} from './features/converters/lexicalToHtml_deprecated/field/index.js'\nexport {\n HTMLConverterFeature,\n type HTMLConverterFeatureProps,\n} from './features/converters/lexicalToHtml_deprecated/index.js'\nexport { convertLexicalToMarkdown } from './features/converters/lexicalToMarkdown/index.js'\nexport { convertMarkdownToLexical } from './features/converters/markdownToLexical/index.js'\nexport { getPayloadPopulateFn } from './features/converters/utilities/payloadPopulateFn.js'\n\nexport { getRestPopulateFn } from './features/converters/utilities/restPopulateFn.js'\nexport { DebugJsxConverterFeature } from './features/debug/jsxConverter/server/index.js'\nexport { TestRecorderFeature } from './features/debug/testRecorder/server/index.js'\nexport { TreeViewFeature } from './features/debug/treeView/server/index.js'\nexport { EXPERIMENTAL_TableFeature } from './features/experimental_table/server/index.js'\nexport { BoldFeature } from './features/format/bold/feature.server.js'\nexport { InlineCodeFeature } from './features/format/inlineCode/feature.server.js'\n\nexport { ItalicFeature } from './features/format/italic/feature.server.js'\nexport { StrikethroughFeature } from './features/format/strikethrough/feature.server.js'\nexport { SubscriptFeature } from './features/format/subscript/feature.server.js'\nexport { SuperscriptFeature } from './features/format/superscript/feature.server.js'\nexport { UnderlineFeature } from './features/format/underline/feature.server.js'\nexport { HeadingFeature, type HeadingFeatureProps } from './features/heading/server/index.js'\nexport { HorizontalRuleFeature } from './features/horizontalRule/server/index.js'\n\nexport { IndentFeature } from './features/indent/server/index.js'\n\nexport { AutoLinkNode } from './features/link/nodes/AutoLinkNode.js'\nexport { LinkNode } from './features/link/nodes/LinkNode.js'\nexport type { LinkFields } from './features/link/nodes/types.js'\nexport { LinkFeature, type LinkFeatureServerProps } from './features/link/server/index.js'\nexport { ChecklistFeature } from './features/lists/checklist/server/index.js'\nexport { OrderedListFeature } from './features/lists/orderedList/server/index.js'\n\nexport { UnorderedListFeature } from './features/lists/unorderedList/server/index.js'\n\nexport type {\n SlateNode,\n SlateNodeConverter,\n} from './features/migrations/slateToLexical/converter/types.js'\nexport { ParagraphFeature } from './features/paragraph/server/index.js'\nexport {\n RelationshipFeature,\n type RelationshipFeatureProps,\n} from './features/relationship/server/index.js'\n\nexport {\n type RelationshipData,\n RelationshipServerNode,\n} from './features/relationship/server/nodes/RelationshipNode.js'\nexport { FixedToolbarFeature } from './features/toolbars/fixed/server/index.js'\n\nexport { InlineToolbarFeature } from './features/toolbars/inline/server/index.js'\nexport type { ToolbarGroup, ToolbarGroupItem } from './features/toolbars/types.js'\nexport type {\n BaseClientFeatureProps,\n ClientFeature,\n ClientFeatureProviderMap,\n FeatureProviderClient,\n FeatureProviderProviderClient,\n PluginComponent,\n PluginComponentWithAnchor,\n ResolvedClientFeature,\n ResolvedClientFeatureMap,\n SanitizedClientFeatures,\n SanitizedPlugin,\n} from './features/typesClient.js'\n\nexport type {\n AfterChangeNodeHook,\n AfterChangeNodeHookArgs,\n AfterReadNodeHook,\n AfterReadNodeHookArgs,\n BaseNodeHookArgs,\n BeforeChangeNodeHook,\n BeforeChangeNodeHookArgs,\n BeforeValidateNodeHook,\n BeforeValidateNodeHookArgs,\n FeatureProviderProviderServer,\n FeatureProviderServer,\n NodeValidation,\n NodeWithHooks,\n PopulationPromise,\n ResolvedServerFeature,\n ResolvedServerFeatureMap,\n SanitizedServerFeatures,\n ServerFeature,\n ServerFeatureProviderMap,\n} from './features/typesServer.js'\n\nexport { createNode } from './features/typeUtilities.js' // Only useful in feature.server.ts\n\nexport { UploadFeature } from './features/upload/server/index.js'\nexport type { UploadFeatureProps } from './features/upload/server/index.js'\n\nexport { type UploadData, UploadServerNode } from './features/upload/server/nodes/UploadNode.js'\nexport type { EditorConfigContextType } from './lexical/config/client/EditorConfigProvider.js'\n\nexport {\n defaultEditorConfig,\n defaultEditorFeatures,\n defaultEditorLexicalConfig,\n} from './lexical/config/server/default.js'\nexport { loadFeatures, sortFeaturesForOptimalLoading } from './lexical/config/server/loader.js'\n\nexport {\n sanitizeServerEditorConfig,\n sanitizeServerFeatures,\n} from './lexical/config/server/sanitize.js'\nexport type {\n ClientEditorConfig,\n SanitizedClientEditorConfig,\n SanitizedServerEditorConfig,\n ServerEditorConfig,\n} from './lexical/config/types.js'\nexport type { AdapterProps }\n\nexport { getEnabledNodes, getEnabledNodesFromServerNodes } from './lexical/nodes/index.js'\n\nexport type {\n SlashMenuGroup,\n SlashMenuItem,\n} from './lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/types.js'\nexport {\n DETAIL_TYPE_TO_DETAIL,\n DOUBLE_LINE_BREAK,\n ELEMENT_FORMAT_TO_TYPE,\n ELEMENT_TYPE_TO_FORMAT,\n IS_ALL_FORMATTING,\n LTR_REGEX,\n NodeFormat,\n NON_BREAKING_SPACE,\n RTL_REGEX,\n TEXT_MODE_TO_TYPE,\n TEXT_TYPE_TO_FORMAT,\n TEXT_TYPE_TO_MODE,\n} from './lexical/utils/nodeFormat.js'\n\nexport { sanitizeUrl, validateUrl } from './lexical/utils/url.js'\n\nexport type * from './nodeTypes.js'\n\nexport { $convertFromMarkdownString } from './packages/@lexical/markdown/index.js'\nexport { defaultRichTextValue } from './populateGraphQL/defaultValue.js'\nexport { populate } from './populateGraphQL/populate.js'\n\nexport type { LexicalEditorProps, LexicalFieldAdminProps, LexicalRichTextAdapter } from './types.js'\n\nexport { createServerFeature } from './utilities/createServerFeature.js'\nexport { editorConfigFactory } from './utilities/editorConfigFactory.js'\n\nexport type { FieldsDrawerProps } from './utilities/fieldsDrawer/Drawer.js'\nexport { extractPropsFromJSXPropsString } from './utilities/jsx/extractPropsFromJSXPropsString.js'\n\nexport {\n extractFrontmatter,\n frontmatterToObject,\n objectToFrontmatter,\n propsToJSXString,\n} from './utilities/jsx/jsx.js'\n\nexport { upgradeLexicalData } from './utilities/upgradeLexicalData/index.js'\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["afterChangeTraverseFields","afterReadTraverseFields","beforeChangeTraverseFields","beforeValidateTraverseFields","checkDependencies","withNullableJSONSchemaType","getDefaultSanitizedEditorConfig","i18n","defaultEditorFeatures","populateLexicalPopulationPromises","featuresInputToEditorConfig","getGenerateImportMap","getGenerateSchemaMap","recurseNodeTree","richTextValidateHOC","checkedDependencies","lexicalTargetVersion","lexicalEditor","args","process","env","NODE_ENV","PAYLOAD_DISABLE_DEPENDENCY_CHECKER","dependencyGroups","name","dependencies","targetVersion","config","isRoot","parentIsLocalized","features","resolvedFeatureMap","finalSanitizedEditorConfig","lexical","result","sanitizedConfig","featureI18n","lang","general","CellComponent","path","serverProps","admin","sanitizedEditorConfig","DiffComponent","editorConfig","FieldComponent","generateImportMap","generateSchemaMap","graphQLPopulationPromises","context","currentDepth","depth","draft","field","fieldPromises","findMany","flattenLocales","overrideAccess","populationPromises","req","showHiddenFields","siblingDoc","size","editorPopulationPromises","hooks","afterChange","collection","_context","data","global","indexPath","operation","originalDoc","previousDoc","previousValue","schemaPath","value","length","hook","nodeHooks","getSubFields","nodeIDMap","previousNodeIDMap","originalNodeIDMap","internal","richText","join","Object","keys","nodes","root","children","id","node","entries","afterChangeHooks","afterChangeHooksForNode","get","type","console","warn","originalNode","parentRichTextFieldPath","parentRichTextFieldSchemaPath","previousNode","subFieldFn","subFieldDataFn","getSubFieldsData","subFields","nodeSiblingData","nodeSiblingDoc","nodePreviousSiblingDoc","blockData","doc","fields","parentIndexPath","localized","parentPath","parentSchemaPath","previousSiblingDoc","siblingData","afterRead","fallbackLocale","locale","populate","triggerAccessControl","triggerHooks","flattenedNodes","afterReadHooks","afterReadHooksForNode","populateArg","beforeChange","docWithLocales","errors","fieldLabelPath","mergeLocaleActions","siblingDocWithLocales","skipValidation","originalNodeWithLocalesIDMap","beforeChangeHooks","beforeChangeHooksForNode","originalNodeWithLocales","nodeSiblingDocWithLocales","newOriginalNodeIDMap","previousOriginalValue","beforeValidate","beforeValidateHooks","beforeValidateHooksForNode","outputSchema","collectionIDFieldTypes","interfaceNameDefinitions","isRequired","properties","additionalProperties","items","version","required","direction","oneOf","enum","format","indent","modifyOutputSchema","generatedTypes","modifyOutputSchemas","currentSchema","validate","AlignFeature","BlockquoteFeature","BlocksFeature","$createServerBlockNode","$isServerBlockNode","ServerBlockNode","convertHTMLToLexical","lexicalHTMLField","LinebreakHTMLConverter","ParagraphHTMLConverter","TabHTMLConverter","TextHTMLConverter","defaultHTMLConverters","convertLexicalNodesToHTML","convertLexicalToHTML","consolidateHTMLConverters","lexicalHTML","HTMLConverterFeature","convertLexicalToMarkdown","convertMarkdownToLexical","getPayloadPopulateFn","getRestPopulateFn","DebugJsxConverterFeature","TestRecorderFeature","TreeViewFeature","EXPERIMENTAL_TableFeature","BoldFeature","InlineCodeFeature","ItalicFeature","StrikethroughFeature","SubscriptFeature","SuperscriptFeature","UnderlineFeature","HeadingFeature","HorizontalRuleFeature","IndentFeature","AutoLinkNode","LinkNode","LinkFeature","ChecklistFeature","OrderedListFeature","UnorderedListFeature","ParagraphFeature","RelationshipFeature","RelationshipServerNode","FixedToolbarFeature","InlineToolbarFeature","createNode","UploadFeature","UploadServerNode","defaultEditorConfig","defaultEditorLexicalConfig","loadFeatures","sortFeaturesForOptimalLoading","sanitizeServerEditorConfig","sanitizeServerFeatures","getEnabledNodes","getEnabledNodesFromServerNodes","DETAIL_TYPE_TO_DETAIL","DOUBLE_LINE_BREAK","ELEMENT_FORMAT_TO_TYPE","ELEMENT_TYPE_TO_FORMAT","IS_ALL_FORMATTING","LTR_REGEX","NodeFormat","NON_BREAKING_SPACE","RTL_REGEX","TEXT_MODE_TO_TYPE","TEXT_TYPE_TO_FORMAT","TEXT_TYPE_TO_MODE","sanitizeUrl","validateUrl","$convertFromMarkdownString","defaultRichTextValue","createServerFeature","editorConfigFactory","extractPropsFromJSXPropsString","extractFrontmatter","frontmatterToObject","objectToFrontmatter","propsToJSXString","upgradeLexicalData"],"sources":["../src/index.ts"],"sourcesContent":["import type { JSONSchema4 } from 'json-schema'\nimport type { SerializedEditorState, SerializedLexicalNode } from 'lexical'\n\nimport {\n afterChangeTraverseFields,\n afterReadTraverseFields,\n beforeChangeTraverseFields,\n beforeValidateTraverseFields,\n checkDependencies,\n withNullableJSONSchemaType,\n} from 'payload'\n\nimport type { FeatureProviderServer, ResolvedServerFeatureMap } from './features/typesServer.js'\nimport type { SanitizedServerEditorConfig } from './lexical/config/types.js'\nimport type { AdapterProps, LexicalEditorProps, LexicalRichTextAdapterProvider } from './types.js'\n\nimport { getDefaultSanitizedEditorConfig } from './getDefaultSanitizedEditorConfig.js'\nimport { i18n } from './i18n.js'\nimport { defaultEditorFeatures } from './lexical/config/server/default.js'\nimport { populateLexicalPopulationPromises } from './populateGraphQL/populateLexicalPopulationPromises.js'\nimport { featuresInputToEditorConfig } from './utilities/editorConfigFactory.js'\nimport { getGenerateImportMap } from './utilities/generateImportMap.js'\nimport { getGenerateSchemaMap } from './utilities/generateSchemaMap.js'\nimport { recurseNodeTree } from './utilities/recurseNodeTree.js'\nimport { richTextValidateHOC } from './validate/index.js'\n\nlet checkedDependencies = false\n\nexport const lexicalTargetVersion = '0.28.0'\n\nexport function lexicalEditor(args?: LexicalEditorProps): LexicalRichTextAdapterProvider {\n if (\n process.env.NODE_ENV !== 'production' &&\n process.env.PAYLOAD_DISABLE_DEPENDENCY_CHECKER !== 'true' &&\n !checkedDependencies\n ) {\n checkedDependencies = true\n void checkDependencies({\n dependencyGroups: [\n {\n name: 'lexical',\n dependencies: [\n 'lexical',\n '@lexical/headless',\n '@lexical/link',\n '@lexical/list',\n '@lexical/mark',\n '@lexical/react',\n '@lexical/rich-text',\n '@lexical/selection',\n '@lexical/utils',\n ],\n targetVersion: lexicalTargetVersion,\n },\n ],\n })\n }\n return async ({ config, isRoot, parentIsLocalized }) => {\n let features: FeatureProviderServer<unknown, unknown, unknown>[] = []\n let resolvedFeatureMap: ResolvedServerFeatureMap\n\n let finalSanitizedEditorConfig: SanitizedServerEditorConfig // For server only\n if (!args || (!args.features && !args.lexical)) {\n finalSanitizedEditorConfig = await getDefaultSanitizedEditorConfig({\n config,\n parentIsLocalized,\n })\n\n features = defaultEditorFeatures\n\n resolvedFeatureMap = finalSanitizedEditorConfig.resolvedFeatureMap\n } else {\n const result = await featuresInputToEditorConfig({\n config,\n features: args?.features,\n isRoot,\n lexical: args?.lexical,\n parentIsLocalized,\n })\n finalSanitizedEditorConfig = result.sanitizedConfig\n features = result.features\n resolvedFeatureMap = result.resolvedFeatureMap\n }\n\n const featureI18n = finalSanitizedEditorConfig.features.i18n\n for (const lang in i18n) {\n if (!featureI18n[lang as keyof typeof featureI18n]) {\n featureI18n[lang as keyof typeof featureI18n] = {\n lexical: {},\n }\n }\n // @ts-expect-error - vestiges of when tsconfig was not strict. Feel free to improve\n featureI18n[lang].lexical.general = i18n[lang]\n }\n\n return {\n CellComponent: {\n path: '@payloadcms/richtext-lexical/rsc#RscEntryLexicalCell',\n serverProps: {\n admin: args?.admin,\n sanitizedEditorConfig: finalSanitizedEditorConfig,\n },\n },\n DiffComponent: {\n path: '@payloadcms/richtext-lexical/rsc#LexicalDiffComponent',\n serverProps: {\n admin: args?.admin,\n sanitizedEditorConfig: finalSanitizedEditorConfig,\n },\n },\n editorConfig: finalSanitizedEditorConfig,\n features,\n FieldComponent: {\n path: '@payloadcms/richtext-lexical/rsc#RscEntryLexicalField',\n serverProps: {\n admin: args?.admin,\n sanitizedEditorConfig: finalSanitizedEditorConfig,\n },\n },\n generateImportMap: getGenerateImportMap({\n resolvedFeatureMap,\n }),\n generateSchemaMap: getGenerateSchemaMap({\n resolvedFeatureMap,\n }),\n graphQLPopulationPromises({\n context,\n currentDepth,\n depth,\n draft,\n field,\n fieldPromises,\n findMany,\n flattenLocales,\n overrideAccess,\n parentIsLocalized,\n populationPromises,\n req,\n showHiddenFields,\n siblingDoc,\n }) {\n // check if there are any features with nodes which have populationPromises for this field\n if (finalSanitizedEditorConfig?.features?.graphQLPopulationPromises?.size) {\n populateLexicalPopulationPromises({\n context,\n currentDepth: currentDepth ?? 0,\n depth,\n draft,\n editorPopulationPromises: finalSanitizedEditorConfig.features.graphQLPopulationPromises,\n field,\n fieldPromises,\n findMany,\n flattenLocales,\n overrideAccess,\n parentIsLocalized,\n populationPromises,\n req,\n showHiddenFields,\n siblingDoc,\n })\n }\n },\n hooks: {\n afterChange: [\n async (args) => {\n const {\n collection,\n context: _context,\n data,\n field,\n global,\n indexPath,\n operation,\n originalDoc,\n parentIsLocalized,\n path,\n previousDoc,\n previousValue,\n req,\n schemaPath,\n } = args\n\n let { value } = args\n if (finalSanitizedEditorConfig?.features?.hooks?.afterChange?.length) {\n for (const hook of finalSanitizedEditorConfig.features.hooks.afterChange) {\n value = await hook(args)\n }\n }\n if (\n !finalSanitizedEditorConfig.features.nodeHooks?.afterChange?.size &&\n !finalSanitizedEditorConfig.features.getSubFields?.size\n ) {\n return value\n }\n // TO-DO: We should not use context, as it is intended for external use only\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const context: any = _context\n const nodeIDMap: {\n [key: string]: SerializedLexicalNode\n } = {}\n\n const previousNodeIDMap: {\n [key: string]: SerializedLexicalNode\n } = {}\n\n /**\n * Get the originalNodeIDMap from the beforeValidate hook, which is always run before this hook.\n */\n const originalNodeIDMap: {\n [key: string]: SerializedLexicalNode\n } = context?.internal?.richText?.[path.join('.')]?.originalNodeIDMap\n\n if (!originalNodeIDMap || !Object.keys(originalNodeIDMap).length || !value) {\n return value\n }\n\n recurseNodeTree({\n nodeIDMap,\n nodes: (value as SerializedEditorState)?.root?.children ?? [],\n })\n\n recurseNodeTree({\n nodeIDMap: previousNodeIDMap,\n nodes: (previousValue as SerializedEditorState)?.root?.children ?? [],\n })\n\n // eslint-disable-next-line prefer-const\n for (let [id, node] of Object.entries(nodeIDMap)) {\n const afterChangeHooks = finalSanitizedEditorConfig.features.nodeHooks?.afterChange\n const afterChangeHooksForNode = afterChangeHooks?.get(node.type)\n if (afterChangeHooksForNode) {\n for (const hook of afterChangeHooksForNode) {\n if (!originalNodeIDMap[id]) {\n console.warn(\n '(afterChange) No original node found for node with id',\n id,\n 'node:',\n node,\n 'path',\n path.join('.'),\n )\n continue\n }\n node = await hook({\n context,\n node,\n operation,\n originalNode: originalNodeIDMap[id],\n parentRichTextFieldPath: path,\n parentRichTextFieldSchemaPath: schemaPath,\n\n previousNode: previousNodeIDMap[id]!,\n req,\n })\n }\n }\n const subFieldFn = finalSanitizedEditorConfig.features.getSubFields?.get(node.type)\n const subFieldDataFn = finalSanitizedEditorConfig.features.getSubFieldsData?.get(\n node.type,\n )\n\n if (subFieldFn && subFieldDataFn) {\n const subFields = subFieldFn({ node, req })\n const nodeSiblingData = subFieldDataFn({ node, req }) ?? {}\n\n const nodeSiblingDoc = subFieldDataFn({ node: originalNodeIDMap[id]!, req }) ?? {}\n const nodePreviousSiblingDoc =\n subFieldDataFn({ node: previousNodeIDMap[id]!, req }) ?? {}\n\n if (subFields?.length) {\n await afterChangeTraverseFields({\n blockData: nodeSiblingData,\n collection,\n context,\n data: data ?? {},\n doc: originalDoc,\n fields: subFields,\n global,\n operation,\n parentIndexPath: indexPath.join('-'),\n parentIsLocalized: parentIsLocalized || field.localized || false,\n parentPath: path.join('.'),\n parentSchemaPath: schemaPath.join('.'),\n previousDoc,\n previousSiblingDoc: { ...nodePreviousSiblingDoc },\n req,\n siblingData: nodeSiblingData || {},\n siblingDoc: { ...nodeSiblingDoc },\n })\n }\n }\n }\n return value\n },\n ],\n afterRead: [\n /**\n * afterRead hooks do not receive the originalNode. Thus, they can run on all nodes, not just nodes with an ID.\n */\n async (args) => {\n const {\n collection,\n context: context,\n currentDepth,\n depth,\n draft,\n fallbackLocale,\n field,\n fieldPromises,\n findMany,\n flattenLocales,\n global,\n indexPath,\n locale,\n originalDoc,\n overrideAccess,\n parentIsLocalized,\n path,\n populate,\n populationPromises,\n req,\n schemaPath,\n showHiddenFields,\n triggerAccessControl,\n triggerHooks,\n } = args\n\n let { value } = args\n\n if (finalSanitizedEditorConfig?.features?.hooks?.afterRead?.length) {\n for (const hook of finalSanitizedEditorConfig.features.hooks.afterRead) {\n value = await hook(args)\n }\n }\n\n if (\n !finalSanitizedEditorConfig.features.nodeHooks?.afterRead?.size &&\n !finalSanitizedEditorConfig.features.getSubFields?.size\n ) {\n return value\n }\n const flattenedNodes: SerializedLexicalNode[] = []\n\n recurseNodeTree({\n flattenedNodes,\n nodes: (value as SerializedEditorState)?.root?.children ?? [],\n })\n\n for (let node of flattenedNodes) {\n const afterReadHooks = finalSanitizedEditorConfig.features.nodeHooks?.afterRead\n const afterReadHooksForNode = afterReadHooks?.get(node.type)\n if (afterReadHooksForNode) {\n for (const hook of afterReadHooksForNode) {\n node = await hook({\n context,\n currentDepth: currentDepth!,\n depth: depth!,\n draft: draft!,\n fallbackLocale: fallbackLocale!,\n fieldPromises: fieldPromises!,\n findMany: findMany!,\n flattenLocales: flattenLocales!,\n locale: locale!,\n node,\n overrideAccess: overrideAccess!,\n parentRichTextFieldPath: path,\n parentRichTextFieldSchemaPath: schemaPath,\n populateArg: populate,\n populationPromises: populationPromises!,\n req,\n showHiddenFields: showHiddenFields!,\n triggerAccessControl: triggerAccessControl!,\n triggerHooks: triggerHooks!,\n })\n }\n }\n const subFieldFn = finalSanitizedEditorConfig.features.getSubFields?.get(node.type)\n const subFieldDataFn = finalSanitizedEditorConfig.features.getSubFieldsData?.get(\n node.type,\n )\n\n if (subFieldFn && subFieldDataFn) {\n const subFields = subFieldFn({ node, req })\n const nodeSiblingData = subFieldDataFn({ node, req }) ?? {}\n\n if (subFields?.length) {\n afterReadTraverseFields({\n blockData: nodeSiblingData,\n collection,\n context,\n currentDepth: currentDepth!,\n depth: depth!,\n doc: originalDoc,\n draft: draft!,\n fallbackLocale: fallbackLocale!,\n fieldPromises: fieldPromises!,\n fields: subFields,\n findMany: findMany!,\n flattenLocales: flattenLocales!,\n global,\n locale: locale!,\n overrideAccess: overrideAccess!,\n parentIndexPath: indexPath.join('-'),\n parentIsLocalized: parentIsLocalized || field.localized || false,\n parentPath: path.join('.'),\n parentSchemaPath: schemaPath.join('.'),\n populate,\n populationPromises: populationPromises!,\n req,\n showHiddenFields: showHiddenFields!,\n siblingDoc: nodeSiblingData,\n triggerAccessControl,\n triggerHooks,\n })\n }\n }\n }\n\n return value\n },\n ],\n beforeChange: [\n async (args) => {\n const {\n collection,\n context: _context,\n data,\n docWithLocales,\n errors,\n field,\n fieldLabelPath,\n global,\n indexPath,\n mergeLocaleActions,\n operation,\n originalDoc,\n overrideAccess,\n parentIsLocalized,\n path,\n previousValue,\n req,\n schemaPath,\n siblingData,\n siblingDocWithLocales,\n skipValidation,\n } = args\n\n let { value } = args\n\n if (finalSanitizedEditorConfig?.features?.hooks?.beforeChange?.length) {\n for (const hook of finalSanitizedEditorConfig.features.hooks.beforeChange) {\n value = await hook(args)\n }\n }\n\n if (\n !finalSanitizedEditorConfig.features.nodeHooks?.beforeChange?.size &&\n !finalSanitizedEditorConfig.features.getSubFields?.size\n ) {\n return value\n }\n\n // TO-DO: We should not use context, as it is intended for external use only\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const context: any = _context\n const nodeIDMap: {\n [key: string]: SerializedLexicalNode\n } = {}\n\n /**\n * Get the originalNodeIDMap from the beforeValidate hook, which is always run before this hook.\n */\n const originalNodeIDMap: {\n [key: string]: SerializedLexicalNode\n } = context?.internal?.richText?.[path.join('.')]?.originalNodeIDMap\n\n if (!originalNodeIDMap || !Object.keys(originalNodeIDMap).length || !value) {\n return value\n }\n\n const previousNodeIDMap: {\n [key: string]: SerializedLexicalNode\n } = {}\n\n const originalNodeWithLocalesIDMap: {\n [key: string]: SerializedLexicalNode\n } = {}\n\n recurseNodeTree({\n nodeIDMap,\n nodes: (value as SerializedEditorState)?.root?.children ?? [],\n })\n\n recurseNodeTree({\n nodeIDMap: previousNodeIDMap,\n nodes: (previousValue as SerializedEditorState)?.root?.children ?? [],\n })\n if (field.name && siblingDocWithLocales?.[field.name]) {\n recurseNodeTree({\n nodeIDMap: originalNodeWithLocalesIDMap,\n nodes:\n (siblingDocWithLocales[field.name] as SerializedEditorState)?.root?.children ??\n [],\n })\n }\n\n // eslint-disable-next-line prefer-const\n for (let [id, node] of Object.entries(nodeIDMap)) {\n const beforeChangeHooks = finalSanitizedEditorConfig.features.nodeHooks?.beforeChange\n const beforeChangeHooksForNode = beforeChangeHooks?.get(node.type)\n if (beforeChangeHooksForNode) {\n for (const hook of beforeChangeHooksForNode) {\n if (!originalNodeIDMap[id]) {\n console.warn(\n '(beforeChange) No original node found for node with id',\n id,\n 'node:',\n node,\n 'path',\n path.join('.'),\n )\n continue\n }\n node = await hook({\n context,\n errors: errors!,\n mergeLocaleActions: mergeLocaleActions!,\n node,\n operation: operation!,\n originalNode: originalNodeIDMap[id],\n originalNodeWithLocales: originalNodeWithLocalesIDMap[id],\n parentRichTextFieldPath: path,\n parentRichTextFieldSchemaPath: schemaPath,\n previousNode: previousNodeIDMap[id]!,\n req,\n skipValidation: skipValidation!,\n })\n }\n }\n\n const subFieldFn = finalSanitizedEditorConfig.features.getSubFields?.get(node.type)\n const subFieldDataFn = finalSanitizedEditorConfig.features.getSubFieldsData?.get(\n node.type,\n )\n\n if (subFieldFn && subFieldDataFn) {\n const subFields = subFieldFn({ node, req })\n const nodeSiblingData = subFieldDataFn({ node, req }) ?? {}\n const nodeSiblingDocWithLocales =\n subFieldDataFn({\n node: originalNodeWithLocalesIDMap[id]!,\n req,\n }) ?? {}\n const nodePreviousSiblingDoc =\n subFieldDataFn({ node: previousNodeIDMap[id]!, req }) ?? {}\n\n if (subFields?.length) {\n await beforeChangeTraverseFields({\n id,\n blockData: nodeSiblingData,\n collection,\n context,\n data: data ?? {},\n doc: originalDoc ?? {},\n docWithLocales: docWithLocales ?? {},\n errors: errors!,\n fieldLabelPath,\n fields: subFields,\n global,\n mergeLocaleActions: mergeLocaleActions!,\n operation: operation!,\n overrideAccess,\n parentIndexPath: indexPath.join('-'),\n parentIsLocalized: parentIsLocalized || field.localized || false,\n parentPath: path.join('.'),\n parentSchemaPath: schemaPath.join('.'),\n req,\n siblingData: nodeSiblingData,\n siblingDoc: nodePreviousSiblingDoc,\n siblingDocWithLocales: nodeSiblingDocWithLocales ?? {},\n skipValidation,\n })\n }\n }\n }\n\n /**\n * within the beforeChange hook, id's may be re-generated.\n * Example:\n * 1. Seed data contains IDs for block feature blocks.\n * 2. Those are used in beforeValidate\n * 3. in beforeChange, those IDs are regenerated, because you cannot provide IDs during document creation. See baseIDField beforeChange hook for reasoning\n * 4. Thus, in order for all post-beforeChange hooks to receive the correct ID, we need to update the originalNodeIDMap with the new ID's, by regenerating the nodeIDMap.\n * The reason this is not generated for every hook, is to save on performance. We know we only really have to generate it in beforeValidate, which is the first hook,\n * and in beforeChange, which is where modifications to the provided IDs can occur.\n */\n const newOriginalNodeIDMap: {\n [key: string]: SerializedLexicalNode\n } = {}\n\n const previousOriginalValue = siblingData[field.name!]\n\n recurseNodeTree({\n nodeIDMap: newOriginalNodeIDMap,\n nodes: (previousOriginalValue as SerializedEditorState)?.root?.children ?? [],\n })\n\n if (!context.internal) {\n // Add to context, for other hooks to use\n context.internal = {}\n }\n if (!context.internal.richText) {\n context.internal.richText = {}\n }\n context.internal.richText[path.join('.')] = {\n originalNodeIDMap: newOriginalNodeIDMap,\n }\n\n return value\n },\n ],\n beforeValidate: [\n async (args) => {\n const {\n collection,\n context,\n data,\n field,\n global,\n indexPath,\n operation,\n originalDoc,\n overrideAccess,\n parentIsLocalized,\n path,\n previousValue,\n req,\n schemaPath,\n } = args\n\n let { value } = args\n if (finalSanitizedEditorConfig?.features?.hooks?.beforeValidate?.length) {\n for (const hook of finalSanitizedEditorConfig.features.hooks.beforeValidate) {\n value = await hook(args)\n }\n }\n\n // return value if there are NO hooks\n if (\n !finalSanitizedEditorConfig.features.nodeHooks?.beforeValidate?.size &&\n !finalSanitizedEditorConfig.features.nodeHooks?.afterChange?.size &&\n !finalSanitizedEditorConfig.features.nodeHooks?.beforeChange?.size &&\n !finalSanitizedEditorConfig.features.getSubFields?.size\n ) {\n return value\n }\n\n /**\n * beforeValidate is the first field hook which runs. This is where we can create the node map, which can then be used in the other hooks.\n *\n */\n\n /**\n * flattenedNodes contains all nodes in the editor, in the order they appear in the editor. They will be used for the following hooks:\n * - afterRead\n *\n * The other hooks require nodes to have IDs, which is why those are ran only from the nodeIDMap. They require IDs because they have both doc/siblingDoc and data/siblingData, and\n * thus require a reliable way to match new node data to old node data. Given that node positions can change in between hooks, this is only reliably possible for nodes which are saved with\n * an ID.\n */\n //const flattenedNodes: SerializedLexicalNode[] = []\n\n /**\n * Only nodes with id's (so, nodes with hooks added to them) will be added to the nodeIDMap. They will be used for the following hooks:\n * - afterChange\n * - beforeChange\n * - beforeValidate\n *\n * Other hooks are handled by the flattenedNodes. All nodes in the nodeIDMap are part of flattenedNodes.\n */\n\n const originalNodeIDMap: {\n [key: string]: SerializedLexicalNode\n } = {}\n\n recurseNodeTree({\n nodeIDMap: originalNodeIDMap,\n nodes: (previousValue as SerializedEditorState)?.root?.children ?? [],\n })\n\n if (!context.internal) {\n // Add to context, for other hooks to use\n context.internal = {}\n }\n if (!(context as any).internal.richText) {\n ;(context as any).internal.richText = {}\n }\n ;(context as any).internal.richText[path.join('.')] = {\n originalNodeIDMap,\n }\n\n /**\n * Now that the maps for all hooks are set up, we can run the validate hook\n */\n if (!finalSanitizedEditorConfig.features.nodeHooks?.beforeValidate?.size) {\n return value\n }\n const nodeIDMap: {\n [key: string]: SerializedLexicalNode\n } = {}\n recurseNodeTree({\n //flattenedNodes,\n nodeIDMap,\n nodes: (value as SerializedEditorState)?.root?.children ?? [],\n })\n\n // eslint-disable-next-line prefer-const\n for (let [id, node] of Object.entries(nodeIDMap)) {\n const beforeValidateHooks =\n finalSanitizedEditorConfig.features.nodeHooks.beforeValidate\n const beforeValidateHooksForNode = beforeValidateHooks?.get(node.type)\n if (beforeValidateHooksForNode) {\n for (const hook of beforeValidateHooksForNode) {\n if (!originalNodeIDMap[id]) {\n console.warn(\n '(beforeValidate) No original node found for node with id',\n id,\n 'node:',\n node,\n 'path',\n path.join('.'),\n )\n continue\n }\n node = await hook({\n context,\n node,\n operation,\n originalNode: originalNodeIDMap[id],\n overrideAccess: overrideAccess!,\n parentRichTextFieldPath: path,\n parentRichTextFieldSchemaPath: schemaPath,\n req,\n })\n }\n }\n const subFieldFn = finalSanitizedEditorConfig.features.getSubFields?.get(node.type)\n const subFieldDataFn = finalSanitizedEditorConfig.features.getSubFieldsData?.get(\n node.type,\n )\n\n if (subFieldFn && subFieldDataFn) {\n const subFields = subFieldFn({ node, req })\n const nodeSiblingData = subFieldDataFn({ node, req }) ?? {}\n\n const nodeSiblingDoc = subFieldDataFn({ node: originalNodeIDMap[id]!, req }) ?? {}\n\n if (subFields?.length) {\n await beforeValidateTraverseFields({\n id,\n blockData: nodeSiblingData,\n collection,\n context,\n data,\n doc: originalDoc,\n fields: subFields,\n global,\n operation,\n overrideAccess: overrideAccess!,\n parentIndexPath: indexPath.join('-'),\n parentIsLocalized: parentIsLocalized || field.localized || false,\n parentPath: path.join('.'),\n parentSchemaPath: schemaPath.join('.'),\n req,\n siblingData: nodeSiblingData,\n siblingDoc: nodeSiblingDoc,\n })\n }\n }\n }\n\n return value\n },\n ],\n },\n i18n: featureI18n,\n outputSchema: ({\n collectionIDFieldTypes,\n config,\n field,\n i18n,\n interfaceNameDefinitions,\n isRequired,\n }) => {\n let outputSchema: JSONSchema4 = {\n // This schema matches the SerializedEditorState type so far, that it's possible to cast SerializedEditorState to this schema without any errors.\n // In the future, we should\n // 1) allow recursive children\n // 2) Pass in all the different types for every node added to the editorconfig. This can be done with refs in the schema.\n type: withNullableJSONSchemaType('object', isRequired),\n properties: {\n root: {\n type: 'object',\n additionalProperties: false,\n properties: {\n type: {\n type: 'string',\n },\n children: {\n type: 'array',\n items: {\n type: 'object',\n additionalProperties: true,\n properties: {\n type: {\n type: 'string',\n },\n version: {\n type: 'integer',\n },\n },\n required: ['type', 'version'],\n },\n },\n direction: {\n oneOf: [\n {\n enum: ['ltr', 'rtl'],\n },\n {\n type: 'null',\n },\n ],\n },\n format: {\n type: 'string',\n enum: ['left', 'start', 'center', 'right', 'end', 'justify', ''], // ElementFormatType, since the root node is an element\n },\n indent: {\n type: 'integer',\n },\n version: {\n type: 'integer',\n },\n },\n required: ['children', 'direction', 'format', 'indent', 'type', 'version'],\n },\n },\n required: ['root'],\n }\n for (const modifyOutputSchema of finalSanitizedEditorConfig.features.generatedTypes\n .modifyOutputSchemas) {\n outputSchema = modifyOutputSchema({\n collectionIDFieldTypes,\n config,\n currentSchema: outputSchema,\n field,\n i18n,\n interfaceNameDefinitions,\n isRequired,\n })\n }\n\n return outputSchema\n },\n validate: richTextValidateHOC({\n editorConfig: finalSanitizedEditorConfig,\n }),\n }\n }\n}\n\nexport { AlignFeature } from './features/align/server/index.js'\nexport { BlockquoteFeature } from './features/blockquote/server/index.js'\nexport { BlocksFeature, type BlocksFeatureProps } from './features/blocks/server/index.js'\nexport {\n $createServerBlockNode,\n $isServerBlockNode,\n type BlockFields,\n ServerBlockNode,\n} from './features/blocks/server/nodes/BlocksNode.js'\n\nexport { convertHTMLToLexical } from './features/converters/htmlToLexical/index.js'\n\nexport { lexicalHTMLField } from './features/converters/lexicalToHtml/async/field/index.js'\nexport { LinebreakHTMLConverter } from './features/converters/lexicalToHtml_deprecated/converter/converters/linebreak.js'\n\nexport { ParagraphHTMLConverter } from './features/converters/lexicalToHtml_deprecated/converter/converters/paragraph.js'\n\nexport { TabHTMLConverter } from './features/converters/lexicalToHtml_deprecated/converter/converters/tab.js'\nexport { TextHTMLConverter } from './features/converters/lexicalToHtml_deprecated/converter/converters/text.js'\nexport { defaultHTMLConverters } from './features/converters/lexicalToHtml_deprecated/converter/defaultConverters.js'\n\nexport {\n convertLexicalNodesToHTML,\n convertLexicalToHTML,\n} from './features/converters/lexicalToHtml_deprecated/converter/index.js'\nexport type { HTMLConverter } from './features/converters/lexicalToHtml_deprecated/converter/types.js'\nexport {\n consolidateHTMLConverters,\n lexicalHTML,\n} from './features/converters/lexicalToHtml_deprecated/field/index.js'\nexport {\n HTMLConverterFeature,\n type HTMLConverterFeatureProps,\n} from './features/converters/lexicalToHtml_deprecated/index.js'\nexport { convertLexicalToMarkdown } from './features/converters/lexicalToMarkdown/index.js'\nexport { convertMarkdownToLexical } from './features/converters/markdownToLexical/index.js'\nexport { getPayloadPopulateFn } from './features/converters/utilities/payloadPopulateFn.js'\n\nexport { getRestPopulateFn } from './features/converters/utilities/restPopulateFn.js'\nexport { DebugJsxConverterFeature } from './features/debug/jsxConverter/server/index.js'\nexport { TestRecorderFeature } from './features/debug/testRecorder/server/index.js'\nexport { TreeViewFeature } from './features/debug/treeView/server/index.js'\nexport { EXPERIMENTAL_TableFeature } from './features/experimental_table/server/index.js'\nexport { BoldFeature } from './features/format/bold/feature.server.js'\nexport { InlineCodeFeature } from './features/format/inlineCode/feature.server.js'\n\nexport { ItalicFeature } from './features/format/italic/feature.server.js'\nexport { StrikethroughFeature } from './features/format/strikethrough/feature.server.js'\nexport { SubscriptFeature } from './features/format/subscript/feature.server.js'\nexport { SuperscriptFeature } from './features/format/superscript/feature.server.js'\nexport { UnderlineFeature } from './features/format/underline/feature.server.js'\nexport { HeadingFeature, type HeadingFeatureProps } from './features/heading/server/index.js'\nexport { HorizontalRuleFeature } from './features/horizontalRule/server/index.js'\n\nexport { IndentFeature } from './features/indent/server/index.js'\n\nexport { AutoLinkNode } from './features/link/nodes/AutoLinkNode.js'\nexport { LinkNode } from './features/link/nodes/LinkNode.js'\nexport type { LinkFields } from './features/link/nodes/types.js'\nexport { LinkFeature, type LinkFeatureServerProps } from './features/link/server/index.js'\nexport { ChecklistFeature } from './features/lists/checklist/server/index.js'\nexport { OrderedListFeature } from './features/lists/orderedList/server/index.js'\n\nexport { UnorderedListFeature } from './features/lists/unorderedList/server/index.js'\n\nexport type {\n SlateNode,\n SlateNodeConverter,\n} from './features/migrations/slateToLexical/converter/types.js'\nexport { ParagraphFeature } from './features/paragraph/server/index.js'\nexport {\n RelationshipFeature,\n type RelationshipFeatureProps,\n} from './features/relationship/server/index.js'\n\nexport {\n type RelationshipData,\n RelationshipServerNode,\n} from './features/relationship/server/nodes/RelationshipNode.js'\nexport { FixedToolbarFeature } from './features/toolbars/fixed/server/index.js'\n\nexport { InlineToolbarFeature } from './features/toolbars/inline/server/index.js'\nexport type { ToolbarGroup, ToolbarGroupItem } from './features/toolbars/types.js'\nexport type {\n BaseClientFeatureProps,\n ClientFeature,\n ClientFeatureProviderMap,\n FeatureProviderClient,\n FeatureProviderProviderClient,\n PluginComponent,\n PluginComponentWithAnchor,\n ResolvedClientFeature,\n ResolvedClientFeatureMap,\n SanitizedClientFeatures,\n SanitizedPlugin,\n} from './features/typesClient.js'\n\nexport type {\n AfterChangeNodeHook,\n AfterChangeNodeHookArgs,\n AfterReadNodeHook,\n AfterReadNodeHookArgs,\n BaseNodeHookArgs,\n BeforeChangeNodeHook,\n BeforeChangeNodeHookArgs,\n BeforeValidateNodeHook,\n BeforeValidateNodeHookArgs,\n FeatureProviderProviderServer,\n FeatureProviderServer,\n NodeValidation,\n NodeWithHooks,\n PopulationPromise,\n ResolvedServerFeature,\n ResolvedServerFeatureMap,\n SanitizedServerFeatures,\n ServerFeature,\n ServerFeatureProviderMap,\n} from './features/typesServer.js'\n\nexport { createNode } from './features/typeUtilities.js' // Only useful in feature.server.ts\n\nexport { UploadFeature } from './features/upload/server/index.js'\nexport type { UploadFeatureProps } from './features/upload/server/index.js'\n\nexport { type UploadData, UploadServerNode } from './features/upload/server/nodes/UploadNode.js'\nexport type { EditorConfigContextType } from './lexical/config/client/EditorConfigProvider.js'\n\nexport {\n defaultEditorConfig,\n defaultEditorFeatures,\n defaultEditorLexicalConfig,\n} from './lexical/config/server/default.js'\nexport { loadFeatures, sortFeaturesForOptimalLoading } from './lexical/config/server/loader.js'\n\nexport {\n sanitizeServerEditorConfig,\n sanitizeServerFeatures,\n} from './lexical/config/server/sanitize.js'\nexport type {\n ClientEditorConfig,\n SanitizedClientEditorConfig,\n SanitizedServerEditorConfig,\n ServerEditorConfig,\n} from './lexical/config/types.js'\nexport type { AdapterProps }\n\nexport { getEnabledNodes, getEnabledNodesFromServerNodes } from './lexical/nodes/index.js'\n\nexport type {\n SlashMenuGroup,\n SlashMenuItem,\n} from './lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/types.js'\nexport {\n DETAIL_TYPE_TO_DETAIL,\n DOUBLE_LINE_BREAK,\n ELEMENT_FORMAT_TO_TYPE,\n ELEMENT_TYPE_TO_FORMAT,\n IS_ALL_FORMATTING,\n LTR_REGEX,\n NodeFormat,\n NON_BREAKING_SPACE,\n RTL_REGEX,\n TEXT_MODE_TO_TYPE,\n TEXT_TYPE_TO_FORMAT,\n TEXT_TYPE_TO_MODE,\n} from './lexical/utils/nodeFormat.js'\n\nexport { sanitizeUrl, validateUrl } from './lexical/utils/url.js'\n\nexport type * from './nodeTypes.js'\n\nexport { $convertFromMarkdownString } from './packages/@lexical/markdown/index.js'\nexport { defaultRichTextValue } from './populateGraphQL/defaultValue.js'\nexport { populate } from './populateGraphQL/populate.js'\n\nexport type { LexicalEditorProps, LexicalFieldAdminProps, LexicalRichTextAdapter } from './types.js'\n\nexport { createServerFeature } from './utilities/createServerFeature.js'\nexport { editorConfigFactory } from './utilities/editorConfigFactory.js'\n\nexport type { FieldsDrawerProps } from './utilities/fieldsDrawer/Drawer.js'\nexport { extractPropsFromJSXPropsString } from './utilities/jsx/extractPropsFromJSXPropsString.js'\n\nexport {\n extractFrontmatter,\n frontmatterToObject,\n objectToFrontmatter,\n propsToJSXString,\n} from './utilities/jsx/jsx.js'\n\nexport { upgradeLexicalData } from './utilities/upgradeLexicalData/index.js'\n"],"mappings":"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","ignoreList":[]}