scrapbox-url-customizer
/villagepump/scrapbox-url-customizer
https://scrapbox-bundler.vercel.app/?url=https://jsr.io/@takker/scrapbox-url-customizer/0.4.8/examples/popup.ts&bundle&minify&run
で生成したコードを貼り付けている
code:script.js
function ae(e){return Array.isArray(e)}function A(e){return typeof e=="string"}var $e=(e,r)=>{if(!(e instanceof HTMLDivElement))throw new TypeError("${r}" must be HTMLDivElememt but actual is "${e}")};var je=(e,r)=>{if(!(e instanceof HTMLTextAreaElement))throw new TypeError("${r}" must be HTMLTextAreaElement but actual is "${e}")};var K=()=>{let e=document.getElementById("text-input");if(e)return je(e,"textarea#text-input"),e};var De=()=>Kt(document.getElementsByClassName("status-bar")?.0,"div.status-bar"),Kt=(e,r)=>{if(e)return $e(e,r),e};var ko=2**31-1;var Ve=e=>{let r=K();if(!r)throw Error("#text-input is not ditected.");r.focus(),r.value=e;let t=new InputEvent("input",{bubbles:!0});return r.dispatchEvent(t),scrapbox.Page.waitForSave()};var We=()=>{let e=De();if(!e)throw new Error("div.status-bar can't be found");let r=document.createElement("div");return e.append(r),{render:(...t)=>{r.textContent="";let o=qe(...t);o&&r.append(o)},dispose:()=>r.remove(),Symbol.dispose:()=>r.remove()}},qe=(...e)=>{let r=e.flatMap(o=>{switch(o.type){case"spinner":returner();case"check-circle":returntr();case"exclamation-triangle":returnrr();case"text":returnpe(o.text);case"group":{let n=qe(...o.items);return n?n:[]}}});if(r.length===0)return;if(r.length===1)return r0;let t=document.createElement("span");return t.classList.add("item-group"),t.append(...r),t},pe=e=>{let r=document.createElement("span");return r.classList.add("item"),r.append(e),r},er=()=>{let e=document.createElement("i");return e.classList.add("fa","fa-spinner"),pe(e)},tr=()=>{let e=document.createElement("i");return e.classList.add("kamon","kamon-check-circle"),pe(e)},rr=()=>{let e=document.createElement("i");return e.classList.add("fas","fa-exclamation-triangle"),pe(e)};var Fe=(e,...r)=>{let t=r.reduce((o,n)=>A(o)?o:o instanceof Promise?o.then(s=>A(s)?s:n(s)):n(o),e);return t instanceof Promise?t.then(o=>${o}):${t}};function N(e){return e.val}function M(e){return e.err}var Ke=" must not return ",nr="transformer",sr="recoverer",ir="defaultValue",ce=nr+Ke,W="called with ",ue=ir+" must not be ",me=sr+Ke;var ar="Ok",ze="Err",Ye=W+ze,Xe=W+ar,pr="Carrying E in "+ze+" instead of throwing it directly. See .cause",Ae="an instance of Error of the current realm.",cs="The thrown value is not "+Ae,us="The contained E should be "+Ae,cr="This .cause is not "+Ae;function w(e){return e.ok}function S(e){return{ok:!0,val:e,err:null}}function T(e){return!e.ok}function $(e){return{ok:!1,val:null,err:e}}function P(e){return Je(e,Ye)}function C(e){return Qe(e,Xe)}function Je(e,r){if(T(e))throw new TypeError(r);return e.val}function Qe(e,r){if(w(e))throw new TypeError(r);return e.err}async function q(e,r){if(T(e))return e;let t=N(e),o=await r(t);return S(o)}function ke(e,r,t){if(w(e)){let n=N(e);return t(n)}let o=M(e);return r(o)}var le="null",Ri=ce+le,lr=W+le,yi=ue+le,gi=me+le;var fe="undefined",wi=ce+fe,fr=W+fe,Oi=ue+fe,bi=me+fe;var z=e=>e.ok?S(e):$({name:"HTTPError",message:${e.status} ${e.statusText},response:e});var et=e=>window.GM_fetch?.(https://cdn.syndication.twimg.com/tweet-result?id=${e}&token=x)?.then?.(r=>q(z(r),t=>t.json()));function O(e){return e.val}function L(e){return e.err}var tt=" must not return ",Er="transformer",Rr="recoverer",yr="defaultValue",Y=Er+tt,v="called with ",X=yr+" must not be ",J=Rr+tt;var gr="Ok",rt="Err",ot=v+rt,hr=v+gr,xr="Carrying E in "+rt+" instead of throwing it directly. See .cause",Me="an instance of Error of the current realm.",$p="The thrown value is not "+Me,jp="The contained E should be "+Me,Tr="This .cause is not "+Me;function _(e){return e.ok}function E(e){return{ok:!0,val:e,err:null}}function u(e){return!e.ok}function b(e){return{ok:!1,val:null,err:e}}function d(e){return nt(e,ot)}function nt(e,r){if(u(e))throw new TypeError(r);return e.val}function Z(e,r){if(u(e))return e;let t=O(e),o=r(t);return E(o)}async function y(e,r){if(u(e))return e;let t=O(e),o=await r(t);return E(o)}async function x(e,r){if(_(e))return e;let t=L(e),o=await r(t);return b(o)}async function de(e,r){if(_(e))return e;let t=L(e);return await r(t)}var Ee="null",eu=Y+Ee,Or=v+Ee,tu=X+Ee,ru=J+Ee;var Re="undefined",au=Y+Re,br=v+Re,pu=X+Re,cu=J+Re;var g=e=>e.ok?E(e):b({name:"HTTPError",message:${e.status} ${e.statusText},response:e});var it=async(e,r)=>{let t=new Request(e,r);try{return E(await globalThis.fetch(t))}catch(o){if(o instanceof DOMException&&o.name==="AbortError")return b({name:"AbortError",message:o.message,request:t});if(o instanceof TypeError)return b({name:"NetworkError",message:o.message,request:t});throw o}};var R=e=>{let{fetch:r=it,hostName:t="scrapbox.io",...o}=e;return{fetch:r,hostName:t,...o}};var at=e=>{let{sid:r,hostName:t}=R(e??{});return new Request(https://${t}/api/users/me,r?{headers:{Cookie:h(r)}}:void 0)},pt=e=>y(g(e),async r=>await r.json()),ct=(()=>{let e=async r=>{let{fetch:t,...o}=R(r??{}),n=await t(at(o));return u(n)?n:pt(d(n))};return e.toRequest=at,e.fromResponse=pt,e})();var h=e=>connect.sid=${e},B=async e=>{let r=e?.csrf??globalThis._csrf;return r?E(r):Z(await ct(e),t=>t.csrfToken)};function ye(e,r={}){if(e===null)return"null";if(Array.isArray(e))return Ur(e,r);switch(typeof e){case"string":return JSON.stringify(e);case"bigint":return${e}n;case"object":return e.constructor?.name!=="Object"?e.constructor?.name:Fr(e,r);case"function":return e.name||"(anonymous)"}return e?.toString()??"undefined"}function Ur(e,r){let{threshold:t=20}=r,o=e.map(i=>ye(i,r)),n=o.join(", ");if(n.length<=t)return[${n}];let s=o.join(`,
);return[
${ut(2,s)}
]}function Fr(e,r){let{threshold:t=20}=r,o=[...Object.keys(e),...Object.getOwnPropertySymbols(e)].map(i=>${i.toString()}: ${ye(ei,r)}),n=o.join(", ");if(n.length<=t)return{${n}};let s=o.join(,
);return{
${ut(2,s)}
}}function ut(e,r){let t=" ".repeat(e);return r.split(
).map(o=>${t}${o}).join(
)}function ge(e,r,...t){let o;return Object.defineProperties(e,{name:{get:()=>o||(o=${r}(${t.map(n=>ye(n)).join(", ")}),o)}})}function mt(e){return ge(r=>ae(r)&&r.every(t=>e(t)),"isArrayOf",e)}function Se(e){let r=new Set(e);return ge(t=>r.has(t),"isLiteralOneOf",e)}function Pe(e){return e!=null&&!Array.isArray(e)&&typeof e=="object"}var U=async(e,r)=>{let t=e.response.clone(),o=Se(r);try{let n=await t.json();if(!Pe(n))return;if(t.status===422){if(!A(n.message))return;for(let s of["NoQueryError","InvalidURLError"])if(r.includes(s))return{name:s,message:n.message}}return!o(n.name)||!A(n.message)?void 0:n.name==="NotLoggedInError"?!Pe(n.detals)||!A(n.detals.project)||!mt(Ar)(n.detals.loginStrategies)?void 0:{name:n.name,message:n.message,details:{project:n.detals.project,loginStrategies:n.detals.loginStrategies}}:{name:n.name,message:n.message}}catch(n){if(n instanceof SyntaxError)return;throw n}},Ar=Se(["google","github","microsoft","gyazo","email","saml","easy-trial"]);var he="null or undefined",Q=Y+he,kr=v+he,Ie=X+he,xe=J+he;function I(e){return e==null}function Te(e){return I(e)?b(void 0):E(e)}var lt=(e,r)=>{let{sid:t,hostName:o}=R(r??{});return new Request(https://${o}/api/projects/${e},t?{headers:{Cookie:h(t)}}:void 0)},ft=async e=>y(await x(g(e),async r=>await U(r,["NotFoundError","NotLoggedInError","NotMemberError"])??r),r=>r.json()),dt=(()=>{let e=async(r,t)=>{let{fetch:o}=R(t??{}),n=lt(r,t),s=await o(n);return u(s)?s:ft(d(s))};return e.toRequest=lt,e.fromResponse=ft,e})();var Et=async(e,r)=>{let{sid:t,hostName:o,fetch:n}=R(r??{}),s=await B(r);if(u(s))return s;let i=new Request(https://${o}/api/embed-text/url?url=${encodeURIComponent(${e})},{method:"POST",headers:{"Content-Type":"application/json;charset=utf-8","X-CSRF-TOKEN":d(s),...t?{Cookie:h(t)}:{}},body:JSON.stringify({timeout:3e3})}),c=await n(i);return u(c)?c:y(await x(g(d(c)),async p=>await U(p,["SessionError","BadRequestError","InvalidURLError"])??p),async p=>{let{title:f}=await p.json();return f})};var Rt=async(e,r)=>{let{sid:t,hostName:o,fetch:n}=R(r??{}),s=await B(r);if(u(s))return s;let i=new Request(https://${o}/api/embed-text/twitter?url=${encodeURIComponent(${e})},{method:"POST",headers:{"Content-Type":"application/json;charset=utf-8","X-CSRF-TOKEN":d(s),...t?{Cookie:h(t)}:{}},body:JSON.stringify({timeout:3e3})}),c=await n(i);return u(c)?c:x(await y(g(d(c)),p=>p.json()),async p=>p.response.status===422?{name:"InvalidURLError",message:(await p.response.json()).message}:await U(p,["SessionError","BadRequestError"])??p)};var yt=async e=>{let{fetch:r,sid:t,hostName:o,gyazoTeamsName:n}=R(e??{}),s=new Request(https://${o}/api/login/gyazo/oauth-upload/token${n??gyazoTeamsName=${n}:""},t?{headers:{Cookie:h(t)}}:void 0),i=await r(s);return u(i)?i:y(await x(g(d(i)),async c=>await U(c,["NotLoggedInError"])??c),c=>c.json().then(p=>p.token))};var xt=e=>{let r=typeof e=="string"?new TextEncoder().encode(e):ArrayBuffer.isView(e)?new Uint8Array(e.buffer,e.byteOffset,e.byteLength):new Uint8Array(e),t=[1732584193,4023233417,2562383102,271733878],o=new Uint8Array(Ce),n=0,s=0,i=0;[t,o,n,s,i]=ht(t,o,n,s,i,r);let c=Ce-n;c<9&&(c+=Ce);let p=new Uint8Array(c);p[0]=128,[s,i]=[s<<3,i<<3|s>>>29],p[p.length-8]=s&255,p[p.length-7]=s>>>8&255,p[p.length-6]=s>>>16&255,p[p.length-5]=s>>>24&255,p[p.length-4]=i&255,p[p.length-3]=i>>>8&255,p[p.length-2]=i>>>16&255,p[p.length-1]=i>>>24&255,[t,o,n,s,i]=ht(t,o,n,s,i,new Uint8Array(p.buffer));let f=new ArrayBuffer(16),m=new DataView(f);return m.setUint32(0,t[0],!0),m.setUint32(4,t[1],!0),m.setUint32(8,t[2],!0),m.setUint32(12,t[3],!0),f},Ce=64,a=(e,r)=>e<<r|e>>>32-r,F=(e,r)=>e[r]|e[r+1]<<8|e[r+2]<<16|e[r+3]<<24,gt=(e,r)=>{let[t,o,n,s]=e,i=F(r,0),c=F(r,4),p=F(r,8),f=F(r,12),m=F(r,16),l=F(r,20),k=F(r,24),j=F(r,28),D=F(r,32),V=F(r,36),te=F(r,40),re=F(r,44),oe=F(r,48),ne=F(r,52),se=F(r,56),ie=F(r,60);return t=o+a(((n^s)&o^s)+t+i+3614090360,7),s=t+a(((o^n)&t^n)+s+c+3905402710,12),n=s+a(((t^o)&s^o)+n+p+606105819,17),o=n+a(((s^t)&n^t)+o+f+3250441966,22),t=o+a(((n^s)&o^s)+t+m+4118548399,7),s=t+a(((o^n)&t^n)+s+l+1200080426,12),n=s+a(((t^o)&s^o)+n+k+2821735955,17),o=n+a(((s^t)&n^t)+o+j+4249261313,22),t=o+a(((n^s)&o^s)+t+D+1770035416,7),s=t+a(((o^n)&t^n)+s+V+2336552879,12),n=s+a(((t^o)&s^o)+n+te+4294925233,17),o=n+a(((s^t)&n^t)+o+re+2304563134,22),t=o+a(((n^s)&o^s)+t+oe+1804603682,7),s=t+a(((o^n)&t^n)+s+ne+4254626195,12),n=s+a(((t^o)&s^o)+n+se+2792965006,17),o=n+a(((s^t)&n^t)+o+ie+1236535329,22),t=o+a(((o^n)&s^n)+t+c+4129170786,5),s=t+a(((t^o)&n^o)+s+k+3225465664,9),n=s+a(((s^t)&o^t)+n+re+643717713,14),o=n+a(((n^s)&t^s)+o+i+3921069994,20),t=o+a(((o^n)&s^n)+t+l+3593408605,5),s=t+a(((t^o)&n^o)+s+te+38016083,9),n=s+a(((s^t)&o^t)+n+ie+3634488961,14),o=n+a(((n^s)&t^s)+o+m+3889429448,20),t=o+a(((o^n)&s^n)+t+V+568446438,5),s=t+a(((t^o)&n^o)+s+se+3275163606,9),n=s+a(((s^t)&o^t)+n+f+4107603335,14),o=n+a(((n^s)&t^s)+o+D+1163531501,20),t=o+a(((o^n)&s^n)+t+ne+2850285829,5),s=t+a(((t^o)&n^o)+s+p+4243563512,9),n=s+a(((s^t)&o^t)+n+j+1735328473,14),o=n+a(((n^s)&t^s)+o+oe+2368359562,20),t=o+a((o^n^s)+t+l+4294588738,4),s=t+a((t^o^n)+s+D+2272392833,11),n=s+a((s^t^o)+n+re+1839030562,16),o=n+a((n^s^t)+o+se+4259657740,23),t=o+a((o^n^s)+t+c+2763975236,4),s=t+a((t^o^n)+s+m+1272893353,11),n=s+a((s^t^o)+n+j+4139469664,16),o=n+a((n^s^t)+o+te+3200236656,23),t=o+a((o^n^s)+t+ne+681279174,4),s=t+a((t^o^n)+s+i+3936430074,11),n=s+a((s^t^o)+n+f+3572445317,16),o=n+a((n^s^t)+o+k+76029189,23),t=o+a((o^n^s)+t+V+3654602809,4),s=t+a((t^o^n)+s+oe+3873151461,11),n=s+a((s^t^o)+n+ie+530742520,16),o=n+a((n^s^t)+o+p+3299628645,23),t=o+a((n^(o|~s))+t+i+4096336452,6),s=t+a((o^(t|~n))+s+j+1126891415,10),n=s+a((t^(s|~o))+n+se+2878612391,15),o=n+a((s^(n|~t))+o+l+4237533241,21),t=o+a((n^(o|~s))+t+oe+1700485571,6),s=t+a((o^(t|~n))+s+f+2399980690,10),n=s+a((t^(s|~o))+n+te+4293915773,15),o=n+a((s^(n|~t))+o+c+2240044497,21),t=o+a((n^(o|~s))+t+D+1873313359,6),s=t+a((o^(t|~n))+s+ie+4264355552,10),n=s+a((t^(s|~o))+n+k+2734768916,15),o=n+a((s^(n|~t))+o+ne+1309151649,21),t=o+a((n^(o|~s))+t+m+4149444226,6),s=t+a((o^(t|~n))+s+re+3174756917,10),n=s+a((t^(s|~o))+n+p+718787259,15),o=n+a((s^(n|~t))+o+V+3951481745,21),[e[0]+t>>>0,e[1]+o>>>0,e[2]+n>>>0,e[3]+s>>>0]},ht=(e,r,t,o,n,s)=>{let i=64-t;if(s.length<i)r.set(s,t),t+=s.length;else{r.set(s.slice(0,i),t),e=gt(e,r);let c=i;for(;c+64<=s.length;)e=gt(e,s.slice(c,c+64)),c+=64;r.fill(0).set(s.slice(c),0),t=s.length-c}return[o,n]=Sr(o,n,s.length),[e,r,t,o,n]},Sr=(e,r,t)=>(e+=t,e>4294967295&&(r+=1),[e>>>0,r]);var Pr=new TextEncoder().encode("0123456789abcdef"),Tt=new Uint8Array(128).fill(16);Pr.forEach((e,r)=>Tt[e]=r);new TextEncoder().encode("ABCDEF").forEach((e,r)=>Tt[e]=r+10);function _t(e){return e*2}function wt(e,r,t,o){for(;r<e.length;++r){let n=e[r];e[t++]=o[n>>4],e[t++]=o[n&15]}return t}function Ot(e,r){let t=e.length;if(e.byteOffset){let o=new Uint8Array(e.buffer);o.set(e),e=o.subarray(0,t)}return e=new Uint8Array(e.buffer.transfer(r)),e.set(e.subarray(0,t),r-t),[e,r-t]}var bt=new TextEncoder().encode("0123456789abcdef"),Nt=new Uint8Array(128).fill(16);bt.forEach((e,r)=>Nt[e]=r);new TextEncoder().encode("ABCDEF").forEach((e,r)=>Nt[e]=r+10);function Lt(e){typeof e=="string"?e=new TextEncoder().encode(e):e instanceof ArrayBuffer?e=new Uint8Array(e).slice():e=e.slice();let[r,t]=Ot(e,_t(e.length));return wt(r,t,0,bt),new TextDecoder().decode(r)}var Ut=async(e,r,t)=>{let o=${Lt(xt(await e.arrayBuffer()))},n=await Ir(e,r,o,t);if(u(n))return n;let s=d(n);if("embedUrl"in s)return E(s);let i=await Cr(s.signedUrl,e,t);return u(i)?i:vr(r,s.fileId,o,t)},Ir=async(e,r,t,o)=>{let{sid:n,hostName:s,fetch:i,csrf:c}=R(o??{}),p={md5:t,size:e.size,contentType:e.type,name:e.name},f=await de(Te(c),()=>B(o));if(u(f))return f;let m=new Request(https://${s}/api/gcs/${r}/upload-request,{method:"POST",body:JSON.stringify(p),headers:{"Content-Type":"application/json;charset=utf-8","X-CSRF-TOKEN":d(f),...n?{Cookie:h(n)}:{}}}),l=await i(m);return u(l)?l:y(await x(g(d(l)),async k=>k.response.status===402?{name:"FileCapacityError",message:(await k.response.json()).message}:k),k=>k.json())},Cr=async(e,r,t)=>{let{sid:o,fetch:n}=R(t??{}),s=await n(e,{method:"PUT",body:r,headers:{"Content-Type":r.type,...o?{Cookie:h(o)}:{}}});return u(s)?s:Z(await x(g(d(s)),async i=>i.response.headers.get("Content-Type")?.includes?.("/xml")?{name:"GCSError",message:await i.response.text()}:i),()=>{})},vr=async(e,r,t,o)=>{let{sid:n,hostName:s,fetch:i,csrf:c}=R(o??{}),p=await de(Te(c),()=>B(o));if(u(p))return p;let f=new Request(https://${s}/api/gcs/${e}/verify,{method:"POST",body:JSON.stringify({md5:t,fileId:r}),headers:{"Content-Type":"application/json;charset=utf-8","X-CSRF-TOKEN":d(p),...n?{Cookie:h(n)}:{}}}),m=await i(f);return u(m)?m:y(await x(g(d(m)),async l=>l.response.status===404?{name:"NotFoundError",message:(await l.response.json()).message}:l),l=>l.json())};var _e=e=>{let{fetch:r=globalThis.fetch,...t}=e;return{fetch:r,...t}};var Ft=(e,r)=>{let{title:t,description:o,metadataIsPublic:n,collectionId:s,refererURL:i,accessToken:c,created:p,app:f,fetch:m}=_e(r),l=new FormData;return l.append("imagedata",e),l.append("access_token",c),i&&l.append("referer_url",i.toString()),f!==void 0&&l.append("app",f),t!==void 0&&l.append("title",t),o!=null&&l.append("desc",o),s&&l.append("collection_id",s),n&&l.append("metadata_is_public","true"),p!==void 0&&l.append("created_at",${p}),m("https://upload.gyazo.com/api/upload",{method:"POST",mode:"cors",credentials:"omit",body:l})};var At=(e,r)=>{let t=new FormData;return t.append("data",e),t.append("metadata",JSON.stringify({app:"Gyazo",title:e.name})),GM_fetch(https://gif.gyazo.com/${r?.teams?"teams":"gif"}/upload,{method:"POST",body:t,credentials:"include",headers:{Origin:"https://gyazo.com","sec-fetch-site":"same-site"},referrer:"https://gyazo.com/"})};var we="",kt=!1,Oe=new Map,Mt=async(e,r,t,o)=>{let n=Oe.get(e.href);if(n)return n;if(e.hostname==="video.twimg.com"||${e}.endsWith(".svg")){let f=await GM_fetch(e);if(!f.ok)return;let m=f.headers.get("content-type")?.split?.(";")?.[0]??${e}.endsWith(".mp4")?"video/mp4":"video/webm",l=new File([await f.blob()],o||${r},{type:m});if(m==="video/mp4"){let D=await At(l);if(D.ok){let V=new URL(await D.text());return Oe.set(e.href,V),V}}let k=await Ut(l,t);if(T(k))throw Error(C(k).name);let j=new URL(P(k).embedUrl);return Oe.set(e.href,j),j}if(e.hostname!=="pbs.twimg.com"||!e.pathname.startsWith("/media"))return;if(kt){if(!we)return}else{let f=await yt();if(kt=!0,T(f)){alert("You haven't logged in Gyazo yet, so you can only upload images to scrapbox.io.");return}if(we=P(f)||"",!we){alert("You haven't connect Gyazo to scrapbox.io yet.");return}}let s=await GM_fetch(e);if(!s.ok)return;let i=await Ft(await s.blob(),{accessToken:we,refererURL:r,description:o});if(!i.ok)throw new Error(Gyazo upload failed: ${i.status} ${i.statusText});let c=await i.json(),p=new URL(c.permalink_url);return Oe.set(e.href,p),p};var It=[["&","&amp;"],["<","&lt;"],[">","&gt;"],['"',"&quot;"],["'","&#39;"]],Br=Object.fromEntries([...It.map(([e,r])=>[r,e]),["&apos;","'"],["&nbsp;"," "]]),Hr=new Map(It),By=new RegExp([${...Hr.keys().join("")}],"g");var Gr={entityList:Br},$r=1114111,jr=/&#([0-9]+);/g,Dr=/&#x(\p{AHex}+);/gu,St=new WeakMap;function ve(e,r={}){let{entityList:t}={...Gr,...r},o=St.get(t);return o||(o=new RegExp((${Object.keys(t).sort((n,s)=>s.length-n.length).join("|")}),"g"),St.set(t,o)),e.replaceAll(o,n=>t[n]).replaceAll(jr,(n,s)=>Pt(s,10)).replaceAll(Dr,(n,s)=>Pt(s,16))}function Pt(e,r){let t=parseInt(e,r);return t>$r?"�":String.fromCodePoint(t)}var be=e=>{let r={name:e.user.name,screenName:e.user.screen_name},t=new Date(e.created_at),o=[...e.entities.hashtags?.map?.(i=>({type:"hashtag",...i}))??[],...e.entities.symbols?.map?.(i=>({type:"symbol",...i}))??[],...e.entities.user_mentions?.map?.(i=>({type:"mention",name:i.name,screenName:i.screen_name,indices:i.indices}))??[],...e.entities.urls?.map?.(i=>{let c={type:"url",indices:i.indices,url:new URL(i.expanded_url)};if(e.card&&e.card?.url===i.url){let{description:p,title:f}=e.card.binding_values,m="STRING";p?.type===m&&(c.description=p.string_value),f?.type===m&&(c.title=f.string_value)}return c})??[],...e.entities.media?.map?.(i=>({type:"media",indices:i.indices,media:e.mediaDetails?.flatMap?.(c=>c.url===i.url?[{type:c.type,url:new URL(c.video_info?.variants?.sort?.((p,f)=>(f.bitrate??0)-(p.bitrate??0))?.[0].url??c.media_url_https)}]:[])??[]}))??[]].sort((i,c)=>i.indices[0]-c.indices[0]),n=[];{let i=0,c=e.text;for(let{indices:p,...f}of o){let m=[...c].slice(0,p[0]-i).join("");n.push({type:"plain",text:ve(m)}),n.push(f),c=[...c].slice(p[1]-i).join(""),i=p[1]}c&&n.push({type:"plain",text:ve(c)})}let s={id:e.id_str,content:n,author:r,posted:t,replyCount:"reply_count"in e?e.reply_count:e.conversation_count};return e.self_thread&&(s.rootId=e.self_thread.id_str),e.in_reply_to_status_id_str&&(s.replyId=e.in_reply_to_status_id_str),e.parent&&(s.replyTo=be(e.parent)),e.quoted_tweet&&(s.quote=be(e.quoted_tweet)),s};var Vr=["landing","product","enterprise","pricing","try-enterprise","contact","terms","privacy","jp-commercial-act","support","case","features","business","auth","login","logout","oauth2","_","api","app.html","assets","file","files","billing","billings","config","feed","index","io","new","opensearch","project","projects","search","setting","settings","setup-profile","slide","socket.io","stream","user","users"],Ne=(e=scrapbox.Project.name,r=location.host)=>t=>{if(t.host!==r)return t;let[,o,n]=t.pathname.match(/^\/([\w\d][\w\d-]{0,22}[\w\d])(?:\/?|\/(.+))$/)??[];return!o||Vr.includes(o)?t:n?o===e?${decodeURIComponent(n)}:/${o}/${decodeURIComponent(n)}:/${o}};var Ct=(e=Wr)=>r=>{let[,t]=r.href.match(/^https:\/\/(?:www\.|mobile\.|m\.|)(?:twitter|x)\.com\/[A-Za-z0-9_]*\/(?:status|statuses)\/(\d+)/)??[];return t?(async()=>{let o=await(et(t)??Rt(r.href));if(T(o))throw C(o);let n=P(o);return e("images"in n?{...n,id:t}:n,r)})():r},Wr=async e=>{if("images"in e)return ee(e);let{quote:r,replyTo:t,...o}=be(e);return[...t?[...(await ee(t)).split(
).map(n=> > ${n}),...t.quote?(await ee(t.quote)).split(
).map(n=> > ${n}):[]]:[],...(await ee(o)).split(
).map(n=>> ${n}),...r?(await ee(r)).split(
).map(n=>> > ${n}):[]].join(
)},ee=async e=>{let r=new URL(https://twitter.com/${"author"in e?e.author.screenName:e.screenName}/status/${e.id});if("images"in e)return[> @${He(e.screenName)} ${r.origin}${r.pathname},...e.description?.split?.(
)?.map?.(n=>> ${He(n)})??["> [/ no description provided]"],...e.images.length>0?[> ${e.images.map(n=>[${n}])}]:[]].join(
);let t=e.content,o=e.author.screenName;return[@${He(o)} ${r},...(await Promise.all(t.map(async n=>{switch(n.type){case"plain":return n.text;case"hashtag":return #${n.text} ;case"symbol":return #$${n.text} ;case"mention":return@${n.screenName};case"media":{let s=[],i=1;for(;i<n.media.length;i+=2)s.push([${await Be(n.mediai-1,r)}] [${await Be(n.mediai,r)}]);return i===n.media.length&&s.push([${await Be(n.mediai-1,r)}]),
${s.join(`
`)}
}case"url":return${Ne()(n.url)} }}))).join("").split(
)].join(
)},Le="",qr=async()=>{if(Le)return Le;let e=await dt(scrapbox.Project.name);if(T(e))throw new Error(C(e).name);return Le=P(e).id,Le},Be=async(e,r)=>await Mt(e.url,r,await qr(),"")??e.url,He=e=>e.replace(/\b/gm,"").replace(/[\s\r\n\u2028\u2029]+/gm," ").replace(/\s*[[\]]\s*/g," ").trim();var vt=e=>window.GM_fetch?.(https://t.co/${e})?.then?.(r=>q(z(r),async t=>{let o=new DOMParser().parseFromString(await t.text(),"text/html");try{return new URL(o.title)}catch(n){if(n instanceof TypeError)return;throw n}}));var Bt=e=>{let r=window.GM_fetch;if("bit.ly","amzn.to","amzn.asia","goo.gl","s.nikkei.com","apple.co","nico.ms","w.wiki".includes(e.hostname)&&r)return r(e).then(o=>o.ok?new URL(o.url):e);if(e.hostname!=="t.co")return e;let t=vt(e.pathname.slice(1));return t?t.then(o=>ke(o,()=>e,n=>n??e)):e};var Ht=e=>{if(!e.pathname.startsWith("/wiki/"))return e;if(!/^\w+\.wikipedia\.org$/.test(e.hostname)){let,n=e.hostname.match(/^(\w+)\.m\.wikipedia\.org$/)??[];if(!n)return e;e.hostname=${n}.wikipedia.org}let r=decodeURIComponent(e.pathname.slice(6)),t=e.hash?decodeURIComponent(e.hash.slice(1)):"",o=${e.origin}/wiki/${r};return t?[${t} | ${r} - Wikipedia ${o}#${t}]:[${r} - Wikipedia ${o}]};var Gt=e=>{if(e.hostname!=="www.wikiwand.com")return e;let,r,t=e.pathname.match(/^\/(^\/+)\/(^\/+)/)??[];return!r||!t||(e.hostname=${r}.wikipedia.org,e.pathname=/wiki/${t},e.hash=e.hash.startsWith("#/")?#${e.hash.slice(2)}:e.hash),e};var Ge=e=>{if(!e.hostname.startsWith("www.google."))return e;let r=e.searchParams.get("url");return r?new URL(decodeURIComponent(r)):e};var $t=/charset=(^;+)/,jt=e=>window.GM_fetch?.(${e})?.then?.(r=>q(z(r),async t=>{let o=t.headers.get("content-type")?.match?.($t)?.1??await Kr(t.clone());return new TextDecoder(o).decode(await t.arrayBuffer())})),Kr=async e=>{let r=new DOMParser().parseFromString(await e.text(),"text/html");return r.querySelector("metacharset")?.getAttribute?.("charset")??r.querySelector('metahttp-equiv="content-type"')?.getAttribute?.("content")?.match?.($t)?.1??"utf-8"};var Dt=(e=zr)=>async r=>e(await Yr(r),r),zr=(e,r)=>{let t=(A(e)?e:e.title).replace(/\s/g," ").replaceAll("","[").replaceAll("","]");return t?[${r.hash?${decodeURIComponent(r.hash.slice(1))} | :""}${t} ${r}]:${r}},Yr=async e=>{let r=jt(e);if(!r){let o=await Et(e);if(T(o))throw C(o);return P(o)}let t=await r;if(T(t))throw C(t);return new DOMParser().parseFromString(P(t),"text/html")};var Vt=e=>{if(!/^(?:www\.)?amazon(?:\.co|com)?\.(?:au|br|ca|fr|de|in|it|jp|mx|nl|sg|es|tr|ae|uk|cn)$/.test(e.hostname))return e;let,r=e.pathname.match(/\/dp\/(\w\d+)/)??e.pathname.match(/\/gp\/product\/(\w\d+)/)??e.pathname.match(/\/exec\/obidos\/asin\/(\w\d+)/)??e.pathname.match(/\/o\/ASIN\/(\w\d+)/)??[];return r&&(e.hash="",e.search="",e.pathname=/dp/${r}),e};var Wt=e=>{if(!/(?:0-9a-z-\.)?gyazo\.com/.test(e.hostname))return e;let,r=e.pathname.match(/^\/(0-9a-f{32})(?:\/raw)?$/)??[];return r?[https://gyazo.com/${r}]:e};var qt=(e,...r)=>{if(e instanceof URL)return Fe(new URL(e),...r);let t=0,o=0,n=0,s=!1,i=e.split(/(https?:\/\/\S+)/g).map(m=>{if(!/^https?:\/\/\S+$/.test(m))return m;t++;try{let l=Fe(new URL(m),...r);return A(l)?(o++,l):(s=!0,l,m)}catch(l){return console.error(l),n++,m}});if(!s)return i.join("");let{render:c,dispose:p}=We(),f=()=>c({type:"spinner"},{type:"text",text:URL: ${o}/${t} converted, ${n} failed});return f(),Promise.all(i.map(async m=>{if(A(m))return m;try{let l=await m0;return o++,l}catch(l){return console.error(l),n++,m1}finally{f()}})).then(m=>(c({type:"check-circle"},{type:"text",text:URL: ${o}/${t} converted, ${n} failed}),m.join(""))).finally(()=>{setTimeout(p,1e3)})};var Xr=Ge,Bt,Ge,Gt,Vt,Ne(),Wt,Ct(),Ht,Dt();scrapbox.PopupMenu.addButton({title:e=>/https?:\/\/\S+/.test(e)?"URL":"",onClick:e=>{let r=qt(e,...Xr);if(typeof r=="string")return e===r?void 0:r;r.then(t=>{if(e!==t)return Ve(t)})}});