@payloadcms/richtext-lexical 3.21.0 → 3.23.0-canary.597254e

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.
Files changed (123) hide show
  1. package/dist/exports/client/Field-ZQTPXWY3.js +2 -0
  2. package/dist/exports/client/Field-ZQTPXWY3.js.map +7 -0
  3. package/dist/exports/client/bundled.css +1 -1
  4. package/dist/exports/client/{chunk-JKFXKPNG.js → chunk-CIY6PKN6.js} +2 -2
  5. package/dist/exports/client/chunk-CIY6PKN6.js.map +7 -0
  6. package/dist/exports/client/chunk-KEEUF5NK.js +2 -0
  7. package/dist/exports/client/chunk-KEEUF5NK.js.map +7 -0
  8. package/dist/exports/client/chunk-PUXDVIHC.js +2 -0
  9. package/dist/exports/client/chunk-PUXDVIHC.js.map +7 -0
  10. package/dist/exports/client/{component-VJVZFYZJ.js → component-P5K7Z5NW.js} +2 -2
  11. package/dist/exports/client/componentInline-UG3ZWWJY.js +2 -0
  12. package/dist/exports/client/index.js +10 -10
  13. package/dist/exports/client/index.js.map +3 -3
  14. package/dist/features/blocks/client/component/index.d.ts.map +1 -1
  15. package/dist/features/blocks/client/component/index.js +61 -30
  16. package/dist/features/blocks/client/component/index.js.map +1 -1
  17. package/dist/features/blocks/client/component/removeEmptyArrayValues.js +1 -1
  18. package/dist/features/blocks/client/component/removeEmptyArrayValues.js.map +1 -1
  19. package/dist/features/blocks/client/componentInline/index.d.ts.map +1 -1
  20. package/dist/features/blocks/client/componentInline/index.js +42 -13
  21. package/dist/features/blocks/client/componentInline/index.js.map +1 -1
  22. package/dist/features/blocks/client/index.d.ts.map +1 -1
  23. package/dist/features/blocks/client/index.js +7 -4
  24. package/dist/features/blocks/client/index.js.map +1 -1
  25. package/dist/features/blocks/client/markdownTransformer.js +1 -1
  26. package/dist/features/blocks/client/markdownTransformer.js.map +1 -1
  27. package/dist/features/blocks/server/linesFromMatchToContentAndPropsString.js +4 -4
  28. package/dist/features/blocks/server/linesFromMatchToContentAndPropsString.js.map +1 -1
  29. package/dist/features/blocks/server/markdownTransformer.d.ts.map +1 -1
  30. package/dist/features/blocks/server/markdownTransformer.js +5 -4
  31. package/dist/features/blocks/server/markdownTransformer.js.map +1 -1
  32. package/dist/features/blocks/server/validate.d.ts.map +1 -1
  33. package/dist/features/blocks/server/validate.js +9 -3
  34. package/dist/features/blocks/server/validate.js.map +1 -1
  35. package/dist/features/experimental_table/client/plugins/TableCellResizerPlugin/index.d.ts.map +1 -1
  36. package/dist/features/experimental_table/client/plugins/TableCellResizerPlugin/index.js +12 -10
  37. package/dist/features/experimental_table/client/plugins/TableCellResizerPlugin/index.js.map +1 -1
  38. package/dist/features/experimental_table/client/plugins/TableHoverActionsPlugin/index.d.ts.map +1 -1
  39. package/dist/features/experimental_table/client/plugins/TableHoverActionsPlugin/index.js +39 -31
  40. package/dist/features/experimental_table/client/plugins/TableHoverActionsPlugin/index.js.map +1 -1
  41. package/dist/features/experimental_table/markdownTransformer.d.ts.map +1 -1
  42. package/dist/features/experimental_table/markdownTransformer.js +6 -2
  43. package/dist/features/experimental_table/markdownTransformer.js.map +1 -1
  44. package/dist/features/heading/markdownTransformer.js +1 -1
  45. package/dist/features/heading/markdownTransformer.js.map +1 -1
  46. package/dist/features/link/client/plugins/autoLink/index.d.ts.map +1 -1
  47. package/dist/features/link/client/plugins/autoLink/index.js +35 -35
  48. package/dist/features/link/client/plugins/autoLink/index.js.map +1 -1
  49. package/dist/features/link/client/plugins/floatingLinkEditor/LinkEditor/index.js +1 -1
  50. package/dist/features/link/client/plugins/floatingLinkEditor/LinkEditor/index.js.map +1 -1
  51. package/dist/features/link/nodes/LinkNode.d.ts.map +1 -1
  52. package/dist/features/link/nodes/LinkNode.js +4 -6
  53. package/dist/features/link/nodes/LinkNode.js.map +1 -1
  54. package/dist/features/link/server/baseFields.d.ts.map +1 -1
  55. package/dist/features/link/server/baseFields.js +5 -8
  56. package/dist/features/link/server/baseFields.js.map +1 -1
  57. package/dist/features/link/server/validate.d.ts.map +1 -1
  58. package/dist/features/link/server/validate.js +9 -3
  59. package/dist/features/link/server/validate.js.map +1 -1
  60. package/dist/features/lists/shared/markdown.js.map +1 -1
  61. package/dist/features/toolbars/fixed/client/Toolbar/index.js.map +1 -1
  62. package/dist/features/toolbars/inline/client/Toolbar/index.js +1 -1
  63. package/dist/features/toolbars/inline/client/Toolbar/index.js.map +1 -1
  64. package/dist/features/typesClient.d.ts +2 -1
  65. package/dist/features/typesClient.d.ts.map +1 -1
  66. package/dist/features/typesClient.js.map +1 -1
  67. package/dist/features/upload/server/feature.server.d.ts.map +1 -1
  68. package/dist/features/upload/server/feature.server.js +10 -8
  69. package/dist/features/upload/server/feature.server.js.map +1 -1
  70. package/dist/features/upload/server/validate.d.ts.map +1 -1
  71. package/dist/features/upload/server/validate.js +9 -3
  72. package/dist/features/upload/server/validate.js.map +1 -1
  73. package/dist/field/Field.d.ts +1 -1
  74. package/dist/field/Field.d.ts.map +1 -1
  75. package/dist/field/Field.js +17 -7
  76. package/dist/field/Field.js.map +1 -1
  77. package/dist/field/bundled.css +1 -1
  78. package/dist/field/index.d.ts.map +1 -1
  79. package/dist/field/index.js +23 -18
  80. package/dist/field/index.js.map +1 -1
  81. package/dist/field/rscEntry.d.ts.map +1 -1
  82. package/dist/field/rscEntry.js +1 -0
  83. package/dist/field/rscEntry.js.map +1 -1
  84. package/dist/index.d.ts.map +1 -1
  85. package/dist/index.js +6 -2
  86. package/dist/index.js.map +1 -1
  87. package/dist/lexical/config/client/loader.d.ts +3 -2
  88. package/dist/lexical/config/client/loader.d.ts.map +1 -1
  89. package/dist/lexical/config/client/loader.js +2 -0
  90. package/dist/lexical/config/client/loader.js.map +1 -1
  91. package/dist/lexical/plugins/DecoratorPlugin/index.d.ts +12 -0
  92. package/dist/lexical/plugins/DecoratorPlugin/index.d.ts.map +1 -1
  93. package/dist/lexical/plugins/DecoratorPlugin/index.js +198 -19
  94. package/dist/lexical/plugins/DecoratorPlugin/index.js.map +1 -1
  95. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.d.ts.map +1 -1
  96. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.js +10 -4
  97. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.js.map +1 -1
  98. package/dist/lexical/plugins/SlashMenu/useMenuTriggerMatch.js.map +1 -1
  99. package/dist/lexical/plugins/handles/utils/getNodeCloseToPoint.d.ts.map +1 -1
  100. package/dist/lexical/plugins/handles/utils/getNodeCloseToPoint.js +2 -1
  101. package/dist/lexical/plugins/handles/utils/getNodeCloseToPoint.js.map +1 -1
  102. package/dist/utilities/buildInitialState.d.ts +1 -0
  103. package/dist/utilities/buildInitialState.d.ts.map +1 -1
  104. package/dist/utilities/buildInitialState.js +2 -0
  105. package/dist/utilities/buildInitialState.js.map +1 -1
  106. package/dist/utilities/createClientFeature.d.ts +2 -1
  107. package/dist/utilities/createClientFeature.d.ts.map +1 -1
  108. package/dist/utilities/createClientFeature.js +2 -0
  109. package/dist/utilities/createClientFeature.js.map +1 -1
  110. package/dist/utilities/fieldsDrawer/DrawerContent.d.ts.map +1 -1
  111. package/dist/utilities/fieldsDrawer/DrawerContent.js +11 -3
  112. package/dist/utilities/fieldsDrawer/DrawerContent.js.map +1 -1
  113. package/package.json +6 -6
  114. package/dist/exports/client/Field-LOLYH42M.js +0 -2
  115. package/dist/exports/client/Field-LOLYH42M.js.map +0 -7
  116. package/dist/exports/client/chunk-JKFXKPNG.js.map +0 -7
  117. package/dist/exports/client/chunk-KDV47ZNZ.js +0 -2
  118. package/dist/exports/client/chunk-KDV47ZNZ.js.map +0 -7
  119. package/dist/exports/client/chunk-QP2NYEWJ.js +0 -2
  120. package/dist/exports/client/chunk-QP2NYEWJ.js.map +0 -7
  121. package/dist/exports/client/componentInline-DTNGYZCL.js +0 -2
  122. /package/dist/exports/client/{component-VJVZFYZJ.js.map → component-P5K7Z5NW.js.map} +0 -0
  123. /package/dist/exports/client/{componentInline-DTNGYZCL.js.map → componentInline-UG3ZWWJY.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/field/index.tsx"],"names":[],"mappings":"AAKA,OAAO,KAA8C,MAAM,OAAO,CAAA;AAIlE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAA;AAU5D,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,yBAAyB,CA8D7D,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/field/index.tsx"],"names":[],"mappings":"AAKA,OAAO,KAA8C,MAAM,OAAO,CAAA;AAIlE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAA;AAU5D,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,yBAAyB,CAkE7D,CAAA"}
@@ -2,7 +2,7 @@
2
2
 
3
3
  import { c as _c } from "react/compiler-runtime";
4
4
  import { jsx as _jsx } from "react/jsx-runtime";
5
- import { ShimmerEffect } from '@payloadcms/ui';
5
+ import { ShimmerEffect, useConfig } from '@payloadcms/ui';
6
6
  import React, { lazy, Suspense, useEffect, useState } from 'react';
7
7
  import { defaultEditorLexicalConfig } from '../lexical/config/client/default.js';
8
8
  import { loadClientFeatures } from '../lexical/config/client/loader.js';
@@ -11,7 +11,7 @@ const RichTextEditor = /*#__PURE__*/lazy(() => import('./Field.js').then(module
11
11
  default: module.RichText
12
12
  })));
