@payloadcms/richtext-lexical 4.0.0-beta.2 → 4.0.0-beta.4
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.
- package/dist/exports/client/Field-334JNLRF.js +2 -0
- package/dist/exports/client/Field-334JNLRF.js.map +7 -0
- package/dist/exports/client/{RelationshipComponent-YCPAKOL7.js → RelationshipComponent-TVK6I4W4.js} +2 -2
- package/dist/exports/client/chunk-BEKGION5.js +2 -0
- package/dist/exports/client/chunk-BEKGION5.js.map +7 -0
- package/dist/exports/client/{chunk-WSAPGI3Z.js → chunk-EA5BHQ2T.js} +1 -1
- package/dist/exports/client/{chunk-WSAPGI3Z.js.map → chunk-EA5BHQ2T.js.map} +1 -1
- package/dist/exports/client/chunk-FAJJXXCW.js +2 -0
- package/dist/exports/client/{chunk-3LRZDIIG.js.map → chunk-FAJJXXCW.js.map} +2 -2
- package/dist/exports/client/{chunk-5VIL27GI.js → chunk-IYBYNEKX.js} +1 -1
- package/dist/exports/client/{chunk-5VIL27GI.js.map → chunk-IYBYNEKX.js.map} +1 -1
- package/dist/exports/client/chunk-SE5IITBK.js +2 -0
- package/dist/exports/client/chunk-SE5IITBK.js.map +7 -0
- package/dist/exports/client/{component-6DQLENIE.js → component-QENB4QTS.js} +2 -2
- package/dist/exports/client/componentInline-AU7IBNY7.js +2 -0
- package/dist/exports/client/index.js +27 -27
- package/dist/exports/client/index.js.map +3 -3
- package/dist/features/align/client/index.js.map +1 -1
- package/dist/features/blocks/client/component/BlockContent.js.map +1 -1
- package/dist/features/blocks/client/component/components/BlockCollapsible.js.map +1 -1
- package/dist/features/blocks/client/component/components/BlockEditButton.js.map +1 -1
- package/dist/features/blocks/client/component/components/BlockRemoveButton.js.map +1 -1
- package/dist/features/blocks/client/component/index.d.ts.map +1 -1
- package/dist/features/blocks/client/component/index.js +38 -16
- package/dist/features/blocks/client/component/index.js.map +1 -1
- package/dist/features/blocks/client/componentInline/components/InlineBlockContainer.js.map +1 -1
- package/dist/features/blocks/client/componentInline/components/InlineBlockEditButton.js.map +1 -1
- package/dist/features/blocks/client/componentInline/components/InlineBlockLabel.js.map +1 -1
- package/dist/features/blocks/client/componentInline/components/InlineBlockRemoveButton.js.map +1 -1
- package/dist/features/blocks/client/componentInline/index.d.ts.map +1 -1
- package/dist/features/blocks/client/componentInline/index.js +5 -11
- package/dist/features/blocks/client/componentInline/index.js.map +1 -1
- package/dist/features/blocks/client/getCachedFormStateIfDataMatches.js.map +1 -1
- package/dist/features/blocks/client/plugin/index.js.map +1 -1
- package/dist/features/blocks/premade/CodeBlock/Component/Block.js +121 -78
- package/dist/features/blocks/premade/CodeBlock/Component/Block.js.map +1 -1
- package/dist/features/blocks/premade/CodeBlock/Component/Code.js +142 -87
- package/dist/features/blocks/premade/CodeBlock/Component/Code.js.map +1 -1
- package/dist/features/converters/lexicalToHtml/sync/types.d.ts.map +1 -1
- package/dist/features/converters/lexicalToHtml/sync/types.js.map +1 -1
- package/dist/features/debug/jsxConverter/client/plugin/index.js.map +1 -1
- package/dist/features/debug/testRecorder/client/plugin/index.js.map +1 -1
- package/dist/features/debug/treeView/client/plugin/index.js.map +1 -1
- package/dist/features/heading/client/index.js.map +1 -1
- package/dist/features/horizontalRule/client/plugin/index.js.map +1 -1
- package/dist/features/indent/client/index.d.ts.map +1 -1
- package/dist/features/indent/client/index.js +0 -2
- package/dist/features/indent/client/index.js.map +1 -1
- package/dist/features/indent/server/i18n.d.ts.map +1 -1
- package/dist/features/indent/server/i18n.js.map +1 -1
- package/dist/features/link/client/plugins/autoLink/index.js.map +1 -1
- package/dist/features/link/client/plugins/floatingLinkEditor/LinkEditor/index.d.ts.map +1 -1
- package/dist/features/link/client/plugins/floatingLinkEditor/LinkEditor/index.js +10 -2
- package/dist/features/link/client/plugins/floatingLinkEditor/LinkEditor/index.js.map +1 -1
- package/dist/features/link/client/plugins/link/index.js.map +1 -1
- package/dist/features/link/markdownTransformer.js +2 -2
- package/dist/features/link/markdownTransformer.js.map +1 -1
- package/dist/features/link/server/baseFields.js.map +1 -1
- package/dist/features/lists/shared/schema.d.ts.map +1 -1
- package/dist/features/lists/shared/schema.js.map +1 -1
- package/dist/features/relationship/client/drawer/index.js.map +1 -1
- package/dist/features/relationship/client/plugins/index.js.map +1 -1
- package/dist/features/relationship/client/utils/useEnabledRelationships.js.map +1 -1
- package/dist/features/table/client/plugins/TableActionMenuPlugin/index.css +1 -1
- package/dist/features/table/client/plugins/TableActionMenuPlugin/index.js.map +1 -1
- package/dist/features/table/client/plugins/TableCellResizerPlugin/index.js +6 -6
- package/dist/features/table/client/plugins/TableCellResizerPlugin/index.js.map +1 -1
- package/dist/features/table/client/plugins/TableHoverActionsPlugin/index.js.map +1 -1
- package/dist/features/table/client/plugins/TablePlugin/index.js +54 -18
- package/dist/features/table/client/plugins/TablePlugin/index.js.map +1 -1
- package/dist/features/table/client/utils/useDebounce.js.map +1 -1
- package/dist/features/textState/defaultColors.js +1 -1
- package/dist/features/textState/defaultColors.js.map +1 -1
- package/dist/features/toolbars/fixed/client/Toolbar/horizontalWheelScroll.js.map +1 -1
- package/dist/features/toolbars/fixed/client/Toolbar/index.js +126 -70
- package/dist/features/toolbars/fixed/client/Toolbar/index.js.map +1 -1
- package/dist/features/toolbars/inline/client/Toolbar/index.js +67 -35
- package/dist/features/toolbars/inline/client/Toolbar/index.js.map +1 -1
- package/dist/features/toolbars/shared/ToolbarButton/index.d.ts.map +1 -1
- package/dist/features/toolbars/shared/ToolbarButton/index.js +26 -2
- package/dist/features/toolbars/shared/ToolbarButton/index.js.map +1 -1
- package/dist/features/toolbars/shared/ToolbarDropdown/DropDown.js +137 -72
- package/dist/features/toolbars/shared/ToolbarDropdown/DropDown.js.map +1 -1
- package/dist/features/toolbars/shared/ToolbarDropdown/index.d.ts.map +1 -1
- package/dist/features/toolbars/shared/ToolbarDropdown/index.js +22 -6
- package/dist/features/toolbars/shared/ToolbarDropdown/index.js.map +1 -1
- package/dist/features/toolbars/shared/useToolbarKeyboardNavigation.js +100 -70
- package/dist/features/toolbars/shared/useToolbarKeyboardNavigation.js.map +1 -1
- package/dist/features/upload/client/drawer/index.js.map +1 -1
- package/dist/features/upload/client/plugin/index.js.map +1 -1
- package/dist/field/RenderLexical/index.js.map +1 -1
- package/dist/field/ViewSelector.js +12 -4
- package/dist/field/ViewSelector.js.map +1 -1
- package/dist/field/bundled.css +1 -1
- package/dist/field/index.js.map +1 -1
- package/dist/i18n.d.ts.map +1 -1
- package/dist/i18n.js +44 -0
- package/dist/i18n.js.map +1 -1
- package/dist/lexical/LexicalEditor.js.map +1 -1
- package/dist/lexical/plugins/ClipboardPlugin/index.js.map +1 -1
- package/dist/lexical/plugins/DecoratorPlugin/index.js.map +1 -1
- package/dist/lexical/plugins/InsertParagraphAtEnd/index.js.map +1 -1
- package/dist/lexical/plugins/MarkdownShortcut/index.js.map +1 -1
- package/dist/lexical/plugins/NodeViewOverridePlugin/index.js.map +1 -1
- package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.js +234 -87
- package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.js.map +1 -1
- package/dist/lexical/plugins/SlashMenu/useMenuTriggerMatch.js.map +1 -1
- package/dist/lexical/plugins/TextPlugin/index.js.map +1 -1
- package/dist/lexical/plugins/handles/AddBlockHandlePlugin/index.js.map +1 -1
- package/dist/lexical/plugins/handles/DraggableBlockPlugin/index.css +16 -0
- package/dist/lexical/plugins/handles/DraggableBlockPlugin/index.d.ts.map +1 -1
- package/dist/lexical/plugins/handles/DraggableBlockPlugin/index.js +126 -38
- package/dist/lexical/plugins/handles/DraggableBlockPlugin/index.js.map +1 -1
- package/dist/lexical/plugins/handles/DraggableBlockPlugin/moveBlock.d.ts +7 -0
- package/dist/lexical/plugins/handles/DraggableBlockPlugin/moveBlock.d.ts.map +1 -0
- package/dist/lexical/plugins/handles/DraggableBlockPlugin/moveBlock.js +15 -0
- package/dist/lexical/plugins/handles/DraggableBlockPlugin/moveBlock.js.map +1 -0
- package/dist/lexical/plugins/handles/DraggableBlockPlugin/useKeyboardReordering.d.ts.map +1 -1
- package/dist/lexical/plugins/handles/DraggableBlockPlugin/useKeyboardReordering.js +9 -12
- package/dist/lexical/plugins/handles/DraggableBlockPlugin/useKeyboardReordering.js.map +1 -1
- package/dist/lexical/ui/ContentEditable.js.map +1 -1
- package/dist/lexical/utils/nodeFormat.d.ts.map +1 -1
- package/dist/lexical/utils/nodeFormat.js +0 -2
- package/dist/lexical/utils/nodeFormat.js.map +1 -1
- package/dist/lexical/utils/url.d.ts.map +1 -1
- package/dist/lexical/utils/url.js +1 -1
- package/dist/lexical/utils/url.js.map +1 -1
- package/dist/populateGraphQL/populate.js.map +1 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js.map +1 -1
- package/dist/utilities/buildEditorState.d.ts.map +1 -1
- package/dist/utilities/buildEditorState.js.map +1 -1
- package/dist/utilities/fieldsDrawer/Drawer.js +36 -36
- package/dist/utilities/fieldsDrawer/Drawer.js.map +1 -1
- package/dist/utilities/fieldsDrawer/DrawerContent.d.ts.map +1 -1
- package/dist/utilities/fieldsDrawer/DrawerContent.js +6 -9
- package/dist/utilities/fieldsDrawer/DrawerContent.js.map +1 -1
- package/dist/utilities/fieldsDrawer/useDrawerSubmit.js.map +1 -1
- package/dist/utilities/fieldsDrawer/useLexicalDocumentDrawer.js.map +1 -1
- package/dist/utilities/fieldsDrawer/useLexicalDrawer.js.map +1 -1
- package/dist/utilities/fieldsDrawer/useLexicalListDrawer.js.map +1 -1
- package/dist/utilities/initLexicalFeatures.d.ts.map +1 -1
- package/dist/utilities/initLexicalFeatures.js +38 -4
- package/dist/utilities/initLexicalFeatures.js.map +1 -1
- package/dist/utilities/useLexicalFeature.js +15 -6
- package/dist/utilities/useLexicalFeature.js.map +1 -1
- package/dist/utilities/useRunDeprioritized.js.map +1 -1
- package/package.json +32 -35
- package/dist/exports/client/Field-W2ABOM7M.js +0 -2
- package/dist/exports/client/Field-W2ABOM7M.js.map +0 -7
- package/dist/exports/client/chunk-3LRZDIIG.js +0 -2
- package/dist/exports/client/chunk-E6LSRRP2.js +0 -2
- package/dist/exports/client/chunk-E6LSRRP2.js.map +0 -7
- package/dist/exports/client/chunk-ZQX5HXUL.js +0 -2
- package/dist/exports/client/chunk-ZQX5HXUL.js.map +0 -7
- package/dist/exports/client/componentInline-HNE5G4TE.js +0 -2
- /package/dist/exports/client/{RelationshipComponent-YCPAKOL7.js.map → RelationshipComponent-TVK6I4W4.js.map} +0 -0
- /package/dist/exports/client/{component-6DQLENIE.js.map → component-QENB4QTS.js.map} +0 -0
- /package/dist/exports/client/{componentInline-HNE5G4TE.js.map → componentInline-AU7IBNY7.js.map} +0 -0
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/utilities/fieldsDrawer/Drawer.tsx", "../../../src/utilities/fieldsDrawer/DrawerContent.tsx", "../../../src/features/upload/client/drawer/commands.ts", "../../../src/features/upload/client/nodes/UploadNode.tsx", "../../../src/features/upload/server/nodes/conversions.ts", "../../../src/features/upload/server/nodes/UploadNode.tsx", "../../../src/features/upload/client/component/pending/index.tsx"],
|
|
4
|
+
"sourcesContent": ["'use client'\nimport type { ClientField, Data, FormState, JsonObject } from 'payload'\n\nimport { Drawer, EditDepthProvider, useModal } from '@payloadcms/ui'\nimport React from 'react'\n\nimport { DrawerContent } from './DrawerContent.js'\nimport { useDrawerSubmit } from './useDrawerSubmit.js'\n\nexport type FieldsDrawerProps = {\n readonly className?: string\n readonly data?: Data\n readonly drawerSlug: string\n readonly drawerTitle?: string\n readonly featureKey: string\n readonly fieldMapOverride?: ClientField[]\n readonly handleDrawerSubmit: (fields: FormState, data: JsonObject) => void\n readonly schemaFieldsPathOverride?: string\n readonly schemaPath: string\n readonly schemaPathSuffix?: string\n}\n\n/**\n * This FieldsDrawer component can be used to easily create a Drawer that contains a form with fields within your feature.\n * The fields are taken directly from the schema map based on your `featureKey` and `schemaPathSuffix`. Thus, this can only\n * be used if you provide your field schema inside the `generateSchemaMap` prop of your feature.server.ts.\n */\nexport const FieldsDrawer: React.FC<FieldsDrawerProps> = ({\n className,\n data,\n drawerSlug,\n drawerTitle,\n featureKey,\n fieldMapOverride,\n handleDrawerSubmit,\n schemaFieldsPathOverride,\n schemaPath,\n schemaPathSuffix,\n}) => {\n const { closeModal } = useModal()\n const { headerActions, submitRef } = useDrawerSubmit()\n\n // The Drawer only renders its children (and itself) if it's open. Thus, by extracting the main content\n // to DrawerContent, this should be faster\n return (\n <EditDepthProvider>\n <Drawer\n className={className}\n headerActions={headerActions}\n slug={drawerSlug}\n title={drawerTitle ?? ''}\n >\n <DrawerContent\n data={data}\n featureKey={featureKey}\n fieldMapOverride={fieldMapOverride}\n handleDrawerSubmit={(args, args2) => {\n // Simply close drawer - no need for useLexicalDrawer here as at this point,\n // we don't need to restore the cursor position. This is handled by the useEffect in useLexicalDrawer.\n closeModal(drawerSlug)\n\n // Actual drawer submit logic needs to be triggered after the drawer is closed.\n // That's because the lexical selection / cursor restore logic that is striggerer by\n // `useLexicalDrawer` neeeds to be triggered before any editor.update calls that may happen\n // in the `handleDrawerSubmit` function.\n setTimeout(() => {\n handleDrawerSubmit(args, args2)\n }, 1)\n }}\n schemaFieldsPathOverride={schemaFieldsPathOverride}\n schemaPath={schemaPath}\n schemaPathSuffix={schemaPathSuffix}\n submitRef={submitRef}\n />\n </Drawer>\n </EditDepthProvider>\n )\n}\n", "'use client'\nimport type { FormState } from 'payload'\n\nimport { useLexicalEditable } from '@lexical/react/useLexicalEditable'\nimport {\n Form,\n RenderFields,\n useDocumentForm,\n useDocumentInfo,\n useEffectEvent,\n useServerFunctions,\n} from '@payloadcms/ui'\nimport { abortAndIgnore } from '@payloadcms/ui/shared'\nimport React, { useCallback, useEffect, useRef, useState } from 'react'\nimport { v4 as uuid } from 'uuid'\n\nimport type { FieldsDrawerProps } from './Drawer.js'\n\nimport { useEditorConfigContext } from '../../lexical/config/client/EditorConfigProvider.js'\nimport { RegisterFormSubmit } from './useDrawerSubmit.js'\nimport './index.css'\n\nexport const DrawerContent: React.FC<\n {\n submitRef: React.RefObject<(() => void) | null>\n } & Omit<FieldsDrawerProps, 'drawerSlug' | 'drawerTitle'>\n> = ({\n data,\n featureKey,\n fieldMapOverride,\n handleDrawerSubmit,\n schemaFieldsPathOverride,\n schemaPath,\n schemaPathSuffix,\n submitRef,\n}) => {\n const { id, collectionSlug, getDocPreferences, globalSlug } = useDocumentInfo()\n const { fields: parentDocumentFields } = useDocumentForm()\n const isEditable = useLexicalEditable()\n\n const onChangeAbortControllerRef = useRef(new AbortController())\n\n const [initialState, setInitialState] = useState<false | FormState | undefined>(false)\n\n const {\n fieldProps: { featureClientSchemaMap },\n } = useEditorConfigContext()\n\n const { getFormState } = useServerFunctions()\n\n const schemaFieldsPath =\n schemaFieldsPathOverride ??\n `${schemaPath}.lexical_internal_feature.${featureKey}${schemaPathSuffix ? `.${schemaPathSuffix}` : ''}`\n\n const fields: any = fieldMapOverride ?? featureClientSchemaMap[featureKey]?.[schemaFieldsPath] // Field Schema\n\n // Parent autosave updates this context without starting a new drawer editing session.\n const getParentDocumentFields = useEffectEvent(() => parentDocumentFields)\n\n useEffect(() => {\n const controller = new AbortController()\n\n const awaitInitialState = async () => {\n const { state } = await getFormState({\n id,\n collectionSlug,\n data: data ?? {},\n docPermissions: {\n fields: true,\n },\n docPreferences: await getDocPreferences(),\n documentFormState: getParentDocumentFields(),\n globalSlug,\n initialBlockData: data,\n operation: 'update',\n readOnly: !isEditable,\n renderAllFields: true,\n schemaPath: schemaFieldsPath,\n signal: controller.signal,\n })\n\n setInitialState(state)\n }\n\n void awaitInitialState()\n\n return () => {\n abortAndIgnore(controller)\n }\n }, [\n schemaFieldsPath,\n id,\n data,\n getFormState,\n collectionSlug,\n isEditable,\n globalSlug,\n getDocPreferences,\n ])\n\n const onChange = useCallback(\n async ({ formState: prevFormState }: { formState: FormState }) => {\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 documentFormState: parentDocumentFields,\n formState: prevFormState,\n globalSlug,\n initialBlockFormState: prevFormState,\n operation: 'update',\n readOnly: !isEditable,\n schemaPath: schemaFieldsPath,\n signal: controller.signal,\n })\n\n if (!state) {\n return prevFormState\n }\n\n return state\n },\n [\n getFormState,\n id,\n isEditable,\n collectionSlug,\n getDocPreferences,\n parentDocumentFields,\n globalSlug,\n schemaFieldsPath,\n ],\n )\n\n // cleanup effect\n useEffect(() => {\n return () => {\n abortAndIgnore(onChangeAbortControllerRef.current)\n }\n }, [])\n\n if (initialState === false) {\n return null\n }\n\n return (\n <Form\n beforeSubmit={[onChange]}\n className=\"fields-drawer\"\n disableValidationOnSubmit\n fields={Array.isArray(fields) ? fields : []}\n initialState={initialState}\n onChange={[onChange]}\n onSubmit={handleDrawerSubmit}\n uuid={uuid()}\n >\n <RenderFields\n fields={Array.isArray(fields) ? fields : []}\n forceRender\n parentIndexPath=\"\"\n parentPath=\"\" // See Blocks feature path for details as for why this is empty\n parentSchemaPath={schemaFieldsPath}\n permissions={true}\n readOnly={!isEditable}\n />\n <RegisterFormSubmit submitRef={submitRef} />\n </Form>\n )\n}\n", "'use client'\nimport type { LexicalCommand } from 'lexical'\n\nimport { createCommand } from 'lexical'\n\nexport const INSERT_UPLOAD_WITH_DRAWER_COMMAND: LexicalCommand<{\n replace: { nodeKey: string } | false\n}> = createCommand('INSERT_UPLOAD_WITH_DRAWER_COMMAND')\n", "'use client'\nimport type { DOMConversionMap, EditorConfig, LexicalEditor, LexicalNode } from 'lexical'\nimport type { JSX } from 'react'\n\nimport ObjectID from 'bson-objectid'\nimport { $applyNodeReplacement } from 'lexical'\nimport * as React from 'react'\n\nimport type { Internal_UploadData, SerializedUploadNode, UploadData } from '../../server/schema.js'\n\nimport { $convertUploadElement } from '../../server/nodes/conversions.js'\nimport { UploadServerNode } from '../../server/nodes/UploadNode.js'\nimport { PendingUploadComponent } from '../component/pending/index.js'\n\nconst RawUploadComponent = React.lazy(() =>\n import('../../client/component/index.js').then((module) => ({ default: module.UploadComponent })),\n)\n\nexport class UploadNode extends UploadServerNode {\n static override clone(node: UploadServerNode): UploadServerNode {\n return super.clone(node)\n }\n\n static override getType(): string {\n return super.getType()\n }\n\n static override importDOM(): DOMConversionMap<HTMLImageElement> {\n return {\n img: (node) => ({\n conversion: (domNode) => $convertUploadElement(domNode, $createUploadNode),\n priority: 0,\n }),\n }\n }\n\n static override importJSON(serializedNode: SerializedUploadNode): UploadNode {\n const importedData: Internal_UploadData = {\n id: serializedNode.id,\n fields: serializedNode.fields,\n pending: (serializedNode as Internal_UploadData).pending,\n relationTo: serializedNode.relationTo,\n value: serializedNode.value,\n }\n\n const node = $createUploadNode({ data: importedData })\n node.setFormat(serializedNode.format)\n\n return node\n }\n\n override decorate(editor?: LexicalEditor, config?: EditorConfig): JSX.Element {\n if ((this.__data as Internal_UploadData).pending) {\n return <PendingUploadComponent />\n }\n return (\n <RawUploadComponent\n className={config?.theme?.upload ?? 'LexicalEditorTheme__upload'}\n data={this.__data}\n format={this.__format}\n nodeKey={this.getKey()}\n />\n )\n }\n\n override exportJSON(): SerializedUploadNode {\n return super.exportJSON()\n }\n}\n\nexport function $createUploadNode({\n data,\n}: {\n data: Omit<UploadData, 'id'> & Partial<Pick<UploadData, 'id'>>\n}): UploadNode {\n if (!data?.id) {\n data.id = new ObjectID.default().toHexString()\n }\n\n return $applyNodeReplacement(new UploadNode({ data: data as UploadData }))\n}\n\nexport function $isUploadNode(node: LexicalNode | null | undefined): node is UploadNode {\n return node instanceof UploadNode\n}\n", "// This file contains functions used to convert dom elements to upload or pending upload lexical nodes. It requires the actual node\n// creation functions to be passed in to stay compatible with both client and server code.\nimport type { DOMConversionOutput } from 'lexical'\n\nimport ObjectID from 'bson-objectid'\n\nimport type { $createUploadNode } from '../../client/nodes/UploadNode.js'\nimport type { Internal_UploadData } from '../schema.js'\nimport type { $createUploadServerNode } from './UploadNode.js'\n\nexport function isGoogleDocCheckboxImg(img: HTMLImageElement): boolean {\n return (\n img.parentElement != null &&\n img.parentElement.tagName === 'LI' &&\n img.previousSibling === null &&\n img.getAttribute('aria-roledescription') === 'checkbox'\n )\n}\n\nexport function $convertUploadElement(\n domNode: HTMLImageElement,\n $createNode: typeof $createUploadNode | typeof $createUploadServerNode,\n): DOMConversionOutput | null {\n if (domNode.hasAttribute('data-lexical-pending-upload-form-id')) {\n const formID = domNode.getAttribute('data-lexical-pending-upload-form-id')\n\n if (formID != null) {\n const node = $createNode({\n data: {\n pending: {\n formID,\n src: domNode.getAttribute('src') || '',\n },\n } as Internal_UploadData,\n })\n return { node }\n }\n }\n if (\n domNode.hasAttribute('data-lexical-upload-relation-to') &&\n domNode.hasAttribute('data-lexical-upload-id')\n ) {\n const id = domNode.getAttribute('data-lexical-upload-id')\n const relationTo = domNode.getAttribute('data-lexical-upload-relation-to')\n\n if (id != null && relationTo != null) {\n const node = $createNode({\n data: {\n fields: {},\n relationTo,\n value: id,\n },\n })\n return { node }\n }\n }\n\n // Create pending UploadNode. Auto-Upload functionality will then be handled by the node transform\n const node = $createNode({\n data: {\n pending: {\n formID: new ObjectID.default().toHexString(),\n src: domNode.getAttribute('src') || '',\n },\n } as Internal_UploadData,\n })\n\n return { node }\n}\n", "import type {\n DOMConversionMap,\n DOMExportOutput,\n EditorConfig,\n ElementFormatType,\n LexicalNode,\n NodeKey,\n} from 'lexical'\nimport type { JSX } from 'react'\n\nimport { DecoratorBlockNode } from '@lexical/react/LexicalDecoratorBlockNode.js'\nimport { addClassNamesToElement } from '@lexical/utils'\nimport ObjectID from 'bson-objectid'\nimport { $applyNodeReplacement } from 'lexical'\n\nimport type { Internal_UploadData, SerializedUploadNode, UploadData } from '../schema.js'\n\nimport { $convertUploadElement } from './conversions.js'\n\nexport class UploadServerNode extends DecoratorBlockNode {\n __data: UploadData\n\n constructor({\n data,\n format,\n key,\n }: {\n data: UploadData\n format?: ElementFormatType\n key?: NodeKey\n }) {\n super(format, key)\n this.__data = data\n }\n\n static override clone(node: UploadServerNode): UploadServerNode {\n return new this({\n data: node.__data,\n format: node.__format,\n key: node.__key,\n })\n }\n\n static override getType(): string {\n return 'upload'\n }\n\n static override importDOM(): DOMConversionMap<HTMLImageElement> {\n return {\n img: (node) => ({\n conversion: (domNode) => $convertUploadElement(domNode, $createUploadServerNode),\n priority: 0,\n }),\n }\n }\n\n static override importJSON(serializedNode: SerializedUploadNode): UploadServerNode {\n const importedData: Internal_UploadData = {\n id: serializedNode.id,\n fields: serializedNode.fields,\n pending: (serializedNode as Internal_UploadData).pending,\n relationTo: serializedNode.relationTo,\n value: serializedNode.value,\n }\n\n const node = $createUploadServerNode({ data: importedData })\n node.setFormat(serializedNode.format)\n\n return node\n }\n\n static isInline(): false {\n return false\n }\n\n override createDOM(config?: EditorConfig): HTMLElement {\n const element = document.createElement('div')\n addClassNamesToElement(element, config?.theme?.upload)\n return element\n }\n\n override decorate(): JSX.Element {\n return null as unknown as JSX.Element\n }\n\n override exportDOM(): DOMExportOutput {\n const element = document.createElement('img')\n const data = this.__data as Internal_UploadData\n if (data.pending) {\n element.setAttribute('data-lexical-pending-upload-form-id', String(data?.pending?.formID))\n element.setAttribute('src', data?.pending?.src || '')\n } else {\n element.setAttribute('data-lexical-upload-id', String(data?.value))\n element.setAttribute('data-lexical-upload-relation-to', data?.relationTo)\n }\n\n return { element }\n }\n\n override exportJSON(): SerializedUploadNode {\n return {\n ...super.exportJSON(),\n ...this.getData(),\n type: 'upload',\n }\n }\n\n getData(): UploadData {\n return this.getLatest().__data\n }\n\n setData(data: UploadData): void {\n const writable = this.getWritable()\n writable.__data = data\n }\n\n override updateDOM(): false {\n return false\n }\n}\n\nexport function $createUploadServerNode({\n data,\n}: {\n data: Omit<UploadData, 'id'> & Partial<Pick<UploadData, 'id'>>\n}): UploadServerNode {\n if (!data?.id) {\n data.id = new ObjectID.default().toHexString()\n }\n return $applyNodeReplacement(new UploadServerNode({ data: data as UploadData }))\n}\n\nexport function $isUploadServerNode(\n node: LexicalNode | null | undefined,\n): node is UploadServerNode {\n return node instanceof UploadServerNode\n}\n", "'use client'\n\nimport { ShimmerEffect } from '@payloadcms/ui'\n\nexport const PendingUploadComponent = (): React.ReactNode => {\n return (\n <div className={'lexical-upload'}>\n <ShimmerEffect height={'95px'} width={'203px'} />\n </div>\n )\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["c", "_c", "Drawer", "EditDepthProvider", "useModal", "useLexicalEditable", "Form", "RenderFields", "useDocumentForm", "useDocumentInfo", "useEffectEvent", "useServerFunctions", "abortAndIgnore", "useCallback", "useEffect", "useRef", "useState", "v4", "uuid", "DrawerContent", "data", "featureKey", "fieldMapOverride", "handleDrawerSubmit", "schemaFieldsPathOverride", "schemaPath", "schemaPathSuffix", "submitRef", "id", "collectionSlug", "getDocPreferences", "globalSlug", "useDocumentInfo", "parentDocumentFields", "fields", "useDocumentForm", "useLexicalEditable", "isEditable", "onChangeAbortControllerRef", "useRef", "AbortController", "fieldProps", "useEditorConfigContext", "getFormState", "useServerFunctions", "schemaFieldsPath", "getParentDocumentFields", "useEffectEvent", "useEffect", "awaitInitialState", "state", "docPermissions", "docPreferences", "documentFormState", "initialBlockData", "operation", "readOnly", "renderAllFields", "setInitialState", "abortAndIgnore", "controller", "onChange", "formState", "state_0", "prevFormState", "initialBlockFormState", "initialState", "_jsxs", "Form", "beforeSubmit", "className", "disableValidationOnSubmit", "isArray", "onSubmit", "uuid", "_jsx", "RenderFields", "forceRender", "parentIndexPath", "parentPath", "parentSchemaPath", "permissions", "FieldsDrawer", "t0", "$", "_c", "className", "data", "drawerSlug", "drawerTitle", "featureKey", "fieldMapOverride", "handleDrawerSubmit", "schemaFieldsPathOverride", "schemaPath", "schemaPathSuffix", "closeModal", "useModal", "headerActions", "submitRef", "useDrawerSubmit", "t1", "t2", "args", "args2", "setTimeout", "_jsx", "EditDepthProvider", "children", "Drawer", "slug", "title", "DrawerContent", "createCommand", "INSERT_UPLOAD_WITH_DRAWER_COMMAND", "ObjectID", "$applyNodeReplacement", "React", "ObjectID", "$convertUploadElement", "domNode", "$createNode", "hasAttribute", "formID", "getAttribute", "node", "data", "pending", "src", "id", "relationTo", "fields", "value", "ObjectID", "default", "toHexString", "DecoratorBlockNode", "addClassNamesToElement", "ObjectID", "$applyNodeReplacement", "UploadServerNode", "DecoratorBlockNode", "__data", "constructor", "data", "format", "key", "clone", "node", "__format", "__key", "getType", "importDOM", "img", "conversion", "domNode", "$convertUploadElement", "$createUploadServerNode", "priority", "importJSON", "serializedNode", "importedData", "id", "fields", "pending", "relationTo", "value", "setFormat", "isInline", "createDOM", "config", "element", "document", "createElement", "addClassNamesToElement", "theme", "upload", "decorate", "exportDOM", "setAttribute", "String", "formID", "src", "exportJSON", "getData", "type", "getLatest", "setData", "writable", "getWritable", "updateDOM", "ObjectID", "default", "toHexString", "$applyNodeReplacement", "ShimmerEffect", "PendingUploadComponent", "_jsx", "className", "height", "width", "RawUploadComponent", "lazy", "then", "module", "default", "UploadComponent", "UploadNode", "UploadServerNode", "clone", "node", "getType", "importDOM", "img", "conversion", "domNode", "$convertUploadElement", "$createUploadNode", "priority", "importJSON", "serializedNode", "importedData", "id", "fields", "pending", "relationTo", "value", "data", "setFormat", "format", "decorate", "editor", "config", "__data", "_jsx", "PendingUploadComponent", "className", "theme", "upload", "__format", "nodeKey", "getKey", "exportJSON", "ObjectID", "toHexString", "$applyNodeReplacement", "$isUploadNode"]
|
|
7
|
+
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import{c as _}from"react/compiler-runtime";import{jsx as b}from"react/jsx-runtime";import{useLexicalComposerContext as h}from"@lexical/react/LexicalComposerContext";import{useDocumentDrawer as v,useModal as E}from"@payloadcms/ui";import{$getPreviousSelection as P,$getSelection as W,$setSelection as q}from"lexical";import{useEffect as y,useState as O}from"react";var J=j=>{let e=_(25),[o]=h(),[n,L]=O(null),[c,k]=O(!1),[d,g,M]=v(j),{closeDrawer:x,drawerSlug:t,openDrawer:C}=M,{modalState:i}=E(),a;e[0]!==o?(a=()=>{o.read(()=>{let l=W()??P();L(l)}),k(!0)},e[0]=o,e[1]=a):a=e[1];let s=a,u;e[2]!==o||e[3]!==n?(u=()=>{n&&o.update(()=>{q(n.clone())},{discrete:!0,skipTransforms:!0})},e[2]=o,e[3]=n,e[4]=u):u=e[4];let m=u,f;e[5]!==x?(f=()=>{x()},e[5]=x,e[6]=f):f=e[6];let T=f,D,p;e[7]!==t||e[8]!==i||e[9]!==m||e[10]!==c?(D=()=>{if(!c)return;let l=i[t];l&&!l?.isOpen&&(k(!1),setTimeout(()=>{m()},1))},p=[i,t,m,c],e[7]=t,e[8]=i,e[9]=m,e[10]=c,e[11]=D,e[12]=p):(D=e[11],p=e[12]),y(D,p);let S;e[13]!==C||e[14]!==s?(S=()=>{s(),C()},e[13]=C,e[14]=s,e[15]=S):S=e[15];let $=S,r;e[16]!==g||e[17]!==s?(r=l=>b(g,{...l,onClick:s}),e[16]=g,e[17]=s,e[18]=r):r=e[18];let w;return e[19]!==d||e[20]!==T||e[21]!==t||e[22]!==$||e[23]!==r?(w={closeDocumentDrawer:T,DocumentDrawer:d,documentDrawerSlug:t,DocumentDrawerToggler:r,openDocumentDrawer:$},e[19]=d,e[20]=T,e[21]=t,e[22]=$,e[23]=r,e[24]=w):w=e[24],w};export{J as a};
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
2
|
+
//# sourceMappingURL=chunk-EA5BHQ2T.js.map
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/utilities/fieldsDrawer/useLexicalDocumentDrawer.tsx"],
|
|
4
4
|
"sourcesContent": ["'use client'\nimport type { UseDocumentDrawer } from '@payloadcms/ui'\nimport type { BaseSelection } from 'lexical'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext'\nimport { useDocumentDrawer, useModal } from '@payloadcms/ui'\nimport { $getPreviousSelection, $getSelection, $setSelection } from 'lexical'\nimport { useCallback, useEffect, useState } from 'react'\n\n/**\n *\n * Wrapper around useDocumentDrawer that restores and saves selection state (cursor position) when opening and closing the drawer.\n * By default, the lexical cursor position may be lost when opening a drawer and clicking somewhere on that drawer.\n */\nexport const useLexicalDocumentDrawer = (\n args: Parameters<UseDocumentDrawer>[0],\n): {\n closeDocumentDrawer: () => void\n DocumentDrawer: ReturnType<UseDocumentDrawer>[0]\n documentDrawerSlug: string\n DocumentDrawerToggler: ReturnType<UseDocumentDrawer>[1]\n openDocumentDrawer: () => void\n} => {\n const [editor] = useLexicalComposerContext()\n const [selectionState, setSelectionState] = useState<BaseSelection | null>(null)\n const [wasOpen, setWasOpen] = useState<boolean>(false)\n\n const [\n DocumentDrawer,\n DocumentDrawerToggler,\n { closeDrawer: closeDrawer, drawerSlug: documentDrawerSlug, openDrawer },\n ] = useDocumentDrawer(args)\n const { modalState } = useModal()\n\n const storeSelection = useCallback(() => {\n editor.read(() => {\n const selection = $getSelection() ?? $getPreviousSelection()\n setSelectionState(selection)\n })\n setWasOpen(true)\n }, [editor])\n\n const restoreSelection = useCallback(() => {\n if (selectionState) {\n editor.update(\n () => {\n $setSelection(selectionState.clone())\n },\n { discrete: true, skipTransforms: true },\n )\n }\n }, [editor, selectionState])\n\n const closeDocumentDrawer = () => {\n //restoreSelection() // Should already be stored by the useEffect below\n closeDrawer()\n }\n\n // We need to handle drawer closing via a useEffect, as toggleDrawer / closeDrawer will not be triggered if the drawer\n // is closed by clicking outside of the drawer. This useEffect will handle everything.\n useEffect(() => {\n if (!wasOpen) {\n return\n }\n\n const thisModalState = modalState[documentDrawerSlug]\n // Exists in modalState (thus has opened at least once before) and is closed\n if (thisModalState && !thisModalState?.isOpen) {\n setWasOpen(false)\n setTimeout(() => {\n restoreSelection()\n }, 1)\n }\n }, [modalState, documentDrawerSlug, restoreSelection, wasOpen])\n\n const openDocumentDrawer = useCallback(() => {\n storeSelection()\n openDrawer()\n }, [storeSelection, openDrawer])\n\n return {\n closeDocumentDrawer,\n DocumentDrawer,\n documentDrawerSlug,\n DocumentDrawerToggler: (props) => <DocumentDrawerToggler {...props} onClick={storeSelection} />,\n openDocumentDrawer,\n }\n}\n"],
|
|
5
|
-
"mappings": "AAAA,OAAAA,KAAAC,MAAA,iEAIA,OAASC,6BAAAA,MAAiC,wCAC1C,OAASC,qBAAAA,EAAmBC,YAAAA,MAAgB,iBAC5C,OAASC,yBAAAA,EAAuBC,iBAAAA,EAAeC,iBAAAA,MAAqB,UACpE,OAAsBC,aAAAA,EAAWC,YAAAA,MAAgB,QAO1C,IAAMC,EAA2BC,GAAA,CAAA,IAAAC,EAAAX,EAAA,EAAA,EAStC,CAAAY,CAAA,EAAiBX,EAAA,EACjB,CAAAY,EAAAC,CAAA,EAA4CN,
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["c", "_c", "useLexicalComposerContext", "useDocumentDrawer", "useModal", "$getPreviousSelection", "$getSelection", "$setSelection", "useEffect", "useState", "useLexicalDocumentDrawer", "args", "$", "editor", "selectionState", "setSelectionState", "wasOpen", "setWasOpen", "DocumentDrawer", "DocumentDrawerToggler", "t0", "closeDrawer", "drawerSlug", "documentDrawerSlug", "openDrawer", "modalState", "t1", "read", "selection", "storeSelection", "t2", "update", "clone", "discrete", "skipTransforms", "restoreSelection", "t3", "closeDocumentDrawer", "t4", "t5", "thisModalState", "isOpen", "setTimeout", "t6", "openDocumentDrawer", "t7", "props", "_jsx", "onClick", "t8"]
|
|
7
7
|
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
var z=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u";import{c as me}from"react/compiler-runtime";import{useRef as pe}from"react";function ft(i){let e=me(2),n=i===void 0?500:i,o=pe(void 0),t;return e[0]!==n?(t=l=>new Promise(c=>{let s=()=>{l(),c()};"requestIdleCallback"in window?("cancelIdleCallback"in window&&o.current!==void 0&&cancelIdleCallback(o.current),o.current=requestIdleCallback(s,{timeout:n})):ge().then(s)}),e[0]=n,e[1]=t):t=e[1],t}function ge(){return new Promise(i=>{setTimeout(i,100),requestAnimationFrame(()=>{setTimeout(i,0)})})}import{jsx as _e}from"react/jsx-runtime";import{useControllableState as we}from"@payloadcms/ui";import{createContext as ye,use as Oe,useMemo as xe}from"react";var Q=ye({currentView:"default",inheritable:!1,setCurrentView:()=>{}}),_t=i=>{let e=be(),n=i.currentView!==void 0,o=e.inheritable&&(!!e.views||!!e.hasExplicitCurrentView),t=n||e.inheritable&&!!e.hasExplicitCurrentView,{children:r,currentView:l,inheritable:c,views:s}={children:i.children,currentView:o?e.currentView:i.currentView,inheritable:e.inheritable||i.inheritable,views:o&&e.views?e.views:i.views},[u,a]=we(l,"default"),h=s&&u!=="default"&&!s[u]?"default":u,m=xe(()=>{let y=s?s[h]:void 0;return{currentView:h,currentViewMap:y,hasExplicitCurrentView:t,inheritable:c,isControlledByParent:o,setCurrentView:a,views:s}},[h,c,t,o,a,s]);return _e(Q,{value:m,children:r})};function be(){return Oe(Q)}var H=class{_x;_y;constructor(e,n){this._x=e,this._y=n}calcDeltaXTo({x:e}){return this.x-e}calcDeltaYTo({y:e}){return this.y-e}calcDistanceTo(e){return Math.sqrt(Math.pow(this.calcDeltaXTo(e),2)+Math.pow(this.calcDeltaYTo(e),2))}calcHorizontalDistanceTo(e){return Math.abs(this.calcDeltaXTo(e))}calcVerticalDistance(e){return Math.abs(this.calcDeltaYTo(e))}equals({x:e,y:n}){return this.x===e&&this.y===n}get x(){return this._x}get y(){return this._y}};function J(i){return i instanceof H}import{jsx as Fe}from"react/jsx-runtime";import{useLexicalComposerContext as Ke}from"@lexical/react/LexicalComposerContext.js";import{mergeRegister as ze}from"@lexical/utils";import{$getSelection as U,$isRangeSelection as F,$isTextNode as Qe,COMMAND_PRIORITY_LOW as Je,createCommand as Ge,getDOMSelection as Ze}from"lexical";import{useCallback as se,useEffect as le,useState as et}from"react";import*as q from"react";import{c as X}from"react/compiler-runtime";import{useLexicalComposerContext as te}from"@lexical/react/LexicalComposerContext.js";import{getScrollParent as Ce,mergeRegister as G}from"@lexical/utils";import{$getSelection as ne,$isRangeSelection as Se,$setSelection as Me,COMMAND_PRIORITY_LOW as Re,COMMAND_PRIORITY_NORMAL as $,createCommand as De,KEY_ARROW_DOWN_COMMAND as Te,KEY_ARROW_UP_COMMAND as ve,KEY_ENTER_COMMAND as Ee,KEY_ESCAPE_COMMAND as Ie,KEY_TAB_COMMAND as Ne}from"lexical";import{useEffect as B,useLayoutEffect as ke,useRef as Ae,useState as Le}from"react";var Be="slash-menu-popup",oe=i=>{let e=document.getElementById("slash-menu");if(!e)return;let n=e.getBoundingClientRect();n.top+n.height>window.innerHeight&&e.scrollIntoView({block:"center"}),n.top<0&&e.scrollIntoView({block:"center"}),i.scrollIntoView({block:"nearest"})};function Pe(i,e,n){let o=n;for(let t=o;t<=e.length;t++)i.substring(i.length-t)===e.substring(0,t)&&(o=t);return o}function Ve(i){let e=ne();if(!Se(e)||!e.isCollapsed())return;let n=e.anchor;if(n.type!=="text")return;let o=n.getNode();if(!o.isSimpleText())return;let t=n.offset,r=o.getTextContent().slice(0,t),l=i.replaceableString.length,c=Pe(r,i.matchingString,l),s=t-c;if(s<0)return;let u;return s===0?[u]=o.splitText(t):[,u]=o.splitText(s,t),u}function Z(i,e){let n=i.getBoundingClientRect(),o=e.getBoundingClientRect();return n.top>o.top&&n.top<o.bottom}function $e(i,e,n,o){let t=X(7),[r]=te(),l,c;t[0]!==r||t[1]!==n||t[2]!==o||t[3]!==i||t[4]!==e?(l=()=>{let s=e.current;if(s!=null&&i!=null){let u=r.getRootElement(),a=u!=null?Ce(u,!1):document.body,h=!1,m=Z(s,a),y=function(){h||(window.requestAnimationFrame(function(){n(),h=!1}),h=!0);let d=Z(s,a);d!==m&&(m=d,o?.(d))},f=new ResizeObserver(n);return window.addEventListener("resize",n),document.addEventListener("scroll",y,{capture:!0,passive:!0}),f.observe(s),()=>{f.disconnect(),window.removeEventListener("resize",n),document.removeEventListener("scroll",y,!0)}}},c=[r,o,n,i,e],t[0]=r,t[1]=n,t[2]=o,t[3]=i,t[4]=e,t[5]=l,t[6]=c):(l=t[5],c=t[6]),B(l,c)}var ee=De("SCROLL_TYPEAHEAD_OPTION_INTO_VIEW_COMMAND");function ie(i){let e=X(50),{anchorElementRef:n,close:o,editor:t,groups:r,menuRenderFn:l,resolution:c,shouldSplitNodeWithQuery:s}=i,u=s===void 0?!1:s,[a,h]=Le(null),m=c.match&&c.match.matchingString||"",y;e[0]!==t?(y=g=>{let p=t.getRootElement();p!==null&&(p.setAttribute("aria-activedescendant",`${Be}__item-${g.key}`),h(g.key))},e[0]=t,e[1]=y):y=e[1];let f=y,d;e[2]!==r||e[3]!==m||e[4]!==f?(d=()=>{if(r!==null&&m!=null){let g=r.flatMap(qe);if(g.length){let p=g[0];f(p)}}},e[2]=r,e[3]=m,e[4]=f,e[5]=d):d=e[5];let _=d,O;e[6]!==_?(O=()=>{_()},e[6]=_,e[7]=O):O=e[7];let S;e[8]!==m||e[9]!==_?(S=[m,_],e[8]=m,e[9]=_,e[10]=S):S=e[10],B(O,S);let x;e[11]!==o||e[12]!==t||e[13]!==c.match||e[14]!==u?(x=g=>{o(),t.update(()=>{let p=c.match!=null&&u?Ve(c.match):null;p&&p.remove()}),setTimeout(()=>{let p;t.read(()=>{p=ne()?.clone()}),t.update(()=>{p&&Me(p)}),g.onSelect({editor:t,queryString:c.match?c.match.matchingString:""})},0)},e[11]=o,e[12]=t,e[13]=c.match,e[14]=u,e[15]=x):x=e[15];let w=x,R,D;e[16]!==t?(R=()=>()=>{let g=t.getRootElement();g!==null&&g.removeAttribute("aria-activedescendant")},D=[t],e[16]=t,e[17]=R,e[18]=D):(R=e[17],D=e[18]),B(R,D);let E;e[19]!==r||e[20]!==a||e[21]!==_?(E=()=>{r===null?h(null):a===null&&_()},e[19]=r,e[20]=a,e[21]=_,e[22]=E):E=e[22];let T;e[23]!==r||e[24]!==a||e[25]!==_||e[26]!==f?(T=[r,a,f,_],e[23]=r,e[24]=a,e[25]=_,e[26]=f,e[27]=T):T=e[27],ke(E,T);let v;e[28]!==t?(v=()=>G(t.registerCommand(ee,Xe,Re)),e[28]=t,e[29]=v):v=e[29];let I;e[30]!==t||e[31]!==f?(I=[t,f],e[30]=t,e[31]=f,e[32]=I):I=e[32],B(v,I);let k,N;e[33]!==o||e[34]!==t||e[35]!==r||e[36]!==w||e[37]!==a||e[38]!==f?(k=()=>G(t.registerCommand(Te,g=>{let p=g;if(r!==null&&r.length&&a!==null){let b=r.flatMap(He),M=b.findIndex(j=>j.key===a),L=M!==b.length-1?M+1:0,C=b[L];if(!C)return!1;f(C),C.ref!=null&&C.ref.current&&t.dispatchCommand(ee,{index:L,item:C}),p.preventDefault(),p.stopImmediatePropagation()}return!0},$),t.registerCommand(ve,g=>{let p=g;if(r!==null&&r.length&&a!==null){let b=r.flatMap(je),M=b.findIndex(j=>j.key===a),L=M!==0?M-1:b.length-1,C=b[L];if(!C)return!1;f(C),C.ref!=null&&C.ref.current&&oe(C.ref.current),p.preventDefault(),p.stopImmediatePropagation()}return!0},$),t.registerCommand(Ie,g=>{let p=g;return p.preventDefault(),p.stopImmediatePropagation(),o(),!0},$),t.registerCommand(Ne,g=>{let p=g;if(r===null||a===null)return!1;let M=r.flatMap(Ye).find(L=>L.key===a);return M?(p.preventDefault(),p.stopImmediatePropagation(),w(M),!0):!1},$),t.registerCommand(Ee,g=>{if(r===null||a===null)return!1;let b=r.flatMap(We).find(M=>M.key===a);return b?(g!==null&&(g.preventDefault(),g.stopImmediatePropagation()),w(b),!0):!1},$)),N=[w,o,t,r,a,f],e[33]=o,e[34]=t,e[35]=r,e[36]=w,e[37]=a,e[38]=f,e[39]=k,e[40]=N):(k=e[39],N=e[40]),B(k,N);let A;e[41]!==r||e[42]!==w||e[43]!==a?(A={groups:r,selectedItemKey:a,selectItemAndCleanUp:w,setSelectedItemKey:h},e[41]=r,e[42]=w,e[43]=a,e[44]=A):A=e[44];let P=A,V=c.match?c.match.matchingString:"",Y;return e[45]!==n||e[46]!==P||e[47]!==l||e[48]!==V?(Y=l(n,P,V),e[45]=n,e[46]=P,e[47]=l,e[48]=V,e[49]=Y):Y=e[49],Y}function We(i){return i.items}function Ye(i){return i.items}function je(i){return i.items}function He(i){return i.items}function Xe(i){let{item:e}=i;return e.ref&&e.ref.current!=null?(oe(e.ref.current),!0):!1}function qe(i){return i.items}function Ue(i,e){e!=null&&(i.className=e),i.setAttribute("aria-label","Slash menu"),i.setAttribute("role","listbox"),i.style.display="block",i.style.position="absolute"}function re(i,e,n,o){let t=X(14),[r]=te(),l;t[0]===Symbol.for("react.memo_cache_sentinel")?(l=z?document.createElement("div"):null,t[0]=l):l=t[0];let c=Ae(l),s;t[1]!==i||t[2]!==o||t[3]!==r||t[4]!==e?(s=()=>{if(c.current===null||parent===void 0)return;let f=r.getRootElement(),d=c.current,_=d.firstChild;if(f!==null&&e!==null){let{height:O,width:S}=e.getRect(),{left:x,top:w}=e.getRect(),R=w;if(w=w-(i.getBoundingClientRect().top+window.scrollY),x=x-(i.getBoundingClientRect().left+window.scrollX),d.style.left=`${x+window.scrollX}px`,d.style.height=`${O}px`,d.style.width=`${S}px`,_!==null){let D=_.getBoundingClientRect(),E=D.height,T=D.width,v=f.getBoundingClientRect(),I=document.dir==="rtl"||document.documentElement.dir==="rtl",k=i.getBoundingClientRect(),N=Math.max(0,v.left);if(!I&&x+T>v.right)d.style.left=`${v.right-T+window.scrollX}px`;else if(I&&D.left<N){let V=N+T-k.left;d.style.left=`${V+window.scrollX}px`}let A=R+E+32>window.innerHeight,P=R<0;A&&!P?d.style.top=`${w+32-E+window.scrollY-(O+24)}px`:d.style.top=`${w+window.scrollY+32}px`}d.isConnected||(Ue(d,o),i.append(d)),d.setAttribute("id","slash-menu"),c.current=d,f.setAttribute("aria-controls","slash-menu")}},t[1]=i,t[2]=o,t[3]=r,t[4]=e,t[5]=s):s=t[5];let u=s,a,h;t[6]!==r||t[7]!==u||t[8]!==e?(a=()=>{let f=r.getRootElement();if(e!==null)return u(),()=>{f!==null&&f.removeAttribute("aria-controls");let d=c.current;d!==null&&d.isConnected&&(d.remove(),d.removeAttribute("id"))}},h=[r,u,e],t[6]=r,t[7]=u,t[8]=e,t[9]=a,t[10]=h):(a=t[9],h=t[10]),B(a,h);let m;return t[11]!==e||t[12]!==n?(m=f=>{e!==null&&(f||n(null))},t[11]=e,t[12]=n,t[13]=m):m=t[13],$e(e,c,u,m),c}var Lt=`\\.,\\+\\*\\?\\$\\@\\|#{}\\(\\)\\^\\-\\[\\]\\\\/!%'"~=<>_:;`;function tt(i){let e=i.anchor;if(e.type!=="text")return null;let n=e.getNode();if(!n.isSimpleText())return null;let o=e.offset;return n.getTextContent().slice(0,o)}function ce(i,e,n){let o=Ze(n);if(o===null||!o.isCollapsed)return!1;let t=o.anchorNode,r=i,l=o.anchorOffset;if(t==null||l==null)return!1;try{e.setStart(t,r),e.setEnd(t,l>1?l:1)}catch{return!1}return!0}function nt(i){let e;return i.getEditorState().read(()=>{let n=U();F(n)&&(e=tt(n))}),e}function ae(i,e){return e!==0?!1:i.getEditorState().read(()=>{let n=U();if(F(n)){let r=n.anchor.getNode().getPreviousSibling();return Qe(r)&&r.isTextEntity()}return!1})}function ue(i){q.startTransition?q.startTransition(i):i()}var ot=Ge("ENABLE_SLASH_MENU_COMMAND");function Bt({anchorClassName:i,anchorElem:e,groups:n,menuRenderFn:o,onClose:t,onOpen:r,onQueryChange:l,triggerFn:c}){let[s]=Ke(),[u,a]=et(null),h=re(e,u,a,i),m=se(()=>{a(null),t!=null&&u!==null&&t()},[t,u]),y=se(f=>{a(f),r!=null&&u===null&&r(f)},[r,u]);return le(()=>ze(s.registerCommand(ot,({node:f})=>(s.getEditorState().read(()=>{let d={leadOffset:0,matchingString:"",replaceableString:""};if(!ae(s,d.leadOffset)&&f!==null){let _=s._window??window,O=_.document.createRange();ce(d.leadOffset,O,_)!==null&&ue(()=>y({getRect:()=>O.getBoundingClientRect(),match:d}));return}}),!0),Je)),[s,y]),le(()=>{let f=()=>{s.getEditorState().read(()=>{let _=s._window??window,O=_.document.createRange(),S=U(),x=nt(s);if(!F(S)||!S.isCollapsed()||x===void 0||O===null){m();return}let w=c({editor:s,query:x});if(l(w?w.matchingString:null),w!==null&&!ae(s,w.leadOffset)&&ce(w.leadOffset,O,_)!==null){ue(()=>y({getRect:()=>O.getBoundingClientRect(),match:w}));return}m()})},d=s.registerUpdateListener(f);return()=>{d()}},[s,c,l,u,m,y]),h.current===null||u===null||s===null?null:Fe(ie,{anchorElementRef:h,close:m,editor:s,groups:n,menuRenderFn:o,resolution:u,shouldSplitNodeWithQuery:!0})}var fe=class i{_bottom;_left;_right;_top;constructor(e,n,o,t){let[r,l]=n<=t?[n,t]:[t,n],[c,s]=e<=o?[e,o]:[o,e];this._top=r,this._right=s,this._left=c,this._bottom=l}static fromDOM(e){let{height:n,left:o,top:t,width:r}=e.getBoundingClientRect();return i.fromLWTH(o,r,t,n)}static fromDOMRect(e){let{height:n,left:o,top:t,width:r}=e;return i.fromLWTH(o,r,t,n)}static fromLTRB(e,n,o,t){return new i(e,n,o,t)}static fromLWTH(e,n,o,t){return new i(e,o,e+n,o+t)}static fromPoints(e,n){let{x:o,y:t}=e,{x:r,y:l}=n;return i.fromLTRB(o,t,r,l)}contains(e){if(J(e)){let{x:l,y:c}=e,s=c<this._top,u=c>this._bottom,a=l<this._left,h=l>this._right;return{reason:{isOnBottomSide:u,isOnLeftSide:a,isOnRightSide:h,isOnTopSide:s},result:!s&&!u&&!a&&!h}}let{bottom:n,left:o,right:t,top:r}=e;return r>=this._top&&r<=this._bottom&&n>=this._top&&n<=this._bottom&&o>=this._left&&o<=this._right&&t>=this._left&&t<=this._right}distanceFromPoint(e){let n=this.contains(e);if(n.result)return{distance:0,isOnBottomSide:n.reason.isOnBottomSide,isOnLeftSide:n.reason.isOnLeftSide,isOnRightSide:n.reason.isOnRightSide,isOnTopSide:n.reason.isOnTopSide};let o=0,t=0;return e.x<this._left?o=this._left-e.x:e.x>this._right&&(o=e.x-this._right),e.y<this._top?t=this._top-e.y:e.y>this._bottom&&(t=e.y-this._bottom),{distance:Math.sqrt(o*o+t*t),isOnBottomSide:e.y>this._bottom,isOnLeftSide:e.x<this._left,isOnRightSide:e.x>this._right,isOnTopSide:e.y<this._top}}equals({bottom:e,left:n,right:o,top:t}){return t===this._top&&e===this._bottom&&n===this._left&&o===this._right}generateNewRect({bottom:e=this.bottom,left:n=this.left,right:o=this.right,top:t=this.top}){return new i(n,t,o,e)}intersectsWith(e){let{height:n,left:o,top:t,width:r}=e,{height:l,left:c,top:s,width:u}=this,a=o+r>=c+u?o+r:c+u,h=t+n>=s+l?t+n:s+l,m=o<=c?o:c,y=t<=s?t:s;return a-m<=r+u&&h-y<=n+l}get bottom(){return this._bottom}get height(){return Math.abs(this._bottom-this._top)}get left(){return this._left}get right(){return this._right}get top(){return this._top}get width(){return Math.abs(this._left-this._right)}};import K from"react";var W=new WeakMap;function Yt(i,e){W.has(i)||W.set(i,new Map);let n=W.get(i);for(let[o,t]of Object.entries(e))if(!(!t||typeof t!="object")){if(o==="blocks"){for(let[r,l]of Object.entries(t))n.set(`block:${r}`,l);continue}if(o==="inlineBlocks"){for(let[r,l]of Object.entries(t))n.set(`inlineBlock:${r}`,l);continue}n.set(o,t)}}function jt(i){W.delete(i)}function de(i,e,n){let o=W.get(i);if(e==="block"&&n?.__fields?.blockType){let t=n.__fields.blockType;return o?.get(`block:${t}`)}if(e==="inlineBlock"&&n?.__fields?.blockType){let t=n.__fields.blockType;return o?.get(`inlineBlock:${t}`)}return o?.get(e)}function it({node:i,nodeType:e}){if(!("getType"in i)||i.getType()!==e)return;let n=i;if(n.prototype._originalDecorate||(n.prototype._originalDecorate=n.prototype.decorate),n.prototype._originalCreateDOM||(n.prototype._originalCreateDOM=n.prototype.createDOM),n.prototype.decorate&&!n.prototype._decorateOverridden){n.prototype._decorateOverridden=!0;let o=!!n.prototype.createDOM;n.prototype.decorate=function(t,r){let l=de(t,e,this);if(l){if(l.Component)return l.Component({config:r,editor:t,isEditor:!0,isJSXConverter:!1,node:this});if(l.createDOM&&l.html){let s=typeof l.html=="function"?l.html({config:r,editor:t,isEditor:!0,isJSXConverter:!1,node:this}):l.html;return K.createElement("span",{dangerouslySetInnerHTML:{__html:s}})}if(l.html&&o&&!l.createDOM)return K.createElement(K.Fragment);if(e==="block"){let s=l;if(s.Block||s.Label)return n.prototype._originalDecorate.call(this,t,r,s.Block,s.Label)}else if(e==="inlineBlock"){let s=l;if(s.Block||s.Label)return n.prototype._originalDecorate.call(this,t,r,s.Block,s.Label)}}return n.prototype._originalDecorate.call(this,t,r)}}n.prototype.createDOM&&!n.prototype._createDOMOverridden&&(n.prototype._createDOMOverridden=!0,n.prototype.createDOM=function(o,t){let r=de(t,e,this);if(r){if(r.createDOM)return r.createDOM({config:o,editor:t,node:this});if(r.html){let l=typeof r.html=="function"?r.html({config:o,editor:t,isEditor:!0,isJSXConverter:!1,node:this}):r.html,c=document.createElement("div");return c.innerHTML=l,c.firstElementChild||c}}return n.prototype._originalCreateDOM.call(this,o,t)})}function Ht({editorConfig:i,nodeViews:e}){let n=rt({nodes:i.features.nodes});if(e){let o=new Set;for(let[t,r]of Object.entries(e))!r||typeof r!="object"||(t==="blocks"&&Object.keys(r).length>0?o.add("block"):t==="inlineBlocks"&&Object.keys(r).length>0?o.add("inlineBlock"):o.add(t));for(let t of n)if("getType"in t){let r=t.getType();o.has(r)&&it({node:t,nodeType:r})}}return n}function rt({nodes:i}){return i.map(e=>"node"in e?e.node:e)}import{jsx as he}from"react/jsx-runtime";import"react";var st={16:"M8.5 3.5a.5.5 0 0 0-1 0v4h-4a.5.5 0 0 0 0 1h4v4a.5.5 0 0 0 1 0v-4h4a.5.5 0 0 0 0-1h-4z",24:"M12 6a.5.5 0 0 1 .5.5v5h5a.5.5 0 0 1 0 1h-5v5a.5.5 0 0 1-1 0v-5h-5a.5.5 0 0 1 0-1h5v-5A.5.5 0 0 1 12 6"},Kt=({className:i,size:e=24})=>he("svg",{className:i,fill:"none",height:e,viewBox:`0 0 ${e} ${e}`,width:e,xmlns:"http://www.w3.org/2000/svg",children:he("path",{clipRule:"evenodd",d:st[e],fill:"currentColor",fillRule:"evenodd"})});export{z as a,Kt as b,ft as c,_t as d,be as e,H as f,J as g,Lt as h,ot as i,Bt as j,fe as k,Yt as l,jt as m,Ht as n};
|
|
2
|
+
//# sourceMappingURL=chunk-FAJJXXCW.js.map
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/lexical/utils/canUseDOM.ts", "../../../src/utilities/useRunDeprioritized.ts", "../../../src/field/RichTextViewProvider.tsx", "../../../src/lexical/utils/point.ts", "../../../src/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.tsx", "../../../src/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.tsx", "../../../src/lexical/utils/rect.ts", "../../../src/lexical/nodes/index.ts", "../../../src/lexical/ui/icons/Add/index.tsx"],
|
|
4
4
|
"sourcesContent": ["'use client'\nexport const CAN_USE_DOM: boolean =\n typeof window !== 'undefined' &&\n typeof window.document !== 'undefined' &&\n typeof window.document.createElement !== 'undefined'\n", "'use client'\nimport { useCallback, useRef } from 'react'\n\n/**\n * Simple hook that lets you run any callback once the main thread is idle\n * (via `requestIdleCallback`) or when that API is missing (Safari) - after the\n * next animation frame (`interactionResponse`).\n *\n * This will help you to avoid blocking the main thread with heavy work.\n *\n * The latest invocation wins: if a new run is queued before the previous one\n * executes, the previous task is cancelled.\n *\n * Usage:\n * ```ts\n * const runDeprioritized = useRunDeprioritized();\n *\n * const onEditorChange = (state: EditorState) => {\n * runDeprioritized(() => {\n * // heavy work here …\n * });\n * };\n * ```\n *\n * @param timeout Optional timeout (ms) for `requestIdleCallback`; defaults to 500 ms.\n * @returns A `runDeprioritized(fn)` helper.\n */\n\nexport function useRunDeprioritized(timeout = 500) {\n const idleHandleRef = useRef<number>(undefined)\n\n /**\n * Schedule `fn` and resolve when it has executed.\n */\n const runDeprioritized = useCallback(\n (fn: () => void): Promise<void> => {\n return new Promise<void>((resolve) => {\n const exec = () => {\n fn()\n resolve()\n }\n\n if ('requestIdleCallback' in window) {\n // Cancel any previously queued task so only the latest runs.\n if ('cancelIdleCallback' in window && idleHandleRef.current !== undefined) {\n // Cancel earlier scheduled value updates,\n // so that a CPU-limited event loop isn't flooded with n callbacks for n keystrokes into the rich text field,\n // but that there's only ever the latest one state update\n // dispatch task, to be executed with the next idle time,\n // or the deadline of 500ms.\n cancelIdleCallback(idleHandleRef.current)\n }\n // Schedule the state update to happen the next time the browser has sufficient resources,\n // or the latest after 500ms.\n idleHandleRef.current = requestIdleCallback(exec, { timeout })\n } else {\n // Safari fallback: rAF + setTimeout shim.\n void interactionResponse().then(exec)\n }\n })\n },\n [timeout],\n )\n\n return runDeprioritized\n}\n\nfunction interactionResponse(): Promise<unknown> {\n // Taken from https://github.com/vercel-labs/await-interaction-response/tree/main/packages/await-interaction-response/src\n\n return new Promise((resolve) => {\n setTimeout(resolve, 100) // Fallback for the case where the animation frame never fires.\n requestAnimationFrame(() => {\n setTimeout(resolve, 0)\n })\n })\n}\n", "'use client'\nimport { useControllableState } from '@payloadcms/ui'\nimport React, { createContext, use, useMemo } from 'react'\n\nimport type { LexicalEditorNodeMap, LexicalEditorViewMap } from '../types/index.js'\n\n/**\n * Context for managing richtext editor view state and inheritance.\n */\ntype RichTextViewContextType = {\n /**\n * The currently active view name (e.g., 'default', 'frontend', 'debug').\n */\n currentView: string\n /**\n * The resolved node map for the current view, containing rendering overrides for each node type.\n */\n currentViewMap?: LexicalEditorNodeMap\n /**\n * True if the current view was explicitly set (via prop) by this provider or an ancestor.\n * Used to distinguish intentional view settings from automatic defaults.\n */\n hasExplicitCurrentView?: boolean\n /**\n * If true, nested richtext editors will inherit this provider's currentView and views.\n */\n inheritable?: boolean\n /**\n * True if this provider's view is controlled by an ancestor provider — either because the\n * ancestor has a views map (view-map inheritance) or an explicit `currentView` prop.\n * When true, the ViewSelector is hidden.\n */\n isControlledByParent?: boolean\n /**\n * Function to programmatically change the current view.\n */\n setCurrentView: (view: string) => void\n /**\n * Map of all available views for this editor. Each key is a view name, each value contains\n * admin config, node overrides, and lexical config for that view.\n */\n views?: LexicalEditorViewMap\n}\n\nconst RichTextViewContext = createContext<RichTextViewContextType>({\n currentView: 'default',\n inheritable: false,\n setCurrentView: () => {},\n})\n\n/**\n * Provider for managing richtext editor view state and its inheritance.\n *\n * Handles two key scenarios:\n * 1. **Explicit view setting**: Wrap with `currentView` and `inheritable={true}` to force nested editors to a specific view\n * 2. **View map inheritance**: Nested editors inherit `views` from parents, allowing view switching across the hierarchy\n *\n * When a nested editor inherits from a parent, its ViewSelector is hidden because the view is controlled by an ancestor.\n *\n * @example\n * Force all nested richtext editors to use \"frontend\" view:\n * ```tsx\n * <RichTextViewProvider currentView=\"frontend\" inheritable={true}>\n * <MyForm /> {/* All richtext fields inside will use \"frontend\" view }\n * </RichTextViewProvider>\n * ```\n */\nexport const RichTextViewProvider: React.FC<{\n children: React.ReactNode\n currentView?: string\n inheritable?: boolean\n views?: LexicalEditorViewMap\n}> = (args) => {\n const parentContext = useRichTextView()\n\n // Track if this provider explicitly sets currentView (not just using the default)\n const hasOwnExplicitView = args.currentView !== undefined\n\n const isControlledByParent =\n parentContext.inheritable &&\n (Boolean(parentContext.views) || Boolean(parentContext.hasExplicitCurrentView))\n\n // This provider has explicit currentView if it sets one OR inherits one from parent\n const hasExplicitCurrentView =\n hasOwnExplicitView ||\n (parentContext.inheritable && Boolean(parentContext.hasExplicitCurrentView))\n\n const {\n children,\n currentView: currentViewFromProps,\n inheritable,\n views,\n } = {\n children: args.children,\n currentView: isControlledByParent ? parentContext.currentView : args.currentView,\n // Propagate inheritable flag through the hierarchy\n inheritable: parentContext.inheritable || args.inheritable,\n // Only inherit views if parent has a views map\n views: isControlledByParent && parentContext.views ? parentContext.views : args.views,\n }\n\n const [currentViewRaw, setCurrentView] = useControllableState(currentViewFromProps, 'default')\n\n // Normalize currentView: if the requested view doesn't exist in this editor's\n // views map, fall back to 'default'. This ensures all consumers of useRichTextView()\n // see a consistent currentView that actually exists\n const currentView =\n views && currentViewRaw !== 'default' && !views[currentViewRaw] ? 'default' : currentViewRaw\n\n const value = useMemo(() => {\n const currentViewMap = views ? views[currentView] : undefined\n return {\n currentView,\n currentViewMap,\n hasExplicitCurrentView,\n inheritable,\n isControlledByParent,\n setCurrentView,\n views,\n }\n }, [\n currentView,\n inheritable,\n hasExplicitCurrentView,\n isControlledByParent,\n setCurrentView,\n views,\n ])\n\n return <RichTextViewContext value={value}>{children}</RichTextViewContext>\n}\n\n/**\n * Access the current richtext editor view context.\n *\n * Returns the active view name, node overrides, inheritance state, and a function to switch views.\n *\n * @example\n * ```tsx\n * function MyComponent() {\n * const { currentView, currentViewMap, isControlledByParent, setCurrentView } = useRichTextView()\n *\n * return (\n * <div>\n * <p>Active view: {currentView}</p>\n * {isControlledByParent && <p>View controlled by parent</p>}\n * {currentViewMap?.heading && <p>Custom heading renderer active</p>}\n * <button onClick={() => setCurrentView('frontend')}>Switch to frontend</button>\n * </div>\n * )\n * }\n * ```\n */\nexport function useRichTextView(): RichTextViewContextType {\n return use(RichTextViewContext)\n}\n", "'use client'\nexport class Point {\n private readonly _x: number\n\n private readonly _y: number\n\n constructor(x: number, y: number) {\n this._x = x\n this._y = y\n }\n\n public calcDeltaXTo({ x }: Point): number {\n return this.x - x\n }\n\n public calcDeltaYTo({ y }: Point): number {\n return this.y - y\n }\n\n public calcDistanceTo(point: Point): number {\n return Math.sqrt(Math.pow(this.calcDeltaXTo(point), 2) + Math.pow(this.calcDeltaYTo(point), 2))\n }\n\n public calcHorizontalDistanceTo(point: Point): number {\n return Math.abs(this.calcDeltaXTo(point))\n }\n\n public calcVerticalDistance(point: Point): number {\n return Math.abs(this.calcDeltaYTo(point))\n }\n\n public equals({ x, y }: Point): boolean {\n return this.x === x && this.y === y\n }\n\n get x(): number {\n return this._x\n }\n\n get y(): number {\n return this._y\n }\n}\n\nexport function isPoint(x: unknown): x is Point {\n return x instanceof Point\n}\n", "'use client'\nimport type { LexicalCommand, LexicalEditor, ParagraphNode, RangeSelection } from 'lexical'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js'\nimport { mergeRegister } from '@lexical/utils'\nimport {\n $getSelection,\n $isRangeSelection,\n $isTextNode,\n COMMAND_PRIORITY_LOW,\n createCommand,\n getDOMSelection,\n} from 'lexical'\nimport { type JSX, useCallback, useEffect, useState } from 'react'\nimport * as React from 'react'\n\nimport type { MenuTextMatch, TriggerFn } from '../useMenuTriggerMatch.js'\nimport type { MenuRenderFn, MenuResolution } from './LexicalMenu.js'\nimport type { SlashMenuGroupInternal } from './types.js'\n\nimport { LexicalMenu, useMenuAnchorRef } from './LexicalMenu.js'\n\nexport const PUNCTUATION = '\\\\.,\\\\+\\\\*\\\\?\\\\$\\\\@\\\\|#{}\\\\(\\\\)\\\\^\\\\-\\\\[\\\\]\\\\\\\\/!%\\'\"~=<>_:;'\n\nfunction getTextUpToAnchor(selection: RangeSelection): null | string {\n const anchor = selection.anchor\n if (anchor.type !== 'text') {\n return null\n }\n const anchorNode = anchor.getNode()\n if (!anchorNode.isSimpleText()) {\n return null\n }\n const anchorOffset = anchor.offset\n return anchorNode.getTextContent().slice(0, anchorOffset)\n}\n\nfunction tryToPositionRange(leadOffset: number, range: Range, editorWindow: Window): boolean {\n const domSelection = getDOMSelection(editorWindow)\n if (domSelection === null || !domSelection.isCollapsed) {\n return false\n }\n\n const anchorNode = domSelection.anchorNode\n const startOffset = leadOffset\n const endOffset = domSelection.anchorOffset\n\n if (anchorNode == null || endOffset == null) {\n return false\n }\n\n try {\n range.setStart(anchorNode, startOffset)\n // if endOffset is 0, positioning the range for when you click the plus button to open the slash menu will fial\n range.setEnd(anchorNode, endOffset > 1 ? endOffset : 1)\n } catch (error) {\n return false\n }\n\n return true\n}\n\nfunction getQueryTextForSearch(editor: LexicalEditor): string | undefined {\n let text\n editor.getEditorState().read(() => {\n const selection = $getSelection()\n if (!$isRangeSelection(selection)) {\n return\n }\n text = getTextUpToAnchor(selection)\n })\n return text\n}\n\nfunction isSelectionOnEntityBoundary(editor: LexicalEditor, offset: number): boolean {\n if (offset !== 0) {\n return false\n }\n return editor.getEditorState().read(() => {\n const selection = $getSelection()\n if ($isRangeSelection(selection)) {\n const anchor = selection.anchor\n const anchorNode = anchor.getNode()\n const prevSibling = anchorNode.getPreviousSibling()\n return $isTextNode(prevSibling) && prevSibling.isTextEntity()\n }\n return false\n })\n}\n\nfunction startTransition(callback: () => void) {\n if (React.startTransition) {\n React.startTransition(callback)\n } else {\n callback()\n }\n}\n\nexport { useDynamicPositioning } from './LexicalMenu.js'\n\nexport type TypeaheadMenuPluginProps = {\n anchorClassName?: string\n anchorElem: HTMLElement\n groups: Array<SlashMenuGroupInternal>\n menuRenderFn: MenuRenderFn\n onClose?: () => void\n onOpen?: (resolution: MenuResolution) => void\n onQueryChange: (matchingString: null | string) => void\n triggerFn: TriggerFn\n}\n\nexport const ENABLE_SLASH_MENU_COMMAND: LexicalCommand<{\n node: ParagraphNode\n}> = createCommand('ENABLE_SLASH_MENU_COMMAND')\n\nexport function LexicalTypeaheadMenuPlugin({\n anchorClassName,\n anchorElem,\n groups,\n menuRenderFn,\n onClose,\n onOpen,\n onQueryChange,\n triggerFn,\n}: TypeaheadMenuPluginProps): JSX.Element | null {\n const [editor] = useLexicalComposerContext()\n const [resolution, setResolution] = useState<MenuResolution | null>(null)\n const anchorElementRef = useMenuAnchorRef(anchorElem, resolution, setResolution, anchorClassName)\n\n const closeTypeahead = useCallback(() => {\n setResolution(null)\n if (onClose != null && resolution !== null) {\n onClose()\n }\n }, [onClose, resolution])\n\n const openTypeahead = useCallback(\n (res: MenuResolution) => {\n setResolution(res)\n if (onOpen != null && resolution === null) {\n onOpen(res)\n }\n },\n [onOpen, resolution],\n )\n\n // This is mainly used for the AddBlockHandlePlugin, so that the slash menu can be opened from there\n useEffect(() => {\n return mergeRegister(\n editor.registerCommand(\n ENABLE_SLASH_MENU_COMMAND,\n ({ node }) => {\n editor.getEditorState().read(() => {\n const match: MenuTextMatch = {\n leadOffset: 0,\n matchingString: '',\n replaceableString: '',\n }\n if (!isSelectionOnEntityBoundary(editor, match.leadOffset)) {\n if (node !== null) {\n const editorWindow = editor._window ?? window\n const range = editorWindow.document.createRange()\n\n const isRangePositioned = tryToPositionRange(match.leadOffset, range, editorWindow)\n if (isRangePositioned !== null) {\n startTransition(() =>\n openTypeahead({\n getRect: () => {\n return range.getBoundingClientRect()\n },\n match,\n }),\n )\n }\n\n return\n }\n }\n })\n\n return true\n },\n COMMAND_PRIORITY_LOW,\n ),\n )\n }, [editor, openTypeahead])\n\n useEffect(() => {\n const updateListener = () => {\n editor.getEditorState().read(() => {\n const editorWindow = editor._window ?? window\n const range = editorWindow.document.createRange()\n const selection = $getSelection()\n const text = getQueryTextForSearch(editor)\n\n if (\n !$isRangeSelection(selection) ||\n !selection.isCollapsed() ||\n text === undefined ||\n range === null\n ) {\n closeTypeahead()\n return\n }\n\n const match = triggerFn({ editor, query: text })\n onQueryChange(match ? match.matchingString : null)\n\n if (match !== null && !isSelectionOnEntityBoundary(editor, match.leadOffset)) {\n const isRangePositioned = tryToPositionRange(match.leadOffset, range, editorWindow)\n if (isRangePositioned !== null) {\n startTransition(() =>\n openTypeahead({\n getRect: () => {\n return range.getBoundingClientRect()\n },\n match,\n }),\n )\n return\n }\n }\n closeTypeahead()\n })\n }\n\n const removeUpdateListener = editor.registerUpdateListener(updateListener)\n\n return () => {\n removeUpdateListener()\n }\n }, [editor, triggerFn, onQueryChange, resolution, closeTypeahead, openTypeahead])\n\n return anchorElementRef.current === null || resolution === null || editor === null ? null : (\n <LexicalMenu\n anchorElementRef={anchorElementRef}\n close={closeTypeahead}\n editor={editor}\n groups={groups}\n menuRenderFn={menuRenderFn}\n resolution={resolution}\n shouldSplitNodeWithQuery\n />\n )\n}\n\nexport type { MenuRenderFn, MenuResolution, MenuTextMatch, TriggerFn }\n", "'use client'\nimport type { BaseSelection, LexicalCommand, LexicalEditor, TextNode } from 'lexical'\nimport type { JSX, ReactPortal, RefObject } from 'react'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js'\nimport { getScrollParent, mergeRegister } from '@lexical/utils'\nimport {\n $getSelection,\n $isRangeSelection,\n $setSelection,\n COMMAND_PRIORITY_LOW,\n COMMAND_PRIORITY_NORMAL,\n createCommand,\n KEY_ARROW_DOWN_COMMAND,\n KEY_ARROW_UP_COMMAND,\n KEY_ENTER_COMMAND,\n KEY_ESCAPE_COMMAND,\n KEY_TAB_COMMAND,\n} from 'lexical'\nimport { useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState } from 'react'\n\nimport type { MenuTextMatch } from '../useMenuTriggerMatch.js'\nimport type { SlashMenuGroupInternal, SlashMenuItem, SlashMenuItemInternal } from './types.js'\n\nimport { CAN_USE_DOM } from '../../../utils/canUseDOM.js'\n\nexport type MenuResolution = {\n getRect: () => DOMRect\n match?: MenuTextMatch\n}\n\nconst baseClass = 'slash-menu-popup'\n\nexport type MenuRenderFn = (\n anchorElementRef: RefObject<HTMLElement | null>,\n itemProps: {\n groups: Array<SlashMenuGroupInternal>\n selectedItemKey: null | string\n selectItemAndCleanUp: (selectedItem: SlashMenuItem) => void\n setSelectedItemKey: (itemKey: string) => void\n },\n matchingString: null | string,\n) => JSX.Element | null | ReactPortal\n\nconst scrollIntoViewIfNeeded = (target: HTMLElement) => {\n const typeaheadContainerNode = document.getElementById('slash-menu')\n if (!typeaheadContainerNode) {\n return\n }\n\n const typeaheadRect = typeaheadContainerNode.getBoundingClientRect()\n\n if (typeaheadRect.top + typeaheadRect.height > window.innerHeight) {\n typeaheadContainerNode.scrollIntoView({\n block: 'center',\n })\n }\n\n if (typeaheadRect.top < 0) {\n typeaheadContainerNode.scrollIntoView({\n block: 'center',\n })\n }\n\n target.scrollIntoView({ block: 'nearest' })\n}\n\n/**\n * Walk backwards along user input and forward through entity title to try\n * and replace more of the user's text with entity.\n */\nfunction getFullMatchOffset(documentText: string, entryText: string, offset: number) {\n let triggerOffset = offset\n for (let i = triggerOffset; i <= entryText.length; i++) {\n if (documentText.substring(documentText.length - i) === entryText.substring(0, i)) {\n triggerOffset = i\n }\n }\n return triggerOffset\n}\n\n/**\n * Split Lexical TextNode and return a new TextNode only containing matched text.\n * Common use cases include: removing the node, replacing with a new node.\n */\nfunction $splitNodeContainingQuery(match: MenuTextMatch): TextNode | undefined {\n const selection = $getSelection()\n if (!$isRangeSelection(selection) || !selection.isCollapsed()) {\n return\n }\n const anchor = selection.anchor\n if (anchor.type !== 'text') {\n return\n }\n const anchorNode = anchor.getNode()\n if (!anchorNode.isSimpleText()) {\n return\n }\n const selectionOffset = anchor.offset\n const textContent = anchorNode.getTextContent().slice(0, selectionOffset)\n const characterOffset = match.replaceableString.length\n const queryOffset = getFullMatchOffset(textContent, match.matchingString, characterOffset)\n const startOffset = selectionOffset - queryOffset\n if (startOffset < 0) {\n return\n }\n let newNode\n if (startOffset === 0) {\n ;[newNode] = anchorNode.splitText(selectionOffset)\n } else {\n ;[, newNode] = anchorNode.splitText(startOffset, selectionOffset)\n }\n\n return newNode\n}\n\nfunction isTriggerVisibleInNearestScrollContainer(\n targetElement: HTMLElement,\n containerElement: HTMLElement,\n): boolean {\n const tRect = targetElement.getBoundingClientRect()\n const cRect = containerElement.getBoundingClientRect()\n return tRect.top > cRect.top && tRect.top < cRect.bottom\n}\n\n// Reposition the menu on scroll, window resize, and element resize.\nexport function useDynamicPositioning(\n resolution: MenuResolution | null,\n targetElementRef: RefObject<HTMLElement | null>,\n onReposition: () => void,\n onVisibilityChange?: (isInView: boolean) => void,\n) {\n const [editor] = useLexicalComposerContext()\n useEffect(() => {\n const targetElement = targetElementRef.current\n if (targetElement != null && resolution != null) {\n const rootElement = editor.getRootElement()\n const rootScrollParent =\n rootElement != null ? getScrollParent(rootElement, false) : document.body\n let ticking = false\n let previousIsInView = isTriggerVisibleInNearestScrollContainer(\n targetElement,\n rootScrollParent,\n )\n const handleScroll = function () {\n if (!ticking) {\n window.requestAnimationFrame(function () {\n onReposition()\n ticking = false\n })\n ticking = true\n }\n const isInView = isTriggerVisibleInNearestScrollContainer(targetElement, rootScrollParent)\n if (isInView !== previousIsInView) {\n previousIsInView = isInView\n if (onVisibilityChange != null) {\n onVisibilityChange(isInView)\n }\n }\n }\n const resizeObserver = new ResizeObserver(onReposition)\n window.addEventListener('resize', onReposition)\n document.addEventListener('scroll', handleScroll, {\n capture: true,\n passive: true,\n })\n resizeObserver.observe(targetElement)\n return () => {\n resizeObserver.disconnect()\n window.removeEventListener('resize', onReposition)\n document.removeEventListener('scroll', handleScroll, true)\n }\n }\n }, [editor, onVisibilityChange, onReposition, resolution, targetElementRef])\n}\n\nexport const SCROLL_TYPEAHEAD_OPTION_INTO_VIEW_COMMAND: LexicalCommand<{\n index: number\n item: SlashMenuItemInternal\n}> = createCommand('SCROLL_TYPEAHEAD_OPTION_INTO_VIEW_COMMAND')\n\nexport function LexicalMenu({\n anchorElementRef,\n close,\n editor,\n // groups filtering is already handled in SlashMenu/index.tsx. Thus, groups always contains the matching items.\n groups,\n menuRenderFn,\n resolution,\n shouldSplitNodeWithQuery = false,\n}: {\n anchorElementRef: RefObject<HTMLElement | null>\n close: () => void\n editor: LexicalEditor\n groups: Array<SlashMenuGroupInternal>\n menuRenderFn: MenuRenderFn\n resolution: MenuResolution\n shouldSplitNodeWithQuery?: boolean\n}): JSX.Element | null {\n const [selectedItemKey, setSelectedItemKey] = useState<null | string>(null)\n\n const matchingString = (resolution.match && resolution.match.matchingString) || ''\n\n const updateSelectedItem = useCallback(\n (item: SlashMenuItem) => {\n const rootElem = editor.getRootElement()\n if (rootElem !== null) {\n rootElem.setAttribute('aria-activedescendant', `${baseClass}__item-${item.key}`)\n setSelectedItemKey(item.key)\n }\n },\n [editor],\n )\n\n const setSelectedItemKeyToFirstMatchingItem = useCallback(() => {\n // set selected item to the first of the matching ones\n if (groups !== null && matchingString != null) {\n // groups filtering is already handled in SlashMenu/index.tsx. Thus, groups always contains the matching items.\n const allItems = groups.flatMap((group) => group.items)\n\n if (allItems.length) {\n const firstMatchingItem = allItems[0]!\n updateSelectedItem(firstMatchingItem)\n }\n }\n }, [groups, updateSelectedItem, matchingString])\n\n useEffect(() => {\n setSelectedItemKeyToFirstMatchingItem()\n }, [matchingString, setSelectedItemKeyToFirstMatchingItem])\n\n const selectItemAndCleanUp = useCallback(\n (selectedItem: SlashMenuItem) => {\n close()\n\n editor.update(() => {\n const textNodeContainingQuery =\n resolution.match != null && shouldSplitNodeWithQuery\n ? $splitNodeContainingQuery(resolution.match)\n : null\n\n if (textNodeContainingQuery) {\n textNodeContainingQuery.remove()\n }\n })\n\n setTimeout(() => {\n // Needed in Firefox. See https://github.com/payloadcms/payload/issues/10724\n let selection: BaseSelection | undefined\n editor.read(() => {\n selection = $getSelection()?.clone()\n })\n editor.update(() => {\n if (selection) {\n $setSelection(selection)\n }\n })\n\n selectedItem.onSelect({\n editor,\n queryString: resolution.match ? resolution.match.matchingString : '',\n })\n }, 0)\n },\n [editor, shouldSplitNodeWithQuery, resolution.match, close],\n )\n\n useEffect(() => {\n return () => {\n const rootElem = editor.getRootElement()\n if (rootElem !== null) {\n rootElem.removeAttribute('aria-activedescendant')\n }\n }\n }, [editor])\n\n useLayoutEffect(() => {\n if (groups === null) {\n setSelectedItemKey(null)\n } else if (selectedItemKey === null) {\n setSelectedItemKeyToFirstMatchingItem()\n }\n }, [groups, selectedItemKey, updateSelectedItem, setSelectedItemKeyToFirstMatchingItem])\n\n useEffect(() => {\n return mergeRegister(\n editor.registerCommand(\n SCROLL_TYPEAHEAD_OPTION_INTO_VIEW_COMMAND,\n ({ item }) => {\n if (item.ref && item.ref.current != null) {\n scrollIntoViewIfNeeded(item.ref.current)\n return true\n }\n\n return false\n },\n COMMAND_PRIORITY_LOW,\n ),\n )\n }, [editor, updateSelectedItem])\n\n useEffect(() => {\n return mergeRegister(\n editor.registerCommand<KeyboardEvent>(\n KEY_ARROW_DOWN_COMMAND,\n (payload) => {\n const event = payload\n if (groups !== null && groups.length && selectedItemKey !== null) {\n const allItems = groups.flatMap((group) => group.items)\n const selectedIndex = allItems.findIndex((item) => item.key === selectedItemKey)\n\n const newSelectedIndex = selectedIndex !== allItems.length - 1 ? selectedIndex + 1 : 0\n\n const newSelectedItem = allItems[newSelectedIndex]\n if (!newSelectedItem) {\n return false\n }\n\n updateSelectedItem(newSelectedItem)\n if (newSelectedItem.ref != null && newSelectedItem.ref.current) {\n editor.dispatchCommand(SCROLL_TYPEAHEAD_OPTION_INTO_VIEW_COMMAND, {\n index: newSelectedIndex,\n item: newSelectedItem,\n })\n }\n event.preventDefault()\n event.stopImmediatePropagation()\n }\n return true\n },\n COMMAND_PRIORITY_NORMAL,\n ),\n editor.registerCommand<KeyboardEvent>(\n KEY_ARROW_UP_COMMAND,\n (payload) => {\n const event = payload\n if (groups !== null && groups.length && selectedItemKey !== null) {\n const allItems = groups.flatMap((group) => group.items)\n const selectedIndex = allItems.findIndex((item) => item.key === selectedItemKey)\n\n const newSelectedIndex = selectedIndex !== 0 ? selectedIndex - 1 : allItems.length - 1\n\n const newSelectedItem = allItems[newSelectedIndex]\n if (!newSelectedItem) {\n return false\n }\n\n updateSelectedItem(newSelectedItem)\n if (newSelectedItem.ref != null && newSelectedItem.ref.current) {\n scrollIntoViewIfNeeded(newSelectedItem.ref.current)\n }\n event.preventDefault()\n event.stopImmediatePropagation()\n }\n return true\n },\n COMMAND_PRIORITY_NORMAL,\n ),\n editor.registerCommand<KeyboardEvent>(\n KEY_ESCAPE_COMMAND,\n (payload) => {\n const event = payload\n event.preventDefault()\n event.stopImmediatePropagation()\n close()\n return true\n },\n COMMAND_PRIORITY_NORMAL,\n ),\n editor.registerCommand<KeyboardEvent>(\n KEY_TAB_COMMAND,\n (payload) => {\n const event = payload\n\n if (groups === null || selectedItemKey === null) {\n return false\n }\n const allItems = groups.flatMap((group) => group.items)\n const selectedItem = allItems.find((item) => item.key === selectedItemKey)\n if (!selectedItem) {\n return false\n }\n\n event.preventDefault()\n event.stopImmediatePropagation()\n selectItemAndCleanUp(selectedItem)\n return true\n },\n COMMAND_PRIORITY_NORMAL,\n ),\n editor.registerCommand(\n KEY_ENTER_COMMAND,\n (event: KeyboardEvent | null) => {\n if (groups === null || selectedItemKey === null) {\n return false\n }\n const allItems = groups.flatMap((group) => group.items)\n const selectedItem = allItems.find((item) => item.key === selectedItemKey)\n if (!selectedItem) {\n return false\n }\n\n if (event !== null) {\n event.preventDefault()\n event.stopImmediatePropagation()\n }\n selectItemAndCleanUp(selectedItem)\n return true\n },\n COMMAND_PRIORITY_NORMAL,\n ),\n )\n }, [selectItemAndCleanUp, close, editor, groups, selectedItemKey, updateSelectedItem])\n\n const listItemProps = useMemo(\n () => ({\n groups,\n selectedItemKey,\n selectItemAndCleanUp,\n setSelectedItemKey,\n }),\n [selectItemAndCleanUp, selectedItemKey, groups],\n )\n\n return menuRenderFn(\n anchorElementRef,\n listItemProps,\n resolution.match ? resolution.match.matchingString : '',\n )\n}\n\nfunction setContainerDivAttributes(containerDiv: HTMLElement, className?: string) {\n if (className != null) {\n containerDiv.className = className\n }\n containerDiv.setAttribute('aria-label', 'Slash menu')\n containerDiv.setAttribute('role', 'listbox')\n containerDiv.style.display = 'block'\n containerDiv.style.position = 'absolute'\n}\n\nexport function useMenuAnchorRef(\n anchorElem: HTMLElement,\n resolution: MenuResolution | null,\n setResolution: (r: MenuResolution | null) => void,\n className?: string,\n): RefObject<HTMLElement | null> {\n const [editor] = useLexicalComposerContext()\n const anchorElementRef = useRef<HTMLElement | null>(\n CAN_USE_DOM ? document.createElement('div') : null,\n )\n const positionMenu = useCallback(() => {\n if (anchorElementRef.current === null || parent === undefined) {\n return\n }\n const rootElement = editor.getRootElement()\n const containerDiv = anchorElementRef.current\n\n const VERTICAL_OFFSET = 32\n\n const menuEle = containerDiv.firstChild as Element\n if (rootElement !== null && resolution !== null) {\n const { height, width } = resolution.getRect()\n let { left, top } = resolution.getRect()\n\n const rawTop = top\n top -= anchorElem.getBoundingClientRect().top + window.scrollY\n left -= anchorElem.getBoundingClientRect().left + window.scrollX\n containerDiv.style.left = `${left + window.scrollX}px`\n containerDiv.style.height = `${height}px`\n containerDiv.style.width = `${width}px`\n if (menuEle !== null) {\n const menuRect = menuEle.getBoundingClientRect()\n const menuHeight = menuRect.height\n const menuWidth = menuRect.width\n\n const rootElementRect = rootElement.getBoundingClientRect()\n\n const isRTL = document.dir === 'rtl' || document.documentElement.dir === 'rtl'\n const anchorRect = anchorElem.getBoundingClientRect()\n const leftBoundary = Math.max(0, rootElementRect.left)\n\n if (!isRTL && left + menuWidth > rootElementRect.right) {\n containerDiv.style.left = `${rootElementRect.right - menuWidth + window.scrollX}px`\n } else if (isRTL && menuRect.left < leftBoundary) {\n const newLeft = leftBoundary + menuWidth - anchorRect.left\n containerDiv.style.left = `${newLeft + window.scrollX}px`\n }\n\n const wouldGoOffBottomOfScreen = rawTop + menuHeight + VERTICAL_OFFSET > window.innerHeight\n //const wouldGoOffBottomOfContainer = top + menuHeight > rootElementRect.bottom\n const wouldGoOffTopOfScreen = rawTop < 0\n\n // Position slash menu above the cursor instead of below (default) if it would otherwise go off the bottom of the screen.\n if (wouldGoOffBottomOfScreen && !wouldGoOffTopOfScreen) {\n const margin = 24\n containerDiv.style.top = `${\n top + VERTICAL_OFFSET - menuHeight + window.scrollY - (height + margin)\n }px`\n } else {\n containerDiv.style.top = `${top + window.scrollY + VERTICAL_OFFSET}px`\n }\n }\n\n if (!containerDiv.isConnected) {\n setContainerDivAttributes(containerDiv, className)\n anchorElem.append(containerDiv)\n }\n containerDiv.setAttribute('id', 'slash-menu')\n anchorElementRef.current = containerDiv\n rootElement.setAttribute('aria-controls', 'slash-menu')\n }\n }, [editor, resolution, className, anchorElem])\n\n useEffect(() => {\n const rootElement = editor.getRootElement()\n if (resolution !== null) {\n positionMenu()\n return () => {\n if (rootElement !== null) {\n rootElement.removeAttribute('aria-controls')\n }\n\n const containerDiv = anchorElementRef.current\n if (containerDiv !== null && containerDiv.isConnected) {\n containerDiv.remove()\n containerDiv.removeAttribute('id')\n }\n }\n }\n }, [editor, positionMenu, resolution])\n\n const onVisibilityChange = useCallback(\n (isInView: boolean) => {\n if (resolution !== null) {\n if (!isInView) {\n setResolution(null)\n }\n }\n },\n [resolution, setResolution],\n )\n\n useDynamicPositioning(resolution, anchorElementRef, positionMenu, onVisibilityChange)\n\n return anchorElementRef\n}\n", "'use client'\nimport { isPoint, type Point } from './point.js'\n\ninterface ContainsPointReturn {\n reason: {\n isOnBottomSide: boolean\n isOnLeftSide: boolean\n isOnRightSide: boolean\n isOnTopSide: boolean\n }\n result: boolean\n}\n\nexport class Rect {\n private readonly _bottom: number\n\n private readonly _left: number\n\n private readonly _right: number\n\n private readonly _top: number\n\n constructor(left: number, top: number, right: number, bottom: number) {\n const [physicTop, physicBottom] = top <= bottom ? [top, bottom] : [bottom, top]\n\n const [physicLeft, physicRight] = left <= right ? [left, right] : [right, left]\n\n this._top = physicTop\n this._right = physicRight\n this._left = physicLeft\n this._bottom = physicBottom\n }\n\n static fromDOM(dom: HTMLElement): Rect {\n const { height, left, top, width } = dom.getBoundingClientRect()\n return Rect.fromLWTH(left, width, top, height)\n }\n\n static fromDOMRect(domRect: DOMRect): Rect {\n const { height, left, top, width } = domRect\n return Rect.fromLWTH(left, width, top, height)\n }\n\n static fromLTRB(left: number, top: number, right: number, bottom: number): Rect {\n return new Rect(left, top, right, bottom)\n }\n\n static fromLWTH(left: number, width: number, top: number, height: number): Rect {\n return new Rect(left, top, left + width, top + height)\n }\n\n static fromPoints(startPoint: Point, endPoint: Point): Rect {\n const { x: left, y: top } = startPoint\n const { x: right, y: bottom } = endPoint\n return Rect.fromLTRB(left, top, right, bottom)\n }\n\n public contains({ x, y }: Point): ContainsPointReturn\n\n public contains({ bottom, left, right, top }: Rect): boolean\n\n public contains(target: Point | Rect): boolean | ContainsPointReturn {\n if (isPoint(target)) {\n const { x, y } = target\n\n const isOnTopSide = y < this._top\n const isOnBottomSide = y > this._bottom\n const isOnLeftSide = x < this._left\n const isOnRightSide = x > this._right\n\n const result = !isOnTopSide && !isOnBottomSide && !isOnLeftSide && !isOnRightSide\n\n return {\n reason: {\n isOnBottomSide,\n isOnLeftSide,\n isOnRightSide,\n isOnTopSide,\n },\n result,\n }\n }\n const { bottom, left, right, top } = target\n\n return (\n top >= this._top &&\n top <= this._bottom &&\n bottom >= this._top &&\n bottom <= this._bottom &&\n left >= this._left &&\n left <= this._right &&\n right >= this._left &&\n right <= this._right\n )\n }\n\n public distanceFromPoint(point: Point): {\n distance: number\n isOnBottomSide: boolean\n isOnLeftSide: boolean\n isOnRightSide: boolean\n isOnTopSide: boolean\n } {\n const containsResult = this.contains(point)\n if (containsResult.result) {\n return {\n distance: 0,\n isOnBottomSide: containsResult.reason.isOnBottomSide,\n isOnLeftSide: containsResult.reason.isOnLeftSide,\n isOnRightSide: containsResult.reason.isOnRightSide,\n isOnTopSide: containsResult.reason.isOnTopSide,\n }\n }\n\n let dx = 0 // Horizontal distance to the closest edge\n let dy = 0 // Vertical distance to the closest edge\n\n // If the point is to the left of the rectangle\n if (point.x < this._left) {\n dx = this._left - point.x\n }\n // If the point is to the right of the rectangle\n else if (point.x > this._right) {\n dx = point.x - this._right\n }\n\n // If the point is above the rectangle\n if (point.y < this._top) {\n dy = this._top - point.y\n }\n // If the point is below the rectangle\n else if (point.y > this._bottom) {\n dy = point.y - this._bottom\n }\n\n // Use the Pythagorean theorem to calculate the distance\n return {\n distance: Math.sqrt(dx * dx + dy * dy),\n isOnBottomSide: point.y > this._bottom,\n isOnLeftSide: point.x < this._left,\n isOnRightSide: point.x > this._right,\n isOnTopSide: point.y < this._top,\n }\n }\n\n public equals({ bottom, left, right, top }: Rect): boolean {\n return (\n top === this._top && bottom === this._bottom && left === this._left && right === this._right\n )\n }\n\n public generateNewRect({\n bottom = this.bottom,\n left = this.left,\n right = this.right,\n top = this.top,\n }): Rect {\n return new Rect(left, top, right, bottom)\n }\n\n public intersectsWith(rect: Rect): boolean {\n const { height: h1, left: x1, top: y1, width: w1 } = rect\n const { height: h2, left: x2, top: y2, width: w2 } = this\n const maxX = x1 + w1 >= x2 + w2 ? x1 + w1 : x2 + w2\n const maxY = y1 + h1 >= y2 + h2 ? y1 + h1 : y2 + h2\n const minX = x1 <= x2 ? x1 : x2\n const minY = y1 <= y2 ? y1 : y2\n return maxX - minX <= w1 + w2 && maxY - minY <= h1 + h2\n }\n\n get bottom(): number {\n return this._bottom\n }\n\n get height(): number {\n return Math.abs(this._bottom - this._top)\n }\n\n get left(): number {\n return this._left\n }\n\n get right(): number {\n return this._right\n }\n\n get top(): number {\n return this._top\n }\n\n get width(): number {\n return Math.abs(this._left - this._right)\n }\n}\n", "import type {\n EditorConfig,\n Klass,\n LexicalEditor,\n LexicalNode,\n LexicalNodeReplacement,\n} from 'lexical'\n\nimport React from 'react'\n\nimport type { BlockDecorateFunction } from '../../features/blocks/client/nodes/BlocksNode.js'\nimport type { InlineBlockDecorateFunction } from '../../features/blocks/client/nodes/InlineBlocksNode.js'\nimport type { NodeWithHooks } from '../../features/typesServer.js'\nimport type {\n LexicalEditorNodeMap,\n NodeMapBlockValue,\n NodeMapInlineBlockValue,\n NodeMapValue,\n} from '../../types/index.js'\nimport type { SanitizedClientEditorConfig, SanitizedServerEditorConfig } from '../config/types.js'\n\n// Store view definitions for each editor and node type\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst editorNodeViews = new WeakMap<LexicalEditor, Map<string, NodeMapValue<any>>>()\n\n/**\n * Register view definitions for an editor\n */\nexport function registerEditorNodeViews(\n editor: LexicalEditor,\n nodeViews: LexicalEditorNodeMap,\n): void {\n if (!editorNodeViews.has(editor)) {\n editorNodeViews.set(editor, new Map())\n }\n const editorViews = editorNodeViews.get(editor)!\n\n // Register each node type's view\n for (const [nodeType, value] of Object.entries(nodeViews)) {\n if (!value || typeof value !== 'object') {\n continue\n }\n\n // Handle blocks specially - store each block type with key 'block:blockType'\n if (nodeType === 'blocks') {\n for (const [blockType, viewDef] of Object.entries(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n value as Record<string, NodeMapValue<any>>,\n )) {\n editorViews.set(`block:${blockType}`, viewDef)\n }\n continue\n }\n\n // Handle inlineBlocks specially - store each block type with key 'inlineBlock:blockType'\n if (nodeType === 'inlineBlocks') {\n for (const [blockType, viewDef] of Object.entries(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n value as Record<string, NodeMapValue<any>>,\n )) {\n editorViews.set(`inlineBlock:${blockType}`, viewDef)\n }\n continue\n }\n\n // Regular node types\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n editorViews.set(nodeType, value as NodeMapValue<any>)\n }\n}\n\n/**\n * Clear all view overrides for an editor (restores default rendering)\n */\nexport function clearEditorNodeViews(editor: LexicalEditor): void {\n editorNodeViews.delete(editor)\n}\n\n/**\n * Get the view definition for a specific editor and node\n */\nfunction getEditorNodeView(\n editor: LexicalEditor,\n nodeType: string,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n node?: any,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n): NodeMapValue<any> | undefined {\n const editorViews = editorNodeViews.get(editor)\n\n // For block nodes, look up by blockType\n if (nodeType === 'block' && node?.['__fields']?.blockType) {\n const blockType = node['__fields'].blockType\n return editorViews?.get(`block:${blockType}`)\n }\n\n // For inlineBlock nodes, look up by blockType\n if (nodeType === 'inlineBlock' && node?.['__fields']?.blockType) {\n const blockType = node['__fields'].blockType\n return editorViews?.get(`inlineBlock:${blockType}`)\n }\n\n // Regular node types\n return editorViews?.get(nodeType)\n}\n\n/**\n * Apply view overrides to a specific node type by modifying its prototype\n * Uses WeakMap to check per-editor at runtime\n */\nfunction applyNodeOverride({\n node,\n nodeType,\n}: {\n node: Klass<LexicalNode>\n nodeType: string\n}): void {\n if (!('getType' in node) || node.getType() !== nodeType) {\n return\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const NodeClass = node as any\n\n // Store original methods if not already stored\n if (!NodeClass.prototype._originalDecorate) {\n NodeClass.prototype._originalDecorate = NodeClass.prototype.decorate\n }\n if (!NodeClass.prototype._originalCreateDOM) {\n NodeClass.prototype._originalCreateDOM = NodeClass.prototype.createDOM\n }\n\n // Override decorate method (for DecoratorNodes)\n if (NodeClass.prototype.decorate && !NodeClass.prototype._decorateOverridden) {\n NodeClass.prototype._decorateOverridden = true\n const hasCreateDOM = !!NodeClass.prototype.createDOM\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n NodeClass.prototype.decorate = function (editor: LexicalEditor, config: EditorConfig): any {\n const viewDef = getEditorNodeView(editor, nodeType, this)\n\n if (viewDef) {\n // Priority 1: If Component is provided, use it\n if (viewDef.Component) {\n return viewDef.Component({\n config,\n editor,\n isEditor: true,\n isJSXConverter: false,\n node: this,\n })\n }\n\n // Priority 2: If custom createDOM is provided, use html in decorate\n if (viewDef.createDOM && viewDef.html) {\n const htmlContent =\n typeof viewDef.html === 'function'\n ? viewDef.html({ config, editor, isEditor: true, isJSXConverter: false, node: this })\n : viewDef.html\n return React.createElement('span', {\n dangerouslySetInnerHTML: { __html: htmlContent },\n })\n }\n\n // Priority 3: If only html is provided (no custom createDOM),\n // createDOM will handle it, so decorate returns empty fragment\n if (viewDef.html && hasCreateDOM && !viewDef.createDOM) {\n return React.createElement(React.Fragment)\n }\n\n if (nodeType === 'block') {\n const blockViewDef: NodeMapBlockValue = viewDef as NodeMapBlockValue\n if (blockViewDef.Block || blockViewDef.Label) {\n const originalDecorate: BlockDecorateFunction = NodeClass.prototype._originalDecorate\n\n // Pass Block FC to BlockContent for rendering\n // BlockContent will render with useBlockComponentContext hook (client-only)\n return originalDecorate.call(\n this,\n editor,\n config,\n blockViewDef.Block,\n blockViewDef.Label,\n )\n }\n } else if (nodeType === 'inlineBlock') {\n const blockViewDef: NodeMapInlineBlockValue = viewDef as NodeMapInlineBlockValue\n if (blockViewDef.Block || blockViewDef.Label) {\n const originalDecorate: InlineBlockDecorateFunction =\n NodeClass.prototype._originalDecorate\n\n // Pass Block FC to BlockContent for rendering\n // BlockContent will render with useBlockComponentContext hook (client-only)\n return originalDecorate.call(\n this,\n editor,\n config,\n blockViewDef.Block,\n blockViewDef.Label,\n )\n }\n }\n }\n\n const originalDecorate: BlockDecorateFunction | InlineBlockDecorateFunction =\n NodeClass.prototype._originalDecorate\n\n // Otherwise use original\n return originalDecorate.call(this, editor, config)\n }\n }\n\n // Override createDOM method (for ElementNodes)\n if (NodeClass.prototype.createDOM && !NodeClass.prototype._createDOMOverridden) {\n NodeClass.prototype._createDOMOverridden = true\n NodeClass.prototype.createDOM = function (\n config: EditorConfig,\n editor: LexicalEditor,\n ): HTMLElement {\n const viewDef = getEditorNodeView(editor, nodeType, this)\n\n if (viewDef) {\n // If createDOM is provided, use it\n if (viewDef.createDOM) {\n return viewDef.createDOM({ config, editor, node: this })\n }\n\n // If html is provided (as a function or string), create element from it\n if (viewDef.html) {\n const htmlContent =\n typeof viewDef.html === 'function'\n ? viewDef.html({ config, editor, isEditor: true, isJSXConverter: false, node: this })\n : viewDef.html\n const tempDiv = document.createElement('div')\n tempDiv.innerHTML = htmlContent\n return (tempDiv.firstElementChild as HTMLElement) || tempDiv\n }\n }\n\n // Otherwise use original\n return NodeClass.prototype._originalCreateDOM.call(this, config, editor)\n }\n }\n}\n\nexport function getEnabledNodes({\n editorConfig,\n nodeViews,\n}: {\n editorConfig: SanitizedClientEditorConfig | SanitizedServerEditorConfig\n nodeViews?: LexicalEditorNodeMap\n}): Array<Klass<LexicalNode> | LexicalNodeReplacement> {\n const nodes = getEnabledNodesFromServerNodes({\n nodes: editorConfig.features.nodes,\n })\n\n if (nodeViews) {\n // Apply node overrides by modifying prototypes (once globally)\n // The overrides check per-editor at runtime using WeakMap\n const nodeTypesToOverride = new Set<string>()\n\n for (const [key, value] of Object.entries(nodeViews)) {\n if (!value || typeof value !== 'object') {\n continue\n }\n\n // If 'blocks' key exists with content, we need to override 'block' nodes\n if (key === 'blocks' && Object.keys(value).length > 0) {\n nodeTypesToOverride.add('block')\n }\n // If 'inlineBlocks' key exists with content, we need to override 'inlineBlock' nodes\n else if (key === 'inlineBlocks' && Object.keys(value).length > 0) {\n nodeTypesToOverride.add('inlineBlock')\n }\n // Regular node types\n else {\n nodeTypesToOverride.add(key)\n }\n }\n\n for (const node of nodes) {\n if ('getType' in node) {\n const nodeType = node.getType()\n\n if (nodeTypesToOverride.has(nodeType)) {\n applyNodeOverride({ node, nodeType })\n }\n }\n }\n }\n\n return nodes\n}\n\nexport function getEnabledNodesFromServerNodes({\n nodes,\n}: {\n nodes: Array<Klass<LexicalNode> | LexicalNodeReplacement> | Array<NodeWithHooks>\n}): Array<Klass<LexicalNode> | LexicalNodeReplacement> {\n return nodes.map((node) => {\n if ('node' in node) {\n return node.node\n }\n return node\n })\n}\n", "'use client'\nimport React from 'react'\n\nconst paths = {\n 16: 'M8.5 3.5a.5.5 0 0 0-1 0v4h-4a.5.5 0 0 0 0 1h4v4a.5.5 0 0 0 1 0v-4h4a.5.5 0 0 0 0-1h-4z',\n 24: 'M12 6a.5.5 0 0 1 .5.5v5h5a.5.5 0 0 1 0 1h-5v5a.5.5 0 0 1-1 0v-5h-5a.5.5 0 0 1 0-1h5v-5A.5.5 0 0 1 12 6',\n}\n\nexport const AddIcon: React.FC<{\n readonly className?: string\n readonly size?: 16 | 24\n}> = ({ className, size = 24 }) => (\n <svg\n className={className}\n fill=\"none\"\n height={size}\n viewBox={`0 0 ${size} ${size}`}\n width={size}\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path clipRule=\"evenodd\" d={paths[size]} fill=\"currentColor\" fillRule=\"evenodd\" />\n </svg>\n)\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["CAN_USE_DOM", "window", "document", "createElement", "c", "_c", "useRef", "useRunDeprioritized", "t0", "$", "timeout", "undefined", "idleHandleRef", "t1", "fn", "Promise", "resolve", "exec", "window", "current", "cancelIdleCallback", "requestIdleCallback", "interactionResponse", "then", "setTimeout", "requestAnimationFrame", "useControllableState", "createContext", "use", "useMemo", "RichTextViewContext", "currentView", "inheritable", "setCurrentView", "RichTextViewProvider", "args", "parentContext", "useRichTextView", "hasOwnExplicitView", "undefined", "isControlledByParent", "Boolean", "views", "hasExplicitCurrentView", "children", "currentViewFromProps", "currentViewRaw", "value", "currentViewMap", "_jsx", "Point", "_x", "_y", "constructor", "x", "y", "calcDeltaXTo", "calcDeltaYTo", "calcDistanceTo", "point", "Math", "sqrt", "pow", "calcHorizontalDistanceTo", "abs", "calcVerticalDistance", "equals", "isPoint", "useLexicalComposerContext", "mergeRegister", "$getSelection", "$isRangeSelection", "$isTextNode", "COMMAND_PRIORITY_LOW", "createCommand", "getDOMSelection", "useCallback", "useEffect", "useState", "React", "c", "_c", "useLexicalComposerContext", "getScrollParent", "mergeRegister", "$getSelection", "$isRangeSelection", "$setSelection", "COMMAND_PRIORITY_LOW", "COMMAND_PRIORITY_NORMAL", "createCommand", "KEY_ARROW_DOWN_COMMAND", "KEY_ARROW_UP_COMMAND", "KEY_ENTER_COMMAND", "KEY_ESCAPE_COMMAND", "KEY_TAB_COMMAND", "
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["CAN_USE_DOM", "window", "document", "createElement", "c", "_c", "useRef", "useRunDeprioritized", "t0", "$", "timeout", "undefined", "idleHandleRef", "t1", "fn", "Promise", "resolve", "exec", "window", "current", "cancelIdleCallback", "requestIdleCallback", "interactionResponse", "then", "setTimeout", "requestAnimationFrame", "useControllableState", "createContext", "use", "useMemo", "RichTextViewContext", "currentView", "inheritable", "setCurrentView", "RichTextViewProvider", "args", "parentContext", "useRichTextView", "hasOwnExplicitView", "undefined", "isControlledByParent", "Boolean", "views", "hasExplicitCurrentView", "children", "currentViewFromProps", "currentViewRaw", "value", "currentViewMap", "_jsx", "Point", "_x", "_y", "constructor", "x", "y", "calcDeltaXTo", "calcDeltaYTo", "calcDistanceTo", "point", "Math", "sqrt", "pow", "calcHorizontalDistanceTo", "abs", "calcVerticalDistance", "equals", "isPoint", "useLexicalComposerContext", "mergeRegister", "$getSelection", "$isRangeSelection", "$isTextNode", "COMMAND_PRIORITY_LOW", "createCommand", "getDOMSelection", "useCallback", "useEffect", "useState", "React", "c", "_c", "useLexicalComposerContext", "getScrollParent", "mergeRegister", "$getSelection", "$isRangeSelection", "$setSelection", "COMMAND_PRIORITY_LOW", "COMMAND_PRIORITY_NORMAL", "createCommand", "KEY_ARROW_DOWN_COMMAND", "KEY_ARROW_UP_COMMAND", "KEY_ENTER_COMMAND", "KEY_ESCAPE_COMMAND", "KEY_TAB_COMMAND", "useEffect", "useLayoutEffect", "useRef", "useState", "baseClass", "scrollIntoViewIfNeeded", "target", "typeaheadContainerNode", "document", "getElementById", "typeaheadRect", "getBoundingClientRect", "top", "height", "window", "innerHeight", "scrollIntoView", "block", "getFullMatchOffset", "documentText", "entryText", "offset", "triggerOffset", "i", "length", "substring", "$splitNodeContainingQuery", "match", "selection", "$getSelection", "$isRangeSelection", "isCollapsed", "anchor", "type", "anchorNode", "getNode", "isSimpleText", "selectionOffset", "textContent", "getTextContent", "slice", "characterOffset", "replaceableString", "queryOffset", "matchingString", "startOffset", "newNode", "splitText", "isTriggerVisibleInNearestScrollContainer", "targetElement", "containerElement", "tRect", "cRect", "bottom", "useDynamicPositioning", "resolution", "targetElementRef", "onReposition", "onVisibilityChange", "$", "_c", "editor", "useLexicalComposerContext", "t0", "t1", "current", "rootElement", "getRootElement", "rootScrollParent", "getScrollParent", "body", "ticking", "previousIsInView", "handleScroll", "requestAnimationFrame", "isInView", "resizeObserver", "ResizeObserver", "addEventListener", "capture", "passive", "observe", "disconnect", "removeEventListener", "useEffect", "SCROLL_TYPEAHEAD_OPTION_INTO_VIEW_COMMAND", "createCommand", "LexicalMenu", "anchorElementRef", "close", "groups", "menuRenderFn", "shouldSplitNodeWithQuery", "undefined", "selectedItemKey", "setSelectedItemKey", "useState", "t2", "item", "rootElem", "setAttribute", "key", "updateSelectedItem", "t3", "allItems", "flatMap", "_temp", "firstMatchingItem", "setSelectedItemKeyToFirstMatchingItem", "t4", "t5", "t6", "selectedItem", "update", "textNodeContainingQuery", "remove", "setTimeout", "read", "clone", "$setSelection", "onSelect", "queryString", "selectItemAndCleanUp", "t7", "t8", "rootElem_0", "removeAttribute", "t9", "t10", "useLayoutEffect", "t11", "mergeRegister", "registerCommand", "_temp2", "COMMAND_PRIORITY_LOW", "t12", "t13", "t14", "KEY_ARROW_DOWN_COMMAND", "payload", "event", "allItems_0", "_temp3", "selectedIndex", "findIndex", "item_1", "newSelectedIndex", "newSelectedItem", "ref", "dispatchCommand", "index", "preventDefault", "stopImmediatePropagation", "COMMAND_PRIORITY_NORMAL", "KEY_ARROW_UP_COMMAND", "payload_0", "event_0", "allItems_1", "_temp4", "selectedIndex_0", "item_2", "newSelectedIndex_0", "newSelectedItem_0", "KEY_ESCAPE_COMMAND", "payload_1", "event_1", "KEY_TAB_COMMAND", "payload_2", "event_2", "selectedItem_0", "_temp5", "find", "item_3", "KEY_ENTER_COMMAND", "event_3", "selectedItem_1", "_temp6", "item_4", "t15", "listItemProps", "t16", "t17", "group_3", "group", "items", "group_2", "group_1", "group_0", "item_0", "setContainerDivAttributes", "containerDiv", "className", "style", "display", "position", "useMenuAnchorRef", "anchorElem", "setResolution", "Symbol", "for", "CAN_USE_DOM", "createElement", "useRef", "parent", "menuEle", "firstChild", "width", "getRect", "left", "rawTop", "scrollY", "scrollX", "menuRect", "menuHeight", "menuWidth", "rootElementRect", "isRTL", "dir", "documentElement", "anchorRect", "leftBoundary", "Math", "max", "right", "newLeft", "wouldGoOffBottomOfScreen", "wouldGoOffTopOfScreen", "isConnected", "append", "positionMenu", "rootElement_0", "containerDiv_0", "PUNCTUATION", "getTextUpToAnchor", "selection", "anchor", "type", "anchorNode", "getNode", "isSimpleText", "anchorOffset", "offset", "getTextContent", "slice", "tryToPositionRange", "leadOffset", "range", "editorWindow", "domSelection", "getDOMSelection", "isCollapsed", "startOffset", "endOffset", "setStart", "setEnd", "getQueryTextForSearch", "editor", "text", "getEditorState", "read", "$getSelection", "$isRangeSelection", "isSelectionOnEntityBoundary", "prevSibling", "getPreviousSibling", "$isTextNode", "isTextEntity", "startTransition", "callback", "ENABLE_SLASH_MENU_COMMAND", "createCommand", "LexicalTypeaheadMenuPlugin", "anchorClassName", "anchorElem", "groups", "menuRenderFn", "onClose", "onOpen", "onQueryChange", "triggerFn", "useLexicalComposerContext", "resolution", "setResolution", "useState", "anchorElementRef", "useMenuAnchorRef", "closeTypeahead", "useCallback", "openTypeahead", "res", "useEffect", "mergeRegister", "registerCommand", "node", "match", "matchingString", "replaceableString", "_window", "window", "document", "createRange", "getRect", "getBoundingClientRect", "COMMAND_PRIORITY_LOW", "updateListener", "undefined", "query", "removeUpdateListener", "registerUpdateListener", "current", "_jsx", "LexicalMenu", "close", "shouldSplitNodeWithQuery", "Rect", "_bottom", "_left", "_right", "_top", "constructor", "left", "top", "right", "bottom", "physicTop", "physicBottom", "physicLeft", "physicRight", "fromDOM", "dom", "height", "width", "getBoundingClientRect", "fromLWTH", "fromDOMRect", "domRect", "fromLTRB", "fromPoints", "startPoint", "endPoint", "x", "y", "contains", "target", "isPoint", "isOnTopSide", "isOnBottomSide", "isOnLeftSide", "isOnRightSide", "reason", "result", "distanceFromPoint", "point", "containsResult", "distance", "dx", "dy", "Math", "sqrt", "equals", "generateNewRect", "intersectsWith", "rect", "h1", "x1", "y1", "w1", "h2", "x2", "y2", "w2", "maxX", "maxY", "minX", "minY", "abs", "React", "editorNodeViews", "WeakMap", "registerEditorNodeViews", "editor", "nodeViews", "has", "set", "Map", "editorViews", "get", "nodeType", "value", "Object", "entries", "blockType", "viewDef", "clearEditorNodeViews", "delete", "getEditorNodeView", "node", "applyNodeOverride", "getType", "NodeClass", "prototype", "_originalDecorate", "decorate", "_originalCreateDOM", "createDOM", "_decorateOverridden", "hasCreateDOM", "config", "Component", "isEditor", "isJSXConverter", "html", "htmlContent", "createElement", "dangerouslySetInnerHTML", "__html", "Fragment", "blockViewDef", "Block", "Label", "call", "_createDOMOverridden", "tempDiv", "document", "innerHTML", "firstElementChild", "getEnabledNodes", "editorConfig", "nodes", "getEnabledNodesFromServerNodes", "features", "nodeTypesToOverride", "Set", "key", "keys", "length", "add", "map", "paths", "AddIcon", "className", "size", "_jsx", "fill", "height", "viewBox", "width", "xmlns", "clipRule", "d", "fillRule"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import{c as D}from"react/compiler-runtime";import{useForm as _,useTranslation as k}from"@payloadcms/ui";import{useEffect as v,useRef as y}from"react";var G=()=>{let t=D(7),{t:s}=k(),e=y(null),o;t[0]!==s?(o=s("fields:saveChanges"),t[0]=s,t[1]=o):o=t[1];let l;t[2]===Symbol.for("react.memo_cache_sentinel")?(l=()=>e.current?.(),t[2]=l):l=t[2];let n;t[3]!==o?(n=[{label:o,onClick:l,style:"primary"}],t[3]=o,t[4]=n):n=t[4];let r=n,c;return t[5]!==r?(c={headerActions:r,submitRef:e},t[5]=r,t[6]=c):c=t[6],c},H=t=>{let s=D(4),{submitRef:e}=t,{submit:o}=_(),l,n;return s[0]!==o||s[1]!==e?(l=()=>(e.current=()=>{o()},()=>{e.current=null}),n=[o,e],s[0]=o,s[1]=e,s[2]=l,s[3]=n):(l=s[2],n=s[3]),v(l,n),null};import{c as T}from"react/compiler-runtime";import{useLexicalComposerContext as B}from"@lexical/react/LexicalComposerContext";import{useModal as E}from"@payloadcms/ui";import{$getPreviousSelection as F,$getSelection as A,$setSelection as P}from"lexical";import{useEffect as W,useState as R}from"react";var X=(t,s)=>{let e=T(24),[o]=B(),[l,n]=R(null),[r,c]=R(!1),{closeModal:x,modalState:a,toggleModal:$}=E(),f;e[0]!==o?(f=()=>{o.read(()=>{let M=A()??F();n(M)})},e[0]=o,e[1]=f):f=e[1];let w=f,m;e[2]!==o||e[3]!==l?(m=()=>{l&&o.update(()=>{P(l.clone())},{discrete:!0,skipTransforms:!0})},e[2]=o,e[3]=l,e[4]=m):m=e[4];let i=m,u;e[5]!==x||e[6]!==t?(u=()=>{x(t)},e[5]=x,e[6]=t,e[7]=u):u=e[7];let C=u,O=a?.[t]?.isOpen,p;e[8]!==O||e[9]!==i||e[10]!==t||e[11]!==w||e[12]!==$?(p=()=>{O?i():w(),c(!0),$(t)},e[8]=O,e[9]=i,e[10]=t,e[11]=w,e[12]=$,e[13]=p):p=e[13];let h=p,d,S;e[14]!==a||e[15]!==s||e[16]!==i||e[17]!==t||e[18]!==r?(d=()=>{if(!r)return;let M=a[t];M&&!M?.isOpen&&(c(!1),s?setTimeout(()=>{i()},0):i())},S=[a,t,i,r,s],e[14]=a,e[15]=s,e[16]=i,e[17]=t,e[18]=r,e[19]=d,e[20]=S):(d=e[19],S=e[20]),W(d,S);let b;return e[21]!==C||e[22]!==h?(b={closeDrawer:C,toggleDrawer:h},e[21]=C,e[22]=h,e[23]=b):b=e[23],b};export{G as a,H as b,X as c};
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
2
|
+
//# sourceMappingURL=chunk-IYBYNEKX.js.map
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/utilities/fieldsDrawer/useDrawerSubmit.ts", "../../../src/utilities/fieldsDrawer/useLexicalDrawer.tsx"],
|
|
4
4
|
"sourcesContent": ["'use client'\nimport type { FC } from 'react'\nimport type React from 'react'\n\nimport { useForm, useTranslation } from '@payloadcms/ui'\nimport { useEffect, useMemo, useRef } from 'react'\n\n/**\n * Shared logic for drawers that render their submit button in the drawer header.\n *\n * The header's `onClick` is defined outside the `Form` provider, so it cannot call\n * `useForm().submit()` directly. This hook owns a ref to the form's `submit` function,\n * which is populated from inside the form via `<RegisterFormSubmit submitRef={submitRef} />`.\n *\n * Returns the `headerActions` array to spread onto a `Drawer` and the `submitRef`\n * to pass to `RegisterFormSubmit`.\n */\nexport const useDrawerSubmit = () => {\n const { t } = useTranslation()\n const submitRef = useRef<(() => void) | null>(null)\n\n const headerActions = useMemo(\n () => [\n {\n label: t('fields:saveChanges'),\n onClick: () => submitRef.current?.(),\n style: 'primary' as const,\n },\n ],\n [t],\n )\n\n return { headerActions, submitRef }\n}\n\n/**\n * Mounts inside a `<Form>` to populate `submitRef` (from `useDrawerSubmit`) with the form's\n * `submit` function, allowing drawer header actions rendered outside the form's React tree\n * to trigger submission.\n */\nexport const RegisterFormSubmit: FC<{\n submitRef: React.RefObject<(() => void) | null>\n}> = ({ submitRef }) => {\n const { submit } = useForm()\n\n useEffect(() => {\n submitRef.current = () => void submit()\n return () => {\n submitRef.current = null\n }\n }, [submit, submitRef])\n\n return null\n}\n", "'use client'\nimport type { BaseSelection } from 'lexical'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext'\nimport { useModal } from '@payloadcms/ui'\nimport { $getPreviousSelection, $getSelection, $setSelection } from 'lexical'\nimport { useCallback, useEffect, useState } from 'react'\n\n/**\n *\n * Wrapper around useModal that restores and saves selection state (cursor position) when opening and closing the drawer.\n * By default, the lexical cursor position may be lost when opening a drawer and clicking somewhere on that drawer.\n */\nexport const useLexicalDrawer = (slug: string, restoreLate?: boolean) => {\n const [editor] = useLexicalComposerContext()\n const [selectionState, setSelectionState] = useState<BaseSelection | null>(null)\n const [wasOpen, setWasOpen] = useState<boolean>(false)\n\n const { closeModal: closeBaseModal, modalState, toggleModal: toggleBaseModal } = useModal()\n\n const storeSelection = useCallback(() => {\n editor.read(() => {\n const selection = $getSelection() ?? $getPreviousSelection()\n setSelectionState(selection)\n })\n }, [editor])\n\n const restoreSelection = useCallback(() => {\n if (selectionState) {\n editor.update(\n () => {\n $setSelection(selectionState.clone())\n },\n { discrete: true, skipTransforms: true },\n )\n }\n }, [editor, selectionState])\n\n const closeDrawer = useCallback(() => {\n //restoreSelection() // Should already be stored by the useEffect below\n closeBaseModal(slug)\n }, [closeBaseModal, slug])\n const isModalOpen = modalState?.[slug]?.isOpen\n\n const toggleDrawer = useCallback(() => {\n if (!isModalOpen) {\n storeSelection()\n } else {\n restoreSelection()\n }\n setWasOpen(true)\n toggleBaseModal(slug)\n }, [slug, storeSelection, toggleBaseModal, restoreSelection, isModalOpen])\n\n // We need to handle drawer closing via a useEffect, as toggleDrawer / closeDrawer will not be triggered if the drawer\n // is closed by clicking outside of the drawer. This useEffect will handle everything.\n useEffect(() => {\n if (!wasOpen) {\n return\n }\n\n const thisModalState = modalState[slug]\n // Exists in modalState (thus has opened at least once before) and is closed\n if (thisModalState && !thisModalState?.isOpen) {\n setWasOpen(false)\n\n if (restoreLate) {\n // restoreLate is used for upload extra field drawers. For some reason, the selection is not restored if we call restoreSelection immediately.\n setTimeout(() => {\n restoreSelection()\n }, 0)\n } else {\n restoreSelection()\n }\n }\n }, [modalState, slug, restoreSelection, wasOpen, restoreLate])\n\n return {\n closeDrawer,\n toggleDrawer,\n }\n}\n"],
|
|
5
|
-
"mappings": "AAAA,OAAAA,KAAAC,MAAA,yBAIA,OAASC,WAAAA,EAASC,kBAAAA,MAAsB,iBACxC,OAASC,aAAAA,EAAoBC,UAAAA,MAAc,QAYpC,IAAMC,EAAkBA,IAAA,CAAA,IAAAC,EAAAN,EAAA,CAAA,EAC7B,CAAAO,EAAAA,CAAA,EAAcL,EAAA,EACdM,EAAkBJ,
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["c", "_c", "useForm", "useTranslation", "useEffect", "useRef", "useDrawerSubmit", "$", "t", "submitRef", "t0", "t1", "Symbol", "for", "current", "t2", "label", "onClick", "style", "headerActions", "t3", "RegisterFormSubmit", "submit", "c", "_c", "useLexicalComposerContext", "useModal", "$getPreviousSelection", "$getSelection", "$setSelection", "useEffect", "useState", "useLexicalDrawer", "slug", "restoreLate", "$", "editor", "selectionState", "setSelectionState", "wasOpen", "setWasOpen", "closeModal", "closeBaseModal", "modalState", "toggleModal", "toggleBaseModal", "t0", "read", "selection", "storeSelection", "t1", "update", "clone", "discrete", "skipTransforms", "restoreSelection", "t2", "closeDrawer", "isModalOpen", "isOpen", "t3", "toggleDrawer", "t4", "t5", "thisModalState", "setTimeout", "t6"]
|
|
7
7
|
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{a as fe,b as pe,c as be}from"./chunk-IYBYNEKX.js";import{b as me}from"./chunk-RJ5MAOKZ.js";import{jsx as c,jsxs as D}from"react/jsx-runtime";import{useLexicalComposerContext as Qe}from"@lexical/react/LexicalComposerContext";import{useLexicalEditable as Ye}from"@lexical/react/useLexicalEditable";import{getTranslation as Be}from"@payloadcms/translations";import{Button as Ce,Drawer as Ze,EditDepthProvider as et,Form as tt,formatDrawerSlug as ot,RenderFields as nt,ShimmerEffect as rt,useConfig as st,useDocumentForm as it,useDocumentInfo as lt,useEditDepth as ct,useServerFunctions as at,useTranslation as ut}from"@payloadcms/ui";import{abortAndIgnore as H}from"@payloadcms/ui/shared";import{$getNodeByKey as X,SKIP_DOM_SELECTION_TAG as ge}from"lexical";import{deepCopyObjectSimpleWithoutReactComponents as dt}from"payload/shared";import w,{createContext as mt,useCallback as q,useEffect as j,useMemo as g,useRef as y}from"react";import{v4 as ft}from"uuid";import{dequal as Ee}from"dequal/lite";import{reduceFieldsToValues as je}from"payload/shared";var ke=({cachedFormState:n,cachedSchemaPath:t,currentSchemaPath:e,formData:o})=>{if(t!==e)return!1;let r=_(n),s=A({data:o,rowFieldPaths:Le(n)});return Ee(he(r),he(s))?n:!1},_=(n,t)=>{let e=Object.fromEntries(Object.entries(n).map(([o,r])=>!r||!Array.isArray(r.rows)?[o,r]:r.value===void 0||r.disableFormData!==!1&&r.isModified!==!0&&r.rows.length===0&&ve(t,o)===null?[o,{...r,value:null}]:[o,r.value===null?r:{...r,disableFormData:!0}]));return A({data:je(e,!0),rowFieldPaths:new Set})},ve=(n,t)=>t.split(".").reduce((e,o)=>{if(!(!e||typeof e!="object"))return e[o]},n),Le=n=>new Set(Object.entries(n).filter(([,t])=>Array.isArray(t?.rows)&&t.value!==null&&t.value!==void 0).map(([t])=>t)),A=({data:n,parentPath:t="",rowFieldPaths:e})=>{let o={};for(let[r,s]of Object.entries(n)){let a=t?`${t}.${r}`:r,p=Re({parentPath:a,rowFieldPaths:e,value:s});p!==void 0&&(o[r]=p)}return o},Re=({parentPath:n,rowFieldPaths:t,value:e})=>{if(!(e===void 0||Array.isArray(e)&&e.length===0&&t.has(n)))return Array.isArray(e)?e.map((o,r)=>o&&typeof o=="object"&&!Array.isArray(o)?A({data:o,parentPath:`${n}.${r}`,rowFieldPaths:t}):o):e&&typeof e=="object"&&Object.getPrototypeOf(e)===Object.prototype?A({data:e,parentPath:n,rowFieldPaths:t}):e},he=({blockName:n,blockType:t,...e})=>e;import{jsx as We}from"react/jsx-runtime";import He from"bson-objectid";import{$applyNodeReplacement as Xe}from"lexical";import qe from"react";import{addClassNamesToElement as Me}from"@lexical/utils";import Ke from"bson-objectid";import{$applyNodeReplacement as Je,DecoratorNode as ze}from"lexical";var S=class extends ze{__cacheBuster;__fields;constructor({cacheBuster:t,fields:e,key:o}){super(o),this.__fields=e,this.__cacheBuster=t||0}static clone(t){return new this({cacheBuster:t.__cacheBuster,fields:t.__fields,key:t.__key})}static getType(){return"inlineBlock"}static importDOM(){return{}}static importJSON(t){return Ve(t.fields)}static isInline(){return!1}canIndent(){return!0}createDOM(t){let e=document.createElement("span");return Me(e,t?.theme?.inlineBlock),e}decorate(t,e){return null}exportDOM(){let t=document.createElement("span");t.classList.add("inline-block-container");let e=document.createTextNode(this.getTextContent());return t.append(e),{element:t}}exportJSON(){return{...super.exportJSON(),type:"inlineBlock",fields:this.getFields()}}getCacheBuster(){return this.getLatest().__cacheBuster}getFields(){return this.getLatest().__fields}getTextContent(){return"Block Field"}isInline(){return!0}setFields(t,e){let o=this.getWritable();o.__fields=t,e||o.__cacheBuster++}updateDOM(){return!1}};function Ve(n){return Je(new S({fields:{...n,id:n?.id||new Ke.default().toHexString()}}))}var Ge=qe.lazy(()=>import("./componentInline-AU7IBNY7.js").then(n=>({default:n.InlineBlockComponent}))),E=class extends S{static clone(t){return super.clone(t)}static getType(){return super.getType()}static importJSON(t){return Ue(t.fields)}decorate(...[t,e,o,r]){return We(Ge,{cacheBuster:this.getCacheBuster(),className:e.theme.inlineBlock??"LexicalEditorTheme__inlineBlock",CustomBlock:o,CustomLabel:r,formData:this.getFields(),nodeKey:this.getKey()})}exportJSON(){return super.exportJSON()}};function Ue(n){return Xe(new E({fields:{...n,id:n?.id||new He.default().toHexString()}}))}function W(n){return n instanceof E}var xe=mt({initialState:!1}),ye=()=>w.use(xe),Vt=n=>{let{cacheBuster:t,className:e,CustomBlock:o,CustomLabel:r,formData:s,nodeKey:a}=n,[p]=Qe(),u=Ye(),{i18n:v,t:B}=ut(),{createdInlineBlock:G,fieldProps:{featureClientSchemaMap:_e,initialLexicalFormState:Se,schemaPath:U},setCreatedInlineBlock:Q,uuid:De}=me(),{fields:F}=it(),{getFormState:N}=at(),we=ct(),Y=y(!1),I=s.blockType,L=y(s);L.current=s;let C=`${U}.lexical_internal_feature.blocks.lexical_inline_blocks.${I}.fields`,[f,R]=w.useState(()=>{let i=Se?.[s.id],d=i?.formState;return d?ke({cachedFormState:d,cachedSchemaPath:i.schemaPath,currentSchemaPath:C,formData:s}):!1}),Z=y(!1),ee=y(t);j(()=>{Z.current?(ee.current!==t&&R(!1),ee.current=t):Z.current=!0},[t]);let[Fe]=w.useState(()=>ft()),[te,oe]=w.useState(()=>{if(!r)return f?._components?.customComponents?.BlockLabel??void 0}),[ne,re]=w.useState(()=>{if(!o)return f?._components?.customComponents?.Block??void 0}),se=g(()=>o?c(o,{className:e,formData:s,isEditor:!0,isJSXConverter:!1,nodeKey:a,useInlineBlockComponentContext:ye}):ne,[o,e,s,a,ne]),M=g(()=>r?c(r,{className:e,formData:s,isEditor:!0,isJSXConverter:!1,nodeKey:a,useInlineBlockComponentContext:ye}):te,[r,e,s,a,te]),ie=ot({slug:`lexical-inlineBlocks-create-${De}-${s.id}`,depth:we}),{toggleDrawer:b}=be(ie,!0),Ne=y(null),{id:O,collectionSlug:T,getDocPreferences:$,globalSlug:P}=lt(),{config:Ie}=st(),Oe=`${U}.lexical_internal_feature.blocks.lexical_inline_blocks.${I}`,K=_e.blocks?.[Oe]?.[0]?.blocks?.[0],m=typeof K=="string"?Ie.blocksMap[K]:K,le=m?.fields??[];j(()=>{!Y.current&&G?.getKey()===a&&(le.length>2&&b(),Q?.(void 0),Y.current=!0)},[le.length,G,a,Q,b]);let ce=q(()=>{p.update(()=>{X(a)?.remove()})},[p,a]),x=m?.labels?.singular?Be(m?.labels.singular,v):m?.slug,J=y(new AbortController);j(()=>{let i=new AbortController;return m&&s&&!f&&(async()=>{let{state:l}=await N({id:O,collectionSlug:T,data:s,docPermissions:{fields:!0},docPreferences:await $(),documentFormState:F,globalSlug:P,initialBlockData:s,operation:"update",readOnly:!u,renderAllFields:!0,schemaPath:C,signal:i.signal});if(l){let h=_(dt(l,{excludeFiles:!0}));p.update(()=>{let k=X(a);if(k&&W(k)){let de=h;de.blockType=s.blockType,k.setFields(de,!0)}},{tag:ge}),R(l),r||oe(l._components?.customComponents?.BlockLabel),o||re(l._components?.customComponents?.Block)}})(),()=>{H(i)}},[N,p,a,u,r,o,C,O,s,f,T,P,$,F,m]);let ae=q(async({formState:i,submit:d})=>{H(J.current);let l=new AbortController;J.current=l;let h=_(i,L.current),{state:k}=await N({id:O,collectionSlug:T,data:h,docPermissions:{fields:!0},docPreferences:await $(),documentFormState:F,formState:i,globalSlug:P,initialBlockData:h,operation:"update",readOnly:!u,renderAllFields:!!d,schemaPath:C,signal:l.signal});return k?(d&&(r||oe(k._components?.customComponents?.BlockLabel),o||re(k._components?.customComponents?.Block)),k):i},[N,O,T,$,F,P,u,C,o,r]);j(()=>{let i=(d,l)=>Object.keys(l).some(h=>l[h]&&d[h]!==l[h].value);return()=>{f&&i(s,f)&&R(!1),H(J.current)}},[s,f]);let Te=q(i=>{let d=_(i,L.current);d.blockType=I,p.update(()=>{let l=X(a);l&&W(l)&&l.setFields(d,!0)},{tag:ge})},[I,p,a]),{headerActions:$e,submitRef:Pe}=fe(),z=g(()=>()=>c(Ce,{buttonStyle:"ghost",className:`${e}__removeButton`,disabled:!u,icon:"x",onClick:i=>{i.preventDefault(),i.stopPropagation(),ce()},round:!0,size:"medium",tooltip:B("lexical:blocks:inlineBlocks:remove",{label:x})}),[e,x,u,ce,B]),Ae=g(()=>()=>c(Ce,{buttonStyle:"ghost",className:`${e}__editButton`,disabled:!u,el:"button",icon:"edit",onClick:()=>{b()},round:!0,size:"medium",tooltip:B("lexical:blocks:inlineBlocks:edit",{label:x})}),[e,x,u,B,b]),V=g(()=>({children:i,className:d})=>c("div",{className:[`${e}__container`,e+"-"+s.blockType,d].filter(Boolean).join(" "),...u?{onClick:()=>b(),onKeyDown:l=>{(l.key==="Enter"||l.key===" ")&&(l.preventDefault(),b())},role:"button",tabIndex:0}:{},ref:Ne,children:i}),[e,s.blockType,u,b]),ue=g(()=>M?()=>M:()=>c("div",{children:m?.labels?Be(m?.labels.singular,v):""}),[M,m?.labels,v]);return m?D(tt,{beforeSubmit:[async({formState:i})=>await ae({formState:i,submit:!0})],disableValidationOnSubmit:!0,el:"div",fields:m?.fields,initialState:f||{},onChange:[ae],onSubmit:i=>{Te(i),b()},uuid:Fe,children:[c(et,{children:c(Ze,{className:"",headerActions:$e,slug:ie,title:B(`lexical:blocks:inlineBlocks:${s?.id?"edit":"create"}`,{label:x??B("lexical:blocks:inlineBlocks:label")}),children:f?D("div",{className:"fields-drawer",children:[c(nt,{fields:m?.fields,forceRender:!0,parentIndexPath:"",parentPath:"",parentSchemaPath:C,permissions:!0,readOnly:!u}),c(pe,{submitRef:Pe})]}):null})}),se?c(xe,{value:{EditButton:Ae,initialState:f,InlineBlockContainer:V,Label:ue,nodeKey:a,RemoveButton:z},children:se}):D(V,{children:[f?c(ue,{}):c(rt,{height:"15px",width:"40px"}),u?c("div",{className:`${e}__actions`,children:c(z,{})}):null]})]}):D(V,{className:`${e}-not-found`,children:[D("span",{children:["Error: Block '",s.blockType,"' not found"]}),u?c("div",{className:`${e}__actions`,children:c(z,{})}):null]})};export{ke as a,_ as b,ye as c,Vt as d,E as e,Ue as f,W as g};
|
|
2
|
+
//# sourceMappingURL=chunk-SE5IITBK.js.map
|