@payloadcms/richtext-lexical 3.2.2-canary.380cfb0 → 3.2.2-canary.49cfe5d

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 (26) hide show
  1. package/dist/exports/client/Field-JP7H7AZE.js +2 -0
  2. package/dist/exports/client/Field-JP7H7AZE.js.map +7 -0
  3. package/dist/exports/client/{chunk-RAIJNT4Z.js → chunk-WHL7AV5U.js} +2 -2
  4. package/dist/exports/client/{chunk-RAIJNT4Z.js.map → chunk-WHL7AV5U.js.map} +3 -3
  5. package/dist/exports/client/componentInline-GXYBWVCR.js +2 -0
  6. package/dist/exports/client/index.js +11 -11
  7. package/dist/exports/client/index.js.map +4 -4
  8. package/dist/features/blocks/client/component/index.js +1 -0
  9. package/dist/features/blocks/client/component/index.js.map +1 -1
  10. package/dist/features/blocks/client/componentInline/index.js +1 -0
  11. package/dist/features/blocks/client/componentInline/index.js.map +1 -1
  12. package/dist/features/indent/client/index.d.ts.map +1 -1
  13. package/dist/features/indent/client/index.js +5 -0
  14. package/dist/features/indent/client/index.js.map +1 -1
  15. package/dist/features/indent/client/plugins/index.d.ts +3 -0
  16. package/dist/features/indent/client/plugins/index.d.ts.map +1 -0
  17. package/dist/features/indent/client/plugins/index.js +73 -0
  18. package/dist/features/indent/client/plugins/index.js.map +1 -0
  19. package/dist/lexical/LexicalEditor.d.ts.map +1 -1
  20. package/dist/lexical/LexicalEditor.js +2 -2
  21. package/dist/lexical/LexicalEditor.js.map +1 -1
  22. package/package.json +7 -7
  23. package/dist/exports/client/Field-4JYUMYYH.js +0 -2
  24. package/dist/exports/client/Field-4JYUMYYH.js.map +0 -7
  25. package/dist/exports/client/componentInline-PJ7YLXB5.js +0 -2
  26. /package/dist/exports/client/{componentInline-PJ7YLXB5.js.map → componentInline-GXYBWVCR.js.map} +0 -0
@@ -304,6 +304,7 @@ export const BlockComponent = props => {
304
304
  permissions: permissions,
305
305
  readOnly: false
306
306
  }), /*#__PURE__*/_jsx(FormSubmit, {
307
+ programmaticSubmit: true,
307
308
  children: t('fields:saveChanges')
308
309
  })]
