@webiny/lexical-editor 5.37.2-beta.0 → 5.37.2-beta.1
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/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webiny/lexical-editor",
|
|
3
|
-
"version": "5.37.2-beta.
|
|
3
|
+
"version": "5.37.2-beta.1",
|
|
4
4
|
"repository": {
|
|
5
5
|
"type": "git",
|
|
6
6
|
"url": "https://github.com/webiny/webiny-js.git"
|
|
@@ -19,16 +19,16 @@
|
|
|
19
19
|
"@lexical/rich-text": "0.11.3",
|
|
20
20
|
"@lexical/selection": "0.11.3",
|
|
21
21
|
"@lexical/utils": "0.11.3",
|
|
22
|
-
"@webiny/react-composition": "5.37.2-beta.
|
|
23
|
-
"@webiny/react-properties": "5.37.2-beta.
|
|
22
|
+
"@webiny/react-composition": "5.37.2-beta.1",
|
|
23
|
+
"@webiny/react-properties": "5.37.2-beta.1",
|
|
24
24
|
"lexical": "0.11.3",
|
|
25
25
|
"react": "17.0.2",
|
|
26
26
|
"react-dom": "17.0.2",
|
|
27
27
|
"react-style-object-to-css": "1.1.2"
|
|
28
28
|
},
|
|
29
29
|
"devDependencies": {
|
|
30
|
-
"@webiny/cli": "5.37.2-beta.
|
|
31
|
-
"@webiny/project-utils": "5.37.2-beta.
|
|
30
|
+
"@webiny/cli": "5.37.2-beta.1",
|
|
31
|
+
"@webiny/project-utils": "5.37.2-beta.1"
|
|
32
32
|
},
|
|
33
33
|
"publishConfig": {
|
|
34
34
|
"access": "public",
|
|
@@ -38,5 +38,5 @@
|
|
|
38
38
|
"build": "yarn webiny run build",
|
|
39
39
|
"watch": "yarn webiny run watch"
|
|
40
40
|
},
|
|
41
|
-
"gitHead": "
|
|
41
|
+
"gitHead": "154f92c422ca0f8985474c75bf2763eca1de5052"
|
|
42
42
|
}
|
|
@@ -153,7 +153,7 @@ function FloatingLinkEditor(_ref) {
|
|
|
153
153
|
target: linkUrl.target ? null : "_blank"
|
|
154
154
|
}));
|
|
155
155
|
}
|
|
156
|
-
}), " ", /*#__PURE__*/_react.default.createElement("span", null, "
|
|
156
|
+
}), " ", /*#__PURE__*/_react.default.createElement("span", null, "New tab")), /*#__PURE__*/_react.default.createElement("input", {
|
|
157
157
|
ref: inputRef,
|
|
158
158
|
className: "link-input",
|
|
159
159
|
value: linkUrl.url,
|
|
@@ -186,7 +186,7 @@ function FloatingLinkEditor(_ref) {
|
|
|
186
186
|
type: "checkbox",
|
|
187
187
|
checked: linkUrl.target === "_blank",
|
|
188
188
|
readOnly: true
|
|
189
|
-
}), " ", /*#__PURE__*/_react.default.createElement("span", null, "
|
|
189
|
+
}), " ", /*#__PURE__*/_react.default.createElement("span", null, "New tab")), /*#__PURE__*/_react.default.createElement("div", {
|
|
190
190
|
className: "link-input"
|
|
191
191
|
}, /*#__PURE__*/_react.default.createElement("a", {
|
|
192
192
|
href: linkUrl.url,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireWildcard","require","_link","_LexicalComposerContext","_utils","_lexical","_reactDom","_LinkPreview","_getSelectedNode","_sanitizeUrl","_setFloatingElemPosition","_isUrlLinkReference","FloatingLinkEditor","_ref","editor","anchorElem","editorRef","useRef","inputRef","_useState","useState","url","target","_useState2","_slicedToArray2","default","linkUrl","setLinkUrl","_useState3","_useState4","isEditMode","setEditMode","_useState5","_useState6","lastSelection","setLastSelection","updateLinkEditor","useCallback","selection","$getSelection","$isRangeSelection","node","getSelectedNode","parent","getParent","$isLinkNode","getURL","getTarget","editorElem","current","nativeSelection","window","getSelection","activeElement","document","rootElement","getRootElement","contains","anchorNode","domRange","getRangeAt","rect","inner","firstElementChild","getBoundingClientRect","setFloatingElemPosition","className","removeLink","dispatchCommand","TOGGLE_LINK_COMMAND","useEffect","scrollerElem","parentElement","update","getEditorState","read","addEventListener","removeEventListener","mergeRegister","registerUpdateListener","_ref2","editorState","registerCommand","SELECTION_CHANGE_COMMAND","COMMAND_PRIORITY_LOW","focus","createElement","ref","Fragment","type","checked","disabled","isUrlLinkReference","onChange","_objectSpread2","value","event","onKeyDown","key","preventDefault","sanitizeUrl","readOnly","href","rel","role","tabIndex","onMouseDown","onClick","LinkPreview","useFloatingLinkEditorToolbar","_useState7","_useState8","activeEditor","setActiveEditor","_useState9","_useState10","isLink","setIsLink","updateToolbar","linkParent","$findMatchingParent","autoLinkParent","$isAutoLinkNode","_payload","newEditor","COMMAND_PRIORITY_CRITICAL","createPortal","FloatingLinkEditorPlugin","_ref3","_ref3$anchorElem","body","_useLexicalComposerCo","useLexicalComposerContext","_useLexicalComposerCo2"],"sources":["FloatingLinkEditorPlugin.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport \"./FloatingLinkEditorPlugin.css\";\nimport { $isAutoLinkNode, $isLinkNode, TOGGLE_LINK_COMMAND } from \"@lexical/link\";\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { $findMatchingParent, mergeRegister } from \"@lexical/utils\";\nimport {\n $getSelection,\n $isRangeSelection,\n COMMAND_PRIORITY_CRITICAL,\n COMMAND_PRIORITY_LOW,\n GridSelection,\n LexicalEditor,\n NodeSelection,\n RangeSelection,\n SELECTION_CHANGE_COMMAND\n} from \"lexical\";\n\nimport { createPortal } from \"react-dom\";\nimport { LinkPreview } from \"../../ui/LinkPreview\";\nimport { getSelectedNode } from \"../../utils/getSelectedNode\";\nimport { sanitizeUrl } from \"../../utils/sanitizeUrl\";\nimport { setFloatingElemPosition } from \"../../utils/setFloatingElemPosition\";\nimport { isUrlLinkReference } from \"~/utils/isUrlLinkReference\";\n\nfunction FloatingLinkEditor({\n editor,\n anchorElem\n}: {\n editor: LexicalEditor;\n anchorElem: HTMLElement;\n}): JSX.Element {\n const editorRef = useRef<HTMLDivElement | null>(null);\n const inputRef = useRef<HTMLInputElement>(null);\n const [linkUrl, setLinkUrl] = useState<{ url: string; target: string | null }>({\n url: \"\",\n target: null\n });\n const [isEditMode, setEditMode] = useState(false);\n const [lastSelection, setLastSelection] = useState<\n RangeSelection | GridSelection | NodeSelection | null\n >(null);\n\n const updateLinkEditor = useCallback(() => {\n const selection = $getSelection();\n if ($isRangeSelection(selection)) {\n const node = getSelectedNode(selection);\n const parent = node.getParent();\n if ($isLinkNode(parent)) {\n setLinkUrl({ url: parent.getURL(), target: parent.getTarget() });\n } else if ($isLinkNode(node)) {\n setLinkUrl({ url: node.getURL(), target: node.getTarget() });\n } else {\n setLinkUrl({ url: \"\", target: null });\n }\n }\n const editorElem = editorRef.current;\n const nativeSelection = window.getSelection();\n const activeElement = document.activeElement;\n\n if (editorElem === null) {\n return;\n }\n\n const rootElement = editor.getRootElement();\n\n if (\n selection !== null &&\n nativeSelection !== null &&\n rootElement !== null &&\n rootElement.contains(nativeSelection.anchorNode)\n ) {\n const domRange = nativeSelection.getRangeAt(0);\n let rect;\n if (nativeSelection.anchorNode === rootElement) {\n let inner = rootElement;\n while (inner.firstElementChild != null) {\n inner = inner.firstElementChild as HTMLElement;\n }\n rect = inner.getBoundingClientRect();\n } else {\n rect = domRange.getBoundingClientRect();\n }\n\n setFloatingElemPosition(rect, editorElem, anchorElem);\n setLastSelection(selection);\n } else if (!activeElement || activeElement.className !== \"link-input\") {\n if (rootElement !== null) {\n setFloatingElemPosition(null, editorElem, anchorElem);\n }\n setLastSelection(null);\n setEditMode(false);\n setLinkUrl({ url: \"\", target: null });\n }\n\n return true;\n }, [anchorElem, editor]);\n\n const removeLink = () => {\n editor.dispatchCommand(TOGGLE_LINK_COMMAND, null);\n setEditMode(false);\n };\n\n useEffect(() => {\n const scrollerElem = anchorElem.parentElement;\n\n const update = () => {\n editor.getEditorState().read(() => {\n updateLinkEditor();\n });\n };\n\n window.addEventListener(\"resize\", update);\n\n if (scrollerElem) {\n scrollerElem.addEventListener(\"scroll\", update);\n }\n\n return () => {\n window.removeEventListener(\"resize\", update);\n\n if (scrollerElem) {\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 updateLinkEditor();\n });\n }),\n\n editor.registerCommand(\n SELECTION_CHANGE_COMMAND,\n () => {\n updateLinkEditor();\n return true;\n },\n COMMAND_PRIORITY_LOW\n )\n );\n }, [editor, updateLinkEditor]);\n\n useEffect(() => {\n editor.getEditorState().read(() => {\n updateLinkEditor();\n });\n }, [editor, updateLinkEditor]);\n\n useEffect(() => {\n if (isEditMode && inputRef.current) {\n inputRef.current.focus();\n }\n }, [isEditMode]);\n\n return (\n <div ref={editorRef} className=\"link-editor\">\n {isEditMode ? (\n <>\n <div className={\"link-editor-target-checkbox\"}>\n <input\n type={\"checkbox\"}\n checked={linkUrl.target === \"_blank\"}\n disabled={isUrlLinkReference(linkUrl.url)}\n onChange={() =>\n setLinkUrl({ ...linkUrl, target: linkUrl.target ? null : \"_blank\" })\n }\n />{\" \"}\n <span>Open in new page</span>\n </div>\n <input\n ref={inputRef}\n className=\"link-input\"\n value={linkUrl.url}\n onChange={event => {\n setLinkUrl({ url: event.target.value, target: null });\n }}\n onKeyDown={event => {\n if (event.key === \"Enter\") {\n event.preventDefault();\n if (lastSelection !== null) {\n if (linkUrl.url !== \"\") {\n editor.dispatchCommand(TOGGLE_LINK_COMMAND, {\n url: sanitizeUrl(linkUrl.url),\n target: linkUrl.target\n });\n }\n setEditMode(false);\n }\n } else if (event.key === \"Escape\") {\n event.preventDefault();\n setEditMode(false);\n }\n }}\n />\n </>\n ) : (\n <>\n <div className={\"link-editor-target-checkbox\"}>\n <input type={\"checkbox\"} checked={linkUrl.target === \"_blank\"} readOnly />{\" \"}\n <span>Open in new page</span>\n </div>\n <div className=\"link-input\">\n <a href={linkUrl.url} target=\"_blank\" rel=\"noopener noreferrer\">\n {linkUrl.url}\n </a>\n <div\n className=\"link-edit\"\n role=\"button\"\n tabIndex={0}\n onMouseDown={event => event.preventDefault()}\n onClick={() => {\n setEditMode(true);\n }}\n />\n <div\n className=\"link-unlink\"\n role=\"button\"\n tabIndex={0}\n onMouseDown={event => event.preventDefault()}\n onClick={() => {\n removeLink();\n }}\n />\n </div>\n <LinkPreview url={linkUrl.url} />\n </>\n )}\n </div>\n );\n}\n\nfunction useFloatingLinkEditorToolbar(\n editor: LexicalEditor,\n anchorElem: HTMLElement\n): JSX.Element | null {\n const [activeEditor, setActiveEditor] = useState(editor);\n const [isLink, setIsLink] = useState(false);\n\n const updateToolbar = useCallback(() => {\n const selection = $getSelection();\n if ($isRangeSelection(selection)) {\n const node = getSelectedNode(selection);\n const linkParent = $findMatchingParent(node, $isLinkNode);\n const autoLinkParent = $findMatchingParent(node, $isAutoLinkNode);\n\n // We don't want this menu to open for auto links.\n if (linkParent != null && autoLinkParent == null) {\n setIsLink(true);\n } else {\n setIsLink(false);\n }\n }\n }, []);\n\n useEffect(() => {\n return editor.registerCommand(\n SELECTION_CHANGE_COMMAND,\n (_payload, newEditor) => {\n updateToolbar();\n setActiveEditor(newEditor);\n return false;\n },\n COMMAND_PRIORITY_CRITICAL\n );\n }, [editor, updateToolbar]);\n\n return isLink\n ? createPortal(\n <FloatingLinkEditor editor={activeEditor} anchorElem={anchorElem} />,\n anchorElem\n )\n : null;\n}\n\nexport function FloatingLinkEditorPlugin({\n anchorElem = document.body\n}: {\n anchorElem?: HTMLElement;\n}): JSX.Element | null {\n const [editor] = useLexicalComposerContext();\n return useFloatingLinkEditorToolbar(editor, anchorElem);\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_link","_LexicalComposerContext","_utils","_lexical","_reactDom","_LinkPreview","_getSelectedNode","_sanitizeUrl","_setFloatingElemPosition","_isUrlLinkReference","FloatingLinkEditor","_ref","editor","anchorElem","editorRef","useRef","inputRef","_useState","useState","url","target","_useState2","_slicedToArray2","default","linkUrl","setLinkUrl","_useState3","_useState4","isEditMode","setEditMode","_useState5","_useState6","lastSelection","setLastSelection","updateLinkEditor","useCallback","selection","$getSelection","$isRangeSelection","node","getSelectedNode","parent","getParent","$isLinkNode","getURL","getTarget","editorElem","current","nativeSelection","window","getSelection","activeElement","document","rootElement","getRootElement","contains","anchorNode","domRange","getRangeAt","rect","inner","firstElementChild","getBoundingClientRect","setFloatingElemPosition","className","removeLink","dispatchCommand","TOGGLE_LINK_COMMAND","useEffect","scrollerElem","parentElement","update","getEditorState","read","addEventListener","removeEventListener","mergeRegister","registerUpdateListener","_ref2","editorState","registerCommand","SELECTION_CHANGE_COMMAND","COMMAND_PRIORITY_LOW","focus","createElement","ref","Fragment","type","checked","disabled","isUrlLinkReference","onChange","_objectSpread2","value","event","onKeyDown","key","preventDefault","sanitizeUrl","readOnly","href","rel","role","tabIndex","onMouseDown","onClick","LinkPreview","useFloatingLinkEditorToolbar","_useState7","_useState8","activeEditor","setActiveEditor","_useState9","_useState10","isLink","setIsLink","updateToolbar","linkParent","$findMatchingParent","autoLinkParent","$isAutoLinkNode","_payload","newEditor","COMMAND_PRIORITY_CRITICAL","createPortal","FloatingLinkEditorPlugin","_ref3","_ref3$anchorElem","body","_useLexicalComposerCo","useLexicalComposerContext","_useLexicalComposerCo2"],"sources":["FloatingLinkEditorPlugin.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport \"./FloatingLinkEditorPlugin.css\";\nimport { $isAutoLinkNode, $isLinkNode, TOGGLE_LINK_COMMAND } from \"@lexical/link\";\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { $findMatchingParent, mergeRegister } from \"@lexical/utils\";\nimport {\n $getSelection,\n $isRangeSelection,\n COMMAND_PRIORITY_CRITICAL,\n COMMAND_PRIORITY_LOW,\n GridSelection,\n LexicalEditor,\n NodeSelection,\n RangeSelection,\n SELECTION_CHANGE_COMMAND\n} from \"lexical\";\n\nimport { createPortal } from \"react-dom\";\nimport { LinkPreview } from \"../../ui/LinkPreview\";\nimport { getSelectedNode } from \"../../utils/getSelectedNode\";\nimport { sanitizeUrl } from \"../../utils/sanitizeUrl\";\nimport { setFloatingElemPosition } from \"../../utils/setFloatingElemPosition\";\nimport { isUrlLinkReference } from \"~/utils/isUrlLinkReference\";\n\nfunction FloatingLinkEditor({\n editor,\n anchorElem\n}: {\n editor: LexicalEditor;\n anchorElem: HTMLElement;\n}): JSX.Element {\n const editorRef = useRef<HTMLDivElement | null>(null);\n const inputRef = useRef<HTMLInputElement>(null);\n const [linkUrl, setLinkUrl] = useState<{ url: string; target: string | null }>({\n url: \"\",\n target: null\n });\n const [isEditMode, setEditMode] = useState(false);\n const [lastSelection, setLastSelection] = useState<\n RangeSelection | GridSelection | NodeSelection | null\n >(null);\n\n const updateLinkEditor = useCallback(() => {\n const selection = $getSelection();\n if ($isRangeSelection(selection)) {\n const node = getSelectedNode(selection);\n const parent = node.getParent();\n if ($isLinkNode(parent)) {\n setLinkUrl({ url: parent.getURL(), target: parent.getTarget() });\n } else if ($isLinkNode(node)) {\n setLinkUrl({ url: node.getURL(), target: node.getTarget() });\n } else {\n setLinkUrl({ url: \"\", target: null });\n }\n }\n const editorElem = editorRef.current;\n const nativeSelection = window.getSelection();\n const activeElement = document.activeElement;\n\n if (editorElem === null) {\n return;\n }\n\n const rootElement = editor.getRootElement();\n\n if (\n selection !== null &&\n nativeSelection !== null &&\n rootElement !== null &&\n rootElement.contains(nativeSelection.anchorNode)\n ) {\n const domRange = nativeSelection.getRangeAt(0);\n let rect;\n if (nativeSelection.anchorNode === rootElement) {\n let inner = rootElement;\n while (inner.firstElementChild != null) {\n inner = inner.firstElementChild as HTMLElement;\n }\n rect = inner.getBoundingClientRect();\n } else {\n rect = domRange.getBoundingClientRect();\n }\n\n setFloatingElemPosition(rect, editorElem, anchorElem);\n setLastSelection(selection);\n } else if (!activeElement || activeElement.className !== \"link-input\") {\n if (rootElement !== null) {\n setFloatingElemPosition(null, editorElem, anchorElem);\n }\n setLastSelection(null);\n setEditMode(false);\n setLinkUrl({ url: \"\", target: null });\n }\n\n return true;\n }, [anchorElem, editor]);\n\n const removeLink = () => {\n editor.dispatchCommand(TOGGLE_LINK_COMMAND, null);\n setEditMode(false);\n };\n\n useEffect(() => {\n const scrollerElem = anchorElem.parentElement;\n\n const update = () => {\n editor.getEditorState().read(() => {\n updateLinkEditor();\n });\n };\n\n window.addEventListener(\"resize\", update);\n\n if (scrollerElem) {\n scrollerElem.addEventListener(\"scroll\", update);\n }\n\n return () => {\n window.removeEventListener(\"resize\", update);\n\n if (scrollerElem) {\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 updateLinkEditor();\n });\n }),\n\n editor.registerCommand(\n SELECTION_CHANGE_COMMAND,\n () => {\n updateLinkEditor();\n return true;\n },\n COMMAND_PRIORITY_LOW\n )\n );\n }, [editor, updateLinkEditor]);\n\n useEffect(() => {\n editor.getEditorState().read(() => {\n updateLinkEditor();\n });\n }, [editor, updateLinkEditor]);\n\n useEffect(() => {\n if (isEditMode && inputRef.current) {\n inputRef.current.focus();\n }\n }, [isEditMode]);\n\n return (\n <div ref={editorRef} className=\"link-editor\">\n {isEditMode ? (\n <>\n <div className={\"link-editor-target-checkbox\"}>\n <input\n type={\"checkbox\"}\n checked={linkUrl.target === \"_blank\"}\n disabled={isUrlLinkReference(linkUrl.url)}\n onChange={() =>\n setLinkUrl({ ...linkUrl, target: linkUrl.target ? null : \"_blank\" })\n }\n />{\" \"}\n <span>New tab</span>\n </div>\n <input\n ref={inputRef}\n className=\"link-input\"\n value={linkUrl.url}\n onChange={event => {\n setLinkUrl({ url: event.target.value, target: null });\n }}\n onKeyDown={event => {\n if (event.key === \"Enter\") {\n event.preventDefault();\n if (lastSelection !== null) {\n if (linkUrl.url !== \"\") {\n editor.dispatchCommand(TOGGLE_LINK_COMMAND, {\n url: sanitizeUrl(linkUrl.url),\n target: linkUrl.target\n });\n }\n setEditMode(false);\n }\n } else if (event.key === \"Escape\") {\n event.preventDefault();\n setEditMode(false);\n }\n }}\n />\n </>\n ) : (\n <>\n <div className={\"link-editor-target-checkbox\"}>\n <input type={\"checkbox\"} checked={linkUrl.target === \"_blank\"} readOnly />{\" \"}\n <span>New tab</span>\n </div>\n <div className=\"link-input\">\n <a href={linkUrl.url} target=\"_blank\" rel=\"noopener noreferrer\">\n {linkUrl.url}\n </a>\n <div\n className=\"link-edit\"\n role=\"button\"\n tabIndex={0}\n onMouseDown={event => event.preventDefault()}\n onClick={() => {\n setEditMode(true);\n }}\n />\n <div\n className=\"link-unlink\"\n role=\"button\"\n tabIndex={0}\n onMouseDown={event => event.preventDefault()}\n onClick={() => {\n removeLink();\n }}\n />\n </div>\n <LinkPreview url={linkUrl.url} />\n </>\n )}\n </div>\n );\n}\n\nfunction useFloatingLinkEditorToolbar(\n editor: LexicalEditor,\n anchorElem: HTMLElement\n): JSX.Element | null {\n const [activeEditor, setActiveEditor] = useState(editor);\n const [isLink, setIsLink] = useState(false);\n\n const updateToolbar = useCallback(() => {\n const selection = $getSelection();\n if ($isRangeSelection(selection)) {\n const node = getSelectedNode(selection);\n const linkParent = $findMatchingParent(node, $isLinkNode);\n const autoLinkParent = $findMatchingParent(node, $isAutoLinkNode);\n\n // We don't want this menu to open for auto links.\n if (linkParent != null && autoLinkParent == null) {\n setIsLink(true);\n } else {\n setIsLink(false);\n }\n }\n }, []);\n\n useEffect(() => {\n return editor.registerCommand(\n SELECTION_CHANGE_COMMAND,\n (_payload, newEditor) => {\n updateToolbar();\n setActiveEditor(newEditor);\n return false;\n },\n COMMAND_PRIORITY_CRITICAL\n );\n }, [editor, updateToolbar]);\n\n return isLink\n ? createPortal(\n <FloatingLinkEditor editor={activeEditor} anchorElem={anchorElem} />,\n anchorElem\n )\n : null;\n}\n\nexport function FloatingLinkEditorPlugin({\n anchorElem = document.body\n}: {\n anchorElem?: HTMLElement;\n}): JSX.Element | null {\n const [editor] = useLexicalComposerContext();\n return useFloatingLinkEditorToolbar(editor, anchorElem);\n}\n"],"mappings":"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"}
|