hugo-theme-next/static/js/3rd/waline/2.15.8/waline.min.js

11 lines
156 KiB
JavaScript
Raw Permalink Normal View History

!function(e,t){"function"==typeof define&&define.amd?define("Waline",["exports"],t):"undefined"!=typeof exports?t(exports):(t(t={}),e.Waline=t)}("undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:this,function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.version=e.pageviewCount=e.init=e.defaultLocales=e.commentCount=e.UserList=e.RecentComments=void 0;const s=["nick","mail","link"],z=e=>e.filter(e=>s.includes(e)),L=["//unpkg.com/@waline/emojis@1.1.0/weibo"],I="en-US",T=["//unpkg.com/@waline/emojis/tieba/tieba_agree.png","//unpkg.com/@waline/emojis/tieba/tieba_look_down.png","//unpkg.com/@waline/emojis/tieba/tieba_sunglasses.png","//unpkg.com/@waline/emojis/tieba/tieba_pick_nose.png","//unpkg.com/@waline/emojis/tieba/tieba_awkward.png","//unpkg.com/@waline/emojis/tieba/tieba_sleep.png"],j=r=>new Promise((e,t)=>{if(128e3<r.size)return t(new Error("File too large! File size limit 128KB"));const n=new FileReader;n.readAsDataURL(r),n.onload=()=>e(n.result?.toString()||""),n.onerror=t}),O=e=>!0===e?'<p class="wl-tex">TeX is not available in preview</p>':'<span class="wl-tex">TeX is not available in preview</span>',U=t=>{async function n(e){return fetch(`https://api.giphy.com/v1/gifs/${e}?`+new URLSearchParams({lang:t,limit:"20",rating:"g",api_key:"6CIMLkNMMOhRcXPoMCPkFy4Ybk2XUiMp",...1<arguments.length&&void 0!==arguments[1]?arguments[1]:{}}).toString()).then(e=>e.json()).then(e=>{let t=e["data"];return t.map(e=>({title:e.title,src:e.images.downsized_medium.url}))})}return{search:e=>n("search",{q:e,offset:"0"}),default:()=>n("trending",{}),more:function(e){return n("search",{q:e,offset:(1<arguments.length&&void 0!==arguments[1]?arguments[1]:0).toString()})}}},c=new RegExp(`(${/[\u4E00-\u9FFF\u3400-\u4dbf\uf900-\ufaff\u3040-\u309f\uac00-\ud7af\u0400-\u04FF]+|\w+/.source}|${/</.source})|((?:${/(?:^|\s)\/\/(.+?)$/gm.source})|(?:${/\/\*([\S\s]*?)\*\//gm.source}))`,"gmi"),u=["23AC69","91C132","F19726","E8552D","1AAB8E","E1147F","2980C1","1BA1E6","9FA0A0","F19726","E30B20","E30B20","A3338B"],h={},M=e=>{let l=0;return e.replace(c,(e,t,n)=>{if(n)return`<span style="color: slategray">${n}</span>`;if("<"===t)return"&lt;";let r;h[t]?r=h[t]:(r=u[l],h[t]=r);n=`<span style="color: #${r}">${t}</span>`;return l=++l%u.length,n})},f=["nick","nickError","mail","mailError","link","optional","placeholder","sofa","submit","like","cancelLike","reply","cancelReply","comment","refresh","more","preview","emoji","uploadImage","seconds","minutes","hours","days","now","uploading","login","logout","admin","sticky","word","wordHint","anonymous","level0","level1","level2","level3","level4","level5","gif","gifSearchPlaceholder","profile","approved","waiting","spam","unsticky","oldest","latest","hottest","reactionTitle"],g=e=>Object.fromEntries(e.map((e,t)=>[f[t],e]));var v=g(["NickName","NickName cannot be less than 3 bytes.","E-Mail","Please confirm your email address.","Website","Optional","Comment here...","No comment yet.","Submit","Like","Cancel like","Reply","Cancel reply","Comments","Refresh","Load More...","Preview","Emoji","Upload Image","seconds ago","minutes ago","hours ago","days ago","just now","Uploading","Login","logout","Admin","Sticky","Words","Please input comments between $0 and $1 words!\n Current word number: $2","Anonymous","Dwarves","Hobbits","Ents","Wizards","Elves","Maiar","GIF","Search GIF","Profile","Approved","Waiting","Spam","Unsticky","Oldest","Latest","Hottest","What do you think?"]),m=g(["ニックネーム","3バイト以上のニックネームをご入力ください.","メールアドレス","メールアドレスをご確認ください.","サイト","オプション","ここにコメント","コメントしましょう~","提出する","Like","Cancel like","返信する","キャンセル","コメント","更新","さらに読み込む","プレビュー","絵文字","画像をアップロード","秒前","分前","時間前","日前","たっだ今","アップロード","ログインする","ログアウト","管理者","トップに置く","ワード","コメントは $0 から $1 ワードの
${e}</blockquote>
`}html(e){return e}heading(e,t,n,r){return this.options.headerIds?`<h${t} id="${this.options.headerPrefix+r.slug(n)}">${e}</h${t}>
`:`<h${t}>${e}</h${t}>
`}hr(){return this.options.xhtml?"<hr/>\n":"<hr>\n"}list(e,t,n){var r=t?"ol":"ul";return"<"+r+(t&&1!==n?' start="'+n+'"':"")+">\n"+e+"</"+r+">\n"}listitem(e){return`<li>${e}</li>
`}checkbox(e){return"<input "+(e?'checked="" ':"")+'disabled="" type="checkbox"'+(this.options.xhtml?" /":"")+"> "}paragraph(e){return`<p>${e}</p>
`}table(e,t){return"<table>\n<thead>\n"+e+"</thead>\n"+(t=t&&`<tbody>${t}</tbody>`)+"</table>\n"}tablerow(e){return`<tr>
${e}</tr>
`}tablecell(e,t){var n=t.header?"th":"td";return(t.align?`<${n} align="${t.align}">`:`<${n}>`)+e+`</${n}>
`}strong(e){return`<strong>${e}</strong>`}em(e){return`<em>${e}</em>`}codespan(e){return`<code>${e}</code>`}br(){return this.options.xhtml?"<br/>":"<br>"}del(e){return`<del>${e}</del>`}link(e,t,n){if(null===(e=Pi(this.options.sanitize,this.options.baseUrl,e)))return n;let r='<a href="'+e+'"';return t&&(r+=' title="'+t+'"'),r+=">"+n+"</a>"}image(e,t,n){if(null===(e=Pi(this.options.sanitize,this.options.baseUrl,e)))return n;let r=`<img src="${e}" alt="${n}"`;return t&&(r+=` title="${t}"`),r+=this.options.xhtml?"/>":">"}text(e){return e}}class Yi{strong(e){return e}em(e){return e}codespan(e){return e}del(e){return e}html(e){return e}text(e){return e}link(e,t,n){return""+n}image(e,t,n){return""+n}br(){return""}}class eo{constructor(){this.seen={}}serialize(e){return e.toLowerCase().trim().replace(/<[!\/a-z].*?>/gi,"").replace(/[\u2000-\u206F\u2E00-\u2E7F\\'!"#$%&()*+,./:;<=>?@[\]^`{|}~]/g,"").replace(/\s/g,"-")}getNextSafeSlug(e,t){let n=e,r=0;if(this.seen.hasOwnProperty(n))for(r=this.seen[e];r++,n=e+"-"+r,this.seen.hasOwnProperty(n););return t||(this.seen[e]=r,this.seen[n]=0),n}slug(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},n=this.serialize(e);return this.getNextSafeSlug(n,t.dryrun)}}class to{constructor(e){this.options=e||$i,this.options.renderer=this.options.renderer||new Xi,this.renderer=this.options.renderer,this.renderer.options=this.options,this.textRenderer=new Yi,this.slugger=new eo}static parse(e,t){return new to(t).parse(e)}static parseInline(e,t){return new to(t).parseInline(e)}parse(e){let t,n,r,l,i,o,s,a,c,u,p,d,h,f,g,v,m,y,w,k=!(1<arguments.length&&void 0!==arguments[1])||arguments[1],b="";var x=e.length;for(t=0;t<x;t++)if(u=e[t],this.options.extensions&&this.options.extensions.renderers&&this.options.extensions.renderers[u.type]&&(!1!==(w=this.options.extensions.renderers[u.type].call({parser:this},u))||!["space","hr","heading","code","table","blockquote","list","html","paragraph","text"].includes(u.type)))b+=w||"";else switch(u.type){case"space":continue;case"hr":b+=this.renderer.hr();continue;case"heading":b+=this.renderer.heading(this.parseInline(u.tokens),u.depth,ji(this.parseInline(u.tokens,this.textRenderer)),this.slugger);continue;case"code":b+=this.renderer.code(u.text,u.lang,u.escaped);continue;case"table":for(a="",s="",l=u.header.length,n=0;n<l;n++)s+=this.renderer.tablecell(this.parseInline(u.header[n].tokens),{header:!0,align:u.align[n]});for(a+=this.renderer.tablerow(s),c="",l=u.rows.length,n=0;n<l;n++){for(o=u.rows[n],s="",i=o.length,r=0;r<i;r++)s+=this.renderer.tablecell(this.parseInline(o[r].tokens),{header:!1,align:u.align[r]});c+=this.renderer.tablerow(s)}b+=this.renderer.table(a,c);continue;case"blockquote":c=this.parse(u.tokens),b+=this.renderer.blockquote(c);continue;case"list":for(p=u.ordered,d=u.start,h=u.loose,l=u.items.length,c="",n=0;n<l;n++)v=(g=u.items[n]).checked,m=g.task,f="",g.task&&(y=this.renderer.checkbox(v),h?0<g.tokens.length&&"paragraph"===g.tokens[0].type?(g.tokens[0].text=y+" "+g.tokens[0].text,g.tokens[0].tokens&&0<g.tokens[0].tokens.length&&"text"===g.tokens[0].tokens[0].type&&(g.tokens[0].tokens[0].text=y+" "+g.tokens[0].tokens[0].text)):g.tokens.unshift({type:"text",text:y}):f+=y),f+=this.parse(g.tokens,h),c+=this.renderer.listitem(f,m,v);b+=this.renderer.list(c,p,d);continue;case"html":b+=this.renderer.html(u.text);continue;case"paragraph":b+=this.renderer.paragraph(this.parseInline(u.tokens));continue;case"text":for(c=u.tokens?this.parseInline(u.tokens):u.text;t+1<x&&"text"===e[t+1].type;)u=e[++t],c+="\n"+(u.tokens?this.parseInline(u.tokens):u.text);b+=k?this.renderer.paragraph(c):c;continue;default:{const e='Token with "'+u.type+'" type was not found.';if(this.options.silent)return void console.error(e);throw new Error(e)}}return b}parseInline(e,t){t=t||this.renderer;let n,r,l,i="";var o=e.length;for(n=0;n<o;n++)if(r=e[n],this.options.extensions&&this.options.extensions.renderers&&this.options.extensions.renderers[r.type]&&(!1!==(l=this.options.extensions.renderers[r.type].call({parser:this},r))||!["escape","html","link","image","strong",
![${t.name}](${e})`)}).catch(e=>{alert(e.message),f.value=f.value.replace(n,"")}).then(()=>{A.value=!1})},V=e=>{var t;e.dataTransfer?.items&&(t=Si(e.dataTransfer.items))&&L.value&&(T(t),e.preventDefault())},N=e=>{e.clipboardData&&(e=Si(e.clipboardData.items))&&L.value&&T(e)},D=()=>{const e=n.value;e.files&&L.value&&T(e.files[0]).then(()=>{e.value=""})},j=async()=>{const{serverURL:e,lang:t,login:i,wordLimit:n,requiredMeta:r,recaptchaV3Key:l,turnstileKey:o}=h.value,s=await(async()=>{if(!navigator)return"";const e=navigator["userAgentData"];let t=navigator.userAgent;if(!e||"Windows"!==e.platform)return t;const n=(await e.getHighEntropyValues(["platformVersion"]))["platformVersion"];return t=n&&13<=parseInt(n.split(".")[0])?t.replace("Windows NT 10.0","Windows NT 11.0"):t})(),a={comment:$.value,nick:g.value.nick,mail:g.value.mail,link:g.value.link,url:h.value.path,ua:s};if(v.value?.token)a.nick=v.value.display_name,a.mail=v.value.email,a.link=v.value.url;else{if("force"===i)return;if(-1<r.indexOf("nick")&&!a.nick)return m.value.nick?.focus(),alert(E.value.nickError);if(-1<r.indexOf("mail")&&!a.mail||a.mail&&(c=a.mail,!ve.test(c)))return m.value.mail?.focus(),alert(E.value.mailError);a.nick||(a.nick=E.value.anonymous)}var c,u;if(a.comment){if(!S.value)return alert(E.value.wordHint.replace("$0",n[0].toString()).replace("$1",n[1].toString()).replace("$2",x.value.toString()));a.comment=lo(a.comment,w.value.map),d.replyId&&d.rootId&&(a.pid=d.replyId,a.rid=d.rootId,a.at=d.replyUser),A.value=!0;try{l&&(a.recaptchaV3=await(e=>{const n=jo[e]??(jo[e]=$o.load(e,{useRecaptchaNet:!0,autoHideBadge:!0}));return{execute:t=>n.then(e=>e.execute(t))}})(l).execute("social")),o&&(a.turnstile=(u=o,await(async t=>{const e=function(o,e,t){let s=1<arguments.length&&void 0!==e?e:si,n=2<arguments.length&&void 0!==t?t:{};const{immediate:r=!0,manual:l=!1,type:a="text/javascript",async:c=!0,crossOrigin:u,referrerPolicy:p,noModule:d,defer:h,document:f=di,attrs:g={}}=n,v=te(null);let m=null;function i(){return m=m||(i=!(0<arguments.length&&void 0!==arguments[0])||arguments[0],new Promise((t,r)=>{const l=e=>(v.value=e,t(e),e);if(f){let e=!1,n=f.querySelector(`script[src="${ri(o)}"]`);n?n.hasAttribute("data-loaded")&&l(n):((n=f.createElement("script")).type=a,n.async=c,n.src=ri(o),h&&(n.defer=h),u&&(n.crossOrigin=u),d&&(n.noModule=d),p&&(n.referrerPolicy=p),Object.entries(g).forEach(e=>{var[e,t]=e;return null==n?void 0:n.setAttribute(e,t)}),e=!0),n.addEventListener("error",e=>r(e)),n.addEventListener("abort",e=>r(e)),n.addEventListener("load",()=>{n.setAttribute("data-loaded","true"),s(n),l(n)}),e&&(n=f.head.appendChild(n)),i||l(n)}else t(!1)}));var i}var y,w=()=>{var e;f&&(m=null,v.value&&(v.value=null),(e=f.querySelector(`script[src="${ri(o)}"]`))&&f.head.removeChild(e))};return r&&!l&&ui(i),l||(y=w,pl()&&cr(y)),{scriptTag:v,load:i,unload:w}}("https://challenges.cloudflare.com/turnstile/v0/api.js",void 0,{async:!1})["load"],n=(await e(),window?.turnstile);return new Promise(e=>{n?.ready(()=>{n?.render(".wl-captcha-container",{sitekey:u,action:t,size:"compact",callback:e})})})})("social")));const i={serverURL:e,lang:t,token:v.value?.token,comment:a},h=await(d.edit?he({objectId:d.edit.objectId,...i}):(()=>{var{serverURL:e,lang:t,token:n,comment:r}=i;const l={"Content-Type":"application/json"};return n&&(l.Authorization="Bearer "+n),fetch(e+"/comment?lang="+t,{method:"POST",headers:l,body:JSON.stringify(r)}).then(e=>e.json())})());if(A.value=!1,h.errmsg)return alert(h.errmsg);p("submit",h.data),f.value="",b.value="",d.replyId&&p("cancelReply"),d.edit?.objectId&&p("cancelEdit")}catch(e){A.value=!1,alert(e.message)}}else y.value?.focus()},H=e=>{e.preventDefault();var{lang:i,serverURL:o}=h.value;(()=>{var{lang:e,serverURL:t}={serverURL:o,lang:i};const n=(window.innerWidth-450)/2,r=(window.innerHeight-450)/2,l=window.open(t+"/ui/login?lng="+encodeURIComponent(e),"_blank",`width=450,height=450,left=${n},top=${r},scrollbars=no,resizable=no,status=no,location=no,toolbar=no,menubar=no`);return l?.postMessage({type:"TOKEN",data:null},"*"),new Promise(t=>{const n=e=>{