309
310
  }) : null
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["Button","Collapsible","Drawer","EditDepthProvider","ErrorPill","Form","formatDrawerSlug","FormSubmit","Pill","RenderFields","SectionTitle","useDocumentInfo","useEditDepth","useFormSubmitted","useServerFunctions","useTranslation","abortAndIgnore","deepCopyObjectSimpleWithoutReactComponents","reduceFieldsToValues","React","useCallback","useEffect","useMemo","useRef","baseClass","useLexicalComposerContext","getTranslation","$getNodeByKey","v4","uuid","useEditorConfigContext","useLexicalDrawer","$isBlockNode","BlockContent","removeEmptyArrayValues","BlockComponent","props","formData","nodeKey","submitted","id","collectionSlug","globalSlug","fieldProps","featureClientSchemaMap","field","parentLexicalRichTextField","initialLexicalFormState","permissions","readOnly","schemaPath","uuidFromContext","onChangeAbortControllerRef","AbortController","editDepth","errorCount","setErrorCount","useState","drawerSlug","slug","depth","toggleDrawer","getDocPreferences","setDocFieldPreferences","editor","getFormState","schemaFieldsPath","blockType","initialState","setInitialState","formState","blockName","initialValue","passesCondition","valid","value","CustomLabel","setCustomLabel","customComponents","BlockLabel","CustomBlock","setCustomBlock","Block","abortController","awaitInitialState","state","data","docPermissions","fields","docPreferences","operation","renderAllFields","signal","_components","isCollapsed","setIsCollapsed","collapsed","componentMapRenderedBlockPath","clientSchemaMap","blocksField","clientBlock","blocks","i18n","t","onChange","prevFormState","submit","current","controller","newFormState","newFormStateData","setTimeout","update","node","newData","setFields","rowErrorCount","formField","Object","values","removeBlock","remove","blockDisplayName","labels","singular","onCollapsedChange","changedCollapsed","then","currentDocPreferences","currentFieldPreferences","name","collapsedArray","newCollapsed","length","includes","push","splice","indexOf","hello","EditButton","_jsx","buttonStyle","className","disabled","el","icon","onClick","e","preventDefault","stopPropagation","onMouseDown","round","size","tooltip","label","RemoveButton","admin","BlockCollapsible","children","editButton","fieldHasErrors","Label","removeButton","join","collapsibleStyle","header","_jsxs","pillStyle","path","count","withMessage","isEditable","onToggle","incomingCollapsedState","BlockDrawer","title","_Fragment","forceRender","parentIndexPath","parentPath","parentSchemaPath","beforeSubmit","onSubmit","formSchema"],"sources":["../../../../../src/features/blocks/client/component/index.tsx"],"sourcesContent":["'use client'\n\nimport {\n Button,\n Collapsible,\n Drawer,\n EditDepthProvider,\n ErrorPill,\n Form,\n formatDrawerSlug,\n FormSubmit,\n Pill,\n RenderFields,\n SectionTitle,\n useDocumentInfo,\n useEditDepth,\n useFormSubmitted,\n useServerFunctions,\n useTranslation,\n} from '@payloadcms/ui'\nimport { abortAndIgnore } from '@payloadcms/ui/shared'\nimport { deepCopyObjectSimpleWithoutReactComponents, reduceFieldsToValues } from 'payload/shared'\nimport React, { useCallback, useEffect, useMemo, useRef } from 'react'\n\nconst baseClass = 'lexical-block'\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext'\nimport { getTranslation } from '@payloadcms/translations'\nimport { $getNodeByKey } from 'lexical'\nimport { type BlocksFieldClient, type CollapsedPreferences, type FormState } from 'payload'\nimport { v4 as uuid } from 'uuid'\n\nimport type { BlockFields } from '../../server/nodes/BlocksNode.js'\n\nimport { useEditorConfigContext } from '../../../../lexical/config/client/EditorConfigProvider.js'\nimport { useLexicalDrawer } from '../../../../utilities/fieldsDrawer/useLexicalDrawer.js'\nimport { $isBlockNode } from '../nodes/BlocksNode.js'\nimport { BlockContent } from './BlockContent.js'\nimport './index.scss'\nimport { removeEmptyArrayValues } from './removeEmptyArrayValues.js'\n\ntype Props = {\n readonly children?: React.ReactNode\n readonly formData: BlockFields\n readonly nodeKey: string\n}\n\nexport const BlockComponent: React.FC<Props> = (props) => {\n const { formData, nodeKey } = props\n const submitted = useFormSubmitted()\n const { id, collectionSlug, globalSlug } = useDocumentInfo()\n const {\n fieldProps: {\n featureClientSchemaMap,\n field: parentLexicalRichTextField,\n initialLexicalFormState,\n permissions,\n readOnly,\n schemaPath,\n },\n uuid: uuidFromContext,\n } = useEditorConfigContext()\n const onChangeAbortControllerRef = useRef(new AbortController())\n const editDepth = useEditDepth()\n const [errorCount, setErrorCount] = React.useState(0)\n\n const drawerSlug = formatDrawerSlug({\n slug: `lexical-blocks-create-${uuidFromContext}-${formData.id}`,\n depth: editDepth,\n })\n const { toggleDrawer } = useLexicalDrawer(drawerSlug)\n\n // Used for saving collapsed to preferences (and gettin' it from there again)\n // Remember, these preferences are scoped to the whole document, not just this form. This\n // is important to consider for the data path used in setDocFieldPreferences\n const { getDocPreferences, setDocFieldPreferences } = useDocumentInfo()\n const [editor] = useLexicalComposerContext()\n\n const { getFormState } = useServerFunctions()\n const schemaFieldsPath = `${schemaPath}.lexical_internal_feature.blocks.lexical_blocks.${formData.blockType}.fields`\n\n const [initialState, setInitialState] = React.useState<false | FormState | undefined>(\n initialLexicalFormState?.[formData.id]?.formState\n ? {\n ...initialLexicalFormState?.[formData.id]?.formState,\n blockName: {\n initialValue: formData.blockName,\n passesCondition: true,\n valid: true,\n value: formData.blockName,\n },\n }\n : false,\n )\n\n const [CustomLabel, setCustomLabel] = React.useState<React.ReactNode | undefined>(\n // @ts-expect-error - vestiges of when tsconfig was not strict. Feel free to improve\n initialState?.['_components']?.customComponents?.BlockLabel,\n )\n\n const [CustomBlock, setCustomBlock] = React.useState<React.ReactNode | undefined>(\n // @ts-expect-error - vestiges of when tsconfig was not strict. Feel free to improve\n initialState?.['_components']?.customComponents?.Block,\n )\n\n // Initial state for newly created blocks\n useEffect(() => {\n const abortController = new AbortController()\n\n const awaitInitialState = async () => {\n /*\n * This will only run if a new block is created. For all existing blocks that are loaded when the document is loaded, or when the form is saved,\n * this is not run, as the lexical field RSC will fetch the state server-side and pass it to the client. That way, we avoid unnecessary client-side\n * requests. Though for newly created blocks, we need to fetch the state client-side, as the server doesn't know about the block yet.\n */\n const { state } = await getFormState({\n id,\n collectionSlug,\n data: formData,\n docPermissions: { fields: true },\n docPreferences: await getDocPreferences(),\n globalSlug,\n operation: 'update',\n renderAllFields: true,\n schemaPath: schemaFieldsPath,\n signal: abortController.signal,\n })\n\n if (state) {\n state.blockName = {\n initialValue: formData.blockName,\n passesCondition: true,\n valid: true,\n value: formData.blockName,\n }\n\n setInitialState(state)\n setCustomLabel(state._components?.customComponents?.BlockLabel)\n setCustomBlock(state._components?.customComponents?.Block)\n }\n }\n\n if (formData && !initialState) {\n void awaitInitialState()\n }\n\n return () => {\n abortAndIgnore(abortController)\n }\n }, [\n getFormState,\n schemaFieldsPath,\n id,\n formData,\n initialState,\n collectionSlug,\n globalSlug,\n getDocPreferences,\n ])\n\n const [isCollapsed, setIsCollapsed] = React.useState<boolean>(\n initialLexicalFormState?.[formData.id]?.collapsed ?? false,\n )\n\n const componentMapRenderedBlockPath = `${schemaPath}.lexical_internal_feature.blocks.lexical_blocks.${formData.blockType}`\n\n const clientSchemaMap = featureClientSchemaMap['blocks']\n\n const blocksField: BlocksFieldClient = clientSchemaMap[\n componentMapRenderedBlockPath\n ][0] as BlocksFieldClient\n\n const clientBlock = blocksField.blocks[0]\n\n const { i18n, t } = useTranslation<object, string>()\n\n const onChange = useCallback(\n async ({ formState: prevFormState, submit }: { formState: FormState; submit?: boolean }) => {\n abortAndIgnore(onChangeAbortControllerRef.current)\n\n const controller = new AbortController()\n onChangeAbortControllerRef.current = controller\n\n const { state: newFormState } = await getFormState({\n id,\n collectionSlug,\n docPermissions: {\n fields: true,\n },\n docPreferences: await getDocPreferences(),\n formState: prevFormState,\n globalSlug,\n operation: 'update',\n renderAllFields: submit ? true : false,\n schemaPath: schemaFieldsPath,\n signal: controller.signal,\n })\n\n if (!newFormState) {\n return prevFormState\n }\n\n newFormState.blockName = prevFormState.blockName\n\n const newFormStateData: BlockFields = reduceFieldsToValues(\n removeEmptyArrayValues({\n fields: deepCopyObjectSimpleWithoutReactComponents(newFormState),\n }),\n true,\n ) as BlockFields\n\n setTimeout(() => {\n editor.update(() => {\n const node = $getNodeByKey(nodeKey)\n if (node && $isBlockNode(node)) {\n const newData = newFormStateData\n newData.blockType = formData.blockType\n node.setFields(newData)\n }\n })\n }, 0)\n\n if (submit) {\n setCustomLabel(newFormState._components?.customComponents?.BlockLabel)\n setCustomBlock(newFormState._components?.customComponents?.Block)\n\n let rowErrorCount = 0\n for (const formField of Object.values(newFormState)) {\n if (formField?.valid === false) {\n rowErrorCount++\n }\n }\n setErrorCount(rowErrorCount)\n }\n\n return newFormState\n },\n\n [\n getFormState,\n id,\n collectionSlug,\n getDocPreferences,\n globalSlug,\n schemaFieldsPath,\n formData.blockType,\n editor,\n nodeKey,\n ],\n )\n\n useEffect(() => {\n return () => {\n abortAndIgnore(onChangeAbortControllerRef.current)\n }\n }, [])\n\n const removeBlock = useCallback(() => {\n editor.update(() => {\n $getNodeByKey(nodeKey)?.remove()\n })\n }, [editor, nodeKey])\n\n const blockDisplayName = clientBlock?.labels?.singular\n ? getTranslation(clientBlock.labels.singular, i18n)\n : clientBlock?.slug\n\n const onCollapsedChange = useCallback(\n (changedCollapsed: boolean) => {\n void getDocPreferences().then((currentDocPreferences) => {\n const currentFieldPreferences =\n currentDocPreferences?.fields?.[parentLexicalRichTextField.name]\n\n const collapsedArray = currentFieldPreferences?.collapsed\n\n const newCollapsed: CollapsedPreferences =\n collapsedArray && collapsedArray?.length ? collapsedArray : []\n\n if (changedCollapsed) {\n if (!newCollapsed.includes(formData.id)) {\n newCollapsed.push(formData.id)\n }\n } else {\n if (newCollapsed.includes(formData.id)) {\n newCollapsed.splice(newCollapsed.indexOf(formData.id), 1)\n }\n }\n\n setDocFieldPreferences(parentLexicalRichTextField.name, {\n collapsed: newCollapsed,\n hello: 'hi',\n })\n })\n },\n [getDocPreferences, parentLexicalRichTextField.name, setDocFieldPreferences, formData.id],\n )\n\n const EditButton = useMemo(\n () => () => (\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__editButton`}\n disabled={readOnly}\n el=\"button\"\n icon=\"edit\"\n onClick={(e) => {\n e.preventDefault()\n e.stopPropagation()\n toggleDrawer()\n return false\n }}\n onMouseDown={(e) => {\n // Needed to preserve lexical selection for toggleDrawer lexical selection restore.\n // I believe this is needed due to this button (usually) being inside of a collapsible.\n e.preventDefault()\n }}\n round\n size=\"small\"\n tooltip={t('lexical:blocks:inlineBlocks:edit', { label: blockDisplayName })}\n />\n ),\n [blockDisplayName, readOnly, t, toggleDrawer],\n )\n\n const RemoveButton = useMemo(\n () => () => (\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__removeButton`}\n disabled={parentLexicalRichTextField?.admin?.readOnly || false}\n icon=\"x\"\n onClick={(e) => {\n e.preventDefault()\n removeBlock()\n }}\n round\n tooltip=\"Remove Block\"\n />\n ),\n [parentLexicalRichTextField?.admin?.readOnly, removeBlock],\n )\n\n const BlockCollapsible = useMemo(\n () =>\n ({\n children,\n editButton,\n errorCount,\n fieldHasErrors,\n Label,\n removeButton,\n }: {\n children?: React.ReactNode\n editButton?: boolean\n errorCount?: number\n fieldHasErrors?: boolean\n /**\n * Override the default label with a custom label\n */\n Label?: React.ReactNode\n removeButton?: boolean\n }) => (\n <div className={baseClass + ' ' + baseClass + '-' + formData.blockType}>\n <Collapsible\n className={[\n `${baseClass}__row`,\n fieldHasErrors ? `${baseClass}__row--has-errors` : `${baseClass}__row--no-errors`,\n ].join(' ')}\n collapsibleStyle={fieldHasErrors ? 'error' : 'default'}\n header={\n <div className={`${baseClass}__block-header`}>\n {(Label ?? CustomLabel) ? (\n (Label ?? CustomLabel)\n ) : (\n <div>\n <Pill\n className={`${baseClass}__block-pill ${baseClass}__block-pill-${formData?.blockType}`}\n pillStyle=\"white\"\n >\n {blockDisplayName}\n </Pill>\n <SectionTitle\n path=\"blockName\"\n readOnly={parentLexicalRichTextField?.admin?.readOnly || false}\n />\n {fieldHasErrors && (\n <ErrorPill count={errorCount ?? 0} i18n={i18n} withMessage />\n )}\n </div>\n )}\n\n <div>\n {(CustomBlock && editButton !== false) || (!CustomBlock && editButton) ? (\n <EditButton />\n ) : null}\n {removeButton !== false && editor.isEditable() ? <RemoveButton /> : null}\n </div>\n </div>\n }\n isCollapsed={isCollapsed}\n key={0}\n onToggle={(incomingCollapsedState) => {\n onCollapsedChange(incomingCollapsedState)\n setIsCollapsed(incomingCollapsedState)\n }}\n >\n {children}\n </Collapsible>\n </div>\n ),\n [\n CustomBlock,\n CustomLabel,\n EditButton,\n RemoveButton,\n blockDisplayName,\n editor,\n formData.blockType,\n i18n,\n isCollapsed,\n onCollapsedChange,\n parentLexicalRichTextField?.admin?.readOnly,\n ],\n )\n\n const BlockDrawer = useMemo(\n () => () => (\n <EditDepthProvider>\n <Drawer\n className={''}\n slug={drawerSlug}\n title={t(`lexical:blocks:inlineBlocks:${formData?.id ? 'edit' : 'create'}`, {\n label: blockDisplayName ?? t('lexical:blocks:inlineBlocks:label'),\n })}\n >\n {initialState ? (\n <>\n <RenderFields\n fields={clientBlock.fields}\n forceRender\n parentIndexPath=\"\"\n parentPath=\"\" // See Blocks feature path for details as for why this is empty\n parentSchemaPath={schemaFieldsPath}\n permissions={permissions}\n readOnly={false}\n />\n <FormSubmit>{t('fields:saveChanges')}</FormSubmit>\n </>\n ) : null}\n </Drawer>\n </EditDepthProvider>\n ),\n [\n initialState,\n drawerSlug,\n blockDisplayName,\n t,\n clientBlock.fields,\n schemaFieldsPath,\n permissions,\n // DO NOT ADD FORMDATA HERE! Adding formData will kick you out of sub block editors while writing.\n ],\n )\n\n // Memoized Form JSX\n const Block = useMemo(() => {\n if (!initialState) {\n return null\n }\n return (\n <Form\n beforeSubmit={[\n async ({ formState }) => {\n // This is only called when form is submitted from drawer - usually only the case if the block has a custom Block component\n return await onChange({ formState, submit: true })\n },\n ]}\n fields={clientBlock.fields}\n initialState={initialState}\n onChange={[onChange]}\n onSubmit={(formState) => {\n // This is only called when form is submitted from drawer - usually only the case if the block has a custom Block component\n const newData: any = reduceFieldsToValues(formState)\n newData.blockType = formData.blockType\n editor.update(() => {\n const node = $getNodeByKey(nodeKey)\n if (node && $isBlockNode(node)) {\n node.setFields(newData)\n }\n })\n toggleDrawer()\n }}\n submitted={submitted}\n uuid={uuid()}\n >\n <BlockContent\n baseClass={baseClass}\n BlockDrawer={BlockDrawer}\n Collapsible={BlockCollapsible}\n CustomBlock={CustomBlock}\n EditButton={EditButton}\n errorCount={errorCount}\n formSchema={clientBlock.fields}\n initialState={initialState}\n nodeKey={nodeKey}\n RemoveButton={RemoveButton}\n />\n </Form>\n )\n }, [\n BlockCollapsible,\n BlockDrawer,\n CustomBlock,\n RemoveButton,\n EditButton,\n editor,\n errorCount,\n toggleDrawer,\n clientBlock.fields,\n // DO NOT ADD FORMDATA HERE! Adding formData will kick you out of sub block editors while writing.\n initialState,\n nodeKey,\n onChange,\n submitted,\n ])\n\n return Block\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["Button","Collapsible","Drawer","EditDepthProvider","ErrorPill","Form","formatDrawerSlug","FormSubmit","Pill","RenderFields","SectionTitle","useDocumentInfo","useEditDepth","useFormSubmitted","useServerFunctions","useTranslation","abortAndIgnore","deepCopyObjectSimpleWithoutReactComponents","reduceFieldsToValues","React","useCallback","useEffect","useMemo","useRef","baseClass","useLexicalComposerContext","getTranslation","$getNodeByKey","v4","uuid","useEditorConfigContext","useLexicalDrawer","$isBlockNode","BlockContent","removeEmptyArrayValues","BlockComponent","props","formData","nodeKey","submitted","id","collectionSlug","globalSlug","fieldProps","featureClientSchemaMap","field","parentLexicalRichTextField","initialLexicalFormState","permissions","readOnly","schemaPath","uuidFromContext","onChangeAbortControllerRef","AbortController","editDepth","errorCount","setErrorCount","useState","drawerSlug","slug","depth","toggleDrawer","getDocPreferences","setDocFieldPreferences","editor","getFormState","schemaFieldsPath","blockType","initialState","setInitialState","formState","blockName","initialValue","passesCondition","valid","value","CustomLabel","setCustomLabel","customComponents","BlockLabel","CustomBlock","setCustomBlock","Block","abortController","awaitInitialState","state","data","docPermissions","fields","docPreferences","operation","renderAllFields","signal","_components","isCollapsed","setIsCollapsed","collapsed","componentMapRenderedBlockPath","clientSchemaMap","blocksField","clientBlock","blocks","i18n","t","onChange","prevFormState","submit","current","controller","newFormState","newFormStateData","setTimeout","update","node","newData","setFields","rowErrorCount","formField","Object","values","removeBlock","remove","blockDisplayName","labels","singular","onCollapsedChange","changedCollapsed","then","currentDocPreferences","currentFieldPreferences","name","collapsedArray","newCollapsed","length","includes","push","splice","indexOf","hello","EditButton","_jsx","buttonStyle","className","disabled","el","icon","onClick","e","preventDefault","stopPropagation","onMouseDown","round","size","tooltip","label","RemoveButton","admin","BlockCollapsible","children","editButton","fieldHasErrors","Label","removeButton","join","collapsibleStyle","header","_jsxs","pillStyle","path","count","withMessage","isEditable","onToggle","incomingCollapsedState","BlockDrawer","title","_Fragment","forceRender","parentIndexPath","parentPath","parentSchemaPath","programmaticSubmit","beforeSubmit","onSubmit","formSchema"],"sources":["../../../../../src/features/blocks/client/component/index.tsx"],"sourcesContent":["'use client'\n\nimport {\n Button,\n Collapsible,\n Drawer,\n EditDepthProvider,\n ErrorPill,\n Form,\n formatDrawerSlug,\n FormSubmit,\n Pill,\n RenderFields,\n SectionTitle,\n useDocumentInfo,\n useEditDepth,\n useFormSubmitted,\n useServerFunctions,\n useTranslation,\n} from '@payloadcms/ui'\nimport { abortAndIgnore } from '@payloadcms/ui/shared'\nimport { deepCopyObjectSimpleWithoutReactComponents, reduceFieldsToValues } from 'payload/shared'\nimport React, { useCallback, useEffect, useMemo, useRef } from 'react'\n\nconst baseClass = 'lexical-block'\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext'\nimport { getTranslation } from '@payloadcms/translations'\nimport { $getNodeByKey } from 'lexical'\nimport { type BlocksFieldClient, type CollapsedPreferences, type FormState } from 'payload'\nimport { v4 as uuid } from 'uuid'\n\nimport type { BlockFields } from '../../server/nodes/BlocksNode.js'\n\nimport { useEditorConfigContext } from '../../../../lexical/config/client/EditorConfigProvider.js'\nimport { useLexicalDrawer } from '../../../../utilities/fieldsDrawer/useLexicalDrawer.js'\nimport { $isBlockNode } from '../nodes/BlocksNode.js'\nimport { BlockContent } from './BlockContent.js'\nimport './index.scss'\nimport { removeEmptyArrayValues } from './removeEmptyArrayValues.js'\n\ntype Props = {\n readonly children?: React.ReactNode\n readonly formData: BlockFields\n readonly nodeKey: string\n}\n\nexport const BlockComponent: React.FC<Props> = (props) => {\n const { formData, nodeKey } = props\n const submitted = useFormSubmitted()\n const { id, collectionSlug, globalSlug } = useDocumentInfo()\n const {\n fieldProps: {\n featureClientSchemaMap,\n field: parentLexicalRichTextField,\n initialLexicalFormState,\n permissions,\n readOnly,\n schemaPath,\n },\n uuid: uuidFromContext,\n } = useEditorConfigContext()\n const onChangeAbortControllerRef = useRef(new AbortController())\n const editDepth = useEditDepth()\n const [errorCount, setErrorCount] = React.useState(0)\n\n const drawerSlug = formatDrawerSlug({\n slug: `lexical-blocks-create-${uuidFromContext}-${formData.id}`,\n depth: editDepth,\n })\n const { toggleDrawer } = useLexicalDrawer(drawerSlug)\n\n // Used for saving collapsed to preferences (and gettin' it from there again)\n // Remember, these preferences are scoped to the whole document, not just this form. This\n // is important to consider for the data path used in setDocFieldPreferences\n const { getDocPreferences, setDocFieldPreferences } = useDocumentInfo()\n const [editor] = useLexicalComposerContext()\n\n const { getFormState } = useServerFunctions()\n const schemaFieldsPath = `${schemaPath}.lexical_internal_feature.blocks.lexical_blocks.${formData.blockType}.fields`\n\n const [initialState, setInitialState] = React.useState<false | FormState | undefined>(\n initialLexicalFormState?.[formData.id]?.formState\n ? {\n ...initialLexicalFormState?.[formData.id]?.formState,\n blockName: {\n initialValue: formData.blockName,\n passesCondition: true,\n valid: true,\n value: formData.blockName,\n },\n }\n : false,\n )\n\n const [CustomLabel, setCustomLabel] = React.useState<React.ReactNode | undefined>(\n // @ts-expect-error - vestiges of when tsconfig was not strict. Feel free to improve\n initialState?.['_components']?.customComponents?.BlockLabel,\n )\n\n const [CustomBlock, setCustomBlock] = React.useState<React.ReactNode | undefined>(\n // @ts-expect-error - vestiges of when tsconfig was not strict. Feel free to improve\n initialState?.['_components']?.customComponents?.Block,\n )\n\n // Initial state for newly created blocks\n useEffect(() => {\n const abortController = new AbortController()\n\n const awaitInitialState = async () => {\n /*\n * This will only run if a new block is created. For all existing blocks that are loaded when the document is loaded, or when the form is saved,\n * this is not run, as the lexical field RSC will fetch the state server-side and pass it to the client. That way, we avoid unnecessary client-side\n * requests. Though for newly created blocks, we need to fetch the state client-side, as the server doesn't know about the block yet.\n */\n const { state } = await getFormState({\n id,\n collectionSlug,\n data: formData,\n docPermissions: { fields: true },\n docPreferences: await getDocPreferences(),\n globalSlug,\n operation: 'update',\n renderAllFields: true,\n schemaPath: schemaFieldsPath,\n signal: abortController.signal,\n })\n\n if (state) {\n state.blockName = {\n initialValue: formData.blockName,\n passesCondition: true,\n valid: true,\n value: formData.blockName,\n }\n\n setInitialState(state)\n setCustomLabel(state._components?.customComponents?.BlockLabel)\n setCustomBlock(state._components?.customComponents?.Block)\n }\n }\n\n if (formData && !initialState) {\n void awaitInitialState()\n }\n\n return () => {\n abortAndIgnore(abortController)\n }\n }, [\n getFormState,\n schemaFieldsPath,\n id,\n formData,\n initialState,\n collectionSlug,\n globalSlug,\n getDocPreferences,\n ])\n\n const [isCollapsed, setIsCollapsed] = React.useState<boolean>(\n initialLexicalFormState?.[formData.id]?.collapsed ?? false,\n )\n\n const componentMapRenderedBlockPath = `${schemaPath}.lexical_internal_feature.blocks.lexical_blocks.${formData.blockType}`\n\n const clientSchemaMap = featureClientSchemaMap['blocks']\n\n const blocksField: BlocksFieldClient = clientSchemaMap[\n componentMapRenderedBlockPath\n ][0] as BlocksFieldClient\n\n const clientBlock = blocksField.blocks[0]\n\n const { i18n, t } = useTranslation<object, string>()\n\n const onChange = useCallback(\n async ({ formState: prevFormState, submit }: { formState: FormState; submit?: boolean }) => {\n abortAndIgnore(onChangeAbortControllerRef.current)\n\n const controller = new AbortController()\n onChangeAbortControllerRef.current = controller\n\n const { state: newFormState } = await getFormState({\n id,\n collectionSlug,\n docPermissions: {\n fields: true,\n },\n docPreferences: await getDocPreferences(),\n formState: prevFormState,\n globalSlug,\n operation: 'update',\n renderAllFields: submit ? true : false,\n schemaPath: schemaFieldsPath,\n signal: controller.signal,\n })\n\n if (!newFormState) {\n return prevFormState\n }\n\n newFormState.blockName = prevFormState.blockName\n\n const newFormStateData: BlockFields = reduceFieldsToValues(\n removeEmptyArrayValues({\n fields: deepCopyObjectSimpleWithoutReactComponents(newFormState),\n }),\n true,\n ) as BlockFields\n\n setTimeout(() => {\n editor.update(() => {\n const node = $getNodeByKey(nodeKey)\n if (node && $isBlockNode(node)) {\n const newData = newFormStateData\n newData.blockType = formData.blockType\n node.setFields(newData)\n }\n })\n }, 0)\n\n if (submit) {\n setCustomLabel(newFormState._components?.customComponents?.BlockLabel)\n setCustomBlock(newFormState._components?.customComponents?.Block)\n\n let rowErrorCount = 0\n for (const formField of Object.values(newFormState)) {\n if (formField?.valid === false) {\n rowErrorCount++\n }\n }\n setErrorCount(rowErrorCount)\n }\n\n return newFormState\n },\n\n [\n getFormState,\n id,\n collectionSlug,\n getDocPreferences,\n globalSlug,\n schemaFieldsPath,\n formData.blockType,\n editor,\n nodeKey,\n ],\n )\n\n useEffect(() => {\n return () => {\n abortAndIgnore(onChangeAbortControllerRef.current)\n }\n }, [])\n\n const removeBlock = useCallback(() => {\n editor.update(() => {\n $getNodeByKey(nodeKey)?.remove()\n })\n }, [editor, nodeKey])\n\n const blockDisplayName = clientBlock?.labels?.singular\n ? getTranslation(clientBlock.labels.singular, i18n)\n : clientBlock?.slug\n\n const onCollapsedChange = useCallback(\n (changedCollapsed: boolean) => {\n void getDocPreferences().then((currentDocPreferences) => {\n const currentFieldPreferences =\n currentDocPreferences?.fields?.[parentLexicalRichTextField.name]\n\n const collapsedArray = currentFieldPreferences?.collapsed\n\n const newCollapsed: CollapsedPreferences =\n collapsedArray && collapsedArray?.length ? collapsedArray : []\n\n if (changedCollapsed) {\n if (!newCollapsed.includes(formData.id)) {\n newCollapsed.push(formData.id)\n }\n } else {\n if (newCollapsed.includes(formData.id)) {\n newCollapsed.splice(newCollapsed.indexOf(formData.id), 1)\n }\n }\n\n setDocFieldPreferences(parentLexicalRichTextField.name, {\n collapsed: newCollapsed,\n hello: 'hi',\n })\n })\n },\n [getDocPreferences, parentLexicalRichTextField.name, setDocFieldPreferences, formData.id],\n )\n\n const EditButton = useMemo(\n () => () => (\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__editButton`}\n disabled={readOnly}\n el=\"button\"\n icon=\"edit\"\n onClick={(e) => {\n e.preventDefault()\n e.stopPropagation()\n toggleDrawer()\n return false\n }}\n onMouseDown={(e) => {\n // Needed to preserve lexical selection for toggleDrawer lexical selection restore.\n // I believe this is needed due to this button (usually) being inside of a collapsible.\n e.preventDefault()\n }}\n round\n size=\"small\"\n tooltip={t('lexical:blocks:inlineBlocks:edit', { label: blockDisplayName })}\n />\n ),\n [blockDisplayName, readOnly, t, toggleDrawer],\n )\n\n const RemoveButton = useMemo(\n () => () => (\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__removeButton`}\n disabled={parentLexicalRichTextField?.admin?.readOnly || false}\n icon=\"x\"\n onClick={(e) => {\n e.preventDefault()\n removeBlock()\n }}\n round\n tooltip=\"Remove Block\"\n />\n ),\n [parentLexicalRichTextField?.admin?.readOnly, removeBlock],\n )\n\n const BlockCollapsible = useMemo(\n () =>\n ({\n children,\n editButton,\n errorCount,\n fieldHasErrors,\n Label,\n removeButton,\n }: {\n children?: React.ReactNode\n editButton?: boolean\n errorCount?: number\n fieldHasErrors?: boolean\n /**\n * Override the default label with a custom label\n */\n Label?: React.ReactNode\n removeButton?: boolean\n }) => (\n <div className={baseClass + ' ' + baseClass + '-' + formData.blockType}>\n <Collapsible\n className={[\n `${baseClass}__row`,\n fieldHasErrors ? `${baseClass}__row--has-errors` : `${baseClass}__row--no-errors`,\n ].join(' ')}\n collapsibleStyle={fieldHasErrors ? 'error' : 'default'}\n header={\n <div className={`${baseClass}__block-header`}>\n {(Label ?? CustomLabel) ? (\n (Label ?? CustomLabel)\n ) : (\n <div>\n <Pill\n className={`${baseClass}__block-pill ${baseClass}__block-pill-${formData?.blockType}`}\n pillStyle=\"white\"\n >\n {blockDisplayName}\n </Pill>\n <SectionTitle\n path=\"blockName\"\n readOnly={parentLexicalRichTextField?.admin?.readOnly || false}\n />\n {fieldHasErrors && (\n <ErrorPill count={errorCount ?? 0} i18n={i18n} withMessage />\n )}\n </div>\n )}\n\n <div>\n {(CustomBlock && editButton !== false) || (!CustomBlock && editButton) ? (\n <EditButton />\n ) : null}\n {removeButton !== false && editor.isEditable() ? <RemoveButton /> : null}\n </div>\n </div>\n }\n isCollapsed={isCollapsed}\n key={0}\n onToggle={(incomingCollapsedState) => {\n onCollapsedChange(incomingCollapsedState)\n setIsCollapsed(incomingCollapsedState)\n }}\n >\n {children}\n </Collapsible>\n </div>\n ),\n [\n CustomBlock,\n CustomLabel,\n EditButton,\n RemoveButton,\n blockDisplayName,\n editor,\n formData.blockType,\n i18n,\n isCollapsed,\n onCollapsedChange,\n parentLexicalRichTextField?.admin?.readOnly,\n ],\n )\n\n const BlockDrawer = useMemo(\n () => () => (\n <EditDepthProvider>\n <Drawer\n className={''}\n slug={drawerSlug}\n title={t(`lexical:blocks:inlineBlocks:${formData?.id ? 'edit' : 'create'}`, {\n label: blockDisplayName ?? t('lexical:blocks:inlineBlocks:label'),\n })}\n >\n {initialState ? (\n <>\n <RenderFields\n fields={clientBlock.fields}\n forceRender\n parentIndexPath=\"\"\n parentPath=\"\" // See Blocks feature path for details as for why this is empty\n parentSchemaPath={schemaFieldsPath}\n permissions={permissions}\n readOnly={false}\n />\n <FormSubmit programmaticSubmit={true}>{t('fields:saveChanges')}</FormSubmit>\n </>\n ) : null}\n </Drawer>\n </EditDepthProvider>\n ),\n [\n initialState,\n drawerSlug,\n blockDisplayName,\n t,\n clientBlock.fields,\n schemaFieldsPath,\n permissions,\n // DO NOT ADD FORMDATA HERE! Adding formData will kick you out of sub block editors while writing.\n ],\n )\n\n // Memoized Form JSX\n const Block = useMemo(() => {\n if (!initialState) {\n return null\n }\n return (\n <Form\n beforeSubmit={[\n async ({ formState }) => {\n // This is only called when form is submitted from drawer - usually only the case if the block has a custom Block component\n return await onChange({ formState, submit: true })\n },\n ]}\n fields={clientBlock.fields}\n initialState={initialState}\n onChange={[onChange]}\n onSubmit={(formState) => {\n // This is only called when form is submitted from drawer - usually only the case if the block has a custom Block component\n const newData: any = reduceFieldsToValues(formState)\n newData.blockType = formData.blockType\n editor.update(() => {\n const node = $getNodeByKey(nodeKey)\n if (node && $isBlockNode(node)) {\n node.setFields(newData)\n }\n })\n toggleDrawer()\n }}\n submitted={submitted}\n uuid={uuid()}\n >\n <BlockContent\n baseClass={baseClass}\n BlockDrawer={BlockDrawer}\n Collapsible={BlockCollapsible}\n CustomBlock={CustomBlock}\n EditButton={EditButton}\n errorCount={errorCount}\n formSchema={clientBlock.fields}\n initialState={initialState}\n nodeKey={nodeKey}\n RemoveButton={RemoveButton}\n />\n </Form>\n )\n }, [\n BlockCollapsible,\n BlockDrawer,\n CustomBlock,\n RemoveButton,\n EditButton,\n editor,\n errorCount,\n toggleDrawer,\n clientBlock.fields,\n // DO NOT ADD FORMDATA HERE! Adding formData will kick you out of sub block editors while writing.\n initialState,\n nodeKey,\n onChange,\n submitted,\n ])\n\n return Block\n}\n"],"mappings":"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","ignoreList":[]}
@@ -288,6 +288,7 @@ export const InlineBlockComponent = props => {
288
288
  permissions: permissions,
289
289
  readOnly: false
290
290
  }), /*#__PURE__*/_jsx(FormSubmit, {
291
+ programmaticSubmit: true,
291
292
  children: t('fields:saveChanges')
292
293
  })]
