@simten/embed 0.1.7 → 0.1.9

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.
@@ -76,4 +76,4 @@ main:
76
76
  `),()=>{R.contains(E)&&R.removeChild(E)}},[e]),M.jsx(EH,{isPresent:e,childRef:u,sizeRef:d,pop:a,children:a===!1?t:N.cloneElement(t,{ref:m})})}const TH=({children:t,initial:e,isPresent:n,onExitComplete:o,custom:s,presenceAffectsLayout:a,mode:l,anchorX:u,anchorY:d,root:h})=>{const p=Bh(NH),m=N.useId();let y=!0,b=N.useMemo(()=>(y=!1,{id:m,initial:e,isPresent:n,custom:s,onExitComplete:x=>{p.set(x,!0);for(const w of p.values())if(!w)return;o&&o()},register:x=>(p.set(x,!1),()=>p.delete(x))}),[n,p,o]);return a&&y&&(b={...b}),N.useMemo(()=>{p.forEach((x,w)=>p.set(w,!1))},[n]),N.useEffect(()=>{!n&&!p.size&&o&&o()},[n]),t=M.jsx(CH,{pop:l==="popLayout",isPresent:n,anchorX:u,anchorY:d,root:h,children:t}),M.jsx(Yc.Provider,{value:b,children:t})};function NH(){return new Map}function qS(t=!0){const e=N.useContext(Yc);if(e===null)return[!0,null];const{isPresent:n,onExitComplete:o,register:s}=e,a=N.useId();N.useEffect(()=>{if(t)return s(a)},[t]);const l=N.useCallback(()=>t&&o&&o(a),[a,o,t]);return!n&&o?[!1,l]:[!0]}const cu=t=>t.key||"";function GS(t){const e=[];return N.Children.forEach(t,n=>{N.isValidElement(n)&&e.push(n)}),e}const FS=({children:t,custom:e,initial:n=!0,onExitComplete:o,presenceAffectsLayout:s=!0,mode:a="sync",propagate:l=!1,anchorX:u="left",anchorY:d="top",root:h})=>{const[p,m]=qS(l),y=N.useMemo(()=>GS(t),[t]),b=l&&!p?[]:y.map(cu),x=N.useRef(!0),w=N.useRef(y),_=Bh(()=>new Map),S=N.useRef(new Set),[k,C]=N.useState(y),[E,R]=N.useState(y);y1(()=>{x.current=!1,w.current=y;for(let D=0;D<E.length;D++){const U=cu(E[D]);b.includes(U)?(_.delete(U),S.current.delete(U)):_.get(U)!==!0&&_.set(U,!1)}},[E,b.length,b.join("-")]);const A=[];if(y!==k){let D=[...y];for(let U=0;U<E.length;U++){const q=E[U],Y=cu(q);b.includes(Y)||(D.splice(U,0,q),A.push(q))}return a==="wait"&&A.length&&(D=A),R(GS(D)),C(y),null}const{forceRender:O}=N.useContext(Ph);return M.jsx(M.Fragment,{children:E.map(D=>{const U=cu(D),q=l&&!p?!1:y===E||b.includes(U),Y=()=>{if(S.current.has(U))return;if(S.current.add(U),_.has(U))_.set(U,!0);else return;let K=!0;_.forEach(W=>{W||(K=!1)}),K&&(O?.(),R(w.current),l&&m?.(),o&&o())};return M.jsx(TH,{isPresent:q,initial:!x.current||n?void 0:!1,custom:e,presenceAffectsLayout:s,mode:a,root:h,onExitComplete:q?void 0:Y,anchorX:u,anchorY:d,children:D},U)})})},XS=N.createContext({strict:!1}),ZS={animation:["animate","variants","whileHover","whileTap","exit","whileInView","whileFocus","whileDrag"],exit:["exit"],drag:["drag","dragControls"],focus:["whileFocus"],hover:["whileHover","onHoverStart","onHoverEnd"],tap:["whileTap","onTap","onTapStart","onTapCancel"],pan:["onPan","onPanStart","onPanSessionStart","onPanEnd"],inView:["whileInView","onViewportEnter","onViewportLeave"],layout:["layout","layoutId"]};let KS=!1;function AH(){if(KS)return;const t={};for(const e in ZS)t[e]={isEnabled:n=>ZS[e].some(o=>!!n[o])};$_(t),KS=!0}function QS(){return AH(),pB()}function MH(t){const e=QS();for(const n in t)e[n]={...e[n],...t[n]};$_(e)}const RH=new Set(["animate","exit","variants","initial","style","values","variants","transition","transformTemplate","custom","inherit","onBeforeLayoutMeasure","onAnimationStart","onAnimationComplete","onUpdate","onDragStart","onDrag","onDragEnd","onMeasureDragConstraints","onDirectionLock","onDragTransitionEnd","_dragX","_dragY","onHoverStart","onHoverEnd","onViewportEnter","onViewportLeave","globalTapTarget","propagate","ignoreStrict","viewport"]);function uu(t){return t.startsWith("while")||t.startsWith("drag")&&t!=="draggable"||t.startsWith("layout")||t.startsWith("onTap")||t.startsWith("onPan")||t.startsWith("onLayout")||RH.has(t)}let WS=t=>!uu(t);function kH(t){typeof t=="function"&&(WS=e=>e.startsWith("on")?!uu(e):t(e))}try{kH(require("@emotion/is-prop-valid").default)}catch{}function OH(t,e,n){const o={};for(const s in t)s==="values"&&typeof t.values=="object"||(WS(s)||n===!0&&uu(s)||!e&&!uu(s)||t.draggable&&s.startsWith("onDrag"))&&(o[s]=t[s]);return o}const fu=N.createContext({});function DH(t,e){if(iu(t)){const{initial:n,animate:o}=t;return{initial:n===!1||Ra(n)?n:void 0,animate:Ra(o)?o:void 0}}return t.inherit!==!1?e:{}}function jH(t){const{initial:e,animate:n}=DH(t,N.useContext(fu));return N.useMemo(()=>({initial:e,animate:n}),[JS(e),JS(n)])}function JS(t){return Array.isArray(t)?t.join(" "):t}const Fp=()=>({style:{},transform:{},transformOrigin:{},vars:{}});function t2(t,e,n){for(const o in e)!$e(e[o])&&!nS(o,n)&&(t[o]=e[o])}function zH({transformTemplate:t},e){return N.useMemo(()=>{const n=Fp();return Bp(n,e,t),Object.assign({},n.vars,n.style)},[e])}function VH(t,e){const n=t.style||{},o={};return t2(o,n,t),Object.assign(o,zH(t,e)),o}function LH(t,e){const n={},o=VH(t,e);return t.drag&&t.dragListener!==!1&&(n.draggable=!1,o.userSelect=o.WebkitUserSelect=o.WebkitTouchCallout="none",o.touchAction=t.drag===!0?"none":`pan-${t.drag==="x"?"y":"x"}`),t.tabIndex===void 0&&(t.onTap||t.onTapStart||t.whileTap)&&(n.tabIndex=0),n.style=o,n}const e2=()=>({...Fp(),attrs:{}});function IH(t,e,n,o){const s=N.useMemo(()=>{const a=e2();return iS(a,e,rS(o),t.transformTemplate,t.style),{...a.attrs,style:{...a.style}}},[e]);if(t.style){const a={};t2(a,t.style,t),s.style={...a,...s.style}}return s}const PH=["animate","circle","defs","desc","ellipse","g","image","line","filter","marker","mask","metadata","path","pattern","polygon","polyline","rect","stop","switch","symbol","svg","text","tspan","use","view"];function Xp(t){return typeof t!="string"||t.includes("-")?!1:!!(PH.indexOf(t)>-1||/[A-Z]/u.test(t))}function BH(t,e,n,{latestValues:o},s,a=!1,l){const d=(l??Xp(t)?IH:LH)(e,o,s,t),h=OH(e,typeof t=="string",a),p=t!==N.Fragment?{...h,...d,ref:n}:{},{children:m}=e,y=N.useMemo(()=>$e(m)?m.get():m,[m]);return N.createElement(t,{...p,children:y})}function HH({scrapeMotionValuesFromProps:t,createRenderState:e},n,o,s){return{latestValues:UH(n,o,s,t),renderState:e()}}function UH(t,e,n,o){const s={},a=o(t,{});for(const y in a)s[y]=au(a[y]);let{initial:l,animate:u}=t;const d=iu(t),h=B_(t);e&&h&&!d&&t.inherit!==!1&&(l===void 0&&(l=e.initial),u===void 0&&(u=e.animate));let p=n?n.initial===!1:!1;p=p||l===!1;const m=p?u:l;if(m&&typeof m!="boolean"&&!nu(m)){const y=Array.isArray(m)?m:[m];for(let b=0;b<y.length;b++){const x=wp(t,y[b]);if(x){const{transitionEnd:w,transition:_,...S}=x;for(const k in S){let C=S[k];if(Array.isArray(C)){const E=p?C.length-1:0;C=C[E]}C!==null&&(s[k]=C)}for(const k in w)s[k]=w[k]}}}return s}const n2=t=>(e,n)=>{const o=N.useContext(fu),s=N.useContext(Yc),a=()=>HH(t,e,o,s);return n?a():Bh(a)},$H=n2({scrapeMotionValuesFromProps:Up,createRenderState:Fp}),YH=n2({scrapeMotionValuesFromProps:sS,createRenderState:e2}),qH=Symbol.for("motionComponentSymbol");function GH(t,e,n){const o=N.useRef(n);N.useInsertionEffect(()=>{o.current=n});const s=N.useRef(null);return N.useCallback(a=>{a&&t.onMount?.(a),e&&(a?e.mount(a):e.unmount());const l=o.current;if(typeof l=="function")if(a){const u=l(a);typeof u=="function"&&(s.current=u)}else s.current?(s.current(),s.current=null):l(a);else l&&(l.current=a)},[e])}const i2=N.createContext({});function Jr(t){return t&&typeof t=="object"&&Object.prototype.hasOwnProperty.call(t,"current")}function FH(t,e,n,o,s,a){const{visualElement:l}=N.useContext(fu),u=N.useContext(XS),d=N.useContext(Yc),h=N.useContext(Gp),p=h.reducedMotion,m=h.skipAnimations,y=N.useRef(null),b=N.useRef(!1);o=o||u.renderer,!y.current&&o&&(y.current=o(t,{visualState:e,parent:l,props:n,presenceContext:d,blockInitialAnimation:d?d.initial===!1:!1,reducedMotionConfig:p,skipAnimations:m,isSVG:a}),b.current&&y.current&&(y.current.manuallyAnimateOnMount=!0));const x=y.current,w=N.useContext(i2);x&&!x.projection&&s&&(x.type==="html"||x.type==="svg")&&XH(y.current,n,s,w);const _=N.useRef(!1);N.useInsertionEffect(()=>{x&&_.current&&x.update(n,d)});const S=n[b_],k=N.useRef(!!S&&!window.MotionHandoffIsComplete?.(S)&&window.MotionHasOptimisedAnimation?.(S));return y1(()=>{b.current=!0,x&&(_.current=!0,window.MotionIsMounted=!0,x.updateFeatures(),x.scheduleRenderMicrotask(),k.current&&x.animationState&&x.animationState.animateChanges())}),N.useEffect(()=>{x&&(!k.current&&x.animationState&&x.animationState.animateChanges(),k.current&&(queueMicrotask(()=>{window.MotionHandoffMarkAsComplete?.(S)}),k.current=!1),x.enteringChildren=void 0)}),x}function XH(t,e,n,o){const{layoutId:s,layout:a,drag:l,dragConstraints:u,layoutScroll:d,layoutRoot:h,layoutCrossfade:p}=e;t.projection=new n(t.latestValues,e["data-framer-portal-id"]?void 0:o2(t.parent)),t.projection.setOptions({layoutId:s,layout:a,alwaysMeasureLayout:!!l||u&&Jr(u),visualElement:t,animationType:typeof a=="string"?a:"both",initialPromotionConfig:o,crossfade:p,layoutScroll:d,layoutRoot:h})}function o2(t){if(t)return t.options.allowProjection!==!1?t.projection:o2(t.parent)}function Zp(t,{forwardMotionProps:e=!1,type:n}={},o,s){o&&MH(o);const a=n?n==="svg":Xp(t),l=a?YH:$H;function u(h,p){let m;const y={...N.useContext(Gp),...h,layoutId:ZH(h)},{isStatic:b}=y,x=jH(h),w=l(h,b);if(!b&&g1){KH();const _=QH(y);m=_.MeasureLayout,x.visualElement=FH(t,w,y,s,_.ProjectionNode,a)}return M.jsxs(fu.Provider,{value:x,children:[m&&x.visualElement?M.jsx(m,{visualElement:x.visualElement,...y}):null,BH(t,h,GH(w,x.visualElement,p),w,b,e,a)]})}u.displayName=`motion.${typeof t=="string"?t:`create(${t.displayName??t.name??""})`}`;const d=N.forwardRef(u);return d[qH]=t,d}function ZH({layoutId:t}){const e=N.useContext(Ph).id;return e&&t!==void 0?e+"-"+t:t}function KH(t,e){N.useContext(XS).strict}function QH(t){const e=QS(),{drag:n,layout:o}=e;if(!n&&!o)return{};const s={...n,...o};return{MeasureLayout:n?.isEnabled(t)||o?.isEnabled(t)?s.MeasureLayout:void 0,ProjectionNode:s.ProjectionNode}}function WH(t,e){if(typeof Proxy>"u")return Zp;const n=new Map,o=(a,l)=>Zp(a,l,t,e),s=(a,l)=>o(a,l);return new Proxy(s,{get:(a,l)=>l==="create"?o:(n.has(l)||n.set(l,Zp(l,void 0,t,e)),n.get(l))})}const JH=(t,e)=>e.isSVG??Xp(t)?new kB(e):new CB(e,{allowProjection:t!==N.Fragment});class tU extends to{constructor(e){super(e),e.animationState||(e.animationState=VB(e))}updateAnimationControlsSubscription(){const{animate:e}=this.node.getProps();nu(e)&&(this.unmountControls=e.subscribe(this.node))}mount(){this.updateAnimationControlsSubscription()}update(){const{animate:e}=this.node.getProps(),{animate:n}=this.node.prevProps||{};e!==n&&this.updateAnimationControlsSubscription()}unmount(){this.node.animationState.reset(),this.unmountControls?.()}}let eU=0;class nU extends to{constructor(){super(...arguments),this.id=eU++}update(){if(!this.node.presenceContext)return;const{isPresent:e,onExitComplete:n}=this.node.presenceContext,{isPresent:o}=this.node.prevPresenceContext||{};if(!this.node.animationState||e===o)return;const s=this.node.animationState.setActive("exit",!e);n&&!e&&s.then(()=>{n(this.id)})}mount(){const{register:e,onExitComplete:n}=this.node.presenceContext||{};n&&n(this.id),e&&(this.unmount=e(this.id))}unmount(){}}const iU={animation:{Feature:tU},exit:{Feature:nU}};function ja(t){return{point:{x:t.pageX,y:t.pageY}}}const oU=t=>e=>kp(e)&&t(e,ja(e));function za(t,e,n,o){return Da(t,e,oU(n),o)}const r2=({current:t})=>t?t.ownerDocument.defaultView:null,s2=(t,e)=>Math.abs(t-e);function rU(t,e){const n=s2(t.x,e.x),o=s2(t.y,e.y);return Math.sqrt(n**2+o**2)}const a2=new Set(["auto","scroll"]);class l2{constructor(e,n,{transformPagePoint:o,contextWindow:s=window,dragSnapToOrigin:a=!1,distanceThreshold:l=3,element:u}={}){if(this.startEvent=null,this.lastMoveEvent=null,this.lastMoveEventInfo=null,this.handlers={},this.contextWindow=window,this.scrollPositions=new Map,this.removeScrollListeners=null,this.onElementScroll=b=>{this.handleScroll(b.target)},this.onWindowScroll=()=>{this.handleScroll(window)},this.updatePoint=()=>{if(!(this.lastMoveEvent&&this.lastMoveEventInfo))return;const b=Qp(this.lastMoveEventInfo,this.history),x=this.startEvent!==null,w=rU(b.offset,{x:0,y:0})>=this.distanceThreshold;if(!x&&!w)return;const{point:_}=b,{timestamp:S}=Le;this.history.push({..._,timestamp:S});const{onStart:k,onMove:C}=this.handlers;x||(k&&k(this.lastMoveEvent,b),this.startEvent=this.lastMoveEvent),C&&C(this.lastMoveEvent,b)},this.handlePointerMove=(b,x)=>{this.lastMoveEvent=b,this.lastMoveEventInfo=Kp(x,this.transformPagePoint),re.update(this.updatePoint,!0)},this.handlePointerUp=(b,x)=>{this.end();const{onEnd:w,onSessionEnd:_,resumeAnimation:S}=this.handlers;if((this.dragSnapToOrigin||!this.startEvent)&&S&&S(),!(this.lastMoveEvent&&this.lastMoveEventInfo))return;const k=Qp(b.type==="pointercancel"?this.lastMoveEventInfo:Kp(x,this.transformPagePoint),this.history);this.startEvent&&w&&w(b,k),_&&_(b,k)},!kp(e))return;this.dragSnapToOrigin=a,this.handlers=n,this.transformPagePoint=o,this.distanceThreshold=l,this.contextWindow=s||window;const d=ja(e),h=Kp(d,this.transformPagePoint),{point:p}=h,{timestamp:m}=Le;this.history=[{...p,timestamp:m}];const{onSessionStart:y}=n;y&&y(e,Qp(h,this.history)),this.removeListeners=wa(za(this.contextWindow,"pointermove",this.handlePointerMove),za(this.contextWindow,"pointerup",this.handlePointerUp),za(this.contextWindow,"pointercancel",this.handlePointerUp)),u&&this.startScrollTracking(u)}startScrollTracking(e){let n=e.parentElement;for(;n;){const o=getComputedStyle(n);(a2.has(o.overflowX)||a2.has(o.overflowY))&&this.scrollPositions.set(n,{x:n.scrollLeft,y:n.scrollTop}),n=n.parentElement}this.scrollPositions.set(window,{x:window.scrollX,y:window.scrollY}),window.addEventListener("scroll",this.onElementScroll,{capture:!0}),window.addEventListener("scroll",this.onWindowScroll),this.removeScrollListeners=()=>{window.removeEventListener("scroll",this.onElementScroll,{capture:!0}),window.removeEventListener("scroll",this.onWindowScroll)}}handleScroll(e){const n=this.scrollPositions.get(e);if(!n)return;const o=e===window,s=o?{x:window.scrollX,y:window.scrollY}:{x:e.scrollLeft,y:e.scrollTop},a={x:s.x-n.x,y:s.y-n.y};a.x===0&&a.y===0||(o?this.lastMoveEventInfo&&(this.lastMoveEventInfo.point.x+=a.x,this.lastMoveEventInfo.point.y+=a.y):this.history.length>0&&(this.history[0].x-=a.x,this.history[0].y-=a.y),this.scrollPositions.set(e,s),re.update(this.updatePoint,!0))}updateHandlers(e){this.handlers=e}end(){this.removeListeners&&this.removeListeners(),this.removeScrollListeners&&this.removeScrollListeners(),this.scrollPositions.clear(),Qi(this.updatePoint)}}function Kp(t,e){return e?{point:e(t.point)}:t}function c2(t,e){return{x:t.x-e.x,y:t.y-e.y}}function Qp({point:t},e){return{point:t,delta:c2(t,u2(e)),offset:c2(t,sU(e)),velocity:aU(e,.1)}}function sU(t){return t[0]}function u2(t){return t[t.length-1]}function aU(t,e){if(t.length<2)return{x:0,y:0};let n=t.length-1,o=null;const s=u2(t);for(;n>=0&&(o=t[n],!(s.timestamp-o.timestamp>Ln(e)));)n--;if(!o)return{x:0,y:0};o===t[0]&&t.length>2&&s.timestamp-o.timestamp>Ln(e)*2&&(o=t[1]);const a=bn(s.timestamp-o.timestamp);if(a===0)return{x:0,y:0};const l={x:(s.x-o.x)/a,y:(s.y-o.y)/a};return l.x===1/0&&(l.x=0),l.y===1/0&&(l.y=0),l}function lU(t,{min:e,max:n},o){return e!==void 0&&t<e?t=o?he(e,t,o.min):Math.max(t,e):n!==void 0&&t>n&&(t=o?he(n,t,o.max):Math.min(t,n)),t}function f2(t,e,n){return{min:e!==void 0?t.min+e:void 0,max:n!==void 0?t.max+n-(t.max-t.min):void 0}}function cU(t,{top:e,left:n,bottom:o,right:s}){return{x:f2(t.x,n,s),y:f2(t.y,e,o)}}function d2(t,e){let n=e.min-t.min,o=e.max-t.max;return e.max-e.min<t.max-t.min&&([n,o]=[o,n]),{min:n,max:o}}function uU(t,e){return{x:d2(t.x,e.x),y:d2(t.y,e.y)}}function fU(t,e){let n=.5;const o=Ge(t),s=Ge(e);return s>o?n=_a(e.min,e.max-o,t.min):o>s&&(n=_a(t.min,t.max-s,e.min)),ni(0,1,n)}function dU(t,e){const n={};return e.min!==void 0&&(n.min=e.min-t.min),e.max!==void 0&&(n.max=e.max-t.min),n}const Wp=.35;function hU(t=Wp){return t===!1?t=0:t===!0&&(t=Wp),{x:h2(t,"left","right"),y:h2(t,"top","bottom")}}function h2(t,e,n){return{min:p2(t,e),max:p2(t,n)}}function p2(t,e){return typeof t=="number"?t:t[e]||0}const pU=new WeakMap;class mU{constructor(e){this.openDragLock=null,this.isDragging=!1,this.currentDirection=null,this.originPoint={x:0,y:0},this.constraints=!1,this.hasMutatedConstraints=!1,this.elastic=Me(),this.latestPointerEvent=null,this.latestPanInfo=null,this.visualElement=e}start(e,{snapToCursor:n=!1,distanceThreshold:o}={}){const{presenceContext:s}=this.visualElement;if(s&&s.isPresent===!1)return;const a=m=>{n&&this.snapToCursor(ja(m).point),this.stopAnimation()},l=(m,y)=>{const{drag:b,dragPropagation:x,onDragStart:w}=this.getProps();if(b&&!x&&(this.openDragLock&&this.openDragLock(),this.openDragLock=YP(b),!this.openDragLock))return;this.latestPointerEvent=m,this.latestPanInfo=y,this.isDragging=!0,this.currentDirection=null,this.resolveConstraints(),this.visualElement.projection&&(this.visualElement.projection.isAnimationBlocked=!0,this.visualElement.projection.target=void 0),oi(S=>{let k=this.getAxisMotionValue(S).get()||0;if(ii.test(k)){const{projection:C}=this.visualElement;if(C&&C.layout){const E=C.layout.layoutBox[S];E&&(k=Ge(E)*(parseFloat(k)/100))}}this.originPoint[S]=k}),w&&re.update(()=>w(m,y),!1,!0),Sp(this.visualElement,"transform");const{animationState:_}=this.visualElement;_&&_.setActive("whileDrag",!0)},u=(m,y)=>{this.latestPointerEvent=m,this.latestPanInfo=y;const{dragPropagation:b,dragDirectionLock:x,onDirectionLock:w,onDrag:_}=this.getProps();if(!b&&!this.openDragLock)return;const{offset:S}=y;if(x&&this.currentDirection===null){this.currentDirection=yU(S),this.currentDirection!==null&&w&&w(this.currentDirection);return}this.updateAxis("x",y.point,S),this.updateAxis("y",y.point,S),this.visualElement.render(),_&&re.update(()=>_(m,y),!1,!0)},d=(m,y)=>{this.latestPointerEvent=m,this.latestPanInfo=y,this.stop(m,y),this.latestPointerEvent=null,this.latestPanInfo=null},h=()=>{const{dragSnapToOrigin:m}=this.getProps();(m||this.constraints)&&this.startAnimation({x:0,y:0})},{dragSnapToOrigin:p}=this.getProps();this.panSession=new l2(e,{onSessionStart:a,onStart:l,onMove:u,onSessionEnd:d,resumeAnimation:h},{transformPagePoint:this.visualElement.getTransformPagePoint(),dragSnapToOrigin:p,distanceThreshold:o,contextWindow:r2(this.visualElement),element:this.visualElement.current})}stop(e,n){const o=e||this.latestPointerEvent,s=n||this.latestPanInfo,a=this.isDragging;if(this.cancel(),!a||!s||!o)return;const{velocity:l}=s;this.startAnimation(l);const{onDragEnd:u}=this.getProps();u&&re.postRender(()=>u(o,s))}cancel(){this.isDragging=!1;const{projection:e,animationState:n}=this.visualElement;e&&(e.isAnimationBlocked=!1),this.endPanSession();const{dragPropagation:o}=this.getProps();!o&&this.openDragLock&&(this.openDragLock(),this.openDragLock=null),n&&n.setActive("whileDrag",!1)}endPanSession(){this.panSession&&this.panSession.end(),this.panSession=void 0}updateAxis(e,n,o){const{drag:s}=this.getProps();if(!o||!du(e,s,this.currentDirection))return;const a=this.getAxisMotionValue(e);let l=this.originPoint[e]+o[e];this.constraints&&this.constraints[e]&&(l=lU(l,this.constraints[e],this.elastic[e])),a.set(l)}resolveConstraints(){const{dragConstraints:e,dragElastic:n}=this.getProps(),o=this.visualElement.projection&&!this.visualElement.projection.layout?this.visualElement.projection.measure(!1):this.visualElement.projection?.layout,s=this.constraints;e&&Jr(e)?this.constraints||(this.constraints=this.resolveRefConstraints()):e&&o?this.constraints=cU(o.layoutBox,e):this.constraints=!1,this.elastic=hU(n),s!==this.constraints&&!Jr(e)&&o&&this.constraints&&!this.hasMutatedConstraints&&oi(a=>{this.constraints!==!1&&this.getAxisMotionValue(a)&&(this.constraints[a]=dU(o.layoutBox[a],this.constraints[a]))})}resolveRefConstraints(){const{dragConstraints:e,onMeasureDragConstraints:n}=this.getProps();if(!e||!Jr(e))return!1;const o=e.current,{projection:s}=this.visualElement;if(!s||!s.layout)return!1;const a=bB(o,s.root,this.visualElement.getTransformPagePoint());let l=uU(s.layout.layoutBox,a);if(n){const u=n(gB(l));this.hasMutatedConstraints=!!u,u&&(l=q_(u))}return l}startAnimation(e){const{drag:n,dragMomentum:o,dragElastic:s,dragTransition:a,dragSnapToOrigin:l,onDragTransitionEnd:u}=this.getProps(),d=this.constraints||{},h=oi(p=>{if(!du(p,n,this.currentDirection))return;let m=d&&d[p]||{};l&&(m={min:0,max:0});const y=s?200:1e6,b=s?40:1e7,x={type:"inertia",velocity:o?e[p]:0,bounceStiffness:y,bounceDamping:b,timeConstant:750,restDelta:1,restSpeed:10,...a,...m};return this.startAxisValueAnimation(p,x)});return Promise.all(h).then(u)}startAxisValueAnimation(e,n){const o=this.getAxisMotionValue(e);return Sp(this.visualElement,e),o.start(xp(e,o,0,n,this.visualElement,!1))}stopAnimation(){oi(e=>this.getAxisMotionValue(e).stop())}getAxisMotionValue(e){const n=`_drag${e.toUpperCase()}`,o=this.visualElement.getProps(),s=o[n];return s||this.visualElement.getValue(e,(o.initial?o.initial[e]:void 0)||0)}snapToCursor(e){oi(n=>{const{drag:o}=this.getProps();if(!du(n,o,this.currentDirection))return;const{projection:s}=this.visualElement,a=this.getAxisMotionValue(n);if(s&&s.layout){const{min:l,max:u}=s.layout.layoutBox[n],d=a.get()||0;a.set(e[n]-he(l,u,.5)+d)}})}scalePositionWithinConstraints(){if(!this.visualElement.current)return;const{drag:e,dragConstraints:n}=this.getProps(),{projection:o}=this.visualElement;if(!Jr(n)||!o||!this.constraints)return;this.stopAnimation();const s={x:0,y:0};oi(l=>{const u=this.getAxisMotionValue(l);if(u&&this.constraints!==!1){const d=u.get();s[l]=fU({min:d,max:d},this.constraints[l])}});const{transformTemplate:a}=this.visualElement.getProps();this.visualElement.current.style.transform=a?a({},""):"none",o.root&&o.root.updateScroll(),o.updateLayout(),this.constraints=!1,this.resolveConstraints(),oi(l=>{if(!du(l,e,null))return;const u=this.getAxisMotionValue(l),{min:d,max:h}=this.constraints[l];u.set(he(d,h,s[l]))}),this.visualElement.render()}addListeners(){if(!this.visualElement.current)return;pU.set(this.visualElement,this);const e=this.visualElement.current,n=za(e,"pointerdown",h=>{const{drag:p,dragListener:m=!0}=this.getProps(),y=h.target,b=y!==e&&KP(y);p&&m&&!b&&this.start(h)});let o;const s=()=>{const{dragConstraints:h}=this.getProps();Jr(h)&&h.current&&(this.constraints=this.resolveRefConstraints(),o||(o=gU(e,h.current,()=>this.scalePositionWithinConstraints())))},{projection:a}=this.visualElement,l=a.addEventListener("measure",s);a&&!a.layout&&(a.root&&a.root.updateScroll(),a.updateLayout()),re.read(s);const u=Da(window,"resize",()=>this.scalePositionWithinConstraints()),d=a.addEventListener("didUpdate",(({delta:h,hasLayoutChanged:p})=>{this.isDragging&&p&&(oi(m=>{const y=this.getAxisMotionValue(m);y&&(this.originPoint[m]+=h[m].translate,y.set(y.get()+h[m].translate))}),this.visualElement.render())}));return()=>{u(),n(),l(),d&&d(),o&&o()}}getProps(){const e=this.visualElement.getProps(),{drag:n=!1,dragDirectionLock:o=!1,dragPropagation:s=!1,dragConstraints:a=!1,dragElastic:l=Wp,dragMomentum:u=!0}=e;return{...e,drag:n,dragDirectionLock:o,dragPropagation:s,dragConstraints:a,dragElastic:l,dragMomentum:u}}}function m2(t){let e=!0;return()=>{if(e){e=!1;return}t()}}function gU(t,e,n){const o=L_(t,m2(n)),s=L_(e,m2(n));return()=>{o(),s()}}function du(t,e,n){return(e===!0||e===t)&&(n===null||n===t)}function yU(t,e=10){let n=null;return Math.abs(t.y)>e?n="y":Math.abs(t.x)>e&&(n="x"),n}class vU extends to{constructor(e){super(e),this.removeGroupControls=vn,this.removeListeners=vn,this.controls=new mU(e)}mount(){const{dragControls:e}=this.node.getProps();e&&(this.removeGroupControls=e.subscribe(this.controls)),this.removeListeners=this.controls.addListeners()||vn}update(){const{dragControls:e}=this.node.getProps(),{dragControls:n}=this.node.prevProps||{};e!==n&&(this.removeGroupControls(),e&&(this.removeGroupControls=e.subscribe(this.controls)))}unmount(){this.removeGroupControls(),this.removeListeners(),this.controls.isDragging||this.controls.endPanSession()}}const Jp=t=>(e,n)=>{t&&re.update(()=>t(e,n),!1,!0)};class bU extends to{constructor(){super(...arguments),this.removePointerDownListener=vn}onPointerDown(e){this.session=new l2(e,this.createPanHandlers(),{transformPagePoint:this.node.getTransformPagePoint(),contextWindow:r2(this.node)})}createPanHandlers(){const{onPanSessionStart:e,onPanStart:n,onPan:o,onPanEnd:s}=this.node.getProps();return{onSessionStart:Jp(e),onStart:Jp(n),onMove:Jp(o),onEnd:(a,l)=>{delete this.session,s&&re.postRender(()=>s(a,l))}}}mount(){this.removePointerDownListener=za(this.node.current,"pointerdown",e=>this.onPointerDown(e))}update(){this.session&&this.session.updateHandlers(this.createPanHandlers())}unmount(){this.removePointerDownListener(),this.session&&this.session.end()}}let tm=!1;class xU extends N.Component{componentDidMount(){const{visualElement:e,layoutGroup:n,switchLayoutGroup:o,layoutId:s}=this.props,{projection:a}=e;a&&(n.group&&n.group.add(a),o&&o.register&&s&&o.register(a),tm&&a.root.didUpdate(),a.addEventListener("animationComplete",()=>{this.safeToRemove()}),a.setOptions({...a.options,layoutDependency:this.props.layoutDependency,onExitComplete:()=>this.safeToRemove()})),lu.hasEverUpdated=!0}getSnapshotBeforeUpdate(e){const{layoutDependency:n,visualElement:o,drag:s,isPresent:a}=this.props,{projection:l}=o;return l&&(l.isPresent=a,e.layoutDependency!==n&&l.setOptions({...l.options,layoutDependency:n}),tm=!0,s||e.layoutDependency!==n||n===void 0||e.isPresent!==a?l.willUpdate():this.safeToRemove(),e.isPresent!==a&&(a?l.promote():l.relegate()||re.postRender(()=>{const u=l.getStack();(!u||!u.members.length)&&this.safeToRemove()}))),null}componentDidUpdate(){const{projection:e}=this.props.visualElement;e&&(e.root.didUpdate(),Rp.postRender(()=>{!e.currentAnimation&&e.isLead()&&this.safeToRemove()}))}componentWillUnmount(){const{visualElement:e,layoutGroup:n,switchLayoutGroup:o}=this.props,{projection:s}=e;tm=!0,s&&(s.scheduleCheckAfterUnmount(),n&&n.group&&n.group.remove(s),o&&o.deregister&&o.deregister(s))}safeToRemove(){const{safeToRemove:e}=this.props;e&&e()}render(){return null}}function g2(t){const[e,n]=qS(),o=N.useContext(Ph);return M.jsx(xU,{...t,layoutGroup:o,switchLayoutGroup:N.useContext(i2),isPresent:e,safeToRemove:n})}const wU={pan:{Feature:bU},drag:{Feature:vU,ProjectionNode:$S,MeasureLayout:g2}};function y2(t,e,n){const{props:o}=t;t.animationState&&o.whileHover&&t.animationState.setActive("whileHover",n==="Start");const s="onHover"+n,a=o[s];a&&re.postRender(()=>a(e,ja(e)))}class _U extends to{mount(){const{current:e}=this.node;e&&(this.unmount=GP(e,(n,o)=>(y2(this.node,o,"Start"),s=>y2(this.node,s,"End"))))}unmount(){}}class SU extends to{constructor(){super(...arguments),this.isActive=!1}onFocus(){let e=!1;try{e=this.node.current.matches(":focus-visible")}catch{e=!0}!e||!this.node.animationState||(this.node.animationState.setActive("whileFocus",!0),this.isActive=!0)}onBlur(){!this.isActive||!this.node.animationState||(this.node.animationState.setActive("whileFocus",!1),this.isActive=!1)}mount(){this.unmount=wa(Da(this.node.current,"focus",()=>this.onFocus()),Da(this.node.current,"blur",()=>this.onBlur()))}unmount(){}}function v2(t,e,n){const{props:o}=t;if(t.current instanceof HTMLButtonElement&&t.current.disabled)return;t.animationState&&o.whileTap&&t.animationState.setActive("whileTap",n==="Start");const s="onTap"+(n==="End"?"":n),a=o[s];a&&re.postRender(()=>a(e,ja(e)))}class EU extends to{mount(){const{current:e}=this.node;if(!e)return;const{globalTapTarget:n,propagate:o}=this.node.props;this.unmount=WP(e,(s,a)=>(v2(this.node,a,"Start"),(l,{success:u})=>v2(this.node,l,u?"End":"Cancel")),{useGlobalTarget:n,stopPropagation:o?.tap===!1})}unmount(){}}const em=new WeakMap,nm=new WeakMap,CU=t=>{const e=em.get(t.target);e&&e(t)},TU=t=>{t.forEach(CU)};function NU({root:t,...e}){const n=t||document;nm.has(n)||nm.set(n,{});const o=nm.get(n),s=JSON.stringify(e);return o[s]||(o[s]=new IntersectionObserver(TU,{root:t,...e})),o[s]}function AU(t,e,n){const o=NU(e);return em.set(t,n),o.observe(t),()=>{em.delete(t),o.unobserve(t)}}const MU={some:0,all:1};class RU extends to{constructor(){super(...arguments),this.hasEnteredView=!1,this.isInView=!1}startObserver(){this.unmount();const{viewport:e={}}=this.node.getProps(),{root:n,margin:o,amount:s="some",once:a}=e,l={root:n?n.current:void 0,rootMargin:o,threshold:typeof s=="number"?s:MU[s]},u=d=>{const{isIntersecting:h}=d;if(this.isInView===h||(this.isInView=h,a&&!h&&this.hasEnteredView))return;h&&(this.hasEnteredView=!0),this.node.animationState&&this.node.animationState.setActive("whileInView",h);const{onViewportEnter:p,onViewportLeave:m}=this.node.getProps(),y=h?p:m;y&&y(d)};return AU(this.node.current,l,u)}mount(){this.startObserver()}update(){if(typeof IntersectionObserver>"u")return;const{props:e,prevProps:n}=this.node;["amount","margin","root"].some(kU(e,n))&&this.startObserver()}unmount(){}}function kU({viewport:t={}},{viewport:e={}}={}){return n=>t[n]!==e[n]}const OU={...iU,...{inView:{Feature:RU},tap:{Feature:EU},focus:{Feature:SU},hover:{Feature:_U}},...wU,...{layout:{ProjectionNode:$S,MeasureLayout:g2}}},hu=WH(OU,JH),b2="__boundary_in_",x2="__boundary_out_";function DU(t){const e=[],n=[];for(const o of t.inputs){const s=`${b2}${o.name}`,a=o.portType.kind==="bus";e.push({id:s,label:o.name,componentRef:a?"Input":"Switch",arguments:a?{value:0,width:o.portType.width}:{value:!1},inputs:[],outputs:[{id:`${s}_out`,name:"out",portType:o.portType}],clocks:[]})}for(const o of t.outputs){const s=`${x2}${o.name}`,a=o.portType.kind==="bus";e.push({id:s,label:o.name,componentRef:a?"HexDisplay":"Led",arguments:{},inputs:[{id:`${s}_in`,name:"in",portType:o.portType}],outputs:[],clocks:[]})}for(const o of t.connections){const s={...o.source},a={...o.target};o.source.nodeId===""&&(s.nodeId=`${b2}${o.source.portName}`,s.portName="out"),o.target.nodeId===""&&(a.nodeId=`${x2}${o.target.portName}`,a.portName="in"),n.push({...o,source:s,target:a})}return{...t,name:`__drilldown_${t.name}`,nodes:[...e,...t.nodes],connections:n,implementation:{kind:"primitive"}}}const De="__top__";function jU(t,e,n=!1,o){const s=[],a=[],l={path:"",componentName:t.name,children:[],primitives:[]};function u(p,m,y,b=new Set){for(const x of p.nodes){const w=m+x.id,_=e.resolveCircuit(x.componentRef);if(!_)throw new Error(`Unknown component: ${x.componentRef} (referenced by node ${w})`);if(_.implementation.kind==="primitive")s.push({id:w,primitiveType:x.componentRef,arguments:x.arguments,inputs:x.inputs.map(S=>({...S,nodeId:w})),outputs:x.outputs.map(S=>({...S,nodeId:w})),clocks:x.clocks.map(S=>({...S,nodeId:w})),dependents:[],inputSources:[]}),y.primitives.push(w);else if(_.implementation.kind==="composite"){if(b.has(x.componentRef))throw new Error(`Recursive circuit definition detected: '${x.componentRef}' references itself (cycle: ${[...b,x.componentRef].join(" → ")})`);const S={path:w,componentName:x.componentRef,children:[],primitives:[]};y.children.push(S);const k=new Set(b);k.add(x.componentRef),u(_,w+".",S,k)}else console.warn(`Intrinsic component ${x.componentRef} treated as primitive during elaboration`),s.push({id:w,primitiveType:x.componentRef,arguments:x.arguments,inputs:x.inputs.map(S=>({...S,nodeId:w})),outputs:x.outputs.map(S=>({...S,nodeId:w})),clocks:x.clocks.map(S=>({...S,nodeId:w})),dependents:[],inputSources:[]}),y.primitives.push(w)}for(const x of p.connections){const w=x.source.nodeId===""?m===""?De:m.slice(0,-1):m+x.source.nodeId,_=x.target.nodeId===""?m===""?De:m.slice(0,-1):m+x.target.nodeId;a.push({id:`${w}.${x.source.portName}->${_}.${x.target.portName}`,source:{nodeId:w,portName:x.source.portName},target:{nodeId:_,portName:x.target.portName},portType:x.portType})}}if(t.implementation.kind==="primitive"&&t.nodes.length===0){const p=t.name;s.push({id:p,primitiveType:t.name,arguments:{},inputs:t.inputs.map(m=>({id:`${p}.${m.name}`,name:m.name,portType:m.portType,nodeId:p})),outputs:t.outputs.map(m=>({id:`${p}.${m.name}`,name:m.name,portType:m.portType,nodeId:p})),clocks:t.clocks.map(m=>({id:`${p}.${m.name}`,name:m.name,nodeId:p})),dependents:[],inputSources:[]}),l.primitives.push(p);for(const m of t.inputs)a.push({id:`${De}.${m.name}->${p}.${m.name}`,source:{nodeId:De,portName:m.name},target:{nodeId:p,portName:m.name},portType:m.portType});for(const m of t.outputs)a.push({id:`${p}.${m.name}->${De}.${m.name}`,source:{nodeId:p,portName:m.name},target:{nodeId:De,portName:m.name},portType:m.portType})}else u(t,"",l,new Set([t.name]));const d=zU(t,a,s,e,"",n),h={nodes:s,connections:d,hierarchy:l,topLevelInputs:t.inputs,topLevelOutputs:t.outputs,nodeMap:new Map};return LU(h),h}function zU(t,e,n,o,s,a=!1){const l=new Map,u=new Set;function d(m,y,b=new Set){for(const x of m.nodes){const w=y+x.id,_=o.resolveCircuit(x.componentRef);if(_&&_.implementation.kind==="composite"){if(b.has(x.componentRef))continue;u.add(w),a&&console.log(`
