@payloadcms/richtext-lexical 3.0.0-beta.65 → 3.0.0-beta.66

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 (103) hide show
  1. package/dist/exports/client/Field-6VQ73D3D.js +2 -0
  2. package/dist/exports/client/Field-6VQ73D3D.js.map +7 -0
  3. package/dist/exports/client/RelationshipComponent-FFJCVTWM.js +2 -0
  4. package/dist/exports/client/RelationshipComponent-FFJCVTWM.js.map +7 -0
  5. package/dist/exports/client/bundled.css +1 -1
  6. package/dist/exports/client/chunk-EBB2CEB6.js +2 -0
  7. package/dist/exports/client/chunk-EBB2CEB6.js.map +7 -0
  8. package/dist/exports/client/{chunk-LGMNC5KQ.js → chunk-HO42U3IJ.js} +2 -2
  9. package/dist/exports/client/chunk-JELGBZLY.js +2 -0
  10. package/dist/exports/client/chunk-JELGBZLY.js.map +7 -0
  11. package/dist/exports/client/component-TYPMHBL7.js +2 -0
  12. package/dist/exports/client/component-TYPMHBL7.js.map +7 -0
  13. package/dist/exports/client/componentInline-FQNXWTOE.js +2 -0
  14. package/dist/exports/client/componentInline-FQNXWTOE.js.map +7 -0
  15. package/dist/exports/client/index.js +7 -7
  16. package/dist/exports/client/index.js.map +4 -4
  17. package/dist/features/blocks/component/BlockContent.d.ts +3 -2
  18. package/dist/features/blocks/component/BlockContent.d.ts.map +1 -1
  19. package/dist/features/blocks/component/BlockContent.js +5 -2
  20. package/dist/features/blocks/component/BlockContent.js.map +1 -1
  21. package/dist/features/blocks/component/index.d.ts +0 -4
  22. package/dist/features/blocks/component/index.d.ts.map +1 -1
  23. package/dist/features/blocks/component/index.js +6 -2
  24. package/dist/features/blocks/component/index.js.map +1 -1
  25. package/dist/features/blocks/componentInline/index.d.ts +10 -0
  26. package/dist/features/blocks/componentInline/index.d.ts.map +1 -0
  27. package/dist/features/blocks/componentInline/index.js +133 -0
  28. package/dist/features/blocks/componentInline/index.js.map +1 -0
  29. package/dist/features/blocks/feature.client.d.ts +6 -1
  30. package/dist/features/blocks/feature.client.d.ts.map +1 -1
  31. package/dist/features/blocks/feature.client.js +70 -8
  32. package/dist/features/blocks/feature.client.js.map +1 -1
  33. package/dist/features/blocks/feature.server.d.ts +2 -1
  34. package/dist/features/blocks/feature.server.d.ts.map +1 -1
  35. package/dist/features/blocks/feature.server.js +99 -34
  36. package/dist/features/blocks/feature.server.js.map +1 -1
  37. package/dist/features/blocks/graphQLPopulationPromise.d.ts +3 -2
  38. package/dist/features/blocks/graphQLPopulationPromise.d.ts.map +1 -1
  39. package/dist/features/blocks/graphQLPopulationPromise.js +2 -2
  40. package/dist/features/blocks/graphQLPopulationPromise.js.map +1 -1
  41. package/dist/features/blocks/i18n.d.ts.map +1 -1
  42. package/dist/features/blocks/i18n.js +192 -0
  43. package/dist/features/blocks/i18n.js.map +1 -1
  44. package/dist/features/blocks/nodes/BlocksNode.d.ts.map +1 -1
  45. package/dist/features/blocks/nodes/BlocksNode.js +0 -1
  46. package/dist/features/blocks/nodes/BlocksNode.js.map +1 -1
  47. package/dist/features/blocks/nodes/InlineBlocksNode.d.ts +39 -0
  48. package/dist/features/blocks/nodes/InlineBlocksNode.d.ts.map +1 -0
  49. package/dist/features/blocks/nodes/InlineBlocksNode.js +93 -0
  50. package/dist/features/blocks/nodes/InlineBlocksNode.js.map +1 -0
  51. package/dist/features/blocks/plugin/commands.d.ts +5 -0
  52. package/dist/features/blocks/plugin/commands.d.ts.map +1 -1
  53. package/dist/features/blocks/plugin/commands.js +2 -0
  54. package/dist/features/blocks/plugin/commands.js.map +1 -1
  55. package/dist/features/blocks/plugin/index.d.ts.map +1 -1
  56. package/dist/features/blocks/plugin/index.js +76 -7
  57. package/dist/features/blocks/plugin/index.js.map +1 -1
  58. package/dist/features/blocks/validate.d.ts +3 -2
  59. package/dist/features/blocks/validate.d.ts.map +1 -1
  60. package/dist/features/blocks/validate.js +2 -2
  61. package/dist/features/blocks/validate.js.map +1 -1
  62. package/dist/features/relationship/nodes/components/RelationshipComponent.d.ts +0 -1
  63. package/dist/features/relationship/nodes/components/RelationshipComponent.d.ts.map +1 -1
  64. package/dist/features/relationship/nodes/components/RelationshipComponent.js +2 -3
  65. package/dist/features/relationship/nodes/components/RelationshipComponent.js.map +1 -1
  66. package/dist/field/index.js +8 -8
  67. package/dist/index.d.ts.map +1 -1
  68. package/dist/index.js.map +1 -1
  69. package/dist/lexical/LexicalProvider.js +2 -2
  70. package/dist/lexical/LexicalProvider.js.map +1 -1
  71. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.d.ts +4 -4
  72. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.d.ts.map +1 -1
  73. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.js.map +1 -1
  74. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.d.ts +0 -1
  75. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.d.ts.map +1 -1
  76. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.js +1 -20
  77. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.js.map +1 -1
  78. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/types.d.ts +2 -2
  79. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/types.d.ts.map +1 -1
  80. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/types.js.map +1 -1
  81. package/dist/lexical/plugins/SlashMenu/index.d.ts.map +1 -1
  82. package/dist/lexical/plugins/SlashMenu/index.js +43 -41
  83. package/dist/lexical/plugins/SlashMenu/index.js.map +1 -1
  84. package/dist/lexical/plugins/handles/DraggableBlockPlugin/index.js +1 -1
  85. package/dist/lexical/plugins/handles/DraggableBlockPlugin/index.js.map +1 -1
  86. package/dist/lexical/ui/icons/InlineBlocks/index.d.ts +3 -0
  87. package/dist/lexical/ui/icons/InlineBlocks/index.d.ts.map +1 -0
  88. package/dist/lexical/ui/icons/InlineBlocks/index.js +20 -0
  89. package/dist/lexical/ui/icons/InlineBlocks/index.js.map +1 -0
  90. package/package.json +9 -9
  91. package/dist/exports/client/Field-5KHQLTCU.js +0 -2
  92. package/dist/exports/client/Field-5KHQLTCU.js.map +0 -7
  93. package/dist/exports/client/RelationshipComponent-EJB6LBDR.js +0 -2
  94. package/dist/exports/client/RelationshipComponent-EJB6LBDR.js.map +0 -7
  95. package/dist/exports/client/chunk-SVDDFJRT.js +0 -2
  96. package/dist/exports/client/chunk-SVDDFJRT.js.map +0 -7
  97. package/dist/exports/client/component-Z5R2PHH3.js +0 -2
  98. package/dist/exports/client/component-Z5R2PHH3.js.map +0 -7
  99. package/dist/features/blocks/drawer/index.d.ts +0 -9
  100. package/dist/features/blocks/drawer/index.d.ts.map +0 -1
  101. package/dist/features/blocks/drawer/index.js +0 -78
  102. package/dist/features/blocks/drawer/index.js.map +0 -1
  103. /package/dist/exports/client/{chunk-LGMNC5KQ.js.map → chunk-HO42U3IJ.js.map} +0 -0
