@payloadcms/richtext-lexical 3.3.0 → 3.4.1-canary.2a8fa30

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +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
@@ -143,9 +143,13 @@ export function lexicalEditor(props) {
143
143
  const {
144
144
  collection,
145
145
  context: _context,
146
+ data,
146
147
  global,
147
148
  operation,
149
+ originalDoc,
148
150
  path,
151
+ previousDoc,
152
+ previousValue,
149
153
  req,
150
154
  schemaPath
151
155
  } = args;
@@ -164,6 +168,7 @@ export function lexicalEditor(props) {
164
168
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
165
169
  const context = _context;
166
170
  const nodeIDMap = {};
171
+ const previousNodeIDMap = {};
167
172
  /**
168
173
  * Get the originalNodeIDMap from the beforeValidate hook, which is always run before this hook.
169
174
  */
@@ -175,6 +180,10 @@ export function lexicalEditor(props) {
175
180
  nodeIDMap,
176
181
  nodes: value?.root?.children ?? []
177
182
  });
183
+ recurseNodeTree({
184
+ nodeIDMap: previousNodeIDMap,
185
+ nodes: previousValue?.root?.children ?? []
186
+ });
178
187
  // eslint-disable-next-line prefer-const
179
188
  for (let [id, node] of Object.entries(nodeIDMap)) {
180
189
  const afterChangeHooks = finalSanitizedEditorConfig.features.nodeHooks?.afterChange;
@@ -192,6 +201,7 @@ export function lexicalEditor(props) {
192
201
  originalNode: originalNodeIDMap[id],
193
202
  parentRichTextFieldPath: path,
194
203
  parentRichTextFieldSchemaPath: schemaPath,
204
+ previousNode: previousNodeIDMap[id],
195
205
  req
196
206
  });
197
207
  }
@@ -203,33 +213,37 @@ export function lexicalEditor(props) {
203
213
  node,
204
214
  req
205
215
  });