77
77
  === Tracing composite: ${w} (${x.componentRef}) ===`),VU(_,w,l,o,a);const S=new Set(b);S.add(x.componentRef),d(_,w+".",S)}}}if(d(t,s,new Set([t.name])),a){console.log(`
78
78
  === Port Forwarding Map (${l.size} rules) ===`);for(const[m,y]of l.entries())for(const b of y)console.log(` ${m} -> ${b.nodeId}.${b.portName}`)}const h=[];for(const m of e){const y=u.has(m.source.nodeId),b=u.has(m.target.nodeId),x=b&&m.source.nodeId.startsWith(m.target.nodeId+"."),w=y&&m.target.nodeId.startsWith(m.source.nodeId+".");if(x||w){a&&console.log(` SKIP PORT FORWARDING: ${m.source.nodeId}.${m.source.portName} -> ${m.target.nodeId}.${m.target.portName}`);continue}const _=y&&b&&m.source.nodeId===m.target.nodeId,S=R=>R.nodeId===De||n.some(A=>A.id===R.nodeId),k=R=>{const A=[],O=new Set,D=[R];for(;D.length>0;){const U=D.shift(),q=`${U.nodeId}.${U.portName}`;if(!O.has(q)){if(O.add(q),S(U)){A.push(U);continue}if(u.has(U.nodeId)&&l.has(q)){const Y=l.get(q);for(const K of Y)D.push(K)}else A.push(U)}}return A.length>0?A:[R]};let C=[m.source];if(y&&!_&&(C=k(m.source),a&&C.length>0))for(const R of C)console.log(` FORWARD SOURCE: ${m.source.nodeId}.${m.source.portName} -> ${R.nodeId}.${R.portName}`);let E=[m.target];if(b&&!_&&(E=k(m.target),a&&E.length>0))for(const R of E)console.log(` FORWARD TARGET: ${m.target.nodeId}.${m.target.portName} -> ${R.nodeId}.${R.portName}`);for(const R of C)for(const A of E)R.nodeId===A.nodeId&&R.portName===A.portName||h.push({id:`${R.nodeId}.${R.portName}->${A.nodeId}.${A.portName}`,source:R,target:A,portType:m.portType})}const p=h.filter(m=>u.has(m.source.nodeId)&&m.source.nodeId===m.target.nodeId);if(p.length>0){a&&console.log(`
