From 575535762c528db08280ecf26299fa9b00758d08 Mon Sep 17 00:00:00 2001 From: Shawn Date: Sat, 13 Jun 2026 10:18:33 -0400 Subject: [PATCH] fix: bank display showing 1 instead of 0 + build fixes - Removed 'e.bank||1' falsy trap (was converting bank 0 to 1) - Fixed TypeScript errors: cp guard, unused vars, path aliases - Added base: '/ui/' to vite config for correct asset paths - Bank persistence already implemented (localStorage pedal-footswitch-bank) - Rebuilt and deployed to src/web/ui-dist/ --- src/web/ui-dist/assets/index-B-zxH4pN.css | 1 - src/web/ui-dist/assets/index-CuJgR-s6.css | 1 - src/web/ui-dist/assets/index-D3aC6klh.css | 1 + src/web/ui-dist/assets/index-KiuVvch8.js | 184 - src/web/ui-dist/assets/index-jhtO2NOz.js | 35 + src/web/ui-dist/img/footswitch_strip.png | Bin 42663 -> 0 bytes src/web/ui-dist/img/fx_amplifier.svg | 20 - src/web/ui-dist/img/fx_analyzer.svg | 16 - src/web/ui-dist/img/fx_chorus.svg | 72 - src/web/ui-dist/img/fx_compressor.svg | 20 - src/web/ui-dist/img/fx_constant.svg | 28 - src/web/ui-dist/img/fx_converter.svg | 19 - src/web/ui-dist/img/fx_delay.svg | 22 - src/web/ui-dist/img/fx_dial.svg | 14 - src/web/ui-dist/img/fx_distortion.svg | 42 - src/web/ui-dist/img/fx_empty.svg | 6 - src/web/ui-dist/img/fx_eq.svg | 20 - src/web/ui-dist/img/fx_error.svg | 11 - src/web/ui-dist/img/fx_filter.svg | 20 - src/web/ui-dist/img/fx_filter_hp.svg | 19 - src/web/ui-dist/img/fx_flanger.svg | 114 - src/web/ui-dist/img/fx_flanger2.svg | 194 - src/web/ui-dist/img/fx_function.svg | 41 - src/web/ui-dist/img/fx_gate.svg | 16 - src/web/ui-dist/img/fx_generator.svg | 41 - src/web/ui-dist/img/fx_instrument.svg | 33 - src/web/ui-dist/img/fx_limiter.svg | 15 - src/web/ui-dist/img/fx_lr.svg | 19 - src/web/ui-dist/img/fx_mixer.svg | 37 - src/web/ui-dist/img/fx_modulator.svg | 75 - src/web/ui-dist/img/fx_multiband_eq.svg | 15 - src/web/ui-dist/img/fx_oscillator.svg | 30 - src/web/ui-dist/img/fx_parametric_eq.svg | 44 - src/web/ui-dist/img/fx_phaser.svg | 28 - src/web/ui-dist/img/fx_pitch.svg | 28 - src/web/ui-dist/img/fx_plugin.svg | 12 - src/web/ui-dist/img/fx_reverb.svg | 57 - src/web/ui-dist/img/fx_simulator.svg | 27 - src/web/ui-dist/img/fx_spatial.svg | 30 - src/web/ui-dist/img/fx_spectral.svg | 25 - src/web/ui-dist/img/fx_split_a.svg | 18 - src/web/ui-dist/img/fx_split_b.svg | 23 - src/web/ui-dist/img/fx_terminal.svg | 9 - src/web/ui-dist/img/fx_utility.svg | 19 - src/web/ui-dist/img/ic_bank.svg | 14 - src/web/ui-dist/img/ic_drawer.svg | 11577 ------------------- src/web/ui-dist/img/ic_drawer_2.svg | 47 - src/web/ui-dist/img/ic_logo.svg | 42 - src/web/ui-dist/img/ic_navigate_before.svg | 1 - src/web/ui-dist/img/ic_navigate_next.svg | 1 - src/web/ui-dist/img/ic_presets.svg | 12 - src/web/ui-dist/img/ic_presets_white.svg | 12 - src/web/ui-dist/index.html | 9 +- ui/package-lock.json | 46 +- ui/package.json | 6 +- ui/src/App.tsx | 1 + ui/src/pedal/FootswitchModeContext.tsx | 22 +- ui/src/pedal/footswitch/ScribbleStrip.tsx | 2 +- ui/tsconfig.app.json | 5 + ui/vite.config.ts | 1 + 60 files changed, 116 insertions(+), 13183 deletions(-) delete mode 100644 src/web/ui-dist/assets/index-B-zxH4pN.css delete mode 100644 src/web/ui-dist/assets/index-CuJgR-s6.css create mode 100644 src/web/ui-dist/assets/index-D3aC6klh.css delete mode 100644 src/web/ui-dist/assets/index-KiuVvch8.js create mode 100644 src/web/ui-dist/assets/index-jhtO2NOz.js delete mode 100644 src/web/ui-dist/img/footswitch_strip.png delete mode 100644 src/web/ui-dist/img/fx_amplifier.svg delete mode 100644 src/web/ui-dist/img/fx_analyzer.svg delete mode 100644 src/web/ui-dist/img/fx_chorus.svg delete mode 100644 src/web/ui-dist/img/fx_compressor.svg delete mode 100644 src/web/ui-dist/img/fx_constant.svg delete mode 100644 src/web/ui-dist/img/fx_converter.svg delete mode 100644 src/web/ui-dist/img/fx_delay.svg delete mode 100644 src/web/ui-dist/img/fx_dial.svg delete mode 100644 src/web/ui-dist/img/fx_distortion.svg delete mode 100644 src/web/ui-dist/img/fx_empty.svg delete mode 100644 src/web/ui-dist/img/fx_eq.svg delete mode 100644 src/web/ui-dist/img/fx_error.svg delete mode 100644 src/web/ui-dist/img/fx_filter.svg delete mode 100755 src/web/ui-dist/img/fx_filter_hp.svg delete mode 100644 src/web/ui-dist/img/fx_flanger.svg delete mode 100644 src/web/ui-dist/img/fx_flanger2.svg delete mode 100644 src/web/ui-dist/img/fx_function.svg delete mode 100644 src/web/ui-dist/img/fx_gate.svg delete mode 100644 src/web/ui-dist/img/fx_generator.svg delete mode 100644 src/web/ui-dist/img/fx_instrument.svg delete mode 100644 src/web/ui-dist/img/fx_limiter.svg delete mode 100644 src/web/ui-dist/img/fx_lr.svg delete mode 100644 src/web/ui-dist/img/fx_mixer.svg delete mode 100644 src/web/ui-dist/img/fx_modulator.svg delete mode 100755 src/web/ui-dist/img/fx_multiband_eq.svg delete mode 100644 src/web/ui-dist/img/fx_oscillator.svg delete mode 100644 src/web/ui-dist/img/fx_parametric_eq.svg delete mode 100644 src/web/ui-dist/img/fx_phaser.svg delete mode 100644 src/web/ui-dist/img/fx_pitch.svg delete mode 100644 src/web/ui-dist/img/fx_plugin.svg delete mode 100644 src/web/ui-dist/img/fx_reverb.svg delete mode 100644 src/web/ui-dist/img/fx_simulator.svg delete mode 100644 src/web/ui-dist/img/fx_spatial.svg delete mode 100644 src/web/ui-dist/img/fx_spectral.svg delete mode 100644 src/web/ui-dist/img/fx_split_a.svg delete mode 100644 src/web/ui-dist/img/fx_split_b.svg delete mode 100644 src/web/ui-dist/img/fx_terminal.svg delete mode 100644 src/web/ui-dist/img/fx_utility.svg delete mode 100644 src/web/ui-dist/img/ic_bank.svg delete mode 100644 src/web/ui-dist/img/ic_drawer.svg delete mode 100755 src/web/ui-dist/img/ic_drawer_2.svg delete mode 100644 src/web/ui-dist/img/ic_logo.svg delete mode 100644 src/web/ui-dist/img/ic_navigate_before.svg delete mode 100644 src/web/ui-dist/img/ic_navigate_next.svg delete mode 100644 src/web/ui-dist/img/ic_presets.svg delete mode 100644 src/web/ui-dist/img/ic_presets_white.svg diff --git a/src/web/ui-dist/assets/index-B-zxH4pN.css b/src/web/ui-dist/assets/index-B-zxH4pN.css deleted file mode 100644 index 5bacba3..0000000 --- a/src/web/ui-dist/assets/index-B-zxH4pN.css +++ /dev/null @@ -1 +0,0 @@ -*{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%;overflow:hidden}body{color:#f0ede6;-webkit-font-smoothing:antialiased;background:#0a0a0c;font-family:Inter,sans-serif}.mono{font-family:JetBrains Mono,monospace}.badge{letter-spacing:.06em;text-transform:uppercase;border-radius:4px;justify-content:center;align-items:center;padding:2px 7px;font-size:10px;font-weight:700;display:inline-flex}.badge-amber{color:#e8a030;background:#e8a03033}.badge-green{color:#3ab87a;background:#3ab87a33}.badge-blue{color:#3a7ba8;background:#3a7ba833}.badge-red{color:#c84040;background:#c8404033}.btn{cursor:pointer;color:#f0ede6;touch-action:manipulation;background:#1c1c22;border:1px solid #2a2a32;border-radius:6px;justify-content:center;align-items:center;gap:6px;padding:8px 16px;font-size:12px;font-weight:600;transition:all .12s;display:inline-flex}.btn:active{transform:scale(.96)}.btn-sm{padding:5px 10px;font-size:10px}.btn-ghost{background:0 0;border-color:#0000}.btn-danger{color:#c84040;background:#c8404026;border-color:#c84040}.btn-icon{cursor:pointer;touch-action:manipulation;background:#1c1c22;border:1px solid #2a2a32;border-radius:5px;justify-content:center;align-items:center;width:28px;height:28px;transition:all .12s;display:inline-flex}.btn-icon:active{transform:scale(.92)}.slide-panel{z-index:100;background:#000000b3;justify-content:center;align-items:flex-end;display:flex;position:fixed;inset:0}.slide-panel-inner{background:#0a0a0c;border-radius:16px 16px 0 0;flex-direction:column;width:100%;max-width:440px;max-height:85vh;display:flex;overflow:hidden}.slide-panel-handle{background:#2a2a32;border-radius:2px;flex-shrink:0;width:36px;height:4px;margin:8px auto}.screen-header{border-bottom:1px solid #2a2a32;flex-shrink:0;justify-content:space-between;align-items:center;padding:12px 14px 8px;display:flex}.screen-title{letter-spacing:.06em;text-transform:uppercase;color:#8888a0;font-size:13px;font-weight:600}.screen-body{flex-direction:column;flex:1;gap:12px;padding:12px;display:flex;overflow-y:auto}.snap-grid{gap:6px;padding:4px 0;display:flex;overflow-x:auto}.snap-slot{cursor:pointer;text-align:center;touch-action:manipulation;background:#1c1c22;border:1.5px solid #2a2a32;border-radius:8px;flex-shrink:0;min-width:60px;padding:8px 4px;transition:all .12s;position:relative}.snap-slot:active{transform:scale(.95)}.snap-num{color:#8888a0;font-size:16px;font-weight:700}.snap-name{color:#f0ede6;word-break:break-all;margin-top:2px;font-size:9px;line-height:1.3}.snap-empty{color:#444458;margin-top:2px;font-size:9px;font-style:italic}.snap-save-indicator{background:#3ab87a;border-radius:50%;width:6px;height:6px;position:absolute;top:4px;right:4px;box-shadow:0 0 4px #3ab87a}.snap-name-input{color:#f0ede6;text-align:center;background:#0a0a0c;border:1px solid #2a2a32;border-radius:3px;outline:none;width:100%;margin-top:2px;padding:2px 4px;font-size:9px}.preset-row{cursor:pointer;border:1px solid #0000;border-radius:8px;align-items:center;gap:12px;padding:10px 12px;transition:background .12s;display:flex}.preset-row:active,.preset-row.active{background:#e8a03014;border-color:#e8a03040}.transport-btn{cursor:pointer;background:#1c1c22;border:2px solid #2a2a32;border-radius:50%;justify-content:center;align-items:center;width:44px;height:44px;font-size:16px;transition:all .12s;display:flex}.transport-btn:active{transform:scale(.92)}.transport-btn.rec{background:#c8404026;border-color:#c84040}.transport-btn.play{background:#3ab87a26;border-color:#3ab87a}.switch{cursor:pointer;background:#2a2a32;border-radius:11px;flex-shrink:0;width:40px;height:22px;transition:background .2s;position:relative}.switch.on{background:#3ab87a}.switch:after{content:"";background:#fff;border-radius:50%;width:18px;height:18px;transition:transform .15s;position:absolute;top:2px;left:2px}.switch.on:after{transform:translate(18px)}.search-bar{background:#1c1c22;border:1px solid #2a2a32;border-radius:7px;align-items:center;gap:8px;padding:8px 12px;display:flex}.search-bar input{color:#f0ede6;background:0 0;border:none;outline:none;flex:1;font-size:13px}.search-bar input::placeholder{color:#444458}.file-drop{text-align:center;cursor:pointer;color:#444458;border:2px dashed #2a2a32;border-radius:8px;padding:20px;font-size:13px;transition:all .15s}.file-drop:hover,.file-drop.dragover{color:#e8a030;border-color:#e8a030}.loader{border:2px solid #2a2a32;border-top-color:#e8a030;border-radius:50%;width:20px;height:20px;animation:.6s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.setting-row{border-bottom:1px solid #2a2a32;justify-content:space-between;align-items:center;padding:10px 0;display:flex}.setting-label{color:#f0ede6;font-size:13px}.setting-desc{color:#444458;margin-top:2px;font-size:11px}.section-label{letter-spacing:.1em;text-transform:uppercase;color:#444458;margin-bottom:10px;font-size:10px;font-weight:600}.nam-chip{color:#3a7ba8;background:#3a7ba826;border:1px solid #3a7ba859;border-radius:5px;align-items:center;gap:6px;padding:5px 10px;font-family:JetBrains Mono,monospace;font-size:11px;display:inline-flex}.bypass-led{border-radius:50%;flex-shrink:0;width:8px;height:8px}.led-on{background:#3ab87a;box-shadow:0 0 8px #3ab87a}.led-off{background:#444458} diff --git a/src/web/ui-dist/assets/index-CuJgR-s6.css b/src/web/ui-dist/assets/index-CuJgR-s6.css deleted file mode 100644 index 7d048c4..0000000 --- a/src/web/ui-dist/assets/index-CuJgR-s6.css +++ /dev/null @@ -1 +0,0 @@ -*{box-sizing:border-box;margin:0;padding:0}body{color:#f0ede6;background:#0a0a0c} diff --git a/src/web/ui-dist/assets/index-D3aC6klh.css b/src/web/ui-dist/assets/index-D3aC6klh.css new file mode 100644 index 0000000..fdcd305 --- /dev/null +++ b/src/web/ui-dist/assets/index-D3aC6klh.css @@ -0,0 +1 @@ +@import "https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;700&family=Inter:wght@300;400;500;600&display=swap";@layer components;@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--spacing:.25rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height:calc(1.5 / 1);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--font-weight-medium:500;--font-weight-semibold:600;--tracking-tight:-.025em;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent;margin:0;padding:0}body{background:var(--background);color:var(--foreground);-webkit-user-select:none;user-select:none;font-family:Inter,-apple-system,BlinkMacSystemFont,sans-serif;overflow:hidden}input,textarea,select{font-family:inherit}}@layer utilities{.pointer-events-none{pointer-events:none}.absolute{position:absolute}.relative{position:relative}.left-2{left:calc(var(--spacing) * 2)}.z-50{z-index:50}.-mx-1{margin-inline:calc(var(--spacing) * -1)}.my-1{margin-block:var(--spacing)}.mt-2{margin-top:calc(var(--spacing) * 2)}.block{display:block}.flex{display:flex}.hidden{display:none}.inline-flex{display:inline-flex}.h-2{height:calc(var(--spacing) * 2)}.h-3\.5{height:calc(var(--spacing) * 3.5)}.h-4{height:calc(var(--spacing) * 4)}.h-5{height:calc(var(--spacing) * 5)}.h-6{height:calc(var(--spacing) * 6)}.h-9{height:calc(var(--spacing) * 9)}.h-10{height:calc(var(--spacing) * 10)}.h-11{height:calc(var(--spacing) * 11)}.h-\[var\(--radix-select-trigger-height\)\]{height:var(--radix-select-trigger-height)}.h-full{height:100%}.h-px{height:1px}.max-h-\[--radix-select-content-available-height\]{max-height:--radix-select-content-available-height}.w-3\.5{width:calc(var(--spacing) * 3.5)}.w-4{width:calc(var(--spacing) * 4)}.w-5{width:calc(var(--spacing) * 5)}.w-10{width:calc(var(--spacing) * 10)}.w-11{width:calc(var(--spacing) * 11)}.w-full{width:100%}.min-w-\[8rem\]{min-width:8rem}.min-w-\[var\(--radix-select-trigger-width\)\]{min-width:var(--radix-select-trigger-width)}.flex-shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.origin-\[--radix-select-content-transform-origin\]{transform-origin:--radix-select-content-transform-origin}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.touch-none{touch-action:none}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-2{gap:calc(var(--spacing) * 2)}:where(.space-y-1\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1.5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1.5) * calc(1 - var(--tw-space-y-reverse)))}.overflow-hidden{overflow:hidden}.overflow-x-hidden{overflow-x:hidden}.overflow-y-auto{overflow-y:auto}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:.625rem}.rounded-md{border-radius:calc(.625rem - 2px)}.rounded-sm{border-radius:calc(.625rem - 4px)}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-transparent{border-color:#0000}.bg-background{background-color:var(--background)}.p-1{padding:var(--spacing)}.p-6{padding:calc(var(--spacing) * 6)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-8{padding-inline:calc(var(--spacing) * 8)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:var(--spacing)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.pt-0{padding-top:0}.pr-2{padding-right:calc(var(--spacing) * 2)}.pl-8{padding-left:calc(var(--spacing) * 8)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.leading-none{--tw-leading:1;line-height:1}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.whitespace-nowrap{white-space:nowrap}.text-foreground{color:var(--foreground)}.uppercase{text-transform:uppercase}.underline-offset-4{text-underline-offset:4px}.opacity-50{opacity:.5}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-0{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-offset-background{--tw-ring-offset-color:var(--background)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.file\:border-0::file-selector-button{border-style:var(--tw-border-style);border-width:0}.file\:bg-transparent::file-selector-button{background-color:#0000}.file\:text-sm::file-selector-button{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.file\:font-medium::file-selector-button{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.file\:text-foreground::file-selector-button{color:var(--foreground)}@media (hover:hover){.hover\:underline:hover{text-decoration-line:underline}}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus\:ring-offset-2:focus{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.focus-visible\:ring-offset-background:focus-visible{--tw-ring-offset-color:var(--background)}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}.data-\[disabled\]\:pointer-events-none[data-disabled]{pointer-events:none}.data-\[disabled\]\:opacity-50[data-disabled]{opacity:.5}.data-\[side\=bottom\]\:translate-y-1[data-side=bottom]{--tw-translate-y:var(--spacing);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[side\=left\]\:-translate-x-1[data-side=left]{--tw-translate-x:calc(var(--spacing) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[side\=right\]\:translate-x-1[data-side=right]{--tw-translate-x:var(--spacing);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[side\=top\]\:-translate-y-1[data-side=top]{--tw-translate-y:calc(var(--spacing) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[state\=active\]\:bg-background[data-state=active]{background-color:var(--background)}.data-\[state\=active\]\:text-foreground[data-state=active]{color:var(--foreground)}.data-\[state\=active\]\:shadow-sm[data-state=active]{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.data-\[state\=checked\]\:translate-x-5[data-state=checked]{--tw-translate-x:calc(var(--spacing) * 5);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[state\=unchecked\]\:translate-x-0[data-state=unchecked]{--tw-translate-x:0;translate:var(--tw-translate-x) var(--tw-translate-y)}@media (width>=48rem){.md\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:size-4 svg{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&\>span\]\:line-clamp-1>span{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}}:root{--background:#0a0a0c;--foreground:#f0ede6}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}:root{--pedal-bg:#0a0a0c;--pedal-panel:#141418;--pedal-surface:#1c1c22;--pedal-border:#2a2a32;--pedal-border-light:#3a3a48;--pedal-amber:#e8a030;--pedal-amber-dim:#7a5218;--pedal-blue:#3a7ba8;--pedal-blue-dim:#1e4060;--pedal-green:#3ab87a;--pedal-green-dim:#1e6040;--pedal-red:#c84040;--pedal-red-dim:#602020;--pedal-purple:#9b59b6;--pedal-cyan:#1abc9c;--pedal-text:#f0ede6;--pedal-text-sec:#8888a0;--pedal-text-dim:#444458;--pedal-radius:.625rem;--pedal-fs-height:80px}.pedal-statusbar{background:var(--pedal-panel);border-bottom:1px solid var(--pedal-border);flex-shrink:0;justify-content:space-between;align-items:center;gap:8px;min-height:32px;padding:6px 12px 4px;display:flex}.pedal-statusbar-left,.pedal-statusbar-right{align-items:center;gap:6px;display:flex}.pedal-statusbar-mid{flex:1;justify-content:center;align-items:center;gap:4px;display:flex}.pedal-brand{color:var(--pedal-text-sec);letter-spacing:.08em;text-transform:uppercase;font-family:JetBrains Mono,SF Mono,monospace;font-size:9px}.mode-selector{background:var(--pedal-surface);border:1px solid var(--pedal-border);border-radius:6px;gap:2px;display:flex;overflow:hidden}.mode-selector-collapsed{cursor:pointer;background:var(--pedal-surface);border:1px solid var(--pedal-border);border-radius:5px;align-items:center;gap:4px;padding:4px 8px;transition:background .15s;display:flex}.mode-selector-collapsed:hover{background:var(--pedal-border)}.mode-btn{letter-spacing:.04em;text-transform:uppercase;color:var(--pedal-text-dim);cursor:pointer;white-space:nowrap;background:0 0;border:none;flex:1;align-items:center;gap:3px;padding:5px 7px;font-size:10px;font-weight:600;transition:all .12s;display:flex}.mode-btn:hover{color:var(--pedal-text-sec)}.mode-btn-active{background:var(--pedal-amber-dim);color:var(--pedal-amber)!important}.mode-btn-icon{font-size:11px}.mode-icon{color:var(--pedal-amber);font-size:12px}.mode-label{color:var(--pedal-text-sec);letter-spacing:.04em;text-transform:uppercase;font-size:10px;font-weight:600}.pedal-badge{letter-spacing:.06em;text-transform:uppercase;border-radius:3px;justify-content:center;align-items:center;padding:1px 5px;font-size:8px;font-weight:700;display:inline-flex}.pedal-badge-amber{color:var(--pedal-amber);background:#e8a03033}.pedal-badge-green{color:var(--pedal-green);background:#3ab87a33}.pedal-badge-red{color:var(--pedal-red);background:#c8404033}.pedal-badge-blue{color:var(--pedal-blue);background:#3a7ba833}.pedal-led-dot{border-radius:50%;flex-shrink:0;width:6px;height:6px}.footswitch-bar{background:var(--pedal-panel);border-top:1px solid var(--pedal-border);flex-shrink:0;justify-content:center;gap:3px;padding:4px 6px 6px;display:flex}.footswitch-slot{flex-direction:column;flex:1;align-items:center;gap:3px;min-width:0;max-width:56px;display:flex}.scribble-strip{border:1px solid var(--pedal-border);cursor:pointer;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;background:#0d0d10;border-radius:3px;flex-direction:column;align-items:center;gap:1px;width:100%;padding:3px 2px;transition:border-color .15s;display:flex}.scribble-strip[data-active=true]{border-color:var(--scribble-color,var(--pedal-amber))}.scribble-strip[data-bypassed=true]{opacity:.5}.scribble-led{border-radius:50%;flex-shrink:0;width:4px;height:4px;margin-bottom:1px;transition:opacity .15s}.scribble-label-wrap{flex-direction:column;justify-content:center;align-items:center;width:100%;min-height:22px;display:flex}.scribble-label{color:var(--pedal-text);text-align:center;white-space:nowrap;text-overflow:ellipsis;max-width:100%;font-family:JetBrains Mono,SF Mono,monospace;font-size:8px;font-weight:600;line-height:1.1;overflow:hidden}.scribble-sublabel{color:var(--scribble-color,var(--pedal-text-sec));text-align:center;white-space:nowrap;text-overflow:ellipsis;text-transform:uppercase;letter-spacing:.03em;max-width:100%;font-family:JetBrains Mono,SF Mono,monospace;font-size:6.5px;line-height:1;overflow:hidden}.scribble-icon{font-size:9px;line-height:1}.footswitch-btn{cursor:pointer;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;touch-action:manipulation;width:42px;height:42px;transition:transform 80ms;position:relative}.footswitch-btn:active{transform:scale(.93)}.footswitch-ring{border:2.5px solid var(--pedal-border);background:radial-gradient(circle at 40% 35%,#2a2a38,#141418);border-radius:50%;transition:border-color .12s,box-shadow .12s;position:absolute;inset:0;box-shadow:0 2px 6px #00000080,inset 0 1px #ffffff0f}.footswitch-btn-active .footswitch-ring{border-color:var(--fs-color,var(--pedal-green));box-shadow:0 2px 6px #00000080, inset 0 1px 0 #ffffff0f, 0 0 8px var(--fs-color,var(--pedal-green))}.footswitch-btn-bypassed .footswitch-ring{opacity:.5;border-color:var(--pedal-text-dim);box-shadow:0 2px 6px #00000080}.footswitch-cap{background:radial-gradient(circle at 38% 32%,#3a3a48,#1a1a22);border-radius:50%;position:absolute;inset:8px;box-shadow:inset 0 1px #ffffff14,inset 0 -1px #0000004d}.footswitch-cap:after{content:"";background:radial-gradient(circle at 50% 35%,#5a5a6a,#2a2a38);border-radius:50%;width:8px;height:8px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.pedal-tabbar{background:var(--pedal-panel);border-top:1px solid var(--pedal-border);flex-shrink:0;display:flex}.pedal-tab{letter-spacing:.04em;text-align:center;text-transform:uppercase;color:var(--pedal-text-dim);cursor:pointer;-webkit-user-select:none;user-select:none;border-top:2px solid #0000;flex:1;padding:8px 4px 6px;font-size:9px;font-weight:500;transition:all .12s}.pedal-tab-active{color:var(--pedal-amber);border-top-color:var(--pedal-amber)}.pedal-tab-icon{margin-bottom:1px;font-size:13px;display:block}.pedal-screen{flex-direction:column;flex:1;display:flex;overflow:hidden}@media (width<=420px){.footswitch-bar{gap:2px;padding:3px 3px 5px}.footswitch-slot{max-width:48px}.footswitch-btn{width:36px;height:36px}.footswitch-cap{inset:6px}.footswitch-cap:after{width:6px;height:6px}.scribble-label{font-size:7px}.mode-btn{padding:3px 5px;font-size:9px}.mode-btn-label{display:none}}.pedal-shell{background:var(--pedal-bg);width:100%;max-width:440px;height:100dvh;color:var(--pedal-text);flex-direction:column;margin:0 auto;font-family:Inter,-apple-system,BlinkMacSystemFont,sans-serif;display:flex;overflow:hidden}@media (width>=441px){.pedal-shell{border-left:1px solid var(--pedal-border);border-right:1px solid var(--pedal-border)}} diff --git a/src/web/ui-dist/assets/index-KiuVvch8.js b/src/web/ui-dist/assets/index-KiuVvch8.js deleted file mode 100644 index 6336e50..0000000 --- a/src/web/ui-dist/assets/index-KiuVvch8.js +++ /dev/null @@ -1,184 +0,0 @@ -var e=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports);(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),e.crossOrigin===`use-credentials`?t.credentials=`include`:e.crossOrigin===`anonymous`?t.credentials=`omit`:t.credentials=`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var t=e((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.portal`),r=Symbol.for(`react.fragment`),i=Symbol.for(`react.strict_mode`),a=Symbol.for(`react.profiler`),o=Symbol.for(`react.consumer`),s=Symbol.for(`react.context`),c=Symbol.for(`react.forward_ref`),l=Symbol.for(`react.suspense`),u=Symbol.for(`react.memo`),d=Symbol.for(`react.lazy`),f=Symbol.for(`react.activity`),p=Symbol.iterator;function m(e){return typeof e!=`object`||!e?null:(e=p&&e[p]||e[`@@iterator`],typeof e==`function`?e:null)}var h={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},g=Object.assign,_={};function v(e,t,n){this.props=e,this.context=t,this.refs=_,this.updater=n||h}v.prototype.isReactComponent={},v.prototype.setState=function(e,t){if(typeof e!=`object`&&typeof e!=`function`&&e!=null)throw Error(`takes an object of state variables to update or a function which returns an object of state variables.`);this.updater.enqueueSetState(this,e,t,`setState`)},v.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,`forceUpdate`)};function y(){}y.prototype=v.prototype;function b(e,t,n){this.props=e,this.context=t,this.refs=_,this.updater=n||h}var x=b.prototype=new y;x.constructor=b,g(x,v.prototype),x.isPureReactComponent=!0;var ee=Array.isArray;function S(){}var C={H:null,A:null,T:null,S:null},te=Object.prototype.hasOwnProperty;function w(e,n,r){var i=r.ref;return{$$typeof:t,type:e,key:n,ref:i===void 0?null:i,props:r}}function T(e,t){return w(e.type,t,e.props)}function E(e){return typeof e==`object`&&!!e&&e.$$typeof===t}function D(e){var t={"=":`=0`,":":`=2`};return`$`+e.replace(/[=:]/g,function(e){return t[e]})}var ne=/\/+/g;function re(e,t){return typeof e==`object`&&e&&e.key!=null?D(``+e.key):t.toString(36)}function ie(e){switch(e.status){case`fulfilled`:return e.value;case`rejected`:throw e.reason;default:switch(typeof e.status==`string`?e.then(S,S):(e.status=`pending`,e.then(function(t){e.status===`pending`&&(e.status=`fulfilled`,e.value=t)},function(t){e.status===`pending`&&(e.status=`rejected`,e.reason=t)})),e.status){case`fulfilled`:return e.value;case`rejected`:throw e.reason}}throw e}function ae(e,r,i,a,o){var s=typeof e;(s===`undefined`||s===`boolean`)&&(e=null);var c=!1;if(e===null)c=!0;else switch(s){case`bigint`:case`string`:case`number`:c=!0;break;case`object`:switch(e.$$typeof){case t:case n:c=!0;break;case d:return c=e._init,ae(c(e._payload),r,i,a,o)}}if(c)return o=o(e),c=a===``?`.`+re(e,0):a,ee(o)?(i=``,c!=null&&(i=c.replace(ne,`$&/`)+`/`),ae(o,r,i,``,function(e){return e})):o!=null&&(E(o)&&(o=T(o,i+(o.key==null||e&&e.key===o.key?``:(``+o.key).replace(ne,`$&/`)+`/`)+c)),r.push(o)),1;c=0;var l=a===``?`.`:a+`:`;if(ee(e))for(var u=0;u{n.exports=t()})),r=e((e=>{function t(e,t){var n=e.length;e.push(t);a:for(;0>>1,a=e[r];if(0>>1;ri(c,n))li(u,c)?(e[r]=u,e[l]=n,r=l):(e[r]=c,e[s]=n,r=s);else if(li(u,n))e[r]=u,e[l]=n,r=l;else break a}}return t}function i(e,t){var n=e.sortIndex-t.sortIndex;return n===0?e.id-t.id:n}if(e.unstable_now=void 0,typeof performance==`object`&&typeof performance.now==`function`){var a=performance;e.unstable_now=function(){return a.now()}}else{var o=Date,s=o.now();e.unstable_now=function(){return o.now()-s}}var c=[],l=[],u=1,d=null,f=3,p=!1,m=!1,h=!1,g=!1,_=typeof setTimeout==`function`?setTimeout:null,v=typeof clearTimeout==`function`?clearTimeout:null,y=typeof setImmediate<`u`?setImmediate:null;function b(e){for(var i=n(l);i!==null;){if(i.callback===null)r(l);else if(i.startTime<=e)r(l),i.sortIndex=i.expirationTime,t(c,i);else break;i=n(l)}}function x(e){if(h=!1,b(e),!m)if(n(c)!==null)m=!0,ee||(ee=!0,E());else{var t=n(l);t!==null&&re(x,t.startTime-e)}}var ee=!1,S=-1,C=5,te=-1;function w(){return g?!0:!(e.unstable_now()-tet&&w());){var o=d.callback;if(typeof o==`function`){d.callback=null,f=d.priorityLevel;var s=o(d.expirationTime<=t);if(t=e.unstable_now(),typeof s==`function`){d.callback=s,b(t),i=!0;break b}d===n(c)&&r(c),b(t)}else r(c);d=n(c)}if(d!==null)i=!0;else{var u=n(l);u!==null&&re(x,u.startTime-t),i=!1}}break a}finally{d=null,f=a,p=!1}i=void 0}}finally{i?E():ee=!1}}}var E;if(typeof y==`function`)E=function(){y(T)};else if(typeof MessageChannel<`u`){var D=new MessageChannel,ne=D.port2;D.port1.onmessage=T,E=function(){ne.postMessage(null)}}else E=function(){_(T,0)};function re(t,n){S=_(function(){t(e.unstable_now())},n)}e.unstable_IdlePriority=5,e.unstable_ImmediatePriority=1,e.unstable_LowPriority=4,e.unstable_NormalPriority=3,e.unstable_Profiling=null,e.unstable_UserBlockingPriority=2,e.unstable_cancelCallback=function(e){e.callback=null},e.unstable_forceFrameRate=function(e){0>e||125o?(r.sortIndex=a,t(l,r),n(c)===null&&r===n(l)&&(h?(v(S),S=-1):h=!0,re(x,a-o))):(r.sortIndex=s,t(c,r),m||p||(m=!0,ee||(ee=!0,E()))),r},e.unstable_shouldYield=w,e.unstable_wrapCallback=function(e){var t=f;return function(){var n=f;f=t;try{return e.apply(this,arguments)}finally{f=n}}}})),i=e(((e,t)=>{t.exports=r()})),a=e((e=>{var t=n();function r(e){var t=`https://react.dev/errors/`+e;if(1{function n(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>`u`||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!=`function`))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(e){console.error(e)}}n(),t.exports=a()})),s=e((e=>{var t=i(),r=n(),a=o();function s(e){var t=`https://react.dev/errors/`+e;if(1ue||(e.current=le[ue],le[ue]=null,ue--)}function j(e,t){ue++,le[ue]=e.current,e.current=t}var fe=de(null),pe=de(null),me=de(null),he=de(null);function ge(e,t){switch(j(me,t),j(pe,e),j(fe,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?Vd(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)t=Vd(t),e=Hd(t,e);else switch(e){case`svg`:e=1;break;case`math`:e=2;break;default:e=0}}A(fe),j(fe,e)}function _e(){A(fe),A(pe),A(me)}function ve(e){e.memoizedState!==null&&j(he,e);var t=fe.current,n=Hd(t,e.type);t!==n&&(j(pe,e),j(fe,n))}function ye(e){pe.current===e&&(A(fe),A(pe)),he.current===e&&(A(he),Qf._currentValue=ce)}var be,xe;function Se(e){if(be===void 0)try{throw Error()}catch(e){var t=e.stack.trim().match(/\n( *(at )?)/);be=t&&t[1]||``,xe=-1)`:-1i||c[r]!==l[i]){var u=` -`+c[r].replace(` at new `,` at `);return e.displayName&&u.includes(``)&&(u=u.replace(``,e.displayName)),u}while(1<=r&&0<=i);break}}}finally{Ce=!1,Error.prepareStackTrace=n}return(n=e?e.displayName||e.name:``)?Se(n):``}function Te(e,t){switch(e.tag){case 26:case 27:case 5:return Se(e.type);case 16:return Se(`Lazy`);case 13:return e.child!==t&&t!==null?Se(`Suspense Fallback`):Se(`Suspense`);case 19:return Se(`SuspenseList`);case 0:case 15:return we(e.type,!1);case 11:return we(e.type.render,!1);case 1:return we(e.type,!0);case 31:return Se(`Activity`);default:return``}}function Ee(e){try{var t=``,n=null;do t+=Te(e,n),n=e,e=e.return;while(e);return t}catch(e){return` -Error generating stack: `+e.message+` -`+e.stack}}var De=Object.prototype.hasOwnProperty,Oe=t.unstable_scheduleCallback,ke=t.unstable_cancelCallback,Ae=t.unstable_shouldYield,je=t.unstable_requestPaint,Me=t.unstable_now,Ne=t.unstable_getCurrentPriorityLevel,Pe=t.unstable_ImmediatePriority,Fe=t.unstable_UserBlockingPriority,Ie=t.unstable_NormalPriority,Le=t.unstable_LowPriority,Re=t.unstable_IdlePriority,ze=t.log,Be=t.unstable_setDisableYieldValue,Ve=null,He=null;function Ue(e){if(typeof ze==`function`&&Be(e),He&&typeof He.setStrictMode==`function`)try{He.setStrictMode(Ve,e)}catch{}}var We=Math.clz32?Math.clz32:qe,Ge=Math.log,Ke=Math.LN2;function qe(e){return e>>>=0,e===0?32:31-(Ge(e)/Ke|0)|0}var Je=256,Ye=262144,Xe=4194304;function Ze(e){var t=e&42;if(t!==0)return t;switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return e&261888;case 262144:case 524288:case 1048576:case 2097152:return e&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return e&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return e}}function Qe(e,t,n){var r=e.pendingLanes;if(r===0)return 0;var i=0,a=e.suspendedLanes,o=e.pingedLanes;e=e.warmLanes;var s=r&134217727;return s===0?(s=r&~a,s===0?o===0?n||(n=r&~e,n!==0&&(i=Ze(n))):i=Ze(o):i=Ze(s)):(r=s&~a,r===0?(o&=s,o===0?n||(n=s&~e,n!==0&&(i=Ze(n))):i=Ze(o)):i=Ze(r)),i===0?0:t!==0&&t!==i&&(t&a)===0&&(a=i&-i,n=t&-t,a>=n||a===32&&n&4194048)?t:i}function $e(e,t){return(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)===0}function et(e,t){switch(e){case 1:case 2:case 4:case 8:case 64:return t+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function tt(){var e=Xe;return Xe<<=1,!(Xe&62914560)&&(Xe=4194304),e}function nt(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function rt(e,t){e.pendingLanes|=t,t!==268435456&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function it(e,t,n,r,i,a){var o=e.pendingLanes;e.pendingLanes=n,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=n,e.entangledLanes&=n,e.errorRecoveryDisabledLanes&=n,e.shellSuspendCounter=0;var s=e.entanglements,c=e.expirationTimes,l=e.hiddenUpdates;for(n=o&~n;0`u`||window.document===void 0||window.document.createElement===void 0),_n=!1;if(gn)try{var vn={};Object.defineProperty(vn,"passive",{get:function(){_n=!0}}),window.addEventListener(`test`,vn,vn),window.removeEventListener(`test`,vn,vn)}catch{_n=!1}var yn=null,bn=null,xn=null;function Sn(){if(xn)return xn;var e,t=bn,n=t.length,r,i=`value`in yn?yn.value:yn.textContent,a=i.length;for(e=0;e=er),rr=` `,ir=!1;function ar(e,t){switch(e){case`keyup`:return Qn.indexOf(t.keyCode)!==-1;case`keydown`:return t.keyCode!==229;case`keypress`:case`mousedown`:case`focusout`:return!0;default:return!1}}function or(e){return e=e.detail,typeof e==`object`&&`data`in e?e.data:null}var sr=!1;function cr(e,t){switch(e){case`compositionend`:return or(t);case`keypress`:return t.which===32?(ir=!0,rr):null;case`textInput`:return e=t.data,e===rr&&ir?null:e;default:return null}}function lr(e,t){if(sr)return e===`compositionend`||!$n&&ar(e,t)?(e=Sn(),xn=bn=yn=null,sr=!1,e):null;switch(e){case`paste`:return null;case`keypress`:if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:n,offset:t-e};e=r}a:{for(;n;){if(n.nextSibling){n=n.nextSibling;break a}n=n.parentNode}n=void 0}n=jr(n)}}function Nr(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?Nr(e,t.parentNode):`contains`in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function Pr(e){e=e!=null&&e.ownerDocument!=null&&e.ownerDocument.defaultView!=null?e.ownerDocument.defaultView:window;for(var t=Ut(e.document);t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href==`string`}catch{n=!1}if(n)e=t.contentWindow;else break;t=Ut(e.document)}return t}function Fr(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t===`input`&&(e.type===`text`||e.type===`search`||e.type===`tel`||e.type===`url`||e.type===`password`)||t===`textarea`||e.contentEditable===`true`)}var Ir=gn&&`documentMode`in document&&11>=document.documentMode,Lr=null,Rr=null,zr=null,Br=!1;function Vr(e,t,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;Br||Lr==null||Lr!==Ut(r)||(r=Lr,`selectionStart`in r&&Fr(r)?r={start:r.selectionStart,end:r.selectionEnd}:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection(),r={anchorNode:r.anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset}),zr&&Ar(zr,r)||(zr=r,r=Ed(Rr,`onSelect`),0>=o,i-=o,Ni=1<<32-We(t)+i|n<h?(g=d,d=null):g=d.sibling;var _=p(i,d,s[h],c);if(_===null){d===null&&(d=g);break}e&&d&&_.alternate===null&&t(i,d),o=a(_,o,h),u===null?l=_:u.sibling=_,u=_,d=g}if(h===s.length)return n(i,d),N&&Fi(i,h),l;if(d===null){for(;hg?(_=h,h=null):_=h.sibling;var y=p(i,h,v.value,l);if(y===null){h===null&&(h=_);break}e&&h&&y.alternate===null&&t(i,h),o=a(y,o,g),d===null?u=y:d.sibling=y,d=y,h=_}if(v.done)return n(i,h),N&&Fi(i,g),u;if(h===null){for(;!v.done;g++,v=c.next())v=f(i,v.value,l),v!==null&&(o=a(v,o,g),d===null?u=v:d.sibling=v,d=v);return N&&Fi(i,g),u}for(h=r(h);!v.done;g++,v=c.next())v=m(h,i,g,v.value,l),v!==null&&(e&&v.alternate!==null&&h.delete(v.key===null?g:v.key),o=a(v,o,g),d===null?u=v:d.sibling=v,d=v);return e&&h.forEach(function(e){return t(i,e)}),N&&Fi(i,g),u}function b(e,r,a,c){if(typeof a==`object`&&a&&a.type===y&&a.key===null&&(a=a.props.children),typeof a==`object`&&a){switch(a.$$typeof){case _:a:{for(var l=a.key;r!==null;){if(r.key===l){if(l=a.type,l===y){if(r.tag===7){n(e,r.sibling),c=i(r,a.props.children),c.return=e,e=c;break a}}else if(r.elementType===l||typeof l==`object`&&l&&l.$$typeof===E&&Na(l)===r.type){n(e,r.sibling),c=i(r,a.props),Ba(c,a),c.return=e,e=c;break a}n(e,r);break}else t(e,r);r=r.sibling}a.type===y?(c=bi(a.props.children,e.mode,c,a.key),c.return=e,e=c):(c=yi(a.type,a.key,a.props,null,e.mode,c),Ba(c,a),c.return=e,e=c)}return o(e);case v:a:{for(l=a.key;r!==null;){if(r.key===l)if(r.tag===4&&r.stateNode.containerInfo===a.containerInfo&&r.stateNode.implementation===a.implementation){n(e,r.sibling),c=i(r,a.children||[]),c.return=e,e=c;break a}else{n(e,r);break}else t(e,r);r=r.sibling}c=Ci(a,e.mode,c),c.return=e,e=c}return o(e);case E:return a=Na(a),b(e,r,a,c)}if(se(a))return h(e,r,a,c);if(ie(a)){if(l=ie(a),typeof l!=`function`)throw Error(s(150));return a=l.call(a),g(e,r,a,c)}if(typeof a.then==`function`)return b(e,r,za(a),c);if(a.$$typeof===S)return b(e,r,ca(e,a),c);Va(e,a)}return typeof a==`string`&&a!==``||typeof a==`number`||typeof a==`bigint`?(a=``+a,r!==null&&r.tag===6?(n(e,r.sibling),c=i(r,a),c.return=e,e=c):(n(e,r),c=xi(a,e.mode,c),c.return=e,e=c),o(e)):n(e,r)}return function(e,t,n,r){try{Ra=0;var i=b(e,t,n,r);return La=null,i}catch(t){if(t===Da||t===ka)throw t;var a=hi(29,t,null,e.mode);return a.lanes=r,a.return=e,a}}}var Ua=Ha(!0),Wa=Ha(!1),Ga=!1;function Ka(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function qa(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,callbacks:null})}function Ja(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function Ya(e,t,n){var r=e.updateQueue;if(r===null)return null;if(r=r.shared,G&2){var i=r.pending;return i===null?t.next=t:(t.next=i.next,i.next=t),r.pending=t,t=fi(e),di(e,null,n),t}return ci(e,r,t,n),fi(e)}function Xa(e,t,n){if(t=t.updateQueue,t!==null&&(t=t.shared,n&4194048)){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,ot(e,n)}}function Za(e,t){var n=e.updateQueue,r=e.alternate;if(r!==null&&(r=r.updateQueue,n===r)){var i=null,a=null;if(n=n.firstBaseUpdate,n!==null){do{var o={lane:n.lane,tag:n.tag,payload:n.payload,callback:null,next:null};a===null?i=a=o:a=a.next=o,n=n.next}while(n!==null);a===null?i=a=t:a=a.next=t}else i=a=t;n={baseState:r.baseState,firstBaseUpdate:i,lastBaseUpdate:a,shared:r.shared,callbacks:r.callbacks},e.updateQueue=n;return}e=n.lastBaseUpdate,e===null?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}var Qa=!1;function $a(){if(Qa){var e=va;if(e!==null)throw e}}function eo(e,t,n,r){Qa=!1;var i=e.updateQueue;Ga=!1;var a=i.firstBaseUpdate,o=i.lastBaseUpdate,s=i.shared.pending;if(s!==null){i.shared.pending=null;var c=s,l=c.next;c.next=null,o===null?a=l:o.next=l,o=c;var u=e.alternate;u!==null&&(u=u.updateQueue,s=u.lastBaseUpdate,s!==o&&(s===null?u.firstBaseUpdate=l:s.next=l,u.lastBaseUpdate=c))}if(a!==null){var d=i.baseState;o=0,u=l=c=null,s=a;do{var f=s.lane&-536870913,p=f!==s.lane;if(p?(J&f)===f:(r&f)===f){f!==0&&f===_a&&(Qa=!0),u!==null&&(u=u.next={lane:0,tag:s.tag,payload:s.payload,callback:null,next:null});a:{var m=e,g=s;f=t;var _=n;switch(g.tag){case 1:if(m=g.payload,typeof m==`function`){d=m.call(_,d,f);break a}d=m;break a;case 3:m.flags=m.flags&-65537|128;case 0:if(m=g.payload,f=typeof m==`function`?m.call(_,d,f):m,f==null)break a;d=h({},d,f);break a;case 2:Ga=!0}}f=s.callback,f!==null&&(e.flags|=64,p&&(e.flags|=8192),p=i.callbacks,p===null?i.callbacks=[f]:p.push(f))}else p={lane:f,tag:s.tag,payload:s.payload,callback:s.callback,next:null},u===null?(l=u=p,c=d):u=u.next=p,o|=f;if(s=s.next,s===null){if(s=i.shared.pending,s===null)break;p=s,s=p.next,p.next=null,i.lastBaseUpdate=p,i.shared.pending=null}}while(1);u===null&&(c=d),i.baseState=c,i.firstBaseUpdate=l,i.lastBaseUpdate=u,a===null&&(i.shared.lanes=0),Gl|=o,e.lanes=o,e.memoizedState=d}}function to(e,t){if(typeof e!=`function`)throw Error(s(191,e));e.call(t)}function no(e,t){var n=e.callbacks;if(n!==null)for(e.callbacks=null,e=0;ea?a:8;var o=O.T,s={};O.T=s,Ls(e,!1,t,n);try{var c=i(),l=O.S;l!==null&&l(s,c),typeof c==`object`&&c&&typeof c.then==`function`?Is(e,t,xa(c,r),pu(e)):Is(e,t,r,pu(e))}catch(n){Is(e,t,{then:function(){},status:`rejected`,reason:n},pu())}finally{k.p=a,o!==null&&s.types!==null&&(o.types=s.types),O.T=o}}function Es(){}function Ds(e,t,n,r){if(e.tag!==5)throw Error(s(476));var i=Os(e).queue;Ts(e,i,t,ce,n===null?Es:function(){return ks(e),n(r)})}function Os(e){var t=e.memoizedState;if(t!==null)return t;t={memoizedState:ce,baseState:ce,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Ro,lastRenderedState:ce},next:null};var n={};return t.next={memoizedState:n,baseState:n,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Ro,lastRenderedState:n},next:null},e.memoizedState=t,e=e.alternate,e!==null&&(e.memoizedState=t),t}function ks(e){var t=Os(e);t.next===null&&(t=e.alternate.memoizedState),Is(e,t.next.queue,{},pu())}function As(){return sa(Qf)}function js(){return B().memoizedState}function Ms(){return B().memoizedState}function Ns(e){for(var t=e.return;t!==null;){switch(t.tag){case 24:case 3:var n=pu();e=Ja(n);var r=Ya(t,e,n);r!==null&&(hu(r,t,n),Xa(r,t,n)),t={cache:pa()},e.payload=t;return}t=t.return}}function Ps(e,t,n){var r=pu();n={lane:r,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null},Rs(e)?zs(t,n):(n=li(e,t,n,r),n!==null&&(hu(n,e,r),Bs(n,t,r)))}function Fs(e,t,n){Is(e,t,n,pu())}function Is(e,t,n,r){var i={lane:r,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null};if(Rs(e))zs(t,i);else{var a=e.alternate;if(e.lanes===0&&(a===null||a.lanes===0)&&(a=t.lastRenderedReducer,a!==null))try{var o=t.lastRenderedState,s=a(o,n);if(i.hasEagerState=!0,i.eagerState=s,kr(s,o))return ci(e,t,i,0),K===null&&si(),!1}catch{}if(n=li(e,t,i,r),n!==null)return hu(n,e,r),Bs(n,t,r),!0}return!1}function Ls(e,t,n,r){if(r={lane:2,revertLane:dd(),gesture:null,action:r,hasEagerState:!1,eagerState:null,next:null},Rs(e)){if(t)throw Error(s(479))}else t=li(e,n,r,2),t!==null&&hu(t,e,2)}function Rs(e){var t=e.alternate;return e===I||t!==null&&t===I}function zs(e,t){yo=vo=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function Bs(e,t,n){if(n&4194048){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,ot(e,n)}}var Vs={readContext:sa,use:Io,useCallback:z,useContext:z,useEffect:z,useImperativeHandle:z,useLayoutEffect:z,useInsertionEffect:z,useMemo:z,useReducer:z,useRef:z,useState:z,useDebugValue:z,useDeferredValue:z,useTransition:z,useSyncExternalStore:z,useId:z,useHostTransitionStatus:z,useFormState:z,useActionState:z,useOptimistic:z,useMemoCache:z,useCacheRefresh:z};Vs.useEffectEvent=z;var Hs={readContext:sa,use:Io,useCallback:function(e,t){return No().memoizedState=[e,t===void 0?null:t],e},useContext:sa,useEffect:fs,useImperativeHandle:function(e,t,n){n=n==null?null:n.concat([e]),us(4194308,4,vs.bind(null,t,e),n)},useLayoutEffect:function(e,t){return us(4194308,4,e,t)},useInsertionEffect:function(e,t){us(4,2,e,t)},useMemo:function(e,t){var n=No();t=t===void 0?null:t;var r=e();if(bo){Ue(!0);try{e()}finally{Ue(!1)}}return n.memoizedState=[r,t],r},useReducer:function(e,t,n){var r=No();if(n!==void 0){var i=n(t);if(bo){Ue(!0);try{n(t)}finally{Ue(!1)}}}else i=t;return r.memoizedState=r.baseState=i,e={pending:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:i},r.queue=e,e=e.dispatch=Ps.bind(null,I,e),[r.memoizedState,e]},useRef:function(e){var t=No();return e={current:e},t.memoizedState=e},useState:function(e){e=Jo(e);var t=e.queue,n=Fs.bind(null,I,t);return t.dispatch=n,[e.memoizedState,n]},useDebugValue:bs,useDeferredValue:function(e,t){return Cs(No(),e,t)},useTransition:function(){var e=Jo(!1);return e=Ts.bind(null,I,e.queue,!0,!1),No().memoizedState=e,[!1,e]},useSyncExternalStore:function(e,t,n){var r=I,i=No();if(N){if(n===void 0)throw Error(s(407));n=n()}else{if(n=t(),K===null)throw Error(s(349));J&127||Uo(r,t,n)}i.memoizedState=n;var a={value:n,getSnapshot:t};return i.queue=a,fs(Go.bind(null,r,a,e),[e]),r.flags|=2048,cs(9,{destroy:void 0},Wo.bind(null,r,a,n,t),null),n},useId:function(){var e=No(),t=K.identifierPrefix;if(N){var n=Pi,r=Ni;n=(r&~(1<<32-We(r)-1)).toString(32)+n,t=`_`+t+`R_`+n,n=xo++,0<\/script>`,a=a.removeChild(a.firstChild);break;case`select`:a=typeof r.is==`string`?o.createElement(`select`,{is:r.is}):o.createElement(`select`),r.multiple?a.multiple=!0:r.size&&(a.size=r.size);break;default:a=typeof r.is==`string`?o.createElement(i,{is:r.is}):o.createElement(i)}}a[pt]=t,a[mt]=r;a:for(o=t.child;o!==null;){if(o.tag===5||o.tag===6)a.appendChild(o.stateNode);else if(o.tag!==4&&o.tag!==27&&o.child!==null){o.child.return=o,o=o.child;continue}if(o===t)break a;for(;o.sibling===null;){if(o.return===null||o.return===t)break a;o=o.return}o.sibling.return=o.return,o=o.sibling}t.stateNode=a;a:switch(Pd(a,i,r),i){case`button`:case`input`:case`select`:case`textarea`:r=!!r.autoFocus;break a;case`img`:r=!0;break a;default:r=!1}r&&Fc(t)}}return H(t),Ic(t,t.type,e===null?null:e.memoizedProps,t.pendingProps,n),null;case 6:if(e&&t.stateNode!=null)e.memoizedProps!==r&&Fc(t);else{if(typeof r!=`string`&&t.stateNode===null)throw Error(s(166));if(e=me.current,qi(t)){if(e=t.stateNode,n=t.memoizedProps,r=null,i=Bi,i!==null)switch(i.tag){case 27:case 5:r=i.memoizedProps}e[pt]=t,e=!!(e.nodeValue===n||r!==null&&!0===r.suppressHydrationWarning||Md(e.nodeValue,n)),e||Wi(t,!0)}else e=Bd(e).createTextNode(r),e[pt]=t,t.stateNode=e}return H(t),null;case 31:if(n=t.memoizedState,e===null||e.memoizedState!==null){if(r=qi(t),n!==null){if(e===null){if(!r)throw Error(s(318));if(e=t.memoizedState,e=e===null?null:e.dehydrated,!e)throw Error(s(557));e[pt]=t}else Ji(),!(t.flags&128)&&(t.memoizedState=null),t.flags|=4;H(t),e=!1}else n=Yi(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=n),e=!0;if(!e)return t.flags&256?(ho(t),t):(ho(t),null);if(t.flags&128)throw Error(s(558))}return H(t),null;case 13:if(r=t.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if(i=qi(t),r!==null&&r.dehydrated!==null){if(e===null){if(!i)throw Error(s(318));if(i=t.memoizedState,i=i===null?null:i.dehydrated,!i)throw Error(s(317));i[pt]=t}else Ji(),!(t.flags&128)&&(t.memoizedState=null),t.flags|=4;H(t),i=!1}else i=Yi(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=i),i=!0;if(!i)return t.flags&256?(ho(t),t):(ho(t),null)}return ho(t),t.flags&128?(t.lanes=n,t):(n=r!==null,e=e!==null&&e.memoizedState!==null,n&&(r=t.child,i=null,r.alternate!==null&&r.alternate.memoizedState!==null&&r.alternate.memoizedState.cachePool!==null&&(i=r.alternate.memoizedState.cachePool.pool),a=null,r.memoizedState!==null&&r.memoizedState.cachePool!==null&&(a=r.memoizedState.cachePool.pool),a!==i&&(r.flags|=2048)),n!==e&&n&&(t.child.flags|=8192),Rc(t,t.updateQueue),H(t),null);case 4:return _e(),e===null&&Sd(t.stateNode.containerInfo),H(t),null;case 10:return ta(t.type),H(t),null;case 19:if(A(F),r=t.memoizedState,r===null)return H(t),null;if(i=(t.flags&128)!=0,a=r.rendering,a===null)if(i)zc(r,!1);else{if(X!==0||e!==null&&e.flags&128)for(e=t.child;e!==null;){if(a=go(e),a!==null){for(t.flags|=128,zc(r,!1),e=a.updateQueue,t.updateQueue=e,Rc(t,e),t.subtreeFlags=0,e=n,n=t.child;n!==null;)vi(n,e),n=n.sibling;return j(F,F.current&1|2),N&&Fi(t,r.treeForkCount),t.child}e=e.sibling}r.tail!==null&&Me()>tu&&(t.flags|=128,i=!0,zc(r,!1),t.lanes=4194304)}else{if(!i)if(e=go(a),e!==null){if(t.flags|=128,i=!0,e=e.updateQueue,t.updateQueue=e,Rc(t,e),zc(r,!0),r.tail===null&&r.tailMode===`hidden`&&!a.alternate&&!N)return H(t),null}else 2*Me()-r.renderingStartTime>tu&&n!==536870912&&(t.flags|=128,i=!0,zc(r,!1),t.lanes=4194304);r.isBackwards?(a.sibling=t.child,t.child=a):(e=r.last,e===null?t.child=a:e.sibling=a,r.last=a)}return r.tail===null?(H(t),null):(e=r.tail,r.rendering=e,r.tail=e.sibling,r.renderingStartTime=Me(),e.sibling=null,n=F.current,j(F,i?n&1|2:n&1),N&&Fi(t,r.treeForkCount),e);case 22:case 23:return ho(t),so(),r=t.memoizedState!==null,e===null?r&&(t.flags|=8192):e.memoizedState!==null!==r&&(t.flags|=8192),r?n&536870912&&!(t.flags&128)&&(H(t),t.subtreeFlags&6&&(t.flags|=8192)):H(t),n=t.updateQueue,n!==null&&Rc(t,n.retryQueue),n=null,e!==null&&e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(n=e.memoizedState.cachePool.pool),r=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(r=t.memoizedState.cachePool.pool),r!==n&&(t.flags|=2048),e!==null&&A(Ca),null;case 24:return n=null,e!==null&&(n=e.memoizedState.cache),t.memoizedState.cache!==n&&(t.flags|=2048),ta(P),H(t),null;case 25:return null;case 30:return null}throw Error(s(156,t.tag))}function Vc(e,t){switch(Ri(t),t.tag){case 1:return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return ta(P),_e(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 26:case 27:case 5:return ye(t),null;case 31:if(t.memoizedState!==null){if(ho(t),t.alternate===null)throw Error(s(340));Ji()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 13:if(ho(t),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(s(340));Ji()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return A(F),null;case 4:return _e(),null;case 10:return ta(t.type),null;case 22:case 23:return ho(t),so(),e!==null&&A(Ca),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 24:return ta(P),null;case 25:return null;default:return null}}function Hc(e,t){switch(Ri(t),t.tag){case 3:ta(P),_e();break;case 26:case 27:case 5:ye(t);break;case 4:_e();break;case 31:t.memoizedState!==null&&ho(t);break;case 13:ho(t);break;case 19:A(F);break;case 10:ta(t.type);break;case 22:case 23:ho(t),so(),e!==null&&A(Ca);break;case 24:ta(P)}}function Uc(e,t){try{var n=t.updateQueue,r=n===null?null:n.lastEffect;if(r!==null){var i=r.next;n=i;do{if((n.tag&e)===e){r=void 0;var a=n.create,o=n.inst;r=a(),o.destroy=r}n=n.next}while(n!==i)}}catch(e){Z(t,t.return,e)}}function Wc(e,t,n){try{var r=t.updateQueue,i=r===null?null:r.lastEffect;if(i!==null){var a=i.next;r=a;do{if((r.tag&e)===e){var o=r.inst,s=o.destroy;if(s!==void 0){o.destroy=void 0,i=t;var c=n,l=s;try{l()}catch(e){Z(i,c,e)}}}r=r.next}while(r!==a)}}catch(e){Z(t,t.return,e)}}function Gc(e){var t=e.updateQueue;if(t!==null){var n=e.stateNode;try{no(t,n)}catch(t){Z(e,e.return,t)}}}function Kc(e,t,n){n.props=Ys(e.type,e.memoizedProps),n.state=e.memoizedState;try{n.componentWillUnmount()}catch(n){Z(e,t,n)}}function qc(e,t){try{var n=e.ref;if(n!==null){switch(e.tag){case 26:case 27:case 5:var r=e.stateNode;break;case 30:r=e.stateNode;break;default:r=e.stateNode}typeof n==`function`?e.refCleanup=n(r):n.current=r}}catch(n){Z(e,t,n)}}function Jc(e,t){var n=e.ref,r=e.refCleanup;if(n!==null)if(typeof r==`function`)try{r()}catch(n){Z(e,t,n)}finally{e.refCleanup=null,e=e.alternate,e!=null&&(e.refCleanup=null)}else if(typeof n==`function`)try{n(null)}catch(n){Z(e,t,n)}else n.current=null}function Yc(e){var t=e.type,n=e.memoizedProps,r=e.stateNode;try{a:switch(t){case`button`:case`input`:case`select`:case`textarea`:n.autoFocus&&r.focus();break a;case`img`:n.src?r.src=n.src:n.srcSet&&(r.srcset=n.srcSet)}}catch(t){Z(e,e.return,t)}}function Xc(e,t,n){try{var r=e.stateNode;Fd(r,e.type,n,t),r[mt]=t}catch(t){Z(e,e.return,t)}}function Zc(e){return e.tag===5||e.tag===3||e.tag===26||e.tag===27&&Zd(e.type)||e.tag===4}function Qc(e){a:for(;;){for(;e.sibling===null;){if(e.return===null||Zc(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.tag===27&&Zd(e.type)||e.flags&2||e.child===null||e.tag===4)continue a;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function $c(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?(n.nodeType===9?n.body:n.nodeName===`HTML`?n.ownerDocument.body:n).insertBefore(e,t):(t=n.nodeType===9?n.body:n.nodeName===`HTML`?n.ownerDocument.body:n,t.appendChild(e),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=sn));else if(r!==4&&(r===27&&Zd(e.type)&&(n=e.stateNode,t=null),e=e.child,e!==null))for($c(e,t,n),e=e.sibling;e!==null;)$c(e,t,n),e=e.sibling}function el(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(r!==4&&(r===27&&Zd(e.type)&&(n=e.stateNode),e=e.child,e!==null))for(el(e,t,n),e=e.sibling;e!==null;)el(e,t,n),e=e.sibling}function tl(e){var t=e.stateNode,n=e.memoizedProps;try{for(var r=e.type,i=t.attributes;i.length;)t.removeAttributeNode(i[0]);Pd(t,r,n),t[pt]=e,t[mt]=n}catch(t){Z(e,e.return,t)}}var nl=!1,U=!1,rl=!1,il=typeof WeakSet==`function`?WeakSet:Set,al=null;function ol(e,t){if(e=e.containerInfo,Rd=sp,e=Pr(e),Fr(e)){if(`selectionStart`in e)var n={start:e.selectionStart,end:e.selectionEnd};else a:{n=(n=e.ownerDocument)&&n.defaultView||window;var r=n.getSelection&&n.getSelection();if(r&&r.rangeCount!==0){n=r.anchorNode;var i=r.anchorOffset,a=r.focusNode;r=r.focusOffset;try{n.nodeType,a.nodeType}catch{n=null;break a}var o=0,c=-1,l=-1,u=0,d=0,f=e,p=null;b:for(;;){for(var m;f!==n||i!==0&&f.nodeType!==3||(c=o+i),f!==a||r!==0&&f.nodeType!==3||(l=o+r),f.nodeType===3&&(o+=f.nodeValue.length),(m=f.firstChild)!==null;)p=f,f=m;for(;;){if(f===e)break b;if(p===n&&++u===i&&(c=o),p===a&&++d===r&&(l=o),(m=f.nextSibling)!==null)break;f=p,p=f.parentNode}f=m}n=c===-1||l===-1?null:{start:c,end:l}}else n=null}n||={start:0,end:0}}else n=null;for(zd={focusedElem:e,selectionRange:n},sp=!1,al=t;al!==null;)if(t=al,e=t.child,t.subtreeFlags&1028&&e!==null)e.return=t,al=e;else for(;al!==null;){switch(t=al,a=t.alternate,e=t.flags,t.tag){case 0:if(e&4&&(e=t.updateQueue,e=e===null?null:e.events,e!==null))for(n=0;n title`))),Pd(a,r,n),a[pt]=e,Et(a),r=a;break a;case`link`:var o=Vf(`link`,`href`,i).get(r+(n.href||``));if(o){for(var c=0;cg&&(o=g,g=h,h=o);var _=Mr(s,h),v=Mr(s,g);if(_&&v&&(p.rangeCount!==1||p.anchorNode!==_.node||p.anchorOffset!==_.offset||p.focusNode!==v.node||p.focusOffset!==v.offset)){var y=d.createRange();y.setStart(_.node,_.offset),p.removeAllRanges(),h>g?(p.addRange(y),p.extend(v.node,v.offset)):(y.setEnd(v.node,v.offset),p.addRange(y))}}}}for(d=[],p=s;p=p.parentNode;)p.nodeType===1&&d.push({element:p,left:p.scrollLeft,top:p.scrollTop});for(typeof s.focus==`function`&&s.focus(),s=0;sn?32:n,O.T=null,n=lu,lu=null;var a=au,o=su;if(iu=0,ou=au=null,su=0,G&6)throw Error(s(331));var c=G;if(G|=4,Fl(a.current),Dl(a,a.current,o,n),G=c,id(0,!1),He&&typeof He.onPostCommitFiberRoot==`function`)try{He.onPostCommitFiberRoot(Ve,a)}catch{}return!0}finally{k.p=i,O.T=r,Vu(e,t)}}function Wu(e,t,n){t=Ti(n,t),t=tc(e.stateNode,t,2),e=Ya(e,t,2),e!==null&&(rt(e,2),rd(e))}function Z(e,t,n){if(e.tag===3)Wu(e,e,n);else for(;t!==null;){if(t.tag===3){Wu(t,e,n);break}else if(t.tag===1){var r=t.stateNode;if(typeof t.type.getDerivedStateFromError==`function`||typeof r.componentDidCatch==`function`&&(ru===null||!ru.has(r))){e=Ti(n,e),n=nc(2),r=Ya(t,n,2),r!==null&&(rc(n,r,t,e),rt(r,2),rd(r));break}}t=t.return}}function Gu(e,t,n){var r=e.pingCache;if(r===null){r=e.pingCache=new zl;var i=new Set;r.set(t,i)}else i=r.get(t),i===void 0&&(i=new Set,r.set(t,i));i.has(n)||(Ul=!0,i.add(n),e=Ku.bind(null,e,t,n),t.then(e,e))}function Ku(e,t,n){var r=e.pingCache;r!==null&&r.delete(t),e.pingedLanes|=e.suspendedLanes&n,e.warmLanes&=~n,K===e&&(J&n)===n&&(X===4||X===3&&(J&62914560)===J&&300>Me()-$l?!(G&2)&&Su(e,0):ql|=n,Yl===J&&(Yl=0)),rd(e)}function qu(e,t){t===0&&(t=tt()),e=ui(e,t),e!==null&&(rt(e,t),rd(e))}function Ju(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),qu(e,n)}function Yu(e,t){var n=0;switch(e.tag){case 31:case 13:var r=e.stateNode,i=e.memoizedState;i!==null&&(n=i.retryLane);break;case 19:r=e.stateNode;break;case 22:r=e.stateNode._retryCache;break;default:throw Error(s(314))}r!==null&&r.delete(t),qu(e,n)}function Xu(e,t){return Oe(e,t)}var Zu=null,Qu=null,$u=!1,ed=!1,td=!1,nd=0;function rd(e){e!==Qu&&e.next===null&&(Qu===null?Zu=Qu=e:Qu=Qu.next=e),ed=!0,$u||($u=!0,ud())}function id(e,t){if(!td&&ed){td=!0;do for(var n=!1,r=Zu;r!==null;){if(!t)if(e!==0){var i=r.pendingLanes;if(i===0)var a=0;else{var o=r.suspendedLanes,s=r.pingedLanes;a=(1<<31-We(42|e)+1)-1,a&=i&~(o&~s),a=a&201326741?a&201326741|1:a?a|2:0}a!==0&&(n=!0,ld(r,a))}else a=J,a=Qe(r,r===K?a:0,r.cancelPendingCommit!==null||r.timeoutHandle!==-1),!(a&3)||$e(r,a)||(n=!0,ld(r,a));r=r.next}while(n);td=!1}}function ad(){od()}function od(){ed=$u=!1;var e=0;nd!==0&&Gd()&&(e=nd);for(var t=Me(),n=null,r=Zu;r!==null;){var i=r.next,a=sd(r,t);a===0?(r.next=null,n===null?Zu=i:n.next=i,i===null&&(Qu=n)):(n=r,(e!==0||a&3)&&(ed=!0)),r=i}iu!==0&&iu!==5||id(e,!1),nd!==0&&(nd=0)}function sd(e,t){for(var n=e.suspendedLanes,r=e.pingedLanes,i=e.expirationTimes,a=e.pendingLanes&-62914561;0s)break;var u=c.transferSize,d=c.initiatorType;u&&Id(d)&&(c=c.responseEnd,o+=u*(c`u`?null:document;function xf(e,t,n){var r=bf;if(r&&typeof t==`string`&&t){var i=Gt(t);i=`link[rel="`+e+`"][href="`+i+`"]`,typeof n==`string`&&(i+=`[crossorigin="`+n+`"]`),hf.has(i)||(hf.add(i),e={rel:e,crossOrigin:n,href:t},r.querySelector(i)===null&&(t=r.createElement(`link`),Pd(t,`link`,e),Et(t),r.head.appendChild(t)))}}function Sf(e){_f.D(e),xf(`dns-prefetch`,e,null)}function Cf(e,t){_f.C(e,t),xf(`preconnect`,e,t)}function wf(e,t,n){_f.L(e,t,n);var r=bf;if(r&&e&&t){var i=`link[rel="preload"][as="`+Gt(t)+`"]`;t===`image`&&n&&n.imageSrcSet?(i+=`[imagesrcset="`+Gt(n.imageSrcSet)+`"]`,typeof n.imageSizes==`string`&&(i+=`[imagesizes="`+Gt(n.imageSizes)+`"]`)):i+=`[href="`+Gt(e)+`"]`;var a=i;switch(t){case`style`:a=Af(e);break;case`script`:a=Pf(e)}mf.has(a)||(e=h({rel:`preload`,href:t===`image`&&n&&n.imageSrcSet?void 0:e,as:t},n),mf.set(a,e),r.querySelector(i)!==null||t===`style`&&r.querySelector(jf(a))||t===`script`&&r.querySelector(Ff(a))||(t=r.createElement(`link`),Pd(t,`link`,e),Et(t),r.head.appendChild(t)))}}function Tf(e,t){_f.m(e,t);var n=bf;if(n&&e){var r=t&&typeof t.as==`string`?t.as:`script`,i=`link[rel="modulepreload"][as="`+Gt(r)+`"][href="`+Gt(e)+`"]`,a=i;switch(r){case`audioworklet`:case`paintworklet`:case`serviceworker`:case`sharedworker`:case`worker`:case`script`:a=Pf(e)}if(!mf.has(a)&&(e=h({rel:`modulepreload`,href:e},t),mf.set(a,e),n.querySelector(i)===null)){switch(r){case`audioworklet`:case`paintworklet`:case`serviceworker`:case`sharedworker`:case`worker`:case`script`:if(n.querySelector(Ff(a)))return}r=n.createElement(`link`),Pd(r,`link`,e),Et(r),n.head.appendChild(r)}}}function Ef(e,t,n){_f.S(e,t,n);var r=bf;if(r&&e){var i=Tt(r).hoistableStyles,a=Af(e);t||=`default`;var o=i.get(a);if(!o){var s={loading:0,preload:null};if(o=r.querySelector(jf(a)))s.loading=5;else{e=h({rel:`stylesheet`,href:e,"data-precedence":t},n),(n=mf.get(a))&&Rf(e,n);var c=o=r.createElement(`link`);Et(c),Pd(c,`link`,e),c._p=new Promise(function(e,t){c.onload=e,c.onerror=t}),c.addEventListener(`load`,function(){s.loading|=1}),c.addEventListener(`error`,function(){s.loading|=2}),s.loading|=4,Lf(o,t,r)}o={type:`stylesheet`,instance:o,count:1,state:s},i.set(a,o)}}}function Df(e,t){_f.X(e,t);var n=bf;if(n&&e){var r=Tt(n).hoistableScripts,i=Pf(e),a=r.get(i);a||(a=n.querySelector(Ff(i)),a||(e=h({src:e,async:!0},t),(t=mf.get(i))&&zf(e,t),a=n.createElement(`script`),Et(a),Pd(a,`link`,e),n.head.appendChild(a)),a={type:`script`,instance:a,count:1,state:null},r.set(i,a))}}function Of(e,t){_f.M(e,t);var n=bf;if(n&&e){var r=Tt(n).hoistableScripts,i=Pf(e),a=r.get(i);a||(a=n.querySelector(Ff(i)),a||(e=h({src:e,async:!0,type:`module`},t),(t=mf.get(i))&&zf(e,t),a=n.createElement(`script`),Et(a),Pd(a,`link`,e),n.head.appendChild(a)),a={type:`script`,instance:a,count:1,state:null},r.set(i,a))}}function kf(e,t,n,r){var i=(i=me.current)?gf(i):null;if(!i)throw Error(s(446));switch(e){case`meta`:case`title`:return null;case`style`:return typeof n.precedence==`string`&&typeof n.href==`string`?(t=Af(n.href),n=Tt(i).hoistableStyles,r=n.get(t),r||(r={type:`style`,instance:null,count:0,state:null},n.set(t,r)),r):{type:`void`,instance:null,count:0,state:null};case`link`:if(n.rel===`stylesheet`&&typeof n.href==`string`&&typeof n.precedence==`string`){e=Af(n.href);var a=Tt(i).hoistableStyles,o=a.get(e);if(o||(i=i.ownerDocument||i,o={type:`stylesheet`,instance:null,count:0,state:{loading:0,preload:null}},a.set(e,o),(a=i.querySelector(jf(e)))&&!a._p&&(o.instance=a,o.state.loading=5),mf.has(e)||(n={rel:`preload`,as:`style`,href:n.href,crossOrigin:n.crossOrigin,integrity:n.integrity,media:n.media,hrefLang:n.hrefLang,referrerPolicy:n.referrerPolicy},mf.set(e,n),a||Nf(i,e,n,o.state))),t&&r===null)throw Error(s(528,``));return o}if(t&&r!==null)throw Error(s(529,``));return null;case`script`:return t=n.async,n=n.src,typeof n==`string`&&t&&typeof t!=`function`&&typeof t!=`symbol`?(t=Pf(n),n=Tt(i).hoistableScripts,r=n.get(t),r||(r={type:`script`,instance:null,count:0,state:null},n.set(t,r)),r):{type:`void`,instance:null,count:0,state:null};default:throw Error(s(444,e))}}function Af(e){return`href="`+Gt(e)+`"`}function jf(e){return`link[rel="stylesheet"][`+e+`]`}function Mf(e){return h({},e,{"data-precedence":e.precedence,precedence:null})}function Nf(e,t,n,r){e.querySelector(`link[rel="preload"][as="style"][`+t+`]`)?r.loading=1:(t=e.createElement(`link`),r.preload=t,t.addEventListener(`load`,function(){return r.loading|=1}),t.addEventListener(`error`,function(){return r.loading|=2}),Pd(t,`link`,n),Et(t),e.head.appendChild(t))}function Pf(e){return`[src="`+Gt(e)+`"]`}function Ff(e){return`script[async]`+e}function If(e,t,n){if(t.count++,t.instance===null)switch(t.type){case`style`:var r=e.querySelector(`style[data-href~="`+Gt(n.href)+`"]`);if(r)return t.instance=r,Et(r),r;var i=h({},n,{"data-href":n.href,"data-precedence":n.precedence,href:null,precedence:null});return r=(e.ownerDocument||e).createElement(`style`),Et(r),Pd(r,`style`,i),Lf(r,n.precedence,e),t.instance=r;case`stylesheet`:i=Af(n.href);var a=e.querySelector(jf(i));if(a)return t.state.loading|=4,t.instance=a,Et(a),a;r=Mf(n),(i=mf.get(i))&&Rf(r,i),a=(e.ownerDocument||e).createElement(`link`),Et(a);var o=a;return o._p=new Promise(function(e,t){o.onload=e,o.onerror=t}),Pd(a,`link`,r),t.state.loading|=4,Lf(a,n.precedence,e),t.instance=a;case`script`:return a=Pf(n.src),(i=e.querySelector(Ff(a)))?(t.instance=i,Et(i),i):(r=n,(i=mf.get(a))&&(r=h({},n),zf(r,i)),e=e.ownerDocument||e,i=e.createElement(`script`),Et(i),Pd(i,`link`,r),e.head.appendChild(i),t.instance=i);case`void`:return null;default:throw Error(s(443,t.type))}else t.type===`stylesheet`&&!(t.state.loading&4)&&(r=t.instance,t.state.loading|=4,Lf(r,n.precedence,e));return t.instance}function Lf(e,t,n){for(var r=n.querySelectorAll(`link[rel="stylesheet"][data-precedence],style[data-precedence]`),i=r.length?r[r.length-1]:null,a=i,o=0;o title`):null)}function Uf(e,t,n){if(n===1||t.itemProp!=null)return!1;switch(e){case`meta`:case`title`:return!0;case`style`:if(typeof t.precedence!=`string`||typeof t.href!=`string`||t.href===``)break;return!0;case`link`:if(typeof t.rel!=`string`||typeof t.href!=`string`||t.href===``||t.onLoad||t.onError)break;switch(t.rel){case`stylesheet`:return e=t.disabled,typeof t.precedence==`string`&&e==null;default:return!0}case`script`:if(t.async&&typeof t.async!=`function`&&typeof t.async!=`symbol`&&!t.onLoad&&!t.onError&&t.src&&typeof t.src==`string`)return!0}return!1}function Wf(e){return!(e.type===`stylesheet`&&!(e.state.loading&3))}function Gf(e,t,n,r){if(n.type===`stylesheet`&&(typeof r.media!=`string`||!1!==matchMedia(r.media).matches)&&!(n.state.loading&4)){if(n.instance===null){var i=Af(r.href),a=t.querySelector(jf(i));if(a){t=a._p,typeof t==`object`&&t&&typeof t.then==`function`&&(e.count++,e=Jf.bind(e),t.then(e,e)),n.state.loading|=4,n.instance=a,Et(a);return}a=t.ownerDocument||t,r=Mf(r),(i=mf.get(i))&&Rf(r,i),a=a.createElement(`link`),Et(a);var o=a;o._p=new Promise(function(e,t){o.onload=e,o.onerror=t}),Pd(a,`link`,r),n.instance=a}e.stylesheets===null&&(e.stylesheets=new Map),e.stylesheets.set(n,t),(t=n.state.preload)&&!(n.state.loading&3)&&(e.count++,n=Jf.bind(e),t.addEventListener(`load`,n),t.addEventListener(`error`,n))}}var Kf=0;function qf(e,t){return e.stylesheets&&e.count===0&&Xf(e,e.stylesheets),0Kf?50:800)+t);return e.unsuspend=n,function(){e.unsuspend=null,clearTimeout(r),clearTimeout(i)}}:null}function Jf(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)Xf(this,this.stylesheets);else if(this.unsuspend){var e=this.unsuspend;this.unsuspend=null,e()}}}var Yf=null;function Xf(e,t){e.stylesheets=null,e.unsuspend!==null&&(e.count++,Yf=new Map,t.forEach(Zf,e),Yf=null,Jf.call(e))}function Zf(e,t){if(!(t.state.loading&4)){var n=Yf.get(e);if(n)var r=n.get(null);else{n=new Map,Yf.set(e,n);for(var i=e.querySelectorAll(`link[data-precedence],style[data-precedence]`),a=0;a{function n(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>`u`||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!=`function`))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(e){console.error(e)}}n(),t.exports=s()})),l=n(),u=c(),d=e((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.fragment`);function r(e,n,r){var i=null;if(r!==void 0&&(i=``+r),n.key!==void 0&&(i=``+n.key),`key`in n)for(var a in r={},n)a!==`key`&&(r[a]=n[a]);else r=n;return n=r.ref,{$$typeof:t,type:e,key:i,ref:n===void 0?null:n,props:r}}e.Fragment=n,e.jsx=r,e.jsxs=r})),f=e(((e,t)=>{t.exports=d()}))(),p={bg:`#0A0A0C`,panel:`#141418`,surface:`#1C1C22`,border:`#2A2A32`,amber:`#E8A030`,amberDim:`#7A5218`,blue:`#3A7BA8`,blueDim:`#1E4060`,green:`#3AB87A`,red:`#C84040`,textPrimary:`#F0EDE6`,textSec:`#8888A0`,textDim:`#444458`},m=window.location.origin,h=m.replace(/^http/,`ws`)+`/ws`,g=`guitar`;try{let e=localStorage.getItem(`pedal_channel`);(e===`guitar`||e===`bass`)&&(g=e)}catch{}function _(e){g=e}function v(e){let t=g;return t?e+(e.includes(`?`)?`&`:`?`)+`channel=`+encodeURIComponent(t):e}async function y(e){let t=await fetch(`${m}${v(e)}`);if(!t.ok)throw Error(`${e} => ${t.status}`);return t.json()}async function b(e,t){let n=await fetch(`${m}${v(e)}`,{method:`POST`,headers:{"Content-Type":`application/json`},body:t==null?void 0:JSON.stringify(t)});if(!n.ok)throw Error(`${e} => ${n.status}`);return n.json()}async function x(e,t){let n=await fetch(`${m}${v(e)}`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t)});if(!n.ok)throw Error(`${e} => ${n.status}`);return n.json()}async function ee(e){let t=await fetch(`${m}${v(e)}`,{method:`DELETE`});if(!t.ok)throw Error(`${e} => ${t.status}`);return t.json()}async function S(e,t){let n=new FormData;n.append(`file`,t);let r=await fetch(`${m}${v(e)}`,{method:`POST`,body:n});if(!r.ok)throw Error(`${e} => ${r.status}`);return r.json()}function C(){let[e,t]=(0,l.useState)(null),[n,r]=(0,l.useState)(!1),i=(0,l.useRef)(null),a=(0,l.useRef)(null);return(0,l.useEffect)(()=>{y(`/api/state`).then(e=>{t(e),r(!0)}).catch(()=>{r(!1)});let e;function n(){try{let a=new WebSocket(h);a.onmessage=e=>{try{let n=JSON.parse(e.data);(n.type===`connected`||n.type===`state`)&&(t(n.state),r(!0)),n.type===`preset_changed`&&n.state&&t(n.state),n.type===`bypass_changed`&&t(e=>e&&{...e,bypass:n.bypass}),n.type===`tuner_changed`&&t(e=>e&&{...e,tuner_enabled:n.tuner_enabled}),n.type===`routing_changed`&&t(e=>e&&{...e,routing_mode:n.routing_mode,routing_breakpoint:n.routing_breakpoint}),n.type===`channel_mode_changed`&&t(e=>e&&{...e,channel_mode:n.channel_mode}),(n.type===`model_loaded`||n.type===`ir_loaded`)&&y(`/api/state`).then(e=>t(e)),n.type===`snapshot_recalled`&&n.state&&t(n.state),n.type===`snapshot_saved`&&y(`/api/state`).then(e=>t(e))}catch{}},a.onclose=()=>{r(!1),e=setTimeout(n,3e3)},a.onerror=()=>a.close(),i.current=a}catch{e=setTimeout(n,3e3)}}return n(),a.current=setInterval(()=>{y(`/api/state`).then(e=>{t(e),r(!0)}).catch(()=>{})},5e3),()=>{clearInterval(a.current),clearTimeout(e),i.current&&i.current.close()}},[]),{state:e,connected:n,refresh:(0,l.useCallback)(()=>{y(`/api/state`).then(e=>{t(e),r(!0)}).catch(()=>{})},[])}}var te=` - @import url('https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;700&family=Inter:wght@300;400;500;600&display=swap'); - * { box-sizing: border-box; margin: 0; padding: 0; -webkit-tap-highlight-color: transparent; } - body { background: ${p.bg}; color: ${p.textPrimary}; font-family: 'Inter', sans-serif; user-select: none; } - :root { --amber: ${p.amber}; --blue: ${p.blue}; --green: ${p.green}; } - - .mono { font-family: 'JetBrains Mono', monospace; } - - ::-webkit-scrollbar { width: 4px; height: 4px; } - ::-webkit-scrollbar-track { background: ${p.panel}; } - ::-webkit-scrollbar-thumb { background: ${p.border}; border-radius: 2px; } - - input, textarea, select { font-family: inherit; } - - .knob-wrap { display: flex; flex-direction: column; align-items: center; gap: 6px; cursor: pointer; } - .knob { border-radius: 50%; position: relative; touch-action: none; } - .knob-inner { border-radius: 50%; width: 100%; height: 100%; position: relative; - background: radial-gradient(circle at 35% 30%, #3A3A48, #1A1A22); - box-shadow: 0 2px 8px rgba(0,0,0,.6), inset 0 1px 0 rgba(255,255,255,.07); } - .knob-dot { position: absolute; width: 3px; border-radius: 2px; background: var(--amber); - left: 50%; transform-origin: bottom center; box-shadow: 0 0 6px var(--amber); } - .knob-ring { position: absolute; inset: -5px; border-radius: 50%; } - .knob-label { font-size: 10px; color: ${p.textSec}; letter-spacing: .06em; text-transform: uppercase; text-align: center; } - .knob-value { font-family: 'JetBrains Mono', monospace; font-size: 11px; color: ${p.amber}; } - - .toggle { display: flex; background: ${p.surface}; border-radius: 6px; border: 1px solid ${p.border}; overflow: hidden; } - .toggle-btn { flex: 1; padding: 7px 12px; font-size: 12px; font-weight: 500; letter-spacing: .04em; - background: none; border: none; color: ${p.textSec}; cursor: pointer; transition: all .15s; } - .toggle-btn.active { background: ${p.amber}; color: #000; } - - .vu-bar { display: flex; gap: 2px; align-items: flex-end; height: 100%; } - .vu-seg { width: 4px; border-radius: 1px; transition: opacity .05s; } - - .fader-track { width: 4px; border-radius: 2px; background: ${p.border}; position: relative; cursor: pointer; touch-action: none; } - .fader-fill { width: 100%; border-radius: 2px; position: absolute; bottom: 0; transition: height .05s; } - .fader-thumb { width: 28px; height: 10px; border-radius: 3px; position: absolute; left: 50%; transform: translateX(-50%); - background: linear-gradient(180deg, #3A3A4A, #252530); - border: 1px solid #4A4A5A; box-shadow: 0 2px 4px rgba(0,0,0,.5); - cursor: grab; touch-action: none; } - .fader-thumb::after { content: ''; position: absolute; left: 50%; top: 50%; transform: translate(-50%,-50%); - width: 16px; height: 2px; border-radius: 1px; background: rgba(255,255,255,.15); - box-shadow: 0 3px 0 rgba(255,255,255,.15), 0 -3px 0 rgba(255,255,255,.15); } - - .tabbar { display: flex; background: ${p.panel}; border-bottom: 1px solid ${p.border}; flex-shrink: 0; } - .tab { flex: 1; padding: 10px 4px; font-size: 10px; font-weight: 500; letter-spacing: .04em; - text-align: center; text-transform: uppercase; color: ${p.textDim}; - cursor: pointer; border-bottom: 2px solid transparent; transition: all .15s; } - .tab.active { color: ${p.amber}; border-bottom-color: ${p.amber}; } - - .card { background: ${p.panel}; border: 1px solid ${p.border}; border-radius: 10px; padding: 16px; } - .card-sm { background: ${p.surface}; border: 1px solid ${p.border}; border-radius: 8px; padding: 12px; } - - .btn { padding: 10px 18px; border-radius: 7px; font-size: 13px; font-weight: 600; - letter-spacing: .04em; border: none; cursor: pointer; transition: all .12s; } - .btn-primary { background: ${p.amber}; color: #000; } - .btn-primary:active { filter: brightness(.85); transform: scale(.97); } - .btn-ghost { background: ${p.surface}; color: ${p.textPrimary}; border: 1px solid ${p.border}; } - .btn-ghost:active { background: ${p.border}; } - .btn-danger { background: rgba(200,64,64,.2); color: ${p.red}; border: 1px solid rgba(200,64,64,.3); } - .btn-icon { width: 36px; height: 36px; border-radius: 8px; display: flex; align-items: center; - justify-content: center; background: ${p.surface}; border: 1px solid ${p.border}; cursor: pointer; - font-size: 16px; transition: all .12s; } - .btn-icon:active { transform: scale(.93); } - .btn-icon.active { background: rgba(232,160,48,.15); border-color: ${p.amber}; color: ${p.amber}; } - .btn-sm { padding: 6px 12px; font-size: 12px; } - - .fx-block { background: ${p.panel}; border: 1px solid ${p.border}; border-radius: 10px; - overflow: hidden; transition: border-color .15s; } - .fx-block.active { border-color: ${p.amber}; } - .fx-block.bypassed { opacity: .45; } - .fx-header { display: flex; align-items: center; gap: 10px; padding: 10px 12px; - border-bottom: 1px solid ${p.border}; background: ${p.surface}; cursor: pointer; } - .fx-body { padding: 12px; display: flex; gap: 14px; justify-content: center; flex-wrap: wrap; } - .bypass-led { width: 8px; height: 8px; border-radius: 50%; flex-shrink: 0; } - .led-on { background: ${p.green}; box-shadow: 0 0 8px ${p.green}; } - .led-off { background: ${p.textDim}; } - - .waveform-wrap { position: relative; overflow: hidden; border-radius: 6px; background: #0F0F14; } - .waveform-canvas { display: block; } - .playhead { position: absolute; top: 0; bottom: 0; width: 1.5px; background: ${p.amber}; - box-shadow: 0 0 8px ${p.amber}; pointer-events: none; transition: left .08s linear; } - - .nam-chip { display: inline-flex; align-items: center; gap: 6px; padding: 5px 10px; - background: rgba(58,123,168,.15); border: 1px solid rgba(58,123,168,.35); border-radius: 5px; - font-family: 'JetBrains Mono', monospace; font-size: 11px; color: ${p.blue}; } - - .section-label { font-size: 10px; letter-spacing: .1em; text-transform: uppercase; - color: ${p.textDim}; font-weight: 600; margin-bottom: 10px; } - - .preset-row { display: flex; align-items: center; gap: 12px; padding: 10px 12px; - border-radius: 8px; cursor: pointer; transition: background .12s; border: 1px solid transparent; } - .preset-row:active, .preset-row.active { background: rgba(232,160,48,.08); border-color: rgba(232,160,48,.25); } - - .transport-btn { width: 44px; height: 44px; border-radius: 50%; display: flex; - align-items: center; justify-content: center; font-size: 16px; cursor: pointer; - border: 2px solid ${p.border}; background: ${p.surface}; transition: all .12s; } - .transport-btn:active { transform: scale(.92); } - .transport-btn.rec { border-color: ${p.red}; background: rgba(200,64,64,.15); } - .transport-btn.play { border-color: ${p.green}; background: rgba(58,184,122,.15); } - - .badge { display: inline-flex; align-items: center; justify-content: center; - padding: 2px 7px; border-radius: 4px; font-size: 10px; font-weight: 700; - letter-spacing: .06em; text-transform: uppercase; } - .badge-amber { background: rgba(232,160,48,.2); color: ${p.amber}; } - .badge-green { background: rgba(58,184,122,.2); color: ${p.green}; } - .badge-blue { background: rgba(58,123,168,.2); color: ${p.blue}; } - .badge-red { background: rgba(200,64,64,.2); color: ${p.red}; } - - .screen-header { padding: 12px 14px 8px; display: flex; align-items: center; - justify-content: space-between; border-bottom: 1px solid ${p.border}; flex-shrink: 0; } - .screen-title { font-size: 13px; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; color: ${p.textSec}; } - - .screen-body { flex: 1; overflow-y: auto; padding: 12px; display: flex; - flex-direction: column; gap: 12px; } - - /* Settings lists */ - .setting-row { display: flex; align-items: center; justify-content: space-between; padding: 10px 0; border-bottom: 1px solid ${p.border}; } - .setting-label { font-size: 13px; color: ${p.textPrimary}; } - .setting-desc { font-size: 11px; color: ${p.textDim}; margin-top: 2px; } - .switch { width: 40px; height: 22px; border-radius: 11px; background: ${p.border}; cursor: pointer; position: relative; transition: background .2s; flex-shrink: 0; } - .switch.on { background: ${p.green}; } - .switch::after { content: ''; position: absolute; top: 2px; left: 2px; width: 18px; height: 18px; border-radius: 50%; background: white; transition: transform .15s; } - .switch.on::after { transform: translateX(18px); } - - .search-bar { display: flex; background: ${p.surface}; border-radius: 7px; border: 1px solid ${p.border}; - padding: 8px 12px; gap: 8px; align-items: center; } - .search-bar input { background: none; border: none; outline: none; color: ${p.textPrimary}; font-size: 13px; flex: 1; } - .search-bar input::placeholder { color: ${p.textDim}; } - - .file-drop { border: 2px dashed ${p.border}; border-radius: 8px; padding: 20px; text-align: center; - cursor: pointer; transition: all .15s; font-size: 13px; color: ${p.textDim}; } - .file-drop:hover, .file-drop.dragover { border-color: ${p.amber}; color: ${p.amber}; } - - .loader { width: 20px; height: 20px; border: 2px solid ${p.border}; border-top-color: ${p.amber}; - border-radius: 50%; animation: spin .6s linear infinite; } - @keyframes spin { to { transform: rotate(360deg); } } - - .slide-panel { position: fixed; inset: 0; background: rgba(0,0,0,.7); z-index: 100; - display: flex; align-items: flex-end; justify-content: center; } - .slide-panel-inner { background: ${p.bg}; max-width: 440px; width: 100%; max-height: 85vh; - border-radius: 16px 16px 0 0; overflow: hidden; display: flex; flex-direction: column; } - .slide-panel-handle { width: 36px; height: 4px; border-radius: 2px; background: ${p.border}; - margin: 8px auto; flex-shrink: 0; } - - /* Snapshot slots */ - .snap-grid { display: flex; gap: 6px; overflow-x: auto; padding: 4px 0; } - .snap-slot { min-width: 60px; flex-shrink: 0; border-radius: 8px; border: 1.5px solid ${p.border}; - background: ${p.surface}; cursor: pointer; text-align: center; padding: 8px 4px; - transition: all .12s; touch-action: manipulation; position: relative; } - .snap-slot:active { transform: scale(.95); } - .snap-slot.filled { border-color: ${p.amberDim}; } - .snap-slot.active { border-color: ${p.amber}; background: rgba(232,160,48,.08); } - .snap-slot .snap-num { font-family: 'JetBrains Mono', monospace; font-size: 16px; - font-weight: 700; color: ${p.textDim}; } - .snap-slot.filled .snap-num { color: ${p.amber}; } - .snap-slot.active .snap-num { color: ${p.amber}; text-shadow: 0 0 8px ${p.amber}; } - .snap-slot .snap-name { font-size: 9px; color: ${p.textDim}; margin-top: 3px; - overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } - .snap-slot.filled .snap-name { color: ${p.textSec}; } - .snap-slot.active .snap-name { color: ${p.amber}; } - .snap-slot .snap-empty { font-size: 9px; color: ${p.textDim}; margin-top: 3px; font-style: italic; } - .snap-slot .snap-save-indicator { position: absolute; top: -3px; right: -3px; - width: 10px; height: 10px; border-radius: 50%; background: ${p.green}; - box-shadow: 0 0 6px ${p.green}; animation: snap-pop .3s ease-out; } - @keyframes snap-pop { 0% { transform: scale(2); opacity: 0; } 100% { transform: scale(1); opacity: 1; } } - .snap-name-input { background: ${p.surface}; border: 1px solid ${p.amber}; border-radius: 4px; - padding: 2px 6px; color: ${p.amber}; font-size: 10px; text-align: center; outline: none; - font-family: 'Inter', sans-serif; width: 100%; } - .snap-header-btn { cursor: pointer; border: none; background: none; color: ${p.textSec}; - font-size: 16px; padding: 4px 6px; border-radius: 6px; transition: all .12s; - display: flex; align-items: center; gap: 4px; } - .snap-header-btn:hover { color: ${p.amber}; background: rgba(232,160,48,.1); } - .snap-header-btn.active { color: ${p.amber}; background: rgba(232,160,48,.15); } - .snap-header-num { font-family: 'JetBrains Mono', monospace; font-size: 11px; - font-weight: 700; color: ${p.amber}; min-width: 16px; text-align: center; } -`;function w({label:e,value:t=50,onChange:n,size:r=52,color:i=p.amber,min:a=0,max:o=100}){let s=(0,l.useRef)(null),c=(0,l.useRef)(null),u=(t-a)/(o-a),d=-140+u*280,m=e=>{e.preventDefault(),c.current={y:e.touches?e.touches[0].clientY:e.clientY,val:t};let r=e=>{let t=e.touches?e.touches[0].clientY:e.clientY,r=(c.current.y-t)/120,i=Math.max(a,Math.min(o,c.current.val+r*(o-a)));n?.(Math.round(i))},i=()=>{window.removeEventListener(`mousemove`,r),window.removeEventListener(`mouseup`,i),window.removeEventListener(`touchmove`,r),window.removeEventListener(`touchend`,i)};window.addEventListener(`mousemove`,r),window.addEventListener(`mouseup`,i),window.addEventListener(`touchmove`,r,{passive:!1}),window.addEventListener(`touchend`,i)},h=r+12,g=h/2,_=h/2,v=r/2+3,y=(d-90)*(Math.PI/180),b=g+v*Math.cos(y),x=_+v*Math.sin(y);return(0,f.jsxs)(`div`,{className:`knob-wrap`,style:{width:r+12},children:[(0,f.jsxs)(`div`,{className:`knob`,style:{width:r,height:r},onMouseDown:m,onTouchStart:m,ref:s,children:[(0,f.jsxs)(`svg`,{style:{position:`absolute`,inset:-6,width:h,height:h,overflow:`visible`},children:[(0,f.jsx)(`circle`,{cx:g,cy:_,r:v,fill:`none`,stroke:p.border,strokeWidth:`2.5`,strokeLinecap:`round`,opacity:`.5`}),u>0&&(0,f.jsx)(`path`,{d:`M ${g} ${_-v} A ${v} ${v} 0 ${+(u>.5)} 1 ${b} ${x}`,fill:`none`,stroke:i,strokeWidth:`2.5`,strokeLinecap:`round`,style:{filter:`drop-shadow(0 0 3px ${i})`}})]}),(0,f.jsx)(`div`,{className:`knob-inner`,style:{"--amber":i},children:(0,f.jsx)(`div`,{className:`knob-dot`,style:{height:r*.38,bottom:r/2-2,transform:`translateX(-50%) rotate(${d}deg)`,transformOrigin:`50% ${r*.38}px`}})})]}),(0,f.jsx)(`div`,{className:`knob-value mono`,style:{color:i},children:t}),(0,f.jsx)(`div`,{className:`knob-label`,children:e})]})}function T({level:e=0,height:t=60,vertical:n=!0}){let r=Math.round(e/100*12),i=e=>e>=10?p.red:e>=8?`#E8C030`:p.green;return n?(0,f.jsx)(`div`,{style:{display:`flex`,flexDirection:`column-reverse`,gap:2,height:t,alignItems:`center`},children:Array.from({length:12}).map((e,n)=>(0,f.jsx)(`div`,{style:{width:6,height:(t-24)/12,borderRadius:1,background:n(0,f.jsx)(`div`,{style:{flex:1,height:`100%`,borderRadius:1,background:te.default??e.default??50));return(0,f.jsxs)(`div`,{className:`fx-block ${n?`active`:``} ${r?`bypassed`:``}`,children:[(0,f.jsxs)(`div`,{className:`fx-header`,onClick:()=>s(e=>!e),children:[(0,f.jsx)(`div`,{className:`bypass-led ${r?`led-off`:`led-on`}`,onClick:e=>{e.stopPropagation(),a?.()}}),(0,f.jsx)(`span`,{style:{flex:1,fontSize:13,fontWeight:600},children:e}),(0,f.jsx)(`span`,{className:`badge badge-blue`,style:{fontSize:10},children:t}),(0,f.jsx)(`span`,{style:{color:p.textDim,fontSize:18,marginLeft:6},children:o?`▾`:`▸`})]}),o&&(0,f.jsx)(`div`,{className:`fx-body`,children:i.map((e,t)=>(0,f.jsx)(w,{label:e.name,value:c[t],size:44,onChange:e=>u(n=>n.map((n,r)=>r===t?e:n)),min:e.min??0,max:e.max??100},e.key||e.name))})]})}function D({active:e=!0,variant:t=`right`,animated:n=!0}){let r=e?p.green:p.textDim;return t===`right`?(0,f.jsxs)(`svg`,{width:`22`,height:`14`,viewBox:`0 0 22 14`,style:{flexShrink:0,display:`block`},children:[(0,f.jsx)(`line`,{x1:`2`,y1:`7`,x2:`14`,y2:`7`,stroke:r,strokeWidth:`2`,strokeLinecap:`round`}),(0,f.jsx)(`polygon`,{points:`12,3 20,7 12,11`,fill:r}),e&&n&&(0,f.jsx)(`circle`,{r:`1.5`,fill:r,opacity:`0.6`,children:(0,f.jsx)(`animate`,{attributeName:`cx`,values:`4;18`,dur:`1.2s`,repeatCount:`indefinite`})})]}):t===`split`?(0,f.jsxs)(`svg`,{width:`26`,height:`24`,viewBox:`0 0 26 24`,style:{flexShrink:0,display:`block`},children:[(0,f.jsx)(`line`,{x1:`2`,y1:`10`,x2:`14`,y2:`10`,stroke:r,strokeWidth:`2`,strokeLinecap:`round`}),(0,f.jsx)(`line`,{x1:`8`,y1:`10`,x2:`18`,y2:`18`,stroke:r,strokeWidth:`2`,strokeLinecap:`round`}),(0,f.jsx)(`polygon`,{points:`12,6 18,10 12,14`,fill:r}),(0,f.jsx)(`polygon`,{points:`16,14 21,20 19,13`,fill:r})]}):t===`merge`?(0,f.jsxs)(`svg`,{width:`26`,height:`24`,viewBox:`0 0 26 24`,style:{flexShrink:0,display:`block`},children:[(0,f.jsx)(`line`,{x1:`2`,y1:`4`,x2:`12`,y2:`12`,stroke:r,strokeWidth:`2`,strokeLinecap:`round`}),(0,f.jsx)(`line`,{x1:`2`,y1:`20`,x2:`12`,y2:`12`,stroke:r,strokeWidth:`2`,strokeLinecap:`round`}),(0,f.jsx)(`line`,{x1:`12`,y1:`12`,x2:`14`,y2:`12`,stroke:r,strokeWidth:`2`,strokeLinecap:`round`}),(0,f.jsx)(`polygon`,{points:`12,8 18,12 12,16`,fill:r})]}):null}function ne({children:e,onClose:t}){return(0,f.jsx)(`div`,{className:`slide-panel`,onClick:t,children:(0,f.jsxs)(`div`,{className:`slide-panel-inner`,onClick:e=>e.stopPropagation(),children:[(0,f.jsx)(`div`,{className:`slide-panel-handle`}),e]})})}function re({state:e,connected:t,refresh:n}){let[r,i]=(0,l.useState)(e?.master_volume==null?80:Math.round(e.master_volume*100)),[a,o]=(0,l.useState)(null),[s,c]=(0,l.useState)(null),u=a??e?.bypass??!1,d=s??e?.tuner_enabled??!1;(0,l.useEffect)(()=>{e?.master_volume!=null&&i(Math.round(e.master_volume*100))},[e?.master_volume]),(0,l.useEffect)(()=>{e?.bypass!==void 0&&o(null),e?.tuner_enabled!==void 0&&c(null)},[e?.bypass,e?.tuner_enabled]);let m=async e=>{i(e);try{await x(`/api/volume`,{volume:e/100})}catch{}},h=async()=>{let e=!u;o(e);try{await b(`/api/bypass`,{bypass:e})}catch{o(null)}},g=async()=>{let e=!d;c(e);try{await b(`/api/tuner`,{enabled:e})}catch{c(null)}},_=e?.input_level??0,v=e?.output_level??0;return(0,f.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,height:`100%`},children:[(0,f.jsxs)(`div`,{className:`screen-header`,children:[(0,f.jsxs)(`div`,{children:[(0,f.jsx)(`div`,{className:`screen-title`,children:`Active Rig`}),(0,f.jsxs)(`div`,{style:{display:`flex`,gap:6,marginTop:4,flexWrap:`wrap`,alignItems:`center`},children:[e?.current_preset?(0,f.jsx)(`span`,{className:`nam-chip`,style:{color:p.amber,borderColor:`${p.amber}55`,background:`${p.amber}15`},children:e.current_preset.name}):(0,f.jsx)(`span`,{style:{fontSize:11,color:p.textDim},children:`No preset loaded`}),t?(0,f.jsx)(`span`,{className:`badge badge-green`,children:`Connected`}):(0,f.jsx)(`span`,{className:`badge badge-red`,children:`Offline`})]})]}),(0,f.jsxs)(`div`,{style:{display:`flex`,gap:6,alignItems:`center`},children:[(0,f.jsx)(T,{level:_,height:44}),(0,f.jsx)(T,{level:v,height:44})]})]}),(0,f.jsxs)(`div`,{className:`screen-body`,children:[(0,f.jsxs)(`div`,{className:`card-sm`,style:{display:`flex`,gap:10,justifyContent:`space-around`},children:[(0,f.jsxs)(`div`,{style:{textAlign:`center`},children:[(0,f.jsx)(`div`,{className:`section-label`,style:{marginBottom:4},children:`Bypass`}),(0,f.jsx)(`div`,{className:`switch ${u?`on`:``}`,onClick:h,style:{margin:`0 auto`}})]}),(0,f.jsxs)(`div`,{style:{textAlign:`center`},children:[(0,f.jsx)(`div`,{className:`section-label`,style:{marginBottom:4},children:`Tuner`}),(0,f.jsx)(`div`,{className:`switch ${d?`on`:``}`,onClick:g,style:{margin:`0 auto`}})]}),(0,f.jsxs)(`div`,{style:{textAlign:`center`},children:[(0,f.jsx)(`div`,{className:`section-label`,style:{marginBottom:4},children:`Routing`}),(0,f.jsx)(`span`,{className:`mono`,style:{fontSize:12,color:p.amber},children:e?.routing_mode||`mono`})]})]}),d&&(0,f.jsxs)(`div`,{className:`card-sm`,style:{background:`${p.amber}15`,borderColor:p.amber,textAlign:`center`,padding:`20px 16px`},children:[(0,f.jsx)(`div`,{style:{fontSize:32,marginBottom:8},children:`🎵`}),(0,f.jsx)(`div`,{className:`section-label`,style:{color:p.amber,marginBottom:4,fontSize:14},children:`TUNER ACTIVE`}),(0,f.jsx)(`div`,{className:`mono`,style:{fontSize:24,color:p.amber,letterSpacing:4},children:`—————●—————`}),(0,f.jsx)(`div`,{style:{fontSize:11,color:p.textDim,marginTop:8},children:`Tap switch again to exit tuner mode`})]}),(0,f.jsxs)(`div`,{className:`card`,style:{display:`flex`,gap:20,alignItems:`center`},children:[(0,f.jsxs)(`div`,{style:{flex:1},children:[(0,f.jsx)(`div`,{className:`section-label`,children:`Master Volume`}),(0,f.jsx)(`input`,{type:`range`,min:0,max:100,value:r,onChange:e=>m(+e.target.value),style:{width:`100%`,accentColor:p.amber}}),(0,f.jsxs)(`div`,{className:`mono`,style:{fontSize:11,color:p.amber,marginTop:4},children:[r,`%`]})]}),(0,f.jsxs)(`div`,{className:`mono`,style:{fontSize:11,color:p.textSec,textAlign:`right`},children:[e?.nam_loaded?`NAM: Active`:`NAM: —`,(0,f.jsx)(`br`,{}),e?.ir_loaded?`IR: Active`:`IR: —`]})]}),(0,f.jsxs)(`div`,{className:`card-sm`,children:[(0,f.jsx)(`div`,{className:`section-label`,children:`Signal Chain`}),(0,f.jsx)(`div`,{style:{display:`flex`,alignItems:`center`,gap:4,overflowX:`auto`,padding:`4px 0`},children:(()=>{let t=[`IN`,e?.bypass?`BYP`:e?.nam_loaded?`NAM`:`AMP`,e?.ir_loaded?`IR`:`CAB`,`OUT`],n=e?.routing_mode===`4cm`;e?.routing_breakpoint;let r=!e?.bypass;return t.map((e,t,i)=>(0,f.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:4,flexShrink:0},children:[n&&e===`AMP`&&(0,f.jsx)(D,{variant:`split`,active:r}),n&&e===`CAB`&&(0,f.jsx)(D,{variant:`merge`,active:r}),(0,f.jsxs)(`div`,{style:{padding:`3px 8px`,borderRadius:4,fontSize:10,fontWeight:700,background:t===0||t===i.length-1?p.blueDim:n&&e===`AMP`?`rgba(58,184,122,.15)`:p.amberDim,color:t===0||t===i.length-1?p.blue:n&&e===`AMP`?p.green:p.amber,border:`1px solid ${t===0||t===i.length-1?p.blue:n&&e===`AMP`?p.green:p.amber}60`},children:[e,n&&e===`AMP`&&(0,f.jsx)(`span`,{style:{fontSize:8,marginLeft:4,opacity:.7},children:`4CM`}),n&&e===`BYP`&&(0,f.jsx)(`span`,{style:{fontSize:8,marginLeft:4,opacity:.7},children:`4CM`})]}),n&&e===`AMP`&&(0,f.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,alignItems:`center`,flexShrink:0,gap:1},children:[(0,f.jsx)(D,{variant:`split`,active:r}),(0,f.jsx)(`span`,{style:{fontSize:7,color:p.textDim,letterSpacing:`.05em`,lineHeight:`1`},children:`LOOP`}),(0,f.jsx)(D,{variant:`merge`,active:r})]}),t{let e=document.querySelector(`.tabbar`)?.children;e&&e[3]?.click()},children:`Browse IRs`}),(0,f.jsx)(`button`,{className:`btn btn-ghost btn-sm`,style:{flex:1,fontSize:10},onClick:()=>{let e=document.querySelector(`.tabbar`)?.children;e&&e[2]?.click()},children:`Browse Models`})]})]})]})}var ie={noise_gate:`Noise Gate`,compressor:`Compressor`,boost:`Boost`,overdrive:`Overdrive`,distortion:`Distortion`,fuzz:`Fuzz`,eq:`EQ`,chorus:`Chorus`,flanger:`Flanger`,phaser:`Phaser`,tremolo:`Tremolo`,vibrato:`Vibrato`,delay:`Delay`,reverb:`Reverb`,volume:`Volume`,nam_amp:`NAM Amp`,ir_cab:`IR Cab`,octaver:`Octaver`,pitch_shifter:`Pitch Shifter`,harmonizer:`Harmonizer`,whammy:`Whammy`,detune:`Detune`,ring_modulator:`Ring Mod`,auto_wah:`Auto Wah`,envelope_filter:`Env Filter`,rotary_speaker:`Rotary`,uni_vibe:`Uni-Vibe`,auto_pan:`Auto Pan`,stereo_widener:`Stereo Widener`,bitcrusher:`Bitcrusher`,wavefolder:`Wavefolder`,rectifier:`Rectifier`,expander:`Expander`,de_esser:`De-esser`,transient_shaper:`Transient Shaper`,parametric_eq:`Parametric EQ`,high_pass_filter:`High Pass`,low_pass_filter:`Low Pass`,band_pass_filter:`Band Pass`,notch_filter:`Notch Filter`,formant_filter:`Formant Filter`,ping_pong_delay:`Ping Pong Delay`,multi_tap_delay:`Multi Tap`,reverse_delay:`Reverse Delay`,tape_echo:`Tape Echo`,shimmer_reverb:`Shimmer Reverb`,looper:`Looper`,early_reflections:`Early Reflections`,sidechain_compressor:`Sidechain Comp`};function ae({state:e,connected:t}){let[n,r]=(0,l.useState)(null),[i,a]=(0,l.useState)(!0),[o,s]=(0,l.useState)(!1),[c,u]=(0,l.useState)({}),d=(0,l.useCallback)(async e=>{if(c[e])return c[e];try{let t=await y(`/api/block-params/${e}`);return u(n=>({...n,[e]:t.params||[]})),t.params||[]}catch{return[]}},[c]);(0,l.useEffect)(()=>{if(!t||!e?.current_preset){r([]),a(!1);return}y(`/api/presets`).then(async t=>{let n=t.banks||[],i=e.current_preset,o=n[i.bank]?.presets?.[i.program];o?.chain&&r(await Promise.all(o.chain.map(async(e,t)=>{let n=await d(e.fx_type);return{id:t+1,title:ie[e.fx_type]||e.fx_type.replace(/_/g,` `).replace(/\b\w/g,e=>e.toUpperCase()),type:e.fx_type,bypassed:e.bypass||!e.enabled,params:n}}))),a(!1)}).catch(()=>{r([]),a(!1)})},[t,e,d]);let m=e=>r(t=>t&&t.map(t=>t.id===e?{...t,bypassed:!t.bypassed}:t)),h=async e=>{s(!1);let t=await d(e);r(n=>[...n||[],{id:Date.now(),title:ie[e]||e,type:e,bypassed:!1,params:t}])};return i?(0,f.jsx)(`div`,{style:{flex:1,display:`flex`,alignItems:`center`,justifyContent:`center`},children:(0,f.jsx)(`div`,{className:`loader`})}):(0,f.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,height:`100%`},children:[(0,f.jsxs)(`div`,{className:`screen-header`,children:[(0,f.jsxs)(`div`,{className:`screen-title`,children:[`FX Chain `,(n?.length||0)>0?`(${n.length})`:``]}),(0,f.jsx)(`button`,{className:`btn btn-ghost btn-sm`,onClick:()=>s(!0),children:`+ Add Block`})]}),(0,f.jsxs)(`div`,{className:`screen-body`,children:[n&&n.length>0&&(0,f.jsx)(`div`,{style:{display:`flex`,alignItems:`center`,gap:4,padding:`4px 2px`,overflowX:`auto`},children:(()=>{let t=e?.routing_mode===`4cm`,r=t?e?.routing_breakpoint||7:-1,i=[];return i.push({label:`IN`,type:`io`,idx:-1}),n.forEach((e,n)=>{t&&n===r&&i.push({label:null,type:`merge-bp`,idx:n}),i.push({label:e.type.toUpperCase(),type:`fx`,idx:n,bypassed:e.bypassed}),t&&n===r-1&&i.push({label:null,type:`split-bp`,idx:n})}),i.push({label:`OUT`,type:`io`,idx:-1}),i.map((e,t)=>e.type===`split-bp`?(0,f.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,alignItems:`center`,flexShrink:0,gap:1},children:[(0,f.jsx)(D,{variant:`split`,active:!0}),(0,f.jsx)(`span`,{style:{fontSize:7,color:p.textDim,letterSpacing:`.05em`,lineHeight:`1`},children:`4CM`}),(0,f.jsx)(D,{variant:`merge`,active:!0})]},`bp-${t}`):e.type===`merge-bp`?null:(0,f.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:4,flexShrink:0},children:[e.type===`io`&&(0,f.jsx)(`div`,{style:{padding:`3px 8px`,borderRadius:4,fontSize:10,fontWeight:700,background:p.blueDim,color:p.blue,border:`1px solid ${p.blue}60`},children:e.label}),e.type===`fx`&&(0,f.jsx)(`div`,{style:{padding:`3px 8px`,borderRadius:4,fontSize:10,fontWeight:700,background:p.amberDim,color:e.bypassed?p.textDim:p.amber,border:`1px solid ${e.bypassed?p.textDim:p.amber}60`,opacity:e.bypassed?.5:1},children:e.label}),ts(!0),children:`+ Add your first block`})]}):n.map(e=>(0,f.jsx)(E,{...e,active:!e.bypassed,onToggle:()=>m(e.id)},e.id))]}),o&&(0,f.jsxs)(ne,{onClose:()=>s(!1),children:[(0,f.jsx)(`div`,{className:`screen-header`,children:(0,f.jsx)(`div`,{className:`screen-title`,children:`Add FX Block`})}),(0,f.jsx)(`div`,{className:`screen-body`,style:{gap:4},children:Object.entries(ie).map(([e,t])=>(0,f.jsxs)(`div`,{className:`preset-row`,onClick:()=>h(e),style:{borderRadius:6},children:[(0,f.jsx)(`span`,{className:`badge badge-blue`,style:{width:60,flexShrink:0},children:e.split(`_`)[0]}),(0,f.jsx)(`span`,{style:{flex:1,fontSize:13},children:t}),(0,f.jsx)(`span`,{style:{color:p.textDim},children:`+`})]},e))})]})]})}function oe({state:e,connected:t,refresh:n}){let[r,i]=(0,l.useState)([]),[a,o]=(0,l.useState)(null),[s,c]=(0,l.useState)(!0),[u,d]=(0,l.useState)(!1),[m,h]=(0,l.useState)(``),[g,_]=(0,l.useState)([]),[v,x]=(0,l.useState)(!1),[ee,C]=(0,l.useState)(!1),te=(0,l.useRef)(null),w=(0,l.useCallback)(async()=>{if(!t){c(!1);return}try{let e=await y(`/api/models`);i(e.models||[]),o(e.current)}catch{}c(!1)},[t]);(0,l.useEffect)(()=>{w()},[w]);let T=async e=>{try{await b(`/api/models/load`,{path:e}),await w(),n()}catch{alert(`Failed to load model`)}},E=async()=>{try{await b(`/api/models/unload`),o(null),await w(),n()}catch{alert(`Failed to unload`)}},D=async e=>{let t=e.target.files?.[0];if(t){C(!0);try{await S(`/api/models/upload`,t),await w()}catch{alert(`Upload failed`)}C(!1)}},ne=(0,l.useCallback)(async()=>{if(m.trim()){d(!0);try{_((await y(`/api/models/tonedownload/search?q=${encodeURIComponent(m)}`)).results||[])}catch{alert(`Search failed`)}d(!1)}},[m]),re=async e=>{try{await b(`/api/models/tonedownload/install`,{download_url:e.download_url,name:e.name||e.filename,id:e.id,size:e.size,pack_name:e.pack_name,display_name:e.name}),await w(),n()}catch{alert(`Install failed`)}};return s?(0,f.jsx)(`div`,{style:{flex:1,display:`flex`,alignItems:`center`,justifyContent:`center`},children:(0,f.jsx)(`div`,{className:`loader`})}):(0,f.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,height:`100%`},children:[(0,f.jsxs)(`div`,{className:`screen-header`,children:[(0,f.jsxs)(`div`,{className:`screen-title`,children:[`NAM Models (`,r.length,`)`]}),(0,f.jsxs)(`div`,{style:{display:`flex`,gap:6},children:[(0,f.jsx)(`button`,{className:`btn btn-ghost btn-sm`,onClick:()=>x(!v),children:v?`Local`:`Search`}),(0,f.jsx)(`button`,{className:`btn btn-primary btn-sm`,onClick:()=>te.current?.click(),children:ee?`...`:`+ Upload`}),(0,f.jsx)(`input`,{ref:te,type:`file`,accept:`.nam`,style:{display:`none`},onChange:D})]})]}),v&&(0,f.jsxs)(`div`,{style:{padding:`8px 12px`,borderBottom:`1px solid ${p.border}`},children:[(0,f.jsxs)(`div`,{className:`search-bar`,children:[(0,f.jsx)(`span`,{style:{color:p.textDim},children:`🔍`}),(0,f.jsx)(`input`,{type:`text`,placeholder:`Search Tone3000…`,value:m,onChange:e=>h(e.target.value),onKeyDown:e=>e.key===`Enter`&&ne()}),(0,f.jsx)(`button`,{className:`btn btn-primary btn-sm`,onClick:ne,disabled:u,children:u?`...`:`Go`})]}),g.length>0&&(0,f.jsx)(`div`,{style:{marginTop:8,maxHeight:240,overflow:`auto`},children:g.map(e=>(0,f.jsxs)(`div`,{className:`preset-row`,onClick:()=>re(e),style:{borderBottom:`1px solid ${p.border}`,borderRadius:0},children:[(0,f.jsxs)(`div`,{style:{flex:1},children:[(0,f.jsx)(`div`,{style:{fontSize:13},children:e.name}),(0,f.jsxs)(`div`,{style:{fontSize:10,color:p.textDim},children:[e.author,` · `,e.size_display,` · `,e.architecture]})]}),(0,f.jsx)(`button`,{className:`btn btn-primary btn-sm`,children:`Get`})]},e.id))})]}),(0,f.jsxs)(`div`,{className:`screen-body`,children:[a&&(0,f.jsxs)(`div`,{className:`card-sm`,children:[(0,f.jsx)(`div`,{className:`section-label`,style:{marginBottom:6},children:`Loaded Model`}),(0,f.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8},children:[(0,f.jsx)(`div`,{className:`nam-chip`,children:a}),(0,f.jsx)(`button`,{className:`btn btn-danger btn-sm`,onClick:E,children:`Unload`})]})]}),r.length===0?(0,f.jsxs)(`div`,{style:{textAlign:`center`,padding:30,color:p.textDim,fontSize:14},children:[`No NAM models found.`,(0,f.jsx)(`br`,{}),`Upload a .nam file or search Tone3000.`]}):r.map(e=>(0,f.jsxs)(`div`,{className:`preset-row ${e.loaded?`active`:``}`,children:[(0,f.jsxs)(`div`,{style:{flex:1},children:[(0,f.jsx)(`div`,{style:{fontSize:13,fontWeight:500},children:e.name}),(0,f.jsxs)(`div`,{style:{fontSize:10,color:p.textDim},children:[e.architecture,` · `,e.size_mb,` MB`]})]}),e.loaded?(0,f.jsx)(`span`,{className:`badge badge-green`,children:`Loaded`}):(0,f.jsx)(`button`,{className:`btn btn-ghost btn-sm`,onClick:()=>T(e.path),children:`Load`})]},e.name))]})]})}function se({state:e,connected:t,refresh:n}){let[r,i]=(0,l.useState)([]),[a,o]=(0,l.useState)(null),[s,c]=(0,l.useState)(!0),[u,d]=(0,l.useState)(!1),[m,h]=(0,l.useState)(``),[g,_]=(0,l.useState)([]),[v,x]=(0,l.useState)(!1),[ee,C]=(0,l.useState)(!1),te=(0,l.useRef)(null),w=(0,l.useCallback)(async()=>{if(!t){c(!1);return}try{let e=await y(`/api/irs`);i(e.irs||[]),o(e.current)}catch{}c(!1)},[t]);(0,l.useEffect)(()=>{w()},[w]);let T=async e=>{try{await b(`/api/irs/load`,{path:e}),await w(),n()}catch{alert(`Failed to load IR`)}},E=async()=>{try{await b(`/api/irs/unload`),o(null),await w(),n()}catch{alert(`Failed to unload`)}},D=async e=>{let t=e.target.files?.[0];if(t){C(!0);try{await S(`/api/irs/upload`,t),await w()}catch{alert(`Upload failed`)}C(!1)}},ne=(0,l.useCallback)(async()=>{if(m.trim()){d(!0);try{_((await y(`/api/irs/tonedownload/search?q=${encodeURIComponent(m)}`)).results||[])}catch{alert(`Search failed`)}d(!1)}},[m]),re=async e=>{try{await b(`/api/irs/tonedownload/install`,{download_url:e.download_url,name:e.name||e.filename,id:e.id,size:e.size,display_name:e.name}),await w(),n()}catch{alert(`Install failed`)}};return s?(0,f.jsx)(`div`,{style:{flex:1,display:`flex`,alignItems:`center`,justifyContent:`center`},children:(0,f.jsx)(`div`,{className:`loader`})}):(0,f.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,height:`100%`},children:[(0,f.jsxs)(`div`,{className:`screen-header`,children:[(0,f.jsxs)(`div`,{className:`screen-title`,children:[`IR Files (`,r.length,`)`]}),(0,f.jsxs)(`div`,{style:{display:`flex`,gap:6},children:[(0,f.jsx)(`button`,{className:`btn btn-ghost btn-sm`,onClick:()=>x(!v),children:v?`Local`:`Search`}),(0,f.jsx)(`button`,{className:`btn btn-primary btn-sm`,onClick:()=>te.current?.click(),children:ee?`...`:`+ Upload`}),(0,f.jsx)(`input`,{ref:te,type:`file`,accept:`.wav`,style:{display:`none`},onChange:D})]})]}),v&&(0,f.jsxs)(`div`,{style:{padding:`8px 12px`,borderBottom:`1px solid ${p.border}`},children:[(0,f.jsxs)(`div`,{className:`search-bar`,children:[(0,f.jsx)(`span`,{style:{color:p.textDim},children:`🔍`}),(0,f.jsx)(`input`,{type:`text`,placeholder:`Search Tone3000 IRs…`,value:m,onChange:e=>h(e.target.value),onKeyDown:e=>e.key===`Enter`&&ne()}),(0,f.jsx)(`button`,{className:`btn btn-primary btn-sm`,onClick:ne,disabled:u,children:u?`...`:`Go`})]}),g.length>0&&(0,f.jsx)(`div`,{style:{marginTop:8,maxHeight:240,overflow:`auto`},children:g.map(e=>(0,f.jsxs)(`div`,{className:`preset-row`,onClick:()=>re(e),style:{borderBottom:`1px solid ${p.border}`,borderRadius:0},children:[(0,f.jsxs)(`div`,{style:{flex:1},children:[(0,f.jsx)(`div`,{style:{fontSize:13},children:e.name}),(0,f.jsxs)(`div`,{style:{fontSize:10,color:p.textDim},children:[e.author,` · `,e.size_display]})]}),(0,f.jsx)(`button`,{className:`btn btn-primary btn-sm`,children:`Get`})]},e.id))})]}),(0,f.jsxs)(`div`,{className:`screen-body`,children:[a&&(0,f.jsxs)(`div`,{className:`card-sm`,children:[(0,f.jsx)(`div`,{className:`section-label`,style:{marginBottom:6},children:`Loaded IR`}),(0,f.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8},children:[(0,f.jsx)(`div`,{className:`nam-chip`,style:{color:p.green,borderColor:`${p.green}55`,background:`${p.green}15`},children:a}),(0,f.jsx)(`button`,{className:`btn btn-danger btn-sm`,onClick:E,children:`Unload`})]})]}),r.length===0?(0,f.jsxs)(`div`,{style:{textAlign:`center`,padding:30,color:p.textDim,fontSize:14},children:[`No IR files found.`,(0,f.jsx)(`br`,{}),`Upload a .wav file or search Tone3000.`]}):r.map(e=>(0,f.jsxs)(`div`,{className:`preset-row ${e.loaded?`active`:``}`,children:[(0,f.jsxs)(`div`,{style:{flex:1},children:[(0,f.jsx)(`div`,{style:{fontSize:13,fontWeight:500},children:e.name}),(0,f.jsxs)(`div`,{style:{fontSize:10,color:p.textDim},children:[e.sample_rate,` Hz · `,e.length_ms,` ms · `,e.num_taps,` taps`]})]}),e.loaded?(0,f.jsx)(`span`,{className:`badge badge-green`,children:`Loaded`}):(0,f.jsx)(`button`,{className:`btn btn-ghost btn-sm`,onClick:()=>T(e.path),children:`Load`})]},e.name))]})]})}function O({state:e,connected:t,refresh:n}){let[r,i]=(0,l.useState)([]),[a,o]=(0,l.useState)(0),[s,c]=(0,l.useState)(!0),[u,d]=(0,l.useState)(``),[m,h]=(0,l.useState)(!1),[g,_]=(0,l.useState)(null),v=(0,l.useCallback)(async()=>{if(!t){i([{name:`Default`,number:0,presets:[{name:`Edge of Breakup`,bank:0,program:0},{name:`Modern High Gain`,bank:0,program:1},null,null]}]),c(!1);return}try{i((await y(`/api/presets`)).banks||[])}catch{}c(!1)},[t]);(0,l.useEffect)(()=>{v()},[v]);let S=async(e,t)=>{try{await b(`/api/presets/${e}/${t}/activate`),await v(),n()}catch{alert(`Failed to load preset`)}},C=async()=>{if(!u.trim())return;let t=e?.current_preset?.bank??0,n=e?.current_preset?.program??0;try{await x(`/api/presets/${t}/${n}`,{name:u}),h(!1),await v()}catch{alert(`Failed to save`)}},te=async()=>{let e=a,t=r[e]?.presets||[],i=t.findIndex(e=>e==null);i===-1&&(i=t.length);let o=`New Preset ${i+1}`;try{await x(`/api/presets/${e}/${i}`,{name:o}),await v(),await b(`/api/presets/${e}/${i}/activate`),n()}catch{alert(`Failed to create preset`)}},w=async(e,t)=>{try{await ee(`/api/presets/${e}/${t}`),_(null),await v()}catch{alert(`Failed to delete`)}};if(s)return(0,f.jsx)(`div`,{style:{flex:1,display:`flex`,alignItems:`center`,justifyContent:`center`},children:(0,f.jsx)(`div`,{className:`loader`})});let T=e?.current_preset,E=r[a]?.presets||[];return(0,f.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,height:`100%`},children:[(0,f.jsxs)(`div`,{className:`screen-header`,children:[(0,f.jsx)(`div`,{className:`screen-title`,children:`Presets`}),(0,f.jsxs)(`div`,{style:{display:`flex`,gap:6},children:[(0,f.jsx)(`button`,{className:`btn btn-ghost btn-sm`,onClick:()=>h(!0),children:`Save`}),(0,f.jsx)(`button`,{className:`btn btn-primary btn-sm`,onClick:te,children:`+ New`})]})]}),(0,f.jsxs)(`div`,{className:`screen-body`,children:[r.length>1&&(0,f.jsx)(`div`,{className:`toggle`,children:r.map((e,t)=>(0,f.jsx)(`button`,{className:`toggle-btn ${a===t?`active`:``}`,onClick:()=>o(t),children:e.name},e.number))}),T&&(0,f.jsx)(`div`,{className:`card-sm`,style:{display:`flex`,alignItems:`center`,gap:8},children:(0,f.jsxs)(`div`,{style:{flex:1},children:[(0,f.jsx)(`div`,{style:{fontSize:11,color:p.textDim},children:`Current`}),(0,f.jsxs)(`div`,{style:{fontSize:14,fontWeight:600,color:p.amber},children:[T.name,(0,f.jsxs)(`span`,{className:`mono`,style:{fontSize:10,color:p.textDim,marginLeft:8},children:[`Bank `,T.bank,` · Prog `,T.program]})]})]})}),E.length===0?(0,f.jsx)(`div`,{style:{textAlign:`center`,padding:30,color:p.textDim,fontSize:14},children:`No presets in this bank.`}):E.map((e,t)=>{if(!e)return null;let n=T?.bank===e.bank&&T?.program===e.program,r=g===`${e.bank}-${e.program}`;return(0,f.jsxs)(`div`,{className:`preset-row ${n?`active`:``}`,onClick:()=>!r&&S(e.bank,e.program),children:[(0,f.jsx)(`div`,{className:`mono`,style:{width:28,height:28,borderRadius:6,display:`flex`,alignItems:`center`,justifyContent:`center`,fontSize:12,fontWeight:700,background:n?`${p.amber}22`:p.surface,color:n?p.amber:p.textDim,border:`1px solid ${n?p.amber+`60`:p.border}`},children:e.program+1}),(0,f.jsxs)(`div`,{style:{flex:1},children:[(0,f.jsx)(`div`,{style:{fontSize:13,fontWeight:600},children:e.name}),(0,f.jsxs)(`div`,{style:{fontSize:10,color:p.textDim},children:[`Bank `,e.bank,` · Program `,e.program]})]}),n&&(0,f.jsx)(`span`,{style:{color:p.amber,fontSize:16},children:`●`}),r?(0,f.jsxs)(`div`,{style:{display:`flex`,gap:4},children:[(0,f.jsx)(`button`,{className:`btn btn-danger btn-sm`,onClick:t=>{t.stopPropagation(),w(e.bank,e.program)},children:`Confirm`}),(0,f.jsx)(`button`,{className:`btn btn-ghost btn-sm`,onClick:e=>{e.stopPropagation(),_(null)},children:`Cancel`})]}):(0,f.jsx)(`button`,{className:`btn btn-ghost btn-sm`,style:{color:p.red},onClick:t=>{t.stopPropagation(),_(`${e.bank}-${e.program}`)},children:`Delete`})]},t)})]}),m&&(0,f.jsxs)(ne,{onClose:()=>h(!1),children:[(0,f.jsx)(`div`,{className:`screen-header`,children:(0,f.jsx)(`div`,{className:`screen-title`,children:`Save Preset`})}),(0,f.jsxs)(`div`,{className:`screen-body`,children:[(0,f.jsx)(`div`,{className:`search-bar`,children:(0,f.jsx)(`input`,{type:`text`,placeholder:`Preset name…`,value:u,onChange:e=>d(e.target.value),autoFocus:!0,onKeyDown:e=>e.key===`Enter`&&C()})}),(0,f.jsxs)(`div`,{style:{display:`flex`,gap:8},children:[(0,f.jsx)(`button`,{className:`btn btn-primary`,style:{flex:1},onClick:C,children:`Save`}),(0,f.jsx)(`button`,{className:`btn btn-ghost`,onClick:()=>h(!1),children:`Cancel`})]})]})]})]})}function k({state:e,connected:t,refresh:n}){let[r,i]=(0,l.useState)(`wifi`),[a,o]=(0,l.useState)([]),[s,c]=(0,l.useState)([]),[u,d]=(0,l.useState)([]),[m,h]=(0,l.useState)(!1),[g,_]=(0,l.useState)(!1),[v,x]=(0,l.useState)(``),[ee,S]=(0,l.useState)(``),[C,te]=(0,l.useState)(null),[w,T]=(0,l.useState)(e?.routing_mode||`mono`),[E,D]=(0,l.useState)(e?.routing_breakpoint||7),[ne,re]=(0,l.useState)(e?.channel_mode||`dual-mono`);(0,l.useEffect)(()=>{e?.routing_mode&&T(e.routing_mode),e?.routing_breakpoint!=null&&D(e.routing_breakpoint),e?.channel_mode&&re(e.channel_mode)},[e?.routing_mode,e?.routing_breakpoint,e?.channel_mode]);let ie=async()=>{h(!0);try{o((await y(`/api/wifi/scan`)).networks||[])}catch{}h(!1)},ae=async(e,t)=>{try{await b(`/api/wifi/connect`,{ssid:e,password:t}),te(null),x(``),S(``),setTimeout(n,2e3)}catch{alert(`Failed to connect`)}},oe=async()=>{try{await b(`/api/wifi/disconnect`),setTimeout(n,2e3)}catch{}},se=async()=>{let t=e?.wifi?.hotspot_active;try{t?await b(`/api/wifi/hotspot/disable`):await b(`/api/wifi/hotspot/enable`,{ssid:`Pi-Pedal`,password:`pedal1234`}),setTimeout(n,2e3)}catch{}},O=async e=>{try{await b(`/api/bluetooth/power`,{on:e}),setTimeout(n,1e3)}catch{}},k=async()=>{_(!0);try{c((await b(`/api/bluetooth/scan`)).devices||[])}catch{}_(!1)},ce=async()=>{try{d((await y(`/api/bluetooth/paired`)).devices||[])}catch{}},le=async e=>{try{await b(`/api/bluetooth/pair`,{address:e}),await ce()}catch{alert(`Pairing failed`)}},ue=async(e,t)=>{try{await b(`/api/routing`,{routing_mode:e,routing_breakpoint:t})}catch{}},de=async e=>{try{await b(`/api/channel-mode`,{channel_mode:e}),re(e)}catch{}};(0,l.useEffect)(()=>{t&&(ie(),ce())},[t]);let A=e?.wifi,j=e?.bluetooth;return(0,f.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,height:`100%`},children:[(0,f.jsx)(`div`,{className:`screen-header`,children:(0,f.jsx)(`div`,{className:`screen-title`,children:`Settings`})}),(0,f.jsx)(`div`,{className:`toggle`,style:{margin:`6px 10px`},children:[{id:`wifi`,label:`WiFi`},{id:`bt`,label:`Bluetooth`},{id:`routing`,label:`Routing`}].map(e=>(0,f.jsx)(`button`,{className:`toggle-btn ${r===e.id?`active`:``}`,onClick:()=>i(e.id),children:e.label},e.id))}),(0,f.jsxs)(`div`,{className:`screen-body`,style:{gap:4},children:[r===`wifi`&&(0,f.jsxs)(f.Fragment,{children:[(0,f.jsxs)(`div`,{className:`card-sm`,children:[(0,f.jsxs)(`div`,{className:`setting-row`,style:{border:`none`,paddingTop:0},children:[(0,f.jsxs)(`div`,{children:[(0,f.jsx)(`div`,{className:`setting-label`,children:`WiFi`}),(0,f.jsx)(`div`,{className:`setting-desc`,children:A?.connected?`Connected to ${A.ssid}`:`Disconnected`})]}),(0,f.jsx)(`div`,{className:`switch ${A?.connected?`on`:``}`,onClick:oe})]}),A?.connected&&(0,f.jsxs)(`div`,{style:{fontSize:11,color:p.textDim},children:[`IP: `,A.ip,` · Signal: `,A.signal,`%`]}),(0,f.jsxs)(`div`,{className:`setting-row`,children:[(0,f.jsxs)(`div`,{children:[(0,f.jsx)(`div`,{className:`setting-label`,children:`Hotspot`}),(0,f.jsx)(`div`,{className:`setting-desc`,children:A?.hotspot_active?`Active: ${A.hotspot_ssid}`:`Off`})]}),(0,f.jsx)(`div`,{className:`switch ${A?.hotspot_active?`on`:``}`,onClick:se})]})]}),(0,f.jsxs)(`div`,{className:`card-sm`,children:[(0,f.jsxs)(`div`,{style:{display:`flex`,justifyContent:`space-between`,alignItems:`center`,marginBottom:8},children:[(0,f.jsx)(`div`,{className:`section-label`,style:{marginBottom:0},children:`Networks`}),(0,f.jsx)(`button`,{className:`btn btn-ghost btn-sm`,onClick:ie,disabled:m,children:m?`...`:`Scan`})]}),a.length===0?(0,f.jsx)(`div`,{style:{fontSize:12,color:p.textDim,padding:`8px 0`},children:`Scan to see available networks.`}):a.map(e=>(0,f.jsxs)(`div`,{className:`preset-row`,style:{padding:`8px 0`,borderRadius:0,borderBottom:`1px solid ${p.border}`},onClick:()=>wpaState?.ssid!==e.ssid&&te(e.ssid),children:[(0,f.jsxs)(`div`,{style:{flex:1},children:[(0,f.jsx)(`div`,{style:{fontSize:13},children:e.ssid}),(0,f.jsxs)(`div`,{className:`mono`,style:{fontSize:10,color:p.textDim},children:[`Signal: `,e.signal,`% · `,e.encryption||`Open`]})]}),A?.ssid===e.ssid&&(0,f.jsx)(`span`,{className:`badge badge-green`,children:`Connected`})]},e.ssid))]}),C&&(0,f.jsxs)(`div`,{className:`card-sm`,children:[(0,f.jsxs)(`div`,{className:`section-label`,children:[`Connect to `,C]}),(0,f.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:8},children:[(0,f.jsx)(`input`,{type:`password`,placeholder:`Password (leave blank for open network)`,value:ee,onChange:e=>S(e.target.value),style:{background:p.surface,border:`1px solid ${p.border}`,borderRadius:6,padding:`8px 12px`,color:p.textPrimary,fontSize:13,outline:`none`},onKeyDown:e=>e.key===`Enter`&&ae(C,ee)}),(0,f.jsxs)(`div`,{style:{display:`flex`,gap:6},children:[(0,f.jsx)(`button`,{className:`btn btn-primary btn-sm`,style:{flex:1},onClick:()=>ae(C,ee),children:`Connect`}),(0,f.jsx)(`button`,{className:`btn btn-ghost btn-sm`,onClick:()=>te(null),children:`Cancel`})]})]})]})]}),r===`bt`&&(0,f.jsxs)(f.Fragment,{children:[(0,f.jsxs)(`div`,{className:`card-sm`,children:[(0,f.jsxs)(`div`,{className:`setting-row`,style:{border:`none`,paddingTop:0},children:[(0,f.jsxs)(`div`,{children:[(0,f.jsx)(`div`,{className:`setting-label`,children:`Bluetooth`}),(0,f.jsx)(`div`,{className:`setting-desc`,children:j?.powered?`Powered on`:`Off`})]}),(0,f.jsx)(`div`,{className:`switch ${j?.powered?`on`:``}`,onClick:()=>O(!j?.powered)})]}),j?.powered&&(0,f.jsxs)(f.Fragment,{children:[(0,f.jsxs)(`div`,{className:`setting-row`,children:[(0,f.jsxs)(`div`,{children:[(0,f.jsx)(`div`,{className:`setting-label`,children:`Discoverable`}),(0,f.jsxs)(`div`,{className:`setting-desc`,children:[j?.name,` (`,j?.address,`)`]})]}),(0,f.jsx)(`div`,{className:`switch ${j?.discoverable?`on`:``}`,onClick:async()=>{try{await b(`/api/bluetooth/discoverable`,{on:!j?.discoverable}),setTimeout(n,500)}catch{}}})]}),(0,f.jsxs)(`div`,{className:`setting-row`,children:[(0,f.jsxs)(`div`,{children:[(0,f.jsx)(`div`,{className:`setting-label`,children:`Bluetooth MIDI`}),(0,f.jsx)(`div`,{className:`setting-desc`,children:j?.midi_enabled?`Enabled`:`Disabled`})]}),(0,f.jsx)(`div`,{className:`switch ${j?.midi_enabled?`on`:``}`,onClick:async()=>{try{await(j?.midi_enabled?b(`/api/bluetooth/midi-disable`):b(`/api/bluetooth/midi-enable`)),setTimeout(n,500)}catch{}}})]})]})]}),j?.powered&&(0,f.jsxs)(`div`,{className:`card-sm`,children:[(0,f.jsxs)(`div`,{style:{display:`flex`,justifyContent:`space-between`,alignItems:`center`,marginBottom:8},children:[(0,f.jsxs)(`div`,{className:`section-label`,style:{marginBottom:0},children:[`Paired Devices (`,u.length,`)`]}),(0,f.jsx)(`button`,{className:`btn btn-ghost btn-sm`,onClick:k,disabled:g,children:g?`...`:`Scan`})]}),u.length===0?(0,f.jsx)(`div`,{style:{fontSize:12,color:p.textDim,padding:`8px 0`},children:`No paired devices.`}):u.map(e=>(0,f.jsxs)(`div`,{className:`preset-row`,style:{padding:`8px 0`,borderRadius:0,borderBottom:`1px solid ${p.border}`},children:[(0,f.jsxs)(`div`,{style:{flex:1},children:[(0,f.jsx)(`div`,{style:{fontSize:13},children:e.name||e.address}),(0,f.jsxs)(`div`,{className:`mono`,style:{fontSize:10,color:p.textDim},children:[e.address,` · `,e.connected?`Connected`:`Paired`]})]}),!e.connected&&(0,f.jsx)(`button`,{className:`btn btn-ghost btn-sm`,onClick:async()=>{try{await b(`/api/bluetooth/connect`,{address:e.address})}catch{alert(`Failed`)}},children:`Connect`})]},e.address))]}),g&&s.length>0&&(0,f.jsxs)(`div`,{className:`card-sm`,children:[(0,f.jsx)(`div`,{className:`section-label`,style:{marginBottom:6},children:`Discovered`}),s.map(e=>(0,f.jsxs)(`div`,{className:`preset-row`,style:{padding:`8px 0`,borderRadius:0,borderBottom:`1px solid ${p.border}`},children:[(0,f.jsxs)(`div`,{style:{flex:1},children:[(0,f.jsx)(`div`,{style:{fontSize:13},children:e.name||e.address}),(0,f.jsx)(`div`,{className:`mono`,style:{fontSize:10,color:p.textDim},children:e.address})]}),(0,f.jsx)(`button`,{className:`btn btn-ghost btn-sm`,onClick:()=>le(e.address),children:`Pair`})]},e.address))]})]}),r===`routing`&&(0,f.jsxs)(f.Fragment,{children:[(0,f.jsxs)(`div`,{className:`card-sm`,children:[(0,f.jsx)(`div`,{className:`section-label`,children:`4CM Routing`}),(0,f.jsxs)(`div`,{className:`setting-row`,children:[(0,f.jsxs)(`div`,{children:[(0,f.jsx)(`div`,{className:`setting-label`,children:`Mode`}),(0,f.jsx)(`div`,{className:`setting-desc`,children:`Mono (normal) or 4CM (4-cable method)`})]}),(0,f.jsxs)(`select`,{value:w,onChange:e=>{T(e.target.value),ue(e.target.value,E)},style:{background:p.surface,border:`1px solid ${p.border}`,borderRadius:6,padding:`6px 10px`,color:p.textPrimary,fontSize:13,outline:`none`},children:[(0,f.jsx)(`option`,{value:`mono`,children:`Mono`}),(0,f.jsx)(`option`,{value:`4cm`,children:`4CM`})]})]}),w===`4cm`&&(0,f.jsxs)(`div`,{className:`setting-row`,children:[(0,f.jsxs)(`div`,{children:[(0,f.jsx)(`div`,{className:`setting-label`,children:`Breakpoint`}),(0,f.jsx)(`div`,{className:`setting-desc`,children:`Chain position for amp send/return`})]}),(0,f.jsx)(`input`,{type:`number`,min:1,max:15,value:E,onChange:e=>{let t=+e.target.value;D(t),ue(w,t)},style:{background:p.surface,border:`1px solid ${p.border}`,borderRadius:6,padding:`6px 10px`,color:p.textPrimary,fontSize:13,width:60,outline:`none`,textAlign:`center`}})]})]}),(0,f.jsxs)(`div`,{className:`card-sm`,children:[(0,f.jsx)(`div`,{className:`section-label`,children:`Channel Mode`}),(0,f.jsxs)(`div`,{className:`setting-row`,children:[(0,f.jsxs)(`div`,{children:[(0,f.jsx)(`div`,{className:`setting-label`,children:`Routing`}),(0,f.jsx)(`div`,{className:`setting-desc`,children:`Dual-mono: two independent channels · Stereo: linked as L/R pair`})]}),(0,f.jsxs)(`select`,{value:ne,onChange:e=>de(e.target.value),style:{background:p.surface,border:`1px solid ${p.border}`,borderRadius:6,padding:`6px 10px`,color:p.textPrimary,fontSize:13,outline:`none`},children:[(0,f.jsx)(`option`,{value:`dual-mono`,children:`Dual-Mono`}),(0,f.jsx)(`option`,{value:`stereo`,children:`Stereo`})]})]}),(0,f.jsx)(`div`,{style:{fontSize:10,color:p.textDim,marginTop:4,padding:`4px 0`},children:ne===`dual-mono`?`Each channel controlled independently from its own phone.`:`Channels A (Left) and B (Right) are controlled together.`})]})]})]})]})}function ce({state:e}){let[t,n]=(0,l.useState)(!1),[r,i]=(0,l.useState)([]),[a,o]=(0,l.useState)(!0),s=e?.input_level??0,c=e?.output_level??0,u=(0,l.useCallback)(async()=>{try{i((await y(`/api/captures`)).captures||[])}catch{}o(!1)},[]);return(0,l.useEffect)(()=>{u()},[u]),(0,f.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,height:`100%`},children:[(0,f.jsxs)(`div`,{className:`screen-header`,children:[(0,f.jsxs)(`div`,{children:[(0,f.jsx)(`div`,{className:`screen-title`,children:`Looper / Recorder`}),(0,f.jsxs)(`div`,{className:`mono`,style:{fontSize:10,color:p.textDim},children:[e?.sample_rate?`${e.sample_rate/1e3}kHz`:`—`,t&&(0,f.jsx)(`span`,{style:{color:p.red,marginLeft:8},children:`● RECORDING`})]})]}),(0,f.jsx)(`div`,{style:{display:`flex`,gap:8,alignItems:`center`},children:t?(0,f.jsx)(`button`,{className:`btn btn-danger btn-sm`,onClick:async()=>{try{await b(`/api/capture/stop`),n(!1),u()}catch{alert(`Failed to stop recording`)}},style:{padding:`8px 16px`},children:`⏹ Stop`}):(0,f.jsx)(`button`,{className:`btn btn-primary btn-sm`,onClick:async()=>{try{await b(`/api/capture/start`),n(!0)}catch{alert(`Failed to start recording`)}},style:{padding:`8px 16px`,background:p.red,color:`#fff`},children:`● Record`})})]}),(0,f.jsxs)(`div`,{className:`screen-body`,children:[(0,f.jsxs)(`div`,{className:`card`,style:{padding:`16px`,display:`flex`,gap:16,alignItems:`center`},children:[(0,f.jsxs)(`div`,{style:{flex:1},children:[(0,f.jsx)(`div`,{className:`section-label`,children:`Input Level`}),(0,f.jsx)(`div`,{style:{display:`flex`,gap:2,height:20,marginTop:4},children:Array.from({length:12}).map((e,t)=>{let n=Math.round(s/100*12)>t,r=t>=10?p.red:t>=8?`#E8C030`:p.green;return(0,f.jsx)(`div`,{style:{flex:1,borderRadius:2,background:n?r:p.border,transition:`all .05s`}},t)})})]}),(0,f.jsxs)(`div`,{style:{flex:1},children:[(0,f.jsx)(`div`,{className:`section-label`,children:`Output Level`}),(0,f.jsx)(`div`,{style:{display:`flex`,gap:2,height:20,marginTop:4},children:Array.from({length:12}).map((e,t)=>{let n=Math.round(c/100*12)>t,r=t>=10?p.red:t>=8?`#E8C030`:p.green;return(0,f.jsx)(`div`,{style:{flex:1,borderRadius:2,background:n?r:p.border,transition:`all .05s`}},t)})})]})]}),t&&(0,f.jsxs)(`div`,{className:`card-sm`,style:{background:`${p.red}15`,borderColor:p.red,textAlign:`center`,padding:20},children:[(0,f.jsx)(`div`,{style:{fontSize:40,marginBottom:8,animation:`pulse 1s ease-in-out infinite`},children:`🔴`}),(0,f.jsx)(`div`,{style:{fontSize:14,fontWeight:600,color:p.red},children:`Recording...`}),(0,f.jsx)(`div`,{className:`mono`,style:{fontSize:11,color:p.textDim,marginTop:4},children:`Saving to captures folder — tap Stop to finish`})]}),!t&&(0,f.jsx)(f.Fragment,{children:(0,f.jsxs)(`div`,{className:`card-sm`,children:[(0,f.jsxs)(`div`,{className:`section-label`,style:{marginBottom:6},children:[`Recordings (`,r.length,`)`]}),a?(0,f.jsx)(`div`,{className:`loader`,style:{margin:`10px auto`}}):r.length===0?(0,f.jsx)(`div`,{style:{fontSize:12,color:p.textDim,padding:`10px 0`},children:`No recordings yet. Tap ● Record to capture audio.`}):r.map(e=>(0,f.jsxs)(`div`,{className:`preset-row`,style:{padding:`8px 0`,borderRadius:0,borderBottom:`1px solid ${p.border}`},children:[(0,f.jsxs)(`div`,{style:{flex:1},children:[(0,f.jsx)(`div`,{style:{fontSize:13},children:e.name}),(0,f.jsx)(`div`,{className:`mono`,style:{fontSize:10,color:p.textDim},children:e.size_display})]}),(0,f.jsx)(`a`,{href:`/api/captures/${e.name}`,target:`_blank`,rel:`noopener`,className:`btn btn-ghost btn-sm`,style:{textDecoration:`none`},children:`▶ Play`})]},e.name))]})})]}),(0,f.jsx)(`style`,{children:`@keyframes pulse { 0%,100% { opacity: 1; } 50% { opacity: 0.4; } }`})]})}function le({onClose:e,state:t,connected:n}){let[r,i]=(0,l.useState)({}),[a,o]=(0,l.useState)(!0),[s,c]=(0,l.useState)(null),[u,d]=(0,l.useState)(``),[m,h]=(0,l.useState)(null),[g,_]=(0,l.useState)(!1),v=(0,l.useRef)(null),S=t?.current_snapshot??0,C=(0,l.useCallback)(async()=>{if(!n){o(!1);return}try{i((await y(`/api/snapshots`)).snapshots||{})}catch{}o(!1)},[n]);(0,l.useEffect)(()=>{C()},[C]);let te=e=>{v.current=setTimeout(()=>{v.current=null,E(e)},600)},w=e=>{v.current&&(clearTimeout(v.current),v.current=null,r[String(e)]?D(e):E(e))},T=()=>{v.current&&=(clearTimeout(v.current),null)},E=async e=>{try{await b(`/api/snapshots/${e}/save`),h(e),setTimeout(()=>h(null),800),await C()}catch{}},D=async e=>{try{await b(`/api/snapshots/${e}/recall`),await C()}catch{}},re=async e=>{if(u.trim())try{await x(`/api/snapshots/${e}`,{name:u.trim()}),c(null),await C()}catch{}},ie=async e=>{try{await ee(`/api/snapshots/${e}`),await C()}catch{}};return(0,f.jsxs)(ne,{onClose:e,children:[(0,f.jsxs)(`div`,{className:`screen-header`,style:{justifyContent:`space-between`},children:[(0,f.jsx)(`div`,{className:`screen-title`,children:`Snapshots`}),(0,f.jsx)(`div`,{style:{display:`flex`,gap:8,alignItems:`center`},children:(0,f.jsxs)(`label`,{style:{display:`flex`,alignItems:`center`,gap:4,fontSize:10,color:p.textDim,cursor:`pointer`},children:[(0,f.jsx)(`div`,{className:`switch ${g?`on`:``}`,style:{width:28,height:16},onClick:()=>_(e=>!e),children:(0,f.jsx)(`div`,{style:{position:`absolute`,top:1,left:g?11:1,width:13,height:13,borderRadius:`50%`,background:`#fff`,transition:`left .15s`}})}),`Discard Edits`]})})]}),(0,f.jsxs)(`div`,{className:`screen-body`,style:{gap:8},children:[(0,f.jsxs)(`div`,{style:{fontSize:11,color:p.textDim,marginBottom:4},children:[`Tap to recall · Hold to save`,g&&(0,f.jsx)(`span`,{style:{color:p.amber,marginLeft:8},children:`Edits will be discarded on recall`})]}),(0,f.jsx)(`div`,{className:`snap-grid`,children:[1,2,3,4,5,6,7,8].map(e=>{let t=r[String(e)],n=S===e,i=!!t,a=s===e,o=m===e;return(0,f.jsxs)(`div`,{className:`snap-slot ${i?`filled`:``} ${n?`active`:``}`,onMouseDown:()=>te(e),onTouchStart:()=>te(e),onMouseUp:()=>w(e),onTouchEnd:()=>w(e),onMouseLeave:T,onTouchCancel:T,style:o?{background:`rgba(58,184,122,.15)`}:{},children:[(0,f.jsx)(`div`,{className:`snap-num`,children:e}),a?(0,f.jsx)(`input`,{className:`snap-name-input`,value:u,onChange:e=>d(e.target.value),onBlur:()=>re(e),onKeyDown:t=>{t.key===`Enter`&&re(e),t.key===`Escape`&&c(null)},autoFocus:!0,onClick:e=>e.stopPropagation()}):t?(0,f.jsx)(`div`,{className:`snap-name`,onClick:n=>{n.stopPropagation(),c(e),d(t.name)},children:t.name}):(0,f.jsx)(`div`,{className:`snap-empty`,children:`Empty`}),o&&(0,f.jsx)(`div`,{className:`snap-save-indicator`}),n&&(0,f.jsx)(`div`,{style:{position:`absolute`,bottom:-2,left:`50%`,transform:`translateX(-50%)`,width:20,height:2,borderRadius:1,background:p.amber}})]},e)})}),S>0&&r[String(S)]&&(0,f.jsx)(`div`,{style:{marginTop:8,display:`flex`,gap:8},children:(0,f.jsxs)(`button`,{className:`btn btn-danger btn-sm`,style:{flex:1},onClick:()=>ie(S),children:[`Delete Snapshot `,S]})})]})]})}var ue=[{id:`rig`,label:`Rig`,icon:`🎛`},{id:`fx`,label:`FX Chain`,icon:`⛓`},{id:`models`,label:`Models`,icon:`📁`},{id:`irs`,label:`IRs`,icon:`🎚`},{id:`presets`,label:`Presets`,icon:`⭐`},{id:`settings`,label:`Settings`,icon:`⚙`},{id:`record`,label:`Looper`,icon:`🎙`}];function de(){let[e,t]=(0,l.useState)(`rig`),[n,r]=(0,l.useState)(!1),[i,a]=(0,l.useState)(()=>{try{return localStorage.getItem(`pedal_channel`)||`guitar`}catch{return`guitar`}}),{state:o,connected:s,refresh:c}=C();(0,l.useEffect)(()=>{document.title=`Pi Multi-FX Pedal`},[]),(0,l.useEffect)(()=>{try{localStorage.setItem(`pedal_channel`,i)}catch{}_(i)},[i]);let u=e=>{a(e)};return(0,f.jsxs)(f.Fragment,{children:[(0,f.jsx)(`style`,{children:te}),(0,f.jsxs)(`div`,{style:{width:`100%`,maxWidth:440,margin:`0 auto`,height:`100dvh`,display:`flex`,flexDirection:`column`,background:p.bg,overflow:`hidden`,fontFamily:`'Inter', sans-serif`},children:[(0,f.jsxs)(`div`,{style:{display:`flex`,justifyContent:`space-between`,alignItems:`center`,padding:`4px 10px`,background:p.panel,borderBottom:`1px solid ${p.border}`,flexShrink:0},children:[(0,f.jsxs)(`div`,{style:{display:`flex`,gap:6,alignItems:`center`},children:[(0,f.jsx)(`div`,{style:{width:6,height:6,borderRadius:`50%`,background:s?p.green:p.red,boxShadow:s?`0 0 6px ${p.green}`:`none`}}),o?.channel_mode===`stereo`?(0,f.jsx)(`span`,{className:`badge badge-amber`,style:{fontSize:9,padding:`2px 7px`,letterSpacing:`.08em`},children:`STEREO`}):(0,f.jsxs)(`div`,{className:`toggle`,style:{margin:0,height:22},children:[(0,f.jsx)(`button`,{className:`toggle-btn ${i===`guitar`?`active`:``}`,onClick:()=>u(`guitar`),style:{padding:`2px 8px`,fontSize:10,fontWeight:700,letterSpacing:`.1em`},children:`GUITAR`}),(0,f.jsx)(`button`,{className:`toggle-btn ${i===`bass`?`active`:``}`,onClick:()=>u(`bass`),style:{padding:`2px 8px`,fontSize:10,fontWeight:700,letterSpacing:`.1em`},children:`BASS`})]}),o?.tuner_enabled&&(0,f.jsx)(`span`,{className:`badge badge-amber`,style:{fontSize:8,padding:`1px 5px`},children:`TUNER`})]}),(0,f.jsxs)(`div`,{style:{display:`flex`,gap:8,alignItems:`center`},children:[(0,f.jsxs)(`button`,{className:`snap-header-btn ${n?`active`:``}`,onClick:()=>r(!0),title:`Snapshots`,children:[`📷`,o?.current_snapshot>0&&(0,f.jsx)(`span`,{className:`snap-header-num`,children:o.current_snapshot})]}),o?.cpu_percent!=null&&(0,f.jsxs)(`span`,{className:`mono`,style:{fontSize:9,color:p.textDim},children:[`CPU `,o.cpu_percent,`%`]}),o?.sample_rate&&(0,f.jsxs)(`span`,{className:`mono`,style:{fontSize:9,color:p.textDim},children:[o.sample_rate/1e3,`kHz`]}),o?.bypass&&(0,f.jsx)(`span`,{className:`badge badge-red`,style:{fontSize:8,padding:`1px 5px`},children:`BYP`}),o?.nam_loaded&&(0,f.jsx)(`span`,{className:`badge badge-blue`,style:{fontSize:8,padding:`1px 5px`},children:`NAM`}),o?.ir_loaded&&(0,f.jsx)(`span`,{className:`badge badge-green`,style:{fontSize:8,padding:`1px 5px`},children:`IR`})]})]}),(0,f.jsxs)(`div`,{style:{flex:1,overflow:`hidden`,display:`flex`,flexDirection:`column`},children:[e===`rig`&&(0,f.jsx)(re,{state:o,connected:s,refresh:c}),e===`fx`&&(0,f.jsx)(ae,{state:o,connected:s}),e===`models`&&(0,f.jsx)(oe,{state:o,connected:s,refresh:c}),e===`irs`&&(0,f.jsx)(se,{state:o,connected:s,refresh:c}),e===`presets`&&(0,f.jsx)(O,{state:o,connected:s,refresh:c}),e===`settings`&&(0,f.jsx)(k,{state:o,connected:s,refresh:c}),e===`record`&&(0,f.jsx)(ce,{state:o})]}),(0,f.jsx)(`div`,{className:`tabbar`,children:ue.map(n=>(0,f.jsxs)(`div`,{className:`tab ${e===n.id?`active`:``}`,onClick:()=>t(n.id),children:[(0,f.jsx)(`span`,{style:{fontSize:14,display:`block`},children:n.icon}),n.label]},n.id))}),n&&(0,f.jsx)(le,{onClose:()=>r(!1),state:o,connected:s})]})]})}(0,u.createRoot)(document.getElementById(`root`)).render((0,f.jsx)(l.StrictMode,{children:(0,f.jsx)(de,{})})); \ No newline at end of file diff --git a/src/web/ui-dist/assets/index-jhtO2NOz.js b/src/web/ui-dist/assets/index-jhtO2NOz.js new file mode 100644 index 0000000..c5260e5 --- /dev/null +++ b/src/web/ui-dist/assets/index-jhtO2NOz.js @@ -0,0 +1,35 @@ +var e=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports);(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),e.crossOrigin===`use-credentials`?t.credentials=`include`:e.crossOrigin===`anonymous`?t.credentials=`omit`:t.credentials=`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var t=e((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.portal`),r=Symbol.for(`react.fragment`),i=Symbol.for(`react.strict_mode`),a=Symbol.for(`react.profiler`),o=Symbol.for(`react.consumer`),s=Symbol.for(`react.context`),c=Symbol.for(`react.forward_ref`),l=Symbol.for(`react.suspense`),u=Symbol.for(`react.memo`),d=Symbol.for(`react.lazy`),f=Symbol.for(`react.activity`),p=Symbol.iterator;function m(e){return typeof e!=`object`||!e?null:(e=p&&e[p]||e[`@@iterator`],typeof e==`function`?e:null)}var h={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},g=Object.assign,_={};function v(e,t,n){this.props=e,this.context=t,this.refs=_,this.updater=n||h}v.prototype.isReactComponent={},v.prototype.setState=function(e,t){if(typeof e!=`object`&&typeof e!=`function`&&e!=null)throw Error(`takes an object of state variables to update or a function which returns an object of state variables.`);this.updater.enqueueSetState(this,e,t,`setState`)},v.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,`forceUpdate`)};function y(){}y.prototype=v.prototype;function b(e,t,n){this.props=e,this.context=t,this.refs=_,this.updater=n||h}var x=b.prototype=new y;x.constructor=b,g(x,v.prototype),x.isPureReactComponent=!0;var ee=Array.isArray;function S(){}var C={H:null,A:null,T:null,S:null},te=Object.prototype.hasOwnProperty;function ne(e,n,r){var i=r.ref;return{$$typeof:t,type:e,key:n,ref:i===void 0?null:i,props:r}}function re(e,t){return ne(e.type,t,e.props)}function w(e){return typeof e==`object`&&!!e&&e.$$typeof===t}function ie(e){var t={"=":`=0`,":":`=2`};return`$`+e.replace(/[=:]/g,function(e){return t[e]})}var ae=/\/+/g;function oe(e,t){return typeof e==`object`&&e&&e.key!=null?ie(``+e.key):t.toString(36)}function se(e){switch(e.status){case`fulfilled`:return e.value;case`rejected`:throw e.reason;default:switch(typeof e.status==`string`?e.then(S,S):(e.status=`pending`,e.then(function(t){e.status===`pending`&&(e.status=`fulfilled`,e.value=t)},function(t){e.status===`pending`&&(e.status=`rejected`,e.reason=t)})),e.status){case`fulfilled`:return e.value;case`rejected`:throw e.reason}}throw e}function ce(e,r,i,a,o){var s=typeof e;(s===`undefined`||s===`boolean`)&&(e=null);var c=!1;if(e===null)c=!0;else switch(s){case`bigint`:case`string`:case`number`:c=!0;break;case`object`:switch(e.$$typeof){case t:case n:c=!0;break;case d:return c=e._init,ce(c(e._payload),r,i,a,o)}}if(c)return o=o(e),c=a===``?`.`+oe(e,0):a,ee(o)?(i=``,c!=null&&(i=c.replace(ae,`$&/`)+`/`),ce(o,r,i,``,function(e){return e})):o!=null&&(w(o)&&(o=re(o,i+(o.key==null||e&&e.key===o.key?``:(``+o.key).replace(ae,`$&/`)+`/`)+c)),r.push(o)),1;c=0;var l=a===``?`.`:a+`:`;if(ee(e))for(var u=0;u{n.exports=t()})),r=e((e=>{function t(e,t){var n=e.length;e.push(t);a:for(;0>>1,a=e[r];if(0>>1;ri(c,n))li(u,c)?(e[r]=u,e[l]=n,r=l):(e[r]=c,e[s]=n,r=s);else if(li(u,n))e[r]=u,e[l]=n,r=l;else break a}}return t}function i(e,t){var n=e.sortIndex-t.sortIndex;return n===0?e.id-t.id:n}if(e.unstable_now=void 0,typeof performance==`object`&&typeof performance.now==`function`){var a=performance;e.unstable_now=function(){return a.now()}}else{var o=Date,s=o.now();e.unstable_now=function(){return o.now()-s}}var c=[],l=[],u=1,d=null,f=3,p=!1,m=!1,h=!1,g=!1,_=typeof setTimeout==`function`?setTimeout:null,v=typeof clearTimeout==`function`?clearTimeout:null,y=typeof setImmediate<`u`?setImmediate:null;function b(e){for(var i=n(l);i!==null;){if(i.callback===null)r(l);else if(i.startTime<=e)r(l),i.sortIndex=i.expirationTime,t(c,i);else break;i=n(l)}}function x(e){if(h=!1,b(e),!m)if(n(c)!==null)m=!0,ee||(ee=!0,w());else{var t=n(l);t!==null&&oe(x,t.startTime-e)}}var ee=!1,S=-1,C=5,te=-1;function ne(){return g?!0:!(e.unstable_now()-tet&&ne());){var o=d.callback;if(typeof o==`function`){d.callback=null,f=d.priorityLevel;var s=o(d.expirationTime<=t);if(t=e.unstable_now(),typeof s==`function`){d.callback=s,b(t),i=!0;break b}d===n(c)&&r(c),b(t)}else r(c);d=n(c)}if(d!==null)i=!0;else{var u=n(l);u!==null&&oe(x,u.startTime-t),i=!1}}break a}finally{d=null,f=a,p=!1}i=void 0}}finally{i?w():ee=!1}}}var w;if(typeof y==`function`)w=function(){y(re)};else if(typeof MessageChannel<`u`){var ie=new MessageChannel,ae=ie.port2;ie.port1.onmessage=re,w=function(){ae.postMessage(null)}}else w=function(){_(re,0)};function oe(t,n){S=_(function(){t(e.unstable_now())},n)}e.unstable_IdlePriority=5,e.unstable_ImmediatePriority=1,e.unstable_LowPriority=4,e.unstable_NormalPriority=3,e.unstable_Profiling=null,e.unstable_UserBlockingPriority=2,e.unstable_cancelCallback=function(e){e.callback=null},e.unstable_forceFrameRate=function(e){0>e||125o?(r.sortIndex=a,t(l,r),n(c)===null&&r===n(l)&&(h?(v(S),S=-1):h=!0,oe(x,a-o))):(r.sortIndex=s,t(c,r),m||p||(m=!0,ee||(ee=!0,w()))),r},e.unstable_shouldYield=ne,e.unstable_wrapCallback=function(e){var t=f;return function(){var n=f;f=t;try{return e.apply(this,arguments)}finally{f=n}}}})),i=e(((e,t)=>{t.exports=r()})),a=e((e=>{var t=n();function r(e){var t=`https://react.dev/errors/`+e;if(1{function n(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>`u`||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!=`function`))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(e){console.error(e)}}n(),t.exports=a()})),s=e((e=>{var t=i(),r=n(),a=o();function s(e){var t=`https://react.dev/errors/`+e;if(1pe||(e.current=fe[pe],fe[pe]=null,pe--)}function O(e,t){pe++,fe[pe]=e.current,e.current=t}var he=me(null),ge=me(null),_e=me(null),ve=me(null);function ye(e,t){switch(O(_e,t),O(ge,e),O(he,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?Vd(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)t=Vd(t),e=Hd(t,e);else switch(e){case`svg`:e=1;break;case`math`:e=2;break;default:e=0}}D(he),O(he,e)}function be(){D(he),D(ge),D(_e)}function xe(e){e.memoizedState!==null&&O(ve,e);var t=he.current,n=Hd(t,e.type);t!==n&&(O(ge,e),O(he,n))}function Se(e){ge.current===e&&(D(he),D(ge)),ve.current===e&&(D(ve),Qf._currentValue=de)}var Ce,we;function Te(e){if(Ce===void 0)try{throw Error()}catch(e){var t=e.stack.trim().match(/\n( *(at )?)/);Ce=t&&t[1]||``,we=-1)`:-1i||c[r]!==l[i]){var u=` +`+c[r].replace(` at new `,` at `);return e.displayName&&u.includes(``)&&(u=u.replace(``,e.displayName)),u}while(1<=r&&0<=i);break}}}finally{Ee=!1,Error.prepareStackTrace=n}return(n=e?e.displayName||e.name:``)?Te(n):``}function Oe(e,t){switch(e.tag){case 26:case 27:case 5:return Te(e.type);case 16:return Te(`Lazy`);case 13:return e.child!==t&&t!==null?Te(`Suspense Fallback`):Te(`Suspense`);case 19:return Te(`SuspenseList`);case 0:case 15:return De(e.type,!1);case 11:return De(e.type.render,!1);case 1:return De(e.type,!0);case 31:return Te(`Activity`);default:return``}}function ke(e){try{var t=``,n=null;do t+=Oe(e,n),n=e,e=e.return;while(e);return t}catch(e){return` +Error generating stack: `+e.message+` +`+e.stack}}var Ae=Object.prototype.hasOwnProperty,je=t.unstable_scheduleCallback,Me=t.unstable_cancelCallback,Ne=t.unstable_shouldYield,Pe=t.unstable_requestPaint,Fe=t.unstable_now,Ie=t.unstable_getCurrentPriorityLevel,Le=t.unstable_ImmediatePriority,Re=t.unstable_UserBlockingPriority,ze=t.unstable_NormalPriority,Be=t.unstable_LowPriority,Ve=t.unstable_IdlePriority,He=t.log,Ue=t.unstable_setDisableYieldValue,We=null,Ge=null;function Ke(e){if(typeof He==`function`&&Ue(e),Ge&&typeof Ge.setStrictMode==`function`)try{Ge.setStrictMode(We,e)}catch{}}var qe=Math.clz32?Math.clz32:Xe,Je=Math.log,Ye=Math.LN2;function Xe(e){return e>>>=0,e===0?32:31-(Je(e)/Ye|0)|0}var Ze=256,Qe=262144,$e=4194304;function et(e){var t=e&42;if(t!==0)return t;switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return e&261888;case 262144:case 524288:case 1048576:case 2097152:return e&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return e&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return e}}function tt(e,t,n){var r=e.pendingLanes;if(r===0)return 0;var i=0,a=e.suspendedLanes,o=e.pingedLanes;e=e.warmLanes;var s=r&134217727;return s===0?(s=r&~a,s===0?o===0?n||(n=r&~e,n!==0&&(i=et(n))):i=et(o):i=et(s)):(r=s&~a,r===0?(o&=s,o===0?n||(n=s&~e,n!==0&&(i=et(n))):i=et(o)):i=et(r)),i===0?0:t!==0&&t!==i&&(t&a)===0&&(a=i&-i,n=t&-t,a>=n||a===32&&n&4194048)?t:i}function nt(e,t){return(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)===0}function rt(e,t){switch(e){case 1:case 2:case 4:case 8:case 64:return t+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function it(){var e=$e;return $e<<=1,!($e&62914560)&&($e=4194304),e}function at(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function ot(e,t){e.pendingLanes|=t,t!==268435456&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function st(e,t,n,r,i,a){var o=e.pendingLanes;e.pendingLanes=n,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=n,e.entangledLanes&=n,e.errorRecoveryDisabledLanes&=n,e.shellSuspendCounter=0;var s=e.entanglements,c=e.expirationTimes,l=e.hiddenUpdates;for(n=o&~n;0`u`||window.document===void 0||window.document.createElement===void 0),yn=!1;if(vn)try{var bn={};Object.defineProperty(bn,"passive",{get:function(){yn=!0}}),window.addEventListener(`test`,bn,bn),window.removeEventListener(`test`,bn,bn)}catch{yn=!1}var xn=null,Sn=null,Cn=null;function wn(){if(Cn)return Cn;var e,t=Sn,n=t.length,r,i=`value`in xn?xn.value:xn.textContent,a=i.length;for(e=0;e=nr),ar=` `,or=!1;function sr(e,t){switch(e){case`keyup`:return er.indexOf(t.keyCode)!==-1;case`keydown`:return t.keyCode!==229;case`keypress`:case`mousedown`:case`focusout`:return!0;default:return!1}}function cr(e){return e=e.detail,typeof e==`object`&&`data`in e?e.data:null}var lr=!1;function ur(e,t){switch(e){case`compositionend`:return cr(t);case`keypress`:return t.which===32?(or=!0,ar):null;case`textInput`:return e=t.data,e===ar&&or?null:e;default:return null}}function dr(e,t){if(lr)return e===`compositionend`||!tr&&sr(e,t)?(e=wn(),Cn=Sn=xn=null,lr=!1,e):null;switch(e){case`paste`:return null;case`keypress`:if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:n,offset:t-e};e=r}a:{for(;n;){if(n.nextSibling){n=n.nextSibling;break a}n=n.parentNode}n=void 0}n=Nr(n)}}function Fr(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?Fr(e,t.parentNode):`contains`in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function Ir(e){e=e!=null&&e.ownerDocument!=null&&e.ownerDocument.defaultView!=null?e.ownerDocument.defaultView:window;for(var t=Gt(e.document);t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href==`string`}catch{n=!1}if(n)e=t.contentWindow;else break;t=Gt(e.document)}return t}function Lr(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t===`input`&&(e.type===`text`||e.type===`search`||e.type===`tel`||e.type===`url`||e.type===`password`)||t===`textarea`||e.contentEditable===`true`)}var Rr=vn&&`documentMode`in document&&11>=document.documentMode,zr=null,Br=null,Vr=null,Hr=!1;function Ur(e,t,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;Hr||zr==null||zr!==Gt(r)||(r=zr,`selectionStart`in r&&Lr(r)?r={start:r.selectionStart,end:r.selectionEnd}:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection(),r={anchorNode:r.anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset}),Vr&&Mr(Vr,r)||(Vr=r,r=Ed(Br,`onSelect`),0>=o,i-=o,Fi=1<<32-qe(t)+i|n<h?(g=d,d=null):g=d.sibling;var _=p(i,d,s[h],c);if(_===null){d===null&&(d=g);break}e&&d&&_.alternate===null&&t(i,d),o=a(_,o,h),u===null?l=_:u.sibling=_,u=_,d=g}if(h===s.length)return n(i,d),j&&Li(i,h),l;if(d===null){for(;hg?(_=h,h=null):_=h.sibling;var y=p(i,h,v.value,l);if(y===null){h===null&&(h=_);break}e&&h&&y.alternate===null&&t(i,h),o=a(y,o,g),d===null?u=y:d.sibling=y,d=y,h=_}if(v.done)return n(i,h),j&&Li(i,g),u;if(h===null){for(;!v.done;g++,v=c.next())v=f(i,v.value,l),v!==null&&(o=a(v,o,g),d===null?u=v:d.sibling=v,d=v);return j&&Li(i,g),u}for(h=r(h);!v.done;g++,v=c.next())v=m(h,i,g,v.value,l),v!==null&&(e&&v.alternate!==null&&h.delete(v.key===null?g:v.key),o=a(v,o,g),d===null?u=v:d.sibling=v,d=v);return e&&h.forEach(function(e){return t(i,e)}),j&&Li(i,g),u}function b(e,r,a,c){if(typeof a==`object`&&a&&a.type===y&&a.key===null&&(a=a.props.children),typeof a==`object`&&a){switch(a.$$typeof){case _:a:{for(var l=a.key;r!==null;){if(r.key===l){if(l=a.type,l===y){if(r.tag===7){n(e,r.sibling),c=i(r,a.props.children),c.return=e,e=c;break a}}else if(r.elementType===l||typeof l==`object`&&l&&l.$$typeof===w&&Fa(l)===r.type){n(e,r.sibling),c=i(r,a.props),Ha(c,a),c.return=e,e=c;break a}n(e,r);break}else t(e,r);r=r.sibling}a.type===y?(c=Si(a.props.children,e.mode,c,a.key),c.return=e,e=c):(c=xi(a.type,a.key,a.props,null,e.mode,c),Ha(c,a),c.return=e,e=c)}return o(e);case v:a:{for(l=a.key;r!==null;){if(r.key===l)if(r.tag===4&&r.stateNode.containerInfo===a.containerInfo&&r.stateNode.implementation===a.implementation){n(e,r.sibling),c=i(r,a.children||[]),c.return=e,e=c;break a}else{n(e,r);break}else t(e,r);r=r.sibling}c=Ti(a,e.mode,c),c.return=e,e=c}return o(e);case w:return a=Fa(a),b(e,r,a,c)}if(ue(a))return h(e,r,a,c);if(se(a)){if(l=se(a),typeof l!=`function`)throw Error(s(150));return a=l.call(a),g(e,r,a,c)}if(typeof a.then==`function`)return b(e,r,Va(a),c);if(a.$$typeof===S)return b(e,r,ua(e,a),c);Ua(e,a)}return typeof a==`string`&&a!==``||typeof a==`number`||typeof a==`bigint`?(a=``+a,r!==null&&r.tag===6?(n(e,r.sibling),c=i(r,a),c.return=e,e=c):(n(e,r),c=Ci(a,e.mode,c),c.return=e,e=c),o(e)):n(e,r)}return function(e,t,n,r){try{Ba=0;var i=b(e,t,n,r);return za=null,i}catch(t){if(t===ka||t===ja)throw t;var a=_i(29,t,null,e.mode);return a.lanes=r,a.return=e,a}}}var Ga=Wa(!0),Ka=Wa(!1),qa=!1;function Ja(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function Ya(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,callbacks:null})}function Xa(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function Za(e,t,n){var r=e.updateQueue;if(r===null)return null;if(r=r.shared,W&2){var i=r.pending;return i===null?t.next=t:(t.next=i.next,i.next=t),r.pending=t,t=mi(e),pi(e,null,n),t}return ui(e,r,t,n),mi(e)}function Qa(e,t,n){if(t=t.updateQueue,t!==null&&(t=t.shared,n&4194048)){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,lt(e,n)}}function $a(e,t){var n=e.updateQueue,r=e.alternate;if(r!==null&&(r=r.updateQueue,n===r)){var i=null,a=null;if(n=n.firstBaseUpdate,n!==null){do{var o={lane:n.lane,tag:n.tag,payload:n.payload,callback:null,next:null};a===null?i=a=o:a=a.next=o,n=n.next}while(n!==null);a===null?i=a=t:a=a.next=t}else i=a=t;n={baseState:r.baseState,firstBaseUpdate:i,lastBaseUpdate:a,shared:r.shared,callbacks:r.callbacks},e.updateQueue=n;return}e=n.lastBaseUpdate,e===null?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}var eo=!1;function to(){if(eo){var e=ba;if(e!==null)throw e}}function no(e,t,n,r){eo=!1;var i=e.updateQueue;qa=!1;var a=i.firstBaseUpdate,o=i.lastBaseUpdate,s=i.shared.pending;if(s!==null){i.shared.pending=null;var c=s,l=c.next;c.next=null,o===null?a=l:o.next=l,o=c;var u=e.alternate;u!==null&&(u=u.updateQueue,s=u.lastBaseUpdate,s!==o&&(s===null?u.firstBaseUpdate=l:s.next=l,u.lastBaseUpdate=c))}if(a!==null){var d=i.baseState;o=0,u=l=c=null,s=a;do{var f=s.lane&-536870913,p=f!==s.lane;if(p?(q&f)===f:(r&f)===f){f!==0&&f===ya&&(eo=!0),u!==null&&(u=u.next={lane:0,tag:s.tag,payload:s.payload,callback:null,next:null});a:{var m=e,g=s;f=t;var _=n;switch(g.tag){case 1:if(m=g.payload,typeof m==`function`){d=m.call(_,d,f);break a}d=m;break a;case 3:m.flags=m.flags&-65537|128;case 0:if(m=g.payload,f=typeof m==`function`?m.call(_,d,f):m,f==null)break a;d=h({},d,f);break a;case 2:qa=!0}}f=s.callback,f!==null&&(e.flags|=64,p&&(e.flags|=8192),p=i.callbacks,p===null?i.callbacks=[f]:p.push(f))}else p={lane:f,tag:s.tag,payload:s.payload,callback:s.callback,next:null},u===null?(l=u=p,c=d):u=u.next=p,o|=f;if(s=s.next,s===null){if(s=i.shared.pending,s===null)break;p=s,s=p.next,p.next=null,i.lastBaseUpdate=p,i.shared.pending=null}}while(1);u===null&&(c=d),i.baseState=c,i.firstBaseUpdate=l,i.lastBaseUpdate=u,a===null&&(i.shared.lanes=0),Kl|=o,e.lanes=o,e.memoizedState=d}}function ro(e,t){if(typeof e!=`function`)throw Error(s(191,e));e.call(t)}function io(e,t){var n=e.callbacks;if(n!==null)for(e.callbacks=null,e=0;ea?a:8;var o=T.T,s={};T.T=s,zs(e,!1,t,n);try{var c=i(),l=T.S;l!==null&&l(s,c),typeof c==`object`&&c&&typeof c.then==`function`?Rs(e,t,Ca(c,r),pu(e)):Rs(e,t,r,pu(e))}catch(n){Rs(e,t,{then:function(){},status:`rejected`,reason:n},pu())}finally{E.p=a,o!==null&&s.types!==null&&(o.types=s.types),T.T=o}}function Os(){}function ks(e,t,n,r){if(e.tag!==5)throw Error(s(476));var i=As(e).queue;Ds(e,i,t,de,n===null?Os:function(){return js(e),n(r)})}function As(e){var t=e.memoizedState;if(t!==null)return t;t={memoizedState:de,baseState:de,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Bo,lastRenderedState:de},next:null};var n={};return t.next={memoizedState:n,baseState:n,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Bo,lastRenderedState:n},next:null},e.memoizedState=t,e=e.alternate,e!==null&&(e.memoizedState=t),t}function js(e){var t=As(e);t.next===null&&(t=e.alternate.memoizedState),Rs(e,t.next.queue,{},pu())}function Ms(){return la(Qf)}function Ns(){return R().memoizedState}function Ps(){return R().memoizedState}function Fs(e){for(var t=e.return;t!==null;){switch(t.tag){case 24:case 3:var n=pu();e=Xa(n);var r=Za(t,e,n);r!==null&&(hu(r,t,n),Qa(r,t,n)),t={cache:ha()},e.payload=t;return}t=t.return}}function Is(e,t,n){var r=pu();n={lane:r,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null},Bs(e)?Vs(t,n):(n=di(e,t,n,r),n!==null&&(hu(n,e,r),Hs(n,t,r)))}function Ls(e,t,n){Rs(e,t,n,pu())}function Rs(e,t,n,r){var i={lane:r,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null};if(Bs(e))Vs(t,i);else{var a=e.alternate;if(e.lanes===0&&(a===null||a.lanes===0)&&(a=t.lastRenderedReducer,a!==null))try{var o=t.lastRenderedState,s=a(o,n);if(i.hasEagerState=!0,i.eagerState=s,jr(s,o))return ui(e,t,i,0),G===null&&li(),!1}catch{}if(n=di(e,t,i,r),n!==null)return hu(n,e,r),Hs(n,t,r),!0}return!1}function zs(e,t,n,r){if(r={lane:2,revertLane:dd(),gesture:null,action:r,hasEagerState:!1,eagerState:null,next:null},Bs(e)){if(t)throw Error(s(479))}else t=di(e,n,r,2),t!==null&&hu(t,e,2)}function Bs(e){var t=e.alternate;return e===P||t!==null&&t===P}function Vs(e,t){xo=bo=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function Hs(e,t,n){if(n&4194048){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,lt(e,n)}}var Us={readContext:la,use:Ro,useCallback:L,useContext:L,useEffect:L,useImperativeHandle:L,useLayoutEffect:L,useInsertionEffect:L,useMemo:L,useReducer:L,useRef:L,useState:L,useDebugValue:L,useDeferredValue:L,useTransition:L,useSyncExternalStore:L,useId:L,useHostTransitionStatus:L,useFormState:L,useActionState:L,useOptimistic:L,useMemoCache:L,useCacheRefresh:L};Us.useEffectEvent=L;var Ws={readContext:la,use:Ro,useCallback:function(e,t){return Fo().memoizedState=[e,t===void 0?null:t],e},useContext:la,useEffect:ms,useImperativeHandle:function(e,t,n){n=n==null?null:n.concat([e]),fs(4194308,4,bs.bind(null,t,e),n)},useLayoutEffect:function(e,t){return fs(4194308,4,e,t)},useInsertionEffect:function(e,t){fs(4,2,e,t)},useMemo:function(e,t){var n=Fo();t=t===void 0?null:t;var r=e();if(So){Ke(!0);try{e()}finally{Ke(!1)}}return n.memoizedState=[r,t],r},useReducer:function(e,t,n){var r=Fo();if(n!==void 0){var i=n(t);if(So){Ke(!0);try{n(t)}finally{Ke(!1)}}}else i=t;return r.memoizedState=r.baseState=i,e={pending:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:i},r.queue=e,e=e.dispatch=Is.bind(null,P,e),[r.memoizedState,e]},useRef:function(e){var t=Fo();return e={current:e},t.memoizedState=e},useState:function(e){e=Xo(e);var t=e.queue,n=Ls.bind(null,P,t);return t.dispatch=n,[e.memoizedState,n]},useDebugValue:Ss,useDeferredValue:function(e,t){return Ts(Fo(),e,t)},useTransition:function(){var e=Xo(!1);return e=Ds.bind(null,P,e.queue,!0,!1),Fo().memoizedState=e,[!1,e]},useSyncExternalStore:function(e,t,n){var r=P,i=Fo();if(j){if(n===void 0)throw Error(s(407));n=n()}else{if(n=t(),G===null)throw Error(s(349));q&127||Go(r,t,n)}i.memoizedState=n;var a={value:n,getSnapshot:t};return i.queue=a,ms(qo.bind(null,r,a,e),[e]),r.flags|=2048,us(9,{destroy:void 0},Ko.bind(null,r,a,n,t),null),n},useId:function(){var e=Fo(),t=G.identifierPrefix;if(j){var n=Ii,r=Fi;n=(r&~(1<<32-qe(r)-1)).toString(32)+n,t=`_`+t+`R_`+n,n=Co++,0<\/script>`,a=a.removeChild(a.firstChild);break;case`select`:a=typeof r.is==`string`?o.createElement(`select`,{is:r.is}):o.createElement(`select`),r.multiple?a.multiple=!0:r.size&&(a.size=r.size);break;default:a=typeof r.is==`string`?o.createElement(i,{is:r.is}):o.createElement(i)}}a[gt]=t,a[_t]=r;a:for(o=t.child;o!==null;){if(o.tag===5||o.tag===6)a.appendChild(o.stateNode);else if(o.tag!==4&&o.tag!==27&&o.child!==null){o.child.return=o,o=o.child;continue}if(o===t)break a;for(;o.sibling===null;){if(o.return===null||o.return===t)break a;o=o.return}o.sibling.return=o.return,o=o.sibling}t.stateNode=a;a:switch(Pd(a,i,r),i){case`button`:case`input`:case`select`:case`textarea`:r=!!r.autoFocus;break a;case`img`:r=!0;break a;default:r=!1}r&&Lc(t)}}return B(t),Rc(t,t.type,e===null?null:e.memoizedProps,t.pendingProps,n),null;case 6:if(e&&t.stateNode!=null)e.memoizedProps!==r&&Lc(t);else{if(typeof r!=`string`&&t.stateNode===null)throw Error(s(166));if(e=_e.current,Yi(t)){if(e=t.stateNode,n=t.memoizedProps,r=null,i=Hi,i!==null)switch(i.tag){case 27:case 5:r=i.memoizedProps}e[gt]=t,e=!!(e.nodeValue===n||r!==null&&!0===r.suppressHydrationWarning||Md(e.nodeValue,n)),e||Ki(t,!0)}else e=Bd(e).createTextNode(r),e[gt]=t,t.stateNode=e}return B(t),null;case 31:if(n=t.memoizedState,e===null||e.memoizedState!==null){if(r=Yi(t),n!==null){if(e===null){if(!r)throw Error(s(318));if(e=t.memoizedState,e=e===null?null:e.dehydrated,!e)throw Error(s(557));e[gt]=t}else Xi(),!(t.flags&128)&&(t.memoizedState=null),t.flags|=4;B(t),e=!1}else n=Zi(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=n),e=!0;if(!e)return t.flags&256?(_o(t),t):(_o(t),null);if(t.flags&128)throw Error(s(558))}return B(t),null;case 13:if(r=t.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if(i=Yi(t),r!==null&&r.dehydrated!==null){if(e===null){if(!i)throw Error(s(318));if(i=t.memoizedState,i=i===null?null:i.dehydrated,!i)throw Error(s(317));i[gt]=t}else Xi(),!(t.flags&128)&&(t.memoizedState=null),t.flags|=4;B(t),i=!1}else i=Zi(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=i),i=!0;if(!i)return t.flags&256?(_o(t),t):(_o(t),null)}return _o(t),t.flags&128?(t.lanes=n,t):(n=r!==null,e=e!==null&&e.memoizedState!==null,n&&(r=t.child,i=null,r.alternate!==null&&r.alternate.memoizedState!==null&&r.alternate.memoizedState.cachePool!==null&&(i=r.alternate.memoizedState.cachePool.pool),a=null,r.memoizedState!==null&&r.memoizedState.cachePool!==null&&(a=r.memoizedState.cachePool.pool),a!==i&&(r.flags|=2048)),n!==e&&n&&(t.child.flags|=8192),Bc(t,t.updateQueue),B(t),null);case 4:return be(),e===null&&Sd(t.stateNode.containerInfo),B(t),null;case 10:return ra(t.type),B(t),null;case 19:if(D(N),r=t.memoizedState,r===null)return B(t),null;if(i=(t.flags&128)!=0,a=r.rendering,a===null)if(i)Vc(r,!1);else{if(Y!==0||e!==null&&e.flags&128)for(e=t.child;e!==null;){if(a=vo(e),a!==null){for(t.flags|=128,Vc(r,!1),e=a.updateQueue,t.updateQueue=e,Bc(t,e),t.subtreeFlags=0,e=n,n=t.child;n!==null;)bi(n,e),n=n.sibling;return O(N,N.current&1|2),j&&Li(t,r.treeForkCount),t.child}e=e.sibling}r.tail!==null&&Fe()>nu&&(t.flags|=128,i=!0,Vc(r,!1),t.lanes=4194304)}else{if(!i)if(e=vo(a),e!==null){if(t.flags|=128,i=!0,e=e.updateQueue,t.updateQueue=e,Bc(t,e),Vc(r,!0),r.tail===null&&r.tailMode===`hidden`&&!a.alternate&&!j)return B(t),null}else 2*Fe()-r.renderingStartTime>nu&&n!==536870912&&(t.flags|=128,i=!0,Vc(r,!1),t.lanes=4194304);r.isBackwards?(a.sibling=t.child,t.child=a):(e=r.last,e===null?t.child=a:e.sibling=a,r.last=a)}return r.tail===null?(B(t),null):(e=r.tail,r.rendering=e,r.tail=e.sibling,r.renderingStartTime=Fe(),e.sibling=null,n=N.current,O(N,i?n&1|2:n&1),j&&Li(t,r.treeForkCount),e);case 22:case 23:return _o(t),lo(),r=t.memoizedState!==null,e===null?r&&(t.flags|=8192):e.memoizedState!==null!==r&&(t.flags|=8192),r?n&536870912&&!(t.flags&128)&&(B(t),t.subtreeFlags&6&&(t.flags|=8192)):B(t),n=t.updateQueue,n!==null&&Bc(t,n.retryQueue),n=null,e!==null&&e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(n=e.memoizedState.cachePool.pool),r=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(r=t.memoizedState.cachePool.pool),r!==n&&(t.flags|=2048),e!==null&&D(Ta),null;case 24:return n=null,e!==null&&(n=e.memoizedState.cache),t.memoizedState.cache!==n&&(t.flags|=2048),ra(M),B(t),null;case 25:return null;case 30:return null}throw Error(s(156,t.tag))}function Uc(e,t){switch(Bi(t),t.tag){case 1:return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return ra(M),be(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 26:case 27:case 5:return Se(t),null;case 31:if(t.memoizedState!==null){if(_o(t),t.alternate===null)throw Error(s(340));Xi()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 13:if(_o(t),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(s(340));Xi()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return D(N),null;case 4:return be(),null;case 10:return ra(t.type),null;case 22:case 23:return _o(t),lo(),e!==null&&D(Ta),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 24:return ra(M),null;case 25:return null;default:return null}}function Wc(e,t){switch(Bi(t),t.tag){case 3:ra(M),be();break;case 26:case 27:case 5:Se(t);break;case 4:be();break;case 31:t.memoizedState!==null&&_o(t);break;case 13:_o(t);break;case 19:D(N);break;case 10:ra(t.type);break;case 22:case 23:_o(t),lo(),e!==null&&D(Ta);break;case 24:ra(M)}}function Gc(e,t){try{var n=t.updateQueue,r=n===null?null:n.lastEffect;if(r!==null){var i=r.next;n=i;do{if((n.tag&e)===e){r=void 0;var a=n.create,o=n.inst;r=a(),o.destroy=r}n=n.next}while(n!==i)}}catch(e){Z(t,t.return,e)}}function Kc(e,t,n){try{var r=t.updateQueue,i=r===null?null:r.lastEffect;if(i!==null){var a=i.next;r=a;do{if((r.tag&e)===e){var o=r.inst,s=o.destroy;if(s!==void 0){o.destroy=void 0,i=t;var c=n,l=s;try{l()}catch(e){Z(i,c,e)}}}r=r.next}while(r!==a)}}catch(e){Z(t,t.return,e)}}function qc(e){var t=e.updateQueue;if(t!==null){var n=e.stateNode;try{io(t,n)}catch(t){Z(e,e.return,t)}}}function Jc(e,t,n){n.props=Zs(e.type,e.memoizedProps),n.state=e.memoizedState;try{n.componentWillUnmount()}catch(n){Z(e,t,n)}}function Yc(e,t){try{var n=e.ref;if(n!==null){switch(e.tag){case 26:case 27:case 5:var r=e.stateNode;break;case 30:r=e.stateNode;break;default:r=e.stateNode}typeof n==`function`?e.refCleanup=n(r):n.current=r}}catch(n){Z(e,t,n)}}function Xc(e,t){var n=e.ref,r=e.refCleanup;if(n!==null)if(typeof r==`function`)try{r()}catch(n){Z(e,t,n)}finally{e.refCleanup=null,e=e.alternate,e!=null&&(e.refCleanup=null)}else if(typeof n==`function`)try{n(null)}catch(n){Z(e,t,n)}else n.current=null}function Zc(e){var t=e.type,n=e.memoizedProps,r=e.stateNode;try{a:switch(t){case`button`:case`input`:case`select`:case`textarea`:n.autoFocus&&r.focus();break a;case`img`:n.src?r.src=n.src:n.srcSet&&(r.srcset=n.srcSet)}}catch(t){Z(e,e.return,t)}}function Qc(e,t,n){try{var r=e.stateNode;Fd(r,e.type,n,t),r[_t]=t}catch(t){Z(e,e.return,t)}}function $c(e){return e.tag===5||e.tag===3||e.tag===26||e.tag===27&&Zd(e.type)||e.tag===4}function el(e){a:for(;;){for(;e.sibling===null;){if(e.return===null||$c(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.tag===27&&Zd(e.type)||e.flags&2||e.child===null||e.tag===4)continue a;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function tl(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?(n.nodeType===9?n.body:n.nodeName===`HTML`?n.ownerDocument.body:n).insertBefore(e,t):(t=n.nodeType===9?n.body:n.nodeName===`HTML`?n.ownerDocument.body:n,t.appendChild(e),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=ln));else if(r!==4&&(r===27&&Zd(e.type)&&(n=e.stateNode,t=null),e=e.child,e!==null))for(tl(e,t,n),e=e.sibling;e!==null;)tl(e,t,n),e=e.sibling}function nl(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(r!==4&&(r===27&&Zd(e.type)&&(n=e.stateNode),e=e.child,e!==null))for(nl(e,t,n),e=e.sibling;e!==null;)nl(e,t,n),e=e.sibling}function rl(e){var t=e.stateNode,n=e.memoizedProps;try{for(var r=e.type,i=t.attributes;i.length;)t.removeAttributeNode(i[0]);Pd(t,r,n),t[gt]=e,t[_t]=n}catch(t){Z(e,e.return,t)}}var il=!1,V=!1,al=!1,ol=typeof WeakSet==`function`?WeakSet:Set,H=null;function sl(e,t){if(e=e.containerInfo,Rd=sp,e=Ir(e),Lr(e)){if(`selectionStart`in e)var n={start:e.selectionStart,end:e.selectionEnd};else a:{n=(n=e.ownerDocument)&&n.defaultView||window;var r=n.getSelection&&n.getSelection();if(r&&r.rangeCount!==0){n=r.anchorNode;var i=r.anchorOffset,a=r.focusNode;r=r.focusOffset;try{n.nodeType,a.nodeType}catch{n=null;break a}var o=0,c=-1,l=-1,u=0,d=0,f=e,p=null;b:for(;;){for(var m;f!==n||i!==0&&f.nodeType!==3||(c=o+i),f!==a||r!==0&&f.nodeType!==3||(l=o+r),f.nodeType===3&&(o+=f.nodeValue.length),(m=f.firstChild)!==null;)p=f,f=m;for(;;){if(f===e)break b;if(p===n&&++u===i&&(c=o),p===a&&++d===r&&(l=o),(m=f.nextSibling)!==null)break;f=p,p=f.parentNode}f=m}n=c===-1||l===-1?null:{start:c,end:l}}else n=null}n||={start:0,end:0}}else n=null;for(zd={focusedElem:e,selectionRange:n},sp=!1,H=t;H!==null;)if(t=H,e=t.child,t.subtreeFlags&1028&&e!==null)e.return=t,H=e;else for(;H!==null;){switch(t=H,a=t.alternate,e=t.flags,t.tag){case 0:if(e&4&&(e=t.updateQueue,e=e===null?null:e.events,e!==null))for(n=0;n title`))),Pd(a,r,n),a[gt]=e,k(a),r=a;break a;case`link`:var o=Vf(`link`,`href`,i).get(r+(n.href||``));if(o){for(var c=0;cg&&(o=g,g=h,h=o);var _=Pr(s,h),v=Pr(s,g);if(_&&v&&(p.rangeCount!==1||p.anchorNode!==_.node||p.anchorOffset!==_.offset||p.focusNode!==v.node||p.focusOffset!==v.offset)){var y=d.createRange();y.setStart(_.node,_.offset),p.removeAllRanges(),h>g?(p.addRange(y),p.extend(v.node,v.offset)):(y.setEnd(v.node,v.offset),p.addRange(y))}}}}for(d=[],p=s;p=p.parentNode;)p.nodeType===1&&d.push({element:p,left:p.scrollLeft,top:p.scrollTop});for(typeof s.focus==`function`&&s.focus(),s=0;sn?32:n,T.T=null,n=lu,lu=null;var a=au,o=su;if(X=0,ou=au=null,su=0,W&6)throw Error(s(331));var c=W;if(W|=4,Il(a.current),Ol(a,a.current,o,n),W=c,id(0,!1),Ge&&typeof Ge.onPostCommitFiberRoot==`function`)try{Ge.onPostCommitFiberRoot(We,a)}catch{}return!0}finally{E.p=i,T.T=r,Vu(e,t)}}function Wu(e,t,n){t=Di(n,t),t=rc(e.stateNode,t,2),e=Za(e,t,2),e!==null&&(ot(e,2),rd(e))}function Z(e,t,n){if(e.tag===3)Wu(e,e,n);else for(;t!==null;){if(t.tag===3){Wu(t,e,n);break}else if(t.tag===1){var r=t.stateNode;if(typeof t.type.getDerivedStateFromError==`function`||typeof r.componentDidCatch==`function`&&(iu===null||!iu.has(r))){e=Di(n,e),n=ic(2),r=Za(t,n,2),r!==null&&(ac(n,r,t,e),ot(r,2),rd(r));break}}t=t.return}}function Gu(e,t,n){var r=e.pingCache;if(r===null){r=e.pingCache=new Bl;var i=new Set;r.set(t,i)}else i=r.get(t),i===void 0&&(i=new Set,r.set(t,i));i.has(n)||(Wl=!0,i.add(n),e=Ku.bind(null,e,t,n),t.then(e,e))}function Ku(e,t,n){var r=e.pingCache;r!==null&&r.delete(t),e.pingedLanes|=e.suspendedLanes&n,e.warmLanes&=~n,G===e&&(q&n)===n&&(Y===4||Y===3&&(q&62914560)===q&&300>Fe()-eu?!(W&2)&&Su(e,0):Jl|=n,Xl===q&&(Xl=0)),rd(e)}function qu(e,t){t===0&&(t=it()),e=fi(e,t),e!==null&&(ot(e,t),rd(e))}function Ju(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),qu(e,n)}function Yu(e,t){var n=0;switch(e.tag){case 31:case 13:var r=e.stateNode,i=e.memoizedState;i!==null&&(n=i.retryLane);break;case 19:r=e.stateNode;break;case 22:r=e.stateNode._retryCache;break;default:throw Error(s(314))}r!==null&&r.delete(t),qu(e,n)}function Xu(e,t){return je(e,t)}var Zu=null,Qu=null,$u=!1,ed=!1,td=!1,nd=0;function rd(e){e!==Qu&&e.next===null&&(Qu===null?Zu=Qu=e:Qu=Qu.next=e),ed=!0,$u||($u=!0,ud())}function id(e,t){if(!td&&ed){td=!0;do for(var n=!1,r=Zu;r!==null;){if(!t)if(e!==0){var i=r.pendingLanes;if(i===0)var a=0;else{var o=r.suspendedLanes,s=r.pingedLanes;a=(1<<31-qe(42|e)+1)-1,a&=i&~(o&~s),a=a&201326741?a&201326741|1:a?a|2:0}a!==0&&(n=!0,ld(r,a))}else a=q,a=tt(r,r===G?a:0,r.cancelPendingCommit!==null||r.timeoutHandle!==-1),!(a&3)||nt(r,a)||(n=!0,ld(r,a));r=r.next}while(n);td=!1}}function ad(){od()}function od(){ed=$u=!1;var e=0;nd!==0&&Gd()&&(e=nd);for(var t=Fe(),n=null,r=Zu;r!==null;){var i=r.next,a=sd(r,t);a===0?(r.next=null,n===null?Zu=i:n.next=i,i===null&&(Qu=n)):(n=r,(e!==0||a&3)&&(ed=!0)),r=i}X!==0&&X!==5||id(e,!1),nd!==0&&(nd=0)}function sd(e,t){for(var n=e.suspendedLanes,r=e.pingedLanes,i=e.expirationTimes,a=e.pendingLanes&-62914561;0s)break;var u=c.transferSize,d=c.initiatorType;u&&Id(d)&&(c=c.responseEnd,o+=u*(c`u`?null:document;function xf(e,t,n){var r=bf;if(r&&typeof t==`string`&&t){var i=qt(t);i=`link[rel="`+e+`"][href="`+i+`"]`,typeof n==`string`&&(i+=`[crossorigin="`+n+`"]`),hf.has(i)||(hf.add(i),e={rel:e,crossOrigin:n,href:t},r.querySelector(i)===null&&(t=r.createElement(`link`),Pd(t,`link`,e),k(t),r.head.appendChild(t)))}}function Sf(e){_f.D(e),xf(`dns-prefetch`,e,null)}function Cf(e,t){_f.C(e,t),xf(`preconnect`,e,t)}function wf(e,t,n){_f.L(e,t,n);var r=bf;if(r&&e&&t){var i=`link[rel="preload"][as="`+qt(t)+`"]`;t===`image`&&n&&n.imageSrcSet?(i+=`[imagesrcset="`+qt(n.imageSrcSet)+`"]`,typeof n.imageSizes==`string`&&(i+=`[imagesizes="`+qt(n.imageSizes)+`"]`)):i+=`[href="`+qt(e)+`"]`;var a=i;switch(t){case`style`:a=Af(e);break;case`script`:a=Pf(e)}mf.has(a)||(e=h({rel:`preload`,href:t===`image`&&n&&n.imageSrcSet?void 0:e,as:t},n),mf.set(a,e),r.querySelector(i)!==null||t===`style`&&r.querySelector(jf(a))||t===`script`&&r.querySelector(Ff(a))||(t=r.createElement(`link`),Pd(t,`link`,e),k(t),r.head.appendChild(t)))}}function Tf(e,t){_f.m(e,t);var n=bf;if(n&&e){var r=t&&typeof t.as==`string`?t.as:`script`,i=`link[rel="modulepreload"][as="`+qt(r)+`"][href="`+qt(e)+`"]`,a=i;switch(r){case`audioworklet`:case`paintworklet`:case`serviceworker`:case`sharedworker`:case`worker`:case`script`:a=Pf(e)}if(!mf.has(a)&&(e=h({rel:`modulepreload`,href:e},t),mf.set(a,e),n.querySelector(i)===null)){switch(r){case`audioworklet`:case`paintworklet`:case`serviceworker`:case`sharedworker`:case`worker`:case`script`:if(n.querySelector(Ff(a)))return}r=n.createElement(`link`),Pd(r,`link`,e),k(r),n.head.appendChild(r)}}}function Ef(e,t,n){_f.S(e,t,n);var r=bf;if(r&&e){var i=Ot(r).hoistableStyles,a=Af(e);t||=`default`;var o=i.get(a);if(!o){var s={loading:0,preload:null};if(o=r.querySelector(jf(a)))s.loading=5;else{e=h({rel:`stylesheet`,href:e,"data-precedence":t},n),(n=mf.get(a))&&Rf(e,n);var c=o=r.createElement(`link`);k(c),Pd(c,`link`,e),c._p=new Promise(function(e,t){c.onload=e,c.onerror=t}),c.addEventListener(`load`,function(){s.loading|=1}),c.addEventListener(`error`,function(){s.loading|=2}),s.loading|=4,Lf(o,t,r)}o={type:`stylesheet`,instance:o,count:1,state:s},i.set(a,o)}}}function Df(e,t){_f.X(e,t);var n=bf;if(n&&e){var r=Ot(n).hoistableScripts,i=Pf(e),a=r.get(i);a||(a=n.querySelector(Ff(i)),a||(e=h({src:e,async:!0},t),(t=mf.get(i))&&zf(e,t),a=n.createElement(`script`),k(a),Pd(a,`link`,e),n.head.appendChild(a)),a={type:`script`,instance:a,count:1,state:null},r.set(i,a))}}function Of(e,t){_f.M(e,t);var n=bf;if(n&&e){var r=Ot(n).hoistableScripts,i=Pf(e),a=r.get(i);a||(a=n.querySelector(Ff(i)),a||(e=h({src:e,async:!0,type:`module`},t),(t=mf.get(i))&&zf(e,t),a=n.createElement(`script`),k(a),Pd(a,`link`,e),n.head.appendChild(a)),a={type:`script`,instance:a,count:1,state:null},r.set(i,a))}}function kf(e,t,n,r){var i=(i=_e.current)?gf(i):null;if(!i)throw Error(s(446));switch(e){case`meta`:case`title`:return null;case`style`:return typeof n.precedence==`string`&&typeof n.href==`string`?(t=Af(n.href),n=Ot(i).hoistableStyles,r=n.get(t),r||(r={type:`style`,instance:null,count:0,state:null},n.set(t,r)),r):{type:`void`,instance:null,count:0,state:null};case`link`:if(n.rel===`stylesheet`&&typeof n.href==`string`&&typeof n.precedence==`string`){e=Af(n.href);var a=Ot(i).hoistableStyles,o=a.get(e);if(o||(i=i.ownerDocument||i,o={type:`stylesheet`,instance:null,count:0,state:{loading:0,preload:null}},a.set(e,o),(a=i.querySelector(jf(e)))&&!a._p&&(o.instance=a,o.state.loading=5),mf.has(e)||(n={rel:`preload`,as:`style`,href:n.href,crossOrigin:n.crossOrigin,integrity:n.integrity,media:n.media,hrefLang:n.hrefLang,referrerPolicy:n.referrerPolicy},mf.set(e,n),a||Nf(i,e,n,o.state))),t&&r===null)throw Error(s(528,``));return o}if(t&&r!==null)throw Error(s(529,``));return null;case`script`:return t=n.async,n=n.src,typeof n==`string`&&t&&typeof t!=`function`&&typeof t!=`symbol`?(t=Pf(n),n=Ot(i).hoistableScripts,r=n.get(t),r||(r={type:`script`,instance:null,count:0,state:null},n.set(t,r)),r):{type:`void`,instance:null,count:0,state:null};default:throw Error(s(444,e))}}function Af(e){return`href="`+qt(e)+`"`}function jf(e){return`link[rel="stylesheet"][`+e+`]`}function Mf(e){return h({},e,{"data-precedence":e.precedence,precedence:null})}function Nf(e,t,n,r){e.querySelector(`link[rel="preload"][as="style"][`+t+`]`)?r.loading=1:(t=e.createElement(`link`),r.preload=t,t.addEventListener(`load`,function(){return r.loading|=1}),t.addEventListener(`error`,function(){return r.loading|=2}),Pd(t,`link`,n),k(t),e.head.appendChild(t))}function Pf(e){return`[src="`+qt(e)+`"]`}function Ff(e){return`script[async]`+e}function If(e,t,n){if(t.count++,t.instance===null)switch(t.type){case`style`:var r=e.querySelector(`style[data-href~="`+qt(n.href)+`"]`);if(r)return t.instance=r,k(r),r;var i=h({},n,{"data-href":n.href,"data-precedence":n.precedence,href:null,precedence:null});return r=(e.ownerDocument||e).createElement(`style`),k(r),Pd(r,`style`,i),Lf(r,n.precedence,e),t.instance=r;case`stylesheet`:i=Af(n.href);var a=e.querySelector(jf(i));if(a)return t.state.loading|=4,t.instance=a,k(a),a;r=Mf(n),(i=mf.get(i))&&Rf(r,i),a=(e.ownerDocument||e).createElement(`link`),k(a);var o=a;return o._p=new Promise(function(e,t){o.onload=e,o.onerror=t}),Pd(a,`link`,r),t.state.loading|=4,Lf(a,n.precedence,e),t.instance=a;case`script`:return a=Pf(n.src),(i=e.querySelector(Ff(a)))?(t.instance=i,k(i),i):(r=n,(i=mf.get(a))&&(r=h({},n),zf(r,i)),e=e.ownerDocument||e,i=e.createElement(`script`),k(i),Pd(i,`link`,r),e.head.appendChild(i),t.instance=i);case`void`:return null;default:throw Error(s(443,t.type))}else t.type===`stylesheet`&&!(t.state.loading&4)&&(r=t.instance,t.state.loading|=4,Lf(r,n.precedence,e));return t.instance}function Lf(e,t,n){for(var r=n.querySelectorAll(`link[rel="stylesheet"][data-precedence],style[data-precedence]`),i=r.length?r[r.length-1]:null,a=i,o=0;o title`):null)}function Uf(e,t,n){if(n===1||t.itemProp!=null)return!1;switch(e){case`meta`:case`title`:return!0;case`style`:if(typeof t.precedence!=`string`||typeof t.href!=`string`||t.href===``)break;return!0;case`link`:if(typeof t.rel!=`string`||typeof t.href!=`string`||t.href===``||t.onLoad||t.onError)break;switch(t.rel){case`stylesheet`:return e=t.disabled,typeof t.precedence==`string`&&e==null;default:return!0}case`script`:if(t.async&&typeof t.async!=`function`&&typeof t.async!=`symbol`&&!t.onLoad&&!t.onError&&t.src&&typeof t.src==`string`)return!0}return!1}function Wf(e){return!(e.type===`stylesheet`&&!(e.state.loading&3))}function Gf(e,t,n,r){if(n.type===`stylesheet`&&(typeof r.media!=`string`||!1!==matchMedia(r.media).matches)&&!(n.state.loading&4)){if(n.instance===null){var i=Af(r.href),a=t.querySelector(jf(i));if(a){t=a._p,typeof t==`object`&&t&&typeof t.then==`function`&&(e.count++,e=Jf.bind(e),t.then(e,e)),n.state.loading|=4,n.instance=a,k(a);return}a=t.ownerDocument||t,r=Mf(r),(i=mf.get(i))&&Rf(r,i),a=a.createElement(`link`),k(a);var o=a;o._p=new Promise(function(e,t){o.onload=e,o.onerror=t}),Pd(a,`link`,r),n.instance=a}e.stylesheets===null&&(e.stylesheets=new Map),e.stylesheets.set(n,t),(t=n.state.preload)&&!(n.state.loading&3)&&(e.count++,n=Jf.bind(e),t.addEventListener(`load`,n),t.addEventListener(`error`,n))}}var Kf=0;function qf(e,t){return e.stylesheets&&e.count===0&&Xf(e,e.stylesheets),0Kf?50:800)+t);return e.unsuspend=n,function(){e.unsuspend=null,clearTimeout(r),clearTimeout(i)}}:null}function Jf(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)Xf(this,this.stylesheets);else if(this.unsuspend){var e=this.unsuspend;this.unsuspend=null,e()}}}var Yf=null;function Xf(e,t){e.stylesheets=null,e.unsuspend!==null&&(e.count++,Yf=new Map,t.forEach(Zf,e),Yf=null,Jf.call(e))}function Zf(e,t){if(!(t.state.loading&4)){var n=Yf.get(e);if(n)var r=n.get(null);else{n=new Map,Yf.set(e,n);for(var i=e.querySelectorAll(`link[data-precedence],style[data-precedence]`),a=0;a{function n(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>`u`||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!=`function`))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(e){console.error(e)}}n(),t.exports=s()})),l=n(),u=c(),d=window.location.origin,f=d.replace(/^http/,`ws`)+`/ws`;async function p(e){let t=await fetch(`${d}${e}`);if(!t.ok)throw Error(`${e} => ${t.status}`);return t.json()}async function m(e,t){let n=await fetch(`${d}${e}`,{method:`POST`,headers:{"Content-Type":`application/json`},body:t==null?void 0:JSON.stringify(t)});if(!n.ok)throw Error(`${e} => ${n.status}`);return n.json()}async function h(e,t){let n=await fetch(`${d}${e}`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t)});if(!n.ok)throw Error(`${e} => ${n.status}`);return n.json()}async function g(e,t){let n=new FormData;n.append(`file`,t);let r=await fetch(`${d}${e}`,{method:`POST`,body:n});if(!r.ok)throw Error(`${e} => ${r.status}`);return r.json()}function _(){let[e,t]=(0,l.useState)(null),[n,r]=(0,l.useState)(!1),i=(0,l.useRef)(null),a=(0,l.useRef)(null);return(0,l.useEffect)(()=>{p(`/api/state`).then(e=>{t(e),r(!0)}).catch(()=>{r(!1)});let e;function n(){try{let a=new WebSocket(f);a.onmessage=e=>{try{let n=JSON.parse(e.data);(n.type===`connected`||n.type===`state`)&&(t(n.state),r(!0)),n.type===`preset_changed`&&n.state&&t(n.state),n.type===`bypass_changed`&&t(e=>e&&{...e,bypass:n.bypass}),n.type===`tuner_changed`&&t(e=>e&&{...e,tuner_enabled:n.tuner_enabled}),n.type===`routing_changed`&&t(e=>e&&{...e,routing_mode:n.routing_mode,routing_breakpoint:n.routing_breakpoint}),(n.type===`model_loaded`||n.type===`ir_loaded`)&&p(`/api/state`).then(e=>t(e))}catch{}},a.onclose=()=>{r(!1),e=setTimeout(n,3e3)},a.onerror=()=>a.close(),i.current=a}catch{e=setTimeout(n,3e3)}}return n(),a.current=setInterval(()=>{p(`/api/state`).then(e=>{t(e),r(!0)}).catch(()=>{})},5e3),()=>{a.current&&clearInterval(a.current),clearTimeout(e),i.current&&i.current.close()}},[]),{state:e,connected:n,refresh:(0,l.useCallback)(()=>{p(`/api/state`).then(e=>{t(e),r(!0)}).catch(()=>{})},[])}}async function v(){return p(`/api/presets`)}async function y(e,t){await m(`/api/presets/${e}/${t}/activate`)}var b=e((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.fragment`);function r(e,n,r){var i=null;if(r!==void 0&&(i=``+r),n.key!==void 0&&(i=``+n.key),`key`in n)for(var a in r={},n)a!==`key`&&(r[a]=n[a]);else r=n;return n=r.ref,{$$typeof:t,type:e,key:i,ref:n===void 0?null:n,props:r}}e.Fragment=n,e.jsx=r,e.jsxs=r})),x=e(((e,t)=>{t.exports=b()}))(),ee=(0,l.createContext)(null);function S(e,t){let n=[];for(let t=0;t<8;t++){let r=e[t];r?n.push({key:`stomp-${r.id}`,label:r.title.length>6?r.title.slice(0,6):r.title,sublabel:r.bypassed?`BYP`:`ON`,color:r.bypassed?`off`:`green`,active:!r.bypassed,bypassed:r.bypassed}):n.push({key:`stomp-empty-${t}`,label:`—`,sublabel:``,color:`off`,active:!1,bypassed:!1})}return n}function C(e,t,n){let r=[];r.push({key:`bank-down`,label:`BANK`,sublabel:t>0?`${n[t-1]||`−`}`:`—`,color:`blue`,active:t>0}),r.push({key:`bank-up`,label:`BANK`,sublabel:t6?r.name.slice(0,6):r.name||`Snap ${n+1}`,sublabel:r.active?`ACTIVE`:``,color:r.active?`amber`:`off`,active:r.active}):t.push({key:`snapshot-empty-${n}`,label:`Snap ${n+1}`,sublabel:``,color:`off`,active:!1})}return t}function ne(e,t,n,r){return[...S(e.slice(0,4),t).slice(0,4),{key:`bank-down`,label:`BANK`,sublabel:r>0?`▼`:`—`,color:`blue`,active:r>0},{key:`bank-up`,label:`BANK`,sublabel:r{try{let e=localStorage.getItem(`pedal-footswitch-bank`);return e===null?0:parseInt(e,10)}catch{return 0}}),[p,h]=(0,l.useState)(0),[g,_]=(0,l.useState)(!1);(0,l.useEffect)(()=>{try{localStorage.setItem(`pedal-footswitch-bank`,String(d))}catch{}},[d]);let v;switch(c){case`stomp`:v=S(i,t);break;case`preset`:v=C(t,d,a);break;case`snapshot`:v=te(o);break;case`combo`:v=ne(i,t,a,d);break;default:v=S(i,t)}let b=(0,l.useCallback)(e=>{switch(c){case`stomp`:{let t=i[e];t&&s&&s(t.id,!t.bypassed);break}case`preset`:if(e===0)f(e=>Math.max(0,e-1));else if(e===1)f(e=>Math.min(a.length-1,e+1));else{let t=e-2;n&&(y(d,t).then(()=>r()),h(t))}break;case`snapshot`:n&&m(`/api/snapshots/${e}/recall`).catch(()=>{});break;case`combo`:if(e<4){let t=i[e];t&&s&&s(t.id,!t.bypassed)}else e===4?f(e=>Math.max(0,e-1)):e===5?f(e=>Math.min(a.length-1,e+1)):e===6?u(`preset`):e===7&&n&&m(`/api/bypass`,{bypass:!t?.bypass}).catch(()=>{});break}},[c,i,s,n,d,a,t,r]),re=(0,l.useCallback)(e=>{switch(c){case`stomp`:e===7&&n&&m(`/api/tuner`,{enabled:!t?.tuner_enabled}).catch(()=>{});break;case`preset`:e===0?f(0):e===1&&f(a.length-1);break;case`snapshot`:n&&m(`/api/snapshots/${e}/save`).catch(()=>{});break;case`combo`:e===7&&n&&m(`/api/tuner`,{enabled:!t?.tuner_enabled}).catch(()=>{});break}},[c,t,n,a]),w=(0,l.useCallback)(e=>{f(e)},[]),ie=(0,l.useCallback)(e=>{h(e),n&&y(d,e).then(()=>r())},[n,d,r]),ae={mode:c,setMode:u,scribbleData:v,handleFootswitch:b,handleSecondary:re,currentBankIndex:d,currentPresetIndex:p,setBank:w,setPreset:ie,dirty:g};return(0,x.jsx)(ee.Provider,{value:ae,children:e})}function w(){let e=(0,l.useContext)(ee);if(!e)throw Error(`useFootswitchMode must be used within a FootswitchModeProvider`);return e}var ie={stomp:`Stomp`,preset:`Preset`,snapshot:`Snapshot`,combo:`Combo`,transport:`Transport`},ae={amber:`#E8A030`,green:`#3AB87A`,red:`#C84040`,blue:`#3A7BA8`,purple:`#9B59B6`,cyan:`#1ABC9C`,white:`#F0EDE6`,off:`#444458`};function oe({threshold:e=300,onSingleTap:t,onDoubleTap:n}){let r=(0,l.useRef)(0),i=(0,l.useRef)(null);return{handleTap:(0,l.useCallback)(()=>{let a=Date.now();a-r.current{t?.(),i.current=null},e))},[e,t,n])}}function se({data:e,onPress:t,onSecondary:n}){let{handleTap:r}=oe({onSingleTap:t,onDoubleTap:n}),i=ae[e.color??`off`],a=e.active??!1;return(0,x.jsxs)(`div`,{className:`scribble-strip`,"data-active":a,"data-bypassed":e.bypassed??!1,onClick:r,style:{"--scribble-color":i},children:[(0,x.jsx)(`div`,{className:`scribble-led`,style:{background:i,boxShadow:a?`0 0 6px ${i}`:`none`,opacity:a?1:.25}}),(0,x.jsxs)(`div`,{className:`scribble-label-wrap`,children:[(0,x.jsx)(`span`,{className:`scribble-label`,children:e.label||`—`}),e.sublabel&&(0,x.jsx)(`span`,{className:`scribble-sublabel`,children:e.sublabel})]}),e.icon&&(0,x.jsx)(`span`,{className:`scribble-icon`,children:e.icon})]})}function ce(){let{scribbleData:e,handleFootswitch:t,handleSecondary:n}=w();return(0,x.jsx)(`div`,{className:`footswitch-bar`,children:e.map((e,r)=>(0,x.jsxs)(`div`,{className:`footswitch-slot`,children:[(0,x.jsx)(se,{data:e,onPress:()=>t(r),onSecondary:()=>n(r)}),(0,x.jsxs)(`div`,{className:`footswitch-btn ${e.active?`footswitch-btn-active`:``} ${e.bypassed?`footswitch-btn-bypassed`:``}`,onClick:()=>t(r),onContextMenu:e=>{e.preventDefault(),n(r)},style:{"--fs-color":e.color},children:[(0,x.jsx)(`div`,{className:`footswitch-ring`}),(0,x.jsx)(`div`,{className:`footswitch-cap`})]})]},e.key))})}var le=[`stomp`,`preset`,`snapshot`,`combo`],ue={stomp:`◉`,preset:`☆`,snapshot:`◆`,combo:`◈`,transport:`▶`};function T({collapsed:e=!1}){let{mode:t,setMode:n}=w();if(e){let e=(le.indexOf(t)+1)%le.length;return(0,x.jsxs)(`div`,{className:`mode-selector mode-selector-collapsed`,onClick:()=>n(le[e]),title:`Mode: ${ie[t]} — tap to switch`,children:[(0,x.jsx)(`span`,{className:`mode-icon`,children:ue[t]}),(0,x.jsx)(`span`,{className:`mode-label`,children:ie[t]})]})}return(0,x.jsx)(`div`,{className:`mode-selector`,children:le.map(e=>(0,x.jsxs)(`button`,{className:`mode-btn ${t===e?`mode-btn-active`:``}`,onClick:()=>n(e),title:ie[e],children:[(0,x.jsx)(`span`,{className:`mode-btn-icon`,children:ue[e]}),(0,x.jsx)(`span`,{className:`mode-btn-label`,children:ie[e]})]},e))})}var E={bg:`#0A0A0C`,panel:`#141418`,surface:`#1C1C22`,border:`#2A2A32`,amber:`#E8A030`,blue:`#3A7BA8`,blueDim:`#1E4060`,amberDim:`#7A5218`,green:`#3AB87A`,red:`#C84040`,text:`#F0EDE6`,textSec:`#8888A0`,textDim:`#444458`};function de({level:e=0,height:t=60}){let n=Math.round(e/100*12),r=e=>e>=10?E.red:e>=8?`#E8C030`:E.green;return(0,x.jsx)(`div`,{style:{display:`flex`,flexDirection:`column-reverse`,gap:2,height:t,alignItems:`center`},children:Array.from({length:12}).map((e,i)=>(0,x.jsx)(`div`,{style:{width:6,height:(t-24)/12,borderRadius:1,background:i{e?.master_volume!=null&&r(Math.round(e.master_volume*100))},[e?.master_volume]),(0,l.useEffect)(()=>{e?.bypass!==void 0&&a(null),e?.tuner_enabled!==void 0&&s(null)},[e?.bypass,e?.tuner_enabled]);let d=async e=>{r(e);try{await h(`/api/volume`,{volume:e/100})}catch{}},f=async()=>{let e=!c;a(e);try{await m(`/api/bypass`,{bypass:e})}catch{a(null)}},p=async()=>{let e=!u;s(e);try{await m(`/api/tuner`,{enabled:e})}catch{s(null)}},g=e?.input_level??0,_=e?.output_level??0;return(0,x.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,height:`100%`},children:[(0,x.jsxs)(`div`,{className:`screen-header`,children:[(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`div`,{style:{fontSize:13,fontWeight:600,letterSpacing:`0.06em`,textTransform:`uppercase`,color:E.textSec},children:`Active Rig`}),(0,x.jsxs)(`div`,{style:{display:`flex`,gap:6,marginTop:4,flexWrap:`wrap`,alignItems:`center`},children:[e?.current_preset?(0,x.jsx)(`span`,{style:{fontFamily:`'JetBrains Mono', monospace`,fontSize:11,color:E.amber,border:`1px solid ${E.amber}55`,background:`${E.amber}15`,padding:`3px 8px`,borderRadius:5},children:e.current_preset.name}):(0,x.jsx)(`span`,{style:{fontSize:11,color:E.textDim},children:`No preset loaded`}),t?(0,x.jsx)(`span`,{className:`pedal-badge pedal-badge-green`,children:`Connected`}):(0,x.jsx)(`span`,{className:`pedal-badge pedal-badge-red`,children:`Offline`})]})]}),(0,x.jsxs)(`div`,{style:{display:`flex`,gap:6,alignItems:`center`},children:[(0,x.jsx)(de,{level:g,height:44}),(0,x.jsx)(de,{level:_,height:44})]})]}),(0,x.jsxs)(`div`,{style:{flex:1,overflowY:`auto`,padding:12,display:`flex`,flexDirection:`column`,gap:12},children:[(0,x.jsxs)(`div`,{style:{background:E.surface,border:`1px solid ${E.border}`,borderRadius:8,padding:12,display:`flex`,gap:10,justifyContent:`space-around`},children:[(0,x.jsxs)(`div`,{style:{textAlign:`center`},children:[(0,x.jsx)(`div`,{className:`section-label`,children:`Bypass`}),(0,x.jsx)(`div`,{className:`switch ${c?`on`:``}`,onClick:f,style:{margin:`0 auto`}})]}),(0,x.jsxs)(`div`,{style:{textAlign:`center`},children:[(0,x.jsx)(`div`,{className:`section-label`,children:`Tuner`}),(0,x.jsx)(`div`,{className:`switch ${u?`on`:``}`,onClick:p,style:{margin:`0 auto`}})]}),(0,x.jsxs)(`div`,{style:{textAlign:`center`},children:[(0,x.jsx)(`div`,{className:`section-label`,children:`Routing`}),(0,x.jsx)(`span`,{style:{fontFamily:`'JetBrains Mono', monospace`,fontSize:12,color:E.amber},children:e?.routing_mode||`mono`})]})]}),u&&(0,x.jsxs)(`div`,{style:{background:`${E.amber}15`,border:`1px solid ${E.amber}`,borderRadius:8,textAlign:`center`,padding:`20px 16px`},children:[(0,x.jsx)(`div`,{style:{fontSize:32,marginBottom:8},children:`🎵`}),(0,x.jsx)(`div`,{className:`section-label`,style:{color:E.amber,marginBottom:4,fontSize:14},children:`TUNER ACTIVE`}),(0,x.jsx)(`div`,{style:{fontFamily:`'JetBrains Mono', monospace`,fontSize:24,color:E.amber,letterSpacing:4},children:`—————●—————`}),(0,x.jsx)(`div`,{style:{fontSize:11,color:E.textDim,marginTop:8},children:`Tap switch again to exit tuner mode`})]}),(0,x.jsxs)(`div`,{style:{background:E.panel,border:`1px solid ${E.border}`,borderRadius:10,padding:16,display:`flex`,gap:20,alignItems:`center`},children:[(0,x.jsxs)(`div`,{style:{flex:1},children:[(0,x.jsx)(`div`,{className:`section-label`,children:`Master Volume`}),(0,x.jsx)(`input`,{type:`range`,min:0,max:100,value:n,onChange:e=>d(+e.target.value),style:{width:`100%`,accentColor:E.amber}}),(0,x.jsxs)(`div`,{style:{fontFamily:`'JetBrains Mono', monospace`,fontSize:11,color:E.amber,marginTop:4},children:[n,`%`]})]}),(0,x.jsxs)(`div`,{style:{fontFamily:`'JetBrains Mono', monospace`,fontSize:11,color:E.textSec,textAlign:`right`},children:[e?.nam_loaded?`NAM: Active`:`NAM: —`,(0,x.jsx)(`br`,{}),e?.ir_loaded?`IR: Active`:`IR: —`]})]}),(0,x.jsxs)(`div`,{style:{background:E.surface,border:`1px solid ${E.border}`,borderRadius:8,padding:12},children:[(0,x.jsx)(`div`,{className:`section-label`,children:`Signal Chain`}),(0,x.jsx)(`div`,{style:{display:`flex`,alignItems:`center`,gap:4,overflowX:`auto`,padding:`4px 0`},children:[`IN`,e?.bypass?`BYP`:e?.nam_loaded?`NAM`:`AMP`,e?.ir_loaded?`IR`:`CAB`,`OUT`].map((e,t,n)=>(0,x.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:4,flexShrink:0},children:[(0,x.jsx)(`div`,{style:{padding:`3px 8px`,borderRadius:4,fontSize:10,fontWeight:700,background:t===0||t===n.length-1?E.blueDim:E.amberDim,color:t===0||t===n.length-1?E.blue:E.amber,border:`1px solid ${t===0||t===n.length-1?E.blue:E.amber}60`},children:e}),ta(e=>!e),children:[(0,x.jsx)(`div`,{style:{width:8,height:8,borderRadius:`50%`,background:r?E.textDim:E.green,boxShadow:r?`none`:`0 0 8px ${E.green}`}}),(0,x.jsx)(`span`,{style:{flex:1,fontSize:13,fontWeight:600},children:e}),(0,x.jsx)(`span`,{className:`pedal-badge pedal-badge-blue`,style:{fontSize:10,padding:`2px 7px`},children:t}),(0,x.jsx)(`span`,{style:{color:E.textDim,fontSize:18,marginLeft:6},children:i?`▾`:`▸`})]})})}function D({state:e,connected:t}){let[n,r]=(0,l.useState)([]),[i,a]=(0,l.useState)(!0);return(0,l.useEffect)(()=>{if(!t||!e?.current_preset){r([]),a(!1);return}v().then(t=>{let n=t.banks||[],i=e.current_preset,o=i?n[i.bank]?.presets?.[i.program]:null;o?.chain&&r(o.chain.map((e,t)=>({id:t+1,title:fe[e.fx_type]||e.fx_type,type:e.fx_type,bypassed:e.bypassed??!1}))),a(!1)}).catch(()=>{r([]),a(!1)})},[t,e]),i?(0,x.jsx)(`div`,{style:{flex:1,display:`flex`,alignItems:`center`,justifyContent:`center`},children:(0,x.jsx)(`div`,{className:`loader`})}):(0,x.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,height:`100%`},children:[(0,x.jsx)(`div`,{className:`screen-header`,children:(0,x.jsxs)(`div`,{style:{fontSize:13,fontWeight:600,letterSpacing:`0.06em`,textTransform:`uppercase`,color:E.textSec},children:[`FX Chain `,n.length>0?`(${n.length})`:``]})}),(0,x.jsx)(`div`,{style:{flex:1,overflowY:`auto`,padding:12,display:`flex`,flexDirection:`column`,gap:12},children:n.length===0?(0,x.jsx)(`div`,{style:{textAlign:`center`,padding:30,color:E.textDim,fontSize:14},children:`No FX blocks in the chain.`}):n.map(e=>(0,x.jsx)(me,{...e,active:!e.bypassed},e.id))})]})}function O({connected:e,refresh:t}){let[n,r]=(0,l.useState)([]),[i,a]=(0,l.useState)(null),[o,s]=(0,l.useState)(!0),[c,u]=(0,l.useState)(null),d=(0,l.useCallback)(async()=>{if(!e){s(!1);return}try{let e=await p(`/api/models`);r(e.models||[]),a(e.current??null)}catch{}s(!1)},[e]);(0,l.useEffect)(()=>{d()},[d]);let f=async e=>{if(e)try{await m(`/api/models/load`,{path:e}),await d(),t()}catch{alert(`Failed to load model`)}};return o?(0,x.jsx)(`div`,{style:{flex:1,display:`flex`,alignItems:`center`,justifyContent:`center`},children:(0,x.jsx)(`div`,{className:`loader`})}):(0,x.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,height:`100%`},children:[(0,x.jsxs)(`div`,{className:`screen-header`,children:[(0,x.jsxs)(`div`,{style:{fontSize:13,fontWeight:600,letterSpacing:`0.06em`,textTransform:`uppercase`,color:E.textSec},children:[`NAM Models (`,n.length,`)`]}),(0,x.jsx)(`button`,{className:`btn btn-primary btn-sm`,onClick:()=>c?.click(),children:`+ Upload`}),(0,x.jsx)(`input`,{ref:e=>u(e),type:`file`,accept:`.nam`,style:{display:`none`},onChange:async e=>{let t=e.target.files?.[0];if(t)try{await g(`/api/models/upload`,t),await d()}catch{alert(`Upload failed`)}}})]}),(0,x.jsxs)(`div`,{style:{flex:1,overflowY:`auto`,padding:12,display:`flex`,flexDirection:`column`,gap:8},children:[i&&(0,x.jsxs)(`div`,{style:{background:E.surface,border:`1px solid ${E.border}`,borderRadius:8,padding:12},children:[(0,x.jsx)(`div`,{className:`section-label`,children:`Loaded Model`}),(0,x.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8},children:[(0,x.jsx)(`span`,{style:{fontFamily:`'JetBrains Mono', monospace`,fontSize:11,color:E.blue,border:`1px solid ${E.blue}55`,background:`${E.blue}15`,padding:`3px 8px`,borderRadius:5},children:i}),(0,x.jsx)(`button`,{className:`btn btn-danger btn-sm`,onClick:async()=>{try{await m(`/api/models/unload`),a(null),await d(),t()}catch{alert(`Failed to unload`)}},children:`Unload`})]})]}),n.length===0?(0,x.jsx)(`div`,{style:{textAlign:`center`,padding:30,color:E.textDim,fontSize:14},children:`No NAM models found.`}):n.map(e=>(0,x.jsxs)(`div`,{className:`preset-row`,style:{border:e.loaded?`1px solid ${E.amber}40`:`1px solid transparent`,background:e.loaded?`${E.amber}08`:`transparent`},onClick:()=>!e.loaded&&f(e.path),children:[(0,x.jsxs)(`div`,{style:{flex:1},children:[(0,x.jsx)(`div`,{style:{fontSize:13,fontWeight:500},children:e.name}),(0,x.jsxs)(`div`,{style:{fontSize:10,color:E.textDim},children:[e.architecture,` · `,e.size_mb,` MB`]})]}),e.loaded?(0,x.jsx)(`span`,{className:`pedal-badge pedal-badge-green`,children:`Loaded`}):(0,x.jsx)(`button`,{className:`btn btn-ghost btn-sm`,children:`Load`})]},e.name))]})]})}function he({connected:e,refresh:t}){let[n,r]=(0,l.useState)([]),[i,a]=(0,l.useState)(null),[o,s]=(0,l.useState)(!0),[c,u]=(0,l.useState)(null),d=(0,l.useCallback)(async()=>{if(!e){s(!1);return}try{let e=await p(`/api/irs`);r(e.irs||[]),a(e.current??null)}catch{}s(!1)},[e]);(0,l.useEffect)(()=>{d()},[d]);let f=async e=>{if(e)try{await m(`/api/irs/load`,{path:e}),await d(),t()}catch{alert(`Failed to load IR`)}};return o?(0,x.jsx)(`div`,{style:{flex:1,display:`flex`,alignItems:`center`,justifyContent:`center`},children:(0,x.jsx)(`div`,{className:`loader`})}):(0,x.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,height:`100%`},children:[(0,x.jsxs)(`div`,{className:`screen-header`,children:[(0,x.jsxs)(`div`,{style:{fontSize:13,fontWeight:600,letterSpacing:`0.06em`,textTransform:`uppercase`,color:E.textSec},children:[`IR Files (`,n.length,`)`]}),(0,x.jsx)(`button`,{className:`btn btn-primary btn-sm`,onClick:()=>c?.click(),children:`+ Upload`}),(0,x.jsx)(`input`,{ref:e=>u(e),type:`file`,accept:`.wav`,style:{display:`none`},onChange:async e=>{let t=e.target.files?.[0];if(t)try{await g(`/api/irs/upload`,t),await d()}catch{alert(`Upload failed`)}}})]}),(0,x.jsxs)(`div`,{style:{flex:1,overflowY:`auto`,padding:12,display:`flex`,flexDirection:`column`,gap:8},children:[i&&(0,x.jsxs)(`div`,{style:{background:E.surface,border:`1px solid ${E.border}`,borderRadius:8,padding:12},children:[(0,x.jsx)(`div`,{className:`section-label`,children:`Loaded IR`}),(0,x.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8},children:[(0,x.jsx)(`span`,{style:{fontFamily:`'JetBrains Mono', monospace`,fontSize:11,color:E.green,border:`1px solid ${E.green}55`,background:`${E.green}15`,padding:`3px 8px`,borderRadius:5},children:i}),(0,x.jsx)(`button`,{className:`btn btn-danger btn-sm`,onClick:async()=>{try{await m(`/api/irs/unload`),a(null),await d(),t()}catch{alert(`Failed to unload`)}},children:`Unload`})]})]}),n.length===0?(0,x.jsx)(`div`,{style:{textAlign:`center`,padding:30,color:E.textDim,fontSize:14},children:`No IR files found.`}):n.map(e=>(0,x.jsxs)(`div`,{className:`preset-row`,style:{border:e.loaded?`1px solid ${E.amber}40`:`1px solid transparent`,background:e.loaded?`${E.amber}08`:`transparent`},onClick:()=>!e.loaded&&f(e.path),children:[(0,x.jsxs)(`div`,{style:{flex:1},children:[(0,x.jsx)(`div`,{style:{fontSize:13,fontWeight:500},children:e.name}),(0,x.jsxs)(`div`,{style:{fontSize:10,color:E.textDim},children:[e.sample_rate,` Hz · `,e.length_ms,` ms`]})]}),e.loaded?(0,x.jsx)(`span`,{className:`pedal-badge pedal-badge-green`,children:`Loaded`}):(0,x.jsx)(`button`,{className:`btn btn-ghost btn-sm`,children:`Load`})]},e.name))]})]})}function ge({state:e,connected:t,refresh:n}){let[r,i]=(0,l.useState)([]),[a,o]=(0,l.useState)(0),[s,c]=(0,l.useState)(!0),u=(0,l.useCallback)(async()=>{if(!t){i([{name:`Default`,number:0,presets:[{name:`Edge of Breakup`,bank:0,program:0},{name:`Modern High Gain`,bank:0,program:1},null,null]}]),c(!1);return}try{i((await v()).banks||[])}catch{}c(!1)},[t]);(0,l.useEffect)(()=>{u()},[u]);let d=async(e,t)=>{try{await m(`/api/presets/${e}/${t}/activate`),await u(),n()}catch{alert(`Failed to load preset`)}};if(s)return(0,x.jsx)(`div`,{style:{flex:1,display:`flex`,alignItems:`center`,justifyContent:`center`},children:(0,x.jsx)(`div`,{className:`loader`})});let f=e?.current_preset,p=r[a]?.presets||[];return(0,x.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,height:`100%`},children:[(0,x.jsx)(`div`,{className:`screen-header`,children:(0,x.jsx)(`div`,{style:{fontSize:13,fontWeight:600,letterSpacing:`0.06em`,textTransform:`uppercase`,color:E.textSec},children:`Presets`})}),(0,x.jsxs)(`div`,{style:{flex:1,overflowY:`auto`,padding:12,display:`flex`,flexDirection:`column`,gap:8},children:[r.length>1&&(0,x.jsx)(`div`,{style:{display:`flex`,background:E.surface,borderRadius:6,border:`1px solid ${E.border}`,overflow:`hidden`},children:r.map((e,t)=>(0,x.jsx)(`button`,{style:{flex:1,padding:`7px 12px`,fontSize:12,fontWeight:500,letterSpacing:`0.04em`,background:a===t?E.amber:`none`,border:`none`,color:a===t?`#000`:E.textSec,cursor:`pointer`,transition:`all 0.15s`},onClick:()=>o(t),children:e.name},e.number))}),f&&(0,x.jsx)(`div`,{style:{background:E.surface,border:`1px solid ${E.border}`,borderRadius:8,padding:12,display:`flex`,alignItems:`center`,gap:8},children:(0,x.jsxs)(`div`,{style:{flex:1},children:[(0,x.jsx)(`div`,{style:{fontSize:11,color:E.textDim},children:`Current`}),(0,x.jsxs)(`div`,{style:{fontSize:14,fontWeight:600,color:E.amber},children:[f.name,(0,x.jsxs)(`span`,{style:{fontFamily:`'JetBrains Mono', monospace`,fontSize:10,color:E.textDim,marginLeft:8},children:[`Bank `,f.bank,` · Prog `,f.program]})]})]})}),p.length===0?(0,x.jsx)(`div`,{style:{textAlign:`center`,padding:30,color:E.textDim,fontSize:14},children:`No presets in this bank.`}):p.map((e,t)=>{if(!e)return null;let n=f?.bank===e.bank&&f?.program===e.program;return(0,x.jsxs)(`div`,{className:`preset-row`,style:{border:n?`1px solid ${E.amber}40`:`1px solid transparent`,background:n?`${E.amber}08`:`transparent`},onClick:()=>d(e.bank,e.program),children:[(0,x.jsx)(`div`,{style:{width:28,height:28,borderRadius:6,display:`flex`,alignItems:`center`,justifyContent:`center`,fontSize:12,fontWeight:700,background:n?`${E.amber}22`:E.surface,color:n?E.amber:E.textDim,border:`1px solid ${n?`${E.amber}60`:E.border}`,fontFamily:`'JetBrains Mono', monospace`},children:e.program+1}),(0,x.jsxs)(`div`,{style:{flex:1},children:[(0,x.jsx)(`div`,{style:{fontSize:13,fontWeight:600},children:e.name}),(0,x.jsxs)(`div`,{style:{fontSize:10,color:E.textDim},children:[`Bank `,e.bank,` · Program `,e.program]})]}),n&&(0,x.jsx)(`span`,{style:{color:E.amber,fontSize:16},children:`●`})]},t)})]})]})}function _e({state:e}){return(0,x.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,height:`100%`},children:[(0,x.jsx)(`div`,{className:`screen-header`,children:(0,x.jsx)(`div`,{style:{fontSize:13,fontWeight:600,letterSpacing:`0.06em`,textTransform:`uppercase`,color:E.textSec},children:`Settings`})}),(0,x.jsx)(`div`,{style:{flex:1,overflowY:`auto`,padding:12,display:`flex`,flexDirection:`column`,gap:8},children:(0,x.jsxs)(`div`,{style:{background:E.surface,border:`1px solid ${E.border}`,borderRadius:8,padding:12},children:[(0,x.jsx)(`div`,{className:`section-label`,children:`System`}),e?.cpu_percent!=null&&(0,x.jsxs)(`div`,{className:`setting-row`,children:[(0,x.jsx)(`span`,{style:{fontSize:13},children:`CPU`}),(0,x.jsxs)(`span`,{style:{fontFamily:`'JetBrains Mono', monospace`,fontSize:11,color:E.amber},children:[e.cpu_percent,`%`]})]}),e?.sample_rate&&(0,x.jsxs)(`div`,{className:`setting-row`,children:[(0,x.jsx)(`span`,{style:{fontSize:13},children:`Sample Rate`}),(0,x.jsxs)(`span`,{style:{fontFamily:`'JetBrains Mono', monospace`,fontSize:11,color:E.amber},children:[e.sample_rate/1e3,`kHz`]})]}),(0,x.jsxs)(`div`,{className:`setting-row`,style:{border:`none`},children:[(0,x.jsx)(`span`,{style:{fontSize:13},children:`Connection`}),(0,x.jsx)(`span`,{className:`pedal-badge pedal-badge-green`,children:`Live`})]})]})})]})}var ve=[{id:`rig`,label:`Rig`,icon:`🎛`},{id:`fx`,label:`FX`,icon:`⛓`},{id:`models`,label:`Models`,icon:`📁`},{id:`irs`,label:`IRs`,icon:`🎚`},{id:`presets`,label:`Presets`,icon:`⭐`},{id:`settings`,label:`Settings`,icon:`⚙`}];function ye(){let[e,t]=(0,l.useState)(`rig`),{state:n,connected:r,refresh:i}=_(),[a,o]=(0,l.useState)([]),[s,c]=(0,l.useState)([`Default`]);(0,l.useEffect)(()=>{r&&n?.current_preset&&v().then(e=>{let t=(e.banks||[]).map(e=>e.name);t.length>0&&c(t);let r=n.current_preset;if(!r)return;let i=(e.banks?.[r.bank])?.presets?.[r.program];i?.chain&&o(i.chain.map((e,t)=>({id:t+1,fx_type:e.fx_type,title:fe[e.fx_type]||e.fx_type,bypassed:e.bypassed??!1})))}).catch(()=>{})},[r,n?.current_preset]);let u=(0,l.useCallback)(async(e,t)=>{if(o(n=>n.map(n=>n.id===e?{...n,bypassed:t}:n)),r)try{await m(`/api/blocks/toggle`,{block_id:e,bypass:t})}catch{}},[r]),[d]=(0,l.useState)(Array.from({length:8},(e,t)=>({name:`Snap ${t+1}`,active:!1})));return(0,x.jsx)(re,{state:n,connected:r,refresh:i,blocks:a,bankNames:s,snapshots:d,onToggleBlock:u,children:(0,x.jsxs)(`div`,{className:`pedal-shell`,children:[(0,x.jsxs)(`div`,{className:`pedal-statusbar`,children:[(0,x.jsxs)(`div`,{className:`pedal-statusbar-left`,children:[(0,x.jsx)(`div`,{className:`pedal-led-dot`,style:{background:r?E.green:E.red,boxShadow:r?`0 0 6px ${E.green}`:`none`}}),(0,x.jsx)(`span`,{className:`pedal-brand`,children:`PI MULTI-FX`}),n?.tuner_enabled&&(0,x.jsx)(`span`,{className:`pedal-badge pedal-badge-amber`,children:`TUNER`})]}),(0,x.jsx)(`div`,{className:`pedal-statusbar-mid`,children:(0,x.jsx)(T,{collapsed:!0})}),(0,x.jsxs)(`div`,{className:`pedal-statusbar-right`,children:[n?.cpu_percent!=null&&(0,x.jsxs)(`span`,{className:`pedal-brand`,style:{color:E.textDim},children:[`CPU `,n.cpu_percent,`%`]}),n?.sample_rate&&(0,x.jsxs)(`span`,{className:`pedal-brand`,style:{color:E.textDim},children:[n.sample_rate/1e3,`kHz`]}),n?.bypass&&(0,x.jsx)(`span`,{className:`pedal-badge pedal-badge-red`,children:`BYP`}),n?.nam_loaded&&(0,x.jsx)(`span`,{className:`pedal-badge pedal-badge-blue`,children:`NAM`}),n?.ir_loaded&&(0,x.jsx)(`span`,{className:`pedal-badge pedal-badge-green`,children:`IR`})]})]}),(0,x.jsxs)(`div`,{className:`pedal-screen`,children:[e===`rig`&&(0,x.jsx)(pe,{state:n,connected:r}),e===`fx`&&(0,x.jsx)(D,{state:n,connected:r}),e===`models`&&(0,x.jsx)(O,{connected:r,refresh:i}),e===`irs`&&(0,x.jsx)(he,{connected:r,refresh:i}),e===`presets`&&(0,x.jsx)(ge,{state:n,connected:r,refresh:i}),e===`settings`&&(0,x.jsx)(_e,{state:n})]}),(0,x.jsx)(ce,{}),(0,x.jsx)(`div`,{className:`pedal-tabbar`,children:ve.map(n=>(0,x.jsxs)(`div`,{className:`pedal-tab ${e===n.id?`pedal-tab-active`:``}`,onClick:()=>t(n.id),children:[(0,x.jsx)(`span`,{className:`pedal-tab-icon`,children:n.icon}),n.label]},n.id))})]})})}function be(){return(0,l.useEffect)(()=>{document.title=`Pi Multi-FX Pedal`},[]),(0,x.jsxs)(x.Fragment,{children:[(0,x.jsx)(`style`,{children:` + .switch { width: 40px; height: 22px; border-radius: 11px; background: ${E.border}; cursor: pointer; position: relative; transition: background 0.2s; flex-shrink: 0; display: inline-block; } + .switch.on { background: ${E.green}; } + .switch::after { content: ''; position: absolute; top: 2px; left: 2px; width: 18px; height: 18px; border-radius: 50%; background: white; transition: transform 0.15s; } + .switch.on::after { transform: translateX(18px); } + + .btn { padding: 10px 18px; border-radius: 7px; font-size: 13px; font-weight: 600; letter-spacing: 0.04em; border: none; cursor: pointer; transition: all 0.12s; } + .btn-primary { background: ${E.amber}; color: #000; } + .btn-primary:active { filter: brightness(0.85); transform: scale(0.97); } + .btn-ghost { background: ${E.surface}; color: ${E.text}; border: 1px solid ${E.border}; } + .btn-ghost:active { background: ${E.border}; } + .btn-danger { background: rgba(200,64,64,0.2); color: ${E.red}; border: 1px solid rgba(200,64,64,0.3); } + .btn-sm { padding: 6px 12px; font-size: 12px; } + + .loader { width: 20px; height: 20px; border: 2px solid ${E.border}; border-top-color: ${E.amber}; border-radius: 50%; animation: spin 0.6s linear infinite; } + @keyframes spin { to { transform: rotate(360deg); } } + + .screen-header { padding: 10px 14px 6px; display: flex; align-items: center; justify-content: space-between; border-bottom: 1px solid ${E.border}; flex-shrink: 0; } + .section-label { font-size: 10px; letter-spacing: 0.1em; text-transform: uppercase; color: ${E.textDim}; font-weight: 600; margin-bottom: 8px; } + .preset-row { display: flex; align-items: center; gap: 12px; padding: 10px 12px; border-radius: 8px; cursor: pointer; transition: background 0.12s; } + .preset-row:active { background: rgba(232,160,48,0.08); } + .setting-row { display: flex; align-items: center; justify-content: space-between; padding: 8px 0; border-bottom: 1px solid ${E.border}; } + + ::-webkit-scrollbar { width: 4px; height: 4px; } + ::-webkit-scrollbar-track { background: ${E.panel}; } + ::-webkit-scrollbar-thumb { background: ${E.border}; border-radius: 2px; } + `}),(0,x.jsx)(ye,{})]})}(0,u.createRoot)(document.getElementById(`root`)).render((0,x.jsx)(l.StrictMode,{children:(0,x.jsx)(be,{})})); \ No newline at end of file diff --git a/src/web/ui-dist/img/footswitch_strip.png b/src/web/ui-dist/img/footswitch_strip.png deleted file mode 100644 index 9ae4ed59cf3405029c01159eb171f9e447bc6fc9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 42663 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 Rc&~sLOifR - - - - - - - - - - - - - diff --git a/src/web/ui-dist/img/fx_analyzer.svg b/src/web/ui-dist/img/fx_analyzer.svg deleted file mode 100644 index 54be993..0000000 --- a/src/web/ui-dist/img/fx_analyzer.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - diff --git a/src/web/ui-dist/img/fx_chorus.svg b/src/web/ui-dist/img/fx_chorus.svg deleted file mode 100644 index 301a39f..0000000 --- a/src/web/ui-dist/img/fx_chorus.svg +++ /dev/null @@ -1,72 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/web/ui-dist/img/fx_compressor.svg b/src/web/ui-dist/img/fx_compressor.svg deleted file mode 100644 index f6d7029..0000000 --- a/src/web/ui-dist/img/fx_compressor.svg +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/src/web/ui-dist/img/fx_constant.svg b/src/web/ui-dist/img/fx_constant.svg deleted file mode 100644 index 321a890..0000000 --- a/src/web/ui-dist/img/fx_constant.svg +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - fx - - k - - - - - diff --git a/src/web/ui-dist/img/fx_converter.svg b/src/web/ui-dist/img/fx_converter.svg deleted file mode 100644 index ade942c..0000000 --- a/src/web/ui-dist/img/fx_converter.svg +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/src/web/ui-dist/img/fx_delay.svg b/src/web/ui-dist/img/fx_delay.svg deleted file mode 100644 index b5e29ca..0000000 --- a/src/web/ui-dist/img/fx_delay.svg +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/src/web/ui-dist/img/fx_dial.svg b/src/web/ui-dist/img/fx_dial.svg deleted file mode 100644 index 4152f63..0000000 --- a/src/web/ui-dist/img/fx_dial.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - diff --git a/src/web/ui-dist/img/fx_distortion.svg b/src/web/ui-dist/img/fx_distortion.svg deleted file mode 100644 index 1ad8b16..0000000 --- a/src/web/ui-dist/img/fx_distortion.svg +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/src/web/ui-dist/img/fx_empty.svg b/src/web/ui-dist/img/fx_empty.svg deleted file mode 100644 index e6f1eb5..0000000 --- a/src/web/ui-dist/img/fx_empty.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - diff --git a/src/web/ui-dist/img/fx_eq.svg b/src/web/ui-dist/img/fx_eq.svg deleted file mode 100644 index 61d6873..0000000 --- a/src/web/ui-dist/img/fx_eq.svg +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/src/web/ui-dist/img/fx_error.svg b/src/web/ui-dist/img/fx_error.svg deleted file mode 100644 index 37f8f1f..0000000 --- a/src/web/ui-dist/img/fx_error.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - diff --git a/src/web/ui-dist/img/fx_filter.svg b/src/web/ui-dist/img/fx_filter.svg deleted file mode 100644 index e294879..0000000 --- a/src/web/ui-dist/img/fx_filter.svg +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/src/web/ui-dist/img/fx_filter_hp.svg b/src/web/ui-dist/img/fx_filter_hp.svg deleted file mode 100755 index d695af5..0000000 --- a/src/web/ui-dist/img/fx_filter_hp.svg +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/src/web/ui-dist/img/fx_flanger.svg b/src/web/ui-dist/img/fx_flanger.svg deleted file mode 100644 index 4c55387..0000000 --- a/src/web/ui-dist/img/fx_flanger.svg +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - - - - - - - - - diff --git a/src/web/ui-dist/img/fx_flanger2.svg b/src/web/ui-dist/img/fx_flanger2.svg deleted file mode 100644 index ffed761..0000000 --- a/src/web/ui-dist/img/fx_flanger2.svg +++ /dev/null @@ -1,194 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/web/ui-dist/img/fx_function.svg b/src/web/ui-dist/img/fx_function.svg deleted file mode 100644 index fb59658..0000000 --- a/src/web/ui-dist/img/fx_function.svg +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - - - fx - - - - - diff --git a/src/web/ui-dist/img/fx_gate.svg b/src/web/ui-dist/img/fx_gate.svg deleted file mode 100644 index 8f2462a..0000000 --- a/src/web/ui-dist/img/fx_gate.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/src/web/ui-dist/img/fx_generator.svg b/src/web/ui-dist/img/fx_generator.svg deleted file mode 100644 index b77ef00..0000000 --- a/src/web/ui-dist/img/fx_generator.svg +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - - - - - - - - - diff --git a/src/web/ui-dist/img/fx_instrument.svg b/src/web/ui-dist/img/fx_instrument.svg deleted file mode 100644 index 7627d61..0000000 --- a/src/web/ui-dist/img/fx_instrument.svg +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/web/ui-dist/img/fx_limiter.svg b/src/web/ui-dist/img/fx_limiter.svg deleted file mode 100644 index 2c465c7..0000000 --- a/src/web/ui-dist/img/fx_limiter.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - diff --git a/src/web/ui-dist/img/fx_lr.svg b/src/web/ui-dist/img/fx_lr.svg deleted file mode 100644 index 6f178d2..0000000 --- a/src/web/ui-dist/img/fx_lr.svg +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/src/web/ui-dist/img/fx_mixer.svg b/src/web/ui-dist/img/fx_mixer.svg deleted file mode 100644 index 891fd3b..0000000 --- a/src/web/ui-dist/img/fx_mixer.svg +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/web/ui-dist/img/fx_modulator.svg b/src/web/ui-dist/img/fx_modulator.svg deleted file mode 100644 index f1bba64..0000000 --- a/src/web/ui-dist/img/fx_modulator.svg +++ /dev/null @@ -1,75 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/web/ui-dist/img/fx_multiband_eq.svg b/src/web/ui-dist/img/fx_multiband_eq.svg deleted file mode 100755 index c1a0305..0000000 --- a/src/web/ui-dist/img/fx_multiband_eq.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - diff --git a/src/web/ui-dist/img/fx_oscillator.svg b/src/web/ui-dist/img/fx_oscillator.svg deleted file mode 100644 index b034041..0000000 --- a/src/web/ui-dist/img/fx_oscillator.svg +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/src/web/ui-dist/img/fx_parametric_eq.svg b/src/web/ui-dist/img/fx_parametric_eq.svg deleted file mode 100644 index edf2ca7..0000000 --- a/src/web/ui-dist/img/fx_parametric_eq.svg +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - diff --git a/src/web/ui-dist/img/fx_phaser.svg b/src/web/ui-dist/img/fx_phaser.svg deleted file mode 100644 index 414b1e2..0000000 --- a/src/web/ui-dist/img/fx_phaser.svg +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/src/web/ui-dist/img/fx_pitch.svg b/src/web/ui-dist/img/fx_pitch.svg deleted file mode 100644 index 88b9517..0000000 --- a/src/web/ui-dist/img/fx_pitch.svg +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/web/ui-dist/img/fx_plugin.svg b/src/web/ui-dist/img/fx_plugin.svg deleted file mode 100644 index 4f868b4..0000000 --- a/src/web/ui-dist/img/fx_plugin.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - diff --git a/src/web/ui-dist/img/fx_reverb.svg b/src/web/ui-dist/img/fx_reverb.svg deleted file mode 100644 index 55f836f..0000000 --- a/src/web/ui-dist/img/fx_reverb.svg +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/web/ui-dist/img/fx_simulator.svg b/src/web/ui-dist/img/fx_simulator.svg deleted file mode 100644 index 5cfd98c..0000000 --- a/src/web/ui-dist/img/fx_simulator.svg +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - 0 - - 1 - 0 - 1 - - - - - - - - - diff --git a/src/web/ui-dist/img/fx_spatial.svg b/src/web/ui-dist/img/fx_spatial.svg deleted file mode 100644 index ae27920..0000000 --- a/src/web/ui-dist/img/fx_spatial.svg +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/web/ui-dist/img/fx_spectral.svg b/src/web/ui-dist/img/fx_spectral.svg deleted file mode 100644 index dadd1a1..0000000 --- a/src/web/ui-dist/img/fx_spectral.svg +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/src/web/ui-dist/img/fx_split_a.svg b/src/web/ui-dist/img/fx_split_a.svg deleted file mode 100644 index 8dc208c..0000000 --- a/src/web/ui-dist/img/fx_split_a.svg +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - A - - - - - - - - diff --git a/src/web/ui-dist/img/fx_split_b.svg b/src/web/ui-dist/img/fx_split_b.svg deleted file mode 100644 index ddebee8..0000000 --- a/src/web/ui-dist/img/fx_split_b.svg +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - B - - - - - - - - - diff --git a/src/web/ui-dist/img/fx_terminal.svg b/src/web/ui-dist/img/fx_terminal.svg deleted file mode 100644 index b2f746a..0000000 --- a/src/web/ui-dist/img/fx_terminal.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - diff --git a/src/web/ui-dist/img/fx_utility.svg b/src/web/ui-dist/img/fx_utility.svg deleted file mode 100644 index f7b40b8..0000000 --- a/src/web/ui-dist/img/fx_utility.svg +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - diff --git a/src/web/ui-dist/img/ic_bank.svg b/src/web/ui-dist/img/ic_bank.svg deleted file mode 100644 index 64a6601..0000000 --- a/src/web/ui-dist/img/ic_bank.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - diff --git a/src/web/ui-dist/img/ic_drawer.svg b/src/web/ui-dist/img/ic_drawer.svg deleted file mode 100644 index d2b51d3..0000000 --- a/src/web/ui-dist/img/ic_drawer.svg +++ /dev/null @@ -1,11577 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - πpedal - - - - - - - - - - diff --git a/src/web/ui-dist/img/ic_drawer_2.svg b/src/web/ui-dist/img/ic_drawer_2.svg deleted file mode 100755 index cd8e222..0000000 --- a/src/web/ui-dist/img/ic_drawer_2.svg +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/src/web/ui-dist/img/ic_logo.svg b/src/web/ui-dist/img/ic_logo.svg deleted file mode 100644 index 1f7e03c..0000000 --- a/src/web/ui-dist/img/ic_logo.svg +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - - - - - - - diff --git a/src/web/ui-dist/img/ic_navigate_before.svg b/src/web/ui-dist/img/ic_navigate_before.svg deleted file mode 100644 index f4a753b..0000000 --- a/src/web/ui-dist/img/ic_navigate_before.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/web/ui-dist/img/ic_navigate_next.svg b/src/web/ui-dist/img/ic_navigate_next.svg deleted file mode 100644 index 6f4bc0a..0000000 --- a/src/web/ui-dist/img/ic_navigate_next.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/web/ui-dist/img/ic_presets.svg b/src/web/ui-dist/img/ic_presets.svg deleted file mode 100644 index 5f3d7d5..0000000 --- a/src/web/ui-dist/img/ic_presets.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - diff --git a/src/web/ui-dist/img/ic_presets_white.svg b/src/web/ui-dist/img/ic_presets_white.svg deleted file mode 100644 index 931ebb2..0000000 --- a/src/web/ui-dist/img/ic_presets_white.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - diff --git a/src/web/ui-dist/index.html b/src/web/ui-dist/index.html index 543e560..e52b0f8 100644 --- a/src/web/ui-dist/index.html +++ b/src/web/ui-dist/index.html @@ -2,12 +2,11 @@ - - - NAM Pedal - - + + ui + +
diff --git a/ui/package-lock.json b/ui/package-lock.json index e3233ac..abbd3ae 100644 --- a/ui/package-lock.json +++ b/ui/package-lock.json @@ -14,8 +14,12 @@ "@radix-ui/react-switch": "^1.3.0", "@radix-ui/react-tabs": "^1.1.14", "@tailwindcss/vite": "^4.3.1", + "class-variance-authority": "^0.7.1", + "clsx": "^2.1.1", + "lucide-react": "^1.18.0", "react": "^19.2.6", - "react-dom": "^19.2.6" + "react-dom": "^19.2.6", + "tailwind-merge": "^3.6.0" }, "devDependencies": { "@eslint/js": "^10.0.1", @@ -2228,6 +2232,27 @@ ], "license": "CC-BY-4.0" }, + "node_modules/class-variance-authority": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/class-variance-authority/-/class-variance-authority-0.7.1.tgz", + "integrity": "sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==", + "license": "Apache-2.0", + "dependencies": { + "clsx": "^2.1.1" + }, + "funding": { + "url": "https://polar.sh/cva" + } + }, + "node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/convert-source-map": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", @@ -3105,6 +3130,15 @@ "yallist": "^3.0.2" } }, + "node_modules/lucide-react": { + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-1.18.0.tgz", + "integrity": "sha512-LZDb7H/0YfM+RJncD0hDQRCAu+vSGODqpe35TuVI8EuXaRjkczbsx7p8dY4J87F/MUSj6bpYqeI8nw8qXaAdmA==", + "license": "ISC", + "peerDependencies": { + "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, "node_modules/magic-string": { "version": "0.30.21", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", @@ -3479,6 +3513,16 @@ "node": ">=0.10.0" } }, + "node_modules/tailwind-merge": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-3.6.0.tgz", + "integrity": "sha512-uxL7qAVQriqRQPAyK3pj66VqskWqoZ37PW94jwOTwNfq/z9oyu1V+eqrZqtR2+fCiXdYOZe/Modt8GtvqNzu+w==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/dcastil" + } + }, "node_modules/tailwindcss": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.3.1.tgz", diff --git a/ui/package.json b/ui/package.json index 2ed07b5..23ffa15 100644 --- a/ui/package.json +++ b/ui/package.json @@ -16,8 +16,12 @@ "@radix-ui/react-switch": "^1.3.0", "@radix-ui/react-tabs": "^1.1.14", "@tailwindcss/vite": "^4.3.1", + "class-variance-authority": "^0.7.1", + "clsx": "^2.1.1", + "lucide-react": "^1.18.0", "react": "^19.2.6", - "react-dom": "^19.2.6" + "react-dom": "^19.2.6", + "tailwind-merge": "^3.6.0" }, "devDependencies": { "@eslint/js": "^10.0.1", diff --git a/ui/src/App.tsx b/ui/src/App.tsx index a994fdc..75fcb30 100644 --- a/ui/src/App.tsx +++ b/ui/src/App.tsx @@ -575,6 +575,7 @@ function PedalContent() { if (names.length > 0) setBankNames(names); const cp = state.current_preset; + if (!cp) return; const bank = data.banks?.[cp.bank]; const preset = bank?.presets?.[cp.program]; if (preset?.chain) { diff --git a/ui/src/pedal/FootswitchModeContext.tsx b/ui/src/pedal/FootswitchModeContext.tsx index 35c8e32..6b691f8 100644 --- a/ui/src/pedal/FootswitchModeContext.tsx +++ b/ui/src/pedal/FootswitchModeContext.tsx @@ -3,8 +3,8 @@ * to all footswitch components. */ -import { createContext, useContext, useState, useCallback, type ReactNode } from 'react'; -import type { FootswitchMode, ScribbleStripData, PedalState, PedalBlock } from '../types'; +import { createContext, useContext, useState, useCallback, useEffect, type ReactNode } from 'react'; +import type { FootswitchMode, ScribbleStripData, PedalState, PedalBlock } from './types'; import { apiPost, activatePreset } from "./hooks/usePedalState"; // ── Context Shape ───────────────────────────────────────────── @@ -198,9 +198,23 @@ export function FootswitchModeProvider({ onToggleBlock, }: FootswitchModeProviderProps) { const [mode, setMode] = useState('stomp'); - const [currentBankIndex, setCurrentBankIndex] = useState(0); + const [currentBankIndex, setCurrentBankIndex] = useState(() => { + try { + const saved = localStorage.getItem('pedal-footswitch-bank'); + return saved !== null ? parseInt(saved, 10) : 0; + } catch { + return 0; + } + }); const [currentPresetIndex, setCurrentPresetIndex] = useState(0); - const [dirty, setDirty] = useState(false); + const [dirty, _setDirty] = useState(false); + + // Persist bank index to localStorage + useEffect(() => { + try { + localStorage.setItem('pedal-footswitch-bank', String(currentBankIndex)); + } catch { /* quota exceeded or storage disabled */ } + }, [currentBankIndex]); // Generate scribble data based on mode let scribbleData: ScribbleStripData[]; diff --git a/ui/src/pedal/footswitch/ScribbleStrip.tsx b/ui/src/pedal/footswitch/ScribbleStrip.tsx index e60788d..e529cd1 100644 --- a/ui/src/pedal/footswitch/ScribbleStrip.tsx +++ b/ui/src/pedal/footswitch/ScribbleStrip.tsx @@ -5,7 +5,7 @@ * Helix / Line 6 scribble strip LCDs. */ -import type { ScribbleStripData, ScribbleColor } from '../types'; +import type { ScribbleStripData } from '../types'; import { SCRIBBLE_COLORS } from '../types'; import { useDoubleTap } from '../hooks/useDoubleTap'; diff --git a/ui/tsconfig.app.json b/ui/tsconfig.app.json index 7f42e5f..9918c77 100644 --- a/ui/tsconfig.app.json +++ b/ui/tsconfig.app.json @@ -6,6 +6,7 @@ "module": "esnext", "types": ["vite/client"], "skipLibCheck": true, + "ignoreDeprecations": "6.0", /* Bundler mode */ "moduleResolution": "bundler", @@ -14,6 +15,10 @@ "moduleDetection": "force", "noEmit": true, "jsx": "react-jsx", + "baseUrl": ".", + "paths": { + "@/*": ["./src/*"] + }, /* Linting */ "noUnusedLocals": true, diff --git a/ui/vite.config.ts b/ui/vite.config.ts index 5c3e073..8be321e 100644 --- a/ui/vite.config.ts +++ b/ui/vite.config.ts @@ -4,6 +4,7 @@ import tailwindcss from '@tailwindcss/vite' import path from 'path' export default defineConfig({ + base: '/ui/', plugins: [react(), tailwindcss()], resolve: { alias: {