@payloadcms/richtext-lexical 3.0.0-beta.119 → 3.0.0-beta.120
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/RelationshipComponent-LBWKOBGF.js +2 -0
- package/dist/exports/client/RelationshipComponent-LBWKOBGF.js.map +7 -0
- package/dist/exports/client/bundled.css +1 -1
- package/dist/exports/client/chunk-5PBXL4HT.js +2 -0
- package/dist/exports/client/chunk-5PBXL4HT.js.map +7 -0
- package/dist/exports/client/chunk-7SR2HYD6.js +2 -0
- package/dist/exports/client/chunk-7SR2HYD6.js.map +7 -0
- package/dist/exports/client/{chunk-QZNJUROL.js → chunk-XY4TCSM7.js} +2 -2
- package/dist/exports/client/component-4TP4L5EV.js +2 -0
- package/dist/exports/client/component-4TP4L5EV.js.map +7 -0
- package/dist/exports/client/index.js +7 -7
- package/dist/exports/client/index.js.map +4 -4
- package/dist/features/blocks/client/plugin/index.d.ts.map +1 -1
- package/dist/features/blocks/client/plugin/index.js +32 -37
- package/dist/features/blocks/client/plugin/index.js.map +1 -1
- package/dist/features/experimental_table/client/plugins/TablePlugin/index.d.ts.map +1 -1
- package/dist/features/experimental_table/client/plugins/TablePlugin/index.js +27 -32
- package/dist/features/experimental_table/client/plugins/TablePlugin/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 +8 -9
- package/dist/features/link/client/plugins/floatingLinkEditor/LinkEditor/index.js.map +1 -1
- package/dist/features/relationship/client/components/RelationshipComponent.d.ts.map +1 -1
- package/dist/features/relationship/client/components/RelationshipComponent.js +10 -7
- package/dist/features/relationship/client/components/RelationshipComponent.js.map +1 -1
- package/dist/features/relationship/client/drawer/index.d.ts.map +1 -1
- package/dist/features/relationship/client/drawer/index.js +24 -23
- package/dist/features/relationship/client/drawer/index.js.map +1 -1
- package/dist/features/upload/client/component/index.d.ts.map +1 -1
- package/dist/features/upload/client/component/index.js +30 -28
- package/dist/features/upload/client/component/index.js.map +1 -1
- package/dist/features/upload/client/drawer/index.d.ts.map +1 -1
- package/dist/features/upload/client/drawer/index.js +32 -32
- package/dist/features/upload/client/drawer/index.js.map +1 -1
- package/dist/field/bundled.css +1 -1
- package/dist/utilities/fieldsDrawer/Drawer.d.ts.map +1 -1
- package/dist/utilities/fieldsDrawer/Drawer.js +63 -27
- package/dist/utilities/fieldsDrawer/Drawer.js.map +1 -1
- package/dist/utilities/fieldsDrawer/useLexicalDocumentDrawer.d.ts +13 -0
- package/dist/utilities/fieldsDrawer/useLexicalDocumentDrawer.d.ts.map +1 -0
- package/dist/utilities/fieldsDrawer/useLexicalDocumentDrawer.js +129 -0
- package/dist/utilities/fieldsDrawer/useLexicalDocumentDrawer.js.map +1 -0
- package/dist/utilities/fieldsDrawer/useLexicalDrawer.d.ts +10 -0
- package/dist/utilities/fieldsDrawer/useLexicalDrawer.d.ts.map +1 -0
- package/dist/utilities/fieldsDrawer/useLexicalDrawer.js +136 -0
- package/dist/utilities/fieldsDrawer/useLexicalDrawer.js.map +1 -0
- package/dist/utilities/fieldsDrawer/useLexicalListDrawer.d.ts +16 -0
- package/dist/utilities/fieldsDrawer/useLexicalListDrawer.d.ts.map +1 -0
- package/dist/utilities/fieldsDrawer/useLexicalListDrawer.js +144 -0
- package/dist/utilities/fieldsDrawer/useLexicalListDrawer.js.map +1 -0
- package/package.json +7 -7
- package/dist/exports/client/RelationshipComponent-FTWR5YDX.js +0 -2
- package/dist/exports/client/RelationshipComponent-FTWR5YDX.js.map +0 -7
- package/dist/exports/client/chunk-WAMTSCVM.js +0 -2
- package/dist/exports/client/chunk-WAMTSCVM.js.map +0 -7
- package/dist/exports/client/component-6PBZ2U3Z.js +0 -2
- package/dist/exports/client/component-6PBZ2U3Z.js.map +0 -7
- /package/dist/exports/client/{chunk-QZNJUROL.js.map → chunk-XY4TCSM7.js.map} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/features/blocks/client/plugin/index.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/features/blocks/client/plugin/index.tsx"],"names":[],"mappings":"AA6BA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AAC9D,OAAO,KAAK,EAAe,qBAAqB,EAAE,MAAM,kCAAkC,CAAA;AAC1F,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAA;AAY3D,MAAM,MAAM,kBAAkB,GAAG,qBAAqB,CAAA;AAEtD,eAAO,MAAM,YAAY,EAAE,eAAe,CAAC,wBAAwB,CAmKlE,CAAA"}
|
|
@@ -5,8 +5,9 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
5
5
|
import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js';
|
|
6
6
|
import { $insertNodeToNearestRoot, $wrapNodeInElement, mergeRegister } from '@lexical/utils';
|
|
7
7
|
import { getTranslation } from '@payloadcms/translations';
|
|
8
|
-
import { formatDrawerSlug, useEditDepth, useFieldProps,
|
|
8
|
+
import { formatDrawerSlug, useEditDepth, useFieldProps, useTranslation } from '@payloadcms/ui';
|
|
9
9
|
import { $createParagraphNode, $getNodeByKey, $getPreviousSelection, $getSelection, $insertNodes, $isParagraphNode, $isRangeSelection, $isRootOrShadowRoot, COMMAND_PRIORITY_EDITOR } from 'lexical';
|
|
10
|
+
import { useLexicalDrawer } from 'packages/richtext-lexical/src/utilities/fieldsDrawer/useLexicalDrawer.js';
|
|
10
11
|
import React, { useEffect, useState } from 'react';
|
|
11
12
|
import { useEditorConfigContext } from '../../../../lexical/config/client/EditorConfigProvider.js';
|
|
12
13
|
import { FieldsDrawer } from '../../../../utilities/fieldsDrawer/Drawer.js';
|
|
@@ -14,12 +15,8 @@ import { $createBlockNode, BlockNode } from '../nodes/BlocksNode.js';
|
|
|
14
15
|
import { $createInlineBlockNode, $isInlineBlockNode } from '../nodes/InlineBlocksNode.js';
|
|
15
16
|
import { INSERT_BLOCK_COMMAND, INSERT_INLINE_BLOCK_COMMAND, OPEN_INLINE_BLOCK_DRAWER_COMMAND } from './commands.js';
|
|
16
17
|
export const BlocksPlugin = () => {
|
|
17
|
-
const $ = _c(
|
|
18
|
+
const $ = _c(21);
|
|
18
19
|
const [editor] = useLexicalComposerContext();
|
|
19
|
-
const {
|
|
20
|
-
closeModal,
|
|
21
|
-
toggleModal
|
|
22
|
-
} = useModal();
|
|
23
20
|
const [blockFields, setBlockFields] = useState(null);
|
|
24
21
|
const [blockType, setBlockType] = useState("");
|
|
25
22
|
const [targetNodeKey, setTargetNodeKey] = useState(null);
|
|
@@ -48,6 +45,9 @@ export const BlocksPlugin = () => {
|
|
|
48
45
|
t1 = $[2];
|
|
49
46
|
}
|
|
50
47
|
const drawerSlug = t1;
|
|
48
|
+
const {
|
|
49
|
+
toggleDrawer
|
|
50
|
+
} = useLexicalDrawer(drawerSlug);
|
|
51
51
|
const {
|
|
52
52
|
field: t2
|
|
53
53
|
} = useEditorConfigContext();
|
|
@@ -56,7 +56,7 @@ export const BlocksPlugin = () => {
|
|
|
56
56
|
} = t2;
|
|
57
57
|
let t3;
|
|
58
58
|
let t4;
|
|
59
|
-
if ($[3] !== editor || $[4] !== targetNodeKey || $[5] !==
|
|
59
|
+
if ($[3] !== editor || $[4] !== targetNodeKey || $[5] !== toggleDrawer) {
|
|
60
60
|
t3 = () => {
|
|
61
61
|
if (!editor.hasNodes([BlockNode])) {
|
|
62
62
|
throw new Error("BlocksPlugin: BlocksNode not registered on editor");
|
|
@@ -102,7 +102,7 @@ export const BlocksPlugin = () => {
|
|
|
102
102
|
setTargetNodeKey(nodeKey ?? null);
|
|
103
103
|
setBlockType(fields_0?.blockType ?? "");
|
|
104
104
|
if (nodeKey) {
|
|
105
|
-
|
|
105
|
+
toggleDrawer();
|
|
106
106
|
return true;
|
|
107
107
|
}
|
|
108
108
|
let rangeSelection;
|
|
@@ -114,21 +114,20 @@ export const BlocksPlugin = () => {
|
|
|
114
114
|
}
|
|
115
115
|
});
|
|
116
116
|
if (rangeSelection) {
|
|
117
|
-
|
|
117
|
+
toggleDrawer();
|
|
118
118
|
}
|
|
119
119
|
return true;
|
|
120
120
|
}, COMMAND_PRIORITY_EDITOR));
|
|
121
121
|
};
|
|
122
|
-
t4 = [editor, targetNodeKey,
|
|
122
|
+
t4 = [editor, targetNodeKey, toggleDrawer];
|
|
123
123
|
$[3] = editor;
|
|
124
124
|
$[4] = targetNodeKey;
|
|
125
|
-
$[5] =
|
|
126
|
-
$[6] =
|
|
127
|
-
$[7] =
|
|
128
|
-
$[8] = t4;
|
|
125
|
+
$[5] = toggleDrawer;
|
|
126
|
+
$[6] = t3;
|
|
127
|
+
$[7] = t4;
|
|
129
128
|
} else {
|
|
130
|
-
t3 = $[
|
|
131
|
-
t4 = $[
|
|
129
|
+
t3 = $[6];
|
|
130
|
+
t4 = $[7];
|
|
132
131
|
}
|
|
133
132
|
useEffect(t3, t4);
|
|
134
133
|
if (!blockFields) {
|
|
@@ -138,7 +137,7 @@ export const BlocksPlugin = () => {
|
|
|
138
137
|
const componentMapRenderedBlockPath = `lexical_internal_feature.blocks.fields.lexical_inline_blocks`;
|
|
139
138
|
let t5;
|
|
140
139
|
let t6;
|
|
141
|
-
if ($[
|
|
140
|
+
if ($[8] !== richTextComponentMap || $[9] !== blockFields || $[10] !== i18n || $[11] !== t || $[12] !== blockType || $[13] !== editor || $[14] !== drawerSlug || $[15] !== schemaFieldsPath) {
|
|
142
141
|
t6 = Symbol.for("react.early_return_sentinel");
|
|
143
142
|
bb0: {
|
|
144
143
|
const blocksField = richTextComponentMap?.has(componentMapRenderedBlockPath) ? richTextComponentMap.get(componentMapRenderedBlockPath)[0] : null;
|
|
@@ -149,22 +148,19 @@ export const BlocksPlugin = () => {
|
|
|
149
148
|
}
|
|
150
149
|
const blockDisplayName = clientBlock?.labels?.singular ? getTranslation(clientBlock?.labels?.singular, i18n) : clientBlock?.slug;
|
|
151
150
|
let t7;
|
|
152
|
-
if ($[
|
|
151
|
+
if ($[18] !== blockType || $[19] !== editor) {
|
|
153
152
|
t7 = (_fields, data) => {
|
|
154
|
-
closeModal(drawerSlug);
|
|
155
153
|
if (!data) {
|
|
156
154
|
return;
|
|
157
155
|
}
|
|
158
156
|
data.blockType = blockType;
|
|
159
157
|
editor.dispatchCommand(INSERT_INLINE_BLOCK_COMMAND, data);
|
|
160
158
|
};
|
|
161
|
-
$[
|
|
162
|
-
$[
|
|
163
|
-
$[
|
|
164
|
-
$[23] = editor;
|
|
165
|
-
$[24] = t7;
|
|
159
|
+
$[18] = blockType;
|
|
160
|
+
$[19] = editor;
|
|
161
|
+
$[20] = t7;
|
|
166
162
|
} else {
|
|
167
|
-
t7 = $[
|
|
163
|
+
t7 = $[20];
|
|
168
164
|
}
|
|
169
165
|
t5 = _jsx(FieldsDrawer, {
|
|
170
166
|
data: blockFields,
|
|
@@ -179,20 +175,19 @@ export const BlocksPlugin = () => {
|
|
|
179
175
|
schemaPathSuffix: blockFields?.blockType
|
|
180
176
|
});
|
|
181
177
|
}
|
|
182
|
-
$[
|
|
183
|
-
$[
|
|
184
|
-
$[
|
|
185
|
-
$[
|
|
186
|
-
$[
|
|
178
|
+
$[8] = richTextComponentMap;
|
|
179
|
+
$[9] = blockFields;
|
|
180
|
+
$[10] = i18n;
|
|
181
|
+
$[11] = t;
|
|
182
|
+
$[12] = blockType;
|
|
183
|
+
$[13] = editor;
|
|
187
184
|
$[14] = drawerSlug;
|
|
188
|
-
$[15] =
|
|
189
|
-
$[16] =
|
|
190
|
-
$[17] =
|
|
191
|
-
$[18] = t5;
|
|
192
|
-
$[19] = t6;
|
|
185
|
+
$[15] = schemaFieldsPath;
|
|
186
|
+
$[16] = t5;
|
|
187
|
+
$[17] = t6;
|
|
193
188
|
} else {
|
|
194
|
-
t5 = $[
|
|
195
|
-
t6 = $[
|
|
189
|
+
t5 = $[16];
|
|
190
|
+
t6 = $[17];
|
|
196
191
|
}
|
|
197
192
|
if (t6 !== Symbol.for("react.early_return_sentinel")) {
|
|
198
193
|
return t6;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["c","_c","useLexicalComposerContext","$insertNodeToNearestRoot","$wrapNodeInElement","mergeRegister","getTranslation","formatDrawerSlug","useEditDepth","useFieldProps","useModal","useTranslation","$createParagraphNode","$getNodeByKey","$getPreviousSelection","$getSelection","$insertNodes","$isParagraphNode","$isRangeSelection","$isRootOrShadowRoot","COMMAND_PRIORITY_EDITOR","React","useEffect","useState","useEditorConfigContext","FieldsDrawer","$createBlockNode","BlockNode","$createInlineBlockNode","$isInlineBlockNode","INSERT_BLOCK_COMMAND","INSERT_INLINE_BLOCK_COMMAND","OPEN_INLINE_BLOCK_DRAWER_COMMAND","BlocksPlugin","$","editor","closeModal","toggleModal","blockFields","setBlockFields","blockType","setBlockType","targetNodeKey","setTargetNodeKey","i18n","t","schemaPath","uuid","editDepth","t0","t1","slug","depth","drawerSlug","field","t2","richTextComponentMap","t3","t4","hasNodes","Error","registerCommand","payload","update","selection","blockNode","focus","focusNode","getNode","getTextContentSize","getParentOrThrow","getChildren","filter","node","length","remove","fields","node_0","setFields","inlineBlockNode","selectEnd","t5","fields_0","nodeKey","rangeSelection","getEditorState","read","selection_0","schemaFieldsPath","componentMapRenderedBlockPath","t6","Symbol","for","bb0","blocksField","has","get","clientBlock","blocks","find","block","blockDisplayName","labels","singular","t7","_fields","data","dispatchCommand","_jsx","drawerTitle","id","label","featureKey","fieldMapOverride","handleDrawerSubmit","schemaFieldsPathOverride","schemaPathSuffix"],"sources":["../../../../../src/features/blocks/client/plugin/index.tsx"],"sourcesContent":["'use client'\n\nimport type { BlocksFieldClient } from 'payload'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js'\nimport { $insertNodeToNearestRoot, $wrapNodeInElement, mergeRegister } from '@lexical/utils'\nimport { getTranslation } from '@payloadcms/translations'\nimport {\n formatDrawerSlug,\n useEditDepth,\n useFieldProps,\n useModal,\n useTranslation,\n} from '@payloadcms/ui'\nimport {\n $createParagraphNode,\n $getNodeByKey,\n $getPreviousSelection,\n $getSelection,\n $insertNodes,\n $isParagraphNode,\n $isRangeSelection,\n $isRootOrShadowRoot,\n COMMAND_PRIORITY_EDITOR,\n type RangeSelection,\n} from 'lexical'\nimport React, { useEffect, useState } from 'react'\n\nimport type { PluginComponent } from '../../../typesClient.js'\nimport type { BlockFields, BlockFieldsOptionalID } from '../../server/nodes/BlocksNode.js'\nimport type { BlocksFeatureClientProps } from '../index.js'\n\nimport { useEditorConfigContext } from '../../../../lexical/config/client/EditorConfigProvider.js'\nimport { FieldsDrawer } from '../../../../utilities/fieldsDrawer/Drawer.js'\nimport { $createBlockNode, BlockNode } from '../nodes/BlocksNode.js'\nimport { $createInlineBlockNode, $isInlineBlockNode } from '../nodes/InlineBlocksNode.js'\nimport {\n INSERT_BLOCK_COMMAND,\n INSERT_INLINE_BLOCK_COMMAND,\n OPEN_INLINE_BLOCK_DRAWER_COMMAND,\n} from './commands.js'\n\nexport type InsertBlockPayload = BlockFieldsOptionalID\n\nexport const BlocksPlugin: PluginComponent<BlocksFeatureClientProps> = () => {\n const [editor] = useLexicalComposerContext()\n const { closeModal, toggleModal } = useModal()\n const [blockFields, setBlockFields] = useState<BlockFields | null>(null)\n const [blockType, setBlockType] = useState<string>('' as any)\n const [targetNodeKey, setTargetNodeKey] = useState<null | string>(null)\n const { i18n, t } = useTranslation<string, any>()\n const { schemaPath } = useFieldProps()\n const { uuid } = useEditorConfigContext()\n const editDepth = useEditDepth()\n\n const drawerSlug = formatDrawerSlug({\n slug: `lexical-inlineBlocks-create-` + uuid,\n depth: editDepth,\n })\n\n const {\n field: { richTextComponentMap },\n } = useEditorConfigContext()\n\n useEffect(() => {\n if (!editor.hasNodes([BlockNode])) {\n throw new Error('BlocksPlugin: BlocksNode not registered on editor')\n }\n\n return mergeRegister(\n editor.registerCommand<InsertBlockPayload>(\n INSERT_BLOCK_COMMAND,\n (payload: InsertBlockPayload) => {\n editor.update(() => {\n const selection = $getSelection() || $getPreviousSelection()\n\n if ($isRangeSelection(selection)) {\n const blockNode = $createBlockNode(payload)\n // Insert blocks node BEFORE potentially removing focusNode, as $insertNodeToNearestRoot errors if the focusNode doesn't exist\n $insertNodeToNearestRoot(blockNode)\n\n const { focus } = selection\n const focusNode = focus.getNode()\n\n // First, delete currently selected node if it's an empty paragraph and if there are sufficient\n // paragraph nodes (more than 1) left in the parent node, so that we don't \"trap\" the user\n if (\n $isParagraphNode(focusNode) &&\n focusNode.getTextContentSize() === 0 &&\n focusNode\n .getParentOrThrow()\n .getChildren()\n .filter((node) => $isParagraphNode(node)).length > 1\n ) {\n focusNode.remove()\n }\n }\n })\n\n return true\n },\n COMMAND_PRIORITY_EDITOR,\n ),\n editor.registerCommand(\n INSERT_INLINE_BLOCK_COMMAND,\n (fields) => {\n if (targetNodeKey) {\n const node = $getNodeByKey(targetNodeKey)\n\n if (!node || !$isInlineBlockNode(node)) {\n return false\n }\n\n node.setFields(fields as BlockFields)\n\n setTargetNodeKey(null)\n return true\n }\n\n const inlineBlockNode = $createInlineBlockNode(fields as BlockFields)\n $insertNodes([inlineBlockNode])\n if ($isRootOrShadowRoot(inlineBlockNode.getParentOrThrow())) {\n $wrapNodeInElement(inlineBlockNode, $createParagraphNode).selectEnd()\n }\n\n return true\n },\n COMMAND_PRIORITY_EDITOR,\n ),\n editor.registerCommand(\n OPEN_INLINE_BLOCK_DRAWER_COMMAND,\n ({ fields, nodeKey }) => {\n setBlockFields((fields as BlockFields) ?? null)\n setTargetNodeKey(nodeKey ?? null)\n setBlockType(fields?.blockType ?? ('' as any))\n\n if (nodeKey) {\n toggleModal(drawerSlug)\n return true\n }\n\n let rangeSelection: null | RangeSelection = null\n\n editor.getEditorState().read(() => {\n const selection = $getSelection()\n if ($isRangeSelection(selection)) {\n rangeSelection = selection\n }\n })\n\n if (rangeSelection) {\n //setLastSelection(rangeSelection)\n toggleModal(drawerSlug)\n }\n return true\n },\n COMMAND_PRIORITY_EDITOR,\n ),\n )\n }, [editor, targetNodeKey, toggleModal, drawerSlug])\n\n if (!blockFields) {\n return null\n }\n\n const schemaFieldsPath = `${schemaPath}.lexical_internal_feature.blocks.lexical_inline_blocks.lexical_inline_blocks.${blockFields?.blockType}`\n\n const componentMapRenderedBlockPath = `lexical_internal_feature.blocks.fields.lexical_inline_blocks`\n const blocksField: BlocksFieldClient = richTextComponentMap?.has(componentMapRenderedBlockPath)\n ? richTextComponentMap.get(componentMapRenderedBlockPath)[0]\n : null\n\n const clientBlock = blocksField\n ? blocksField.blocks.find((block) => block.slug === blockFields?.blockType)\n : null\n\n if (!blocksField) {\n return null\n }\n\n const blockDisplayName = clientBlock?.labels?.singular\n ? getTranslation(clientBlock?.labels?.singular, i18n)\n : clientBlock?.slug\n\n return (\n <FieldsDrawer\n data={blockFields}\n drawerSlug={drawerSlug}\n drawerTitle={t(`lexical:blocks:inlineBlocks:${blockFields?.id ? 'edit' : 'create'}`, {\n label: blockDisplayName ?? t('lexical:blocks:inlineBlocks:label'),\n })}\n featureKey=\"blocks\"\n fieldMapOverride={clientBlock?.fields}\n handleDrawerSubmit={(_fields, data) => {\n closeModal(drawerSlug)\n if (!data) {\n return\n }\n\n data.blockType = blockType\n\n editor.dispatchCommand(INSERT_INLINE_BLOCK_COMMAND, data)\n }}\n schemaFieldsPathOverride={schemaFieldsPath}\n schemaPathSuffix={blockFields?.blockType}\n />\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["c","_c","useLexicalComposerContext","$insertNodeToNearestRoot","$wrapNodeInElement","mergeRegister","getTranslation","formatDrawerSlug","useEditDepth","useFieldProps","useTranslation","$createParagraphNode","$getNodeByKey","$getPreviousSelection","$getSelection","$insertNodes","$isParagraphNode","$isRangeSelection","$isRootOrShadowRoot","COMMAND_PRIORITY_EDITOR","useLexicalDrawer","React","useEffect","useState","useEditorConfigContext","FieldsDrawer","$createBlockNode","BlockNode","$createInlineBlockNode","$isInlineBlockNode","INSERT_BLOCK_COMMAND","INSERT_INLINE_BLOCK_COMMAND","OPEN_INLINE_BLOCK_DRAWER_COMMAND","BlocksPlugin","$","editor","blockFields","setBlockFields","blockType","setBlockType","targetNodeKey","setTargetNodeKey","i18n","t","schemaPath","uuid","editDepth","t0","t1","slug","depth","drawerSlug","toggleDrawer","field","t2","richTextComponentMap","t3","t4","hasNodes","Error","registerCommand","payload","update","selection","blockNode","focus","focusNode","getNode","getTextContentSize","getParentOrThrow","getChildren","filter","node","length","remove","fields","node_0","setFields","inlineBlockNode","selectEnd","t5","fields_0","nodeKey","rangeSelection","getEditorState","read","selection_0","schemaFieldsPath","componentMapRenderedBlockPath","t6","Symbol","for","bb0","blocksField","has","get","clientBlock","blocks","find","block","blockDisplayName","labels","singular","t7","_fields","data","dispatchCommand","_jsx","drawerTitle","id","label","featureKey","fieldMapOverride","handleDrawerSubmit","schemaFieldsPathOverride","schemaPathSuffix"],"sources":["../../../../../src/features/blocks/client/plugin/index.tsx"],"sourcesContent":["'use client'\n\nimport type { BlocksFieldClient } from 'payload'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js'\nimport { $insertNodeToNearestRoot, $wrapNodeInElement, mergeRegister } from '@lexical/utils'\nimport { getTranslation } from '@payloadcms/translations'\nimport {\n formatDrawerSlug,\n useEditDepth,\n useFieldProps,\n useModal,\n useTranslation,\n} from '@payloadcms/ui'\nimport {\n $createParagraphNode,\n $getNodeByKey,\n $getPreviousSelection,\n $getSelection,\n $insertNodes,\n $isParagraphNode,\n $isRangeSelection,\n $isRootOrShadowRoot,\n COMMAND_PRIORITY_EDITOR,\n type RangeSelection,\n} from 'lexical'\nimport { useLexicalDrawer } from 'packages/richtext-lexical/src/utilities/fieldsDrawer/useLexicalDrawer.js'\nimport React, { useEffect, useState } from 'react'\n\nimport type { PluginComponent } from '../../../typesClient.js'\nimport type { BlockFields, BlockFieldsOptionalID } from '../../server/nodes/BlocksNode.js'\nimport type { BlocksFeatureClientProps } from '../index.js'\n\nimport { useEditorConfigContext } from '../../../../lexical/config/client/EditorConfigProvider.js'\nimport { FieldsDrawer } from '../../../../utilities/fieldsDrawer/Drawer.js'\nimport { $createBlockNode, BlockNode } from '../nodes/BlocksNode.js'\nimport { $createInlineBlockNode, $isInlineBlockNode } from '../nodes/InlineBlocksNode.js'\nimport {\n INSERT_BLOCK_COMMAND,\n INSERT_INLINE_BLOCK_COMMAND,\n OPEN_INLINE_BLOCK_DRAWER_COMMAND,\n} from './commands.js'\n\nexport type InsertBlockPayload = BlockFieldsOptionalID\n\nexport const BlocksPlugin: PluginComponent<BlocksFeatureClientProps> = () => {\n const [editor] = useLexicalComposerContext()\n const [blockFields, setBlockFields] = useState<BlockFields | null>(null)\n const [blockType, setBlockType] = useState<string>('' as any)\n const [targetNodeKey, setTargetNodeKey] = useState<null | string>(null)\n const { i18n, t } = useTranslation<string, any>()\n const { schemaPath } = useFieldProps()\n const { uuid } = useEditorConfigContext()\n const editDepth = useEditDepth()\n\n const drawerSlug = formatDrawerSlug({\n slug: `lexical-inlineBlocks-create-` + uuid,\n depth: editDepth,\n })\n\n const { toggleDrawer } = useLexicalDrawer(drawerSlug)\n\n const {\n field: { richTextComponentMap },\n } = useEditorConfigContext()\n\n useEffect(() => {\n if (!editor.hasNodes([BlockNode])) {\n throw new Error('BlocksPlugin: BlocksNode not registered on editor')\n }\n\n return mergeRegister(\n editor.registerCommand<InsertBlockPayload>(\n INSERT_BLOCK_COMMAND,\n (payload: InsertBlockPayload) => {\n editor.update(() => {\n const selection = $getSelection() || $getPreviousSelection()\n\n if ($isRangeSelection(selection)) {\n const blockNode = $createBlockNode(payload)\n // Insert blocks node BEFORE potentially removing focusNode, as $insertNodeToNearestRoot errors if the focusNode doesn't exist\n $insertNodeToNearestRoot(blockNode)\n\n const { focus } = selection\n const focusNode = focus.getNode()\n\n // First, delete currently selected node if it's an empty paragraph and if there are sufficient\n // paragraph nodes (more than 1) left in the parent node, so that we don't \"trap\" the user\n if (\n $isParagraphNode(focusNode) &&\n focusNode.getTextContentSize() === 0 &&\n focusNode\n .getParentOrThrow()\n .getChildren()\n .filter((node) => $isParagraphNode(node)).length > 1\n ) {\n focusNode.remove()\n }\n }\n })\n\n return true\n },\n COMMAND_PRIORITY_EDITOR,\n ),\n editor.registerCommand(\n INSERT_INLINE_BLOCK_COMMAND,\n (fields) => {\n if (targetNodeKey) {\n const node = $getNodeByKey(targetNodeKey)\n\n if (!node || !$isInlineBlockNode(node)) {\n return false\n }\n\n node.setFields(fields as BlockFields)\n\n setTargetNodeKey(null)\n return true\n }\n\n const inlineBlockNode = $createInlineBlockNode(fields as BlockFields)\n $insertNodes([inlineBlockNode])\n if ($isRootOrShadowRoot(inlineBlockNode.getParentOrThrow())) {\n $wrapNodeInElement(inlineBlockNode, $createParagraphNode).selectEnd()\n }\n\n return true\n },\n COMMAND_PRIORITY_EDITOR,\n ),\n editor.registerCommand(\n OPEN_INLINE_BLOCK_DRAWER_COMMAND,\n ({ fields, nodeKey }) => {\n setBlockFields((fields as BlockFields) ?? null)\n setTargetNodeKey(nodeKey ?? null)\n setBlockType(fields?.blockType ?? ('' as any))\n\n if (nodeKey) {\n toggleDrawer()\n return true\n }\n\n let rangeSelection: null | RangeSelection = null\n\n editor.getEditorState().read(() => {\n const selection = $getSelection()\n if ($isRangeSelection(selection)) {\n rangeSelection = selection\n }\n })\n\n if (rangeSelection) {\n //setLastSelection(rangeSelection)\n toggleDrawer()\n }\n return true\n },\n COMMAND_PRIORITY_EDITOR,\n ),\n )\n }, [editor, targetNodeKey, toggleDrawer])\n\n if (!blockFields) {\n return null\n }\n\n const schemaFieldsPath = `${schemaPath}.lexical_internal_feature.blocks.lexical_inline_blocks.lexical_inline_blocks.${blockFields?.blockType}`\n\n const componentMapRenderedBlockPath = `lexical_internal_feature.blocks.fields.lexical_inline_blocks`\n const blocksField: BlocksFieldClient = richTextComponentMap?.has(componentMapRenderedBlockPath)\n ? richTextComponentMap.get(componentMapRenderedBlockPath)[0]\n : null\n\n const clientBlock = blocksField\n ? blocksField.blocks.find((block) => block.slug === blockFields?.blockType)\n : null\n\n if (!blocksField) {\n return null\n }\n\n const blockDisplayName = clientBlock?.labels?.singular\n ? getTranslation(clientBlock?.labels?.singular, i18n)\n : clientBlock?.slug\n\n return (\n <FieldsDrawer\n data={blockFields}\n drawerSlug={drawerSlug}\n drawerTitle={t(`lexical:blocks:inlineBlocks:${blockFields?.id ? 'edit' : 'create'}`, {\n label: blockDisplayName ?? t('lexical:blocks:inlineBlocks:label'),\n })}\n featureKey=\"blocks\"\n fieldMapOverride={clientBlock?.fields}\n handleDrawerSubmit={(_fields, data) => {\n if (!data) {\n return\n }\n\n data.blockType = blockType\n\n editor.dispatchCommand(INSERT_INLINE_BLOCK_COMMAND, data)\n }}\n schemaFieldsPathOverride={schemaFieldsPath}\n schemaPathSuffix={blockFields?.blockType}\n />\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/features/experimental_table/client/plugins/TablePlugin/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,kBAAkB,EAClB,KAAK,EACL,cAAc,EACd,aAAa,EACb,WAAW,EAEZ,MAAM,SAAS,CAAA;AAChB,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/features/experimental_table/client/plugins/TablePlugin/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,kBAAkB,EAClB,KAAK,EACL,cAAc,EACd,aAAa,EACb,WAAW,EAEZ,MAAM,SAAS,CAAA;AAChB,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,OAAO,CAAA;AAUhC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAIjE,OAAO,cAAc,CAAA;AAErB,MAAM,MAAM,gBAAgB,GAAG;IAC7B,gBAAgB,EAAE,gBAAgB,GAAG,IAAI,CAAA;IACzC,iBAAiB,EAAE,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,OAAO,GAAG,IAAI,CAAA;IAC1D,GAAG,EAAE,CACH,gBAAgB,EAAE,gBAAgB,GAAG,IAAI,EACzC,iBAAiB,EAAE,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,OAAO,GAAG,IAAI,KACvD,IAAI,CAAA;CACV,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG,QAAQ,CAAC;IACtC,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAA;IACzC,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,KAAK,IAAI,CAAA;IACtD,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,KAAK,CAAC,EAAE,kBAAkB,CAAA;CAC3B,CAAC,CAAA;AAEF,eAAO,MAAM,yBAAyB,EAAE,cAAc,CAAC,EAAE,CAExD,CAAA;AAED,eAAO,MAAM,WAAW,iCAMtB,CAAA;AAEF,wBAAgB,YAAY,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAA;CAAE,eAwBnE;AAED,eAAO,MAAM,WAAW,EAAE,eA6DzB,CAAA"}
|
|
@@ -6,8 +6,9 @@ import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext
|
|
|
6
6
|
import { TablePlugin as LexicalReactTablePlugin } from '@lexical/react/LexicalTablePlugin';
|
|
7
7
|
import { INSERT_TABLE_COMMAND, TableNode } from '@lexical/table';
|
|
8
8
|
import { mergeRegister } from '@lexical/utils';
|
|
9
|
-
import { formatDrawerSlug, useEditDepth
|
|
9
|
+
import { formatDrawerSlug, useEditDepth } from '@payloadcms/ui';
|
|
10
10
|
import { $getSelection, $isRangeSelection, COMMAND_PRIORITY_EDITOR, createCommand } from 'lexical';
|
|
11
|
+
import { useLexicalDrawer } from 'packages/richtext-lexical/src/utilities/fieldsDrawer/useLexicalDrawer.js';
|
|
11
12
|
import { createContext, useContext, useEffect, useMemo, useState } from 'react';
|
|
12
13
|
import * as React from 'react';
|
|
13
14
|
import { useEditorConfigContext } from '../../../../../lexical/config/client/EditorConfigProvider.js';
|
|
@@ -42,13 +43,9 @@ export function TableContext({
|
|
|
42
43
|
});
|
|
43
44
|
}
|
|
44
45
|
export const TablePlugin = () => {
|
|
45
|
-
const $ = _c(
|
|
46
|
+
const $ = _c(15);
|
|
46
47
|
const [editor] = useLexicalComposerContext();
|
|
47
48
|
const cellContext = useContext(CellContext);
|
|
48
|
-
const {
|
|
49
|
-
closeModal,
|
|
50
|
-
toggleModal
|
|
51
|
-
} = useModal();
|
|
52
49
|
const editDepth = useEditDepth();
|
|
53
50
|
const {
|
|
54
51
|
uuid
|
|
@@ -67,8 +64,11 @@ export const TablePlugin = () => {
|
|
|
67
64
|
t1 = $[2];
|
|
68
65
|
}
|
|
69
66
|
const drawerSlug = t1;
|
|
67
|
+
const {
|
|
68
|
+
toggleDrawer
|
|
69
|
+
} = useLexicalDrawer(drawerSlug);
|
|
70
70
|
let t2;
|
|
71
|
-
if ($[3] !== editor || $[4] !==
|
|
71
|
+
if ($[3] !== editor || $[4] !== toggleDrawer) {
|
|
72
72
|
t2 = () => {
|
|
73
73
|
if (!editor.hasNodes([TableNode])) {
|
|
74
74
|
throw new Error("TablePlugin: TableNode is not registered on editor");
|
|
@@ -83,34 +83,31 @@ export const TablePlugin = () => {
|
|
|
83
83
|
}
|
|
84
84
|
});
|
|
85
85
|
if (rangeSelection) {
|
|
86
|
-
|
|
86
|
+
toggleDrawer();
|
|
87
87
|
}
|
|
88
88
|
return true;
|
|
89
89
|
}, COMMAND_PRIORITY_EDITOR));
|
|
90
90
|
};
|
|
91
91
|
$[3] = editor;
|
|
92
|
-
$[4] =
|
|
93
|
-
$[5] =
|
|
94
|
-
$[6] = t2;
|
|
92
|
+
$[4] = toggleDrawer;
|
|
93
|
+
$[5] = t2;
|
|
95
94
|
} else {
|
|
96
|
-
t2 = $[
|
|
95
|
+
t2 = $[5];
|
|
97
96
|
}
|
|
98
97
|
let t3;
|
|
99
|
-
if ($[
|
|
100
|
-
t3 = [cellContext,
|
|
101
|
-
$[
|
|
102
|
-
$[
|
|
103
|
-
$[
|
|
104
|
-
$[
|
|
105
|
-
$[11] = t3;
|
|
98
|
+
if ($[6] !== cellContext || $[7] !== editor || $[8] !== toggleDrawer) {
|
|
99
|
+
t3 = [cellContext, editor, toggleDrawer];
|
|
100
|
+
$[6] = cellContext;
|
|
101
|
+
$[7] = editor;
|
|
102
|
+
$[8] = toggleDrawer;
|
|
103
|
+
$[9] = t3;
|
|
106
104
|
} else {
|
|
107
|
-
t3 = $[
|
|
105
|
+
t3 = $[9];
|
|
108
106
|
}
|
|
109
107
|
useEffect(t2, t3);
|
|
110
108
|
let t4;
|
|
111
|
-
if ($[
|
|
109
|
+
if ($[10] !== editor) {
|
|
112
110
|
t4 = (_fields, data) => {
|
|
113
|
-
closeModal(drawerSlug);
|
|
114
111
|
if (!data.columns || !data.rows) {
|
|
115
112
|
return;
|
|
116
113
|
}
|
|
@@ -119,15 +116,13 @@ export const TablePlugin = () => {
|
|
|
119
116
|
rows: String(data.rows)
|
|
120
117
|
});
|
|
121
118
|
};
|
|
122
|
-
$[
|
|
123
|
-
$[
|
|
124
|
-
$[14] = editor;
|
|
125
|
-
$[15] = t4;
|
|
119
|
+
$[10] = editor;
|
|
120
|
+
$[11] = t4;
|
|
126
121
|
} else {
|
|
127
|
-
t4 = $[
|
|
122
|
+
t4 = $[11];
|
|
128
123
|
}
|
|
129
124
|
let t5;
|
|
130
|
-
if ($[
|
|
125
|
+
if ($[12] !== drawerSlug || $[13] !== t4) {
|
|
131
126
|
t5 = _jsxs(React.Fragment, {
|
|
132
127
|
children: [_jsx(FieldsDrawer, {
|
|
133
128
|
drawerSlug,
|
|
@@ -140,11 +135,11 @@ export const TablePlugin = () => {
|
|
|
140
135
|
hasCellMerge: true
|
|
141
136
|
})]
|
|
142
137
|
});
|
|
143
|
-
$[
|
|
144
|
-
$[
|
|
145
|
-
$[
|
|
138
|
+
$[12] = drawerSlug;
|
|
139
|
+
$[13] = t4;
|
|
140
|
+
$[14] = t5;
|
|
146
141
|
} else {
|
|
147
|
-
t5 = $[
|
|
142
|
+
t5 = $[14];
|
|
148
143
|
}
|
|
149
144
|
return t5;
|
|
150
145
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["c","_c","useLexicalComposerContext","TablePlugin","LexicalReactTablePlugin","INSERT_TABLE_COMMAND","TableNode","mergeRegister","formatDrawerSlug","useEditDepth","
|
|
1
|
+
{"version":3,"file":"index.js","names":["c","_c","useLexicalComposerContext","TablePlugin","LexicalReactTablePlugin","INSERT_TABLE_COMMAND","TableNode","mergeRegister","formatDrawerSlug","useEditDepth","$getSelection","$isRangeSelection","COMMAND_PRIORITY_EDITOR","createCommand","useLexicalDrawer","createContext","useContext","useEffect","useMemo","useState","React","useEditorConfigContext","FieldsDrawer","OPEN_TABLE_DRAWER_COMMAND","CellContext","cellEditorConfig","cellEditorPlugins","set","TableContext","children","contextValue","setContextValue","_jsx","Provider","value","$","editor","cellContext","editDepth","uuid","t0","t1","slug","depth","drawerSlug","toggleDrawer","t2","hasNodes","Error","registerCommand","rangeSelection","getEditorState","read","selection","t3","t4","_fields","data","columns","rows","dispatchCommand","String","t5","_jsxs","Fragment","drawerTitle","featureKey","handleDrawerSubmit","schemaPathSuffix","hasCellBackgroundColor","hasCellMerge"],"sources":["../../../../../../src/features/experimental_table/client/plugins/TablePlugin/index.tsx"],"sourcesContent":["'use client'\n\nimport type {\n EditorThemeClasses,\n Klass,\n LexicalCommand,\n LexicalEditor,\n LexicalNode,\n RangeSelection,\n} from 'lexical'\nimport type { JSX } from 'react'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext'\nimport { TablePlugin as LexicalReactTablePlugin } from '@lexical/react/LexicalTablePlugin'\nimport { INSERT_TABLE_COMMAND, TableNode } from '@lexical/table'\nimport { mergeRegister } from '@lexical/utils'\nimport { formatDrawerSlug, useEditDepth, useModal } from '@payloadcms/ui'\nimport { $getSelection, $isRangeSelection, COMMAND_PRIORITY_EDITOR, createCommand } from 'lexical'\nimport { useLexicalDrawer } from 'packages/richtext-lexical/src/utilities/fieldsDrawer/useLexicalDrawer.js'\nimport { createContext, useContext, useEffect, useMemo, useState } from 'react'\nimport * as React from 'react'\n\nimport type { PluginComponent } from '../../../../typesClient.js'\n\nimport { useEditorConfigContext } from '../../../../../lexical/config/client/EditorConfigProvider.js'\nimport { FieldsDrawer } from '../../../../../utilities/fieldsDrawer/Drawer.js'\nimport './index.scss'\n\nexport type CellContextShape = {\n cellEditorConfig: CellEditorConfig | null\n cellEditorPlugins: Array<JSX.Element> | JSX.Element | null\n set: (\n cellEditorConfig: CellEditorConfig | null,\n cellEditorPlugins: Array<JSX.Element> | JSX.Element | null,\n ) => void\n}\n\nexport type CellEditorConfig = Readonly<{\n namespace: string\n nodes?: ReadonlyArray<Klass<LexicalNode>>\n onError: (error: Error, editor: LexicalEditor) => void\n readOnly?: boolean\n theme?: EditorThemeClasses\n}>\n\nexport const OPEN_TABLE_DRAWER_COMMAND: LexicalCommand<{}> = createCommand(\n 'OPEN_EMBED_DRAWER_COMMAND',\n)\n\nexport const CellContext = createContext<CellContextShape>({\n cellEditorConfig: null,\n cellEditorPlugins: null,\n set: () => {\n // Empty\n },\n})\n\nexport function TableContext({ children }: { children: JSX.Element }) {\n const [contextValue, setContextValue] = useState<{\n cellEditorConfig: CellEditorConfig | null\n cellEditorPlugins: Array<JSX.Element> | JSX.Element | null\n }>({\n cellEditorConfig: null,\n cellEditorPlugins: null,\n })\n return (\n <CellContext.Provider\n value={useMemo(\n () => ({\n cellEditorConfig: contextValue.cellEditorConfig,\n cellEditorPlugins: contextValue.cellEditorPlugins,\n set: (cellEditorConfig, cellEditorPlugins) => {\n setContextValue({ cellEditorConfig, cellEditorPlugins })\n },\n }),\n [contextValue.cellEditorConfig, contextValue.cellEditorPlugins],\n )}\n >\n {children}\n </CellContext.Provider>\n )\n}\n\nexport const TablePlugin: PluginComponent = () => {\n const [editor] = useLexicalComposerContext()\n const cellContext = useContext(CellContext)\n const editDepth = useEditDepth()\n const { uuid } = useEditorConfigContext()\n\n const drawerSlug = formatDrawerSlug({\n slug: 'lexical-table-create-' + uuid,\n depth: editDepth,\n })\n const { toggleDrawer } = useLexicalDrawer(drawerSlug)\n\n useEffect(() => {\n if (!editor.hasNodes([TableNode])) {\n throw new Error('TablePlugin: TableNode is not registered on editor')\n }\n\n return mergeRegister(\n editor.registerCommand(\n OPEN_TABLE_DRAWER_COMMAND,\n () => {\n let rangeSelection: null | RangeSelection = null\n\n editor.getEditorState().read(() => {\n const selection = $getSelection()\n if ($isRangeSelection(selection)) {\n rangeSelection = selection\n }\n })\n\n if (rangeSelection) {\n toggleDrawer()\n }\n return true\n },\n COMMAND_PRIORITY_EDITOR,\n ),\n )\n }, [cellContext, editor, toggleDrawer])\n\n return (\n <React.Fragment>\n <FieldsDrawer\n drawerSlug={drawerSlug}\n drawerTitle=\"Create Table\"\n featureKey=\"experimental_table\"\n handleDrawerSubmit={(_fields, data) => {\n if (!data.columns || !data.rows) {\n return\n }\n\n editor.dispatchCommand(INSERT_TABLE_COMMAND, {\n columns: String(data.columns),\n rows: String(data.rows),\n })\n }}\n schemaPathSuffix=\"fields\"\n />\n <LexicalReactTablePlugin hasCellBackgroundColor={false} hasCellMerge />\n </React.Fragment>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../src/features/link/client/plugins/floatingLinkEditor/LinkEditor/index.tsx"],"names":[],"mappings":"AAyBA,OAAO,KAAmD,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../src/features/link/client/plugins/floatingLinkEditor/LinkEditor/index.tsx"],"names":[],"mappings":"AAyBA,OAAO,KAAmD,MAAM,OAAO,CAAA;AAevE,wBAAgB,UAAU,CAAC,EAAE,UAAU,EAAE,EAAE;IAAE,UAAU,EAAE,WAAW,CAAA;CAAE,GAAG,KAAK,CAAC,SAAS,CA4UvF"}
|
|
@@ -4,13 +4,14 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
4
4
|
import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js';
|
|
5
5
|
import { $findMatchingParent, mergeRegister } from '@lexical/utils';
|
|
6
6
|
import { getTranslation } from '@payloadcms/translations';
|
|
7
|
-
import { CloseMenuIcon, EditIcon, formatDrawerSlug, useConfig, useEditDepth,
|
|
7
|
+
import { CloseMenuIcon, EditIcon, formatDrawerSlug, useConfig, useEditDepth, useTranslation } from '@payloadcms/ui';
|
|
8
8
|
import { $getSelection, $isLineBreakNode, $isRangeSelection, COMMAND_PRIORITY_HIGH, COMMAND_PRIORITY_LOW, KEY_ESCAPE_COMMAND, SELECTION_CHANGE_COMMAND } from 'lexical';
|
|
9
9
|
import React, { useCallback, useEffect, useRef, useState } from 'react';
|
|
10
10
|
import { useEditorConfigContext } from '../../../../../../lexical/config/client/EditorConfigProvider.js';
|
|
11
11
|
import { getSelectedNode } from '../../../../../../lexical/utils/getSelectedNode.js';
|
|
12
12
|
import { setFloatingElemPositionForLinkEditor } from '../../../../../../lexical/utils/setFloatingElemPositionForLinkEditor.js';
|
|
13
13
|
import { FieldsDrawer } from '../../../../../../utilities/fieldsDrawer/Drawer.js';
|
|
14
|
+
import { useLexicalDrawer } from '../../../../../../utilities/fieldsDrawer/useLexicalDrawer.js';
|
|
14
15
|
import { $isAutoLinkNode } from '../../../../nodes/AutoLinkNode.js';
|
|
15
16
|
import { $createLinkNode, $isLinkNode, TOGGLE_LINK_COMMAND } from '../../../../nodes/LinkNode.js';
|
|
16
17
|
import { TOGGLE_LINK_WITH_MODAL_COMMAND } from './commands.js';
|
|
@@ -32,10 +33,6 @@ export function LinkEditor({
|
|
|
32
33
|
t
|
|
33
34
|
} = useTranslation();
|
|
34
35
|
const [stateData, setStateData] = useState();
|
|
35
|
-
const {
|
|
36
|
-
closeModal,
|
|
37
|
-
toggleModal
|
|
38
|
-
} = useModal();
|
|
39
36
|
const editDepth = useEditDepth();
|
|
40
37
|
const [isLink, setIsLink] = useState(false);
|
|
41
38
|
const [selectedNodes, setSelectedNodes] = useState([]);
|
|
@@ -44,6 +41,9 @@ export function LinkEditor({
|
|
|
44
41
|
slug: `lexical-rich-text-link-` + uuid,
|
|
45
42
|
depth: editDepth
|
|
46
43
|
});
|
|
44
|
+
const {
|
|
45
|
+
toggleDrawer
|
|
46
|
+
} = useLexicalDrawer(drawerSlug);
|
|
47
47
|
const setNotLink = useCallback(() => {
|
|
48
48
|
setIsLink(false);
|
|
49
49
|
if (editorRef && editorRef.current) {
|
|
@@ -142,10 +142,10 @@ export function LinkEditor({
|
|
|
142
142
|
editor.dispatchCommand(TOGGLE_LINK_COMMAND, payload);
|
|
143
143
|
// Now, open the modal
|
|
144
144
|
$updateLinkEditor();
|
|
145
|
-
|
|
145
|
+
toggleDrawer();
|
|
146
146
|
return true;
|
|
147
147
|
}, COMMAND_PRIORITY_LOW));
|
|
148
|
-
}, [editor, $updateLinkEditor,
|
|
148
|
+
}, [editor, $updateLinkEditor, toggleDrawer, drawerSlug]);
|
|
149
149
|
useEffect(() => {
|
|
150
150
|
const scrollerElem = anchorElem.parentElement;
|
|
151
151
|
const update = () => {
|
|
@@ -206,7 +206,7 @@ export function LinkEditor({
|
|
|
206
206
|
"aria-label": "Edit link",
|
|
207
207
|
className: "link-edit",
|
|
208
208
|
onClick: () => {
|
|
209
|
-
|
|
209
|
+
toggleDrawer();
|
|
210
210
|
},
|
|
211
211
|
onMouseDown: event => {
|
|
212
212
|
event.preventDefault();
|
|
@@ -236,7 +236,6 @@ export function LinkEditor({
|
|
|
236
236
|
drawerTitle: t('fields:editLink'),
|
|
237
237
|
featureKey: "link",
|
|
238
238
|
handleDrawerSubmit: (fields, data_0) => {
|
|
239
|
-
closeModal(drawerSlug);
|
|
240
239
|
const newLinkPayload = data_0;
|
|
241
240
|
const bareLinkFields = {
|
|
242
241
|
...newLinkPayload
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["useLexicalComposerContext","$findMatchingParent","mergeRegister","getTranslation","CloseMenuIcon","EditIcon","formatDrawerSlug","useConfig","useEditDepth","useModal","useTranslation","$getSelection","$isLineBreakNode","$isRangeSelection","COMMAND_PRIORITY_HIGH","COMMAND_PRIORITY_LOW","KEY_ESCAPE_COMMAND","SELECTION_CHANGE_COMMAND","React","useCallback","useEffect","useRef","useState","useEditorConfigContext","getSelectedNode","setFloatingElemPositionForLinkEditor","FieldsDrawer","$isAutoLinkNode","$createLinkNode","$isLinkNode","TOGGLE_LINK_COMMAND","TOGGLE_LINK_WITH_MODAL_COMMAND","LinkEditor","anchorElem","editor","editorRef","linkUrl","setLinkUrl","linkLabel","setLinkLabel","uuid","config","i18n","t","stateData","setStateData","closeModal","toggleModal","editDepth","isLink","setIsLink","selectedNodes","setSelectedNodes","isAutoLink","setIsAutoLink","drawerSlug","slug","depth","setNotLink","current","style","opacity","transform","undefined","$updateLinkEditor","selection","selectedNodeDomRect","focusNode","getElementByKey","getKey","getBoundingClientRect","focusLinkParent","badNode","getNodes","filter","node","find","linkNode","is","data","getFields","id","getID","text","getTextContent","linkType","url","routes","admin","doc","relationTo","value","relatedField","collections","coll","label","String","labels","singular","replace","editorElem","nativeSelection","window","getSelection","activeElement","document","rootElement","getRootElement","contains","anchorNode","getRangeAt","y","className","registerCommand","payload","dispatchCommand","scrollerElem","parentElement","update","getEditorState","read","addEventListener","removeEventListener","registerUpdateListener","editorState","_jsxs","Fragment","_jsx","ref","length","href","rel","target","isEditable","onClick","onMouseDown","event","preventDefault","tabIndex","type","drawerTitle","featureKey","handleDrawerSubmit","fields","newLinkPayload","bareLinkFields","linkParent","getParent","schemaPathSuffix"],"sources":["../../../../../../../src/features/link/client/plugins/floatingLinkEditor/LinkEditor/index.tsx"],"sourcesContent":["'use client'\nimport type { ElementNode, LexicalNode } from 'lexical'\nimport type { Data, FormState } from 'payload'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js'\nimport { $findMatchingParent, mergeRegister } from '@lexical/utils'\nimport { getTranslation } from '@payloadcms/translations'\nimport {\n CloseMenuIcon,\n EditIcon,\n formatDrawerSlug,\n useConfig,\n useEditDepth,\n useModal,\n useTranslation,\n} from '@payloadcms/ui'\nimport {\n $getSelection,\n $isLineBreakNode,\n $isRangeSelection,\n COMMAND_PRIORITY_HIGH,\n COMMAND_PRIORITY_LOW,\n KEY_ESCAPE_COMMAND,\n SELECTION_CHANGE_COMMAND,\n} from 'lexical'\nimport React, { useCallback, useEffect, useRef, useState } from 'react'\n\nimport type { LinkNode } from '../../../../nodes/LinkNode.js'\nimport type { LinkFields } from '../../../../nodes/types.js'\nimport type { LinkPayload } from '../types.js'\n\nimport { useEditorConfigContext } from '../../../../../../lexical/config/client/EditorConfigProvider.js'\nimport { getSelectedNode } from '../../../../../../lexical/utils/getSelectedNode.js'\nimport { setFloatingElemPositionForLinkEditor } from '../../../../../../lexical/utils/setFloatingElemPositionForLinkEditor.js'\nimport { FieldsDrawer } from '../../../../../../utilities/fieldsDrawer/Drawer.js'\nimport { $isAutoLinkNode } from '../../../../nodes/AutoLinkNode.js'\nimport { $createLinkNode, $isLinkNode, TOGGLE_LINK_COMMAND } from '../../../../nodes/LinkNode.js'\nimport { TOGGLE_LINK_WITH_MODAL_COMMAND } from './commands.js'\n\nexport function LinkEditor({ anchorElem }: { anchorElem: HTMLElement }): React.ReactNode {\n const [editor] = useLexicalComposerContext()\n\n const editorRef = useRef<HTMLDivElement | null>(null)\n const [linkUrl, setLinkUrl] = useState<null | string>(null)\n const [linkLabel, setLinkLabel] = useState<null | string>(null)\n\n const { uuid } = useEditorConfigContext()\n\n const { config } = useConfig()\n\n const { i18n, t } = useTranslation()\n\n const [stateData, setStateData] = useState<\n ({ id?: string; text: string } & LinkFields) | undefined\n >()\n\n const { closeModal, toggleModal } = useModal()\n const editDepth = useEditDepth()\n const [isLink, setIsLink] = useState(false)\n const [selectedNodes, setSelectedNodes] = useState<LexicalNode[]>([])\n\n const [isAutoLink, setIsAutoLink] = useState(false)\n\n const drawerSlug = formatDrawerSlug({\n slug: `lexical-rich-text-link-` + uuid,\n depth: editDepth,\n })\n\n const setNotLink = useCallback(() => {\n setIsLink(false)\n if (editorRef && editorRef.current) {\n editorRef.current.style.opacity = '0'\n editorRef.current.style.transform = 'translate(-10000px, -10000px)'\n }\n setIsAutoLink(false)\n setLinkUrl(null)\n setLinkLabel(null)\n setSelectedNodes([])\n setStateData(undefined)\n }, [setIsLink, setLinkUrl, setLinkLabel, setSelectedNodes])\n\n const $updateLinkEditor = useCallback(() => {\n const selection = $getSelection()\n let selectedNodeDomRect: DOMRect | undefined\n\n if (!$isRangeSelection(selection) || !selection) {\n setNotLink()\n return\n }\n\n // Handle the data displayed in the floating link editor & drawer when you click on a link node\n\n const focusNode = getSelectedNode(selection)\n selectedNodeDomRect = editor.getElementByKey(focusNode.getKey())?.getBoundingClientRect()\n const focusLinkParent = $findMatchingParent(focusNode, $isLinkNode)\n\n // Prevent link modal from showing if selection spans further than the link: https://github.com/facebook/lexical/issues/4064\n const badNode = selection\n .getNodes()\n .filter((node) => !$isLineBreakNode(node))\n .find((node) => {\n const linkNode = $findMatchingParent(node, $isLinkNode)\n return (\n (focusLinkParent && !focusLinkParent.is(linkNode)) ||\n (linkNode && !linkNode.is(focusLinkParent))\n )\n })\n\n if (focusLinkParent == null || badNode) {\n setNotLink()\n return\n }\n\n // Initial state:\n const data: { text: string } & LinkFields = {\n ...focusLinkParent.getFields(),\n id: focusLinkParent.getID(),\n text: focusLinkParent.getTextContent(),\n }\n\n if (focusLinkParent.getFields()?.linkType === 'custom') {\n setLinkUrl(focusLinkParent.getFields()?.url ?? null)\n setLinkLabel(null)\n } else {\n // internal link\n setLinkUrl(\n `${config.routes.admin === '/' ? '' : config.routes.admin}/collections/${focusLinkParent.getFields()?.doc?.relationTo}/${\n focusLinkParent.getFields()?.doc?.value\n }`,\n )\n\n const relatedField = config.collections.find(\n (coll) => coll.slug === focusLinkParent.getFields()?.doc?.relationTo,\n )\n if (!relatedField) {\n // Usually happens if the user removed all default fields. In this case, we let them specify the label or do not display the label at all.\n // label could be a virtual field the user added. This is useful if they want to use the link feature for things other than links.\n setLinkLabel(\n focusLinkParent.getFields()?.label ? String(focusLinkParent.getFields()?.label) : null,\n )\n setLinkUrl(\n focusLinkParent.getFields()?.url ? String(focusLinkParent.getFields()?.url) : null,\n )\n } else {\n const label = t('fields:linkedTo', {\n label: getTranslation(relatedField.labels.singular, i18n),\n }).replace(/<[^>]*>?/g, '')\n setLinkLabel(label)\n }\n }\n\n setStateData(data)\n setIsLink(true)\n setSelectedNodes(selection ? selection?.getNodes() : [])\n\n if ($isAutoLinkNode(focusLinkParent)) {\n setIsAutoLink(true)\n } else {\n setIsAutoLink(false)\n }\n\n const editorElem = editorRef.current\n const nativeSelection = window.getSelection()\n const { activeElement } = document\n\n if (editorElem === null) {\n return\n }\n\n const rootElement = editor.getRootElement()\n\n if (\n nativeSelection !== null &&\n rootElement !== null &&\n rootElement.contains(nativeSelection.anchorNode)\n ) {\n if (!selectedNodeDomRect) {\n // Get the DOM rect of the selected node using the native selection. This sometimes produces the wrong\n // result, which is why we use lexical's selection preferably.\n selectedNodeDomRect = nativeSelection.getRangeAt(0).getBoundingClientRect()\n }\n\n if (selectedNodeDomRect != null) {\n selectedNodeDomRect.y += 40\n setFloatingElemPositionForLinkEditor(selectedNodeDomRect, editorElem, anchorElem)\n }\n } else if (activeElement == null || activeElement.className !== 'link-input') {\n if (rootElement !== null) {\n setFloatingElemPositionForLinkEditor(null, editorElem, anchorElem)\n }\n setLinkUrl(null)\n setLinkLabel(null)\n }\n\n return true\n }, [editor, setNotLink, config.collections, t, i18n, anchorElem])\n\n useEffect(() => {\n return mergeRegister(\n editor.registerCommand(\n TOGGLE_LINK_WITH_MODAL_COMMAND,\n (payload: LinkPayload) => {\n editor.dispatchCommand(TOGGLE_LINK_COMMAND, payload)\n\n // Now, open the modal\n $updateLinkEditor()\n toggleModal(drawerSlug)\n\n return true\n },\n COMMAND_PRIORITY_LOW,\n ),\n )\n }, [editor, $updateLinkEditor, toggleModal, drawerSlug])\n\n useEffect(() => {\n const scrollerElem = anchorElem.parentElement\n\n const update = (): void => {\n editor.getEditorState().read(() => {\n void $updateLinkEditor()\n })\n }\n\n window.addEventListener('resize', update)\n\n if (scrollerElem != null) {\n scrollerElem.addEventListener('scroll', update)\n }\n\n return () => {\n window.removeEventListener('resize', update)\n\n if (scrollerElem != null) {\n scrollerElem.removeEventListener('scroll', update)\n }\n }\n }, [anchorElem.parentElement, editor, $updateLinkEditor])\n\n useEffect(() => {\n return mergeRegister(\n editor.registerUpdateListener(({ editorState }) => {\n editorState.read(() => {\n void $updateLinkEditor()\n })\n }),\n\n editor.registerCommand(\n SELECTION_CHANGE_COMMAND,\n () => {\n void $updateLinkEditor()\n return true\n },\n COMMAND_PRIORITY_LOW,\n ),\n editor.registerCommand(\n KEY_ESCAPE_COMMAND,\n () => {\n if (isLink) {\n setNotLink()\n\n return true\n }\n return false\n },\n COMMAND_PRIORITY_HIGH,\n ),\n )\n }, [editor, $updateLinkEditor, isLink, setNotLink])\n\n useEffect(() => {\n editor.getEditorState().read(() => {\n void $updateLinkEditor()\n })\n }, [editor, $updateLinkEditor])\n\n return (\n <React.Fragment>\n <div className=\"link-editor\" ref={editorRef}>\n <div className=\"link-input\">\n {linkUrl && linkUrl.length > 0 ? (\n <a href={linkUrl} rel=\"noopener noreferrer\" target=\"_blank\">\n {linkLabel != null && linkLabel.length > 0 ? linkLabel : linkUrl}\n </a>\n ) : linkLabel != null && linkLabel.length > 0 ? (\n <span className=\"link-input__label-pure\">{linkLabel}</span>\n ) : null}\n\n {editor.isEditable() && (\n <React.Fragment>\n <button\n aria-label=\"Edit link\"\n className=\"link-edit\"\n onClick={() => {\n toggleModal(drawerSlug)\n }}\n onMouseDown={(event) => {\n event.preventDefault()\n }}\n tabIndex={0}\n type=\"button\"\n >\n <EditIcon />\n </button>\n {!isAutoLink && (\n <button\n aria-label=\"Remove link\"\n className=\"link-trash\"\n onClick={() => {\n editor.dispatchCommand(TOGGLE_LINK_COMMAND, null)\n }}\n onMouseDown={(event) => {\n event.preventDefault()\n }}\n tabIndex={0}\n type=\"button\"\n >\n <CloseMenuIcon />\n </button>\n )}\n </React.Fragment>\n )}\n </div>\n </div>\n <FieldsDrawer\n className=\"lexical-link-edit-drawer\"\n data={stateData}\n drawerSlug={drawerSlug}\n drawerTitle={t('fields:editLink')}\n featureKey=\"link\"\n handleDrawerSubmit={(fields: FormState, data: Data) => {\n closeModal(drawerSlug)\n\n const newLinkPayload = data as { text: string } & LinkFields\n\n const bareLinkFields: LinkFields = {\n ...newLinkPayload,\n }\n delete bareLinkFields.text\n\n // See: https://github.com/facebook/lexical/pull/5536. This updates autolink nodes to link nodes whenever a change was made (which is good!).\n editor.update(() => {\n const selection = $getSelection()\n let linkParent: ElementNode | null = null\n if ($isRangeSelection(selection)) {\n linkParent = getSelectedNode(selection).getParent()\n } else {\n if (selectedNodes.length) {\n linkParent = selectedNodes[0].getParent()\n }\n }\n\n if (linkParent && $isAutoLinkNode(linkParent)) {\n const linkNode = $createLinkNode({\n fields: bareLinkFields,\n })\n linkParent.replace(linkNode, true)\n }\n })\n\n // Needs to happen AFTER a potential auto link => link node conversion, as otherwise, the updated text to display may be lost due to\n // it being applied to the auto link node instead of the link node.\n editor.dispatchCommand(TOGGLE_LINK_COMMAND, {\n fields: bareLinkFields,\n selectedNodes,\n text: newLinkPayload.text,\n })\n }}\n schemaPathSuffix=\"fields\"\n />\n </React.Fragment>\n )\n}\n"],"mappings":"AAAA;;;AAIA,SAASA,yBAAyB,QAAQ;AAC1C,SAASC,mBAAmB,EAAEC,aAAa,QAAQ;AACnD,SAASC,cAAc,QAAQ;AAC/B,SACEC,aAAa,EACbC,QAAQ,EACRC,gBAAgB,EAChBC,SAAS,EACTC,YAAY,EACZC,QAAQ,EACRC,cAAc,QACT;AACP,SACEC,aAAa,EACbC,gBAAgB,EAChBC,iBAAiB,EACjBC,qBAAqB,EACrBC,oBAAoB,EACpBC,kBAAkB,EAClBC,wBAAwB,QACnB;AACP,OAAOC,KAAA,IAASC,WAAW,EAAEC,SAAS,EAAEC,MAAM,EAAEC,QAAQ,QAAQ;AAMhE,SAASC,sBAAsB,QAAQ;AACvC,SAASC,eAAe,QAAQ;AAChC,SAASC,oCAAoC,QAAQ;AACrD,SAASC,YAAY,QAAQ;AAC7B,SAASC,eAAe,QAAQ;AAChC,SAASC,eAAe,EAAEC,WAAW,EAAEC,mBAAmB,QAAQ;AAClE,SAASC,8BAA8B,QAAQ;AAE/C,OAAO,SAASC,WAAW;EAAEC;AAAU,CAA+B;EACpE,MAAM,CAACC,MAAA,CAAO,GAAGlC,yBAAA;EAEjB,MAAMmC,SAAA,GAAYd,MAAA,CAA8B;EAChD,MAAM,CAACe,OAAA,EAASC,UAAA,CAAW,GAAGf,QAAA,CAAwB;EACtD,MAAM,CAACgB,SAAA,EAAWC,YAAA,CAAa,GAAGjB,QAAA,CAAwB;EAE1D,MAAM;IAAEkB;EAAI,CAAE,GAAGjB,sBAAA;EAEjB,MAAM;IAAEkB;EAAM,CAAE,GAAGlC,SAAA;EAEnB,MAAM;IAAEmC,IAAI;IAAEC;EAAC,CAAE,GAAGjC,cAAA;EAEpB,MAAM,CAACkC,SAAA,EAAWC,YAAA,CAAa,GAAGvB,QAAA;EAIlC,MAAM;IAAEwB,UAAU;IAAEC;EAAW,CAAE,GAAGtC,QAAA;EACpC,MAAMuC,SAAA,GAAYxC,YAAA;EAClB,MAAM,CAACyC,MAAA,EAAQC,SAAA,CAAU,GAAG5B,QAAA,CAAS;EACrC,MAAM,CAAC6B,aAAA,EAAeC,gBAAA,CAAiB,GAAG9B,QAAA,CAAwB,EAAE;EAEpE,MAAM,CAAC+B,UAAA,EAAYC,aAAA,CAAc,GAAGhC,QAAA,CAAS;EAE7C,MAAMiC,UAAA,GAAajD,gBAAA,CAAiB;IAClCkD,IAAA,EAAM,yBAAyB,GAAGhB,IAAA;IAClCiB,KAAA,EAAOT;EACT;EAEA,MAAMU,UAAA,GAAavC,WAAA,CAAY;IAC7B+B,SAAA,CAAU;IACV,IAAIf,SAAA,IAAaA,SAAA,CAAUwB,OAAO,EAAE;MAClCxB,SAAA,CAAUwB,OAAO,CAACC,KAAK,CAACC,OAAO,GAAG;MAClC1B,SAAA,CAAUwB,OAAO,CAACC,KAAK,CAACE,SAAS,GAAG;IACtC;IACAR,aAAA,CAAc;IACdjB,UAAA,CAAW;IACXE,YAAA,CAAa;IACba,gBAAA,CAAiB,EAAE;IACnBP,YAAA,CAAakB,SAAA;EACf,GAAG,CAACb,SAAA,EAAWb,UAAA,EAAYE,YAAA,EAAca,gBAAA,CAAiB;EAE1D,MAAMY,iBAAA,GAAoB7C,WAAA,CAAY;IACpC,MAAM8C,SAAA,GAAYtD,aAAA;IAClB,IAAIuD,mBAAA;IAEJ,IAAI,CAACrD,iBAAA,CAAkBoD,SAAA,KAAc,CAACA,SAAA,EAAW;MAC/CP,UAAA;MACA;IACF;IAEA;IAEA,MAAMS,SAAA,GAAY3C,eAAA,CAAgByC,SAAA;IAClCC,mBAAA,GAAsBhC,MAAA,CAAOkC,eAAe,CAACD,SAAA,CAAUE,MAAM,KAAKC,qBAAA;IAClE,MAAMC,eAAA,GAAkBtE,mBAAA,CAAoBkE,SAAA,EAAWtC,WAAA;IAEvD;IACA,MAAM2C,OAAA,GAAUP,SAAA,CACbQ,QAAQ,GACRC,MAAM,CAAEC,IAAA,IAAS,CAAC/D,gBAAA,CAAiB+D,IAAA,GACnCC,IAAI,CAAED,MAAA;MACL,MAAME,QAAA,GAAW5E,mBAAA,CAAoB0E,MAAA,EAAM9C,WAAA;MAC3C,OACE0C,eAAC,IAAmB,CAACA,eAAA,CAAgBO,EAAE,CAACD,QAAA,KACvCA,QAAA,IAAY,CAACA,QAAA,CAASC,EAAE,CAACP,eAAA;IAE9B;IAEF,IAAIA,eAAA,IAAmB,QAAQC,OAAA,EAAS;MACtCd,UAAA;MACA;IACF;IAEA;IACA,MAAMqB,IAAA,GAAsC;MAC1C,GAAGR,eAAA,CAAgBS,SAAS,EAAE;MAC9BC,EAAA,EAAIV,eAAA,CAAgBW,KAAK;MACzBC,IAAA,EAAMZ,eAAA,CAAgBa,cAAc;IACtC;IAEA,IAAIb,eAAA,CAAgBS,SAAS,IAAIK,QAAA,KAAa,UAAU;MACtDhD,UAAA,CAAWkC,eAAA,CAAgBS,SAAS,IAAIM,GAAA,IAAO;MAC/C/C,YAAA,CAAa;IACf,OAAO;MACL;MACAF,UAAA,CACE,GAAGI,MAAA,CAAO8C,MAAM,CAACC,KAAK,KAAK,MAAM,KAAK/C,MAAA,CAAO8C,MAAM,CAACC,KAAK,gBAAgBjB,eAAA,CAAgBS,SAAS,IAAIS,GAAA,EAAKC,UAAA,IACzGnB,eAAA,CAAgBS,SAAS,IAAIS,GAAA,EAAKE,KAAA,EAClC;MAGJ,MAAMC,YAAA,GAAenD,MAAA,CAAOoD,WAAW,CAACjB,IAAI,CACzCkB,IAAA,IAASA,IAAA,CAAKtC,IAAI,KAAKe,eAAA,CAAgBS,SAAS,IAAIS,GAAA,EAAKC,UAAA;MAE5D,IAAI,CAACE,YAAA,EAAc;QACjB;QACA;QACArD,YAAA,CACEgC,eAAA,CAAgBS,SAAS,IAAIe,KAAA,GAAQC,MAAA,CAAOzB,eAAA,CAAgBS,SAAS,IAAIe,KAAA,IAAS;QAEpF1D,UAAA,CACEkC,eAAA,CAAgBS,SAAS,IAAIM,GAAA,GAAMU,MAAA,CAAOzB,eAAA,CAAgBS,SAAS,IAAIM,GAAA,IAAO;MAElF,OAAO;QACL,MAAMS,KAAA,GAAQpD,CAAA,CAAE,mBAAmB;UACjCoD,KAAA,EAAO5F,cAAA,CAAeyF,YAAA,CAAaK,MAAM,CAACC,QAAQ,EAAExD,IAAA;QACtD,GAAGyD,OAAO,CAAC,aAAa;QACxB5D,YAAA,CAAawD,KAAA;MACf;IACF;IAEAlD,YAAA,CAAakC,IAAA;IACb7B,SAAA,CAAU;IACVE,gBAAA,CAAiBa,SAAA,GAAYA,SAAA,EAAWQ,QAAA,KAAa,EAAE;IAEvD,IAAI9C,eAAA,CAAgB4C,eAAA,GAAkB;MACpCjB,aAAA,CAAc;IAChB,OAAO;MACLA,aAAA,CAAc;IAChB;IAEA,MAAM8C,UAAA,GAAajE,SAAA,CAAUwB,OAAO;IACpC,MAAM0C,eAAA,GAAkBC,MAAA,CAAOC,YAAY;IAC3C,MAAM;MAAEC;IAAa,CAAE,GAAGC,QAAA;IAE1B,IAAIL,UAAA,KAAe,MAAM;MACvB;IACF;IAEA,MAAMM,WAAA,GAAcxE,MAAA,CAAOyE,cAAc;IAEzC,IACEN,eAAA,KAAoB,QACpBK,WAAA,KAAgB,QAChBA,WAAA,CAAYE,QAAQ,CAACP,eAAA,CAAgBQ,UAAU,GAC/C;MACA,IAAI,CAAC3C,mBAAA,EAAqB;QACxB;QACA;QACAA,mBAAA,GAAsBmC,eAAA,CAAgBS,UAAU,CAAC,GAAGxC,qBAAqB;MAC3E;MAEA,IAAIJ,mBAAA,IAAuB,MAAM;QAC/BA,mBAAA,CAAoB6C,CAAC,IAAI;QACzBtF,oCAAA,CAAqCyC,mBAAA,EAAqBkC,UAAA,EAAYnE,UAAA;MACxE;IACF,OAAO,IAAIuE,aAAA,IAAiB,QAAQA,aAAA,CAAcQ,SAAS,KAAK,cAAc;MAC5E,IAAIN,WAAA,KAAgB,MAAM;QACxBjF,oCAAA,CAAqC,MAAM2E,UAAA,EAAYnE,UAAA;MACzD;MACAI,UAAA,CAAW;MACXE,YAAA,CAAa;IACf;IAEA,OAAO;EACT,GAAG,CAACL,MAAA,EAAQwB,UAAA,EAAYjB,MAAA,CAAOoD,WAAW,EAAElD,CAAA,EAAGD,IAAA,EAAMT,UAAA,CAAW;EAEhEb,SAAA,CAAU;IACR,OAAOlB,aAAA,CACLgC,MAAA,CAAO+E,eAAe,CACpBlF,8BAAA,EACCmF,OAAA;MACChF,MAAA,CAAOiF,eAAe,CAACrF,mBAAA,EAAqBoF,OAAA;MAE5C;MACAlD,iBAAA;MACAjB,WAAA,CAAYQ,UAAA;MAEZ,OAAO;IACT,GACAxC,oBAAA;EAGN,GAAG,CAACmB,MAAA,EAAQ8B,iBAAA,EAAmBjB,WAAA,EAAaQ,UAAA,CAAW;EAEvDnC,SAAA,CAAU;IACR,MAAMgG,YAAA,GAAenF,UAAA,CAAWoF,aAAa;IAE7C,MAAMC,MAAA,GAASA,CAAA;MACbpF,MAAA,CAAOqF,cAAc,GAAGC,IAAI,CAAC;QAC3B,KAAKxD,iBAAA;MACP;IACF;IAEAsC,MAAA,CAAOmB,gBAAgB,CAAC,UAAUH,MAAA;IAElC,IAAIF,YAAA,IAAgB,MAAM;MACxBA,YAAA,CAAaK,gBAAgB,CAAC,UAAUH,MAAA;IAC1C;IAEA,OAAO;MACLhB,MAAA,CAAOoB,mBAAmB,CAAC,UAAUJ,MAAA;MAErC,IAAIF,YAAA,IAAgB,MAAM;QACxBA,YAAA,CAAaM,mBAAmB,CAAC,UAAUJ,MAAA;MAC7C;IACF;EACF,GAAG,CAACrF,UAAA,CAAWoF,aAAa,EAAEnF,MAAA,EAAQ8B,iBAAA,CAAkB;EAExD5C,SAAA,CAAU;IACR,OAAOlB,aAAA,CACLgC,MAAA,CAAOyF,sBAAsB,CAAC,CAAC;MAAEC;IAAW,CAAE;MAC5CA,WAAA,CAAYJ,IAAI,CAAC;QACf,KAAKxD,iBAAA;MACP;IACF,IAEA9B,MAAA,CAAO+E,eAAe,CACpBhG,wBAAA,EACA;MACE,KAAK+C,iBAAA;MACL,OAAO;IACT,GACAjD,oBAAA,GAEFmB,MAAA,CAAO+E,eAAe,CACpBjG,kBAAA,EACA;MACE,IAAIiC,MAAA,EAAQ;QACVS,UAAA;QAEA,OAAO;MACT;MACA,OAAO;IACT,GACA5C,qBAAA;EAGN,GAAG,CAACoB,MAAA,EAAQ8B,iBAAA,EAAmBf,MAAA,EAAQS,UAAA,CAAW;EAElDtC,SAAA,CAAU;IACRc,MAAA,CAAOqF,cAAc,GAAGC,IAAI,CAAC;MAC3B,KAAKxD,iBAAA;IACP;EACF,GAAG,CAAC9B,MAAA,EAAQ8B,iBAAA,CAAkB;EAE9B,oBACE6D,KAAA,CAAC3G,KAAA,CAAM4G,QAAQ;4BACbC,IAAA,CAAC;MAAIf,SAAA,EAAU;MAAcgB,GAAA,EAAK7F,SAAA;gBAChC,aAAA0F,KAAA,CAAC;QAAIb,SAAA,EAAU;mBACZ5E,OAAA,IAAWA,OAAA,CAAQ6F,MAAM,GAAG,iBAC3BF,IAAA,CAAC;UAAEG,IAAA,EAAM9F,OAAA;UAAS+F,GAAA,EAAI;UAAsBC,MAAA,EAAO;oBAChD9F,SAAA,IAAa,QAAQA,SAAA,CAAU2F,MAAM,GAAG,IAAI3F,SAAA,GAAYF;aAEzDE,SAAA,IAAa,QAAQA,SAAA,CAAU2F,MAAM,GAAG,iBAC1CF,IAAA,CAAC;UAAKf,SAAA,EAAU;oBAA0B1E;aACxC,MAEHJ,MAAA,CAAOmG,UAAU,mBAChBR,KAAA,CAAC3G,KAAA,CAAM4G,QAAQ;kCACbC,IAAA,CAAC;YACC,cAAW;YACXf,SAAA,EAAU;YACVsB,OAAA,EAASA,CAAA;cACPvF,WAAA,CAAYQ,UAAA;YACd;YACAgF,WAAA,EAAcC,KAAA;cACZA,KAAA,CAAMC,cAAc;YACtB;YACAC,QAAA,EAAU;YACVC,IAAA,EAAK;sBAEL,aAAAZ,IAAA,CAAC1H,QAAA;cAEF,CAACgD,UAAA,iBACA0E,IAAA,CAAC;YACC,cAAW;YACXf,SAAA,EAAU;YACVsB,OAAA,EAASA,CAAA;cACPpG,MAAA,CAAOiF,eAAe,CAACrF,mBAAA,EAAqB;YAC9C;YACAyG,WAAA,EAAcC,OAAA;cACZA,OAAA,CAAMC,cAAc;YACtB;YACAC,QAAA,EAAU;YACVC,IAAA,EAAK;sBAEL,aAAAZ,IAAA,CAAC3H,aAAA;;;;qBAOb2H,IAAA,CAACrG,YAAA;MACCsF,SAAA,EAAU;MACVjC,IAAA,EAAMnC,SAAA;MACNW,UAAA,EAAYA,UAAA;MACZqF,WAAA,EAAajG,CAAA,CAAE;MACfkG,UAAA,EAAW;MACXC,kBAAA,EAAoBA,CAACC,MAAA,EAAmBhE,MAAA;QACtCjC,UAAA,CAAWS,UAAA;QAEX,MAAMyF,cAAA,GAAiBjE,MAAA;QAEvB,MAAMkE,cAAA,GAA6B;UACjC,GAAGD;QACL;QACA,OAAOC,cAAA,CAAe9D,IAAI;QAE1B;QACAjD,MAAA,CAAOoF,MAAM,CAAC;UACZ,MAAMrD,WAAA,GAAYtD,aAAA;UAClB,IAAIuI,UAAA,GAAiC;UACrC,IAAIrI,iBAAA,CAAkBoD,WAAA,GAAY;YAChCiF,UAAA,GAAa1H,eAAA,CAAgByC,WAAA,EAAWkF,SAAS;UACnD,OAAO;YACL,IAAIhG,aAAA,CAAc8E,MAAM,EAAE;cACxBiB,UAAA,GAAa/F,aAAa,CAAC,EAAE,CAACgG,SAAS;YACzC;UACF;UAEA,IAAID,UAAA,IAAcvH,eAAA,CAAgBuH,UAAA,GAAa;YAC7C,MAAMrE,UAAA,GAAWjD,eAAA,CAAgB;cAC/BmH,MAAA,EAAQE;YACV;YACAC,UAAA,CAAW/C,OAAO,CAACtB,UAAA,EAAU;UAC/B;QACF;QAEA;QACA;QACA3C,MAAA,CAAOiF,eAAe,CAACrF,mBAAA,EAAqB;UAC1CiH,MAAA,EAAQE,cAAA;UACR9F,aAAA;UACAgC,IAAA,EAAM6D,cAAA,CAAe7D;QACvB;MACF;MACAiE,gBAAA,EAAiB;;;AAIzB","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["useLexicalComposerContext","$findMatchingParent","mergeRegister","getTranslation","CloseMenuIcon","EditIcon","formatDrawerSlug","useConfig","useEditDepth","useTranslation","$getSelection","$isLineBreakNode","$isRangeSelection","COMMAND_PRIORITY_HIGH","COMMAND_PRIORITY_LOW","KEY_ESCAPE_COMMAND","SELECTION_CHANGE_COMMAND","React","useCallback","useEffect","useRef","useState","useEditorConfigContext","getSelectedNode","setFloatingElemPositionForLinkEditor","FieldsDrawer","useLexicalDrawer","$isAutoLinkNode","$createLinkNode","$isLinkNode","TOGGLE_LINK_COMMAND","TOGGLE_LINK_WITH_MODAL_COMMAND","LinkEditor","anchorElem","editor","editorRef","linkUrl","setLinkUrl","linkLabel","setLinkLabel","uuid","config","i18n","t","stateData","setStateData","editDepth","isLink","setIsLink","selectedNodes","setSelectedNodes","isAutoLink","setIsAutoLink","drawerSlug","slug","depth","toggleDrawer","setNotLink","current","style","opacity","transform","undefined","$updateLinkEditor","selection","selectedNodeDomRect","focusNode","getElementByKey","getKey","getBoundingClientRect","focusLinkParent","badNode","getNodes","filter","node","find","linkNode","is","data","getFields","id","getID","text","getTextContent","linkType","url","routes","admin","doc","relationTo","value","relatedField","collections","coll","label","String","labels","singular","replace","editorElem","nativeSelection","window","getSelection","activeElement","document","rootElement","getRootElement","contains","anchorNode","getRangeAt","y","className","registerCommand","payload","dispatchCommand","scrollerElem","parentElement","update","getEditorState","read","addEventListener","removeEventListener","registerUpdateListener","editorState","_jsxs","Fragment","_jsx","ref","length","href","rel","target","isEditable","onClick","onMouseDown","event","preventDefault","tabIndex","type","drawerTitle","featureKey","handleDrawerSubmit","fields","newLinkPayload","bareLinkFields","linkParent","getParent","schemaPathSuffix"],"sources":["../../../../../../../src/features/link/client/plugins/floatingLinkEditor/LinkEditor/index.tsx"],"sourcesContent":["'use client'\nimport type { ElementNode, LexicalNode } from 'lexical'\nimport type { Data, FormState } from 'payload'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js'\nimport { $findMatchingParent, mergeRegister } from '@lexical/utils'\nimport { getTranslation } from '@payloadcms/translations'\nimport {\n CloseMenuIcon,\n EditIcon,\n formatDrawerSlug,\n useConfig,\n useEditDepth,\n useModal,\n useTranslation,\n} from '@payloadcms/ui'\nimport {\n $getSelection,\n $isLineBreakNode,\n $isRangeSelection,\n COMMAND_PRIORITY_HIGH,\n COMMAND_PRIORITY_LOW,\n KEY_ESCAPE_COMMAND,\n SELECTION_CHANGE_COMMAND,\n} from 'lexical'\nimport React, { useCallback, useEffect, useRef, useState } from 'react'\n\nimport type { LinkNode } from '../../../../nodes/LinkNode.js'\nimport type { LinkFields } from '../../../../nodes/types.js'\nimport type { LinkPayload } from '../types.js'\n\nimport { useEditorConfigContext } from '../../../../../../lexical/config/client/EditorConfigProvider.js'\nimport { getSelectedNode } from '../../../../../../lexical/utils/getSelectedNode.js'\nimport { setFloatingElemPositionForLinkEditor } from '../../../../../../lexical/utils/setFloatingElemPositionForLinkEditor.js'\nimport { FieldsDrawer } from '../../../../../../utilities/fieldsDrawer/Drawer.js'\nimport { useLexicalDrawer } from '../../../../../../utilities/fieldsDrawer/useLexicalDrawer.js'\nimport { $isAutoLinkNode } from '../../../../nodes/AutoLinkNode.js'\nimport { $createLinkNode, $isLinkNode, TOGGLE_LINK_COMMAND } from '../../../../nodes/LinkNode.js'\nimport { TOGGLE_LINK_WITH_MODAL_COMMAND } from './commands.js'\n\nexport function LinkEditor({ anchorElem }: { anchorElem: HTMLElement }): React.ReactNode {\n const [editor] = useLexicalComposerContext()\n\n const editorRef = useRef<HTMLDivElement | null>(null)\n const [linkUrl, setLinkUrl] = useState<null | string>(null)\n const [linkLabel, setLinkLabel] = useState<null | string>(null)\n\n const { uuid } = useEditorConfigContext()\n\n const { config } = useConfig()\n\n const { i18n, t } = useTranslation()\n\n const [stateData, setStateData] = useState<\n ({ id?: string; text: string } & LinkFields) | undefined\n >()\n\n const editDepth = useEditDepth()\n const [isLink, setIsLink] = useState(false)\n const [selectedNodes, setSelectedNodes] = useState<LexicalNode[]>([])\n\n const [isAutoLink, setIsAutoLink] = useState(false)\n\n const drawerSlug = formatDrawerSlug({\n slug: `lexical-rich-text-link-` + uuid,\n depth: editDepth,\n })\n\n const { toggleDrawer } = useLexicalDrawer(drawerSlug)\n\n const setNotLink = useCallback(() => {\n setIsLink(false)\n if (editorRef && editorRef.current) {\n editorRef.current.style.opacity = '0'\n editorRef.current.style.transform = 'translate(-10000px, -10000px)'\n }\n setIsAutoLink(false)\n setLinkUrl(null)\n setLinkLabel(null)\n setSelectedNodes([])\n setStateData(undefined)\n }, [setIsLink, setLinkUrl, setLinkLabel, setSelectedNodes])\n\n const $updateLinkEditor = useCallback(() => {\n const selection = $getSelection()\n let selectedNodeDomRect: DOMRect | undefined\n\n if (!$isRangeSelection(selection) || !selection) {\n setNotLink()\n return\n }\n\n // Handle the data displayed in the floating link editor & drawer when you click on a link node\n\n const focusNode = getSelectedNode(selection)\n selectedNodeDomRect = editor.getElementByKey(focusNode.getKey())?.getBoundingClientRect()\n const focusLinkParent = $findMatchingParent(focusNode, $isLinkNode)\n\n // Prevent link modal from showing if selection spans further than the link: https://github.com/facebook/lexical/issues/4064\n const badNode = selection\n .getNodes()\n .filter((node) => !$isLineBreakNode(node))\n .find((node) => {\n const linkNode = $findMatchingParent(node, $isLinkNode)\n return (\n (focusLinkParent && !focusLinkParent.is(linkNode)) ||\n (linkNode && !linkNode.is(focusLinkParent))\n )\n })\n\n if (focusLinkParent == null || badNode) {\n setNotLink()\n return\n }\n\n // Initial state:\n const data: { text: string } & LinkFields = {\n ...focusLinkParent.getFields(),\n id: focusLinkParent.getID(),\n text: focusLinkParent.getTextContent(),\n }\n\n if (focusLinkParent.getFields()?.linkType === 'custom') {\n setLinkUrl(focusLinkParent.getFields()?.url ?? null)\n setLinkLabel(null)\n } else {\n // internal link\n setLinkUrl(\n `${config.routes.admin === '/' ? '' : config.routes.admin}/collections/${focusLinkParent.getFields()?.doc?.relationTo}/${\n focusLinkParent.getFields()?.doc?.value\n }`,\n )\n\n const relatedField = config.collections.find(\n (coll) => coll.slug === focusLinkParent.getFields()?.doc?.relationTo,\n )\n if (!relatedField) {\n // Usually happens if the user removed all default fields. In this case, we let them specify the label or do not display the label at all.\n // label could be a virtual field the user added. This is useful if they want to use the link feature for things other than links.\n setLinkLabel(\n focusLinkParent.getFields()?.label ? String(focusLinkParent.getFields()?.label) : null,\n )\n setLinkUrl(\n focusLinkParent.getFields()?.url ? String(focusLinkParent.getFields()?.url) : null,\n )\n } else {\n const label = t('fields:linkedTo', {\n label: getTranslation(relatedField.labels.singular, i18n),\n }).replace(/<[^>]*>?/g, '')\n setLinkLabel(label)\n }\n }\n\n setStateData(data)\n setIsLink(true)\n setSelectedNodes(selection ? selection?.getNodes() : [])\n\n if ($isAutoLinkNode(focusLinkParent)) {\n setIsAutoLink(true)\n } else {\n setIsAutoLink(false)\n }\n\n const editorElem = editorRef.current\n const nativeSelection = window.getSelection()\n const { activeElement } = document\n\n if (editorElem === null) {\n return\n }\n\n const rootElement = editor.getRootElement()\n\n if (\n nativeSelection !== null &&\n rootElement !== null &&\n rootElement.contains(nativeSelection.anchorNode)\n ) {\n if (!selectedNodeDomRect) {\n // Get the DOM rect of the selected node using the native selection. This sometimes produces the wrong\n // result, which is why we use lexical's selection preferably.\n selectedNodeDomRect = nativeSelection.getRangeAt(0).getBoundingClientRect()\n }\n\n if (selectedNodeDomRect != null) {\n selectedNodeDomRect.y += 40\n setFloatingElemPositionForLinkEditor(selectedNodeDomRect, editorElem, anchorElem)\n }\n } else if (activeElement == null || activeElement.className !== 'link-input') {\n if (rootElement !== null) {\n setFloatingElemPositionForLinkEditor(null, editorElem, anchorElem)\n }\n setLinkUrl(null)\n setLinkLabel(null)\n }\n\n return true\n }, [editor, setNotLink, config.collections, t, i18n, anchorElem])\n\n useEffect(() => {\n return mergeRegister(\n editor.registerCommand(\n TOGGLE_LINK_WITH_MODAL_COMMAND,\n (payload: LinkPayload) => {\n editor.dispatchCommand(TOGGLE_LINK_COMMAND, payload)\n\n // Now, open the modal\n $updateLinkEditor()\n toggleDrawer()\n\n return true\n },\n COMMAND_PRIORITY_LOW,\n ),\n )\n }, [editor, $updateLinkEditor, toggleDrawer, drawerSlug])\n\n useEffect(() => {\n const scrollerElem = anchorElem.parentElement\n\n const update = (): void => {\n editor.getEditorState().read(() => {\n void $updateLinkEditor()\n })\n }\n\n window.addEventListener('resize', update)\n\n if (scrollerElem != null) {\n scrollerElem.addEventListener('scroll', update)\n }\n\n return () => {\n window.removeEventListener('resize', update)\n\n if (scrollerElem != null) {\n scrollerElem.removeEventListener('scroll', update)\n }\n }\n }, [anchorElem.parentElement, editor, $updateLinkEditor])\n\n useEffect(() => {\n return mergeRegister(\n editor.registerUpdateListener(({ editorState }) => {\n editorState.read(() => {\n void $updateLinkEditor()\n })\n }),\n\n editor.registerCommand(\n SELECTION_CHANGE_COMMAND,\n () => {\n void $updateLinkEditor()\n return true\n },\n COMMAND_PRIORITY_LOW,\n ),\n editor.registerCommand(\n KEY_ESCAPE_COMMAND,\n () => {\n if (isLink) {\n setNotLink()\n\n return true\n }\n return false\n },\n COMMAND_PRIORITY_HIGH,\n ),\n )\n }, [editor, $updateLinkEditor, isLink, setNotLink])\n\n useEffect(() => {\n editor.getEditorState().read(() => {\n void $updateLinkEditor()\n })\n }, [editor, $updateLinkEditor])\n\n return (\n <React.Fragment>\n <div className=\"link-editor\" ref={editorRef}>\n <div className=\"link-input\">\n {linkUrl && linkUrl.length > 0 ? (\n <a href={linkUrl} rel=\"noopener noreferrer\" target=\"_blank\">\n {linkLabel != null && linkLabel.length > 0 ? linkLabel : linkUrl}\n </a>\n ) : linkLabel != null && linkLabel.length > 0 ? (\n <span className=\"link-input__label-pure\">{linkLabel}</span>\n ) : null}\n\n {editor.isEditable() && (\n <React.Fragment>\n <button\n aria-label=\"Edit link\"\n className=\"link-edit\"\n onClick={() => {\n toggleDrawer()\n }}\n onMouseDown={(event) => {\n event.preventDefault()\n }}\n tabIndex={0}\n type=\"button\"\n >\n <EditIcon />\n </button>\n {!isAutoLink && (\n <button\n aria-label=\"Remove link\"\n className=\"link-trash\"\n onClick={() => {\n editor.dispatchCommand(TOGGLE_LINK_COMMAND, null)\n }}\n onMouseDown={(event) => {\n event.preventDefault()\n }}\n tabIndex={0}\n type=\"button\"\n >\n <CloseMenuIcon />\n </button>\n )}\n </React.Fragment>\n )}\n </div>\n </div>\n <FieldsDrawer\n className=\"lexical-link-edit-drawer\"\n data={stateData}\n drawerSlug={drawerSlug}\n drawerTitle={t('fields:editLink')}\n featureKey=\"link\"\n handleDrawerSubmit={(fields: FormState, data: Data) => {\n const newLinkPayload = data as { text: string } & LinkFields\n\n const bareLinkFields: LinkFields = {\n ...newLinkPayload,\n }\n delete bareLinkFields.text\n\n // See: https://github.com/facebook/lexical/pull/5536. This updates autolink nodes to link nodes whenever a change was made (which is good!).\n editor.update(() => {\n const selection = $getSelection()\n let linkParent: ElementNode | null = null\n if ($isRangeSelection(selection)) {\n linkParent = getSelectedNode(selection).getParent()\n } else {\n if (selectedNodes.length) {\n linkParent = selectedNodes[0].getParent()\n }\n }\n\n if (linkParent && $isAutoLinkNode(linkParent)) {\n const linkNode = $createLinkNode({\n fields: bareLinkFields,\n })\n linkParent.replace(linkNode, true)\n }\n })\n\n // Needs to happen AFTER a potential auto link => link node conversion, as otherwise, the updated text to display may be lost due to\n // it being applied to the auto link node instead of the link node.\n editor.dispatchCommand(TOGGLE_LINK_COMMAND, {\n fields: bareLinkFields,\n selectedNodes,\n text: newLinkPayload.text,\n })\n }}\n schemaPathSuffix=\"fields\"\n />\n </React.Fragment>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RelationshipComponent.d.ts","sourceRoot":"","sources":["../../../../../src/features/relationship/client/components/RelationshipComponent.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAA;AAgBhD,OAAO,KAA+D,MAAM,OAAO,CAAA;AAEnF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAA;
|
|
1
|
+
{"version":3,"file":"RelationshipComponent.d.ts","sourceRoot":"","sources":["../../../../../src/features/relationship/client/components/RelationshipComponent.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAA;AAgBhD,OAAO,KAA+D,MAAM,OAAO,CAAA;AAEnF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAA;AAM9E,OAAO,cAAc,CAAA;AAQrB,KAAK,KAAK,GAAG;IACX,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,IAAI,EAAE,gBAAgB,CAAA;IACtB,MAAM,CAAC,EAAE,iBAAiB,CAAA;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB,CAAA;AAyKD,eAAO,MAAM,qBAAqB,UAAW,KAAK,KAAG,KAAK,CAAC,SAE1D,CAAA"}
|