293
294
  }) : null
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["React","createContext","useCallback","useEffect","useMemo","useRef","baseClass","useLexicalComposerContext","useLexicalNodeSelection","mergeRegister","getTranslation","Button","Drawer","EditDepthProvider","Form","formatDrawerSlug","FormSubmit","RenderFields","ShimmerEffect","useDocumentInfo","useEditDepth","useServerFunctions","useTranslation","abortAndIgnore","$getNodeByKey","$getSelection","$isNodeSelection","CLICK_COMMAND","COMMAND_PRIORITY_LOW","KEY_BACKSPACE_COMMAND","KEY_DELETE_COMMAND","reduceFieldsToValues","v4","uuid","useEditorConfigContext","useLexicalDrawer","$isInlineBlockNode","InlineBlockComponentContext","initialState","useInlineBlockComponentContext","useContext","InlineBlockComponent","props","formData","nodeKey","editor","i18n","t","fieldProps","featureClientSchemaMap","initialLexicalFormState","permissions","readOnly","schemaPath","uuidFromContext","getFormState","editDepth","setInitialState","useState","id","formState","CustomLabel","setCustomLabel","customComponents","BlockLabel","CustomBlock","setCustomBlock","Block","drawerSlug","slug","depth","toggleDrawer","inlineBlockElemElemRef","isSelected","setSelected","clearSelection","collectionSlug","getDocPreferences","globalSlug","componentMapRenderedBlockPath","blockType","clientSchemaMap","blocksField","clientBlock","blocks","removeInlineBlock","update","remove","$onDelete","event","deleteSelection","preventDefault","getNodes","forEach","node","onClick","payload","target","current","contains","shiftKey","registerCommand","blockDisplayName","labels","singular","onChangeAbortControllerRef","AbortController","schemaFieldsPath","abortController","awaitInitialState","state","data","docPermissions","fields","docPreferences","operation","renderAllFields","signal","onChange","prevFormState","submit","controller","onFormSubmit","newData","setFields","RemoveButton","_jsx","buttonStyle","className","disabled","icon","e","round","size","tooltip","label","EditButton","el","InlineBlockContainer","children","filter","Boolean","join","ref","Label","_jsxs","beforeSubmit","disableValidationOnSubmit","onSubmit","title","_Fragment","forceRender","parentIndexPath","parentPath","parentSchemaPath","Provider","value","height","width","isEditable"],"sources":["../../../../../src/features/blocks/client/componentInline/index.tsx"],"sourcesContent":["'use client'\n\nimport React, { createContext, useCallback, useEffect, useMemo, useRef } from 'react'\nconst baseClass = 'inline-block'\n\nimport type { BlocksFieldClient, FormState } from 'payload'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext'\nimport { useLexicalNodeSelection } from '@lexical/react/useLexicalNodeSelection'\nimport { mergeRegister } from '@lexical/utils'\nimport { getTranslation } from '@payloadcms/translations'\nimport {\n Button,\n Drawer,\n EditDepthProvider,\n Form,\n formatDrawerSlug,\n FormSubmit,\n RenderFields,\n ShimmerEffect,\n useDocumentInfo,\n useEditDepth,\n useServerFunctions,\n useTranslation,\n} from '@payloadcms/ui'\nimport { abortAndIgnore } from '@payloadcms/ui/shared'\nimport {\n $getNodeByKey,\n $getSelection,\n $isNodeSelection,\n CLICK_COMMAND,\n COMMAND_PRIORITY_LOW,\n KEY_BACKSPACE_COMMAND,\n KEY_DELETE_COMMAND,\n} from 'lexical'\nimport { reduceFieldsToValues } from 'payload/shared'\n\nimport './index.scss'\n\nimport { v4 as uuid } from 'uuid'\n\nimport type { InlineBlockFields } from '../../server/nodes/InlineBlocksNode.js'\n\nimport { useEditorConfigContext } from '../../../../lexical/config/client/EditorConfigProvider.js'\nimport { useLexicalDrawer } from '../../../../utilities/fieldsDrawer/useLexicalDrawer.js'\nimport { $isInlineBlockNode } from '../nodes/InlineBlocksNode.js'\n\ntype Props = {\n readonly formData: InlineBlockFields\n readonly nodeKey: string\n}\n\ntype InlineBlockComponentContextType = {\n EditButton?: React.FC\n initialState: false | FormState | undefined\n InlineBlockContainer?: React.FC<{ children: React.ReactNode }>\n Label?: React.FC\n nodeKey?: string\n RemoveButton?: React.FC\n}\n\nconst InlineBlockComponentContext = createContext<InlineBlockComponentContextType>({\n initialState: false,\n})\n\nexport const useInlineBlockComponentContext = () => React.useContext(InlineBlockComponentContext)\n\nexport const InlineBlockComponent: React.FC<Props> = (props) => {\n const { formData, nodeKey } = props\n const [editor] = useLexicalComposerContext()\n const { i18n, t } = useTranslation<object, string>()\n const {\n fieldProps: {\n featureClientSchemaMap,\n initialLexicalFormState,\n permissions,\n readOnly,\n schemaPath,\n },\n uuid: uuidFromContext,\n } = useEditorConfigContext()\n const { getFormState } = useServerFunctions()\n const editDepth = useEditDepth()\n\n const [initialState, setInitialState] = React.useState<false | FormState | undefined>(\n initialLexicalFormState?.[formData.id]?.formState,\n )\n\n const [CustomLabel, setCustomLabel] = React.useState<React.ReactNode | undefined>(\n // @ts-expect-error - vestiges of when tsconfig was not strict. Feel free to improve\n initialState?.['_components']?.customComponents?.BlockLabel,\n )\n\n const [CustomBlock, setCustomBlock] = React.useState<React.ReactNode | undefined>(\n // @ts-expect-error - vestiges of when tsconfig was not strict. Feel free to improve\n initialState?.['_components']?.customComponents?.Block,\n )\n\n const drawerSlug = formatDrawerSlug({\n slug: `lexical-inlineBlocks-create-` + uuidFromContext,\n depth: editDepth,\n })\n const { toggleDrawer } = useLexicalDrawer(drawerSlug, true)\n\n const inlineBlockElemElemRef = useRef<HTMLDivElement | null>(null)\n const [isSelected, setSelected, clearSelection] = useLexicalNodeSelection(nodeKey)\n const { id, collectionSlug, getDocPreferences, globalSlug } = useDocumentInfo()\n\n const componentMapRenderedBlockPath = `${schemaPath}.lexical_internal_feature.blocks.lexical_inline_blocks.${formData.blockType}`\n\n const clientSchemaMap = featureClientSchemaMap['blocks']\n\n const blocksField: BlocksFieldClient = clientSchemaMap[\n componentMapRenderedBlockPath\n ][0] as BlocksFieldClient\n\n const clientBlock = blocksField.blocks[0]\n\n const removeInlineBlock = useCallback(() => {\n editor.update(() => {\n $getNodeByKey(nodeKey)?.remove()\n })\n }, [editor, nodeKey])\n\n const $onDelete = useCallback(\n (event: KeyboardEvent) => {\n const deleteSelection = $getSelection()\n if (isSelected && $isNodeSelection(deleteSelection)) {\n event.preventDefault()\n editor.update(() => {\n deleteSelection.getNodes().forEach((node) => {\n if ($isInlineBlockNode(node)) {\n node.remove()\n }\n })\n })\n }\n return false\n },\n [editor, isSelected],\n )\n const onClick = useCallback(\n (payload: MouseEvent) => {\n const event = payload\n // Check if inlineBlockElemElemRef.target or anything WITHIN inlineBlockElemElemRef.target was clicked\n if (\n event.target === inlineBlockElemElemRef.current ||\n inlineBlockElemElemRef.current?.contains(event.target as Node)\n ) {\n if (event.shiftKey) {\n setSelected(!isSelected)\n } else {\n if (!isSelected) {\n clearSelection()\n setSelected(true)\n }\n }\n return true\n }\n\n return false\n },\n [isSelected, setSelected, clearSelection],\n )\n\n useEffect(() => {\n return mergeRegister(\n editor.registerCommand<MouseEvent>(CLICK_COMMAND, onClick, COMMAND_PRIORITY_LOW),\n\n editor.registerCommand(KEY_DELETE_COMMAND, $onDelete, COMMAND_PRIORITY_LOW),\n editor.registerCommand(KEY_BACKSPACE_COMMAND, $onDelete, COMMAND_PRIORITY_LOW),\n )\n }, [clearSelection, editor, isSelected, nodeKey, $onDelete, setSelected, onClick])\n\n const blockDisplayName = clientBlock?.labels?.singular\n ? getTranslation(clientBlock.labels.singular, i18n)\n : clientBlock?.slug\n\n const onChangeAbortControllerRef = useRef(new AbortController())\n const schemaFieldsPath = `${schemaPath}.lexical_internal_feature.blocks.lexical_inline_blocks.${clientBlock?.slug}.fields`\n\n // Initial state for newly created blocks\n useEffect(() => {\n const abortController = new AbortController()\n\n const awaitInitialState = async () => {\n /*\n * This will only run if a new block is created. For all existing blocks that are loaded when the document is loaded, or when the form is saved,\n * this is not run, as the lexical field RSC will fetch the state server-side and pass it to the client. That way, we avoid unnecessary client-side\n * requests. Though for newly created blocks, we need to fetch the state client-side, as the server doesn't know about the block yet.\n */\n const { state } = await getFormState({\n id,\n collectionSlug,\n data: formData,\n docPermissions: { fields: true },\n docPreferences: await getDocPreferences(),\n globalSlug,\n operation: 'update',\n renderAllFields: true,\n schemaPath: schemaFieldsPath,\n signal: abortController.signal,\n })\n\n if (state) {\n setInitialState(state)\n setCustomLabel(state['_components']?.customComponents?.BlockLabel)\n setCustomBlock(state['_components']?.customComponents?.Block)\n }\n }\n\n if (formData && !initialState) {\n void awaitInitialState()\n }\n\n return () => {\n abortAndIgnore(abortController)\n }\n }, [\n getFormState,\n schemaFieldsPath,\n id,\n formData,\n initialState,\n collectionSlug,\n globalSlug,\n getDocPreferences,\n ])\n\n /**\n * HANDLE ONCHANGE\n */\n const onChange = useCallback(\n async ({ formState: prevFormState, submit }: { formState: FormState; submit?: boolean }) => {\n abortAndIgnore(onChangeAbortControllerRef.current)\n\n const controller = new AbortController()\n onChangeAbortControllerRef.current = controller\n\n const { state } = await getFormState({\n id,\n collectionSlug,\n docPermissions: {\n fields: true,\n },\n docPreferences: await getDocPreferences(),\n formState: prevFormState,\n globalSlug,\n operation: 'update',\n renderAllFields: submit ? true : false,\n schemaPath: schemaFieldsPath,\n signal: controller.signal,\n })\n\n if (!state) {\n return prevFormState\n }\n\n if (submit) {\n setCustomLabel(state['_components']?.customComponents?.BlockLabel)\n setCustomBlock(state['_components']?.customComponents?.Block)\n }\n\n return state\n },\n [getFormState, id, collectionSlug, getDocPreferences, globalSlug, schemaFieldsPath],\n )\n // cleanup effect\n useEffect(() => {\n return () => {\n abortAndIgnore(onChangeAbortControllerRef.current)\n }\n }, [])\n\n /**\n * HANDLE FORM SUBMIT\n */\n const onFormSubmit = useCallback(\n (formState: FormState) => {\n const newData: any = reduceFieldsToValues(formState)\n newData.blockType = formData.blockType\n editor.update(() => {\n const node = $getNodeByKey(nodeKey)\n if (node && $isInlineBlockNode(node)) {\n node.setFields(newData)\n }\n })\n },\n [editor, nodeKey, formData],\n )\n\n const RemoveButton = useMemo(\n () => () => (\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__removeButton`}\n disabled={readOnly}\n icon=\"x\"\n onClick={(e) => {\n e.preventDefault()\n removeInlineBlock()\n }}\n round\n size=\"small\"\n tooltip={t('lexical:blocks:inlineBlocks:remove', { label: blockDisplayName })}\n />\n ),\n [blockDisplayName, readOnly, removeInlineBlock, t],\n )\n\n const EditButton = useMemo(\n () => () => (\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__editButton`}\n disabled={readOnly}\n el=\"button\"\n icon=\"edit\"\n onClick={() => {\n toggleDrawer()\n }}\n round\n size=\"small\"\n tooltip={t('lexical:blocks:inlineBlocks:edit', { label: blockDisplayName })}\n />\n ),\n [blockDisplayName, readOnly, t, toggleDrawer],\n )\n\n const InlineBlockContainer = useMemo(\n () =>\n ({ children }: { children: React.ReactNode }) => (\n <div\n className={[\n baseClass,\n baseClass + '-' + formData.blockType,\n isSelected && `${baseClass}--selected`,\n ]\n .filter(Boolean)\n .join(' ')}\n ref={inlineBlockElemElemRef}\n >\n {children}\n </div>\n ),\n [formData.blockType, isSelected],\n )\n\n const Label = useMemo(() => {\n if (CustomLabel) {\n return () => CustomLabel\n } else {\n return () => <div>{getTranslation(clientBlock.labels!.singular, i18n)}</div>\n }\n }, [CustomLabel, clientBlock.labels, i18n])\n\n return (\n <Form\n beforeSubmit={[\n async ({ formState }) => {\n // This is only called when form is submitted from drawer\n return await onChange({ formState, submit: true })\n },\n ]}\n disableValidationOnSubmit\n fields={clientBlock.fields}\n initialState={initialState || {}}\n onChange={[onChange]}\n onSubmit={(formState) => {\n onFormSubmit(formState)\n toggleDrawer()\n }}\n uuid={uuid()}\n >\n <EditDepthProvider>\n <Drawer\n className={''}\n slug={drawerSlug}\n title={t(`lexical:blocks:inlineBlocks:${formData?.id ? 'edit' : 'create'}`, {\n label: blockDisplayName ?? t('lexical:blocks:inlineBlocks:label'),\n })}\n >\n {initialState ? (\n <>\n <RenderFields\n fields={clientBlock.fields}\n forceRender\n parentIndexPath=\"\"\n parentPath=\"\" // See Blocks feature path for details as for why this is empty\n parentSchemaPath={schemaFieldsPath}\n permissions={permissions}\n readOnly={false}\n />\n <FormSubmit>{t('fields:saveChanges')}</FormSubmit>\n </>\n ) : null}\n </Drawer>\n </EditDepthProvider>\n {CustomBlock ? (\n <InlineBlockComponentContext.Provider\n value={{\n EditButton,\n initialState,\n InlineBlockContainer,\n Label,\n nodeKey,\n RemoveButton,\n }}\n >\n {CustomBlock}\n </InlineBlockComponentContext.Provider>\n ) : (\n <InlineBlockContainer>\n {initialState ? <Label /> : <ShimmerEffect height=\"15px\" width=\"40px\" />}\n {editor.isEditable() ? (\n <div className={`${baseClass}__actions`}>\n <EditButton />\n <RemoveButton />\n </div>\n ) : null}\n </InlineBlockContainer>\n )}\n </Form>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["React","createContext","useCallback","useEffect","useMemo","useRef","baseClass","useLexicalComposerContext","useLexicalNodeSelection","mergeRegister","getTranslation","Button","Drawer","EditDepthProvider","Form","formatDrawerSlug","FormSubmit","RenderFields","ShimmerEffect","useDocumentInfo","useEditDepth","useServerFunctions","useTranslation","abortAndIgnore","$getNodeByKey","$getSelection","$isNodeSelection","CLICK_COMMAND","COMMAND_PRIORITY_LOW","KEY_BACKSPACE_COMMAND","KEY_DELETE_COMMAND","reduceFieldsToValues","v4","uuid","useEditorConfigContext","useLexicalDrawer","$isInlineBlockNode","InlineBlockComponentContext","initialState","useInlineBlockComponentContext","useContext","InlineBlockComponent","props","formData","nodeKey","editor","i18n","t","fieldProps","featureClientSchemaMap","initialLexicalFormState","permissions","readOnly","schemaPath","uuidFromContext","getFormState","editDepth","setInitialState","useState","id","formState","CustomLabel","setCustomLabel","customComponents","BlockLabel","CustomBlock","setCustomBlock","Block","drawerSlug","slug","depth","toggleDrawer","inlineBlockElemElemRef","isSelected","setSelected","clearSelection","collectionSlug","getDocPreferences","globalSlug","componentMapRenderedBlockPath","blockType","clientSchemaMap","blocksField","clientBlock","blocks","removeInlineBlock","update","remove","$onDelete","event","deleteSelection","preventDefault","getNodes","forEach","node","onClick","payload","target","current","contains","shiftKey","registerCommand","blockDisplayName","labels","singular","onChangeAbortControllerRef","AbortController","schemaFieldsPath","abortController","awaitInitialState","state","data","docPermissions","fields","docPreferences","operation","renderAllFields","signal","onChange","prevFormState","submit","controller","onFormSubmit","newData","setFields","RemoveButton","_jsx","buttonStyle","className","disabled","icon","e","round","size","tooltip","label","EditButton","el","InlineBlockContainer","children","filter","Boolean","join","ref","Label","_jsxs","beforeSubmit","disableValidationOnSubmit","onSubmit","title","_Fragment","forceRender","parentIndexPath","parentPath","parentSchemaPath","programmaticSubmit","Provider","value","height","width","isEditable"],"sources":["../../../../../src/features/blocks/client/componentInline/index.tsx"],"sourcesContent":["'use client'\n\nimport React, { createContext, useCallback, useEffect, useMemo, useRef } from 'react'\nconst baseClass = 'inline-block'\n\nimport type { BlocksFieldClient, FormState } from 'payload'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext'\nimport { useLexicalNodeSelection } from '@lexical/react/useLexicalNodeSelection'\nimport { mergeRegister } from '@lexical/utils'\nimport { getTranslation } from '@payloadcms/translations'\nimport {\n Button,\n Drawer,\n EditDepthProvider,\n Form,\n formatDrawerSlug,\n FormSubmit,\n RenderFields,\n ShimmerEffect,\n useDocumentInfo,\n useEditDepth,\n useServerFunctions,\n useTranslation,\n} from '@payloadcms/ui'\nimport { abortAndIgnore } from '@payloadcms/ui/shared'\nimport {\n $getNodeByKey,\n $getSelection,\n $isNodeSelection,\n CLICK_COMMAND,\n COMMAND_PRIORITY_LOW,\n KEY_BACKSPACE_COMMAND,\n KEY_DELETE_COMMAND,\n} from 'lexical'\nimport { reduceFieldsToValues } from 'payload/shared'\n\nimport './index.scss'\n\nimport { v4 as uuid } from 'uuid'\n\nimport type { InlineBlockFields } from '../../server/nodes/InlineBlocksNode.js'\n\nimport { useEditorConfigContext } from '../../../../lexical/config/client/EditorConfigProvider.js'\nimport { useLexicalDrawer } from '../../../../utilities/fieldsDrawer/useLexicalDrawer.js'\nimport { $isInlineBlockNode } from '../nodes/InlineBlocksNode.js'\n\ntype Props = {\n readonly formData: InlineBlockFields\n readonly nodeKey: string\n}\n\ntype InlineBlockComponentContextType = {\n EditButton?: React.FC\n initialState: false | FormState | undefined\n InlineBlockContainer?: React.FC<{ children: React.ReactNode }>\n Label?: React.FC\n nodeKey?: string\n RemoveButton?: React.FC\n}\n\nconst InlineBlockComponentContext = createContext<InlineBlockComponentContextType>({\n initialState: false,\n})\n\nexport const useInlineBlockComponentContext = () => React.useContext(InlineBlockComponentContext)\n\nexport const InlineBlockComponent: React.FC<Props> = (props) => {\n const { formData, nodeKey } = props\n const [editor] = useLexicalComposerContext()\n const { i18n, t } = useTranslation<object, string>()\n const {\n fieldProps: {\n featureClientSchemaMap,\n initialLexicalFormState,\n permissions,\n readOnly,\n schemaPath,\n },\n uuid: uuidFromContext,\n } = useEditorConfigContext()\n const { getFormState } = useServerFunctions()\n const editDepth = useEditDepth()\n\n const [initialState, setInitialState] = React.useState<false | FormState | undefined>(\n initialLexicalFormState?.[formData.id]?.formState,\n )\n\n const [CustomLabel, setCustomLabel] = React.useState<React.ReactNode | undefined>(\n // @ts-expect-error - vestiges of when tsconfig was not strict. Feel free to improve\n initialState?.['_components']?.customComponents?.BlockLabel,\n )\n\n const [CustomBlock, setCustomBlock] = React.useState<React.ReactNode | undefined>(\n // @ts-expect-error - vestiges of when tsconfig was not strict. Feel free to improve\n initialState?.['_components']?.customComponents?.Block,\n )\n\n const drawerSlug = formatDrawerSlug({\n slug: `lexical-inlineBlocks-create-` + uuidFromContext,\n depth: editDepth,\n })\n const { toggleDrawer } = useLexicalDrawer(drawerSlug, true)\n\n const inlineBlockElemElemRef = useRef<HTMLDivElement | null>(null)\n const [isSelected, setSelected, clearSelection] = useLexicalNodeSelection(nodeKey)\n const { id, collectionSlug, getDocPreferences, globalSlug } = useDocumentInfo()\n\n const componentMapRenderedBlockPath = `${schemaPath}.lexical_internal_feature.blocks.lexical_inline_blocks.${formData.blockType}`\n\n const clientSchemaMap = featureClientSchemaMap['blocks']\n\n const blocksField: BlocksFieldClient = clientSchemaMap[\n componentMapRenderedBlockPath\n ][0] as BlocksFieldClient\n\n const clientBlock = blocksField.blocks[0]\n\n const removeInlineBlock = useCallback(() => {\n editor.update(() => {\n $getNodeByKey(nodeKey)?.remove()\n })\n }, [editor, nodeKey])\n\n const $onDelete = useCallback(\n (event: KeyboardEvent) => {\n const deleteSelection = $getSelection()\n if (isSelected && $isNodeSelection(deleteSelection)) {\n event.preventDefault()\n editor.update(() => {\n deleteSelection.getNodes().forEach((node) => {\n if ($isInlineBlockNode(node)) {\n node.remove()\n }\n })\n })\n }\n return false\n },\n [editor, isSelected],\n )\n const onClick = useCallback(\n (payload: MouseEvent) => {\n const event = payload\n // Check if inlineBlockElemElemRef.target or anything WITHIN inlineBlockElemElemRef.target was clicked\n if (\n event.target === inlineBlockElemElemRef.current ||\n inlineBlockElemElemRef.current?.contains(event.target as Node)\n ) {\n if (event.shiftKey) {\n setSelected(!isSelected)\n } else {\n if (!isSelected) {\n clearSelection()\n setSelected(true)\n }\n }\n return true\n }\n\n return false\n },\n [isSelected, setSelected, clearSelection],\n )\n\n useEffect(() => {\n return mergeRegister(\n editor.registerCommand<MouseEvent>(CLICK_COMMAND, onClick, COMMAND_PRIORITY_LOW),\n\n editor.registerCommand(KEY_DELETE_COMMAND, $onDelete, COMMAND_PRIORITY_LOW),\n editor.registerCommand(KEY_BACKSPACE_COMMAND, $onDelete, COMMAND_PRIORITY_LOW),\n )\n }, [clearSelection, editor, isSelected, nodeKey, $onDelete, setSelected, onClick])\n\n const blockDisplayName = clientBlock?.labels?.singular\n ? getTranslation(clientBlock.labels.singular, i18n)\n : clientBlock?.slug\n\n const onChangeAbortControllerRef = useRef(new AbortController())\n const schemaFieldsPath = `${schemaPath}.lexical_internal_feature.blocks.lexical_inline_blocks.${clientBlock?.slug}.fields`\n\n // Initial state for newly created blocks\n useEffect(() => {\n const abortController = new AbortController()\n\n const awaitInitialState = async () => {\n /*\n * This will only run if a new block is created. For all existing blocks that are loaded when the document is loaded, or when the form is saved,\n * this is not run, as the lexical field RSC will fetch the state server-side and pass it to the client. That way, we avoid unnecessary client-side\n * requests. Though for newly created blocks, we need to fetch the state client-side, as the server doesn't know about the block yet.\n */\n const { state } = await getFormState({\n id,\n collectionSlug,\n data: formData,\n docPermissions: { fields: true },\n docPreferences: await getDocPreferences(),\n globalSlug,\n operation: 'update',\n renderAllFields: true,\n schemaPath: schemaFieldsPath,\n signal: abortController.signal,\n })\n\n if (state) {\n setInitialState(state)\n setCustomLabel(state['_components']?.customComponents?.BlockLabel)\n setCustomBlock(state['_components']?.customComponents?.Block)\n }\n }\n\n if (formData && !initialState) {\n void awaitInitialState()\n }\n\n return () => {\n abortAndIgnore(abortController)\n }\n }, [\n getFormState,\n schemaFieldsPath,\n id,\n formData,\n initialState,\n collectionSlug,\n globalSlug,\n getDocPreferences,\n ])\n\n /**\n * HANDLE ONCHANGE\n */\n const onChange = useCallback(\n async ({ formState: prevFormState, submit }: { formState: FormState; submit?: boolean }) => {\n abortAndIgnore(onChangeAbortControllerRef.current)\n\n const controller = new AbortController()\n onChangeAbortControllerRef.current = controller\n\n const { state } = await getFormState({\n id,\n collectionSlug,\n docPermissions: {\n fields: true,\n },\n docPreferences: await getDocPreferences(),\n formState: prevFormState,\n globalSlug,\n operation: 'update',\n renderAllFields: submit ? true : false,\n schemaPath: schemaFieldsPath,\n signal: controller.signal,\n })\n\n if (!state) {\n return prevFormState\n }\n\n if (submit) {\n setCustomLabel(state['_components']?.customComponents?.BlockLabel)\n setCustomBlock(state['_components']?.customComponents?.Block)\n }\n\n return state\n },\n [getFormState, id, collectionSlug, getDocPreferences, globalSlug, schemaFieldsPath],\n )\n // cleanup effect\n useEffect(() => {\n return () => {\n abortAndIgnore(onChangeAbortControllerRef.current)\n }\n }, [])\n\n /**\n * HANDLE FORM SUBMIT\n */\n const onFormSubmit = useCallback(\n (formState: FormState) => {\n const newData: any = reduceFieldsToValues(formState)\n newData.blockType = formData.blockType\n editor.update(() => {\n const node = $getNodeByKey(nodeKey)\n if (node && $isInlineBlockNode(node)) {\n node.setFields(newData)\n }\n })\n },\n [editor, nodeKey, formData],\n )\n\n const RemoveButton = useMemo(\n () => () => (\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__removeButton`}\n disabled={readOnly}\n icon=\"x\"\n onClick={(e) => {\n e.preventDefault()\n removeInlineBlock()\n }}\n round\n size=\"small\"\n tooltip={t('lexical:blocks:inlineBlocks:remove', { label: blockDisplayName })}\n />\n ),\n [blockDisplayName, readOnly, removeInlineBlock, t],\n )\n\n const EditButton = useMemo(\n () => () => (\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__editButton`}\n disabled={readOnly}\n el=\"button\"\n icon=\"edit\"\n onClick={() => {\n toggleDrawer()\n }}\n round\n size=\"small\"\n tooltip={t('lexical:blocks:inlineBlocks:edit', { label: blockDisplayName })}\n />\n ),\n [blockDisplayName, readOnly, t, toggleDrawer],\n )\n\n const InlineBlockContainer = useMemo(\n () =>\n ({ children }: { children: React.ReactNode }) => (\n <div\n className={[\n baseClass,\n baseClass + '-' + formData.blockType,\n isSelected && `${baseClass}--selected`,\n ]\n .filter(Boolean)\n .join(' ')}\n ref={inlineBlockElemElemRef}\n >\n {children}\n </div>\n ),\n [formData.blockType, isSelected],\n )\n\n const Label = useMemo(() => {\n if (CustomLabel) {\n return () => CustomLabel\n } else {\n return () => <div>{getTranslation(clientBlock.labels!.singular, i18n)}</div>\n }\n }, [CustomLabel, clientBlock.labels, i18n])\n\n return (\n <Form\n beforeSubmit={[\n async ({ formState }) => {\n // This is only called when form is submitted from drawer\n return await onChange({ formState, submit: true })\n },\n ]}\n disableValidationOnSubmit\n fields={clientBlock.fields}\n initialState={initialState || {}}\n onChange={[onChange]}\n onSubmit={(formState) => {\n onFormSubmit(formState)\n toggleDrawer()\n }}\n uuid={uuid()}\n >\n <EditDepthProvider>\n <Drawer\n className={''}\n slug={drawerSlug}\n title={t(`lexical:blocks:inlineBlocks:${formData?.id ? 'edit' : 'create'}`, {\n label: blockDisplayName ?? t('lexical:blocks:inlineBlocks:label'),\n })}\n >\n {initialState ? (\n <>\n <RenderFields\n fields={clientBlock.fields}\n forceRender\n parentIndexPath=\"\"\n parentPath=\"\" // See Blocks feature path for details as for why this is empty\n parentSchemaPath={schemaFieldsPath}\n permissions={permissions}\n readOnly={false}\n />\n <FormSubmit programmaticSubmit={true}>{t('fields:saveChanges')}</FormSubmit>\n </>\n ) : null}\n </Drawer>\n </EditDepthProvider>\n {CustomBlock ? (\n <InlineBlockComponentContext.Provider\n value={{\n EditButton,\n initialState,\n InlineBlockContainer,\n Label,\n nodeKey,\n RemoveButton,\n }}\n >\n {CustomBlock}\n </InlineBlockComponentContext.Provider>\n ) : (\n <InlineBlockContainer>\n {initialState ? <Label /> : <ShimmerEffect height=\"15px\" width=\"40px\" />}\n {editor.isEditable() ? (\n <div className={`${baseClass}__actions`}>\n <EditButton />\n <RemoveButton />\n </div>\n ) : null}\n </InlineBlockContainer>\n )}\n </Form>\n )\n}\n"],"mappings":"AAAA;;;AAEA,OAAOA,KAAA,IAASC,aAAa,EAAEC,WAAW,EAAEC,SAAS,EAAEC,OAAO,EAAEC,MAAM,QAAQ;AAC9E,MAAMC,SAAA,GAAY;AAIlB,SAASC,yBAAyB,QAAQ;AAC1C,SAASC,uBAAuB,QAAQ;AACxC,SAASC,aAAa,QAAQ;AAC9B,SAASC,cAAc,QAAQ;AAC/B,SACEC,MAAM,EACNC,MAAM,EACNC,iBAAiB,EACjBC,IAAI,EACJC,gBAAgB,EAChBC,UAAU,EACVC,YAAY,EACZC,aAAa,EACbC,eAAe,EACfC,YAAY,EACZC,kBAAkB,EAClBC,cAAc,QACT;AACP,SAASC,cAAc,QAAQ;AAC/B,SACEC,aAAa,EACbC,aAAa,EACbC,gBAAgB,EAChBC,aAAa,EACbC,oBAAoB,EACpBC,qBAAqB,EACrBC,kBAAkB,QACb;AACP,SAASC,oBAAoB,QAAQ;AAIrC,SAASC,EAAA,IAAMC,IAAI,QAAQ;AAI3B,SAASC,sBAAsB,QAAQ;AACvC,SAASC,gBAAgB,QAAQ;AACjC,SAASC,kBAAkB,QAAQ;AAgBnC,MAAMC,2BAAA,gBAA8BpC,aAAA,CAA+C;EACjFqC,YAAA,EAAc;AAChB;AAEA,OAAO,MAAMC,8BAAA,GAAiCA,CAAA;EAAA,OAAMvC,KAAA,CAAAwC,UAAA,CAAAH,2BAAiB;AAAA;AAErE,OAAO,MAAMI,oBAAA,GAAyCC,KAAA;EACpD,MAAM;IAAEC,QAAQ;IAAEC;EAAO,CAAE,GAAGF,KAAA;EAC9B,MAAM,CAACG,MAAA,CAAO,GAAGtC,yBAAA;EACjB,MAAM;IAAEuC,IAAI;IAAEC;EAAC,CAAE,GAAGzB,cAAA;EACpB,MAAM;IACJ0B,UAAA,EAAY;MACVC,sBAAsB;MACtBC,uBAAuB;MACvBC,WAAW;MACXC,QAAQ;MACRC;IAAU,CACX;IACDpB,IAAA,EAAMqB;EAAe,CACtB,GAAGpB,sBAAA;EACJ,MAAM;IAAEqB;EAAY,CAAE,GAAGlC,kBAAA;EACzB,MAAMmC,SAAA,GAAYpC,YAAA;EAElB,MAAM,CAACkB,YAAA,EAAcmB,eAAA,CAAgB,GAAGzD,KAAA,CAAM0D,QAAQ,CACpDR,uBAAA,GAA0BP,QAAA,CAASgB,EAAE,CAAC,EAAEC,SAAA;EAG1C,MAAM,CAACC,WAAA,EAAaC,cAAA,CAAe,GAAG9D,KAAA,CAAM0D,QAAQ;EAClD;EACApB,YAAA,GAAe,cAAc,EAAEyB,gBAAA,EAAkBC,UAAA;EAGnD,MAAM,CAACC,WAAA,EAAaC,cAAA,CAAe,GAAGlE,KAAA,CAAM0D,QAAQ;EAClD;EACApB,YAAA,GAAe,cAAc,EAAEyB,gBAAA,EAAkBI,KAAA;EAGnD,MAAMC,UAAA,GAAarD,gBAAA,CAAiB;IAClCsD,IAAA,EAAM,8BAA8B,GAAGf,eAAA;IACvCgB,KAAA,EAAOd;EACT;EACA,MAAM;IAAEe;EAAY,CAAE,GAAGpC,gBAAA,CAAiBiC,UAAA,EAAY;EAEtD,MAAMI,sBAAA,GAAyBnE,MAAA,CAA8B;EAC7D,MAAM,CAACoE,UAAA,EAAYC,WAAA,EAAaC,cAAA,CAAe,GAAGnE,uBAAA,CAAwBoC,OAAA;EAC1E,MAAM;IAAEe,EAAE;IAAEiB,cAAc;IAAEC,iBAAiB;IAAEC;EAAU,CAAE,GAAG3D,eAAA;EAE9D,MAAM4D,6BAAA,GAAgC,GAAG1B,UAAA,0DAAoEV,QAAA,CAASqC,SAAS,EAAE;EAEjI,MAAMC,eAAA,GAAkBhC,sBAAsB,CAAC,SAAS;EAExD,MAAMiC,WAAA,GAAiCD,eAAe,CACpDF,6BAAA,CACD,CAAC,EAAE;EAEJ,MAAMI,WAAA,GAAcD,WAAA,CAAYE,MAAM,CAAC,EAAE;EAEzC,MAAMC,iBAAA,GAAoBnF,WAAA,CAAY;IACpC2C,MAAA,CAAOyC,MAAM,CAAC;MACZ9D,aAAA,CAAcoB,OAAA,GAAU2C,MAAA;IAC1B;EACF,GAAG,CAAC1C,MAAA,EAAQD,OAAA,CAAQ;EAEpB,MAAM4C,SAAA,GAAYtF,WAAA,CACfuF,KAAA;IACC,MAAMC,eAAA,GAAkBjE,aAAA;IACxB,IAAIgD,UAAA,IAAc/C,gBAAA,CAAiBgE,eAAA,GAAkB;MACnDD,KAAA,CAAME,cAAc;MACpB9C,MAAA,CAAOyC,MAAM,CAAC;QACZI,eAAA,CAAgBE,QAAQ,GAAGC,OAAO,CAAEC,IAAA;UAClC,IAAI1D,kBAAA,CAAmB0D,IAAA,GAAO;YAC5BA,IAAA,CAAKP,MAAM;UACb;QACF;MACF;IACF;IACA,OAAO;EACT,GACA,CAAC1C,MAAA,EAAQ4B,UAAA,CAAW;EAEtB,MAAMsB,OAAA,GAAU7F,WAAA,CACb8F,OAAA;IACC,MAAMP,OAAA,GAAQO,OAAA;IACd;IACA,IACEP,OAAA,CAAMQ,MAAM,KAAKzB,sBAAA,CAAuB0B,OAAO,IAC/C1B,sBAAA,CAAuB0B,OAAO,EAAEC,QAAA,CAASV,OAAA,CAAMQ,MAAM,GACrD;MACA,IAAIR,OAAA,CAAMW,QAAQ,EAAE;QAClB1B,WAAA,CAAY,CAACD,UAAA;MACf,OAAO;QACL,IAAI,CAACA,UAAA,EAAY;UACfE,cAAA;UACAD,WAAA,CAAY;QACd;MACF;MACA,OAAO;IACT;IAEA,OAAO;EACT,GACA,CAACD,UAAA,EAAYC,WAAA,EAAaC,cAAA,CAAe;EAG3CxE,SAAA,CAAU;IACR,OAAOM,aAAA,CACLoC,MAAA,CAAOwD,eAAe,CAAa1E,aAAA,EAAeoE,OAAA,EAASnE,oBAAA,GAE3DiB,MAAA,CAAOwD,eAAe,CAACvE,kBAAA,EAAoB0D,SAAA,EAAW5D,oBAAA,GACtDiB,MAAA,CAAOwD,eAAe,CAACxE,qBAAA,EAAuB2D,SAAA,EAAW5D,oBAAA;EAE7D,GAAG,CAAC+C,cAAA,EAAgB9B,MAAA,EAAQ4B,UAAA,EAAY7B,OAAA,EAAS4C,SAAA,EAAWd,WAAA,EAAaqB,OAAA,CAAQ;EAEjF,MAAMO,gBAAA,GAAmBnB,WAAA,EAAaoB,MAAA,EAAQC,QAAA,GAC1C9F,cAAA,CAAeyE,WAAA,CAAYoB,MAAM,CAACC,QAAQ,EAAE1D,IAAA,IAC5CqC,WAAA,EAAad,IAAA;EAEjB,MAAMoC,0BAAA,GAA6BpG,MAAA,CAAO,IAAIqG,eAAA;EAC9C,MAAMC,gBAAA,GAAmB,GAAGtD,UAAA,0DAAoE8B,WAAA,EAAad,IAAA,SAAa;EAE1H;EACAlE,SAAA,CAAU;IACR,MAAMyG,eAAA,GAAkB,IAAIF,eAAA;IAE5B,MAAMG,iBAAA,GAAoB,MAAAA,CAAA;MACxB;;;;;MAKA,MAAM;QAAEC;MAAK,CAAE,GAAG,MAAMvD,YAAA,CAAa;QACnCI,EAAA;QACAiB,cAAA;QACAmC,IAAA,EAAMpE,QAAA;QACNqE,cAAA,EAAgB;UAAEC,MAAA,EAAQ;QAAK;QAC/BC,cAAA,EAAgB,MAAMrC,iBAAA;QACtBC,UAAA;QACAqC,SAAA,EAAW;QACXC,eAAA,EAAiB;QACjB/D,UAAA,EAAYsD,gBAAA;QACZU,MAAA,EAAQT,eAAA,CAAgBS;MAC1B;MAEA,IAAIP,KAAA,EAAO;QACTrD,eAAA,CAAgBqD,KAAA;QAChBhD,cAAA,CAAegD,KAAK,CAAC,cAAc,EAAE/C,gBAAA,EAAkBC,UAAA;QACvDE,cAAA,CAAe4C,KAAK,CAAC,cAAc,EAAE/C,gBAAA,EAAkBI,KAAA;MACzD;IACF;IAEA,IAAIxB,QAAA,IAAY,CAACL,YAAA,EAAc;MAC7B,KAAKuE,iBAAA;IACP;IAEA,OAAO;MACLtF,cAAA,CAAeqF,eAAA;IACjB;EACF,GAAG,CACDrD,YAAA,EACAoD,gBAAA,EACAhD,EAAA,EACAhB,QAAA,EACAL,YAAA,EACAsC,cAAA,EACAE,UAAA,EACAD,iBAAA,CACD;EAED;;;EAGA,MAAMyC,QAAA,GAAWpH,WAAA,CACf,OAAO;IAAE0D,SAAA,EAAW2D,aAAa;IAAEC;EAAM,CAA8C;IACrFjG,cAAA,CAAekF,0BAAA,CAA2BP,OAAO;IAEjD,MAAMuB,UAAA,GAAa,IAAIf,eAAA;IACvBD,0BAAA,CAA2BP,OAAO,GAAGuB,UAAA;IAErC,MAAM;MAAEX,KAAK,EAALA;IAAK,CAAE,GAAG,MAAMvD,YAAA,CAAa;MACnCI,EAAA;MACAiB,cAAA;MACAoC,cAAA,EAAgB;QACdC,MAAA,EAAQ;MACV;MACAC,cAAA,EAAgB,MAAMrC,iBAAA;MACtBjB,SAAA,EAAW2D,aAAA;MACXzC,UAAA;MACAqC,SAAA,EAAW;MACXC,eAAA,EAAiBI,MAAA,GAAS,OAAO;MACjCnE,UAAA,EAAYsD,gBAAA;MACZU,MAAA,EAAQI,UAAA,CAAWJ;IACrB;IAEA,IAAI,CAACP,OAAA,EAAO;MACV,OAAOS,aAAA;IACT;IAEA,IAAIC,MAAA,EAAQ;MACV1D,cAAA,CAAegD,OAAK,CAAC,cAAc,EAAE/C,gBAAA,EAAkBC,UAAA;MACvDE,cAAA,CAAe4C,OAAK,CAAC,cAAc,EAAE/C,gBAAA,EAAkBI,KAAA;IACzD;IAEA,OAAO2C,OAAA;EACT,GACA,CAACvD,YAAA,EAAcI,EAAA,EAAIiB,cAAA,EAAgBC,iBAAA,EAAmBC,UAAA,EAAY6B,gBAAA,CAAiB;EAErF;EACAxG,SAAA,CAAU;IACR,OAAO;MACLoB,cAAA,CAAekF,0BAAA,CAA2BP,OAAO;IACnD;EACF,GAAG,EAAE;EAEL;;;EAGA,MAAMwB,YAAA,GAAexH,WAAA,CAClB0D,SAAA;IACC,MAAM+D,OAAA,GAAe5F,oBAAA,CAAqB6B,SAAA;IAC1C+D,OAAA,CAAQ3C,SAAS,GAAGrC,QAAA,CAASqC,SAAS;IACtCnC,MAAA,CAAOyC,MAAM,CAAC;MACZ,MAAMQ,MAAA,GAAOtE,aAAA,CAAcoB,OAAA;MAC3B,IAAIkD,MAAA,IAAQ1D,kBAAA,CAAmB0D,MAAA,GAAO;QACpCA,MAAA,CAAK8B,SAAS,CAACD,OAAA;MACjB;IACF;EACF,GACA,CAAC9E,MAAA,EAAQD,OAAA,EAASD,QAAA,CAAS;EAG7B,MAAMkF,YAAA,GAAezH,OAAA,CACnB,MAAM,mBACJ0H,IAAA,CAACnH,MAAA;IACCoH,WAAA,EAAY;IACZC,SAAA,EAAW,GAAG1H,SAAA,gBAAyB;IACvC2H,QAAA,EAAU7E,QAAA;IACV8E,IAAA,EAAK;IACLnC,OAAA,EAAUoC,CAAA;MACRA,CAAA,CAAExC,cAAc;MAChBN,iBAAA;IACF;IACA+C,KAAK;IACLC,IAAA,EAAK;IACLC,OAAA,EAASvF,CAAA,CAAE,sCAAsC;MAAEwF,KAAA,EAAOjC;IAAiB;MAG/E,CAACA,gBAAA,EAAkBlD,QAAA,EAAUiC,iBAAA,EAAmBtC,CAAA,CAAE;EAGpD,MAAMyF,UAAA,GAAapI,OAAA,CACjB,MAAM,mBACJ0H,IAAA,CAACnH,MAAA;IACCoH,WAAA,EAAY;IACZC,SAAA,EAAW,GAAG1H,SAAA,cAAuB;IACrC2H,QAAA,EAAU7E,QAAA;IACVqF,EAAA,EAAG;IACHP,IAAA,EAAK;IACLnC,OAAA,EAASA,CAAA;MACPxB,YAAA;IACF;IACA6D,KAAK;IACLC,IAAA,EAAK;IACLC,OAAA,EAASvF,CAAA,CAAE,oCAAoC;MAAEwF,KAAA,EAAOjC;IAAiB;MAG7E,CAACA,gBAAA,EAAkBlD,QAAA,EAAUL,CAAA,EAAGwB,YAAA,CAAa;EAG/C,MAAMmE,oBAAA,GAAuBtI,OAAA,CAC3B,MACE,CAAC;IAAEuI;EAAQ,CAAiC,kBAC1Cb,IAAA,CAAC;IACCE,SAAA,EAAW,CACT1H,SAAA,EACAA,SAAA,GAAY,MAAMqC,QAAA,CAASqC,SAAS,EACpCP,UAAA,IAAc,GAAGnE,SAAA,YAAqB,CACvC,CACEsI,MAAM,CAACC,OAAA,EACPC,IAAI,CAAC;IACRC,GAAA,EAAKvE,sBAAA;cAEJmE;MAGP,CAAChG,QAAA,CAASqC,SAAS,EAAEP,UAAA,CAAW;EAGlC,MAAMuE,KAAA,GAAQ5I,OAAA,CAAQ;IACpB,IAAIyD,WAAA,EAAa;MACf,OAAO,MAAMA,WAAA;IACf,OAAO;MACL,OAAO,mBAAMiE,IAAA,CAAC;kBAAKpH,cAAA,CAAeyE,WAAA,CAAYoB,MAAM,CAAEC,QAAQ,EAAE1D,IAAA;;IAClE;EACF,GAAG,CAACe,WAAA,EAAasB,WAAA,CAAYoB,MAAM,EAAEzD,IAAA,CAAK;EAE1C,oBACEmG,KAAA,CAACnI,IAAA;IACCoI,YAAA,EAAc,CACZ,OAAO;MAAEtF,SAAS,EAATA;IAAS,CAAE;MAClB;MACA,OAAO,MAAM0D,QAAA,CAAS;QAAE1D,SAAA,EAAAA,WAAA;QAAW4D,MAAA,EAAQ;MAAK;IAClD,EACD;IACD2B,yBAAyB;IACzBlC,MAAA,EAAQ9B,WAAA,CAAY8B,MAAM;IAC1B3E,YAAA,EAAcA,YAAA,IAAgB,CAAC;IAC/BgF,QAAA,EAAU,CAACA,QAAA,CAAS;IACpB8B,QAAA,EAAWxF,WAAA;MACT8D,YAAA,CAAa9D,WAAA;MACbW,YAAA;IACF;IACAtC,IAAA,EAAMA,IAAA;4BAEN6F,IAAA,CAACjH,iBAAA;gBACC,aAAAiH,IAAA,CAAClH,MAAA;QACCoH,SAAA,EAAW;QACX3D,IAAA,EAAMD,UAAA;QACNiF,KAAA,EAAOtG,CAAA,CAAE,+BAA+BJ,QAAA,EAAUgB,EAAA,GAAK,SAAS,UAAU,EAAE;UAC1E4E,KAAA,EAAOjC,gBAAA,IAAoBvD,CAAA,CAAE;QAC/B;kBAECT,YAAA,gBACC2G,KAAA,CAAAK,SAAA;kCACExB,IAAA,CAAC7G,YAAA;YACCgG,MAAA,EAAQ9B,WAAA,CAAY8B,MAAM;YAC1BsC,WAAW;YACXC,eAAA,EAAgB;YAChBC,UAAA,EAAW,GAAG;YAAA;;YACdC,gBAAA,EAAkB/C,gBAAA;YAClBxD,WAAA,EAAaA,WAAA;YACbC,QAAA,EAAU;2BAEZ0E,IAAA,CAAC9G,UAAA;YAAW2I,kBAAA,EAAoB;sBAAO5G,CAAA,CAAE;;aAEzC;;QAGPkB,WAAA,gBACC6D,IAAA,CAACzF,2BAAA,CAA4BuH,QAAQ;MACnCC,KAAA,EAAO;QACLrB,UAAA;QACAlG,YAAA;QACAoG,oBAAA;QACAM,KAAA;QACApG,OAAA;QACAiF;MACF;gBAEC5D;sBAGHgF,KAAA,CAACP,oBAAA;iBACEpG,YAAA,gBAAewF,IAAA,CAACkB,KAAA,qBAAWlB,IAAA,CAAC5G,aAAA;QAAc4I,MAAA,EAAO;QAAOC,KAAA,EAAM;UAC9DlH,MAAA,CAAOmH,UAAU,kBAChBf,KAAA,CAAC;QAAIjB,SAAA,EAAW,GAAG1H,SAAA,WAAoB;gCACrCwH,IAAA,CAACU,UAAA,O,aACDV,IAAA,CAACD,YAAA;WAED;;;AAKd","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/features/indent/client/index.tsx"],"names":[],"mappings":"AAwDA,eAAO,MAAM,mBAAmB,oFAO9B,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/features/indent/client/index.tsx"],"names":[],"mappings":"AAyDA,eAAO,MAAM,mBAAmB,oFAa9B,CAAA"}
@@ -4,6 +4,7 @@ import { INDENT_CONTENT_COMMAND, OUTDENT_CONTENT_COMMAND } from 'lexical';
4
4
  import { IndentDecreaseIcon } from '../../../lexical/ui/icons/IndentDecrease/index.js';