13
13
  export const RichTextField = props => {
14
- const $ = _c(14);
14
+ const $ = _c(15);
15
15
  const {
16
16
  admin: t0,
17
17
  clientFeatures,
@@ -30,10 +30,13 @@ export const RichTextField = props => {
30
30
  }
31
31
  const admin = t2;
32
32
  const lexicalEditorConfig = t1 === undefined ? defaultEditorLexicalConfig : t1;
33
+ const {
34
+ config
35
+ } = useConfig();
33
36
  const [finalSanitizedEditorConfig, setFinalSanitizedEditorConfig] = useState(null);
34
37
  let t3;
35
38
  let t4;
36
- if ($[2] !== admin || $[3] !== clientFeatures || $[4] !== featureClientSchemaMap || $[5] !== field || $[6] !== finalSanitizedEditorConfig || $[7] !== lexicalEditorConfig || $[8] !== schemaPath) {
39
+ if ($[2] !== admin || $[3] !== clientFeatures || $[4] !== config || $[5] !== featureClientSchemaMap || $[6] !== field || $[7] !== finalSanitizedEditorConfig || $[8] !== lexicalEditorConfig || $[9] !== schemaPath) {
37
40
  t3 = () => {
38
41
  if (finalSanitizedEditorConfig) {
39
42
  return;
@@ -47,6 +50,7 @@ export const RichTextField = props => {
47
50
  }
48
51
  const finalLexicalEditorConfig = lexicalEditorConfig ? lexicalEditorConfig : defaultEditorLexicalConfig;
49
52
  const resolvedClientFeatures = loadClientFeatures({
53
+ config,
50
54
  featureClientSchemaMap,
51
55
  field,
52
56
  schemaPath: schemaPath ?? field.name,
@@ -57,23 +61,24 @@ export const RichTextField = props => {
57
61
  });
58
62
  setFinalSanitizedEditorConfig(sanitizeClientEditorConfig(resolvedClientFeatures, finalLexicalEditorConfig, admin));
59
63
  };
60
- t4 = [lexicalEditorConfig, admin, finalSanitizedEditorConfig, clientFeatures, featureClientSchemaMap, field, schemaPath];
64
+ t4 = [lexicalEditorConfig, admin, finalSanitizedEditorConfig, clientFeatures, featureClientSchemaMap, field, config, schemaPath];
61
65
  $[2] = admin;
62
66
  $[3] = clientFeatures;
63
- $[4] = featureClientSchemaMap;
64
- $[5] = field;
65
- $[6] = finalSanitizedEditorConfig;
66
- $[7] = lexicalEditorConfig;
67
- $[8] = schemaPath;
68
- $[9] = t3;
69
- $[10] = t4;
67
+ $[4] = config;
68
+ $[5] = featureClientSchemaMap;
69
+ $[6] = field;
70
+ $[7] = finalSanitizedEditorConfig;
71
+ $[8] = lexicalEditorConfig;
72
+ $[9] = schemaPath;
73
+ $[10] = t3;
74
+ $[11] = t4;
70
75
  } else {
71
- t3 = $[9];
72
- t4 = $[10];
76
+ t3 = $[10];
77
+ t4 = $[11];
73
78
  }
74
79
  useEffect(t3, t4);
75
80
  let t5;
76
- if ($[11] !== finalSanitizedEditorConfig || $[12] !== props) {
81
+ if ($[12] !== finalSanitizedEditorConfig || $[13] !== props) {
77
82
  t5 = _jsx(Suspense, {
78
83
  fallback: _jsx(ShimmerEffect, {
79
84
  height: "35vh"
@@ -83,11 +88,11 @@ export const RichTextField = props => {
83
88
  editorConfig: finalSanitizedEditorConfig
84
89
  })
85
90
  });
86
- $[11] = finalSanitizedEditorConfig;
87
- $[12] = props;
88
- $[13] = t5;
91
+ $[12] = finalSanitizedEditorConfig;
92
+ $[13] = props;
93
+ $[14] = t5;
89
94
  } else {
90
- t5 = $[13];
95
+ t5 = $[14];
91
96
  }
92
97
  return t5;
93
98
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","ShimmerEffect","React","lazy","Suspense","useEffect","useState","defaultEditorLexicalConfig","loadClientFeatures","sanitizeClientEditorConfig","RichTextEditor","then","module","default","RichText","RichTextField","props","$","admin","t0","clientFeatures","featureClientSchemaMap","field","lexicalEditorConfig","t1","schemaPath","t2","undefined","finalSanitizedEditorConfig","setFinalSanitizedEditorConfig","t3","t4","featureProvidersLocal","_featureKey","clientFeature","Object","entries","clientFeatureProvider","push","clientFeatureProps","finalLexicalEditorConfig","resolvedClientFeatures","name","unSanitizedEditorConfig","features","lexical","t5","_jsx","fallback","height","editorConfig"],"sources":["../../src/field/index.tsx"],"sourcesContent":["'use client'\n\nimport type { RichTextFieldClient } from 'payload'\n\nimport { ShimmerEffect } from '@payloadcms/ui'\nimport React, { lazy, Suspense, useEffect, useState } from 'react'\n\nimport type { FeatureProviderClient } from '../features/typesClient.js'\nimport type { SanitizedClientEditorConfig } from '../lexical/config/types.js'\nimport type { LexicalRichTextFieldProps } from '../types.js'\n\nimport { defaultEditorLexicalConfig } from '../lexical/config/client/default.js'\nimport { loadClientFeatures } from '../lexical/config/client/loader.js'\nimport { sanitizeClientEditorConfig } from '../lexical/config/client/sanitize.js'\n\nconst RichTextEditor = lazy(() =>\n import('./Field.js').then((module) => ({ default: module.RichText })),\n)\n\nexport const RichTextField: React.FC<LexicalRichTextFieldProps> = (props) => {\n const {\n admin = {},\n clientFeatures,\n featureClientSchemaMap,\n field,\n lexicalEditorConfig = defaultEditorLexicalConfig,\n schemaPath,\n } = props\n\n const [finalSanitizedEditorConfig, setFinalSanitizedEditorConfig] =\n useState<null | SanitizedClientEditorConfig>(null)\n\n useEffect(() => {\n if (finalSanitizedEditorConfig) {\n return\n }\n\n const featureProvidersLocal: FeatureProviderClient<any, any>[] = []\n for (const [_featureKey, clientFeature] of Object.entries(clientFeatures)) {\n if (!clientFeature.clientFeatureProvider) {\n continue\n }\n featureProvidersLocal.push(\n clientFeature.clientFeatureProvider(clientFeature.clientFeatureProps),\n ) // Execute the clientFeatureProvider function here, as the server cannot execute functions imported from use client files\n }\n\n const finalLexicalEditorConfig = lexicalEditorConfig\n ? lexicalEditorConfig\n : defaultEditorLexicalConfig\n\n const resolvedClientFeatures = loadClientFeatures({\n featureClientSchemaMap,\n field: field as RichTextFieldClient,\n schemaPath: schemaPath ?? field.name,\n unSanitizedEditorConfig: {\n features: featureProvidersLocal,\n lexical: finalLexicalEditorConfig,\n },\n })\n\n setFinalSanitizedEditorConfig(\n sanitizeClientEditorConfig(resolvedClientFeatures, finalLexicalEditorConfig, admin),\n )\n }, [\n lexicalEditorConfig,\n admin,\n finalSanitizedEditorConfig,\n clientFeatures,\n featureClientSchemaMap,\n field,\n schemaPath,\n ]) // TODO: Optimize this and use useMemo for this in the future. This might break sub-richtext-blocks from the blocks feature. Need to investigate\n\n return (\n <Suspense fallback={<ShimmerEffect height=\"35vh\" />}>\n {finalSanitizedEditorConfig && (\n <RichTextEditor {...props} editorConfig={finalSanitizedEditorConfig} />\n )}\n </Suspense>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","ShimmerEffect","useConfig","React","lazy","Suspense","useEffect","useState","defaultEditorLexicalConfig","loadClientFeatures","sanitizeClientEditorConfig","RichTextEditor","then","module","default","RichText","RichTextField","props","$","admin","t0","clientFeatures","featureClientSchemaMap","field","lexicalEditorConfig","t1","schemaPath","t2","undefined","config","finalSanitizedEditorConfig","setFinalSanitizedEditorConfig","t3","t4","featureProvidersLocal","_featureKey","clientFeature","Object","entries","clientFeatureProvider","push","clientFeatureProps","finalLexicalEditorConfig","resolvedClientFeatures","name","unSanitizedEditorConfig","features","lexical","t5","_jsx","fallback","height","editorConfig"],"sources":["../../src/field/index.tsx"],"sourcesContent":["'use client'\n\nimport type { RichTextFieldClient } from 'payload'\n\nimport { ShimmerEffect, useConfig } from '@payloadcms/ui'\nimport React, { lazy, Suspense, useEffect, useState } from 'react'\n\nimport type { FeatureProviderClient } from '../features/typesClient.js'\nimport type { SanitizedClientEditorConfig } from '../lexical/config/types.js'\nimport type { LexicalRichTextFieldProps } from '../types.js'\n\nimport { defaultEditorLexicalConfig } from '../lexical/config/client/default.js'\nimport { loadClientFeatures } from '../lexical/config/client/loader.js'\nimport { sanitizeClientEditorConfig } from '../lexical/config/client/sanitize.js'\n\nconst RichTextEditor = lazy(() =>\n import('./Field.js').then((module) => ({ default: module.RichText })),\n)\n\nexport const RichTextField: React.FC<LexicalRichTextFieldProps> = (props) => {\n const {\n admin = {},\n clientFeatures,\n featureClientSchemaMap,\n field,\n lexicalEditorConfig = defaultEditorLexicalConfig,\n schemaPath,\n } = props\n\n const { config } = useConfig()\n\n const [finalSanitizedEditorConfig, setFinalSanitizedEditorConfig] =\n useState<null | SanitizedClientEditorConfig>(null)\n\n useEffect(() => {\n if (finalSanitizedEditorConfig) {\n return\n }\n\n const featureProvidersLocal: FeatureProviderClient<any, any>[] = []\n for (const [_featureKey, clientFeature] of Object.entries(clientFeatures)) {\n if (!clientFeature.clientFeatureProvider) {\n continue\n }\n featureProvidersLocal.push(\n clientFeature.clientFeatureProvider(clientFeature.clientFeatureProps),\n ) // Execute the clientFeatureProvider function here, as the server cannot execute functions imported from use client files\n }\n\n const finalLexicalEditorConfig = lexicalEditorConfig\n ? lexicalEditorConfig\n : defaultEditorLexicalConfig\n\n const resolvedClientFeatures = loadClientFeatures({\n config,\n featureClientSchemaMap,\n field: field as RichTextFieldClient,\n schemaPath: schemaPath ?? field.name,\n unSanitizedEditorConfig: {\n features: featureProvidersLocal,\n lexical: finalLexicalEditorConfig,\n },\n })\n\n setFinalSanitizedEditorConfig(\n sanitizeClientEditorConfig(resolvedClientFeatures, finalLexicalEditorConfig, admin),\n )\n }, [\n lexicalEditorConfig,\n admin,\n finalSanitizedEditorConfig,\n clientFeatures,\n featureClientSchemaMap,\n field,\n config,\n schemaPath,\n ]) // TODO: Optimize this and use useMemo for this in the future. This might break sub-richtext-blocks from the blocks feature. Need to investigate\n\n return (\n <Suspense fallback={<ShimmerEffect height=\"35vh\" />}>\n {finalSanitizedEditorConfig && (\n <RichTextEditor {...props} editorConfig={finalSanitizedEditorConfig} />\n )}\n </Suspense>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"rscEntry.d.ts","sourceRoot":"","sources":["../../src/field/rscEntry.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,oBAAoB,EACpB,UAAU,EAGV,oBAAoB,EACrB,MAAM,SAAS,CAAA;AAIhB,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAA;AAC7E,OAAO,KAAK,EAEV,sBAAsB,EAEvB,MAAM,aAAa,CAAA;AAOpB,eAAO,MAAM,oBAAoB,EAAE,KAAK,CAAC,EAAE,CACzC;IACE,KAAK,EAAE,sBAAsB,CAAA;IAC7B,qBAAqB,EAAE,2BAA2B,CAAA;CACnD,GAAG,oBAAoB,GACtB,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,GACxB,oBAAoB,CAgFvB,CAAA"}
1
+ {"version":3,"file":"rscEntry.d.ts","sourceRoot":"","sources":["../../src/field/rscEntry.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,oBAAoB,EACpB,UAAU,EAGV,oBAAoB,EACrB,MAAM,SAAS,CAAA;AAIhB,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAA;AAC7E,OAAO,KAAK,EAEV,sBAAsB,EAEvB,MAAM,aAAa,CAAA;AAOpB,eAAO,MAAM,oBAAoB,EAAE,KAAK,CAAC,EAAE,CACzC;IACE,KAAK,EAAE,sBAAsB,CAAA;IAC7B,qBAAqB,EAAE,2BAA2B,CAAA;CACnD,GAAG,oBAAoB,GACtB,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,GACxB,oBAAoB,CAiFvB,CAAA"}
@@ -32,6 +32,7 @@ export const RscEntryLexicalField = async args => {
32
32
  id: args.id,
33
33
  clientFieldSchemaMap: args.clientFieldSchemaMap,
34
34
  collectionSlug: args.collectionSlug,
35
+ documentData: args.data,
35
36
  field,
36
37
  fieldSchemaMap: args.fieldSchemaMap,
37
38
  lexicalFieldSchemaPath: schemaPath,
@@ -1 +1 @@
1
- {"version":3,"file":"rscEntry.js","names":["getTranslation","renderField","React","RichTextField","buildInitialState","initLexicalFeatures","RscEntryLexicalField","args","field","path","clientField","name","schemaPath","Error","clientFeatures","featureClientSchemaMap","clientFieldSchemaMap","fieldSchemaMap","i18n","payload","sanitizedEditorConfig","initialLexicalFormState","data","root","children","length","context","id","collectionSlug","lexicalFieldSchemaPath","operation","permissions","preferences","renderFieldFn","req","nodeData","placeholderFromArgs","admin","placeholder","undefined","hideGutter","hideInsertParagraphAtEnd","props","forceRender","lexicalEditorConfig","lexical","readOnly","renderedBlocks","Object","keys","key","_jsx"],"sources":["../../src/field/rscEntry.tsx"],"sourcesContent":["import type { SerializedLexicalNode } from 'lexical'\nimport type {\n ClientComponentProps,\n FieldPaths,\n RichTextFieldClient,\n RichTextField as RichTextFieldType,\n ServerComponentProps,\n} from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport { renderField } from '@payloadcms/ui/forms/renderField'\nimport React from 'react'\n\nimport type { SanitizedServerEditorConfig } from '../lexical/config/types.js'\nimport type {\n LexicalFieldAdminClientProps,\n LexicalFieldAdminProps,\n LexicalRichTextFieldProps,\n} from '../types.js'\n\n// eslint-disable-next-line payload/no-imports-from-exports-dir\nimport { RichTextField } from '../exports/client/index.js'\nimport { buildInitialState } from '../utilities/buildInitialState.js'\nimport { initLexicalFeatures } from '../utilities/initLexicalFeatures.js'\n\nexport const RscEntryLexicalField: React.FC<\n {\n admin: LexicalFieldAdminProps\n sanitizedEditorConfig: SanitizedServerEditorConfig\n } & ClientComponentProps &\n Pick<FieldPaths, 'path'> &\n ServerComponentProps\n> = async (args) => {\n const field: RichTextFieldType = args.field as RichTextFieldType\n const path = args.path ?? (args.clientField as RichTextFieldClient).name\n const schemaPath = args.schemaPath ?? path\n\n if (!(args?.clientField as RichTextFieldClient)?.name) {\n throw new Error('Initialized lexical RSC field without a field name')\n }\n\n const { clientFeatures, featureClientSchemaMap } = initLexicalFeatures({\n clientFieldSchemaMap: args.clientFieldSchemaMap,\n fieldSchemaMap: args.fieldSchemaMap,\n i18n: args.i18n,\n path,\n payload: args.payload,\n sanitizedEditorConfig: args.sanitizedEditorConfig,\n schemaPath,\n })\n\n let initialLexicalFormState = {}\n if (args.data?.[field.name]?.root?.children?.length) {\n initialLexicalFormState = await buildInitialState({\n context: {\n id: args.id,\n clientFieldSchemaMap: args.clientFieldSchemaMap,\n collectionSlug: args.collectionSlug,\n field,\n fieldSchemaMap: args.fieldSchemaMap,\n lexicalFieldSchemaPath: schemaPath,\n operation: args.operation,\n permissions: args.permissions,\n preferences: args.preferences,\n renderFieldFn: renderField,\n req: args.req,\n },\n nodeData: args.data?.[field.name]?.root?.children as SerializedLexicalNode[],\n })\n }\n\n const placeholderFromArgs = args.admin?.placeholder\n const placeholder = placeholderFromArgs\n ? getTranslation(placeholderFromArgs, args.i18n)\n : undefined\n\n const admin: LexicalFieldAdminClientProps = {}\n if (placeholder) {\n admin.placeholder = placeholder\n }\n if (args.admin?.hideGutter) {\n admin.hideGutter = true\n }\n if (args.admin?.hideInsertParagraphAtEnd) {\n admin.hideInsertParagraphAtEnd = true\n }\n\n const props: LexicalRichTextFieldProps = {\n clientFeatures,\n featureClientSchemaMap, // TODO: Does client need this? Why cant this just live in the server\n field: args.clientField as RichTextFieldClient,\n forceRender: args.forceRender,\n initialLexicalFormState,\n lexicalEditorConfig: args.sanitizedEditorConfig.lexical,\n path,\n permissions: args.permissions,\n readOnly: args.readOnly,\n renderedBlocks: args.renderedBlocks,\n schemaPath,\n }\n if (Object.keys(admin).length) {\n props.admin = admin\n }\n\n for (const key in props) {\n if (props[key as keyof LexicalRichTextFieldProps] === undefined) {\n delete props[key as keyof LexicalRichTextFieldProps]\n }\n }\n\n return <RichTextField {...props} />\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"rscEntry.js","names":["getTranslation","renderField","React","RichTextField","buildInitialState","initLexicalFeatures","RscEntryLexicalField","args","field","path","clientField","name","schemaPath","Error","clientFeatures","featureClientSchemaMap","clientFieldSchemaMap","fieldSchemaMap","i18n","payload","sanitizedEditorConfig","initialLexicalFormState","data","root","children","length","context","id","collectionSlug","documentData","lexicalFieldSchemaPath","operation","permissions","preferences","renderFieldFn","req","nodeData","placeholderFromArgs","admin","placeholder","undefined","hideGutter","hideInsertParagraphAtEnd","props","forceRender","lexicalEditorConfig","lexical","readOnly","renderedBlocks","Object","keys","key","_jsx"],"sources":["../../src/field/rscEntry.tsx"],"sourcesContent":["import type { SerializedLexicalNode } from 'lexical'\nimport type {\n ClientComponentProps,\n FieldPaths,\n RichTextFieldClient,\n RichTextField as RichTextFieldType,\n ServerComponentProps,\n} from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport { renderField } from '@payloadcms/ui/forms/renderField'\nimport React from 'react'\n\nimport type { SanitizedServerEditorConfig } from '../lexical/config/types.js'\nimport type {\n LexicalFieldAdminClientProps,\n LexicalFieldAdminProps,\n LexicalRichTextFieldProps,\n} from '../types.js'\n\n// eslint-disable-next-line payload/no-imports-from-exports-dir\nimport { RichTextField } from '../exports/client/index.js'\nimport { buildInitialState } from '../utilities/buildInitialState.js'\nimport { initLexicalFeatures } from '../utilities/initLexicalFeatures.js'\n\nexport const RscEntryLexicalField: React.FC<\n {\n admin: LexicalFieldAdminProps\n sanitizedEditorConfig: SanitizedServerEditorConfig\n } & ClientComponentProps &\n Pick<FieldPaths, 'path'> &\n ServerComponentProps\n> = async (args) => {\n const field: RichTextFieldType = args.field as RichTextFieldType\n const path = args.path ?? (args.clientField as RichTextFieldClient).name\n const schemaPath = args.schemaPath ?? path\n\n if (!(args?.clientField as RichTextFieldClient)?.name) {\n throw new Error('Initialized lexical RSC field without a field name')\n }\n\n const { clientFeatures, featureClientSchemaMap } = initLexicalFeatures({\n clientFieldSchemaMap: args.clientFieldSchemaMap,\n fieldSchemaMap: args.fieldSchemaMap,\n i18n: args.i18n,\n path,\n payload: args.payload,\n sanitizedEditorConfig: args.sanitizedEditorConfig,\n schemaPath,\n })\n\n let initialLexicalFormState = {}\n if (args.data?.[field.name]?.root?.children?.length) {\n initialLexicalFormState = await buildInitialState({\n context: {\n id: args.id,\n clientFieldSchemaMap: args.clientFieldSchemaMap,\n collectionSlug: args.collectionSlug,\n documentData: args.data,\n field,\n fieldSchemaMap: args.fieldSchemaMap,\n lexicalFieldSchemaPath: schemaPath,\n operation: args.operation,\n permissions: args.permissions,\n preferences: args.preferences,\n renderFieldFn: renderField,\n req: args.req,\n },\n nodeData: args.data?.[field.name]?.root?.children as SerializedLexicalNode[],\n })\n }\n\n const placeholderFromArgs = args.admin?.placeholder\n const placeholder = placeholderFromArgs\n ? getTranslation(placeholderFromArgs, args.i18n)\n : undefined\n\n const admin: LexicalFieldAdminClientProps = {}\n if (placeholder) {\n admin.placeholder = placeholder\n }\n if (args.admin?.hideGutter) {\n admin.hideGutter = true\n }\n if (args.admin?.hideInsertParagraphAtEnd) {\n admin.hideInsertParagraphAtEnd = true\n }\n\n const props: LexicalRichTextFieldProps = {\n clientFeatures,\n featureClientSchemaMap, // TODO: Does client need this? Why cant this just live in the server\n field: args.clientField as RichTextFieldClient,\n forceRender: args.forceRender,\n initialLexicalFormState,\n lexicalEditorConfig: args.sanitizedEditorConfig.lexical,\n path,\n permissions: args.permissions,\n readOnly: args.readOnly,\n renderedBlocks: args.renderedBlocks,\n schemaPath,\n }\n if (Object.keys(admin).length) {\n props.admin = admin\n }\n\n for (const key in props) {\n if (props[key as keyof LexicalRichTextFieldProps] === undefined) {\n delete props[key as keyof LexicalRichTextFieldProps]\n }\n }\n\n return <RichTextField {...props} />\n}\n"],"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
@@ -229,6 +229,7 @@ export function lexicalEditor(props) {
229
229
  }) ?? {};
230
230
  if (subFields?.length) {
231
231
  await afterChangeTraverseFields({
232
+ blockData: nodeSiblingData,
232
233
  collection,
233
234
  context,
234
235
  data: data ?? {},
@@ -334,12 +335,13 @@ export function lexicalEditor(props) {
334
335
  node,
335
336
  req
336
337
  });
337
- const nodeSliblingData = subFieldDataFn({
338
+ const nodeSiblingData = subFieldDataFn({
338
339
  node,
339
340
  req
340
341
  }) ?? {};
341
342
  if (subFields?.length) {
342
343
  afterReadTraverseFields({
344
+ blockData: nodeSiblingData,
343
345
  collection,
344
346
  context,
345
347
  currentDepth: currentDepth,
@@ -361,7 +363,7 @@ export function lexicalEditor(props) {
361
363
  populationPromises: populationPromises,
362
364
  req,
363
365
  showHiddenFields: showHiddenFields,
364
- siblingDoc: nodeSliblingData,
366
+ siblingDoc: nodeSiblingData,
365
367
  triggerAccessControl,
366
368
  triggerHooks
367
369
  });
@@ -477,6 +479,7 @@ export function lexicalEditor(props) {
477
479
  if (subFields?.length) {
478
480
  await beforeChangeTraverseFields({
479
481
  id,
482
+ blockData: nodeSiblingData,
480
483
  collection,
481
484
  context,
482
485
  data: data ?? {},
@@ -640,6 +643,7 @@ export function lexicalEditor(props) {
640
643
  if (subFields?.length) {
641
644
  await beforeValidateTraverseFields({
642
645
  id,
646
+ blockData: nodeSiblingData,
643
647
  collection,
644
648
  context,
645
649
  data,
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["afterChangeTraverseFields","afterReadTraverseFields","beforeChangeTraverseFields","beforeValidateTraverseFields","checkDependencies","withNullableJSONSchemaType","getDefaultSanitizedEditorConfig","i18n","defaultEditorConfig","defaultEditorFeatures","loadFeatures","sanitizeServerFeatures","populateLexicalPopulationPromises","getGenerateImportMap","getGenerateSchemaMap","recurseNodeTree","richTextValidateHOC","checkedDependencies","lexicalTargetVersion","lexicalEditor","props","process","env","NODE_ENV","PAYLOAD_DISABLE_DEPENDENCY_CHECKER","dependencyGroups","name","dependencies","targetVersion","config","isRoot","parentIsLocalized","features","resolvedFeatureMap","finalSanitizedEditorConfig","lexical","rootEditor","editor","rootEditorFeatures","defaultFeatures","rootFeatures","unSanitizedEditorConfig","featureI18n","lang","general","CellComponent","path","serverProps","admin","sanitizedEditorConfig","editorConfig","FieldComponent","generateImportMap","generateSchemaMap","graphQLPopulationPromises","context","currentDepth","depth","draft","field","fieldPromises","findMany","flattenLocales","overrideAccess","populationPromises","req","showHiddenFields","siblingDoc","size","editorPopulationPromises","hooks","afterChange","args","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","doc","fields","parentIndexPath","parentPath","parentSchemaPath","previousSiblingDoc","siblingData","afterRead","fallbackLocale","locale","populate","triggerAccessControl","triggerHooks","flattenedNodes","afterReadHooks","afterReadHooksForNode","populateArg","nodeSliblingData","beforeChange","docWithLocales","errors","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","LinebreakHTMLConverter","ParagraphHTMLConverter","TabHTMLConverter","TextHTMLConverter","defaultHTMLConverters","convertLexicalNodesToHTML","convertLexicalToHTML","consolidateHTMLConverters","lexicalHTML","HTMLConverterFeature","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","defaultEditorLexicalConfig","sortFeaturesForOptimalLoading","sanitizeServerEditorConfig","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","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 {\n AdapterProps,\n LexicalEditorProps,\n LexicalRichTextAdapter,\n LexicalRichTextAdapterProvider,\n} from './types.js'\n\nimport { getDefaultSanitizedEditorConfig } from './getDefaultSanitizedEditorConfig.js'\nimport { i18n } from './i18n.js'\nimport { defaultEditorConfig, defaultEditorFeatures } from './lexical/config/server/default.js'\nimport { loadFeatures } from './lexical/config/server/loader.js'\nimport { sanitizeServerFeatures } from './lexical/config/server/sanitize.js'\nimport { populateLexicalPopulationPromises } from './populateGraphQL/populateLexicalPopulationPromises.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.21.0'\n\nexport function lexicalEditor(props?: 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 (!props || (!props.features && !props.lexical)) {\n finalSanitizedEditorConfig = await getDefaultSanitizedEditorConfig({\n config,\n parentIsLocalized,\n })\n\n features = defaultEditorFeatures\n\n resolvedFeatureMap = finalSanitizedEditorConfig.resolvedFeatureMap\n } else {\n if (props.features && typeof props.features === 'function') {\n const rootEditor = config.editor\n let rootEditorFeatures: FeatureProviderServer<unknown, unknown, unknown>[] = []\n if (typeof rootEditor === 'object' && 'features' in rootEditor) {\n rootEditorFeatures = (rootEditor as LexicalRichTextAdapter).features\n }\n features = props.features({\n defaultFeatures: defaultEditorFeatures,\n rootFeatures: rootEditorFeatures,\n })\n } else {\n features = props.features as FeatureProviderServer<unknown, unknown, unknown>[]\n }\n\n if (!features) {\n features = defaultEditorFeatures\n }\n\n const lexical = props.lexical ?? defaultEditorConfig.lexical\n\n resolvedFeatureMap = await loadFeatures({\n config,\n isRoot,\n parentIsLocalized,\n unSanitizedEditorConfig: {\n features,\n lexical,\n },\n })\n\n finalSanitizedEditorConfig = {\n features: sanitizeServerFeatures(resolvedFeatureMap),\n lexical: props.lexical,\n resolvedFeatureMap,\n }\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: props?.admin,\n sanitizedEditorConfig: finalSanitizedEditorConfig,\n },\n },\n editorConfig: finalSanitizedEditorConfig,\n features,\n FieldComponent: {\n path: '@payloadcms/richtext-lexical/rsc#RscEntryLexicalField',\n serverProps: {\n admin: props?.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 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 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 global,\n indexPath,\n operation,\n originalDoc,\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 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 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 collection,\n context,\n data: data ?? {},\n doc: originalDoc,\n fields: subFields,\n global,\n operation,\n parentIndexPath: indexPath.join('-'),\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 fieldPromises,\n findMany,\n flattenLocales,\n global,\n indexPath,\n locale,\n originalDoc,\n overrideAccess,\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 nodeSliblingData = subFieldDataFn({ node, req }) ?? {}\n\n if (subFields?.length) {\n afterReadTraverseFields({\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 parentPath: path.join('.'),\n parentSchemaPath: schemaPath.join('.'),\n populate,\n populationPromises: populationPromises!,\n req,\n showHiddenFields: showHiddenFields!,\n siblingDoc: nodeSliblingData,\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 global,\n indexPath,\n mergeLocaleActions,\n operation,\n originalDoc,\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 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 collection,\n context,\n data: data ?? {},\n doc: originalDoc ?? {},\n docWithLocales: docWithLocales ?? {},\n errors: errors!,\n fields: subFields,\n global,\n mergeLocaleActions: mergeLocaleActions!,\n operation: operation!,\n parentIndexPath: indexPath.join('-'),\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 global,\n indexPath,\n operation,\n originalDoc,\n overrideAccess,\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 const nodeSiblingDoc = subFieldDataFn({ node: originalNodeIDMap[id], req }) ?? {}\n\n if (subFields?.length) {\n await beforeValidateTraverseFields({\n id,\n collection,\n context,\n data,\n doc: originalDoc,\n fields: subFields,\n global,\n operation,\n overrideAccess: overrideAccess!,\n parentIndexPath: indexPath.join('-'),\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 { LinebreakHTMLConverter } from './features/converters/html/converter/converters/linebreak.js'\nexport { ParagraphHTMLConverter } from './features/converters/html/converter/converters/paragraph.js'\n\nexport { TabHTMLConverter } from './features/converters/html/converter/converters/tab.js'\n\nexport { TextHTMLConverter } from './features/converters/html/converter/converters/text.js'\nexport { defaultHTMLConverters } from './features/converters/html/converter/defaultConverters.js'\nexport {\n convertLexicalNodesToHTML,\n convertLexicalToHTML,\n} from './features/converters/html/converter/index.js'\n\nexport type { HTMLConverter } from './features/converters/html/converter/types.js'\nexport { consolidateHTMLConverters, lexicalHTML } from './features/converters/html/field/index.js'\nexport {\n HTMLConverterFeature,\n type HTMLConverterFeatureProps,\n} from './features/converters/html/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'\nexport { ItalicFeature } from './features/format/italic/feature.server.js'\n\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'\nexport { IndentFeature } from './features/indent/server/index.js'\n\nexport { AutoLinkNode } from './features/link/nodes/AutoLinkNode.js'\n\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'\nexport { UnorderedListFeature } from './features/lists/unorderedList/server/index.js'\n\nexport type {\n SlateNode,\n SlateNodeConverter,\n} from './features/migrations/slateToLexical/converter/types.js'\n\nexport { ParagraphFeature } from './features/paragraph/server/index.js'\nexport {\n RelationshipFeature,\n type RelationshipFeatureProps,\n} from './features/relationship/server/index.js'\nexport {\n type RelationshipData,\n RelationshipServerNode,\n} from './features/relationship/server/nodes/RelationshipNode.js'\n\nexport { FixedToolbarFeature } from './features/toolbars/fixed/server/index.js'\nexport { InlineToolbarFeature } from './features/toolbars/inline/server/index.js'\n\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'\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/feature.server.js'\n\nexport type { UploadFeatureProps } from './features/upload/server/feature.server.js'\nexport { type UploadData, UploadServerNode } from './features/upload/server/nodes/UploadNode.js'\n\nexport type { EditorConfigContextType } from './lexical/config/client/EditorConfigProvider.js'\nexport {\n defaultEditorConfig,\n defaultEditorFeatures,\n defaultEditorLexicalConfig,\n} from './lexical/config/server/default.js'\n\nexport { loadFeatures, sortFeaturesForOptimalLoading } from './lexical/config/server/loader.js'\nexport {\n sanitizeServerEditorConfig,\n sanitizeServerFeatures,\n} from './lexical/config/server/sanitize.js'\n\nexport type {\n ClientEditorConfig,\n SanitizedClientEditorConfig,\n SanitizedServerEditorConfig,\n ServerEditorConfig,\n} from './lexical/config/types.js'\nexport { getEnabledNodes, getEnabledNodesFromServerNodes } from './lexical/nodes/index.js'\nexport type { AdapterProps }\n\nexport type {\n SlashMenuGroup,\n SlashMenuItem,\n} from './lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/types.js'\n\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'\nexport { sanitizeUrl, validateUrl } from './lexical/utils/url.js'\n\nexport type * from './nodeTypes.js'\n\nexport { $convertFromMarkdownString } from './packages/@lexical/markdown/index.js'\n\nexport { defaultRichTextValue } from './populateGraphQL/defaultValue.js'\nexport { populate } from './populateGraphQL/populate.js'\nexport type { LexicalEditorProps, LexicalRichTextAdapter } from './types.js'\n\nexport { createServerFeature } from './utilities/createServerFeature.js'\n\nexport type { FieldsDrawerProps } from './utilities/fieldsDrawer/Drawer.js'\nexport { extractPropsFromJSXPropsString } from './utilities/jsx/extractPropsFromJSXPropsString.js'\nexport {\n extractFrontmatter,\n frontmatterToObject,\n objectToFrontmatter,\n propsToJSXString,\n} from './utilities/jsx/jsx.js'\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","defaultEditorConfig","defaultEditorFeatures","loadFeatures","sanitizeServerFeatures","populateLexicalPopulationPromises","getGenerateImportMap","getGenerateSchemaMap","recurseNodeTree","richTextValidateHOC","checkedDependencies","lexicalTargetVersion","lexicalEditor","props","process","env","NODE_ENV","PAYLOAD_DISABLE_DEPENDENCY_CHECKER","dependencyGroups","name","dependencies","targetVersion","config","isRoot","parentIsLocalized","features","resolvedFeatureMap","finalSanitizedEditorConfig","lexical","rootEditor","editor","rootEditorFeatures","defaultFeatures","rootFeatures","unSanitizedEditorConfig","featureI18n","lang","general","CellComponent","path","serverProps","admin","sanitizedEditorConfig","editorConfig","FieldComponent","generateImportMap","generateSchemaMap","graphQLPopulationPromises","context","currentDepth","depth","draft","field","fieldPromises","findMany","flattenLocales","overrideAccess","populationPromises","req","showHiddenFields","siblingDoc","size","editorPopulationPromises","hooks","afterChange","args","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","parentPath","parentSchemaPath","previousSiblingDoc","siblingData","afterRead","fallbackLocale","locale","populate","triggerAccessControl","triggerHooks","flattenedNodes","afterReadHooks","afterReadHooksForNode","populateArg","beforeChange","docWithLocales","errors","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","LinebreakHTMLConverter","ParagraphHTMLConverter","TabHTMLConverter","TextHTMLConverter","defaultHTMLConverters","convertLexicalNodesToHTML","convertLexicalToHTML","consolidateHTMLConverters","lexicalHTML","HTMLConverterFeature","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","defaultEditorLexicalConfig","sortFeaturesForOptimalLoading","sanitizeServerEditorConfig","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","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 {\n AdapterProps,\n LexicalEditorProps,\n LexicalRichTextAdapter,\n LexicalRichTextAdapterProvider,\n} from './types.js'\n\nimport { getDefaultSanitizedEditorConfig } from './getDefaultSanitizedEditorConfig.js'\nimport { i18n } from './i18n.js'\nimport { defaultEditorConfig, defaultEditorFeatures } from './lexical/config/server/default.js'\nimport { loadFeatures } from './lexical/config/server/loader.js'\nimport { sanitizeServerFeatures } from './lexical/config/server/sanitize.js'\nimport { populateLexicalPopulationPromises } from './populateGraphQL/populateLexicalPopulationPromises.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.21.0'\n\nexport function lexicalEditor(props?: 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 (!props || (!props.features && !props.lexical)) {\n finalSanitizedEditorConfig = await getDefaultSanitizedEditorConfig({\n config,\n parentIsLocalized,\n })\n\n features = defaultEditorFeatures\n\n resolvedFeatureMap = finalSanitizedEditorConfig.resolvedFeatureMap\n } else {\n if (props.features && typeof props.features === 'function') {\n const rootEditor = config.editor\n let rootEditorFeatures: FeatureProviderServer<unknown, unknown, unknown>[] = []\n if (typeof rootEditor === 'object' && 'features' in rootEditor) {\n rootEditorFeatures = (rootEditor as LexicalRichTextAdapter).features\n }\n features = props.features({\n defaultFeatures: defaultEditorFeatures,\n rootFeatures: rootEditorFeatures,\n })\n } else {\n features = props.features as FeatureProviderServer<unknown, unknown, unknown>[]\n }\n\n if (!features) {\n features = defaultEditorFeatures\n }\n\n const lexical = props.lexical ?? defaultEditorConfig.lexical\n\n resolvedFeatureMap = await loadFeatures({\n config,\n isRoot,\n parentIsLocalized,\n unSanitizedEditorConfig: {\n features,\n lexical,\n },\n })\n\n finalSanitizedEditorConfig = {\n features: sanitizeServerFeatures(resolvedFeatureMap),\n lexical: props.lexical,\n resolvedFeatureMap,\n }\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: props?.admin,\n sanitizedEditorConfig: finalSanitizedEditorConfig,\n },\n },\n editorConfig: finalSanitizedEditorConfig,\n features,\n FieldComponent: {\n path: '@payloadcms/richtext-lexical/rsc#RscEntryLexicalField',\n serverProps: {\n admin: props?.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 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 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 global,\n indexPath,\n operation,\n originalDoc,\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 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 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 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 fieldPromises,\n findMany,\n flattenLocales,\n global,\n indexPath,\n locale,\n originalDoc,\n overrideAccess,\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 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 global,\n indexPath,\n mergeLocaleActions,\n operation,\n originalDoc,\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 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 fields: subFields,\n global,\n mergeLocaleActions: mergeLocaleActions!,\n operation: operation!,\n parentIndexPath: indexPath.join('-'),\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 global,\n indexPath,\n operation,\n originalDoc,\n overrideAccess,\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 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 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 { LinebreakHTMLConverter } from './features/converters/html/converter/converters/linebreak.js'\nexport { ParagraphHTMLConverter } from './features/converters/html/converter/converters/paragraph.js'\n\nexport { TabHTMLConverter } from './features/converters/html/converter/converters/tab.js'\n\nexport { TextHTMLConverter } from './features/converters/html/converter/converters/text.js'\nexport { defaultHTMLConverters } from './features/converters/html/converter/defaultConverters.js'\nexport {\n convertLexicalNodesToHTML,\n convertLexicalToHTML,\n} from './features/converters/html/converter/index.js'\n\nexport type { HTMLConverter } from './features/converters/html/converter/types.js'\nexport { consolidateHTMLConverters, lexicalHTML } from './features/converters/html/field/index.js'\nexport {\n HTMLConverterFeature,\n type HTMLConverterFeatureProps,\n} from './features/converters/html/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'\nexport { ItalicFeature } from './features/format/italic/feature.server.js'\n\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'\nexport { IndentFeature } from './features/indent/server/index.js'\n\nexport { AutoLinkNode } from './features/link/nodes/AutoLinkNode.js'\n\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'\nexport { UnorderedListFeature } from './features/lists/unorderedList/server/index.js'\n\nexport type {\n SlateNode,\n SlateNodeConverter,\n} from './features/migrations/slateToLexical/converter/types.js'\n\nexport { ParagraphFeature } from './features/paragraph/server/index.js'\nexport {\n RelationshipFeature,\n type RelationshipFeatureProps,\n} from './features/relationship/server/index.js'\nexport {\n type RelationshipData,\n RelationshipServerNode,\n} from './features/relationship/server/nodes/RelationshipNode.js'\n\nexport { FixedToolbarFeature } from './features/toolbars/fixed/server/index.js'\nexport { InlineToolbarFeature } from './features/toolbars/inline/server/index.js'\n\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'\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/feature.server.js'\n\nexport type { UploadFeatureProps } from './features/upload/server/feature.server.js'\nexport { type UploadData, UploadServerNode } from './features/upload/server/nodes/UploadNode.js'\n\nexport type { EditorConfigContextType } from './lexical/config/client/EditorConfigProvider.js'\nexport {\n defaultEditorConfig,\n defaultEditorFeatures,\n defaultEditorLexicalConfig,\n} from './lexical/config/server/default.js'\n\nexport { loadFeatures, sortFeaturesForOptimalLoading } from './lexical/config/server/loader.js'\nexport {\n sanitizeServerEditorConfig,\n sanitizeServerFeatures,\n} from './lexical/config/server/sanitize.js'\n\nexport type {\n ClientEditorConfig,\n SanitizedClientEditorConfig,\n SanitizedServerEditorConfig,\n ServerEditorConfig,\n} from './lexical/config/types.js'\nexport { getEnabledNodes, getEnabledNodesFromServerNodes } from './lexical/nodes/index.js'\nexport type { AdapterProps }\n\nexport type {\n SlashMenuGroup,\n SlashMenuItem,\n} from './lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/types.js'\n\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'\nexport { sanitizeUrl, validateUrl } from './lexical/utils/url.js'\n\nexport type * from './nodeTypes.js'\n\nexport { $convertFromMarkdownString } from './packages/@lexical/markdown/index.js'\n\nexport { defaultRichTextValue } from './populateGraphQL/defaultValue.js'\nexport { populate } from './populateGraphQL/populate.js'\nexport type { LexicalEditorProps, LexicalRichTextAdapter } from './types.js'\n\nexport { createServerFeature } from './utilities/createServerFeature.js'\n\nexport type { FieldsDrawerProps } from './utilities/fieldsDrawer/Drawer.js'\nexport { extractPropsFromJSXPropsString } from './utilities/jsx/extractPropsFromJSXPropsString.js'\nexport {\n extractFrontmatter,\n frontmatterToObject,\n objectToFrontmatter,\n propsToJSXString,\n} from './utilities/jsx/jsx.js'\nexport { upgradeLexicalData } from './utilities/upgradeLexicalData/index.js'\n"],"mappings":"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","ignoreList":[]}
@@ -1,4 +1,4 @@
1
- import type { RichTextFieldClient } from 'payload';
1
+ import type { ClientConfig, RichTextFieldClient } from 'payload';
2
2
  import type { ResolvedClientFeatureMap } from '../../../features/typesClient.js';
3
3
  import type { FeatureClientSchemaMap } from '../../../types.js';
4
4
  import type { ClientEditorConfig } from '../types.js';
@@ -6,7 +6,8 @@ import type { ClientEditorConfig } from '../types.js';
6
6
  * This function expects client functions to ALREADY be ordered & dependencies checked on the server
7
7
  * @param unSanitizedEditorConfig
8
8
  */
9
- export declare function loadClientFeatures({ featureClientSchemaMap, field, schemaPath, unSanitizedEditorConfig, }: {
9
+ export declare function loadClientFeatures({ config, featureClientSchemaMap, field, schemaPath, unSanitizedEditorConfig, }: {
10
+ config: ClientConfig;
10
11
  featureClientSchemaMap: FeatureClientSchemaMap;
11
12
  field?: RichTextFieldClient;
12
13
  schemaPath: string;
@@ -1 +1 @@
1
- {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../../../src/lexical/config/client/loader.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAA;AAElD,OAAO,KAAK,EAGV,wBAAwB,EACzB,MAAM,kCAAkC,CAAA;AACzC,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAA;AAC/D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAErD;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,EACjC,sBAAsB,EACtB,KAAK,EACL,UAAU,EACV,uBAAuB,GACxB,EAAE;IACD,sBAAsB,EAAE,sBAAsB,CAAA;IAC9C,KAAK,CAAC,EAAE,mBAAmB,CAAA;IAC3B,UAAU,EAAE,MAAM,CAAA;IAClB,uBAAuB,EAAE,kBAAkB,CAAA;CAC5C,GAAG,wBAAwB,CAoD3B"}
1
+ {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../../../src/lexical/config/client/loader.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAA;AAEhE,OAAO,KAAK,EAGV,wBAAwB,EACzB,MAAM,kCAAkC,CAAA;AACzC,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAA;AAC/D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAErD;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,EACjC,MAAM,EACN,sBAAsB,EACtB,KAAK,EACL,UAAU,EACV,uBAAuB,GACxB,EAAE;IACD,MAAM,EAAE,YAAY,CAAA;IACpB,sBAAsB,EAAE,sBAAsB,CAAA;IAC9C,KAAK,CAAC,EAAE,mBAAmB,CAAA;IAC3B,UAAU,EAAE,MAAM,CAAA;IAClB,uBAAuB,EAAE,kBAAkB,CAAA;CAC5C,GAAG,wBAAwB,CAqD3B"}