@lexical/link 0.51.1-nightly.20260925.0 → 0.52.0
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/LexicalLink.prod.js +1 -1
- package/package.json +7 -7
package/dist/LexicalLink.prod.js
CHANGED
|
@@ -6,4 +6,4 @@
|
|
|
6
6
|
*
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
|
-
import{AriaLiveRegionExtension as t}from"@lexical/a11y";import{effect as e}from"@lexical/extension/signals";import{namedSignals as n}from"@lexical/extension/namedSignals";import{getterTableOf as r,setterTableOf as i,setterDefaultOf as l,ElementNode as o,$getDocument as s,addClassNamesToElement as u,isHTMLAnchorElement as a,$copyNode as c,$isRangeSelection as g,$applyNodeReplacement as f,createCommand as d,$getSelection as _,$isNodeSelection as p,$findMatchingParent as h,nodeSchema as m,withField as x,stringValue as y,nullable as v,booleanValue as k,$normalizeSelection__EXPERIMENTAL as b,$setSelection as U,$getChildCaret as S,$isElementNode as T,$insertNodeToNearestRootAtCaret as L,$rewindSiblingCaret as C,$caretFromPoint as A,$normalizeCaret as N,$isSiblingCaret as R,$setPointFromCaret as P,shallowMergeConfig as O,mergeRegister as I,COMMAND_PRIORITY_EDITOR as w,PASTE_COMMAND as F,$isTextNode as D,COMMAND_PRIORITY_LOW as M,registerEventListeners as E,isDOMNode as z,getNearestEditorFromDOMNode as $,$getNearestNodeFromDOMNode as W,TextNode as K,$isLineBreakNode as B,$createTextNode as j}from"lexical";import{sel as J,$distributeInlineWrapper as Z,CoreImportExtension as H,DOMImportExtension as G}from"@lexical/html";import{objectKlassEquals as q}from"@lexical/utils";const Q=/^-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?$/;function V(t,e){if("number"==typeof t)return Number.isFinite(t)?t:e;if("string"!=typeof t||!Q.test(t))return e;const n=Number(t);return Number.isFinite(n)?n:e}function X(t,e,n,r,i){const l=V(t,e);return l>=n&&l<=r&&Number.isInteger(l)?l:e}function Y(t,e){t.__rel=e.__rel,t.__target=e.__target,t.__title=e.__title,t.__url=e.__url}const tt=t=>{const e=r(t,"format"),n=i(t,"format"),o=l(t,"format");return{exportJSON:function(t){const n=t.__textFormat,r=t.__textStyle,i=(0!==n||""!==r)&&t.shouldSerializeTextStyles();return{children:[],rel:t.__rel,target:t.__target,title:t.__title,url:t.__url,direction:t.__dir,format:e[t.__format],indent:t.__indent,textFormat:0!==n&&i?n:void 0,textStyle:""!==r&&i?r:void 0,type:t.__type,version:1}},exportCompactJSON:function(t){const n=t.__textFormat,r=t.__textStyle,i=(0!==n||""!==r)&&t.shouldSerializeTextStyles(),l={type:t.__type,children:[]},o=t.__rel;null!=o&&(l.rel=o);const s=t.__target;null!=s&&(l.target=s);const u=t.__title;null!=u&&(l.title=u);const a=t.__url;void 0!==a&&""!==a&&(l.url=a);const c=t.__dir;null!=c&&(l.direction=c);const g=e[t.__format];void 0!==g&&""!==g&&(l.format=g);const f=t.__indent;return void 0!==f&&0!==f&&(l.indent=f),void 0!==n&&0!==n&&i&&(l.textFormat=n),void 0!==r&&""!==r&&i&&(l.textStyle=r),l},updateFromJSON:function(t,e){const r=e.direction;t.__dir=null===r||"ltr"===r||"rtl"===r?r:null;const i=e.format;t.__format="string"==typeof i&&i in n?n[i]:o,t.__indent=X(e.indent,0,0,Infinity),t.__textFormat=V(e.textFormat,0);const l=e.textStyle;t.__textStyle="string"==typeof l?l:"";const s=e.rel;t.__rel="string"==typeof s&&""!==s?s:null;const u=e.target;t.__target="string"==typeof u&&""!==u?u:null;const a=e.title;t.__title="string"==typeof a&&""!==a?a:null;const c=e.url;return t.__url="string"==typeof c?c:"",t},afterCloneFrom:Y}};function et(t,e){t.__isUnlinked=e.__isUnlinked}const nt=t=>{const e=r(t,"format"),n=i(t,"format"),o=l(t,"format");return{exportJSON:function(t){const n=t.__textFormat,r=t.__textStyle,i=(0!==n||""!==r)&&t.shouldSerializeTextStyles();return{children:[],isUnlinked:t.__isUnlinked,rel:t.__rel,target:t.__target,title:t.__title,url:t.__url,direction:t.__dir,format:e[t.__format],indent:t.__indent,textFormat:0!==n&&i?n:void 0,textStyle:""!==r&&i?r:void 0,type:t.__type,version:1}},exportCompactJSON:function(t){const n=t.__textFormat,r=t.__textStyle,i=(0!==n||""!==r)&&t.shouldSerializeTextStyles(),l={type:t.__type,children:[]},o=t.__isUnlinked;void 0!==o&&!1!==o&&(l.isUnlinked=o);const s=t.__rel;null!=s&&(l.rel=s);const u=t.__target;null!=u&&(l.target=u);const a=t.__title;null!=a&&(l.title=a);const c=t.__url;void 0!==c&&""!==c&&(l.url=c);const g=t.__dir;null!=g&&(l.direction=g);const f=e[t.__format];void 0!==f&&""!==f&&(l.format=f);const d=t.__indent;return void 0!==d&&0!==d&&(l.indent=d),void 0!==n&&0!==n&&i&&(l.textFormat=n),void 0!==r&&""!==r&&i&&(l.textStyle=r),l},updateFromJSON:function(t,e){const r=e.direction;t.__dir=null===r||"ltr"===r||"rtl"===r?r:null;const i=e.format;t.__format="string"==typeof i&&i in n?n[i]:o,t.__indent=X(e.indent,0,0,Infinity),t.__textFormat=V(e.textFormat,0);const l=e.textStyle;t.__textStyle="string"==typeof l?l:"";const s=e.rel;t.__rel="string"==typeof s&&""!==s?s:null;const u=e.target;t.__target="string"==typeof u&&""!==u?u:null;const a=e.title;t.__title="string"==typeof a&&""!==a?a:null;const c=e.url;t.__url="string"==typeof c?c:"";const g=e.isUnlinked;return t.__isUnlinked="boolean"==typeof g&&g,t},afterCloneFrom:et}},rt=new Set(["http:","https:","mailto:","sms:","tel:"]),it=/* @__PURE__ */m()({rel:/* @__PURE__ */x(/* @__PURE__ */v(/* @__PURE__ */y(),{defaultAsNull:!0}),{field:"__rel"}),target:/* @__PURE__ */x(/* @__PURE__ */v(/* @__PURE__ */y(),{defaultAsNull:!0}),{field:"__target"}),title:/* @__PURE__ */x(/* @__PURE__ */v(/* @__PURE__ */y(),{defaultAsNull:!0}),{field:"__title"}),url:/* @__PURE__ */x(/* @__PURE__ */y(),{field:"__url",getter:"getURL",setter:"setURL"})});class lt extends o{__url;__target;__rel;__title;$config(){return this.config("link",{extends:o,generated:tt,importDOM:{a:()=>({conversion:at,priority:1})},json:it})}constructor(t="",e={},n){super(n);const{target:r=null,rel:i=null,title:l=null}=e;this.__url=t,this.__target=r,this.__rel=i,this.__title=l}createDOM(t){const e=s().createElement("a");return this.updateLinkDOM(null,e,t),u(e,t.theme.link),e}updateLinkDOM(t,e,n){if(a(e)){t&&t.__url===this.__url||(e.href=this.sanitizeUrl(this.__url));for(const n of["target","rel","title"]){const r=`__${n}`,i=this[r];t&&t[r]===i||(i?e[n]=i:e.removeAttribute(n))}}}updateDOM(t,e,n){return this.updateLinkDOM(t,e,n),!1}sanitizeUrl(t){const e=t;t=vt(t);try{const e=new URL(vt(t));if(!rt.has(e.protocol))return"about:blank"}catch{const t=e.replace(/[\u0000-\u001F\u007F\s]/g,"").match(/^([a-z][a-z0-9+.-]*):/i);if(null!=t&&!rt.has(`${t[1].toLowerCase()}:`))return"about:blank"}return t}getURL(){return this.getLatest().__url}setURL(t){const e=this.getWritable();return e.__url=t,e}getTarget(){return this.getLatest().__target}setTarget(t){const e=this.getWritable();return e.__target=t,e}getRel(){return this.getLatest().__rel}setRel(t){const e=this.getWritable();return e.__rel=t,e}getTitle(){return this.getLatest().__title}setTitle(t){const e=this.getWritable();return e.__title=t,e}insertNewAfter(t,e=!0){const n=c(this);return this.insertAfter(n,e),n}canInsertTextBefore(){return!1}canInsertTextAfter(){return!1}canBeEmpty(){return!1}isInline(){return!0}extractWithChild(t,e,n){if(!g(e))return!1;const r=e.anchor.getNode(),i=e.focus.getNode();return(this.is(r)||this.isParentOf(r))&&(this.is(i)||this.isParentOf(i))&&e.getTextContent().length>0}isEmailURI(){return this.getURL().startsWith("mailto:")}isWebSiteURI(){const t=this.getURL();return t.startsWith("https://")||t.startsWith("http://")}shouldMergeAdjacentLink(t){return this.getType()===t.getType()&&this.getURL()===t.getURL()&&this.getTarget()===t.getTarget()&&this.getRel()===t.getRel()&&this.getTitle()===t.getTitle()}}function ot(t){const e=A(t,"next");return[e,e.getFlipped()]}function st(t,e){for(const n of e)if(n.origin.isAttached()){const e=N(n);return void P(t,e)}}function ut(t){const e=_();let n=null,r=null;function i(){g(e)&&(st(e.anchor,n),st(e.focus,r),b(e))}g(e)&&(n=ot(e.anchor),r=ot(e.focus));let l=!1;for(const e of S(t,"next")){const n=e.origin;if(T(n)&&!n.isInline()){const r=n.getChildren();if(r.length>0){const e=c(t);e.append(...r),n.append(e),l=!0}L(n,C(e),{$shouldSplit:()=>!1})}}function o(t,e,n){const[r,i]=t,l=t=>R(t)&&t.origin.is(e);if(!l(r)&&!l(i))return t;const o=N(S(n,"next"));return[o,o.getFlipped()]}if(t.isAttached()){const e=t.getPreviousSibling();if(gt(e)&&e.shouldMergeAdjacentLink(t))return n&&(n=o(n,e,t)),r&&(r=o(r,e,t)),e.append(...t.getChildren()),t.remove(),void i();const s=t.getNextSibling();gt(s)&&t.shouldMergeAdjacentLink(s)&&(n&&(n=o(n,t,s)),r&&(r=o(r,t,s)),t.append(...s.getChildren()),s.remove(),l=!0)}if(l){if(!t.canBeEmpty()&&t.isEmpty()){const e=t.getParent();t.remove(),e&&e.isEmpty()&&e.remove()}i()}}function at(t){let e=null;if(a(t)){const n=t.textContent;(null!==n&&""!==n||t.children.length>0)&&(e=ct(t.getAttribute("href")||"",{rel:t.getAttribute("rel"),target:t.getAttribute("target"),title:t.getAttribute("title")}))}return{node:e}}function ct(t="",e){return f(new lt(t,e))}function gt(t){return t instanceof lt}const ft=/* @__PURE__ */m()({isUnlinked:/* @__PURE__ */x(/* @__PURE__ */k(),{field:"__isUnlinked"})});class dt extends lt{__isUnlinked;constructor(t="",e={},n){super(t,e,n),this.__isUnlinked=void 0!==e.isUnlinked&&null!==e.isUnlinked&&e.isUnlinked}$config(){return this.config("autolink",{extends:lt,generated:nt,json:ft})}shouldMergeAdjacentLink(t){return!1}getIsUnlinked(){return this.getLatest().__isUnlinked}setIsUnlinked(t){const e=this.getWritable();return e.__isUnlinked=t,e}createDOM(t){return this.__isUnlinked?s().createElement("span"):super.createDOM(t)}updateDOM(t,e,n){return super.updateDOM(t,e,n)||t.__isUnlinked!==this.__isUnlinked}}function _t(t="",e){return f(new dt(t,e))}function pt(t){return t instanceof dt}const ht=/* @__PURE__ */d("TOGGLE_LINK_COMMAND");function mt(t,e){if("element"===t.type){const n=t.getNode();return T(n)||function(t,...e){const n=new URL("https://lexical.dev/docs/error"),r=new URLSearchParams;r.append("code",t);for(const t of e)r.append("v",t);throw n.search=r.toString(),Error(`Minified Lexical error #${t}; visit ${n.toString()} for the full message or use the non-minified dev environment for full errors and additional helpful warnings.`)}(252),n.getChildren()[t.offset+e]||null}return null}function xt(t,e={}){let n;if(t&&"object"==typeof t){const{url:r,...i}=t;n=r,e={...i,...e}}else n=t;const{target:r,title:i}=e,l=void 0===e.rel?"noreferrer":e.rel,o=_();if(null===o||!g(o)&&!p(o))return;if(p(o)){const t=o.getNodes();if(0===t.length)return;return void t.forEach(t=>{if(null===n){const e=h(t,t=>!pt(t)&>(t));e&&(e.insertBefore(t),0===e.getChildren().length&&e.remove())}else{const e=h(t,t=>!pt(t)&>(t));if(e)e.setURL(n),void 0!==r&&e.setTarget(r),void 0!==l&&e.setRel(l),void 0!==i&&e.setTitle(i);else{const e=ct(n,{rel:l,target:r,title:i});t.insertBefore(e),e.append(t)}}})}if(o.isCollapsed()&&null===n)for(const t of o.getNodes()){const e=h(t,t=>!pt(t)&>(t));return void(null!==e&&(e.getParentOrThrow().splice(e.getIndexWithinParent(),0,e.getChildren()),e.remove()))}const s=o.extract();if(null===n){const t=new Set;return void s.forEach(e=>{const n=h(e,t=>!pt(t)&>(t));if(null!==n){const e=n.getKey();if(t.has(e))return;!function(t,e){const n=new Set(e.filter(e=>t.isParentOf(e)).map(t=>t.getKey())),r=t.getChildren(),i=r=>n.has(r.getKey())||T(r)&&e.some(e=>t.isParentOf(e)&&r.isParentOf(e)),l=r.filter(i);if(l.length===r.length)return r.forEach(e=>t.insertBefore(e)),void t.remove();const o=r.findIndex(i),s=r.findLastIndex(i),u=0===o,a=s===r.length-1;if(u)l.forEach(e=>t.insertBefore(e));else if(a)for(let e=l.length-1;e>=0;e--)t.insertAfter(l[e]);else{for(let e=l.length-1;e>=0;e--)t.insertAfter(l[e]);const e=r.slice(s+1);if(e.length>0){const n=c(t);l[l.length-1].insertAfter(n),e.forEach(t=>n.append(t))}}}(n,s),t.add(e)}})}const u=new Set,a=t=>{u.has(t.getKey())||(u.add(t.getKey()),t.setURL(n),void 0!==r&&t.setTarget(r),void 0!==l&&t.setRel(l),void 0!==i&&t.setTitle(i))};if(1===s.length){const t=s[0],e=h(t,gt);if(null!==e)return a(e)}!function(t){const e=_();if(!g(e))return t();const n=b(e),r=n.isBackward(),i=mt(n.anchor,r?-1:0),l=mt(n.focus,r?0:-1);t();if(i||l){const t=_();if(g(t)){const e=t.clone();if(i){const t=i.getParent();t&&e.anchor.set(t.getKey(),i.getIndexWithinParent()+(r?1:0),"element")}if(l){const t=l.getParent();t&&e.focus.set(t.getKey(),l.getIndexWithinParent()+(r?0:1),"element")}U(b(e))}}}(()=>{let t=null;for(const e of s){if(!e.isAttached())continue;const o=h(e,gt);if(o){a(o);continue}if(T(e)){if(!e.isInline())continue;if(gt(e)){if(!(pt(e)||null!==t&&t.getParentOrThrow().isParentOf(e))){a(e),t=e;continue}for(const t of e.getChildren())e.insertBefore(t);e.remove();continue}}const s=e.getPreviousSibling();gt(s)&&s.is(t)?s.append(e):(t=ct(n,{rel:l,target:r,title:i}),e.insertAfter(t),t.append(e))}})}const yt=/^\+?[0-9\s()-]{5,}$/;function vt(t){return t.match(/^[a-z][a-z0-9+.-]*:/i)||t.match(/^[/#.]/)?t:t.includes("@")?`mailto:${t}`:yt.test(t)?`tel:${t}`:`https://${t}`}const kt={build:(t,e)=>n(e),config:{created:"Link",createdMany:"%s links",destroyed:"Link removed",destroyedMany:"%s links removed",disabled:!1},dependencies:[t],name:"@lexical/link/AutoLinkAnnounce",register(n,r,i){const{created:l,createdMany:o,destroyed:s,destroyedMany:u,disabled:a}=i.getOutput(),{announce:c}=i.getDependency(t).output;return e(()=>a.value?void 0:n.registerMutationListener(dt,t=>{let e=0,n=0;for(const[,r]of t)"created"===r?e++:"destroyed"===r&&n++;e>0&&0===n?c(1===e?l.peek():o.peek().replace("%s",String(e))):n>0&&0===e&&c(1===n?s.peek():u.peek().replace("%s",String(n)))},{skipInitialization:!0}))}},bt=[{$import:(t,e)=>{if(!e.textContent&&0===e.children.length)return[];const n=e.getAttribute("href")||"",r={rel:e.getAttribute("rel"),target:e.getAttribute("target"),title:e.getAttribute("title")};return Z(t.$importChildren(e),()=>ct(n,r))},match:/* @__PURE__ */J.tag("a"),name:"@lexical/link/a"}];function Ut(t,n){return I(t.registerNodeTransform(lt,ut),t.registerCommand(ht,t=>{const e=n.validateUrl.peek(),r=n.attributes.peek();if(null===t)return xt(null),!0;if("string"==typeof t)return!(void 0!==e&&!e(t)||(xt(t,r),0));{const{url:n,...i}=t;return!(void 0!==e&&!e(n)||(xt(n,{...r,...i}),0))}},w),e(()=>{const e=n.validateUrl.value;if(!e)return;const r=n.attributes.value;return t.registerCommand(F,n=>{const i=_();if(!g(i)||i.isCollapsed()||!q(n,ClipboardEvent))return!1;if(null===n.clipboardData)return!1;const l=n.clipboardData.getData("text");return!!e(l)&&(!i.getNodes().some(t=>T(t)||D(t)&&!t.isSimpleText())&&(t.dispatchCommand(ht,{...r,url:l}),n.preventDefault(),!0))},M)}))}const St={build:(t,e,r)=>n(e),config:{attributes:void 0,validateUrl:void 0},dependencies:[H,[G,{rules:bt}]],mergeConfig(t,e){const n=O(t,e);return t.attributes&&(n.attributes=O(t.attributes,n.attributes)),n},name:"@lexical/link/Link",nodes:()=>[lt],register:(t,e,n)=>Ut(t,n.getOutput())},Tt={dependencies:[St],name:"@lexical/link/Import"};function Lt(t,e,n={}){const r=n=>{const r=1===n.button;if("auxclick"===n.type&&!r)return;const i=n.target;if(!z(i))return;const l=$(i);if(null===l)return;let o=null,s=null,u=!1;if(l.update(()=>{const t=W(i);if(null!==t){const n=h(t,T);if(!e.disabled.peek())if(gt(n))u=pt(n)&&n.getIsUnlinked(),o=n.sanitizeUrl(n.getURL()),s=n.getTarget();else{const t=function(t,e){let n=t;for(;null!=n;){if(e(n))return n;n=n.parentNode}return null}(i,a);null!==t&&(o=t.href,s=t.target)}}}),null===o||""===o||u)return;const c=t.read("latest",_);!g(c)||c.isCollapsed()?(window.open(o,e.newTab.peek()||r||n.metaKey||n.ctrlKey||"_blank"===s?"_blank":"_self"),n.preventDefault()):n.preventDefault()};return t.registerRootListener(t=>{if(t)return E(t,{auxclick:r,click:r},n)})}const Ct={build:(t,e,r)=>n(e),config:{disabled:!1,newTab:!1},dependencies:[St],name:"@lexical/link/ClickableLink",register:(t,e,n)=>Lt(t,n.getOutput())};function At(t,e=t=>t){return n=>{const r=t.exec(n);return null===r?null:{index:r.index,length:r[0].length,text:r[0],url:e(r[0])}}}const Nt=/((https?:\/\/(www\.)?)|(www\.))[-\p{L}\p{N}@:%._+~#=]{1,256}\.[\p{L}\p{N}]{1,6}(?:[-\p{L}\p{N}()@:%_+.~#?&//=]*[\p{L}\p{N}()@_~#?&//=])?/u,Rt=t=>{const e=Nt.exec(t);if(null===e)return null;let n=e[0],r=0;for(const t of n)"("===t?r++:")"===t&&r--;for(;r<0&&n.endsWith(")");)n=n.slice(0,-1),r++;return{index:e.index,length:n.length,text:n,url:n.startsWith("http")?n:`https://${n}`}},Pt=/* @__PURE__ */At(/(([^<>()[\]\\.,;:\s@"]{1,64}(\.[^<>()[\]\\.,;:\s@"]{1,64}){0,63})|(".{1,255}"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]{1,63}\.){1,127}[a-zA-Z]{2,63}))/,t=>`mailto:${t}`);function Ot(t,e){for(let n=0;n<e.length;n++){const r=e[n](t);if(r)return r}return null}const It=/[.,;\s]/;function wt(t,e){return e.test(t)}function Ft(t,e){return wt(t[t.length-1],e)}function Dt(t,e){return wt(t[0],e)}function Mt(t,e){let n=t.getPreviousSibling();return T(n)&&(n=n.getLastDescendant()),null===n||B(n)||D(n)&&Ft(n.getTextContent(),e)}function Et(t,e){let n=t.getNextSibling();return T(n)&&(n=n.getFirstDescendant()),null===n||B(n)||D(n)&&Dt(n.getTextContent(),e)}function zt(t,e,n,r,i){return!!(t>0?wt(r[t-1],n):Mt(i[0],n))&&(e<r.length?wt(r[e],n):Et(i[i.length-1],n))}function $t(t,e,n){const r=[],i=[],l=[];let o=0,s=0;const u=[...t];for(;u.length>0;){const t=u[0],a=t.getTextContent().length,c=s;s+a<=e?(r.push(t),o+=a):c>=n?l.push(t):i.push(t),s+=a,u.shift()}return[o,r,i,l]}function Wt(t,e,n,r){const i=_t(r.url,r.attributes);if(1===t.length){let l,o=t[0];0===e?[l,o]=o.splitText(n):[,l,o]=o.splitText(e,n);const s=j(r.text);return s.setFormat(l.getFormat()),s.setDetail(l.getDetail()),s.setStyle(l.getStyle()),i.append(s),l.replace(i),o}if(t.length>1){const r=t[0];let l,o=r.getTextContent().length;0===e?l=r:[,l]=r.splitText(e);const s=[];let u;for(let e=1;e<t.length;e++){const r=t[e],i=r.getTextContent().length,l=o;if(l<n)if(o+i<=n)s.push(r);else{const[t,e]=r.splitText(n-l);s.push(t),u=e}o+=i}const a=_(),c=a?a.getNodes().find(D):void 0,f=j(l.getTextContent());return f.setFormat(l.getFormat()),f.setDetail(l.getDetail()),f.setStyle(l.getStyle()),i.append(f,...s),c&&c===l&&(g(a)?f.select(a.anchor.offset,a.focus.offset):p(a)&&f.select(0,f.getTextContent().length)),l.replace(i),u}}function Kt(t,e,n,r){const i=t.getChildren(),l=i.length;for(let e=0;e<l;e++){const r=i[e];if(!D(r)||!r.isSimpleText())return Bt(t),void n(null,t.getURL())}const o=t.getTextContent(),s=Ot(o,e);if(null===s||s.text!==o)return Bt(t),void n(null,t.getURL());if(!Mt(t,r)||!Et(t,r))return Bt(t),void n(null,t.getURL());const u=t.getURL();u!==s.url&&(t.setURL(s.url),n(s.url,u)),s.attributes&&(t.getRel()!==s.attributes.rel&&t.setRel(s.attributes.rel||null),t.getTarget()!==s.attributes.target&&t.setTarget(s.attributes.target||null),t.getTitle()!==s.attributes.title&&t.setTitle(s.attributes.title||null))}function Bt(t){const e=t.getChildren();for(let n=e.length-1;n>=0;n--)t.insertAfter(e[n]);return t.remove(),e.map(t=>t.getLatest())}const jt={changeHandlers:[],excludeParents:[],matchers:[],separatorRegex:It};function Jt(t,e=jt){const{matchers:n,changeHandlers:r,excludeParents:i,separatorRegex:l=It}=e,o=(t,e)=>{for(const n of r)n(t,e)};return I(t.registerNodeTransform(K,t=>{const e=t.getParentOrThrow(),r=t.getPreviousSibling();if(pt(e))Kt(e,n,o,l);else if(!gt(e)&&!i.some(t=>t(e))){if(t.isSimpleText()&&(Dt(t.getTextContent(),l)||!pt(r))){const e=function(t){const e=[t];let n=t.getNextSibling();for(;null!==n&&D(n)&&n.isSimpleText()&&(e.push(n),!/[\s]/.test(n.getTextContent()));)n=n.getNextSibling();return e}(t);!function(t,e,n,r){for(const e of t){const t=e.getParent();if(pt(t)&&!t.getIsUnlinked())return}let i=[...t];const l=i.map(t=>t.getTextContent()).join("");let o,s=l,u=0;for(;(o=Ot(s,e))&&null!==o;){const t=o.index,e=t+o.length;if(zt(u+t,u+e,r,l,i)){const[r,,l,a]=$t(i,u+t,u+e);let c=!1;for(const t of l){const e=t.getParent();if(pt(e)&&!e.getIsUnlinked()){c=!0;break}}if(c){u+=e,s=s.substring(e);continue}const g=Wt(l,u+t-r,u+e-r,o);i=g?[g,...a]:a,n(o.url,null),u=0}else u+=e;s=s.substring(e)}}(e,n,o,l)}!function(t,e,n,r){const i=t.getParent(),l=t.getPreviousSibling(),o=t.getNextSibling(),s=t.getTextContent();if(!pt(i)||i.getIsUnlinked()){if(pt(l)&&!l.getIsUnlinked()&&l.is(t.getPreviousSibling())&&t.getParent()===l.getParent()){if(!Dt(s,r))return Bt(l),void n(null,l.getURL());if(u=s,l.isEmailURI()?/^\.[a-zA-Z]{2,}/.test(u):/^\.[a-zA-Z0-9]{1,}/.test(u)){const i=l.getTextContent()+s,o=Ot(i,e);null!==o&&o.text===i&&(l.append(t),Kt(l,e,n,r),n(null,l.getURL()))}}var u;!pt(o)||o.getIsUnlinked()||Ft(s,r)||o.is(t.getNextSibling())&&t.getParent()===o.getParent()&&(Bt(o),n(null,o.getURL()))}}(t,n,o,l)}}),t.registerCommand(ht,t=>{const e=_();return!(null!==t||!g(e))&&(e.extract().forEach(t=>{const e=t.getParent();pt(e)&&(e.setIsUnlinked(!e.getIsUnlinked()),e.markDirty())}),!1)},M))}const Zt={config:jt,dependencies:[kt,St],mergeConfig(t,e){const n=O(t,e);for(const r of["matchers","changeHandlers","excludeParents"]){const i=e[r];Array.isArray(i)&&(n[r]=[...t[r],...i])}return n},name:"@lexical/link/AutoLink",nodes:[dt],register:Jt};export{_t as $createAutoLinkNode,ct as $createLinkNode,pt as $isAutoLinkNode,gt as $isLinkNode,xt as $toggleLink,kt as AutoLinkAnnounceExtension,Zt as AutoLinkExtension,dt as AutoLinkNode,Ct as ClickableLinkExtension,St as LinkExtension,Tt as LinkImportExtension,bt as LinkImportRules,lt as LinkNode,ht as TOGGLE_LINK_COMMAND,Pt as autoLinkEmailMatcher,Rt as autoLinkUrlMatcher,At as createLinkMatcherWithRegExp,vt as formatUrl,Jt as registerAutoLink,Lt as registerClickableLink,Ut as registerLink};
|
|
9
|
+
import{AriaLiveRegionExtension as t}from"@lexical/a11y";import{effect as e}from"@lexical/extension/signals";import{namedSignals as n}from"@lexical/extension/namedSignals";import{getterTableOf as r,setterTableOf as i,setterDefaultOf as l,ElementNode as o,$getDocument as s,addClassNamesToElement as u,isHTMLAnchorElement as a,$copyNode as c,$isRangeSelection as g,$applyNodeReplacement as f,createCommand as d,$getSelection as _,$isNodeSelection as p,$findMatchingParent as h,nodeSchema as m,withField as x,stringValue as y,nullable as v,booleanValue as k,$normalizeSelection__EXPERIMENTAL as b,$setSelection as U,$getChildCaret as S,$isElementNode as T,$insertNodeToNearestRootAtCaret as L,$rewindSiblingCaret as C,$caretFromPoint as A,$normalizeCaret as N,$isSiblingCaret as R,$setPointFromCaret as P,shallowMergeConfig as O,mergeRegister as I,COMMAND_PRIORITY_EDITOR as w,PASTE_COMMAND as F,$isTextNode as D,COMMAND_PRIORITY_LOW as M,registerEventListeners as E,isDOMNode as z,getNearestEditorFromDOMNode as $,$getNearestNodeFromDOMNode as W,TextNode as K,$isLineBreakNode as B,$createTextNode as j}from"lexical";import{sel as J,$distributeInlineWrapper as Z,CoreImportExtension as H,DOMImportExtension as G}from"@lexical/html";import{objectKlassEquals as q}from"@lexical/utils";const Q=/^-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?$/;function V(t,e){if("number"==typeof t)return Number.isFinite(t)?t:e;if("string"!=typeof t||!Q.test(t))return e;const n=Number(t);return Number.isFinite(n)?n:e}function X(t,e,n,r,i){const l=V(t,e);return l>=n&&l<=r&&Number.isInteger(l)?l:e}function Y(t,e){t.__rel=e.__rel,t.__target=e.__target,t.__title=e.__title,t.__url=e.__url}const tt=t=>{const e=r(t,"format"),n=i(t,"format"),o=l(t,"format");return{exportJSON:function(t){const n=t.__textFormat,r=t.__textStyle,i=(0!==n||""!==r)&&t.shouldSerializeTextStyles();return{children:[],rel:t.__rel,target:t.__target,title:t.__title,url:t.__url,direction:t.__dir,format:e[t.__format],indent:t.__indent,textFormat:0!==n&&i?n:void 0,textStyle:""!==r&&i?r:void 0,type:t.__type,version:1}},exportCompactJSON:function(t){const n=t.__textFormat,r=t.__textStyle,i=(0!==n||""!==r)&&t.shouldSerializeTextStyles(),l={type:t.__type,children:[]},o=t.__rel;null!=o&&(l.rel=o);const s=t.__target;null!=s&&(l.target=s);const u=t.__title;null!=u&&(l.title=u);const a=t.__url;void 0!==a&&""!==a&&(l.url=a);const c=t.__dir;null!=c&&(l.direction=c);const g=e[t.__format];void 0!==g&&""!==g&&(l.format=g);const f=t.__indent;return void 0!==f&&0!==f&&(l.indent=f),void 0!==n&&0!==n&&i&&(l.textFormat=n),void 0!==r&&""!==r&&i&&(l.textStyle=r),l},updateFromJSON:function(t,e){const r=e.direction;t.__dir=null===r||"ltr"===r||"rtl"===r?r:null;const i=e.format;t.__format="string"==typeof i&&i in n?n[i]:o,t.__indent=X(e.indent,0,0,Infinity),t.__textFormat=V(e.textFormat,0);const l=e.textStyle;t.__textStyle="string"==typeof l?l:"";const s=e.rel;t.__rel="string"==typeof s&&""!==s?s:null;const u=e.target;t.__target="string"==typeof u&&""!==u?u:null;const a=e.title;t.__title="string"==typeof a&&""!==a?a:null;const c=e.url;return t.__url="string"==typeof c?c:"",t},afterCloneFrom:Y}};function et(t,e){t.__isUnlinked=e.__isUnlinked}const nt=t=>{const e=r(t,"format"),n=i(t,"format"),o=l(t,"format");return{exportJSON:function(t){const n=t.__textFormat,r=t.__textStyle,i=(0!==n||""!==r)&&t.shouldSerializeTextStyles();return{children:[],isUnlinked:t.__isUnlinked,rel:t.__rel,target:t.__target,title:t.__title,url:t.__url,direction:t.__dir,format:e[t.__format],indent:t.__indent,textFormat:0!==n&&i?n:void 0,textStyle:""!==r&&i?r:void 0,type:t.__type,version:1}},exportCompactJSON:function(t){const n=t.__textFormat,r=t.__textStyle,i=(0!==n||""!==r)&&t.shouldSerializeTextStyles(),l={type:t.__type,children:[]},o=t.__isUnlinked;void 0!==o&&!1!==o&&(l.isUnlinked=o);const s=t.__rel;null!=s&&(l.rel=s);const u=t.__target;null!=u&&(l.target=u);const a=t.__title;null!=a&&(l.title=a);const c=t.__url;void 0!==c&&""!==c&&(l.url=c);const g=t.__dir;null!=g&&(l.direction=g);const f=e[t.__format];void 0!==f&&""!==f&&(l.format=f);const d=t.__indent;return void 0!==d&&0!==d&&(l.indent=d),void 0!==n&&0!==n&&i&&(l.textFormat=n),void 0!==r&&""!==r&&i&&(l.textStyle=r),l},updateFromJSON:function(t,e){const r=e.direction;t.__dir=null===r||"ltr"===r||"rtl"===r?r:null;const i=e.format;t.__format="string"==typeof i&&i in n?n[i]:o,t.__indent=X(e.indent,0,0,Infinity),t.__textFormat=V(e.textFormat,0);const l=e.textStyle;t.__textStyle="string"==typeof l?l:"";const s=e.rel;t.__rel="string"==typeof s&&""!==s?s:null;const u=e.target;t.__target="string"==typeof u&&""!==u?u:null;const a=e.title;t.__title="string"==typeof a&&""!==a?a:null;const c=e.url;t.__url="string"==typeof c?c:"";const g=e.isUnlinked;return t.__isUnlinked="boolean"==typeof g&&g,t},afterCloneFrom:et}},rt=new Set(["http:","https:","mailto:","sms:","tel:"]),it=/* @__PURE__ */m()({rel:/* @__PURE__ */x(/* @__PURE__ */v(/* @__PURE__ */y(),{defaultAsNull:!0}),{field:"__rel"}),target:/* @__PURE__ */x(/* @__PURE__ */v(/* @__PURE__ */y(),{defaultAsNull:!0}),{field:"__target"}),title:/* @__PURE__ */x(/* @__PURE__ */v(/* @__PURE__ */y(),{defaultAsNull:!0}),{field:"__title"}),url:/* @__PURE__ */x(/* @__PURE__ */y(),{field:"__url",getter:"getURL",setter:"setURL"})});class lt extends o{__url;__target;__rel;__title;$config(){return this.config("link",{extends:o,generated:tt,importDOM:{a:()=>({conversion:at,priority:1})},json:it})}constructor(t="",e={},n){super(n);const{target:r=null,rel:i=null,title:l=null}=e;this.__url=t,this.__target=r,this.__rel=i,this.__title=l}createDOM(t){const e=s().createElement("a");return this.updateLinkDOM(null,e,t),u(e,t.theme.link),e}updateLinkDOM(t,e,n){if(a(e)){t&&t.__url===this.__url||(e.href=this.sanitizeUrl(this.__url));for(const n of["target","rel","title"]){const r=`__${n}`,i=this[r];t&&t[r]===i||(i?e[n]=i:e.removeAttribute(n))}}}updateDOM(t,e,n){return this.updateLinkDOM(t,e,n),!1}sanitizeUrl(t){const e=t;t=vt(t);try{const e=new URL(vt(t));if(!rt.has(e.protocol))return"about:blank"}catch{const t=e.replace(/[\u0000-\u001F\u007F\s]/g,"").match(/^([a-z][a-z0-9+.-]*):/i);if(null!=t&&!rt.has(`${t[1].toLowerCase()}:`))return"about:blank"}return t}getURL(){return this.getLatest().__url}setURL(t){const e=this.getWritable();return e.__url=t,e}getTarget(){return this.getLatest().__target}setTarget(t){const e=this.getWritable();return e.__target=t,e}getRel(){return this.getLatest().__rel}setRel(t){const e=this.getWritable();return e.__rel=t,e}getTitle(){return this.getLatest().__title}setTitle(t){const e=this.getWritable();return e.__title=t,e}insertNewAfter(t,e=!0){const n=c(this);return this.insertAfter(n,e),n}canInsertTextBefore(){return!1}canInsertTextAfter(){return!1}canBeEmpty(){return!1}isInline(){return!0}extractWithChild(t,e,n){if(!g(e))return!1;const r=e.anchor.getNode(),i=e.focus.getNode();return(this.is(r)||this.isParentOf(r))&&(this.is(i)||this.isParentOf(i))&&e.getTextContent().length>0}isEmailURI(){return this.getURL().startsWith("mailto:")}isWebSiteURI(){const t=this.getURL();return t.startsWith("https://")||t.startsWith("http://")}shouldMergeAdjacentLink(t){return this.getType()===t.getType()&&this.getURL()===t.getURL()&&this.getTarget()===t.getTarget()&&this.getRel()===t.getRel()&&this.getTitle()===t.getTitle()}}function ot(t){const e=A(t,"next");return[e,e.getFlipped()]}function st(t,e){for(const n of e)if(n.origin.isAttached()){const e=N(n);return void P(t,e)}}function ut(t){const e=_();let n=null,r=null;function i(){g(e)&&(st(e.anchor,n),st(e.focus,r),b(e))}g(e)&&(n=ot(e.anchor),r=ot(e.focus));let l=!1;for(const e of S(t,"next")){const n=e.origin;if(T(n)&&!n.isInline()){const r=n.getChildren();if(r.length>0){const e=c(t);e.append(...r),n.append(e),l=!0}L(n,C(e),{$shouldSplit:()=>!1})}}function o(t,e,n){const[r,i]=t,l=t=>R(t)&&t.origin.is(e);if(!l(r)&&!l(i))return t;const o=N(S(n,"next"));return[o,o.getFlipped()]}if(t.isAttached()){const e=t.getPreviousSibling();if(gt(e)&&e.shouldMergeAdjacentLink(t))return n&&(n=o(n,e,t)),r&&(r=o(r,e,t)),e.append(...t.getChildren()),t.remove(),void i();const s=t.getNextSibling();gt(s)&&t.shouldMergeAdjacentLink(s)&&(n&&(n=o(n,t,s)),r&&(r=o(r,t,s)),t.append(...s.getChildren()),s.remove(),l=!0)}if(l){if(!t.canBeEmpty()&&t.isEmpty()){const e=t.getParent();t.remove(),e&&e.isEmpty()&&e.remove()}i()}}function at(t){let e=null;if(a(t)){const n=t.textContent;(null!==n&&""!==n||t.children.length>0)&&(e=ct(t.getAttribute("href")||"",{rel:t.getAttribute("rel"),target:t.getAttribute("target"),title:t.getAttribute("title")}))}return{node:e}}function ct(t="",e){return f(new lt(t,e))}function gt(t){return t instanceof lt}const ft=/* @__PURE__ */m()({isUnlinked:/* @__PURE__ */x(/* @__PURE__ */k(),{field:"__isUnlinked"})});class dt extends lt{__isUnlinked;constructor(t="",e={},n){super(t,e,n),this.__isUnlinked=void 0!==e.isUnlinked&&null!==e.isUnlinked&&e.isUnlinked}$config(){return this.config("autolink",{extends:lt,generated:nt,json:ft})}shouldMergeAdjacentLink(t){return!1}getIsUnlinked(){return this.getLatest().__isUnlinked}setIsUnlinked(t){const e=this.getWritable();return e.__isUnlinked=t,e}createDOM(t){return this.__isUnlinked?s().createElement("span"):super.createDOM(t)}updateDOM(t,e,n){return super.updateDOM(t,e,n)||t.__isUnlinked!==this.__isUnlinked}}function _t(t="",e){return f(new dt(t,e))}function pt(t){return t instanceof dt}const ht=/* @__PURE__ */d("TOGGLE_LINK_COMMAND");function mt(t,e){if("element"===t.type){const n=t.getNode();return T(n)||function(t,...e){throw function(t,...e){const n=new URL("https://lexical.dev/docs/error"),r=new URLSearchParams;r.append("code",t);for(const t of e)r.append("v",t);return n.search=r.toString(),new Error(`Minified Lexical error #${t}; visit ${n.toString()} for the full message or use the non-minified dev environment for full errors and additional helpful warnings.`)}(t,...e)}(252),n.getChildren()[t.offset+e]||null}return null}function xt(t,e={}){let n;if(t&&"object"==typeof t){const{url:r,...i}=t;n=r,e={...i,...e}}else n=t;const{target:r,title:i}=e,l=void 0===e.rel?"noreferrer":e.rel,o=_();if(null===o||!g(o)&&!p(o))return;if(p(o)){const t=o.getNodes();if(0===t.length)return;return void t.forEach(t=>{if(null===n){const e=h(t,t=>!pt(t)&>(t));e&&(e.insertBefore(t),0===e.getChildren().length&&e.remove())}else{const e=h(t,t=>!pt(t)&>(t));if(e)e.setURL(n),void 0!==r&&e.setTarget(r),void 0!==l&&e.setRel(l),void 0!==i&&e.setTitle(i);else{const e=ct(n,{rel:l,target:r,title:i});t.insertBefore(e),e.append(t)}}})}if(o.isCollapsed()&&null===n)for(const t of o.getNodes()){const e=h(t,t=>!pt(t)&>(t));return void(null!==e&&(e.getParentOrThrow().splice(e.getIndexWithinParent(),0,e.getChildren()),e.remove()))}const s=o.extract();if(null===n){const t=new Set;return void s.forEach(e=>{const n=h(e,t=>!pt(t)&>(t));if(null!==n){const e=n.getKey();if(t.has(e))return;!function(t,e){const n=new Set(e.filter(e=>t.isParentOf(e)).map(t=>t.getKey())),r=t.getChildren(),i=r=>n.has(r.getKey())||T(r)&&e.some(e=>t.isParentOf(e)&&r.isParentOf(e)),l=r.filter(i);if(l.length===r.length)return r.forEach(e=>t.insertBefore(e)),void t.remove();const o=r.findIndex(i),s=r.findLastIndex(i),u=0===o,a=s===r.length-1;if(u)l.forEach(e=>t.insertBefore(e));else if(a)for(let e=l.length-1;e>=0;e--)t.insertAfter(l[e]);else{for(let e=l.length-1;e>=0;e--)t.insertAfter(l[e]);const e=r.slice(s+1);if(e.length>0){const n=c(t);l[l.length-1].insertAfter(n),e.forEach(t=>n.append(t))}}}(n,s),t.add(e)}})}const u=new Set,a=t=>{u.has(t.getKey())||(u.add(t.getKey()),t.setURL(n),void 0!==r&&t.setTarget(r),void 0!==l&&t.setRel(l),void 0!==i&&t.setTitle(i))};if(1===s.length){const t=s[0],e=h(t,gt);if(null!==e)return a(e)}!function(t){const e=_();if(!g(e))return t();const n=b(e),r=n.isBackward(),i=mt(n.anchor,r?-1:0),l=mt(n.focus,r?0:-1);t();if(i||l){const t=_();if(g(t)){const e=t.clone();if(i){const t=i.getParent();t&&e.anchor.set(t.getKey(),i.getIndexWithinParent()+(r?1:0),"element")}if(l){const t=l.getParent();t&&e.focus.set(t.getKey(),l.getIndexWithinParent()+(r?0:1),"element")}U(b(e))}}}(()=>{let t=null;for(const e of s){if(!e.isAttached())continue;const o=h(e,gt);if(o){a(o);continue}if(T(e)){if(!e.isInline())continue;if(gt(e)){if(!(pt(e)||null!==t&&t.getParentOrThrow().isParentOf(e))){a(e),t=e;continue}for(const t of e.getChildren())e.insertBefore(t);e.remove();continue}}const s=e.getPreviousSibling();gt(s)&&s.is(t)?s.append(e):(t=ct(n,{rel:l,target:r,title:i}),e.insertAfter(t),t.append(e))}})}const yt=/^\+?[0-9\s()-]{5,}$/;function vt(t){return t.match(/^[a-z][a-z0-9+.-]*:/i)||t.match(/^[/#.]/)?t:t.includes("@")?`mailto:${t}`:yt.test(t)?`tel:${t}`:`https://${t}`}const kt={build:(t,e)=>n(e),config:{created:"Link",createdMany:"%s links",destroyed:"Link removed",destroyedMany:"%s links removed",disabled:!1},dependencies:[t],name:"@lexical/link/AutoLinkAnnounce",register(n,r,i){const{created:l,createdMany:o,destroyed:s,destroyedMany:u,disabled:a}=i.getOutput(),{announce:c}=i.getDependency(t).output;return e(()=>a.value?void 0:n.registerMutationListener(dt,t=>{let e=0,n=0;for(const[,r]of t)"created"===r?e++:"destroyed"===r&&n++;e>0&&0===n?c(1===e?l.peek():o.peek().replace("%s",String(e))):n>0&&0===e&&c(1===n?s.peek():u.peek().replace("%s",String(n)))},{skipInitialization:!0}))}},bt=[{$import:(t,e)=>{if(!e.textContent&&0===e.children.length)return[];const n=e.getAttribute("href")||"",r={rel:e.getAttribute("rel"),target:e.getAttribute("target"),title:e.getAttribute("title")};return Z(t.$importChildren(e),()=>ct(n,r))},match:/* @__PURE__ */J.tag("a"),name:"@lexical/link/a"}];function Ut(t,n){return I(t.registerNodeTransform(lt,ut),t.registerCommand(ht,t=>{const e=n.validateUrl.peek(),r=n.attributes.peek();if(null===t)return xt(null),!0;if("string"==typeof t)return!(void 0!==e&&!e(t)||(xt(t,r),0));{const{url:n,...i}=t;return!(void 0!==e&&!e(n)||(xt(n,{...r,...i}),0))}},w),e(()=>{const e=n.validateUrl.value;if(!e)return;const r=n.attributes.value;return t.registerCommand(F,n=>{const i=_();if(!g(i)||i.isCollapsed()||!q(n,ClipboardEvent))return!1;if(null===n.clipboardData)return!1;const l=n.clipboardData.getData("text");return!!e(l)&&(!i.getNodes().some(t=>T(t)||D(t)&&!t.isSimpleText())&&(t.dispatchCommand(ht,{...r,url:l}),n.preventDefault(),!0))},M)}))}const St={build:(t,e,r)=>n(e),config:{attributes:void 0,validateUrl:void 0},dependencies:[H,[G,{rules:bt}]],mergeConfig(t,e){const n=O(t,e);return t.attributes&&(n.attributes=O(t.attributes,n.attributes)),n},name:"@lexical/link/Link",nodes:()=>[lt],register:(t,e,n)=>Ut(t,n.getOutput())},Tt={dependencies:[St],name:"@lexical/link/Import"};function Lt(t,e,n={}){const r=n=>{const r=1===n.button;if("auxclick"===n.type&&!r)return;const i=n.target;if(!z(i))return;const l=$(i);if(null===l)return;let o=null,s=null,u=!1;if(l.update(()=>{const t=W(i);if(null!==t){const n=h(t,T);if(!e.disabled.peek())if(gt(n))u=pt(n)&&n.getIsUnlinked(),o=n.sanitizeUrl(n.getURL()),s=n.getTarget();else{const t=function(t,e){let n=t;for(;null!=n;){if(e(n))return n;n=n.parentNode}return null}(i,a);null!==t&&(o=t.href,s=t.target)}}}),null===o||""===o||u)return;const c=t.read("latest",_);!g(c)||c.isCollapsed()?(window.open(o,e.newTab.peek()||r||n.metaKey||n.ctrlKey||"_blank"===s?"_blank":"_self"),n.preventDefault()):n.preventDefault()};return t.registerRootListener(t=>{if(t)return E(t,{auxclick:r,click:r},n)})}const Ct={build:(t,e,r)=>n(e),config:{disabled:!1,newTab:!1},dependencies:[St],name:"@lexical/link/ClickableLink",register:(t,e,n)=>Lt(t,n.getOutput())};function At(t,e=t=>t){return n=>{const r=t.exec(n);return null===r?null:{index:r.index,length:r[0].length,text:r[0],url:e(r[0])}}}const Nt=/((https?:\/\/(www\.)?)|(www\.))[-\p{L}\p{N}@:%._+~#=]{1,256}\.[\p{L}\p{N}]{1,6}(?:[-\p{L}\p{N}()@:%_+.~#?&//=]*[\p{L}\p{N}()@_~#?&//=])?/u,Rt=t=>{const e=Nt.exec(t);if(null===e)return null;let n=e[0],r=0;for(const t of n)"("===t?r++:")"===t&&r--;for(;r<0&&n.endsWith(")");)n=n.slice(0,-1),r++;return{index:e.index,length:n.length,text:n,url:n.startsWith("http")?n:`https://${n}`}},Pt=/* @__PURE__ */At(/(([^<>()[\]\\.,;:\s@"]{1,64}(\.[^<>()[\]\\.,;:\s@"]{1,64}){0,63})|(".{1,255}"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]{1,63}\.){1,127}[a-zA-Z]{2,63}))/,t=>`mailto:${t}`);function Ot(t,e){for(let n=0;n<e.length;n++){const r=e[n](t);if(r)return r}return null}const It=/[.,;\s]/;function wt(t,e){return e.test(t)}function Ft(t,e){return wt(t[t.length-1],e)}function Dt(t,e){return wt(t[0],e)}function Mt(t,e){let n=t.getPreviousSibling();return T(n)&&(n=n.getLastDescendant()),null===n||B(n)||D(n)&&Ft(n.getTextContent(),e)}function Et(t,e){let n=t.getNextSibling();return T(n)&&(n=n.getFirstDescendant()),null===n||B(n)||D(n)&&Dt(n.getTextContent(),e)}function zt(t,e,n,r,i){return!!(t>0?wt(r[t-1],n):Mt(i[0],n))&&(e<r.length?wt(r[e],n):Et(i[i.length-1],n))}function $t(t,e,n){const r=[],i=[],l=[];let o=0,s=0;const u=[...t];for(;u.length>0;){const t=u[0],a=t.getTextContent().length,c=s;s+a<=e?(r.push(t),o+=a):c>=n?l.push(t):i.push(t),s+=a,u.shift()}return[o,r,i,l]}function Wt(t,e,n,r){const i=_t(r.url,r.attributes);if(1===t.length){let l,o=t[0];0===e?[l,o]=o.splitText(n):[,l,o]=o.splitText(e,n);const s=j(r.text);return s.setFormat(l.getFormat()),s.setDetail(l.getDetail()),s.setStyle(l.getStyle()),i.append(s),l.replace(i),o}if(t.length>1){const r=t[0];let l,o=r.getTextContent().length;0===e?l=r:[,l]=r.splitText(e);const s=[];let u;for(let e=1;e<t.length;e++){const r=t[e],i=r.getTextContent().length,l=o;if(l<n)if(o+i<=n)s.push(r);else{const[t,e]=r.splitText(n-l);s.push(t),u=e}o+=i}const a=_(),c=a?a.getNodes().find(D):void 0,f=j(l.getTextContent());return f.setFormat(l.getFormat()),f.setDetail(l.getDetail()),f.setStyle(l.getStyle()),i.append(f,...s),c&&c===l&&(g(a)?f.select(a.anchor.offset,a.focus.offset):p(a)&&f.select(0,f.getTextContent().length)),l.replace(i),u}}function Kt(t,e,n,r){const i=t.getChildren(),l=i.length;for(let e=0;e<l;e++){const r=i[e];if(!D(r)||!r.isSimpleText())return Bt(t),void n(null,t.getURL())}const o=t.getTextContent(),s=Ot(o,e);if(null===s||s.text!==o)return Bt(t),void n(null,t.getURL());if(!Mt(t,r)||!Et(t,r))return Bt(t),void n(null,t.getURL());const u=t.getURL();u!==s.url&&(t.setURL(s.url),n(s.url,u)),s.attributes&&(t.getRel()!==s.attributes.rel&&t.setRel(s.attributes.rel||null),t.getTarget()!==s.attributes.target&&t.setTarget(s.attributes.target||null),t.getTitle()!==s.attributes.title&&t.setTitle(s.attributes.title||null))}function Bt(t){const e=t.getChildren();for(let n=e.length-1;n>=0;n--)t.insertAfter(e[n]);return t.remove(),e.map(t=>t.getLatest())}const jt={changeHandlers:[],excludeParents:[],matchers:[],separatorRegex:It};function Jt(t,e=jt){const{matchers:n,changeHandlers:r,excludeParents:i,separatorRegex:l=It}=e,o=(t,e)=>{for(const n of r)n(t,e)};return I(t.registerNodeTransform(K,t=>{const e=t.getParentOrThrow(),r=t.getPreviousSibling();if(pt(e))Kt(e,n,o,l);else if(!gt(e)&&!i.some(t=>t(e))){if(t.isSimpleText()&&(Dt(t.getTextContent(),l)||!pt(r))){const e=function(t){const e=[t];let n=t.getNextSibling();for(;null!==n&&D(n)&&n.isSimpleText()&&(e.push(n),!/[\s]/.test(n.getTextContent()));)n=n.getNextSibling();return e}(t);!function(t,e,n,r){for(const e of t){const t=e.getParent();if(pt(t)&&!t.getIsUnlinked())return}let i=[...t];const l=i.map(t=>t.getTextContent()).join("");let o,s=l,u=0;for(;(o=Ot(s,e))&&null!==o;){const t=o.index,e=t+o.length;if(zt(u+t,u+e,r,l,i)){const[r,,l,a]=$t(i,u+t,u+e);let c=!1;for(const t of l){const e=t.getParent();if(pt(e)&&!e.getIsUnlinked()){c=!0;break}}if(c){u+=e,s=s.substring(e);continue}const g=Wt(l,u+t-r,u+e-r,o);i=g?[g,...a]:a,n(o.url,null),u=0}else u+=e;s=s.substring(e)}}(e,n,o,l)}!function(t,e,n,r){const i=t.getParent(),l=t.getPreviousSibling(),o=t.getNextSibling(),s=t.getTextContent();if(!pt(i)||i.getIsUnlinked()){if(pt(l)&&!l.getIsUnlinked()&&l.is(t.getPreviousSibling())&&t.getParent()===l.getParent()){if(!Dt(s,r))return Bt(l),void n(null,l.getURL());if(u=s,l.isEmailURI()?/^\.[a-zA-Z]{2,}/.test(u):/^\.[a-zA-Z0-9]{1,}/.test(u)){const i=l.getTextContent()+s,o=Ot(i,e);null!==o&&o.text===i&&(l.append(t),Kt(l,e,n,r),n(null,l.getURL()))}}var u;!pt(o)||o.getIsUnlinked()||Ft(s,r)||o.is(t.getNextSibling())&&t.getParent()===o.getParent()&&(Bt(o),n(null,o.getURL()))}}(t,n,o,l)}}),t.registerCommand(ht,t=>{const e=_();return!(null!==t||!g(e))&&(e.extract().forEach(t=>{const e=t.getParent();pt(e)&&(e.setIsUnlinked(!e.getIsUnlinked()),e.markDirty())}),!1)},M))}const Zt={config:jt,dependencies:[kt,St],mergeConfig(t,e){const n=O(t,e);for(const r of["matchers","changeHandlers","excludeParents"]){const i=e[r];Array.isArray(i)&&(n[r]=[...t[r],...i])}return n},name:"@lexical/link/AutoLink",nodes:[dt],register:Jt};export{_t as $createAutoLinkNode,ct as $createLinkNode,pt as $isAutoLinkNode,gt as $isLinkNode,xt as $toggleLink,kt as AutoLinkAnnounceExtension,Zt as AutoLinkExtension,dt as AutoLinkNode,Ct as ClickableLinkExtension,St as LinkExtension,Tt as LinkImportExtension,bt as LinkImportRules,lt as LinkNode,ht as TOGGLE_LINK_COMMAND,Pt as autoLinkEmailMatcher,Rt as autoLinkUrlMatcher,At as createLinkMatcherWithRegExp,vt as formatUrl,Jt as registerAutoLink,Lt as registerClickableLink,Ut as registerLink};
|
package/package.json
CHANGED
|
@@ -8,16 +8,16 @@
|
|
|
8
8
|
"link"
|
|
9
9
|
],
|
|
10
10
|
"license": "MIT",
|
|
11
|
-
"version": "0.
|
|
11
|
+
"version": "0.52.0",
|
|
12
12
|
"main": "./dist/LexicalLink.js",
|
|
13
13
|
"types": "./dist/typescript-too-old.d.ts",
|
|
14
14
|
"dependencies": {
|
|
15
|
-
"@lexical/a11y": "0.
|
|
16
|
-
"@lexical/extension": "0.
|
|
17
|
-
"@lexical/html": "0.
|
|
18
|
-
"@lexical/internal": "0.
|
|
19
|
-
"@lexical/utils": "0.
|
|
20
|
-
"lexical": "0.
|
|
15
|
+
"@lexical/a11y": "0.52.0",
|
|
16
|
+
"@lexical/extension": "0.52.0",
|
|
17
|
+
"@lexical/html": "0.52.0",
|
|
18
|
+
"@lexical/internal": "0.52.0",
|
|
19
|
+
"@lexical/utils": "0.52.0",
|
|
20
|
+
"lexical": "0.52.0"
|
|
21
21
|
},
|
|
22
22
|
"repository": {
|
|
23
23
|
"type": "git",
|