UNPKG

linkifyjs

Version:

Find URLs, email addresses, #hashtags and @mentions in plain-text strings, then convert them into HTML <a> links.

2 lines (1 loc) 19.4 kB
var linkify=function(t){"use strict";const e="numeric",n="ascii",i="alpha",s="asciinumeric",r="alphanumeric",o="domain",a="emoji",l="scheme",u="slashscheme",c="whitespace";function g(t,e){return t in e||(e[t]=[]),e[t]}function h(t,l,u){l[e]&&(l[s]=!0,l[r]=!0),l[n]&&(l[s]=!0,l[i]=!0),l[s]&&(l[r]=!0),l[i]&&(l[r]=!0),l[r]&&(l[o]=!0),l[a]&&(l[o]=!0);for(const e in l){const n=g(e,u);n.indexOf(t)<0&&n.push(t)}}function d(t=null){this.j={},this.jr=[],this.jd=null,this.t=t}d.groups={},d.prototype={accepts(){return!!this.t},go(t){const e=this,n=e.j[t];if(n)return n;for(let n=0;n<e.jr.length;n++){const i=e.jr[n][0],s=e.jr[n][1];if(s&&i.test(t))return s}return e.jd},has(t,e=!1){return e?t in this.j:!!this.go(t)},ta(t,e,n,i){for(let s=0;s<t.length;s++)this.tt(t[s],e,n,i)},tr(t,e,n,i){let s;return i=i||d.groups,e&&e.j?s=e:(s=new d(e),n&&i&&h(e,n,i)),this.jr.push([t,s]),s},ts(t,e,n,i){let s=this;const r=t.length;if(!r)return s;for(let e=0;e<r-1;e++)s=s.tt(t[e]);return s.tt(t[r-1],e,n,i)},tt(t,e,n,i){i=i||d.groups;const s=this;if(e&&e.j)return s.j[t]=e,e;const r=e;let o,a=s.go(t);if(a?(o=new d,Object.assign(o.j,a.j),o.jr.push.apply(o.jr,a.jr),o.jd=a.jd,o.t=a.t):o=new d,r){if(i)if(o.t&&"string"==typeof o.t){const t=Object.assign(function(t,e){const n={};for(const i in e)e[i].indexOf(t)>=0&&(n[i]=!0);return n}(o.t,i),n);h(r,t,i)}else n&&h(r,n,i);o.t=r}return s.j[t]=o,o}};const f=(t,e,n,i,s)=>t.ta(e,n,i,s),p=(t,e,n,i,s)=>t.tr(e,n,i,s),m=(t,e,n,i,s)=>t.ts(e,n,i,s),E=(t,e,n,i,s)=>t.tt(e,n,i,s),k="WORD",y="UWORD",b="ASCIINUMERICAL",T="ALPHANUMERICAL",L="LOCALHOST",A="TLD",R="UTLD",O="SCHEME",C="SLASH_SCHEME",v="NUM",S="WS",j="NL",w="OPENBRACE",I="CLOSEBRACE",N="OPENBRACKET",H="CLOSEBRACKET",x="OPENPAREN",P="CLOSEPAREN",z="OPENANGLEBRACKET",D="CLOSEANGLEBRACKET",U="FULLWIDTHLEFTPAREN",M="FULLWIDTHRIGHTPAREN",B="LEFTCORNERBRACKET",K="RIGHTCORNERBRACKET",F="LEFTWHITECORNERBRACKET",Q="RIGHTWHITECORNERBRACKET",_="FULLWIDTHLESSTHAN",W="FULLWIDTHGREATERTHAN",$="AMPERSAND",G="APOSTROPHE",q="ASTERISK",Y="AT",J="BACKSLASH",X="BACKTICK",V="CARET",Z="COLON",tt="COMMA",et="DOLLAR",nt="DOT",it="EQUALS",st="EXCLAMATION",rt="HYPHEN",ot="PERCENT",at="PIPE",lt="PLUS",ut="POUND",ct="QUERY",gt="QUOTE",ht="FULLWIDTHMIDDLEDOT",dt="SEMI",ft="SLASH",pt="TILDE",mt="UNDERSCORE",Et="EMOJI",kt="SYM";var yt=Object.freeze({__proto__:null,ALPHANUMERICAL:T,AMPERSAND:$,APOSTROPHE:G,ASCIINUMERICAL:b,ASTERISK:q,AT:Y,BACKSLASH:J,BACKTICK:X,CARET:V,CLOSEANGLEBRACKET:D,CLOSEBRACE:I,CLOSEBRACKET:H,CLOSEPAREN:P,COLON:Z,COMMA:tt,DOLLAR:et,DOT:nt,EMOJI:Et,EQUALS:it,EXCLAMATION:st,FULLWIDTHGREATERTHAN:W,FULLWIDTHLEFTPAREN:U,FULLWIDTHLESSTHAN:_,FULLWIDTHMIDDLEDOT:ht,FULLWIDTHRIGHTPAREN:M,HYPHEN:rt,LEFTCORNERBRACKET:B,LEFTWHITECORNERBRACKET:F,LOCALHOST:L,NL:j,NUM:v,OPENANGLEBRACKET:z,OPENBRACE:w,OPENBRACKET:N,OPENPAREN:x,PERCENT:ot,PIPE:at,PLUS:lt,POUND:ut,QUERY:ct,QUOTE:gt,RIGHTCORNERBRACKET:K,RIGHTWHITECORNERBRACKET:Q,SCHEME:O,SEMI:dt,SLASH:ft,SLASH_SCHEME:C,SYM:kt,TILDE:pt,TLD:A,UNDERSCORE:mt,UTLD:R,UWORD:y,WORD:k,WS:S});const bt=/[a-z]/,Tt=/\p{L}/u,Lt=/\p{Emoji}/u,At=/\d/,Rt=/\s/;var Ot=Object.freeze({__proto__:null,ASCII_LETTER:bt,DIGIT:At,EMOJI:Lt,EMOJI_VARIATION:/\ufe0f/,LETTER:Tt,SPACE:Rt});let Ct=null,vt=null;function St(t,e){const n=jt(e.replace(/[A-Z]/g,t=>t.toLowerCase())),i=n.length,s=[];let r=0,o=0;for(;o<i;){let a=t,l=null,u=0,c=null,g=-1,h=-1;for(;o<i&&(l=a.go(n[o]));)a=l,a.accepts()?(g=0,h=0,c=a):g>=0&&(g+=n[o].length,h++),u+=n[o].length,r+=n[o].length,o++;r-=g,o-=h,u-=g,s.push({t:c.t,v:e.slice(r-u,r),s:r-u,e:r})}return s}function jt(t){const e=[],n=t.length;let i=0;for(;i<n;){let s,r=t.charCodeAt(i),o=r<55296||r>56319||i+1===n||(s=t.charCodeAt(i+1))<56320||s>57343?t[i]:t.slice(i,i+2);e.push(o),i+=o.length}return e}function wt(t,e,n,i,s){let r;const o=e.length;for(let n=0;n<o-1;n++){const o=e[n];t.j[o]?r=t.j[o]:(r=new d(i),r.jr=s.slice(),t.j[o]=r),t=r}return r=new d(n),r.jr=s.slice(),t.j[e[o-1]]=r,r}function It(t){const e=[],n=[];let i=0;for(;i<t.length;){let s=0;for(;"0123456789".indexOf(t[i+s])>=0;)s++;if(s>0){e.push(n.join(""));for(let e=parseInt(t.substring(i,i+s),10);e>0;e--)n.pop();i+=s}else n.push(t[i]),i++}return e}const Nt={defaultProtocol:"http",events:null,format:xt,formatHref:xt,nl2br:!1,tagName:"a",target:null,rel:null,validate:!0,truncate:1/0,className:null,attributes:null,ignoreTags:[],render:null};function Ht(t,e=null){let n=Object.assign({},Nt);t&&(n=Object.assign(n,t instanceof Ht?t.o:t));const i=n.ignoreTags,s=[];for(let t=0;t<i.length;t++)s.push(i[t].toUpperCase());this.o=n,e&&(this.defaultRender=e),this.ignoreTags=s}function xt(t){return t}Ht.prototype={o:Nt,ignoreTags:[],defaultRender:t=>t,check(t){return this.get("validate",t.toString(),t)},get(t,e,n){const i=null!=e;let s=this.o[t];return s?("object"==typeof s?(s=n.t in s?s[n.t]:Nt[t],"function"==typeof s&&i&&(s=s(e,n))):"function"==typeof s&&i&&(s=s(e,n.t,n)),s):s},getObj(t,e,n){let i=this.o[t];return"function"==typeof i&&null!=e&&(i=i(e,n.t,n)),i},render(t){const e=t.render(this);return(this.get("render",null,t)||this.defaultRender)(e,t.t,t)}};var Pt=Object.freeze({__proto__:null,Options:Ht,defaults:Nt});function zt(t,e){this.t="token",this.v=t,this.tk=e}function Dt(t,e){class n extends zt{constructor(e,n){super(e,n),this.t=t}}for(const t in e)n.prototype[t]=e[t];return n.t=t,n}zt.prototype={isLink:!1,toString(){return this.v},toHref(t){return this.toString()},toFormattedString(t){const e=this.toString(),n=t.get("truncate",e,this),i=t.get("format",e,this);return n&&i.length>n?i.substring(0,n)+"…":i},toFormattedHref(t){return t.get("formatHref",this.toHref(t.get("defaultProtocol")),this)},startIndex(){return this.tk[0].s},endIndex(){return this.tk[this.tk.length-1].e},toObject(t=Nt.defaultProtocol){return{type:this.t,value:this.toString(),isLink:this.isLink,href:this.toHref(t),start:this.startIndex(),end:this.endIndex()}},toFormattedObject(t){return{type:this.t,value:this.toFormattedString(t),isLink:this.isLink,href:this.toFormattedHref(t),start:this.startIndex(),end:this.endIndex()}},validate(t){return t.get("validate",this.toString(),this)},render(t){const e=this,n=this.toHref(t.get("defaultProtocol")),i=t.get("formatHref",n,this),s=t.get("tagName",n,e),r=this.toFormattedString(t),o={},a=t.get("className",n,e),l=t.get("target",n,e),u=t.get("rel",n,e),c=t.getObj("attributes",n,e),g=t.getObj("events",n,e);return o.href=i,a&&(o.class=a),l&&(o.target=l),u&&(o.rel=u),c&&Object.assign(o,c),{tagName:s,attributes:o,content:r,eventListeners:g}}};const Ut=Dt("email",{isLink:!0,toHref(){return"mailto:"+this.toString()}}),Mt=Dt("text"),Bt=Dt("nl"),Kt=Dt("url",{isLink:!0,toHref(t=Nt.defaultProtocol){return this.hasProtocol()?this.v:`${t}://${this.v}`},hasProtocol(){const t=this.tk;return t.length>=2&&t[0].t!==L&&t[1].t===Z}});var Ft=Object.freeze({__proto__:null,Base:zt,Email:Ut,MultiToken:zt,Nl:Bt,Text:Mt,Url:Kt,createTokenClass:Dt});const Qt=t=>new d(t);function _t(t,e,n){const i=n[0].s,s=n[n.length-1].e;return new t(e.slice(i,s),n)}const Wt="undefined"!=typeof console&&console&&console.warn||(()=>{}),$t="until manual call of linkify.init(). Register all schemes and plugins before invoking linkify the first time.",Gt={scanner:null,parser:null,tokenQueue:[],pluginQueue:[],customSchemes:[],initialized:!1};function qt(){Gt.scanner=function(t=[]){const g={};d.groups=g;const f=new d;null==Ct&&(Ct=It("aaa1rp3bb0ott3vie4c1le2ogado5udhabi7c0ademy5centure6ountant0s9o1tor4d0s1ult4e0g1ro2tna4f0l1rica5g0akhan5ency5i0g1rbus3force5tel5kdn3l0ibaba4pay4lfinanz6state5y2sace3tom5m0azon4ericanexpress7family11x2fam3ica3sterdam8nalytics7droid5quan4z2o0l2partments8p0le4q0uarelle8r0ab1mco4chi3my2pa2t0e3s0da2ia2sociates9t0hleta5torney7u0ction5di0ble3o3spost5thor3o0s4w0s2x0a2z0ure5ba0by2idu3namex4d1k2r0celona5laycard4s5efoot5gains6seball5ketball8uhaus5yern5b0c1t1va3cg1n2d1e0ats2uty4er2rlin4st0buy5t2f1g1h0arti5i0ble3d1ke2ng0o3o1z2j1lack0friday9ockbuster8g1omberg7ue3m0s1w2n0pparibas9o0ats3ehringer8fa2m1nd2o0k0ing5sch2tik2on4t1utique6x2r0adesco6idgestone9oadway5ker3ther5ussels7s1t1uild0ers6siness6y1zz3v1w1y1z0h3ca0b1fe2l0l1vinklein9m0era3p2non3petown5ital0one8r0avan4ds2e0er0s4s2sa1e1h1ino4t0ering5holic7ba1n1re3c1d1enter4o1rn3f0a1d2g1h0anel2nel4rity4se2t2eap3intai5ristmas6ome4urch5i0priani6rcle4sco3tadel4i0c2y3k1l0aims4eaning6ick2nic1que6othing5ud3ub0med6m1n1o0ach3des3ffee4llege4ogne5m0mbank4unity6pany2re3uter5sec4ndos3struction8ulting7tact3ractors9oking4l1p2rsica5untry4pon0s4rses6pa2r0edit0card4union9icket5own3s1uise0s6u0isinella9v1w1x1y0mru3ou3z2dad1nce3ta1e1ing3sun4y2clk3ds2e0al0er2s3gree4livery5l1oitte5ta3mocrat6ntal2ist5si0gn4v2hl2iamonds6et2gital5rect0ory7scount3ver5h2y2j1k1m1np2o0cs1tor4g1mains5t1wnload7rive4tv2ubai3nlop4pont4rban5vag2r2z2earth3t2c0o2deka3u0cation8e1g1mail3erck5nergy4gineer0ing9terprises10pson4quipment8r0icsson6ni3s0q1tate5t1u0rovision8s2vents5xchange6pert3osed4ress5traspace10fage2il1rwinds6th3mily4n0s2rm0ers5shion4t3edex3edback6rrari3ero6i0delity5o2lm2nal1nce1ial7re0stone6mdale6sh0ing5t0ness6j1k1lickr3ghts4r2orist4wers5y2m1o0o0d1tball6rd1ex2sale4um3undation8x2r0ee1senius7l1ogans4ntier7tr2ujitsu5n0d2rniture7tbol5yi3ga0l0lery3o1up4me0s3p1rden4y2b0iz3d0n2e0a1nt0ing5orge5f1g0ee3h1i0ft0s3ves2ing5l0ass3e1obal2o4m0ail3bh2o1x2n1odaddy5ld0point6f2o0dyear5g0le4p1t1v2p1q1r0ainger5phics5tis4een3ipe3ocery4up4s1t1u0cci3ge2ide2tars5ru3w1y2hair2mburg5ngout5us3bo2dfc0bank7ealth0care8lp1sinki6re1mes5iphop4samitsu7tachi5v2k0t2m1n1ockey4ldings5iday5medepot5goods5s0ense7nda3rse3spital5t0ing5t0els3mail5use3w2r1sbc3t1u0ghes5yatt3undai7ibm2cbc2e1u2d1e0ee3fm2kano4l1m0amat4db2mo0bilien9n0c1dustries8finiti5o2g1k1stitute6urance4e4t0ernational10uit4vestments10o1piranga7q1r0ish4s0maili5t0anbul7t0au2v3jaguar4va3cb2e0ep2tzt3welry6io2ll2m0p2nj2o0bs1urg4t1y2p0morgan6rs3uegos4niper7kaufen5ddi3e0rryhotels6properties14fh2g1h1i0a1ds2m1ndle4tchen5wi3m1n1oeln3matsu5sher5p0mg2n2r0d1ed3uokgroup8w1y0oto4z2la0caixa5mborghini8er3nd0rover6xess5salle5t0ino3robe5w0yer5b1c1ds2ease3clerc5frak4gal2o2xus4gbt3i0dl2fe0insurance9style7ghting6ke2lly3mited4o2ncoln4k2ve1ing5k1lc1p2oan0s3cker3us3l1ndon4tte1o3ve3pl0financial11r1s1t0d0a3u0ndbeck6xe1ury5v1y2ma0drid4if1son4keup4n0agement7go3p1rket0ing3s4riott5shalls7ttel5ba2c0kinsey7d1e0d0ia3et2lbourne7me1orial6n0u2rckmsd7g1h1iami3crosoft7l1ni1t2t0subishi9k1l0b1s2m0a2n1o0bi0le4da2e1i1m1nash3ey2ster5rmon3tgage6scow4to0rcycles9v0ie4p1q1r1s0d2t0n1r2u0seum3ic4v1w1x1y1z2na0b1goya4me2vy3ba2c1e0c1t0bank4flix4work5ustar5w0s2xt0direct7us4f0l2g0o2hk2i0co2ke1on3nja3ssan1y5l1o0kia3rton4w0ruz3tv4p1r0a1w2tt2u1yc2z2obi1server7ffice5kinawa6layan0group9lo3m0ega4ne1g1l0ine5oo2pen3racle3nge4g0anic5igins6saka4tsuka4t2vh3pa0ge2nasonic7ris2s1tners4s1y3y2ccw3e0t2f0izer5g1h0armacy6d1ilips5one2to0graphy6s4ysio5ics1tet2ures6d1n0g1k2oneer5zza4k1l0ace2y0station9umbing5s3m1n0c2ohl2ker3litie5rn2st3r0axi3ess3ime3o0d0uctions8f1gressive8mo2perties3y5tection8u0dential9s1t1ub2w0c2y2qa1pon3uebec3st5racing4dio4e0ad1lestate6tor2y4cipes5d0stone5umbrella9hab3ise0n3t2liance6n0t0als5pair3ort3ublican8st0aurant8view0s5xroth6ich0ardli6oh3l1o1p2o0cks3deo3gers4om3s0vp3u0gby3hr2n2w0e2yukyu6sa0arland6fe0ty4kura4le1on3msclub4ung5ndvik0coromant12ofi4p1rl2s1ve2xo3b0i1s2c0b1haeffler7midt4olarships8ol3ule3warz5ience5ot3d1e0arch3t2cure1ity6ek2lect4ner3rvices6ven3w1x0y3fr2g1h0angrila6rp3ell3ia1ksha5oes2p0ping5uji3w3i0lk2na1gles5te3j1k0i0n2y0pe4l0ing4m0art3ile4n0cf3o0ccer3ial4ftbank4ware6hu2lar2utions7ng1y2y2pa0ce3ort2t3r0l2s1t0ada2ples4r1tebank4farm7c0group6ockholm6rage3e3ream4udio2y3yle4u0cks3pplies3y2ort5rf1gery5zuki5v1watch4iss4x1y0dney4stems6z2tab1ipei4lk2obao4rget4tamotors6r2too4x0i3c0i2d0k2eam2ch0nology8l1masek5nnis4va3f1g1h0d1eater2re6iaa2ckets5enda4ps2res2ol4j0maxx4x2k0maxx5l1m0all4n1o0day3kyo3ols3p1ray3shiba5tal3urs3wn2yota3s3r0ade1ing4ining5vel0ers0insurance16ust3v2t1ube2i1nes3shu4v0s2w1z2ua1bank3s2g1k1nicom3versity8o2ol2ps2s1y1z2va0cations7na1guard7c1e0gas3ntures6risign5mögensberater2ung14sicherung10t2g1i0ajes4deo3g1king4llas4n1p1rgin4sa1ion4va1o3laanderen9n1odka3lvo3te1ing3o2yage5u2wales2mart4ter4ng0gou5tch0es6eather0channel12bcam3er2site5d0ding5ibo2r3f1hoswho6ien2ki2lliamhill9n0dows4e1ners6me2olterskluwer11odside6rk0s2ld3w2s1tc1f3xbox3erox4ihuan4n2xx2yz3yachts4hoo3maxun5ndex5e1odobashi7ga2kohama6u0tube6t1un3za0ppos4ra3ero3ip2m1one3uerich6w2")),null==vt&&(vt=It("ελ1υ2бг1ел3дети4ею2католик6ом3мкд2он1сква6онлайн5рг3рус2ф2сайт3рб3укр3қаз3հայ3ישראל5קום3ابوظبي5رامكو5لاردن4بحرين5جزائر5سعودية6عليان5مغرب5مارات5یران5بارت2زار4يتك3ھارت5تونس4سودان3رية5شبكة4عراق2ب2مان4فلسطين6قطر3كاثوليك6وم3مصر2ليسيا5وريتانيا7قع4همراه5پاکستان7ڀارت4कॉम3नेट3भारत0म्3ोत5संगठन5বাংলা5ভারত2ৰত4ਭਾਰਤ4ભારત4ଭାରତ4இந்தியா6லங்கை6சிங்கப்பூர்11భారత్5ಭಾರತ4ഭാരതം5ලංකා4คอม3ไทย3ລາວ3გე2みんな3アマゾン4クラウド4グーグル4コム2ストア3セール3ファッション6ポイント4世界2中信1国1國1文网3亚马逊3企业2佛山2信息2健康2八卦2公司1益2台湾1灣2商城1店1标2嘉里0大酒店5在线2大拿2天主教3娱乐2家電2广东2微博2慈善2我爱你3手机2招聘2政务1府2新加坡2闻2时尚2書籍2机构2淡马锡3游戏2澳門2点看2移动2组织机构4网址1店1站1络2联通2谷歌2购物2通販2集团2電訊盈科4飞利浦3食品2餐厅2香格里拉3港2닷넷1컴2삼성2한국2")),E(f,"'",G),E(f,"{",w),E(f,"}",I),E(f,"[",N),E(f,"]",H),E(f,"(",x),E(f,")",P),E(f,"<",z),E(f,">",D),E(f,"(",U),E(f,")",M),E(f,"「",B),E(f,"」",K),E(f,"『",F),E(f,"』",Q),E(f,"<",_),E(f,">",W),E(f,"&",$),E(f,"*",q),E(f,"@",Y),E(f,"`",X),E(f,"^",V),E(f,":",Z),E(f,",",tt),E(f,"$",et),E(f,".",nt),E(f,"=",it),E(f,"!",st),E(f,"-",rt),E(f,"%",ot),E(f,"|",at),E(f,"+",lt),E(f,"#",ut),E(f,"?",ct),E(f,'"',gt),E(f,"/",ft),E(f,";",dt),E(f,"~",pt),E(f,"_",mt),E(f,"\\",J),E(f,"・",ht);const Ot=p(f,At,v,{[e]:!0});p(Ot,At,Ot);const St=p(Ot,bt,b,{[s]:!0}),jt=p(Ot,Tt,T,{[r]:!0}),Nt=p(f,bt,k,{[n]:!0});p(Nt,At,St),p(Nt,bt,Nt),p(St,At,St),p(St,bt,St);const Ht=p(f,Tt,y,{[i]:!0});p(Ht,bt),p(Ht,At,jt),p(Ht,Tt,Ht),p(jt,At,jt),p(jt,bt),p(jt,Tt,jt);const xt=E(f,"\n",j,{[c]:!0}),Pt=E(f,"\r",S,{[c]:!0}),zt=p(f,Rt,S,{[c]:!0});E(f,"",zt),E(Pt,"\n",xt),E(Pt,"",zt),p(Pt,Rt,zt),E(zt,"\r"),E(zt,"\n"),p(zt,Rt,zt),E(zt,"",zt);const Dt=p(f,Lt,Et,{[a]:!0});E(Dt,"#"),p(Dt,Lt,Dt),E(Dt,"️",Dt);const Ut=E(Dt,"‍");E(Ut,"#"),p(Ut,Lt,Dt);const Mt=[[bt,Nt],[At,St]],Bt=[[bt,null],[Tt,Ht],[At,jt]];for(let t=0;t<Ct.length;t++)wt(f,Ct[t],A,k,Mt);for(let t=0;t<vt.length;t++)wt(f,vt[t],R,y,Bt);h(A,{tld:!0,ascii:!0},g),h(R,{utld:!0,alpha:!0},g),wt(f,"file",O,k,Mt),wt(f,"mailto",O,k,Mt),wt(f,"http",C,k,Mt),wt(f,"https",C,k,Mt),wt(f,"ftp",C,k,Mt),wt(f,"ftps",C,k,Mt),h(O,{scheme:!0,ascii:!0},g),h(C,{slashscheme:!0,ascii:!0},g),t=t.sort((t,e)=>t[0]>e[0]?1:-1);for(let i=0;i<t.length;i++){const r=t[i][0],a=t[i][1]?{[l]:!0}:{[u]:!0};r.indexOf("-")>=0?a[o]=!0:bt.test(r)?At.test(r)?a[s]=!0:a[n]=!0:a[e]=!0,m(f,r,r,a)}return m(f,"localhost",L,{ascii:!0}),f.jd=new d(kt),{start:f,tokens:Object.assign({groups:g},yt)}}(Gt.customSchemes);for(let t=0;t<Gt.tokenQueue.length;t++)Gt.tokenQueue[t][1]({scanner:Gt.scanner});Gt.parser=function({groups:t}){const e=t.domain.concat([$,q,Y,J,X,V,et,it,rt,v,ot,at,lt,ut,ft,kt,pt,mt]),n=[G,Z,tt,nt,st,ot,ct,gt,dt,z,D,w,I,H,N,x,P,U,M,B,K,F,Q,_,W],i=[$,G,q,J,X,V,et,it,rt,w,I,ot,at,lt,ut,ct,ft,kt,pt,mt],s=Qt(),r=E(s,pt);f(r,i,r),f(r,t.domain,r);const o=Qt(),a=Qt(),l=Qt();f(s,t.domain,o),f(s,t.scheme,a),f(s,t.slashscheme,l),f(o,i,r),f(o,t.domain,o);const u=E(o,Y);E(r,Y,u),E(a,Y,u),E(l,Y,u);const c=E(r,nt);f(c,i,r),f(c,t.domain,r);const g=Qt();f(u,t.domain,g),f(g,t.domain,g);const h=E(g,nt);f(h,t.domain,g);const d=Qt(Ut);f(h,t.tld,d),f(h,t.utld,d),E(u,L,d);const p=E(g,rt);E(p,rt,p),f(p,t.domain,g),f(d,t.domain,g),E(d,nt,h),E(d,rt,p);const m=E(d,Z);f(m,t.numeric,Ut);const k=E(o,rt),y=E(o,nt);E(k,rt,k),f(k,t.domain,o),f(y,i,r),f(y,t.domain,o);const b=Qt(Kt);f(y,t.tld,b),f(y,t.utld,b),f(b,t.domain,o),f(b,i,r),E(b,nt,y),E(b,rt,k),E(b,Y,u);const T=E(b,Z),A=Qt(Kt);f(T,t.numeric,A);const R=Qt(Kt),O=Qt();f(R,e,R),f(R,n,O),f(O,e,R),f(O,n,O),E(b,ft,R),E(A,ft,R);const C=E(a,Z),S=E(l,Z),ht=E(S,ft),Et=E(ht,ft);f(a,t.domain,o),E(a,nt,y),E(a,rt,k),f(l,t.domain,o),E(l,nt,y),E(l,rt,k),f(C,t.domain,R),E(C,ft,R),E(C,ct,R),f(Et,t.domain,R),f(Et,e,R),E(Et,ft,R);const bt=[[w,I],[N,H],[x,P],[z,D],[U,M],[B,K],[F,Q],[_,W]];for(let t=0;t<bt.length;t++){const[i,s]=bt[t],r=E(R,i);E(O,i,r),E(r,s,R);const o=Qt(Kt);f(r,e,o);const a=Qt();f(r,n),f(o,e,o),f(o,n,a),f(a,e,o),f(a,n,a),E(o,s,R),E(a,s,R)}return E(s,L,b),E(s,j,Bt),{start:s,tokens:yt}}(Gt.scanner.tokens);for(let t=0;t<Gt.pluginQueue.length;t++)Gt.pluginQueue[t][1]({scanner:Gt.scanner,parser:Gt.parser});return Gt.initialized=!0,Gt}function Yt(t){return Gt.initialized||qt(),function(t,e,n){let i=n.length,s=0,r=[],o=[];for(;s<i;){let a=t,l=null,u=null,c=0,g=null,h=-1;for(;s<i&&!(l=a.go(n[s].t));)o.push(n[s++]);for(;s<i&&(u=l||a.go(n[s].t));)l=null,a=u,a.accepts()?(h=0,g=a):h>=0&&h++,s++,c++;if(h<0)s-=c,s<i&&(o.push(n[s]),s++);else{o.length>0&&(r.push(_t(Mt,e,o)),o=[]),s-=h,c-=h;const t=g.t,i=n.slice(s-c,s);r.push(_t(t,e,i))}}return o.length>0&&r.push(_t(Mt,e,o)),r}(Gt.parser.start,t,St(Gt.scanner.start,t))}return Yt.scan=St,t.MultiToken=zt,t.Options=Ht,t.State=d,t.createTokenClass=Dt,t.find=function(t,e=null,n=null){if(e&&"object"==typeof e){if(n)throw Error(`linkifyjs: Invalid link type ${e}; must be a string`);n=e,e=null}const i=new Ht(n),s=Yt(t),r=[];for(let t=0;t<s.length;t++){const n=s[t];!n.isLink||e&&n.t!==e||!i.check(n)||r.push(n.toFormattedObject(i))}return r},t.init=qt,t.multi=Ft,t.options=Pt,t.regexp=Ot,t.registerCustomProtocol=function(t,e=!1){if(Gt.initialized&&Wt(`linkifyjs: already initialized - will not register custom scheme "${t}" ${$t}`),!/^[0-9a-z]+(-[0-9a-z]+)*$/.test(t))throw new Error('linkifyjs: incorrect scheme format.\n1. Must only contain digits, lowercase ASCII letters or "-"\n2. Cannot start or end with "-"\n3. "-" cannot repeat');Gt.customSchemes.push([t,e])},t.registerPlugin=function(t,e){if("function"!=typeof e)throw new Error(`linkifyjs: Invalid plugin ${e} (expects function)`);for(let n=0;n<Gt.pluginQueue.length;n++)if(t===Gt.pluginQueue[n][0])return Wt(`linkifyjs: plugin "${t}" already registered - will be overwritten`),void(Gt.pluginQueue[n]=[t,e]);Gt.pluginQueue.push([t,e]),Gt.initialized&&Wt(`linkifyjs: already initialized - will not register plugin "${t}" ${$t}`)},t.registerTokenPlugin=function(t,e){if("function"!=typeof e)throw new Error(`linkifyjs: Invalid token plugin ${e} (expects function)`);for(let n=0;n<Gt.tokenQueue.length;n++)if(t===Gt.tokenQueue[n][0])return Wt(`linkifyjs: token plugin "${t}" already registered - will be overwritten`),void(Gt.tokenQueue[n]=[t,e]);Gt.tokenQueue.push([t,e]),Gt.initialized&&Wt(`linkifyjs: already initialized - will not register token plugin "${t}" ${$t}`)},t.reset=function(){return d.groups={},Gt.scanner=null,Gt.parser=null,Gt.tokenQueue=[],Gt.pluginQueue=[],Gt.customSchemes=[],Gt.initialized=!1,Gt},t.stringToArray=jt,t.test=function(t,e=null){const n=Yt(t);return 1===n.length&&n[0].isLink&&(!e||n[0].t===e)},t.text=Ft,t.tokenize=Yt,t}({});