@@ -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.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"sourcesContent":["import type { JSONSchema4 } from 'json-schema'\nimport type {\n EditorConfig as LexicalEditorConfig,\n SerializedEditorState,\n SerializedLexicalNode,\n} from 'lexical'\n\nimport { withMergedProps } from '@payloadcms/ui/shared'\nimport { fileURLToPath } from 'node:url'\nimport path from 'path'\nimport {\n afterChangeTraverseFields,\n afterReadTraverseFields,\n beforeChangeTraverseFields,\n beforeValidateTraverseFields,\n getDependencies,\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\n// eslint-disable-next-line payload/no-imports-from-exports-dir\nimport { RichTextCell, RichTextField } from './exports/client/index.js'\nimport { i18n } from './i18n.js'\nimport { defaultEditorConfig, defaultEditorFeatures } from './lexical/config/server/default.js'\nimport { loadFeatures } from './lexical/config/server/loader.js'\nimport {\n sanitizeServerEditorConfig,\n sanitizeServerFeatures,\n} from './lexical/config/server/sanitize.js'\nimport { cloneDeep } from './lexical/utils/cloneDeep.js'\nimport { populateLexicalPopulationPromises } from './populateGraphQL/populateLexicalPopulationPromises.js'\nimport { getGenerateComponentMap } from './utilities/generateComponentMap.js'\nimport { getGenerateSchemaMap } from './utilities/generateSchemaMap.js'\nimport { recurseNodeTree } from './utilities/recurseNodeTree.js'\nimport { richTextValidateHOC } from './validate/index.js'\n\nlet defaultSanitizedServerEditorConfig: SanitizedServerEditorConfig = null\n\nconst filename = fileURLToPath(import.meta.url)\nconst dirname = path.dirname(filename)\n\nexport function lexicalEditor(props?: LexicalEditorProps): LexicalRichTextAdapterProvider {\n return async ({ config, isRoot }) => {\n if (process.env.NODE_ENV !== 'production') {\n const resolvedDependencies = await getDependencies(dirname, [\n 'lexical',\n '@lexical/headless',\n '@lexical/link',\n '@lexical/list',\n '@lexical/mark',\n '@lexical/markdown',\n '@lexical/react',\n '@lexical/rich-text',\n '@lexical/selection',\n '@lexical/utils',\n ])\n\n // Go through each resolved dependency. If any dependency has a mismatching version, throw an error\n const foundVersions: {\n [version: string]: string\n } = {}\n for (const [_pkg, { version }] of resolvedDependencies.resolved) {\n if (!Object.keys(foundVersions).includes(version)) {\n foundVersions[version] = _pkg\n }\n }\n if (Object.keys(foundVersions).length > 1) {\n const formattedVersionsWithPackageNameString = Object.entries(foundVersions)\n .map(([version, pkg]) => `${pkg}@${version}`)\n .join(', ')\n\n throw new Error(\n `Mismatching lexical dependency versions found: ${formattedVersionsWithPackageNameString}. All lexical and @lexical/* packages must have the same version. This is an error with your set-up, caused by you, not a bug in payload. Please go to your package.json and ensure all lexical and @lexical/* packages have the same version.`,\n )\n }\n }\n\n let features: FeatureProviderServer<any, any, any>[] = []\n let resolvedFeatureMap: ResolvedServerFeatureMap\n\n let finalSanitizedEditorConfig: SanitizedServerEditorConfig // For server only\n if (!props || (!props.features && !props.lexical)) {\n if (!defaultSanitizedServerEditorConfig) {\n defaultSanitizedServerEditorConfig = await sanitizeServerEditorConfig(\n defaultEditorConfig,\n config,\n )\n features = cloneDeep(defaultEditorFeatures)\n }\n\n finalSanitizedEditorConfig = cloneDeep(defaultSanitizedServerEditorConfig)\n\n resolvedFeatureMap = finalSanitizedEditorConfig.resolvedFeatureMap\n } else {\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\n features =\n props.features && typeof props.features === 'function'\n ? props.features({\n defaultFeatures: cloneDeep(defaultEditorFeatures),\n rootFeatures: rootEditorFeatures,\n })\n : (props.features as FeatureProviderServer<unknown, unknown, unknown>[])\n if (!features) {\n features = cloneDeep(defaultEditorFeatures)\n }\n\n const lexical: LexicalEditorConfig = props.lexical\n\n resolvedFeatureMap = await loadFeatures({\n config,\n isRoot,\n unSanitizedEditorConfig: {\n features,\n lexical: lexical ? lexical : defaultEditorConfig.lexical,\n },\n })\n\n finalSanitizedEditorConfig = {\n features: sanitizeServerFeatures(resolvedFeatureMap),\n lexical: lexical ? lexical : defaultEditorConfig.lexical,\n resolvedFeatureMap,\n }\n }\n\n const featureI18n = finalSanitizedEditorConfig.features.i18n\n for (const lang in i18n) {\n if (!featureI18n[lang]) {\n featureI18n[lang] = {\n lexical: {},\n }\n }\n\n featureI18n[lang].lexical.general = i18n[lang]\n }\n\n return {\n CellComponent: withMergedProps({\n Component: RichTextCell,\n toMergeIntoProps: {\n admin: props?.admin,\n lexicalEditorConfig: finalSanitizedEditorConfig.lexical,\n },\n }),\n FieldComponent: withMergedProps({\n Component: RichTextField,\n toMergeIntoProps: {\n admin: props?.admin,\n lexicalEditorConfig: finalSanitizedEditorConfig.lexical,\n },\n }),\n editorConfig: finalSanitizedEditorConfig,\n features,\n generateComponentMap: getGenerateComponentMap({\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 ({\n collection,\n context: _context,\n global,\n operation,\n path,\n req,\n schemaPath,\n value,\n }) => {\n if (\n !finalSanitizedEditorConfig.features.hooks.afterChange.size &&\n !finalSanitizedEditorConfig.features.getSubFields.size\n ) {\n return value\n }\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.hooks.afterChange\n if (afterChangeHooks?.has(node.type)) {\n for (const hook of afterChangeHooks.get(node.type)) {\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) {\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 ({\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 populationPromises,\n req,\n schemaPath,\n showHiddenFields,\n triggerAccessControl,\n triggerHooks,\n value,\n }) => {\n if (\n !finalSanitizedEditorConfig.features.hooks.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.hooks.afterRead\n if (afterReadHooks?.has(node.type)) {\n for (const hook of afterReadHooks.get(node.type)) {\n node = await hook({\n context,\n currentDepth,\n depth,\n draft,\n fallbackLocale,\n fieldPromises,\n findMany,\n flattenLocales,\n locale,\n node,\n overrideAccess,\n parentRichTextFieldPath: path,\n parentRichTextFieldSchemaPath: schemaPath,\n populationPromises,\n req,\n showHiddenFields,\n triggerAccessControl,\n 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) {\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,\n depth,\n doc: data,\n draft,\n fallbackLocale,\n fieldPromises,\n fields: subFields,\n findMany,\n flattenLocales,\n global,\n locale,\n overrideAccess,\n path,\n populationPromises,\n req,\n schemaPath,\n showHiddenFields,\n siblingDoc: data,\n triggerAccessControl,\n triggerHooks,\n })\n }\n }\n }\n\n return value\n },\n ],\n beforeChange: [\n async ({\n collection,\n context: _context,\n duplicate,\n errors,\n field,\n global,\n mergeLocaleActions,\n operation,\n path,\n req,\n schemaPath,\n siblingData,\n siblingDocWithLocales,\n skipValidation,\n value,\n }) => {\n if (\n !finalSanitizedEditorConfig.features.hooks.beforeChange.size &&\n !finalSanitizedEditorConfig.features.getSubFields.size\n ) {\n return value\n }\n\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 (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.hooks.beforeChange\n if (beforeChangeHooks?.has(node.type)) {\n for (const hook of beforeChangeHooks.get(node.type)) {\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 duplicate,\n errors,\n mergeLocaleActions,\n node,\n operation,\n originalNode: originalNodeIDMap[id],\n originalNodeWithLocales: originalNodeWithLocalesIDMap[id],\n parentRichTextFieldPath: path,\n parentRichTextFieldSchemaPath: schemaPath,\n req,\n 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) {\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 duplicate,\n errors,\n fields: subFields,\n global,\n mergeLocaleActions,\n 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 ({\n collection,\n context,\n global,\n operation,\n overrideAccess,\n path,\n previousValue,\n req,\n schemaPath,\n value,\n }) => {\n // return value if there are NO hooks\n if (\n !finalSanitizedEditorConfig.features.hooks.beforeValidate.size &&\n !finalSanitizedEditorConfig.features.hooks.afterChange.size &&\n !finalSanitizedEditorConfig.features.hooks.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 * - beforeDuplicate\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.hooks.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 = finalSanitizedEditorConfig.features.hooks.beforeValidate\n if (beforeValidateHooks?.has(node.type)) {\n for (const hook of beforeValidateHooks.get(node.type)) {\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,\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) {\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,\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/feature.server.js'\nexport { BlockquoteFeature } from './features/blockquote/feature.server.js'\nexport { BlocksFeature, type BlocksFeatureProps } from './features/blocks/feature.server.js'\nexport { type BlockFields, BlockNode } from './features/blocks/nodes/BlocksNode.js'\nexport { LinebreakHTMLConverter } from './features/converters/html/converter/converters/linebreak.js'\n\nexport { ParagraphHTMLConverter } from './features/converters/html/converter/converters/paragraph.js'\nexport { TextHTMLConverter } from './features/converters/html/converter/converters/text.js'\nexport { defaultHTMLConverters } from './features/converters/html/converter/defaultConverters.js'\n\nexport {\n convertLexicalNodesToHTML,\n convertLexicalToHTML,\n} from './features/converters/html/converter/index.js'\nexport type { HTMLConverter } from './features/converters/html/converter/types.js'\nexport {\n HTMLConverterFeature,\n type HTMLConverterFeatureProps,\n} from './features/converters/html/feature.server.js'\nexport { consolidateHTMLConverters, lexicalHTML } from './features/converters/html/field/index.js'\nexport { TestRecorderFeature } from './features/debug/testRecorder/feature.server.js'\nexport { TreeViewFeature } from './features/debug/treeView/feature.server.js'\nexport { EXPERIMENTAL_TableFeature } from './features/experimental_table/feature.server.js'\nexport { BoldFeature } from './features/format/bold/feature.server.js'\nexport { InlineCodeFeature } from './features/format/inlineCode/feature.server.js'\n\nexport { ItalicFeature } from './features/format/italic/feature.server.js'\nexport { StrikethroughFeature } from './features/format/strikethrough/feature.server.js'\nexport { SubscriptFeature } from './features/format/subscript/feature.server.js'\nexport { SuperscriptFeature } from './features/format/superscript/feature.server.js'\nexport { UnderlineFeature } from './features/format/underline/feature.server.js'\nexport { HeadingFeature, type HeadingFeatureProps } from './features/heading/feature.server.js'\nexport { HorizontalRuleFeature } from './features/horizontalRule/feature.server.js'\n\nexport { IndentFeature } from './features/indent/feature.server.js'\nexport { LinkFeature, type LinkFeatureServerProps } from './features/link/feature.server.js'\n\nexport { AutoLinkNode } from './features/link/nodes/AutoLinkNode.js'\nexport { LinkNode } from './features/link/nodes/LinkNode.js'\nexport type { LinkFields } from './features/link/nodes/types.js'\nexport { ChecklistFeature } from './features/lists/checklist/feature.server.js'\nexport { OrderedListFeature } from './features/lists/orderedList/feature.server.js'\nexport { UnorderedListFeature } from './features/lists/unorderedList/feature.server.js'\nexport { LexicalPluginToLexicalFeature } from './features/migrations/lexicalPluginToLexical/feature.server.js'\nexport { SlateBlockquoteConverter } from './features/migrations/slateToLexical/converter/converters/blockquote/index.js'\nexport { SlateHeadingConverter } from './features/migrations/slateToLexical/converter/converters/heading/index.js'\nexport { SlateIndentConverter } from './features/migrations/slateToLexical/converter/converters/indent/index.js'\nexport { SlateLinkConverter } from './features/migrations/slateToLexical/converter/converters/link/index.js'\nexport { SlateListItemConverter } from './features/migrations/slateToLexical/converter/converters/listItem/index.js'\nexport { SlateOrderedListConverter } from './features/migrations/slateToLexical/converter/converters/orderedList/index.js'\nexport { SlateRelationshipConverter } from './features/migrations/slateToLexical/converter/converters/relationship/index.js'\nexport { SlateUnknownConverter } from './features/migrations/slateToLexical/converter/converters/unknown/index.js'\nexport { SlateUnorderedListConverter } from './features/migrations/slateToLexical/converter/converters/unorderedList/index.js'\nexport { SlateUploadConverter } from './features/migrations/slateToLexical/converter/converters/upload/index.js'\nexport { defaultSlateConverters } from './features/migrations/slateToLexical/converter/defaultConverters.js'\n\nexport {\n convertSlateNodesToLexical,\n convertSlateToLexical,\n} from './features/migrations/slateToLexical/converter/index.js'\nexport type {\n SlateNode,\n SlateNodeConverter,\n} from './features/migrations/slateToLexical/converter/types.js'\nexport { SlateToLexicalFeature } from './features/migrations/slateToLexical/feature.server.js'\n\nexport { ParagraphFeature } from './features/paragraph/feature.server.js'\nexport {\n RelationshipFeature,\n type RelationshipFeatureProps,\n} from './features/relationship/feature.server.js'\nexport {\n type RelationshipData,\n RelationshipNode,\n} from './features/relationship/nodes/RelationshipNode.js'\n\nexport { FixedToolbarFeature } from './features/toolbars/fixed/feature.server.js'\nexport { InlineToolbarFeature } from './features/toolbars/inline/feature.server.js'\n\nexport type { ToolbarGroup, ToolbarGroupItem } from './features/toolbars/types.js'\nexport { createNode } from './features/typeUtilities.js' // Only useful in feature.server.ts\nexport type {\n ClientComponentProps,\n ClientFeature,\n ClientFeatureProviderMap,\n FeatureProviderClient,\n FeatureProviderProviderClient,\n PluginComponent,\n PluginComponentWithAnchor,\n ResolvedClientFeature,\n ResolvedClientFeatureMap,\n SanitizedClientFeatures,\n SanitizedPlugin,\n} from './features/typesClient.js'\n\nexport type {\n AfterChangeNodeHook,\n AfterChangeNodeHookArgs,\n AfterReadNodeHook,\n AfterReadNodeHookArgs,\n BaseNodeHookArgs,\n BeforeChangeNodeHook,\n BeforeChangeNodeHookArgs,\n BeforeValidateNodeHook,\n BeforeValidateNodeHookArgs,\n FeatureProviderProviderServer,\n FeatureProviderServer,\n NodeValidation,\n NodeWithHooks,\n PopulationPromise,\n ResolvedServerFeature,\n ResolvedServerFeatureMap,\n SanitizedServerFeatures,\n ServerFeature,\n ServerFeatureProviderMap,\n} from './features/typesServer.js'\n\nexport { UploadFeature } from './features/upload/feature.server.js'\n\nexport type { UploadFeatureProps } from './features/upload/feature.server.js'\nexport { type UploadData, UploadNode } from './features/upload/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 } 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 NON_BREAKING_SPACE,\n NodeFormat,\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 type { LexicalEditorProps, LexicalRichTextAdapter } from './types.js'\nexport { createServerFeature } from './utilities/createServerFeature.js'\nexport type { FieldsDrawerProps } from './utilities/fieldsDrawer/Drawer.js'\n\nexport { migrateSlateToLexical } from './utilities/migrateSlateToLexical/index.js'\n\nexport { upgradeLexicalData } from './utilities/upgradeLexicalData/index.js'\n"],"names":["withMergedProps","fileURLToPath","path","afterChangeTraverseFields","afterReadTraverseFields","beforeChangeTraverseFields","beforeValidateTraverseFields","getDependencies","withNullableJSONSchemaType","RichTextCell","RichTextField","i18n","defaultEditorConfig","defaultEditorFeatures","loadFeatures","sanitizeServerEditorConfig","sanitizeServerFeatures","cloneDeep","populateLexicalPopulationPromises","getGenerateComponentMap","getGenerateSchemaMap","recurseNodeTree","richTextValidateHOC","defaultSanitizedServerEditorConfig","filename","url","dirname","lexicalEditor","props","config","isRoot","process","env","NODE_ENV","resolvedDependencies","foundVersions","_pkg","version","resolved","Object","keys","includes","length","formattedVersionsWithPackageNameString","entries","map","pkg","join","Error","features","resolvedFeatureMap","finalSanitizedEditorConfig","lexical","rootEditor","editor","rootEditorFeatures","defaultFeatures","rootFeatures","unSanitizedEditorConfig","featureI18n","lang","general","CellComponent","Component","toMergeIntoProps","admin","lexicalEditorConfig","FieldComponent","editorConfig","generateComponentMap","generateSchemaMap","graphQLPopulationPromises","context","currentDepth","depth","draft","field","fieldPromises","findMany","flattenLocales","overrideAccess","populationPromises","req","showHiddenFields","siblingDoc","size","editorPopulationPromises","hooks","afterChange","collection","_context","global","operation","schemaPath","value","getSubFields","nodeIDMap","originalNodeIDMap","internal","richText","nodes","root","children","id","node","afterChangeHooks","has","type","hook","get","console","warn","originalNode","parentRichTextFieldPath","parentRichTextFieldSchemaPath","subFieldFn","subFieldDataFn","getSubFieldsData","subFields","data","originalData","doc","fields","previousDoc","previousSiblingDoc","siblingData","afterRead","fallbackLocale","locale","triggerAccessControl","triggerHooks","flattenedNodes","afterReadHooks","beforeChange","duplicate","errors","mergeLocaleActions","siblingDocWithLocales","skipValidation","originalNodeWithLocalesIDMap","name","beforeChangeHooks","originalNodeWithLocales","originalDataWithLocales","docWithLocales","newOriginalNodeIDMap","previousValue","beforeValidate","beforeValidateHooks","outputSchema","collectionIDFieldTypes","interfaceNameDefinitions","isRequired","properties","additionalProperties","items","required","direction","oneOf","enum","format","indent","modifyOutputSchema","generatedTypes","modifyOutputSchemas","currentSchema","validate","AlignFeature","BlockquoteFeature","BlocksFeature","BlockNode","LinebreakHTMLConverter","ParagraphHTMLConverter","TextHTMLConverter","defaultHTMLConverters","convertLexicalNodesToHTML","convertLexicalToHTML","HTMLConverterFeature","consolidateHTMLConverters","lexicalHTML","TestRecorderFeature","TreeViewFeature","EXPERIMENTAL_TableFeature","BoldFeature","InlineCodeFeature","ItalicFeature","StrikethroughFeature","SubscriptFeature","SuperscriptFeature","UnderlineFeature","HeadingFeature","HorizontalRuleFeature","IndentFeature","LinkFeature","AutoLinkNode","LinkNode","ChecklistFeature","OrderedListFeature","UnorderedListFeature","LexicalPluginToLexicalFeature","SlateBlockquoteConverter","SlateHeadingConverter","SlateIndentConverter","SlateLinkConverter","SlateListItemConverter","SlateOrderedListConverter","SlateRelationshipConverter","SlateUnknownConverter","SlateUnorderedListConverter","SlateUploadConverter","defaultSlateConverters","convertSlateNodesToLexical","convertSlateToLexical","SlateToLexicalFeature","ParagraphFeature","RelationshipFeature","RelationshipNode","FixedToolbarFeature","InlineToolbarFeature","createNode","UploadFeature","UploadNode","defaultEditorLexicalConfig","sortFeaturesForOptimalLoading","getEnabledNodes","DETAIL_TYPE_TO_DETAIL","DOUBLE_LINE_BREAK","ELEMENT_FORMAT_TO_TYPE","ELEMENT_TYPE_TO_FORMAT","IS_ALL_FORMATTING","LTR_REGEX","NON_BREAKING_SPACE","NodeFormat","RTL_REGEX","TEXT_MODE_TO_TYPE","TEXT_TYPE_TO_FORMAT","TEXT_TYPE_TO_MODE","sanitizeUrl","validateUrl","defaultRichTextValue","createServerFeature","migrateSlateToLexical","upgradeLexicalData"],"mappings":"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"}
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["import type { JSONSchema4 } from 'json-schema'\nimport type {\n EditorConfig as LexicalEditorConfig,\n SerializedEditorState,\n SerializedLexicalNode,\n} from 'lexical'\n\nimport { withMergedProps } from '@payloadcms/ui/shared'\nimport { fileURLToPath } from 'node:url'\nimport path from 'path'\nimport {\n afterChangeTraverseFields,\n afterReadTraverseFields,\n beforeChangeTraverseFields,\n beforeValidateTraverseFields,\n getDependencies,\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\n// eslint-disable-next-line payload/no-imports-from-exports-dir\nimport { RichTextCell, RichTextField } from './exports/client/index.js'\nimport { i18n } from './i18n.js'\nimport { defaultEditorConfig, defaultEditorFeatures } from './lexical/config/server/default.js'\nimport { loadFeatures } from './lexical/config/server/loader.js'\nimport {\n sanitizeServerEditorConfig,\n sanitizeServerFeatures,\n} from './lexical/config/server/sanitize.js'\nimport { cloneDeep } from './lexical/utils/cloneDeep.js'\nimport { populateLexicalPopulationPromises } from './populateGraphQL/populateLexicalPopulationPromises.js'\nimport { getGenerateComponentMap } from './utilities/generateComponentMap.js'\nimport { getGenerateSchemaMap } from './utilities/generateSchemaMap.js'\nimport { recurseNodeTree } from './utilities/recurseNodeTree.js'\nimport { richTextValidateHOC } from './validate/index.js'\n\nlet defaultSanitizedServerEditorConfig: SanitizedServerEditorConfig = null\n\nconst filename = fileURLToPath(import.meta.url)\nconst dirname = path.dirname(filename)\n\nexport function lexicalEditor(props?: LexicalEditorProps): LexicalRichTextAdapterProvider {\n return async ({ config, isRoot }) => {\n if (process.env.NODE_ENV !== 'production') {\n const resolvedDependencies = await getDependencies(dirname, [\n 'lexical',\n '@lexical/headless',\n '@lexical/link',\n '@lexical/list',\n '@lexical/mark',\n '@lexical/markdown',\n '@lexical/react',\n '@lexical/rich-text',\n '@lexical/selection',\n '@lexical/utils',\n ])\n\n // Go through each resolved dependency. If any dependency has a mismatching version, throw an error\n const foundVersions: {\n [version: string]: string\n } = {}\n for (const [_pkg, { version }] of resolvedDependencies.resolved) {\n if (!Object.keys(foundVersions).includes(version)) {\n foundVersions[version] = _pkg\n }\n }\n if (Object.keys(foundVersions).length > 1) {\n const formattedVersionsWithPackageNameString = Object.entries(foundVersions)\n .map(([version, pkg]) => `${pkg}@${version}`)\n .join(', ')\n\n throw new Error(\n `Mismatching lexical dependency versions found: ${formattedVersionsWithPackageNameString}. All lexical and @lexical/* packages must have the same version. This is an error with your set-up, caused by you, not a bug in payload. Please go to your package.json and ensure all lexical and @lexical/* packages have the same version.`,\n )\n }\n }\n\n let features: FeatureProviderServer<any, any, any>[] = []\n let resolvedFeatureMap: ResolvedServerFeatureMap\n\n let finalSanitizedEditorConfig: SanitizedServerEditorConfig // For server only\n if (!props || (!props.features && !props.lexical)) {\n if (!defaultSanitizedServerEditorConfig) {\n defaultSanitizedServerEditorConfig = await sanitizeServerEditorConfig(\n defaultEditorConfig,\n config,\n )\n features = cloneDeep(defaultEditorFeatures)\n }\n\n finalSanitizedEditorConfig = cloneDeep(defaultSanitizedServerEditorConfig)\n\n resolvedFeatureMap = finalSanitizedEditorConfig.resolvedFeatureMap\n } else {\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\n features =\n props.features && typeof props.features === 'function'\n ? props.features({\n defaultFeatures: cloneDeep(defaultEditorFeatures),\n rootFeatures: rootEditorFeatures,\n })\n : (props.features as FeatureProviderServer<unknown, unknown, unknown>[])\n if (!features) {\n features = cloneDeep(defaultEditorFeatures)\n }\n\n const lexical: LexicalEditorConfig = props.lexical\n\n resolvedFeatureMap = await loadFeatures({\n config,\n isRoot,\n unSanitizedEditorConfig: {\n features,\n lexical: lexical ? lexical : defaultEditorConfig.lexical,\n },\n })\n\n finalSanitizedEditorConfig = {\n features: sanitizeServerFeatures(resolvedFeatureMap),\n lexical: lexical ? lexical : defaultEditorConfig.lexical,\n resolvedFeatureMap,\n }\n }\n\n const featureI18n = finalSanitizedEditorConfig.features.i18n\n for (const lang in i18n) {\n if (!featureI18n[lang]) {\n featureI18n[lang] = {\n lexical: {},\n }\n }\n\n featureI18n[lang].lexical.general = i18n[lang]\n }\n\n return {\n CellComponent: withMergedProps({\n Component: RichTextCell,\n toMergeIntoProps: {\n admin: props?.admin,\n lexicalEditorConfig: finalSanitizedEditorConfig.lexical,\n },\n }),\n FieldComponent: withMergedProps({\n Component: RichTextField,\n toMergeIntoProps: {\n admin: props?.admin,\n lexicalEditorConfig: finalSanitizedEditorConfig.lexical,\n },\n }),\n editorConfig: finalSanitizedEditorConfig,\n features,\n generateComponentMap: getGenerateComponentMap({\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 ({\n collection,\n context: _context,\n global,\n operation,\n path,\n req,\n schemaPath,\n value,\n }) => {\n if (\n !finalSanitizedEditorConfig.features.hooks.afterChange.size &&\n !finalSanitizedEditorConfig.features.getSubFields.size\n ) {\n return value\n }\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.hooks.afterChange\n if (afterChangeHooks?.has(node.type)) {\n for (const hook of afterChangeHooks.get(node.type)) {\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) {\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 ({\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 populationPromises,\n req,\n schemaPath,\n showHiddenFields,\n triggerAccessControl,\n triggerHooks,\n value,\n }) => {\n if (\n !finalSanitizedEditorConfig.features.hooks.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.hooks.afterRead\n if (afterReadHooks?.has(node.type)) {\n for (const hook of afterReadHooks.get(node.type)) {\n node = await hook({\n context,\n currentDepth,\n depth,\n draft,\n fallbackLocale,\n fieldPromises,\n findMany,\n flattenLocales,\n locale,\n node,\n overrideAccess,\n parentRichTextFieldPath: path,\n parentRichTextFieldSchemaPath: schemaPath,\n populationPromises,\n req,\n showHiddenFields,\n triggerAccessControl,\n 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) {\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,\n depth,\n doc: data,\n draft,\n fallbackLocale,\n fieldPromises,\n fields: subFields,\n findMany,\n flattenLocales,\n global,\n locale,\n overrideAccess,\n path,\n populationPromises,\n req,\n schemaPath,\n showHiddenFields,\n siblingDoc: data,\n triggerAccessControl,\n triggerHooks,\n })\n }\n }\n }\n\n return value\n },\n ],\n beforeChange: [\n async ({\n collection,\n context: _context,\n duplicate,\n errors,\n field,\n global,\n mergeLocaleActions,\n operation,\n path,\n req,\n schemaPath,\n siblingData,\n siblingDocWithLocales,\n skipValidation,\n value,\n }) => {\n if (\n !finalSanitizedEditorConfig.features.hooks.beforeChange.size &&\n !finalSanitizedEditorConfig.features.getSubFields.size\n ) {\n return value\n }\n\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 (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.hooks.beforeChange\n if (beforeChangeHooks?.has(node.type)) {\n for (const hook of beforeChangeHooks.get(node.type)) {\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 duplicate,\n errors,\n mergeLocaleActions,\n node,\n operation,\n originalNode: originalNodeIDMap[id],\n originalNodeWithLocales: originalNodeWithLocalesIDMap[id],\n parentRichTextFieldPath: path,\n parentRichTextFieldSchemaPath: schemaPath,\n req,\n 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) {\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 duplicate,\n errors,\n fields: subFields,\n global,\n mergeLocaleActions,\n 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 ({\n collection,\n context,\n global,\n operation,\n overrideAccess,\n path,\n previousValue,\n req,\n schemaPath,\n value,\n }) => {\n // return value if there are NO hooks\n if (\n !finalSanitizedEditorConfig.features.hooks.beforeValidate.size &&\n !finalSanitizedEditorConfig.features.hooks.afterChange.size &&\n !finalSanitizedEditorConfig.features.hooks.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 * - beforeDuplicate\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.hooks.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 = finalSanitizedEditorConfig.features.hooks.beforeValidate\n if (beforeValidateHooks?.has(node.type)) {\n for (const hook of beforeValidateHooks.get(node.type)) {\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,\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) {\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,\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/feature.server.js'\nexport { BlockquoteFeature } from './features/blockquote/feature.server.js'\nexport { BlocksFeature, type BlocksFeatureProps } from './features/blocks/feature.server.js'\nexport { type BlockFields, BlockNode } from './features/blocks/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 {\n HTMLConverterFeature,\n type HTMLConverterFeatureProps,\n} from './features/converters/html/feature.server.js'\nexport { consolidateHTMLConverters, lexicalHTML } from './features/converters/html/field/index.js'\nexport { TestRecorderFeature } from './features/debug/testRecorder/feature.server.js'\nexport { TreeViewFeature } from './features/debug/treeView/feature.server.js'\nexport { EXPERIMENTAL_TableFeature } from './features/experimental_table/feature.server.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/feature.server.js'\nexport { HorizontalRuleFeature } from './features/horizontalRule/feature.server.js'\nexport { IndentFeature } from './features/indent/feature.server.js'\n\nexport { LinkFeature, type LinkFeatureServerProps } from './features/link/feature.server.js'\n\nexport { AutoLinkNode } from './features/link/nodes/AutoLinkNode.js'\nexport { LinkNode } from './features/link/nodes/LinkNode.js'\nexport type { LinkFields } from './features/link/nodes/types.js'\nexport { ChecklistFeature } from './features/lists/checklist/feature.server.js'\nexport { OrderedListFeature } from './features/lists/orderedList/feature.server.js'\nexport { UnorderedListFeature } from './features/lists/unorderedList/feature.server.js'\nexport { LexicalPluginToLexicalFeature } from './features/migrations/lexicalPluginToLexical/feature.server.js'\nexport { SlateBlockquoteConverter } from './features/migrations/slateToLexical/converter/converters/blockquote/index.js'\nexport { SlateHeadingConverter } from './features/migrations/slateToLexical/converter/converters/heading/index.js'\nexport { SlateIndentConverter } from './features/migrations/slateToLexical/converter/converters/indent/index.js'\nexport { SlateLinkConverter } from './features/migrations/slateToLexical/converter/converters/link/index.js'\nexport { SlateListItemConverter } from './features/migrations/slateToLexical/converter/converters/listItem/index.js'\nexport { SlateOrderedListConverter } from './features/migrations/slateToLexical/converter/converters/orderedList/index.js'\nexport { SlateRelationshipConverter } from './features/migrations/slateToLexical/converter/converters/relationship/index.js'\nexport { SlateUnknownConverter } from './features/migrations/slateToLexical/converter/converters/unknown/index.js'\nexport { SlateUnorderedListConverter } from './features/migrations/slateToLexical/converter/converters/unorderedList/index.js'\nexport { SlateUploadConverter } from './features/migrations/slateToLexical/converter/converters/upload/index.js'\nexport { defaultSlateConverters } from './features/migrations/slateToLexical/converter/defaultConverters.js'\n\nexport {\n convertSlateNodesToLexical,\n convertSlateToLexical,\n} from './features/migrations/slateToLexical/converter/index.js'\nexport type {\n SlateNode,\n SlateNodeConverter,\n} from './features/migrations/slateToLexical/converter/types.js'\nexport { SlateToLexicalFeature } from './features/migrations/slateToLexical/feature.server.js'\n\nexport { ParagraphFeature } from './features/paragraph/feature.server.js'\nexport {\n RelationshipFeature,\n type RelationshipFeatureProps,\n} from './features/relationship/feature.server.js'\nexport {\n type RelationshipData,\n RelationshipNode,\n} from './features/relationship/nodes/RelationshipNode.js'\n\nexport { FixedToolbarFeature } from './features/toolbars/fixed/feature.server.js'\nexport { InlineToolbarFeature } from './features/toolbars/inline/feature.server.js'\n\nexport type { ToolbarGroup, ToolbarGroupItem } from './features/toolbars/types.js'\nexport { createNode } from './features/typeUtilities.js' // Only useful in feature.server.ts\nexport type {\n ClientComponentProps,\n ClientFeature,\n ClientFeatureProviderMap,\n FeatureProviderClient,\n FeatureProviderProviderClient,\n PluginComponent,\n PluginComponentWithAnchor,\n ResolvedClientFeature,\n ResolvedClientFeatureMap,\n SanitizedClientFeatures,\n SanitizedPlugin,\n} from './features/typesClient.js'\n\nexport type {\n AfterChangeNodeHook,\n AfterChangeNodeHookArgs,\n AfterReadNodeHook,\n AfterReadNodeHookArgs,\n BaseNodeHookArgs,\n BeforeChangeNodeHook,\n BeforeChangeNodeHookArgs,\n BeforeValidateNodeHook,\n BeforeValidateNodeHookArgs,\n FeatureProviderProviderServer,\n FeatureProviderServer,\n NodeValidation,\n NodeWithHooks,\n PopulationPromise,\n ResolvedServerFeature,\n ResolvedServerFeatureMap,\n SanitizedServerFeatures,\n ServerFeature,\n ServerFeatureProviderMap,\n} from './features/typesServer.js'\n\nexport { UploadFeature } from './features/upload/feature.server.js'\n\nexport type { UploadFeatureProps } from './features/upload/feature.server.js'\nexport { type UploadData, UploadNode } from './features/upload/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 } 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 NON_BREAKING_SPACE,\n NodeFormat,\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 type { LexicalEditorProps, LexicalRichTextAdapter } from './types.js'\nexport { createServerFeature } from './utilities/createServerFeature.js'\nexport type { FieldsDrawerProps } from './utilities/fieldsDrawer/Drawer.js'\n\nexport { migrateSlateToLexical } from './utilities/migrateSlateToLexical/index.js'\n\nexport { upgradeLexicalData } from './utilities/upgradeLexicalData/index.js'\n"],"names":["withMergedProps","fileURLToPath","path","afterChangeTraverseFields","afterReadTraverseFields","beforeChangeTraverseFields","beforeValidateTraverseFields","getDependencies","withNullableJSONSchemaType","RichTextCell","RichTextField","i18n","defaultEditorConfig","defaultEditorFeatures","loadFeatures","sanitizeServerEditorConfig","sanitizeServerFeatures","cloneDeep","populateLexicalPopulationPromises","getGenerateComponentMap","getGenerateSchemaMap","recurseNodeTree","richTextValidateHOC","defaultSanitizedServerEditorConfig","filename","url","dirname","lexicalEditor","props","config","isRoot","process","env","NODE_ENV","resolvedDependencies","foundVersions","_pkg","version","resolved","Object","keys","includes","length","formattedVersionsWithPackageNameString","entries","map","pkg","join","Error","features","resolvedFeatureMap","finalSanitizedEditorConfig","lexical","rootEditor","editor","rootEditorFeatures","defaultFeatures","rootFeatures","unSanitizedEditorConfig","featureI18n","lang","general","CellComponent","Component","toMergeIntoProps","admin","lexicalEditorConfig","FieldComponent","editorConfig","generateComponentMap","generateSchemaMap","graphQLPopulationPromises","context","currentDepth","depth","draft","field","fieldPromises","findMany","flattenLocales","overrideAccess","populationPromises","req","showHiddenFields","siblingDoc","size","editorPopulationPromises","hooks","afterChange","collection","_context","global","operation","schemaPath","value","getSubFields","nodeIDMap","originalNodeIDMap","internal","richText","nodes","root","children","id","node","afterChangeHooks","has","type","hook","get","console","warn","originalNode","parentRichTextFieldPath","parentRichTextFieldSchemaPath","subFieldFn","subFieldDataFn","getSubFieldsData","subFields","data","originalData","doc","fields","previousDoc","previousSiblingDoc","siblingData","afterRead","fallbackLocale","locale","triggerAccessControl","triggerHooks","flattenedNodes","afterReadHooks","beforeChange","duplicate","errors","mergeLocaleActions","siblingDocWithLocales","skipValidation","originalNodeWithLocalesIDMap","name","beforeChangeHooks","originalNodeWithLocales","originalDataWithLocales","docWithLocales","newOriginalNodeIDMap","previousValue","beforeValidate","beforeValidateHooks","outputSchema","collectionIDFieldTypes","interfaceNameDefinitions","isRequired","properties","additionalProperties","items","required","direction","oneOf","enum","format","indent","modifyOutputSchema","generatedTypes","modifyOutputSchemas","currentSchema","validate","AlignFeature","BlockquoteFeature","BlocksFeature","BlockNode","LinebreakHTMLConverter","ParagraphHTMLConverter","TextHTMLConverter","defaultHTMLConverters","convertLexicalNodesToHTML","convertLexicalToHTML","HTMLConverterFeature","consolidateHTMLConverters","lexicalHTML","TestRecorderFeature","TreeViewFeature","EXPERIMENTAL_TableFeature","BoldFeature","InlineCodeFeature","ItalicFeature","StrikethroughFeature","SubscriptFeature","SuperscriptFeature","UnderlineFeature","HeadingFeature","HorizontalRuleFeature","IndentFeature","LinkFeature","AutoLinkNode","LinkNode","ChecklistFeature","OrderedListFeature","UnorderedListFeature","LexicalPluginToLexicalFeature","SlateBlockquoteConverter","SlateHeadingConverter","SlateIndentConverter","SlateLinkConverter","SlateListItemConverter","SlateOrderedListConverter","SlateRelationshipConverter","SlateUnknownConverter","SlateUnorderedListConverter","SlateUploadConverter","defaultSlateConverters","convertSlateNodesToLexical","convertSlateToLexical","SlateToLexicalFeature","ParagraphFeature","RelationshipFeature","RelationshipNode","FixedToolbarFeature","InlineToolbarFeature","createNode","UploadFeature","UploadNode","defaultEditorLexicalConfig","sortFeaturesForOptimalLoading","getEnabledNodes","DETAIL_TYPE_TO_DETAIL","DOUBLE_LINE_BREAK","ELEMENT_FORMAT_TO_TYPE","ELEMENT_TYPE_TO_FORMAT","IS_ALL_FORMATTING","LTR_REGEX","NON_BREAKING_SPACE","NodeFormat","RTL_REGEX","TEXT_MODE_TO_TYPE","TEXT_TYPE_TO_FORMAT","TEXT_TYPE_TO_MODE","sanitizeUrl","validateUrl","defaultRichTextValue","createServerFeature","migrateSlateToLexical","upgradeLexicalData"],"mappings":"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"}
@@ -47,10 +47,10 @@ export const LexicalProvider = (props)=>{
47
47
  throw new Error('The value passed to the Lexical editor is not an object. This is not supported. Please remove the data from the field and start again. This is the value that was passed in: ' + JSON.stringify(processedValue));
48
48
  }
