@tscircuit/runframe 0.0.109 → 0.0.110
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.
|
@@ -731,7 +731,7 @@ var PcbViewerWithContainerHeight = ({
|
|
|
731
731
|
import { useEffect } from "react";
|
|
732
732
|
|
|
733
733
|
// lib/hooks/styles.generated.ts
|
|
734
|
-
var styles_generated_default = '*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }/*! tailwindcss v3.4.17 | MIT License | https://tailwindcss.com*/*,:after,:before{border:0 solid #e5e7eb;box-sizing:border-box}:after,:before{--tw-content:""}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-tap-highlight-color:transparent}body{line-height:inherit;margin:0}hr{border-top-width:1px;color:inherit;height:0}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;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-size:1em;font-variation-settings:normal}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}button,input,optgroup,select,textarea{color:inherit;font-family:inherit;font-feature-settings:inherit;font-size:100%;font-variation-settings:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{color:#9ca3af;opacity:1}input::placeholder,textarea::placeholder{color:#9ca3af;opacity:1}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}[hidden]:where(:not([hidden=until-found])){display:none}:root{--radius:0.5rem}.rf-pointer-events-none{pointer-events:none}.rf-invisible{visibility:hidden}.rf-fixed{position:fixed}.rf-absolute{position:absolute}.rf-relative{position:relative}.rf-inset-0{inset:0}.rf-bottom-full{bottom:100%}.rf-left-1{left:.25rem}.rf-left-1\\/2{left:50%}.rf-left-2{left:.5rem}.rf-right-4{right:1rem}.rf-right-\\[4px\\]{right:4px}.rf-top-2{top:.5rem}.rf-top-\\[6px\\]{top:6px}.rf-z-50{z-index:50}.rf-z-\\[100\\]{z-index:100}.rf--mx-1{margin-left:-.25rem;margin-right:-.25rem}.rf-mx-2{margin-left:.5rem;margin-right:.5rem}.rf-my-1{margin-bottom:.25rem;margin-top:.25rem}.rf-mb-2{margin-bottom:.5rem}.rf-mb-3{margin-bottom:.75rem}.rf-mb-4{margin-bottom:1rem}.rf-ml-1{margin-left:.25rem}.rf-ml-1\\.5{margin-left:.375rem}.rf-ml-2{margin-left:.5rem}.rf-ml-auto{margin-left:auto}.rf-mr-1{margin-right:.25rem}.rf-mr-2{margin-right:.5rem}.rf-mt-0{margin-top:0}.rf-mt-2{margin-top:.5rem}.rf-mt-4{margin-top:1rem}.rf-flex{display:flex}.rf-inline-flex{display:inline-flex}.rf-size-4{height:1rem;width:1rem}.rf-h-1{height:.25rem}.rf-h-10{height:2.5rem}.rf-h-2{height:.5rem}.rf-h-3{height:.75rem}.rf-h-3\\.5{height:.875rem}.rf-h-4{height:1rem}.rf-h-60{height:15rem}.rf-h-8{height:2rem}.rf-h-9{height:2.25rem}.rf-h-\\[620px\\]{height:620px}.rf-h-\\[calc\\(100vh-96px\\)\\]{height:calc(100vh - 96px)}.rf-h-full{height:100%}.rf-h-px{height:1px}.rf-max-h-\\[500px\\]{max-height:500px}.rf-min-h-\\[620px\\]{min-height:620px}.rf-min-h-\\[calc\\(100vh-240px\\)\\]{min-height:calc(100vh - 240px)}.rf-w-1{width:.25rem}.rf-w-11{width:2.75rem}.rf-w-11\\/12{width:91.666667%}.rf-w-2{width:.5rem}.rf-w-3{width:.75rem}.rf-w-3\\.5{width:.875rem}.rf-w-4{width:1rem}.rf-w-9{width:2.25rem}.rf-w-96{width:24rem}.rf-w-full{width:100%}.rf-min-w-\\[8rem\\]{min-width:8rem}.rf-max-w-2xl{max-width:42rem}.rf-shrink-0{flex-shrink:0}.rf-flex-grow{flex-grow:1}.rf-table-auto{table-layout:auto}.rf--translate-x-1{--tw-translate-x:-0.25rem}.rf--translate-x-1,.rf--translate-x-1\\/2{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rf--translate-x-1\\/2{--tw-translate-x:-50%}.rf-transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes rf-spin{to{transform:rotate(1turn)}}.rf-animate-spin{animation:rf-spin 1s linear infinite}.rf-cursor-default{cursor:default}.rf-cursor-pointer{cursor:pointer}.rf-select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.rf-flex-col{flex-direction:column}.rf-items-center{align-items:center}.rf-justify-end{justify-content:flex-end}.rf-justify-center{justify-content:center}.rf-justify-between{justify-content:space-between}.rf-gap-2{gap:.5rem}.rf-gap-3{gap:.75rem}.rf-space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(.5rem*var(--tw-space-x-reverse))}.rf-space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.5rem*var(--tw-space-y-reverse));margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)))}.rf-overflow-auto{overflow:auto}.rf-overflow-hidden{overflow:hidden}.rf-overflow-visible{overflow:visible}.rf-overflow-x-auto{overflow-x:auto}.rf-overflow-y-auto{overflow-y:auto}.rf-whitespace-nowrap{white-space:nowrap}.rf-whitespace-pre-wrap{white-space:pre-wrap}.rf-rounded{border-radius:.25rem}.rf-rounded-full{border-radius:9999px}.rf-rounded-lg{border-radius:var(--radius)}.rf-rounded-md{border-radius:calc(var(--radius) - 2px)}.rf-rounded-sm{border-radius:calc(var(--radius) - 4px)}.rf-border{border-width:1px}.rf-border-b{border-bottom-width:1px}.rf-border-green-200{--tw-border-opacity:1;border-color:rgb(187 247 208/var(--tw-border-opacity,1))}.rf-border-neutral-200{--tw-border-opacity:1;border-color:rgb(229 229 229/var(--tw-border-opacity,1))}.rf-border-red-200{--tw-border-opacity:1;border-color:rgb(254 202 202/var(--tw-border-opacity,1))}.rf-border-zinc-200{--tw-border-opacity:1;border-color:rgb(228 228 231/var(--tw-border-opacity,1))}.rf-bg-black{--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity,1))}.rf-bg-blue-500{--tw-bg-opacity:1;background-color:rgb(59 130 246/var(--tw-bg-opacity,1))}.rf-bg-blue-600{--tw-bg-opacity:1;background-color:rgb(37 99 235/var(--tw-bg-opacity,1))}.rf-bg-gray-100{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity,1))}.rf-bg-gray-500{--tw-bg-opacity:1;background-color:rgb(107 114 128/var(--tw-bg-opacity,1))}.rf-bg-gray-800{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity,1))}.rf-bg-gray-900{--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity,1))}.rf-bg-green-50{--tw-bg-opacity:1;background-color:rgb(240 253 244/var(--tw-bg-opacity,1))}.rf-bg-neutral-100{--tw-bg-opacity:1;background-color:rgb(245 245 245/var(--tw-bg-opacity,1))}.rf-bg-neutral-50{--tw-bg-opacity:1;background-color:rgb(250 250 250/var(--tw-bg-opacity,1))}.rf-bg-neutral-800{--tw-bg-opacity:1;background-color:rgb(38 38 38/var(--tw-bg-opacity,1))}.rf-bg-neutral-900{--tw-bg-opacity:1;background-color:rgb(23 23 23/var(--tw-bg-opacity,1))}.rf-bg-orange-400{--tw-bg-opacity:1;background-color:rgb(251 146 60/var(--tw-bg-opacity,1))}.rf-bg-red-50{--tw-bg-opacity:1;background-color:rgb(254 242 242/var(--tw-bg-opacity,1))}.rf-bg-red-500{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity,1))}.rf-bg-red-900{--tw-bg-opacity:1;background-color:rgb(127 29 29/var(--tw-bg-opacity,1))}.rf-bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.rf-bg-zinc-100{--tw-bg-opacity:1;background-color:rgb(244 244 245/var(--tw-bg-opacity,1))}.rf-bg-zinc-50{--tw-bg-opacity:1;background-color:rgb(250 250 250/var(--tw-bg-opacity,1))}.rf-bg-zinc-800{--tw-bg-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity,1))}.rf-bg-zinc-900{--tw-bg-opacity:1;background-color:rgb(24 24 27/var(--tw-bg-opacity,1))}.rf-bg-opacity-50{--tw-bg-opacity:0.5}.rf-fill-current{fill:currentColor}.rf-p-0{padding:0}.rf-p-0\\.5{padding:.125rem}.rf-p-1{padding:.25rem}.rf-p-2{padding:.5rem}.rf-p-3{padding:.75rem}.rf-p-4{padding:1rem}.rf-p-5{padding:1.25rem}.rf-p-6{padding:1.5rem}.rf-px-1{padding-left:.25rem;padding-right:.25rem}.rf-px-1\\.5{padding-left:.375rem;padding-right:.375rem}.rf-px-2{padding-left:.5rem;padding-right:.5rem}.rf-px-3{padding-left:.75rem;padding-right:.75rem}.rf-px-4{padding-left:1rem;padding-right:1rem}.rf-px-8{padding-left:2rem;padding-right:2rem}.rf-py-1{padding-bottom:.25rem;padding-top:.25rem}.rf-py-1\\.5{padding-bottom:.375rem;padding-top:.375rem}.rf-py-10{padding-bottom:2.5rem;padding-top:2.5rem}.rf-py-2{padding-bottom:.5rem;padding-top:.5rem}.rf-pb-4{padding-bottom:1rem}.rf-pl-8{padding-left:2rem}.rf-pr-2{padding-right:.5rem}.rf-text-left{text-align:left}.rf-text-center{text-align:center}.rf-font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.rf-text-2xl{font-size:1.5rem;line-height:2rem}.rf-text-\\[8px\\]{font-size:8px}.rf-text-lg{font-size:1.125rem;line-height:1.75rem}.rf-text-sm{font-size:.875rem;line-height:1.25rem}.rf-text-xs{font-size:.75rem;line-height:1rem}.rf-font-bold{font-weight:700}.rf-font-medium{font-weight:500}.rf-font-semibold{font-weight:600}.rf-capitalize{text-transform:capitalize}.rf-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)}.rf-leading-5{line-height:1.25rem}.rf-tracking-widest{letter-spacing:.1em}.rf-text-blue-500{--tw-text-opacity:1;color:rgb(59 130 246/var(--tw-text-opacity,1))}.rf-text-blue-600{--tw-text-opacity:1;color:rgb(37 99 235/var(--tw-text-opacity,1))}.rf-text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.rf-text-gray-600{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity,1))}.rf-text-gray-700{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity,1))}.rf-text-green-500{--tw-text-opacity:1;color:rgb(34 197 94/var(--tw-text-opacity,1))}.rf-text-green-700{--tw-text-opacity:1;color:rgb(21 128 61/var(--tw-text-opacity,1))}.rf-text-green-800{--tw-text-opacity:1;color:rgb(22 101 52/var(--tw-text-opacity,1))}.rf-text-neutral-50{--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity,1))}.rf-text-neutral-500{--tw-text-opacity:1;color:rgb(115 115 115/var(--tw-text-opacity,1))}.rf-text-neutral-900{--tw-text-opacity:1;color:rgb(23 23 23/var(--tw-text-opacity,1))}.rf-text-neutral-950{--tw-text-opacity:1;color:rgb(10 10 10/var(--tw-text-opacity,1))}.rf-text-red-600{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity,1))}.rf-text-red-700{--tw-text-opacity:1;color:rgb(185 28 28/var(--tw-text-opacity,1))}.rf-text-red-800{--tw-text-opacity:1;color:rgb(153 27 27/var(--tw-text-opacity,1))}.rf-text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.rf-text-zinc-50{--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity,1))}.rf-text-zinc-500{--tw-text-opacity:1;color:rgb(113 113 122/var(--tw-text-opacity,1))}.rf-text-zinc-900{--tw-text-opacity:1;color:rgb(24 24 27/var(--tw-text-opacity,1))}.rf-text-zinc-950{--tw-text-opacity:1;color:rgb(9 9 11/var(--tw-text-opacity,1))}.rf-underline{text-decoration-line:underline}.rf-underline-offset-4{text-underline-offset:4px}.rf-opacity-0{opacity:0}.rf-opacity-50{opacity:.5}.rf-opacity-60{opacity:.6}.rf-shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.rf-shadow,.rf-shadow-lg{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.rf-shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.rf-shadow-md{--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color)}.rf-shadow-md,.rf-shadow-sm{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.rf-shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.rf-outline-none{outline:2px solid transparent;outline-offset:2px}.rf-ring-offset-white{--tw-ring-offset-color:#fff}.rf-transition-all{transition-duration:.15s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.rf-transition-colors{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1)}.rf-transition-opacity{transition-duration:.15s;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1)}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0) scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1)) rotate(var(--tw-enter-rotate,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0) scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1)) rotate(var(--tw-exit-rotate,0))}}.hover\\:rf-bg-red-500\\/90:hover{background-color:rgba(239,68,68,.9)}.hover\\:rf-bg-zinc-100:hover{--tw-bg-opacity:1;background-color:rgb(244 244 245/var(--tw-bg-opacity,1))}.hover\\:rf-bg-zinc-100\\/80:hover{background-color:hsla(240,5%,96%,.8)}.hover\\:rf-bg-zinc-900\\/90:hover{background-color:rgba(24,24,27,.9)}.hover\\:rf-text-zinc-900:hover{--tw-text-opacity:1;color:rgb(24 24 27/var(--tw-text-opacity,1))}.hover\\:rf-underline:hover{text-decoration-line:underline}.focus\\:rf-bg-zinc-100:focus{--tw-bg-opacity:1;background-color:rgb(244 244 245/var(--tw-bg-opacity,1))}.focus\\:rf-text-zinc-900:focus{--tw-text-opacity:1;color:rgb(24 24 27/var(--tw-text-opacity,1))}.focus-visible\\:rf-outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.focus-visible\\:rf-ring-1:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-visible\\:rf-ring-2:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-visible\\:rf-ring-zinc-950:focus-visible{--tw-ring-opacity:1;--tw-ring-color:rgb(9 9 11/var(--tw-ring-opacity,1))}.focus-visible\\:rf-ring-offset-2:focus-visible{--tw-ring-offset-width:2px}.disabled\\:rf-pointer-events-none:disabled{pointer-events:none}.disabled\\:rf-opacity-50:disabled{opacity:.5}.data-\\[disabled\\]\\:rf-pointer-events-none[data-disabled]{pointer-events:none}.data-\\[state\\=active\\]\\:rf-bg-white[data-state=active]{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.data-\\[state\\=open\\]\\:rf-bg-zinc-100[data-state=open]{--tw-bg-opacity:1;background-color:rgb(244 244 245/var(--tw-bg-opacity,1))}.data-\\[state\\=active\\]\\:rf-text-zinc-950[data-state=active]{--tw-text-opacity:1;color:rgb(9 9 11/var(--tw-text-opacity,1))}.data-\\[disabled\\]\\:rf-opacity-50[data-disabled]{opacity:.5}.data-\\[state\\=active\\]\\:rf-shadow[data-state=active]{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.data-\\[state\\=open\\]\\:rf-animate-in[data-state=open]{animation-duration:.15s;animation-name:enter;--tw-enter-opacity:initial;--tw-enter-scale:initial;--tw-enter-rotate:initial;--tw-enter-translate-x:initial;--tw-enter-translate-y:initial}.data-\\[state\\=closed\\]\\:rf-animate-out[data-state=closed]{animation-duration:.15s;animation-name:exit;--tw-exit-opacity:initial;--tw-exit-scale:initial;--tw-exit-rotate:initial;--tw-exit-translate-x:initial;--tw-exit-translate-y:initial}.data-\\[state\\=closed\\]\\:rf-fade-out-0[data-state=closed]{--tw-exit-opacity:0}.data-\\[state\\=open\\]\\:rf-fade-in-0[data-state=open]{--tw-enter-opacity:0}.data-\\[state\\=closed\\]\\:rf-zoom-out-95[data-state=closed]{--tw-exit-scale:.95}.data-\\[state\\=open\\]\\:rf-zoom-in-95[data-state=open]{--tw-enter-scale:.95}.data-\\[side\\=bottom\\]\\:rf-slide-in-from-top-2[data-side=bottom]{--tw-enter-translate-y:-0.5rem}.data-\\[side\\=left\\]\\:rf-slide-in-from-right-2[data-side=left]{--tw-enter-translate-x:0.5rem}.data-\\[side\\=right\\]\\:rf-slide-in-from-left-2[data-side=right]{--tw-enter-translate-x:-0.5rem}.data-\\[side\\=top\\]\\:rf-slide-in-from-bottom-2[data-side=top]{--tw-enter-translate-y:0.5rem}.dark\\:rf-border-zinc-800:is(.rf-dark *){--tw-border-opacity:1;border-color:rgb(39 39 42/var(--tw-border-opacity,1))}.dark\\:rf-bg-red-900:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(127 29 29/var(--tw-bg-opacity,1))}.dark\\:rf-bg-zinc-50:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(250 250 250/var(--tw-bg-opacity,1))}.dark\\:rf-bg-zinc-800:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity,1))}.dark\\:rf-bg-zinc-950:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(9 9 11/var(--tw-bg-opacity,1))}.dark\\:rf-text-zinc-400:is(.rf-dark *){--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity,1))}.dark\\:rf-text-zinc-50:is(.rf-dark *){--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity,1))}.dark\\:rf-text-zinc-900:is(.rf-dark *){--tw-text-opacity:1;color:rgb(24 24 27/var(--tw-text-opacity,1))}.dark\\:rf-ring-offset-zinc-950:is(.rf-dark *){--tw-ring-offset-color:#09090b}.dark\\:hover\\:rf-bg-red-900\\/90:hover:is(.rf-dark *){background-color:rgba(127,29,29,.9)}.dark\\:hover\\:rf-bg-zinc-50\\/90:hover:is(.rf-dark *){background-color:hsla(0,0%,98%,.9)}.dark\\:hover\\:rf-bg-zinc-800:hover:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity,1))}.dark\\:hover\\:rf-bg-zinc-800\\/80:hover:is(.rf-dark *){background-color:rgba(39,39,42,.8)}.dark\\:hover\\:rf-text-zinc-50:hover:is(.rf-dark *){--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity,1))}.dark\\:focus\\:rf-bg-zinc-800:focus:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity,1))}.dark\\:focus\\:rf-text-zinc-50:focus:is(.rf-dark *){--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity,1))}.dark\\:focus-visible\\:rf-ring-zinc-300:focus-visible:is(.rf-dark *){--tw-ring-opacity:1;--tw-ring-color:rgb(212 212 216/var(--tw-ring-opacity,1))}.dark\\:data-\\[state\\=active\\]\\:rf-bg-zinc-950[data-state=active]:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(9 9 11/var(--tw-bg-opacity,1))}.dark\\:data-\\[state\\=open\\]\\:rf-bg-zinc-800[data-state=open]:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity,1))}.dark\\:data-\\[state\\=active\\]\\:rf-text-zinc-50[data-state=active]:is(.rf-dark *){--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity,1))}.\\[\\&\\>svg\\]\\:rf-size-4>svg{height:1rem;width:1rem}.\\[\\&\\>svg\\]\\:rf-shrink-0>svg{flex-shrink:0}.\\[\\&_svg\\]\\:rf-pointer-events-none svg{pointer-events:none}.\\[\\&_svg\\]\\:rf-size-4 svg{height:1rem;width:1rem}.\\[\\&_svg\\]\\:rf-shrink-0 svg{flex-shrink:0}';
|
|
734
|
+
var styles_generated_default = '*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }/*! tailwindcss v3.4.17 | MIT License | https://tailwindcss.com*/*,:after,:before{border:0 solid #e5e7eb;box-sizing:border-box}:after,:before{--tw-content:""}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-tap-highlight-color:transparent}body{line-height:inherit;margin:0}hr{border-top-width:1px;color:inherit;height:0}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;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-size:1em;font-variation-settings:normal}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}button,input,optgroup,select,textarea{color:inherit;font-family:inherit;font-feature-settings:inherit;font-size:100%;font-variation-settings:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{color:#9ca3af;opacity:1}input::placeholder,textarea::placeholder{color:#9ca3af;opacity:1}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}[hidden]:where(:not([hidden=until-found])){display:none}:root{--radius:0.5rem}.rf-pointer-events-none{pointer-events:none}.rf-invisible{visibility:hidden}.rf-fixed{position:fixed}.rf-absolute{position:absolute}.rf-relative{position:relative}.rf-inset-0{inset:0}.rf-bottom-full{bottom:100%}.rf-left-1{left:.25rem}.rf-left-1\\/2{left:50%}.rf-left-2{left:.5rem}.rf-right-4{right:1rem}.rf-right-\\[4px\\]{right:4px}.rf-top-2{top:.5rem}.rf-top-\\[6px\\]{top:6px}.rf-z-50{z-index:50}.rf-z-\\[100\\]{z-index:100}.rf--mx-1{margin-left:-.25rem;margin-right:-.25rem}.rf-mx-2{margin-left:.5rem;margin-right:.5rem}.rf-my-1{margin-bottom:.25rem;margin-top:.25rem}.rf-mb-2{margin-bottom:.5rem}.rf-mb-3{margin-bottom:.75rem}.rf-mb-4{margin-bottom:1rem}.rf-ml-1{margin-left:.25rem}.rf-ml-1\\.5{margin-left:.375rem}.rf-ml-2{margin-left:.5rem}.rf-ml-auto{margin-left:auto}.rf-mr-1{margin-right:.25rem}.rf-mr-2{margin-right:.5rem}.rf-mt-0{margin-top:0}.rf-mt-2{margin-top:.5rem}.rf-mt-4{margin-top:1rem}.rf-flex{display:flex}.rf-inline-flex{display:inline-flex}.rf-size-4{height:1rem;width:1rem}.rf-h-1{height:.25rem}.rf-h-10{height:2.5rem}.rf-h-2{height:.5rem}.rf-h-3{height:.75rem}.rf-h-3\\.5{height:.875rem}.rf-h-4{height:1rem}.rf-h-60{height:15rem}.rf-h-8{height:2rem}.rf-h-9{height:2.25rem}.rf-h-\\[620px\\]{height:620px}.rf-h-\\[calc\\(100vh-96px\\)\\]{height:calc(100vh - 96px)}.rf-h-full{height:100%}.rf-h-px{height:1px}.rf-max-h-\\[500px\\]{max-height:500px}.rf-min-h-\\[620px\\]{min-height:620px}.rf-min-h-\\[calc\\(100vh-240px\\)\\]{min-height:calc(100vh - 240px)}.rf-w-1{width:.25rem}.rf-w-11{width:2.75rem}.rf-w-11\\/12{width:91.666667%}.rf-w-2{width:.5rem}.rf-w-3{width:.75rem}.rf-w-3\\.5{width:.875rem}.rf-w-4{width:1rem}.rf-w-9{width:2.25rem}.rf-w-96{width:24rem}.rf-w-full{width:100%}.rf-min-w-\\[8rem\\]{min-width:8rem}.rf-max-w-2xl{max-width:42rem}.rf-shrink-0{flex-shrink:0}.rf-flex-grow{flex-grow:1}.rf-table-auto{table-layout:auto}.-rf-translate-x-1{--tw-translate-x:-0.25rem}.-rf-translate-x-1,.-rf-translate-x-1\\/2{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-rf-translate-x-1\\/2{--tw-translate-x:-50%}.rf--translate-x-1{--tw-translate-x:-0.25rem}.rf--translate-x-1,.rf-transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes rf-spin{to{transform:rotate(1turn)}}.rf-animate-spin{animation:rf-spin 1s linear infinite}.rf-cursor-default{cursor:default}.rf-cursor-pointer{cursor:pointer}.rf-select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.rf-flex-col{flex-direction:column}.rf-items-center{align-items:center}.rf-justify-end{justify-content:flex-end}.rf-justify-center{justify-content:center}.rf-justify-between{justify-content:space-between}.rf-gap-2{gap:.5rem}.rf-gap-3{gap:.75rem}.rf-space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(.5rem*var(--tw-space-x-reverse))}.rf-space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.5rem*var(--tw-space-y-reverse));margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)))}.rf-overflow-auto{overflow:auto}.rf-overflow-hidden{overflow:hidden}.rf-overflow-visible{overflow:visible}.rf-overflow-x-auto{overflow-x:auto}.rf-overflow-y-auto{overflow-y:auto}.rf-whitespace-nowrap{white-space:nowrap}.rf-whitespace-pre-wrap{white-space:pre-wrap}.rf-rounded{border-radius:.25rem}.rf-rounded-full{border-radius:9999px}.rf-rounded-lg{border-radius:var(--radius)}.rf-rounded-md{border-radius:calc(var(--radius) - 2px)}.rf-rounded-sm{border-radius:calc(var(--radius) - 4px)}.rf-border{border-width:1px}.rf-border-b{border-bottom-width:1px}.rf-border-green-200{--tw-border-opacity:1;border-color:rgb(187 247 208/var(--tw-border-opacity,1))}.rf-border-neutral-200{--tw-border-opacity:1;border-color:rgb(229 229 229/var(--tw-border-opacity,1))}.rf-border-red-200{--tw-border-opacity:1;border-color:rgb(254 202 202/var(--tw-border-opacity,1))}.rf-border-zinc-200{--tw-border-opacity:1;border-color:rgb(228 228 231/var(--tw-border-opacity,1))}.rf-bg-black{--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity,1))}.rf-bg-blue-500{--tw-bg-opacity:1;background-color:rgb(59 130 246/var(--tw-bg-opacity,1))}.rf-bg-blue-600{--tw-bg-opacity:1;background-color:rgb(37 99 235/var(--tw-bg-opacity,1))}.rf-bg-gray-100{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity,1))}.rf-bg-gray-500{--tw-bg-opacity:1;background-color:rgb(107 114 128/var(--tw-bg-opacity,1))}.rf-bg-gray-800{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity,1))}.rf-bg-gray-900{--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity,1))}.rf-bg-green-50{--tw-bg-opacity:1;background-color:rgb(240 253 244/var(--tw-bg-opacity,1))}.rf-bg-neutral-100{--tw-bg-opacity:1;background-color:rgb(245 245 245/var(--tw-bg-opacity,1))}.rf-bg-neutral-50{--tw-bg-opacity:1;background-color:rgb(250 250 250/var(--tw-bg-opacity,1))}.rf-bg-neutral-800{--tw-bg-opacity:1;background-color:rgb(38 38 38/var(--tw-bg-opacity,1))}.rf-bg-neutral-900{--tw-bg-opacity:1;background-color:rgb(23 23 23/var(--tw-bg-opacity,1))}.rf-bg-orange-400{--tw-bg-opacity:1;background-color:rgb(251 146 60/var(--tw-bg-opacity,1))}.rf-bg-red-50{--tw-bg-opacity:1;background-color:rgb(254 242 242/var(--tw-bg-opacity,1))}.rf-bg-red-500{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity,1))}.rf-bg-red-900{--tw-bg-opacity:1;background-color:rgb(127 29 29/var(--tw-bg-opacity,1))}.rf-bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.rf-bg-zinc-100{--tw-bg-opacity:1;background-color:rgb(244 244 245/var(--tw-bg-opacity,1))}.rf-bg-zinc-50{--tw-bg-opacity:1;background-color:rgb(250 250 250/var(--tw-bg-opacity,1))}.rf-bg-zinc-800{--tw-bg-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity,1))}.rf-bg-zinc-900{--tw-bg-opacity:1;background-color:rgb(24 24 27/var(--tw-bg-opacity,1))}.rf-bg-opacity-50{--tw-bg-opacity:0.5}.rf-fill-current{fill:currentColor}.rf-p-0{padding:0}.rf-p-0\\.5{padding:.125rem}.rf-p-1{padding:.25rem}.rf-p-2{padding:.5rem}.rf-p-3{padding:.75rem}.rf-p-4{padding:1rem}.rf-p-5{padding:1.25rem}.rf-p-6{padding:1.5rem}.rf-px-1{padding-left:.25rem;padding-right:.25rem}.rf-px-1\\.5{padding-left:.375rem;padding-right:.375rem}.rf-px-2{padding-left:.5rem;padding-right:.5rem}.rf-px-3{padding-left:.75rem;padding-right:.75rem}.rf-px-4{padding-left:1rem;padding-right:1rem}.rf-px-8{padding-left:2rem;padding-right:2rem}.rf-py-1{padding-bottom:.25rem;padding-top:.25rem}.rf-py-1\\.5{padding-bottom:.375rem;padding-top:.375rem}.rf-py-10{padding-bottom:2.5rem;padding-top:2.5rem}.rf-py-2{padding-bottom:.5rem;padding-top:.5rem}.rf-pb-4{padding-bottom:1rem}.rf-pl-8{padding-left:2rem}.rf-pr-2{padding-right:.5rem}.rf-text-left{text-align:left}.rf-text-center{text-align:center}.rf-font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.rf-text-2xl{font-size:1.5rem;line-height:2rem}.rf-text-\\[8px\\]{font-size:8px}.rf-text-lg{font-size:1.125rem;line-height:1.75rem}.rf-text-sm{font-size:.875rem;line-height:1.25rem}.rf-text-xs{font-size:.75rem;line-height:1rem}.rf-font-bold{font-weight:700}.rf-font-medium{font-weight:500}.rf-font-semibold{font-weight:600}.rf-capitalize{text-transform:capitalize}.rf-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)}.rf-leading-5{line-height:1.25rem}.rf-tracking-widest{letter-spacing:.1em}.rf-text-blue-500{--tw-text-opacity:1;color:rgb(59 130 246/var(--tw-text-opacity,1))}.rf-text-blue-600{--tw-text-opacity:1;color:rgb(37 99 235/var(--tw-text-opacity,1))}.rf-text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.rf-text-gray-600{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity,1))}.rf-text-gray-700{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity,1))}.rf-text-green-500{--tw-text-opacity:1;color:rgb(34 197 94/var(--tw-text-opacity,1))}.rf-text-green-700{--tw-text-opacity:1;color:rgb(21 128 61/var(--tw-text-opacity,1))}.rf-text-green-800{--tw-text-opacity:1;color:rgb(22 101 52/var(--tw-text-opacity,1))}.rf-text-neutral-50{--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity,1))}.rf-text-neutral-500{--tw-text-opacity:1;color:rgb(115 115 115/var(--tw-text-opacity,1))}.rf-text-neutral-900{--tw-text-opacity:1;color:rgb(23 23 23/var(--tw-text-opacity,1))}.rf-text-neutral-950{--tw-text-opacity:1;color:rgb(10 10 10/var(--tw-text-opacity,1))}.rf-text-red-600{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity,1))}.rf-text-red-700{--tw-text-opacity:1;color:rgb(185 28 28/var(--tw-text-opacity,1))}.rf-text-red-800{--tw-text-opacity:1;color:rgb(153 27 27/var(--tw-text-opacity,1))}.rf-text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.rf-text-zinc-50{--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity,1))}.rf-text-zinc-500{--tw-text-opacity:1;color:rgb(113 113 122/var(--tw-text-opacity,1))}.rf-text-zinc-900{--tw-text-opacity:1;color:rgb(24 24 27/var(--tw-text-opacity,1))}.rf-text-zinc-950{--tw-text-opacity:1;color:rgb(9 9 11/var(--tw-text-opacity,1))}.rf-underline{text-decoration-line:underline}.rf-underline-offset-4{text-underline-offset:4px}.rf-opacity-0{opacity:0}.rf-opacity-50{opacity:.5}.rf-opacity-60{opacity:.6}.rf-shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.rf-shadow,.rf-shadow-lg{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.rf-shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.rf-shadow-md{--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color)}.rf-shadow-md,.rf-shadow-sm{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.rf-shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.rf-outline-none{outline:2px solid transparent;outline-offset:2px}.rf-ring-offset-white{--tw-ring-offset-color:#fff}.rf-transition-all{transition-duration:.15s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.rf-transition-colors{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1)}.rf-transition-opacity{transition-duration:.15s;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1)}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0) scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1)) rotate(var(--tw-enter-rotate,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0) scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1)) rotate(var(--tw-exit-rotate,0))}}.hover\\:rf-bg-red-500\\/90:hover{background-color:rgba(239,68,68,.9)}.hover\\:rf-bg-zinc-100:hover{--tw-bg-opacity:1;background-color:rgb(244 244 245/var(--tw-bg-opacity,1))}.hover\\:rf-bg-zinc-100\\/80:hover{background-color:hsla(240,5%,96%,.8)}.hover\\:rf-bg-zinc-900\\/90:hover{background-color:rgba(24,24,27,.9)}.hover\\:rf-text-zinc-900:hover{--tw-text-opacity:1;color:rgb(24 24 27/var(--tw-text-opacity,1))}.hover\\:rf-underline:hover{text-decoration-line:underline}.focus\\:rf-bg-zinc-100:focus{--tw-bg-opacity:1;background-color:rgb(244 244 245/var(--tw-bg-opacity,1))}.focus\\:rf-text-zinc-900:focus{--tw-text-opacity:1;color:rgb(24 24 27/var(--tw-text-opacity,1))}.focus-visible\\:rf-outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.focus-visible\\:rf-ring-1:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-visible\\:rf-ring-2:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-visible\\:rf-ring-zinc-950:focus-visible{--tw-ring-opacity:1;--tw-ring-color:rgb(9 9 11/var(--tw-ring-opacity,1))}.focus-visible\\:rf-ring-offset-2:focus-visible{--tw-ring-offset-width:2px}.disabled\\:rf-pointer-events-none:disabled{pointer-events:none}.disabled\\:rf-opacity-50:disabled{opacity:.5}.data-\\[disabled\\]\\:rf-pointer-events-none[data-disabled]{pointer-events:none}.data-\\[state\\=active\\]\\:rf-bg-white[data-state=active]{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.data-\\[state\\=open\\]\\:rf-bg-zinc-100[data-state=open]{--tw-bg-opacity:1;background-color:rgb(244 244 245/var(--tw-bg-opacity,1))}.data-\\[state\\=active\\]\\:rf-text-zinc-950[data-state=active]{--tw-text-opacity:1;color:rgb(9 9 11/var(--tw-text-opacity,1))}.data-\\[disabled\\]\\:rf-opacity-50[data-disabled]{opacity:.5}.data-\\[state\\=active\\]\\:rf-shadow[data-state=active]{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.data-\\[state\\=open\\]\\:rf-animate-in[data-state=open]{animation-duration:.15s;animation-name:enter;--tw-enter-opacity:initial;--tw-enter-scale:initial;--tw-enter-rotate:initial;--tw-enter-translate-x:initial;--tw-enter-translate-y:initial}.data-\\[state\\=closed\\]\\:rf-animate-out[data-state=closed]{animation-duration:.15s;animation-name:exit;--tw-exit-opacity:initial;--tw-exit-scale:initial;--tw-exit-rotate:initial;--tw-exit-translate-x:initial;--tw-exit-translate-y:initial}.data-\\[state\\=closed\\]\\:rf-fade-out-0[data-state=closed]{--tw-exit-opacity:0}.data-\\[state\\=open\\]\\:rf-fade-in-0[data-state=open]{--tw-enter-opacity:0}.data-\\[state\\=closed\\]\\:rf-zoom-out-95[data-state=closed]{--tw-exit-scale:.95}.data-\\[state\\=open\\]\\:rf-zoom-in-95[data-state=open]{--tw-enter-scale:.95}.data-\\[side\\=bottom\\]\\:rf-slide-in-from-top-2[data-side=bottom]{--tw-enter-translate-y:-0.5rem}.data-\\[side\\=left\\]\\:rf-slide-in-from-right-2[data-side=left]{--tw-enter-translate-x:0.5rem}.data-\\[side\\=right\\]\\:rf-slide-in-from-left-2[data-side=right]{--tw-enter-translate-x:-0.5rem}.data-\\[side\\=top\\]\\:rf-slide-in-from-bottom-2[data-side=top]{--tw-enter-translate-y:0.5rem}.dark\\:rf-border-zinc-800:is(.rf-dark *){--tw-border-opacity:1;border-color:rgb(39 39 42/var(--tw-border-opacity,1))}.dark\\:rf-bg-red-900:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(127 29 29/var(--tw-bg-opacity,1))}.dark\\:rf-bg-zinc-50:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(250 250 250/var(--tw-bg-opacity,1))}.dark\\:rf-bg-zinc-800:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity,1))}.dark\\:rf-bg-zinc-950:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(9 9 11/var(--tw-bg-opacity,1))}.dark\\:rf-text-zinc-400:is(.rf-dark *){--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity,1))}.dark\\:rf-text-zinc-50:is(.rf-dark *){--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity,1))}.dark\\:rf-text-zinc-900:is(.rf-dark *){--tw-text-opacity:1;color:rgb(24 24 27/var(--tw-text-opacity,1))}.dark\\:rf-ring-offset-zinc-950:is(.rf-dark *){--tw-ring-offset-color:#09090b}.dark\\:hover\\:rf-bg-red-900\\/90:hover:is(.rf-dark *){background-color:rgba(127,29,29,.9)}.dark\\:hover\\:rf-bg-zinc-50\\/90:hover:is(.rf-dark *){background-color:hsla(0,0%,98%,.9)}.dark\\:hover\\:rf-bg-zinc-800:hover:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity,1))}.dark\\:hover\\:rf-bg-zinc-800\\/80:hover:is(.rf-dark *){background-color:rgba(39,39,42,.8)}.dark\\:hover\\:rf-text-zinc-50:hover:is(.rf-dark *){--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity,1))}.dark\\:focus\\:rf-bg-zinc-800:focus:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity,1))}.dark\\:focus\\:rf-text-zinc-50:focus:is(.rf-dark *){--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity,1))}.dark\\:focus-visible\\:rf-ring-zinc-300:focus-visible:is(.rf-dark *){--tw-ring-opacity:1;--tw-ring-color:rgb(212 212 216/var(--tw-ring-opacity,1))}.dark\\:data-\\[state\\=active\\]\\:rf-bg-zinc-950[data-state=active]:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(9 9 11/var(--tw-bg-opacity,1))}.dark\\:data-\\[state\\=open\\]\\:rf-bg-zinc-800[data-state=open]:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity,1))}.dark\\:data-\\[state\\=active\\]\\:rf-text-zinc-50[data-state=active]:is(.rf-dark *){--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity,1))}.\\[\\&\\>svg\\]\\:rf-size-4>svg{height:1rem;width:1rem}.\\[\\&\\>svg\\]\\:rf-shrink-0>svg{flex-shrink:0}.\\[\\&_svg\\]\\:rf-pointer-events-none svg{pointer-events:none}.\\[\\&_svg\\]\\:rf-size-4 svg{height:1rem;width:1rem}.\\[\\&_svg\\]\\:rf-shrink-0 svg{flex-shrink:0}';
|
|
735
735
|
|
|
736
736
|
// lib/hooks/use-styles.ts
|
|
737
737
|
var useStyles = () => {
|
|
@@ -779,10 +779,10 @@ var RenderTimingsBar = ({
|
|
|
779
779
|
width: `${width}%`,
|
|
780
780
|
backgroundColor: getPhaseColor(index)
|
|
781
781
|
},
|
|
782
|
-
children: /* @__PURE__ */ jsxs9("div", { className: "rf-opacity-0 rf-group-hover:opacity-100 rf-transition-opacity rf-absolute rf-bottom-full rf-left-1/2 rf-transform rf
|
|
782
|
+
children: /* @__PURE__ */ jsxs9("div", { className: "rf-opacity-0 rf-group-hover:rf-opacity-100 rf-transition-opacity rf-absolute rf-bottom-full rf-left-1/2 rf-transform -rf-translate-x-1/2 rf-mb-2 rf-px-2 rf-py-1 rf-text-xs rf-whitespace-nowrap rf-rounded rf-bg-gray-900 rf-text-white rf-pointer-events-none", children: [
|
|
783
783
|
phase,
|
|
784
784
|
": ",
|
|
785
|
-
time,
|
|
785
|
+
time.toFixed(1),
|
|
786
786
|
"ms"
|
|
787
787
|
] })
|
|
788
788
|
},
|
package/dist/preview.js
CHANGED
package/dist/runner.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
CircuitJsonPreview
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-42YSJK7J.js";
|
|
4
4
|
|
|
5
5
|
// lib/components/RunFrame.tsx
|
|
6
6
|
import { createCircuitWebWorker } from "@tscircuit/eval-webworker";
|
|
@@ -276,7 +276,7 @@ var RunFrame = (props) => {
|
|
|
276
276
|
async function runWorker() {
|
|
277
277
|
debug3("running render worker");
|
|
278
278
|
setError(null);
|
|
279
|
-
const renderLog2 = {};
|
|
279
|
+
const renderLog2 = { progress: 0 };
|
|
280
280
|
const worker = globalThis.runFrameWorker ?? await createCircuitWebWorker({
|
|
281
281
|
webWorkerUrl: evalWebWorkerBlobUrl,
|
|
282
282
|
verbose: true
|
|
@@ -304,7 +304,12 @@ var RunFrame = (props) => {
|
|
|
304
304
|
const hasProcessedEnoughToEstimateProgress = renderLog2.eventsProcessed > renderIds.size * 2;
|
|
305
305
|
const estProgressLinear = renderLog2.eventsProcessed / estTotalRenderEvents;
|
|
306
306
|
const estProgress = 1 - Math.exp(-estProgressLinear * 3);
|
|
307
|
-
renderLog2.progress = hasProcessedEnoughToEstimateProgress ? estProgress :
|
|
307
|
+
renderLog2.progress = hasProcessedEnoughToEstimateProgress ? estProgress : (
|
|
308
|
+
// Until we have enough events to estimate progress, we use the 0-5%
|
|
309
|
+
// range and assume that there are ~500 renderIds, this will usually
|
|
310
|
+
// be an underestimate.
|
|
311
|
+
(1 - Math.exp(-(renderLog2.eventsProcessed ?? 0) / 1e3)) * 0.05
|
|
312
|
+
);
|
|
308
313
|
if (activeTab === "render_log") {
|
|
309
314
|
renderLog2.renderEvents = renderLog2.renderEvents ?? [];
|
|
310
315
|
event.createdAt = Date.now();
|
|
@@ -315,8 +320,8 @@ var RunFrame = (props) => {
|
|
|
315
320
|
);
|
|
316
321
|
lastRenderLogSet = Date.now();
|
|
317
322
|
}
|
|
318
|
-
setRenderLog({ ...renderLog2 });
|
|
319
323
|
}
|
|
324
|
+
setRenderLog({ ...renderLog2 });
|
|
320
325
|
});
|
|
321
326
|
const evalResult = await worker.executeWithFsMap({
|
|
322
327
|
entrypoint: props.entrypoint,
|
package/dist/standalone.min.js
CHANGED
|
@@ -22687,7 +22687,7 @@ void main() {
|
|
|
22687
22687
|
`)},getCurrentUseCounter=function(){var lV=parseInt(document.body.getAttribute(lockAttribute)||"0",10);return isFinite(lV)?lV:0},useLockAttribute=function(){reactExports.useEffect(function(){return document.body.setAttribute(lockAttribute,(getCurrentUseCounter()+1).toString()),function(){var lV=getCurrentUseCounter()-1;lV<=0?document.body.removeAttribute(lockAttribute):document.body.setAttribute(lockAttribute,lV.toString())}},[])},RemoveScrollBar=function(lV){var J=lV.noRelative,VV=lV.noImportant,RV=lV.gapMode,UV=RV===void 0?"margin":RV;useLockAttribute();var ZV=reactExports.useMemo(function(){return getGapWidth(UV)},[UV]);return reactExports.createElement(Style,{styles:getStyles(ZV,!J,UV,VV?"":"!important")})};function makeStyleTag(){if(!document)return null;var lV=document.createElement("style");lV.type="text/css";var J=getNonce();return J&&lV.setAttribute("nonce",J),lV}function injectStyles(lV,J){lV.styleSheet?lV.styleSheet.cssText=J:lV.appendChild(document.createTextNode(J))}function insertStyleTag(lV){var J=document.head||document.getElementsByTagName("head")[0];J.appendChild(lV)}var stylesheetSingleton=function(){var lV=0,J=null;return{add:function(VV){lV==0&&(J=makeStyleTag())&&(injectStyles(J,VV),insertStyleTag(J)),lV++},remove:function(){lV--,!lV&&J&&(J.parentNode&&J.parentNode.removeChild(J),J=null)}}},styleHookSingleton=function(){var lV=stylesheetSingleton();return function(J,VV){reactExports.useEffect(function(){return lV.add(J),function(){lV.remove()}},[J&&VV])}},styleSingleton=function(){var lV=styleHookSingleton(),J=function(VV){var RV=VV.styles,UV=VV.dynamic;return lV(RV,UV),null};return J},passiveSupported=!1;if(typeof window<"u")try{var options=Object.defineProperty({},"passive",{get:function(){return passiveSupported=!0,!0}});window.addEventListener("test",options,options),window.removeEventListener("test",options,options)}catch{passiveSupported=!1}var nonPassive=passiveSupported?{passive:!1}:!1,alwaysContainsScroll=function(lV){return lV.tagName==="TEXTAREA"},elementCanBeScrolled=function(lV,J){if(!(lV instanceof Element))return!1;var VV=window.getComputedStyle(lV);return VV[J]!=="hidden"&&!(VV.overflowY===VV.overflowX&&!alwaysContainsScroll(lV)&&VV[J]==="visible")},elementCouldBeVScrolled=function(lV){return elementCanBeScrolled(lV,"overflowY")},elementCouldBeHScrolled=function(lV){return elementCanBeScrolled(lV,"overflowX")},locationCouldBeScrolled=function(lV,J){var VV=J.ownerDocument,RV=J;do{typeof ShadowRoot<"u"&&RV instanceof ShadowRoot&&(RV=RV.host);var UV=elementCouldBeScrolled(lV,RV);if(UV){var ZV=getScrollVariables(lV,RV),WV=ZV[1],IV=ZV[2];if(WV>IV)return!0}RV=RV.parentNode}while(RV&&RV!==VV.body);return!1},getVScrollVariables=function(lV){var J=lV.scrollTop,VV=lV.scrollHeight,RV=lV.clientHeight;return[J,VV,RV]},getHScrollVariables=function(lV){var J=lV.scrollLeft,VV=lV.scrollWidth,RV=lV.clientWidth;return[J,VV,RV]},elementCouldBeScrolled=function(lV,J){return lV==="v"?elementCouldBeVScrolled(J):elementCouldBeHScrolled(J)},getScrollVariables=function(lV,J){return lV==="v"?getVScrollVariables(J):getHScrollVariables(J)},getDirectionFactor=function(lV,J){return lV==="h"&&J==="rtl"?-1:1},handleScroll=function(lV,J,VV,RV,UV){var ZV=getDirectionFactor(lV,window.getComputedStyle(J).direction),WV=ZV*RV,IV=VV.target,dV=J.contains(IV),CV=!1,FV=WV>0,NV=0,gV=0;do{var JV=getScrollVariables(lV,IV),eV=JV[0],nV=JV[1],aV=JV[2],GV=nV-aV-ZV*eV;(eV||GV)&&elementCouldBeScrolled(lV,IV)&&(NV+=GV,gV+=eV),IV instanceof ShadowRoot?IV=IV.host:IV=IV.parentNode}while(!dV&&IV!==document.body||dV&&(J.contains(IV)||J===IV));return(FV&&(Math.abs(NV)<1||!UV)||!FV&&(Math.abs(gV)<1||!UV))&&(CV=!0),CV},getTouchXY=function(lV){return"changedTouches"in lV?[lV.changedTouches[0].clientX,lV.changedTouches[0].clientY]:[0,0]},getDeltaXY=function(lV){return[lV.deltaX,lV.deltaY]},extractRef=function(lV){return lV&&"current"in lV?lV.current:lV},deltaCompare=function(lV,J){return lV[0]===J[0]&&lV[1]===J[1]},generateStyle=function(lV){return`
|
|
22688
22688
|
.block-interactivity-`.concat(lV,` {pointer-events: none;}
|
|
22689
22689
|
.allow-interactivity-`).concat(lV,` {pointer-events: all;}
|
|
22690
|
-
`)},idCounter=0,lockStack=[];function RemoveScrollSideCar(lV){var J=reactExports.useRef([]),VV=reactExports.useRef([0,0]),RV=reactExports.useRef(),UV=reactExports.useState(idCounter++)[0],ZV=reactExports.useState(styleSingleton)[0],WV=reactExports.useRef(lV);reactExports.useEffect(function(){WV.current=lV},[lV]),reactExports.useEffect(function(){if(lV.inert){document.body.classList.add("block-interactivity-".concat(UV));var nV=__spreadArray([lV.lockRef.current],(lV.shards||[]).map(extractRef),!0).filter(Boolean);return nV.forEach(function(aV){return aV.classList.add("allow-interactivity-".concat(UV))}),function(){document.body.classList.remove("block-interactivity-".concat(UV)),nV.forEach(function(aV){return aV.classList.remove("allow-interactivity-".concat(UV))})}}},[lV.inert,lV.lockRef.current,lV.shards]);var IV=reactExports.useCallback(function(nV,aV){if("touches"in nV&&nV.touches.length===2||nV.type==="wheel"&&nV.ctrlKey)return!WV.current.allowPinchZoom;var GV=getTouchXY(nV),YV=VV.current,AV="deltaX"in nV?nV.deltaX:YV[0]-GV[0],kV="deltaY"in nV?nV.deltaY:YV[1]-GV[1],QV,bV=nV.target,iV=Math.abs(AV)>Math.abs(kV)?"h":"v";if("touches"in nV&&iV==="h"&&bV.type==="range")return!1;var HV=locationCouldBeScrolled(iV,bV);if(!HV)return!0;if(HV?QV=iV:(QV=iV==="v"?"h":"v",HV=locationCouldBeScrolled(iV,bV)),!HV)return!1;if(!RV.current&&"changedTouches"in nV&&(AV||kV)&&(RV.current=QV),!QV)return!0;var DV=RV.current||QV;return handleScroll(DV,aV,nV,DV==="h"?AV:kV,!0)},[]),dV=reactExports.useCallback(function(nV){var aV=nV;if(!(!lockStack.length||lockStack[lockStack.length-1]!==ZV)){var GV="deltaY"in aV?getDeltaXY(aV):getTouchXY(aV),YV=J.current.filter(function(QV){return QV.name===aV.type&&(QV.target===aV.target||aV.target===QV.shadowParent)&&deltaCompare(QV.delta,GV)})[0];if(YV&&YV.should){aV.cancelable&&aV.preventDefault();return}if(!YV){var AV=(WV.current.shards||[]).map(extractRef).filter(Boolean).filter(function(QV){return QV.contains(aV.target)}),kV=AV.length>0?IV(aV,AV[0]):!WV.current.noIsolation;kV&&aV.cancelable&&aV.preventDefault()}}},[]),CV=reactExports.useCallback(function(nV,aV,GV,YV){var AV={name:nV,delta:aV,target:GV,should:YV,shadowParent:getOutermostShadowParent(GV)};J.current.push(AV),setTimeout(function(){J.current=J.current.filter(function(kV){return kV!==AV})},1)},[]),FV=reactExports.useCallback(function(nV){VV.current=getTouchXY(nV),RV.current=void 0},[]),NV=reactExports.useCallback(function(nV){CV(nV.type,getDeltaXY(nV),nV.target,IV(nV,lV.lockRef.current))},[]),gV=reactExports.useCallback(function(nV){CV(nV.type,getTouchXY(nV),nV.target,IV(nV,lV.lockRef.current))},[]);reactExports.useEffect(function(){return lockStack.push(ZV),lV.setCallbacks({onScrollCapture:NV,onWheelCapture:NV,onTouchMoveCapture:gV}),document.addEventListener("wheel",dV,nonPassive),document.addEventListener("touchmove",dV,nonPassive),document.addEventListener("touchstart",FV,nonPassive),function(){lockStack=lockStack.filter(function(nV){return nV!==ZV}),document.removeEventListener("wheel",dV,nonPassive),document.removeEventListener("touchmove",dV,nonPassive),document.removeEventListener("touchstart",FV,nonPassive)}},[]);var JV=lV.removeScrollBar,eV=lV.inert;return reactExports.createElement(reactExports.Fragment,null,eV?reactExports.createElement(ZV,{styles:generateStyle(UV)}):null,JV?reactExports.createElement(RemoveScrollBar,{gapMode:lV.gapMode}):null)}function getOutermostShadowParent(lV){for(var J=null;lV!==null;)lV instanceof ShadowRoot&&(J=lV.host,lV=lV.host),lV=lV.parentNode;return J}const SideCar=exportSidecar(effectCar,RemoveScrollSideCar);var ReactRemoveScroll=reactExports.forwardRef(function(lV,J){return reactExports.createElement(RemoveScroll,__assign({},lV,{ref:J,sideCar:SideCar}))});ReactRemoveScroll.classNames=RemoveScroll.classNames;var SELECTION_KEYS=["Enter"," "],FIRST_KEYS=["ArrowDown","PageUp","Home"],LAST_KEYS=["ArrowUp","PageDown","End"],FIRST_LAST_KEYS=[...FIRST_KEYS,...LAST_KEYS],SUB_OPEN_KEYS={ltr:[...SELECTION_KEYS,"ArrowRight"],rtl:[...SELECTION_KEYS,"ArrowLeft"]},SUB_CLOSE_KEYS={ltr:["ArrowLeft"],rtl:["ArrowRight"]},MENU_NAME="Menu",[Collection,useCollection,createCollectionScope]=createCollection(MENU_NAME),[createMenuContext,createMenuScope]=createContextScope(MENU_NAME,[createCollectionScope,createPopperScope,createRovingFocusGroupScope]),usePopperScope=createPopperScope(),useRovingFocusGroupScope=createRovingFocusGroupScope(),[MenuProvider,useMenuContext]=createMenuContext(MENU_NAME),[MenuRootProvider,useMenuRootContext]=createMenuContext(MENU_NAME),Menu=lV=>{const{__scopeMenu:J,open:VV=!1,children:RV,dir:UV,onOpenChange:ZV,modal:WV=!0}=lV,IV=usePopperScope(J),[dV,CV]=reactExports.useState(null),FV=reactExports.useRef(!1),NV=useCallbackRef$1(ZV),gV=useDirection(UV);return reactExports.useEffect(()=>{const JV=()=>{FV.current=!0,document.addEventListener("pointerdown",eV,{capture:!0,once:!0}),document.addEventListener("pointermove",eV,{capture:!0,once:!0})},eV=()=>FV.current=!1;return document.addEventListener("keydown",JV,{capture:!0}),()=>{document.removeEventListener("keydown",JV,{capture:!0}),document.removeEventListener("pointerdown",eV,{capture:!0}),document.removeEventListener("pointermove",eV,{capture:!0})}},[]),jsxRuntimeExports.jsx(Root2$1,{...IV,children:jsxRuntimeExports.jsx(MenuProvider,{scope:J,open:VV,onOpenChange:NV,content:dV,onContentChange:CV,children:jsxRuntimeExports.jsx(MenuRootProvider,{scope:J,onClose:reactExports.useCallback(()=>NV(!1),[NV]),isUsingKeyboardRef:FV,dir:gV,modal:WV,children:RV})})})};Menu.displayName=MENU_NAME;var ANCHOR_NAME="MenuAnchor",MenuAnchor=reactExports.forwardRef((lV,J)=>{const{__scopeMenu:VV,...RV}=lV,UV=usePopperScope(VV);return jsxRuntimeExports.jsx(Anchor,{...UV,...RV,ref:J})});MenuAnchor.displayName=ANCHOR_NAME;var PORTAL_NAME$1="MenuPortal",[PortalProvider,usePortalContext]=createMenuContext(PORTAL_NAME$1,{forceMount:void 0}),MenuPortal=lV=>{const{__scopeMenu:J,forceMount:VV,children:RV,container:UV}=lV,ZV=useMenuContext(PORTAL_NAME$1,J);return jsxRuntimeExports.jsx(PortalProvider,{scope:J,forceMount:VV,children:jsxRuntimeExports.jsx(Presence,{present:VV||ZV.open,children:jsxRuntimeExports.jsx(Portal$1,{asChild:!0,container:UV,children:RV})})})};MenuPortal.displayName=PORTAL_NAME$1;var CONTENT_NAME$1="MenuContent",[MenuContentProvider,useMenuContentContext]=createMenuContext(CONTENT_NAME$1),MenuContent=reactExports.forwardRef((lV,J)=>{const VV=usePortalContext(CONTENT_NAME$1,lV.__scopeMenu),{forceMount:RV=VV.forceMount,...UV}=lV,ZV=useMenuContext(CONTENT_NAME$1,lV.__scopeMenu),WV=useMenuRootContext(CONTENT_NAME$1,lV.__scopeMenu);return jsxRuntimeExports.jsx(Collection.Provider,{scope:lV.__scopeMenu,children:jsxRuntimeExports.jsx(Presence,{present:RV||ZV.open,children:jsxRuntimeExports.jsx(Collection.Slot,{scope:lV.__scopeMenu,children:WV.modal?jsxRuntimeExports.jsx(MenuRootContentModal,{...UV,ref:J}):jsxRuntimeExports.jsx(MenuRootContentNonModal,{...UV,ref:J})})})})}),MenuRootContentModal=reactExports.forwardRef((lV,J)=>{const VV=useMenuContext(CONTENT_NAME$1,lV.__scopeMenu),RV=reactExports.useRef(null),UV=useComposedRefs(J,RV);return reactExports.useEffect(()=>{const ZV=RV.current;if(ZV)return hideOthers(ZV)},[]),jsxRuntimeExports.jsx(MenuContentImpl,{...lV,ref:UV,trapFocus:VV.open,disableOutsidePointerEvents:VV.open,disableOutsideScroll:!0,onFocusOutside:composeEventHandlers(lV.onFocusOutside,ZV=>ZV.preventDefault(),{checkForDefaultPrevented:!1}),onDismiss:()=>VV.onOpenChange(!1)})}),MenuRootContentNonModal=reactExports.forwardRef((lV,J)=>{const VV=useMenuContext(CONTENT_NAME$1,lV.__scopeMenu);return jsxRuntimeExports.jsx(MenuContentImpl,{...lV,ref:J,trapFocus:!1,disableOutsidePointerEvents:!1,disableOutsideScroll:!1,onDismiss:()=>VV.onOpenChange(!1)})}),MenuContentImpl=reactExports.forwardRef((lV,J)=>{const{__scopeMenu:VV,loop:RV=!1,trapFocus:UV,onOpenAutoFocus:ZV,onCloseAutoFocus:WV,disableOutsidePointerEvents:IV,onEntryFocus:dV,onEscapeKeyDown:CV,onPointerDownOutside:FV,onFocusOutside:NV,onInteractOutside:gV,onDismiss:JV,disableOutsideScroll:eV,...nV}=lV,aV=useMenuContext(CONTENT_NAME$1,VV),GV=useMenuRootContext(CONTENT_NAME$1,VV),YV=usePopperScope(VV),AV=useRovingFocusGroupScope(VV),kV=useCollection(VV),[QV,bV]=reactExports.useState(null),iV=reactExports.useRef(null),HV=useComposedRefs(J,iV,aV.onContentChange),DV=reactExports.useRef(0),wV=reactExports.useRef(""),KV=reactExports.useRef(0),LV=reactExports.useRef(null),Ul=reactExports.useRef("right"),el=reactExports.useRef(0),hl=eV?ReactRemoveScroll:reactExports.Fragment,Cl=eV?{as:Slot,allowPinchZoom:!0}:void 0,Vl=Wl=>{var Ll,ZR;const Jl=wV.current+Wl,Fl=kV().filter(yl=>!yl.disabled),al=document.activeElement,zl=(Ll=Fl.find(yl=>yl.ref.current===al))==null?void 0:Ll.textValue,pl=Fl.map(yl=>yl.textValue),Ol=getNextMatch(pl,Jl,zl),Pl=(ZR=Fl.find(yl=>yl.textValue===Ol))==null?void 0:ZR.ref.current;(function yl(il){wV.current=il,window.clearTimeout(DV.current),il!==""&&(DV.current=window.setTimeout(()=>yl(""),1e3))})(Jl),Pl&&setTimeout(()=>Pl.focus())};reactExports.useEffect(()=>()=>window.clearTimeout(DV.current),[]),useFocusGuards();const PV=reactExports.useCallback(Wl=>{var Fl,al;return Ul.current===((Fl=LV.current)==null?void 0:Fl.side)&&isPointerInGraceArea(Wl,(al=LV.current)==null?void 0:al.area)},[]);return jsxRuntimeExports.jsx(MenuContentProvider,{scope:VV,searchRef:wV,onItemEnter:reactExports.useCallback(Wl=>{PV(Wl)&&Wl.preventDefault()},[PV]),onItemLeave:reactExports.useCallback(Wl=>{var Jl;PV(Wl)||((Jl=iV.current)==null||Jl.focus(),bV(null))},[PV]),onTriggerLeave:reactExports.useCallback(Wl=>{PV(Wl)&&Wl.preventDefault()},[PV]),pointerGraceTimerRef:KV,onPointerGraceIntentChange:reactExports.useCallback(Wl=>{LV.current=Wl},[]),children:jsxRuntimeExports.jsx(hl,{...Cl,children:jsxRuntimeExports.jsx(FocusScope,{asChild:!0,trapped:UV,onMountAutoFocus:composeEventHandlers(ZV,Wl=>{var Jl;Wl.preventDefault(),(Jl=iV.current)==null||Jl.focus({preventScroll:!0})}),onUnmountAutoFocus:WV,children:jsxRuntimeExports.jsx(DismissableLayer,{asChild:!0,disableOutsidePointerEvents:IV,onEscapeKeyDown:CV,onPointerDownOutside:FV,onFocusOutside:NV,onInteractOutside:gV,onDismiss:JV,children:jsxRuntimeExports.jsx(Root$1,{asChild:!0,...AV,dir:GV.dir,orientation:"vertical",loop:RV,currentTabStopId:QV,onCurrentTabStopIdChange:bV,onEntryFocus:composeEventHandlers(dV,Wl=>{GV.isUsingKeyboardRef.current||Wl.preventDefault()}),preventScrollOnEntryFocus:!0,children:jsxRuntimeExports.jsx(Content,{role:"menu","aria-orientation":"vertical","data-state":getOpenState(aV.open),"data-radix-menu-content":"",dir:GV.dir,...YV,...nV,ref:HV,style:{outline:"none",...nV.style},onKeyDown:composeEventHandlers(nV.onKeyDown,Wl=>{const Fl=Wl.target.closest("[data-radix-menu-content]")===Wl.currentTarget,al=Wl.ctrlKey||Wl.altKey||Wl.metaKey,zl=Wl.key.length===1;Fl&&(Wl.key==="Tab"&&Wl.preventDefault(),!al&&zl&&Vl(Wl.key));const pl=iV.current;if(Wl.target!==pl||!FIRST_LAST_KEYS.includes(Wl.key))return;Wl.preventDefault();const Pl=kV().filter(Ll=>!Ll.disabled).map(Ll=>Ll.ref.current);LAST_KEYS.includes(Wl.key)&&Pl.reverse(),focusFirst(Pl)}),onBlur:composeEventHandlers(lV.onBlur,Wl=>{Wl.currentTarget.contains(Wl.target)||(window.clearTimeout(DV.current),wV.current="")}),onPointerMove:composeEventHandlers(lV.onPointerMove,whenMouse(Wl=>{const Jl=Wl.target,Fl=el.current!==Wl.clientX;if(Wl.currentTarget.contains(Jl)&&Fl){const al=Wl.clientX>el.current?"right":"left";Ul.current=al,el.current=Wl.clientX}}))})})})})})})});MenuContent.displayName=CONTENT_NAME$1;var GROUP_NAME$1="MenuGroup",MenuGroup=reactExports.forwardRef((lV,J)=>{const{__scopeMenu:VV,...RV}=lV;return jsxRuntimeExports.jsx(Primitive.div,{role:"group",...RV,ref:J})});MenuGroup.displayName=GROUP_NAME$1;var LABEL_NAME$1="MenuLabel",MenuLabel=reactExports.forwardRef((lV,J)=>{const{__scopeMenu:VV,...RV}=lV;return jsxRuntimeExports.jsx(Primitive.div,{...RV,ref:J})});MenuLabel.displayName=LABEL_NAME$1;var ITEM_NAME$1="MenuItem",ITEM_SELECT="menu.itemSelect",MenuItem=reactExports.forwardRef((lV,J)=>{const{disabled:VV=!1,onSelect:RV,...UV}=lV,ZV=reactExports.useRef(null),WV=useMenuRootContext(ITEM_NAME$1,lV.__scopeMenu),IV=useMenuContentContext(ITEM_NAME$1,lV.__scopeMenu),dV=useComposedRefs(J,ZV),CV=reactExports.useRef(!1),FV=()=>{const NV=ZV.current;if(!VV&&NV){const gV=new CustomEvent(ITEM_SELECT,{bubbles:!0,cancelable:!0});NV.addEventListener(ITEM_SELECT,JV=>RV==null?void 0:RV(JV),{once:!0}),dispatchDiscreteCustomEvent(NV,gV),gV.defaultPrevented?CV.current=!1:WV.onClose()}};return jsxRuntimeExports.jsx(MenuItemImpl,{...UV,ref:dV,disabled:VV,onClick:composeEventHandlers(lV.onClick,FV),onPointerDown:NV=>{var gV;(gV=lV.onPointerDown)==null||gV.call(lV,NV),CV.current=!0},onPointerUp:composeEventHandlers(lV.onPointerUp,NV=>{var gV;CV.current||(gV=NV.currentTarget)==null||gV.click()}),onKeyDown:composeEventHandlers(lV.onKeyDown,NV=>{const gV=IV.searchRef.current!=="";VV||gV&&NV.key===" "||SELECTION_KEYS.includes(NV.key)&&(NV.currentTarget.click(),NV.preventDefault())})})});MenuItem.displayName=ITEM_NAME$1;var MenuItemImpl=reactExports.forwardRef((lV,J)=>{const{__scopeMenu:VV,disabled:RV=!1,textValue:UV,...ZV}=lV,WV=useMenuContentContext(ITEM_NAME$1,VV),IV=useRovingFocusGroupScope(VV),dV=reactExports.useRef(null),CV=useComposedRefs(J,dV),[FV,NV]=reactExports.useState(!1),[gV,JV]=reactExports.useState("");return reactExports.useEffect(()=>{const eV=dV.current;eV&&JV((eV.textContent??"").trim())},[ZV.children]),jsxRuntimeExports.jsx(Collection.ItemSlot,{scope:VV,disabled:RV,textValue:UV??gV,children:jsxRuntimeExports.jsx(Item,{asChild:!0,...IV,focusable:!RV,children:jsxRuntimeExports.jsx(Primitive.div,{role:"menuitem","data-highlighted":FV?"":void 0,"aria-disabled":RV||void 0,"data-disabled":RV?"":void 0,...ZV,ref:CV,onPointerMove:composeEventHandlers(lV.onPointerMove,whenMouse(eV=>{RV?WV.onItemLeave(eV):(WV.onItemEnter(eV),eV.defaultPrevented||eV.currentTarget.focus({preventScroll:!0}))})),onPointerLeave:composeEventHandlers(lV.onPointerLeave,whenMouse(eV=>WV.onItemLeave(eV))),onFocus:composeEventHandlers(lV.onFocus,()=>NV(!0)),onBlur:composeEventHandlers(lV.onBlur,()=>NV(!1))})})})}),CHECKBOX_ITEM_NAME$1="MenuCheckboxItem",MenuCheckboxItem=reactExports.forwardRef((lV,J)=>{const{checked:VV=!1,onCheckedChange:RV,...UV}=lV;return jsxRuntimeExports.jsx(ItemIndicatorProvider,{scope:lV.__scopeMenu,checked:VV,children:jsxRuntimeExports.jsx(MenuItem,{role:"menuitemcheckbox","aria-checked":isIndeterminate(VV)?"mixed":VV,...UV,ref:J,"data-state":getCheckedState(VV),onSelect:composeEventHandlers(UV.onSelect,()=>RV==null?void 0:RV(isIndeterminate(VV)?!0:!VV),{checkForDefaultPrevented:!1})})})});MenuCheckboxItem.displayName=CHECKBOX_ITEM_NAME$1;var RADIO_GROUP_NAME$1="MenuRadioGroup",[RadioGroupProvider,useRadioGroupContext]=createMenuContext(RADIO_GROUP_NAME$1,{value:void 0,onValueChange:()=>{}}),MenuRadioGroup=reactExports.forwardRef((lV,J)=>{const{value:VV,onValueChange:RV,...UV}=lV,ZV=useCallbackRef$1(RV);return jsxRuntimeExports.jsx(RadioGroupProvider,{scope:lV.__scopeMenu,value:VV,onValueChange:ZV,children:jsxRuntimeExports.jsx(MenuGroup,{...UV,ref:J})})});MenuRadioGroup.displayName=RADIO_GROUP_NAME$1;var RADIO_ITEM_NAME$1="MenuRadioItem",MenuRadioItem=reactExports.forwardRef((lV,J)=>{const{value:VV,...RV}=lV,UV=useRadioGroupContext(RADIO_ITEM_NAME$1,lV.__scopeMenu),ZV=VV===UV.value;return jsxRuntimeExports.jsx(ItemIndicatorProvider,{scope:lV.__scopeMenu,checked:ZV,children:jsxRuntimeExports.jsx(MenuItem,{role:"menuitemradio","aria-checked":ZV,...RV,ref:J,"data-state":getCheckedState(ZV),onSelect:composeEventHandlers(RV.onSelect,()=>{var WV;return(WV=UV.onValueChange)==null?void 0:WV.call(UV,VV)},{checkForDefaultPrevented:!1})})})});MenuRadioItem.displayName=RADIO_ITEM_NAME$1;var ITEM_INDICATOR_NAME="MenuItemIndicator",[ItemIndicatorProvider,useItemIndicatorContext]=createMenuContext(ITEM_INDICATOR_NAME,{checked:!1}),MenuItemIndicator=reactExports.forwardRef((lV,J)=>{const{__scopeMenu:VV,forceMount:RV,...UV}=lV,ZV=useItemIndicatorContext(ITEM_INDICATOR_NAME,VV);return jsxRuntimeExports.jsx(Presence,{present:RV||isIndeterminate(ZV.checked)||ZV.checked===!0,children:jsxRuntimeExports.jsx(Primitive.span,{...UV,ref:J,"data-state":getCheckedState(ZV.checked)})})});MenuItemIndicator.displayName=ITEM_INDICATOR_NAME;var SEPARATOR_NAME$1="MenuSeparator",MenuSeparator=reactExports.forwardRef((lV,J)=>{const{__scopeMenu:VV,...RV}=lV;return jsxRuntimeExports.jsx(Primitive.div,{role:"separator","aria-orientation":"horizontal",...RV,ref:J})});MenuSeparator.displayName=SEPARATOR_NAME$1;var ARROW_NAME$1="MenuArrow",MenuArrow=reactExports.forwardRef((lV,J)=>{const{__scopeMenu:VV,...RV}=lV,UV=usePopperScope(VV);return jsxRuntimeExports.jsx(Arrow,{...UV,...RV,ref:J})});MenuArrow.displayName=ARROW_NAME$1;var SUB_NAME="MenuSub",[MenuSubProvider,useMenuSubContext]=createMenuContext(SUB_NAME),SUB_TRIGGER_NAME$1="MenuSubTrigger",MenuSubTrigger=reactExports.forwardRef((lV,J)=>{const VV=useMenuContext(SUB_TRIGGER_NAME$1,lV.__scopeMenu),RV=useMenuRootContext(SUB_TRIGGER_NAME$1,lV.__scopeMenu),UV=useMenuSubContext(SUB_TRIGGER_NAME$1,lV.__scopeMenu),ZV=useMenuContentContext(SUB_TRIGGER_NAME$1,lV.__scopeMenu),WV=reactExports.useRef(null),{pointerGraceTimerRef:IV,onPointerGraceIntentChange:dV}=ZV,CV={__scopeMenu:lV.__scopeMenu},FV=reactExports.useCallback(()=>{WV.current&&window.clearTimeout(WV.current),WV.current=null},[]);return reactExports.useEffect(()=>FV,[FV]),reactExports.useEffect(()=>{const NV=IV.current;return()=>{window.clearTimeout(NV),dV(null)}},[IV,dV]),jsxRuntimeExports.jsx(MenuAnchor,{asChild:!0,...CV,children:jsxRuntimeExports.jsx(MenuItemImpl,{id:UV.triggerId,"aria-haspopup":"menu","aria-expanded":VV.open,"aria-controls":UV.contentId,"data-state":getOpenState(VV.open),...lV,ref:composeRefs(J,UV.onTriggerChange),onClick:NV=>{var gV;(gV=lV.onClick)==null||gV.call(lV,NV),!(lV.disabled||NV.defaultPrevented)&&(NV.currentTarget.focus(),VV.open||VV.onOpenChange(!0))},onPointerMove:composeEventHandlers(lV.onPointerMove,whenMouse(NV=>{ZV.onItemEnter(NV),!NV.defaultPrevented&&!lV.disabled&&!VV.open&&!WV.current&&(ZV.onPointerGraceIntentChange(null),WV.current=window.setTimeout(()=>{VV.onOpenChange(!0),FV()},100))})),onPointerLeave:composeEventHandlers(lV.onPointerLeave,whenMouse(NV=>{var JV,eV;FV();const gV=(JV=VV.content)==null?void 0:JV.getBoundingClientRect();if(gV){const nV=(eV=VV.content)==null?void 0:eV.dataset.side,aV=nV==="right",GV=aV?-5:5,YV=gV[aV?"left":"right"],AV=gV[aV?"right":"left"];ZV.onPointerGraceIntentChange({area:[{x:NV.clientX+GV,y:NV.clientY},{x:YV,y:gV.top},{x:AV,y:gV.top},{x:AV,y:gV.bottom},{x:YV,y:gV.bottom}],side:nV}),window.clearTimeout(IV.current),IV.current=window.setTimeout(()=>ZV.onPointerGraceIntentChange(null),300)}else{if(ZV.onTriggerLeave(NV),NV.defaultPrevented)return;ZV.onPointerGraceIntentChange(null)}})),onKeyDown:composeEventHandlers(lV.onKeyDown,NV=>{var JV;const gV=ZV.searchRef.current!=="";lV.disabled||gV&&NV.key===" "||SUB_OPEN_KEYS[RV.dir].includes(NV.key)&&(VV.onOpenChange(!0),(JV=VV.content)==null||JV.focus(),NV.preventDefault())})})})});MenuSubTrigger.displayName=SUB_TRIGGER_NAME$1;var SUB_CONTENT_NAME$1="MenuSubContent",MenuSubContent=reactExports.forwardRef((lV,J)=>{const VV=usePortalContext(CONTENT_NAME$1,lV.__scopeMenu),{forceMount:RV=VV.forceMount,...UV}=lV,ZV=useMenuContext(CONTENT_NAME$1,lV.__scopeMenu),WV=useMenuRootContext(CONTENT_NAME$1,lV.__scopeMenu),IV=useMenuSubContext(SUB_CONTENT_NAME$1,lV.__scopeMenu),dV=reactExports.useRef(null),CV=useComposedRefs(J,dV);return jsxRuntimeExports.jsx(Collection.Provider,{scope:lV.__scopeMenu,children:jsxRuntimeExports.jsx(Presence,{present:RV||ZV.open,children:jsxRuntimeExports.jsx(Collection.Slot,{scope:lV.__scopeMenu,children:jsxRuntimeExports.jsx(MenuContentImpl,{id:IV.contentId,"aria-labelledby":IV.triggerId,...UV,ref:CV,align:"start",side:WV.dir==="rtl"?"left":"right",disableOutsidePointerEvents:!1,disableOutsideScroll:!1,trapFocus:!1,onOpenAutoFocus:FV=>{var NV;WV.isUsingKeyboardRef.current&&((NV=dV.current)==null||NV.focus()),FV.preventDefault()},onCloseAutoFocus:FV=>FV.preventDefault(),onFocusOutside:composeEventHandlers(lV.onFocusOutside,FV=>{FV.target!==IV.trigger&&ZV.onOpenChange(!1)}),onEscapeKeyDown:composeEventHandlers(lV.onEscapeKeyDown,FV=>{WV.onClose(),FV.preventDefault()}),onKeyDown:composeEventHandlers(lV.onKeyDown,FV=>{var JV;const NV=FV.currentTarget.contains(FV.target),gV=SUB_CLOSE_KEYS[WV.dir].includes(FV.key);NV&&gV&&(ZV.onOpenChange(!1),(JV=IV.trigger)==null||JV.focus(),FV.preventDefault())})})})})})});MenuSubContent.displayName=SUB_CONTENT_NAME$1;function getOpenState(lV){return lV?"open":"closed"}function isIndeterminate(lV){return lV==="indeterminate"}function getCheckedState(lV){return isIndeterminate(lV)?"indeterminate":lV?"checked":"unchecked"}function focusFirst(lV){const J=document.activeElement;for(const VV of lV)if(VV===J||(VV.focus(),document.activeElement!==J))return}function wrapArray(lV,J){return lV.map((VV,RV)=>lV[(J+RV)%lV.length])}function getNextMatch(lV,J,VV){const UV=J.length>1&&Array.from(J).every(CV=>CV===J[0])?J[0]:J,ZV=VV?lV.indexOf(VV):-1;let WV=wrapArray(lV,Math.max(ZV,0));UV.length===1&&(WV=WV.filter(CV=>CV!==VV));const dV=WV.find(CV=>CV.toLowerCase().startsWith(UV.toLowerCase()));return dV!==VV?dV:void 0}function isPointInPolygon(lV,J){const{x:VV,y:RV}=lV;let UV=!1;for(let ZV=0,WV=J.length-1;ZV<J.length;WV=ZV++){const IV=J[ZV].x,dV=J[ZV].y,CV=J[WV].x,FV=J[WV].y;dV>RV!=FV>RV&&VV<(CV-IV)*(RV-dV)/(FV-dV)+IV&&(UV=!UV)}return UV}function isPointerInGraceArea(lV,J){if(!J)return!1;const VV={x:lV.clientX,y:lV.clientY};return isPointInPolygon(VV,J)}function whenMouse(lV){return J=>J.pointerType==="mouse"?lV(J):void 0}var Root3=Menu,Anchor2=MenuAnchor,Portal=MenuPortal,Content2$1=MenuContent,Group=MenuGroup,Label=MenuLabel,Item2$1=MenuItem,CheckboxItem=MenuCheckboxItem,RadioGroup=MenuRadioGroup,RadioItem=MenuRadioItem,ItemIndicator=MenuItemIndicator,Separator=MenuSeparator,Arrow2=MenuArrow,SubTrigger=MenuSubTrigger,SubContent=MenuSubContent,DROPDOWN_MENU_NAME="DropdownMenu",[createDropdownMenuContext,createDropdownMenuScope]=createContextScope(DROPDOWN_MENU_NAME,[createMenuScope]),useMenuScope=createMenuScope(),[DropdownMenuProvider,useDropdownMenuContext]=createDropdownMenuContext(DROPDOWN_MENU_NAME),DropdownMenu$1=lV=>{const{__scopeDropdownMenu:J,children:VV,dir:RV,open:UV,defaultOpen:ZV,onOpenChange:WV,modal:IV=!0}=lV,dV=useMenuScope(J),CV=reactExports.useRef(null),[FV=!1,NV]=useControllableState({prop:UV,defaultProp:ZV,onChange:WV});return jsxRuntimeExports.jsx(DropdownMenuProvider,{scope:J,triggerId:useId(),triggerRef:CV,contentId:useId(),open:FV,onOpenChange:NV,onOpenToggle:reactExports.useCallback(()=>NV(gV=>!gV),[NV]),modal:IV,children:jsxRuntimeExports.jsx(Root3,{...dV,open:FV,onOpenChange:NV,dir:RV,modal:IV,children:VV})})};DropdownMenu$1.displayName=DROPDOWN_MENU_NAME;var TRIGGER_NAME="DropdownMenuTrigger",DropdownMenuTrigger$1=reactExports.forwardRef((lV,J)=>{const{__scopeDropdownMenu:VV,disabled:RV=!1,...UV}=lV,ZV=useDropdownMenuContext(TRIGGER_NAME,VV),WV=useMenuScope(VV);return jsxRuntimeExports.jsx(Anchor2,{asChild:!0,...WV,children:jsxRuntimeExports.jsx(Primitive.button,{type:"button",id:ZV.triggerId,"aria-haspopup":"menu","aria-expanded":ZV.open,"aria-controls":ZV.open?ZV.contentId:void 0,"data-state":ZV.open?"open":"closed","data-disabled":RV?"":void 0,disabled:RV,...UV,ref:composeRefs(J,ZV.triggerRef),onPointerDown:composeEventHandlers(lV.onPointerDown,IV=>{!RV&&IV.button===0&&IV.ctrlKey===!1&&(ZV.onOpenToggle(),ZV.open||IV.preventDefault())}),onKeyDown:composeEventHandlers(lV.onKeyDown,IV=>{RV||(["Enter"," "].includes(IV.key)&&ZV.onOpenToggle(),IV.key==="ArrowDown"&&ZV.onOpenChange(!0),["Enter"," ","ArrowDown"].includes(IV.key)&&IV.preventDefault())})})})});DropdownMenuTrigger$1.displayName=TRIGGER_NAME;var PORTAL_NAME="DropdownMenuPortal",DropdownMenuPortal=lV=>{const{__scopeDropdownMenu:J,...VV}=lV,RV=useMenuScope(J);return jsxRuntimeExports.jsx(Portal,{...RV,...VV})};DropdownMenuPortal.displayName=PORTAL_NAME;var CONTENT_NAME="DropdownMenuContent",DropdownMenuContent$1=reactExports.forwardRef((lV,J)=>{const{__scopeDropdownMenu:VV,...RV}=lV,UV=useDropdownMenuContext(CONTENT_NAME,VV),ZV=useMenuScope(VV),WV=reactExports.useRef(!1);return jsxRuntimeExports.jsx(Content2$1,{id:UV.contentId,"aria-labelledby":UV.triggerId,...ZV,...RV,ref:J,onCloseAutoFocus:composeEventHandlers(lV.onCloseAutoFocus,IV=>{var dV;WV.current||(dV=UV.triggerRef.current)==null||dV.focus(),WV.current=!1,IV.preventDefault()}),onInteractOutside:composeEventHandlers(lV.onInteractOutside,IV=>{const dV=IV.detail.originalEvent,CV=dV.button===0&&dV.ctrlKey===!0,FV=dV.button===2||CV;(!UV.modal||FV)&&(WV.current=!0)}),style:{...lV.style,"--radix-dropdown-menu-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-dropdown-menu-content-available-width":"var(--radix-popper-available-width)","--radix-dropdown-menu-content-available-height":"var(--radix-popper-available-height)","--radix-dropdown-menu-trigger-width":"var(--radix-popper-anchor-width)","--radix-dropdown-menu-trigger-height":"var(--radix-popper-anchor-height)"}})});DropdownMenuContent$1.displayName=CONTENT_NAME;var GROUP_NAME="DropdownMenuGroup",DropdownMenuGroup=reactExports.forwardRef((lV,J)=>{const{__scopeDropdownMenu:VV,...RV}=lV,UV=useMenuScope(VV);return jsxRuntimeExports.jsx(Group,{...UV,...RV,ref:J})});DropdownMenuGroup.displayName=GROUP_NAME;var LABEL_NAME="DropdownMenuLabel",DropdownMenuLabel$1=reactExports.forwardRef((lV,J)=>{const{__scopeDropdownMenu:VV,...RV}=lV,UV=useMenuScope(VV);return jsxRuntimeExports.jsx(Label,{...UV,...RV,ref:J})});DropdownMenuLabel$1.displayName=LABEL_NAME;var ITEM_NAME="DropdownMenuItem",DropdownMenuItem$1=reactExports.forwardRef((lV,J)=>{const{__scopeDropdownMenu:VV,...RV}=lV,UV=useMenuScope(VV);return jsxRuntimeExports.jsx(Item2$1,{...UV,...RV,ref:J})});DropdownMenuItem$1.displayName=ITEM_NAME;var CHECKBOX_ITEM_NAME="DropdownMenuCheckboxItem",DropdownMenuCheckboxItem$1=reactExports.forwardRef((lV,J)=>{const{__scopeDropdownMenu:VV,...RV}=lV,UV=useMenuScope(VV);return jsxRuntimeExports.jsx(CheckboxItem,{...UV,...RV,ref:J})});DropdownMenuCheckboxItem$1.displayName=CHECKBOX_ITEM_NAME;var RADIO_GROUP_NAME="DropdownMenuRadioGroup",DropdownMenuRadioGroup=reactExports.forwardRef((lV,J)=>{const{__scopeDropdownMenu:VV,...RV}=lV,UV=useMenuScope(VV);return jsxRuntimeExports.jsx(RadioGroup,{...UV,...RV,ref:J})});DropdownMenuRadioGroup.displayName=RADIO_GROUP_NAME;var RADIO_ITEM_NAME="DropdownMenuRadioItem",DropdownMenuRadioItem$1=reactExports.forwardRef((lV,J)=>{const{__scopeDropdownMenu:VV,...RV}=lV,UV=useMenuScope(VV);return jsxRuntimeExports.jsx(RadioItem,{...UV,...RV,ref:J})});DropdownMenuRadioItem$1.displayName=RADIO_ITEM_NAME;var INDICATOR_NAME="DropdownMenuItemIndicator",DropdownMenuItemIndicator=reactExports.forwardRef((lV,J)=>{const{__scopeDropdownMenu:VV,...RV}=lV,UV=useMenuScope(VV);return jsxRuntimeExports.jsx(ItemIndicator,{...UV,...RV,ref:J})});DropdownMenuItemIndicator.displayName=INDICATOR_NAME;var SEPARATOR_NAME="DropdownMenuSeparator",DropdownMenuSeparator$1=reactExports.forwardRef((lV,J)=>{const{__scopeDropdownMenu:VV,...RV}=lV,UV=useMenuScope(VV);return jsxRuntimeExports.jsx(Separator,{...UV,...RV,ref:J})});DropdownMenuSeparator$1.displayName=SEPARATOR_NAME;var ARROW_NAME="DropdownMenuArrow",DropdownMenuArrow=reactExports.forwardRef((lV,J)=>{const{__scopeDropdownMenu:VV,...RV}=lV,UV=useMenuScope(VV);return jsxRuntimeExports.jsx(Arrow2,{...UV,...RV,ref:J})});DropdownMenuArrow.displayName=ARROW_NAME;var SUB_TRIGGER_NAME="DropdownMenuSubTrigger",DropdownMenuSubTrigger$1=reactExports.forwardRef((lV,J)=>{const{__scopeDropdownMenu:VV,...RV}=lV,UV=useMenuScope(VV);return jsxRuntimeExports.jsx(SubTrigger,{...UV,...RV,ref:J})});DropdownMenuSubTrigger$1.displayName=SUB_TRIGGER_NAME;var SUB_CONTENT_NAME="DropdownMenuSubContent",DropdownMenuSubContent$1=reactExports.forwardRef((lV,J)=>{const{__scopeDropdownMenu:VV,...RV}=lV,UV=useMenuScope(VV);return jsxRuntimeExports.jsx(SubContent,{...UV,...RV,ref:J,style:{...lV.style,"--radix-dropdown-menu-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-dropdown-menu-content-available-width":"var(--radix-popper-available-width)","--radix-dropdown-menu-content-available-height":"var(--radix-popper-available-height)","--radix-dropdown-menu-trigger-width":"var(--radix-popper-anchor-width)","--radix-dropdown-menu-trigger-height":"var(--radix-popper-anchor-height)"}})});DropdownMenuSubContent$1.displayName=SUB_CONTENT_NAME;var Root2=DropdownMenu$1,Trigger=DropdownMenuTrigger$1,Portal2=DropdownMenuPortal,Content2=DropdownMenuContent$1,Label2=DropdownMenuLabel$1,Item2=DropdownMenuItem$1,CheckboxItem2=DropdownMenuCheckboxItem$1,RadioItem2=DropdownMenuRadioItem$1,ItemIndicator2=DropdownMenuItemIndicator,Separator2=DropdownMenuSeparator$1,SubTrigger2=DropdownMenuSubTrigger$1,SubContent2=DropdownMenuSubContent$1;const DropdownMenu=Root2,DropdownMenuTrigger=Trigger,DropdownMenuSubTrigger=reactExports.forwardRef(({className:lV,inset:J,children:VV,...RV},UV)=>jsxRuntimeExports.jsxs(SubTrigger2,{ref:UV,className:cn$1("rf-flex rf-cursor-default rf-gap-2 rf-select-none rf-items-center rf-rounded-sm rf-px-2 rf-py-1.5 rf-text-sm rf-outline-none focus:rf-bg-zinc-100 data-[state=open]:rf-bg-zinc-100 [&_svg]:rf-pointer-events-none [&_svg]:rf-size-4 [&_svg]:rf-shrink-0 dark:focus:rf-bg-zinc-800 dark:data-[state=open]:rf-bg-zinc-800",J&&"rf-pl-8",lV),...RV,children:[VV,jsxRuntimeExports.jsx(ChevronRight,{className:"rf-ml-auto"})]}));DropdownMenuSubTrigger.displayName=SubTrigger2.displayName;const DropdownMenuSubContent=reactExports.forwardRef(({className:lV,...J},VV)=>jsxRuntimeExports.jsx(SubContent2,{ref:VV,className:cn$1("rf-z-50 rf-min-w-[8rem] rf-overflow-hidden rf-rounded-md rf-border rf-border-zinc-200 rf-bg-white rf-p-1 rf-text-zinc-950 rf-shadow-lg data-[state=open]:rf-animate-in data-[state=closed]:rf-animate-out data-[state=closed]:rf-fade-out-0 data-[state=open]:rf-fade-in-0 data-[state=closed]:rf-zoom-out-95 data-[state=open]:rf-zoom-in-95 data-[side=bottom]:rf-slide-in-from-top-2 data-[side=left]:rf-slide-in-from-right-2 data-[side=right]:rf-slide-in-from-left-2 data-[side=top]:rf-slide-in-from-bottom-2 dark:rf-border-zinc-800 dark:rf-bg-zinc-950 dark:rf-text-zinc-50",lV),...J}));DropdownMenuSubContent.displayName=SubContent2.displayName;const DropdownMenuContent=reactExports.forwardRef(({className:lV,sideOffset:J=4,...VV},RV)=>jsxRuntimeExports.jsx(Portal2,{children:jsxRuntimeExports.jsx(Content2,{ref:RV,sideOffset:J,className:cn$1("rf-z-50 rf-min-w-[8rem] rf-overflow-hidden rf-rounded-md rf-border rf-border-zinc-200 rf-bg-white rf-p-1 rf-text-zinc-950 rf-shadow-md dark:rf-border-zinc-800 dark:rf-bg-zinc-950 dark:rf-text-zinc-50","data-[state=open]:rf-animate-in data-[state=closed]:rf-animate-out data-[state=closed]:rf-fade-out-0 data-[state=open]:rf-fade-in-0 data-[state=closed]:rf-zoom-out-95 data-[state=open]:rf-zoom-in-95 data-[side=bottom]:rf-slide-in-from-top-2 data-[side=left]:rf-slide-in-from-right-2 data-[side=right]:rf-slide-in-from-left-2 data-[side=top]:rf-slide-in-from-bottom-2",lV),...VV})}));DropdownMenuContent.displayName=Content2.displayName;const DropdownMenuItem=reactExports.forwardRef(({className:lV,inset:J,...VV},RV)=>jsxRuntimeExports.jsx(Item2,{ref:RV,className:cn$1("rf-relative rf-flex rf-cursor-default rf-select-none rf-items-center rf-gap-2 rf-rounded-sm rf-px-2 rf-py-1.5 rf-text-sm rf-outline-none rf-transition-colors focus:rf-bg-zinc-100 focus:rf-text-zinc-900 data-[disabled]:rf-pointer-events-none data-[disabled]:rf-opacity-50 [&>svg]:rf-size-4 [&>svg]:rf-shrink-0 dark:focus:rf-bg-zinc-800 dark:focus:rf-text-zinc-50",J&&"rf-pl-8",lV),...VV}));DropdownMenuItem.displayName=Item2.displayName;const DropdownMenuCheckboxItem=reactExports.forwardRef(({className:lV,children:J,checked:VV,...RV},UV)=>jsxRuntimeExports.jsxs(CheckboxItem2,{ref:UV,className:cn$1("rf-relative rf-flex rf-cursor-default rf-select-none rf-items-center rf-rounded-sm rf-py-1.5 rf-pl-8 rf-pr-2 rf-text-sm rf-outline-none rf-transition-colors focus:rf-bg-zinc-100 focus:rf-text-zinc-900 data-[disabled]:rf-pointer-events-none data-[disabled]:rf-opacity-50 dark:focus:rf-bg-zinc-800 dark:focus:rf-text-zinc-50",lV),checked:VV,...RV,children:[jsxRuntimeExports.jsx("span",{className:"rf-absolute rf-left-2 rf-flex rf-h-3.5 rf-w-3.5 rf-items-center rf-justify-center",children:jsxRuntimeExports.jsx(ItemIndicator2,{children:jsxRuntimeExports.jsx(Check,{className:"rf-h-4 rf-w-4"})})}),J]}));DropdownMenuCheckboxItem.displayName=CheckboxItem2.displayName;const DropdownMenuRadioItem=reactExports.forwardRef(({className:lV,children:J,...VV},RV)=>jsxRuntimeExports.jsxs(RadioItem2,{ref:RV,className:cn$1("rf-relative rf-flex rf-cursor-default rf-select-none rf-items-center rf-rounded-sm rf-py-1.5 rf-pl-8 rf-pr-2 rf-text-sm rf-outline-none rf-transition-colors focus:rf-bg-zinc-100 focus:rf-text-zinc-900 data-[disabled]:rf-pointer-events-none data-[disabled]:rf-opacity-50 dark:focus:rf-bg-zinc-800 dark:focus:rf-text-zinc-50",lV),...VV,children:[jsxRuntimeExports.jsx("span",{className:"rf-absolute rf-left-2 rf-flex rf-h-3.5 rf-w-3.5 rf-items-center rf-justify-center",children:jsxRuntimeExports.jsx(ItemIndicator2,{children:jsxRuntimeExports.jsx(Circle,{className:"rf-h-2 rf-w-2 rf-fill-current"})})}),J]}));DropdownMenuRadioItem.displayName=RadioItem2.displayName;const DropdownMenuLabel=reactExports.forwardRef(({className:lV,inset:J,...VV},RV)=>jsxRuntimeExports.jsx(Label2,{ref:RV,className:cn$1("rf-px-2 rf-py-1.5 rf-text-sm rf-font-semibold",J&&"rf-pl-8",lV),...VV}));DropdownMenuLabel.displayName=Label2.displayName;const DropdownMenuSeparator=reactExports.forwardRef(({className:lV,...J},VV)=>jsxRuntimeExports.jsx(Separator2,{ref:VV,className:cn$1("rf--mx-1 rf-my-1 rf-h-px rf-bg-zinc-100 dark:rf-bg-zinc-800",lV),...J}));DropdownMenuSeparator.displayName=Separator2.displayName;const PcbViewerWithContainerHeight=({containerClassName:lV,...J})=>{const VV=reactExports.useRef(null),[RV,UV]=reactExports.useState(620);return reactExports.useLayoutEffect(()=>{const ZV=()=>{if(VV.current){const IV=VV.current.clientHeight,dV=window.innerHeight;UV(Math.min(Math.max(IV,620),dV))}};ZV();const WV=new ResizeObserver(ZV);return VV.current&&WV.observe(VV.current),window.addEventListener("resize",ZV),()=>{WV.disconnect(),window.removeEventListener("resize",ZV)}},[]),jsxRuntimeExports.jsx("div",{ref:VV,className:lV||"rf-w-full rf-h-full",children:jsxRuntimeExports.jsx(PCBViewer,{...J,height:RV})})},styles='*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }/*! tailwindcss v3.4.17 | MIT License | https://tailwindcss.com*/*,:after,:before{border:0 solid #e5e7eb;box-sizing:border-box}:after,:before{--tw-content:""}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-tap-highlight-color:transparent}body{line-height:inherit;margin:0}hr{border-top-width:1px;color:inherit;height:0}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;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-size:1em;font-variation-settings:normal}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}button,input,optgroup,select,textarea{color:inherit;font-family:inherit;font-feature-settings:inherit;font-size:100%;font-variation-settings:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{color:#9ca3af;opacity:1}input::placeholder,textarea::placeholder{color:#9ca3af;opacity:1}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}[hidden]:where(:not([hidden=until-found])){display:none}:root{--radius:0.5rem}.rf-pointer-events-none{pointer-events:none}.rf-invisible{visibility:hidden}.rf-fixed{position:fixed}.rf-absolute{position:absolute}.rf-relative{position:relative}.rf-inset-0{inset:0}.rf-bottom-full{bottom:100%}.rf-left-1{left:.25rem}.rf-left-1\\/2{left:50%}.rf-left-2{left:.5rem}.rf-right-4{right:1rem}.rf-right-\\[4px\\]{right:4px}.rf-top-2{top:.5rem}.rf-top-\\[6px\\]{top:6px}.rf-z-50{z-index:50}.rf-z-\\[100\\]{z-index:100}.rf--mx-1{margin-left:-.25rem;margin-right:-.25rem}.rf-mx-2{margin-left:.5rem;margin-right:.5rem}.rf-my-1{margin-bottom:.25rem;margin-top:.25rem}.rf-mb-2{margin-bottom:.5rem}.rf-mb-3{margin-bottom:.75rem}.rf-mb-4{margin-bottom:1rem}.rf-ml-1{margin-left:.25rem}.rf-ml-1\\.5{margin-left:.375rem}.rf-ml-2{margin-left:.5rem}.rf-ml-auto{margin-left:auto}.rf-mr-1{margin-right:.25rem}.rf-mr-2{margin-right:.5rem}.rf-mt-0{margin-top:0}.rf-mt-2{margin-top:.5rem}.rf-mt-4{margin-top:1rem}.rf-flex{display:flex}.rf-inline-flex{display:inline-flex}.rf-size-4{height:1rem;width:1rem}.rf-h-1{height:.25rem}.rf-h-10{height:2.5rem}.rf-h-2{height:.5rem}.rf-h-3{height:.75rem}.rf-h-3\\.5{height:.875rem}.rf-h-4{height:1rem}.rf-h-60{height:15rem}.rf-h-8{height:2rem}.rf-h-9{height:2.25rem}.rf-h-\\[620px\\]{height:620px}.rf-h-\\[calc\\(100vh-96px\\)\\]{height:calc(100vh - 96px)}.rf-h-full{height:100%}.rf-h-px{height:1px}.rf-max-h-\\[500px\\]{max-height:500px}.rf-min-h-\\[620px\\]{min-height:620px}.rf-min-h-\\[calc\\(100vh-240px\\)\\]{min-height:calc(100vh - 240px)}.rf-w-1{width:.25rem}.rf-w-11{width:2.75rem}.rf-w-11\\/12{width:91.666667%}.rf-w-2{width:.5rem}.rf-w-3{width:.75rem}.rf-w-3\\.5{width:.875rem}.rf-w-4{width:1rem}.rf-w-9{width:2.25rem}.rf-w-96{width:24rem}.rf-w-full{width:100%}.rf-min-w-\\[8rem\\]{min-width:8rem}.rf-max-w-2xl{max-width:42rem}.rf-shrink-0{flex-shrink:0}.rf-flex-grow{flex-grow:1}.rf-table-auto{table-layout:auto}.rf--translate-x-1{--tw-translate-x:-0.25rem}.rf--translate-x-1,.rf--translate-x-1\\/2{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rf--translate-x-1\\/2{--tw-translate-x:-50%}.rf-transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes rf-spin{to{transform:rotate(1turn)}}.rf-animate-spin{animation:rf-spin 1s linear infinite}.rf-cursor-default{cursor:default}.rf-cursor-pointer{cursor:pointer}.rf-select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.rf-flex-col{flex-direction:column}.rf-items-center{align-items:center}.rf-justify-end{justify-content:flex-end}.rf-justify-center{justify-content:center}.rf-justify-between{justify-content:space-between}.rf-gap-2{gap:.5rem}.rf-gap-3{gap:.75rem}.rf-space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(.5rem*var(--tw-space-x-reverse))}.rf-space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.5rem*var(--tw-space-y-reverse));margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)))}.rf-overflow-auto{overflow:auto}.rf-overflow-hidden{overflow:hidden}.rf-overflow-visible{overflow:visible}.rf-overflow-x-auto{overflow-x:auto}.rf-overflow-y-auto{overflow-y:auto}.rf-whitespace-nowrap{white-space:nowrap}.rf-whitespace-pre-wrap{white-space:pre-wrap}.rf-rounded{border-radius:.25rem}.rf-rounded-full{border-radius:9999px}.rf-rounded-lg{border-radius:var(--radius)}.rf-rounded-md{border-radius:calc(var(--radius) - 2px)}.rf-rounded-sm{border-radius:calc(var(--radius) - 4px)}.rf-border{border-width:1px}.rf-border-b{border-bottom-width:1px}.rf-border-green-200{--tw-border-opacity:1;border-color:rgb(187 247 208/var(--tw-border-opacity,1))}.rf-border-neutral-200{--tw-border-opacity:1;border-color:rgb(229 229 229/var(--tw-border-opacity,1))}.rf-border-red-200{--tw-border-opacity:1;border-color:rgb(254 202 202/var(--tw-border-opacity,1))}.rf-border-zinc-200{--tw-border-opacity:1;border-color:rgb(228 228 231/var(--tw-border-opacity,1))}.rf-bg-black{--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity,1))}.rf-bg-blue-500{--tw-bg-opacity:1;background-color:rgb(59 130 246/var(--tw-bg-opacity,1))}.rf-bg-blue-600{--tw-bg-opacity:1;background-color:rgb(37 99 235/var(--tw-bg-opacity,1))}.rf-bg-gray-100{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity,1))}.rf-bg-gray-500{--tw-bg-opacity:1;background-color:rgb(107 114 128/var(--tw-bg-opacity,1))}.rf-bg-gray-800{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity,1))}.rf-bg-gray-900{--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity,1))}.rf-bg-green-50{--tw-bg-opacity:1;background-color:rgb(240 253 244/var(--tw-bg-opacity,1))}.rf-bg-neutral-100{--tw-bg-opacity:1;background-color:rgb(245 245 245/var(--tw-bg-opacity,1))}.rf-bg-neutral-50{--tw-bg-opacity:1;background-color:rgb(250 250 250/var(--tw-bg-opacity,1))}.rf-bg-neutral-800{--tw-bg-opacity:1;background-color:rgb(38 38 38/var(--tw-bg-opacity,1))}.rf-bg-neutral-900{--tw-bg-opacity:1;background-color:rgb(23 23 23/var(--tw-bg-opacity,1))}.rf-bg-orange-400{--tw-bg-opacity:1;background-color:rgb(251 146 60/var(--tw-bg-opacity,1))}.rf-bg-red-50{--tw-bg-opacity:1;background-color:rgb(254 242 242/var(--tw-bg-opacity,1))}.rf-bg-red-500{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity,1))}.rf-bg-red-900{--tw-bg-opacity:1;background-color:rgb(127 29 29/var(--tw-bg-opacity,1))}.rf-bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.rf-bg-zinc-100{--tw-bg-opacity:1;background-color:rgb(244 244 245/var(--tw-bg-opacity,1))}.rf-bg-zinc-50{--tw-bg-opacity:1;background-color:rgb(250 250 250/var(--tw-bg-opacity,1))}.rf-bg-zinc-800{--tw-bg-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity,1))}.rf-bg-zinc-900{--tw-bg-opacity:1;background-color:rgb(24 24 27/var(--tw-bg-opacity,1))}.rf-bg-opacity-50{--tw-bg-opacity:0.5}.rf-fill-current{fill:currentColor}.rf-p-0{padding:0}.rf-p-0\\.5{padding:.125rem}.rf-p-1{padding:.25rem}.rf-p-2{padding:.5rem}.rf-p-3{padding:.75rem}.rf-p-4{padding:1rem}.rf-p-5{padding:1.25rem}.rf-p-6{padding:1.5rem}.rf-px-1{padding-left:.25rem;padding-right:.25rem}.rf-px-1\\.5{padding-left:.375rem;padding-right:.375rem}.rf-px-2{padding-left:.5rem;padding-right:.5rem}.rf-px-3{padding-left:.75rem;padding-right:.75rem}.rf-px-4{padding-left:1rem;padding-right:1rem}.rf-px-8{padding-left:2rem;padding-right:2rem}.rf-py-1{padding-bottom:.25rem;padding-top:.25rem}.rf-py-1\\.5{padding-bottom:.375rem;padding-top:.375rem}.rf-py-10{padding-bottom:2.5rem;padding-top:2.5rem}.rf-py-2{padding-bottom:.5rem;padding-top:.5rem}.rf-pb-4{padding-bottom:1rem}.rf-pl-8{padding-left:2rem}.rf-pr-2{padding-right:.5rem}.rf-text-left{text-align:left}.rf-text-center{text-align:center}.rf-font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.rf-text-2xl{font-size:1.5rem;line-height:2rem}.rf-text-\\[8px\\]{font-size:8px}.rf-text-lg{font-size:1.125rem;line-height:1.75rem}.rf-text-sm{font-size:.875rem;line-height:1.25rem}.rf-text-xs{font-size:.75rem;line-height:1rem}.rf-font-bold{font-weight:700}.rf-font-medium{font-weight:500}.rf-font-semibold{font-weight:600}.rf-capitalize{text-transform:capitalize}.rf-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)}.rf-leading-5{line-height:1.25rem}.rf-tracking-widest{letter-spacing:.1em}.rf-text-blue-500{--tw-text-opacity:1;color:rgb(59 130 246/var(--tw-text-opacity,1))}.rf-text-blue-600{--tw-text-opacity:1;color:rgb(37 99 235/var(--tw-text-opacity,1))}.rf-text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.rf-text-gray-600{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity,1))}.rf-text-gray-700{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity,1))}.rf-text-green-500{--tw-text-opacity:1;color:rgb(34 197 94/var(--tw-text-opacity,1))}.rf-text-green-700{--tw-text-opacity:1;color:rgb(21 128 61/var(--tw-text-opacity,1))}.rf-text-green-800{--tw-text-opacity:1;color:rgb(22 101 52/var(--tw-text-opacity,1))}.rf-text-neutral-50{--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity,1))}.rf-text-neutral-500{--tw-text-opacity:1;color:rgb(115 115 115/var(--tw-text-opacity,1))}.rf-text-neutral-900{--tw-text-opacity:1;color:rgb(23 23 23/var(--tw-text-opacity,1))}.rf-text-neutral-950{--tw-text-opacity:1;color:rgb(10 10 10/var(--tw-text-opacity,1))}.rf-text-red-600{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity,1))}.rf-text-red-700{--tw-text-opacity:1;color:rgb(185 28 28/var(--tw-text-opacity,1))}.rf-text-red-800{--tw-text-opacity:1;color:rgb(153 27 27/var(--tw-text-opacity,1))}.rf-text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.rf-text-zinc-50{--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity,1))}.rf-text-zinc-500{--tw-text-opacity:1;color:rgb(113 113 122/var(--tw-text-opacity,1))}.rf-text-zinc-900{--tw-text-opacity:1;color:rgb(24 24 27/var(--tw-text-opacity,1))}.rf-text-zinc-950{--tw-text-opacity:1;color:rgb(9 9 11/var(--tw-text-opacity,1))}.rf-underline{text-decoration-line:underline}.rf-underline-offset-4{text-underline-offset:4px}.rf-opacity-0{opacity:0}.rf-opacity-50{opacity:.5}.rf-opacity-60{opacity:.6}.rf-shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.rf-shadow,.rf-shadow-lg{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.rf-shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.rf-shadow-md{--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color)}.rf-shadow-md,.rf-shadow-sm{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.rf-shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.rf-outline-none{outline:2px solid transparent;outline-offset:2px}.rf-ring-offset-white{--tw-ring-offset-color:#fff}.rf-transition-all{transition-duration:.15s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.rf-transition-colors{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1)}.rf-transition-opacity{transition-duration:.15s;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1)}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0) scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1)) rotate(var(--tw-enter-rotate,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0) scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1)) rotate(var(--tw-exit-rotate,0))}}.hover\\:rf-bg-red-500\\/90:hover{background-color:rgba(239,68,68,.9)}.hover\\:rf-bg-zinc-100:hover{--tw-bg-opacity:1;background-color:rgb(244 244 245/var(--tw-bg-opacity,1))}.hover\\:rf-bg-zinc-100\\/80:hover{background-color:hsla(240,5%,96%,.8)}.hover\\:rf-bg-zinc-900\\/90:hover{background-color:rgba(24,24,27,.9)}.hover\\:rf-text-zinc-900:hover{--tw-text-opacity:1;color:rgb(24 24 27/var(--tw-text-opacity,1))}.hover\\:rf-underline:hover{text-decoration-line:underline}.focus\\:rf-bg-zinc-100:focus{--tw-bg-opacity:1;background-color:rgb(244 244 245/var(--tw-bg-opacity,1))}.focus\\:rf-text-zinc-900:focus{--tw-text-opacity:1;color:rgb(24 24 27/var(--tw-text-opacity,1))}.focus-visible\\:rf-outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.focus-visible\\:rf-ring-1:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-visible\\:rf-ring-2:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-visible\\:rf-ring-zinc-950:focus-visible{--tw-ring-opacity:1;--tw-ring-color:rgb(9 9 11/var(--tw-ring-opacity,1))}.focus-visible\\:rf-ring-offset-2:focus-visible{--tw-ring-offset-width:2px}.disabled\\:rf-pointer-events-none:disabled{pointer-events:none}.disabled\\:rf-opacity-50:disabled{opacity:.5}.data-\\[disabled\\]\\:rf-pointer-events-none[data-disabled]{pointer-events:none}.data-\\[state\\=active\\]\\:rf-bg-white[data-state=active]{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.data-\\[state\\=open\\]\\:rf-bg-zinc-100[data-state=open]{--tw-bg-opacity:1;background-color:rgb(244 244 245/var(--tw-bg-opacity,1))}.data-\\[state\\=active\\]\\:rf-text-zinc-950[data-state=active]{--tw-text-opacity:1;color:rgb(9 9 11/var(--tw-text-opacity,1))}.data-\\[disabled\\]\\:rf-opacity-50[data-disabled]{opacity:.5}.data-\\[state\\=active\\]\\:rf-shadow[data-state=active]{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.data-\\[state\\=open\\]\\:rf-animate-in[data-state=open]{animation-duration:.15s;animation-name:enter;--tw-enter-opacity:initial;--tw-enter-scale:initial;--tw-enter-rotate:initial;--tw-enter-translate-x:initial;--tw-enter-translate-y:initial}.data-\\[state\\=closed\\]\\:rf-animate-out[data-state=closed]{animation-duration:.15s;animation-name:exit;--tw-exit-opacity:initial;--tw-exit-scale:initial;--tw-exit-rotate:initial;--tw-exit-translate-x:initial;--tw-exit-translate-y:initial}.data-\\[state\\=closed\\]\\:rf-fade-out-0[data-state=closed]{--tw-exit-opacity:0}.data-\\[state\\=open\\]\\:rf-fade-in-0[data-state=open]{--tw-enter-opacity:0}.data-\\[state\\=closed\\]\\:rf-zoom-out-95[data-state=closed]{--tw-exit-scale:.95}.data-\\[state\\=open\\]\\:rf-zoom-in-95[data-state=open]{--tw-enter-scale:.95}.data-\\[side\\=bottom\\]\\:rf-slide-in-from-top-2[data-side=bottom]{--tw-enter-translate-y:-0.5rem}.data-\\[side\\=left\\]\\:rf-slide-in-from-right-2[data-side=left]{--tw-enter-translate-x:0.5rem}.data-\\[side\\=right\\]\\:rf-slide-in-from-left-2[data-side=right]{--tw-enter-translate-x:-0.5rem}.data-\\[side\\=top\\]\\:rf-slide-in-from-bottom-2[data-side=top]{--tw-enter-translate-y:0.5rem}.dark\\:rf-border-zinc-800:is(.rf-dark *){--tw-border-opacity:1;border-color:rgb(39 39 42/var(--tw-border-opacity,1))}.dark\\:rf-bg-red-900:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(127 29 29/var(--tw-bg-opacity,1))}.dark\\:rf-bg-zinc-50:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(250 250 250/var(--tw-bg-opacity,1))}.dark\\:rf-bg-zinc-800:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity,1))}.dark\\:rf-bg-zinc-950:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(9 9 11/var(--tw-bg-opacity,1))}.dark\\:rf-text-zinc-400:is(.rf-dark *){--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity,1))}.dark\\:rf-text-zinc-50:is(.rf-dark *){--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity,1))}.dark\\:rf-text-zinc-900:is(.rf-dark *){--tw-text-opacity:1;color:rgb(24 24 27/var(--tw-text-opacity,1))}.dark\\:rf-ring-offset-zinc-950:is(.rf-dark *){--tw-ring-offset-color:#09090b}.dark\\:hover\\:rf-bg-red-900\\/90:hover:is(.rf-dark *){background-color:rgba(127,29,29,.9)}.dark\\:hover\\:rf-bg-zinc-50\\/90:hover:is(.rf-dark *){background-color:hsla(0,0%,98%,.9)}.dark\\:hover\\:rf-bg-zinc-800:hover:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity,1))}.dark\\:hover\\:rf-bg-zinc-800\\/80:hover:is(.rf-dark *){background-color:rgba(39,39,42,.8)}.dark\\:hover\\:rf-text-zinc-50:hover:is(.rf-dark *){--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity,1))}.dark\\:focus\\:rf-bg-zinc-800:focus:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity,1))}.dark\\:focus\\:rf-text-zinc-50:focus:is(.rf-dark *){--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity,1))}.dark\\:focus-visible\\:rf-ring-zinc-300:focus-visible:is(.rf-dark *){--tw-ring-opacity:1;--tw-ring-color:rgb(212 212 216/var(--tw-ring-opacity,1))}.dark\\:data-\\[state\\=active\\]\\:rf-bg-zinc-950[data-state=active]:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(9 9 11/var(--tw-bg-opacity,1))}.dark\\:data-\\[state\\=open\\]\\:rf-bg-zinc-800[data-state=open]:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity,1))}.dark\\:data-\\[state\\=active\\]\\:rf-text-zinc-50[data-state=active]:is(.rf-dark *){--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity,1))}.\\[\\&\\>svg\\]\\:rf-size-4>svg{height:1rem;width:1rem}.\\[\\&\\>svg\\]\\:rf-shrink-0>svg{flex-shrink:0}.\\[\\&_svg\\]\\:rf-pointer-events-none svg{pointer-events:none}.\\[\\&_svg\\]\\:rf-size-4 svg{height:1rem;width:1rem}.\\[\\&_svg\\]\\:rf-shrink-0 svg{flex-shrink:0}',useStyles=()=>{reactExports.useEffect(()=>{if(document.querySelector('style[data-styles="tscircuit-runframe"]'))return;const J=document.createElement("style");J.setAttribute("data-styles","tscircuit-runframe"),J.textContent=styles,document.head.appendChild(J)},[])},RenderTimingsBar=({phaseTimings:lV})=>{if(!lV)return null;const J=RV=>`hsl(${RV*137.5%360}, 70%, 50%)`,VV=Object.values(lV).reduce((RV,UV)=>RV+UV,0);return jsxRuntimeExports.jsxs("div",{className:"rf-space-y-2 rf-w-full rf-px-4",children:[jsxRuntimeExports.jsx("div",{className:"rf-relative rf-h-8 rf-flex rf-rounded-sm",children:orderedRenderPhases.map((RV,UV)=>{const ZV=lV[RV]||0,WV=ZV/VV*100;return jsxRuntimeExports.jsx("div",{className:"rf-group rf-relative rf-overflow-visible",style:{width:`${WV}%`,backgroundColor:J(UV)},children:jsxRuntimeExports.jsxs("div",{className:"rf-opacity-0 rf-group-hover:opacity-100 rf-transition-opacity rf-absolute rf-bottom-full rf-left-1/2 rf-transform rf--translate-x-1/2 rf-mb-2 rf-px-2 rf-py-1 rf-text-xs rf-whitespace-nowrap rf-rounded rf-bg-gray-900 rf-text-white rf-pointer-events-none",children:[RV,": ",ZV,"ms"]})},RV)})}),jsxRuntimeExports.jsxs("div",{className:"rf-text-xs rf-text-gray-500",children:["Total: ",VV.toFixed(2),"ms"]})]})},RenderLogViewer=({renderLog:lV})=>{const[J,VV]=reactExports.useState("chronological");if(!lV)return jsxRuntimeExports.jsx("div",{className:"rf-p-4 rf-bg-gray-100 rf-rounded-md",children:"No render log, make sure this tab is open when you render (TODO add a rerender button here)"});const RV=Object.entries((lV==null?void 0:lV.phaseTimings)??{});return J==="chronological"?RV.sort((UV,ZV)=>orderedRenderPhases.indexOf(UV[0])-orderedRenderPhases.indexOf(ZV[0])):RV.sort((UV,ZV)=>ZV[1]-UV[1]),jsxRuntimeExports.jsxs("div",{children:[jsxRuntimeExports.jsxs("div",{className:"rf-flex rf-justify-between rf-items-center",children:[jsxRuntimeExports.jsx("div",{children:"Render Logs"}),jsxRuntimeExports.jsxs("div",{className:"rf-mb-4 rf-pr-2 rf-flex rf-text-xs rf-items-center",children:[jsxRuntimeExports.jsx("div",{className:"rf-mr-2",children:"Sort by:"}),jsxRuntimeExports.jsxs("select",{value:J,onChange:UV=>VV(UV.target.value),className:"rf-px-2 rf-py-1 rf-border rf-rounded rf-text-xs",children:[jsxRuntimeExports.jsx("option",{value:"chronological",children:"Phase Order"}),jsxRuntimeExports.jsx("option",{value:"longest",children:"Duration"})]})]})]}),jsxRuntimeExports.jsx(RenderTimingsBar,{phaseTimings:lV.phaseTimings}),jsxRuntimeExports.jsxs("table",{className:"rf-w-full rf-text-xs",children:[jsxRuntimeExports.jsx("thead",{children:jsxRuntimeExports.jsxs("tr",{children:[jsxRuntimeExports.jsx("th",{className:"rf-text-left rf-p-2",children:"Phase Order"}),jsxRuntimeExports.jsx("th",{className:"rf-text-left rf-p-2",children:"Phase"}),jsxRuntimeExports.jsx("th",{className:"rf-text-left rf-p-2",children:"Duration (ms)"})]})}),jsxRuntimeExports.jsx("tbody",{children:RV.map(([UV,ZV])=>jsxRuntimeExports.jsxs("tr",{children:[jsxRuntimeExports.jsx("td",{className:"rf-p-2",children:orderedRenderPhases.indexOf(UV)}),jsxRuntimeExports.jsx("td",{className:"rf-p-2",children:UV}),jsxRuntimeExports.jsx("td",{className:"rf-p-2",children:ZV})]},UV))})]})]})},dropdownMenuItems=["assembly","bom","circuit_json","errors","render_log"],CircuitJsonPreview=({code:lV,onRunClicked:J=void 0,errorMessage:VV,circuitJsonKey:RV="",circuitJson:UV,showCodeTab:ZV=!1,codeTabContent:WV,showJsonTab:IV=!0,showRenderLogTab:dV=!0,onActiveTabChange:CV,renderLog:FV,showImportAndFormatButtons:NV=!0,className:gV,headerClassName:JV,leftHeaderContent:eV,readOnly:nV,isStreaming:aV,onToggleFullScreen:GV,isFullScreen:YV,isRunningCode:AV,hasCodeChangedSinceLastRun:kV,onEditEvent:QV,editEvents:bV,defaultActiveTab:iV})=>{var KV;useStyles();const[HV,DV]=reactExports.useState(iV??"pcb"),wV=reactExports.useCallback(LV=>{DV(LV),CV==null||CV(LV)},[CV]);return reactExports.useEffect(()=>{VV&&wV("errors")},[VV]),reactExports.useEffect(()=>{HV==="code"&&UV&&!VV&&wV("pcb")},[UV]),jsxRuntimeExports.jsx("div",{className:cn$1("flex flex-col relative",gV),children:jsxRuntimeExports.jsx("div",{className:"rf-md:sticky rf-md:top-2",children:jsxRuntimeExports.jsxs(Tabs,{value:HV,onValueChange:wV,className:"rf-flex-grow rf-flex rf-flex-col rf-p-2",children:[jsxRuntimeExports.jsxs("div",{className:cn$1("rf-flex rf-items-center rf-gap-2",JV),children:[eV,eV&&jsxRuntimeExports.jsx("div",{className:"rf-flex-grow"}),!eV&&AV&&jsxRuntimeExports.jsx(LoaderCircle,{className:"rf-w-4 rf-h-4 rf-animate-spin"}),!eV&&jsxRuntimeExports.jsx("div",{className:"rf-flex-grow"}),FV&&FV.progress!==1&&jsxRuntimeExports.jsxs("div",{className:"rf-flex rf-items-center rf-gap-2",children:[FV.lastRenderEvent&&jsxRuntimeExports.jsx("div",{className:"rf-text-xs rf-text-gray-500",children:(KV=FV.lastRenderEvent)==null?void 0:KV.type.split("renderable:renderLifecycle:")[1].split(":")[0]}),jsxRuntimeExports.jsx("div",{className:"rf-w-4 rf-h-4 rf-bg-blue-500 rf-opacity-50 rf-rounded-full rf-text-white",children:jsxRuntimeExports.jsx(LoaderCircle,{className:"rf-w-4 rf-h-4 rf-animate-spin"})}),jsxRuntimeExports.jsxs("div",{className:"rf-text-xs rf-font-bold rf-text-gray-700 rf-tabular-nums",children:[((FV.progress??0)*100).toFixed(1),"%"]})]}),jsxRuntimeExports.jsxs(TabsList,{children:[ZV&&jsxRuntimeExports.jsx(TabsTrigger,{value:"code",children:"Code"}),jsxRuntimeExports.jsxs(TabsTrigger,{value:"pcb",className:"rf-whitespace-nowrap",children:[UV&&jsxRuntimeExports.jsx("span",{className:cn$1("rf-inline-flex rf-items-center rf-justify-center rf-w-2 rf-h-2 rf-mr-1 rf-text-xs rf-font-bold rf-text-white rf-rounded-full",kV?"rf-bg-gray-500":"rf-bg-blue-500")}),"PCB"]}),jsxRuntimeExports.jsxs(TabsTrigger,{value:"schematic",className:"rf-whitespace-nowrap",children:[UV&&jsxRuntimeExports.jsx("span",{className:cn$1("rf-inline-flex rf-items-center rf-justify-center rf-w-2 rf-h-2 rf-mr-1 rf-text-xs rf-font-bold rf-text-white rf-rounded-full",kV?"rf-bg-gray-500":"rf-bg-blue-500")}),"Schematic"]}),jsxRuntimeExports.jsxs(TabsTrigger,{value:"cad",children:[UV&&jsxRuntimeExports.jsx("span",{className:cn$1("inline-flex items-center justify-center w-2 h-2 mr-1 text-xs font-bold text-white rounded-full",kV?"rf-bg-gray-500":"rf-bg-blue-500")}),"3D"]}),!["pcb","cad","schematic"].includes(HV)&&jsxRuntimeExports.jsx(TabsTrigger,{value:HV,children:capitalizeFirstLetters(HV)}),jsxRuntimeExports.jsxs(DropdownMenu,{children:[jsxRuntimeExports.jsx(DropdownMenuTrigger,{asChild:!0,children:jsxRuntimeExports.jsxs("div",{className:"rf-whitespace-nowrap rf-p-2 rf-mr-1 rf-cursor-pointer rf-relative",children:[jsxRuntimeExports.jsx(Ellipsis,{className:"rf-w-4 rf-h-4"}),VV&&jsxRuntimeExports.jsx("span",{className:"rf-inline-flex rf-absolute rf-top-[6px] rf-right-[4px] rf-items-center rf-justify-center rf-w-1 rf-h-1 rf-ml-2 rf-text-[8px] rf-font-bold rf-text-white rf-bg-red-500 rf-rounded-full"})]})}),jsxRuntimeExports.jsx(DropdownMenuContent,{className:"rf-*:text-xs",children:dropdownMenuItems.map(LV=>jsxRuntimeExports.jsxs(DropdownMenuItem,{onSelect:()=>wV(LV),children:[jsxRuntimeExports.jsx(Check,{className:cn$1("rf-w-3 rf-h-3 rf-mr-2",HV!==LV&&"rf-invisible")}),jsxRuntimeExports.jsx("div",{className:"rf-pr-2",children:capitalizeFirstLetters(LV)}),LV==="errors"&&VV&&jsxRuntimeExports.jsx("span",{className:"rf-inline-flex rf-items-center rf-justify-center rf-w-3 rf-h-3 rf-ml-2 rf-text-[8px] rf-font-bold rf-text-white rf-bg-red-500 rf-rounded-full",children:"1"})]},LV))})]})]}),GV&&jsxRuntimeExports.jsx(Button,{onClick:GV,variant:"ghost",children:YV?jsxRuntimeExports.jsx(Minimize,{size:16}):jsxRuntimeExports.jsx(Fullscreen,{size:16})})]}),ZV&&jsxRuntimeExports.jsx(TabsContent,{value:"code",className:"rf-flex-grow rf-overflow-hidden",children:jsxRuntimeExports.jsx("div",{className:"rf-h-full",children:WV})}),jsxRuntimeExports.jsx(TabsContent,{value:"pcb",children:jsxRuntimeExports.jsx("div",{className:cn$1("rf-overflow-hidden",YV?"rf-h-[calc(100vh-96px)]":"rf-h-[620px]"),children:jsxRuntimeExports.jsx(ErrorBoundary,{fallback:jsxRuntimeExports.jsx("div",{children:"Error loading PCB viewer"}),children:UV?jsxRuntimeExports.jsx(PcbViewerWithContainerHeight,{soup:UV,containerClassName:cn$1("rf-h-full rf-w-full",YV?"rf-min-h-[calc(100vh-240px)]":"rf-min-h-[620px]")},RV):jsxRuntimeExports.jsx(PreviewEmptyState,{onRunClicked:J})})})}),jsxRuntimeExports.jsx(TabsContent,{value:"assembly",children:jsxRuntimeExports.jsx("div",{className:cn$1("rf-overflow-auto",YV?"rf-h-[calc(100vh-96px)]":"rf-h-[620px]"),children:jsxRuntimeExports.jsx(ErrorBoundary,{fallback:jsxRuntimeExports.jsx("div",{children:"Error loading Assembly"}),children:UV?jsxRuntimeExports.jsx(AssemblyViewer,{circuitJson:UV,containerStyle:{height:"100%"},editingEnabled:!0,debugGrid:!0}):jsxRuntimeExports.jsx(PreviewEmptyState,{onRunClicked:J})})})}),jsxRuntimeExports.jsx(TabsContent,{value:"schematic",children:jsxRuntimeExports.jsx("div",{className:cn$1("rf-overflow-auto",YV?"rf-h-[calc(100vh-96px)]":"rf-h-[620px]"),children:jsxRuntimeExports.jsx(ErrorBoundary,{fallback:jsxRuntimeExports.jsx("div",{children:"Error loading Schematic"}),children:UV?jsxRuntimeExports.jsx(SchematicViewer,{circuitJson:UV,containerStyle:{height:"100%"},editingEnabled:!0,onEditEvent:LV=>QV==null?void 0:QV(LV),editEvents:bV,debugGrid:!0}):jsxRuntimeExports.jsx(PreviewEmptyState,{onRunClicked:J})})})}),jsxRuntimeExports.jsx(TabsContent,{value:"cad",children:jsxRuntimeExports.jsx("div",{className:cn$1("rf-overflow-auto",YV?"rf-h-[calc(100vh-96px)]":"rf-h-[620px]"),children:jsxRuntimeExports.jsx(ErrorBoundary,{FallbackComponent:ErrorFallback,children:UV?jsxRuntimeExports.jsx(distExports$1.CadViewer,{soup:UV}):jsxRuntimeExports.jsx(PreviewEmptyState,{onRunClicked:J})})})}),jsxRuntimeExports.jsx(TabsContent,{value:"bom",children:jsxRuntimeExports.jsx("div",{className:cn$1("rf-overflow-auto",YV?"rf-h-[calc(100vh-96px)]":"rf-h-[620px]"),children:jsxRuntimeExports.jsx(ErrorBoundary,{fallback:jsxRuntimeExports.jsx("div",{children:"Error loading BOM"}),children:UV?jsxRuntimeExports.jsx(BomTable,{circuitJson:UV}):jsxRuntimeExports.jsx(PreviewEmptyState,{onRunClicked:J})})})}),jsxRuntimeExports.jsx(TabsContent,{value:"circuit_json",children:jsxRuntimeExports.jsx("div",{className:cn$1("rf-overflow-auto",YV?"rf-h-[calc(100vh-96px)]":"rf-h-[620px]"),children:jsxRuntimeExports.jsx(ErrorBoundary,{fallback:jsxRuntimeExports.jsx("div",{children:"Error loading JSON viewer"}),children:UV?jsxRuntimeExports.jsx(CircuitJsonTableViewer,{elements:UV}):jsxRuntimeExports.jsx(PreviewEmptyState,{onRunClicked:J})})})}),jsxRuntimeExports.jsx(TabsContent,{value:"errors",children:UV||VV?jsxRuntimeExports.jsx(ErrorTabContent,{code:lV,errorMessage:VV}):jsxRuntimeExports.jsx(PreviewEmptyState,{onRunClicked:J})}),dV&&jsxRuntimeExports.jsx(TabsContent,{value:"render_log",children:jsxRuntimeExports.jsx(RenderLogViewer,{renderLog:FV})})]})})})};/**
|
|
22690
|
+
`)},idCounter=0,lockStack=[];function RemoveScrollSideCar(lV){var J=reactExports.useRef([]),VV=reactExports.useRef([0,0]),RV=reactExports.useRef(),UV=reactExports.useState(idCounter++)[0],ZV=reactExports.useState(styleSingleton)[0],WV=reactExports.useRef(lV);reactExports.useEffect(function(){WV.current=lV},[lV]),reactExports.useEffect(function(){if(lV.inert){document.body.classList.add("block-interactivity-".concat(UV));var nV=__spreadArray([lV.lockRef.current],(lV.shards||[]).map(extractRef),!0).filter(Boolean);return nV.forEach(function(aV){return aV.classList.add("allow-interactivity-".concat(UV))}),function(){document.body.classList.remove("block-interactivity-".concat(UV)),nV.forEach(function(aV){return aV.classList.remove("allow-interactivity-".concat(UV))})}}},[lV.inert,lV.lockRef.current,lV.shards]);var IV=reactExports.useCallback(function(nV,aV){if("touches"in nV&&nV.touches.length===2||nV.type==="wheel"&&nV.ctrlKey)return!WV.current.allowPinchZoom;var GV=getTouchXY(nV),YV=VV.current,AV="deltaX"in nV?nV.deltaX:YV[0]-GV[0],kV="deltaY"in nV?nV.deltaY:YV[1]-GV[1],QV,bV=nV.target,iV=Math.abs(AV)>Math.abs(kV)?"h":"v";if("touches"in nV&&iV==="h"&&bV.type==="range")return!1;var HV=locationCouldBeScrolled(iV,bV);if(!HV)return!0;if(HV?QV=iV:(QV=iV==="v"?"h":"v",HV=locationCouldBeScrolled(iV,bV)),!HV)return!1;if(!RV.current&&"changedTouches"in nV&&(AV||kV)&&(RV.current=QV),!QV)return!0;var DV=RV.current||QV;return handleScroll(DV,aV,nV,DV==="h"?AV:kV,!0)},[]),dV=reactExports.useCallback(function(nV){var aV=nV;if(!(!lockStack.length||lockStack[lockStack.length-1]!==ZV)){var GV="deltaY"in aV?getDeltaXY(aV):getTouchXY(aV),YV=J.current.filter(function(QV){return QV.name===aV.type&&(QV.target===aV.target||aV.target===QV.shadowParent)&&deltaCompare(QV.delta,GV)})[0];if(YV&&YV.should){aV.cancelable&&aV.preventDefault();return}if(!YV){var AV=(WV.current.shards||[]).map(extractRef).filter(Boolean).filter(function(QV){return QV.contains(aV.target)}),kV=AV.length>0?IV(aV,AV[0]):!WV.current.noIsolation;kV&&aV.cancelable&&aV.preventDefault()}}},[]),CV=reactExports.useCallback(function(nV,aV,GV,YV){var AV={name:nV,delta:aV,target:GV,should:YV,shadowParent:getOutermostShadowParent(GV)};J.current.push(AV),setTimeout(function(){J.current=J.current.filter(function(kV){return kV!==AV})},1)},[]),FV=reactExports.useCallback(function(nV){VV.current=getTouchXY(nV),RV.current=void 0},[]),NV=reactExports.useCallback(function(nV){CV(nV.type,getDeltaXY(nV),nV.target,IV(nV,lV.lockRef.current))},[]),gV=reactExports.useCallback(function(nV){CV(nV.type,getTouchXY(nV),nV.target,IV(nV,lV.lockRef.current))},[]);reactExports.useEffect(function(){return lockStack.push(ZV),lV.setCallbacks({onScrollCapture:NV,onWheelCapture:NV,onTouchMoveCapture:gV}),document.addEventListener("wheel",dV,nonPassive),document.addEventListener("touchmove",dV,nonPassive),document.addEventListener("touchstart",FV,nonPassive),function(){lockStack=lockStack.filter(function(nV){return nV!==ZV}),document.removeEventListener("wheel",dV,nonPassive),document.removeEventListener("touchmove",dV,nonPassive),document.removeEventListener("touchstart",FV,nonPassive)}},[]);var JV=lV.removeScrollBar,eV=lV.inert;return reactExports.createElement(reactExports.Fragment,null,eV?reactExports.createElement(ZV,{styles:generateStyle(UV)}):null,JV?reactExports.createElement(RemoveScrollBar,{gapMode:lV.gapMode}):null)}function getOutermostShadowParent(lV){for(var J=null;lV!==null;)lV instanceof ShadowRoot&&(J=lV.host,lV=lV.host),lV=lV.parentNode;return J}const SideCar=exportSidecar(effectCar,RemoveScrollSideCar);var ReactRemoveScroll=reactExports.forwardRef(function(lV,J){return reactExports.createElement(RemoveScroll,__assign({},lV,{ref:J,sideCar:SideCar}))});ReactRemoveScroll.classNames=RemoveScroll.classNames;var SELECTION_KEYS=["Enter"," "],FIRST_KEYS=["ArrowDown","PageUp","Home"],LAST_KEYS=["ArrowUp","PageDown","End"],FIRST_LAST_KEYS=[...FIRST_KEYS,...LAST_KEYS],SUB_OPEN_KEYS={ltr:[...SELECTION_KEYS,"ArrowRight"],rtl:[...SELECTION_KEYS,"ArrowLeft"]},SUB_CLOSE_KEYS={ltr:["ArrowLeft"],rtl:["ArrowRight"]},MENU_NAME="Menu",[Collection,useCollection,createCollectionScope]=createCollection(MENU_NAME),[createMenuContext,createMenuScope]=createContextScope(MENU_NAME,[createCollectionScope,createPopperScope,createRovingFocusGroupScope]),usePopperScope=createPopperScope(),useRovingFocusGroupScope=createRovingFocusGroupScope(),[MenuProvider,useMenuContext]=createMenuContext(MENU_NAME),[MenuRootProvider,useMenuRootContext]=createMenuContext(MENU_NAME),Menu=lV=>{const{__scopeMenu:J,open:VV=!1,children:RV,dir:UV,onOpenChange:ZV,modal:WV=!0}=lV,IV=usePopperScope(J),[dV,CV]=reactExports.useState(null),FV=reactExports.useRef(!1),NV=useCallbackRef$1(ZV),gV=useDirection(UV);return reactExports.useEffect(()=>{const JV=()=>{FV.current=!0,document.addEventListener("pointerdown",eV,{capture:!0,once:!0}),document.addEventListener("pointermove",eV,{capture:!0,once:!0})},eV=()=>FV.current=!1;return document.addEventListener("keydown",JV,{capture:!0}),()=>{document.removeEventListener("keydown",JV,{capture:!0}),document.removeEventListener("pointerdown",eV,{capture:!0}),document.removeEventListener("pointermove",eV,{capture:!0})}},[]),jsxRuntimeExports.jsx(Root2$1,{...IV,children:jsxRuntimeExports.jsx(MenuProvider,{scope:J,open:VV,onOpenChange:NV,content:dV,onContentChange:CV,children:jsxRuntimeExports.jsx(MenuRootProvider,{scope:J,onClose:reactExports.useCallback(()=>NV(!1),[NV]),isUsingKeyboardRef:FV,dir:gV,modal:WV,children:RV})})})};Menu.displayName=MENU_NAME;var ANCHOR_NAME="MenuAnchor",MenuAnchor=reactExports.forwardRef((lV,J)=>{const{__scopeMenu:VV,...RV}=lV,UV=usePopperScope(VV);return jsxRuntimeExports.jsx(Anchor,{...UV,...RV,ref:J})});MenuAnchor.displayName=ANCHOR_NAME;var PORTAL_NAME$1="MenuPortal",[PortalProvider,usePortalContext]=createMenuContext(PORTAL_NAME$1,{forceMount:void 0}),MenuPortal=lV=>{const{__scopeMenu:J,forceMount:VV,children:RV,container:UV}=lV,ZV=useMenuContext(PORTAL_NAME$1,J);return jsxRuntimeExports.jsx(PortalProvider,{scope:J,forceMount:VV,children:jsxRuntimeExports.jsx(Presence,{present:VV||ZV.open,children:jsxRuntimeExports.jsx(Portal$1,{asChild:!0,container:UV,children:RV})})})};MenuPortal.displayName=PORTAL_NAME$1;var CONTENT_NAME$1="MenuContent",[MenuContentProvider,useMenuContentContext]=createMenuContext(CONTENT_NAME$1),MenuContent=reactExports.forwardRef((lV,J)=>{const VV=usePortalContext(CONTENT_NAME$1,lV.__scopeMenu),{forceMount:RV=VV.forceMount,...UV}=lV,ZV=useMenuContext(CONTENT_NAME$1,lV.__scopeMenu),WV=useMenuRootContext(CONTENT_NAME$1,lV.__scopeMenu);return jsxRuntimeExports.jsx(Collection.Provider,{scope:lV.__scopeMenu,children:jsxRuntimeExports.jsx(Presence,{present:RV||ZV.open,children:jsxRuntimeExports.jsx(Collection.Slot,{scope:lV.__scopeMenu,children:WV.modal?jsxRuntimeExports.jsx(MenuRootContentModal,{...UV,ref:J}):jsxRuntimeExports.jsx(MenuRootContentNonModal,{...UV,ref:J})})})})}),MenuRootContentModal=reactExports.forwardRef((lV,J)=>{const VV=useMenuContext(CONTENT_NAME$1,lV.__scopeMenu),RV=reactExports.useRef(null),UV=useComposedRefs(J,RV);return reactExports.useEffect(()=>{const ZV=RV.current;if(ZV)return hideOthers(ZV)},[]),jsxRuntimeExports.jsx(MenuContentImpl,{...lV,ref:UV,trapFocus:VV.open,disableOutsidePointerEvents:VV.open,disableOutsideScroll:!0,onFocusOutside:composeEventHandlers(lV.onFocusOutside,ZV=>ZV.preventDefault(),{checkForDefaultPrevented:!1}),onDismiss:()=>VV.onOpenChange(!1)})}),MenuRootContentNonModal=reactExports.forwardRef((lV,J)=>{const VV=useMenuContext(CONTENT_NAME$1,lV.__scopeMenu);return jsxRuntimeExports.jsx(MenuContentImpl,{...lV,ref:J,trapFocus:!1,disableOutsidePointerEvents:!1,disableOutsideScroll:!1,onDismiss:()=>VV.onOpenChange(!1)})}),MenuContentImpl=reactExports.forwardRef((lV,J)=>{const{__scopeMenu:VV,loop:RV=!1,trapFocus:UV,onOpenAutoFocus:ZV,onCloseAutoFocus:WV,disableOutsidePointerEvents:IV,onEntryFocus:dV,onEscapeKeyDown:CV,onPointerDownOutside:FV,onFocusOutside:NV,onInteractOutside:gV,onDismiss:JV,disableOutsideScroll:eV,...nV}=lV,aV=useMenuContext(CONTENT_NAME$1,VV),GV=useMenuRootContext(CONTENT_NAME$1,VV),YV=usePopperScope(VV),AV=useRovingFocusGroupScope(VV),kV=useCollection(VV),[QV,bV]=reactExports.useState(null),iV=reactExports.useRef(null),HV=useComposedRefs(J,iV,aV.onContentChange),DV=reactExports.useRef(0),wV=reactExports.useRef(""),KV=reactExports.useRef(0),LV=reactExports.useRef(null),Ul=reactExports.useRef("right"),el=reactExports.useRef(0),hl=eV?ReactRemoveScroll:reactExports.Fragment,Cl=eV?{as:Slot,allowPinchZoom:!0}:void 0,Vl=Wl=>{var Ll,ZR;const Jl=wV.current+Wl,Fl=kV().filter(yl=>!yl.disabled),al=document.activeElement,zl=(Ll=Fl.find(yl=>yl.ref.current===al))==null?void 0:Ll.textValue,pl=Fl.map(yl=>yl.textValue),Ol=getNextMatch(pl,Jl,zl),Pl=(ZR=Fl.find(yl=>yl.textValue===Ol))==null?void 0:ZR.ref.current;(function yl(il){wV.current=il,window.clearTimeout(DV.current),il!==""&&(DV.current=window.setTimeout(()=>yl(""),1e3))})(Jl),Pl&&setTimeout(()=>Pl.focus())};reactExports.useEffect(()=>()=>window.clearTimeout(DV.current),[]),useFocusGuards();const PV=reactExports.useCallback(Wl=>{var Fl,al;return Ul.current===((Fl=LV.current)==null?void 0:Fl.side)&&isPointerInGraceArea(Wl,(al=LV.current)==null?void 0:al.area)},[]);return jsxRuntimeExports.jsx(MenuContentProvider,{scope:VV,searchRef:wV,onItemEnter:reactExports.useCallback(Wl=>{PV(Wl)&&Wl.preventDefault()},[PV]),onItemLeave:reactExports.useCallback(Wl=>{var Jl;PV(Wl)||((Jl=iV.current)==null||Jl.focus(),bV(null))},[PV]),onTriggerLeave:reactExports.useCallback(Wl=>{PV(Wl)&&Wl.preventDefault()},[PV]),pointerGraceTimerRef:KV,onPointerGraceIntentChange:reactExports.useCallback(Wl=>{LV.current=Wl},[]),children:jsxRuntimeExports.jsx(hl,{...Cl,children:jsxRuntimeExports.jsx(FocusScope,{asChild:!0,trapped:UV,onMountAutoFocus:composeEventHandlers(ZV,Wl=>{var Jl;Wl.preventDefault(),(Jl=iV.current)==null||Jl.focus({preventScroll:!0})}),onUnmountAutoFocus:WV,children:jsxRuntimeExports.jsx(DismissableLayer,{asChild:!0,disableOutsidePointerEvents:IV,onEscapeKeyDown:CV,onPointerDownOutside:FV,onFocusOutside:NV,onInteractOutside:gV,onDismiss:JV,children:jsxRuntimeExports.jsx(Root$1,{asChild:!0,...AV,dir:GV.dir,orientation:"vertical",loop:RV,currentTabStopId:QV,onCurrentTabStopIdChange:bV,onEntryFocus:composeEventHandlers(dV,Wl=>{GV.isUsingKeyboardRef.current||Wl.preventDefault()}),preventScrollOnEntryFocus:!0,children:jsxRuntimeExports.jsx(Content,{role:"menu","aria-orientation":"vertical","data-state":getOpenState(aV.open),"data-radix-menu-content":"",dir:GV.dir,...YV,...nV,ref:HV,style:{outline:"none",...nV.style},onKeyDown:composeEventHandlers(nV.onKeyDown,Wl=>{const Fl=Wl.target.closest("[data-radix-menu-content]")===Wl.currentTarget,al=Wl.ctrlKey||Wl.altKey||Wl.metaKey,zl=Wl.key.length===1;Fl&&(Wl.key==="Tab"&&Wl.preventDefault(),!al&&zl&&Vl(Wl.key));const pl=iV.current;if(Wl.target!==pl||!FIRST_LAST_KEYS.includes(Wl.key))return;Wl.preventDefault();const Pl=kV().filter(Ll=>!Ll.disabled).map(Ll=>Ll.ref.current);LAST_KEYS.includes(Wl.key)&&Pl.reverse(),focusFirst(Pl)}),onBlur:composeEventHandlers(lV.onBlur,Wl=>{Wl.currentTarget.contains(Wl.target)||(window.clearTimeout(DV.current),wV.current="")}),onPointerMove:composeEventHandlers(lV.onPointerMove,whenMouse(Wl=>{const Jl=Wl.target,Fl=el.current!==Wl.clientX;if(Wl.currentTarget.contains(Jl)&&Fl){const al=Wl.clientX>el.current?"right":"left";Ul.current=al,el.current=Wl.clientX}}))})})})})})})});MenuContent.displayName=CONTENT_NAME$1;var GROUP_NAME$1="MenuGroup",MenuGroup=reactExports.forwardRef((lV,J)=>{const{__scopeMenu:VV,...RV}=lV;return jsxRuntimeExports.jsx(Primitive.div,{role:"group",...RV,ref:J})});MenuGroup.displayName=GROUP_NAME$1;var LABEL_NAME$1="MenuLabel",MenuLabel=reactExports.forwardRef((lV,J)=>{const{__scopeMenu:VV,...RV}=lV;return jsxRuntimeExports.jsx(Primitive.div,{...RV,ref:J})});MenuLabel.displayName=LABEL_NAME$1;var ITEM_NAME$1="MenuItem",ITEM_SELECT="menu.itemSelect",MenuItem=reactExports.forwardRef((lV,J)=>{const{disabled:VV=!1,onSelect:RV,...UV}=lV,ZV=reactExports.useRef(null),WV=useMenuRootContext(ITEM_NAME$1,lV.__scopeMenu),IV=useMenuContentContext(ITEM_NAME$1,lV.__scopeMenu),dV=useComposedRefs(J,ZV),CV=reactExports.useRef(!1),FV=()=>{const NV=ZV.current;if(!VV&&NV){const gV=new CustomEvent(ITEM_SELECT,{bubbles:!0,cancelable:!0});NV.addEventListener(ITEM_SELECT,JV=>RV==null?void 0:RV(JV),{once:!0}),dispatchDiscreteCustomEvent(NV,gV),gV.defaultPrevented?CV.current=!1:WV.onClose()}};return jsxRuntimeExports.jsx(MenuItemImpl,{...UV,ref:dV,disabled:VV,onClick:composeEventHandlers(lV.onClick,FV),onPointerDown:NV=>{var gV;(gV=lV.onPointerDown)==null||gV.call(lV,NV),CV.current=!0},onPointerUp:composeEventHandlers(lV.onPointerUp,NV=>{var gV;CV.current||(gV=NV.currentTarget)==null||gV.click()}),onKeyDown:composeEventHandlers(lV.onKeyDown,NV=>{const gV=IV.searchRef.current!=="";VV||gV&&NV.key===" "||SELECTION_KEYS.includes(NV.key)&&(NV.currentTarget.click(),NV.preventDefault())})})});MenuItem.displayName=ITEM_NAME$1;var MenuItemImpl=reactExports.forwardRef((lV,J)=>{const{__scopeMenu:VV,disabled:RV=!1,textValue:UV,...ZV}=lV,WV=useMenuContentContext(ITEM_NAME$1,VV),IV=useRovingFocusGroupScope(VV),dV=reactExports.useRef(null),CV=useComposedRefs(J,dV),[FV,NV]=reactExports.useState(!1),[gV,JV]=reactExports.useState("");return reactExports.useEffect(()=>{const eV=dV.current;eV&&JV((eV.textContent??"").trim())},[ZV.children]),jsxRuntimeExports.jsx(Collection.ItemSlot,{scope:VV,disabled:RV,textValue:UV??gV,children:jsxRuntimeExports.jsx(Item,{asChild:!0,...IV,focusable:!RV,children:jsxRuntimeExports.jsx(Primitive.div,{role:"menuitem","data-highlighted":FV?"":void 0,"aria-disabled":RV||void 0,"data-disabled":RV?"":void 0,...ZV,ref:CV,onPointerMove:composeEventHandlers(lV.onPointerMove,whenMouse(eV=>{RV?WV.onItemLeave(eV):(WV.onItemEnter(eV),eV.defaultPrevented||eV.currentTarget.focus({preventScroll:!0}))})),onPointerLeave:composeEventHandlers(lV.onPointerLeave,whenMouse(eV=>WV.onItemLeave(eV))),onFocus:composeEventHandlers(lV.onFocus,()=>NV(!0)),onBlur:composeEventHandlers(lV.onBlur,()=>NV(!1))})})})}),CHECKBOX_ITEM_NAME$1="MenuCheckboxItem",MenuCheckboxItem=reactExports.forwardRef((lV,J)=>{const{checked:VV=!1,onCheckedChange:RV,...UV}=lV;return jsxRuntimeExports.jsx(ItemIndicatorProvider,{scope:lV.__scopeMenu,checked:VV,children:jsxRuntimeExports.jsx(MenuItem,{role:"menuitemcheckbox","aria-checked":isIndeterminate(VV)?"mixed":VV,...UV,ref:J,"data-state":getCheckedState(VV),onSelect:composeEventHandlers(UV.onSelect,()=>RV==null?void 0:RV(isIndeterminate(VV)?!0:!VV),{checkForDefaultPrevented:!1})})})});MenuCheckboxItem.displayName=CHECKBOX_ITEM_NAME$1;var RADIO_GROUP_NAME$1="MenuRadioGroup",[RadioGroupProvider,useRadioGroupContext]=createMenuContext(RADIO_GROUP_NAME$1,{value:void 0,onValueChange:()=>{}}),MenuRadioGroup=reactExports.forwardRef((lV,J)=>{const{value:VV,onValueChange:RV,...UV}=lV,ZV=useCallbackRef$1(RV);return jsxRuntimeExports.jsx(RadioGroupProvider,{scope:lV.__scopeMenu,value:VV,onValueChange:ZV,children:jsxRuntimeExports.jsx(MenuGroup,{...UV,ref:J})})});MenuRadioGroup.displayName=RADIO_GROUP_NAME$1;var RADIO_ITEM_NAME$1="MenuRadioItem",MenuRadioItem=reactExports.forwardRef((lV,J)=>{const{value:VV,...RV}=lV,UV=useRadioGroupContext(RADIO_ITEM_NAME$1,lV.__scopeMenu),ZV=VV===UV.value;return jsxRuntimeExports.jsx(ItemIndicatorProvider,{scope:lV.__scopeMenu,checked:ZV,children:jsxRuntimeExports.jsx(MenuItem,{role:"menuitemradio","aria-checked":ZV,...RV,ref:J,"data-state":getCheckedState(ZV),onSelect:composeEventHandlers(RV.onSelect,()=>{var WV;return(WV=UV.onValueChange)==null?void 0:WV.call(UV,VV)},{checkForDefaultPrevented:!1})})})});MenuRadioItem.displayName=RADIO_ITEM_NAME$1;var ITEM_INDICATOR_NAME="MenuItemIndicator",[ItemIndicatorProvider,useItemIndicatorContext]=createMenuContext(ITEM_INDICATOR_NAME,{checked:!1}),MenuItemIndicator=reactExports.forwardRef((lV,J)=>{const{__scopeMenu:VV,forceMount:RV,...UV}=lV,ZV=useItemIndicatorContext(ITEM_INDICATOR_NAME,VV);return jsxRuntimeExports.jsx(Presence,{present:RV||isIndeterminate(ZV.checked)||ZV.checked===!0,children:jsxRuntimeExports.jsx(Primitive.span,{...UV,ref:J,"data-state":getCheckedState(ZV.checked)})})});MenuItemIndicator.displayName=ITEM_INDICATOR_NAME;var SEPARATOR_NAME$1="MenuSeparator",MenuSeparator=reactExports.forwardRef((lV,J)=>{const{__scopeMenu:VV,...RV}=lV;return jsxRuntimeExports.jsx(Primitive.div,{role:"separator","aria-orientation":"horizontal",...RV,ref:J})});MenuSeparator.displayName=SEPARATOR_NAME$1;var ARROW_NAME$1="MenuArrow",MenuArrow=reactExports.forwardRef((lV,J)=>{const{__scopeMenu:VV,...RV}=lV,UV=usePopperScope(VV);return jsxRuntimeExports.jsx(Arrow,{...UV,...RV,ref:J})});MenuArrow.displayName=ARROW_NAME$1;var SUB_NAME="MenuSub",[MenuSubProvider,useMenuSubContext]=createMenuContext(SUB_NAME),SUB_TRIGGER_NAME$1="MenuSubTrigger",MenuSubTrigger=reactExports.forwardRef((lV,J)=>{const VV=useMenuContext(SUB_TRIGGER_NAME$1,lV.__scopeMenu),RV=useMenuRootContext(SUB_TRIGGER_NAME$1,lV.__scopeMenu),UV=useMenuSubContext(SUB_TRIGGER_NAME$1,lV.__scopeMenu),ZV=useMenuContentContext(SUB_TRIGGER_NAME$1,lV.__scopeMenu),WV=reactExports.useRef(null),{pointerGraceTimerRef:IV,onPointerGraceIntentChange:dV}=ZV,CV={__scopeMenu:lV.__scopeMenu},FV=reactExports.useCallback(()=>{WV.current&&window.clearTimeout(WV.current),WV.current=null},[]);return reactExports.useEffect(()=>FV,[FV]),reactExports.useEffect(()=>{const NV=IV.current;return()=>{window.clearTimeout(NV),dV(null)}},[IV,dV]),jsxRuntimeExports.jsx(MenuAnchor,{asChild:!0,...CV,children:jsxRuntimeExports.jsx(MenuItemImpl,{id:UV.triggerId,"aria-haspopup":"menu","aria-expanded":VV.open,"aria-controls":UV.contentId,"data-state":getOpenState(VV.open),...lV,ref:composeRefs(J,UV.onTriggerChange),onClick:NV=>{var gV;(gV=lV.onClick)==null||gV.call(lV,NV),!(lV.disabled||NV.defaultPrevented)&&(NV.currentTarget.focus(),VV.open||VV.onOpenChange(!0))},onPointerMove:composeEventHandlers(lV.onPointerMove,whenMouse(NV=>{ZV.onItemEnter(NV),!NV.defaultPrevented&&!lV.disabled&&!VV.open&&!WV.current&&(ZV.onPointerGraceIntentChange(null),WV.current=window.setTimeout(()=>{VV.onOpenChange(!0),FV()},100))})),onPointerLeave:composeEventHandlers(lV.onPointerLeave,whenMouse(NV=>{var JV,eV;FV();const gV=(JV=VV.content)==null?void 0:JV.getBoundingClientRect();if(gV){const nV=(eV=VV.content)==null?void 0:eV.dataset.side,aV=nV==="right",GV=aV?-5:5,YV=gV[aV?"left":"right"],AV=gV[aV?"right":"left"];ZV.onPointerGraceIntentChange({area:[{x:NV.clientX+GV,y:NV.clientY},{x:YV,y:gV.top},{x:AV,y:gV.top},{x:AV,y:gV.bottom},{x:YV,y:gV.bottom}],side:nV}),window.clearTimeout(IV.current),IV.current=window.setTimeout(()=>ZV.onPointerGraceIntentChange(null),300)}else{if(ZV.onTriggerLeave(NV),NV.defaultPrevented)return;ZV.onPointerGraceIntentChange(null)}})),onKeyDown:composeEventHandlers(lV.onKeyDown,NV=>{var JV;const gV=ZV.searchRef.current!=="";lV.disabled||gV&&NV.key===" "||SUB_OPEN_KEYS[RV.dir].includes(NV.key)&&(VV.onOpenChange(!0),(JV=VV.content)==null||JV.focus(),NV.preventDefault())})})})});MenuSubTrigger.displayName=SUB_TRIGGER_NAME$1;var SUB_CONTENT_NAME$1="MenuSubContent",MenuSubContent=reactExports.forwardRef((lV,J)=>{const VV=usePortalContext(CONTENT_NAME$1,lV.__scopeMenu),{forceMount:RV=VV.forceMount,...UV}=lV,ZV=useMenuContext(CONTENT_NAME$1,lV.__scopeMenu),WV=useMenuRootContext(CONTENT_NAME$1,lV.__scopeMenu),IV=useMenuSubContext(SUB_CONTENT_NAME$1,lV.__scopeMenu),dV=reactExports.useRef(null),CV=useComposedRefs(J,dV);return jsxRuntimeExports.jsx(Collection.Provider,{scope:lV.__scopeMenu,children:jsxRuntimeExports.jsx(Presence,{present:RV||ZV.open,children:jsxRuntimeExports.jsx(Collection.Slot,{scope:lV.__scopeMenu,children:jsxRuntimeExports.jsx(MenuContentImpl,{id:IV.contentId,"aria-labelledby":IV.triggerId,...UV,ref:CV,align:"start",side:WV.dir==="rtl"?"left":"right",disableOutsidePointerEvents:!1,disableOutsideScroll:!1,trapFocus:!1,onOpenAutoFocus:FV=>{var NV;WV.isUsingKeyboardRef.current&&((NV=dV.current)==null||NV.focus()),FV.preventDefault()},onCloseAutoFocus:FV=>FV.preventDefault(),onFocusOutside:composeEventHandlers(lV.onFocusOutside,FV=>{FV.target!==IV.trigger&&ZV.onOpenChange(!1)}),onEscapeKeyDown:composeEventHandlers(lV.onEscapeKeyDown,FV=>{WV.onClose(),FV.preventDefault()}),onKeyDown:composeEventHandlers(lV.onKeyDown,FV=>{var JV;const NV=FV.currentTarget.contains(FV.target),gV=SUB_CLOSE_KEYS[WV.dir].includes(FV.key);NV&&gV&&(ZV.onOpenChange(!1),(JV=IV.trigger)==null||JV.focus(),FV.preventDefault())})})})})})});MenuSubContent.displayName=SUB_CONTENT_NAME$1;function getOpenState(lV){return lV?"open":"closed"}function isIndeterminate(lV){return lV==="indeterminate"}function getCheckedState(lV){return isIndeterminate(lV)?"indeterminate":lV?"checked":"unchecked"}function focusFirst(lV){const J=document.activeElement;for(const VV of lV)if(VV===J||(VV.focus(),document.activeElement!==J))return}function wrapArray(lV,J){return lV.map((VV,RV)=>lV[(J+RV)%lV.length])}function getNextMatch(lV,J,VV){const UV=J.length>1&&Array.from(J).every(CV=>CV===J[0])?J[0]:J,ZV=VV?lV.indexOf(VV):-1;let WV=wrapArray(lV,Math.max(ZV,0));UV.length===1&&(WV=WV.filter(CV=>CV!==VV));const dV=WV.find(CV=>CV.toLowerCase().startsWith(UV.toLowerCase()));return dV!==VV?dV:void 0}function isPointInPolygon(lV,J){const{x:VV,y:RV}=lV;let UV=!1;for(let ZV=0,WV=J.length-1;ZV<J.length;WV=ZV++){const IV=J[ZV].x,dV=J[ZV].y,CV=J[WV].x,FV=J[WV].y;dV>RV!=FV>RV&&VV<(CV-IV)*(RV-dV)/(FV-dV)+IV&&(UV=!UV)}return UV}function isPointerInGraceArea(lV,J){if(!J)return!1;const VV={x:lV.clientX,y:lV.clientY};return isPointInPolygon(VV,J)}function whenMouse(lV){return J=>J.pointerType==="mouse"?lV(J):void 0}var Root3=Menu,Anchor2=MenuAnchor,Portal=MenuPortal,Content2$1=MenuContent,Group=MenuGroup,Label=MenuLabel,Item2$1=MenuItem,CheckboxItem=MenuCheckboxItem,RadioGroup=MenuRadioGroup,RadioItem=MenuRadioItem,ItemIndicator=MenuItemIndicator,Separator=MenuSeparator,Arrow2=MenuArrow,SubTrigger=MenuSubTrigger,SubContent=MenuSubContent,DROPDOWN_MENU_NAME="DropdownMenu",[createDropdownMenuContext,createDropdownMenuScope]=createContextScope(DROPDOWN_MENU_NAME,[createMenuScope]),useMenuScope=createMenuScope(),[DropdownMenuProvider,useDropdownMenuContext]=createDropdownMenuContext(DROPDOWN_MENU_NAME),DropdownMenu$1=lV=>{const{__scopeDropdownMenu:J,children:VV,dir:RV,open:UV,defaultOpen:ZV,onOpenChange:WV,modal:IV=!0}=lV,dV=useMenuScope(J),CV=reactExports.useRef(null),[FV=!1,NV]=useControllableState({prop:UV,defaultProp:ZV,onChange:WV});return jsxRuntimeExports.jsx(DropdownMenuProvider,{scope:J,triggerId:useId(),triggerRef:CV,contentId:useId(),open:FV,onOpenChange:NV,onOpenToggle:reactExports.useCallback(()=>NV(gV=>!gV),[NV]),modal:IV,children:jsxRuntimeExports.jsx(Root3,{...dV,open:FV,onOpenChange:NV,dir:RV,modal:IV,children:VV})})};DropdownMenu$1.displayName=DROPDOWN_MENU_NAME;var TRIGGER_NAME="DropdownMenuTrigger",DropdownMenuTrigger$1=reactExports.forwardRef((lV,J)=>{const{__scopeDropdownMenu:VV,disabled:RV=!1,...UV}=lV,ZV=useDropdownMenuContext(TRIGGER_NAME,VV),WV=useMenuScope(VV);return jsxRuntimeExports.jsx(Anchor2,{asChild:!0,...WV,children:jsxRuntimeExports.jsx(Primitive.button,{type:"button",id:ZV.triggerId,"aria-haspopup":"menu","aria-expanded":ZV.open,"aria-controls":ZV.open?ZV.contentId:void 0,"data-state":ZV.open?"open":"closed","data-disabled":RV?"":void 0,disabled:RV,...UV,ref:composeRefs(J,ZV.triggerRef),onPointerDown:composeEventHandlers(lV.onPointerDown,IV=>{!RV&&IV.button===0&&IV.ctrlKey===!1&&(ZV.onOpenToggle(),ZV.open||IV.preventDefault())}),onKeyDown:composeEventHandlers(lV.onKeyDown,IV=>{RV||(["Enter"," "].includes(IV.key)&&ZV.onOpenToggle(),IV.key==="ArrowDown"&&ZV.onOpenChange(!0),["Enter"," ","ArrowDown"].includes(IV.key)&&IV.preventDefault())})})})});DropdownMenuTrigger$1.displayName=TRIGGER_NAME;var PORTAL_NAME="DropdownMenuPortal",DropdownMenuPortal=lV=>{const{__scopeDropdownMenu:J,...VV}=lV,RV=useMenuScope(J);return jsxRuntimeExports.jsx(Portal,{...RV,...VV})};DropdownMenuPortal.displayName=PORTAL_NAME;var CONTENT_NAME="DropdownMenuContent",DropdownMenuContent$1=reactExports.forwardRef((lV,J)=>{const{__scopeDropdownMenu:VV,...RV}=lV,UV=useDropdownMenuContext(CONTENT_NAME,VV),ZV=useMenuScope(VV),WV=reactExports.useRef(!1);return jsxRuntimeExports.jsx(Content2$1,{id:UV.contentId,"aria-labelledby":UV.triggerId,...ZV,...RV,ref:J,onCloseAutoFocus:composeEventHandlers(lV.onCloseAutoFocus,IV=>{var dV;WV.current||(dV=UV.triggerRef.current)==null||dV.focus(),WV.current=!1,IV.preventDefault()}),onInteractOutside:composeEventHandlers(lV.onInteractOutside,IV=>{const dV=IV.detail.originalEvent,CV=dV.button===0&&dV.ctrlKey===!0,FV=dV.button===2||CV;(!UV.modal||FV)&&(WV.current=!0)}),style:{...lV.style,"--radix-dropdown-menu-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-dropdown-menu-content-available-width":"var(--radix-popper-available-width)","--radix-dropdown-menu-content-available-height":"var(--radix-popper-available-height)","--radix-dropdown-menu-trigger-width":"var(--radix-popper-anchor-width)","--radix-dropdown-menu-trigger-height":"var(--radix-popper-anchor-height)"}})});DropdownMenuContent$1.displayName=CONTENT_NAME;var GROUP_NAME="DropdownMenuGroup",DropdownMenuGroup=reactExports.forwardRef((lV,J)=>{const{__scopeDropdownMenu:VV,...RV}=lV,UV=useMenuScope(VV);return jsxRuntimeExports.jsx(Group,{...UV,...RV,ref:J})});DropdownMenuGroup.displayName=GROUP_NAME;var LABEL_NAME="DropdownMenuLabel",DropdownMenuLabel$1=reactExports.forwardRef((lV,J)=>{const{__scopeDropdownMenu:VV,...RV}=lV,UV=useMenuScope(VV);return jsxRuntimeExports.jsx(Label,{...UV,...RV,ref:J})});DropdownMenuLabel$1.displayName=LABEL_NAME;var ITEM_NAME="DropdownMenuItem",DropdownMenuItem$1=reactExports.forwardRef((lV,J)=>{const{__scopeDropdownMenu:VV,...RV}=lV,UV=useMenuScope(VV);return jsxRuntimeExports.jsx(Item2$1,{...UV,...RV,ref:J})});DropdownMenuItem$1.displayName=ITEM_NAME;var CHECKBOX_ITEM_NAME="DropdownMenuCheckboxItem",DropdownMenuCheckboxItem$1=reactExports.forwardRef((lV,J)=>{const{__scopeDropdownMenu:VV,...RV}=lV,UV=useMenuScope(VV);return jsxRuntimeExports.jsx(CheckboxItem,{...UV,...RV,ref:J})});DropdownMenuCheckboxItem$1.displayName=CHECKBOX_ITEM_NAME;var RADIO_GROUP_NAME="DropdownMenuRadioGroup",DropdownMenuRadioGroup=reactExports.forwardRef((lV,J)=>{const{__scopeDropdownMenu:VV,...RV}=lV,UV=useMenuScope(VV);return jsxRuntimeExports.jsx(RadioGroup,{...UV,...RV,ref:J})});DropdownMenuRadioGroup.displayName=RADIO_GROUP_NAME;var RADIO_ITEM_NAME="DropdownMenuRadioItem",DropdownMenuRadioItem$1=reactExports.forwardRef((lV,J)=>{const{__scopeDropdownMenu:VV,...RV}=lV,UV=useMenuScope(VV);return jsxRuntimeExports.jsx(RadioItem,{...UV,...RV,ref:J})});DropdownMenuRadioItem$1.displayName=RADIO_ITEM_NAME;var INDICATOR_NAME="DropdownMenuItemIndicator",DropdownMenuItemIndicator=reactExports.forwardRef((lV,J)=>{const{__scopeDropdownMenu:VV,...RV}=lV,UV=useMenuScope(VV);return jsxRuntimeExports.jsx(ItemIndicator,{...UV,...RV,ref:J})});DropdownMenuItemIndicator.displayName=INDICATOR_NAME;var SEPARATOR_NAME="DropdownMenuSeparator",DropdownMenuSeparator$1=reactExports.forwardRef((lV,J)=>{const{__scopeDropdownMenu:VV,...RV}=lV,UV=useMenuScope(VV);return jsxRuntimeExports.jsx(Separator,{...UV,...RV,ref:J})});DropdownMenuSeparator$1.displayName=SEPARATOR_NAME;var ARROW_NAME="DropdownMenuArrow",DropdownMenuArrow=reactExports.forwardRef((lV,J)=>{const{__scopeDropdownMenu:VV,...RV}=lV,UV=useMenuScope(VV);return jsxRuntimeExports.jsx(Arrow2,{...UV,...RV,ref:J})});DropdownMenuArrow.displayName=ARROW_NAME;var SUB_TRIGGER_NAME="DropdownMenuSubTrigger",DropdownMenuSubTrigger$1=reactExports.forwardRef((lV,J)=>{const{__scopeDropdownMenu:VV,...RV}=lV,UV=useMenuScope(VV);return jsxRuntimeExports.jsx(SubTrigger,{...UV,...RV,ref:J})});DropdownMenuSubTrigger$1.displayName=SUB_TRIGGER_NAME;var SUB_CONTENT_NAME="DropdownMenuSubContent",DropdownMenuSubContent$1=reactExports.forwardRef((lV,J)=>{const{__scopeDropdownMenu:VV,...RV}=lV,UV=useMenuScope(VV);return jsxRuntimeExports.jsx(SubContent,{...UV,...RV,ref:J,style:{...lV.style,"--radix-dropdown-menu-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-dropdown-menu-content-available-width":"var(--radix-popper-available-width)","--radix-dropdown-menu-content-available-height":"var(--radix-popper-available-height)","--radix-dropdown-menu-trigger-width":"var(--radix-popper-anchor-width)","--radix-dropdown-menu-trigger-height":"var(--radix-popper-anchor-height)"}})});DropdownMenuSubContent$1.displayName=SUB_CONTENT_NAME;var Root2=DropdownMenu$1,Trigger=DropdownMenuTrigger$1,Portal2=DropdownMenuPortal,Content2=DropdownMenuContent$1,Label2=DropdownMenuLabel$1,Item2=DropdownMenuItem$1,CheckboxItem2=DropdownMenuCheckboxItem$1,RadioItem2=DropdownMenuRadioItem$1,ItemIndicator2=DropdownMenuItemIndicator,Separator2=DropdownMenuSeparator$1,SubTrigger2=DropdownMenuSubTrigger$1,SubContent2=DropdownMenuSubContent$1;const DropdownMenu=Root2,DropdownMenuTrigger=Trigger,DropdownMenuSubTrigger=reactExports.forwardRef(({className:lV,inset:J,children:VV,...RV},UV)=>jsxRuntimeExports.jsxs(SubTrigger2,{ref:UV,className:cn$1("rf-flex rf-cursor-default rf-gap-2 rf-select-none rf-items-center rf-rounded-sm rf-px-2 rf-py-1.5 rf-text-sm rf-outline-none focus:rf-bg-zinc-100 data-[state=open]:rf-bg-zinc-100 [&_svg]:rf-pointer-events-none [&_svg]:rf-size-4 [&_svg]:rf-shrink-0 dark:focus:rf-bg-zinc-800 dark:data-[state=open]:rf-bg-zinc-800",J&&"rf-pl-8",lV),...RV,children:[VV,jsxRuntimeExports.jsx(ChevronRight,{className:"rf-ml-auto"})]}));DropdownMenuSubTrigger.displayName=SubTrigger2.displayName;const DropdownMenuSubContent=reactExports.forwardRef(({className:lV,...J},VV)=>jsxRuntimeExports.jsx(SubContent2,{ref:VV,className:cn$1("rf-z-50 rf-min-w-[8rem] rf-overflow-hidden rf-rounded-md rf-border rf-border-zinc-200 rf-bg-white rf-p-1 rf-text-zinc-950 rf-shadow-lg data-[state=open]:rf-animate-in data-[state=closed]:rf-animate-out data-[state=closed]:rf-fade-out-0 data-[state=open]:rf-fade-in-0 data-[state=closed]:rf-zoom-out-95 data-[state=open]:rf-zoom-in-95 data-[side=bottom]:rf-slide-in-from-top-2 data-[side=left]:rf-slide-in-from-right-2 data-[side=right]:rf-slide-in-from-left-2 data-[side=top]:rf-slide-in-from-bottom-2 dark:rf-border-zinc-800 dark:rf-bg-zinc-950 dark:rf-text-zinc-50",lV),...J}));DropdownMenuSubContent.displayName=SubContent2.displayName;const DropdownMenuContent=reactExports.forwardRef(({className:lV,sideOffset:J=4,...VV},RV)=>jsxRuntimeExports.jsx(Portal2,{children:jsxRuntimeExports.jsx(Content2,{ref:RV,sideOffset:J,className:cn$1("rf-z-50 rf-min-w-[8rem] rf-overflow-hidden rf-rounded-md rf-border rf-border-zinc-200 rf-bg-white rf-p-1 rf-text-zinc-950 rf-shadow-md dark:rf-border-zinc-800 dark:rf-bg-zinc-950 dark:rf-text-zinc-50","data-[state=open]:rf-animate-in data-[state=closed]:rf-animate-out data-[state=closed]:rf-fade-out-0 data-[state=open]:rf-fade-in-0 data-[state=closed]:rf-zoom-out-95 data-[state=open]:rf-zoom-in-95 data-[side=bottom]:rf-slide-in-from-top-2 data-[side=left]:rf-slide-in-from-right-2 data-[side=right]:rf-slide-in-from-left-2 data-[side=top]:rf-slide-in-from-bottom-2",lV),...VV})}));DropdownMenuContent.displayName=Content2.displayName;const DropdownMenuItem=reactExports.forwardRef(({className:lV,inset:J,...VV},RV)=>jsxRuntimeExports.jsx(Item2,{ref:RV,className:cn$1("rf-relative rf-flex rf-cursor-default rf-select-none rf-items-center rf-gap-2 rf-rounded-sm rf-px-2 rf-py-1.5 rf-text-sm rf-outline-none rf-transition-colors focus:rf-bg-zinc-100 focus:rf-text-zinc-900 data-[disabled]:rf-pointer-events-none data-[disabled]:rf-opacity-50 [&>svg]:rf-size-4 [&>svg]:rf-shrink-0 dark:focus:rf-bg-zinc-800 dark:focus:rf-text-zinc-50",J&&"rf-pl-8",lV),...VV}));DropdownMenuItem.displayName=Item2.displayName;const DropdownMenuCheckboxItem=reactExports.forwardRef(({className:lV,children:J,checked:VV,...RV},UV)=>jsxRuntimeExports.jsxs(CheckboxItem2,{ref:UV,className:cn$1("rf-relative rf-flex rf-cursor-default rf-select-none rf-items-center rf-rounded-sm rf-py-1.5 rf-pl-8 rf-pr-2 rf-text-sm rf-outline-none rf-transition-colors focus:rf-bg-zinc-100 focus:rf-text-zinc-900 data-[disabled]:rf-pointer-events-none data-[disabled]:rf-opacity-50 dark:focus:rf-bg-zinc-800 dark:focus:rf-text-zinc-50",lV),checked:VV,...RV,children:[jsxRuntimeExports.jsx("span",{className:"rf-absolute rf-left-2 rf-flex rf-h-3.5 rf-w-3.5 rf-items-center rf-justify-center",children:jsxRuntimeExports.jsx(ItemIndicator2,{children:jsxRuntimeExports.jsx(Check,{className:"rf-h-4 rf-w-4"})})}),J]}));DropdownMenuCheckboxItem.displayName=CheckboxItem2.displayName;const DropdownMenuRadioItem=reactExports.forwardRef(({className:lV,children:J,...VV},RV)=>jsxRuntimeExports.jsxs(RadioItem2,{ref:RV,className:cn$1("rf-relative rf-flex rf-cursor-default rf-select-none rf-items-center rf-rounded-sm rf-py-1.5 rf-pl-8 rf-pr-2 rf-text-sm rf-outline-none rf-transition-colors focus:rf-bg-zinc-100 focus:rf-text-zinc-900 data-[disabled]:rf-pointer-events-none data-[disabled]:rf-opacity-50 dark:focus:rf-bg-zinc-800 dark:focus:rf-text-zinc-50",lV),...VV,children:[jsxRuntimeExports.jsx("span",{className:"rf-absolute rf-left-2 rf-flex rf-h-3.5 rf-w-3.5 rf-items-center rf-justify-center",children:jsxRuntimeExports.jsx(ItemIndicator2,{children:jsxRuntimeExports.jsx(Circle,{className:"rf-h-2 rf-w-2 rf-fill-current"})})}),J]}));DropdownMenuRadioItem.displayName=RadioItem2.displayName;const DropdownMenuLabel=reactExports.forwardRef(({className:lV,inset:J,...VV},RV)=>jsxRuntimeExports.jsx(Label2,{ref:RV,className:cn$1("rf-px-2 rf-py-1.5 rf-text-sm rf-font-semibold",J&&"rf-pl-8",lV),...VV}));DropdownMenuLabel.displayName=Label2.displayName;const DropdownMenuSeparator=reactExports.forwardRef(({className:lV,...J},VV)=>jsxRuntimeExports.jsx(Separator2,{ref:VV,className:cn$1("rf--mx-1 rf-my-1 rf-h-px rf-bg-zinc-100 dark:rf-bg-zinc-800",lV),...J}));DropdownMenuSeparator.displayName=Separator2.displayName;const PcbViewerWithContainerHeight=({containerClassName:lV,...J})=>{const VV=reactExports.useRef(null),[RV,UV]=reactExports.useState(620);return reactExports.useLayoutEffect(()=>{const ZV=()=>{if(VV.current){const IV=VV.current.clientHeight,dV=window.innerHeight;UV(Math.min(Math.max(IV,620),dV))}};ZV();const WV=new ResizeObserver(ZV);return VV.current&&WV.observe(VV.current),window.addEventListener("resize",ZV),()=>{WV.disconnect(),window.removeEventListener("resize",ZV)}},[]),jsxRuntimeExports.jsx("div",{ref:VV,className:lV||"rf-w-full rf-h-full",children:jsxRuntimeExports.jsx(PCBViewer,{...J,height:RV})})},styles='*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }/*! tailwindcss v3.4.17 | MIT License | https://tailwindcss.com*/*,:after,:before{border:0 solid #e5e7eb;box-sizing:border-box}:after,:before{--tw-content:""}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-tap-highlight-color:transparent}body{line-height:inherit;margin:0}hr{border-top-width:1px;color:inherit;height:0}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;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-size:1em;font-variation-settings:normal}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}button,input,optgroup,select,textarea{color:inherit;font-family:inherit;font-feature-settings:inherit;font-size:100%;font-variation-settings:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{color:#9ca3af;opacity:1}input::placeholder,textarea::placeholder{color:#9ca3af;opacity:1}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}[hidden]:where(:not([hidden=until-found])){display:none}:root{--radius:0.5rem}.rf-pointer-events-none{pointer-events:none}.rf-invisible{visibility:hidden}.rf-fixed{position:fixed}.rf-absolute{position:absolute}.rf-relative{position:relative}.rf-inset-0{inset:0}.rf-bottom-full{bottom:100%}.rf-left-1{left:.25rem}.rf-left-1\\/2{left:50%}.rf-left-2{left:.5rem}.rf-right-4{right:1rem}.rf-right-\\[4px\\]{right:4px}.rf-top-2{top:.5rem}.rf-top-\\[6px\\]{top:6px}.rf-z-50{z-index:50}.rf-z-\\[100\\]{z-index:100}.rf--mx-1{margin-left:-.25rem;margin-right:-.25rem}.rf-mx-2{margin-left:.5rem;margin-right:.5rem}.rf-my-1{margin-bottom:.25rem;margin-top:.25rem}.rf-mb-2{margin-bottom:.5rem}.rf-mb-3{margin-bottom:.75rem}.rf-mb-4{margin-bottom:1rem}.rf-ml-1{margin-left:.25rem}.rf-ml-1\\.5{margin-left:.375rem}.rf-ml-2{margin-left:.5rem}.rf-ml-auto{margin-left:auto}.rf-mr-1{margin-right:.25rem}.rf-mr-2{margin-right:.5rem}.rf-mt-0{margin-top:0}.rf-mt-2{margin-top:.5rem}.rf-mt-4{margin-top:1rem}.rf-flex{display:flex}.rf-inline-flex{display:inline-flex}.rf-size-4{height:1rem;width:1rem}.rf-h-1{height:.25rem}.rf-h-10{height:2.5rem}.rf-h-2{height:.5rem}.rf-h-3{height:.75rem}.rf-h-3\\.5{height:.875rem}.rf-h-4{height:1rem}.rf-h-60{height:15rem}.rf-h-8{height:2rem}.rf-h-9{height:2.25rem}.rf-h-\\[620px\\]{height:620px}.rf-h-\\[calc\\(100vh-96px\\)\\]{height:calc(100vh - 96px)}.rf-h-full{height:100%}.rf-h-px{height:1px}.rf-max-h-\\[500px\\]{max-height:500px}.rf-min-h-\\[620px\\]{min-height:620px}.rf-min-h-\\[calc\\(100vh-240px\\)\\]{min-height:calc(100vh - 240px)}.rf-w-1{width:.25rem}.rf-w-11{width:2.75rem}.rf-w-11\\/12{width:91.666667%}.rf-w-2{width:.5rem}.rf-w-3{width:.75rem}.rf-w-3\\.5{width:.875rem}.rf-w-4{width:1rem}.rf-w-9{width:2.25rem}.rf-w-96{width:24rem}.rf-w-full{width:100%}.rf-min-w-\\[8rem\\]{min-width:8rem}.rf-max-w-2xl{max-width:42rem}.rf-shrink-0{flex-shrink:0}.rf-flex-grow{flex-grow:1}.rf-table-auto{table-layout:auto}.-rf-translate-x-1{--tw-translate-x:-0.25rem}.-rf-translate-x-1,.-rf-translate-x-1\\/2{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-rf-translate-x-1\\/2{--tw-translate-x:-50%}.rf--translate-x-1{--tw-translate-x:-0.25rem}.rf--translate-x-1,.rf-transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes rf-spin{to{transform:rotate(1turn)}}.rf-animate-spin{animation:rf-spin 1s linear infinite}.rf-cursor-default{cursor:default}.rf-cursor-pointer{cursor:pointer}.rf-select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.rf-flex-col{flex-direction:column}.rf-items-center{align-items:center}.rf-justify-end{justify-content:flex-end}.rf-justify-center{justify-content:center}.rf-justify-between{justify-content:space-between}.rf-gap-2{gap:.5rem}.rf-gap-3{gap:.75rem}.rf-space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(.5rem*var(--tw-space-x-reverse))}.rf-space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.5rem*var(--tw-space-y-reverse));margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)))}.rf-overflow-auto{overflow:auto}.rf-overflow-hidden{overflow:hidden}.rf-overflow-visible{overflow:visible}.rf-overflow-x-auto{overflow-x:auto}.rf-overflow-y-auto{overflow-y:auto}.rf-whitespace-nowrap{white-space:nowrap}.rf-whitespace-pre-wrap{white-space:pre-wrap}.rf-rounded{border-radius:.25rem}.rf-rounded-full{border-radius:9999px}.rf-rounded-lg{border-radius:var(--radius)}.rf-rounded-md{border-radius:calc(var(--radius) - 2px)}.rf-rounded-sm{border-radius:calc(var(--radius) - 4px)}.rf-border{border-width:1px}.rf-border-b{border-bottom-width:1px}.rf-border-green-200{--tw-border-opacity:1;border-color:rgb(187 247 208/var(--tw-border-opacity,1))}.rf-border-neutral-200{--tw-border-opacity:1;border-color:rgb(229 229 229/var(--tw-border-opacity,1))}.rf-border-red-200{--tw-border-opacity:1;border-color:rgb(254 202 202/var(--tw-border-opacity,1))}.rf-border-zinc-200{--tw-border-opacity:1;border-color:rgb(228 228 231/var(--tw-border-opacity,1))}.rf-bg-black{--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity,1))}.rf-bg-blue-500{--tw-bg-opacity:1;background-color:rgb(59 130 246/var(--tw-bg-opacity,1))}.rf-bg-blue-600{--tw-bg-opacity:1;background-color:rgb(37 99 235/var(--tw-bg-opacity,1))}.rf-bg-gray-100{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity,1))}.rf-bg-gray-500{--tw-bg-opacity:1;background-color:rgb(107 114 128/var(--tw-bg-opacity,1))}.rf-bg-gray-800{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity,1))}.rf-bg-gray-900{--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity,1))}.rf-bg-green-50{--tw-bg-opacity:1;background-color:rgb(240 253 244/var(--tw-bg-opacity,1))}.rf-bg-neutral-100{--tw-bg-opacity:1;background-color:rgb(245 245 245/var(--tw-bg-opacity,1))}.rf-bg-neutral-50{--tw-bg-opacity:1;background-color:rgb(250 250 250/var(--tw-bg-opacity,1))}.rf-bg-neutral-800{--tw-bg-opacity:1;background-color:rgb(38 38 38/var(--tw-bg-opacity,1))}.rf-bg-neutral-900{--tw-bg-opacity:1;background-color:rgb(23 23 23/var(--tw-bg-opacity,1))}.rf-bg-orange-400{--tw-bg-opacity:1;background-color:rgb(251 146 60/var(--tw-bg-opacity,1))}.rf-bg-red-50{--tw-bg-opacity:1;background-color:rgb(254 242 242/var(--tw-bg-opacity,1))}.rf-bg-red-500{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity,1))}.rf-bg-red-900{--tw-bg-opacity:1;background-color:rgb(127 29 29/var(--tw-bg-opacity,1))}.rf-bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.rf-bg-zinc-100{--tw-bg-opacity:1;background-color:rgb(244 244 245/var(--tw-bg-opacity,1))}.rf-bg-zinc-50{--tw-bg-opacity:1;background-color:rgb(250 250 250/var(--tw-bg-opacity,1))}.rf-bg-zinc-800{--tw-bg-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity,1))}.rf-bg-zinc-900{--tw-bg-opacity:1;background-color:rgb(24 24 27/var(--tw-bg-opacity,1))}.rf-bg-opacity-50{--tw-bg-opacity:0.5}.rf-fill-current{fill:currentColor}.rf-p-0{padding:0}.rf-p-0\\.5{padding:.125rem}.rf-p-1{padding:.25rem}.rf-p-2{padding:.5rem}.rf-p-3{padding:.75rem}.rf-p-4{padding:1rem}.rf-p-5{padding:1.25rem}.rf-p-6{padding:1.5rem}.rf-px-1{padding-left:.25rem;padding-right:.25rem}.rf-px-1\\.5{padding-left:.375rem;padding-right:.375rem}.rf-px-2{padding-left:.5rem;padding-right:.5rem}.rf-px-3{padding-left:.75rem;padding-right:.75rem}.rf-px-4{padding-left:1rem;padding-right:1rem}.rf-px-8{padding-left:2rem;padding-right:2rem}.rf-py-1{padding-bottom:.25rem;padding-top:.25rem}.rf-py-1\\.5{padding-bottom:.375rem;padding-top:.375rem}.rf-py-10{padding-bottom:2.5rem;padding-top:2.5rem}.rf-py-2{padding-bottom:.5rem;padding-top:.5rem}.rf-pb-4{padding-bottom:1rem}.rf-pl-8{padding-left:2rem}.rf-pr-2{padding-right:.5rem}.rf-text-left{text-align:left}.rf-text-center{text-align:center}.rf-font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.rf-text-2xl{font-size:1.5rem;line-height:2rem}.rf-text-\\[8px\\]{font-size:8px}.rf-text-lg{font-size:1.125rem;line-height:1.75rem}.rf-text-sm{font-size:.875rem;line-height:1.25rem}.rf-text-xs{font-size:.75rem;line-height:1rem}.rf-font-bold{font-weight:700}.rf-font-medium{font-weight:500}.rf-font-semibold{font-weight:600}.rf-capitalize{text-transform:capitalize}.rf-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)}.rf-leading-5{line-height:1.25rem}.rf-tracking-widest{letter-spacing:.1em}.rf-text-blue-500{--tw-text-opacity:1;color:rgb(59 130 246/var(--tw-text-opacity,1))}.rf-text-blue-600{--tw-text-opacity:1;color:rgb(37 99 235/var(--tw-text-opacity,1))}.rf-text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.rf-text-gray-600{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity,1))}.rf-text-gray-700{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity,1))}.rf-text-green-500{--tw-text-opacity:1;color:rgb(34 197 94/var(--tw-text-opacity,1))}.rf-text-green-700{--tw-text-opacity:1;color:rgb(21 128 61/var(--tw-text-opacity,1))}.rf-text-green-800{--tw-text-opacity:1;color:rgb(22 101 52/var(--tw-text-opacity,1))}.rf-text-neutral-50{--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity,1))}.rf-text-neutral-500{--tw-text-opacity:1;color:rgb(115 115 115/var(--tw-text-opacity,1))}.rf-text-neutral-900{--tw-text-opacity:1;color:rgb(23 23 23/var(--tw-text-opacity,1))}.rf-text-neutral-950{--tw-text-opacity:1;color:rgb(10 10 10/var(--tw-text-opacity,1))}.rf-text-red-600{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity,1))}.rf-text-red-700{--tw-text-opacity:1;color:rgb(185 28 28/var(--tw-text-opacity,1))}.rf-text-red-800{--tw-text-opacity:1;color:rgb(153 27 27/var(--tw-text-opacity,1))}.rf-text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.rf-text-zinc-50{--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity,1))}.rf-text-zinc-500{--tw-text-opacity:1;color:rgb(113 113 122/var(--tw-text-opacity,1))}.rf-text-zinc-900{--tw-text-opacity:1;color:rgb(24 24 27/var(--tw-text-opacity,1))}.rf-text-zinc-950{--tw-text-opacity:1;color:rgb(9 9 11/var(--tw-text-opacity,1))}.rf-underline{text-decoration-line:underline}.rf-underline-offset-4{text-underline-offset:4px}.rf-opacity-0{opacity:0}.rf-opacity-50{opacity:.5}.rf-opacity-60{opacity:.6}.rf-shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.rf-shadow,.rf-shadow-lg{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.rf-shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.rf-shadow-md{--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color)}.rf-shadow-md,.rf-shadow-sm{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.rf-shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.rf-outline-none{outline:2px solid transparent;outline-offset:2px}.rf-ring-offset-white{--tw-ring-offset-color:#fff}.rf-transition-all{transition-duration:.15s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.rf-transition-colors{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1)}.rf-transition-opacity{transition-duration:.15s;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1)}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0) scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1)) rotate(var(--tw-enter-rotate,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0) scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1)) rotate(var(--tw-exit-rotate,0))}}.hover\\:rf-bg-red-500\\/90:hover{background-color:rgba(239,68,68,.9)}.hover\\:rf-bg-zinc-100:hover{--tw-bg-opacity:1;background-color:rgb(244 244 245/var(--tw-bg-opacity,1))}.hover\\:rf-bg-zinc-100\\/80:hover{background-color:hsla(240,5%,96%,.8)}.hover\\:rf-bg-zinc-900\\/90:hover{background-color:rgba(24,24,27,.9)}.hover\\:rf-text-zinc-900:hover{--tw-text-opacity:1;color:rgb(24 24 27/var(--tw-text-opacity,1))}.hover\\:rf-underline:hover{text-decoration-line:underline}.focus\\:rf-bg-zinc-100:focus{--tw-bg-opacity:1;background-color:rgb(244 244 245/var(--tw-bg-opacity,1))}.focus\\:rf-text-zinc-900:focus{--tw-text-opacity:1;color:rgb(24 24 27/var(--tw-text-opacity,1))}.focus-visible\\:rf-outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.focus-visible\\:rf-ring-1:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-visible\\:rf-ring-2:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-visible\\:rf-ring-zinc-950:focus-visible{--tw-ring-opacity:1;--tw-ring-color:rgb(9 9 11/var(--tw-ring-opacity,1))}.focus-visible\\:rf-ring-offset-2:focus-visible{--tw-ring-offset-width:2px}.disabled\\:rf-pointer-events-none:disabled{pointer-events:none}.disabled\\:rf-opacity-50:disabled{opacity:.5}.data-\\[disabled\\]\\:rf-pointer-events-none[data-disabled]{pointer-events:none}.data-\\[state\\=active\\]\\:rf-bg-white[data-state=active]{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.data-\\[state\\=open\\]\\:rf-bg-zinc-100[data-state=open]{--tw-bg-opacity:1;background-color:rgb(244 244 245/var(--tw-bg-opacity,1))}.data-\\[state\\=active\\]\\:rf-text-zinc-950[data-state=active]{--tw-text-opacity:1;color:rgb(9 9 11/var(--tw-text-opacity,1))}.data-\\[disabled\\]\\:rf-opacity-50[data-disabled]{opacity:.5}.data-\\[state\\=active\\]\\:rf-shadow[data-state=active]{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.data-\\[state\\=open\\]\\:rf-animate-in[data-state=open]{animation-duration:.15s;animation-name:enter;--tw-enter-opacity:initial;--tw-enter-scale:initial;--tw-enter-rotate:initial;--tw-enter-translate-x:initial;--tw-enter-translate-y:initial}.data-\\[state\\=closed\\]\\:rf-animate-out[data-state=closed]{animation-duration:.15s;animation-name:exit;--tw-exit-opacity:initial;--tw-exit-scale:initial;--tw-exit-rotate:initial;--tw-exit-translate-x:initial;--tw-exit-translate-y:initial}.data-\\[state\\=closed\\]\\:rf-fade-out-0[data-state=closed]{--tw-exit-opacity:0}.data-\\[state\\=open\\]\\:rf-fade-in-0[data-state=open]{--tw-enter-opacity:0}.data-\\[state\\=closed\\]\\:rf-zoom-out-95[data-state=closed]{--tw-exit-scale:.95}.data-\\[state\\=open\\]\\:rf-zoom-in-95[data-state=open]{--tw-enter-scale:.95}.data-\\[side\\=bottom\\]\\:rf-slide-in-from-top-2[data-side=bottom]{--tw-enter-translate-y:-0.5rem}.data-\\[side\\=left\\]\\:rf-slide-in-from-right-2[data-side=left]{--tw-enter-translate-x:0.5rem}.data-\\[side\\=right\\]\\:rf-slide-in-from-left-2[data-side=right]{--tw-enter-translate-x:-0.5rem}.data-\\[side\\=top\\]\\:rf-slide-in-from-bottom-2[data-side=top]{--tw-enter-translate-y:0.5rem}.dark\\:rf-border-zinc-800:is(.rf-dark *){--tw-border-opacity:1;border-color:rgb(39 39 42/var(--tw-border-opacity,1))}.dark\\:rf-bg-red-900:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(127 29 29/var(--tw-bg-opacity,1))}.dark\\:rf-bg-zinc-50:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(250 250 250/var(--tw-bg-opacity,1))}.dark\\:rf-bg-zinc-800:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity,1))}.dark\\:rf-bg-zinc-950:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(9 9 11/var(--tw-bg-opacity,1))}.dark\\:rf-text-zinc-400:is(.rf-dark *){--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity,1))}.dark\\:rf-text-zinc-50:is(.rf-dark *){--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity,1))}.dark\\:rf-text-zinc-900:is(.rf-dark *){--tw-text-opacity:1;color:rgb(24 24 27/var(--tw-text-opacity,1))}.dark\\:rf-ring-offset-zinc-950:is(.rf-dark *){--tw-ring-offset-color:#09090b}.dark\\:hover\\:rf-bg-red-900\\/90:hover:is(.rf-dark *){background-color:rgba(127,29,29,.9)}.dark\\:hover\\:rf-bg-zinc-50\\/90:hover:is(.rf-dark *){background-color:hsla(0,0%,98%,.9)}.dark\\:hover\\:rf-bg-zinc-800:hover:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity,1))}.dark\\:hover\\:rf-bg-zinc-800\\/80:hover:is(.rf-dark *){background-color:rgba(39,39,42,.8)}.dark\\:hover\\:rf-text-zinc-50:hover:is(.rf-dark *){--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity,1))}.dark\\:focus\\:rf-bg-zinc-800:focus:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity,1))}.dark\\:focus\\:rf-text-zinc-50:focus:is(.rf-dark *){--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity,1))}.dark\\:focus-visible\\:rf-ring-zinc-300:focus-visible:is(.rf-dark *){--tw-ring-opacity:1;--tw-ring-color:rgb(212 212 216/var(--tw-ring-opacity,1))}.dark\\:data-\\[state\\=active\\]\\:rf-bg-zinc-950[data-state=active]:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(9 9 11/var(--tw-bg-opacity,1))}.dark\\:data-\\[state\\=open\\]\\:rf-bg-zinc-800[data-state=open]:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity,1))}.dark\\:data-\\[state\\=active\\]\\:rf-text-zinc-50[data-state=active]:is(.rf-dark *){--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity,1))}.\\[\\&\\>svg\\]\\:rf-size-4>svg{height:1rem;width:1rem}.\\[\\&\\>svg\\]\\:rf-shrink-0>svg{flex-shrink:0}.\\[\\&_svg\\]\\:rf-pointer-events-none svg{pointer-events:none}.\\[\\&_svg\\]\\:rf-size-4 svg{height:1rem;width:1rem}.\\[\\&_svg\\]\\:rf-shrink-0 svg{flex-shrink:0}',useStyles=()=>{reactExports.useEffect(()=>{if(document.querySelector('style[data-styles="tscircuit-runframe"]'))return;const J=document.createElement("style");J.setAttribute("data-styles","tscircuit-runframe"),J.textContent=styles,document.head.appendChild(J)},[])},RenderTimingsBar=({phaseTimings:lV})=>{if(!lV)return null;const J=RV=>`hsl(${RV*137.5%360}, 70%, 50%)`,VV=Object.values(lV).reduce((RV,UV)=>RV+UV,0);return jsxRuntimeExports.jsxs("div",{className:"rf-space-y-2 rf-w-full rf-px-4",children:[jsxRuntimeExports.jsx("div",{className:"rf-relative rf-h-8 rf-flex rf-rounded-sm",children:orderedRenderPhases.map((RV,UV)=>{const ZV=lV[RV]||0,WV=ZV/VV*100;return jsxRuntimeExports.jsx("div",{className:"rf-group rf-relative rf-overflow-visible",style:{width:`${WV}%`,backgroundColor:J(UV)},children:jsxRuntimeExports.jsxs("div",{className:"rf-opacity-0 rf-group-hover:rf-opacity-100 rf-transition-opacity rf-absolute rf-bottom-full rf-left-1/2 rf-transform -rf-translate-x-1/2 rf-mb-2 rf-px-2 rf-py-1 rf-text-xs rf-whitespace-nowrap rf-rounded rf-bg-gray-900 rf-text-white rf-pointer-events-none",children:[RV,": ",ZV.toFixed(1),"ms"]})},RV)})}),jsxRuntimeExports.jsxs("div",{className:"rf-text-xs rf-text-gray-500",children:["Total: ",VV.toFixed(2),"ms"]})]})},RenderLogViewer=({renderLog:lV})=>{const[J,VV]=reactExports.useState("chronological");if(!lV)return jsxRuntimeExports.jsx("div",{className:"rf-p-4 rf-bg-gray-100 rf-rounded-md",children:"No render log, make sure this tab is open when you render (TODO add a rerender button here)"});const RV=Object.entries((lV==null?void 0:lV.phaseTimings)??{});return J==="chronological"?RV.sort((UV,ZV)=>orderedRenderPhases.indexOf(UV[0])-orderedRenderPhases.indexOf(ZV[0])):RV.sort((UV,ZV)=>ZV[1]-UV[1]),jsxRuntimeExports.jsxs("div",{children:[jsxRuntimeExports.jsxs("div",{className:"rf-flex rf-justify-between rf-items-center",children:[jsxRuntimeExports.jsx("div",{children:"Render Logs"}),jsxRuntimeExports.jsxs("div",{className:"rf-mb-4 rf-pr-2 rf-flex rf-text-xs rf-items-center",children:[jsxRuntimeExports.jsx("div",{className:"rf-mr-2",children:"Sort by:"}),jsxRuntimeExports.jsxs("select",{value:J,onChange:UV=>VV(UV.target.value),className:"rf-px-2 rf-py-1 rf-border rf-rounded rf-text-xs",children:[jsxRuntimeExports.jsx("option",{value:"chronological",children:"Phase Order"}),jsxRuntimeExports.jsx("option",{value:"longest",children:"Duration"})]})]})]}),jsxRuntimeExports.jsx(RenderTimingsBar,{phaseTimings:lV.phaseTimings}),jsxRuntimeExports.jsxs("table",{className:"rf-w-full rf-text-xs",children:[jsxRuntimeExports.jsx("thead",{children:jsxRuntimeExports.jsxs("tr",{children:[jsxRuntimeExports.jsx("th",{className:"rf-text-left rf-p-2",children:"Phase Order"}),jsxRuntimeExports.jsx("th",{className:"rf-text-left rf-p-2",children:"Phase"}),jsxRuntimeExports.jsx("th",{className:"rf-text-left rf-p-2",children:"Duration (ms)"})]})}),jsxRuntimeExports.jsx("tbody",{children:RV.map(([UV,ZV])=>jsxRuntimeExports.jsxs("tr",{children:[jsxRuntimeExports.jsx("td",{className:"rf-p-2",children:orderedRenderPhases.indexOf(UV)}),jsxRuntimeExports.jsx("td",{className:"rf-p-2",children:UV}),jsxRuntimeExports.jsx("td",{className:"rf-p-2",children:ZV})]},UV))})]})]})},dropdownMenuItems=["assembly","bom","circuit_json","errors","render_log"],CircuitJsonPreview=({code:lV,onRunClicked:J=void 0,errorMessage:VV,circuitJsonKey:RV="",circuitJson:UV,showCodeTab:ZV=!1,codeTabContent:WV,showJsonTab:IV=!0,showRenderLogTab:dV=!0,onActiveTabChange:CV,renderLog:FV,showImportAndFormatButtons:NV=!0,className:gV,headerClassName:JV,leftHeaderContent:eV,readOnly:nV,isStreaming:aV,onToggleFullScreen:GV,isFullScreen:YV,isRunningCode:AV,hasCodeChangedSinceLastRun:kV,onEditEvent:QV,editEvents:bV,defaultActiveTab:iV})=>{var KV;useStyles();const[HV,DV]=reactExports.useState(iV??"pcb"),wV=reactExports.useCallback(LV=>{DV(LV),CV==null||CV(LV)},[CV]);return reactExports.useEffect(()=>{VV&&wV("errors")},[VV]),reactExports.useEffect(()=>{HV==="code"&&UV&&!VV&&wV("pcb")},[UV]),jsxRuntimeExports.jsx("div",{className:cn$1("flex flex-col relative",gV),children:jsxRuntimeExports.jsx("div",{className:"rf-md:sticky rf-md:top-2",children:jsxRuntimeExports.jsxs(Tabs,{value:HV,onValueChange:wV,className:"rf-flex-grow rf-flex rf-flex-col rf-p-2",children:[jsxRuntimeExports.jsxs("div",{className:cn$1("rf-flex rf-items-center rf-gap-2",JV),children:[eV,eV&&jsxRuntimeExports.jsx("div",{className:"rf-flex-grow"}),!eV&&AV&&jsxRuntimeExports.jsx(LoaderCircle,{className:"rf-w-4 rf-h-4 rf-animate-spin"}),!eV&&jsxRuntimeExports.jsx("div",{className:"rf-flex-grow"}),FV&&FV.progress!==1&&jsxRuntimeExports.jsxs("div",{className:"rf-flex rf-items-center rf-gap-2",children:[FV.lastRenderEvent&&jsxRuntimeExports.jsx("div",{className:"rf-text-xs rf-text-gray-500",children:(KV=FV.lastRenderEvent)==null?void 0:KV.type.split("renderable:renderLifecycle:")[1].split(":")[0]}),jsxRuntimeExports.jsx("div",{className:"rf-w-4 rf-h-4 rf-bg-blue-500 rf-opacity-50 rf-rounded-full rf-text-white",children:jsxRuntimeExports.jsx(LoaderCircle,{className:"rf-w-4 rf-h-4 rf-animate-spin"})}),jsxRuntimeExports.jsxs("div",{className:"rf-text-xs rf-font-bold rf-text-gray-700 rf-tabular-nums",children:[((FV.progress??0)*100).toFixed(1),"%"]})]}),jsxRuntimeExports.jsxs(TabsList,{children:[ZV&&jsxRuntimeExports.jsx(TabsTrigger,{value:"code",children:"Code"}),jsxRuntimeExports.jsxs(TabsTrigger,{value:"pcb",className:"rf-whitespace-nowrap",children:[UV&&jsxRuntimeExports.jsx("span",{className:cn$1("rf-inline-flex rf-items-center rf-justify-center rf-w-2 rf-h-2 rf-mr-1 rf-text-xs rf-font-bold rf-text-white rf-rounded-full",kV?"rf-bg-gray-500":"rf-bg-blue-500")}),"PCB"]}),jsxRuntimeExports.jsxs(TabsTrigger,{value:"schematic",className:"rf-whitespace-nowrap",children:[UV&&jsxRuntimeExports.jsx("span",{className:cn$1("rf-inline-flex rf-items-center rf-justify-center rf-w-2 rf-h-2 rf-mr-1 rf-text-xs rf-font-bold rf-text-white rf-rounded-full",kV?"rf-bg-gray-500":"rf-bg-blue-500")}),"Schematic"]}),jsxRuntimeExports.jsxs(TabsTrigger,{value:"cad",children:[UV&&jsxRuntimeExports.jsx("span",{className:cn$1("inline-flex items-center justify-center w-2 h-2 mr-1 text-xs font-bold text-white rounded-full",kV?"rf-bg-gray-500":"rf-bg-blue-500")}),"3D"]}),!["pcb","cad","schematic"].includes(HV)&&jsxRuntimeExports.jsx(TabsTrigger,{value:HV,children:capitalizeFirstLetters(HV)}),jsxRuntimeExports.jsxs(DropdownMenu,{children:[jsxRuntimeExports.jsx(DropdownMenuTrigger,{asChild:!0,children:jsxRuntimeExports.jsxs("div",{className:"rf-whitespace-nowrap rf-p-2 rf-mr-1 rf-cursor-pointer rf-relative",children:[jsxRuntimeExports.jsx(Ellipsis,{className:"rf-w-4 rf-h-4"}),VV&&jsxRuntimeExports.jsx("span",{className:"rf-inline-flex rf-absolute rf-top-[6px] rf-right-[4px] rf-items-center rf-justify-center rf-w-1 rf-h-1 rf-ml-2 rf-text-[8px] rf-font-bold rf-text-white rf-bg-red-500 rf-rounded-full"})]})}),jsxRuntimeExports.jsx(DropdownMenuContent,{className:"rf-*:text-xs",children:dropdownMenuItems.map(LV=>jsxRuntimeExports.jsxs(DropdownMenuItem,{onSelect:()=>wV(LV),children:[jsxRuntimeExports.jsx(Check,{className:cn$1("rf-w-3 rf-h-3 rf-mr-2",HV!==LV&&"rf-invisible")}),jsxRuntimeExports.jsx("div",{className:"rf-pr-2",children:capitalizeFirstLetters(LV)}),LV==="errors"&&VV&&jsxRuntimeExports.jsx("span",{className:"rf-inline-flex rf-items-center rf-justify-center rf-w-3 rf-h-3 rf-ml-2 rf-text-[8px] rf-font-bold rf-text-white rf-bg-red-500 rf-rounded-full",children:"1"})]},LV))})]})]}),GV&&jsxRuntimeExports.jsx(Button,{onClick:GV,variant:"ghost",children:YV?jsxRuntimeExports.jsx(Minimize,{size:16}):jsxRuntimeExports.jsx(Fullscreen,{size:16})})]}),ZV&&jsxRuntimeExports.jsx(TabsContent,{value:"code",className:"rf-flex-grow rf-overflow-hidden",children:jsxRuntimeExports.jsx("div",{className:"rf-h-full",children:WV})}),jsxRuntimeExports.jsx(TabsContent,{value:"pcb",children:jsxRuntimeExports.jsx("div",{className:cn$1("rf-overflow-hidden",YV?"rf-h-[calc(100vh-96px)]":"rf-h-[620px]"),children:jsxRuntimeExports.jsx(ErrorBoundary,{fallback:jsxRuntimeExports.jsx("div",{children:"Error loading PCB viewer"}),children:UV?jsxRuntimeExports.jsx(PcbViewerWithContainerHeight,{soup:UV,containerClassName:cn$1("rf-h-full rf-w-full",YV?"rf-min-h-[calc(100vh-240px)]":"rf-min-h-[620px]")},RV):jsxRuntimeExports.jsx(PreviewEmptyState,{onRunClicked:J})})})}),jsxRuntimeExports.jsx(TabsContent,{value:"assembly",children:jsxRuntimeExports.jsx("div",{className:cn$1("rf-overflow-auto",YV?"rf-h-[calc(100vh-96px)]":"rf-h-[620px]"),children:jsxRuntimeExports.jsx(ErrorBoundary,{fallback:jsxRuntimeExports.jsx("div",{children:"Error loading Assembly"}),children:UV?jsxRuntimeExports.jsx(AssemblyViewer,{circuitJson:UV,containerStyle:{height:"100%"},editingEnabled:!0,debugGrid:!0}):jsxRuntimeExports.jsx(PreviewEmptyState,{onRunClicked:J})})})}),jsxRuntimeExports.jsx(TabsContent,{value:"schematic",children:jsxRuntimeExports.jsx("div",{className:cn$1("rf-overflow-auto",YV?"rf-h-[calc(100vh-96px)]":"rf-h-[620px]"),children:jsxRuntimeExports.jsx(ErrorBoundary,{fallback:jsxRuntimeExports.jsx("div",{children:"Error loading Schematic"}),children:UV?jsxRuntimeExports.jsx(SchematicViewer,{circuitJson:UV,containerStyle:{height:"100%"},editingEnabled:!0,onEditEvent:LV=>QV==null?void 0:QV(LV),editEvents:bV,debugGrid:!0}):jsxRuntimeExports.jsx(PreviewEmptyState,{onRunClicked:J})})})}),jsxRuntimeExports.jsx(TabsContent,{value:"cad",children:jsxRuntimeExports.jsx("div",{className:cn$1("rf-overflow-auto",YV?"rf-h-[calc(100vh-96px)]":"rf-h-[620px]"),children:jsxRuntimeExports.jsx(ErrorBoundary,{FallbackComponent:ErrorFallback,children:UV?jsxRuntimeExports.jsx(distExports$1.CadViewer,{soup:UV}):jsxRuntimeExports.jsx(PreviewEmptyState,{onRunClicked:J})})})}),jsxRuntimeExports.jsx(TabsContent,{value:"bom",children:jsxRuntimeExports.jsx("div",{className:cn$1("rf-overflow-auto",YV?"rf-h-[calc(100vh-96px)]":"rf-h-[620px]"),children:jsxRuntimeExports.jsx(ErrorBoundary,{fallback:jsxRuntimeExports.jsx("div",{children:"Error loading BOM"}),children:UV?jsxRuntimeExports.jsx(BomTable,{circuitJson:UV}):jsxRuntimeExports.jsx(PreviewEmptyState,{onRunClicked:J})})})}),jsxRuntimeExports.jsx(TabsContent,{value:"circuit_json",children:jsxRuntimeExports.jsx("div",{className:cn$1("rf-overflow-auto",YV?"rf-h-[calc(100vh-96px)]":"rf-h-[620px]"),children:jsxRuntimeExports.jsx(ErrorBoundary,{fallback:jsxRuntimeExports.jsx("div",{children:"Error loading JSON viewer"}),children:UV?jsxRuntimeExports.jsx(CircuitJsonTableViewer,{elements:UV}):jsxRuntimeExports.jsx(PreviewEmptyState,{onRunClicked:J})})})}),jsxRuntimeExports.jsx(TabsContent,{value:"errors",children:UV||VV?jsxRuntimeExports.jsx(ErrorTabContent,{code:lV,errorMessage:VV}):jsxRuntimeExports.jsx(PreviewEmptyState,{onRunClicked:J})}),dV&&jsxRuntimeExports.jsx(TabsContent,{value:"render_log",children:jsxRuntimeExports.jsx(RenderLogViewer,{renderLog:FV})})]})})})};/**
|
|
22691
22691
|
* @license
|
|
22692
22692
|
* Copyright 2019 Google LLC
|
|
22693
22693
|
* SPDX-License-Identifier: Apache-2.0
|
|
@@ -22695,7 +22695,7 @@ void main() {
|
|
|
22695
22695
|
[zustand devtools middleware] Unsupported __setState action format.
|
|
22696
22696
|
When using 'store' option in devtools(), the 'state' should have only one key, which is a value of 'store' that was passed in devtools(),
|
|
22697
22697
|
and value of this only key should be a state object. Example: { "type": "__setState", "state": { "abc123Store": { "foo": "bar" } } }
|
|
22698
|
-
`);const YV=GV.state[IV];if(YV==null)return;JSON.stringify(UV.getState())!==JSON.stringify(YV)&&JV(YV);return}UV.dispatchFromDevtools&&typeof UV.dispatch=="function"&&UV.dispatch(GV)});case"DISPATCH":switch(nV.payload.type){case"RESET":return JV(eV),IV===void 0?FV==null?void 0:FV.init(UV.getState()):FV==null?void 0:FV.init(getTrackedConnectionState(dV.name));case"COMMIT":if(IV===void 0){FV==null||FV.init(UV.getState());return}return FV==null?void 0:FV.init(getTrackedConnectionState(dV.name));case"ROLLBACK":return parseJsonThen(nV.state,GV=>{if(IV===void 0){JV(GV),FV==null||FV.init(UV.getState());return}JV(GV[IV]),FV==null||FV.init(getTrackedConnectionState(dV.name))});case"JUMP_TO_STATE":case"JUMP_TO_ACTION":return parseJsonThen(nV.state,GV=>{if(IV===void 0){JV(GV);return}JSON.stringify(UV.getState())!==JSON.stringify(GV[IV])&&JV(GV[IV])});case"IMPORT_STATE":{const{nextLiftedState:GV}=nV.payload,YV=(aV=GV.computedStates.slice(-1)[0])==null?void 0:aV.state;if(!YV)return;JV(IV===void 0?YV:YV[IV]),FV==null||FV.send(null,GV);return}case"PAUSE_RECORDING":return gV=!gV}return}}),eV},devtools=devtoolsImpl,parseJsonThen=(lV,J)=>{let VV;try{VV=JSON.parse(lV)}catch(RV){console.error("[zustand devtools middleware] Could not parse the received json",RV)}VV!==void 0&&J(VV)},API_BASE=window.API_BASE_URL??"/api",debug$2=Debug$1("run-frame"),debug$1=debug$2.extend("store");async function upsertFileApi(lV,J){return(await(await fetch(`${API_BASE}/files/upsert`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({file_path:lV,text_content:J})})).json()).file}async function getFileApi(lV){return(await(await fetch(`${API_BASE}/files/get?file_path=${encodeURIComponent(lV)}`)).json()).file}async function getEvents(lV){const J=lV?`${API_BASE}/events/list?since=${encodeURIComponent(lV)}`:`${API_BASE}/events/list`;return(await(await fetch(J)).json()).event_list}async function getInitialFilesApi(){const lV=await fetch(`${API_BASE}/files/list`),{file_list:J}=await lV.json(),VV=new Map;for(const RV of J){const UV=await getFileApi(RV.file_path);VV.set(RV.file_path,UV.text_content)}return VV}const useRunFrameStore=create()(devtools((lV,J)=>({fsMap:new Map,lastEventTime:new Date().toISOString(),isPolling:!1,error:null,circuitJson:null,lastManualEditsChangeSentAt:0,recentEvents:[],loadInitialFiles:async()=>{const VV=await getInitialFilesApi();debug$1("loaded initial files",{fsMap:VV}),lV({fsMap:VV})},upsertFile:async(VV,RV)=>{try{const UV=await upsertFileApi(VV,RV);lV(ZV=>({fsMap:new Map(ZV.fsMap).set(UV.file_path,UV.text_content)}))}catch(UV){lV({error:UV})}},getFile:async VV=>{try{const RV=await getFileApi(VV);lV(UV=>({fsMap:new Map(UV.fsMap).set(RV.file_path,RV.text_content)}))}catch(RV){lV({error:RV})}},setCircuitJson:VV=>{VV!==J().circuitJson&&lV({circuitJson:VV})},startPolling:()=>{const VV=async()=>{const RV=J();if(RV.isPolling){try{const UV=await getEvents(RV.lastEventTime);if(UV.length>0){lV(IV=>({recentEvents:[...IV.recentEvents,...UV].slice(0,100)}));const ZV=UV[UV.length-1].created_at,WV=new Map(RV.fsMap);for(const IV of UV)if(IV.event_type==="FILE_UPDATED"){const dV=await getFileApi(IV.file_path);if(IV.file_path==="manual_edits.json"&&Date.now()-RV.lastManualEditsChangeSentAt<1e3)continue;WV.set(dV.file_path,dV.text_content)}lV({fsMap:WV,lastEventTime:ZV})}}catch(UV){lV({error:UV})}setTimeout(VV,1e3)}};lV({isPolling:!0}),VV()},stopPolling:()=>{lV({isPolling:!1})},pushEvent:async VV=>{await fetch(`${window.API_BASE_URL??""}/api/events/create`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(VV)})},applyEditEventsAndUpdateManualEditsJson:async VV=>{debug$1("applyEditEventsAndUpdateManualEditsJson",{editEvents:VV});const RV=J();if(!RV.circuitJson)return;const UV=RV.fsMap.get("manual-edits.json"),ZV=UV?JSON.parse(UV):{},WV=applyEditEventsToManualEditsFile({circuitJson:RV.circuitJson,editEvents:VV,manualEditsFile:ZV});debug$1("updatedManualEditsFileContent",WV),lV(IV=>({lastManualEditsChangeSentAt:Date.now(),fsMap:new Map(IV.fsMap).set("manual-edits.json",JSON.stringify(WV))})),await upsertFileApi("manual-edits.json",JSON.stringify(WV,null,2))}}),{name:"run-frame-store"})),getChangesBetweenFsMaps=(lV,J)=>{const VV={};for(const[RV,UV]of lV.entries()){const ZV=J.get(RV);ZV!==UV&&(VV[RV]={old:UV,new:ZV})}for(const[RV,UV]of J.entries())lV.has(RV)||(VV[RV]={old:void 0,new:UV});return VV},getPhaseTimingsFromRenderEvents=lV=>{const J={};if(!lV)return J;for(const RV of orderedRenderPhases)J[RV]=0;const VV=new Map;for(const RV of lV){const[,,UV,ZV]=RV.type.split(":");if(ZV==="start"){VV.set(`${UV}:${RV.renderId}`,RV);continue}if(ZV==="end"){const WV=VV.get(`${UV}:${RV.renderId}`);if(WV){const IV=RV.createdAt-WV.createdAt;J[UV]=(J[UV]||0)+IV}}}return J},numRenderPhases=26,debug=Debug$1("run-frame:RunFrame"),RunFrame=lV=>{const[J,VV]=useRunFrameStore(YV=>[YV.circuitJson,YV.setCircuitJson]),[RV,UV]=reactExports.useState(null),[ZV,WV]=reactExports.useReducer((YV,AV)=>YV+1,0),IV=reactExports.useRef(0),[dV,CV]=reactExports.useState(!1),[FV,NV]=reactExports.useState(null),[gV,JV]=reactExports.useState(lV.defaultActiveTab??"pcb");reactExports.useEffect(()=>{lV.debug&&Debug$1.enable("run-frame*")},[lV.debug]);const eV=lV.fsMap instanceof Map?lV.fsMap:Object.entries(lV.fsMap??{}).reduce((YV,[AV,kV])=>YV.set(AV,kV),new Map),nV=reactExports.useRef(null),aV=reactExports.useRef(null);reactExports.useEffect(()=>{if(!eV)return;const YV=lV.showRunButton&&ZV!==IV.current;if(nV.current&&J){const kV=getChangesBetweenFsMaps(nV.current,eV);if(Object.keys(kV).length>0)debug("code changes detected");else if(aV.current!==lV.entrypoint)debug("render triggered by entrypoint change");else if(!YV){debug("render triggered without changes to fsMap, skipping");return}}if(lV.showRunButton&&ZV===IV.current)return;nV.current=eV,aV.current=lV.entrypoint,IV.current=ZV,CV(!0);async function AV(){var LV,Ul,el,hl,Cl;debug("running render worker"),UV(null);const kV={},QV=globalThis.runFrameWorker??await createCircuitWebWorker({webWorkerUrl:blobUrl,verbose:!0});globalThis.runFrameWorker=QV,(LV=lV.onRenderStarted)==null||LV.call(lV);const bV=eV instanceof Map?Object.fromEntries(eV.entries()):eV;if(!bV[lV.entrypoint]){UV({error:`Entrypoint not found (entrypoint: "${lV.entrypoint}", fsMapKeys: ${Object.keys(bV).join(", ")})`,stack:""});return}const iV=new Set;let HV=Date.now();if(QV.on("renderable:renderLifecycle:anyEvent",Vl=>{kV.lastRenderEvent=Vl,kV.eventsProcessed=(kV.eventsProcessed??0)+1,iV.has(Vl.renderId)||iV.add(Vl.renderId);const PV=iV.size*numRenderPhases*2,Wl=kV.eventsProcessed>iV.size*2,Jl=kV.eventsProcessed/PV,Fl=1-Math.exp(-Jl*3);kV.progress=Wl?Fl:0,gV==="render_log"&&(kV.renderEvents=kV.renderEvents??[],Vl.createdAt=Date.now(),kV.renderEvents.push(Vl),Date.now()-HV>500&&(kV.phaseTimings=getPhaseTimingsFromRenderEvents(kV.renderEvents??[]),HV=Date.now()),NV({...kV})
|
|
22698
|
+
`);const YV=GV.state[IV];if(YV==null)return;JSON.stringify(UV.getState())!==JSON.stringify(YV)&&JV(YV);return}UV.dispatchFromDevtools&&typeof UV.dispatch=="function"&&UV.dispatch(GV)});case"DISPATCH":switch(nV.payload.type){case"RESET":return JV(eV),IV===void 0?FV==null?void 0:FV.init(UV.getState()):FV==null?void 0:FV.init(getTrackedConnectionState(dV.name));case"COMMIT":if(IV===void 0){FV==null||FV.init(UV.getState());return}return FV==null?void 0:FV.init(getTrackedConnectionState(dV.name));case"ROLLBACK":return parseJsonThen(nV.state,GV=>{if(IV===void 0){JV(GV),FV==null||FV.init(UV.getState());return}JV(GV[IV]),FV==null||FV.init(getTrackedConnectionState(dV.name))});case"JUMP_TO_STATE":case"JUMP_TO_ACTION":return parseJsonThen(nV.state,GV=>{if(IV===void 0){JV(GV);return}JSON.stringify(UV.getState())!==JSON.stringify(GV[IV])&&JV(GV[IV])});case"IMPORT_STATE":{const{nextLiftedState:GV}=nV.payload,YV=(aV=GV.computedStates.slice(-1)[0])==null?void 0:aV.state;if(!YV)return;JV(IV===void 0?YV:YV[IV]),FV==null||FV.send(null,GV);return}case"PAUSE_RECORDING":return gV=!gV}return}}),eV},devtools=devtoolsImpl,parseJsonThen=(lV,J)=>{let VV;try{VV=JSON.parse(lV)}catch(RV){console.error("[zustand devtools middleware] Could not parse the received json",RV)}VV!==void 0&&J(VV)},API_BASE=window.API_BASE_URL??"/api",debug$2=Debug$1("run-frame"),debug$1=debug$2.extend("store");async function upsertFileApi(lV,J){return(await(await fetch(`${API_BASE}/files/upsert`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({file_path:lV,text_content:J})})).json()).file}async function getFileApi(lV){return(await(await fetch(`${API_BASE}/files/get?file_path=${encodeURIComponent(lV)}`)).json()).file}async function getEvents(lV){const J=lV?`${API_BASE}/events/list?since=${encodeURIComponent(lV)}`:`${API_BASE}/events/list`;return(await(await fetch(J)).json()).event_list}async function getInitialFilesApi(){const lV=await fetch(`${API_BASE}/files/list`),{file_list:J}=await lV.json(),VV=new Map;for(const RV of J){const UV=await getFileApi(RV.file_path);VV.set(RV.file_path,UV.text_content)}return VV}const useRunFrameStore=create()(devtools((lV,J)=>({fsMap:new Map,lastEventTime:new Date().toISOString(),isPolling:!1,error:null,circuitJson:null,lastManualEditsChangeSentAt:0,recentEvents:[],loadInitialFiles:async()=>{const VV=await getInitialFilesApi();debug$1("loaded initial files",{fsMap:VV}),lV({fsMap:VV})},upsertFile:async(VV,RV)=>{try{const UV=await upsertFileApi(VV,RV);lV(ZV=>({fsMap:new Map(ZV.fsMap).set(UV.file_path,UV.text_content)}))}catch(UV){lV({error:UV})}},getFile:async VV=>{try{const RV=await getFileApi(VV);lV(UV=>({fsMap:new Map(UV.fsMap).set(RV.file_path,RV.text_content)}))}catch(RV){lV({error:RV})}},setCircuitJson:VV=>{VV!==J().circuitJson&&lV({circuitJson:VV})},startPolling:()=>{const VV=async()=>{const RV=J();if(RV.isPolling){try{const UV=await getEvents(RV.lastEventTime);if(UV.length>0){lV(IV=>({recentEvents:[...IV.recentEvents,...UV].slice(0,100)}));const ZV=UV[UV.length-1].created_at,WV=new Map(RV.fsMap);for(const IV of UV)if(IV.event_type==="FILE_UPDATED"){const dV=await getFileApi(IV.file_path);if(IV.file_path==="manual_edits.json"&&Date.now()-RV.lastManualEditsChangeSentAt<1e3)continue;WV.set(dV.file_path,dV.text_content)}lV({fsMap:WV,lastEventTime:ZV})}}catch(UV){lV({error:UV})}setTimeout(VV,1e3)}};lV({isPolling:!0}),VV()},stopPolling:()=>{lV({isPolling:!1})},pushEvent:async VV=>{await fetch(`${window.API_BASE_URL??""}/api/events/create`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(VV)})},applyEditEventsAndUpdateManualEditsJson:async VV=>{debug$1("applyEditEventsAndUpdateManualEditsJson",{editEvents:VV});const RV=J();if(!RV.circuitJson)return;const UV=RV.fsMap.get("manual-edits.json"),ZV=UV?JSON.parse(UV):{},WV=applyEditEventsToManualEditsFile({circuitJson:RV.circuitJson,editEvents:VV,manualEditsFile:ZV});debug$1("updatedManualEditsFileContent",WV),lV(IV=>({lastManualEditsChangeSentAt:Date.now(),fsMap:new Map(IV.fsMap).set("manual-edits.json",JSON.stringify(WV))})),await upsertFileApi("manual-edits.json",JSON.stringify(WV,null,2))}}),{name:"run-frame-store"})),getChangesBetweenFsMaps=(lV,J)=>{const VV={};for(const[RV,UV]of lV.entries()){const ZV=J.get(RV);ZV!==UV&&(VV[RV]={old:UV,new:ZV})}for(const[RV,UV]of J.entries())lV.has(RV)||(VV[RV]={old:void 0,new:UV});return VV},getPhaseTimingsFromRenderEvents=lV=>{const J={};if(!lV)return J;for(const RV of orderedRenderPhases)J[RV]=0;const VV=new Map;for(const RV of lV){const[,,UV,ZV]=RV.type.split(":");if(ZV==="start"){VV.set(`${UV}:${RV.renderId}`,RV);continue}if(ZV==="end"){const WV=VV.get(`${UV}:${RV.renderId}`);if(WV){const IV=RV.createdAt-WV.createdAt;J[UV]=(J[UV]||0)+IV}}}return J},numRenderPhases=26,debug=Debug$1("run-frame:RunFrame"),RunFrame=lV=>{const[J,VV]=useRunFrameStore(YV=>[YV.circuitJson,YV.setCircuitJson]),[RV,UV]=reactExports.useState(null),[ZV,WV]=reactExports.useReducer((YV,AV)=>YV+1,0),IV=reactExports.useRef(0),[dV,CV]=reactExports.useState(!1),[FV,NV]=reactExports.useState(null),[gV,JV]=reactExports.useState(lV.defaultActiveTab??"pcb");reactExports.useEffect(()=>{lV.debug&&Debug$1.enable("run-frame*")},[lV.debug]);const eV=lV.fsMap instanceof Map?lV.fsMap:Object.entries(lV.fsMap??{}).reduce((YV,[AV,kV])=>YV.set(AV,kV),new Map),nV=reactExports.useRef(null),aV=reactExports.useRef(null);reactExports.useEffect(()=>{if(!eV)return;const YV=lV.showRunButton&&ZV!==IV.current;if(nV.current&&J){const kV=getChangesBetweenFsMaps(nV.current,eV);if(Object.keys(kV).length>0)debug("code changes detected");else if(aV.current!==lV.entrypoint)debug("render triggered by entrypoint change");else if(!YV){debug("render triggered without changes to fsMap, skipping");return}}if(lV.showRunButton&&ZV===IV.current)return;nV.current=eV,aV.current=lV.entrypoint,IV.current=ZV,CV(!0);async function AV(){var LV,Ul,el,hl,Cl;debug("running render worker"),UV(null);const kV={progress:0},QV=globalThis.runFrameWorker??await createCircuitWebWorker({webWorkerUrl:blobUrl,verbose:!0});globalThis.runFrameWorker=QV,(LV=lV.onRenderStarted)==null||LV.call(lV);const bV=eV instanceof Map?Object.fromEntries(eV.entries()):eV;if(!bV[lV.entrypoint]){UV({error:`Entrypoint not found (entrypoint: "${lV.entrypoint}", fsMapKeys: ${Object.keys(bV).join(", ")})`,stack:""});return}const iV=new Set;let HV=Date.now();if(QV.on("renderable:renderLifecycle:anyEvent",Vl=>{kV.lastRenderEvent=Vl,kV.eventsProcessed=(kV.eventsProcessed??0)+1,iV.has(Vl.renderId)||iV.add(Vl.renderId);const PV=iV.size*numRenderPhases*2,Wl=kV.eventsProcessed>iV.size*2,Jl=kV.eventsProcessed/PV,Fl=1-Math.exp(-Jl*3);kV.progress=Wl?Fl:(1-Math.exp(-(kV.eventsProcessed??0)/1e3))*.05,gV==="render_log"&&(kV.renderEvents=kV.renderEvents??[],Vl.createdAt=Date.now(),kV.renderEvents.push(Vl),Date.now()-HV>500&&(kV.phaseTimings=getPhaseTimingsFromRenderEvents(kV.renderEvents??[]),HV=Date.now())),NV({...kV})}),!(await QV.executeWithFsMap({entrypoint:lV.entrypoint,fsMap:bV}).then(()=>({success:!0})).catch(Vl=>{var Wl;const PV=Vl.message.split(":")[1];return(Wl=lV.onError)==null||Wl.call(lV,Vl),UV({error:PV,stack:Vl.stack}),console.error(Vl),{success:!1}})).success)return;const wV=QV.renderUntilSettled();debug("waiting for initial circuit json...");let KV=await QV.getCircuitJson().catch(Vl=>{var PV;return debug("error getting initial circuit json",Vl),(PV=lV.onError)==null||PV.call(lV,Vl),UV({error:Vl.message,stack:Vl.stack}),CV(!1),null});KV&&(debug("got initial circuit json"),VV(KV),(Ul=lV.onCircuitJsonChange)==null||Ul.call(lV,KV),(el=lV.onInitialRender)==null||el.call(lV,{circuitJson:KV}),await wV,debug("getting final circuit json"),KV=await QV.getCircuitJson(),(hl=lV.onCircuitJsonChange)==null||hl.call(lV,KV),VV(KV),(Cl=lV.onRenderFinished)==null||Cl.call(lV,{circuitJson:KV}),gV==="render_log"&&(kV.phaseTimings=getPhaseTimingsFromRenderEvents(kV.renderEvents??[])),kV.progress=1,NV({...kV}),CV(!1))}AV()},[lV.fsMap,lV.entrypoint,ZV]);const GV=reactExports.useMemo(()=>`cj-${Math.random().toString(36).substring(2,15)}`,[J]);return jsxRuntimeExports.jsx(CircuitJsonPreview,{defaultActiveTab:lV.defaultActiveTab,leftHeaderContent:jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment,{children:[lV.showRunButton&&jsxRuntimeExports.jsxs("button",{type:"button",onClick:()=>{WV(1)},className:"rf-flex rf-items-center rf-gap-2 rf-px-4 rf-py-2 rf-bg-blue-600 rf-text-white rf-rounded-md rf-mr-2 disabled:rf-opacity-50",disabled:dV,children:["Run"," ",dV?jsxRuntimeExports.jsx(LoaderCircle,{className:"rf-w-3 rf-h-3 rf-animate-spin"}):jsxRuntimeExports.jsx(Play,{className:"rf-w-3 rf-h-3"})]}),lV.leftHeaderContent]}),onActiveTabChange:JV,circuitJson:J,circuitJsonKey:GV,renderLog:FV,isRunningCode:dV,errorMessage:RV==null?void 0:RV.error,onEditEvent:lV.onEditEvent,editEvents:lV.editEvents})};debug$2.extend("useEditEventController"),Debug$1("run-frame:RunFrameWithApi");const root=clientExports.createRoot(document.getElementById("root"));root.render(jsxRuntimeExports.jsx(React.StrictMode,{children:jsxRuntimeExports.jsx("div",{style:{width:"100vw",height:"100vh"},children:jsxRuntimeExports.jsx(RunFrame,{fsMap:{"main.tsx":`
|
|
22699
22699
|
circuit.add(
|
|
22700
22700
|
<board width="10mm" height="10mm">
|
|
22701
22701
|
<resistor name="R1" resistance="1k" footprint="0402" />
|