206
- const data = subFieldDataFn({
216
+ const nodeSiblingData = subFieldDataFn({
207
217
  node,
208
218
  req
209
219
  }) ?? {};
210
- const originalData = subFieldDataFn({
220
+ const nodeSiblingDoc = subFieldDataFn({
211
221
  node: originalNodeIDMap[id],
212
222
  req
213
223
  }) ?? {};
224
+ const nodePreviousSiblingDoc = subFieldDataFn({
225
+ node: previousNodeIDMap[id],
226
+ req
227
+ }) ?? {};
214
228
  if (subFields?.length) {
215
229
  await afterChangeTraverseFields({
216
230
  collection,
217
231
  context,
218
- data: originalData,
219
- doc: data,
232
+ data: data ?? {},
233
+ doc: originalDoc,
220
234
  fields: subFields,
221
235
  global,
222
236
  operation,
223
237
  path,
224
- previousDoc: data,
238
+ previousDoc,
225
239
  previousSiblingDoc: {
226
- ...data
240
+ ...nodePreviousSiblingDoc
227
241
  },
228
242
  req,
229
243
  schemaPath,
230
- siblingData: originalData || {},
244
+ siblingData: nodeSiblingData || {},
231
245
  siblingDoc: {
232
- ...data
246
+ ...nodeSiblingDoc
233
247
  }
234
248
  });
235
249
  }
@@ -254,6 +268,7 @@ export function lexicalEditor(props) {
254
268
  flattenLocales,
255
269
  global,
256
270
  locale,
271
+ originalDoc,
257
272
  overrideAccess,
258
273
  path,
259
274
  populate,
@@ -315,7 +330,7 @@ export function lexicalEditor(props) {
315
330
  node,
316
331
  req
317
332
  });
318
- const data = subFieldDataFn({
333
+ const nodeSliblingData = subFieldDataFn({
319
334
  node,
320
335
  req
321
336
  }) ?? {};
@@ -325,7 +340,7 @@ export function lexicalEditor(props) {
325
340
  context,
326
341
  currentDepth: currentDepth,
327
342
  depth: depth,
328
- doc: data,
343
+ doc: originalDoc,
329
344
  draft: draft,
330
345
  fallbackLocale: fallbackLocale,
331
346
  fieldPromises: fieldPromises,
@@ -341,7 +356,7 @@ export function lexicalEditor(props) {
341
356
  req,
342
357
  schemaPath,
343
358
  showHiddenFields: showHiddenFields,
344
- siblingDoc: data,
359
+ siblingDoc: nodeSliblingData,
345
360
  triggerAccessControl,
346
361
  triggerHooks
347
362
  });
@@ -354,12 +369,16 @@ export function lexicalEditor(props) {
354
369
  const {
355
370
  collection,
356
371
  context: _context,
372
+ data,
373
+ docWithLocales,
357
374
  errors,
358
375
  field,
359
376
  global,
360
377
  mergeLocaleActions,
361
378
  operation,
379
+ originalDoc,
362
380
  path,
381
+ previousValue,
363
382
  req,
364
383
  schemaPath,
365
384
  siblingData,
@@ -388,11 +407,16 @@ export function lexicalEditor(props) {
388
407
  if (!originalNodeIDMap || !Object.keys(originalNodeIDMap).length || !value) {
389
408
  return value;
390
409
  }
410
+ const previousNodeIDMap = {};
391
411
  const originalNodeWithLocalesIDMap = {};
392
412
  recurseNodeTree({
393
413
  nodeIDMap,
394
414
  nodes: value?.root?.children ?? []
395
415
  });
416
+ recurseNodeTree({
417
+ nodeIDMap: previousNodeIDMap,
418
+ nodes: previousValue?.root?.children ?? []
419
+ });
396
420
  if (field.name && siblingDocWithLocales?.[field.name]) {
397
421
  recurseNodeTree({
398
422
  nodeIDMap: originalNodeWithLocalesIDMap,
@@ -419,6 +443,7 @@ export function lexicalEditor(props) {
419
443
  originalNodeWithLocales: originalNodeWithLocalesIDMap[id],
420
444
  parentRichTextFieldPath: path,
421
445
  parentRichTextFieldSchemaPath: schemaPath,
446
+ previousNode: previousNodeIDMap[id],
422
447
  req,
423
448
  skipValidation: skipValidation
424
449
  });
@@ -431,16 +456,16 @@ export function lexicalEditor(props) {
431
456
  node,
432
457
  req
433
458
  });
434
- const data = subFieldDataFn({
459
+ const nodeSiblingData = subFieldDataFn({
435
460
  node,
436
461
  req
437
462
  }) ?? {};
438
- const originalData = subFieldDataFn({
439
- node: originalNodeIDMap[id],
463
+ const nodeSiblingDocWithLocales = subFieldDataFn({
464
+ node: originalNodeWithLocalesIDMap[id],
440
465
  req
441
466
  }) ?? {};
442
- const originalDataWithLocales = subFieldDataFn({
443
- node: originalNodeWithLocalesIDMap[id],
467
+ const nodePreviousSiblingDoc = subFieldDataFn({
468
+ node: previousNodeIDMap[id],
444
469
  req
445
470
  }) ?? {};
446
471
  if (subFields?.length) {
@@ -448,9 +473,9 @@ export function lexicalEditor(props) {
448
473
  id,
449
474
  collection,
450
475
  context,
451
- data,
452
- doc: originalData,
453
- docWithLocales: originalDataWithLocales ?? {},
476
+ data: data ?? {},
477
+ doc: originalDoc ?? {},
478
+ docWithLocales: docWithLocales ?? {},
454
479
  errors: errors,
455
480
  fields: subFields,
456
481
  global,
@@ -459,9 +484,9 @@ export function lexicalEditor(props) {
459
484
  path,
460
485
  req,
461
486
  schemaPath,
462
- siblingData: data,
463
- siblingDoc: originalData,
464
- siblingDocWithLocales: originalDataWithLocales ?? {},
487
+ siblingData: nodeSiblingData,
488
+ siblingDoc: nodePreviousSiblingDoc,
489
+ siblingDocWithLocales: nodeSiblingDocWithLocales ?? {},
465
490
  skipValidation
466
491
  });
467
492
  }
@@ -478,10 +503,10 @@ export function lexicalEditor(props) {
478
503
  * and in beforeChange, which is where modifications to the provided IDs can occur.
479
504
  */
480
505
  const newOriginalNodeIDMap = {};
481
- const previousValue = siblingData[field.name];
506
+ const previousOriginalValue = siblingData[field.name];
482
507
  recurseNodeTree({
483
508
  nodeIDMap: newOriginalNodeIDMap,
484
- nodes: previousValue?.root?.children ?? []
509
+ nodes: previousOriginalValue?.root?.children ?? []
485
510
  });
486
511
  if (!context.internal) {
487
512
  // Add to context, for other hooks to use
@@ -499,8 +524,10 @@ export function lexicalEditor(props) {
499
524
  const {
500
525
  collection,
501
526
  context,
527
+ data,
502
528
  global,
503
529
  operation,
530
+ originalDoc,
504
531
  overrideAccess,
505
532
  path,
506
533
  previousValue,
@@ -594,11 +621,11 @@ export function lexicalEditor(props) {
594
621
  node,
595
622
  req
596
623
  });
597
- const data = subFieldDataFn({
624
+ const nodeSiblingData = subFieldDataFn({
598
625
  node,
599
626
  req
600
627
  }) ?? {};
601
- const originalData = subFieldDataFn({
628
+ const nodeSiblingDoc = subFieldDataFn({
602
629
  node: originalNodeIDMap[id],
603
630
  req
604
631
  }) ?? {};
@@ -608,7 +635,7 @@ export function lexicalEditor(props) {
608
635
  collection,
609
636
  context,
610
637
  data,
611
- doc: originalData,
638
+ doc: originalDoc,
612
639
  fields: subFields,
613
640
  global,
614
641
  operation,
@@ -616,8 +643,8 @@ export function lexicalEditor(props) {
616
643
  path,
617
644
  req,
618
645
  schemaPath,
619
- siblingData: data,
620
- siblingDoc: originalData
646
+ siblingData: nodeSiblingData,
647
+ siblingDoc: nodeSiblingDoc
621
648
  });
622
649
  }
623
650
  }
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","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","global","operation","schemaPath","value","length","hook","nodeHooks","getSubFields","nodeIDMap","originalNodeIDMap","internal","richText","join","Object","keys","nodes","root","children","id","node","entries","afterChangeHooks","afterChangeHooksForNode","get","type","console","warn","originalNode","parentRichTextFieldPath","parentRichTextFieldSchemaPath","subFieldFn","subFieldDataFn","getSubFieldsData","subFields","data","originalData","doc","fields","previousDoc","previousSiblingDoc","siblingData","afterRead","fallbackLocale","locale","populate","triggerAccessControl","triggerHooks","flattenedNodes","afterReadHooks","afterReadHooksForNode","populateArg","beforeChange","errors","mergeLocaleActions","siblingDocWithLocales","skipValidation","originalNodeWithLocalesIDMap","beforeChangeHooks","beforeChangeHooksForNode","originalNodeWithLocales","originalDataWithLocales","docWithLocales","newOriginalNodeIDMap","previousValue","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","LinebreakHTMLConverter","ParagraphHTMLConverter","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","defaultRichTextValue","createServerFeature","extractPropsFromJSXPropsString","extractFrontmatter","frontmatterToObject","objectToFrontmatter","propsToJSXString","$convertFromMarkdownString","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 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: '0.20.0',\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 { collection, context: _context, global, operation, path, req, schemaPath } = args\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 /**\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 // 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 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 data = subFieldDataFn({ node, req }) ?? {}\n const originalData = subFieldDataFn({ node: originalNodeIDMap[id], req }) ?? {}\n\n if (subFields?.length) {\n await afterChangeTraverseFields({\n collection,\n context,\n data: originalData,\n doc: data,\n fields: subFields,\n global,\n operation,\n path,\n previousDoc: data,\n previousSiblingDoc: { ...data },\n req,\n schemaPath,\n siblingData: originalData || {},\n siblingDoc: { ...data },\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 locale,\n overrideAccess,\n path,\n populate,\n populationPromises,\n req,\n schemaPath,\n showHiddenFields,\n triggerAccessControl,\n triggerHooks,\n } = args\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 data = subFieldDataFn({ node, req }) ?? {}\n\n if (subFields?.length) {\n afterReadTraverseFields({\n collection,\n context,\n currentDepth: currentDepth!,\n depth: depth!,\n doc: data,\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 path,\n populate,\n populationPromises: populationPromises!,\n req,\n schemaPath,\n showHiddenFields: showHiddenFields!,\n siblingDoc: data,\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 errors,\n field,\n global,\n mergeLocaleActions,\n operation,\n path,\n req,\n schemaPath,\n siblingData,\n siblingDocWithLocales,\n skipValidation,\n } = args\n let { value } = args\n\n if (finalSanitizedEditorConfig?.features?.hooks?.beforeChange?.length) {\n for (const hook of finalSanitizedEditorConfig.features.hooks.beforeChange) {\n value = await hook(args)\n }\n }\n\n if (\n !finalSanitizedEditorConfig.features.nodeHooks?.beforeChange?.size &&\n !finalSanitizedEditorConfig.features.getSubFields?.size\n ) {\n return value\n }\n\n // TO-DO: We should not use context, as it is intended for external use only\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const context: any = _context\n const nodeIDMap: {\n [key: string]: SerializedLexicalNode\n } = {}\n\n /**\n * Get the originalNodeIDMap from the beforeValidate hook, which is always run before this hook.\n */\n const originalNodeIDMap: {\n [key: string]: SerializedLexicalNode\n } = context?.internal?.richText?.[path.join('.')]?.originalNodeIDMap\n\n if (!originalNodeIDMap || !Object.keys(originalNodeIDMap).length || !value) {\n return value\n }\n\n const originalNodeWithLocalesIDMap: {\n [key: string]: SerializedLexicalNode\n } = {}\n\n recurseNodeTree({\n nodeIDMap,\n nodes: (value as SerializedEditorState)?.root?.children ?? [],\n })\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 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 data = subFieldDataFn({ node, req }) ?? {}\n const originalData = subFieldDataFn({ node: originalNodeIDMap[id], req }) ?? {}\n const originalDataWithLocales =\n subFieldDataFn({\n node: originalNodeWithLocalesIDMap[id],\n req,\n }) ?? {}\n\n if (subFields?.length) {\n await beforeChangeTraverseFields({\n id,\n collection,\n context,\n data,\n doc: originalData,\n docWithLocales: originalDataWithLocales ?? {},\n errors: errors!,\n fields: subFields,\n global,\n mergeLocaleActions: mergeLocaleActions!,\n operation: operation!,\n path,\n req,\n schemaPath,\n siblingData: data,\n siblingDoc: originalData,\n siblingDocWithLocales: originalDataWithLocales ?? {},\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 previousValue = siblingData[field.name!]\n\n recurseNodeTree({\n nodeIDMap: newOriginalNodeIDMap,\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.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 global,\n operation,\n overrideAccess,\n path,\n previousValue,\n req,\n schemaPath,\n } = args\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 data = subFieldDataFn({ node, req }) ?? {}\n const originalData = subFieldDataFn({ node: originalNodeIDMap[id], req }) ?? {}\n\n if (subFields?.length) {\n await beforeValidateTraverseFields({\n id,\n collection,\n context,\n data,\n doc: originalData,\n fields: subFields,\n global,\n operation,\n overrideAccess: overrideAccess!,\n path,\n req,\n schemaPath,\n siblingData: data,\n siblingDoc: originalData,\n })\n }\n }\n }\n\n return value\n },\n ],\n },\n i18n: featureI18n,\n outputSchema: ({\n collectionIDFieldTypes,\n config,\n field,\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 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 { type BlockFields } 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 { 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 { defaultRichTextValue } from './populateGraphQL/defaultValue.js'\n\nexport { populate } from './populateGraphQL/populate.js'\nexport type { LexicalEditorProps, LexicalRichTextAdapter } from './types.js'\nexport { createServerFeature } from './utilities/createServerFeature.js'\n\nexport type { FieldsDrawerProps } from './utilities/fieldsDrawer/Drawer.js'\n\nexport { extractPropsFromJSXPropsString } from './utilities/jsx/extractPropsFromJSXPropsString.js'\nexport {\n extractFrontmatter,\n frontmatterToObject,\n objectToFrontmatter,\n propsToJSXString,\n} from './utilities/jsx/jsx.js'\nexport { $convertFromMarkdownString } from './utilities/jsx/lexicalMarkdownCopy.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","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","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","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","LinebreakHTMLConverter","ParagraphHTMLConverter","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","defaultRichTextValue","createServerFeature","extractPropsFromJSXPropsString","extractFrontmatter","frontmatterToObject","objectToFrontmatter","propsToJSXString","$convertFromMarkdownString","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 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: '0.20.0',\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 operation,\n originalDoc,\n path,\n previousDoc,\n previousValue,\n req,\n schemaPath,\n } = args\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 path,\n previousDoc,\n previousSiblingDoc: { ...nodePreviousSiblingDoc },\n req,\n schemaPath,\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 locale,\n originalDoc,\n overrideAccess,\n path,\n populate,\n populationPromises,\n req,\n schemaPath,\n showHiddenFields,\n triggerAccessControl,\n triggerHooks,\n } = args\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 path,\n populate,\n populationPromises: populationPromises!,\n req,\n schemaPath,\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 mergeLocaleActions,\n operation,\n originalDoc,\n path,\n previousValue,\n req,\n schemaPath,\n siblingData,\n siblingDocWithLocales,\n skipValidation,\n } = args\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 path,\n req,\n schemaPath,\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 operation,\n originalDoc,\n overrideAccess,\n path,\n previousValue,\n req,\n schemaPath,\n } = args\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 path,\n req,\n schemaPath,\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 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 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 { type BlockFields } 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 { 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 { defaultRichTextValue } from './populateGraphQL/defaultValue.js'\n\nexport { populate } from './populateGraphQL/populate.js'\nexport type { LexicalEditorProps, LexicalRichTextAdapter } from './types.js'\nexport { createServerFeature } from './utilities/createServerFeature.js'\n\nexport type { FieldsDrawerProps } from './utilities/fieldsDrawer/Drawer.js'\n\nexport { extractPropsFromJSXPropsString } from './utilities/jsx/extractPropsFromJSXPropsString.js'\nexport {\n extractFrontmatter,\n frontmatterToObject,\n objectToFrontmatter,\n propsToJSXString,\n} from './utilities/jsx/jsx.js'\nexport { $convertFromMarkdownString } from './utilities/jsx/lexicalMarkdownCopy.js'\nexport { upgradeLexicalData } from './utilities/upgradeLexicalData/index.js'\n"],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@payloadcms/richtext-lexical",
3
- "version": "3.3.0",
3
+ "version": "3.4.1-canary.2a8fa30",
4
4
  "description": "The officially supported Lexical richtext adapter for Payload",
5
5
  "homepage": "https://payloadcms.com",
6
6
  "repository": {
@@ -345,8 +345,8 @@
345
345
  "react-error-boundary": "4.1.2",
346
346
  "ts-essentials": "10.0.3",
347
347
  "uuid": "10.0.0",
348
- "@payloadcms/translations": "3.3.0",
349
- "@payloadcms/ui": "3.3.0"
348
+ "@payloadcms/translations": "3.4.1-canary.2a8fa30",
349
+ "@payloadcms/ui": "3.4.1-canary.2a8fa30"
350
350
  },
351
351
  "devDependencies": {
352
352
  "@babel/cli": "7.25.9",
@@ -367,7 +367,7 @@
367
367
  "eslint-plugin-react-compiler": "19.0.0-beta-df7b47d-20241124",
368
368
  "swc-plugin-transform-remove-imports": "2.0.0",
369
369
  "@payloadcms/eslint-config": "3.0.0",
370
- "payload": "3.3.0"
370
+ "payload": "3.4.1-canary.2a8fa30"
371
371
  },
372
372
  "peerDependencies": {
373
373
  "@faceless-ui/modal": "3.0.0-beta.2",
@@ -384,8 +384,8 @@
384
384
  "lexical": "0.20.0",
385
385
  "react": "^19.0.0 || ^19.0.0-rc-65a56d0e-20241020",
386
386
  "react-dom": "^19.0.0 || ^19.0.0-rc-65a56d0e-20241020",
387
- "@payloadcms/next": "3.3.0",
388
- "payload": "3.3.0"
387
+ "@payloadcms/next": "3.4.1-canary.2a8fa30",
388
+ "payload": "3.4.1-canary.2a8fa30"
389
389
  },
390
390
  "engines": {
391
391
  "node": "^18.20.2 || >=20.9.0"