avatar
GZTime
Walking on the Time Axis.
Follow Me
系列文章
最新文章
网站信息
文章数目 :
85
本站访客数 :
本站总浏览量 :
最后更新时间 :
`],{type:"text/html;charset=utf-8"}),a=URL.createObjectURL(s);window.open(a,"_blank","noopener"),setTimeout(()=>URL.revokeObjectURL(a),3e4)},r=(e,t,n,i)=>{const r=e[2]*t,o=e[3]*t;return[n-(n-e[0])*t,i-(i-e[1])*t,r,o]},o=i=>{const o=i.querySelector("svg");if(!o)return;const s=e(o);if(i.__mermaidInitViewBox=s,i.__mermaidCurViewBox=s.slice(),t(o,s),i.__mermaidGestureBound)return;i.__mermaidGestureBound=!0;const a=(t,n)=>{const r=o.getBoundingClientRect(),s=i.__mermaidCurViewBox||e(o);return{x:s[0]+(t-r.left)*(s[2]/r.width),y:s[1]+(n-r.top)*(s[3]/r.height),rect:r,vb:s}},d={pointers:new Map,startVb:null,startDist:0,startCenter:null},m=e=>{e=(e=>{const t=i.__mermaidInitViewBox||e,r=.1*t[2],o=10*t[2],s=.1*t[3],a=10*t[3];return e[2]=n(e[2],r,o),e[3]=n(e[3],s,a),e})(e),i.__mermaidCurViewBox=e,t(o,e)},l=e=>{d.pointers.delete(e.pointerId),0===d.pointers.size?(d.startVb=null,d.startDist=0,d.startCenter=null,i.__mermaidLastSinglePointer=null):1===d.pointers.size&&(i.__mermaidLastSinglePointer=[...d.pointers.values()][0])};o.addEventListener("pointerdown",t=>{if("mouse"!==t.pointerType||0===t.button)if(o.setPointerCapture(t.pointerId),d.pointers.set(t.pointerId,{x:t.clientX,y:t.clientY}),1===d.pointers.size)d.startVb=(i.__mermaidCurViewBox||e(o)).slice();else if(2===d.pointers.size){const t=[...d.pointers.values()],n=t[0].x-t[1].x,r=t[0].y-t[1].y;d.startDist=Math.hypot(n,r),d.startVb=(i.__mermaidCurViewBox||e(o)).slice(),d.startCenter={x:(t[0].x+t[1].x)/2,y:(t[0].y+t[1].y)/2}}}),o.addEventListener("pointermove",t=>{if(d.pointers.has(t.pointerId))if(d.pointers.set(t.pointerId,{x:t.clientX,y:t.clientY}),1===d.pointers.size&&d.startVb){const n=[...d.pointers.values()][0],r=(t.clientX,t.movementX,t.clientY,t.movementY,i.__mermaidLastSinglePointer||n),s=n.x-r.x,l=n.y-r.y;i.__mermaidLastSinglePointer=n;const{rect:c}=a(n.x,n.y),u=(i.__mermaidCurViewBox||e(o)).slice(),p=s*(u[2]/c.width),h=l*(u[3]/c.height);m([u[0]-p,u[1]-h,u[2],u[3]])}else if(2===d.pointers.size&&d.startVb&&d.startDist>0){const e=[...d.pointers.values()],t=e[0].x-e[1].x,n=e[0].y-e[1].y,i=Math.hypot(t,n);if(!i)return;const o=d.startDist/i,s={x:(e[0].x+e[1].x)/2,y:(e[0].y+e[1].y)/2},l=a(s.x,s.y),c=l.x,u=l.y,p=r(d.startVb,o,c,u);m(p)}}),o.addEventListener("pointerup",l),o.addEventListener("pointercancel",l),o.addEventListener("wheel",t=>{t.preventDefault();const n=t.deltaY>0?1.1:.9,{x:s,y:d}=a(t.clientX,t.clientY),l=(i.__mermaidCurViewBox||e(o)).slice();m(r(l,n,s,d))},{passive:!1}),o.addEventListener("dblclick",()=>{const e=i.__mermaidInitViewBox;e&&(i.__mermaidCurViewBox=e.slice(),t(o,e))})},s=e=>{window.loadMermaid=!0;const t="dark"===document.documentElement.getAttribute("data-theme")?"dark":"default";e.forEach((e,n)=>{const r=e.firstElementChild,s=e.querySelector("svg");s&&s.remove(),e.__mermaidGestureBound=!1;const a=r.dataset.config?JSON.parse(r.dataset.config):{};a.theme||(a.theme=t);const d="mermaid-"+n,m=`%%{init: ${JSON.stringify(a)}}%%\n`+r.textContent,l=mermaid.render(d,m),c=t=>{r.insertAdjacentHTML("afterend",t),o(e),e.__mermaidOriginalSvg=t,(e=>{let t=e.querySelector(".mermaid-open-btn");t||(t=document.createElement("button"),t.type="button",t.className="mermaid-open-btn",e.appendChild(t)),t.innerHTML='',t.__mermaidViewerBound||(t.addEventListener("click",t=>{t.preventDefault(),t.stopPropagation();const n=e.__mermaidOriginalSvg||e.querySelector("svg");if(!n)return;const r=e.__mermaidInitViewBox;i({source:n,initViewBox:r})}),t.__mermaidViewerBound=!0)})(e)};"string"==typeof l?c(l):l.then(({svg:e})=>c(e))})},a=()=>{(()=>{const e=document.querySelectorAll("pre > code.mermaid");0!==e.length&&e.forEach(e=>{const t=document.createElement("pre");t.className="mermaid-src",t.hidden=!0,t.textContent=e.textContent;const n=document.createElement("div");n.className="mermaid-wrap",n.appendChild(t),e.parentNode.replaceWith(n)})})();const e=document.querySelectorAll("#article-container .mermaid-wrap");if(0===e.length)return;const t=()=>s(e);btf.addGlobalFn("themeChange",t,"mermaid"),window.loadMermaid?t():btf.getScript("https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.min.js").then(t)};btf.addGlobalFn("encrypt",a,"mermaid"),window.pjax?a():document.addEventListener("DOMContentLoaded",a)})()