@preact/signals-devtools-ui 0.4.1 → 0.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"devtools-ui.mjs","sources":["../../../node_modules/.pnpm/preact@10.27.2/node_modules/preact/dist/preact.module.js","../../../node_modules/.pnpm/preact@10.27.2/node_modules/preact/jsx-runtime/dist/jsxRuntime.module.js","../../../node_modules/.pnpm/preact@10.27.2/node_modules/preact/hooks/dist/hooks.module.js","../../core/dist/signals-core.module.js","../../preact/dist/signals.module.js","../src/components/Button.tsx","../src/components/EmptyState.tsx","../src/components/StatusIndicator.tsx","../src/context.ts","../src/components/Header.tsx","../src/components/SettingsPanel.tsx","../src/components/Graph.tsx","../src/components/UpdateItem.tsx","../src/components/UpdateTreeNode.tsx","../src/components/UpdatesContainer.tsx","../src/DevToolsPanel.tsx"],"sourcesContent":["var n,l,u,t,i,r,o,e,f,c,s,a,h,p={},v=[],y=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,w=Array.isArray;function d(n,l){for(var u in l)n[u]=l[u];return n}function g(n){n&&n.parentNode&&n.parentNode.removeChild(n)}function _(l,u,t){var i,r,o,e={};for(o in u)\"key\"==o?i=u[o]:\"ref\"==o?r=u[o]:e[o]=u[o];if(arguments.length>2&&(e.children=arguments.length>3?n.call(arguments,2):t),\"function\"==typeof l&&null!=l.defaultProps)for(o in l.defaultProps)void 0===e[o]&&(e[o]=l.defaultProps[o]);return m(l,e,i,r,null)}function m(n,t,i,r,o){var e={type:n,props:t,key:i,ref:r,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:null==o?++u:o,__i:-1,__u:0};return null==o&&null!=l.vnode&&l.vnode(e),e}function b(){return{current:null}}function k(n){return n.children}function x(n,l){this.props=n,this.context=l}function S(n,l){if(null==l)return n.__?S(n.__,n.__i+1):null;for(var u;l<n.__k.length;l++)if(null!=(u=n.__k[l])&&null!=u.__e)return u.__e;return\"function\"==typeof n.type?S(n):null}function C(n){var l,u;if(null!=(n=n.__)&&null!=n.__c){for(n.__e=n.__c.base=null,l=0;l<n.__k.length;l++)if(null!=(u=n.__k[l])&&null!=u.__e){n.__e=n.__c.base=u.__e;break}return C(n)}}function M(n){(!n.__d&&(n.__d=!0)&&i.push(n)&&!$.__r++||r!=l.debounceRendering)&&((r=l.debounceRendering)||o)($)}function $(){for(var n,u,t,r,o,f,c,s=1;i.length;)i.length>s&&i.sort(e),n=i.shift(),s=i.length,n.__d&&(t=void 0,r=void 0,o=(r=(u=n).__v).__e,f=[],c=[],u.__P&&((t=d({},r)).__v=r.__v+1,l.vnode&&l.vnode(t),O(u.__P,t,r,u.__n,u.__P.namespaceURI,32&r.__u?[o]:null,f,null==o?S(r):o,!!(32&r.__u),c),t.__v=r.__v,t.__.__k[t.__i]=t,N(f,t,c),r.__e=r.__=null,t.__e!=o&&C(t)));$.__r=0}function I(n,l,u,t,i,r,o,e,f,c,s){var a,h,y,w,d,g,_,m=t&&t.__k||v,b=l.length;for(f=P(u,l,m,f,b),a=0;a<b;a++)null!=(y=u.__k[a])&&(h=-1==y.__i?p:m[y.__i]||p,y.__i=a,g=O(n,y,h,i,r,o,e,f,c,s),w=y.__e,y.ref&&h.ref!=y.ref&&(h.ref&&B(h.ref,null,y),s.push(y.ref,y.__c||w,y)),null==d&&null!=w&&(d=w),(_=!!(4&y.__u))||h.__k===y.__k?f=A(y,f,n,_):\"function\"==typeof y.type&&void 0!==g?f=g:w&&(f=w.nextSibling),y.__u&=-7);return u.__e=d,f}function P(n,l,u,t,i){var r,o,e,f,c,s=u.length,a=s,h=0;for(n.__k=new Array(i),r=0;r<i;r++)null!=(o=l[r])&&\"boolean\"!=typeof o&&\"function\"!=typeof o?(f=r+h,(o=n.__k[r]=\"string\"==typeof o||\"number\"==typeof o||\"bigint\"==typeof o||o.constructor==String?m(null,o,null,null,null):w(o)?m(k,{children:o},null,null,null):null==o.constructor&&o.__b>0?m(o.type,o.props,o.key,o.ref?o.ref:null,o.__v):o).__=n,o.__b=n.__b+1,e=null,-1!=(c=o.__i=L(o,u,f,a))&&(a--,(e=u[c])&&(e.__u|=2)),null==e||null==e.__v?(-1==c&&(i>s?h--:i<s&&h++),\"function\"!=typeof o.type&&(o.__u|=4)):c!=f&&(c==f-1?h--:c==f+1?h++:(c>f?h--:h++,o.__u|=4))):n.__k[r]=null;if(a)for(r=0;r<s;r++)null!=(e=u[r])&&0==(2&e.__u)&&(e.__e==t&&(t=S(e)),D(e,e));return t}function A(n,l,u,t){var i,r;if(\"function\"==typeof n.type){for(i=n.__k,r=0;i&&r<i.length;r++)i[r]&&(i[r].__=n,l=A(i[r],l,u,t));return l}n.__e!=l&&(t&&(l&&n.type&&!l.parentNode&&(l=S(n)),u.insertBefore(n.__e,l||null)),l=n.__e);do{l=l&&l.nextSibling}while(null!=l&&8==l.nodeType);return l}function H(n,l){return l=l||[],null==n||\"boolean\"==typeof n||(w(n)?n.some(function(n){H(n,l)}):l.push(n)),l}function L(n,l,u,t){var i,r,o,e=n.key,f=n.type,c=l[u],s=null!=c&&0==(2&c.__u);if(null===c&&null==n.key||s&&e==c.key&&f==c.type)return u;if(t>(s?1:0))for(i=u-1,r=u+1;i>=0||r<l.length;)if(null!=(c=l[o=i>=0?i--:r++])&&0==(2&c.__u)&&e==c.key&&f==c.type)return o;return-1}function T(n,l,u){\"-\"==l[0]?n.setProperty(l,null==u?\"\":u):n[l]=null==u?\"\":\"number\"!=typeof u||y.test(l)?u:u+\"px\"}function j(n,l,u,t,i){var r,o;n:if(\"style\"==l)if(\"string\"==typeof u)n.style.cssText=u;else{if(\"string\"==typeof t&&(n.style.cssText=t=\"\"),t)for(l in t)u&&l in u||T(n.style,l,\"\");if(u)for(l in u)t&&u[l]==t[l]||T(n.style,l,u[l])}else if(\"o\"==l[0]&&\"n\"==l[1])r=l!=(l=l.replace(f,\"$1\")),o=l.toLowerCase(),l=o in n||\"onFocusOut\"==l||\"onFocusIn\"==l?o.slice(2):l.slice(2),n.l||(n.l={}),n.l[l+r]=u,u?t?u.u=t.u:(u.u=c,n.addEventListener(l,r?a:s,r)):n.removeEventListener(l,r?a:s,r);else{if(\"http://www.w3.org/2000/svg\"==i)l=l.replace(/xlink(H|:h)/,\"h\").replace(/sName$/,\"s\");else if(\"width\"!=l&&\"height\"!=l&&\"href\"!=l&&\"list\"!=l&&\"form\"!=l&&\"tabIndex\"!=l&&\"download\"!=l&&\"rowSpan\"!=l&&\"colSpan\"!=l&&\"role\"!=l&&\"popover\"!=l&&l in n)try{n[l]=null==u?\"\":u;break n}catch(n){}\"function\"==typeof u||(null==u||!1===u&&\"-\"!=l[4]?n.removeAttribute(l):n.setAttribute(l,\"popover\"==l&&1==u?\"\":u))}}function F(n){return function(u){if(this.l){var t=this.l[u.type+n];if(null==u.t)u.t=c++;else if(u.t<t.u)return;return t(l.event?l.event(u):u)}}}function O(n,u,t,i,r,o,e,f,c,s){var a,h,p,v,y,_,m,b,S,C,M,$,P,A,H,L,T,j=u.type;if(null!=u.constructor)return null;128&t.__u&&(c=!!(32&t.__u),o=[f=u.__e=t.__e]),(a=l.__b)&&a(u);n:if(\"function\"==typeof j)try{if(b=u.props,S=\"prototype\"in j&&j.prototype.render,C=(a=j.contextType)&&i[a.__c],M=a?C?C.props.value:a.__:i,t.__c?m=(h=u.__c=t.__c).__=h.__E:(S?u.__c=h=new j(b,M):(u.__c=h=new x(b,M),h.constructor=j,h.render=E),C&&C.sub(h),h.props=b,h.state||(h.state={}),h.context=M,h.__n=i,p=h.__d=!0,h.__h=[],h._sb=[]),S&&null==h.__s&&(h.__s=h.state),S&&null!=j.getDerivedStateFromProps&&(h.__s==h.state&&(h.__s=d({},h.__s)),d(h.__s,j.getDerivedStateFromProps(b,h.__s))),v=h.props,y=h.state,h.__v=u,p)S&&null==j.getDerivedStateFromProps&&null!=h.componentWillMount&&h.componentWillMount(),S&&null!=h.componentDidMount&&h.__h.push(h.componentDidMount);else{if(S&&null==j.getDerivedStateFromProps&&b!==v&&null!=h.componentWillReceiveProps&&h.componentWillReceiveProps(b,M),!h.__e&&null!=h.shouldComponentUpdate&&!1===h.shouldComponentUpdate(b,h.__s,M)||u.__v==t.__v){for(u.__v!=t.__v&&(h.props=b,h.state=h.__s,h.__d=!1),u.__e=t.__e,u.__k=t.__k,u.__k.some(function(n){n&&(n.__=u)}),$=0;$<h._sb.length;$++)h.__h.push(h._sb[$]);h._sb=[],h.__h.length&&e.push(h);break n}null!=h.componentWillUpdate&&h.componentWillUpdate(b,h.__s,M),S&&null!=h.componentDidUpdate&&h.__h.push(function(){h.componentDidUpdate(v,y,_)})}if(h.context=M,h.props=b,h.__P=n,h.__e=!1,P=l.__r,A=0,S){for(h.state=h.__s,h.__d=!1,P&&P(u),a=h.render(h.props,h.state,h.context),H=0;H<h._sb.length;H++)h.__h.push(h._sb[H]);h._sb=[]}else do{h.__d=!1,P&&P(u),a=h.render(h.props,h.state,h.context),h.state=h.__s}while(h.__d&&++A<25);h.state=h.__s,null!=h.getChildContext&&(i=d(d({},i),h.getChildContext())),S&&!p&&null!=h.getSnapshotBeforeUpdate&&(_=h.getSnapshotBeforeUpdate(v,y)),L=a,null!=a&&a.type===k&&null==a.key&&(L=V(a.props.children)),f=I(n,w(L)?L:[L],u,t,i,r,o,e,f,c,s),h.base=u.__e,u.__u&=-161,h.__h.length&&e.push(h),m&&(h.__E=h.__=null)}catch(n){if(u.__v=null,c||null!=o)if(n.then){for(u.__u|=c?160:128;f&&8==f.nodeType&&f.nextSibling;)f=f.nextSibling;o[o.indexOf(f)]=null,u.__e=f}else{for(T=o.length;T--;)g(o[T]);z(u)}else u.__e=t.__e,u.__k=t.__k,n.then||z(u);l.__e(n,u,t)}else null==o&&u.__v==t.__v?(u.__k=t.__k,u.__e=t.__e):f=u.__e=q(t.__e,u,t,i,r,o,e,c,s);return(a=l.diffed)&&a(u),128&u.__u?void 0:f}function z(n){n&&n.__c&&(n.__c.__e=!0),n&&n.__k&&n.__k.forEach(z)}function N(n,u,t){for(var i=0;i<t.length;i++)B(t[i],t[++i],t[++i]);l.__c&&l.__c(u,n),n.some(function(u){try{n=u.__h,u.__h=[],n.some(function(n){n.call(u)})}catch(n){l.__e(n,u.__v)}})}function V(n){return\"object\"!=typeof n||null==n||n.__b&&n.__b>0?n:w(n)?n.map(V):d({},n)}function q(u,t,i,r,o,e,f,c,s){var a,h,v,y,d,_,m,b=i.props,k=t.props,x=t.type;if(\"svg\"==x?o=\"http://www.w3.org/2000/svg\":\"math\"==x?o=\"http://www.w3.org/1998/Math/MathML\":o||(o=\"http://www.w3.org/1999/xhtml\"),null!=e)for(a=0;a<e.length;a++)if((d=e[a])&&\"setAttribute\"in d==!!x&&(x?d.localName==x:3==d.nodeType)){u=d,e[a]=null;break}if(null==u){if(null==x)return document.createTextNode(k);u=document.createElementNS(o,x,k.is&&k),c&&(l.__m&&l.__m(t,e),c=!1),e=null}if(null==x)b===k||c&&u.data==k||(u.data=k);else{if(e=e&&n.call(u.childNodes),b=i.props||p,!c&&null!=e)for(b={},a=0;a<u.attributes.length;a++)b[(d=u.attributes[a]).name]=d.value;for(a in b)if(d=b[a],\"children\"==a);else if(\"dangerouslySetInnerHTML\"==a)v=d;else if(!(a in k)){if(\"value\"==a&&\"defaultValue\"in k||\"checked\"==a&&\"defaultChecked\"in k)continue;j(u,a,null,d,o)}for(a in k)d=k[a],\"children\"==a?y=d:\"dangerouslySetInnerHTML\"==a?h=d:\"value\"==a?_=d:\"checked\"==a?m=d:c&&\"function\"!=typeof d||b[a]===d||j(u,a,d,b[a],o);if(h)c||v&&(h.__html==v.__html||h.__html==u.innerHTML)||(u.innerHTML=h.__html),t.__k=[];else if(v&&(u.innerHTML=\"\"),I(\"template\"==t.type?u.content:u,w(y)?y:[y],t,i,r,\"foreignObject\"==x?\"http://www.w3.org/1999/xhtml\":o,e,f,e?e[0]:i.__k&&S(i,0),c,s),null!=e)for(a=e.length;a--;)g(e[a]);c||(a=\"value\",\"progress\"==x&&null==_?u.removeAttribute(\"value\"):null!=_&&(_!==u[a]||\"progress\"==x&&!_||\"option\"==x&&_!=b[a])&&j(u,a,_,b[a],o),a=\"checked\",null!=m&&m!=u[a]&&j(u,a,m,b[a],o))}return u}function B(n,u,t){try{if(\"function\"==typeof n){var i=\"function\"==typeof n.__u;i&&n.__u(),i&&null==u||(n.__u=n(u))}else n.current=u}catch(n){l.__e(n,t)}}function D(n,u,t){var i,r;if(l.unmount&&l.unmount(n),(i=n.ref)&&(i.current&&i.current!=n.__e||B(i,null,u)),null!=(i=n.__c)){if(i.componentWillUnmount)try{i.componentWillUnmount()}catch(n){l.__e(n,u)}i.base=i.__P=null}if(i=n.__k)for(r=0;r<i.length;r++)i[r]&&D(i[r],u,t||\"function\"!=typeof n.type);t||g(n.__e),n.__c=n.__=n.__e=void 0}function E(n,l,u){return this.constructor(n,u)}function G(u,t,i){var r,o,e,f;t==document&&(t=document.documentElement),l.__&&l.__(u,t),o=(r=\"function\"==typeof i)?null:i&&i.__k||t.__k,e=[],f=[],O(t,u=(!r&&i||t).__k=_(k,null,[u]),o||p,p,t.namespaceURI,!r&&i?[i]:o?null:t.firstChild?n.call(t.childNodes):null,e,!r&&i?i:o?o.__e:t.firstChild,r,f),N(e,u,f)}function J(n,l){G(n,l,J)}function K(l,u,t){var i,r,o,e,f=d({},l.props);for(o in l.type&&l.type.defaultProps&&(e=l.type.defaultProps),u)\"key\"==o?i=u[o]:\"ref\"==o?r=u[o]:f[o]=void 0===u[o]&&null!=e?e[o]:u[o];return arguments.length>2&&(f.children=arguments.length>3?n.call(arguments,2):t),m(l.type,f,i||l.key,r||l.ref,null)}function Q(n){function l(n){var u,t;return this.getChildContext||(u=new Set,(t={})[l.__c]=this,this.getChildContext=function(){return t},this.componentWillUnmount=function(){u=null},this.shouldComponentUpdate=function(n){this.props.value!=n.value&&u.forEach(function(n){n.__e=!0,M(n)})},this.sub=function(n){u.add(n);var l=n.componentWillUnmount;n.componentWillUnmount=function(){u&&u.delete(n),l&&l.call(n)}}),n.children}return l.__c=\"__cC\"+h++,l.__=n,l.Provider=l.__l=(l.Consumer=function(n,l){return n.children(l)}).contextType=l,l}n=v.slice,l={__e:function(n,l,u,t){for(var i,r,o;l=l.__;)if((i=l.__c)&&!i.__)try{if((r=i.constructor)&&null!=r.getDerivedStateFromError&&(i.setState(r.getDerivedStateFromError(n)),o=i.__d),null!=i.componentDidCatch&&(i.componentDidCatch(n,t||{}),o=i.__d),o)return i.__E=i}catch(l){n=l}throw n}},u=0,t=function(n){return null!=n&&null==n.constructor},x.prototype.setState=function(n,l){var u;u=null!=this.__s&&this.__s!=this.state?this.__s:this.__s=d({},this.state),\"function\"==typeof n&&(n=n(d({},u),this.props)),n&&d(u,n),null!=n&&this.__v&&(l&&this._sb.push(l),M(this))},x.prototype.forceUpdate=function(n){this.__v&&(this.__e=!0,n&&this.__h.push(n),M(this))},x.prototype.render=k,i=[],o=\"function\"==typeof Promise?Promise.prototype.then.bind(Promise.resolve()):setTimeout,e=function(n,l){return n.__v.__b-l.__v.__b},$.__r=0,f=/(PointerCapture)$|Capture$/i,c=0,s=F(!1),a=F(!0),h=0;export{x as Component,k as Fragment,K as cloneElement,Q as createContext,_ as createElement,b as createRef,_ as h,J as hydrate,t as isValidElement,l as options,G as render,H as toChildArray};\n//# sourceMappingURL=preact.module.js.map\n","import{options as r,Fragment as e}from\"preact\";export{Fragment}from\"preact\";var t=/[\"&<]/;function n(r){if(0===r.length||!1===t.test(r))return r;for(var e=0,n=0,o=\"\",f=\"\";n<r.length;n++){switch(r.charCodeAt(n)){case 34:f=\"&quot;\";break;case 38:f=\"&amp;\";break;case 60:f=\"&lt;\";break;default:continue}n!==e&&(o+=r.slice(e,n)),o+=f,e=n+1}return n!==e&&(o+=r.slice(e,n)),o}var o=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,f=0,i=Array.isArray;function u(e,t,n,o,i,u){t||(t={});var a,c,p=t;if(\"ref\"in p)for(c in p={},t)\"ref\"==c?a=t[c]:p[c]=t[c];var l={type:e,props:p,key:n,ref:a,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:--f,__i:-1,__u:0,__source:i,__self:u};if(\"function\"==typeof e&&(a=e.defaultProps))for(c in a)void 0===p[c]&&(p[c]=a[c]);return r.vnode&&r.vnode(l),l}function a(r){var t=u(e,{tpl:r,exprs:[].slice.call(arguments,1)});return t.key=t.__v,t}var c={},p=/[A-Z]/g;function l(e,t){if(r.attr){var f=r.attr(e,t);if(\"string\"==typeof f)return f}if(t=function(r){return null!==r&&\"object\"==typeof r&&\"function\"==typeof r.valueOf?r.valueOf():r}(t),\"ref\"===e||\"key\"===e)return\"\";if(\"style\"===e&&\"object\"==typeof t){var i=\"\";for(var u in t){var a=t[u];if(null!=a&&\"\"!==a){var l=\"-\"==u[0]?u:c[u]||(c[u]=u.replace(p,\"-$&\").toLowerCase()),s=\";\";\"number\"!=typeof a||l.startsWith(\"--\")||o.test(l)||(s=\"px;\"),i=i+l+\":\"+a+s}}return e+'=\"'+n(i)+'\"'}return null==t||!1===t||\"function\"==typeof t||\"object\"==typeof t?\"\":!0===t?e:e+'=\"'+n(\"\"+t)+'\"'}function s(r){if(null==r||\"boolean\"==typeof r||\"function\"==typeof r)return null;if(\"object\"==typeof r){if(void 0===r.constructor)return r;if(i(r)){for(var e=0;e<r.length;e++)r[e]=s(r[e]);return r}}return n(\"\"+r)}export{u as jsx,l as jsxAttr,u as jsxDEV,s as jsxEscape,a as jsxTemplate,u as jsxs};\n//# sourceMappingURL=jsxRuntime.module.js.map\n","import{options as n}from\"preact\";var t,r,u,i,o=0,f=[],c=n,e=c.__b,a=c.__r,v=c.diffed,l=c.__c,m=c.unmount,s=c.__;function p(n,t){c.__h&&c.__h(r,n,o||t),o=0;var u=r.__H||(r.__H={__:[],__h:[]});return n>=u.__.length&&u.__.push({}),u.__[n]}function d(n){return o=1,h(D,n)}function h(n,u,i){var o=p(t++,2);if(o.t=n,!o.__c&&(o.__=[i?i(u):D(void 0,u),function(n){var t=o.__N?o.__N[0]:o.__[0],r=o.t(t,n);t!==r&&(o.__N=[r,o.__[1]],o.__c.setState({}))}],o.__c=r,!r.__f)){var f=function(n,t,r){if(!o.__c.__H)return!0;var u=o.__c.__H.__.filter(function(n){return!!n.__c});if(u.every(function(n){return!n.__N}))return!c||c.call(this,n,t,r);var i=o.__c.props!==n;return u.forEach(function(n){if(n.__N){var t=n.__[0];n.__=n.__N,n.__N=void 0,t!==n.__[0]&&(i=!0)}}),c&&c.call(this,n,t,r)||i};r.__f=!0;var c=r.shouldComponentUpdate,e=r.componentWillUpdate;r.componentWillUpdate=function(n,t,r){if(this.__e){var u=c;c=void 0,f(n,t,r),c=u}e&&e.call(this,n,t,r)},r.shouldComponentUpdate=f}return o.__N||o.__}function y(n,u){var i=p(t++,3);!c.__s&&C(i.__H,u)&&(i.__=n,i.u=u,r.__H.__h.push(i))}function _(n,u){var i=p(t++,4);!c.__s&&C(i.__H,u)&&(i.__=n,i.u=u,r.__h.push(i))}function A(n){return o=5,T(function(){return{current:n}},[])}function F(n,t,r){o=6,_(function(){if(\"function\"==typeof n){var r=n(t());return function(){n(null),r&&\"function\"==typeof r&&r()}}if(n)return n.current=t(),function(){return n.current=null}},null==r?r:r.concat(n))}function T(n,r){var u=p(t++,7);return C(u.__H,r)&&(u.__=n(),u.__H=r,u.__h=n),u.__}function q(n,t){return o=8,T(function(){return n},t)}function x(n){var u=r.context[n.__c],i=p(t++,9);return i.c=n,u?(null==i.__&&(i.__=!0,u.sub(r)),u.props.value):n.__}function P(n,t){c.useDebugValue&&c.useDebugValue(t?t(n):n)}function b(n){var u=p(t++,10),i=d();return u.__=n,r.componentDidCatch||(r.componentDidCatch=function(n,t){u.__&&u.__(n,t),i[1](n)}),[i[0],function(){i[1](void 0)}]}function g(){var n=p(t++,11);if(!n.__){for(var u=r.__v;null!==u&&!u.__m&&null!==u.__;)u=u.__;var i=u.__m||(u.__m=[0,0]);n.__=\"P\"+i[0]+\"-\"+i[1]++}return n.__}function j(){for(var n;n=f.shift();)if(n.__P&&n.__H)try{n.__H.__h.forEach(z),n.__H.__h.forEach(B),n.__H.__h=[]}catch(t){n.__H.__h=[],c.__e(t,n.__v)}}c.__b=function(n){r=null,e&&e(n)},c.__=function(n,t){n&&t.__k&&t.__k.__m&&(n.__m=t.__k.__m),s&&s(n,t)},c.__r=function(n){a&&a(n),t=0;var i=(r=n.__c).__H;i&&(u===r?(i.__h=[],r.__h=[],i.__.forEach(function(n){n.__N&&(n.__=n.__N),n.u=n.__N=void 0})):(i.__h.forEach(z),i.__h.forEach(B),i.__h=[],t=0)),u=r},c.diffed=function(n){v&&v(n);var t=n.__c;t&&t.__H&&(t.__H.__h.length&&(1!==f.push(t)&&i===c.requestAnimationFrame||((i=c.requestAnimationFrame)||w)(j)),t.__H.__.forEach(function(n){n.u&&(n.__H=n.u),n.u=void 0})),u=r=null},c.__c=function(n,t){t.some(function(n){try{n.__h.forEach(z),n.__h=n.__h.filter(function(n){return!n.__||B(n)})}catch(r){t.some(function(n){n.__h&&(n.__h=[])}),t=[],c.__e(r,n.__v)}}),l&&l(n,t)},c.unmount=function(n){m&&m(n);var t,r=n.__c;r&&r.__H&&(r.__H.__.forEach(function(n){try{z(n)}catch(n){t=n}}),r.__H=void 0,t&&c.__e(t,r.__v))};var k=\"function\"==typeof requestAnimationFrame;function w(n){var t,r=function(){clearTimeout(u),k&&cancelAnimationFrame(t),setTimeout(n)},u=setTimeout(r,35);k&&(t=requestAnimationFrame(r))}function z(n){var t=r,u=n.__c;\"function\"==typeof u&&(n.__c=void 0,u()),r=t}function B(n){var t=r;n.__c=n.__(),r=t}function C(n,t){return!n||n.length!==t.length||t.some(function(t,r){return t!==n[r]})}function D(n,t){return\"function\"==typeof t?t(n):t}export{q as useCallback,x as useContext,P as useDebugValue,y as useEffect,b as useErrorBoundary,g as useId,F as useImperativeHandle,_ as useLayoutEffect,T as useMemo,h as useReducer,A as useRef,d as useState};\n//# sourceMappingURL=hooks.module.js.map\n","var i=Symbol.for(\"preact-signals\");function t(){if(!(s>1)){var i,t=!1;while(void 0!==h){var n=h;h=void 0;v++;while(void 0!==n){var r=n.o;n.o=void 0;n.f&=-3;if(!(8&n.f)&&a(n))try{n.c()}catch(n){if(!t){i=n;t=!0}}n=r}}v=0;s--;if(t)throw i}else s--}function n(i){if(s>0)return i();s++;try{return i()}finally{t()}}var r=void 0;function o(i){var t=r;r=void 0;try{return i()}finally{r=t}}var f,h=void 0,s=0,v=0,u=0;function e(i){if(void 0!==r){var t=i.n;if(void 0===t||t.t!==r){t={i:0,S:i,p:r.s,n:void 0,t:r,e:void 0,x:void 0,r:t};if(void 0!==r.s)r.s.n=t;r.s=t;i.n=t;if(32&r.f)i.S(t);return t}else if(-1===t.i){t.i=0;if(void 0!==t.n){t.n.p=t.p;if(void 0!==t.p)t.p.n=t.n;t.p=r.s;t.n=void 0;r.s.n=t;r.s=t}return t}}}function d(i,t){this.v=i;this.i=0;this.n=void 0;this.t=void 0;this.W=null==t?void 0:t.watched;this.Z=null==t?void 0:t.unwatched;this.name=null==t?void 0:t.name}d.prototype.brand=i;d.prototype.h=function(){return!0};d.prototype.S=function(i){var t=this,n=this.t;if(n!==i&&void 0===i.e){i.x=n;this.t=i;if(void 0!==n)n.e=i;else o(function(){var i;null==(i=t.W)||i.call(t)})}};d.prototype.U=function(i){var t=this;if(void 0!==this.t){var n=i.e,r=i.x;if(void 0!==n){n.x=r;i.e=void 0}if(void 0!==r){r.e=n;i.x=void 0}if(i===this.t){this.t=r;if(void 0===r)o(function(){var i;null==(i=t.Z)||i.call(t)})}}};d.prototype.subscribe=function(i){var t=this;return m(function(){var n=t.value,o=r;r=void 0;try{i(n)}finally{r=o}},{name:\"sub\"})};d.prototype.valueOf=function(){return this.value};d.prototype.toString=function(){return this.value+\"\"};d.prototype.toJSON=function(){return this.value};d.prototype.peek=function(){var i=r;r=void 0;try{return this.value}finally{r=i}};Object.defineProperty(d.prototype,\"value\",{get:function(){var i=e(this);if(void 0!==i)i.i=this.i;return this.v},set:function(i){if(i!==this.v){if(v>100)throw new Error(\"Cycle detected\");this.v=i;this.i++;u++;s++;try{for(var n=this.t;void 0!==n;n=n.x)n.t.N()}finally{t()}}}});function c(i,t){return new d(i,t)}function a(i){for(var t=i.s;void 0!==t;t=t.n)if(t.S.i!==t.i||!t.S.h()||t.S.i!==t.i)return!0;return!1}function l(i){for(var t=i.s;void 0!==t;t=t.n){var n=t.S.n;if(void 0!==n)t.r=n;t.S.n=t;t.i=-1;if(void 0===t.n){i.s=t;break}}}function y(i){var t=i.s,n=void 0;while(void 0!==t){var r=t.p;if(-1===t.i){t.S.U(t);if(void 0!==r)r.n=t.n;if(void 0!==t.n)t.n.p=r}else n=t;t.S.n=t.r;if(void 0!==t.r)t.r=void 0;t=r}i.s=n}function w(i,t){d.call(this,void 0);this.x=i;this.s=void 0;this.g=u-1;this.f=4;this.W=null==t?void 0:t.watched;this.Z=null==t?void 0:t.unwatched;this.name=null==t?void 0:t.name}w.prototype=new d;w.prototype.h=function(){this.f&=-3;if(1&this.f)return!1;if(32==(36&this.f))return!0;this.f&=-5;if(this.g===u)return!0;this.g=u;this.f|=1;if(this.i>0&&!a(this)){this.f&=-2;return!0}var i=r;try{l(this);r=this;var t=this.x();if(16&this.f||this.v!==t||0===this.i){this.v=t;this.f&=-17;this.i++}}catch(i){this.v=i;this.f|=16;this.i++}r=i;y(this);this.f&=-2;return!0};w.prototype.S=function(i){if(void 0===this.t){this.f|=36;for(var t=this.s;void 0!==t;t=t.n)t.S.S(t)}d.prototype.S.call(this,i)};w.prototype.U=function(i){if(void 0!==this.t){d.prototype.U.call(this,i);if(void 0===this.t){this.f&=-33;for(var t=this.s;void 0!==t;t=t.n)t.S.U(t)}}};w.prototype.N=function(){if(!(2&this.f)){this.f|=6;for(var i=this.t;void 0!==i;i=i.x)i.t.N()}};Object.defineProperty(w.prototype,\"value\",{get:function(){if(1&this.f)throw new Error(\"Cycle detected\");var i=e(this);this.h();if(void 0!==i)i.i=this.i;if(16&this.f)throw this.v;return this.v}});function b(i,t){return new w(i,t)}function _(i){var n=i.u;i.u=void 0;if(\"function\"==typeof n){s++;var o=r;r=void 0;try{n()}catch(t){i.f&=-2;i.f|=8;p(i);throw t}finally{r=o;t()}}}function p(i){for(var t=i.s;void 0!==t;t=t.n)t.S.U(t);i.x=void 0;i.s=void 0;_(i)}function g(i){if(r!==this)throw new Error(\"Out-of-order effect\");y(this);r=i;this.f&=-2;if(8&this.f)p(this);t()}function S(i,t){this.x=i;this.u=void 0;this.s=void 0;this.o=void 0;this.f=32;this.name=null==t?void 0:t.name;if(f)f.push(this)}S.prototype.c=function(){var i=this.S();try{if(8&this.f)return;if(void 0===this.x)return;var t=this.x();if(\"function\"==typeof t)this.u=t}finally{i()}};S.prototype.S=function(){if(1&this.f)throw new Error(\"Cycle detected\");this.f|=1;this.f&=-9;_(this);l(this);s++;var i=r;r=this;return g.bind(this,i)};S.prototype.N=function(){if(!(2&this.f)){this.f|=2;this.o=h;h=this}};S.prototype.d=function(){this.f|=8;if(!(1&this.f))p(this)};S.prototype.dispose=function(){this.d()};function m(i,t){var n=new S(i,t);try{n.c()}catch(i){n.d();throw i}var r=n.d.bind(n);r[Symbol.dispose]=r;return r}function E(i){return function(){var t=arguments,r=this;return n(function(){return o(function(){return i.apply(r,[].slice.call(t))})})}}function x(){var i=f;f=[];return function(){var t=f;if(f&&i)i=i.concat(f);f=i;return t}}function C(i){return function(){var t,n,r=x();try{n=i.apply(void 0,[].slice.call(arguments))}catch(i){f=void 0;throw i}finally{t=r()}for(var o in n)if(\"function\"==typeof n[o])n[o]=E(n[o]);n[Symbol.dispose]=E(function(){if(t)for(var i=0;i<t.length;i++)t[i].dispose();t=void 0});return n}}export{w as Computed,S as Effect,d as Signal,E as action,n as batch,b as computed,C as createModel,m as effect,c as signal,o as untracked};//# sourceMappingURL=signals-core.module.js.map\n","import{Component as i,options as n,isValidElement as t,Fragment as r}from\"preact\";import{useMemo as o,useRef as f,useEffect as e}from\"preact/hooks\";import{effect as u,Signal as a,computed as c,signal as v,batch as s}from\"@preact/signals-core\";export{Signal,action,batch,computed,createModel,effect,signal,untracked}from\"@preact/signals-core\";var l,h,d,p=\"undefined\"!=typeof window&&!!window.__PREACT_SIGNALS_DEVTOOLS__,m=[],_=[];u(function(){l=this.N})();function g(i,t){n[i]=t.bind(null,n[i]||function(){})}function b(i){if(d){var n=d;d=void 0;n()}d=i&&i.S()}function y(i){var n=this,r=i.data,f=useSignal(r);f.value=r;var e=o(function(){var i=n,r=n.__v;while(r=r.__)if(r.__c){r.__c.__$f|=4;break}var o=c(function(){var i=f.value.value;return 0===i?0:!0===i?\"\":i||\"\"}),e=c(function(){return!Array.isArray(o.value)&&!t(o.value)}),a=u(function(){this.N=F;if(e.value){var n=o.value;if(i.__v&&i.__v.__e&&3===i.__v.__e.nodeType)i.__v.__e.data=n}}),v=n.__$u.d;n.__$u.d=function(){a();v.call(this)};return[e,o]},[]),a=e[0],v=e[1];return a.value?v.peek():v.value}y.displayName=\"ReactiveTextNode\";Object.defineProperties(a.prototype,{constructor:{configurable:!0,value:void 0},type:{configurable:!0,value:y},props:{configurable:!0,get:function(){return{data:this}}},__b:{configurable:!0,value:1}});g(\"__b\",function(i,n){if(\"string\"==typeof n.type){var t,r=n.props;for(var o in r)if(\"children\"!==o){var f=r[o];if(f instanceof a){if(!t)n.__np=t={};t[o]=f;r[o]=f.peek()}}}i(n)});g(\"__r\",function(i,n){i(n);if(n.type!==r){b();var t,o=n.__c;if(o){o.__$f&=-2;if(void 0===(t=o.__$u))o.__$u=t=function(i,n){var t;u(function(){t=this},{name:n});t.c=i;return t}(function(){var i;if(p)null==(i=t.y)||i.call(t);o.__$f|=1;o.setState({})},\"function\"==typeof n.type?n.type.displayName||n.type.name:\"\")}h=o;b(t)}});g(\"__e\",function(i,n,t,r){b();h=void 0;i(n,t,r)});g(\"diffed\",function(i,n){b();h=void 0;var t;if(\"string\"==typeof n.type&&(t=n.__e)){var r=n.__np,o=n.props;if(r){var f=t.U;if(f)for(var e in f){var u=f[e];if(void 0!==u&&!(e in r)){u.d();f[e]=void 0}}else{f={};t.U=f}for(var a in r){var c=f[a],v=r[a];if(void 0===c){c=w(t,a,v,o);f[a]=c}else c.o(v,o)}}}i(n)});function w(i,n,t,r){var o=n in i&&void 0===i.ownerSVGElement,f=v(t);return{o:function(i,n){f.value=i;r=n},d:u(function(){this.N=F;var t=f.value.value;if(r[n]!==t){r[n]=t;if(o)i[n]=t;else if(null!=t&&(!1!==t||\"-\"===n[4]))i.setAttribute(n,t);else i.removeAttribute(n)}})}}g(\"unmount\",function(i,n){if(\"string\"==typeof n.type){var t=n.__e;if(t){var r=t.U;if(r){t.U=void 0;for(var o in r){var f=r[o];if(f)f.d()}}}}else{var e=n.__c;if(e){var u=e.__$u;if(u){e.__$u=void 0;u.d()}}}i(n)});g(\"__h\",function(i,n,t,r){if(r<3||9===r)n.__$f|=2;i(n,t,r)});i.prototype.shouldComponentUpdate=function(i,n){if(this.__R)return!0;var t=this.__$u,r=t&&void 0!==t.s;for(var o in n)return!0;if(this.__f||\"boolean\"==typeof this.u&&!0===this.u){var f=2&this.__$f;if(!(r||f||4&this.__$f))return!0;if(1&this.__$f)return!0}else{if(!(r||4&this.__$f))return!0;if(3&this.__$f)return!0}for(var e in i)if(\"__source\"!==e&&i[e]!==this.props[e])return!0;for(var u in this.props)if(!(u in i))return!0;return!1};function useSignal(i,n){return o(function(){return v(i,n)},[])}function useComputed(i,n){var t=f(i);t.current=i;h.__$f|=4;return o(function(){return c(function(){return t.current()},n)},[])}var k=\"undefined\"==typeof requestAnimationFrame?setTimeout:function(i){var n=function(){clearTimeout(t);cancelAnimationFrame(r);i()},t=setTimeout(n,35),r=requestAnimationFrame(n)},q=function(i){queueMicrotask(function(){queueMicrotask(i)})};function A(){s(function(){var i;while(i=m.shift())l.call(i)})}function T(){if(1===m.push(this))(n.requestAnimationFrame||k)(A)}function x(){s(function(){var i;while(i=_.shift())l.call(i)})}function F(){if(1===_.push(this))(n.requestAnimationFrame||q)(x)}function useSignalEffect(i,n){var t=f(i);t.current=i;e(function(){return u(function(){this.N=T;return t.current()},n)},[])}function M(i){var n=o(function(){return i()},[]);e(function(){return n[Symbol.dispose]},[n]);return n}export{useComputed,M as useModel,useSignal,useSignalEffect};//# sourceMappingURL=signals.module.js.map\n","import type { ComponentChildren } from \"preact\";\n\ninterface ButtonProps {\n\tonClick?: () => void;\n\tclassName?: string;\n\tdisabled?: boolean;\n\tchildren: ComponentChildren;\n\tvariant?: \"primary\" | \"secondary\";\n\tpopovertarget?: string;\n\tactive?: boolean;\n}\n\nexport function Button({\n\tonClick,\n\tclassName = \"\",\n\tdisabled = false,\n\tchildren,\n\tvariant = \"secondary\",\n\tpopovertarget,\n\tactive = false,\n}: ButtonProps) {\n\tconst baseClass = \"btn\";\n\tconst variantClass = variant === \"primary\" ? \"btn-primary\" : \"btn-secondary\";\n\tconst activeClass = active ? \"active\" : \"\";\n\tconst combinedClassName =\n\t\t`${baseClass} ${variantClass} ${activeClass} ${className}`.trim();\n\n\treturn (\n\t\t<button\n\t\t\tpopovertarget={popovertarget}\n\t\t\tonClick={onClick}\n\t\t\tclassName={combinedClassName}\n\t\t\tdisabled={disabled}\n\t\t>\n\t\t\t{children}\n\t\t</button>\n\t);\n}\n","import { Button } from \"./Button\";\n\ninterface EmptyStateProps {\n\tonRefresh: () => void;\n\ttitle?: string;\n\tdescription?: string;\n\tbuttonText?: string;\n}\n\nexport function EmptyState({\n\tonRefresh,\n\ttitle = \"No Signals Detected\",\n\tdescription = \"Make sure your application is using @preact/signals-debug package.\",\n\tbuttonText = \"Refresh Detection\",\n}: EmptyStateProps) {\n\treturn (\n\t\t<div className=\"empty-state\">\n\t\t\t<div className=\"empty-state-content\">\n\t\t\t\t<h2>{title}</h2>\n\t\t\t\t<p>{description}</p>\n\t\t\t\t<div className=\"empty-state-actions\">\n\t\t\t\t\t<Button onClick={onRefresh} variant=\"primary\">\n\t\t\t\t\t\t{buttonText}\n\t\t\t\t\t</Button>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n","import type { ConnectionStatusType } from \"@preact/signals-devtools-adapter\";\n\ninterface StatusIndicatorProps {\n\tstatus: ConnectionStatusType;\n\tmessage: string;\n\tshowIndicator?: boolean;\n\tclassName?: string;\n}\n\nexport function StatusIndicator({\n\tstatus,\n\tmessage,\n\tshowIndicator = true,\n\tclassName = \"\",\n}: StatusIndicatorProps) {\n\treturn (\n\t\t<div className={`connection-status ${status} ${className}`}>\n\t\t\t{showIndicator && <span className={`status-indicator ${status}`}></span>}\n\t\t\t<span className=\"status-text\">{message}</span>\n\t\t</div>\n\t);\n}\n","import { signal, computed, effect } from \"@preact/signals\";\nimport type {\n\tDevToolsAdapter,\n\tConnectionStatus,\n\tConnectionStatusType,\n\tSettings,\n\tSignalDisposed,\n\tDependencyInfo,\n} from \"@preact/signals-devtools-adapter\";\n\nexport type ThemeMode = \"auto\" | \"light\" | \"dark\";\n\nexport interface DevToolsContext {\n\tadapter: DevToolsAdapter;\n\tconnectionStore: ReturnType<typeof createConnectionStore>;\n\tupdatesStore: ReturnType<typeof createUpdatesStore>;\n\tsettingsStore: ReturnType<typeof createSettingsStore>;\n\tthemeStore: ReturnType<typeof createThemeStore>;\n}\n\nlet currentContext: DevToolsContext | null = null;\n\nexport function getContext(): DevToolsContext {\n\tif (!currentContext) {\n\t\tthrow new Error(\n\t\t\t\"DevTools context not initialized. Call initDevTools() first.\"\n\t\t);\n\t}\n\treturn currentContext;\n}\n\nexport function createConnectionStore(adapter: DevToolsAdapter) {\n\tconst status = signal<ConnectionStatusType>(\"connecting\");\n\tconst message = signal<string>(\"Connecting...\");\n\tconst isConnected = signal(false);\n\n\t// Listen to adapter events\n\tadapter.on(\n\t\t\"connectionStatusChanged\",\n\t\t(connectionStatus: ConnectionStatus) => {\n\t\t\tstatus.value = connectionStatus.status;\n\t\t\tmessage.value = connectionStatus.message;\n\t\t}\n\t);\n\n\tadapter.on(\"signalsAvailable\", (available: boolean) => {\n\t\tisConnected.value = available;\n\t});\n\n\tconst refreshConnection = () => {\n\t\tstatus.value = \"connecting\";\n\t\tmessage.value = \"Connecting...\";\n\t\tadapter.requestState();\n\t};\n\n\treturn {\n\t\tget status() {\n\t\t\treturn status.value;\n\t\t},\n\t\tget message() {\n\t\t\treturn message.value;\n\t\t},\n\t\tget isConnected() {\n\t\t\treturn isConnected.value;\n\t\t},\n\t\trefreshConnection,\n\t};\n}\n\nexport interface SignalUpdate {\n\ttype: \"update\" | \"effect\" | \"component\";\n\tsignalType: \"signal\" | \"computed\" | \"effect\" | \"component\";\n\tsignalName: string;\n\tsignalId?: string;\n\tprevValue?: any;\n\tnewValue?: any;\n\ttimestamp?: number;\n\treceivedAt: number;\n\tdepth?: number;\n\tsubscribedTo?: string;\n\t/** All dependencies this computed/effect currently depends on (with rich info) */\n\tallDependencies?: DependencyInfo[];\n}\n\nexport type Divider = { type: \"divider\" };\n\nexport interface UpdateTreeNodeBase {\n\tid: string;\n\tupdate: SignalUpdate;\n\tchildren: UpdateTreeNode[];\n\tdepth: number;\n\thasChildren: boolean;\n}\n\nexport interface UpdateTreeNodeSingle extends UpdateTreeNodeBase {\n\ttype: \"single\";\n}\n\nexport interface UpdateTreeNodeGroup extends UpdateTreeNodeBase {\n\ttype: \"group\";\n\tcount: number;\n\tfirstUpdate: SignalUpdate;\n\tfirstChildren: UpdateTreeNode[];\n}\n\nexport type UpdateTreeNode = UpdateTreeNodeGroup | UpdateTreeNodeSingle;\n\nconst nodesAreEqual = (a: UpdateTreeNode, b: UpdateTreeNode): boolean => {\n\treturn (\n\t\ta.update.signalId === b.update.signalId &&\n\t\ta.children.length === b.children.length &&\n\t\ta.children.every((child, index) => nodesAreEqual(child, b.children[index]))\n\t);\n};\n\nconst collapseTree = (nodes: UpdateTreeNodeSingle[]): UpdateTreeNode[] => {\n\tconst tree: UpdateTreeNode[] = [];\n\tlet lastNode: UpdateTreeNode | undefined;\n\n\tfor (const node of nodes) {\n\t\tif (lastNode && nodesAreEqual(lastNode, node)) {\n\t\t\tif (lastNode.type !== \"group\") {\n\t\t\t\ttree.pop();\n\t\t\t\tlastNode = {\n\t\t\t\t\t...lastNode,\n\t\t\t\t\ttype: \"group\",\n\t\t\t\t\tcount: 2,\n\t\t\t\t\tfirstUpdate: node.update,\n\t\t\t\t\tfirstChildren: node.children,\n\t\t\t\t};\n\t\t\t\ttree.push(lastNode);\n\t\t\t} else {\n\t\t\t\tlastNode.count++;\n\t\t\t\tlastNode.firstUpdate = node.update;\n\t\t\t\tlastNode.firstChildren = node.children;\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\t\ttree.push(node);\n\t\tlastNode = node;\n\t}\n\n\treturn tree;\n};\n\nexport function createUpdatesStore(\n\tadapter: DevToolsAdapter,\n\tsettingsStore: ReturnType<typeof createSettingsStore>\n) {\n\tconst updates = signal<(SignalUpdate | Divider)[]>([]);\n\tconst isPaused = signal<boolean>(false);\n\tconst disposedSignalIds = signal<Set<string>>(new Set());\n\n\tconst addUpdate = (\n\t\tupdate: SignalUpdate | Divider | Array<SignalUpdate | Divider>\n\t) => {\n\t\tif (Array.isArray(update)) {\n\t\t\tupdate.forEach(item => {\n\t\t\t\tif (item.type !== \"divider\") item.receivedAt = Date.now();\n\t\t\t});\n\t\t} else if (update.type === \"update\") {\n\t\t\tupdate.receivedAt = Date.now();\n\t\t}\n\t\tupdates.value = [\n\t\t\t...updates.value,\n\t\t\t...(Array.isArray(update) ? update : [update]),\n\t\t];\n\t};\n\n\tconst addDisposal = (disposal: SignalDisposed | SignalDisposed[]) => {\n\t\tconst disposals = Array.isArray(disposal) ? disposal : [disposal];\n\t\tconst newDisposed = new Set(disposedSignalIds.value);\n\t\tfor (const d of disposals) {\n\t\t\tif (d.signalId) {\n\t\t\t\tnewDisposed.add(d.signalId);\n\t\t\t}\n\t\t}\n\t\tdisposedSignalIds.value = newDisposed;\n\t};\n\n\tconst hasUpdates = computed(() => updates.value.length > 0);\n\n\tconst signalCounts = computed(() => {\n\t\tconst counts = new Map<string, number>();\n\t\tupdates.value.forEach(update => {\n\t\t\tif (update.type === \"divider\") return;\n\t\t\tconst signalName = update.signalName || \"Unknown\";\n\t\t\tcounts.set(signalName, (counts.get(signalName) || 0) + 1);\n\t\t});\n\t\treturn counts;\n\t});\n\n\tconst updateTree = computed(() => {\n\t\tconst buildTree = (\n\t\t\tupdates: (SignalUpdate | Divider)[]\n\t\t): UpdateTreeNodeSingle[] => {\n\t\t\tconst tree: UpdateTreeNodeSingle[] = [];\n\t\t\tconst stack: UpdateTreeNodeSingle[] = [];\n\n\t\t\tconst recentUpdates = updates.slice(-100).reverse();\n\n\t\t\tfor (let i = 0; i < recentUpdates.length; i++) {\n\t\t\t\tconst item = recentUpdates[i];\n\n\t\t\t\tif (item.type === \"divider\") {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tconst update = item as SignalUpdate;\n\t\t\t\tconst depth = update.depth || 0;\n\n\t\t\t\tconst nodeId = `${update.signalName}-${update.receivedAt}-${i}`;\n\n\t\t\t\tconst node: UpdateTreeNodeSingle = {\n\t\t\t\t\ttype: \"single\",\n\t\t\t\t\tid: nodeId,\n\t\t\t\t\tupdate,\n\t\t\t\t\tchildren: [],\n\t\t\t\t\tdepth,\n\t\t\t\t\thasChildren: false,\n\t\t\t\t};\n\n\t\t\t\twhile (stack.length > 0 && stack[stack.length - 1].depth >= depth) {\n\t\t\t\t\tstack.pop();\n\t\t\t\t}\n\n\t\t\t\tif (stack.length === 0) {\n\t\t\t\t\ttree.push(node);\n\t\t\t\t} else {\n\t\t\t\t\tconst parent = stack[stack.length - 1];\n\t\t\t\t\tparent.children.push(node);\n\t\t\t\t\tparent.hasChildren = true;\n\t\t\t\t}\n\n\t\t\t\tstack.push(node);\n\t\t\t}\n\n\t\t\treturn tree;\n\t\t};\n\n\t\treturn buildTree(updates.value);\n\t});\n\n\tconst clearUpdates = () => {\n\t\tupdates.value = [];\n\t\tdisposedSignalIds.value = new Set();\n\t};\n\n\t// Listen to adapter events\n\tadapter.on(\"signalUpdate\", (signalUpdates: SignalUpdate[]) => {\n\t\tif (isPaused.value) return;\n\n\t\tconst updatesArray: Array<SignalUpdate | Divider> = [\n\t\t\t...signalUpdates,\n\t\t].reverse();\n\t\tupdatesArray.push({ type: \"divider\" });\n\n\t\taddUpdate(updatesArray);\n\t});\n\n\t// Listen to disposal events\n\tadapter.on(\"signalDisposed\", (disposals: SignalDisposed[]) => {\n\t\tif (isPaused.value) return;\n\t\taddDisposal(disposals);\n\t});\n\n\tconst collapsedUpdateTree = computed(() => {\n\t\tconst updateTreeValue = updateTree.value;\n\t\tif (settingsStore.settings.grouped) {\n\t\t\treturn collapseTree(updateTreeValue);\n\t\t}\n\t\treturn updateTreeValue;\n\t});\n\n\treturn {\n\t\tupdates,\n\t\tupdateTree,\n\t\tcollapsedUpdateTree,\n\t\ttotalUpdates: computed(() => Object.keys(updateTree.value).length),\n\t\tsignalCounts,\n\t\tdisposedSignalIds,\n\t\taddUpdate,\n\t\tclearUpdates,\n\t\thasUpdates,\n\t\tisPaused,\n\t};\n}\n\nexport function createSettingsStore(adapter: DevToolsAdapter) {\n\tconst settings = signal<Settings>({\n\t\tenabled: true,\n\t\tgrouped: true,\n\t\tconsoleLogging: true,\n\t\tmaxUpdatesPerSecond: 60,\n\t\tfilterPatterns: [],\n\t});\n\n\tconst showDisposedSignals = signal<boolean>(false);\n\n\tconst applySettings = (newSettings: Settings) => {\n\t\tsettings.value = newSettings;\n\t\tadapter.sendConfig(newSettings);\n\t};\n\n\tconst toggleShowDisposedSignals = () => {\n\t\tshowDisposedSignals.value = !showDisposedSignals.value;\n\t};\n\n\t// Listen to adapter events\n\tadapter.on(\"configReceived\", (config: { settings?: Settings }) => {\n\t\tif (config.settings) {\n\t\t\tsettings.value = config.settings;\n\t\t}\n\t});\n\n\treturn {\n\t\tget settings() {\n\t\t\treturn settings.value;\n\t\t},\n\t\tget showDisposedSignals() {\n\t\t\treturn showDisposedSignals.value;\n\t\t},\n\t\tset settings(newSettings: Settings) {\n\t\t\tsettings.value = newSettings;\n\t\t},\n\t\tapplySettings,\n\t\ttoggleShowDisposedSignals,\n\t};\n}\n\nconst THEME_STORAGE_KEY = \"signals-devtools-theme\";\n\nexport function createThemeStore() {\n\tconst stored = (() => {\n\t\ttry {\n\t\t\tconst val = localStorage.getItem(THEME_STORAGE_KEY);\n\t\t\tif (val === \"light\" || val === \"dark\" || val === \"auto\") return val;\n\t\t} catch {\n\t\t\t// localStorage unavailable\n\t\t}\n\t\treturn \"auto\" as ThemeMode;\n\t})();\n\n\tconst theme = signal<ThemeMode>(stored);\n\n\tconst mediaQuery =\n\t\ttypeof window !== \"undefined\"\n\t\t\t? window.matchMedia(\"(prefers-color-scheme: dark)\")\n\t\t\t: null;\n\tconst systemIsDark = signal(mediaQuery?.matches ?? false);\n\n\tif (mediaQuery) {\n\t\tconst handler = (e: MediaQueryListEvent) => {\n\t\t\tsystemIsDark.value = e.matches;\n\t\t};\n\t\tmediaQuery.addEventListener(\"change\", handler);\n\t}\n\n\tconst resolvedTheme = computed<\"light\" | \"dark\">(() =>\n\t\ttheme.value === \"auto\"\n\t\t\t? systemIsDark.value\n\t\t\t\t? \"dark\"\n\t\t\t\t: \"light\"\n\t\t\t: theme.value\n\t);\n\n\t// Apply data-theme attribute to the devtools container\n\teffect(() => {\n\t\tconst resolved = resolvedTheme.value;\n\t\tconst el = document.querySelector(\".signals-devtools\");\n\t\tif (el instanceof HTMLElement) {\n\t\t\tel.dataset.theme = resolved;\n\t\t}\n\t});\n\n\tconst toggleTheme = () => {\n\t\tconst order: ThemeMode[] = [\"auto\", \"light\", \"dark\"];\n\t\tconst idx = order.indexOf(theme.value);\n\t\ttheme.value = order[(idx + 1) % order.length];\n\t\ttry {\n\t\t\tlocalStorage.setItem(THEME_STORAGE_KEY, theme.value);\n\t\t} catch {\n\t\t\t// localStorage unavailable\n\t\t}\n\t};\n\n\treturn {\n\t\tget theme() {\n\t\t\treturn theme.value;\n\t\t},\n\t\tget resolvedTheme() {\n\t\t\treturn resolvedTheme.value;\n\t\t},\n\t\ttoggleTheme,\n\t};\n}\n\nexport function initDevTools(adapter: DevToolsAdapter): DevToolsContext {\n\tconst settingsStore = createSettingsStore(adapter);\n\tconst updatesStore = createUpdatesStore(adapter, settingsStore);\n\tconst connectionStore = createConnectionStore(adapter);\n\tconst themeStore = createThemeStore();\n\n\tcurrentContext = {\n\t\tadapter,\n\t\tconnectionStore,\n\t\tupdatesStore,\n\t\tsettingsStore,\n\t\tthemeStore,\n\t};\n\n\treturn currentContext;\n}\n\nexport function destroyDevTools(): void {\n\tif (currentContext) {\n\t\tcurrentContext.adapter.disconnect();\n\t\tcurrentContext = null;\n\t}\n}\n","import { StatusIndicator } from \"./StatusIndicator\";\nimport { Button } from \"./Button\";\nimport { getContext } from \"../context\";\nimport type { ThemeMode } from \"../context\";\n\nconst themeLabels: Record<ThemeMode, string> = {\n\tauto: \"Auto\",\n\tlight: \"Light\",\n\tdark: \"Dark\",\n};\n\nconst themeIcons: Record<ThemeMode, string> = {\n\tauto: \"\\u25D1\",\n\tlight: \"\\u2600\",\n\tdark: \"\\u263E\",\n};\n\nexport function Header() {\n\tconst { connectionStore, updatesStore, themeStore } = getContext();\n\n\tconst onTogglePause = () => {\n\t\tupdatesStore.isPaused.value = !updatesStore.isPaused.value;\n\t};\n\n\tconst onClear = () => {\n\t\tupdatesStore.clearUpdates();\n\t};\n\n\treturn (\n\t\t<header className=\"header\">\n\t\t\t<div className=\"header-title\">\n\t\t\t\t<h1>Signals</h1>\n\t\t\t\t<StatusIndicator\n\t\t\t\t\tstatus={connectionStore.status}\n\t\t\t\t\tmessage={connectionStore.message}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t\t<div className=\"header-controls\">\n\t\t\t\t<button\n\t\t\t\t\tclassName=\"theme-toggle\"\n\t\t\t\t\tonClick={themeStore.toggleTheme}\n\t\t\t\t\ttitle={`Theme: ${themeLabels[themeStore.theme]}`}\n\t\t\t\t>\n\t\t\t\t\t{themeIcons[themeStore.theme]} {themeLabels[themeStore.theme]}\n\t\t\t\t</button>\n\t\t\t\t{onClear && <Button onClick={onClear}>Clear</Button>}\n\t\t\t\t{onTogglePause && (\n\t\t\t\t\t<Button onClick={onTogglePause} active={updatesStore.isPaused.value}>\n\t\t\t\t\t\t{updatesStore.isPaused.value ? \"Resume\" : \"Pause\"}\n\t\t\t\t\t</Button>\n\t\t\t\t)}\n\t\t\t\t<Button popovertarget=\"settings-panel-popover\">Settings</Button>\n\t\t\t</div>\n\t\t</header>\n\t);\n}\n","import { useSignal, useSignalEffect } from \"@preact/signals\";\nimport { Button } from \"./Button\";\nimport type { Settings } from \"@preact/signals-devtools-adapter\";\nimport { getContext } from \"../context\";\nimport { useRef } from \"preact/hooks\";\n\nexport function SettingsPanel() {\n\tconst { settingsStore } = getContext();\n\tconst popover = useRef<HTMLDivElement>(null);\n\n\tconst onApply = settingsStore.applySettings;\n\tconst settings = settingsStore.settings;\n\n\tconst localSettings = useSignal<Settings>(settings);\n\n\tuseSignalEffect(() => {\n\t\tlocalSettings.value = settingsStore.settings;\n\t});\n\n\tconst handleApply = () => {\n\t\tonApply(localSettings.value);\n\t};\n\n\tconst onCancel = () => {\n\t\t// @ts-expect-error\n\t\tpopover.current?.hide();\n\t};\n\n\treturn (\n\t\t<div\n\t\t\tref={popover}\n\t\t\tpopover=\"auto\"\n\t\t\tid=\"settings-panel-popover\"\n\t\t\tclassName=\"settings-panel\"\n\t\t>\n\t\t\t<div className=\"settings-content\">\n\t\t\t\t<h3>Debug Configuration</h3>\n\n\t\t\t\t<div className=\"setting-group\">\n\t\t\t\t\t<label>\n\t\t\t\t\t\t<input\n\t\t\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\t\t\tchecked={localSettings.value.enabled}\n\t\t\t\t\t\t\tonChange={e =>\n\t\t\t\t\t\t\t\t(localSettings.value = {\n\t\t\t\t\t\t\t\t\t...localSettings.value,\n\t\t\t\t\t\t\t\t\tenabled: (e.target as HTMLInputElement).checked,\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\tEnable debug updates\n\t\t\t\t\t</label>\n\t\t\t\t</div>\n\n\t\t\t\t<div className=\"setting-group\">\n\t\t\t\t\t<label>\n\t\t\t\t\t\t<input\n\t\t\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\t\t\tchecked={localSettings.value.grouped}\n\t\t\t\t\t\t\tonChange={e =>\n\t\t\t\t\t\t\t\t(localSettings.value = {\n\t\t\t\t\t\t\t\t\t...localSettings.value,\n\t\t\t\t\t\t\t\t\tgrouped: (e.target as HTMLInputElement).checked,\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\tGroup related updates\n\t\t\t\t\t</label>\n\t\t\t\t</div>\n\n\t\t\t\t<div className=\"setting-group\">\n\t\t\t\t\t<label>\n\t\t\t\t\t\t<input\n\t\t\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\t\t\tchecked={localSettings.value.consoleLogging}\n\t\t\t\t\t\t\tonChange={e =>\n\t\t\t\t\t\t\t\t(localSettings.value = {\n\t\t\t\t\t\t\t\t\t...localSettings.value,\n\t\t\t\t\t\t\t\t\tconsoleLogging: (e.target as HTMLInputElement).checked,\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\tEnable console logging\n\t\t\t\t\t</label>\n\t\t\t\t\t<p className=\"setting-description\">\n\t\t\t\t\t\tWhen disabled, signal updates will not be logged to the browser\n\t\t\t\t\t\tconsole.\n\t\t\t\t\t</p>\n\t\t\t\t</div>\n\n\t\t\t\t<div className=\"setting-group\">\n\t\t\t\t\t<label htmlFor=\"maxUpdatesInput\">Max updates per second:</label>\n\t\t\t\t\t<input\n\t\t\t\t\t\ttype=\"number\"\n\t\t\t\t\t\tid=\"maxUpdatesInput\"\n\t\t\t\t\t\tvalue={localSettings.value.maxUpdatesPerSecond}\n\t\t\t\t\t\tmin=\"1\"\n\t\t\t\t\t\tmax=\"1000\"\n\t\t\t\t\t\tonChange={e =>\n\t\t\t\t\t\t\t(localSettings.value = {\n\t\t\t\t\t\t\t\t...localSettings.value,\n\t\t\t\t\t\t\t\tmaxUpdatesPerSecond:\n\t\t\t\t\t\t\t\t\tparseInt((e.target as HTMLInputElement).value) || 60,\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\n\t\t\t\t<div className=\"setting-group\">\n\t\t\t\t\t<label htmlFor=\"filterPatternsInput\">\n\t\t\t\t\t\tFilter patterns (one per line):\n\t\t\t\t\t</label>\n\t\t\t\t\t<textarea\n\t\t\t\t\t\tid=\"filterPatternsInput\"\n\t\t\t\t\t\tplaceholder=\"user.*&#10;.*State$&#10;global\"\n\t\t\t\t\t\tvalue={localSettings.value.filterPatterns.join(\"\\n\")}\n\t\t\t\t\t\tonChange={e =>\n\t\t\t\t\t\t\t(localSettings.value = {\n\t\t\t\t\t\t\t\t...localSettings.value,\n\t\t\t\t\t\t\t\tfilterPatterns: (e.target as HTMLTextAreaElement).value\n\t\t\t\t\t\t\t\t\t.split(\"\\n\")\n\t\t\t\t\t\t\t\t\t.map(pattern => pattern.trim())\n\t\t\t\t\t\t\t\t\t.filter(pattern => pattern.length > 0),\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\n\t\t\t\t<h3>Graph Settings</h3>\n\n\t\t\t\t<div className=\"setting-group\">\n\t\t\t\t\t<label>\n\t\t\t\t\t\t<input\n\t\t\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\t\t\tchecked={settingsStore.showDisposedSignals}\n\t\t\t\t\t\t\tonChange={() => settingsStore.toggleShowDisposedSignals()}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\tShow disposed signals in graph\n\t\t\t\t\t</label>\n\t\t\t\t\t<p className=\"setting-description\">\n\t\t\t\t\t\tWhen enabled, signals and effects that have been disposed will still\n\t\t\t\t\t\tbe shown in the graph view.\n\t\t\t\t\t</p>\n\t\t\t\t</div>\n\n\t\t\t\t<div className=\"settings-actions\">\n\t\t\t\t\t<Button onClick={handleApply} variant=\"primary\">\n\t\t\t\t\t\tApply\n\t\t\t\t\t</Button>\n\t\t\t\t\t<Button onClick={onCancel}>Cancel</Button>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n","import { useRef, useEffect } from \"preact/hooks\";\nimport { useComputed, useSignal } from \"@preact/signals\";\nimport type { GraphData, GraphLink, GraphNode } from \"../types\";\nimport type { SignalUpdate } from \"../context\";\nimport { getContext } from \"../context\";\n\nconst copyToClipboard = (text: string) => {\n\tconst copyEl = document.createElement(\"textarea\");\n\ttry {\n\t\tcopyEl.value = text;\n\t\tdocument.body.append(copyEl);\n\t\tcopyEl.select();\n\t\tdocument.execCommand(\"copy\");\n\t} finally {\n\t\tcopyEl.remove();\n\t}\n};\n\nexport function GraphVisualization() {\n\tconst { updatesStore, settingsStore } = getContext();\n\tconst updates = updatesStore.updates;\n\tconst disposedSignalIds = updatesStore.disposedSignalIds;\n\tconst svgRef = useRef<SVGSVGElement>(null);\n\tconst containerRef = useRef<HTMLDivElement>(null);\n\tconst exportMenuRef = useRef<HTMLDivElement>(null);\n\n\tconst panOffset = useSignal({ x: 0, y: 0 });\n\tconst zoom = useSignal(1);\n\tconst isPanning = useSignal(false);\n\tconst startPan = useSignal({ x: 0, y: 0 });\n\tconst showExportMenu = useSignal(false);\n\tconst toastText = useSignal<string>();\n\tconst hoveredNode = useSignal<GraphNode | null>(null);\n\tconst tooltipPos = useSignal({ x: 0, y: 0 });\n\n\tuseEffect(() => {\n\t\tconst handleClickOutside = (e: MouseEvent) => {\n\t\t\tif (\n\t\t\t\tshowExportMenu.value &&\n\t\t\t\texportMenuRef.current &&\n\t\t\t\t!exportMenuRef.current.contains(e.target as Node)\n\t\t\t) {\n\t\t\t\tshowExportMenu.value = false;\n\t\t\t}\n\t\t};\n\n\t\tdocument.addEventListener(\"mousedown\", handleClickOutside);\n\t\treturn () => {\n\t\t\tdocument.removeEventListener(\"mousedown\", handleClickOutside);\n\t\t};\n\t}, []);\n\n\t// Improved topological sort with proper layering\n\tconst computeNodeLayers = (\n\t\tnodes: Map<string, GraphNode>,\n\t\tlinks: GraphLink[]\n\t): Map<string, number> => {\n\t\tconst layers = new Map<string, number>();\n\t\tconst adjacency = new Map<string, Set<string>>();\n\t\tconst inDegree = new Map<string, number>();\n\n\t\t// Initialize adjacency list and in-degrees\n\t\tnodes.forEach((_, id) => {\n\t\t\tadjacency.set(id, new Set());\n\t\t\tinDegree.set(id, 0);\n\t\t});\n\n\t\t// Build adjacency list and calculate in-degrees\n\t\tlinks.forEach(link => {\n\t\t\tadjacency.get(link.source)?.add(link.target);\n\t\t\tinDegree.set(link.target, (inDegree.get(link.target) || 0) + 1);\n\t\t});\n\n\t\t// BFS-based layering (Kahn's algorithm with layers)\n\t\tconst queue: string[] = [];\n\n\t\t// Start with nodes that have no dependencies (in-degree = 0)\n\t\tnodes.forEach((_, id) => {\n\t\t\tif (inDegree.get(id) === 0) {\n\t\t\t\tqueue.push(id);\n\t\t\t\tlayers.set(id, 0);\n\t\t\t}\n\t\t});\n\n\t\twhile (queue.length > 0) {\n\t\t\tconst nodeId = queue.shift()!;\n\t\t\tconst currentLayer = layers.get(nodeId)!;\n\n\t\t\t// Process all nodes that depend on this node\n\t\t\tadjacency.get(nodeId)?.forEach(targetId => {\n\t\t\t\t// Update target's layer to be at least one more than current\n\t\t\t\tconst targetLayer = layers.get(targetId) ?? 0;\n\t\t\t\tlayers.set(targetId, Math.max(targetLayer, currentLayer + 1));\n\n\t\t\t\t// Decrease in-degree and add to queue if all dependencies processed\n\t\t\t\tconst newInDegree = (inDegree.get(targetId) || 0) - 1;\n\t\t\t\tinDegree.set(targetId, newInDegree);\n\n\t\t\t\tif (newInDegree === 0) {\n\t\t\t\t\tqueue.push(targetId);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn layers;\n\t};\n\n\t// Reduce edge crossings within layers using barycenter heuristic\n\tconst minimizeCrossings = (\n\t\tnodesByLayer: Map<number, GraphNode[]>,\n\t\tlinks: GraphLink[]\n\t): void => {\n\t\tconst layers = Array.from(nodesByLayer.keys()).sort((a, b) => a - b);\n\n\t\t// Build adjacency maps for quick lookup\n\t\tconst targets = new Map<string, string[]>();\n\t\tconst sources = new Map<string, string[]>();\n\n\t\tlinks.forEach(link => {\n\t\t\tif (!targets.has(link.source)) targets.set(link.source, []);\n\t\t\tif (!sources.has(link.target)) sources.set(link.target, []);\n\t\t\ttargets.get(link.source)!.push(link.target);\n\t\t\tsources.get(link.target)!.push(link.source);\n\t\t});\n\n\t\t// Create position maps for quick lookup\n\t\tconst nodePositions = new Map<string, number>();\n\n\t\t// Multiple passes to reduce crossings\n\t\tfor (let pass = 0; pass < 4; pass++) {\n\t\t\t// Forward pass: order based on predecessors\n\t\t\tfor (let i = 0; i < layers.length; i++) {\n\t\t\t\tconst layer = layers[i];\n\t\t\t\tconst nodes = nodesByLayer.get(layer)!;\n\n\t\t\t\t// Update position map for current layer\n\t\t\t\tnodes.forEach((node, idx) => {\n\t\t\t\t\tnodePositions.set(node.id, idx);\n\t\t\t\t});\n\n\t\t\t\tif (i === 0) continue; // Skip first layer\n\n\t\t\t\t// Calculate barycenter for each node based on predecessors\n\t\t\t\tconst barycenters = nodes.map(node => {\n\t\t\t\t\tconst preds = sources.get(node.id) || [];\n\t\t\t\t\tif (preds.length === 0) return 0;\n\n\t\t\t\t\tconst sum = preds.reduce((acc, predId) => {\n\t\t\t\t\t\treturn acc + (nodePositions.get(predId) ?? 0);\n\t\t\t\t\t}, 0);\n\t\t\t\t\treturn sum / preds.length;\n\t\t\t\t});\n\n\t\t\t\t// Sort nodes by barycenter\n\t\t\t\tconst sorted = nodes\n\t\t\t\t\t.map((node, idx) => ({ node, barycenter: barycenters[idx] }))\n\t\t\t\t\t.sort((a, b) => a.barycenter - b.barycenter)\n\t\t\t\t\t.map(item => item.node);\n\n\t\t\t\tnodesByLayer.set(layer, sorted);\n\t\t\t}\n\n\t\t\t// Backward pass: order based on successors\n\t\t\tfor (let i = layers.length - 1; i >= 0; i--) {\n\t\t\t\tconst layer = layers[i];\n\t\t\t\tconst nodes = nodesByLayer.get(layer)!;\n\n\t\t\t\t// Update position map for current layer\n\t\t\t\tnodes.forEach((node, idx) => {\n\t\t\t\t\tnodePositions.set(node.id, idx);\n\t\t\t\t});\n\n\t\t\t\tif (i === layers.length - 1) continue; // Skip last layer\n\n\t\t\t\t// Calculate barycenter for each node based on successors\n\t\t\t\tconst barycenters = nodes.map(node => {\n\t\t\t\t\tconst succs = targets.get(node.id) || [];\n\t\t\t\t\tif (succs.length === 0) return 0;\n\n\t\t\t\t\tconst sum = succs.reduce((acc, succId) => {\n\t\t\t\t\t\treturn acc + (nodePositions.get(succId) ?? 0);\n\t\t\t\t\t}, 0);\n\t\t\t\t\treturn sum / succs.length;\n\t\t\t\t});\n\n\t\t\t\t// Sort nodes by barycenter\n\t\t\t\tconst sorted = nodes\n\t\t\t\t\t.map((node, idx) => ({ node, barycenter: barycenters[idx] }))\n\t\t\t\t\t.sort((a, b) => a.barycenter - b.barycenter)\n\t\t\t\t\t.map(item => item.node);\n\n\t\t\t\tnodesByLayer.set(layer, sorted);\n\t\t\t}\n\t\t}\n\t};\n\n\tconst graphData = useComputed<GraphData>(() => {\n\t\tconst rawUpdates = updates.value;\n\t\tconst disposed = disposedSignalIds.value;\n\t\tconst showDisposed = settingsStore.showDisposedSignals;\n\n\t\tif (!rawUpdates || rawUpdates.length === 0) return { nodes: [], links: [] };\n\n\t\tconst nodes = new Map<string, GraphNode>();\n\t\tconst links = new Map<string, GraphLink>();\n\n\t\tconst signalUpdates = rawUpdates.filter(\n\t\t\tupdate => update.type !== \"divider\"\n\t\t) as SignalUpdate[];\n\n\t\tfor (const update of signalUpdates) {\n\t\t\tif (!update.signalId) continue;\n\t\t\tif (!showDisposed && disposed.has(update.signalId)) continue;\n\n\t\t\tconst type: \"signal\" | \"computed\" | \"effect\" | \"component\" =\n\t\t\t\tupdate.signalType;\n\n\t\t\tif (!nodes.has(update.signalId)) {\n\t\t\t\tnodes.set(update.signalId, {\n\t\t\t\t\tid: update.signalId,\n\t\t\t\t\tname: update.signalName,\n\t\t\t\t\ttype,\n\t\t\t\t\tx: 0,\n\t\t\t\t\ty: 0,\n\t\t\t\t\tdepth: 0, // Will be recalculated\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (update.allDependencies && update.allDependencies.length > 0) {\n\t\t\t\tfor (const dep of update.allDependencies) {\n\t\t\t\t\tconst sourceDisposed = !showDisposed && disposed.has(dep.id);\n\t\t\t\t\tif (sourceDisposed) continue;\n\n\t\t\t\t\tif (!nodes.has(dep.id)) {\n\t\t\t\t\t\tnodes.set(dep.id, {\n\t\t\t\t\t\t\tid: dep.id,\n\t\t\t\t\t\t\tname: dep.name,\n\t\t\t\t\t\t\ttype: dep.type,\n\t\t\t\t\t\t\tx: 0,\n\t\t\t\t\t\t\ty: 0,\n\t\t\t\t\t\t\tdepth: 0,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tconst linkKey = `${dep.id}->${update.signalId}`;\n\t\t\t\t\tif (!links.has(linkKey)) {\n\t\t\t\t\t\tlinks.set(linkKey, {\n\t\t\t\t\t\t\tsource: dep.id,\n\t\t\t\t\t\t\ttarget: update.signalId,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (update.subscribedTo) {\n\t\t\t\tconst sourceDisposed =\n\t\t\t\t\t!showDisposed && disposed.has(update.subscribedTo);\n\t\t\t\tif (sourceDisposed) continue;\n\n\t\t\t\tconst linkKey = `${update.subscribedTo}->${update.signalId}`;\n\t\t\t\tif (!links.has(linkKey)) {\n\t\t\t\t\tlinks.set(linkKey, {\n\t\t\t\t\t\tsource: update.subscribedTo,\n\t\t\t\t\t\ttarget: update.signalId,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconst allLinks = Array.from(links.values());\n\n\t\t// Compute proper layers using topological sort\n\t\tconst nodeLayers = computeNodeLayers(nodes, allLinks);\n\n\t\t// Update node depths based on computed layers\n\t\tnodes.forEach((node, id) => {\n\t\t\tnode.depth = nodeLayers.get(id) ?? 0;\n\t\t});\n\n\t\t// Group nodes by layer\n\t\tconst nodesByLayer = new Map<number, GraphNode[]>();\n\t\tnodes.forEach(node => {\n\t\t\tif (!nodesByLayer.has(node.depth)) {\n\t\t\t\tnodesByLayer.set(node.depth, []);\n\t\t\t}\n\t\t\tnodesByLayer.get(node.depth)!.push(node);\n\t\t});\n\n\t\t// Minimize edge crossings\n\t\tminimizeCrossings(nodesByLayer, allLinks);\n\n\t\t// Layout nodes with proper spacing\n\t\tconst nodeSpacing = 120;\n\t\tconst layerSpacing = 250;\n\t\tconst startX = 100;\n\t\tconst startY = 80;\n\n\t\tnodesByLayer.forEach((layerNodes, layer) => {\n\t\t\tconst layerHeight = (layerNodes.length - 1) * nodeSpacing;\n\t\t\tconst layerStartY = startY - layerHeight / 2;\n\n\t\t\tlayerNodes.forEach((node, index) => {\n\t\t\t\tnode.x = startX + layer * layerSpacing;\n\t\t\t\tnode.y = layerStartY + index * nodeSpacing + nodesByLayer.size * 50;\n\t\t\t});\n\t\t});\n\n\t\treturn {\n\t\t\tnodes: Array.from(nodes.values()),\n\t\t\tlinks: allLinks,\n\t\t};\n\t});\n\n\tconst handleMouseDown = (e: MouseEvent) => {\n\t\tif (e.button !== 0) return;\n\t\tisPanning.value = true;\n\t\tstartPan.value = {\n\t\t\tx: e.clientX - panOffset.value.x,\n\t\t\ty: e.clientY - panOffset.value.y,\n\t\t};\n\t};\n\n\tconst handleMouseMove = (e: MouseEvent) => {\n\t\tif (!isPanning.value) return;\n\t\tpanOffset.value = {\n\t\t\tx: e.clientX - startPan.value.x,\n\t\t\ty: e.clientY - startPan.value.y,\n\t\t};\n\t};\n\n\tconst handleMouseUp = () => {\n\t\tisPanning.value = false;\n\t};\n\n\tconst handleWheel = (e: WheelEvent) => {\n\t\te.preventDefault();\n\n\t\tconst container = containerRef.current;\n\t\tif (!container) return;\n\n\t\tconst rect = container.getBoundingClientRect();\n\t\tconst mouseX = e.clientX - rect.left;\n\t\tconst mouseY = e.clientY - rect.top;\n\n\t\tconst delta = e.deltaY > 0 ? 0.96 : 1.04;\n\t\tconst newZoom = Math.min(Math.max(0.1, zoom.value * delta), 5);\n\n\t\tconst zoomRatio = newZoom / zoom.value;\n\t\tpanOffset.value = {\n\t\t\tx: mouseX - (mouseX - panOffset.value.x) * zoomRatio,\n\t\t\ty: mouseY - (mouseY - panOffset.value.y) * zoomRatio,\n\t\t};\n\n\t\tzoom.value = newZoom;\n\t};\n\n\tconst resetView = () => {\n\t\tpanOffset.value = { x: 0, y: 0 };\n\t\tzoom.value = 1;\n\t};\n\n\tconst toggleExportMenu = () => {\n\t\tshowExportMenu.value = !showExportMenu.value;\n\t};\n\n\tconst mermaidIdPattern = /[^a-zA-Z0-9]/g;\n\tconst computeMermaidId = (id: string) => id.replace(mermaidIdPattern, \"_\");\n\n\tconst getNodeRadius = (node: GraphNode) => {\n\t\tconst baseRadius = 30;\n\t\tconst charWidth = 6.5;\n\t\tconst padding = 16;\n\t\tconst textWidth = node.name.length * charWidth + padding;\n\t\treturn Math.max(baseRadius, Math.min(textWidth / 2, 70));\n\t};\n\n\tconst handleNodeMouseEnter = (node: GraphNode, e: MouseEvent) => {\n\t\thoveredNode.value = node;\n\t\tconst container = containerRef.current;\n\t\tif (container) {\n\t\t\tconst rect = container.getBoundingClientRect();\n\t\t\ttooltipPos.value = {\n\t\t\t\tx: e.clientX - rect.left,\n\t\t\t\ty: e.clientY - rect.top,\n\t\t\t};\n\t\t}\n\t};\n\n\tconst handleNodeMouseMove = (e: MouseEvent) => {\n\t\tconst container = containerRef.current;\n\t\tif (container && hoveredNode.value) {\n\t\t\tconst rect = container.getBoundingClientRect();\n\t\t\ttooltipPos.value = {\n\t\t\t\tx: e.clientX - rect.left,\n\t\t\t\ty: e.clientY - rect.top,\n\t\t\t};\n\t\t}\n\t};\n\n\tconst handleNodeMouseLeave = () => {\n\t\thoveredNode.value = null;\n\t};\n\n\tconst showToast = (text: string) => {\n\t\ttoastText.value = text;\n\t\tsetTimeout(() => {\n\t\t\ttoastText.value = undefined;\n\t\t}, 2000);\n\t};\n\n\tconst handleExportMermaid = async () => {\n\t\tshowExportMenu.value = false;\n\n\t\tconst lines: string[] = [\"graph LR\"];\n\n\t\tgraphData.value.nodes.forEach(node => {\n\t\t\tconst id = computeMermaidId(node.id);\n\t\t\tconst name = node.name;\n\n\t\t\tswitch (node.type) {\n\t\t\t\tcase \"signal\":\n\t\t\t\t\tlines.push(` ${id}((${name}))`);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"computed\":\n\t\t\t\t\tlines.push(` ${id}(${name})`);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"effect\":\n\t\t\t\t\tlines.push(` ${id}([${name}])`);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"component\":\n\t\t\t\t\tlines.push(` ${id}{{${name}}}`);\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t});\n\n\t\tfor (const link of graphData.value.links) {\n\t\t\tconst sourceId = computeMermaidId(link.source);\n\t\t\tconst targetId = computeMermaidId(link.target);\n\t\t\tlines.push(` ${sourceId} --> ${targetId}`);\n\t\t}\n\n\t\tcopyToClipboard(lines.join(\"\\n\"));\n\t\tshowToast(\"Copied to clipboard!\");\n\t};\n\n\tconst handleExportJSON = async () => {\n\t\tshowExportMenu.value = false;\n\t\tconst value = JSON.stringify(graphData.value, null, 2);\n\t\tcopyToClipboard(value);\n\t\tshowToast(\"Copied to clipboard!\");\n\t};\n\n\tif (graphData.value.nodes.length === 0) {\n\t\treturn (\n\t\t\t<div className=\"graph-empty\">\n\t\t\t\t<div>\n\t\t\t\t\t<h3>No Signal Dependencies</h3>\n\t\t\t\t\t<p>\n\t\t\t\t\t\tCreate some signals with dependencies to see the graph\n\t\t\t\t\t\tvisualization.\n\t\t\t\t\t</p>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n\n\tconst svgWidth = Math.max(800, ...graphData.value.nodes.map(n => n.x + 100));\n\tconst svgHeight = Math.max(600, ...graphData.value.nodes.map(n => n.y + 100));\n\n\treturn (\n\t\t<div className=\"graph-container\">\n\t\t\t<div\n\t\t\t\tref={containerRef}\n\t\t\t\tclassName=\"graph-content\"\n\t\t\t\tonMouseDown={handleMouseDown}\n\t\t\t\tonMouseMove={handleMouseMove}\n\t\t\t\tonMouseUp={handleMouseUp}\n\t\t\t\tonMouseLeave={handleMouseUp}\n\t\t\t\tonWheel={handleWheel}\n\t\t\t\tstyle={{ cursor: isPanning.value ? \"grabbing\" : \"grab\" }}\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\tref={svgRef}\n\t\t\t\t\tclassName=\"graph-svg\"\n\t\t\t\t\twidth={svgWidth}\n\t\t\t\t\theight={svgHeight}\n\t\t\t\t\tviewBox={`0 0 ${svgWidth} ${svgHeight}`}\n\t\t\t\t>\n\t\t\t\t\t<defs>\n\t\t\t\t\t\t<marker\n\t\t\t\t\t\t\tid=\"arrowhead\"\n\t\t\t\t\t\t\tmarkerWidth=\"8\"\n\t\t\t\t\t\t\tmarkerHeight=\"6\"\n\t\t\t\t\t\t\trefX=\"7\"\n\t\t\t\t\t\t\trefY=\"3\"\n\t\t\t\t\t\t\torient=\"auto\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<polygon points=\"0 0, 8 3, 0 6\" className=\"graph-arrowhead\" />\n\t\t\t\t\t\t</marker>\n\t\t\t\t\t</defs>\n\n\t\t\t\t\t<g\n\t\t\t\t\t\ttransform={`translate(${panOffset.value.x}, ${panOffset.value.y}) scale(${zoom.value})`}\n\t\t\t\t\t>\n\t\t\t\t\t\t<g className=\"links\">\n\t\t\t\t\t\t\t{graphData.value.links.map((link, index) => {\n\t\t\t\t\t\t\t\tconst sourceNode = graphData.value.nodes.find(\n\t\t\t\t\t\t\t\t\tn => n.id === link.source\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tconst targetNode = graphData.value.nodes.find(\n\t\t\t\t\t\t\t\t\tn => n.id === link.target\n\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\tif (!sourceNode || !targetNode) return null;\n\n\t\t\t\t\t\t\t\tconst sourceRadius = getNodeRadius(sourceNode);\n\t\t\t\t\t\t\t\tconst targetRadius = getNodeRadius(targetNode);\n\t\t\t\t\t\t\t\tconst sourceX = sourceNode.x + sourceRadius;\n\t\t\t\t\t\t\t\tconst sourceY = sourceNode.y;\n\t\t\t\t\t\t\t\tconst targetX = targetNode.x - targetRadius - 8;\n\t\t\t\t\t\t\t\tconst targetY = targetNode.y;\n\n\t\t\t\t\t\t\t\tconst midX = sourceX + (targetX - sourceX) * 0.5;\n\t\t\t\t\t\t\t\tconst pathData = `M ${sourceX} ${sourceY} C ${midX} ${sourceY}, ${midX} ${targetY}, ${targetX} ${targetY}`;\n\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\t\tkey={`link-${index}`}\n\t\t\t\t\t\t\t\t\t\tclassName=\"graph-link\"\n\t\t\t\t\t\t\t\t\t\td={pathData}\n\t\t\t\t\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\t\t\t\t\tmarkerEnd=\"url(#arrowhead)\"\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t</g>\n\n\t\t\t\t\t\t<g className=\"nodes\">\n\t\t\t\t\t\t\t{graphData.value.nodes.map(node => {\n\t\t\t\t\t\t\t\tconst radius = getNodeRadius(node);\n\t\t\t\t\t\t\t\tconst maxChars = Math.floor((radius * 2 - 16) / 6.5);\n\t\t\t\t\t\t\t\tconst displayName =\n\t\t\t\t\t\t\t\t\tnode.name.length > maxChars\n\t\t\t\t\t\t\t\t\t\t? node.name.slice(0, maxChars - 1) + \"…\"\n\t\t\t\t\t\t\t\t\t\t: node.name;\n\t\t\t\t\t\t\t\tconst isHovered = hoveredNode.value?.id === node.id;\n\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t<g\n\t\t\t\t\t\t\t\t\t\tkey={node.id}\n\t\t\t\t\t\t\t\t\t\tclassName={`graph-node-group ${isHovered ? \"hovered\" : \"\"}`}\n\t\t\t\t\t\t\t\t\t\tonMouseEnter={(e: MouseEvent) =>\n\t\t\t\t\t\t\t\t\t\t\thandleNodeMouseEnter(node, e)\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tonMouseMove={handleNodeMouseMove}\n\t\t\t\t\t\t\t\t\t\tonMouseLeave={handleNodeMouseLeave}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t<circle\n\t\t\t\t\t\t\t\t\t\t\tclassName={`graph-node ${node.type}`}\n\t\t\t\t\t\t\t\t\t\t\tcx={node.x}\n\t\t\t\t\t\t\t\t\t\t\tcy={node.y}\n\t\t\t\t\t\t\t\t\t\t\tr={radius}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t<text\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"graph-text\"\n\t\t\t\t\t\t\t\t\t\t\tx={node.x}\n\t\t\t\t\t\t\t\t\t\t\ty={node.y}\n\t\t\t\t\t\t\t\t\t\t\ttextAnchor=\"middle\"\n\t\t\t\t\t\t\t\t\t\t\tdominantBaseline=\"central\"\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{displayName}\n\t\t\t\t\t\t\t\t\t\t</text>\n\t\t\t\t\t\t\t\t\t</g>\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t</g>\n\t\t\t\t\t</g>\n\t\t\t\t</svg>\n\n\t\t\t\t<div className=\"graph-controls\">\n\t\t\t\t\t<button\n\t\t\t\t\t\tclassName=\"graph-reset-button\"\n\t\t\t\t\t\tonClick={resetView}\n\t\t\t\t\t\ttitle=\"Reset view\"\n\t\t\t\t\t>\n\t\t\t\t\t\t⟲ Reset View\n\t\t\t\t\t</button>\n\n\t\t\t\t\t<div ref={exportMenuRef} className=\"graph-export-container\">\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\tclassName=\"graph-export-button\"\n\t\t\t\t\t\t\tonClick={toggleExportMenu}\n\t\t\t\t\t\t\ttitle=\"Export graph\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t↓ Export\n\t\t\t\t\t\t</button>\n\t\t\t\t\t\t{showExportMenu.value && (\n\t\t\t\t\t\t\t<div className=\"graph-export-menu\">\n\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\tclassName=\"graph-export-menu-item\"\n\t\t\t\t\t\t\t\t\tonClick={handleExportMermaid}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\tMermaid\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\tclassName=\"graph-export-menu-item\"\n\t\t\t\t\t\t\t\t\tonClick={handleExportJSON}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\tJSON\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div className=\"graph-zoom-indicator\" title=\"Zoom level\">\n\t\t\t\t\t\t{Math.round(zoom.value * 100)}%\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t{toastText.value && (\n\t\t\t\t\t<div className=\"graph-toast\">{toastText.value}</div>\n\t\t\t\t)}\n\n\t\t\t\t{hoveredNode.value && (\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName=\"graph-tooltip\"\n\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\tleft: tooltipPos.value.x + 12,\n\t\t\t\t\t\t\ttop: tooltipPos.value.y - 8,\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t<div className=\"tooltip-header\">\n\t\t\t\t\t\t\t<span className={`tooltip-type ${hoveredNode.value.type}`}>\n\t\t\t\t\t\t\t\t{hoveredNode.value.type}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div className=\"tooltip-name\">{hoveredNode.value.name}</div>\n\t\t\t\t\t\t<div className=\"tooltip-id\">ID: {hoveredNode.value.id}</div>\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\n\t\t\t\t<div className=\"graph-legend\">\n\t\t\t\t\t<div className=\"legend-item\">\n\t\t\t\t\t\t<div className=\"legend-color signal\"></div>\n\t\t\t\t\t\t<span>Signal</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div className=\"legend-item\">\n\t\t\t\t\t\t<div className=\"legend-color computed\"></div>\n\t\t\t\t\t\t<span>Computed</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div className=\"legend-item\">\n\t\t\t\t\t\t<div className=\"legend-color effect\"></div>\n\t\t\t\t\t\t<span>Effect</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div className=\"legend-item\">\n\t\t\t\t\t\t<div className=\"legend-color component\"></div>\n\t\t\t\t\t\t<span>Component</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n","import type { SignalUpdate } from \"../context\";\n\ninterface UpdateItemProps {\n\tupdate: SignalUpdate;\n\tfirstUpdate?: SignalUpdate;\n\tcount?: number;\n}\n\nexport function UpdateItem({ update, count, firstUpdate }: UpdateItemProps) {\n\tconst time = new Date(\n\t\tupdate.timestamp || update.receivedAt\n\t).toLocaleTimeString();\n\n\tconst formatValue = (value: any): string => {\n\t\tif (value === null) return \"null\";\n\t\tif (value === undefined) return \"undefined\";\n\t\tif (typeof value === \"string\") return `\"${value}\"`;\n\t\tif (typeof value === \"function\") return \"function()\";\n\t\tif (typeof value === \"object\") {\n\t\t\ttry {\n\t\t\t\treturn JSON.stringify(value, null, 0);\n\t\t\t} catch {\n\t\t\t\treturn \"[Object]\";\n\t\t\t}\n\t\t}\n\t\treturn String(value);\n\t};\n\tconst countLabel = count && (\n\t\t<span class=\"update-count\" title=\"Number of grouped identical updates\">\n\t\t\tx{count}\n\t\t</span>\n\t);\n\n\tif (update.type === \"effect\" || update.type === \"component\") {\n\t\tconst icon = update.type === \"component\" ? \"🔄\" : \"↪️\";\n\t\tconst label = update.type === \"component\" ? \"Component render\" : \"Effect\";\n\t\treturn (\n\t\t\t<div className={`update-item ${update.type}`}>\n\t\t\t\t<div className=\"update-header\">\n\t\t\t\t\t<span className=\"signal-name\">\n\t\t\t\t\t\t{icon} {update.signalName}\n\t\t\t\t\t\t{countLabel}\n\t\t\t\t\t</span>\n\t\t\t\t\t<span className=\"update-type-badge\">{label}</span>\n\t\t\t\t\t<span className=\"update-time\">{time}</span>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n\n\tconst prevValue = formatValue(update.prevValue);\n\tconst newValue = formatValue(update.newValue);\n\tconst firstValue =\n\t\tfirstUpdate !== undefined ? formatValue(firstUpdate.prevValue) : undefined;\n\n\treturn (\n\t\t<div class={`update-item ${update.type}`}>\n\t\t\t<div class=\"update-header\">\n\t\t\t\t<span class=\"signal-name\">\n\t\t\t\t\t{update.depth === 0 ? \"🎯\" : \"↪️\"} {update.signalName}\n\t\t\t\t\t{countLabel}\n\t\t\t\t</span>\n\t\t\t\t<span class=\"update-time\">{time}</span>\n\t\t\t</div>\n\t\t\t<div class=\"value-change\">\n\t\t\t\t{firstValue && firstValue !== prevValue && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<span class=\"value-prev\">{firstValue}</span>\n\t\t\t\t\t\t<span class=\"value-arrow\">...</span>\n\t\t\t\t\t</>\n\t\t\t\t)}\n\t\t\t\t<span class=\"value-prev\">{prevValue}</span>\n\t\t\t\t<span class=\"value-arrow\">→</span>\n\t\t\t\t<span class=\"value-new\">{newValue}</span>\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n","import { useSignal } from \"@preact/signals\";\nimport type { UpdateTreeNode } from \"../context\";\nimport { UpdateItem } from \"./UpdateItem\";\n\ninterface UpdateTreeNodeProps {\n\tnode: UpdateTreeNode;\n}\n\nexport function UpdateTreeNodeComponent({ node }: UpdateTreeNodeProps) {\n\tconst isCollapsed = useSignal(false);\n\n\tconst toggleCollapse = () => {\n\t\tisCollapsed.value = !isCollapsed.value;\n\t};\n\n\tconst hasChildren = node.children.length > 0;\n\tconst nodeCount = node.type === \"group\" ? node.count : undefined;\n\tconst firstUpdate = node.type === \"group\" ? node.firstUpdate : undefined;\n\n\tlet childrenToRender: UpdateTreeNode[];\n\n\tif (node.type === \"group\" && node.firstChildren) {\n\t\tchildrenToRender = node.children.map((lastChild, index) => {\n\t\t\tconst firstChild = node.firstChildren[index];\n\t\t\tconst mergedChild: UpdateTreeNode = {\n\t\t\t\t...lastChild,\n\t\t\t\ttype: \"group\",\n\t\t\t\tfirstUpdate: firstChild.update,\n\t\t\t\tfirstChildren: firstChild.children,\n\t\t\t\tcount: node.count,\n\t\t\t};\n\t\t\treturn mergedChild;\n\t\t});\n\t} else {\n\t\tchildrenToRender = node.children;\n\t}\n\n\treturn (\n\t\t<div className=\"tree-node\">\n\t\t\t<div className=\"tree-node-content\">\n\t\t\t\t{hasChildren && (\n\t\t\t\t\t<button\n\t\t\t\t\t\tclassName=\"collapse-button\"\n\t\t\t\t\t\tonClick={toggleCollapse}\n\t\t\t\t\t\taria-label={isCollapsed.value ? \"Expand\" : \"Collapse\"}\n\t\t\t\t\t>\n\t\t\t\t\t\t{isCollapsed.value ? \"▶\" : \"▼\"}\n\t\t\t\t\t</button>\n\t\t\t\t)}\n\t\t\t\t{!hasChildren && <div className=\"collapse-spacer\" />}\n\t\t\t\t<div className=\"update-content\">\n\t\t\t\t\t<UpdateItem\n\t\t\t\t\t\tupdate={node.update}\n\t\t\t\t\t\tcount={nodeCount}\n\t\t\t\t\t\tfirstUpdate={firstUpdate}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t{hasChildren && !isCollapsed.value && (\n\t\t\t\t<div className=\"tree-children\">\n\t\t\t\t\t{childrenToRender.map(child => (\n\t\t\t\t\t\t<UpdateTreeNodeComponent key={child.id} node={child} />\n\t\t\t\t\t))}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n","import { useRef } from \"preact/hooks\";\nimport { useSignalEffect } from \"@preact/signals\";\nimport { UpdateTreeNodeComponent } from \"./UpdateTreeNode\";\nimport { getContext } from \"../context\";\n\nexport function UpdatesContainer() {\n\tconst { updatesStore } = getContext();\n\tconst updatesListRef = useRef<HTMLDivElement>(null);\n\tconst updateTree = updatesStore.collapsedUpdateTree.value;\n\n\tuseSignalEffect(() => {\n\t\t// Register scroll restoration\n\t\t// When a new update is added we scroll to top\n\t\t// Access the signal to subscribe to updates\n\t\tupdatesStore.updateTree.value;\n\t\tif (updatesListRef.current) {\n\t\t\tupdatesListRef.current.scrollTop = 0;\n\t\t}\n\t});\n\n\treturn (\n\t\t<div className=\"updates-container\">\n\t\t\t<div className=\"updates-header\">\n\t\t\t\t<div className=\"updates-stats\">\n\t\t\t\t\t<span>\n\t\t\t\t\t\tUpdates: <strong>{updatesStore.totalUpdates.value}</strong>\n\t\t\t\t\t</span>\n\t\t\t\t\t<span>\n\t\t\t\t\t\tSignals: <strong>{updatesStore.signalCounts.value.size}</strong>\n\t\t\t\t\t</span>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<div className=\"updates-list\" ref={updatesListRef}>\n\t\t\t\t{updateTree.map(node => (\n\t\t\t\t\t<UpdateTreeNodeComponent key={node.id} node={node} />\n\t\t\t\t))}\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n","import { render } from \"preact\";\nimport { useSignal } from \"@preact/signals\";\nimport type { DevToolsAdapter } from \"@preact/signals-devtools-adapter\";\nimport { EmptyState } from \"./components/EmptyState\";\nimport { Header } from \"./components/Header\";\nimport { SettingsPanel } from \"./components/SettingsPanel\";\nimport { GraphVisualization } from \"./components/Graph\";\nimport { UpdatesContainer } from \"./components/UpdatesContainer\";\nimport { initDevTools, destroyDevTools, getContext } from \"./context\";\n\nexport interface DevToolsPanelProps {\n\t/** Hide the header (useful for embedded contexts) */\n\thideHeader?: boolean;\n\t/** Initial tab to show */\n\tinitialTab?: \"updates\" | \"graph\";\n}\n\nexport function DevToolsPanel({\n\thideHeader = false,\n\tinitialTab = \"updates\",\n}: DevToolsPanelProps = {}) {\n\tconst { connectionStore } = getContext();\n\tconst activeTab = useSignal<\"updates\" | \"graph\">(initialTab);\n\n\treturn (\n\t\t<div className=\"signals-devtools\">\n\t\t\t{!hideHeader && <Header />}\n\n\t\t\t<SettingsPanel />\n\n\t\t\t<main className=\"main-content\">\n\t\t\t\t<div className=\"tabs\">\n\t\t\t\t\t<button\n\t\t\t\t\t\tclassName={`tab ${activeTab.value === \"updates\" ? \"active\" : \"\"}`}\n\t\t\t\t\t\tonClick={() => (activeTab.value = \"updates\")}\n\t\t\t\t\t>\n\t\t\t\t\t\tUpdates\n\t\t\t\t\t</button>\n\t\t\t\t\t<button\n\t\t\t\t\t\tclassName={`tab ${activeTab.value === \"graph\" ? \"active\" : \"\"}`}\n\t\t\t\t\t\tonClick={() => (activeTab.value = \"graph\")}\n\t\t\t\t\t>\n\t\t\t\t\t\tDependency Graph\n\t\t\t\t\t</button>\n\t\t\t\t</div>\n\t\t\t\t<div className=\"tab-content\">\n\t\t\t\t\t{!connectionStore.isConnected ? (\n\t\t\t\t\t\t<EmptyState onRefresh={connectionStore.refreshConnection} />\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t{activeTab.value === \"updates\" && <UpdatesContainer />}\n\t\t\t\t\t\t\t{activeTab.value === \"graph\" && <GraphVisualization />}\n\t\t\t\t\t\t</>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t</main>\n\t\t</div>\n\t);\n}\n\nexport interface MountOptions extends DevToolsPanelProps {\n\t/** The adapter to use for communication */\n\tadapter: DevToolsAdapter;\n\t/** The container element to render into */\n\tcontainer: HTMLElement;\n}\n\n/**\n * Mount the DevTools UI into a container element.\n *\n * @example\n * ```tsx\n * import { mount } from \"@preact/signals-devtools-ui\";\n * import { createDirectAdapter } from \"@preact/signals-devtools-adapter\";\n *\n * const adapter = createDirectAdapter();\n *\n * const unmount = await mount({\n * adapter,\n * container: document.getElementById(\"devtools\")!,\n * });\n *\n * // Later, to cleanup:\n * unmount();\n * ```\n */\nexport async function mount(options: MountOptions): Promise<() => void> {\n\tconst { adapter, container, ...panelProps } = options;\n\n\t// Initialize context with adapter\n\tinitDevTools(adapter);\n\n\t// Connect the adapter\n\tawait adapter.connect();\n\n\t// Clear existing content\n\tcontainer.innerHTML = \"\";\n\n\t// Render the panel\n\trender(<DevToolsPanel {...panelProps} />, container);\n\n\t// Return cleanup function\n\treturn () => {\n\t\trender(null, container);\n\t\tdestroyDevTools();\n\t};\n}\n"],"names":["n","l","u","t","i","r","o","e","f","c","s","a","p","v","y","w","Array","isArray","d","g","parentNode","removeChild","m","type","props","key","ref","__k","__","__b","__e","__c","constructor","__v","__i","__u","vnode","k","children","x","this","context","S","length","C","base","M","__d","push","$","__r","debounceRendering","sort","shift","__P","O","__n","namespaceURI","N","I","h","_","b","String","L","D","P","B","A","nextSibling","insertBefore","nodeType","T","setProperty","test","j","style","cssText","replace","toLowerCase","slice","addEventListener","removeEventListener","removeAttribute","setAttribute","F","event","H","prototype","render","contextType","value","__E","E","sub","state","__h","_sb","__s","getDerivedStateFromProps","componentWillMount","componentDidMount","componentWillReceiveProps","shouldComponentUpdate","some","componentWillUpdate","componentDidUpdate","getChildContext","getSnapshotBeforeUpdate","V","then","indexOf","z","localName","document","createTextNode","createElementNS","is","__m","data","call","childNodes","attributes","name","__html","innerHTML","content","q","diffed","forEach","map","current","unmount","componentWillUnmount","G","documentElement","arguments","defaultProps","firstChild","getDerivedStateFromError","setState","componentDidCatch","forceUpdate","Promise","bind","resolve","setTimeout","__source","__self","__H","__N","requestAnimationFrame","filter","clearTimeout","cancelAnimationFrame","Symbol","for","W","watched","Z","unwatched","brand","U","subscribe","valueOf","toString","toJSON","peek","Object","defineProperty","get","set","Error","dispose","window","__PREACT_SIGNALS_DEVTOOLS__","useSignal","__$f","__$u","displayName","defineProperties","configurable","__np","ownerSVGElement","__R","__f","queueMicrotask","useSignalEffect","Button","onClick","className","disabled","variant","popovertarget","active","_jsx","trim","EmptyState","onRefresh","title","description","buttonText","_jsxs","StatusIndicator","status","message","showIndicator","currentContext","getContext","createConnectionStore","adapter","signal","isConnected","on","connectionStatus","available","refreshConnection","requestState","nodesAreEqual","update","signalId","every","child","index","createUpdatesStore","settingsStore","updates","isPaused","disposedSignalIds","Set","addUpdate","item","receivedAt","Date","now","hasUpdates","computed","signalCounts","counts","Map","signalName","updateTree","tree","stack","recentUpdates","reverse","depth","node","id","hasChildren","pop","parent","buildTree","signalUpdates","updatesArray","disposals","disposal","newDisposed","add","addDisposal","collapsedUpdateTree","updateTreeValue","settings","grouped","nodes","lastNode","_extends","count","firstUpdate","firstChildren","collapseTree","totalUpdates","keys","clearUpdates","createSettingsStore","enabled","consoleLogging","maxUpdatesPerSecond","filterPatterns","showDisposedSignals","config","newSettings","applySettings","sendConfig","toggleShowDisposedSignals","initDevTools","updatesStore","connectionStore","themeStore","_mediaQuery$matches","theme","val","localStorage","getItem","_unused","mediaQuery","matchMedia","systemIsDark","matches","handler","resolvedTheme","effect","resolved","el","querySelector","HTMLElement","dataset","toggleTheme","order","idx","setItem","_unused2","createThemeStore","destroyDevTools","disconnect","themeLabels","auto","light","dark","themeIcons","Header","onTogglePause","onClear","SettingsPanel","popover","useRef","onApply","localSettings","checked","onChange","target","htmlFor","min","max","parseInt","placeholder","join","split","pattern","handleApply","onCancel","_popover$current","hide","copyToClipboard","text","copyEl","createElement","body","append","select","execCommand","remove","GraphVisualization","svgRef","containerRef","exportMenuRef","panOffset","zoom","isPanning","startPan","showExportMenu","toastText","hoveredNode","tooltipPos","useEffect","handleClickOutside","contains","graphData","useComputed","rawUpdates","disposed","showDisposed","links","has","signalType","allDependencies","dep","linkKey","source","subscribedTo","allLinks","from","values","nodeLayers","computeNodeLayers","layers","adjacency","inDegree","link","_adjacency$get","queue","_adjacency$get2","nodeId","currentLayer","targetId","_layers$get","targetLayer","Math","newInDegree","_nodeLayers$get","nodesByLayer","minimizeCrossings","targets","sources","nodePositions","pass","layer","barycenters","preds","reduce","acc","predId","_nodePositions$get","sorted","barycenter","succs","succId","_nodePositions$get2","layerNodes","layerStartY","size","handleMouseUp","mermaidIdPattern","computeMermaidId","getNodeRadius","textWidth","handleNodeMouseMove","container","rect","getBoundingClientRect","clientX","left","clientY","top","handleNodeMouseLeave","showToast","undefined","svgWidth","svgHeight","onMouseDown","button","onMouseMove","onMouseUp","onMouseLeave","onWheel","preventDefault","mouseX","mouseY","delta","deltaY","newZoom","zoomRatio","cursor","width","height","viewBox","markerWidth","markerHeight","refX","refY","orient","points","transform","sourceNode","find","targetNode","sourceRadius","targetRadius","sourceX","sourceY","targetX","targetY","midX","fill","markerEnd","_hoveredNode$value","radius","maxChars","floor","onMouseEnter","handleNodeMouseEnter","cx","cy","textAnchor","dominantBaseline","resetView","toggleExportMenu","async","lines","sourceId","JSON","stringify","round","UpdateItem","time","timestamp","toLocaleTimeString","formatValue","countLabel","class","icon","label","prevValue","newValue","firstValue","_Fragment","UpdateTreeNodeComponent","isCollapsed","nodeCount","childrenToRender","lastChild","mergedChild","toggleCollapse","UpdatesContainer","updatesListRef","scrollTop","DevToolsPanel","hideHeader","initialTab","activeTab","mount","options","panelProps","_objectWithoutPropertiesLoose","_excluded","connect"],"mappings":"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"}
1
+ {"version":3,"file":"devtools-ui.mjs","sources":["../../../node_modules/.pnpm/preact@10.27.2/node_modules/preact/dist/preact.module.js","../../../node_modules/.pnpm/preact@10.27.2/node_modules/preact/jsx-runtime/dist/jsxRuntime.module.js","../../../node_modules/.pnpm/preact@10.27.2/node_modules/preact/hooks/dist/hooks.module.js","../../core/dist/signals-core.module.js","../../preact/dist/signals.module.js","../src/components/Button.tsx","../src/components/EmptyState.tsx","../src/components/StatusIndicator.tsx","../src/models/ConnectionModel.ts","../src/models/SettingsModel.ts","../src/models/ThemeModel.ts","../src/models/UpdatesModel.ts","../src/context.ts","../src/components/Header.tsx","../src/components/SettingsPanel.tsx","../src/components/Graph.tsx","../src/components/UpdateItem.tsx","../src/components/UpdateTreeNode.tsx","../src/components/UpdatesContainer.tsx","../src/DevToolsPanel.tsx"],"sourcesContent":["var n,l,u,t,i,r,o,e,f,c,s,a,h,p={},v=[],y=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,w=Array.isArray;function d(n,l){for(var u in l)n[u]=l[u];return n}function g(n){n&&n.parentNode&&n.parentNode.removeChild(n)}function _(l,u,t){var i,r,o,e={};for(o in u)\"key\"==o?i=u[o]:\"ref\"==o?r=u[o]:e[o]=u[o];if(arguments.length>2&&(e.children=arguments.length>3?n.call(arguments,2):t),\"function\"==typeof l&&null!=l.defaultProps)for(o in l.defaultProps)void 0===e[o]&&(e[o]=l.defaultProps[o]);return m(l,e,i,r,null)}function m(n,t,i,r,o){var e={type:n,props:t,key:i,ref:r,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:null==o?++u:o,__i:-1,__u:0};return null==o&&null!=l.vnode&&l.vnode(e),e}function b(){return{current:null}}function k(n){return n.children}function x(n,l){this.props=n,this.context=l}function S(n,l){if(null==l)return n.__?S(n.__,n.__i+1):null;for(var u;l<n.__k.length;l++)if(null!=(u=n.__k[l])&&null!=u.__e)return u.__e;return\"function\"==typeof n.type?S(n):null}function C(n){var l,u;if(null!=(n=n.__)&&null!=n.__c){for(n.__e=n.__c.base=null,l=0;l<n.__k.length;l++)if(null!=(u=n.__k[l])&&null!=u.__e){n.__e=n.__c.base=u.__e;break}return C(n)}}function M(n){(!n.__d&&(n.__d=!0)&&i.push(n)&&!$.__r++||r!=l.debounceRendering)&&((r=l.debounceRendering)||o)($)}function $(){for(var n,u,t,r,o,f,c,s=1;i.length;)i.length>s&&i.sort(e),n=i.shift(),s=i.length,n.__d&&(t=void 0,r=void 0,o=(r=(u=n).__v).__e,f=[],c=[],u.__P&&((t=d({},r)).__v=r.__v+1,l.vnode&&l.vnode(t),O(u.__P,t,r,u.__n,u.__P.namespaceURI,32&r.__u?[o]:null,f,null==o?S(r):o,!!(32&r.__u),c),t.__v=r.__v,t.__.__k[t.__i]=t,N(f,t,c),r.__e=r.__=null,t.__e!=o&&C(t)));$.__r=0}function I(n,l,u,t,i,r,o,e,f,c,s){var a,h,y,w,d,g,_,m=t&&t.__k||v,b=l.length;for(f=P(u,l,m,f,b),a=0;a<b;a++)null!=(y=u.__k[a])&&(h=-1==y.__i?p:m[y.__i]||p,y.__i=a,g=O(n,y,h,i,r,o,e,f,c,s),w=y.__e,y.ref&&h.ref!=y.ref&&(h.ref&&B(h.ref,null,y),s.push(y.ref,y.__c||w,y)),null==d&&null!=w&&(d=w),(_=!!(4&y.__u))||h.__k===y.__k?f=A(y,f,n,_):\"function\"==typeof y.type&&void 0!==g?f=g:w&&(f=w.nextSibling),y.__u&=-7);return u.__e=d,f}function P(n,l,u,t,i){var r,o,e,f,c,s=u.length,a=s,h=0;for(n.__k=new Array(i),r=0;r<i;r++)null!=(o=l[r])&&\"boolean\"!=typeof o&&\"function\"!=typeof o?(f=r+h,(o=n.__k[r]=\"string\"==typeof o||\"number\"==typeof o||\"bigint\"==typeof o||o.constructor==String?m(null,o,null,null,null):w(o)?m(k,{children:o},null,null,null):null==o.constructor&&o.__b>0?m(o.type,o.props,o.key,o.ref?o.ref:null,o.__v):o).__=n,o.__b=n.__b+1,e=null,-1!=(c=o.__i=L(o,u,f,a))&&(a--,(e=u[c])&&(e.__u|=2)),null==e||null==e.__v?(-1==c&&(i>s?h--:i<s&&h++),\"function\"!=typeof o.type&&(o.__u|=4)):c!=f&&(c==f-1?h--:c==f+1?h++:(c>f?h--:h++,o.__u|=4))):n.__k[r]=null;if(a)for(r=0;r<s;r++)null!=(e=u[r])&&0==(2&e.__u)&&(e.__e==t&&(t=S(e)),D(e,e));return t}function A(n,l,u,t){var i,r;if(\"function\"==typeof n.type){for(i=n.__k,r=0;i&&r<i.length;r++)i[r]&&(i[r].__=n,l=A(i[r],l,u,t));return l}n.__e!=l&&(t&&(l&&n.type&&!l.parentNode&&(l=S(n)),u.insertBefore(n.__e,l||null)),l=n.__e);do{l=l&&l.nextSibling}while(null!=l&&8==l.nodeType);return l}function H(n,l){return l=l||[],null==n||\"boolean\"==typeof n||(w(n)?n.some(function(n){H(n,l)}):l.push(n)),l}function L(n,l,u,t){var i,r,o,e=n.key,f=n.type,c=l[u],s=null!=c&&0==(2&c.__u);if(null===c&&null==n.key||s&&e==c.key&&f==c.type)return u;if(t>(s?1:0))for(i=u-1,r=u+1;i>=0||r<l.length;)if(null!=(c=l[o=i>=0?i--:r++])&&0==(2&c.__u)&&e==c.key&&f==c.type)return o;return-1}function T(n,l,u){\"-\"==l[0]?n.setProperty(l,null==u?\"\":u):n[l]=null==u?\"\":\"number\"!=typeof u||y.test(l)?u:u+\"px\"}function j(n,l,u,t,i){var r,o;n:if(\"style\"==l)if(\"string\"==typeof u)n.style.cssText=u;else{if(\"string\"==typeof t&&(n.style.cssText=t=\"\"),t)for(l in t)u&&l in u||T(n.style,l,\"\");if(u)for(l in u)t&&u[l]==t[l]||T(n.style,l,u[l])}else if(\"o\"==l[0]&&\"n\"==l[1])r=l!=(l=l.replace(f,\"$1\")),o=l.toLowerCase(),l=o in n||\"onFocusOut\"==l||\"onFocusIn\"==l?o.slice(2):l.slice(2),n.l||(n.l={}),n.l[l+r]=u,u?t?u.u=t.u:(u.u=c,n.addEventListener(l,r?a:s,r)):n.removeEventListener(l,r?a:s,r);else{if(\"http://www.w3.org/2000/svg\"==i)l=l.replace(/xlink(H|:h)/,\"h\").replace(/sName$/,\"s\");else if(\"width\"!=l&&\"height\"!=l&&\"href\"!=l&&\"list\"!=l&&\"form\"!=l&&\"tabIndex\"!=l&&\"download\"!=l&&\"rowSpan\"!=l&&\"colSpan\"!=l&&\"role\"!=l&&\"popover\"!=l&&l in n)try{n[l]=null==u?\"\":u;break n}catch(n){}\"function\"==typeof u||(null==u||!1===u&&\"-\"!=l[4]?n.removeAttribute(l):n.setAttribute(l,\"popover\"==l&&1==u?\"\":u))}}function F(n){return function(u){if(this.l){var t=this.l[u.type+n];if(null==u.t)u.t=c++;else if(u.t<t.u)return;return t(l.event?l.event(u):u)}}}function O(n,u,t,i,r,o,e,f,c,s){var a,h,p,v,y,_,m,b,S,C,M,$,P,A,H,L,T,j=u.type;if(null!=u.constructor)return null;128&t.__u&&(c=!!(32&t.__u),o=[f=u.__e=t.__e]),(a=l.__b)&&a(u);n:if(\"function\"==typeof j)try{if(b=u.props,S=\"prototype\"in j&&j.prototype.render,C=(a=j.contextType)&&i[a.__c],M=a?C?C.props.value:a.__:i,t.__c?m=(h=u.__c=t.__c).__=h.__E:(S?u.__c=h=new j(b,M):(u.__c=h=new x(b,M),h.constructor=j,h.render=E),C&&C.sub(h),h.props=b,h.state||(h.state={}),h.context=M,h.__n=i,p=h.__d=!0,h.__h=[],h._sb=[]),S&&null==h.__s&&(h.__s=h.state),S&&null!=j.getDerivedStateFromProps&&(h.__s==h.state&&(h.__s=d({},h.__s)),d(h.__s,j.getDerivedStateFromProps(b,h.__s))),v=h.props,y=h.state,h.__v=u,p)S&&null==j.getDerivedStateFromProps&&null!=h.componentWillMount&&h.componentWillMount(),S&&null!=h.componentDidMount&&h.__h.push(h.componentDidMount);else{if(S&&null==j.getDerivedStateFromProps&&b!==v&&null!=h.componentWillReceiveProps&&h.componentWillReceiveProps(b,M),!h.__e&&null!=h.shouldComponentUpdate&&!1===h.shouldComponentUpdate(b,h.__s,M)||u.__v==t.__v){for(u.__v!=t.__v&&(h.props=b,h.state=h.__s,h.__d=!1),u.__e=t.__e,u.__k=t.__k,u.__k.some(function(n){n&&(n.__=u)}),$=0;$<h._sb.length;$++)h.__h.push(h._sb[$]);h._sb=[],h.__h.length&&e.push(h);break n}null!=h.componentWillUpdate&&h.componentWillUpdate(b,h.__s,M),S&&null!=h.componentDidUpdate&&h.__h.push(function(){h.componentDidUpdate(v,y,_)})}if(h.context=M,h.props=b,h.__P=n,h.__e=!1,P=l.__r,A=0,S){for(h.state=h.__s,h.__d=!1,P&&P(u),a=h.render(h.props,h.state,h.context),H=0;H<h._sb.length;H++)h.__h.push(h._sb[H]);h._sb=[]}else do{h.__d=!1,P&&P(u),a=h.render(h.props,h.state,h.context),h.state=h.__s}while(h.__d&&++A<25);h.state=h.__s,null!=h.getChildContext&&(i=d(d({},i),h.getChildContext())),S&&!p&&null!=h.getSnapshotBeforeUpdate&&(_=h.getSnapshotBeforeUpdate(v,y)),L=a,null!=a&&a.type===k&&null==a.key&&(L=V(a.props.children)),f=I(n,w(L)?L:[L],u,t,i,r,o,e,f,c,s),h.base=u.__e,u.__u&=-161,h.__h.length&&e.push(h),m&&(h.__E=h.__=null)}catch(n){if(u.__v=null,c||null!=o)if(n.then){for(u.__u|=c?160:128;f&&8==f.nodeType&&f.nextSibling;)f=f.nextSibling;o[o.indexOf(f)]=null,u.__e=f}else{for(T=o.length;T--;)g(o[T]);z(u)}else u.__e=t.__e,u.__k=t.__k,n.then||z(u);l.__e(n,u,t)}else null==o&&u.__v==t.__v?(u.__k=t.__k,u.__e=t.__e):f=u.__e=q(t.__e,u,t,i,r,o,e,c,s);return(a=l.diffed)&&a(u),128&u.__u?void 0:f}function z(n){n&&n.__c&&(n.__c.__e=!0),n&&n.__k&&n.__k.forEach(z)}function N(n,u,t){for(var i=0;i<t.length;i++)B(t[i],t[++i],t[++i]);l.__c&&l.__c(u,n),n.some(function(u){try{n=u.__h,u.__h=[],n.some(function(n){n.call(u)})}catch(n){l.__e(n,u.__v)}})}function V(n){return\"object\"!=typeof n||null==n||n.__b&&n.__b>0?n:w(n)?n.map(V):d({},n)}function q(u,t,i,r,o,e,f,c,s){var a,h,v,y,d,_,m,b=i.props,k=t.props,x=t.type;if(\"svg\"==x?o=\"http://www.w3.org/2000/svg\":\"math\"==x?o=\"http://www.w3.org/1998/Math/MathML\":o||(o=\"http://www.w3.org/1999/xhtml\"),null!=e)for(a=0;a<e.length;a++)if((d=e[a])&&\"setAttribute\"in d==!!x&&(x?d.localName==x:3==d.nodeType)){u=d,e[a]=null;break}if(null==u){if(null==x)return document.createTextNode(k);u=document.createElementNS(o,x,k.is&&k),c&&(l.__m&&l.__m(t,e),c=!1),e=null}if(null==x)b===k||c&&u.data==k||(u.data=k);else{if(e=e&&n.call(u.childNodes),b=i.props||p,!c&&null!=e)for(b={},a=0;a<u.attributes.length;a++)b[(d=u.attributes[a]).name]=d.value;for(a in b)if(d=b[a],\"children\"==a);else if(\"dangerouslySetInnerHTML\"==a)v=d;else if(!(a in k)){if(\"value\"==a&&\"defaultValue\"in k||\"checked\"==a&&\"defaultChecked\"in k)continue;j(u,a,null,d,o)}for(a in k)d=k[a],\"children\"==a?y=d:\"dangerouslySetInnerHTML\"==a?h=d:\"value\"==a?_=d:\"checked\"==a?m=d:c&&\"function\"!=typeof d||b[a]===d||j(u,a,d,b[a],o);if(h)c||v&&(h.__html==v.__html||h.__html==u.innerHTML)||(u.innerHTML=h.__html),t.__k=[];else if(v&&(u.innerHTML=\"\"),I(\"template\"==t.type?u.content:u,w(y)?y:[y],t,i,r,\"foreignObject\"==x?\"http://www.w3.org/1999/xhtml\":o,e,f,e?e[0]:i.__k&&S(i,0),c,s),null!=e)for(a=e.length;a--;)g(e[a]);c||(a=\"value\",\"progress\"==x&&null==_?u.removeAttribute(\"value\"):null!=_&&(_!==u[a]||\"progress\"==x&&!_||\"option\"==x&&_!=b[a])&&j(u,a,_,b[a],o),a=\"checked\",null!=m&&m!=u[a]&&j(u,a,m,b[a],o))}return u}function B(n,u,t){try{if(\"function\"==typeof n){var i=\"function\"==typeof n.__u;i&&n.__u(),i&&null==u||(n.__u=n(u))}else n.current=u}catch(n){l.__e(n,t)}}function D(n,u,t){var i,r;if(l.unmount&&l.unmount(n),(i=n.ref)&&(i.current&&i.current!=n.__e||B(i,null,u)),null!=(i=n.__c)){if(i.componentWillUnmount)try{i.componentWillUnmount()}catch(n){l.__e(n,u)}i.base=i.__P=null}if(i=n.__k)for(r=0;r<i.length;r++)i[r]&&D(i[r],u,t||\"function\"!=typeof n.type);t||g(n.__e),n.__c=n.__=n.__e=void 0}function E(n,l,u){return this.constructor(n,u)}function G(u,t,i){var r,o,e,f;t==document&&(t=document.documentElement),l.__&&l.__(u,t),o=(r=\"function\"==typeof i)?null:i&&i.__k||t.__k,e=[],f=[],O(t,u=(!r&&i||t).__k=_(k,null,[u]),o||p,p,t.namespaceURI,!r&&i?[i]:o?null:t.firstChild?n.call(t.childNodes):null,e,!r&&i?i:o?o.__e:t.firstChild,r,f),N(e,u,f)}function J(n,l){G(n,l,J)}function K(l,u,t){var i,r,o,e,f=d({},l.props);for(o in l.type&&l.type.defaultProps&&(e=l.type.defaultProps),u)\"key\"==o?i=u[o]:\"ref\"==o?r=u[o]:f[o]=void 0===u[o]&&null!=e?e[o]:u[o];return arguments.length>2&&(f.children=arguments.length>3?n.call(arguments,2):t),m(l.type,f,i||l.key,r||l.ref,null)}function Q(n){function l(n){var u,t;return this.getChildContext||(u=new Set,(t={})[l.__c]=this,this.getChildContext=function(){return t},this.componentWillUnmount=function(){u=null},this.shouldComponentUpdate=function(n){this.props.value!=n.value&&u.forEach(function(n){n.__e=!0,M(n)})},this.sub=function(n){u.add(n);var l=n.componentWillUnmount;n.componentWillUnmount=function(){u&&u.delete(n),l&&l.call(n)}}),n.children}return l.__c=\"__cC\"+h++,l.__=n,l.Provider=l.__l=(l.Consumer=function(n,l){return n.children(l)}).contextType=l,l}n=v.slice,l={__e:function(n,l,u,t){for(var i,r,o;l=l.__;)if((i=l.__c)&&!i.__)try{if((r=i.constructor)&&null!=r.getDerivedStateFromError&&(i.setState(r.getDerivedStateFromError(n)),o=i.__d),null!=i.componentDidCatch&&(i.componentDidCatch(n,t||{}),o=i.__d),o)return i.__E=i}catch(l){n=l}throw n}},u=0,t=function(n){return null!=n&&null==n.constructor},x.prototype.setState=function(n,l){var u;u=null!=this.__s&&this.__s!=this.state?this.__s:this.__s=d({},this.state),\"function\"==typeof n&&(n=n(d({},u),this.props)),n&&d(u,n),null!=n&&this.__v&&(l&&this._sb.push(l),M(this))},x.prototype.forceUpdate=function(n){this.__v&&(this.__e=!0,n&&this.__h.push(n),M(this))},x.prototype.render=k,i=[],o=\"function\"==typeof Promise?Promise.prototype.then.bind(Promise.resolve()):setTimeout,e=function(n,l){return n.__v.__b-l.__v.__b},$.__r=0,f=/(PointerCapture)$|Capture$/i,c=0,s=F(!1),a=F(!0),h=0;export{x as Component,k as Fragment,K as cloneElement,Q as createContext,_ as createElement,b as createRef,_ as h,J as hydrate,t as isValidElement,l as options,G as render,H as toChildArray};\n//# sourceMappingURL=preact.module.js.map\n","import{options as r,Fragment as e}from\"preact\";export{Fragment}from\"preact\";var t=/[\"&<]/;function n(r){if(0===r.length||!1===t.test(r))return r;for(var e=0,n=0,o=\"\",f=\"\";n<r.length;n++){switch(r.charCodeAt(n)){case 34:f=\"&quot;\";break;case 38:f=\"&amp;\";break;case 60:f=\"&lt;\";break;default:continue}n!==e&&(o+=r.slice(e,n)),o+=f,e=n+1}return n!==e&&(o+=r.slice(e,n)),o}var o=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,f=0,i=Array.isArray;function u(e,t,n,o,i,u){t||(t={});var a,c,p=t;if(\"ref\"in p)for(c in p={},t)\"ref\"==c?a=t[c]:p[c]=t[c];var l={type:e,props:p,key:n,ref:a,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:--f,__i:-1,__u:0,__source:i,__self:u};if(\"function\"==typeof e&&(a=e.defaultProps))for(c in a)void 0===p[c]&&(p[c]=a[c]);return r.vnode&&r.vnode(l),l}function a(r){var t=u(e,{tpl:r,exprs:[].slice.call(arguments,1)});return t.key=t.__v,t}var c={},p=/[A-Z]/g;function l(e,t){if(r.attr){var f=r.attr(e,t);if(\"string\"==typeof f)return f}if(t=function(r){return null!==r&&\"object\"==typeof r&&\"function\"==typeof r.valueOf?r.valueOf():r}(t),\"ref\"===e||\"key\"===e)return\"\";if(\"style\"===e&&\"object\"==typeof t){var i=\"\";for(var u in t){var a=t[u];if(null!=a&&\"\"!==a){var l=\"-\"==u[0]?u:c[u]||(c[u]=u.replace(p,\"-$&\").toLowerCase()),s=\";\";\"number\"!=typeof a||l.startsWith(\"--\")||o.test(l)||(s=\"px;\"),i=i+l+\":\"+a+s}}return e+'=\"'+n(i)+'\"'}return null==t||!1===t||\"function\"==typeof t||\"object\"==typeof t?\"\":!0===t?e:e+'=\"'+n(\"\"+t)+'\"'}function s(r){if(null==r||\"boolean\"==typeof r||\"function\"==typeof r)return null;if(\"object\"==typeof r){if(void 0===r.constructor)return r;if(i(r)){for(var e=0;e<r.length;e++)r[e]=s(r[e]);return r}}return n(\"\"+r)}export{u as jsx,l as jsxAttr,u as jsxDEV,s as jsxEscape,a as jsxTemplate,u as jsxs};\n//# sourceMappingURL=jsxRuntime.module.js.map\n","import{options as n}from\"preact\";var t,r,u,i,o=0,f=[],c=n,e=c.__b,a=c.__r,v=c.diffed,l=c.__c,m=c.unmount,s=c.__;function p(n,t){c.__h&&c.__h(r,n,o||t),o=0;var u=r.__H||(r.__H={__:[],__h:[]});return n>=u.__.length&&u.__.push({}),u.__[n]}function d(n){return o=1,h(D,n)}function h(n,u,i){var o=p(t++,2);if(o.t=n,!o.__c&&(o.__=[i?i(u):D(void 0,u),function(n){var t=o.__N?o.__N[0]:o.__[0],r=o.t(t,n);t!==r&&(o.__N=[r,o.__[1]],o.__c.setState({}))}],o.__c=r,!r.__f)){var f=function(n,t,r){if(!o.__c.__H)return!0;var u=o.__c.__H.__.filter(function(n){return!!n.__c});if(u.every(function(n){return!n.__N}))return!c||c.call(this,n,t,r);var i=o.__c.props!==n;return u.forEach(function(n){if(n.__N){var t=n.__[0];n.__=n.__N,n.__N=void 0,t!==n.__[0]&&(i=!0)}}),c&&c.call(this,n,t,r)||i};r.__f=!0;var c=r.shouldComponentUpdate,e=r.componentWillUpdate;r.componentWillUpdate=function(n,t,r){if(this.__e){var u=c;c=void 0,f(n,t,r),c=u}e&&e.call(this,n,t,r)},r.shouldComponentUpdate=f}return o.__N||o.__}function y(n,u){var i=p(t++,3);!c.__s&&C(i.__H,u)&&(i.__=n,i.u=u,r.__H.__h.push(i))}function _(n,u){var i=p(t++,4);!c.__s&&C(i.__H,u)&&(i.__=n,i.u=u,r.__h.push(i))}function A(n){return o=5,T(function(){return{current:n}},[])}function F(n,t,r){o=6,_(function(){if(\"function\"==typeof n){var r=n(t());return function(){n(null),r&&\"function\"==typeof r&&r()}}if(n)return n.current=t(),function(){return n.current=null}},null==r?r:r.concat(n))}function T(n,r){var u=p(t++,7);return C(u.__H,r)&&(u.__=n(),u.__H=r,u.__h=n),u.__}function q(n,t){return o=8,T(function(){return n},t)}function x(n){var u=r.context[n.__c],i=p(t++,9);return i.c=n,u?(null==i.__&&(i.__=!0,u.sub(r)),u.props.value):n.__}function P(n,t){c.useDebugValue&&c.useDebugValue(t?t(n):n)}function b(n){var u=p(t++,10),i=d();return u.__=n,r.componentDidCatch||(r.componentDidCatch=function(n,t){u.__&&u.__(n,t),i[1](n)}),[i[0],function(){i[1](void 0)}]}function g(){var n=p(t++,11);if(!n.__){for(var u=r.__v;null!==u&&!u.__m&&null!==u.__;)u=u.__;var i=u.__m||(u.__m=[0,0]);n.__=\"P\"+i[0]+\"-\"+i[1]++}return n.__}function j(){for(var n;n=f.shift();)if(n.__P&&n.__H)try{n.__H.__h.forEach(z),n.__H.__h.forEach(B),n.__H.__h=[]}catch(t){n.__H.__h=[],c.__e(t,n.__v)}}c.__b=function(n){r=null,e&&e(n)},c.__=function(n,t){n&&t.__k&&t.__k.__m&&(n.__m=t.__k.__m),s&&s(n,t)},c.__r=function(n){a&&a(n),t=0;var i=(r=n.__c).__H;i&&(u===r?(i.__h=[],r.__h=[],i.__.forEach(function(n){n.__N&&(n.__=n.__N),n.u=n.__N=void 0})):(i.__h.forEach(z),i.__h.forEach(B),i.__h=[],t=0)),u=r},c.diffed=function(n){v&&v(n);var t=n.__c;t&&t.__H&&(t.__H.__h.length&&(1!==f.push(t)&&i===c.requestAnimationFrame||((i=c.requestAnimationFrame)||w)(j)),t.__H.__.forEach(function(n){n.u&&(n.__H=n.u),n.u=void 0})),u=r=null},c.__c=function(n,t){t.some(function(n){try{n.__h.forEach(z),n.__h=n.__h.filter(function(n){return!n.__||B(n)})}catch(r){t.some(function(n){n.__h&&(n.__h=[])}),t=[],c.__e(r,n.__v)}}),l&&l(n,t)},c.unmount=function(n){m&&m(n);var t,r=n.__c;r&&r.__H&&(r.__H.__.forEach(function(n){try{z(n)}catch(n){t=n}}),r.__H=void 0,t&&c.__e(t,r.__v))};var k=\"function\"==typeof requestAnimationFrame;function w(n){var t,r=function(){clearTimeout(u),k&&cancelAnimationFrame(t),setTimeout(n)},u=setTimeout(r,35);k&&(t=requestAnimationFrame(r))}function z(n){var t=r,u=n.__c;\"function\"==typeof u&&(n.__c=void 0,u()),r=t}function B(n){var t=r;n.__c=n.__(),r=t}function C(n,t){return!n||n.length!==t.length||t.some(function(t,r){return t!==n[r]})}function D(n,t){return\"function\"==typeof t?t(n):t}export{q as useCallback,x as useContext,P as useDebugValue,y as useEffect,b as useErrorBoundary,g as useId,F as useImperativeHandle,_ as useLayoutEffect,T as useMemo,h as useReducer,A as useRef,d as useState};\n//# sourceMappingURL=hooks.module.js.map\n","var i=Symbol.for(\"preact-signals\");function t(){if(!(s>1)){var i,t=!1;while(void 0!==h){var n=h;h=void 0;v++;while(void 0!==n){var r=n.o;n.o=void 0;n.f&=-3;if(!(8&n.f)&&a(n))try{n.c()}catch(n){if(!t){i=n;t=!0}}n=r}}v=0;s--;if(t)throw i}else s--}function n(i){if(s>0)return i();s++;try{return i()}finally{t()}}var r=void 0;function o(i){var t=r;r=void 0;try{return i()}finally{r=t}}var f,h=void 0,s=0,v=0,u=0;function e(i){if(void 0!==r){var t=i.n;if(void 0===t||t.t!==r){t={i:0,S:i,p:r.s,n:void 0,t:r,e:void 0,x:void 0,r:t};if(void 0!==r.s)r.s.n=t;r.s=t;i.n=t;if(32&r.f)i.S(t);return t}else if(-1===t.i){t.i=0;if(void 0!==t.n){t.n.p=t.p;if(void 0!==t.p)t.p.n=t.n;t.p=r.s;t.n=void 0;r.s.n=t;r.s=t}return t}}}function d(i,t){this.v=i;this.i=0;this.n=void 0;this.t=void 0;this.W=null==t?void 0:t.watched;this.Z=null==t?void 0:t.unwatched;this.name=null==t?void 0:t.name}d.prototype.brand=i;d.prototype.h=function(){return!0};d.prototype.S=function(i){var t=this,n=this.t;if(n!==i&&void 0===i.e){i.x=n;this.t=i;if(void 0!==n)n.e=i;else o(function(){var i;null==(i=t.W)||i.call(t)})}};d.prototype.U=function(i){var t=this;if(void 0!==this.t){var n=i.e,r=i.x;if(void 0!==n){n.x=r;i.e=void 0}if(void 0!==r){r.e=n;i.x=void 0}if(i===this.t){this.t=r;if(void 0===r)o(function(){var i;null==(i=t.Z)||i.call(t)})}}};d.prototype.subscribe=function(i){var t=this;return m(function(){var n=t.value,o=r;r=void 0;try{i(n)}finally{r=o}},{name:\"sub\"})};d.prototype.valueOf=function(){return this.value};d.prototype.toString=function(){return this.value+\"\"};d.prototype.toJSON=function(){return this.value};d.prototype.peek=function(){var i=r;r=void 0;try{return this.value}finally{r=i}};Object.defineProperty(d.prototype,\"value\",{get:function(){var i=e(this);if(void 0!==i)i.i=this.i;return this.v},set:function(i){if(i!==this.v){if(v>100)throw new Error(\"Cycle detected\");this.v=i;this.i++;u++;s++;try{for(var n=this.t;void 0!==n;n=n.x)n.t.N()}finally{t()}}}});function c(i,t){return new d(i,t)}function a(i){for(var t=i.s;void 0!==t;t=t.n)if(t.S.i!==t.i||!t.S.h()||t.S.i!==t.i)return!0;return!1}function l(i){for(var t=i.s;void 0!==t;t=t.n){var n=t.S.n;if(void 0!==n)t.r=n;t.S.n=t;t.i=-1;if(void 0===t.n){i.s=t;break}}}function y(i){var t=i.s,n=void 0;while(void 0!==t){var r=t.p;if(-1===t.i){t.S.U(t);if(void 0!==r)r.n=t.n;if(void 0!==t.n)t.n.p=r}else n=t;t.S.n=t.r;if(void 0!==t.r)t.r=void 0;t=r}i.s=n}function w(i,t){d.call(this,void 0);this.x=i;this.s=void 0;this.g=u-1;this.f=4;this.W=null==t?void 0:t.watched;this.Z=null==t?void 0:t.unwatched;this.name=null==t?void 0:t.name}w.prototype=new d;w.prototype.h=function(){this.f&=-3;if(1&this.f)return!1;if(32==(36&this.f))return!0;this.f&=-5;if(this.g===u)return!0;this.g=u;this.f|=1;if(this.i>0&&!a(this)){this.f&=-2;return!0}var i=r;try{l(this);r=this;var t=this.x();if(16&this.f||this.v!==t||0===this.i){this.v=t;this.f&=-17;this.i++}}catch(i){this.v=i;this.f|=16;this.i++}r=i;y(this);this.f&=-2;return!0};w.prototype.S=function(i){if(void 0===this.t){this.f|=36;for(var t=this.s;void 0!==t;t=t.n)t.S.S(t)}d.prototype.S.call(this,i)};w.prototype.U=function(i){if(void 0!==this.t){d.prototype.U.call(this,i);if(void 0===this.t){this.f&=-33;for(var t=this.s;void 0!==t;t=t.n)t.S.U(t)}}};w.prototype.N=function(){if(!(2&this.f)){this.f|=6;for(var i=this.t;void 0!==i;i=i.x)i.t.N()}};Object.defineProperty(w.prototype,\"value\",{get:function(){if(1&this.f)throw new Error(\"Cycle detected\");var i=e(this);this.h();if(void 0!==i)i.i=this.i;if(16&this.f)throw this.v;return this.v}});function b(i,t){return new w(i,t)}function _(i){var n=i.u;i.u=void 0;if(\"function\"==typeof n){s++;var o=r;r=void 0;try{n()}catch(t){i.f&=-2;i.f|=8;p(i);throw t}finally{r=o;t()}}}function p(i){for(var t=i.s;void 0!==t;t=t.n)t.S.U(t);i.x=void 0;i.s=void 0;_(i)}function g(i){if(r!==this)throw new Error(\"Out-of-order effect\");y(this);r=i;this.f&=-2;if(8&this.f)p(this);t()}function S(i,t){this.x=i;this.u=void 0;this.s=void 0;this.o=void 0;this.f=32;this.name=null==t?void 0:t.name;if(f)f.push(this)}S.prototype.c=function(){var i=this.S();try{if(8&this.f)return;if(void 0===this.x)return;var t=this.x();if(\"function\"==typeof t)this.u=t}finally{i()}};S.prototype.S=function(){if(1&this.f)throw new Error(\"Cycle detected\");this.f|=1;this.f&=-9;_(this);l(this);s++;var i=r;r=this;return g.bind(this,i)};S.prototype.N=function(){if(!(2&this.f)){this.f|=2;this.o=h;h=this}};S.prototype.d=function(){this.f|=8;if(!(1&this.f))p(this)};S.prototype.dispose=function(){this.d()};function m(i,t){var n=new S(i,t);try{n.c()}catch(i){n.d();throw i}var r=n.d.bind(n);r[Symbol.dispose]=r;return r}function E(i){return function(){var t=arguments,r=this;return n(function(){return o(function(){return i.apply(r,[].slice.call(t))})})}}function x(){var i=f;f=[];return function(){var t=f;if(f&&i)i=i.concat(f);f=i;return t}}function C(i){return function(){var t,n,r=x();try{n=i.apply(void 0,[].slice.call(arguments))}catch(i){f=void 0;throw i}finally{t=r()}for(var o in n)if(\"function\"==typeof n[o])n[o]=E(n[o]);n[Symbol.dispose]=E(function(){if(t)for(var i=0;i<t.length;i++)t[i].dispose();t=void 0});return n}}export{w as Computed,S as Effect,d as Signal,E as action,n as batch,b as computed,C as createModel,m as effect,c as signal,o as untracked};//# sourceMappingURL=signals-core.module.js.map\n","import{Component as i,options as n,isValidElement as r,Fragment as t}from\"preact\";import{useMemo as o,useRef as f,useEffect as e}from\"preact/hooks\";import{effect as u,Signal as a,computed as c,signal as v,batch as s}from\"@preact/signals-core\";export{Signal,action,batch,computed,createModel,effect,signal,untracked}from\"@preact/signals-core\";var l,d,h,p=\"undefined\"!=typeof window&&!!window.__PREACT_SIGNALS_DEVTOOLS__,m=[],_=[];u(function(){l=this.N})();function g(i,r){n[i]=r.bind(null,n[i]||function(){})}function b(i){if(h){var n=h;h=void 0;n()}h=i&&i.S()}function y(i){var n=this,t=i.data,f=useSignal(t);f.value=t;var e=o(function(){var i=n,t=n.__v;while(t=t.__)if(t.__c){t.__c.__$f|=4;break}var o=c(function(){var i=f.value.value;return 0===i?0:!0===i?\"\":i||\"\"}),e=c(function(){return!Array.isArray(o.value)&&!r(o.value)}),a=u(function(){this.N=F;if(e.value){var n=o.value;if(i.__v&&i.__v.__e&&3===i.__v.__e.nodeType)i.__v.__e.data=n}}),v=n.__$u.d;n.__$u.d=function(){a();v.call(this)};return[e,o]},[]),a=e[0],v=e[1];return a.value?v.peek():v.value}y.displayName=\"ReactiveTextNode\";Object.defineProperties(a.prototype,{constructor:{configurable:!0,value:void 0},type:{configurable:!0,value:y},props:{configurable:!0,get:function(){return{data:this}}},__b:{configurable:!0,value:1}});g(\"__b\",function(i,n){if(\"string\"==typeof n.type){var r,t=n.props;for(var o in t)if(\"children\"!==o){var f=t[o];if(f instanceof a){if(!r)n.__np=r={};r[o]=f;t[o]=f.peek()}}}i(n)});g(\"__r\",function(i,n){i(n);if(n.type!==t){b();var r,o=n.__c;if(o){o.__$f&=-2;if(void 0===(r=o.__$u))o.__$u=r=function(i,n){var r;u(function(){r=this},{name:n});r.c=i;return r}(function(){var i;if(p)null==(i=r.y)||i.call(r);o.__$f|=1;o.setState({})},\"function\"==typeof n.type?n.type.displayName||n.type.name:\"\")}d=o;b(r)}});g(\"__e\",function(i,n,r,t){b();d=void 0;i(n,r,t)});g(\"diffed\",function(i,n){b();d=void 0;var r;if(\"string\"==typeof n.type&&(r=n.__e)){var t=n.__np,o=n.props;if(t){var f=r.U;if(f)for(var e in f){var u=f[e];if(void 0!==u&&!(e in t)){u.d();f[e]=void 0}}else{f={};r.U=f}for(var a in t){var c=f[a],v=t[a];if(void 0===c){c=w(r,a,v);f[a]=c}else c.o(v,o)}for(var s in t)o[s]=t[s]}}i(n)});function w(i,n,r,t){var o=n in i&&void 0===i.ownerSVGElement,f=v(r),e=r.peek();return{o:function(i,n){f.value=i;e=i.peek()},d:u(function(){this.N=F;var r=f.value.value;if(e!==r){e=void 0;if(o)i[n]=r;else if(null!=r&&(!1!==r||\"-\"===n[4]))i.setAttribute(n,r);else i.removeAttribute(n)}else e=void 0})}}g(\"unmount\",function(i,n){if(\"string\"==typeof n.type){var r=n.__e;if(r){var t=r.U;if(t){r.U=void 0;for(var o in t){var f=t[o];if(f)f.d()}}}n.__np=void 0}else{var e=n.__c;if(e){var u=e.__$u;if(u){e.__$u=void 0;u.d()}}}i(n)});g(\"__h\",function(i,n,r,t){if(t<3||9===t)n.__$f|=2;i(n,r,t)});i.prototype.shouldComponentUpdate=function(i,n){if(this.__R)return!0;var r=this.__$u,t=r&&void 0!==r.s;for(var o in n)return!0;if(this.__f||\"boolean\"==typeof this.u&&!0===this.u){var f=2&this.__$f;if(!(t||f||4&this.__$f))return!0;if(1&this.__$f)return!0}else{if(!(t||4&this.__$f))return!0;if(3&this.__$f)return!0}for(var e in i)if(\"__source\"!==e&&i[e]!==this.props[e])return!0;for(var u in this.props)if(!(u in i))return!0;return!1};function useSignal(i,n){return o(function(){return v(i,n)},[])}function useComputed(i,n){var r=f(i);r.current=i;d.__$f|=4;return o(function(){return c(function(){return r.current()},n)},[])}var k=\"undefined\"==typeof requestAnimationFrame?setTimeout:function(i){var n=function(){clearTimeout(r);cancelAnimationFrame(t);i()},r=setTimeout(n,35),t=requestAnimationFrame(n)},q=function(i){queueMicrotask(function(){queueMicrotask(i)})};function A(){s(function(){var i;while(i=m.shift())l.call(i)})}function T(){if(1===m.push(this))(n.requestAnimationFrame||k)(A)}function x(){s(function(){var i;while(i=_.shift())l.call(i)})}function F(){if(1===_.push(this))(n.requestAnimationFrame||q)(x)}function useSignalEffect(i,n){var r=f(i);r.current=i;e(function(){return u(function(){this.N=T;return r.current()},n)},[])}function M(i){var n=o(function(){return i()},[]);e(function(){return n[Symbol.dispose]},[n]);return n}export{useComputed,M as useModel,useSignal,useSignalEffect};//# sourceMappingURL=signals.module.js.map\n","import type { ComponentChildren } from \"preact\";\n\ninterface ButtonProps {\n\tonClick?: () => void;\n\tclassName?: string;\n\tdisabled?: boolean;\n\tchildren: ComponentChildren;\n\tvariant?: \"primary\" | \"secondary\";\n\tpopovertarget?: string;\n\tactive?: boolean;\n}\n\nexport function Button({\n\tonClick,\n\tclassName = \"\",\n\tdisabled = false,\n\tchildren,\n\tvariant = \"secondary\",\n\tpopovertarget,\n\tactive = false,\n}: ButtonProps) {\n\tconst baseClass = \"btn\";\n\tconst variantClass = variant === \"primary\" ? \"btn-primary\" : \"btn-secondary\";\n\tconst activeClass = active ? \"active\" : \"\";\n\tconst combinedClassName =\n\t\t`${baseClass} ${variantClass} ${activeClass} ${className}`.trim();\n\n\treturn (\n\t\t<button\n\t\t\tpopovertarget={popovertarget}\n\t\t\tonClick={onClick}\n\t\t\tclassName={combinedClassName}\n\t\t\tdisabled={disabled}\n\t\t>\n\t\t\t{children}\n\t\t</button>\n\t);\n}\n","import { Button } from \"./Button\";\n\ninterface EmptyStateProps {\n\tonRefresh: () => void;\n\ttitle?: string;\n\tdescription?: string;\n\tbuttonText?: string;\n}\n\nexport function EmptyState({\n\tonRefresh,\n\ttitle = \"No Signals Detected\",\n\tdescription = \"Make sure your application is using @preact/signals-debug package.\",\n\tbuttonText = \"Refresh Detection\",\n}: EmptyStateProps) {\n\treturn (\n\t\t<div className=\"empty-state\">\n\t\t\t<div className=\"empty-state-content\">\n\t\t\t\t<h2>{title}</h2>\n\t\t\t\t<p>{description}</p>\n\t\t\t\t<div className=\"empty-state-actions\">\n\t\t\t\t\t<Button onClick={onRefresh} variant=\"primary\">\n\t\t\t\t\t\t{buttonText}\n\t\t\t\t\t</Button>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n","import type { ConnectionStatusType } from \"@preact/signals-devtools-adapter\";\n\ninterface StatusIndicatorProps {\n\tstatus: ConnectionStatusType;\n\tmessage: string;\n\tshowIndicator?: boolean;\n\tclassName?: string;\n}\n\nexport function StatusIndicator({\n\tstatus,\n\tmessage,\n\tshowIndicator = true,\n\tclassName = \"\",\n}: StatusIndicatorProps) {\n\treturn (\n\t\t<div className={`connection-status ${status} ${className}`}>\n\t\t\t{showIndicator && <span className={`status-indicator ${status}`}></span>}\n\t\t\t<span className=\"status-text\">{message}</span>\n\t\t</div>\n\t);\n}\n","import { signal, createModel } from \"@preact/signals\";\nimport type {\n\tDevToolsAdapter,\n\tConnectionStatus,\n\tConnectionStatusType,\n} from \"@preact/signals-devtools-adapter\";\n\nexport const ConnectionModel = createModel((adapter: DevToolsAdapter) => {\n\tconst status = signal<ConnectionStatusType>(\"connecting\");\n\tconst message = signal<string>(\"Connecting...\");\n\tconst isConnected = signal(false);\n\n\t// Listen to adapter events\n\tadapter.on(\n\t\t\"connectionStatusChanged\",\n\t\t(connectionStatus: ConnectionStatus) => {\n\t\t\tstatus.value = connectionStatus.status;\n\t\t\tmessage.value = connectionStatus.message;\n\t\t}\n\t);\n\n\tadapter.on(\"signalsAvailable\", (available: boolean) => {\n\t\tisConnected.value = available;\n\t});\n\n\tconst refreshConnection = () => {\n\t\tstatus.value = \"connecting\";\n\t\tmessage.value = \"Connecting...\";\n\t\tadapter.requestState();\n\t};\n\n\treturn {\n\t\tstatus,\n\t\tmessage,\n\t\tisConnected,\n\t\trefreshConnection,\n\t};\n});\n","import { signal, createModel } from \"@preact/signals\";\nimport type {\n\tDevToolsAdapter,\n\tSettings,\n} from \"@preact/signals-devtools-adapter\";\n\nexport const SettingsModel = createModel((adapter: DevToolsAdapter) => {\n\tconst settings = signal<Settings>({\n\t\tenabled: true,\n\t\tgrouped: true,\n\t\tconsoleLogging: true,\n\t\tmaxUpdatesPerSecond: 60,\n\t\tfilterPatterns: [],\n\t});\n\n\tconst showDisposedSignals = signal<boolean>(false);\n\n\tconst applySettings = (newSettings: Settings) => {\n\t\tsettings.value = newSettings;\n\t\tadapter.sendConfig(newSettings);\n\t};\n\n\tconst toggleShowDisposedSignals = () => {\n\t\tshowDisposedSignals.value = !showDisposedSignals.value;\n\t};\n\n\t// Listen to adapter events\n\tadapter.on(\"configReceived\", (config: { settings?: Settings }) => {\n\t\tif (config.settings) {\n\t\t\tsettings.value = config.settings;\n\t\t}\n\t});\n\n\treturn {\n\t\tsettings,\n\t\tshowDisposedSignals,\n\t\tapplySettings,\n\t\ttoggleShowDisposedSignals,\n\t};\n});\n","import { signal, computed, effect, createModel } from \"@preact/signals\";\n\nexport type ThemeMode = \"auto\" | \"light\" | \"dark\";\n\nconst THEME_STORAGE_KEY = \"signals-devtools-theme\";\n\nexport const ThemeModel = createModel(() => {\n\tconst stored = (() => {\n\t\ttry {\n\t\t\tconst val = localStorage.getItem(THEME_STORAGE_KEY);\n\t\t\tif (val === \"light\" || val === \"dark\" || val === \"auto\") return val;\n\t\t} catch {\n\t\t\t// localStorage unavailable\n\t\t}\n\t\treturn \"auto\" as ThemeMode;\n\t})();\n\n\tconst theme = signal<ThemeMode>(stored);\n\n\tconst mediaQuery =\n\t\ttypeof window !== \"undefined\"\n\t\t\t? window.matchMedia(\"(prefers-color-scheme: dark)\")\n\t\t\t: null;\n\tconst systemIsDark = signal(mediaQuery?.matches ?? false);\n\n\teffect(() => {\n\t\tif (!mediaQuery) return;\n\n\t\tconst handler = (e: MediaQueryListEvent) => {\n\t\t\tsystemIsDark.value = e.matches;\n\t\t};\n\n\t\tmediaQuery.addEventListener(\"change\", handler);\n\t\treturn () => mediaQuery.removeEventListener(\"change\", handler);\n\t});\n\n\tconst resolvedTheme = computed<\"light\" | \"dark\">(() =>\n\t\ttheme.value === \"auto\"\n\t\t\t? systemIsDark.value\n\t\t\t\t? \"dark\"\n\t\t\t\t: \"light\"\n\t\t\t: theme.value\n\t);\n\n\t// Apply data-theme attribute to the devtools container\n\teffect(() => {\n\t\tconst resolved = resolvedTheme.value;\n\t\tconst el = document.querySelector(\".signals-devtools\");\n\t\tif (el instanceof HTMLElement) {\n\t\t\tel.dataset.theme = resolved;\n\t\t}\n\t});\n\n\tconst toggleTheme = () => {\n\t\tconst order: ThemeMode[] = [\"auto\", \"light\", \"dark\"];\n\t\tconst idx = order.indexOf(theme.value);\n\t\ttheme.value = order[(idx + 1) % order.length];\n\t\ttry {\n\t\t\tlocalStorage.setItem(THEME_STORAGE_KEY, theme.value);\n\t\t} catch {\n\t\t\t// localStorage unavailable\n\t\t}\n\t};\n\n\treturn {\n\t\ttheme,\n\t\tresolvedTheme,\n\t\ttoggleTheme,\n\t};\n});\n","import { signal, computed, createModel } from \"@preact/signals\";\nimport type {\n\tDevToolsAdapter,\n\tSignalDisposed,\n\tDependencyInfo,\n} from \"@preact/signals-devtools-adapter\";\nimport type { SettingsModel } from \"./SettingsModel\";\n\nexport interface SignalUpdate {\n\ttype: \"update\" | \"effect\" | \"component\";\n\tsignalType: \"signal\" | \"computed\" | \"effect\" | \"component\";\n\tsignalName: string;\n\tsignalId?: string;\n\tprevValue?: any;\n\tnewValue?: any;\n\ttimestamp?: number;\n\treceivedAt: number;\n\tdepth?: number;\n\tsubscribedTo?: string;\n\t/** All dependencies this computed/effect currently depends on (with rich info) */\n\tallDependencies?: DependencyInfo[];\n}\n\nexport type Divider = { type: \"divider\" };\n\nexport interface UpdateTreeNodeBase {\n\tid: string;\n\tupdate: SignalUpdate;\n\tchildren: UpdateTreeNode[];\n\tdepth: number;\n\thasChildren: boolean;\n}\n\nexport interface UpdateTreeNodeSingle extends UpdateTreeNodeBase {\n\ttype: \"single\";\n}\n\nexport interface UpdateTreeNodeGroup extends UpdateTreeNodeBase {\n\ttype: \"group\";\n\tcount: number;\n\tfirstUpdate: SignalUpdate;\n\tfirstChildren: UpdateTreeNode[];\n}\n\nexport type UpdateTreeNode = UpdateTreeNodeGroup | UpdateTreeNodeSingle;\n\nconst nodesAreEqual = (a: UpdateTreeNode, b: UpdateTreeNode): boolean => {\n\treturn (\n\t\ta.update.signalId === b.update.signalId &&\n\t\ta.children.length === b.children.length &&\n\t\ta.children.every((child, index) => nodesAreEqual(child, b.children[index]))\n\t);\n};\n\nconst collapseTree = (nodes: UpdateTreeNodeSingle[]): UpdateTreeNode[] => {\n\tconst tree: UpdateTreeNode[] = [];\n\tlet lastNode: UpdateTreeNode | undefined;\n\n\tfor (const node of nodes) {\n\t\tif (lastNode && nodesAreEqual(lastNode, node)) {\n\t\t\tif (lastNode.type !== \"group\") {\n\t\t\t\ttree.pop();\n\t\t\t\tlastNode = {\n\t\t\t\t\t...lastNode,\n\t\t\t\t\ttype: \"group\",\n\t\t\t\t\tcount: 2,\n\t\t\t\t\tfirstUpdate: node.update,\n\t\t\t\t\tfirstChildren: node.children,\n\t\t\t\t};\n\t\t\t\ttree.push(lastNode);\n\t\t\t} else {\n\t\t\t\tlastNode.count++;\n\t\t\t\tlastNode.firstUpdate = node.update;\n\t\t\t\tlastNode.firstChildren = node.children;\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\t\ttree.push(node);\n\t\tlastNode = node;\n\t}\n\n\treturn tree;\n};\n\nexport const UpdatesModel = createModel(\n\t(\n\t\tadapter: DevToolsAdapter,\n\t\tsettingsStore: InstanceType<typeof SettingsModel>\n\t) => {\n\t\tconst updates = signal<(SignalUpdate | Divider)[]>([]);\n\t\tconst isPaused = signal<boolean>(false);\n\t\tconst disposedSignalIds = signal<Set<string>>(new Set());\n\n\t\tconst addUpdate = (\n\t\t\tupdate: SignalUpdate | Divider | Array<SignalUpdate | Divider>\n\t\t) => {\n\t\t\tif (Array.isArray(update)) {\n\t\t\t\tupdate.forEach(item => {\n\t\t\t\t\tif (item.type !== \"divider\") item.receivedAt = Date.now();\n\t\t\t\t});\n\t\t\t} else if (update.type === \"update\") {\n\t\t\t\tupdate.receivedAt = Date.now();\n\t\t\t}\n\t\t\tupdates.value = [\n\t\t\t\t...updates.value,\n\t\t\t\t...(Array.isArray(update) ? update : [update]),\n\t\t\t];\n\t\t};\n\n\t\tconst addDisposal = (disposal: SignalDisposed | SignalDisposed[]) => {\n\t\t\tconst disposals = Array.isArray(disposal) ? disposal : [disposal];\n\t\t\tconst newDisposed = new Set(disposedSignalIds.value);\n\t\t\tfor (const d of disposals) {\n\t\t\t\tif (d.signalId) {\n\t\t\t\t\tnewDisposed.add(d.signalId);\n\t\t\t\t}\n\t\t\t}\n\t\t\tdisposedSignalIds.value = newDisposed;\n\t\t};\n\n\t\tconst hasUpdates = computed(() => updates.value.length > 0);\n\n\t\tconst signalCounts = computed(() => {\n\t\t\tconst counts = new Map<string, number>();\n\t\t\tupdates.value.forEach(update => {\n\t\t\t\tif (update.type === \"divider\") return;\n\t\t\t\tconst signalName = update.signalName || \"Unknown\";\n\t\t\t\tcounts.set(signalName, (counts.get(signalName) || 0) + 1);\n\t\t\t});\n\t\t\treturn counts;\n\t\t});\n\n\t\tconst updateTree = computed(() => {\n\t\t\tconst buildTree = (\n\t\t\t\tupdates: (SignalUpdate | Divider)[]\n\t\t\t): UpdateTreeNodeSingle[] => {\n\t\t\t\tconst tree: UpdateTreeNodeSingle[] = [];\n\t\t\t\tconst stack: UpdateTreeNodeSingle[] = [];\n\n\t\t\t\tconst recentUpdates = updates.slice(-100).reverse();\n\n\t\t\t\tfor (let i = 0; i < recentUpdates.length; i++) {\n\t\t\t\t\tconst item = recentUpdates[i];\n\n\t\t\t\t\tif (item.type === \"divider\") {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst update = item as SignalUpdate;\n\t\t\t\t\tconst depth = update.depth || 0;\n\n\t\t\t\t\tconst nodeId = `${update.signalName}-${update.receivedAt}-${i}`;\n\n\t\t\t\t\tconst node: UpdateTreeNodeSingle = {\n\t\t\t\t\t\ttype: \"single\",\n\t\t\t\t\t\tid: nodeId,\n\t\t\t\t\t\tupdate,\n\t\t\t\t\t\tchildren: [],\n\t\t\t\t\t\tdepth,\n\t\t\t\t\t\thasChildren: false,\n\t\t\t\t\t};\n\n\t\t\t\t\twhile (stack.length > 0 && stack[stack.length - 1].depth >= depth) {\n\t\t\t\t\t\tstack.pop();\n\t\t\t\t\t}\n\n\t\t\t\t\tif (stack.length === 0) {\n\t\t\t\t\t\ttree.push(node);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst parent = stack[stack.length - 1];\n\t\t\t\t\t\tparent.children.push(node);\n\t\t\t\t\t\tparent.hasChildren = true;\n\t\t\t\t\t}\n\n\t\t\t\t\tstack.push(node);\n\t\t\t\t}\n\n\t\t\t\treturn tree;\n\t\t\t};\n\n\t\t\treturn buildTree(updates.value);\n\t\t});\n\n\t\tconst clearUpdates = () => {\n\t\t\tupdates.value = [];\n\t\t\tdisposedSignalIds.value = new Set();\n\t\t};\n\n\t\t// Listen to adapter events\n\t\tadapter.on(\"signalUpdate\", (signalUpdates: SignalUpdate[]) => {\n\t\t\tif (isPaused.value) return;\n\n\t\t\tconst updatesArray: Array<SignalUpdate | Divider> = [\n\t\t\t\t...signalUpdates,\n\t\t\t].reverse();\n\t\t\tupdatesArray.push({ type: \"divider\" });\n\n\t\t\taddUpdate(updatesArray);\n\t\t});\n\n\t\t// Listen to disposal events\n\t\tadapter.on(\"signalDisposed\", (disposals: SignalDisposed[]) => {\n\t\t\tif (isPaused.value) return;\n\t\t\taddDisposal(disposals);\n\t\t});\n\n\t\tconst collapsedUpdateTree = computed(() => {\n\t\t\tconst updateTreeValue = updateTree.value;\n\t\t\tif (settingsStore.settings.value.grouped) {\n\t\t\t\treturn collapseTree(updateTreeValue);\n\t\t\t}\n\t\t\treturn updateTreeValue;\n\t\t});\n\n\t\treturn {\n\t\t\tupdates,\n\t\t\tupdateTree,\n\t\t\tcollapsedUpdateTree,\n\t\t\ttotalUpdates: computed(() => Object.keys(updateTree.value).length),\n\t\t\tsignalCounts,\n\t\t\tdisposedSignalIds,\n\t\t\taddUpdate,\n\t\t\tclearUpdates,\n\t\t\thasUpdates,\n\t\t\tisPaused,\n\t\t};\n\t}\n);\n","import type { DevToolsAdapter } from \"@preact/signals-devtools-adapter\";\nimport { ConnectionModel } from \"./models/ConnectionModel\";\nimport { SettingsModel } from \"./models/SettingsModel\";\nimport { ThemeModel } from \"./models/ThemeModel\";\nimport { UpdatesModel } from \"./models/UpdatesModel\";\n\nexport { ConnectionModel, SettingsModel, ThemeModel, UpdatesModel };\nexport type {\n\tSignalUpdate,\n\tDivider,\n\tUpdateTreeNode,\n\tUpdateTreeNodeSingle,\n\tUpdateTreeNodeGroup,\n} from \"./models/UpdatesModel\";\nexport type { ThemeMode } from \"./models/ThemeModel\";\n\nexport interface DevToolsContext {\n\tadapter: DevToolsAdapter;\n\tconnectionStore: InstanceType<typeof ConnectionModel>;\n\tupdatesStore: InstanceType<typeof UpdatesModel>;\n\tsettingsStore: InstanceType<typeof SettingsModel>;\n\tthemeStore: InstanceType<typeof ThemeModel>;\n}\n\nlet currentContext: DevToolsContext | null = null;\n\nexport function getContext(): DevToolsContext {\n\tif (!currentContext) {\n\t\tthrow new Error(\n\t\t\t\"DevTools context not initialized. Call initDevTools() first.\"\n\t\t);\n\t}\n\treturn currentContext;\n}\n\nexport function initDevTools(adapter: DevToolsAdapter): DevToolsContext {\n\tconst settingsStore = new SettingsModel(adapter);\n\tconst updatesStore = new UpdatesModel(adapter, settingsStore);\n\tconst connectionStore = new ConnectionModel(adapter);\n\tconst themeStore = new ThemeModel();\n\n\tcurrentContext = {\n\t\tadapter,\n\t\tconnectionStore,\n\t\tupdatesStore,\n\t\tsettingsStore,\n\t\tthemeStore,\n\t};\n\n\treturn currentContext;\n}\n\nexport function destroyDevTools(): void {\n\tif (currentContext) {\n\t\tcurrentContext.connectionStore[Symbol.dispose]();\n\t\tcurrentContext.updatesStore[Symbol.dispose]();\n\t\tcurrentContext.settingsStore[Symbol.dispose]();\n\t\tcurrentContext.themeStore[Symbol.dispose]();\n\t\tcurrentContext.adapter.disconnect();\n\t\tcurrentContext = null;\n\t}\n}\n","import { StatusIndicator } from \"./StatusIndicator\";\nimport { Button } from \"./Button\";\nimport { getContext } from \"../context\";\nimport type { ThemeMode } from \"../context\";\n\nconst themeLabels: Record<ThemeMode, string> = {\n\tauto: \"Auto\",\n\tlight: \"Light\",\n\tdark: \"Dark\",\n};\n\nconst themeIcons: Record<ThemeMode, string> = {\n\tauto: \"\\u25D1\",\n\tlight: \"\\u2600\",\n\tdark: \"\\u263E\",\n};\n\nexport function Header() {\n\tconst { connectionStore, updatesStore, themeStore } = getContext();\n\n\tconst onTogglePause = () => {\n\t\tupdatesStore.isPaused.value = !updatesStore.isPaused.value;\n\t};\n\n\tconst onClear = () => {\n\t\tupdatesStore.clearUpdates();\n\t};\n\n\treturn (\n\t\t<header className=\"header\">\n\t\t\t<div className=\"header-title\">\n\t\t\t\t<h1>Signals</h1>\n\t\t\t\t<StatusIndicator\n\t\t\t\t\tstatus={connectionStore.status.value}\n\t\t\t\t\tmessage={connectionStore.message.value}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t\t<div className=\"header-controls\">\n\t\t\t\t<button\n\t\t\t\t\tclassName=\"theme-toggle\"\n\t\t\t\t\tonClick={themeStore.toggleTheme}\n\t\t\t\t\ttitle={`Theme: ${themeLabels[themeStore.theme.value]}`}\n\t\t\t\t>\n\t\t\t\t\t{themeIcons[themeStore.theme.value]}{\" \"}\n\t\t\t\t\t{themeLabels[themeStore.theme.value]}\n\t\t\t\t</button>\n\t\t\t\t{onClear && <Button onClick={onClear}>Clear</Button>}\n\t\t\t\t{onTogglePause && (\n\t\t\t\t\t<Button onClick={onTogglePause} active={updatesStore.isPaused.value}>\n\t\t\t\t\t\t{updatesStore.isPaused.value ? \"Resume\" : \"Pause\"}\n\t\t\t\t\t</Button>\n\t\t\t\t)}\n\t\t\t\t<Button popovertarget=\"settings-panel-popover\">Settings</Button>\n\t\t\t</div>\n\t\t</header>\n\t);\n}\n","import { useSignal, useSignalEffect } from \"@preact/signals\";\nimport { Button } from \"./Button\";\nimport type { Settings } from \"@preact/signals-devtools-adapter\";\nimport { getContext } from \"../context\";\nimport { useRef } from \"preact/hooks\";\n\nexport function SettingsPanel() {\n\tconst { settingsStore } = getContext();\n\tconst popover = useRef<HTMLDivElement>(null);\n\n\tconst onApply = settingsStore.applySettings;\n\n\tconst localSettings = useSignal<Settings>(settingsStore.settings.value);\n\n\tuseSignalEffect(() => {\n\t\tlocalSettings.value = settingsStore.settings.value;\n\t});\n\n\tconst handleApply = () => {\n\t\tonApply(localSettings.value);\n\t};\n\n\tconst onCancel = () => {\n\t\t// @ts-expect-error\n\t\tpopover.current?.hide();\n\t};\n\n\treturn (\n\t\t<div\n\t\t\tref={popover}\n\t\t\tpopover=\"auto\"\n\t\t\tid=\"settings-panel-popover\"\n\t\t\tclassName=\"settings-panel\"\n\t\t>\n\t\t\t<div className=\"settings-content\">\n\t\t\t\t<h3>Debug Configuration</h3>\n\n\t\t\t\t<div className=\"setting-group\">\n\t\t\t\t\t<label>\n\t\t\t\t\t\t<input\n\t\t\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\t\t\tchecked={localSettings.value.enabled}\n\t\t\t\t\t\t\tonChange={e =>\n\t\t\t\t\t\t\t\t(localSettings.value = {\n\t\t\t\t\t\t\t\t\t...localSettings.value,\n\t\t\t\t\t\t\t\t\tenabled: (e.target as HTMLInputElement).checked,\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\tEnable debug updates\n\t\t\t\t\t</label>\n\t\t\t\t</div>\n\n\t\t\t\t<div className=\"setting-group\">\n\t\t\t\t\t<label>\n\t\t\t\t\t\t<input\n\t\t\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\t\t\tchecked={localSettings.value.grouped}\n\t\t\t\t\t\t\tonChange={e =>\n\t\t\t\t\t\t\t\t(localSettings.value = {\n\t\t\t\t\t\t\t\t\t...localSettings.value,\n\t\t\t\t\t\t\t\t\tgrouped: (e.target as HTMLInputElement).checked,\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\tGroup related updates\n\t\t\t\t\t</label>\n\t\t\t\t</div>\n\n\t\t\t\t<div className=\"setting-group\">\n\t\t\t\t\t<label>\n\t\t\t\t\t\t<input\n\t\t\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\t\t\tchecked={localSettings.value.consoleLogging}\n\t\t\t\t\t\t\tonChange={e =>\n\t\t\t\t\t\t\t\t(localSettings.value = {\n\t\t\t\t\t\t\t\t\t...localSettings.value,\n\t\t\t\t\t\t\t\t\tconsoleLogging: (e.target as HTMLInputElement).checked,\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\tEnable console logging\n\t\t\t\t\t</label>\n\t\t\t\t\t<p className=\"setting-description\">\n\t\t\t\t\t\tWhen disabled, signal updates will not be logged to the browser\n\t\t\t\t\t\tconsole.\n\t\t\t\t\t</p>\n\t\t\t\t</div>\n\n\t\t\t\t<div className=\"setting-group\">\n\t\t\t\t\t<label htmlFor=\"maxUpdatesInput\">Max updates per second:</label>\n\t\t\t\t\t<input\n\t\t\t\t\t\ttype=\"number\"\n\t\t\t\t\t\tid=\"maxUpdatesInput\"\n\t\t\t\t\t\tvalue={localSettings.value.maxUpdatesPerSecond}\n\t\t\t\t\t\tmin=\"1\"\n\t\t\t\t\t\tmax=\"1000\"\n\t\t\t\t\t\tonChange={e =>\n\t\t\t\t\t\t\t(localSettings.value = {\n\t\t\t\t\t\t\t\t...localSettings.value,\n\t\t\t\t\t\t\t\tmaxUpdatesPerSecond:\n\t\t\t\t\t\t\t\t\tparseInt((e.target as HTMLInputElement).value) || 60,\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\n\t\t\t\t<div className=\"setting-group\">\n\t\t\t\t\t<label htmlFor=\"filterPatternsInput\">\n\t\t\t\t\t\tFilter patterns (one per line):\n\t\t\t\t\t</label>\n\t\t\t\t\t<textarea\n\t\t\t\t\t\tid=\"filterPatternsInput\"\n\t\t\t\t\t\tplaceholder=\"user.*&#10;.*State$&#10;global\"\n\t\t\t\t\t\tvalue={localSettings.value.filterPatterns.join(\"\\n\")}\n\t\t\t\t\t\tonChange={e =>\n\t\t\t\t\t\t\t(localSettings.value = {\n\t\t\t\t\t\t\t\t...localSettings.value,\n\t\t\t\t\t\t\t\tfilterPatterns: (e.target as HTMLTextAreaElement).value\n\t\t\t\t\t\t\t\t\t.split(\"\\n\")\n\t\t\t\t\t\t\t\t\t.map(pattern => pattern.trim())\n\t\t\t\t\t\t\t\t\t.filter(pattern => pattern.length > 0),\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\n\t\t\t\t<h3>Graph Settings</h3>\n\n\t\t\t\t<div className=\"setting-group\">\n\t\t\t\t\t<label>\n\t\t\t\t\t\t<input\n\t\t\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\t\t\tchecked={settingsStore.showDisposedSignals.value}\n\t\t\t\t\t\t\tonChange={() => settingsStore.toggleShowDisposedSignals()}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\tShow disposed signals in graph\n\t\t\t\t\t</label>\n\t\t\t\t\t<p className=\"setting-description\">\n\t\t\t\t\t\tWhen enabled, signals and effects that have been disposed will still\n\t\t\t\t\t\tbe shown in the graph view.\n\t\t\t\t\t</p>\n\t\t\t\t</div>\n\n\t\t\t\t<div className=\"settings-actions\">\n\t\t\t\t\t<Button onClick={handleApply} variant=\"primary\">\n\t\t\t\t\t\tApply\n\t\t\t\t\t</Button>\n\t\t\t\t\t<Button onClick={onCancel}>Cancel</Button>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n","import { useRef, useEffect } from \"preact/hooks\";\nimport { useComputed, useSignal } from \"@preact/signals\";\nimport type { GraphData, GraphLink, GraphNode } from \"../types\";\nimport type { SignalUpdate } from \"../context\";\nimport { getContext } from \"../context\";\n\nconst copyToClipboard = (text: string) => {\n\tconst copyEl = document.createElement(\"textarea\");\n\ttry {\n\t\tcopyEl.value = text;\n\t\tdocument.body.append(copyEl);\n\t\tcopyEl.select();\n\t\tdocument.execCommand(\"copy\");\n\t} finally {\n\t\tcopyEl.remove();\n\t}\n};\n\nexport function GraphVisualization() {\n\tconst { updatesStore, settingsStore } = getContext();\n\tconst updates = updatesStore.updates;\n\tconst disposedSignalIds = updatesStore.disposedSignalIds;\n\tconst svgRef = useRef<SVGSVGElement>(null);\n\tconst containerRef = useRef<HTMLDivElement>(null);\n\tconst exportMenuRef = useRef<HTMLDivElement>(null);\n\n\tconst panOffset = useSignal({ x: 0, y: 0 });\n\tconst zoom = useSignal(1);\n\tconst isPanning = useSignal(false);\n\tconst startPan = useSignal({ x: 0, y: 0 });\n\tconst showExportMenu = useSignal(false);\n\tconst toastText = useSignal<string>();\n\tconst hoveredNode = useSignal<GraphNode | null>(null);\n\tconst tooltipPos = useSignal({ x: 0, y: 0 });\n\n\tuseEffect(() => {\n\t\tconst handleClickOutside = (e: MouseEvent) => {\n\t\t\tif (\n\t\t\t\tshowExportMenu.value &&\n\t\t\t\texportMenuRef.current &&\n\t\t\t\t!exportMenuRef.current.contains(e.target as Node)\n\t\t\t) {\n\t\t\t\tshowExportMenu.value = false;\n\t\t\t}\n\t\t};\n\n\t\tdocument.addEventListener(\"mousedown\", handleClickOutside);\n\t\treturn () => {\n\t\t\tdocument.removeEventListener(\"mousedown\", handleClickOutside);\n\t\t};\n\t}, []);\n\n\t// Improved topological sort with proper layering\n\tconst computeNodeLayers = (\n\t\tnodes: Map<string, GraphNode>,\n\t\tlinks: GraphLink[]\n\t): Map<string, number> => {\n\t\tconst layers = new Map<string, number>();\n\t\tconst adjacency = new Map<string, Set<string>>();\n\t\tconst inDegree = new Map<string, number>();\n\n\t\t// Initialize adjacency list and in-degrees\n\t\tnodes.forEach((_, id) => {\n\t\t\tadjacency.set(id, new Set());\n\t\t\tinDegree.set(id, 0);\n\t\t});\n\n\t\t// Build adjacency list and calculate in-degrees\n\t\tlinks.forEach(link => {\n\t\t\tadjacency.get(link.source)?.add(link.target);\n\t\t\tinDegree.set(link.target, (inDegree.get(link.target) || 0) + 1);\n\t\t});\n\n\t\t// BFS-based layering (Kahn's algorithm with layers)\n\t\tconst queue: string[] = [];\n\n\t\t// Start with nodes that have no dependencies (in-degree = 0)\n\t\tnodes.forEach((_, id) => {\n\t\t\tif (inDegree.get(id) === 0) {\n\t\t\t\tqueue.push(id);\n\t\t\t\tlayers.set(id, 0);\n\t\t\t}\n\t\t});\n\n\t\twhile (queue.length > 0) {\n\t\t\tconst nodeId = queue.shift()!;\n\t\t\tconst currentLayer = layers.get(nodeId)!;\n\n\t\t\t// Process all nodes that depend on this node\n\t\t\tadjacency.get(nodeId)?.forEach(targetId => {\n\t\t\t\t// Update target's layer to be at least one more than current\n\t\t\t\tconst targetLayer = layers.get(targetId) ?? 0;\n\t\t\t\tlayers.set(targetId, Math.max(targetLayer, currentLayer + 1));\n\n\t\t\t\t// Decrease in-degree and add to queue if all dependencies processed\n\t\t\t\tconst newInDegree = (inDegree.get(targetId) || 0) - 1;\n\t\t\t\tinDegree.set(targetId, newInDegree);\n\n\t\t\t\tif (newInDegree === 0) {\n\t\t\t\t\tqueue.push(targetId);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn layers;\n\t};\n\n\t// Reduce edge crossings within layers using barycenter heuristic\n\tconst minimizeCrossings = (\n\t\tnodesByLayer: Map<number, GraphNode[]>,\n\t\tlinks: GraphLink[]\n\t): void => {\n\t\tconst layers = Array.from(nodesByLayer.keys()).sort((a, b) => a - b);\n\n\t\t// Build adjacency maps for quick lookup\n\t\tconst targets = new Map<string, string[]>();\n\t\tconst sources = new Map<string, string[]>();\n\n\t\tlinks.forEach(link => {\n\t\t\tif (!targets.has(link.source)) targets.set(link.source, []);\n\t\t\tif (!sources.has(link.target)) sources.set(link.target, []);\n\t\t\ttargets.get(link.source)!.push(link.target);\n\t\t\tsources.get(link.target)!.push(link.source);\n\t\t});\n\n\t\t// Create position maps for quick lookup\n\t\tconst nodePositions = new Map<string, number>();\n\n\t\t// Multiple passes to reduce crossings\n\t\tfor (let pass = 0; pass < 4; pass++) {\n\t\t\t// Forward pass: order based on predecessors\n\t\t\tfor (let i = 0; i < layers.length; i++) {\n\t\t\t\tconst layer = layers[i];\n\t\t\t\tconst nodes = nodesByLayer.get(layer)!;\n\n\t\t\t\t// Update position map for current layer\n\t\t\t\tnodes.forEach((node, idx) => {\n\t\t\t\t\tnodePositions.set(node.id, idx);\n\t\t\t\t});\n\n\t\t\t\tif (i === 0) continue; // Skip first layer\n\n\t\t\t\t// Calculate barycenter for each node based on predecessors\n\t\t\t\tconst barycenters = nodes.map(node => {\n\t\t\t\t\tconst preds = sources.get(node.id) || [];\n\t\t\t\t\tif (preds.length === 0) return 0;\n\n\t\t\t\t\tconst sum = preds.reduce((acc, predId) => {\n\t\t\t\t\t\treturn acc + (nodePositions.get(predId) ?? 0);\n\t\t\t\t\t}, 0);\n\t\t\t\t\treturn sum / preds.length;\n\t\t\t\t});\n\n\t\t\t\t// Sort nodes by barycenter\n\t\t\t\tconst sorted = nodes\n\t\t\t\t\t.map((node, idx) => ({ node, barycenter: barycenters[idx] }))\n\t\t\t\t\t.sort((a, b) => a.barycenter - b.barycenter)\n\t\t\t\t\t.map(item => item.node);\n\n\t\t\t\tnodesByLayer.set(layer, sorted);\n\t\t\t}\n\n\t\t\t// Backward pass: order based on successors\n\t\t\tfor (let i = layers.length - 1; i >= 0; i--) {\n\t\t\t\tconst layer = layers[i];\n\t\t\t\tconst nodes = nodesByLayer.get(layer)!;\n\n\t\t\t\t// Update position map for current layer\n\t\t\t\tnodes.forEach((node, idx) => {\n\t\t\t\t\tnodePositions.set(node.id, idx);\n\t\t\t\t});\n\n\t\t\t\tif (i === layers.length - 1) continue; // Skip last layer\n\n\t\t\t\t// Calculate barycenter for each node based on successors\n\t\t\t\tconst barycenters = nodes.map(node => {\n\t\t\t\t\tconst succs = targets.get(node.id) || [];\n\t\t\t\t\tif (succs.length === 0) return 0;\n\n\t\t\t\t\tconst sum = succs.reduce((acc, succId) => {\n\t\t\t\t\t\treturn acc + (nodePositions.get(succId) ?? 0);\n\t\t\t\t\t}, 0);\n\t\t\t\t\treturn sum / succs.length;\n\t\t\t\t});\n\n\t\t\t\t// Sort nodes by barycenter\n\t\t\t\tconst sorted = nodes\n\t\t\t\t\t.map((node, idx) => ({ node, barycenter: barycenters[idx] }))\n\t\t\t\t\t.sort((a, b) => a.barycenter - b.barycenter)\n\t\t\t\t\t.map(item => item.node);\n\n\t\t\t\tnodesByLayer.set(layer, sorted);\n\t\t\t}\n\t\t}\n\t};\n\n\tconst graphData = useComputed<GraphData>(() => {\n\t\tconst rawUpdates = updates.value;\n\t\tconst disposed = disposedSignalIds.value;\n\t\tconst showDisposed = settingsStore.showDisposedSignals.value;\n\n\t\tif (!rawUpdates || rawUpdates.length === 0) return { nodes: [], links: [] };\n\n\t\tconst nodes = new Map<string, GraphNode>();\n\t\tconst links = new Map<string, GraphLink>();\n\n\t\tconst signalUpdates = rawUpdates.filter(\n\t\t\tupdate => update.type !== \"divider\"\n\t\t) as SignalUpdate[];\n\n\t\tfor (const update of signalUpdates) {\n\t\t\tif (!update.signalId) continue;\n\t\t\tif (!showDisposed && disposed.has(update.signalId)) continue;\n\n\t\t\tconst type: \"signal\" | \"computed\" | \"effect\" | \"component\" =\n\t\t\t\tupdate.signalType;\n\n\t\t\tif (!nodes.has(update.signalId)) {\n\t\t\t\tnodes.set(update.signalId, {\n\t\t\t\t\tid: update.signalId,\n\t\t\t\t\tname: update.signalName,\n\t\t\t\t\ttype,\n\t\t\t\t\tx: 0,\n\t\t\t\t\ty: 0,\n\t\t\t\t\tdepth: 0, // Will be recalculated\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (update.allDependencies && update.allDependencies.length > 0) {\n\t\t\t\tfor (const dep of update.allDependencies) {\n\t\t\t\t\tconst sourceDisposed = !showDisposed && disposed.has(dep.id);\n\t\t\t\t\tif (sourceDisposed) continue;\n\n\t\t\t\t\tif (!nodes.has(dep.id)) {\n\t\t\t\t\t\tnodes.set(dep.id, {\n\t\t\t\t\t\t\tid: dep.id,\n\t\t\t\t\t\t\tname: dep.name,\n\t\t\t\t\t\t\ttype: dep.type,\n\t\t\t\t\t\t\tx: 0,\n\t\t\t\t\t\t\ty: 0,\n\t\t\t\t\t\t\tdepth: 0,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tconst linkKey = `${dep.id}->${update.signalId}`;\n\t\t\t\t\tif (!links.has(linkKey)) {\n\t\t\t\t\t\tlinks.set(linkKey, {\n\t\t\t\t\t\t\tsource: dep.id,\n\t\t\t\t\t\t\ttarget: update.signalId,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (update.subscribedTo) {\n\t\t\t\tconst sourceDisposed =\n\t\t\t\t\t!showDisposed && disposed.has(update.subscribedTo);\n\t\t\t\tif (sourceDisposed) continue;\n\n\t\t\t\tconst linkKey = `${update.subscribedTo}->${update.signalId}`;\n\t\t\t\tif (!links.has(linkKey)) {\n\t\t\t\t\tlinks.set(linkKey, {\n\t\t\t\t\t\tsource: update.subscribedTo,\n\t\t\t\t\t\ttarget: update.signalId,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconst allLinks = Array.from(links.values());\n\n\t\t// Compute proper layers using topological sort\n\t\tconst nodeLayers = computeNodeLayers(nodes, allLinks);\n\n\t\t// Update node depths based on computed layers\n\t\tnodes.forEach((node, id) => {\n\t\t\tnode.depth = nodeLayers.get(id) ?? 0;\n\t\t});\n\n\t\t// Group nodes by layer\n\t\tconst nodesByLayer = new Map<number, GraphNode[]>();\n\t\tnodes.forEach(node => {\n\t\t\tif (!nodesByLayer.has(node.depth)) {\n\t\t\t\tnodesByLayer.set(node.depth, []);\n\t\t\t}\n\t\t\tnodesByLayer.get(node.depth)!.push(node);\n\t\t});\n\n\t\t// Minimize edge crossings\n\t\tminimizeCrossings(nodesByLayer, allLinks);\n\n\t\t// Layout nodes with proper spacing\n\t\tconst nodeSpacing = 120;\n\t\tconst layerSpacing = 250;\n\t\tconst startX = 100;\n\t\tconst startY = 80;\n\n\t\tnodesByLayer.forEach((layerNodes, layer) => {\n\t\t\tconst layerHeight = (layerNodes.length - 1) * nodeSpacing;\n\t\t\tconst layerStartY = startY - layerHeight / 2;\n\n\t\t\tlayerNodes.forEach((node, index) => {\n\t\t\t\tnode.x = startX + layer * layerSpacing;\n\t\t\t\tnode.y = layerStartY + index * nodeSpacing + nodesByLayer.size * 50;\n\t\t\t});\n\t\t});\n\n\t\treturn {\n\t\t\tnodes: Array.from(nodes.values()),\n\t\t\tlinks: allLinks,\n\t\t};\n\t});\n\n\tconst handleMouseDown = (e: MouseEvent) => {\n\t\tif (e.button !== 0) return;\n\t\tisPanning.value = true;\n\t\tstartPan.value = {\n\t\t\tx: e.clientX - panOffset.value.x,\n\t\t\ty: e.clientY - panOffset.value.y,\n\t\t};\n\t};\n\n\tconst handleMouseMove = (e: MouseEvent) => {\n\t\tif (!isPanning.value) return;\n\t\tpanOffset.value = {\n\t\t\tx: e.clientX - startPan.value.x,\n\t\t\ty: e.clientY - startPan.value.y,\n\t\t};\n\t};\n\n\tconst handleMouseUp = () => {\n\t\tisPanning.value = false;\n\t};\n\n\tconst handleWheel = (e: WheelEvent) => {\n\t\te.preventDefault();\n\n\t\tconst container = containerRef.current;\n\t\tif (!container) return;\n\n\t\tconst rect = container.getBoundingClientRect();\n\t\tconst mouseX = e.clientX - rect.left;\n\t\tconst mouseY = e.clientY - rect.top;\n\n\t\tconst delta = e.deltaY > 0 ? 0.96 : 1.04;\n\t\tconst newZoom = Math.min(Math.max(0.1, zoom.value * delta), 5);\n\n\t\tconst zoomRatio = newZoom / zoom.value;\n\t\tpanOffset.value = {\n\t\t\tx: mouseX - (mouseX - panOffset.value.x) * zoomRatio,\n\t\t\ty: mouseY - (mouseY - panOffset.value.y) * zoomRatio,\n\t\t};\n\n\t\tzoom.value = newZoom;\n\t};\n\n\tconst resetView = () => {\n\t\tpanOffset.value = { x: 0, y: 0 };\n\t\tzoom.value = 1;\n\t};\n\n\tconst toggleExportMenu = () => {\n\t\tshowExportMenu.value = !showExportMenu.value;\n\t};\n\n\tconst mermaidIdPattern = /[^a-zA-Z0-9]/g;\n\tconst computeMermaidId = (id: string) => id.replace(mermaidIdPattern, \"_\");\n\n\tconst getNodeRadius = (node: GraphNode) => {\n\t\tconst baseRadius = 30;\n\t\tconst charWidth = 6.5;\n\t\tconst padding = 16;\n\t\tconst textWidth = node.name.length * charWidth + padding;\n\t\treturn Math.max(baseRadius, Math.min(textWidth / 2, 70));\n\t};\n\n\tconst handleNodeMouseEnter = (node: GraphNode, e: MouseEvent) => {\n\t\thoveredNode.value = node;\n\t\tconst container = containerRef.current;\n\t\tif (container) {\n\t\t\tconst rect = container.getBoundingClientRect();\n\t\t\ttooltipPos.value = {\n\t\t\t\tx: e.clientX - rect.left,\n\t\t\t\ty: e.clientY - rect.top,\n\t\t\t};\n\t\t}\n\t};\n\n\tconst handleNodeMouseMove = (e: MouseEvent) => {\n\t\tconst container = containerRef.current;\n\t\tif (container && hoveredNode.value) {\n\t\t\tconst rect = container.getBoundingClientRect();\n\t\t\ttooltipPos.value = {\n\t\t\t\tx: e.clientX - rect.left,\n\t\t\t\ty: e.clientY - rect.top,\n\t\t\t};\n\t\t}\n\t};\n\n\tconst handleNodeMouseLeave = () => {\n\t\thoveredNode.value = null;\n\t};\n\n\tconst showToast = (text: string) => {\n\t\ttoastText.value = text;\n\t\tsetTimeout(() => {\n\t\t\ttoastText.value = undefined;\n\t\t}, 2000);\n\t};\n\n\tconst handleExportMermaid = async () => {\n\t\tshowExportMenu.value = false;\n\n\t\tconst lines: string[] = [\"graph LR\"];\n\n\t\tgraphData.value.nodes.forEach(node => {\n\t\t\tconst id = computeMermaidId(node.id);\n\t\t\tconst name = node.name;\n\n\t\t\tswitch (node.type) {\n\t\t\t\tcase \"signal\":\n\t\t\t\t\tlines.push(` ${id}((${name}))`);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"computed\":\n\t\t\t\t\tlines.push(` ${id}(${name})`);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"effect\":\n\t\t\t\t\tlines.push(` ${id}([${name}])`);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"component\":\n\t\t\t\t\tlines.push(` ${id}{{${name}}}`);\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t});\n\n\t\tfor (const link of graphData.value.links) {\n\t\t\tconst sourceId = computeMermaidId(link.source);\n\t\t\tconst targetId = computeMermaidId(link.target);\n\t\t\tlines.push(` ${sourceId} --> ${targetId}`);\n\t\t}\n\n\t\tcopyToClipboard(lines.join(\"\\n\"));\n\t\tshowToast(\"Copied to clipboard!\");\n\t};\n\n\tconst handleExportJSON = async () => {\n\t\tshowExportMenu.value = false;\n\t\tconst value = JSON.stringify(graphData.value, null, 2);\n\t\tcopyToClipboard(value);\n\t\tshowToast(\"Copied to clipboard!\");\n\t};\n\n\tif (graphData.value.nodes.length === 0) {\n\t\treturn (\n\t\t\t<div className=\"graph-empty\">\n\t\t\t\t<div>\n\t\t\t\t\t<h3>No Signal Dependencies</h3>\n\t\t\t\t\t<p>\n\t\t\t\t\t\tCreate some signals with dependencies to see the graph\n\t\t\t\t\t\tvisualization.\n\t\t\t\t\t</p>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n\n\tconst svgWidth = Math.max(800, ...graphData.value.nodes.map(n => n.x + 100));\n\tconst svgHeight = Math.max(600, ...graphData.value.nodes.map(n => n.y + 100));\n\n\treturn (\n\t\t<div className=\"graph-container\">\n\t\t\t<div\n\t\t\t\tref={containerRef}\n\t\t\t\tclassName=\"graph-content\"\n\t\t\t\tonMouseDown={handleMouseDown}\n\t\t\t\tonMouseMove={handleMouseMove}\n\t\t\t\tonMouseUp={handleMouseUp}\n\t\t\t\tonMouseLeave={handleMouseUp}\n\t\t\t\tonWheel={handleWheel}\n\t\t\t\tstyle={{ cursor: isPanning.value ? \"grabbing\" : \"grab\" }}\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\tref={svgRef}\n\t\t\t\t\tclassName=\"graph-svg\"\n\t\t\t\t\twidth={svgWidth}\n\t\t\t\t\theight={svgHeight}\n\t\t\t\t\tviewBox={`0 0 ${svgWidth} ${svgHeight}`}\n\t\t\t\t>\n\t\t\t\t\t<defs>\n\t\t\t\t\t\t<marker\n\t\t\t\t\t\t\tid=\"arrowhead\"\n\t\t\t\t\t\t\tmarkerWidth=\"8\"\n\t\t\t\t\t\t\tmarkerHeight=\"6\"\n\t\t\t\t\t\t\trefX=\"7\"\n\t\t\t\t\t\t\trefY=\"3\"\n\t\t\t\t\t\t\torient=\"auto\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<polygon points=\"0 0, 8 3, 0 6\" className=\"graph-arrowhead\" />\n\t\t\t\t\t\t</marker>\n\t\t\t\t\t</defs>\n\n\t\t\t\t\t<g\n\t\t\t\t\t\ttransform={`translate(${panOffset.value.x}, ${panOffset.value.y}) scale(${zoom.value})`}\n\t\t\t\t\t>\n\t\t\t\t\t\t<g className=\"links\">\n\t\t\t\t\t\t\t{graphData.value.links.map((link, index) => {\n\t\t\t\t\t\t\t\tconst sourceNode = graphData.value.nodes.find(\n\t\t\t\t\t\t\t\t\tn => n.id === link.source\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tconst targetNode = graphData.value.nodes.find(\n\t\t\t\t\t\t\t\t\tn => n.id === link.target\n\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\tif (!sourceNode || !targetNode) return null;\n\n\t\t\t\t\t\t\t\tconst sourceRadius = getNodeRadius(sourceNode);\n\t\t\t\t\t\t\t\tconst targetRadius = getNodeRadius(targetNode);\n\t\t\t\t\t\t\t\tconst sourceX = sourceNode.x + sourceRadius;\n\t\t\t\t\t\t\t\tconst sourceY = sourceNode.y;\n\t\t\t\t\t\t\t\tconst targetX = targetNode.x - targetRadius - 8;\n\t\t\t\t\t\t\t\tconst targetY = targetNode.y;\n\n\t\t\t\t\t\t\t\tconst midX = sourceX + (targetX - sourceX) * 0.5;\n\t\t\t\t\t\t\t\tconst pathData = `M ${sourceX} ${sourceY} C ${midX} ${sourceY}, ${midX} ${targetY}, ${targetX} ${targetY}`;\n\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\t\tkey={`link-${index}`}\n\t\t\t\t\t\t\t\t\t\tclassName=\"graph-link\"\n\t\t\t\t\t\t\t\t\t\td={pathData}\n\t\t\t\t\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\t\t\t\t\tmarkerEnd=\"url(#arrowhead)\"\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t</g>\n\n\t\t\t\t\t\t<g className=\"nodes\">\n\t\t\t\t\t\t\t{graphData.value.nodes.map(node => {\n\t\t\t\t\t\t\t\tconst radius = getNodeRadius(node);\n\t\t\t\t\t\t\t\tconst maxChars = Math.floor((radius * 2 - 16) / 6.5);\n\t\t\t\t\t\t\t\tconst displayName =\n\t\t\t\t\t\t\t\t\tnode.name.length > maxChars\n\t\t\t\t\t\t\t\t\t\t? node.name.slice(0, maxChars - 1) + \"…\"\n\t\t\t\t\t\t\t\t\t\t: node.name;\n\t\t\t\t\t\t\t\tconst isHovered = hoveredNode.value?.id === node.id;\n\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t<g\n\t\t\t\t\t\t\t\t\t\tkey={node.id}\n\t\t\t\t\t\t\t\t\t\tclassName={`graph-node-group ${isHovered ? \"hovered\" : \"\"}`}\n\t\t\t\t\t\t\t\t\t\tonMouseEnter={(e: MouseEvent) =>\n\t\t\t\t\t\t\t\t\t\t\thandleNodeMouseEnter(node, e)\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tonMouseMove={handleNodeMouseMove}\n\t\t\t\t\t\t\t\t\t\tonMouseLeave={handleNodeMouseLeave}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t<circle\n\t\t\t\t\t\t\t\t\t\t\tclassName={`graph-node ${node.type}`}\n\t\t\t\t\t\t\t\t\t\t\tcx={node.x}\n\t\t\t\t\t\t\t\t\t\t\tcy={node.y}\n\t\t\t\t\t\t\t\t\t\t\tr={radius}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t<text\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"graph-text\"\n\t\t\t\t\t\t\t\t\t\t\tx={node.x}\n\t\t\t\t\t\t\t\t\t\t\ty={node.y}\n\t\t\t\t\t\t\t\t\t\t\ttextAnchor=\"middle\"\n\t\t\t\t\t\t\t\t\t\t\tdominantBaseline=\"central\"\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{displayName}\n\t\t\t\t\t\t\t\t\t\t</text>\n\t\t\t\t\t\t\t\t\t</g>\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t</g>\n\t\t\t\t\t</g>\n\t\t\t\t</svg>\n\n\t\t\t\t<div className=\"graph-controls\">\n\t\t\t\t\t<button\n\t\t\t\t\t\tclassName=\"graph-reset-button\"\n\t\t\t\t\t\tonClick={resetView}\n\t\t\t\t\t\ttitle=\"Reset view\"\n\t\t\t\t\t>\n\t\t\t\t\t\t⟲ Reset View\n\t\t\t\t\t</button>\n\n\t\t\t\t\t<div ref={exportMenuRef} className=\"graph-export-container\">\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\tclassName=\"graph-export-button\"\n\t\t\t\t\t\t\tonClick={toggleExportMenu}\n\t\t\t\t\t\t\ttitle=\"Export graph\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t↓ Export\n\t\t\t\t\t\t</button>\n\t\t\t\t\t\t{showExportMenu.value && (\n\t\t\t\t\t\t\t<div className=\"graph-export-menu\">\n\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\tclassName=\"graph-export-menu-item\"\n\t\t\t\t\t\t\t\t\tonClick={handleExportMermaid}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\tMermaid\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\tclassName=\"graph-export-menu-item\"\n\t\t\t\t\t\t\t\t\tonClick={handleExportJSON}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\tJSON\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div className=\"graph-zoom-indicator\" title=\"Zoom level\">\n\t\t\t\t\t\t{Math.round(zoom.value * 100)}%\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t{toastText.value && (\n\t\t\t\t\t<div className=\"graph-toast\">{toastText.value}</div>\n\t\t\t\t)}\n\n\t\t\t\t{hoveredNode.value && (\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName=\"graph-tooltip\"\n\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\tleft: tooltipPos.value.x + 12,\n\t\t\t\t\t\t\ttop: tooltipPos.value.y - 8,\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t<div className=\"tooltip-header\">\n\t\t\t\t\t\t\t<span className={`tooltip-type ${hoveredNode.value.type}`}>\n\t\t\t\t\t\t\t\t{hoveredNode.value.type}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div className=\"tooltip-name\">{hoveredNode.value.name}</div>\n\t\t\t\t\t\t<div className=\"tooltip-id\">ID: {hoveredNode.value.id}</div>\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\n\t\t\t\t<div className=\"graph-legend\">\n\t\t\t\t\t<div className=\"legend-item\">\n\t\t\t\t\t\t<div className=\"legend-color signal\"></div>\n\t\t\t\t\t\t<span>Signal</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div className=\"legend-item\">\n\t\t\t\t\t\t<div className=\"legend-color computed\"></div>\n\t\t\t\t\t\t<span>Computed</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div className=\"legend-item\">\n\t\t\t\t\t\t<div className=\"legend-color effect\"></div>\n\t\t\t\t\t\t<span>Effect</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div className=\"legend-item\">\n\t\t\t\t\t\t<div className=\"legend-color component\"></div>\n\t\t\t\t\t\t<span>Component</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n","import type { SignalUpdate } from \"../context\";\n\ninterface UpdateItemProps {\n\tupdate: SignalUpdate;\n\tfirstUpdate?: SignalUpdate;\n\tcount?: number;\n}\n\nexport function UpdateItem({ update, count, firstUpdate }: UpdateItemProps) {\n\tconst time = new Date(\n\t\tupdate.timestamp || update.receivedAt\n\t).toLocaleTimeString();\n\n\tconst formatValue = (value: any): string => {\n\t\tif (value === null) return \"null\";\n\t\tif (value === undefined) return \"undefined\";\n\t\tif (typeof value === \"string\") return `\"${value}\"`;\n\t\tif (typeof value === \"function\") return \"function()\";\n\t\tif (typeof value === \"object\") {\n\t\t\ttry {\n\t\t\t\treturn JSON.stringify(value, null, 0);\n\t\t\t} catch {\n\t\t\t\treturn \"[Object]\";\n\t\t\t}\n\t\t}\n\t\treturn String(value);\n\t};\n\tconst countLabel = count && (\n\t\t<span class=\"update-count\" title=\"Number of grouped identical updates\">\n\t\t\tx{count}\n\t\t</span>\n\t);\n\n\tif (update.type === \"effect\" || update.type === \"component\") {\n\t\tconst icon = update.type === \"component\" ? \"🔄\" : \"↪️\";\n\t\tconst label = update.type === \"component\" ? \"Component render\" : \"Effect\";\n\t\treturn (\n\t\t\t<div className={`update-item ${update.type}`}>\n\t\t\t\t<div className=\"update-header\">\n\t\t\t\t\t<span className=\"signal-name\">\n\t\t\t\t\t\t{icon} {update.signalName}\n\t\t\t\t\t\t{countLabel}\n\t\t\t\t\t</span>\n\t\t\t\t\t<span className=\"update-type-badge\">{label}</span>\n\t\t\t\t\t<span className=\"update-time\">{time}</span>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n\n\tconst prevValue = formatValue(update.prevValue);\n\tconst newValue = formatValue(update.newValue);\n\tconst firstValue =\n\t\tfirstUpdate !== undefined ? formatValue(firstUpdate.prevValue) : undefined;\n\n\treturn (\n\t\t<div class={`update-item ${update.type}`}>\n\t\t\t<div class=\"update-header\">\n\t\t\t\t<span class=\"signal-name\">\n\t\t\t\t\t{update.depth === 0 ? \"🎯\" : \"↪️\"} {update.signalName}\n\t\t\t\t\t{countLabel}\n\t\t\t\t</span>\n\t\t\t\t<span class=\"update-time\">{time}</span>\n\t\t\t</div>\n\t\t\t<div class=\"value-change\">\n\t\t\t\t{firstValue && firstValue !== prevValue && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<span class=\"value-prev\">{firstValue}</span>\n\t\t\t\t\t\t<span class=\"value-arrow\">...</span>\n\t\t\t\t\t</>\n\t\t\t\t)}\n\t\t\t\t<span class=\"value-prev\">{prevValue}</span>\n\t\t\t\t<span class=\"value-arrow\">→</span>\n\t\t\t\t<span class=\"value-new\">{newValue}</span>\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n","import { useSignal } from \"@preact/signals\";\nimport type { UpdateTreeNode } from \"../context\";\nimport { UpdateItem } from \"./UpdateItem\";\n\ninterface UpdateTreeNodeProps {\n\tnode: UpdateTreeNode;\n}\n\nexport function UpdateTreeNodeComponent({ node }: UpdateTreeNodeProps) {\n\tconst isCollapsed = useSignal(false);\n\n\tconst toggleCollapse = () => {\n\t\tisCollapsed.value = !isCollapsed.value;\n\t};\n\n\tconst hasChildren = node.children.length > 0;\n\tconst nodeCount = node.type === \"group\" ? node.count : undefined;\n\tconst firstUpdate = node.type === \"group\" ? node.firstUpdate : undefined;\n\n\tlet childrenToRender: UpdateTreeNode[];\n\n\tif (node.type === \"group\" && node.firstChildren) {\n\t\tchildrenToRender = node.children.map((lastChild, index) => {\n\t\t\tconst firstChild = node.firstChildren[index];\n\t\t\tconst mergedChild: UpdateTreeNode = {\n\t\t\t\t...lastChild,\n\t\t\t\ttype: \"group\",\n\t\t\t\tfirstUpdate: firstChild.update,\n\t\t\t\tfirstChildren: firstChild.children,\n\t\t\t\tcount: node.count,\n\t\t\t};\n\t\t\treturn mergedChild;\n\t\t});\n\t} else {\n\t\tchildrenToRender = node.children;\n\t}\n\n\treturn (\n\t\t<div className=\"tree-node\">\n\t\t\t<div className=\"tree-node-content\">\n\t\t\t\t{hasChildren && (\n\t\t\t\t\t<button\n\t\t\t\t\t\tclassName=\"collapse-button\"\n\t\t\t\t\t\tonClick={toggleCollapse}\n\t\t\t\t\t\taria-label={isCollapsed.value ? \"Expand\" : \"Collapse\"}\n\t\t\t\t\t>\n\t\t\t\t\t\t{isCollapsed.value ? \"▶\" : \"▼\"}\n\t\t\t\t\t</button>\n\t\t\t\t)}\n\t\t\t\t{!hasChildren && <div className=\"collapse-spacer\" />}\n\t\t\t\t<div className=\"update-content\">\n\t\t\t\t\t<UpdateItem\n\t\t\t\t\t\tupdate={node.update}\n\t\t\t\t\t\tcount={nodeCount}\n\t\t\t\t\t\tfirstUpdate={firstUpdate}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t{hasChildren && !isCollapsed.value && (\n\t\t\t\t<div className=\"tree-children\">\n\t\t\t\t\t{childrenToRender.map(child => (\n\t\t\t\t\t\t<UpdateTreeNodeComponent key={child.id} node={child} />\n\t\t\t\t\t))}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n","import { useRef } from \"preact/hooks\";\nimport { useSignalEffect } from \"@preact/signals\";\nimport { UpdateTreeNodeComponent } from \"./UpdateTreeNode\";\nimport { getContext } from \"../context\";\n\nexport function UpdatesContainer() {\n\tconst { updatesStore } = getContext();\n\tconst updatesListRef = useRef<HTMLDivElement>(null);\n\tconst updateTree = updatesStore.collapsedUpdateTree.value;\n\n\tuseSignalEffect(() => {\n\t\t// Register scroll restoration\n\t\t// When a new update is added we scroll to top\n\t\t// Access the signal to subscribe to updates\n\t\tupdatesStore.updateTree.value;\n\t\tif (updatesListRef.current) {\n\t\t\tupdatesListRef.current.scrollTop = 0;\n\t\t}\n\t});\n\n\treturn (\n\t\t<div className=\"updates-container\">\n\t\t\t<div className=\"updates-header\">\n\t\t\t\t<div className=\"updates-stats\">\n\t\t\t\t\t<span>\n\t\t\t\t\t\tUpdates: <strong>{updatesStore.totalUpdates.value}</strong>\n\t\t\t\t\t</span>\n\t\t\t\t\t<span>\n\t\t\t\t\t\tSignals: <strong>{updatesStore.signalCounts.value.size}</strong>\n\t\t\t\t\t</span>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<div className=\"updates-list\" ref={updatesListRef}>\n\t\t\t\t{updateTree.map(node => (\n\t\t\t\t\t<UpdateTreeNodeComponent key={node.id} node={node} />\n\t\t\t\t))}\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n","import { render } from \"preact\";\nimport { useSignal } from \"@preact/signals\";\nimport type { DevToolsAdapter } from \"@preact/signals-devtools-adapter\";\nimport { EmptyState } from \"./components/EmptyState\";\nimport { Header } from \"./components/Header\";\nimport { SettingsPanel } from \"./components/SettingsPanel\";\nimport { GraphVisualization } from \"./components/Graph\";\nimport { UpdatesContainer } from \"./components/UpdatesContainer\";\nimport { initDevTools, destroyDevTools, getContext } from \"./context\";\n\nexport interface DevToolsPanelProps {\n\t/** Hide the header (useful for embedded contexts) */\n\thideHeader?: boolean;\n\t/** Initial tab to show */\n\tinitialTab?: \"updates\" | \"graph\";\n}\n\nexport function DevToolsPanel({\n\thideHeader = false,\n\tinitialTab = \"updates\",\n}: DevToolsPanelProps = {}) {\n\tconst { connectionStore } = getContext();\n\tconst activeTab = useSignal<\"updates\" | \"graph\">(initialTab);\n\n\treturn (\n\t\t<div className=\"signals-devtools\">\n\t\t\t{!hideHeader && <Header />}\n\n\t\t\t<SettingsPanel />\n\n\t\t\t<main className=\"main-content\">\n\t\t\t\t<div className=\"tabs\">\n\t\t\t\t\t<button\n\t\t\t\t\t\tclassName={`tab ${activeTab.value === \"updates\" ? \"active\" : \"\"}`}\n\t\t\t\t\t\tonClick={() => (activeTab.value = \"updates\")}\n\t\t\t\t\t>\n\t\t\t\t\t\tUpdates\n\t\t\t\t\t</button>\n\t\t\t\t\t<button\n\t\t\t\t\t\tclassName={`tab ${activeTab.value === \"graph\" ? \"active\" : \"\"}`}\n\t\t\t\t\t\tonClick={() => (activeTab.value = \"graph\")}\n\t\t\t\t\t>\n\t\t\t\t\t\tDependency Graph\n\t\t\t\t\t</button>\n\t\t\t\t</div>\n\t\t\t\t<div className=\"tab-content\">\n\t\t\t\t\t{!connectionStore.isConnected.value ? (\n\t\t\t\t\t\t<EmptyState onRefresh={connectionStore.refreshConnection} />\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t{activeTab.value === \"updates\" && <UpdatesContainer />}\n\t\t\t\t\t\t\t{activeTab.value === \"graph\" && <GraphVisualization />}\n\t\t\t\t\t\t</>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t</main>\n\t\t</div>\n\t);\n}\n\nexport interface MountOptions extends DevToolsPanelProps {\n\t/** The adapter to use for communication */\n\tadapter: DevToolsAdapter;\n\t/** The container element to render into */\n\tcontainer: HTMLElement;\n}\n\n/**\n * Mount the DevTools UI into a container element.\n *\n * @example\n * ```tsx\n * import { mount } from \"@preact/signals-devtools-ui\";\n * import { createDirectAdapter } from \"@preact/signals-devtools-adapter\";\n *\n * const adapter = createDirectAdapter();\n *\n * const unmount = await mount({\n * adapter,\n * container: document.getElementById(\"devtools\")!,\n * });\n *\n * // Later, to cleanup:\n * unmount();\n * ```\n */\nexport async function mount(options: MountOptions): Promise<() => void> {\n\tconst { adapter, container, ...panelProps } = options;\n\n\t// Initialize context with adapter\n\tinitDevTools(adapter);\n\n\t// Connect the adapter\n\tawait adapter.connect();\n\n\t// Clear existing content\n\tcontainer.innerHTML = \"\";\n\n\t// Render the panel\n\trender(<DevToolsPanel {...panelProps} />, container);\n\n\t// Return cleanup function\n\treturn () => {\n\t\trender(null, container);\n\t\tdestroyDevTools();\n\t};\n}\n"],"names":["n","l","u","t","i","r","o","e","f","c","s","a","p","v","y","w","Array","isArray","d","g","parentNode","removeChild","m","type","props","key","ref","__k","__","__b","__e","__c","constructor","__v","__i","__u","vnode","k","children","x","this","context","S","length","C","base","M","__d","push","$","__r","debounceRendering","sort","shift","__P","O","__n","namespaceURI","N","I","h","_","b","String","L","D","P","B","A","nextSibling","insertBefore","nodeType","T","setProperty","test","j","style","cssText","replace","toLowerCase","slice","addEventListener","removeEventListener","removeAttribute","setAttribute","F","event","H","prototype","render","contextType","value","__E","E","sub","state","__h","_sb","__s","getDerivedStateFromProps","componentWillMount","componentDidMount","componentWillReceiveProps","shouldComponentUpdate","some","componentWillUpdate","componentDidUpdate","getChildContext","getSnapshotBeforeUpdate","V","then","indexOf","z","localName","document","createTextNode","createElementNS","is","__m","data","call","childNodes","attributes","name","__html","innerHTML","content","q","diffed","forEach","map","current","unmount","componentWillUnmount","G","documentElement","arguments","defaultProps","firstChild","getDerivedStateFromError","setState","componentDidCatch","forceUpdate","Promise","bind","resolve","setTimeout","__source","__self","__H","__N","requestAnimationFrame","filter","clearTimeout","cancelAnimationFrame","Symbol","for","W","watched","Z","unwatched","brand","U","subscribe","valueOf","toString","toJSON","peek","Object","defineProperty","get","set","Error","dispose","apply","concat","window","__PREACT_SIGNALS_DEVTOOLS__","useSignal","__$f","__$u","displayName","defineProperties","configurable","__np","ownerSVGElement","__R","__f","queueMicrotask","useSignalEffect","Button","onClick","className","disabled","variant","popovertarget","active","_jsx","trim","EmptyState","onRefresh","title","description","buttonText","_jsxs","StatusIndicator","status","message","showIndicator","ConnectionModel","createModel","adapter","signal","isConnected","on","connectionStatus","available","refreshConnection","requestState","SettingsModel","settings","enabled","grouped","consoleLogging","maxUpdatesPerSecond","filterPatterns","showDisposedSignals","config","applySettings","newSettings","sendConfig","toggleShowDisposedSignals","ThemeModel","_mediaQuery$matches","theme","val","localStorage","getItem","_unused","mediaQuery","matchMedia","systemIsDark","matches","effect","handler","resolvedTheme","computed","resolved","el","querySelector","HTMLElement","dataset","toggleTheme","order","idx","setItem","_unused2","nodesAreEqual","update","signalId","every","child","index","UpdatesModel","settingsStore","updates","isPaused","disposedSignalIds","Set","addUpdate","item","receivedAt","Date","now","hasUpdates","signalCounts","counts","Map","signalName","updateTree","tree","stack","recentUpdates","reverse","depth","node","id","hasChildren","pop","parent","buildTree","signalUpdates","updatesArray","disposals","disposal","newDisposed","add","addDisposal","collapsedUpdateTree","updateTreeValue","nodes","lastNode","_extends","count","firstUpdate","firstChildren","collapseTree","totalUpdates","keys","clearUpdates","currentContext","getContext","initDevTools","updatesStore","connectionStore","themeStore","destroyDevTools","disconnect","themeLabels","auto","light","dark","themeIcons","Header","onTogglePause","onClear","SettingsPanel","popover","useRef","onApply","localSettings","checked","onChange","target","htmlFor","min","max","parseInt","placeholder","join","split","pattern","handleApply","onCancel","_popover$current","hide","copyToClipboard","text","copyEl","createElement","body","append","select","execCommand","remove","GraphVisualization","svgRef","containerRef","exportMenuRef","panOffset","zoom","isPanning","startPan","showExportMenu","toastText","hoveredNode","tooltipPos","useEffect","handleClickOutside","contains","graphData","useComputed","rawUpdates","disposed","showDisposed","links","has","signalType","allDependencies","dep","linkKey","source","subscribedTo","allLinks","from","values","nodeLayers","computeNodeLayers","layers","adjacency","inDegree","link","_adjacency$get","queue","_adjacency$get2","nodeId","currentLayer","targetId","_layers$get","targetLayer","Math","newInDegree","_nodeLayers$get","nodesByLayer","minimizeCrossings","targets","sources","nodePositions","pass","layer","barycenters","preds","reduce","acc","predId","_nodePositions$get","sorted","barycenter","succs","succId","_nodePositions$get2","layerNodes","layerStartY","size","handleMouseUp","mermaidIdPattern","computeMermaidId","getNodeRadius","textWidth","handleNodeMouseMove","container","rect","getBoundingClientRect","clientX","left","clientY","top","handleNodeMouseLeave","showToast","undefined","svgWidth","svgHeight","onMouseDown","button","onMouseMove","onMouseUp","onMouseLeave","onWheel","preventDefault","mouseX","mouseY","delta","deltaY","newZoom","zoomRatio","cursor","width","height","viewBox","markerWidth","markerHeight","refX","refY","orient","points","transform","sourceNode","find","targetNode","sourceRadius","targetRadius","sourceX","sourceY","targetX","targetY","midX","fill","markerEnd","_hoveredNode$value","radius","maxChars","floor","onMouseEnter","handleNodeMouseEnter","cx","cy","textAnchor","dominantBaseline","resetView","toggleExportMenu","async","lines","sourceId","JSON","stringify","round","UpdateItem","time","timestamp","toLocaleTimeString","formatValue","countLabel","class","icon","label","prevValue","newValue","firstValue","_Fragment","UpdateTreeNodeComponent","isCollapsed","nodeCount","childrenToRender","lastChild","mergedChild","toggleCollapse","UpdatesContainer","updatesListRef","scrollTop","DevToolsPanel","hideHeader","initialTab","activeTab","mount","options","panelProps","_objectWithoutPropertiesLoose","_excluded","connect"],"mappings":"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"}