yozbaUserScripts
https://gyazo.com/451b1c93580dccf303c4b9f9af518d38
code:script.js
code:diary-template.js
/* MIT License Copyright (c) 2020 ci7lus */
export const importExternalJs = async (url) =>
new Promise((res, rej) => {
if (document.querySelector(script[src="${url}"])) res()
const script = document.createElement("script")
script.src = url
script.addEventListener("load", res)
script.addEventListener("error", rej)
document.body.appendChild(script)
})
importExternalJs(
);
export function insertText({text}) {
const cursor = document.getElementById('text-input');
cursor.focus();
const start = cursor.selectionStart; // in this case maybe 0
cursor.setRangeText(text);
cursor.selectionStart = cursor.selectionEnd = start + text.length;
const uiEvent = document.createEvent('UIEvent');
uiEvent.initEvent('input', true, false);
cursor.dispatchEvent(uiEvent);
};
scrapbox.PageMenu.addMenu({
title: DailyReport,
onClick: () => {
if (!scrapbox.Page.lines || !scrapbox.Page.lines.length == 1) return
const input = prompt(
"日報テンプレートを展開したい日付を相対(d+)または絶対(2020-1-1)で(入力なしで今日)"
)
if (input === null) return
const diff = parseInt(input.trim() || 0)
const abs = input.split("-").length === 3 && dayjs(input)
if ((Number.isNaN(diff) && !abs) || (abs && !abs.isValid())) return
const today = abs
? abs.startOf("days")
: dayjs().startOf("days").add(diff, "days")
const yesterday = today.clone().subtract(1, "days")
const tomorrow = today.clone().add(1, "days")
console.log(today.format(), yesterday.format(), tomorrow.format())
const conf = confirm(対象の日付は ${today.format("YYYY.MM.DD")} ですか?)
if (!conf) return
insertText({
text: ${today.format("YYYY.MM.DD")}\n<- [${tomorrow.format("YYYY.MM.DD")}] / [${today.format("YYYY.MM")}] / [${yesterday.format("YYYY.MM.DD")}] ->\n\n 朝顔に水をやる\n\n<- [${tomorrow.format("YYYY.MM.DD")}] / [${today.format("YYYY.MM")}] / [${yesterday.format("YYYY.MM.DD")}] ->,
})
},
})
code:alt-t-format.js
scrapbox.TimeStamp.removeAllFormats()
scrapbox.TimeStamp.addFormat("HH:mm")
scrapbox.TimeStamp.addFormat("YYYY.MM.DD")
行頭に引用符をつける
code:quote.js
scrapbox.PopupMenu.addButton({
title: 'quote',
onClick: text => text.split(/\n/).map(line => >${line}).join('\n')
})
code:gmfetch.js
var u=n=>new Headers(n.replace(/\r?\n\t +/g," ").split(/\r\n|\r|\n/).flatMap(e=>{lets,o=e.split(":").map(t=>t.trim());return s?s,o:[]})),l=(n,e)=>new Promise((s,o)=>{let t=Object.fromEntries(new Headers(n instanceof Request?n.headers:e?.headers).entries());n instanceof Request&&(t.Referer=n.referrer,t"Referrer-Policy"=n.referrerPolicy),e?.referrer&&(t.Referer=e.referrer),e?.referrerPolicy&&(t"Referrer-Policy"=e.referrerPolicy);let r=new Request(n,e);if(r.signal?.aborted){o(new DOMException("Aborted","AbortError"));return}let{abort:a}=GM_xmlhttpRequest({method:r.method,url:r.url,headers:t,...e?.body?{data:e.body}:{},anonymous:r.credentials==="omit",responseType:"stream",fetch:!0,onerror:()=>{o(new TypeError("Network request failed"))},ontimeout:()=>{o(new TypeError("Network request timeout"))},onabort:()=>{o(new DOMException("Aborted","AbortError"))},onreadystatechange:i=>{switch(i.readyState){case 2:{let d=new Response(i.response,{status:i.status,statusText:i.statusText,headers:u(i.responseHeaders)});Object.defineProperty(d,"url",{value:i.finalUrl}),s(d);break}case 4:r.signal?.removeEventListener?.("abort",a);break;default:break}}});r.signal?.addEventListener?.("abort",a)});unsafeWindow.GM_fetch=l; code:scrapbox-url-customizer.js
function z(e){return Array.isArray(e)}function L(e){return typeof e=="string"}var xe=(e,r)=>{if(!(e instanceof HTMLDivElement))throw new TypeError("${r}" must be HTMLDivElememt but actual is "${e}")};var we=(e,r)=>{if(!(e instanceof HTMLTextAreaElement))throw new TypeError("${r}" must be HTMLTextAreaElement but actual is "${e}")};var C=()=>{let e=document.getElementById("text-input");if(e)return we(e,"textarea#text-input"),e};var Te=()=>bt(document.getElementsByClassName("status-bar")?.0,"div.status-bar"),bt=(e,r)=>{if(e)return xe(e,r),e};function se(e,r={}){let{signal:t,persistent:n=!0}=r;return t?.aborted?Promise.reject(t.reason):new Promise((o,s)=>{let i=()=>{clearTimeout(a),s(t?.reason)},a=setTimeout(()=>{t?.removeEventListener("abort",i),o()},e);if(t?.addEventListener("abort",i,{once:!0}),n===!1)try{Deno.unrefTimer(a)}catch(l){if(!(l instanceof ReferenceError))throw l;console.error("persistent option is only available in Deno")}})}var Re=async e=>{let r=C();if(!r)throw Error("#text-input is not ditected.");r.focus(),r.value=e;let t=new InputEvent("input",{bubbles:!0});r.dispatchEvent(t),await se(1)};var be=()=>{let e=Te();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 n=Le(...t);n&&r.append(n)},dispose:()=>r.remove()}},Le=(...e)=>{let r=e.flatMap(n=>{switch(n.type){case"spinner":returnMt();case"check-circle":returnvt();case"exclamation-triangle":returnNt();case"text":returnW(n.text);case"group":{let o=Le(...n.items);return o?o:[]}}});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},W=e=>{let r=document.createElement("span");return r.classList.add("item"),r.append(e),r},Mt=()=>{let e=document.createElement("i");return e.classList.add("fa","fa-spinner"),W(e)},vt=()=>{let e=document.createElement("i");return e.classList.add("kamon","kamon-check-circle"),W(e)},Nt=()=>{let e=document.createElement("i");return e.classList.add("fas","fa-exclamation-triangle"),W(e)};var ae=(e,...r)=>{let t=r.reduce((n,o)=>L(n)?n:n instanceof Promise?n.then(s=>L(s)?s:o(s)):o(n),e);return t instanceof Promise?t.then(n=>${n}):${e}};var Pe=" must not return ",St="transformer",Ut="recoverer",_t="defaultValue",_o=St+Pe,ke="called with ",Ao=_t+" must not be ",Ho=Ut+Pe,At="Ok",Fe="Err",Ht=ke+Fe,$t=ke+At,$o="Carrying E in "+Fe+" instead of throwing it directly. See .cause",ce="an instance of Error of the current realm.",jo="The thrown value is not "+ce,Bo="The contained E should be "+ce,qo="This .cause is not "+ce;function Ie(e){return e.ok}function I(e){return{ok:!0,val:e,err:null}}function w(e){return!e.ok}function O(e){return{ok:!1,val:null,err:e}}function P(e){return jt(e,Ht)}function M(e){return Bt(e,$t)}function jt(e,r){if(w(e))throw new TypeError(r);return e.val}function Bt(e,r){if(Ie(e))throw new TypeError(r);return e.err}function Oe(e){return e.val}function qt(e){return e.err}async function S(e,r){if(w(e))return e;let t=Oe(e),n=await r(t);return I(n)}function Me(e,r,t){if(Ie(e)){let o=Oe(e);return t(o)}let n=qt(e);return r(n)}var U=e=>e.ok?I(e):O({name:"HTTPError",message:${e.status} ${e.statusText},response:e});var ve=e=>window.GM_fetch?.(https://cdn.syndication.twimg.com/tweet-result?id=${e}&token=x)?.then?.(r=>S(U(r),t=>t.json()));var V=e=>{let{fetch:r=globalThis.fetch,...t}=e;return{fetch:r,...t}},Ne=e=>typeof e=="object"&&e!==null;var A=class e extends Error{name="UnexpectedResponseError";status;statusText;body;path;constructor(r){super(${r.status} ${r.statusText} when fetching ${r.path.toString()}),this.status=r.status,this.statusText=r.statusText,this.body=r.body,this.path=r.path,Error.captureStackTrace&&Error.captureStackTrace(this,e)}};var X=async e=>{let r=await e.text();if(e.ok)return I(r);if(e.status===400)return O({name:"BadRequestError",message:r});try{let t=JSON.parse(r);if(!Ne(t)||typeof t.message!="string")throw new A({status:e.status,statusText:e.statusText,body:r,path:new URL(e.url)});switch(e.status){case 401:return O({name:"UnauthorizedError",message:t.message});case 403:return O({name:"NotPrivilegeError",message:t.message});case 404:return O({name:"NotFoundError",message:t.message});case 422:return O({name:"InvalidParameterError",message:t.message});case 429:return O({name:"RateLimitError",message:t.message});default:throw new A({status:e.status,statusText:e.statusText,body:r,path:new URL(e.url)})}}catch(t){throw t instanceof SyntaxError?new A({status:e.status,statusText:e.statusText,body:r,path:new URL(e.url)}):t}};var Ce=async(e,r)=>{let{title:t,description:n,metadataIsPublic:o,collectionId:s,refererURL:i,accessToken:u,created:a,app:l,fetch:m}=V(r),p=new FormData;p.append("imagedata",e),p.append("access_token",u),i&&p.append("referer_url",i.toString()),l!==void 0&&p.append("app",l),t!==void 0&&p.append("title",t),n!=null&&p.append("desc",n),s&&p.append("collection_id",s),o&&p.append("metadata_is_public","true"),a!==void 0&&p.append("created_at",${a});let b=await m("https://upload.gyazo.com/api/upload",{method:"POST",mode:"cors",credentials:"omit",body:p}),F=await X(b);return w(F)?F:I(JSON.parse(P(F)))};var Se=" must not return ",Dt="transformer",Gt="recoverer",Kt="defaultValue",Es=Dt+Se,Ue="called with ",xs=Kt+" must not be ",ws=Gt+Se,zt="Ok",_e="Err",Wt=Ue+_e,Ts=Ue+zt,Rs="Carrying E in "+_e+" instead of throwing it directly. See .cause",ue="an instance of Error of the current realm.",bs="The thrown value is not "+ue,Ls="The contained E should be "+ue,Ps="This .cause is not "+ue;function Ae(e){return e.ok}function k(e){return{ok:!0,val:e,err:null}}function f(e){return!e.ok}function _(e){return{ok:!1,val:null,err:e}}function d(e){return Vt(e,Wt)}function Vt(e,r){if(f(e))throw new TypeError(r);return e.val}function He(e){return e.val}function $e(e){return e.err}function Y(e,r){if(f(e))return e;let t=He(e),n=r(t);return k(n)}async function E(e,r){if(f(e))return e;let t=He(e),n=await r(t);return k(n)}async function x(e,r){if(Ae(e))return e;let t=$e(e),n=await r(t);return _(n)}async function pe(e,r){if(Ae(e))return e;let t=$e(e);return await r(t)}var y=e=>e.ok?k(e):_({name:"HTTPError",message:${e.status} ${e.statusText},response:e});var je=async(e,r)=>{let t=new Request(e,r);try{return k(await globalThis.fetch(t))}catch(n){if(n instanceof DOMException&&n.name==="AbortError")return _({name:"AbortError",message:n.message,request:t});if(n instanceof TypeError)return _({name:"NetworkError",message:n.message,request:t});throw n}};var g=e=>{let{fetch:r=je,hostName:t="scrapbox.io",...n}=e;return{fetch:r,hostName:t,...n}};var Be=e=>{let{sid:r,hostName:t}=g(e??{});return new Request(https://${t}/api/users/me,r?{headers:{Cookie:h(r)}}:void 0)},qe=e=>E(y(e),async r=>await r.json()),De=(()=>{let e=async r=>{let{fetch:t,...n}=g(r??{}),o=await t(Be(n));return f(o)?o:qe(d(o))};return e.toRequest=Be,e.fromResponse=qe,e})();var h=e=>connect.sid=${e},v=async e=>{let r=e?.csrf??globalThis._csrf;return r?k(r):Y(await De(e),t=>t.csrfToken)};function J(e,r={}){if(e===null)return"null";if(Array.isArray(e))return Xt(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:Yt(e,r);case"function":return e.name||"(anonymous)"}return e?.toString()??"undefined"}function Xt(e,r){let{threshold:t=20}=r,n=e.map(i=>J(i,r)),o=n.join(", ");if(o.length<=t)return[${o}];let s=n.join(`, );return[
${Ge(2,s)}
]}function Yt(e,r){let{threshold:t=20}=r,n=[...Object.keys(e),...Object.getOwnPropertySymbols(e)].map(i=>${i.toString()}: ${J(ei,r)}),o=n.join(", ");if(o.length<=t)return{${o}};let s=n.join(, );return{
${Ge(2,s)}
}}function Ge(e,r){let t=" ".repeat(e);return r.split(
).map(n=>${t}${n}).join(
)}function Q(e,r,...t){let n;return Object.defineProperties(e,{name:{get:()=>n||(n=${r}(${t.map(o=>J(o)).join(", ")}),n)}})}function Ke(e){return Q(r=>z(r)&&r.every(t=>e(t)),"isArrayOf",e)}function me(e){let r=new Set(e);return Q(t=>r.has(t),"isLiteralOneOf",e)}function le(e){return e!=null&&!Array.isArray(e)&&typeof e=="object"}var T=async(e,r)=>{let t=e.response.clone(),n=me(r);try{let o=await t.json();if(!le(o))return;if(t.status===422){if(!L(o.message))return;for(let s of["NoQueryError","InvalidURLError"])if(r.includes(s))return{name:s,message:o.message}}return!n(o.name)||!L(o.message)?void 0:o.name==="NotLoggedInError"?!le(o.detals)||!L(o.detals.project)||!Ke(Jt)(o.detals.loginStrategies)?void 0:{name:o.name,message:o.message,details:{project:o.detals.project,loginStrategies:o.detals.loginStrategies}}:{name:o.name,message:o.message}}catch(o){if(o instanceof SyntaxError)return;throw o}},Jt=me(["google","github","microsoft","gyazo","email","saml","easy-trial"]);var ze=" must not return ",Qt="transformer",Zt="recoverer",er="defaultValue",tr=Qt+ze,rr="called with ",nr=er+" must not be ",or=Zt+ze,Z="null or undefined",ni=tr+Z,oi=rr+Z,si=nr+Z,ii=or+Z;function sr(e){return e==null}function ir(e){return{ok:!0,val:e,err:null}}function ar(e){return{ok:!1,val:null,err:e}}function fe(e){return sr(e)?ar(void 0):ir(e)}var We=(e,r)=>{let{sid:t,hostName:n}=g(r??{});return new Request(https://${n}/api/projects/${e},t?{headers:{Cookie:h(t)}}:void 0)},Ve=async e=>E(await x(y(e),async r=>await T(r,["NotFoundError","NotLoggedInError","NotMemberError"])??r),r=>r.json()),Xe=(()=>{let e=async(r,t)=>{let{fetch:n}=g(t??{}),o=We(r,t),s=await n(o);return f(s)?s:Ve(d(s))};return e.toRequest=We,e.fromResponse=Ve,e})();var Ye=async(e,r)=>{let{sid:t,hostName:n,fetch:o}=g(r??{}),s=await v(r);if(f(s))return s;let i=new Request(https://${n}/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})}),u=await o(i);return f(u)?u:E(await x(y(d(u)),async a=>await T(a,["SessionError","BadRequestError","InvalidURLError"])??a),async a=>{let{title:l}=await a.json();return l})};var Je=async(e,r)=>{let{sid:t,hostName:n,fetch:o}=g(r??{}),s=await v(r);if(f(s))return s;let i=new Request(https://${n}/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})}),u=await o(i);return f(u)?u:x(await E(y(d(u)),a=>a.json()),async a=>a.response.status===422?{name:"InvalidURLError",message:(await a.response.json()).message}:await T(a,["SessionError","BadRequestError"])??a)};var Qe=async e=>{let{fetch:r,sid:t,hostName:n,gyazoTeamsName:o}=g(e??{}),s=new Request(https://${n}/api/login/gyazo/oauth-upload/token${o??gyazoTeamsName=${o}:""},t?{headers:{Cookie:h(t)}}:void 0),i=await r(s);return f(i)?i:E(await x(y(d(i)),async u=>await T(u,["NotLoggedInError"])??u),u=>u.json().then(a=>a.token))};var tt=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],n=new Uint8Array(de),o=0,s=0,i=0;[t,n,o,s,i]=et(t,n,o,s,i,r);let u=de-o;u<9&&(u+=de);let a=new Uint8Array(u);a[0]=128,[s,i]=[s<<3,i<<3|s>>>29],a[a.length-8]=s&255,a[a.length-7]=s>>>8&255,a[a.length-6]=s>>>16&255,a[a.length-5]=s>>>24&255,a[a.length-4]=i&255,a[a.length-3]=i>>>8&255,a[a.length-2]=i>>>16&255,a[a.length-1]=i>>>24&255,[t,n,o,s,i]=et(t,n,o,s,i,new Uint8Array(a.buffer));let l=new ArrayBuffer(16),m=new DataView(l);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),l},de=64,c=(e,r)=>e<<r|e>>>32-r,R=(e,r)=>e[r]|e[r+1]<<8|e[r+2]<<16|e[r+3]<<24,Ze=(e,r)=>{let[t,n,o,s]=e,i=R(r,0),u=R(r,4),a=R(r,8),l=R(r,12),m=R(r,16),p=R(r,20),b=R(r,24),F=R(r,28),N=R(r,32),$=R(r,36),j=R(r,40),B=R(r,44),q=R(r,48),D=R(r,52),G=R(r,56),K=R(r,60);return t=n+c(((o^s)&n^s)+t+i+3614090360,7),s=t+c(((n^o)&t^o)+s+u+3905402710,12),o=s+c(((t^n)&s^n)+o+a+606105819,17),n=o+c(((s^t)&o^t)+n+l+3250441966,22),t=n+c(((o^s)&n^s)+t+m+4118548399,7),s=t+c(((n^o)&t^o)+s+p+1200080426,12),o=s+c(((t^n)&s^n)+o+b+2821735955,17),n=o+c(((s^t)&o^t)+n+F+4249261313,22),t=n+c(((o^s)&n^s)+t+N+1770035416,7),s=t+c(((n^o)&t^o)+s+$+2336552879,12),o=s+c(((t^n)&s^n)+o+j+4294925233,17),n=o+c(((s^t)&o^t)+n+B+2304563134,22),t=n+c(((o^s)&n^s)+t+q+1804603682,7),s=t+c(((n^o)&t^o)+s+D+4254626195,12),o=s+c(((t^n)&s^n)+o+G+2792965006,17),n=o+c(((s^t)&o^t)+n+K+1236535329,22),t=n+c(((n^o)&s^o)+t+u+4129170786,5),s=t+c(((t^n)&o^n)+s+b+3225465664,9),o=s+c(((s^t)&n^t)+o+B+643717713,14),n=o+c(((o^s)&t^s)+n+i+3921069994,20),t=n+c(((n^o)&s^o)+t+p+3593408605,5),s=t+c(((t^n)&o^n)+s+j+38016083,9),o=s+c(((s^t)&n^t)+o+K+3634488961,14),n=o+c(((o^s)&t^s)+n+m+3889429448,20),t=n+c(((n^o)&s^o)+t+$+568446438,5),s=t+c(((t^n)&o^n)+s+G+3275163606,9),o=s+c(((s^t)&n^t)+o+l+4107603335,14),n=o+c(((o^s)&t^s)+n+N+1163531501,20),t=n+c(((n^o)&s^o)+t+D+2850285829,5),s=t+c(((t^n)&o^n)+s+a+4243563512,9),o=s+c(((s^t)&n^t)+o+F+1735328473,14),n=o+c(((o^s)&t^s)+n+q+2368359562,20),t=n+c((n^o^s)+t+p+4294588738,4),s=t+c((t^n^o)+s+N+2272392833,11),o=s+c((s^t^n)+o+B+1839030562,16),n=o+c((o^s^t)+n+G+4259657740,23),t=n+c((n^o^s)+t+u+2763975236,4),s=t+c((t^n^o)+s+m+1272893353,11),o=s+c((s^t^n)+o+F+4139469664,16),n=o+c((o^s^t)+n+j+3200236656,23),t=n+c((n^o^s)+t+D+681279174,4),s=t+c((t^n^o)+s+i+3936430074,11),o=s+c((s^t^n)+o+l+3572445317,16),n=o+c((o^s^t)+n+b+76029189,23),t=n+c((n^o^s)+t+$+3654602809,4),s=t+c((t^n^o)+s+q+3873151461,11),o=s+c((s^t^n)+o+K+530742520,16),n=o+c((o^s^t)+n+a+3299628645,23),t=n+c((o^(n|~s))+t+i+4096336452,6),s=t+c((n^(t|~o))+s+F+1126891415,10),o=s+c((t^(s|~n))+o+G+2878612391,15),n=o+c((s^(o|~t))+n+p+4237533241,21),t=n+c((o^(n|~s))+t+q+1700485571,6),s=t+c((n^(t|~o))+s+l+2399980690,10),o=s+c((t^(s|~n))+o+j+4293915773,15),n=o+c((s^(o|~t))+n+u+2240044497,21),t=n+c((o^(n|~s))+t+N+1873313359,6),s=t+c((n^(t|~o))+s+K+4264355552,10),o=s+c((t^(s|~n))+o+b+2734768916,15),n=o+c((s^(o|~t))+n+D+1309151649,21),t=n+c((o^(n|~s))+t+m+4149444226,6),s=t+c((n^(t|~o))+s+B+3174756917,10),o=s+c((t^(s|~n))+o+a+718787259,15),n=o+c((s^(o|~t))+n+$+3951481745,21),[e[0]+t>>>0,e[1]+n>>>0,e[2]+o>>>0,e[3]+s>>>0]},et=(e,r,t,n,o,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=Ze(e,r);let u=i;for(;u+64<=s.length;)e=Ze(e,s.slice(u,u+64)),u+=64;r.fill(0).set(s.slice(u),0),t=s.length-u}return[n,o]=cr(n,o,s.length),[e,r,t,n,o]},cr=(e,r,t)=>(e+=t,e>4294967295&&(r+=1),[e>>>0,r]);var ur=new TextEncoder;function pr(e){let r=typeof e;return r!=="object"?r:e===null?"null":e?.constructor?.name??"object"}function rt(e){if(typeof e=="string")return ur.encode(e);if(e instanceof Uint8Array)return e;if(e instanceof ArrayBuffer)return new Uint8Array(e);throw new TypeError(Cannot validate the input as it must be a Uint8Array, a string, or an ArrayBuffer: received a value of the type ${pr(e)})}var nt=new TextEncoder().encode("0123456789abcdef"),Ba=new TextEncoder,mr=new TextDecoder;function ot(e){let r=rt(e),t=new Uint8Array(r.length*2);for(let n=0;n<r.length;n++){let o=r[n];t[n*2]=nt[o>>4],t[n*2+1]=nt[o&15]}return mr.decode(t)}var st=async(e,r,t)=>{let n=${ot(tt(await e.arrayBuffer()))},o=await lr(e,r,n,t);if(f(o))return o;let s=d(o);if("embedUrl"in s)return k(s);let i=await fr(s.signedUrl,e,t);return f(i)?i:dr(r,s.fileId,n,t)},lr=async(e,r,t,n)=>{let{sid:o,hostName:s,fetch:i,csrf:u}=g(n??{}),a={md5:t,size:e.size,contentType:e.type,name:e.name},l=await pe(fe(u),()=>v(n));if(f(l))return l;let m=new Request(https://${s}/api/gcs/${r}/upload-request,{method:"POST",body:JSON.stringify(a),headers:{"Content-Type":"application/json;charset=utf-8","X-CSRF-TOKEN":d(l),...o?{Cookie:h(o)}:{}}}),p=await i(m);return f(p)?p:E(await x(y(d(p)),async b=>b.response.status===402?{name:"FileCapacityError",message:(await b.response.json()).message}:b),b=>b.json())},fr=async(e,r,t)=>{let{sid:n,fetch:o}=g(t??{}),s=await o(e,{method:"PUT",body:r,headers:{"Content-Type":r.type,...n?{Cookie:h(n)}:{}}});return f(s)?s:Y(await x(y(d(s)),async i=>i.response.headers.get("Content-Type")?.includes?.("/xml")?{name:"GCSError",message:await i.response.text()}:i),()=>{})},dr=async(e,r,t,n)=>{let{sid:o,hostName:s,fetch:i,csrf:u}=g(n??{}),a=await pe(fe(u),()=>v(n));if(f(a))return a;let l=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(a),...o?{Cookie:h(o)}:{}}}),m=await i(l);return f(m)?m:E(await x(y(d(m)),async p=>p.response.status===404?{name:"NotFoundError",message:(await p.response.json()).message}:p),p=>p.json())};var it=(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 ee="",at=!1,te=new Map,ct=async(e,r,t,n)=>{let o=te.get(e.href);if(o)return o;if(e.hostname==="video.twimg.com"||${e}.endsWith(".svg")){let a=await GM_fetch(e);if(!a.ok)return;let l=a.headers.get("content-type")?.split?.(";")?.[0]??${e}.endsWith(".mp4")?"video/mp4":"video/webm",m=new File([await a.blob()],n||${r},{type:l});if(l==="video/mp4"){let F=await it(m);if(F.ok){let N=new URL(await F.text());return te.set(e.href,N),N}}let p=await st(m,t);if(w(p))throw Error(M(p).name);let b=new URL(P(p).embedUrl);return te.set(e.href,b),b}if(e.hostname!=="pbs.twimg.com"||!e.pathname.startsWith("/media"))return;if(at){if(!ee)return}else{let a=await Qe();if(at=!0,w(a)){alert("You haven't logged in Gyazo yet, so you can only upload images to scrapbox.io.");return}if(ee=P(a)||"",!ee){alert("You haven't connect Gyazo to scrapbox.io yet.");return}}let s=await GM_fetch(e);if(!s.ok)return;let i=await Ce(await s.blob(),{accessToken:ee,refererURL:r,description:n});if(w(i))throw Error(M(i).name);let u=new URL(P(i).permalink_url);return te.set(e.href,u),u};var mt=[["&","&"],["<","<"],[">",">"],['"',"""],["'","'"]],gr=Object.fromEntries([...mt.map(([e,r])=>[r,e]),["'","'"],[" "," "]]),yr=new Map(mt),Rc=new RegExp([${...yr.keys().join("")}],"g");var hr={entityList:gr},Er=1114111,xr=/&#([0-9]+);/g,wr=/&#x(\p{AHex}+);/gu,ut=new WeakMap;function ge(e,r={}){let{entityList:t}={...hr,...r},n=ut.get(t);return n||(n=new RegExp((${Object.keys(t).sort((o,s)=>s.length-o.length).join("|")}),"g"),ut.set(t,n)),e.replaceAll(n,o=>t[o]).replaceAll(xr,(o,s)=>pt(s,10)).replaceAll(wr,(o,s)=>pt(s,16))}function pt(e,r){let t=parseInt(e,r);return t>Er?"�":String.fromCodePoint(t)}var re=e=>{let r={name:e.user.name,screenName:e.user.screen_name},t=new Date(e.created_at),n=[...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 u={type:"url",indices:i.indices,url:new URL(i.expanded_url)};if(e.card&&e.card?.url===i.url){let{description:a,title:l}=e.card.binding_values,m="STRING";a?.type===m&&(u.description=a.string_value),l?.type===m&&(u.title=l.string_value)}return u}),...e.entities.media?.map?.(i=>({type:"media",indices:i.indices,media:e.mediaDetails?.flatMap?.(u=>u.url===i.url?[{type:u.type,url:new URL(u.video_info?.variants?.sort?.((a,l)=>(l.bitrate??0)-(a.bitrate??0))?.[0].url??u.media_url_https)}]:[])??[]}))??[]].sort((i,u)=>i.indices[0]-u.indices[0]),o=[];{let i=0,u=e.text;for(let{indices:a,...l}of n){let m=[...u].slice(0,a[0]-i).join("");o.push({type:"plain",text:ge(m)}),o.push(l),u=[...u].slice(a[1]-i).join(""),i=a[1]}u&&o.push({type:"plain",text:ge(u)})}let s={id:e.id_str,content:o,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=re(e.parent)),e.quoted_tweet&&(s.quote=re(e.quoted_tweet)),s};var Tr=["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[,n,o]=t.pathname.match(/^\/([\w\d][\w\d-]{0,22}[\w\d])(?:\/?|\/(.+))$/)??[];return!n||Tr.includes(n)?t:o?n===e?${decodeURIComponent(o)}:/${n}/${decodeURIComponent(o)}:/${n}};var lt=(e=Rr)=>r=>{let[,t]=r.href.match(/^https:\/\/(?:(?:www\.|mobile\.|m\.)?twitter|x)\.com\/[\w\d_]+\/(?:status|statuses)\/(\d+)/)??[];return t?(async()=>{let n=await(ve(t)??Je(r.href));if(w(n))throw M(n);let o=P(n);return e("images"in o?{...o,id:t}:o,r)})():r},Rr=async e=>{if("images"in e)return H(e);let{quote:r,replyTo:t,...n}=re(e);return[...t?[...(await H(t)).split( ).map(o=> > ${o}),...t.quote?(await H(t.quote)).split(
).map(o=> > ${o}):[]]:[],...(await H(n)).split(
).map(o=>> ${o}),...r?(await H(r)).split(
).map(o=>> > ${o}):[]].join(
)?.map?.(o=>> ${he(o)})??["> [/ no description provided]"],...e.images.length>0?[> ${e.images.map(o=>[${o}])}]:[]].join(
);let t=e.content,n=e.author.screenName;return[@${he(n)} ${r},...(await Promise.all(t.map(async o=>{switch(o.type){case"plain":return o.text;case"hashtag":return #${o.text} ;case"symbol":return #$${o.text} ;case"mention":return@${o.screenName};case"media":{let s=[],i=1;for(;i<o.media.length;i+=2)s.push([${await ye(o.mediai-1,r)}] [${await ye(o.mediai,r)}]);return i===o.media.length&&s.push([${await ye(o.mediai-1,r)}]), ${s.join(`
`)}
}case"url":return${ne()(o.url)} }}))).join("").split(
)].join(
)},oe="",br=async()=>{if(oe)return oe;let e=await Xe(scrapbox.Project.name);if(w(e))throw new Error(M(e).name);return oe=P(e).id,oe},ye=async(e,r)=>await ct(e.url,r,await br(),"")??e.url,he=e=>e.replace(/\b/gm,"").replace(/[\s\r\n\u2028\u2029]+/gm," ").replace(/\s*[[\]]\s*/g," ").trim();var ft=e=>window.GM_fetch?.(https://t.co/${e})?.then?.(r=>S(U(r),async t=>{let n=new DOMParser().parseFromString(await t.text(),"text/html");try{return new URL(n.title)}catch(o){if(o instanceof TypeError)return;throw o}}));var dt=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(n=>n.ok?new URL(n.url):e);if(e.hostname!=="t.co")return e;let t=ft(e.pathname.slice(1));return t?t.then(n=>Me(n,()=>e,o=>o??e)):e};var gt=e=>{if(!e.pathname.startsWith("/wiki/"))return e;if(!/^\w+\.wikipedia\.org$/.test(e.hostname)){let,o=e.hostname.match(/^(\w+)\.m\.wikipedia\.org$/)??[];if(!o)return e;e.hostname=${o}.wikipedia.org}let r=decodeURIComponent(e.pathname.slice(6)),t=e.hash?decodeURIComponent(e.hash.slice(1)):"",n=${e.origin}/wiki/${r};return t?[${t} | ${r} - Wikipedia ${n}#${t}]:[${r} - Wikipedia ${n}]};var yt=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 Ee=e=>{if(!e.hostname.startsWith("www.google."))return e;let r=e.searchParams.get("url");return r?new URL(decodeURIComponent(r)):e};var ht=/charset=(^;+)/,Et=e=>window.GM_fetch?.(${e})?.then?.(r=>S(U(r),async t=>{let n=t.headers.get("content-type")?.match?.(ht)?.1??await Lr(t.clone());return new TextDecoder(n).decode(await t.arrayBuffer())})),Lr=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?.(ht)?.1??"utf-8"};var xt=(e=Pr)=>async r=>e(await kr(r),r),Pr=(e,r)=>{let t=(L(e)?e:e.title).replace(/\s/g," ").replaceAll("","[").replaceAll("","]");return t?[${r.hash?${decodeURIComponent(r.hash.slice(1))} | :""}${t} ${r}]:${r}},kr=async e=>{let r=Et(e);if(!r){let n=await Ye(e);if(w(n))throw M(n);return P(n)}let t=await r;if(w(t))throw M(t);return new DOMParser().parseFromString(P(t),"text/html")};var wt=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 Tt=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 Rt=(e,...r)=>{if(e instanceof URL)return ae(new URL(e),...r);let t=0,n=0,o=0,s=!1,i=e.split(/(https?:\/\/\S+)/g).map(m=>{if(!/^https?:\/\/\S+$/.test(m))return m;t++;try{let p=ae(new URL(m),...r);return L(p)?(n++,p):(s=!0,p,m)}catch(p){return console.error(p),o++,m}});if(!s)return i.join("");let{render:u,dispose:a}=be(),l=()=>u({type:"spinner"},{type:"text",text:URL: ${n}/${t} converted, ${o} failed});return l(),Promise.all(i.map(async m=>{if(L(m))return m;try{let p=await m0;return n++,p}catch(p){return console.error(p),o++,m1}finally{l()}})).then(m=>(u({type:"check-circle"},{type:"text",text:URL: ${n}/${t} converted, ${o} failed}),m.join(""))).finally(()=>{setTimeout(a,1e3)})};var Fr=Ee,dt,Ee,yt,wt,ne(),Tt,lt(),gt,xt();scrapbox.PopupMenu.addButton({title:e=>/https?:\/\/\S+/.test(e)?"URL":"",onClick:e=>{let r=Rt(e,...Fr);if(typeof r=="string")return e===r?void 0:r;r.then(t=>{if(e!==t)return Re(t)})}});