pin-diary
日記ページをピン留めする井戸端専用のUserScript。
最新版:/villagepump/pin-diary-5
https://gyazo.com/badff35d8c5896643264eda486ff9ca2
呼び出す時
ここにあるコードはMijinko_SD.icon専用なので、
Mijinko_SD.icon以外の人は/villagepump/pin-diary-5#620642071280f0000077452eを見に行こう。
該当プロジェクトの自分のページにこのスクリプトを置く。
code:javascript
import "/api/code/Mijinko/pin-diary/script.js";
以下はMijinko_SD.iconが井戸端で使う用のUserScript
ver.6
更新:2022/12/31
/Mijinko-other/pin-diary-6-sd-dev 2022-12-31を使用している
https://scrapbox-bundler.vercel.app/?url=https://scrapbox.io/api/code/villagepump/pin-diary-6/script.ts&bundle&minify&run&output=newtab&reload
devバージョンを使用しているので、上記リンクを使用しても同じコードを生成することは出来ない
詳細:/Mijinko-other/pin-diary-6-sd-dev_2022-12-31#63afb3897838e30000afdeae
code:script.js
function ue(e,t,r="head"){let n=0;for(let o of e)if(o.trim()==tn.trim()){if(n==t.length-1)return e;++n}switch(r){case"head":return...t,...e;case"tail":return...e,...t}}function pe(e,t){let r=0;for(let n=0;n<e.length;n++)if(en.trim()==tr.trim()){if(r==t.length-1)return Number(n);++r}return null}function me(e,t,r){let n=e;n=ue(n,t,"head"),n=ue(n,r,"tail");let o=pe(n,t),s=pe(n,r);if(o===null||s===null)return console.log(`format.tsのコードがバグったためtemplateの挿入を諦めました。
headerEnd: ${o}, footerEnd: ${s}),e;let a=s+1-r.length;return[...n.slice(0,o+1),"",...n.slice(o+1,a).join(
).trim().split(
),"",...n.slice(a)]}var E=e=>{let{fetch:t=globalThis.fetch,hostName:r="scrapbox.io",...n}=e;return{fetch:t,hostName:r,...n}};var x=class extends Error{constructor(t){super(${t.status} ${t.statusText} when fetching ${t.path.toString()});this.name="UnexpectedResponseError";this.status=t.status,this.statusText=t.statusText,this.body=t.body,this.path=t.path,Error.captureStackTrace&&Error.captureStackTrace(this,x)}};var le=async e=>{let{sid:t,hostName:r,fetch:n}=E(e??{}),o=https://${r}/api/users/me,s=await n(o,t?{headers:{Cookie:k(t)}}:void 0);if(!s.ok)throw new x({path:new URL(o),...s,body:await s.text()});return await s.json()};var k=e=>connect.sid=${e};var bt=e=>typeof e=="object"&&e!==null,Et=e=>bt(e)?(e.name===void 0||typeof e.name=="string")&&typeof e.message=="string":!1,D=e=>{try{let t=typeof e=="string"?JSON.parse(e):e;return Et(t)?t:!1}catch(t){if(t instanceof SyntaxError)return!1;throw t}};var z=e=>e.replaceAll(" ","_").toLowerCase();var fe=e=>[...e].map((t,r)=>t===" "?"_":!kt.includes(t)||r===e.length-1&&vt.includes(t)?encodeURIComponent(t):t).join(""),kt='@$&+=:;",',vt=':;",';var Be=async(e,t,r)=>{let{sid:n,hostName:o,fetch:s,followRename:a}=E(r??{}),i=https://${o}/api/pages/${e}/${fe(t)}?followRename=${a??!0},c=await s(i,n?{headers:{Cookie:k(n)}}:void 0);if(!c.ok){let m=await c.text(),h=D(m);if(!h)throw new x({path:new URL(i),...c,body:m});return{ok:!1,value:h}}let p=await c.json();return{ok:!0,value:p}},ge=async(e,t)=>{let{sid:r,hostName:n,fetch:o,sort:s,limit:a,skip:i}=E(t??{}),c=new URLSearchParams;s!==void 0&&c.append("sort",s),a!==void 0&&c.append("limit",${a}),i!==void 0&&c.append("skip",${i});let p=https://${n}/api/pages/${e}?${c.toString()},m=await o(p,r?{headers:{Cookie:k(r)}}:void 0);if(!m.ok){let g=await m.text(),b=D(g);if(!b)throw new x({path:new URL(p),...m,body:g});return{ok:!1,value:b}}let h=await m.json();return{ok:!0,value:h}};var Ye=async(e,t)=>{let{sid:r,hostName:n,fetch:o}=E(t??{}),s=https://${n}/api/projects/${e},a=await o(s,r?{headers:{Cookie:k(r)}}:void 0);if(!a.ok){let c=await a.text(),p=D(c);if(!p)throw new x({path:new URL(s),...a,body:c});return{ok:!1,value:p}}let i=await a.json();return{ok:!0,value:i}};var We=(e,t)=>{if(!(e instanceof HTMLDivElement))throw new TypeError("${t}" must be HTMLDivElememt but actual is "${e}")};var Ke=()=>Dt(document.getElementsByClassName("status-bar")?.[0],"div.status-bar"),Dt=(e,t)=>{if(!!e)return We(e,t),e};var G=e=>new Promise(t=>setTimeout(()=>t(),e));var ye=()=>{let e=Ke();if(!e)throw new Error("div.status-bar can't be found");let t=document.createElement("div");return e.append(t),{render:(...r)=>{t.textContent="";let n=Ge(...r);n&&t.append(n)},dispose:()=>t.remove()}},Ge=(...e)=>{let t=e.flatMap(n=>{switch(n.type){case"spinner":return[Ot()];case"check-circle":return[St()];case"exclamation-triangle":return[Nt()];case"text":return[J(n.text)];case"group":{let o=Ge(...n.items);return o?[o]:[]}}});if(t.length===0)return;if(t.length===1)return t[0];let r=document.createElement("span");return r.classList.add("item-group"),r.append(...t),r},J=e=>{let t=document.createElement("span");return t.classList.add("item"),t.append(e),t},Ot=()=>{let e=document.createElement("i");return e.classList.add("fa","fa-spinner"),J(e)},St=()=>{let e=document.createElement("i");return e.classList.add("kamon","kamon-check-circle"),J(e)},Nt=()=>{let e=document.createElement("i");return e.classList.add("fas","fa-exclamation-triangle"),J(e)};var Pt="4.2.0";async function L(){let t=(await Rt())("https://scrapbox.io",{reconnectionDelay:5e3,transports:["websocket"]});return await new Promise((r,n)=>{let o=s=>n(s);t.once("connect",()=>{t.off("disconnect",o),r()}),t.once("disconnect",o)}),t}function Rt(){let e=https://cdnjs.cloudflare.com/ajax/libs/socket.io/${Pt}/socket.io.min.js;if(document.querySelector(scriptsrc="${e}"))return Promise.resolve(window.io);let t=document.createElement("script");return t.src=e,new Promise((r,n)=>{t.onload=()=>r(window.io),t.onerror=o=>n(o),document.head.append(t)})}function R(e,t=9e4){function r(o,s){let a;return new Promise((i,c)=>{let p=m=>{clearTimeout(a),c(new Error(m))};e.emit(o,s,m=>{clearTimeout(a),e.off("disconnect",p),m.error&&c(new Error(JSON.stringify(m.error))),"data"in m?i(m?.data):i(void 0)}),a=setTimeout(()=>{e.off("disconnect",p),c(new Error(Timeout: exceeded ${t}ms))},t),e.once("disconnect",p)})}async function*n(...o){let s,a=()=>new Promise(c=>s=c),i=c=>{s?.(c)};for(let c of o)e.on(c,i);try{for(;;)yield await a()}finally{for(let c of o)e.off(c,i)}}return{request:r,response:n}}var we=()=>L(),H=async e=>{if(e.connected)return;let t=new Promise(r=>e.once("connect",()=>r()));e.connect(),await t},M=async e=>{if(e.disconnected)return;let t=new Promise(r=>{let n=o=>{o==="io client disconnect"&&(r(),e.off("disconnect",n))};e.on("disconnect",n)});e.disconnect(),await t};var ee,q=async()=>{if(ee!==void 0)return ee;let e=await le();if(e.isGuest)throw new Error("this script can only be executed by Logged in users");return ee=e.id,ee},Qe=new Map,U=async e=>{let t=Qe.get(e);if(t!==void 0)return t;let r=await Ye(e);if(!r.ok){let{name:o,message:s}=r.value;throw new Error(${o} ${s})}let{id:n}=r.value;return Qe.set(e,n),n},Xe=e=>e.padStart(8,"0"),Ve=e=>{let t=Math.floor(new Date().getTime()/1e3).toString(16),r=Math.floor(16777214*Math.random()).toString(16);return${Xe(t).slice(-8)}${e.slice(-6)}0000${Xe(r)}};var Ze=(e,t)=>{let r=e.length>t.length,n=r?t:e,o=r?e:t,s=n.length+1,a=n.length+o.length+3,i=new Array(a);i.fill(-1);let c=[];function p(f,I,P){let T=Math.max(I,P),Z=T-f;for(;Z<n.length&&T<o.length&&n[Z]===o[T];)++Z,++T;return i[f+s]=c.length,c.push([{x:Z,y:T},i[f+(I>P?-1:1)+s]]),T}let m=new Array(a);m.fill(-1);let h=-1,g=o.length-n.length;do{++h;for(let f=-h;f<=g-1;++f)m[f+s]=p(f,m[f-1+s]+1,m[f+1+s]);for(let f=g+h;f>=g+1;--f)m[f+s]=p(f,m[f-1+s]+1,m[f+1+s]);m[g+s]=p(g,m[g-1+s]+1,m[g+1+s])}while(m[g+s]!==o.length);let b=[],v=i[g+s];for(;v!==-1;)b.push(c[v][0]),v=c[v][1];return{from:e,to:t,editDistance:g+h*2,buildSES:function*(){let f=0,I=0;for(let{x:P,y:T}of At(b))for(;f<P||I<T;)T-P>I-f?(yield{value:o[I],type:r?"deleted":"added"},++I):T-P<I-f?(yield{value:n[f],type:r?"added":"deleted"},++f):(yield{value:n[f],type:"common"},++f,++I)}}};function*Je(e){let t=[],r=[];function*n(){if(t.length>r.length){for(let o=0;o<r.length;o++)yield et(t[o],r[o]);for(let o=r.length;o<t.length;o++)yield t[o]}else{for(let o=0;o<t.length;o++)yield et(t[o],r[o]);for(let o=t.length;o<r.length;o++)yield r[o]}t=[],r=[]}for(let o of e)switch(o.type){case"added":t.push(o);break;case"deleted":r.push(o);break;case"common":yield*n(),yield o;break}yield*n()}var et=(e,t)=>({value:e.value,oldValue:t.value,type:"replaced"});function*At(e){for(let t=e.length-1;t>=0;t--)yield e[t]}function*tt(e,t,{userId:r}){let{buildSES:n}=Ze(e.map(({text:a})=>a),t),o=0,s=e[0].id;for(let a of Je(n())){switch(a.type){case"added":yield{_insert:s,lines:{id:Ve(r),text:a.value}};continue;case"deleted":yield{_delete:s,lines:-1};break;case"replaced":yield{_update:s,lines:{text:a.value}};break}o++,s=e[o]?.id??"_end"}}var _t=e=>({type:"title",text:e.rows[0].text}),Ht=e=>{let{rows:[t,...r]}=e,{indent:n=0,text:o=""}=t??{},s=o.replace(/^\s*code:/,"");return{indent:n,type:"codeBlock",fileName:s,content:r.map(a=>a.text.substring(n+1)).join(
)}},y=(e,{parseOnNested:t,parseOnQuoted:r,patterns:n})=>(o,s,a)=>{var i,c,p,m,h,g;if(!t&&s.nested)return(i=a?.())!==null&&i!==void 0?i:[];if(!r&&s.quoted)return(c=a?.())!==null&&c!==void 0?c:[];for(let b of n){let v=b.exec(o);if(v===null)continue;let f=o.substring(0,v.index),I=o.substring(v.index+((m=(p=v[0])===null||p===void 0?void 0:p.length)!==null&&m!==void 0?m:0)),P=e((h=v[0])!==null&&h!==void 0?h:"",s);return[...A(f,s),...P,...A(I,s)]}return(g=a?.())!==null&&g!==void 0?g:[]},w=e=>[{type:"plain",raw:e,text:e}],Ut=y(w,{parseOnNested:!0,parseOnQuoted:!0,patterns:[/^()(.*)()$/]}),Ft=/^>.*$/,$t=(e,t)=>t.context==="table"?w(e,t):[{type:"quote",raw:e,nodes:A(e.substring(1),{...t,quoted:!0})}],jt=y($t,{parseOnNested:!1,parseOnQuoted:!1,patterns:[Ft]}),qt=/^\? .+$/,Bt=(e,t)=>t.context==="table"?w(e,t):[{type:"helpfeel",raw:e,text:e.substring(2)}],Yt=y(Bt,{parseOnNested:!1,parseOnQuoted:!1,patterns:[qt]}),Wt=/\[\[https?:\/\/[^\s\]]+\.(?:png|jpe?g|gif|svg)\]\]/i,Kt=/\[\[https?:\/\/(?:[0-9a-z-]+\.)?gyazo\.com\/[0-9a-f]{32}\]\]/,zt=(e,t)=>{if(t.context==="table")return w(e,t);let r=e.substring(2,e.length-2),n=/^https?:\/\/([0-9a-z-]\.)?gyazo\.com\/[0-9a-f]{32}$/.test(r);return[{type:"strongImage",raw:e,src:n?${r}/thumb/1000:r}]},Gt=y(zt,{parseOnNested:!1,parseOnQuoted:!0,patterns:[Wt,Kt]}),Qt=/\[[^[\]]*\.icon(?:\*[1-9]\d*)?\]/;function rt(e){return(t,r)=>{if(e==="strongIcon"&&r.context==="table")return w(t,r);let n=e==="icon"?t.substring(1,t.length-1):t.substring(2,t.length-2),o=n.lastIndexOf(".icon"),s=n.substring(0,o),a=s.startsWith("/")?"root":"relative",i=n.substring(o+5,n.length),c=i.startsWith("*")?parseInt(i.substring(1),10):1;return new Array(c).fill({}).map(()=>({path:s,pathType:a,type:e,raw:t}))}}var Xt=rt("icon"),Vt=y(Xt,{parseOnNested:!0,parseOnQuoted:!0,patterns:[Qt]}),Zt=/\[\[[^[\]]*\.icon(?:\*\d+)?\]\]/,Jt=rt("strongIcon"),er=y(Jt,{parseOnNested:!1,parseOnQuoted:!0,patterns:[Zt]}),tr=/\[\[(?:[^[]|\[[^[]).*?\]*\]\]/,rr=(e,t)=>t.context==="table"?w(e,t):[{type:"strong",raw:e,nodes:A(e.substring(2,e.length-2),{...t,nested:!0})}],nr=y(rr,{parseOnNested:!1,parseOnQuoted:!0,patterns:[tr]}),or=/\[\$ .+? \]/,sr=/\[\$ [^\]]+\]/,ir=(e,t)=>t.context==="table"?w(e,t):[{type:"formula",raw:e,formula:e.substring(3,e.length-(e.endsWith(" ]")?2:1))}],ar=y(ir,{parseOnNested:!1,parseOnQuoted:!0,patterns:[or,sr]}),cr=/\[[!"#%&'()*+,\-./{|}<>_~]+ (?:\[[^[\]]+\]|[^\]])+\]/,dr=(e,t)=>{if(t.context==="table")return w(e,t);let r=e.indexOf(" "),n=e.substring(1,r),o=e.substring(r+1,e.length-1),s=new Set(n);if(s.has("*")){let a=n.split("*").length-1;s.delete("*"),s.add(*-${Math.min(a,10)})}return[{type:"decoration",raw:e,rawDecos:n,decos:Array.from(s),nodes:A(o,{...t,nested:!0})}]},ur=y(dr,{parseOnNested:!1,parseOnQuoted:!0,patterns:[cr]}),pr=/.*?/,mr=(e,t)=>t.context==="table"?w(e,t):[{type:"code",raw:e,text:e.substring(1,e.length-1)}],lr=y(mr,{parseOnNested:!1,parseOnQuoted:!0,patterns:[pr]}),fr=/^[$%] .+$/,gr=(e,t)=>{var r;if(t.context==="table")return w(e,t);let n=(r=e[0])!==null&&r!==void 0?r:"",o=e.substring(2);return[{type:"commandLine",raw:e,symbol:n,text:o}]},hr=y(gr,{parseOnNested:!1,parseOnQuoted:!1,patterns:[fr]}),xr=/\[\s+\]/,yr=(e,t)=>t.context==="table"?w(e,t):[{type:"blank",raw:e,text:e.substring(1,e.length-1)}],wr=y(yr,{parseOnNested:!1,parseOnQuoted:!0,patterns:[xr]}),br=/\[https?:\/\/[^\s\]]+\.(?:png|jpe?g|gif|svg)(?:\?[^\]\s]+)?(?:\s+https?:\/\/[^\s\]]+)?\]/i,Er=/\[https?:\/\/[^\s\]]+\s+https?:\/\/[^\s\]]+\.(?:png|jpe?g|gif|svg)(?:\?[^\]\s]+)?\]/i,kr=/\[https?:\/\/(?:[0-9a-z-]+\.)?gyazo\.com\/[0-9a-f]{32}(?:\/raw)?(?:\s+https?:\/\/[^\s\]]+)?\]/,vr=/\[https?:\/\/[^\s\]]+\s+https?:\/\/(?:[0-9a-z-]+\.)?gyazo\.com\/[0-9a-f]{32}(?:\/raw)?\]/,Dr=e=>/^https?:\/\/[^\s\]]+\.(png|jpe?g|gif|svg)(\?[^\]\s]+)?$/i.test(e)||Ir(e),Ir=e=>/^https?:\/\/([0-9a-z-]\.)?gyazo\.com\/[0-9a-f]{32}(\/raw)?$/.test(e),Tr=(e,t)=>{if(t.context==="table")return w(e,t);let r=e.search(/\s/),n=r!==-1?e.substring(1,r):e.substring(1,e.length-1),o=r!==-1?e.substring(r,e.length-1).trimLeft():"",[s,a]=Dr(o)?[o,n]:[n,o];return[{type:"image",raw:e,src:/^https?:\/\/([0-9a-z-]\.)?gyazo\.com\/[0-9a-f]{32}$/.test(s)?${s}/thumb/1000:s,link:a}]},Lr=y(Tr,{parseOnNested:!0,parseOnQuoted:!0,patterns:[br,Er,kr,vr]}),Mr=/\[https?:\/\/[^\s\]]+\s+[^\]]*[^\s]\]/,Or=/\[[^[\]]*[^\s]\s+https?:\/\/[^\s\]]+\]/,Sr=/\[https?:\/\/[^\s\]]+\]/,Nr=/https?:\/\/[^\s]+/,Cr=(e,t)=>{if(t.context==="table")return w(e,t);let r=e.startsWith("[")&&e.endsWith("]")?e.substring(1,e.length-1):e,n=/^https?:\/\/[^\s\]]/.test(r),o=(n?/^https?:\/\/[^\s\]]+/:/https?:\/\/[^\s\]]+$/).exec(r);if(o?.[0]===void 0)return[];let s=n?r.substring(o[0].length):r.substring(0,o.index-1);return[{type:"link",raw:e,pathType:"absolute",href:o[0],content:s.trim()}]},Pr=y(Cr,{parseOnNested:!0,parseOnQuoted:!0,patterns:[Mr,Or,Sr,Nr]}),nt=/\[([^\]]*[^\s])\s+([NS]\d+(?:\.\d+)?,[EW]\d+(?:\.\d+)?(?:,Z\d+)?)\]/,ot=/\[([NS]\d+(?:\.\d+)?,[EW]\d+(?:\.\d+)?(?:,Z\d+)?)(?:\s+([^\]]*[^\s]))?\]/,Rr=e=>{let[t="",r="",n=""]=e.split(","),o=parseFloat(t.replace(/^N/,"").replace(/^S/,"-")),s=parseFloat(r.replace(/^E/,"").replace(/^W/,"-")),a=/^Z\d+$/.test(n)?parseInt(n.replace(/^Z/,""),10):14;return{latitude:o,longitude:s,zoom:a}},Ar=(e,t)=>{var r;if(t.context==="table")return w(e,t);let n=(r=e.match(nt))!==null&&r!==void 0?r:e.match(ot);if(n===null)return[];let o=e.startsWith("[N")||e.startsWith("[S"),[,s="",a=""]=o?n:[n[0],n[2],n[1]],{latitude:i,longitude:c,zoom:p}=Rr(s),m=a!==""?https://www.google.com/maps/place/${encodeURIComponent(a)}/@${i},${c},${p}z:https://www.google.com/maps/@${i},${c},${p}z;return[{type:"googleMap",raw:e,latitude:i,longitude:c,zoom:p,place:a,url:m}]},_r=y(Ar,{parseOnNested:!1,parseOnQuoted:!0,patterns:[nt,ot]}),Hr=/\[\/?[^[\]]+\]/,Ur=e=>{let t=e.substring(1,e.length-1);return[{type:"link",raw:e,pathType:t.startsWith("/")?"root":"relative",href:t,content:""}]},Fr=y(Ur,{parseOnNested:!0,parseOnQuoted:!0,patterns:[Hr]}),$r=/(?:^|\s)#\S+/,jr=(e,t)=>{if(t.context==="table")return w(e,t);if(e.startsWith("#"))return[{type:"hashTag",raw:e,href:e.substring(1)}];let r=e.substring(0,1),n=e.substring(1);return[...w(r,t),{type:"hashTag",raw:n,href:n.substring(1)}]},qr=y(jr,{parseOnNested:!0,parseOnQuoted:!0,patterns:[$r]}),Br=/^[0-9]+\. .*$/,Yr=(e,t)=>{if(t.context==="table")return w(e,t);let r=e.indexOf(" "),n=e.substring(0,r-1),o=parseInt(n,10),s=e.substring(r+1,e.length);return[{type:"numberList",raw:e,rawNumber:n,number:o,nodes:A(s,{...t,nested:!0})}]},Wr=y(Yr,{parseOnNested:!1,parseOnQuoted:!1,patterns:[Br]}),Kr=(e,t,r)=>{var n;return e===""?[]:(n=r?.())!==null&&n!==void 0?n:[]},zr=(...e)=>(t,r)=>e.reduceRight((n,o)=>()=>o(t,r,n),()=>Ut(t,r))(),A=zr(Kr,jt,Yt,lr,hr,ar,wr,ur,Gt,er,nr,Lr,Pr,Vt,_r,Fr,qr,Wr),Gr=e=>{let{rows:[t,...r]}=e,{indent:n=0,text:o=""}=t??{},s=o.replace(/^\s*table:/,"");return{indent:n,type:"table",fileName:s,cells:r.map(a=>a.text.substring(n+1)).map(a=>a.split(" ").map(i=>A(i,{nested:!1,quoted:!1,context:"table"})))}},Qr=e=>{let{indent:t,text:r}=e.rows[0];return{indent:t,type:"line",nodes:A(r.substring(t),{nested:!1,quoted:!1,context:"line"})}},st=e=>{switch(e.type){case"title":return _t(e);case"codeBlock":return Ht(e);case"table":return Gr(e);case"line":return Qr(e)}},it=e=>e.split(
).map(t=>{var r,n,o;return{indent:(o=(n=(r=/^\s+/.exec(t))===null||r===void 0?void 0:r[0])===null||n===void 0?void 0:n.length)!==null&&o!==void 0?o:0,text:t}}),Xr=(e,t)=>{var r,n;return(e.type==="codeBlock"||e.type==="table")&&t.indent>((n=(r=e.rows[0])===null||r===void 0?void 0:r.indent)!==null&&n!==void 0?n:0)},at=(e,t)=>{let r=e[e.length-1];return r!==void 0&&Xr(r,t)?(r.rows.push(t),e):(e.push({type:/^\s*code:/.test(t.text)?"codeBlock":/^\s*table:/.test(t.text)?"table":"line",rows:[t]}),e)},ct=(e,t)=>{var r;if(!((r=t.hasTitle)!==null&&r!==void 0)||r){let[n,...o]=e;return n===void 0?[]:[{type:"title",rows:[n]},...o.reduce(at,[])]}return e.reduce(at,[])};var Vr=/https?:\/\/(?:www\.|)youtube\.com\/watch\?((?:[^\s]+&|)v=([a-zA-Z\d_-]+)(?:&[^\s]+|))/,Zr=/https?:\/\/youtu\.be\/([a-zA-Z\d_-]+)(?:\?([^\s]{0,100})|)/,Jr=/https?:\/\/(?:www\.|)youtube\.com\/shorts\/([a-zA-Z\d_-]+)(?:\?([^\s]+)|)/,en=/https?:\/\/(?:www\.|)youtube\.com\/playlist\?((?:[^\s]+&|)list=([a-zA-Z\d_-]+)(?:&[^\s]+|))/,dt=e=>{{let t=e.match(Vr);if(t){let[,r,n]=t,o=new URLSearchParams(r);return o.delete("v"),o.append("autoplay","0"),{videoId:n,params:o}}}{let t=e.match(Zr);if(t){let[,r]=t;return{videoId:r,params:new URLSearchParams("autoplay=0")}}}{let t=e.match(Jr);if(t){let[,r]=t;return{videoId:r,params:new URLSearchParams("autoplay=0")}}}{let t=e.match(en);if(t){let[,r,n]=t,o=new URLSearchParams(r),s=o.get("v");return s?(o.delete("v"),o.append("autoplay","0"),o.append("list",n),{videoId:s,params:o}):void 0}}};function*ut(e,t,{userId:r,head:n}){let o=t.flatMap(p=>p.split(
));for(let p of tt(e,o,{userId:r}))yield p;(e[0].text!==o[0]||!n.persistent)&&(yield{title:o[0]});let s=e.slice(1,6).map(p=>p.text),a=o.slice(1,6);s.join("")!==a.join("")&&(yield{descriptions:a});let[i,c]=tn(o.join(
));(n.links.length!==i.length||!n.links.every(p=>i.includes(p)))&&(yield{links:i}),n.image!==c&&(yield{image:c})}var tn=e=>{let t=it(e),r=ct(t,{hasTitle:!0}).flatMap(i=>{switch(i.type){case"codeBlock":case"title":return[];case"line":case"table":return[st(i)]}}),n=new Map,o=[],s=null,a=i=>{switch(i.type){case"hashTag":if(n.has(z(i.href)))return;n.set(z(i.href),!1),o.push(i.href);return;case"link":switch(i.pathType){case"relative":if(n.get(z(i.href)))return;n.set(z(i.href),!0),o.push(i.href);return;case"absolute":{let c=dt(i.href);if(!c)return;s??=https://i.ytimg.com/vi/${c.videoId}/mqdefault.jpg;return}default:return}case"image":case"strongImage":{s??=i.src.endsWith("/thumb/1000")?i.src.replace(/\/thumb\/1000$/,"/raw"):i.src;return}case"strong":case"quote":case"decoration":{for(let c of i.nodes)a(c);return}default:return}};for(let i of rn(r))a(i);return[o,s]};function*rn(e){for(let t of e)switch(t.type){case"codeBlock":case"title":continue;case"line":for(let r of t.nodes)yield r;continue;case"table":{for(let r of t.cells)for(let n of r)for(let o of n)yield o;continue}}}var N=async(e,t)=>{let r=await Be(e,t);if(!r.ok)throw new Error(You have no privilege of editing "/${e}/${t}".);let{commitId:n,persistent:o,image:s,links:a,lines:i,id:c,pin:p}=r.value;return{commitId:n,pageId:c,persistent:o,image:s,links:a,pin:p,lines:i}};var te=async(e,t,r)=>t.length===0?{commitId:r.parentId}:await e("socket.io-request",{method:"commit",data:{kind:"page",...r,changes:t,cursor:null,freeze:!0}}),F=async(e,t,{project:r,title:n,retry:o=3,parentId:s,...a})=>{try{s=(await te(e,t,{parentId:s,...a})).commitId}catch{console.log("Faild to push a commit. Retry after pulling new commits");for(let c=0;c<o;c++){let{commitId:p}=await N(r,n);s=p;try{s=(await te(e,t,{parentId:s,...a})).commitId,console.log("Success in retrying");break}catch{continue}}throw Error("Faild to retry pushing.")}return s};var be=async(e,t,r,n)=>{let[o,s,a]=await Promise.all([N(e,t),U(e),q()]),i=o,c=n?.socket,p=c??await L();await H(p);try{let{request:m}=R(p);for(let h=0;h<3;h++)try{let g=r(i.lines,i),b=g instanceof Promise?await g:g;if(!b)return;b.length===0&&await F(m,[{deleted:!0}],{projectId:s,pageId:i.pageId,parentId:i.commitId,userId:a,project:e,title:t});let v=[...ut(i.lines,b,{userId:a,head:i})];await te(m,v,{parentId:i.commitId,projectId:s,pageId:i.pageId,userId:a});break}catch{if(h===2)throw Error("Faild to retry pushing.");console.log("Faild to push a commit. Retry after pulling new commits");try{i=await N(e,t)}catch(b){throw b}}}finally{c||await M(p)}};var Ee=async(e,t,r)=>{let[n,o,s]=await Promise.all([N(e,t),U(e),q()]);if(n.pin>0||!n.persistent&&!(r?.create??!1))return;let a={parentId:n.commitId,projectId:o,pageId:n.pageId,userId:s,project:e,title:t},i=r?.socket,c=i??await L();await H(c);let{request:p}=R(c);if(!n.persistent){let m=await F(p,[{title:t}],a);a.parentId=m}try{await F(p,[{pin:nn()}],a)}finally{i||await M(c)}},ke=async(e,t,r)=>{let[n,o,s]=await Promise.all([N(e,t),U(e),q()]);if(n.pin==0||!n.persistent)return;let a={parentId:n.commitId,projectId:o,pageId:n.pageId,userId:s,project:e,title:t},i=r?.socket,c=i??await L();await H(c);let{request:p}=R(c);try{await F(p,[{pin:0}],a)}finally{i||await M(c)}},nn=()=>Number.MAX_SAFE_INTEGER-Math.floor(Date.now()/1e3);async function*ve(e,t=0){let{count:r,pages:n}=await on(e,t);for(let o of n)o.pin!==0&&(yield o);(n.at(-1)?.pin??0)!==0&&(yield*ve(e,t+1e3))}async function on(e,t){let r=await ge(e,{limit:1e3,skip:t});if(!r.ok){let n=new Error;throw n.name=r.value.name,n.message=r.value.message,n}return r.value}function pt(e,t){let r=t.interval??24*3600*1e3,n=()=>scrapbox.Project.name===e?sn(e,r,t):lt();n(),scrapbox.addListener("project:changed",n)}var mt;async function sn(e,t,r){lt(),await ft(e,new Date,r),mt=setInterval(()=>ft(e,new Date,r),t)}function lt(){clearInterval(mt)}async function ft(e,t,{makeDiary:r,isOldDiary:n}){let{render:o,dispose:s}=ye(),a;try{o({type:"spinner"},{type:"text",text:"unpin other diary pages..."}),a=await we();for await(let{title:m}of ve(e))!n(m,t)||await ke(e,m,{socket:a});let{title:i,header:c,footer:p}=r(t);o({type:"spinner"},{type:"text",text:pin "/${e}/${i}"...}),await Ee(e,i,{socket:a,create:!0}),o({type:"spinner"},{type:"text",text:format "/${e}/${i}"...}),await be(e,i,m=>[m[0].text,...me(m.slice(1).map(h=>h.text),c,p)],{socket:a}),o({type:"check-circle"},{type:"text",text:Pinned "/${e}/${i}".})}catch(i){o({type:"exclamation-triangle"},{type:"text",text:i instanceof Error?${i.name} ${i.message}:"Unknown error! (see developper console)"}),console.error(i)}finally{a&&await M(a),await G(1e3),s()}}function d(e,t){if(t.length<e)throw new TypeError(e+" argument"+(e>1?"s":"")+" required, but only "+t.length+" present")}function u(e){d(1,arguments);let t=Object.prototype.toString.call(e);return e instanceof Date||typeof e=="object"&&t==="[object Date]"?new Date(e.getTime()):typeof e=="number"||t==="[object Number]"?new Date(e):((typeof e=="string"||t==="[object String]")&&typeof console!="undefined"&&(console.warn("Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use parseISO to parse strings. See: https://git.io/fjule"),console.warn(new Error().stack)),new Date(NaN))}function De(e){d(1,arguments);let r=u(e).getFullYear();return r%400==0||r%4==0&&r%100!=0}function re(e){d(1,arguments);let t=u(e);return String(new Date(t))==="Invalid Date"?NaN:De(t)?366:365}function Ie(e){d(1,arguments);let t=u(e),r=new Date(0);return r.setFullYear(t.getFullYear(),0,1),r.setHours(0,0,0,0),r}function B(e){let t=new Date(Date.UTC(e.getFullYear(),e.getMonth(),e.getDate(),e.getHours(),e.getMinutes(),e.getSeconds(),e.getMilliseconds()));return t.setUTCFullYear(e.getFullYear()),e.getTime()-t.getTime()}function ne(e){d(1,arguments);let t=u(e);return t.setHours(0,0,0,0),t}var an=864e5;function Q(e,t){d(2,arguments);let r=ne(e),n=ne(t),o=r.getTime()-B(r),s=n.getTime()-B(n);return Math.round((o-s)/an)}function oe(e){d(1,arguments);let t=u(e);return Q(t,Ie(t))+1}function l(e){if(e===null||e===!0||e===!1)return NaN;let t=Number(e);return isNaN(t)?t:t<0?Math.ceil(t):Math.floor(t)}function Y(e,t){d(2,arguments);let r=u(e),n=l(t);return isNaN(n)?new Date(NaN):(n&&r.setDate(r.getDate()+n),r)}function W(e,t){d(2,arguments);let r=l(t);return Y(e,-r)}function _(e,t){d(1,arguments);let r=t||{},n=r.locale,o=n&&n.options&&n.options.weekStartsOn,s=o==null?0:l(o),a=r.weekStartsOn==null?s:l(r.weekStartsOn);if(!(a>=0&&a<=6))throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");let i=u(e),c=i.getDay(),p=(c<a?7:0)+c-a;return i.setDate(i.getDate()-p),i.setHours(0,0,0,0),i}function Te(e,t){d(1,arguments);let r=u(e),n=r.getFullYear(),o=t?.locale?.options?.firstWeekContainsDate,s=o==null?1:l(o),a=t?.firstWeekContainsDate==null?s:l(t.firstWeekContainsDate);if(!(a>=1&&a<=7))throw new RangeError("firstWeekContainsDate must be between 1 and 7 inclusively");let i=new Date(0);i.setFullYear(n+1,0,a),i.setHours(0,0,0,0);let c=_(i,t),p=new Date(0);p.setFullYear(n,0,a),p.setHours(0,0,0,0);let m=_(p,t);return r.getTime()>=c.getTime()?n+1:r.getTime()>=m.getTime()?n:n-1}function Le(e,t){d(1,arguments);var r=t||{},n=r.locale,o=n&&n.options&&n.options.firstWeekContainsDate,s=o==null?1:l(o),a=r.firstWeekContainsDate==null?s:l(r.firstWeekContainsDate),i=Te(e,t),c=new Date(0);c.setFullYear(i,0,a),c.setHours(0,0,0,0);var p=_(c,t);return p}var cn=6048e5;function se(e,t){d(1,arguments);let r=u(e),n=_(r,t).getTime()-Le(r,t).getTime();return Math.round(n/cn)+1}function X(e,t){d(2,arguments);let r=u(e),n=l(t);if(isNaN(n))return new Date(NaN);if(!n)return r;let o=r.getDate(),s=new Date(r.getTime());s.setMonth(r.getMonth()+n+1,0);let a=s.getDate();return o>=a?s:(r.setFullYear(s.getFullYear(),s.getMonth(),o),r)}function Me(e,t){d(2,arguments);let r=l(t);return X(e,r*12)}function ie(e,t){d(2,arguments);let r=l(t);return Me(e,-r)}function ae(e){return d(1,arguments),u(e).getDay()}function ce(e){return d(1,arguments),u(e).getFullYear()}function O(e,t){for(var r=e<0?"-":"",n=Math.abs(e).toString();n.length<t;)n="0"+n;return r+n}var dn={y(e,t){let r=e.getUTCFullYear(),n=r>0?r:1-r;return O(t==="yy"?n%100:n,t.length)},M(e,t){let r=e.getUTCMonth();return t==="M"?String(r+1):O(r+1,2)},d(e,t){return O(e.getUTCDate(),t.length)},a(e,t){let r=e.getUTCHours()/12>=1?"pm":"am";switch(t){case"a":case"aa":return r.toUpperCase();case"aaa":return r;case"aaaaa":return r[0];case"aaaa":default:return r==="am"?"a.m.":"p.m."}},h(e,t){return O(e.getUTCHours()%12||12,t.length)},H(e,t){return O(e.getUTCHours(),t.length)},m(e,t){return O(e.getUTCMinutes(),t.length)},s(e,t){return O(e.getUTCSeconds(),t.length)},S(e,t){let r=t.length,n=e.getUTCMilliseconds(),o=Math.floor(n*Math.pow(10,r-3));return O(o,t.length)}},gt=dn;function K(e){d(1,arguments);var t=u(e);return!isNaN(t)}function Oe(e,t){d(2,arguments);let r=u(e).getTime(),n=l(t);return new Date(r+n)}function Se(e,t){d(2,arguments);let r=l(t);return Oe(e,-r)}var un=/(\w)\1*|''|'(''|[^'])+('|$)|./g,pn=/^'([^]*?)'?$/,mn=/''/g,ln=/[a-zA-Z]/;function C(e,t){d(2,arguments);let r=u(e);if(!K(r))throw new RangeError("Invalid time value");let n=B(r),o=Se(r,n),s=t.match(un);return s?s.map(i=>{if(i==="''")return"'";let c=i[0];if(c==="'")return fn(i);let p=gt[c];if(p)return p(o,i);if(c.match(ln))throw new RangeError("Format string contains an unescaped latin alphabet character "+c+"");return i}).join(""):""}function fn(e){let t=e.match(pn);return t?t[1].replace(mn,"'"):e}function S(e,t){d(2,arguments);let r=u(e),n=u(t),o=r.getTime()-n.getTime();return o<0?-1:o>0?1:o}function Ne(e,t){d(2,arguments);let r=u(e),n=u(t);return r.getFullYear()-n.getFullYear()}function Ce(e,t){d(2,arguments);let r=u(e),n=u(t),o=S(r,n),s=Math.abs(Ne(r,n));r.setFullYear(1584),n.setFullYear(1584);let a=S(r,n)===-o,i=o*(s-Number(a));return i===0?0:i}function Pe(e,t){d(2,arguments);let r=u(e),n=u(t),o=r.getFullYear()-n.getFullYear(),s=r.getMonth()-n.getMonth();return o*12+s}function Re(e){d(1,arguments);let t=u(e);return t.setHours(23,59,59,999),t}function Ae(e){d(1,arguments);let t=u(e),r=t.getMonth();return t.setFullYear(t.getFullYear(),r+1,0),t.setHours(23,59,59,999),t}function _e(e){d(1,arguments);let t=u(e);return Re(t).getTime()===Ae(t).getTime()}function He(e,t){d(2,arguments);let r=u(e),n=u(t),o=S(r,n),s=Math.abs(Pe(r,n)),a;if(s<1)a=0;else{r.getMonth()===1&&r.getDate()>27&&r.setDate(30),r.setMonth(r.getMonth()-o*s);let i=S(r,n)===-o;_e(u(e))&&s===1&&S(e,n)===1&&(i=!1),a=o*(s-Number(i))}return a===0?0:a}function ht(e,t){let r=e.getFullYear()-t.getFullYear()||e.getMonth()-t.getMonth()||e.getDate()-t.getDate()||e.getHours()-t.getHours()||e.getMinutes()-t.getMinutes()||e.getSeconds()-t.getSeconds()||e.getMilliseconds()-t.getMilliseconds();return r<0?-1:r>0?1:r}function Ue(e,t){d(2,arguments);let r=u(e),n=u(t),o=ht(r,n),s=Math.abs(Q(r,n));r.setDate(r.getDate()-o*s);let a=Number(ht(r,n)===-o),i=o*(s-a);return i===0?0:i}function $(e,t){d(2,arguments);let r=u(e),n=u(t);return r.getTime()-n.getTime()}var gn=36e5;function Fe(e,t){d(2,arguments);let r=$(e,t)/gn;return r>0?Math.floor(r):Math.ceil(r)}var hn=6e4;function $e(e,t){d(2,arguments);var r=$(e,t)/hn;return r>0?Math.floor(r):Math.ceil(r)}function je(e,t){d(2,arguments);let r=$(e,t)/1e3;return r>0?Math.floor(r):Math.ceil(r)}function qe(e,t){d(2,arguments);let r=l(t);return X(e,-r)}function j(e,t){if(d(2,arguments),!t||typeof t!="object")return new Date(NaN);let r="years"in t?l(t.years):0,n="months"in t?l(t.months):0,o="weeks"in t?l(t.weeks):0,s="days"in t?l(t.days):0,a="hours"in t?l(t.hours):0,i="minutes"in t?l(t.minutes):0,c="seconds"in t?l(t.seconds):0,p=qe(u(e),n+r*12),m=W(p,s+o*7),h=i+a*60,b=(c+h*60)*1e3;return new Date(m.getTime()-b)}function de({start:e,end:t}){d(1,arguments);let r=u(e),n=u(t);if(!K(r))throw new RangeError("Start Date is invalid");if(!K(n))throw new RangeError("End Date is invalid");let o={years:0,months:0,days:0,hours:0,minutes:0,seconds:0},s=S(r,n);o.years=Math.abs(Ce(r,n));let a=j(r,{years:s*o.years});o.months=Math.abs(He(a,n));let i=j(a,{months:s*o.months});o.days=Math.abs(Ue(i,n));let c=j(i,{days:s*o.days});o.hours=Math.abs(Fe(c,n));let p=j(c,{hours:s*o.hours});o.minutes=Math.abs($e(p,n));let m=j(p,{minutes:s*o.minutes});return o.seconds=Math.abs(je(m,n)),o}var V="yyyy/MM/dd";function xt(e){let t=de({start:new Date(2020,9,9),end:e}).years;return{title:wt(e),header:[第${se(e)}週: ${xn(e)},${ce(e)}年 ${(oe(e)*100/re(e)).toFixed(2)}%経過,"","今日のn年前",...[...Array(t).keys()].map(r=> ${C(ie(e,r+1),V)})],footer:[${C(W(e,1),V)}←${C(e,V)}→${C(Y(e,1),V)},${C(e,"yyyy/MM")}.icon]}}function xn(e){let t=ae(e);return[..."日月火水木金土"].map((r,n)=>n===t?${r}`:r).join("")}var yn=/^\d{4}\/\d{2}\/\d{2}$/;function yt(e,t){return yn.test(e)?wt(t)!==e:!1}function wt(e){return C(e,V)}pt("villagepump",{makeDiary:xt,isOldDiary:yt});
ver.5
更新:2022/02/16
使うとき
code:script.jsのインデントを解除する。
該当プロジェクトの自分のページに置く。
code:javascript
import { launch } from "/api/code/Mijinko/pin-diary/script.js";
launch("villagepump");
code:disabled-script.js
code:script.js
//無効化した時のダミーソース
export function launch(a){}
code:5-script.js
function X(e,t){let n=0,r=[];for(let o=0;o<t.length;o++){let s=e.findIndex((i,a)=>a>=n&&i.trim()===to.trim());if(s<0){r.push(to);continue}r.push(...e.slice(n,s+1)),n=s+1}return r.push(...e.slice(n)),r}function V(e,t){let n=-1;for(let r of t){let o=e.findIndex((s,i)=>i>n&&s.trim()===r.trim());if(o<0)return-1;n=o}return n}function be(e,t,n){let r=X(X(e,t).reverse(),...n.reverse()).reverse(),o=V(r,t),s=r.length-1-V(...r.reverse(),...n.reverse());return[...r.slice(0,o+1),"",...r.slice(o+1,s).join(`
).trim().split(
),"",...r.slice(s)]}function u(e,t){if(t.length<e)throw new TypeError(e+" argument"+(e>1?"s":"")+" required, but only "+t.length+" present")}function l(e){u(1,arguments);let t=Object.prototype.toString.call(e);return e instanceof Date||typeof e=="object"&&t==="[object Date]"?new Date(e.getTime()):typeof e=="number"||t==="[object Number]"?new Date(e):((typeof e=="string"||t==="[object String]")&&typeof console!="undefined"&&(console.warn("Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use parseISO to parse strings. See: https://git.io/fjule"),console.warn(new Error().stack)),new Date(NaN))}function J(e){u(1,arguments);let n=l(e).getFullYear();return n%400==0||n%4==0&&n%100!=0}function Z(e){u(1,arguments);let t=l(e);return String(new Date(t))==="Invalid Date"?NaN:J(t)?366:365}function ee(e){u(1,arguments);let t=l(e),n=new Date(0);return n.setFullYear(t.getFullYear(),0,1),n.setHours(0,0,0,0),n}function A(e){let t=new Date(Date.UTC(e.getFullYear(),e.getMonth(),e.getDate(),e.getHours(),e.getMinutes(),e.getSeconds(),e.getMilliseconds()));return t.setUTCFullYear(e.getFullYear()),e.getTime()-t.getTime()}function K(e){u(1,arguments);let t=l(e);return t.setHours(0,0,0,0),t}var Xe=864e5;function te(e,t){u(2,arguments);let n=K(e),r=K(t),o=n.getTime()-A(n),s=r.getTime()-A(r);return Math.round((o-s)/Xe)}function ne(e){u(1,arguments);let t=l(e);return te(t,ee(t))+1}function f(e){if(e===null||e===!0||e===!1)return NaN;let t=Number(e);return isNaN(t)?t:t<0?Math.ceil(t):Math.floor(t)}function I(e,t){u(2,arguments);let n=l(e),r=f(t);return isNaN(r)?new Date(NaN):(r&&n.setDate(n.getDate()+r),n)}function z(e,t){u(2,arguments);let n=f(t);return I(e,-n)}function re(e,t){u(2,arguments);let r=f(t)*7;return I(e,r)}function $(e,t){u(2,arguments);let n=f(t);return re(e,-n)}function _(e,t){u(2,arguments);let n=l(e),r=f(t);if(isNaN(r))return new Date(NaN);if(!r)return n;let o=n.getDate(),s=new Date(n.getTime());s.setMonth(n.getMonth()+r+1,0);let i=s.getDate();return o>=i?s:(n.setFullYear(s.getFullYear(),s.getMonth(),o),n)}function R(e,t){u(2,arguments);let n=f(t);return _(e,-n)}function oe(e,t){u(2,arguments);let n=f(t);return _(e,n*12)}function se(e,t){u(2,arguments);let n=f(t);return oe(e,-n)}function ie(e){return u(1,arguments),l(e).getDay()}function ae(e){return u(1,arguments),l(e).getFullYear()}function T(e,t){for(var n=e<0?"-":"",r=Math.abs(e).toString();r.length<t;)r="0"+r;return n+r}var Ve={y(e,t){let n=e.getUTCFullYear(),r=n>0?n:1-n;return T(t==="yy"?r%100:r,t.length)},M(e,t){let n=e.getUTCMonth();return t==="M"?String(n+1):T(n+1,2)},d(e,t){return T(e.getUTCDate(),t.length)},a(e,t){let n=e.getUTCHours()/12>=1?"pm":"am";switch(t){case"a":case"aa":return n.toUpperCase();case"aaa":return n;case"aaaaa":return n[0];case"aaaa":default:return n==="am"?"a.m.":"p.m."}},h(e,t){return T(e.getUTCHours()%12||12,t.length)},H(e,t){return T(e.getUTCHours(),t.length)},m(e,t){return T(e.getUTCMinutes(),t.length)},s(e,t){return T(e.getUTCSeconds(),t.length)},S(e,t){let n=t.length,r=e.getUTCMilliseconds(),o=Math.floor(r*Math.pow(10,n-3));return T(o,t.length)}},we=Ve;function ce(e){u(1,arguments);var t=l(e);return!isNaN(t)}function ue(e,t){u(2,arguments);let n=l(e).getTime(),r=f(t);return new Date(n+r)}function de(e,t){u(2,arguments);let n=f(t);return ue(e,-n)}var Je=/(\w)\1*|''|'(''|[^'])+('|$)|./g,Ze=/^'([^]*?)'?$/,et=/''/g,tt=/[a-zA-Z]/;function g(e,t){u(2,arguments);let n=l(e);if(!ce(n))throw new RangeError("Invalid time value");let r=A(n),o=de(n,r),s=t.match(Je);return s?s.map(a=>{if(a==="''")return"'";let c=a[0];if(c==="'")return nt(a);let p=we[c];if(p)return p(o,a);if(c.match(tt))throw new RangeError("Format string contains an unescaped latin alphabet character "+c+"");return a}).join(""):""}function nt(e){let t=e.match(Ze);return t?t[1].replace(et,"'"):e}var b="yyyy/MM/dd",pe=e=>[g(e,b),[${g(z(e,1),b)}.icon←${g(e,b)}→${g(I(e,1),b)}.icon,${rt(e)}曜日,${ae(e)}年 ${(ne(e)*100/Z(e)).toFixed(2)}%経過,🌏,[${g($(e,1),b)}.icon,${g($(e,2),b)}.icon,${g($(e,3),b)}.icon,${g(R(e,1),b)}.icon,${g(R(e,2),b)}.icon,${g(R(e,3),b)}.icon].join(" "),"今日のn年前", ${g(se(e,1),b)}].join(
),${g(z(e,1),b)}←${g(e,b)}→${g(I(e,1),b)}];function rt(e){switch(ie(e)){case 0:return"日";case 1:return"月";case 2:return"火";case 3:return"水";case 4:return"木";case 5:return"金";case 6:return"土"}}var L=e=>connect.sid=${e};function ot(e){return e!=null}function st(e){return ot(e)?(e.name===void 0||typeof e.name=="string")&&typeof e.message=="string":!1}function S(e){try{let t=typeof e=="string"?JSON.parse(e):e;return st(t)?t:!1}catch(t){if(t instanceof SyntaxError)return!1;throw t}}function M(e,t){let n=new Error;return n.name=e,n.message=t,n}var j=e=>e.replaceAll(" ","_").toLowerCase();var me=e=>[...e].map((t,n)=>t===" "?"_":!it.includes(t)||n===e.length-1&&at.includes(t)?encodeURIComponent(t):t).join(""),it='@$&+=:;",',at=':;",';async function Ee(e,t,n){let r=https://scrapbox.io/api/pages/${e}/${me(t)}?followRename=${n?.followRename??!0},o=await fetch(r,n?.sid?{headers:{Cookie:L(n.sid)}}:void 0);if(!o.ok){let i=S(await o.text());if(!i)throw M("UnexpectedError",Unexpected error has occuerd when fetching "${r}");return{ok:!1,value:i}}let s=await o.json();return{ok:!0,value:s}}async function le(e,t){let{sort:n,limit:r,skip:o}=t??{},s=new URLSearchParams;n!==void 0&&s.append("sort",n),r!==void 0&&s.append("limit",${r}),o!==void 0&&s.append("skip",${o});let i=https://scrapbox.io/api/pages/${e}?${s.toString()},a=await fetch(i,t?.sid?{headers:{Cookie:L(t.sid)}}:void 0);if(!a.ok){let p=S(await a.text());if(!p)throw M("UnexpectedError",Unexpected error has occuerd when fetching "${i}");return{ok:!1,value:p}}let c=await a.json();return{ok:!0,value:c}}var ve=(e,t)=>{if(!(e instanceof HTMLDivElement))throw new TypeError("${t}" must be HTMLDivElememt but actual is "${e}")};var ke=()=>ct(document.getElementsByClassName("status-bar")?.[0],"div.status-bar"),ct=(e,t)=>{if(!!e)return ve(e,t),e};var U=e=>new Promise(t=>setTimeout(()=>t(),e));function fe(){let e=ke();if(!e)throw new Error("div.status-bar can't be found");let t=document.createElement("div");return e.append(t),{render:(...n)=>{t.textContent="";let r=Ie(...n);r&&t.append(r)},dispose:()=>t.remove()}}function Ie(...e){let t=e.flatMap(r=>{switch(r.type){case"spinner":return[lt()];case"check-circle":return[ft()];case"exclamation-triangle":return[gt()];case"text":return[W(r.text)];case"group":{let o=Ie(...r.items);return o?[o]:[]}}});if(t.length===0)return;if(t.length===1)return t[0];let n=document.createElement("span");return n.classList.add("item-group"),n.append(...t),n}function W(e){let t=document.createElement("span");return t.classList.add("item"),t.append(e),t}function lt(){let e=document.createElement("i");return e.classList.add("fa","fa-spinner"),W(e)}function ft(){let e=document.createElement("i");return e.classList.add("kamon","kamon-check-circle"),W(e)}function gt(){let e=document.createElement("i");return e.classList.add("fas","fa-exclamation-triangle"),W(e)}var xt="4.2.0";async function N(){let t=(await ht())("https://scrapbox.io",{reconnectionDelay:5e3,transports:["websocket"]});return await new Promise((n,r)=>{let o=s=>r(s);t.once("connect",()=>{t.off("disconnect",o),n()}),t.once("disconnect",o)}),t}function ht(){let e=https://cdnjs.cloudflare.com/ajax/libs/socket.io/${xt}/socket.io.min.js;if(document.querySelector(scriptsrc="${e}"))return Promise.resolve(window.io);let t=document.createElement("script");return t.src=e,new Promise((n,r)=>{t.onload=()=>n(window.io),t.onerror=o=>r(o),document.head.append(t)})}function P(e,t=9e4){function n(o,s){let i;return new Promise((a,c)=>{let p=d=>{clearTimeout(i),c(new Error(d))};e.emit(o,s,d=>{clearTimeout(i),e.off("disconnect",p),d.error&&c(new Error(JSON.stringify(d.error))),"data"in d?a(d?.data):a(void 0)}),i=setTimeout(()=>{e.off("disconnect",p),c(new Error(Timeout: exceeded ${t}ms))},t),e.once("disconnect",p)})}async function*r(...o){let s,i=()=>new Promise(c=>s=c),a=c=>{s?.(c)};for(let c of o)e.on(c,a);try{for(;;)yield await i()}finally{for(let c of o)e.off(c,a)}}return{request:n,response:r}}async function Le(e,t){let n=https://scrapbox.io/api/projects/${e},r=await fetch(n,t?.sid?{headers:{Cookie:L(t.sid)}}:void 0);if(!r.ok){let s=S(await r.json());if(!s)throw M("UnexpectedError",Unexpected error has occuerd when fetching "${n}");return{ok:!1,value:s}}let o=await r.json();return{ok:!0,value:o}}async function Me(e){let t="https://scrapbox.io/api/users/me",n=await fetch(t,e?.sid?{headers:{Cookie:L(e.sid)}}:void 0);if(!n.ok)throw M("UnexpectedError",Unexpected error has occuerd when fetching "${t}");return await n.json()}var Q;async function F(){if(Q!==void 0)return Q;let e=await Me();if(e.isGuest)throw new Error("this script can only be executed by Logged in users");return Q=e.id,Q}var Ce=new Map;async function H(e){let t=Ce.get(e);if(t!==void 0)return t;let n=await Le(e);if(!n.ok){let{name:o,message:s}=n.value;throw new Error(${o} ${s})}let{id:r}=n.value;return Ce.set(e,r),r}function Ne(e){return e.padStart(8,"0")}function Pe(e){let t=Math.floor(new Date().getTime()/1e3).toString(16),n=Math.floor(16777214*Math.random()).toString(16);return${Ne(t).slice(-8)}${e.slice(-6)}0000${Ne(n)}}function Oe(e,t){let n=e.length>t.length,r=n?t:e,o=n?e:t,s=r.length+1,i=r.length+o.length+3,a=new Array(i);a.fill(-1);let c=[];function p(m,E,D){let k=Math.max(E,D),Y=k-m;for(;Y<r.length&&k<o.length&&r[Y]===o[k];)++Y,++k;return a[m+s]=c.length,c.push([{x:Y,y:k},a[m+(E>D?-1:1)+s]]),k}let d=new Array(i);d.fill(-1);let w=-1,h=o.length-r.length;do{++w;for(let m=-w;m<=h-1;++m)d[m+s]=p(m,d[m-1+s]+1,d[m+1+s]);for(let m=h+w;m>=h+1;--m)d[m+s]=p(m,d[m-1+s]+1,d[m+1+s]);d[h+s]=p(h,d[h-1+s]+1,d[h+1+s])}while(d[h+s]!==o.length);let B=[],v=a[h+s];for(;v!==-1;)B.push(c[v][0]),v=c[v][1];return{from:e,to:t,editDistance:h+w*2,buildSES:function*(){let m=0,E=0;for(let{x:D,y:k}of yt(B))for(;m<D||E<k;)k-D>E-m?(yield{value:o[E],type:n?"deleted":"added"},++E):k-D<E-m?(yield{value:r[m],type:n?"added":"deleted"},++m):(yield{value:r[m],type:"common"},++m,++E)}}}function*Ae(e){let t=[],n=[];function*r(){if(t.length>n.length){for(let o=0;o<n.length;o++)yield Se(t[o],n[o]);for(let o=n.length;o<t.length;o++)yield t[o]}else{for(let o=0;o<t.length;o++)yield Se(t[o],n[o]);for(let o=t.length;o<n.length;o++)yield n[o]}t=[],n=[]}for(let o of e)switch(o.type){case"added":t.push(o);break;case"deleted":n.push(o);break;case"common":yield*r(),yield o;break}yield*r()}function Se(e,t){return{value:e.value,oldValue:t.value,type:"replaced"}}function*yt(e){for(let t=e.length-1;t>=0;t--)yield e[t]}function*He(e,t,{userId:n}){let{buildSES:r}=Oe(e.map(({text:i})=>i),t),o=0,s=e[0].id;for(let i of Ae(r())){switch(i.type){case"added":yield{_insert:s,lines:{id:Pe(n),text:i.value}};continue;case"deleted":yield{_delete:s,lines:-1};break;case"replaced":yield{_update:s,lines:{text:i.value}};break}o++,s=e[o]?.id??"_end"}}var bt=e=>({type:"title",text:e.rows[0].text}),wt=e=>{let{rows:[t,...n]}=e,{indent:r=0,text:o=""}=t??{},s=o.replace(/^\s*code:/,"");return{indent:r,type:"codeBlock",fileName:s,content:n.map(i=>i.text.substring(r+1)).join(
)}},x=(e,{parseOnNested:t,parseOnQuoted:n,patterns:r})=>(o,s,i)=>{var a,c,p,d,w,h;if(!t&&s.nested)return(a=i==null?void 0:i())!==null&&a!==void 0?a:[];if(!n&&s.quoted)return(c=i==null?void 0:i())!==null&&c!==void 0?c:[];for(let B of r){let v=B.exec(o);if(v===null)continue;let m=o.substring(0,v.index),E=o.substring(v.index+((d=(p=v[0])===null||p===void 0?void 0:p.length)!==null&&d!==void 0?d:0)),D=e((w=v[0])!==null&&w!==void 0?w:"",s);return[...O(m,s),...D,...O(E,s)]}return(h=i==null?void 0:i())!==null&&h!==void 0?h:[]},y=e=>[{type:"plain",raw:e,text:e}],Et=x(y,{parseOnNested:!0,parseOnQuoted:!0,patterns:[/^()(.*)()$/]}),vt=/^>.*$/,kt=(e,t)=>t.context==="table"?y(e,t):[{type:"quote",raw:e,nodes:O(e.substring(1),{...t,quoted:!0})}],Tt=x(kt,{parseOnNested:!1,parseOnQuoted:!1,patterns:[vt]}),Dt=/^\? .+$/,It=(e,t)=>t.context==="table"?y(e,t):[{type:"helpfeel",raw:e,text:e.substring(2)}],Lt=x(It,{parseOnNested:!1,parseOnQuoted:!1,patterns:[Dt]}),Mt=/\[\[https?:\/\/[^\s\]]+\.(?:png|jpe?g|gif|svg)\]\]/i,Ct=/\[\[https?:\/\/(?:[0-9a-z-]+\.)?gyazo\.com\/[0-9a-f]{32}\]\]/,Nt=(e,t)=>{if(t.context==="table")return y(e,t);let n=e.substring(2,e.length-2),r=/^https?:\/\/([0-9a-z-]\.)?gyazo\.com\/[0-9a-f]{32}$/.test(n);return[{type:"strongImage",raw:e,src:r?${n}/thumb/1000:n}]},Pt=x(Nt,{parseOnNested:!1,parseOnQuoted:!0,patterns:[Mt,Ct]}),Ot=/\[[^[\]]*\.icon(?:\*[1-9]\d*)?\]/;function $e(e){return(t,n)=>{if(e==="strongIcon"&&n.context==="table")return y(t,n);let r=e==="icon"?t.substring(1,t.length-1):t.substring(2,t.length-2),o=r.lastIndexOf(".icon"),s=r.substring(0,o),i=s.startsWith("/")?"root":"relative",a=r.substring(o+5,r.length),c=a.startsWith("*")?parseInt(a.substring(1),10):1;return new Array(c).fill({}).map(()=>({path:s,pathType:i,type:e,raw:t}))}}var At=$e("icon"),St=x(At,{parseOnNested:!1,parseOnQuoted:!0,patterns:[Ot]}),Ht=/\[\[[^[\]]*\.icon(?:\*\d+)?\]\]/,$t=$e("strongIcon"),_t=x($t,{parseOnNested:!1,parseOnQuoted:!0,patterns:[Ht]}),Rt=/\[\[(?:[^[]|\[[^[]).*?\]*\]\]/,jt=(e,t)=>t.context==="table"?y(e,t):[{type:"strong",raw:e,nodes:O(e.substring(2,e.length-2),{...t,nested:!0})}],Ut=x(jt,{parseOnNested:!1,parseOnQuoted:!0,patterns:[Rt]}),Ft=/\[\$ .+? \]/,qt=/\[\$ [^\]]+\]/,Bt=(e,t)=>t.context==="table"?y(e,t):[{type:"formula",raw:e,formula:e.substring(3,e.length-(e.endsWith(" ]")?2:1))}],Yt=x(Bt,{parseOnNested:!1,parseOnQuoted:!0,patterns:[Ft,qt]}),Kt=/\[[!"#%&'()*+,\-./{|}<>_~]+ (?:\[[^[\]]+\]|[^\]])+\]/,zt=(e,t)=>{if(t.context==="table")return y(e,t);let n=e.indexOf(" "),r=e.substring(1,n),o=e.substring(n+1,e.length-1),s=new Set(r);if(s.has("*")){let i=r.split("*").length-1;s.delete("*"),s.add(*-${Math.min(i,10)})}return[{type:"decoration",raw:e,rawDecos:r,decos:Array.from(s),nodes:O(o,{...t,nested:!0})}]},Wt=x(zt,{parseOnNested:!1,parseOnQuoted:!0,patterns:[Kt]}),Qt=/.*?/,Gt=(e,t)=>t.context==="table"?y(e,t):[{type:"code",raw:e,text:e.substring(1,e.length-1)}],Xt=x(Gt,{parseOnNested:!1,parseOnQuoted:!0,patterns:[Qt]}),Vt=/^[$%] .+$/,Jt=(e,t)=>{var n;if(t.context==="table")return y(e,t);let r=(n=e[0])!==null&&n!==void 0?n:"",o=e.substring(2);return[{type:"commandLine",raw:e,symbol:r,text:o}]},Zt=x(Jt,{parseOnNested:!1,parseOnQuoted:!1,patterns:[Vt]}),en=/\[\s+\]/,tn=(e,t)=>t.context==="table"?y(e,t):[{type:"blank",raw:e,text:e.substring(1,e.length-1)}],nn=x(tn,{parseOnNested:!1,parseOnQuoted:!0,patterns:[en]}),rn=/\[https?:\/\/[^\s\]]+\.(?:png|jpe?g|gif|svg)(?:\?[^\]\s]+)?(?:\s+https?:\/\/[^\s\]]+)?\]/i,on=/\[https?:\/\/[^\s\]]+\s+https?:\/\/[^\s\]]+\.(?:png|jpe?g|gif|svg)(?:\?[^\]\s]+)?\]/i,sn=/\[https?:\/\/(?:[0-9a-z-]+\.)?gyazo\.com\/[0-9a-f]{32}(?:\/raw)?(?:\s+https?:\/\/[^\s\]]+)?\]/,an=/\[https?:\/\/[^\s\]]+\s+https?:\/\/(?:[0-9a-z-]+\.)?gyazo\.com\/[0-9a-f]{32}(?:\/raw)?\]/,cn=e=>/^https?:\/\/[^\s\]]+\.(png|jpe?g|gif|svg)(\?[^\]\s]+)?$/i.test(e)||un(e),un=e=>/^https?:\/\/([0-9a-z-]\.)?gyazo\.com\/[0-9a-f]{32}(\/raw)?$/.test(e),dn=(e,t)=>{if(t.context==="table")return y(e,t);let n=e.search(/\s/),r=n!==-1?e.substring(1,n):e.substring(1,e.length-1),o=n!==-1?e.substring(n,e.length-1).trimLeft():"",[s,i]=cn(o)?[o,r]:[r,o];return[{type:"image",raw:e,src:/^https?:\/\/([0-9a-z-]\.)?gyazo\.com\/[0-9a-f]{32}$/.test(s)?${s}/thumb/1000:s,link:i}]},pn=x(dn,{parseOnNested:!0,parseOnQuoted:!0,patterns:[rn,on,sn,an]}),mn=/\[https?:\/\/[^\s\]]+\s+[^\]]*[^\s]\]/,ln=/\[[^[\]]*[^\s]\s+https?:\/\/[^\s\]]+\]/,fn=/\[https?:\/\/[^\s\]]+\]/,gn=/https?:\/\/[^\s]+/,xn=(e,t)=>{if(t.context==="table")return y(e,t);let n=e.startsWith("[")&&e.endsWith("]")?e.substring(1,e.length-1):e,r=/^https?:\/\/[^\s\]]/.test(n),o=(r?/^https?:\/\/[^\s\]]+/:/https?:\/\/[^\s\]]+$/).exec(n);if((o==null?void 0:o[0])===void 0)return[];let s=r?n.substring(o[0].length):n.substring(0,o.index-1);return[{type:"link",raw:e,pathType:"absolute",href:o[0],content:s.trim()}]},hn=x(xn,{parseOnNested:!0,parseOnQuoted:!0,patterns:[mn,ln,fn,gn]}),_e=/\[([^\]]*[^\s])\s+([NS]\d+(?:\.\d+)?,[EW]\d+(?:\.\d+)?(?:,Z\d+)?)\]/,Re=/\[([NS]\d+(?:\.\d+)?,[EW]\d+(?:\.\d+)?(?:,Z\d+)?)(?:\s+([^\]]*[^\s]))?\]/,yn=e=>{let[t="",n="",r=""]=e.split(","),o=parseFloat(t.replace(/^N/,"").replace(/^S/,"-")),s=parseFloat(n.replace(/^E/,"").replace(/^W/,"-")),i=/^Z\d+$/.test(r)?parseInt(r.replace(/^Z/,""),10):14;return{latitude:o,longitude:s,zoom:i}},bn=(e,t)=>{var n;if(t.context==="table")return y(e,t);let r=(n=e.match(_e))!==null&&n!==void 0?n:e.match(Re);if(r===null)return[];let o=e.startsWith("[N")||e.startsWith("[S"),[,s="",i=""]=o?r:[r[0],r[2],r[1]],{latitude:a,longitude:c,zoom:p}=yn(s),d=i!==""?https://www.google.com/maps/place/${encodeURIComponent(i)}/@${a},${c},${p}z:https://www.google.com/maps/@${a},${c},${p}z;return[{type:"googleMap",raw:e,latitude:a,longitude:c,zoom:p,place:i,url:d}]},wn=x(bn,{parseOnNested:!1,parseOnQuoted:!0,patterns:[_e,Re]}),En=/\[\/?[^[\]]+\]/,vn=e=>{let t=e.substring(1,e.length-1);return[{type:"link",raw:e,pathType:t.startsWith("/")?"root":"relative",href:t,content:""}]},kn=x(vn,{parseOnNested:!0,parseOnQuoted:!0,patterns:[En]}),Tn=/(?:^|\s)#\S+/,Dn=(e,t)=>{if(t.context==="table")return y(e,t);if(e.startsWith("#"))return[{type:"hashTag",raw:e,href:e.substring(1)}];let n=e.substring(0,1),r=e.substring(1);return[...y(n,t),{type:"hashTag",raw:r,href:r.substring(1)}]},In=x(Dn,{parseOnNested:!0,parseOnQuoted:!0,patterns:[Tn]}),Ln=(e,t,n)=>{var r;return e===""?[]:(r=n==null?void 0:n())!==null&&r!==void 0?r:[]},Mn=(...e)=>(t,n)=>e.reduceRight((r,o)=>()=>o(t,n,r),()=>Et(t,n))(),O=Mn(Ln,Tt,Lt,Xt,Zt,Yt,nn,Wt,Pt,_t,Ut,pn,hn,St,wn,kn,In),Cn=e=>{let{rows:[t,...n]}=e,{indent:r=0,text:o=""}=t??{},s=o.replace(/^\s*table:/,"");return{indent:r,type:"table",fileName:s,cells:n.map(i=>i.text.substring(r+1)).map(i=>i.split(" ").map(a=>O(a,{nested:!1,quoted:!1,context:"table"})))}},Nn=e=>{let{indent:t,text:n}=e.rows[0];return{indent:t,type:"line",nodes:O(n.substring(t),{nested:!1,quoted:!1,context:"line"})}},je=e=>{switch(e.type){case"title":return bt(e);case"codeBlock":return wt(e);case"table":return Cn(e);case"line":return Nn(e)}},Ue=e=>e.split(
).map(t=>{var n,r,o;return{indent:(o=(r=(n=/^\s+/.exec(t))===null||n===void 0?void 0:n[0])===null||r===void 0?void 0:r.length)!==null&&o!==void 0?o:0,text:t}}),Pn=(e,t)=>{var n,r;return(e.type==="codeBlock"||e.type==="table")&&t.indent>((r=(n=e.rows[0])===null||n===void 0?void 0:n.indent)!==null&&r!==void 0?r:0)},Fe=(e,t)=>{let n=e[e.length-1];return n!==void 0&&Pn(n,t)?(n.rows.push(t),e):(e.push({type:/^\s*code:/.test(t.text)?"codeBlock":/^\s*table:/.test(t.text)?"table":"line",rows:[t]}),e)},qe=(e,t)=>{var n;if((n=t.hasTitle)!==null&&n!==void 0?n:!0){let[r,...o]=e;return r===void 0?[]:[{type:"title",rows:[r]},...o.reduce(Fe,[])]}return e.reduce(Fe,[])};function ge(e,t,{userId:n,head:r}){let o=t.flatMap(d=>d.split(
)),s=[...He(e,o,{userId:n})];(e[0].text!==o[0]||!r.persistent)&&s.push({title:o[0]});let i=e.slice(1,6).map(d=>d.text),a=o.slice(1,6);i.join("")!==a.join("")&&s.push({descriptions:a});let[c,p]=On(o.join(
));return(r.linksLc.length!==c.length||!r.linksLc.every(d=>c.includes(d)))&&s.push({links:c}),r.image!==p&&s.push({image:p}),s}function On(e){let t=Ue(e),n=qe(t,{hasTitle:!0}).flatMap(i=>{switch(i.type){case"codeBlock":case"title":return[];case"line":case"table":return[je(i)]}}),r=[],o=null,s=i=>{switch(i.type){case"hashTag":r.push(j(i.href));return;case"link":{if(i.pathType!=="relative")return;r.push(j(i.href));return}case"image":case"strongImage":{o??=i.src.endsWith("/thumb/1000")?i.src.replace(/\/thumb\/1000$/,"/raw"):i.src;return}case"strong":case"quote":case"decoration":{for(let a of i.nodes)s(a);return}default:return}};for(let i of An(n))s(i);return[r,o]}function*An(e){for(let t of e)switch(t.type){case"codeBlock":case"title":continue;case"line":for(let n of t.nodes)yield n;continue;case"table":{for(let n of t.cells)for(let r of n)for(let o of r)yield o;continue}}}async function C(e,t){let n=await Ee(e,t);if(!n.ok)throw new Error(You have no privilege of editing "/${e}/${t}".);let{commitId:r,persistent:o,image:s,links:i,lines:a,id:c,pin:p}=n.value;return{commitId:r,pageId:c,persistent:o,image:s,linksLc:i.map(d=>j(d)),pin:p,lines:a}}async function q(e,t,n){return t.length===0?{commitId:n.parentId}:await e("socket.io-request",{method:"commit",data:{kind:"page",...n,changes:t,cursor:null,freeze:!0}})}async function G(e,t,{project:n,title:r,retry:o=3,parentId:s,...i}){try{s=(await q(e,t,{parentId:s,...i})).commitId}catch{console.log("Faild to push a commit. Retry after pulling new commits");for(let c=0;c<o;c++){let{commitId:p}=await C(n,r);s=p;try{s=(await q(e,t,{parentId:s,...i})).commitId,console.log("Success in retrying");break}catch{continue}}throw Error("Faild to retry pushing.")}return s}var Be=()=>Number.MAX_SAFE_INTEGER-Math.floor(Date.now()/1e3);async function xe(e,t,n){let[r,o,s]=await Promise.all([C(e,t),H(e),F()]),i=r,a=await N();try{let{request:c}=P(a);for(let p=0;p<3;p++)try{let d=n(i.lines),w=d instanceof Promise?await d:d,h=ge(i.lines,w,{userId:s,head:i});await q(c,h,{parentId:i.commitId,projectId:o,pageId:i.pageId,userId:s});break}catch{if(p===2)throw Error("Faild to retry pushing.");console.log("Faild to push a commit. Retry after pulling new commits");try{i=await C(e,t)}catch(w){throw w}}}finally{a.disconnect()}}async function he(e,t,n){let[r,o,s]=await Promise.all([C(e,t),H(e),F()]);if(r.pin>0||!r.persistent&&!(n?.create??!1))return;let i={parentId:r.commitId,projectId:o,pageId:r.pageId,userId:s,project:e,title:t},a=await N(),{request:c}=P(a);if(!r.persistent){let p=await G(c,[{title:t}],i);i.parentId=p}try{await G(c,[{pin:Be()}],i)}finally{a.disconnect()}}async function ye(e,t){let[n,r,o]=await Promise.all([C(e,t),H(e),F()]);if(n.pin==0||!n.persistent)return;let s={parentId:n.commitId,projectId:r,pageId:n.pageId,userId:o,project:e,title:t},i=await N(),{request:a}=P(i);try{await G(a,[{pin:0}],s)}finally{i.disconnect()}}async function*Ye(e){for await(let t of Ke(e))!/\d{4}\/\d{2}\/\d{2}/.test(t.title)||(yield t)}async function*Ke(e,t=0){let{count:n,pages:r}=await Sn(e,t);for(let o of r)o.pin!==0&&(yield o);(r.at(-1)?.pin??0)!==0&&(yield*Ke(e,t+1e3))}async function Sn(e,t){let n=await le(e,{limit:1e3,skip:t});if(!n.ok){let r=new Error;throw r.name=n.value.name,r.message=n.value.message,r}return n.value}function Ia(e,t=24*3600*1e3){let n=()=>scrapbox.Project.name===e?Hn(e,t):We();n(),scrapbox.addListener("project:changed",n)}var ze;async function Hn(e,t){We(),await Qe(e,new Date),ze=setInterval(()=>Qe(e,new Date),t)}function We(){clearInterval(ze)}async function Qe(e,t){let{render:n,dispose:r}=fe();try{n({type:"spinner"},{type:"text",text:"unpin other diary pages..."});for await(let{title:p}of Ye(e))p!==$n(t)&&await ye(e,p);let[o,s,i]=pe(t);n({type:"spinner"},{type:"text",text:pin "/${e}/${o}"...}),await he(e,o,{create:!0});let a=s.split(
),c=i.split(
);n({type:"spinner"},{type:"text",text:format "/${e}/${o}"...}),await xe(e,o,p=>[p[0].text,...be(p.slice(1).map(d=>d.text),a,c)]),n({type:"check-circle"},{type:"text",text:Pinned "/${e}/${o}".})}catch(o){n({type:"exclamation-triangle"},{type:"text",text:o instanceof Error?${o.name} ${o.message}:"Unknown error! (see developper console)"}),console.error(o)}finally{await U(1e3),r()}}function $n(e){return${e.getFullYear()}/${Ge(e.getMonth()+1)}/${Ge(e.getDate())}`}function Ge(e){return String(e).padStart(2,"0")}export{Ia as launch,Qe as pinDiary};
ver.4
/villagepump/pin-diary-4
code:4-script.js
async function F(e){return(await B(e)).flatMap(r=>/\d{4}\/\d{2}\/\d{2}/.test(r.title)?{pageId:r.id,title:r.title,commitId:r.commitId,pin:r.pin}:[])}async function B(e){let t=await fetch(https://scrapbox.io/api/pages/${e}?limit=1),{count:r}=await t.json(),o=Math.min(r,1e3),s=Math.floor(r/1e3)+1;return(await Promise.all(...Array(s).keys().map(async c=>{let u=await fetch(/api/pages/${e}/?limit=${o}&skip=${c*1e3}),{pages:g}=await u.json();return g}))).flat()}function L(e,t){return new Promise((r,o)=>{let s=new WebSocket(e,t),i=(c,u)=>{let g=y=>{u(y),s.removeEventListener(c,g)};s.addEventListener(c,g)};i("error",o),i("open",()=>r({close:()=>new Promise(c=>{s.close(),i("close",u=>c(u))}),send:c=>{s.send(c)},receive:async function*(){for(;;)yield await new Promise(u=>i("message",g=>u(g)))}}))})}var G=({pin:e,commitId:t,pageId:r,userId:o,projectId:s})=>422${JSON.stringify(["socket.io-request",{method:"commit",data:{kind:"page",parentId:t,changes:[{pin:e>0?0:Number.MAX_SAFE_INTEGER-Math.floor(Date.now()/1e3)}],cursor:null,pageId:r,userId:o,projectId:s,freeze:!0}}])};async function A(e){let{send:t,receive:r,close:o}=await L("wss://scrapbox.io/socket.io/?EIO=4&transport=websocket"),s=r();await s.next(),await t("40"),await s.next(),await t(G(e)),await s.next(),await o()}function n(e,t){if(t.length<e)throw new TypeError(e+" argument"+(e>1?"s":"")+" required, but only "+t.length+" present")}function a(e){n(1,arguments);let t=Object.prototype.toString.call(e);return e instanceof Date||typeof e=="object"&&t==="object Date"?new Date(e.getTime()):typeof e=="number"||t==="object Number"?new Date(e):((typeof e=="string"||t==="object String")&&typeof console!="undefined"&&(console.warn("Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use parseISO to parse strings. See: https://git.io/fjule"),console.warn(new Error().stack)),new Date(NaN))}function _(e){n(1,arguments);let r=a(e).getFullYear();return r%400==0||r%4==0&&r%100!=0}function v(e){n(1,arguments);let t=a(e);return String(new Date(t))==="Invalid Date"?NaN:_(t)?366:365}function q(e){n(1,arguments);let t=a(e),r=new Date(0);return r.setFullYear(t.getFullYear(),0,1),r.setHours(0,0,0,0),r}function D(e){let t=new Date(Date.UTC(e.getFullYear(),e.getMonth(),e.getDate(),e.getHours(),e.getMinutes(),e.getSeconds(),e.getMilliseconds()));return t.setUTCFullYear(e.getFullYear()),e.getTime()-t.getTime()}function w(e){n(1,arguments);let t=a(e);return t.setHours(0,0,0,0),t}var J=864e5;function Y(e,t){n(2,arguments);let r=w(e),o=w(t),s=r.getTime()-D(r),i=o.getTime()-D(o);return Math.round((s-i)/J)}function T(e){n(1,arguments);let t=a(e);return Y(t,q(t))+1}function d(e){if(e===null||e===!0||e===!1)return NaN;let t=Number(e);return isNaN(t)?t:t<0?Math.ceil(t):Math.floor(t)}function p(e,t){n(2,arguments);let r=a(e),o=d(t);return isNaN(o)?new Date(NaN):(o&&r.setDate(r.getDate()+o),r)}function M(e,t){n(2,arguments);let r=d(t);return p(e,-r)}function $(e,t){n(2,arguments);let o=d(t)*7;return p(e,o)}function x(e,t){n(2,arguments);let r=d(t);return $(e,-r)}function b(e,t){n(2,arguments);let r=a(e),o=d(t);if(isNaN(o))return new Date(NaN);if(!o)return r;let s=r.getDate(),i=new Date(r.getTime());i.setMonth(r.getMonth()+o+1,0);let c=i.getDate();return s>=c?i:(r.setFullYear(i.getFullYear(),i.getMonth(),s),r)}function h(e,t){n(2,arguments);let r=d(t);return b(e,-r)}function P(e,t){n(2,arguments);let r=d(t);return b(e,r*12)}function O(e,t){n(2,arguments);let r=d(t);return P(e,-r)}function E(e){return n(1,arguments),a(e).getDay()}function k(e){return n(1,arguments),a(e).getFullYear()}function l(e,t){for(var r=e<0?"-":"",o=Math.abs(e).toString();o.length<t;)o="0"+o;return r+o}var Q={y(e,t){let r=e.getUTCFullYear(),o=r>0?r:1-r;return l(t==="yy"?o%100:o,t.length)},M(e,t){let r=e.getUTCMonth();return t==="M"?String(r+1):l(r+1,2)},d(e,t){return l(e.getUTCDate(),t.length)},a(e,t){let r=e.getUTCHours()/12>=1?"pm":"am";switch(t){case"a":case"aa":return r.toUpperCase();case"aaa":return r;case"aaaaa":return r0;case"aaaa":default:return r==="am"?"a.m.":"p.m."}},h(e,t){return l(e.getUTCHours()%12||12,t.length)},H(e,t){return l(e.getUTCHours(),t.length)},m(e,t){return l(e.getUTCMinutes(),t.length)},s(e,t){return l(e.getUTCSeconds(),t.length)},S(e,t){let r=t.length,o=e.getUTCMilliseconds(),s=Math.floor(o*Math.pow(10,r-3));return l(s,t.length)}},R=Q;function S(e){n(1,arguments);var t=a(e);return!isNaN(t)}function j(e,t){n(2,arguments);let r=a(e).getTime(),o=d(t);return new Date(r+o)}function C(e,t){n(2,arguments);let r=d(t);return j(e,-r)}var X=/(\w)\1*|''|'(''|^')+('|$)|./g,K=/^'(^*?)'?$/,ee=/''/g,te=/a-zA-Z/;function m(e,t){n(2,arguments);let r=a(e);if(!S(r))throw new RangeError("Invalid time value");let o=D(r),s=C(r,o),i=t.match(X);return i?i.map(u=>{if(u==="''")return"'";let g=u0;if(g==="'")return re(u);let y=Rg;if(y)return y(s,u);if(g.match(te))throw new RangeError("Format string contains an unescaped latin alphabet character "+g+"");return u}).join(""):""}function re(e){let t=e.match(K);return t?t1.replace(ee,"'"):e}var f="yyyy/MM/dd",U=e=>[m(e,f),[${m(M(e,1),f)}.icon]←${m(e,f)}→[${m(p(e,1),f)}.icon],[[${ne(e)}曜日]],${k(e)}年 ${(T(e)*100/v(e)).toFixed(2)}%経過,[🌏 https://ja.wikipedia.org/wiki/${m(e,"M月d日")}],[[${m(x(e,1),f)}.icon],[${m(x(e,2),f)}.icon],[${m(x(e,3),f)}.icon],[${m(h(e,1),f)}.icon],[${m(h(e,2),f)}.icon],[${m(h(e,3),f)}.icon]].join(" "),"今日のn年前", [${m(O(e,1),f)}],"","","",[${m(M(e,1),f)}]←${m(e,f)}→[${m(p(e,1),f)}]].join(`
);function ne(e){switch(E(e)){case 0:return"日";case 1:return"月";case 2:return"火";case 3:return"水";case 4:return"木";case 5:return"金";case 6:return"土"}}var I="villagepump",W=()=>scrapbox.Project.name===I?oe():H();W();scrapbox.addListener("project:changed",W);var z;async function oe(){H();let e=await fetch("https://scrapbox.io/api/users/me"),{id:t}=await e.json(),r=await fetch(https://scrapbox.io/api/projects/${I}),{id:o}=await r.json();N(t,o),z=setInterval(()=>N(t,o),24*3600*1e3)}function H(){clearInterval(z)}async function N(e,t){let r=await F(I),o=r.filter(({pin:i})=>i>0);for(let i of o)i.title!==V(new Date)&&await A({userId:e,projectId:t,...i});let s=r.find(({title:i})=>i===V(new Date));if(!s){let[i,...c]=U(new Date).split(
),u=document.createElement("a");return u.href=/${I}/${encodeURIComponent(i)}?body=${encodeURIComponent(c.join(`
))},document.body.append(u),u.click(),u.remove(),await new Promise(g=>scrapbox.once("page:changed",g)),await N(e,t)}s.pin>0||await A({userId:e,projectId:t,...s})}function V(e){return${e.getFullYear()}/${Z(e.getMonth()+1)}/${Z(e.getDate())}}function Z(e){return String(e).padStart(2,"0")}