From 26deebbebbe304c197ba7c53f788ec85dca71ac1 Mon Sep 17 00:00:00 2001 From: saberzero1 Date: Wed, 3 Jun 2026 14:01:23 +0200 Subject: [PATCH] build: bundle dependencies and ship pre-built dist --- dist/components/index.js.map | 2 +- dist/index.js.map | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dist/components/index.js.map b/dist/components/index.js.map index 81ab146..acc4e67 100644 --- a/dist/components/index.js.map +++ b/dist/components/index.js.map @@ -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 = {\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 pt=Object.hasOwnProperty;var he,y,pe,et,K,Fe,Ce,ve,Wu,mu,_u,Ee,Gu,Uu,Ru,tt,Ae={},yu=[],rt=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,xu=Array.isArray;function $(u,e){for(var t in e)u[t]=e[t];return u}function Iu(u){u&&u.parentNode&&u.parentNode.removeChild(u)}function Mu(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??++pe,__i:-1,__u:0};return o==null&&y.vnode!=null&&y.vnode(n),n}function Du(u){return u.children}function Bu(u,e){this.props=u,this.context=e}function iu(u,e){if(e==null)return u.__?iu(u.__,u.__i+1):null;for(var t;ee&&K.sort(ve),u=K.shift(),e=K.length,nt(u)}finally{K.length=bu.__r=0}}function me(u,e,t,a,o,n,s,c,h,D,d){var r,E,f,b,S,B,p,C=a&&a.__k||yu,M=e.length;for(h=ot(t,e,C,h,M),r=0;r0?s=u.__k[n]=Mu(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=at(s,t,h,r))!=-1&&(r--,(c=t[D])&&(c.__u|=2)),c==null||c.__v==null?(D==-1&&(o>d?E--:oh?E--:E++,s.__u|=4))):u.__k[n]=null;if(r)for(n=0;n(d?1:0)){for(o=t-1,n=t+1;o>=0||n=0?o--:n++])!=null&&(2&D.__u)==0&&c==D.key&&h==D.type)return s}return-1}function _e(u,e,t){e[0]==\"-\"?u.setProperty(e,t??\"\"):u[e]=t==null?\"\":typeof t!=\"number\"||rt.test(e)?t:t+\"px\"}function gu(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||_e(u.style,e,\"\");if(t)for(e in t)a&&t[e]==a[e]||_e(u.style,e,t[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]=t,t?a?t[_u]=a[_u]:(t[_u]=Gu,u.addEventListener(e,n?Ru:Uu,n)):u.removeEventListener(e,n?Ru:Uu,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 de(u){return function(e){if(this.l){var t=this.l[e.type+u];if(e[mu]==null)e[mu]=Gu++;else if(e[mu]0?u:xu(u)?u.map(be):$({},u)}function Dt(u,e,t,a,o,n,s,c,h){var D,d,r,E,f,b,S,B=t.props||Ae,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\"u\"?\"\":document.body?.dataset?.basepath??\"\"}function Nu(u,e){let t=e??Hu(),a=u.startsWith(\"/\")?u:\"/\"+u;return t+a}function ct(u,e){return u===e||u.endsWith(\"/\"+e)}function Ft(u,e){return ct(u,e)&&(u=u.slice(0,-e.length)),u}function ft(u,e){return u.startsWith(\"/\")&&(u=u.substring(1)),!e&&u.endsWith(\"/\")&&(u=u.slice(0,-1)),u}function we(u){for(;u.firstChild;)u.removeChild(u.firstChild)}(function(){function u(){var a=Se(),o=Hu();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=0)for(var hu=[m],pu=new Set([m]),Xu=0;Xu<=$u&&hu.length>0;Xu++){for(var Su=[],wu=0;wu 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}\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 | 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} 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}\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;\n globalGraph?: Partial;\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) => {\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
\n

{i18n(cfg.locale ?? \"en-US\").components.graph.title}

\n
\n
\n \n
\n
\n
\n
\n
\n );\n };\n\n Graph.css = style;\n Graph.afterDOMLoaded = script;\n\n return Graph;\n}) satisfies QuartzComponentConstructor;\n"]} +{"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 = {\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;ee&&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;r0?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(_?1:0)){for(o=t-1,n=t+1;o>=0||n=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]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\"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=0)for(var pu=[m],Cu=new Set([m]),Yu=0;Yu<=Vu&&pu.length>0;Yu++){for(var wu=[],ku=0;ku 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}\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 | 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} 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}\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;\n globalGraph?: Partial;\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) => {\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
\n

{i18n(cfg.locale ?? \"en-US\").components.graph.title}

\n
\n
\n \n
\n
\n
\n
\n
\n );\n };\n\n Graph.css = style;\n Graph.afterDOMLoaded = script;\n\n return Graph;\n}) satisfies QuartzComponentConstructor;\n"]} \ No newline at end of file diff --git a/dist/index.js.map b/dist/index.js.map index 4f3861a..1e39448 100644 --- a/dist/index.js.map +++ b/dist/index.js.map @@ -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 = {\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 pt=Object.hasOwnProperty;var he,y,pe,et,K,Fe,Ce,ve,Wu,mu,_u,Ee,Gu,Uu,Ru,tt,Ae={},yu=[],rt=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,xu=Array.isArray;function $(u,e){for(var t in e)u[t]=e[t];return u}function Iu(u){u&&u.parentNode&&u.parentNode.removeChild(u)}function Mu(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??++pe,__i:-1,__u:0};return o==null&&y.vnode!=null&&y.vnode(n),n}function Du(u){return u.children}function Bu(u,e){this.props=u,this.context=e}function iu(u,e){if(e==null)return u.__?iu(u.__,u.__i+1):null;for(var t;ee&&K.sort(ve),u=K.shift(),e=K.length,nt(u)}finally{K.length=bu.__r=0}}function me(u,e,t,a,o,n,s,c,h,D,d){var r,E,f,b,S,B,p,C=a&&a.__k||yu,M=e.length;for(h=ot(t,e,C,h,M),r=0;r0?s=u.__k[n]=Mu(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=at(s,t,h,r))!=-1&&(r--,(c=t[D])&&(c.__u|=2)),c==null||c.__v==null?(D==-1&&(o>d?E--:oh?E--:E++,s.__u|=4))):u.__k[n]=null;if(r)for(n=0;n(d?1:0)){for(o=t-1,n=t+1;o>=0||n=0?o--:n++])!=null&&(2&D.__u)==0&&c==D.key&&h==D.type)return s}return-1}function _e(u,e,t){e[0]==\"-\"?u.setProperty(e,t??\"\"):u[e]=t==null?\"\":typeof t!=\"number\"||rt.test(e)?t:t+\"px\"}function gu(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||_e(u.style,e,\"\");if(t)for(e in t)a&&t[e]==a[e]||_e(u.style,e,t[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]=t,t?a?t[_u]=a[_u]:(t[_u]=Gu,u.addEventListener(e,n?Ru:Uu,n)):u.removeEventListener(e,n?Ru:Uu,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 de(u){return function(e){if(this.l){var t=this.l[e.type+u];if(e[mu]==null)e[mu]=Gu++;else if(e[mu]0?u:xu(u)?u.map(be):$({},u)}function Dt(u,e,t,a,o,n,s,c,h){var D,d,r,E,f,b,S,B=t.props||Ae,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\"u\"?\"\":document.body?.dataset?.basepath??\"\"}function Nu(u,e){let t=e??Hu(),a=u.startsWith(\"/\")?u:\"/\"+u;return t+a}function ct(u,e){return u===e||u.endsWith(\"/\"+e)}function Ft(u,e){return ct(u,e)&&(u=u.slice(0,-e.length)),u}function ft(u,e){return u.startsWith(\"/\")&&(u=u.substring(1)),!e&&u.endsWith(\"/\")&&(u=u.slice(0,-1)),u}function we(u){for(;u.firstChild;)u.removeChild(u.firstChild)}(function(){function u(){var a=Se(),o=Hu();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=0)for(var hu=[m],pu=new Set([m]),Xu=0;Xu<=$u&&hu.length>0;Xu++){for(var Su=[],wu=0;wu 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}\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 | 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} 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}\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;\n globalGraph?: Partial;\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) => {\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
\n

{i18n(cfg.locale ?? \"en-US\").components.graph.title}

\n
\n
\n \n
\n
\n
\n
\n
\n );\n };\n\n Graph.css = style;\n Graph.afterDOMLoaded = script;\n\n return Graph;\n}) satisfies QuartzComponentConstructor;\n"]} +{"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 = {\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;ee&&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;r0?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(_?1:0)){for(o=t-1,n=t+1;o>=0||n=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]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\"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=0)for(var pu=[m],Cu=new Set([m]),Yu=0;Yu<=Vu&&pu.length>0;Yu++){for(var wu=[],ku=0;ku 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}\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 | 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} 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}\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;\n globalGraph?: Partial;\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) => {\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
\n

{i18n(cfg.locale ?? \"en-US\").components.graph.title}

\n
\n
\n \n
\n
\n
\n
\n
\n );\n };\n\n Graph.css = style;\n Graph.afterDOMLoaded = script;\n\n return Graph;\n}) satisfies QuartzComponentConstructor;\n"]} \ No newline at end of file