49
49
  if (processedValue && Array.isArray(processedValue) && !('root' in processedValue)) {
50
- throw new Error('You have tried to pass in data from the old, Slate editor, to the new, Lexical editor. This is not supported. There is no automatic conversion from Slate to Lexical data available yet (coming soon). Please remove the data from the field and start again.');
50
+ throw new Error('You have tried to pass in data from the old Slate editor to the new Lexical editor. The data structure is different, thus you will have to migrate your data. We offer a one-line migration script which migrates all your rich text fields: https://payloadcms.com/docs/beta/lexical/migration#migration-via-migration-script-recommended');
51
51
  }
52
52
  if (processedValue && 'jsonContent' in processedValue) {
53
- throw new Error('You have tried to pass in data from payload-plugin-lexical. This is not supported. The data structure has changed in this editor, compared to the plugin, and there is no automatic conversion available yet (coming soon). Please remove the data from the field and start again.');
53
+ throw new Error('You have tried to pass in data from payload-plugin-lexical. The data structure is different, thus you will have to migrate your data. Migration guide: https://payloadcms.com/docs/beta/lexical/migration#migrating-from-payload-plugin-lexical');
54
54
  }
55
55
  return {
56
56
  editable: readOnly !== true,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/lexical/LexicalProvider.tsx"],"sourcesContent":["'use client'\nimport type { InitialConfigType } from '@lexical/react/LexicalComposer.js'\nimport type { FormFieldBase } from '@payloadcms/ui'\nimport type { EditorState, LexicalEditor, SerializedEditorState } from 'lexical'\n\nimport { LexicalComposer } from '@lexical/react/LexicalComposer.js'\nimport * as React from 'react'\nimport { useMemo } from 'react'\n\nimport type { SanitizedClientEditorConfig } from './config/types.js'\n\nimport { LexicalEditor as LexicalEditorComponent } from './LexicalEditor.js'\nimport {\n EditorConfigProvider,\n useEditorConfigContext,\n} from './config/client/EditorConfigProvider.js'\nimport { getEnabledNodes } from './nodes/index.js'\n\nexport type LexicalProviderProps = {\n editorConfig: SanitizedClientEditorConfig\n fieldProps: {\n editorConfig: SanitizedClientEditorConfig // With rendered features n stuff\n name: string\n richTextComponentMap: Map<string, React.ReactNode>\n } & FormFieldBase\n onChange: (editorState: EditorState, editor: LexicalEditor, tags: Set<string>) => void\n path: string\n readOnly: boolean\n value: SerializedEditorState\n}\n\nconst NestProviders = ({ children, providers }) => {\n if (!providers?.length) {\n return children\n }\n const Component = providers[0]\n if (providers.length > 1) {\n return (\n <Component>\n <NestProviders providers={providers.slice(1)}>{children}</NestProviders>\n </Component>\n )\n }\n return <Component>{children}</Component>\n}\n\nexport const LexicalProvider: React.FC<LexicalProviderProps> = (props) => {\n const { editorConfig, fieldProps, onChange, path, readOnly, value } = props\n\n const parentContext = useEditorConfigContext()\n\n const editorContainerRef = React.useRef<HTMLDivElement>(null)\n\n const processedValue = useMemo(() => {\n let processed = value\n if (editorConfig?.features?.hooks?.load?.length) {\n editorConfig.features.hooks.load.forEach((hook) => {\n processed = hook({ incomingEditorState: processed })\n })\n }\n return processed\n }, [editorConfig, value])\n\n // useMemo for the initialConfig that depends on readOnly and processedValue\n const initialConfig = useMemo<InitialConfigType>(() => {\n if (processedValue && typeof processedValue !== 'object') {\n throw new Error(\n 'The value passed to the Lexical editor is not an object. This is not supported. Please remove the data from the field and start again. This is the value that was passed in: ' +\n JSON.stringify(processedValue),\n )\n }\n\n if (processedValue && Array.isArray(processedValue) && !('root' in processedValue)) {\n throw new Error(\n 'You have tried to pass in data from the old, Slate editor, to the new, Lexical editor. This is not supported. There is no automatic conversion from Slate to Lexical data available yet (coming soon). Please remove the data from the field and start again.',\n )\n }\n\n if (processedValue && 'jsonContent' in processedValue) {\n throw new Error(\n 'You have tried to pass in data from payload-plugin-lexical. This is not supported. The data structure has changed in this editor, compared to the plugin, and there is no automatic conversion available yet (coming soon). Please remove the data from the field and start again.',\n )\n }\n\n return {\n editable: readOnly !== true,\n editorState: processedValue != null ? JSON.stringify(processedValue) : undefined,\n namespace: editorConfig.lexical.namespace,\n nodes: [...getEnabledNodes({ editorConfig })],\n onError: (error: Error) => {\n throw error\n },\n theme: editorConfig.lexical.theme,\n }\n }, [editorConfig, processedValue, readOnly])\n\n if (!initialConfig) {\n return <p>Loading...</p>\n }\n\n return (\n <LexicalComposer initialConfig={initialConfig} key={path}>\n <EditorConfigProvider\n editorConfig={editorConfig}\n editorContainerRef={editorContainerRef}\n fieldProps={fieldProps}\n parentContext={parentContext}\n >\n <NestProviders providers={editorConfig.features.providers}>\n <LexicalEditorComponent\n editorConfig={editorConfig}\n editorContainerRef={editorContainerRef}\n onChange={onChange}\n />\n </NestProviders>\n </EditorConfigProvider>\n </LexicalComposer>\n )\n}\n"],"names":["LexicalComposer","React","useMemo","LexicalEditor","LexicalEditorComponent","EditorConfigProvider","useEditorConfigContext","getEnabledNodes","NestProviders","children","providers","length","Component","slice","LexicalProvider","props","editorConfig","fieldProps","onChange","path","readOnly","value","parentContext","editorContainerRef","useRef","processedValue","processed","features","hooks","load","forEach","hook","incomingEditorState","initialConfig","Error","JSON","stringify","Array","isArray","editable","editorState","undefined","namespace","lexical","nodes","onError","error","theme","p"],"mappings":"AAAA;;AAKA,SAASA,eAAe,QAAQ,oCAAmC;AACnE,YAAYC,WAAW,QAAO;AAC9B,SAASC,OAAO,QAAQ,QAAO;AAI/B,SAASC,iBAAiBC,sBAAsB,QAAQ,qBAAoB;AAC5E,SACEC,oBAAoB,EACpBC,sBAAsB,QACjB,0CAAyC;AAChD,SAASC,eAAe,QAAQ,mBAAkB;AAelD,MAAMC,gBAAgB,CAAC,EAAEC,QAAQ,EAAEC,SAAS,EAAE;IAC5C,IAAI,CAACA,WAAWC,QAAQ;QACtB,OAAOF;IACT;IACA,MAAMG,YAAYF,SAAS,CAAC,EAAE;IAC9B,IAAIA,UAAUC,MAAM,GAAG,GAAG;QACxB,qBACE,KAACC;sBACC,cAAA,KAACJ;gBAAcE,WAAWA,UAAUG,KAAK,CAAC;0BAAKJ;;;IAGrD;IACA,qBAAO,KAACG;kBAAWH;;AACrB;AAEA,OAAO,MAAMK,kBAAkD,CAACC;IAC9D,MAAM,EAAEC,YAAY,EAAEC,UAAU,EAAEC,QAAQ,EAAEC,IAAI,EAAEC,QAAQ,EAAEC,KAAK,EAAE,GAAGN;IAEtE,MAAMO,gBAAgBhB;IAEtB,MAAMiB,qBAAqBtB,MAAMuB,MAAM,CAAiB;IAExD,MAAMC,iBAAiBvB,QAAQ;QAC7B,IAAIwB,YAAYL;QAChB,IAAIL,cAAcW,UAAUC,OAAOC,MAAMlB,QAAQ;YAC/CK,aAAaW,QAAQ,CAACC,KAAK,CAACC,IAAI,CAACC,OAAO,CAAC,CAACC;gBACxCL,YAAYK,KAAK;oBAAEC,qBAAqBN;gBAAU;YACpD;QACF;QACA,OAAOA;IACT,GAAG;QAACV;QAAcK;KAAM;IAExB,4EAA4E;IAC5E,MAAMY,gBAAgB/B,QAA2B;QAC/C,IAAIuB,kBAAkB,OAAOA,mBAAmB,UAAU;YACxD,MAAM,IAAIS,MACR,kLACEC,KAAKC,SAAS,CAACX;QAErB;QAEA,IAAIA,kBAAkBY,MAAMC,OAAO,CAACb,mBAAmB,CAAE,CAAA,UAAUA,cAAa,GAAI;YAClF,MAAM,IAAIS,MACR;QAEJ;QAEA,IAAIT,kBAAkB,iBAAiBA,gBAAgB;YACrD,MAAM,IAAIS,MACR;QAEJ;QAEA,OAAO;YACLK,UAAUnB,aAAa;YACvBoB,aAAaf,kBAAkB,OAAOU,KAAKC,SAAS,CAACX,kBAAkBgB;YACvEC,WAAW1B,aAAa2B,OAAO,CAACD,SAAS;YACzCE,OAAO;mBAAIrC,gBAAgB;oBAAES;gBAAa;aAAG;YAC7C6B,SAAS,CAACC;gBACR,MAAMA;YACR;YACAC,OAAO/B,aAAa2B,OAAO,CAACI,KAAK;QACnC;IACF,GAAG;QAAC/B;QAAcS;QAAgBL;KAAS;IAE3C,IAAI,CAACa,eAAe;QAClB,qBAAO,KAACe;sBAAE;;IACZ;IAEA,qBACE,KAAChD;QAAgBiC,eAAeA;kBAC9B,cAAA,KAAC5B;YACCW,cAAcA;YACdO,oBAAoBA;YACpBN,YAAYA;YACZK,eAAeA;sBAEf,cAAA,KAACd;gBAAcE,WAAWM,aAAaW,QAAQ,CAACjB,SAAS;0BACvD,cAAA,KAACN;oBACCY,cAAcA;oBACdO,oBAAoBA;oBACpBL,UAAUA;;;;OAXkCC;AAiBxD,EAAC"}
1
+ {"version":3,"sources":["../../src/lexical/LexicalProvider.tsx"],"sourcesContent":["'use client'\nimport type { InitialConfigType } from '@lexical/react/LexicalComposer.js'\nimport type { FormFieldBase } from '@payloadcms/ui'\nimport type { EditorState, LexicalEditor, SerializedEditorState } from 'lexical'\n\nimport { LexicalComposer } from '@lexical/react/LexicalComposer.js'\nimport * as React from 'react'\nimport { useMemo } from 'react'\n\nimport type { SanitizedClientEditorConfig } from './config/types.js'\n\nimport { LexicalEditor as LexicalEditorComponent } from './LexicalEditor.js'\nimport {\n EditorConfigProvider,\n useEditorConfigContext,\n} from './config/client/EditorConfigProvider.js'\nimport { getEnabledNodes } from './nodes/index.js'\n\nexport type LexicalProviderProps = {\n editorConfig: SanitizedClientEditorConfig\n fieldProps: {\n editorConfig: SanitizedClientEditorConfig // With rendered features n stuff\n name: string\n richTextComponentMap: Map<string, React.ReactNode>\n } & FormFieldBase\n onChange: (editorState: EditorState, editor: LexicalEditor, tags: Set<string>) => void\n path: string\n readOnly: boolean\n value: SerializedEditorState\n}\n\nconst NestProviders = ({ children, providers }) => {\n if (!providers?.length) {\n return children\n }\n const Component = providers[0]\n if (providers.length > 1) {\n return (\n <Component>\n <NestProviders providers={providers.slice(1)}>{children}</NestProviders>\n </Component>\n )\n }\n return <Component>{children}</Component>\n}\n\nexport const LexicalProvider: React.FC<LexicalProviderProps> = (props) => {\n const { editorConfig, fieldProps, onChange, path, readOnly, value } = props\n\n const parentContext = useEditorConfigContext()\n\n const editorContainerRef = React.useRef<HTMLDivElement>(null)\n\n const processedValue = useMemo(() => {\n let processed = value\n if (editorConfig?.features?.hooks?.load?.length) {\n editorConfig.features.hooks.load.forEach((hook) => {\n processed = hook({ incomingEditorState: processed })\n })\n }\n return processed\n }, [editorConfig, value])\n\n // useMemo for the initialConfig that depends on readOnly and processedValue\n const initialConfig = useMemo<InitialConfigType>(() => {\n if (processedValue && typeof processedValue !== 'object') {\n throw new Error(\n 'The value passed to the Lexical editor is not an object. This is not supported. Please remove the data from the field and start again. This is the value that was passed in: ' +\n JSON.stringify(processedValue),\n )\n }\n\n if (processedValue && Array.isArray(processedValue) && !('root' in processedValue)) {\n throw new Error(\n 'You have tried to pass in data from the old Slate editor to the new Lexical editor. The data structure is different, thus you will have to migrate your data. We offer a one-line migration script which migrates all your rich text fields: https://payloadcms.com/docs/beta/lexical/migration#migration-via-migration-script-recommended',\n )\n }\n\n if (processedValue && 'jsonContent' in processedValue) {\n throw new Error(\n 'You have tried to pass in data from payload-plugin-lexical. The data structure is different, thus you will have to migrate your data. Migration guide: https://payloadcms.com/docs/beta/lexical/migration#migrating-from-payload-plugin-lexical',\n )\n }\n\n return {\n editable: readOnly !== true,\n editorState: processedValue != null ? JSON.stringify(processedValue) : undefined,\n namespace: editorConfig.lexical.namespace,\n nodes: [...getEnabledNodes({ editorConfig })],\n onError: (error: Error) => {\n throw error\n },\n theme: editorConfig.lexical.theme,\n }\n }, [editorConfig, processedValue, readOnly])\n\n if (!initialConfig) {\n return <p>Loading...</p>\n }\n\n return (\n <LexicalComposer initialConfig={initialConfig} key={path}>\n <EditorConfigProvider\n editorConfig={editorConfig}\n editorContainerRef={editorContainerRef}\n fieldProps={fieldProps}\n parentContext={parentContext}\n >\n <NestProviders providers={editorConfig.features.providers}>\n <LexicalEditorComponent\n editorConfig={editorConfig}\n editorContainerRef={editorContainerRef}\n onChange={onChange}\n />\n </NestProviders>\n </EditorConfigProvider>\n </LexicalComposer>\n )\n}\n"],"names":["LexicalComposer","React","useMemo","LexicalEditor","LexicalEditorComponent","EditorConfigProvider","useEditorConfigContext","getEnabledNodes","NestProviders","children","providers","length","Component","slice","LexicalProvider","props","editorConfig","fieldProps","onChange","path","readOnly","value","parentContext","editorContainerRef","useRef","processedValue","processed","features","hooks","load","forEach","hook","incomingEditorState","initialConfig","Error","JSON","stringify","Array","isArray","editable","editorState","undefined","namespace","lexical","nodes","onError","error","theme","p"],"mappings":"AAAA;;AAKA,SAASA,eAAe,QAAQ,oCAAmC;AACnE,YAAYC,WAAW,QAAO;AAC9B,SAASC,OAAO,QAAQ,QAAO;AAI/B,SAASC,iBAAiBC,sBAAsB,QAAQ,qBAAoB;AAC5E,SACEC,oBAAoB,EACpBC,sBAAsB,QACjB,0CAAyC;AAChD,SAASC,eAAe,QAAQ,mBAAkB;AAelD,MAAMC,gBAAgB,CAAC,EAAEC,QAAQ,EAAEC,SAAS,EAAE;IAC5C,IAAI,CAACA,WAAWC,QAAQ;QACtB,OAAOF;IACT;IACA,MAAMG,YAAYF,SAAS,CAAC,EAAE;IAC9B,IAAIA,UAAUC,MAAM,GAAG,GAAG;QACxB,qBACE,KAACC;sBACC,cAAA,KAACJ;gBAAcE,WAAWA,UAAUG,KAAK,CAAC;0BAAKJ;;;IAGrD;IACA,qBAAO,KAACG;kBAAWH;;AACrB;AAEA,OAAO,MAAMK,kBAAkD,CAACC;IAC9D,MAAM,EAAEC,YAAY,EAAEC,UAAU,EAAEC,QAAQ,EAAEC,IAAI,EAAEC,QAAQ,EAAEC,KAAK,EAAE,GAAGN;IAEtE,MAAMO,gBAAgBhB;IAEtB,MAAMiB,qBAAqBtB,MAAMuB,MAAM,CAAiB;IAExD,MAAMC,iBAAiBvB,QAAQ;QAC7B,IAAIwB,YAAYL;QAChB,IAAIL,cAAcW,UAAUC,OAAOC,MAAMlB,QAAQ;YAC/CK,aAAaW,QAAQ,CAACC,KAAK,CAACC,IAAI,CAACC,OAAO,CAAC,CAACC;gBACxCL,YAAYK,KAAK;oBAAEC,qBAAqBN;gBAAU;YACpD;QACF;QACA,OAAOA;IACT,GAAG;QAACV;QAAcK;KAAM;IAExB,4EAA4E;IAC5E,MAAMY,gBAAgB/B,QAA2B;QAC/C,IAAIuB,kBAAkB,OAAOA,mBAAmB,UAAU;YACxD,MAAM,IAAIS,MACR,kLACEC,KAAKC,SAAS,CAACX;QAErB;QAEA,IAAIA,kBAAkBY,MAAMC,OAAO,CAACb,mBAAmB,CAAE,CAAA,UAAUA,cAAa,GAAI;YAClF,MAAM,IAAIS,MACR;QAEJ;QAEA,IAAIT,kBAAkB,iBAAiBA,gBAAgB;YACrD,MAAM,IAAIS,MACR;QAEJ;QAEA,OAAO;YACLK,UAAUnB,aAAa;YACvBoB,aAAaf,kBAAkB,OAAOU,KAAKC,SAAS,CAACX,kBAAkBgB;YACvEC,WAAW1B,aAAa2B,OAAO,CAACD,SAAS;YACzCE,OAAO;mBAAIrC,gBAAgB;oBAAES;gBAAa;aAAG;YAC7C6B,SAAS,CAACC;gBACR,MAAMA;YACR;YACAC,OAAO/B,aAAa2B,OAAO,CAACI,KAAK;QACnC;IACF,GAAG;QAAC/B;QAAcS;QAAgBL;KAAS;IAE3C,IAAI,CAACa,eAAe;QAClB,qBAAO,KAACe;sBAAE;;IACZ;IAEA,qBACE,KAAChD;QAAgBiC,eAAeA;kBAC9B,cAAA,KAAC5B;YACCW,cAAcA;YACdO,oBAAoBA;YACpBN,YAAYA;YACZK,eAAeA;sBAEf,cAAA,KAACd;gBAAcE,WAAWM,aAAaW,QAAQ,CAACjB,SAAS;0BACvD,cAAA,KAACN;oBACCY,cAAcA;oBACdO,oBAAoBA;oBACpBL,UAAUA;;;;OAXkCC;AAiBxD,EAAC"}
@@ -1,12 +1,12 @@
1
1
  import type { LexicalCommand, LexicalEditor, TextNode } from 'lexical';
2
- import type { JSX, MutableRefObject, ReactPortal } from 'react';
2
+ import type { JSX, ReactPortal, RefObject } from 'react';
3
3
  import type { MenuTextMatch } from '../useMenuTriggerMatch.js';
4
4
  import type { SlashMenuGroupInternal, SlashMenuItem, SlashMenuItemInternal } from './types.js';
5
5
  export type MenuResolution = {
6
6
  getRect: () => DOMRect;
7
7
  match?: MenuTextMatch;
8
8
  };
9
- export type MenuRenderFn = (anchorElementRef: MutableRefObject<HTMLElement | null>, itemProps: {
9
+ export type MenuRenderFn = (anchorElementRef: RefObject<HTMLElement | null>, itemProps: {
10
10
  groups: Array<SlashMenuGroupInternal>;
11
11
  selectItemAndCleanUp: (selectedItem: SlashMenuItem) => void;
12
12
  selectedItemKey: null | string;
@@ -19,7 +19,7 @@ export declare const SCROLL_TYPEAHEAD_OPTION_INTO_VIEW_COMMAND: LexicalCommand<{
19
19
  item: SlashMenuItemInternal;
20
20
  }>;
21
21
  export declare function LexicalMenu({ anchorElementRef, close, editor, groups, menuRenderFn, onSelectItem, resolution, shouldSplitNodeWithQuery, }: {
22
- anchorElementRef: MutableRefObject<HTMLElement>;
22
+ anchorElementRef: RefObject<HTMLElement>;
23
23
  close: () => void;
24
24
  editor: LexicalEditor;
25
25
  groups: Array<SlashMenuGroupInternal>;
@@ -28,5 +28,5 @@ export declare function LexicalMenu({ anchorElementRef, close, editor, groups, m
28
28
  resolution: MenuResolution;
29
29
  shouldSplitNodeWithQuery?: boolean;
30
30
  }): JSX.Element | null;
31
- export declare function useMenuAnchorRef(anchorElem: HTMLElement, resolution: MenuResolution | null, setResolution: (r: MenuResolution | null) => void, className?: string): MutableRefObject<HTMLElement>;
31
+ export declare function useMenuAnchorRef(anchorElem: HTMLElement, resolution: MenuResolution | null, setResolution: (r: MenuResolution | null) => void, className?: string): RefObject<HTMLElement>;
32
32
  //# sourceMappingURL=LexicalMenu.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"LexicalMenu.d.ts","sourceRoot":"","sources":["../../../../../src/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AACtE,OAAO,KAAK,EAAE,GAAG,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,OAAO,CAAA;AAiB/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AAC9D,OAAO,KAAK,EAAE,sBAAsB,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA;AAE9F,MAAM,MAAM,cAAc,GAAG;IAC3B,OAAO,EAAE,MAAM,OAAO,CAAA;IACtB,KAAK,CAAC,EAAE,aAAa,CAAA;CACtB,CAAA;AAID,MAAM,MAAM,YAAY,GAAG,CACzB,gBAAgB,EAAE,gBAAgB,CAAC,WAAW,GAAG,IAAI,CAAC,EACtD,SAAS,EAAE;IACT,MAAM,EAAE,KAAK,CAAC,sBAAsB,CAAC,CAAA;IACrC,oBAAoB,EAAE,CAAC,YAAY,EAAE,aAAa,KAAK,IAAI,CAAA;IAC3D,eAAe,EAAE,IAAI,GAAG,MAAM,CAAA;IAC9B,kBAAkB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;CAC9C,EACD,cAAc,EAAE,IAAI,GAAG,MAAM,KAC1B,GAAG,CAAC,OAAO,GAAG,WAAW,GAAG,IAAI,CAAA;AAyErC,wBAAgB,eAAe,CAC7B,OAAO,EAAE,WAAW,EACpB,aAAa,EAAE,OAAO,GACrB,eAAe,GAAG,WAAW,CAiB/B;AAYD,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,cAAc,GAAG,IAAI,EACjC,aAAa,EAAE,WAAW,GAAG,IAAI,EACjC,YAAY,EAAE,MAAM,IAAI,EACxB,kBAAkB,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,QA2CjD;AAED,eAAO,MAAM,yCAAyC,EAAE,cAAc,CAAC;IACrE,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,qBAAqB,CAAA;CAC5B,CAA8D,CAAA;AAE/D,wBAAgB,WAAW,CAAC,EAC1B,gBAAgB,EAChB,KAAK,EACL,MAAM,EAEN,MAAM,EACN,YAAY,EACZ,YAAY,EACZ,UAAU,EACV,wBAAgC,GACjC,EAAE;IACD,gBAAgB,EAAE,gBAAgB,CAAC,WAAW,CAAC,CAAA;IAC/C,KAAK,EAAE,MAAM,IAAI,CAAA;IACjB,MAAM,EAAE,aAAa,CAAA;IACrB,MAAM,EAAE,KAAK,CAAC,sBAAsB,CAAC,CAAA;IACrC,YAAY,EAAE,YAAY,CAAA;IAC1B,YAAY,EAAE,CACZ,IAAI,EAAE,aAAa,EACnB,uBAAuB,EAAE,QAAQ,GAAG,IAAI,EACxC,SAAS,EAAE,MAAM,IAAI,EACrB,cAAc,EAAE,MAAM,KACnB,IAAI,CAAA;IACT,UAAU,EAAE,cAAc,CAAA;IAC1B,wBAAwB,CAAC,EAAE,OAAO,CAAA;CACnC,GAAG,GAAG,CAAC,OAAO,GAAG,IAAI,CAgNrB;AAED,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,WAAW,EACvB,UAAU,EAAE,cAAc,GAAG,IAAI,EACjC,aAAa,EAAE,CAAC,CAAC,EAAE,cAAc,GAAG,IAAI,KAAK,IAAI,EACjD,SAAS,CAAC,EAAE,MAAM,GACjB,gBAAgB,CAAC,WAAW,CAAC,CA6F/B"}
1
+ {"version":3,"file":"LexicalMenu.d.ts","sourceRoot":"","sources":["../../../../../src/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AACtE,OAAO,KAAK,EAAE,GAAG,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAiBxD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AAC9D,OAAO,KAAK,EAAE,sBAAsB,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA;AAE9F,MAAM,MAAM,cAAc,GAAG;IAC3B,OAAO,EAAE,MAAM,OAAO,CAAA;IACtB,KAAK,CAAC,EAAE,aAAa,CAAA;CACtB,CAAA;AAID,MAAM,MAAM,YAAY,GAAG,CACzB,gBAAgB,EAAE,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,EAC/C,SAAS,EAAE;IACT,MAAM,EAAE,KAAK,CAAC,sBAAsB,CAAC,CAAA;IACrC,oBAAoB,EAAE,CAAC,YAAY,EAAE,aAAa,KAAK,IAAI,CAAA;IAC3D,eAAe,EAAE,IAAI,GAAG,MAAM,CAAA;IAC9B,kBAAkB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;CAC9C,EACD,cAAc,EAAE,IAAI,GAAG,MAAM,KAC1B,GAAG,CAAC,OAAO,GAAG,WAAW,GAAG,IAAI,CAAA;AAyErC,wBAAgB,eAAe,CAC7B,OAAO,EAAE,WAAW,EACpB,aAAa,EAAE,OAAO,GACrB,eAAe,GAAG,WAAW,CAiB/B;AAYD,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,cAAc,GAAG,IAAI,EACjC,aAAa,EAAE,WAAW,GAAG,IAAI,EACjC,YAAY,EAAE,MAAM,IAAI,EACxB,kBAAkB,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,QA2CjD;AAED,eAAO,MAAM,yCAAyC,EAAE,cAAc,CAAC;IACrE,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,qBAAqB,CAAA;CAC5B,CAA8D,CAAA;AAE/D,wBAAgB,WAAW,CAAC,EAC1B,gBAAgB,EAChB,KAAK,EACL,MAAM,EAEN,MAAM,EACN,YAAY,EACZ,YAAY,EACZ,UAAU,EACV,wBAAgC,GACjC,EAAE;IACD,gBAAgB,EAAE,SAAS,CAAC,WAAW,CAAC,CAAA;IACxC,KAAK,EAAE,MAAM,IAAI,CAAA;IACjB,MAAM,EAAE,aAAa,CAAA;IACrB,MAAM,EAAE,KAAK,CAAC,sBAAsB,CAAC,CAAA;IACrC,YAAY,EAAE,YAAY,CAAA;IAC1B,YAAY,EAAE,CACZ,IAAI,EAAE,aAAa,EACnB,uBAAuB,EAAE,QAAQ,GAAG,IAAI,EACxC,SAAS,EAAE,MAAM,IAAI,EACrB,cAAc,EAAE,MAAM,KACnB,IAAI,CAAA;IACT,UAAU,EAAE,cAAc,CAAA;IAC1B,wBAAwB,CAAC,EAAE,OAAO,CAAA;CACnC,GAAG,GAAG,CAAC,OAAO,GAAG,IAAI,CAgNrB;AAED,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,WAAW,EACvB,UAAU,EAAE,cAAc,GAAG,IAAI,EACjC,aAAa,EAAE,CAAC,CAAC,EAAE,cAAc,GAAG,IAAI,KAAK,IAAI,EACjD,SAAS,CAAC,EAAE,MAAM,GACjB,SAAS,CAAC,WAAW,CAAC,CA6FxB"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.tsx"],"sourcesContent":["'use client'\nimport type { LexicalCommand, LexicalEditor, TextNode } from 'lexical'\nimport type { JSX, MutableRefObject, ReactPortal } from 'react'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js'\nimport { mergeRegister } from '@lexical/utils'\nimport {\n $getSelection,\n $isRangeSelection,\n COMMAND_PRIORITY_LOW,\n KEY_ARROW_DOWN_COMMAND,\n KEY_ARROW_UP_COMMAND,\n KEY_ENTER_COMMAND,\n KEY_ESCAPE_COMMAND,\n KEY_TAB_COMMAND,\n createCommand,\n} from 'lexical'\nimport { useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState } from 'react'\n\nimport type { MenuTextMatch } from '../useMenuTriggerMatch.js'\nimport type { SlashMenuGroupInternal, SlashMenuItem, SlashMenuItemInternal } from './types.js'\n\nexport type MenuResolution = {\n getRect: () => DOMRect\n match?: MenuTextMatch\n}\n\nconst baseClass = 'slash-menu-popup'\n\nexport type MenuRenderFn = (\n anchorElementRef: MutableRefObject<HTMLElement | null>,\n itemProps: {\n groups: Array<SlashMenuGroupInternal>\n selectItemAndCleanUp: (selectedItem: SlashMenuItem) => void\n selectedItemKey: null | string\n setSelectedItemKey: (itemKey: string) => void\n },\n matchingString: null | string,\n) => JSX.Element | ReactPortal | null\n\nconst scrollIntoViewIfNeeded = (target: HTMLElement) => {\n const typeaheadContainerNode = document.getElementById('slash-menu')\n if (!typeaheadContainerNode) return\n\n const typeaheadRect = typeaheadContainerNode.getBoundingClientRect()\n\n if (typeaheadRect.top + typeaheadRect.height > window.innerHeight) {\n typeaheadContainerNode.scrollIntoView({\n block: 'center',\n })\n }\n\n if (typeaheadRect.top < 0) {\n typeaheadContainerNode.scrollIntoView({\n block: 'center',\n })\n }\n\n target.scrollIntoView({ block: 'nearest' })\n}\n\n/**\n * Walk backwards along user input and forward through entity title to try\n * and replace more of the user's text with entity.\n */\nfunction getFullMatchOffset(documentText: string, entryText: string, offset: number) {\n let triggerOffset = offset\n for (let i = triggerOffset; i <= entryText.length; i++) {\n if (documentText.substring(documentText.length - i) === entryText.substring(0, i)) {\n triggerOffset = i\n }\n }\n return triggerOffset\n}\n\n/**\n * Split Lexical TextNode and return a new TextNode only containing matched text.\n * Common use cases include: removing the node, replacing with a new node.\n */\nfunction $splitNodeContainingQuery(match: MenuTextMatch): TextNode | null {\n const selection = $getSelection()\n if (!$isRangeSelection(selection) || !selection.isCollapsed()) {\n return null\n }\n const anchor = selection.anchor\n if (anchor.type !== 'text') {\n return null\n }\n const anchorNode = anchor.getNode()\n if (!anchorNode.isSimpleText()) {\n return null\n }\n const selectionOffset = anchor.offset\n const textContent = anchorNode.getTextContent().slice(0, selectionOffset)\n const characterOffset = match.replaceableString.length\n const queryOffset = getFullMatchOffset(textContent, match.matchingString, characterOffset)\n const startOffset = selectionOffset - queryOffset\n if (startOffset < 0) {\n return null\n }\n let newNode\n if (startOffset === 0) {\n ;[newNode] = anchorNode.splitText(selectionOffset)\n } else {\n ;[, newNode] = anchorNode.splitText(startOffset, selectionOffset)\n }\n\n return newNode\n}\n\n// Got from https://stackoverflow.com/a/42543908/2013580\nexport function getScrollParent(\n element: HTMLElement,\n includeHidden: boolean,\n): HTMLBodyElement | HTMLElement {\n let style = getComputedStyle(element)\n const excludeStaticParent = style.position === 'absolute'\n const overflowRegex = includeHidden ? /(auto|scroll|hidden)/ : /(auto|scroll)/\n if (style.position === 'fixed') {\n return document.body\n }\n for (let parent: HTMLElement | null = element; (parent = parent.parentElement); ) {\n style = getComputedStyle(parent)\n if (excludeStaticParent && style.position === 'static') {\n continue\n }\n if (overflowRegex.test(style.overflow + style.overflowY + style.overflowX)) {\n return parent\n }\n }\n return document.body\n}\n\nfunction isTriggerVisibleInNearestScrollContainer(\n targetElement: HTMLElement,\n containerElement: HTMLElement,\n): boolean {\n const tRect = targetElement.getBoundingClientRect()\n const cRect = containerElement.getBoundingClientRect()\n return tRect.top > cRect.top && tRect.top < cRect.bottom\n}\n\n// Reposition the menu on scroll, window resize, and element resize.\nexport function useDynamicPositioning(\n resolution: MenuResolution | null,\n targetElement: HTMLElement | null,\n onReposition: () => void,\n onVisibilityChange?: (isInView: boolean) => void,\n) {\n const [editor] = useLexicalComposerContext()\n useEffect(() => {\n if (targetElement != null && resolution != null) {\n const rootElement = editor.getRootElement()\n const rootScrollParent =\n rootElement != null ? getScrollParent(rootElement, false) : document.body\n let ticking = false\n let previousIsInView = isTriggerVisibleInNearestScrollContainer(\n targetElement,\n rootScrollParent,\n )\n const handleScroll = function () {\n if (!ticking) {\n window.requestAnimationFrame(function () {\n onReposition()\n ticking = false\n })\n ticking = true\n }\n const isInView = isTriggerVisibleInNearestScrollContainer(targetElement, rootScrollParent)\n if (isInView !== previousIsInView) {\n previousIsInView = isInView\n if (onVisibilityChange != null) {\n onVisibilityChange(isInView)\n }\n }\n }\n const resizeObserver = new ResizeObserver(onReposition)\n window.addEventListener('resize', onReposition)\n document.addEventListener('scroll', handleScroll, {\n capture: true,\n passive: true,\n })\n resizeObserver.observe(targetElement)\n return () => {\n resizeObserver.unobserve(targetElement)\n window.removeEventListener('resize', onReposition)\n document.removeEventListener('scroll', handleScroll, true)\n }\n }\n }, [targetElement, editor, onVisibilityChange, onReposition, resolution])\n}\n\nexport const SCROLL_TYPEAHEAD_OPTION_INTO_VIEW_COMMAND: LexicalCommand<{\n index: number\n item: SlashMenuItemInternal\n}> = createCommand('SCROLL_TYPEAHEAD_OPTION_INTO_VIEW_COMMAND')\n\nexport function LexicalMenu({\n anchorElementRef,\n close,\n editor,\n // groups filtering is already handled in SlashMenu/index.tsx. Thus, groups always contains the matching items.\n groups,\n menuRenderFn,\n onSelectItem,\n resolution,\n shouldSplitNodeWithQuery = false,\n}: {\n anchorElementRef: MutableRefObject<HTMLElement>\n close: () => void\n editor: LexicalEditor\n groups: Array<SlashMenuGroupInternal>\n menuRenderFn: MenuRenderFn\n onSelectItem: (\n item: SlashMenuItem,\n textNodeContainingQuery: TextNode | null,\n closeMenu: () => void,\n matchingString: string,\n ) => void\n resolution: MenuResolution\n shouldSplitNodeWithQuery?: boolean\n}): JSX.Element | null {\n const [selectedItemKey, setSelectedItemKey] = useState<null | string>(null)\n\n const matchingString = (resolution.match && resolution.match.matchingString) || ''\n\n const updateSelectedItem = useCallback(\n (item: SlashMenuItem) => {\n const rootElem = editor.getRootElement()\n if (rootElem !== null) {\n rootElem.setAttribute('aria-activedescendant', `${baseClass}__item-${item.key}`)\n setSelectedItemKey(item.key)\n }\n },\n [editor],\n )\n\n const setSelectedItemKeyToFirstMatchingItem = useCallback(() => {\n // set selected item to the first of the matching ones\n if (groups !== null && matchingString != null) {\n // groups filtering is already handled in SlashMenu/index.tsx. Thus, groups always contains the matching items.\n const allItems = groups.flatMap((group) => group.items)\n\n if (allItems.length) {\n const firstMatchingItem = allItems[0]\n updateSelectedItem(firstMatchingItem)\n }\n }\n }, [groups, updateSelectedItem, matchingString])\n\n useEffect(() => {\n setSelectedItemKeyToFirstMatchingItem()\n }, [matchingString, setSelectedItemKeyToFirstMatchingItem])\n\n const selectItemAndCleanUp = useCallback(\n (selectedItem: SlashMenuItem) => {\n editor.update(() => {\n const textNodeContainingQuery =\n resolution.match != null && shouldSplitNodeWithQuery\n ? $splitNodeContainingQuery(resolution.match)\n : null\n\n onSelectItem(\n selectedItem,\n textNodeContainingQuery,\n close,\n resolution.match ? resolution.match.matchingString : '',\n )\n })\n },\n [editor, shouldSplitNodeWithQuery, resolution.match, onSelectItem, close],\n )\n\n useEffect(() => {\n return () => {\n const rootElem = editor.getRootElement()\n if (rootElem !== null) {\n rootElem.removeAttribute('aria-activedescendant')\n }\n }\n }, [editor])\n\n useLayoutEffect(() => {\n if (groups === null) {\n setSelectedItemKey(null)\n } else if (selectedItemKey === null) {\n setSelectedItemKeyToFirstMatchingItem()\n }\n }, [groups, selectedItemKey, updateSelectedItem, setSelectedItemKeyToFirstMatchingItem])\n\n useEffect(() => {\n return mergeRegister(\n editor.registerCommand(\n SCROLL_TYPEAHEAD_OPTION_INTO_VIEW_COMMAND,\n ({ item }) => {\n if (item.ref && item.ref.current != null) {\n scrollIntoViewIfNeeded(item.ref.current)\n return true\n }\n\n return false\n },\n COMMAND_PRIORITY_LOW,\n ),\n )\n }, [editor, updateSelectedItem])\n\n useEffect(() => {\n return mergeRegister(\n editor.registerCommand<KeyboardEvent>(\n KEY_ARROW_DOWN_COMMAND,\n (payload) => {\n const event = payload\n if (groups !== null && groups.length && selectedItemKey !== null) {\n const allItems = groups.flatMap((group) => group.items)\n const selectedIndex = allItems.findIndex((item) => item.key === selectedItemKey)\n\n const newSelectedIndex = selectedIndex !== allItems.length - 1 ? selectedIndex + 1 : 0\n\n const newSelectedItem = allItems[newSelectedIndex]\n\n updateSelectedItem(newSelectedItem)\n if (newSelectedItem.ref != null && newSelectedItem.ref.current) {\n editor.dispatchCommand(SCROLL_TYPEAHEAD_OPTION_INTO_VIEW_COMMAND, {\n index: newSelectedIndex,\n item: newSelectedItem,\n })\n }\n event.preventDefault()\n event.stopImmediatePropagation()\n }\n return true\n },\n COMMAND_PRIORITY_LOW,\n ),\n editor.registerCommand<KeyboardEvent>(\n KEY_ARROW_UP_COMMAND,\n (payload) => {\n const event = payload\n if (groups !== null && groups.length && selectedItemKey !== null) {\n const allItems = groups.flatMap((group) => group.items)\n const selectedIndex = allItems.findIndex((item) => item.key === selectedItemKey)\n\n const newSelectedIndex = selectedIndex !== 0 ? selectedIndex - 1 : allItems.length - 1\n\n const newSelectedItem = allItems[newSelectedIndex]\n\n updateSelectedItem(newSelectedItem)\n if (newSelectedItem.ref != null && newSelectedItem.ref.current) {\n scrollIntoViewIfNeeded(newSelectedItem.ref.current)\n }\n event.preventDefault()\n event.stopImmediatePropagation()\n }\n return true\n },\n COMMAND_PRIORITY_LOW,\n ),\n editor.registerCommand<KeyboardEvent>(\n KEY_ESCAPE_COMMAND,\n (payload) => {\n const event = payload\n event.preventDefault()\n event.stopImmediatePropagation()\n close()\n return true\n },\n COMMAND_PRIORITY_LOW,\n ),\n editor.registerCommand<KeyboardEvent>(\n KEY_TAB_COMMAND,\n (payload) => {\n const event = payload\n\n if (groups === null || selectedItemKey === null) {\n return false\n }\n const allItems = groups.flatMap((group) => group.items)\n const selectedItem = allItems.find((item) => item.key === selectedItemKey)\n if (!selectedItem) {\n return false\n }\n\n event.preventDefault()\n event.stopImmediatePropagation()\n selectItemAndCleanUp(selectedItem)\n return true\n },\n COMMAND_PRIORITY_LOW,\n ),\n editor.registerCommand(\n KEY_ENTER_COMMAND,\n (event: KeyboardEvent | null) => {\n if (groups === null || selectedItemKey === null) {\n return false\n }\n const allItems = groups.flatMap((group) => group.items)\n const selectedItem = allItems.find((item) => item.key === selectedItemKey)\n if (!selectedItem) {\n return false\n }\n\n if (event !== null) {\n event.preventDefault()\n event.stopImmediatePropagation()\n }\n selectItemAndCleanUp(selectedItem)\n return true\n },\n COMMAND_PRIORITY_LOW,\n ),\n )\n }, [selectItemAndCleanUp, close, editor, groups, selectedItemKey, updateSelectedItem])\n\n const listItemProps = useMemo(\n () => ({\n groups,\n selectItemAndCleanUp,\n selectedItemKey,\n setSelectedItemKey,\n }),\n [selectItemAndCleanUp, selectedItemKey, groups],\n )\n\n return menuRenderFn(\n anchorElementRef,\n listItemProps,\n resolution.match ? resolution.match.matchingString : '',\n )\n}\n\nexport function useMenuAnchorRef(\n anchorElem: HTMLElement,\n resolution: MenuResolution | null,\n setResolution: (r: MenuResolution | null) => void,\n className?: string,\n): MutableRefObject<HTMLElement> {\n const [editor] = useLexicalComposerContext()\n const anchorElementRef = useRef<HTMLElement>(document.createElement('div'))\n const positionMenu = useCallback(() => {\n const rootElement = editor.getRootElement()\n const containerDiv = anchorElementRef.current\n\n const VERTICAL_OFFSET = 32\n\n const menuEle = containerDiv.firstChild as Element\n if (rootElement !== null && resolution !== null) {\n const { height, width } = resolution.getRect()\n let { left, top } = resolution.getRect()\n\n const rawTop = top\n top -= anchorElem.getBoundingClientRect().top + window.scrollY\n left -= anchorElem.getBoundingClientRect().left + window.scrollX\n containerDiv.style.left = `${left + window.scrollX}px`\n containerDiv.style.height = `${height}px`\n containerDiv.style.width = `${width}px`\n if (menuEle !== null) {\n const menuRect = menuEle.getBoundingClientRect()\n const menuHeight = menuRect.height\n const menuWidth = menuRect.width\n\n const rootElementRect = rootElement.getBoundingClientRect()\n\n if (left + menuWidth > rootElementRect.right) {\n containerDiv.style.left = `${rootElementRect.right - menuWidth + window.scrollX}px`\n }\n\n const wouldGoOffBottomOfScreen = rawTop + menuHeight + VERTICAL_OFFSET > window.innerHeight\n //const wouldGoOffBottomOfContainer = top + menuHeight > rootElementRect.bottom\n const wouldGoOffTopOfScreen = rawTop < 0\n\n // Position slash menu above the cursor instead of below (default) if it would otherwise go off the bottom of the screen.\n if (wouldGoOffBottomOfScreen && !wouldGoOffTopOfScreen) {\n const margin = 24\n containerDiv.style.top = `${\n top + VERTICAL_OFFSET - menuHeight + window.scrollY - (height + margin)\n }px`\n } else {\n containerDiv.style.top = `${top + window.scrollY + VERTICAL_OFFSET}px`\n }\n }\n\n if (!containerDiv.isConnected) {\n if (className != null) {\n containerDiv.className = className\n }\n containerDiv.setAttribute('aria-label', 'Slash menu')\n containerDiv.setAttribute('id', 'slash-menu')\n containerDiv.setAttribute('role', 'listbox')\n containerDiv.style.display = 'block'\n containerDiv.style.position = 'absolute'\n anchorElem.append(containerDiv)\n }\n anchorElementRef.current = containerDiv\n rootElement.setAttribute('aria-controls', 'slash-menu')\n }\n }, [editor, resolution, className, anchorElem])\n\n useEffect(() => {\n const rootElement = editor.getRootElement()\n if (resolution !== null) {\n positionMenu()\n return () => {\n if (rootElement !== null) {\n rootElement.removeAttribute('aria-controls')\n }\n\n const containerDiv = anchorElementRef.current\n if (containerDiv !== null && containerDiv.isConnected) {\n containerDiv.remove()\n }\n }\n }\n }, [editor, positionMenu, resolution])\n\n const onVisibilityChange = useCallback(\n (isInView: boolean) => {\n if (resolution !== null) {\n if (!isInView) {\n setResolution(null)\n }\n }\n },\n [resolution, setResolution],\n )\n\n useDynamicPositioning(resolution, anchorElementRef.current, positionMenu, onVisibilityChange)\n\n return anchorElementRef\n}\n"],"names":["useLexicalComposerContext","mergeRegister","$getSelection","$isRangeSelection","COMMAND_PRIORITY_LOW","KEY_ARROW_DOWN_COMMAND","KEY_ARROW_UP_COMMAND","KEY_ENTER_COMMAND","KEY_ESCAPE_COMMAND","KEY_TAB_COMMAND","createCommand","useCallback","useEffect","useLayoutEffect","useMemo","useRef","useState","baseClass","scrollIntoViewIfNeeded","target","typeaheadContainerNode","document","getElementById","typeaheadRect","getBoundingClientRect","top","height","window","innerHeight","scrollIntoView","block","getFullMatchOffset","documentText","entryText","offset","triggerOffset","i","length","substring","$splitNodeContainingQuery","match","selection","isCollapsed","anchor","type","anchorNode","getNode","isSimpleText","selectionOffset","textContent","getTextContent","slice","characterOffset","replaceableString","queryOffset","matchingString","startOffset","newNode","splitText","getScrollParent","element","includeHidden","style","getComputedStyle","excludeStaticParent","position","overflowRegex","body","parent","parentElement","test","overflow","overflowY","overflowX","isTriggerVisibleInNearestScrollContainer","targetElement","containerElement","tRect","cRect","bottom","useDynamicPositioning","resolution","onReposition","onVisibilityChange","editor","rootElement","getRootElement","rootScrollParent","ticking","previousIsInView","handleScroll","requestAnimationFrame","isInView","resizeObserver","ResizeObserver","addEventListener","capture","passive","observe","unobserve","removeEventListener","SCROLL_TYPEAHEAD_OPTION_INTO_VIEW_COMMAND","LexicalMenu","anchorElementRef","close","groups","menuRenderFn","onSelectItem","shouldSplitNodeWithQuery","selectedItemKey","setSelectedItemKey","updateSelectedItem","item","rootElem","setAttribute","key","setSelectedItemKeyToFirstMatchingItem","allItems","flatMap","group","items","firstMatchingItem","selectItemAndCleanUp","selectedItem","update","textNodeContainingQuery","removeAttribute","registerCommand","ref","current","payload","event","selectedIndex","findIndex","newSelectedIndex","newSelectedItem","dispatchCommand","index","preventDefault","stopImmediatePropagation","find","listItemProps","useMenuAnchorRef","anchorElem","setResolution","className","createElement","positionMenu","containerDiv","VERTICAL_OFFSET","menuEle","firstChild","width","getRect","left","rawTop","scrollY","scrollX","menuRect","menuHeight","menuWidth","rootElementRect","right","wouldGoOffBottomOfScreen","wouldGoOffTopOfScreen","margin","isConnected","display","append","remove"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../src/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.tsx"],"sourcesContent":["'use client'\nimport type { LexicalCommand, LexicalEditor, TextNode } from 'lexical'\nimport type { JSX, ReactPortal, RefObject } from 'react'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js'\nimport { mergeRegister } from '@lexical/utils'\nimport {\n $getSelection,\n $isRangeSelection,\n COMMAND_PRIORITY_LOW,\n KEY_ARROW_DOWN_COMMAND,\n KEY_ARROW_UP_COMMAND,\n KEY_ENTER_COMMAND,\n KEY_ESCAPE_COMMAND,\n KEY_TAB_COMMAND,\n createCommand,\n} from 'lexical'\nimport { useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState } from 'react'\n\nimport type { MenuTextMatch } from '../useMenuTriggerMatch.js'\nimport type { SlashMenuGroupInternal, SlashMenuItem, SlashMenuItemInternal } from './types.js'\n\nexport type MenuResolution = {\n getRect: () => DOMRect\n match?: MenuTextMatch\n}\n\nconst baseClass = 'slash-menu-popup'\n\nexport type MenuRenderFn = (\n anchorElementRef: RefObject<HTMLElement | null>,\n itemProps: {\n groups: Array<SlashMenuGroupInternal>\n selectItemAndCleanUp: (selectedItem: SlashMenuItem) => void\n selectedItemKey: null | string\n setSelectedItemKey: (itemKey: string) => void\n },\n matchingString: null | string,\n) => JSX.Element | ReactPortal | null\n\nconst scrollIntoViewIfNeeded = (target: HTMLElement) => {\n const typeaheadContainerNode = document.getElementById('slash-menu')\n if (!typeaheadContainerNode) return\n\n const typeaheadRect = typeaheadContainerNode.getBoundingClientRect()\n\n if (typeaheadRect.top + typeaheadRect.height > window.innerHeight) {\n typeaheadContainerNode.scrollIntoView({\n block: 'center',\n })\n }\n\n if (typeaheadRect.top < 0) {\n typeaheadContainerNode.scrollIntoView({\n block: 'center',\n })\n }\n\n target.scrollIntoView({ block: 'nearest' })\n}\n\n/**\n * Walk backwards along user input and forward through entity title to try\n * and replace more of the user's text with entity.\n */\nfunction getFullMatchOffset(documentText: string, entryText: string, offset: number) {\n let triggerOffset = offset\n for (let i = triggerOffset; i <= entryText.length; i++) {\n if (documentText.substring(documentText.length - i) === entryText.substring(0, i)) {\n triggerOffset = i\n }\n }\n return triggerOffset\n}\n\n/**\n * Split Lexical TextNode and return a new TextNode only containing matched text.\n * Common use cases include: removing the node, replacing with a new node.\n */\nfunction $splitNodeContainingQuery(match: MenuTextMatch): TextNode | null {\n const selection = $getSelection()\n if (!$isRangeSelection(selection) || !selection.isCollapsed()) {\n return null\n }\n const anchor = selection.anchor\n if (anchor.type !== 'text') {\n return null\n }\n const anchorNode = anchor.getNode()\n if (!anchorNode.isSimpleText()) {\n return null\n }\n const selectionOffset = anchor.offset\n const textContent = anchorNode.getTextContent().slice(0, selectionOffset)\n const characterOffset = match.replaceableString.length\n const queryOffset = getFullMatchOffset(textContent, match.matchingString, characterOffset)\n const startOffset = selectionOffset - queryOffset\n if (startOffset < 0) {\n return null\n }\n let newNode\n if (startOffset === 0) {\n ;[newNode] = anchorNode.splitText(selectionOffset)\n } else {\n ;[, newNode] = anchorNode.splitText(startOffset, selectionOffset)\n }\n\n return newNode\n}\n\n// Got from https://stackoverflow.com/a/42543908/2013580\nexport function getScrollParent(\n element: HTMLElement,\n includeHidden: boolean,\n): HTMLBodyElement | HTMLElement {\n let style = getComputedStyle(element)\n const excludeStaticParent = style.position === 'absolute'\n const overflowRegex = includeHidden ? /(auto|scroll|hidden)/ : /(auto|scroll)/\n if (style.position === 'fixed') {\n return document.body\n }\n for (let parent: HTMLElement | null = element; (parent = parent.parentElement); ) {\n style = getComputedStyle(parent)\n if (excludeStaticParent && style.position === 'static') {\n continue\n }\n if (overflowRegex.test(style.overflow + style.overflowY + style.overflowX)) {\n return parent\n }\n }\n return document.body\n}\n\nfunction isTriggerVisibleInNearestScrollContainer(\n targetElement: HTMLElement,\n containerElement: HTMLElement,\n): boolean {\n const tRect = targetElement.getBoundingClientRect()\n const cRect = containerElement.getBoundingClientRect()\n return tRect.top > cRect.top && tRect.top < cRect.bottom\n}\n\n// Reposition the menu on scroll, window resize, and element resize.\nexport function useDynamicPositioning(\n resolution: MenuResolution | null,\n targetElement: HTMLElement | null,\n onReposition: () => void,\n onVisibilityChange?: (isInView: boolean) => void,\n) {\n const [editor] = useLexicalComposerContext()\n useEffect(() => {\n if (targetElement != null && resolution != null) {\n const rootElement = editor.getRootElement()\n const rootScrollParent =\n rootElement != null ? getScrollParent(rootElement, false) : document.body\n let ticking = false\n let previousIsInView = isTriggerVisibleInNearestScrollContainer(\n targetElement,\n rootScrollParent,\n )\n const handleScroll = function () {\n if (!ticking) {\n window.requestAnimationFrame(function () {\n onReposition()\n ticking = false\n })\n ticking = true\n }\n const isInView = isTriggerVisibleInNearestScrollContainer(targetElement, rootScrollParent)\n if (isInView !== previousIsInView) {\n previousIsInView = isInView\n if (onVisibilityChange != null) {\n onVisibilityChange(isInView)\n }\n }\n }\n const resizeObserver = new ResizeObserver(onReposition)\n window.addEventListener('resize', onReposition)\n document.addEventListener('scroll', handleScroll, {\n capture: true,\n passive: true,\n })\n resizeObserver.observe(targetElement)\n return () => {\n resizeObserver.unobserve(targetElement)\n window.removeEventListener('resize', onReposition)\n document.removeEventListener('scroll', handleScroll, true)\n }\n }\n }, [targetElement, editor, onVisibilityChange, onReposition, resolution])\n}\n\nexport const SCROLL_TYPEAHEAD_OPTION_INTO_VIEW_COMMAND: LexicalCommand<{\n index: number\n item: SlashMenuItemInternal\n}> = createCommand('SCROLL_TYPEAHEAD_OPTION_INTO_VIEW_COMMAND')\n\nexport function LexicalMenu({\n anchorElementRef,\n close,\n editor,\n // groups filtering is already handled in SlashMenu/index.tsx. Thus, groups always contains the matching items.\n groups,\n menuRenderFn,\n onSelectItem,\n resolution,\n shouldSplitNodeWithQuery = false,\n}: {\n anchorElementRef: RefObject<HTMLElement>\n close: () => void\n editor: LexicalEditor\n groups: Array<SlashMenuGroupInternal>\n menuRenderFn: MenuRenderFn\n onSelectItem: (\n item: SlashMenuItem,\n textNodeContainingQuery: TextNode | null,\n closeMenu: () => void,\n matchingString: string,\n ) => void\n resolution: MenuResolution\n shouldSplitNodeWithQuery?: boolean\n}): JSX.Element | null {\n const [selectedItemKey, setSelectedItemKey] = useState<null | string>(null)\n\n const matchingString = (resolution.match && resolution.match.matchingString) || ''\n\n const updateSelectedItem = useCallback(\n (item: SlashMenuItem) => {\n const rootElem = editor.getRootElement()\n if (rootElem !== null) {\n rootElem.setAttribute('aria-activedescendant', `${baseClass}__item-${item.key}`)\n setSelectedItemKey(item.key)\n }\n },\n [editor],\n )\n\n const setSelectedItemKeyToFirstMatchingItem = useCallback(() => {\n // set selected item to the first of the matching ones\n if (groups !== null && matchingString != null) {\n // groups filtering is already handled in SlashMenu/index.tsx. Thus, groups always contains the matching items.\n const allItems = groups.flatMap((group) => group.items)\n\n if (allItems.length) {\n const firstMatchingItem = allItems[0]\n updateSelectedItem(firstMatchingItem)\n }\n }\n }, [groups, updateSelectedItem, matchingString])\n\n useEffect(() => {\n setSelectedItemKeyToFirstMatchingItem()\n }, [matchingString, setSelectedItemKeyToFirstMatchingItem])\n\n const selectItemAndCleanUp = useCallback(\n (selectedItem: SlashMenuItem) => {\n editor.update(() => {\n const textNodeContainingQuery =\n resolution.match != null && shouldSplitNodeWithQuery\n ? $splitNodeContainingQuery(resolution.match)\n : null\n\n onSelectItem(\n selectedItem,\n textNodeContainingQuery,\n close,\n resolution.match ? resolution.match.matchingString : '',\n )\n })\n },\n [editor, shouldSplitNodeWithQuery, resolution.match, onSelectItem, close],\n )\n\n useEffect(() => {\n return () => {\n const rootElem = editor.getRootElement()\n if (rootElem !== null) {\n rootElem.removeAttribute('aria-activedescendant')\n }\n }\n }, [editor])\n\n useLayoutEffect(() => {\n if (groups === null) {\n setSelectedItemKey(null)\n } else if (selectedItemKey === null) {\n setSelectedItemKeyToFirstMatchingItem()\n }\n }, [groups, selectedItemKey, updateSelectedItem, setSelectedItemKeyToFirstMatchingItem])\n\n useEffect(() => {\n return mergeRegister(\n editor.registerCommand(\n SCROLL_TYPEAHEAD_OPTION_INTO_VIEW_COMMAND,\n ({ item }) => {\n if (item.ref && item.ref.current != null) {\n scrollIntoViewIfNeeded(item.ref.current)\n return true\n }\n\n return false\n },\n COMMAND_PRIORITY_LOW,\n ),\n )\n }, [editor, updateSelectedItem])\n\n useEffect(() => {\n return mergeRegister(\n editor.registerCommand<KeyboardEvent>(\n KEY_ARROW_DOWN_COMMAND,\n (payload) => {\n const event = payload\n if (groups !== null && groups.length && selectedItemKey !== null) {\n const allItems = groups.flatMap((group) => group.items)\n const selectedIndex = allItems.findIndex((item) => item.key === selectedItemKey)\n\n const newSelectedIndex = selectedIndex !== allItems.length - 1 ? selectedIndex + 1 : 0\n\n const newSelectedItem = allItems[newSelectedIndex]\n\n updateSelectedItem(newSelectedItem)\n if (newSelectedItem.ref != null && newSelectedItem.ref.current) {\n editor.dispatchCommand(SCROLL_TYPEAHEAD_OPTION_INTO_VIEW_COMMAND, {\n index: newSelectedIndex,\n item: newSelectedItem,\n })\n }\n event.preventDefault()\n event.stopImmediatePropagation()\n }\n return true\n },\n COMMAND_PRIORITY_LOW,\n ),\n editor.registerCommand<KeyboardEvent>(\n KEY_ARROW_UP_COMMAND,\n (payload) => {\n const event = payload\n if (groups !== null && groups.length && selectedItemKey !== null) {\n const allItems = groups.flatMap((group) => group.items)\n const selectedIndex = allItems.findIndex((item) => item.key === selectedItemKey)\n\n const newSelectedIndex = selectedIndex !== 0 ? selectedIndex - 1 : allItems.length - 1\n\n const newSelectedItem = allItems[newSelectedIndex]\n\n updateSelectedItem(newSelectedItem)\n if (newSelectedItem.ref != null && newSelectedItem.ref.current) {\n scrollIntoViewIfNeeded(newSelectedItem.ref.current)\n }\n event.preventDefault()\n event.stopImmediatePropagation()\n }\n return true\n },\n COMMAND_PRIORITY_LOW,\n ),\n editor.registerCommand<KeyboardEvent>(\n KEY_ESCAPE_COMMAND,\n (payload) => {\n const event = payload\n event.preventDefault()\n event.stopImmediatePropagation()\n close()\n return true\n },\n COMMAND_PRIORITY_LOW,\n ),\n editor.registerCommand<KeyboardEvent>(\n KEY_TAB_COMMAND,\n (payload) => {\n const event = payload\n\n if (groups === null || selectedItemKey === null) {\n return false\n }\n const allItems = groups.flatMap((group) => group.items)\n const selectedItem = allItems.find((item) => item.key === selectedItemKey)\n if (!selectedItem) {\n return false\n }\n\n event.preventDefault()\n event.stopImmediatePropagation()\n selectItemAndCleanUp(selectedItem)\n return true\n },\n COMMAND_PRIORITY_LOW,\n ),\n editor.registerCommand(\n KEY_ENTER_COMMAND,\n (event: KeyboardEvent | null) => {\n if (groups === null || selectedItemKey === null) {\n return false\n }\n const allItems = groups.flatMap((group) => group.items)\n const selectedItem = allItems.find((item) => item.key === selectedItemKey)\n if (!selectedItem) {\n return false\n }\n\n if (event !== null) {\n event.preventDefault()\n event.stopImmediatePropagation()\n }\n selectItemAndCleanUp(selectedItem)\n return true\n },\n COMMAND_PRIORITY_LOW,\n ),\n )\n }, [selectItemAndCleanUp, close, editor, groups, selectedItemKey, updateSelectedItem])\n\n const listItemProps = useMemo(\n () => ({\n groups,\n selectItemAndCleanUp,\n selectedItemKey,\n setSelectedItemKey,\n }),\n [selectItemAndCleanUp, selectedItemKey, groups],\n )\n\n return menuRenderFn(\n anchorElementRef,\n listItemProps,\n resolution.match ? resolution.match.matchingString : '',\n )\n}\n\nexport function useMenuAnchorRef(\n anchorElem: HTMLElement,\n resolution: MenuResolution | null,\n setResolution: (r: MenuResolution | null) => void,\n className?: string,\n): RefObject<HTMLElement> {\n const [editor] = useLexicalComposerContext()\n const anchorElementRef = useRef<HTMLElement>(document.createElement('div'))\n const positionMenu = useCallback(() => {\n const rootElement = editor.getRootElement()\n const containerDiv = anchorElementRef.current\n\n const VERTICAL_OFFSET = 32\n\n const menuEle = containerDiv.firstChild as Element\n if (rootElement !== null && resolution !== null) {\n const { height, width } = resolution.getRect()\n let { left, top } = resolution.getRect()\n\n const rawTop = top\n top -= anchorElem.getBoundingClientRect().top + window.scrollY\n left -= anchorElem.getBoundingClientRect().left + window.scrollX\n containerDiv.style.left = `${left + window.scrollX}px`\n containerDiv.style.height = `${height}px`\n containerDiv.style.width = `${width}px`\n if (menuEle !== null) {\n const menuRect = menuEle.getBoundingClientRect()\n const menuHeight = menuRect.height\n const menuWidth = menuRect.width\n\n const rootElementRect = rootElement.getBoundingClientRect()\n\n if (left + menuWidth > rootElementRect.right) {\n containerDiv.style.left = `${rootElementRect.right - menuWidth + window.scrollX}px`\n }\n\n const wouldGoOffBottomOfScreen = rawTop + menuHeight + VERTICAL_OFFSET > window.innerHeight\n //const wouldGoOffBottomOfContainer = top + menuHeight > rootElementRect.bottom\n const wouldGoOffTopOfScreen = rawTop < 0\n\n // Position slash menu above the cursor instead of below (default) if it would otherwise go off the bottom of the screen.\n if (wouldGoOffBottomOfScreen && !wouldGoOffTopOfScreen) {\n const margin = 24\n containerDiv.style.top = `${\n top + VERTICAL_OFFSET - menuHeight + window.scrollY - (height + margin)\n }px`\n } else {\n containerDiv.style.top = `${top + window.scrollY + VERTICAL_OFFSET}px`\n }\n }\n\n if (!containerDiv.isConnected) {\n if (className != null) {\n containerDiv.className = className\n }\n containerDiv.setAttribute('aria-label', 'Slash menu')\n containerDiv.setAttribute('id', 'slash-menu')\n containerDiv.setAttribute('role', 'listbox')\n containerDiv.style.display = 'block'\n containerDiv.style.position = 'absolute'\n anchorElem.append(containerDiv)\n }\n anchorElementRef.current = containerDiv\n rootElement.setAttribute('aria-controls', 'slash-menu')\n }\n }, [editor, resolution, className, anchorElem])\n\n useEffect(() => {\n const rootElement = editor.getRootElement()\n if (resolution !== null) {\n positionMenu()\n return () => {\n if (rootElement !== null) {\n rootElement.removeAttribute('aria-controls')\n }\n\n const containerDiv = anchorElementRef.current\n if (containerDiv !== null && containerDiv.isConnected) {\n containerDiv.remove()\n }\n }\n }\n }, [editor, positionMenu, resolution])\n\n const onVisibilityChange = useCallback(\n (isInView: boolean) => {\n if (resolution !== null) {\n if (!isInView) {\n setResolution(null)\n }\n }\n },\n [resolution, setResolution],\n )\n\n useDynamicPositioning(resolution, anchorElementRef.current, positionMenu, onVisibilityChange)\n\n return anchorElementRef\n}\n"],"names":["useLexicalComposerContext","mergeRegister","$getSelection","$isRangeSelection","COMMAND_PRIORITY_LOW","KEY_ARROW_DOWN_COMMAND","KEY_ARROW_UP_COMMAND","KEY_ENTER_COMMAND","KEY_ESCAPE_COMMAND","KEY_TAB_COMMAND","createCommand","useCallback","useEffect","useLayoutEffect","useMemo","useRef","useState","baseClass","scrollIntoViewIfNeeded","target","typeaheadContainerNode","document","getElementById","typeaheadRect","getBoundingClientRect","top","height","window","innerHeight","scrollIntoView","block","getFullMatchOffset","documentText","entryText","offset","triggerOffset","i","length","substring","$splitNodeContainingQuery","match","selection","isCollapsed","anchor","type","anchorNode","getNode","isSimpleText","selectionOffset","textContent","getTextContent","slice","characterOffset","replaceableString","queryOffset","matchingString","startOffset","newNode","splitText","getScrollParent","element","includeHidden","style","getComputedStyle","excludeStaticParent","position","overflowRegex","body","parent","parentElement","test","overflow","overflowY","overflowX","isTriggerVisibleInNearestScrollContainer","targetElement","containerElement","tRect","cRect","bottom","useDynamicPositioning","resolution","onReposition","onVisibilityChange","editor","rootElement","getRootElement","rootScrollParent","ticking","previousIsInView","handleScroll","requestAnimationFrame","isInView","resizeObserver","ResizeObserver","addEventListener","capture","passive","observe","unobserve","removeEventListener","SCROLL_TYPEAHEAD_OPTION_INTO_VIEW_COMMAND","LexicalMenu","anchorElementRef","close","groups","menuRenderFn","onSelectItem","shouldSplitNodeWithQuery","selectedItemKey","setSelectedItemKey","updateSelectedItem","item","rootElem","setAttribute","key","setSelectedItemKeyToFirstMatchingItem","allItems","flatMap","group","items","firstMatchingItem","selectItemAndCleanUp","selectedItem","update","textNodeContainingQuery","removeAttribute","registerCommand","ref","current","payload","event","selectedIndex","findIndex","newSelectedIndex","newSelectedItem","dispatchCommand","index","preventDefault","stopImmediatePropagation","find","listItemProps","useMenuAnchorRef","anchorElem","setResolution","className","createElement","positionMenu","containerDiv","VERTICAL_OFFSET","menuEle","firstChild","width","getRect","left","rawTop","scrollY","scrollX","menuRect","menuHeight","menuWidth","rootElementRect","right","wouldGoOffBottomOfScreen","wouldGoOffTopOfScreen","margin","isConnected","display","append","remove"],"mappings":"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"}
@@ -4,7 +4,6 @@ import type { MenuTextMatch, TriggerFn } from '../useMenuTriggerMatch.js';
4
4
  import type { MenuRenderFn, MenuResolution } from './LexicalMenu.js';
5
5
  import type { SlashMenuGroupInternal, SlashMenuItem } from './types.js';
6
6
  export declare const PUNCTUATION = "\\.,\\+\\*\\?\\$\\@\\|#{}\\(\\)\\^\\-\\[\\]\\\\/!%'\"~=<>_:;";
7
- export declare function getScrollParent(element: HTMLElement, includeHidden: boolean): HTMLBodyElement | HTMLElement;
8
7
  export { useDynamicPositioning } from './LexicalMenu.js';
9
8
  export type TypeaheadMenuPluginProps = {
10
9
  anchorClassName?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,cAAc,EAEd,aAAa,EAEb,QAAQ,EACT,MAAM,SAAS,CAAA;AAWhB,OAAO,EAAE,KAAK,GAAG,EAAoC,MAAM,OAAO,CAAA;AAGlE,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AACzE,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACpE,OAAO,KAAK,EAAkB,sBAAsB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAIvF,eAAO,MAAM,WAAW,iEAAiE,CAAA;AA4EzF,wBAAgB,eAAe,CAC7B,OAAO,EAAE,WAAW,EACpB,aAAa,EAAE,OAAO,GACrB,eAAe,GAAG,WAAW,CAiB/B;AAED,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAA;AAExD,MAAM,MAAM,wBAAwB,GAAG;IACrC,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,UAAU,EAAE,WAAW,CAAA;IACvB,MAAM,EAAE,KAAK,CAAC,sBAAsB,CAAC,CAAA;IACrC,YAAY,EAAE,YAAY,CAAA;IAC1B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;IACpB,MAAM,CAAC,EAAE,CAAC,UAAU,EAAE,cAAc,KAAK,IAAI,CAAA;IAC7C,aAAa,EAAE,CAAC,cAAc,EAAE,IAAI,GAAG,MAAM,KAAK,IAAI,CAAA;IACtD,YAAY,EAAE,CACZ,IAAI,EAAE,aAAa,EACnB,uBAAuB,EAAE,QAAQ,GAAG,IAAI,EACxC,SAAS,EAAE,MAAM,IAAI,EACrB,cAAc,EAAE,MAAM,KACnB,IAAI,CAAA;IACT,SAAS,EAAE,SAAS,CAAA;CACrB,CAAA;AAED,eAAO,MAAM,yBAAyB,EAAE,cAAc,CAAC;IACrD,IAAI,EAAE,aAAa,CAAA;CACpB,CAA8C,CAAA;AAE/C,wBAAgB,0BAA0B,CAAC,EACzC,eAAe,EACf,UAAU,EACV,MAAM,EACN,YAAY,EACZ,OAAO,EACP,MAAM,EACN,aAAa,EACb,YAAY,EACZ,SAAS,GACV,EAAE,wBAAwB,GAAG,GAAG,CAAC,OAAO,GAAG,IAAI,CAyH/C;AAED,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,SAAS,EAAE,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,cAAc,EAEd,aAAa,EAEb,QAAQ,EACT,MAAM,SAAS,CAAA;AAWhB,OAAO,EAAE,KAAK,GAAG,EAAoC,MAAM,OAAO,CAAA;AAGlE,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AACzE,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACpE,OAAO,KAAK,EAAE,sBAAsB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAIvE,eAAO,MAAM,WAAW,iEAAiE,CAAA;AA2EzF,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAA;AAExD,MAAM,MAAM,wBAAwB,GAAG;IACrC,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,UAAU,EAAE,WAAW,CAAA;IACvB,MAAM,EAAE,KAAK,CAAC,sBAAsB,CAAC,CAAA;IACrC,YAAY,EAAE,YAAY,CAAA;IAC1B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;IACpB,MAAM,CAAC,EAAE,CAAC,UAAU,EAAE,cAAc,KAAK,IAAI,CAAA;IAC7C,aAAa,EAAE,CAAC,cAAc,EAAE,IAAI,GAAG,MAAM,KAAK,IAAI,CAAA;IACtD,YAAY,EAAE,CACZ,IAAI,EAAE,aAAa,EACnB,uBAAuB,EAAE,QAAQ,GAAG,IAAI,EACxC,SAAS,EAAE,MAAM,IAAI,EACrB,cAAc,EAAE,MAAM,KACnB,IAAI,CAAA;IACT,SAAS,EAAE,SAAS,CAAA;CACrB,CAAA;AAED,eAAO,MAAM,yBAAyB,EAAE,cAAc,CAAC;IACrD,IAAI,EAAE,aAAa,CAAA;CACpB,CAA8C,CAAA;AAE/C,wBAAgB,0BAA0B,CAAC,EACzC,eAAe,EACf,UAAU,EACV,MAAM,EACN,YAAY,EACZ,OAAO,EACP,MAAM,EACN,aAAa,EACb,YAAY,EACZ,SAAS,GACV,EAAE,wBAAwB,GAAG,GAAG,CAAC,OAAO,GAAG,IAAI,CAyH/C;AAED,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,SAAS,EAAE,CAAA"}