79
- === Eliminating ${p.length} passthrough connections ===`);const m=[],y=new Set;for(const b of h)if(u.has(b.source.nodeId)&&b.source.nodeId===b.target.nodeId){y.add(b.id),a&&console.log(` PASSTHROUGH: ${b.source.nodeId}.${b.source.portName} -> ${b.target.portName}`);const w=h.filter(S=>S.target.nodeId===b.source.nodeId&&S.target.portName===b.source.portName&&!y.has(S.id)),_=h.filter(S=>S.source.nodeId===b.target.nodeId&&S.source.portName===b.target.portName&&!y.has(S.id));for(const S of w)for(const k of _){const C={id:`${S.source.nodeId}.${S.source.portName}->${k.target.nodeId}.${k.target.portName}`,source:S.source,target:k.target,portType:b.portType};m.push(C),y.add(S.id),y.add(k.id),a&&console.log(` DIRECT: ${C.source.nodeId}.${C.source.portName} -> ${C.target.nodeId}.${C.target.portName}`)}}else y.has(b.id)||m.push(b);return w2(m,n,u,a)}return w2(h,n,u,a)}function w2(t,e,n,o){const s=new Set(e.map(p=>p.id)),a=p=>p.nodeId===De||s.has(p.nodeId),l=new Map;for(const p of t){const m=`${p.source.nodeId}.${p.source.portName}`;l.has(m)||l.set(m,[]),l.get(m).push(p)}const u=p=>{const m=[],y=new Set,b=[p];for(;b.length>0;){const x=b.pop(),w=`${x.nodeId}.${x.portName}`;if(!y.has(w)){if(y.add(w),a(x)){m.push(x);continue}for(const _ of l.get(w)??[])b.push(_.target)}}return m},d=[],h=new Set;for(const p of t){if(!a(p.source))continue;const m=a(p.target)?[p.target]:u(p.target);for(const y of m){if(p.source.nodeId===y.nodeId&&p.source.portName===y.portName)continue;const x=`${p.source.nodeId}.${p.source.portName}->${y.nodeId}.${y.portName}`;h.has(x)||(h.add(x),o&&console.log(` RESOLVED: ${p.source.nodeId}.${p.source.portName} -> ${y.nodeId}.${y.portName}`),d.push({id:x,source:p.source,target:y,portType:p.portType}))}}return d}function VU(t,e,n,o,s=!1){for(const a of t.connections){if(a.source.nodeId===""&&a.target.nodeId!==""){const l=`${e}.${a.source.portName}`,u=pu(e,a.target,t,o);n.has(l)||n.set(l,[]);for(const d of u)n.get(l).push(d),s&&console.log(` INPUT: ${a.source.portName} -> ${d.nodeId}.${d.portName}`)}if(a.source.nodeId!==""&&a.target.nodeId===""){const l=`${e}.${a.target.portName}`,u=pu(e,a.source,t,o);n.has(l)||n.set(l,[]);for(const d of u)n.get(l).push(d),s&&console.log(` OUTPUT: ${a.target.portName} <- ${d.nodeId}.${d.portName}`)}if(a.source.nodeId===""&&a.target.nodeId===""){s&&console.log(` PASSTHROUGH: ${a.source.portName} -> ${a.target.portName}`);const l=`${e}.${a.source.portName}`;n.has(l)||n.set(l,[]),n.get(l).push({nodeId:e,portName:a.target.portName}),s&&console.log(` -> Added passthrough forwarding: ${l} -> ${e}.${a.target.portName}`)}}}function pu(t,e,n,o,s=new Set){if(e.nodeId==="")return[{nodeId:t,portName:e.portName}];const a=t+"."+e.nodeId,l=n.nodes.find(p=>p.id===e.nodeId);if(!l)return[{nodeId:a,portName:e.portName}];const u=o.resolveCircuit(l.componentRef);if(!u||u.implementation.kind!=="composite")return[{nodeId:a,portName:e.portName}];if(s.has(l.componentRef))return[{nodeId:a,portName:e.portName}];const d=new Set(s);d.add(l.componentRef);const h=[];for(const p of u.connections){if(p.target.nodeId===""&&p.target.portName===e.portName){const m=pu(a,p.source,u,o,d);h.push(...m)}if(p.source.nodeId===""&&p.source.portName===e.portName){const m=pu(a,p.target,u,o,d);h.push(...m)}}return h.length>0?h:[{nodeId:a,portName:e.portName}]}function LU(t){t.nodeMap=new Map(t.nodes.map(e=>[e.id,e]));for(const e of t.nodes)e.dependents=[],e.inputSources=[];for(const e of t.connections){const n=e.source.nodeId,o=e.target.nodeId;if(o===De)continue;const s=t.nodeMap.get(n);s&&!s.dependents.includes(o)&&s.dependents.push(o);const a=t.nodeMap.get(o);a&&a.inputSources.push({portName:e.target.portName,sourceNodeId:n,sourcePortName:e.source.portName})}}function IU(t,e){return`${t}.${e}`}function _2(t,e,n){const o=new Map,s=new Map,a=new Map;for(const l of t.nodes){const u=e.resolveCircuit(l.primitiveType);if(u){if(u.implementation.kind==="primitive"&&u.state.length>0){const d=u.state.map(p=>PU(p,l.id,l.arguments,l.primitiveType,n)),h=u.state.length===1?d[0]:Object.fromEntries(u.state.map((p,m)=>[p.name,d[m]]));o.set(l.id,h),s.set(l.id,h)}for(const d of l.clocks)a.set(IU(l.id,d.name),{value:!1,edge:"none"})}}return{currentState:o,nextState:s,clocks:a,cycleCount:0}}function PU(t,e,n,o,s){const a=t.stateType.kind,l=n[t.name];if(a==="memory"){const d=new Map,h=t.initialValue;if(h?.data){if(h.data instanceof Map)for(const[p,m]of h.data)d.set(p,m);else if(typeof h.data=="object")for(const[p,m]of Object.entries(h.data)){const y=parseInt(p,10);!isNaN(y)&&typeof m=="number"&&d.set(y,m)}}if(l!==void 0){if(Array.isArray(l))l.forEach((p,m)=>{typeof p=="number"&&d.set(m,p)});else if(l instanceof Map)for(const[p,m]of l)d.set(p,m);else if(typeof l=="object"&&l!==null)for(const[p,m]of Object.entries(l)){const y=parseInt(p,10);!isNaN(y)&&typeof m=="number"&&d.set(y,m)}}if(s){const p=HU(e,s,o);if(p)for(const[m,y]of p.entries())d.set(m,y)}return d}if(l!==void 0&&(typeof l=="number"||typeof l=="boolean"))return l;const u=t.initialValue;return u}function BU(t){const n=t.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*");return new RegExp(n,"i")}function HU(t,e,n){for(const[o,s]of e){const a=BU(o);if(a.test(t)||n&&a.test(n))return s}}const im={And:0,Or:1,Not:2,Nand:3,Nor:4,Xor:5,Xnor:6,Buffer:7,Switch:10,Led:11,Output:12,Button:13,Input:14,Constant:15,Splitter:20,Splitter8to8:21,Combiner8to8:22,Probe:23,BitSlice:24,AddressCombiner:25,Concat:26,BusAnd:40,BusOr:41,BusNot:42,BusXor:43,Incrementer:50,Adder:51,Multiplier:52,Comparator:53,LeftShifter:54,RightShifter:55,Subtractor:56,SignedAdder:57,SignedComparator:58,SignedMultiplier:59,Mux:70,Decoder:71,SevenSegment:80,HexDisplay:81,Screen:82,RasterDisplay:83,DFlipFlop:90,Register:91,ROM:100,RAM:101,DualPortRAM:102,Console:110},UU=Object.entries(im).reduce((t,[e,n])=>(t[n]=e,t),[]);class $U{queue;pending;head=0;tail=0;capacity;constructor(e){this.capacity=e,this.queue=new Uint32Array(e),this.pending=new Uint8Array(e)}enqueue(e){this.pending[e]||(this.pending[e]=1,this.queue[this.tail%this.capacity]=e,this.tail++)}enqueueAll(e){for(let n=0;n<e.length;n++)this.enqueue(e[n])}dequeue(){const e=this.queue[this.head%this.capacity];return this.pending[e]=0,this.head++,e}isEmpty(){return this.head===this.tail}size(){return this.tail-this.head}toArray(){const e=[];for(let n=this.head;n<this.tail;n++)e.push(this.queue[n%this.capacity]);return e}clear(){this.head=0,this.tail=0,this.pending.fill(0)}}function S2(t){return{values:new Int32Array(t),changed:new Uint8Array(t),initialized:new Uint8Array(t)}}function E2(t,e){const n=t.circuit.inputSourcePort[t.portStart+e];return n>=0?t.values.values[n]:0}function C2(t,e,n){const o=t.portStart+t.inputCount+e;t.values.values[o]=n,t.values.initialized[o]=1}const YU=Math.max(...Object.values(im))+1,Va=new Array(YU).fill(null);function T2(t){return new Proxy(t,{get(e,n){if(typeof n=="string"&&/^\d+$/.test(n))return e.get(Number(n))??0;const o=e[n];return typeof o=="function"?o.bind(e):o},set(e,n,o){return typeof n=="string"&&/^\d+$/.test(n)?(e.set(Number(n),o),!0):!1}})}let qU=200;const N2=new Map;function GU(t){const e=im[t];if(e!==void 0)return e;const n=N2.get(t);if(n!==void 0)return n;const o=qU++;return N2.set(t,o),UU[o]=t,o}function FU(t,e,n,o){const s=t.length,a=e.length;return!o||o.length===0?function(u){const d={},h=u.circuit.flatCircuit.nodes[u.nodeIndex]?.arguments;if(h)for(const m in h)d[m]=h[m];for(let m=0;m<s;m++)d[t[m]]=E2(u,m);const p=n(d);for(let m=0;m<a;m++){const y=p[e[m]];y!==void 0&&C2(u,m,y)}}:function(u){const d={},h=u.circuit.flatCircuit.nodes[u.nodeIndex]?.arguments;if(h)for(const m in h)d[m]=h[m];for(let m=0;m<s;m++)d[t[m]]=E2(u,m);if(u.state){const m=u.state.currentState[u.nodeIndex];if(m!=null&&typeof m=="object"&&!Array.isArray(m)&&!(m instanceof Map)){const y=m;for(const b of o){const x=y[b];d[b]=x instanceof Map?T2(x):x}}else m!=null&&(d[o[0]]=m instanceof Map?T2(m):m)}const p=n(d);for(let m=0;m<a;m++){const y=p[e[m]];y!==void 0&&C2(u,m,y)}}}function XU(t){const e=GU(t);if(Va[e]!=null)return e;const n=Ll(t);if(!n)return console.warn(`[eval-bridge] No eval-registry entry for '${t}' — getAllCircuitEvals:`,[...WN().keys()]),e;for(;Va.length<=e;)Va.push(null);return Va[e]=FU(n.inputNames,n.outputNames,n.evalFn,n.stateKeys),e}const om=new Map;function ZU(t){if(om.has(t))return om.get(t);const e=Ll(t);if(!e?.onTickFn)return;const n={inputNames:e.inputNames,stateKeys:e.stateKeys??[],fn:e.onTickFn};return om.set(t,n),n}function KU(t,e){const n=t.nodes.length,o=new Map,s=new Array(n);for(let q=0;q<n;q++){const Y=t.nodes[q];o.set(Y.id,q),s[q]=Y.id}let a=0;const l=new Uint32Array(n),u=new Uint8Array(n),d=new Uint8Array(n);for(let q=0;q<n;q++){const Y=t.nodes[q];l[q]=a,u[q]=Y.inputs.length,d[q]=Y.outputs.length,a+=Y.inputs.length+Y.outputs.length}const h=t.topLevelInputs.length,p=t.topLevelOutputs.length,m=a+h+p,y=new Map,b=new Array(m),x=new Uint8Array(m),w=new Uint8Array(m),_=new Array(m);let S=a;for(const q of t.topLevelInputs){const Y=`${De}.${q.name}`;y.set(Y,S),b[S]=Y,x[S]=1,w[S]=q.portType.kind==="bus"?1:0,S++}for(const q of t.topLevelOutputs){const Y=`${De}.${q.name}`;y.set(Y,S),b[S]=Y,x[S]=0,w[S]=q.portType.kind==="bus"?1:0,S++}for(let q=0;q<n;q++){const Y=t.nodes[q];let K=l[q];for(const W of Y.inputs){const B=`${Y.id}.${W.name}`;y.set(B,K),b[K]=B,x[K]=0,w[K]=W.portType.kind==="bus"?1:0,_[K]=W.name,K++}for(const W of Y.outputs){const B=`${Y.id}.${W.name}`;y.set(B,K),b[K]=B,x[K]=1;let H=W.portType.kind==="bus";if(!H){const j=Y.arguments.width;if(typeof j=="number"&&j>1&&(H=!0),!H&&Y.primitiveType==="Mux"){for(const I of Y.inputs)if(I.name!=="sel"&&I.portType.kind==="bus"){H=!0;break}}}w[K]=H?1:0,K++}}const k=new Uint16Array(n);for(let q=0;q<n;q++){const Y=t.nodes[q];k[q]=XU(Y.primitiveType)}const C=new Array(n);for(let q=0;q<n;q++){const K=t.nodes[q].dependents.map(W=>o.get(W)).filter(W=>W!==void 0);C[q]=new Uint32Array(K)}const E=new Int32Array(a),R=new Int32Array(a);E.fill(-1),R.fill(-1);for(let q=0;q<n;q++){const Y=t.nodes[q],K=l[q];for(let W=0;W<Y.inputSources.length;W++){const B=Y.inputSources[W],H=Y.inputs.findIndex(I=>I.name===B.portName);if(H===-1)continue;const j=K+H;if(B.sourceNodeId===De){E[j]=-1;const I=`${De}.${B.sourcePortName}`;R[j]=y.get(I)??-1}else{const I=o.get(B.sourceNodeId);if(I===void 0)continue;const z=t.nodes[I],$=z.outputs.findIndex(G=>G.name===B.sourcePortName);if($===-1)continue;E[j]=I,R[j]=l[I]+z.inputs.length+$}}}const A=new Uint8Array(n),O=new Uint8Array(n),D=new Uint8Array(n),U=new Uint8Array(n);for(let q=0;q<n;q++){const Y=t.nodes[q];A[q]=Y.inputs.length===0?1:0;const K=e.resolveCircuit(Y.primitiveType);K?.state&&K.state.length>0&&(D[q]=1,O[q]=1);for(const W of Y.inputSources)if(W.sourceNodeId===De){U[q]=1;break}}return{nodeCount:n,portCount:m,nodeIdToIndex:o,indexToNodeId:s,portKeyToIndex:y,indexToPortKey:b,primitiveTypeIndex:k,nodePortStart:l,nodeInputCount:u,nodeOutputCount:d,dependents:C,inputSourceNode:E,inputSourcePort:R,inputPortNames:_,portIsOutput:x,portIsBus:w,isSourceNode:A,isStateOutputNode:O,hasState:D,readsTopLevelInput:U,flatCircuit:t}}function rm(t,e){const n=new Array(t.nodeCount),o=new Array(t.nodeCount);for(const[s,a]of e.currentState){const l=t.nodeIdToIndex.get(s);l!==void 0&&(n[l]=a)}for(const[s,a]of e.nextState){const l=t.nodeIdToIndex.get(s);l!==void 0&&(o[l]=a)}return{currentState:n,nextState:o,clocks:e.clocks,cycleCount:e.cycleCount}}function sm(t,e){const n=new Map,o=new Map;for(let s=0;s<t.nodeCount;s++){const a=t.indexToNodeId[s];e.currentState[s]!==void 0&&n.set(a,e.currentState[s]),e.nextState[s]!==void 0&&o.set(a,e.nextState[s])}return{currentState:n,nextState:o,clocks:e.clocks,cycleCount:e.cycleCount}}const A2=1e4,am=new WeakMap;function QU(t){const e=new Map(t),n=new Proxy(e,{get(o,s){if(typeof s=="string"&&/^\d+$/.test(s))return o.get(Number(s))??0;const a=o[s];return typeof a=="function"?a.bind(o):a},set(o,s,a){return typeof s=="string"&&/^\d+$/.test(s)?(o.set(Number(s),a),!0):!1}});return am.set(n,e),n}const WU=new Int32Array(64),JU=new Uint8Array(64);function La(t,e,n,o,s){let a=0;if(s)for(const[u,d]of s){const h=t.portKeyToIndex.get(u);h!==void 0&&(n.values[h]=typeof d=="boolean"?d?1:0:d,n.initialized[h]=1)}const l={circuit:t,values:n,state:o,queue:e,nodeIndex:0,portStart:0,inputCount:0,outputCount:0};for(;!e.isEmpty();){if(++a>A2)throw new Error(`Propagation did not stabilize after ${A2} iterations. Possible unstable feedback loop in circuit.`);const u=e.dequeue(),d=t.nodePortStart[u],h=t.nodeInputCount[u],p=t.nodeOutputCount[u],m=d+h;l.nodeIndex=u,l.portStart=d,l.inputCount=h,l.outputCount=p;const y=p<=64?WU:new Int32Array(p),b=p<=64?JU:new Uint8Array(p);for(let S=0;S<p;S++)y[S]=n.values[m+S],b[S]=n.initialized[m+S];const x=t.primitiveTypeIndex[u],w=Va[x];w?w(l):t9(t,u);let _=!1;for(let S=0;S<p;S++){const k=m+S;if(n.values[k]!==y[S]||n.initialized[k]&&!b[S]){_=!0;break}}_&&e.enqueueAll(t.dependents[u])}return a}function t9(t,e,n,o,s){const a=t.flatCircuit.nodes[e];throw new Error(`Primitive '${a.primitiveType}' has no registered evaluator. Either import '@simten/core/std' to register the standard library, or register the primitive's eval lambda explicitly via registerEvalFunction(). If you constructed a Circuit IR by hand (rather than via circuit()), you must register its evaluator yourself.`)}function mu(t,e){for(let n=0;n<t.nodeCount;n++)(t.isSourceNode[n]||t.isStateOutputNode[n]||t.readsTopLevelInput[n])&&(e.enqueue(n),t.isSourceNode[n],t.isStateOutputNode[n],t.readsTopLevelInput[n])}function e9(t,e){for(let n=0;n<t.nodeCount;n++)t.isStateOutputNode[n]&&e.enqueue(n)}function n9(t,e){for(const[n,o]of e.clocks)o.edge="rising",o.value=!0}function i9(t,e,n,o){for(let s=0;s<t.nodeCount;s++){if(!t.hasState[s])continue;const a=t.flatCircuit.nodes[s],l=ZU(a.primitiveType);if(!l)continue;const u=new Map,d=t.nodePortStart[s],h=t.nodeInputCount[s];for(let w=0;w<h;w++){const _=d+w,S=t.inputSourceNode[_],k=t.inputSourcePort[_],C=t.inputPortNames[_];if(S===-1){if(o&&k>=0){const E=t.indexToPortKey[k],R=o.get(E);R!==void 0&&u.set(C,R)}}else if(k>=0){const E=e.values[k];u.set(C,E)}}if(a.arguments)for(const[w,_]of Object.entries(a.arguments))u.set(`__${w}`,_);const p={};for(const w of a.clocks){const _=`${a.id}.${w.name}`,S=n.clocks.get(_);S&&(p[w.name]=S.edge)}const m=n.currentState[s],y={};for(const[w,_]of u)y[w]=_;if(m!=null&&typeof m=="object"&&!(m instanceof Map))for(const w of l.stateKeys)y[w]=m[w];else m!=null&&l.stateKeys.length===1&&(m instanceof Map?y[l.stateKeys[0]]=QU(m):y[l.stateKeys[0]]=m);const b=l.fn(y);let x=l.stateKeys.length===1?b[l.stateKeys[0]]:b;x!=null&&typeof x=="object"&&am.has(x)&&(x=am.get(x)),n.nextState[s]=x}}function o9(t){for(let e=0;e<t.currentState.length;e++){const n=t.nextState[e];n!==void 0&&(n instanceof Map?(t.currentState[e]=new Map(n),t.nextState[e]=new Map(n)):(t.currentState[e]=n,t.nextState[e]=n))}t.cycleCount++}function Ia(t,e,n){const o=new Map;if(n)for(const[s,a]of n)o.set(s,a);for(let s=0;s<t.portCount;s++){const a=t.indexToPortKey[s],l=t.portIsOutput[s]===1,u=t.portIsBus[s]===0;let d,h;if(l)d=e.values[s],h=e.initialized[s]!==0;else{const m=t.inputSourcePort[s];m>=0?(d=e.values[m],h=e.initialized[m]!==0):(d=0,h=!1)}h||(d=0);const p=d>1||d<0;o.set(a,u&&!p?d!==0:d)}return o}function r9(t,e,n){for(const[o,s]of n){const a=t.portKeyToIndex.get(o);a!==void 0&&(e.values[a]=typeof s=="boolean"?s?1:0:s,e.initialized[a]=1)}}function gu(t,e,n){for(const o of t.flatCircuit.connections)if(o.target.nodeId===De||o.target.nodeId===""){const s=`${o.source.nodeId}.${o.source.portName}`,a=t.portKeyToIndex.get(s);if(a!==void 0){const l=`${o.target.nodeId||De}.${o.target.portName}`,u=t.portIsBus[a]===0,d=e.values[a];n.set(l,u?d!==0:d)}}}class s9{flatCircuit=null;options=null;numericCircuit=null;numericSeqState=null;numericValues=null;eventQueue=null;topLevelInputs=new Map;cachedFlatSeqState=null;cachedPortValues=null;cacheValid=!1;totalTicks=0;totalEvaluations=0;initialize(e,n){this.flatCircuit=e,this.options=n,this.numericCircuit=KU(e,n.componentLibrary);const o=_2(e,n.componentLibrary);this.numericSeqState=rm(this.numericCircuit,o),this.numericValues=S2(this.numericCircuit.portCount),this.eventQueue=new $U(this.numericCircuit.nodeCount),this.topLevelInputs=new Map;for(const s of e.topLevelInputs){const a=`${De}.${s.name}`,l=s.portType.kind==="bit"?!1:0;this.topLevelInputs.set(a,l)}this.eventQueue.clear(),mu(this.numericCircuit,this.eventQueue),La(this.numericCircuit,this.eventQueue,this.numericValues,this.numericSeqState,this.topLevelInputs),this.totalTicks=0,this.totalEvaluations=0,this.cacheValid=!1}setNode(e,n){if(!this.flatCircuit||!this.numericCircuit)return;const o=`${De}.${e}`;if(this.topLevelInputs.has(o)){this.topLevelInputs.set(o,n),this.cacheValid=!1;return}const s=this.flatCircuit.nodes.find(l=>l.id===e)??this.flatCircuit.nodes.find(l=>l.id.endsWith("."+e));if(!s)return;const a=this.numericCircuit.nodeIdToIndex.get(s.id);if(a!==void 0&&this.numericSeqState&&this.numericSeqState.currentState[a]!==void 0){this.numericSeqState.currentState[a]=n,this.cacheValid=!1,this.cachedFlatSeqState=null,n instanceof Map&&this.options&&(this.options.initialMemory||(this.options.initialMemory=new Map),this.options.initialMemory.set(s.id,n));return}(typeof n=="boolean"||typeof n=="number"||typeof n=="string")&&(s.arguments={...s.arguments,value:n},this.cacheValid=!1)}tick(){if(!this.numericCircuit||!this.numericSeqState||!this.numericValues||!this.eventQueue)throw new Error("Simulator not initialized");this.eventQueue.clear(),mu(this.numericCircuit,this.eventQueue);const e=La(this.numericCircuit,this.eventQueue,this.numericValues,this.numericSeqState,this.topLevelInputs);n9(this.numericCircuit,this.numericSeqState),i9(this.numericCircuit,this.numericValues,this.numericSeqState,this.topLevelInputs),o9(this.numericSeqState),this.eventQueue.clear(),e9(this.numericCircuit,this.eventQueue);const n=La(this.numericCircuit,this.eventQueue,this.numericValues,this.numericSeqState,this.topLevelInputs),o=Ia(this.numericCircuit,this.numericValues,this.topLevelInputs);gu(this.numericCircuit,this.numericValues,o),this.cachedPortValues=o,this.cachedFlatSeqState=null,this.cacheValid=!0;const s=e+n;this.totalTicks++,this.totalEvaluations+=s;const a=sm(this.numericCircuit,this.numericSeqState);return{portValues:o,sequentialState:a,metrics:{phase1Evals:e,phase2Evals:n,totalEvals:s}}}runCombinational(){if(!this.numericCircuit||!this.numericValues||!this.eventQueue)throw new Error("Simulator not initialized");if(this.cacheValid&&this.cachedPortValues)return{portValues:this.cachedPortValues,metrics:{totalEvals:0}};this.eventQueue.clear(),mu(this.numericCircuit,this.eventQueue);try{La(this.numericCircuit,this.eventQueue,this.numericValues,this.numericSeqState??void 0,this.topLevelInputs)}catch(n){return{portValues:Ia(this.numericCircuit,this.numericValues,this.topLevelInputs),metrics:{totalEvals:0},error:n instanceof Error?n.message:"Unknown error"}}const e=Ia(this.numericCircuit,this.numericValues,this.topLevelInputs);return gu(this.numericCircuit,this.numericValues,e),this.cachedPortValues=e,this.cacheValid=!0,{portValues:e,metrics:{totalEvals:0}}}getOutput(e,n){if(!this.numericCircuit||!this.numericValues)return;const o=this.getPortValues(),s=`${e}.${n}`;return o.get(s)}getPortValues(){return!this.numericCircuit||!this.numericValues?new Map:(this.cacheValid||(this.cachedPortValues=Ia(this.numericCircuit,this.numericValues,this.topLevelInputs),gu(this.numericCircuit,this.numericValues,this.cachedPortValues),this.cacheValid=!0),this.cachedPortValues)}getState(){return!this.numericCircuit||!this.numericSeqState?null:((!this.cacheValid||!this.cachedFlatSeqState)&&(this.cachedFlatSeqState=sm(this.numericCircuit,this.numericSeqState)),this.cachedFlatSeqState)}snapshot(){if(!this.numericSeqState||!this.numericCircuit||!this.numericValues)throw new Error("No sequential state to snapshot");const e=Ia(this.numericCircuit,this.numericValues,this.topLevelInputs);gu(this.numericCircuit,this.numericValues,e);const n=sm(this.numericCircuit,this.numericSeqState);return{portValues:e,sequentialState:n,cycleCount:this.numericSeqState.cycleCount}}restore(e){!this.numericCircuit||!this.numericValues||(this.numericSeqState=rm(this.numericCircuit,e.sequentialState),r9(this.numericCircuit,this.numericValues,e.portValues),this.cacheValid=!1)}reset(){if(!this.flatCircuit||!this.options||!this.numericCircuit)return;const e=_2(this.flatCircuit,this.options.componentLibrary,this.options.initialMemory);this.numericSeqState=rm(this.numericCircuit,e),this.numericValues=S2(this.numericCircuit.portCount),this.eventQueue.clear(),mu(this.numericCircuit,this.eventQueue),La(this.numericCircuit,this.eventQueue,this.numericValues,this.numericSeqState,this.topLevelInputs),this.totalTicks=0,this.totalEvaluations=0,this.cacheValid=!1}getMetrics(){return{totalTicks:this.totalTicks,totalEvaluations:this.totalEvaluations,avgEvalsPerTick:this.totalTicks>0?this.totalEvaluations/this.totalTicks:0,nodeCount:this.flatCircuit?.nodes.length??0}}}function a9(t,e){const n=new s9;return n.initialize(t,e),n}function l9(t,e){const n=jU(t,e);return a9(n,{componentLibrary:e})}const c9=t=>t.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),u9=t=>t.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,n,o)=>o?o.toUpperCase():n.toLowerCase()),M2=t=>{const e=u9(t);return e.charAt(0).toUpperCase()+e.slice(1)},R2=(...t)=>t.filter((e,n,o)=>!!e&&e.trim()!==""&&o.indexOf(e)===n).join(" ").trim(),f9=t=>{for(const e in t)if(e.startsWith("aria-")||e==="role"||e==="title")return!0};var d9={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};const h9=N.forwardRef(({color:t="currentColor",size:e=24,strokeWidth:n=2,absoluteStrokeWidth:o,className:s="",children:a,iconNode:l,...u},d)=>N.createElement("svg",{ref:d,...d9,width:e,height:e,stroke:t,strokeWidth:o?Number(n)*24/Number(e):n,className:R2("lucide",s),...!a&&!f9(u)&&{"aria-hidden":"true"},...u},[...l.map(([h,p])=>N.createElement(h,p)),...Array.isArray(a)?a:[a]]));const eo=(t,e)=>{const n=N.forwardRef(({className:o,...s},a)=>N.createElement(h9,{ref:a,iconNode:e,className:R2(`lucide-${c9(M2(t))}`,`lucide-${t}`,o),...s}));return n.displayName=M2(t),n};const p9=eo("chevron-left",[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]]);const m9=eo("chevron-right",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]]);const g9=eo("gauge",[["path",{d:"m12 14 4-4",key:"9kzdfg"}],["path",{d:"M3.34 19a10 10 0 1 1 17.32 0",key:"19p75a"}]]);const y9=eo("history",[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"1357e3"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}],["path",{d:"M12 7v5l4 2",key:"1fdv2h"}]]);const v9=eo("pause",[["rect",{x:"14",y:"3",width:"5",height:"18",rx:"1",key:"kaeet6"}],["rect",{x:"5",y:"3",width:"5",height:"18",rx:"1",key:"1wsw3u"}]]);const b9=eo("play",[["path",{d:"M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z",key:"10ikf1"}]]);const x9=eo("rotate-ccw",[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"1357e3"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}]]);const w9=eo("skip-forward",[["path",{d:"M21 4v16",key:"7j8fe9"}],["path",{d:"M6.029 4.285A2 2 0 0 0 3 6v12a2 2 0 0 0 3.029 1.715l9.997-5.998a2 2 0 0 0 .003-3.432z",key:"zs4d6"}]]),k2=t=>typeof t=="boolean"?`${t}`:t===0?"0":t,O2=ex,_9=((t,e)=>n=>{var o;if(e?.variants==null)return O2(t,n?.class,n?.className);const{variants:s,defaultVariants:a}=e,l=Object.keys(s).map(h=>{const p=n?.[h],m=a?.[h];if(p===null)return null;const y=k2(p)||k2(m);return s[h][y]}),u=n&&Object.entries(n).reduce((h,p)=>{let[m,y]=p;return y===void 0||(h[m]=y),h},{}),d=e==null||(o=e.compoundVariants)===null||o===void 0?void 0:o.reduce((h,p)=>{let{class:m,className:y,...b}=p;return Object.entries(b).every(x=>{let[w,_]=x;return Array.isArray(_)?_.includes({...a,...u}[w]):{...a,...u}[w]===_})?[...h,m,y]:h},[]);return O2(t,l,d,n?.class,n?.className)})("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",{variants:{variant:{default:"bg-primary text-primary-foreground shadow hover:bg-primary/90",destructive:"bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90",outline:"border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2",sm:"h-8 rounded-md px-3 text-xs",lg:"h-10 rounded-md px-8",icon:"h-9 w-9"}},defaultVariants:{variant:"default",size:"default"}}),D2=N.forwardRef(({className:t,variant:e,size:n,...o},s)=>M.jsx("button",{className:jn(_9({variant:e,size:n,className:t})),ref:s,...o}));D2.displayName="Button";function ts({label:t,icon:e,onClick:n,disabled:o}){return M.jsxs(_w,{children:[M.jsx(Sw,{asChild:!0,children:M.jsx(D2,{variant:"ghost",size:"icon",onClick:n,disabled:o,"aria-label":t,className:"h-7 w-7 text-muted-foreground disabled:opacity-40 [&_svg]:size-3.5",children:M.jsx(e,{})})}),M.jsx(Ew,{side:"bottom",children:t})]})}function j2({cycle:t,historyLength:e,historyIndex:n,isRunning:o,isViewingPast:s,onStep:a,onRun:l,onPause:u,onReset:d,onStepBack:h,onStepForward:p,onSeek:m,onSpeedChange:y,speed:b=1,maxSpeed:x=100,showScrubber:w,floating:_,chromeless:S}){const k=_?"absolute top-3 left-1/2 -translate-x-1/2 z-10":"",C=S?"flex items-center gap-1.5":"flex items-center gap-1.5 border-t border-border bg-card/95 px-3 py-1.5";return M.jsx(ww,{children:M.jsx("div",{className:k,children:M.jsxs("div",{className:C,children:[M.jsx(ts,{label:"Tick",icon:w9,onClick:a,disabled:o||s}),o?M.jsx(ts,{label:"Pause",icon:v9,onClick:u}):M.jsx(ts,{label:"Run",icon:b9,onClick:l,disabled:s}),M.jsx(ts,{label:"Reset",icon:x9,onClick:d}),y&&M.jsxs("div",{className:"flex items-center gap-2 border-l border-border pl-2 ml-0.5",children:[M.jsx(g9,{className:"h-3.5 w-3.5 text-muted-foreground/70","aria-hidden":!0}),M.jsx("input",{type:"range",min:"1",max:x,value:b,onChange:E=>y(Number(E.target.value)),className:"w-20 h-1 rounded-lg appearance-none cursor-pointer accent-blue-600",disabled:s,"aria-label":"Simulation speed"}),M.jsxs("span",{className:"min-w-[55px] text-[10px] text-muted-foreground font-mono tabular-nums",children:[b," tick/s"]})]}),M.jsx("div",{className:"border-l border-border pl-1.5 ml-0.5",children:M.jsxs("span",{className:"text-[11px] text-muted-foreground",children:["Cycle ",M.jsx("span",{className:"font-mono font-semibold text-foreground",children:t})]})}),e>1&&M.jsxs("div",{className:"flex items-center gap-0.5 border-l border-border pl-1.5 ml-0.5",children:[M.jsx(ts,{label:"Step back",icon:p9,onClick:h,disabled:n<=0||o}),M.jsx("span",{className:"min-w-[40px] text-center text-[11px] text-muted-foreground",children:s?M.jsxs("span",{className:"font-mono text-amber-600 dark:text-amber-400",children:[n+1,"/",e]}):M.jsxs("span",{className:"font-mono",children:[e,"/",e]})}),M.jsx(ts,{label:"Step forward",icon:m9,onClick:p,disabled:!s||o})]}),w&&m&&e>1&&M.jsxs("div",{className:"flex items-center gap-2 border-l border-border pl-2 ml-0.5",children:[M.jsx(y9,{className:"h-3.5 w-3.5 text-muted-foreground/70","aria-hidden":!0}),M.jsx("input",{type:"range",min:"0",max:e-1,value:n,onChange:E=>m(Number(E.target.value)),className:"w-24 h-1 rounded-lg appearance-none cursor-pointer accent-blue-600",disabled:o,"aria-label":"Cycle scrubber"})]})]})})})}function S9({frame:t,componentLibrary:e,onPushLevel:n,theme:o="dark"}){const s=N.useMemo(()=>DU(t.componentDef),[t.componentDef]),a=N.useMemo(()=>ud(s,e.resolveCircuit),[s,e]),l=N.useCallback(H=>{if(!H.isComposite)return;const j=e.resolveCircuit(H.componentRef);j&&j.implementation.kind==="composite"&&j.nodes.length>0&&n(H.componentRef,j,H.label??H.componentRef)},[e,n]),u=Wf(),[d,h]=N.useState(new Map),[p,m]=N.useState(!1),y=N.useRef(null),[b,x]=N.useState(0),[w,_]=N.useState(!1),S=N.useRef([]),[k,C]=N.useState(0),[E,R]=N.useState(-1),A=N.useRef("");A.current||(A.current=`drill-${typeof crypto<"u"&&crypto.randomUUID?crypto.randomUUID():Math.random().toString(36).slice(2)}`);const O=A.current;N.useEffect(()=>()=>{p&&u.dispose(O).catch(()=>{})},[u,O,p]),N.useEffect(()=>{const H=[],j=new Set;for(const z of e.getAllPrimitiveNames()){const $=e.resolveCircuit(z);$&&!j.has(z)&&(j.add(z),H.push($))}const I=z=>{for(const $ of z.nodes){if(j.has($.componentRef))continue;const G=e.resolveCircuit($.componentRef);G&&(j.add($.componentRef),H.push(G),G.implementation.kind==="composite"&&I(G))}};I(s),u.compileIR(s,H,O,{snapshot:a}).then(z=>{if("error"in z){try{const G=l9(s,e);G.runCombinational(),y.current=G,m(!1);const L=new Map;for(const[F,et]of G.getPortValues())L.set(F,et);h(L)}catch(G){console.warn("[InspectorCanvas] Both sandbox and local failed:",G)}return}m(!0);const $=new Map;for(const[G,L]of Object.entries(z.portValues))$.set(G,L);h($),S.current=z.snapshotId!==void 0?[{snapshotId:z.snapshotId,cycle:0}]:[],C(S.current.length),R(S.current.length===0?-1:0),x(0)})},[s,e,u,O,a]);const D=N.useCallback(H=>{const j=`${H}.out`,I=d.get(j);u.setNode(H,!I,O).then(z=>{if("error"in z)return;const $=new Map;for(const[G,L]of Object.entries(z.portValues))$.set(G,L);h($)})},[u,d]),U=N.useCallback((H,j)=>{u.setNode(H,j,O).then(I=>{if("error"in I)return;const z=new Map;for(const[$,G]of Object.entries(I.portValues))z.set($,G);h(z)})},[u]),q=N.useCallback(()=>{u.tick(void 0,O,{snapshot:a}).then(H=>{if("error"in H)return;const j=new Map;for(const[I,z]of Object.entries(H.portValues))j.set(I,z);if(h(j),x(H.cycle),H.snapshotId!==void 0){const I=S.current.slice(0,E+1);I.push({snapshotId:H.snapshotId,cycle:H.cycle}),S.current=I,C(I.length),R(I.length-1)}})},[u,O,a,E]),Y=N.useCallback(()=>{_(!1),u.reset(O).then(H=>{if("error"in H)return;const j=new Map;for(const[I,z]of Object.entries(H.portValues))j.set(I,z);h(j),x(0),S.current=[],C(0),R(-1),a&&u.snapshot(O).then(I=>{"error"in I||I.snapshotId===void 0||(S.current=[{snapshotId:I.snapshotId,cycle:0}],C(1),R(0))})})},[u,O,a]),K=N.useCallback(H=>{const j=S.current[H];j&&u.restore(j.snapshotId,O).then(I=>{if("error"in I)return;const z=new Map;for(const[$,G]of Object.entries(I.portValues))z.set($,G);h(z),x(j.cycle),R(H)})},[u,O]),W=N.useCallback(()=>{_(!1),E>0&&K(E-1)},[E,K]),B=N.useCallback(()=>{E<k-1?K(E+1):q()},[E,k,K,q]);return N.useEffect(()=>{if(!w)return;const H=window.setInterval(()=>{q()},200);return()=>window.clearInterval(H)},[w,q]),M.jsxs("div",{className:"relative h-full w-full",children:[a&&M.jsx(j2,{floating:!0,cycle:b,historyLength:k,historyIndex:E,isRunning:w,isViewingPast:E>=0&&E<k-1,onStep:q,onRun:()=>_(!0),onPause:()=>_(!1),onReset:Y,onStepBack:W,onStepForward:B}),M.jsx(z2,{circuit:s,componentLibrary:e,portValues:d,sequentialState:null,onToggleNode:D,onSetNodeValue:U,onNodeDoubleClick:l,nodeTypes:Tw,edgeTypes:Nw,theme:o,showControls:!0,height:"100%",panOnMobile:!0})]})}function E9({stack:t,onNavigate:e,theme:n="dark"}){const s=t[t.length-1]?.componentDef.metadata?.description,a=n==="dark";return M.jsxs("div",{className:"flex items-center gap-1 text-sm min-w-0",children:[t.map((l,u)=>M.jsxs(ko.Fragment,{children:[u>0&&M.jsx("span",{className:`${a?"text-gray-500":"text-gray-400"} shrink-0`,children:">"}),u<t.length-1?M.jsxs("button",{onClick:()=>e(u),className:`${a?"text-blue-400 hover:text-blue-300":"text-blue-600 hover:text-blue-800"} hover:underline font-medium shrink-0`,children:[l.nodeLabel," (",l.componentName,")"]}):M.jsxs("span",{className:`font-semibold shrink-0 ${a?"text-gray-100":"text-gray-900"}`,children:[l.nodeLabel," (",l.componentName,")"]})]},u)),s&&M.jsxs(M.Fragment,{children:[M.jsx("span",{className:`${a?"text-gray-600":"text-gray-300"} shrink-0`,children:"—"}),M.jsx("span",{className:`${a?"text-gray-400":"text-gray-500"} text-xs italic truncate`,children:s})]})]})}const C9={enterIn:{opacity:0},enterOut:{opacity:0},center:{opacity:1},exitIn:{opacity:0},exitOut:{opacity:0}};function T9({stack:t,componentLibrary:e,theme:n="dark",onClose:o,onPopLevel:s,onPushLevel:a,onNavigate:l}){const u=t.length>0,d=N.useRef(0),[h,p]=N.useState("in");N.useEffect(()=>{t.length>d.current?p("in"):t.length<d.current&&p("out"),d.current=t.length},[t.length]),N.useEffect(()=>{if(!u)return;const x=document.body.style.overflow;return document.body.style.overflow="hidden",()=>{document.body.style.overflow=x}},[u]);const m=N.useCallback(x=>{x.target===x.currentTarget&&o()},[o]),y=N.useCallback(x=>{x.key==="Escape"&&(x.stopPropagation(),t.length>1?s():o())},[t.length,s,o]),b=u?t[t.length-1]:null;return M.jsx(FS,{children:u&&b&&M.jsxs(M.Fragment,{children:[M.jsx(hu.div,{className:"fixed inset-0 z-50 bg-black/50",initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},transition:{duration:.25},onClick:m,onKeyDown:y,tabIndex:-1},"inspector-backdrop"),M.jsx(hu.div,{className:"fixed inset-0 z-50 flex items-center justify-center p-8 pointer-events-none",children:M.jsxs(hu.div,{className:`flex h-[80vh] w-full max-w-5xl flex-col rounded-lg shadow-xl pointer-events-auto overflow-hidden ${n==="dark"?"bg-gray-900":"bg-white"}`,initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},transition:{duration:.15},children:[M.jsxs("div",{className:`flex items-center justify-between border-b px-4 py-3 ${n==="dark"?"border-gray-700":"border-gray-200"}`,children:[M.jsx(E9,{stack:t,onNavigate:l,theme:n}),M.jsx("button",{onClick:o,className:`rounded p-1 ${n==="dark"?"text-gray-400 hover:bg-gray-800 hover:text-gray-300":"text-gray-400 hover:bg-gray-100 hover:text-gray-600"}`,"aria-label":"Close inspector",children:M.jsx("svg",{className:"h-5 w-5",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:M.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"})})})]}),M.jsx("div",{className:"relative flex-1 overflow-hidden",children:M.jsx(FS,{mode:"wait",initial:!1,children:M.jsx(hu.div,{className:"absolute inset-0",initial:h==="in"?"enterIn":"enterOut",animate:"center",exit:h==="in"?"exitIn":"exitOut",variants:C9,transition:{duration:.2,ease:"easeInOut"},children:M.jsx(S9,{frame:b,componentLibrary:e,onPushLevel:a,theme:n})},`${t.length}-${b.componentName}`)})})]})},"inspector-dialog")]})})}function N9(){const{fitView:t,zoomIn:e,zoomOut:n}=da(),o="bg-[var(--embed-bg-tertiary)] hover:opacity-80 text-[var(--embed-text-secondary)] p-1.5 rounded border border-[var(--embed-border)] transition-colors";return M.jsxs("div",{className:"flex items-center gap-1",children:[M.jsx("button",{onClick:()=>n(),className:o,title:"Zoom out","aria-label":"Zoom out",children:M.jsx("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",strokeWidth:1.5,children:M.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M5 12h14"})})}),M.jsx("button",{onClick:()=>e(),className:o,title:"Zoom in","aria-label":"Zoom in",children:M.jsx("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",strokeWidth:1.5,children:M.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M12 5v14M5 12h14"})})}),M.jsx("button",{onClick:()=>t({padding:.3}),className:o,title:"Fit view","aria-label":"Fit view",children:M.jsx("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",strokeWidth:1.5,children:M.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M3.75 3.75v4.5m0-4.5h4.5m-4.5 0L9 9M3.75 20.25v-4.5m0 4.5h4.5m-4.5 0L9 15M20.25 3.75h-4.5m4.5 0v4.5m0-4.5L15 9m5.25 11.25h-4.5m4.5 0v-4.5m0 4.5L15 15"})})})]})}let lm=null;function A9(){if(!lm){const t=new Map;lm={resolveCircuit:e=>t.get(e),getAllPrimitiveNames:()=>[...t.entries()].filter(([,e])=>e.implementation.kind==="primitive").map(([e])=>e),addCircuit:e=>{t.set(e.name,e)}}}return lm}function M9({circuit:t,componentLibrary:e,portValues:n,sequentialState:o,draggable:s=!0,layout:a,onToggleNode:l,onSetNodeValue:u,onLoadMemory:d,onNodeDoubleClick:h,height:p="100%",focus:m,className:y,renderEmptyState:b,renderOverlay:x,nodeTypes:w,edgeTypes:_,showControls:S=!0,showPortLabels:k,onPortClick:C,glowUnconnected:E,theme:R,panOnMobile:A=!1,onRequestRemount:O}){const D=m1(),U=R??D,q=$8(),Y=w??Tw,K=_??Nw,W=e??A9(),B=N.useMemo(()=>m?new Set(Array.isArray(m)?m:[m]):null,[m]),H=N.useMemo(()=>t?zj(t):null,[t]),{metadata:j}=U8(a?null:H),I=N.useMemo(()=>{if(!H)return{components:{},connections:{}};if(!a)return j;const mt={};for(const Ct of H.nodes){const It=Ct.label||Ct.id,zt=a[It]??a[Ct.id];zt&&(mt[Ct.id]={id:Ct.id,position:zt})}return{components:mt,connections:{}}},[H,j,a]),{projectedNodes:z,projectedEdges:$}=N.useMemo(()=>{if(!H)return{projectedNodes:[],projectedEdges:[]};const mt=hL(H,I,W,n??void 0,o??void 0),Ct=mt.nodes.map(It=>{const zt=It.data,Vt=zt?.componentRef,ve={...It.data};if(k&&(ve.showPortLabels=!0),E&&(ve.glowUnconnected=!0),C){const Wt=zt.label||zt.componentRef;ve.onPortClick=(je,xn)=>C(Wt,je,xn)}return Vt==="Input"&&u&&(ve.onValueChange=Wt=>u(It.id,Wt)),l&&(Vt==="Switch"||Vt==="Button")&&(ve.onToggle=()=>l(It.id)),d&&(Vt==="RV32I_InstrMem"||Vt==="DualPortROM")&&(ve.onLoadMemory=Wt=>d(It.id,Wt)),{...It,data:ve}});if(B){const It=new Set;for(const zt of Ct){const Vt=zt.data?.label??zt.id;B.has(Vt)&&It.add(zt.id)}return{projectedNodes:Ct.map(zt=>{const Vt=zt.data?.label??zt.id;return{...zt,style:{...zt.style,opacity:B.has(Vt)?1:.15,transition:"opacity 0.2s"}}}),projectedEdges:mt.edges.map(zt=>({...zt,style:{...zt.style,opacity:It.has(zt.source)||It.has(zt.target)?1:.15,transition:"opacity 0.2s"}}))}}return{projectedNodes:Ct,projectedEdges:mt.edges}},[H,I,W,n,o,l,u,d,B,k,C,E]),[G,L]=N.useState([]),[F,et]=N.useState([]),{fitView:rt}=da(),ct=lj(),ht=N.useRef(null),ft=N.useRef(new Set),ut=N.useRef(new Map),dt=N.useRef(0);N.useLayoutEffect(()=>{const mt=ht.current,Ct=ft.current,It=ut.current,zt=H?.name??null,Vt=new Set(z.map(Re=>Re.id)),ve=new Map;for(const Re of z){const me=Re.data,le=`${(me.inputNames??[]).join("|")}>${(me.outputNames??[]).join("|")}`;ve.set(Re.id,le)}ht.current=zt,ft.current=Vt,ut.current=ve;const Wt=zt!==mt;let je=0;for(const Re of Vt)Ct.has(Re)&&je++;const xn=Math.max(Ct.size,Vt.size),Pa=xn>0&&je/xn<.5,Hn=Wt||Pa,tr=[];if(!Hn)for(const[Re,me]of ve){const le=It.get(Re);le!==void 0&&le!==me&&tr.push(Re)}const Ba=dt.current===0;dt.current=z.length,L(Re=>{const me=new Map(Re.map(le=>[le.id,le]));return z.map(le=>{const ze=me.get(le.id);return ze&&!Hn?{...ze,type:le.type,data:le.data,selectable:le.selectable,deletable:le.deletable}:le})}),et($),Hn&&Ct.size>0?O?.():tr.length>0&&requestAnimationFrame(()=>ct(tr)),z.length>0&&Ba&&!Hn&&requestAnimationFrame(()=>rt({padding:.3}))},[z,$]);const Ot=N.useCallback(mt=>{L(Ct=>ub(mt,Ct))},[]),[At,bt]=N.useState([]),Tt=N.useCallback((mt,Ct,It)=>{bt(zt=>[...zt,{componentName:mt,componentDef:Ct,nodeLabel:It}])},[]),Dt=N.useCallback(()=>{bt(mt=>mt.slice(0,-1))},[]),Xt=N.useCallback(()=>{bt([])},[]),Ft=N.useCallback(mt=>{bt(Ct=>Ct.slice(0,mt+1))},[]),pt=N.useCallback(mt=>{if(!mt.isComposite)return;const Ct=W.resolveCircuit(mt.componentRef);Ct&&Ct.implementation.kind==="composite"&&Ct.nodes.length>0&&bt([{componentName:mt.componentRef,componentDef:Ct,nodeLabel:mt.label??mt.componentRef}])},[W]),yt=h??pt,vt=N.useCallback((mt,Ct)=>{yt(Ct.data)},[yt]);return M.jsxs("div",{"data-embed-theme":U,className:`bg-[var(--embed-bg-primary)] overflow-hidden relative ${y??""}`,style:{height:p},"aria-label":"Circuit diagram",children:[M.jsxs(aj,{nodes:G,edges:F,nodeTypes:Y,edgeTypes:K,onNodesChange:Ot,onNodeDoubleClick:vt,fitView:!0,minZoom:.1,maxZoom:3,fitViewOptions:{padding:.3,...B&&{nodes:G.filter(mt=>{const Ct=mt.data?.label??mt.id;return B.has(Ct)})}},nodesDraggable:s&&!q,nodesConnectable:!1,elementsSelectable:!0,selectionOnDrag:!1,panOnDrag:q&&!A?!1:[1,2],zoomOnScroll:!0,zoomOnPinch:!0,zoomOnDoubleClick:!1,preventScrolling:!1,proOptions:{hideAttribution:!0},deleteKeyCode:null,panActivationKeyCode:null,children:[M.jsx(hj,{variant:pi.Dots,gap:20,size:1,color:"var(--embed-dot-color)"}),S&&M.jsx(ua,{position:"bottom-left",children:M.jsx(N9,{})})]}),x?.(),!t&&(b?b():M.jsx("div",{className:"absolute inset-0 flex items-center justify-center text-[var(--embed-text-muted)]",children:"No circuit"})),!h&&At.length>0&&M.jsx(T9,{stack:At,componentLibrary:W,theme:U,onClose:Xt,onPopLevel:Dt,onPushLevel:Tt,onNavigate:Ft})]})}function z2(t){const[e,n]=N.useState(0),o=N.useCallback(()=>{n(s=>s+1)},[]);return M.jsx(Zb,{children:M.jsx(M9,{...t,onRequestRemount:o})},e)}const R9=N.forwardRef(function({circuit:e,height:n=300,showControls:o=!0,autoHarness:s=!1,initialInputs:a,layout:l,theme:u,focus:d,showPortLabels:h,onPortClick:p,glowUnconnected:m,renderEmptyState:y,renderOverlay:b,onPortValuesChange:x},w){const _=RM(e,{autoHarness:s,initialInputs:a}),S=m1(),k=u??S,C=N.useRef(x);N.useEffect(()=>{C.current=x}),N.useEffect(()=>{!_.ready||!_.portValues||_.portValues.size===0||C.current?.(_.portValues)},[_.ready,_.portValues]);const E=N.useCallback(()=>{_.tick()},[_.tick]),R=N.useCallback(()=>{_.reset()},[_.reset]);if(N.useImperativeHandle(w,()=>({tick:E,reset:R,setNodeValue:_.setNodeValue,startAutoRun:_.startAutoRun,stopAutoRun:_.stopAutoRun}),[E,R,_.setNodeValue,_.startAutoRun,_.stopAutoRun]),_.error)return M.jsx("div",{style:{height:n},className:"flex items-center justify-center p-4",children:M.jsxs("div",{className:"text-sm text-red-400 bg-red-500/10 rounded p-3 border border-red-500/20",children:[M.jsx("div",{className:"font-medium mb-1",children:"Compilation Error"}),M.jsx("div",{className:"font-mono text-xs",children:_.error})]})});if(!_.ready)return M.jsx("div",{style:{height:n},className:"flex items-center justify-center text-muted-foreground/60 text-sm",children:"Compiling..."});const A=_.isSequential&&o?40:0,O=typeof n=="number"?n-A:n;return M.jsxs("div",{style:{height:n},className:"flex flex-col","data-embed-theme":k,children:[M.jsx("div",{className:"flex-1 min-h-0",children:M.jsx(z2,{circuit:_.circuit,componentLibrary:_.componentLibrary??void 0,portValues:_.portValues,sequentialState:_.sequentialState,onToggleNode:_.toggleNode,onSetNodeValue:_.setNodeValue,onLoadMemory:(D,U)=>{const q=_.getSimulator();q&&(q.setNode(D,U),_.runCombinational())},height:O,focus:d,showPortLabels:h,onPortClick:p,glowUnconnected:m,renderEmptyState:y,renderOverlay:b,...l?{layout:l}:{},...u?{theme:u}:{}})}),_.isSequential&&o&&M.jsx(j2,{cycle:_.cycleCount,historyLength:_.history?.length??0,historyIndex:_.historyIndex??-1,isRunning:_.isRunning,isViewingPast:_.isViewingPast??!1,onStep:E,onRun:()=>_.startAutoRun(15),onPause:()=>_.stopAutoRun(),onReset:R,onStepBack:()=>_.stepBack(),onStepForward:()=>{_.isViewingPast?_.stepForward():E()},speed:5})]})});var cm={exports:{}},V2;function k9(){return V2||(V2=1,(function(t){var e=(function(){var n=String.fromCharCode,o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",s="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-$",a={};function l(d,h){if(!a[d]){a[d]={};for(var p=0;p<d.length;p++)a[d][d.charAt(p)]=p}return a[d][h]}var u={compressToBase64:function(d){if(d==null)return"";var h=u._compress(d,6,function(p){return o.charAt(p)});switch(h.length%4){default:case 0:return h;case 1:return h+"===";case 2:return h+"==";case 3:return h+"="}},decompressFromBase64:function(d){return d==null?"":d==""?null:u._decompress(d.length,32,function(h){return l(o,d.charAt(h))})},compressToUTF16:function(d){return d==null?"":u._compress(d,15,function(h){return n(h+32)})+" "},decompressFromUTF16:function(d){return d==null?"":d==""?null:u._decompress(d.length,16384,function(h){return d.charCodeAt(h)-32})},compressToUint8Array:function(d){for(var h=u.compress(d),p=new Uint8Array(h.length*2),m=0,y=h.length;m<y;m++){var b=h.charCodeAt(m);p[m*2]=b>>>8,p[m*2+1]=b%256}return p},decompressFromUint8Array:function(d){if(d==null)return u.decompress(d);for(var h=new Array(d.length/2),p=0,m=h.length;p<m;p++)h[p]=d[p*2]*256+d[p*2+1];var y=[];return h.forEach(function(b){y.push(n(b))}),u.decompress(y.join(""))},compressToEncodedURIComponent:function(d){return d==null?"":u._compress(d,6,function(h){return s.charAt(h)})},decompressFromEncodedURIComponent:function(d){return d==null?"":d==""?null:(d=d.replace(/ /g,"+"),u._decompress(d.length,32,function(h){return l(s,d.charAt(h))}))},compress:function(d){return u._compress(d,16,function(h){return n(h)})},_compress:function(d,h,p){if(d==null)return"";var m,y,b={},x={},w="",_="",S="",k=2,C=3,E=2,R=[],A=0,O=0,D;for(D=0;D<d.length;D+=1)if(w=d.charAt(D),Object.prototype.hasOwnProperty.call(b,w)||(b[w]=C++,x[w]=!0),_=S+w,Object.prototype.hasOwnProperty.call(b,_))S=_;else{if(Object.prototype.hasOwnProperty.call(x,S)){if(S.charCodeAt(0)<256){for(m=0;m<E;m++)A=A<<1,O==h-1?(O=0,R.push(p(A)),A=0):O++;for(y=S.charCodeAt(0),m=0;m<8;m++)A=A<<1|y&1,O==h-1?(O=0,R.push(p(A)),A=0):O++,y=y>>1}else{for(y=1,m=0;m<E;m++)A=A<<1|y,O==h-1?(O=0,R.push(p(A)),A=0):O++,y=0;for(y=S.charCodeAt(0),m=0;m<16;m++)A=A<<1|y&1,O==h-1?(O=0,R.push(p(A)),A=0):O++,y=y>>1}k--,k==0&&(k=Math.pow(2,E),E++),delete x[S]}else for(y=b[S],m=0;m<E;m++)A=A<<1|y&1,O==h-1?(O=0,R.push(p(A)),A=0):O++,y=y>>1;k--,k==0&&(k=Math.pow(2,E),E++),b[_]=C++,S=String(w)}if(S!==""){if(Object.prototype.hasOwnProperty.call(x,S)){if(S.charCodeAt(0)<256){for(m=0;m<E;m++)A=A<<1,O==h-1?(O=0,R.push(p(A)),A=0):O++;for(y=S.charCodeAt(0),m=0;m<8;m++)A=A<<1|y&1,O==h-1?(O=0,R.push(p(A)),A=0):O++,y=y>>1}else{for(y=1,m=0;m<E;m++)A=A<<1|y,O==h-1?(O=0,R.push(p(A)),A=0):O++,y=0;for(y=S.charCodeAt(0),m=0;m<16;m++)A=A<<1|y&1,O==h-1?(O=0,R.push(p(A)),A=0):O++,y=y>>1}k--,k==0&&(k=Math.pow(2,E),E++),delete x[S]}else for(y=b[S],m=0;m<E;m++)A=A<<1|y&1,O==h-1?(O=0,R.push(p(A)),A=0):O++,y=y>>1;k--,k==0&&(k=Math.pow(2,E),E++)}for(y=2,m=0;m<E;m++)A=A<<1|y&1,O==h-1?(O=0,R.push(p(A)),A=0):O++,y=y>>1;for(;;)if(A=A<<1,O==h-1){R.push(p(A));break}else O++;return R.join("")},decompress:function(d){return d==null?"":d==""?null:u._decompress(d.length,32768,function(h){return d.charCodeAt(h)})},_decompress:function(d,h,p){var m=[],y=4,b=4,x=3,w="",_=[],S,k,C,E,R,A,O,D={val:p(0),position:h,index:1};for(S=0;S<3;S+=1)m[S]=S;for(C=0,R=Math.pow(2,2),A=1;A!=R;)E=D.val&D.position,D.position>>=1,D.position==0&&(D.position=h,D.val=p(D.index++)),C|=(E>0?1:0)*A,A<<=1;switch(C){case 0:for(C=0,R=Math.pow(2,8),A=1;A!=R;)E=D.val&D.position,D.position>>=1,D.position==0&&(D.position=h,D.val=p(D.index++)),C|=(E>0?1:0)*A,A<<=1;O=n(C);break;case 1:for(C=0,R=Math.pow(2,16),A=1;A!=R;)E=D.val&D.position,D.position>>=1,D.position==0&&(D.position=h,D.val=p(D.index++)),C|=(E>0?1:0)*A,A<<=1;O=n(C);break;case 2:return""}for(m[3]=O,k=O,_.push(O);;){if(D.index>d)return"";for(C=0,R=Math.pow(2,x),A=1;A!=R;)E=D.val&D.position,D.position>>=1,D.position==0&&(D.position=h,D.val=p(D.index++)),C|=(E>0?1:0)*A,A<<=1;switch(O=C){case 0:for(C=0,R=Math.pow(2,8),A=1;A!=R;)E=D.val&D.position,D.position>>=1,D.position==0&&(D.position=h,D.val=p(D.index++)),C|=(E>0?1:0)*A,A<<=1;m[b++]=n(C),O=b-1,y--;break;case 1:for(C=0,R=Math.pow(2,16),A=1;A!=R;)E=D.val&D.position,D.position>>=1,D.position==0&&(D.position=h,D.val=p(D.index++)),C|=(E>0?1:0)*A,A<<=1;m[b++]=n(C),O=b-1,y--;break;case 2:return _.join("")}if(y==0&&(y=Math.pow(2,x),x++),m[O])w=m[O];else if(O===b)w=k+k.charAt(0);else return null;_.push(w),m[b++]=k+w.charAt(0),y--,k=w,y==0&&(y=Math.pow(2,x),x++)}}};return u})();t!=null?t.exports=e:typeof angular<"u"&&angular!=null&&angular.module("LZString",[]).factory("LZString",function(){return e})})(cm)),cm.exports}var O9=k9();function D9(t){return O9.compressToEncodedURIComponent(t)}const j9=N.createContext(null);function z9(){return N.useContext(j9)}function L2(){return typeof window>"u"?"https://simten.dev":window.location.hostname==="localhost"?window.location.origin:"https://simten.dev"}const V9=160,L9=90;function I9(t){if(!t)return 1.5;const e=Object.values(t);if(e.length===0)return 1.5;const n=Math.max(...e.map(s=>s.x))+V9,o=Math.max(...e.map(s=>s.y))+L9;return n<=0||o<=0?1.5:n/o}const P9=N.forwardRef(function({circuit:e,height:n,aspectRatio:o,showControls:s=!0,layout:a,theme:l,title:u,subtitle:d,description:h,href:p,focus:m,showPortLabels:y,onPortClick:b,glowUnconnected:x,autoRunSpeed:w=500,initialInputs:_,forkSource:S,onPortValuesChange:k},C){const E=u||h,[R,A]=N.useState(null),[O,D]=N.useState(!1),U=z9(),q=async()=>{if(!O)try{const j=S??bM(e);if(U){D(!0);const{hash:I}=await U(j);window.open(`${L2()}/circuit/s/${I}`,"_blank","noopener")}else{const I=D9(j);window.open(`${L2()}/circuit/${I}`,"_blank","noopener")}}catch(j){A(j instanceof Error?j.message:"Couldn't fork this circuit"),setTimeout(()=>A(null),3e3)}finally{D(!1)}},Y=n===void 0,K=o??I9(a),W={width:"100%",aspectRatio:String(K),minHeight:240,maxHeight:"70vh"},B=E?void 0:Y?W:{height:n},H=E?Y?W:{height:n}:{height:"100%"};return M.jsxs("div",{style:B,className:`relative flex flex-col ${E?"rounded-xl border border-[var(--embed-border)] overflow-hidden bg-[var(--embed-bg-secondary)]":""}`,children:[!E&&!p&&M.jsx("button",{type:"button",onClick:q,title:R??"Open and modify this circuit in the Simten editor",className:"absolute top-2 right-2 z-10 hidden md:flex items-center px-2.5 py-1 rounded border border-[var(--embed-border)] bg-[var(--embed-bg-secondary)] text-[11px] text-[var(--embed-text-primary)] hover:opacity-80 transition-colors shadow-sm",children:R?"Fork failed":"Fork →"}),M.jsx("div",{style:H,className:"min-h-0",children:M.jsx(R9,{ref:C,circuit:e,height:"100%",showControls:s,autoHarness:!0,initialInputs:_,layout:a,theme:l,focus:m,showPortLabels:y,onPortClick:b,glowUnconnected:x,autoRunSpeed:w,onPortValuesChange:k})}),E&&M.jsxs("div",{className:"border-t border-[var(--embed-border)] px-4 py-3 flex items-end justify-between gap-4",children:[M.jsxs("div",{children:[M.jsx("div",{className:"text-base font-semibold text-[var(--embed-text-primary)]",children:u}),d&&M.jsx("div",{className:"text-xs text-[var(--embed-text-muted)] font-mono mt-0.5",children:d}),h&&M.jsx("div",{className:"text-sm text-[var(--embed-text-secondary)] mt-1.5 leading-relaxed",children:h})]}),p?M.jsx("a",{href:p,className:"shrink-0 px-3 py-1.5 rounded border border-[var(--embed-border)] text-xs text-[var(--embed-text-primary)] hover:opacity-80 transition-colors",children:"Open →"}):M.jsx("button",{type:"button",onClick:q,title:R??"Open and modify this circuit in the Simten editor",className:"hidden md:flex items-center shrink-0 px-3 py-1.5 rounded border border-[var(--embed-border)] text-xs text-[var(--embed-text-primary)] hover:opacity-80 transition-colors",children:R?`Can't fork: ${R.slice(0,40)}`:"Fork →"})]})]})});function B9({code:t,height:e,showControls:n,title:o,subtitle:s,description:a,href:l,autoRunSpeed:u,theme:d}){const h=Wf(),[p,m]=N.useState(null),[y,b]=N.useState(null);return N.useEffect(()=>{if(!t){m(null),b(null);return}let x=!1;return h.compile(t).then(w=>{if(x)return;if("error"in w){b(w.error),m(null);return}const _=w.circuits[w.circuits.length-1];if(!_){b("No circuit found in code"),m(null);return}b(null),m(yM(_,w.libraryCircuits))}),()=>{x=!0}},[t,h]),t?y?M.jsx("div",{style:{height:e},className:"flex items-center justify-center p-4",children:M.jsxs("div",{className:"text-sm text-red-400 bg-red-500/10 rounded p-3 border border-red-500/20",children:[M.jsx("div",{className:"font-medium mb-1",children:"Error"}),M.jsx("div",{className:"font-mono text-xs whitespace-pre-wrap",children:y})]})}):p?M.jsx("div",{"data-embed-theme":d??"dark",children:M.jsx(P9,{circuit:p,height:e,showControls:n,title:o,subtitle:s,description:a,href:l,forkSource:t,autoRunSpeed:u,theme:d})}):M.jsx("div",{style:{height:e},className:"flex items-center justify-center text-sm text-gray-500",children:"Compiling..."}):M.jsx("div",{style:{height:e},className:"flex items-center justify-center text-sm text-gray-500",children:"No circuit code provided"})}function H9(t){return M.jsx(FN,{children:M.jsx(B9,{...t})})}const I2=HN(H9,{props:{code:"string",height:"number",showControls:"boolean",title:"string",subtitle:"string",description:"string",href:"string",autoRunSpeed:"number",theme:"string"}});return customElements.get("circuit-embed")||customElements.define("circuit-embed",I2),Hf.CircuitEmbedWC=I2,Object.defineProperty(Hf,Symbol.toStringTag,{value:"Module"}),Hf})({});
79
+ === Eliminating ${p.length} passthrough connections ===`);const m=[],y=new Set;for(const b of h)if(u.has(b.source.nodeId)&&b.source.nodeId===b.target.nodeId){y.add(b.id),a&&console.log(` PASSTHROUGH: ${b.source.nodeId}.${b.source.portName} -> ${b.target.portName}`);const w=h.filter(S=>S.target.nodeId===b.source.nodeId&&S.target.portName===b.source.portName&&!y.has(S.id)),_=h.filter(S=>S.source.nodeId===b.target.nodeId&&S.source.portName===b.target.portName&&!y.has(S.id));for(const S of w)for(const k of _){const C={id:`${S.source.nodeId}.${S.source.portName}->${k.target.nodeId}.${k.target.portName}`,source:S.source,target:k.target,portType:b.portType};m.push(C),y.add(S.id),y.add(k.id),a&&console.log(` DIRECT: ${C.source.nodeId}.${C.source.portName} -> ${C.target.nodeId}.${C.target.portName}`)}}else y.has(b.id)||m.push(b);return w2(m,n,u,a)}return w2(h,n,u,a)}function w2(t,e,n,o){const s=new Set(e.map(p=>p.id)),a=p=>p.nodeId===De||s.has(p.nodeId),l=new Map;for(const p of t){const m=`${p.source.nodeId}.${p.source.portName}`;l.has(m)||l.set(m,[]),l.get(m).push(p)}const u=p=>{const m=[],y=new Set,b=[p];for(;b.length>0;){const x=b.pop(),w=`${x.nodeId}.${x.portName}`;if(!y.has(w)){if(y.add(w),a(x)){m.push(x);continue}for(const _ of l.get(w)??[])b.push(_.target)}}return m},d=[],h=new Set;for(const p of t){if(!a(p.source))continue;const m=a(p.target)?[p.target]:u(p.target);for(const y of m){if(p.source.nodeId===y.nodeId&&p.source.portName===y.portName)continue;const x=`${p.source.nodeId}.${p.source.portName}->${y.nodeId}.${y.portName}`;h.has(x)||(h.add(x),o&&console.log(` RESOLVED: ${p.source.nodeId}.${p.source.portName} -> ${y.nodeId}.${y.portName}`),d.push({id:x,source:p.source,target:y,portType:p.portType}))}}return d}function VU(t,e,n,o,s=!1){for(const a of t.connections){if(a.source.nodeId===""&&a.target.nodeId!==""){const l=`${e}.${a.source.portName}`,u=pu(e,a.target,t,o);n.has(l)||n.set(l,[]);for(const d of u)n.get(l).push(d),s&&console.log(` INPUT: ${a.source.portName} -> ${d.nodeId}.${d.portName}`)}if(a.source.nodeId!==""&&a.target.nodeId===""){const l=`${e}.${a.target.portName}`,u=pu(e,a.source,t,o);n.has(l)||n.set(l,[]);for(const d of u)n.get(l).push(d),s&&console.log(` OUTPUT: ${a.target.portName} <- ${d.nodeId}.${d.portName}`)}if(a.source.nodeId===""&&a.target.nodeId===""){s&&console.log(` PASSTHROUGH: ${a.source.portName} -> ${a.target.portName}`);const l=`${e}.${a.source.portName}`;n.has(l)||n.set(l,[]),n.get(l).push({nodeId:e,portName:a.target.portName}),s&&console.log(` -> Added passthrough forwarding: ${l} -> ${e}.${a.target.portName}`)}}}function pu(t,e,n,o,s=new Set){if(e.nodeId==="")return[{nodeId:t,portName:e.portName}];const a=t+"."+e.nodeId,l=n.nodes.find(p=>p.id===e.nodeId);if(!l)return[{nodeId:a,portName:e.portName}];const u=o.resolveCircuit(l.componentRef);if(!u||u.implementation.kind!=="composite")return[{nodeId:a,portName:e.portName}];if(s.has(l.componentRef))return[{nodeId:a,portName:e.portName}];const d=new Set(s);d.add(l.componentRef);const h=[];for(const p of u.connections){if(p.target.nodeId===""&&p.target.portName===e.portName){const m=pu(a,p.source,u,o,d);h.push(...m)}if(p.source.nodeId===""&&p.source.portName===e.portName){const m=pu(a,p.target,u,o,d);h.push(...m)}}return h.length>0?h:[{nodeId:a,portName:e.portName}]}function LU(t){t.nodeMap=new Map(t.nodes.map(e=>[e.id,e]));for(const e of t.nodes)e.dependents=[],e.inputSources=[];for(const e of t.connections){const n=e.source.nodeId,o=e.target.nodeId;if(o===De)continue;const s=t.nodeMap.get(n);s&&!s.dependents.includes(o)&&s.dependents.push(o);const a=t.nodeMap.get(o);a&&a.inputSources.push({portName:e.target.portName,sourceNodeId:n,sourcePortName:e.source.portName})}}function IU(t,e){return`${t}.${e}`}function _2(t,e,n){const o=new Map,s=new Map,a=new Map;for(const l of t.nodes){const u=e.resolveCircuit(l.primitiveType);if(u){if(u.implementation.kind==="primitive"&&u.state.length>0){const d=u.state.map(p=>PU(p,l.id,l.arguments,l.primitiveType,n)),h=u.state.length===1?d[0]:Object.fromEntries(u.state.map((p,m)=>[p.name,d[m]]));o.set(l.id,h),s.set(l.id,h)}for(const d of l.clocks)a.set(IU(l.id,d.name),{value:!1,edge:"none"})}}return{currentState:o,nextState:s,clocks:a,cycleCount:0}}function PU(t,e,n,o,s){const a=t.stateType.kind,l=n[t.name];if(a==="memory"){const d=new Map,h=t.initialValue;if(h?.data){if(h.data instanceof Map)for(const[p,m]of h.data)d.set(p,m);else if(typeof h.data=="object")for(const[p,m]of Object.entries(h.data)){const y=parseInt(p,10);!isNaN(y)&&typeof m=="number"&&d.set(y,m)}}if(l!==void 0){if(Array.isArray(l))l.forEach((p,m)=>{typeof p=="number"&&d.set(m,p)});else if(l instanceof Map)for(const[p,m]of l)d.set(p,m);else if(typeof l=="object"&&l!==null)for(const[p,m]of Object.entries(l)){const y=parseInt(p,10);!isNaN(y)&&typeof m=="number"&&d.set(y,m)}}if(s){const p=HU(e,s,o);if(p)for(const[m,y]of p.entries())d.set(m,y)}return d}if(l!==void 0&&(typeof l=="number"||typeof l=="boolean"))return l;const u=t.initialValue;return u}function BU(t){const n=t.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*");return new RegExp(n,"i")}function HU(t,e,n){for(const[o,s]of e){const a=BU(o);if(a.test(t)||n&&a.test(n))return s}}const im={And:0,Or:1,Not:2,Nand:3,Nor:4,Xor:5,Xnor:6,Buffer:7,Switch:10,Led:11,Output:12,Button:13,Input:14,Constant:15,Splitter:20,Splitter8to8:21,Combiner8to8:22,Probe:23,BitSlice:24,AddressCombiner:25,Concat:26,BusAnd:40,BusOr:41,BusNot:42,BusXor:43,Incrementer:50,Adder:51,Multiplier:52,Comparator:53,LeftShifter:54,RightShifter:55,Subtractor:56,SignedAdder:57,SignedComparator:58,SignedMultiplier:59,Mux:70,Decoder:71,SevenSegment:80,HexDisplay:81,Screen:82,RasterDisplay:83,DFlipFlop:90,Register:91,ROM:100,RAM:101,DualPortRAM:102,Console:110},UU=Object.entries(im).reduce((t,[e,n])=>(t[n]=e,t),[]);class $U{queue;pending;head=0;tail=0;capacity;constructor(e){this.capacity=e,this.queue=new Uint32Array(e),this.pending=new Uint8Array(e)}enqueue(e){this.pending[e]||(this.pending[e]=1,this.queue[this.tail%this.capacity]=e,this.tail++)}enqueueAll(e){for(let n=0;n<e.length;n++)this.enqueue(e[n])}dequeue(){const e=this.queue[this.head%this.capacity];return this.pending[e]=0,this.head++,e}isEmpty(){return this.head===this.tail}size(){return this.tail-this.head}toArray(){const e=[];for(let n=this.head;n<this.tail;n++)e.push(this.queue[n%this.capacity]);return e}clear(){this.head=0,this.tail=0,this.pending.fill(0)}}function S2(t){return{values:new Int32Array(t),changed:new Uint8Array(t),initialized:new Uint8Array(t)}}function E2(t,e){const n=t.circuit.inputSourcePort[t.portStart+e];return n>=0?t.values.values[n]:0}function C2(t,e,n){const o=t.portStart+t.inputCount+e;t.values.values[o]=n,t.values.initialized[o]=1}const YU=Math.max(...Object.values(im))+1,Va=new Array(YU).fill(null);function T2(t){return new Proxy(t,{get(e,n){if(typeof n=="string"&&/^\d+$/.test(n))return e.get(Number(n))??0;const o=e[n];return typeof o=="function"?o.bind(e):o},set(e,n,o){return typeof n=="string"&&/^\d+$/.test(n)?(e.set(Number(n),o),!0):!1}})}let qU=200;const N2=new Map;function GU(t){const e=im[t];if(e!==void 0)return e;const n=N2.get(t);if(n!==void 0)return n;const o=qU++;return N2.set(t,o),UU[o]=t,o}function FU(t,e,n,o){const s=t.length,a=e.length;return!o||o.length===0?function(u){const d={},h=u.circuit.flatCircuit.nodes[u.nodeIndex]?.arguments;if(h)for(const m in h)d[m]=h[m];for(let m=0;m<s;m++)d[t[m]]=E2(u,m);const p=n(d);for(let m=0;m<a;m++){const y=p[e[m]];y!==void 0&&C2(u,m,y)}}:function(u){const d={},h=u.circuit.flatCircuit.nodes[u.nodeIndex]?.arguments;if(h)for(const m in h)d[m]=h[m];for(let m=0;m<s;m++)d[t[m]]=E2(u,m);if(u.state){const m=u.state.currentState[u.nodeIndex];if(m!=null&&typeof m=="object"&&!Array.isArray(m)&&!(m instanceof Map)){const y=m;for(const b of o){const x=y[b];d[b]=x instanceof Map?T2(x):x}}else m!=null&&(d[o[0]]=m instanceof Map?T2(m):m)}const p=n(d);for(let m=0;m<a;m++){const y=p[e[m]];y!==void 0&&C2(u,m,y)}}}function XU(t){const e=GU(t);if(Va[e]!=null)return e;const n=Ll(t);if(!n)return console.warn(`[eval-bridge] No eval-registry entry for '${t}' — getAllCircuitEvals:`,[...WN().keys()]),e;for(;Va.length<=e;)Va.push(null);return Va[e]=FU(n.inputNames,n.outputNames,n.evalFn,n.stateKeys),e}const om=new Map;function ZU(t){if(om.has(t))return om.get(t);const e=Ll(t);if(!e?.onTickFn)return;const n={inputNames:e.inputNames,stateKeys:e.stateKeys??[],fn:e.onTickFn};return om.set(t,n),n}function KU(t,e){const n=t.nodes.length,o=new Map,s=new Array(n);for(let q=0;q<n;q++){const Y=t.nodes[q];o.set(Y.id,q),s[q]=Y.id}let a=0;const l=new Uint32Array(n),u=new Uint8Array(n),d=new Uint8Array(n);for(let q=0;q<n;q++){const Y=t.nodes[q];l[q]=a,u[q]=Y.inputs.length,d[q]=Y.outputs.length,a+=Y.inputs.length+Y.outputs.length}const h=t.topLevelInputs.length,p=t.topLevelOutputs.length,m=a+h+p,y=new Map,b=new Array(m),x=new Uint8Array(m),w=new Uint8Array(m),_=new Array(m);let S=a;for(const q of t.topLevelInputs){const Y=`${De}.${q.name}`;y.set(Y,S),b[S]=Y,x[S]=1,w[S]=q.portType.kind==="bus"?1:0,S++}for(const q of t.topLevelOutputs){const Y=`${De}.${q.name}`;y.set(Y,S),b[S]=Y,x[S]=0,w[S]=q.portType.kind==="bus"?1:0,S++}for(let q=0;q<n;q++){const Y=t.nodes[q];let K=l[q];for(const W of Y.inputs){const B=`${Y.id}.${W.name}`;y.set(B,K),b[K]=B,x[K]=0,w[K]=W.portType.kind==="bus"?1:0,_[K]=W.name,K++}for(const W of Y.outputs){const B=`${Y.id}.${W.name}`;y.set(B,K),b[K]=B,x[K]=1;let H=W.portType.kind==="bus";if(!H){const j=Y.arguments.width;if(typeof j=="number"&&j>1&&(H=!0),!H&&Y.primitiveType==="Mux"){for(const I of Y.inputs)if(I.name!=="sel"&&I.portType.kind==="bus"){H=!0;break}}}w[K]=H?1:0,K++}}const k=new Uint16Array(n);for(let q=0;q<n;q++){const Y=t.nodes[q];k[q]=XU(Y.primitiveType)}const C=new Array(n);for(let q=0;q<n;q++){const K=t.nodes[q].dependents.map(W=>o.get(W)).filter(W=>W!==void 0);C[q]=new Uint32Array(K)}const E=new Int32Array(a),R=new Int32Array(a);E.fill(-1),R.fill(-1);for(let q=0;q<n;q++){const Y=t.nodes[q],K=l[q];for(let W=0;W<Y.inputSources.length;W++){const B=Y.inputSources[W],H=Y.inputs.findIndex(I=>I.name===B.portName);if(H===-1)continue;const j=K+H;if(B.sourceNodeId===De){E[j]=-1;const I=`${De}.${B.sourcePortName}`;R[j]=y.get(I)??-1}else{const I=o.get(B.sourceNodeId);if(I===void 0)continue;const z=t.nodes[I],$=z.outputs.findIndex(G=>G.name===B.sourcePortName);if($===-1)continue;E[j]=I,R[j]=l[I]+z.inputs.length+$}}}const A=new Uint8Array(n),O=new Uint8Array(n),D=new Uint8Array(n),U=new Uint8Array(n);for(let q=0;q<n;q++){const Y=t.nodes[q];A[q]=Y.inputs.length===0?1:0;const K=e.resolveCircuit(Y.primitiveType);K?.state&&K.state.length>0&&(D[q]=1,O[q]=1);for(const W of Y.inputSources)if(W.sourceNodeId===De){U[q]=1;break}}return{nodeCount:n,portCount:m,nodeIdToIndex:o,indexToNodeId:s,portKeyToIndex:y,indexToPortKey:b,primitiveTypeIndex:k,nodePortStart:l,nodeInputCount:u,nodeOutputCount:d,dependents:C,inputSourceNode:E,inputSourcePort:R,inputPortNames:_,portIsOutput:x,portIsBus:w,isSourceNode:A,isStateOutputNode:O,hasState:D,readsTopLevelInput:U,flatCircuit:t}}function rm(t,e){const n=new Array(t.nodeCount),o=new Array(t.nodeCount);for(const[s,a]of e.currentState){const l=t.nodeIdToIndex.get(s);l!==void 0&&(n[l]=a)}for(const[s,a]of e.nextState){const l=t.nodeIdToIndex.get(s);l!==void 0&&(o[l]=a)}return{currentState:n,nextState:o,clocks:e.clocks,cycleCount:e.cycleCount}}function sm(t,e){const n=new Map,o=new Map;for(let s=0;s<t.nodeCount;s++){const a=t.indexToNodeId[s];e.currentState[s]!==void 0&&n.set(a,e.currentState[s]),e.nextState[s]!==void 0&&o.set(a,e.nextState[s])}return{currentState:n,nextState:o,clocks:e.clocks,cycleCount:e.cycleCount}}const A2=1e4,am=new WeakMap;function QU(t){const e=new Map(t),n=new Proxy(e,{get(o,s){if(typeof s=="string"&&/^\d+$/.test(s))return o.get(Number(s))??0;const a=o[s];return typeof a=="function"?a.bind(o):a},set(o,s,a){return typeof s=="string"&&/^\d+$/.test(s)?(o.set(Number(s),a),!0):!1}});return am.set(n,e),n}const WU=new Int32Array(64),JU=new Uint8Array(64);function La(t,e,n,o,s){let a=0;if(s)for(const[u,d]of s){const h=t.portKeyToIndex.get(u);h!==void 0&&(n.values[h]=typeof d=="boolean"?d?1:0:d,n.initialized[h]=1)}const l={circuit:t,values:n,state:o,queue:e,nodeIndex:0,portStart:0,inputCount:0,outputCount:0};for(;!e.isEmpty();){if(++a>A2)throw new Error(`Propagation did not stabilize after ${A2} iterations. Possible unstable feedback loop in circuit.`);const u=e.dequeue(),d=t.nodePortStart[u],h=t.nodeInputCount[u],p=t.nodeOutputCount[u],m=d+h;l.nodeIndex=u,l.portStart=d,l.inputCount=h,l.outputCount=p;const y=p<=64?WU:new Int32Array(p),b=p<=64?JU:new Uint8Array(p);for(let S=0;S<p;S++)y[S]=n.values[m+S],b[S]=n.initialized[m+S];const x=t.primitiveTypeIndex[u],w=Va[x];w?w(l):t9(t,u);let _=!1;for(let S=0;S<p;S++){const k=m+S;if(n.values[k]!==y[S]||n.initialized[k]&&!b[S]){_=!0;break}}_&&e.enqueueAll(t.dependents[u])}return a}function t9(t,e,n,o,s){const a=t.flatCircuit.nodes[e];throw new Error(`Primitive '${a.primitiveType}' has no registered evaluator. Either import '@simten/core/std' to register the standard library, or register the primitive's eval lambda explicitly via registerEvalFunction(). If you constructed a Circuit IR by hand (rather than via circuit()), you must register its evaluator yourself.`)}function mu(t,e){for(let n=0;n<t.nodeCount;n++)(t.isSourceNode[n]||t.isStateOutputNode[n]||t.readsTopLevelInput[n])&&(e.enqueue(n),t.isSourceNode[n],t.isStateOutputNode[n],t.readsTopLevelInput[n])}function e9(t,e){for(let n=0;n<t.nodeCount;n++)t.isStateOutputNode[n]&&e.enqueue(n)}function n9(t,e){for(const[n,o]of e.clocks)o.edge="rising",o.value=!0}function i9(t,e,n,o){for(let s=0;s<t.nodeCount;s++){if(!t.hasState[s])continue;const a=t.flatCircuit.nodes[s],l=ZU(a.primitiveType);if(!l)continue;const u=new Map,d=t.nodePortStart[s],h=t.nodeInputCount[s];for(let w=0;w<h;w++){const _=d+w,S=t.inputSourceNode[_],k=t.inputSourcePort[_],C=t.inputPortNames[_];if(S===-1){if(o&&k>=0){const E=t.indexToPortKey[k],R=o.get(E);R!==void 0&&u.set(C,R)}}else if(k>=0){const E=e.values[k];u.set(C,E)}}if(a.arguments)for(const[w,_]of Object.entries(a.arguments))u.set(`__${w}`,_);const p={};for(const w of a.clocks){const _=`${a.id}.${w.name}`,S=n.clocks.get(_);S&&(p[w.name]=S.edge)}const m=n.currentState[s],y={};for(const[w,_]of u)y[w]=_;if(m!=null&&typeof m=="object"&&!(m instanceof Map))for(const w of l.stateKeys)y[w]=m[w];else m!=null&&l.stateKeys.length===1&&(m instanceof Map?y[l.stateKeys[0]]=QU(m):y[l.stateKeys[0]]=m);const b=l.fn(y);let x=l.stateKeys.length===1?b[l.stateKeys[0]]:b;x!=null&&typeof x=="object"&&am.has(x)&&(x=am.get(x)),n.nextState[s]=x}}function o9(t){for(let e=0;e<t.currentState.length;e++){const n=t.nextState[e];n!==void 0&&(n instanceof Map?(t.currentState[e]=new Map(n),t.nextState[e]=new Map(n)):(t.currentState[e]=n,t.nextState[e]=n))}t.cycleCount++}function Ia(t,e,n){const o=new Map;if(n)for(const[s,a]of n)o.set(s,a);for(let s=0;s<t.portCount;s++){const a=t.indexToPortKey[s],l=t.portIsOutput[s]===1,u=t.portIsBus[s]===0;let d,h;if(l)d=e.values[s],h=e.initialized[s]!==0;else{const m=t.inputSourcePort[s];m>=0?(d=e.values[m],h=e.initialized[m]!==0):(d=0,h=!1)}h||(d=0);const p=d>1||d<0;o.set(a,u&&!p?d!==0:d)}return o}function r9(t,e,n){for(const[o,s]of n){const a=t.portKeyToIndex.get(o);a!==void 0&&(e.values[a]=typeof s=="boolean"?s?1:0:s,e.initialized[a]=1)}}function gu(t,e,n){for(const o of t.flatCircuit.connections)if(o.target.nodeId===De||o.target.nodeId===""){const s=`${o.source.nodeId}.${o.source.portName}`,a=t.portKeyToIndex.get(s);if(a!==void 0){const l=`${o.target.nodeId||De}.${o.target.portName}`,u=t.portIsBus[a]===0,d=e.values[a];n.set(l,u?d!==0:d)}}}class s9{flatCircuit=null;options=null;numericCircuit=null;numericSeqState=null;numericValues=null;eventQueue=null;topLevelInputs=new Map;cachedFlatSeqState=null;cachedPortValues=null;cacheValid=!1;totalTicks=0;totalEvaluations=0;initialize(e,n){this.flatCircuit=e,this.options=n,this.numericCircuit=KU(e,n.componentLibrary);const o=_2(e,n.componentLibrary);this.numericSeqState=rm(this.numericCircuit,o),this.numericValues=S2(this.numericCircuit.portCount),this.eventQueue=new $U(this.numericCircuit.nodeCount),this.topLevelInputs=new Map;for(const s of e.topLevelInputs){const a=`${De}.${s.name}`,l=s.portType.kind==="bit"?!1:0;this.topLevelInputs.set(a,l)}this.eventQueue.clear(),mu(this.numericCircuit,this.eventQueue),La(this.numericCircuit,this.eventQueue,this.numericValues,this.numericSeqState,this.topLevelInputs),this.totalTicks=0,this.totalEvaluations=0,this.cacheValid=!1}setNode(e,n){if(!this.flatCircuit||!this.numericCircuit)return;const o=`${De}.${e}`;if(this.topLevelInputs.has(o)){this.topLevelInputs.set(o,n),this.cacheValid=!1;return}const s=this.flatCircuit.nodes.find(l=>l.id===e)??this.flatCircuit.nodes.find(l=>l.id.endsWith("."+e));if(!s)return;const a=this.numericCircuit.nodeIdToIndex.get(s.id);if(a!==void 0&&this.numericSeqState&&this.numericSeqState.currentState[a]!==void 0){this.numericSeqState.currentState[a]=n,this.cacheValid=!1,this.cachedFlatSeqState=null,n instanceof Map&&this.options&&(this.options.initialMemory||(this.options.initialMemory=new Map),this.options.initialMemory.set(s.id,n));return}(typeof n=="boolean"||typeof n=="number"||typeof n=="string")&&(s.arguments={...s.arguments,value:n},this.cacheValid=!1)}tick(){if(!this.numericCircuit||!this.numericSeqState||!this.numericValues||!this.eventQueue)throw new Error("Simulator not initialized");this.eventQueue.clear(),mu(this.numericCircuit,this.eventQueue);const e=La(this.numericCircuit,this.eventQueue,this.numericValues,this.numericSeqState,this.topLevelInputs);n9(this.numericCircuit,this.numericSeqState),i9(this.numericCircuit,this.numericValues,this.numericSeqState,this.topLevelInputs),o9(this.numericSeqState),this.eventQueue.clear(),e9(this.numericCircuit,this.eventQueue);const n=La(this.numericCircuit,this.eventQueue,this.numericValues,this.numericSeqState,this.topLevelInputs),o=Ia(this.numericCircuit,this.numericValues,this.topLevelInputs);gu(this.numericCircuit,this.numericValues,o),this.cachedPortValues=o,this.cachedFlatSeqState=null,this.cacheValid=!0;const s=e+n;this.totalTicks++,this.totalEvaluations+=s;const a=sm(this.numericCircuit,this.numericSeqState);return{portValues:o,sequentialState:a,metrics:{phase1Evals:e,phase2Evals:n,totalEvals:s}}}runCombinational(){if(!this.numericCircuit||!this.numericValues||!this.eventQueue)throw new Error("Simulator not initialized");if(this.cacheValid&&this.cachedPortValues)return{portValues:this.cachedPortValues,metrics:{totalEvals:0}};this.eventQueue.clear(),mu(this.numericCircuit,this.eventQueue);try{La(this.numericCircuit,this.eventQueue,this.numericValues,this.numericSeqState??void 0,this.topLevelInputs)}catch(n){return{portValues:Ia(this.numericCircuit,this.numericValues,this.topLevelInputs),metrics:{totalEvals:0},error:n instanceof Error?n.message:"Unknown error"}}const e=Ia(this.numericCircuit,this.numericValues,this.topLevelInputs);return gu(this.numericCircuit,this.numericValues,e),this.cachedPortValues=e,this.cacheValid=!0,{portValues:e,metrics:{totalEvals:0}}}getOutput(e,n){if(!this.numericCircuit||!this.numericValues)return;const o=this.getPortValues(),s=`${e}.${n}`;return o.get(s)}getPortValues(){return!this.numericCircuit||!this.numericValues?new Map:(this.cacheValid||(this.cachedPortValues=Ia(this.numericCircuit,this.numericValues,this.topLevelInputs),gu(this.numericCircuit,this.numericValues,this.cachedPortValues),this.cacheValid=!0),this.cachedPortValues)}getState(){return!this.numericCircuit||!this.numericSeqState?null:((!this.cacheValid||!this.cachedFlatSeqState)&&(this.cachedFlatSeqState=sm(this.numericCircuit,this.numericSeqState)),this.cachedFlatSeqState)}snapshot(){if(!this.numericSeqState||!this.numericCircuit||!this.numericValues)throw new Error("No sequential state to snapshot");const e=Ia(this.numericCircuit,this.numericValues,this.topLevelInputs);gu(this.numericCircuit,this.numericValues,e);const n=sm(this.numericCircuit,this.numericSeqState);return{portValues:e,sequentialState:n,cycleCount:this.numericSeqState.cycleCount}}restore(e){!this.numericCircuit||!this.numericValues||(this.numericSeqState=rm(this.numericCircuit,e.sequentialState),r9(this.numericCircuit,this.numericValues,e.portValues),this.cacheValid=!1)}reset(){if(!this.flatCircuit||!this.options||!this.numericCircuit)return;const e=_2(this.flatCircuit,this.options.componentLibrary,this.options.initialMemory);this.numericSeqState=rm(this.numericCircuit,e),this.numericValues=S2(this.numericCircuit.portCount),this.eventQueue.clear(),mu(this.numericCircuit,this.eventQueue),La(this.numericCircuit,this.eventQueue,this.numericValues,this.numericSeqState,this.topLevelInputs),this.totalTicks=0,this.totalEvaluations=0,this.cacheValid=!1}getMetrics(){return{totalTicks:this.totalTicks,totalEvaluations:this.totalEvaluations,avgEvalsPerTick:this.totalTicks>0?this.totalEvaluations/this.totalTicks:0,nodeCount:this.flatCircuit?.nodes.length??0}}}function a9(t,e){const n=new s9;return n.initialize(t,e),n}function l9(t,e){const n=jU(t,e);return a9(n,{componentLibrary:e})}const c9=t=>t.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),u9=t=>t.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,n,o)=>o?o.toUpperCase():n.toLowerCase()),M2=t=>{const e=u9(t);return e.charAt(0).toUpperCase()+e.slice(1)},R2=(...t)=>t.filter((e,n,o)=>!!e&&e.trim()!==""&&o.indexOf(e)===n).join(" ").trim(),f9=t=>{for(const e in t)if(e.startsWith("aria-")||e==="role"||e==="title")return!0};var d9={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};const h9=N.forwardRef(({color:t="currentColor",size:e=24,strokeWidth:n=2,absoluteStrokeWidth:o,className:s="",children:a,iconNode:l,...u},d)=>N.createElement("svg",{ref:d,...d9,width:e,height:e,stroke:t,strokeWidth:o?Number(n)*24/Number(e):n,className:R2("lucide",s),...!a&&!f9(u)&&{"aria-hidden":"true"},...u},[...l.map(([h,p])=>N.createElement(h,p)),...Array.isArray(a)?a:[a]]));const eo=(t,e)=>{const n=N.forwardRef(({className:o,...s},a)=>N.createElement(h9,{ref:a,iconNode:e,className:R2(`lucide-${c9(M2(t))}`,`lucide-${t}`,o),...s}));return n.displayName=M2(t),n};const p9=eo("chevron-left",[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]]);const m9=eo("chevron-right",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]]);const g9=eo("gauge",[["path",{d:"m12 14 4-4",key:"9kzdfg"}],["path",{d:"M3.34 19a10 10 0 1 1 17.32 0",key:"19p75a"}]]);const y9=eo("history",[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"1357e3"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}],["path",{d:"M12 7v5l4 2",key:"1fdv2h"}]]);const v9=eo("pause",[["rect",{x:"14",y:"3",width:"5",height:"18",rx:"1",key:"kaeet6"}],["rect",{x:"5",y:"3",width:"5",height:"18",rx:"1",key:"1wsw3u"}]]);const b9=eo("play",[["path",{d:"M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z",key:"10ikf1"}]]);const x9=eo("rotate-ccw",[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"1357e3"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}]]);const w9=eo("skip-forward",[["path",{d:"M21 4v16",key:"7j8fe9"}],["path",{d:"M6.029 4.285A2 2 0 0 0 3 6v12a2 2 0 0 0 3.029 1.715l9.997-5.998a2 2 0 0 0 .003-3.432z",key:"zs4d6"}]]),k2=t=>typeof t=="boolean"?`${t}`:t===0?"0":t,O2=ex,_9=((t,e)=>n=>{var o;if(e?.variants==null)return O2(t,n?.class,n?.className);const{variants:s,defaultVariants:a}=e,l=Object.keys(s).map(h=>{const p=n?.[h],m=a?.[h];if(p===null)return null;const y=k2(p)||k2(m);return s[h][y]}),u=n&&Object.entries(n).reduce((h,p)=>{let[m,y]=p;return y===void 0||(h[m]=y),h},{}),d=e==null||(o=e.compoundVariants)===null||o===void 0?void 0:o.reduce((h,p)=>{let{class:m,className:y,...b}=p;return Object.entries(b).every(x=>{let[w,_]=x;return Array.isArray(_)?_.includes({...a,...u}[w]):{...a,...u}[w]===_})?[...h,m,y]:h},[]);return O2(t,l,d,n?.class,n?.className)})("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",{variants:{variant:{default:"bg-primary text-primary-foreground shadow hover:bg-primary/90",destructive:"bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90",outline:"border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2",sm:"h-8 rounded-md px-3 text-xs",lg:"h-10 rounded-md px-8",icon:"h-9 w-9"}},defaultVariants:{variant:"default",size:"default"}}),D2=N.forwardRef(({className:t,variant:e,size:n,...o},s)=>M.jsx("button",{className:jn(_9({variant:e,size:n,className:t})),ref:s,...o}));D2.displayName="Button";function ts({label:t,icon:e,onClick:n,disabled:o,pulse:s}){return M.jsxs(_w,{children:[M.jsx(Sw,{asChild:!0,children:M.jsx(D2,{variant:"ghost",size:"icon",onClick:n,disabled:o,"aria-label":t,className:`h-7 w-7 text-muted-foreground disabled:opacity-40 [&_svg]:size-3.5${s?" animate-pulse text-blue-600 dark:text-blue-400 bg-blue-50 dark:bg-blue-950/40 ring-2 ring-blue-500/40":""}`,children:M.jsx(e,{})})}),M.jsx(Ew,{side:"bottom",children:t})]})}function j2({cycle:t,historyLength:e,historyIndex:n,isRunning:o,isViewingPast:s,onStep:a,onRun:l,onPause:u,onReset:d,onStepBack:h,onStepForward:p,onSeek:m,onSpeedChange:y,speed:b=1,maxSpeed:x=100,showScrubber:w,floating:_,chromeless:S,pulseRun:k}){const C=_?"absolute top-3 left-1/2 -translate-x-1/2 z-10":"",E=S?"flex items-center gap-1.5":"flex items-center gap-1.5 border-t border-border bg-card/95 px-3 py-1.5";return M.jsx(ww,{children:M.jsx("div",{className:C,children:M.jsxs("div",{className:E,children:[M.jsx(ts,{label:"Tick",icon:w9,onClick:a,disabled:o||s}),o?M.jsx(ts,{label:"Pause",icon:v9,onClick:u}):M.jsx(ts,{label:"Run",icon:b9,onClick:l,disabled:s,pulse:k&&!s}),M.jsx(ts,{label:"Reset",icon:x9,onClick:d}),y&&M.jsxs("div",{className:"flex items-center gap-2 border-l border-border pl-2 ml-0.5",children:[M.jsx(g9,{className:"h-3.5 w-3.5 text-muted-foreground/70","aria-hidden":!0}),M.jsx("input",{type:"range",min:"1",max:x,value:b,onChange:R=>y(Number(R.target.value)),className:"w-20 h-1 rounded-lg appearance-none cursor-pointer accent-blue-600",disabled:s,"aria-label":"Simulation speed"}),M.jsxs("span",{className:"min-w-[55px] text-[10px] text-muted-foreground font-mono tabular-nums",children:[b," tick/s"]})]}),M.jsx("div",{className:"border-l border-border pl-1.5 ml-0.5",children:M.jsxs("span",{className:"text-[11px] text-muted-foreground",children:["Cycle ",M.jsx("span",{className:"font-mono font-semibold text-foreground",children:t})]})}),e>1&&M.jsxs("div",{className:"flex items-center gap-0.5 border-l border-border pl-1.5 ml-0.5",children:[M.jsx(ts,{label:"Step back",icon:p9,onClick:h,disabled:n<=0||o}),M.jsx("span",{className:"min-w-[40px] text-center text-[11px] text-muted-foreground",children:s?M.jsxs("span",{className:"font-mono text-amber-600 dark:text-amber-400",children:[n+1,"/",e]}):M.jsxs("span",{className:"font-mono",children:[e,"/",e]})}),M.jsx(ts,{label:"Step forward",icon:m9,onClick:p,disabled:!s||o})]}),w&&m&&e>1&&M.jsxs("div",{className:"flex items-center gap-2 border-l border-border pl-2 ml-0.5",children:[M.jsx(y9,{className:"h-3.5 w-3.5 text-muted-foreground/70","aria-hidden":!0}),M.jsx("input",{type:"range",min:"0",max:e-1,value:n,onChange:R=>m(Number(R.target.value)),className:"w-24 h-1 rounded-lg appearance-none cursor-pointer accent-blue-600",disabled:o,"aria-label":"Cycle scrubber"})]})]})})})}function S9({frame:t,componentLibrary:e,onPushLevel:n,theme:o="dark"}){const s=N.useMemo(()=>DU(t.componentDef),[t.componentDef]),a=N.useMemo(()=>ud(s,e.resolveCircuit),[s,e]),l=N.useCallback(H=>{if(!H.isComposite)return;const j=e.resolveCircuit(H.componentRef);j&&j.implementation.kind==="composite"&&j.nodes.length>0&&n(H.componentRef,j,H.label??H.componentRef)},[e,n]),u=Wf(),[d,h]=N.useState(new Map),[p,m]=N.useState(!1),y=N.useRef(null),[b,x]=N.useState(0),[w,_]=N.useState(!1),S=N.useRef([]),[k,C]=N.useState(0),[E,R]=N.useState(-1),A=N.useRef("");A.current||(A.current=`drill-${typeof crypto<"u"&&crypto.randomUUID?crypto.randomUUID():Math.random().toString(36).slice(2)}`);const O=A.current;N.useEffect(()=>()=>{p&&u.dispose(O).catch(()=>{})},[u,O,p]),N.useEffect(()=>{const H=[],j=new Set;for(const z of e.getAllPrimitiveNames()){const $=e.resolveCircuit(z);$&&!j.has(z)&&(j.add(z),H.push($))}const I=z=>{for(const $ of z.nodes){if(j.has($.componentRef))continue;const G=e.resolveCircuit($.componentRef);G&&(j.add($.componentRef),H.push(G),G.implementation.kind==="composite"&&I(G))}};I(s),u.compileIR(s,H,O,{snapshot:a}).then(z=>{if("error"in z){try{const G=l9(s,e);G.runCombinational(),y.current=G,m(!1);const L=new Map;for(const[F,et]of G.getPortValues())L.set(F,et);h(L)}catch(G){console.warn("[InspectorCanvas] Both sandbox and local failed:",G)}return}m(!0);const $=new Map;for(const[G,L]of Object.entries(z.portValues))$.set(G,L);h($),S.current=z.snapshotId!==void 0?[{snapshotId:z.snapshotId,cycle:0}]:[],C(S.current.length),R(S.current.length===0?-1:0),x(0)})},[s,e,u,O,a]);const D=N.useCallback(H=>{const j=`${H}.out`,I=d.get(j);u.setNode(H,!I,O).then(z=>{if("error"in z)return;const $=new Map;for(const[G,L]of Object.entries(z.portValues))$.set(G,L);h($)})},[u,d]),U=N.useCallback((H,j)=>{u.setNode(H,j,O).then(I=>{if("error"in I)return;const z=new Map;for(const[$,G]of Object.entries(I.portValues))z.set($,G);h(z)})},[u]),q=N.useCallback(()=>{u.tick(void 0,O,{snapshot:a}).then(H=>{if("error"in H)return;const j=new Map;for(const[I,z]of Object.entries(H.portValues))j.set(I,z);if(h(j),x(H.cycle),H.snapshotId!==void 0){const I=S.current.slice(0,E+1);I.push({snapshotId:H.snapshotId,cycle:H.cycle}),S.current=I,C(I.length),R(I.length-1)}})},[u,O,a,E]),Y=N.useCallback(()=>{_(!1),u.reset(O).then(H=>{if("error"in H)return;const j=new Map;for(const[I,z]of Object.entries(H.portValues))j.set(I,z);h(j),x(0),S.current=[],C(0),R(-1),a&&u.snapshot(O).then(I=>{"error"in I||I.snapshotId===void 0||(S.current=[{snapshotId:I.snapshotId,cycle:0}],C(1),R(0))})})},[u,O,a]),K=N.useCallback(H=>{const j=S.current[H];j&&u.restore(j.snapshotId,O).then(I=>{if("error"in I)return;const z=new Map;for(const[$,G]of Object.entries(I.portValues))z.set($,G);h(z),x(j.cycle),R(H)})},[u,O]),W=N.useCallback(()=>{_(!1),E>0&&K(E-1)},[E,K]),B=N.useCallback(()=>{E<k-1?K(E+1):q()},[E,k,K,q]);return N.useEffect(()=>{if(!w)return;const H=window.setInterval(()=>{q()},200);return()=>window.clearInterval(H)},[w,q]),M.jsxs("div",{className:"relative h-full w-full",children:[a&&M.jsx(j2,{floating:!0,cycle:b,historyLength:k,historyIndex:E,isRunning:w,isViewingPast:E>=0&&E<k-1,onStep:q,onRun:()=>_(!0),onPause:()=>_(!1),onReset:Y,onStepBack:W,onStepForward:B}),M.jsx(z2,{circuit:s,componentLibrary:e,portValues:d,sequentialState:null,onToggleNode:D,onSetNodeValue:U,onNodeDoubleClick:l,nodeTypes:Tw,edgeTypes:Nw,theme:o,showControls:!0,height:"100%",panOnMobile:!0})]})}function E9({stack:t,onNavigate:e,theme:n="dark"}){const s=t[t.length-1]?.componentDef.metadata?.description,a=n==="dark";return M.jsxs("div",{className:"flex items-center gap-1 text-sm min-w-0",children:[t.map((l,u)=>M.jsxs(ko.Fragment,{children:[u>0&&M.jsx("span",{className:`${a?"text-gray-500":"text-gray-400"} shrink-0`,children:">"}),u<t.length-1?M.jsxs("button",{onClick:()=>e(u),className:`${a?"text-blue-400 hover:text-blue-300":"text-blue-600 hover:text-blue-800"} hover:underline font-medium shrink-0`,children:[l.nodeLabel," (",l.componentName,")"]}):M.jsxs("span",{className:`font-semibold shrink-0 ${a?"text-gray-100":"text-gray-900"}`,children:[l.nodeLabel," (",l.componentName,")"]})]},u)),s&&M.jsxs(M.Fragment,{children:[M.jsx("span",{className:`${a?"text-gray-600":"text-gray-300"} shrink-0`,children:"—"}),M.jsx("span",{className:`${a?"text-gray-400":"text-gray-500"} text-xs italic truncate`,children:s})]})]})}const C9={enterIn:{opacity:0},enterOut:{opacity:0},center:{opacity:1},exitIn:{opacity:0},exitOut:{opacity:0}};function T9({stack:t,componentLibrary:e,theme:n="dark",onClose:o,onPopLevel:s,onPushLevel:a,onNavigate:l}){const u=t.length>0,d=N.useRef(0),[h,p]=N.useState("in");N.useEffect(()=>{t.length>d.current?p("in"):t.length<d.current&&p("out"),d.current=t.length},[t.length]),N.useEffect(()=>{if(!u)return;const x=document.body.style.overflow;return document.body.style.overflow="hidden",()=>{document.body.style.overflow=x}},[u]);const m=N.useCallback(x=>{x.target===x.currentTarget&&o()},[o]),y=N.useCallback(x=>{x.key==="Escape"&&(x.stopPropagation(),t.length>1?s():o())},[t.length,s,o]),b=u?t[t.length-1]:null;return M.jsx(FS,{children:u&&b&&M.jsxs(M.Fragment,{children:[M.jsx(hu.div,{className:"fixed inset-0 z-50 bg-black/50",initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},transition:{duration:.25},onClick:m,onKeyDown:y,tabIndex:-1},"inspector-backdrop"),M.jsx(hu.div,{className:"fixed inset-0 z-50 flex items-center justify-center p-8 pointer-events-none",children:M.jsxs(hu.div,{className:`flex h-[80vh] w-full max-w-5xl flex-col rounded-lg shadow-xl pointer-events-auto overflow-hidden ${n==="dark"?"bg-gray-900":"bg-white"}`,initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},transition:{duration:.15},children:[M.jsxs("div",{className:`flex items-center justify-between border-b px-4 py-3 ${n==="dark"?"border-gray-700":"border-gray-200"}`,children:[M.jsx(E9,{stack:t,onNavigate:l,theme:n}),M.jsx("button",{onClick:o,className:`rounded p-1 ${n==="dark"?"text-gray-400 hover:bg-gray-800 hover:text-gray-300":"text-gray-400 hover:bg-gray-100 hover:text-gray-600"}`,"aria-label":"Close inspector",children:M.jsx("svg",{className:"h-5 w-5",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:M.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"})})})]}),M.jsx("div",{className:"relative flex-1 overflow-hidden",children:M.jsx(FS,{mode:"wait",initial:!1,children:M.jsx(hu.div,{className:"absolute inset-0",initial:h==="in"?"enterIn":"enterOut",animate:"center",exit:h==="in"?"exitIn":"exitOut",variants:C9,transition:{duration:.2,ease:"easeInOut"},children:M.jsx(S9,{frame:b,componentLibrary:e,onPushLevel:a,theme:n})},`${t.length}-${b.componentName}`)})})]})},"inspector-dialog")]})})}function N9(){const{fitView:t,zoomIn:e,zoomOut:n}=da(),o="bg-[var(--embed-bg-tertiary)] hover:opacity-80 text-[var(--embed-text-secondary)] p-1.5 rounded border border-[var(--embed-border)] transition-colors";return M.jsxs("div",{className:"flex items-center gap-1",children:[M.jsx("button",{onClick:()=>n(),className:o,title:"Zoom out","aria-label":"Zoom out",children:M.jsx("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",strokeWidth:1.5,children:M.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M5 12h14"})})}),M.jsx("button",{onClick:()=>e(),className:o,title:"Zoom in","aria-label":"Zoom in",children:M.jsx("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",strokeWidth:1.5,children:M.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M12 5v14M5 12h14"})})}),M.jsx("button",{onClick:()=>t({padding:.3}),className:o,title:"Fit view","aria-label":"Fit view",children:M.jsx("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",strokeWidth:1.5,children:M.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M3.75 3.75v4.5m0-4.5h4.5m-4.5 0L9 9M3.75 20.25v-4.5m0 4.5h4.5m-4.5 0L9 15M20.25 3.75h-4.5m4.5 0v4.5m0-4.5L15 9m5.25 11.25h-4.5m4.5 0v-4.5m0 4.5L15 15"})})})]})}let lm=null;function A9(){if(!lm){const t=new Map;lm={resolveCircuit:e=>t.get(e),getAllPrimitiveNames:()=>[...t.entries()].filter(([,e])=>e.implementation.kind==="primitive").map(([e])=>e),addCircuit:e=>{t.set(e.name,e)}}}return lm}function M9({circuit:t,componentLibrary:e,portValues:n,sequentialState:o,draggable:s=!0,layout:a,onToggleNode:l,onSetNodeValue:u,onLoadMemory:d,onNodeDoubleClick:h,height:p="100%",focus:m,className:y,renderEmptyState:b,renderOverlay:x,nodeTypes:w,edgeTypes:_,showControls:S=!0,showPortLabels:k,onPortClick:C,glowUnconnected:E,theme:R,panOnMobile:A=!1,onRequestRemount:O}){const D=m1(),U=R??D,q=$8(),Y=w??Tw,K=_??Nw,W=e??A9(),B=N.useMemo(()=>m?new Set(Array.isArray(m)?m:[m]):null,[m]),H=N.useMemo(()=>t?zj(t):null,[t]),{metadata:j}=U8(a?null:H),I=N.useMemo(()=>{if(!H)return{components:{},connections:{}};if(!a)return j;const mt={};for(const Ct of H.nodes){const It=Ct.label||Ct.id,zt=a[It]??a[Ct.id];zt&&(mt[Ct.id]={id:Ct.id,position:zt})}return{components:mt,connections:{}}},[H,j,a]),{projectedNodes:z,projectedEdges:$}=N.useMemo(()=>{if(!H)return{projectedNodes:[],projectedEdges:[]};const mt=hL(H,I,W,n??void 0,o??void 0),Ct=mt.nodes.map(It=>{const zt=It.data,Vt=zt?.componentRef,ve={...It.data};if(k&&(ve.showPortLabels=!0),E&&(ve.glowUnconnected=!0),C){const Wt=zt.label||zt.componentRef;ve.onPortClick=(je,xn)=>C(Wt,je,xn)}return Vt==="Input"&&u&&(ve.onValueChange=Wt=>u(It.id,Wt)),l&&(Vt==="Switch"||Vt==="Button")&&(ve.onToggle=()=>l(It.id)),d&&(Vt==="RV32I_InstrMem"||Vt==="DualPortROM")&&(ve.onLoadMemory=Wt=>d(It.id,Wt)),{...It,data:ve}});if(B){const It=new Set;for(const zt of Ct){const Vt=zt.data?.label??zt.id;B.has(Vt)&&It.add(zt.id)}return{projectedNodes:Ct.map(zt=>{const Vt=zt.data?.label??zt.id;return{...zt,style:{...zt.style,opacity:B.has(Vt)?1:.15,transition:"opacity 0.2s"}}}),projectedEdges:mt.edges.map(zt=>({...zt,style:{...zt.style,opacity:It.has(zt.source)||It.has(zt.target)?1:.15,transition:"opacity 0.2s"}}))}}return{projectedNodes:Ct,projectedEdges:mt.edges}},[H,I,W,n,o,l,u,d,B,k,C,E]),[G,L]=N.useState([]),[F,et]=N.useState([]),{fitView:rt}=da(),ct=lj(),ht=N.useRef(null),ft=N.useRef(new Set),ut=N.useRef(new Map),dt=N.useRef(0);N.useLayoutEffect(()=>{const mt=ht.current,Ct=ft.current,It=ut.current,zt=H?.name??null,Vt=new Set(z.map(Re=>Re.id)),ve=new Map;for(const Re of z){const me=Re.data,le=`${(me.inputNames??[]).join("|")}>${(me.outputNames??[]).join("|")}`;ve.set(Re.id,le)}ht.current=zt,ft.current=Vt,ut.current=ve;const Wt=zt!==mt;let je=0;for(const Re of Vt)Ct.has(Re)&&je++;const xn=Math.max(Ct.size,Vt.size),Pa=xn>0&&je/xn<.5,Hn=Wt||Pa,tr=[];if(!Hn)for(const[Re,me]of ve){const le=It.get(Re);le!==void 0&&le!==me&&tr.push(Re)}const Ba=dt.current===0;dt.current=z.length,L(Re=>{const me=new Map(Re.map(le=>[le.id,le]));return z.map(le=>{const ze=me.get(le.id);return ze&&!Hn?{...ze,type:le.type,data:le.data,selectable:le.selectable,deletable:le.deletable}:le})}),et($),Hn&&Ct.size>0?O?.():tr.length>0&&requestAnimationFrame(()=>ct(tr)),z.length>0&&Ba&&!Hn&&requestAnimationFrame(()=>rt({padding:.3}))},[z,$]);const Ot=N.useCallback(mt=>{L(Ct=>ub(mt,Ct))},[]),[At,bt]=N.useState([]),Tt=N.useCallback((mt,Ct,It)=>{bt(zt=>[...zt,{componentName:mt,componentDef:Ct,nodeLabel:It}])},[]),Dt=N.useCallback(()=>{bt(mt=>mt.slice(0,-1))},[]),Xt=N.useCallback(()=>{bt([])},[]),Ft=N.useCallback(mt=>{bt(Ct=>Ct.slice(0,mt+1))},[]),pt=N.useCallback(mt=>{if(!mt.isComposite)return;const Ct=W.resolveCircuit(mt.componentRef);Ct&&Ct.implementation.kind==="composite"&&Ct.nodes.length>0&&bt([{componentName:mt.componentRef,componentDef:Ct,nodeLabel:mt.label??mt.componentRef}])},[W]),yt=h??pt,vt=N.useCallback((mt,Ct)=>{yt(Ct.data)},[yt]);return M.jsxs("div",{"data-embed-theme":U,className:`bg-[var(--embed-bg-primary)] overflow-hidden relative ${y??""}`,style:{height:p},"aria-label":"Circuit diagram",children:[M.jsxs(aj,{nodes:G,edges:F,nodeTypes:Y,edgeTypes:K,onNodesChange:Ot,onNodeDoubleClick:vt,fitView:!0,minZoom:.1,maxZoom:3,fitViewOptions:{padding:.3,...B&&{nodes:G.filter(mt=>{const Ct=mt.data?.label??mt.id;return B.has(Ct)})}},nodesDraggable:s&&!q,nodesConnectable:!1,elementsSelectable:!0,selectionOnDrag:!1,panOnDrag:q&&!A?!1:[1,2],zoomOnScroll:!0,zoomOnPinch:!0,zoomOnDoubleClick:!1,preventScrolling:!1,proOptions:{hideAttribution:!0},deleteKeyCode:null,panActivationKeyCode:null,children:[M.jsx(hj,{variant:pi.Dots,gap:20,size:1,color:"var(--embed-dot-color)"}),S&&M.jsx(ua,{position:"bottom-left",children:M.jsx(N9,{})})]}),x?.(),!t&&(b?b():M.jsx("div",{className:"absolute inset-0 flex items-center justify-center text-[var(--embed-text-muted)]",children:"No circuit"})),!h&&At.length>0&&M.jsx(T9,{stack:At,componentLibrary:W,theme:U,onClose:Xt,onPopLevel:Dt,onPushLevel:Tt,onNavigate:Ft})]})}function z2(t){const[e,n]=N.useState(0),o=N.useCallback(()=>{n(s=>s+1)},[]);return M.jsx(Zb,{children:M.jsx(M9,{...t,onRequestRemount:o})},e)}const R9=N.forwardRef(function({circuit:e,height:n=300,showControls:o=!0,autoHarness:s=!1,initialInputs:a,layout:l,theme:u,focus:d,showPortLabels:h,onPortClick:p,glowUnconnected:m,renderEmptyState:y,renderOverlay:b,onPortValuesChange:x},w){const _=RM(e,{autoHarness:s,initialInputs:a}),S=m1(),k=u??S,C=N.useRef(x);N.useEffect(()=>{C.current=x}),N.useEffect(()=>{!_.ready||!_.portValues||_.portValues.size===0||C.current?.(_.portValues)},[_.ready,_.portValues]);const E=N.useCallback(()=>{_.tick()},[_.tick]),R=N.useCallback(()=>{_.reset()},[_.reset]);if(N.useImperativeHandle(w,()=>({tick:E,reset:R,setNodeValue:_.setNodeValue,startAutoRun:_.startAutoRun,stopAutoRun:_.stopAutoRun}),[E,R,_.setNodeValue,_.startAutoRun,_.stopAutoRun]),_.error)return M.jsx("div",{style:{height:n},className:"flex items-center justify-center p-4",children:M.jsxs("div",{className:"text-sm text-red-400 bg-red-500/10 rounded p-3 border border-red-500/20",children:[M.jsx("div",{className:"font-medium mb-1",children:"Compilation Error"}),M.jsx("div",{className:"font-mono text-xs",children:_.error})]})});if(!_.ready)return M.jsx("div",{style:{height:n},className:"flex items-center justify-center text-muted-foreground/60 text-sm",children:"Compiling..."});const A=_.isSequential&&o?40:0,O=typeof n=="number"?n-A:n;return M.jsxs("div",{style:{height:n},className:"flex flex-col","data-embed-theme":k,children:[M.jsx("div",{className:"flex-1 min-h-0",children:M.jsx(z2,{circuit:_.circuit,componentLibrary:_.componentLibrary??void 0,portValues:_.portValues,sequentialState:_.sequentialState,onToggleNode:_.toggleNode,onSetNodeValue:_.setNodeValue,onLoadMemory:(D,U)=>{const q=_.getSimulator();q&&(q.setNode(D,U),_.runCombinational())},height:O,focus:d,showPortLabels:h,onPortClick:p,glowUnconnected:m,renderEmptyState:y,renderOverlay:b,...l?{layout:l}:{},...u?{theme:u}:{}})}),_.isSequential&&o&&M.jsx(j2,{cycle:_.cycleCount,historyLength:_.history?.length??0,historyIndex:_.historyIndex??-1,isRunning:_.isRunning,isViewingPast:_.isViewingPast??!1,onStep:E,onRun:()=>_.startAutoRun(15),onPause:()=>_.stopAutoRun(),onReset:R,onStepBack:()=>_.stepBack(),onStepForward:()=>{_.isViewingPast?_.stepForward():E()},speed:5})]})});var cm={exports:{}},V2;function k9(){return V2||(V2=1,(function(t){var e=(function(){var n=String.fromCharCode,o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",s="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-$",a={};function l(d,h){if(!a[d]){a[d]={};for(var p=0;p<d.length;p++)a[d][d.charAt(p)]=p}return a[d][h]}var u={compressToBase64:function(d){if(d==null)return"";var h=u._compress(d,6,function(p){return o.charAt(p)});switch(h.length%4){default:case 0:return h;case 1:return h+"===";case 2:return h+"==";case 3:return h+"="}},decompressFromBase64:function(d){return d==null?"":d==""?null:u._decompress(d.length,32,function(h){return l(o,d.charAt(h))})},compressToUTF16:function(d){return d==null?"":u._compress(d,15,function(h){return n(h+32)})+" "},decompressFromUTF16:function(d){return d==null?"":d==""?null:u._decompress(d.length,16384,function(h){return d.charCodeAt(h)-32})},compressToUint8Array:function(d){for(var h=u.compress(d),p=new Uint8Array(h.length*2),m=0,y=h.length;m<y;m++){var b=h.charCodeAt(m);p[m*2]=b>>>8,p[m*2+1]=b%256}return p},decompressFromUint8Array:function(d){if(d==null)return u.decompress(d);for(var h=new Array(d.length/2),p=0,m=h.length;p<m;p++)h[p]=d[p*2]*256+d[p*2+1];var y=[];return h.forEach(function(b){y.push(n(b))}),u.decompress(y.join(""))},compressToEncodedURIComponent:function(d){return d==null?"":u._compress(d,6,function(h){return s.charAt(h)})},decompressFromEncodedURIComponent:function(d){return d==null?"":d==""?null:(d=d.replace(/ /g,"+"),u._decompress(d.length,32,function(h){return l(s,d.charAt(h))}))},compress:function(d){return u._compress(d,16,function(h){return n(h)})},_compress:function(d,h,p){if(d==null)return"";var m,y,b={},x={},w="",_="",S="",k=2,C=3,E=2,R=[],A=0,O=0,D;for(D=0;D<d.length;D+=1)if(w=d.charAt(D),Object.prototype.hasOwnProperty.call(b,w)||(b[w]=C++,x[w]=!0),_=S+w,Object.prototype.hasOwnProperty.call(b,_))S=_;else{if(Object.prototype.hasOwnProperty.call(x,S)){if(S.charCodeAt(0)<256){for(m=0;m<E;m++)A=A<<1,O==h-1?(O=0,R.push(p(A)),A=0):O++;for(y=S.charCodeAt(0),m=0;m<8;m++)A=A<<1|y&1,O==h-1?(O=0,R.push(p(A)),A=0):O++,y=y>>1}else{for(y=1,m=0;m<E;m++)A=A<<1|y,O==h-1?(O=0,R.push(p(A)),A=0):O++,y=0;for(y=S.charCodeAt(0),m=0;m<16;m++)A=A<<1|y&1,O==h-1?(O=0,R.push(p(A)),A=0):O++,y=y>>1}k--,k==0&&(k=Math.pow(2,E),E++),delete x[S]}else for(y=b[S],m=0;m<E;m++)A=A<<1|y&1,O==h-1?(O=0,R.push(p(A)),A=0):O++,y=y>>1;k--,k==0&&(k=Math.pow(2,E),E++),b[_]=C++,S=String(w)}if(S!==""){if(Object.prototype.hasOwnProperty.call(x,S)){if(S.charCodeAt(0)<256){for(m=0;m<E;m++)A=A<<1,O==h-1?(O=0,R.push(p(A)),A=0):O++;for(y=S.charCodeAt(0),m=0;m<8;m++)A=A<<1|y&1,O==h-1?(O=0,R.push(p(A)),A=0):O++,y=y>>1}else{for(y=1,m=0;m<E;m++)A=A<<1|y,O==h-1?(O=0,R.push(p(A)),A=0):O++,y=0;for(y=S.charCodeAt(0),m=0;m<16;m++)A=A<<1|y&1,O==h-1?(O=0,R.push(p(A)),A=0):O++,y=y>>1}k--,k==0&&(k=Math.pow(2,E),E++),delete x[S]}else for(y=b[S],m=0;m<E;m++)A=A<<1|y&1,O==h-1?(O=0,R.push(p(A)),A=0):O++,y=y>>1;k--,k==0&&(k=Math.pow(2,E),E++)}for(y=2,m=0;m<E;m++)A=A<<1|y&1,O==h-1?(O=0,R.push(p(A)),A=0):O++,y=y>>1;for(;;)if(A=A<<1,O==h-1){R.push(p(A));break}else O++;return R.join("")},decompress:function(d){return d==null?"":d==""?null:u._decompress(d.length,32768,function(h){return d.charCodeAt(h)})},_decompress:function(d,h,p){var m=[],y=4,b=4,x=3,w="",_=[],S,k,C,E,R,A,O,D={val:p(0),position:h,index:1};for(S=0;S<3;S+=1)m[S]=S;for(C=0,R=Math.pow(2,2),A=1;A!=R;)E=D.val&D.position,D.position>>=1,D.position==0&&(D.position=h,D.val=p(D.index++)),C|=(E>0?1:0)*A,A<<=1;switch(C){case 0:for(C=0,R=Math.pow(2,8),A=1;A!=R;)E=D.val&D.position,D.position>>=1,D.position==0&&(D.position=h,D.val=p(D.index++)),C|=(E>0?1:0)*A,A<<=1;O=n(C);break;case 1:for(C=0,R=Math.pow(2,16),A=1;A!=R;)E=D.val&D.position,D.position>>=1,D.position==0&&(D.position=h,D.val=p(D.index++)),C|=(E>0?1:0)*A,A<<=1;O=n(C);break;case 2:return""}for(m[3]=O,k=O,_.push(O);;){if(D.index>d)return"";for(C=0,R=Math.pow(2,x),A=1;A!=R;)E=D.val&D.position,D.position>>=1,D.position==0&&(D.position=h,D.val=p(D.index++)),C|=(E>0?1:0)*A,A<<=1;switch(O=C){case 0:for(C=0,R=Math.pow(2,8),A=1;A!=R;)E=D.val&D.position,D.position>>=1,D.position==0&&(D.position=h,D.val=p(D.index++)),C|=(E>0?1:0)*A,A<<=1;m[b++]=n(C),O=b-1,y--;break;case 1:for(C=0,R=Math.pow(2,16),A=1;A!=R;)E=D.val&D.position,D.position>>=1,D.position==0&&(D.position=h,D.val=p(D.index++)),C|=(E>0?1:0)*A,A<<=1;m[b++]=n(C),O=b-1,y--;break;case 2:return _.join("")}if(y==0&&(y=Math.pow(2,x),x++),m[O])w=m[O];else if(O===b)w=k+k.charAt(0);else return null;_.push(w),m[b++]=k+w.charAt(0),y--,k=w,y==0&&(y=Math.pow(2,x),x++)}}};return u})();t!=null?t.exports=e:typeof angular<"u"&&angular!=null&&angular.module("LZString",[]).factory("LZString",function(){return e})})(cm)),cm.exports}var O9=k9();function D9(t){return O9.compressToEncodedURIComponent(t)}const j9=N.createContext(null);function z9(){return N.useContext(j9)}function L2(){return typeof window>"u"?"https://simten.dev":window.location.hostname==="localhost"?window.location.origin:"https://simten.dev"}const V9=160,L9=90;function I9(t){if(!t)return 1.5;const e=Object.values(t);if(e.length===0)return 1.5;const n=Math.max(...e.map(s=>s.x))+V9,o=Math.max(...e.map(s=>s.y))+L9;return n<=0||o<=0?1.5:n/o}const P9=N.forwardRef(function({circuit:e,height:n,aspectRatio:o,showControls:s=!0,layout:a,theme:l,title:u,subtitle:d,description:h,href:p,focus:m,showPortLabels:y,onPortClick:b,glowUnconnected:x,autoRunSpeed:w=500,initialInputs:_,forkSource:S,onPortValuesChange:k},C){const E=u||h,[R,A]=N.useState(null),[O,D]=N.useState(!1),U=z9(),q=async()=>{if(!O)try{const j=S??bM(e);if(U){D(!0);const{hash:I}=await U(j);window.open(`${L2()}/circuit/s/${I}`,"_blank","noopener")}else{const I=D9(j);window.open(`${L2()}/circuit/${I}`,"_blank","noopener")}}catch(j){A(j instanceof Error?j.message:"Couldn't fork this circuit"),setTimeout(()=>A(null),3e3)}finally{D(!1)}},Y=n===void 0,K=o??I9(a),W={width:"100%",aspectRatio:String(K),minHeight:240,maxHeight:"70vh"},B=E?void 0:Y?W:{height:n},H=E?Y?W:{height:n}:{height:"100%"};return M.jsxs("div",{style:B,className:`relative flex flex-col ${E?"rounded-xl border border-[var(--embed-border)] overflow-hidden bg-[var(--embed-bg-secondary)]":""}`,children:[!E&&!p&&M.jsx("button",{type:"button",onClick:q,title:R??"Open and modify this circuit in the Simten editor",className:"absolute top-2 right-2 z-10 hidden md:flex items-center px-2.5 py-1 rounded border border-[var(--embed-border)] bg-[var(--embed-bg-secondary)] text-[11px] text-[var(--embed-text-primary)] hover:opacity-80 transition-colors shadow-sm",children:R?"Fork failed":"Fork →"}),M.jsx("div",{style:H,className:"min-h-0",children:M.jsx(R9,{ref:C,circuit:e,height:"100%",showControls:s,autoHarness:!0,initialInputs:_,layout:a,theme:l,focus:m,showPortLabels:y,onPortClick:b,glowUnconnected:x,autoRunSpeed:w,onPortValuesChange:k})}),E&&M.jsxs("div",{className:"border-t border-[var(--embed-border)] px-4 py-3 flex items-end justify-between gap-4",children:[M.jsxs("div",{children:[M.jsx("div",{className:"text-base font-semibold text-[var(--embed-text-primary)]",children:u}),d&&M.jsx("div",{className:"text-xs text-[var(--embed-text-muted)] font-mono mt-0.5",children:d}),h&&M.jsx("div",{className:"text-sm text-[var(--embed-text-secondary)] mt-1.5 leading-relaxed",children:h})]}),p?M.jsx("a",{href:p,className:"shrink-0 px-3 py-1.5 rounded border border-[var(--embed-border)] text-xs text-[var(--embed-text-primary)] hover:opacity-80 transition-colors",children:"Open →"}):M.jsx("button",{type:"button",onClick:q,title:R??"Open and modify this circuit in the Simten editor",className:"hidden md:flex items-center shrink-0 px-3 py-1.5 rounded border border-[var(--embed-border)] text-xs text-[var(--embed-text-primary)] hover:opacity-80 transition-colors",children:R?`Can't fork: ${R.slice(0,40)}`:"Fork →"})]})]})});function B9({code:t,height:e,showControls:n,title:o,subtitle:s,description:a,href:l,autoRunSpeed:u,theme:d}){const h=Wf(),[p,m]=N.useState(null),[y,b]=N.useState(null);return N.useEffect(()=>{if(!t){m(null),b(null);return}let x=!1;return h.compile(t).then(w=>{if(x)return;if("error"in w){b(w.error),m(null);return}const _=w.circuits[w.circuits.length-1];if(!_){b("No circuit found in code"),m(null);return}b(null),m(yM(_,w.libraryCircuits))}),()=>{x=!0}},[t,h]),t?y?M.jsx("div",{style:{height:e},className:"flex items-center justify-center p-4",children:M.jsxs("div",{className:"text-sm text-red-400 bg-red-500/10 rounded p-3 border border-red-500/20",children:[M.jsx("div",{className:"font-medium mb-1",children:"Error"}),M.jsx("div",{className:"font-mono text-xs whitespace-pre-wrap",children:y})]})}):p?M.jsx("div",{"data-embed-theme":d??"dark",children:M.jsx(P9,{circuit:p,height:e,showControls:n,title:o,subtitle:s,description:a,href:l,forkSource:t,autoRunSpeed:u,theme:d})}):M.jsx("div",{style:{height:e},className:"flex items-center justify-center text-sm text-gray-500",children:"Compiling..."}):M.jsx("div",{style:{height:e},className:"flex items-center justify-center text-sm text-gray-500",children:"No circuit code provided"})}function H9(t){return M.jsx(FN,{children:M.jsx(B9,{...t})})}const I2=HN(H9,{props:{code:"string",height:"number",showControls:"boolean",title:"string",subtitle:"string",description:"string",href:"string",autoRunSpeed:"number",theme:"string"}});return customElements.get("circuit-embed")||customElements.define("circuit-embed",I2),Hf.CircuitEmbedWC=I2,Object.defineProperty(Hf,Symbol.toStringTag,{value:"Module"}),Hf})({});
package/dist/styles.css CHANGED
@@ -1 +1 @@
1
- @layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-border-style:solid;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-duration:initial;--tw-ease:initial;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-red-300:oklch(80.8% .114 19.571);--color-red-400:oklch(70.4% .191 22.216);--color-red-500:oklch(63.7% .237 25.331);--color-red-800:oklch(44.4% .177 26.899);--color-red-900:oklch(39.6% .141 25.723);--color-red-950:oklch(25.8% .092 26.042);--color-amber-100:oklch(96.2% .059 95.617);--color-amber-400:oklch(82.8% .189 84.429);--color-amber-500:oklch(76.9% .188 70.08);--color-amber-600:oklch(66.6% .179 58.318);--color-amber-700:oklch(55.5% .163 48.998);--color-yellow-400:oklch(85.2% .199 91.936);--color-green-50:oklch(98.2% .018 155.826);--color-green-200:oklch(92.5% .084 155.995);--color-green-300:oklch(87.1% .15 154.449);--color-green-400:oklch(79.2% .209 151.711);--color-green-500:oklch(72.3% .219 149.579);--color-green-600:oklch(62.7% .194 149.214);--color-green-700:oklch(52.7% .154 150.069);--color-green-900:oklch(39.3% .095 152.535);--color-emerald-400:oklch(76.5% .177 163.223);--color-emerald-500:oklch(69.6% .17 162.48);--color-emerald-600:oklch(59.6% .145 163.225);--color-blue-50:oklch(97% .014 254.604);--color-blue-200:oklch(88.2% .059 254.128);--color-blue-300:oklch(80.9% .105 251.813);--color-blue-400:oklch(70.7% .165 254.624);--color-blue-500:oklch(62.3% .214 259.815);--color-blue-600:oklch(54.6% .245 262.881);--color-blue-700:oklch(48.8% .243 264.376);--color-blue-800:oklch(42.4% .199 265.638);--color-blue-900:oklch(37.9% .146 265.522);--color-indigo-500:oklch(58.5% .233 277.117);--color-violet-300:oklch(81.1% .111 293.571);--color-violet-400:oklch(70.2% .183 293.541);--color-violet-500:oklch(60.6% .25 292.717);--color-violet-600:oklch(54.1% .281 293.009);--color-purple-400:oklch(71.4% .203 305.504);--color-purple-500:oklch(62.7% .265 303.9);--color-gray-50:oklch(98.5% .002 247.839);--color-gray-100:oklch(96.7% .003 264.542);--color-gray-200:oklch(92.8% .006 264.531);--color-gray-300:oklch(87.2% .01 258.338);--color-gray-400:oklch(70.7% .022 261.325);--color-gray-500:oklch(55.1% .027 264.364);--color-gray-600:oklch(44.6% .03 256.802);--color-gray-700:oklch(37.3% .034 259.733);--color-gray-800:oklch(27.8% .033 256.848);--color-gray-900:oklch(21% .034 264.665);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-sm:24rem;--container-md:28rem;--container-5xl:64rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height: 1.5 ;--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-wide:.025em;--tracking-wider:.05em;--leading-relaxed:1.625;--radius-xs:.125rem;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--ease-out:cubic-bezier(0, 0, .2, 1);--ease-in-out:cubic-bezier(.4, 0, .2, 1);--animate-ping:ping 1s cubic-bezier(0, 0, .2, 1) infinite;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-border:var(--border,#37374180)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.inset-0{inset:calc(var(--spacing) * 0)}.inset-1{inset:calc(var(--spacing) * 1)}.inset-x-0{inset-inline:calc(var(--spacing) * 0)}.inset-y-0{inset-block:calc(var(--spacing) * 0)}.start{inset-inline-start:var(--spacing)}.end{inset-inline-end:var(--spacing)}.-top-2{top:calc(var(--spacing) * -2)}.top-0{top:calc(var(--spacing) * 0)}.top-0\.5{top:calc(var(--spacing) * .5)}.top-2{top:calc(var(--spacing) * 2)}.top-3{top:calc(var(--spacing) * 3)}.top-4{top:calc(var(--spacing) * 4)}.-right-2{right:calc(var(--spacing) * -2)}.right-0{right:calc(var(--spacing) * 0)}.right-2{right:calc(var(--spacing) * 2)}.right-4{right:calc(var(--spacing) * 4)}.bottom-0{bottom:calc(var(--spacing) * 0)}.left-0{left:calc(var(--spacing) * 0)}.left-1\/2{left:50%}.z-10{z-index:10}.z-50{z-index:50}.z-\[100\]{z-index:100}.mx-4{margin-inline:calc(var(--spacing) * 4)}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1\.5{margin-top:calc(var(--spacing) * 1.5)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-auto{margin-top:auto}.mr-2{margin-right:calc(var(--spacing) * 2)}.mb-1{margin-bottom:calc(var(--spacing) * 1)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.ml-0\.5{margin-left:calc(var(--spacing) * .5)}.ml-1{margin-left:calc(var(--spacing) * 1)}.block{display:block}.contents{display:contents}.flex{display:flex}.hidden{display:none}.inline{display:inline}.inline-flex{display:inline-flex}.size-2\.5{width:calc(var(--spacing) * 2.5);height:calc(var(--spacing) * 2.5)}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.h-0\.5{height:calc(var(--spacing) * .5)}.h-1{height:calc(var(--spacing) * 1)}.h-2{height:calc(var(--spacing) * 2)}.h-2\.5{height:calc(var(--spacing) * 2.5)}.h-3{height:calc(var(--spacing) * 3)}.h-3\.5{height:calc(var(--spacing) * 3.5)}.h-4{height:calc(var(--spacing) * 4)}.h-5{height:calc(var(--spacing) * 5)}.h-6{height:calc(var(--spacing) * 6)}.h-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-10{height:calc(var(--spacing) * 10)}.h-12{height:calc(var(--spacing) * 12)}.h-14{height:calc(var(--spacing) * 14)}.h-20{height:calc(var(--spacing) * 20)}.h-32{height:calc(var(--spacing) * 32)}.h-\[80vh\]{height:80vh}.h-auto{height:auto}.h-full{height:100%}.max-h-24{max-height:calc(var(--spacing) * 24)}.min-h-0{min-height:calc(var(--spacing) * 0)}.w-2{width:calc(var(--spacing) * 2)}.w-2\.5{width:calc(var(--spacing) * 2.5)}.w-3{width:calc(var(--spacing) * 3)}.w-3\.5{width:calc(var(--spacing) * 3.5)}.w-3\/4{width:75%}.w-4{width:calc(var(--spacing) * 4)}.w-5{width:calc(var(--spacing) * 5)}.w-6{width:calc(var(--spacing) * 6)}.w-7{width:calc(var(--spacing) * 7)}.w-8{width:calc(var(--spacing) * 8)}.w-9{width:calc(var(--spacing) * 9)}.w-10{width:calc(var(--spacing) * 10)}.w-12{width:calc(var(--spacing) * 12)}.w-14{width:calc(var(--spacing) * 14)}.w-16{width:calc(var(--spacing) * 16)}.w-20{width:calc(var(--spacing) * 20)}.w-24{width:calc(var(--spacing) * 24)}.w-\[380px\]{width:380px}.w-auto{width:auto}.w-fit{width:fit-content}.w-full{width:100%}.max-w-5xl{max-width:var(--container-5xl)}.max-w-\[120px\]{max-width:120px}.max-w-md{max-width:var(--container-md)}.min-w-0{min-width:calc(var(--spacing) * 0)}.min-w-\[40px\]{min-width:40px}.min-w-\[55px\]{min-width:55px}.min-w-\[60px\]{min-width:60px}.min-w-\[80px\]{min-width:80px}.min-w-\[100px\]{min-width:100px}.min-w-\[120px\]{min-width:120px}.min-w-\[140px\]{min-width:140px}.min-w-\[160px\]{min-width:160px}.min-w-\[200px\]{min-width:200px}.min-w-\[240px\]{min-width:240px}.min-w-\[280px\]{min-width:280px}.flex-1{flex:1}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.origin-\(--radix-tooltip-content-transform-origin\){transform-origin:var(--radix-tooltip-content-transform-origin)}.-translate-x-1\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-0\.5{--tw-translate-x:calc(var(--spacing) * .5);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-\[1\.875rem\]{--tw-translate-x:1.875rem;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-\[calc\(-50\%_-_2px\)\]{--tw-translate-y: calc(-50% - 2px) ;translate:var(--tw-translate-x) var(--tw-translate-y)}.rotate-45{rotate:45deg}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-\[ping_2s_cubic-bezier\(0\,0\,0\.2\,1\)_infinite\]{animation:2s cubic-bezier(0,0,.2,1) infinite ping}.animate-ping{animation:var(--animate-ping)}.animate-pulse{animation:var(--animate-pulse)}.cursor-pointer{cursor:pointer}.cursor-text{cursor:text}.cursor-wait{cursor:wait}.resize-y{resize:vertical}.appearance-none{appearance:none}.flex-col{flex-direction:column}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:calc(var(--spacing) * 1)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-6{gap:calc(var(--spacing) * 6)}.gap-8{gap:calc(var(--spacing) * 8)}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1.5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1.5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-\[2px\]{border-radius:2px}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-xl{border-radius:var(--radius-xl)}.rounded-xs{border-radius:var(--radius-xs)}.rounded-t-md{border-top-left-radius:var(--radius-md);border-top-right-radius:var(--radius-md)}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-x{border-inline-style:var(--tw-border-style);border-inline-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-t-2{border-top-style:var(--tw-border-style);border-top-width:2px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-\[var\(--embed-border\)\]{border-color:var(--embed-border)}.border-\[var\(--embed-border-node\)\]{border-color:var(--embed-border-node)}.border-blue-200{border-color:var(--color-blue-200)}.border-blue-400{border-color:var(--color-blue-400)}.border-blue-500{border-color:var(--color-blue-500)}.border-blue-600{border-color:var(--color-blue-600)}.border-border{border-color:var(--border,#37374180)}.border-gray-200{border-color:var(--color-gray-200)}.border-gray-300{border-color:var(--color-gray-300)}.border-gray-400{border-color:var(--color-gray-400)}.border-gray-500{border-color:var(--color-gray-500)}.border-gray-600{border-color:var(--color-gray-600)}.border-gray-700{border-color:var(--color-gray-700)}.border-green-200{border-color:var(--color-green-200)}.border-green-400{border-color:var(--color-green-400)}.border-green-500\/50{border-color:#00c75880}@supports (color:color-mix(in lab,red,red)){.border-green-500\/50{border-color:color-mix(in oklab,var(--color-green-500) 50%,transparent)}}.border-green-600{border-color:var(--color-green-600)}.border-input{border-color:var(--input,#37374180)}.border-red-500\/20{border-color:#fb2c3633}@supports (color:color-mix(in lab,red,red)){.border-red-500\/20{border-color:color-mix(in oklab,var(--color-red-500) 20%,transparent)}}.border-red-800\/40{border-color:#9f071266}@supports (color:color-mix(in lab,red,red)){.border-red-800\/40{border-color:color-mix(in oklab,var(--color-red-800) 40%,transparent)}}.border-transparent{border-color:#0000}.bg-\[var\(--embed-bg-code\)\]{background-color:var(--embed-bg-code)}.bg-\[var\(--embed-bg-primary\)\]{background-color:var(--embed-bg-primary)}.bg-\[var\(--embed-bg-secondary\)\]{background-color:var(--embed-bg-secondary)}.bg-\[var\(--embed-bg-tertiary\)\],.bg-\[var\(--embed-bg-tertiary\)\]\/60{background-color:var(--embed-bg-tertiary)}@supports (color:color-mix(in lab,red,red)){.bg-\[var\(--embed-bg-tertiary\)\]\/60{background-color:color-mix(in oklab,var(--embed-bg-tertiary) 60%,transparent)}}.bg-\[var\(--embed-border\)\]\/40{background-color:var(--embed-border)}@supports (color:color-mix(in lab,red,red)){.bg-\[var\(--embed-border\)\]\/40{background-color:color-mix(in oklab,var(--embed-border) 40%,transparent)}}.bg-amber-100{background-color:var(--color-amber-100)}.bg-background{background-color:var(--background,#141418)}.bg-black{background-color:var(--color-black)}.bg-black\/50{background-color:#00000080}@supports (color:color-mix(in lab,red,red)){.bg-black\/50{background-color:color-mix(in oklab,var(--color-black) 50%,transparent)}}.bg-blue-50{background-color:var(--color-blue-50)}.bg-blue-400\/30{background-color:#54a2ff4d}@supports (color:color-mix(in lab,red,red)){.bg-blue-400\/30{background-color:color-mix(in oklab,var(--color-blue-400) 30%,transparent)}}.bg-blue-500{background-color:var(--color-blue-500)}.bg-blue-500\/10{background-color:#3080ff1a}@supports (color:color-mix(in lab,red,red)){.bg-blue-500\/10{background-color:color-mix(in oklab,var(--color-blue-500) 10%,transparent)}}.bg-blue-500\/20{background-color:#3080ff33}@supports (color:color-mix(in lab,red,red)){.bg-blue-500\/20{background-color:color-mix(in oklab,var(--color-blue-500) 20%,transparent)}}.bg-blue-600{background-color:var(--color-blue-600)}.bg-card\/95{background-color:var(--card,#1a1a1e)}@supports (color:color-mix(in lab,red,red)){.bg-card\/95{background-color:color-mix(in oklab,var(--card,#1a1a1e) 95%,transparent)}}.bg-foreground{background-color:var(--foreground,#e5e5e5)}.bg-gray-50{background-color:var(--color-gray-50)}.bg-gray-100{background-color:var(--color-gray-100)}.bg-gray-100\/50{background-color:#f3f4f680}@supports (color:color-mix(in lab,red,red)){.bg-gray-100\/50{background-color:color-mix(in oklab,var(--color-gray-100) 50%,transparent)}}.bg-gray-300{background-color:var(--color-gray-300)}.bg-gray-400{background-color:var(--color-gray-400)}.bg-gray-900{background-color:var(--color-gray-900)}.bg-green-50{background-color:var(--color-green-50)}.bg-green-400{background-color:var(--color-green-400)}.bg-green-500{background-color:var(--color-green-500)}.bg-green-500\/10{background-color:#00c7581a}@supports (color:color-mix(in lab,red,red)){.bg-green-500\/10{background-color:color-mix(in oklab,var(--color-green-500) 10%,transparent)}}.bg-green-600{background-color:var(--color-green-600)}.bg-purple-500\/20{background-color:#ac4bff33}@supports (color:color-mix(in lab,red,red)){.bg-purple-500\/20{background-color:color-mix(in oklab,var(--color-purple-500) 20%,transparent)}}.bg-red-500\/10{background-color:#fb2c361a}@supports (color:color-mix(in lab,red,red)){.bg-red-500\/10{background-color:color-mix(in oklab,var(--color-red-500) 10%,transparent)}}.bg-red-900\/30{background-color:#82181a4d}@supports (color:color-mix(in lab,red,red)){.bg-red-900\/30{background-color:color-mix(in oklab,var(--color-red-900) 30%,transparent)}}.bg-red-950\/20{background-color:#46080933}@supports (color:color-mix(in lab,red,red)){.bg-red-950\/20{background-color:color-mix(in oklab,var(--color-red-950) 20%,transparent)}}.bg-violet-500\/20{background-color:#8d54ff33}@supports (color:color-mix(in lab,red,red)){.bg-violet-500\/20{background-color:color-mix(in oklab,var(--color-violet-500) 20%,transparent)}}.bg-violet-500\/30{background-color:#8d54ff4d}@supports (color:color-mix(in lab,red,red)){.bg-violet-500\/30{background-color:color-mix(in oklab,var(--color-violet-500) 30%,transparent)}}.bg-violet-600{background-color:var(--color-violet-600)}.bg-white{background-color:var(--color-white)}.bg-gradient-to-br{--tw-gradient-position:to bottom right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-r{--tw-gradient-position:to right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.from-emerald-400{--tw-gradient-from:var(--color-emerald-400);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-emerald-500{--tw-gradient-from:var(--color-emerald-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-gray-50{--tw-gradient-from:var(--color-gray-50);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-gray-300{--tw-gradient-from:var(--color-gray-300);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-green-300{--tw-gradient-from:var(--color-green-300);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-indigo-500{--tw-gradient-from:var(--color-indigo-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-white{--tw-gradient-from:var(--color-white);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-gray-50{--tw-gradient-to:var(--color-gray-50);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-gray-400{--tw-gradient-to:var(--color-gray-400);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-green-500{--tw-gradient-to:var(--color-green-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-purple-500{--tw-gradient-to:var(--color-purple-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-white{--tw-gradient-to:var(--color-white);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.fill-foreground{fill:var(--foreground,#e5e5e5)}.p-1{padding:calc(var(--spacing) * 1)}.p-1\.5{padding:calc(var(--spacing) * 1.5)}.p-2{padding:calc(var(--spacing) * 2)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-8{padding:calc(var(--spacing) * 8)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-5{padding-inline:calc(var(--spacing) * 5)}.px-6{padding-inline:calc(var(--spacing) * 6)}.px-8{padding-inline:calc(var(--spacing) * 8)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-4{padding-block:calc(var(--spacing) * 4)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pl-1\.5{padding-left:calc(var(--spacing) * 1.5)}.pl-2{padding-left:calc(var(--spacing) * 2)}.text-center{text-align:center}.font-mono{font-family:var(--font-mono)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[9px\]{font-size:9px}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.text-balance{text-wrap:balance}.break-all{word-break:break-all}.whitespace-nowrap{white-space:nowrap}.whitespace-pre{white-space:pre}.whitespace-pre-wrap{white-space:pre-wrap}.text-\[var\(--embed-text-muted\)\]{color:var(--embed-text-muted)}.text-\[var\(--embed-text-primary\)\]{color:var(--embed-text-primary)}.text-\[var\(--embed-text-secondary\)\]{color:var(--embed-text-secondary)}.text-amber-500{color:var(--color-amber-500)}.text-amber-600{color:var(--color-amber-600)}.text-amber-700{color:var(--color-amber-700)}.text-background{color:var(--background,#141418)}.text-blue-400{color:var(--color-blue-400)}.text-blue-600{color:var(--color-blue-600)}.text-blue-700{color:var(--color-blue-700)}.text-blue-900{color:var(--color-blue-900)}.text-emerald-400{color:var(--color-emerald-400)}.text-emerald-600{color:var(--color-emerald-600)}.text-foreground{color:var(--foreground,#e5e5e5)}.text-gray-100{color:var(--color-gray-100)}.text-gray-300{color:var(--color-gray-300)}.text-gray-400{color:var(--color-gray-400)}.text-gray-500{color:var(--color-gray-500)}.text-gray-600{color:var(--color-gray-600)}.text-gray-700{color:var(--color-gray-700)}.text-gray-800{color:var(--color-gray-800)}.text-gray-900{color:var(--color-gray-900)}.text-green-400{color:var(--color-green-400)}.text-green-600{color:var(--color-green-600)}.text-green-700{color:var(--color-green-700)}.text-green-900{color:var(--color-green-900)}.text-muted-foreground,.text-muted-foreground\/60{color:var(--muted-foreground,#71717a)}@supports (color:color-mix(in lab,red,red)){.text-muted-foreground\/60{color:color-mix(in oklab,var(--muted-foreground,#71717a) 60%,transparent)}}.text-muted-foreground\/70{color:var(--muted-foreground,#71717a)}@supports (color:color-mix(in lab,red,red)){.text-muted-foreground\/70{color:color-mix(in oklab,var(--muted-foreground,#71717a) 70%,transparent)}}.text-purple-400{color:var(--color-purple-400)}.text-red-300{color:var(--color-red-300)}.text-red-300\/80{color:#ffa3a3cc}@supports (color:color-mix(in lab,red,red)){.text-red-300\/80{color:color-mix(in oklab,var(--color-red-300) 80%,transparent)}}.text-red-400{color:var(--color-red-400)}.text-red-400\/50{color:#ff656880}@supports (color:color-mix(in lab,red,red)){.text-red-400\/50{color:color-mix(in oklab,var(--color-red-400) 50%,transparent)}}.text-red-400\/60{color:#ff656899}@supports (color:color-mix(in lab,red,red)){.text-red-400\/60{color:color-mix(in oklab,var(--color-red-400) 60%,transparent)}}.text-red-500{color:var(--color-red-500)}.text-violet-300{color:var(--color-violet-300)}.text-violet-400{color:var(--color-violet-400)}.text-white{color:var(--color-white)}.text-yellow-400{color:var(--color-yellow-400)}.uppercase{text-transform:uppercase}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.underline-offset-4{text-underline-offset:4px}.accent-blue-600{accent-color:var(--color-blue-600)}.opacity-70{opacity:.7}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a), 0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-black\/20{--tw-shadow-color:#0003}@supports (color:color-mix(in lab,red,red)){.shadow-black\/20{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-black) 20%, transparent) var(--tw-shadow-alpha), transparent)}}.shadow-blue-500\/30{--tw-shadow-color:#3080ff4d}@supports (color:color-mix(in lab,red,red)){.shadow-blue-500\/30{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-blue-500) 30%, transparent) var(--tw-shadow-alpha), transparent)}}.shadow-green-500\/50{--tw-shadow-color:#00c75880}@supports (color:color-mix(in lab,red,red)){.shadow-green-500\/50{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-green-500) 50%, transparent) var(--tw-shadow-alpha), transparent)}}.ring-offset-background{--tw-ring-offset-color:var(--background,#141418)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}@media(hover:hover){.group-hover\:bg-blue-400:is(:where(.group):hover *){background-color:var(--color-blue-400)}.hover\:scale-150:hover{--tw-scale-x:150%;--tw-scale-y:150%;--tw-scale-z:150%;scale:var(--tw-scale-x) var(--tw-scale-y)}.hover\:border-blue-400:hover{border-color:var(--color-blue-400)}.hover\:border-blue-500:hover{border-color:var(--color-blue-500)}.hover\:border-green-500:hover{border-color:var(--color-green-500)}.hover\:bg-\[var\(--embed-bg-tertiary\)\]\/80:hover{background-color:var(--embed-bg-tertiary)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-\[var\(--embed-bg-tertiary\)\]\/80:hover{background-color:color-mix(in oklab,var(--embed-bg-tertiary) 80%,transparent)}}.hover\:bg-accent:hover{background-color:var(--accent,#2a2a2e)}.hover\:bg-blue-300:hover{background-color:var(--color-blue-300)}.hover\:bg-blue-500\/5:hover{background-color:#3080ff0d}@supports (color:color-mix(in lab,red,red)){.hover\:bg-blue-500\/5:hover{background-color:color-mix(in oklab,var(--color-blue-500) 5%,transparent)}}.hover\:bg-blue-700:hover{background-color:var(--color-blue-700)}.hover\:bg-gray-100:hover{background-color:var(--color-gray-100)}.hover\:bg-gray-200:hover{background-color:var(--color-gray-200)}.hover\:bg-gray-800:hover{background-color:var(--color-gray-800)}.hover\:bg-green-300:hover{background-color:var(--color-green-300)}.hover\:bg-green-700:hover{background-color:var(--color-green-700)}.hover\:bg-red-900\/50:hover{background-color:#82181a80}@supports (color:color-mix(in lab,red,red)){.hover\:bg-red-900\/50:hover{background-color:color-mix(in oklab,var(--color-red-900) 50%,transparent)}}.hover\:bg-violet-500:hover{background-color:var(--color-violet-500)}.hover\:bg-violet-500\/10:hover{background-color:#8d54ff1a}@supports (color:color-mix(in lab,red,red)){.hover\:bg-violet-500\/10:hover{background-color:color-mix(in oklab,var(--color-violet-500) 10%,transparent)}}.hover\:text-\[var\(--embed-text-primary\)\]:hover{color:var(--embed-text-primary)}.hover\:text-accent-foreground:hover{color:var(--accent-foreground,#e5e5e5)}.hover\:text-blue-300:hover{color:var(--color-blue-300)}.hover\:text-blue-800:hover{color:var(--color-blue-800)}.hover\:text-gray-300:hover{color:var(--color-gray-300)}.hover\:text-gray-600:hover{color:var(--color-gray-600)}.hover\:text-red-300:hover{color:var(--color-red-300)}.hover\:text-violet-400:hover{color:var(--color-violet-400)}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-80:hover{opacity:.8}.hover\:opacity-100:hover{opacity:1}.hover\:shadow-md:hover{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-blue-500:focus{--tw-ring-color:var(--color-blue-500)}.focus\:ring-ring:focus{--tw-ring-color:var(--ring,#555)}.focus\:ring-offset-2:focus{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.focus\:outline-hidden:focus{--tw-outline-style:none;outline-style:none}@media(forced-colors:active){.focus\:outline-hidden:focus{outline-offset:2px;outline:2px solid #0000}}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.focus-visible\:ring-1:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-blue-400:focus-visible{--tw-ring-color:var(--color-blue-400)}.focus-visible\:ring-ring:focus-visible{--tw-ring-color:var(--ring,#555)}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.focus-visible\:ring-offset-gray-900:focus-visible{--tw-ring-offset-color:var(--color-gray-900)}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.active\:scale-90:active{--tw-scale-x:90%;--tw-scale-y:90%;--tw-scale-z:90%;scale:var(--tw-scale-x) var(--tw-scale-y)}.active\:scale-95:active{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x) var(--tw-scale-y)}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-40:disabled{opacity:.4}.disabled\:opacity-50:disabled{opacity:.5}.data-\[state\=closed\]\:duration-300[data-state=closed]{--tw-duration:.3s;transition-duration:.3s}.data-\[state\=open\]\:duration-500[data-state=open]{--tw-duration:.5s;transition-duration:.5s}@media(min-width:40rem){.sm\:max-w-sm{max-width:var(--container-sm)}}@media(min-width:48rem){.md\:flex{display:flex}}@media(prefers-color-scheme:dark){.dark\:border-blue-400{border-color:var(--color-blue-400)}.dark\:border-gray-600{border-color:var(--color-gray-600)}.dark\:bg-\[\#2a2a2e\]{background-color:#2a2a2e}.dark\:bg-gray-800{background-color:var(--color-gray-800)}.dark\:bg-gray-900{background-color:var(--color-gray-900)}.dark\:text-amber-400{color:var(--color-amber-400)}.dark\:text-blue-400{color:var(--color-blue-400)}.dark\:text-emerald-400{color:var(--color-emerald-400)}.dark\:text-gray-100{color:var(--color-gray-100)}.dark\:text-gray-300{color:var(--color-gray-300)}.dark\:text-gray-400{color:var(--color-gray-400)}@media(hover:hover){.dark\:hover\:bg-gray-700:hover{background-color:var(--color-gray-700)}}}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:size-3\.5 svg{width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.\[\&_svg\]\:size-4 svg{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}}[data-embed-theme=dark],.dark{--embed-bg-primary:#141418;--embed-bg-secondary:#1a1a1e;--embed-bg-tertiary:#2a2a2e;--embed-bg-surface:#111114e6;--embed-bg-surface-80:#111114cc;--embed-bg-code:#0d1117;--embed-border:#37374180;--embed-border-node:#3a3a3e;--embed-text-primary:#e5e5e5;--embed-text-secondary:#a1a1aa;--embed-text-muted:#71717a;--embed-dot-color:#2a2a2e}[data-embed-theme=dark]{--background:#141418;--foreground:#e5e5e5;--card:#1a1a1e;--card-foreground:#e5e5e5;--muted:#2a2a2e;--muted-foreground:#71717a;--accent:#2a2a2e;--accent-foreground:#e5e5e5;--border:#37374180;--input:#37374180;--ring:#555;--color-background:var(--background);--color-foreground:var(--foreground);--color-card:var(--card);--color-card-foreground:var(--card-foreground);--color-muted:var(--muted);--color-muted-foreground:var(--muted-foreground);--color-accent:var(--accent);--color-accent-foreground:var(--accent-foreground);--color-border:var(--border);--color-input:var(--input);--color-ring:var(--ring)}[data-embed-theme] *,[data-embed-theme] :before,[data-embed-theme] :after{border-color:var(--color-border,#37374180)}[data-embed-theme=light],html.light{--embed-bg-primary:#f8f9fb;--embed-bg-secondary:#f3f4f6;--embed-bg-tertiary:#eef0f3;--embed-bg-surface:#f8f9fbf2;--embed-bg-surface-80:#f8f9fbe6;--embed-bg-code:#f3f4f6;--embed-border:#00000014;--embed-border-node:#0000001a;--embed-text-primary:#1a1a2e;--embed-text-secondary:#4b5563;--embed-text-muted:#9ca3af;--embed-dot-color:#e5e7eb}[data-embed-theme=light]{--background:#f8f9fb;--foreground:#1a1a2e;--card:#fff;--card-foreground:#1a1a2e;--muted:#eef0f3;--muted-foreground:#9ca3af;--accent:#eef0f3;--accent-foreground:#1a1a2e;--border:#00000014;--input:#00000014;--ring:#aaa;--color-background:var(--background);--color-foreground:var(--foreground);--color-card:var(--card);--color-card-foreground:var(--card-foreground);--color-muted:var(--muted);--color-muted-foreground:var(--muted-foreground);--color-accent:var(--accent);--color-accent-foreground:var(--accent-foreground);--color-border:var(--border);--color-input:var(--input);--color-ring:var(--ring)}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"<length-percentage>";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"<length-percentage>";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"<length-percentage>";inherits:false;initial-value:100%}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@keyframes ping{75%,to{opacity:0;transform:scale(2)}}@keyframes pulse{50%{opacity:.5}}.react-flow{direction:ltr;--xy-edge-stroke-default: #b1b1b7;--xy-edge-stroke-width-default: 1;--xy-edge-stroke-selected-default: #555;--xy-connectionline-stroke-default: #b1b1b7;--xy-connectionline-stroke-width-default: 1;--xy-attribution-background-color-default: rgba(255, 255, 255, .5);--xy-minimap-background-color-default: #fff;--xy-minimap-mask-background-color-default: rgba(240, 240, 240, .6);--xy-minimap-mask-stroke-color-default: transparent;--xy-minimap-mask-stroke-width-default: 1;--xy-minimap-node-background-color-default: #e2e2e2;--xy-minimap-node-stroke-color-default: transparent;--xy-minimap-node-stroke-width-default: 2;--xy-background-color-default: transparent;--xy-background-pattern-dots-color-default: #91919a;--xy-background-pattern-lines-color-default: #eee;--xy-background-pattern-cross-color-default: #e2e2e2;background-color:var(--xy-background-color, var(--xy-background-color-default));--xy-node-color-default: inherit;--xy-node-border-default: 1px solid #1a192b;--xy-node-background-color-default: #fff;--xy-node-group-background-color-default: rgba(240, 240, 240, .25);--xy-node-boxshadow-hover-default: 0 1px 4px 1px rgba(0, 0, 0, .08);--xy-node-boxshadow-selected-default: 0 0 0 .5px #1a192b;--xy-node-border-radius-default: 3px;--xy-handle-background-color-default: #1a192b;--xy-handle-border-color-default: #fff;--xy-selection-background-color-default: rgba(0, 89, 220, .08);--xy-selection-border-default: 1px dotted rgba(0, 89, 220, .8);--xy-controls-button-background-color-default: #fefefe;--xy-controls-button-background-color-hover-default: #f4f4f4;--xy-controls-button-color-default: inherit;--xy-controls-button-color-hover-default: inherit;--xy-controls-button-border-color-default: #eee;--xy-controls-box-shadow-default: 0 0 2px 1px rgba(0, 0, 0, .08);--xy-edge-label-background-color-default: #ffffff;--xy-edge-label-color-default: inherit;--xy-resize-background-color-default: #3367d9}.react-flow.dark{--xy-edge-stroke-default: #3e3e3e;--xy-edge-stroke-width-default: 1;--xy-edge-stroke-selected-default: #727272;--xy-connectionline-stroke-default: #b1b1b7;--xy-connectionline-stroke-width-default: 1;--xy-attribution-background-color-default: rgba(150, 150, 150, .25);--xy-minimap-background-color-default: #141414;--xy-minimap-mask-background-color-default: rgba(60, 60, 60, .6);--xy-minimap-mask-stroke-color-default: transparent;--xy-minimap-mask-stroke-width-default: 1;--xy-minimap-node-background-color-default: #2b2b2b;--xy-minimap-node-stroke-color-default: transparent;--xy-minimap-node-stroke-width-default: 2;--xy-background-color-default: #141414;--xy-background-pattern-dots-color-default: #777;--xy-background-pattern-lines-color-default: #777;--xy-background-pattern-cross-color-default: #777;--xy-node-color-default: #f8f8f8;--xy-node-border-default: 1px solid #3c3c3c;--xy-node-background-color-default: #1e1e1e;--xy-node-group-background-color-default: rgba(240, 240, 240, .25);--xy-node-boxshadow-hover-default: 0 1px 4px 1px rgba(255, 255, 255, .08);--xy-node-boxshadow-selected-default: 0 0 0 .5px #999;--xy-handle-background-color-default: #bebebe;--xy-handle-border-color-default: #1e1e1e;--xy-selection-background-color-default: rgba(200, 200, 220, .08);--xy-selection-border-default: 1px dotted rgba(200, 200, 220, .8);--xy-controls-button-background-color-default: #2b2b2b;--xy-controls-button-background-color-hover-default: #3e3e3e;--xy-controls-button-color-default: #f8f8f8;--xy-controls-button-color-hover-default: #fff;--xy-controls-button-border-color-default: #5b5b5b;--xy-controls-box-shadow-default: 0 0 2px 1px rgba(0, 0, 0, .08);--xy-edge-label-background-color-default: #141414;--xy-edge-label-color-default: #f8f8f8}.react-flow__background{background-color:var(--xy-background-color-props, var(--xy-background-color, var(--xy-background-color-default)));pointer-events:none;z-index:-1}.react-flow__container{position:absolute;width:100%;height:100%;top:0;left:0}.react-flow__pane{z-index:1}.react-flow__pane.draggable{cursor:grab}.react-flow__pane.dragging{cursor:grabbing}.react-flow__pane.selection{cursor:pointer}.react-flow__viewport{transform-origin:0 0;z-index:2;pointer-events:none}.react-flow__renderer{z-index:4}.react-flow__selection{z-index:6}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible{outline:none}.react-flow__edge-path{stroke:var(--xy-edge-stroke, var(--xy-edge-stroke-default));stroke-width:var(--xy-edge-stroke-width, var(--xy-edge-stroke-width-default));fill:none}.react-flow__connection-path{stroke:var(--xy-connectionline-stroke, var(--xy-connectionline-stroke-default));stroke-width:var(--xy-connectionline-stroke-width, var(--xy-connectionline-stroke-width-default));fill:none}.react-flow .react-flow__edges{position:absolute}.react-flow .react-flow__edges svg{overflow:visible;position:absolute;pointer-events:none}.react-flow__edge{pointer-events:visibleStroke}.react-flow__edge.selectable{cursor:pointer}.react-flow__edge.animated path{stroke-dasharray:5;animation:dashdraw .5s linear infinite}.react-flow__edge.animated path.react-flow__edge-interaction{stroke-dasharray:none;animation:none}.react-flow__edge.inactive{pointer-events:none}.react-flow__edge.selected,.react-flow__edge:focus,.react-flow__edge:focus-visible{outline:none}.react-flow__edge.selected .react-flow__edge-path,.react-flow__edge.selectable:focus .react-flow__edge-path,.react-flow__edge.selectable:focus-visible .react-flow__edge-path{stroke:var(--xy-edge-stroke-selected, var(--xy-edge-stroke-selected-default))}.react-flow__edge-textwrapper{pointer-events:all}.react-flow__edge .react-flow__edge-text{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__arrowhead polyline{stroke:var(--xy-edge-stroke, var(--xy-edge-stroke-default))}.react-flow__arrowhead polyline.arrowclosed{fill:var(--xy-edge-stroke, var(--xy-edge-stroke-default))}.react-flow__connection{pointer-events:none}.react-flow__connection .animated{stroke-dasharray:5;animation:dashdraw .5s linear infinite}svg.react-flow__connectionline{z-index:1001;overflow:visible;position:absolute}.react-flow__nodes{pointer-events:none;transform-origin:0 0}.react-flow__node{position:absolute;-webkit-user-select:none;-moz-user-select:none;user-select:none;pointer-events:all;transform-origin:0 0;box-sizing:border-box;cursor:default}.react-flow__node.selectable{cursor:pointer}.react-flow__node.draggable{cursor:grab;pointer-events:all}.react-flow__node.draggable.dragging{cursor:grabbing}.react-flow__nodesselection{z-index:3;transform-origin:left top;pointer-events:none}.react-flow__nodesselection-rect{position:absolute;pointer-events:all;cursor:grab}.react-flow__handle{position:absolute;pointer-events:none;min-width:5px;min-height:5px;width:6px;height:6px;background-color:var(--xy-handle-background-color, var(--xy-handle-background-color-default));border:1px solid var(--xy-handle-border-color, var(--xy-handle-border-color-default));border-radius:100%}.react-flow__handle.connectingfrom{pointer-events:all}.react-flow__handle.connectionindicator{pointer-events:all;cursor:crosshair}.react-flow__handle-bottom{top:auto;left:50%;bottom:0;transform:translate(-50%,50%)}.react-flow__handle-top{top:0;left:50%;transform:translate(-50%,-50%)}.react-flow__handle-left{top:50%;left:0;transform:translate(-50%,-50%)}.react-flow__handle-right{top:50%;right:0;transform:translate(50%,-50%)}.react-flow__edgeupdater{cursor:move;pointer-events:all}.react-flow__pane.selection .react-flow__panel{pointer-events:none}.react-flow__panel{position:absolute;z-index:5;margin:15px}.react-flow__panel.top{top:0}.react-flow__panel.bottom{bottom:0}.react-flow__panel.top.center,.react-flow__panel.bottom.center{left:50%;transform:translate(-15px) translate(-50%)}.react-flow__panel.left{left:0}.react-flow__panel.right{right:0}.react-flow__panel.left.center,.react-flow__panel.right.center{top:50%;transform:translateY(-15px) translateY(-50%)}.react-flow__attribution{font-size:10px;background:var(--xy-attribution-background-color, var(--xy-attribution-background-color-default));padding:2px 3px;margin:0}.react-flow__attribution a{text-decoration:none;color:#999}@keyframes dashdraw{0%{stroke-dashoffset:10}}.react-flow__edgelabel-renderer{position:absolute;width:100%;height:100%;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;left:0;top:0}.react-flow__viewport-portal{position:absolute;width:100%;height:100%;left:0;top:0;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__minimap{background:var( --xy-minimap-background-color-props, var(--xy-minimap-background-color, var(--xy-minimap-background-color-default)) )}.react-flow__minimap-svg{display:block}.react-flow__minimap-mask{fill:var( --xy-minimap-mask-background-color-props, var(--xy-minimap-mask-background-color, var(--xy-minimap-mask-background-color-default)) );stroke:var( --xy-minimap-mask-stroke-color-props, var(--xy-minimap-mask-stroke-color, var(--xy-minimap-mask-stroke-color-default)) );stroke-width:var( --xy-minimap-mask-stroke-width-props, var(--xy-minimap-mask-stroke-width, var(--xy-minimap-mask-stroke-width-default)) )}.react-flow__minimap-node{fill:var( --xy-minimap-node-background-color-props, var(--xy-minimap-node-background-color, var(--xy-minimap-node-background-color-default)) );stroke:var( --xy-minimap-node-stroke-color-props, var(--xy-minimap-node-stroke-color, var(--xy-minimap-node-stroke-color-default)) );stroke-width:var( --xy-minimap-node-stroke-width-props, var(--xy-minimap-node-stroke-width, var(--xy-minimap-node-stroke-width-default)) )}.react-flow__background-pattern.dots{fill:var( --xy-background-pattern-color-props, var(--xy-background-pattern-color, var(--xy-background-pattern-dots-color-default)) )}.react-flow__background-pattern.lines{stroke:var( --xy-background-pattern-color-props, var(--xy-background-pattern-color, var(--xy-background-pattern-lines-color-default)) )}.react-flow__background-pattern.cross{stroke:var( --xy-background-pattern-color-props, var(--xy-background-pattern-color, var(--xy-background-pattern-cross-color-default)) )}.react-flow__controls{display:flex;flex-direction:column;box-shadow:var(--xy-controls-box-shadow, var(--xy-controls-box-shadow-default))}.react-flow__controls.horizontal{flex-direction:row}.react-flow__controls-button{display:flex;justify-content:center;align-items:center;height:26px;width:26px;padding:4px;border:none;background:var(--xy-controls-button-background-color, var(--xy-controls-button-background-color-default));border-bottom:1px solid var( --xy-controls-button-border-color-props, var(--xy-controls-button-border-color, var(--xy-controls-button-border-color-default)) );color:var( --xy-controls-button-color-props, var(--xy-controls-button-color, var(--xy-controls-button-color-default)) );cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__controls-button svg{width:100%;max-width:12px;max-height:12px;fill:currentColor}.react-flow__edge.updating .react-flow__edge-path{stroke:#777}.react-flow__edge-text{font-size:10px}.react-flow__node.selectable:focus,.react-flow__node.selectable:focus-visible{outline:none}.react-flow__node-input,.react-flow__node-default,.react-flow__node-output,.react-flow__node-group{padding:10px;border-radius:var(--xy-node-border-radius, var(--xy-node-border-radius-default));width:150px;font-size:12px;color:var(--xy-node-color, var(--xy-node-color-default));text-align:center;border:var(--xy-node-border, var(--xy-node-border-default));background-color:var(--xy-node-background-color, var(--xy-node-background-color-default))}.react-flow__node-input.selectable:hover,.react-flow__node-default.selectable:hover,.react-flow__node-output.selectable:hover,.react-flow__node-group.selectable:hover{box-shadow:var(--xy-node-boxshadow-hover, var(--xy-node-boxshadow-hover-default))}.react-flow__node-input.selectable.selected,.react-flow__node-input.selectable:focus,.react-flow__node-input.selectable:focus-visible,.react-flow__node-default.selectable.selected,.react-flow__node-default.selectable:focus,.react-flow__node-default.selectable:focus-visible,.react-flow__node-output.selectable.selected,.react-flow__node-output.selectable:focus,.react-flow__node-output.selectable:focus-visible,.react-flow__node-group.selectable.selected,.react-flow__node-group.selectable:focus,.react-flow__node-group.selectable:focus-visible{box-shadow:var(--xy-node-boxshadow-selected, var(--xy-node-boxshadow-selected-default))}.react-flow__node-group{background-color:var(--xy-node-group-background-color, var(--xy-node-group-background-color-default))}.react-flow__nodesselection-rect,.react-flow__selection{background:var(--xy-selection-background-color, var(--xy-selection-background-color-default));border:var(--xy-selection-border, var(--xy-selection-border-default))}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible,.react-flow__selection:focus,.react-flow__selection:focus-visible{outline:none}.react-flow__controls-button:hover{background:var( --xy-controls-button-background-color-hover-props, var(--xy-controls-button-background-color-hover, var(--xy-controls-button-background-color-hover-default)) );color:var( --xy-controls-button-color-hover-props, var(--xy-controls-button-color-hover, var(--xy-controls-button-color-hover-default)) )}.react-flow__controls-button:disabled{pointer-events:none}.react-flow__controls-button:disabled svg{fill-opacity:.4}.react-flow__controls-button:last-child{border-bottom:none}.react-flow__controls.horizontal .react-flow__controls-button{border-bottom:none;border-right:1px solid var( --xy-controls-button-border-color-props, var(--xy-controls-button-border-color, var(--xy-controls-button-border-color-default)) )}.react-flow__controls.horizontal .react-flow__controls-button:last-child{border-right:none}.react-flow__resize-control{position:absolute}.react-flow__resize-control.left,.react-flow__resize-control.right{cursor:ew-resize}.react-flow__resize-control.top,.react-flow__resize-control.bottom{cursor:ns-resize}.react-flow__resize-control.top.left,.react-flow__resize-control.bottom.right{cursor:nwse-resize}.react-flow__resize-control.bottom.left,.react-flow__resize-control.top.right{cursor:nesw-resize}.react-flow__resize-control.handle{width:5px;height:5px;border:1px solid #fff;border-radius:1px;background-color:var(--xy-resize-background-color, var(--xy-resize-background-color-default));translate:-50% -50%}.react-flow__resize-control.handle.left{left:0;top:50%}.react-flow__resize-control.handle.right{left:100%;top:50%}.react-flow__resize-control.handle.top{left:50%;top:0}.react-flow__resize-control.handle.bottom{left:50%;top:100%}.react-flow__resize-control.handle.top.left,.react-flow__resize-control.handle.bottom.left{left:0}.react-flow__resize-control.handle.top.right,.react-flow__resize-control.handle.bottom.right{left:100%}.react-flow__resize-control.line{border-color:var(--xy-resize-background-color, var(--xy-resize-background-color-default));border-width:0;border-style:solid}.react-flow__resize-control.line.left,.react-flow__resize-control.line.right{width:1px;transform:translate(-50%);top:0;height:100%}.react-flow__resize-control.line.left{left:0;border-left-width:1px}.react-flow__resize-control.line.right{left:100%;border-right-width:1px}.react-flow__resize-control.line.top,.react-flow__resize-control.line.bottom{height:1px;transform:translateY(-50%);left:0;width:100%}.react-flow__resize-control.line.top{top:0;border-top-width:1px}.react-flow__resize-control.line.bottom{border-bottom-width:1px;top:100%}.react-flow__edge-textbg{fill:var(--xy-edge-label-background-color, var(--xy-edge-label-background-color-default))}.react-flow__edge-text{fill:var(--xy-edge-label-color, var(--xy-edge-label-color-default))}
1
+ @layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-border-style:solid;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-duration:initial;--tw-ease:initial;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-red-300:oklch(80.8% .114 19.571);--color-red-400:oklch(70.4% .191 22.216);--color-red-500:oklch(63.7% .237 25.331);--color-red-800:oklch(44.4% .177 26.899);--color-red-900:oklch(39.6% .141 25.723);--color-red-950:oklch(25.8% .092 26.042);--color-amber-100:oklch(96.2% .059 95.617);--color-amber-400:oklch(82.8% .189 84.429);--color-amber-500:oklch(76.9% .188 70.08);--color-amber-600:oklch(66.6% .179 58.318);--color-amber-700:oklch(55.5% .163 48.998);--color-yellow-400:oklch(85.2% .199 91.936);--color-green-50:oklch(98.2% .018 155.826);--color-green-200:oklch(92.5% .084 155.995);--color-green-300:oklch(87.1% .15 154.449);--color-green-400:oklch(79.2% .209 151.711);--color-green-500:oklch(72.3% .219 149.579);--color-green-600:oklch(62.7% .194 149.214);--color-green-700:oklch(52.7% .154 150.069);--color-green-900:oklch(39.3% .095 152.535);--color-emerald-400:oklch(76.5% .177 163.223);--color-emerald-500:oklch(69.6% .17 162.48);--color-emerald-600:oklch(59.6% .145 163.225);--color-blue-50:oklch(97% .014 254.604);--color-blue-200:oklch(88.2% .059 254.128);--color-blue-300:oklch(80.9% .105 251.813);--color-blue-400:oklch(70.7% .165 254.624);--color-blue-500:oklch(62.3% .214 259.815);--color-blue-600:oklch(54.6% .245 262.881);--color-blue-700:oklch(48.8% .243 264.376);--color-blue-800:oklch(42.4% .199 265.638);--color-blue-900:oklch(37.9% .146 265.522);--color-blue-950:oklch(28.2% .091 267.935);--color-indigo-500:oklch(58.5% .233 277.117);--color-violet-300:oklch(81.1% .111 293.571);--color-violet-400:oklch(70.2% .183 293.541);--color-violet-500:oklch(60.6% .25 292.717);--color-violet-600:oklch(54.1% .281 293.009);--color-purple-400:oklch(71.4% .203 305.504);--color-purple-500:oklch(62.7% .265 303.9);--color-gray-50:oklch(98.5% .002 247.839);--color-gray-100:oklch(96.7% .003 264.542);--color-gray-200:oklch(92.8% .006 264.531);--color-gray-300:oklch(87.2% .01 258.338);--color-gray-400:oklch(70.7% .022 261.325);--color-gray-500:oklch(55.1% .027 264.364);--color-gray-600:oklch(44.6% .03 256.802);--color-gray-700:oklch(37.3% .034 259.733);--color-gray-800:oklch(27.8% .033 256.848);--color-gray-900:oklch(21% .034 264.665);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-sm:24rem;--container-md:28rem;--container-5xl:64rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height: 1.5 ;--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-wide:.025em;--tracking-wider:.05em;--leading-relaxed:1.625;--radius-xs:.125rem;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--ease-out:cubic-bezier(0, 0, .2, 1);--ease-in-out:cubic-bezier(.4, 0, .2, 1);--animate-ping:ping 1s cubic-bezier(0, 0, .2, 1) infinite;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-border:var(--border,#37374180)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.inset-0{inset:calc(var(--spacing) * 0)}.inset-1{inset:calc(var(--spacing) * 1)}.inset-x-0{inset-inline:calc(var(--spacing) * 0)}.inset-y-0{inset-block:calc(var(--spacing) * 0)}.start{inset-inline-start:var(--spacing)}.end{inset-inline-end:var(--spacing)}.-top-2{top:calc(var(--spacing) * -2)}.top-0{top:calc(var(--spacing) * 0)}.top-0\.5{top:calc(var(--spacing) * .5)}.top-2{top:calc(var(--spacing) * 2)}.top-3{top:calc(var(--spacing) * 3)}.top-4{top:calc(var(--spacing) * 4)}.-right-2{right:calc(var(--spacing) * -2)}.right-0{right:calc(var(--spacing) * 0)}.right-2{right:calc(var(--spacing) * 2)}.right-4{right:calc(var(--spacing) * 4)}.bottom-0{bottom:calc(var(--spacing) * 0)}.left-0{left:calc(var(--spacing) * 0)}.left-1\/2{left:50%}.z-10{z-index:10}.z-50{z-index:50}.z-\[100\]{z-index:100}.mx-4{margin-inline:calc(var(--spacing) * 4)}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1\.5{margin-top:calc(var(--spacing) * 1.5)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-auto{margin-top:auto}.mr-2{margin-right:calc(var(--spacing) * 2)}.mb-1{margin-bottom:calc(var(--spacing) * 1)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.ml-0\.5{margin-left:calc(var(--spacing) * .5)}.ml-1{margin-left:calc(var(--spacing) * 1)}.block{display:block}.contents{display:contents}.flex{display:flex}.hidden{display:none}.inline{display:inline}.inline-flex{display:inline-flex}.size-2\.5{width:calc(var(--spacing) * 2.5);height:calc(var(--spacing) * 2.5)}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.h-0\.5{height:calc(var(--spacing) * .5)}.h-1{height:calc(var(--spacing) * 1)}.h-2{height:calc(var(--spacing) * 2)}.h-2\.5{height:calc(var(--spacing) * 2.5)}.h-3{height:calc(var(--spacing) * 3)}.h-3\.5{height:calc(var(--spacing) * 3.5)}.h-4{height:calc(var(--spacing) * 4)}.h-5{height:calc(var(--spacing) * 5)}.h-6{height:calc(var(--spacing) * 6)}.h-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-10{height:calc(var(--spacing) * 10)}.h-12{height:calc(var(--spacing) * 12)}.h-14{height:calc(var(--spacing) * 14)}.h-20{height:calc(var(--spacing) * 20)}.h-32{height:calc(var(--spacing) * 32)}.h-\[80vh\]{height:80vh}.h-auto{height:auto}.h-full{height:100%}.max-h-24{max-height:calc(var(--spacing) * 24)}.min-h-0{min-height:calc(var(--spacing) * 0)}.w-2{width:calc(var(--spacing) * 2)}.w-2\.5{width:calc(var(--spacing) * 2.5)}.w-3{width:calc(var(--spacing) * 3)}.w-3\.5{width:calc(var(--spacing) * 3.5)}.w-3\/4{width:75%}.w-4{width:calc(var(--spacing) * 4)}.w-5{width:calc(var(--spacing) * 5)}.w-6{width:calc(var(--spacing) * 6)}.w-7{width:calc(var(--spacing) * 7)}.w-8{width:calc(var(--spacing) * 8)}.w-9{width:calc(var(--spacing) * 9)}.w-10{width:calc(var(--spacing) * 10)}.w-12{width:calc(var(--spacing) * 12)}.w-14{width:calc(var(--spacing) * 14)}.w-16{width:calc(var(--spacing) * 16)}.w-20{width:calc(var(--spacing) * 20)}.w-24{width:calc(var(--spacing) * 24)}.w-\[380px\]{width:380px}.w-auto{width:auto}.w-fit{width:fit-content}.w-full{width:100%}.max-w-5xl{max-width:var(--container-5xl)}.max-w-\[120px\]{max-width:120px}.max-w-md{max-width:var(--container-md)}.min-w-0{min-width:calc(var(--spacing) * 0)}.min-w-\[40px\]{min-width:40px}.min-w-\[55px\]{min-width:55px}.min-w-\[60px\]{min-width:60px}.min-w-\[80px\]{min-width:80px}.min-w-\[100px\]{min-width:100px}.min-w-\[120px\]{min-width:120px}.min-w-\[140px\]{min-width:140px}.min-w-\[160px\]{min-width:160px}.min-w-\[200px\]{min-width:200px}.min-w-\[240px\]{min-width:240px}.min-w-\[280px\]{min-width:280px}.flex-1{flex:1}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.origin-\(--radix-tooltip-content-transform-origin\){transform-origin:var(--radix-tooltip-content-transform-origin)}.-translate-x-1\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-0\.5{--tw-translate-x:calc(var(--spacing) * .5);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-\[1\.875rem\]{--tw-translate-x:1.875rem;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-\[calc\(-50\%_-_2px\)\]{--tw-translate-y: calc(-50% - 2px) ;translate:var(--tw-translate-x) var(--tw-translate-y)}.rotate-45{rotate:45deg}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-\[ping_2s_cubic-bezier\(0\,0\,0\.2\,1\)_infinite\]{animation:2s cubic-bezier(0,0,.2,1) infinite ping}.animate-ping{animation:var(--animate-ping)}.animate-pulse{animation:var(--animate-pulse)}.cursor-pointer{cursor:pointer}.cursor-text{cursor:text}.cursor-wait{cursor:wait}.resize-y{resize:vertical}.appearance-none{appearance:none}.flex-col{flex-direction:column}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:calc(var(--spacing) * 1)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-6{gap:calc(var(--spacing) * 6)}.gap-8{gap:calc(var(--spacing) * 8)}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1.5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1.5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-\[2px\]{border-radius:2px}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-xl{border-radius:var(--radius-xl)}.rounded-xs{border-radius:var(--radius-xs)}.rounded-t-md{border-top-left-radius:var(--radius-md);border-top-right-radius:var(--radius-md)}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-x{border-inline-style:var(--tw-border-style);border-inline-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-t-2{border-top-style:var(--tw-border-style);border-top-width:2px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-\[var\(--embed-border\)\]{border-color:var(--embed-border)}.border-\[var\(--embed-border-node\)\]{border-color:var(--embed-border-node)}.border-blue-200{border-color:var(--color-blue-200)}.border-blue-400{border-color:var(--color-blue-400)}.border-blue-500{border-color:var(--color-blue-500)}.border-blue-600{border-color:var(--color-blue-600)}.border-border{border-color:var(--border,#37374180)}.border-gray-200{border-color:var(--color-gray-200)}.border-gray-300{border-color:var(--color-gray-300)}.border-gray-400{border-color:var(--color-gray-400)}.border-gray-500{border-color:var(--color-gray-500)}.border-gray-600{border-color:var(--color-gray-600)}.border-gray-700{border-color:var(--color-gray-700)}.border-green-200{border-color:var(--color-green-200)}.border-green-400{border-color:var(--color-green-400)}.border-green-500\/50{border-color:#00c75880}@supports (color:color-mix(in lab,red,red)){.border-green-500\/50{border-color:color-mix(in oklab,var(--color-green-500) 50%,transparent)}}.border-green-600{border-color:var(--color-green-600)}.border-input{border-color:var(--input,#37374180)}.border-red-500\/20{border-color:#fb2c3633}@supports (color:color-mix(in lab,red,red)){.border-red-500\/20{border-color:color-mix(in oklab,var(--color-red-500) 20%,transparent)}}.border-red-800\/40{border-color:#9f071266}@supports (color:color-mix(in lab,red,red)){.border-red-800\/40{border-color:color-mix(in oklab,var(--color-red-800) 40%,transparent)}}.border-transparent{border-color:#0000}.bg-\[var\(--embed-bg-code\)\]{background-color:var(--embed-bg-code)}.bg-\[var\(--embed-bg-primary\)\]{background-color:var(--embed-bg-primary)}.bg-\[var\(--embed-bg-secondary\)\]{background-color:var(--embed-bg-secondary)}.bg-\[var\(--embed-bg-tertiary\)\],.bg-\[var\(--embed-bg-tertiary\)\]\/60{background-color:var(--embed-bg-tertiary)}@supports (color:color-mix(in lab,red,red)){.bg-\[var\(--embed-bg-tertiary\)\]\/60{background-color:color-mix(in oklab,var(--embed-bg-tertiary) 60%,transparent)}}.bg-\[var\(--embed-border\)\]\/40{background-color:var(--embed-border)}@supports (color:color-mix(in lab,red,red)){.bg-\[var\(--embed-border\)\]\/40{background-color:color-mix(in oklab,var(--embed-border) 40%,transparent)}}.bg-amber-100{background-color:var(--color-amber-100)}.bg-background{background-color:var(--background,#141418)}.bg-black{background-color:var(--color-black)}.bg-black\/50{background-color:#00000080}@supports (color:color-mix(in lab,red,red)){.bg-black\/50{background-color:color-mix(in oklab,var(--color-black) 50%,transparent)}}.bg-blue-50{background-color:var(--color-blue-50)}.bg-blue-400\/30{background-color:#54a2ff4d}@supports (color:color-mix(in lab,red,red)){.bg-blue-400\/30{background-color:color-mix(in oklab,var(--color-blue-400) 30%,transparent)}}.bg-blue-500{background-color:var(--color-blue-500)}.bg-blue-500\/10{background-color:#3080ff1a}@supports (color:color-mix(in lab,red,red)){.bg-blue-500\/10{background-color:color-mix(in oklab,var(--color-blue-500) 10%,transparent)}}.bg-blue-500\/20{background-color:#3080ff33}@supports (color:color-mix(in lab,red,red)){.bg-blue-500\/20{background-color:color-mix(in oklab,var(--color-blue-500) 20%,transparent)}}.bg-blue-600{background-color:var(--color-blue-600)}.bg-card\/95{background-color:var(--card,#1a1a1e)}@supports (color:color-mix(in lab,red,red)){.bg-card\/95{background-color:color-mix(in oklab,var(--card,#1a1a1e) 95%,transparent)}}.bg-foreground{background-color:var(--foreground,#e5e5e5)}.bg-gray-50{background-color:var(--color-gray-50)}.bg-gray-100{background-color:var(--color-gray-100)}.bg-gray-100\/50{background-color:#f3f4f680}@supports (color:color-mix(in lab,red,red)){.bg-gray-100\/50{background-color:color-mix(in oklab,var(--color-gray-100) 50%,transparent)}}.bg-gray-300{background-color:var(--color-gray-300)}.bg-gray-400{background-color:var(--color-gray-400)}.bg-gray-900{background-color:var(--color-gray-900)}.bg-green-50{background-color:var(--color-green-50)}.bg-green-400{background-color:var(--color-green-400)}.bg-green-500{background-color:var(--color-green-500)}.bg-green-500\/10{background-color:#00c7581a}@supports (color:color-mix(in lab,red,red)){.bg-green-500\/10{background-color:color-mix(in oklab,var(--color-green-500) 10%,transparent)}}.bg-green-600{background-color:var(--color-green-600)}.bg-purple-500\/20{background-color:#ac4bff33}@supports (color:color-mix(in lab,red,red)){.bg-purple-500\/20{background-color:color-mix(in oklab,var(--color-purple-500) 20%,transparent)}}.bg-red-500\/10{background-color:#fb2c361a}@supports (color:color-mix(in lab,red,red)){.bg-red-500\/10{background-color:color-mix(in oklab,var(--color-red-500) 10%,transparent)}}.bg-red-900\/30{background-color:#82181a4d}@supports (color:color-mix(in lab,red,red)){.bg-red-900\/30{background-color:color-mix(in oklab,var(--color-red-900) 30%,transparent)}}.bg-red-950\/20{background-color:#46080933}@supports (color:color-mix(in lab,red,red)){.bg-red-950\/20{background-color:color-mix(in oklab,var(--color-red-950) 20%,transparent)}}.bg-violet-500\/20{background-color:#8d54ff33}@supports (color:color-mix(in lab,red,red)){.bg-violet-500\/20{background-color:color-mix(in oklab,var(--color-violet-500) 20%,transparent)}}.bg-violet-500\/30{background-color:#8d54ff4d}@supports (color:color-mix(in lab,red,red)){.bg-violet-500\/30{background-color:color-mix(in oklab,var(--color-violet-500) 30%,transparent)}}.bg-violet-600{background-color:var(--color-violet-600)}.bg-white{background-color:var(--color-white)}.bg-gradient-to-br{--tw-gradient-position:to bottom right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-r{--tw-gradient-position:to right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.from-emerald-400{--tw-gradient-from:var(--color-emerald-400);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-emerald-500{--tw-gradient-from:var(--color-emerald-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-gray-50{--tw-gradient-from:var(--color-gray-50);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-gray-300{--tw-gradient-from:var(--color-gray-300);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-green-300{--tw-gradient-from:var(--color-green-300);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-indigo-500{--tw-gradient-from:var(--color-indigo-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-white{--tw-gradient-from:var(--color-white);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-gray-50{--tw-gradient-to:var(--color-gray-50);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-gray-400{--tw-gradient-to:var(--color-gray-400);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-green-500{--tw-gradient-to:var(--color-green-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-purple-500{--tw-gradient-to:var(--color-purple-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-white{--tw-gradient-to:var(--color-white);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.fill-foreground{fill:var(--foreground,#e5e5e5)}.p-1{padding:calc(var(--spacing) * 1)}.p-1\.5{padding:calc(var(--spacing) * 1.5)}.p-2{padding:calc(var(--spacing) * 2)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-8{padding:calc(var(--spacing) * 8)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-5{padding-inline:calc(var(--spacing) * 5)}.px-6{padding-inline:calc(var(--spacing) * 6)}.px-8{padding-inline:calc(var(--spacing) * 8)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-4{padding-block:calc(var(--spacing) * 4)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pl-1\.5{padding-left:calc(var(--spacing) * 1.5)}.pl-2{padding-left:calc(var(--spacing) * 2)}.text-center{text-align:center}.font-mono{font-family:var(--font-mono)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[9px\]{font-size:9px}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.text-balance{text-wrap:balance}.break-all{word-break:break-all}.whitespace-nowrap{white-space:nowrap}.whitespace-pre{white-space:pre}.whitespace-pre-wrap{white-space:pre-wrap}.text-\[var\(--embed-text-muted\)\]{color:var(--embed-text-muted)}.text-\[var\(--embed-text-primary\)\]{color:var(--embed-text-primary)}.text-\[var\(--embed-text-secondary\)\]{color:var(--embed-text-secondary)}.text-amber-500{color:var(--color-amber-500)}.text-amber-600{color:var(--color-amber-600)}.text-amber-700{color:var(--color-amber-700)}.text-background{color:var(--background,#141418)}.text-blue-400{color:var(--color-blue-400)}.text-blue-600{color:var(--color-blue-600)}.text-blue-700{color:var(--color-blue-700)}.text-blue-900{color:var(--color-blue-900)}.text-emerald-400{color:var(--color-emerald-400)}.text-emerald-600{color:var(--color-emerald-600)}.text-foreground{color:var(--foreground,#e5e5e5)}.text-gray-100{color:var(--color-gray-100)}.text-gray-300{color:var(--color-gray-300)}.text-gray-400{color:var(--color-gray-400)}.text-gray-500{color:var(--color-gray-500)}.text-gray-600{color:var(--color-gray-600)}.text-gray-700{color:var(--color-gray-700)}.text-gray-800{color:var(--color-gray-800)}.text-gray-900{color:var(--color-gray-900)}.text-green-400{color:var(--color-green-400)}.text-green-600{color:var(--color-green-600)}.text-green-700{color:var(--color-green-700)}.text-green-900{color:var(--color-green-900)}.text-muted-foreground,.text-muted-foreground\/60{color:var(--muted-foreground,#71717a)}@supports (color:color-mix(in lab,red,red)){.text-muted-foreground\/60{color:color-mix(in oklab,var(--muted-foreground,#71717a) 60%,transparent)}}.text-muted-foreground\/70{color:var(--muted-foreground,#71717a)}@supports (color:color-mix(in lab,red,red)){.text-muted-foreground\/70{color:color-mix(in oklab,var(--muted-foreground,#71717a) 70%,transparent)}}.text-purple-400{color:var(--color-purple-400)}.text-red-300{color:var(--color-red-300)}.text-red-300\/80{color:#ffa3a3cc}@supports (color:color-mix(in lab,red,red)){.text-red-300\/80{color:color-mix(in oklab,var(--color-red-300) 80%,transparent)}}.text-red-400{color:var(--color-red-400)}.text-red-400\/50{color:#ff656880}@supports (color:color-mix(in lab,red,red)){.text-red-400\/50{color:color-mix(in oklab,var(--color-red-400) 50%,transparent)}}.text-red-400\/60{color:#ff656899}@supports (color:color-mix(in lab,red,red)){.text-red-400\/60{color:color-mix(in oklab,var(--color-red-400) 60%,transparent)}}.text-red-500{color:var(--color-red-500)}.text-violet-300{color:var(--color-violet-300)}.text-violet-400{color:var(--color-violet-400)}.text-white{color:var(--color-white)}.text-yellow-400{color:var(--color-yellow-400)}.uppercase{text-transform:uppercase}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.underline-offset-4{text-underline-offset:4px}.accent-blue-600{accent-color:var(--color-blue-600)}.opacity-70{opacity:.7}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a), 0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-2{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-black\/20{--tw-shadow-color:#0003}@supports (color:color-mix(in lab,red,red)){.shadow-black\/20{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-black) 20%, transparent) var(--tw-shadow-alpha), transparent)}}.shadow-blue-500\/30{--tw-shadow-color:#3080ff4d}@supports (color:color-mix(in lab,red,red)){.shadow-blue-500\/30{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-blue-500) 30%, transparent) var(--tw-shadow-alpha), transparent)}}.shadow-green-500\/50{--tw-shadow-color:#00c75880}@supports (color:color-mix(in lab,red,red)){.shadow-green-500\/50{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-green-500) 50%, transparent) var(--tw-shadow-alpha), transparent)}}.ring-blue-500\/40{--tw-ring-color:#3080ff66}@supports (color:color-mix(in lab,red,red)){.ring-blue-500\/40{--tw-ring-color:color-mix(in oklab, var(--color-blue-500) 40%, transparent)}}.ring-offset-background{--tw-ring-offset-color:var(--background,#141418)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}@media(hover:hover){.group-hover\:bg-blue-400:is(:where(.group):hover *){background-color:var(--color-blue-400)}.hover\:scale-150:hover{--tw-scale-x:150%;--tw-scale-y:150%;--tw-scale-z:150%;scale:var(--tw-scale-x) var(--tw-scale-y)}.hover\:border-blue-400:hover{border-color:var(--color-blue-400)}.hover\:border-blue-500:hover{border-color:var(--color-blue-500)}.hover\:border-green-500:hover{border-color:var(--color-green-500)}.hover\:bg-\[var\(--embed-bg-tertiary\)\]\/80:hover{background-color:var(--embed-bg-tertiary)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-\[var\(--embed-bg-tertiary\)\]\/80:hover{background-color:color-mix(in oklab,var(--embed-bg-tertiary) 80%,transparent)}}.hover\:bg-accent:hover{background-color:var(--accent,#2a2a2e)}.hover\:bg-blue-300:hover{background-color:var(--color-blue-300)}.hover\:bg-blue-500\/5:hover{background-color:#3080ff0d}@supports (color:color-mix(in lab,red,red)){.hover\:bg-blue-500\/5:hover{background-color:color-mix(in oklab,var(--color-blue-500) 5%,transparent)}}.hover\:bg-blue-700:hover{background-color:var(--color-blue-700)}.hover\:bg-gray-100:hover{background-color:var(--color-gray-100)}.hover\:bg-gray-200:hover{background-color:var(--color-gray-200)}.hover\:bg-gray-800:hover{background-color:var(--color-gray-800)}.hover\:bg-green-300:hover{background-color:var(--color-green-300)}.hover\:bg-green-700:hover{background-color:var(--color-green-700)}.hover\:bg-red-900\/50:hover{background-color:#82181a80}@supports (color:color-mix(in lab,red,red)){.hover\:bg-red-900\/50:hover{background-color:color-mix(in oklab,var(--color-red-900) 50%,transparent)}}.hover\:bg-violet-500:hover{background-color:var(--color-violet-500)}.hover\:bg-violet-500\/10:hover{background-color:#8d54ff1a}@supports (color:color-mix(in lab,red,red)){.hover\:bg-violet-500\/10:hover{background-color:color-mix(in oklab,var(--color-violet-500) 10%,transparent)}}.hover\:text-\[var\(--embed-text-primary\)\]:hover{color:var(--embed-text-primary)}.hover\:text-accent-foreground:hover{color:var(--accent-foreground,#e5e5e5)}.hover\:text-blue-300:hover{color:var(--color-blue-300)}.hover\:text-blue-800:hover{color:var(--color-blue-800)}.hover\:text-gray-300:hover{color:var(--color-gray-300)}.hover\:text-gray-600:hover{color:var(--color-gray-600)}.hover\:text-red-300:hover{color:var(--color-red-300)}.hover\:text-violet-400:hover{color:var(--color-violet-400)}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-80:hover{opacity:.8}.hover\:opacity-100:hover{opacity:1}.hover\:shadow-md:hover{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-blue-500:focus{--tw-ring-color:var(--color-blue-500)}.focus\:ring-ring:focus{--tw-ring-color:var(--ring,#555)}.focus\:ring-offset-2:focus{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.focus\:outline-hidden:focus{--tw-outline-style:none;outline-style:none}@media(forced-colors:active){.focus\:outline-hidden:focus{outline-offset:2px;outline:2px solid #0000}}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.focus-visible\:ring-1:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-blue-400:focus-visible{--tw-ring-color:var(--color-blue-400)}.focus-visible\:ring-ring:focus-visible{--tw-ring-color:var(--ring,#555)}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.focus-visible\:ring-offset-gray-900:focus-visible{--tw-ring-offset-color:var(--color-gray-900)}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.active\:scale-90:active{--tw-scale-x:90%;--tw-scale-y:90%;--tw-scale-z:90%;scale:var(--tw-scale-x) var(--tw-scale-y)}.active\:scale-95:active{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x) var(--tw-scale-y)}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-40:disabled{opacity:.4}.disabled\:opacity-50:disabled{opacity:.5}.data-\[state\=closed\]\:duration-300[data-state=closed]{--tw-duration:.3s;transition-duration:.3s}.data-\[state\=open\]\:duration-500[data-state=open]{--tw-duration:.5s;transition-duration:.5s}@media(min-width:40rem){.sm\:max-w-sm{max-width:var(--container-sm)}}@media(min-width:48rem){.md\:flex{display:flex}}@media(prefers-color-scheme:dark){.dark\:border-blue-400{border-color:var(--color-blue-400)}.dark\:border-gray-600{border-color:var(--color-gray-600)}.dark\:bg-\[\#2a2a2e\]{background-color:#2a2a2e}.dark\:bg-blue-950\/40{background-color:#16245666}@supports (color:color-mix(in lab,red,red)){.dark\:bg-blue-950\/40{background-color:color-mix(in oklab,var(--color-blue-950) 40%,transparent)}}.dark\:bg-gray-800{background-color:var(--color-gray-800)}.dark\:bg-gray-900{background-color:var(--color-gray-900)}.dark\:text-amber-400{color:var(--color-amber-400)}.dark\:text-blue-400{color:var(--color-blue-400)}.dark\:text-emerald-400{color:var(--color-emerald-400)}.dark\:text-gray-100{color:var(--color-gray-100)}.dark\:text-gray-300{color:var(--color-gray-300)}.dark\:text-gray-400{color:var(--color-gray-400)}@media(hover:hover){.dark\:hover\:bg-gray-700:hover{background-color:var(--color-gray-700)}}}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:size-4 svg{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}}[data-embed-theme=dark],.dark{--embed-bg-primary:#141418;--embed-bg-secondary:#1a1a1e;--embed-bg-tertiary:#2a2a2e;--embed-bg-surface:#111114e6;--embed-bg-surface-80:#111114cc;--embed-bg-code:#0d1117;--embed-border:#37374180;--embed-border-node:#3a3a3e;--embed-text-primary:#e5e5e5;--embed-text-secondary:#a1a1aa;--embed-text-muted:#71717a;--embed-dot-color:#2a2a2e}[data-embed-theme=dark]{--background:#141418;--foreground:#e5e5e5;--card:#1a1a1e;--card-foreground:#e5e5e5;--muted:#2a2a2e;--muted-foreground:#71717a;--accent:#2a2a2e;--accent-foreground:#e5e5e5;--border:#37374180;--input:#37374180;--ring:#555;--color-background:var(--background);--color-foreground:var(--foreground);--color-card:var(--card);--color-card-foreground:var(--card-foreground);--color-muted:var(--muted);--color-muted-foreground:var(--muted-foreground);--color-accent:var(--accent);--color-accent-foreground:var(--accent-foreground);--color-border:var(--border);--color-input:var(--input);--color-ring:var(--ring)}[data-embed-theme] *,[data-embed-theme] :before,[data-embed-theme] :after{border-color:var(--color-border,#37374180)}[data-embed-theme=light],html.light{--embed-bg-primary:#f8f9fb;--embed-bg-secondary:#f3f4f6;--embed-bg-tertiary:#eef0f3;--embed-bg-surface:#f8f9fbf2;--embed-bg-surface-80:#f8f9fbe6;--embed-bg-code:#f3f4f6;--embed-border:#00000014;--embed-border-node:#0000001a;--embed-text-primary:#1a1a2e;--embed-text-secondary:#4b5563;--embed-text-muted:#9ca3af;--embed-dot-color:#e5e7eb}[data-embed-theme=light]{--background:#f8f9fb;--foreground:#1a1a2e;--card:#fff;--card-foreground:#1a1a2e;--muted:#eef0f3;--muted-foreground:#9ca3af;--accent:#eef0f3;--accent-foreground:#1a1a2e;--border:#00000014;--input:#00000014;--ring:#aaa;--color-background:var(--background);--color-foreground:var(--foreground);--color-card:var(--card);--color-card-foreground:var(--card-foreground);--color-muted:var(--muted);--color-muted-foreground:var(--muted-foreground);--color-accent:var(--accent);--color-accent-foreground:var(--accent-foreground);--color-border:var(--border);--color-input:var(--input);--color-ring:var(--ring)}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"<length-percentage>";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"<length-percentage>";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"<length-percentage>";inherits:false;initial-value:100%}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@keyframes ping{75%,to{opacity:0;transform:scale(2)}}@keyframes pulse{50%{opacity:.5}}.react-flow{direction:ltr;--xy-edge-stroke-default: #b1b1b7;--xy-edge-stroke-width-default: 1;--xy-edge-stroke-selected-default: #555;--xy-connectionline-stroke-default: #b1b1b7;--xy-connectionline-stroke-width-default: 1;--xy-attribution-background-color-default: rgba(255, 255, 255, .5);--xy-minimap-background-color-default: #fff;--xy-minimap-mask-background-color-default: rgba(240, 240, 240, .6);--xy-minimap-mask-stroke-color-default: transparent;--xy-minimap-mask-stroke-width-default: 1;--xy-minimap-node-background-color-default: #e2e2e2;--xy-minimap-node-stroke-color-default: transparent;--xy-minimap-node-stroke-width-default: 2;--xy-background-color-default: transparent;--xy-background-pattern-dots-color-default: #91919a;--xy-background-pattern-lines-color-default: #eee;--xy-background-pattern-cross-color-default: #e2e2e2;background-color:var(--xy-background-color, var(--xy-background-color-default));--xy-node-color-default: inherit;--xy-node-border-default: 1px solid #1a192b;--xy-node-background-color-default: #fff;--xy-node-group-background-color-default: rgba(240, 240, 240, .25);--xy-node-boxshadow-hover-default: 0 1px 4px 1px rgba(0, 0, 0, .08);--xy-node-boxshadow-selected-default: 0 0 0 .5px #1a192b;--xy-node-border-radius-default: 3px;--xy-handle-background-color-default: #1a192b;--xy-handle-border-color-default: #fff;--xy-selection-background-color-default: rgba(0, 89, 220, .08);--xy-selection-border-default: 1px dotted rgba(0, 89, 220, .8);--xy-controls-button-background-color-default: #fefefe;--xy-controls-button-background-color-hover-default: #f4f4f4;--xy-controls-button-color-default: inherit;--xy-controls-button-color-hover-default: inherit;--xy-controls-button-border-color-default: #eee;--xy-controls-box-shadow-default: 0 0 2px 1px rgba(0, 0, 0, .08);--xy-edge-label-background-color-default: #ffffff;--xy-edge-label-color-default: inherit;--xy-resize-background-color-default: #3367d9}.react-flow.dark{--xy-edge-stroke-default: #3e3e3e;--xy-edge-stroke-width-default: 1;--xy-edge-stroke-selected-default: #727272;--xy-connectionline-stroke-default: #b1b1b7;--xy-connectionline-stroke-width-default: 1;--xy-attribution-background-color-default: rgba(150, 150, 150, .25);--xy-minimap-background-color-default: #141414;--xy-minimap-mask-background-color-default: rgba(60, 60, 60, .6);--xy-minimap-mask-stroke-color-default: transparent;--xy-minimap-mask-stroke-width-default: 1;--xy-minimap-node-background-color-default: #2b2b2b;--xy-minimap-node-stroke-color-default: transparent;--xy-minimap-node-stroke-width-default: 2;--xy-background-color-default: #141414;--xy-background-pattern-dots-color-default: #777;--xy-background-pattern-lines-color-default: #777;--xy-background-pattern-cross-color-default: #777;--xy-node-color-default: #f8f8f8;--xy-node-border-default: 1px solid #3c3c3c;--xy-node-background-color-default: #1e1e1e;--xy-node-group-background-color-default: rgba(240, 240, 240, .25);--xy-node-boxshadow-hover-default: 0 1px 4px 1px rgba(255, 255, 255, .08);--xy-node-boxshadow-selected-default: 0 0 0 .5px #999;--xy-handle-background-color-default: #bebebe;--xy-handle-border-color-default: #1e1e1e;--xy-selection-background-color-default: rgba(200, 200, 220, .08);--xy-selection-border-default: 1px dotted rgba(200, 200, 220, .8);--xy-controls-button-background-color-default: #2b2b2b;--xy-controls-button-background-color-hover-default: #3e3e3e;--xy-controls-button-color-default: #f8f8f8;--xy-controls-button-color-hover-default: #fff;--xy-controls-button-border-color-default: #5b5b5b;--xy-controls-box-shadow-default: 0 0 2px 1px rgba(0, 0, 0, .08);--xy-edge-label-background-color-default: #141414;--xy-edge-label-color-default: #f8f8f8}.react-flow__background{background-color:var(--xy-background-color-props, var(--xy-background-color, var(--xy-background-color-default)));pointer-events:none;z-index:-1}.react-flow__container{position:absolute;width:100%;height:100%;top:0;left:0}.react-flow__pane{z-index:1}.react-flow__pane.draggable{cursor:grab}.react-flow__pane.dragging{cursor:grabbing}.react-flow__pane.selection{cursor:pointer}.react-flow__viewport{transform-origin:0 0;z-index:2;pointer-events:none}.react-flow__renderer{z-index:4}.react-flow__selection{z-index:6}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible{outline:none}.react-flow__edge-path{stroke:var(--xy-edge-stroke, var(--xy-edge-stroke-default));stroke-width:var(--xy-edge-stroke-width, var(--xy-edge-stroke-width-default));fill:none}.react-flow__connection-path{stroke:var(--xy-connectionline-stroke, var(--xy-connectionline-stroke-default));stroke-width:var(--xy-connectionline-stroke-width, var(--xy-connectionline-stroke-width-default));fill:none}.react-flow .react-flow__edges{position:absolute}.react-flow .react-flow__edges svg{overflow:visible;position:absolute;pointer-events:none}.react-flow__edge{pointer-events:visibleStroke}.react-flow__edge.selectable{cursor:pointer}.react-flow__edge.animated path{stroke-dasharray:5;animation:dashdraw .5s linear infinite}.react-flow__edge.animated path.react-flow__edge-interaction{stroke-dasharray:none;animation:none}.react-flow__edge.inactive{pointer-events:none}.react-flow__edge.selected,.react-flow__edge:focus,.react-flow__edge:focus-visible{outline:none}.react-flow__edge.selected .react-flow__edge-path,.react-flow__edge.selectable:focus .react-flow__edge-path,.react-flow__edge.selectable:focus-visible .react-flow__edge-path{stroke:var(--xy-edge-stroke-selected, var(--xy-edge-stroke-selected-default))}.react-flow__edge-textwrapper{pointer-events:all}.react-flow__edge .react-flow__edge-text{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__arrowhead polyline{stroke:var(--xy-edge-stroke, var(--xy-edge-stroke-default))}.react-flow__arrowhead polyline.arrowclosed{fill:var(--xy-edge-stroke, var(--xy-edge-stroke-default))}.react-flow__connection{pointer-events:none}.react-flow__connection .animated{stroke-dasharray:5;animation:dashdraw .5s linear infinite}svg.react-flow__connectionline{z-index:1001;overflow:visible;position:absolute}.react-flow__nodes{pointer-events:none;transform-origin:0 0}.react-flow__node{position:absolute;-webkit-user-select:none;-moz-user-select:none;user-select:none;pointer-events:all;transform-origin:0 0;box-sizing:border-box;cursor:default}.react-flow__node.selectable{cursor:pointer}.react-flow__node.draggable{cursor:grab;pointer-events:all}.react-flow__node.draggable.dragging{cursor:grabbing}.react-flow__nodesselection{z-index:3;transform-origin:left top;pointer-events:none}.react-flow__nodesselection-rect{position:absolute;pointer-events:all;cursor:grab}.react-flow__handle{position:absolute;pointer-events:none;min-width:5px;min-height:5px;width:6px;height:6px;background-color:var(--xy-handle-background-color, var(--xy-handle-background-color-default));border:1px solid var(--xy-handle-border-color, var(--xy-handle-border-color-default));border-radius:100%}.react-flow__handle.connectingfrom{pointer-events:all}.react-flow__handle.connectionindicator{pointer-events:all;cursor:crosshair}.react-flow__handle-bottom{top:auto;left:50%;bottom:0;transform:translate(-50%,50%)}.react-flow__handle-top{top:0;left:50%;transform:translate(-50%,-50%)}.react-flow__handle-left{top:50%;left:0;transform:translate(-50%,-50%)}.react-flow__handle-right{top:50%;right:0;transform:translate(50%,-50%)}.react-flow__edgeupdater{cursor:move;pointer-events:all}.react-flow__pane.selection .react-flow__panel{pointer-events:none}.react-flow__panel{position:absolute;z-index:5;margin:15px}.react-flow__panel.top{top:0}.react-flow__panel.bottom{bottom:0}.react-flow__panel.top.center,.react-flow__panel.bottom.center{left:50%;transform:translate(-15px) translate(-50%)}.react-flow__panel.left{left:0}.react-flow__panel.right{right:0}.react-flow__panel.left.center,.react-flow__panel.right.center{top:50%;transform:translateY(-15px) translateY(-50%)}.react-flow__attribution{font-size:10px;background:var(--xy-attribution-background-color, var(--xy-attribution-background-color-default));padding:2px 3px;margin:0}.react-flow__attribution a{text-decoration:none;color:#999}@keyframes dashdraw{0%{stroke-dashoffset:10}}.react-flow__edgelabel-renderer{position:absolute;width:100%;height:100%;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;left:0;top:0}.react-flow__viewport-portal{position:absolute;width:100%;height:100%;left:0;top:0;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__minimap{background:var( --xy-minimap-background-color-props, var(--xy-minimap-background-color, var(--xy-minimap-background-color-default)) )}.react-flow__minimap-svg{display:block}.react-flow__minimap-mask{fill:var( --xy-minimap-mask-background-color-props, var(--xy-minimap-mask-background-color, var(--xy-minimap-mask-background-color-default)) );stroke:var( --xy-minimap-mask-stroke-color-props, var(--xy-minimap-mask-stroke-color, var(--xy-minimap-mask-stroke-color-default)) );stroke-width:var( --xy-minimap-mask-stroke-width-props, var(--xy-minimap-mask-stroke-width, var(--xy-minimap-mask-stroke-width-default)) )}.react-flow__minimap-node{fill:var( --xy-minimap-node-background-color-props, var(--xy-minimap-node-background-color, var(--xy-minimap-node-background-color-default)) );stroke:var( --xy-minimap-node-stroke-color-props, var(--xy-minimap-node-stroke-color, var(--xy-minimap-node-stroke-color-default)) );stroke-width:var( --xy-minimap-node-stroke-width-props, var(--xy-minimap-node-stroke-width, var(--xy-minimap-node-stroke-width-default)) )}.react-flow__background-pattern.dots{fill:var( --xy-background-pattern-color-props, var(--xy-background-pattern-color, var(--xy-background-pattern-dots-color-default)) )}.react-flow__background-pattern.lines{stroke:var( --xy-background-pattern-color-props, var(--xy-background-pattern-color, var(--xy-background-pattern-lines-color-default)) )}.react-flow__background-pattern.cross{stroke:var( --xy-background-pattern-color-props, var(--xy-background-pattern-color, var(--xy-background-pattern-cross-color-default)) )}.react-flow__controls{display:flex;flex-direction:column;box-shadow:var(--xy-controls-box-shadow, var(--xy-controls-box-shadow-default))}.react-flow__controls.horizontal{flex-direction:row}.react-flow__controls-button{display:flex;justify-content:center;align-items:center;height:26px;width:26px;padding:4px;border:none;background:var(--xy-controls-button-background-color, var(--xy-controls-button-background-color-default));border-bottom:1px solid var( --xy-controls-button-border-color-props, var(--xy-controls-button-border-color, var(--xy-controls-button-border-color-default)) );color:var( --xy-controls-button-color-props, var(--xy-controls-button-color, var(--xy-controls-button-color-default)) );cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__controls-button svg{width:100%;max-width:12px;max-height:12px;fill:currentColor}.react-flow__edge.updating .react-flow__edge-path{stroke:#777}.react-flow__edge-text{font-size:10px}.react-flow__node.selectable:focus,.react-flow__node.selectable:focus-visible{outline:none}.react-flow__node-input,.react-flow__node-default,.react-flow__node-output,.react-flow__node-group{padding:10px;border-radius:var(--xy-node-border-radius, var(--xy-node-border-radius-default));width:150px;font-size:12px;color:var(--xy-node-color, var(--xy-node-color-default));text-align:center;border:var(--xy-node-border, var(--xy-node-border-default));background-color:var(--xy-node-background-color, var(--xy-node-background-color-default))}.react-flow__node-input.selectable:hover,.react-flow__node-default.selectable:hover,.react-flow__node-output.selectable:hover,.react-flow__node-group.selectable:hover{box-shadow:var(--xy-node-boxshadow-hover, var(--xy-node-boxshadow-hover-default))}.react-flow__node-input.selectable.selected,.react-flow__node-input.selectable:focus,.react-flow__node-input.selectable:focus-visible,.react-flow__node-default.selectable.selected,.react-flow__node-default.selectable:focus,.react-flow__node-default.selectable:focus-visible,.react-flow__node-output.selectable.selected,.react-flow__node-output.selectable:focus,.react-flow__node-output.selectable:focus-visible,.react-flow__node-group.selectable.selected,.react-flow__node-group.selectable:focus,.react-flow__node-group.selectable:focus-visible{box-shadow:var(--xy-node-boxshadow-selected, var(--xy-node-boxshadow-selected-default))}.react-flow__node-group{background-color:var(--xy-node-group-background-color, var(--xy-node-group-background-color-default))}.react-flow__nodesselection-rect,.react-flow__selection{background:var(--xy-selection-background-color, var(--xy-selection-background-color-default));border:var(--xy-selection-border, var(--xy-selection-border-default))}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible,.react-flow__selection:focus,.react-flow__selection:focus-visible{outline:none}.react-flow__controls-button:hover{background:var( --xy-controls-button-background-color-hover-props, var(--xy-controls-button-background-color-hover, var(--xy-controls-button-background-color-hover-default)) );color:var( --xy-controls-button-color-hover-props, var(--xy-controls-button-color-hover, var(--xy-controls-button-color-hover-default)) )}.react-flow__controls-button:disabled{pointer-events:none}.react-flow__controls-button:disabled svg{fill-opacity:.4}.react-flow__controls-button:last-child{border-bottom:none}.react-flow__controls.horizontal .react-flow__controls-button{border-bottom:none;border-right:1px solid var( --xy-controls-button-border-color-props, var(--xy-controls-button-border-color, var(--xy-controls-button-border-color-default)) )}.react-flow__controls.horizontal .react-flow__controls-button:last-child{border-right:none}.react-flow__resize-control{position:absolute}.react-flow__resize-control.left,.react-flow__resize-control.right{cursor:ew-resize}.react-flow__resize-control.top,.react-flow__resize-control.bottom{cursor:ns-resize}.react-flow__resize-control.top.left,.react-flow__resize-control.bottom.right{cursor:nwse-resize}.react-flow__resize-control.bottom.left,.react-flow__resize-control.top.right{cursor:nesw-resize}.react-flow__resize-control.handle{width:5px;height:5px;border:1px solid #fff;border-radius:1px;background-color:var(--xy-resize-background-color, var(--xy-resize-background-color-default));translate:-50% -50%}.react-flow__resize-control.handle.left{left:0;top:50%}.react-flow__resize-control.handle.right{left:100%;top:50%}.react-flow__resize-control.handle.top{left:50%;top:0}.react-flow__resize-control.handle.bottom{left:50%;top:100%}.react-flow__resize-control.handle.top.left,.react-flow__resize-control.handle.bottom.left{left:0}.react-flow__resize-control.handle.top.right,.react-flow__resize-control.handle.bottom.right{left:100%}.react-flow__resize-control.line{border-color:var(--xy-resize-background-color, var(--xy-resize-background-color-default));border-width:0;border-style:solid}.react-flow__resize-control.line.left,.react-flow__resize-control.line.right{width:1px;transform:translate(-50%);top:0;height:100%}.react-flow__resize-control.line.left{left:0;border-left-width:1px}.react-flow__resize-control.line.right{left:100%;border-right-width:1px}.react-flow__resize-control.line.top,.react-flow__resize-control.line.bottom{height:1px;transform:translateY(-50%);left:0;width:100%}.react-flow__resize-control.line.top{top:0;border-top-width:1px}.react-flow__resize-control.line.bottom{border-bottom-width:1px;top:100%}.react-flow__edge-textbg{fill:var(--xy-edge-label-background-color, var(--xy-edge-label-background-color-default))}.react-flow__edge-text{fill:var(--xy-edge-label-color, var(--xy-edge-label-color-default))}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@simten/embed",
3
- "version": "0.1.7",
3
+ "version": "0.1.9",
4
4
  "description": "Embeddable interactive hardware circuits. Drop live, cycle-accurate simulations into any React app or HTML page.",
5
5
  "license": "Apache-2.0",
6
6
  "author": "Charles Harris",
@@ -54,8 +54,8 @@
54
54
  "clsx": "^2.1.1",
55
55
  "elkjs": "^0.9.3",
56
56
  "tailwind-merge": "^3.0.0",
57
- "@simten/core": "0.4.0",
58
- "@simten/ui": "0.1.7"
57
+ "@simten/core": "0.5.1",
58
+ "@simten/ui": "0.1.9"
59
59
  },
60
60
  "peerDependencies": {
61
61
  "react": "^18 || ^19",