PageSourceSearch

https://lruihao.github.io/js/lib/mermaid.min.js

js lruihao.github.io collected 2026-10-03 09:32:36 UTC 10,304 bytes, 1 lines download raw bytes

1L=class{#e=document;on(e,t){this.#e.addEventListener(e,t)}off(e,t){this.#e.removeEventListener(e,t)}emit(e,...n){let t=n[0];this.#e.dispatchEvent(t!==0[0]?new CustomEvent(e,{detail:t}):new CustomEvent(e))}},A=new L;function J(){return document.documentElement.dataset.themeMode||"auto"}function C(){let e=J();return e==="auto"?window.matchMedia("(prefers-color-scheme: dark)").matches:e==="dark"}var A,L,u=null,f={},F=!1,E=null,G=Promise.resolve(),R="",X=0,p=null,T=null,M=null;function D(e){if(!e.closest(".diagram-view"))return null;let t=e.closest(".diagram-container");if(!t)return null;M||(M=new WeakMap);let n=M.get(t);return n||(n={container:t,transform:null,svgs:new Set,lastSvg:null},M.set(t,n)),t.querySelectorAll(".mermaid svg, .mermaid-dark svg").forEach(e=>{n?.svgs.add(e)}),n}function Q(e,t){if(!e||!t)return!1;let n=.001;return Math.abs(e.x-t.x)<=n&&Math.abs(e.y-t.y)<=n&&Math.abs(e.scale-t.scale)<=n}function N(e,t){if(!e||!t)return;let n={scale:e.getScale(),...e.getPan()};Q(n,t)||(e.zoom(t.scale,{animate:!1,force:!0}),setTimeout(()=>e.pan(t.x,t.y,{animate:!1,force:!0})))}function Y(e,t=0){if(typeof window.requestIdleCallback=="function"){window.requestIdleCallback(e,{timeout:t});return}window.setTimeout(e,80)}function Z(e){if(!x(e))return!1;let t=getComputedStyle(e);if(t.display==="none"||t.visibility==="hidden")return!1;let n=e.getBoundingClientRect();return n.width>0&&n.height>0}function x(e){if(!e.isConnected||e.closest('[hidden], .hidden, [aria-hidden="true"]'))return!1;let t=e.closest(".diagram-view");if(t?.closest(".diagram-tabs")&&!t.classList.contains("active"))return!1;let n=e.closest(".tab-panel");if(n){let e=n.getBoundingClientRect();if(e.width===0&&e.height===0)return!1}return!0}function ee(){let e=f.themes??["default","dark"],t=e[0]??"default",n=e[1]??t;return C()?n:t}function te(e){let t=G.then(e,e);return G=t.then(()=>{},()=>{}),t}function ne(e,t){if(!u)return;let n=`${String(e)}|${t?"1":"0"}`;n!==R&&(R=n,u.initialize({startOnLoad:!1,darkMode:t,theme:e,securityLevel:f.securityLevel,look:f.look,layout:f.layout,fontFamily:f.fontFamily,altFontFamily:f.fontFamily}))}async function z(e,t){if(!e||!u||e.hasAttribute("data-processed")||e.hasAttribute("data-processing")||!x(e))return;let n=e.textContent?.trim()??"";if(!n){e.setAttribute("data-processed","");return}await te(async()=>{if(!e||!u||e.hasAttribute("data-processed")||!x(e))return;e.hasAttribute("data-processing")||e.setAttribute("data-processing",""),ne(t.theme,t.darkMode);let s=`fixit-mermaid-${++X}`;try{let o=await u.render(s,n,e),i=o?.svg??"";if(i&&(e.innerHTML=i),typeof o?.bindFunctions=="function")try{o.bindFunctions(e)}catch{}let t=e.querySelector("svg");t&&!t.id&&(t.id=s),e.removeAttribute("data-processing"),e.setAttribute("data-processed","");let a=t?.id??s;if(a){let e=document.getElementById(a);e instanceof SVGElement&&se(e)}}catch(n){let t=e.querySelector(`#d${s}`);t&&(e.innerHTML=t.innerHTML),e.removeAttribute("data-processing"),e.setAttribute("data-processed",""),console.warn("FixIt Mermaid render failed:",n)}})}function re(e=document){return Array.from(e.querySelectorAll(".diagram-container")).filter(e=>e.querySelector(".mermaid, .mermaid-dark, .mermaid-neutral"))}async function oe(e){if(!e)return;let n=C(),t=e.querySelector(n?".mermaid-dark":".mermaid");t&&(t.hasAttribute("data-processed")||t.querySelector("svg")||Z(t)&&await z(t,{theme:ee(),darkMode:n}))}function ie(){window.matchMedia("only screen and (max-width: 960px)").matches||Y(()=>{Array.from(document.querySelectorAll(".mermaid-neutral")).filter(e=>!e.hasAttribute("data-processed")).filter(x).forEach(e=>{z(e,{theme:"neutral",darkMode:!1})})})}function ae(){E||(E=new IntersectionObserver(e=>{e.forEach(e=>{if(!e.isIntersecting)return;let t=e.target;!t||!x(t)||oe(t)})},{root:null,rootMargin:"200px 0px",threshold:.01}))}function H(e=document,t=!1){if(ae(),!E)return;let n=re(e);n.forEach(e=>{e.hasAttribute("data-mermaid-observed")||(e.setAttribute("data-mermaid-observed",""),E?.observe(e))}
1),t&&n.forEach(e=>{E?.unobserve(e),E?.observe(e)})}function O(e){let t=e?.querySelectorAll(".mermaid, .mermaid-dark, .mermaid-neutral");return t?.length?Array.from(t).find(e=>{let t=getComputedStyle(e);if(t.display==="none"||t.visibility==="hidden")return!1;let n=e.getBoundingClientRect();return n.width>0&&n.height>0})?.querySelector("svg")??null:null}function se(e){if(!e.closest(".diagram-view")||!e.closest(".mermaid, .mermaid-dark")||(p||(p=new WeakMap),T||(T=new WeakSet),p.has(e))||typeof window.Panzoom!="function")return;let n=D(e),s=window.Panzoom(e,{maxScale:6,minScale:.2,step:.1});p.set(e,s),n?.transform&&N(s,n.transform);let t=e.closest(".mermaid, .mermaid-dark");t&&(T.has(t)||(T.add(t),t.addEventListener("pointerdown",()=>{let e=t.querySelector("svg");n&&e&&(n.lastSvg=e)},!1),t.addEventListener("wheel",e=>{if(!e.ctrlKey)return;let s=t.querySelector("svg"),o=s?p?.get(s):null;o&&(n&&s&&(n.lastSvg=s),e.preventDefault(),o.zoomWithWheel(e))},{passive:!1})))}async function le(e){let t=e.querySelector(".tabs-actions"),r=e.querySelector('.tab-item[data-tab="diagram"]'),c=e.querySelector('.tab-item[data-tab="code"]'),s=e.querySelector(".diagram-view"),o=Array.from(e.querySelectorAll(".tabs-content > .code-block")).find(e=>!e.classList.contains("diagram-view"));if(!t||!r||!c||!s||!o)return;let d=e.querySelector(".diagram-zoom-in-btn"),g=e.querySelector(".diagram-zoom-out-btn"),h=e.querySelector(".diagram-reset-btn"),u=e.querySelector(".diagram-download-btn");e.dataset.diagramInit="true";let v=[g,d,h,u].filter(Boolean),a=new WeakMap,i=[],n=o.querySelector(".code-header .fullscreen-btn");n&&n.parentElement!==t&&t.appendChild(n);let b=()=>{let e=o.querySelector(".code-header");return e?Array.from(e.querySelectorAll(".action-btn")).filter(e=>e!==n):Array.from(o.querySelectorAll(".copy-icon-btn"))},j=()=>(i.length&&i.some(e=>e.isConnected)||(i=b()),i),m=e=>{v.forEach(t=>{t.style.display=e?"":"none"})},y=e=>{e.forEach(e=>{!e||e.parentElement===t||(a.set(e,{parent:e.parentElement,next:e.nextSibling}),n&&n.parentElement===t?t.insertBefore(e,n):t.appendChild(e))})},_=e=>{e.forEach(e=>{let t=a.get(e);t?.parent&&(t.next&&t.next.parentNode===t.parent?t.parent.insertBefore(e,t.next):t.parent.appendChild(e),a.delete(e))})},f=e=>{let t=e==="diagram";r.classList.toggle("active",t),c.classList.toggle("active",!t),s.classList.toggle("active",t),o.classList.toggle("active",!t);let n=j();t?(m(!0),_(n)):(m(!1),y(n))},l=()=>{let e=O(s);return e&&p?p.get(e)??null:null};r.addEventListener("click",()=>f("diagram"),!1),c.addEventListener("click",()=>f("code"),!1),d?.addEventListener("click",()=>{let e=l();if(e?.zoomIn)try{e.zoomIn({animate:!0})}catch{e.zoomIn()}},!1),g?.addEventListener("click",()=>{let e=l();if(e?.zoomOut)try{e.zoomOut({animate:!0})}catch{e.zoomOut()}},!1),h?.addEventListener("click",()=>{let e=l();if(e?.reset)try{e.reset({animate:!0})}catch{e.reset()}},!1),u?.addEventListener("click",()=>{let n=O(s);if(!n)return;let t=n.cloneNode(!0);if(!(t instanceof SVGElement))return;t.removeAttribute("style");let i=(new XMLSerializer).serializeToString(t),a=new Blob([i],{type:"image/svg+xml;charset=utf-8"}),o=URL.createObjectURL(a),e=document.createElement("a"),r=s.dataset.filename??"mermaid.mmd";e.href=o,e.download=`${r.split(".")[0]}.svg`,document.body.appendChild(e),e.click(),document.body.removeChild(e),URL.revokeObjectURL(o)},!1)}function ce(){document.querySelectorAll('.diagram-tabs[data-diagram="mermaid"]:not([data-diagram-init])').forEach(e=>{le(e)})}function de(){document.addEventListener("tab-container-changed",e=>{let t=e.panel??e.detail?.relatedTarget;if(!t)return;H(t,!0),t.querySelectorAll(".mermaid-neutral").forEach(e=>{e.hasAttribute("data-processed")||z(e,{theme:"neutral",darkMode:!1})})},!1)}function me(){let e=e=>{let t=e.querySelectorAll(".mermaid, .mermaid-dark");return t.length?Array.from(t).find(e=>{let t=getComputedStyle(e);if(t.display==="none"||t.visibility==="hidden")return!1;let n=e.getBoundingClientRect();return n.width>0&&n.height>0})?.querySelector("svg")??null:null},t=e=>{let t=e?p?.get(e):null;if(!t?.getPan||!t?.getScale)return null;try{let e=t.getPan(),n=t.getScale();if(e&&typeof n=="number")return{x:e.x,y:e.y,scale:n}}catch{return null}return null},n=n=>{M&&document.querySelectorAll(".diagram-view .diagram-container").forEach(s=>{let i=e(s),a=n?s.querySelector(".mermaid svg"):s.querySelector(".mermaid-dark svg"),r=i??a;if(!r)return;let o=D(r);if(!o)return;let c=o.lastSvg,d=c?.isConnected?c:a??i,l=t(d);if(l&&(o.transform=l),!!o.transform&&i){let e=p?.get(i);N(e,o.transform)}})};
1A.on("fixit:switch-theme",({detail:e})=>{e?.isChanged&&(n(e.isDark),H(document,!0))})}function B(){document.querySelectorAll(".mermaid, .mermaid-dark, .mermaid-neutral").length&&(ce(),H(),ie())}function V(){F||(F=!0,console.log("%c💫 FixIt Mermaid","color: #FF3670; font-weight: bold; font-size: 16px; text-shadow: 1px 1px 2px rgba(0,0,0,0.1);"),me(),de(),B(),A.on("fixit:content-decrypted",B))}async function ue(e){u=e.mermaid,f=e.config;let n=[];if(e.zenuml&&n.push(e.zenuml),n.length&&typeof u.registerExternalDiagrams=="function")try{await u.registerExternalDiagrams(n)}catch(e){console.warn("FixIt Mermaid registerExternalDiagrams failed:",e)}let t=[];if(e.loaders.forEach(e=>{Array.isArray(e)?t.push(...e):t.push(e)}),t.length&&typeof u.registerLayoutLoaders=="function")try{u.registerLayoutLoaders(t)}catch(e){console.warn("FixIt Mermaid registerLayoutLoaders failed:",e)}u.startOnLoad=!1,window.mermaid=u,document.addEventListener("DOMContentLoaded",V,{once:!0}),document.readyState!=="loading"&&V()}function k(e){return e&&typeof e=="object"&&"default"in e?e.default:e}async function Re(){f=window.config?.mermaid??{};let t=f.cdn||"https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.esm.min.mjs",e=f.zenuml||"",n=f.layoutLoaders||[];try{let o=await import(t),i=k(o),s;if(e)try{let t=await import(e);s=k(t)}catch(e){console.warn("FixIt Mermaid zenuml load failed:",e)}let a=await Promise.all(n.map(async e=>{try{let t=await import(e);return k(t)}catch(t){return console.warn("FixIt Mermaid layout loader load failed:",e,t),null}})),r={mermaid:i,config:f,zenuml:s,loaders:a.filter(e=>e!==null)};await ue(r)}catch(e){console.warn("FixIt Mermaid bootstrap failed:",e)}}export{Re as bootstrapMermaid,ue as initMermaidRuntime}

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.