@quartz-community/graph 0.1.0 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,21 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.0.1
4
+
5
+ ### Patch Changes
6
+
7
+ - 4deeaaa: Use sentence case for the French graph title: "Vue graphique" instead of "Vue Graphique" (jackyzha0/quartz#2513).
8
+
9
+ ## 1.0.0
10
+
11
+ ### Major Changes
12
+
13
+ - Stable 1.0 release. All `@quartz-community/*` dependencies now use `^1.0.0` ranges.
14
+
15
+ Pre-1.0 caret ranges pinned the minor version (`^0.2.1` means `>=0.2.1 <0.3.0`), so
16
+ published fixes to shared packages could never be resolved by dependents. Moving the
17
+ ecosystem to 1.0 makes caret ranges behave conventionally.
18
+
3
19
  All notable changes to this project will be documented in this file.
4
20
 
5
21
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/)
@@ -1,2 +1,24 @@
1
- export { D3Config, Graph, GraphOptions } from '../index.js';
2
- import '@quartz-community/types';
1
+ import { QuartzComponent } from '@quartz-community/types';
2
+
3
+ interface D3Config {
4
+ drag: boolean;
5
+ zoom: boolean;
6
+ depth: number;
7
+ scale: number;
8
+ repelForce: number;
9
+ centerForce: number;
10
+ linkDistance: number;
11
+ fontSize: number;
12
+ opacityScale: number;
13
+ removeTags: string[];
14
+ showTags: boolean;
15
+ focusOnHover?: boolean;
16
+ enableRadial?: boolean;
17
+ }
18
+ interface GraphOptions {
19
+ localGraph?: Partial<D3Config>;
20
+ globalGraph?: Partial<D3Config>;
21
+ }
22
+ declare const _default: (userOpts?: Partial<GraphOptions>) => QuartzComponent;
23
+
24
+ export { type D3Config, _default as Graph, type GraphOptions };
@@ -88,7 +88,7 @@ var fi_FI_default = {
88
88
  var fr_FR_default = {
89
89
  components: {
90
90
  graph: {
91
- title: "Vue Graphique"
91
+ title: "Vue graphique"
92
92
  }
93
93
  }
94
94
  };
@@ -314,7 +314,7 @@ function i18n(locale) {
314
314
  var graph_default = ".graph > h3 {\n font-size: 1rem;\n margin: 0;\n}\n.graph > .graph-outer {\n border-radius: 5px;\n border: 1px solid var(--lightgray);\n box-sizing: border-box;\n height: 250px;\n margin: 0.5em 0;\n position: relative;\n overflow: hidden;\n}\n.graph > .graph-outer > .global-graph-icon {\n cursor: pointer;\n background: none;\n border: none;\n color: var(--dark);\n opacity: 0.5;\n width: 24px;\n height: 24px;\n position: absolute;\n padding: 0.2rem;\n margin: 0.3rem;\n top: 0;\n right: 0;\n border-radius: 4px;\n background-color: transparent;\n transition: background-color 0.5s ease;\n}\n.graph > .graph-outer > .global-graph-icon:hover {\n background-color: var(--lightgray);\n}\n.graph > .global-graph-outer {\n position: fixed;\n z-index: 9999;\n left: 0;\n top: 0;\n width: 100vw;\n height: 100%;\n backdrop-filter: blur(4px);\n display: none;\n overflow: hidden;\n}\n.graph > .global-graph-outer.active {\n display: inline-block;\n}\n.graph > .global-graph-outer > .global-graph-container {\n border: 1px solid var(--lightgray);\n background-color: var(--light);\n border-radius: 5px;\n box-sizing: border-box;\n position: fixed;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n height: 80vh;\n width: 80vw;\n}\n@media all and (max-width: 800px) {\n .graph > .global-graph-outer > .global-graph-container {\n width: 90%;\n }\n}\n\n.graph-container {\n width: 100%;\n height: 100%;\n}";
315
315
 
316
316
  // src/components/scripts/graph.inline.ts
317
- var graph_inline_default = `var Ct=Object.hasOwnProperty;var pe,y,Ce,tt,J,fe,ve,Ee,Mu,Bu,du,Ae,Iu,Ru,Ou,rt,ge={},bu=[],nt=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,Su=Array.isArray;function $(u,e){for(var t in e)u[t]=e[t];return u}function zu(u){u&&u.parentNode&&u.parentNode.removeChild(u)}function Uu(u,e,t,a,o){var n={type:u,props:e,key:t,ref:a,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:o??++Ce,__i:-1,__u:0};return o==null&&y.vnode!=null&&y.vnode(n),n}function cu(u){return u.children}function yu(u,e){this.props=u,this.context=e}function su(u,e){if(e==null)return u.__?su(u.__,u.__i+1):null;for(var t;e<u.__k.length;e++)if((t=u.__k[e])!=null&&t.__e!=null)return t.__e;return typeof u.type=="function"?su(u):null}function ot(u){if(u.__P&&u.__d){var e=u.__v,t=e.__e,a=[],o=[],n=$({},e);n.__v=e.__v+1,y.vnode&&y.vnode(n),be(u.__P,n,e,u.__n,u.__P.namespaceURI,32&e.__u?[t]:null,a,t??su(e),!!(32&e.__u),o),n.__v=e.__v,n.__.__k[n.__i]=n,Dt(a,n,o),e.__e=e.__=null,n.__e!=t&&me(n)}}function me(u){if((u=u.__)!=null&&u.__c!=null)return u.__e=u.__c.base=null,u.__k.some(function(e){if(e!=null&&e.__e!=null)return u.__e=u.__c.base=e.__e}),me(u)}function _e(u){(!u.__d&&(u.__d=!0)&&J.push(u)&&!xu.__r++||fe!=y.debounceRendering)&&((fe=y.debounceRendering)||ve)(xu)}function xu(){try{for(var u,e=1;J.length;)J.length>e&&J.sort(Ee),u=J.shift(),e=J.length,ot(u)}finally{J.length=xu.__r=0}}function Be(u,e,t,a,o,n,s,c,h,D,_){var r,E,f,b,S,B,p,C=a&&a.__k||bu,M=e.length;for(h=at(t,e,C,h,M),r=0;r<M;r++)(f=t.__k[r])!=null&&(E=f.__i!=-1&&C[f.__i]||ge,f.__i=r,B=be(u,f,E,o,n,s,c,h,D,_),b=f.__e,f.ref&&E.ref!=f.ref&&(E.ref&&Hu(E.ref,null,f),_.push(f.ref,f.__c||b,f)),S==null&&b!=null&&(S=b),(p=!!(4&f.__u))||E.__k===f.__k?(h=ye(f,h,u,p),p&&E.__e&&(E.__e=null)):typeof f.type=="function"&&B!==void 0?h=B:b&&(h=b.nextSibling),f.__u&=-7);return t.__e=S,h}function at(u,e,t,a,o){var n,s,c,h,D,_=t.length,r=_,E=0;for(u.__k=new Array(o),n=0;n<o;n++)(s=e[n])!=null&&typeof s!="boolean"&&typeof s!="function"?(typeof s=="string"||typeof s=="number"||typeof s=="bigint"||s.constructor==String?s=u.__k[n]=Uu(null,s,null,null,null):Su(s)?s=u.__k[n]=Uu(cu,{children:s},null,null,null):s.constructor===void 0&&s.__b>0?s=u.__k[n]=Uu(s.type,s.props,s.key,s.ref?s.ref:null,s.__v):u.__k[n]=s,h=n+E,s.__=u,s.__b=u.__b+1,c=null,(D=s.__i=it(s,t,h,r))!=-1&&(r--,(c=t[D])&&(c.__u|=2)),c==null||c.__v==null?(D==-1&&(o>_?E--:o<_&&E++),typeof s.type!="function"&&(s.__u|=4)):D!=h&&(D==h-1?E--:D==h+1?E++:(D>h?E--:E++,s.__u|=4))):u.__k[n]=null;if(r)for(n=0;n<_;n++)(c=t[n])!=null&&(2&c.__u)==0&&(c.__e==a&&(a=su(c)),Se(c,c));return a}function ye(u,e,t,a){var o,n;if(typeof u.type=="function"){for(o=u.__k,n=0;o&&n<o.length;n++)o[n]&&(o[n].__=u,e=ye(o[n],e,t,a));return e}u.__e!=e&&(a&&(e&&u.type&&!e.parentNode&&(e=su(u)),t.insertBefore(u.__e,e||null)),e=u.__e);do e=e&&e.nextSibling;while(e!=null&&e.nodeType==8);return e}function it(u,e,t,a){var o,n,s,c=u.key,h=u.type,D=e[t],_=D!=null&&(2&D.__u)==0;if(D===null&&c==null||_&&c==D.key&&h==D.type)return t;if(a>(_?1:0)){for(o=t-1,n=t+1;o>=0||n<e.length;)if((D=e[s=o>=0?o--:n++])!=null&&(2&D.__u)==0&&c==D.key&&h==D.type)return s}return-1}function de(u,e,t){e[0]=="-"?u.setProperty(e,t??""):u[e]=t==null?"":typeof t!="number"||nt.test(e)?t:t+"px"}function mu(u,e,t,a,o){var n,s;u:if(e=="style")if(typeof t=="string")u.style.cssText=t;else{if(typeof a=="string"&&(u.style.cssText=a=""),a)for(e in a)t&&e in t||de(u.style,e,"");if(t)for(e in t)a&&t[e]==a[e]||de(u.style,e,t[e])}else if(e[0]=="o"&&e[1]=="n")n=e!=(e=e.replace(Ae,"$1")),s=e.toLowerCase(),e=s in u||e=="onFocusOut"||e=="onFocusIn"?s.slice(2):e.slice(2),u.l||(u.l={}),u.l[e+n]=t,t?a?t[du]=a[du]:(t[du]=Iu,u.addEventListener(e,n?Ou:Ru,n)):u.removeEventListener(e,n?Ou:Ru,n);else{if(o=="http://www.w3.org/2000/svg")e=e.replace(/xlink(H|:h)/,"h").replace(/sName$/,"s");else if(e!="width"&&e!="height"&&e!="href"&&e!="list"&&e!="form"&&e!="tabIndex"&&e!="download"&&e!="rowSpan"&&e!="colSpan"&&e!="role"&&e!="popover"&&e in u)try{u[e]=t??"";break u}catch{}typeof t=="function"||(t==null||t===!1&&e[4]!="-"?u.removeAttribute(e):u.setAttribute(e,e=="popover"&&t==1?"":t))}}function he(u){return function(e){if(this.l){var t=this.l[e.type+u];if(e[Bu]==null)e[Bu]=Iu++;else if(e[Bu]<t[du])return;return t(y.event?y.event(e):e)}}}function be(u,e,t,a,o,n,s,c,h,D){var _,r,E,f,b,S,B,p,C,M,G,I,Q,X,uu,T=e.type;if(e.constructor!==void 0)return null;128&t.__u&&(h=!!(32&t.__u),n=[c=e.__e=t.__e]),(_=y.__b)&&_(e);u:if(typeof T=="function")try{if(p=e.props,C=T.prototype&&T.prototype.render,M=(_=T.contextType)&&a[_.__c],G=_?M?M.props.value:_.__:a,t.__c?B=(r=e.__c=t.__c).__=r.__E:(C?e.__c=r=new T(p,G):(e.__c=r=new yu(p,G),r.constructor=T,r.render=st),M&&M.sub(r),r.state||(r.state={}),r.__n=a,E=r.__d=!0,r.__h=[],r._sb=[]),C&&r.__s==null&&(r.__s=r.state),C&&T.getDerivedStateFromProps!=null&&(r.__s==r.state&&(r.__s=$({},r.__s)),$(r.__s,T.getDerivedStateFromProps(p,r.__s))),f=r.props,b=r.state,r.__v=e,E)C&&T.getDerivedStateFromProps==null&&r.componentWillMount!=null&&r.componentWillMount(),C&&r.componentDidMount!=null&&r.__h.push(r.componentDidMount);else{if(C&&T.getDerivedStateFromProps==null&&p!==f&&r.componentWillReceiveProps!=null&&r.componentWillReceiveProps(p,G),e.__v==t.__v||!r.__e&&r.shouldComponentUpdate!=null&&r.shouldComponentUpdate(p,r.__s,G)===!1){e.__v!=t.__v&&(r.props=p,r.state=r.__s,r.__d=!1),e.__e=t.__e,e.__k=t.__k,e.__k.some(function(V){V&&(V.__=e)}),bu.push.apply(r.__h,r._sb),r._sb=[],r.__h.length&&s.push(r);break u}r.componentWillUpdate!=null&&r.componentWillUpdate(p,r.__s,G),C&&r.componentDidUpdate!=null&&r.__h.push(function(){r.componentDidUpdate(f,b,S)})}if(r.context=G,r.props=p,r.__P=u,r.__e=!1,I=y.__r,Q=0,C)r.state=r.__s,r.__d=!1,I&&I(e),_=r.render(r.props,r.state,r.context),bu.push.apply(r.__h,r._sb),r._sb=[];else do r.__d=!1,I&&I(e),_=r.render(r.props,r.state,r.context),r.state=r.__s;while(r.__d&&++Q<25);r.state=r.__s,r.getChildContext!=null&&(a=$($({},a),r.getChildContext())),C&&!E&&r.getSnapshotBeforeUpdate!=null&&(S=r.getSnapshotBeforeUpdate(f,b)),X=_!=null&&_.type===cu&&_.key==null?xe(_.props.children):_,c=Be(u,Su(X)?X:[X],e,t,a,o,n,s,c,h,D),r.base=e.__e,e.__u&=-161,r.__h.length&&s.push(r),B&&(r.__E=r.__=null)}catch(V){if(e.__v=null,h||n!=null)if(V.then){for(e.__u|=h?160:128;c&&c.nodeType==8&&c.nextSibling;)c=c.nextSibling;n[n.indexOf(c)]=null,e.__e=c}else{for(uu=n.length;uu--;)zu(n[uu]);Gu(e)}else e.__e=t.__e,e.__k=t.__k,V.then||Gu(e);y.__e(V,e,t)}else n==null&&e.__v==t.__v?(e.__k=t.__k,e.__e=t.__e):c=e.__e=lt(t.__e,e,t,a,o,n,s,h,D);return(_=y.diffed)&&_(e),128&e.__u?void 0:c}function Gu(u){u&&(u.__c&&(u.__c.__e=!0),u.__k&&u.__k.some(Gu))}function Dt(u,e,t){for(var a=0;a<t.length;a++)Hu(t[a],t[++a],t[++a]);y.__c&&y.__c(e,u),u.some(function(o){try{u=o.__h,o.__h=[],u.some(function(n){n.call(o)})}catch(n){y.__e(n,o.__v)}})}function xe(u){return typeof u!="object"||u==null||u.__b>0?u:Su(u)?u.map(xe):$({},u)}function lt(u,e,t,a,o,n,s,c,h){var D,_,r,E,f,b,S,B=t.props||ge,p=e.props,C=e.type;if(C=="svg"?o="http://www.w3.org/2000/svg":C=="math"?o="http://www.w3.org/1998/Math/MathML":o||(o="http://www.w3.org/1999/xhtml"),n!=null){for(D=0;D<n.length;D++)if((f=n[D])&&"setAttribute"in f==!!C&&(C?f.localName==C:f.nodeType==3)){u=f,n[D]=null;break}}if(u==null){if(C==null)return document.createTextNode(p);u=document.createElementNS(o,C,p.is&&p),c&&(y.__m&&y.__m(e,n),c=!1),n=null}if(C==null)B===p||c&&u.data==p||(u.data=p);else{if(n=n&&pe.call(u.childNodes),!c&&n!=null)for(B={},D=0;D<u.attributes.length;D++)B[(f=u.attributes[D]).name]=f.value;for(D in B)f=B[D],D=="dangerouslySetInnerHTML"?r=f:D=="children"||D in p||D=="value"&&"defaultValue"in p||D=="checked"&&"defaultChecked"in p||mu(u,D,null,f,o);for(D in p)f=p[D],D=="children"?E=f:D=="dangerouslySetInnerHTML"?_=f:D=="value"?b=f:D=="checked"?S=f:c&&typeof f!="function"||B[D]===f||mu(u,D,f,B[D],o);if(_)c||r&&(_.__html==r.__html||_.__html==u.innerHTML)||(u.innerHTML=_.__html),e.__k=[];else if(r&&(u.innerHTML=""),Be(e.type=="template"?u.content:u,Su(E)?E:[E],e,t,a,C=="foreignObject"?"http://www.w3.org/1999/xhtml":o,n,s,n?n[0]:t.__k&&su(t,0),c,h),n!=null)for(D=n.length;D--;)zu(n[D]);c||(D="value",C=="progress"&&b==null?u.removeAttribute("value"):b!=null&&(b!==u[D]||C=="progress"&&!b||C=="option"&&b!=B[D])&&mu(u,D,b,B[D],o),D="checked",S!=null&&S!=u[D]&&mu(u,D,S,B[D],o))}return u}function Hu(u,e,t){try{if(typeof u=="function"){var a=typeof u.__u=="function";a&&u.__u(),a&&e==null||(u.__u=u(e))}else u.current=e}catch(o){y.__e(o,t)}}function Se(u,e,t){var a,o;if(y.unmount&&y.unmount(u),(a=u.ref)&&(a.current&&a.current!=u.__e||Hu(a,null,e)),(a=u.__c)!=null){if(a.componentWillUnmount)try{a.componentWillUnmount()}catch(n){y.__e(n,e)}a.base=a.__P=null}if(a=u.__k)for(o=0;o<a.length;o++)a[o]&&Se(a[o],e,t||typeof u.type!="function");t||zu(u.__e),u.__c=u.__=u.__e=void 0}function st(u,e,t){return this.constructor(u,t)}pe=bu.slice,y={__e:function(u,e,t,a){for(var o,n,s;e=e.__;)if((o=e.__c)&&!o.__)try{if((n=o.constructor)&&n.getDerivedStateFromError!=null&&(o.setState(n.getDerivedStateFromError(u)),s=o.__d),o.componentDidCatch!=null&&(o.componentDidCatch(u,a||{}),s=o.__d),s)return o.__E=o}catch(c){u=c}throw u}},Ce=0,tt=function(u){return u!=null&&u.constructor===void 0},yu.prototype.setState=function(u,e){var t;t=this.__s!=null&&this.__s!=this.state?this.__s:this.__s=$({},this.state),typeof u=="function"&&(u=u($({},t),this.props)),u&&$(t,u),u!=null&&this.__v&&(e&&this._sb.push(e),_e(this))},yu.prototype.forceUpdate=function(u){this.__v&&(this.__e=!0,u&&this.__h.push(u),_e(this))},yu.prototype.render=cu,J=[],ve=typeof Promise=="function"?Promise.prototype.then.bind(Promise.resolve()):setTimeout,Ee=function(u,e){return u.__v.__b-e.__v.__b},xu.__r=0,Mu=Math.random().toString(8),Bu="__d"+Mu,du="__a"+Mu,Ae=/(PointerCapture)$|Capture$/i,Iu=0,Ru=he(!1),Ou=he(!0),rt=0;function Fu(u){let e=_t(ft(u,"index"),!0);return e.length===0?"/":e}function we(){let u=window.location.pathname;return u.endsWith("/")&&(u=u.slice(0,-1)),u.startsWith("/")&&(u=u.slice(1)),u}function Nu(){return typeof document>"u"?"":document.body?.dataset?.basepath??""}function $u(u,e){let t=e??Nu(),a=u.startsWith("/")?u:"/"+u;return t+a}function Ft(u,e){return u===e||u.endsWith("/"+e)}function ft(u,e){return Ft(u,e)&&(u=u.slice(0,-e.length)),u}function _t(u,e){return u.startsWith("/")&&(u=u.substring(1)),!e&&u.endsWith("/")&&(u=u.slice(0,-1)),u}function ke(u){for(;u.firstChild;)u.removeChild(u.firstChild)}(function(){function u(){var a=we(),o=Nu();return o&&a.startsWith(o.replace(/^\\//,""))&&(a=a.slice(o.replace(/^\\//,"").length),a.startsWith("/")&&(a=a.slice(1))),a}function e(a){var o=document.querySelector('script[src="'+a+'"]');return o?Promise.resolve():new Promise(function(n,s){var c=document.createElement("script");c.src=a,c.crossOrigin="anonymous",c.onload=n,c.onerror=s,document.head.appendChild(c)})}Promise.all([e("https://cdn.jsdelivr.net/npm/d3@7/dist/d3.min.js"),e("https://cdn.jsdelivr.net/npm/pixi.js@8/dist/pixi.js")]).then(function(){t()}).catch(function(a){console.error("[Graph] Failed to load libraries:",a);for(var o=document.querySelectorAll(".graph-container"),n=0;n<o.length;n++)o[n].textContent="Graph could not load. Check your network connection.",o[n].style.display="flex",o[n].style.alignItems="center",o[n].style.justifyContent="center",o[n].style.color="var(--gray)",o[n].style.fontSize="0.9rem"});function t(){var a=window.d3,o=window.PIXI;if(!a||!o){console.error("[Graph] Libraries not loaded");return}var n="graph-visited";function s(){return new Set(JSON.parse(localStorage.getItem(n)||"[]"))}function c(d){var w=s();w.add(d),localStorage.setItem(n,JSON.stringify(Array.from(w)))}function h(d,w){if(!d)return w;var g=document.createElement("div");g.style.color=d,g.style.position="absolute",g.style.visibility="hidden",document.body.appendChild(g);var m=getComputedStyle(g).color;return g.remove(),m||w}async function D(d,w,g){var m=Fu(w);m===""&&(m="index");var q=s();if(ke(d),g!==void 0&&g!==E)return console.log("[Graph] Stale render, skipping"),function(){};var x=JSON.parse(d.dataset.cfg||"{}"),fu=x.drag,Le=x.zoom,Vu=x.depth,qu=x.scale||1,Pe=x.repelForce||.5,je=x.centerForce||.3,Te=x.linkDistance||30,We=x.fontSize||.6,Me=x.opacityScale||1,Ue=x.removeTags||[],Re=x.showTags,Oe=x.focusOnHover,Ge=x.enableRadial,eu;try{var Ku=await fetchData;eu=new Map;for(var Ju in Ku)eu.set(Fu(Ju),Ku[Ju])}catch(i){return console.error("[Graph] Error loading data:",i),function(){}}var R=d.offsetWidth,O=Math.max(d.offsetHeight,250),tu=[],hu=[],Xu=new Set(eu.keys());eu.forEach(function(i,l){for(var F=i.links||[],A=0;A<F.length;A++){var v=Fu(F[A]);Xu.has(v)&&tu.push({source:l,target:v})}if(Re)for(var j=i.tags||[],A=0;A<j.length;A++){var N=j[A];if(Ue.indexOf(N)===-1){var K=Fu("tags/"+N);hu.indexOf(K)===-1&&hu.push(K),tu.push({source:l,target:K})}}});var ru=new Set;if(Vu>=0)for(var pu=[m],Cu=new Set([m]),Yu=0;Yu<=Vu&&pu.length>0;Yu++){for(var wu=[],ku=0;ku<pu.length;ku++){var Lu=pu[ku];ru.add(Lu);for(var Pu=0;Pu<tu.length;Pu++){var W=tu[Pu];W.source===Lu&&!Cu.has(W.target)&&(Cu.add(W.target),wu.push(W.target)),W.target===Lu&&!Cu.has(W.source)&&(Cu.add(W.source),wu.push(W.source))}}pu=wu}else{Xu.forEach(function(i){ru.add(i)});for(var k=0;k<hu.length;k++)ru.add(hu[k])}var nu=[],ju=new Map;ru.forEach(function(i){var l=i.startsWith("tags/"),F=l?"#"+i.substring(5):eu.get(i)?.title||i,A=l?[]:eu.get(i)?.tags||[],v={id:i,text:F,tags:A,x:Math.random()*R-R/2,y:Math.random()*O-O/2,vx:0,vy:0};nu.push(v),ju.set(i,v)});for(var H=[],k=0;k<tu.length;k++){var W=tu[k];if(ru.has(W.source)&&ru.has(W.target)){var Zu=ju.get(W.source),Qu=ju.get(W.target);Zu&&Qu&&H.push({source:Zu,target:Qu})}}var Y=getComputedStyle(document.documentElement),Ie=h(Y.getPropertyValue("--secondary").trim(),"#c792ea"),ue=h(Y.getPropertyValue("--tertiary").trim(),"#82aaff"),ee=h(Y.getPropertyValue("--gray").trim(),"#6c6c6c"),te=h(Y.getPropertyValue("--lightgray").trim(),"#d4d4d4"),ze=h(Y.getPropertyValue("--dark").trim(),"#1a1a1a"),He=h(Y.getPropertyValue("--light").trim(),"#f5f5f5"),Ne=Y.getPropertyValue("--bodyFont").trim()||"inherit",Z=new o.Application;await Z.init({width:R,height:O,antialias:!0,backgroundAlpha:0,resolution:window.devicePixelRatio||1,autoDensity:!0,eventMode:"static"}),d.appendChild(Z.canvas);var ou=new o.Container;Z.stage.addChild(ou);var au=a.forceSimulation(nu).force("charge",a.forceManyBody().strength(-100*Pe)).force("center",a.forceCenter().strength(je)).force("link",a.forceLink(H).distance(Te)).force("collide",a.forceCollide().radius(function(i){for(var l=0,F=0;F<H.length;F++)(H[F].source.id===i.id||H[F].target.id===i.id)&&l++;return 2+Math.sqrt(l)}).iterations(3));if(Ge){var Tu=Math.min(R,O)/2*.8;au.force("radial",a.forceRadial(Tu).strength(.2))}var re=new o.Container,ne=new o.Container,vu=new o.Container;ou.addChild(re),ou.addChild(ne),ou.addChild(vu);var L=[],z=[],_u=null,iu=new Set,oe=0,Eu=!1,P=a.zoomIdentity;function ae(i){for(var l=0,F=0;F<H.length;F++)(H[F].source.id===i.id||H[F].target.id===i.id)&&l++;return 2+Math.sqrt(l)}function $e(i){var l=i.id===m;return l?Ie:q.has(i.id)||i.id.startsWith("tags/")?ue:ee}function Wu(i){if(_u=i,i===null){iu=new Set;for(var l=0;l<L.length;l++)L[l].active=!1;for(var l=0;l<z.length;l++)z[l].active=!1}else{iu=new Set;for(var l=0;l<z.length;l++){var F=z[l].simulationData;F.source.id===i||F.target.id===i?(iu.add(F.source.id),iu.add(F.target.id),z[l].active=!0):z[l].active=!1}iu.add(i);for(var l=0;l<L.length;l++)iu.has(L[l].simulationData.id)?L[l].active=!0:L[l].active=!1}}function Ve(){for(var i=0;i<z.length;i++){var l=z[i],F=1;_u!==null&&(F=l.active?1:.2),l.alpha=F,l.color=l.active?ee:te}}function qe(){for(var i=1/qu,l=i*1.1,F=0;F<L.length;F++){var A=L[F];_u===A.simulationData.id?(A.label.alpha=1,A.label.scale.set(l)):A.label.scale.set(i)}}function Ke(){for(var i=0;i<L.length;i++){var l=L[i],F=1;_u!==null&&Oe&&(F=l.active?1:.2),l.gfx.alpha=F}}function Au(){Ke(),Ve(),qe()}for(var k=0;k<nu.length;k++){var Du=nu[k],ie=Du.id,De=ie.startsWith("tags/"),Tu=ae(Du),le=$e(Du),lu=new o.Text({text:Du.text,style:{fontSize:We*15,fill:ze,fontFamily:Ne},resolution:window.devicePixelRatio*4});lu.anchor.set(.5,1.2),lu.alpha=0,lu.scale.set(1/qu),vu.addChild(lu);var U=new o.Graphics;U.circle(0,0,Tu),U.fill({color:De?He:le}),De&&U.stroke({width:2,color:ue}),U.eventMode="static",U.cursor="pointer",U.label=ie,(function(F,A,v){var j=0;A.on("pointerover",function(N){Wu(F.id),j=v.alpha,Eu||Au()}),A.on("pointerleave",function(){Wu(null),v.alpha=j,Eu||Au()})})(Du,U,lu),ne.addChild(U),L.push({simulationData:Du,gfx:U,label:lu,color:le,alpha:1,active:!1})}for(var k=0;k<H.length;k++){var W=H[k],U=new o.Graphics;U.eventMode="none",re.addChild(U),z.push({simulationData:W,gfx:U,color:te,alpha:1,active:!1})}if(fu){var Je=function(i){for(var l=(i.x-P.x)/P.k,F=(i.y-P.y)/P.k,A=0;A<nu.length;A++){var v=nu[A],j=l-v.x-R/2,N=F-v.y-O/2,K=Math.sqrt(j*j+N*N),gu=ae(v);if(K<gu+5)return v}return null},Xe=function(i){i.active||au.alphaTarget(1).restart(),i.subject.fx=i.subject.x,i.subject.fy=i.subject.y;var l=(i.x-P.x)/P.k-R/2,F=(i.y-P.y)/P.k-O/2;i.subject.__dragOffset={x:l-i.subject.x,y:F-i.subject.y},oe=Date.now(),Eu=!0,_u=i.subject.id},Ye=function(i){var l=(i.x-P.x)/P.k-R/2,F=(i.y-P.y)/P.k-O/2;i.subject.fx=l-i.subject.__dragOffset.x,i.subject.fy=F-i.subject.__dragOffset.y},Ze=function(i){if(i.active||au.alphaTarget(0),i.subject.fx=null,i.subject.fy=null,Eu=!1,Wu(null),Au(),Date.now()-oe<500){var l=$u(i.subject.id);window.location.href=l}},Qe=a.drag().container(Z.canvas).subject(Je).on("start",Xe).on("drag",Ye).on("end",Ze);a.select(Z.canvas).call(Qe)}else for(var k=0;k<L.length;k++)(function(l){l.gfx.on("click",function(){var F=$u(l.simulationData.id);window.location.href=F})})(L[k]);if(Le){var ut=function(i){P=i.transform,ou.scale.set(P.k,P.k),ou.position.set(P.x,P.y);for(var l=P.k*Me,F=Math.max((l-1)/3.75,0),A=[],v=0;v<L.length;v++)L[v].active&&A.push(L[v].label);for(var v=0;v<vu.children.length;v++){var j=vu.children[v];A.indexOf(j)===-1&&(j.alpha=F)}},et=a.zoom().extent([[0,0],[R,O]]).scaleExtent([.25,4]).on("zoom",ut);a.select(Z.canvas).call(et)}var se=!1;function ce(){if(!se){for(var i=0;i<L.length;i++){var l=L[i],F=l.simulationData.x,A=l.simulationData.y;F!=null&&A!=null&&(l.gfx.position.set(F+R/2,A+O/2),l.label&&l.label.position.set(F+R/2,A+O/2))}for(var i=0;i<z.length;i++){var v=z[i],j=v.simulationData,N=j.source.x,K=j.source.y,gu=j.target.x,Fe=j.target.y;N!=null&&K!=null&&gu!=null&&Fe!=null&&(v.gfx.clear(),v.gfx.moveTo(N+R/2,K+O/2),v.gfx.lineTo(gu+R/2,Fe+O/2),v.gfx.stroke({alpha:v.alpha,width:1,color:v.color}))}requestAnimationFrame(ce)}}return au.on("tick",function(){}),au.restart(),Au(),ce(),function(){se=!0,au.stop();try{Z.destroy(!0)}catch{}}}var _=[],r=[],E=0;function f(){for(var d=0;d<_.length;d++)_[d]();_=[]}function b(){for(var d=0;d<r.length;d++)r[d]();r=[]}var S=[],B=[],p=null,C=null,M=null;function G(){b();for(var d=0;d<S.length;d++){S[d].classList.remove("active");var w=S[d].closest(".sidebar");w&&(w.style.zIndex="")}}function I(){for(var d=0;d<S.length;d++)if(S[d].classList.contains("active"))return!0;return!1}function Q(){b();for(var d=u(),w=0;w<S.length;w++){var g=S[w];g.classList.add("active");var m=g.closest(".sidebar");m&&(m.style.zIndex="1");var q=g.querySelector(".global-graph-container");q&&(function(x){D(x,d,void 0).then(function(fu){r.push(fu)}).catch(function(fu){console.error("[Graph] Global render error:",fu)})})(q)}}function X(){I()?G():Q()}function uu(){f();var d=++E,w=u();c(w);for(var g=document.querySelectorAll(".graph-container"),m=0;m<g.length;m++)(function(q){D(q,w,d).then(function(x){d===E&&_.push(x)}).catch(function(x){console.error("[Graph] Local render error:",x)})})(g[m])}function T(d){var w=d.detail?d.detail.url:u();if(c(Fu(w)),uu(),S=Array.from(document.querySelectorAll(".global-graph-outer")),M)for(var g=0;g<B.length;g++)B[g].removeEventListener("click",M);B=Array.from(document.querySelectorAll(".global-graph-icon")),M=function(){X()};for(var g=0;g<B.length;g++)B[g].addEventListener("click",M);p&&document.removeEventListener("click",p),p=function(m){if(I()){var q=m.target.closest(".global-graph-container"),x=m.target.closest(".global-graph-icon");!q&&!x&&G()}},document.addEventListener("click",p),C&&document.removeEventListener("keydown",C),C=function(m){if(m.key==="Escape"){I()&&G();return}m.key==="g"&&(m.ctrlKey||m.metaKey)&&!m.shiftKey&&(m.preventDefault(),X())},document.addEventListener("keydown",C),I()&&Q()}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",function(){T({detail:{url:u()}})}):T({detail:{url:u()}}),document.addEventListener("prenav",function(){f(),b()}),document.addEventListener("nav",T),document.addEventListener("render",T);function V(){uu(),I()&&Q()}document.addEventListener("themechange",V)}})();
317
+ var graph_inline_default = `var Ct=Object.hasOwnProperty;var he,y,pe,tt,X,Fe,Ce,ve,Mu,Bu,du,Ee,Gu,Ru,Ou,rt,Ae={},bu=[],nt=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,Su=Array.isArray;function V(u,e){for(var r in e)u[r]=e[r];return u}function Iu(u){u&&u.parentNode&&u.parentNode.removeChild(u)}function Uu(u,e,r,o,a){var n={type:u,props:e,key:r,ref:o,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:a??++pe,__i:-1,__u:0};return a==null&&y.vnode!=null&&y.vnode(n),n}function su(u){return u.children}function yu(u,e){this.props=u,this.context=e}function lu(u,e){if(e==null)return u.__?lu(u.__,u.__i+1):null;for(var r;e<u.__k.length;e++)if((r=u.__k[e])!=null&&r.__e!=null)return r.__e;return typeof u.type=="function"?lu(u):null}function ot(u){if(u.__P&&u.__d){var e=u.__v,r=e.__e,o=[],a=[],n=V({},e);n.__v=e.__v+1,y.vnode&&y.vnode(n),ye(u.__P,n,e,u.__n,u.__P.namespaceURI,32&e.__u?[r]:null,o,r??lu(e),!!(32&e.__u),a),n.__v=e.__v,n.__.__k[n.__i]=n,Dt(o,n,a),e.__e=e.__=null,n.__e!=r&&ge(n)}}function ge(u){if((u=u.__)!=null&&u.__c!=null)return u.__e=u.__c.base=null,u.__k.some(function(e){if(e!=null&&e.__e!=null)return u.__e=u.__c.base=e.__e}),ge(u)}function fe(u){(!u.__d&&(u.__d=!0)&&X.push(u)&&!xu.__r++||Fe!=y.debounceRendering)&&((Fe=y.debounceRendering)||Ce)(xu)}function xu(){try{for(var u,e=1;X.length;)X.length>e&&X.sort(ve),u=X.shift(),e=X.length,ot(u)}finally{X.length=xu.__r=0}}function me(u,e,r,o,a,n,s,c,h,D,d){var b,t,f,m,x,B,E,p=o&&o.__k||bu,L=e.length;for(h=at(r,e,p,h,L),b=0;b<L;b++)(f=r.__k[b])!=null&&(t=f.__i!=-1&&p[f.__i]||Ae,f.__i=b,B=ye(u,f,t,a,n,s,c,h,D,d),m=f.__e,f.ref&&t.ref!=f.ref&&(t.ref&&zu(t.ref,null,f),d.push(f.ref,f.__c||m,f)),x==null&&m!=null&&(x=m),(E=!!(4&f.__u))||t.__k===f.__k?(h=Be(f,h,u,E),E&&t.__e&&(t.__e=null)):typeof f.type=="function"&&B!==void 0?h=B:m&&(h=m.nextSibling),f.__u&=-7);return r.__e=x,h}function at(u,e,r,o,a){var n,s,c,h,D,d=r.length,b=d,t=0;for(u.__k=new Array(a),n=0;n<a;n++)(s=e[n])!=null&&typeof s!="boolean"&&typeof s!="function"?(typeof s=="string"||typeof s=="number"||typeof s=="bigint"||s.constructor==String?s=u.__k[n]=Uu(null,s,null,null,null):Su(s)?s=u.__k[n]=Uu(su,{children:s},null,null,null):s.constructor===void 0&&s.__b>0?s=u.__k[n]=Uu(s.type,s.props,s.key,s.ref?s.ref:null,s.__v):u.__k[n]=s,h=n+t,s.__=u,s.__b=u.__b+1,c=null,(D=s.__i=it(s,r,h,b))!=-1&&(b--,(c=r[D])&&(c.__u|=2)),c==null||c.__v==null?(D==-1&&(a>d?t--:a<d&&t++),typeof s.type!="function"&&(s.__u|=4)):D!=h&&(D==h-1?t--:D==h+1?t++:(D>h?t--:t++,s.__u|=4))):u.__k[n]=null;if(b)for(n=0;n<d;n++)(c=r[n])!=null&&(2&c.__u)==0&&(c.__e==o&&(o=lu(c)),Se(c,c));return o}function Be(u,e,r,o){var a,n;if(typeof u.type=="function"){for(a=u.__k,n=0;a&&n<a.length;n++)a[n]&&(a[n].__=u,e=Be(a[n],e,r,o));return e}u.__e!=e&&(o&&(e&&u.type&&!e.parentNode&&(e=lu(u)),r.insertBefore(u.__e,e||null)),e=u.__e);do e=e&&e.nextSibling;while(e!=null&&e.nodeType==8);return e}function it(u,e,r,o){var a,n,s,c=u.key,h=u.type,D=e[r],d=D!=null&&(2&D.__u)==0;if(D===null&&c==null||d&&c==D.key&&h==D.type)return r;if(o>(d?1:0)){for(a=r-1,n=r+1;a>=0||n<e.length;)if((D=e[s=a>=0?a--:n++])!=null&&(2&D.__u)==0&&c==D.key&&h==D.type)return s}return-1}function _e(u,e,r){e[0]=="-"?u.setProperty(e,r??""):u[e]=r==null?"":typeof r!="number"||nt.test(e)?r:r+"px"}function mu(u,e,r,o,a){var n,s;u:if(e=="style")if(typeof r=="string")u.style.cssText=r;else{if(typeof o=="string"&&(u.style.cssText=o=""),o)for(e in o)r&&e in r||_e(u.style,e,"");if(r)for(e in r)o&&r[e]==o[e]||_e(u.style,e,r[e])}else if(e[0]=="o"&&e[1]=="n")n=e!=(e=e.replace(Ee,"$1")),s=e.toLowerCase(),e=s in u||e=="onFocusOut"||e=="onFocusIn"?s.slice(2):e.slice(2),u.l||(u.l={}),u.l[e+n]=r,r?o?r[du]=o[du]:(r[du]=Gu,u.addEventListener(e,n?Ou:Ru,n)):u.removeEventListener(e,n?Ou:Ru,n);else{if(a=="http://www.w3.org/2000/svg")e=e.replace(/xlink(H|:h)/,"h").replace(/sName$/,"s");else if(e!="width"&&e!="height"&&e!="href"&&e!="list"&&e!="form"&&e!="tabIndex"&&e!="download"&&e!="rowSpan"&&e!="colSpan"&&e!="role"&&e!="popover"&&e in u)try{u[e]=r??"";break u}catch{}typeof r=="function"||(r==null||r===!1&&e[4]!="-"?u.removeAttribute(e):u.setAttribute(e,e=="popover"&&r==1?"":r))}}function de(u){return function(e){if(this.l){var r=this.l[e.type+u];if(e[Bu]==null)e[Bu]=Gu++;else if(e[Bu]<r[du])return;return r(y.event?y.event(e):e)}}}function ye(u,e,r,o,a,n,s,c,h,D){var d,b,t,f,m,x,B,E,p,L,H,M,N,Fu,Y,q,R=e.type;if(e.constructor!==void 0)return null;128&r.__u&&(h=!!(32&r.__u),n=[c=e.__e=r.__e]),(d=y.__b)&&d(e);u:if(typeof R=="function"){b=s.length;try{if(p=e.props,L=R.prototype&&R.prototype.render,H=(d=R.contextType)&&o[d.__c],M=d?H?H.props.value:d.__:o,r.__c?E=(t=e.__c=r.__c).__=t.__E:(L?e.__c=t=new R(p,M):(e.__c=t=new yu(p,M),t.constructor=R,t.render=st),H&&H.sub(t),t.state||(t.state={}),t.__n=o,f=t.__d=!0,t.__h=[],t._sb=[]),L&&t.__s==null&&(t.__s=t.state),L&&R.getDerivedStateFromProps!=null&&(t.__s==t.state&&(t.__s=V({},t.__s)),V(t.__s,R.getDerivedStateFromProps(p,t.__s))),m=t.props,x=t.state,t.__v=e,f)L&&R.getDerivedStateFromProps==null&&t.componentWillMount!=null&&t.componentWillMount(),L&&t.componentDidMount!=null&&t.__h.push(t.componentDidMount);else{if(L&&R.getDerivedStateFromProps==null&&p!==m&&t.componentWillReceiveProps!=null&&t.componentWillReceiveProps(p,M),e.__v==r.__v||!t.__e&&t.shouldComponentUpdate!=null&&t.shouldComponentUpdate(p,t.__s,M)===!1){e.__v!=r.__v&&(t.props=p,t.state=t.__s,t.__d=!1),e.__e=r.__e,e.__k=r.__k,e.__k.some(function(_){_&&(_.__=e)}),bu.push.apply(t.__h,t._sb),t._sb=[],t.__h.length&&s.push(t);break u}t.componentWillUpdate!=null&&t.componentWillUpdate(p,t.__s,M),L&&t.componentDidUpdate!=null&&t.__h.push(function(){t.componentDidUpdate(m,x,B)})}if(t.context=M,t.props=p,t.__P=u,t.__e=!1,N=y.__r,Fu=0,L)t.state=t.__s,t.__d=!1,N&&N(e),d=t.render(t.props,t.state,t.context),bu.push.apply(t.__h,t._sb),t._sb=[];else do t.__d=!1,N&&N(e),d=t.render(t.props,t.state,t.context),t.state=t.__s;while(t.__d&&++Fu<25);t.state=t.__s,t.getChildContext!=null&&(o=V(V({},o),t.getChildContext())),L&&!f&&t.getSnapshotBeforeUpdate!=null&&(B=t.getSnapshotBeforeUpdate(m,x)),Y=d!=null&&d.type===su&&d.key==null?xe(d.props.children):d,c=me(u,Su(Y)?Y:[Y],e,r,o,a,n,s,c,h,D),t.base=e.__e,e.__u&=-161,t.__h.length&&s.push(t),E&&(t.__E=t.__=null)}catch(_){if(s.length=b,e.__v=null,h||n!=null){if(_.then){for(e.__u|=h?160:128;c&&c.nodeType==8&&c.nextSibling;)c=c.nextSibling;n!=null&&(n[n.indexOf(c)]=null),e.__e=c}else if(n!=null)for(q=n.length;q--;)Iu(n[q])}else e.__e=r.__e;e.__k==null&&(e.__k=r.__k||[]),_.then||be(e),y.__e(_,e,r)}}else n==null&&e.__v==r.__v?(e.__k=r.__k,e.__e=r.__e):c=e.__e=lt(r.__e,e,r,o,a,n,s,h,D);return(d=y.diffed)&&d(e),128&e.__u?void 0:c}function be(u){u&&(u.__c&&(u.__c.__e=!0),u.__k&&u.__k.some(be))}function Dt(u,e,r){for(var o=0;o<r.length;o++)zu(r[o],r[++o],r[++o]);y.__c&&y.__c(e,u),u.some(function(a){try{u=a.__h,a.__h=[],u.some(function(n){n.call(a)})}catch(n){y.__e(n,a.__v)}})}function xe(u){return typeof u!="object"||u==null||u.__b>0?u:Su(u)?u.map(xe):u.constructor!==void 0?null:V({},u)}function lt(u,e,r,o,a,n,s,c,h){var D,d,b,t,f,m,x,B=r.props||Ae,E=e.props,p=e.type;if(p=="svg"?a="http://www.w3.org/2000/svg":p=="math"?a="http://www.w3.org/1998/Math/MathML":a||(a="http://www.w3.org/1999/xhtml"),n!=null){for(D=0;D<n.length;D++)if((f=n[D])&&"setAttribute"in f==!!p&&(p?f.localName==p:f.nodeType==3)){u=f,n[D]=null;break}}if(u==null){if(p==null)return document.createTextNode(E);u=document.createElementNS(a,p,E.is&&E),c&&(y.__m&&y.__m(e,n),c=!1),n=null}if(p==null)B===E||c&&u.data==E||(u.data=E);else{if(n=p=="textarea"&&E.defaultValue!=null?null:n&&he.call(u.childNodes),!c&&n!=null)for(B={},D=0;D<u.attributes.length;D++)B[(f=u.attributes[D]).name]=f.value;for(D in B)f=B[D],D=="dangerouslySetInnerHTML"?b=f:D=="children"||D in E||D=="value"&&"defaultValue"in E||D=="checked"&&"defaultChecked"in E||mu(u,D,null,f,a);for(D in E)f=E[D],D=="children"?t=f:D=="dangerouslySetInnerHTML"?d=f:D=="value"?m=f:D=="checked"?x=f:c&&typeof f!="function"||B[D]===f||mu(u,D,f,B[D],a);if(d)c||b&&(d.__html==b.__html||d.__html==u.innerHTML)||(u.innerHTML=d.__html),e.__k=[];else if(b&&(u.innerHTML=""),me(e.type=="template"?u.content:u,Su(t)?t:[t],e,r,o,p=="foreignObject"?"http://www.w3.org/1999/xhtml":a,n,s,n?n[0]:r.__k&&lu(r,0),c,h),n!=null)for(D=n.length;D--;)Iu(n[D]);c&&p!="textarea"||(D="value",p=="progress"&&m==null?u.removeAttribute("value"):m!=null&&(m!==u[D]||p=="progress"&&!m||p=="option"&&m!=B[D])&&mu(u,D,m,B[D],a),D="checked",x!=null&&x!=u[D]&&mu(u,D,x,B[D],a))}return u}function zu(u,e,r){try{if(typeof u=="function"){var o=typeof u.__u=="function";o&&u.__u(),o&&e==null||(u.__u=u(e))}else u.current=e}catch(a){y.__e(a,r)}}function Se(u,e,r){var o,a;if(y.unmount&&y.unmount(u),(o=u.ref)&&(o.current&&o.current!=u.__e||zu(o,null,e)),(o=u.__c)!=null){if(o.componentWillUnmount)try{o.componentWillUnmount()}catch(n){y.__e(n,e)}o.base=o.__P=o.__n=null}if(o=u.__k)for(a=0;a<o.length;a++)o[a]&&Se(o[a],e,r||typeof u.type!="function");r||Iu(u.__e),u.__c=u.__=u.__e=void 0}function st(u,e,r){return this.constructor(u,r)}he=bu.slice,y={__e:function(u,e,r,o){for(var a,n,s;e=e.__;)if((a=e.__c)&&!a.__)try{if((n=a.constructor)&&n.getDerivedStateFromError!=null&&(a.setState(n.getDerivedStateFromError(u)),s=a.__d),a.componentDidCatch!=null&&(a.componentDidCatch(u,o||{}),s=a.__d),s)return a.__E=a}catch(c){u=c}throw u}},pe=0,tt=function(u){return u!=null&&u.constructor===void 0},yu.prototype.setState=function(u,e){var r;r=this.__s!=null&&this.__s!=this.state?this.__s:this.__s=V({},this.state),typeof u=="function"&&(u=u(V({},r),this.props)),u&&V(r,u),u!=null&&this.__v&&(e&&this._sb.push(e),fe(this))},yu.prototype.forceUpdate=function(u){this.__v&&(this.__e=!0,u&&this.__h.push(u),fe(this))},yu.prototype.render=su,X=[],Ce=typeof Promise=="function"?Promise.prototype.then.bind(Promise.resolve()):setTimeout,ve=function(u,e){return u.__v.__b-e.__v.__b},xu.__r=0,Mu=Math.random().toString(8),Bu="__d"+Mu,du="__a"+Mu,Ee=/(PointerCapture)$|Capture$/i,Gu=0,Ru=de(!1),Ou=de(!0),rt=0;function cu(u){let e=_t(ft(u,"index"),!0);return e.length===0?"/":e}function we(){let u=decodeURI(window.location.pathname);return u.endsWith("/")&&(u=u.slice(0,-1)),u.startsWith("/")&&(u=u.slice(1)),u}function Hu(){return typeof document>"u"?"":document.body?.dataset?.basepath??""}function Nu(u,e){let r=e??Hu(),o=u.startsWith("/")?u:"/"+u;return r+o}function Ft(u,e){return u===e||u.endsWith("/"+e)}function ft(u,e){return Ft(u,e)&&(u=u.slice(0,-e.length)),u}function _t(u,e){return u.startsWith("/")&&(u=u.substring(1)),!e&&u.endsWith("/")&&(u=u.slice(0,-1)),u}function ke(u){for(;u.firstChild;)u.removeChild(u.firstChild)}(function(){function u(){var o=we(),a=Hu();return a&&o.startsWith(a.replace(/^\\//,""))&&(o=o.slice(a.replace(/^\\//,"").length),o.startsWith("/")&&(o=o.slice(1))),o}function e(o){var a=document.querySelector('script[src="'+o+'"]');return a?Promise.resolve():new Promise(function(n,s){var c=document.createElement("script");c.src=o,c.crossOrigin="anonymous",c.onload=n,c.onerror=s,document.head.appendChild(c)})}Promise.all([e("https://cdn.jsdelivr.net/npm/d3@7/dist/d3.min.js"),e("https://cdn.jsdelivr.net/npm/pixi.js@8/dist/pixi.js")]).then(function(){r()}).catch(function(o){console.error("[Graph] Failed to load libraries:",o);for(var a=document.querySelectorAll(".graph-container"),n=0;n<a.length;n++)a[n].textContent="Graph could not load. Check your network connection.",a[n].style.display="flex",a[n].style.alignItems="center",a[n].style.justifyContent="center",a[n].style.color="var(--gray)",a[n].style.fontSize="0.9rem"});function r(){var o=window.d3,a=window.PIXI;if(!o||!a){console.error("[Graph] Libraries not loaded");return}var n="graph-visited";function s(){return new Set(JSON.parse(localStorage.getItem(n)||"[]"))}function c(_){var w=s();w.add(_),localStorage.setItem(n,JSON.stringify(Array.from(w)))}function h(_,w){if(!_)return w;var A=document.createElement("div");A.style.color=_,A.style.position="absolute",A.style.visibility="hidden",document.body.appendChild(A);var g=getComputedStyle(A).color;return A.remove(),g||w}async function D(_,w,A){var g=cu(w);g===""&&(g="index");var K=s();if(ke(_),A!==void 0&&A!==t)return console.log("[Graph] Stale render, skipping"),function(){};var S=JSON.parse(_.dataset.cfg||"{}"),fu=S.drag,Le=S.zoom,$u=S.depth,Vu=S.scale||1,Pe=S.repelForce||.5,je=S.centerForce||.3,Te=S.linkDistance||30,We=S.fontSize||.6,Me=S.opacityScale||1,Ue=S.removeTags||[],Re=S.showTags,Oe=S.focusOnHover,Ge=S.enableRadial,uu;try{var qu=await fetchData;uu=new Map;for(var Ku in qu)uu.set(cu(Ku),qu[Ku])}catch(i){return console.error("[Graph] Error loading data:",i),function(){}}var O=_.offsetWidth,G=Math.max(_.offsetHeight,250),eu=[],hu=[],Ju=new Set(uu.keys());uu.forEach(function(i,l){for(var F=i.links||[],v=0;v<F.length;v++){var C=cu(F[v]);Ju.has(C)&&eu.push({source:l,target:C})}if(Re)for(var T=i.tags||[],v=0;v<T.length;v++){var $=T[v];if(Ue.indexOf($)===-1){var J=cu("tags/"+$);hu.indexOf(J)===-1&&hu.push(J),eu.push({source:l,target:J})}}});var tu=new Set;if($u>=0)for(var pu=[g],Cu=new Set([g]),Xu=0;Xu<=$u&&pu.length>0;Xu++){for(var wu=[],ku=0;ku<pu.length;ku++){var Lu=pu[ku];tu.add(Lu);for(var Pu=0;Pu<eu.length;Pu++){var W=eu[Pu];W.source===Lu&&!Cu.has(W.target)&&(Cu.add(W.target),wu.push(W.target)),W.target===Lu&&!Cu.has(W.source)&&(Cu.add(W.source),wu.push(W.source))}}pu=wu}else{Ju.forEach(function(i){tu.add(i)});for(var k=0;k<hu.length;k++)tu.add(hu[k])}var ru=[],ju=new Map;tu.forEach(function(i){var l=i.startsWith("tags/"),F=l?"#"+i.substring(5):uu.get(i)?.title||i,v=l?[]:uu.get(i)?.tags||[],C={id:i,text:F,tags:v,x:Math.random()*O-O/2,y:Math.random()*G-G/2,vx:0,vy:0};ru.push(C),ju.set(i,C)});for(var z=[],k=0;k<eu.length;k++){var W=eu[k];if(tu.has(W.source)&&tu.has(W.target)){var Yu=ju.get(W.source),Zu=ju.get(W.target);Yu&&Zu&&z.push({source:Yu,target:Zu})}}var Z=getComputedStyle(document.documentElement),Ie=h(Z.getPropertyValue("--secondary").trim(),"#c792ea"),Qu=h(Z.getPropertyValue("--tertiary").trim(),"#82aaff"),ue=h(Z.getPropertyValue("--gray").trim(),"#6c6c6c"),ee=h(Z.getPropertyValue("--lightgray").trim(),"#d4d4d4"),ze=h(Z.getPropertyValue("--dark").trim(),"#1a1a1a"),He=h(Z.getPropertyValue("--light").trim(),"#f5f5f5"),Ne=Z.getPropertyValue("--bodyFont").trim()||"inherit",Q=new a.Application;await Q.init({width:O,height:G,antialias:!0,backgroundAlpha:0,resolution:window.devicePixelRatio||1,autoDensity:!0,eventMode:"static"}),_.appendChild(Q.canvas);var nu=new a.Container;Q.stage.addChild(nu);var ou=o.forceSimulation(ru).force("charge",o.forceManyBody().strength(-100*Pe)).force("center",o.forceCenter().strength(je)).force("link",o.forceLink(z).distance(Te)).force("collide",o.forceCollide().radius(function(i){for(var l=0,F=0;F<z.length;F++)(z[F].source.id===i.id||z[F].target.id===i.id)&&l++;return 2+Math.sqrt(l)}).iterations(3));if(Ge){var Tu=Math.min(O,G)/2*.8;ou.force("radial",o.forceRadial(Tu).strength(.2))}var te=new a.Container,re=new a.Container,vu=new a.Container;nu.addChild(te),nu.addChild(re),nu.addChild(vu);var P=[],I=[],_u=null,au=new Set,ne=0,Eu=!1,j=o.zoomIdentity;function oe(i){for(var l=0,F=0;F<z.length;F++)(z[F].source.id===i.id||z[F].target.id===i.id)&&l++;return 2+Math.sqrt(l)}function $e(i){var l=i.id===g;return l?Ie:K.has(i.id)||i.id.startsWith("tags/")?Qu:ue}function Wu(i){if(_u=i,i===null){au=new Set;for(var l=0;l<P.length;l++)P[l].active=!1;for(var l=0;l<I.length;l++)I[l].active=!1}else{au=new Set;for(var l=0;l<I.length;l++){var F=I[l].simulationData;F.source.id===i||F.target.id===i?(au.add(F.source.id),au.add(F.target.id),I[l].active=!0):I[l].active=!1}au.add(i);for(var l=0;l<P.length;l++)au.has(P[l].simulationData.id)?P[l].active=!0:P[l].active=!1}}function Ve(){for(var i=0;i<I.length;i++){var l=I[i],F=1;_u!==null&&(F=l.active?1:.2),l.alpha=F,l.color=l.active?ue:ee}}function qe(){for(var i=1/Vu,l=i*1.1,F=0;F<P.length;F++){var v=P[F];_u===v.simulationData.id?(v.label.alpha=1,v.label.scale.set(l)):v.label.scale.set(i)}}function Ke(){for(var i=0;i<P.length;i++){var l=P[i],F=1;_u!==null&&Oe&&(F=l.active?1:.2),l.gfx.alpha=F}}function Au(){Ke(),Ve(),qe()}for(var k=0;k<ru.length;k++){var iu=ru[k],ae=iu.id,ie=ae.startsWith("tags/"),Tu=oe(iu),De=$e(iu),Du=new a.Text({text:iu.text,style:{fontSize:We*15,fill:ze,fontFamily:Ne},resolution:window.devicePixelRatio*4});Du.anchor.set(.5,1.2),Du.alpha=0,Du.scale.set(1/Vu),vu.addChild(Du);var U=new a.Graphics;U.circle(0,0,Tu),U.fill({color:ie?He:De}),ie&&U.stroke({width:2,color:Qu}),U.eventMode="static",U.cursor="pointer",U.label=ae,(function(F,v,C){var T=0;v.on("pointerover",function($){Wu(F.id),T=C.alpha,Eu||Au()}),v.on("pointerleave",function(){Wu(null),C.alpha=T,Eu||Au()})})(iu,U,Du),re.addChild(U),P.push({simulationData:iu,gfx:U,label:Du,color:De,alpha:1,active:!1})}for(var k=0;k<z.length;k++){var W=z[k],U=new a.Graphics;U.eventMode="none",te.addChild(U),I.push({simulationData:W,gfx:U,color:ee,alpha:1,active:!1})}if(fu){var Je=function(i){for(var l=(i.x-j.x)/j.k,F=(i.y-j.y)/j.k,v=0;v<ru.length;v++){var C=ru[v],T=l-C.x-O/2,$=F-C.y-G/2,J=Math.sqrt(T*T+$*$),gu=oe(C);if(J<gu+5)return C}return null},Xe=function(i){i.active||ou.alphaTarget(1).restart(),i.subject.fx=i.subject.x,i.subject.fy=i.subject.y;var l=(i.x-j.x)/j.k-O/2,F=(i.y-j.y)/j.k-G/2;i.subject.__dragOffset={x:l-i.subject.x,y:F-i.subject.y},ne=Date.now(),Eu=!0,_u=i.subject.id},Ye=function(i){var l=(i.x-j.x)/j.k-O/2,F=(i.y-j.y)/j.k-G/2;i.subject.fx=l-i.subject.__dragOffset.x,i.subject.fy=F-i.subject.__dragOffset.y},Ze=function(i){if(i.active||ou.alphaTarget(0),i.subject.fx=null,i.subject.fy=null,Eu=!1,Wu(null),Au(),Date.now()-ne<500){var l=Nu(i.subject.id);window.location.href=l}},Qe=o.drag().container(Q.canvas).subject(Je).on("start",Xe).on("drag",Ye).on("end",Ze);o.select(Q.canvas).call(Qe)}else for(var k=0;k<P.length;k++)(function(l){l.gfx.on("click",function(){var F=Nu(l.simulationData.id);window.location.href=F})})(P[k]);if(Le){var ut=function(i){j=i.transform,nu.scale.set(j.k,j.k),nu.position.set(j.x,j.y);for(var l=j.k*Me,F=Math.max((l-1)/3.75,0),v=[],C=0;C<P.length;C++)P[C].active&&v.push(P[C].label);for(var C=0;C<vu.children.length;C++){var T=vu.children[C];v.indexOf(T)===-1&&(T.alpha=F)}},et=o.zoom().extent([[0,0],[O,G]]).scaleExtent([.25,4]).on("zoom",ut);o.select(Q.canvas).call(et)}var le=!1;function se(){if(!le){for(var i=0;i<P.length;i++){var l=P[i],F=l.simulationData.x,v=l.simulationData.y;F!=null&&v!=null&&(l.gfx.position.set(F+O/2,v+G/2),l.label&&l.label.position.set(F+O/2,v+G/2))}for(var i=0;i<I.length;i++){var C=I[i],T=C.simulationData,$=T.source.x,J=T.source.y,gu=T.target.x,ce=T.target.y;$!=null&&J!=null&&gu!=null&&ce!=null&&(C.gfx.clear(),C.gfx.moveTo($+O/2,J+G/2),C.gfx.lineTo(gu+O/2,ce+G/2),C.gfx.stroke({alpha:C.alpha,width:1,color:C.color}))}requestAnimationFrame(se)}}return ou.on("tick",function(){}),ou.restart(),Au(),se(),function(){le=!0,ou.stop();try{Q.destroy(!0)}catch{}}}var d=[],b=[],t=0;function f(){for(var _=0;_<d.length;_++)d[_]();d=[]}function m(){for(var _=0;_<b.length;_++)b[_]();b=[]}var x=[],B=[],E=null,p=null,L=null;function H(){m();for(var _=0;_<x.length;_++){x[_].classList.remove("active");var w=x[_].closest(".sidebar");w&&(w.style.zIndex="")}}function M(){for(var _=0;_<x.length;_++)if(x[_].classList.contains("active"))return!0;return!1}function N(){m();for(var _=u(),w=0;w<x.length;w++){var A=x[w];A.classList.add("active");var g=A.closest(".sidebar");g&&(g.style.zIndex="1");var K=A.querySelector(".global-graph-container");K&&(function(S){D(S,_,void 0).then(function(fu){b.push(fu)}).catch(function(fu){console.error("[Graph] Global render error:",fu)})})(K)}}function Fu(){M()?H():N()}function Y(){f();var _=++t,w=u();c(w);for(var A=document.querySelectorAll(".graph-container"),g=0;g<A.length;g++)(function(K){D(K,w,_).then(function(S){_===t&&d.push(S)}).catch(function(S){console.error("[Graph] Local render error:",S)})})(A[g])}function q(_){var w=_.detail?_.detail.url:u();if(c(cu(w)),Y(),x=Array.from(document.querySelectorAll(".global-graph-outer")),L)for(var A=0;A<B.length;A++)B[A].removeEventListener("click",L);B=Array.from(document.querySelectorAll(".global-graph-icon")),L=function(){Fu()};for(var A=0;A<B.length;A++)B[A].addEventListener("click",L);E&&document.removeEventListener("click",E),E=function(g){if(M()){var K=g.target.closest(".global-graph-container"),S=g.target.closest(".global-graph-icon");!K&&!S&&H()}},document.addEventListener("click",E),p&&document.removeEventListener("keydown",p),p=function(g){if(g.key==="Escape"){M()&&H();return}g.key==="g"&&(g.ctrlKey||g.metaKey)&&!g.shiftKey&&(g.preventDefault(),Fu())},document.addEventListener("keydown",p),M()&&N()}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",function(){q({detail:{url:u()}})}):q({detail:{url:u()}}),document.addEventListener("prenav",function(){f(),m()}),document.addEventListener("nav",q),document.addEventListener("render",q);function R(){Y(),M()&&N()}document.addEventListener("themechange",R)}})();
318
318
  `;
319
319
  var l;
320
320
  l = { __e: function(n2, l2, u3, t2) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../node_modules/@quartz-community/utils/src/lang.ts","../../src/i18n/locales/en-US.ts","../../src/i18n/locales/en-GB.ts","../../src/i18n/locales/ar-SA.ts","../../src/i18n/locales/ca-ES.ts","../../src/i18n/locales/cs-CZ.ts","../../src/i18n/locales/de-DE.ts","../../src/i18n/locales/es-ES.ts","../../src/i18n/locales/fa-IR.ts","../../src/i18n/locales/fi-FI.ts","../../src/i18n/locales/fr-FR.ts","../../src/i18n/locales/he-IL.ts","../../src/i18n/locales/hu-HU.ts","../../src/i18n/locales/id-ID.ts","../../src/i18n/locales/it-IT.ts","../../src/i18n/locales/ja-JP.ts","../../src/i18n/locales/kk-KZ.ts","../../src/i18n/locales/ko-KR.ts","../../src/i18n/locales/lt-LT.ts","../../src/i18n/locales/nb-NO.ts","../../src/i18n/locales/nl-NL.ts","../../src/i18n/locales/pl-PL.ts","../../src/i18n/locales/pt-BR.ts","../../src/i18n/locales/ro-RO.ts","../../src/i18n/locales/ru-RU.ts","../../src/i18n/locales/th-TH.ts","../../src/i18n/locales/tr-TR.ts","../../src/i18n/locales/uk-UA.ts","../../src/i18n/locales/vi-VN.ts","../../src/i18n/locales/zh-CN.ts","../../src/i18n/locales/zh-TW.ts","../../src/i18n/index.ts","../../src/components/styles/graph.scss","../../src/components/scripts/graph.inline.ts","../../node_modules/preact/src/constants.js","../../node_modules/preact/src/options.js","../../node_modules/preact/src/diff/catch-error.js","../../node_modules/preact/src/component.js","../../node_modules/preact/src/diff/props.js","../../node_modules/preact/src/create-context.js","../../node_modules/preact/jsx-runtime/src/index.js","../../src/components/Graph.tsx"],"names":["options","__e","error","vnode","oldVNode","errorInfo","component","ctor","handled","__","__c","constructor","getDerivedStateFromError","setState","__d","componentDidCatch","__E","e","Promise","prototype","then","bind","resolve","setTimeout","Math","random","toString","vnodeId","createVNode","type","props","key","isStaticChildren","__source","__self","ref","i","normalizedProps","__k","__b","__v","__i","__u","defaultProps","u"],"mappings":"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","file":"index.js","sourcesContent":["export function capitalize(s: string): string {\n return s.substring(0, 1).toUpperCase() + s.substring(1);\n}\n\nexport function classNames(...classes: (string | undefined | null | false)[]): string {\n return classes.filter(Boolean).join(\" \");\n}\n","export default {\n components: {\n graph: {\n title: \"Graph View\",\n },\n },\n};\n","export default {\n components: {\n graph: {\n title: \"Graph View\",\n },\n },\n};\n","export default {\n components: {\n graph: {\n title: \"التمثيل التفاعلي\",\n },\n },\n};\n","export default {\n components: {\n graph: {\n title: \"Vista Gràfica\",\n },\n },\n};\n","export default {\n components: {\n graph: {\n title: \"Graf\",\n },\n },\n};\n","export default {\n components: {\n graph: {\n title: \"Graphansicht\",\n },\n },\n};\n","export default {\n components: {\n graph: {\n title: \"Vista Gráfica\",\n },\n },\n};\n","export default {\n components: {\n graph: {\n title: \"نمای گراف\",\n },\n },\n};\n","export default {\n components: {\n graph: {\n title: \"Verkkonäkymä\",\n },\n },\n};\n","export default {\n components: {\n graph: {\n title: \"Vue Graphique\",\n },\n },\n};\n","export default {\n components: {\n graph: {\n title: \"מבט גרף\",\n },\n },\n};\n","export default {\n components: {\n graph: {\n title: \"Grafikonnézet\",\n },\n },\n};\n","export default {\n components: {\n graph: {\n title: \"Tampilan Grafik\",\n },\n },\n};\n","export default {\n components: {\n graph: {\n title: \"Vista grafico\",\n },\n },\n};\n","export default {\n components: {\n graph: {\n title: \"グラフビュー\",\n },\n },\n};\n","export default {\n components: {\n graph: {\n title: \"Граф көрінісі\",\n },\n },\n};\n","export default {\n components: {\n graph: {\n title: \"그래프 뷰\",\n },\n },\n};\n","export default {\n components: {\n graph: {\n title: \"Grafiko Vaizdas\",\n },\n },\n};\n","export default {\n components: {\n graph: {\n title: \"Graf-visning\",\n },\n },\n};\n","export default {\n components: {\n graph: {\n title: \"Grafiekweergave\",\n },\n },\n};\n","export default {\n components: {\n graph: {\n title: \"Graf\",\n },\n },\n};\n","export default {\n components: {\n graph: {\n title: \"Visão de gráfico\",\n },\n },\n};\n","export default {\n components: {\n graph: {\n title: \"Graf\",\n },\n },\n};\n","export default {\n components: {\n graph: {\n title: \"Вид графа\",\n },\n },\n};\n","export default {\n components: {\n graph: {\n title: \"มุมมองกราฟ\",\n },\n },\n};\n","export default {\n components: {\n graph: {\n title: \"Grafik Görünümü\",\n },\n },\n};\n","export default {\n components: {\n graph: {\n title: \"Вигляд графа\",\n },\n },\n};\n","export default {\n components: {\n graph: {\n title: \"Sơ đồ\",\n },\n },\n};\n","export default {\n components: {\n graph: {\n title: \"关系图谱\",\n },\n },\n};\n","export default {\n components: {\n graph: {\n title: \"關係圖譜\",\n },\n },\n};\n","import enUS from \"./locales/en-US\";\nimport enGB from \"./locales/en-GB\";\nimport arSA from \"./locales/ar-SA\";\nimport caES from \"./locales/ca-ES\";\nimport csCZ from \"./locales/cs-CZ\";\nimport deDE from \"./locales/de-DE\";\nimport esES from \"./locales/es-ES\";\nimport faIR from \"./locales/fa-IR\";\nimport fiFI from \"./locales/fi-FI\";\nimport frFR from \"./locales/fr-FR\";\nimport heIL from \"./locales/he-IL\";\nimport huHU from \"./locales/hu-HU\";\nimport idID from \"./locales/id-ID\";\nimport itIT from \"./locales/it-IT\";\nimport jaJP from \"./locales/ja-JP\";\nimport kkKZ from \"./locales/kk-KZ\";\nimport koKR from \"./locales/ko-KR\";\nimport ltLT from \"./locales/lt-LT\";\nimport nbNO from \"./locales/nb-NO\";\nimport nlNL from \"./locales/nl-NL\";\nimport plPL from \"./locales/pl-PL\";\nimport ptBR from \"./locales/pt-BR\";\nimport roRO from \"./locales/ro-RO\";\nimport ruRU from \"./locales/ru-RU\";\nimport thTH from \"./locales/th-TH\";\nimport trTR from \"./locales/tr-TR\";\nimport ukUA from \"./locales/uk-UA\";\nimport viVN from \"./locales/vi-VN\";\nimport zhCN from \"./locales/zh-CN\";\nimport zhTW from \"./locales/zh-TW\";\n\nconst locales: Record<string, typeof enUS> = {\n \"en-US\": enUS,\n \"en-GB\": enGB,\n \"ar-SA\": arSA,\n \"ca-ES\": caES,\n \"cs-CZ\": csCZ,\n \"de-DE\": deDE,\n \"es-ES\": esES,\n \"fa-IR\": faIR,\n \"fi-FI\": fiFI,\n \"fr-FR\": frFR,\n \"he-IL\": heIL,\n \"hu-HU\": huHU,\n \"id-ID\": idID,\n \"it-IT\": itIT,\n \"ja-JP\": jaJP,\n \"kk-KZ\": kkKZ,\n \"ko-KR\": koKR,\n \"lt-LT\": ltLT,\n \"nb-NO\": nbNO,\n \"nl-NL\": nlNL,\n \"pl-PL\": plPL,\n \"pt-BR\": ptBR,\n \"ro-RO\": roRO,\n \"ru-RU\": ruRU,\n \"th-TH\": thTH,\n \"tr-TR\": trTR,\n \"uk-UA\": ukUA,\n \"vi-VN\": viVN,\n \"zh-CN\": zhCN,\n \"zh-TW\": zhTW,\n};\n\nexport function i18n(locale: string) {\n return locales[locale] || enUS;\n}\n",".graph > h3 {\n font-size: 1rem;\n margin: 0;\n}\n.graph > .graph-outer {\n border-radius: 5px;\n border: 1px solid var(--lightgray);\n box-sizing: border-box;\n height: 250px;\n margin: 0.5em 0;\n position: relative;\n overflow: hidden;\n}\n.graph > .graph-outer > .global-graph-icon {\n cursor: pointer;\n background: none;\n border: none;\n color: var(--dark);\n opacity: 0.5;\n width: 24px;\n height: 24px;\n position: absolute;\n padding: 0.2rem;\n margin: 0.3rem;\n top: 0;\n right: 0;\n border-radius: 4px;\n background-color: transparent;\n transition: background-color 0.5s ease;\n}\n.graph > .graph-outer > .global-graph-icon:hover {\n background-color: var(--lightgray);\n}\n.graph > .global-graph-outer {\n position: fixed;\n z-index: 9999;\n left: 0;\n top: 0;\n width: 100vw;\n height: 100%;\n backdrop-filter: blur(4px);\n display: none;\n overflow: hidden;\n}\n.graph > .global-graph-outer.active {\n display: inline-block;\n}\n.graph > .global-graph-outer > .global-graph-container {\n border: 1px solid var(--lightgray);\n background-color: var(--light);\n border-radius: 5px;\n box-sizing: border-box;\n position: fixed;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n height: 80vh;\n width: 80vw;\n}\n@media all and (max-width: 800px) {\n .graph > .global-graph-outer > .global-graph-container {\n width: 90%;\n }\n}\n\n.graph-container {\n width: 100%;\n height: 100%;\n}","var Ct=Object.hasOwnProperty;var pe,y,Ce,tt,J,fe,ve,Ee,Mu,Bu,du,Ae,Iu,Ru,Ou,rt,ge={},bu=[],nt=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,Su=Array.isArray;function $(u,e){for(var t in e)u[t]=e[t];return u}function zu(u){u&&u.parentNode&&u.parentNode.removeChild(u)}function Uu(u,e,t,a,o){var n={type:u,props:e,key:t,ref:a,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:o??++Ce,__i:-1,__u:0};return o==null&&y.vnode!=null&&y.vnode(n),n}function cu(u){return u.children}function yu(u,e){this.props=u,this.context=e}function su(u,e){if(e==null)return u.__?su(u.__,u.__i+1):null;for(var t;e<u.__k.length;e++)if((t=u.__k[e])!=null&&t.__e!=null)return t.__e;return typeof u.type==\"function\"?su(u):null}function ot(u){if(u.__P&&u.__d){var e=u.__v,t=e.__e,a=[],o=[],n=$({},e);n.__v=e.__v+1,y.vnode&&y.vnode(n),be(u.__P,n,e,u.__n,u.__P.namespaceURI,32&e.__u?[t]:null,a,t??su(e),!!(32&e.__u),o),n.__v=e.__v,n.__.__k[n.__i]=n,Dt(a,n,o),e.__e=e.__=null,n.__e!=t&&me(n)}}function me(u){if((u=u.__)!=null&&u.__c!=null)return u.__e=u.__c.base=null,u.__k.some(function(e){if(e!=null&&e.__e!=null)return u.__e=u.__c.base=e.__e}),me(u)}function _e(u){(!u.__d&&(u.__d=!0)&&J.push(u)&&!xu.__r++||fe!=y.debounceRendering)&&((fe=y.debounceRendering)||ve)(xu)}function xu(){try{for(var u,e=1;J.length;)J.length>e&&J.sort(Ee),u=J.shift(),e=J.length,ot(u)}finally{J.length=xu.__r=0}}function Be(u,e,t,a,o,n,s,c,h,D,_){var r,E,f,b,S,B,p,C=a&&a.__k||bu,M=e.length;for(h=at(t,e,C,h,M),r=0;r<M;r++)(f=t.__k[r])!=null&&(E=f.__i!=-1&&C[f.__i]||ge,f.__i=r,B=be(u,f,E,o,n,s,c,h,D,_),b=f.__e,f.ref&&E.ref!=f.ref&&(E.ref&&Hu(E.ref,null,f),_.push(f.ref,f.__c||b,f)),S==null&&b!=null&&(S=b),(p=!!(4&f.__u))||E.__k===f.__k?(h=ye(f,h,u,p),p&&E.__e&&(E.__e=null)):typeof f.type==\"function\"&&B!==void 0?h=B:b&&(h=b.nextSibling),f.__u&=-7);return t.__e=S,h}function at(u,e,t,a,o){var n,s,c,h,D,_=t.length,r=_,E=0;for(u.__k=new Array(o),n=0;n<o;n++)(s=e[n])!=null&&typeof s!=\"boolean\"&&typeof s!=\"function\"?(typeof s==\"string\"||typeof s==\"number\"||typeof s==\"bigint\"||s.constructor==String?s=u.__k[n]=Uu(null,s,null,null,null):Su(s)?s=u.__k[n]=Uu(cu,{children:s},null,null,null):s.constructor===void 0&&s.__b>0?s=u.__k[n]=Uu(s.type,s.props,s.key,s.ref?s.ref:null,s.__v):u.__k[n]=s,h=n+E,s.__=u,s.__b=u.__b+1,c=null,(D=s.__i=it(s,t,h,r))!=-1&&(r--,(c=t[D])&&(c.__u|=2)),c==null||c.__v==null?(D==-1&&(o>_?E--:o<_&&E++),typeof s.type!=\"function\"&&(s.__u|=4)):D!=h&&(D==h-1?E--:D==h+1?E++:(D>h?E--:E++,s.__u|=4))):u.__k[n]=null;if(r)for(n=0;n<_;n++)(c=t[n])!=null&&(2&c.__u)==0&&(c.__e==a&&(a=su(c)),Se(c,c));return a}function ye(u,e,t,a){var o,n;if(typeof u.type==\"function\"){for(o=u.__k,n=0;o&&n<o.length;n++)o[n]&&(o[n].__=u,e=ye(o[n],e,t,a));return e}u.__e!=e&&(a&&(e&&u.type&&!e.parentNode&&(e=su(u)),t.insertBefore(u.__e,e||null)),e=u.__e);do e=e&&e.nextSibling;while(e!=null&&e.nodeType==8);return e}function it(u,e,t,a){var o,n,s,c=u.key,h=u.type,D=e[t],_=D!=null&&(2&D.__u)==0;if(D===null&&c==null||_&&c==D.key&&h==D.type)return t;if(a>(_?1:0)){for(o=t-1,n=t+1;o>=0||n<e.length;)if((D=e[s=o>=0?o--:n++])!=null&&(2&D.__u)==0&&c==D.key&&h==D.type)return s}return-1}function de(u,e,t){e[0]==\"-\"?u.setProperty(e,t??\"\"):u[e]=t==null?\"\":typeof t!=\"number\"||nt.test(e)?t:t+\"px\"}function mu(u,e,t,a,o){var n,s;u:if(e==\"style\")if(typeof t==\"string\")u.style.cssText=t;else{if(typeof a==\"string\"&&(u.style.cssText=a=\"\"),a)for(e in a)t&&e in t||de(u.style,e,\"\");if(t)for(e in t)a&&t[e]==a[e]||de(u.style,e,t[e])}else if(e[0]==\"o\"&&e[1]==\"n\")n=e!=(e=e.replace(Ae,\"$1\")),s=e.toLowerCase(),e=s in u||e==\"onFocusOut\"||e==\"onFocusIn\"?s.slice(2):e.slice(2),u.l||(u.l={}),u.l[e+n]=t,t?a?t[du]=a[du]:(t[du]=Iu,u.addEventListener(e,n?Ou:Ru,n)):u.removeEventListener(e,n?Ou:Ru,n);else{if(o==\"http://www.w3.org/2000/svg\")e=e.replace(/xlink(H|:h)/,\"h\").replace(/sName$/,\"s\");else if(e!=\"width\"&&e!=\"height\"&&e!=\"href\"&&e!=\"list\"&&e!=\"form\"&&e!=\"tabIndex\"&&e!=\"download\"&&e!=\"rowSpan\"&&e!=\"colSpan\"&&e!=\"role\"&&e!=\"popover\"&&e in u)try{u[e]=t??\"\";break u}catch{}typeof t==\"function\"||(t==null||t===!1&&e[4]!=\"-\"?u.removeAttribute(e):u.setAttribute(e,e==\"popover\"&&t==1?\"\":t))}}function he(u){return function(e){if(this.l){var t=this.l[e.type+u];if(e[Bu]==null)e[Bu]=Iu++;else if(e[Bu]<t[du])return;return t(y.event?y.event(e):e)}}}function be(u,e,t,a,o,n,s,c,h,D){var _,r,E,f,b,S,B,p,C,M,G,I,Q,X,uu,T=e.type;if(e.constructor!==void 0)return null;128&t.__u&&(h=!!(32&t.__u),n=[c=e.__e=t.__e]),(_=y.__b)&&_(e);u:if(typeof T==\"function\")try{if(p=e.props,C=T.prototype&&T.prototype.render,M=(_=T.contextType)&&a[_.__c],G=_?M?M.props.value:_.__:a,t.__c?B=(r=e.__c=t.__c).__=r.__E:(C?e.__c=r=new T(p,G):(e.__c=r=new yu(p,G),r.constructor=T,r.render=st),M&&M.sub(r),r.state||(r.state={}),r.__n=a,E=r.__d=!0,r.__h=[],r._sb=[]),C&&r.__s==null&&(r.__s=r.state),C&&T.getDerivedStateFromProps!=null&&(r.__s==r.state&&(r.__s=$({},r.__s)),$(r.__s,T.getDerivedStateFromProps(p,r.__s))),f=r.props,b=r.state,r.__v=e,E)C&&T.getDerivedStateFromProps==null&&r.componentWillMount!=null&&r.componentWillMount(),C&&r.componentDidMount!=null&&r.__h.push(r.componentDidMount);else{if(C&&T.getDerivedStateFromProps==null&&p!==f&&r.componentWillReceiveProps!=null&&r.componentWillReceiveProps(p,G),e.__v==t.__v||!r.__e&&r.shouldComponentUpdate!=null&&r.shouldComponentUpdate(p,r.__s,G)===!1){e.__v!=t.__v&&(r.props=p,r.state=r.__s,r.__d=!1),e.__e=t.__e,e.__k=t.__k,e.__k.some(function(V){V&&(V.__=e)}),bu.push.apply(r.__h,r._sb),r._sb=[],r.__h.length&&s.push(r);break u}r.componentWillUpdate!=null&&r.componentWillUpdate(p,r.__s,G),C&&r.componentDidUpdate!=null&&r.__h.push(function(){r.componentDidUpdate(f,b,S)})}if(r.context=G,r.props=p,r.__P=u,r.__e=!1,I=y.__r,Q=0,C)r.state=r.__s,r.__d=!1,I&&I(e),_=r.render(r.props,r.state,r.context),bu.push.apply(r.__h,r._sb),r._sb=[];else do r.__d=!1,I&&I(e),_=r.render(r.props,r.state,r.context),r.state=r.__s;while(r.__d&&++Q<25);r.state=r.__s,r.getChildContext!=null&&(a=$($({},a),r.getChildContext())),C&&!E&&r.getSnapshotBeforeUpdate!=null&&(S=r.getSnapshotBeforeUpdate(f,b)),X=_!=null&&_.type===cu&&_.key==null?xe(_.props.children):_,c=Be(u,Su(X)?X:[X],e,t,a,o,n,s,c,h,D),r.base=e.__e,e.__u&=-161,r.__h.length&&s.push(r),B&&(r.__E=r.__=null)}catch(V){if(e.__v=null,h||n!=null)if(V.then){for(e.__u|=h?160:128;c&&c.nodeType==8&&c.nextSibling;)c=c.nextSibling;n[n.indexOf(c)]=null,e.__e=c}else{for(uu=n.length;uu--;)zu(n[uu]);Gu(e)}else e.__e=t.__e,e.__k=t.__k,V.then||Gu(e);y.__e(V,e,t)}else n==null&&e.__v==t.__v?(e.__k=t.__k,e.__e=t.__e):c=e.__e=lt(t.__e,e,t,a,o,n,s,h,D);return(_=y.diffed)&&_(e),128&e.__u?void 0:c}function Gu(u){u&&(u.__c&&(u.__c.__e=!0),u.__k&&u.__k.some(Gu))}function Dt(u,e,t){for(var a=0;a<t.length;a++)Hu(t[a],t[++a],t[++a]);y.__c&&y.__c(e,u),u.some(function(o){try{u=o.__h,o.__h=[],u.some(function(n){n.call(o)})}catch(n){y.__e(n,o.__v)}})}function xe(u){return typeof u!=\"object\"||u==null||u.__b>0?u:Su(u)?u.map(xe):$({},u)}function lt(u,e,t,a,o,n,s,c,h){var D,_,r,E,f,b,S,B=t.props||ge,p=e.props,C=e.type;if(C==\"svg\"?o=\"http://www.w3.org/2000/svg\":C==\"math\"?o=\"http://www.w3.org/1998/Math/MathML\":o||(o=\"http://www.w3.org/1999/xhtml\"),n!=null){for(D=0;D<n.length;D++)if((f=n[D])&&\"setAttribute\"in f==!!C&&(C?f.localName==C:f.nodeType==3)){u=f,n[D]=null;break}}if(u==null){if(C==null)return document.createTextNode(p);u=document.createElementNS(o,C,p.is&&p),c&&(y.__m&&y.__m(e,n),c=!1),n=null}if(C==null)B===p||c&&u.data==p||(u.data=p);else{if(n=n&&pe.call(u.childNodes),!c&&n!=null)for(B={},D=0;D<u.attributes.length;D++)B[(f=u.attributes[D]).name]=f.value;for(D in B)f=B[D],D==\"dangerouslySetInnerHTML\"?r=f:D==\"children\"||D in p||D==\"value\"&&\"defaultValue\"in p||D==\"checked\"&&\"defaultChecked\"in p||mu(u,D,null,f,o);for(D in p)f=p[D],D==\"children\"?E=f:D==\"dangerouslySetInnerHTML\"?_=f:D==\"value\"?b=f:D==\"checked\"?S=f:c&&typeof f!=\"function\"||B[D]===f||mu(u,D,f,B[D],o);if(_)c||r&&(_.__html==r.__html||_.__html==u.innerHTML)||(u.innerHTML=_.__html),e.__k=[];else if(r&&(u.innerHTML=\"\"),Be(e.type==\"template\"?u.content:u,Su(E)?E:[E],e,t,a,C==\"foreignObject\"?\"http://www.w3.org/1999/xhtml\":o,n,s,n?n[0]:t.__k&&su(t,0),c,h),n!=null)for(D=n.length;D--;)zu(n[D]);c||(D=\"value\",C==\"progress\"&&b==null?u.removeAttribute(\"value\"):b!=null&&(b!==u[D]||C==\"progress\"&&!b||C==\"option\"&&b!=B[D])&&mu(u,D,b,B[D],o),D=\"checked\",S!=null&&S!=u[D]&&mu(u,D,S,B[D],o))}return u}function Hu(u,e,t){try{if(typeof u==\"function\"){var a=typeof u.__u==\"function\";a&&u.__u(),a&&e==null||(u.__u=u(e))}else u.current=e}catch(o){y.__e(o,t)}}function Se(u,e,t){var a,o;if(y.unmount&&y.unmount(u),(a=u.ref)&&(a.current&&a.current!=u.__e||Hu(a,null,e)),(a=u.__c)!=null){if(a.componentWillUnmount)try{a.componentWillUnmount()}catch(n){y.__e(n,e)}a.base=a.__P=null}if(a=u.__k)for(o=0;o<a.length;o++)a[o]&&Se(a[o],e,t||typeof u.type!=\"function\");t||zu(u.__e),u.__c=u.__=u.__e=void 0}function st(u,e,t){return this.constructor(u,t)}pe=bu.slice,y={__e:function(u,e,t,a){for(var o,n,s;e=e.__;)if((o=e.__c)&&!o.__)try{if((n=o.constructor)&&n.getDerivedStateFromError!=null&&(o.setState(n.getDerivedStateFromError(u)),s=o.__d),o.componentDidCatch!=null&&(o.componentDidCatch(u,a||{}),s=o.__d),s)return o.__E=o}catch(c){u=c}throw u}},Ce=0,tt=function(u){return u!=null&&u.constructor===void 0},yu.prototype.setState=function(u,e){var t;t=this.__s!=null&&this.__s!=this.state?this.__s:this.__s=$({},this.state),typeof u==\"function\"&&(u=u($({},t),this.props)),u&&$(t,u),u!=null&&this.__v&&(e&&this._sb.push(e),_e(this))},yu.prototype.forceUpdate=function(u){this.__v&&(this.__e=!0,u&&this.__h.push(u),_e(this))},yu.prototype.render=cu,J=[],ve=typeof Promise==\"function\"?Promise.prototype.then.bind(Promise.resolve()):setTimeout,Ee=function(u,e){return u.__v.__b-e.__v.__b},xu.__r=0,Mu=Math.random().toString(8),Bu=\"__d\"+Mu,du=\"__a\"+Mu,Ae=/(PointerCapture)$|Capture$/i,Iu=0,Ru=he(!1),Ou=he(!0),rt=0;function Fu(u){let e=_t(ft(u,\"index\"),!0);return e.length===0?\"/\":e}function we(){let u=window.location.pathname;return u.endsWith(\"/\")&&(u=u.slice(0,-1)),u.startsWith(\"/\")&&(u=u.slice(1)),u}function Nu(){return typeof document>\"u\"?\"\":document.body?.dataset?.basepath??\"\"}function $u(u,e){let t=e??Nu(),a=u.startsWith(\"/\")?u:\"/\"+u;return t+a}function Ft(u,e){return u===e||u.endsWith(\"/\"+e)}function ft(u,e){return Ft(u,e)&&(u=u.slice(0,-e.length)),u}function _t(u,e){return u.startsWith(\"/\")&&(u=u.substring(1)),!e&&u.endsWith(\"/\")&&(u=u.slice(0,-1)),u}function ke(u){for(;u.firstChild;)u.removeChild(u.firstChild)}(function(){function u(){var a=we(),o=Nu();return o&&a.startsWith(o.replace(/^\\//,\"\"))&&(a=a.slice(o.replace(/^\\//,\"\").length),a.startsWith(\"/\")&&(a=a.slice(1))),a}function e(a){var o=document.querySelector('script[src=\"'+a+'\"]');return o?Promise.resolve():new Promise(function(n,s){var c=document.createElement(\"script\");c.src=a,c.crossOrigin=\"anonymous\",c.onload=n,c.onerror=s,document.head.appendChild(c)})}Promise.all([e(\"https://cdn.jsdelivr.net/npm/d3@7/dist/d3.min.js\"),e(\"https://cdn.jsdelivr.net/npm/pixi.js@8/dist/pixi.js\")]).then(function(){t()}).catch(function(a){console.error(\"[Graph] Failed to load libraries:\",a);for(var o=document.querySelectorAll(\".graph-container\"),n=0;n<o.length;n++)o[n].textContent=\"Graph could not load. Check your network connection.\",o[n].style.display=\"flex\",o[n].style.alignItems=\"center\",o[n].style.justifyContent=\"center\",o[n].style.color=\"var(--gray)\",o[n].style.fontSize=\"0.9rem\"});function t(){var a=window.d3,o=window.PIXI;if(!a||!o){console.error(\"[Graph] Libraries not loaded\");return}var n=\"graph-visited\";function s(){return new Set(JSON.parse(localStorage.getItem(n)||\"[]\"))}function c(d){var w=s();w.add(d),localStorage.setItem(n,JSON.stringify(Array.from(w)))}function h(d,w){if(!d)return w;var g=document.createElement(\"div\");g.style.color=d,g.style.position=\"absolute\",g.style.visibility=\"hidden\",document.body.appendChild(g);var m=getComputedStyle(g).color;return g.remove(),m||w}async function D(d,w,g){var m=Fu(w);m===\"\"&&(m=\"index\");var q=s();if(ke(d),g!==void 0&&g!==E)return console.log(\"[Graph] Stale render, skipping\"),function(){};var x=JSON.parse(d.dataset.cfg||\"{}\"),fu=x.drag,Le=x.zoom,Vu=x.depth,qu=x.scale||1,Pe=x.repelForce||.5,je=x.centerForce||.3,Te=x.linkDistance||30,We=x.fontSize||.6,Me=x.opacityScale||1,Ue=x.removeTags||[],Re=x.showTags,Oe=x.focusOnHover,Ge=x.enableRadial,eu;try{var Ku=await fetchData;eu=new Map;for(var Ju in Ku)eu.set(Fu(Ju),Ku[Ju])}catch(i){return console.error(\"[Graph] Error loading data:\",i),function(){}}var R=d.offsetWidth,O=Math.max(d.offsetHeight,250),tu=[],hu=[],Xu=new Set(eu.keys());eu.forEach(function(i,l){for(var F=i.links||[],A=0;A<F.length;A++){var v=Fu(F[A]);Xu.has(v)&&tu.push({source:l,target:v})}if(Re)for(var j=i.tags||[],A=0;A<j.length;A++){var N=j[A];if(Ue.indexOf(N)===-1){var K=Fu(\"tags/\"+N);hu.indexOf(K)===-1&&hu.push(K),tu.push({source:l,target:K})}}});var ru=new Set;if(Vu>=0)for(var pu=[m],Cu=new Set([m]),Yu=0;Yu<=Vu&&pu.length>0;Yu++){for(var wu=[],ku=0;ku<pu.length;ku++){var Lu=pu[ku];ru.add(Lu);for(var Pu=0;Pu<tu.length;Pu++){var W=tu[Pu];W.source===Lu&&!Cu.has(W.target)&&(Cu.add(W.target),wu.push(W.target)),W.target===Lu&&!Cu.has(W.source)&&(Cu.add(W.source),wu.push(W.source))}}pu=wu}else{Xu.forEach(function(i){ru.add(i)});for(var k=0;k<hu.length;k++)ru.add(hu[k])}var nu=[],ju=new Map;ru.forEach(function(i){var l=i.startsWith(\"tags/\"),F=l?\"#\"+i.substring(5):eu.get(i)?.title||i,A=l?[]:eu.get(i)?.tags||[],v={id:i,text:F,tags:A,x:Math.random()*R-R/2,y:Math.random()*O-O/2,vx:0,vy:0};nu.push(v),ju.set(i,v)});for(var H=[],k=0;k<tu.length;k++){var W=tu[k];if(ru.has(W.source)&&ru.has(W.target)){var Zu=ju.get(W.source),Qu=ju.get(W.target);Zu&&Qu&&H.push({source:Zu,target:Qu})}}var Y=getComputedStyle(document.documentElement),Ie=h(Y.getPropertyValue(\"--secondary\").trim(),\"#c792ea\"),ue=h(Y.getPropertyValue(\"--tertiary\").trim(),\"#82aaff\"),ee=h(Y.getPropertyValue(\"--gray\").trim(),\"#6c6c6c\"),te=h(Y.getPropertyValue(\"--lightgray\").trim(),\"#d4d4d4\"),ze=h(Y.getPropertyValue(\"--dark\").trim(),\"#1a1a1a\"),He=h(Y.getPropertyValue(\"--light\").trim(),\"#f5f5f5\"),Ne=Y.getPropertyValue(\"--bodyFont\").trim()||\"inherit\",Z=new o.Application;await Z.init({width:R,height:O,antialias:!0,backgroundAlpha:0,resolution:window.devicePixelRatio||1,autoDensity:!0,eventMode:\"static\"}),d.appendChild(Z.canvas);var ou=new o.Container;Z.stage.addChild(ou);var au=a.forceSimulation(nu).force(\"charge\",a.forceManyBody().strength(-100*Pe)).force(\"center\",a.forceCenter().strength(je)).force(\"link\",a.forceLink(H).distance(Te)).force(\"collide\",a.forceCollide().radius(function(i){for(var l=0,F=0;F<H.length;F++)(H[F].source.id===i.id||H[F].target.id===i.id)&&l++;return 2+Math.sqrt(l)}).iterations(3));if(Ge){var Tu=Math.min(R,O)/2*.8;au.force(\"radial\",a.forceRadial(Tu).strength(.2))}var re=new o.Container,ne=new o.Container,vu=new o.Container;ou.addChild(re),ou.addChild(ne),ou.addChild(vu);var L=[],z=[],_u=null,iu=new Set,oe=0,Eu=!1,P=a.zoomIdentity;function ae(i){for(var l=0,F=0;F<H.length;F++)(H[F].source.id===i.id||H[F].target.id===i.id)&&l++;return 2+Math.sqrt(l)}function $e(i){var l=i.id===m;return l?Ie:q.has(i.id)||i.id.startsWith(\"tags/\")?ue:ee}function Wu(i){if(_u=i,i===null){iu=new Set;for(var l=0;l<L.length;l++)L[l].active=!1;for(var l=0;l<z.length;l++)z[l].active=!1}else{iu=new Set;for(var l=0;l<z.length;l++){var F=z[l].simulationData;F.source.id===i||F.target.id===i?(iu.add(F.source.id),iu.add(F.target.id),z[l].active=!0):z[l].active=!1}iu.add(i);for(var l=0;l<L.length;l++)iu.has(L[l].simulationData.id)?L[l].active=!0:L[l].active=!1}}function Ve(){for(var i=0;i<z.length;i++){var l=z[i],F=1;_u!==null&&(F=l.active?1:.2),l.alpha=F,l.color=l.active?ee:te}}function qe(){for(var i=1/qu,l=i*1.1,F=0;F<L.length;F++){var A=L[F];_u===A.simulationData.id?(A.label.alpha=1,A.label.scale.set(l)):A.label.scale.set(i)}}function Ke(){for(var i=0;i<L.length;i++){var l=L[i],F=1;_u!==null&&Oe&&(F=l.active?1:.2),l.gfx.alpha=F}}function Au(){Ke(),Ve(),qe()}for(var k=0;k<nu.length;k++){var Du=nu[k],ie=Du.id,De=ie.startsWith(\"tags/\"),Tu=ae(Du),le=$e(Du),lu=new o.Text({text:Du.text,style:{fontSize:We*15,fill:ze,fontFamily:Ne},resolution:window.devicePixelRatio*4});lu.anchor.set(.5,1.2),lu.alpha=0,lu.scale.set(1/qu),vu.addChild(lu);var U=new o.Graphics;U.circle(0,0,Tu),U.fill({color:De?He:le}),De&&U.stroke({width:2,color:ue}),U.eventMode=\"static\",U.cursor=\"pointer\",U.label=ie,(function(F,A,v){var j=0;A.on(\"pointerover\",function(N){Wu(F.id),j=v.alpha,Eu||Au()}),A.on(\"pointerleave\",function(){Wu(null),v.alpha=j,Eu||Au()})})(Du,U,lu),ne.addChild(U),L.push({simulationData:Du,gfx:U,label:lu,color:le,alpha:1,active:!1})}for(var k=0;k<H.length;k++){var W=H[k],U=new o.Graphics;U.eventMode=\"none\",re.addChild(U),z.push({simulationData:W,gfx:U,color:te,alpha:1,active:!1})}if(fu){var Je=function(i){for(var l=(i.x-P.x)/P.k,F=(i.y-P.y)/P.k,A=0;A<nu.length;A++){var v=nu[A],j=l-v.x-R/2,N=F-v.y-O/2,K=Math.sqrt(j*j+N*N),gu=ae(v);if(K<gu+5)return v}return null},Xe=function(i){i.active||au.alphaTarget(1).restart(),i.subject.fx=i.subject.x,i.subject.fy=i.subject.y;var l=(i.x-P.x)/P.k-R/2,F=(i.y-P.y)/P.k-O/2;i.subject.__dragOffset={x:l-i.subject.x,y:F-i.subject.y},oe=Date.now(),Eu=!0,_u=i.subject.id},Ye=function(i){var l=(i.x-P.x)/P.k-R/2,F=(i.y-P.y)/P.k-O/2;i.subject.fx=l-i.subject.__dragOffset.x,i.subject.fy=F-i.subject.__dragOffset.y},Ze=function(i){if(i.active||au.alphaTarget(0),i.subject.fx=null,i.subject.fy=null,Eu=!1,Wu(null),Au(),Date.now()-oe<500){var l=$u(i.subject.id);window.location.href=l}},Qe=a.drag().container(Z.canvas).subject(Je).on(\"start\",Xe).on(\"drag\",Ye).on(\"end\",Ze);a.select(Z.canvas).call(Qe)}else for(var k=0;k<L.length;k++)(function(l){l.gfx.on(\"click\",function(){var F=$u(l.simulationData.id);window.location.href=F})})(L[k]);if(Le){var ut=function(i){P=i.transform,ou.scale.set(P.k,P.k),ou.position.set(P.x,P.y);for(var l=P.k*Me,F=Math.max((l-1)/3.75,0),A=[],v=0;v<L.length;v++)L[v].active&&A.push(L[v].label);for(var v=0;v<vu.children.length;v++){var j=vu.children[v];A.indexOf(j)===-1&&(j.alpha=F)}},et=a.zoom().extent([[0,0],[R,O]]).scaleExtent([.25,4]).on(\"zoom\",ut);a.select(Z.canvas).call(et)}var se=!1;function ce(){if(!se){for(var i=0;i<L.length;i++){var l=L[i],F=l.simulationData.x,A=l.simulationData.y;F!=null&&A!=null&&(l.gfx.position.set(F+R/2,A+O/2),l.label&&l.label.position.set(F+R/2,A+O/2))}for(var i=0;i<z.length;i++){var v=z[i],j=v.simulationData,N=j.source.x,K=j.source.y,gu=j.target.x,Fe=j.target.y;N!=null&&K!=null&&gu!=null&&Fe!=null&&(v.gfx.clear(),v.gfx.moveTo(N+R/2,K+O/2),v.gfx.lineTo(gu+R/2,Fe+O/2),v.gfx.stroke({alpha:v.alpha,width:1,color:v.color}))}requestAnimationFrame(ce)}}return au.on(\"tick\",function(){}),au.restart(),Au(),ce(),function(){se=!0,au.stop();try{Z.destroy(!0)}catch{}}}var _=[],r=[],E=0;function f(){for(var d=0;d<_.length;d++)_[d]();_=[]}function b(){for(var d=0;d<r.length;d++)r[d]();r=[]}var S=[],B=[],p=null,C=null,M=null;function G(){b();for(var d=0;d<S.length;d++){S[d].classList.remove(\"active\");var w=S[d].closest(\".sidebar\");w&&(w.style.zIndex=\"\")}}function I(){for(var d=0;d<S.length;d++)if(S[d].classList.contains(\"active\"))return!0;return!1}function Q(){b();for(var d=u(),w=0;w<S.length;w++){var g=S[w];g.classList.add(\"active\");var m=g.closest(\".sidebar\");m&&(m.style.zIndex=\"1\");var q=g.querySelector(\".global-graph-container\");q&&(function(x){D(x,d,void 0).then(function(fu){r.push(fu)}).catch(function(fu){console.error(\"[Graph] Global render error:\",fu)})})(q)}}function X(){I()?G():Q()}function uu(){f();var d=++E,w=u();c(w);for(var g=document.querySelectorAll(\".graph-container\"),m=0;m<g.length;m++)(function(q){D(q,w,d).then(function(x){d===E&&_.push(x)}).catch(function(x){console.error(\"[Graph] Local render error:\",x)})})(g[m])}function T(d){var w=d.detail?d.detail.url:u();if(c(Fu(w)),uu(),S=Array.from(document.querySelectorAll(\".global-graph-outer\")),M)for(var g=0;g<B.length;g++)B[g].removeEventListener(\"click\",M);B=Array.from(document.querySelectorAll(\".global-graph-icon\")),M=function(){X()};for(var g=0;g<B.length;g++)B[g].addEventListener(\"click\",M);p&&document.removeEventListener(\"click\",p),p=function(m){if(I()){var q=m.target.closest(\".global-graph-container\"),x=m.target.closest(\".global-graph-icon\");!q&&!x&&G()}},document.addEventListener(\"click\",p),C&&document.removeEventListener(\"keydown\",C),C=function(m){if(m.key===\"Escape\"){I()&&G();return}m.key===\"g\"&&(m.ctrlKey||m.metaKey)&&!m.shiftKey&&(m.preventDefault(),X())},document.addEventListener(\"keydown\",C),I()&&Q()}document.readyState===\"loading\"?document.addEventListener(\"DOMContentLoaded\",function(){T({detail:{url:u()}})}):T({detail:{url:u()}}),document.addEventListener(\"prenav\",function(){f(),b()}),document.addEventListener(\"nav\",T),document.addEventListener(\"render\",T);function V(){uu(),I()&&Q()}document.addEventListener(\"themechange\",V)}})();\n","/** Normal hydration that attaches to a DOM tree but does not diff it. */\nexport const MODE_HYDRATE = 1 << 5;\n/** Signifies this VNode suspended on the previous render */\nexport const MODE_SUSPENDED = 1 << 7;\n/** Indicates that this node needs to be inserted while patching children */\nexport const INSERT_VNODE = 1 << 2;\n/** Indicates a VNode has been matched with another VNode in the diff */\nexport const MATCHED = 1 << 1;\n\n/** Reset all mode flags */\nexport const RESET_MODE = ~(MODE_HYDRATE | MODE_SUSPENDED);\n\nexport const SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\nexport const XHTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';\nexport const MATH_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';\n\nexport const NULL = null;\nexport const UNDEFINED = undefined;\nexport const EMPTY_OBJ = /** @type {any} */ ({});\nexport const EMPTY_ARR = [];\nexport const IS_NON_DIMENSIONAL =\n\t/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;\n","import { _catchError } from './diff/catch-error';\n\n/**\n * The `option` object can potentially contain callback functions\n * that are called during various stages of our renderer. This is the\n * foundation on which all our addons like `preact/debug`, `preact/compat`,\n * and `preact/hooks` are based on. See the `Options` type in `internal.d.ts`\n * for a full list of available option hooks (most editors/IDEs allow you to\n * ctrl+click or cmd+click on mac the type definition below).\n * @type {import('./internal').Options}\n */\nconst options = {\n\t_catchError\n};\n\nexport default options;\n","import { NULL } from '../constants';\n\n/**\n * Find the closest error boundary to a thrown error and call it\n * @param {object} error The thrown value\n * @param {import('../internal').VNode} vnode The vnode that threw the error that was caught (except\n * for unmounting when this parameter is the highest parent that was being\n * unmounted)\n * @param {import('../internal').VNode} [oldVNode]\n * @param {import('../internal').ErrorInfo} [errorInfo]\n */\nexport function _catchError(error, vnode, oldVNode, errorInfo) {\n\t/** @type {import('../internal').Component} */\n\tlet component,\n\t\t/** @type {import('../internal').ComponentType} */\n\t\tctor,\n\t\t/** @type {boolean} */\n\t\thandled;\n\n\tfor (; (vnode = vnode._parent); ) {\n\t\tif ((component = vnode._component) && !component._processingException) {\n\t\t\ttry {\n\t\t\t\tctor = component.constructor;\n\n\t\t\t\tif (ctor && ctor.getDerivedStateFromError != NULL) {\n\t\t\t\t\tcomponent.setState(ctor.getDerivedStateFromError(error));\n\t\t\t\t\thandled = component._dirty;\n\t\t\t\t}\n\n\t\t\t\tif (component.componentDidCatch != NULL) {\n\t\t\t\t\tcomponent.componentDidCatch(error, errorInfo || {});\n\t\t\t\t\thandled = component._dirty;\n\t\t\t\t}\n\n\t\t\t\t// This is an error boundary. Mark it as having bailed out, and whether it was mid-hydration.\n\t\t\t\tif (handled) {\n\t\t\t\t\treturn (component._pendingError = component);\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\terror = e;\n\t\t\t}\n\t\t}\n\t}\n\n\tthrow error;\n}\n","import { assign } from './util';\nimport { diff, commitRoot } from './diff/index';\nimport options from './options';\nimport { Fragment } from './create-element';\nimport { MODE_HYDRATE, NULL } from './constants';\n\n/**\n * Base Component class. Provides `setState()` and `forceUpdate()`, which\n * trigger rendering\n * @param {object} props The initial component props\n * @param {object} context The initial context from parent components'\n * getChildContext\n */\nexport function BaseComponent(props, context) {\n\tthis.props = props;\n\tthis.context = context;\n}\n\n/**\n * Update component state and schedule a re-render.\n * @this {import('./internal').Component}\n * @param {object | ((s: object, p: object) => object)} update A hash of state\n * properties to update with new values or a function that given the current\n * state and props returns a new partial state\n * @param {() => void} [callback] A function to be called once component state is\n * updated\n */\nBaseComponent.prototype.setState = function (update, callback) {\n\t// only clone state when copying to nextState the first time.\n\tlet s;\n\tif (this._nextState != NULL && this._nextState != this.state) {\n\t\ts = this._nextState;\n\t} else {\n\t\ts = this._nextState = assign({}, this.state);\n\t}\n\n\tif (typeof update == 'function') {\n\t\t// Some libraries like `immer` mark the current state as readonly,\n\t\t// preventing us from mutating it, so we need to clone it. See #2716\n\t\tupdate = update(assign({}, s), this.props);\n\t}\n\n\tif (update) {\n\t\tassign(s, update);\n\t}\n\n\t// Skip update if updater function returned null\n\tif (update == NULL) return;\n\n\tif (this._vnode) {\n\t\tif (callback) {\n\t\t\tthis._stateCallbacks.push(callback);\n\t\t}\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Immediately perform a synchronous re-render of the component\n * @this {import('./internal').Component}\n * @param {() => void} [callback] A function to be called after component is\n * re-rendered\n */\nBaseComponent.prototype.forceUpdate = function (callback) {\n\tif (this._vnode) {\n\t\t// Set render mode so that we can differentiate where the render request\n\t\t// is coming from. We need this because forceUpdate should never call\n\t\t// shouldComponentUpdate\n\t\tthis._force = true;\n\t\tif (callback) this._renderCallbacks.push(callback);\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Accepts `props` and `state`, and returns a new Virtual DOM tree to build.\n * Virtual DOM is generally constructed via [JSX](https://jasonformat.com/wtf-is-jsx).\n * @param {object} props Props (eg: JSX attributes) received from parent\n * element/component\n * @param {object} state The component's current state\n * @param {object} context Context object, as returned by the nearest\n * ancestor's `getChildContext()`\n * @returns {ComponentChildren | void}\n */\nBaseComponent.prototype.render = Fragment;\n\n/**\n * @param {import('./internal').VNode} vnode\n * @param {number | null} [childIndex]\n */\nexport function getDomSibling(vnode, childIndex) {\n\tif (childIndex == NULL) {\n\t\t// Use childIndex==null as a signal to resume the search from the vnode's sibling\n\t\treturn vnode._parent\n\t\t\t? getDomSibling(vnode._parent, vnode._index + 1)\n\t\t\t: NULL;\n\t}\n\n\tlet sibling;\n\tfor (; childIndex < vnode._children.length; childIndex++) {\n\t\tsibling = vnode._children[childIndex];\n\n\t\tif (sibling != NULL && sibling._dom != NULL) {\n\t\t\t// Since updateParentDomPointers keeps _dom pointer correct,\n\t\t\t// we can rely on _dom to tell us if this subtree contains a\n\t\t\t// rendered DOM node, and what the first rendered DOM node is\n\t\t\treturn sibling._dom;\n\t\t}\n\t}\n\n\t// If we get here, we have not found a DOM node in this vnode's children.\n\t// We must resume from this vnode's sibling (in it's parent _children array)\n\t// Only climb up and search the parent if we aren't searching through a DOM\n\t// VNode (meaning we reached the DOM parent of the original vnode that began\n\t// the search)\n\treturn typeof vnode.type == 'function' ? getDomSibling(vnode) : NULL;\n}\n\n/**\n * Trigger in-place re-rendering of a component.\n * @param {import('./internal').Component} component The component to rerender\n */\nfunction renderComponent(component) {\n\tif (component._parentDom && component._dirty) {\n\t\tlet oldVNode = component._vnode,\n\t\t\toldDom = oldVNode._dom,\n\t\t\tcommitQueue = [],\n\t\t\trefQueue = [],\n\t\t\tnewVNode = assign({}, oldVNode);\n\t\tnewVNode._original = oldVNode._original + 1;\n\t\tif (options.vnode) options.vnode(newVNode);\n\n\t\tdiff(\n\t\t\tcomponent._parentDom,\n\t\t\tnewVNode,\n\t\t\toldVNode,\n\t\t\tcomponent._globalContext,\n\t\t\tcomponent._parentDom.namespaceURI,\n\t\t\toldVNode._flags & MODE_HYDRATE ? [oldDom] : NULL,\n\t\t\tcommitQueue,\n\t\t\toldDom == NULL ? getDomSibling(oldVNode) : oldDom,\n\t\t\t!!(oldVNode._flags & MODE_HYDRATE),\n\t\t\trefQueue\n\t\t);\n\n\t\tnewVNode._original = oldVNode._original;\n\t\tnewVNode._parent._children[newVNode._index] = newVNode;\n\t\tcommitRoot(commitQueue, newVNode, refQueue);\n\t\toldVNode._dom = oldVNode._parent = null;\n\n\t\tif (newVNode._dom != oldDom) {\n\t\t\tupdateParentDomPointers(newVNode);\n\t\t}\n\t}\n}\n\n/**\n * @param {import('./internal').VNode} vnode\n */\nfunction updateParentDomPointers(vnode) {\n\tif ((vnode = vnode._parent) != NULL && vnode._component != NULL) {\n\t\tvnode._dom = vnode._component.base = NULL;\n\t\tvnode._children.some(child => {\n\t\t\tif (child != NULL && child._dom != NULL) {\n\t\t\t\treturn (vnode._dom = vnode._component.base = child._dom);\n\t\t\t}\n\t\t});\n\n\t\treturn updateParentDomPointers(vnode);\n\t}\n}\n\n/**\n * The render queue\n * @type {Array<import('./internal').Component>}\n */\nlet rerenderQueue = [];\n\n/*\n * The value of `Component.debounce` must asynchronously invoke the passed in callback. It is\n * important that contributors to Preact can consistently reason about what calls to `setState`, etc.\n * do, and when their effects will be applied. See the links below for some further reading on designing\n * asynchronous APIs.\n * * [Designing APIs for Asynchrony](https://blog.izs.me/2013/08/designing-apis-for-asynchrony)\n * * [Callbacks synchronous and asynchronous](https://blog.ometer.com/2011/07/24/callbacks-synchronous-and-asynchronous/)\n */\n\nlet prevDebounce;\n\nconst defer =\n\ttypeof Promise == 'function'\n\t\t? Promise.prototype.then.bind(Promise.resolve())\n\t\t: setTimeout;\n\n/**\n * Enqueue a rerender of a component\n * @param {import('./internal').Component} c The component to rerender\n */\nexport function enqueueRender(c) {\n\tif (\n\t\t(!c._dirty &&\n\t\t\t(c._dirty = true) &&\n\t\t\trerenderQueue.push(c) &&\n\t\t\t!process._rerenderCount++) ||\n\t\tprevDebounce != options.debounceRendering\n\t) {\n\t\tprevDebounce = options.debounceRendering;\n\t\t(prevDebounce || defer)(process);\n\t}\n}\n\n/**\n * @param {import('./internal').Component} a\n * @param {import('./internal').Component} b\n */\nconst depthSort = (a, b) => a._vnode._depth - b._vnode._depth;\n\n/** Flush the render queue by rerendering all queued components */\nfunction process() {\n\ttry {\n\t\tlet c,\n\t\t\tl = 1;\n\n\t\t// Don't update `renderCount` yet. Keep its value non-zero to prevent unnecessary\n\t\t// process() calls from getting scheduled while `queue` is still being consumed.\n\t\twhile (rerenderQueue.length) {\n\t\t\t// Keep the rerender queue sorted by (depth, insertion order). The queue\n\t\t\t// will initially be sorted on the first iteration only if it has more than 1 item.\n\t\t\t//\n\t\t\t// New items can be added to the queue e.g. when rerendering a provider, so we want to\n\t\t\t// keep the order from top to bottom with those new items so we can handle them in a\n\t\t\t// single pass\n\t\t\tif (rerenderQueue.length > l) {\n\t\t\t\trerenderQueue.sort(depthSort);\n\t\t\t}\n\n\t\t\tc = rerenderQueue.shift();\n\t\t\tl = rerenderQueue.length;\n\n\t\t\trenderComponent(c);\n\t\t}\n\t} finally {\n\t\trerenderQueue.length = process._rerenderCount = 0;\n\t}\n}\n\nprocess._rerenderCount = 0;\n","import { IS_NON_DIMENSIONAL, NULL, SVG_NAMESPACE } from '../constants';\nimport options from '../options';\n\n// Per-instance unique key for event clock stamps. Each Preact copy on the page\n// gets its own random suffix so that `_dispatched` / `_attached` properties on\n// shared event objects and handler functions cannot collide across instances.\n// ~1 in 60M collision odds - if you have that many praect versions on the page,\n// you deserve some weird bugs.\n// In 11 we can replace this with a\n// Symbol\nlet _id = Math.random().toString(8),\n\tEVENT_DISPATCHED = '__d' + _id,\n\tEVENT_ATTACHED = '__a' + _id;\n\nfunction setStyle(style, key, value) {\n\tif (key[0] == '-') {\n\t\tstyle.setProperty(key, value == NULL ? '' : value);\n\t} else if (value == NULL) {\n\t\tstyle[key] = '';\n\t} else if (typeof value != 'number' || IS_NON_DIMENSIONAL.test(key)) {\n\t\tstyle[key] = value;\n\t} else {\n\t\tstyle[key] = value + 'px';\n\t}\n}\n\nconst CAPTURE_REGEX = /(PointerCapture)$|Capture$/i;\n\n// A logical clock to solve issues like https://github.com/preactjs/preact/issues/3927.\n// When the DOM performs an event it leaves micro-ticks in between bubbling up which means that\n// an event can trigger on a newly reated DOM-node while the event bubbles up.\n//\n// Originally inspired by Vue\n// (https://github.com/vuejs/core/blob/caeb8a68811a1b0f79/packages/runtime-dom/src/modules/events.ts#L90-L101),\n// but modified to use a logical clock instead of Date.now() in case event handlers get attached\n// and events get dispatched during the same millisecond.\n//\n// The clock is incremented after each new event dispatch. This allows 1 000 000 new events\n// per second for over 280 years before the value reaches Number.MAX_SAFE_INTEGER (2**53 - 1).\nlet eventClock = 0;\n\n/**\n * Set a property value on a DOM node\n * @param {import('../internal').PreactElement} dom The DOM node to modify\n * @param {string} name The name of the property to set\n * @param {*} value The value to set the property to\n * @param {*} oldValue The old value the property had\n * @param {string} namespace Whether or not this DOM node is an SVG node or not\n */\nexport function setProperty(dom, name, value, oldValue, namespace) {\n\tlet useCapture;\n\n\to: if (name == 'style') {\n\t\tif (typeof value == 'string') {\n\t\t\tdom.style.cssText = value;\n\t\t} else {\n\t\t\tif (typeof oldValue == 'string') {\n\t\t\t\tdom.style.cssText = oldValue = '';\n\t\t\t}\n\n\t\t\tif (oldValue) {\n\t\t\t\tfor (name in oldValue) {\n\t\t\t\t\tif (!(value && name in value)) {\n\t\t\t\t\t\tsetStyle(dom.style, name, '');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (value) {\n\t\t\t\tfor (name in value) {\n\t\t\t\t\tif (!oldValue || value[name] != oldValue[name]) {\n\t\t\t\t\t\tsetStyle(dom.style, name, value[name]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t// Benchmark for comparison: https://esbench.com/bench/574c954bdb965b9a00965ac6\n\telse if (name[0] == 'o' && name[1] == 'n') {\n\t\tuseCapture = name != (name = name.replace(CAPTURE_REGEX, '$1'));\n\t\tconst lowerCaseName = name.toLowerCase();\n\n\t\t// Infer correct casing for DOM built-in events:\n\t\tif (lowerCaseName in dom || name == 'onFocusOut' || name == 'onFocusIn')\n\t\t\tname = lowerCaseName.slice(2);\n\t\telse name = name.slice(2);\n\n\t\tif (!dom._listeners) dom._listeners = {};\n\t\tdom._listeners[name + useCapture] = value;\n\n\t\tif (value) {\n\t\t\tif (!oldValue) {\n\t\t\t\tvalue[EVENT_ATTACHED] = eventClock;\n\t\t\t\tdom.addEventListener(\n\t\t\t\t\tname,\n\t\t\t\t\tuseCapture ? eventProxyCapture : eventProxy,\n\t\t\t\t\tuseCapture\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tvalue[EVENT_ATTACHED] = oldValue[EVENT_ATTACHED];\n\t\t\t}\n\t\t} else {\n\t\t\tdom.removeEventListener(\n\t\t\t\tname,\n\t\t\t\tuseCapture ? eventProxyCapture : eventProxy,\n\t\t\t\tuseCapture\n\t\t\t);\n\t\t}\n\t} else {\n\t\tif (namespace == SVG_NAMESPACE) {\n\t\t\t// Normalize incorrect prop usage for SVG:\n\t\t\t// - xlink:href / xlinkHref --> href (xlink:href was removed from SVG and isn't needed)\n\t\t\t// - className --> class\n\t\t\tname = name.replace(/xlink(H|:h)/, 'h').replace(/sName$/, 's');\n\t\t} else if (\n\t\t\tname != 'width' &&\n\t\t\tname != 'height' &&\n\t\t\tname != 'href' &&\n\t\t\tname != 'list' &&\n\t\t\tname != 'form' &&\n\t\t\t// Default value in browsers is `-1` and an empty string is\n\t\t\t// cast to `0` instead\n\t\t\tname != 'tabIndex' &&\n\t\t\tname != 'download' &&\n\t\t\tname != 'rowSpan' &&\n\t\t\tname != 'colSpan' &&\n\t\t\tname != 'role' &&\n\t\t\tname != 'popover' &&\n\t\t\tname in dom\n\t\t) {\n\t\t\ttry {\n\t\t\t\tdom[name] = value == NULL ? '' : value;\n\t\t\t\t// labelled break is 1b smaller here than a return statement (sorry)\n\t\t\t\tbreak o;\n\t\t\t} catch (e) {}\n\t\t}\n\n\t\t// aria- and data- attributes have no boolean representation.\n\t\t// A `false` value is different from the attribute not being\n\t\t// present, so we can't remove it. For non-boolean aria\n\t\t// attributes we could treat false as a removal, but the\n\t\t// amount of exceptions would cost too many bytes. On top of\n\t\t// that other frameworks generally stringify `false`.\n\n\t\tif (typeof value == 'function') {\n\t\t\t// never serialize functions as attribute values\n\t\t} else if (value != NULL && (value !== false || name[4] == '-')) {\n\t\t\tdom.setAttribute(name, name == 'popover' && value == true ? '' : value);\n\t\t} else {\n\t\t\tdom.removeAttribute(name);\n\t\t}\n\t}\n}\n\n/**\n * Create an event proxy function.\n * @param {boolean} useCapture Is the event handler for the capture phase.\n * @private\n */\nfunction createEventProxy(useCapture) {\n\t/**\n\t * Proxy an event to hooked event handlers\n\t * @param {import('../internal').PreactEvent} e The event object from the browser\n\t * @private\n\t */\n\treturn function (e) {\n\t\tif (this._listeners) {\n\t\t\tconst eventHandler = this._listeners[e.type + useCapture];\n\t\t\tif (e[EVENT_DISPATCHED] == NULL) {\n\t\t\t\te[EVENT_DISPATCHED] = eventClock++;\n\n\t\t\t\t// When `e[EVENT_DISPATCHED]` is smaller than the time when the targeted event\n\t\t\t\t// handler was attached we know we have bubbled up to an element that was added\n\t\t\t\t// during patching the DOM.\n\t\t\t} else if (e[EVENT_DISPATCHED] < eventHandler[EVENT_ATTACHED]) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\treturn eventHandler(options.event ? options.event(e) : e);\n\t\t}\n\t};\n}\n\nconst eventProxy = createEventProxy(false);\nconst eventProxyCapture = createEventProxy(true);\n","import { enqueueRender } from './component';\nimport { NULL } from './constants';\n\nexport let i = 0;\n\nexport function createContext(defaultValue) {\n\tfunction Context(props) {\n\t\tif (!this.getChildContext) {\n\t\t\t/** @type {Set<import('./internal').Component> | null} */\n\t\t\tlet subs = new Set();\n\t\t\tlet ctx = {};\n\t\t\tctx[Context._id] = this;\n\n\t\t\tthis.getChildContext = () => ctx;\n\n\t\t\tthis.componentWillUnmount = () => {\n\t\t\t\tsubs = NULL;\n\t\t\t};\n\n\t\t\tthis.shouldComponentUpdate = function (_props) {\n\t\t\t\t// @ts-expect-error even\n\t\t\t\tif (this.props.value != _props.value) {\n\t\t\t\t\tsubs.forEach(c => {\n\t\t\t\t\t\tc._force = true;\n\t\t\t\t\t\tenqueueRender(c);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tthis.sub = c => {\n\t\t\t\tsubs.add(c);\n\t\t\t\tlet old = c.componentWillUnmount;\n\t\t\t\tc.componentWillUnmount = () => {\n\t\t\t\t\tif (subs) {\n\t\t\t\t\t\tsubs.delete(c);\n\t\t\t\t\t}\n\t\t\t\t\tif (old) old.call(c);\n\t\t\t\t};\n\t\t\t};\n\t\t}\n\n\t\treturn props.children;\n\t}\n\n\tContext._id = '__cC' + i++;\n\tContext._defaultValue = defaultValue;\n\n\t/** @type {import('./internal').FunctionComponent} */\n\tContext.Consumer = (props, contextValue) => {\n\t\treturn props.children(contextValue);\n\t};\n\n\t// we could also get rid of _contextRef entirely\n\tContext.Provider =\n\t\tContext._contextRef =\n\t\tContext.Consumer.contextType =\n\t\t\tContext;\n\n\treturn Context;\n}\n","import { options, Fragment } from 'preact';\nimport { encodeEntities } from './utils';\nimport { IS_NON_DIMENSIONAL } from '../../src/constants';\n\nlet vnodeId = 0;\n\nconst isArray = Array.isArray;\n\n/**\n * @fileoverview\n * This file exports various methods that implement Babel's \"automatic\" JSX runtime API:\n * - jsx(type, props, key)\n * - jsxs(type, props, key)\n * - jsxDEV(type, props, key, __source, __self)\n *\n * The implementation of createVNode here is optimized for performance.\n * Benchmarks: https://esbench.com/bench/5f6b54a0b4632100a7dcd2b3\n */\n\n/**\n * JSX.Element factory used by Babel's {runtime:\"automatic\"} JSX transform\n * @param {VNode['type']} type\n * @param {VNode['props']} props\n * @param {VNode['key']} [key]\n * @param {unknown} [isStaticChildren]\n * @param {unknown} [__source]\n * @param {unknown} [__self]\n */\nfunction createVNode(type, props, key, isStaticChildren, __source, __self) {\n\tif (!props) props = {};\n\t// We'll want to preserve `ref` in props to get rid of the need for\n\t// forwardRef components in the future, but that should happen via\n\t// a separate PR.\n\tlet normalizedProps = props,\n\t\tref,\n\t\ti;\n\n\tif ('ref' in normalizedProps) {\n\t\tnormalizedProps = {};\n\t\tfor (i in props) {\n\t\t\tif (i == 'ref') {\n\t\t\t\tref = props[i];\n\t\t\t} else {\n\t\t\t\tnormalizedProps[i] = props[i];\n\t\t\t}\n\t\t}\n\t}\n\n\t/** @type {VNode & { __source: any; __self: any }} */\n\tconst vnode = {\n\t\ttype,\n\t\tprops: normalizedProps,\n\t\tkey,\n\t\tref,\n\t\t_children: null,\n\t\t_parent: null,\n\t\t_depth: 0,\n\t\t_dom: null,\n\t\t_component: null,\n\t\tconstructor: undefined,\n\t\t_original: --vnodeId,\n\t\t_index: -1,\n\t\t_flags: 0,\n\t\t__source,\n\t\t__self\n\t};\n\n\t// If a Component VNode, check for and apply defaultProps.\n\t// Note: `type` is often a String, and can be `undefined` in development.\n\tif (typeof type === 'function' && (ref = type.defaultProps)) {\n\t\tfor (i in ref)\n\t\t\tif (normalizedProps[i] === undefined) {\n\t\t\t\tnormalizedProps[i] = ref[i];\n\t\t\t}\n\t}\n\n\tif (options.vnode) options.vnode(vnode);\n\treturn vnode;\n}\n\n/**\n * Create a template vnode. This function is not expected to be\n * used directly, but rather through a precompile JSX transform\n * @param {string[]} templates\n * @param {Array<string | null | VNode>} exprs\n * @returns {VNode}\n */\nfunction jsxTemplate(templates, ...exprs) {\n\tconst vnode = createVNode(Fragment, { tpl: templates, exprs });\n\t// Bypass render to string top level Fragment optimization\n\tvnode.key = vnode._vnode;\n\treturn vnode;\n}\n\nconst JS_TO_CSS = {};\nconst CSS_REGEX = /[A-Z]/g;\n\n/**\n * Unwrap potential signals.\n * @param {*} value\n * @returns {*}\n */\nfunction normalizeAttrValue(value) {\n\treturn value !== null &&\n\t\ttypeof value === 'object' &&\n\t\ttypeof value.valueOf === 'function'\n\t\t? value.valueOf()\n\t\t: value;\n}\n\n/**\n * Serialize an HTML attribute to a string. This function is not\n * expected to be used directly, but rather through a precompile\n * JSX transform\n * @param {string} name The attribute name\n * @param {*} value The attribute value\n * @returns {string}\n */\nfunction jsxAttr(name, value) {\n\tif (options.attr) {\n\t\tconst result = options.attr(name, value);\n\t\tif (typeof result === 'string') return result;\n\t}\n\n\tvalue = normalizeAttrValue(value);\n\n\tif (name === 'ref' || name === 'key') return '';\n\tif (name === 'style' && typeof value === 'object') {\n\t\tlet str = '';\n\t\tfor (let prop in value) {\n\t\t\tlet val = value[prop];\n\t\t\tif (val != null && val !== '') {\n\t\t\t\tconst name =\n\t\t\t\t\tprop[0] == '-'\n\t\t\t\t\t\t? prop\n\t\t\t\t\t\t: JS_TO_CSS[prop] ||\n\t\t\t\t\t\t\t(JS_TO_CSS[prop] = prop.replace(CSS_REGEX, '-$&').toLowerCase());\n\n\t\t\t\tlet suffix = ';';\n\t\t\t\tif (\n\t\t\t\t\ttypeof val === 'number' &&\n\t\t\t\t\t// Exclude custom-attributes\n\t\t\t\t\t!name.startsWith('--') &&\n\t\t\t\t\t!IS_NON_DIMENSIONAL.test(name)\n\t\t\t\t) {\n\t\t\t\t\tsuffix = 'px;';\n\t\t\t\t}\n\t\t\t\tstr = str + name + ':' + val + suffix;\n\t\t\t}\n\t\t}\n\t\treturn name + '=\"' + encodeEntities(str) + '\"';\n\t}\n\n\tif (\n\t\tvalue == null ||\n\t\tvalue === false ||\n\t\ttypeof value === 'function' ||\n\t\ttypeof value === 'object'\n\t) {\n\t\treturn '';\n\t} else if (value === true) return name;\n\n\treturn name + '=\"' + encodeEntities('' + value) + '\"';\n}\n\n/**\n * Escape a dynamic child passed to `jsxTemplate`. This function\n * is not expected to be used directly, but rather through a\n * precompile JSX transform\n * @param {*} value\n * @returns {string | null | VNode | Array<string | null | VNode>}\n */\nfunction jsxEscape(value) {\n\tif (\n\t\tvalue == null ||\n\t\ttypeof value === 'boolean' ||\n\t\ttypeof value === 'function'\n\t) {\n\t\treturn null;\n\t}\n\n\tif (typeof value === 'object') {\n\t\t// Check for VNode\n\t\tif (value.constructor === undefined) return value;\n\n\t\tif (isArray(value)) {\n\t\t\tfor (let i = 0; i < value.length; i++) {\n\t\t\t\tvalue[i] = jsxEscape(value[i]);\n\t\t\t}\n\t\t\treturn value;\n\t\t}\n\t}\n\n\treturn encodeEntities('' + value);\n}\n\nexport {\n\tcreateVNode as jsx,\n\tcreateVNode as jsxs,\n\tcreateVNode as jsxDEV,\n\tFragment,\n\t// precompiled JSX transform\n\tjsxTemplate,\n\tjsxAttr,\n\tjsxEscape\n};\n","import type {\n QuartzComponent,\n QuartzComponentConstructor,\n QuartzComponentProps,\n} from \"@quartz-community/types\";\nimport { classNames } from \"../util/lang\";\nimport { i18n } from \"../i18n\";\nimport style from \"./styles/graph.scss\";\n// @ts-expect-error - inline script imported as string by esbuild loader\nimport script from \"./scripts/graph.inline.ts\";\n\nexport interface D3Config {\n drag: boolean;\n zoom: boolean;\n depth: number;\n scale: number;\n repelForce: number;\n centerForce: number;\n linkDistance: number;\n fontSize: number;\n opacityScale: number;\n removeTags: string[];\n showTags: boolean;\n focusOnHover?: boolean;\n enableRadial?: boolean;\n}\n\nexport interface GraphOptions {\n localGraph?: Partial<D3Config>;\n globalGraph?: Partial<D3Config>;\n}\n\nconst defaultOptions: GraphOptions = {\n localGraph: {\n drag: true,\n zoom: true,\n depth: 1,\n scale: 1.1,\n repelForce: 0.5,\n centerForce: 0.3,\n linkDistance: 30,\n fontSize: 0.6,\n opacityScale: 1,\n showTags: true,\n removeTags: [],\n focusOnHover: false,\n enableRadial: false,\n },\n globalGraph: {\n drag: true,\n zoom: true,\n depth: -1,\n scale: 0.9,\n repelForce: 0.5,\n centerForce: 0.2,\n linkDistance: 30,\n fontSize: 0.6,\n opacityScale: 1,\n showTags: true,\n removeTags: [],\n focusOnHover: true,\n enableRadial: true,\n },\n};\n\nexport default ((userOpts?: Partial<GraphOptions>) => {\n const Graph: QuartzComponent = ({ displayClass, cfg }: QuartzComponentProps) => {\n const localGraph = { ...defaultOptions.localGraph, ...userOpts?.localGraph };\n const globalGraph = { ...defaultOptions.globalGraph, ...userOpts?.globalGraph };\n\n return (\n <div class={classNames(displayClass, \"graph\")}>\n <h3>{i18n(cfg.locale ?? \"en-US\").components.graph.title}</h3>\n <div class=\"graph-outer\">\n <div class=\"graph-container\" data-cfg={JSON.stringify(localGraph)}></div>\n <button class=\"global-graph-icon\" aria-label=\"Global Graph\">\n <svg\n version=\"1.1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n x=\"0px\"\n y=\"0px\"\n viewBox=\"0 0 55 55\"\n fill=\"currentColor\"\n xmlSpace=\"preserve\"\n >\n <path\n d=\"M49,0c-3.309,0-6,2.691-6,6c0,1.035,0.263,2.009,0.726,2.86l-9.829,9.829C32.542,17.634,30.846,17,29,17\n s-3.542,0.634-4.898,1.688l-7.669-7.669C16.785,10.424,17,9.74,17,9c0-2.206-1.794-4-4-4S9,6.794,9,9s1.794,4,4,4\n c0.74,0,1.424-0.215,2.019-0.567l7.669,7.669C21.634,21.458,21,23.154,21,25s0.634,3.542,1.688,4.897L10.024,42.562\n C8.958,41.595,7.549,41,6,41c-3.309,0-6,2.691-6,6s2.691,6,6,6s6-2.691,6-6c0-1.035-0.263-2.009-0.726-2.86l12.829-12.829\n c1.106,0.86,2.44,1.436,3.898,1.619v10.16c-2.833,0.478-5,2.942-5,5.91c0,3.309,2.691,6,6,6s6-2.691,6-6c0-2.967-2.167-5.431-5-5.91\n v-10.16c1.458-0.183,2.792-0.759,3.898-1.619l7.669,7.669C41.215,39.576,41,40.26,41,41c0,2.206,1.794,4,4,4s4-1.794,4-4\n s-1.794-4-4-4c-0.74,0-1.424,0.215-2.019,0.567l-7.669-7.669C36.366,28.542,37,26.846,37,25s-0.634-3.542-1.688-4.897l9.665-9.665\n C46.042,11.405,47.451,12,49,12c3.309,0,6-2.691,6-6S52.309,0,49,0z M11,9c0-1.103,0.897-2,2-2s2,0.897,2,2s-0.897,2-2,2\n S11,10.103,11,9z M6,51c-2.206,0-4-1.794-4-4s1.794-4,4-4s4,1.794,4,4S8.206,51,6,51z M33,49c0,2.206-1.794,4-4,4s-4-1.794-4-4\n s1.794-4,4-4S33,46.794,33,49z M29,31c-3.309,0-6-2.691-6-6s2.691-6,6-6s6,2.691,6,6S32.309,31,29,31z M47,41c0,1.103-0.897,2-2,2\n s-2-0.897-2-2s0.897-2,2-2S47,39.897,47,41z M49,10c-2.206,0-4-1.794-4-4s1.794-4,4-4s4,1.794,4,4S51.206,10,49,10z\"\n />\n </svg>\n </button>\n </div>\n <div class=\"global-graph-outer\">\n <div class=\"global-graph-container\" data-cfg={JSON.stringify(globalGraph)}></div>\n </div>\n </div>\n );\n };\n\n Graph.css = style;\n Graph.afterDOMLoaded = script;\n\n return Graph;\n}) satisfies QuartzComponentConstructor;\n"]}
1
+ {"version":3,"sources":["../../node_modules/@quartz-community/utils/src/lang.ts","../../src/i18n/locales/en-US.ts","../../src/i18n/locales/en-GB.ts","../../src/i18n/locales/ar-SA.ts","../../src/i18n/locales/ca-ES.ts","../../src/i18n/locales/cs-CZ.ts","../../src/i18n/locales/de-DE.ts","../../src/i18n/locales/es-ES.ts","../../src/i18n/locales/fa-IR.ts","../../src/i18n/locales/fi-FI.ts","../../src/i18n/locales/fr-FR.ts","../../src/i18n/locales/he-IL.ts","../../src/i18n/locales/hu-HU.ts","../../src/i18n/locales/id-ID.ts","../../src/i18n/locales/it-IT.ts","../../src/i18n/locales/ja-JP.ts","../../src/i18n/locales/kk-KZ.ts","../../src/i18n/locales/ko-KR.ts","../../src/i18n/locales/lt-LT.ts","../../src/i18n/locales/nb-NO.ts","../../src/i18n/locales/nl-NL.ts","../../src/i18n/locales/pl-PL.ts","../../src/i18n/locales/pt-BR.ts","../../src/i18n/locales/ro-RO.ts","../../src/i18n/locales/ru-RU.ts","../../src/i18n/locales/th-TH.ts","../../src/i18n/locales/tr-TR.ts","../../src/i18n/locales/uk-UA.ts","../../src/i18n/locales/vi-VN.ts","../../src/i18n/locales/zh-CN.ts","../../src/i18n/locales/zh-TW.ts","../../src/i18n/index.ts","../../src/components/styles/graph.scss","../../src/components/scripts/graph.inline.ts","../../node_modules/preact/src/constants.js","../../node_modules/preact/src/options.js","../../node_modules/preact/src/diff/catch-error.js","../../node_modules/preact/src/component.js","../../node_modules/preact/src/diff/props.js","../../node_modules/preact/src/create-context.js","../../node_modules/preact/jsx-runtime/src/index.js","../../src/components/Graph.tsx"],"names":["options","__e","error","vnode","oldVNode","errorInfo","component","ctor","handled","__","__c","constructor","getDerivedStateFromError","setState","__d","componentDidCatch","__E","e","Promise","prototype","then","bind","resolve","setTimeout","Math","random","toString","vnodeId","createVNode","type","props","key","isStaticChildren","__source","__self","ref","i","normalizedProps","__k","__b","__v","__i","__u","defaultProps","u"],"mappings":";AAIO,SAAS,cAAc,OAAA,EAAwD;AACpF,EAAA,OAAO,OAAA,CAAQ,MAAA,CAAO,OAAO,CAAA,CAAE,KAAK,GAAG,CAAA;AACzC;;;ACNA,IAAO,aAAA,GAAQ;AAAA,EACb,UAAA,EAAY;AAAA,IACV,KAAA,EAAO;AAAA,MACL,KAAA,EAAO;AAAA;AACT;AAEJ,CAAA;;;ACNA,IAAO,aAAA,GAAQ;AAAA,EACb,UAAA,EAAY;AAAA,IACV,KAAA,EAAO;AAAA,MACL,KAAA,EAAO;AAAA;AACT;AAEJ,CAAA;;;ACNA,IAAO,aAAA,GAAQ;AAAA,EACb,UAAA,EAAY;AAAA,IACV,KAAA,EAAO;AAAA,MACL,KAAA,EAAO;AAAA;AACT;AAEJ,CAAA;;;ACNA,IAAO,aAAA,GAAQ;AAAA,EACb,UAAA,EAAY;AAAA,IACV,KAAA,EAAO;AAAA,MACL,KAAA,EAAO;AAAA;AACT;AAEJ,CAAA;;;ACNA,IAAO,aAAA,GAAQ;AAAA,EACb,UAAA,EAAY;AAAA,IACV,KAAA,EAAO;AAAA,MACL,KAAA,EAAO;AAAA;AACT;AAEJ,CAAA;;;ACNA,IAAO,aAAA,GAAQ;AAAA,EACb,UAAA,EAAY;AAAA,IACV,KAAA,EAAO;AAAA,MACL,KAAA,EAAO;AAAA;AACT;AAEJ,CAAA;;;ACNA,IAAO,aAAA,GAAQ;AAAA,EACb,UAAA,EAAY;AAAA,IACV,KAAA,EAAO;AAAA,MACL,KAAA,EAAO;AAAA;AACT;AAEJ,CAAA;;;ACNA,IAAO,aAAA,GAAQ;AAAA,EACb,UAAA,EAAY;AAAA,IACV,KAAA,EAAO;AAAA,MACL,KAAA,EAAO;AAAA;AACT;AAEJ,CAAA;;;ACNA,IAAO,aAAA,GAAQ;AAAA,EACb,UAAA,EAAY;AAAA,IACV,KAAA,EAAO;AAAA,MACL,KAAA,EAAO;AAAA;AACT;AAEJ,CAAA;;;ACNA,IAAO,aAAA,GAAQ;AAAA,EACb,UAAA,EAAY;AAAA,IACV,KAAA,EAAO;AAAA,MACL,KAAA,EAAO;AAAA;AACT;AAEJ,CAAA;;;ACNA,IAAO,aAAA,GAAQ;AAAA,EACb,UAAA,EAAY;AAAA,IACV,KAAA,EAAO;AAAA,MACL,KAAA,EAAO;AAAA;AACT;AAEJ,CAAA;;;ACNA,IAAO,aAAA,GAAQ;AAAA,EACb,UAAA,EAAY;AAAA,IACV,KAAA,EAAO;AAAA,MACL,KAAA,EAAO;AAAA;AACT;AAEJ,CAAA;;;ACNA,IAAO,aAAA,GAAQ;AAAA,EACb,UAAA,EAAY;AAAA,IACV,KAAA,EAAO;AAAA,MACL,KAAA,EAAO;AAAA;AACT;AAEJ,CAAA;;;ACNA,IAAO,aAAA,GAAQ;AAAA,EACb,UAAA,EAAY;AAAA,IACV,KAAA,EAAO;AAAA,MACL,KAAA,EAAO;AAAA;AACT;AAEJ,CAAA;;;ACNA,IAAO,aAAA,GAAQ;AAAA,EACb,UAAA,EAAY;AAAA,IACV,KAAA,EAAO;AAAA,MACL,KAAA,EAAO;AAAA;AACT;AAEJ,CAAA;;;ACNA,IAAO,aAAA,GAAQ;AAAA,EACb,UAAA,EAAY;AAAA,IACV,KAAA,EAAO;AAAA,MACL,KAAA,EAAO;AAAA;AACT;AAEJ,CAAA;;;ACNA,IAAO,aAAA,GAAQ;AAAA,EACb,UAAA,EAAY;AAAA,IACV,KAAA,EAAO;AAAA,MACL,KAAA,EAAO;AAAA;AACT;AAEJ,CAAA;;;ACNA,IAAO,aAAA,GAAQ;AAAA,EACb,UAAA,EAAY;AAAA,IACV,KAAA,EAAO;AAAA,MACL,KAAA,EAAO;AAAA;AACT;AAEJ,CAAA;;;ACNA,IAAO,aAAA,GAAQ;AAAA,EACb,UAAA,EAAY;AAAA,IACV,KAAA,EAAO;AAAA,MACL,KAAA,EAAO;AAAA;AACT;AAEJ,CAAA;;;ACNA,IAAO,aAAA,GAAQ;AAAA,EACb,UAAA,EAAY;AAAA,IACV,KAAA,EAAO;AAAA,MACL,KAAA,EAAO;AAAA;AACT;AAEJ,CAAA;;;ACNA,IAAO,aAAA,GAAQ;AAAA,EACb,UAAA,EAAY;AAAA,IACV,KAAA,EAAO;AAAA,MACL,KAAA,EAAO;AAAA;AACT;AAEJ,CAAA;;;ACNA,IAAO,aAAA,GAAQ;AAAA,EACb,UAAA,EAAY;AAAA,IACV,KAAA,EAAO;AAAA,MACL,KAAA,EAAO;AAAA;AACT;AAEJ,CAAA;;;ACNA,IAAO,aAAA,GAAQ;AAAA,EACb,UAAA,EAAY;AAAA,IACV,KAAA,EAAO;AAAA,MACL,KAAA,EAAO;AAAA;AACT;AAEJ,CAAA;;;ACNA,IAAO,aAAA,GAAQ;AAAA,EACb,UAAA,EAAY;AAAA,IACV,KAAA,EAAO;AAAA,MACL,KAAA,EAAO;AAAA;AACT;AAEJ,CAAA;;;ACNA,IAAO,aAAA,GAAQ;AAAA,EACb,UAAA,EAAY;AAAA,IACV,KAAA,EAAO;AAAA,MACL,KAAA,EAAO;AAAA;AACT;AAEJ,CAAA;;;ACNA,IAAO,aAAA,GAAQ;AAAA,EACb,UAAA,EAAY;AAAA,IACV,KAAA,EAAO;AAAA,MACL,KAAA,EAAO;AAAA;AACT;AAEJ,CAAA;;;ACNA,IAAO,aAAA,GAAQ;AAAA,EACb,UAAA,EAAY;AAAA,IACV,KAAA,EAAO;AAAA,MACL,KAAA,EAAO;AAAA;AACT;AAEJ,CAAA;;;ACNA,IAAO,aAAA,GAAQ;AAAA,EACb,UAAA,EAAY;AAAA,IACV,KAAA,EAAO;AAAA,MACL,KAAA,EAAO;AAAA;AACT;AAEJ,CAAA;;;ACNA,IAAO,aAAA,GAAQ;AAAA,EACb,UAAA,EAAY;AAAA,IACV,KAAA,EAAO;AAAA,MACL,KAAA,EAAO;AAAA;AACT;AAEJ,CAAA;;;ACNA,IAAO,aAAA,GAAQ;AAAA,EACb,UAAA,EAAY;AAAA,IACV,KAAA,EAAO;AAAA,MACL,KAAA,EAAO;AAAA;AACT;AAEJ,CAAA;;;ACyBA,IAAM,OAAA,GAAuC;AAAA,EAC3C,OAAA,EAAS,aAAA;AAAA,EACT,OAAA,EAAS,aAAA;AAAA,EACT,OAAA,EAAS,aAAA;AAAA,EACT,OAAA,EAAS,aAAA;AAAA,EACT,OAAA,EAAS,aAAA;AAAA,EACT,OAAA,EAAS,aAAA;AAAA,EACT,OAAA,EAAS,aAAA;AAAA,EACT,OAAA,EAAS,aAAA;AAAA,EACT,OAAA,EAAS,aAAA;AAAA,EACT,OAAA,EAAS,aAAA;AAAA,EACT,OAAA,EAAS,aAAA;AAAA,EACT,OAAA,EAAS,aAAA;AAAA,EACT,OAAA,EAAS,aAAA;AAAA,EACT,OAAA,EAAS,aAAA;AAAA,EACT,OAAA,EAAS,aAAA;AAAA,EACT,OAAA,EAAS,aAAA;AAAA,EACT,OAAA,EAAS,aAAA;AAAA,EACT,OAAA,EAAS,aAAA;AAAA,EACT,OAAA,EAAS,aAAA;AAAA,EACT,OAAA,EAAS,aAAA;AAAA,EACT,OAAA,EAAS,aAAA;AAAA,EACT,OAAA,EAAS,aAAA;AAAA,EACT,OAAA,EAAS,aAAA;AAAA,EACT,OAAA,EAAS,aAAA;AAAA,EACT,OAAA,EAAS,aAAA;AAAA,EACT,OAAA,EAAS,aAAA;AAAA,EACT,OAAA,EAAS,aAAA;AAAA,EACT,OAAA,EAAS,aAAA;AAAA,EACT,OAAA,EAAS,aAAA;AAAA,EACT,OAAA,EAAS;AACX,CAAA;AAEO,SAAS,KAAK,MAAA,EAAgB;AACnC,EAAA,OAAO,OAAA,CAAQ,MAAM,CAAA,IAAK,aAAA;AAC5B;;;AClEA,IAAA,aAAA,GAAA,q7CAAA;;;ACAA,IAAA,oBAAA,GAAA,CAAA;AAAA,CAAA;ACCO,ICUDA,CAAAA;AAAAA,CAAAA,GAAU,EACfC,KCDM,SAAqBC,EAAAA,EAAOC,EAAAA,EAAOC,EAAAA,EAAUC,EAAAA,EAAAA;AAQnD,EAAA,KAAA,IANIC,EAAAA,EAEHC,EAAAA,EAEAC,EAAAA,EAEOL,EAAAA,GAAQA,EAAAA,CAAKM,EAAAA,IACpB,IAAA,CAAKH,EAAAA,GAAYH,EAAAA,CAAKO,GAAAA,KAAAA,CAAiBJ,EAAAA,CAASG,IAC/C,IAAA;AAcC,IAAA,IAAA,CAbAF,EAAAA,GAAOD,EAAAA,CAAUK,WAAAA,KFND,IAAA,IEQJJ,GAAKK,wBAAAA,KAChBN,EAAAA,CAAUO,QAAAA,CAASN,EAAAA,CAAKK,wBAAAA,CAAyBV,EAAAA,CAAAA,CAAAA,EACjDM,KAAUF,EAAAA,CAASQ,GAAAA,CAAAA,EFVJ,IAAA,IEaZR,EAAAA,CAAUS,iBAAAA,KACbT,EAAAA,CAAUS,iBAAAA,CAAkBb,EAAAA,EAAOG,MAAa,EAAE,CAAA,EAClDG,EAAAA,GAAUF,EAAAA,CAASQ,GAAAA,CAAAA,EAIhBN,EAAAA,EACH,OAAQF,GAASU,GAAAA,GAAiBV,EAAAA;AAIpC,EAAA,CAAA,CAAA,OAFSW,EAAAA,EAAAA;AACRf,IAAAA,EAAAA,GAAQe,EAAAA;AACT,EAAA;AAIF,EAAA,MAAMf,EAAAA;AACP,CAAA,EAAA,ECiJmB,UAAA,IAAA,OAAXgB,OAAAA,GACJA,QAAQC,SAAAA,CAAUC,IAAAA,CAAKC,IAAAA,CAAKH,OAAAA,CAAQI,OAAAA,EAAAA,IACpCC,UAAAA,ECtLMC,IAAAA,CAAKC,MAAAA,EAAAA,CAASC,QAAAA,CAAS,CAAA,CCPlB;;;ALiBF,IMhBTC,EAAAA,GAAU,CAAA;AAwBd,SAASC,GAAYC,EAAAA,EAAMC,EAAAA,EAAOC,EAAAA,EAAKC,EAAAA,EAAkBC,IAAUC,EAAAA,EAAAA;AAC7DJ,EAAAA,EAAAA,KAAOA,KAAQ,EAAA,CAAA;AAIpB,EAAA,IACCK,EAAAA,EACAC,IAFGC,EAAAA,GAAkBP,EAAAA;AAItB,EAAA,IAAI,SAASO,EAAAA,EAEZ,KAAKD,MADLC,EAAAA,GAAkB,IACRP,EAAAA,EACA,KAAA,IAALM,EAAAA,GACHD,EAAAA,GAAML,GAAMM,EAAAA,CAAAA,GAEZC,GAAgBD,EAAAA,CAAAA,GAAKN,GAAMM,EAAAA,CAAAA;AAM9B,EAAA,IAAMjC,EAAAA,GAAQ,EACb0B,IAAAA,EAAAA,EAAAA,EACAC,OAAOO,EAAAA,EACPN,GAAAA,EAAAA,EAAAA,EACAI,GAAAA,EAAAA,EAAAA,EACAG,GAAAA,EAAW,IAAA,EACX7B,EAAAA,EAAS,MACT8B,GAAAA,EAAQ,CAAA,EACRtC,GAAAA,EAAM,IAAA,EACNS,GAAAA,EAAY,IAAA,EACZC,WAAAA,EAAAA,MAAAA,EACA6B,KAAAA,EAAab,EAAAA,EACbc,GAAAA,EAAAA,EAAAA,EACAC,GAAAA,EAAQ,CAAA,EACRT,QAAAA,EAAAA,EAAAA,EACAC,QAAAA,EAAAA,EAAAA;AAKD,EAAA,IAAoB,cAAA,OAATL,EAAAA,KAAwBM,EAAAA,GAAMN,EAAAA,CAAKc,eAC7C,KAAKP,EAAAA,IAAKD,EAAAA,EAAAA,MAAAA,KACLE,GAAgBD,EAAAA,CAAAA,KACnBC,GAAgBD,EAAAA,CAAAA,GAAKD,GAAIC,EAAAA,CAAAA,CAAAA;AAK5B,EAAA,OADIpC,CAAAA,CAAQG,KAAAA,IAAOH,CAAAA,CAAQG,KAAAA,CAAMA,EAAAA,CAAAA,EAC1BA,EAAAA;AACR;;;AC9CA,IAAM,cAAA,GAA+B;AAAA,EACnC,UAAA,EAAY;AAAA,IACV,IAAA,EAAM,IAAA;AAAA,IACN,IAAA,EAAM,IAAA;AAAA,IACN,KAAA,EAAO,CAAA;AAAA,IACP,KAAA,EAAO,GAAA;AAAA,IACP,UAAA,EAAY,GAAA;AAAA,IACZ,WAAA,EAAa,GAAA;AAAA,IACb,YAAA,EAAc,EAAA;AAAA,IACd,QAAA,EAAU,GAAA;AAAA,IACV,YAAA,EAAc,CAAA;AAAA,IACd,QAAA,EAAU,IAAA;AAAA,IACV,YAAY,EAAC;AAAA,IACb,YAAA,EAAc,KAAA;AAAA,IACd,YAAA,EAAc;AAAA,GAChB;AAAA,EACA,WAAA,EAAa;AAAA,IACX,IAAA,EAAM,IAAA;AAAA,IACN,IAAA,EAAM,IAAA;AAAA,IACN,KAAA,EAAO,EAAA;AAAA,IACP,KAAA,EAAO,GAAA;AAAA,IACP,UAAA,EAAY,GAAA;AAAA,IACZ,WAAA,EAAa,GAAA;AAAA,IACb,YAAA,EAAc,EAAA;AAAA,IACd,QAAA,EAAU,GAAA;AAAA,IACV,YAAA,EAAc,CAAA;AAAA,IACd,QAAA,EAAU,IAAA;AAAA,IACV,YAAY,EAAC;AAAA,IACb,YAAA,EAAc,IAAA;AAAA,IACd,YAAA,EAAc;AAAA;AAElB,CAAA;AAEA,IAAO,aAAA,IAAS,CAAC,QAAA,KAAqC;AACpD,EAAA,MAAM,KAAA,GAAyB,CAAC,EAAE,YAAA,EAAc,KAAI,KAA4B;AAC9E,IAAA,MAAM,aAAa,EAAE,GAAG,eAAe,UAAA,EAAY,GAAG,UAAU,UAAA,EAAW;AAC3E,IAAA,MAAM,cAAc,EAAE,GAAG,eAAe,WAAA,EAAa,GAAG,UAAU,WAAA,EAAY;AAE9E,IAAA,uBACEyC,EAAAA,CAAC,KAAA,EAAA,EAAI,OAAO,UAAA,CAAW,YAAA,EAAc,OAAO,CAAA,EAC1C,QAAA,EAAA;AAAA,sBAAAA,EAAAA,CAAC,QAAI,QAAA,EAAA,IAAA,CAAK,GAAA,CAAI,UAAU,OAAO,CAAA,CAAE,UAAA,CAAW,KAAA,CAAM,KAAA,EAAM,CAAA;AAAA,sBACxDA,EAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAM,aAAA,EACT,QAAA,EAAA;AAAA,wBAAAA,EAAAA,CAAC,SAAI,KAAA,EAAM,iBAAA,EAAkB,YAAU,IAAA,CAAK,SAAA,CAAU,UAAU,CAAA,EAAG,CAAA;AAAA,wBACnEA,EAAAA,CAAC,QAAA,EAAA,EAAO,OAAM,mBAAA,EAAoB,YAAA,EAAW,gBAC3C,QAAA,kBAAAA,EAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAQ,KAAA;AAAA,YACR,KAAA,EAAM,4BAAA;AAAA,YACN,UAAA,EAAW,8BAAA;AAAA,YACX,CAAA,EAAE,KAAA;AAAA,YACF,CAAA,EAAE,KAAA;AAAA,YACF,OAAA,EAAQ,WAAA;AAAA,YACR,IAAA,EAAK,cAAA;AAAA,YACL,QAAA,EAAS,UAAA;AAAA,YAET,QAAA,kBAAAA,EAAAA;AAAA,cAAC,MAAA;AAAA,cAAA;AAAA,gBACC,CAAA,EAAE;AAAA;AAAA;AAWJ;AAAA,SACF,EACF;AAAA,OAAA,EACF,CAAA;AAAA,sBACAA,EAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAM,sBACT,QAAA,kBAAAA,EAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAM,0BAAyB,UAAA,EAAU,IAAA,CAAK,SAAA,CAAU,WAAW,GAAG,CAAA,EAC7E;AAAA,KAAA,EACF,CAAA;AAAA,EAEJ,CAAA;AAEA,EAAA,KAAA,CAAM,GAAA,GAAM,aAAA;AACZ,EAAA,KAAA,CAAM,cAAA,GAAiB,oBAAA;AAEvB,EAAA,OAAO,KAAA;AACT,CAAA","file":"index.js","sourcesContent":["export function capitalize(s: string): string {\n return s.substring(0, 1).toUpperCase() + s.substring(1);\n}\n\nexport function classNames(...classes: (string | undefined | null | false)[]): string {\n return classes.filter(Boolean).join(\" \");\n}\n","export default {\n components: {\n graph: {\n title: \"Graph View\",\n },\n },\n};\n","export default {\n components: {\n graph: {\n title: \"Graph View\",\n },\n },\n};\n","export default {\n components: {\n graph: {\n title: \"التمثيل التفاعلي\",\n },\n },\n};\n","export default {\n components: {\n graph: {\n title: \"Vista Gràfica\",\n },\n },\n};\n","export default {\n components: {\n graph: {\n title: \"Graf\",\n },\n },\n};\n","export default {\n components: {\n graph: {\n title: \"Graphansicht\",\n },\n },\n};\n","export default {\n components: {\n graph: {\n title: \"Vista Gráfica\",\n },\n },\n};\n","export default {\n components: {\n graph: {\n title: \"نمای گراف\",\n },\n },\n};\n","export default {\n components: {\n graph: {\n title: \"Verkkonäkymä\",\n },\n },\n};\n","export default {\n components: {\n graph: {\n title: \"Vue graphique\",\n },\n },\n};\n","export default {\n components: {\n graph: {\n title: \"מבט גרף\",\n },\n },\n};\n","export default {\n components: {\n graph: {\n title: \"Grafikonnézet\",\n },\n },\n};\n","export default {\n components: {\n graph: {\n title: \"Tampilan Grafik\",\n },\n },\n};\n","export default {\n components: {\n graph: {\n title: \"Vista grafico\",\n },\n },\n};\n","export default {\n components: {\n graph: {\n title: \"グラフビュー\",\n },\n },\n};\n","export default {\n components: {\n graph: {\n title: \"Граф көрінісі\",\n },\n },\n};\n","export default {\n components: {\n graph: {\n title: \"그래프 뷰\",\n },\n },\n};\n","export default {\n components: {\n graph: {\n title: \"Grafiko Vaizdas\",\n },\n },\n};\n","export default {\n components: {\n graph: {\n title: \"Graf-visning\",\n },\n },\n};\n","export default {\n components: {\n graph: {\n title: \"Grafiekweergave\",\n },\n },\n};\n","export default {\n components: {\n graph: {\n title: \"Graf\",\n },\n },\n};\n","export default {\n components: {\n graph: {\n title: \"Visão de gráfico\",\n },\n },\n};\n","export default {\n components: {\n graph: {\n title: \"Graf\",\n },\n },\n};\n","export default {\n components: {\n graph: {\n title: \"Вид графа\",\n },\n },\n};\n","export default {\n components: {\n graph: {\n title: \"มุมมองกราฟ\",\n },\n },\n};\n","export default {\n components: {\n graph: {\n title: \"Grafik Görünümü\",\n },\n },\n};\n","export default {\n components: {\n graph: {\n title: \"Вигляд графа\",\n },\n },\n};\n","export default {\n components: {\n graph: {\n title: \"Sơ đồ\",\n },\n },\n};\n","export default {\n components: {\n graph: {\n title: \"关系图谱\",\n },\n },\n};\n","export default {\n components: {\n graph: {\n title: \"關係圖譜\",\n },\n },\n};\n","import enUS from \"./locales/en-US\";\nimport enGB from \"./locales/en-GB\";\nimport arSA from \"./locales/ar-SA\";\nimport caES from \"./locales/ca-ES\";\nimport csCZ from \"./locales/cs-CZ\";\nimport deDE from \"./locales/de-DE\";\nimport esES from \"./locales/es-ES\";\nimport faIR from \"./locales/fa-IR\";\nimport fiFI from \"./locales/fi-FI\";\nimport frFR from \"./locales/fr-FR\";\nimport heIL from \"./locales/he-IL\";\nimport huHU from \"./locales/hu-HU\";\nimport idID from \"./locales/id-ID\";\nimport itIT from \"./locales/it-IT\";\nimport jaJP from \"./locales/ja-JP\";\nimport kkKZ from \"./locales/kk-KZ\";\nimport koKR from \"./locales/ko-KR\";\nimport ltLT from \"./locales/lt-LT\";\nimport nbNO from \"./locales/nb-NO\";\nimport nlNL from \"./locales/nl-NL\";\nimport plPL from \"./locales/pl-PL\";\nimport ptBR from \"./locales/pt-BR\";\nimport roRO from \"./locales/ro-RO\";\nimport ruRU from \"./locales/ru-RU\";\nimport thTH from \"./locales/th-TH\";\nimport trTR from \"./locales/tr-TR\";\nimport ukUA from \"./locales/uk-UA\";\nimport viVN from \"./locales/vi-VN\";\nimport zhCN from \"./locales/zh-CN\";\nimport zhTW from \"./locales/zh-TW\";\n\nconst locales: Record<string, typeof enUS> = {\n \"en-US\": enUS,\n \"en-GB\": enGB,\n \"ar-SA\": arSA,\n \"ca-ES\": caES,\n \"cs-CZ\": csCZ,\n \"de-DE\": deDE,\n \"es-ES\": esES,\n \"fa-IR\": faIR,\n \"fi-FI\": fiFI,\n \"fr-FR\": frFR,\n \"he-IL\": heIL,\n \"hu-HU\": huHU,\n \"id-ID\": idID,\n \"it-IT\": itIT,\n \"ja-JP\": jaJP,\n \"kk-KZ\": kkKZ,\n \"ko-KR\": koKR,\n \"lt-LT\": ltLT,\n \"nb-NO\": nbNO,\n \"nl-NL\": nlNL,\n \"pl-PL\": plPL,\n \"pt-BR\": ptBR,\n \"ro-RO\": roRO,\n \"ru-RU\": ruRU,\n \"th-TH\": thTH,\n \"tr-TR\": trTR,\n \"uk-UA\": ukUA,\n \"vi-VN\": viVN,\n \"zh-CN\": zhCN,\n \"zh-TW\": zhTW,\n};\n\nexport function i18n(locale: string) {\n return locales[locale] || enUS;\n}\n",".graph > h3 {\n font-size: 1rem;\n margin: 0;\n}\n.graph > .graph-outer {\n border-radius: 5px;\n border: 1px solid var(--lightgray);\n box-sizing: border-box;\n height: 250px;\n margin: 0.5em 0;\n position: relative;\n overflow: hidden;\n}\n.graph > .graph-outer > .global-graph-icon {\n cursor: pointer;\n background: none;\n border: none;\n color: var(--dark);\n opacity: 0.5;\n width: 24px;\n height: 24px;\n position: absolute;\n padding: 0.2rem;\n margin: 0.3rem;\n top: 0;\n right: 0;\n border-radius: 4px;\n background-color: transparent;\n transition: background-color 0.5s ease;\n}\n.graph > .graph-outer > .global-graph-icon:hover {\n background-color: var(--lightgray);\n}\n.graph > .global-graph-outer {\n position: fixed;\n z-index: 9999;\n left: 0;\n top: 0;\n width: 100vw;\n height: 100%;\n backdrop-filter: blur(4px);\n display: none;\n overflow: hidden;\n}\n.graph > .global-graph-outer.active {\n display: inline-block;\n}\n.graph > .global-graph-outer > .global-graph-container {\n border: 1px solid var(--lightgray);\n background-color: var(--light);\n border-radius: 5px;\n box-sizing: border-box;\n position: fixed;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n height: 80vh;\n width: 80vw;\n}\n@media all and (max-width: 800px) {\n .graph > .global-graph-outer > .global-graph-container {\n width: 90%;\n }\n}\n\n.graph-container {\n width: 100%;\n height: 100%;\n}","var Ct=Object.hasOwnProperty;var he,y,pe,tt,X,Fe,Ce,ve,Mu,Bu,du,Ee,Gu,Ru,Ou,rt,Ae={},bu=[],nt=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,Su=Array.isArray;function V(u,e){for(var r in e)u[r]=e[r];return u}function Iu(u){u&&u.parentNode&&u.parentNode.removeChild(u)}function Uu(u,e,r,o,a){var n={type:u,props:e,key:r,ref:o,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:a??++pe,__i:-1,__u:0};return a==null&&y.vnode!=null&&y.vnode(n),n}function su(u){return u.children}function yu(u,e){this.props=u,this.context=e}function lu(u,e){if(e==null)return u.__?lu(u.__,u.__i+1):null;for(var r;e<u.__k.length;e++)if((r=u.__k[e])!=null&&r.__e!=null)return r.__e;return typeof u.type==\"function\"?lu(u):null}function ot(u){if(u.__P&&u.__d){var e=u.__v,r=e.__e,o=[],a=[],n=V({},e);n.__v=e.__v+1,y.vnode&&y.vnode(n),ye(u.__P,n,e,u.__n,u.__P.namespaceURI,32&e.__u?[r]:null,o,r??lu(e),!!(32&e.__u),a),n.__v=e.__v,n.__.__k[n.__i]=n,Dt(o,n,a),e.__e=e.__=null,n.__e!=r&&ge(n)}}function ge(u){if((u=u.__)!=null&&u.__c!=null)return u.__e=u.__c.base=null,u.__k.some(function(e){if(e!=null&&e.__e!=null)return u.__e=u.__c.base=e.__e}),ge(u)}function fe(u){(!u.__d&&(u.__d=!0)&&X.push(u)&&!xu.__r++||Fe!=y.debounceRendering)&&((Fe=y.debounceRendering)||Ce)(xu)}function xu(){try{for(var u,e=1;X.length;)X.length>e&&X.sort(ve),u=X.shift(),e=X.length,ot(u)}finally{X.length=xu.__r=0}}function me(u,e,r,o,a,n,s,c,h,D,d){var b,t,f,m,x,B,E,p=o&&o.__k||bu,L=e.length;for(h=at(r,e,p,h,L),b=0;b<L;b++)(f=r.__k[b])!=null&&(t=f.__i!=-1&&p[f.__i]||Ae,f.__i=b,B=ye(u,f,t,a,n,s,c,h,D,d),m=f.__e,f.ref&&t.ref!=f.ref&&(t.ref&&zu(t.ref,null,f),d.push(f.ref,f.__c||m,f)),x==null&&m!=null&&(x=m),(E=!!(4&f.__u))||t.__k===f.__k?(h=Be(f,h,u,E),E&&t.__e&&(t.__e=null)):typeof f.type==\"function\"&&B!==void 0?h=B:m&&(h=m.nextSibling),f.__u&=-7);return r.__e=x,h}function at(u,e,r,o,a){var n,s,c,h,D,d=r.length,b=d,t=0;for(u.__k=new Array(a),n=0;n<a;n++)(s=e[n])!=null&&typeof s!=\"boolean\"&&typeof s!=\"function\"?(typeof s==\"string\"||typeof s==\"number\"||typeof s==\"bigint\"||s.constructor==String?s=u.__k[n]=Uu(null,s,null,null,null):Su(s)?s=u.__k[n]=Uu(su,{children:s},null,null,null):s.constructor===void 0&&s.__b>0?s=u.__k[n]=Uu(s.type,s.props,s.key,s.ref?s.ref:null,s.__v):u.__k[n]=s,h=n+t,s.__=u,s.__b=u.__b+1,c=null,(D=s.__i=it(s,r,h,b))!=-1&&(b--,(c=r[D])&&(c.__u|=2)),c==null||c.__v==null?(D==-1&&(a>d?t--:a<d&&t++),typeof s.type!=\"function\"&&(s.__u|=4)):D!=h&&(D==h-1?t--:D==h+1?t++:(D>h?t--:t++,s.__u|=4))):u.__k[n]=null;if(b)for(n=0;n<d;n++)(c=r[n])!=null&&(2&c.__u)==0&&(c.__e==o&&(o=lu(c)),Se(c,c));return o}function Be(u,e,r,o){var a,n;if(typeof u.type==\"function\"){for(a=u.__k,n=0;a&&n<a.length;n++)a[n]&&(a[n].__=u,e=Be(a[n],e,r,o));return e}u.__e!=e&&(o&&(e&&u.type&&!e.parentNode&&(e=lu(u)),r.insertBefore(u.__e,e||null)),e=u.__e);do e=e&&e.nextSibling;while(e!=null&&e.nodeType==8);return e}function it(u,e,r,o){var a,n,s,c=u.key,h=u.type,D=e[r],d=D!=null&&(2&D.__u)==0;if(D===null&&c==null||d&&c==D.key&&h==D.type)return r;if(o>(d?1:0)){for(a=r-1,n=r+1;a>=0||n<e.length;)if((D=e[s=a>=0?a--:n++])!=null&&(2&D.__u)==0&&c==D.key&&h==D.type)return s}return-1}function _e(u,e,r){e[0]==\"-\"?u.setProperty(e,r??\"\"):u[e]=r==null?\"\":typeof r!=\"number\"||nt.test(e)?r:r+\"px\"}function mu(u,e,r,o,a){var n,s;u:if(e==\"style\")if(typeof r==\"string\")u.style.cssText=r;else{if(typeof o==\"string\"&&(u.style.cssText=o=\"\"),o)for(e in o)r&&e in r||_e(u.style,e,\"\");if(r)for(e in r)o&&r[e]==o[e]||_e(u.style,e,r[e])}else if(e[0]==\"o\"&&e[1]==\"n\")n=e!=(e=e.replace(Ee,\"$1\")),s=e.toLowerCase(),e=s in u||e==\"onFocusOut\"||e==\"onFocusIn\"?s.slice(2):e.slice(2),u.l||(u.l={}),u.l[e+n]=r,r?o?r[du]=o[du]:(r[du]=Gu,u.addEventListener(e,n?Ou:Ru,n)):u.removeEventListener(e,n?Ou:Ru,n);else{if(a==\"http://www.w3.org/2000/svg\")e=e.replace(/xlink(H|:h)/,\"h\").replace(/sName$/,\"s\");else if(e!=\"width\"&&e!=\"height\"&&e!=\"href\"&&e!=\"list\"&&e!=\"form\"&&e!=\"tabIndex\"&&e!=\"download\"&&e!=\"rowSpan\"&&e!=\"colSpan\"&&e!=\"role\"&&e!=\"popover\"&&e in u)try{u[e]=r??\"\";break u}catch{}typeof r==\"function\"||(r==null||r===!1&&e[4]!=\"-\"?u.removeAttribute(e):u.setAttribute(e,e==\"popover\"&&r==1?\"\":r))}}function de(u){return function(e){if(this.l){var r=this.l[e.type+u];if(e[Bu]==null)e[Bu]=Gu++;else if(e[Bu]<r[du])return;return r(y.event?y.event(e):e)}}}function ye(u,e,r,o,a,n,s,c,h,D){var d,b,t,f,m,x,B,E,p,L,H,M,N,Fu,Y,q,R=e.type;if(e.constructor!==void 0)return null;128&r.__u&&(h=!!(32&r.__u),n=[c=e.__e=r.__e]),(d=y.__b)&&d(e);u:if(typeof R==\"function\"){b=s.length;try{if(p=e.props,L=R.prototype&&R.prototype.render,H=(d=R.contextType)&&o[d.__c],M=d?H?H.props.value:d.__:o,r.__c?E=(t=e.__c=r.__c).__=t.__E:(L?e.__c=t=new R(p,M):(e.__c=t=new yu(p,M),t.constructor=R,t.render=st),H&&H.sub(t),t.state||(t.state={}),t.__n=o,f=t.__d=!0,t.__h=[],t._sb=[]),L&&t.__s==null&&(t.__s=t.state),L&&R.getDerivedStateFromProps!=null&&(t.__s==t.state&&(t.__s=V({},t.__s)),V(t.__s,R.getDerivedStateFromProps(p,t.__s))),m=t.props,x=t.state,t.__v=e,f)L&&R.getDerivedStateFromProps==null&&t.componentWillMount!=null&&t.componentWillMount(),L&&t.componentDidMount!=null&&t.__h.push(t.componentDidMount);else{if(L&&R.getDerivedStateFromProps==null&&p!==m&&t.componentWillReceiveProps!=null&&t.componentWillReceiveProps(p,M),e.__v==r.__v||!t.__e&&t.shouldComponentUpdate!=null&&t.shouldComponentUpdate(p,t.__s,M)===!1){e.__v!=r.__v&&(t.props=p,t.state=t.__s,t.__d=!1),e.__e=r.__e,e.__k=r.__k,e.__k.some(function(_){_&&(_.__=e)}),bu.push.apply(t.__h,t._sb),t._sb=[],t.__h.length&&s.push(t);break u}t.componentWillUpdate!=null&&t.componentWillUpdate(p,t.__s,M),L&&t.componentDidUpdate!=null&&t.__h.push(function(){t.componentDidUpdate(m,x,B)})}if(t.context=M,t.props=p,t.__P=u,t.__e=!1,N=y.__r,Fu=0,L)t.state=t.__s,t.__d=!1,N&&N(e),d=t.render(t.props,t.state,t.context),bu.push.apply(t.__h,t._sb),t._sb=[];else do t.__d=!1,N&&N(e),d=t.render(t.props,t.state,t.context),t.state=t.__s;while(t.__d&&++Fu<25);t.state=t.__s,t.getChildContext!=null&&(o=V(V({},o),t.getChildContext())),L&&!f&&t.getSnapshotBeforeUpdate!=null&&(B=t.getSnapshotBeforeUpdate(m,x)),Y=d!=null&&d.type===su&&d.key==null?xe(d.props.children):d,c=me(u,Su(Y)?Y:[Y],e,r,o,a,n,s,c,h,D),t.base=e.__e,e.__u&=-161,t.__h.length&&s.push(t),E&&(t.__E=t.__=null)}catch(_){if(s.length=b,e.__v=null,h||n!=null){if(_.then){for(e.__u|=h?160:128;c&&c.nodeType==8&&c.nextSibling;)c=c.nextSibling;n!=null&&(n[n.indexOf(c)]=null),e.__e=c}else if(n!=null)for(q=n.length;q--;)Iu(n[q])}else e.__e=r.__e;e.__k==null&&(e.__k=r.__k||[]),_.then||be(e),y.__e(_,e,r)}}else n==null&&e.__v==r.__v?(e.__k=r.__k,e.__e=r.__e):c=e.__e=lt(r.__e,e,r,o,a,n,s,h,D);return(d=y.diffed)&&d(e),128&e.__u?void 0:c}function be(u){u&&(u.__c&&(u.__c.__e=!0),u.__k&&u.__k.some(be))}function Dt(u,e,r){for(var o=0;o<r.length;o++)zu(r[o],r[++o],r[++o]);y.__c&&y.__c(e,u),u.some(function(a){try{u=a.__h,a.__h=[],u.some(function(n){n.call(a)})}catch(n){y.__e(n,a.__v)}})}function xe(u){return typeof u!=\"object\"||u==null||u.__b>0?u:Su(u)?u.map(xe):u.constructor!==void 0?null:V({},u)}function lt(u,e,r,o,a,n,s,c,h){var D,d,b,t,f,m,x,B=r.props||Ae,E=e.props,p=e.type;if(p==\"svg\"?a=\"http://www.w3.org/2000/svg\":p==\"math\"?a=\"http://www.w3.org/1998/Math/MathML\":a||(a=\"http://www.w3.org/1999/xhtml\"),n!=null){for(D=0;D<n.length;D++)if((f=n[D])&&\"setAttribute\"in f==!!p&&(p?f.localName==p:f.nodeType==3)){u=f,n[D]=null;break}}if(u==null){if(p==null)return document.createTextNode(E);u=document.createElementNS(a,p,E.is&&E),c&&(y.__m&&y.__m(e,n),c=!1),n=null}if(p==null)B===E||c&&u.data==E||(u.data=E);else{if(n=p==\"textarea\"&&E.defaultValue!=null?null:n&&he.call(u.childNodes),!c&&n!=null)for(B={},D=0;D<u.attributes.length;D++)B[(f=u.attributes[D]).name]=f.value;for(D in B)f=B[D],D==\"dangerouslySetInnerHTML\"?b=f:D==\"children\"||D in E||D==\"value\"&&\"defaultValue\"in E||D==\"checked\"&&\"defaultChecked\"in E||mu(u,D,null,f,a);for(D in E)f=E[D],D==\"children\"?t=f:D==\"dangerouslySetInnerHTML\"?d=f:D==\"value\"?m=f:D==\"checked\"?x=f:c&&typeof f!=\"function\"||B[D]===f||mu(u,D,f,B[D],a);if(d)c||b&&(d.__html==b.__html||d.__html==u.innerHTML)||(u.innerHTML=d.__html),e.__k=[];else if(b&&(u.innerHTML=\"\"),me(e.type==\"template\"?u.content:u,Su(t)?t:[t],e,r,o,p==\"foreignObject\"?\"http://www.w3.org/1999/xhtml\":a,n,s,n?n[0]:r.__k&&lu(r,0),c,h),n!=null)for(D=n.length;D--;)Iu(n[D]);c&&p!=\"textarea\"||(D=\"value\",p==\"progress\"&&m==null?u.removeAttribute(\"value\"):m!=null&&(m!==u[D]||p==\"progress\"&&!m||p==\"option\"&&m!=B[D])&&mu(u,D,m,B[D],a),D=\"checked\",x!=null&&x!=u[D]&&mu(u,D,x,B[D],a))}return u}function zu(u,e,r){try{if(typeof u==\"function\"){var o=typeof u.__u==\"function\";o&&u.__u(),o&&e==null||(u.__u=u(e))}else u.current=e}catch(a){y.__e(a,r)}}function Se(u,e,r){var o,a;if(y.unmount&&y.unmount(u),(o=u.ref)&&(o.current&&o.current!=u.__e||zu(o,null,e)),(o=u.__c)!=null){if(o.componentWillUnmount)try{o.componentWillUnmount()}catch(n){y.__e(n,e)}o.base=o.__P=o.__n=null}if(o=u.__k)for(a=0;a<o.length;a++)o[a]&&Se(o[a],e,r||typeof u.type!=\"function\");r||Iu(u.__e),u.__c=u.__=u.__e=void 0}function st(u,e,r){return this.constructor(u,r)}he=bu.slice,y={__e:function(u,e,r,o){for(var a,n,s;e=e.__;)if((a=e.__c)&&!a.__)try{if((n=a.constructor)&&n.getDerivedStateFromError!=null&&(a.setState(n.getDerivedStateFromError(u)),s=a.__d),a.componentDidCatch!=null&&(a.componentDidCatch(u,o||{}),s=a.__d),s)return a.__E=a}catch(c){u=c}throw u}},pe=0,tt=function(u){return u!=null&&u.constructor===void 0},yu.prototype.setState=function(u,e){var r;r=this.__s!=null&&this.__s!=this.state?this.__s:this.__s=V({},this.state),typeof u==\"function\"&&(u=u(V({},r),this.props)),u&&V(r,u),u!=null&&this.__v&&(e&&this._sb.push(e),fe(this))},yu.prototype.forceUpdate=function(u){this.__v&&(this.__e=!0,u&&this.__h.push(u),fe(this))},yu.prototype.render=su,X=[],Ce=typeof Promise==\"function\"?Promise.prototype.then.bind(Promise.resolve()):setTimeout,ve=function(u,e){return u.__v.__b-e.__v.__b},xu.__r=0,Mu=Math.random().toString(8),Bu=\"__d\"+Mu,du=\"__a\"+Mu,Ee=/(PointerCapture)$|Capture$/i,Gu=0,Ru=de(!1),Ou=de(!0),rt=0;function cu(u){let e=_t(ft(u,\"index\"),!0);return e.length===0?\"/\":e}function we(){let u=decodeURI(window.location.pathname);return u.endsWith(\"/\")&&(u=u.slice(0,-1)),u.startsWith(\"/\")&&(u=u.slice(1)),u}function Hu(){return typeof document>\"u\"?\"\":document.body?.dataset?.basepath??\"\"}function Nu(u,e){let r=e??Hu(),o=u.startsWith(\"/\")?u:\"/\"+u;return r+o}function Ft(u,e){return u===e||u.endsWith(\"/\"+e)}function ft(u,e){return Ft(u,e)&&(u=u.slice(0,-e.length)),u}function _t(u,e){return u.startsWith(\"/\")&&(u=u.substring(1)),!e&&u.endsWith(\"/\")&&(u=u.slice(0,-1)),u}function ke(u){for(;u.firstChild;)u.removeChild(u.firstChild)}(function(){function u(){var o=we(),a=Hu();return a&&o.startsWith(a.replace(/^\\//,\"\"))&&(o=o.slice(a.replace(/^\\//,\"\").length),o.startsWith(\"/\")&&(o=o.slice(1))),o}function e(o){var a=document.querySelector('script[src=\"'+o+'\"]');return a?Promise.resolve():new Promise(function(n,s){var c=document.createElement(\"script\");c.src=o,c.crossOrigin=\"anonymous\",c.onload=n,c.onerror=s,document.head.appendChild(c)})}Promise.all([e(\"https://cdn.jsdelivr.net/npm/d3@7/dist/d3.min.js\"),e(\"https://cdn.jsdelivr.net/npm/pixi.js@8/dist/pixi.js\")]).then(function(){r()}).catch(function(o){console.error(\"[Graph] Failed to load libraries:\",o);for(var a=document.querySelectorAll(\".graph-container\"),n=0;n<a.length;n++)a[n].textContent=\"Graph could not load. Check your network connection.\",a[n].style.display=\"flex\",a[n].style.alignItems=\"center\",a[n].style.justifyContent=\"center\",a[n].style.color=\"var(--gray)\",a[n].style.fontSize=\"0.9rem\"});function r(){var o=window.d3,a=window.PIXI;if(!o||!a){console.error(\"[Graph] Libraries not loaded\");return}var n=\"graph-visited\";function s(){return new Set(JSON.parse(localStorage.getItem(n)||\"[]\"))}function c(_){var w=s();w.add(_),localStorage.setItem(n,JSON.stringify(Array.from(w)))}function h(_,w){if(!_)return w;var A=document.createElement(\"div\");A.style.color=_,A.style.position=\"absolute\",A.style.visibility=\"hidden\",document.body.appendChild(A);var g=getComputedStyle(A).color;return A.remove(),g||w}async function D(_,w,A){var g=cu(w);g===\"\"&&(g=\"index\");var K=s();if(ke(_),A!==void 0&&A!==t)return console.log(\"[Graph] Stale render, skipping\"),function(){};var S=JSON.parse(_.dataset.cfg||\"{}\"),fu=S.drag,Le=S.zoom,$u=S.depth,Vu=S.scale||1,Pe=S.repelForce||.5,je=S.centerForce||.3,Te=S.linkDistance||30,We=S.fontSize||.6,Me=S.opacityScale||1,Ue=S.removeTags||[],Re=S.showTags,Oe=S.focusOnHover,Ge=S.enableRadial,uu;try{var qu=await fetchData;uu=new Map;for(var Ku in qu)uu.set(cu(Ku),qu[Ku])}catch(i){return console.error(\"[Graph] Error loading data:\",i),function(){}}var O=_.offsetWidth,G=Math.max(_.offsetHeight,250),eu=[],hu=[],Ju=new Set(uu.keys());uu.forEach(function(i,l){for(var F=i.links||[],v=0;v<F.length;v++){var C=cu(F[v]);Ju.has(C)&&eu.push({source:l,target:C})}if(Re)for(var T=i.tags||[],v=0;v<T.length;v++){var $=T[v];if(Ue.indexOf($)===-1){var J=cu(\"tags/\"+$);hu.indexOf(J)===-1&&hu.push(J),eu.push({source:l,target:J})}}});var tu=new Set;if($u>=0)for(var pu=[g],Cu=new Set([g]),Xu=0;Xu<=$u&&pu.length>0;Xu++){for(var wu=[],ku=0;ku<pu.length;ku++){var Lu=pu[ku];tu.add(Lu);for(var Pu=0;Pu<eu.length;Pu++){var W=eu[Pu];W.source===Lu&&!Cu.has(W.target)&&(Cu.add(W.target),wu.push(W.target)),W.target===Lu&&!Cu.has(W.source)&&(Cu.add(W.source),wu.push(W.source))}}pu=wu}else{Ju.forEach(function(i){tu.add(i)});for(var k=0;k<hu.length;k++)tu.add(hu[k])}var ru=[],ju=new Map;tu.forEach(function(i){var l=i.startsWith(\"tags/\"),F=l?\"#\"+i.substring(5):uu.get(i)?.title||i,v=l?[]:uu.get(i)?.tags||[],C={id:i,text:F,tags:v,x:Math.random()*O-O/2,y:Math.random()*G-G/2,vx:0,vy:0};ru.push(C),ju.set(i,C)});for(var z=[],k=0;k<eu.length;k++){var W=eu[k];if(tu.has(W.source)&&tu.has(W.target)){var Yu=ju.get(W.source),Zu=ju.get(W.target);Yu&&Zu&&z.push({source:Yu,target:Zu})}}var Z=getComputedStyle(document.documentElement),Ie=h(Z.getPropertyValue(\"--secondary\").trim(),\"#c792ea\"),Qu=h(Z.getPropertyValue(\"--tertiary\").trim(),\"#82aaff\"),ue=h(Z.getPropertyValue(\"--gray\").trim(),\"#6c6c6c\"),ee=h(Z.getPropertyValue(\"--lightgray\").trim(),\"#d4d4d4\"),ze=h(Z.getPropertyValue(\"--dark\").trim(),\"#1a1a1a\"),He=h(Z.getPropertyValue(\"--light\").trim(),\"#f5f5f5\"),Ne=Z.getPropertyValue(\"--bodyFont\").trim()||\"inherit\",Q=new a.Application;await Q.init({width:O,height:G,antialias:!0,backgroundAlpha:0,resolution:window.devicePixelRatio||1,autoDensity:!0,eventMode:\"static\"}),_.appendChild(Q.canvas);var nu=new a.Container;Q.stage.addChild(nu);var ou=o.forceSimulation(ru).force(\"charge\",o.forceManyBody().strength(-100*Pe)).force(\"center\",o.forceCenter().strength(je)).force(\"link\",o.forceLink(z).distance(Te)).force(\"collide\",o.forceCollide().radius(function(i){for(var l=0,F=0;F<z.length;F++)(z[F].source.id===i.id||z[F].target.id===i.id)&&l++;return 2+Math.sqrt(l)}).iterations(3));if(Ge){var Tu=Math.min(O,G)/2*.8;ou.force(\"radial\",o.forceRadial(Tu).strength(.2))}var te=new a.Container,re=new a.Container,vu=new a.Container;nu.addChild(te),nu.addChild(re),nu.addChild(vu);var P=[],I=[],_u=null,au=new Set,ne=0,Eu=!1,j=o.zoomIdentity;function oe(i){for(var l=0,F=0;F<z.length;F++)(z[F].source.id===i.id||z[F].target.id===i.id)&&l++;return 2+Math.sqrt(l)}function $e(i){var l=i.id===g;return l?Ie:K.has(i.id)||i.id.startsWith(\"tags/\")?Qu:ue}function Wu(i){if(_u=i,i===null){au=new Set;for(var l=0;l<P.length;l++)P[l].active=!1;for(var l=0;l<I.length;l++)I[l].active=!1}else{au=new Set;for(var l=0;l<I.length;l++){var F=I[l].simulationData;F.source.id===i||F.target.id===i?(au.add(F.source.id),au.add(F.target.id),I[l].active=!0):I[l].active=!1}au.add(i);for(var l=0;l<P.length;l++)au.has(P[l].simulationData.id)?P[l].active=!0:P[l].active=!1}}function Ve(){for(var i=0;i<I.length;i++){var l=I[i],F=1;_u!==null&&(F=l.active?1:.2),l.alpha=F,l.color=l.active?ue:ee}}function qe(){for(var i=1/Vu,l=i*1.1,F=0;F<P.length;F++){var v=P[F];_u===v.simulationData.id?(v.label.alpha=1,v.label.scale.set(l)):v.label.scale.set(i)}}function Ke(){for(var i=0;i<P.length;i++){var l=P[i],F=1;_u!==null&&Oe&&(F=l.active?1:.2),l.gfx.alpha=F}}function Au(){Ke(),Ve(),qe()}for(var k=0;k<ru.length;k++){var iu=ru[k],ae=iu.id,ie=ae.startsWith(\"tags/\"),Tu=oe(iu),De=$e(iu),Du=new a.Text({text:iu.text,style:{fontSize:We*15,fill:ze,fontFamily:Ne},resolution:window.devicePixelRatio*4});Du.anchor.set(.5,1.2),Du.alpha=0,Du.scale.set(1/Vu),vu.addChild(Du);var U=new a.Graphics;U.circle(0,0,Tu),U.fill({color:ie?He:De}),ie&&U.stroke({width:2,color:Qu}),U.eventMode=\"static\",U.cursor=\"pointer\",U.label=ae,(function(F,v,C){var T=0;v.on(\"pointerover\",function($){Wu(F.id),T=C.alpha,Eu||Au()}),v.on(\"pointerleave\",function(){Wu(null),C.alpha=T,Eu||Au()})})(iu,U,Du),re.addChild(U),P.push({simulationData:iu,gfx:U,label:Du,color:De,alpha:1,active:!1})}for(var k=0;k<z.length;k++){var W=z[k],U=new a.Graphics;U.eventMode=\"none\",te.addChild(U),I.push({simulationData:W,gfx:U,color:ee,alpha:1,active:!1})}if(fu){var Je=function(i){for(var l=(i.x-j.x)/j.k,F=(i.y-j.y)/j.k,v=0;v<ru.length;v++){var C=ru[v],T=l-C.x-O/2,$=F-C.y-G/2,J=Math.sqrt(T*T+$*$),gu=oe(C);if(J<gu+5)return C}return null},Xe=function(i){i.active||ou.alphaTarget(1).restart(),i.subject.fx=i.subject.x,i.subject.fy=i.subject.y;var l=(i.x-j.x)/j.k-O/2,F=(i.y-j.y)/j.k-G/2;i.subject.__dragOffset={x:l-i.subject.x,y:F-i.subject.y},ne=Date.now(),Eu=!0,_u=i.subject.id},Ye=function(i){var l=(i.x-j.x)/j.k-O/2,F=(i.y-j.y)/j.k-G/2;i.subject.fx=l-i.subject.__dragOffset.x,i.subject.fy=F-i.subject.__dragOffset.y},Ze=function(i){if(i.active||ou.alphaTarget(0),i.subject.fx=null,i.subject.fy=null,Eu=!1,Wu(null),Au(),Date.now()-ne<500){var l=Nu(i.subject.id);window.location.href=l}},Qe=o.drag().container(Q.canvas).subject(Je).on(\"start\",Xe).on(\"drag\",Ye).on(\"end\",Ze);o.select(Q.canvas).call(Qe)}else for(var k=0;k<P.length;k++)(function(l){l.gfx.on(\"click\",function(){var F=Nu(l.simulationData.id);window.location.href=F})})(P[k]);if(Le){var ut=function(i){j=i.transform,nu.scale.set(j.k,j.k),nu.position.set(j.x,j.y);for(var l=j.k*Me,F=Math.max((l-1)/3.75,0),v=[],C=0;C<P.length;C++)P[C].active&&v.push(P[C].label);for(var C=0;C<vu.children.length;C++){var T=vu.children[C];v.indexOf(T)===-1&&(T.alpha=F)}},et=o.zoom().extent([[0,0],[O,G]]).scaleExtent([.25,4]).on(\"zoom\",ut);o.select(Q.canvas).call(et)}var le=!1;function se(){if(!le){for(var i=0;i<P.length;i++){var l=P[i],F=l.simulationData.x,v=l.simulationData.y;F!=null&&v!=null&&(l.gfx.position.set(F+O/2,v+G/2),l.label&&l.label.position.set(F+O/2,v+G/2))}for(var i=0;i<I.length;i++){var C=I[i],T=C.simulationData,$=T.source.x,J=T.source.y,gu=T.target.x,ce=T.target.y;$!=null&&J!=null&&gu!=null&&ce!=null&&(C.gfx.clear(),C.gfx.moveTo($+O/2,J+G/2),C.gfx.lineTo(gu+O/2,ce+G/2),C.gfx.stroke({alpha:C.alpha,width:1,color:C.color}))}requestAnimationFrame(se)}}return ou.on(\"tick\",function(){}),ou.restart(),Au(),se(),function(){le=!0,ou.stop();try{Q.destroy(!0)}catch{}}}var d=[],b=[],t=0;function f(){for(var _=0;_<d.length;_++)d[_]();d=[]}function m(){for(var _=0;_<b.length;_++)b[_]();b=[]}var x=[],B=[],E=null,p=null,L=null;function H(){m();for(var _=0;_<x.length;_++){x[_].classList.remove(\"active\");var w=x[_].closest(\".sidebar\");w&&(w.style.zIndex=\"\")}}function M(){for(var _=0;_<x.length;_++)if(x[_].classList.contains(\"active\"))return!0;return!1}function N(){m();for(var _=u(),w=0;w<x.length;w++){var A=x[w];A.classList.add(\"active\");var g=A.closest(\".sidebar\");g&&(g.style.zIndex=\"1\");var K=A.querySelector(\".global-graph-container\");K&&(function(S){D(S,_,void 0).then(function(fu){b.push(fu)}).catch(function(fu){console.error(\"[Graph] Global render error:\",fu)})})(K)}}function Fu(){M()?H():N()}function Y(){f();var _=++t,w=u();c(w);for(var A=document.querySelectorAll(\".graph-container\"),g=0;g<A.length;g++)(function(K){D(K,w,_).then(function(S){_===t&&d.push(S)}).catch(function(S){console.error(\"[Graph] Local render error:\",S)})})(A[g])}function q(_){var w=_.detail?_.detail.url:u();if(c(cu(w)),Y(),x=Array.from(document.querySelectorAll(\".global-graph-outer\")),L)for(var A=0;A<B.length;A++)B[A].removeEventListener(\"click\",L);B=Array.from(document.querySelectorAll(\".global-graph-icon\")),L=function(){Fu()};for(var A=0;A<B.length;A++)B[A].addEventListener(\"click\",L);E&&document.removeEventListener(\"click\",E),E=function(g){if(M()){var K=g.target.closest(\".global-graph-container\"),S=g.target.closest(\".global-graph-icon\");!K&&!S&&H()}},document.addEventListener(\"click\",E),p&&document.removeEventListener(\"keydown\",p),p=function(g){if(g.key===\"Escape\"){M()&&H();return}g.key===\"g\"&&(g.ctrlKey||g.metaKey)&&!g.shiftKey&&(g.preventDefault(),Fu())},document.addEventListener(\"keydown\",p),M()&&N()}document.readyState===\"loading\"?document.addEventListener(\"DOMContentLoaded\",function(){q({detail:{url:u()}})}):q({detail:{url:u()}}),document.addEventListener(\"prenav\",function(){f(),m()}),document.addEventListener(\"nav\",q),document.addEventListener(\"render\",q);function R(){Y(),M()&&N()}document.addEventListener(\"themechange\",R)}})();\n","/** Normal hydration that attaches to a DOM tree but does not diff it. */\nexport const MODE_HYDRATE = 1 << 5;\n/** Signifies this VNode suspended on the previous render */\nexport const MODE_SUSPENDED = 1 << 7;\n/** Indicates that this node needs to be inserted while patching children */\nexport const INSERT_VNODE = 1 << 2;\n/** Indicates a VNode has been matched with another VNode in the diff */\nexport const MATCHED = 1 << 1;\n\n/** Reset all mode flags */\nexport const RESET_MODE = ~(MODE_HYDRATE | MODE_SUSPENDED);\n\nexport const SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\nexport const XHTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';\nexport const MATH_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';\n\nexport const NULL = null;\nexport const UNDEFINED = undefined;\nexport const EMPTY_OBJ = /** @type {any} */ ({});\nexport const EMPTY_ARR = [];\nexport const IS_NON_DIMENSIONAL =\n\t/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;\n","import { _catchError } from './diff/catch-error';\n\n/**\n * The `option` object can potentially contain callback functions\n * that are called during various stages of our renderer. This is the\n * foundation on which all our addons like `preact/debug`, `preact/compat`,\n * and `preact/hooks` are based on. See the `Options` type in `internal.d.ts`\n * for a full list of available option hooks (most editors/IDEs allow you to\n * ctrl+click or cmd+click on mac the type definition below).\n * @type {import('./internal').Options}\n */\nconst options = {\n\t_catchError\n};\n\nexport default options;\n","import { NULL } from '../constants';\n\n/**\n * Find the closest error boundary to a thrown error and call it\n * @param {object} error The thrown value\n * @param {import('../internal').VNode} vnode The vnode that threw the error that was caught (except\n * for unmounting when this parameter is the highest parent that was being\n * unmounted)\n * @param {import('../internal').VNode} [oldVNode]\n * @param {import('../internal').ErrorInfo} [errorInfo]\n */\nexport function _catchError(error, vnode, oldVNode, errorInfo) {\n\t/** @type {import('../internal').Component} */\n\tlet component,\n\t\t/** @type {import('../internal').ComponentType} */\n\t\tctor,\n\t\t/** @type {boolean} */\n\t\thandled;\n\n\tfor (; (vnode = vnode._parent); ) {\n\t\tif ((component = vnode._component) && !component._processingException) {\n\t\t\ttry {\n\t\t\t\tctor = component.constructor;\n\n\t\t\t\tif (ctor && ctor.getDerivedStateFromError != NULL) {\n\t\t\t\t\tcomponent.setState(ctor.getDerivedStateFromError(error));\n\t\t\t\t\thandled = component._dirty;\n\t\t\t\t}\n\n\t\t\t\tif (component.componentDidCatch != NULL) {\n\t\t\t\t\tcomponent.componentDidCatch(error, errorInfo || {});\n\t\t\t\t\thandled = component._dirty;\n\t\t\t\t}\n\n\t\t\t\t// This is an error boundary. Mark it as having bailed out, and whether it was mid-hydration.\n\t\t\t\tif (handled) {\n\t\t\t\t\treturn (component._pendingError = component);\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\terror = e;\n\t\t\t}\n\t\t}\n\t}\n\n\tthrow error;\n}\n","import { assign } from './util';\nimport { diff, commitRoot } from './diff/index';\nimport options from './options';\nimport { Fragment } from './create-element';\nimport { MODE_HYDRATE, NULL } from './constants';\n\n/**\n * Base Component class. Provides `setState()` and `forceUpdate()`, which\n * trigger rendering\n * @param {object} props The initial component props\n * @param {object} context The initial context from parent components'\n * getChildContext\n */\nexport function BaseComponent(props, context) {\n\tthis.props = props;\n\tthis.context = context;\n}\n\n/**\n * Update component state and schedule a re-render.\n * @this {import('./internal').Component}\n * @param {object | ((s: object, p: object) => object)} update A hash of state\n * properties to update with new values or a function that given the current\n * state and props returns a new partial state\n * @param {() => void} [callback] A function to be called once component state is\n * updated\n */\nBaseComponent.prototype.setState = function (update, callback) {\n\t// only clone state when copying to nextState the first time.\n\tlet s;\n\tif (this._nextState != NULL && this._nextState != this.state) {\n\t\ts = this._nextState;\n\t} else {\n\t\ts = this._nextState = assign({}, this.state);\n\t}\n\n\tif (typeof update == 'function') {\n\t\t// Some libraries like `immer` mark the current state as readonly,\n\t\t// preventing us from mutating it, so we need to clone it. See #2716\n\t\tupdate = update(assign({}, s), this.props);\n\t}\n\n\tif (update) {\n\t\tassign(s, update);\n\t}\n\n\t// Skip update if updater function returned null\n\tif (update == NULL) return;\n\n\tif (this._vnode) {\n\t\tif (callback) {\n\t\t\tthis._stateCallbacks.push(callback);\n\t\t}\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Immediately perform a synchronous re-render of the component\n * @this {import('./internal').Component}\n * @param {() => void} [callback] A function to be called after component is\n * re-rendered\n */\nBaseComponent.prototype.forceUpdate = function (callback) {\n\tif (this._vnode) {\n\t\t// Set render mode so that we can differentiate where the render request\n\t\t// is coming from. We need this because forceUpdate should never call\n\t\t// shouldComponentUpdate\n\t\tthis._force = true;\n\t\tif (callback) this._renderCallbacks.push(callback);\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Accepts `props` and `state`, and returns a new Virtual DOM tree to build.\n * Virtual DOM is generally constructed via [JSX](https://jasonformat.com/wtf-is-jsx).\n * @param {object} props Props (eg: JSX attributes) received from parent\n * element/component\n * @param {object} state The component's current state\n * @param {object} context Context object, as returned by the nearest\n * ancestor's `getChildContext()`\n * @returns {ComponentChildren | void}\n */\nBaseComponent.prototype.render = Fragment;\n\n/**\n * @param {import('./internal').VNode} vnode\n * @param {number | null} [childIndex]\n */\nexport function getDomSibling(vnode, childIndex) {\n\tif (childIndex == NULL) {\n\t\t// Use childIndex==null as a signal to resume the search from the vnode's sibling\n\t\treturn vnode._parent\n\t\t\t? getDomSibling(vnode._parent, vnode._index + 1)\n\t\t\t: NULL;\n\t}\n\n\tlet sibling;\n\tfor (; childIndex < vnode._children.length; childIndex++) {\n\t\tsibling = vnode._children[childIndex];\n\n\t\tif (sibling != NULL && sibling._dom != NULL) {\n\t\t\t// Since updateParentDomPointers keeps _dom pointer correct,\n\t\t\t// we can rely on _dom to tell us if this subtree contains a\n\t\t\t// rendered DOM node, and what the first rendered DOM node is\n\t\t\treturn sibling._dom;\n\t\t}\n\t}\n\n\t// If we get here, we have not found a DOM node in this vnode's children.\n\t// We must resume from this vnode's sibling (in it's parent _children array)\n\t// Only climb up and search the parent if we aren't searching through a DOM\n\t// VNode (meaning we reached the DOM parent of the original vnode that began\n\t// the search)\n\treturn typeof vnode.type == 'function' ? getDomSibling(vnode) : NULL;\n}\n\n/**\n * Trigger in-place re-rendering of a component.\n * @param {import('./internal').Component} component The component to rerender\n */\nfunction renderComponent(component) {\n\tif (component._parentDom && component._dirty) {\n\t\tlet oldVNode = component._vnode,\n\t\t\toldDom = oldVNode._dom,\n\t\t\tcommitQueue = [],\n\t\t\trefQueue = [],\n\t\t\tnewVNode = assign({}, oldVNode);\n\t\tnewVNode._original = oldVNode._original + 1;\n\t\tif (options.vnode) options.vnode(newVNode);\n\n\t\tdiff(\n\t\t\tcomponent._parentDom,\n\t\t\tnewVNode,\n\t\t\toldVNode,\n\t\t\tcomponent._globalContext,\n\t\t\tcomponent._parentDom.namespaceURI,\n\t\t\toldVNode._flags & MODE_HYDRATE ? [oldDom] : NULL,\n\t\t\tcommitQueue,\n\t\t\toldDom == NULL ? getDomSibling(oldVNode) : oldDom,\n\t\t\t!!(oldVNode._flags & MODE_HYDRATE),\n\t\t\trefQueue\n\t\t);\n\n\t\tnewVNode._original = oldVNode._original;\n\t\tnewVNode._parent._children[newVNode._index] = newVNode;\n\t\tcommitRoot(commitQueue, newVNode, refQueue);\n\t\toldVNode._dom = oldVNode._parent = null;\n\n\t\tif (newVNode._dom != oldDom) {\n\t\t\tupdateParentDomPointers(newVNode);\n\t\t}\n\t}\n}\n\n/**\n * @param {import('./internal').VNode} vnode\n */\nfunction updateParentDomPointers(vnode) {\n\tif ((vnode = vnode._parent) != NULL && vnode._component != NULL) {\n\t\tvnode._dom = vnode._component.base = NULL;\n\t\tvnode._children.some(child => {\n\t\t\tif (child != NULL && child._dom != NULL) {\n\t\t\t\treturn (vnode._dom = vnode._component.base = child._dom);\n\t\t\t}\n\t\t});\n\n\t\treturn updateParentDomPointers(vnode);\n\t}\n}\n\n/**\n * The render queue\n * @type {Array<import('./internal').Component>}\n */\nlet rerenderQueue = [];\n\n/*\n * The value of `Component.debounce` must asynchronously invoke the passed in callback. It is\n * important that contributors to Preact can consistently reason about what calls to `setState`, etc.\n * do, and when their effects will be applied. See the links below for some further reading on designing\n * asynchronous APIs.\n * * [Designing APIs for Asynchrony](https://blog.izs.me/2013/08/designing-apis-for-asynchrony)\n * * [Callbacks synchronous and asynchronous](https://blog.ometer.com/2011/07/24/callbacks-synchronous-and-asynchronous/)\n */\n\nlet prevDebounce;\n\nconst defer =\n\ttypeof Promise == 'function'\n\t\t? Promise.prototype.then.bind(Promise.resolve())\n\t\t: setTimeout;\n\n/**\n * Enqueue a rerender of a component\n * @param {import('./internal').Component} c The component to rerender\n */\nexport function enqueueRender(c) {\n\tif (\n\t\t(!c._dirty &&\n\t\t\t(c._dirty = true) &&\n\t\t\trerenderQueue.push(c) &&\n\t\t\t!process._rerenderCount++) ||\n\t\tprevDebounce != options.debounceRendering\n\t) {\n\t\tprevDebounce = options.debounceRendering;\n\t\t(prevDebounce || defer)(process);\n\t}\n}\n\n/**\n * @param {import('./internal').Component} a\n * @param {import('./internal').Component} b\n */\nconst depthSort = (a, b) => a._vnode._depth - b._vnode._depth;\n\n/** Flush the render queue by rerendering all queued components */\nfunction process() {\n\ttry {\n\t\tlet c,\n\t\t\tl = 1;\n\n\t\t// Don't update `renderCount` yet. Keep its value non-zero to prevent unnecessary\n\t\t// process() calls from getting scheduled while `queue` is still being consumed.\n\t\twhile (rerenderQueue.length) {\n\t\t\t// Keep the rerender queue sorted by (depth, insertion order). The queue\n\t\t\t// will initially be sorted on the first iteration only if it has more than 1 item.\n\t\t\t//\n\t\t\t// New items can be added to the queue e.g. when rerendering a provider, so we want to\n\t\t\t// keep the order from top to bottom with those new items so we can handle them in a\n\t\t\t// single pass\n\t\t\tif (rerenderQueue.length > l) {\n\t\t\t\trerenderQueue.sort(depthSort);\n\t\t\t}\n\n\t\t\tc = rerenderQueue.shift();\n\t\t\tl = rerenderQueue.length;\n\n\t\t\trenderComponent(c);\n\t\t}\n\t} finally {\n\t\trerenderQueue.length = process._rerenderCount = 0;\n\t}\n}\n\nprocess._rerenderCount = 0;\n","import { IS_NON_DIMENSIONAL, NULL, SVG_NAMESPACE } from '../constants';\nimport options from '../options';\n\n// Per-instance unique key for event clock stamps. Each Preact copy on the page\n// gets its own random suffix so that `_dispatched` / `_attached` properties on\n// shared event objects and handler functions cannot collide across instances.\n// ~1 in 60M collision odds - if you have that many praect versions on the page,\n// you deserve some weird bugs.\n// In 11 we can replace this with a\n// Symbol\nlet _id = Math.random().toString(8),\n\tEVENT_DISPATCHED = '__d' + _id,\n\tEVENT_ATTACHED = '__a' + _id;\n\nfunction setStyle(style, key, value) {\n\tif (key[0] == '-') {\n\t\tstyle.setProperty(key, value == NULL ? '' : value);\n\t} else if (value == NULL) {\n\t\tstyle[key] = '';\n\t} else if (typeof value != 'number' || IS_NON_DIMENSIONAL.test(key)) {\n\t\tstyle[key] = value;\n\t} else {\n\t\tstyle[key] = value + 'px';\n\t}\n}\n\nconst CAPTURE_REGEX = /(PointerCapture)$|Capture$/i;\n\n// A logical clock to solve issues like https://github.com/preactjs/preact/issues/3927.\n// When the DOM performs an event it leaves micro-ticks in between bubbling up which means that\n// an event can trigger on a newly reated DOM-node while the event bubbles up.\n//\n// Originally inspired by Vue\n// (https://github.com/vuejs/core/blob/caeb8a68811a1b0f79/packages/runtime-dom/src/modules/events.ts#L90-L101),\n// but modified to use a logical clock instead of Date.now() in case event handlers get attached\n// and events get dispatched during the same millisecond.\n//\n// The clock is incremented after each new event dispatch. This allows 1 000 000 new events\n// per second for over 280 years before the value reaches Number.MAX_SAFE_INTEGER (2**53 - 1).\nlet eventClock = 0;\n\n/**\n * Set a property value on a DOM node\n * @param {import('../internal').PreactElement} dom The DOM node to modify\n * @param {string} name The name of the property to set\n * @param {*} value The value to set the property to\n * @param {*} oldValue The old value the property had\n * @param {string} namespace Whether or not this DOM node is an SVG node or not\n */\nexport function setProperty(dom, name, value, oldValue, namespace) {\n\tlet useCapture;\n\n\to: if (name == 'style') {\n\t\tif (typeof value == 'string') {\n\t\t\tdom.style.cssText = value;\n\t\t} else {\n\t\t\tif (typeof oldValue == 'string') {\n\t\t\t\tdom.style.cssText = oldValue = '';\n\t\t\t}\n\n\t\t\tif (oldValue) {\n\t\t\t\tfor (name in oldValue) {\n\t\t\t\t\tif (!(value && name in value)) {\n\t\t\t\t\t\tsetStyle(dom.style, name, '');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (value) {\n\t\t\t\tfor (name in value) {\n\t\t\t\t\tif (!oldValue || value[name] != oldValue[name]) {\n\t\t\t\t\t\tsetStyle(dom.style, name, value[name]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t// Benchmark for comparison: https://esbench.com/bench/574c954bdb965b9a00965ac6\n\telse if (name[0] == 'o' && name[1] == 'n') {\n\t\tuseCapture = name != (name = name.replace(CAPTURE_REGEX, '$1'));\n\t\tconst lowerCaseName = name.toLowerCase();\n\n\t\t// Infer correct casing for DOM built-in events:\n\t\tif (lowerCaseName in dom || name == 'onFocusOut' || name == 'onFocusIn')\n\t\t\tname = lowerCaseName.slice(2);\n\t\telse name = name.slice(2);\n\n\t\tif (!dom._listeners) dom._listeners = {};\n\t\tdom._listeners[name + useCapture] = value;\n\n\t\tif (value) {\n\t\t\tif (!oldValue) {\n\t\t\t\tvalue[EVENT_ATTACHED] = eventClock;\n\t\t\t\tdom.addEventListener(\n\t\t\t\t\tname,\n\t\t\t\t\tuseCapture ? eventProxyCapture : eventProxy,\n\t\t\t\t\tuseCapture\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tvalue[EVENT_ATTACHED] = oldValue[EVENT_ATTACHED];\n\t\t\t}\n\t\t} else {\n\t\t\tdom.removeEventListener(\n\t\t\t\tname,\n\t\t\t\tuseCapture ? eventProxyCapture : eventProxy,\n\t\t\t\tuseCapture\n\t\t\t);\n\t\t}\n\t} else {\n\t\tif (namespace == SVG_NAMESPACE) {\n\t\t\t// Normalize incorrect prop usage for SVG:\n\t\t\t// - xlink:href / xlinkHref --> href (xlink:href was removed from SVG and isn't needed)\n\t\t\t// - className --> class\n\t\t\tname = name.replace(/xlink(H|:h)/, 'h').replace(/sName$/, 's');\n\t\t} else if (\n\t\t\tname != 'width' &&\n\t\t\tname != 'height' &&\n\t\t\tname != 'href' &&\n\t\t\tname != 'list' &&\n\t\t\tname != 'form' &&\n\t\t\t// Default value in browsers is `-1` and an empty string is\n\t\t\t// cast to `0` instead\n\t\t\tname != 'tabIndex' &&\n\t\t\tname != 'download' &&\n\t\t\tname != 'rowSpan' &&\n\t\t\tname != 'colSpan' &&\n\t\t\tname != 'role' &&\n\t\t\tname != 'popover' &&\n\t\t\tname in dom\n\t\t) {\n\t\t\ttry {\n\t\t\t\tdom[name] = value == NULL ? '' : value;\n\t\t\t\t// labelled break is 1b smaller here than a return statement (sorry)\n\t\t\t\tbreak o;\n\t\t\t} catch (e) {}\n\t\t}\n\n\t\t// aria- and data- attributes have no boolean representation.\n\t\t// A `false` value is different from the attribute not being\n\t\t// present, so we can't remove it. For non-boolean aria\n\t\t// attributes we could treat false as a removal, but the\n\t\t// amount of exceptions would cost too many bytes. On top of\n\t\t// that other frameworks generally stringify `false`.\n\n\t\tif (typeof value == 'function') {\n\t\t\t// never serialize functions as attribute values\n\t\t} else if (value != NULL && (value !== false || name[4] == '-')) {\n\t\t\tdom.setAttribute(name, name == 'popover' && value == true ? '' : value);\n\t\t} else {\n\t\t\tdom.removeAttribute(name);\n\t\t}\n\t}\n}\n\n/**\n * Create an event proxy function.\n * @param {boolean} useCapture Is the event handler for the capture phase.\n * @private\n */\nfunction createEventProxy(useCapture) {\n\t/**\n\t * Proxy an event to hooked event handlers\n\t * @param {import('../internal').PreactEvent} e The event object from the browser\n\t * @private\n\t */\n\treturn function (e) {\n\t\tif (this._listeners) {\n\t\t\tconst eventHandler = this._listeners[e.type + useCapture];\n\t\t\tif (e[EVENT_DISPATCHED] == NULL) {\n\t\t\t\te[EVENT_DISPATCHED] = eventClock++;\n\n\t\t\t\t// When `e[EVENT_DISPATCHED]` is smaller than the time when the targeted event\n\t\t\t\t// handler was attached we know we have bubbled up to an element that was added\n\t\t\t\t// during patching the DOM.\n\t\t\t} else if (e[EVENT_DISPATCHED] < eventHandler[EVENT_ATTACHED]) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\treturn eventHandler(options.event ? options.event(e) : e);\n\t\t}\n\t};\n}\n\nconst eventProxy = createEventProxy(false);\nconst eventProxyCapture = createEventProxy(true);\n","import { enqueueRender } from './component';\nimport { NULL } from './constants';\n\nexport let i = 0;\n\nexport function createContext(defaultValue) {\n\tfunction Context(props) {\n\t\tif (!this.getChildContext) {\n\t\t\t/** @type {Set<import('./internal').Component> | null} */\n\t\t\tlet subs = new Set();\n\t\t\tlet ctx = {};\n\t\t\tctx[Context._id] = this;\n\n\t\t\tthis.getChildContext = () => ctx;\n\n\t\t\tthis.componentWillUnmount = () => {\n\t\t\t\tsubs = NULL;\n\t\t\t};\n\n\t\t\tthis.shouldComponentUpdate = function (_props) {\n\t\t\t\t// @ts-expect-error even\n\t\t\t\tif (this.props.value != _props.value) {\n\t\t\t\t\tsubs.forEach(c => {\n\t\t\t\t\t\tc._force = true;\n\t\t\t\t\t\tenqueueRender(c);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tthis.sub = c => {\n\t\t\t\tsubs.add(c);\n\t\t\t\tlet old = c.componentWillUnmount;\n\t\t\t\tc.componentWillUnmount = () => {\n\t\t\t\t\tif (subs) {\n\t\t\t\t\t\tsubs.delete(c);\n\t\t\t\t\t}\n\t\t\t\t\tif (old) old.call(c);\n\t\t\t\t};\n\t\t\t};\n\t\t}\n\n\t\treturn props.children;\n\t}\n\n\tContext._id = '__cC' + i++;\n\tContext._defaultValue = defaultValue;\n\n\t/** @type {import('./internal').FunctionComponent} */\n\tContext.Consumer = (props, contextValue) => {\n\t\treturn props.children(contextValue);\n\t};\n\n\t// we could also get rid of _contextRef entirely\n\tContext.Provider =\n\t\tContext._contextRef =\n\t\tContext.Consumer.contextType =\n\t\t\tContext;\n\n\treturn Context;\n}\n","import { options, Fragment } from 'preact';\nimport { encodeEntities } from './utils';\nimport { IS_NON_DIMENSIONAL } from '../../src/constants';\n\nlet vnodeId = 0;\n\nconst isArray = Array.isArray;\n\n/**\n * @fileoverview\n * This file exports various methods that implement Babel's \"automatic\" JSX runtime API:\n * - jsx(type, props, key)\n * - jsxs(type, props, key)\n * - jsxDEV(type, props, key, __source, __self)\n *\n * The implementation of createVNode here is optimized for performance.\n * Benchmarks: https://esbench.com/bench/5f6b54a0b4632100a7dcd2b3\n */\n\n/**\n * JSX.Element factory used by Babel's {runtime:\"automatic\"} JSX transform\n * @param {VNode['type']} type\n * @param {VNode['props']} props\n * @param {VNode['key']} [key]\n * @param {unknown} [isStaticChildren]\n * @param {unknown} [__source]\n * @param {unknown} [__self]\n */\nfunction createVNode(type, props, key, isStaticChildren, __source, __self) {\n\tif (!props) props = {};\n\t// We'll want to preserve `ref` in props to get rid of the need for\n\t// forwardRef components in the future, but that should happen via\n\t// a separate PR.\n\tlet normalizedProps = props,\n\t\tref,\n\t\ti;\n\n\tif ('ref' in normalizedProps) {\n\t\tnormalizedProps = {};\n\t\tfor (i in props) {\n\t\t\tif (i == 'ref') {\n\t\t\t\tref = props[i];\n\t\t\t} else {\n\t\t\t\tnormalizedProps[i] = props[i];\n\t\t\t}\n\t\t}\n\t}\n\n\t/** @type {VNode & { __source: any; __self: any }} */\n\tconst vnode = {\n\t\ttype,\n\t\tprops: normalizedProps,\n\t\tkey,\n\t\tref,\n\t\t_children: null,\n\t\t_parent: null,\n\t\t_depth: 0,\n\t\t_dom: null,\n\t\t_component: null,\n\t\tconstructor: undefined,\n\t\t_original: --vnodeId,\n\t\t_index: -1,\n\t\t_flags: 0,\n\t\t__source,\n\t\t__self\n\t};\n\n\t// If a Component VNode, check for and apply defaultProps.\n\t// Note: `type` is often a String, and can be `undefined` in development.\n\tif (typeof type === 'function' && (ref = type.defaultProps)) {\n\t\tfor (i in ref)\n\t\t\tif (normalizedProps[i] === undefined) {\n\t\t\t\tnormalizedProps[i] = ref[i];\n\t\t\t}\n\t}\n\n\tif (options.vnode) options.vnode(vnode);\n\treturn vnode;\n}\n\n/**\n * Create a template vnode. This function is not expected to be\n * used directly, but rather through a precompile JSX transform\n * @param {string[]} templates\n * @param {Array<string | null | VNode>} exprs\n * @returns {VNode}\n */\nfunction jsxTemplate(templates, ...exprs) {\n\tconst vnode = createVNode(Fragment, { tpl: templates, exprs });\n\t// Bypass render to string top level Fragment optimization\n\tvnode.key = vnode._vnode;\n\treturn vnode;\n}\n\nconst JS_TO_CSS = {};\nconst CSS_REGEX = /[A-Z]/g;\n\n/**\n * Unwrap potential signals.\n * @param {*} value\n * @returns {*}\n */\nfunction normalizeAttrValue(value) {\n\treturn value !== null &&\n\t\ttypeof value === 'object' &&\n\t\ttypeof value.valueOf === 'function'\n\t\t? value.valueOf()\n\t\t: value;\n}\n\n/**\n * Serialize an HTML attribute to a string. This function is not\n * expected to be used directly, but rather through a precompile\n * JSX transform\n * @param {string} name The attribute name\n * @param {*} value The attribute value\n * @returns {string}\n */\nfunction jsxAttr(name, value) {\n\tif (options.attr) {\n\t\tconst result = options.attr(name, value);\n\t\tif (typeof result === 'string') return result;\n\t}\n\n\tvalue = normalizeAttrValue(value);\n\n\tif (name === 'ref' || name === 'key') return '';\n\tif (name === 'style' && typeof value === 'object') {\n\t\tlet str = '';\n\t\tfor (let prop in value) {\n\t\t\tlet val = value[prop];\n\t\t\tif (val != null && val !== '') {\n\t\t\t\tconst name =\n\t\t\t\t\tprop[0] == '-'\n\t\t\t\t\t\t? prop\n\t\t\t\t\t\t: JS_TO_CSS[prop] ||\n\t\t\t\t\t\t\t(JS_TO_CSS[prop] = prop.replace(CSS_REGEX, '-$&').toLowerCase());\n\n\t\t\t\tlet suffix = ';';\n\t\t\t\tif (\n\t\t\t\t\ttypeof val === 'number' &&\n\t\t\t\t\t// Exclude custom-attributes\n\t\t\t\t\t!name.startsWith('--') &&\n\t\t\t\t\t!IS_NON_DIMENSIONAL.test(name)\n\t\t\t\t) {\n\t\t\t\t\tsuffix = 'px;';\n\t\t\t\t}\n\t\t\t\tstr = str + name + ':' + val + suffix;\n\t\t\t}\n\t\t}\n\t\treturn name + '=\"' + encodeEntities(str) + '\"';\n\t}\n\n\tif (\n\t\tvalue == null ||\n\t\tvalue === false ||\n\t\ttypeof value === 'function' ||\n\t\ttypeof value === 'object'\n\t) {\n\t\treturn '';\n\t} else if (value === true) return name;\n\n\treturn name + '=\"' + encodeEntities('' + value) + '\"';\n}\n\n/**\n * Escape a dynamic child passed to `jsxTemplate`. This function\n * is not expected to be used directly, but rather through a\n * precompile JSX transform\n * @param {*} value\n * @returns {string | null | VNode | Array<string | null | VNode>}\n */\nfunction jsxEscape(value) {\n\tif (\n\t\tvalue == null ||\n\t\ttypeof value === 'boolean' ||\n\t\ttypeof value === 'function'\n\t) {\n\t\treturn null;\n\t}\n\n\tif (typeof value === 'object') {\n\t\t// Check for VNode\n\t\tif (value.constructor === undefined) return value;\n\n\t\tif (isArray(value)) {\n\t\t\tfor (let i = 0; i < value.length; i++) {\n\t\t\t\tvalue[i] = jsxEscape(value[i]);\n\t\t\t}\n\t\t\treturn value;\n\t\t}\n\t}\n\n\treturn encodeEntities('' + value);\n}\n\nexport {\n\tcreateVNode as jsx,\n\tcreateVNode as jsxs,\n\tcreateVNode as jsxDEV,\n\tFragment,\n\t// precompiled JSX transform\n\tjsxTemplate,\n\tjsxAttr,\n\tjsxEscape\n};\n","import type {\n QuartzComponent,\n QuartzComponentConstructor,\n QuartzComponentProps,\n} from \"@quartz-community/types\";\nimport { classNames } from \"../util/lang\";\nimport { i18n } from \"../i18n\";\nimport style from \"./styles/graph.scss\";\n// @ts-expect-error - inline script imported as string by esbuild loader\nimport script from \"./scripts/graph.inline.ts\";\n\nexport interface D3Config {\n drag: boolean;\n zoom: boolean;\n depth: number;\n scale: number;\n repelForce: number;\n centerForce: number;\n linkDistance: number;\n fontSize: number;\n opacityScale: number;\n removeTags: string[];\n showTags: boolean;\n focusOnHover?: boolean;\n enableRadial?: boolean;\n}\n\nexport interface GraphOptions {\n localGraph?: Partial<D3Config>;\n globalGraph?: Partial<D3Config>;\n}\n\nconst defaultOptions: GraphOptions = {\n localGraph: {\n drag: true,\n zoom: true,\n depth: 1,\n scale: 1.1,\n repelForce: 0.5,\n centerForce: 0.3,\n linkDistance: 30,\n fontSize: 0.6,\n opacityScale: 1,\n showTags: true,\n removeTags: [],\n focusOnHover: false,\n enableRadial: false,\n },\n globalGraph: {\n drag: true,\n zoom: true,\n depth: -1,\n scale: 0.9,\n repelForce: 0.5,\n centerForce: 0.2,\n linkDistance: 30,\n fontSize: 0.6,\n opacityScale: 1,\n showTags: true,\n removeTags: [],\n focusOnHover: true,\n enableRadial: true,\n },\n};\n\nexport default ((userOpts?: Partial<GraphOptions>) => {\n const Graph: QuartzComponent = ({ displayClass, cfg }: QuartzComponentProps) => {\n const localGraph = { ...defaultOptions.localGraph, ...userOpts?.localGraph };\n const globalGraph = { ...defaultOptions.globalGraph, ...userOpts?.globalGraph };\n\n return (\n <div class={classNames(displayClass, \"graph\")}>\n <h3>{i18n(cfg.locale ?? \"en-US\").components.graph.title}</h3>\n <div class=\"graph-outer\">\n <div class=\"graph-container\" data-cfg={JSON.stringify(localGraph)}></div>\n <button class=\"global-graph-icon\" aria-label=\"Global Graph\">\n <svg\n version=\"1.1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n x=\"0px\"\n y=\"0px\"\n viewBox=\"0 0 55 55\"\n fill=\"currentColor\"\n xmlSpace=\"preserve\"\n >\n <path\n d=\"M49,0c-3.309,0-6,2.691-6,6c0,1.035,0.263,2.009,0.726,2.86l-9.829,9.829C32.542,17.634,30.846,17,29,17\n s-3.542,0.634-4.898,1.688l-7.669-7.669C16.785,10.424,17,9.74,17,9c0-2.206-1.794-4-4-4S9,6.794,9,9s1.794,4,4,4\n c0.74,0,1.424-0.215,2.019-0.567l7.669,7.669C21.634,21.458,21,23.154,21,25s0.634,3.542,1.688,4.897L10.024,42.562\n C8.958,41.595,7.549,41,6,41c-3.309,0-6,2.691-6,6s2.691,6,6,6s6-2.691,6-6c0-1.035-0.263-2.009-0.726-2.86l12.829-12.829\n c1.106,0.86,2.44,1.436,3.898,1.619v10.16c-2.833,0.478-5,2.942-5,5.91c0,3.309,2.691,6,6,6s6-2.691,6-6c0-2.967-2.167-5.431-5-5.91\n v-10.16c1.458-0.183,2.792-0.759,3.898-1.619l7.669,7.669C41.215,39.576,41,40.26,41,41c0,2.206,1.794,4,4,4s4-1.794,4-4\n s-1.794-4-4-4c-0.74,0-1.424,0.215-2.019,0.567l-7.669-7.669C36.366,28.542,37,26.846,37,25s-0.634-3.542-1.688-4.897l9.665-9.665\n C46.042,11.405,47.451,12,49,12c3.309,0,6-2.691,6-6S52.309,0,49,0z M11,9c0-1.103,0.897-2,2-2s2,0.897,2,2s-0.897,2-2,2\n S11,10.103,11,9z M6,51c-2.206,0-4-1.794-4-4s1.794-4,4-4s4,1.794,4,4S8.206,51,6,51z M33,49c0,2.206-1.794,4-4,4s-4-1.794-4-4\n s1.794-4,4-4S33,46.794,33,49z M29,31c-3.309,0-6-2.691-6-6s2.691-6,6-6s6,2.691,6,6S32.309,31,29,31z M47,41c0,1.103-0.897,2-2,2\n s-2-0.897-2-2s0.897-2,2-2S47,39.897,47,41z M49,10c-2.206,0-4-1.794-4-4s1.794-4,4-4s4,1.794,4,4S51.206,10,49,10z\"\n />\n </svg>\n </button>\n </div>\n <div class=\"global-graph-outer\">\n <div class=\"global-graph-container\" data-cfg={JSON.stringify(globalGraph)}></div>\n </div>\n </div>\n );\n };\n\n Graph.css = style;\n Graph.afterDOMLoaded = script;\n\n return Graph;\n}) satisfies QuartzComponentConstructor;\n"]}
package/dist/index.d.ts CHANGED
@@ -1,24 +1,2 @@
1
- import { QuartzComponent } from '@quartz-community/types';
2
-
3
- interface D3Config {
4
- drag: boolean;
5
- zoom: boolean;
6
- depth: number;
7
- scale: number;
8
- repelForce: number;
9
- centerForce: number;
10
- linkDistance: number;
11
- fontSize: number;
12
- opacityScale: number;
13
- removeTags: string[];
14
- showTags: boolean;
15
- focusOnHover?: boolean;
16
- enableRadial?: boolean;
17
- }
18
- interface GraphOptions {
19
- localGraph?: Partial<D3Config>;
20
- globalGraph?: Partial<D3Config>;
21
- }
22
- declare const _default: (userOpts?: Partial<GraphOptions>) => QuartzComponent;
23
-
24
- export { type D3Config, _default as Graph, type GraphOptions };
1
+ export { D3Config, Graph, GraphOptions } from './components/index.js';
2
+ import '@quartz-community/types';
package/dist/index.js CHANGED
@@ -88,7 +88,7 @@ var fi_FI_default = {
88
88
  var fr_FR_default = {
89
89
  components: {
90
90
  graph: {
91
- title: "Vue Graphique"
91
+ title: "Vue graphique"
92
92
  }
93
93
  }
94
94
  };
@@ -314,7 +314,7 @@ function i18n(locale) {
314
314
  var graph_default = ".graph > h3 {\n font-size: 1rem;\n margin: 0;\n}\n.graph > .graph-outer {\n border-radius: 5px;\n border: 1px solid var(--lightgray);\n box-sizing: border-box;\n height: 250px;\n margin: 0.5em 0;\n position: relative;\n overflow: hidden;\n}\n.graph > .graph-outer > .global-graph-icon {\n cursor: pointer;\n background: none;\n border: none;\n color: var(--dark);\n opacity: 0.5;\n width: 24px;\n height: 24px;\n position: absolute;\n padding: 0.2rem;\n margin: 0.3rem;\n top: 0;\n right: 0;\n border-radius: 4px;\n background-color: transparent;\n transition: background-color 0.5s ease;\n}\n.graph > .graph-outer > .global-graph-icon:hover {\n background-color: var(--lightgray);\n}\n.graph > .global-graph-outer {\n position: fixed;\n z-index: 9999;\n left: 0;\n top: 0;\n width: 100vw;\n height: 100%;\n backdrop-filter: blur(4px);\n display: none;\n overflow: hidden;\n}\n.graph > .global-graph-outer.active {\n display: inline-block;\n}\n.graph > .global-graph-outer > .global-graph-container {\n border: 1px solid var(--lightgray);\n background-color: var(--light);\n border-radius: 5px;\n box-sizing: border-box;\n position: fixed;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n height: 80vh;\n width: 80vw;\n}\n@media all and (max-width: 800px) {\n .graph > .global-graph-outer > .global-graph-container {\n width: 90%;\n }\n}\n\n.graph-container {\n width: 100%;\n height: 100%;\n}";
315
315
 
316
316
  // src/components/scripts/graph.inline.ts
317
- var graph_inline_default = `var Ct=Object.hasOwnProperty;var pe,y,Ce,tt,J,fe,ve,Ee,Mu,Bu,du,Ae,Iu,Ru,Ou,rt,ge={},bu=[],nt=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,Su=Array.isArray;function $(u,e){for(var t in e)u[t]=e[t];return u}function zu(u){u&&u.parentNode&&u.parentNode.removeChild(u)}function Uu(u,e,t,a,o){var n={type:u,props:e,key:t,ref:a,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:o??++Ce,__i:-1,__u:0};return o==null&&y.vnode!=null&&y.vnode(n),n}function cu(u){return u.children}function yu(u,e){this.props=u,this.context=e}function su(u,e){if(e==null)return u.__?su(u.__,u.__i+1):null;for(var t;e<u.__k.length;e++)if((t=u.__k[e])!=null&&t.__e!=null)return t.__e;return typeof u.type=="function"?su(u):null}function ot(u){if(u.__P&&u.__d){var e=u.__v,t=e.__e,a=[],o=[],n=$({},e);n.__v=e.__v+1,y.vnode&&y.vnode(n),be(u.__P,n,e,u.__n,u.__P.namespaceURI,32&e.__u?[t]:null,a,t??su(e),!!(32&e.__u),o),n.__v=e.__v,n.__.__k[n.__i]=n,Dt(a,n,o),e.__e=e.__=null,n.__e!=t&&me(n)}}function me(u){if((u=u.__)!=null&&u.__c!=null)return u.__e=u.__c.base=null,u.__k.some(function(e){if(e!=null&&e.__e!=null)return u.__e=u.__c.base=e.__e}),me(u)}function _e(u){(!u.__d&&(u.__d=!0)&&J.push(u)&&!xu.__r++||fe!=y.debounceRendering)&&((fe=y.debounceRendering)||ve)(xu)}function xu(){try{for(var u,e=1;J.length;)J.length>e&&J.sort(Ee),u=J.shift(),e=J.length,ot(u)}finally{J.length=xu.__r=0}}function Be(u,e,t,a,o,n,s,c,h,D,_){var r,E,f,b,S,B,p,C=a&&a.__k||bu,M=e.length;for(h=at(t,e,C,h,M),r=0;r<M;r++)(f=t.__k[r])!=null&&(E=f.__i!=-1&&C[f.__i]||ge,f.__i=r,B=be(u,f,E,o,n,s,c,h,D,_),b=f.__e,f.ref&&E.ref!=f.ref&&(E.ref&&Hu(E.ref,null,f),_.push(f.ref,f.__c||b,f)),S==null&&b!=null&&(S=b),(p=!!(4&f.__u))||E.__k===f.__k?(h=ye(f,h,u,p),p&&E.__e&&(E.__e=null)):typeof f.type=="function"&&B!==void 0?h=B:b&&(h=b.nextSibling),f.__u&=-7);return t.__e=S,h}function at(u,e,t,a,o){var n,s,c,h,D,_=t.length,r=_,E=0;for(u.__k=new Array(o),n=0;n<o;n++)(s=e[n])!=null&&typeof s!="boolean"&&typeof s!="function"?(typeof s=="string"||typeof s=="number"||typeof s=="bigint"||s.constructor==String?s=u.__k[n]=Uu(null,s,null,null,null):Su(s)?s=u.__k[n]=Uu(cu,{children:s},null,null,null):s.constructor===void 0&&s.__b>0?s=u.__k[n]=Uu(s.type,s.props,s.key,s.ref?s.ref:null,s.__v):u.__k[n]=s,h=n+E,s.__=u,s.__b=u.__b+1,c=null,(D=s.__i=it(s,t,h,r))!=-1&&(r--,(c=t[D])&&(c.__u|=2)),c==null||c.__v==null?(D==-1&&(o>_?E--:o<_&&E++),typeof s.type!="function"&&(s.__u|=4)):D!=h&&(D==h-1?E--:D==h+1?E++:(D>h?E--:E++,s.__u|=4))):u.__k[n]=null;if(r)for(n=0;n<_;n++)(c=t[n])!=null&&(2&c.__u)==0&&(c.__e==a&&(a=su(c)),Se(c,c));return a}function ye(u,e,t,a){var o,n;if(typeof u.type=="function"){for(o=u.__k,n=0;o&&n<o.length;n++)o[n]&&(o[n].__=u,e=ye(o[n],e,t,a));return e}u.__e!=e&&(a&&(e&&u.type&&!e.parentNode&&(e=su(u)),t.insertBefore(u.__e,e||null)),e=u.__e);do e=e&&e.nextSibling;while(e!=null&&e.nodeType==8);return e}function it(u,e,t,a){var o,n,s,c=u.key,h=u.type,D=e[t],_=D!=null&&(2&D.__u)==0;if(D===null&&c==null||_&&c==D.key&&h==D.type)return t;if(a>(_?1:0)){for(o=t-1,n=t+1;o>=0||n<e.length;)if((D=e[s=o>=0?o--:n++])!=null&&(2&D.__u)==0&&c==D.key&&h==D.type)return s}return-1}function de(u,e,t){e[0]=="-"?u.setProperty(e,t??""):u[e]=t==null?"":typeof t!="number"||nt.test(e)?t:t+"px"}function mu(u,e,t,a,o){var n,s;u:if(e=="style")if(typeof t=="string")u.style.cssText=t;else{if(typeof a=="string"&&(u.style.cssText=a=""),a)for(e in a)t&&e in t||de(u.style,e,"");if(t)for(e in t)a&&t[e]==a[e]||de(u.style,e,t[e])}else if(e[0]=="o"&&e[1]=="n")n=e!=(e=e.replace(Ae,"$1")),s=e.toLowerCase(),e=s in u||e=="onFocusOut"||e=="onFocusIn"?s.slice(2):e.slice(2),u.l||(u.l={}),u.l[e+n]=t,t?a?t[du]=a[du]:(t[du]=Iu,u.addEventListener(e,n?Ou:Ru,n)):u.removeEventListener(e,n?Ou:Ru,n);else{if(o=="http://www.w3.org/2000/svg")e=e.replace(/xlink(H|:h)/,"h").replace(/sName$/,"s");else if(e!="width"&&e!="height"&&e!="href"&&e!="list"&&e!="form"&&e!="tabIndex"&&e!="download"&&e!="rowSpan"&&e!="colSpan"&&e!="role"&&e!="popover"&&e in u)try{u[e]=t??"";break u}catch{}typeof t=="function"||(t==null||t===!1&&e[4]!="-"?u.removeAttribute(e):u.setAttribute(e,e=="popover"&&t==1?"":t))}}function he(u){return function(e){if(this.l){var t=this.l[e.type+u];if(e[Bu]==null)e[Bu]=Iu++;else if(e[Bu]<t[du])return;return t(y.event?y.event(e):e)}}}function be(u,e,t,a,o,n,s,c,h,D){var _,r,E,f,b,S,B,p,C,M,G,I,Q,X,uu,T=e.type;if(e.constructor!==void 0)return null;128&t.__u&&(h=!!(32&t.__u),n=[c=e.__e=t.__e]),(_=y.__b)&&_(e);u:if(typeof T=="function")try{if(p=e.props,C=T.prototype&&T.prototype.render,M=(_=T.contextType)&&a[_.__c],G=_?M?M.props.value:_.__:a,t.__c?B=(r=e.__c=t.__c).__=r.__E:(C?e.__c=r=new T(p,G):(e.__c=r=new yu(p,G),r.constructor=T,r.render=st),M&&M.sub(r),r.state||(r.state={}),r.__n=a,E=r.__d=!0,r.__h=[],r._sb=[]),C&&r.__s==null&&(r.__s=r.state),C&&T.getDerivedStateFromProps!=null&&(r.__s==r.state&&(r.__s=$({},r.__s)),$(r.__s,T.getDerivedStateFromProps(p,r.__s))),f=r.props,b=r.state,r.__v=e,E)C&&T.getDerivedStateFromProps==null&&r.componentWillMount!=null&&r.componentWillMount(),C&&r.componentDidMount!=null&&r.__h.push(r.componentDidMount);else{if(C&&T.getDerivedStateFromProps==null&&p!==f&&r.componentWillReceiveProps!=null&&r.componentWillReceiveProps(p,G),e.__v==t.__v||!r.__e&&r.shouldComponentUpdate!=null&&r.shouldComponentUpdate(p,r.__s,G)===!1){e.__v!=t.__v&&(r.props=p,r.state=r.__s,r.__d=!1),e.__e=t.__e,e.__k=t.__k,e.__k.some(function(V){V&&(V.__=e)}),bu.push.apply(r.__h,r._sb),r._sb=[],r.__h.length&&s.push(r);break u}r.componentWillUpdate!=null&&r.componentWillUpdate(p,r.__s,G),C&&r.componentDidUpdate!=null&&r.__h.push(function(){r.componentDidUpdate(f,b,S)})}if(r.context=G,r.props=p,r.__P=u,r.__e=!1,I=y.__r,Q=0,C)r.state=r.__s,r.__d=!1,I&&I(e),_=r.render(r.props,r.state,r.context),bu.push.apply(r.__h,r._sb),r._sb=[];else do r.__d=!1,I&&I(e),_=r.render(r.props,r.state,r.context),r.state=r.__s;while(r.__d&&++Q<25);r.state=r.__s,r.getChildContext!=null&&(a=$($({},a),r.getChildContext())),C&&!E&&r.getSnapshotBeforeUpdate!=null&&(S=r.getSnapshotBeforeUpdate(f,b)),X=_!=null&&_.type===cu&&_.key==null?xe(_.props.children):_,c=Be(u,Su(X)?X:[X],e,t,a,o,n,s,c,h,D),r.base=e.__e,e.__u&=-161,r.__h.length&&s.push(r),B&&(r.__E=r.__=null)}catch(V){if(e.__v=null,h||n!=null)if(V.then){for(e.__u|=h?160:128;c&&c.nodeType==8&&c.nextSibling;)c=c.nextSibling;n[n.indexOf(c)]=null,e.__e=c}else{for(uu=n.length;uu--;)zu(n[uu]);Gu(e)}else e.__e=t.__e,e.__k=t.__k,V.then||Gu(e);y.__e(V,e,t)}else n==null&&e.__v==t.__v?(e.__k=t.__k,e.__e=t.__e):c=e.__e=lt(t.__e,e,t,a,o,n,s,h,D);return(_=y.diffed)&&_(e),128&e.__u?void 0:c}function Gu(u){u&&(u.__c&&(u.__c.__e=!0),u.__k&&u.__k.some(Gu))}function Dt(u,e,t){for(var a=0;a<t.length;a++)Hu(t[a],t[++a],t[++a]);y.__c&&y.__c(e,u),u.some(function(o){try{u=o.__h,o.__h=[],u.some(function(n){n.call(o)})}catch(n){y.__e(n,o.__v)}})}function xe(u){return typeof u!="object"||u==null||u.__b>0?u:Su(u)?u.map(xe):$({},u)}function lt(u,e,t,a,o,n,s,c,h){var D,_,r,E,f,b,S,B=t.props||ge,p=e.props,C=e.type;if(C=="svg"?o="http://www.w3.org/2000/svg":C=="math"?o="http://www.w3.org/1998/Math/MathML":o||(o="http://www.w3.org/1999/xhtml"),n!=null){for(D=0;D<n.length;D++)if((f=n[D])&&"setAttribute"in f==!!C&&(C?f.localName==C:f.nodeType==3)){u=f,n[D]=null;break}}if(u==null){if(C==null)return document.createTextNode(p);u=document.createElementNS(o,C,p.is&&p),c&&(y.__m&&y.__m(e,n),c=!1),n=null}if(C==null)B===p||c&&u.data==p||(u.data=p);else{if(n=n&&pe.call(u.childNodes),!c&&n!=null)for(B={},D=0;D<u.attributes.length;D++)B[(f=u.attributes[D]).name]=f.value;for(D in B)f=B[D],D=="dangerouslySetInnerHTML"?r=f:D=="children"||D in p||D=="value"&&"defaultValue"in p||D=="checked"&&"defaultChecked"in p||mu(u,D,null,f,o);for(D in p)f=p[D],D=="children"?E=f:D=="dangerouslySetInnerHTML"?_=f:D=="value"?b=f:D=="checked"?S=f:c&&typeof f!="function"||B[D]===f||mu(u,D,f,B[D],o);if(_)c||r&&(_.__html==r.__html||_.__html==u.innerHTML)||(u.innerHTML=_.__html),e.__k=[];else if(r&&(u.innerHTML=""),Be(e.type=="template"?u.content:u,Su(E)?E:[E],e,t,a,C=="foreignObject"?"http://www.w3.org/1999/xhtml":o,n,s,n?n[0]:t.__k&&su(t,0),c,h),n!=null)for(D=n.length;D--;)zu(n[D]);c||(D="value",C=="progress"&&b==null?u.removeAttribute("value"):b!=null&&(b!==u[D]||C=="progress"&&!b||C=="option"&&b!=B[D])&&mu(u,D,b,B[D],o),D="checked",S!=null&&S!=u[D]&&mu(u,D,S,B[D],o))}return u}function Hu(u,e,t){try{if(typeof u=="function"){var a=typeof u.__u=="function";a&&u.__u(),a&&e==null||(u.__u=u(e))}else u.current=e}catch(o){y.__e(o,t)}}function Se(u,e,t){var a,o;if(y.unmount&&y.unmount(u),(a=u.ref)&&(a.current&&a.current!=u.__e||Hu(a,null,e)),(a=u.__c)!=null){if(a.componentWillUnmount)try{a.componentWillUnmount()}catch(n){y.__e(n,e)}a.base=a.__P=null}if(a=u.__k)for(o=0;o<a.length;o++)a[o]&&Se(a[o],e,t||typeof u.type!="function");t||zu(u.__e),u.__c=u.__=u.__e=void 0}function st(u,e,t){return this.constructor(u,t)}pe=bu.slice,y={__e:function(u,e,t,a){for(var o,n,s;e=e.__;)if((o=e.__c)&&!o.__)try{if((n=o.constructor)&&n.getDerivedStateFromError!=null&&(o.setState(n.getDerivedStateFromError(u)),s=o.__d),o.componentDidCatch!=null&&(o.componentDidCatch(u,a||{}),s=o.__d),s)return o.__E=o}catch(c){u=c}throw u}},Ce=0,tt=function(u){return u!=null&&u.constructor===void 0},yu.prototype.setState=function(u,e){var t;t=this.__s!=null&&this.__s!=this.state?this.__s:this.__s=$({},this.state),typeof u=="function"&&(u=u($({},t),this.props)),u&&$(t,u),u!=null&&this.__v&&(e&&this._sb.push(e),_e(this))},yu.prototype.forceUpdate=function(u){this.__v&&(this.__e=!0,u&&this.__h.push(u),_e(this))},yu.prototype.render=cu,J=[],ve=typeof Promise=="function"?Promise.prototype.then.bind(Promise.resolve()):setTimeout,Ee=function(u,e){return u.__v.__b-e.__v.__b},xu.__r=0,Mu=Math.random().toString(8),Bu="__d"+Mu,du="__a"+Mu,Ae=/(PointerCapture)$|Capture$/i,Iu=0,Ru=he(!1),Ou=he(!0),rt=0;function Fu(u){let e=_t(ft(u,"index"),!0);return e.length===0?"/":e}function we(){let u=window.location.pathname;return u.endsWith("/")&&(u=u.slice(0,-1)),u.startsWith("/")&&(u=u.slice(1)),u}function Nu(){return typeof document>"u"?"":document.body?.dataset?.basepath??""}function $u(u,e){let t=e??Nu(),a=u.startsWith("/")?u:"/"+u;return t+a}function Ft(u,e){return u===e||u.endsWith("/"+e)}function ft(u,e){return Ft(u,e)&&(u=u.slice(0,-e.length)),u}function _t(u,e){return u.startsWith("/")&&(u=u.substring(1)),!e&&u.endsWith("/")&&(u=u.slice(0,-1)),u}function ke(u){for(;u.firstChild;)u.removeChild(u.firstChild)}(function(){function u(){var a=we(),o=Nu();return o&&a.startsWith(o.replace(/^\\//,""))&&(a=a.slice(o.replace(/^\\//,"").length),a.startsWith("/")&&(a=a.slice(1))),a}function e(a){var o=document.querySelector('script[src="'+a+'"]');return o?Promise.resolve():new Promise(function(n,s){var c=document.createElement("script");c.src=a,c.crossOrigin="anonymous",c.onload=n,c.onerror=s,document.head.appendChild(c)})}Promise.all([e("https://cdn.jsdelivr.net/npm/d3@7/dist/d3.min.js"),e("https://cdn.jsdelivr.net/npm/pixi.js@8/dist/pixi.js")]).then(function(){t()}).catch(function(a){console.error("[Graph] Failed to load libraries:",a);for(var o=document.querySelectorAll(".graph-container"),n=0;n<o.length;n++)o[n].textContent="Graph could not load. Check your network connection.",o[n].style.display="flex",o[n].style.alignItems="center",o[n].style.justifyContent="center",o[n].style.color="var(--gray)",o[n].style.fontSize="0.9rem"});function t(){var a=window.d3,o=window.PIXI;if(!a||!o){console.error("[Graph] Libraries not loaded");return}var n="graph-visited";function s(){return new Set(JSON.parse(localStorage.getItem(n)||"[]"))}function c(d){var w=s();w.add(d),localStorage.setItem(n,JSON.stringify(Array.from(w)))}function h(d,w){if(!d)return w;var g=document.createElement("div");g.style.color=d,g.style.position="absolute",g.style.visibility="hidden",document.body.appendChild(g);var m=getComputedStyle(g).color;return g.remove(),m||w}async function D(d,w,g){var m=Fu(w);m===""&&(m="index");var q=s();if(ke(d),g!==void 0&&g!==E)return console.log("[Graph] Stale render, skipping"),function(){};var x=JSON.parse(d.dataset.cfg||"{}"),fu=x.drag,Le=x.zoom,Vu=x.depth,qu=x.scale||1,Pe=x.repelForce||.5,je=x.centerForce||.3,Te=x.linkDistance||30,We=x.fontSize||.6,Me=x.opacityScale||1,Ue=x.removeTags||[],Re=x.showTags,Oe=x.focusOnHover,Ge=x.enableRadial,eu;try{var Ku=await fetchData;eu=new Map;for(var Ju in Ku)eu.set(Fu(Ju),Ku[Ju])}catch(i){return console.error("[Graph] Error loading data:",i),function(){}}var R=d.offsetWidth,O=Math.max(d.offsetHeight,250),tu=[],hu=[],Xu=new Set(eu.keys());eu.forEach(function(i,l){for(var F=i.links||[],A=0;A<F.length;A++){var v=Fu(F[A]);Xu.has(v)&&tu.push({source:l,target:v})}if(Re)for(var j=i.tags||[],A=0;A<j.length;A++){var N=j[A];if(Ue.indexOf(N)===-1){var K=Fu("tags/"+N);hu.indexOf(K)===-1&&hu.push(K),tu.push({source:l,target:K})}}});var ru=new Set;if(Vu>=0)for(var pu=[m],Cu=new Set([m]),Yu=0;Yu<=Vu&&pu.length>0;Yu++){for(var wu=[],ku=0;ku<pu.length;ku++){var Lu=pu[ku];ru.add(Lu);for(var Pu=0;Pu<tu.length;Pu++){var W=tu[Pu];W.source===Lu&&!Cu.has(W.target)&&(Cu.add(W.target),wu.push(W.target)),W.target===Lu&&!Cu.has(W.source)&&(Cu.add(W.source),wu.push(W.source))}}pu=wu}else{Xu.forEach(function(i){ru.add(i)});for(var k=0;k<hu.length;k++)ru.add(hu[k])}var nu=[],ju=new Map;ru.forEach(function(i){var l=i.startsWith("tags/"),F=l?"#"+i.substring(5):eu.get(i)?.title||i,A=l?[]:eu.get(i)?.tags||[],v={id:i,text:F,tags:A,x:Math.random()*R-R/2,y:Math.random()*O-O/2,vx:0,vy:0};nu.push(v),ju.set(i,v)});for(var H=[],k=0;k<tu.length;k++){var W=tu[k];if(ru.has(W.source)&&ru.has(W.target)){var Zu=ju.get(W.source),Qu=ju.get(W.target);Zu&&Qu&&H.push({source:Zu,target:Qu})}}var Y=getComputedStyle(document.documentElement),Ie=h(Y.getPropertyValue("--secondary").trim(),"#c792ea"),ue=h(Y.getPropertyValue("--tertiary").trim(),"#82aaff"),ee=h(Y.getPropertyValue("--gray").trim(),"#6c6c6c"),te=h(Y.getPropertyValue("--lightgray").trim(),"#d4d4d4"),ze=h(Y.getPropertyValue("--dark").trim(),"#1a1a1a"),He=h(Y.getPropertyValue("--light").trim(),"#f5f5f5"),Ne=Y.getPropertyValue("--bodyFont").trim()||"inherit",Z=new o.Application;await Z.init({width:R,height:O,antialias:!0,backgroundAlpha:0,resolution:window.devicePixelRatio||1,autoDensity:!0,eventMode:"static"}),d.appendChild(Z.canvas);var ou=new o.Container;Z.stage.addChild(ou);var au=a.forceSimulation(nu).force("charge",a.forceManyBody().strength(-100*Pe)).force("center",a.forceCenter().strength(je)).force("link",a.forceLink(H).distance(Te)).force("collide",a.forceCollide().radius(function(i){for(var l=0,F=0;F<H.length;F++)(H[F].source.id===i.id||H[F].target.id===i.id)&&l++;return 2+Math.sqrt(l)}).iterations(3));if(Ge){var Tu=Math.min(R,O)/2*.8;au.force("radial",a.forceRadial(Tu).strength(.2))}var re=new o.Container,ne=new o.Container,vu=new o.Container;ou.addChild(re),ou.addChild(ne),ou.addChild(vu);var L=[],z=[],_u=null,iu=new Set,oe=0,Eu=!1,P=a.zoomIdentity;function ae(i){for(var l=0,F=0;F<H.length;F++)(H[F].source.id===i.id||H[F].target.id===i.id)&&l++;return 2+Math.sqrt(l)}function $e(i){var l=i.id===m;return l?Ie:q.has(i.id)||i.id.startsWith("tags/")?ue:ee}function Wu(i){if(_u=i,i===null){iu=new Set;for(var l=0;l<L.length;l++)L[l].active=!1;for(var l=0;l<z.length;l++)z[l].active=!1}else{iu=new Set;for(var l=0;l<z.length;l++){var F=z[l].simulationData;F.source.id===i||F.target.id===i?(iu.add(F.source.id),iu.add(F.target.id),z[l].active=!0):z[l].active=!1}iu.add(i);for(var l=0;l<L.length;l++)iu.has(L[l].simulationData.id)?L[l].active=!0:L[l].active=!1}}function Ve(){for(var i=0;i<z.length;i++){var l=z[i],F=1;_u!==null&&(F=l.active?1:.2),l.alpha=F,l.color=l.active?ee:te}}function qe(){for(var i=1/qu,l=i*1.1,F=0;F<L.length;F++){var A=L[F];_u===A.simulationData.id?(A.label.alpha=1,A.label.scale.set(l)):A.label.scale.set(i)}}function Ke(){for(var i=0;i<L.length;i++){var l=L[i],F=1;_u!==null&&Oe&&(F=l.active?1:.2),l.gfx.alpha=F}}function Au(){Ke(),Ve(),qe()}for(var k=0;k<nu.length;k++){var Du=nu[k],ie=Du.id,De=ie.startsWith("tags/"),Tu=ae(Du),le=$e(Du),lu=new o.Text({text:Du.text,style:{fontSize:We*15,fill:ze,fontFamily:Ne},resolution:window.devicePixelRatio*4});lu.anchor.set(.5,1.2),lu.alpha=0,lu.scale.set(1/qu),vu.addChild(lu);var U=new o.Graphics;U.circle(0,0,Tu),U.fill({color:De?He:le}),De&&U.stroke({width:2,color:ue}),U.eventMode="static",U.cursor="pointer",U.label=ie,(function(F,A,v){var j=0;A.on("pointerover",function(N){Wu(F.id),j=v.alpha,Eu||Au()}),A.on("pointerleave",function(){Wu(null),v.alpha=j,Eu||Au()})})(Du,U,lu),ne.addChild(U),L.push({simulationData:Du,gfx:U,label:lu,color:le,alpha:1,active:!1})}for(var k=0;k<H.length;k++){var W=H[k],U=new o.Graphics;U.eventMode="none",re.addChild(U),z.push({simulationData:W,gfx:U,color:te,alpha:1,active:!1})}if(fu){var Je=function(i){for(var l=(i.x-P.x)/P.k,F=(i.y-P.y)/P.k,A=0;A<nu.length;A++){var v=nu[A],j=l-v.x-R/2,N=F-v.y-O/2,K=Math.sqrt(j*j+N*N),gu=ae(v);if(K<gu+5)return v}return null},Xe=function(i){i.active||au.alphaTarget(1).restart(),i.subject.fx=i.subject.x,i.subject.fy=i.subject.y;var l=(i.x-P.x)/P.k-R/2,F=(i.y-P.y)/P.k-O/2;i.subject.__dragOffset={x:l-i.subject.x,y:F-i.subject.y},oe=Date.now(),Eu=!0,_u=i.subject.id},Ye=function(i){var l=(i.x-P.x)/P.k-R/2,F=(i.y-P.y)/P.k-O/2;i.subject.fx=l-i.subject.__dragOffset.x,i.subject.fy=F-i.subject.__dragOffset.y},Ze=function(i){if(i.active||au.alphaTarget(0),i.subject.fx=null,i.subject.fy=null,Eu=!1,Wu(null),Au(),Date.now()-oe<500){var l=$u(i.subject.id);window.location.href=l}},Qe=a.drag().container(Z.canvas).subject(Je).on("start",Xe).on("drag",Ye).on("end",Ze);a.select(Z.canvas).call(Qe)}else for(var k=0;k<L.length;k++)(function(l){l.gfx.on("click",function(){var F=$u(l.simulationData.id);window.location.href=F})})(L[k]);if(Le){var ut=function(i){P=i.transform,ou.scale.set(P.k,P.k),ou.position.set(P.x,P.y);for(var l=P.k*Me,F=Math.max((l-1)/3.75,0),A=[],v=0;v<L.length;v++)L[v].active&&A.push(L[v].label);for(var v=0;v<vu.children.length;v++){var j=vu.children[v];A.indexOf(j)===-1&&(j.alpha=F)}},et=a.zoom().extent([[0,0],[R,O]]).scaleExtent([.25,4]).on("zoom",ut);a.select(Z.canvas).call(et)}var se=!1;function ce(){if(!se){for(var i=0;i<L.length;i++){var l=L[i],F=l.simulationData.x,A=l.simulationData.y;F!=null&&A!=null&&(l.gfx.position.set(F+R/2,A+O/2),l.label&&l.label.position.set(F+R/2,A+O/2))}for(var i=0;i<z.length;i++){var v=z[i],j=v.simulationData,N=j.source.x,K=j.source.y,gu=j.target.x,Fe=j.target.y;N!=null&&K!=null&&gu!=null&&Fe!=null&&(v.gfx.clear(),v.gfx.moveTo(N+R/2,K+O/2),v.gfx.lineTo(gu+R/2,Fe+O/2),v.gfx.stroke({alpha:v.alpha,width:1,color:v.color}))}requestAnimationFrame(ce)}}return au.on("tick",function(){}),au.restart(),Au(),ce(),function(){se=!0,au.stop();try{Z.destroy(!0)}catch{}}}var _=[],r=[],E=0;function f(){for(var d=0;d<_.length;d++)_[d]();_=[]}function b(){for(var d=0;d<r.length;d++)r[d]();r=[]}var S=[],B=[],p=null,C=null,M=null;function G(){b();for(var d=0;d<S.length;d++){S[d].classList.remove("active");var w=S[d].closest(".sidebar");w&&(w.style.zIndex="")}}function I(){for(var d=0;d<S.length;d++)if(S[d].classList.contains("active"))return!0;return!1}function Q(){b();for(var d=u(),w=0;w<S.length;w++){var g=S[w];g.classList.add("active");var m=g.closest(".sidebar");m&&(m.style.zIndex="1");var q=g.querySelector(".global-graph-container");q&&(function(x){D(x,d,void 0).then(function(fu){r.push(fu)}).catch(function(fu){console.error("[Graph] Global render error:",fu)})})(q)}}function X(){I()?G():Q()}function uu(){f();var d=++E,w=u();c(w);for(var g=document.querySelectorAll(".graph-container"),m=0;m<g.length;m++)(function(q){D(q,w,d).then(function(x){d===E&&_.push(x)}).catch(function(x){console.error("[Graph] Local render error:",x)})})(g[m])}function T(d){var w=d.detail?d.detail.url:u();if(c(Fu(w)),uu(),S=Array.from(document.querySelectorAll(".global-graph-outer")),M)for(var g=0;g<B.length;g++)B[g].removeEventListener("click",M);B=Array.from(document.querySelectorAll(".global-graph-icon")),M=function(){X()};for(var g=0;g<B.length;g++)B[g].addEventListener("click",M);p&&document.removeEventListener("click",p),p=function(m){if(I()){var q=m.target.closest(".global-graph-container"),x=m.target.closest(".global-graph-icon");!q&&!x&&G()}},document.addEventListener("click",p),C&&document.removeEventListener("keydown",C),C=function(m){if(m.key==="Escape"){I()&&G();return}m.key==="g"&&(m.ctrlKey||m.metaKey)&&!m.shiftKey&&(m.preventDefault(),X())},document.addEventListener("keydown",C),I()&&Q()}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",function(){T({detail:{url:u()}})}):T({detail:{url:u()}}),document.addEventListener("prenav",function(){f(),b()}),document.addEventListener("nav",T),document.addEventListener("render",T);function V(){uu(),I()&&Q()}document.addEventListener("themechange",V)}})();
317
+ var graph_inline_default = `var Ct=Object.hasOwnProperty;var he,y,pe,tt,X,Fe,Ce,ve,Mu,Bu,du,Ee,Gu,Ru,Ou,rt,Ae={},bu=[],nt=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,Su=Array.isArray;function V(u,e){for(var r in e)u[r]=e[r];return u}function Iu(u){u&&u.parentNode&&u.parentNode.removeChild(u)}function Uu(u,e,r,o,a){var n={type:u,props:e,key:r,ref:o,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:a??++pe,__i:-1,__u:0};return a==null&&y.vnode!=null&&y.vnode(n),n}function su(u){return u.children}function yu(u,e){this.props=u,this.context=e}function lu(u,e){if(e==null)return u.__?lu(u.__,u.__i+1):null;for(var r;e<u.__k.length;e++)if((r=u.__k[e])!=null&&r.__e!=null)return r.__e;return typeof u.type=="function"?lu(u):null}function ot(u){if(u.__P&&u.__d){var e=u.__v,r=e.__e,o=[],a=[],n=V({},e);n.__v=e.__v+1,y.vnode&&y.vnode(n),ye(u.__P,n,e,u.__n,u.__P.namespaceURI,32&e.__u?[r]:null,o,r??lu(e),!!(32&e.__u),a),n.__v=e.__v,n.__.__k[n.__i]=n,Dt(o,n,a),e.__e=e.__=null,n.__e!=r&&ge(n)}}function ge(u){if((u=u.__)!=null&&u.__c!=null)return u.__e=u.__c.base=null,u.__k.some(function(e){if(e!=null&&e.__e!=null)return u.__e=u.__c.base=e.__e}),ge(u)}function fe(u){(!u.__d&&(u.__d=!0)&&X.push(u)&&!xu.__r++||Fe!=y.debounceRendering)&&((Fe=y.debounceRendering)||Ce)(xu)}function xu(){try{for(var u,e=1;X.length;)X.length>e&&X.sort(ve),u=X.shift(),e=X.length,ot(u)}finally{X.length=xu.__r=0}}function me(u,e,r,o,a,n,s,c,h,D,d){var b,t,f,m,x,B,E,p=o&&o.__k||bu,L=e.length;for(h=at(r,e,p,h,L),b=0;b<L;b++)(f=r.__k[b])!=null&&(t=f.__i!=-1&&p[f.__i]||Ae,f.__i=b,B=ye(u,f,t,a,n,s,c,h,D,d),m=f.__e,f.ref&&t.ref!=f.ref&&(t.ref&&zu(t.ref,null,f),d.push(f.ref,f.__c||m,f)),x==null&&m!=null&&(x=m),(E=!!(4&f.__u))||t.__k===f.__k?(h=Be(f,h,u,E),E&&t.__e&&(t.__e=null)):typeof f.type=="function"&&B!==void 0?h=B:m&&(h=m.nextSibling),f.__u&=-7);return r.__e=x,h}function at(u,e,r,o,a){var n,s,c,h,D,d=r.length,b=d,t=0;for(u.__k=new Array(a),n=0;n<a;n++)(s=e[n])!=null&&typeof s!="boolean"&&typeof s!="function"?(typeof s=="string"||typeof s=="number"||typeof s=="bigint"||s.constructor==String?s=u.__k[n]=Uu(null,s,null,null,null):Su(s)?s=u.__k[n]=Uu(su,{children:s},null,null,null):s.constructor===void 0&&s.__b>0?s=u.__k[n]=Uu(s.type,s.props,s.key,s.ref?s.ref:null,s.__v):u.__k[n]=s,h=n+t,s.__=u,s.__b=u.__b+1,c=null,(D=s.__i=it(s,r,h,b))!=-1&&(b--,(c=r[D])&&(c.__u|=2)),c==null||c.__v==null?(D==-1&&(a>d?t--:a<d&&t++),typeof s.type!="function"&&(s.__u|=4)):D!=h&&(D==h-1?t--:D==h+1?t++:(D>h?t--:t++,s.__u|=4))):u.__k[n]=null;if(b)for(n=0;n<d;n++)(c=r[n])!=null&&(2&c.__u)==0&&(c.__e==o&&(o=lu(c)),Se(c,c));return o}function Be(u,e,r,o){var a,n;if(typeof u.type=="function"){for(a=u.__k,n=0;a&&n<a.length;n++)a[n]&&(a[n].__=u,e=Be(a[n],e,r,o));return e}u.__e!=e&&(o&&(e&&u.type&&!e.parentNode&&(e=lu(u)),r.insertBefore(u.__e,e||null)),e=u.__e);do e=e&&e.nextSibling;while(e!=null&&e.nodeType==8);return e}function it(u,e,r,o){var a,n,s,c=u.key,h=u.type,D=e[r],d=D!=null&&(2&D.__u)==0;if(D===null&&c==null||d&&c==D.key&&h==D.type)return r;if(o>(d?1:0)){for(a=r-1,n=r+1;a>=0||n<e.length;)if((D=e[s=a>=0?a--:n++])!=null&&(2&D.__u)==0&&c==D.key&&h==D.type)return s}return-1}function _e(u,e,r){e[0]=="-"?u.setProperty(e,r??""):u[e]=r==null?"":typeof r!="number"||nt.test(e)?r:r+"px"}function mu(u,e,r,o,a){var n,s;u:if(e=="style")if(typeof r=="string")u.style.cssText=r;else{if(typeof o=="string"&&(u.style.cssText=o=""),o)for(e in o)r&&e in r||_e(u.style,e,"");if(r)for(e in r)o&&r[e]==o[e]||_e(u.style,e,r[e])}else if(e[0]=="o"&&e[1]=="n")n=e!=(e=e.replace(Ee,"$1")),s=e.toLowerCase(),e=s in u||e=="onFocusOut"||e=="onFocusIn"?s.slice(2):e.slice(2),u.l||(u.l={}),u.l[e+n]=r,r?o?r[du]=o[du]:(r[du]=Gu,u.addEventListener(e,n?Ou:Ru,n)):u.removeEventListener(e,n?Ou:Ru,n);else{if(a=="http://www.w3.org/2000/svg")e=e.replace(/xlink(H|:h)/,"h").replace(/sName$/,"s");else if(e!="width"&&e!="height"&&e!="href"&&e!="list"&&e!="form"&&e!="tabIndex"&&e!="download"&&e!="rowSpan"&&e!="colSpan"&&e!="role"&&e!="popover"&&e in u)try{u[e]=r??"";break u}catch{}typeof r=="function"||(r==null||r===!1&&e[4]!="-"?u.removeAttribute(e):u.setAttribute(e,e=="popover"&&r==1?"":r))}}function de(u){return function(e){if(this.l){var r=this.l[e.type+u];if(e[Bu]==null)e[Bu]=Gu++;else if(e[Bu]<r[du])return;return r(y.event?y.event(e):e)}}}function ye(u,e,r,o,a,n,s,c,h,D){var d,b,t,f,m,x,B,E,p,L,H,M,N,Fu,Y,q,R=e.type;if(e.constructor!==void 0)return null;128&r.__u&&(h=!!(32&r.__u),n=[c=e.__e=r.__e]),(d=y.__b)&&d(e);u:if(typeof R=="function"){b=s.length;try{if(p=e.props,L=R.prototype&&R.prototype.render,H=(d=R.contextType)&&o[d.__c],M=d?H?H.props.value:d.__:o,r.__c?E=(t=e.__c=r.__c).__=t.__E:(L?e.__c=t=new R(p,M):(e.__c=t=new yu(p,M),t.constructor=R,t.render=st),H&&H.sub(t),t.state||(t.state={}),t.__n=o,f=t.__d=!0,t.__h=[],t._sb=[]),L&&t.__s==null&&(t.__s=t.state),L&&R.getDerivedStateFromProps!=null&&(t.__s==t.state&&(t.__s=V({},t.__s)),V(t.__s,R.getDerivedStateFromProps(p,t.__s))),m=t.props,x=t.state,t.__v=e,f)L&&R.getDerivedStateFromProps==null&&t.componentWillMount!=null&&t.componentWillMount(),L&&t.componentDidMount!=null&&t.__h.push(t.componentDidMount);else{if(L&&R.getDerivedStateFromProps==null&&p!==m&&t.componentWillReceiveProps!=null&&t.componentWillReceiveProps(p,M),e.__v==r.__v||!t.__e&&t.shouldComponentUpdate!=null&&t.shouldComponentUpdate(p,t.__s,M)===!1){e.__v!=r.__v&&(t.props=p,t.state=t.__s,t.__d=!1),e.__e=r.__e,e.__k=r.__k,e.__k.some(function(_){_&&(_.__=e)}),bu.push.apply(t.__h,t._sb),t._sb=[],t.__h.length&&s.push(t);break u}t.componentWillUpdate!=null&&t.componentWillUpdate(p,t.__s,M),L&&t.componentDidUpdate!=null&&t.__h.push(function(){t.componentDidUpdate(m,x,B)})}if(t.context=M,t.props=p,t.__P=u,t.__e=!1,N=y.__r,Fu=0,L)t.state=t.__s,t.__d=!1,N&&N(e),d=t.render(t.props,t.state,t.context),bu.push.apply(t.__h,t._sb),t._sb=[];else do t.__d=!1,N&&N(e),d=t.render(t.props,t.state,t.context),t.state=t.__s;while(t.__d&&++Fu<25);t.state=t.__s,t.getChildContext!=null&&(o=V(V({},o),t.getChildContext())),L&&!f&&t.getSnapshotBeforeUpdate!=null&&(B=t.getSnapshotBeforeUpdate(m,x)),Y=d!=null&&d.type===su&&d.key==null?xe(d.props.children):d,c=me(u,Su(Y)?Y:[Y],e,r,o,a,n,s,c,h,D),t.base=e.__e,e.__u&=-161,t.__h.length&&s.push(t),E&&(t.__E=t.__=null)}catch(_){if(s.length=b,e.__v=null,h||n!=null){if(_.then){for(e.__u|=h?160:128;c&&c.nodeType==8&&c.nextSibling;)c=c.nextSibling;n!=null&&(n[n.indexOf(c)]=null),e.__e=c}else if(n!=null)for(q=n.length;q--;)Iu(n[q])}else e.__e=r.__e;e.__k==null&&(e.__k=r.__k||[]),_.then||be(e),y.__e(_,e,r)}}else n==null&&e.__v==r.__v?(e.__k=r.__k,e.__e=r.__e):c=e.__e=lt(r.__e,e,r,o,a,n,s,h,D);return(d=y.diffed)&&d(e),128&e.__u?void 0:c}function be(u){u&&(u.__c&&(u.__c.__e=!0),u.__k&&u.__k.some(be))}function Dt(u,e,r){for(var o=0;o<r.length;o++)zu(r[o],r[++o],r[++o]);y.__c&&y.__c(e,u),u.some(function(a){try{u=a.__h,a.__h=[],u.some(function(n){n.call(a)})}catch(n){y.__e(n,a.__v)}})}function xe(u){return typeof u!="object"||u==null||u.__b>0?u:Su(u)?u.map(xe):u.constructor!==void 0?null:V({},u)}function lt(u,e,r,o,a,n,s,c,h){var D,d,b,t,f,m,x,B=r.props||Ae,E=e.props,p=e.type;if(p=="svg"?a="http://www.w3.org/2000/svg":p=="math"?a="http://www.w3.org/1998/Math/MathML":a||(a="http://www.w3.org/1999/xhtml"),n!=null){for(D=0;D<n.length;D++)if((f=n[D])&&"setAttribute"in f==!!p&&(p?f.localName==p:f.nodeType==3)){u=f,n[D]=null;break}}if(u==null){if(p==null)return document.createTextNode(E);u=document.createElementNS(a,p,E.is&&E),c&&(y.__m&&y.__m(e,n),c=!1),n=null}if(p==null)B===E||c&&u.data==E||(u.data=E);else{if(n=p=="textarea"&&E.defaultValue!=null?null:n&&he.call(u.childNodes),!c&&n!=null)for(B={},D=0;D<u.attributes.length;D++)B[(f=u.attributes[D]).name]=f.value;for(D in B)f=B[D],D=="dangerouslySetInnerHTML"?b=f:D=="children"||D in E||D=="value"&&"defaultValue"in E||D=="checked"&&"defaultChecked"in E||mu(u,D,null,f,a);for(D in E)f=E[D],D=="children"?t=f:D=="dangerouslySetInnerHTML"?d=f:D=="value"?m=f:D=="checked"?x=f:c&&typeof f!="function"||B[D]===f||mu(u,D,f,B[D],a);if(d)c||b&&(d.__html==b.__html||d.__html==u.innerHTML)||(u.innerHTML=d.__html),e.__k=[];else if(b&&(u.innerHTML=""),me(e.type=="template"?u.content:u,Su(t)?t:[t],e,r,o,p=="foreignObject"?"http://www.w3.org/1999/xhtml":a,n,s,n?n[0]:r.__k&&lu(r,0),c,h),n!=null)for(D=n.length;D--;)Iu(n[D]);c&&p!="textarea"||(D="value",p=="progress"&&m==null?u.removeAttribute("value"):m!=null&&(m!==u[D]||p=="progress"&&!m||p=="option"&&m!=B[D])&&mu(u,D,m,B[D],a),D="checked",x!=null&&x!=u[D]&&mu(u,D,x,B[D],a))}return u}function zu(u,e,r){try{if(typeof u=="function"){var o=typeof u.__u=="function";o&&u.__u(),o&&e==null||(u.__u=u(e))}else u.current=e}catch(a){y.__e(a,r)}}function Se(u,e,r){var o,a;if(y.unmount&&y.unmount(u),(o=u.ref)&&(o.current&&o.current!=u.__e||zu(o,null,e)),(o=u.__c)!=null){if(o.componentWillUnmount)try{o.componentWillUnmount()}catch(n){y.__e(n,e)}o.base=o.__P=o.__n=null}if(o=u.__k)for(a=0;a<o.length;a++)o[a]&&Se(o[a],e,r||typeof u.type!="function");r||Iu(u.__e),u.__c=u.__=u.__e=void 0}function st(u,e,r){return this.constructor(u,r)}he=bu.slice,y={__e:function(u,e,r,o){for(var a,n,s;e=e.__;)if((a=e.__c)&&!a.__)try{if((n=a.constructor)&&n.getDerivedStateFromError!=null&&(a.setState(n.getDerivedStateFromError(u)),s=a.__d),a.componentDidCatch!=null&&(a.componentDidCatch(u,o||{}),s=a.__d),s)return a.__E=a}catch(c){u=c}throw u}},pe=0,tt=function(u){return u!=null&&u.constructor===void 0},yu.prototype.setState=function(u,e){var r;r=this.__s!=null&&this.__s!=this.state?this.__s:this.__s=V({},this.state),typeof u=="function"&&(u=u(V({},r),this.props)),u&&V(r,u),u!=null&&this.__v&&(e&&this._sb.push(e),fe(this))},yu.prototype.forceUpdate=function(u){this.__v&&(this.__e=!0,u&&this.__h.push(u),fe(this))},yu.prototype.render=su,X=[],Ce=typeof Promise=="function"?Promise.prototype.then.bind(Promise.resolve()):setTimeout,ve=function(u,e){return u.__v.__b-e.__v.__b},xu.__r=0,Mu=Math.random().toString(8),Bu="__d"+Mu,du="__a"+Mu,Ee=/(PointerCapture)$|Capture$/i,Gu=0,Ru=de(!1),Ou=de(!0),rt=0;function cu(u){let e=_t(ft(u,"index"),!0);return e.length===0?"/":e}function we(){let u=decodeURI(window.location.pathname);return u.endsWith("/")&&(u=u.slice(0,-1)),u.startsWith("/")&&(u=u.slice(1)),u}function Hu(){return typeof document>"u"?"":document.body?.dataset?.basepath??""}function Nu(u,e){let r=e??Hu(),o=u.startsWith("/")?u:"/"+u;return r+o}function Ft(u,e){return u===e||u.endsWith("/"+e)}function ft(u,e){return Ft(u,e)&&(u=u.slice(0,-e.length)),u}function _t(u,e){return u.startsWith("/")&&(u=u.substring(1)),!e&&u.endsWith("/")&&(u=u.slice(0,-1)),u}function ke(u){for(;u.firstChild;)u.removeChild(u.firstChild)}(function(){function u(){var o=we(),a=Hu();return a&&o.startsWith(a.replace(/^\\//,""))&&(o=o.slice(a.replace(/^\\//,"").length),o.startsWith("/")&&(o=o.slice(1))),o}function e(o){var a=document.querySelector('script[src="'+o+'"]');return a?Promise.resolve():new Promise(function(n,s){var c=document.createElement("script");c.src=o,c.crossOrigin="anonymous",c.onload=n,c.onerror=s,document.head.appendChild(c)})}Promise.all([e("https://cdn.jsdelivr.net/npm/d3@7/dist/d3.min.js"),e("https://cdn.jsdelivr.net/npm/pixi.js@8/dist/pixi.js")]).then(function(){r()}).catch(function(o){console.error("[Graph] Failed to load libraries:",o);for(var a=document.querySelectorAll(".graph-container"),n=0;n<a.length;n++)a[n].textContent="Graph could not load. Check your network connection.",a[n].style.display="flex",a[n].style.alignItems="center",a[n].style.justifyContent="center",a[n].style.color="var(--gray)",a[n].style.fontSize="0.9rem"});function r(){var o=window.d3,a=window.PIXI;if(!o||!a){console.error("[Graph] Libraries not loaded");return}var n="graph-visited";function s(){return new Set(JSON.parse(localStorage.getItem(n)||"[]"))}function c(_){var w=s();w.add(_),localStorage.setItem(n,JSON.stringify(Array.from(w)))}function h(_,w){if(!_)return w;var A=document.createElement("div");A.style.color=_,A.style.position="absolute",A.style.visibility="hidden",document.body.appendChild(A);var g=getComputedStyle(A).color;return A.remove(),g||w}async function D(_,w,A){var g=cu(w);g===""&&(g="index");var K=s();if(ke(_),A!==void 0&&A!==t)return console.log("[Graph] Stale render, skipping"),function(){};var S=JSON.parse(_.dataset.cfg||"{}"),fu=S.drag,Le=S.zoom,$u=S.depth,Vu=S.scale||1,Pe=S.repelForce||.5,je=S.centerForce||.3,Te=S.linkDistance||30,We=S.fontSize||.6,Me=S.opacityScale||1,Ue=S.removeTags||[],Re=S.showTags,Oe=S.focusOnHover,Ge=S.enableRadial,uu;try{var qu=await fetchData;uu=new Map;for(var Ku in qu)uu.set(cu(Ku),qu[Ku])}catch(i){return console.error("[Graph] Error loading data:",i),function(){}}var O=_.offsetWidth,G=Math.max(_.offsetHeight,250),eu=[],hu=[],Ju=new Set(uu.keys());uu.forEach(function(i,l){for(var F=i.links||[],v=0;v<F.length;v++){var C=cu(F[v]);Ju.has(C)&&eu.push({source:l,target:C})}if(Re)for(var T=i.tags||[],v=0;v<T.length;v++){var $=T[v];if(Ue.indexOf($)===-1){var J=cu("tags/"+$);hu.indexOf(J)===-1&&hu.push(J),eu.push({source:l,target:J})}}});var tu=new Set;if($u>=0)for(var pu=[g],Cu=new Set([g]),Xu=0;Xu<=$u&&pu.length>0;Xu++){for(var wu=[],ku=0;ku<pu.length;ku++){var Lu=pu[ku];tu.add(Lu);for(var Pu=0;Pu<eu.length;Pu++){var W=eu[Pu];W.source===Lu&&!Cu.has(W.target)&&(Cu.add(W.target),wu.push(W.target)),W.target===Lu&&!Cu.has(W.source)&&(Cu.add(W.source),wu.push(W.source))}}pu=wu}else{Ju.forEach(function(i){tu.add(i)});for(var k=0;k<hu.length;k++)tu.add(hu[k])}var ru=[],ju=new Map;tu.forEach(function(i){var l=i.startsWith("tags/"),F=l?"#"+i.substring(5):uu.get(i)?.title||i,v=l?[]:uu.get(i)?.tags||[],C={id:i,text:F,tags:v,x:Math.random()*O-O/2,y:Math.random()*G-G/2,vx:0,vy:0};ru.push(C),ju.set(i,C)});for(var z=[],k=0;k<eu.length;k++){var W=eu[k];if(tu.has(W.source)&&tu.has(W.target)){var Yu=ju.get(W.source),Zu=ju.get(W.target);Yu&&Zu&&z.push({source:Yu,target:Zu})}}var Z=getComputedStyle(document.documentElement),Ie=h(Z.getPropertyValue("--secondary").trim(),"#c792ea"),Qu=h(Z.getPropertyValue("--tertiary").trim(),"#82aaff"),ue=h(Z.getPropertyValue("--gray").trim(),"#6c6c6c"),ee=h(Z.getPropertyValue("--lightgray").trim(),"#d4d4d4"),ze=h(Z.getPropertyValue("--dark").trim(),"#1a1a1a"),He=h(Z.getPropertyValue("--light").trim(),"#f5f5f5"),Ne=Z.getPropertyValue("--bodyFont").trim()||"inherit",Q=new a.Application;await Q.init({width:O,height:G,antialias:!0,backgroundAlpha:0,resolution:window.devicePixelRatio||1,autoDensity:!0,eventMode:"static"}),_.appendChild(Q.canvas);var nu=new a.Container;Q.stage.addChild(nu);var ou=o.forceSimulation(ru).force("charge",o.forceManyBody().strength(-100*Pe)).force("center",o.forceCenter().strength(je)).force("link",o.forceLink(z).distance(Te)).force("collide",o.forceCollide().radius(function(i){for(var l=0,F=0;F<z.length;F++)(z[F].source.id===i.id||z[F].target.id===i.id)&&l++;return 2+Math.sqrt(l)}).iterations(3));if(Ge){var Tu=Math.min(O,G)/2*.8;ou.force("radial",o.forceRadial(Tu).strength(.2))}var te=new a.Container,re=new a.Container,vu=new a.Container;nu.addChild(te),nu.addChild(re),nu.addChild(vu);var P=[],I=[],_u=null,au=new Set,ne=0,Eu=!1,j=o.zoomIdentity;function oe(i){for(var l=0,F=0;F<z.length;F++)(z[F].source.id===i.id||z[F].target.id===i.id)&&l++;return 2+Math.sqrt(l)}function $e(i){var l=i.id===g;return l?Ie:K.has(i.id)||i.id.startsWith("tags/")?Qu:ue}function Wu(i){if(_u=i,i===null){au=new Set;for(var l=0;l<P.length;l++)P[l].active=!1;for(var l=0;l<I.length;l++)I[l].active=!1}else{au=new Set;for(var l=0;l<I.length;l++){var F=I[l].simulationData;F.source.id===i||F.target.id===i?(au.add(F.source.id),au.add(F.target.id),I[l].active=!0):I[l].active=!1}au.add(i);for(var l=0;l<P.length;l++)au.has(P[l].simulationData.id)?P[l].active=!0:P[l].active=!1}}function Ve(){for(var i=0;i<I.length;i++){var l=I[i],F=1;_u!==null&&(F=l.active?1:.2),l.alpha=F,l.color=l.active?ue:ee}}function qe(){for(var i=1/Vu,l=i*1.1,F=0;F<P.length;F++){var v=P[F];_u===v.simulationData.id?(v.label.alpha=1,v.label.scale.set(l)):v.label.scale.set(i)}}function Ke(){for(var i=0;i<P.length;i++){var l=P[i],F=1;_u!==null&&Oe&&(F=l.active?1:.2),l.gfx.alpha=F}}function Au(){Ke(),Ve(),qe()}for(var k=0;k<ru.length;k++){var iu=ru[k],ae=iu.id,ie=ae.startsWith("tags/"),Tu=oe(iu),De=$e(iu),Du=new a.Text({text:iu.text,style:{fontSize:We*15,fill:ze,fontFamily:Ne},resolution:window.devicePixelRatio*4});Du.anchor.set(.5,1.2),Du.alpha=0,Du.scale.set(1/Vu),vu.addChild(Du);var U=new a.Graphics;U.circle(0,0,Tu),U.fill({color:ie?He:De}),ie&&U.stroke({width:2,color:Qu}),U.eventMode="static",U.cursor="pointer",U.label=ae,(function(F,v,C){var T=0;v.on("pointerover",function($){Wu(F.id),T=C.alpha,Eu||Au()}),v.on("pointerleave",function(){Wu(null),C.alpha=T,Eu||Au()})})(iu,U,Du),re.addChild(U),P.push({simulationData:iu,gfx:U,label:Du,color:De,alpha:1,active:!1})}for(var k=0;k<z.length;k++){var W=z[k],U=new a.Graphics;U.eventMode="none",te.addChild(U),I.push({simulationData:W,gfx:U,color:ee,alpha:1,active:!1})}if(fu){var Je=function(i){for(var l=(i.x-j.x)/j.k,F=(i.y-j.y)/j.k,v=0;v<ru.length;v++){var C=ru[v],T=l-C.x-O/2,$=F-C.y-G/2,J=Math.sqrt(T*T+$*$),gu=oe(C);if(J<gu+5)return C}return null},Xe=function(i){i.active||ou.alphaTarget(1).restart(),i.subject.fx=i.subject.x,i.subject.fy=i.subject.y;var l=(i.x-j.x)/j.k-O/2,F=(i.y-j.y)/j.k-G/2;i.subject.__dragOffset={x:l-i.subject.x,y:F-i.subject.y},ne=Date.now(),Eu=!0,_u=i.subject.id},Ye=function(i){var l=(i.x-j.x)/j.k-O/2,F=(i.y-j.y)/j.k-G/2;i.subject.fx=l-i.subject.__dragOffset.x,i.subject.fy=F-i.subject.__dragOffset.y},Ze=function(i){if(i.active||ou.alphaTarget(0),i.subject.fx=null,i.subject.fy=null,Eu=!1,Wu(null),Au(),Date.now()-ne<500){var l=Nu(i.subject.id);window.location.href=l}},Qe=o.drag().container(Q.canvas).subject(Je).on("start",Xe).on("drag",Ye).on("end",Ze);o.select(Q.canvas).call(Qe)}else for(var k=0;k<P.length;k++)(function(l){l.gfx.on("click",function(){var F=Nu(l.simulationData.id);window.location.href=F})})(P[k]);if(Le){var ut=function(i){j=i.transform,nu.scale.set(j.k,j.k),nu.position.set(j.x,j.y);for(var l=j.k*Me,F=Math.max((l-1)/3.75,0),v=[],C=0;C<P.length;C++)P[C].active&&v.push(P[C].label);for(var C=0;C<vu.children.length;C++){var T=vu.children[C];v.indexOf(T)===-1&&(T.alpha=F)}},et=o.zoom().extent([[0,0],[O,G]]).scaleExtent([.25,4]).on("zoom",ut);o.select(Q.canvas).call(et)}var le=!1;function se(){if(!le){for(var i=0;i<P.length;i++){var l=P[i],F=l.simulationData.x,v=l.simulationData.y;F!=null&&v!=null&&(l.gfx.position.set(F+O/2,v+G/2),l.label&&l.label.position.set(F+O/2,v+G/2))}for(var i=0;i<I.length;i++){var C=I[i],T=C.simulationData,$=T.source.x,J=T.source.y,gu=T.target.x,ce=T.target.y;$!=null&&J!=null&&gu!=null&&ce!=null&&(C.gfx.clear(),C.gfx.moveTo($+O/2,J+G/2),C.gfx.lineTo(gu+O/2,ce+G/2),C.gfx.stroke({alpha:C.alpha,width:1,color:C.color}))}requestAnimationFrame(se)}}return ou.on("tick",function(){}),ou.restart(),Au(),se(),function(){le=!0,ou.stop();try{Q.destroy(!0)}catch{}}}var d=[],b=[],t=0;function f(){for(var _=0;_<d.length;_++)d[_]();d=[]}function m(){for(var _=0;_<b.length;_++)b[_]();b=[]}var x=[],B=[],E=null,p=null,L=null;function H(){m();for(var _=0;_<x.length;_++){x[_].classList.remove("active");var w=x[_].closest(".sidebar");w&&(w.style.zIndex="")}}function M(){for(var _=0;_<x.length;_++)if(x[_].classList.contains("active"))return!0;return!1}function N(){m();for(var _=u(),w=0;w<x.length;w++){var A=x[w];A.classList.add("active");var g=A.closest(".sidebar");g&&(g.style.zIndex="1");var K=A.querySelector(".global-graph-container");K&&(function(S){D(S,_,void 0).then(function(fu){b.push(fu)}).catch(function(fu){console.error("[Graph] Global render error:",fu)})})(K)}}function Fu(){M()?H():N()}function Y(){f();var _=++t,w=u();c(w);for(var A=document.querySelectorAll(".graph-container"),g=0;g<A.length;g++)(function(K){D(K,w,_).then(function(S){_===t&&d.push(S)}).catch(function(S){console.error("[Graph] Local render error:",S)})})(A[g])}function q(_){var w=_.detail?_.detail.url:u();if(c(cu(w)),Y(),x=Array.from(document.querySelectorAll(".global-graph-outer")),L)for(var A=0;A<B.length;A++)B[A].removeEventListener("click",L);B=Array.from(document.querySelectorAll(".global-graph-icon")),L=function(){Fu()};for(var A=0;A<B.length;A++)B[A].addEventListener("click",L);E&&document.removeEventListener("click",E),E=function(g){if(M()){var K=g.target.closest(".global-graph-container"),S=g.target.closest(".global-graph-icon");!K&&!S&&H()}},document.addEventListener("click",E),p&&document.removeEventListener("keydown",p),p=function(g){if(g.key==="Escape"){M()&&H();return}g.key==="g"&&(g.ctrlKey||g.metaKey)&&!g.shiftKey&&(g.preventDefault(),Fu())},document.addEventListener("keydown",p),M()&&N()}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",function(){q({detail:{url:u()}})}):q({detail:{url:u()}}),document.addEventListener("prenav",function(){f(),m()}),document.addEventListener("nav",q),document.addEventListener("render",q);function R(){Y(),M()&&N()}document.addEventListener("themechange",R)}})();
318
318
  `;
319
319
  var l;
320
320
  l = { __e: function(n2, l2, u3, t2) {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../node_modules/@quartz-community/utils/src/lang.ts","../src/i18n/locales/en-US.ts","../src/i18n/locales/en-GB.ts","../src/i18n/locales/ar-SA.ts","../src/i18n/locales/ca-ES.ts","../src/i18n/locales/cs-CZ.ts","../src/i18n/locales/de-DE.ts","../src/i18n/locales/es-ES.ts","../src/i18n/locales/fa-IR.ts","../src/i18n/locales/fi-FI.ts","../src/i18n/locales/fr-FR.ts","../src/i18n/locales/he-IL.ts","../src/i18n/locales/hu-HU.ts","../src/i18n/locales/id-ID.ts","../src/i18n/locales/it-IT.ts","../src/i18n/locales/ja-JP.ts","../src/i18n/locales/kk-KZ.ts","../src/i18n/locales/ko-KR.ts","../src/i18n/locales/lt-LT.ts","../src/i18n/locales/nb-NO.ts","../src/i18n/locales/nl-NL.ts","../src/i18n/locales/pl-PL.ts","../src/i18n/locales/pt-BR.ts","../src/i18n/locales/ro-RO.ts","../src/i18n/locales/ru-RU.ts","../src/i18n/locales/th-TH.ts","../src/i18n/locales/tr-TR.ts","../src/i18n/locales/uk-UA.ts","../src/i18n/locales/vi-VN.ts","../src/i18n/locales/zh-CN.ts","../src/i18n/locales/zh-TW.ts","../src/i18n/index.ts","../src/components/styles/graph.scss","../src/components/scripts/graph.inline.ts","../node_modules/preact/src/constants.js","../node_modules/preact/src/options.js","../node_modules/preact/src/diff/catch-error.js","../node_modules/preact/src/component.js","../node_modules/preact/src/diff/props.js","../node_modules/preact/src/create-context.js","../node_modules/preact/jsx-runtime/src/index.js","../src/components/Graph.tsx"],"names":["options","__e","error","vnode","oldVNode","errorInfo","component","ctor","handled","__","__c","constructor","getDerivedStateFromError","setState","__d","componentDidCatch","__E","e","Promise","prototype","then","bind","resolve","setTimeout","Math","random","toString","vnodeId","createVNode","type","props","key","isStaticChildren","__source","__self","ref","i","normalizedProps","__k","__b","__v","__i","__u","defaultProps","u"],"mappings":"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","file":"index.js","sourcesContent":["export function capitalize(s: string): string {\n return s.substring(0, 1).toUpperCase() + s.substring(1);\n}\n\nexport function classNames(...classes: (string | undefined | null | false)[]): string {\n return classes.filter(Boolean).join(\" \");\n}\n","export default {\n components: {\n graph: {\n title: \"Graph View\",\n },\n },\n};\n","export default {\n components: {\n graph: {\n title: \"Graph View\",\n },\n },\n};\n","export default {\n components: {\n graph: {\n title: \"التمثيل التفاعلي\",\n },\n },\n};\n","export default {\n components: {\n graph: {\n title: \"Vista Gràfica\",\n },\n },\n};\n","export default {\n components: {\n graph: {\n title: \"Graf\",\n },\n },\n};\n","export default {\n components: {\n graph: {\n title: \"Graphansicht\",\n },\n },\n};\n","export default {\n components: {\n graph: {\n title: \"Vista Gráfica\",\n },\n },\n};\n","export default {\n components: {\n graph: {\n title: \"نمای گراف\",\n },\n },\n};\n","export default {\n components: {\n graph: {\n title: \"Verkkonäkymä\",\n },\n },\n};\n","export default {\n components: {\n graph: {\n title: \"Vue Graphique\",\n },\n },\n};\n","export default {\n components: {\n graph: {\n title: \"מבט גרף\",\n },\n },\n};\n","export default {\n components: {\n graph: {\n title: \"Grafikonnézet\",\n },\n },\n};\n","export default {\n components: {\n graph: {\n title: \"Tampilan Grafik\",\n },\n },\n};\n","export default {\n components: {\n graph: {\n title: \"Vista grafico\",\n },\n },\n};\n","export default {\n components: {\n graph: {\n title: \"グラフビュー\",\n },\n },\n};\n","export default {\n components: {\n graph: {\n title: \"Граф көрінісі\",\n },\n },\n};\n","export default {\n components: {\n graph: {\n title: \"그래프 뷰\",\n },\n },\n};\n","export default {\n components: {\n graph: {\n title: \"Grafiko Vaizdas\",\n },\n },\n};\n","export default {\n components: {\n graph: {\n title: \"Graf-visning\",\n },\n },\n};\n","export default {\n components: {\n graph: {\n title: \"Grafiekweergave\",\n },\n },\n};\n","export default {\n components: {\n graph: {\n title: \"Graf\",\n },\n },\n};\n","export default {\n components: {\n graph: {\n title: \"Visão de gráfico\",\n },\n },\n};\n","export default {\n components: {\n graph: {\n title: \"Graf\",\n },\n },\n};\n","export default {\n components: {\n graph: {\n title: \"Вид графа\",\n },\n },\n};\n","export default {\n components: {\n graph: {\n title: \"มุมมองกราฟ\",\n },\n },\n};\n","export default {\n components: {\n graph: {\n title: \"Grafik Görünümü\",\n },\n },\n};\n","export default {\n components: {\n graph: {\n title: \"Вигляд графа\",\n },\n },\n};\n","export default {\n components: {\n graph: {\n title: \"Sơ đồ\",\n },\n },\n};\n","export default {\n components: {\n graph: {\n title: \"关系图谱\",\n },\n },\n};\n","export default {\n components: {\n graph: {\n title: \"關係圖譜\",\n },\n },\n};\n","import enUS from \"./locales/en-US\";\nimport enGB from \"./locales/en-GB\";\nimport arSA from \"./locales/ar-SA\";\nimport caES from \"./locales/ca-ES\";\nimport csCZ from \"./locales/cs-CZ\";\nimport deDE from \"./locales/de-DE\";\nimport esES from \"./locales/es-ES\";\nimport faIR from \"./locales/fa-IR\";\nimport fiFI from \"./locales/fi-FI\";\nimport frFR from \"./locales/fr-FR\";\nimport heIL from \"./locales/he-IL\";\nimport huHU from \"./locales/hu-HU\";\nimport idID from \"./locales/id-ID\";\nimport itIT from \"./locales/it-IT\";\nimport jaJP from \"./locales/ja-JP\";\nimport kkKZ from \"./locales/kk-KZ\";\nimport koKR from \"./locales/ko-KR\";\nimport ltLT from \"./locales/lt-LT\";\nimport nbNO from \"./locales/nb-NO\";\nimport nlNL from \"./locales/nl-NL\";\nimport plPL from \"./locales/pl-PL\";\nimport ptBR from \"./locales/pt-BR\";\nimport roRO from \"./locales/ro-RO\";\nimport ruRU from \"./locales/ru-RU\";\nimport thTH from \"./locales/th-TH\";\nimport trTR from \"./locales/tr-TR\";\nimport ukUA from \"./locales/uk-UA\";\nimport viVN from \"./locales/vi-VN\";\nimport zhCN from \"./locales/zh-CN\";\nimport zhTW from \"./locales/zh-TW\";\n\nconst locales: Record<string, typeof enUS> = {\n \"en-US\": enUS,\n \"en-GB\": enGB,\n \"ar-SA\": arSA,\n \"ca-ES\": caES,\n \"cs-CZ\": csCZ,\n \"de-DE\": deDE,\n \"es-ES\": esES,\n \"fa-IR\": faIR,\n \"fi-FI\": fiFI,\n \"fr-FR\": frFR,\n \"he-IL\": heIL,\n \"hu-HU\": huHU,\n \"id-ID\": idID,\n \"it-IT\": itIT,\n \"ja-JP\": jaJP,\n \"kk-KZ\": kkKZ,\n \"ko-KR\": koKR,\n \"lt-LT\": ltLT,\n \"nb-NO\": nbNO,\n \"nl-NL\": nlNL,\n \"pl-PL\": plPL,\n \"pt-BR\": ptBR,\n \"ro-RO\": roRO,\n \"ru-RU\": ruRU,\n \"th-TH\": thTH,\n \"tr-TR\": trTR,\n \"uk-UA\": ukUA,\n \"vi-VN\": viVN,\n \"zh-CN\": zhCN,\n \"zh-TW\": zhTW,\n};\n\nexport function i18n(locale: string) {\n return locales[locale] || enUS;\n}\n",".graph > h3 {\n font-size: 1rem;\n margin: 0;\n}\n.graph > .graph-outer {\n border-radius: 5px;\n border: 1px solid var(--lightgray);\n box-sizing: border-box;\n height: 250px;\n margin: 0.5em 0;\n position: relative;\n overflow: hidden;\n}\n.graph > .graph-outer > .global-graph-icon {\n cursor: pointer;\n background: none;\n border: none;\n color: var(--dark);\n opacity: 0.5;\n width: 24px;\n height: 24px;\n position: absolute;\n padding: 0.2rem;\n margin: 0.3rem;\n top: 0;\n right: 0;\n border-radius: 4px;\n background-color: transparent;\n transition: background-color 0.5s ease;\n}\n.graph > .graph-outer > .global-graph-icon:hover {\n background-color: var(--lightgray);\n}\n.graph > .global-graph-outer {\n position: fixed;\n z-index: 9999;\n left: 0;\n top: 0;\n width: 100vw;\n height: 100%;\n backdrop-filter: blur(4px);\n display: none;\n overflow: hidden;\n}\n.graph > .global-graph-outer.active {\n display: inline-block;\n}\n.graph > .global-graph-outer > .global-graph-container {\n border: 1px solid var(--lightgray);\n background-color: var(--light);\n border-radius: 5px;\n box-sizing: border-box;\n position: fixed;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n height: 80vh;\n width: 80vw;\n}\n@media all and (max-width: 800px) {\n .graph > .global-graph-outer > .global-graph-container {\n width: 90%;\n }\n}\n\n.graph-container {\n width: 100%;\n height: 100%;\n}","var Ct=Object.hasOwnProperty;var pe,y,Ce,tt,J,fe,ve,Ee,Mu,Bu,du,Ae,Iu,Ru,Ou,rt,ge={},bu=[],nt=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,Su=Array.isArray;function $(u,e){for(var t in e)u[t]=e[t];return u}function zu(u){u&&u.parentNode&&u.parentNode.removeChild(u)}function Uu(u,e,t,a,o){var n={type:u,props:e,key:t,ref:a,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:o??++Ce,__i:-1,__u:0};return o==null&&y.vnode!=null&&y.vnode(n),n}function cu(u){return u.children}function yu(u,e){this.props=u,this.context=e}function su(u,e){if(e==null)return u.__?su(u.__,u.__i+1):null;for(var t;e<u.__k.length;e++)if((t=u.__k[e])!=null&&t.__e!=null)return t.__e;return typeof u.type==\"function\"?su(u):null}function ot(u){if(u.__P&&u.__d){var e=u.__v,t=e.__e,a=[],o=[],n=$({},e);n.__v=e.__v+1,y.vnode&&y.vnode(n),be(u.__P,n,e,u.__n,u.__P.namespaceURI,32&e.__u?[t]:null,a,t??su(e),!!(32&e.__u),o),n.__v=e.__v,n.__.__k[n.__i]=n,Dt(a,n,o),e.__e=e.__=null,n.__e!=t&&me(n)}}function me(u){if((u=u.__)!=null&&u.__c!=null)return u.__e=u.__c.base=null,u.__k.some(function(e){if(e!=null&&e.__e!=null)return u.__e=u.__c.base=e.__e}),me(u)}function _e(u){(!u.__d&&(u.__d=!0)&&J.push(u)&&!xu.__r++||fe!=y.debounceRendering)&&((fe=y.debounceRendering)||ve)(xu)}function xu(){try{for(var u,e=1;J.length;)J.length>e&&J.sort(Ee),u=J.shift(),e=J.length,ot(u)}finally{J.length=xu.__r=0}}function Be(u,e,t,a,o,n,s,c,h,D,_){var r,E,f,b,S,B,p,C=a&&a.__k||bu,M=e.length;for(h=at(t,e,C,h,M),r=0;r<M;r++)(f=t.__k[r])!=null&&(E=f.__i!=-1&&C[f.__i]||ge,f.__i=r,B=be(u,f,E,o,n,s,c,h,D,_),b=f.__e,f.ref&&E.ref!=f.ref&&(E.ref&&Hu(E.ref,null,f),_.push(f.ref,f.__c||b,f)),S==null&&b!=null&&(S=b),(p=!!(4&f.__u))||E.__k===f.__k?(h=ye(f,h,u,p),p&&E.__e&&(E.__e=null)):typeof f.type==\"function\"&&B!==void 0?h=B:b&&(h=b.nextSibling),f.__u&=-7);return t.__e=S,h}function at(u,e,t,a,o){var n,s,c,h,D,_=t.length,r=_,E=0;for(u.__k=new Array(o),n=0;n<o;n++)(s=e[n])!=null&&typeof s!=\"boolean\"&&typeof s!=\"function\"?(typeof s==\"string\"||typeof s==\"number\"||typeof s==\"bigint\"||s.constructor==String?s=u.__k[n]=Uu(null,s,null,null,null):Su(s)?s=u.__k[n]=Uu(cu,{children:s},null,null,null):s.constructor===void 0&&s.__b>0?s=u.__k[n]=Uu(s.type,s.props,s.key,s.ref?s.ref:null,s.__v):u.__k[n]=s,h=n+E,s.__=u,s.__b=u.__b+1,c=null,(D=s.__i=it(s,t,h,r))!=-1&&(r--,(c=t[D])&&(c.__u|=2)),c==null||c.__v==null?(D==-1&&(o>_?E--:o<_&&E++),typeof s.type!=\"function\"&&(s.__u|=4)):D!=h&&(D==h-1?E--:D==h+1?E++:(D>h?E--:E++,s.__u|=4))):u.__k[n]=null;if(r)for(n=0;n<_;n++)(c=t[n])!=null&&(2&c.__u)==0&&(c.__e==a&&(a=su(c)),Se(c,c));return a}function ye(u,e,t,a){var o,n;if(typeof u.type==\"function\"){for(o=u.__k,n=0;o&&n<o.length;n++)o[n]&&(o[n].__=u,e=ye(o[n],e,t,a));return e}u.__e!=e&&(a&&(e&&u.type&&!e.parentNode&&(e=su(u)),t.insertBefore(u.__e,e||null)),e=u.__e);do e=e&&e.nextSibling;while(e!=null&&e.nodeType==8);return e}function it(u,e,t,a){var o,n,s,c=u.key,h=u.type,D=e[t],_=D!=null&&(2&D.__u)==0;if(D===null&&c==null||_&&c==D.key&&h==D.type)return t;if(a>(_?1:0)){for(o=t-1,n=t+1;o>=0||n<e.length;)if((D=e[s=o>=0?o--:n++])!=null&&(2&D.__u)==0&&c==D.key&&h==D.type)return s}return-1}function de(u,e,t){e[0]==\"-\"?u.setProperty(e,t??\"\"):u[e]=t==null?\"\":typeof t!=\"number\"||nt.test(e)?t:t+\"px\"}function mu(u,e,t,a,o){var n,s;u:if(e==\"style\")if(typeof t==\"string\")u.style.cssText=t;else{if(typeof a==\"string\"&&(u.style.cssText=a=\"\"),a)for(e in a)t&&e in t||de(u.style,e,\"\");if(t)for(e in t)a&&t[e]==a[e]||de(u.style,e,t[e])}else if(e[0]==\"o\"&&e[1]==\"n\")n=e!=(e=e.replace(Ae,\"$1\")),s=e.toLowerCase(),e=s in u||e==\"onFocusOut\"||e==\"onFocusIn\"?s.slice(2):e.slice(2),u.l||(u.l={}),u.l[e+n]=t,t?a?t[du]=a[du]:(t[du]=Iu,u.addEventListener(e,n?Ou:Ru,n)):u.removeEventListener(e,n?Ou:Ru,n);else{if(o==\"http://www.w3.org/2000/svg\")e=e.replace(/xlink(H|:h)/,\"h\").replace(/sName$/,\"s\");else if(e!=\"width\"&&e!=\"height\"&&e!=\"href\"&&e!=\"list\"&&e!=\"form\"&&e!=\"tabIndex\"&&e!=\"download\"&&e!=\"rowSpan\"&&e!=\"colSpan\"&&e!=\"role\"&&e!=\"popover\"&&e in u)try{u[e]=t??\"\";break u}catch{}typeof t==\"function\"||(t==null||t===!1&&e[4]!=\"-\"?u.removeAttribute(e):u.setAttribute(e,e==\"popover\"&&t==1?\"\":t))}}function he(u){return function(e){if(this.l){var t=this.l[e.type+u];if(e[Bu]==null)e[Bu]=Iu++;else if(e[Bu]<t[du])return;return t(y.event?y.event(e):e)}}}function be(u,e,t,a,o,n,s,c,h,D){var _,r,E,f,b,S,B,p,C,M,G,I,Q,X,uu,T=e.type;if(e.constructor!==void 0)return null;128&t.__u&&(h=!!(32&t.__u),n=[c=e.__e=t.__e]),(_=y.__b)&&_(e);u:if(typeof T==\"function\")try{if(p=e.props,C=T.prototype&&T.prototype.render,M=(_=T.contextType)&&a[_.__c],G=_?M?M.props.value:_.__:a,t.__c?B=(r=e.__c=t.__c).__=r.__E:(C?e.__c=r=new T(p,G):(e.__c=r=new yu(p,G),r.constructor=T,r.render=st),M&&M.sub(r),r.state||(r.state={}),r.__n=a,E=r.__d=!0,r.__h=[],r._sb=[]),C&&r.__s==null&&(r.__s=r.state),C&&T.getDerivedStateFromProps!=null&&(r.__s==r.state&&(r.__s=$({},r.__s)),$(r.__s,T.getDerivedStateFromProps(p,r.__s))),f=r.props,b=r.state,r.__v=e,E)C&&T.getDerivedStateFromProps==null&&r.componentWillMount!=null&&r.componentWillMount(),C&&r.componentDidMount!=null&&r.__h.push(r.componentDidMount);else{if(C&&T.getDerivedStateFromProps==null&&p!==f&&r.componentWillReceiveProps!=null&&r.componentWillReceiveProps(p,G),e.__v==t.__v||!r.__e&&r.shouldComponentUpdate!=null&&r.shouldComponentUpdate(p,r.__s,G)===!1){e.__v!=t.__v&&(r.props=p,r.state=r.__s,r.__d=!1),e.__e=t.__e,e.__k=t.__k,e.__k.some(function(V){V&&(V.__=e)}),bu.push.apply(r.__h,r._sb),r._sb=[],r.__h.length&&s.push(r);break u}r.componentWillUpdate!=null&&r.componentWillUpdate(p,r.__s,G),C&&r.componentDidUpdate!=null&&r.__h.push(function(){r.componentDidUpdate(f,b,S)})}if(r.context=G,r.props=p,r.__P=u,r.__e=!1,I=y.__r,Q=0,C)r.state=r.__s,r.__d=!1,I&&I(e),_=r.render(r.props,r.state,r.context),bu.push.apply(r.__h,r._sb),r._sb=[];else do r.__d=!1,I&&I(e),_=r.render(r.props,r.state,r.context),r.state=r.__s;while(r.__d&&++Q<25);r.state=r.__s,r.getChildContext!=null&&(a=$($({},a),r.getChildContext())),C&&!E&&r.getSnapshotBeforeUpdate!=null&&(S=r.getSnapshotBeforeUpdate(f,b)),X=_!=null&&_.type===cu&&_.key==null?xe(_.props.children):_,c=Be(u,Su(X)?X:[X],e,t,a,o,n,s,c,h,D),r.base=e.__e,e.__u&=-161,r.__h.length&&s.push(r),B&&(r.__E=r.__=null)}catch(V){if(e.__v=null,h||n!=null)if(V.then){for(e.__u|=h?160:128;c&&c.nodeType==8&&c.nextSibling;)c=c.nextSibling;n[n.indexOf(c)]=null,e.__e=c}else{for(uu=n.length;uu--;)zu(n[uu]);Gu(e)}else e.__e=t.__e,e.__k=t.__k,V.then||Gu(e);y.__e(V,e,t)}else n==null&&e.__v==t.__v?(e.__k=t.__k,e.__e=t.__e):c=e.__e=lt(t.__e,e,t,a,o,n,s,h,D);return(_=y.diffed)&&_(e),128&e.__u?void 0:c}function Gu(u){u&&(u.__c&&(u.__c.__e=!0),u.__k&&u.__k.some(Gu))}function Dt(u,e,t){for(var a=0;a<t.length;a++)Hu(t[a],t[++a],t[++a]);y.__c&&y.__c(e,u),u.some(function(o){try{u=o.__h,o.__h=[],u.some(function(n){n.call(o)})}catch(n){y.__e(n,o.__v)}})}function xe(u){return typeof u!=\"object\"||u==null||u.__b>0?u:Su(u)?u.map(xe):$({},u)}function lt(u,e,t,a,o,n,s,c,h){var D,_,r,E,f,b,S,B=t.props||ge,p=e.props,C=e.type;if(C==\"svg\"?o=\"http://www.w3.org/2000/svg\":C==\"math\"?o=\"http://www.w3.org/1998/Math/MathML\":o||(o=\"http://www.w3.org/1999/xhtml\"),n!=null){for(D=0;D<n.length;D++)if((f=n[D])&&\"setAttribute\"in f==!!C&&(C?f.localName==C:f.nodeType==3)){u=f,n[D]=null;break}}if(u==null){if(C==null)return document.createTextNode(p);u=document.createElementNS(o,C,p.is&&p),c&&(y.__m&&y.__m(e,n),c=!1),n=null}if(C==null)B===p||c&&u.data==p||(u.data=p);else{if(n=n&&pe.call(u.childNodes),!c&&n!=null)for(B={},D=0;D<u.attributes.length;D++)B[(f=u.attributes[D]).name]=f.value;for(D in B)f=B[D],D==\"dangerouslySetInnerHTML\"?r=f:D==\"children\"||D in p||D==\"value\"&&\"defaultValue\"in p||D==\"checked\"&&\"defaultChecked\"in p||mu(u,D,null,f,o);for(D in p)f=p[D],D==\"children\"?E=f:D==\"dangerouslySetInnerHTML\"?_=f:D==\"value\"?b=f:D==\"checked\"?S=f:c&&typeof f!=\"function\"||B[D]===f||mu(u,D,f,B[D],o);if(_)c||r&&(_.__html==r.__html||_.__html==u.innerHTML)||(u.innerHTML=_.__html),e.__k=[];else if(r&&(u.innerHTML=\"\"),Be(e.type==\"template\"?u.content:u,Su(E)?E:[E],e,t,a,C==\"foreignObject\"?\"http://www.w3.org/1999/xhtml\":o,n,s,n?n[0]:t.__k&&su(t,0),c,h),n!=null)for(D=n.length;D--;)zu(n[D]);c||(D=\"value\",C==\"progress\"&&b==null?u.removeAttribute(\"value\"):b!=null&&(b!==u[D]||C==\"progress\"&&!b||C==\"option\"&&b!=B[D])&&mu(u,D,b,B[D],o),D=\"checked\",S!=null&&S!=u[D]&&mu(u,D,S,B[D],o))}return u}function Hu(u,e,t){try{if(typeof u==\"function\"){var a=typeof u.__u==\"function\";a&&u.__u(),a&&e==null||(u.__u=u(e))}else u.current=e}catch(o){y.__e(o,t)}}function Se(u,e,t){var a,o;if(y.unmount&&y.unmount(u),(a=u.ref)&&(a.current&&a.current!=u.__e||Hu(a,null,e)),(a=u.__c)!=null){if(a.componentWillUnmount)try{a.componentWillUnmount()}catch(n){y.__e(n,e)}a.base=a.__P=null}if(a=u.__k)for(o=0;o<a.length;o++)a[o]&&Se(a[o],e,t||typeof u.type!=\"function\");t||zu(u.__e),u.__c=u.__=u.__e=void 0}function st(u,e,t){return this.constructor(u,t)}pe=bu.slice,y={__e:function(u,e,t,a){for(var o,n,s;e=e.__;)if((o=e.__c)&&!o.__)try{if((n=o.constructor)&&n.getDerivedStateFromError!=null&&(o.setState(n.getDerivedStateFromError(u)),s=o.__d),o.componentDidCatch!=null&&(o.componentDidCatch(u,a||{}),s=o.__d),s)return o.__E=o}catch(c){u=c}throw u}},Ce=0,tt=function(u){return u!=null&&u.constructor===void 0},yu.prototype.setState=function(u,e){var t;t=this.__s!=null&&this.__s!=this.state?this.__s:this.__s=$({},this.state),typeof u==\"function\"&&(u=u($({},t),this.props)),u&&$(t,u),u!=null&&this.__v&&(e&&this._sb.push(e),_e(this))},yu.prototype.forceUpdate=function(u){this.__v&&(this.__e=!0,u&&this.__h.push(u),_e(this))},yu.prototype.render=cu,J=[],ve=typeof Promise==\"function\"?Promise.prototype.then.bind(Promise.resolve()):setTimeout,Ee=function(u,e){return u.__v.__b-e.__v.__b},xu.__r=0,Mu=Math.random().toString(8),Bu=\"__d\"+Mu,du=\"__a\"+Mu,Ae=/(PointerCapture)$|Capture$/i,Iu=0,Ru=he(!1),Ou=he(!0),rt=0;function Fu(u){let e=_t(ft(u,\"index\"),!0);return e.length===0?\"/\":e}function we(){let u=window.location.pathname;return u.endsWith(\"/\")&&(u=u.slice(0,-1)),u.startsWith(\"/\")&&(u=u.slice(1)),u}function Nu(){return typeof document>\"u\"?\"\":document.body?.dataset?.basepath??\"\"}function $u(u,e){let t=e??Nu(),a=u.startsWith(\"/\")?u:\"/\"+u;return t+a}function Ft(u,e){return u===e||u.endsWith(\"/\"+e)}function ft(u,e){return Ft(u,e)&&(u=u.slice(0,-e.length)),u}function _t(u,e){return u.startsWith(\"/\")&&(u=u.substring(1)),!e&&u.endsWith(\"/\")&&(u=u.slice(0,-1)),u}function ke(u){for(;u.firstChild;)u.removeChild(u.firstChild)}(function(){function u(){var a=we(),o=Nu();return o&&a.startsWith(o.replace(/^\\//,\"\"))&&(a=a.slice(o.replace(/^\\//,\"\").length),a.startsWith(\"/\")&&(a=a.slice(1))),a}function e(a){var o=document.querySelector('script[src=\"'+a+'\"]');return o?Promise.resolve():new Promise(function(n,s){var c=document.createElement(\"script\");c.src=a,c.crossOrigin=\"anonymous\",c.onload=n,c.onerror=s,document.head.appendChild(c)})}Promise.all([e(\"https://cdn.jsdelivr.net/npm/d3@7/dist/d3.min.js\"),e(\"https://cdn.jsdelivr.net/npm/pixi.js@8/dist/pixi.js\")]).then(function(){t()}).catch(function(a){console.error(\"[Graph] Failed to load libraries:\",a);for(var o=document.querySelectorAll(\".graph-container\"),n=0;n<o.length;n++)o[n].textContent=\"Graph could not load. Check your network connection.\",o[n].style.display=\"flex\",o[n].style.alignItems=\"center\",o[n].style.justifyContent=\"center\",o[n].style.color=\"var(--gray)\",o[n].style.fontSize=\"0.9rem\"});function t(){var a=window.d3,o=window.PIXI;if(!a||!o){console.error(\"[Graph] Libraries not loaded\");return}var n=\"graph-visited\";function s(){return new Set(JSON.parse(localStorage.getItem(n)||\"[]\"))}function c(d){var w=s();w.add(d),localStorage.setItem(n,JSON.stringify(Array.from(w)))}function h(d,w){if(!d)return w;var g=document.createElement(\"div\");g.style.color=d,g.style.position=\"absolute\",g.style.visibility=\"hidden\",document.body.appendChild(g);var m=getComputedStyle(g).color;return g.remove(),m||w}async function D(d,w,g){var m=Fu(w);m===\"\"&&(m=\"index\");var q=s();if(ke(d),g!==void 0&&g!==E)return console.log(\"[Graph] Stale render, skipping\"),function(){};var x=JSON.parse(d.dataset.cfg||\"{}\"),fu=x.drag,Le=x.zoom,Vu=x.depth,qu=x.scale||1,Pe=x.repelForce||.5,je=x.centerForce||.3,Te=x.linkDistance||30,We=x.fontSize||.6,Me=x.opacityScale||1,Ue=x.removeTags||[],Re=x.showTags,Oe=x.focusOnHover,Ge=x.enableRadial,eu;try{var Ku=await fetchData;eu=new Map;for(var Ju in Ku)eu.set(Fu(Ju),Ku[Ju])}catch(i){return console.error(\"[Graph] Error loading data:\",i),function(){}}var R=d.offsetWidth,O=Math.max(d.offsetHeight,250),tu=[],hu=[],Xu=new Set(eu.keys());eu.forEach(function(i,l){for(var F=i.links||[],A=0;A<F.length;A++){var v=Fu(F[A]);Xu.has(v)&&tu.push({source:l,target:v})}if(Re)for(var j=i.tags||[],A=0;A<j.length;A++){var N=j[A];if(Ue.indexOf(N)===-1){var K=Fu(\"tags/\"+N);hu.indexOf(K)===-1&&hu.push(K),tu.push({source:l,target:K})}}});var ru=new Set;if(Vu>=0)for(var pu=[m],Cu=new Set([m]),Yu=0;Yu<=Vu&&pu.length>0;Yu++){for(var wu=[],ku=0;ku<pu.length;ku++){var Lu=pu[ku];ru.add(Lu);for(var Pu=0;Pu<tu.length;Pu++){var W=tu[Pu];W.source===Lu&&!Cu.has(W.target)&&(Cu.add(W.target),wu.push(W.target)),W.target===Lu&&!Cu.has(W.source)&&(Cu.add(W.source),wu.push(W.source))}}pu=wu}else{Xu.forEach(function(i){ru.add(i)});for(var k=0;k<hu.length;k++)ru.add(hu[k])}var nu=[],ju=new Map;ru.forEach(function(i){var l=i.startsWith(\"tags/\"),F=l?\"#\"+i.substring(5):eu.get(i)?.title||i,A=l?[]:eu.get(i)?.tags||[],v={id:i,text:F,tags:A,x:Math.random()*R-R/2,y:Math.random()*O-O/2,vx:0,vy:0};nu.push(v),ju.set(i,v)});for(var H=[],k=0;k<tu.length;k++){var W=tu[k];if(ru.has(W.source)&&ru.has(W.target)){var Zu=ju.get(W.source),Qu=ju.get(W.target);Zu&&Qu&&H.push({source:Zu,target:Qu})}}var Y=getComputedStyle(document.documentElement),Ie=h(Y.getPropertyValue(\"--secondary\").trim(),\"#c792ea\"),ue=h(Y.getPropertyValue(\"--tertiary\").trim(),\"#82aaff\"),ee=h(Y.getPropertyValue(\"--gray\").trim(),\"#6c6c6c\"),te=h(Y.getPropertyValue(\"--lightgray\").trim(),\"#d4d4d4\"),ze=h(Y.getPropertyValue(\"--dark\").trim(),\"#1a1a1a\"),He=h(Y.getPropertyValue(\"--light\").trim(),\"#f5f5f5\"),Ne=Y.getPropertyValue(\"--bodyFont\").trim()||\"inherit\",Z=new o.Application;await Z.init({width:R,height:O,antialias:!0,backgroundAlpha:0,resolution:window.devicePixelRatio||1,autoDensity:!0,eventMode:\"static\"}),d.appendChild(Z.canvas);var ou=new o.Container;Z.stage.addChild(ou);var au=a.forceSimulation(nu).force(\"charge\",a.forceManyBody().strength(-100*Pe)).force(\"center\",a.forceCenter().strength(je)).force(\"link\",a.forceLink(H).distance(Te)).force(\"collide\",a.forceCollide().radius(function(i){for(var l=0,F=0;F<H.length;F++)(H[F].source.id===i.id||H[F].target.id===i.id)&&l++;return 2+Math.sqrt(l)}).iterations(3));if(Ge){var Tu=Math.min(R,O)/2*.8;au.force(\"radial\",a.forceRadial(Tu).strength(.2))}var re=new o.Container,ne=new o.Container,vu=new o.Container;ou.addChild(re),ou.addChild(ne),ou.addChild(vu);var L=[],z=[],_u=null,iu=new Set,oe=0,Eu=!1,P=a.zoomIdentity;function ae(i){for(var l=0,F=0;F<H.length;F++)(H[F].source.id===i.id||H[F].target.id===i.id)&&l++;return 2+Math.sqrt(l)}function $e(i){var l=i.id===m;return l?Ie:q.has(i.id)||i.id.startsWith(\"tags/\")?ue:ee}function Wu(i){if(_u=i,i===null){iu=new Set;for(var l=0;l<L.length;l++)L[l].active=!1;for(var l=0;l<z.length;l++)z[l].active=!1}else{iu=new Set;for(var l=0;l<z.length;l++){var F=z[l].simulationData;F.source.id===i||F.target.id===i?(iu.add(F.source.id),iu.add(F.target.id),z[l].active=!0):z[l].active=!1}iu.add(i);for(var l=0;l<L.length;l++)iu.has(L[l].simulationData.id)?L[l].active=!0:L[l].active=!1}}function Ve(){for(var i=0;i<z.length;i++){var l=z[i],F=1;_u!==null&&(F=l.active?1:.2),l.alpha=F,l.color=l.active?ee:te}}function qe(){for(var i=1/qu,l=i*1.1,F=0;F<L.length;F++){var A=L[F];_u===A.simulationData.id?(A.label.alpha=1,A.label.scale.set(l)):A.label.scale.set(i)}}function Ke(){for(var i=0;i<L.length;i++){var l=L[i],F=1;_u!==null&&Oe&&(F=l.active?1:.2),l.gfx.alpha=F}}function Au(){Ke(),Ve(),qe()}for(var k=0;k<nu.length;k++){var Du=nu[k],ie=Du.id,De=ie.startsWith(\"tags/\"),Tu=ae(Du),le=$e(Du),lu=new o.Text({text:Du.text,style:{fontSize:We*15,fill:ze,fontFamily:Ne},resolution:window.devicePixelRatio*4});lu.anchor.set(.5,1.2),lu.alpha=0,lu.scale.set(1/qu),vu.addChild(lu);var U=new o.Graphics;U.circle(0,0,Tu),U.fill({color:De?He:le}),De&&U.stroke({width:2,color:ue}),U.eventMode=\"static\",U.cursor=\"pointer\",U.label=ie,(function(F,A,v){var j=0;A.on(\"pointerover\",function(N){Wu(F.id),j=v.alpha,Eu||Au()}),A.on(\"pointerleave\",function(){Wu(null),v.alpha=j,Eu||Au()})})(Du,U,lu),ne.addChild(U),L.push({simulationData:Du,gfx:U,label:lu,color:le,alpha:1,active:!1})}for(var k=0;k<H.length;k++){var W=H[k],U=new o.Graphics;U.eventMode=\"none\",re.addChild(U),z.push({simulationData:W,gfx:U,color:te,alpha:1,active:!1})}if(fu){var Je=function(i){for(var l=(i.x-P.x)/P.k,F=(i.y-P.y)/P.k,A=0;A<nu.length;A++){var v=nu[A],j=l-v.x-R/2,N=F-v.y-O/2,K=Math.sqrt(j*j+N*N),gu=ae(v);if(K<gu+5)return v}return null},Xe=function(i){i.active||au.alphaTarget(1).restart(),i.subject.fx=i.subject.x,i.subject.fy=i.subject.y;var l=(i.x-P.x)/P.k-R/2,F=(i.y-P.y)/P.k-O/2;i.subject.__dragOffset={x:l-i.subject.x,y:F-i.subject.y},oe=Date.now(),Eu=!0,_u=i.subject.id},Ye=function(i){var l=(i.x-P.x)/P.k-R/2,F=(i.y-P.y)/P.k-O/2;i.subject.fx=l-i.subject.__dragOffset.x,i.subject.fy=F-i.subject.__dragOffset.y},Ze=function(i){if(i.active||au.alphaTarget(0),i.subject.fx=null,i.subject.fy=null,Eu=!1,Wu(null),Au(),Date.now()-oe<500){var l=$u(i.subject.id);window.location.href=l}},Qe=a.drag().container(Z.canvas).subject(Je).on(\"start\",Xe).on(\"drag\",Ye).on(\"end\",Ze);a.select(Z.canvas).call(Qe)}else for(var k=0;k<L.length;k++)(function(l){l.gfx.on(\"click\",function(){var F=$u(l.simulationData.id);window.location.href=F})})(L[k]);if(Le){var ut=function(i){P=i.transform,ou.scale.set(P.k,P.k),ou.position.set(P.x,P.y);for(var l=P.k*Me,F=Math.max((l-1)/3.75,0),A=[],v=0;v<L.length;v++)L[v].active&&A.push(L[v].label);for(var v=0;v<vu.children.length;v++){var j=vu.children[v];A.indexOf(j)===-1&&(j.alpha=F)}},et=a.zoom().extent([[0,0],[R,O]]).scaleExtent([.25,4]).on(\"zoom\",ut);a.select(Z.canvas).call(et)}var se=!1;function ce(){if(!se){for(var i=0;i<L.length;i++){var l=L[i],F=l.simulationData.x,A=l.simulationData.y;F!=null&&A!=null&&(l.gfx.position.set(F+R/2,A+O/2),l.label&&l.label.position.set(F+R/2,A+O/2))}for(var i=0;i<z.length;i++){var v=z[i],j=v.simulationData,N=j.source.x,K=j.source.y,gu=j.target.x,Fe=j.target.y;N!=null&&K!=null&&gu!=null&&Fe!=null&&(v.gfx.clear(),v.gfx.moveTo(N+R/2,K+O/2),v.gfx.lineTo(gu+R/2,Fe+O/2),v.gfx.stroke({alpha:v.alpha,width:1,color:v.color}))}requestAnimationFrame(ce)}}return au.on(\"tick\",function(){}),au.restart(),Au(),ce(),function(){se=!0,au.stop();try{Z.destroy(!0)}catch{}}}var _=[],r=[],E=0;function f(){for(var d=0;d<_.length;d++)_[d]();_=[]}function b(){for(var d=0;d<r.length;d++)r[d]();r=[]}var S=[],B=[],p=null,C=null,M=null;function G(){b();for(var d=0;d<S.length;d++){S[d].classList.remove(\"active\");var w=S[d].closest(\".sidebar\");w&&(w.style.zIndex=\"\")}}function I(){for(var d=0;d<S.length;d++)if(S[d].classList.contains(\"active\"))return!0;return!1}function Q(){b();for(var d=u(),w=0;w<S.length;w++){var g=S[w];g.classList.add(\"active\");var m=g.closest(\".sidebar\");m&&(m.style.zIndex=\"1\");var q=g.querySelector(\".global-graph-container\");q&&(function(x){D(x,d,void 0).then(function(fu){r.push(fu)}).catch(function(fu){console.error(\"[Graph] Global render error:\",fu)})})(q)}}function X(){I()?G():Q()}function uu(){f();var d=++E,w=u();c(w);for(var g=document.querySelectorAll(\".graph-container\"),m=0;m<g.length;m++)(function(q){D(q,w,d).then(function(x){d===E&&_.push(x)}).catch(function(x){console.error(\"[Graph] Local render error:\",x)})})(g[m])}function T(d){var w=d.detail?d.detail.url:u();if(c(Fu(w)),uu(),S=Array.from(document.querySelectorAll(\".global-graph-outer\")),M)for(var g=0;g<B.length;g++)B[g].removeEventListener(\"click\",M);B=Array.from(document.querySelectorAll(\".global-graph-icon\")),M=function(){X()};for(var g=0;g<B.length;g++)B[g].addEventListener(\"click\",M);p&&document.removeEventListener(\"click\",p),p=function(m){if(I()){var q=m.target.closest(\".global-graph-container\"),x=m.target.closest(\".global-graph-icon\");!q&&!x&&G()}},document.addEventListener(\"click\",p),C&&document.removeEventListener(\"keydown\",C),C=function(m){if(m.key===\"Escape\"){I()&&G();return}m.key===\"g\"&&(m.ctrlKey||m.metaKey)&&!m.shiftKey&&(m.preventDefault(),X())},document.addEventListener(\"keydown\",C),I()&&Q()}document.readyState===\"loading\"?document.addEventListener(\"DOMContentLoaded\",function(){T({detail:{url:u()}})}):T({detail:{url:u()}}),document.addEventListener(\"prenav\",function(){f(),b()}),document.addEventListener(\"nav\",T),document.addEventListener(\"render\",T);function V(){uu(),I()&&Q()}document.addEventListener(\"themechange\",V)}})();\n","/** Normal hydration that attaches to a DOM tree but does not diff it. */\nexport const MODE_HYDRATE = 1 << 5;\n/** Signifies this VNode suspended on the previous render */\nexport const MODE_SUSPENDED = 1 << 7;\n/** Indicates that this node needs to be inserted while patching children */\nexport const INSERT_VNODE = 1 << 2;\n/** Indicates a VNode has been matched with another VNode in the diff */\nexport const MATCHED = 1 << 1;\n\n/** Reset all mode flags */\nexport const RESET_MODE = ~(MODE_HYDRATE | MODE_SUSPENDED);\n\nexport const SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\nexport const XHTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';\nexport const MATH_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';\n\nexport const NULL = null;\nexport const UNDEFINED = undefined;\nexport const EMPTY_OBJ = /** @type {any} */ ({});\nexport const EMPTY_ARR = [];\nexport const IS_NON_DIMENSIONAL =\n\t/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;\n","import { _catchError } from './diff/catch-error';\n\n/**\n * The `option` object can potentially contain callback functions\n * that are called during various stages of our renderer. This is the\n * foundation on which all our addons like `preact/debug`, `preact/compat`,\n * and `preact/hooks` are based on. See the `Options` type in `internal.d.ts`\n * for a full list of available option hooks (most editors/IDEs allow you to\n * ctrl+click or cmd+click on mac the type definition below).\n * @type {import('./internal').Options}\n */\nconst options = {\n\t_catchError\n};\n\nexport default options;\n","import { NULL } from '../constants';\n\n/**\n * Find the closest error boundary to a thrown error and call it\n * @param {object} error The thrown value\n * @param {import('../internal').VNode} vnode The vnode that threw the error that was caught (except\n * for unmounting when this parameter is the highest parent that was being\n * unmounted)\n * @param {import('../internal').VNode} [oldVNode]\n * @param {import('../internal').ErrorInfo} [errorInfo]\n */\nexport function _catchError(error, vnode, oldVNode, errorInfo) {\n\t/** @type {import('../internal').Component} */\n\tlet component,\n\t\t/** @type {import('../internal').ComponentType} */\n\t\tctor,\n\t\t/** @type {boolean} */\n\t\thandled;\n\n\tfor (; (vnode = vnode._parent); ) {\n\t\tif ((component = vnode._component) && !component._processingException) {\n\t\t\ttry {\n\t\t\t\tctor = component.constructor;\n\n\t\t\t\tif (ctor && ctor.getDerivedStateFromError != NULL) {\n\t\t\t\t\tcomponent.setState(ctor.getDerivedStateFromError(error));\n\t\t\t\t\thandled = component._dirty;\n\t\t\t\t}\n\n\t\t\t\tif (component.componentDidCatch != NULL) {\n\t\t\t\t\tcomponent.componentDidCatch(error, errorInfo || {});\n\t\t\t\t\thandled = component._dirty;\n\t\t\t\t}\n\n\t\t\t\t// This is an error boundary. Mark it as having bailed out, and whether it was mid-hydration.\n\t\t\t\tif (handled) {\n\t\t\t\t\treturn (component._pendingError = component);\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\terror = e;\n\t\t\t}\n\t\t}\n\t}\n\n\tthrow error;\n}\n","import { assign } from './util';\nimport { diff, commitRoot } from './diff/index';\nimport options from './options';\nimport { Fragment } from './create-element';\nimport { MODE_HYDRATE, NULL } from './constants';\n\n/**\n * Base Component class. Provides `setState()` and `forceUpdate()`, which\n * trigger rendering\n * @param {object} props The initial component props\n * @param {object} context The initial context from parent components'\n * getChildContext\n */\nexport function BaseComponent(props, context) {\n\tthis.props = props;\n\tthis.context = context;\n}\n\n/**\n * Update component state and schedule a re-render.\n * @this {import('./internal').Component}\n * @param {object | ((s: object, p: object) => object)} update A hash of state\n * properties to update with new values or a function that given the current\n * state and props returns a new partial state\n * @param {() => void} [callback] A function to be called once component state is\n * updated\n */\nBaseComponent.prototype.setState = function (update, callback) {\n\t// only clone state when copying to nextState the first time.\n\tlet s;\n\tif (this._nextState != NULL && this._nextState != this.state) {\n\t\ts = this._nextState;\n\t} else {\n\t\ts = this._nextState = assign({}, this.state);\n\t}\n\n\tif (typeof update == 'function') {\n\t\t// Some libraries like `immer` mark the current state as readonly,\n\t\t// preventing us from mutating it, so we need to clone it. See #2716\n\t\tupdate = update(assign({}, s), this.props);\n\t}\n\n\tif (update) {\n\t\tassign(s, update);\n\t}\n\n\t// Skip update if updater function returned null\n\tif (update == NULL) return;\n\n\tif (this._vnode) {\n\t\tif (callback) {\n\t\t\tthis._stateCallbacks.push(callback);\n\t\t}\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Immediately perform a synchronous re-render of the component\n * @this {import('./internal').Component}\n * @param {() => void} [callback] A function to be called after component is\n * re-rendered\n */\nBaseComponent.prototype.forceUpdate = function (callback) {\n\tif (this._vnode) {\n\t\t// Set render mode so that we can differentiate where the render request\n\t\t// is coming from. We need this because forceUpdate should never call\n\t\t// shouldComponentUpdate\n\t\tthis._force = true;\n\t\tif (callback) this._renderCallbacks.push(callback);\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Accepts `props` and `state`, and returns a new Virtual DOM tree to build.\n * Virtual DOM is generally constructed via [JSX](https://jasonformat.com/wtf-is-jsx).\n * @param {object} props Props (eg: JSX attributes) received from parent\n * element/component\n * @param {object} state The component's current state\n * @param {object} context Context object, as returned by the nearest\n * ancestor's `getChildContext()`\n * @returns {ComponentChildren | void}\n */\nBaseComponent.prototype.render = Fragment;\n\n/**\n * @param {import('./internal').VNode} vnode\n * @param {number | null} [childIndex]\n */\nexport function getDomSibling(vnode, childIndex) {\n\tif (childIndex == NULL) {\n\t\t// Use childIndex==null as a signal to resume the search from the vnode's sibling\n\t\treturn vnode._parent\n\t\t\t? getDomSibling(vnode._parent, vnode._index + 1)\n\t\t\t: NULL;\n\t}\n\n\tlet sibling;\n\tfor (; childIndex < vnode._children.length; childIndex++) {\n\t\tsibling = vnode._children[childIndex];\n\n\t\tif (sibling != NULL && sibling._dom != NULL) {\n\t\t\t// Since updateParentDomPointers keeps _dom pointer correct,\n\t\t\t// we can rely on _dom to tell us if this subtree contains a\n\t\t\t// rendered DOM node, and what the first rendered DOM node is\n\t\t\treturn sibling._dom;\n\t\t}\n\t}\n\n\t// If we get here, we have not found a DOM node in this vnode's children.\n\t// We must resume from this vnode's sibling (in it's parent _children array)\n\t// Only climb up and search the parent if we aren't searching through a DOM\n\t// VNode (meaning we reached the DOM parent of the original vnode that began\n\t// the search)\n\treturn typeof vnode.type == 'function' ? getDomSibling(vnode) : NULL;\n}\n\n/**\n * Trigger in-place re-rendering of a component.\n * @param {import('./internal').Component} component The component to rerender\n */\nfunction renderComponent(component) {\n\tif (component._parentDom && component._dirty) {\n\t\tlet oldVNode = component._vnode,\n\t\t\toldDom = oldVNode._dom,\n\t\t\tcommitQueue = [],\n\t\t\trefQueue = [],\n\t\t\tnewVNode = assign({}, oldVNode);\n\t\tnewVNode._original = oldVNode._original + 1;\n\t\tif (options.vnode) options.vnode(newVNode);\n\n\t\tdiff(\n\t\t\tcomponent._parentDom,\n\t\t\tnewVNode,\n\t\t\toldVNode,\n\t\t\tcomponent._globalContext,\n\t\t\tcomponent._parentDom.namespaceURI,\n\t\t\toldVNode._flags & MODE_HYDRATE ? [oldDom] : NULL,\n\t\t\tcommitQueue,\n\t\t\toldDom == NULL ? getDomSibling(oldVNode) : oldDom,\n\t\t\t!!(oldVNode._flags & MODE_HYDRATE),\n\t\t\trefQueue\n\t\t);\n\n\t\tnewVNode._original = oldVNode._original;\n\t\tnewVNode._parent._children[newVNode._index] = newVNode;\n\t\tcommitRoot(commitQueue, newVNode, refQueue);\n\t\toldVNode._dom = oldVNode._parent = null;\n\n\t\tif (newVNode._dom != oldDom) {\n\t\t\tupdateParentDomPointers(newVNode);\n\t\t}\n\t}\n}\n\n/**\n * @param {import('./internal').VNode} vnode\n */\nfunction updateParentDomPointers(vnode) {\n\tif ((vnode = vnode._parent) != NULL && vnode._component != NULL) {\n\t\tvnode._dom = vnode._component.base = NULL;\n\t\tvnode._children.some(child => {\n\t\t\tif (child != NULL && child._dom != NULL) {\n\t\t\t\treturn (vnode._dom = vnode._component.base = child._dom);\n\t\t\t}\n\t\t});\n\n\t\treturn updateParentDomPointers(vnode);\n\t}\n}\n\n/**\n * The render queue\n * @type {Array<import('./internal').Component>}\n */\nlet rerenderQueue = [];\n\n/*\n * The value of `Component.debounce` must asynchronously invoke the passed in callback. It is\n * important that contributors to Preact can consistently reason about what calls to `setState`, etc.\n * do, and when their effects will be applied. See the links below for some further reading on designing\n * asynchronous APIs.\n * * [Designing APIs for Asynchrony](https://blog.izs.me/2013/08/designing-apis-for-asynchrony)\n * * [Callbacks synchronous and asynchronous](https://blog.ometer.com/2011/07/24/callbacks-synchronous-and-asynchronous/)\n */\n\nlet prevDebounce;\n\nconst defer =\n\ttypeof Promise == 'function'\n\t\t? Promise.prototype.then.bind(Promise.resolve())\n\t\t: setTimeout;\n\n/**\n * Enqueue a rerender of a component\n * @param {import('./internal').Component} c The component to rerender\n */\nexport function enqueueRender(c) {\n\tif (\n\t\t(!c._dirty &&\n\t\t\t(c._dirty = true) &&\n\t\t\trerenderQueue.push(c) &&\n\t\t\t!process._rerenderCount++) ||\n\t\tprevDebounce != options.debounceRendering\n\t) {\n\t\tprevDebounce = options.debounceRendering;\n\t\t(prevDebounce || defer)(process);\n\t}\n}\n\n/**\n * @param {import('./internal').Component} a\n * @param {import('./internal').Component} b\n */\nconst depthSort = (a, b) => a._vnode._depth - b._vnode._depth;\n\n/** Flush the render queue by rerendering all queued components */\nfunction process() {\n\ttry {\n\t\tlet c,\n\t\t\tl = 1;\n\n\t\t// Don't update `renderCount` yet. Keep its value non-zero to prevent unnecessary\n\t\t// process() calls from getting scheduled while `queue` is still being consumed.\n\t\twhile (rerenderQueue.length) {\n\t\t\t// Keep the rerender queue sorted by (depth, insertion order). The queue\n\t\t\t// will initially be sorted on the first iteration only if it has more than 1 item.\n\t\t\t//\n\t\t\t// New items can be added to the queue e.g. when rerendering a provider, so we want to\n\t\t\t// keep the order from top to bottom with those new items so we can handle them in a\n\t\t\t// single pass\n\t\t\tif (rerenderQueue.length > l) {\n\t\t\t\trerenderQueue.sort(depthSort);\n\t\t\t}\n\n\t\t\tc = rerenderQueue.shift();\n\t\t\tl = rerenderQueue.length;\n\n\t\t\trenderComponent(c);\n\t\t}\n\t} finally {\n\t\trerenderQueue.length = process._rerenderCount = 0;\n\t}\n}\n\nprocess._rerenderCount = 0;\n","import { IS_NON_DIMENSIONAL, NULL, SVG_NAMESPACE } from '../constants';\nimport options from '../options';\n\n// Per-instance unique key for event clock stamps. Each Preact copy on the page\n// gets its own random suffix so that `_dispatched` / `_attached` properties on\n// shared event objects and handler functions cannot collide across instances.\n// ~1 in 60M collision odds - if you have that many praect versions on the page,\n// you deserve some weird bugs.\n// In 11 we can replace this with a\n// Symbol\nlet _id = Math.random().toString(8),\n\tEVENT_DISPATCHED = '__d' + _id,\n\tEVENT_ATTACHED = '__a' + _id;\n\nfunction setStyle(style, key, value) {\n\tif (key[0] == '-') {\n\t\tstyle.setProperty(key, value == NULL ? '' : value);\n\t} else if (value == NULL) {\n\t\tstyle[key] = '';\n\t} else if (typeof value != 'number' || IS_NON_DIMENSIONAL.test(key)) {\n\t\tstyle[key] = value;\n\t} else {\n\t\tstyle[key] = value + 'px';\n\t}\n}\n\nconst CAPTURE_REGEX = /(PointerCapture)$|Capture$/i;\n\n// A logical clock to solve issues like https://github.com/preactjs/preact/issues/3927.\n// When the DOM performs an event it leaves micro-ticks in between bubbling up which means that\n// an event can trigger on a newly reated DOM-node while the event bubbles up.\n//\n// Originally inspired by Vue\n// (https://github.com/vuejs/core/blob/caeb8a68811a1b0f79/packages/runtime-dom/src/modules/events.ts#L90-L101),\n// but modified to use a logical clock instead of Date.now() in case event handlers get attached\n// and events get dispatched during the same millisecond.\n//\n// The clock is incremented after each new event dispatch. This allows 1 000 000 new events\n// per second for over 280 years before the value reaches Number.MAX_SAFE_INTEGER (2**53 - 1).\nlet eventClock = 0;\n\n/**\n * Set a property value on a DOM node\n * @param {import('../internal').PreactElement} dom The DOM node to modify\n * @param {string} name The name of the property to set\n * @param {*} value The value to set the property to\n * @param {*} oldValue The old value the property had\n * @param {string} namespace Whether or not this DOM node is an SVG node or not\n */\nexport function setProperty(dom, name, value, oldValue, namespace) {\n\tlet useCapture;\n\n\to: if (name == 'style') {\n\t\tif (typeof value == 'string') {\n\t\t\tdom.style.cssText = value;\n\t\t} else {\n\t\t\tif (typeof oldValue == 'string') {\n\t\t\t\tdom.style.cssText = oldValue = '';\n\t\t\t}\n\n\t\t\tif (oldValue) {\n\t\t\t\tfor (name in oldValue) {\n\t\t\t\t\tif (!(value && name in value)) {\n\t\t\t\t\t\tsetStyle(dom.style, name, '');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (value) {\n\t\t\t\tfor (name in value) {\n\t\t\t\t\tif (!oldValue || value[name] != oldValue[name]) {\n\t\t\t\t\t\tsetStyle(dom.style, name, value[name]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t// Benchmark for comparison: https://esbench.com/bench/574c954bdb965b9a00965ac6\n\telse if (name[0] == 'o' && name[1] == 'n') {\n\t\tuseCapture = name != (name = name.replace(CAPTURE_REGEX, '$1'));\n\t\tconst lowerCaseName = name.toLowerCase();\n\n\t\t// Infer correct casing for DOM built-in events:\n\t\tif (lowerCaseName in dom || name == 'onFocusOut' || name == 'onFocusIn')\n\t\t\tname = lowerCaseName.slice(2);\n\t\telse name = name.slice(2);\n\n\t\tif (!dom._listeners) dom._listeners = {};\n\t\tdom._listeners[name + useCapture] = value;\n\n\t\tif (value) {\n\t\t\tif (!oldValue) {\n\t\t\t\tvalue[EVENT_ATTACHED] = eventClock;\n\t\t\t\tdom.addEventListener(\n\t\t\t\t\tname,\n\t\t\t\t\tuseCapture ? eventProxyCapture : eventProxy,\n\t\t\t\t\tuseCapture\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tvalue[EVENT_ATTACHED] = oldValue[EVENT_ATTACHED];\n\t\t\t}\n\t\t} else {\n\t\t\tdom.removeEventListener(\n\t\t\t\tname,\n\t\t\t\tuseCapture ? eventProxyCapture : eventProxy,\n\t\t\t\tuseCapture\n\t\t\t);\n\t\t}\n\t} else {\n\t\tif (namespace == SVG_NAMESPACE) {\n\t\t\t// Normalize incorrect prop usage for SVG:\n\t\t\t// - xlink:href / xlinkHref --> href (xlink:href was removed from SVG and isn't needed)\n\t\t\t// - className --> class\n\t\t\tname = name.replace(/xlink(H|:h)/, 'h').replace(/sName$/, 's');\n\t\t} else if (\n\t\t\tname != 'width' &&\n\t\t\tname != 'height' &&\n\t\t\tname != 'href' &&\n\t\t\tname != 'list' &&\n\t\t\tname != 'form' &&\n\t\t\t// Default value in browsers is `-1` and an empty string is\n\t\t\t// cast to `0` instead\n\t\t\tname != 'tabIndex' &&\n\t\t\tname != 'download' &&\n\t\t\tname != 'rowSpan' &&\n\t\t\tname != 'colSpan' &&\n\t\t\tname != 'role' &&\n\t\t\tname != 'popover' &&\n\t\t\tname in dom\n\t\t) {\n\t\t\ttry {\n\t\t\t\tdom[name] = value == NULL ? '' : value;\n\t\t\t\t// labelled break is 1b smaller here than a return statement (sorry)\n\t\t\t\tbreak o;\n\t\t\t} catch (e) {}\n\t\t}\n\n\t\t// aria- and data- attributes have no boolean representation.\n\t\t// A `false` value is different from the attribute not being\n\t\t// present, so we can't remove it. For non-boolean aria\n\t\t// attributes we could treat false as a removal, but the\n\t\t// amount of exceptions would cost too many bytes. On top of\n\t\t// that other frameworks generally stringify `false`.\n\n\t\tif (typeof value == 'function') {\n\t\t\t// never serialize functions as attribute values\n\t\t} else if (value != NULL && (value !== false || name[4] == '-')) {\n\t\t\tdom.setAttribute(name, name == 'popover' && value == true ? '' : value);\n\t\t} else {\n\t\t\tdom.removeAttribute(name);\n\t\t}\n\t}\n}\n\n/**\n * Create an event proxy function.\n * @param {boolean} useCapture Is the event handler for the capture phase.\n * @private\n */\nfunction createEventProxy(useCapture) {\n\t/**\n\t * Proxy an event to hooked event handlers\n\t * @param {import('../internal').PreactEvent} e The event object from the browser\n\t * @private\n\t */\n\treturn function (e) {\n\t\tif (this._listeners) {\n\t\t\tconst eventHandler = this._listeners[e.type + useCapture];\n\t\t\tif (e[EVENT_DISPATCHED] == NULL) {\n\t\t\t\te[EVENT_DISPATCHED] = eventClock++;\n\n\t\t\t\t// When `e[EVENT_DISPATCHED]` is smaller than the time when the targeted event\n\t\t\t\t// handler was attached we know we have bubbled up to an element that was added\n\t\t\t\t// during patching the DOM.\n\t\t\t} else if (e[EVENT_DISPATCHED] < eventHandler[EVENT_ATTACHED]) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\treturn eventHandler(options.event ? options.event(e) : e);\n\t\t}\n\t};\n}\n\nconst eventProxy = createEventProxy(false);\nconst eventProxyCapture = createEventProxy(true);\n","import { enqueueRender } from './component';\nimport { NULL } from './constants';\n\nexport let i = 0;\n\nexport function createContext(defaultValue) {\n\tfunction Context(props) {\n\t\tif (!this.getChildContext) {\n\t\t\t/** @type {Set<import('./internal').Component> | null} */\n\t\t\tlet subs = new Set();\n\t\t\tlet ctx = {};\n\t\t\tctx[Context._id] = this;\n\n\t\t\tthis.getChildContext = () => ctx;\n\n\t\t\tthis.componentWillUnmount = () => {\n\t\t\t\tsubs = NULL;\n\t\t\t};\n\n\t\t\tthis.shouldComponentUpdate = function (_props) {\n\t\t\t\t// @ts-expect-error even\n\t\t\t\tif (this.props.value != _props.value) {\n\t\t\t\t\tsubs.forEach(c => {\n\t\t\t\t\t\tc._force = true;\n\t\t\t\t\t\tenqueueRender(c);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tthis.sub = c => {\n\t\t\t\tsubs.add(c);\n\t\t\t\tlet old = c.componentWillUnmount;\n\t\t\t\tc.componentWillUnmount = () => {\n\t\t\t\t\tif (subs) {\n\t\t\t\t\t\tsubs.delete(c);\n\t\t\t\t\t}\n\t\t\t\t\tif (old) old.call(c);\n\t\t\t\t};\n\t\t\t};\n\t\t}\n\n\t\treturn props.children;\n\t}\n\n\tContext._id = '__cC' + i++;\n\tContext._defaultValue = defaultValue;\n\n\t/** @type {import('./internal').FunctionComponent} */\n\tContext.Consumer = (props, contextValue) => {\n\t\treturn props.children(contextValue);\n\t};\n\n\t// we could also get rid of _contextRef entirely\n\tContext.Provider =\n\t\tContext._contextRef =\n\t\tContext.Consumer.contextType =\n\t\t\tContext;\n\n\treturn Context;\n}\n","import { options, Fragment } from 'preact';\nimport { encodeEntities } from './utils';\nimport { IS_NON_DIMENSIONAL } from '../../src/constants';\n\nlet vnodeId = 0;\n\nconst isArray = Array.isArray;\n\n/**\n * @fileoverview\n * This file exports various methods that implement Babel's \"automatic\" JSX runtime API:\n * - jsx(type, props, key)\n * - jsxs(type, props, key)\n * - jsxDEV(type, props, key, __source, __self)\n *\n * The implementation of createVNode here is optimized for performance.\n * Benchmarks: https://esbench.com/bench/5f6b54a0b4632100a7dcd2b3\n */\n\n/**\n * JSX.Element factory used by Babel's {runtime:\"automatic\"} JSX transform\n * @param {VNode['type']} type\n * @param {VNode['props']} props\n * @param {VNode['key']} [key]\n * @param {unknown} [isStaticChildren]\n * @param {unknown} [__source]\n * @param {unknown} [__self]\n */\nfunction createVNode(type, props, key, isStaticChildren, __source, __self) {\n\tif (!props) props = {};\n\t// We'll want to preserve `ref` in props to get rid of the need for\n\t// forwardRef components in the future, but that should happen via\n\t// a separate PR.\n\tlet normalizedProps = props,\n\t\tref,\n\t\ti;\n\n\tif ('ref' in normalizedProps) {\n\t\tnormalizedProps = {};\n\t\tfor (i in props) {\n\t\t\tif (i == 'ref') {\n\t\t\t\tref = props[i];\n\t\t\t} else {\n\t\t\t\tnormalizedProps[i] = props[i];\n\t\t\t}\n\t\t}\n\t}\n\n\t/** @type {VNode & { __source: any; __self: any }} */\n\tconst vnode = {\n\t\ttype,\n\t\tprops: normalizedProps,\n\t\tkey,\n\t\tref,\n\t\t_children: null,\n\t\t_parent: null,\n\t\t_depth: 0,\n\t\t_dom: null,\n\t\t_component: null,\n\t\tconstructor: undefined,\n\t\t_original: --vnodeId,\n\t\t_index: -1,\n\t\t_flags: 0,\n\t\t__source,\n\t\t__self\n\t};\n\n\t// If a Component VNode, check for and apply defaultProps.\n\t// Note: `type` is often a String, and can be `undefined` in development.\n\tif (typeof type === 'function' && (ref = type.defaultProps)) {\n\t\tfor (i in ref)\n\t\t\tif (normalizedProps[i] === undefined) {\n\t\t\t\tnormalizedProps[i] = ref[i];\n\t\t\t}\n\t}\n\n\tif (options.vnode) options.vnode(vnode);\n\treturn vnode;\n}\n\n/**\n * Create a template vnode. This function is not expected to be\n * used directly, but rather through a precompile JSX transform\n * @param {string[]} templates\n * @param {Array<string | null | VNode>} exprs\n * @returns {VNode}\n */\nfunction jsxTemplate(templates, ...exprs) {\n\tconst vnode = createVNode(Fragment, { tpl: templates, exprs });\n\t// Bypass render to string top level Fragment optimization\n\tvnode.key = vnode._vnode;\n\treturn vnode;\n}\n\nconst JS_TO_CSS = {};\nconst CSS_REGEX = /[A-Z]/g;\n\n/**\n * Unwrap potential signals.\n * @param {*} value\n * @returns {*}\n */\nfunction normalizeAttrValue(value) {\n\treturn value !== null &&\n\t\ttypeof value === 'object' &&\n\t\ttypeof value.valueOf === 'function'\n\t\t? value.valueOf()\n\t\t: value;\n}\n\n/**\n * Serialize an HTML attribute to a string. This function is not\n * expected to be used directly, but rather through a precompile\n * JSX transform\n * @param {string} name The attribute name\n * @param {*} value The attribute value\n * @returns {string}\n */\nfunction jsxAttr(name, value) {\n\tif (options.attr) {\n\t\tconst result = options.attr(name, value);\n\t\tif (typeof result === 'string') return result;\n\t}\n\n\tvalue = normalizeAttrValue(value);\n\n\tif (name === 'ref' || name === 'key') return '';\n\tif (name === 'style' && typeof value === 'object') {\n\t\tlet str = '';\n\t\tfor (let prop in value) {\n\t\t\tlet val = value[prop];\n\t\t\tif (val != null && val !== '') {\n\t\t\t\tconst name =\n\t\t\t\t\tprop[0] == '-'\n\t\t\t\t\t\t? prop\n\t\t\t\t\t\t: JS_TO_CSS[prop] ||\n\t\t\t\t\t\t\t(JS_TO_CSS[prop] = prop.replace(CSS_REGEX, '-$&').toLowerCase());\n\n\t\t\t\tlet suffix = ';';\n\t\t\t\tif (\n\t\t\t\t\ttypeof val === 'number' &&\n\t\t\t\t\t// Exclude custom-attributes\n\t\t\t\t\t!name.startsWith('--') &&\n\t\t\t\t\t!IS_NON_DIMENSIONAL.test(name)\n\t\t\t\t) {\n\t\t\t\t\tsuffix = 'px;';\n\t\t\t\t}\n\t\t\t\tstr = str + name + ':' + val + suffix;\n\t\t\t}\n\t\t}\n\t\treturn name + '=\"' + encodeEntities(str) + '\"';\n\t}\n\n\tif (\n\t\tvalue == null ||\n\t\tvalue === false ||\n\t\ttypeof value === 'function' ||\n\t\ttypeof value === 'object'\n\t) {\n\t\treturn '';\n\t} else if (value === true) return name;\n\n\treturn name + '=\"' + encodeEntities('' + value) + '\"';\n}\n\n/**\n * Escape a dynamic child passed to `jsxTemplate`. This function\n * is not expected to be used directly, but rather through a\n * precompile JSX transform\n * @param {*} value\n * @returns {string | null | VNode | Array<string | null | VNode>}\n */\nfunction jsxEscape(value) {\n\tif (\n\t\tvalue == null ||\n\t\ttypeof value === 'boolean' ||\n\t\ttypeof value === 'function'\n\t) {\n\t\treturn null;\n\t}\n\n\tif (typeof value === 'object') {\n\t\t// Check for VNode\n\t\tif (value.constructor === undefined) return value;\n\n\t\tif (isArray(value)) {\n\t\t\tfor (let i = 0; i < value.length; i++) {\n\t\t\t\tvalue[i] = jsxEscape(value[i]);\n\t\t\t}\n\t\t\treturn value;\n\t\t}\n\t}\n\n\treturn encodeEntities('' + value);\n}\n\nexport {\n\tcreateVNode as jsx,\n\tcreateVNode as jsxs,\n\tcreateVNode as jsxDEV,\n\tFragment,\n\t// precompiled JSX transform\n\tjsxTemplate,\n\tjsxAttr,\n\tjsxEscape\n};\n","import type {\n QuartzComponent,\n QuartzComponentConstructor,\n QuartzComponentProps,\n} from \"@quartz-community/types\";\nimport { classNames } from \"../util/lang\";\nimport { i18n } from \"../i18n\";\nimport style from \"./styles/graph.scss\";\n// @ts-expect-error - inline script imported as string by esbuild loader\nimport script from \"./scripts/graph.inline.ts\";\n\nexport interface D3Config {\n drag: boolean;\n zoom: boolean;\n depth: number;\n scale: number;\n repelForce: number;\n centerForce: number;\n linkDistance: number;\n fontSize: number;\n opacityScale: number;\n removeTags: string[];\n showTags: boolean;\n focusOnHover?: boolean;\n enableRadial?: boolean;\n}\n\nexport interface GraphOptions {\n localGraph?: Partial<D3Config>;\n globalGraph?: Partial<D3Config>;\n}\n\nconst defaultOptions: GraphOptions = {\n localGraph: {\n drag: true,\n zoom: true,\n depth: 1,\n scale: 1.1,\n repelForce: 0.5,\n centerForce: 0.3,\n linkDistance: 30,\n fontSize: 0.6,\n opacityScale: 1,\n showTags: true,\n removeTags: [],\n focusOnHover: false,\n enableRadial: false,\n },\n globalGraph: {\n drag: true,\n zoom: true,\n depth: -1,\n scale: 0.9,\n repelForce: 0.5,\n centerForce: 0.2,\n linkDistance: 30,\n fontSize: 0.6,\n opacityScale: 1,\n showTags: true,\n removeTags: [],\n focusOnHover: true,\n enableRadial: true,\n },\n};\n\nexport default ((userOpts?: Partial<GraphOptions>) => {\n const Graph: QuartzComponent = ({ displayClass, cfg }: QuartzComponentProps) => {\n const localGraph = { ...defaultOptions.localGraph, ...userOpts?.localGraph };\n const globalGraph = { ...defaultOptions.globalGraph, ...userOpts?.globalGraph };\n\n return (\n <div class={classNames(displayClass, \"graph\")}>\n <h3>{i18n(cfg.locale ?? \"en-US\").components.graph.title}</h3>\n <div class=\"graph-outer\">\n <div class=\"graph-container\" data-cfg={JSON.stringify(localGraph)}></div>\n <button class=\"global-graph-icon\" aria-label=\"Global Graph\">\n <svg\n version=\"1.1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n x=\"0px\"\n y=\"0px\"\n viewBox=\"0 0 55 55\"\n fill=\"currentColor\"\n xmlSpace=\"preserve\"\n >\n <path\n d=\"M49,0c-3.309,0-6,2.691-6,6c0,1.035,0.263,2.009,0.726,2.86l-9.829,9.829C32.542,17.634,30.846,17,29,17\n s-3.542,0.634-4.898,1.688l-7.669-7.669C16.785,10.424,17,9.74,17,9c0-2.206-1.794-4-4-4S9,6.794,9,9s1.794,4,4,4\n c0.74,0,1.424-0.215,2.019-0.567l7.669,7.669C21.634,21.458,21,23.154,21,25s0.634,3.542,1.688,4.897L10.024,42.562\n C8.958,41.595,7.549,41,6,41c-3.309,0-6,2.691-6,6s2.691,6,6,6s6-2.691,6-6c0-1.035-0.263-2.009-0.726-2.86l12.829-12.829\n c1.106,0.86,2.44,1.436,3.898,1.619v10.16c-2.833,0.478-5,2.942-5,5.91c0,3.309,2.691,6,6,6s6-2.691,6-6c0-2.967-2.167-5.431-5-5.91\n v-10.16c1.458-0.183,2.792-0.759,3.898-1.619l7.669,7.669C41.215,39.576,41,40.26,41,41c0,2.206,1.794,4,4,4s4-1.794,4-4\n s-1.794-4-4-4c-0.74,0-1.424,0.215-2.019,0.567l-7.669-7.669C36.366,28.542,37,26.846,37,25s-0.634-3.542-1.688-4.897l9.665-9.665\n C46.042,11.405,47.451,12,49,12c3.309,0,6-2.691,6-6S52.309,0,49,0z M11,9c0-1.103,0.897-2,2-2s2,0.897,2,2s-0.897,2-2,2\n S11,10.103,11,9z M6,51c-2.206,0-4-1.794-4-4s1.794-4,4-4s4,1.794,4,4S8.206,51,6,51z M33,49c0,2.206-1.794,4-4,4s-4-1.794-4-4\n s1.794-4,4-4S33,46.794,33,49z M29,31c-3.309,0-6-2.691-6-6s2.691-6,6-6s6,2.691,6,6S32.309,31,29,31z M47,41c0,1.103-0.897,2-2,2\n s-2-0.897-2-2s0.897-2,2-2S47,39.897,47,41z M49,10c-2.206,0-4-1.794-4-4s1.794-4,4-4s4,1.794,4,4S51.206,10,49,10z\"\n />\n </svg>\n </button>\n </div>\n <div class=\"global-graph-outer\">\n <div class=\"global-graph-container\" data-cfg={JSON.stringify(globalGraph)}></div>\n </div>\n </div>\n );\n };\n\n Graph.css = style;\n Graph.afterDOMLoaded = script;\n\n return Graph;\n}) satisfies QuartzComponentConstructor;\n"]}
1
+ {"version":3,"sources":["../node_modules/@quartz-community/utils/src/lang.ts","../src/i18n/locales/en-US.ts","../src/i18n/locales/en-GB.ts","../src/i18n/locales/ar-SA.ts","../src/i18n/locales/ca-ES.ts","../src/i18n/locales/cs-CZ.ts","../src/i18n/locales/de-DE.ts","../src/i18n/locales/es-ES.ts","../src/i18n/locales/fa-IR.ts","../src/i18n/locales/fi-FI.ts","../src/i18n/locales/fr-FR.ts","../src/i18n/locales/he-IL.ts","../src/i18n/locales/hu-HU.ts","../src/i18n/locales/id-ID.ts","../src/i18n/locales/it-IT.ts","../src/i18n/locales/ja-JP.ts","../src/i18n/locales/kk-KZ.ts","../src/i18n/locales/ko-KR.ts","../src/i18n/locales/lt-LT.ts","../src/i18n/locales/nb-NO.ts","../src/i18n/locales/nl-NL.ts","../src/i18n/locales/pl-PL.ts","../src/i18n/locales/pt-BR.ts","../src/i18n/locales/ro-RO.ts","../src/i18n/locales/ru-RU.ts","../src/i18n/locales/th-TH.ts","../src/i18n/locales/tr-TR.ts","../src/i18n/locales/uk-UA.ts","../src/i18n/locales/vi-VN.ts","../src/i18n/locales/zh-CN.ts","../src/i18n/locales/zh-TW.ts","../src/i18n/index.ts","../src/components/styles/graph.scss","../src/components/scripts/graph.inline.ts","../node_modules/preact/src/constants.js","../node_modules/preact/src/options.js","../node_modules/preact/src/diff/catch-error.js","../node_modules/preact/src/component.js","../node_modules/preact/src/diff/props.js","../node_modules/preact/src/create-context.js","../node_modules/preact/jsx-runtime/src/index.js","../src/components/Graph.tsx"],"names":["options","__e","error","vnode","oldVNode","errorInfo","component","ctor","handled","__","__c","constructor","getDerivedStateFromError","setState","__d","componentDidCatch","__E","e","Promise","prototype","then","bind","resolve","setTimeout","Math","random","toString","vnodeId","createVNode","type","props","key","isStaticChildren","__source","__self","ref","i","normalizedProps","__k","__b","__v","__i","__u","defaultProps","u"],"mappings":"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","file":"index.js","sourcesContent":["export function capitalize(s: string): string {\n return s.substring(0, 1).toUpperCase() + s.substring(1);\n}\n\nexport function classNames(...classes: (string | undefined | null | false)[]): string {\n return classes.filter(Boolean).join(\" \");\n}\n","export default {\n components: {\n graph: {\n title: \"Graph View\",\n },\n },\n};\n","export default {\n components: {\n graph: {\n title: \"Graph View\",\n },\n },\n};\n","export default {\n components: {\n graph: {\n title: \"التمثيل التفاعلي\",\n },\n },\n};\n","export default {\n components: {\n graph: {\n title: \"Vista Gràfica\",\n },\n },\n};\n","export default {\n components: {\n graph: {\n title: \"Graf\",\n },\n },\n};\n","export default {\n components: {\n graph: {\n title: \"Graphansicht\",\n },\n },\n};\n","export default {\n components: {\n graph: {\n title: \"Vista Gráfica\",\n },\n },\n};\n","export default {\n components: {\n graph: {\n title: \"نمای گراف\",\n },\n },\n};\n","export default {\n components: {\n graph: {\n title: \"Verkkonäkymä\",\n },\n },\n};\n","export default {\n components: {\n graph: {\n title: \"Vue graphique\",\n },\n },\n};\n","export default {\n components: {\n graph: {\n title: \"מבט גרף\",\n },\n },\n};\n","export default {\n components: {\n graph: {\n title: \"Grafikonnézet\",\n },\n },\n};\n","export default {\n components: {\n graph: {\n title: \"Tampilan Grafik\",\n },\n },\n};\n","export default {\n components: {\n graph: {\n title: \"Vista grafico\",\n },\n },\n};\n","export default {\n components: {\n graph: {\n title: \"グラフビュー\",\n },\n },\n};\n","export default {\n components: {\n graph: {\n title: \"Граф көрінісі\",\n },\n },\n};\n","export default {\n components: {\n graph: {\n title: \"그래프 뷰\",\n },\n },\n};\n","export default {\n components: {\n graph: {\n title: \"Grafiko Vaizdas\",\n },\n },\n};\n","export default {\n components: {\n graph: {\n title: \"Graf-visning\",\n },\n },\n};\n","export default {\n components: {\n graph: {\n title: \"Grafiekweergave\",\n },\n },\n};\n","export default {\n components: {\n graph: {\n title: \"Graf\",\n },\n },\n};\n","export default {\n components: {\n graph: {\n title: \"Visão de gráfico\",\n },\n },\n};\n","export default {\n components: {\n graph: {\n title: \"Graf\",\n },\n },\n};\n","export default {\n components: {\n graph: {\n title: \"Вид графа\",\n },\n },\n};\n","export default {\n components: {\n graph: {\n title: \"มุมมองกราฟ\",\n },\n },\n};\n","export default {\n components: {\n graph: {\n title: \"Grafik Görünümü\",\n },\n },\n};\n","export default {\n components: {\n graph: {\n title: \"Вигляд графа\",\n },\n },\n};\n","export default {\n components: {\n graph: {\n title: \"Sơ đồ\",\n },\n },\n};\n","export default {\n components: {\n graph: {\n title: \"关系图谱\",\n },\n },\n};\n","export default {\n components: {\n graph: {\n title: \"關係圖譜\",\n },\n },\n};\n","import enUS from \"./locales/en-US\";\nimport enGB from \"./locales/en-GB\";\nimport arSA from \"./locales/ar-SA\";\nimport caES from \"./locales/ca-ES\";\nimport csCZ from \"./locales/cs-CZ\";\nimport deDE from \"./locales/de-DE\";\nimport esES from \"./locales/es-ES\";\nimport faIR from \"./locales/fa-IR\";\nimport fiFI from \"./locales/fi-FI\";\nimport frFR from \"./locales/fr-FR\";\nimport heIL from \"./locales/he-IL\";\nimport huHU from \"./locales/hu-HU\";\nimport idID from \"./locales/id-ID\";\nimport itIT from \"./locales/it-IT\";\nimport jaJP from \"./locales/ja-JP\";\nimport kkKZ from \"./locales/kk-KZ\";\nimport koKR from \"./locales/ko-KR\";\nimport ltLT from \"./locales/lt-LT\";\nimport nbNO from \"./locales/nb-NO\";\nimport nlNL from \"./locales/nl-NL\";\nimport plPL from \"./locales/pl-PL\";\nimport ptBR from \"./locales/pt-BR\";\nimport roRO from \"./locales/ro-RO\";\nimport ruRU from \"./locales/ru-RU\";\nimport thTH from \"./locales/th-TH\";\nimport trTR from \"./locales/tr-TR\";\nimport ukUA from \"./locales/uk-UA\";\nimport viVN from \"./locales/vi-VN\";\nimport zhCN from \"./locales/zh-CN\";\nimport zhTW from \"./locales/zh-TW\";\n\nconst locales: Record<string, typeof enUS> = {\n \"en-US\": enUS,\n \"en-GB\": enGB,\n \"ar-SA\": arSA,\n \"ca-ES\": caES,\n \"cs-CZ\": csCZ,\n \"de-DE\": deDE,\n \"es-ES\": esES,\n \"fa-IR\": faIR,\n \"fi-FI\": fiFI,\n \"fr-FR\": frFR,\n \"he-IL\": heIL,\n \"hu-HU\": huHU,\n \"id-ID\": idID,\n \"it-IT\": itIT,\n \"ja-JP\": jaJP,\n \"kk-KZ\": kkKZ,\n \"ko-KR\": koKR,\n \"lt-LT\": ltLT,\n \"nb-NO\": nbNO,\n \"nl-NL\": nlNL,\n \"pl-PL\": plPL,\n \"pt-BR\": ptBR,\n \"ro-RO\": roRO,\n \"ru-RU\": ruRU,\n \"th-TH\": thTH,\n \"tr-TR\": trTR,\n \"uk-UA\": ukUA,\n \"vi-VN\": viVN,\n \"zh-CN\": zhCN,\n \"zh-TW\": zhTW,\n};\n\nexport function i18n(locale: string) {\n return locales[locale] || enUS;\n}\n",".graph > h3 {\n font-size: 1rem;\n margin: 0;\n}\n.graph > .graph-outer {\n border-radius: 5px;\n border: 1px solid var(--lightgray);\n box-sizing: border-box;\n height: 250px;\n margin: 0.5em 0;\n position: relative;\n overflow: hidden;\n}\n.graph > .graph-outer > .global-graph-icon {\n cursor: pointer;\n background: none;\n border: none;\n color: var(--dark);\n opacity: 0.5;\n width: 24px;\n height: 24px;\n position: absolute;\n padding: 0.2rem;\n margin: 0.3rem;\n top: 0;\n right: 0;\n border-radius: 4px;\n background-color: transparent;\n transition: background-color 0.5s ease;\n}\n.graph > .graph-outer > .global-graph-icon:hover {\n background-color: var(--lightgray);\n}\n.graph > .global-graph-outer {\n position: fixed;\n z-index: 9999;\n left: 0;\n top: 0;\n width: 100vw;\n height: 100%;\n backdrop-filter: blur(4px);\n display: none;\n overflow: hidden;\n}\n.graph > .global-graph-outer.active {\n display: inline-block;\n}\n.graph > .global-graph-outer > .global-graph-container {\n border: 1px solid var(--lightgray);\n background-color: var(--light);\n border-radius: 5px;\n box-sizing: border-box;\n position: fixed;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n height: 80vh;\n width: 80vw;\n}\n@media all and (max-width: 800px) {\n .graph > .global-graph-outer > .global-graph-container {\n width: 90%;\n }\n}\n\n.graph-container {\n width: 100%;\n height: 100%;\n}","var Ct=Object.hasOwnProperty;var he,y,pe,tt,X,Fe,Ce,ve,Mu,Bu,du,Ee,Gu,Ru,Ou,rt,Ae={},bu=[],nt=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,Su=Array.isArray;function V(u,e){for(var r in e)u[r]=e[r];return u}function Iu(u){u&&u.parentNode&&u.parentNode.removeChild(u)}function Uu(u,e,r,o,a){var n={type:u,props:e,key:r,ref:o,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:a??++pe,__i:-1,__u:0};return a==null&&y.vnode!=null&&y.vnode(n),n}function su(u){return u.children}function yu(u,e){this.props=u,this.context=e}function lu(u,e){if(e==null)return u.__?lu(u.__,u.__i+1):null;for(var r;e<u.__k.length;e++)if((r=u.__k[e])!=null&&r.__e!=null)return r.__e;return typeof u.type==\"function\"?lu(u):null}function ot(u){if(u.__P&&u.__d){var e=u.__v,r=e.__e,o=[],a=[],n=V({},e);n.__v=e.__v+1,y.vnode&&y.vnode(n),ye(u.__P,n,e,u.__n,u.__P.namespaceURI,32&e.__u?[r]:null,o,r??lu(e),!!(32&e.__u),a),n.__v=e.__v,n.__.__k[n.__i]=n,Dt(o,n,a),e.__e=e.__=null,n.__e!=r&&ge(n)}}function ge(u){if((u=u.__)!=null&&u.__c!=null)return u.__e=u.__c.base=null,u.__k.some(function(e){if(e!=null&&e.__e!=null)return u.__e=u.__c.base=e.__e}),ge(u)}function fe(u){(!u.__d&&(u.__d=!0)&&X.push(u)&&!xu.__r++||Fe!=y.debounceRendering)&&((Fe=y.debounceRendering)||Ce)(xu)}function xu(){try{for(var u,e=1;X.length;)X.length>e&&X.sort(ve),u=X.shift(),e=X.length,ot(u)}finally{X.length=xu.__r=0}}function me(u,e,r,o,a,n,s,c,h,D,d){var b,t,f,m,x,B,E,p=o&&o.__k||bu,L=e.length;for(h=at(r,e,p,h,L),b=0;b<L;b++)(f=r.__k[b])!=null&&(t=f.__i!=-1&&p[f.__i]||Ae,f.__i=b,B=ye(u,f,t,a,n,s,c,h,D,d),m=f.__e,f.ref&&t.ref!=f.ref&&(t.ref&&zu(t.ref,null,f),d.push(f.ref,f.__c||m,f)),x==null&&m!=null&&(x=m),(E=!!(4&f.__u))||t.__k===f.__k?(h=Be(f,h,u,E),E&&t.__e&&(t.__e=null)):typeof f.type==\"function\"&&B!==void 0?h=B:m&&(h=m.nextSibling),f.__u&=-7);return r.__e=x,h}function at(u,e,r,o,a){var n,s,c,h,D,d=r.length,b=d,t=0;for(u.__k=new Array(a),n=0;n<a;n++)(s=e[n])!=null&&typeof s!=\"boolean\"&&typeof s!=\"function\"?(typeof s==\"string\"||typeof s==\"number\"||typeof s==\"bigint\"||s.constructor==String?s=u.__k[n]=Uu(null,s,null,null,null):Su(s)?s=u.__k[n]=Uu(su,{children:s},null,null,null):s.constructor===void 0&&s.__b>0?s=u.__k[n]=Uu(s.type,s.props,s.key,s.ref?s.ref:null,s.__v):u.__k[n]=s,h=n+t,s.__=u,s.__b=u.__b+1,c=null,(D=s.__i=it(s,r,h,b))!=-1&&(b--,(c=r[D])&&(c.__u|=2)),c==null||c.__v==null?(D==-1&&(a>d?t--:a<d&&t++),typeof s.type!=\"function\"&&(s.__u|=4)):D!=h&&(D==h-1?t--:D==h+1?t++:(D>h?t--:t++,s.__u|=4))):u.__k[n]=null;if(b)for(n=0;n<d;n++)(c=r[n])!=null&&(2&c.__u)==0&&(c.__e==o&&(o=lu(c)),Se(c,c));return o}function Be(u,e,r,o){var a,n;if(typeof u.type==\"function\"){for(a=u.__k,n=0;a&&n<a.length;n++)a[n]&&(a[n].__=u,e=Be(a[n],e,r,o));return e}u.__e!=e&&(o&&(e&&u.type&&!e.parentNode&&(e=lu(u)),r.insertBefore(u.__e,e||null)),e=u.__e);do e=e&&e.nextSibling;while(e!=null&&e.nodeType==8);return e}function it(u,e,r,o){var a,n,s,c=u.key,h=u.type,D=e[r],d=D!=null&&(2&D.__u)==0;if(D===null&&c==null||d&&c==D.key&&h==D.type)return r;if(o>(d?1:0)){for(a=r-1,n=r+1;a>=0||n<e.length;)if((D=e[s=a>=0?a--:n++])!=null&&(2&D.__u)==0&&c==D.key&&h==D.type)return s}return-1}function _e(u,e,r){e[0]==\"-\"?u.setProperty(e,r??\"\"):u[e]=r==null?\"\":typeof r!=\"number\"||nt.test(e)?r:r+\"px\"}function mu(u,e,r,o,a){var n,s;u:if(e==\"style\")if(typeof r==\"string\")u.style.cssText=r;else{if(typeof o==\"string\"&&(u.style.cssText=o=\"\"),o)for(e in o)r&&e in r||_e(u.style,e,\"\");if(r)for(e in r)o&&r[e]==o[e]||_e(u.style,e,r[e])}else if(e[0]==\"o\"&&e[1]==\"n\")n=e!=(e=e.replace(Ee,\"$1\")),s=e.toLowerCase(),e=s in u||e==\"onFocusOut\"||e==\"onFocusIn\"?s.slice(2):e.slice(2),u.l||(u.l={}),u.l[e+n]=r,r?o?r[du]=o[du]:(r[du]=Gu,u.addEventListener(e,n?Ou:Ru,n)):u.removeEventListener(e,n?Ou:Ru,n);else{if(a==\"http://www.w3.org/2000/svg\")e=e.replace(/xlink(H|:h)/,\"h\").replace(/sName$/,\"s\");else if(e!=\"width\"&&e!=\"height\"&&e!=\"href\"&&e!=\"list\"&&e!=\"form\"&&e!=\"tabIndex\"&&e!=\"download\"&&e!=\"rowSpan\"&&e!=\"colSpan\"&&e!=\"role\"&&e!=\"popover\"&&e in u)try{u[e]=r??\"\";break u}catch{}typeof r==\"function\"||(r==null||r===!1&&e[4]!=\"-\"?u.removeAttribute(e):u.setAttribute(e,e==\"popover\"&&r==1?\"\":r))}}function de(u){return function(e){if(this.l){var r=this.l[e.type+u];if(e[Bu]==null)e[Bu]=Gu++;else if(e[Bu]<r[du])return;return r(y.event?y.event(e):e)}}}function ye(u,e,r,o,a,n,s,c,h,D){var d,b,t,f,m,x,B,E,p,L,H,M,N,Fu,Y,q,R=e.type;if(e.constructor!==void 0)return null;128&r.__u&&(h=!!(32&r.__u),n=[c=e.__e=r.__e]),(d=y.__b)&&d(e);u:if(typeof R==\"function\"){b=s.length;try{if(p=e.props,L=R.prototype&&R.prototype.render,H=(d=R.contextType)&&o[d.__c],M=d?H?H.props.value:d.__:o,r.__c?E=(t=e.__c=r.__c).__=t.__E:(L?e.__c=t=new R(p,M):(e.__c=t=new yu(p,M),t.constructor=R,t.render=st),H&&H.sub(t),t.state||(t.state={}),t.__n=o,f=t.__d=!0,t.__h=[],t._sb=[]),L&&t.__s==null&&(t.__s=t.state),L&&R.getDerivedStateFromProps!=null&&(t.__s==t.state&&(t.__s=V({},t.__s)),V(t.__s,R.getDerivedStateFromProps(p,t.__s))),m=t.props,x=t.state,t.__v=e,f)L&&R.getDerivedStateFromProps==null&&t.componentWillMount!=null&&t.componentWillMount(),L&&t.componentDidMount!=null&&t.__h.push(t.componentDidMount);else{if(L&&R.getDerivedStateFromProps==null&&p!==m&&t.componentWillReceiveProps!=null&&t.componentWillReceiveProps(p,M),e.__v==r.__v||!t.__e&&t.shouldComponentUpdate!=null&&t.shouldComponentUpdate(p,t.__s,M)===!1){e.__v!=r.__v&&(t.props=p,t.state=t.__s,t.__d=!1),e.__e=r.__e,e.__k=r.__k,e.__k.some(function(_){_&&(_.__=e)}),bu.push.apply(t.__h,t._sb),t._sb=[],t.__h.length&&s.push(t);break u}t.componentWillUpdate!=null&&t.componentWillUpdate(p,t.__s,M),L&&t.componentDidUpdate!=null&&t.__h.push(function(){t.componentDidUpdate(m,x,B)})}if(t.context=M,t.props=p,t.__P=u,t.__e=!1,N=y.__r,Fu=0,L)t.state=t.__s,t.__d=!1,N&&N(e),d=t.render(t.props,t.state,t.context),bu.push.apply(t.__h,t._sb),t._sb=[];else do t.__d=!1,N&&N(e),d=t.render(t.props,t.state,t.context),t.state=t.__s;while(t.__d&&++Fu<25);t.state=t.__s,t.getChildContext!=null&&(o=V(V({},o),t.getChildContext())),L&&!f&&t.getSnapshotBeforeUpdate!=null&&(B=t.getSnapshotBeforeUpdate(m,x)),Y=d!=null&&d.type===su&&d.key==null?xe(d.props.children):d,c=me(u,Su(Y)?Y:[Y],e,r,o,a,n,s,c,h,D),t.base=e.__e,e.__u&=-161,t.__h.length&&s.push(t),E&&(t.__E=t.__=null)}catch(_){if(s.length=b,e.__v=null,h||n!=null){if(_.then){for(e.__u|=h?160:128;c&&c.nodeType==8&&c.nextSibling;)c=c.nextSibling;n!=null&&(n[n.indexOf(c)]=null),e.__e=c}else if(n!=null)for(q=n.length;q--;)Iu(n[q])}else e.__e=r.__e;e.__k==null&&(e.__k=r.__k||[]),_.then||be(e),y.__e(_,e,r)}}else n==null&&e.__v==r.__v?(e.__k=r.__k,e.__e=r.__e):c=e.__e=lt(r.__e,e,r,o,a,n,s,h,D);return(d=y.diffed)&&d(e),128&e.__u?void 0:c}function be(u){u&&(u.__c&&(u.__c.__e=!0),u.__k&&u.__k.some(be))}function Dt(u,e,r){for(var o=0;o<r.length;o++)zu(r[o],r[++o],r[++o]);y.__c&&y.__c(e,u),u.some(function(a){try{u=a.__h,a.__h=[],u.some(function(n){n.call(a)})}catch(n){y.__e(n,a.__v)}})}function xe(u){return typeof u!=\"object\"||u==null||u.__b>0?u:Su(u)?u.map(xe):u.constructor!==void 0?null:V({},u)}function lt(u,e,r,o,a,n,s,c,h){var D,d,b,t,f,m,x,B=r.props||Ae,E=e.props,p=e.type;if(p==\"svg\"?a=\"http://www.w3.org/2000/svg\":p==\"math\"?a=\"http://www.w3.org/1998/Math/MathML\":a||(a=\"http://www.w3.org/1999/xhtml\"),n!=null){for(D=0;D<n.length;D++)if((f=n[D])&&\"setAttribute\"in f==!!p&&(p?f.localName==p:f.nodeType==3)){u=f,n[D]=null;break}}if(u==null){if(p==null)return document.createTextNode(E);u=document.createElementNS(a,p,E.is&&E),c&&(y.__m&&y.__m(e,n),c=!1),n=null}if(p==null)B===E||c&&u.data==E||(u.data=E);else{if(n=p==\"textarea\"&&E.defaultValue!=null?null:n&&he.call(u.childNodes),!c&&n!=null)for(B={},D=0;D<u.attributes.length;D++)B[(f=u.attributes[D]).name]=f.value;for(D in B)f=B[D],D==\"dangerouslySetInnerHTML\"?b=f:D==\"children\"||D in E||D==\"value\"&&\"defaultValue\"in E||D==\"checked\"&&\"defaultChecked\"in E||mu(u,D,null,f,a);for(D in E)f=E[D],D==\"children\"?t=f:D==\"dangerouslySetInnerHTML\"?d=f:D==\"value\"?m=f:D==\"checked\"?x=f:c&&typeof f!=\"function\"||B[D]===f||mu(u,D,f,B[D],a);if(d)c||b&&(d.__html==b.__html||d.__html==u.innerHTML)||(u.innerHTML=d.__html),e.__k=[];else if(b&&(u.innerHTML=\"\"),me(e.type==\"template\"?u.content:u,Su(t)?t:[t],e,r,o,p==\"foreignObject\"?\"http://www.w3.org/1999/xhtml\":a,n,s,n?n[0]:r.__k&&lu(r,0),c,h),n!=null)for(D=n.length;D--;)Iu(n[D]);c&&p!=\"textarea\"||(D=\"value\",p==\"progress\"&&m==null?u.removeAttribute(\"value\"):m!=null&&(m!==u[D]||p==\"progress\"&&!m||p==\"option\"&&m!=B[D])&&mu(u,D,m,B[D],a),D=\"checked\",x!=null&&x!=u[D]&&mu(u,D,x,B[D],a))}return u}function zu(u,e,r){try{if(typeof u==\"function\"){var o=typeof u.__u==\"function\";o&&u.__u(),o&&e==null||(u.__u=u(e))}else u.current=e}catch(a){y.__e(a,r)}}function Se(u,e,r){var o,a;if(y.unmount&&y.unmount(u),(o=u.ref)&&(o.current&&o.current!=u.__e||zu(o,null,e)),(o=u.__c)!=null){if(o.componentWillUnmount)try{o.componentWillUnmount()}catch(n){y.__e(n,e)}o.base=o.__P=o.__n=null}if(o=u.__k)for(a=0;a<o.length;a++)o[a]&&Se(o[a],e,r||typeof u.type!=\"function\");r||Iu(u.__e),u.__c=u.__=u.__e=void 0}function st(u,e,r){return this.constructor(u,r)}he=bu.slice,y={__e:function(u,e,r,o){for(var a,n,s;e=e.__;)if((a=e.__c)&&!a.__)try{if((n=a.constructor)&&n.getDerivedStateFromError!=null&&(a.setState(n.getDerivedStateFromError(u)),s=a.__d),a.componentDidCatch!=null&&(a.componentDidCatch(u,o||{}),s=a.__d),s)return a.__E=a}catch(c){u=c}throw u}},pe=0,tt=function(u){return u!=null&&u.constructor===void 0},yu.prototype.setState=function(u,e){var r;r=this.__s!=null&&this.__s!=this.state?this.__s:this.__s=V({},this.state),typeof u==\"function\"&&(u=u(V({},r),this.props)),u&&V(r,u),u!=null&&this.__v&&(e&&this._sb.push(e),fe(this))},yu.prototype.forceUpdate=function(u){this.__v&&(this.__e=!0,u&&this.__h.push(u),fe(this))},yu.prototype.render=su,X=[],Ce=typeof Promise==\"function\"?Promise.prototype.then.bind(Promise.resolve()):setTimeout,ve=function(u,e){return u.__v.__b-e.__v.__b},xu.__r=0,Mu=Math.random().toString(8),Bu=\"__d\"+Mu,du=\"__a\"+Mu,Ee=/(PointerCapture)$|Capture$/i,Gu=0,Ru=de(!1),Ou=de(!0),rt=0;function cu(u){let e=_t(ft(u,\"index\"),!0);return e.length===0?\"/\":e}function we(){let u=decodeURI(window.location.pathname);return u.endsWith(\"/\")&&(u=u.slice(0,-1)),u.startsWith(\"/\")&&(u=u.slice(1)),u}function Hu(){return typeof document>\"u\"?\"\":document.body?.dataset?.basepath??\"\"}function Nu(u,e){let r=e??Hu(),o=u.startsWith(\"/\")?u:\"/\"+u;return r+o}function Ft(u,e){return u===e||u.endsWith(\"/\"+e)}function ft(u,e){return Ft(u,e)&&(u=u.slice(0,-e.length)),u}function _t(u,e){return u.startsWith(\"/\")&&(u=u.substring(1)),!e&&u.endsWith(\"/\")&&(u=u.slice(0,-1)),u}function ke(u){for(;u.firstChild;)u.removeChild(u.firstChild)}(function(){function u(){var o=we(),a=Hu();return a&&o.startsWith(a.replace(/^\\//,\"\"))&&(o=o.slice(a.replace(/^\\//,\"\").length),o.startsWith(\"/\")&&(o=o.slice(1))),o}function e(o){var a=document.querySelector('script[src=\"'+o+'\"]');return a?Promise.resolve():new Promise(function(n,s){var c=document.createElement(\"script\");c.src=o,c.crossOrigin=\"anonymous\",c.onload=n,c.onerror=s,document.head.appendChild(c)})}Promise.all([e(\"https://cdn.jsdelivr.net/npm/d3@7/dist/d3.min.js\"),e(\"https://cdn.jsdelivr.net/npm/pixi.js@8/dist/pixi.js\")]).then(function(){r()}).catch(function(o){console.error(\"[Graph] Failed to load libraries:\",o);for(var a=document.querySelectorAll(\".graph-container\"),n=0;n<a.length;n++)a[n].textContent=\"Graph could not load. Check your network connection.\",a[n].style.display=\"flex\",a[n].style.alignItems=\"center\",a[n].style.justifyContent=\"center\",a[n].style.color=\"var(--gray)\",a[n].style.fontSize=\"0.9rem\"});function r(){var o=window.d3,a=window.PIXI;if(!o||!a){console.error(\"[Graph] Libraries not loaded\");return}var n=\"graph-visited\";function s(){return new Set(JSON.parse(localStorage.getItem(n)||\"[]\"))}function c(_){var w=s();w.add(_),localStorage.setItem(n,JSON.stringify(Array.from(w)))}function h(_,w){if(!_)return w;var A=document.createElement(\"div\");A.style.color=_,A.style.position=\"absolute\",A.style.visibility=\"hidden\",document.body.appendChild(A);var g=getComputedStyle(A).color;return A.remove(),g||w}async function D(_,w,A){var g=cu(w);g===\"\"&&(g=\"index\");var K=s();if(ke(_),A!==void 0&&A!==t)return console.log(\"[Graph] Stale render, skipping\"),function(){};var S=JSON.parse(_.dataset.cfg||\"{}\"),fu=S.drag,Le=S.zoom,$u=S.depth,Vu=S.scale||1,Pe=S.repelForce||.5,je=S.centerForce||.3,Te=S.linkDistance||30,We=S.fontSize||.6,Me=S.opacityScale||1,Ue=S.removeTags||[],Re=S.showTags,Oe=S.focusOnHover,Ge=S.enableRadial,uu;try{var qu=await fetchData;uu=new Map;for(var Ku in qu)uu.set(cu(Ku),qu[Ku])}catch(i){return console.error(\"[Graph] Error loading data:\",i),function(){}}var O=_.offsetWidth,G=Math.max(_.offsetHeight,250),eu=[],hu=[],Ju=new Set(uu.keys());uu.forEach(function(i,l){for(var F=i.links||[],v=0;v<F.length;v++){var C=cu(F[v]);Ju.has(C)&&eu.push({source:l,target:C})}if(Re)for(var T=i.tags||[],v=0;v<T.length;v++){var $=T[v];if(Ue.indexOf($)===-1){var J=cu(\"tags/\"+$);hu.indexOf(J)===-1&&hu.push(J),eu.push({source:l,target:J})}}});var tu=new Set;if($u>=0)for(var pu=[g],Cu=new Set([g]),Xu=0;Xu<=$u&&pu.length>0;Xu++){for(var wu=[],ku=0;ku<pu.length;ku++){var Lu=pu[ku];tu.add(Lu);for(var Pu=0;Pu<eu.length;Pu++){var W=eu[Pu];W.source===Lu&&!Cu.has(W.target)&&(Cu.add(W.target),wu.push(W.target)),W.target===Lu&&!Cu.has(W.source)&&(Cu.add(W.source),wu.push(W.source))}}pu=wu}else{Ju.forEach(function(i){tu.add(i)});for(var k=0;k<hu.length;k++)tu.add(hu[k])}var ru=[],ju=new Map;tu.forEach(function(i){var l=i.startsWith(\"tags/\"),F=l?\"#\"+i.substring(5):uu.get(i)?.title||i,v=l?[]:uu.get(i)?.tags||[],C={id:i,text:F,tags:v,x:Math.random()*O-O/2,y:Math.random()*G-G/2,vx:0,vy:0};ru.push(C),ju.set(i,C)});for(var z=[],k=0;k<eu.length;k++){var W=eu[k];if(tu.has(W.source)&&tu.has(W.target)){var Yu=ju.get(W.source),Zu=ju.get(W.target);Yu&&Zu&&z.push({source:Yu,target:Zu})}}var Z=getComputedStyle(document.documentElement),Ie=h(Z.getPropertyValue(\"--secondary\").trim(),\"#c792ea\"),Qu=h(Z.getPropertyValue(\"--tertiary\").trim(),\"#82aaff\"),ue=h(Z.getPropertyValue(\"--gray\").trim(),\"#6c6c6c\"),ee=h(Z.getPropertyValue(\"--lightgray\").trim(),\"#d4d4d4\"),ze=h(Z.getPropertyValue(\"--dark\").trim(),\"#1a1a1a\"),He=h(Z.getPropertyValue(\"--light\").trim(),\"#f5f5f5\"),Ne=Z.getPropertyValue(\"--bodyFont\").trim()||\"inherit\",Q=new a.Application;await Q.init({width:O,height:G,antialias:!0,backgroundAlpha:0,resolution:window.devicePixelRatio||1,autoDensity:!0,eventMode:\"static\"}),_.appendChild(Q.canvas);var nu=new a.Container;Q.stage.addChild(nu);var ou=o.forceSimulation(ru).force(\"charge\",o.forceManyBody().strength(-100*Pe)).force(\"center\",o.forceCenter().strength(je)).force(\"link\",o.forceLink(z).distance(Te)).force(\"collide\",o.forceCollide().radius(function(i){for(var l=0,F=0;F<z.length;F++)(z[F].source.id===i.id||z[F].target.id===i.id)&&l++;return 2+Math.sqrt(l)}).iterations(3));if(Ge){var Tu=Math.min(O,G)/2*.8;ou.force(\"radial\",o.forceRadial(Tu).strength(.2))}var te=new a.Container,re=new a.Container,vu=new a.Container;nu.addChild(te),nu.addChild(re),nu.addChild(vu);var P=[],I=[],_u=null,au=new Set,ne=0,Eu=!1,j=o.zoomIdentity;function oe(i){for(var l=0,F=0;F<z.length;F++)(z[F].source.id===i.id||z[F].target.id===i.id)&&l++;return 2+Math.sqrt(l)}function $e(i){var l=i.id===g;return l?Ie:K.has(i.id)||i.id.startsWith(\"tags/\")?Qu:ue}function Wu(i){if(_u=i,i===null){au=new Set;for(var l=0;l<P.length;l++)P[l].active=!1;for(var l=0;l<I.length;l++)I[l].active=!1}else{au=new Set;for(var l=0;l<I.length;l++){var F=I[l].simulationData;F.source.id===i||F.target.id===i?(au.add(F.source.id),au.add(F.target.id),I[l].active=!0):I[l].active=!1}au.add(i);for(var l=0;l<P.length;l++)au.has(P[l].simulationData.id)?P[l].active=!0:P[l].active=!1}}function Ve(){for(var i=0;i<I.length;i++){var l=I[i],F=1;_u!==null&&(F=l.active?1:.2),l.alpha=F,l.color=l.active?ue:ee}}function qe(){for(var i=1/Vu,l=i*1.1,F=0;F<P.length;F++){var v=P[F];_u===v.simulationData.id?(v.label.alpha=1,v.label.scale.set(l)):v.label.scale.set(i)}}function Ke(){for(var i=0;i<P.length;i++){var l=P[i],F=1;_u!==null&&Oe&&(F=l.active?1:.2),l.gfx.alpha=F}}function Au(){Ke(),Ve(),qe()}for(var k=0;k<ru.length;k++){var iu=ru[k],ae=iu.id,ie=ae.startsWith(\"tags/\"),Tu=oe(iu),De=$e(iu),Du=new a.Text({text:iu.text,style:{fontSize:We*15,fill:ze,fontFamily:Ne},resolution:window.devicePixelRatio*4});Du.anchor.set(.5,1.2),Du.alpha=0,Du.scale.set(1/Vu),vu.addChild(Du);var U=new a.Graphics;U.circle(0,0,Tu),U.fill({color:ie?He:De}),ie&&U.stroke({width:2,color:Qu}),U.eventMode=\"static\",U.cursor=\"pointer\",U.label=ae,(function(F,v,C){var T=0;v.on(\"pointerover\",function($){Wu(F.id),T=C.alpha,Eu||Au()}),v.on(\"pointerleave\",function(){Wu(null),C.alpha=T,Eu||Au()})})(iu,U,Du),re.addChild(U),P.push({simulationData:iu,gfx:U,label:Du,color:De,alpha:1,active:!1})}for(var k=0;k<z.length;k++){var W=z[k],U=new a.Graphics;U.eventMode=\"none\",te.addChild(U),I.push({simulationData:W,gfx:U,color:ee,alpha:1,active:!1})}if(fu){var Je=function(i){for(var l=(i.x-j.x)/j.k,F=(i.y-j.y)/j.k,v=0;v<ru.length;v++){var C=ru[v],T=l-C.x-O/2,$=F-C.y-G/2,J=Math.sqrt(T*T+$*$),gu=oe(C);if(J<gu+5)return C}return null},Xe=function(i){i.active||ou.alphaTarget(1).restart(),i.subject.fx=i.subject.x,i.subject.fy=i.subject.y;var l=(i.x-j.x)/j.k-O/2,F=(i.y-j.y)/j.k-G/2;i.subject.__dragOffset={x:l-i.subject.x,y:F-i.subject.y},ne=Date.now(),Eu=!0,_u=i.subject.id},Ye=function(i){var l=(i.x-j.x)/j.k-O/2,F=(i.y-j.y)/j.k-G/2;i.subject.fx=l-i.subject.__dragOffset.x,i.subject.fy=F-i.subject.__dragOffset.y},Ze=function(i){if(i.active||ou.alphaTarget(0),i.subject.fx=null,i.subject.fy=null,Eu=!1,Wu(null),Au(),Date.now()-ne<500){var l=Nu(i.subject.id);window.location.href=l}},Qe=o.drag().container(Q.canvas).subject(Je).on(\"start\",Xe).on(\"drag\",Ye).on(\"end\",Ze);o.select(Q.canvas).call(Qe)}else for(var k=0;k<P.length;k++)(function(l){l.gfx.on(\"click\",function(){var F=Nu(l.simulationData.id);window.location.href=F})})(P[k]);if(Le){var ut=function(i){j=i.transform,nu.scale.set(j.k,j.k),nu.position.set(j.x,j.y);for(var l=j.k*Me,F=Math.max((l-1)/3.75,0),v=[],C=0;C<P.length;C++)P[C].active&&v.push(P[C].label);for(var C=0;C<vu.children.length;C++){var T=vu.children[C];v.indexOf(T)===-1&&(T.alpha=F)}},et=o.zoom().extent([[0,0],[O,G]]).scaleExtent([.25,4]).on(\"zoom\",ut);o.select(Q.canvas).call(et)}var le=!1;function se(){if(!le){for(var i=0;i<P.length;i++){var l=P[i],F=l.simulationData.x,v=l.simulationData.y;F!=null&&v!=null&&(l.gfx.position.set(F+O/2,v+G/2),l.label&&l.label.position.set(F+O/2,v+G/2))}for(var i=0;i<I.length;i++){var C=I[i],T=C.simulationData,$=T.source.x,J=T.source.y,gu=T.target.x,ce=T.target.y;$!=null&&J!=null&&gu!=null&&ce!=null&&(C.gfx.clear(),C.gfx.moveTo($+O/2,J+G/2),C.gfx.lineTo(gu+O/2,ce+G/2),C.gfx.stroke({alpha:C.alpha,width:1,color:C.color}))}requestAnimationFrame(se)}}return ou.on(\"tick\",function(){}),ou.restart(),Au(),se(),function(){le=!0,ou.stop();try{Q.destroy(!0)}catch{}}}var d=[],b=[],t=0;function f(){for(var _=0;_<d.length;_++)d[_]();d=[]}function m(){for(var _=0;_<b.length;_++)b[_]();b=[]}var x=[],B=[],E=null,p=null,L=null;function H(){m();for(var _=0;_<x.length;_++){x[_].classList.remove(\"active\");var w=x[_].closest(\".sidebar\");w&&(w.style.zIndex=\"\")}}function M(){for(var _=0;_<x.length;_++)if(x[_].classList.contains(\"active\"))return!0;return!1}function N(){m();for(var _=u(),w=0;w<x.length;w++){var A=x[w];A.classList.add(\"active\");var g=A.closest(\".sidebar\");g&&(g.style.zIndex=\"1\");var K=A.querySelector(\".global-graph-container\");K&&(function(S){D(S,_,void 0).then(function(fu){b.push(fu)}).catch(function(fu){console.error(\"[Graph] Global render error:\",fu)})})(K)}}function Fu(){M()?H():N()}function Y(){f();var _=++t,w=u();c(w);for(var A=document.querySelectorAll(\".graph-container\"),g=0;g<A.length;g++)(function(K){D(K,w,_).then(function(S){_===t&&d.push(S)}).catch(function(S){console.error(\"[Graph] Local render error:\",S)})})(A[g])}function q(_){var w=_.detail?_.detail.url:u();if(c(cu(w)),Y(),x=Array.from(document.querySelectorAll(\".global-graph-outer\")),L)for(var A=0;A<B.length;A++)B[A].removeEventListener(\"click\",L);B=Array.from(document.querySelectorAll(\".global-graph-icon\")),L=function(){Fu()};for(var A=0;A<B.length;A++)B[A].addEventListener(\"click\",L);E&&document.removeEventListener(\"click\",E),E=function(g){if(M()){var K=g.target.closest(\".global-graph-container\"),S=g.target.closest(\".global-graph-icon\");!K&&!S&&H()}},document.addEventListener(\"click\",E),p&&document.removeEventListener(\"keydown\",p),p=function(g){if(g.key===\"Escape\"){M()&&H();return}g.key===\"g\"&&(g.ctrlKey||g.metaKey)&&!g.shiftKey&&(g.preventDefault(),Fu())},document.addEventListener(\"keydown\",p),M()&&N()}document.readyState===\"loading\"?document.addEventListener(\"DOMContentLoaded\",function(){q({detail:{url:u()}})}):q({detail:{url:u()}}),document.addEventListener(\"prenav\",function(){f(),m()}),document.addEventListener(\"nav\",q),document.addEventListener(\"render\",q);function R(){Y(),M()&&N()}document.addEventListener(\"themechange\",R)}})();\n","/** Normal hydration that attaches to a DOM tree but does not diff it. */\nexport const MODE_HYDRATE = 1 << 5;\n/** Signifies this VNode suspended on the previous render */\nexport const MODE_SUSPENDED = 1 << 7;\n/** Indicates that this node needs to be inserted while patching children */\nexport const INSERT_VNODE = 1 << 2;\n/** Indicates a VNode has been matched with another VNode in the diff */\nexport const MATCHED = 1 << 1;\n\n/** Reset all mode flags */\nexport const RESET_MODE = ~(MODE_HYDRATE | MODE_SUSPENDED);\n\nexport const SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\nexport const XHTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';\nexport const MATH_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';\n\nexport const NULL = null;\nexport const UNDEFINED = undefined;\nexport const EMPTY_OBJ = /** @type {any} */ ({});\nexport const EMPTY_ARR = [];\nexport const IS_NON_DIMENSIONAL =\n\t/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;\n","import { _catchError } from './diff/catch-error';\n\n/**\n * The `option` object can potentially contain callback functions\n * that are called during various stages of our renderer. This is the\n * foundation on which all our addons like `preact/debug`, `preact/compat`,\n * and `preact/hooks` are based on. See the `Options` type in `internal.d.ts`\n * for a full list of available option hooks (most editors/IDEs allow you to\n * ctrl+click or cmd+click on mac the type definition below).\n * @type {import('./internal').Options}\n */\nconst options = {\n\t_catchError\n};\n\nexport default options;\n","import { NULL } from '../constants';\n\n/**\n * Find the closest error boundary to a thrown error and call it\n * @param {object} error The thrown value\n * @param {import('../internal').VNode} vnode The vnode that threw the error that was caught (except\n * for unmounting when this parameter is the highest parent that was being\n * unmounted)\n * @param {import('../internal').VNode} [oldVNode]\n * @param {import('../internal').ErrorInfo} [errorInfo]\n */\nexport function _catchError(error, vnode, oldVNode, errorInfo) {\n\t/** @type {import('../internal').Component} */\n\tlet component,\n\t\t/** @type {import('../internal').ComponentType} */\n\t\tctor,\n\t\t/** @type {boolean} */\n\t\thandled;\n\n\tfor (; (vnode = vnode._parent); ) {\n\t\tif ((component = vnode._component) && !component._processingException) {\n\t\t\ttry {\n\t\t\t\tctor = component.constructor;\n\n\t\t\t\tif (ctor && ctor.getDerivedStateFromError != NULL) {\n\t\t\t\t\tcomponent.setState(ctor.getDerivedStateFromError(error));\n\t\t\t\t\thandled = component._dirty;\n\t\t\t\t}\n\n\t\t\t\tif (component.componentDidCatch != NULL) {\n\t\t\t\t\tcomponent.componentDidCatch(error, errorInfo || {});\n\t\t\t\t\thandled = component._dirty;\n\t\t\t\t}\n\n\t\t\t\t// This is an error boundary. Mark it as having bailed out, and whether it was mid-hydration.\n\t\t\t\tif (handled) {\n\t\t\t\t\treturn (component._pendingError = component);\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\terror = e;\n\t\t\t}\n\t\t}\n\t}\n\n\tthrow error;\n}\n","import { assign } from './util';\nimport { diff, commitRoot } from './diff/index';\nimport options from './options';\nimport { Fragment } from './create-element';\nimport { MODE_HYDRATE, NULL } from './constants';\n\n/**\n * Base Component class. Provides `setState()` and `forceUpdate()`, which\n * trigger rendering\n * @param {object} props The initial component props\n * @param {object} context The initial context from parent components'\n * getChildContext\n */\nexport function BaseComponent(props, context) {\n\tthis.props = props;\n\tthis.context = context;\n}\n\n/**\n * Update component state and schedule a re-render.\n * @this {import('./internal').Component}\n * @param {object | ((s: object, p: object) => object)} update A hash of state\n * properties to update with new values or a function that given the current\n * state and props returns a new partial state\n * @param {() => void} [callback] A function to be called once component state is\n * updated\n */\nBaseComponent.prototype.setState = function (update, callback) {\n\t// only clone state when copying to nextState the first time.\n\tlet s;\n\tif (this._nextState != NULL && this._nextState != this.state) {\n\t\ts = this._nextState;\n\t} else {\n\t\ts = this._nextState = assign({}, this.state);\n\t}\n\n\tif (typeof update == 'function') {\n\t\t// Some libraries like `immer` mark the current state as readonly,\n\t\t// preventing us from mutating it, so we need to clone it. See #2716\n\t\tupdate = update(assign({}, s), this.props);\n\t}\n\n\tif (update) {\n\t\tassign(s, update);\n\t}\n\n\t// Skip update if updater function returned null\n\tif (update == NULL) return;\n\n\tif (this._vnode) {\n\t\tif (callback) {\n\t\t\tthis._stateCallbacks.push(callback);\n\t\t}\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Immediately perform a synchronous re-render of the component\n * @this {import('./internal').Component}\n * @param {() => void} [callback] A function to be called after component is\n * re-rendered\n */\nBaseComponent.prototype.forceUpdate = function (callback) {\n\tif (this._vnode) {\n\t\t// Set render mode so that we can differentiate where the render request\n\t\t// is coming from. We need this because forceUpdate should never call\n\t\t// shouldComponentUpdate\n\t\tthis._force = true;\n\t\tif (callback) this._renderCallbacks.push(callback);\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Accepts `props` and `state`, and returns a new Virtual DOM tree to build.\n * Virtual DOM is generally constructed via [JSX](https://jasonformat.com/wtf-is-jsx).\n * @param {object} props Props (eg: JSX attributes) received from parent\n * element/component\n * @param {object} state The component's current state\n * @param {object} context Context object, as returned by the nearest\n * ancestor's `getChildContext()`\n * @returns {ComponentChildren | void}\n */\nBaseComponent.prototype.render = Fragment;\n\n/**\n * @param {import('./internal').VNode} vnode\n * @param {number | null} [childIndex]\n */\nexport function getDomSibling(vnode, childIndex) {\n\tif (childIndex == NULL) {\n\t\t// Use childIndex==null as a signal to resume the search from the vnode's sibling\n\t\treturn vnode._parent\n\t\t\t? getDomSibling(vnode._parent, vnode._index + 1)\n\t\t\t: NULL;\n\t}\n\n\tlet sibling;\n\tfor (; childIndex < vnode._children.length; childIndex++) {\n\t\tsibling = vnode._children[childIndex];\n\n\t\tif (sibling != NULL && sibling._dom != NULL) {\n\t\t\t// Since updateParentDomPointers keeps _dom pointer correct,\n\t\t\t// we can rely on _dom to tell us if this subtree contains a\n\t\t\t// rendered DOM node, and what the first rendered DOM node is\n\t\t\treturn sibling._dom;\n\t\t}\n\t}\n\n\t// If we get here, we have not found a DOM node in this vnode's children.\n\t// We must resume from this vnode's sibling (in it's parent _children array)\n\t// Only climb up and search the parent if we aren't searching through a DOM\n\t// VNode (meaning we reached the DOM parent of the original vnode that began\n\t// the search)\n\treturn typeof vnode.type == 'function' ? getDomSibling(vnode) : NULL;\n}\n\n/**\n * Trigger in-place re-rendering of a component.\n * @param {import('./internal').Component} component The component to rerender\n */\nfunction renderComponent(component) {\n\tif (component._parentDom && component._dirty) {\n\t\tlet oldVNode = component._vnode,\n\t\t\toldDom = oldVNode._dom,\n\t\t\tcommitQueue = [],\n\t\t\trefQueue = [],\n\t\t\tnewVNode = assign({}, oldVNode);\n\t\tnewVNode._original = oldVNode._original + 1;\n\t\tif (options.vnode) options.vnode(newVNode);\n\n\t\tdiff(\n\t\t\tcomponent._parentDom,\n\t\t\tnewVNode,\n\t\t\toldVNode,\n\t\t\tcomponent._globalContext,\n\t\t\tcomponent._parentDom.namespaceURI,\n\t\t\toldVNode._flags & MODE_HYDRATE ? [oldDom] : NULL,\n\t\t\tcommitQueue,\n\t\t\toldDom == NULL ? getDomSibling(oldVNode) : oldDom,\n\t\t\t!!(oldVNode._flags & MODE_HYDRATE),\n\t\t\trefQueue\n\t\t);\n\n\t\tnewVNode._original = oldVNode._original;\n\t\tnewVNode._parent._children[newVNode._index] = newVNode;\n\t\tcommitRoot(commitQueue, newVNode, refQueue);\n\t\toldVNode._dom = oldVNode._parent = null;\n\n\t\tif (newVNode._dom != oldDom) {\n\t\t\tupdateParentDomPointers(newVNode);\n\t\t}\n\t}\n}\n\n/**\n * @param {import('./internal').VNode} vnode\n */\nfunction updateParentDomPointers(vnode) {\n\tif ((vnode = vnode._parent) != NULL && vnode._component != NULL) {\n\t\tvnode._dom = vnode._component.base = NULL;\n\t\tvnode._children.some(child => {\n\t\t\tif (child != NULL && child._dom != NULL) {\n\t\t\t\treturn (vnode._dom = vnode._component.base = child._dom);\n\t\t\t}\n\t\t});\n\n\t\treturn updateParentDomPointers(vnode);\n\t}\n}\n\n/**\n * The render queue\n * @type {Array<import('./internal').Component>}\n */\nlet rerenderQueue = [];\n\n/*\n * The value of `Component.debounce` must asynchronously invoke the passed in callback. It is\n * important that contributors to Preact can consistently reason about what calls to `setState`, etc.\n * do, and when their effects will be applied. See the links below for some further reading on designing\n * asynchronous APIs.\n * * [Designing APIs for Asynchrony](https://blog.izs.me/2013/08/designing-apis-for-asynchrony)\n * * [Callbacks synchronous and asynchronous](https://blog.ometer.com/2011/07/24/callbacks-synchronous-and-asynchronous/)\n */\n\nlet prevDebounce;\n\nconst defer =\n\ttypeof Promise == 'function'\n\t\t? Promise.prototype.then.bind(Promise.resolve())\n\t\t: setTimeout;\n\n/**\n * Enqueue a rerender of a component\n * @param {import('./internal').Component} c The component to rerender\n */\nexport function enqueueRender(c) {\n\tif (\n\t\t(!c._dirty &&\n\t\t\t(c._dirty = true) &&\n\t\t\trerenderQueue.push(c) &&\n\t\t\t!process._rerenderCount++) ||\n\t\tprevDebounce != options.debounceRendering\n\t) {\n\t\tprevDebounce = options.debounceRendering;\n\t\t(prevDebounce || defer)(process);\n\t}\n}\n\n/**\n * @param {import('./internal').Component} a\n * @param {import('./internal').Component} b\n */\nconst depthSort = (a, b) => a._vnode._depth - b._vnode._depth;\n\n/** Flush the render queue by rerendering all queued components */\nfunction process() {\n\ttry {\n\t\tlet c,\n\t\t\tl = 1;\n\n\t\t// Don't update `renderCount` yet. Keep its value non-zero to prevent unnecessary\n\t\t// process() calls from getting scheduled while `queue` is still being consumed.\n\t\twhile (rerenderQueue.length) {\n\t\t\t// Keep the rerender queue sorted by (depth, insertion order). The queue\n\t\t\t// will initially be sorted on the first iteration only if it has more than 1 item.\n\t\t\t//\n\t\t\t// New items can be added to the queue e.g. when rerendering a provider, so we want to\n\t\t\t// keep the order from top to bottom with those new items so we can handle them in a\n\t\t\t// single pass\n\t\t\tif (rerenderQueue.length > l) {\n\t\t\t\trerenderQueue.sort(depthSort);\n\t\t\t}\n\n\t\t\tc = rerenderQueue.shift();\n\t\t\tl = rerenderQueue.length;\n\n\t\t\trenderComponent(c);\n\t\t}\n\t} finally {\n\t\trerenderQueue.length = process._rerenderCount = 0;\n\t}\n}\n\nprocess._rerenderCount = 0;\n","import { IS_NON_DIMENSIONAL, NULL, SVG_NAMESPACE } from '../constants';\nimport options from '../options';\n\n// Per-instance unique key for event clock stamps. Each Preact copy on the page\n// gets its own random suffix so that `_dispatched` / `_attached` properties on\n// shared event objects and handler functions cannot collide across instances.\n// ~1 in 60M collision odds - if you have that many praect versions on the page,\n// you deserve some weird bugs.\n// In 11 we can replace this with a\n// Symbol\nlet _id = Math.random().toString(8),\n\tEVENT_DISPATCHED = '__d' + _id,\n\tEVENT_ATTACHED = '__a' + _id;\n\nfunction setStyle(style, key, value) {\n\tif (key[0] == '-') {\n\t\tstyle.setProperty(key, value == NULL ? '' : value);\n\t} else if (value == NULL) {\n\t\tstyle[key] = '';\n\t} else if (typeof value != 'number' || IS_NON_DIMENSIONAL.test(key)) {\n\t\tstyle[key] = value;\n\t} else {\n\t\tstyle[key] = value + 'px';\n\t}\n}\n\nconst CAPTURE_REGEX = /(PointerCapture)$|Capture$/i;\n\n// A logical clock to solve issues like https://github.com/preactjs/preact/issues/3927.\n// When the DOM performs an event it leaves micro-ticks in between bubbling up which means that\n// an event can trigger on a newly reated DOM-node while the event bubbles up.\n//\n// Originally inspired by Vue\n// (https://github.com/vuejs/core/blob/caeb8a68811a1b0f79/packages/runtime-dom/src/modules/events.ts#L90-L101),\n// but modified to use a logical clock instead of Date.now() in case event handlers get attached\n// and events get dispatched during the same millisecond.\n//\n// The clock is incremented after each new event dispatch. This allows 1 000 000 new events\n// per second for over 280 years before the value reaches Number.MAX_SAFE_INTEGER (2**53 - 1).\nlet eventClock = 0;\n\n/**\n * Set a property value on a DOM node\n * @param {import('../internal').PreactElement} dom The DOM node to modify\n * @param {string} name The name of the property to set\n * @param {*} value The value to set the property to\n * @param {*} oldValue The old value the property had\n * @param {string} namespace Whether or not this DOM node is an SVG node or not\n */\nexport function setProperty(dom, name, value, oldValue, namespace) {\n\tlet useCapture;\n\n\to: if (name == 'style') {\n\t\tif (typeof value == 'string') {\n\t\t\tdom.style.cssText = value;\n\t\t} else {\n\t\t\tif (typeof oldValue == 'string') {\n\t\t\t\tdom.style.cssText = oldValue = '';\n\t\t\t}\n\n\t\t\tif (oldValue) {\n\t\t\t\tfor (name in oldValue) {\n\t\t\t\t\tif (!(value && name in value)) {\n\t\t\t\t\t\tsetStyle(dom.style, name, '');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (value) {\n\t\t\t\tfor (name in value) {\n\t\t\t\t\tif (!oldValue || value[name] != oldValue[name]) {\n\t\t\t\t\t\tsetStyle(dom.style, name, value[name]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t// Benchmark for comparison: https://esbench.com/bench/574c954bdb965b9a00965ac6\n\telse if (name[0] == 'o' && name[1] == 'n') {\n\t\tuseCapture = name != (name = name.replace(CAPTURE_REGEX, '$1'));\n\t\tconst lowerCaseName = name.toLowerCase();\n\n\t\t// Infer correct casing for DOM built-in events:\n\t\tif (lowerCaseName in dom || name == 'onFocusOut' || name == 'onFocusIn')\n\t\t\tname = lowerCaseName.slice(2);\n\t\telse name = name.slice(2);\n\n\t\tif (!dom._listeners) dom._listeners = {};\n\t\tdom._listeners[name + useCapture] = value;\n\n\t\tif (value) {\n\t\t\tif (!oldValue) {\n\t\t\t\tvalue[EVENT_ATTACHED] = eventClock;\n\t\t\t\tdom.addEventListener(\n\t\t\t\t\tname,\n\t\t\t\t\tuseCapture ? eventProxyCapture : eventProxy,\n\t\t\t\t\tuseCapture\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tvalue[EVENT_ATTACHED] = oldValue[EVENT_ATTACHED];\n\t\t\t}\n\t\t} else {\n\t\t\tdom.removeEventListener(\n\t\t\t\tname,\n\t\t\t\tuseCapture ? eventProxyCapture : eventProxy,\n\t\t\t\tuseCapture\n\t\t\t);\n\t\t}\n\t} else {\n\t\tif (namespace == SVG_NAMESPACE) {\n\t\t\t// Normalize incorrect prop usage for SVG:\n\t\t\t// - xlink:href / xlinkHref --> href (xlink:href was removed from SVG and isn't needed)\n\t\t\t// - className --> class\n\t\t\tname = name.replace(/xlink(H|:h)/, 'h').replace(/sName$/, 's');\n\t\t} else if (\n\t\t\tname != 'width' &&\n\t\t\tname != 'height' &&\n\t\t\tname != 'href' &&\n\t\t\tname != 'list' &&\n\t\t\tname != 'form' &&\n\t\t\t// Default value in browsers is `-1` and an empty string is\n\t\t\t// cast to `0` instead\n\t\t\tname != 'tabIndex' &&\n\t\t\tname != 'download' &&\n\t\t\tname != 'rowSpan' &&\n\t\t\tname != 'colSpan' &&\n\t\t\tname != 'role' &&\n\t\t\tname != 'popover' &&\n\t\t\tname in dom\n\t\t) {\n\t\t\ttry {\n\t\t\t\tdom[name] = value == NULL ? '' : value;\n\t\t\t\t// labelled break is 1b smaller here than a return statement (sorry)\n\t\t\t\tbreak o;\n\t\t\t} catch (e) {}\n\t\t}\n\n\t\t// aria- and data- attributes have no boolean representation.\n\t\t// A `false` value is different from the attribute not being\n\t\t// present, so we can't remove it. For non-boolean aria\n\t\t// attributes we could treat false as a removal, but the\n\t\t// amount of exceptions would cost too many bytes. On top of\n\t\t// that other frameworks generally stringify `false`.\n\n\t\tif (typeof value == 'function') {\n\t\t\t// never serialize functions as attribute values\n\t\t} else if (value != NULL && (value !== false || name[4] == '-')) {\n\t\t\tdom.setAttribute(name, name == 'popover' && value == true ? '' : value);\n\t\t} else {\n\t\t\tdom.removeAttribute(name);\n\t\t}\n\t}\n}\n\n/**\n * Create an event proxy function.\n * @param {boolean} useCapture Is the event handler for the capture phase.\n * @private\n */\nfunction createEventProxy(useCapture) {\n\t/**\n\t * Proxy an event to hooked event handlers\n\t * @param {import('../internal').PreactEvent} e The event object from the browser\n\t * @private\n\t */\n\treturn function (e) {\n\t\tif (this._listeners) {\n\t\t\tconst eventHandler = this._listeners[e.type + useCapture];\n\t\t\tif (e[EVENT_DISPATCHED] == NULL) {\n\t\t\t\te[EVENT_DISPATCHED] = eventClock++;\n\n\t\t\t\t// When `e[EVENT_DISPATCHED]` is smaller than the time when the targeted event\n\t\t\t\t// handler was attached we know we have bubbled up to an element that was added\n\t\t\t\t// during patching the DOM.\n\t\t\t} else if (e[EVENT_DISPATCHED] < eventHandler[EVENT_ATTACHED]) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\treturn eventHandler(options.event ? options.event(e) : e);\n\t\t}\n\t};\n}\n\nconst eventProxy = createEventProxy(false);\nconst eventProxyCapture = createEventProxy(true);\n","import { enqueueRender } from './component';\nimport { NULL } from './constants';\n\nexport let i = 0;\n\nexport function createContext(defaultValue) {\n\tfunction Context(props) {\n\t\tif (!this.getChildContext) {\n\t\t\t/** @type {Set<import('./internal').Component> | null} */\n\t\t\tlet subs = new Set();\n\t\t\tlet ctx = {};\n\t\t\tctx[Context._id] = this;\n\n\t\t\tthis.getChildContext = () => ctx;\n\n\t\t\tthis.componentWillUnmount = () => {\n\t\t\t\tsubs = NULL;\n\t\t\t};\n\n\t\t\tthis.shouldComponentUpdate = function (_props) {\n\t\t\t\t// @ts-expect-error even\n\t\t\t\tif (this.props.value != _props.value) {\n\t\t\t\t\tsubs.forEach(c => {\n\t\t\t\t\t\tc._force = true;\n\t\t\t\t\t\tenqueueRender(c);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tthis.sub = c => {\n\t\t\t\tsubs.add(c);\n\t\t\t\tlet old = c.componentWillUnmount;\n\t\t\t\tc.componentWillUnmount = () => {\n\t\t\t\t\tif (subs) {\n\t\t\t\t\t\tsubs.delete(c);\n\t\t\t\t\t}\n\t\t\t\t\tif (old) old.call(c);\n\t\t\t\t};\n\t\t\t};\n\t\t}\n\n\t\treturn props.children;\n\t}\n\n\tContext._id = '__cC' + i++;\n\tContext._defaultValue = defaultValue;\n\n\t/** @type {import('./internal').FunctionComponent} */\n\tContext.Consumer = (props, contextValue) => {\n\t\treturn props.children(contextValue);\n\t};\n\n\t// we could also get rid of _contextRef entirely\n\tContext.Provider =\n\t\tContext._contextRef =\n\t\tContext.Consumer.contextType =\n\t\t\tContext;\n\n\treturn Context;\n}\n","import { options, Fragment } from 'preact';\nimport { encodeEntities } from './utils';\nimport { IS_NON_DIMENSIONAL } from '../../src/constants';\n\nlet vnodeId = 0;\n\nconst isArray = Array.isArray;\n\n/**\n * @fileoverview\n * This file exports various methods that implement Babel's \"automatic\" JSX runtime API:\n * - jsx(type, props, key)\n * - jsxs(type, props, key)\n * - jsxDEV(type, props, key, __source, __self)\n *\n * The implementation of createVNode here is optimized for performance.\n * Benchmarks: https://esbench.com/bench/5f6b54a0b4632100a7dcd2b3\n */\n\n/**\n * JSX.Element factory used by Babel's {runtime:\"automatic\"} JSX transform\n * @param {VNode['type']} type\n * @param {VNode['props']} props\n * @param {VNode['key']} [key]\n * @param {unknown} [isStaticChildren]\n * @param {unknown} [__source]\n * @param {unknown} [__self]\n */\nfunction createVNode(type, props, key, isStaticChildren, __source, __self) {\n\tif (!props) props = {};\n\t// We'll want to preserve `ref` in props to get rid of the need for\n\t// forwardRef components in the future, but that should happen via\n\t// a separate PR.\n\tlet normalizedProps = props,\n\t\tref,\n\t\ti;\n\n\tif ('ref' in normalizedProps) {\n\t\tnormalizedProps = {};\n\t\tfor (i in props) {\n\t\t\tif (i == 'ref') {\n\t\t\t\tref = props[i];\n\t\t\t} else {\n\t\t\t\tnormalizedProps[i] = props[i];\n\t\t\t}\n\t\t}\n\t}\n\n\t/** @type {VNode & { __source: any; __self: any }} */\n\tconst vnode = {\n\t\ttype,\n\t\tprops: normalizedProps,\n\t\tkey,\n\t\tref,\n\t\t_children: null,\n\t\t_parent: null,\n\t\t_depth: 0,\n\t\t_dom: null,\n\t\t_component: null,\n\t\tconstructor: undefined,\n\t\t_original: --vnodeId,\n\t\t_index: -1,\n\t\t_flags: 0,\n\t\t__source,\n\t\t__self\n\t};\n\n\t// If a Component VNode, check for and apply defaultProps.\n\t// Note: `type` is often a String, and can be `undefined` in development.\n\tif (typeof type === 'function' && (ref = type.defaultProps)) {\n\t\tfor (i in ref)\n\t\t\tif (normalizedProps[i] === undefined) {\n\t\t\t\tnormalizedProps[i] = ref[i];\n\t\t\t}\n\t}\n\n\tif (options.vnode) options.vnode(vnode);\n\treturn vnode;\n}\n\n/**\n * Create a template vnode. This function is not expected to be\n * used directly, but rather through a precompile JSX transform\n * @param {string[]} templates\n * @param {Array<string | null | VNode>} exprs\n * @returns {VNode}\n */\nfunction jsxTemplate(templates, ...exprs) {\n\tconst vnode = createVNode(Fragment, { tpl: templates, exprs });\n\t// Bypass render to string top level Fragment optimization\n\tvnode.key = vnode._vnode;\n\treturn vnode;\n}\n\nconst JS_TO_CSS = {};\nconst CSS_REGEX = /[A-Z]/g;\n\n/**\n * Unwrap potential signals.\n * @param {*} value\n * @returns {*}\n */\nfunction normalizeAttrValue(value) {\n\treturn value !== null &&\n\t\ttypeof value === 'object' &&\n\t\ttypeof value.valueOf === 'function'\n\t\t? value.valueOf()\n\t\t: value;\n}\n\n/**\n * Serialize an HTML attribute to a string. This function is not\n * expected to be used directly, but rather through a precompile\n * JSX transform\n * @param {string} name The attribute name\n * @param {*} value The attribute value\n * @returns {string}\n */\nfunction jsxAttr(name, value) {\n\tif (options.attr) {\n\t\tconst result = options.attr(name, value);\n\t\tif (typeof result === 'string') return result;\n\t}\n\n\tvalue = normalizeAttrValue(value);\n\n\tif (name === 'ref' || name === 'key') return '';\n\tif (name === 'style' && typeof value === 'object') {\n\t\tlet str = '';\n\t\tfor (let prop in value) {\n\t\t\tlet val = value[prop];\n\t\t\tif (val != null && val !== '') {\n\t\t\t\tconst name =\n\t\t\t\t\tprop[0] == '-'\n\t\t\t\t\t\t? prop\n\t\t\t\t\t\t: JS_TO_CSS[prop] ||\n\t\t\t\t\t\t\t(JS_TO_CSS[prop] = prop.replace(CSS_REGEX, '-$&').toLowerCase());\n\n\t\t\t\tlet suffix = ';';\n\t\t\t\tif (\n\t\t\t\t\ttypeof val === 'number' &&\n\t\t\t\t\t// Exclude custom-attributes\n\t\t\t\t\t!name.startsWith('--') &&\n\t\t\t\t\t!IS_NON_DIMENSIONAL.test(name)\n\t\t\t\t) {\n\t\t\t\t\tsuffix = 'px;';\n\t\t\t\t}\n\t\t\t\tstr = str + name + ':' + val + suffix;\n\t\t\t}\n\t\t}\n\t\treturn name + '=\"' + encodeEntities(str) + '\"';\n\t}\n\n\tif (\n\t\tvalue == null ||\n\t\tvalue === false ||\n\t\ttypeof value === 'function' ||\n\t\ttypeof value === 'object'\n\t) {\n\t\treturn '';\n\t} else if (value === true) return name;\n\n\treturn name + '=\"' + encodeEntities('' + value) + '\"';\n}\n\n/**\n * Escape a dynamic child passed to `jsxTemplate`. This function\n * is not expected to be used directly, but rather through a\n * precompile JSX transform\n * @param {*} value\n * @returns {string | null | VNode | Array<string | null | VNode>}\n */\nfunction jsxEscape(value) {\n\tif (\n\t\tvalue == null ||\n\t\ttypeof value === 'boolean' ||\n\t\ttypeof value === 'function'\n\t) {\n\t\treturn null;\n\t}\n\n\tif (typeof value === 'object') {\n\t\t// Check for VNode\n\t\tif (value.constructor === undefined) return value;\n\n\t\tif (isArray(value)) {\n\t\t\tfor (let i = 0; i < value.length; i++) {\n\t\t\t\tvalue[i] = jsxEscape(value[i]);\n\t\t\t}\n\t\t\treturn value;\n\t\t}\n\t}\n\n\treturn encodeEntities('' + value);\n}\n\nexport {\n\tcreateVNode as jsx,\n\tcreateVNode as jsxs,\n\tcreateVNode as jsxDEV,\n\tFragment,\n\t// precompiled JSX transform\n\tjsxTemplate,\n\tjsxAttr,\n\tjsxEscape\n};\n","import type {\n QuartzComponent,\n QuartzComponentConstructor,\n QuartzComponentProps,\n} from \"@quartz-community/types\";\nimport { classNames } from \"../util/lang\";\nimport { i18n } from \"../i18n\";\nimport style from \"./styles/graph.scss\";\n// @ts-expect-error - inline script imported as string by esbuild loader\nimport script from \"./scripts/graph.inline.ts\";\n\nexport interface D3Config {\n drag: boolean;\n zoom: boolean;\n depth: number;\n scale: number;\n repelForce: number;\n centerForce: number;\n linkDistance: number;\n fontSize: number;\n opacityScale: number;\n removeTags: string[];\n showTags: boolean;\n focusOnHover?: boolean;\n enableRadial?: boolean;\n}\n\nexport interface GraphOptions {\n localGraph?: Partial<D3Config>;\n globalGraph?: Partial<D3Config>;\n}\n\nconst defaultOptions: GraphOptions = {\n localGraph: {\n drag: true,\n zoom: true,\n depth: 1,\n scale: 1.1,\n repelForce: 0.5,\n centerForce: 0.3,\n linkDistance: 30,\n fontSize: 0.6,\n opacityScale: 1,\n showTags: true,\n removeTags: [],\n focusOnHover: false,\n enableRadial: false,\n },\n globalGraph: {\n drag: true,\n zoom: true,\n depth: -1,\n scale: 0.9,\n repelForce: 0.5,\n centerForce: 0.2,\n linkDistance: 30,\n fontSize: 0.6,\n opacityScale: 1,\n showTags: true,\n removeTags: [],\n focusOnHover: true,\n enableRadial: true,\n },\n};\n\nexport default ((userOpts?: Partial<GraphOptions>) => {\n const Graph: QuartzComponent = ({ displayClass, cfg }: QuartzComponentProps) => {\n const localGraph = { ...defaultOptions.localGraph, ...userOpts?.localGraph };\n const globalGraph = { ...defaultOptions.globalGraph, ...userOpts?.globalGraph };\n\n return (\n <div class={classNames(displayClass, \"graph\")}>\n <h3>{i18n(cfg.locale ?? \"en-US\").components.graph.title}</h3>\n <div class=\"graph-outer\">\n <div class=\"graph-container\" data-cfg={JSON.stringify(localGraph)}></div>\n <button class=\"global-graph-icon\" aria-label=\"Global Graph\">\n <svg\n version=\"1.1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n x=\"0px\"\n y=\"0px\"\n viewBox=\"0 0 55 55\"\n fill=\"currentColor\"\n xmlSpace=\"preserve\"\n >\n <path\n d=\"M49,0c-3.309,0-6,2.691-6,6c0,1.035,0.263,2.009,0.726,2.86l-9.829,9.829C32.542,17.634,30.846,17,29,17\n s-3.542,0.634-4.898,1.688l-7.669-7.669C16.785,10.424,17,9.74,17,9c0-2.206-1.794-4-4-4S9,6.794,9,9s1.794,4,4,4\n c0.74,0,1.424-0.215,2.019-0.567l7.669,7.669C21.634,21.458,21,23.154,21,25s0.634,3.542,1.688,4.897L10.024,42.562\n C8.958,41.595,7.549,41,6,41c-3.309,0-6,2.691-6,6s2.691,6,6,6s6-2.691,6-6c0-1.035-0.263-2.009-0.726-2.86l12.829-12.829\n c1.106,0.86,2.44,1.436,3.898,1.619v10.16c-2.833,0.478-5,2.942-5,5.91c0,3.309,2.691,6,6,6s6-2.691,6-6c0-2.967-2.167-5.431-5-5.91\n v-10.16c1.458-0.183,2.792-0.759,3.898-1.619l7.669,7.669C41.215,39.576,41,40.26,41,41c0,2.206,1.794,4,4,4s4-1.794,4-4\n s-1.794-4-4-4c-0.74,0-1.424,0.215-2.019,0.567l-7.669-7.669C36.366,28.542,37,26.846,37,25s-0.634-3.542-1.688-4.897l9.665-9.665\n C46.042,11.405,47.451,12,49,12c3.309,0,6-2.691,6-6S52.309,0,49,0z M11,9c0-1.103,0.897-2,2-2s2,0.897,2,2s-0.897,2-2,2\n S11,10.103,11,9z M6,51c-2.206,0-4-1.794-4-4s1.794-4,4-4s4,1.794,4,4S8.206,51,6,51z M33,49c0,2.206-1.794,4-4,4s-4-1.794-4-4\n s1.794-4,4-4S33,46.794,33,49z M29,31c-3.309,0-6-2.691-6-6s2.691-6,6-6s6,2.691,6,6S32.309,31,29,31z M47,41c0,1.103-0.897,2-2,2\n s-2-0.897-2-2s0.897-2,2-2S47,39.897,47,41z M49,10c-2.206,0-4-1.794-4-4s1.794-4,4-4s4,1.794,4,4S51.206,10,49,10z\"\n />\n </svg>\n </button>\n </div>\n <div class=\"global-graph-outer\">\n <div class=\"global-graph-container\" data-cfg={JSON.stringify(globalGraph)}></div>\n </div>\n </div>\n );\n };\n\n Graph.css = style;\n Graph.afterDOMLoaded = script;\n\n return Graph;\n}) satisfies QuartzComponentConstructor;\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@quartz-community/graph",
3
- "version": "0.1.0",
3
+ "version": "1.0.1",
4
4
  "description": "Interactive graph visualization component for Quartz - visualize your content as a network graph.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -51,7 +51,9 @@
51
51
  "test": "vitest run",
52
52
  "typecheck": "tsc --noEmit",
53
53
  "check": "npm run typecheck && npm run lint && npm run format && npm run test",
54
- "prepublishOnly": "npm run build"
54
+ "prepublishOnly": "npm run build",
55
+ "release": "npm run build && changeset publish",
56
+ "version-packages": "changeset version && npm install --package-lock-only --ignore-scripts --no-audit --no-fund"
55
57
  },
56
58
  "peerDependencies": {
57
59
  "preact": "^10.0.0"
@@ -62,8 +64,8 @@
62
64
  }
63
65
  },
64
66
  "dependencies": {
65
- "@quartz-community/types": "^0.2.1",
66
- "@quartz-community/utils": "^0.1.0"
67
+ "@quartz-community/types": "^1.0.0",
68
+ "@quartz-community/utils": "^1.0.0"
67
69
  },
68
70
  "devDependencies": {
69
71
  "@types/hast": "^3.0.4",
@@ -80,7 +82,8 @@
80
82
  "sass": "^1.97.3",
81
83
  "tsup": "^8.5.0",
82
84
  "typescript": "^5.9.3",
83
- "vitest": "^2.1.9"
85
+ "vitest": "^2.1.9",
86
+ "@changesets/cli": "^2.29.2"
84
87
  },
85
88
  "quartz": {
86
89
  "name": "graph",