@payloadcms/richtext-lexical 3.2.2 → 3.2.3-canary.3e78927
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/exports/client/{Field-JP7H7AZE.js → Field-KHGUSLMB.js} +2 -2
- package/dist/exports/client/{Field-JP7H7AZE.js.map → Field-KHGUSLMB.js.map} +2 -2
- package/dist/exports/client/{RelationshipComponent-XOQBVKA3.js → RelationshipComponent-F77EQHRG.js} +2 -2
- package/dist/exports/client/bundled.css +1 -1
- package/dist/exports/client/chunk-4J2ONJMB.js +2 -0
- package/dist/exports/client/chunk-4J2ONJMB.js.map +7 -0
- package/dist/exports/client/{chunk-XCEM47RI.js → chunk-AXXPUMFU.js} +2 -2
- package/dist/exports/client/{chunk-5PBXL4HT.js → chunk-F26IQ5RE.js} +2 -2
- package/dist/exports/client/{chunk-5PBXL4HT.js.map → chunk-F26IQ5RE.js.map} +1 -1
- package/dist/exports/client/chunk-H3D3IU3G.js +2 -0
- package/dist/exports/client/{chunk-DOK5S7LE.js.map → chunk-H3D3IU3G.js.map} +2 -2
- package/dist/exports/client/{chunk-2CYU43GM.js → chunk-INBEEENE.js} +2 -2
- package/dist/exports/client/{chunk-2CYU43GM.js.map → chunk-INBEEENE.js.map} +1 -1
- package/dist/exports/client/{chunk-ZTAS32RX.js → chunk-PGMIO4IN.js} +2 -2
- package/dist/exports/client/{chunk-2L2Z4JHF.js → chunk-XOABLBHB.js} +2 -2
- package/dist/exports/client/{chunk-2L2Z4JHF.js.map → chunk-XOABLBHB.js.map} +1 -1
- package/dist/exports/client/{component-D6PKVJ2K.js → component-NSAU5Y76.js} +2 -2
- package/dist/exports/client/component-SX36AJXS.js +2 -0
- package/dist/exports/client/{component-ANB7VZLA.js.map → component-SX36AJXS.js.map} +2 -2
- package/dist/exports/client/componentInline-B5YNOX32.js +2 -0
- package/dist/exports/client/index.js +17 -17
- package/dist/exports/client/index.js.map +2 -2
- package/dist/features/blocks/client/component/BlockContent.js +8 -8
- package/dist/features/blocks/client/component/BlockContent.js.map +1 -1
- package/dist/features/blocks/client/component/components/BlockCollapsible.js +5 -5
- package/dist/features/blocks/client/component/components/BlockCollapsible.js.map +1 -1
- package/dist/features/blocks/client/componentInline/index.js +1 -1
- package/dist/features/blocks/client/componentInline/index.js.map +1 -1
- package/dist/features/blocks/client/plugin/index.js +7 -4
- package/dist/features/blocks/client/plugin/index.js.map +1 -1
- package/dist/features/experimental_table/client/plugins/TableActionMenuPlugin/index.js +3 -3
- package/dist/features/experimental_table/client/plugins/TableActionMenuPlugin/index.js.map +1 -1
- package/dist/features/experimental_table/client/plugins/TableCellResizerPlugin/index.js +3 -3
- package/dist/features/experimental_table/client/plugins/TableCellResizerPlugin/index.js.map +1 -1
- package/dist/features/experimental_table/client/plugins/TablePlugin/index.js +6 -6
- package/dist/features/experimental_table/client/plugins/TablePlugin/index.js.map +1 -1
- package/dist/features/experimental_table/client/utils/useDebounce.js +3 -3
- package/dist/features/experimental_table/client/utils/useDebounce.js.map +1 -1
- package/dist/features/horizontalRule/client/component/index.js +19 -18
- package/dist/features/horizontalRule/client/component/index.js.map +1 -1
- package/dist/features/horizontalRule/client/plugin/index.js +13 -12
- package/dist/features/horizontalRule/client/plugin/index.js.map +1 -1
- package/dist/features/indent/client/plugins/index.js +3 -3
- package/dist/features/indent/client/plugins/index.js.map +1 -1
- package/dist/features/link/client/plugins/autoLink/index.js +3 -3
- package/dist/features/link/client/plugins/autoLink/index.js.map +1 -1
- package/dist/features/link/client/plugins/link/index.js +9 -5
- package/dist/features/link/client/plugins/link/index.js.map +1 -1
- package/dist/features/relationship/client/drawer/index.js +13 -13
- package/dist/features/relationship/client/drawer/index.js.map +1 -1
- package/dist/features/relationship/client/plugins/index.js +23 -19
- package/dist/features/relationship/client/plugins/index.js.map +1 -1
- package/dist/features/relationship/client/utils/EnabledRelationshipsCondition.js +19 -18
- package/dist/features/relationship/client/utils/EnabledRelationshipsCondition.js.map +1 -1
- package/dist/features/toolbars/fixed/client/Toolbar/index.js +39 -31
- package/dist/features/toolbars/fixed/client/Toolbar/index.js.map +1 -1
- package/dist/features/toolbars/inline/client/Toolbar/index.js +31 -23
- package/dist/features/toolbars/inline/client/Toolbar/index.js.map +1 -1
- package/dist/features/toolbars/shared/ToolbarButton/index.js +27 -26
- package/dist/features/toolbars/shared/ToolbarButton/index.js.map +1 -1
- package/dist/features/toolbars/shared/ToolbarDropdown/index.js +36 -36
- package/dist/features/toolbars/shared/ToolbarDropdown/index.js.map +1 -1
- package/dist/features/upload/client/drawer/index.js +3 -3
- package/dist/features/upload/client/drawer/index.js.map +1 -1
- package/dist/features/upload/client/plugin/index.js +6 -3
- package/dist/features/upload/client/plugin/index.js.map +1 -1
- package/dist/field/bundled.css +1 -1
- package/dist/field/index.js +7 -7
- package/dist/field/index.js.map +1 -1
- package/dist/getDefaultSanitizedEditorConfig.d.ts.map +1 -1
- package/dist/getDefaultSanitizedEditorConfig.js +2 -3
- package/dist/getDefaultSanitizedEditorConfig.js.map +1 -1
- package/dist/lexical/LexicalEditor.js +15 -15
- package/dist/lexical/LexicalEditor.js.map +1 -1
- package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.js +17 -17
- package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.js.map +1 -1
- package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.js +17 -17
- package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.js.map +1 -1
- package/dist/lexical/plugins/SlashMenu/useMenuTriggerMatch.js +4 -4
- package/dist/lexical/plugins/SlashMenu/useMenuTriggerMatch.js.map +1 -1
- package/dist/lexical/plugins/TextPlugin/index.js +3 -3
- package/dist/lexical/plugins/TextPlugin/index.js.map +1 -1
- package/dist/lexical/ui/ContentEditable.js +3 -3
- package/dist/lexical/ui/ContentEditable.js.map +1 -1
- package/dist/utilities/fieldsDrawer/Drawer.js +11 -11
- package/dist/utilities/fieldsDrawer/Drawer.js.map +1 -1
- package/dist/utilities/fieldsDrawer/useLexicalDocumentDrawer.js +10 -10
- package/dist/utilities/fieldsDrawer/useLexicalDocumentDrawer.js.map +1 -1
- package/dist/utilities/fieldsDrawer/useLexicalDrawer.js +14 -14
- package/dist/utilities/fieldsDrawer/useLexicalDrawer.js.map +1 -1
- package/dist/utilities/fieldsDrawer/useLexicalListDrawer.js +11 -11
- package/dist/utilities/fieldsDrawer/useLexicalListDrawer.js.map +1 -1
- package/package.json +15 -15
- package/dist/exports/client/chunk-DOK5S7LE.js +0 -2
- package/dist/exports/client/chunk-WHL7AV5U.js +0 -2
- package/dist/exports/client/chunk-WHL7AV5U.js.map +0 -7
- package/dist/exports/client/component-ANB7VZLA.js +0 -2
- package/dist/exports/client/componentInline-GXYBWVCR.js +0 -2
- /package/dist/exports/client/{RelationshipComponent-XOQBVKA3.js.map → RelationshipComponent-F77EQHRG.js.map} +0 -0
- /package/dist/exports/client/{chunk-XCEM47RI.js.map → chunk-AXXPUMFU.js.map} +0 -0
- /package/dist/exports/client/{chunk-ZTAS32RX.js.map → chunk-PGMIO4IN.js.map} +0 -0
- /package/dist/exports/client/{component-D6PKVJ2K.js.map → component-NSAU5Y76.js.map} +0 -0
- /package/dist/exports/client/{componentInline-GXYBWVCR.js.map → componentInline-B5YNOX32.js.map} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["c","_c","useLexicalComposerContext","mergeRegister","$createTextNode","$getSelection","$isElementNode","$isLineBreakNode","$isNodeSelection","$isRangeSelection","$isTextNode","TextNode","TextNodeValue","useEffect","$createAutoLinkNode","$isAutoLinkNode","AutoLinkNode","$isLinkNode","createLinkMatcherWithRegExp","regExp","urlTransformer","text","match","exec","index","length","url","findFirstMatch","matchers","i","PUNCTUATION_OR_SPACE","isSeparator","char","test","endsWithSeparator","textContent","startsWithSeparator","startsWithTLD","isEmail","isPreviousNodeValid","node","previousNode","getPreviousSibling","getLastDescendant","getTextContent","isNextNodeValid","nextNode","getNextSibling","getFirstDescendant","isContentAroundIsValid","matchStart","matchEnd","nodes","contentBeforeIsValid","contentAfterIsValid","extractMatchingNodes","startIndex","endIndex","unmodifiedBeforeNodes","matchingNodes","unmodifiedAfterNodes","matchingOffset","currentOffset","currentNodes","currentNode","currentNodeText","currentNodeLength","currentNodeStart","currentNodeEnd","push","shift","$createAutoLinkNode_","fields","linkType","linkNode","remainingTextNode","linkTextNode","splitText","textNode","setFormat","getFormat","setDetail","getDetail","setStyle","getStyle","append","replace","firstTextNode","offset","firstLinkTextNode","linkNodes","endNode","selection","selectedTextNode","getNodes","find","undefined","select","anchor","focus","$handleLinkCreation","onChange","initialText","map","join","invalidMatchEnd","matchLength","isValid","actualMatchStart","actualMatchEnd","substring","handleLinkEdit","children","getChildren","childrenLength","child","isSimpleText","replaceWithChildren","getFields","flds","setFields","handleBadNeighbors","previousSibling","nextSibling","isEmailURI","startsWith","j","insertAfter","remove","getLatest","getTextNodesToMatch","textNodesToMatch","useAutoLink","editor","$","t0","t1","hasNodes","Error","onChangeWrapped","prevUrl","registerNodeTransform","parent","getParentOrThrow","previous","URL_REGEX","EMAIL_REGEX","MATCHERS","AutoLinkPlugin"],"sources":["../../../../../../src/features/link/client/plugins/autoLink/index.tsx"],"sourcesContent":["'use client'\nimport type { ElementNode, LexicalEditor, LexicalNode, TextNode } from 'lexical'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js'\nimport { mergeRegister } from '@lexical/utils'\nimport {\n $createTextNode,\n $getSelection,\n $isElementNode,\n $isLineBreakNode,\n $isNodeSelection,\n $isRangeSelection,\n $isTextNode,\n TextNode as TextNodeValue,\n} from 'lexical'\nimport { useEffect } from 'react'\n\nimport type { PluginComponent } from '../../../../typesClient.js'\nimport type { LinkFields } from '../../../nodes/types.js'\nimport type { ClientProps } from '../../index.js'\n\nimport { $createAutoLinkNode, $isAutoLinkNode, AutoLinkNode } from '../../../nodes/AutoLinkNode.js'\nimport { $isLinkNode } from '../../../nodes/LinkNode.js'\n\ntype ChangeHandler = (url: null | string, prevUrl: null | string) => void\n\ninterface LinkMatcherResult {\n fields?: LinkFields\n index: number\n length: number\n text: string\n url: string\n}\n\nexport type LinkMatcher = (text: string) => LinkMatcherResult | null\n\nexport function createLinkMatcherWithRegExp(\n regExp: RegExp,\n urlTransformer: (text: string) => string = (text) => text,\n) {\n return (text: string) => {\n const match = regExp.exec(text)\n if (match === null) {\n return null\n }\n return {\n index: match.index,\n length: match[0].length,\n text: match[0],\n url: urlTransformer(match[0]),\n }\n }\n}\n\nfunction findFirstMatch(text: string, matchers: LinkMatcher[]): LinkMatcherResult | null {\n for (let i = 0; i < matchers.length; i++) {\n const match = matchers[i](text)\n\n if (match != null) {\n return match\n }\n }\n\n return null\n}\n\nconst PUNCTUATION_OR_SPACE = /[.,;\\s]/\n\nfunction isSeparator(char: string): boolean {\n return PUNCTUATION_OR_SPACE.test(char)\n}\n\nfunction endsWithSeparator(textContent: string): boolean {\n return isSeparator(textContent[textContent.length - 1])\n}\n\nfunction startsWithSeparator(textContent: string): boolean {\n return isSeparator(textContent[0])\n}\n\n/**\n * Check if the text content starts with a fullstop followed by a top-level domain.\n * Meaning if the text content can be a beginning of a top level domain.\n * @param textContent\n * @param isEmail\n * @returns boolean\n */\nfunction startsWithTLD(textContent: string, isEmail: boolean): boolean {\n if (isEmail) {\n return /^\\.[a-z]{2,}/i.test(textContent)\n } else {\n return /^\\.[a-z0-9]+/i.test(textContent)\n }\n}\n\nfunction isPreviousNodeValid(node: LexicalNode): boolean {\n let previousNode = node.getPreviousSibling()\n if ($isElementNode(previousNode)) {\n previousNode = previousNode.getLastDescendant()\n }\n return (\n previousNode === null ||\n $isLineBreakNode(previousNode) ||\n ($isTextNode(previousNode) && endsWithSeparator(previousNode.getTextContent()))\n )\n}\n\nfunction isNextNodeValid(node: LexicalNode): boolean {\n let nextNode = node.getNextSibling()\n if ($isElementNode(nextNode)) {\n nextNode = nextNode.getFirstDescendant()\n }\n return (\n nextNode === null ||\n $isLineBreakNode(nextNode) ||\n ($isTextNode(nextNode) && startsWithSeparator(nextNode.getTextContent()))\n )\n}\n\nfunction isContentAroundIsValid(\n matchStart: number,\n matchEnd: number,\n text: string,\n nodes: TextNode[],\n): boolean {\n const contentBeforeIsValid =\n matchStart > 0 ? isSeparator(text[matchStart - 1]) : isPreviousNodeValid(nodes[0])\n if (!contentBeforeIsValid) {\n return false\n }\n\n const contentAfterIsValid =\n matchEnd < text.length ? isSeparator(text[matchEnd]) : isNextNodeValid(nodes[nodes.length - 1])\n return contentAfterIsValid\n}\n\nfunction extractMatchingNodes(\n nodes: TextNode[],\n startIndex: number,\n endIndex: number,\n): [\n matchingOffset: number,\n unmodifiedBeforeNodes: TextNode[],\n matchingNodes: TextNode[],\n unmodifiedAfterNodes: TextNode[],\n] {\n const unmodifiedBeforeNodes: TextNode[] = []\n const matchingNodes: TextNode[] = []\n const unmodifiedAfterNodes: TextNode[] = []\n let matchingOffset = 0\n\n let currentOffset = 0\n const currentNodes = [...nodes]\n\n while (currentNodes.length > 0) {\n const currentNode = currentNodes[0]\n const currentNodeText = currentNode.getTextContent()\n const currentNodeLength = currentNodeText.length\n const currentNodeStart = currentOffset\n const currentNodeEnd = currentOffset + currentNodeLength\n\n if (currentNodeEnd <= startIndex) {\n unmodifiedBeforeNodes.push(currentNode)\n matchingOffset += currentNodeLength\n } else if (currentNodeStart >= endIndex) {\n unmodifiedAfterNodes.push(currentNode)\n } else {\n matchingNodes.push(currentNode)\n }\n currentOffset += currentNodeLength\n currentNodes.shift()\n }\n return [matchingOffset, unmodifiedBeforeNodes, matchingNodes, unmodifiedAfterNodes]\n}\n\nfunction $createAutoLinkNode_(\n nodes: TextNode[],\n startIndex: number,\n endIndex: number,\n match: LinkMatcherResult,\n): TextNode | undefined {\n const fields = {\n linkType: 'custom',\n url: match.url,\n ...match.fields,\n } as LinkFields\n\n const linkNode = $createAutoLinkNode({ fields })\n if (nodes.length === 1) {\n let remainingTextNode = nodes[0]\n let linkTextNode\n if (startIndex === 0) {\n ;[linkTextNode, remainingTextNode] = remainingTextNode.splitText(endIndex)\n } else {\n ;[, linkTextNode, remainingTextNode] = remainingTextNode.splitText(startIndex, endIndex)\n }\n const textNode = $createTextNode(match.text)\n textNode.setFormat(linkTextNode.getFormat())\n textNode.setDetail(linkTextNode.getDetail())\n textNode.setStyle(linkTextNode.getStyle())\n linkNode.append(textNode)\n linkTextNode.replace(linkNode)\n return remainingTextNode\n } else if (nodes.length > 1) {\n const firstTextNode = nodes[0]\n let offset = firstTextNode.getTextContent().length\n let firstLinkTextNode\n if (startIndex === 0) {\n firstLinkTextNode = firstTextNode\n } else {\n ;[, firstLinkTextNode] = firstTextNode.splitText(startIndex)\n }\n const linkNodes: LexicalNode[] = []\n let remainingTextNode\n for (let i = 1; i < nodes.length; i++) {\n const currentNode = nodes[i]\n const currentNodeText = currentNode.getTextContent()\n const currentNodeLength = currentNodeText.length\n const currentNodeStart = offset\n const currentNodeEnd = offset + currentNodeLength\n if (currentNodeStart < endIndex) {\n if (currentNodeEnd <= endIndex) {\n linkNodes.push(currentNode)\n } else {\n const [linkTextNode, endNode] = currentNode.splitText(endIndex - currentNodeStart)\n linkNodes.push(linkTextNode)\n remainingTextNode = endNode\n }\n }\n offset += currentNodeLength\n }\n const selection = $getSelection()\n const selectedTextNode = selection ? selection.getNodes().find($isTextNode) : undefined\n const textNode = $createTextNode(firstLinkTextNode.getTextContent())\n textNode.setFormat(firstLinkTextNode.getFormat())\n textNode.setDetail(firstLinkTextNode.getDetail())\n textNode.setStyle(firstLinkTextNode.getStyle())\n linkNode.append(textNode, ...linkNodes)\n // it does not preserve caret position if caret was at the first text node\n // so we need to restore caret position\n if (selectedTextNode && selectedTextNode === firstLinkTextNode) {\n if ($isRangeSelection(selection)) {\n textNode.select(selection.anchor.offset, selection.focus.offset)\n } else if ($isNodeSelection(selection)) {\n textNode.select(0, textNode.getTextContent().length)\n }\n }\n firstLinkTextNode.replace(linkNode)\n return remainingTextNode\n }\n return undefined\n}\n\nfunction $handleLinkCreation(\n nodes: TextNode[],\n matchers: LinkMatcher[],\n onChange: ChangeHandler,\n): void {\n let currentNodes = [...nodes]\n const initialText = currentNodes.map((node) => node.getTextContent()).join('')\n let text = initialText\n\n let match\n let invalidMatchEnd = 0\n\n while ((match = findFirstMatch(text, matchers)) != null && match !== null) {\n const matchStart: number = match.index\n const matchLength: number = match.length\n const matchEnd = matchStart + matchLength\n const isValid = isContentAroundIsValid(\n invalidMatchEnd + matchStart,\n invalidMatchEnd + matchEnd,\n initialText,\n currentNodes,\n )\n\n if (isValid) {\n const [matchingOffset, , matchingNodes, unmodifiedAfterNodes] = extractMatchingNodes(\n currentNodes,\n invalidMatchEnd + matchStart,\n invalidMatchEnd + matchEnd,\n )\n\n const actualMatchStart = invalidMatchEnd + matchStart - matchingOffset\n const actualMatchEnd = invalidMatchEnd + matchEnd - matchingOffset\n const remainingTextNode = $createAutoLinkNode_(\n matchingNodes,\n actualMatchStart,\n actualMatchEnd,\n match,\n )\n currentNodes = remainingTextNode\n ? [remainingTextNode, ...unmodifiedAfterNodes]\n : unmodifiedAfterNodes\n onChange(match.url, null)\n invalidMatchEnd = 0\n } else {\n invalidMatchEnd += matchEnd\n }\n\n text = text.substring(matchEnd)\n }\n}\n\nfunction handleLinkEdit(\n linkNode: AutoLinkNode,\n matchers: LinkMatcher[],\n onChange: ChangeHandler,\n): void {\n // Check children are simple text\n const children = linkNode.getChildren()\n const childrenLength = children.length\n for (let i = 0; i < childrenLength; i++) {\n const child = children[i]\n if (!$isTextNode(child) || !child.isSimpleText()) {\n replaceWithChildren(linkNode)\n onChange(null, linkNode.getFields()?.url ?? null)\n return\n }\n }\n\n // Check text content fully matches\n const text = linkNode.getTextContent()\n const match = findFirstMatch(text, matchers)\n if (match === null || match.text !== text) {\n replaceWithChildren(linkNode)\n onChange(null, linkNode.getFields()?.url ?? null)\n return\n }\n\n // Check neighbors\n if (!isPreviousNodeValid(linkNode) || !isNextNodeValid(linkNode)) {\n replaceWithChildren(linkNode)\n onChange(null, linkNode.getFields()?.url ?? null)\n return\n }\n\n const url = linkNode.getFields()?.url\n if (url !== match?.url) {\n const flds = linkNode.getFields()\n flds.url = match?.url\n linkNode.setFields(flds)\n onChange(match.url, url ?? null)\n }\n}\n\n// Bad neighbors are edits in neighbor nodes that make AutoLinks incompatible.\n// Given the creation preconditions, these can only be simple text nodes.\nfunction handleBadNeighbors(\n textNode: TextNode,\n matchers: LinkMatcher[],\n onChange: ChangeHandler,\n): void {\n const previousSibling = textNode.getPreviousSibling()\n const nextSibling = textNode.getNextSibling()\n const text = textNode.getTextContent()\n\n if ($isAutoLinkNode(previousSibling)) {\n const isEmailURI = previousSibling.getFields()?.url\n ? previousSibling.getFields()?.url?.startsWith('mailto:')\n : false\n if (!startsWithSeparator(text) || startsWithTLD(text, isEmailURI)) {\n previousSibling.append(textNode)\n handleLinkEdit(previousSibling, matchers, onChange)\n onChange(null, previousSibling.getFields()?.url ?? null)\n }\n }\n\n if ($isAutoLinkNode(nextSibling) && !endsWithSeparator(text)) {\n replaceWithChildren(nextSibling)\n handleLinkEdit(nextSibling, matchers, onChange)\n onChange(null, nextSibling.getFields()?.url ?? null)\n }\n}\n\nfunction replaceWithChildren(node: ElementNode): LexicalNode[] {\n const children = node.getChildren()\n const childrenLength = children.length\n\n for (let j = childrenLength - 1; j >= 0; j--) {\n node.insertAfter(children[j])\n }\n\n node.remove()\n return children.map((child) => child.getLatest())\n}\n\nfunction getTextNodesToMatch(textNode: TextNode): TextNode[] {\n // check if next siblings are simple text nodes till a node contains a space separator\n const textNodesToMatch = [textNode]\n let nextSibling = textNode.getNextSibling()\n while (nextSibling !== null && $isTextNode(nextSibling) && nextSibling.isSimpleText()) {\n textNodesToMatch.push(nextSibling)\n if (/\\s/.test(nextSibling.getTextContent())) {\n break\n }\n nextSibling = nextSibling.getNextSibling()\n }\n return textNodesToMatch\n}\n\nfunction useAutoLink(\n editor: LexicalEditor,\n matchers: LinkMatcher[],\n onChange?: ChangeHandler,\n): void {\n useEffect(() => {\n if (!editor.hasNodes([AutoLinkNode])) {\n throw new Error('LexicalAutoLinkPlugin: AutoLinkNode not registered on editor')\n }\n\n const onChangeWrapped = (url: null | string, prevUrl: null | string): void => {\n if (onChange != null) {\n onChange(url, prevUrl)\n }\n }\n\n return mergeRegister(\n editor.registerNodeTransform(TextNodeValue, (textNode: TextNode) => {\n const parent = textNode.getParentOrThrow()\n const previous = textNode.getPreviousSibling()\n if ($isAutoLinkNode(parent)) {\n handleLinkEdit(parent, matchers, onChangeWrapped)\n } else if (!$isLinkNode(parent)) {\n if (\n textNode.isSimpleText() &&\n (startsWithSeparator(textNode.getTextContent()) || !$isAutoLinkNode(previous))\n ) {\n const textNodesToMatch = getTextNodesToMatch(textNode)\n $handleLinkCreation(textNodesToMatch, matchers, onChangeWrapped)\n }\n\n handleBadNeighbors(textNode, matchers, onChangeWrapped)\n }\n }),\n )\n }, [editor, matchers, onChange])\n}\n\nconst URL_REGEX =\n /((https?:\\/\\/(www\\.)?)|(www\\.))[-\\w@:%.+~#=]{1,256}\\.[a-zA-Z\\d()]{1,6}\\b([-\\w()@:%+.~#?&/=]*)(?<![-.+():%])/\n\nconst EMAIL_REGEX =\n /(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\])|(([a-z\\-\\d]+\\.)+[a-z]{2,}))/i\n\nconst MATCHERS = [\n createLinkMatcherWithRegExp(URL_REGEX, (text) => {\n return text.startsWith('http') ? text : `https://${text}`\n }),\n createLinkMatcherWithRegExp(EMAIL_REGEX, (text) => {\n return `mailto:${text}`\n }),\n]\n\nexport const AutoLinkPlugin: PluginComponent<ClientProps> = () => {\n const [editor] = useLexicalComposerContext()\n\n useAutoLink(editor, MATCHERS)\n\n return null\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["c","_c","useLexicalComposerContext","mergeRegister","$createTextNode","$getSelection","$isElementNode","$isLineBreakNode","$isNodeSelection","$isRangeSelection","$isTextNode","TextNode","TextNodeValue","useEffect","$createAutoLinkNode","$isAutoLinkNode","AutoLinkNode","$isLinkNode","createLinkMatcherWithRegExp","regExp","urlTransformer","text","match","exec","index","length","url","findFirstMatch","matchers","i","PUNCTUATION_OR_SPACE","isSeparator","char","test","endsWithSeparator","textContent","startsWithSeparator","startsWithTLD","isEmail","isPreviousNodeValid","node","previousNode","getPreviousSibling","getLastDescendant","getTextContent","isNextNodeValid","nextNode","getNextSibling","getFirstDescendant","isContentAroundIsValid","matchStart","matchEnd","nodes","contentBeforeIsValid","contentAfterIsValid","extractMatchingNodes","startIndex","endIndex","unmodifiedBeforeNodes","matchingNodes","unmodifiedAfterNodes","matchingOffset","currentOffset","currentNodes","currentNode","currentNodeText","currentNodeLength","currentNodeStart","currentNodeEnd","push","shift","$createAutoLinkNode_","fields","linkType","linkNode","remainingTextNode","linkTextNode","splitText","textNode","setFormat","getFormat","setDetail","getDetail","setStyle","getStyle","append","replace","firstTextNode","offset","firstLinkTextNode","linkNodes","endNode","selection","selectedTextNode","getNodes","find","undefined","select","anchor","focus","$handleLinkCreation","onChange","initialText","map","join","invalidMatchEnd","matchLength","isValid","actualMatchStart","actualMatchEnd","substring","handleLinkEdit","children","getChildren","childrenLength","child","isSimpleText","replaceWithChildren","getFields","flds","setFields","handleBadNeighbors","previousSibling","nextSibling","isEmailURI","startsWith","j","insertAfter","remove","getLatest","getTextNodesToMatch","textNodesToMatch","useAutoLink","editor","$","t0","t1","hasNodes","Error","onChangeWrapped","prevUrl","registerNodeTransform","parent","getParentOrThrow","previous","URL_REGEX","EMAIL_REGEX","MATCHERS","AutoLinkPlugin"],"sources":["../../../../../../src/features/link/client/plugins/autoLink/index.tsx"],"sourcesContent":["'use client'\nimport type { ElementNode, LexicalEditor, LexicalNode, TextNode } from 'lexical'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js'\nimport { mergeRegister } from '@lexical/utils'\nimport {\n $createTextNode,\n $getSelection,\n $isElementNode,\n $isLineBreakNode,\n $isNodeSelection,\n $isRangeSelection,\n $isTextNode,\n TextNode as TextNodeValue,\n} from 'lexical'\nimport { useEffect } from 'react'\n\nimport type { PluginComponent } from '../../../../typesClient.js'\nimport type { LinkFields } from '../../../nodes/types.js'\nimport type { ClientProps } from '../../index.js'\n\nimport { $createAutoLinkNode, $isAutoLinkNode, AutoLinkNode } from '../../../nodes/AutoLinkNode.js'\nimport { $isLinkNode } from '../../../nodes/LinkNode.js'\n\ntype ChangeHandler = (url: null | string, prevUrl: null | string) => void\n\ninterface LinkMatcherResult {\n fields?: LinkFields\n index: number\n length: number\n text: string\n url: string\n}\n\nexport type LinkMatcher = (text: string) => LinkMatcherResult | null\n\nexport function createLinkMatcherWithRegExp(\n regExp: RegExp,\n urlTransformer: (text: string) => string = (text) => text,\n) {\n return (text: string) => {\n const match = regExp.exec(text)\n if (match === null) {\n return null\n }\n return {\n index: match.index,\n length: match[0].length,\n text: match[0],\n url: urlTransformer(match[0]),\n }\n }\n}\n\nfunction findFirstMatch(text: string, matchers: LinkMatcher[]): LinkMatcherResult | null {\n for (let i = 0; i < matchers.length; i++) {\n const match = matchers[i](text)\n\n if (match != null) {\n return match\n }\n }\n\n return null\n}\n\nconst PUNCTUATION_OR_SPACE = /[.,;\\s]/\n\nfunction isSeparator(char: string): boolean {\n return PUNCTUATION_OR_SPACE.test(char)\n}\n\nfunction endsWithSeparator(textContent: string): boolean {\n return isSeparator(textContent[textContent.length - 1])\n}\n\nfunction startsWithSeparator(textContent: string): boolean {\n return isSeparator(textContent[0])\n}\n\n/**\n * Check if the text content starts with a fullstop followed by a top-level domain.\n * Meaning if the text content can be a beginning of a top level domain.\n * @param textContent\n * @param isEmail\n * @returns boolean\n */\nfunction startsWithTLD(textContent: string, isEmail: boolean): boolean {\n if (isEmail) {\n return /^\\.[a-z]{2,}/i.test(textContent)\n } else {\n return /^\\.[a-z0-9]+/i.test(textContent)\n }\n}\n\nfunction isPreviousNodeValid(node: LexicalNode): boolean {\n let previousNode = node.getPreviousSibling()\n if ($isElementNode(previousNode)) {\n previousNode = previousNode.getLastDescendant()\n }\n return (\n previousNode === null ||\n $isLineBreakNode(previousNode) ||\n ($isTextNode(previousNode) && endsWithSeparator(previousNode.getTextContent()))\n )\n}\n\nfunction isNextNodeValid(node: LexicalNode): boolean {\n let nextNode = node.getNextSibling()\n if ($isElementNode(nextNode)) {\n nextNode = nextNode.getFirstDescendant()\n }\n return (\n nextNode === null ||\n $isLineBreakNode(nextNode) ||\n ($isTextNode(nextNode) && startsWithSeparator(nextNode.getTextContent()))\n )\n}\n\nfunction isContentAroundIsValid(\n matchStart: number,\n matchEnd: number,\n text: string,\n nodes: TextNode[],\n): boolean {\n const contentBeforeIsValid =\n matchStart > 0 ? isSeparator(text[matchStart - 1]) : isPreviousNodeValid(nodes[0])\n if (!contentBeforeIsValid) {\n return false\n }\n\n const contentAfterIsValid =\n matchEnd < text.length ? isSeparator(text[matchEnd]) : isNextNodeValid(nodes[nodes.length - 1])\n return contentAfterIsValid\n}\n\nfunction extractMatchingNodes(\n nodes: TextNode[],\n startIndex: number,\n endIndex: number,\n): [\n matchingOffset: number,\n unmodifiedBeforeNodes: TextNode[],\n matchingNodes: TextNode[],\n unmodifiedAfterNodes: TextNode[],\n] {\n const unmodifiedBeforeNodes: TextNode[] = []\n const matchingNodes: TextNode[] = []\n const unmodifiedAfterNodes: TextNode[] = []\n let matchingOffset = 0\n\n let currentOffset = 0\n const currentNodes = [...nodes]\n\n while (currentNodes.length > 0) {\n const currentNode = currentNodes[0]\n const currentNodeText = currentNode.getTextContent()\n const currentNodeLength = currentNodeText.length\n const currentNodeStart = currentOffset\n const currentNodeEnd = currentOffset + currentNodeLength\n\n if (currentNodeEnd <= startIndex) {\n unmodifiedBeforeNodes.push(currentNode)\n matchingOffset += currentNodeLength\n } else if (currentNodeStart >= endIndex) {\n unmodifiedAfterNodes.push(currentNode)\n } else {\n matchingNodes.push(currentNode)\n }\n currentOffset += currentNodeLength\n currentNodes.shift()\n }\n return [matchingOffset, unmodifiedBeforeNodes, matchingNodes, unmodifiedAfterNodes]\n}\n\nfunction $createAutoLinkNode_(\n nodes: TextNode[],\n startIndex: number,\n endIndex: number,\n match: LinkMatcherResult,\n): TextNode | undefined {\n const fields = {\n linkType: 'custom',\n url: match.url,\n ...match.fields,\n } as LinkFields\n\n const linkNode = $createAutoLinkNode({ fields })\n if (nodes.length === 1) {\n let remainingTextNode = nodes[0]\n let linkTextNode\n if (startIndex === 0) {\n ;[linkTextNode, remainingTextNode] = remainingTextNode.splitText(endIndex)\n } else {\n ;[, linkTextNode, remainingTextNode] = remainingTextNode.splitText(startIndex, endIndex)\n }\n const textNode = $createTextNode(match.text)\n textNode.setFormat(linkTextNode.getFormat())\n textNode.setDetail(linkTextNode.getDetail())\n textNode.setStyle(linkTextNode.getStyle())\n linkNode.append(textNode)\n linkTextNode.replace(linkNode)\n return remainingTextNode\n } else if (nodes.length > 1) {\n const firstTextNode = nodes[0]\n let offset = firstTextNode.getTextContent().length\n let firstLinkTextNode\n if (startIndex === 0) {\n firstLinkTextNode = firstTextNode\n } else {\n ;[, firstLinkTextNode] = firstTextNode.splitText(startIndex)\n }\n const linkNodes: LexicalNode[] = []\n let remainingTextNode\n for (let i = 1; i < nodes.length; i++) {\n const currentNode = nodes[i]\n const currentNodeText = currentNode.getTextContent()\n const currentNodeLength = currentNodeText.length\n const currentNodeStart = offset\n const currentNodeEnd = offset + currentNodeLength\n if (currentNodeStart < endIndex) {\n if (currentNodeEnd <= endIndex) {\n linkNodes.push(currentNode)\n } else {\n const [linkTextNode, endNode] = currentNode.splitText(endIndex - currentNodeStart)\n linkNodes.push(linkTextNode)\n remainingTextNode = endNode\n }\n }\n offset += currentNodeLength\n }\n const selection = $getSelection()\n const selectedTextNode = selection ? selection.getNodes().find($isTextNode) : undefined\n const textNode = $createTextNode(firstLinkTextNode.getTextContent())\n textNode.setFormat(firstLinkTextNode.getFormat())\n textNode.setDetail(firstLinkTextNode.getDetail())\n textNode.setStyle(firstLinkTextNode.getStyle())\n linkNode.append(textNode, ...linkNodes)\n // it does not preserve caret position if caret was at the first text node\n // so we need to restore caret position\n if (selectedTextNode && selectedTextNode === firstLinkTextNode) {\n if ($isRangeSelection(selection)) {\n textNode.select(selection.anchor.offset, selection.focus.offset)\n } else if ($isNodeSelection(selection)) {\n textNode.select(0, textNode.getTextContent().length)\n }\n }\n firstLinkTextNode.replace(linkNode)\n return remainingTextNode\n }\n return undefined\n}\n\nfunction $handleLinkCreation(\n nodes: TextNode[],\n matchers: LinkMatcher[],\n onChange: ChangeHandler,\n): void {\n let currentNodes = [...nodes]\n const initialText = currentNodes.map((node) => node.getTextContent()).join('')\n let text = initialText\n\n let match\n let invalidMatchEnd = 0\n\n while ((match = findFirstMatch(text, matchers)) != null && match !== null) {\n const matchStart: number = match.index\n const matchLength: number = match.length\n const matchEnd = matchStart + matchLength\n const isValid = isContentAroundIsValid(\n invalidMatchEnd + matchStart,\n invalidMatchEnd + matchEnd,\n initialText,\n currentNodes,\n )\n\n if (isValid) {\n const [matchingOffset, , matchingNodes, unmodifiedAfterNodes] = extractMatchingNodes(\n currentNodes,\n invalidMatchEnd + matchStart,\n invalidMatchEnd + matchEnd,\n )\n\n const actualMatchStart = invalidMatchEnd + matchStart - matchingOffset\n const actualMatchEnd = invalidMatchEnd + matchEnd - matchingOffset\n const remainingTextNode = $createAutoLinkNode_(\n matchingNodes,\n actualMatchStart,\n actualMatchEnd,\n match,\n )\n currentNodes = remainingTextNode\n ? [remainingTextNode, ...unmodifiedAfterNodes]\n : unmodifiedAfterNodes\n onChange(match.url, null)\n invalidMatchEnd = 0\n } else {\n invalidMatchEnd += matchEnd\n }\n\n text = text.substring(matchEnd)\n }\n}\n\nfunction handleLinkEdit(\n linkNode: AutoLinkNode,\n matchers: LinkMatcher[],\n onChange: ChangeHandler,\n): void {\n // Check children are simple text\n const children = linkNode.getChildren()\n const childrenLength = children.length\n for (let i = 0; i < childrenLength; i++) {\n const child = children[i]\n if (!$isTextNode(child) || !child.isSimpleText()) {\n replaceWithChildren(linkNode)\n onChange(null, linkNode.getFields()?.url ?? null)\n return\n }\n }\n\n // Check text content fully matches\n const text = linkNode.getTextContent()\n const match = findFirstMatch(text, matchers)\n if (match === null || match.text !== text) {\n replaceWithChildren(linkNode)\n onChange(null, linkNode.getFields()?.url ?? null)\n return\n }\n\n // Check neighbors\n if (!isPreviousNodeValid(linkNode) || !isNextNodeValid(linkNode)) {\n replaceWithChildren(linkNode)\n onChange(null, linkNode.getFields()?.url ?? null)\n return\n }\n\n const url = linkNode.getFields()?.url\n if (url !== match?.url) {\n const flds = linkNode.getFields()\n flds.url = match?.url\n linkNode.setFields(flds)\n onChange(match.url, url ?? null)\n }\n}\n\n// Bad neighbors are edits in neighbor nodes that make AutoLinks incompatible.\n// Given the creation preconditions, these can only be simple text nodes.\nfunction handleBadNeighbors(\n textNode: TextNode,\n matchers: LinkMatcher[],\n onChange: ChangeHandler,\n): void {\n const previousSibling = textNode.getPreviousSibling()\n const nextSibling = textNode.getNextSibling()\n const text = textNode.getTextContent()\n\n if ($isAutoLinkNode(previousSibling)) {\n const isEmailURI = previousSibling.getFields()?.url\n ? previousSibling.getFields()?.url?.startsWith('mailto:')\n : false\n if (!startsWithSeparator(text) || startsWithTLD(text, isEmailURI)) {\n previousSibling.append(textNode)\n handleLinkEdit(previousSibling, matchers, onChange)\n onChange(null, previousSibling.getFields()?.url ?? null)\n }\n }\n\n if ($isAutoLinkNode(nextSibling) && !endsWithSeparator(text)) {\n replaceWithChildren(nextSibling)\n handleLinkEdit(nextSibling, matchers, onChange)\n onChange(null, nextSibling.getFields()?.url ?? null)\n }\n}\n\nfunction replaceWithChildren(node: ElementNode): LexicalNode[] {\n const children = node.getChildren()\n const childrenLength = children.length\n\n for (let j = childrenLength - 1; j >= 0; j--) {\n node.insertAfter(children[j])\n }\n\n node.remove()\n return children.map((child) => child.getLatest())\n}\n\nfunction getTextNodesToMatch(textNode: TextNode): TextNode[] {\n // check if next siblings are simple text nodes till a node contains a space separator\n const textNodesToMatch = [textNode]\n let nextSibling = textNode.getNextSibling()\n while (nextSibling !== null && $isTextNode(nextSibling) && nextSibling.isSimpleText()) {\n textNodesToMatch.push(nextSibling)\n if (/\\s/.test(nextSibling.getTextContent())) {\n break\n }\n nextSibling = nextSibling.getNextSibling()\n }\n return textNodesToMatch\n}\n\nfunction useAutoLink(\n editor: LexicalEditor,\n matchers: LinkMatcher[],\n onChange?: ChangeHandler,\n): void {\n useEffect(() => {\n if (!editor.hasNodes([AutoLinkNode])) {\n throw new Error('LexicalAutoLinkPlugin: AutoLinkNode not registered on editor')\n }\n\n const onChangeWrapped = (url: null | string, prevUrl: null | string): void => {\n if (onChange != null) {\n onChange(url, prevUrl)\n }\n }\n\n return mergeRegister(\n editor.registerNodeTransform(TextNodeValue, (textNode: TextNode) => {\n const parent = textNode.getParentOrThrow()\n const previous = textNode.getPreviousSibling()\n if ($isAutoLinkNode(parent)) {\n handleLinkEdit(parent, matchers, onChangeWrapped)\n } else if (!$isLinkNode(parent)) {\n if (\n textNode.isSimpleText() &&\n (startsWithSeparator(textNode.getTextContent()) || !$isAutoLinkNode(previous))\n ) {\n const textNodesToMatch = getTextNodesToMatch(textNode)\n $handleLinkCreation(textNodesToMatch, matchers, onChangeWrapped)\n }\n\n handleBadNeighbors(textNode, matchers, onChangeWrapped)\n }\n }),\n )\n }, [editor, matchers, onChange])\n}\n\nconst URL_REGEX =\n /((https?:\\/\\/(www\\.)?)|(www\\.))[-\\w@:%.+~#=]{1,256}\\.[a-zA-Z\\d()]{1,6}\\b([-\\w()@:%+.~#?&/=]*)(?<![-.+():%])/\n\nconst EMAIL_REGEX =\n /(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\])|(([a-z\\-\\d]+\\.)+[a-z]{2,}))/i\n\nconst MATCHERS = [\n createLinkMatcherWithRegExp(URL_REGEX, (text) => {\n return text.startsWith('http') ? text : `https://${text}`\n }),\n createLinkMatcherWithRegExp(EMAIL_REGEX, (text) => {\n return `mailto:${text}`\n }),\n]\n\nexport const AutoLinkPlugin: PluginComponent<ClientProps> = () => {\n const [editor] = useLexicalComposerContext()\n\n useAutoLink(editor, MATCHERS)\n\n return null\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -17,10 +17,7 @@ export const LinkPlugin = () => {
|
|
|
17
17
|
if (!editor.hasNodes([LinkNode])) {
|
|
18
18
|
throw new Error("LinkPlugin: LinkNode not registered on editor");
|
|
19
19
|
}
|
|
20
|
-
return mergeRegister(editor.registerCommand(TOGGLE_LINK_COMMAND,
|
|
21
|
-
$toggleLink(payload);
|
|
22
|
-
return true;
|
|
23
|
-
}, COMMAND_PRIORITY_LOW), editor.registerCommand(PASTE_COMMAND, event => {
|
|
20
|
+
return mergeRegister(editor.registerCommand(TOGGLE_LINK_COMMAND, _temp, COMMAND_PRIORITY_LOW), editor.registerCommand(PASTE_COMMAND, event => {
|
|
24
21
|
const selection = $getSelection();
|
|
25
22
|
if (!$isRangeSelection(selection) || selection.isCollapsed() || !(event instanceof ClipboardEvent) || event.clipboardData == null) {
|
|
26
23
|
return false;
|
|
@@ -29,7 +26,7 @@ export const LinkPlugin = () => {
|
|
|
29
26
|
if (!validateUrl(clipboardText)) {
|
|
30
27
|
return false;
|
|
31
28
|
}
|
|
32
|
-
if (!selection.getNodes().some(
|
|
29
|
+
if (!selection.getNodes().some(_temp2)) {
|
|
33
30
|
const linkFields = {
|
|
34
31
|
doc: null,
|
|
35
32
|
linkType: "custom",
|
|
@@ -57,4 +54,11 @@ export const LinkPlugin = () => {
|
|
|
57
54
|
useEffect(t0, t1);
|
|
58
55
|
return null;
|
|
59
56
|
};
|
|
57
|
+
function _temp(payload) {
|
|
58
|
+
$toggleLink(payload);
|
|
59
|
+
return true;
|
|
60
|
+
}
|
|
61
|
+
function _temp2(node) {
|
|
62
|
+
return $isElementNode(node);
|
|
63
|
+
}
|
|
60
64
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["c","_c","useLexicalComposerContext","mergeRegister","$getSelection","$isElementNode","$isRangeSelection","COMMAND_PRIORITY_LOW","PASTE_COMMAND","useEffect","validateUrl","$toggleLink","LinkNode","TOGGLE_LINK_COMMAND","LinkPlugin","$","editor","t0","t1","hasNodes","Error","registerCommand","
|
|
1
|
+
{"version":3,"file":"index.js","names":["c","_c","useLexicalComposerContext","mergeRegister","$getSelection","$isElementNode","$isRangeSelection","COMMAND_PRIORITY_LOW","PASTE_COMMAND","useEffect","validateUrl","$toggleLink","LinkNode","TOGGLE_LINK_COMMAND","LinkPlugin","$","editor","t0","t1","hasNodes","Error","registerCommand","_temp","event","selection","isCollapsed","ClipboardEvent","clipboardData","clipboardText","getData","getNodes","some","_temp2","linkFields","doc","linkType","newTab","url","dispatchCommand","fields","text","preventDefault","payload","node"],"sources":["../../../../../../src/features/link/client/plugins/link/index.tsx"],"sourcesContent":["'use client'\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js'\nimport { mergeRegister } from '@lexical/utils'\nimport {\n $getSelection,\n $isElementNode,\n $isRangeSelection,\n COMMAND_PRIORITY_LOW,\n PASTE_COMMAND,\n} from 'lexical'\nimport { useEffect } from 'react'\n\nimport type { PluginComponent } from '../../../../typesClient.js'\nimport type { LinkFields } from '../../../nodes/types.js'\nimport type { ClientProps } from '../../index.js'\nimport type { LinkPayload } from '../floatingLinkEditor/types.js'\n\nimport { validateUrl } from '../../../../../lexical/utils/url.js'\nimport { $toggleLink, LinkNode, TOGGLE_LINK_COMMAND } from '../../../nodes/LinkNode.js'\n\nexport const LinkPlugin: PluginComponent<ClientProps> = () => {\n const [editor] = useLexicalComposerContext()\n\n useEffect(() => {\n if (!editor.hasNodes([LinkNode])) {\n throw new Error('LinkPlugin: LinkNode not registered on editor')\n }\n return mergeRegister(\n editor.registerCommand(\n TOGGLE_LINK_COMMAND,\n (payload: LinkPayload) => {\n $toggleLink(payload)\n return true\n },\n COMMAND_PRIORITY_LOW,\n ),\n editor.registerCommand(\n PASTE_COMMAND,\n (event) => {\n const selection = $getSelection()\n if (\n !$isRangeSelection(selection) ||\n selection.isCollapsed() ||\n !(event instanceof ClipboardEvent) ||\n event.clipboardData == null\n ) {\n return false\n }\n const clipboardText = event.clipboardData.getData('text')\n if (!validateUrl(clipboardText)) {\n return false\n }\n // If we select nodes that are elements then avoid applying the link.\n if (!selection.getNodes().some((node) => $isElementNode(node))) {\n const linkFields: LinkFields = {\n doc: null,\n linkType: 'custom',\n newTab: false,\n url: clipboardText,\n }\n editor.dispatchCommand(TOGGLE_LINK_COMMAND, {\n fields: linkFields,\n text: null,\n })\n event.preventDefault()\n return true\n }\n return false\n },\n COMMAND_PRIORITY_LOW,\n ),\n )\n }, [editor])\n\n return null\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;AACA,SAASC,yBAAyB,QAAQ;AAC1C,SAASC,aAAa,QAAQ;AAC9B,SACEC,aAAa,EACbC,cAAc,EACdC,iBAAiB,EACjBC,oBAAoB,EACpBC,aAAa,QACR;AACP,SAASC,SAAS,QAAQ;AAO1B,SAASC,WAAW,QAAQ;AAC5B,SAASC,WAAW,EAAEC,QAAQ,EAAEC,mBAAmB,QAAQ;AAE3D,OAAO,MAAMC,UAAA,GAA2CA,CAAA;EAAA,MAAAC,CAAA,GAAAd,EAAA;EACtD,OAAAe,MAAA,IAAiBd,yBAAA;EAAA,IAAAe,EAAA;EAAA,IAAAC,EAAA;EAAA,IAAAH,CAAA,QAAAC,MAAA;IAEPC,EAAA,GAAAA,CAAA;MAAA,KACHD,MAAA,CAAAG,QAAA,EAAAP,QAAA,CAA0B;QAAA,UAAAQ,KAAA,CACb;MAAA;MAAA,OAEXjB,aAAA,CACLa,MAAA,CAAAK,eAAA,CAAAR,mBAAA,EAAAS,KAAA,EAAAf,oBAME,GAEFS,MAAA,CAAAK,eAAA,CAAAb,aAAA,EAAAe,KAAA;QAGI,MAAAC,SAAA,GAAkBpB,aAAA;QAAA,IAEhB,CAACE,iBAAA,CAAkBkB,SAAA,KACnBA,SAAA,CAAAC,WAAA,CAAqB,OACnBF,KAAA,YAAAG,cAA8B,KAChCH,KAAA,CAAAI,aAAA,QAAuB;UAAA;QAAA;QAIzB,MAAAC,aAAA,GAAsBL,KAAA,CAAAI,aAAA,CAAAE,OAAA,CAA4B;QAAA,KAC7CnB,WAAA,CAAYkB,aAAA;UAAA;QAAA;QAAA,KAIZJ,SAAA,CAAAM,QAAA,CAAkB,EAAAC,IAAA,CAAAC,MAAiC;UACtD,MAAAC,UAAA;YAAAC,GAAA;YAAAC,QAAA,EAEY;YAAAC,MAAA;YAAAC,GAAA,EAELT;UAAA;UAEPZ,MAAA,CAAAsB,eAAA,CAAAzB,mBAAA;YAAA0B,MAAA,EACUN,UAAA;YAAAO,IAAA;UAAA,CAEV;UACAjB,KAAA,CAAAkB,cAAA,CAAoB;UAAA;QAAA;QAAA;MAAA,GAAAlC,oBAKxB;IAAA;IAGHW,EAAA,IAACF,MAAA;IAAOD,CAAA,MAAAC,MAAA;IAAAD,CAAA,MAAAE,EAAA;IAAAF,CAAA,MAAAG,EAAA;EAAA;IAAAD,EAAA,GAAAF,CAAA;IAAAG,EAAA,GAAAH,CAAA;EAAA;EAjDXN,SAAA,CAAUQ,EAiDV,EAAGC,EAAQ;EAAA;AAAA,CAGb;AAvDwD,SAAAI,MAAAoB,OAAA;EAW9C/B,WAAA,CAAY+B,OAAA;EAAA;AAAA;AAXkC,SAAAV,OAAAW,IAAA;EAAA,OAiCLtC,cAAA,CAAesC,IAAA;AAAA","ignoreList":[]}
|
|
@@ -51,13 +51,13 @@ const RelationshipDrawerComponent = t0 => {
|
|
|
51
51
|
const [replaceNodeKey, setReplaceNodeKey] = useState(null);
|
|
52
52
|
const t2 = enabledCollectionSlugs ? enabledCollectionSlugs : undefined;
|
|
53
53
|
let t3;
|
|
54
|
-
if ($[2] !==
|
|
54
|
+
if ($[2] !== selectedCollectionSlug || $[3] !== t2) {
|
|
55
55
|
t3 = {
|
|
56
56
|
collectionSlugs: t2,
|
|
57
57
|
selectedCollection: selectedCollectionSlug
|
|
58
58
|
};
|
|
59
|
-
$[2] =
|
|
60
|
-
$[3] =
|
|
59
|
+
$[2] = selectedCollectionSlug;
|
|
60
|
+
$[3] = t2;
|
|
61
61
|
$[4] = t3;
|
|
62
62
|
} else {
|
|
63
63
|
t3 = $[4];
|
|
@@ -87,7 +87,7 @@ const RelationshipDrawerComponent = t0 => {
|
|
|
87
87
|
}
|
|
88
88
|
useEffect(t4, t5);
|
|
89
89
|
let t6;
|
|
90
|
-
if ($[9] !==
|
|
90
|
+
if ($[9] !== closeListDrawer || $[10] !== editor || $[11] !== replaceNodeKey) {
|
|
91
91
|
t6 = t7 => {
|
|
92
92
|
const {
|
|
93
93
|
collectionSlug,
|
|
@@ -101,9 +101,9 @@ const RelationshipDrawerComponent = t0 => {
|
|
|
101
101
|
});
|
|
102
102
|
closeListDrawer();
|
|
103
103
|
};
|
|
104
|
-
$[9] =
|
|
105
|
-
$[10] =
|
|
106
|
-
$[11] =
|
|
104
|
+
$[9] = closeListDrawer;
|
|
105
|
+
$[10] = editor;
|
|
106
|
+
$[11] = replaceNodeKey;
|
|
107
107
|
$[12] = t6;
|
|
108
108
|
} else {
|
|
109
109
|
t6 = $[12];
|
|
@@ -120,22 +120,22 @@ const RelationshipDrawerComponent = t0 => {
|
|
|
120
120
|
t7 = $[14];
|
|
121
121
|
}
|
|
122
122
|
let t8;
|
|
123
|
-
if ($[15] !==
|
|
123
|
+
if ($[15] !== enabledCollectionSlugs || $[16] !== isListDrawerOpen) {
|
|
124
124
|
t8 = [isListDrawerOpen, enabledCollectionSlugs];
|
|
125
|
-
$[15] =
|
|
126
|
-
$[16] =
|
|
125
|
+
$[15] = enabledCollectionSlugs;
|
|
126
|
+
$[16] = isListDrawerOpen;
|
|
127
127
|
$[17] = t8;
|
|
128
128
|
} else {
|
|
129
129
|
t8 = $[17];
|
|
130
130
|
}
|
|
131
131
|
useEffect(t7, t8);
|
|
132
132
|
let t9;
|
|
133
|
-
if ($[18] !==
|
|
133
|
+
if ($[18] !== ListDrawer || $[19] !== onSelect) {
|
|
134
134
|
t9 = _jsx(ListDrawer, {
|
|
135
135
|
onSelect
|
|
136
136
|
});
|
|
137
|
-
$[18] =
|
|
138
|
-
$[19] =
|
|
137
|
+
$[18] = ListDrawer;
|
|
138
|
+
$[19] = onSelect;
|
|
139
139
|
$[20] = t9;
|
|
140
140
|
} else {
|
|
141
141
|
t9 = $[20];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["c","_c","useLexicalComposerContext","$getNodeByKey","COMMAND_PRIORITY_EDITOR","React","useCallback","useEffect","useState","useLexicalListDrawer","$createRelationshipNode","INSERT_RELATIONSHIP_COMMAND","EnabledRelationshipsCondition","INSERT_RELATIONSHIP_WITH_DRAWER_COMMAND","insertRelationship","editor","relationTo","replaceNodeKey","value","dispatchCommand","update","node","replace","RelationshipDrawerComponent","t0","$","enabledCollectionSlugs","t1","selectedCollectionSlug","setSelectedCollectionSlug","setReplaceNodeKey","t2","undefined","t3","collectionSlugs","selectedCollection","closeListDrawer","isListDrawerOpen","ListDrawer","openListDrawer","t4","t5","registerCommand","payload","nodeKey","t6","t7","collectionSlug","docID","onSelect","t8","t9","_jsx","RelationshipDrawer","props","length"],"sources":["../../../../../src/features/relationship/client/drawer/index.tsx"],"sourcesContent":["'use client'\nimport type { LexicalEditor } from 'lexical'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js'\nimport { $getNodeByKey, COMMAND_PRIORITY_EDITOR } from 'lexical'\nimport React, { useCallback, useEffect, useState } from 'react'\n\nimport { useLexicalListDrawer } from '../../../../utilities/fieldsDrawer/useLexicalListDrawer.js'\nimport { $createRelationshipNode } from '../nodes/RelationshipNode.js'\nimport { INSERT_RELATIONSHIP_COMMAND } from '../plugins/index.js'\nimport { EnabledRelationshipsCondition } from '../utils/EnabledRelationshipsCondition.js'\nimport { INSERT_RELATIONSHIP_WITH_DRAWER_COMMAND } from './commands.js'\n\nconst insertRelationship = ({\n editor,\n relationTo,\n replaceNodeKey,\n value,\n}: {\n editor: LexicalEditor\n relationTo: string\n replaceNodeKey: null | string\n value: number | string\n}) => {\n if (!replaceNodeKey) {\n editor.dispatchCommand(INSERT_RELATIONSHIP_COMMAND, {\n relationTo,\n value,\n })\n } else {\n editor.update(() => {\n const node = $getNodeByKey(replaceNodeKey)\n if (node) {\n node.replace($createRelationshipNode({ relationTo, value }))\n }\n })\n }\n}\n\ntype Props = {\n enabledCollectionSlugs: null | string[]\n}\n\nconst RelationshipDrawerComponent: React.FC<Props> = ({ enabledCollectionSlugs }) => {\n const [editor] = useLexicalComposerContext()\n const [selectedCollectionSlug, setSelectedCollectionSlug] = useState(\n () => enabledCollectionSlugs?.[0],\n )\n const [replaceNodeKey, setReplaceNodeKey] = useState<null | string>(null)\n\n const { closeListDrawer, isListDrawerOpen, ListDrawer, openListDrawer } = useLexicalListDrawer({\n collectionSlugs: enabledCollectionSlugs ? enabledCollectionSlugs : undefined,\n selectedCollection: selectedCollectionSlug,\n })\n\n useEffect(() => {\n return editor.registerCommand<{\n replace: { nodeKey: string } | false\n }>(\n INSERT_RELATIONSHIP_WITH_DRAWER_COMMAND,\n (payload) => {\n setReplaceNodeKey(payload?.replace ? payload?.replace.nodeKey : null)\n openListDrawer()\n return true\n },\n COMMAND_PRIORITY_EDITOR,\n )\n }, [editor, openListDrawer])\n\n const onSelect = useCallback(\n ({ collectionSlug, docID }: { collectionSlug: string; docID: number | string }) => {\n insertRelationship({\n editor,\n relationTo: collectionSlug,\n replaceNodeKey,\n value: docID,\n })\n closeListDrawer()\n },\n [editor, closeListDrawer, replaceNodeKey],\n )\n\n useEffect(() => {\n // always reset back to first option\n // TODO: this is not working, see the ListDrawer component\n setSelectedCollectionSlug(enabledCollectionSlugs?.[0])\n }, [isListDrawerOpen, enabledCollectionSlugs])\n\n return <ListDrawer onSelect={onSelect} />\n}\n\nexport const RelationshipDrawer = (props: Props): React.ReactNode => {\n return (props?.enabledCollectionSlugs?.length ?? -1) > 0 ? ( // If enabledCollectionSlugs it overrides what EnabledRelationshipsCondition is doing\n <RelationshipDrawerComponent {...props} />\n ) : (\n <EnabledRelationshipsCondition {...props}>\n <RelationshipDrawerComponent {...props} />\n </EnabledRelationshipsCondition>\n )\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AAGA,SAASC,yBAAyB,QAAQ;AAC1C,SAASC,aAAa,EAAEC,uBAAuB,QAAQ;AACvD,OAAOC,KAAA,IAASC,WAAW,EAAEC,SAAS,EAAEC,QAAQ,QAAQ;AAExD,SAASC,oBAAoB,QAAQ;AACrC,SAASC,uBAAuB,QAAQ;AACxC,SAASC,2BAA2B,QAAQ;AAC5C,SAASC,6BAA6B,QAAQ;AAC9C,SAASC,uCAAuC,QAAQ;AAExD,MAAMC,kBAAA,GAAqBA,CAAC;EAC1BC,MAAM;EACNC,UAAU;EACVC,cAAc;EACdC;AAAK,CAMN;EACC,IAAI,CAACD,cAAA,EAAgB;IACnBF,MAAA,CAAOI,eAAe,CAACR,2BAAA,EAA6B;MAClDK,UAAA;MACAE;IACF;EACF,OAAO;IACLH,MAAA,CAAOK,MAAM,CAAC;MACZ,MAAMC,IAAA,GAAOlB,aAAA,CAAcc,cAAA;MAC3B,IAAII,IAAA,EAAM;QACRA,IAAA,CAAKC,OAAO,CAACZ,uBAAA,CAAwB;UAAEM,UAAA;UAAYE;QAAM;MAC3D;IACF;EACF;AACF;AAMA,MAAMK,2BAAA,GAA+CC,EAAA;EAAA,MAAAC,CAAA,GAAAxB,EAAA;EAAC;IAAAyB;EAAA,IAAAF,EAA0B;EAC9E,OAAAT,MAAA,IAAiBb,yBAAA;EAAA,IAAAyB,EAAA;EAAA,IAAAF,CAAA,QAAAC,sBAAA;IAEfC,EAAA,GAAAA,CAAA,KAAMD,sBAAA;IAA2BD,CAAA,MAAAC,sBAAA;IAAAD,CAAA,MAAAE,EAAA;EAAA;IAAAA,EAAA,GAAAF,CAAA;EAAA;EADnC,OAAAG,sBAAA,EAAAC,yBAAA,IAA4DrB,QAAA,CAC1DmB,EAAiC;EAEnC,OAAAV,cAAA,EAAAa,iBAAA,IAA4CtB,QAAA,KAAwB;EAGjD,MAAAuB,EAAA,GAAAL,sBAAA,GAAyBA,sBAAA,GAAAM,SAAyB;EAAA,IAAAC,EAAA;EAAA,IAAAR,CAAA,
|
|
1
|
+
{"version":3,"file":"index.js","names":["c","_c","useLexicalComposerContext","$getNodeByKey","COMMAND_PRIORITY_EDITOR","React","useCallback","useEffect","useState","useLexicalListDrawer","$createRelationshipNode","INSERT_RELATIONSHIP_COMMAND","EnabledRelationshipsCondition","INSERT_RELATIONSHIP_WITH_DRAWER_COMMAND","insertRelationship","editor","relationTo","replaceNodeKey","value","dispatchCommand","update","node","replace","RelationshipDrawerComponent","t0","$","enabledCollectionSlugs","t1","selectedCollectionSlug","setSelectedCollectionSlug","setReplaceNodeKey","t2","undefined","t3","collectionSlugs","selectedCollection","closeListDrawer","isListDrawerOpen","ListDrawer","openListDrawer","t4","t5","registerCommand","payload","nodeKey","t6","t7","collectionSlug","docID","onSelect","t8","t9","_jsx","RelationshipDrawer","props","length"],"sources":["../../../../../src/features/relationship/client/drawer/index.tsx"],"sourcesContent":["'use client'\nimport type { LexicalEditor } from 'lexical'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js'\nimport { $getNodeByKey, COMMAND_PRIORITY_EDITOR } from 'lexical'\nimport React, { useCallback, useEffect, useState } from 'react'\n\nimport { useLexicalListDrawer } from '../../../../utilities/fieldsDrawer/useLexicalListDrawer.js'\nimport { $createRelationshipNode } from '../nodes/RelationshipNode.js'\nimport { INSERT_RELATIONSHIP_COMMAND } from '../plugins/index.js'\nimport { EnabledRelationshipsCondition } from '../utils/EnabledRelationshipsCondition.js'\nimport { INSERT_RELATIONSHIP_WITH_DRAWER_COMMAND } from './commands.js'\n\nconst insertRelationship = ({\n editor,\n relationTo,\n replaceNodeKey,\n value,\n}: {\n editor: LexicalEditor\n relationTo: string\n replaceNodeKey: null | string\n value: number | string\n}) => {\n if (!replaceNodeKey) {\n editor.dispatchCommand(INSERT_RELATIONSHIP_COMMAND, {\n relationTo,\n value,\n })\n } else {\n editor.update(() => {\n const node = $getNodeByKey(replaceNodeKey)\n if (node) {\n node.replace($createRelationshipNode({ relationTo, value }))\n }\n })\n }\n}\n\ntype Props = {\n enabledCollectionSlugs: null | string[]\n}\n\nconst RelationshipDrawerComponent: React.FC<Props> = ({ enabledCollectionSlugs }) => {\n const [editor] = useLexicalComposerContext()\n const [selectedCollectionSlug, setSelectedCollectionSlug] = useState(\n () => enabledCollectionSlugs?.[0],\n )\n const [replaceNodeKey, setReplaceNodeKey] = useState<null | string>(null)\n\n const { closeListDrawer, isListDrawerOpen, ListDrawer, openListDrawer } = useLexicalListDrawer({\n collectionSlugs: enabledCollectionSlugs ? enabledCollectionSlugs : undefined,\n selectedCollection: selectedCollectionSlug,\n })\n\n useEffect(() => {\n return editor.registerCommand<{\n replace: { nodeKey: string } | false\n }>(\n INSERT_RELATIONSHIP_WITH_DRAWER_COMMAND,\n (payload) => {\n setReplaceNodeKey(payload?.replace ? payload?.replace.nodeKey : null)\n openListDrawer()\n return true\n },\n COMMAND_PRIORITY_EDITOR,\n )\n }, [editor, openListDrawer])\n\n const onSelect = useCallback(\n ({ collectionSlug, docID }: { collectionSlug: string; docID: number | string }) => {\n insertRelationship({\n editor,\n relationTo: collectionSlug,\n replaceNodeKey,\n value: docID,\n })\n closeListDrawer()\n },\n [editor, closeListDrawer, replaceNodeKey],\n )\n\n useEffect(() => {\n // always reset back to first option\n // TODO: this is not working, see the ListDrawer component\n setSelectedCollectionSlug(enabledCollectionSlugs?.[0])\n }, [isListDrawerOpen, enabledCollectionSlugs])\n\n return <ListDrawer onSelect={onSelect} />\n}\n\nexport const RelationshipDrawer = (props: Props): React.ReactNode => {\n return (props?.enabledCollectionSlugs?.length ?? -1) > 0 ? ( // If enabledCollectionSlugs it overrides what EnabledRelationshipsCondition is doing\n <RelationshipDrawerComponent {...props} />\n ) : (\n <EnabledRelationshipsCondition {...props}>\n <RelationshipDrawerComponent {...props} />\n </EnabledRelationshipsCondition>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -28,22 +28,22 @@ export const RelationshipPlugin = t0 => {
|
|
|
28
28
|
} else {
|
|
29
29
|
if (clientProps?.disabledCollections) {
|
|
30
30
|
let t2;
|
|
31
|
-
if ($[0] !== clientProps || $[1] !== collections) {
|
|
31
|
+
if ($[0] !== clientProps?.disabledCollections || $[1] !== collections) {
|
|
32
32
|
let t3;
|
|
33
|
-
if ($[3] !== clientProps) {
|
|
33
|
+
if ($[3] !== clientProps?.disabledCollections) {
|
|
34
34
|
t3 = t4 => {
|
|
35
35
|
const {
|
|
36
36
|
slug
|
|
37
37
|
} = t4;
|
|
38
38
|
return !clientProps?.disabledCollections?.includes(slug);
|
|
39
39
|
};
|
|
40
|
-
$[3] = clientProps;
|
|
40
|
+
$[3] = clientProps?.disabledCollections;
|
|
41
41
|
$[4] = t3;
|
|
42
42
|
} else {
|
|
43
43
|
t3 = $[4];
|
|
44
44
|
}
|
|
45
45
|
t2 = collections.filter(t3).map(_temp);
|
|
46
|
-
$[0] = clientProps;
|
|
46
|
+
$[0] = clientProps?.disabledCollections;
|
|
47
47
|
$[1] = collections;
|
|
48
48
|
$[2] = t2;
|
|
49
49
|
} else {
|
|
@@ -59,21 +59,7 @@ export const RelationshipPlugin = t0 => {
|
|
|
59
59
|
if (!editor.hasNodes([RelationshipNode])) {
|
|
60
60
|
throw new Error("RelationshipPlugin: RelationshipNode not registered on editor");
|
|
61
61
|
}
|
|
62
|
-
return editor.registerCommand(INSERT_RELATIONSHIP_COMMAND,
|
|
63
|
-
const selection = $getSelection() || $getPreviousSelection();
|
|
64
|
-
if ($isRangeSelection(selection)) {
|
|
65
|
-
const relationshipNode = $createRelationshipNode(payload);
|
|
66
|
-
$insertNodeToNearestRoot(relationshipNode);
|
|
67
|
-
const {
|
|
68
|
-
focus
|
|
69
|
-
} = selection;
|
|
70
|
-
const focusNode = focus.getNode();
|
|
71
|
-
if ($isParagraphNode(focusNode) && focusNode.getTextContentSize() === 0 && focusNode.getParentOrThrow().getChildren().filter(node => $isParagraphNode(node)).length > 1) {
|
|
72
|
-
focusNode.remove();
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
return true;
|
|
76
|
-
}, COMMAND_PRIORITY_EDITOR);
|
|
62
|
+
return editor.registerCommand(INSERT_RELATIONSHIP_COMMAND, _temp3, COMMAND_PRIORITY_EDITOR);
|
|
77
63
|
};
|
|
78
64
|
t3 = [editor];
|
|
79
65
|
$[5] = editor;
|
|
@@ -102,4 +88,22 @@ function _temp(t0) {
|
|
|
102
88
|
} = t0;
|
|
103
89
|
return slug_0;
|
|
104
90
|
}
|
|
91
|
+
function _temp2(node) {
|
|
92
|
+
return $isParagraphNode(node);
|
|
93
|
+
}
|
|
94
|
+
function _temp3(payload) {
|
|
95
|
+
const selection = $getSelection() || $getPreviousSelection();
|
|
96
|
+
if ($isRangeSelection(selection)) {
|
|
97
|
+
const relationshipNode = $createRelationshipNode(payload);
|
|
98
|
+
$insertNodeToNearestRoot(relationshipNode);
|
|
99
|
+
const {
|
|
100
|
+
focus
|
|
101
|
+
} = selection;
|
|
102
|
+
const focusNode = focus.getNode();
|
|
103
|
+
if ($isParagraphNode(focusNode) && focusNode.getTextContentSize() === 0 && focusNode.getParentOrThrow().getChildren().filter(_temp2).length > 1) {
|
|
104
|
+
focusNode.remove();
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
return true;
|
|
108
|
+
}
|
|
105
109
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["c","_c","useLexicalComposerContext","$insertNodeToNearestRoot","useConfig","$getPreviousSelection","$getSelection","$isParagraphNode","$isRangeSelection","COMMAND_PRIORITY_EDITOR","createCommand","useEffect","RelationshipDrawer","$createRelationshipNode","RelationshipNode","INSERT_RELATIONSHIP_COMMAND","RelationshipPlugin","t0","$","clientProps","editor","config","t1","collections","enabledRelations","enabledCollections","disabledCollections","t2","t3","t4","slug","includes","filter","map","_temp","hasNodes","Error","registerCommand","
|
|
1
|
+
{"version":3,"file":"index.js","names":["c","_c","useLexicalComposerContext","$insertNodeToNearestRoot","useConfig","$getPreviousSelection","$getSelection","$isParagraphNode","$isRangeSelection","COMMAND_PRIORITY_EDITOR","createCommand","useEffect","RelationshipDrawer","$createRelationshipNode","RelationshipNode","INSERT_RELATIONSHIP_COMMAND","RelationshipPlugin","t0","$","clientProps","editor","config","t1","collections","enabledRelations","enabledCollections","disabledCollections","t2","t3","t4","slug","includes","filter","map","_temp","hasNodes","Error","registerCommand","_temp3","_jsx","enabledCollectionSlugs","slug_0","_temp2","node","payload","selection","relationshipNode","focus","focusNode","getNode","getTextContentSize","getParentOrThrow","getChildren","length","remove"],"sources":["../../../../../src/features/relationship/client/plugins/index.tsx"],"sourcesContent":["'use client'\nimport type { LexicalCommand } from 'lexical'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js'\nimport { $insertNodeToNearestRoot } from '@lexical/utils'\nimport { useConfig } from '@payloadcms/ui'\nimport {\n $getPreviousSelection,\n $getSelection,\n $isParagraphNode,\n $isRangeSelection,\n COMMAND_PRIORITY_EDITOR,\n createCommand,\n} from 'lexical'\nimport { useEffect } from 'react'\n\nimport type { PluginComponent } from '../../../typesClient.js'\nimport type { RelationshipFeatureProps } from '../../server/index.js'\nimport type { RelationshipData } from '../../server/nodes/RelationshipNode.js'\n\nimport { RelationshipDrawer } from '../drawer/index.js'\nimport { $createRelationshipNode, RelationshipNode } from '../nodes/RelationshipNode.js'\n\nexport const INSERT_RELATIONSHIP_COMMAND: LexicalCommand<RelationshipData> = createCommand(\n 'INSERT_RELATIONSHIP_COMMAND',\n)\n\nexport const RelationshipPlugin: PluginComponent<RelationshipFeatureProps> = ({ clientProps }) => {\n const [editor] = useLexicalComposerContext()\n const {\n config: { collections },\n } = useConfig()\n\n let enabledRelations: null | string[] = null\n\n if (clientProps?.enabledCollections) {\n enabledRelations = clientProps?.enabledCollections\n } else if (clientProps?.disabledCollections) {\n enabledRelations = collections\n .filter(({ slug }) => !clientProps?.disabledCollections?.includes(slug))\n .map(({ slug }) => slug)\n }\n\n useEffect(() => {\n if (!editor.hasNodes([RelationshipNode])) {\n throw new Error('RelationshipPlugin: RelationshipNode not registered on editor')\n }\n\n return editor.registerCommand<RelationshipData>(\n INSERT_RELATIONSHIP_COMMAND,\n (payload) => {\n const selection = $getSelection() || $getPreviousSelection()\n\n if ($isRangeSelection(selection)) {\n const relationshipNode = $createRelationshipNode(payload)\n // Insert relationship node BEFORE potentially removing focusNode, as $insertNodeToNearestRoot errors if the focusNode doesn't exist\n $insertNodeToNearestRoot(relationshipNode)\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 return true\n },\n COMMAND_PRIORITY_EDITOR,\n )\n }, [editor])\n\n return <RelationshipDrawer enabledCollectionSlugs={enabledRelations} />\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -22,9 +22,9 @@ const filterRichTextCollections = (collections, options) => {
|
|
|
22
22
|
};
|
|
23
23
|
export const EnabledRelationshipsCondition = props => {
|
|
24
24
|
const $ = _c(16);
|
|
25
|
-
let t0;
|
|
26
|
-
let rest;
|
|
27
25
|
let children;
|
|
26
|
+
let rest;
|
|
27
|
+
let t0;
|
|
28
28
|
if ($[0] !== props) {
|
|
29
29
|
({
|
|
30
30
|
children,
|
|
@@ -32,13 +32,13 @@ export const EnabledRelationshipsCondition = props => {
|
|
|
32
32
|
...rest
|
|
33
33
|
} = props);
|
|
34
34
|
$[0] = props;
|
|
35
|
-
$[1] =
|
|
35
|
+
$[1] = children;
|
|
36
36
|
$[2] = rest;
|
|
37
|
-
$[3] =
|
|
37
|
+
$[3] = t0;
|
|
38
38
|
} else {
|
|
39
|
-
|
|
39
|
+
children = $[1];
|
|
40
40
|
rest = $[2];
|
|
41
|
-
|
|
41
|
+
t0 = $[3];
|
|
42
42
|
}
|
|
43
43
|
const uploads = t0 === undefined ? false : t0;
|
|
44
44
|
const {
|
|
@@ -59,12 +59,7 @@ export const EnabledRelationshipsCondition = props => {
|
|
|
59
59
|
uploads,
|
|
60
60
|
user,
|
|
61
61
|
visibleEntities
|
|
62
|
-
}).map(
|
|
63
|
-
const {
|
|
64
|
-
slug
|
|
65
|
-
} = t3;
|
|
66
|
-
return slug;
|
|
67
|
-
});
|
|
62
|
+
}).map(_temp);
|
|
68
63
|
$[4] = collections;
|
|
69
64
|
$[5] = uploads;
|
|
70
65
|
$[6] = user;
|
|
@@ -78,27 +73,33 @@ export const EnabledRelationshipsCondition = props => {
|
|
|
78
73
|
return null;
|
|
79
74
|
}
|
|
80
75
|
let t3;
|
|
81
|
-
if ($[9] !==
|
|
76
|
+
if ($[9] !== children || $[10] !== enabledCollectionSlugs || $[11] !== rest) {
|
|
82
77
|
let t4;
|
|
83
|
-
if ($[13] !==
|
|
78
|
+
if ($[13] !== enabledCollectionSlugs || $[14] !== rest) {
|
|
84
79
|
t4 = {
|
|
85
80
|
...rest,
|
|
86
81
|
enabledCollectionSlugs
|
|
87
82
|
};
|
|
88
|
-
$[13] =
|
|
89
|
-
$[14] =
|
|
83
|
+
$[13] = enabledCollectionSlugs;
|
|
84
|
+
$[14] = rest;
|
|
90
85
|
$[15] = t4;
|
|
91
86
|
} else {
|
|
92
87
|
t4 = $[15];
|
|
93
88
|
}
|
|
94
89
|
t3 = React.cloneElement(children, t4);
|
|
95
|
-
$[9] =
|
|
90
|
+
$[9] = children;
|
|
96
91
|
$[10] = enabledCollectionSlugs;
|
|
97
|
-
$[11] =
|
|
92
|
+
$[11] = rest;
|
|
98
93
|
$[12] = t3;
|
|
99
94
|
} else {
|
|
100
95
|
t3 = $[12];
|
|
101
96
|
}
|
|
102
97
|
return t3;
|
|
103
98
|
};
|
|
99
|
+
function _temp(t0) {
|
|
100
|
+
const {
|
|
101
|
+
slug
|
|
102
|
+
} = t0;
|
|
103
|
+
return slug;
|
|
104
|
+
}
|
|
104
105
|
//# sourceMappingURL=EnabledRelationshipsCondition.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EnabledRelationshipsCondition.js","names":["c","_c","useAuth","useConfig","useEntityVisibility","React","filterRichTextCollections","collections","options","filter","slug","admin","enableRichTextRelationship","upload","visibleEntities","includes","uploads","Boolean","EnabledRelationshipsCondition","props","$","
|
|
1
|
+
{"version":3,"file":"EnabledRelationshipsCondition.js","names":["c","_c","useAuth","useConfig","useEntityVisibility","React","filterRichTextCollections","collections","options","filter","slug","admin","enableRichTextRelationship","upload","visibleEntities","includes","uploads","Boolean","EnabledRelationshipsCondition","props","$","children","rest","t0","undefined","config","t1","user","t2","map","_temp","enabledCollectionSlugs","useState","length","t3","t4","cloneElement"],"sources":["../../../../../src/features/relationship/client/utils/EnabledRelationshipsCondition.tsx"],"sourcesContent":["'use client'\nimport type { ClientCollectionConfig, ClientUser, VisibleEntities } from 'payload'\n\nimport { useAuth, useConfig, useEntityVisibility } from '@payloadcms/ui'\nimport * as React from 'react'\n\ntype Options = {\n uploads: boolean\n user: ClientUser\n visibleEntities: VisibleEntities\n}\n\ntype FilteredCollectionsT = (\n collections: ClientCollectionConfig[],\n options?: Options,\n) => ClientCollectionConfig[]\n\nconst filterRichTextCollections: FilteredCollectionsT = (collections, options) => {\n return collections.filter(({ slug, admin: { enableRichTextRelationship }, upload }) => {\n if (!options?.visibleEntities.collections.includes(slug)) {\n return false\n }\n\n if (options?.uploads) {\n return enableRichTextRelationship && Boolean(upload) === true\n }\n\n return upload ? false : enableRichTextRelationship\n })\n}\n\nexport const EnabledRelationshipsCondition: React.FC<any> = (props) => {\n const { children, uploads = false, ...rest } = props\n const {\n config: { collections },\n } = useConfig()\n const { user } = useAuth()\n const { visibleEntities } = useEntityVisibility()\n\n const [enabledCollectionSlugs] = React.useState(() =>\n filterRichTextCollections(collections, { uploads, user: user!, visibleEntities }).map(\n ({ slug }) => slug,\n ),\n )\n\n if (!enabledCollectionSlugs.length) {\n return null\n }\n\n return React.cloneElement(children, { ...rest, enabledCollectionSlugs })\n}\n"],"mappings":"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","ignoreList":[]}
|