@sparrowengg/twigs-editor-react 0.0.3 → 0.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -80,6 +80,7 @@ function useDialogLinkEditorToolbar(editor, anchorElem, options) {
80
80
  );
81
81
  }, [editor]);
82
82
  const updateLinkEditor = react.useCallback(() => {
83
+ var _a2;
83
84
  const selection = lexical.$getSelection();
84
85
  if (lexical.$isRangeSelection(selection)) {
85
86
  const node = getSelectedNode.getSelectedNode(selection);
@@ -95,13 +96,13 @@ function useDialogLinkEditorToolbar(editor, anchorElem, options) {
95
96
  setLinkUrl("");
96
97
  }
97
98
  }
98
- const nativeSelection = window.getSelection();
99
+ const nativeSelection = lexical.getDOMSelection((_a2 = editor._window) != null ? _a2 : window);
99
100
  const { activeElement } = document;
100
101
  const rootElement = editor.getRootElement();
101
102
  if (selection !== null && nativeSelection !== null && rootElement !== null && rootElement.contains(nativeSelection.anchorNode) && editor.isEditable()) {
102
103
  setTimeout(() => {
103
- var _a2, _b2;
104
- const domRect = (_b2 = (_a2 = nativeSelection.focusNode) == null ? void 0 : _a2.parentElement) == null ? void 0 : _b2.getBoundingClientRect();
104
+ var _a3, _b2;
105
+ const domRect = (_b2 = (_a3 = nativeSelection.focusNode) == null ? void 0 : _a3.parentElement) == null ? void 0 : _b2.getBoundingClientRect();
105
106
  if (domRect && anchorElem && containerRef.current) {
106
107
  setFloatingElemPositionForLinkEditor.setFloatingElemPositionForLinkEditor(
107
108
  domRect,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../src/components/dialog-link-editor/index.tsx"],"sourcesContent":["import {\n $isAutoLinkNode,\n $isLinkNode,\n TOGGLE_LINK_COMMAND\n} from '@lexical/link';\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext';\nimport { $findMatchingParent, mergeRegister } from '@lexical/utils';\nimport { ADD_BLANK_LINK } from '@src/utils/commands';\nimport {\n $getSelection,\n $isRangeSelection,\n $isTextNode,\n BaseSelection,\n CLICK_COMMAND,\n COMMAND_PRIORITY_CRITICAL,\n COMMAND_PRIORITY_HIGH,\n COMMAND_PRIORITY_LOW,\n KEY_ESCAPE_COMMAND,\n LexicalEditor,\n NodeSelection,\n RangeSelection,\n SELECTION_CHANGE_COMMAND\n} from 'lexical';\nimport {\n useCallback, useEffect, useRef, useState\n} from 'react';\nimport isURL from 'validator/es/lib/isURL';\nimport { getSelectedNode } from '@src/utils/get-selected-node';\nimport { setFloatingElemPositionForLinkEditor } from '@src/utils/set-floating-elem-position-for-link-editor';\nimport { LinkEditorDialog } from './link-editor-dialog';\nimport { LinkTooltip } from './link-tooltip';\n\nfunction useDialogLinkEditorToolbar(\n editor: LexicalEditor,\n anchorElem: HTMLElement | null,\n options?: DialogLinkEditorOptions\n) {\n const [linkUrl, setLinkUrl] = useState('');\n const [linkText, setLinkText] = useState('');\n const [isLink, setIsLink] = useState(false);\n const [lastSelection, setLastSelection] = useState<\n RangeSelection | NodeSelection | BaseSelection | null\n >(null);\n const [isLinkEditMode, setIsLinkEditMode] = useState(false);\n const [isUpdate, setIsUpdate] = useState(false);\n const [errors, setErrors] = useState({\n text: false,\n url: false\n });\n\n const isNewLink = useRef(false);\n const containerRef = useRef<HTMLDivElement | null>(null);\n const containerElem = containerRef.current;\n\n useEffect(() => {\n function updateToolbar() {\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 if (linkParent !== null && autoLinkParent === null) {\n setIsLink(true);\n } else {\n setIsLink(false);\n }\n }\n }\n return mergeRegister(\n editor.registerUpdateListener(({ editorState }) => {\n editorState.read(() => {\n updateToolbar();\n });\n }),\n editor.registerCommand(\n SELECTION_CHANGE_COMMAND,\n () => {\n updateToolbar();\n return false;\n },\n COMMAND_PRIORITY_CRITICAL\n ),\n editor.registerCommand(\n CLICK_COMMAND,\n (payload) => {\n const selection = $getSelection();\n if ($isRangeSelection(selection)) {\n const node = getSelectedNode(selection);\n const linkNode = $findMatchingParent(node, $isLinkNode);\n if ($isLinkNode(linkNode)) {\n const url = linkNode.getURL();\n setLinkUrl(url);\n setLinkText(linkNode.getTextContent());\n }\n if ($isLinkNode(linkNode) && (payload.metaKey || payload.ctrlKey)) {\n window.open(linkNode.getURL(), '_blank');\n return true;\n }\n }\n return false;\n },\n COMMAND_PRIORITY_LOW\n )\n );\n }, [editor]);\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 setLinkText(parent.getTextContent().trim());\n setLinkUrl(parent.getURL());\n } else if ($isLinkNode(node)) {\n setLinkText(node.getTextContent().trim());\n setLinkUrl(node.getURL());\n } else {\n setLinkText('');\n setLinkUrl('');\n }\n }\n\n const nativeSelection = window.getSelection();\n const { activeElement } = document;\n\n const rootElement = editor.getRootElement();\n\n if (\n selection !== null\n && nativeSelection !== null\n && rootElement !== null\n && rootElement.contains(nativeSelection.anchorNode)\n && editor.isEditable()\n ) {\n setTimeout(() => {\n const domRect: DOMRect | undefined = nativeSelection.focusNode?.parentElement?.getBoundingClientRect();\n if (domRect && anchorElem && containerRef.current) {\n setFloatingElemPositionForLinkEditor(\n domRect,\n containerRef.current,\n anchorElem,\n 10\n );\n }\n }, 10);\n setLastSelection(selection);\n } else if (!activeElement || activeElement.className !== 'link-input') {\n setTimeout(() => {\n if (rootElement !== null && anchorElem && containerElem) {\n setFloatingElemPositionForLinkEditor(null, containerElem, anchorElem);\n }\n }, 10);\n setLastSelection(null);\n setLinkUrl('');\n }\n\n // eslint-disable-next-line consistent-return\n return true;\n }, [anchorElem, editor, setIsLinkEditMode]);\n\n useEffect(() => {\n if (!isLinkEditMode) {\n isNewLink.current = false;\n }\n }, [isLinkEditMode]);\n\n useEffect(() => {\n return mergeRegister(\n editor.registerUpdateListener(({ editorState }) => {\n editorState.read(() => {\n updateLinkEditor();\n });\n }),\n\n editor.registerCommand(\n ADD_BLANK_LINK,\n () => {\n setTimeout(() => {\n setIsLinkEditMode(true);\n }, 40);\n isNewLink.current = true;\n return false;\n },\n COMMAND_PRIORITY_HIGH\n ),\n\n editor.registerCommand(\n TOGGLE_LINK_COMMAND,\n (payload: string | { url: string } | null) => {\n if (typeof payload === 'string' || payload?.url) {\n setTimeout(() => {\n setIsLinkEditMode(true);\n }, 40);\n isNewLink.current = true;\n } else {\n setIsLinkEditMode(false);\n }\n return false;\n },\n COMMAND_PRIORITY_HIGH\n ),\n editor.registerCommand(\n SELECTION_CHANGE_COMMAND,\n () => {\n updateLinkEditor();\n return true;\n },\n COMMAND_PRIORITY_LOW\n ),\n editor.registerCommand(\n KEY_ESCAPE_COMMAND,\n () => {\n if (isLink) {\n setIsLink(false);\n return true;\n }\n return false;\n },\n COMMAND_PRIORITY_HIGH\n )\n );\n }, [editor, updateLinkEditor, setIsLink, isLink]);\n\n useEffect(() => {\n editor.getEditorState().read(() => {\n updateLinkEditor();\n });\n }, [editor, updateLinkEditor]);\n\n const handleLinkSubmission = ({\n text,\n url\n }: {\n text: string;\n url: string;\n }) => {\n if (lastSelection !== null) {\n const isValidUrl = isURL(url);\n const isValidText = text.trim().length > 0;\n\n if (isValidUrl && isValidText) {\n editor.dispatchCommand(TOGGLE_LINK_COMMAND, {\n url,\n rel: options?.anchorOptions?.rel,\n target: options?.anchorOptions?.target,\n title: options?.anchorOptions?.title\n });\n editor.update(() => {\n if ($isRangeSelection(lastSelection)) {\n const textNode = getSelectedNode(lastSelection);\n if ($isTextNode(textNode)) {\n textNode.setTextContent(text);\n }\n }\n });\n setErrors({\n text: false,\n url: false\n });\n setTimeout(() => {\n setIsLink(false);\n setIsLinkEditMode(false);\n }, 50);\n } else {\n setErrors({\n text: !isValidText,\n url: !isValidUrl\n });\n }\n }\n };\n\n if (!anchorElem) return null;\n\n return (\n <>\n {isLink && !isLinkEditMode && (\n <LinkTooltip\n anchorElem={anchorElem}\n containerRef={containerRef}\n handleDelete={() => {\n if (lastSelection !== null) {\n editor.dispatchCommand(TOGGLE_LINK_COMMAND, null);\n }\n }}\n handleEdit={() => {\n setIsLinkEditMode(true);\n setIsUpdate(true);\n }}\n linkUrl={linkUrl}\n https={options?.anchorOptions?.https || false}\n />\n )}\n {isLinkEditMode && (\n <LinkEditorDialog\n handleLinkSubmission={handleLinkSubmission}\n linkText={linkText}\n linkUrl={linkUrl}\n open={isLink && isLinkEditMode}\n closeModal={() => {\n setIsLink(false);\n setIsLinkEditMode(false);\n if (isNewLink.current) {\n editor.dispatchCommand(TOGGLE_LINK_COMMAND, null);\n }\n }}\n isUpdate={isUpdate}\n setIsLinkEditMode={setIsLinkEditMode}\n textLabel={options?.dialogProps?.textLabel || 'Link text'}\n urlLabel={options?.dialogProps?.urlLabel || 'Link URL'}\n removeLink={() => {\n if (lastSelection !== null) {\n editor.dispatchCommand(TOGGLE_LINK_COMMAND, null);\n }\n }}\n errors={errors}\n saveLabel={options?.dialogProps?.saveLabel || 'Save'}\n cancelLabel={options?.dialogProps?.cancelLabel || 'Cancel'}\n updateLabel={options?.dialogProps?.updateLabel || 'Update'}\n title={options?.dialogProps?.title || 'Add Link'}\n errorLabels={options?.dialogProps?.errorLabels}\n />\n )}\n </>\n );\n}\n\nexport type DialogLinkEditorOptions = {\n dialogProps?: {\n textLabel?: string;\n urlLabel?: string;\n saveLabel?: string;\n cancelLabel?: string;\n updateLabel?: string;\n title?: string;\n errorLabels?: {\n text?: string;\n url?: string;\n };\n };\n anchorOptions?: {\n rel?: string;\n target?: string;\n title?: string;\n https?: boolean;\n };\n};\n\nexport function DialogLinkEditor({\n anchorElem = document.body,\n options\n}: {\n anchorElem?: HTMLElement | null;\n options?: DialogLinkEditorOptions;\n}) {\n const [editor] = useLexicalComposerContext();\n return useDialogLinkEditorToolbar(editor, anchorElem, options);\n}\n"],"names":["useState","useRef","useEffect","$getSelection","$isRangeSelection","getSelectedNode","$findMatchingParent","$isLinkNode","$isAutoLinkNode","mergeRegister","SELECTION_CHANGE_COMMAND","COMMAND_PRIORITY_CRITICAL","CLICK_COMMAND","COMMAND_PRIORITY_LOW","useCallback","_a","_b","setFloatingElemPositionForLinkEditor","ADD_BLANK_LINK","COMMAND_PRIORITY_HIGH","TOGGLE_LINK_COMMAND","KEY_ESCAPE_COMMAND","_c","isURL","$isTextNode","jsxs","Fragment","jsx","LinkTooltip","LinkEditorDialog","useLexicalComposerContext"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../../src/components/dialog-link-editor/index.tsx"],"sourcesContent":["import {\n $isAutoLinkNode,\n $isLinkNode,\n TOGGLE_LINK_COMMAND\n} from '@lexical/link';\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext';\nimport { $findMatchingParent, mergeRegister } from '@lexical/utils';\nimport { ADD_BLANK_LINK } from '@src/utils/commands';\nimport {\n $getSelection,\n $isRangeSelection,\n $isTextNode,\n BaseSelection,\n CLICK_COMMAND,\n COMMAND_PRIORITY_CRITICAL,\n COMMAND_PRIORITY_HIGH,\n COMMAND_PRIORITY_LOW,\n KEY_ESCAPE_COMMAND,\n LexicalEditor,\n NodeSelection,\n RangeSelection,\n SELECTION_CHANGE_COMMAND,\n getDOMSelection\n} from 'lexical';\nimport {\n useCallback, useEffect, useRef, useState\n} from 'react';\nimport isURL from 'validator/es/lib/isURL';\nimport { getSelectedNode } from '@src/utils/get-selected-node';\nimport { setFloatingElemPositionForLinkEditor } from '@src/utils/set-floating-elem-position-for-link-editor';\nimport { LinkEditorDialog } from './link-editor-dialog';\nimport { LinkTooltip } from './link-tooltip';\n\nfunction useDialogLinkEditorToolbar(\n editor: LexicalEditor,\n anchorElem: HTMLElement | null,\n options?: DialogLinkEditorOptions\n) {\n const [linkUrl, setLinkUrl] = useState('');\n const [linkText, setLinkText] = useState('');\n const [isLink, setIsLink] = useState(false);\n const [lastSelection, setLastSelection] = useState<\n RangeSelection | NodeSelection | BaseSelection | null\n >(null);\n const [isLinkEditMode, setIsLinkEditMode] = useState(false);\n const [isUpdate, setIsUpdate] = useState(false);\n const [errors, setErrors] = useState({\n text: false,\n url: false\n });\n\n const isNewLink = useRef(false);\n const containerRef = useRef<HTMLDivElement | null>(null);\n const containerElem = containerRef.current;\n\n useEffect(() => {\n function updateToolbar() {\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 if (linkParent !== null && autoLinkParent === null) {\n setIsLink(true);\n } else {\n setIsLink(false);\n }\n }\n }\n return mergeRegister(\n editor.registerUpdateListener(({ editorState }) => {\n editorState.read(() => {\n updateToolbar();\n });\n }),\n editor.registerCommand(\n SELECTION_CHANGE_COMMAND,\n () => {\n updateToolbar();\n return false;\n },\n COMMAND_PRIORITY_CRITICAL\n ),\n editor.registerCommand(\n CLICK_COMMAND,\n (payload) => {\n const selection = $getSelection();\n if ($isRangeSelection(selection)) {\n const node = getSelectedNode(selection);\n const linkNode = $findMatchingParent(node, $isLinkNode);\n if ($isLinkNode(linkNode)) {\n const url = linkNode.getURL();\n setLinkUrl(url);\n setLinkText(linkNode.getTextContent());\n }\n if ($isLinkNode(linkNode) && (payload.metaKey || payload.ctrlKey)) {\n window.open(linkNode.getURL(), '_blank');\n return true;\n }\n }\n return false;\n },\n COMMAND_PRIORITY_LOW\n )\n );\n }, [editor]);\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 setLinkText(parent.getTextContent().trim());\n setLinkUrl(parent.getURL());\n } else if ($isLinkNode(node)) {\n setLinkText(node.getTextContent().trim());\n setLinkUrl(node.getURL());\n } else {\n setLinkText('');\n setLinkUrl('');\n }\n }\n\n const nativeSelection = getDOMSelection(editor._window ?? window);\n const { activeElement } = document;\n\n const rootElement = editor.getRootElement();\n\n if (\n selection !== null\n && nativeSelection !== null\n && rootElement !== null\n && rootElement.contains(nativeSelection.anchorNode)\n && editor.isEditable()\n ) {\n setTimeout(() => {\n const domRect: DOMRect | undefined = nativeSelection.focusNode?.parentElement?.getBoundingClientRect();\n if (domRect && anchorElem && containerRef.current) {\n setFloatingElemPositionForLinkEditor(\n domRect,\n containerRef.current,\n anchorElem,\n 10\n );\n }\n }, 10);\n setLastSelection(selection);\n } else if (!activeElement || activeElement.className !== 'link-input') {\n setTimeout(() => {\n if (rootElement !== null && anchorElem && containerElem) {\n setFloatingElemPositionForLinkEditor(null, containerElem, anchorElem);\n }\n }, 10);\n setLastSelection(null);\n setLinkUrl('');\n }\n\n // eslint-disable-next-line consistent-return\n return true;\n }, [anchorElem, editor, setIsLinkEditMode]);\n\n useEffect(() => {\n if (!isLinkEditMode) {\n isNewLink.current = false;\n }\n }, [isLinkEditMode]);\n\n useEffect(() => {\n return mergeRegister(\n editor.registerUpdateListener(({ editorState }) => {\n editorState.read(() => {\n updateLinkEditor();\n });\n }),\n\n editor.registerCommand(\n ADD_BLANK_LINK,\n () => {\n setTimeout(() => {\n setIsLinkEditMode(true);\n }, 40);\n isNewLink.current = true;\n return false;\n },\n COMMAND_PRIORITY_HIGH\n ),\n\n editor.registerCommand(\n TOGGLE_LINK_COMMAND,\n (payload: string | { url: string } | null) => {\n if (typeof payload === 'string' || payload?.url) {\n setTimeout(() => {\n setIsLinkEditMode(true);\n }, 40);\n isNewLink.current = true;\n } else {\n setIsLinkEditMode(false);\n }\n return false;\n },\n COMMAND_PRIORITY_HIGH\n ),\n editor.registerCommand(\n SELECTION_CHANGE_COMMAND,\n () => {\n updateLinkEditor();\n return true;\n },\n COMMAND_PRIORITY_LOW\n ),\n editor.registerCommand(\n KEY_ESCAPE_COMMAND,\n () => {\n if (isLink) {\n setIsLink(false);\n return true;\n }\n return false;\n },\n COMMAND_PRIORITY_HIGH\n )\n );\n }, [editor, updateLinkEditor, setIsLink, isLink]);\n\n useEffect(() => {\n editor.getEditorState().read(() => {\n updateLinkEditor();\n });\n }, [editor, updateLinkEditor]);\n\n const handleLinkSubmission = ({\n text,\n url\n }: {\n text: string;\n url: string;\n }) => {\n if (lastSelection !== null) {\n const isValidUrl = isURL(url);\n const isValidText = text.trim().length > 0;\n\n if (isValidUrl && isValidText) {\n editor.dispatchCommand(TOGGLE_LINK_COMMAND, {\n url,\n rel: options?.anchorOptions?.rel,\n target: options?.anchorOptions?.target,\n title: options?.anchorOptions?.title\n });\n editor.update(() => {\n if ($isRangeSelection(lastSelection)) {\n const textNode = getSelectedNode(lastSelection);\n if ($isTextNode(textNode)) {\n textNode.setTextContent(text);\n }\n }\n });\n setErrors({\n text: false,\n url: false\n });\n setTimeout(() => {\n setIsLink(false);\n setIsLinkEditMode(false);\n }, 50);\n } else {\n setErrors({\n text: !isValidText,\n url: !isValidUrl\n });\n }\n }\n };\n\n if (!anchorElem) return null;\n\n return (\n <>\n {isLink && !isLinkEditMode && (\n <LinkTooltip\n anchorElem={anchorElem}\n containerRef={containerRef}\n handleDelete={() => {\n if (lastSelection !== null) {\n editor.dispatchCommand(TOGGLE_LINK_COMMAND, null);\n }\n }}\n handleEdit={() => {\n setIsLinkEditMode(true);\n setIsUpdate(true);\n }}\n linkUrl={linkUrl}\n https={options?.anchorOptions?.https || false}\n />\n )}\n {isLinkEditMode && (\n <LinkEditorDialog\n handleLinkSubmission={handleLinkSubmission}\n linkText={linkText}\n linkUrl={linkUrl}\n open={isLink && isLinkEditMode}\n closeModal={() => {\n setIsLink(false);\n setIsLinkEditMode(false);\n if (isNewLink.current) {\n editor.dispatchCommand(TOGGLE_LINK_COMMAND, null);\n }\n }}\n isUpdate={isUpdate}\n setIsLinkEditMode={setIsLinkEditMode}\n textLabel={options?.dialogProps?.textLabel || 'Link text'}\n urlLabel={options?.dialogProps?.urlLabel || 'Link URL'}\n removeLink={() => {\n if (lastSelection !== null) {\n editor.dispatchCommand(TOGGLE_LINK_COMMAND, null);\n }\n }}\n errors={errors}\n saveLabel={options?.dialogProps?.saveLabel || 'Save'}\n cancelLabel={options?.dialogProps?.cancelLabel || 'Cancel'}\n updateLabel={options?.dialogProps?.updateLabel || 'Update'}\n title={options?.dialogProps?.title || 'Add Link'}\n errorLabels={options?.dialogProps?.errorLabels}\n />\n )}\n </>\n );\n}\n\nexport type DialogLinkEditorOptions = {\n dialogProps?: {\n textLabel?: string;\n urlLabel?: string;\n saveLabel?: string;\n cancelLabel?: string;\n updateLabel?: string;\n title?: string;\n errorLabels?: {\n text?: string;\n url?: string;\n };\n };\n anchorOptions?: {\n rel?: string;\n target?: string;\n title?: string;\n https?: boolean;\n };\n};\n\nexport function DialogLinkEditor({\n anchorElem = document.body,\n options\n}: {\n anchorElem?: HTMLElement | null;\n options?: DialogLinkEditorOptions;\n}) {\n const [editor] = useLexicalComposerContext();\n return useDialogLinkEditorToolbar(editor, anchorElem, options);\n}\n"],"names":["useState","useRef","useEffect","$getSelection","$isRangeSelection","getSelectedNode","$findMatchingParent","$isLinkNode","$isAutoLinkNode","mergeRegister","SELECTION_CHANGE_COMMAND","COMMAND_PRIORITY_CRITICAL","CLICK_COMMAND","COMMAND_PRIORITY_LOW","useCallback","_a","getDOMSelection","_b","setFloatingElemPositionForLinkEditor","ADD_BLANK_LINK","COMMAND_PRIORITY_HIGH","TOGGLE_LINK_COMMAND","KEY_ESCAPE_COMMAND","_c","isURL","$isTextNode","jsxs","Fragment","jsx","LinkTooltip","LinkEditorDialog","useLexicalComposerContext"],"mappings":";;;;;;;;;;;;;;;AAiCA,SAAS,0BAAA,CACP,MACA,EAAA,UAAA,EACA,OACA,EAAA;AArCF,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA;AAsCE,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAIA,eAAS,EAAE,CAAA;AACzC,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAIA,eAAS,EAAE,CAAA;AAC3C,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAIA,eAAS,KAAK,CAAA;AAC1C,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAIA,eAExC,IAAI,CAAA;AACN,EAAA,MAAM,CAAC,cAAA,EAAgB,iBAAiB,CAAA,GAAIA,eAAS,KAAK,CAAA;AAC1D,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAIA,eAAS,KAAK,CAAA;AAC9C,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAIA,cAAS,CAAA;AAAA,IACnC,IAAM,EAAA,KAAA;AAAA,IACN,GAAK,EAAA;AAAA,GACN,CAAA;AAED,EAAM,MAAA,SAAA,GAAYC,aAAO,KAAK,CAAA;AAC9B,EAAM,MAAA,YAAA,GAAeA,aAA8B,IAAI,CAAA;AACvD,EAAA,MAAM,gBAAgB,YAAa,CAAA,OAAA;AAEnC,EAAAC,eAAA,CAAU,MAAM;AACd,IAAA,SAAS,aAAgB,GAAA;AACvB,MAAA,MAAM,YAAYC,qBAAc,EAAA;AAChC,MAAI,IAAAC,yBAAA,CAAkB,SAAS,CAAG,EAAA;AAChC,QAAM,MAAA,IAAA,GAAOC,gCAAgB,SAAS,CAAA;AACtC,QAAM,MAAA,UAAA,GAAaC,yBAAoB,CAAA,IAAA,EAAMC,gBAAW,CAAA;AACxD,QAAM,MAAA,cAAA,GAAiBD,yBAAoB,CAAA,IAAA,EAAME,oBAAe,CAAA;AAChE,QAAI,IAAA,UAAA,KAAe,IAAQ,IAAA,cAAA,KAAmB,IAAM,EAAA;AAClD,UAAA,SAAA,CAAU,IAAI,CAAA;AAAA,SACT,MAAA;AACL,UAAA,SAAA,CAAU,KAAK,CAAA;AAAA;AACjB;AACF;AAEF,IAAO,OAAAC,mBAAA;AAAA,MACL,MAAO,CAAA,sBAAA,CAAuB,CAAC,EAAE,aAAkB,KAAA;AACjD,QAAA,WAAA,CAAY,KAAK,MAAM;AACrB,UAAc,aAAA,EAAA;AAAA,SACf,CAAA;AAAA,OACF,CAAA;AAAA,MACD,MAAO,CAAA,eAAA;AAAA,QACLC,gCAAA;AAAA,QACA,MAAM;AACJ,UAAc,aAAA,EAAA;AACd,UAAO,OAAA,KAAA;AAAA,SACT;AAAA,QACAC;AAAA,OACF;AAAA,MACA,MAAO,CAAA,eAAA;AAAA,QACLC,qBAAA;AAAA,QACA,CAAC,OAAY,KAAA;AACX,UAAA,MAAM,YAAYT,qBAAc,EAAA;AAChC,UAAI,IAAAC,yBAAA,CAAkB,SAAS,CAAG,EAAA;AAChC,YAAM,MAAA,IAAA,GAAOC,gCAAgB,SAAS,CAAA;AACtC,YAAM,MAAA,QAAA,GAAWC,yBAAoB,CAAA,IAAA,EAAMC,gBAAW,CAAA;AACtD,YAAI,IAAAA,gBAAA,CAAY,QAAQ,CAAG,EAAA;AACzB,cAAM,MAAA,GAAA,GAAM,SAAS,MAAO,EAAA;AAC5B,cAAA,UAAA,CAAW,GAAG,CAAA;AACd,cAAY,WAAA,CAAA,QAAA,CAAS,gBAAgB,CAAA;AAAA;AAEvC,YAAA,IAAIA,iBAAY,QAAQ,CAAA,KAAM,OAAQ,CAAA,OAAA,IAAW,QAAQ,OAAU,CAAA,EAAA;AACjE,cAAA,MAAA,CAAO,IAAK,CAAA,QAAA,CAAS,MAAO,EAAA,EAAG,QAAQ,CAAA;AACvC,cAAO,OAAA,IAAA;AAAA;AACT;AAEF,UAAO,OAAA,KAAA;AAAA,SACT;AAAA,QACAM;AAAA;AACF,KACF;AAAA,GACF,EAAG,CAAC,MAAM,CAAC,CAAA;AAEX,EAAM,MAAA,gBAAA,GAAmBC,kBAAY,MAAM;AA3G7C,IAAAC,IAAAA,GAAAA;AA4GI,IAAA,MAAM,YAAYZ,qBAAc,EAAA;AAChC,IAAI,IAAAC,yBAAA,CAAkB,SAAS,CAAG,EAAA;AAChC,MAAM,MAAA,IAAA,GAAOC,gCAAgB,SAAS,CAAA;AACtC,MAAM,MAAA,MAAA,GAAS,KAAK,SAAU,EAAA;AAC9B,MAAI,IAAAE,gBAAA,CAAY,MAAM,CAAG,EAAA;AACvB,QAAA,WAAA,CAAY,MAAO,CAAA,cAAA,EAAiB,CAAA,IAAA,EAAM,CAAA;AAC1C,QAAW,UAAA,CAAA,MAAA,CAAO,QAAQ,CAAA;AAAA,OAC5B,MAAA,IAAWA,gBAAY,CAAA,IAAI,CAAG,EAAA;AAC5B,QAAA,WAAA,CAAY,IAAK,CAAA,cAAA,EAAiB,CAAA,IAAA,EAAM,CAAA;AACxC,QAAW,UAAA,CAAA,IAAA,CAAK,QAAQ,CAAA;AAAA,OACnB,MAAA;AACL,QAAA,WAAA,CAAY,EAAE,CAAA;AACd,QAAA,UAAA,CAAW,EAAE,CAAA;AAAA;AACf;AAGF,IAAA,MAAM,kBAAkBS,uBAAgBD,CAAAA,CAAAA,GAAAA,GAAA,OAAO,OAAP,KAAA,IAAA,GAAAA,MAAkB,MAAM,CAAA;AAChE,IAAM,MAAA,EAAE,eAAkB,GAAA,QAAA;AAE1B,IAAM,MAAA,WAAA,GAAc,OAAO,cAAe,EAAA;AAE1C,IAAA,IACE,SAAc,KAAA,IAAA,IACX,eAAoB,KAAA,IAAA,IACpB,WAAgB,KAAA,IAAA,IAChB,WAAY,CAAA,QAAA,CAAS,eAAgB,CAAA,UAAU,CAC/C,IAAA,MAAA,CAAO,YACV,EAAA;AACA,MAAA,UAAA,CAAW,MAAM;AAxIvB,QAAA,IAAAA,GAAAE,EAAAA,GAAAA;AAyIQ,QAAM,MAAA,OAAA,GAAA,CAA+BA,OAAAF,GAAA,GAAA,eAAA,CAAgB,cAAhB,IAAAA,GAAAA,MAAAA,GAAAA,GAAAA,CAA2B,aAA3B,KAAA,IAAA,GAAA,MAAA,GAAAE,GAA0C,CAAA,qBAAA,EAAA;AAC/E,QAAI,IAAA,OAAA,IAAW,UAAc,IAAA,YAAA,CAAa,OAAS,EAAA;AACjD,UAAAC,yEAAA;AAAA,YACE,OAAA;AAAA,YACA,YAAa,CAAA,OAAA;AAAA,YACb,UAAA;AAAA,YACA;AAAA,WACF;AAAA;AACF,SACC,EAAE,CAAA;AACL,MAAA,gBAAA,CAAiB,SAAS,CAAA;AAAA,KACjB,MAAA,IAAA,CAAC,aAAiB,IAAA,aAAA,CAAc,cAAc,YAAc,EAAA;AACrE,MAAA,UAAA,CAAW,MAAM;AACf,QAAI,IAAA,WAAA,KAAgB,IAAQ,IAAA,UAAA,IAAc,aAAe,EAAA;AACvD,UAAqCA,yEAAA,CAAA,IAAA,EAAM,eAAe,UAAU,CAAA;AAAA;AACtE,SACC,EAAE,CAAA;AACL,MAAA,gBAAA,CAAiB,IAAI,CAAA;AACrB,MAAA,UAAA,CAAW,EAAE,CAAA;AAAA;AAIf,IAAO,OAAA,IAAA;AAAA,GACN,EAAA,CAAC,UAAY,EAAA,MAAA,EAAQ,iBAAiB,CAAC,CAAA;AAE1C,EAAAhB,eAAA,CAAU,MAAM;AACd,IAAA,IAAI,CAAC,cAAgB,EAAA;AACnB,MAAA,SAAA,CAAU,OAAU,GAAA,KAAA;AAAA;AACtB,GACF,EAAG,CAAC,cAAc,CAAC,CAAA;AAEnB,EAAAA,eAAA,CAAU,MAAM;AACd,IAAO,OAAAO,mBAAA;AAAA,MACL,MAAO,CAAA,sBAAA,CAAuB,CAAC,EAAE,aAAkB,KAAA;AACjD,QAAA,WAAA,CAAY,KAAK,MAAM;AACrB,UAAiB,gBAAA,EAAA;AAAA,SAClB,CAAA;AAAA,OACF,CAAA;AAAA,MAED,MAAO,CAAA,eAAA;AAAA,QACLU,uBAAA;AAAA,QACA,MAAM;AACJ,UAAA,UAAA,CAAW,MAAM;AACf,YAAA,iBAAA,CAAkB,IAAI,CAAA;AAAA,aACrB,EAAE,CAAA;AACL,UAAA,SAAA,CAAU,OAAU,GAAA,IAAA;AACpB,UAAO,OAAA,KAAA;AAAA,SACT;AAAA,QACAC;AAAA,OACF;AAAA,MAEA,MAAO,CAAA,eAAA;AAAA,QACLC,wBAAA;AAAA,QACA,CAAC,OAA6C,KAAA;AAC5C,UAAA,IAAI,OAAO,OAAA,KAAY,QAAY,KAAA,OAAA,IAAA,IAAA,GAAA,MAAA,GAAA,OAAA,CAAS,GAAK,CAAA,EAAA;AAC/C,YAAA,UAAA,CAAW,MAAM;AACf,cAAA,iBAAA,CAAkB,IAAI,CAAA;AAAA,eACrB,EAAE,CAAA;AACL,YAAA,SAAA,CAAU,OAAU,GAAA,IAAA;AAAA,WACf,MAAA;AACL,YAAA,iBAAA,CAAkB,KAAK,CAAA;AAAA;AAEzB,UAAO,OAAA,KAAA;AAAA,SACT;AAAA,QACAD;AAAA,OACF;AAAA,MACA,MAAO,CAAA,eAAA;AAAA,QACLV,gCAAA;AAAA,QACA,MAAM;AACJ,UAAiB,gBAAA,EAAA;AACjB,UAAO,OAAA,IAAA;AAAA,SACT;AAAA,QACAG;AAAA,OACF;AAAA,MACA,MAAO,CAAA,eAAA;AAAA,QACLS,0BAAA;AAAA,QACA,MAAM;AACJ,UAAA,IAAI,MAAQ,EAAA;AACV,YAAA,SAAA,CAAU,KAAK,CAAA;AACf,YAAO,OAAA,IAAA;AAAA;AAET,UAAO,OAAA,KAAA;AAAA,SACT;AAAA,QACAF;AAAA;AACF,KACF;AAAA,KACC,CAAC,MAAA,EAAQ,gBAAkB,EAAA,SAAA,EAAW,MAAM,CAAC,CAAA;AAEhD,EAAAlB,eAAA,CAAU,MAAM;AACd,IAAO,MAAA,CAAA,cAAA,EAAiB,CAAA,IAAA,CAAK,MAAM;AACjC,MAAiB,gBAAA,EAAA;AAAA,KAClB,CAAA;AAAA,GACA,EAAA,CAAC,MAAQ,EAAA,gBAAgB,CAAC,CAAA;AAE7B,EAAA,MAAM,uBAAuB,CAAC;AAAA,IAC5B,IAAA;AAAA,IACA;AAAA,GAII,KAAA;AA7OR,IAAA,IAAAa,KAAAE,GAAAM,EAAAA,GAAAA;AA8OI,IAAA,IAAI,kBAAkB,IAAM,EAAA;AAC1B,MAAM,MAAA,UAAA,GAAaC,cAAM,GAAG,CAAA;AAC5B,MAAA,MAAM,WAAc,GAAA,IAAA,CAAK,IAAK,EAAA,CAAE,MAAS,GAAA,CAAA;AAEzC,MAAA,IAAI,cAAc,WAAa,EAAA;AAC7B,QAAA,MAAA,CAAO,gBAAgBH,wBAAqB,EAAA;AAAA,UAC1C,GAAA;AAAA,UACA,GAAKN,EAAAA,CAAAA,GAAAA,GAAA,OAAS,IAAA,IAAA,GAAA,MAAA,GAAA,OAAA,CAAA,aAAA,KAAT,gBAAAA,GAAwB,CAAA,GAAA;AAAA,UAC7B,MAAQE,EAAAA,CAAAA,GAAAA,GAAA,OAAS,IAAA,IAAA,GAAA,MAAA,GAAA,OAAA,CAAA,aAAA,KAAT,gBAAAA,GAAwB,CAAA,MAAA;AAAA,UAChC,KAAOM,EAAAA,CAAAA,GAAAA,GAAA,OAAS,IAAA,IAAA,GAAA,MAAA,GAAA,OAAA,CAAA,aAAA,KAAT,gBAAAA,GAAwB,CAAA;AAAA,SAChC,CAAA;AACD,QAAA,MAAA,CAAO,OAAO,MAAM;AAClB,UAAI,IAAAnB,yBAAA,CAAkB,aAAa,CAAG,EAAA;AACpC,YAAM,MAAA,QAAA,GAAWC,gCAAgB,aAAa,CAAA;AAC9C,YAAI,IAAAoB,mBAAA,CAAY,QAAQ,CAAG,EAAA;AACzB,cAAA,QAAA,CAAS,eAAe,IAAI,CAAA;AAAA;AAC9B;AACF,SACD,CAAA;AACD,QAAU,SAAA,CAAA;AAAA,UACR,IAAM,EAAA,KAAA;AAAA,UACN,GAAK,EAAA;AAAA,SACN,CAAA;AACD,QAAA,UAAA,CAAW,MAAM;AACf,UAAA,SAAA,CAAU,KAAK,CAAA;AACf,UAAA,iBAAA,CAAkB,KAAK,CAAA;AAAA,WACtB,EAAE,CAAA;AAAA,OACA,MAAA;AACL,QAAU,SAAA,CAAA;AAAA,UACR,MAAM,CAAC,WAAA;AAAA,UACP,KAAK,CAAC;AAAA,SACP,CAAA;AAAA;AACH;AACF,GACF;AAEA,EAAI,IAAA,CAAC,YAAmB,OAAA,IAAA;AAExB,EAAA,uBAEKC,eAAA,CAAAC,mBAAA,EAAA,EAAA,QAAA,EAAA;AAAA,IAAA,MAAA,IAAU,CAAC,cACV,oBAAAC,cAAA;AAAA,MAACC,uBAAA;AAAA,MAAA;AAAA,QACC,UAAA;AAAA,QACA,YAAA;AAAA,QACA,cAAc,MAAM;AAClB,UAAA,IAAI,kBAAkB,IAAM,EAAA;AAC1B,YAAO,MAAA,CAAA,eAAA,CAAgBR,0BAAqB,IAAI,CAAA;AAAA;AAClD,SACF;AAAA,QACA,YAAY,MAAM;AAChB,UAAA,iBAAA,CAAkB,IAAI,CAAA;AACtB,UAAA,WAAA,CAAY,IAAI,CAAA;AAAA,SAClB;AAAA,QACA,OAAA;AAAA,QACA,KAAO,EAAA,CAAA,CAAA,EAAA,GAAA,OAAA,IAAA,IAAA,GAAA,MAAA,GAAA,OAAA,CAAS,aAAT,KAAA,IAAA,GAAA,MAAA,GAAA,EAAA,CAAwB,KAAS,KAAA;AAAA;AAAA,KAC1C;AAAA,IAED,cACC,oBAAAO,cAAA;AAAA,MAACE,iCAAA;AAAA,MAAA;AAAA,QACC,oBAAA;AAAA,QACA,QAAA;AAAA,QACA,OAAA;AAAA,QACA,MAAM,MAAU,IAAA,cAAA;AAAA,QAChB,YAAY,MAAM;AAChB,UAAA,SAAA,CAAU,KAAK,CAAA;AACf,UAAA,iBAAA,CAAkB,KAAK,CAAA;AACvB,UAAA,IAAI,UAAU,OAAS,EAAA;AACrB,YAAO,MAAA,CAAA,eAAA,CAAgBT,0BAAqB,IAAI,CAAA;AAAA;AAClD,SACF;AAAA,QACA,QAAA;AAAA,QACA,iBAAA;AAAA,QACA,SAAW,EAAA,CAAA,CAAA,EAAA,GAAA,OAAA,IAAA,IAAA,GAAA,MAAA,GAAA,OAAA,CAAS,WAAT,KAAA,IAAA,GAAA,MAAA,GAAA,EAAA,CAAsB,SAAa,KAAA,WAAA;AAAA,QAC9C,QAAU,EAAA,CAAA,CAAA,EAAA,GAAA,OAAA,IAAA,IAAA,GAAA,MAAA,GAAA,OAAA,CAAS,WAAT,KAAA,IAAA,GAAA,MAAA,GAAA,EAAA,CAAsB,QAAY,KAAA,UAAA;AAAA,QAC5C,YAAY,MAAM;AAChB,UAAA,IAAI,kBAAkB,IAAM,EAAA;AAC1B,YAAO,MAAA,CAAA,eAAA,CAAgBA,0BAAqB,IAAI,CAAA;AAAA;AAClD,SACF;AAAA,QACA,MAAA;AAAA,QACA,SAAW,EAAA,CAAA,CAAA,EAAA,GAAA,OAAA,IAAA,IAAA,GAAA,MAAA,GAAA,OAAA,CAAS,WAAT,KAAA,IAAA,GAAA,MAAA,GAAA,EAAA,CAAsB,SAAa,KAAA,MAAA;AAAA,QAC9C,WAAa,EAAA,CAAA,CAAA,EAAA,GAAA,OAAA,IAAA,IAAA,GAAA,MAAA,GAAA,OAAA,CAAS,WAAT,KAAA,IAAA,GAAA,MAAA,GAAA,EAAA,CAAsB,WAAe,KAAA,QAAA;AAAA,QAClD,WAAa,EAAA,CAAA,CAAA,EAAA,GAAA,OAAA,IAAA,IAAA,GAAA,MAAA,GAAA,OAAA,CAAS,WAAT,KAAA,IAAA,GAAA,MAAA,GAAA,EAAA,CAAsB,WAAe,KAAA,QAAA;AAAA,QAClD,KAAO,EAAA,CAAA,CAAA,EAAA,GAAA,OAAA,IAAA,IAAA,GAAA,MAAA,GAAA,OAAA,CAAS,WAAT,KAAA,IAAA,GAAA,MAAA,GAAA,EAAA,CAAsB,KAAS,KAAA,UAAA;AAAA,QACtC,WAAA,EAAA,CAAa,EAAS,GAAA,OAAA,IAAA,IAAA,GAAA,MAAA,GAAA,OAAA,CAAA,WAAA,KAAT,IAAsB,GAAA,MAAA,GAAA,EAAA,CAAA;AAAA;AAAA;AACrC,GAEJ,EAAA,CAAA;AAEJ;AAuBO,SAAS,gBAAiB,CAAA;AAAA,EAC/B,aAAa,QAAS,CAAA,IAAA;AAAA,EACtB;AACF,CAGG,EAAA;AACD,EAAM,MAAA,CAAC,MAAM,CAAA,GAAIU,gDAA0B,EAAA;AAC3C,EAAO,OAAA,0BAAA,CAA2B,MAAQ,EAAA,UAAA,EAAY,OAAO,CAAA;AAC/D;;;;"}
@@ -3,7 +3,7 @@ import { $isLinkNode, TOGGLE_LINK_COMMAND, $isAutoLinkNode } from '@lexical/link
3
3
  import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext';
4
4
  import { mergeRegister, $findMatchingParent } from '@lexical/utils';
5
5
  import { ADD_BLANK_LINK } from '../../utils/commands.js';
6
- import { SELECTION_CHANGE_COMMAND, COMMAND_PRIORITY_CRITICAL, CLICK_COMMAND, $getSelection, $isRangeSelection, COMMAND_PRIORITY_LOW, COMMAND_PRIORITY_HIGH, KEY_ESCAPE_COMMAND, $isTextNode } from 'lexical';
6
+ import { SELECTION_CHANGE_COMMAND, COMMAND_PRIORITY_CRITICAL, CLICK_COMMAND, $getSelection, $isRangeSelection, COMMAND_PRIORITY_LOW, getDOMSelection, COMMAND_PRIORITY_HIGH, KEY_ESCAPE_COMMAND, $isTextNode } from 'lexical';
7
7
  import { useState, useRef, useEffect, useCallback } from 'react';
8
8
  import isURL from '../../node_modules/validator/es/lib/isURL.js';
9
9
  import { getSelectedNode } from '../../utils/get-selected-node.js';
@@ -78,6 +78,7 @@ function useDialogLinkEditorToolbar(editor, anchorElem, options) {
78
78
  );
79
79
  }, [editor]);
80
80
  const updateLinkEditor = useCallback(() => {
81
+ var _a2;
81
82
  const selection = $getSelection();
82
83
  if ($isRangeSelection(selection)) {
83
84
  const node = getSelectedNode(selection);
@@ -93,13 +94,13 @@ function useDialogLinkEditorToolbar(editor, anchorElem, options) {
93
94
  setLinkUrl("");
94
95
  }
95
96
  }
96
- const nativeSelection = window.getSelection();
97
+ const nativeSelection = getDOMSelection((_a2 = editor._window) != null ? _a2 : window);
97
98
  const { activeElement } = document;
98
99
  const rootElement = editor.getRootElement();
99
100
  if (selection !== null && nativeSelection !== null && rootElement !== null && rootElement.contains(nativeSelection.anchorNode) && editor.isEditable()) {
100
101
  setTimeout(() => {
101
- var _a2, _b2;
102
- const domRect = (_b2 = (_a2 = nativeSelection.focusNode) == null ? void 0 : _a2.parentElement) == null ? void 0 : _b2.getBoundingClientRect();
102
+ var _a3, _b2;
103
+ const domRect = (_b2 = (_a3 = nativeSelection.focusNode) == null ? void 0 : _a3.parentElement) == null ? void 0 : _b2.getBoundingClientRect();
103
104
  if (domRect && anchorElem && containerRef.current) {
104
105
  setFloatingElemPositionForLinkEditor(
105
106
  domRect,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../src/components/dialog-link-editor/index.tsx"],"sourcesContent":["import {\n $isAutoLinkNode,\n $isLinkNode,\n TOGGLE_LINK_COMMAND\n} from '@lexical/link';\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext';\nimport { $findMatchingParent, mergeRegister } from '@lexical/utils';\nimport { ADD_BLANK_LINK } from '@src/utils/commands';\nimport {\n $getSelection,\n $isRangeSelection,\n $isTextNode,\n BaseSelection,\n CLICK_COMMAND,\n COMMAND_PRIORITY_CRITICAL,\n COMMAND_PRIORITY_HIGH,\n COMMAND_PRIORITY_LOW,\n KEY_ESCAPE_COMMAND,\n LexicalEditor,\n NodeSelection,\n RangeSelection,\n SELECTION_CHANGE_COMMAND\n} from 'lexical';\nimport {\n useCallback, useEffect, useRef, useState\n} from 'react';\nimport isURL from 'validator/es/lib/isURL';\nimport { getSelectedNode } from '@src/utils/get-selected-node';\nimport { setFloatingElemPositionForLinkEditor } from '@src/utils/set-floating-elem-position-for-link-editor';\nimport { LinkEditorDialog } from './link-editor-dialog';\nimport { LinkTooltip } from './link-tooltip';\n\nfunction useDialogLinkEditorToolbar(\n editor: LexicalEditor,\n anchorElem: HTMLElement | null,\n options?: DialogLinkEditorOptions\n) {\n const [linkUrl, setLinkUrl] = useState('');\n const [linkText, setLinkText] = useState('');\n const [isLink, setIsLink] = useState(false);\n const [lastSelection, setLastSelection] = useState<\n RangeSelection | NodeSelection | BaseSelection | null\n >(null);\n const [isLinkEditMode, setIsLinkEditMode] = useState(false);\n const [isUpdate, setIsUpdate] = useState(false);\n const [errors, setErrors] = useState({\n text: false,\n url: false\n });\n\n const isNewLink = useRef(false);\n const containerRef = useRef<HTMLDivElement | null>(null);\n const containerElem = containerRef.current;\n\n useEffect(() => {\n function updateToolbar() {\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 if (linkParent !== null && autoLinkParent === null) {\n setIsLink(true);\n } else {\n setIsLink(false);\n }\n }\n }\n return mergeRegister(\n editor.registerUpdateListener(({ editorState }) => {\n editorState.read(() => {\n updateToolbar();\n });\n }),\n editor.registerCommand(\n SELECTION_CHANGE_COMMAND,\n () => {\n updateToolbar();\n return false;\n },\n COMMAND_PRIORITY_CRITICAL\n ),\n editor.registerCommand(\n CLICK_COMMAND,\n (payload) => {\n const selection = $getSelection();\n if ($isRangeSelection(selection)) {\n const node = getSelectedNode(selection);\n const linkNode = $findMatchingParent(node, $isLinkNode);\n if ($isLinkNode(linkNode)) {\n const url = linkNode.getURL();\n setLinkUrl(url);\n setLinkText(linkNode.getTextContent());\n }\n if ($isLinkNode(linkNode) && (payload.metaKey || payload.ctrlKey)) {\n window.open(linkNode.getURL(), '_blank');\n return true;\n }\n }\n return false;\n },\n COMMAND_PRIORITY_LOW\n )\n );\n }, [editor]);\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 setLinkText(parent.getTextContent().trim());\n setLinkUrl(parent.getURL());\n } else if ($isLinkNode(node)) {\n setLinkText(node.getTextContent().trim());\n setLinkUrl(node.getURL());\n } else {\n setLinkText('');\n setLinkUrl('');\n }\n }\n\n const nativeSelection = window.getSelection();\n const { activeElement } = document;\n\n const rootElement = editor.getRootElement();\n\n if (\n selection !== null\n && nativeSelection !== null\n && rootElement !== null\n && rootElement.contains(nativeSelection.anchorNode)\n && editor.isEditable()\n ) {\n setTimeout(() => {\n const domRect: DOMRect | undefined = nativeSelection.focusNode?.parentElement?.getBoundingClientRect();\n if (domRect && anchorElem && containerRef.current) {\n setFloatingElemPositionForLinkEditor(\n domRect,\n containerRef.current,\n anchorElem,\n 10\n );\n }\n }, 10);\n setLastSelection(selection);\n } else if (!activeElement || activeElement.className !== 'link-input') {\n setTimeout(() => {\n if (rootElement !== null && anchorElem && containerElem) {\n setFloatingElemPositionForLinkEditor(null, containerElem, anchorElem);\n }\n }, 10);\n setLastSelection(null);\n setLinkUrl('');\n }\n\n // eslint-disable-next-line consistent-return\n return true;\n }, [anchorElem, editor, setIsLinkEditMode]);\n\n useEffect(() => {\n if (!isLinkEditMode) {\n isNewLink.current = false;\n }\n }, [isLinkEditMode]);\n\n useEffect(() => {\n return mergeRegister(\n editor.registerUpdateListener(({ editorState }) => {\n editorState.read(() => {\n updateLinkEditor();\n });\n }),\n\n editor.registerCommand(\n ADD_BLANK_LINK,\n () => {\n setTimeout(() => {\n setIsLinkEditMode(true);\n }, 40);\n isNewLink.current = true;\n return false;\n },\n COMMAND_PRIORITY_HIGH\n ),\n\n editor.registerCommand(\n TOGGLE_LINK_COMMAND,\n (payload: string | { url: string } | null) => {\n if (typeof payload === 'string' || payload?.url) {\n setTimeout(() => {\n setIsLinkEditMode(true);\n }, 40);\n isNewLink.current = true;\n } else {\n setIsLinkEditMode(false);\n }\n return false;\n },\n COMMAND_PRIORITY_HIGH\n ),\n editor.registerCommand(\n SELECTION_CHANGE_COMMAND,\n () => {\n updateLinkEditor();\n return true;\n },\n COMMAND_PRIORITY_LOW\n ),\n editor.registerCommand(\n KEY_ESCAPE_COMMAND,\n () => {\n if (isLink) {\n setIsLink(false);\n return true;\n }\n return false;\n },\n COMMAND_PRIORITY_HIGH\n )\n );\n }, [editor, updateLinkEditor, setIsLink, isLink]);\n\n useEffect(() => {\n editor.getEditorState().read(() => {\n updateLinkEditor();\n });\n }, [editor, updateLinkEditor]);\n\n const handleLinkSubmission = ({\n text,\n url\n }: {\n text: string;\n url: string;\n }) => {\n if (lastSelection !== null) {\n const isValidUrl = isURL(url);\n const isValidText = text.trim().length > 0;\n\n if (isValidUrl && isValidText) {\n editor.dispatchCommand(TOGGLE_LINK_COMMAND, {\n url,\n rel: options?.anchorOptions?.rel,\n target: options?.anchorOptions?.target,\n title: options?.anchorOptions?.title\n });\n editor.update(() => {\n if ($isRangeSelection(lastSelection)) {\n const textNode = getSelectedNode(lastSelection);\n if ($isTextNode(textNode)) {\n textNode.setTextContent(text);\n }\n }\n });\n setErrors({\n text: false,\n url: false\n });\n setTimeout(() => {\n setIsLink(false);\n setIsLinkEditMode(false);\n }, 50);\n } else {\n setErrors({\n text: !isValidText,\n url: !isValidUrl\n });\n }\n }\n };\n\n if (!anchorElem) return null;\n\n return (\n <>\n {isLink && !isLinkEditMode && (\n <LinkTooltip\n anchorElem={anchorElem}\n containerRef={containerRef}\n handleDelete={() => {\n if (lastSelection !== null) {\n editor.dispatchCommand(TOGGLE_LINK_COMMAND, null);\n }\n }}\n handleEdit={() => {\n setIsLinkEditMode(true);\n setIsUpdate(true);\n }}\n linkUrl={linkUrl}\n https={options?.anchorOptions?.https || false}\n />\n )}\n {isLinkEditMode && (\n <LinkEditorDialog\n handleLinkSubmission={handleLinkSubmission}\n linkText={linkText}\n linkUrl={linkUrl}\n open={isLink && isLinkEditMode}\n closeModal={() => {\n setIsLink(false);\n setIsLinkEditMode(false);\n if (isNewLink.current) {\n editor.dispatchCommand(TOGGLE_LINK_COMMAND, null);\n }\n }}\n isUpdate={isUpdate}\n setIsLinkEditMode={setIsLinkEditMode}\n textLabel={options?.dialogProps?.textLabel || 'Link text'}\n urlLabel={options?.dialogProps?.urlLabel || 'Link URL'}\n removeLink={() => {\n if (lastSelection !== null) {\n editor.dispatchCommand(TOGGLE_LINK_COMMAND, null);\n }\n }}\n errors={errors}\n saveLabel={options?.dialogProps?.saveLabel || 'Save'}\n cancelLabel={options?.dialogProps?.cancelLabel || 'Cancel'}\n updateLabel={options?.dialogProps?.updateLabel || 'Update'}\n title={options?.dialogProps?.title || 'Add Link'}\n errorLabels={options?.dialogProps?.errorLabels}\n />\n )}\n </>\n );\n}\n\nexport type DialogLinkEditorOptions = {\n dialogProps?: {\n textLabel?: string;\n urlLabel?: string;\n saveLabel?: string;\n cancelLabel?: string;\n updateLabel?: string;\n title?: string;\n errorLabels?: {\n text?: string;\n url?: string;\n };\n };\n anchorOptions?: {\n rel?: string;\n target?: string;\n title?: string;\n https?: boolean;\n };\n};\n\nexport function DialogLinkEditor({\n anchorElem = document.body,\n options\n}: {\n anchorElem?: HTMLElement | null;\n options?: DialogLinkEditorOptions;\n}) {\n const [editor] = useLexicalComposerContext();\n return useDialogLinkEditorToolbar(editor, anchorElem, options);\n}\n"],"names":["_a","_b","_c"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../../src/components/dialog-link-editor/index.tsx"],"sourcesContent":["import {\n $isAutoLinkNode,\n $isLinkNode,\n TOGGLE_LINK_COMMAND\n} from '@lexical/link';\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext';\nimport { $findMatchingParent, mergeRegister } from '@lexical/utils';\nimport { ADD_BLANK_LINK } from '@src/utils/commands';\nimport {\n $getSelection,\n $isRangeSelection,\n $isTextNode,\n BaseSelection,\n CLICK_COMMAND,\n COMMAND_PRIORITY_CRITICAL,\n COMMAND_PRIORITY_HIGH,\n COMMAND_PRIORITY_LOW,\n KEY_ESCAPE_COMMAND,\n LexicalEditor,\n NodeSelection,\n RangeSelection,\n SELECTION_CHANGE_COMMAND,\n getDOMSelection\n} from 'lexical';\nimport {\n useCallback, useEffect, useRef, useState\n} from 'react';\nimport isURL from 'validator/es/lib/isURL';\nimport { getSelectedNode } from '@src/utils/get-selected-node';\nimport { setFloatingElemPositionForLinkEditor } from '@src/utils/set-floating-elem-position-for-link-editor';\nimport { LinkEditorDialog } from './link-editor-dialog';\nimport { LinkTooltip } from './link-tooltip';\n\nfunction useDialogLinkEditorToolbar(\n editor: LexicalEditor,\n anchorElem: HTMLElement | null,\n options?: DialogLinkEditorOptions\n) {\n const [linkUrl, setLinkUrl] = useState('');\n const [linkText, setLinkText] = useState('');\n const [isLink, setIsLink] = useState(false);\n const [lastSelection, setLastSelection] = useState<\n RangeSelection | NodeSelection | BaseSelection | null\n >(null);\n const [isLinkEditMode, setIsLinkEditMode] = useState(false);\n const [isUpdate, setIsUpdate] = useState(false);\n const [errors, setErrors] = useState({\n text: false,\n url: false\n });\n\n const isNewLink = useRef(false);\n const containerRef = useRef<HTMLDivElement | null>(null);\n const containerElem = containerRef.current;\n\n useEffect(() => {\n function updateToolbar() {\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 if (linkParent !== null && autoLinkParent === null) {\n setIsLink(true);\n } else {\n setIsLink(false);\n }\n }\n }\n return mergeRegister(\n editor.registerUpdateListener(({ editorState }) => {\n editorState.read(() => {\n updateToolbar();\n });\n }),\n editor.registerCommand(\n SELECTION_CHANGE_COMMAND,\n () => {\n updateToolbar();\n return false;\n },\n COMMAND_PRIORITY_CRITICAL\n ),\n editor.registerCommand(\n CLICK_COMMAND,\n (payload) => {\n const selection = $getSelection();\n if ($isRangeSelection(selection)) {\n const node = getSelectedNode(selection);\n const linkNode = $findMatchingParent(node, $isLinkNode);\n if ($isLinkNode(linkNode)) {\n const url = linkNode.getURL();\n setLinkUrl(url);\n setLinkText(linkNode.getTextContent());\n }\n if ($isLinkNode(linkNode) && (payload.metaKey || payload.ctrlKey)) {\n window.open(linkNode.getURL(), '_blank');\n return true;\n }\n }\n return false;\n },\n COMMAND_PRIORITY_LOW\n )\n );\n }, [editor]);\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 setLinkText(parent.getTextContent().trim());\n setLinkUrl(parent.getURL());\n } else if ($isLinkNode(node)) {\n setLinkText(node.getTextContent().trim());\n setLinkUrl(node.getURL());\n } else {\n setLinkText('');\n setLinkUrl('');\n }\n }\n\n const nativeSelection = getDOMSelection(editor._window ?? window);\n const { activeElement } = document;\n\n const rootElement = editor.getRootElement();\n\n if (\n selection !== null\n && nativeSelection !== null\n && rootElement !== null\n && rootElement.contains(nativeSelection.anchorNode)\n && editor.isEditable()\n ) {\n setTimeout(() => {\n const domRect: DOMRect | undefined = nativeSelection.focusNode?.parentElement?.getBoundingClientRect();\n if (domRect && anchorElem && containerRef.current) {\n setFloatingElemPositionForLinkEditor(\n domRect,\n containerRef.current,\n anchorElem,\n 10\n );\n }\n }, 10);\n setLastSelection(selection);\n } else if (!activeElement || activeElement.className !== 'link-input') {\n setTimeout(() => {\n if (rootElement !== null && anchorElem && containerElem) {\n setFloatingElemPositionForLinkEditor(null, containerElem, anchorElem);\n }\n }, 10);\n setLastSelection(null);\n setLinkUrl('');\n }\n\n // eslint-disable-next-line consistent-return\n return true;\n }, [anchorElem, editor, setIsLinkEditMode]);\n\n useEffect(() => {\n if (!isLinkEditMode) {\n isNewLink.current = false;\n }\n }, [isLinkEditMode]);\n\n useEffect(() => {\n return mergeRegister(\n editor.registerUpdateListener(({ editorState }) => {\n editorState.read(() => {\n updateLinkEditor();\n });\n }),\n\n editor.registerCommand(\n ADD_BLANK_LINK,\n () => {\n setTimeout(() => {\n setIsLinkEditMode(true);\n }, 40);\n isNewLink.current = true;\n return false;\n },\n COMMAND_PRIORITY_HIGH\n ),\n\n editor.registerCommand(\n TOGGLE_LINK_COMMAND,\n (payload: string | { url: string } | null) => {\n if (typeof payload === 'string' || payload?.url) {\n setTimeout(() => {\n setIsLinkEditMode(true);\n }, 40);\n isNewLink.current = true;\n } else {\n setIsLinkEditMode(false);\n }\n return false;\n },\n COMMAND_PRIORITY_HIGH\n ),\n editor.registerCommand(\n SELECTION_CHANGE_COMMAND,\n () => {\n updateLinkEditor();\n return true;\n },\n COMMAND_PRIORITY_LOW\n ),\n editor.registerCommand(\n KEY_ESCAPE_COMMAND,\n () => {\n if (isLink) {\n setIsLink(false);\n return true;\n }\n return false;\n },\n COMMAND_PRIORITY_HIGH\n )\n );\n }, [editor, updateLinkEditor, setIsLink, isLink]);\n\n useEffect(() => {\n editor.getEditorState().read(() => {\n updateLinkEditor();\n });\n }, [editor, updateLinkEditor]);\n\n const handleLinkSubmission = ({\n text,\n url\n }: {\n text: string;\n url: string;\n }) => {\n if (lastSelection !== null) {\n const isValidUrl = isURL(url);\n const isValidText = text.trim().length > 0;\n\n if (isValidUrl && isValidText) {\n editor.dispatchCommand(TOGGLE_LINK_COMMAND, {\n url,\n rel: options?.anchorOptions?.rel,\n target: options?.anchorOptions?.target,\n title: options?.anchorOptions?.title\n });\n editor.update(() => {\n if ($isRangeSelection(lastSelection)) {\n const textNode = getSelectedNode(lastSelection);\n if ($isTextNode(textNode)) {\n textNode.setTextContent(text);\n }\n }\n });\n setErrors({\n text: false,\n url: false\n });\n setTimeout(() => {\n setIsLink(false);\n setIsLinkEditMode(false);\n }, 50);\n } else {\n setErrors({\n text: !isValidText,\n url: !isValidUrl\n });\n }\n }\n };\n\n if (!anchorElem) return null;\n\n return (\n <>\n {isLink && !isLinkEditMode && (\n <LinkTooltip\n anchorElem={anchorElem}\n containerRef={containerRef}\n handleDelete={() => {\n if (lastSelection !== null) {\n editor.dispatchCommand(TOGGLE_LINK_COMMAND, null);\n }\n }}\n handleEdit={() => {\n setIsLinkEditMode(true);\n setIsUpdate(true);\n }}\n linkUrl={linkUrl}\n https={options?.anchorOptions?.https || false}\n />\n )}\n {isLinkEditMode && (\n <LinkEditorDialog\n handleLinkSubmission={handleLinkSubmission}\n linkText={linkText}\n linkUrl={linkUrl}\n open={isLink && isLinkEditMode}\n closeModal={() => {\n setIsLink(false);\n setIsLinkEditMode(false);\n if (isNewLink.current) {\n editor.dispatchCommand(TOGGLE_LINK_COMMAND, null);\n }\n }}\n isUpdate={isUpdate}\n setIsLinkEditMode={setIsLinkEditMode}\n textLabel={options?.dialogProps?.textLabel || 'Link text'}\n urlLabel={options?.dialogProps?.urlLabel || 'Link URL'}\n removeLink={() => {\n if (lastSelection !== null) {\n editor.dispatchCommand(TOGGLE_LINK_COMMAND, null);\n }\n }}\n errors={errors}\n saveLabel={options?.dialogProps?.saveLabel || 'Save'}\n cancelLabel={options?.dialogProps?.cancelLabel || 'Cancel'}\n updateLabel={options?.dialogProps?.updateLabel || 'Update'}\n title={options?.dialogProps?.title || 'Add Link'}\n errorLabels={options?.dialogProps?.errorLabels}\n />\n )}\n </>\n );\n}\n\nexport type DialogLinkEditorOptions = {\n dialogProps?: {\n textLabel?: string;\n urlLabel?: string;\n saveLabel?: string;\n cancelLabel?: string;\n updateLabel?: string;\n title?: string;\n errorLabels?: {\n text?: string;\n url?: string;\n };\n };\n anchorOptions?: {\n rel?: string;\n target?: string;\n title?: string;\n https?: boolean;\n };\n};\n\nexport function DialogLinkEditor({\n anchorElem = document.body,\n options\n}: {\n anchorElem?: HTMLElement | null;\n options?: DialogLinkEditorOptions;\n}) {\n const [editor] = useLexicalComposerContext();\n return useDialogLinkEditorToolbar(editor, anchorElem, options);\n}\n"],"names":["_a","_b","_c"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sparrowengg/twigs-editor-react",
3
- "version": "0.0.3",
3
+ "version": "0.0.4",
4
4
  "description": "Rich text editor built on top of Lexical",
5
5
  "module": "dist/es/index.js",
6
6
  "main": "dist/cjs/index.js",