5
5
  import { IndentIncreaseIcon } from '../../../lexical/ui/icons/IndentIncrease/index.js';
6
6
  import { createClientFeature } from '../../../utilities/createClientFeature.js';
7
+ import { IndentPlugin } from './plugins/index.js';
7
8
  import { toolbarIndentGroupWithItems } from './toolbarIndentGroup.js';
8
9
  const toolbarGroups = [toolbarIndentGroupWithItems([{
9
10
  ChildComponent: IndentDecreaseIcon,
@@ -52,6 +53,10 @@ const toolbarGroups = [toolbarIndentGroupWithItems([{
52
53
  order: 2
53
54
  }])];
54
55
  export const IndentFeatureClient = createClientFeature({
56
+ plugins: [{
57
+ Component: IndentPlugin,
58
+ position: 'normal'
59
+ }],
55
60
  toolbarFixed: {
56
61
  groups: toolbarGroups
57
62
  },
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["INDENT_CONTENT_COMMAND","OUTDENT_CONTENT_COMMAND","IndentDecreaseIcon","IndentIncreaseIcon","createClientFeature","toolbarIndentGroupWithItems","toolbarGroups","ChildComponent","isActive","isEnabled","selection","getNodes","length","node","parent","getParentOrThrow","__indent","key","label","i18n","t","onSelect","editor","dispatchCommand","undefined","order","IndentFeatureClient","toolbarFixed","groups","toolbarInline"],"sources":["../../../../src/features/indent/client/index.tsx"],"sourcesContent":["'use client'\n\nimport { INDENT_CONTENT_COMMAND, OUTDENT_CONTENT_COMMAND } from 'lexical'\n\nimport type { ToolbarGroup } from '../../toolbars/types.js'\n\nimport { IndentDecreaseIcon } from '../../../lexical/ui/icons/IndentDecrease/index.js'\nimport { IndentIncreaseIcon } from '../../../lexical/ui/icons/IndentIncrease/index.js'\nimport { createClientFeature } from '../../../utilities/createClientFeature.js'\nimport { toolbarIndentGroupWithItems } from './toolbarIndentGroup.js'\n\nconst toolbarGroups: ToolbarGroup[] = [\n toolbarIndentGroupWithItems([\n {\n ChildComponent: IndentDecreaseIcon,\n isActive: () => false,\n isEnabled: ({ selection }) => {\n if (!selection || !selection?.getNodes()?.length) {\n return false\n }\n for (const node of selection.getNodes()) {\n const parent = node.getParentOrThrow()\n // If at least one node is indented, this should be active\n if (\n ('__indent' in node && (node.__indent as number) > 0) ||\n ('__indent' in parent && parent.__indent > 0)\n ) {\n return true\n }\n }\n return false\n },\n key: 'indentDecrease',\n label: ({ i18n }) => {\n return i18n.t('lexical:indent:decreaseLabel')\n },\n onSelect: ({ editor }) => {\n editor.dispatchCommand(OUTDENT_CONTENT_COMMAND, undefined)\n },\n order: 1,\n },\n {\n ChildComponent: IndentIncreaseIcon,\n isActive: () => false,\n key: 'indentIncrease',\n label: ({ i18n }) => {\n return i18n.t('lexical:indent:increaseLabel')\n },\n onSelect: ({ editor }) => {\n editor.dispatchCommand(INDENT_CONTENT_COMMAND, undefined)\n },\n order: 2,\n },\n ]),\n]\n\nexport const IndentFeatureClient = createClientFeature({\n toolbarFixed: {\n groups: toolbarGroups,\n },\n toolbarInline: {\n groups: toolbarGroups,\n },\n})\n"],"mappings":"AAAA;;AAEA,SAASA,sBAAsB,EAAEC,uBAAuB,QAAQ;AAIhE,SAASC,kBAAkB,QAAQ;AACnC,SAASC,kBAAkB,QAAQ;AACnC,SAASC,mBAAmB,QAAQ;AACpC,SAASC,2BAA2B,QAAQ;AAE5C,MAAMC,aAAA,GAAgC,CACpCD,2BAAA,CAA4B,CAC1B;EACEE,cAAA,EAAgBL,kBAAA;EAChBM,QAAA,EAAUA,CAAA,KAAM;EAChBC,SAAA,EAAWA,CAAC;IAAEC;EAAS,CAAE;IACvB,IAAI,CAACA,SAAA,IAAa,CAACA,SAAA,EAAWC,QAAA,IAAYC,MAAA,EAAQ;MAChD,OAAO;IACT;IACA,KAAK,MAAMC,IAAA,IAAQH,SAAA,CAAUC,QAAQ,IAAI;MACvC,MAAMG,MAAA,GAASD,IAAA,CAAKE,gBAAgB;MACpC;MACA,IACE,UAAC,IAAcF,IAAA,IAAQA,IAAC,CAAKG,QAAQ,GAAc,KAClD,cAAcF,MAAA,IAAUA,MAAA,CAAOE,QAAQ,GAAG,GAC3C;QACA,OAAO;MACT;IACF;IACA,OAAO;EACT;EACAC,GAAA,EAAK;EACLC,KAAA,EAAOA,CAAC;IAAEC;EAAI,CAAE;IACd,OAAOA,IAAA,CAAKC,CAAC,CAAC;EAChB;EACAC,QAAA,EAAUA,CAAC;IAAEC;EAAM,CAAE;IACnBA,MAAA,CAAOC,eAAe,CAACtB,uBAAA,EAAyBuB,SAAA;EAClD;EACAC,KAAA,EAAO;AACT,GACA;EACElB,cAAA,EAAgBJ,kBAAA;EAChBK,QAAA,EAAUA,CAAA,KAAM;EAChBS,GAAA,EAAK;EACLC,KAAA,EAAOA,CAAC;IAAEC;EAAI,CAAE;IACd,OAAOA,IAAA,CAAKC,CAAC,CAAC;EAChB;EACAC,QAAA,EAAUA,CAAC;IAAEC;EAAM,CAAE;IACnBA,MAAA,CAAOC,eAAe,CAACvB,sBAAA,EAAwBwB,SAAA;EACjD;EACAC,KAAA,EAAO;AACT,EACD,EACF;AAED,OAAO,MAAMC,mBAAA,GAAsBtB,mBAAA,CAAoB;EACrDuB,YAAA,EAAc;IACZC,MAAA,EAAQtB;EACV;EACAuB,aAAA,EAAe;IACbD,MAAA,EAAQtB;EACV;AACF","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["INDENT_CONTENT_COMMAND","OUTDENT_CONTENT_COMMAND","IndentDecreaseIcon","IndentIncreaseIcon","createClientFeature","IndentPlugin","toolbarIndentGroupWithItems","toolbarGroups","ChildComponent","isActive","isEnabled","selection","getNodes","length","node","parent","getParentOrThrow","__indent","key","label","i18n","t","onSelect","editor","dispatchCommand","undefined","order","IndentFeatureClient","plugins","Component","position","toolbarFixed","groups","toolbarInline"],"sources":["../../../../src/features/indent/client/index.tsx"],"sourcesContent":["'use client'\n\nimport { INDENT_CONTENT_COMMAND, OUTDENT_CONTENT_COMMAND } from 'lexical'\n\nimport type { ToolbarGroup } from '../../toolbars/types.js'\n\nimport { IndentDecreaseIcon } from '../../../lexical/ui/icons/IndentDecrease/index.js'\nimport { IndentIncreaseIcon } from '../../../lexical/ui/icons/IndentIncrease/index.js'\nimport { createClientFeature } from '../../../utilities/createClientFeature.js'\nimport { IndentPlugin } from './plugins/index.js'\nimport { toolbarIndentGroupWithItems } from './toolbarIndentGroup.js'\n\nconst toolbarGroups: ToolbarGroup[] = [\n toolbarIndentGroupWithItems([\n {\n ChildComponent: IndentDecreaseIcon,\n isActive: () => false,\n isEnabled: ({ selection }) => {\n if (!selection || !selection?.getNodes()?.length) {\n return false\n }\n for (const node of selection.getNodes()) {\n const parent = node.getParentOrThrow()\n // If at least one node is indented, this should be active\n if (\n ('__indent' in node && (node.__indent as number) > 0) ||\n ('__indent' in parent && parent.__indent > 0)\n ) {\n return true\n }\n }\n return false\n },\n key: 'indentDecrease',\n label: ({ i18n }) => {\n return i18n.t('lexical:indent:decreaseLabel')\n },\n onSelect: ({ editor }) => {\n editor.dispatchCommand(OUTDENT_CONTENT_COMMAND, undefined)\n },\n order: 1,\n },\n {\n ChildComponent: IndentIncreaseIcon,\n isActive: () => false,\n key: 'indentIncrease',\n label: ({ i18n }) => {\n return i18n.t('lexical:indent:increaseLabel')\n },\n onSelect: ({ editor }) => {\n editor.dispatchCommand(INDENT_CONTENT_COMMAND, undefined)\n },\n order: 2,\n },\n ]),\n]\n\nexport const IndentFeatureClient = createClientFeature({\n plugins: [\n {\n Component: IndentPlugin,\n position: 'normal',\n },\n ],\n toolbarFixed: {\n groups: toolbarGroups,\n },\n toolbarInline: {\n groups: toolbarGroups,\n },\n})\n"],"mappings":"AAAA;;AAEA,SAASA,sBAAsB,EAAEC,uBAAuB,QAAQ;AAIhE,SAASC,kBAAkB,QAAQ;AACnC,SAASC,kBAAkB,QAAQ;AACnC,SAASC,mBAAmB,QAAQ;AACpC,SAASC,YAAY,QAAQ;AAC7B,SAASC,2BAA2B,QAAQ;AAE5C,MAAMC,aAAA,GAAgC,CACpCD,2BAAA,CAA4B,CAC1B;EACEE,cAAA,EAAgBN,kBAAA;EAChBO,QAAA,EAAUA,CAAA,KAAM;EAChBC,SAAA,EAAWA,CAAC;IAAEC;EAAS,CAAE;IACvB,IAAI,CAACA,SAAA,IAAa,CAACA,SAAA,EAAWC,QAAA,IAAYC,MAAA,EAAQ;MAChD,OAAO;IACT;IACA,KAAK,MAAMC,IAAA,IAAQH,SAAA,CAAUC,QAAQ,IAAI;MACvC,MAAMG,MAAA,GAASD,IAAA,CAAKE,gBAAgB;MACpC;MACA,IACE,UAAC,IAAcF,IAAA,IAAQA,IAAC,CAAKG,QAAQ,GAAc,KAClD,cAAcF,MAAA,IAAUA,MAAA,CAAOE,QAAQ,GAAG,GAC3C;QACA,OAAO;MACT;IACF;IACA,OAAO;EACT;EACAC,GAAA,EAAK;EACLC,KAAA,EAAOA,CAAC;IAAEC;EAAI,CAAE;IACd,OAAOA,IAAA,CAAKC,CAAC,CAAC;EAChB;EACAC,QAAA,EAAUA,CAAC;IAAEC;EAAM,CAAE;IACnBA,MAAA,CAAOC,eAAe,CAACvB,uBAAA,EAAyBwB,SAAA;EAClD;EACAC,KAAA,EAAO;AACT,GACA;EACElB,cAAA,EAAgBL,kBAAA;EAChBM,QAAA,EAAUA,CAAA,KAAM;EAChBS,GAAA,EAAK;EACLC,KAAA,EAAOA,CAAC;IAAEC;EAAI,CAAE;IACd,OAAOA,IAAA,CAAKC,CAAC,CAAC;EAChB;EACAC,QAAA,EAAUA,CAAC;IAAEC;EAAM,CAAE;IACnBA,MAAA,CAAOC,eAAe,CAACxB,sBAAA,EAAwByB,SAAA;EACjD;EACAC,KAAA,EAAO;AACT,EACD,EACF;AAED,OAAO,MAAMC,mBAAA,GAAsBvB,mBAAA,CAAoB;EACrDwB,OAAA,EAAS,CACP;IACEC,SAAA,EAAWxB,YAAA;IACXyB,QAAA,EAAU;EACZ,EACD;EACDC,YAAA,EAAc;IACZC,MAAA,EAAQzB;EACV;EACA0B,aAAA,EAAe;IACbD,MAAA,EAAQzB;EACV;AACF","ignoreList":[]}
@@ -0,0 +1,3 @@
1
+ import type { PluginComponent } from '../../../typesClient.js';
2
+ export declare const IndentPlugin: PluginComponent<undefined>;
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/features/indent/client/plugins/index.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AAE9D,eAAO,MAAM,YAAY,EAAE,eAAe,CAAC,SAAS,CAkDnD,CAAA"}
@@ -0,0 +1,73 @@
1
+ 'use client';
2
+
3
+ import { c as _c } from "react/compiler-runtime";
4
+ import { jsx as _jsx } from "react/jsx-runtime";
5
+ import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js';
6
+ import { TabIndentationPlugin } from '@lexical/react/LexicalTabIndentationPlugin';
7
+ import { mergeRegister } from '@lexical/utils';
8
+ import { COMMAND_PRIORITY_NORMAL, FOCUS_COMMAND, KEY_ESCAPE_COMMAND } from 'lexical';
9
+ import { useEffect, useState } from 'react';
10
+ export const IndentPlugin = () => {
11
+ const $ = _c(8);
12
+ const [editor] = useLexicalComposerContext();
13
+ const [firefoxFlag, setFirefoxFlag] = useState(false);
14
+ let t0;
15
+ let t1;
16
+ if ($[0] !== editor) {
17
+ t0 = () => mergeRegister(editor.registerCommand(FOCUS_COMMAND, () => {
18
+ setFirefoxFlag(false);
19
+ return true;
20
+ }, COMMAND_PRIORITY_NORMAL), editor.registerCommand(KEY_ESCAPE_COMMAND, () => {
21
+ setFirefoxFlag(true);
22
+ editor.getRootElement()?.blur();
23
+ return true;
24
+ }, COMMAND_PRIORITY_NORMAL));
25
+ t1 = [editor, setFirefoxFlag];
26
+ $[0] = editor;
27
+ $[1] = t0;
28
+ $[2] = t1;
29
+ } else {
30
+ t0 = $[1];
31
+ t1 = $[2];
32
+ }
33
+ useEffect(t0, t1);
34
+ let t2;
35
+ let t3;
36
+ if ($[3] !== firefoxFlag || $[4] !== editor) {
37
+ t2 = () => {
38
+ if (!firefoxFlag) {
39
+ return;
40
+ }
41
+ const handleKeyDown = e => {
42
+ if (!["Escape", "Shift"].includes(e.key)) {
43
+ setFirefoxFlag(false);
44
+ }
45
+ if (e.shiftKey && e.key === "Tab") {
46
+ editor.getRootElement()?.parentElement?.focus();
47
+ }
48
+ };
49
+ document.addEventListener("keydown", handleKeyDown);
50
+ return () => {
51
+ document.removeEventListener("keydown", handleKeyDown);
52
+ };
53
+ };
54
+ t3 = [editor, firefoxFlag];
55
+ $[3] = firefoxFlag;
56
+ $[4] = editor;
57
+ $[5] = t2;
58
+ $[6] = t3;
59
+ } else {
60
+ t2 = $[5];
61
+ t3 = $[6];
62
+ }
63
+ useEffect(t2, t3);
64
+ let t4;
65
+ if ($[7] === Symbol.for("react.memo_cache_sentinel")) {
66
+ t4 = _jsx(TabIndentationPlugin, {});
67
+ $[7] = t4;
68
+ } else {
69
+ t4 = $[7];
70
+ }
71
+ return t4;
72
+ };
73
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["c","_c","useLexicalComposerContext","TabIndentationPlugin","mergeRegister","COMMAND_PRIORITY_NORMAL","FOCUS_COMMAND","KEY_ESCAPE_COMMAND","useEffect","useState","IndentPlugin","$","editor","firefoxFlag","setFirefoxFlag","t0","t1","registerCommand","getRootElement","blur","t2","t3","handleKeyDown","e","includes","key","shiftKey","parentElement","focus","document","addEventListener","removeEventListener","t4","Symbol","for","_jsx"],"sources":["../../../../../src/features/indent/client/plugins/index.tsx"],"sourcesContent":["'use client'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js'\nimport { TabIndentationPlugin } from '@lexical/react/LexicalTabIndentationPlugin'\nimport { mergeRegister } from '@lexical/utils'\nimport { COMMAND_PRIORITY_NORMAL, FOCUS_COMMAND, KEY_ESCAPE_COMMAND } from 'lexical'\nimport { useEffect, useState } from 'react'\n\nimport type { PluginComponent } from '../../../typesClient.js'\n\nexport const IndentPlugin: PluginComponent<undefined> = () => {\n const [editor] = useLexicalComposerContext()\n\n const [firefoxFlag, setFirefoxFlag] = useState<boolean>(false)\n\n useEffect(() => {\n return mergeRegister(\n editor.registerCommand<MouseEvent>(\n FOCUS_COMMAND,\n () => {\n setFirefoxFlag(false)\n return true\n },\n COMMAND_PRIORITY_NORMAL,\n ),\n editor.registerCommand(\n KEY_ESCAPE_COMMAND,\n () => {\n setFirefoxFlag(true)\n editor.getRootElement()?.blur()\n return true\n },\n COMMAND_PRIORITY_NORMAL,\n ),\n )\n }, [editor, setFirefoxFlag])\n\n useEffect(() => {\n if (!firefoxFlag) {\n return\n }\n\n const handleKeyDown = (e: KeyboardEvent) => {\n if (!['Escape', 'Shift'].includes(e.key)) {\n setFirefoxFlag(false)\n }\n // Pressing Shift+Tab after blurring refocuses the editor in Firefox\n // we focus parent to allow exiting the editor\n if (e.shiftKey && e.key === 'Tab') {\n editor.getRootElement()?.parentElement?.focus()\n }\n }\n\n document.addEventListener('keydown', handleKeyDown)\n return () => {\n document.removeEventListener('keydown', handleKeyDown)\n }\n }, [editor, firefoxFlag])\n\n return <TabIndentationPlugin />\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AAEA,SAASC,yBAAyB,QAAQ;AAC1C,SAASC,oBAAoB,QAAQ;AACrC,SAASC,aAAa,QAAQ;AAC9B,SAASC,uBAAuB,EAAEC,aAAa,EAAEC,kBAAkB,QAAQ;AAC3E,SAASC,SAAS,EAAEC,QAAQ,QAAQ;AAIpC,OAAO,MAAMC,YAAA,GAA2CA,CAAA;EAAA,MAAAC,CAAA,GAAAV,EAAA;EACtD,OAAAW,MAAA,IAAiBV,yBAAA;EAEjB,OAAAW,WAAA,EAAAC,cAAA,IAAsCL,QAAA,MAAkB;EAAA,IAAAM,EAAA;EAAA,IAAAC,EAAA;EAAA,IAAAL,CAAA,QAAAC,MAAA;IAE9CG,EAAA,GAAAA,CAAA,KACDX,aAAA,CACLQ,MAAA,CAAAK,eAAA,CAAAX,aAAA;MAGIQ,cAAA,MAAe;MAAA;IAAA,GAAAT,uBAGjB,GAEFO,MAAA,CAAAK,eAAA,CAAAV,kBAAA;MAGIO,cAAA,KAAe;MACfF,MAAA,CAAAM,cAAA,CAAqB,GAAAC,IAAA;MAAA;IAAA,GAAAd,uBAGvB;IAGHW,EAAA,IAACJ,MAAA,EAAQE,cAAA;IAAeH,CAAA,MAAAC,MAAA;IAAAD,CAAA,MAAAI,EAAA;IAAAJ,CAAA,MAAAK,EAAA;EAAA;IAAAD,EAAA,GAAAJ,CAAA;IAAAK,EAAA,GAAAL,CAAA;EAAA;EApB3BH,SAAA,CAAUO,EAoBV,EAAGC,EAAwB;EAAA,IAAAI,EAAA;EAAA,IAAAC,EAAA;EAAA,IAAAV,CAAA,QAAAE,WAAA,IAAAF,CAAA,QAAAC,MAAA;IAEjBQ,EAAA,GAAAA,CAAA;MAAA,KACHP,WAAA;QAAA;MAAA;MAIL,MAAAS,aAAA,GAAAC,CAAA;QAAA,KACO,CAAC,UAAU,SAAAC,QAAA,CAAkBD,CAAA,CAAAE,GAAK;UACrCX,cAAA,MAAe;QAAA;QAAA,IAIbS,CAAA,CAAAG,QAAA,IAAcH,CAAA,CAAAE,GAAA,KAAU;UAC1Bb,MAAA,CAAAM,cAAA,CAAqB,GAAAS,aAAA,EAAAC,KAAA;QAAA;MAAA;MAIzBC,QAAA,CAAAC,gBAAA,CAA0B,WAAWR,aAAA;MAAA;QAEnCO,QAAA,CAAAE,mBAAA,CAA6B,WAAWT,aAAA;MAAA;IAAA;IAEzCD,EAAA,IAACT,MAAA,EAAQC,WAAA;IAAYF,CAAA,MAAAE,WAAA;IAAAF,CAAA,MAAAC,MAAA;IAAAD,CAAA,MAAAS,EAAA;IAAAT,CAAA,MAAAU,EAAA;EAAA;IAAAD,EAAA,GAAAT,CAAA;IAAAU,EAAA,GAAAV,CAAA;EAAA;EApBxBH,SAAA,CAAUY,EAoBV,EAAGC,EAAqB;EAAA,IAAAW,EAAA;EAAA,IAAArB,CAAA,QAAAsB,MAAA,CAAAC,GAAA;IAEjBF,EAAA,GAAAG,IAAA,CAAAhC,oBAAA,IAAC;IAAAQ,CAAA,MAAAqB,EAAA;EAAA;IAAAA,EAAA,GAAArB,CAAA;EAAA;EAAA,OAADqB,EAAC;AAAA,CACV","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"LexicalEditor.d.ts","sourceRoot":"","sources":["../../src/lexical/LexicalEditor.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAG9B,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAA;AAIhE,OAAO,sBAAsB,CAAA;AAQ7B,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAClC;IACE,kBAAkB,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,CAAA;CAC3D,GAAG,IAAI,CAAC,oBAAoB,EAAE,cAAc,GAAG,UAAU,CAAC,CA6K5D,CAAA"}
1
+ {"version":3,"file":"LexicalEditor.d.ts","sourceRoot":"","sources":["../../src/lexical/LexicalEditor.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAG9B,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAA;AAIhE,OAAO,sBAAsB,CAAA;AAQ7B,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAClC;IACE,kBAAkB,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,CAAA;CAC3D,GAAG,IAAI,CAAC,oBAAoB,EAAE,cAAc,GAAG,UAAU,CAAC,CA2K5D,CAAA"}
@@ -7,7 +7,6 @@ import { LexicalErrorBoundary } from '@lexical/react/LexicalErrorBoundary.js';
7
7
  import { HistoryPlugin } from '@lexical/react/LexicalHistoryPlugin.js';
8
8
  import { OnChangePlugin } from '@lexical/react/LexicalOnChangePlugin.js';
9
9
  import { RichTextPlugin } from '@lexical/react/LexicalRichTextPlugin.js';
10
- import { TabIndentationPlugin } from '@lexical/react/LexicalTabIndentationPlugin.js';
11
10
  import { BLUR_COMMAND, COMMAND_PRIORITY_LOW, FOCUS_COMMAND } from 'lexical';
12
11
  import * as React from 'react';
13
12
  import { useEffect, useState } from 'react';
@@ -165,6 +164,7 @@ export const LexicalEditor = props => {
165
164
  children: _jsx("div", {
166
165
  className: "editor",
167
166
  ref: onRef,
167
+ tabIndex: -1,
168
168
  children: _jsx(LexicalContentEditable, {})
169
169
  })
170
170
  }),
@@ -176,7 +176,7 @@ export const LexicalEditor = props => {
176
176
  onChange: t6
177
177
  }), t7, editor.isEditable() && _jsxs(React.Fragment, {
178
178
  children: [_jsx(HistoryPlugin, {}), editorConfig?.features?.markdownTransformers?.length > 0 && _jsx(MarkdownShortcutPlugin, {})]
179
- }), _jsx(TabIndentationPlugin, {}), editorConfig.features.plugins?.map(_temp3), editorConfig.features.plugins?.map(_temp4)]
179
+ }), editorConfig.features.plugins?.map(_temp3), editorConfig.features.plugins?.map(_temp4)]
180
180
  }), editorConfig.features.plugins?.map(_temp5)]
181
181
  });
182
182
  $[8] = editorConfig.features;
@@ -1 +1 @@
1
- {"version":3,"file":"LexicalEditor.js","names":["c","_c","useLexicalComposerContext","LexicalErrorBoundary","HistoryPlugin","OnChangePlugin","RichTextPlugin","TabIndentationPlugin","BLUR_COMMAND","COMMAND_PRIORITY_LOW","FOCUS_COMMAND","React","useEffect","useState","useEditorConfigContext","EditorPlugin","AddBlockHandlePlugin","DraggableBlockPlugin","MarkdownShortcutPlugin","SlashMenuPlugin","TextPlugin","LexicalContentEditable","LexicalEditor","props","$","editorConfig","editorContainerRef","onChange","editorConfigContext","editor","floatingAnchorElem","setFloatingAnchorElem","t0","Symbol","for","_floatingAnchorElem","onRef","t1","t2","uuid","console","error","parentEditor","registerChild","handleFocus","focusEditor","handleBlur","blurEditor","unregisterFocus","registerCommand","unregisterBlur","unregisterChild","isSmallWidthViewport","setIsSmallWidthViewport","t3","t4","updateViewPortWidth","isNextSmallWidthViewport","window","matchMedia","matches","addEventListener","removeEventListener","t5","features","t6","editorState","editor_0","tags","has","size","t7","_jsxs","Fragment","children","isEditable","_jsx","anchorElem","plugins","map","plugin_1","plugin","position","desktopOnly","clientProps","key","_temp","className","ref","_temp2","contentEditable","ignoreSelectionChange","markdownTransformers","length","_temp3","_temp4","_temp5","plugin_0","plugin_2","plugin_3","plugin_4"],"sources":["../../src/lexical/LexicalEditor.tsx"],"sourcesContent":["'use client'\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js'\nimport { LexicalErrorBoundary } from '@lexical/react/LexicalErrorBoundary.js'\nimport { HistoryPlugin } from '@lexical/react/LexicalHistoryPlugin.js'\nimport { OnChangePlugin } from '@lexical/react/LexicalOnChangePlugin.js'\nimport { RichTextPlugin } from '@lexical/react/LexicalRichTextPlugin.js'\nimport { TabIndentationPlugin } from '@lexical/react/LexicalTabIndentationPlugin.js'\nimport { BLUR_COMMAND, COMMAND_PRIORITY_LOW, FOCUS_COMMAND } from 'lexical'\nimport * as React from 'react'\nimport { useEffect, useState } from 'react'\n\nimport type { LexicalProviderProps } from './LexicalProvider.js'\n\nimport { useEditorConfigContext } from './config/client/EditorConfigProvider.js'\nimport { EditorPlugin } from './EditorPlugin.js'\nimport './LexicalEditor.scss'\nimport { AddBlockHandlePlugin } from './plugins/handles/AddBlockHandlePlugin/index.js'\nimport { DraggableBlockPlugin } from './plugins/handles/DraggableBlockPlugin/index.js'\nimport { MarkdownShortcutPlugin } from './plugins/MarkdownShortcut/index.js'\nimport { SlashMenuPlugin } from './plugins/SlashMenu/index.js'\nimport { TextPlugin } from './plugins/TextPlugin/index.js'\nimport { LexicalContentEditable } from './ui/ContentEditable.js'\n\nexport const LexicalEditor: React.FC<\n {\n editorContainerRef: React.RefObject<HTMLDivElement | null>\n } & Pick<LexicalProviderProps, 'editorConfig' | 'onChange'>\n> = (props) => {\n const { editorConfig, editorContainerRef, onChange } = props\n const editorConfigContext = useEditorConfigContext()\n const [editor] = useLexicalComposerContext()\n\n const [floatingAnchorElem, setFloatingAnchorElem] = useState<HTMLDivElement | null>(null)\n const onRef = (_floatingAnchorElem: HTMLDivElement) => {\n if (_floatingAnchorElem !== null) {\n setFloatingAnchorElem(_floatingAnchorElem)\n }\n }\n\n useEffect(() => {\n if (!editorConfigContext?.uuid) {\n console.error('Lexical Editor must be used within an EditorConfigProvider')\n return\n }\n if (editorConfigContext?.parentEditor?.uuid) {\n editorConfigContext.parentEditor?.registerChild(editorConfigContext.uuid, editorConfigContext)\n }\n\n const handleFocus = () => {\n editorConfigContext.focusEditor(editorConfigContext)\n }\n\n const handleBlur = () => {\n editorConfigContext.blurEditor(editorConfigContext)\n }\n\n const unregisterFocus = editor.registerCommand<MouseEvent>(\n FOCUS_COMMAND,\n () => {\n handleFocus()\n return true\n },\n COMMAND_PRIORITY_LOW,\n )\n\n const unregisterBlur = editor.registerCommand<MouseEvent>(\n BLUR_COMMAND,\n () => {\n handleBlur()\n return true\n },\n COMMAND_PRIORITY_LOW,\n )\n\n return () => {\n unregisterFocus()\n unregisterBlur()\n editorConfigContext.parentEditor?.unregisterChild?.(editorConfigContext.uuid)\n }\n }, [editor, editorConfigContext])\n\n const [isSmallWidthViewport, setIsSmallWidthViewport] = useState<boolean>(false)\n\n useEffect(() => {\n const updateViewPortWidth = () => {\n const isNextSmallWidthViewport = window.matchMedia('(max-width: 768px)').matches\n\n if (isNextSmallWidthViewport !== isSmallWidthViewport) {\n setIsSmallWidthViewport(isNextSmallWidthViewport)\n }\n }\n updateViewPortWidth()\n window.addEventListener('resize', updateViewPortWidth)\n\n return () => {\n window.removeEventListener('resize', updateViewPortWidth)\n }\n }, [isSmallWidthViewport])\n\n return (\n <React.Fragment>\n {editorConfig.features.plugins?.map((plugin) => {\n if (plugin.position === 'aboveContainer') {\n return <EditorPlugin clientProps={plugin.clientProps} key={plugin.key} plugin={plugin} />\n }\n })}\n <div className=\"editor-container\" ref={editorContainerRef}>\n {editorConfig.features.plugins?.map((plugin) => {\n if (plugin.position === 'top') {\n return (\n <EditorPlugin clientProps={plugin.clientProps} key={plugin.key} plugin={plugin} />\n )\n }\n })}\n <RichTextPlugin\n contentEditable={\n <div className=\"editor-scroller\">\n <div className=\"editor\" ref={onRef}>\n <LexicalContentEditable />\n </div>\n </div>\n }\n ErrorBoundary={LexicalErrorBoundary}\n />\n <TextPlugin features={editorConfig.features} />\n <OnChangePlugin\n // Selection changes can be ignored here, reducing the\n // frequency that the FieldComponent and Payload receive updates.\n // Selection changes are only needed if you are saving selection state\n ignoreSelectionChange\n onChange={(editorState, editor, tags) => {\n // Ignore any onChange event triggered by focus only\n if (!tags.has('focus') || tags.size > 1) {\n if (onChange != null) {\n onChange(editorState, editor, tags)\n }\n }\n }}\n />\n {floatingAnchorElem && (\n <React.Fragment>\n {!isSmallWidthViewport && editor.isEditable() && (\n <React.Fragment>\n <DraggableBlockPlugin anchorElem={floatingAnchorElem} />\n <AddBlockHandlePlugin anchorElem={floatingAnchorElem} />\n </React.Fragment>\n )}\n {editorConfig.features.plugins?.map((plugin) => {\n if (\n plugin.position === 'floatingAnchorElem' &&\n !(plugin.desktopOnly === true && isSmallWidthViewport)\n ) {\n return (\n <EditorPlugin\n anchorElem={floatingAnchorElem}\n clientProps={plugin.clientProps}\n key={plugin.key}\n plugin={plugin}\n />\n )\n }\n })}\n {editor.isEditable() && (\n <React.Fragment>\n <SlashMenuPlugin anchorElem={floatingAnchorElem} />\n </React.Fragment>\n )}\n </React.Fragment>\n )}\n {editor.isEditable() && (\n <React.Fragment>\n <HistoryPlugin />\n {editorConfig?.features?.markdownTransformers?.length > 0 && <MarkdownShortcutPlugin />}\n </React.Fragment>\n )}\n\n <TabIndentationPlugin />\n {editorConfig.features.plugins?.map((plugin) => {\n if (plugin.position === 'normal') {\n return (\n <EditorPlugin clientProps={plugin.clientProps} key={plugin.key} plugin={plugin} />\n )\n }\n })}\n {editorConfig.features.plugins?.map((plugin) => {\n if (plugin.position === 'bottom') {\n return (\n <EditorPlugin clientProps={plugin.clientProps} key={plugin.key} plugin={plugin} />\n )\n }\n })}\n </div>\n {editorConfig.features.plugins?.map((plugin) => {\n if (plugin.position === 'belowContainer') {\n return <EditorPlugin clientProps={plugin.clientProps} key={plugin.key} plugin={plugin} />\n }\n })}\n </React.Fragment>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"LexicalEditor.js","names":["c","_c","useLexicalComposerContext","LexicalErrorBoundary","HistoryPlugin","OnChangePlugin","RichTextPlugin","BLUR_COMMAND","COMMAND_PRIORITY_LOW","FOCUS_COMMAND","React","useEffect","useState","useEditorConfigContext","EditorPlugin","AddBlockHandlePlugin","DraggableBlockPlugin","MarkdownShortcutPlugin","SlashMenuPlugin","TextPlugin","LexicalContentEditable","LexicalEditor","props","$","editorConfig","editorContainerRef","onChange","editorConfigContext","editor","floatingAnchorElem","setFloatingAnchorElem","t0","Symbol","for","_floatingAnchorElem","onRef","t1","t2","uuid","console","error","parentEditor","registerChild","handleFocus","focusEditor","handleBlur","blurEditor","unregisterFocus","registerCommand","unregisterBlur","unregisterChild","isSmallWidthViewport","setIsSmallWidthViewport","t3","t4","updateViewPortWidth","isNextSmallWidthViewport","window","matchMedia","matches","addEventListener","removeEventListener","t5","features","t6","editorState","editor_0","tags","has","size","t7","_jsxs","Fragment","children","isEditable","_jsx","anchorElem","plugins","map","plugin_1","plugin","position","desktopOnly","clientProps","key","_temp","className","ref","_temp2","contentEditable","tabIndex","ignoreSelectionChange","markdownTransformers","length","_temp3","_temp4","_temp5","plugin_0","plugin_2","plugin_3","plugin_4"],"sources":["../../src/lexical/LexicalEditor.tsx"],"sourcesContent":["'use client'\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js'\nimport { LexicalErrorBoundary } from '@lexical/react/LexicalErrorBoundary.js'\nimport { HistoryPlugin } from '@lexical/react/LexicalHistoryPlugin.js'\nimport { OnChangePlugin } from '@lexical/react/LexicalOnChangePlugin.js'\nimport { RichTextPlugin } from '@lexical/react/LexicalRichTextPlugin.js'\nimport { BLUR_COMMAND, COMMAND_PRIORITY_LOW, FOCUS_COMMAND } from 'lexical'\nimport * as React from 'react'\nimport { useEffect, useState } from 'react'\n\nimport type { LexicalProviderProps } from './LexicalProvider.js'\n\nimport { useEditorConfigContext } from './config/client/EditorConfigProvider.js'\nimport { EditorPlugin } from './EditorPlugin.js'\nimport './LexicalEditor.scss'\nimport { AddBlockHandlePlugin } from './plugins/handles/AddBlockHandlePlugin/index.js'\nimport { DraggableBlockPlugin } from './plugins/handles/DraggableBlockPlugin/index.js'\nimport { MarkdownShortcutPlugin } from './plugins/MarkdownShortcut/index.js'\nimport { SlashMenuPlugin } from './plugins/SlashMenu/index.js'\nimport { TextPlugin } from './plugins/TextPlugin/index.js'\nimport { LexicalContentEditable } from './ui/ContentEditable.js'\n\nexport const LexicalEditor: React.FC<\n {\n editorContainerRef: React.RefObject<HTMLDivElement | null>\n } & Pick<LexicalProviderProps, 'editorConfig' | 'onChange'>\n> = (props) => {\n const { editorConfig, editorContainerRef, onChange } = props\n const editorConfigContext = useEditorConfigContext()\n const [editor] = useLexicalComposerContext()\n\n const [floatingAnchorElem, setFloatingAnchorElem] = useState<HTMLDivElement | null>(null)\n const onRef = (_floatingAnchorElem: HTMLDivElement) => {\n if (_floatingAnchorElem !== null) {\n setFloatingAnchorElem(_floatingAnchorElem)\n }\n }\n\n useEffect(() => {\n if (!editorConfigContext?.uuid) {\n console.error('Lexical Editor must be used within an EditorConfigProvider')\n return\n }\n if (editorConfigContext?.parentEditor?.uuid) {\n editorConfigContext.parentEditor?.registerChild(editorConfigContext.uuid, editorConfigContext)\n }\n\n const handleFocus = () => {\n editorConfigContext.focusEditor(editorConfigContext)\n }\n\n const handleBlur = () => {\n editorConfigContext.blurEditor(editorConfigContext)\n }\n\n const unregisterFocus = editor.registerCommand<MouseEvent>(\n FOCUS_COMMAND,\n () => {\n handleFocus()\n return true\n },\n COMMAND_PRIORITY_LOW,\n )\n\n const unregisterBlur = editor.registerCommand<MouseEvent>(\n BLUR_COMMAND,\n () => {\n handleBlur()\n return true\n },\n COMMAND_PRIORITY_LOW,\n )\n\n return () => {\n unregisterFocus()\n unregisterBlur()\n editorConfigContext.parentEditor?.unregisterChild?.(editorConfigContext.uuid)\n }\n }, [editor, editorConfigContext])\n\n const [isSmallWidthViewport, setIsSmallWidthViewport] = useState<boolean>(false)\n\n useEffect(() => {\n const updateViewPortWidth = () => {\n const isNextSmallWidthViewport = window.matchMedia('(max-width: 768px)').matches\n\n if (isNextSmallWidthViewport !== isSmallWidthViewport) {\n setIsSmallWidthViewport(isNextSmallWidthViewport)\n }\n }\n updateViewPortWidth()\n window.addEventListener('resize', updateViewPortWidth)\n\n return () => {\n window.removeEventListener('resize', updateViewPortWidth)\n }\n }, [isSmallWidthViewport])\n\n return (\n <React.Fragment>\n {editorConfig.features.plugins?.map((plugin) => {\n if (plugin.position === 'aboveContainer') {\n return <EditorPlugin clientProps={plugin.clientProps} key={plugin.key} plugin={plugin} />\n }\n })}\n <div className=\"editor-container\" ref={editorContainerRef}>\n {editorConfig.features.plugins?.map((plugin) => {\n if (plugin.position === 'top') {\n return (\n <EditorPlugin clientProps={plugin.clientProps} key={plugin.key} plugin={plugin} />\n )\n }\n })}\n <RichTextPlugin\n contentEditable={\n <div className=\"editor-scroller\">\n <div className=\"editor\" ref={onRef} tabIndex={-1}>\n <LexicalContentEditable />\n </div>\n </div>\n }\n ErrorBoundary={LexicalErrorBoundary}\n />\n <TextPlugin features={editorConfig.features} />\n <OnChangePlugin\n // Selection changes can be ignored here, reducing the\n // frequency that the FieldComponent and Payload receive updates.\n // Selection changes are only needed if you are saving selection state\n ignoreSelectionChange\n onChange={(editorState, editor, tags) => {\n // Ignore any onChange event triggered by focus only\n if (!tags.has('focus') || tags.size > 1) {\n if (onChange != null) {\n onChange(editorState, editor, tags)\n }\n }\n }}\n />\n {floatingAnchorElem && (\n <React.Fragment>\n {!isSmallWidthViewport && editor.isEditable() && (\n <React.Fragment>\n <DraggableBlockPlugin anchorElem={floatingAnchorElem} />\n <AddBlockHandlePlugin anchorElem={floatingAnchorElem} />\n </React.Fragment>\n )}\n {editorConfig.features.plugins?.map((plugin) => {\n if (\n plugin.position === 'floatingAnchorElem' &&\n !(plugin.desktopOnly === true && isSmallWidthViewport)\n ) {\n return (\n <EditorPlugin\n anchorElem={floatingAnchorElem}\n clientProps={plugin.clientProps}\n key={plugin.key}\n plugin={plugin}\n />\n )\n }\n })}\n {editor.isEditable() && (\n <React.Fragment>\n <SlashMenuPlugin anchorElem={floatingAnchorElem} />\n </React.Fragment>\n )}\n </React.Fragment>\n )}\n {editor.isEditable() && (\n <React.Fragment>\n <HistoryPlugin />\n {editorConfig?.features?.markdownTransformers?.length > 0 && <MarkdownShortcutPlugin />}\n </React.Fragment>\n )}\n {editorConfig.features.plugins?.map((plugin) => {\n if (plugin.position === 'normal') {\n return (\n <EditorPlugin clientProps={plugin.clientProps} key={plugin.key} plugin={plugin} />\n )\n }\n })}\n {editorConfig.features.plugins?.map((plugin) => {\n if (plugin.position === 'bottom') {\n return (\n <EditorPlugin clientProps={plugin.clientProps} key={plugin.key} plugin={plugin} />\n )\n }\n })}\n </div>\n {editorConfig.features.plugins?.map((plugin) => {\n if (plugin.position === 'belowContainer') {\n return <EditorPlugin clientProps={plugin.clientProps} key={plugin.key} plugin={plugin} />\n }\n })}\n </React.Fragment>\n )\n}\n"],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@payloadcms/richtext-lexical",
3
- "version": "3.2.2-canary.380cfb0",
3
+ "version": "3.2.2-canary.49cfe5d",
4
4
  "description": "The officially supported Lexical richtext adapter for Payload",
5
5
  "homepage": "https://payloadcms.com",
6
6
  "repository": {
@@ -342,11 +342,11 @@
342
342
  "mdast-util-from-markdown": "2.0.2",
343
343
  "mdast-util-mdx-jsx": "3.1.3",
344
344
  "micromark-extension-mdx-jsx": "3.0.1",
345
- "react-error-boundary": "4.1.1",
345
+ "react-error-boundary": "4.1.2",
346
346
  "ts-essentials": "10.0.3",
347
347
  "uuid": "10.0.0",
348
- "@payloadcms/translations": "3.2.2-canary.380cfb0",
349
- "@payloadcms/ui": "3.2.2-canary.380cfb0"
348
+ "@payloadcms/translations": "3.2.2-canary.49cfe5d",
349
+ "@payloadcms/ui": "3.2.2-canary.49cfe5d"
350
350
  },
351
351
  "devDependencies": {
352
352
  "@babel/cli": "^7.24.5",
@@ -367,7 +367,7 @@
367
367
  "eslint-plugin-react-compiler": "19.0.0-beta-a7bf2bd-20241110",
368
368
  "swc-plugin-transform-remove-imports": "1.15.0",
369
369
  "@payloadcms/eslint-config": "3.0.0",
370
- "payload": "3.2.2-canary.380cfb0"
370
+ "payload": "3.2.2-canary.49cfe5d"
371
371
  },
372
372
  "peerDependencies": {
373
373
  "@faceless-ui/modal": "3.0.0-beta.2",
@@ -384,8 +384,8 @@
384
384
  "lexical": "0.20.0",
385
385
  "react": "^19.0.0 || ^19.0.0-rc-65a56d0e-20241020",
386
386
  "react-dom": "^19.0.0 || ^19.0.0-rc-65a56d0e-20241020",
387
- "@payloadcms/next": "3.2.2-canary.380cfb0",
388
- "payload": "3.2.2-canary.380cfb0"
387
+ "@payloadcms/next": "3.2.2-canary.49cfe5d",
388
+ "payload": "3.2.2-canary.49cfe5d"
389
389
  },
390
390
  "engines": {
391
391
  "node": "^18.20.2 || >=20.9.0"