@lexical/react
Version:
This package provides Lexical components and hooks for React applications.
12 lines (10 loc) • 1.28 kB
JavaScript
/**
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
*/
;var b=require("@lexical/link"),c=require("@lexical/react/LexicalComposerContext"),l=require("@lexical/utils"),m=require("lexical"),n=require("react");
exports.LinkPlugin=function({validateUrl:d,attributes:g}){let [e]=c.useLexicalComposerContext();n.useEffect(()=>{if(!e.hasNodes([b.LinkNode]))throw Error("LinkPlugin: LinkNode not registered on editor");return l.mergeRegister(e.registerCommand(b.TOGGLE_LINK_COMMAND,a=>{if(null===a)return b.$toggleLink(a),!0;if("string"===typeof a)return void 0===d||d(a)?(b.$toggleLink(a,g),!0):!1;let {url:f,target:h,rel:k,title:p}=a;b.$toggleLink(f,{...g,rel:k,target:h,title:p});return!0},m.COMMAND_PRIORITY_LOW),
void 0!==d?e.registerCommand(m.PASTE_COMMAND,a=>{let f=m.$getSelection();if(!m.$isRangeSelection(f)||f.isCollapsed()||!l.objectKlassEquals(a,ClipboardEvent)||null===a.clipboardData)return!1;let h=a.clipboardData.getData("text");return d(h)?f.getNodes().some(k=>m.$isElementNode(k))?!1:(e.dispatchCommand(b.TOGGLE_LINK_COMMAND,{...g,url:h}),a.preventDefault(),!0):!1},m.COMMAND_PRIORITY_LOW):()=>{})},[e,d,g]);return null}