From e69656721912d26be444573dd4b058b163edf7a2 Mon Sep 17 00:00:00 2001 From: singhAmandeep007 Date: Mon, 27 May 2024 23:09:25 +0530 Subject: [PATCH] Updates --- asset-manifest.json | 20 +++++++++---------- index.html | 2 +- static/css/main.4796c0c8.css | 4 ++++ static/css/main.4796c0c8.css.map | 1 + static/css/main.bcc4f4b4.css | 4 ---- static/css/main.bcc4f4b4.css.map | 1 - static/js/143.f42d1e2d.chunk.js | 3 +++ ....txt => 143.f42d1e2d.chunk.js.LICENSE.txt} | 0 static/js/143.f42d1e2d.chunk.js.map | 1 + static/js/145.d0e92784.chunk.js | 2 -- static/js/145.d0e92784.chunk.js.map | 1 - static/js/759.2b170287.chunk.js | 2 ++ static/js/759.2b170287.chunk.js.map | 1 + static/js/824.5f397999.chunk.js | 3 --- static/js/824.5f397999.chunk.js.map | 1 - static/js/main.0aef8a69.js | 3 +++ ...CENSE.txt => main.0aef8a69.js.LICENSE.txt} | 0 static/js/main.0aef8a69.js.map | 1 + static/js/main.93a233b6.js | 3 --- static/js/main.93a233b6.js.map | 1 - 20 files changed, 27 insertions(+), 27 deletions(-) create mode 100644 static/css/main.4796c0c8.css create mode 100644 static/css/main.4796c0c8.css.map delete mode 100644 static/css/main.bcc4f4b4.css delete mode 100644 static/css/main.bcc4f4b4.css.map create mode 100644 static/js/143.f42d1e2d.chunk.js rename static/js/{824.5f397999.chunk.js.LICENSE.txt => 143.f42d1e2d.chunk.js.LICENSE.txt} (100%) create mode 100644 static/js/143.f42d1e2d.chunk.js.map delete mode 100644 static/js/145.d0e92784.chunk.js delete mode 100644 static/js/145.d0e92784.chunk.js.map create mode 100644 static/js/759.2b170287.chunk.js create mode 100644 static/js/759.2b170287.chunk.js.map delete mode 100644 static/js/824.5f397999.chunk.js delete mode 100644 static/js/824.5f397999.chunk.js.map create mode 100644 static/js/main.0aef8a69.js rename static/js/{main.93a233b6.js.LICENSE.txt => main.0aef8a69.js.LICENSE.txt} (100%) create mode 100644 static/js/main.0aef8a69.js.map delete mode 100644 static/js/main.93a233b6.js delete mode 100644 static/js/main.93a233b6.js.map diff --git a/asset-manifest.json b/asset-manifest.json index 195a429..d8c3276 100644 --- a/asset-manifest.json +++ b/asset-manifest.json @@ -1,7 +1,7 @@ { "files": { - "main.css": "./static/css/main.bcc4f4b4.css", - "main.js": "./static/js/main.93a233b6.js", + "main.css": "./static/css/main.4796c0c8.css", + "main.js": "./static/js/main.0aef8a69.js", "static/js/745.3e801dbd.chunk.js": "./static/js/745.3e801dbd.chunk.js", "static/js/938.b379432d.chunk.js": "./static/js/938.b379432d.chunk.js", "static/js/244.3fd1160e.chunk.js": "./static/js/244.3fd1160e.chunk.js", @@ -11,7 +11,7 @@ "static/js/340.b4d32b90.chunk.js": "./static/js/340.b4d32b90.chunk.js", "static/js/551.22bf1dc5.chunk.js": "./static/js/551.22bf1dc5.chunk.js", "static/js/253.6c53029a.chunk.js": "./static/js/253.6c53029a.chunk.js", - "static/js/145.d0e92784.chunk.js": "./static/js/145.d0e92784.chunk.js", + "static/js/759.2b170287.chunk.js": "./static/js/759.2b170287.chunk.js", "static/js/453.061517d3.chunk.js": "./static/js/453.061517d3.chunk.js", "static/js/9.73259943.chunk.js": "./static/js/9.73259943.chunk.js", "static/js/796.7eed802b.chunk.js": "./static/js/796.7eed802b.chunk.js", @@ -37,12 +37,12 @@ "static/js/266.1706de93.chunk.js": "./static/js/266.1706de93.chunk.js", "static/js/928.bb322e53.chunk.js": "./static/js/928.bb322e53.chunk.js", "static/js/806.98a529f3.chunk.js": "./static/js/806.98a529f3.chunk.js", - "static/js/824.5f397999.chunk.js": "./static/js/824.5f397999.chunk.js", + "static/js/143.f42d1e2d.chunk.js": "./static/js/143.f42d1e2d.chunk.js", "index.html": "./index.html", - "main.bcc4f4b4.css.map": "./static/css/main.bcc4f4b4.css.map", - "main.93a233b6.js.map": "./static/js/main.93a233b6.js.map", + "main.4796c0c8.css.map": "./static/css/main.4796c0c8.css.map", + "main.0aef8a69.js.map": "./static/js/main.0aef8a69.js.map", "745.3e801dbd.chunk.js.map": "./static/js/745.3e801dbd.chunk.js.map", - "145.d0e92784.chunk.js.map": "./static/js/145.d0e92784.chunk.js.map", + "759.2b170287.chunk.js.map": "./static/js/759.2b170287.chunk.js.map", "453.061517d3.chunk.js.map": "./static/js/453.061517d3.chunk.js.map", "9.73259943.chunk.js.map": "./static/js/9.73259943.chunk.js.map", "796.7eed802b.chunk.js.map": "./static/js/796.7eed802b.chunk.js.map", @@ -67,10 +67,10 @@ "266.1706de93.chunk.js.map": "./static/js/266.1706de93.chunk.js.map", "928.bb322e53.chunk.js.map": "./static/js/928.bb322e53.chunk.js.map", "806.98a529f3.chunk.js.map": "./static/js/806.98a529f3.chunk.js.map", - "824.5f397999.chunk.js.map": "./static/js/824.5f397999.chunk.js.map" + "143.f42d1e2d.chunk.js.map": "./static/js/143.f42d1e2d.chunk.js.map" }, "entrypoints": [ - "static/css/main.bcc4f4b4.css", - "static/js/main.93a233b6.js" + "static/css/main.4796c0c8.css", + "static/js/main.0aef8a69.js" ] } \ No newline at end of file diff --git a/index.html b/index.html index 5188103..70689e7 100644 --- a/index.html +++ b/index.html @@ -1 +1 @@ -Todo App
\ No newline at end of file +Todo App
\ No newline at end of file diff --git a/static/css/main.4796c0c8.css b/static/css/main.4796c0c8.css new file mode 100644 index 0000000..76dabf8 --- /dev/null +++ b/static/css/main.4796c0c8.css @@ -0,0 +1,4 @@ +/* +! tailwindcss v3.4.3 | MIT License | https://tailwindcss.com +*/*,:after,:before{border:0 solid #e5e7eb;box-sizing:border-box}:after,:before{--tw-content:""}:host,html{-webkit-text-size-adjust:100%;font-feature-settings:normal;-webkit-tap-highlight-color:transparent;font-family:Inter var,ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-variation-settings:normal;line-height:1.5;tab-size:4}body{line-height:inherit;margin:0}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-feature-settings:normal;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em;font-variation-settings:normal}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:initial}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}button,input,optgroup,select,textarea{font-feature-settings:inherit;color:inherit;font-family:inherit;font-size:100%;font-variation-settings:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:initial;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:initial}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::placeholder,textarea::placeholder{color:#9ca3af;opacity:1}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}[hidden]{display:none}:root{--background:0 0% 100%;--foreground:240 10% 3.9%;--primary:142 76% 36%;--primary-foreground:355.7 100% 97.3%;--secondary:240 4.8% 95.9%;--secondary-foreground:240 5.9% 10%;--muted:240 4.8% 95.9%;--muted-foreground:240 3.8% 46.1%;--accent:240 4.8% 95.9%;--accent-foreground:240 5.9% 10%;--accent-dark:0 0% 90.9%;--destructive:0 84.2% 60.2%;--destructive-foreground:0 0% 98%;--border:240 5.9% 90%;--input:240 5.9% 90%;--ring:142.1 76.2% 36.3%;--radius:0.5rem;--popover:0 0% 100%;--popover-foreground:222.2 47.4% 11.2%;--card:0 0% 100%;--card-foreground:222.2 47.4% 11.2%;--navbar-height:4rem;--footer-height:3rem;--content-height:calc(100dvh - var(--navbar-height) - var(--footer-height))}.dark{--background:20 14.3% 4.1%;--foreground:0 0% 95%;--primary:142.1 70.6% 45.3%;--primary-foreground:144.9 80.4% 10%;--secondary:240 3.7% 15.9%;--secondary-foreground:0 0% 98%;--muted:0 0% 15%;--muted-foreground:240 5% 64.9%;--accent:12 6.5% 15.1%;--accent-foreground:0 0% 98%;--accent-dark:0 4.3% 24.1%;--destructive:0 62.8% 30.6%;--destructive-foreground:0 85.7% 97.3%;--border:240 3.7% 15.9%;--input:240 3.7% 15.9%;--ring:142.4 71.8% 29.2%;--popover:224 71% 4%;--popover-foreground:215 20.2% 65.1%;--card:224 71% 4%;--card-foreground:213 31% 91%}*{border-color:#e4e4e7;border-color:hsl(var(--border))}body{font-feature-settings:"rlig" 1,"calt" 1;background-color:#fff;background-color:hsl(var(--background));color:#09090b;color:hsl(var(--foreground))}*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }.icon{height:1.2rem;width:1.2rem}.sr-only{clip:rect(0,0,0,0);border-width:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.pointer-events-auto{pointer-events:auto}.absolute{position:absolute}.relative{position:relative}.bottom-full{bottom:100%}.left-0{left:0}.left-2{left:.5rem}.right-0{right:0}.top-full{top:100%}.z-10{z-index:10}.z-50{z-index:50}.-mx-1{margin-left:-.25rem;margin-right:-.25rem}.mx-auto{margin-left:auto;margin-right:auto}.my-1{margin-bottom:.25rem;margin-top:.25rem}.my-6{margin-bottom:1.5rem;margin-top:1.5rem}.mb-2{margin-bottom:.5rem}.ml-1{margin-left:.25rem}.ml-6{margin-left:1.5rem}.ml-auto{margin-left:auto}.mr-2{margin-right:.5rem}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-6{margin-top:1.5rem}.mt-8{margin-top:2rem}.block{display:block}.inline-block{display:inline-block}.flex{display:flex}.inline-flex{display:inline-flex}.h-10{height:2.5rem}.h-11{height:2.75rem}.h-2{height:.5rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-4{height:1rem}.h-9{height:2.25rem}.h-\[--content-height\]{height:calc(100dvh - 7rem);height:var(--content-height)}.h-\[--footer-height\]{height:3rem;height:var(--footer-height)}.h-\[--navbar-height\]{height:4rem;height:var(--navbar-height)}.h-dvh{height:100dvh}.h-full{height:100%}.h-px{height:1px}.max-h-52{max-height:13rem}.w-1\/2{width:50%}.w-10{width:2.5rem}.w-2{width:.5rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-4{width:1rem}.w-full{width:100%}.w-max{width:-webkit-max-content;width:max-content}.min-w-\[200px\]{min-width:200px}.min-w-\[8rem\]{min-width:8rem}.min-w-min{min-width:-webkit-min-content;min-width:min-content}.max-w-screen-md{max-width:768px}.flex-1{flex:1 1}.shrink-0{flex-shrink:0}.rotate-0{--tw-rotate:0deg}.rotate-0,.rotate-90{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-90{--tw-rotate:90deg}.scale-0{--tw-scale-x:0;--tw-scale-y:0}.scale-0,.scale-100{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-100{--tw-scale-x:1;--tw-scale-y:1}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.select-none{-webkit-user-select:none;user-select:none}.scroll-m-20{scroll-margin:5rem}.list-disc{list-style-type:disc}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0;border-bottom-width:calc(1px*var(--tw-divide-y-reverse));border-top-width:calc(1px*(1 - var(--tw-divide-y-reverse)))}.divide-accent-dark>:not([hidden])~:not([hidden]){border-color:#e8e8e8;border-color:hsl(var(--accent-dark))}.overflow-hidden{overflow:hidden}.overflow-scroll{overflow:scroll}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-x-scroll{overflow-x:scroll}.text-clip{text-overflow:clip}.whitespace-nowrap{white-space:nowrap}.text-wrap{text-wrap:wrap}.text-nowrap{text-wrap:nowrap}.rounded{border-radius:.25rem}.rounded-md{border-radius:calc(.5rem - 2px);border-radius:calc(var(--radius) - 2px)}.rounded-sm{border-radius:calc(.5rem - 4px);border-radius:calc(var(--radius) - 4px)}.border{border-width:1px}.border-2{border-width:2px}.border-b-2{border-bottom-width:2px}.border-l-2{border-left-width:2px}.border-r-2{border-right-width:2px}.border-t-2{border-top-width:2px}.border-accent-dark{border-color:#e8e8e8;border-color:hsl(var(--accent-dark))}.border-input{border-color:#e4e4e7;border-color:hsl(var(--input))}.border-primary{border-color:#16a249;border-color:hsl(var(--primary))}.bg-background{background-color:#fff;background-color:hsl(var(--background))}.bg-destructive{background-color:#ef4444;background-color:hsl(var(--destructive))}.bg-muted{background-color:#f4f4f5;background-color:hsl(var(--muted))}.bg-popover{background-color:#fff;background-color:hsl(var(--popover))}.bg-primary{background-color:#16a249;background-color:hsl(var(--primary))}.bg-secondary{background-color:#f4f4f5;background-color:hsl(var(--secondary))}.bg-secondary-foreground{background-color:#18181b;background-color:hsl(var(--secondary-foreground))}.fill-current{fill:currentColor}.fill-primary{fill:#16a249;fill:hsl(var(--primary))}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-4{padding:1rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-8{padding-left:2rem;padding-right:2rem}.px-\[0\.3rem\]{padding-left:.3rem;padding-right:.3rem}.py-1{padding-bottom:.25rem;padding-top:.25rem}.py-1\.5{padding-bottom:.375rem;padding-top:.375rem}.py-2{padding-bottom:.5rem;padding-top:.5rem}.py-\[0\.2rem\]{padding-bottom:.2rem;padding-top:.2rem}.pb-0{padding-bottom:0}.pb-2{padding-bottom:.5rem}.pl-6{padding-left:1.5rem}.pl-8{padding-left:2rem}.pr-2{padding-right:.5rem}.pt-5{padding-top:1.25rem}.text-center{text-align:center}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-extrabold{font-weight:800}.font-medium{font-weight:500}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.lowercase{text-transform:lowercase}.italic{font-style:italic}.leading-7{line-height:1.75rem}.leading-none{line-height:1}.tracking-tight{letter-spacing:-.025em}.tracking-widest{letter-spacing:.1em}.text-current{color:currentColor}.text-destructive{color:#ef4444;color:hsl(var(--destructive))}.text-destructive-foreground{color:#fafafa;color:hsl(var(--destructive-foreground))}.text-foreground{color:#09090b;color:hsl(var(--foreground))}.text-muted-foreground{color:#71717a;color:hsl(var(--muted-foreground))}.text-popover-foreground{color:#0f172a;color:hsl(var(--popover-foreground))}.text-primary{color:#16a249;color:hsl(var(--primary))}.text-primary-foreground{color:#fff1f2;color:hsl(var(--primary-foreground))}.text-secondary-foreground{color:#18181b;color:hsl(var(--secondary-foreground))}.underline-offset-4{text-underline-offset:4px}.opacity-60{opacity:.6}.shadow-lg{--tw-shadow:0 10px 15px -3px #0000001a,0 4px 6px -4px #0000001a;--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.shadow-lg,.shadow-md{box-shadow:0 0 #0000,0 0 #0000,var(--tw-shadow);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px #0000001a,0 2px 4px -2px #0000001a;--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color)}.outline-none{outline:2px solid #0000;outline-offset:2px}.outline{outline-style:solid}.ring-offset-background{--tw-ring-offset-color:hsl(var(--background))}.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-all{transition-duration:.15s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-colors{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1)}@keyframes enter{0%{opacity:1;opacity:var(--tw-enter-opacity,1);transform:translateZ(0) scaleX(1) rotate(0);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0) scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1)) rotate(var(--tw-enter-rotate,0))}}@keyframes exit{to{opacity:1;opacity:var(--tw-exit-opacity,1);transform:translateZ(0) scaleX(1) rotate(0);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0) scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1)) rotate(var(--tw-exit-rotate,0))}}.file\:border-0::-webkit-file-upload-button{border-width:0}.file\:border-0::file-selector-button{border-width:0}.file\:bg-transparent::-webkit-file-upload-button{background-color:initial}.file\:bg-transparent::file-selector-button{background-color:initial}.file\:text-sm::-webkit-file-upload-button{font-size:.875rem;line-height:1.25rem}.file\:text-sm::file-selector-button{font-size:.875rem;line-height:1.25rem}.file\:font-medium::-webkit-file-upload-button{font-weight:500}.file\:font-medium::file-selector-button{font-weight:500}.placeholder\:text-muted-foreground::placeholder{color:#71717a;color:hsl(var(--muted-foreground))}.first\:mt-0:first-child{margin-top:0}.last\:mb-0:last-child{margin-bottom:0}.hover\:border-b-2:hover{border-bottom-width:2px}.hover\:bg-accent:hover{background-color:#f4f4f5;background-color:hsl(var(--accent))}.hover\:bg-accent-dark:hover{background-color:#e8e8e8;background-color:hsl(var(--accent-dark))}.hover\:bg-destructive\/90:hover{background-color:#ef4444e6;background-color:hsl(var(--destructive)/.9)}.hover\:bg-primary\/90:hover{background-color:#16a249e6;background-color:hsl(var(--primary)/.9)}.hover\:bg-secondary\/80:hover{background-color:#f4f4f5cc;background-color:hsl(var(--secondary)/.8)}.hover\:text-accent-foreground:hover{color:#18181b;color:hsl(var(--accent-foreground))}.hover\:text-primary:hover{color:#16a249;color:hsl(var(--primary))}.hover\:underline:hover{text-decoration-line:underline}.focus\:bg-accent:focus{background-color:#f4f4f5;background-color:hsl(var(--accent))}.focus\:text-accent-foreground:focus{color:#18181b;color:hsl(var(--accent-foreground))}.focus-visible\:outline-none:focus-visible{outline:2px solid #0000;outline-offset:2px}.focus-visible\:ring-2:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),0 0 #0000;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-visible\:ring-ring:focus-visible{--tw-ring-color:hsl(var(--ring))}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}.group:hover .group-hover\:bg-secondary{background-color:#f4f4f5;background-color:hsl(var(--secondary))}.group:hover .group-hover\:text-destructive{color:#ef4444;color:hsl(var(--destructive))}.group:hover .group-hover\:text-primary{color:#16a249;color:hsl(var(--primary))}.peer[aria-checked=true]~.peer-aria-\[checked\=true\]\:line-through{text-decoration-line:line-through}.data-\[disabled\]\:pointer-events-none[data-disabled]{pointer-events:none}.data-\[state\=checked\]\:bg-primary[data-state=checked]{background-color:#16a249;background-color:hsl(var(--primary))}.data-\[state\=open\]\:bg-accent[data-state=open]{background-color:#f4f4f5;background-color:hsl(var(--accent))}.data-\[state\=checked\]\:text-primary-foreground[data-state=checked]{color:#fff1f2;color:hsl(var(--primary-foreground))}.data-\[disabled\]\:opacity-50[data-disabled]{opacity:.5}.data-\[state\=open\]\:animate-in[data-state=open]{--tw-enter-opacity:initial;--tw-enter-scale:initial;--tw-enter-rotate:initial;--tw-enter-translate-x:initial;--tw-enter-translate-y:initial;animation-duration:.15s;animation-name:enter}.data-\[state\=closed\]\:animate-out[data-state=closed]{--tw-exit-opacity:initial;--tw-exit-scale:initial;--tw-exit-rotate:initial;--tw-exit-translate-x:initial;--tw-exit-translate-y:initial;animation-duration:.15s;animation-name:exit}.data-\[state\=closed\]\:fade-out-0[data-state=closed]{--tw-exit-opacity:0}.data-\[state\=open\]\:fade-in-0[data-state=open]{--tw-enter-opacity:0}.data-\[state\=closed\]\:zoom-out-95[data-state=closed]{--tw-exit-scale:.95}.data-\[state\=open\]\:zoom-in-95[data-state=open]{--tw-enter-scale:.95}.data-\[side\=bottom\]\:slide-in-from-top-2[data-side=bottom]{--tw-enter-translate-y:-0.5rem}.data-\[side\=left\]\:slide-in-from-right-2[data-side=left]{--tw-enter-translate-x:0.5rem}.data-\[side\=right\]\:slide-in-from-left-2[data-side=right]{--tw-enter-translate-x:-0.5rem}.data-\[side\=top\]\:slide-in-from-bottom-2[data-side=top]{--tw-enter-translate-y:0.5rem}.dark\:-rotate-90:is(.dark *){--tw-rotate:-90deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.dark\:rotate-0:is(.dark *){--tw-rotate:0deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.dark\:scale-0:is(.dark *){--tw-scale-x:0;--tw-scale-y:0;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.dark\:scale-100:is(.dark *){--tw-scale-x:1;--tw-scale-y:1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@media (min-width:768px){.md\:p-8{padding:2rem}}@media (min-width:1024px){.lg\:h-3\/4{height:75%}.lg\:text-5xl{font-size:3rem;line-height:1}}.\[\&\:not\(\:first-child\)\]\:mt-0:not(:first-child){margin-top:0}.\[\&\:not\(\:first-child\)\]\:mt-6:not(:first-child){margin-top:1.5rem}.\[\&\>li\]\:mt-2>li{margin-top:.5rem} +/*# sourceMappingURL=main.4796c0c8.css.map*/ \ No newline at end of file diff --git a/static/css/main.4796c0c8.css.map b/static/css/main.4796c0c8.css.map new file mode 100644 index 0000000..282ca99 --- /dev/null +++ b/static/css/main.4796c0c8.css.map @@ -0,0 +1 @@ +{"version":3,"file":"static/css/main.4796c0c8.css","mappings":"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","sources":["index.css"],"sourcesContent":["@tailwind base;\n@tailwind components;\n@tailwind utilities;\n\n@layer base {\n :root {\n --background: 0 0% 100%;\n --foreground: 240 10% 3.9%;\n /* #22c55e */\n --primary: 142 76% 36%;\n --primary-foreground: 355.7 100% 97.3%;\n --secondary: 240 4.8% 95.9%;\n --secondary-foreground: 240 5.9% 10%;\n --muted: 240 4.8% 95.9%;\n --muted-foreground: 240 3.8% 46.1%;\n --accent: 240 4.8% 95.9%;\n --accent-foreground: 240 5.9% 10%;\n --accent-dark: 0 0% 90.9%;\n --destructive: 0 84.2% 60.2%;\n --destructive-foreground: 0 0% 98%;\n --border: 240 5.9% 90%;\n --input: 240 5.9% 90%;\n --ring: 142.1 76.2% 36.3%;\n --radius: 0.5rem;\n --popover: 0 0% 100%;\n --popover-foreground: 222.2 47.4% 11.2%;\n --card: 0 0% 100%;\n --card-foreground: 222.2 47.4% 11.2%;\n\n --navbar-height: 4rem;\n --footer-height: 3rem;\n --content-height: calc(100dvh - var(--navbar-height) - var(--footer-height));\n }\n\n .dark {\n --background: 20 14.3% 4.1%;\n --foreground: 0 0% 95%;\n --primary: 142.1 70.6% 45.3%;\n --primary-foreground: 144.9 80.4% 10%;\n --secondary: 240 3.7% 15.9%;\n --secondary-foreground: 0 0% 98%;\n --muted: 0 0% 15%;\n --muted-foreground: 240 5% 64.9%;\n --accent: 12 6.5% 15.1%;\n --accent-foreground: 0 0% 98%;\n --accent-dark: 0 4.3% 24.1%;\n --destructive: 0 62.8% 30.6%;\n --destructive-foreground: 0 85.7% 97.3%;\n --border: 240 3.7% 15.9%;\n --input: 240 3.7% 15.9%;\n --ring: 142.4 71.8% 29.2%;\n --popover: 224 71% 4%;\n --popover-foreground: 215 20.2% 65.1%;\n --card: 224 71% 4%;\n --card-foreground: 213 31% 91%;\n }\n}\n\n@layer base {\n * {\n @apply border-border;\n }\n body {\n @apply bg-background text-foreground;\n\n font-feature-settings:\n \"rlig\" 1,\n \"calt\" 1;\n }\n}\n\n@layer components {\n .icon {\n @apply h-[1.2rem] w-[1.2rem];\n }\n\n .outline-primary-l {\n /* variable not working */\n box-shadow: -1px 0 0 1px #22c55e;\n }\n}\n"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/static/css/main.bcc4f4b4.css b/static/css/main.bcc4f4b4.css deleted file mode 100644 index 6a46129..0000000 --- a/static/css/main.bcc4f4b4.css +++ /dev/null @@ -1,4 +0,0 @@ -/* -! tailwindcss v3.4.3 | MIT License | https://tailwindcss.com -*/*,:after,:before{border:0 solid #e5e7eb;box-sizing:border-box}:after,:before{--tw-content:""}:host,html{-webkit-text-size-adjust:100%;font-feature-settings:normal;-webkit-tap-highlight-color:transparent;font-family:Inter var,ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-variation-settings:normal;line-height:1.5;tab-size:4}body{line-height:inherit;margin:0}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-feature-settings:normal;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em;font-variation-settings:normal}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:initial}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}button,input,optgroup,select,textarea{font-feature-settings:inherit;color:inherit;font-family:inherit;font-size:100%;font-variation-settings:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:initial;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:initial}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::placeholder,textarea::placeholder{color:#9ca3af;opacity:1}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}[hidden]{display:none}:root{--background:0 0% 100%;--foreground:240 10% 3.9%;--primary:142 76% 36%;--primary-foreground:355.7 100% 97.3%;--secondary:240 4.8% 95.9%;--secondary-foreground:240 5.9% 10%;--muted:240 4.8% 95.9%;--muted-foreground:240 3.8% 46.1%;--accent:240 4.8% 95.9%;--accent-foreground:240 5.9% 10%;--accent-dark:0 0% 90.9%;--destructive:0 84.2% 60.2%;--destructive-foreground:0 0% 98%;--border:240 5.9% 90%;--input:240 5.9% 90%;--ring:142.1 76.2% 36.3%;--radius:0.5rem;--navbar-height:4rem;--footer-height:3rem;--content-height:calc(100dvh - var(--navbar-height) - var(--footer-height))}.dark{--background:20 14.3% 4.1%;--foreground:0 0% 95%;--primary:142.1 70.6% 45.3%;--primary-foreground:144.9 80.4% 10%;--secondary:240 3.7% 15.9%;--secondary-foreground:0 0% 98%;--muted:0 0% 15%;--muted-foreground:240 5% 64.9%;--accent:12 6.5% 15.1%;--accent-foreground:0 0% 98%;--accent-dark:0 4.3% 24.1%;--destructive:0 62.8% 30.6%;--destructive-foreground:0 85.7% 97.3%;--border:240 3.7% 15.9%;--input:240 3.7% 15.9%;--ring:142.4 71.8% 29.2%}*{border-color:#e4e4e7;border-color:hsl(var(--border))}body{background-color:#fff;background-color:hsl(var(--background));color:#09090b;color:hsl(var(--foreground))}*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }.icon{height:1.2rem;width:1.2rem}.sr-only{clip:rect(0,0,0,0);border-width:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.pointer-events-auto{pointer-events:auto}.absolute{position:absolute}.relative{position:relative}.bottom-full{bottom:100%}.left-0{left:0}.right-0{right:0}.top-full{top:100%}.z-10{z-index:10}.mx-auto{margin-left:auto;margin-right:auto}.my-2{margin-bottom:.5rem;margin-top:.5rem}.my-6{margin-bottom:1.5rem;margin-top:1.5rem}.mb-2{margin-bottom:.5rem}.ml-1{margin-left:.25rem}.ml-6{margin-left:1.5rem}.mr-2{margin-right:.5rem}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-6{margin-top:1.5rem}.mt-8{margin-top:2rem}.block{display:block}.inline-block{display:inline-block}.flex{display:flex}.inline-flex{display:inline-flex}.h-10{height:2.5rem}.h-11{height:2.75rem}.h-9{height:2.25rem}.h-\[--content-height\]{height:calc(100dvh - 7rem);height:var(--content-height)}.h-\[--footer-height\]{height:3rem;height:var(--footer-height)}.h-\[--navbar-height\]{height:4rem;height:var(--navbar-height)}.h-dvh{height:100dvh}.h-full{height:100%}.max-h-52{max-height:13rem}.w-1\/2{width:50%}.w-10{width:2.5rem}.w-full{width:100%}.w-max{width:-webkit-max-content;width:max-content}.min-w-\[200px\]{min-width:200px}.max-w-screen-md{max-width:768px}.flex-1{flex:1 1}.shrink-0{flex-shrink:0}.rotate-0{--tw-rotate:0deg}.rotate-0,.rotate-90{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-90{--tw-rotate:90deg}.scale-0{--tw-scale-x:0;--tw-scale-y:0}.scale-0,.scale-100{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-100{--tw-scale-x:1;--tw-scale-y:1}.cursor-pointer{cursor:pointer}.scroll-m-20{scroll-margin:5rem}.list-disc{list-style-type:disc}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0;border-bottom-width:calc(1px*var(--tw-divide-y-reverse));border-top-width:calc(1px*(1 - var(--tw-divide-y-reverse)))}.divide-accent-dark>:not([hidden])~:not([hidden]){border-color:#e8e8e8;border-color:hsl(var(--accent-dark))}.overflow-hidden{overflow:hidden}.overflow-scroll{overflow:scroll}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-x-scroll{overflow-x:scroll}.text-clip{text-overflow:clip}.whitespace-nowrap{white-space:nowrap}.text-wrap{text-wrap:wrap}.text-nowrap{text-wrap:nowrap}.rounded{border-radius:.25rem}.rounded-md{border-radius:calc(.5rem - 2px);border-radius:calc(var(--radius) - 2px)}.border{border-width:1px}.border-2{border-width:2px}.border-b-2{border-bottom-width:2px}.border-l-2{border-left-width:2px}.border-r-2{border-right-width:2px}.border-t-2{border-top-width:2px}.border-accent-dark{border-color:#e8e8e8;border-color:hsl(var(--accent-dark))}.border-input{border-color:#e4e4e7;border-color:hsl(var(--input))}.border-primary{border-color:#16a249;border-color:hsl(var(--primary))}.bg-accent-dark{background-color:#e8e8e8;background-color:hsl(var(--accent-dark))}.bg-background{background-color:#fff;background-color:hsl(var(--background))}.bg-destructive{background-color:#ef4444;background-color:hsl(var(--destructive))}.bg-muted{background-color:#f4f4f5;background-color:hsl(var(--muted))}.bg-primary{background-color:#16a249;background-color:hsl(var(--primary))}.bg-secondary{background-color:#f4f4f5;background-color:hsl(var(--secondary))}.bg-secondary-foreground{background-color:#18181b;background-color:hsl(var(--secondary-foreground))}.fill-primary{fill:#16a249;fill:hsl(var(--primary))}.p-2{padding:.5rem}.p-4{padding:1rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-8{padding-left:2rem;padding-right:2rem}.px-\[0\.3rem\]{padding-left:.3rem;padding-right:.3rem}.py-1{padding-bottom:.25rem;padding-top:.25rem}.py-1\.5{padding-bottom:.375rem;padding-top:.375rem}.py-2{padding-bottom:.5rem;padding-top:.5rem}.py-\[0\.2rem\]{padding-bottom:.2rem;padding-top:.2rem}.pb-0{padding-bottom:0}.pb-2{padding-bottom:.5rem}.pl-6{padding-left:1.5rem}.pt-5{padding-top:1.25rem}.text-center{text-align:center}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.font-extrabold{font-weight:800}.font-medium{font-weight:500}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.lowercase{text-transform:lowercase}.italic{font-style:italic}.leading-7{line-height:1.75rem}.leading-none{line-height:1}.tracking-tight{letter-spacing:-.025em}.text-destructive{color:#ef4444;color:hsl(var(--destructive))}.text-destructive-foreground{color:#fafafa;color:hsl(var(--destructive-foreground))}.text-foreground{color:#09090b;color:hsl(var(--foreground))}.text-muted-foreground{color:#71717a;color:hsl(var(--muted-foreground))}.text-primary{color:#16a249;color:hsl(var(--primary))}.text-primary-foreground{color:#fff1f2;color:hsl(var(--primary-foreground))}.text-secondary-foreground{color:#18181b;color:hsl(var(--secondary-foreground))}.underline-offset-4{text-underline-offset:4px}.opacity-30{opacity:.3}.shadow-lg{--tw-shadow:0 10px 15px -3px #0000001a,0 4px 6px -4px #0000001a;--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color);box-shadow:0 0 #0000,0 0 #0000,var(--tw-shadow);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.outline{outline-style:solid}.ring-offset-background{--tw-ring-offset-color:hsl(var(--background))}.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-all{transition-duration:.15s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-colors{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1)}.file\:border-0::-webkit-file-upload-button{border-width:0}.file\:border-0::file-selector-button{border-width:0}.file\:bg-transparent::-webkit-file-upload-button{background-color:initial}.file\:bg-transparent::file-selector-button{background-color:initial}.file\:text-sm::-webkit-file-upload-button{font-size:.875rem;line-height:1.25rem}.file\:text-sm::file-selector-button{font-size:.875rem;line-height:1.25rem}.file\:font-medium::-webkit-file-upload-button{font-weight:500}.file\:font-medium::file-selector-button{font-weight:500}.placeholder\:text-muted-foreground::placeholder{color:#71717a;color:hsl(var(--muted-foreground))}.first\:mt-0:first-child{margin-top:0}.last\:mb-0:last-child{margin-bottom:0}.hover\:border-b-2:hover{border-bottom-width:2px}.hover\:bg-accent:hover{background-color:#f4f4f5;background-color:hsl(var(--accent))}.hover\:bg-accent-dark:hover{background-color:#e8e8e8;background-color:hsl(var(--accent-dark))}.hover\:bg-background:hover{background-color:#fff;background-color:hsl(var(--background))}.hover\:bg-destructive\/90:hover{background-color:#ef4444e6;background-color:hsl(var(--destructive)/.9)}.hover\:bg-primary\/90:hover{background-color:#16a249e6;background-color:hsl(var(--primary)/.9)}.hover\:bg-secondary-foreground:hover{background-color:#18181b;background-color:hsl(var(--secondary-foreground))}.hover\:bg-secondary\/80:hover{background-color:#f4f4f5cc;background-color:hsl(var(--secondary)/.8)}.hover\:text-accent:hover{color:#f4f4f5;color:hsl(var(--accent))}.hover\:text-accent-foreground:hover{color:#18181b;color:hsl(var(--accent-foreground))}.hover\:text-destructive:hover{color:#ef4444;color:hsl(var(--destructive))}.hover\:text-primary:hover{color:#16a249;color:hsl(var(--primary))}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-100:hover{opacity:1}.focus-visible\:outline-none:focus-visible{outline:2px solid #0000;outline-offset:2px}.focus-visible\:ring-2:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),0 0 #0000;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-visible\:ring-ring:focus-visible{--tw-ring-color:hsl(var(--ring))}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}.group:hover .group-hover\:bg-secondary{background-color:#f4f4f5;background-color:hsl(var(--secondary))}.group:hover .group-hover\:text-primary{color:#16a249;color:hsl(var(--primary))}.dark\:-rotate-90:is(.dark *){--tw-rotate:-90deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.dark\:rotate-0:is(.dark *){--tw-rotate:0deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.dark\:scale-0:is(.dark *){--tw-scale-x:0;--tw-scale-y:0;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.dark\:scale-100:is(.dark *){--tw-scale-x:1;--tw-scale-y:1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@media (min-width:768px){.md\:p-8{padding:2rem}}@media (min-width:1024px){.lg\:h-3\/4{height:75%}.lg\:text-5xl{font-size:3rem;line-height:1}}.\[\&\:not\(\:first-child\)\]\:mt-0:not(:first-child){margin-top:0}.\[\&\:not\(\:first-child\)\]\:mt-6:not(:first-child){margin-top:1.5rem}.\[\&\>li\]\:mt-2>li{margin-top:.5rem} -/*# sourceMappingURL=main.bcc4f4b4.css.map*/ \ No newline at end of file diff --git a/static/css/main.bcc4f4b4.css.map b/static/css/main.bcc4f4b4.css.map deleted file mode 100644 index 4b11ca5..0000000 --- a/static/css/main.bcc4f4b4.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"static/css/main.bcc4f4b4.css","mappings":"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","sources":["index.css"],"sourcesContent":["@tailwind base;\n@tailwind components;\n@tailwind utilities;\n\n@layer base {\n :root {\n --background: 0 0% 100%;\n --foreground: 240 10% 3.9%;\n /* #22c55e */\n --primary: 142 76% 36%;\n --primary-foreground: 355.7 100% 97.3%;\n --secondary: 240 4.8% 95.9%;\n --secondary-foreground: 240 5.9% 10%;\n --muted: 240 4.8% 95.9%;\n --muted-foreground: 240 3.8% 46.1%;\n --accent: 240 4.8% 95.9%;\n --accent-foreground: 240 5.9% 10%;\n --accent-dark: 0 0% 90.9%;\n --destructive: 0 84.2% 60.2%;\n --destructive-foreground: 0 0% 98%;\n --border: 240 5.9% 90%;\n --input: 240 5.9% 90%;\n --ring: 142.1 76.2% 36.3%;\n --radius: 0.5rem;\n\n --navbar-height: 4rem;\n --footer-height: 3rem;\n --content-height: calc(100dvh - var(--navbar-height) - var(--footer-height));\n }\n\n .dark {\n --background: 20 14.3% 4.1%;\n --foreground: 0 0% 95%;\n --primary: 142.1 70.6% 45.3%;\n --primary-foreground: 144.9 80.4% 10%;\n --secondary: 240 3.7% 15.9%;\n --secondary-foreground: 0 0% 98%;\n --muted: 0 0% 15%;\n --muted-foreground: 240 5% 64.9%;\n --accent: 12 6.5% 15.1%;\n --accent-foreground: 0 0% 98%;\n --accent-dark: 0 4.3% 24.1%;\n --destructive: 0 62.8% 30.6%;\n --destructive-foreground: 0 85.7% 97.3%;\n --border: 240 3.7% 15.9%;\n --input: 240 3.7% 15.9%;\n --ring: 142.4 71.8% 29.2%;\n }\n}\n\n@layer base {\n * {\n @apply border-border;\n }\n body {\n @apply bg-background text-foreground;\n }\n}\n\n@layer components {\n .icon {\n @apply h-[1.2rem] w-[1.2rem];\n }\n\n .outline-primary-l {\n /* variable not working */\n box-shadow: -1px 0 0 1px #22c55e;\n }\n}\n"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/static/js/143.f42d1e2d.chunk.js b/static/js/143.f42d1e2d.chunk.js new file mode 100644 index 0000000..03c630d --- /dev/null +++ b/static/js/143.f42d1e2d.chunk.js @@ -0,0 +1,3 @@ +/*! For license information please see 143.f42d1e2d.chunk.js.LICENSE.txt */ +(self.webpackChunktodo_app=self.webpackChunktodo_app||[]).push([[143],{1238:(e,t)=>{"use strict";t.Y=function(e,t){return l(e).some((function(e){var n=e.inverse,r="all"===e.type||t.type===e.type;if(r&&n||!r&&!n)return!1;var o=e.expressions.every((function(e){var n=e.feature,r=e.modifier,o=e.value,a=t[n];if(!a)return!1;switch(n){case"orientation":case"scan":return a.toLowerCase()===o.toLowerCase();case"width":case"height":case"device-width":case"device-height":o=u(o),a=u(a);break;case"resolution":o=s(o),a=s(a);break;case"aspect-ratio":case"device-aspect-ratio":case"device-pixel-ratio":o=c(o),a=c(a);break;case"grid":case"color":case"color-index":case"monochrome":o=parseInt(o,10)||1,a=parseInt(a,10)||0}switch(r){case"min":return a>=o;case"max":return a<=o;default:return a===o}}));return o&&!n||!o&&n}))};var n=/(?:(only|not)?\s*([^\s\(\)]+)(?:\s*and)?\s*)?(.+)?/i,r=/\(\s*([^\s\:\)]+)\s*(?:\:\s*([^\s\)]+))?\s*\)/,o=/^(?:(min|max)-)?(.+)/,a=/(em|rem|px|cm|mm|in|pt|pc)?$/,i=/(dpi|dpcm|dppx)?$/;function l(e){return e.split(",").map((function(e){var t=(e=e.trim()).match(n),a=t[1],i=t[2],l=t[3]||"",c={};return c.inverse=!!a&&"not"===a.toLowerCase(),c.type=i?i.toLowerCase():"all",l=l.match(/\([^\)]+\)/g)||[],c.expressions=l.map((function(e){var t=e.match(r),n=t[1].toLowerCase().match(o);return{modifier:n[1],feature:n[2],value:t[2]}})),c}))}function c(e){var t,n=Number(e);return n||(n=(t=e.match(/^(\d+)\s*\/\s*(\d+)$/))[1]/t[2]),n}function s(e){var t=parseFloat(e);switch(String(e).match(i)[1]){case"dpcm":return t/2.54;case"dppx":return 96*t;default:return t}}function u(e){var t=parseFloat(e);switch(String(e).match(a)[1]){case"em":case"rem":return 16*t;case"cm":return 96*t/2.54;case"mm":return 96*t/2.54/10;case"in":return 96*t;case"pt":return 72*t;case"pc":return 72*t/12;default:return t}}},2382:(e,t,n)=>{"use strict";n.d(t,{A:()=>r});const r=(0,n(3351).A)("ChevronDown",[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]])},5711:(e,t,n)=>{"use strict";n.d(t,{A:()=>r});const r=(0,n(3351).A)("ChevronUp",[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]])},5686:(e,t,n)=>{"use strict";n.d(t,{A:()=>r});const r=(0,n(3351).A)("EllipsisVertical",[["circle",{cx:"12",cy:"12",r:"1",key:"41hilf"}],["circle",{cx:"12",cy:"5",r:"1",key:"gxeob9"}],["circle",{cx:"12",cy:"19",r:"1",key:"lyex9k"}]])},5379:(e,t,n)=>{"use strict";n.d(t,{A:()=>r});const r=(0,n(3351).A)("Ellipsis",[["circle",{cx:"12",cy:"12",r:"1",key:"41hilf"}],["circle",{cx:"19",cy:"12",r:"1",key:"1wjl8i"}],["circle",{cx:"5",cy:"12",r:"1",key:"1pcz8c"}]])},5505:(e,t,n)=>{"use strict";n.d(t,{A:()=>r});const r=(0,n(3351).A)("Pencil",[["path",{d:"M17 3a2.85 2.83 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5Z",key:"5qss01"}],["path",{d:"m15 5 4 4",key:"1mk7zo"}]])},1360:(e,t,n)=>{"use strict";n.d(t,{A:()=>r});const r=(0,n(3351).A)("Plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]])},8899:(e,t,n)=>{"use strict";n.d(t,{A:()=>r});const r=(0,n(3351).A)("RefreshCcw",[["path",{d:"M21 12a9 9 0 0 0-9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"14sxne"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}],["path",{d:"M3 12a9 9 0 0 0 9 9 9.75 9.75 0 0 0 6.74-2.74L21 16",key:"1hlbsb"}],["path",{d:"M16 16h5v5",key:"ccwih5"}]])},4808:(e,t,n)=>{"use strict";n.d(t,{A:()=>r});const r=(0,n(3351).A)("Trash",[["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6",key:"4alrt4"}],["path",{d:"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2",key:"v07s0e"}]])},614:(e,t,n)=>{"use strict";n.d(t,{A:()=>r});const r=(0,n(3351).A)("X",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]])},1725:(e,t,n)=>{"use strict";var r=n(1238).Y,o="undefined"!==typeof window?window.matchMedia:null;function a(e,t,n){var a,i=this;function l(e){i.matches=e.matches,i.media=e.media}o&&!n&&(a=o.call(window,e)),a?(this.matches=a.matches,this.media=a.media,a.addListener(l)):(this.matches=r(e,t),this.media=e),this.addListener=function(e){a&&a.addListener(e)},this.removeListener=function(e){a&&a.removeListener(e)},this.dispose=function(){a&&a.removeListener(l)}}e.exports=function(e,t,n){return new a(e,t,n)}},1497:(e,t,n)=>{"use strict";var r=n(3218);function o(){}function a(){}a.resetWarningCache=o,e.exports=function(){function e(e,t,n,o,a,i){if(i!==r){var l=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw l.name="Invariant Violation",l}}function t(){return e}e.isRequired=e;var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:a,resetWarningCache:o};return n.PropTypes=n,n}},5173:(e,t,n)=>{e.exports=n(1497)()},3218:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},9458:(e,t,n)=>{"use strict";var r;n.d(t,{TW:()=>Oe,YZ:()=>Me,Zk:()=>A});var o=n(5043);const{createElement:a,createContext:i,createRef:l,forwardRef:c,useCallback:s,useContext:u,useEffect:d,useImperativeHandle:p,useLayoutEffect:f,useMemo:h,useRef:m,useState:y}=r||(r=n.t(o,2)),g=(r||(r=n.t(o,2)))["useId".toString()],v=f,b=i(null);b.displayName="PanelGroupContext";const x=v,z="function"===typeof g?g:()=>null;let w=0;function S(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;const t=z(),n=m(e||t||null);return null===n.current&&(n.current=""+w++),null!==e&&void 0!==e?e:n.current}function k(e){let{children:t,className:n="",collapsedSize:r,collapsible:o,defaultSize:i,forwardedRef:l,id:c,maxSize:s,minSize:d,onCollapse:f,onExpand:h,onResize:y,order:g,style:v,tagName:z="div",...w}=e;const k=u(b);if(null===k)throw Error("Panel components must be rendered within a PanelGroup container");const{collapsePanel:A,expandPanel:E,getPanelSize:L,getPanelStyle:I,groupId:C,isPanelCollapsed:P,reevaluatePanelConstraints:D,registerPanel:M,resizePanel:R,unregisterPanel:N}=k,O=S(c),H=m({callbacks:{onCollapse:f,onExpand:h,onResize:y},constraints:{collapsedSize:r,collapsible:o,defaultSize:i,maxSize:s,minSize:d},id:O,idIsFromProps:void 0!==c,order:g});m({didLogMissingDefaultSizeWarning:!1}),x((()=>{const{callbacks:e,constraints:t}=H.current,n={...t};H.current.id=O,H.current.idIsFromProps=void 0!==c,H.current.order=g,e.onCollapse=f,e.onExpand=h,e.onResize=y,t.collapsedSize=r,t.collapsible=o,t.defaultSize=i,t.maxSize=s,t.minSize=d,n.collapsedSize===t.collapsedSize&&n.collapsible===t.collapsible&&n.maxSize===t.maxSize&&n.minSize===t.minSize||D(H.current,n)})),x((()=>{const e=H.current;return M(e),()=>{N(e)}}),[g,O,M,N]),p(l,(()=>({collapse:()=>{A(H.current)},expand:()=>{E(H.current)},getId:()=>O,getSize:()=>L(H.current),isCollapsed:()=>P(H.current),isExpanded:()=>!P(H.current),resize:e=>{R(H.current,e)}})),[A,E,L,P,O,R]);const T=I(H.current,i);return a(z,{...w,children:t,className:n,id:c,style:{...T,...v},"data-panel":"","data-panel-collapsible":o||void 0,"data-panel-group-id":C,"data-panel-id":O,"data-panel-size":parseFloat(""+T.flexGrow).toFixed(1)})}const A=c(((e,t)=>a(k,{...e,forwardedRef:t})));k.displayName="Panel",A.displayName="forwardRef(Panel)";let E=null,L=null;function I(e,t){const n=function(e,t){if(t){const e=0!==(t&B),n=0!==(t&_);if(0!==(t&W))return e?"se-resize":n?"ne-resize":"e-resize";if(0!==(t&G))return e?"sw-resize":n?"nw-resize":"w-resize";if(e)return"s-resize";if(n)return"n-resize"}switch(e){case"horizontal":return"ew-resize";case"intersection":return"move";case"vertical":return"ns-resize"}}(e,t);E!==n&&(E=n,null===L&&(L=document.createElement("style"),document.head.appendChild(L)),L.innerHTML="*{cursor: ".concat(n,"!important;}"))}function C(e){return"keydown"===e.type}function P(e){return e.type.startsWith("mouse")}function D(e){return e.type.startsWith("touch")}function M(e){if(P(e))return{x:e.clientX,y:e.clientY};if(D(e)){const t=e.touches[0];if(t&&t.clientX&&t.clientY)return{x:t.clientX,y:t.clientY}}return{x:1/0,y:1/0}}function R(e,t,n){return n?e.xt.x&&e.yt.y:e.x<=t.x+t.width&&e.x+e.width>=t.x&&e.y<=t.y+t.height&&e.y+e.height>=t.y}const N=/\b(?:position|zIndex|opacity|transform|webkitTransform|mixBlendMode|filter|webkitFilter|isolation)\b/;function O(e){const t=getComputedStyle(e);return"fixed"===t.position||(!("auto"===t.zIndex||"static"===t.position&&!function(e){var t;const n=getComputedStyle(null!==(t=j(e))&&void 0!==t?t:e).display;return"flex"===n||"inline-flex"===n}(e))||(+t.opacity<1||("transform"in t&&"none"!==t.transform||("webkitTransform"in t&&"none"!==t.webkitTransform||("mixBlendMode"in t&&"normal"!==t.mixBlendMode||("filter"in t&&"none"!==t.filter||("webkitFilter"in t&&"none"!==t.webkitFilter||("isolation"in t&&"isolate"===t.isolation||(!!N.test(t.willChange)||"touch"===t.webkitOverflowScrolling)))))))))}function H(e){let t=e.length;for(;t--;){const n=e[t];if(oe(n,"Missing node"),O(n))return n}return null}function T(e){return e&&Number(getComputedStyle(e).zIndex)||0}function F(e){const t=[];for(;e;)t.push(e),e=j(e);return t}function j(e){const{parentNode:t}=e;return t&&t instanceof ShadowRoot?t.host:t}const W=1,G=2,B=4,_=8,q="coarse"===function(){if("function"===typeof matchMedia)return matchMedia("(pointer:coarse)").matches?"coarse":"fine"}();let V=[],Y=!1,U=new Map,J=new Map;const X=new Set;function Z(e){const{target:t}=e,{x:n,y:r}=M(e);Y=!0,Q({target:t,x:n,y:r}),ne(),V.length>0&&(re("down",e),e.preventDefault())}function $(e){const{x:t,y:n}=M(e);if(!Y){const{target:r}=e;Q({target:r,x:t,y:n})}re("move",e),te(),V.length>0&&e.preventDefault()}function K(e){const{target:t}=e,{x:n,y:r}=M(e);J.clear(),Y=!1,V.length>0&&e.preventDefault(),re("up",e),Q({target:t,x:n,y:r}),te(),ne()}function Q(e){let{target:t,x:n,y:r}=e;V.splice(0);let o=null;t instanceof HTMLElement&&(o=t),X.forEach((e=>{const{element:t,hitAreaMargins:a}=e,i=t.getBoundingClientRect(),{bottom:l,left:c,right:s,top:u}=i,d=q?a.coarse:a.fine;if(n>=c-d&&n<=s+d&&r>=u-d&&r<=l+d){if(null!==o&&t!==o&&!t.contains(o)&&!o.contains(t)&&function(e,t){if(e===t)throw new Error("Cannot compare node with itself");const n={a:F(e),b:F(t)};let r;for(;n.a.at(-1)===n.b.at(-1);)e=n.a.pop(),t=n.b.pop(),r=e;oe(r,"Stacking order can only be calculated for elements with a common ancestor");const o=T(H(n.a)),a=T(H(n.b));if(o===a){const e=r.childNodes,t={a:n.a.at(-1),b:n.b.at(-1)};let o=e.length;for(;o--;){const n=e[o];if(n===t.a)return 1;if(n===t.b)return-1}}return Math.sign(o-a)}(o,t)>0){let e=o,n=!1;for(;e&&!e.contains(t);){if(R(e.getBoundingClientRect(),i,!0)){n=!0;break}e=e.parentElement}if(n)return}V.push(e)}}))}function ee(e,t){J.set(e,t)}function te(){let e=!1,t=!1;V.forEach((n=>{const{direction:r}=n;"horizontal"===r?e=!0:t=!0}));let n=0;J.forEach((e=>{n|=e})),e&&t?I("intersection",n):e?I("horizontal",n):t?I("vertical",n):null!==L&&(document.head.removeChild(L),E=null,L=null)}function ne(){U.forEach(((e,t)=>{const{body:n}=t;n.removeEventListener("contextmenu",K),n.removeEventListener("mousedown",Z),n.removeEventListener("mouseleave",$),n.removeEventListener("mousemove",$),n.removeEventListener("touchmove",$),n.removeEventListener("touchstart",Z)})),window.removeEventListener("mouseup",K),window.removeEventListener("touchcancel",K),window.removeEventListener("touchend",K),X.size>0&&(Y?(V.length>0&&U.forEach(((e,t)=>{const{body:n}=t;e>0&&(n.addEventListener("contextmenu",K),n.addEventListener("mouseleave",$),n.addEventListener("mousemove",$),n.addEventListener("touchmove",$,{passive:!1}))})),window.addEventListener("mouseup",K),window.addEventListener("touchcancel",K),window.addEventListener("touchend",K)):U.forEach(((e,t)=>{const{body:n}=t;e>0&&(n.addEventListener("mousedown",Z),n.addEventListener("mousemove",$),n.addEventListener("touchmove",$,{passive:!1}),n.addEventListener("touchstart",Z))})))}function re(e,t){X.forEach((n=>{const{setResizeHandlerState:r}=n,o=V.includes(n);r(e,o,t)}))}function oe(e,t){if(!e)throw console.error(t),Error(t)}const ae=10;function ie(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:ae;return e.toFixed(n)===t.toFixed(n)?0:e>t?1:-1}function le(e,t){return 0===ie(e,t,arguments.length>2&&void 0!==arguments[2]?arguments[2]:ae)}function ce(e,t,n){return 0===ie(e,t,n)}function se(e){let{panelConstraints:t,panelIndex:n,size:r}=e;const o=t[n];oe(null!=o,"Panel constraints not found for index ".concat(n));let{collapsedSize:a=0,collapsible:i,maxSize:l=100,minSize:c=0}=o;if(ie(r,c)<0)if(i){r=ie(r,(a+c)/2)<0?a:c}else r=c;return r=Math.min(l,r),r=parseFloat(r.toFixed(ae)),r}function ue(e){let{delta:t,initialLayout:n,panelConstraints:r,pivotIndices:o,prevLayout:a,trigger:i}=e;if(ce(t,0))return n;const l=[...n],[c,s]=o;oe(null!=c,"Invalid first pivot index"),oe(null!=s,"Invalid second pivot index");let u=0;if("keyboard"===i){{const e=t<0?s:c,o=r[e];oe(o,"Panel constraints not found for index ".concat(e));const{collapsedSize:a=0,collapsible:i,minSize:l=0}=o;if(i){const r=n[e];if(oe(null!=r,"Previous layout not found for panel index ".concat(e)),ce(r,a)){const e=l-r;ie(e,Math.abs(t))>0&&(t=t<0?0-e:e)}}}{const e=t<0?c:s,o=r[e];oe(o,"No panel constraints found for index ".concat(e));const{collapsedSize:a=0,collapsible:i,minSize:l=0}=o;if(i){const r=n[e];if(oe(null!=r,"Previous layout not found for panel index ".concat(e)),ce(r,l)){const e=r-a;ie(e,Math.abs(t))>0&&(t=t<0?0-e:e)}}}}{const e=t<0?1:-1;let o=t<0?s:c,a=0;for(;;){const t=n[o];oe(null!=t,"Previous layout not found for panel index ".concat(o));if(a+=se({panelConstraints:r,panelIndex:o,size:100})-t,o+=e,o<0||o>=r.length)break}const i=Math.min(Math.abs(t),Math.abs(a));t=t<0?0-i:i}{let e=t<0?c:s;for(;e>=0&&e=0))break;t<0?e--:e++}}if(function(e,t,n){if(e.length!==t.length)return!1;for(let r=0;r=0&&n0?n--:n++}}}return ce(l.reduce(((e,t)=>t+e),0),100)?l:a}function de(e){let{layout:t,panelsArray:n,pivotIndices:r}=e,o=0,a=100,i=0,l=0;const c=r[0];oe(null!=c,"No pivot index found"),n.forEach(((e,t)=>{const{constraints:n}=e,{maxSize:r=100,minSize:s=0}=n;t===c?(o=s,a=r):(i+=s,l+=r)}));return{valueMax:Math.min(a,100-i),valueMin:Math.max(o,100-l),valueNow:t[c]}}function pe(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document;return Array.from(t.querySelectorAll('[data-panel-resize-handle-id][data-panel-group-id="'.concat(e,'"]')))}function fe(e,t){const n=pe(e,arguments.length>2&&void 0!==arguments[2]?arguments[2]:document).findIndex((e=>e.getAttribute("data-panel-resize-handle-id")===t));return null!==n&&void 0!==n?n:null}function he(e,t,n){const r=fe(e,t,n);return null!=r?[r,r+1]:[-1,-1]}function me(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document;var n;if(t instanceof HTMLElement&&(null===t||void 0===t||null===(n=t.dataset)||void 0===n?void 0:n.panelGroupId)==e)return t;const r=t.querySelector('[data-panel-group][data-panel-group-id="'.concat(e,'"]'));return r||null}function ye(e){const t=(arguments.length>1&&void 0!==arguments[1]?arguments[1]:document).querySelector('[data-panel-resize-handle-id="'.concat(e,'"]'));return t||null}function ge(e){let{committedValuesRef:t,eagerValuesRef:n,groupId:r,layout:o,panelDataArray:a,panelGroupElement:i,setLayout:l}=e;m({didWarnAboutMissingResizeHandle:!1}),x((()=>{if(!i)return;const e=pe(r,i);for(let t=0;t{e.forEach(((e,t)=>{e.removeAttribute("aria-controls"),e.removeAttribute("aria-valuemax"),e.removeAttribute("aria-valuemin"),e.removeAttribute("aria-valuenow")}))}}),[r,o,a,i]),d((()=>{if(!i)return;const e=n.current;oe(e,"Eager values not found");const{panelDataArray:t}=e;oe(null!=me(r,i),'No group found for id "'.concat(r,'"'));const a=pe(r,i);oe(a,'No resize handles found for group id "'.concat(r,'"'));const c=a.map((e=>{const n=e.getAttribute("data-panel-resize-handle-id");oe(n,"Resize handle element has no handle id attribute");const[a,c]=function(e,t,n){let r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:document;var o,a,i,l;const c=ye(t,r),s=pe(e,r),u=c?s.indexOf(c):-1;return[null!==(o=null===(a=n[u])||void 0===a?void 0:a.id)&&void 0!==o?o:null,null!==(i=null===(l=n[u+1])||void 0===l?void 0:l.id)&&void 0!==i?i:null]}(r,n,t,i);if(null==a||null==c)return()=>{};const s=e=>{if(!e.defaultPrevented)switch(e.key){case"Enter":{e.preventDefault();const c=t.findIndex((e=>e.id===a));if(c>=0){const e=t[c];oe(e,"No panel data found for index ".concat(c));const a=o[c],{collapsedSize:s=0,collapsible:u,minSize:d=0}=e.constraints;if(null!=a&&u){const e=ue({delta:ce(a,s)?d-s:s-a,initialLayout:o,panelConstraints:t.map((e=>e.constraints)),pivotIndices:he(r,n,i),prevLayout:o,trigger:"keyboard"});o!==e&&l(e)}}break}}};return e.addEventListener("keydown",s),()=>{e.removeEventListener("keydown",s)}}));return()=>{c.forEach((e=>e()))}}),[i,t,n,r,o,a,l])}function ve(e,t){if(e.length!==t.length)return!1;for(let n=0;n{const o=e[r];oe(o,"Panel data not found for index ".concat(r));const{callbacks:a,constraints:i,id:l}=o,{collapsedSize:c=0,collapsible:s}=i,u=n[l];if(null==u||t!==u){n[l]=t;const{onCollapse:e,onExpand:r,onResize:o}=a;o&&o(t,u),s&&(e||r)&&(!r||null!=u&&!le(u,c)||le(t,c)||r(),!e||null!=u&&le(u,c)||!le(t,c)||e())}}))}function we(e,t){if(e.length!==t.length)return!1;for(let n=0;nlocalStorage.getItem(e),e.setItem=(e,t)=>{localStorage.setItem(e,t)}}catch(t){console.error(t),e.getItem=()=>null,e.setItem=()=>{}}}function ke(e){return"react-resizable-panels:".concat(e)}function Ae(e){return e.map((e=>{const{constraints:t,id:n,idIsFromProps:r,order:o}=e;return r?n:o?"".concat(o,":").concat(JSON.stringify(t)):JSON.stringify(t)})).sort(((e,t)=>e.localeCompare(t))).join(",")}function Ee(e,t){try{const n=ke(e),r=t.getItem(n);if(r){const e=JSON.parse(r);if("object"===typeof e&&null!=e)return e}}catch(n){}return null}function Le(e,t,n,r,o){var a;const i=ke(e),l=Ae(t),c=null!==(a=Ee(e,o))&&void 0!==a?a:{};c[l]={expandToSizes:Object.fromEntries(n.entries()),layout:r};try{o.setItem(i,JSON.stringify(c))}catch(s){console.error(s)}}function Ie(e){let{layout:t,panelConstraints:n}=e;const r=[...t],o=r.reduce(((e,t)=>e+t),0);if(r.length!==n.length)throw Error("Invalid ".concat(n.length," panel layout: ").concat(r.map((e=>"".concat(e,"%"))).join(", ")));if(!ce(o,100))for(let i=0;i(Se(Ce),Ce.getItem(e)),setItem:(e,t)=>{Se(Ce),Ce.setItem(e,t)}},Pe={};function De(e){let{autoSaveId:t=null,children:n,className:r="",direction:o,forwardedRef:i,id:l=null,onLayout:c=null,keyboardResizeBy:u=null,storage:f=Ce,style:g,tagName:v="div",...z}=e;const w=S(l),k=m(null),[A,E]=y(null),[L,I]=y([]),M=m({}),R=m(new Map),N=m(0),O=m({autoSaveId:t,direction:o,dragState:A,id:w,keyboardResizeBy:u,onLayout:c,storage:f}),H=m({layout:L,panelDataArray:[],panelDataArrayChanged:!1});m({didLogIdAndOrderWarning:!1,didLogPanelConstraintsWarning:!1,prevPanelIds:[]}),p(i,(()=>({getId:()=>O.current.id,getLayout:()=>{const{layout:e}=H.current;return e},setLayout:e=>{const{onLayout:t}=O.current,{layout:n,panelDataArray:r}=H.current,o=Ie({layout:e,panelConstraints:r.map((e=>e.constraints))});ve(n,o)||(I(o),H.current.layout=o,t&&t(o),ze(r,o,M.current))}})),[]),x((()=>{O.current.autoSaveId=t,O.current.direction=o,O.current.dragState=A,O.current.id=w,O.current.onLayout=c,O.current.storage=f})),ge({committedValuesRef:O,eagerValuesRef:H,groupId:w,layout:L,panelDataArray:H.current.panelDataArray,setLayout:I,panelGroupElement:k.current}),d((()=>{const{panelDataArray:e}=H.current;if(t){if(0===L.length||L.length!==e.length)return;let n=Pe[t];null==n&&(n=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:10,n=null;return function(){for(var r=arguments.length,o=new Array(r),a=0;a{e(...o)}),t)}}(Le,100),Pe[t]=n);const r=[...e],o=new Map(R.current);n(t,r,o,L,f)}}),[t,L,f]),d((()=>{}));const T=s((e=>{const{onLayout:t}=O.current,{layout:n,panelDataArray:r}=H.current;if(e.constraints.collapsible){const o=r.map((e=>e.constraints)),{collapsedSize:a=0,panelSize:i,pivotIndices:l}=Ne(r,e,n);if(oe(null!=i,'Panel size not found for panel "'.concat(e.id,'"')),!le(i,a)){R.current.set(e.id,i);const c=ue({delta:Re(r,e)===r.length-1?i-a:a-i,initialLayout:n,panelConstraints:o,pivotIndices:l,prevLayout:n,trigger:"imperative-api"});we(n,c)||(I(c),H.current.layout=c,t&&t(c),ze(r,c,M.current))}}}),[]),F=s((e=>{const{onLayout:t}=O.current,{layout:n,panelDataArray:r}=H.current;if(e.constraints.collapsible){const o=r.map((e=>e.constraints)),{collapsedSize:a=0,panelSize:i=0,minSize:l=0,pivotIndices:c}=Ne(r,e,n);if(le(i,a)){const a=R.current.get(e.id),s=null!=a&&a>=l?a:l,u=ue({delta:Re(r,e)===r.length-1?i-s:s-i,initialLayout:n,panelConstraints:o,pivotIndices:c,prevLayout:n,trigger:"imperative-api"});we(n,u)||(I(u),H.current.layout=u,t&&t(u),ze(r,u,M.current))}}}),[]),j=s((e=>{const{layout:t,panelDataArray:n}=H.current,{panelSize:r}=Ne(n,e,t);return oe(null!=r,'Panel size not found for panel "'.concat(e.id,'"')),r}),[]),q=s(((e,t)=>{const{panelDataArray:n}=H.current,r=Re(n,e);return function(e){let{defaultSize:t,dragState:n,layout:r,panelData:o,panelIndex:a,precision:i=3}=e;const l=r[a];let c;return c=null==l?void 0!=t?t.toFixed(i):"1":1===o.length?"1":l.toFixed(i),{flexBasis:0,flexGrow:c,flexShrink:1,overflow:"hidden",pointerEvents:null!==n?"none":void 0}}({defaultSize:t,dragState:A,layout:L,panelData:n,panelIndex:r})}),[A,L]),V=s((e=>{const{layout:t,panelDataArray:n}=H.current,{collapsedSize:r=0,collapsible:o,panelSize:a}=Ne(n,e,t);return oe(null!=a,'Panel size not found for panel "'.concat(e.id,'"')),!0===o&&le(a,r)}),[]),Y=s((e=>{const{layout:t,panelDataArray:n}=H.current,{collapsedSize:r=0,collapsible:o,panelSize:a}=Ne(n,e,t);return oe(null!=a,'Panel size not found for panel "'.concat(e.id,'"')),!o||ie(a,r)>0}),[]),U=s((e=>{const{panelDataArray:t}=H.current;t.push(e),t.sort(((e,t)=>{const n=e.order,r=t.order;return null==n&&null==r?0:null==n?-1:null==r?1:n-r})),H.current.panelDataArrayChanged=!0}),[]);x((()=>{if(H.current.panelDataArrayChanged){H.current.panelDataArrayChanged=!1;const{autoSaveId:e,onLayout:t,storage:n}=O.current,{layout:r,panelDataArray:o}=H.current;let a=null;if(e){const t=function(e,t,n){var r,o;return null!==(o=(null!==(r=Ee(e,n))&&void 0!==r?r:{})[Ae(t)])&&void 0!==o?o:null}(e,o,n);t&&(R.current=new Map(Object.entries(t.expandToSizes)),a=t.layout)}null==a&&(a=function(e){let{panelDataArray:t}=e;const n=Array(t.length),r=t.map((e=>e.constraints));let o=0,a=100;for(let i=0;ie.constraints))});ve(r,i)||(I(i),H.current.layout=i,t&&t(i),ze(o,i,M.current))}})),x((()=>{const e=H.current;return()=>{e.layout=[]}}),[]);const J=s((e=>function(t){t.preventDefault();const n=k.current;if(!n)return()=>null;const{direction:r,dragState:o,id:a,keyboardResizeBy:i,onLayout:l}=O.current,{layout:c,panelDataArray:s}=H.current,{initialLayout:u}=null!==o&&void 0!==o?o:{},d=he(a,e,n);let p=xe(t,e,r,o,i,n);if(0===p)return;const f="horizontal"===r;"rtl"===document.dir&&f&&(p=-p);const h=ue({delta:p,initialLayout:null!==u&&void 0!==u?u:c,panelConstraints:s.map((e=>e.constraints)),pivotIndices:d,prevLayout:c,trigger:C(t)?"keyboard":"mouse-or-touch"}),m=!we(c,h);(P(t)||D(t))&&N.current!=p&&(N.current=p,ee(e,m?0:f?p<0?W:G:p<0?B:_)),m&&(I(h),H.current.layout=h,l&&l(h),ze(s,h,M.current))}),[]),X=s(((e,t)=>{const{onLayout:n}=O.current,{layout:r,panelDataArray:o}=H.current,a=o.map((e=>e.constraints)),{panelSize:i,pivotIndices:l}=Ne(o,e,r);oe(null!=i,'Panel size not found for panel "'.concat(e.id,'"'));const c=ue({delta:Re(o,e)===o.length-1?i-t:t-i,initialLayout:r,panelConstraints:a,pivotIndices:l,prevLayout:r,trigger:"imperative-api"});we(r,c)||(I(c),H.current.layout=c,n&&n(c),ze(o,c,M.current))}),[]),Z=s(((e,t)=>{const{layout:n,panelDataArray:r}=H.current,{collapsedSize:o=0,collapsible:a}=t,{collapsedSize:i=0,collapsible:l,maxSize:c=100,minSize:s=0}=e.constraints,{panelSize:u}=Ne(r,e,n);null!=u&&(a&&l&&le(u,o)?le(o,i)||X(e,i):uc&&X(e,c))}),[X]),$=s(((e,t)=>{const{direction:n}=O.current,{layout:r}=H.current;if(!k.current)return;const o=ye(e,k.current);oe(o,'Drag handle element not found for id "'.concat(e,'"'));const a=be(n,t);E({dragHandleId:e,dragHandleRect:o.getBoundingClientRect(),initialCursorPosition:a,initialLayout:r})}),[]),K=s((()=>{E(null)}),[]),Q=s((e=>{const{panelDataArray:t}=H.current,n=Re(t,e);n>=0&&(t.splice(n,1),delete M.current[e.id],H.current.panelDataArrayChanged=!0)}),[]),te=h((()=>({collapsePanel:T,direction:o,dragState:A,expandPanel:F,getPanelSize:j,getPanelStyle:q,groupId:w,isPanelCollapsed:V,isPanelExpanded:Y,reevaluatePanelConstraints:Z,registerPanel:U,registerResizeHandle:J,resizePanel:X,startDragging:$,stopDragging:K,unregisterPanel:Q,panelGroupElement:k.current})),[T,A,o,F,j,q,w,V,Y,Z,U,J,X,$,K,Q]),ne={display:"flex",flexDirection:"horizontal"===o?"row":"column",height:"100%",overflow:"hidden",width:"100%"};return a(b.Provider,{value:te},a(v,{...z,children:n,className:r,id:l,ref:k,style:{...ne,...g},"data-panel-group":"","data-panel-group-direction":o,"data-panel-group-id":w}))}const Me=c(((e,t)=>a(De,{...e,forwardedRef:t})));function Re(e,t){return e.findIndex((e=>e===t||e.id===t.id))}function Ne(e,t,n){const r=Re(e,t),o=r===e.length-1?[r-1,r]:[r,r+1],a=n[r];return{...t.constraints,panelSize:a,pivotIndices:o}}function Oe(e){let{children:t=null,className:n="",disabled:r=!1,hitAreaMargins:o,id:i,onDragging:l,style:c={},tabIndex:s=0,tagName:p="div",...f}=e;const h=m(null),g=m({onDragging:l});d((()=>{g.current.onDragging=l}));const v=u(b);if(null===v)throw Error("PanelResizeHandle components must be rendered within a PanelGroup container");const{direction:z,groupId:w,registerResizeHandle:k,startDragging:A,stopDragging:E,panelGroupElement:L}=v,I=S(i),[C,P]=y("inactive"),[D,M]=y(!1),[R,N]=y(null),O=m({state:C});x((()=>{O.current.state=C})),d((()=>{if(r)N(null);else{const e=k(I);N((()=>e))}}),[r,I,k]),d((()=>{var e,t;if(r||null==R)return;const n=h.current;oe(n,"Element ref not attached");return function(e,t,n,r,o){var a;const{ownerDocument:i}=t,l={direction:n,element:t,hitAreaMargins:r,setResizeHandlerState:o},c=null!==(a=U.get(i))&&void 0!==a?a:0;return U.set(i,c+1),X.add(l),ne(),function(){var t;J.delete(e),X.delete(l);const n=null!==(t=U.get(i))&&void 0!==t?t:1;U.set(i,n-1),ne(),1===n&&U.delete(i)}}(I,n,z,{coarse:null!==(e=null===o||void 0===o?void 0:o.coarse)&&void 0!==e?e:15,fine:null!==(t=null===o||void 0===o?void 0:o.fine)&&void 0!==t?t:5},((e,t,n)=>{if(t)switch(e){case"down":{P("drag"),A(I,n);const{onDragging:e}=g.current;e&&e(!0);break}case"move":{const{state:e}=O.current;"drag"!==e&&P("hover"),R(n);break}case"up":{P("hover"),E();const{onDragging:e}=g.current;e&&e(!1);break}}else P("inactive")}))}),[z,r,o,k,I,R,A,E]),function(e){let{disabled:t,handleId:n,resizeHandler:r,panelGroupElement:o}=e;d((()=>{if(t||null==r||null==o)return;const e=ye(n,o);if(null==e)return;const a=t=>{if(!t.defaultPrevented)switch(t.key){case"ArrowDown":case"ArrowLeft":case"ArrowRight":case"ArrowUp":case"End":case"Home":t.preventDefault(),r(t);break;case"F6":{t.preventDefault();const r=e.getAttribute("data-panel-group-id");oe(r,'No group element found for id "'.concat(r,'"'));const a=pe(r,o),i=fe(r,n,o);oe(null!==i,'No resize element found for id "'.concat(n,'"')),a[t.shiftKey?i>0?i-1:a.length-1:i+1{e.removeEventListener("keydown",a)}}),[o,t,n,r])}({disabled:r,handleId:I,resizeHandler:R,panelGroupElement:L});return a(p,{...f,children:t,className:n,id:i,onBlur:()=>M(!1),onFocus:()=>M(!0),ref:h,role:"separator",style:{touchAction:"none",userSelect:"none",...c},tabIndex:s,"data-panel-group-direction":z,"data-panel-group-id":w,"data-resize-handle":"","data-resize-handle-active":"drag"===C?"pointer":D?"keyboard":void 0,"data-resize-handle-state":C,"data-panel-resize-handle-enabled":!r,"data-panel-resize-handle-id":I})}De.displayName="PanelGroup",Me.displayName="forwardRef(PanelGroup)",Oe.displayName="PanelResizeHandle"},9657:(e,t,n)=>{"use strict";n.d(t,{Ub:()=>E});var r=n(5043),o=n(1725),a=n.n(o),i=/[A-Z]/g,l=/^ms-/,c={};function s(e){return"-"+e.toLowerCase()}const u=function(e){if(c.hasOwnProperty(e))return c[e];var t=e.replace(i,s);return c[e]=l.test(t)?"-"+t:t};function d(e,t){if(e===t)return!0;if(!e||!t)return!1;const n=Object.keys(e),r=Object.keys(t),o=n.length;if(r.length!==o)return!1;for(let a=0;a{const t=[];return Object.keys(x.all).forEach((n=>{const r=e[n];null!=r&&t.push(((e,t)=>{const n=u(e);return"number"===typeof t&&(t="".concat(t,"px")),!0===t?n:!1===t?"not ".concat(n):"(".concat(n,": ").concat(t,")")})(n,r))})),t.join(" and ")},w=(0,r.createContext)(void 0),S=e=>{if(!e)return;return Object.keys(e).reduce(((t,n)=>(t[u(n)]=e[n],t)),{})},k=()=>{const e=(0,r.useRef)(!1);return(0,r.useEffect)((()=>{e.current=!0}),[]),e.current},A=e=>{const t=()=>(e=>e.query||z(e))(e),[n,o]=(0,r.useState)(t);return(0,r.useEffect)((()=>{const e=t();n!==e&&o(e)}),[e]),n},E=(e,t,n)=>{const o=(e=>{const t=(0,r.useContext)(w),n=()=>S(e)||S(t),[o,a]=(0,r.useState)(n);return(0,r.useEffect)((()=>{const e=n();d(o,e)||a(e)}),[e,t]),o})(t),i=A(e);if(!i)throw new Error("Invalid or missing MediaQuery!");const l=((e,t)=>{const n=()=>a()(e,t||{},!!t),[o,i]=(0,r.useState)(n),l=k();return(0,r.useEffect)((()=>{if(l){const e=n();return i(e),()=>{e&&e.dispose()}}}),[e,t]),o})(i,o),c=(e=>{const[t,n]=(0,r.useState)(e.matches);return(0,r.useEffect)((()=>{const t=e=>{n(e.matches)};return e.addListener(t),n(e.matches),()=>{e.removeListener(t)}}),[e]),t})(l),s=k();return(0,r.useEffect)((()=>{s&&n&&n(c)}),[c]),(0,r.useEffect)((()=>()=>{l&&l.dispose()}),[]),c}}}]); +//# sourceMappingURL=143.f42d1e2d.chunk.js.map \ No newline at end of file diff --git a/static/js/824.5f397999.chunk.js.LICENSE.txt b/static/js/143.f42d1e2d.chunk.js.LICENSE.txt similarity index 100% rename from static/js/824.5f397999.chunk.js.LICENSE.txt rename to static/js/143.f42d1e2d.chunk.js.LICENSE.txt diff --git a/static/js/143.f42d1e2d.chunk.js.map b/static/js/143.f42d1e2d.chunk.js.map new file mode 100644 index 0000000..85e8751 --- /dev/null +++ b/static/js/143.f42d1e2d.chunk.js.map @@ -0,0 +1 @@ +{"version":3,"file":"static/js/143.f42d1e2d.chunk.js","mappings":"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","sources":["../node_modules/css-mediaquery/index.js","../node_modules/lucide-react/src/icons/chevron-down.ts","../node_modules/lucide-react/src/icons/chevron-up.ts","../node_modules/lucide-react/src/icons/ellipsis-vertical.ts","../node_modules/lucide-react/src/icons/ellipsis.ts","../node_modules/lucide-react/src/icons/pencil.ts","../node_modules/lucide-react/src/icons/plus.ts","../node_modules/lucide-react/src/icons/refresh-ccw.ts","../node_modules/lucide-react/src/icons/trash.ts","../node_modules/lucide-react/src/icons/x.ts","../node_modules/matchmediaquery/index.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/index.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/react-resizable-panels/dist/react-resizable-panels.browser.esm.js","../node_modules/hyphenate-style-name/index.js","../node_modules/shallow-equal/src/objects.ts","../node_modules/react-responsive/src/mediaQuery.ts","../node_modules/react-responsive/src/toQuery.ts","../node_modules/react-responsive/src/Context.ts","../node_modules/react-responsive/src/useMediaQuery.ts"],"sourcesContent":["/*\nCopyright (c) 2014, Yahoo! Inc. All rights reserved.\nCopyrights licensed under the New BSD License.\nSee the accompanying LICENSE file for terms.\n*/\n\n'use strict';\n\nexports.match = matchQuery;\nexports.parse = parseQuery;\n\n// -----------------------------------------------------------------------------\n\nvar RE_MEDIA_QUERY = /(?:(only|not)?\\s*([^\\s\\(\\)]+)(?:\\s*and)?\\s*)?(.+)?/i,\n RE_MQ_EXPRESSION = /\\(\\s*([^\\s\\:\\)]+)\\s*(?:\\:\\s*([^\\s\\)]+))?\\s*\\)/,\n RE_MQ_FEATURE = /^(?:(min|max)-)?(.+)/,\n RE_LENGTH_UNIT = /(em|rem|px|cm|mm|in|pt|pc)?$/,\n RE_RESOLUTION_UNIT = /(dpi|dpcm|dppx)?$/;\n\nfunction matchQuery(mediaQuery, values) {\n return parseQuery(mediaQuery).some(function (query) {\n var inverse = query.inverse;\n\n // Either the parsed or specified `type` is \"all\", or the types must be\n // equal for a match.\n var typeMatch = query.type === 'all' || values.type === query.type;\n\n // Quit early when `type` doesn't match, but take \"not\" into account.\n if ((typeMatch && inverse) || !(typeMatch || inverse)) {\n return false;\n }\n\n var expressionsMatch = query.expressions.every(function (expression) {\n var feature = expression.feature,\n modifier = expression.modifier,\n expValue = expression.value,\n value = values[feature];\n\n // Missing or falsy values don't match.\n if (!value) { return false; }\n\n switch (feature) {\n case 'orientation':\n case 'scan':\n return value.toLowerCase() === expValue.toLowerCase();\n\n case 'width':\n case 'height':\n case 'device-width':\n case 'device-height':\n expValue = toPx(expValue);\n value = toPx(value);\n break;\n\n case 'resolution':\n expValue = toDpi(expValue);\n value = toDpi(value);\n break;\n\n case 'aspect-ratio':\n case 'device-aspect-ratio':\n case /* Deprecated */ 'device-pixel-ratio':\n expValue = toDecimal(expValue);\n value = toDecimal(value);\n break;\n\n case 'grid':\n case 'color':\n case 'color-index':\n case 'monochrome':\n expValue = parseInt(expValue, 10) || 1;\n value = parseInt(value, 10) || 0;\n break;\n }\n\n switch (modifier) {\n case 'min': return value >= expValue;\n case 'max': return value <= expValue;\n default : return value === expValue;\n }\n });\n\n return (expressionsMatch && !inverse) || (!expressionsMatch && inverse);\n });\n}\n\nfunction parseQuery(mediaQuery) {\n return mediaQuery.split(',').map(function (query) {\n query = query.trim();\n\n var captures = query.match(RE_MEDIA_QUERY),\n modifier = captures[1],\n type = captures[2],\n expressions = captures[3] || '',\n parsed = {};\n\n parsed.inverse = !!modifier && modifier.toLowerCase() === 'not';\n parsed.type = type ? type.toLowerCase() : 'all';\n\n // Split expressions into a list.\n expressions = expressions.match(/\\([^\\)]+\\)/g) || [];\n\n parsed.expressions = expressions.map(function (expression) {\n var captures = expression.match(RE_MQ_EXPRESSION),\n feature = captures[1].toLowerCase().match(RE_MQ_FEATURE);\n\n return {\n modifier: feature[1],\n feature : feature[2],\n value : captures[2]\n };\n });\n\n return parsed;\n });\n}\n\n// -- Utilities ----------------------------------------------------------------\n\nfunction toDecimal(ratio) {\n var decimal = Number(ratio),\n numbers;\n\n if (!decimal) {\n numbers = ratio.match(/^(\\d+)\\s*\\/\\s*(\\d+)$/);\n decimal = numbers[1] / numbers[2];\n }\n\n return decimal;\n}\n\nfunction toDpi(resolution) {\n var value = parseFloat(resolution),\n units = String(resolution).match(RE_RESOLUTION_UNIT)[1];\n\n switch (units) {\n case 'dpcm': return value / 2.54;\n case 'dppx': return value * 96;\n default : return value;\n }\n}\n\nfunction toPx(length) {\n var value = parseFloat(length),\n units = String(length).match(RE_LENGTH_UNIT)[1];\n\n switch (units) {\n case 'em' : return value * 16;\n case 'rem': return value * 16;\n case 'cm' : return value * 96 / 2.54;\n case 'mm' : return value * 96 / 2.54 / 10;\n case 'in' : return value * 96;\n case 'pt' : return value * 72;\n case 'pc' : return value * 72 / 12;\n default : return value;\n }\n}\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name ChevronDown\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJtNiA5IDYgNiA2LTYiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/chevron-down\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ChevronDown = createLucideIcon('ChevronDown', [\n ['path', { d: 'm6 9 6 6 6-6', key: 'qrunsl' }],\n]);\n\nexport default ChevronDown;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name ChevronUp\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJtMTggMTUtNi02LTYgNiIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/chevron-up\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ChevronUp = createLucideIcon('ChevronUp', [['path', { d: 'm18 15-6-6-6 6', key: '153udz' }]]);\n\nexport default ChevronUp;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name EllipsisVertical\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSIxIiAvPgogIDxjaXJjbGUgY3g9IjEyIiBjeT0iNSIgcj0iMSIgLz4KICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjE5IiByPSIxIiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/ellipsis-vertical\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst EllipsisVertical = createLucideIcon('EllipsisVertical', [\n ['circle', { cx: '12', cy: '12', r: '1', key: '41hilf' }],\n ['circle', { cx: '12', cy: '5', r: '1', key: 'gxeob9' }],\n ['circle', { cx: '12', cy: '19', r: '1', key: 'lyex9k' }],\n]);\n\nexport default EllipsisVertical;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name Ellipsis\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSIxIiAvPgogIDxjaXJjbGUgY3g9IjE5IiBjeT0iMTIiIHI9IjEiIC8+CiAgPGNpcmNsZSBjeD0iNSIgY3k9IjEyIiByPSIxIiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/ellipsis\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Ellipsis = createLucideIcon('Ellipsis', [\n ['circle', { cx: '12', cy: '12', r: '1', key: '41hilf' }],\n ['circle', { cx: '19', cy: '12', r: '1', key: '1wjl8i' }],\n ['circle', { cx: '5', cy: '12', r: '1', key: '1pcz8c' }],\n]);\n\nexport default Ellipsis;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name Pencil\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTcgM2EyLjg1IDIuODMgMCAxIDEgNCA0TDcuNSAyMC41IDIgMjJsMS41LTUuNVoiIC8+CiAgPHBhdGggZD0ibTE1IDUgNCA0IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/pencil\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Pencil = createLucideIcon('Pencil', [\n ['path', { d: 'M17 3a2.85 2.83 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5Z', key: '5qss01' }],\n ['path', { d: 'm15 5 4 4', key: '1mk7zo' }],\n]);\n\nexport default Pencil;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name Plus\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNNSAxMmgxNCIgLz4KICA8cGF0aCBkPSJNMTIgNXYxNCIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/plus\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Plus = createLucideIcon('Plus', [\n ['path', { d: 'M5 12h14', key: '1ays0h' }],\n ['path', { d: 'M12 5v14', key: 's699le' }],\n]);\n\nexport default Plus;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name RefreshCcw\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMjEgMTJhOSA5IDAgMCAwLTktOSA5Ljc1IDkuNzUgMCAwIDAtNi43NCAyLjc0TDMgOCIgLz4KICA8cGF0aCBkPSJNMyAzdjVoNSIgLz4KICA8cGF0aCBkPSJNMyAxMmE5IDkgMCAwIDAgOSA5IDkuNzUgOS43NSAwIDAgMCA2Ljc0LTIuNzRMMjEgMTYiIC8+CiAgPHBhdGggZD0iTTE2IDE2aDV2NSIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/refresh-ccw\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst RefreshCcw = createLucideIcon('RefreshCcw', [\n ['path', { d: 'M21 12a9 9 0 0 0-9-9 9.75 9.75 0 0 0-6.74 2.74L3 8', key: '14sxne' }],\n ['path', { d: 'M3 3v5h5', key: '1xhq8a' }],\n ['path', { d: 'M3 12a9 9 0 0 0 9 9 9.75 9.75 0 0 0 6.74-2.74L21 16', key: '1hlbsb' }],\n ['path', { d: 'M16 16h5v5', key: 'ccwih5' }],\n]);\n\nexport default RefreshCcw;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name Trash\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMyA2aDE4IiAvPgogIDxwYXRoIGQ9Ik0xOSA2djE0YzAgMS0xIDItMiAySDdjLTEgMC0yLTEtMi0yVjYiIC8+CiAgPHBhdGggZD0iTTggNlY0YzAtMSAxLTIgMi0yaDRjMSAwIDIgMSAyIDJ2MiIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/trash\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Trash = createLucideIcon('Trash', [\n ['path', { d: 'M3 6h18', key: 'd0wm0j' }],\n ['path', { d: 'M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6', key: '4alrt4' }],\n ['path', { d: 'M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2', key: 'v07s0e' }],\n]);\n\nexport default Trash;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name X\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTggNiA2IDE4IiAvPgogIDxwYXRoIGQ9Im02IDYgMTIgMTIiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/x\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst X = createLucideIcon('X', [\n ['path', { d: 'M18 6 6 18', key: '1bl5f8' }],\n ['path', { d: 'm6 6 12 12', key: 'd8bk6v' }],\n]);\n\nexport default X;\n","'use strict';\n\nvar staticMatch = require('css-mediaquery').match;\nvar dynamicMatch = typeof window !== 'undefined' ? window.matchMedia : null;\n\n// our fake MediaQueryList\nfunction Mql(query, values, forceStatic){\n var self = this;\n var mql;\n\n // matchMedia will return null in FF when it's called in a hidden iframe\n // ref: https://stackoverflow.com/a/12330568\n if(dynamicMatch && !forceStatic) mql = dynamicMatch.call(window, query);\n\n if (mql) {\n this.matches = mql.matches;\n this.media = mql.media;\n // TODO: is there a time it makes sense to remove this listener?\n mql.addListener(update);\n } else {\n this.matches = staticMatch(query, values);\n this.media = query;\n }\n\n this.addListener = addListener;\n this.removeListener = removeListener;\n this.dispose = dispose;\n\n function addListener(listener){\n if(mql){\n mql.addListener(listener);\n }\n }\n\n function removeListener(listener){\n if(mql){\n mql.removeListener(listener);\n }\n }\n\n // update ourselves!\n function update(evt){\n self.matches = evt.matches;\n self.media = evt.media;\n }\n\n function dispose(){\n if(mql){\n mql.removeListener(update);\n }\n }\n}\n\nfunction matchMedia(query, values, forceStatic){\n return new Mql(query, values, forceStatic);\n}\n\nmodule.exports = matchMedia;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","import * as React from 'react';\n\n// This module exists to work around Webpack issue https://github.com/webpack/webpack/issues/14814\n\n// eslint-disable-next-line no-restricted-imports\n\nconst {\n createElement,\n createContext,\n createRef,\n forwardRef,\n useCallback,\n useContext,\n useEffect,\n useImperativeHandle,\n useLayoutEffect,\n useMemo,\n useRef,\n useState\n} = React;\n\n// `toString()` prevents bundlers from trying to `import { useId } from 'react'`\nconst useId = React[\"useId\".toString()];\nconst useLayoutEffect_do_not_use_directly = useLayoutEffect;\n\nconst PanelGroupContext = createContext(null);\nPanelGroupContext.displayName = \"PanelGroupContext\";\n\nconst useIsomorphicLayoutEffect = useLayoutEffect_do_not_use_directly ;\n\nconst wrappedUseId = typeof useId === \"function\" ? useId : () => null;\nlet counter = 0;\nfunction useUniqueId(idFromParams = null) {\n const idFromUseId = wrappedUseId();\n const idRef = useRef(idFromParams || idFromUseId || null);\n if (idRef.current === null) {\n idRef.current = \"\" + counter++;\n }\n return idFromParams !== null && idFromParams !== void 0 ? idFromParams : idRef.current;\n}\n\nfunction PanelWithForwardedRef({\n children,\n className: classNameFromProps = \"\",\n collapsedSize,\n collapsible,\n defaultSize,\n forwardedRef,\n id: idFromProps,\n maxSize,\n minSize,\n onCollapse,\n onExpand,\n onResize,\n order,\n style: styleFromProps,\n tagName: Type = \"div\",\n ...rest\n}) {\n const context = useContext(PanelGroupContext);\n if (context === null) {\n throw Error(`Panel components must be rendered within a PanelGroup container`);\n }\n const {\n collapsePanel,\n expandPanel,\n getPanelSize,\n getPanelStyle,\n groupId,\n isPanelCollapsed,\n reevaluatePanelConstraints,\n registerPanel,\n resizePanel,\n unregisterPanel\n } = context;\n const panelId = useUniqueId(idFromProps);\n const panelDataRef = useRef({\n callbacks: {\n onCollapse,\n onExpand,\n onResize\n },\n constraints: {\n collapsedSize,\n collapsible,\n defaultSize,\n maxSize,\n minSize\n },\n id: panelId,\n idIsFromProps: idFromProps !== undefined,\n order\n });\n useRef({\n didLogMissingDefaultSizeWarning: false\n });\n useIsomorphicLayoutEffect(() => {\n const {\n callbacks,\n constraints\n } = panelDataRef.current;\n const prevConstraints = {\n ...constraints\n };\n panelDataRef.current.id = panelId;\n panelDataRef.current.idIsFromProps = idFromProps !== undefined;\n panelDataRef.current.order = order;\n callbacks.onCollapse = onCollapse;\n callbacks.onExpand = onExpand;\n callbacks.onResize = onResize;\n constraints.collapsedSize = collapsedSize;\n constraints.collapsible = collapsible;\n constraints.defaultSize = defaultSize;\n constraints.maxSize = maxSize;\n constraints.minSize = minSize;\n\n // If constraints have changed, we should revisit panel sizes.\n // This is uncommon but may happen if people are trying to implement pixel based constraints.\n if (prevConstraints.collapsedSize !== constraints.collapsedSize || prevConstraints.collapsible !== constraints.collapsible || prevConstraints.maxSize !== constraints.maxSize || prevConstraints.minSize !== constraints.minSize) {\n reevaluatePanelConstraints(panelDataRef.current, prevConstraints);\n }\n });\n useIsomorphicLayoutEffect(() => {\n const panelData = panelDataRef.current;\n registerPanel(panelData);\n return () => {\n unregisterPanel(panelData);\n };\n }, [order, panelId, registerPanel, unregisterPanel]);\n useImperativeHandle(forwardedRef, () => ({\n collapse: () => {\n collapsePanel(panelDataRef.current);\n },\n expand: () => {\n expandPanel(panelDataRef.current);\n },\n getId() {\n return panelId;\n },\n getSize() {\n return getPanelSize(panelDataRef.current);\n },\n isCollapsed() {\n return isPanelCollapsed(panelDataRef.current);\n },\n isExpanded() {\n return !isPanelCollapsed(panelDataRef.current);\n },\n resize: size => {\n resizePanel(panelDataRef.current, size);\n }\n }), [collapsePanel, expandPanel, getPanelSize, isPanelCollapsed, panelId, resizePanel]);\n const style = getPanelStyle(panelDataRef.current, defaultSize);\n return createElement(Type, {\n ...rest,\n children,\n className: classNameFromProps,\n id: idFromProps,\n style: {\n ...style,\n ...styleFromProps\n },\n // CSS selectors\n \"data-panel\": \"\",\n \"data-panel-collapsible\": collapsible || undefined,\n \"data-panel-group-id\": groupId,\n \"data-panel-id\": panelId,\n \"data-panel-size\": parseFloat(\"\" + style.flexGrow).toFixed(1)\n });\n}\nconst Panel = forwardRef((props, ref) => createElement(PanelWithForwardedRef, {\n ...props,\n forwardedRef: ref\n}));\nPanelWithForwardedRef.displayName = \"Panel\";\nPanel.displayName = \"forwardRef(Panel)\";\n\nlet currentCursorStyle = null;\nlet styleElement = null;\nfunction getCursorStyle(state, constraintFlags) {\n if (constraintFlags) {\n const horizontalMin = (constraintFlags & EXCEEDED_HORIZONTAL_MIN) !== 0;\n const horizontalMax = (constraintFlags & EXCEEDED_HORIZONTAL_MAX) !== 0;\n const verticalMin = (constraintFlags & EXCEEDED_VERTICAL_MIN) !== 0;\n const verticalMax = (constraintFlags & EXCEEDED_VERTICAL_MAX) !== 0;\n if (horizontalMin) {\n if (verticalMin) {\n return \"se-resize\";\n } else if (verticalMax) {\n return \"ne-resize\";\n } else {\n return \"e-resize\";\n }\n } else if (horizontalMax) {\n if (verticalMin) {\n return \"sw-resize\";\n } else if (verticalMax) {\n return \"nw-resize\";\n } else {\n return \"w-resize\";\n }\n } else if (verticalMin) {\n return \"s-resize\";\n } else if (verticalMax) {\n return \"n-resize\";\n }\n }\n switch (state) {\n case \"horizontal\":\n return \"ew-resize\";\n case \"intersection\":\n return \"move\";\n case \"vertical\":\n return \"ns-resize\";\n }\n}\nfunction resetGlobalCursorStyle() {\n if (styleElement !== null) {\n document.head.removeChild(styleElement);\n currentCursorStyle = null;\n styleElement = null;\n }\n}\nfunction setGlobalCursorStyle(state, constraintFlags) {\n const style = getCursorStyle(state, constraintFlags);\n if (currentCursorStyle === style) {\n return;\n }\n currentCursorStyle = style;\n if (styleElement === null) {\n styleElement = document.createElement(\"style\");\n document.head.appendChild(styleElement);\n }\n styleElement.innerHTML = `*{cursor: ${style}!important;}`;\n}\n\nfunction isKeyDown(event) {\n return event.type === \"keydown\";\n}\nfunction isMouseEvent(event) {\n return event.type.startsWith(\"mouse\");\n}\nfunction isTouchEvent(event) {\n return event.type.startsWith(\"touch\");\n}\n\nfunction getResizeEventCoordinates(event) {\n if (isMouseEvent(event)) {\n return {\n x: event.clientX,\n y: event.clientY\n };\n } else if (isTouchEvent(event)) {\n const touch = event.touches[0];\n if (touch && touch.clientX && touch.clientY) {\n return {\n x: touch.clientX,\n y: touch.clientY\n };\n }\n }\n return {\n x: Infinity,\n y: Infinity\n };\n}\n\nfunction getInputType() {\n if (typeof matchMedia === \"function\") {\n return matchMedia(\"(pointer:coarse)\").matches ? \"coarse\" : \"fine\";\n }\n}\n\nfunction intersects(rectOne, rectTwo, strict) {\n if (strict) {\n return rectOne.x < rectTwo.x + rectTwo.width && rectOne.x + rectOne.width > rectTwo.x && rectOne.y < rectTwo.y + rectTwo.height && rectOne.y + rectOne.height > rectTwo.y;\n } else {\n return rectOne.x <= rectTwo.x + rectTwo.width && rectOne.x + rectOne.width >= rectTwo.x && rectOne.y <= rectTwo.y + rectTwo.height && rectOne.y + rectOne.height >= rectTwo.y;\n }\n}\n\n// Forked from NPM stacking-order@2.0.0\n\n/**\n * Determine which of two nodes appears in front of the other —\n * if `a` is in front, returns 1, otherwise returns -1\n * @param {HTMLElement} a\n * @param {HTMLElement} b\n */\nfunction compare(a, b) {\n if (a === b) throw new Error(\"Cannot compare node with itself\");\n const ancestors = {\n a: get_ancestors(a),\n b: get_ancestors(b)\n };\n let common_ancestor;\n\n // remove shared ancestors\n while (ancestors.a.at(-1) === ancestors.b.at(-1)) {\n a = ancestors.a.pop();\n b = ancestors.b.pop();\n common_ancestor = a;\n }\n assert(common_ancestor, \"Stacking order can only be calculated for elements with a common ancestor\");\n const z_indexes = {\n a: get_z_index(find_stacking_context(ancestors.a)),\n b: get_z_index(find_stacking_context(ancestors.b))\n };\n if (z_indexes.a === z_indexes.b) {\n const children = common_ancestor.childNodes;\n const furthest_ancestors = {\n a: ancestors.a.at(-1),\n b: ancestors.b.at(-1)\n };\n let i = children.length;\n while (i--) {\n const child = children[i];\n if (child === furthest_ancestors.a) return 1;\n if (child === furthest_ancestors.b) return -1;\n }\n }\n return Math.sign(z_indexes.a - z_indexes.b);\n}\nconst props = /\\b(?:position|zIndex|opacity|transform|webkitTransform|mixBlendMode|filter|webkitFilter|isolation)\\b/;\n\n/** @param {HTMLElement} node */\nfunction is_flex_item(node) {\n var _get_parent;\n // @ts-ignore\n const display = getComputedStyle((_get_parent = get_parent(node)) !== null && _get_parent !== void 0 ? _get_parent : node).display;\n return display === \"flex\" || display === \"inline-flex\";\n}\n\n/** @param {HTMLElement} node */\nfunction creates_stacking_context(node) {\n const style = getComputedStyle(node);\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Positioning/Understanding_z_index/The_stacking_context\n if (style.position === \"fixed\") return true;\n // Forked to fix upstream bug https://github.com/Rich-Harris/stacking-order/issues/3\n // if (\n // (style.zIndex !== \"auto\" && style.position !== \"static\") ||\n // is_flex_item(node)\n // )\n if (style.zIndex !== \"auto\" && (style.position !== \"static\" || is_flex_item(node))) return true;\n if (+style.opacity < 1) return true;\n if (\"transform\" in style && style.transform !== \"none\") return true;\n if (\"webkitTransform\" in style && style.webkitTransform !== \"none\") return true;\n if (\"mixBlendMode\" in style && style.mixBlendMode !== \"normal\") return true;\n if (\"filter\" in style && style.filter !== \"none\") return true;\n if (\"webkitFilter\" in style && style.webkitFilter !== \"none\") return true;\n if (\"isolation\" in style && style.isolation === \"isolate\") return true;\n if (props.test(style.willChange)) return true;\n // @ts-expect-error\n if (style.webkitOverflowScrolling === \"touch\") return true;\n return false;\n}\n\n/** @param {HTMLElement[]} nodes */\nfunction find_stacking_context(nodes) {\n let i = nodes.length;\n while (i--) {\n const node = nodes[i];\n assert(node, \"Missing node\");\n if (creates_stacking_context(node)) return node;\n }\n return null;\n}\n\n/** @param {HTMLElement} node */\nfunction get_z_index(node) {\n return node && Number(getComputedStyle(node).zIndex) || 0;\n}\n\n/** @param {HTMLElement} node */\nfunction get_ancestors(node) {\n const ancestors = [];\n while (node) {\n ancestors.push(node);\n // @ts-ignore\n node = get_parent(node);\n }\n return ancestors; // [ node, ... , , document ]\n}\n\n/** @param {HTMLElement} node */\nfunction get_parent(node) {\n const {\n parentNode\n } = node;\n if (parentNode && parentNode instanceof ShadowRoot) {\n return parentNode.host;\n }\n return parentNode;\n}\n\nconst EXCEEDED_HORIZONTAL_MIN = 0b0001;\nconst EXCEEDED_HORIZONTAL_MAX = 0b0010;\nconst EXCEEDED_VERTICAL_MIN = 0b0100;\nconst EXCEEDED_VERTICAL_MAX = 0b1000;\nconst isCoarsePointer = getInputType() === \"coarse\";\nlet intersectingHandles = [];\nlet isPointerDown = false;\nlet ownerDocumentCounts = new Map();\nlet panelConstraintFlags = new Map();\nconst registeredResizeHandlers = new Set();\nfunction registerResizeHandle(resizeHandleId, element, direction, hitAreaMargins, setResizeHandlerState) {\n var _ownerDocumentCounts$;\n const {\n ownerDocument\n } = element;\n const data = {\n direction,\n element,\n hitAreaMargins,\n setResizeHandlerState\n };\n const count = (_ownerDocumentCounts$ = ownerDocumentCounts.get(ownerDocument)) !== null && _ownerDocumentCounts$ !== void 0 ? _ownerDocumentCounts$ : 0;\n ownerDocumentCounts.set(ownerDocument, count + 1);\n registeredResizeHandlers.add(data);\n updateListeners();\n return function unregisterResizeHandle() {\n var _ownerDocumentCounts$2;\n panelConstraintFlags.delete(resizeHandleId);\n registeredResizeHandlers.delete(data);\n const count = (_ownerDocumentCounts$2 = ownerDocumentCounts.get(ownerDocument)) !== null && _ownerDocumentCounts$2 !== void 0 ? _ownerDocumentCounts$2 : 1;\n ownerDocumentCounts.set(ownerDocument, count - 1);\n updateListeners();\n if (count === 1) {\n ownerDocumentCounts.delete(ownerDocument);\n }\n };\n}\nfunction handlePointerDown(event) {\n const {\n target\n } = event;\n const {\n x,\n y\n } = getResizeEventCoordinates(event);\n isPointerDown = true;\n recalculateIntersectingHandles({\n target,\n x,\n y\n });\n updateListeners();\n if (intersectingHandles.length > 0) {\n updateResizeHandlerStates(\"down\", event);\n event.preventDefault();\n }\n}\nfunction handlePointerMove(event) {\n const {\n x,\n y\n } = getResizeEventCoordinates(event);\n if (!isPointerDown) {\n const {\n target\n } = event;\n\n // Recalculate intersecting handles whenever the pointer moves, except if it has already been pressed\n // at that point, the handles may not move with the pointer (depending on constraints)\n // but the same set of active handles should be locked until the pointer is released\n recalculateIntersectingHandles({\n target,\n x,\n y\n });\n }\n updateResizeHandlerStates(\"move\", event);\n\n // Update cursor based on return value(s) from active handles\n updateCursor();\n if (intersectingHandles.length > 0) {\n event.preventDefault();\n }\n}\nfunction handlePointerUp(event) {\n const {\n target\n } = event;\n const {\n x,\n y\n } = getResizeEventCoordinates(event);\n panelConstraintFlags.clear();\n isPointerDown = false;\n if (intersectingHandles.length > 0) {\n event.preventDefault();\n }\n updateResizeHandlerStates(\"up\", event);\n recalculateIntersectingHandles({\n target,\n x,\n y\n });\n updateCursor();\n updateListeners();\n}\nfunction recalculateIntersectingHandles({\n target,\n x,\n y\n}) {\n intersectingHandles.splice(0);\n let targetElement = null;\n if (target instanceof HTMLElement) {\n targetElement = target;\n }\n registeredResizeHandlers.forEach(data => {\n const {\n element: dragHandleElement,\n hitAreaMargins\n } = data;\n const dragHandleRect = dragHandleElement.getBoundingClientRect();\n const {\n bottom,\n left,\n right,\n top\n } = dragHandleRect;\n const margin = isCoarsePointer ? hitAreaMargins.coarse : hitAreaMargins.fine;\n const eventIntersects = x >= left - margin && x <= right + margin && y >= top - margin && y <= bottom + margin;\n if (eventIntersects) {\n // TRICKY\n // We listen for pointers events at the root in order to support hit area margins\n // (determining when the pointer is close enough to an element to be considered a \"hit\")\n // Clicking on an element \"above\" a handle (e.g. a modal) should prevent a hit though\n // so at this point we need to compare stacking order of a potentially intersecting drag handle,\n // and the element that was actually clicked/touched\n if (targetElement !== null && dragHandleElement !== targetElement && !dragHandleElement.contains(targetElement) && !targetElement.contains(dragHandleElement) &&\n // Calculating stacking order has a cost, so we should avoid it if possible\n // That is why we only check potentially intersecting handles,\n // and why we skip if the event target is within the handle's DOM\n compare(targetElement, dragHandleElement) > 0) {\n // If the target is above the drag handle, then we also need to confirm they overlap\n // If they are beside each other (e.g. a panel and its drag handle) then the handle is still interactive\n //\n // It's not enough to compare only the target\n // The target might be a small element inside of a larger container\n // (For example, a SPAN or a DIV inside of a larger modal dialog)\n let currentElement = targetElement;\n let didIntersect = false;\n while (currentElement) {\n if (currentElement.contains(dragHandleElement)) {\n break;\n } else if (intersects(currentElement.getBoundingClientRect(), dragHandleRect, true)) {\n didIntersect = true;\n break;\n }\n currentElement = currentElement.parentElement;\n }\n if (didIntersect) {\n return;\n }\n }\n intersectingHandles.push(data);\n }\n });\n}\nfunction reportConstraintsViolation(resizeHandleId, flag) {\n panelConstraintFlags.set(resizeHandleId, flag);\n}\nfunction updateCursor() {\n let intersectsHorizontal = false;\n let intersectsVertical = false;\n intersectingHandles.forEach(data => {\n const {\n direction\n } = data;\n if (direction === \"horizontal\") {\n intersectsHorizontal = true;\n } else {\n intersectsVertical = true;\n }\n });\n let constraintFlags = 0;\n panelConstraintFlags.forEach(flag => {\n constraintFlags |= flag;\n });\n if (intersectsHorizontal && intersectsVertical) {\n setGlobalCursorStyle(\"intersection\", constraintFlags);\n } else if (intersectsHorizontal) {\n setGlobalCursorStyle(\"horizontal\", constraintFlags);\n } else if (intersectsVertical) {\n setGlobalCursorStyle(\"vertical\", constraintFlags);\n } else {\n resetGlobalCursorStyle();\n }\n}\nfunction updateListeners() {\n ownerDocumentCounts.forEach((_, ownerDocument) => {\n const {\n body\n } = ownerDocument;\n body.removeEventListener(\"contextmenu\", handlePointerUp);\n body.removeEventListener(\"mousedown\", handlePointerDown);\n body.removeEventListener(\"mouseleave\", handlePointerMove);\n body.removeEventListener(\"mousemove\", handlePointerMove);\n body.removeEventListener(\"touchmove\", handlePointerMove);\n body.removeEventListener(\"touchstart\", handlePointerDown);\n });\n window.removeEventListener(\"mouseup\", handlePointerUp);\n window.removeEventListener(\"touchcancel\", handlePointerUp);\n window.removeEventListener(\"touchend\", handlePointerUp);\n if (registeredResizeHandlers.size > 0) {\n if (isPointerDown) {\n if (intersectingHandles.length > 0) {\n ownerDocumentCounts.forEach((count, ownerDocument) => {\n const {\n body\n } = ownerDocument;\n if (count > 0) {\n body.addEventListener(\"contextmenu\", handlePointerUp);\n body.addEventListener(\"mouseleave\", handlePointerMove);\n body.addEventListener(\"mousemove\", handlePointerMove);\n body.addEventListener(\"touchmove\", handlePointerMove, {\n passive: false\n });\n }\n });\n }\n window.addEventListener(\"mouseup\", handlePointerUp);\n window.addEventListener(\"touchcancel\", handlePointerUp);\n window.addEventListener(\"touchend\", handlePointerUp);\n } else {\n ownerDocumentCounts.forEach((count, ownerDocument) => {\n const {\n body\n } = ownerDocument;\n if (count > 0) {\n body.addEventListener(\"mousedown\", handlePointerDown);\n body.addEventListener(\"mousemove\", handlePointerMove);\n body.addEventListener(\"touchmove\", handlePointerMove, {\n passive: false\n });\n body.addEventListener(\"touchstart\", handlePointerDown);\n }\n });\n }\n }\n}\nfunction updateResizeHandlerStates(action, event) {\n registeredResizeHandlers.forEach(data => {\n const {\n setResizeHandlerState\n } = data;\n const isActive = intersectingHandles.includes(data);\n setResizeHandlerState(action, isActive, event);\n });\n}\n\nfunction assert(expectedCondition, message) {\n if (!expectedCondition) {\n console.error(message);\n throw Error(message);\n }\n}\n\nconst PRECISION = 10;\n\nfunction fuzzyCompareNumbers(actual, expected, fractionDigits = PRECISION) {\n if (actual.toFixed(fractionDigits) === expected.toFixed(fractionDigits)) {\n return 0;\n } else {\n return actual > expected ? 1 : -1;\n }\n}\nfunction fuzzyNumbersEqual$1(actual, expected, fractionDigits = PRECISION) {\n return fuzzyCompareNumbers(actual, expected, fractionDigits) === 0;\n}\n\nfunction fuzzyNumbersEqual(actual, expected, fractionDigits) {\n return fuzzyCompareNumbers(actual, expected, fractionDigits) === 0;\n}\n\nfunction fuzzyLayoutsEqual(actual, expected, fractionDigits) {\n if (actual.length !== expected.length) {\n return false;\n }\n for (let index = 0; index < actual.length; index++) {\n const actualSize = actual[index];\n const expectedSize = expected[index];\n if (!fuzzyNumbersEqual(actualSize, expectedSize, fractionDigits)) {\n return false;\n }\n }\n return true;\n}\n\n// Panel size must be in percentages; pixel values should be pre-converted\nfunction resizePanel({\n panelConstraints: panelConstraintsArray,\n panelIndex,\n size\n}) {\n const panelConstraints = panelConstraintsArray[panelIndex];\n assert(panelConstraints != null, `Panel constraints not found for index ${panelIndex}`);\n let {\n collapsedSize = 0,\n collapsible,\n maxSize = 100,\n minSize = 0\n } = panelConstraints;\n if (fuzzyCompareNumbers(size, minSize) < 0) {\n if (collapsible) {\n // Collapsible panels should snap closed or open only once they cross the halfway point between collapsed and min size.\n const halfwayPoint = (collapsedSize + minSize) / 2;\n if (fuzzyCompareNumbers(size, halfwayPoint) < 0) {\n size = collapsedSize;\n } else {\n size = minSize;\n }\n } else {\n size = minSize;\n }\n }\n size = Math.min(maxSize, size);\n size = parseFloat(size.toFixed(PRECISION));\n return size;\n}\n\n// All units must be in percentages; pixel values should be pre-converted\nfunction adjustLayoutByDelta({\n delta,\n initialLayout,\n panelConstraints: panelConstraintsArray,\n pivotIndices,\n prevLayout,\n trigger\n}) {\n if (fuzzyNumbersEqual(delta, 0)) {\n return initialLayout;\n }\n const nextLayout = [...initialLayout];\n const [firstPivotIndex, secondPivotIndex] = pivotIndices;\n assert(firstPivotIndex != null, \"Invalid first pivot index\");\n assert(secondPivotIndex != null, \"Invalid second pivot index\");\n let deltaApplied = 0;\n\n // const DEBUG = [];\n // DEBUG.push(`adjustLayoutByDelta()`);\n // DEBUG.push(` initialLayout: ${initialLayout.join(\", \")}`);\n // DEBUG.push(` prevLayout: ${prevLayout.join(\", \")}`);\n // DEBUG.push(` delta: ${delta}`);\n // DEBUG.push(` pivotIndices: ${pivotIndices.join(\", \")}`);\n // DEBUG.push(` trigger: ${trigger}`);\n // DEBUG.push(\"\");\n\n // A resizing panel affects the panels before or after it.\n //\n // A negative delta means the panel(s) immediately after the resize handle should grow/expand by decreasing its offset.\n // Other panels may also need to shrink/contract (and shift) to make room, depending on the min weights.\n //\n // A positive delta means the panel(s) immediately before the resize handle should \"expand\".\n // This is accomplished by shrinking/contracting (and shifting) one or more of the panels after the resize handle.\n\n {\n // If this is a resize triggered by a keyboard event, our logic for expanding/collapsing is different.\n // We no longer check the halfway threshold because this may prevent the panel from expanding at all.\n if (trigger === \"keyboard\") {\n {\n // Check if we should expand a collapsed panel\n const index = delta < 0 ? secondPivotIndex : firstPivotIndex;\n const panelConstraints = panelConstraintsArray[index];\n assert(panelConstraints, `Panel constraints not found for index ${index}`);\n const {\n collapsedSize = 0,\n collapsible,\n minSize = 0\n } = panelConstraints;\n\n // DEBUG.push(`edge case check 1: ${index}`);\n // DEBUG.push(` -> collapsible? ${collapsible}`);\n if (collapsible) {\n const prevSize = initialLayout[index];\n assert(prevSize != null, `Previous layout not found for panel index ${index}`);\n if (fuzzyNumbersEqual(prevSize, collapsedSize)) {\n const localDelta = minSize - prevSize;\n // DEBUG.push(` -> expand delta: ${localDelta}`);\n\n if (fuzzyCompareNumbers(localDelta, Math.abs(delta)) > 0) {\n delta = delta < 0 ? 0 - localDelta : localDelta;\n // DEBUG.push(` -> delta: ${delta}`);\n }\n }\n }\n }\n\n {\n // Check if we should collapse a panel at its minimum size\n const index = delta < 0 ? firstPivotIndex : secondPivotIndex;\n const panelConstraints = panelConstraintsArray[index];\n assert(panelConstraints, `No panel constraints found for index ${index}`);\n const {\n collapsedSize = 0,\n collapsible,\n minSize = 0\n } = panelConstraints;\n\n // DEBUG.push(`edge case check 2: ${index}`);\n // DEBUG.push(` -> collapsible? ${collapsible}`);\n if (collapsible) {\n const prevSize = initialLayout[index];\n assert(prevSize != null, `Previous layout not found for panel index ${index}`);\n if (fuzzyNumbersEqual(prevSize, minSize)) {\n const localDelta = prevSize - collapsedSize;\n // DEBUG.push(` -> expand delta: ${localDelta}`);\n\n if (fuzzyCompareNumbers(localDelta, Math.abs(delta)) > 0) {\n delta = delta < 0 ? 0 - localDelta : localDelta;\n // DEBUG.push(` -> delta: ${delta}`);\n }\n }\n }\n }\n }\n // DEBUG.push(\"\");\n }\n\n {\n // Pre-calculate max available delta in the opposite direction of our pivot.\n // This will be the maximum amount we're allowed to expand/contract the panels in the primary direction.\n // If this amount is less than the requested delta, adjust the requested delta.\n // If this amount is greater than the requested delta, that's useful information too–\n // as an expanding panel might change from collapsed to min size.\n\n const increment = delta < 0 ? 1 : -1;\n let index = delta < 0 ? secondPivotIndex : firstPivotIndex;\n let maxAvailableDelta = 0;\n\n // DEBUG.push(\"pre calc...\");\n while (true) {\n const prevSize = initialLayout[index];\n assert(prevSize != null, `Previous layout not found for panel index ${index}`);\n const maxSafeSize = resizePanel({\n panelConstraints: panelConstraintsArray,\n panelIndex: index,\n size: 100\n });\n const delta = maxSafeSize - prevSize;\n // DEBUG.push(` ${index}: ${prevSize} -> ${maxSafeSize}`);\n\n maxAvailableDelta += delta;\n index += increment;\n if (index < 0 || index >= panelConstraintsArray.length) {\n break;\n }\n }\n\n // DEBUG.push(` -> max available delta: ${maxAvailableDelta}`);\n const minAbsDelta = Math.min(Math.abs(delta), Math.abs(maxAvailableDelta));\n delta = delta < 0 ? 0 - minAbsDelta : minAbsDelta;\n // DEBUG.push(` -> adjusted delta: ${delta}`);\n // DEBUG.push(\"\");\n }\n\n {\n // Delta added to a panel needs to be subtracted from other panels (within the constraints that those panels allow).\n\n const pivotIndex = delta < 0 ? firstPivotIndex : secondPivotIndex;\n let index = pivotIndex;\n while (index >= 0 && index < panelConstraintsArray.length) {\n const deltaRemaining = Math.abs(delta) - Math.abs(deltaApplied);\n const prevSize = initialLayout[index];\n assert(prevSize != null, `Previous layout not found for panel index ${index}`);\n const unsafeSize = prevSize - deltaRemaining;\n const safeSize = resizePanel({\n panelConstraints: panelConstraintsArray,\n panelIndex: index,\n size: unsafeSize\n });\n if (!fuzzyNumbersEqual(prevSize, safeSize)) {\n deltaApplied += prevSize - safeSize;\n nextLayout[index] = safeSize;\n if (deltaApplied.toFixed(3).localeCompare(Math.abs(delta).toFixed(3), undefined, {\n numeric: true\n }) >= 0) {\n break;\n }\n }\n if (delta < 0) {\n index--;\n } else {\n index++;\n }\n }\n }\n // DEBUG.push(`after 1: ${nextLayout.join(\", \")}`);\n // DEBUG.push(` deltaApplied: ${deltaApplied}`);\n // DEBUG.push(\"\");\n\n // If we were unable to resize any of the panels panels, return the previous state.\n // This will essentially bailout and ignore e.g. drags past a panel's boundaries\n if (fuzzyLayoutsEqual(prevLayout, nextLayout)) {\n // DEBUG.push(`bailout to previous layout: ${prevLayout.join(\", \")}`);\n // console.log(DEBUG.join(\"\\n\"));\n\n return prevLayout;\n }\n {\n // Now distribute the applied delta to the panels in the other direction\n const pivotIndex = delta < 0 ? secondPivotIndex : firstPivotIndex;\n const prevSize = initialLayout[pivotIndex];\n assert(prevSize != null, `Previous layout not found for panel index ${pivotIndex}`);\n const unsafeSize = prevSize + deltaApplied;\n const safeSize = resizePanel({\n panelConstraints: panelConstraintsArray,\n panelIndex: pivotIndex,\n size: unsafeSize\n });\n\n // Adjust the pivot panel before, but only by the amount that surrounding panels were able to shrink/contract.\n nextLayout[pivotIndex] = safeSize;\n\n // Edge case where expanding or contracting one panel caused another one to change collapsed state\n if (!fuzzyNumbersEqual(safeSize, unsafeSize)) {\n let deltaRemaining = unsafeSize - safeSize;\n const pivotIndex = delta < 0 ? secondPivotIndex : firstPivotIndex;\n let index = pivotIndex;\n while (index >= 0 && index < panelConstraintsArray.length) {\n const prevSize = nextLayout[index];\n assert(prevSize != null, `Previous layout not found for panel index ${index}`);\n const unsafeSize = prevSize + deltaRemaining;\n const safeSize = resizePanel({\n panelConstraints: panelConstraintsArray,\n panelIndex: index,\n size: unsafeSize\n });\n if (!fuzzyNumbersEqual(prevSize, safeSize)) {\n deltaRemaining -= safeSize - prevSize;\n nextLayout[index] = safeSize;\n }\n if (fuzzyNumbersEqual(deltaRemaining, 0)) {\n break;\n }\n if (delta > 0) {\n index--;\n } else {\n index++;\n }\n }\n }\n }\n // DEBUG.push(`after 2: ${nextLayout.join(\", \")}`);\n // DEBUG.push(` deltaApplied: ${deltaApplied}`);\n // DEBUG.push(\"\");\n\n const totalSize = nextLayout.reduce((total, size) => size + total, 0);\n // DEBUG.push(`total size: ${totalSize}`);\n\n // If our new layout doesn't add up to 100%, that means the requested delta can't be applied\n // In that case, fall back to our most recent valid layout\n if (!fuzzyNumbersEqual(totalSize, 100)) {\n // DEBUG.push(`bailout to previous layout: ${prevLayout.join(\", \")}`);\n // console.log(DEBUG.join(\"\\n\"));\n\n return prevLayout;\n }\n\n // console.log(DEBUG.join(\"\\n\"));\n return nextLayout;\n}\n\nfunction calculateAriaValues({\n layout,\n panelsArray,\n pivotIndices\n}) {\n let currentMinSize = 0;\n let currentMaxSize = 100;\n let totalMinSize = 0;\n let totalMaxSize = 0;\n const firstIndex = pivotIndices[0];\n assert(firstIndex != null, \"No pivot index found\");\n\n // A panel's effective min/max sizes also need to account for other panel's sizes.\n panelsArray.forEach((panelData, index) => {\n const {\n constraints\n } = panelData;\n const {\n maxSize = 100,\n minSize = 0\n } = constraints;\n if (index === firstIndex) {\n currentMinSize = minSize;\n currentMaxSize = maxSize;\n } else {\n totalMinSize += minSize;\n totalMaxSize += maxSize;\n }\n });\n const valueMax = Math.min(currentMaxSize, 100 - totalMinSize);\n const valueMin = Math.max(currentMinSize, 100 - totalMaxSize);\n const valueNow = layout[firstIndex];\n return {\n valueMax,\n valueMin,\n valueNow\n };\n}\n\nfunction getResizeHandleElementsForGroup(groupId, scope = document) {\n return Array.from(scope.querySelectorAll(`[data-panel-resize-handle-id][data-panel-group-id=\"${groupId}\"]`));\n}\n\nfunction getResizeHandleElementIndex(groupId, id, scope = document) {\n const handles = getResizeHandleElementsForGroup(groupId, scope);\n const index = handles.findIndex(handle => handle.getAttribute(\"data-panel-resize-handle-id\") === id);\n return index !== null && index !== void 0 ? index : null;\n}\n\nfunction determinePivotIndices(groupId, dragHandleId, panelGroupElement) {\n const index = getResizeHandleElementIndex(groupId, dragHandleId, panelGroupElement);\n return index != null ? [index, index + 1] : [-1, -1];\n}\n\nfunction getPanelGroupElement(id, rootElement = document) {\n var _dataset;\n //If the root element is the PanelGroup\n if (rootElement instanceof HTMLElement && (rootElement === null || rootElement === void 0 ? void 0 : (_dataset = rootElement.dataset) === null || _dataset === void 0 ? void 0 : _dataset.panelGroupId) == id) {\n return rootElement;\n }\n\n //Else query children\n const element = rootElement.querySelector(`[data-panel-group][data-panel-group-id=\"${id}\"]`);\n if (element) {\n return element;\n }\n return null;\n}\n\nfunction getResizeHandleElement(id, scope = document) {\n const element = scope.querySelector(`[data-panel-resize-handle-id=\"${id}\"]`);\n if (element) {\n return element;\n }\n return null;\n}\n\nfunction getResizeHandlePanelIds(groupId, handleId, panelsArray, scope = document) {\n var _panelsArray$index$id, _panelsArray$index, _panelsArray$id, _panelsArray;\n const handle = getResizeHandleElement(handleId, scope);\n const handles = getResizeHandleElementsForGroup(groupId, scope);\n const index = handle ? handles.indexOf(handle) : -1;\n const idBefore = (_panelsArray$index$id = (_panelsArray$index = panelsArray[index]) === null || _panelsArray$index === void 0 ? void 0 : _panelsArray$index.id) !== null && _panelsArray$index$id !== void 0 ? _panelsArray$index$id : null;\n const idAfter = (_panelsArray$id = (_panelsArray = panelsArray[index + 1]) === null || _panelsArray === void 0 ? void 0 : _panelsArray.id) !== null && _panelsArray$id !== void 0 ? _panelsArray$id : null;\n return [idBefore, idAfter];\n}\n\n// https://www.w3.org/WAI/ARIA/apg/patterns/windowsplitter/\n\nfunction useWindowSplitterPanelGroupBehavior({\n committedValuesRef,\n eagerValuesRef,\n groupId,\n layout,\n panelDataArray,\n panelGroupElement,\n setLayout\n}) {\n useRef({\n didWarnAboutMissingResizeHandle: false\n });\n useIsomorphicLayoutEffect(() => {\n if (!panelGroupElement) {\n return;\n }\n const resizeHandleElements = getResizeHandleElementsForGroup(groupId, panelGroupElement);\n for (let index = 0; index < panelDataArray.length - 1; index++) {\n const {\n valueMax,\n valueMin,\n valueNow\n } = calculateAriaValues({\n layout,\n panelsArray: panelDataArray,\n pivotIndices: [index, index + 1]\n });\n const resizeHandleElement = resizeHandleElements[index];\n if (resizeHandleElement == null) ; else {\n const panelData = panelDataArray[index];\n assert(panelData, `No panel data found for index \"${index}\"`);\n resizeHandleElement.setAttribute(\"aria-controls\", panelData.id);\n resizeHandleElement.setAttribute(\"aria-valuemax\", \"\" + Math.round(valueMax));\n resizeHandleElement.setAttribute(\"aria-valuemin\", \"\" + Math.round(valueMin));\n resizeHandleElement.setAttribute(\"aria-valuenow\", valueNow != null ? \"\" + Math.round(valueNow) : \"\");\n }\n }\n return () => {\n resizeHandleElements.forEach((resizeHandleElement, index) => {\n resizeHandleElement.removeAttribute(\"aria-controls\");\n resizeHandleElement.removeAttribute(\"aria-valuemax\");\n resizeHandleElement.removeAttribute(\"aria-valuemin\");\n resizeHandleElement.removeAttribute(\"aria-valuenow\");\n });\n };\n }, [groupId, layout, panelDataArray, panelGroupElement]);\n useEffect(() => {\n if (!panelGroupElement) {\n return;\n }\n const eagerValues = eagerValuesRef.current;\n assert(eagerValues, `Eager values not found`);\n const {\n panelDataArray\n } = eagerValues;\n const groupElement = getPanelGroupElement(groupId, panelGroupElement);\n assert(groupElement != null, `No group found for id \"${groupId}\"`);\n const handles = getResizeHandleElementsForGroup(groupId, panelGroupElement);\n assert(handles, `No resize handles found for group id \"${groupId}\"`);\n const cleanupFunctions = handles.map(handle => {\n const handleId = handle.getAttribute(\"data-panel-resize-handle-id\");\n assert(handleId, `Resize handle element has no handle id attribute`);\n const [idBefore, idAfter] = getResizeHandlePanelIds(groupId, handleId, panelDataArray, panelGroupElement);\n if (idBefore == null || idAfter == null) {\n return () => {};\n }\n const onKeyDown = event => {\n if (event.defaultPrevented) {\n return;\n }\n switch (event.key) {\n case \"Enter\":\n {\n event.preventDefault();\n const index = panelDataArray.findIndex(panelData => panelData.id === idBefore);\n if (index >= 0) {\n const panelData = panelDataArray[index];\n assert(panelData, `No panel data found for index ${index}`);\n const size = layout[index];\n const {\n collapsedSize = 0,\n collapsible,\n minSize = 0\n } = panelData.constraints;\n if (size != null && collapsible) {\n const nextLayout = adjustLayoutByDelta({\n delta: fuzzyNumbersEqual(size, collapsedSize) ? minSize - collapsedSize : collapsedSize - size,\n initialLayout: layout,\n panelConstraints: panelDataArray.map(panelData => panelData.constraints),\n pivotIndices: determinePivotIndices(groupId, handleId, panelGroupElement),\n prevLayout: layout,\n trigger: \"keyboard\"\n });\n if (layout !== nextLayout) {\n setLayout(nextLayout);\n }\n }\n }\n break;\n }\n }\n };\n handle.addEventListener(\"keydown\", onKeyDown);\n return () => {\n handle.removeEventListener(\"keydown\", onKeyDown);\n };\n });\n return () => {\n cleanupFunctions.forEach(cleanupFunction => cleanupFunction());\n };\n }, [panelGroupElement, committedValuesRef, eagerValuesRef, groupId, layout, panelDataArray, setLayout]);\n}\n\nfunction areEqual(arrayA, arrayB) {\n if (arrayA.length !== arrayB.length) {\n return false;\n }\n for (let index = 0; index < arrayA.length; index++) {\n if (arrayA[index] !== arrayB[index]) {\n return false;\n }\n }\n return true;\n}\n\nfunction getResizeEventCursorPosition(direction, event) {\n const isHorizontal = direction === \"horizontal\";\n const {\n x,\n y\n } = getResizeEventCoordinates(event);\n return isHorizontal ? x : y;\n}\n\nfunction calculateDragOffsetPercentage(event, dragHandleId, direction, initialDragState, panelGroupElement) {\n const isHorizontal = direction === \"horizontal\";\n const handleElement = getResizeHandleElement(dragHandleId, panelGroupElement);\n assert(handleElement, `No resize handle element found for id \"${dragHandleId}\"`);\n const groupId = handleElement.getAttribute(\"data-panel-group-id\");\n assert(groupId, `Resize handle element has no group id attribute`);\n let {\n initialCursorPosition\n } = initialDragState;\n const cursorPosition = getResizeEventCursorPosition(direction, event);\n const groupElement = getPanelGroupElement(groupId, panelGroupElement);\n assert(groupElement, `No group element found for id \"${groupId}\"`);\n const groupRect = groupElement.getBoundingClientRect();\n const groupSizeInPixels = isHorizontal ? groupRect.width : groupRect.height;\n const offsetPixels = cursorPosition - initialCursorPosition;\n const offsetPercentage = offsetPixels / groupSizeInPixels * 100;\n return offsetPercentage;\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/movementX\nfunction calculateDeltaPercentage(event, dragHandleId, direction, initialDragState, keyboardResizeBy, panelGroupElement) {\n if (isKeyDown(event)) {\n const isHorizontal = direction === \"horizontal\";\n let delta = 0;\n if (event.shiftKey) {\n delta = 100;\n } else if (keyboardResizeBy != null) {\n delta = keyboardResizeBy;\n } else {\n delta = 10;\n }\n let movement = 0;\n switch (event.key) {\n case \"ArrowDown\":\n movement = isHorizontal ? 0 : delta;\n break;\n case \"ArrowLeft\":\n movement = isHorizontal ? -delta : 0;\n break;\n case \"ArrowRight\":\n movement = isHorizontal ? delta : 0;\n break;\n case \"ArrowUp\":\n movement = isHorizontal ? 0 : -delta;\n break;\n case \"End\":\n movement = 100;\n break;\n case \"Home\":\n movement = -100;\n break;\n }\n return movement;\n } else {\n if (initialDragState == null) {\n return 0;\n }\n return calculateDragOffsetPercentage(event, dragHandleId, direction, initialDragState, panelGroupElement);\n }\n}\n\nfunction calculateUnsafeDefaultLayout({\n panelDataArray\n}) {\n const layout = Array(panelDataArray.length);\n const panelConstraintsArray = panelDataArray.map(panelData => panelData.constraints);\n let numPanelsWithSizes = 0;\n let remainingSize = 100;\n\n // Distribute default sizes first\n for (let index = 0; index < panelDataArray.length; index++) {\n const panelConstraints = panelConstraintsArray[index];\n assert(panelConstraints, `Panel constraints not found for index ${index}`);\n const {\n defaultSize\n } = panelConstraints;\n if (defaultSize != null) {\n numPanelsWithSizes++;\n layout[index] = defaultSize;\n remainingSize -= defaultSize;\n }\n }\n\n // Remaining size should be distributed evenly between panels without default sizes\n for (let index = 0; index < panelDataArray.length; index++) {\n const panelConstraints = panelConstraintsArray[index];\n assert(panelConstraints, `Panel constraints not found for index ${index}`);\n const {\n defaultSize\n } = panelConstraints;\n if (defaultSize != null) {\n continue;\n }\n const numRemainingPanels = panelDataArray.length - numPanelsWithSizes;\n const size = remainingSize / numRemainingPanels;\n numPanelsWithSizes++;\n layout[index] = size;\n remainingSize -= size;\n }\n return layout;\n}\n\n// Layout should be pre-converted into percentages\nfunction callPanelCallbacks(panelsArray, layout, panelIdToLastNotifiedSizeMap) {\n layout.forEach((size, index) => {\n const panelData = panelsArray[index];\n assert(panelData, `Panel data not found for index ${index}`);\n const {\n callbacks,\n constraints,\n id: panelId\n } = panelData;\n const {\n collapsedSize = 0,\n collapsible\n } = constraints;\n const lastNotifiedSize = panelIdToLastNotifiedSizeMap[panelId];\n if (lastNotifiedSize == null || size !== lastNotifiedSize) {\n panelIdToLastNotifiedSizeMap[panelId] = size;\n const {\n onCollapse,\n onExpand,\n onResize\n } = callbacks;\n if (onResize) {\n onResize(size, lastNotifiedSize);\n }\n if (collapsible && (onCollapse || onExpand)) {\n if (onExpand && (lastNotifiedSize == null || fuzzyNumbersEqual$1(lastNotifiedSize, collapsedSize)) && !fuzzyNumbersEqual$1(size, collapsedSize)) {\n onExpand();\n }\n if (onCollapse && (lastNotifiedSize == null || !fuzzyNumbersEqual$1(lastNotifiedSize, collapsedSize)) && fuzzyNumbersEqual$1(size, collapsedSize)) {\n onCollapse();\n }\n }\n }\n });\n}\n\nfunction compareLayouts(a, b) {\n if (a.length !== b.length) {\n return false;\n } else {\n for (let index = 0; index < a.length; index++) {\n if (a[index] != b[index]) {\n return false;\n }\n }\n }\n return true;\n}\n\n// This method returns a number between 1 and 100 representing\n\n// the % of the group's overall space this panel should occupy.\nfunction computePanelFlexBoxStyle({\n defaultSize,\n dragState,\n layout,\n panelData,\n panelIndex,\n precision = 3\n}) {\n const size = layout[panelIndex];\n let flexGrow;\n if (size == null) {\n // Initial render (before panels have registered themselves)\n // In order to support server rendering, fall back to default size if provided\n flexGrow = defaultSize != undefined ? defaultSize.toFixed(precision) : \"1\";\n } else if (panelData.length === 1) {\n // Special case: Single panel group should always fill full width/height\n flexGrow = \"1\";\n } else {\n flexGrow = size.toFixed(precision);\n }\n return {\n flexBasis: 0,\n flexGrow,\n flexShrink: 1,\n // Without this, Panel sizes may be unintentionally overridden by their content\n overflow: \"hidden\",\n // Disable pointer events inside of a panel during resize\n // This avoid edge cases like nested iframes\n pointerEvents: dragState !== null ? \"none\" : undefined\n };\n}\n\nfunction debounce(callback, durationMs = 10) {\n let timeoutId = null;\n let callable = (...args) => {\n if (timeoutId !== null) {\n clearTimeout(timeoutId);\n }\n timeoutId = setTimeout(() => {\n callback(...args);\n }, durationMs);\n };\n return callable;\n}\n\n// PanelGroup might be rendering in a server-side environment where localStorage is not available\n// or on a browser with cookies/storage disabled.\n// In either case, this function avoids accessing localStorage until needed,\n// and avoids throwing user-visible errors.\nfunction initializeDefaultStorage(storageObject) {\n try {\n if (typeof localStorage !== \"undefined\") {\n // Bypass this check for future calls\n storageObject.getItem = name => {\n return localStorage.getItem(name);\n };\n storageObject.setItem = (name, value) => {\n localStorage.setItem(name, value);\n };\n } else {\n throw new Error(\"localStorage not supported in this environment\");\n }\n } catch (error) {\n console.error(error);\n storageObject.getItem = () => null;\n storageObject.setItem = () => {};\n }\n}\n\nfunction getPanelGroupKey(autoSaveId) {\n return `react-resizable-panels:${autoSaveId}`;\n}\n\n// Note that Panel ids might be user-provided (stable) or useId generated (non-deterministic)\n// so they should not be used as part of the serialization key.\n// Using the min/max size attributes should work well enough as a backup.\n// Pre-sorting by minSize allows remembering layouts even if panels are re-ordered/dragged.\nfunction getPanelKey(panels) {\n return panels.map(panel => {\n const {\n constraints,\n id,\n idIsFromProps,\n order\n } = panel;\n if (idIsFromProps) {\n return id;\n } else {\n return order ? `${order}:${JSON.stringify(constraints)}` : JSON.stringify(constraints);\n }\n }).sort((a, b) => a.localeCompare(b)).join(\",\");\n}\nfunction loadSerializedPanelGroupState(autoSaveId, storage) {\n try {\n const panelGroupKey = getPanelGroupKey(autoSaveId);\n const serialized = storage.getItem(panelGroupKey);\n if (serialized) {\n const parsed = JSON.parse(serialized);\n if (typeof parsed === \"object\" && parsed != null) {\n return parsed;\n }\n }\n } catch (error) {}\n return null;\n}\nfunction loadPanelGroupState(autoSaveId, panels, storage) {\n var _loadSerializedPanelG, _state$panelKey;\n const state = (_loadSerializedPanelG = loadSerializedPanelGroupState(autoSaveId, storage)) !== null && _loadSerializedPanelG !== void 0 ? _loadSerializedPanelG : {};\n const panelKey = getPanelKey(panels);\n return (_state$panelKey = state[panelKey]) !== null && _state$panelKey !== void 0 ? _state$panelKey : null;\n}\nfunction savePanelGroupState(autoSaveId, panels, panelSizesBeforeCollapse, sizes, storage) {\n var _loadSerializedPanelG2;\n const panelGroupKey = getPanelGroupKey(autoSaveId);\n const panelKey = getPanelKey(panels);\n const state = (_loadSerializedPanelG2 = loadSerializedPanelGroupState(autoSaveId, storage)) !== null && _loadSerializedPanelG2 !== void 0 ? _loadSerializedPanelG2 : {};\n state[panelKey] = {\n expandToSizes: Object.fromEntries(panelSizesBeforeCollapse.entries()),\n layout: sizes\n };\n try {\n storage.setItem(panelGroupKey, JSON.stringify(state));\n } catch (error) {\n console.error(error);\n }\n}\n\n// All units must be in percentages; pixel values should be pre-converted\nfunction validatePanelGroupLayout({\n layout: prevLayout,\n panelConstraints\n}) {\n const nextLayout = [...prevLayout];\n const nextLayoutTotalSize = nextLayout.reduce((accumulated, current) => accumulated + current, 0);\n\n // Validate layout expectations\n if (nextLayout.length !== panelConstraints.length) {\n throw Error(`Invalid ${panelConstraints.length} panel layout: ${nextLayout.map(size => `${size}%`).join(\", \")}`);\n } else if (!fuzzyNumbersEqual(nextLayoutTotalSize, 100)) {\n for (let index = 0; index < panelConstraints.length; index++) {\n const unsafeSize = nextLayout[index];\n assert(unsafeSize != null, `No layout data found for index ${index}`);\n const safeSize = 100 / nextLayoutTotalSize * unsafeSize;\n nextLayout[index] = safeSize;\n }\n }\n let remainingSize = 0;\n\n // First pass: Validate the proposed layout given each panel's constraints\n for (let index = 0; index < panelConstraints.length; index++) {\n const unsafeSize = nextLayout[index];\n assert(unsafeSize != null, `No layout data found for index ${index}`);\n const safeSize = resizePanel({\n panelConstraints,\n panelIndex: index,\n size: unsafeSize\n });\n if (unsafeSize != safeSize) {\n remainingSize += unsafeSize - safeSize;\n nextLayout[index] = safeSize;\n }\n }\n\n // If there is additional, left over space, assign it to any panel(s) that permits it\n // (It's not worth taking multiple additional passes to evenly distribute)\n if (!fuzzyNumbersEqual(remainingSize, 0)) {\n for (let index = 0; index < panelConstraints.length; index++) {\n const prevSize = nextLayout[index];\n assert(prevSize != null, `No layout data found for index ${index}`);\n const unsafeSize = prevSize + remainingSize;\n const safeSize = resizePanel({\n panelConstraints,\n panelIndex: index,\n size: unsafeSize\n });\n if (prevSize !== safeSize) {\n remainingSize -= safeSize - prevSize;\n nextLayout[index] = safeSize;\n\n // Once we've used up the remainder, bail\n if (fuzzyNumbersEqual(remainingSize, 0)) {\n break;\n }\n }\n }\n }\n return nextLayout;\n}\n\nconst LOCAL_STORAGE_DEBOUNCE_INTERVAL = 100;\nconst defaultStorage = {\n getItem: name => {\n initializeDefaultStorage(defaultStorage);\n return defaultStorage.getItem(name);\n },\n setItem: (name, value) => {\n initializeDefaultStorage(defaultStorage);\n defaultStorage.setItem(name, value);\n }\n};\nconst debounceMap = {};\nfunction PanelGroupWithForwardedRef({\n autoSaveId = null,\n children,\n className: classNameFromProps = \"\",\n direction,\n forwardedRef,\n id: idFromProps = null,\n onLayout = null,\n keyboardResizeBy = null,\n storage = defaultStorage,\n style: styleFromProps,\n tagName: Type = \"div\",\n ...rest\n}) {\n const groupId = useUniqueId(idFromProps);\n const panelGroupElementRef = useRef(null);\n const [dragState, setDragState] = useState(null);\n const [layout, setLayout] = useState([]);\n const panelIdToLastNotifiedSizeMapRef = useRef({});\n const panelSizeBeforeCollapseRef = useRef(new Map());\n const prevDeltaRef = useRef(0);\n const committedValuesRef = useRef({\n autoSaveId,\n direction,\n dragState,\n id: groupId,\n keyboardResizeBy,\n onLayout,\n storage\n });\n const eagerValuesRef = useRef({\n layout,\n panelDataArray: [],\n panelDataArrayChanged: false\n });\n useRef({\n didLogIdAndOrderWarning: false,\n didLogPanelConstraintsWarning: false,\n prevPanelIds: []\n });\n useImperativeHandle(forwardedRef, () => ({\n getId: () => committedValuesRef.current.id,\n getLayout: () => {\n const {\n layout\n } = eagerValuesRef.current;\n return layout;\n },\n setLayout: unsafeLayout => {\n const {\n onLayout\n } = committedValuesRef.current;\n const {\n layout: prevLayout,\n panelDataArray\n } = eagerValuesRef.current;\n const safeLayout = validatePanelGroupLayout({\n layout: unsafeLayout,\n panelConstraints: panelDataArray.map(panelData => panelData.constraints)\n });\n if (!areEqual(prevLayout, safeLayout)) {\n setLayout(safeLayout);\n eagerValuesRef.current.layout = safeLayout;\n if (onLayout) {\n onLayout(safeLayout);\n }\n callPanelCallbacks(panelDataArray, safeLayout, panelIdToLastNotifiedSizeMapRef.current);\n }\n }\n }), []);\n useIsomorphicLayoutEffect(() => {\n committedValuesRef.current.autoSaveId = autoSaveId;\n committedValuesRef.current.direction = direction;\n committedValuesRef.current.dragState = dragState;\n committedValuesRef.current.id = groupId;\n committedValuesRef.current.onLayout = onLayout;\n committedValuesRef.current.storage = storage;\n });\n useWindowSplitterPanelGroupBehavior({\n committedValuesRef,\n eagerValuesRef,\n groupId,\n layout,\n panelDataArray: eagerValuesRef.current.panelDataArray,\n setLayout,\n panelGroupElement: panelGroupElementRef.current\n });\n useEffect(() => {\n const {\n panelDataArray\n } = eagerValuesRef.current;\n\n // If this panel has been configured to persist sizing information, save sizes to local storage.\n if (autoSaveId) {\n if (layout.length === 0 || layout.length !== panelDataArray.length) {\n return;\n }\n let debouncedSave = debounceMap[autoSaveId];\n\n // Limit the frequency of localStorage updates.\n if (debouncedSave == null) {\n debouncedSave = debounce(savePanelGroupState, LOCAL_STORAGE_DEBOUNCE_INTERVAL);\n debounceMap[autoSaveId] = debouncedSave;\n }\n\n // Clone mutable data before passing to the debounced function,\n // else we run the risk of saving an incorrect combination of mutable and immutable values to state.\n const clonedPanelDataArray = [...panelDataArray];\n const clonedPanelSizesBeforeCollapse = new Map(panelSizeBeforeCollapseRef.current);\n debouncedSave(autoSaveId, clonedPanelDataArray, clonedPanelSizesBeforeCollapse, layout, storage);\n }\n }, [autoSaveId, layout, storage]);\n\n // DEV warnings\n useEffect(() => {\n });\n\n // External APIs are safe to memoize via committed values ref\n const collapsePanel = useCallback(panelData => {\n const {\n onLayout\n } = committedValuesRef.current;\n const {\n layout: prevLayout,\n panelDataArray\n } = eagerValuesRef.current;\n if (panelData.constraints.collapsible) {\n const panelConstraintsArray = panelDataArray.map(panelData => panelData.constraints);\n const {\n collapsedSize = 0,\n panelSize,\n pivotIndices\n } = panelDataHelper(panelDataArray, panelData, prevLayout);\n assert(panelSize != null, `Panel size not found for panel \"${panelData.id}\"`);\n if (!fuzzyNumbersEqual$1(panelSize, collapsedSize)) {\n // Store size before collapse;\n // This is the size that gets restored if the expand() API is used.\n panelSizeBeforeCollapseRef.current.set(panelData.id, panelSize);\n const isLastPanel = findPanelDataIndex(panelDataArray, panelData) === panelDataArray.length - 1;\n const delta = isLastPanel ? panelSize - collapsedSize : collapsedSize - panelSize;\n const nextLayout = adjustLayoutByDelta({\n delta,\n initialLayout: prevLayout,\n panelConstraints: panelConstraintsArray,\n pivotIndices,\n prevLayout,\n trigger: \"imperative-api\"\n });\n if (!compareLayouts(prevLayout, nextLayout)) {\n setLayout(nextLayout);\n eagerValuesRef.current.layout = nextLayout;\n if (onLayout) {\n onLayout(nextLayout);\n }\n callPanelCallbacks(panelDataArray, nextLayout, panelIdToLastNotifiedSizeMapRef.current);\n }\n }\n }\n }, []);\n\n // External APIs are safe to memoize via committed values ref\n const expandPanel = useCallback(panelData => {\n const {\n onLayout\n } = committedValuesRef.current;\n const {\n layout: prevLayout,\n panelDataArray\n } = eagerValuesRef.current;\n if (panelData.constraints.collapsible) {\n const panelConstraintsArray = panelDataArray.map(panelData => panelData.constraints);\n const {\n collapsedSize = 0,\n panelSize = 0,\n minSize = 0,\n pivotIndices\n } = panelDataHelper(panelDataArray, panelData, prevLayout);\n if (fuzzyNumbersEqual$1(panelSize, collapsedSize)) {\n // Restore this panel to the size it was before it was collapsed, if possible.\n const prevPanelSize = panelSizeBeforeCollapseRef.current.get(panelData.id);\n const baseSize = prevPanelSize != null && prevPanelSize >= minSize ? prevPanelSize : minSize;\n const isLastPanel = findPanelDataIndex(panelDataArray, panelData) === panelDataArray.length - 1;\n const delta = isLastPanel ? panelSize - baseSize : baseSize - panelSize;\n const nextLayout = adjustLayoutByDelta({\n delta,\n initialLayout: prevLayout,\n panelConstraints: panelConstraintsArray,\n pivotIndices,\n prevLayout,\n trigger: \"imperative-api\"\n });\n if (!compareLayouts(prevLayout, nextLayout)) {\n setLayout(nextLayout);\n eagerValuesRef.current.layout = nextLayout;\n if (onLayout) {\n onLayout(nextLayout);\n }\n callPanelCallbacks(panelDataArray, nextLayout, panelIdToLastNotifiedSizeMapRef.current);\n }\n }\n }\n }, []);\n\n // External APIs are safe to memoize via committed values ref\n const getPanelSize = useCallback(panelData => {\n const {\n layout,\n panelDataArray\n } = eagerValuesRef.current;\n const {\n panelSize\n } = panelDataHelper(panelDataArray, panelData, layout);\n assert(panelSize != null, `Panel size not found for panel \"${panelData.id}\"`);\n return panelSize;\n }, []);\n\n // This API should never read from committedValuesRef\n const getPanelStyle = useCallback((panelData, defaultSize) => {\n const {\n panelDataArray\n } = eagerValuesRef.current;\n const panelIndex = findPanelDataIndex(panelDataArray, panelData);\n return computePanelFlexBoxStyle({\n defaultSize,\n dragState,\n layout,\n panelData: panelDataArray,\n panelIndex\n });\n }, [dragState, layout]);\n\n // External APIs are safe to memoize via committed values ref\n const isPanelCollapsed = useCallback(panelData => {\n const {\n layout,\n panelDataArray\n } = eagerValuesRef.current;\n const {\n collapsedSize = 0,\n collapsible,\n panelSize\n } = panelDataHelper(panelDataArray, panelData, layout);\n assert(panelSize != null, `Panel size not found for panel \"${panelData.id}\"`);\n return collapsible === true && fuzzyNumbersEqual$1(panelSize, collapsedSize);\n }, []);\n\n // External APIs are safe to memoize via committed values ref\n const isPanelExpanded = useCallback(panelData => {\n const {\n layout,\n panelDataArray\n } = eagerValuesRef.current;\n const {\n collapsedSize = 0,\n collapsible,\n panelSize\n } = panelDataHelper(panelDataArray, panelData, layout);\n assert(panelSize != null, `Panel size not found for panel \"${panelData.id}\"`);\n return !collapsible || fuzzyCompareNumbers(panelSize, collapsedSize) > 0;\n }, []);\n const registerPanel = useCallback(panelData => {\n const {\n panelDataArray\n } = eagerValuesRef.current;\n panelDataArray.push(panelData);\n panelDataArray.sort((panelA, panelB) => {\n const orderA = panelA.order;\n const orderB = panelB.order;\n if (orderA == null && orderB == null) {\n return 0;\n } else if (orderA == null) {\n return -1;\n } else if (orderB == null) {\n return 1;\n } else {\n return orderA - orderB;\n }\n });\n eagerValuesRef.current.panelDataArrayChanged = true;\n }, []);\n\n // (Re)calculate group layout whenever panels are registered or unregistered.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n useIsomorphicLayoutEffect(() => {\n if (eagerValuesRef.current.panelDataArrayChanged) {\n eagerValuesRef.current.panelDataArrayChanged = false;\n const {\n autoSaveId,\n onLayout,\n storage\n } = committedValuesRef.current;\n const {\n layout: prevLayout,\n panelDataArray\n } = eagerValuesRef.current;\n\n // If this panel has been configured to persist sizing information,\n // default size should be restored from local storage if possible.\n let unsafeLayout = null;\n if (autoSaveId) {\n const state = loadPanelGroupState(autoSaveId, panelDataArray, storage);\n if (state) {\n panelSizeBeforeCollapseRef.current = new Map(Object.entries(state.expandToSizes));\n unsafeLayout = state.layout;\n }\n }\n if (unsafeLayout == null) {\n unsafeLayout = calculateUnsafeDefaultLayout({\n panelDataArray\n });\n }\n\n // Validate even saved layouts in case something has changed since last render\n // e.g. for pixel groups, this could be the size of the window\n const nextLayout = validatePanelGroupLayout({\n layout: unsafeLayout,\n panelConstraints: panelDataArray.map(panelData => panelData.constraints)\n });\n if (!areEqual(prevLayout, nextLayout)) {\n setLayout(nextLayout);\n eagerValuesRef.current.layout = nextLayout;\n if (onLayout) {\n onLayout(nextLayout);\n }\n callPanelCallbacks(panelDataArray, nextLayout, panelIdToLastNotifiedSizeMapRef.current);\n }\n }\n });\n\n // Reset the cached layout if hidden by the Activity/Offscreen API\n useIsomorphicLayoutEffect(() => {\n const eagerValues = eagerValuesRef.current;\n return () => {\n eagerValues.layout = [];\n };\n }, []);\n const registerResizeHandle = useCallback(dragHandleId => {\n return function resizeHandler(event) {\n event.preventDefault();\n const panelGroupElement = panelGroupElementRef.current;\n if (!panelGroupElement) {\n return () => null;\n }\n const {\n direction,\n dragState,\n id: groupId,\n keyboardResizeBy,\n onLayout\n } = committedValuesRef.current;\n const {\n layout: prevLayout,\n panelDataArray\n } = eagerValuesRef.current;\n const {\n initialLayout\n } = dragState !== null && dragState !== void 0 ? dragState : {};\n const pivotIndices = determinePivotIndices(groupId, dragHandleId, panelGroupElement);\n let delta = calculateDeltaPercentage(event, dragHandleId, direction, dragState, keyboardResizeBy, panelGroupElement);\n if (delta === 0) {\n return;\n }\n\n // Support RTL layouts\n const isHorizontal = direction === \"horizontal\";\n if (document.dir === \"rtl\" && isHorizontal) {\n delta = -delta;\n }\n const panelConstraints = panelDataArray.map(panelData => panelData.constraints);\n const nextLayout = adjustLayoutByDelta({\n delta,\n initialLayout: initialLayout !== null && initialLayout !== void 0 ? initialLayout : prevLayout,\n panelConstraints,\n pivotIndices,\n prevLayout,\n trigger: isKeyDown(event) ? \"keyboard\" : \"mouse-or-touch\"\n });\n const layoutChanged = !compareLayouts(prevLayout, nextLayout);\n\n // Only update the cursor for layout changes triggered by touch/mouse events (not keyboard)\n // Update the cursor even if the layout hasn't changed (we may need to show an invalid cursor state)\n if (isMouseEvent(event) || isTouchEvent(event)) {\n // Watch for multiple subsequent deltas; this might occur for tiny cursor movements.\n // In this case, Panel sizes might not change–\n // but updating cursor in this scenario would cause a flicker.\n if (prevDeltaRef.current != delta) {\n prevDeltaRef.current = delta;\n if (!layoutChanged) {\n // If the pointer has moved too far to resize the panel any further, note this so we can update the cursor.\n // This mimics VS Code behavior.\n if (isHorizontal) {\n reportConstraintsViolation(dragHandleId, delta < 0 ? EXCEEDED_HORIZONTAL_MIN : EXCEEDED_HORIZONTAL_MAX);\n } else {\n reportConstraintsViolation(dragHandleId, delta < 0 ? EXCEEDED_VERTICAL_MIN : EXCEEDED_VERTICAL_MAX);\n }\n } else {\n reportConstraintsViolation(dragHandleId, 0);\n }\n }\n }\n if (layoutChanged) {\n setLayout(nextLayout);\n eagerValuesRef.current.layout = nextLayout;\n if (onLayout) {\n onLayout(nextLayout);\n }\n callPanelCallbacks(panelDataArray, nextLayout, panelIdToLastNotifiedSizeMapRef.current);\n }\n };\n }, []);\n\n // External APIs are safe to memoize via committed values ref\n const resizePanel = useCallback((panelData, unsafePanelSize) => {\n const {\n onLayout\n } = committedValuesRef.current;\n const {\n layout: prevLayout,\n panelDataArray\n } = eagerValuesRef.current;\n const panelConstraintsArray = panelDataArray.map(panelData => panelData.constraints);\n const {\n panelSize,\n pivotIndices\n } = panelDataHelper(panelDataArray, panelData, prevLayout);\n assert(panelSize != null, `Panel size not found for panel \"${panelData.id}\"`);\n const isLastPanel = findPanelDataIndex(panelDataArray, panelData) === panelDataArray.length - 1;\n const delta = isLastPanel ? panelSize - unsafePanelSize : unsafePanelSize - panelSize;\n const nextLayout = adjustLayoutByDelta({\n delta,\n initialLayout: prevLayout,\n panelConstraints: panelConstraintsArray,\n pivotIndices,\n prevLayout,\n trigger: \"imperative-api\"\n });\n if (!compareLayouts(prevLayout, nextLayout)) {\n setLayout(nextLayout);\n eagerValuesRef.current.layout = nextLayout;\n if (onLayout) {\n onLayout(nextLayout);\n }\n callPanelCallbacks(panelDataArray, nextLayout, panelIdToLastNotifiedSizeMapRef.current);\n }\n }, []);\n const reevaluatePanelConstraints = useCallback((panelData, prevConstraints) => {\n const {\n layout,\n panelDataArray\n } = eagerValuesRef.current;\n const {\n collapsedSize: prevCollapsedSize = 0,\n collapsible: prevCollapsible\n } = prevConstraints;\n const {\n collapsedSize: nextCollapsedSize = 0,\n collapsible: nextCollapsible,\n maxSize: nextMaxSize = 100,\n minSize: nextMinSize = 0\n } = panelData.constraints;\n const {\n panelSize: prevPanelSize\n } = panelDataHelper(panelDataArray, panelData, layout);\n if (prevPanelSize == null) {\n // It's possible that the panels in this group have changed since the last render\n return;\n }\n if (prevCollapsible && nextCollapsible && fuzzyNumbersEqual$1(prevPanelSize, prevCollapsedSize)) {\n if (!fuzzyNumbersEqual$1(prevCollapsedSize, nextCollapsedSize)) {\n resizePanel(panelData, nextCollapsedSize);\n }\n } else if (prevPanelSize < nextMinSize) {\n resizePanel(panelData, nextMinSize);\n } else if (prevPanelSize > nextMaxSize) {\n resizePanel(panelData, nextMaxSize);\n }\n }, [resizePanel]);\n const startDragging = useCallback((dragHandleId, event) => {\n const {\n direction\n } = committedValuesRef.current;\n const {\n layout\n } = eagerValuesRef.current;\n if (!panelGroupElementRef.current) {\n return;\n }\n const handleElement = getResizeHandleElement(dragHandleId, panelGroupElementRef.current);\n assert(handleElement, `Drag handle element not found for id \"${dragHandleId}\"`);\n const initialCursorPosition = getResizeEventCursorPosition(direction, event);\n setDragState({\n dragHandleId,\n dragHandleRect: handleElement.getBoundingClientRect(),\n initialCursorPosition,\n initialLayout: layout\n });\n }, []);\n const stopDragging = useCallback(() => {\n setDragState(null);\n }, []);\n const unregisterPanel = useCallback(panelData => {\n const {\n panelDataArray\n } = eagerValuesRef.current;\n const index = findPanelDataIndex(panelDataArray, panelData);\n if (index >= 0) {\n panelDataArray.splice(index, 1);\n\n // TRICKY\n // When a panel is removed from the group, we should delete the most recent prev-size entry for it.\n // If we don't do this, then a conditionally rendered panel might not call onResize when it's re-mounted.\n // Strict effects mode makes this tricky though because all panels will be registered, unregistered, then re-registered on mount.\n delete panelIdToLastNotifiedSizeMapRef.current[panelData.id];\n eagerValuesRef.current.panelDataArrayChanged = true;\n }\n }, []);\n const context = useMemo(() => ({\n collapsePanel,\n direction,\n dragState,\n expandPanel,\n getPanelSize,\n getPanelStyle,\n groupId,\n isPanelCollapsed,\n isPanelExpanded,\n reevaluatePanelConstraints,\n registerPanel,\n registerResizeHandle,\n resizePanel,\n startDragging,\n stopDragging,\n unregisterPanel,\n panelGroupElement: panelGroupElementRef.current\n }), [collapsePanel, dragState, direction, expandPanel, getPanelSize, getPanelStyle, groupId, isPanelCollapsed, isPanelExpanded, reevaluatePanelConstraints, registerPanel, registerResizeHandle, resizePanel, startDragging, stopDragging, unregisterPanel]);\n const style = {\n display: \"flex\",\n flexDirection: direction === \"horizontal\" ? \"row\" : \"column\",\n height: \"100%\",\n overflow: \"hidden\",\n width: \"100%\"\n };\n return createElement(PanelGroupContext.Provider, {\n value: context\n }, createElement(Type, {\n ...rest,\n children,\n className: classNameFromProps,\n id: idFromProps,\n ref: panelGroupElementRef,\n style: {\n ...style,\n ...styleFromProps\n },\n // CSS selectors\n \"data-panel-group\": \"\",\n \"data-panel-group-direction\": direction,\n \"data-panel-group-id\": groupId\n }));\n}\nconst PanelGroup = forwardRef((props, ref) => createElement(PanelGroupWithForwardedRef, {\n ...props,\n forwardedRef: ref\n}));\nPanelGroupWithForwardedRef.displayName = \"PanelGroup\";\nPanelGroup.displayName = \"forwardRef(PanelGroup)\";\nfunction findPanelDataIndex(panelDataArray, panelData) {\n return panelDataArray.findIndex(prevPanelData => prevPanelData === panelData || prevPanelData.id === panelData.id);\n}\nfunction panelDataHelper(panelDataArray, panelData, layout) {\n const panelIndex = findPanelDataIndex(panelDataArray, panelData);\n const isLastPanel = panelIndex === panelDataArray.length - 1;\n const pivotIndices = isLastPanel ? [panelIndex - 1, panelIndex] : [panelIndex, panelIndex + 1];\n const panelSize = layout[panelIndex];\n return {\n ...panelData.constraints,\n panelSize,\n pivotIndices\n };\n}\n\n// https://www.w3.org/WAI/ARIA/apg/patterns/windowsplitter/\n\nfunction useWindowSplitterResizeHandlerBehavior({\n disabled,\n handleId,\n resizeHandler,\n panelGroupElement\n}) {\n useEffect(() => {\n if (disabled || resizeHandler == null || panelGroupElement == null) {\n return;\n }\n const handleElement = getResizeHandleElement(handleId, panelGroupElement);\n if (handleElement == null) {\n return;\n }\n const onKeyDown = event => {\n if (event.defaultPrevented) {\n return;\n }\n switch (event.key) {\n case \"ArrowDown\":\n case \"ArrowLeft\":\n case \"ArrowRight\":\n case \"ArrowUp\":\n case \"End\":\n case \"Home\":\n {\n event.preventDefault();\n resizeHandler(event);\n break;\n }\n case \"F6\":\n {\n event.preventDefault();\n const groupId = handleElement.getAttribute(\"data-panel-group-id\");\n assert(groupId, `No group element found for id \"${groupId}\"`);\n const handles = getResizeHandleElementsForGroup(groupId, panelGroupElement);\n const index = getResizeHandleElementIndex(groupId, handleId, panelGroupElement);\n assert(index !== null, `No resize element found for id \"${handleId}\"`);\n const nextIndex = event.shiftKey ? index > 0 ? index - 1 : handles.length - 1 : index + 1 < handles.length ? index + 1 : 0;\n const nextHandle = handles[nextIndex];\n nextHandle.focus();\n break;\n }\n }\n };\n handleElement.addEventListener(\"keydown\", onKeyDown);\n return () => {\n handleElement.removeEventListener(\"keydown\", onKeyDown);\n };\n }, [panelGroupElement, disabled, handleId, resizeHandler]);\n}\n\nfunction PanelResizeHandle({\n children = null,\n className: classNameFromProps = \"\",\n disabled = false,\n hitAreaMargins,\n id: idFromProps,\n onDragging,\n style: styleFromProps = {},\n tabIndex = 0,\n tagName: Type = \"div\",\n ...rest\n}) {\n const elementRef = useRef(null);\n\n // Use a ref to guard against users passing inline props\n const callbacksRef = useRef({\n onDragging\n });\n useEffect(() => {\n callbacksRef.current.onDragging = onDragging;\n });\n const panelGroupContext = useContext(PanelGroupContext);\n if (panelGroupContext === null) {\n throw Error(`PanelResizeHandle components must be rendered within a PanelGroup container`);\n }\n const {\n direction,\n groupId,\n registerResizeHandle: registerResizeHandleWithParentGroup,\n startDragging,\n stopDragging,\n panelGroupElement\n } = panelGroupContext;\n const resizeHandleId = useUniqueId(idFromProps);\n const [state, setState] = useState(\"inactive\");\n const [isFocused, setIsFocused] = useState(false);\n const [resizeHandler, setResizeHandler] = useState(null);\n const committedValuesRef = useRef({\n state\n });\n useIsomorphicLayoutEffect(() => {\n committedValuesRef.current.state = state;\n });\n useEffect(() => {\n if (disabled) {\n setResizeHandler(null);\n } else {\n const resizeHandler = registerResizeHandleWithParentGroup(resizeHandleId);\n setResizeHandler(() => resizeHandler);\n }\n }, [disabled, resizeHandleId, registerResizeHandleWithParentGroup]);\n useEffect(() => {\n var _hitAreaMargins$coars, _hitAreaMargins$fine;\n if (disabled || resizeHandler == null) {\n return;\n }\n const element = elementRef.current;\n assert(element, \"Element ref not attached\");\n const setResizeHandlerState = (action, isActive, event) => {\n if (isActive) {\n switch (action) {\n case \"down\":\n {\n setState(\"drag\");\n startDragging(resizeHandleId, event);\n const {\n onDragging\n } = callbacksRef.current;\n if (onDragging) {\n onDragging(true);\n }\n break;\n }\n case \"move\":\n {\n const {\n state\n } = committedValuesRef.current;\n if (state !== \"drag\") {\n setState(\"hover\");\n }\n resizeHandler(event);\n break;\n }\n case \"up\":\n {\n setState(\"hover\");\n stopDragging();\n const {\n onDragging\n } = callbacksRef.current;\n if (onDragging) {\n onDragging(false);\n }\n break;\n }\n }\n } else {\n setState(\"inactive\");\n }\n };\n return registerResizeHandle(resizeHandleId, element, direction, {\n // Coarse inputs (e.g. finger/touch)\n coarse: (_hitAreaMargins$coars = hitAreaMargins === null || hitAreaMargins === void 0 ? void 0 : hitAreaMargins.coarse) !== null && _hitAreaMargins$coars !== void 0 ? _hitAreaMargins$coars : 15,\n // Fine inputs (e.g. mouse)\n fine: (_hitAreaMargins$fine = hitAreaMargins === null || hitAreaMargins === void 0 ? void 0 : hitAreaMargins.fine) !== null && _hitAreaMargins$fine !== void 0 ? _hitAreaMargins$fine : 5\n }, setResizeHandlerState);\n }, [direction, disabled, hitAreaMargins, registerResizeHandleWithParentGroup, resizeHandleId, resizeHandler, startDragging, stopDragging]);\n useWindowSplitterResizeHandlerBehavior({\n disabled,\n handleId: resizeHandleId,\n resizeHandler,\n panelGroupElement\n });\n const style = {\n touchAction: \"none\",\n userSelect: \"none\"\n };\n return createElement(Type, {\n ...rest,\n children,\n className: classNameFromProps,\n id: idFromProps,\n onBlur: () => setIsFocused(false),\n onFocus: () => setIsFocused(true),\n ref: elementRef,\n role: \"separator\",\n style: {\n ...style,\n ...styleFromProps\n },\n tabIndex,\n // CSS selectors\n \"data-panel-group-direction\": direction,\n \"data-panel-group-id\": groupId,\n \"data-resize-handle\": \"\",\n \"data-resize-handle-active\": state === \"drag\" ? \"pointer\" : isFocused ? \"keyboard\" : undefined,\n \"data-resize-handle-state\": state,\n \"data-panel-resize-handle-enabled\": !disabled,\n \"data-panel-resize-handle-id\": resizeHandleId\n });\n}\nPanelResizeHandle.displayName = \"PanelResizeHandle\";\n\nfunction getPanelElement(id, scope = document) {\n const element = scope.querySelector(`[data-panel-id=\"${id}\"]`);\n if (element) {\n return element;\n }\n return null;\n}\n\nfunction getPanelElementsForGroup(groupId, scope = document) {\n return Array.from(scope.querySelectorAll(`[data-panel][data-panel-group-id=\"${groupId}\"]`));\n}\n\nfunction getIntersectingRectangle(rectOne, rectTwo, strict) {\n if (!intersects(rectOne, rectTwo, strict)) {\n return {\n x: 0,\n y: 0,\n width: 0,\n height: 0\n };\n }\n return {\n x: Math.max(rectOne.x, rectTwo.x),\n y: Math.max(rectOne.y, rectTwo.y),\n width: Math.min(rectOne.x + rectOne.width, rectTwo.x + rectTwo.width) - Math.max(rectOne.x, rectTwo.x),\n height: Math.min(rectOne.y + rectOne.height, rectTwo.y + rectTwo.height) - Math.max(rectOne.y, rectTwo.y)\n };\n}\n\nexport { Panel, PanelGroup, PanelResizeHandle, assert, getIntersectingRectangle, getPanelElement, getPanelElementsForGroup, getPanelGroupElement, getResizeHandleElement, getResizeHandleElementIndex, getResizeHandleElementsForGroup, getResizeHandlePanelIds, intersects };\n","/* eslint-disable no-var, prefer-template */\nvar uppercasePattern = /[A-Z]/g\nvar msPattern = /^ms-/\nvar cache = {}\n\nfunction toHyphenLower(match) {\n return '-' + match.toLowerCase()\n}\n\nfunction hyphenateStyleName(name) {\n if (cache.hasOwnProperty(name)) {\n return cache[name]\n }\n\n var hName = name.replace(uppercasePattern, toHyphenLower)\n return (cache[name] = msPattern.test(hName) ? '-' + hName : hName)\n}\n\nexport default hyphenateStyleName\n","export type validObjectValue = Record | null | undefined;\n\nexport default function shallowEqualObjects(\n objA: validObjectValue,\n objB: validObjectValue\n): boolean {\n if (objA === objB) {\n return true;\n }\n\n if (!objA || !objB) {\n return false;\n }\n\n const aKeys = Object.keys(objA);\n const bKeys = Object.keys(objB);\n const len = aKeys.length;\n\n if (bKeys.length !== len) {\n return false;\n }\n\n for (let i = 0; i < len; i++) {\n const key = aKeys[i];\n\n if (\n objA[key] !== objB[key] ||\n !Object.prototype.hasOwnProperty.call(objB, key)\n ) {\n return false;\n }\n }\n\n return true;\n}\n","import PropTypes from 'prop-types'\n\nconst stringOrNumber = PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n\n// media types\nconst types = {\n all: PropTypes.bool,\n grid: PropTypes.bool,\n aural: PropTypes.bool,\n braille: PropTypes.bool,\n handheld: PropTypes.bool,\n print: PropTypes.bool,\n projection: PropTypes.bool,\n screen: PropTypes.bool,\n tty: PropTypes.bool,\n tv: PropTypes.bool,\n embossed: PropTypes.bool\n}\n\n// properties that match media queries\nconst matchers = {\n orientation: PropTypes.oneOf(['portrait', 'landscape']),\n\n scan: PropTypes.oneOf(['progressive', 'interlace']),\n\n aspectRatio: PropTypes.string,\n deviceAspectRatio: PropTypes.string,\n\n height: stringOrNumber,\n deviceHeight: stringOrNumber,\n\n width: stringOrNumber,\n deviceWidth: stringOrNumber,\n\n color: PropTypes.bool,\n\n colorIndex: PropTypes.bool,\n\n monochrome: PropTypes.bool,\n resolution: stringOrNumber,\n type: Object.keys(types)\n}\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst { type, ...featureMatchers } = matchers\n\n// media features\nconst features = {\n minAspectRatio: PropTypes.string,\n maxAspectRatio: PropTypes.string,\n minDeviceAspectRatio: PropTypes.string,\n maxDeviceAspectRatio: PropTypes.string,\n\n minHeight: stringOrNumber,\n maxHeight: stringOrNumber,\n minDeviceHeight: stringOrNumber,\n maxDeviceHeight: stringOrNumber,\n\n minWidth: stringOrNumber,\n maxWidth: stringOrNumber,\n minDeviceWidth: stringOrNumber,\n maxDeviceWidth: stringOrNumber,\n\n minColor: PropTypes.number,\n maxColor: PropTypes.number,\n\n minColorIndex: PropTypes.number,\n maxColorIndex: PropTypes.number,\n\n minMonochrome: PropTypes.number,\n maxMonochrome: PropTypes.number,\n\n minResolution: stringOrNumber,\n maxResolution: stringOrNumber,\n\n ...featureMatchers\n}\n\nconst all = { ...types, ...features }\n\nexport default {\n all: all,\n types: types,\n matchers: matchers,\n features: features\n}\n","import hyphenate from 'hyphenate-style-name'\nimport mq from './mediaQuery'\nimport { MediaQueryAllQueryable } from './types'\n\nconst negate = (cond: string) => `not ${cond}`\n\nconst keyVal = (k: string, v: unknown): string => {\n const realKey = hyphenate(k)\n\n // px shorthand\n if (typeof v === 'number') {\n v = `${v}px`\n }\n if (v === true) {\n return realKey\n }\n if (v === false) {\n return negate(realKey)\n }\n return `(${realKey}: ${v})`\n}\n\nconst join = (conds: string[]): string => conds.join(' and ')\n\nconst toQuery = (obj: Partial): string => {\n const rules: string[] = []\n Object.keys(mq.all).forEach((k) => {\n const v = obj[k as keyof MediaQueryAllQueryable]\n if (v != null) {\n rules.push(keyVal(k, v))\n }\n })\n return join(rules)\n}\n\nexport default toQuery\n","import { createContext } from 'react'\nimport { MediaQueryAllQueryable } from './types'\n\nconst Context = createContext | undefined>(\n undefined\n)\n\nexport default Context\n","import { useRef, useEffect, useContext, useState } from 'react'\nimport matchMedia from 'matchmediaquery'\nimport hyphenate from 'hyphenate-style-name'\nimport { shallowEqualObjects } from 'shallow-equal'\nimport toQuery from './toQuery'\nimport Context from './Context'\nimport { MediaQueryAllQueryable, MediaQueryMatchers } from './types'\n\ntype MediaQuerySettings = Partial\ntype HyphenateKeyTypes = MediaQueryMatchers | MediaQueryAllQueryable\n\nconst makeQuery = (settings: MediaQuerySettings) =>\n settings.query || toQuery(settings)\n\nconst hyphenateKeys = (obj?: HyphenateKeyTypes) => {\n type K = keyof HyphenateKeyTypes\n\n if (!obj) return undefined\n const keys = Object.keys(obj) as K[]\n\n return keys.reduce(\n (result, key) => {\n result[hyphenate(key)] = obj[key]\n return result\n },\n {} as Record\n )\n}\n\nconst useIsUpdate = () => {\n const ref = useRef(false)\n\n useEffect(() => {\n ref.current = true\n }, [])\n\n return ref.current\n}\n\nconst useDevice = (\n deviceFromProps?: MediaQueryMatchers\n): Partial | undefined => {\n const deviceFromContext = useContext(Context)\n const getDevice = () =>\n hyphenateKeys(deviceFromProps) || hyphenateKeys(deviceFromContext)\n const [device, setDevice] = useState(getDevice)\n\n useEffect(() => {\n const newDevice = getDevice()\n if (!shallowEqualObjects(device, newDevice)) {\n setDevice(newDevice)\n }\n }, [deviceFromProps, deviceFromContext])\n\n return device\n}\n\nconst useQuery = (settings: MediaQuerySettings) => {\n const getQuery = () => makeQuery(settings)\n const [query, setQuery] = useState(getQuery)\n\n useEffect(() => {\n const newQuery = getQuery()\n if (query !== newQuery) {\n setQuery(newQuery)\n }\n }, [settings])\n\n return query\n}\n\nconst useMatchMedia = (query: string, device?: MediaQueryMatchers) => {\n const getMatchMedia = () => matchMedia(query, device || {}, !!device)\n const [mq, setMq] = useState(getMatchMedia)\n const isUpdate = useIsUpdate()\n\n useEffect(() => {\n if (isUpdate) {\n // skip on mounting, it has already been set\n const newMq = getMatchMedia()\n setMq(newMq)\n\n return () => {\n if (newMq) {\n newMq.dispose()\n }\n }\n }\n }, [query, device])\n\n return mq\n}\n\nconst useMatches = (mediaQuery: MediaQueryList): boolean => {\n const [matches, setMatches] = useState(mediaQuery.matches)\n\n useEffect(() => {\n const updateMatches = (ev: MediaQueryListEvent) => {\n setMatches(ev.matches)\n }\n mediaQuery.addListener(updateMatches)\n setMatches(mediaQuery.matches)\n\n return () => {\n mediaQuery.removeListener(updateMatches)\n }\n }, [mediaQuery])\n\n return matches\n}\n\nconst useMediaQuery = (\n settings: MediaQuerySettings,\n device?: MediaQueryMatchers,\n onChange?: (_: boolean) => void\n) => {\n const deviceSettings = useDevice(device)\n const query = useQuery(settings)\n if (!query) throw new Error('Invalid or missing MediaQuery!')\n const mq = useMatchMedia(query, deviceSettings)\n const matches = useMatches(mq as unknown as MediaQueryList)\n const isUpdate = useIsUpdate()\n\n useEffect(() => {\n if (isUpdate && onChange) {\n onChange(matches)\n }\n }, [matches])\n\n useEffect(\n () => () => {\n if (mq) {\n mq.dispose()\n }\n },\n []\n )\n\n return matches\n}\n\nexport default useMediaQuery\n"],"names":["exports","mediaQuery","values","parseQuery","some","query","inverse","typeMatch","type","expressionsMatch","expressions","every","expression","feature","modifier","expValue","value","toLowerCase","toPx","toDpi","toDecimal","parseInt","RE_MEDIA_QUERY","RE_MQ_EXPRESSION","RE_MQ_FEATURE","RE_LENGTH_UNIT","RE_RESOLUTION_UNIT","split","map","captures","trim","match","parsed","ratio","numbers","decimal","Number","resolution","parseFloat","String","length","ChevronDown","createLucideIcon","d","key","ChevronUp","EllipsisVertical","cx","cy","r","Ellipsis","Pencil","Plus","RefreshCcw","Trash","X","staticMatch","require","dynamicMatch","window","matchMedia","Mql","forceStatic","mql","self","this","update","evt","matches","media","call","addListener","listener","removeListener","dispose","module","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","props","propName","componentName","location","propFullName","secret","err","Error","name","getShim","isRequired","ReactPropTypes","array","bigint","bool","func","number","object","string","symbol","any","arrayOf","element","elementType","instanceOf","node","objectOf","oneOf","oneOfType","shape","exact","checkPropTypes","PropTypes","createElement","createContext","createRef","forwardRef","useCallback","useContext","useEffect","useImperativeHandle","useLayoutEffect","useMemo","useRef","useState","React","useId","toString","useLayoutEffect_do_not_use_directly","PanelGroupContext","displayName","useIsomorphicLayoutEffect","wrappedUseId","counter","useUniqueId","idFromParams","arguments","undefined","idFromUseId","idRef","current","PanelWithForwardedRef","_ref","children","className","classNameFromProps","collapsedSize","collapsible","defaultSize","forwardedRef","id","idFromProps","maxSize","minSize","onCollapse","onExpand","onResize","order","style","styleFromProps","tagName","Type","rest","context","collapsePanel","expandPanel","getPanelSize","getPanelStyle","groupId","isPanelCollapsed","reevaluatePanelConstraints","registerPanel","resizePanel","unregisterPanel","panelId","panelDataRef","callbacks","constraints","idIsFromProps","didLogMissingDefaultSizeWarning","prevConstraints","panelData","collapse","expand","getId","getSize","isCollapsed","isExpanded","resize","size","flexGrow","toFixed","Panel","ref","currentCursorStyle","styleElement","setGlobalCursorStyle","state","constraintFlags","verticalMin","EXCEEDED_VERTICAL_MIN","verticalMax","EXCEEDED_VERTICAL_MAX","EXCEEDED_HORIZONTAL_MIN","EXCEEDED_HORIZONTAL_MAX","getCursorStyle","document","head","appendChild","innerHTML","concat","isKeyDown","event","isMouseEvent","startsWith","isTouchEvent","getResizeEventCoordinates","x","clientX","y","clientY","touch","touches","Infinity","intersects","rectOne","rectTwo","strict","width","height","creates_stacking_context","getComputedStyle","position","zIndex","_get_parent","display","get_parent","is_flex_item","opacity","transform","webkitTransform","mixBlendMode","filter","webkitFilter","isolation","test","willChange","webkitOverflowScrolling","find_stacking_context","nodes","i","assert","get_z_index","get_ancestors","ancestors","push","parentNode","ShadowRoot","host","isCoarsePointer","getInputType","intersectingHandles","isPointerDown","ownerDocumentCounts","Map","panelConstraintFlags","registeredResizeHandlers","Set","handlePointerDown","target","recalculateIntersectingHandles","updateListeners","updateResizeHandlerStates","preventDefault","handlePointerMove","updateCursor","handlePointerUp","clear","_ref2","splice","targetElement","HTMLElement","forEach","data","dragHandleElement","hitAreaMargins","dragHandleRect","getBoundingClientRect","bottom","left","right","top","margin","coarse","fine","contains","a","b","common_ancestor","at","pop","z_indexes","childNodes","furthest_ancestors","child","Math","sign","compare","currentElement","didIntersect","parentElement","reportConstraintsViolation","resizeHandleId","flag","set","intersectsHorizontal","intersectsVertical","direction","removeChild","_","ownerDocument","body","removeEventListener","count","addEventListener","passive","action","setResizeHandlerState","isActive","includes","expectedCondition","message","console","error","PRECISION","fuzzyCompareNumbers","actual","expected","fractionDigits","fuzzyNumbersEqual$1","fuzzyNumbersEqual","_ref3","panelConstraints","panelConstraintsArray","panelIndex","min","adjustLayoutByDelta","_ref4","delta","initialLayout","pivotIndices","prevLayout","trigger","nextLayout","firstPivotIndex","secondPivotIndex","deltaApplied","index","prevSize","localDelta","abs","increment","maxAvailableDelta","minAbsDelta","deltaRemaining","safeSize","localeCompare","numeric","fuzzyLayoutsEqual","pivotIndex","unsafeSize","reduce","total","calculateAriaValues","_ref5","layout","panelsArray","currentMinSize","currentMaxSize","totalMinSize","totalMaxSize","firstIndex","valueMax","valueMin","max","valueNow","getResizeHandleElementsForGroup","scope","Array","from","querySelectorAll","getResizeHandleElementIndex","findIndex","handle","getAttribute","determinePivotIndices","dragHandleId","panelGroupElement","getPanelGroupElement","rootElement","_dataset","dataset","panelGroupId","querySelector","getResizeHandleElement","useWindowSplitterPanelGroupBehavior","_ref6","committedValuesRef","eagerValuesRef","panelDataArray","setLayout","didWarnAboutMissingResizeHandle","resizeHandleElements","resizeHandleElement","setAttribute","round","removeAttribute","eagerValues","handles","cleanupFunctions","handleId","idBefore","idAfter","_panelsArray$index$id","_panelsArray$index","_panelsArray$id","_panelsArray","indexOf","getResizeHandlePanelIds","onKeyDown","defaultPrevented","cleanupFunction","areEqual","arrayA","arrayB","getResizeEventCursorPosition","isHorizontal","calculateDeltaPercentage","initialDragState","keyboardResizeBy","shiftKey","movement","handleElement","initialCursorPosition","cursorPosition","groupElement","groupRect","calculateDragOffsetPercentage","callPanelCallbacks","panelIdToLastNotifiedSizeMap","lastNotifiedSize","compareLayouts","initializeDefaultStorage","storageObject","localStorage","getItem","setItem","getPanelGroupKey","autoSaveId","getPanelKey","panels","panel","JSON","stringify","sort","join","loadSerializedPanelGroupState","storage","panelGroupKey","serialized","parse","savePanelGroupState","panelSizesBeforeCollapse","sizes","_loadSerializedPanelG2","panelKey","expandToSizes","Object","fromEntries","entries","validatePanelGroupLayout","_ref9","nextLayoutTotalSize","accumulated","remainingSize","defaultStorage","debounceMap","PanelGroupWithForwardedRef","_ref10","onLayout","panelGroupElementRef","dragState","setDragState","panelIdToLastNotifiedSizeMapRef","panelSizeBeforeCollapseRef","prevDeltaRef","panelDataArrayChanged","didLogIdAndOrderWarning","didLogPanelConstraintsWarning","prevPanelIds","getLayout","unsafeLayout","safeLayout","debouncedSave","callback","durationMs","timeoutId","_len","args","_key","clearTimeout","setTimeout","debounce","clonedPanelDataArray","clonedPanelSizesBeforeCollapse","panelSize","panelDataHelper","findPanelDataIndex","prevPanelSize","get","baseSize","_ref8","precision","flexBasis","flexShrink","overflow","pointerEvents","computePanelFlexBoxStyle","isPanelExpanded","panelA","panelB","orderA","orderB","_loadSerializedPanelG","_state$panelKey","loadPanelGroupState","_ref7","numPanelsWithSizes","calculateUnsafeDefaultLayout","registerResizeHandle","dir","layoutChanged","unsafePanelSize","prevCollapsedSize","prevCollapsible","nextCollapsedSize","nextCollapsible","nextMaxSize","nextMinSize","startDragging","stopDragging","flexDirection","Provider","PanelGroup","prevPanelData","PanelResizeHandle","_ref12","disabled","onDragging","tabIndex","elementRef","callbacksRef","panelGroupContext","registerResizeHandleWithParentGroup","setState","isFocused","setIsFocused","resizeHandler","setResizeHandler","_hitAreaMargins$coars","_hitAreaMargins$fine","_ownerDocumentCounts$","add","_ownerDocumentCounts$2","delete","_ref11","focus","useWindowSplitterResizeHandlerBehavior","onBlur","onFocus","role","touchAction","userSelect","uppercasePattern","msPattern","cache","toHyphenLower","hasOwnProperty","hName","replace","shallowEqualObjects","objA","objB","aKeys","keys","bKeys","len","prototype","stringOrNumber","types","all","grid","aural","braille","handheld","print","projection","screen","tty","tv","embossed","matchers","orientation","scan","aspectRatio","deviceAspectRatio","deviceHeight","deviceWidth","color","colorIndex","monochrome","featureMatchers","features","minAspectRatio","maxAspectRatio","minDeviceAspectRatio","maxDeviceAspectRatio","minHeight","maxHeight","minDeviceHeight","maxDeviceHeight","minWidth","maxWidth","minDeviceWidth","maxDeviceWidth","minColor","maxColor","minColorIndex","maxColorIndex","minMonochrome","maxMonochrome","minResolution","maxResolution","mq","toQuery","obj","rules","k","v","keyVal","realKey","hyphenate","Context","hyphenateKeys","result","useIsUpdate","useQuery","settings","getQuery","makeQuery","setQuery","newQuery","useMediaQuery","device","onChange","deviceSettings","deviceFromProps","deviceFromContext","getDevice","setDevice","newDevice","useDevice","useMatchMedia","getMatchMedia","setMq","isUpdate","newMq","setMatches","updateMatches","ev","useMatches"],"sourceRoot":""} \ No newline at end of file diff --git a/static/js/145.d0e92784.chunk.js b/static/js/145.d0e92784.chunk.js deleted file mode 100644 index b91428c..0000000 --- a/static/js/145.d0e92784.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunktodo_app=self.webpackChunktodo_app||[]).push([[145],{9145:(e,a,i)=>{i.d(a,{Reminders:()=>A});var s=i(9458),r=i(5379),t=i(5686),n=i(788),l=i(4349),d=i(8957),c=i(5043),o=i(8899),m=i(5505),x=i(4808),u=i(5711),p=i(2382),h=i(579);var v=i(1360);const j=e=>{let{children:a,className:i,...s}=e;return(0,h.jsxs)(d.$n,{variant:"ghost",className:(0,l.cn)("gap-1 border border-accent-dark hover:bg-accent-dark hover:text-primary",i),...s,children:[(0,h.jsx)(v.A,{className:"icon"}),a]})},f=e=>{let{children:a,className:i,...s}=e;return(0,h.jsx)(d.$n,{size:"icon",variant:"ghost",className:(0,l.cn)("shrink-0 bg-accent-dark hover:bg-background hover:text-primary",i),...s,children:a})};var N=i(6210),g=i(614);const b=e=>{const{onCancel:a,value:i}=e,s=(0,c.useRef)(null),[r,t]=(0,l.Lp)(),[n,o]=(0,l.E2)(),[m,x]=(0,l.a2)(),[u,p]=(0,l.FG)(),v=(0,c.useCallback)((async()=>{const{mode:a,type:i,onSave:t,id:d,groupId:c}=e;if("reminder"===i){if("update"===a){if(!d)throw new Error("Update id is required");await(0,l.$F)((()=>m({id:d,title:s.current.value})))}"create"===a&&await(0,l.$F)((()=>r({title:s.current.value,groupId:c})))}if("reminderGroup"===i){if("update"===a){if(!d)throw new Error("Update id is required");await(0,l.$F)((()=>u({id:d,name:s.current.value})))}"create"===a&&await(0,l.$F)((()=>n({name:s.current.value})))}null===t||void 0===t||t()}),[r,n,m,u,e]),j=(0,c.useCallback)((()=>{null===a||void 0===a||a()}),[a]);return{ItemComponent:e=>{let{className:a}=e;return(0,h.jsxs)("div",{className:(0,l.cn)("my-2 flex items-center justify-between",a),children:[(0,h.jsx)(d.pd,{className:"ml-1 mr-2",defaultValue:i,ref:s,autoFocus:!0}),(0,h.jsxs)("div",{className:"flex items-center gap-1",children:[(0,h.jsx)(f,{onClick:v,children:(0,h.jsx)(N.A,{className:"icon"})}),(0,h.jsx)(f,{onClick:j,children:(0,h.jsx)(g.A,{className:"icon text-destructive"})})]})]})},result:"create"===e.mode?"reminder"===e.type?t:o:"reminder"===e.type?x:p}},y=e=>{let{reminder:a}=e;const[i,s]=(0,l.Qs)(),[r,t]=(0,c.useState)(!1),[n,o]=(0,c.useState)(!1),{ItemComponent:v,result:j}=b({type:"reminder",mode:"update",id:a.id,onCancel:()=>o(!1),onSave:()=>o(!1),value:a.title}),N=(0,c.useCallback)((async e=>{await(0,l.$F)((()=>i(e)))}),[i]),g=s.isLoading||j.isLoading;return(0,h.jsxs)("div",{className:"flex items-center justify-between gap-2 py-2","data-testid":"reminder-item-".concat(a.id),children:[n?(0,h.jsx)(v,{className:"flex-1"}):(0,h.jsx)(d.o5,{variant:"p",className:"overflow-x-scroll text-nowrap py-2",children:a.title}),!n&&(0,h.jsx)(d.rI,{data:[{id:"edit",component:()=>(0,h.jsx)(f,{"data-testid":"reminder-item-edit-".concat(a.id),onClick:()=>o(!0),children:(0,h.jsx)(m.A,{className:"icon"})})},{id:"delete",component:()=>(0,h.jsx)(f,{"data-testid":"reminder-item-delete-".concat(a.id),onClick:()=>N(a.id),className:"hover:text-destructive",children:(0,h.jsx)(x.A,{className:"icon"})})}],triggerer:e=>(0,h.jsx)(d.$n,{variant:"secondary",size:"icon","data-testid":"reminder-item-menu-".concat(a.id),disabled:g,...e,children:r?(0,h.jsx)(u.A,{className:"icon"}):(0,h.jsx)(p.A,{className:"icon"})}),isOpen:r,onToggle:t,itemRenderer:e=>e.component(),position:"bottom-right"})]})},w=()=>{const e=(0,l.S9)(),{currentData:a,refetch:i}=(0,l.z5)(e),{currentData:s}=(0,l.n)(e.groupId,{skip:!e.groupId}),[r,t]=(0,c.useState)(!1),{ItemComponent:n}=b({type:"reminder",mode:"create",onCancel:()=>t(!1),onSave:()=>t(!1),groupId:null===s||void 0===s?void 0:s.id});return(0,h.jsxs)("div",{className:"flex flex-1 flex-col overflow-hidden p-4",children:[(0,h.jsxs)("div",{className:"mb-2 flex items-center justify-between gap-2",children:[(0,h.jsx)(d.o5,{variant:"h4",className:"flex items-center justify-between overflow-x-scroll text-nowrap py-2 ","data-testid":"active-list-title",children:(null===s||void 0===s?void 0:s.name)||"All"}),(0,h.jsxs)("div",{className:"flex gap-2",children:[(0,h.jsx)(d.$n,{size:"icon",variant:"ghost",className:"hover:text-primary","data-testid":"refresh-reminder-list",children:(0,h.jsx)(o.A,{className:"icon",onClick:i})}),(0,h.jsx)(j,{size:"icon",onClick:()=>t((e=>!e)),disabled:r})]})]}),a&&(0,h.jsx)("div",{className:"flex-1 overflow-scroll",children:(0,h.jsx)("ul",{className:"divide divide-y",children:a.map((e=>(0,h.jsx)("li",{children:(0,h.jsx)(y,{reminder:e})},e.id)))})}),r&&(0,h.jsx)(n,{})]})},k=e=>{let{reminderGroup:a}=e;const[i,s]=(0,c.useState)(!1),[r,t]=(0,c.useState)(!1),n=(0,l.jL)(),[o,v]=(0,l.dP)(),{groupId:j}=(0,l.GV)(l.hk),N=j===(null===a||void 0===a?void 0:a.id),{ItemComponent:g,result:y}=b({type:"reminderGroup",mode:"update",...a?{id:a.id}:{},onCancel:()=>t(!1),onSave:()=>t(!1),value:null===a||void 0===a?void 0:a.name}),w=v.isLoading||y.isLoading,k=(0,l.cn)("py-2 flex items-center justify-between cursor-pointer gap-2"),C=(0,c.useCallback)((e=>{n((0,l.dR)(e))}),[n]),A=(0,c.useCallback)((async e=>{await(0,l.$F)((()=>o(e)))}),[o]),I=(0,c.useMemo)((()=>a&&r?(0,h.jsx)(g,{className:"flex-1"}):(0,h.jsx)(d.o5,{variant:"p",className:(0,l.cn)("overflow-x-scroll text-nowrap py-2",N&&"text-primary"),onClick:()=>C({groupId:a?a.id:void 0}),children:a?a.name:"All"})),[N,C,r,g,a]);return(0,h.jsxs)("div",{className:"".concat(k),"data-testid":"reminder-group-item-".concat(a?a.id:"all"),children:[I,a&&!r&&(0,h.jsx)(d.rI,{data:[{id:"edit",component:()=>(0,h.jsx)(f,{"data-testid":"reminder-group-item-edit-".concat(a.id),onClick:()=>t(!0),children:(0,h.jsx)(m.A,{className:"icon"})})},{id:"delete",component:()=>(0,h.jsx)(f,{"data-testid":"reminder-group-item-delete-".concat(a.id),onClick:()=>A(a.id),className:"hover:text-destructive",children:(0,h.jsx)(x.A,{className:"icon"})})}],triggerer:e=>(0,h.jsx)(d.$n,{variant:"secondary",size:"icon","data-testid":"reminder-group-item-menu-".concat(a.id),disabled:w,...e,children:i?(0,h.jsx)(u.A,{className:"icon"}):(0,h.jsx)(p.A,{className:"icon"})}),isOpen:i,onToggle:s,itemRenderer:e=>e.component(),position:"bottom-right"})]})},C=()=>{const{data:e}=(0,l.kI)(),[a,i]=(0,c.useState)(!1),{ItemComponent:s}=b({type:"reminderGroup",mode:"create",onCancel:()=>i(!1),onSave:()=>i(!1)});return(0,h.jsxs)("div",{className:"flex min-w-[200px] flex-1 flex-col overflow-hidden p-4",children:[(0,h.jsx)("div",{className:"mb-2 mt-1 flex justify-center",children:(0,h.jsx)(j,{size:"full",onClick:()=>i((e=>!e)),disabled:a,children:"Add List"})}),(0,h.jsx)("div",{className:"flex-1 overflow-scroll",children:(0,h.jsxs)("ul",{className:"divide divide-y divide-accent-dark",children:[(0,h.jsx)("li",{children:(0,h.jsx)(k,{})},"all"),e&&e.map((e=>(0,h.jsx)("li",{children:(0,h.jsx)(k,{reminderGroup:e})},e.id)))]})}),a&&(0,h.jsx)(s,{})]})},A=()=>{const{isBelowMd:e}=(0,n.d)("md");return(0,h.jsx)("div",{className:"mx-auto h-full max-w-screen-md p-2 md:p-8",children:(0,h.jsxs)("div",{className:"flex h-full flex-col rounded border-2 border-primary shadow-lg lg:h-3/4",children:[(0,h.jsx)("nav",{className:"flex h-[--navbar-height] border-b-2 border-primary",children:(0,h.jsx)("ul",{className:"flex flex-1 items-center justify-between px-4",children:(0,h.jsx)("li",{children:(0,h.jsx)(d.o5,{variant:"h2",className:"pb-0",children:"Reminders"})})})}),(0,h.jsxs)(s.YZ,{direction:e?"vertical":"horizontal",className:"flex-1",autoSaveId:"reminders-panel-group",children:[(0,h.jsx)(s.Zk,{maxSize:50,className:"flex flex-col",children:(0,h.jsx)(C,{})}),(0,h.jsx)(s.TW,{className:"group",children:(0,h.jsx)("div",{className:(0,l.cn)("flex h-full w-full items-center border-primary group-hover:bg-secondary group-hover:text-primary",e?"border-b-2":"border-r-2"),children:e?(0,h.jsx)(r.A,{className:"icon mx-auto"}):(0,h.jsx)(t.A,{className:"icon mx-auto"})})}),(0,h.jsx)(s.Zk,{className:"flex flex-col",children:(0,h.jsx)(w,{})})]})]})})}}}]); -//# sourceMappingURL=145.d0e92784.chunk.js.map \ No newline at end of file diff --git a/static/js/145.d0e92784.chunk.js.map b/static/js/145.d0e92784.chunk.js.map deleted file mode 100644 index ce8f4c2..0000000 --- a/static/js/145.d0e92784.chunk.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"static/js/145.d0e92784.chunk.js","mappings":"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","sources":["views/Reminders/components/AddButton.tsx","views/Reminders/components/IconButton.tsx","views/Reminders/useCreateUpdateItem.tsx","views/Reminders/ReminderItem/ReminderItem.tsx","views/Reminders/RemindersList.tsx","views/Reminders/ReminderGroupItem/ReminderGroupItem.tsx","views/Reminders/ReminderGroupList.tsx","views/Reminders/Reminders.tsx"],"sourcesContent":["import { FC } from \"react\";\nimport { Plus } from \"lucide-react\";\n\nimport { cn } from \"shared\";\n\nimport { Button, TButtonProps } from \"components\";\n\nexport const AddButton: FC = ({ children, className, ...props }) => {\n return (\n \n \n {children}\n \n );\n};\n","import { FC } from \"react\";\n\nimport { cn } from \"shared\";\n\nimport { Button, TButtonProps } from \"components\";\n\nexport const IconButton: FC = ({ children, className, ...props }) => {\n return (\n \n {children}\n \n );\n};\n","import { useCallback, useRef } from \"react\";\n\nimport { Check, X } from \"lucide-react\";\n\nimport { Input } from \"components\";\nimport {\n useCreateReminderGroupMutation,\n useCreateReminderMutation,\n handleAsync,\n useUpdateReminderGroupMutation,\n useUpdateReminderMutation,\n cn,\n} from \"shared\";\nimport { TReminder, TReminderGroup } from \"types\";\n\nimport { IconButton } from \"./components\";\n\nexport type TUseCreateUpdateItemProps = {\n onSave?: () => void;\n onCancel?: () => void;\n type: \"reminder\" | \"reminderGroup\";\n value?: string;\n mode: \"create\" | \"update\";\n id?: TReminder[\"id\"] | TReminderGroup[\"id\"];\n groupId?: TReminderGroup[\"id\"];\n};\n\nexport const useCreateUpdateItem = (props: TUseCreateUpdateItemProps) => {\n const { onCancel, value } = props;\n const inputRef = useRef(null);\n\n const [createReminder, createReminderResult] = useCreateReminderMutation();\n const [createReminderGroup, createReminderGroupResult] = useCreateReminderGroupMutation();\n\n const [updateReminder, updateReminderResult] = useUpdateReminderMutation();\n const [updateReminderGroup, updateReminderGroupResult] = useUpdateReminderGroupMutation();\n\n const handleOnSave = useCallback(async () => {\n const { mode, type, onSave, id, groupId } = props;\n if (type === \"reminder\") {\n if (mode === \"update\") {\n if (!id) {\n throw new Error(\"Update id is required\");\n }\n await handleAsync(() => updateReminder({ id, title: inputRef.current!.value }));\n }\n if (mode === \"create\") {\n await handleAsync(() => createReminder({ title: inputRef.current!.value, groupId }));\n }\n }\n if (type === \"reminderGroup\") {\n if (mode === \"update\") {\n if (!id) {\n throw new Error(\"Update id is required\");\n }\n await handleAsync(() => updateReminderGroup({ id, name: inputRef.current!.value }));\n }\n if (mode === \"create\") {\n await handleAsync(() => createReminderGroup({ name: inputRef.current!.value }));\n }\n }\n\n onSave?.();\n }, [createReminder, createReminderGroup, updateReminder, updateReminderGroup, props]);\n\n const handleOnCancel = useCallback(() => {\n onCancel?.();\n }, [onCancel]);\n\n const ItemComponent = ({ className }: { className?: string }) => {\n return (\n
\n \n
\n \n \n \n \n \n \n
\n
\n );\n };\n\n const result =\n props.mode === \"create\"\n ? props.type === \"reminder\"\n ? createReminderResult\n : createReminderGroupResult\n : props.type === \"reminder\"\n ? updateReminderResult\n : updateReminderGroupResult;\n\n return {\n ItemComponent,\n result,\n };\n};\n","import { FC, PropsWithChildren, useCallback, useState } from \"react\";\n\nimport { ChevronDown, ChevronUp, Pencil, Trash } from \"lucide-react\";\n\nimport { TReminder } from \"types\";\nimport { Typography, DropdownMenu, Button } from \"components\";\n\nimport { handleAsync, useDeleteReminderMutation } from \"shared\";\n\nimport { IconButton } from \"../components\";\n\nimport { useCreateUpdateItem } from \"../useCreateUpdateItem\";\n\nexport type TReminderItemProps = {\n reminder: TReminder;\n};\n\nexport const ReminderItem: FC> = ({ reminder }) => {\n const [deleteReminder, deleteReminderResult] = useDeleteReminderMutation();\n\n const [isDropdownOpen, setIsDropdownOpen] = useState(false);\n const [isEditing, setIsEditing] = useState(false);\n\n const { ItemComponent, result: updateReminderResult } = useCreateUpdateItem({\n type: \"reminder\",\n mode: \"update\",\n id: reminder.id,\n onCancel: () => setIsEditing(false),\n onSave: () => setIsEditing(false),\n value: reminder.title,\n });\n\n const handleOnDelete = useCallback(\n async (id: Parameters[0]) => {\n await handleAsync(() => deleteReminder(id));\n },\n [deleteReminder]\n );\n\n const isMenuDisabled = deleteReminderResult.isLoading || updateReminderResult.isLoading;\n\n return (\n \n {isEditing ? (\n \n ) : (\n \n {reminder.title}\n \n )}\n\n {!isEditing && (\n (\n setIsEditing(true)}\n >\n \n \n ),\n },\n {\n id: \"delete\",\n component: () => (\n handleOnDelete(reminder.id)}\n className=\"hover:text-destructive\"\n >\n \n \n ),\n },\n ]}\n triggerer={(props) => (\n \n {isDropdownOpen ? : }\n \n )}\n isOpen={isDropdownOpen}\n onToggle={setIsDropdownOpen}\n itemRenderer={(item) => item.component()}\n position=\"bottom-right\"\n />\n )}\n \n );\n};\n","import { FC, PropsWithChildren, useState } from \"react\";\n\nimport { RefreshCcw } from \"lucide-react\";\n\nimport { Button, Typography } from \"components\";\n\nimport { useGetRemindersQuery, useSelectQueryParams, useGetReminderGroupQuery } from \"shared\";\n\nimport { ReminderItem } from \"./ReminderItem\";\nimport { AddButton } from \"./components\";\nimport { useCreateUpdateItem } from \"./useCreateUpdateItem\";\n\nexport type TRemindersListProps = Record;\n\nexport const RemindersList: FC> = () => {\n const queryParams = useSelectQueryParams();\n\n const { currentData: reminders, refetch } = useGetRemindersQuery(queryParams);\n\n const { currentData: reminderGroup } = useGetReminderGroupQuery(queryParams.groupId as string, {\n skip: !queryParams.groupId,\n });\n\n const [isCreating, setIsCreating] = useState(false);\n\n const { ItemComponent } = useCreateUpdateItem({\n type: \"reminder\",\n mode: \"create\",\n onCancel: () => setIsCreating(false),\n onSave: () => setIsCreating(false),\n groupId: reminderGroup?.id,\n });\n\n return (\n
\n
\n \n {reminderGroup?.name || \"All\"}\n \n
\n \n \n \n\n setIsCreating((isCreating) => !isCreating)}\n disabled={isCreating}\n />\n
\n
\n\n {reminders && (\n
\n
    \n {reminders.map((reminder) => {\n return (\n
  • \n \n
  • \n );\n })}\n
\n
\n )}\n\n {isCreating && }\n
\n );\n};\n","import { FC, PropsWithChildren, useCallback, useMemo, useState } from \"react\";\n\nimport { ChevronDown, ChevronUp, Pencil, Trash } from \"lucide-react\";\n\nimport { TReminderGroup } from \"types\";\n\nimport { Button, Typography, DropdownMenu } from \"components\";\n\nimport {\n useAppDispatch,\n setQueryParams,\n useAppSelector,\n selectQueryParams,\n cn,\n useDeleteReminderGroupMutation,\n handleAsync,\n} from \"shared\";\n\nimport { useCreateUpdateItem } from \"../useCreateUpdateItem\";\n\nimport { IconButton } from \"../components\";\n\nexport type TReminderGroupItemProps = {\n reminderGroup?: TReminderGroup;\n};\n\nexport const ReminderGroupItem: FC> = ({ reminderGroup }) => {\n const [isDropdownOpen, setIsDropdownOpen] = useState(false);\n const [isEditing, setIsEditing] = useState(false);\n\n const dispatch = useAppDispatch();\n const [deleteReminderGroup, deleteReminderGroupResult] = useDeleteReminderGroupMutation();\n const { groupId } = useAppSelector(selectQueryParams);\n const isSelected = groupId === reminderGroup?.id;\n\n const { ItemComponent, result: updateReminderGroupResult } = useCreateUpdateItem({\n type: \"reminderGroup\",\n mode: \"update\",\n ...(reminderGroup ? { id: reminderGroup.id } : {}),\n onCancel: () => setIsEditing(false),\n onSave: () => setIsEditing(false),\n value: reminderGroup?.name,\n });\n\n const isMenuDisabled = deleteReminderGroupResult.isLoading || updateReminderGroupResult.isLoading;\n\n const className = cn(\"py-2 flex items-center justify-between cursor-pointer gap-2\");\n\n const handleOnItemClick = useCallback(\n (queryParams: Parameters[0]) => {\n // update the query params value in store, causing a re-fetch of the reminders\n dispatch(setQueryParams(queryParams));\n },\n [dispatch]\n );\n\n const handleOnDelete = useCallback(\n async (id: Parameters[0]) => {\n await handleAsync(() => deleteReminderGroup(id));\n },\n [deleteReminderGroup]\n );\n\n const renderItem = useMemo(() => {\n if (reminderGroup && isEditing) {\n return ;\n }\n\n return (\n handleOnItemClick({ groupId: reminderGroup ? reminderGroup.id : undefined })}\n >\n {reminderGroup ? reminderGroup.name : \"All\"}\n \n );\n }, [isSelected, handleOnItemClick, isEditing, ItemComponent, reminderGroup]);\n\n return (\n \n {renderItem}\n\n {reminderGroup && !isEditing && (\n (\n setIsEditing(true)}\n >\n \n \n ),\n },\n {\n id: \"delete\",\n component: () => (\n handleOnDelete(reminderGroup.id)}\n className=\"hover:text-destructive\"\n >\n \n \n ),\n },\n ]}\n triggerer={(props) => (\n \n {isDropdownOpen ? : }\n \n )}\n isOpen={isDropdownOpen}\n onToggle={setIsDropdownOpen}\n itemRenderer={(item) => item.component()}\n position=\"bottom-right\"\n />\n )}\n \n );\n};\n","import { FC, PropsWithChildren, useState } from \"react\";\n\nimport { useGetReminderGroupsQuery } from \"shared\";\n\nimport { ReminderGroupItem } from \"./ReminderGroupItem\";\nimport { AddButton } from \"./components\";\nimport { useCreateUpdateItem } from \"./useCreateUpdateItem\";\n\nexport type TReminderGroupListProps = Record;\n\nexport const ReminderGroupList: FC> = () => {\n const { data: reminderGroups } = useGetReminderGroupsQuery();\n\n const [isCreating, setIsCreating] = useState(false);\n\n const { ItemComponent } = useCreateUpdateItem({\n type: \"reminderGroup\",\n mode: \"create\",\n onCancel: () => setIsCreating(false),\n onSave: () => setIsCreating(false),\n });\n\n return (\n
\n
\n setIsCreating((isCreating) => !isCreating)}\n disabled={isCreating}\n >\n Add List\n \n
\n\n
\n
    \n
  • \n \n
  • \n {reminderGroups &&\n reminderGroups.map((reminderGroup) => {\n return (\n
  • \n \n
  • \n );\n })}\n
\n
\n\n {isCreating && }\n
\n );\n};\n","import { FC, PropsWithChildren } from \"react\";\n\nimport { Panel, PanelGroup, PanelResizeHandle } from \"react-resizable-panels\";\nimport { EllipsisVertical, EllipsisIcon } from \"lucide-react\";\n\nimport { useBreakpoint } from \"hooks\";\nimport { cn } from \"shared\";\nimport { Typography } from \"components\";\n\nimport { RemindersList } from \"./RemindersList\";\n\nimport { ReminderGroupList } from \"./ReminderGroupList\";\n\nexport type TRemindersProps = Record;\n\nexport const Reminders: FC> = () => {\n const { isBelowMd } = useBreakpoint(\"md\");\n\n return (\n
\n
\n \n\n \n \n \n \n\n \n \n {isBelowMd ? : }\n
\n \n\n \n \n \n \n
\n \n );\n};\n"],"names":["AddButton","_ref","children","className","props","_jsxs","Button","variant","cn","_jsx","Plus","IconButton","size","useCreateUpdateItem","onCancel","value","inputRef","useRef","createReminder","createReminderResult","useCreateReminderMutation","createReminderGroup","createReminderGroupResult","useCreateReminderGroupMutation","updateReminder","updateReminderResult","useUpdateReminderMutation","updateReminderGroup","updateReminderGroupResult","useUpdateReminderGroupMutation","handleOnSave","useCallback","async","mode","type","onSave","id","groupId","Error","handleAsync","title","current","name","handleOnCancel","ItemComponent","Input","defaultValue","ref","autoFocus","onClick","Check","X","result","ReminderItem","reminder","deleteReminder","deleteReminderResult","useDeleteReminderMutation","isDropdownOpen","setIsDropdownOpen","useState","isEditing","setIsEditing","handleOnDelete","isMenuDisabled","isLoading","concat","Typography","DropdownMenu","data","component","Pencil","Trash","triggerer","disabled","ChevronUp","ChevronDown","isOpen","onToggle","itemRenderer","item","position","RemindersList","queryParams","useSelectQueryParams","currentData","reminders","refetch","useGetRemindersQuery","reminderGroup","useGetReminderGroupQuery","skip","isCreating","setIsCreating","RefreshCcw","map","ReminderGroupItem","dispatch","useAppDispatch","deleteReminderGroup","deleteReminderGroupResult","useDeleteReminderGroupMutation","useAppSelector","selectQueryParams","isSelected","handleOnItemClick","setQueryParams","renderItem","useMemo","undefined","ReminderGroupList","reminderGroups","useGetReminderGroupsQuery","Reminders","isBelowMd","useBreakpoint","PanelGroup","direction","autoSaveId","Panel","maxSize","PanelResizeHandle","EllipsisIcon","EllipsisVertical"],"sourceRoot":""} \ No newline at end of file diff --git a/static/js/759.2b170287.chunk.js b/static/js/759.2b170287.chunk.js new file mode 100644 index 0000000..127a86a --- /dev/null +++ b/static/js/759.2b170287.chunk.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunktodo_app=self.webpackChunktodo_app||[]).push([[759],{4759:(e,a,s)=>{s.d(a,{Reminders:()=>S});var r=s(9458),i=s(5379),n=s(5686),l=s(5043);var t=s(9657),d=s(4349);var c=s(4743),o=s(8899),m=s(5711),u=s(2382),x=s(5505),h=s(4808);const p="COMPLETED";var v=s(1360),j=s(579);const g=e=>{let{children:a,className:s,...r}=e;return(0,j.jsxs)(c.$n,{variant:"ghost",className:(0,d.cn)("gap-1 border border-accent-dark hover:bg-accent-dark hover:text-primary",s),...r,children:[(0,j.jsx)(v.A,{className:"icon"}),a]})};var f=s(6210),N=s(614);const b=e=>{let{className:a,onCancel:s,onSave:r,defaultValue:i="",testIds:n}=e;const t=(0,l.useRef)(null),o=(0,l.useCallback)((()=>{var e;null!==(e=t.current)&&void 0!==e&&e.value&&(null===r||void 0===r||r(t.current.value))}),[r]),m=(0,l.useCallback)((()=>{null===s||void 0===s||s()}),[s]);return(0,j.jsxs)("div",{className:(0,d.cn)("mt-2 flex items-center justify-between",a),children:[(0,j.jsx)(c.pd,{className:"ml-1 mr-2",defaultValue:i,ref:t,autoFocus:!0,required:!0}),(0,j.jsxs)("div",{className:"flex items-center gap-1",children:[(0,j.jsx)(c.$n,{onClick:o,size:"icon",variant:"outline","data-testid":null===n||void 0===n?void 0:n.save,className:"group",children:(0,j.jsx)(f.A,{className:"icon group-hover:text-primary"})}),(0,j.jsx)(c.$n,{onClick:m,size:"icon",variant:"outline","data-testid":null===n||void 0===n?void 0:n.cancel,className:"group",children:(0,j.jsx)(N.A,{className:"icon group-hover:text-destructive"})})]})]})},k=e=>{let{reminder:a}=e;const[s,r]=(0,l.useState)(!1),[i,n]=(0,l.useState)(!1),{handleOnDelete:t,handleOnUpdate:o,isLoading:v}=(e=>{let{reminder:a}=e;const[s,r]=(0,d.Qs)(),[i,n]=(0,d.a2)();return{isLoading:r.isLoading||n.isLoading,isErrored:r.isError||n.isError,handleOnDelete:(0,l.useCallback)((async e=>{await(0,d.$F)((()=>s(e)))}),[s]),handleOnUpdate:(0,l.useCallback)((async e=>{await(0,d.$F)((()=>i({id:e.id,groupId:e.groupId,title:e.title,state:e.state})))}),[i])}})({reminder:a}),g=v;return(0,j.jsxs)("div",{className:"flex items-center justify-between gap-2 py-2","data-testid":"reminder-item-".concat(a.id),children:[i?(0,j.jsx)(b,{className:"flex-1",defaultValue:a.title,onCancel:()=>n(!1),onSave:e=>{o({id:a.id,title:e}),n(!1)},testIds:{cancel:"reminder-item-update-cancel-".concat(a.id),save:"reminder-item-update-save-".concat(a.id)}}):(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)(c.Sc,{checked:a.state===p,className:"peer"}),(0,j.jsx)(c.o5,{variant:"p",affects:"withoutPMargin",className:(0,d.cn)("flex-1 overflow-x-scroll text-nowrap py-2 peer-aria-[checked=true]:line-through"),children:a.title})]}),!i&&(0,j.jsxs)(c.rI,{open:s,onOpenChange:r,children:[(0,j.jsx)(c.ty,{asChild:!0,children:(0,j.jsx)(c.$n,{variant:"outline",size:"icon","data-testid":"reminder-item-menu-".concat(a.id),disabled:g,children:s?(0,j.jsx)(m.A,{className:"icon"}):(0,j.jsx)(u.A,{className:"icon"})})}),(0,j.jsxs)(c.SQ,{className:"min-w-min",align:"end",onInteractOutside:()=>r(!1),children:[(0,j.jsx)(c._2,{"data-testid":"reminder-item-edit-".concat(a.id),onClick:()=>n(!0),className:"group",children:(0,j.jsx)(x.A,{size:20,className:"group-hover:text-primary"})}),(0,j.jsx)(c.mB,{}),(0,j.jsx)(c._2,{"data-testid":"reminder-item-delete-".concat(a.id),onClick:()=>t(a.id),className:"group",children:(0,j.jsx)(h.A,{size:20,className:"group-hover:text-destructive"})})]})]})]})},w=()=>{const{reminders:e,refetchReminders:a,reminderGroup:s,handleOnSave:r}=(()=>{const e=(0,d.S9)(),{currentData:a,refetch:s}=(0,d.z5)(e),{currentData:r}=(0,d.n)(e.groupId,{skip:!e.groupId}),[i,n]=(0,d.Lp)(),t=n.isLoading,c=n.isError;return{reminders:a,reminderGroup:r,refetchReminders:s,handleOnSave:(0,l.useCallback)((async e=>{await(0,d.$F)((()=>i({groupId:e.groupId,title:e.title})))}),[i]),isLoading:t,isErrored:c}})(),[i,n]=(0,l.useState)(!1);return(0,j.jsxs)("div",{className:"flex flex-1 flex-col overflow-hidden p-4",children:[(0,j.jsxs)("div",{className:"mb-2 flex items-center justify-between gap-2",children:[(0,j.jsx)(c.o5,{variant:"h4",className:"flex items-center justify-between overflow-x-scroll text-nowrap py-2 ","data-testid":"reminder-list-title",children:(null===s||void 0===s?void 0:s.name)||"All"}),(0,j.jsxs)("div",{className:"flex gap-2",children:[(0,j.jsx)(c.$n,{size:"icon",variant:"ghost",className:"hover:text-primary","data-testid":"reminder-list-refetch",children:(0,j.jsx)(o.A,{className:"icon",onClick:a})}),(0,j.jsx)(g,{size:"icon",onClick:()=>n((e=>!e)),disabled:i})]})]}),e&&(0,j.jsx)("div",{className:"flex-1 overflow-scroll",children:(0,j.jsx)("ul",{className:"divide divide-y",children:e.map((e=>(0,j.jsx)("li",{children:(0,j.jsx)(k,{reminder:e})},e.id)))})}),i&&(0,j.jsx)(b,{onCancel:()=>n(!1),onSave:e=>{r({title:e,groupId:null===s||void 0===s?void 0:s.id}),n(!1)},testIds:{cancel:"reminder-item-create-cancel",save:"reminder-item-create-save"}})]})},y=e=>{let{reminderGroup:a}=e;const[s,r]=(0,l.useState)(!1),[i,n]=(0,l.useState)(!1),{handleOnDelete:t,handleOnItemClick:o,handleOnSave:p,isLoading:v,isSelected:g}=(e=>{let{reminderGroup:a}=e;const{groupId:s}=(0,d.GV)(d.hk),r=s===(null===a||void 0===a?void 0:a.id),[i,n]=(0,d.dP)(),[t,c]=(0,d.FG)(),o=(0,d.jL)();return{isSelected:r,isLoading:n.isLoading||c.isLoading,isErrored:n.isError||c.isError,handleOnItemClick:(0,l.useCallback)((e=>{o((0,d.dR)(e))}),[o]),handleOnDelete:(0,l.useCallback)((async e=>{await(0,d.$F)((()=>i(e)))}),[i]),handleOnSave:(0,l.useCallback)((async e=>{await(0,d.$F)((()=>t({id:e.id,name:e.name})))}),[t])}})({reminderGroup:a}),f=v,N=(0,l.useMemo)((()=>a&&i?(0,j.jsx)(b,{className:"flex-1",defaultValue:a.name,onCancel:()=>n(!1),onSave:e=>{p({id:a.id,name:e}),n(!1)},testIds:{cancel:"reminder-group-item-update-cancel-".concat(a.id),save:"reminder-group-item-update-save-".concat(a.id)}}):(0,j.jsx)(c.o5,{variant:"p",className:(0,d.cn)("overflow-x-scroll text-nowrap py-2",g&&"text-primary"),onClick:()=>o({groupId:a?a.id:void 0}),children:a?a.name:"All"})),[g,o,i,a,p]);return(0,j.jsxs)("div",{className:(0,d.cn)("flex cursor-pointer items-center justify-between gap-2 px-1 py-2"),"data-testid":"reminder-group-item-".concat(a?a.id:"all"),children:[N,a&&!i&&(0,j.jsxs)(c.rI,{open:s,onOpenChange:r,children:[(0,j.jsx)(c.ty,{asChild:!0,children:(0,j.jsx)(c.$n,{variant:"outline",size:"icon","data-testid":"reminder-group-item-menu-".concat(a.id),disabled:f,children:s?(0,j.jsx)(m.A,{className:"icon"}):(0,j.jsx)(u.A,{className:"icon"})})}),(0,j.jsxs)(c.SQ,{align:"end",onInteractOutside:()=>r(!1),className:"min-w-min",children:[(0,j.jsx)(c._2,{onClick:()=>n(!0),"data-testid":"reminder-group-item-update-".concat(a.id),className:"group",children:(0,j.jsx)(x.A,{size:20,className:"group-hover:text-primary"})}),(0,j.jsx)(c.mB,{}),(0,j.jsx)(c._2,{onClick:()=>t(a.id),"data-testid":"reminder-group-item-delete-".concat(a.id),className:"group",children:(0,j.jsx)(h.A,{size:20,className:"group-hover:text-destructive"})})]})]})]})},C=()=>{const[e,a]=(0,l.useState)(!1),{handleOnSave:s,reminderGroups:r}=(()=>{const{data:e}=(0,d.kI)(),[a,s]=(0,d.E2)(),r=s.isLoading,i=s.isError;return{reminderGroups:e,handleOnSave:(0,l.useCallback)((async e=>{await(0,d.$F)((()=>a({name:e.name})))}),[a]),isLoading:r,isErrored:i}})();return(0,j.jsxs)("div",{className:"flex min-w-[200px] flex-1 flex-col overflow-hidden p-4",children:[(0,j.jsx)("div",{className:"mb-2 mt-1 flex justify-center",children:(0,j.jsx)(g,{size:"full",onClick:()=>a((e=>!e)),disabled:e,children:"Add List"})}),(0,j.jsx)("div",{className:"flex-1 overflow-scroll",children:(0,j.jsxs)("ul",{className:"divide divide-y divide-accent-dark",children:[(0,j.jsx)("li",{children:(0,j.jsx)(y,{})},"all"),r&&r.map((e=>(0,j.jsx)("li",{children:(0,j.jsx)(y,{reminderGroup:e})},e.id)))]})}),e&&(0,j.jsx)(b,{onCancel:()=>a(!1),onSave:e=>{s({name:e}),a(!1)},testIds:{cancel:"reminder-group-item-create-cancel",save:"reminder-group-item-create-save"}})]})},S=()=>{const{isBelowMd:e}=function(e){const a=d.LO[e],s=(0,t.Ub)({query:"(max-width: ".concat(a,")")}),r=e[0].toUpperCase()+e.substring(1);return{[e]:Number(String(a).replace(/[^0-9]/g,"")),["isAbove".concat(r)]:!s,["isBelow".concat(r)]:s}}("md");return(0,j.jsx)("div",{className:"mx-auto h-full max-w-screen-md p-2 md:p-8",children:(0,j.jsxs)("div",{className:"flex h-full flex-col rounded border-2 border-primary shadow-lg lg:h-3/4",children:[(0,j.jsx)("nav",{className:"flex h-[--navbar-height] border-b-2 border-primary",children:(0,j.jsx)("ul",{className:"flex flex-1 items-center justify-between px-4",children:(0,j.jsx)("li",{children:(0,j.jsx)(c.o5,{variant:"h2",className:"pb-0",children:"Reminders"})})})}),(0,j.jsxs)(r.YZ,{direction:e?"vertical":"horizontal",className:"flex-1",autoSaveId:"reminders-panel-group",children:[(0,j.jsx)(r.Zk,{maxSize:50,className:"flex flex-col",children:(0,j.jsx)(C,{})}),(0,j.jsx)(r.TW,{className:"group",children:(0,j.jsx)("div",{className:(0,d.cn)("flex h-full w-full items-center border-primary group-hover:bg-secondary group-hover:text-primary",e?"border-b-2":"border-r-2"),children:e?(0,j.jsx)(i.A,{className:"icon mx-auto"}):(0,j.jsx)(n.A,{className:"icon mx-auto"})})}),(0,j.jsx)(r.Zk,{className:"flex flex-col",children:(0,j.jsx)(w,{})})]})]})})}}}]); +//# sourceMappingURL=759.2b170287.chunk.js.map \ No newline at end of file diff --git a/static/js/759.2b170287.chunk.js.map b/static/js/759.2b170287.chunk.js.map new file mode 100644 index 0000000..91dc049 --- /dev/null +++ b/static/js/759.2b170287.chunk.js.map @@ -0,0 +1 @@ +{"version":3,"file":"static/js/759.2b170287.chunk.js","mappings":"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","sources":["types/Reminders.ts","views/Reminders/components/AddButton.tsx","views/Reminders/components/AddUpdateItem.tsx","views/Reminders/ReminderItem/ReminderItem.tsx","views/Reminders/ReminderItem/useReminderItem.ts","views/Reminders/RemindersList/RemindersList.tsx","views/Reminders/RemindersList/useRemindersList.ts","views/Reminders/ReminderGroupItem/ReminderGroupItem.tsx","views/Reminders/ReminderGroupItem/useReminderGroupItem.ts","views/Reminders/ReminderGroupsList/ReminderGroupsList.tsx","views/Reminders/ReminderGroupsList/useReminderGroupsList.ts","views/Reminders/Reminders.tsx","hooks/useBreakpoint.ts"],"sourcesContent":["export const REMINDER_STATE = {\n ACTIVE: \"ACTIVE\",\n COMPLETED: \"COMPLETED\",\n} as const;\n\nexport type TReminderState = (typeof REMINDER_STATE)[keyof typeof REMINDER_STATE];\n\nexport type TReminder = {\n id: string;\n title: string;\n state: TReminderState;\n isPinned: boolean;\n createdAt: string;\n updatedAt: string;\n group?: TReminderGroup;\n};\n\nexport type TReminderGroup = {\n id: string;\n name: string;\n createdAt: string;\n updatedAt: string;\n};\n\nexport type TMessageResponsePaylaod = {\n message: string;\n};\n\nexport type TDataResponsePayload = {\n data: T;\n};\n\n/**\n * Error\n */\nexport type THTTPError = {\n message: string;\n};\n\n/**\n * Reminder\n */\nexport type TGetRemindersQueryParams = Partial<{\n groupId: TReminderGroup[\"id\"];\n state: TReminder[\"state\"];\n}>;\n\nexport type TGetRemindersResponsePayload = TDataResponsePayload;\n\nexport type TGetReminderRequestPayload = TReminder[\"id\"];\n\nexport type TGetReminderResponsePayload = TDataResponsePayload;\n\nexport type TCreateReminderRequestPayload = Pick & Partial<{ groupId: TReminderGroup[\"id\"] }>;\n\nexport type TCreateReminderResponsePayload = TDataResponsePayload;\n\nexport type TUpdateReminderRequestPayload = Pick &\n Partial & { groupId: TReminderGroup[\"id\"] }>;\n\nexport type TUpdateReminderResponsePayload = TDataResponsePayload;\n\nexport type TDeleteReminderRequestPayload = TReminder[\"id\"];\n\nexport type TDeleteReminderResponsePayload = TMessageResponsePaylaod;\n\n/**\n * Reminder Group\n */\nexport type TGetReminderGroupsResponsePayload = TDataResponsePayload;\n\nexport type TGetReminderGroupRequestPayload = TReminderGroup[\"id\"];\n\nexport type TGetReminderGroupResponsePayload = TDataResponsePayload;\n\nexport type TCreateReminderGroupRequestPayload = Pick;\n\nexport type TCreateReminderGroupResponsePayload = TDataResponsePayload;\n\nexport type TUpdateReminderGroupRequestPayload = Pick & Partial>;\n\nexport type TUpdateReminderGroupResponsePayload = TDataResponsePayload;\n\nexport type TDeleteReminderGroupRequestPayload = TReminderGroup[\"id\"];\n\nexport type TDeleteReminderGroupResponsePayload = TMessageResponsePaylaod;\n","import { FC } from \"react\";\nimport { Plus } from \"lucide-react\";\n\nimport { cn } from \"shared\";\n\nimport { Button, TButtonProps } from \"components\";\n\nexport const AddButton: FC = ({ children, className, ...props }) => {\n return (\n \n \n {children}\n \n );\n};\n","import { FC, PropsWithChildren, useCallback, useRef } from \"react\";\n\nimport { Check, X } from \"lucide-react\";\n\nimport { cn } from \"shared\";\n\nimport { Button, Input } from \"components\";\n\nexport type TAddUpdateItemProps = {\n className?: string;\n onSave?: (value: string) => void;\n onCancel?: () => void;\n defaultValue?: string;\n testIds?: {\n save?: string;\n cancel?: string;\n };\n};\n\nexport const AddUpdateItem: FC> = ({\n className,\n onCancel,\n onSave,\n defaultValue = \"\",\n testIds,\n}) => {\n const inputRef = useRef(null);\n\n const handleOnSave = useCallback(() => {\n if (inputRef.current?.value) {\n onSave?.(inputRef.current.value);\n }\n }, [onSave]);\n\n const handleOnCancel = useCallback(() => {\n onCancel?.();\n }, [onCancel]);\n\n return (\n
\n \n
\n \n \n \n \n \n \n
\n
\n );\n};\n","import { FC, PropsWithChildren, useState } from \"react\";\n\nimport { ChevronDown, ChevronUp, Pencil, Trash } from \"lucide-react\";\n\nimport { TReminder, REMINDER_STATE } from \"types\";\n\nimport {\n Button,\n Checkbox,\n Typography,\n DropdownMenu,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuSeparator,\n} from \"components\";\n\nimport { cn } from \"shared\";\n\nimport { AddUpdateItem } from \"../components\";\n\nimport { useReminderItem } from \"./useReminderItem\";\n\nexport type TReminderItemProps = {\n reminder: TReminder;\n};\n\nexport const ReminderItem: FC> = ({ reminder }) => {\n const [isDropdownOpen, setIsDropdownOpen] = useState(false);\n const [isUpdating, setIsUpdating] = useState(false);\n\n const { handleOnDelete, handleOnUpdate, isLoading } = useReminderItem({\n reminder,\n });\n\n const isMenuDisabled = isLoading;\n\n return (\n \n {isUpdating ? (\n setIsUpdating(false)}\n onSave={(title) => {\n handleOnUpdate({ id: reminder.id, title });\n setIsUpdating(false);\n }}\n testIds={{\n cancel: `reminder-item-update-cancel-${reminder.id}`,\n save: `reminder-item-update-save-${reminder.id}`,\n }}\n />\n ) : (\n <>\n \n \n {reminder.title}\n \n \n )}\n\n {!isUpdating && (\n \n \n \n {isDropdownOpen ? : }\n \n \n setIsDropdownOpen(false)}\n >\n setIsUpdating(true)}\n className=\"group\"\n >\n \n \n \n handleOnDelete(reminder.id)}\n className=\"group\"\n >\n \n \n \n \n )}\n \n );\n};\n","import { useCallback } from \"react\";\n\nimport { useDeleteReminderMutation, handleAsync, useUpdateReminderMutation } from \"shared\";\nimport { TReminder } from \"types\";\n\nexport type TUseReminderItemProps = {\n reminder: TReminder;\n};\n\nexport const useReminderItem = ({ reminder }: TUseReminderItemProps) => {\n const [deleteReminder, deleteReminderResult] = useDeleteReminderMutation();\n const [updateReminder, updateReminderResult] = useUpdateReminderMutation();\n\n const isLoading = deleteReminderResult.isLoading || updateReminderResult.isLoading;\n\n const isErrored = deleteReminderResult.isError || updateReminderResult.isError;\n\n const handleOnDelete = useCallback(\n async (id: Parameters[0]) => {\n await handleAsync(() => deleteReminder(id));\n },\n [deleteReminder]\n );\n\n const handleOnUpdate = useCallback(\n async (props: Parameters[0]) => {\n await handleAsync(() =>\n updateReminder({\n id: props.id,\n groupId: props.groupId,\n title: props.title,\n state: props.state,\n })\n );\n },\n [updateReminder]\n );\n\n return {\n isLoading,\n isErrored,\n\n handleOnDelete,\n handleOnUpdate,\n };\n};\n","import { FC, PropsWithChildren, useState } from \"react\";\n\nimport { RefreshCcw } from \"lucide-react\";\n\nimport { Button, Typography } from \"components\";\n\nimport { ReminderItem } from \"../ReminderItem\";\nimport { AddButton, AddUpdateItem } from \"../components\";\n\nimport { useRemindersList } from \"./useRemindersList\";\n\nexport type TRemindersListProps = Record;\n\nexport const RemindersList: FC> = () => {\n const { reminders, refetchReminders, reminderGroup, handleOnSave } = useRemindersList();\n\n const [isCreating, setIsCreating] = useState(false);\n\n return (\n
\n
\n \n {reminderGroup?.name || \"All\"}\n \n
\n \n \n \n\n setIsCreating((isCreating) => !isCreating)}\n disabled={isCreating}\n />\n
\n
\n\n {reminders && (\n
\n
    \n {reminders.map((reminder) => {\n return (\n
  • \n \n
  • \n );\n })}\n
\n
\n )}\n\n {isCreating && (\n setIsCreating(false)}\n onSave={(title) => {\n handleOnSave({ title: title, groupId: reminderGroup?.id });\n setIsCreating(false);\n }}\n testIds={{\n cancel: `reminder-item-create-cancel`,\n save: `reminder-item-create-save`,\n }}\n />\n )}\n
\n );\n};\n","import { useCallback } from \"react\";\n\nimport {\n useGetRemindersQuery,\n useSelectQueryParams,\n useGetReminderGroupQuery,\n useCreateReminderMutation,\n handleAsync,\n} from \"shared\";\n\nexport const useRemindersList = () => {\n const queryParams = useSelectQueryParams();\n\n const { currentData: reminders, refetch } = useGetRemindersQuery(queryParams);\n\n const { currentData: reminderGroup } = useGetReminderGroupQuery(queryParams.groupId as string, {\n skip: !queryParams.groupId,\n });\n\n const [createReminder, createReminderResult] = useCreateReminderMutation();\n\n const isLoading = createReminderResult.isLoading;\n\n const isErrored = createReminderResult.isError;\n\n const handleOnSave = useCallback(\n async (props: Parameters[0]) => {\n await handleAsync(() =>\n createReminder({\n groupId: props.groupId,\n title: props.title,\n })\n );\n },\n [createReminder]\n );\n\n return {\n reminders,\n reminderGroup,\n refetchReminders: refetch,\n handleOnSave,\n isLoading,\n isErrored,\n };\n};\n","import { FC, PropsWithChildren, useMemo, useState } from \"react\";\n\nimport { ChevronDown, ChevronUp, Pencil, Trash } from \"lucide-react\";\n\nimport { TReminderGroup } from \"types\";\n\nimport {\n Button,\n Typography,\n DropdownMenu,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuSeparator,\n} from \"components\";\n\nimport { cn } from \"shared\";\n\nimport { AddUpdateItem } from \"../components\";\n\nimport { useReminderGroupItem } from \"./useReminderGroupItem\";\n\nexport type TReminderGroupItemProps = {\n reminderGroup?: TReminderGroup;\n};\n\nexport const ReminderGroupItem: FC> = ({ reminderGroup }) => {\n const [isDropdownOpen, setIsDropdownOpen] = useState(false);\n const [isUpdating, setIsUpdating] = useState(false);\n\n const { handleOnDelete, handleOnItemClick, handleOnSave, isLoading, isSelected } = useReminderGroupItem({\n reminderGroup,\n });\n\n const isMenuDisabled = isLoading;\n\n const renderItem = useMemo(() => {\n if (reminderGroup && isUpdating) {\n return (\n setIsUpdating(false)}\n onSave={(name) => {\n handleOnSave({ id: reminderGroup.id, name });\n setIsUpdating(false);\n }}\n testIds={{\n cancel: `reminder-group-item-update-cancel-${reminderGroup.id}`,\n save: `reminder-group-item-update-save-${reminderGroup.id}`,\n }}\n />\n );\n }\n\n return (\n handleOnItemClick({ groupId: reminderGroup ? reminderGroup.id : undefined })}\n >\n {reminderGroup ? reminderGroup.name : \"All\"}\n \n );\n }, [isSelected, handleOnItemClick, isUpdating, reminderGroup, handleOnSave]);\n\n return (\n \n {renderItem}\n\n {reminderGroup && !isUpdating && (\n \n \n \n {isDropdownOpen ? : }\n \n \n setIsDropdownOpen(false)}\n className=\"min-w-min\"\n >\n setIsUpdating(true)}\n data-testid={`reminder-group-item-update-${reminderGroup.id}`}\n className=\"group\"\n >\n \n \n \n handleOnDelete(reminderGroup.id)}\n data-testid={`reminder-group-item-delete-${reminderGroup.id}`}\n className=\"group\"\n >\n \n \n \n \n )}\n \n );\n};\n","import { useCallback } from \"react\";\n\nimport {\n useAppDispatch,\n setQueryParams,\n useAppSelector,\n selectQueryParams,\n useDeleteReminderGroupMutation,\n handleAsync,\n useUpdateReminderGroupMutation,\n} from \"shared\";\nimport { TReminderGroup } from \"types\";\n\nexport type TUseReminderGroupItemProps = {\n reminderGroup?: TReminderGroup;\n};\n\nexport const useReminderGroupItem = ({ reminderGroup }: TUseReminderGroupItemProps) => {\n const { groupId } = useAppSelector(selectQueryParams);\n const isSelected = groupId === reminderGroup?.id;\n\n const [deleteReminderGroup, deleteReminderGroupResult] = useDeleteReminderGroupMutation();\n const [updateReminderGroup, updateReminderGroupResult] = useUpdateReminderGroupMutation();\n\n const dispatch = useAppDispatch();\n\n const isLoading = deleteReminderGroupResult.isLoading || updateReminderGroupResult.isLoading;\n\n const isErrored = deleteReminderGroupResult.isError || updateReminderGroupResult.isError;\n\n const handleOnItemClick = useCallback(\n (queryParams: Parameters[0]) => {\n // update the query params value in store, causing a re-fetch of the reminders\n dispatch(setQueryParams(queryParams));\n },\n [dispatch]\n );\n\n const handleOnDelete = useCallback(\n async (id: Parameters[0]) => {\n await handleAsync(() => deleteReminderGroup(id));\n },\n [deleteReminderGroup]\n );\n\n const handleOnSave = useCallback(\n async (props: Parameters[0]) => {\n await handleAsync(() =>\n updateReminderGroup({\n id: props.id,\n name: props.name,\n })\n );\n },\n [updateReminderGroup]\n );\n\n return {\n isSelected,\n isLoading,\n isErrored,\n handleOnItemClick,\n handleOnDelete,\n\n handleOnSave,\n };\n};\n","import { FC, PropsWithChildren, useState } from \"react\";\n\nimport { ReminderGroupItem } from \"../ReminderGroupItem\";\nimport { AddButton, AddUpdateItem } from \"../components\";\n\nimport { useReminderGroupsList } from \"./useReminderGroupsList\";\n\nexport type TReminderGroupsListProps = Record;\n\nexport const ReminderGroupsList: FC> = () => {\n const [isCreating, setIsCreating] = useState(false);\n\n const { handleOnSave, reminderGroups } = useReminderGroupsList();\n\n return (\n
\n
\n setIsCreating((isCreating) => !isCreating)}\n disabled={isCreating}\n >\n Add List\n \n
\n\n
\n
    \n
  • \n \n
  • \n {reminderGroups &&\n reminderGroups.map((reminderGroup) => {\n return (\n
  • \n \n
  • \n );\n })}\n
\n
\n\n {isCreating && (\n setIsCreating(false)}\n onSave={(name) => {\n handleOnSave({ name: name });\n setIsCreating(false);\n }}\n testIds={{\n cancel: `reminder-group-item-create-cancel`,\n save: `reminder-group-item-create-save`,\n }}\n />\n )}\n
\n );\n};\n","import { useCallback } from \"react\";\n\nimport { useGetReminderGroupsQuery, useCreateReminderGroupMutation, handleAsync } from \"shared\";\n\nexport const useReminderGroupsList = () => {\n const { data: reminderGroups } = useGetReminderGroupsQuery();\n\n const [createReminderGroup, createReminderGroupResult] = useCreateReminderGroupMutation();\n\n const isLoading = createReminderGroupResult.isLoading;\n\n const isErrored = createReminderGroupResult.isError;\n\n const handleOnSave = useCallback(\n async (props: Parameters[0]) => {\n await handleAsync(() =>\n createReminderGroup({\n name: props.name,\n })\n );\n },\n [createReminderGroup]\n );\n\n return {\n reminderGroups,\n handleOnSave,\n isLoading,\n isErrored,\n };\n};\n","import { FC, PropsWithChildren } from \"react\";\n\nimport { Panel, PanelGroup, PanelResizeHandle } from \"react-resizable-panels\";\nimport { EllipsisVertical, EllipsisIcon } from \"lucide-react\";\n\nimport { useBreakpoint } from \"hooks\";\nimport { cn } from \"shared\";\nimport { Typography } from \"components\";\n\nimport { RemindersList } from \"./RemindersList\";\n\nimport { ReminderGroupsList } from \"./ReminderGroupsList\";\n\nexport type TRemindersProps = Record;\n\nexport const Reminders: FC> = () => {\n const { isBelowMd } = useBreakpoint(\"md\");\n\n return (\n
\n
\n \n\n \n \n \n \n\n \n \n {isBelowMd ? : }\n
\n \n\n \n \n \n \n
\n \n );\n};\n","import { useMediaQuery } from \"react-responsive\";\n\nimport { BREAKPOINTS } from \"shared\";\n\ntype TKeyAbove = `isAbove${Capitalize}`;\ntype TKeyBelow = `isBelow${Capitalize}`;\n\nexport function useBreakpoint(breakpointKey: K) {\n const breakpointValue = BREAKPOINTS[breakpointKey as keyof typeof BREAKPOINTS];\n const isBelow = useMediaQuery({\n query: `(max-width: ${breakpointValue})`,\n });\n const capitalizedKey = breakpointKey[0].toUpperCase() + breakpointKey.substring(1);\n\n return {\n [breakpointKey]: Number(String(breakpointValue).replace(/[^0-9]/g, \"\")),\n [`isAbove${capitalizedKey}`]: !isBelow,\n [`isBelow${capitalizedKey}`]: isBelow,\n } as Record & Record | TKeyBelow, boolean>;\n}\n"],"names":["REMINDER_STATE","AddButton","_ref","children","className","props","_jsxs","Button","variant","cn","_jsx","Plus","AddUpdateItem","onCancel","onSave","defaultValue","testIds","inputRef","useRef","handleOnSave","useCallback","_inputRef$current","current","value","handleOnCancel","Input","ref","autoFocus","required","onClick","size","save","Check","cancel","X","ReminderItem","reminder","isDropdownOpen","setIsDropdownOpen","useState","isUpdating","setIsUpdating","handleOnDelete","handleOnUpdate","isLoading","deleteReminder","deleteReminderResult","useDeleteReminderMutation","updateReminder","updateReminderResult","useUpdateReminderMutation","isErrored","isError","async","handleAsync","id","groupId","title","state","useReminderItem","isMenuDisabled","concat","_Fragment","Checkbox","checked","Typography","affects","DropdownMenu","open","onOpenChange","DropdownMenuTrigger","asChild","disabled","ChevronUp","ChevronDown","DropdownMenuContent","align","onInteractOutside","DropdownMenuItem","Pencil","DropdownMenuSeparator","Trash","RemindersList","reminders","refetchReminders","reminderGroup","useRemindersList","queryParams","useSelectQueryParams","currentData","refetch","useGetRemindersQuery","useGetReminderGroupQuery","skip","createReminder","createReminderResult","useCreateReminderMutation","isCreating","setIsCreating","name","RefreshCcw","map","ReminderGroupItem","handleOnItemClick","isSelected","useAppSelector","selectQueryParams","deleteReminderGroup","deleteReminderGroupResult","useDeleteReminderGroupMutation","updateReminderGroup","updateReminderGroupResult","useUpdateReminderGroupMutation","dispatch","useAppDispatch","setQueryParams","useReminderGroupItem","renderItem","useMemo","undefined","ReminderGroupsList","reminderGroups","useReminderGroupsList","data","useGetReminderGroupsQuery","createReminderGroup","createReminderGroupResult","useCreateReminderGroupMutation","Reminders","isBelowMd","breakpointKey","breakpointValue","BREAKPOINTS","isBelow","useMediaQuery","query","capitalizedKey","toUpperCase","substring","Number","String","replace","useBreakpoint","PanelGroup","direction","autoSaveId","Panel","maxSize","PanelResizeHandle","EllipsisIcon","EllipsisVertical"],"sourceRoot":""} \ No newline at end of file diff --git a/static/js/824.5f397999.chunk.js b/static/js/824.5f397999.chunk.js deleted file mode 100644 index 356fa42..0000000 --- a/static/js/824.5f397999.chunk.js +++ /dev/null @@ -1,3 +0,0 @@ -/*! For license information please see 824.5f397999.chunk.js.LICENSE.txt */ -"use strict";(self.webpackChunktodo_app=self.webpackChunktodo_app||[]).push([[824],{6210:(e,n,t)=>{t.d(n,{A:()=>r});const r=(0,t(3351).A)("Check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]])},2382:(e,n,t)=>{t.d(n,{A:()=>r});const r=(0,t(3351).A)("ChevronDown",[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]])},5711:(e,n,t)=>{t.d(n,{A:()=>r});const r=(0,t(3351).A)("ChevronUp",[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]])},5686:(e,n,t)=>{t.d(n,{A:()=>r});const r=(0,t(3351).A)("EllipsisVertical",[["circle",{cx:"12",cy:"12",r:"1",key:"41hilf"}],["circle",{cx:"12",cy:"5",r:"1",key:"gxeob9"}],["circle",{cx:"12",cy:"19",r:"1",key:"lyex9k"}]])},5379:(e,n,t)=>{t.d(n,{A:()=>r});const r=(0,t(3351).A)("Ellipsis",[["circle",{cx:"12",cy:"12",r:"1",key:"41hilf"}],["circle",{cx:"19",cy:"12",r:"1",key:"1wjl8i"}],["circle",{cx:"5",cy:"12",r:"1",key:"1pcz8c"}]])},5505:(e,n,t)=>{t.d(n,{A:()=>r});const r=(0,t(3351).A)("Pencil",[["path",{d:"M17 3a2.85 2.83 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5Z",key:"5qss01"}],["path",{d:"m15 5 4 4",key:"1mk7zo"}]])},1360:(e,n,t)=>{t.d(n,{A:()=>r});const r=(0,t(3351).A)("Plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]])},8899:(e,n,t)=>{t.d(n,{A:()=>r});const r=(0,t(3351).A)("RefreshCcw",[["path",{d:"M21 12a9 9 0 0 0-9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"14sxne"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}],["path",{d:"M3 12a9 9 0 0 0 9 9 9.75 9.75 0 0 0 6.74-2.74L21 16",key:"1hlbsb"}],["path",{d:"M16 16h5v5",key:"ccwih5"}]])},4808:(e,n,t)=>{t.d(n,{A:()=>r});const r=(0,t(3351).A)("Trash",[["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6",key:"4alrt4"}],["path",{d:"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2",key:"v07s0e"}]])},614:(e,n,t)=>{t.d(n,{A:()=>r});const r=(0,t(3351).A)("X",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]])},9458:(e,n,t)=>{var r;t.d(n,{TW:()=>Fe,YZ:()=>Me,Zk:()=>k});var o=t(5043);const{createElement:a,createContext:l,createRef:i,forwardRef:c,useCallback:s,useContext:u,useEffect:d,useImperativeHandle:p,useLayoutEffect:f,useMemo:h,useRef:g,useState:y}=r||(r=t.t(o,2)),v=(r||(r=t.t(o,2)))["useId".toString()],m=f,z=l(null);z.displayName="PanelGroupContext";const x=m,b="function"===typeof v?v:()=>null;let w=0;function S(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;const n=b(),t=g(e||n||null);return null===t.current&&(t.current=""+w++),null!==e&&void 0!==e?e:t.current}function A(e){let{children:n,className:t="",collapsedSize:r,collapsible:o,defaultSize:l,forwardedRef:i,id:c,maxSize:s,minSize:d,onCollapse:f,onExpand:h,onResize:y,order:v,style:m,tagName:b="div",...w}=e;const A=u(z);if(null===A)throw Error("Panel components must be rendered within a PanelGroup container");const{collapsePanel:k,expandPanel:E,getPanelSize:I,getPanelStyle:L,groupId:P,isPanelCollapsed:C,reevaluatePanelConstraints:D,registerPanel:M,resizePanel:R,unregisterPanel:N}=A,F=S(c),H=g({callbacks:{onCollapse:f,onExpand:h,onResize:y},constraints:{collapsedSize:r,collapsible:o,defaultSize:l,maxSize:s,minSize:d},id:F,idIsFromProps:void 0!==c,order:v});g({didLogMissingDefaultSizeWarning:!1}),x((()=>{const{callbacks:e,constraints:n}=H.current,t={...n};H.current.id=F,H.current.idIsFromProps=void 0!==c,H.current.order=v,e.onCollapse=f,e.onExpand=h,e.onResize=y,n.collapsedSize=r,n.collapsible=o,n.defaultSize=l,n.maxSize=s,n.minSize=d,t.collapsedSize===n.collapsedSize&&t.collapsible===n.collapsible&&t.maxSize===n.maxSize&&t.minSize===n.minSize||D(H.current,t)})),x((()=>{const e=H.current;return M(e),()=>{N(e)}}),[v,F,M,N]),p(i,(()=>({collapse:()=>{k(H.current)},expand:()=>{E(H.current)},getId:()=>F,getSize:()=>I(H.current),isCollapsed:()=>C(H.current),isExpanded:()=>!C(H.current),resize:e=>{R(H.current,e)}})),[k,E,I,C,F,R]);const G=L(H.current,l);return a(b,{...w,children:n,className:t,id:c,style:{...G,...m},"data-panel":"","data-panel-collapsible":o||void 0,"data-panel-group-id":P,"data-panel-id":F,"data-panel-size":parseFloat(""+G.flexGrow).toFixed(1)})}const k=c(((e,n)=>a(A,{...e,forwardedRef:n})));A.displayName="Panel",k.displayName="forwardRef(Panel)";let E=null,I=null;function L(e,n){const t=function(e,n){if(n){const e=0!==(n&V),t=0!==(n&W);if(0!==(n&O))return e?"se-resize":t?"ne-resize":"e-resize";if(0!==(n&j))return e?"sw-resize":t?"nw-resize":"w-resize";if(e)return"s-resize";if(t)return"n-resize"}switch(e){case"horizontal":return"ew-resize";case"intersection":return"move";case"vertical":return"ns-resize"}}(e,n);E!==t&&(E=t,null===I&&(I=document.createElement("style"),document.head.appendChild(I)),I.innerHTML="*{cursor: ".concat(t,"!important;}"))}function P(e){return"keydown"===e.type}function C(e){return e.type.startsWith("mouse")}function D(e){return e.type.startsWith("touch")}function M(e){if(C(e))return{x:e.clientX,y:e.clientY};if(D(e)){const n=e.touches[0];if(n&&n.clientX&&n.clientY)return{x:n.clientX,y:n.clientY}}return{x:1/0,y:1/0}}function R(e,n,t){return t?e.xn.x&&e.yn.y:e.x<=n.x+n.width&&e.x+e.width>=n.x&&e.y<=n.y+n.height&&e.y+e.height>=n.y}const N=/\b(?:position|zIndex|opacity|transform|webkitTransform|mixBlendMode|filter|webkitFilter|isolation)\b/;function F(e){const n=getComputedStyle(e);return"fixed"===n.position||(!("auto"===n.zIndex||"static"===n.position&&!function(e){var n;const t=getComputedStyle(null!==(n=T(e))&&void 0!==n?n:e).display;return"flex"===t||"inline-flex"===t}(e))||(+n.opacity<1||("transform"in n&&"none"!==n.transform||("webkitTransform"in n&&"none"!==n.webkitTransform||("mixBlendMode"in n&&"normal"!==n.mixBlendMode||("filter"in n&&"none"!==n.filter||("webkitFilter"in n&&"none"!==n.webkitFilter||("isolation"in n&&"isolate"===n.isolation||(!!N.test(n.willChange)||"touch"===n.webkitOverflowScrolling)))))))))}function H(e){let n=e.length;for(;n--;){const t=e[n];if(oe(t,"Missing node"),F(t))return t}return null}function G(e){return e&&Number(getComputedStyle(e).zIndex)||0}function B(e){const n=[];for(;e;)n.push(e),e=T(e);return n}function T(e){const{parentNode:n}=e;return n&&n instanceof ShadowRoot?n.host:n}const O=1,j=2,V=4,W=8,q="coarse"===function(){if("function"===typeof matchMedia)return matchMedia("(pointer:coarse)").matches?"coarse":"fine"}();let J=[],X=!1,Y=new Map,U=new Map;const Z=new Set;function K(e){const{target:n}=e,{x:t,y:r}=M(e);X=!0,$({target:n,x:t,y:r}),te(),J.length>0&&(re("down",e),e.preventDefault())}function _(e){const{x:n,y:t}=M(e);if(!X){const{target:r}=e;$({target:r,x:n,y:t})}re("move",e),ne(),J.length>0&&e.preventDefault()}function Q(e){const{target:n}=e,{x:t,y:r}=M(e);U.clear(),X=!1,J.length>0&&e.preventDefault(),re("up",e),$({target:n,x:t,y:r}),ne(),te()}function $(e){let{target:n,x:t,y:r}=e;J.splice(0);let o=null;n instanceof HTMLElement&&(o=n),Z.forEach((e=>{const{element:n,hitAreaMargins:a}=e,l=n.getBoundingClientRect(),{bottom:i,left:c,right:s,top:u}=l,d=q?a.coarse:a.fine;if(t>=c-d&&t<=s+d&&r>=u-d&&r<=i+d){if(null!==o&&n!==o&&!n.contains(o)&&!o.contains(n)&&function(e,n){if(e===n)throw new Error("Cannot compare node with itself");const t={a:B(e),b:B(n)};let r;for(;t.a.at(-1)===t.b.at(-1);)e=t.a.pop(),n=t.b.pop(),r=e;oe(r,"Stacking order can only be calculated for elements with a common ancestor");const o=G(H(t.a)),a=G(H(t.b));if(o===a){const e=r.childNodes,n={a:t.a.at(-1),b:t.b.at(-1)};let o=e.length;for(;o--;){const t=e[o];if(t===n.a)return 1;if(t===n.b)return-1}}return Math.sign(o-a)}(o,n)>0){let e=o,t=!1;for(;e&&!e.contains(n);){if(R(e.getBoundingClientRect(),l,!0)){t=!0;break}e=e.parentElement}if(t)return}J.push(e)}}))}function ee(e,n){U.set(e,n)}function ne(){let e=!1,n=!1;J.forEach((t=>{const{direction:r}=t;"horizontal"===r?e=!0:n=!0}));let t=0;U.forEach((e=>{t|=e})),e&&n?L("intersection",t):e?L("horizontal",t):n?L("vertical",t):null!==I&&(document.head.removeChild(I),E=null,I=null)}function te(){Y.forEach(((e,n)=>{const{body:t}=n;t.removeEventListener("contextmenu",Q),t.removeEventListener("mousedown",K),t.removeEventListener("mouseleave",_),t.removeEventListener("mousemove",_),t.removeEventListener("touchmove",_),t.removeEventListener("touchstart",K)})),window.removeEventListener("mouseup",Q),window.removeEventListener("touchcancel",Q),window.removeEventListener("touchend",Q),Z.size>0&&(X?(J.length>0&&Y.forEach(((e,n)=>{const{body:t}=n;e>0&&(t.addEventListener("contextmenu",Q),t.addEventListener("mouseleave",_),t.addEventListener("mousemove",_),t.addEventListener("touchmove",_,{passive:!1}))})),window.addEventListener("mouseup",Q),window.addEventListener("touchcancel",Q),window.addEventListener("touchend",Q)):Y.forEach(((e,n)=>{const{body:t}=n;e>0&&(t.addEventListener("mousedown",K),t.addEventListener("mousemove",_),t.addEventListener("touchmove",_,{passive:!1}),t.addEventListener("touchstart",K))})))}function re(e,n){Z.forEach((t=>{const{setResizeHandlerState:r}=t,o=J.includes(t);r(e,o,n)}))}function oe(e,n){if(!e)throw console.error(n),Error(n)}const ae=10;function le(e,n){let t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:ae;return e.toFixed(t)===n.toFixed(t)?0:e>n?1:-1}function ie(e,n){return 0===le(e,n,arguments.length>2&&void 0!==arguments[2]?arguments[2]:ae)}function ce(e,n,t){return 0===le(e,n,t)}function se(e){let{panelConstraints:n,panelIndex:t,size:r}=e;const o=n[t];oe(null!=o,"Panel constraints not found for index ".concat(t));let{collapsedSize:a=0,collapsible:l,maxSize:i=100,minSize:c=0}=o;if(le(r,c)<0)if(l){r=le(r,(a+c)/2)<0?a:c}else r=c;return r=Math.min(i,r),r=parseFloat(r.toFixed(ae)),r}function ue(e){let{delta:n,initialLayout:t,panelConstraints:r,pivotIndices:o,prevLayout:a,trigger:l}=e;if(ce(n,0))return t;const i=[...t],[c,s]=o;oe(null!=c,"Invalid first pivot index"),oe(null!=s,"Invalid second pivot index");let u=0;if("keyboard"===l){{const e=n<0?s:c,o=r[e];oe(o,"Panel constraints not found for index ".concat(e));const{collapsedSize:a=0,collapsible:l,minSize:i=0}=o;if(l){const r=t[e];if(oe(null!=r,"Previous layout not found for panel index ".concat(e)),ce(r,a)){const e=i-r;le(e,Math.abs(n))>0&&(n=n<0?0-e:e)}}}{const e=n<0?c:s,o=r[e];oe(o,"No panel constraints found for index ".concat(e));const{collapsedSize:a=0,collapsible:l,minSize:i=0}=o;if(l){const r=t[e];if(oe(null!=r,"Previous layout not found for panel index ".concat(e)),ce(r,i)){const e=r-a;le(e,Math.abs(n))>0&&(n=n<0?0-e:e)}}}}{const e=n<0?1:-1;let o=n<0?s:c,a=0;for(;;){const n=t[o];oe(null!=n,"Previous layout not found for panel index ".concat(o));if(a+=se({panelConstraints:r,panelIndex:o,size:100})-n,o+=e,o<0||o>=r.length)break}const l=Math.min(Math.abs(n),Math.abs(a));n=n<0?0-l:l}{let e=n<0?c:s;for(;e>=0&&e=0))break;n<0?e--:e++}}if(function(e,n,t){if(e.length!==n.length)return!1;for(let r=0;r=0&&t0?t--:t++}}}return ce(i.reduce(((e,n)=>n+e),0),100)?i:a}function de(e){let{layout:n,panelsArray:t,pivotIndices:r}=e,o=0,a=100,l=0,i=0;const c=r[0];oe(null!=c,"No pivot index found"),t.forEach(((e,n)=>{const{constraints:t}=e,{maxSize:r=100,minSize:s=0}=t;n===c?(o=s,a=r):(l+=s,i+=r)}));return{valueMax:Math.min(a,100-l),valueMin:Math.max(o,100-i),valueNow:n[c]}}function pe(e){let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document;return Array.from(n.querySelectorAll('[data-panel-resize-handle-id][data-panel-group-id="'.concat(e,'"]')))}function fe(e,n){const t=pe(e,arguments.length>2&&void 0!==arguments[2]?arguments[2]:document).findIndex((e=>e.getAttribute("data-panel-resize-handle-id")===n));return null!==t&&void 0!==t?t:null}function he(e,n,t){const r=fe(e,n,t);return null!=r?[r,r+1]:[-1,-1]}function ge(e){let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document;var t;if(n instanceof HTMLElement&&(null===n||void 0===n||null===(t=n.dataset)||void 0===t?void 0:t.panelGroupId)==e)return n;const r=n.querySelector('[data-panel-group][data-panel-group-id="'.concat(e,'"]'));return r||null}function ye(e){const n=(arguments.length>1&&void 0!==arguments[1]?arguments[1]:document).querySelector('[data-panel-resize-handle-id="'.concat(e,'"]'));return n||null}function ve(e){let{committedValuesRef:n,eagerValuesRef:t,groupId:r,layout:o,panelDataArray:a,panelGroupElement:l,setLayout:i}=e;g({didWarnAboutMissingResizeHandle:!1}),x((()=>{if(!l)return;const e=pe(r,l);for(let n=0;n{e.forEach(((e,n)=>{e.removeAttribute("aria-controls"),e.removeAttribute("aria-valuemax"),e.removeAttribute("aria-valuemin"),e.removeAttribute("aria-valuenow")}))}}),[r,o,a,l]),d((()=>{if(!l)return;const e=t.current;oe(e,"Eager values not found");const{panelDataArray:n}=e;oe(null!=ge(r,l),'No group found for id "'.concat(r,'"'));const a=pe(r,l);oe(a,'No resize handles found for group id "'.concat(r,'"'));const c=a.map((e=>{const t=e.getAttribute("data-panel-resize-handle-id");oe(t,"Resize handle element has no handle id attribute");const[a,c]=function(e,n,t){let r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:document;var o,a,l,i;const c=ye(n,r),s=pe(e,r),u=c?s.indexOf(c):-1;return[null!==(o=null===(a=t[u])||void 0===a?void 0:a.id)&&void 0!==o?o:null,null!==(l=null===(i=t[u+1])||void 0===i?void 0:i.id)&&void 0!==l?l:null]}(r,t,n,l);if(null==a||null==c)return()=>{};const s=e=>{if(!e.defaultPrevented)switch(e.key){case"Enter":{e.preventDefault();const c=n.findIndex((e=>e.id===a));if(c>=0){const e=n[c];oe(e,"No panel data found for index ".concat(c));const a=o[c],{collapsedSize:s=0,collapsible:u,minSize:d=0}=e.constraints;if(null!=a&&u){const e=ue({delta:ce(a,s)?d-s:s-a,initialLayout:o,panelConstraints:n.map((e=>e.constraints)),pivotIndices:he(r,t,l),prevLayout:o,trigger:"keyboard"});o!==e&&i(e)}}break}}};return e.addEventListener("keydown",s),()=>{e.removeEventListener("keydown",s)}}));return()=>{c.forEach((e=>e()))}}),[l,n,t,r,o,a,i])}function me(e,n){if(e.length!==n.length)return!1;for(let t=0;t{const o=e[r];oe(o,"Panel data not found for index ".concat(r));const{callbacks:a,constraints:l,id:i}=o,{collapsedSize:c=0,collapsible:s}=l,u=t[i];if(null==u||n!==u){t[i]=n;const{onCollapse:e,onExpand:r,onResize:o}=a;o&&o(n,u),s&&(e||r)&&(!r||null!=u&&!ie(u,c)||ie(n,c)||r(),!e||null!=u&&ie(u,c)||!ie(n,c)||e())}}))}function we(e,n){if(e.length!==n.length)return!1;for(let t=0;tlocalStorage.getItem(e),e.setItem=(e,n)=>{localStorage.setItem(e,n)}}catch(n){console.error(n),e.getItem=()=>null,e.setItem=()=>{}}}function Ae(e){return"react-resizable-panels:".concat(e)}function ke(e){return e.map((e=>{const{constraints:n,id:t,idIsFromProps:r,order:o}=e;return r?t:o?"".concat(o,":").concat(JSON.stringify(n)):JSON.stringify(n)})).sort(((e,n)=>e.localeCompare(n))).join(",")}function Ee(e,n){try{const t=Ae(e),r=n.getItem(t);if(r){const e=JSON.parse(r);if("object"===typeof e&&null!=e)return e}}catch(t){}return null}function Ie(e,n,t,r,o){var a;const l=Ae(e),i=ke(n),c=null!==(a=Ee(e,o))&&void 0!==a?a:{};c[i]={expandToSizes:Object.fromEntries(t.entries()),layout:r};try{o.setItem(l,JSON.stringify(c))}catch(s){console.error(s)}}function Le(e){let{layout:n,panelConstraints:t}=e;const r=[...n],o=r.reduce(((e,n)=>e+n),0);if(r.length!==t.length)throw Error("Invalid ".concat(t.length," panel layout: ").concat(r.map((e=>"".concat(e,"%"))).join(", ")));if(!ce(o,100))for(let l=0;l(Se(Pe),Pe.getItem(e)),setItem:(e,n)=>{Se(Pe),Pe.setItem(e,n)}},Ce={};function De(e){let{autoSaveId:n=null,children:t,className:r="",direction:o,forwardedRef:l,id:i=null,onLayout:c=null,keyboardResizeBy:u=null,storage:f=Pe,style:v,tagName:m="div",...b}=e;const w=S(i),A=g(null),[k,E]=y(null),[I,L]=y([]),M=g({}),R=g(new Map),N=g(0),F=g({autoSaveId:n,direction:o,dragState:k,id:w,keyboardResizeBy:u,onLayout:c,storage:f}),H=g({layout:I,panelDataArray:[],panelDataArrayChanged:!1});g({didLogIdAndOrderWarning:!1,didLogPanelConstraintsWarning:!1,prevPanelIds:[]}),p(l,(()=>({getId:()=>F.current.id,getLayout:()=>{const{layout:e}=H.current;return e},setLayout:e=>{const{onLayout:n}=F.current,{layout:t,panelDataArray:r}=H.current,o=Le({layout:e,panelConstraints:r.map((e=>e.constraints))});me(t,o)||(L(o),H.current.layout=o,n&&n(o),be(r,o,M.current))}})),[]),x((()=>{F.current.autoSaveId=n,F.current.direction=o,F.current.dragState=k,F.current.id=w,F.current.onLayout=c,F.current.storage=f})),ve({committedValuesRef:F,eagerValuesRef:H,groupId:w,layout:I,panelDataArray:H.current.panelDataArray,setLayout:L,panelGroupElement:A.current}),d((()=>{const{panelDataArray:e}=H.current;if(n){if(0===I.length||I.length!==e.length)return;let t=Ce[n];null==t&&(t=function(e){let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:10,t=null;return function(){for(var r=arguments.length,o=new Array(r),a=0;a{e(...o)}),n)}}(Ie,100),Ce[n]=t);const r=[...e],o=new Map(R.current);t(n,r,o,I,f)}}),[n,I,f]),d((()=>{}));const G=s((e=>{const{onLayout:n}=F.current,{layout:t,panelDataArray:r}=H.current;if(e.constraints.collapsible){const o=r.map((e=>e.constraints)),{collapsedSize:a=0,panelSize:l,pivotIndices:i}=Ne(r,e,t);if(oe(null!=l,'Panel size not found for panel "'.concat(e.id,'"')),!ie(l,a)){R.current.set(e.id,l);const c=ue({delta:Re(r,e)===r.length-1?l-a:a-l,initialLayout:t,panelConstraints:o,pivotIndices:i,prevLayout:t,trigger:"imperative-api"});we(t,c)||(L(c),H.current.layout=c,n&&n(c),be(r,c,M.current))}}}),[]),B=s((e=>{const{onLayout:n}=F.current,{layout:t,panelDataArray:r}=H.current;if(e.constraints.collapsible){const o=r.map((e=>e.constraints)),{collapsedSize:a=0,panelSize:l=0,minSize:i=0,pivotIndices:c}=Ne(r,e,t);if(ie(l,a)){const a=R.current.get(e.id),s=null!=a&&a>=i?a:i,u=ue({delta:Re(r,e)===r.length-1?l-s:s-l,initialLayout:t,panelConstraints:o,pivotIndices:c,prevLayout:t,trigger:"imperative-api"});we(t,u)||(L(u),H.current.layout=u,n&&n(u),be(r,u,M.current))}}}),[]),T=s((e=>{const{layout:n,panelDataArray:t}=H.current,{panelSize:r}=Ne(t,e,n);return oe(null!=r,'Panel size not found for panel "'.concat(e.id,'"')),r}),[]),q=s(((e,n)=>{const{panelDataArray:t}=H.current,r=Re(t,e);return function(e){let{defaultSize:n,dragState:t,layout:r,panelData:o,panelIndex:a,precision:l=3}=e;const i=r[a];let c;return c=null==i?void 0!=n?n.toFixed(l):"1":1===o.length?"1":i.toFixed(l),{flexBasis:0,flexGrow:c,flexShrink:1,overflow:"hidden",pointerEvents:null!==t?"none":void 0}}({defaultSize:n,dragState:k,layout:I,panelData:t,panelIndex:r})}),[k,I]),J=s((e=>{const{layout:n,panelDataArray:t}=H.current,{collapsedSize:r=0,collapsible:o,panelSize:a}=Ne(t,e,n);return oe(null!=a,'Panel size not found for panel "'.concat(e.id,'"')),!0===o&&ie(a,r)}),[]),X=s((e=>{const{layout:n,panelDataArray:t}=H.current,{collapsedSize:r=0,collapsible:o,panelSize:a}=Ne(t,e,n);return oe(null!=a,'Panel size not found for panel "'.concat(e.id,'"')),!o||le(a,r)>0}),[]),Y=s((e=>{const{panelDataArray:n}=H.current;n.push(e),n.sort(((e,n)=>{const t=e.order,r=n.order;return null==t&&null==r?0:null==t?-1:null==r?1:t-r})),H.current.panelDataArrayChanged=!0}),[]);x((()=>{if(H.current.panelDataArrayChanged){H.current.panelDataArrayChanged=!1;const{autoSaveId:e,onLayout:n,storage:t}=F.current,{layout:r,panelDataArray:o}=H.current;let a=null;if(e){const n=function(e,n,t){var r,o;return null!==(o=(null!==(r=Ee(e,t))&&void 0!==r?r:{})[ke(n)])&&void 0!==o?o:null}(e,o,t);n&&(R.current=new Map(Object.entries(n.expandToSizes)),a=n.layout)}null==a&&(a=function(e){let{panelDataArray:n}=e;const t=Array(n.length),r=n.map((e=>e.constraints));let o=0,a=100;for(let l=0;le.constraints))});me(r,l)||(L(l),H.current.layout=l,n&&n(l),be(o,l,M.current))}})),x((()=>{const e=H.current;return()=>{e.layout=[]}}),[]);const U=s((e=>function(n){n.preventDefault();const t=A.current;if(!t)return()=>null;const{direction:r,dragState:o,id:a,keyboardResizeBy:l,onLayout:i}=F.current,{layout:c,panelDataArray:s}=H.current,{initialLayout:u}=null!==o&&void 0!==o?o:{},d=he(a,e,t);let p=xe(n,e,r,o,l,t);if(0===p)return;const f="horizontal"===r;"rtl"===document.dir&&f&&(p=-p);const h=ue({delta:p,initialLayout:null!==u&&void 0!==u?u:c,panelConstraints:s.map((e=>e.constraints)),pivotIndices:d,prevLayout:c,trigger:P(n)?"keyboard":"mouse-or-touch"}),g=!we(c,h);(C(n)||D(n))&&N.current!=p&&(N.current=p,ee(e,g?0:f?p<0?O:j:p<0?V:W)),g&&(L(h),H.current.layout=h,i&&i(h),be(s,h,M.current))}),[]),Z=s(((e,n)=>{const{onLayout:t}=F.current,{layout:r,panelDataArray:o}=H.current,a=o.map((e=>e.constraints)),{panelSize:l,pivotIndices:i}=Ne(o,e,r);oe(null!=l,'Panel size not found for panel "'.concat(e.id,'"'));const c=ue({delta:Re(o,e)===o.length-1?l-n:n-l,initialLayout:r,panelConstraints:a,pivotIndices:i,prevLayout:r,trigger:"imperative-api"});we(r,c)||(L(c),H.current.layout=c,t&&t(c),be(o,c,M.current))}),[]),K=s(((e,n)=>{const{layout:t,panelDataArray:r}=H.current,{collapsedSize:o=0,collapsible:a}=n,{collapsedSize:l=0,collapsible:i,maxSize:c=100,minSize:s=0}=e.constraints,{panelSize:u}=Ne(r,e,t);null!=u&&(a&&i&&ie(u,o)?ie(o,l)||Z(e,l):uc&&Z(e,c))}),[Z]),_=s(((e,n)=>{const{direction:t}=F.current,{layout:r}=H.current;if(!A.current)return;const o=ye(e,A.current);oe(o,'Drag handle element not found for id "'.concat(e,'"'));const a=ze(t,n);E({dragHandleId:e,dragHandleRect:o.getBoundingClientRect(),initialCursorPosition:a,initialLayout:r})}),[]),Q=s((()=>{E(null)}),[]),$=s((e=>{const{panelDataArray:n}=H.current,t=Re(n,e);t>=0&&(n.splice(t,1),delete M.current[e.id],H.current.panelDataArrayChanged=!0)}),[]),ne=h((()=>({collapsePanel:G,direction:o,dragState:k,expandPanel:B,getPanelSize:T,getPanelStyle:q,groupId:w,isPanelCollapsed:J,isPanelExpanded:X,reevaluatePanelConstraints:K,registerPanel:Y,registerResizeHandle:U,resizePanel:Z,startDragging:_,stopDragging:Q,unregisterPanel:$,panelGroupElement:A.current})),[G,k,o,B,T,q,w,J,X,K,Y,U,Z,_,Q,$]),te={display:"flex",flexDirection:"horizontal"===o?"row":"column",height:"100%",overflow:"hidden",width:"100%"};return a(z.Provider,{value:ne},a(m,{...b,children:t,className:r,id:i,ref:A,style:{...te,...v},"data-panel-group":"","data-panel-group-direction":o,"data-panel-group-id":w}))}const Me=c(((e,n)=>a(De,{...e,forwardedRef:n})));function Re(e,n){return e.findIndex((e=>e===n||e.id===n.id))}function Ne(e,n,t){const r=Re(e,n),o=r===e.length-1?[r-1,r]:[r,r+1],a=t[r];return{...n.constraints,panelSize:a,pivotIndices:o}}function Fe(e){let{children:n=null,className:t="",disabled:r=!1,hitAreaMargins:o,id:l,onDragging:i,style:c={},tabIndex:s=0,tagName:p="div",...f}=e;const h=g(null),v=g({onDragging:i});d((()=>{v.current.onDragging=i}));const m=u(z);if(null===m)throw Error("PanelResizeHandle components must be rendered within a PanelGroup container");const{direction:b,groupId:w,registerResizeHandle:A,startDragging:k,stopDragging:E,panelGroupElement:I}=m,L=S(l),[P,C]=y("inactive"),[D,M]=y(!1),[R,N]=y(null),F=g({state:P});x((()=>{F.current.state=P})),d((()=>{if(r)N(null);else{const e=A(L);N((()=>e))}}),[r,L,A]),d((()=>{var e,n;if(r||null==R)return;const t=h.current;oe(t,"Element ref not attached");return function(e,n,t,r,o){var a;const{ownerDocument:l}=n,i={direction:t,element:n,hitAreaMargins:r,setResizeHandlerState:o},c=null!==(a=Y.get(l))&&void 0!==a?a:0;return Y.set(l,c+1),Z.add(i),te(),function(){var n;U.delete(e),Z.delete(i);const t=null!==(n=Y.get(l))&&void 0!==n?n:1;Y.set(l,t-1),te(),1===t&&Y.delete(l)}}(L,t,b,{coarse:null!==(e=null===o||void 0===o?void 0:o.coarse)&&void 0!==e?e:15,fine:null!==(n=null===o||void 0===o?void 0:o.fine)&&void 0!==n?n:5},((e,n,t)=>{if(n)switch(e){case"down":{C("drag"),k(L,t);const{onDragging:e}=v.current;e&&e(!0);break}case"move":{const{state:e}=F.current;"drag"!==e&&C("hover"),R(t);break}case"up":{C("hover"),E();const{onDragging:e}=v.current;e&&e(!1);break}}else C("inactive")}))}),[b,r,o,A,L,R,k,E]),function(e){let{disabled:n,handleId:t,resizeHandler:r,panelGroupElement:o}=e;d((()=>{if(n||null==r||null==o)return;const e=ye(t,o);if(null==e)return;const a=n=>{if(!n.defaultPrevented)switch(n.key){case"ArrowDown":case"ArrowLeft":case"ArrowRight":case"ArrowUp":case"End":case"Home":n.preventDefault(),r(n);break;case"F6":{n.preventDefault();const r=e.getAttribute("data-panel-group-id");oe(r,'No group element found for id "'.concat(r,'"'));const a=pe(r,o),l=fe(r,t,o);oe(null!==l,'No resize element found for id "'.concat(t,'"')),a[n.shiftKey?l>0?l-1:a.length-1:l+1{e.removeEventListener("keydown",a)}}),[o,n,t,r])}({disabled:r,handleId:L,resizeHandler:R,panelGroupElement:I});return a(p,{...f,children:n,className:t,id:l,onBlur:()=>M(!1),onFocus:()=>M(!0),ref:h,role:"separator",style:{touchAction:"none",userSelect:"none",...c},tabIndex:s,"data-panel-group-direction":b,"data-panel-group-id":w,"data-resize-handle":"","data-resize-handle-active":"drag"===P?"pointer":D?"keyboard":void 0,"data-resize-handle-state":P,"data-panel-resize-handle-enabled":!r,"data-panel-resize-handle-id":L})}De.displayName="PanelGroup",Me.displayName="forwardRef(PanelGroup)",Fe.displayName="PanelResizeHandle"}}]); -//# sourceMappingURL=824.5f397999.chunk.js.map \ No newline at end of file diff --git a/static/js/824.5f397999.chunk.js.map b/static/js/824.5f397999.chunk.js.map deleted file mode 100644 index a0f5c69..0000000 --- a/static/js/824.5f397999.chunk.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"static/js/824.5f397999.chunk.js","mappings":";oHAaA,MAAMA,GAAQC,UAAAA,GAAiB,QAAS,CAAC,CAAC,OAAQ,CAAEC,EAAG,kBAAmBC,IAAK,8CCAzE,MAAAC,GAAcH,UAAAA,GAAiB,cAAe,CAClD,CAAC,OAAQ,CAAEC,EAAG,eAAgBC,IAAK,8CCDrC,MAAME,GAAYJ,UAAAA,GAAiB,YAAa,CAAC,CAAC,OAAQ,CAAEC,EAAG,iBAAkBC,IAAK,8CCAhF,MAAAG,GAAmBL,UAAAA,GAAiB,mBAAoB,CAC5D,CAAC,SAAU,CAAEM,GAAI,KAAMC,GAAI,KAAMC,EAAG,IAAKN,IAAK,WAC9C,CAAC,SAAU,CAAEI,GAAI,KAAMC,GAAI,IAAKC,EAAG,IAAKN,IAAK,WAC7C,CAAC,SAAU,CAAEI,GAAI,KAAMC,GAAI,KAAMC,EAAG,IAAKN,IAAK,8CCH1C,MAAAO,GAAWT,UAAAA,GAAiB,WAAY,CAC5C,CAAC,SAAU,CAAEM,GAAI,KAAMC,GAAI,KAAMC,EAAG,IAAKN,IAAK,WAC9C,CAAC,SAAU,CAAEI,GAAI,KAAMC,GAAI,KAAMC,EAAG,IAAKN,IAAK,WAC9C,CAAC,SAAU,CAAEI,GAAI,IAAKC,GAAI,KAAMC,EAAG,IAAKN,IAAK,8CCHzC,MAAAQ,GAASV,UAAAA,GAAiB,SAAU,CACxC,CAAC,OAAQ,CAAEC,EAAG,mDAAoDC,IAAK,WACvE,CAAC,OAAQ,CAAED,EAAG,YAAaC,IAAK,8CCF5B,MAAAS,GAAOX,UAAAA,GAAiB,OAAQ,CACpC,CAAC,OAAQ,CAAEC,EAAG,WAAYC,IAAK,WAC/B,CAAC,OAAQ,CAAED,EAAG,WAAYC,IAAK,8CCF3B,MAAAU,GAAaZ,UAAAA,GAAiB,aAAc,CAChD,CAAC,OAAQ,CAAEC,EAAG,qDAAsDC,IAAK,WACzE,CAAC,OAAQ,CAAED,EAAG,WAAYC,IAAK,WAC/B,CAAC,OAAQ,CAAED,EAAG,sDAAuDC,IAAK,WAC1E,CAAC,OAAQ,CAAED,EAAG,aAAcC,IAAK,8CCJ7B,MAAAW,GAAQb,UAAAA,GAAiB,QAAS,CACtC,CAAC,OAAQ,CAAEC,EAAG,UAAWC,IAAK,WAC9B,CAAC,OAAQ,CAAED,EAAG,wCAAyCC,IAAK,WAC5D,CAAC,OAAQ,CAAED,EAAG,qCAAsCC,IAAK,6CCHrD,MAAAY,GAAId,UAAAA,GAAiB,IAAK,CAC9B,CAAC,OAAQ,CAAEC,EAAG,aAAcC,IAAK,WACjC,CAAC,OAAQ,CAAED,EAAG,aAAcC,IAAK,uFCTnC,MAAM,cACJa,EAAa,cACbC,EAAa,UACbC,EAAS,WACTC,EAAU,YACVC,EAAW,WACXC,EAAU,UACVC,EAAS,oBACTC,EAAmB,gBACnBC,EAAe,QACfC,EAAO,OACPC,EAAM,SACNC,GACEC,IAAAA,EAAAA,EAAAA,EAAAA,EAAAA,IAGEC,GAAQD,IAAAA,EAAAA,EAAAA,EAAAA,EAAAA,KAAM,QAAQE,YACtBC,EAAsCP,EAEtCQ,EAAoBf,EAAc,MACxCe,EAAkBC,YAAc,oBAEhC,MAAMC,EAA4BH,EAE5BI,EAAgC,oBAAVN,EAAuBA,EAAQ,IAAM,KACjE,IAAIO,EAAU,EACd,SAASC,IAAiC,IAArBC,EAAYC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,KAClC,MAAMG,EAAcP,IACdQ,EAAQjB,EAAOY,GAAgBI,GAAe,MAIpD,OAHsB,OAAlBC,EAAMC,UACRD,EAAMC,QAAU,GAAKR,KAEC,OAAjBE,QAA0C,IAAjBA,EAA0BA,EAAeK,EAAMC,OACjF,CAEA,SAASC,EAAqBC,GAiB3B,IAjB4B,SAC7BC,EACAC,UAAWC,EAAqB,GAAE,cAClCC,EAAa,YACbC,EAAW,YACXC,EAAW,aACXC,EACAC,GAAIC,EAAW,QACfC,EAAO,QACPC,EAAO,WACPC,EAAU,SACVC,EAAQ,SACRC,EAAQ,MACRC,EACAC,MAAOC,EACPC,QAASC,EAAO,SACbC,GACJpB,EACC,MAAMqB,EAAU9C,EAAWW,GAC3B,GAAgB,OAAZmC,EACF,MAAMC,MAAM,mEAEd,MAAM,cACJC,EAAa,YACbC,EAAW,aACXC,EAAY,cACZC,EAAa,QACbC,EAAO,iBACPC,EAAgB,2BAChBC,EAA0B,cAC1BC,EAAa,YACbC,EAAW,gBACXC,GACEX,EACEY,EAAU1C,EAAYkB,GACtByB,EAAetD,EAAO,CAC1BuD,UAAW,CACTvB,aACAC,WACAC,YAEFsB,YAAa,CACXhC,gBACAC,cACAC,cACAI,UACAC,WAEFH,GAAIyB,EACJI,mBAA+B1C,IAAhBc,EACfM,UAEFnC,EAAO,CACL0D,iCAAiC,IAEnClD,GAA0B,KACxB,MAAM,UACJ+C,EAAS,YACTC,GACEF,EAAapC,QACXyC,EAAkB,IACnBH,GAELF,EAAapC,QAAQU,GAAKyB,EAC1BC,EAAapC,QAAQuC,mBAAgC1C,IAAhBc,EACrCyB,EAAapC,QAAQiB,MAAQA,EAC7BoB,EAAUvB,WAAaA,EACvBuB,EAAUtB,SAAWA,EACrBsB,EAAUrB,SAAWA,EACrBsB,EAAYhC,cAAgBA,EAC5BgC,EAAY/B,YAAcA,EAC1B+B,EAAY9B,YAAcA,EAC1B8B,EAAY1B,QAAUA,EACtB0B,EAAYzB,QAAUA,EAIlB4B,EAAgBnC,gBAAkBgC,EAAYhC,eAAiBmC,EAAgBlC,cAAgB+B,EAAY/B,aAAekC,EAAgB7B,UAAY0B,EAAY1B,SAAW6B,EAAgB5B,UAAYyB,EAAYzB,SACvNkB,EAA2BK,EAAapC,QAASyC,EACnD,IAEFnD,GAA0B,KACxB,MAAMoD,EAAYN,EAAapC,QAE/B,OADAgC,EAAcU,GACP,KACLR,EAAgBQ,EAAU,CAC3B,GACA,CAACzB,EAAOkB,EAASH,EAAeE,IACnCvD,EAAoB8B,GAAc,KAAM,CACtCkC,SAAUA,KACRlB,EAAcW,EAAapC,QAAQ,EAErC4C,OAAQA,KACNlB,EAAYU,EAAapC,QAAQ,EAEnC6C,MAAKA,IACIV,EAETW,QAAOA,IACEnB,EAAaS,EAAapC,SAEnC+C,YAAWA,IACFjB,EAAiBM,EAAapC,SAEvCgD,WAAUA,KACAlB,EAAiBM,EAAapC,SAExCiD,OAAQC,IACNjB,EAAYG,EAAapC,QAASkD,EAAK,KAEvC,CAACzB,EAAeC,EAAaC,EAAcG,EAAkBK,EAASF,IAC1E,MAAMf,EAAQU,EAAcQ,EAAapC,QAASQ,GAClD,OAAOpC,EAAciD,EAAM,IACtBC,EACHnB,WACAC,UAAWC,EACXK,GAAIC,EACJO,MAAO,IACFA,KACAC,GAGL,aAAc,GACd,yBAA0BZ,QAAeV,EACzC,sBAAuBgC,EACvB,gBAAiBM,EACjB,kBAAmBgB,WAAW,GAAKjC,EAAMkC,UAAUC,QAAQ,IAE/D,CACA,MAAMC,EAAQ/E,GAAW,CAACgF,EAAOC,IAAQpF,EAAc6B,EAAuB,IACzEsD,EACH9C,aAAc+C,MAEhBvD,EAAsBZ,YAAc,QACpCiE,EAAMjE,YAAc,oBAEpB,IAAIoE,EAAqB,KACrBC,EAAe,KA6CnB,SAASC,EAAqBC,EAAOC,GACnC,MAAM3C,EA7CR,SAAwB0C,EAAOC,GAC7B,GAAIA,EAAiB,CACnB,MAEMC,EAA4D,KAA7CD,EAAkBE,GACjCC,EAA4D,KAA7CH,EAAkBI,GACvC,GAJsE,KAA/CJ,EAAkBK,GAKvC,OAAIJ,EACK,YACEE,EACF,YAEA,WAEJ,GAX+D,KAA/CH,EAAkBM,GAYvC,OAAIL,EACK,YACEE,EACF,YAEA,WAEJ,GAAIF,EACT,MAAO,WACF,GAAIE,EACT,MAAO,UAEX,CACA,OAAQJ,GACN,IAAK,aACH,MAAO,YACT,IAAK,eACH,MAAO,OACT,IAAK,WACH,MAAO,YAEb,CASgBQ,CAAeR,EAAOC,GAChCJ,IAAuBvC,IAG3BuC,EAAqBvC,EACA,OAAjBwC,IACFA,EAAeW,SAASjG,cAAc,SACtCiG,SAASC,KAAKC,YAAYb,IAE5BA,EAAac,UAAY,aAAHC,OAAgBvD,EAAK,gBAC7C,CAEA,SAASwD,EAAUC,GACjB,MAAsB,YAAfA,EAAMC,IACf,CACA,SAASC,EAAaF,GACpB,OAAOA,EAAMC,KAAKE,WAAW,QAC/B,CACA,SAASC,EAAaJ,GACpB,OAAOA,EAAMC,KAAKE,WAAW,QAC/B,CAEA,SAASE,EAA0BL,GACjC,GAAIE,EAAaF,GACf,MAAO,CACLM,EAAGN,EAAMO,QACTC,EAAGR,EAAMS,SAEN,GAAIL,EAAaJ,GAAQ,CAC9B,MAAMU,EAAQV,EAAMW,QAAQ,GAC5B,GAAID,GAASA,EAAMH,SAAWG,EAAMD,QAClC,MAAO,CACLH,EAAGI,EAAMH,QACTC,EAAGE,EAAMD,QAGf,CACA,MAAO,CACLH,EAAGM,IACHJ,EAAGI,IAEP,CAQA,SAASC,EAAWC,EAASC,EAASC,GACpC,OAAIA,EACKF,EAAQR,EAAIS,EAAQT,EAAIS,EAAQE,OAASH,EAAQR,EAAIQ,EAAQG,MAAQF,EAAQT,GAAKQ,EAAQN,EAAIO,EAAQP,EAAIO,EAAQG,QAAUJ,EAAQN,EAAIM,EAAQI,OAASH,EAAQP,EAEjKM,EAAQR,GAAKS,EAAQT,EAAIS,EAAQE,OAASH,EAAQR,EAAIQ,EAAQG,OAASF,EAAQT,GAAKQ,EAAQN,GAAKO,EAAQP,EAAIO,EAAQG,QAAUJ,EAAQN,EAAIM,EAAQI,QAAUH,EAAQP,CAEhL,CA4CA,MAAM5B,EAAQ,uGAWd,SAASuC,EAAyBC,GAChC,MAAM7E,EAAQ8E,iBAAiBD,GAG/B,MAAuB,UAAnB7E,EAAM+E,aAMW,SAAjB/E,EAAMgF,QAAyC,WAAnBhF,EAAM+E,WAlBxC,SAAsBF,GACpB,IAAII,EAEJ,MAAMC,EAAUJ,iBAAsD,QAApCG,EAAcE,EAAWN,UAAmC,IAAhBI,EAAyBA,EAAcJ,GAAMK,QAC3H,MAAmB,SAAZA,GAAkC,gBAAZA,CAC/B,CAaiEE,CAAaP,OACvE7E,EAAMqF,QAAU,IACjB,cAAerF,GAA6B,SAApBA,EAAMsF,YAC9B,oBAAqBtF,GAAmC,SAA1BA,EAAMuF,kBACpC,iBAAkBvF,GAAgC,WAAvBA,EAAMwF,eACjC,WAAYxF,GAA0B,SAAjBA,EAAMyF,SAC3B,iBAAkBzF,GAAgC,SAAvBA,EAAM0F,eACjC,cAAe1F,GAA6B,YAApBA,EAAM2F,cAC9BtD,EAAMuD,KAAK5F,EAAM6F,aAEiB,UAAlC7F,EAAM8F,gCAEZ,CAGA,SAASC,EAAsBC,GAC7B,IAAIC,EAAID,EAAMtH,OACd,KAAOuH,KAAK,CACV,MAAMpB,EAAOmB,EAAMC,GAEnB,GADAC,GAAOrB,EAAM,gBACTD,EAAyBC,GAAO,OAAOA,CAC7C,CACA,OAAO,IACT,CAGA,SAASsB,EAAYtB,GACnB,OAAOA,GAAQuB,OAAOtB,iBAAiBD,GAAMG,SAAW,CAC1D,CAGA,SAASqB,EAAcxB,GACrB,MAAMyB,EAAY,GAClB,KAAOzB,GACLyB,EAAUC,KAAK1B,GAEfA,EAAOM,EAAWN,GAEpB,OAAOyB,CACT,CAGA,SAASnB,EAAWN,GAClB,MAAM,WACJ2B,GACE3B,EACJ,OAAI2B,GAAcA,aAAsBC,WAC/BD,EAAWE,KAEbF,CACT,CAEA,MAAMxD,EAA0B,EAC1BC,EAA0B,EAC1BJ,EAAwB,EACxBE,EAAwB,EACxB4D,EAAqC,WArI3C,WACE,GAA0B,oBAAfC,WACT,OAAOA,WAAW,oBAAoBC,QAAU,SAAW,MAE/D,CAiIwBC,GACxB,IAAIC,EAAsB,GACtBC,GAAgB,EAChBC,EAAsB,IAAIC,IAC1BC,EAAuB,IAAID,IAC/B,MAAME,EAA2B,IAAIC,IA4BrC,SAASC,EAAkB7D,GACzB,MAAM,OACJ8D,GACE9D,GACE,EACJM,EAAC,EACDE,GACEH,EAA0BL,GAC9BuD,GAAgB,EAChBQ,EAA+B,CAC7BD,SACAxD,IACAE,MAEFwD,KACIV,EAAoBrI,OAAS,IAC/BgJ,GAA0B,OAAQjE,GAClCA,EAAMkE,iBAEV,CACA,SAASC,EAAkBnE,GACzB,MAAM,EACJM,EAAC,EACDE,GACEH,EAA0BL,GAC9B,IAAKuD,EAAe,CAClB,MAAM,OACJO,GACE9D,EAKJ+D,EAA+B,CAC7BD,SACAxD,IACAE,KAEJ,CACAyD,GAA0B,OAAQjE,GAGlCoE,KACId,EAAoBrI,OAAS,GAC/B+E,EAAMkE,gBAEV,CACA,SAASG,EAAgBrE,GACvB,MAAM,OACJ8D,GACE9D,GACE,EACJM,EAAC,EACDE,GACEH,EAA0BL,GAC9B0D,EAAqBY,QACrBf,GAAgB,EACZD,EAAoBrI,OAAS,GAC/B+E,EAAMkE,iBAERD,GAA0B,KAAMjE,GAChC+D,EAA+B,CAC7BD,SACAxD,IACAE,MAEF4D,KACAJ,IACF,CACA,SAASD,EAA8BQ,GAIpC,IAJqC,OACtCT,EAAM,EACNxD,EAAC,EACDE,GACD+D,EACCjB,EAAoBkB,OAAO,GAC3B,IAAIC,EAAgB,KAChBX,aAAkBY,cACpBD,EAAgBX,GAElBH,EAAyBgB,SAAQC,IAC/B,MACEC,QAASC,EAAiB,eAC1BC,GACEH,EACEI,EAAiBF,EAAkBG,yBACnC,OACJC,EAAM,KACNC,EAAI,MACJC,EAAK,IACLC,GACEL,EACEM,EAASpC,EAAkB6B,EAAeQ,OAASR,EAAeS,KAExE,GADwBlF,GAAK6E,EAAOG,GAAUhF,GAAK8E,EAAQE,GAAU9E,GAAK6E,EAAMC,GAAU9E,GAAK0E,EAASI,EACnF,CAOnB,GAAsB,OAAlBb,GAA0BK,IAAsBL,IAAkBK,EAAkBW,SAAShB,KAAmBA,EAAcgB,SAASX,IApPjJ,SAAiBY,EAAGC,GAClB,GAAID,IAAMC,EAAG,MAAM,IAAI9I,MAAM,mCAC7B,MAAMgG,EAAY,CAChB6C,EAAG9C,EAAc8C,GACjBC,EAAG/C,EAAc+C,IAEnB,IAAIC,EAGJ,KAAO/C,EAAU6C,EAAEG,IAAI,KAAOhD,EAAU8C,EAAEE,IAAI,IAC5CH,EAAI7C,EAAU6C,EAAEI,MAChBH,EAAI9C,EAAU8C,EAAEG,MAChBF,EAAkBF,EAEpBjD,GAAOmD,EAAiB,6EACxB,MAAMG,EACDrD,EAAYJ,EAAsBO,EAAU6C,IAD3CK,EAEDrD,EAAYJ,EAAsBO,EAAU8C,IAEjD,GAAII,IAAgBA,EAAa,CAC/B,MAAMvK,EAAWoK,EAAgBI,WAC3BC,EAAqB,CACzBP,EAAG7C,EAAU6C,EAAEG,IAAI,GACnBF,EAAG9C,EAAU8C,EAAEE,IAAI,IAErB,IAAIrD,EAAIhH,EAASP,OACjB,KAAOuH,KAAK,CACV,MAAM0D,EAAQ1K,EAASgH,GACvB,GAAI0D,IAAUD,EAAmBP,EAAG,OAAO,EAC3C,GAAIQ,IAAUD,EAAmBN,EAAG,OAAQ,CAC9C,CACF,CACA,OAAOQ,KAAKC,KAAKL,EAAcA,EACjC,CAuNMM,CAAQ5B,EAAeK,GAAqB,EAAG,CAO7C,IAAIwB,EAAiB7B,EACjB8B,GAAe,EACnB,KAAOD,IACDA,EAAeb,SAASX,IADP,CAGd,GAAIjE,EAAWyF,EAAerB,wBAAyBD,GAAgB,GAAO,CACnFuB,GAAe,EACf,KACF,CACAD,EAAiBA,EAAeE,aAClC,CACA,GAAID,EACF,MAEJ,CACAjD,EAAoBR,KAAK8B,EAC3B,IAEJ,CACA,SAAS6B,GAA2BC,EAAgBC,GAClDjD,EAAqBkD,IAAIF,EAAgBC,EAC3C,CACA,SAASvC,KACP,IAAIyC,GAAuB,EACvBC,GAAqB,EACzBxD,EAAoBqB,SAAQC,IAC1B,MAAM,UACJmC,GACEnC,EACc,eAAdmC,EACFF,GAAuB,EAEvBC,GAAqB,CACvB,IAEF,IAAI5H,EAAkB,EACtBwE,EAAqBiB,SAAQgC,IAC3BzH,GAAmByH,CAAI,IAErBE,GAAwBC,EAC1B9H,EAAqB,eAAgBE,GAC5B2H,EACT7H,EAAqB,aAAcE,GAC1B4H,EACT9H,EAAqB,WAAYE,GAnXd,OAAjBH,IACFW,SAASC,KAAKqH,YAAYjI,GAC1BD,EAAqB,KACrBC,EAAe,KAoXnB,CACA,SAASiF,KACPR,EAAoBmB,SAAQ,CAACsC,EAAGC,KAC9B,MAAM,KACJC,GACED,EACJC,EAAKC,oBAAoB,cAAe/C,GACxC8C,EAAKC,oBAAoB,YAAavD,GACtCsD,EAAKC,oBAAoB,aAAcjD,GACvCgD,EAAKC,oBAAoB,YAAajD,GACtCgD,EAAKC,oBAAoB,YAAajD,GACtCgD,EAAKC,oBAAoB,aAAcvD,EAAkB,IAE3DwD,OAAOD,oBAAoB,UAAW/C,GACtCgD,OAAOD,oBAAoB,cAAe/C,GAC1CgD,OAAOD,oBAAoB,WAAY/C,GACnCV,EAAyBpF,KAAO,IAC9BgF,GACED,EAAoBrI,OAAS,GAC/BuI,EAAoBmB,SAAQ,CAAC2C,EAAOJ,KAClC,MAAM,KACJC,GACED,EACAI,EAAQ,IACVH,EAAKI,iBAAiB,cAAelD,GACrC8C,EAAKI,iBAAiB,aAAcpD,GACpCgD,EAAKI,iBAAiB,YAAapD,GACnCgD,EAAKI,iBAAiB,YAAapD,EAAmB,CACpDqD,SAAS,IAEb,IAGJH,OAAOE,iBAAiB,UAAWlD,GACnCgD,OAAOE,iBAAiB,cAAelD,GACvCgD,OAAOE,iBAAiB,WAAYlD,IAEpCb,EAAoBmB,SAAQ,CAAC2C,EAAOJ,KAClC,MAAM,KACJC,GACED,EACAI,EAAQ,IACVH,EAAKI,iBAAiB,YAAa1D,GACnCsD,EAAKI,iBAAiB,YAAapD,GACnCgD,EAAKI,iBAAiB,YAAapD,EAAmB,CACpDqD,SAAS,IAEXL,EAAKI,iBAAiB,aAAc1D,GACtC,IAIR,CACA,SAASI,GAA0BwD,EAAQzH,GACzC2D,EAAyBgB,SAAQC,IAC/B,MAAM,sBACJ8C,GACE9C,EACE+C,EAAWrE,EAAoBsE,SAAShD,GAC9C8C,EAAsBD,EAAQE,EAAU3H,EAAM,GAElD,CAEA,SAASyC,GAAOoF,EAAmBC,GACjC,IAAKD,EAEH,MADAE,QAAQC,MAAMF,GACRjL,MAAMiL,EAEhB,CAEA,MAAMG,GAAY,GAElB,SAASC,GAAoBC,EAAQC,GAAsC,IAA5BC,EAAcrN,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGiN,GAC9D,OAAIE,EAAOzJ,QAAQ2J,KAAoBD,EAAS1J,QAAQ2J,GAC/C,EAEAF,EAASC,EAAW,GAAK,CAEpC,CACA,SAASE,GAAoBH,EAAQC,GACnC,OAAiE,IAA1DF,GAAoBC,EAAQC,EADwBpN,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGiN,GAEhE,CAEA,SAASM,GAAkBJ,EAAQC,EAAUC,GAC3C,OAAiE,IAA1DH,GAAoBC,EAAQC,EAAUC,EAC/C,CAiBA,SAAS/K,GAAWkL,GAIjB,IAHDC,iBAAkBC,EAAqB,WACvCC,EAAU,KACVpK,GACDiK,EACC,MAAMC,EAAmBC,EAAsBC,GAC/ClG,GAA2B,MAApBgG,EAA0B,yCAAF3I,OAA2C6I,IAC1E,IAAI,cACFhN,EAAgB,EAAC,YACjBC,EAAW,QACXK,EAAU,IAAG,QACbC,EAAU,GACRuM,EACJ,GAAIP,GAAoB3J,EAAMrC,GAAW,EACvC,GAAIN,EAAa,CAIb2C,EADE2J,GAAoB3J,GADF5C,EAAgBO,GAAW,GACH,EACrCP,EAEAO,CAEX,MACEqC,EAAOrC,EAKX,OAFAqC,EAAO4H,KAAKyC,IAAI3M,EAASsC,GACzBA,EAAOC,WAAWD,EAAKG,QAAQuJ,KACxB1J,CACT,CAGA,SAASsK,GAAmBC,GAOzB,IAP0B,MAC3BC,EAAK,cACLC,EACAP,iBAAkBC,EAAqB,aACvCO,EAAY,WACZC,EAAU,QACVC,GACDL,EACC,GAAIP,GAAkBQ,EAAO,GAC3B,OAAOC,EAET,MAAMI,EAAa,IAAIJ,IAChBK,EAAiBC,GAAoBL,EAC5CxG,GAA0B,MAAnB4G,EAAyB,6BAChC5G,GAA2B,MAApB6G,EAA0B,8BACjC,IAAIC,EAAe,EAsBjB,GAAgB,aAAZJ,EAAwB,CAC1B,CAEE,MAAMK,EAAQT,EAAQ,EAAIO,EAAmBD,EACvCZ,EAAmBC,EAAsBc,GAC/C/G,GAAOgG,EAAkB,yCAAF3I,OAA2C0J,IAClE,MAAM,cACJ7N,EAAgB,EAAC,YACjBC,EAAW,QACXM,EAAU,GACRuM,EAIJ,GAAI7M,EAAa,CACf,MAAM6N,EAAWT,EAAcQ,GAE/B,GADA/G,GAAmB,MAAZgH,EAAkB,6CAAF3J,OAA+C0J,IAClEjB,GAAkBkB,EAAU9N,GAAgB,CAC9C,MAAM+N,EAAaxN,EAAUuN,EAGzBvB,GAAoBwB,EAAYvD,KAAKwD,IAAIZ,IAAU,IACrDA,EAAQA,EAAQ,EAAI,EAAIW,EAAaA,EAGzC,CACF,CACF,CAEA,CAEE,MAAMF,EAAQT,EAAQ,EAAIM,EAAkBC,EACtCb,EAAmBC,EAAsBc,GAC/C/G,GAAOgG,EAAkB,wCAAF3I,OAA0C0J,IACjE,MAAM,cACJ7N,EAAgB,EAAC,YACjBC,EAAW,QACXM,EAAU,GACRuM,EAIJ,GAAI7M,EAAa,CACf,MAAM6N,EAAWT,EAAcQ,GAE/B,GADA/G,GAAmB,MAAZgH,EAAkB,6CAAF3J,OAA+C0J,IAClEjB,GAAkBkB,EAAUvN,GAAU,CACxC,MAAMwN,EAAaD,EAAW9N,EAG1BuM,GAAoBwB,EAAYvD,KAAKwD,IAAIZ,IAAU,IACrDA,EAAQA,EAAQ,EAAI,EAAIW,EAAaA,EAGzC,CACF,CACF,CACF,CAIF,CAOE,MAAME,EAAYb,EAAQ,EAAI,GAAK,EACnC,IAAIS,EAAQT,EAAQ,EAAIO,EAAmBD,EACvCQ,EAAoB,EAGxB,OAAa,CACX,MAAMJ,EAAWT,EAAcQ,GAC/B/G,GAAmB,MAAZgH,EAAkB,6CAAF3J,OAA+C0J,IAWtE,GAFAK,GARoBvM,GAAY,CAC9BmL,iBAAkBC,EAClBC,WAAYa,EACZjL,KAAM,MAEoBkL,EAI5BD,GAASI,EACLJ,EAAQ,GAAKA,GAASd,EAAsBzN,OAC9C,KAEJ,CAGA,MAAM6O,EAAc3D,KAAKyC,IAAIzC,KAAKwD,IAAIZ,GAAQ5C,KAAKwD,IAAIE,IACvDd,EAAQA,EAAQ,EAAI,EAAIe,EAAcA,CAGxC,CAEA,CAIE,IAAIN,EADeT,EAAQ,EAAIM,EAAkBC,EAEjD,KAAOE,GAAS,GAAKA,EAAQd,EAAsBzN,QAAQ,CACzD,MAAM8O,EAAiB5D,KAAKwD,IAAIZ,GAAS5C,KAAKwD,IAAIJ,GAC5CE,EAAWT,EAAcQ,GAC/B/G,GAAmB,MAAZgH,EAAkB,6CAAF3J,OAA+C0J,IACtE,MACMQ,EAAW1M,GAAY,CAC3BmL,iBAAkBC,EAClBC,WAAYa,EACZjL,KAJiBkL,EAAWM,IAM9B,IAAKxB,GAAkBkB,EAAUO,KAC/BT,GAAgBE,EAAWO,EAC3BZ,EAAWI,GAASQ,EAChBT,EAAa7K,QAAQ,GAAGuL,cAAc9D,KAAKwD,IAAIZ,GAAOrK,QAAQ,QAAIxD,EAAW,CAC/EgP,SAAS,KACL,GACJ,MAGAnB,EAAQ,EACVS,IAEAA,GAEJ,CACF,CAOA,GA1NF,SAA2BrB,EAAQC,EAAUC,GAC3C,GAAIF,EAAOlN,SAAWmN,EAASnN,OAC7B,OAAO,EAET,IAAK,IAAIuO,EAAQ,EAAGA,EAAQrB,EAAOlN,OAAQuO,IAGzC,IAAKjB,GAFcJ,EAAOqB,GACLpB,EAASoB,GACmBnB,GAC/C,OAAO,EAGX,OAAO,CACT,CA8MM8B,CAAkBjB,EAAYE,GAIhC,OAAOF,EAET,CAEE,MAAMkB,EAAarB,EAAQ,EAAIO,EAAmBD,EAC5CI,EAAWT,EAAcoB,GAC/B3H,GAAmB,MAAZgH,EAAkB,6CAAF3J,OAA+CsK,IACtE,MAAMC,EAAaZ,EAAWF,EACxBS,EAAW1M,GAAY,CAC3BmL,iBAAkBC,EAClBC,WAAYyB,EACZ7L,KAAM8L,IAOR,GAHAjB,EAAWgB,GAAcJ,GAGpBzB,GAAkByB,EAAUK,GAAa,CAC5C,IAAIN,EAAiBM,EAAaL,EAElC,IAAIR,EADeT,EAAQ,EAAIO,EAAmBD,EAElD,KAAOG,GAAS,GAAKA,EAAQd,EAAsBzN,QAAQ,CACzD,MAAMwO,EAAWL,EAAWI,GAC5B/G,GAAmB,MAAZgH,EAAkB,6CAAF3J,OAA+C0J,IACtE,MACMQ,EAAW1M,GAAY,CAC3BmL,iBAAkBC,EAClBC,WAAYa,EACZjL,KAJiBkL,EAAWM,IAU9B,GAJKxB,GAAkBkB,EAAUO,KAC/BD,GAAkBC,EAAWP,EAC7BL,EAAWI,GAASQ,GAElBzB,GAAkBwB,EAAgB,GACpC,MAEEhB,EAAQ,EACVS,IAEAA,GAEJ,CACF,CACF,CAUA,OAAKjB,GALaa,EAAWkB,QAAO,CAACC,EAAOhM,IAASA,EAAOgM,GAAO,GAKjC,KAQ3BnB,EAJEF,CAKX,CAEA,SAASsB,GAAmBC,GAIzB,IAJ0B,OAC3BC,EAAM,YACNC,EAAW,aACX1B,GACDwB,EACKG,EAAiB,EACjBC,EAAiB,IACjBC,EAAe,EACfC,EAAe,EACnB,MAAMC,EAAa/B,EAAa,GAChCxG,GAAqB,MAAduI,EAAoB,wBAG3BL,EAAYhG,SAAQ,CAAC5G,EAAWyL,KAC9B,MAAM,YACJ7L,GACEI,GACE,QACJ9B,EAAU,IAAG,QACbC,EAAU,GACRyB,EACA6L,IAAUwB,GACZJ,EAAiB1O,EACjB2O,EAAiB5O,IAEjB6O,GAAgB5O,EAChB6O,GAAgB9O,EAClB,IAKF,MAAO,CACLgP,SAJe9E,KAAKyC,IAAIiC,EAAgB,IAAMC,GAK9CI,SAJe/E,KAAKgF,IAAIP,EAAgB,IAAMG,GAK9CK,SAJeV,EAAOM,GAM1B,CAEA,SAASK,GAAgCnO,GAA2B,IAAlBoO,EAAKtQ,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG0E,SACxD,OAAO6L,MAAMC,KAAKF,EAAMG,iBAAiB,sDAAD3L,OAAuD5C,EAAO,OACxG,CAEA,SAASwO,GAA4BxO,EAASnB,GAC5C,MACMyN,EADU6B,GAAgCnO,EADKlC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG0E,UAElCiM,WAAUC,GAAUA,EAAOC,aAAa,iCAAmC9P,IACjG,OAAiB,OAAVyN,QAA4B,IAAVA,EAAmBA,EAAQ,IACtD,CAEA,SAASsC,GAAsB5O,EAAS6O,EAAcC,GACpD,MAAMxC,EAAQkC,GAA4BxO,EAAS6O,EAAcC,GACjE,OAAgB,MAATxC,EAAgB,CAACA,EAAOA,EAAQ,GAAK,EAAE,GAAI,EACpD,CAEA,SAASyC,GAAqBlQ,GAA4B,IAAxBmQ,EAAWlR,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG0E,SAC9C,IAAIyM,EAEJ,GAAID,aAAuBxH,cAAgC,OAAhBwH,QAAwC,IAAhBA,GAAuE,QAApCC,EAAWD,EAAYE,eAAkC,IAAbD,OAAtD,EAAqFA,EAASE,eAAiBtQ,EACzM,OAAOmQ,EAIT,MAAMrH,EAAUqH,EAAYI,cAAc,2CAADxM,OAA4C/D,EAAE,OACvF,OAAI8I,GAGG,IACT,CAEA,SAAS0H,GAAuBxQ,GAC9B,MAAM8I,GADiC7J,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG0E,UACpB4M,cAAc,iCAADxM,OAAkC/D,EAAE,OACvE,OAAI8I,GAGG,IACT,CAcA,SAAS2H,GAAmCC,GAQzC,IAR0C,mBAC3CC,EAAkB,eAClBC,EAAc,QACdzP,EAAO,OACPwN,EAAM,eACNkC,EAAc,kBACdZ,EAAiB,UACjBa,GACDJ,EACCtS,EAAO,CACL2S,iCAAiC,IAEnCnS,GAA0B,KACxB,IAAKqR,EACH,OAEF,MAAMe,EAAuB1B,GAAgCnO,EAAS8O,GACtE,IAAK,IAAIxC,EAAQ,EAAGA,EAAQoD,EAAe3R,OAAS,EAAGuO,IAAS,CAC9D,MAAM,SACJyB,EAAQ,SACRC,EAAQ,SACRE,GACEZ,GAAoB,CACtBE,SACAC,YAAaiC,EACb3D,aAAc,CAACO,EAAOA,EAAQ,KAE1BwD,EAAsBD,EAAqBvD,GACjD,GAA2B,MAAvBwD,OAAoC,CACtC,MAAMjP,EAAY6O,EAAepD,GACjC/G,GAAO1E,EAAW,kCAAF+B,OAAoC0J,EAAK,MACzDwD,EAAoBC,aAAa,gBAAiBlP,EAAUhC,IAC5DiR,EAAoBC,aAAa,gBAAiB,GAAK9G,KAAK+G,MAAMjC,IAClE+B,EAAoBC,aAAa,gBAAiB,GAAK9G,KAAK+G,MAAMhC,IAClE8B,EAAoBC,aAAa,gBAA6B,MAAZ7B,EAAmB,GAAKjF,KAAK+G,MAAM9B,GAAY,GACnG,CACF,CACA,MAAO,KACL2B,EAAqBpI,SAAQ,CAACqI,EAAqBxD,KACjDwD,EAAoBG,gBAAgB,iBACpCH,EAAoBG,gBAAgB,iBACpCH,EAAoBG,gBAAgB,iBACpCH,EAAoBG,gBAAgB,gBAAgB,GACpD,CACH,GACA,CAACjQ,EAASwN,EAAQkC,EAAgBZ,IACrCjS,GAAU,KACR,IAAKiS,EACH,OAEF,MAAMoB,EAAcT,EAAetR,QACnCoH,GAAO2K,EAAa,0BACpB,MAAM,eACJR,GACEQ,EAEJ3K,GAAuB,MADFwJ,GAAqB/O,EAAS8O,GACtB,0BAAFlM,OAA4B5C,EAAO,MAC9D,MAAMmQ,EAAUhC,GAAgCnO,EAAS8O,GACzDvJ,GAAO4K,EAAS,yCAAFvN,OAA2C5C,EAAO,MAChE,MAAMoQ,EAAmBD,EAAQE,KAAI3B,IACnC,MAAM4B,EAAW5B,EAAOC,aAAa,+BACrCpJ,GAAO+K,EAAU,oDACjB,MAAOC,EAAUC,GA1EvB,SAAiCxQ,EAASsQ,EAAU7C,GAA+B,IAAlBW,EAAKtQ,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG0E,SACvE,IAAIiO,EAAuBC,EAAoBC,EAAiBC,EAChE,MAAMlC,EAASW,GAAuBiB,EAAUlC,GAC1C+B,EAAUhC,GAAgCnO,EAASoO,GACnD9B,EAAQoC,EAASyB,EAAQU,QAAQnC,IAAW,EAGlD,MAAO,CAF6J,QAAlJ+B,EAAsE,QAA7CC,EAAqBjD,EAAYnB,UAA2C,IAAvBoE,OAAgC,EAASA,EAAmB7R,UAA0C,IAA1B4R,EAAmCA,EAAwB,KACxF,QAA9HE,EAA8D,QAA3CC,EAAenD,EAAYnB,EAAQ,UAAiC,IAAjBsE,OAA0B,EAASA,EAAa/R,UAAoC,IAApB8R,EAA6BA,EAAkB,KAExM,CAkEkCG,CAAwB9Q,EAASsQ,EAAUZ,EAAgBZ,GACvF,GAAgB,MAAZyB,GAA+B,MAAXC,EACtB,MAAO,OAET,MAAMO,EAAYjO,IAChB,IAAIA,EAAMkO,iBAGV,OAAQlO,EAAMpH,KACZ,IAAK,QACH,CACEoH,EAAMkE,iBACN,MAAMsF,EAAQoD,EAAejB,WAAU5N,GAAaA,EAAUhC,KAAO0R,IACrE,GAAIjE,GAAS,EAAG,CACd,MAAMzL,EAAY6O,EAAepD,GACjC/G,GAAO1E,EAAW,iCAAF+B,OAAmC0J,IACnD,MAAMjL,EAAOmM,EAAOlB,IACd,cACJ7N,EAAgB,EAAC,YACjBC,EAAW,QACXM,EAAU,GACR6B,EAAUJ,YACd,GAAY,MAARY,GAAgB3C,EAAa,CAC/B,MAAMwN,EAAaP,GAAoB,CACrCE,MAAOR,GAAkBhK,EAAM5C,GAAiBO,EAAUP,EAAgBA,EAAgB4C,EAC1FyK,cAAe0B,EACfjC,iBAAkBmE,EAAeW,KAAIxP,GAAaA,EAAUJ,cAC5DsL,aAAc6C,GAAsB5O,EAASsQ,EAAUxB,GACvD9C,WAAYwB,EACZvB,QAAS,aAEPuB,IAAWtB,GACbyD,EAAUzD,EAEd,CACF,CACA,KACF,EACJ,EAGF,OADAwC,EAAOrE,iBAAiB,UAAW0G,GAC5B,KACLrC,EAAOxE,oBAAoB,UAAW6G,EAAU,CACjD,IAEH,MAAO,KACLX,EAAiB3I,SAAQwJ,GAAmBA,KAAkB,CAC/D,GACA,CAACnC,EAAmBU,EAAoBC,EAAgBzP,EAASwN,EAAQkC,EAAgBC,GAC9F,CAEA,SAASuB,GAASC,EAAQC,GACxB,GAAID,EAAOpT,SAAWqT,EAAOrT,OAC3B,OAAO,EAET,IAAK,IAAIuO,EAAQ,EAAGA,EAAQ6E,EAAOpT,OAAQuO,IACzC,GAAI6E,EAAO7E,KAAW8E,EAAO9E,GAC3B,OAAO,EAGX,OAAO,CACT,CAEA,SAAS+E,GAA6BxH,EAAW/G,GAC/C,MAAMwO,EAA6B,eAAdzH,GACf,EACJzG,EAAC,EACDE,GACEH,EAA0BL,GAC9B,OAAOwO,EAAelO,EAAIE,CAC5B,CAsBA,SAASiO,GAAyBzO,EAAO+L,EAAchF,EAAW2H,EAAkBC,EAAkB3C,GACpG,GAAIjM,EAAUC,GAAQ,CACpB,MAAMwO,EAA6B,eAAdzH,EACrB,IAAIgC,EAAQ,EAEVA,EADE/I,EAAM4O,SACA,IACqB,MAApBD,EACDA,EAEA,GAEV,IAAIE,EAAW,EACf,OAAQ7O,EAAMpH,KACZ,IAAK,YACHiW,EAAWL,EAAe,EAAIzF,EAC9B,MACF,IAAK,YACH8F,EAAWL,GAAgBzF,EAAQ,EACnC,MACF,IAAK,aACH8F,EAAWL,EAAezF,EAAQ,EAClC,MACF,IAAK,UACH8F,EAAWL,EAAe,GAAKzF,EAC/B,MACF,IAAK,MACH8F,EAAW,IACX,MACF,IAAK,OACHA,GAAY,IAGhB,OAAOA,CACT,CACE,OAAwB,MAApBH,EACK,EAvDb,SAAuC1O,EAAO+L,EAAchF,EAAW2H,EAAkB1C,GACvF,MAAMwC,EAA6B,eAAdzH,EACf+H,EAAgBvC,GAAuBR,EAAcC,GAC3DvJ,GAAOqM,EAAe,0CAAFhP,OAA4CiM,EAAY,MAC5E,MAAM7O,EAAU4R,EAAcjD,aAAa,uBAC3CpJ,GAAOvF,EAAS,mDAChB,IAAI,sBACF6R,GACEL,EACJ,MAAMM,EAAiBT,GAA6BxH,EAAW/G,GACzDiP,EAAehD,GAAqB/O,EAAS8O,GACnDvJ,GAAOwM,EAAc,kCAAFnP,OAAoC5C,EAAO,MAC9D,MAAMgS,EAAYD,EAAahK,wBAI/B,OAFqB+J,EAAiBD,IADZP,EAAeU,EAAUjO,MAAQiO,EAAUhO,QAET,GAE9D,CAwCWiO,CAA8BnP,EAAO+L,EAAchF,EAAW2H,EAAkB1C,EAE3F,CA4CA,SAASoD,GAAmBzE,EAAaD,EAAQ2E,GAC/C3E,EAAO/F,SAAQ,CAACpG,EAAMiL,KACpB,MAAMzL,EAAY4M,EAAYnB,GAC9B/G,GAAO1E,EAAW,kCAAF+B,OAAoC0J,IACpD,MAAM,UACJ9L,EAAS,YACTC,EACA5B,GAAIyB,GACFO,GACE,cACJpC,EAAgB,EAAC,YACjBC,GACE+B,EACE2R,EAAmBD,EAA6B7R,GACtD,GAAwB,MAApB8R,GAA4B/Q,IAAS+Q,EAAkB,CACzDD,EAA6B7R,GAAWe,EACxC,MAAM,WACJpC,EAAU,SACVC,EAAQ,SACRC,GACEqB,EACArB,GACFA,EAASkC,EAAM+Q,GAEb1T,IAAgBO,GAAcC,MAC5BA,GAAiC,MAApBkT,IAA4BhH,GAAoBgH,EAAkB3T,IAAoB2M,GAAoB/J,EAAM5C,IAC/HS,KAEED,GAAmC,MAApBmT,GAA6BhH,GAAoBgH,EAAkB3T,KAAmB2M,GAAoB/J,EAAM5C,IACjIQ,IAGN,IAEJ,CAEA,SAASoT,GAAe7J,EAAGC,GACzB,GAAID,EAAEzK,SAAW0K,EAAE1K,OACjB,OAAO,EAEP,IAAK,IAAIuO,EAAQ,EAAGA,EAAQ9D,EAAEzK,OAAQuO,IACpC,GAAI9D,EAAE8D,IAAU7D,EAAE6D,GAChB,OAAO,EAIb,OAAO,CACT,CAsDA,SAASgG,GAAyBC,GAChC,IACE,GAA4B,qBAAjBC,aAST,MAAM,IAAI7S,MAAM,kDAPhB4S,EAAcE,QAAUC,GACfF,aAAaC,QAAQC,GAE9BH,EAAcI,QAAU,CAACD,EAAME,KAC7BJ,aAAaG,QAAQD,EAAME,EAAM,CAKvC,CAAE,MAAO9H,GACPD,QAAQC,MAAMA,GACdyH,EAAcE,QAAU,IAAM,KAC9BF,EAAcI,QAAU,MAC1B,CACF,CAEA,SAASE,GAAiBC,GACxB,MAAO,0BAAPlQ,OAAiCkQ,EACnC,CAMA,SAASC,GAAYC,GACnB,OAAOA,EAAO3C,KAAI4C,IAChB,MAAM,YACJxS,EAAW,GACX5B,EAAE,cACF6B,EAAa,MACbtB,GACE6T,EACJ,OAAIvS,EACK7B,EAEAO,EAAQ,GAAHwD,OAAMxD,EAAK,KAAAwD,OAAIsQ,KAAKC,UAAU1S,IAAiByS,KAAKC,UAAU1S,EAC5E,IACC2S,MAAK,CAAC5K,EAAGC,IAAMD,EAAEuE,cAActE,KAAI4K,KAAK,IAC7C,CACA,SAASC,GAA8BR,EAAYS,GACjD,IACE,MAAMC,EAAgBX,GAAiBC,GACjCW,EAAaF,EAAQd,QAAQe,GACnC,GAAIC,EAAY,CACd,MAAMC,EAASR,KAAKS,MAAMF,GAC1B,GAAsB,kBAAXC,GAAiC,MAAVA,EAChC,OAAOA,CAEX,CACF,CAAE,MAAO5I,GAAQ,CACjB,OAAO,IACT,CAOA,SAAS8I,GAAoBd,EAAYE,EAAQa,EAA0BC,EAAOP,GAChF,IAAIQ,EACJ,MAAMP,EAAgBX,GAAiBC,GACjCkB,EAAWjB,GAAYC,GACvBjR,EAA0F,QAAjFgS,EAAyBT,GAA8BR,EAAYS,UAAiD,IAA3BQ,EAAoCA,EAAyB,CAAC,EACtKhS,EAAMiS,GAAY,CAChBC,cAAeC,OAAOC,YAAYN,EAAyBO,WAC3D5G,OAAQsG,GAEV,IACEP,EAAQZ,QAAQa,EAAeN,KAAKC,UAAUpR,GAChD,CAAE,MAAO+I,GACPD,QAAQC,MAAMA,EAChB,CACF,CAGA,SAASuJ,GAAwBC,GAG9B,IAFD9G,OAAQxB,EAAU,iBAClBT,GACD+I,EACC,MAAMpI,EAAa,IAAIF,GACjBuI,EAAsBrI,EAAWkB,QAAO,CAACoH,EAAarW,IAAYqW,EAAcrW,GAAS,GAG/F,GAAI+N,EAAWnO,SAAWwN,EAAiBxN,OACzC,MAAM4B,MAAM,WAADiD,OAAY2I,EAAiBxN,OAAM,mBAAA6E,OAAkBsJ,EAAWmE,KAAIhP,GAAQ,GAAJuB,OAAOvB,EAAI,OAAKgS,KAAK,QACnG,IAAKhI,GAAkBkJ,EAAqB,KACjD,IAAK,IAAIjI,EAAQ,EAAGA,EAAQf,EAAiBxN,OAAQuO,IAAS,CAC5D,MAAMa,EAAajB,EAAWI,GAC9B/G,GAAqB,MAAd4H,EAAoB,kCAAFvK,OAAoC0J,IAC7D,MAAMQ,EAAW,IAAMyH,EAAsBpH,EAC7CjB,EAAWI,GAASQ,CACtB,CAEF,IAAI2H,EAAgB,EAGpB,IAAK,IAAInI,EAAQ,EAAGA,EAAQf,EAAiBxN,OAAQuO,IAAS,CAC5D,MAAMa,EAAajB,EAAWI,GAC9B/G,GAAqB,MAAd4H,EAAoB,kCAAFvK,OAAoC0J,IAC7D,MAAMQ,EAAW1M,GAAY,CAC3BmL,mBACAE,WAAYa,EACZjL,KAAM8L,IAEJA,GAAcL,IAChB2H,GAAiBtH,EAAaL,EAC9BZ,EAAWI,GAASQ,EAExB,CAIA,IAAKzB,GAAkBoJ,EAAe,GACpC,IAAK,IAAInI,EAAQ,EAAGA,EAAQf,EAAiBxN,OAAQuO,IAAS,CAC5D,MAAMC,EAAWL,EAAWI,GAC5B/G,GAAmB,MAAZgH,EAAkB,kCAAF3J,OAAoC0J,IAC3D,MACMQ,EAAW1M,GAAY,CAC3BmL,mBACAE,WAAYa,EACZjL,KAJiBkL,EAAWkI,IAM9B,GAAIlI,IAAaO,IACf2H,GAAiB3H,EAAWP,EAC5BL,EAAWI,GAASQ,EAGhBzB,GAAkBoJ,EAAe,IACnC,KAGN,CAEF,OAAOvI,CACT,CAEA,MACMwI,GAAiB,CACrBjC,QAASC,IACPJ,GAAyBoC,IAClBA,GAAejC,QAAQC,IAEhCC,QAASA,CAACD,EAAME,KACdN,GAAyBoC,IACzBA,GAAe/B,QAAQD,EAAME,EAAM,GAGjC+B,GAAc,CAAC,EACrB,SAASC,GAA0BC,GAahC,IAbiC,WAClC/B,EAAa,KAAI,SACjBxU,EACAC,UAAWC,EAAqB,GAAE,UAClCqL,EAAS,aACTjL,EACAC,GAAIC,EAAc,KAAI,SACtBgW,EAAW,KAAI,iBACfrD,EAAmB,KAAI,QACvB8B,EAAUmB,GACVrV,MAAOC,EACPC,QAASC,EAAO,SACbC,GACJoV,EACC,MAAM7U,EAAUpC,EAAYkB,GACtBiW,EAAuB9X,EAAO,OAC7B+X,EAAWC,GAAgB/X,EAAS,OACpCsQ,EAAQmC,GAAazS,EAAS,IAC/BgY,EAAkCjY,EAAO,CAAC,GAC1CkY,EAA6BlY,EAAO,IAAIsJ,KACxC6O,EAAenY,EAAO,GACtBuS,EAAqBvS,EAAO,CAChC6V,aACAjJ,YACAmL,YACAnW,GAAImB,EACJyR,mBACAqD,WACAvB,YAEI9D,EAAiBxS,EAAO,CAC5BuQ,SACAkC,eAAgB,GAChB2F,uBAAuB,IAEzBpY,EAAO,CACLqY,yBAAyB,EACzBC,+BAA+B,EAC/BC,aAAc,KAEhB1Y,EAAoB8B,GAAc,KAAM,CACtCoC,MAAOA,IAAMwO,EAAmBrR,QAAQU,GACxC4W,UAAWA,KACT,MAAM,OACJjI,GACEiC,EAAetR,QACnB,OAAOqP,CAAM,EAEfmC,UAAW+F,IACT,MAAM,SACJZ,GACEtF,EAAmBrR,SAErBqP,OAAQxB,EAAU,eAClB0D,GACED,EAAetR,QACbwX,EAAatB,GAAyB,CAC1C7G,OAAQkI,EACRnK,iBAAkBmE,EAAeW,KAAIxP,GAAaA,EAAUJ,gBAEzDyQ,GAASlF,EAAY2J,KACxBhG,EAAUgG,GACVlG,EAAetR,QAAQqP,OAASmI,EAC5Bb,GACFA,EAASa,GAEXzD,GAAmBxC,EAAgBiG,EAAYT,EAAgC/W,SACjF,KAEA,IACJV,GAA0B,KACxB+R,EAAmBrR,QAAQ2U,WAAaA,EACxCtD,EAAmBrR,QAAQ0L,UAAYA,EACvC2F,EAAmBrR,QAAQ6W,UAAYA,EACvCxF,EAAmBrR,QAAQU,GAAKmB,EAChCwP,EAAmBrR,QAAQ2W,SAAWA,EACtCtF,EAAmBrR,QAAQoV,QAAUA,CAAO,IAE9CjE,GAAoC,CAClCE,qBACAC,iBACAzP,UACAwN,SACAkC,eAAgBD,EAAetR,QAAQuR,eACvCC,YACAb,kBAAmBiG,EAAqB5W,UAE1CtB,GAAU,KACR,MAAM,eACJ6S,GACED,EAAetR,QAGnB,GAAI2U,EAAY,CACd,GAAsB,IAAlBtF,EAAOzP,QAAgByP,EAAOzP,SAAW2R,EAAe3R,OAC1D,OAEF,IAAI6X,EAAgBjB,GAAY7B,GAGX,MAAjB8C,IACFA,EA9QR,SAAkBC,GAA2B,IAAjBC,EAAUhY,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,GACnCiY,EAAY,KAShB,OARe,WAAa,QAAAC,EAAAlY,UAAAC,OAATkY,EAAI,IAAA5H,MAAA2H,GAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAAJD,EAAIC,GAAApY,UAAAoY,GACH,OAAdH,GACFI,aAAaJ,GAEfA,EAAYK,YAAW,KACrBP,KAAYI,EAAK,GAChBH,EACL,CAEF,CAmQwBO,CAASzC,GAjHO,KAkHhCe,GAAY7B,GAAc8C,GAK5B,MAAMU,EAAuB,IAAI5G,GAC3B6G,EAAiC,IAAIhQ,IAAI4O,EAA2BhX,SAC1EyX,EAAc9C,EAAYwD,EAAsBC,EAAgC/I,EAAQ+F,EAC1F,IACC,CAACT,EAAYtF,EAAQ+F,IAGxB1W,GAAU,SAIV,MAAM+C,EAAgBjD,GAAYkE,IAChC,MAAM,SACJiU,GACEtF,EAAmBrR,SAErBqP,OAAQxB,EAAU,eAClB0D,GACED,EAAetR,QACnB,GAAI0C,EAAUJ,YAAY/B,YAAa,CACrC,MAAM8M,EAAwBkE,EAAeW,KAAIxP,GAAaA,EAAUJ,eAClE,cACJhC,EAAgB,EAAC,UACjB+X,EAAS,aACTzK,GACE0K,GAAgB/G,EAAgB7O,EAAWmL,GAE/C,GADAzG,GAAoB,MAAbiR,EAAmB,mCAAF5T,OAAqC/B,EAAUhC,GAAE,OACpEuM,GAAoBoL,EAAW/X,GAAgB,CAGlD0W,EAA2BhX,QAAQuL,IAAI7I,EAAUhC,GAAI2X,GACrD,MAEMtK,EAAaP,GAAoB,CACrCE,MAHkB6K,GAAmBhH,EAAgB7O,KAAe6O,EAAe3R,OAAS,EAClEyY,EAAY/X,EAAgBA,EAAgB+X,EAGtE1K,cAAeE,EACfT,iBAAkBC,EAClBO,eACAC,aACAC,QAAS,mBAENoG,GAAerG,EAAYE,KAC9ByD,EAAUzD,GACVuD,EAAetR,QAAQqP,OAAStB,EAC5B4I,GACFA,EAAS5I,GAEXgG,GAAmBxC,EAAgBxD,EAAYgJ,EAAgC/W,SAEnF,CACF,IACC,IAGG0B,EAAclD,GAAYkE,IAC9B,MAAM,SACJiU,GACEtF,EAAmBrR,SAErBqP,OAAQxB,EAAU,eAClB0D,GACED,EAAetR,QACnB,GAAI0C,EAAUJ,YAAY/B,YAAa,CACrC,MAAM8M,EAAwBkE,EAAeW,KAAIxP,GAAaA,EAAUJ,eAClE,cACJhC,EAAgB,EAAC,UACjB+X,EAAY,EAAC,QACbxX,EAAU,EAAC,aACX+M,GACE0K,GAAgB/G,EAAgB7O,EAAWmL,GAC/C,GAAIZ,GAAoBoL,EAAW/X,GAAgB,CAEjD,MAAMkY,EAAgBxB,EAA2BhX,QAAQyY,IAAI/V,EAAUhC,IACjEgY,EAA4B,MAAjBF,GAAyBA,GAAiB3X,EAAU2X,EAAgB3X,EAG/EkN,EAAaP,GAAoB,CACrCE,MAHkB6K,GAAmBhH,EAAgB7O,KAAe6O,EAAe3R,OAAS,EAClEyY,EAAYK,EAAWA,EAAWL,EAG5D1K,cAAeE,EACfT,iBAAkBC,EAClBO,eACAC,aACAC,QAAS,mBAENoG,GAAerG,EAAYE,KAC9ByD,EAAUzD,GACVuD,EAAetR,QAAQqP,OAAStB,EAC5B4I,GACFA,EAAS5I,GAEXgG,GAAmBxC,EAAgBxD,EAAYgJ,EAAgC/W,SAEnF,CACF,IACC,IAGG2B,EAAenD,GAAYkE,IAC/B,MAAM,OACJ2M,EAAM,eACNkC,GACED,EAAetR,SACb,UACJqY,GACEC,GAAgB/G,EAAgB7O,EAAW2M,GAE/C,OADAjI,GAAoB,MAAbiR,EAAmB,mCAAF5T,OAAqC/B,EAAUhC,GAAE,MAClE2X,CAAS,GACf,IAGGzW,EAAgBpD,GAAY,CAACkE,EAAWlC,KAC5C,MAAM,eACJ+Q,GACED,EAAetR,QACbsN,EAAaiL,GAAmBhH,EAAgB7O,GACtD,OAvaJ,SAAiCiW,GAO9B,IAP+B,YAChCnY,EAAW,UACXqW,EAAS,OACTxH,EAAM,UACN3M,EAAS,WACT4K,EAAU,UACVsL,EAAY,GACbD,EACC,MAAMzV,EAAOmM,EAAO/B,GACpB,IAAIlK,EAWJ,OAPEA,EAHU,MAARF,OAGwBrD,GAAfW,EAA2BA,EAAY6C,QAAQuV,GAAa,IACzC,IAArBlW,EAAU9C,OAER,IAEAsD,EAAKG,QAAQuV,GAEnB,CACLC,UAAW,EACXzV,WACA0V,WAAY,EAEZC,SAAU,SAGVC,cAA6B,OAAdnC,EAAqB,YAAShX,EAEjD,CAyYWoZ,CAAyB,CAC9BzY,cACAqW,YACAxH,SACA3M,UAAW6O,EACXjE,cACA,GACD,CAACuJ,EAAWxH,IAGTvN,EAAmBtD,GAAYkE,IACnC,MAAM,OACJ2M,EAAM,eACNkC,GACED,EAAetR,SACb,cACJM,EAAgB,EAAC,YACjBC,EAAW,UACX8X,GACEC,GAAgB/G,EAAgB7O,EAAW2M,GAE/C,OADAjI,GAAoB,MAAbiR,EAAmB,mCAAF5T,OAAqC/B,EAAUhC,GAAE,OAClD,IAAhBH,GAAwB0M,GAAoBoL,EAAW/X,EAAc,GAC3E,IAGG4Y,EAAkB1a,GAAYkE,IAClC,MAAM,OACJ2M,EAAM,eACNkC,GACED,EAAetR,SACb,cACJM,EAAgB,EAAC,YACjBC,EAAW,UACX8X,GACEC,GAAgB/G,EAAgB7O,EAAW2M,GAE/C,OADAjI,GAAoB,MAAbiR,EAAmB,mCAAF5T,OAAqC/B,EAAUhC,GAAE,OACjEH,GAAesM,GAAoBwL,EAAW/X,GAAiB,CAAC,GACvE,IACG0B,EAAgBxD,GAAYkE,IAChC,MAAM,eACJ6O,GACED,EAAetR,QACnBuR,EAAe9J,KAAK/E,GACpB6O,EAAe0D,MAAK,CAACkE,EAAQC,KAC3B,MAAMC,EAASF,EAAOlY,MAChBqY,EAASF,EAAOnY,MACtB,OAAc,MAAVoY,GAA4B,MAAVC,EACb,EACY,MAAVD,GACD,EACW,MAAVC,EACF,EAEAD,EAASC,CAClB,IAEFhI,EAAetR,QAAQkX,uBAAwB,CAAI,GAClD,IAIH5X,GAA0B,KACxB,GAAIgS,EAAetR,QAAQkX,sBAAuB,CAChD5F,EAAetR,QAAQkX,uBAAwB,EAC/C,MAAM,WACJvC,EAAU,SACVgC,EAAQ,QACRvB,GACE/D,EAAmBrR,SAErBqP,OAAQxB,EAAU,eAClB0D,GACED,EAAetR,QAInB,IAAIuX,EAAe,KACnB,GAAI5C,EAAY,CACd,MAAM/Q,EA5Yd,SAA6B+Q,EAAYE,EAAQO,GAC/C,IAAImE,EAAuBC,EAG3B,OAA+C,QAAvCA,GAFuF,QAAhFD,EAAwBpE,GAA8BR,EAAYS,UAAgD,IAA1BmE,EAAmCA,EAAwB,CAAC,GAClJ3E,GAAYC,WAC8C,IAApB2E,EAA6BA,EAAkB,IACxG,CAuYsBC,CAAoB9E,EAAYpD,EAAgB6D,GAC1DxR,IACFoT,EAA2BhX,QAAU,IAAIoI,IAAI2N,OAAOE,QAAQrS,EAAMkS,gBAClEyB,EAAe3T,EAAMyL,OAEzB,CACoB,MAAhBkI,IACFA,EA1lBR,SAAqCmC,GAElC,IAFmC,eACpCnI,GACDmI,EACC,MAAMrK,EAASa,MAAMqB,EAAe3R,QAC9ByN,EAAwBkE,EAAeW,KAAIxP,GAAaA,EAAUJ,cACxE,IAAIqX,EAAqB,EACrBrD,EAAgB,IAGpB,IAAK,IAAInI,EAAQ,EAAGA,EAAQoD,EAAe3R,OAAQuO,IAAS,CAC1D,MAAMf,EAAmBC,EAAsBc,GAC/C/G,GAAOgG,EAAkB,yCAAF3I,OAA2C0J,IAClE,MAAM,YACJ3N,GACE4M,EACe,MAAf5M,IACFmZ,IACAtK,EAAOlB,GAAS3N,EAChB8V,GAAiB9V,EAErB,CAGA,IAAK,IAAI2N,EAAQ,EAAGA,EAAQoD,EAAe3R,OAAQuO,IAAS,CAC1D,MAAMf,EAAmBC,EAAsBc,GAC/C/G,GAAOgG,EAAkB,yCAAF3I,OAA2C0J,IAClE,MAAM,YACJ3N,GACE4M,EACJ,GAAmB,MAAf5M,EACF,SAEF,MACM0C,EAAOoT,GADc/E,EAAe3R,OAAS+Z,GAEnDA,IACAtK,EAAOlB,GAASjL,EAChBoT,GAAiBpT,CACnB,CACA,OAAOmM,CACT,CAmjBuBuK,CAA6B,CAC1CrI,oBAMJ,MAAMxD,EAAamI,GAAyB,CAC1C7G,OAAQkI,EACRnK,iBAAkBmE,EAAeW,KAAIxP,GAAaA,EAAUJ,gBAEzDyQ,GAASlF,EAAYE,KACxByD,EAAUzD,GACVuD,EAAetR,QAAQqP,OAAStB,EAC5B4I,GACFA,EAAS5I,GAEXgG,GAAmBxC,EAAgBxD,EAAYgJ,EAAgC/W,SAEnF,KAIFV,GAA0B,KACxB,MAAMyS,EAAcT,EAAetR,QACnC,MAAO,KACL+R,EAAY1C,OAAS,EAAE,CACxB,GACA,IACH,MAAMwK,EAAuBrb,GAAYkS,GAChC,SAAuB/L,GAC5BA,EAAMkE,iBACN,MAAM8H,EAAoBiG,EAAqB5W,QAC/C,IAAK2Q,EACH,MAAO,IAAM,KAEf,MAAM,UACJjF,EAAS,UACTmL,EACAnW,GAAImB,EAAO,iBACXyR,EAAgB,SAChBqD,GACEtF,EAAmBrR,SAErBqP,OAAQxB,EAAU,eAClB0D,GACED,EAAetR,SACb,cACJ2N,GACgB,OAAdkJ,QAAoC,IAAdA,EAAuBA,EAAY,CAAC,EACxDjJ,EAAe6C,GAAsB5O,EAAS6O,EAAcC,GAClE,IAAIjD,EAAQ0F,GAAyBzO,EAAO+L,EAAchF,EAAWmL,EAAWvD,EAAkB3C,GAClG,GAAc,IAAVjD,EACF,OAIF,MAAMyF,EAA6B,eAAdzH,EACA,QAAjBrH,SAASyV,KAAiB3G,IAC5BzF,GAASA,GAEX,MACMK,EAAaP,GAAoB,CACrCE,QACAC,cAAiC,OAAlBA,QAA4C,IAAlBA,EAA2BA,EAAgBE,EACpFT,iBAJuBmE,EAAeW,KAAIxP,GAAaA,EAAUJ,cAKjEsL,eACAC,aACAC,QAASpJ,EAAUC,GAAS,WAAa,mBAErCoV,GAAiB7F,GAAerG,EAAYE,IAI9ClJ,EAAaF,IAAUI,EAAaJ,KAIlCsS,EAAajX,SAAW0N,IAC1BuJ,EAAajX,QAAU0N,EAUrBtC,GAA2BsF,EATxBqJ,EASsC,EANrC5G,EACuCzF,EAAQ,EAAIxJ,EAA0BC,EAEtCuJ,EAAQ,EAAI3J,EAAwBE,IAOjF8V,IACFvI,EAAUzD,GACVuD,EAAetR,QAAQqP,OAAStB,EAC5B4I,GACFA,EAAS5I,GAEXgG,GAAmBxC,EAAgBxD,EAAYgJ,EAAgC/W,SAEnF,GACC,IAGGiC,EAAczD,GAAY,CAACkE,EAAWsX,KAC1C,MAAM,SACJrD,GACEtF,EAAmBrR,SAErBqP,OAAQxB,EAAU,eAClB0D,GACED,EAAetR,QACbqN,EAAwBkE,EAAeW,KAAIxP,GAAaA,EAAUJ,eAClE,UACJ+V,EAAS,aACTzK,GACE0K,GAAgB/G,EAAgB7O,EAAWmL,GAC/CzG,GAAoB,MAAbiR,EAAmB,mCAAF5T,OAAqC/B,EAAUhC,GAAE,MACzE,MAEMqN,EAAaP,GAAoB,CACrCE,MAHkB6K,GAAmBhH,EAAgB7O,KAAe6O,EAAe3R,OAAS,EAClEyY,EAAY2B,EAAkBA,EAAkB3B,EAG1E1K,cAAeE,EACfT,iBAAkBC,EAClBO,eACAC,aACAC,QAAS,mBAENoG,GAAerG,EAAYE,KAC9ByD,EAAUzD,GACVuD,EAAetR,QAAQqP,OAAStB,EAC5B4I,GACFA,EAAS5I,GAEXgG,GAAmBxC,EAAgBxD,EAAYgJ,EAAgC/W,SACjF,GACC,IACG+B,EAA6BvD,GAAY,CAACkE,EAAWD,KACzD,MAAM,OACJ4M,EAAM,eACNkC,GACED,EAAetR,SAEjBM,cAAe2Z,EAAoB,EACnC1Z,YAAa2Z,GACXzX,GAEFnC,cAAe6Z,EAAoB,EACnC5Z,YAAa6Z,EACbxZ,QAASyZ,EAAc,IACvBxZ,QAASyZ,EAAc,GACrB5X,EAAUJ,aAEZ+V,UAAWG,GACTF,GAAgB/G,EAAgB7O,EAAW2M,GAC1B,MAAjBmJ,IAIA0B,GAAmBE,GAAmBnN,GAAoBuL,EAAeyB,GACtEhN,GAAoBgN,EAAmBE,IAC1ClY,EAAYS,EAAWyX,GAEhB3B,EAAgB8B,EACzBrY,EAAYS,EAAW4X,GACd9B,EAAgB6B,GACzBpY,EAAYS,EAAW2X,GACzB,GACC,CAACpY,IACEsY,EAAgB/b,GAAY,CAACkS,EAAc/L,KAC/C,MAAM,UACJ+G,GACE2F,EAAmBrR,SACjB,OACJqP,GACEiC,EAAetR,QACnB,IAAK4W,EAAqB5W,QACxB,OAEF,MAAMyT,EAAgBvC,GAAuBR,EAAckG,EAAqB5W,SAChFoH,GAAOqM,EAAe,yCAAFhP,OAA2CiM,EAAY,MAC3E,MAAMgD,EAAwBR,GAA6BxH,EAAW/G,GACtEmS,EAAa,CACXpG,eACA/G,eAAgB8J,EAAc7J,wBAC9B8J,wBACA/F,cAAe0B,GACf,GACD,IACGmL,EAAehc,GAAY,KAC/BsY,EAAa,KAAK,GACjB,IACG5U,EAAkB1D,GAAYkE,IAClC,MAAM,eACJ6O,GACED,EAAetR,QACbmO,EAAQoK,GAAmBhH,EAAgB7O,GAC7CyL,GAAS,IACXoD,EAAepI,OAAOgF,EAAO,UAMtB4I,EAAgC/W,QAAQ0C,EAAUhC,IACzD4Q,EAAetR,QAAQkX,uBAAwB,EACjD,GACC,IACG3V,GAAU1C,GAAQ,KAAM,CAC5B4C,gBACAiK,YACAmL,YACAnV,cACAC,eACAC,gBACAC,UACAC,mBACAoX,kBACAnX,6BACAC,gBACA6X,uBACA5X,cACAsY,gBACAC,eACAtY,kBACAyO,kBAAmBiG,EAAqB5W,WACtC,CAACyB,EAAeoV,EAAWnL,EAAWhK,EAAaC,EAAcC,EAAeC,EAASC,EAAkBoX,EAAiBnX,EAA4BC,EAAe6X,EAAsB5X,EAAasY,EAAeC,EAActY,IACrOhB,GAAQ,CACZkF,QAAS,OACTqU,cAA6B,eAAd/O,EAA6B,MAAQ,SACpD7F,OAAQ,OACRkT,SAAU,SACVnT,MAAO,QAET,OAAOxH,EAAcgB,EAAkBsb,SAAU,CAC/CjG,MAAOlT,IACNnD,EAAciD,EAAM,IAClBC,EACHnB,WACAC,UAAWC,EACXK,GAAIC,EACJ6C,IAAKoT,EACL1V,MAAO,IACFA,MACAC,GAGL,mBAAoB,GACpB,6BAA8BuK,EAC9B,sBAAuB7J,IAE3B,CACA,MAAM8Y,GAAapc,GAAW,CAACgF,EAAOC,IAAQpF,EAAcqY,GAA4B,IACnFlT,EACH9C,aAAc+C,MAIhB,SAAS+U,GAAmBhH,EAAgB7O,GAC1C,OAAO6O,EAAejB,WAAUsK,GAAiBA,IAAkBlY,GAAakY,EAAcla,KAAOgC,EAAUhC,IACjH,CACA,SAAS4X,GAAgB/G,EAAgB7O,EAAW2M,GAClD,MAAM/B,EAAaiL,GAAmBhH,EAAgB7O,GAEhDkL,EADcN,IAAeiE,EAAe3R,OAAS,EACxB,CAAC0N,EAAa,EAAGA,GAAc,CAACA,EAAYA,EAAa,GACtF+K,EAAYhJ,EAAO/B,GACzB,MAAO,IACF5K,EAAUJ,YACb+V,YACAzK,eAEJ,CAwDA,SAASiN,GAAiBC,GAWvB,IAXwB,SACzB3a,EAAW,KACXC,UAAWC,EAAqB,GAAE,SAClC0a,GAAW,EAAK,eAChBrR,EACAhJ,GAAIC,EAAW,WACfqa,EACA9Z,MAAOC,EAAiB,CAAC,EAAC,SAC1B8Z,EAAW,EACX7Z,QAASC,EAAO,SACbC,GACJwZ,EACC,MAAMI,EAAapc,EAAO,MAGpBqc,EAAerc,EAAO,CAC1Bkc,eAEFtc,GAAU,KACRyc,EAAanb,QAAQgb,WAAaA,CAAU,IAE9C,MAAMI,EAAoB3c,EAAWW,GACrC,GAA0B,OAAtBgc,EACF,MAAM5Z,MAAM,+EAEd,MAAM,UACJkK,EAAS,QACT7J,EACAgY,qBAAsBwB,EAAmC,cACzDd,EAAa,aACbC,EAAY,kBACZ7J,GACEyK,EACE/P,EAAiB5L,EAAYkB,IAC5BiD,EAAO0X,GAAYvc,EAAS,aAC5Bwc,EAAWC,GAAgBzc,GAAS,IACpC0c,EAAeC,GAAoB3c,EAAS,MAC7CsS,EAAqBvS,EAAO,CAChC8E,UAEFtE,GAA0B,KACxB+R,EAAmBrR,QAAQ4D,MAAQA,CAAK,IAE1ClF,GAAU,KACR,GAAIqc,EACFW,EAAiB,UACZ,CACL,MAAMD,EAAgBJ,EAAoChQ,GAC1DqQ,GAAiB,IAAMD,GACzB,IACC,CAACV,EAAU1P,EAAgBgQ,IAC9B3c,GAAU,KACR,IAAIid,EAAuBC,EAC3B,GAAIb,GAA6B,MAAjBU,EACd,OAEF,MAAMjS,EAAU0R,EAAWlb,QAC3BoH,GAAOoC,EAAS,4BA4ChB,OAp1DJ,SAA8B6B,EAAgB7B,EAASkC,EAAWhC,EAAgB2C,GAChF,IAAIwP,EACJ,MAAM,cACJhQ,GACErC,EACED,EAAO,CACXmC,YACAlC,UACAE,iBACA2C,yBAEIJ,EAA6E,QAApE4P,EAAwB1T,EAAoBsQ,IAAI5M,UAAsD,IAA1BgQ,EAAmCA,EAAwB,EAItJ,OAHA1T,EAAoBoD,IAAIM,EAAeI,EAAQ,GAC/C3D,EAAyBwT,IAAIvS,GAC7BZ,KACO,WACL,IAAIoT,EACJ1T,EAAqB2T,OAAO3Q,GAC5B/C,EAAyB0T,OAAOzS,GAChC,MAAM0C,EAA8E,QAArE8P,EAAyB5T,EAAoBsQ,IAAI5M,UAAuD,IAA3BkQ,EAAoCA,EAAyB,EACzJ5T,EAAoBoD,IAAIM,EAAeI,EAAQ,GAC/CtD,KACc,IAAVsD,GACF9D,EAAoB6T,OAAOnQ,EAE/B,CACF,CA0zDWgO,CAAqBxO,EAAgB7B,EAASkC,EAAW,CAE9DxB,OAA4H,QAAnHyR,EAA2C,OAAnBjS,QAA8C,IAAnBA,OAA4B,EAASA,EAAeQ,cAA8C,IAA1ByR,EAAmCA,EAAwB,GAE/LxR,KAAuH,QAAhHyR,EAA0C,OAAnBlS,QAA8C,IAAnBA,OAA4B,EAASA,EAAeS,YAA2C,IAAzByR,EAAkCA,EAAuB,IA/C5JvP,CAACD,EAAQE,EAAU3H,KAC/C,GAAI2H,EACF,OAAQF,GACN,IAAK,OACH,CACEkP,EAAS,QACTf,EAAclP,EAAgB1G,GAC9B,MAAM,WACJqW,GACEG,EAAanb,QACbgb,GACFA,GAAW,GAEb,KACF,CACF,IAAK,OACH,CACE,MAAM,MACJpX,GACEyN,EAAmBrR,QACT,SAAV4D,GACF0X,EAAS,SAEXG,EAAc9W,GACd,KACF,CACF,IAAK,KACH,CACE2W,EAAS,SACTd,IACA,MAAM,WACJQ,GACEG,EAAanb,QACbgb,GACFA,GAAW,GAEb,KACF,OAGJM,EAAS,WACX,GAOuB,GACxB,CAAC5P,EAAWqP,EAAUrR,EAAgB2R,EAAqChQ,EAAgBoQ,EAAelB,EAAeC,IA/J9H,SAA+CyB,GAK5C,IAL6C,SAC9ClB,EAAQ,SACR5I,EAAQ,cACRsJ,EAAa,kBACb9K,GACDsL,EACCvd,GAAU,KACR,GAAIqc,GAA6B,MAAjBU,GAA8C,MAArB9K,EACvC,OAEF,MAAM8C,EAAgBvC,GAAuBiB,EAAUxB,GACvD,GAAqB,MAAjB8C,EACF,OAEF,MAAMb,EAAYjO,IAChB,IAAIA,EAAMkO,iBAGV,OAAQlO,EAAMpH,KACZ,IAAK,YACL,IAAK,YACL,IAAK,aACL,IAAK,UACL,IAAK,MACL,IAAK,OAEDoH,EAAMkE,iBACN4S,EAAc9W,GACd,MAEJ,IAAK,KACH,CACEA,EAAMkE,iBACN,MAAMhH,EAAU4R,EAAcjD,aAAa,uBAC3CpJ,GAAOvF,EAAS,kCAAF4C,OAAoC5C,EAAO,MACzD,MAAMmQ,EAAUhC,GAAgCnO,EAAS8O,GACnDxC,EAAQkC,GAA4BxO,EAASsQ,EAAUxB,GAC7DvJ,GAAiB,OAAV+G,EAAgB,mCAAF1J,OAAqC0N,EAAQ,MAE/CH,EADDrN,EAAM4O,SAAWpF,EAAQ,EAAIA,EAAQ,EAAI6D,EAAQpS,OAAS,EAAIuO,EAAQ,EAAI6D,EAAQpS,OAASuO,EAAQ,EAAI,GAE9G+N,QACX,KACF,EACJ,EAGF,OADAzI,EAAcvH,iBAAiB,UAAW0G,GACnC,KACLa,EAAc1H,oBAAoB,UAAW6G,EAAU,CACxD,GACA,CAACjC,EAAmBoK,EAAU5I,EAAUsJ,GAC7C,CA8GEU,CAAuC,CACrCpB,WACA5I,SAAU9G,EACVoQ,gBACA9K,sBAMF,OAAOvS,EAAciD,EAAM,IACtBC,EACHnB,WACAC,UAAWC,EACXK,GAAIC,EACJyb,OAAQA,IAAMZ,GAAa,GAC3Ba,QAASA,IAAMb,GAAa,GAC5BhY,IAAK0X,EACLoB,KAAM,YACNpb,MAAO,CAZPqb,YAAa,OACbC,WAAY,UAaPrb,GAEL8Z,WAEA,6BAA8BvP,EAC9B,sBAAuB7J,EACvB,qBAAsB,GACtB,4BAAuC,SAAV+B,EAAmB,UAAY2X,EAAY,gBAAa1b,EACrF,2BAA4B+D,EAC5B,oCAAqCmX,EACrC,8BAA+B1P,GAEnC,CApNAoL,GAA2BpX,YAAc,aACzCsb,GAAWtb,YAAc,yBAoNzBwb,GAAkBxb,YAAc","sources":["../node_modules/lucide-react/src/icons/check.ts","../node_modules/lucide-react/src/icons/chevron-down.ts","../node_modules/lucide-react/src/icons/chevron-up.ts","../node_modules/lucide-react/src/icons/ellipsis-vertical.ts","../node_modules/lucide-react/src/icons/ellipsis.ts","../node_modules/lucide-react/src/icons/pencil.ts","../node_modules/lucide-react/src/icons/plus.ts","../node_modules/lucide-react/src/icons/refresh-ccw.ts","../node_modules/lucide-react/src/icons/trash.ts","../node_modules/lucide-react/src/icons/x.ts","../node_modules/react-resizable-panels/dist/react-resizable-panels.browser.esm.js"],"sourcesContent":["import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name Check\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMjAgNiA5IDE3bC01LTUiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/check\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Check = createLucideIcon('Check', [['path', { d: 'M20 6 9 17l-5-5', key: '1gmf2c' }]]);\n\nexport default Check;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name ChevronDown\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJtNiA5IDYgNiA2LTYiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/chevron-down\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ChevronDown = createLucideIcon('ChevronDown', [\n ['path', { d: 'm6 9 6 6 6-6', key: 'qrunsl' }],\n]);\n\nexport default ChevronDown;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name ChevronUp\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJtMTggMTUtNi02LTYgNiIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/chevron-up\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ChevronUp = createLucideIcon('ChevronUp', [['path', { d: 'm18 15-6-6-6 6', key: '153udz' }]]);\n\nexport default ChevronUp;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name EllipsisVertical\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSIxIiAvPgogIDxjaXJjbGUgY3g9IjEyIiBjeT0iNSIgcj0iMSIgLz4KICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjE5IiByPSIxIiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/ellipsis-vertical\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst EllipsisVertical = createLucideIcon('EllipsisVertical', [\n ['circle', { cx: '12', cy: '12', r: '1', key: '41hilf' }],\n ['circle', { cx: '12', cy: '5', r: '1', key: 'gxeob9' }],\n ['circle', { cx: '12', cy: '19', r: '1', key: 'lyex9k' }],\n]);\n\nexport default EllipsisVertical;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name Ellipsis\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSIxIiAvPgogIDxjaXJjbGUgY3g9IjE5IiBjeT0iMTIiIHI9IjEiIC8+CiAgPGNpcmNsZSBjeD0iNSIgY3k9IjEyIiByPSIxIiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/ellipsis\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Ellipsis = createLucideIcon('Ellipsis', [\n ['circle', { cx: '12', cy: '12', r: '1', key: '41hilf' }],\n ['circle', { cx: '19', cy: '12', r: '1', key: '1wjl8i' }],\n ['circle', { cx: '5', cy: '12', r: '1', key: '1pcz8c' }],\n]);\n\nexport default Ellipsis;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name Pencil\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTcgM2EyLjg1IDIuODMgMCAxIDEgNCA0TDcuNSAyMC41IDIgMjJsMS41LTUuNVoiIC8+CiAgPHBhdGggZD0ibTE1IDUgNCA0IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/pencil\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Pencil = createLucideIcon('Pencil', [\n ['path', { d: 'M17 3a2.85 2.83 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5Z', key: '5qss01' }],\n ['path', { d: 'm15 5 4 4', key: '1mk7zo' }],\n]);\n\nexport default Pencil;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name Plus\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNNSAxMmgxNCIgLz4KICA8cGF0aCBkPSJNMTIgNXYxNCIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/plus\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Plus = createLucideIcon('Plus', [\n ['path', { d: 'M5 12h14', key: '1ays0h' }],\n ['path', { d: 'M12 5v14', key: 's699le' }],\n]);\n\nexport default Plus;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name RefreshCcw\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMjEgMTJhOSA5IDAgMCAwLTktOSA5Ljc1IDkuNzUgMCAwIDAtNi43NCAyLjc0TDMgOCIgLz4KICA8cGF0aCBkPSJNMyAzdjVoNSIgLz4KICA8cGF0aCBkPSJNMyAxMmE5IDkgMCAwIDAgOSA5IDkuNzUgOS43NSAwIDAgMCA2Ljc0LTIuNzRMMjEgMTYiIC8+CiAgPHBhdGggZD0iTTE2IDE2aDV2NSIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/refresh-ccw\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst RefreshCcw = createLucideIcon('RefreshCcw', [\n ['path', { d: 'M21 12a9 9 0 0 0-9-9 9.75 9.75 0 0 0-6.74 2.74L3 8', key: '14sxne' }],\n ['path', { d: 'M3 3v5h5', key: '1xhq8a' }],\n ['path', { d: 'M3 12a9 9 0 0 0 9 9 9.75 9.75 0 0 0 6.74-2.74L21 16', key: '1hlbsb' }],\n ['path', { d: 'M16 16h5v5', key: 'ccwih5' }],\n]);\n\nexport default RefreshCcw;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name Trash\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMyA2aDE4IiAvPgogIDxwYXRoIGQ9Ik0xOSA2djE0YzAgMS0xIDItMiAySDdjLTEgMC0yLTEtMi0yVjYiIC8+CiAgPHBhdGggZD0iTTggNlY0YzAtMSAxLTIgMi0yaDRjMSAwIDIgMSAyIDJ2MiIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/trash\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Trash = createLucideIcon('Trash', [\n ['path', { d: 'M3 6h18', key: 'd0wm0j' }],\n ['path', { d: 'M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6', key: '4alrt4' }],\n ['path', { d: 'M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2', key: 'v07s0e' }],\n]);\n\nexport default Trash;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name X\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTggNiA2IDE4IiAvPgogIDxwYXRoIGQ9Im02IDYgMTIgMTIiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/x\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst X = createLucideIcon('X', [\n ['path', { d: 'M18 6 6 18', key: '1bl5f8' }],\n ['path', { d: 'm6 6 12 12', key: 'd8bk6v' }],\n]);\n\nexport default X;\n","import * as React from 'react';\n\n// This module exists to work around Webpack issue https://github.com/webpack/webpack/issues/14814\n\n// eslint-disable-next-line no-restricted-imports\n\nconst {\n createElement,\n createContext,\n createRef,\n forwardRef,\n useCallback,\n useContext,\n useEffect,\n useImperativeHandle,\n useLayoutEffect,\n useMemo,\n useRef,\n useState\n} = React;\n\n// `toString()` prevents bundlers from trying to `import { useId } from 'react'`\nconst useId = React[\"useId\".toString()];\nconst useLayoutEffect_do_not_use_directly = useLayoutEffect;\n\nconst PanelGroupContext = createContext(null);\nPanelGroupContext.displayName = \"PanelGroupContext\";\n\nconst useIsomorphicLayoutEffect = useLayoutEffect_do_not_use_directly ;\n\nconst wrappedUseId = typeof useId === \"function\" ? useId : () => null;\nlet counter = 0;\nfunction useUniqueId(idFromParams = null) {\n const idFromUseId = wrappedUseId();\n const idRef = useRef(idFromParams || idFromUseId || null);\n if (idRef.current === null) {\n idRef.current = \"\" + counter++;\n }\n return idFromParams !== null && idFromParams !== void 0 ? idFromParams : idRef.current;\n}\n\nfunction PanelWithForwardedRef({\n children,\n className: classNameFromProps = \"\",\n collapsedSize,\n collapsible,\n defaultSize,\n forwardedRef,\n id: idFromProps,\n maxSize,\n minSize,\n onCollapse,\n onExpand,\n onResize,\n order,\n style: styleFromProps,\n tagName: Type = \"div\",\n ...rest\n}) {\n const context = useContext(PanelGroupContext);\n if (context === null) {\n throw Error(`Panel components must be rendered within a PanelGroup container`);\n }\n const {\n collapsePanel,\n expandPanel,\n getPanelSize,\n getPanelStyle,\n groupId,\n isPanelCollapsed,\n reevaluatePanelConstraints,\n registerPanel,\n resizePanel,\n unregisterPanel\n } = context;\n const panelId = useUniqueId(idFromProps);\n const panelDataRef = useRef({\n callbacks: {\n onCollapse,\n onExpand,\n onResize\n },\n constraints: {\n collapsedSize,\n collapsible,\n defaultSize,\n maxSize,\n minSize\n },\n id: panelId,\n idIsFromProps: idFromProps !== undefined,\n order\n });\n useRef({\n didLogMissingDefaultSizeWarning: false\n });\n useIsomorphicLayoutEffect(() => {\n const {\n callbacks,\n constraints\n } = panelDataRef.current;\n const prevConstraints = {\n ...constraints\n };\n panelDataRef.current.id = panelId;\n panelDataRef.current.idIsFromProps = idFromProps !== undefined;\n panelDataRef.current.order = order;\n callbacks.onCollapse = onCollapse;\n callbacks.onExpand = onExpand;\n callbacks.onResize = onResize;\n constraints.collapsedSize = collapsedSize;\n constraints.collapsible = collapsible;\n constraints.defaultSize = defaultSize;\n constraints.maxSize = maxSize;\n constraints.minSize = minSize;\n\n // If constraints have changed, we should revisit panel sizes.\n // This is uncommon but may happen if people are trying to implement pixel based constraints.\n if (prevConstraints.collapsedSize !== constraints.collapsedSize || prevConstraints.collapsible !== constraints.collapsible || prevConstraints.maxSize !== constraints.maxSize || prevConstraints.minSize !== constraints.minSize) {\n reevaluatePanelConstraints(panelDataRef.current, prevConstraints);\n }\n });\n useIsomorphicLayoutEffect(() => {\n const panelData = panelDataRef.current;\n registerPanel(panelData);\n return () => {\n unregisterPanel(panelData);\n };\n }, [order, panelId, registerPanel, unregisterPanel]);\n useImperativeHandle(forwardedRef, () => ({\n collapse: () => {\n collapsePanel(panelDataRef.current);\n },\n expand: () => {\n expandPanel(panelDataRef.current);\n },\n getId() {\n return panelId;\n },\n getSize() {\n return getPanelSize(panelDataRef.current);\n },\n isCollapsed() {\n return isPanelCollapsed(panelDataRef.current);\n },\n isExpanded() {\n return !isPanelCollapsed(panelDataRef.current);\n },\n resize: size => {\n resizePanel(panelDataRef.current, size);\n }\n }), [collapsePanel, expandPanel, getPanelSize, isPanelCollapsed, panelId, resizePanel]);\n const style = getPanelStyle(panelDataRef.current, defaultSize);\n return createElement(Type, {\n ...rest,\n children,\n className: classNameFromProps,\n id: idFromProps,\n style: {\n ...style,\n ...styleFromProps\n },\n // CSS selectors\n \"data-panel\": \"\",\n \"data-panel-collapsible\": collapsible || undefined,\n \"data-panel-group-id\": groupId,\n \"data-panel-id\": panelId,\n \"data-panel-size\": parseFloat(\"\" + style.flexGrow).toFixed(1)\n });\n}\nconst Panel = forwardRef((props, ref) => createElement(PanelWithForwardedRef, {\n ...props,\n forwardedRef: ref\n}));\nPanelWithForwardedRef.displayName = \"Panel\";\nPanel.displayName = \"forwardRef(Panel)\";\n\nlet currentCursorStyle = null;\nlet styleElement = null;\nfunction getCursorStyle(state, constraintFlags) {\n if (constraintFlags) {\n const horizontalMin = (constraintFlags & EXCEEDED_HORIZONTAL_MIN) !== 0;\n const horizontalMax = (constraintFlags & EXCEEDED_HORIZONTAL_MAX) !== 0;\n const verticalMin = (constraintFlags & EXCEEDED_VERTICAL_MIN) !== 0;\n const verticalMax = (constraintFlags & EXCEEDED_VERTICAL_MAX) !== 0;\n if (horizontalMin) {\n if (verticalMin) {\n return \"se-resize\";\n } else if (verticalMax) {\n return \"ne-resize\";\n } else {\n return \"e-resize\";\n }\n } else if (horizontalMax) {\n if (verticalMin) {\n return \"sw-resize\";\n } else if (verticalMax) {\n return \"nw-resize\";\n } else {\n return \"w-resize\";\n }\n } else if (verticalMin) {\n return \"s-resize\";\n } else if (verticalMax) {\n return \"n-resize\";\n }\n }\n switch (state) {\n case \"horizontal\":\n return \"ew-resize\";\n case \"intersection\":\n return \"move\";\n case \"vertical\":\n return \"ns-resize\";\n }\n}\nfunction resetGlobalCursorStyle() {\n if (styleElement !== null) {\n document.head.removeChild(styleElement);\n currentCursorStyle = null;\n styleElement = null;\n }\n}\nfunction setGlobalCursorStyle(state, constraintFlags) {\n const style = getCursorStyle(state, constraintFlags);\n if (currentCursorStyle === style) {\n return;\n }\n currentCursorStyle = style;\n if (styleElement === null) {\n styleElement = document.createElement(\"style\");\n document.head.appendChild(styleElement);\n }\n styleElement.innerHTML = `*{cursor: ${style}!important;}`;\n}\n\nfunction isKeyDown(event) {\n return event.type === \"keydown\";\n}\nfunction isMouseEvent(event) {\n return event.type.startsWith(\"mouse\");\n}\nfunction isTouchEvent(event) {\n return event.type.startsWith(\"touch\");\n}\n\nfunction getResizeEventCoordinates(event) {\n if (isMouseEvent(event)) {\n return {\n x: event.clientX,\n y: event.clientY\n };\n } else if (isTouchEvent(event)) {\n const touch = event.touches[0];\n if (touch && touch.clientX && touch.clientY) {\n return {\n x: touch.clientX,\n y: touch.clientY\n };\n }\n }\n return {\n x: Infinity,\n y: Infinity\n };\n}\n\nfunction getInputType() {\n if (typeof matchMedia === \"function\") {\n return matchMedia(\"(pointer:coarse)\").matches ? \"coarse\" : \"fine\";\n }\n}\n\nfunction intersects(rectOne, rectTwo, strict) {\n if (strict) {\n return rectOne.x < rectTwo.x + rectTwo.width && rectOne.x + rectOne.width > rectTwo.x && rectOne.y < rectTwo.y + rectTwo.height && rectOne.y + rectOne.height > rectTwo.y;\n } else {\n return rectOne.x <= rectTwo.x + rectTwo.width && rectOne.x + rectOne.width >= rectTwo.x && rectOne.y <= rectTwo.y + rectTwo.height && rectOne.y + rectOne.height >= rectTwo.y;\n }\n}\n\n// Forked from NPM stacking-order@2.0.0\n\n/**\n * Determine which of two nodes appears in front of the other —\n * if `a` is in front, returns 1, otherwise returns -1\n * @param {HTMLElement} a\n * @param {HTMLElement} b\n */\nfunction compare(a, b) {\n if (a === b) throw new Error(\"Cannot compare node with itself\");\n const ancestors = {\n a: get_ancestors(a),\n b: get_ancestors(b)\n };\n let common_ancestor;\n\n // remove shared ancestors\n while (ancestors.a.at(-1) === ancestors.b.at(-1)) {\n a = ancestors.a.pop();\n b = ancestors.b.pop();\n common_ancestor = a;\n }\n assert(common_ancestor, \"Stacking order can only be calculated for elements with a common ancestor\");\n const z_indexes = {\n a: get_z_index(find_stacking_context(ancestors.a)),\n b: get_z_index(find_stacking_context(ancestors.b))\n };\n if (z_indexes.a === z_indexes.b) {\n const children = common_ancestor.childNodes;\n const furthest_ancestors = {\n a: ancestors.a.at(-1),\n b: ancestors.b.at(-1)\n };\n let i = children.length;\n while (i--) {\n const child = children[i];\n if (child === furthest_ancestors.a) return 1;\n if (child === furthest_ancestors.b) return -1;\n }\n }\n return Math.sign(z_indexes.a - z_indexes.b);\n}\nconst props = /\\b(?:position|zIndex|opacity|transform|webkitTransform|mixBlendMode|filter|webkitFilter|isolation)\\b/;\n\n/** @param {HTMLElement} node */\nfunction is_flex_item(node) {\n var _get_parent;\n // @ts-ignore\n const display = getComputedStyle((_get_parent = get_parent(node)) !== null && _get_parent !== void 0 ? _get_parent : node).display;\n return display === \"flex\" || display === \"inline-flex\";\n}\n\n/** @param {HTMLElement} node */\nfunction creates_stacking_context(node) {\n const style = getComputedStyle(node);\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Positioning/Understanding_z_index/The_stacking_context\n if (style.position === \"fixed\") return true;\n // Forked to fix upstream bug https://github.com/Rich-Harris/stacking-order/issues/3\n // if (\n // (style.zIndex !== \"auto\" && style.position !== \"static\") ||\n // is_flex_item(node)\n // )\n if (style.zIndex !== \"auto\" && (style.position !== \"static\" || is_flex_item(node))) return true;\n if (+style.opacity < 1) return true;\n if (\"transform\" in style && style.transform !== \"none\") return true;\n if (\"webkitTransform\" in style && style.webkitTransform !== \"none\") return true;\n if (\"mixBlendMode\" in style && style.mixBlendMode !== \"normal\") return true;\n if (\"filter\" in style && style.filter !== \"none\") return true;\n if (\"webkitFilter\" in style && style.webkitFilter !== \"none\") return true;\n if (\"isolation\" in style && style.isolation === \"isolate\") return true;\n if (props.test(style.willChange)) return true;\n // @ts-expect-error\n if (style.webkitOverflowScrolling === \"touch\") return true;\n return false;\n}\n\n/** @param {HTMLElement[]} nodes */\nfunction find_stacking_context(nodes) {\n let i = nodes.length;\n while (i--) {\n const node = nodes[i];\n assert(node, \"Missing node\");\n if (creates_stacking_context(node)) return node;\n }\n return null;\n}\n\n/** @param {HTMLElement} node */\nfunction get_z_index(node) {\n return node && Number(getComputedStyle(node).zIndex) || 0;\n}\n\n/** @param {HTMLElement} node */\nfunction get_ancestors(node) {\n const ancestors = [];\n while (node) {\n ancestors.push(node);\n // @ts-ignore\n node = get_parent(node);\n }\n return ancestors; // [ node, ... , , document ]\n}\n\n/** @param {HTMLElement} node */\nfunction get_parent(node) {\n const {\n parentNode\n } = node;\n if (parentNode && parentNode instanceof ShadowRoot) {\n return parentNode.host;\n }\n return parentNode;\n}\n\nconst EXCEEDED_HORIZONTAL_MIN = 0b0001;\nconst EXCEEDED_HORIZONTAL_MAX = 0b0010;\nconst EXCEEDED_VERTICAL_MIN = 0b0100;\nconst EXCEEDED_VERTICAL_MAX = 0b1000;\nconst isCoarsePointer = getInputType() === \"coarse\";\nlet intersectingHandles = [];\nlet isPointerDown = false;\nlet ownerDocumentCounts = new Map();\nlet panelConstraintFlags = new Map();\nconst registeredResizeHandlers = new Set();\nfunction registerResizeHandle(resizeHandleId, element, direction, hitAreaMargins, setResizeHandlerState) {\n var _ownerDocumentCounts$;\n const {\n ownerDocument\n } = element;\n const data = {\n direction,\n element,\n hitAreaMargins,\n setResizeHandlerState\n };\n const count = (_ownerDocumentCounts$ = ownerDocumentCounts.get(ownerDocument)) !== null && _ownerDocumentCounts$ !== void 0 ? _ownerDocumentCounts$ : 0;\n ownerDocumentCounts.set(ownerDocument, count + 1);\n registeredResizeHandlers.add(data);\n updateListeners();\n return function unregisterResizeHandle() {\n var _ownerDocumentCounts$2;\n panelConstraintFlags.delete(resizeHandleId);\n registeredResizeHandlers.delete(data);\n const count = (_ownerDocumentCounts$2 = ownerDocumentCounts.get(ownerDocument)) !== null && _ownerDocumentCounts$2 !== void 0 ? _ownerDocumentCounts$2 : 1;\n ownerDocumentCounts.set(ownerDocument, count - 1);\n updateListeners();\n if (count === 1) {\n ownerDocumentCounts.delete(ownerDocument);\n }\n };\n}\nfunction handlePointerDown(event) {\n const {\n target\n } = event;\n const {\n x,\n y\n } = getResizeEventCoordinates(event);\n isPointerDown = true;\n recalculateIntersectingHandles({\n target,\n x,\n y\n });\n updateListeners();\n if (intersectingHandles.length > 0) {\n updateResizeHandlerStates(\"down\", event);\n event.preventDefault();\n }\n}\nfunction handlePointerMove(event) {\n const {\n x,\n y\n } = getResizeEventCoordinates(event);\n if (!isPointerDown) {\n const {\n target\n } = event;\n\n // Recalculate intersecting handles whenever the pointer moves, except if it has already been pressed\n // at that point, the handles may not move with the pointer (depending on constraints)\n // but the same set of active handles should be locked until the pointer is released\n recalculateIntersectingHandles({\n target,\n x,\n y\n });\n }\n updateResizeHandlerStates(\"move\", event);\n\n // Update cursor based on return value(s) from active handles\n updateCursor();\n if (intersectingHandles.length > 0) {\n event.preventDefault();\n }\n}\nfunction handlePointerUp(event) {\n const {\n target\n } = event;\n const {\n x,\n y\n } = getResizeEventCoordinates(event);\n panelConstraintFlags.clear();\n isPointerDown = false;\n if (intersectingHandles.length > 0) {\n event.preventDefault();\n }\n updateResizeHandlerStates(\"up\", event);\n recalculateIntersectingHandles({\n target,\n x,\n y\n });\n updateCursor();\n updateListeners();\n}\nfunction recalculateIntersectingHandles({\n target,\n x,\n y\n}) {\n intersectingHandles.splice(0);\n let targetElement = null;\n if (target instanceof HTMLElement) {\n targetElement = target;\n }\n registeredResizeHandlers.forEach(data => {\n const {\n element: dragHandleElement,\n hitAreaMargins\n } = data;\n const dragHandleRect = dragHandleElement.getBoundingClientRect();\n const {\n bottom,\n left,\n right,\n top\n } = dragHandleRect;\n const margin = isCoarsePointer ? hitAreaMargins.coarse : hitAreaMargins.fine;\n const eventIntersects = x >= left - margin && x <= right + margin && y >= top - margin && y <= bottom + margin;\n if (eventIntersects) {\n // TRICKY\n // We listen for pointers events at the root in order to support hit area margins\n // (determining when the pointer is close enough to an element to be considered a \"hit\")\n // Clicking on an element \"above\" a handle (e.g. a modal) should prevent a hit though\n // so at this point we need to compare stacking order of a potentially intersecting drag handle,\n // and the element that was actually clicked/touched\n if (targetElement !== null && dragHandleElement !== targetElement && !dragHandleElement.contains(targetElement) && !targetElement.contains(dragHandleElement) &&\n // Calculating stacking order has a cost, so we should avoid it if possible\n // That is why we only check potentially intersecting handles,\n // and why we skip if the event target is within the handle's DOM\n compare(targetElement, dragHandleElement) > 0) {\n // If the target is above the drag handle, then we also need to confirm they overlap\n // If they are beside each other (e.g. a panel and its drag handle) then the handle is still interactive\n //\n // It's not enough to compare only the target\n // The target might be a small element inside of a larger container\n // (For example, a SPAN or a DIV inside of a larger modal dialog)\n let currentElement = targetElement;\n let didIntersect = false;\n while (currentElement) {\n if (currentElement.contains(dragHandleElement)) {\n break;\n } else if (intersects(currentElement.getBoundingClientRect(), dragHandleRect, true)) {\n didIntersect = true;\n break;\n }\n currentElement = currentElement.parentElement;\n }\n if (didIntersect) {\n return;\n }\n }\n intersectingHandles.push(data);\n }\n });\n}\nfunction reportConstraintsViolation(resizeHandleId, flag) {\n panelConstraintFlags.set(resizeHandleId, flag);\n}\nfunction updateCursor() {\n let intersectsHorizontal = false;\n let intersectsVertical = false;\n intersectingHandles.forEach(data => {\n const {\n direction\n } = data;\n if (direction === \"horizontal\") {\n intersectsHorizontal = true;\n } else {\n intersectsVertical = true;\n }\n });\n let constraintFlags = 0;\n panelConstraintFlags.forEach(flag => {\n constraintFlags |= flag;\n });\n if (intersectsHorizontal && intersectsVertical) {\n setGlobalCursorStyle(\"intersection\", constraintFlags);\n } else if (intersectsHorizontal) {\n setGlobalCursorStyle(\"horizontal\", constraintFlags);\n } else if (intersectsVertical) {\n setGlobalCursorStyle(\"vertical\", constraintFlags);\n } else {\n resetGlobalCursorStyle();\n }\n}\nfunction updateListeners() {\n ownerDocumentCounts.forEach((_, ownerDocument) => {\n const {\n body\n } = ownerDocument;\n body.removeEventListener(\"contextmenu\", handlePointerUp);\n body.removeEventListener(\"mousedown\", handlePointerDown);\n body.removeEventListener(\"mouseleave\", handlePointerMove);\n body.removeEventListener(\"mousemove\", handlePointerMove);\n body.removeEventListener(\"touchmove\", handlePointerMove);\n body.removeEventListener(\"touchstart\", handlePointerDown);\n });\n window.removeEventListener(\"mouseup\", handlePointerUp);\n window.removeEventListener(\"touchcancel\", handlePointerUp);\n window.removeEventListener(\"touchend\", handlePointerUp);\n if (registeredResizeHandlers.size > 0) {\n if (isPointerDown) {\n if (intersectingHandles.length > 0) {\n ownerDocumentCounts.forEach((count, ownerDocument) => {\n const {\n body\n } = ownerDocument;\n if (count > 0) {\n body.addEventListener(\"contextmenu\", handlePointerUp);\n body.addEventListener(\"mouseleave\", handlePointerMove);\n body.addEventListener(\"mousemove\", handlePointerMove);\n body.addEventListener(\"touchmove\", handlePointerMove, {\n passive: false\n });\n }\n });\n }\n window.addEventListener(\"mouseup\", handlePointerUp);\n window.addEventListener(\"touchcancel\", handlePointerUp);\n window.addEventListener(\"touchend\", handlePointerUp);\n } else {\n ownerDocumentCounts.forEach((count, ownerDocument) => {\n const {\n body\n } = ownerDocument;\n if (count > 0) {\n body.addEventListener(\"mousedown\", handlePointerDown);\n body.addEventListener(\"mousemove\", handlePointerMove);\n body.addEventListener(\"touchmove\", handlePointerMove, {\n passive: false\n });\n body.addEventListener(\"touchstart\", handlePointerDown);\n }\n });\n }\n }\n}\nfunction updateResizeHandlerStates(action, event) {\n registeredResizeHandlers.forEach(data => {\n const {\n setResizeHandlerState\n } = data;\n const isActive = intersectingHandles.includes(data);\n setResizeHandlerState(action, isActive, event);\n });\n}\n\nfunction assert(expectedCondition, message) {\n if (!expectedCondition) {\n console.error(message);\n throw Error(message);\n }\n}\n\nconst PRECISION = 10;\n\nfunction fuzzyCompareNumbers(actual, expected, fractionDigits = PRECISION) {\n if (actual.toFixed(fractionDigits) === expected.toFixed(fractionDigits)) {\n return 0;\n } else {\n return actual > expected ? 1 : -1;\n }\n}\nfunction fuzzyNumbersEqual$1(actual, expected, fractionDigits = PRECISION) {\n return fuzzyCompareNumbers(actual, expected, fractionDigits) === 0;\n}\n\nfunction fuzzyNumbersEqual(actual, expected, fractionDigits) {\n return fuzzyCompareNumbers(actual, expected, fractionDigits) === 0;\n}\n\nfunction fuzzyLayoutsEqual(actual, expected, fractionDigits) {\n if (actual.length !== expected.length) {\n return false;\n }\n for (let index = 0; index < actual.length; index++) {\n const actualSize = actual[index];\n const expectedSize = expected[index];\n if (!fuzzyNumbersEqual(actualSize, expectedSize, fractionDigits)) {\n return false;\n }\n }\n return true;\n}\n\n// Panel size must be in percentages; pixel values should be pre-converted\nfunction resizePanel({\n panelConstraints: panelConstraintsArray,\n panelIndex,\n size\n}) {\n const panelConstraints = panelConstraintsArray[panelIndex];\n assert(panelConstraints != null, `Panel constraints not found for index ${panelIndex}`);\n let {\n collapsedSize = 0,\n collapsible,\n maxSize = 100,\n minSize = 0\n } = panelConstraints;\n if (fuzzyCompareNumbers(size, minSize) < 0) {\n if (collapsible) {\n // Collapsible panels should snap closed or open only once they cross the halfway point between collapsed and min size.\n const halfwayPoint = (collapsedSize + minSize) / 2;\n if (fuzzyCompareNumbers(size, halfwayPoint) < 0) {\n size = collapsedSize;\n } else {\n size = minSize;\n }\n } else {\n size = minSize;\n }\n }\n size = Math.min(maxSize, size);\n size = parseFloat(size.toFixed(PRECISION));\n return size;\n}\n\n// All units must be in percentages; pixel values should be pre-converted\nfunction adjustLayoutByDelta({\n delta,\n initialLayout,\n panelConstraints: panelConstraintsArray,\n pivotIndices,\n prevLayout,\n trigger\n}) {\n if (fuzzyNumbersEqual(delta, 0)) {\n return initialLayout;\n }\n const nextLayout = [...initialLayout];\n const [firstPivotIndex, secondPivotIndex] = pivotIndices;\n assert(firstPivotIndex != null, \"Invalid first pivot index\");\n assert(secondPivotIndex != null, \"Invalid second pivot index\");\n let deltaApplied = 0;\n\n // const DEBUG = [];\n // DEBUG.push(`adjustLayoutByDelta()`);\n // DEBUG.push(` initialLayout: ${initialLayout.join(\", \")}`);\n // DEBUG.push(` prevLayout: ${prevLayout.join(\", \")}`);\n // DEBUG.push(` delta: ${delta}`);\n // DEBUG.push(` pivotIndices: ${pivotIndices.join(\", \")}`);\n // DEBUG.push(` trigger: ${trigger}`);\n // DEBUG.push(\"\");\n\n // A resizing panel affects the panels before or after it.\n //\n // A negative delta means the panel(s) immediately after the resize handle should grow/expand by decreasing its offset.\n // Other panels may also need to shrink/contract (and shift) to make room, depending on the min weights.\n //\n // A positive delta means the panel(s) immediately before the resize handle should \"expand\".\n // This is accomplished by shrinking/contracting (and shifting) one or more of the panels after the resize handle.\n\n {\n // If this is a resize triggered by a keyboard event, our logic for expanding/collapsing is different.\n // We no longer check the halfway threshold because this may prevent the panel from expanding at all.\n if (trigger === \"keyboard\") {\n {\n // Check if we should expand a collapsed panel\n const index = delta < 0 ? secondPivotIndex : firstPivotIndex;\n const panelConstraints = panelConstraintsArray[index];\n assert(panelConstraints, `Panel constraints not found for index ${index}`);\n const {\n collapsedSize = 0,\n collapsible,\n minSize = 0\n } = panelConstraints;\n\n // DEBUG.push(`edge case check 1: ${index}`);\n // DEBUG.push(` -> collapsible? ${collapsible}`);\n if (collapsible) {\n const prevSize = initialLayout[index];\n assert(prevSize != null, `Previous layout not found for panel index ${index}`);\n if (fuzzyNumbersEqual(prevSize, collapsedSize)) {\n const localDelta = minSize - prevSize;\n // DEBUG.push(` -> expand delta: ${localDelta}`);\n\n if (fuzzyCompareNumbers(localDelta, Math.abs(delta)) > 0) {\n delta = delta < 0 ? 0 - localDelta : localDelta;\n // DEBUG.push(` -> delta: ${delta}`);\n }\n }\n }\n }\n\n {\n // Check if we should collapse a panel at its minimum size\n const index = delta < 0 ? firstPivotIndex : secondPivotIndex;\n const panelConstraints = panelConstraintsArray[index];\n assert(panelConstraints, `No panel constraints found for index ${index}`);\n const {\n collapsedSize = 0,\n collapsible,\n minSize = 0\n } = panelConstraints;\n\n // DEBUG.push(`edge case check 2: ${index}`);\n // DEBUG.push(` -> collapsible? ${collapsible}`);\n if (collapsible) {\n const prevSize = initialLayout[index];\n assert(prevSize != null, `Previous layout not found for panel index ${index}`);\n if (fuzzyNumbersEqual(prevSize, minSize)) {\n const localDelta = prevSize - collapsedSize;\n // DEBUG.push(` -> expand delta: ${localDelta}`);\n\n if (fuzzyCompareNumbers(localDelta, Math.abs(delta)) > 0) {\n delta = delta < 0 ? 0 - localDelta : localDelta;\n // DEBUG.push(` -> delta: ${delta}`);\n }\n }\n }\n }\n }\n // DEBUG.push(\"\");\n }\n\n {\n // Pre-calculate max available delta in the opposite direction of our pivot.\n // This will be the maximum amount we're allowed to expand/contract the panels in the primary direction.\n // If this amount is less than the requested delta, adjust the requested delta.\n // If this amount is greater than the requested delta, that's useful information too–\n // as an expanding panel might change from collapsed to min size.\n\n const increment = delta < 0 ? 1 : -1;\n let index = delta < 0 ? secondPivotIndex : firstPivotIndex;\n let maxAvailableDelta = 0;\n\n // DEBUG.push(\"pre calc...\");\n while (true) {\n const prevSize = initialLayout[index];\n assert(prevSize != null, `Previous layout not found for panel index ${index}`);\n const maxSafeSize = resizePanel({\n panelConstraints: panelConstraintsArray,\n panelIndex: index,\n size: 100\n });\n const delta = maxSafeSize - prevSize;\n // DEBUG.push(` ${index}: ${prevSize} -> ${maxSafeSize}`);\n\n maxAvailableDelta += delta;\n index += increment;\n if (index < 0 || index >= panelConstraintsArray.length) {\n break;\n }\n }\n\n // DEBUG.push(` -> max available delta: ${maxAvailableDelta}`);\n const minAbsDelta = Math.min(Math.abs(delta), Math.abs(maxAvailableDelta));\n delta = delta < 0 ? 0 - minAbsDelta : minAbsDelta;\n // DEBUG.push(` -> adjusted delta: ${delta}`);\n // DEBUG.push(\"\");\n }\n\n {\n // Delta added to a panel needs to be subtracted from other panels (within the constraints that those panels allow).\n\n const pivotIndex = delta < 0 ? firstPivotIndex : secondPivotIndex;\n let index = pivotIndex;\n while (index >= 0 && index < panelConstraintsArray.length) {\n const deltaRemaining = Math.abs(delta) - Math.abs(deltaApplied);\n const prevSize = initialLayout[index];\n assert(prevSize != null, `Previous layout not found for panel index ${index}`);\n const unsafeSize = prevSize - deltaRemaining;\n const safeSize = resizePanel({\n panelConstraints: panelConstraintsArray,\n panelIndex: index,\n size: unsafeSize\n });\n if (!fuzzyNumbersEqual(prevSize, safeSize)) {\n deltaApplied += prevSize - safeSize;\n nextLayout[index] = safeSize;\n if (deltaApplied.toFixed(3).localeCompare(Math.abs(delta).toFixed(3), undefined, {\n numeric: true\n }) >= 0) {\n break;\n }\n }\n if (delta < 0) {\n index--;\n } else {\n index++;\n }\n }\n }\n // DEBUG.push(`after 1: ${nextLayout.join(\", \")}`);\n // DEBUG.push(` deltaApplied: ${deltaApplied}`);\n // DEBUG.push(\"\");\n\n // If we were unable to resize any of the panels panels, return the previous state.\n // This will essentially bailout and ignore e.g. drags past a panel's boundaries\n if (fuzzyLayoutsEqual(prevLayout, nextLayout)) {\n // DEBUG.push(`bailout to previous layout: ${prevLayout.join(\", \")}`);\n // console.log(DEBUG.join(\"\\n\"));\n\n return prevLayout;\n }\n {\n // Now distribute the applied delta to the panels in the other direction\n const pivotIndex = delta < 0 ? secondPivotIndex : firstPivotIndex;\n const prevSize = initialLayout[pivotIndex];\n assert(prevSize != null, `Previous layout not found for panel index ${pivotIndex}`);\n const unsafeSize = prevSize + deltaApplied;\n const safeSize = resizePanel({\n panelConstraints: panelConstraintsArray,\n panelIndex: pivotIndex,\n size: unsafeSize\n });\n\n // Adjust the pivot panel before, but only by the amount that surrounding panels were able to shrink/contract.\n nextLayout[pivotIndex] = safeSize;\n\n // Edge case where expanding or contracting one panel caused another one to change collapsed state\n if (!fuzzyNumbersEqual(safeSize, unsafeSize)) {\n let deltaRemaining = unsafeSize - safeSize;\n const pivotIndex = delta < 0 ? secondPivotIndex : firstPivotIndex;\n let index = pivotIndex;\n while (index >= 0 && index < panelConstraintsArray.length) {\n const prevSize = nextLayout[index];\n assert(prevSize != null, `Previous layout not found for panel index ${index}`);\n const unsafeSize = prevSize + deltaRemaining;\n const safeSize = resizePanel({\n panelConstraints: panelConstraintsArray,\n panelIndex: index,\n size: unsafeSize\n });\n if (!fuzzyNumbersEqual(prevSize, safeSize)) {\n deltaRemaining -= safeSize - prevSize;\n nextLayout[index] = safeSize;\n }\n if (fuzzyNumbersEqual(deltaRemaining, 0)) {\n break;\n }\n if (delta > 0) {\n index--;\n } else {\n index++;\n }\n }\n }\n }\n // DEBUG.push(`after 2: ${nextLayout.join(\", \")}`);\n // DEBUG.push(` deltaApplied: ${deltaApplied}`);\n // DEBUG.push(\"\");\n\n const totalSize = nextLayout.reduce((total, size) => size + total, 0);\n // DEBUG.push(`total size: ${totalSize}`);\n\n // If our new layout doesn't add up to 100%, that means the requested delta can't be applied\n // In that case, fall back to our most recent valid layout\n if (!fuzzyNumbersEqual(totalSize, 100)) {\n // DEBUG.push(`bailout to previous layout: ${prevLayout.join(\", \")}`);\n // console.log(DEBUG.join(\"\\n\"));\n\n return prevLayout;\n }\n\n // console.log(DEBUG.join(\"\\n\"));\n return nextLayout;\n}\n\nfunction calculateAriaValues({\n layout,\n panelsArray,\n pivotIndices\n}) {\n let currentMinSize = 0;\n let currentMaxSize = 100;\n let totalMinSize = 0;\n let totalMaxSize = 0;\n const firstIndex = pivotIndices[0];\n assert(firstIndex != null, \"No pivot index found\");\n\n // A panel's effective min/max sizes also need to account for other panel's sizes.\n panelsArray.forEach((panelData, index) => {\n const {\n constraints\n } = panelData;\n const {\n maxSize = 100,\n minSize = 0\n } = constraints;\n if (index === firstIndex) {\n currentMinSize = minSize;\n currentMaxSize = maxSize;\n } else {\n totalMinSize += minSize;\n totalMaxSize += maxSize;\n }\n });\n const valueMax = Math.min(currentMaxSize, 100 - totalMinSize);\n const valueMin = Math.max(currentMinSize, 100 - totalMaxSize);\n const valueNow = layout[firstIndex];\n return {\n valueMax,\n valueMin,\n valueNow\n };\n}\n\nfunction getResizeHandleElementsForGroup(groupId, scope = document) {\n return Array.from(scope.querySelectorAll(`[data-panel-resize-handle-id][data-panel-group-id=\"${groupId}\"]`));\n}\n\nfunction getResizeHandleElementIndex(groupId, id, scope = document) {\n const handles = getResizeHandleElementsForGroup(groupId, scope);\n const index = handles.findIndex(handle => handle.getAttribute(\"data-panel-resize-handle-id\") === id);\n return index !== null && index !== void 0 ? index : null;\n}\n\nfunction determinePivotIndices(groupId, dragHandleId, panelGroupElement) {\n const index = getResizeHandleElementIndex(groupId, dragHandleId, panelGroupElement);\n return index != null ? [index, index + 1] : [-1, -1];\n}\n\nfunction getPanelGroupElement(id, rootElement = document) {\n var _dataset;\n //If the root element is the PanelGroup\n if (rootElement instanceof HTMLElement && (rootElement === null || rootElement === void 0 ? void 0 : (_dataset = rootElement.dataset) === null || _dataset === void 0 ? void 0 : _dataset.panelGroupId) == id) {\n return rootElement;\n }\n\n //Else query children\n const element = rootElement.querySelector(`[data-panel-group][data-panel-group-id=\"${id}\"]`);\n if (element) {\n return element;\n }\n return null;\n}\n\nfunction getResizeHandleElement(id, scope = document) {\n const element = scope.querySelector(`[data-panel-resize-handle-id=\"${id}\"]`);\n if (element) {\n return element;\n }\n return null;\n}\n\nfunction getResizeHandlePanelIds(groupId, handleId, panelsArray, scope = document) {\n var _panelsArray$index$id, _panelsArray$index, _panelsArray$id, _panelsArray;\n const handle = getResizeHandleElement(handleId, scope);\n const handles = getResizeHandleElementsForGroup(groupId, scope);\n const index = handle ? handles.indexOf(handle) : -1;\n const idBefore = (_panelsArray$index$id = (_panelsArray$index = panelsArray[index]) === null || _panelsArray$index === void 0 ? void 0 : _panelsArray$index.id) !== null && _panelsArray$index$id !== void 0 ? _panelsArray$index$id : null;\n const idAfter = (_panelsArray$id = (_panelsArray = panelsArray[index + 1]) === null || _panelsArray === void 0 ? void 0 : _panelsArray.id) !== null && _panelsArray$id !== void 0 ? _panelsArray$id : null;\n return [idBefore, idAfter];\n}\n\n// https://www.w3.org/WAI/ARIA/apg/patterns/windowsplitter/\n\nfunction useWindowSplitterPanelGroupBehavior({\n committedValuesRef,\n eagerValuesRef,\n groupId,\n layout,\n panelDataArray,\n panelGroupElement,\n setLayout\n}) {\n useRef({\n didWarnAboutMissingResizeHandle: false\n });\n useIsomorphicLayoutEffect(() => {\n if (!panelGroupElement) {\n return;\n }\n const resizeHandleElements = getResizeHandleElementsForGroup(groupId, panelGroupElement);\n for (let index = 0; index < panelDataArray.length - 1; index++) {\n const {\n valueMax,\n valueMin,\n valueNow\n } = calculateAriaValues({\n layout,\n panelsArray: panelDataArray,\n pivotIndices: [index, index + 1]\n });\n const resizeHandleElement = resizeHandleElements[index];\n if (resizeHandleElement == null) ; else {\n const panelData = panelDataArray[index];\n assert(panelData, `No panel data found for index \"${index}\"`);\n resizeHandleElement.setAttribute(\"aria-controls\", panelData.id);\n resizeHandleElement.setAttribute(\"aria-valuemax\", \"\" + Math.round(valueMax));\n resizeHandleElement.setAttribute(\"aria-valuemin\", \"\" + Math.round(valueMin));\n resizeHandleElement.setAttribute(\"aria-valuenow\", valueNow != null ? \"\" + Math.round(valueNow) : \"\");\n }\n }\n return () => {\n resizeHandleElements.forEach((resizeHandleElement, index) => {\n resizeHandleElement.removeAttribute(\"aria-controls\");\n resizeHandleElement.removeAttribute(\"aria-valuemax\");\n resizeHandleElement.removeAttribute(\"aria-valuemin\");\n resizeHandleElement.removeAttribute(\"aria-valuenow\");\n });\n };\n }, [groupId, layout, panelDataArray, panelGroupElement]);\n useEffect(() => {\n if (!panelGroupElement) {\n return;\n }\n const eagerValues = eagerValuesRef.current;\n assert(eagerValues, `Eager values not found`);\n const {\n panelDataArray\n } = eagerValues;\n const groupElement = getPanelGroupElement(groupId, panelGroupElement);\n assert(groupElement != null, `No group found for id \"${groupId}\"`);\n const handles = getResizeHandleElementsForGroup(groupId, panelGroupElement);\n assert(handles, `No resize handles found for group id \"${groupId}\"`);\n const cleanupFunctions = handles.map(handle => {\n const handleId = handle.getAttribute(\"data-panel-resize-handle-id\");\n assert(handleId, `Resize handle element has no handle id attribute`);\n const [idBefore, idAfter] = getResizeHandlePanelIds(groupId, handleId, panelDataArray, panelGroupElement);\n if (idBefore == null || idAfter == null) {\n return () => {};\n }\n const onKeyDown = event => {\n if (event.defaultPrevented) {\n return;\n }\n switch (event.key) {\n case \"Enter\":\n {\n event.preventDefault();\n const index = panelDataArray.findIndex(panelData => panelData.id === idBefore);\n if (index >= 0) {\n const panelData = panelDataArray[index];\n assert(panelData, `No panel data found for index ${index}`);\n const size = layout[index];\n const {\n collapsedSize = 0,\n collapsible,\n minSize = 0\n } = panelData.constraints;\n if (size != null && collapsible) {\n const nextLayout = adjustLayoutByDelta({\n delta: fuzzyNumbersEqual(size, collapsedSize) ? minSize - collapsedSize : collapsedSize - size,\n initialLayout: layout,\n panelConstraints: panelDataArray.map(panelData => panelData.constraints),\n pivotIndices: determinePivotIndices(groupId, handleId, panelGroupElement),\n prevLayout: layout,\n trigger: \"keyboard\"\n });\n if (layout !== nextLayout) {\n setLayout(nextLayout);\n }\n }\n }\n break;\n }\n }\n };\n handle.addEventListener(\"keydown\", onKeyDown);\n return () => {\n handle.removeEventListener(\"keydown\", onKeyDown);\n };\n });\n return () => {\n cleanupFunctions.forEach(cleanupFunction => cleanupFunction());\n };\n }, [panelGroupElement, committedValuesRef, eagerValuesRef, groupId, layout, panelDataArray, setLayout]);\n}\n\nfunction areEqual(arrayA, arrayB) {\n if (arrayA.length !== arrayB.length) {\n return false;\n }\n for (let index = 0; index < arrayA.length; index++) {\n if (arrayA[index] !== arrayB[index]) {\n return false;\n }\n }\n return true;\n}\n\nfunction getResizeEventCursorPosition(direction, event) {\n const isHorizontal = direction === \"horizontal\";\n const {\n x,\n y\n } = getResizeEventCoordinates(event);\n return isHorizontal ? x : y;\n}\n\nfunction calculateDragOffsetPercentage(event, dragHandleId, direction, initialDragState, panelGroupElement) {\n const isHorizontal = direction === \"horizontal\";\n const handleElement = getResizeHandleElement(dragHandleId, panelGroupElement);\n assert(handleElement, `No resize handle element found for id \"${dragHandleId}\"`);\n const groupId = handleElement.getAttribute(\"data-panel-group-id\");\n assert(groupId, `Resize handle element has no group id attribute`);\n let {\n initialCursorPosition\n } = initialDragState;\n const cursorPosition = getResizeEventCursorPosition(direction, event);\n const groupElement = getPanelGroupElement(groupId, panelGroupElement);\n assert(groupElement, `No group element found for id \"${groupId}\"`);\n const groupRect = groupElement.getBoundingClientRect();\n const groupSizeInPixels = isHorizontal ? groupRect.width : groupRect.height;\n const offsetPixels = cursorPosition - initialCursorPosition;\n const offsetPercentage = offsetPixels / groupSizeInPixels * 100;\n return offsetPercentage;\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/movementX\nfunction calculateDeltaPercentage(event, dragHandleId, direction, initialDragState, keyboardResizeBy, panelGroupElement) {\n if (isKeyDown(event)) {\n const isHorizontal = direction === \"horizontal\";\n let delta = 0;\n if (event.shiftKey) {\n delta = 100;\n } else if (keyboardResizeBy != null) {\n delta = keyboardResizeBy;\n } else {\n delta = 10;\n }\n let movement = 0;\n switch (event.key) {\n case \"ArrowDown\":\n movement = isHorizontal ? 0 : delta;\n break;\n case \"ArrowLeft\":\n movement = isHorizontal ? -delta : 0;\n break;\n case \"ArrowRight\":\n movement = isHorizontal ? delta : 0;\n break;\n case \"ArrowUp\":\n movement = isHorizontal ? 0 : -delta;\n break;\n case \"End\":\n movement = 100;\n break;\n case \"Home\":\n movement = -100;\n break;\n }\n return movement;\n } else {\n if (initialDragState == null) {\n return 0;\n }\n return calculateDragOffsetPercentage(event, dragHandleId, direction, initialDragState, panelGroupElement);\n }\n}\n\nfunction calculateUnsafeDefaultLayout({\n panelDataArray\n}) {\n const layout = Array(panelDataArray.length);\n const panelConstraintsArray = panelDataArray.map(panelData => panelData.constraints);\n let numPanelsWithSizes = 0;\n let remainingSize = 100;\n\n // Distribute default sizes first\n for (let index = 0; index < panelDataArray.length; index++) {\n const panelConstraints = panelConstraintsArray[index];\n assert(panelConstraints, `Panel constraints not found for index ${index}`);\n const {\n defaultSize\n } = panelConstraints;\n if (defaultSize != null) {\n numPanelsWithSizes++;\n layout[index] = defaultSize;\n remainingSize -= defaultSize;\n }\n }\n\n // Remaining size should be distributed evenly between panels without default sizes\n for (let index = 0; index < panelDataArray.length; index++) {\n const panelConstraints = panelConstraintsArray[index];\n assert(panelConstraints, `Panel constraints not found for index ${index}`);\n const {\n defaultSize\n } = panelConstraints;\n if (defaultSize != null) {\n continue;\n }\n const numRemainingPanels = panelDataArray.length - numPanelsWithSizes;\n const size = remainingSize / numRemainingPanels;\n numPanelsWithSizes++;\n layout[index] = size;\n remainingSize -= size;\n }\n return layout;\n}\n\n// Layout should be pre-converted into percentages\nfunction callPanelCallbacks(panelsArray, layout, panelIdToLastNotifiedSizeMap) {\n layout.forEach((size, index) => {\n const panelData = panelsArray[index];\n assert(panelData, `Panel data not found for index ${index}`);\n const {\n callbacks,\n constraints,\n id: panelId\n } = panelData;\n const {\n collapsedSize = 0,\n collapsible\n } = constraints;\n const lastNotifiedSize = panelIdToLastNotifiedSizeMap[panelId];\n if (lastNotifiedSize == null || size !== lastNotifiedSize) {\n panelIdToLastNotifiedSizeMap[panelId] = size;\n const {\n onCollapse,\n onExpand,\n onResize\n } = callbacks;\n if (onResize) {\n onResize(size, lastNotifiedSize);\n }\n if (collapsible && (onCollapse || onExpand)) {\n if (onExpand && (lastNotifiedSize == null || fuzzyNumbersEqual$1(lastNotifiedSize, collapsedSize)) && !fuzzyNumbersEqual$1(size, collapsedSize)) {\n onExpand();\n }\n if (onCollapse && (lastNotifiedSize == null || !fuzzyNumbersEqual$1(lastNotifiedSize, collapsedSize)) && fuzzyNumbersEqual$1(size, collapsedSize)) {\n onCollapse();\n }\n }\n }\n });\n}\n\nfunction compareLayouts(a, b) {\n if (a.length !== b.length) {\n return false;\n } else {\n for (let index = 0; index < a.length; index++) {\n if (a[index] != b[index]) {\n return false;\n }\n }\n }\n return true;\n}\n\n// This method returns a number between 1 and 100 representing\n\n// the % of the group's overall space this panel should occupy.\nfunction computePanelFlexBoxStyle({\n defaultSize,\n dragState,\n layout,\n panelData,\n panelIndex,\n precision = 3\n}) {\n const size = layout[panelIndex];\n let flexGrow;\n if (size == null) {\n // Initial render (before panels have registered themselves)\n // In order to support server rendering, fall back to default size if provided\n flexGrow = defaultSize != undefined ? defaultSize.toFixed(precision) : \"1\";\n } else if (panelData.length === 1) {\n // Special case: Single panel group should always fill full width/height\n flexGrow = \"1\";\n } else {\n flexGrow = size.toFixed(precision);\n }\n return {\n flexBasis: 0,\n flexGrow,\n flexShrink: 1,\n // Without this, Panel sizes may be unintentionally overridden by their content\n overflow: \"hidden\",\n // Disable pointer events inside of a panel during resize\n // This avoid edge cases like nested iframes\n pointerEvents: dragState !== null ? \"none\" : undefined\n };\n}\n\nfunction debounce(callback, durationMs = 10) {\n let timeoutId = null;\n let callable = (...args) => {\n if (timeoutId !== null) {\n clearTimeout(timeoutId);\n }\n timeoutId = setTimeout(() => {\n callback(...args);\n }, durationMs);\n };\n return callable;\n}\n\n// PanelGroup might be rendering in a server-side environment where localStorage is not available\n// or on a browser with cookies/storage disabled.\n// In either case, this function avoids accessing localStorage until needed,\n// and avoids throwing user-visible errors.\nfunction initializeDefaultStorage(storageObject) {\n try {\n if (typeof localStorage !== \"undefined\") {\n // Bypass this check for future calls\n storageObject.getItem = name => {\n return localStorage.getItem(name);\n };\n storageObject.setItem = (name, value) => {\n localStorage.setItem(name, value);\n };\n } else {\n throw new Error(\"localStorage not supported in this environment\");\n }\n } catch (error) {\n console.error(error);\n storageObject.getItem = () => null;\n storageObject.setItem = () => {};\n }\n}\n\nfunction getPanelGroupKey(autoSaveId) {\n return `react-resizable-panels:${autoSaveId}`;\n}\n\n// Note that Panel ids might be user-provided (stable) or useId generated (non-deterministic)\n// so they should not be used as part of the serialization key.\n// Using the min/max size attributes should work well enough as a backup.\n// Pre-sorting by minSize allows remembering layouts even if panels are re-ordered/dragged.\nfunction getPanelKey(panels) {\n return panels.map(panel => {\n const {\n constraints,\n id,\n idIsFromProps,\n order\n } = panel;\n if (idIsFromProps) {\n return id;\n } else {\n return order ? `${order}:${JSON.stringify(constraints)}` : JSON.stringify(constraints);\n }\n }).sort((a, b) => a.localeCompare(b)).join(\",\");\n}\nfunction loadSerializedPanelGroupState(autoSaveId, storage) {\n try {\n const panelGroupKey = getPanelGroupKey(autoSaveId);\n const serialized = storage.getItem(panelGroupKey);\n if (serialized) {\n const parsed = JSON.parse(serialized);\n if (typeof parsed === \"object\" && parsed != null) {\n return parsed;\n }\n }\n } catch (error) {}\n return null;\n}\nfunction loadPanelGroupState(autoSaveId, panels, storage) {\n var _loadSerializedPanelG, _state$panelKey;\n const state = (_loadSerializedPanelG = loadSerializedPanelGroupState(autoSaveId, storage)) !== null && _loadSerializedPanelG !== void 0 ? _loadSerializedPanelG : {};\n const panelKey = getPanelKey(panels);\n return (_state$panelKey = state[panelKey]) !== null && _state$panelKey !== void 0 ? _state$panelKey : null;\n}\nfunction savePanelGroupState(autoSaveId, panels, panelSizesBeforeCollapse, sizes, storage) {\n var _loadSerializedPanelG2;\n const panelGroupKey = getPanelGroupKey(autoSaveId);\n const panelKey = getPanelKey(panels);\n const state = (_loadSerializedPanelG2 = loadSerializedPanelGroupState(autoSaveId, storage)) !== null && _loadSerializedPanelG2 !== void 0 ? _loadSerializedPanelG2 : {};\n state[panelKey] = {\n expandToSizes: Object.fromEntries(panelSizesBeforeCollapse.entries()),\n layout: sizes\n };\n try {\n storage.setItem(panelGroupKey, JSON.stringify(state));\n } catch (error) {\n console.error(error);\n }\n}\n\n// All units must be in percentages; pixel values should be pre-converted\nfunction validatePanelGroupLayout({\n layout: prevLayout,\n panelConstraints\n}) {\n const nextLayout = [...prevLayout];\n const nextLayoutTotalSize = nextLayout.reduce((accumulated, current) => accumulated + current, 0);\n\n // Validate layout expectations\n if (nextLayout.length !== panelConstraints.length) {\n throw Error(`Invalid ${panelConstraints.length} panel layout: ${nextLayout.map(size => `${size}%`).join(\", \")}`);\n } else if (!fuzzyNumbersEqual(nextLayoutTotalSize, 100)) {\n for (let index = 0; index < panelConstraints.length; index++) {\n const unsafeSize = nextLayout[index];\n assert(unsafeSize != null, `No layout data found for index ${index}`);\n const safeSize = 100 / nextLayoutTotalSize * unsafeSize;\n nextLayout[index] = safeSize;\n }\n }\n let remainingSize = 0;\n\n // First pass: Validate the proposed layout given each panel's constraints\n for (let index = 0; index < panelConstraints.length; index++) {\n const unsafeSize = nextLayout[index];\n assert(unsafeSize != null, `No layout data found for index ${index}`);\n const safeSize = resizePanel({\n panelConstraints,\n panelIndex: index,\n size: unsafeSize\n });\n if (unsafeSize != safeSize) {\n remainingSize += unsafeSize - safeSize;\n nextLayout[index] = safeSize;\n }\n }\n\n // If there is additional, left over space, assign it to any panel(s) that permits it\n // (It's not worth taking multiple additional passes to evenly distribute)\n if (!fuzzyNumbersEqual(remainingSize, 0)) {\n for (let index = 0; index < panelConstraints.length; index++) {\n const prevSize = nextLayout[index];\n assert(prevSize != null, `No layout data found for index ${index}`);\n const unsafeSize = prevSize + remainingSize;\n const safeSize = resizePanel({\n panelConstraints,\n panelIndex: index,\n size: unsafeSize\n });\n if (prevSize !== safeSize) {\n remainingSize -= safeSize - prevSize;\n nextLayout[index] = safeSize;\n\n // Once we've used up the remainder, bail\n if (fuzzyNumbersEqual(remainingSize, 0)) {\n break;\n }\n }\n }\n }\n return nextLayout;\n}\n\nconst LOCAL_STORAGE_DEBOUNCE_INTERVAL = 100;\nconst defaultStorage = {\n getItem: name => {\n initializeDefaultStorage(defaultStorage);\n return defaultStorage.getItem(name);\n },\n setItem: (name, value) => {\n initializeDefaultStorage(defaultStorage);\n defaultStorage.setItem(name, value);\n }\n};\nconst debounceMap = {};\nfunction PanelGroupWithForwardedRef({\n autoSaveId = null,\n children,\n className: classNameFromProps = \"\",\n direction,\n forwardedRef,\n id: idFromProps = null,\n onLayout = null,\n keyboardResizeBy = null,\n storage = defaultStorage,\n style: styleFromProps,\n tagName: Type = \"div\",\n ...rest\n}) {\n const groupId = useUniqueId(idFromProps);\n const panelGroupElementRef = useRef(null);\n const [dragState, setDragState] = useState(null);\n const [layout, setLayout] = useState([]);\n const panelIdToLastNotifiedSizeMapRef = useRef({});\n const panelSizeBeforeCollapseRef = useRef(new Map());\n const prevDeltaRef = useRef(0);\n const committedValuesRef = useRef({\n autoSaveId,\n direction,\n dragState,\n id: groupId,\n keyboardResizeBy,\n onLayout,\n storage\n });\n const eagerValuesRef = useRef({\n layout,\n panelDataArray: [],\n panelDataArrayChanged: false\n });\n useRef({\n didLogIdAndOrderWarning: false,\n didLogPanelConstraintsWarning: false,\n prevPanelIds: []\n });\n useImperativeHandle(forwardedRef, () => ({\n getId: () => committedValuesRef.current.id,\n getLayout: () => {\n const {\n layout\n } = eagerValuesRef.current;\n return layout;\n },\n setLayout: unsafeLayout => {\n const {\n onLayout\n } = committedValuesRef.current;\n const {\n layout: prevLayout,\n panelDataArray\n } = eagerValuesRef.current;\n const safeLayout = validatePanelGroupLayout({\n layout: unsafeLayout,\n panelConstraints: panelDataArray.map(panelData => panelData.constraints)\n });\n if (!areEqual(prevLayout, safeLayout)) {\n setLayout(safeLayout);\n eagerValuesRef.current.layout = safeLayout;\n if (onLayout) {\n onLayout(safeLayout);\n }\n callPanelCallbacks(panelDataArray, safeLayout, panelIdToLastNotifiedSizeMapRef.current);\n }\n }\n }), []);\n useIsomorphicLayoutEffect(() => {\n committedValuesRef.current.autoSaveId = autoSaveId;\n committedValuesRef.current.direction = direction;\n committedValuesRef.current.dragState = dragState;\n committedValuesRef.current.id = groupId;\n committedValuesRef.current.onLayout = onLayout;\n committedValuesRef.current.storage = storage;\n });\n useWindowSplitterPanelGroupBehavior({\n committedValuesRef,\n eagerValuesRef,\n groupId,\n layout,\n panelDataArray: eagerValuesRef.current.panelDataArray,\n setLayout,\n panelGroupElement: panelGroupElementRef.current\n });\n useEffect(() => {\n const {\n panelDataArray\n } = eagerValuesRef.current;\n\n // If this panel has been configured to persist sizing information, save sizes to local storage.\n if (autoSaveId) {\n if (layout.length === 0 || layout.length !== panelDataArray.length) {\n return;\n }\n let debouncedSave = debounceMap[autoSaveId];\n\n // Limit the frequency of localStorage updates.\n if (debouncedSave == null) {\n debouncedSave = debounce(savePanelGroupState, LOCAL_STORAGE_DEBOUNCE_INTERVAL);\n debounceMap[autoSaveId] = debouncedSave;\n }\n\n // Clone mutable data before passing to the debounced function,\n // else we run the risk of saving an incorrect combination of mutable and immutable values to state.\n const clonedPanelDataArray = [...panelDataArray];\n const clonedPanelSizesBeforeCollapse = new Map(panelSizeBeforeCollapseRef.current);\n debouncedSave(autoSaveId, clonedPanelDataArray, clonedPanelSizesBeforeCollapse, layout, storage);\n }\n }, [autoSaveId, layout, storage]);\n\n // DEV warnings\n useEffect(() => {\n });\n\n // External APIs are safe to memoize via committed values ref\n const collapsePanel = useCallback(panelData => {\n const {\n onLayout\n } = committedValuesRef.current;\n const {\n layout: prevLayout,\n panelDataArray\n } = eagerValuesRef.current;\n if (panelData.constraints.collapsible) {\n const panelConstraintsArray = panelDataArray.map(panelData => panelData.constraints);\n const {\n collapsedSize = 0,\n panelSize,\n pivotIndices\n } = panelDataHelper(panelDataArray, panelData, prevLayout);\n assert(panelSize != null, `Panel size not found for panel \"${panelData.id}\"`);\n if (!fuzzyNumbersEqual$1(panelSize, collapsedSize)) {\n // Store size before collapse;\n // This is the size that gets restored if the expand() API is used.\n panelSizeBeforeCollapseRef.current.set(panelData.id, panelSize);\n const isLastPanel = findPanelDataIndex(panelDataArray, panelData) === panelDataArray.length - 1;\n const delta = isLastPanel ? panelSize - collapsedSize : collapsedSize - panelSize;\n const nextLayout = adjustLayoutByDelta({\n delta,\n initialLayout: prevLayout,\n panelConstraints: panelConstraintsArray,\n pivotIndices,\n prevLayout,\n trigger: \"imperative-api\"\n });\n if (!compareLayouts(prevLayout, nextLayout)) {\n setLayout(nextLayout);\n eagerValuesRef.current.layout = nextLayout;\n if (onLayout) {\n onLayout(nextLayout);\n }\n callPanelCallbacks(panelDataArray, nextLayout, panelIdToLastNotifiedSizeMapRef.current);\n }\n }\n }\n }, []);\n\n // External APIs are safe to memoize via committed values ref\n const expandPanel = useCallback(panelData => {\n const {\n onLayout\n } = committedValuesRef.current;\n const {\n layout: prevLayout,\n panelDataArray\n } = eagerValuesRef.current;\n if (panelData.constraints.collapsible) {\n const panelConstraintsArray = panelDataArray.map(panelData => panelData.constraints);\n const {\n collapsedSize = 0,\n panelSize = 0,\n minSize = 0,\n pivotIndices\n } = panelDataHelper(panelDataArray, panelData, prevLayout);\n if (fuzzyNumbersEqual$1(panelSize, collapsedSize)) {\n // Restore this panel to the size it was before it was collapsed, if possible.\n const prevPanelSize = panelSizeBeforeCollapseRef.current.get(panelData.id);\n const baseSize = prevPanelSize != null && prevPanelSize >= minSize ? prevPanelSize : minSize;\n const isLastPanel = findPanelDataIndex(panelDataArray, panelData) === panelDataArray.length - 1;\n const delta = isLastPanel ? panelSize - baseSize : baseSize - panelSize;\n const nextLayout = adjustLayoutByDelta({\n delta,\n initialLayout: prevLayout,\n panelConstraints: panelConstraintsArray,\n pivotIndices,\n prevLayout,\n trigger: \"imperative-api\"\n });\n if (!compareLayouts(prevLayout, nextLayout)) {\n setLayout(nextLayout);\n eagerValuesRef.current.layout = nextLayout;\n if (onLayout) {\n onLayout(nextLayout);\n }\n callPanelCallbacks(panelDataArray, nextLayout, panelIdToLastNotifiedSizeMapRef.current);\n }\n }\n }\n }, []);\n\n // External APIs are safe to memoize via committed values ref\n const getPanelSize = useCallback(panelData => {\n const {\n layout,\n panelDataArray\n } = eagerValuesRef.current;\n const {\n panelSize\n } = panelDataHelper(panelDataArray, panelData, layout);\n assert(panelSize != null, `Panel size not found for panel \"${panelData.id}\"`);\n return panelSize;\n }, []);\n\n // This API should never read from committedValuesRef\n const getPanelStyle = useCallback((panelData, defaultSize) => {\n const {\n panelDataArray\n } = eagerValuesRef.current;\n const panelIndex = findPanelDataIndex(panelDataArray, panelData);\n return computePanelFlexBoxStyle({\n defaultSize,\n dragState,\n layout,\n panelData: panelDataArray,\n panelIndex\n });\n }, [dragState, layout]);\n\n // External APIs are safe to memoize via committed values ref\n const isPanelCollapsed = useCallback(panelData => {\n const {\n layout,\n panelDataArray\n } = eagerValuesRef.current;\n const {\n collapsedSize = 0,\n collapsible,\n panelSize\n } = panelDataHelper(panelDataArray, panelData, layout);\n assert(panelSize != null, `Panel size not found for panel \"${panelData.id}\"`);\n return collapsible === true && fuzzyNumbersEqual$1(panelSize, collapsedSize);\n }, []);\n\n // External APIs are safe to memoize via committed values ref\n const isPanelExpanded = useCallback(panelData => {\n const {\n layout,\n panelDataArray\n } = eagerValuesRef.current;\n const {\n collapsedSize = 0,\n collapsible,\n panelSize\n } = panelDataHelper(panelDataArray, panelData, layout);\n assert(panelSize != null, `Panel size not found for panel \"${panelData.id}\"`);\n return !collapsible || fuzzyCompareNumbers(panelSize, collapsedSize) > 0;\n }, []);\n const registerPanel = useCallback(panelData => {\n const {\n panelDataArray\n } = eagerValuesRef.current;\n panelDataArray.push(panelData);\n panelDataArray.sort((panelA, panelB) => {\n const orderA = panelA.order;\n const orderB = panelB.order;\n if (orderA == null && orderB == null) {\n return 0;\n } else if (orderA == null) {\n return -1;\n } else if (orderB == null) {\n return 1;\n } else {\n return orderA - orderB;\n }\n });\n eagerValuesRef.current.panelDataArrayChanged = true;\n }, []);\n\n // (Re)calculate group layout whenever panels are registered or unregistered.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n useIsomorphicLayoutEffect(() => {\n if (eagerValuesRef.current.panelDataArrayChanged) {\n eagerValuesRef.current.panelDataArrayChanged = false;\n const {\n autoSaveId,\n onLayout,\n storage\n } = committedValuesRef.current;\n const {\n layout: prevLayout,\n panelDataArray\n } = eagerValuesRef.current;\n\n // If this panel has been configured to persist sizing information,\n // default size should be restored from local storage if possible.\n let unsafeLayout = null;\n if (autoSaveId) {\n const state = loadPanelGroupState(autoSaveId, panelDataArray, storage);\n if (state) {\n panelSizeBeforeCollapseRef.current = new Map(Object.entries(state.expandToSizes));\n unsafeLayout = state.layout;\n }\n }\n if (unsafeLayout == null) {\n unsafeLayout = calculateUnsafeDefaultLayout({\n panelDataArray\n });\n }\n\n // Validate even saved layouts in case something has changed since last render\n // e.g. for pixel groups, this could be the size of the window\n const nextLayout = validatePanelGroupLayout({\n layout: unsafeLayout,\n panelConstraints: panelDataArray.map(panelData => panelData.constraints)\n });\n if (!areEqual(prevLayout, nextLayout)) {\n setLayout(nextLayout);\n eagerValuesRef.current.layout = nextLayout;\n if (onLayout) {\n onLayout(nextLayout);\n }\n callPanelCallbacks(panelDataArray, nextLayout, panelIdToLastNotifiedSizeMapRef.current);\n }\n }\n });\n\n // Reset the cached layout if hidden by the Activity/Offscreen API\n useIsomorphicLayoutEffect(() => {\n const eagerValues = eagerValuesRef.current;\n return () => {\n eagerValues.layout = [];\n };\n }, []);\n const registerResizeHandle = useCallback(dragHandleId => {\n return function resizeHandler(event) {\n event.preventDefault();\n const panelGroupElement = panelGroupElementRef.current;\n if (!panelGroupElement) {\n return () => null;\n }\n const {\n direction,\n dragState,\n id: groupId,\n keyboardResizeBy,\n onLayout\n } = committedValuesRef.current;\n const {\n layout: prevLayout,\n panelDataArray\n } = eagerValuesRef.current;\n const {\n initialLayout\n } = dragState !== null && dragState !== void 0 ? dragState : {};\n const pivotIndices = determinePivotIndices(groupId, dragHandleId, panelGroupElement);\n let delta = calculateDeltaPercentage(event, dragHandleId, direction, dragState, keyboardResizeBy, panelGroupElement);\n if (delta === 0) {\n return;\n }\n\n // Support RTL layouts\n const isHorizontal = direction === \"horizontal\";\n if (document.dir === \"rtl\" && isHorizontal) {\n delta = -delta;\n }\n const panelConstraints = panelDataArray.map(panelData => panelData.constraints);\n const nextLayout = adjustLayoutByDelta({\n delta,\n initialLayout: initialLayout !== null && initialLayout !== void 0 ? initialLayout : prevLayout,\n panelConstraints,\n pivotIndices,\n prevLayout,\n trigger: isKeyDown(event) ? \"keyboard\" : \"mouse-or-touch\"\n });\n const layoutChanged = !compareLayouts(prevLayout, nextLayout);\n\n // Only update the cursor for layout changes triggered by touch/mouse events (not keyboard)\n // Update the cursor even if the layout hasn't changed (we may need to show an invalid cursor state)\n if (isMouseEvent(event) || isTouchEvent(event)) {\n // Watch for multiple subsequent deltas; this might occur for tiny cursor movements.\n // In this case, Panel sizes might not change–\n // but updating cursor in this scenario would cause a flicker.\n if (prevDeltaRef.current != delta) {\n prevDeltaRef.current = delta;\n if (!layoutChanged) {\n // If the pointer has moved too far to resize the panel any further, note this so we can update the cursor.\n // This mimics VS Code behavior.\n if (isHorizontal) {\n reportConstraintsViolation(dragHandleId, delta < 0 ? EXCEEDED_HORIZONTAL_MIN : EXCEEDED_HORIZONTAL_MAX);\n } else {\n reportConstraintsViolation(dragHandleId, delta < 0 ? EXCEEDED_VERTICAL_MIN : EXCEEDED_VERTICAL_MAX);\n }\n } else {\n reportConstraintsViolation(dragHandleId, 0);\n }\n }\n }\n if (layoutChanged) {\n setLayout(nextLayout);\n eagerValuesRef.current.layout = nextLayout;\n if (onLayout) {\n onLayout(nextLayout);\n }\n callPanelCallbacks(panelDataArray, nextLayout, panelIdToLastNotifiedSizeMapRef.current);\n }\n };\n }, []);\n\n // External APIs are safe to memoize via committed values ref\n const resizePanel = useCallback((panelData, unsafePanelSize) => {\n const {\n onLayout\n } = committedValuesRef.current;\n const {\n layout: prevLayout,\n panelDataArray\n } = eagerValuesRef.current;\n const panelConstraintsArray = panelDataArray.map(panelData => panelData.constraints);\n const {\n panelSize,\n pivotIndices\n } = panelDataHelper(panelDataArray, panelData, prevLayout);\n assert(panelSize != null, `Panel size not found for panel \"${panelData.id}\"`);\n const isLastPanel = findPanelDataIndex(panelDataArray, panelData) === panelDataArray.length - 1;\n const delta = isLastPanel ? panelSize - unsafePanelSize : unsafePanelSize - panelSize;\n const nextLayout = adjustLayoutByDelta({\n delta,\n initialLayout: prevLayout,\n panelConstraints: panelConstraintsArray,\n pivotIndices,\n prevLayout,\n trigger: \"imperative-api\"\n });\n if (!compareLayouts(prevLayout, nextLayout)) {\n setLayout(nextLayout);\n eagerValuesRef.current.layout = nextLayout;\n if (onLayout) {\n onLayout(nextLayout);\n }\n callPanelCallbacks(panelDataArray, nextLayout, panelIdToLastNotifiedSizeMapRef.current);\n }\n }, []);\n const reevaluatePanelConstraints = useCallback((panelData, prevConstraints) => {\n const {\n layout,\n panelDataArray\n } = eagerValuesRef.current;\n const {\n collapsedSize: prevCollapsedSize = 0,\n collapsible: prevCollapsible\n } = prevConstraints;\n const {\n collapsedSize: nextCollapsedSize = 0,\n collapsible: nextCollapsible,\n maxSize: nextMaxSize = 100,\n minSize: nextMinSize = 0\n } = panelData.constraints;\n const {\n panelSize: prevPanelSize\n } = panelDataHelper(panelDataArray, panelData, layout);\n if (prevPanelSize == null) {\n // It's possible that the panels in this group have changed since the last render\n return;\n }\n if (prevCollapsible && nextCollapsible && fuzzyNumbersEqual$1(prevPanelSize, prevCollapsedSize)) {\n if (!fuzzyNumbersEqual$1(prevCollapsedSize, nextCollapsedSize)) {\n resizePanel(panelData, nextCollapsedSize);\n }\n } else if (prevPanelSize < nextMinSize) {\n resizePanel(panelData, nextMinSize);\n } else if (prevPanelSize > nextMaxSize) {\n resizePanel(panelData, nextMaxSize);\n }\n }, [resizePanel]);\n const startDragging = useCallback((dragHandleId, event) => {\n const {\n direction\n } = committedValuesRef.current;\n const {\n layout\n } = eagerValuesRef.current;\n if (!panelGroupElementRef.current) {\n return;\n }\n const handleElement = getResizeHandleElement(dragHandleId, panelGroupElementRef.current);\n assert(handleElement, `Drag handle element not found for id \"${dragHandleId}\"`);\n const initialCursorPosition = getResizeEventCursorPosition(direction, event);\n setDragState({\n dragHandleId,\n dragHandleRect: handleElement.getBoundingClientRect(),\n initialCursorPosition,\n initialLayout: layout\n });\n }, []);\n const stopDragging = useCallback(() => {\n setDragState(null);\n }, []);\n const unregisterPanel = useCallback(panelData => {\n const {\n panelDataArray\n } = eagerValuesRef.current;\n const index = findPanelDataIndex(panelDataArray, panelData);\n if (index >= 0) {\n panelDataArray.splice(index, 1);\n\n // TRICKY\n // When a panel is removed from the group, we should delete the most recent prev-size entry for it.\n // If we don't do this, then a conditionally rendered panel might not call onResize when it's re-mounted.\n // Strict effects mode makes this tricky though because all panels will be registered, unregistered, then re-registered on mount.\n delete panelIdToLastNotifiedSizeMapRef.current[panelData.id];\n eagerValuesRef.current.panelDataArrayChanged = true;\n }\n }, []);\n const context = useMemo(() => ({\n collapsePanel,\n direction,\n dragState,\n expandPanel,\n getPanelSize,\n getPanelStyle,\n groupId,\n isPanelCollapsed,\n isPanelExpanded,\n reevaluatePanelConstraints,\n registerPanel,\n registerResizeHandle,\n resizePanel,\n startDragging,\n stopDragging,\n unregisterPanel,\n panelGroupElement: panelGroupElementRef.current\n }), [collapsePanel, dragState, direction, expandPanel, getPanelSize, getPanelStyle, groupId, isPanelCollapsed, isPanelExpanded, reevaluatePanelConstraints, registerPanel, registerResizeHandle, resizePanel, startDragging, stopDragging, unregisterPanel]);\n const style = {\n display: \"flex\",\n flexDirection: direction === \"horizontal\" ? \"row\" : \"column\",\n height: \"100%\",\n overflow: \"hidden\",\n width: \"100%\"\n };\n return createElement(PanelGroupContext.Provider, {\n value: context\n }, createElement(Type, {\n ...rest,\n children,\n className: classNameFromProps,\n id: idFromProps,\n ref: panelGroupElementRef,\n style: {\n ...style,\n ...styleFromProps\n },\n // CSS selectors\n \"data-panel-group\": \"\",\n \"data-panel-group-direction\": direction,\n \"data-panel-group-id\": groupId\n }));\n}\nconst PanelGroup = forwardRef((props, ref) => createElement(PanelGroupWithForwardedRef, {\n ...props,\n forwardedRef: ref\n}));\nPanelGroupWithForwardedRef.displayName = \"PanelGroup\";\nPanelGroup.displayName = \"forwardRef(PanelGroup)\";\nfunction findPanelDataIndex(panelDataArray, panelData) {\n return panelDataArray.findIndex(prevPanelData => prevPanelData === panelData || prevPanelData.id === panelData.id);\n}\nfunction panelDataHelper(panelDataArray, panelData, layout) {\n const panelIndex = findPanelDataIndex(panelDataArray, panelData);\n const isLastPanel = panelIndex === panelDataArray.length - 1;\n const pivotIndices = isLastPanel ? [panelIndex - 1, panelIndex] : [panelIndex, panelIndex + 1];\n const panelSize = layout[panelIndex];\n return {\n ...panelData.constraints,\n panelSize,\n pivotIndices\n };\n}\n\n// https://www.w3.org/WAI/ARIA/apg/patterns/windowsplitter/\n\nfunction useWindowSplitterResizeHandlerBehavior({\n disabled,\n handleId,\n resizeHandler,\n panelGroupElement\n}) {\n useEffect(() => {\n if (disabled || resizeHandler == null || panelGroupElement == null) {\n return;\n }\n const handleElement = getResizeHandleElement(handleId, panelGroupElement);\n if (handleElement == null) {\n return;\n }\n const onKeyDown = event => {\n if (event.defaultPrevented) {\n return;\n }\n switch (event.key) {\n case \"ArrowDown\":\n case \"ArrowLeft\":\n case \"ArrowRight\":\n case \"ArrowUp\":\n case \"End\":\n case \"Home\":\n {\n event.preventDefault();\n resizeHandler(event);\n break;\n }\n case \"F6\":\n {\n event.preventDefault();\n const groupId = handleElement.getAttribute(\"data-panel-group-id\");\n assert(groupId, `No group element found for id \"${groupId}\"`);\n const handles = getResizeHandleElementsForGroup(groupId, panelGroupElement);\n const index = getResizeHandleElementIndex(groupId, handleId, panelGroupElement);\n assert(index !== null, `No resize element found for id \"${handleId}\"`);\n const nextIndex = event.shiftKey ? index > 0 ? index - 1 : handles.length - 1 : index + 1 < handles.length ? index + 1 : 0;\n const nextHandle = handles[nextIndex];\n nextHandle.focus();\n break;\n }\n }\n };\n handleElement.addEventListener(\"keydown\", onKeyDown);\n return () => {\n handleElement.removeEventListener(\"keydown\", onKeyDown);\n };\n }, [panelGroupElement, disabled, handleId, resizeHandler]);\n}\n\nfunction PanelResizeHandle({\n children = null,\n className: classNameFromProps = \"\",\n disabled = false,\n hitAreaMargins,\n id: idFromProps,\n onDragging,\n style: styleFromProps = {},\n tabIndex = 0,\n tagName: Type = \"div\",\n ...rest\n}) {\n const elementRef = useRef(null);\n\n // Use a ref to guard against users passing inline props\n const callbacksRef = useRef({\n onDragging\n });\n useEffect(() => {\n callbacksRef.current.onDragging = onDragging;\n });\n const panelGroupContext = useContext(PanelGroupContext);\n if (panelGroupContext === null) {\n throw Error(`PanelResizeHandle components must be rendered within a PanelGroup container`);\n }\n const {\n direction,\n groupId,\n registerResizeHandle: registerResizeHandleWithParentGroup,\n startDragging,\n stopDragging,\n panelGroupElement\n } = panelGroupContext;\n const resizeHandleId = useUniqueId(idFromProps);\n const [state, setState] = useState(\"inactive\");\n const [isFocused, setIsFocused] = useState(false);\n const [resizeHandler, setResizeHandler] = useState(null);\n const committedValuesRef = useRef({\n state\n });\n useIsomorphicLayoutEffect(() => {\n committedValuesRef.current.state = state;\n });\n useEffect(() => {\n if (disabled) {\n setResizeHandler(null);\n } else {\n const resizeHandler = registerResizeHandleWithParentGroup(resizeHandleId);\n setResizeHandler(() => resizeHandler);\n }\n }, [disabled, resizeHandleId, registerResizeHandleWithParentGroup]);\n useEffect(() => {\n var _hitAreaMargins$coars, _hitAreaMargins$fine;\n if (disabled || resizeHandler == null) {\n return;\n }\n const element = elementRef.current;\n assert(element, \"Element ref not attached\");\n const setResizeHandlerState = (action, isActive, event) => {\n if (isActive) {\n switch (action) {\n case \"down\":\n {\n setState(\"drag\");\n startDragging(resizeHandleId, event);\n const {\n onDragging\n } = callbacksRef.current;\n if (onDragging) {\n onDragging(true);\n }\n break;\n }\n case \"move\":\n {\n const {\n state\n } = committedValuesRef.current;\n if (state !== \"drag\") {\n setState(\"hover\");\n }\n resizeHandler(event);\n break;\n }\n case \"up\":\n {\n setState(\"hover\");\n stopDragging();\n const {\n onDragging\n } = callbacksRef.current;\n if (onDragging) {\n onDragging(false);\n }\n break;\n }\n }\n } else {\n setState(\"inactive\");\n }\n };\n return registerResizeHandle(resizeHandleId, element, direction, {\n // Coarse inputs (e.g. finger/touch)\n coarse: (_hitAreaMargins$coars = hitAreaMargins === null || hitAreaMargins === void 0 ? void 0 : hitAreaMargins.coarse) !== null && _hitAreaMargins$coars !== void 0 ? _hitAreaMargins$coars : 15,\n // Fine inputs (e.g. mouse)\n fine: (_hitAreaMargins$fine = hitAreaMargins === null || hitAreaMargins === void 0 ? void 0 : hitAreaMargins.fine) !== null && _hitAreaMargins$fine !== void 0 ? _hitAreaMargins$fine : 5\n }, setResizeHandlerState);\n }, [direction, disabled, hitAreaMargins, registerResizeHandleWithParentGroup, resizeHandleId, resizeHandler, startDragging, stopDragging]);\n useWindowSplitterResizeHandlerBehavior({\n disabled,\n handleId: resizeHandleId,\n resizeHandler,\n panelGroupElement\n });\n const style = {\n touchAction: \"none\",\n userSelect: \"none\"\n };\n return createElement(Type, {\n ...rest,\n children,\n className: classNameFromProps,\n id: idFromProps,\n onBlur: () => setIsFocused(false),\n onFocus: () => setIsFocused(true),\n ref: elementRef,\n role: \"separator\",\n style: {\n ...style,\n ...styleFromProps\n },\n tabIndex,\n // CSS selectors\n \"data-panel-group-direction\": direction,\n \"data-panel-group-id\": groupId,\n \"data-resize-handle\": \"\",\n \"data-resize-handle-active\": state === \"drag\" ? \"pointer\" : isFocused ? \"keyboard\" : undefined,\n \"data-resize-handle-state\": state,\n \"data-panel-resize-handle-enabled\": !disabled,\n \"data-panel-resize-handle-id\": resizeHandleId\n });\n}\nPanelResizeHandle.displayName = \"PanelResizeHandle\";\n\nfunction getPanelElement(id, scope = document) {\n const element = scope.querySelector(`[data-panel-id=\"${id}\"]`);\n if (element) {\n return element;\n }\n return null;\n}\n\nfunction getPanelElementsForGroup(groupId, scope = document) {\n return Array.from(scope.querySelectorAll(`[data-panel][data-panel-group-id=\"${groupId}\"]`));\n}\n\nfunction getIntersectingRectangle(rectOne, rectTwo, strict) {\n if (!intersects(rectOne, rectTwo, strict)) {\n return {\n x: 0,\n y: 0,\n width: 0,\n height: 0\n };\n }\n return {\n x: Math.max(rectOne.x, rectTwo.x),\n y: Math.max(rectOne.y, rectTwo.y),\n width: Math.min(rectOne.x + rectOne.width, rectTwo.x + rectTwo.width) - Math.max(rectOne.x, rectTwo.x),\n height: Math.min(rectOne.y + rectOne.height, rectTwo.y + rectTwo.height) - Math.max(rectOne.y, rectTwo.y)\n };\n}\n\nexport { Panel, PanelGroup, PanelResizeHandle, assert, getIntersectingRectangle, getPanelElement, getPanelElementsForGroup, getPanelGroupElement, getResizeHandleElement, getResizeHandleElementIndex, getResizeHandleElementsForGroup, getResizeHandlePanelIds, intersects };\n"],"names":["Check","createLucideIcon","d","key","ChevronDown","ChevronUp","EllipsisVertical","cx","cy","r","Ellipsis","Pencil","Plus","RefreshCcw","Trash","X","createElement","createContext","createRef","forwardRef","useCallback","useContext","useEffect","useImperativeHandle","useLayoutEffect","useMemo","useRef","useState","React","useId","toString","useLayoutEffect_do_not_use_directly","PanelGroupContext","displayName","useIsomorphicLayoutEffect","wrappedUseId","counter","useUniqueId","idFromParams","arguments","length","undefined","idFromUseId","idRef","current","PanelWithForwardedRef","_ref","children","className","classNameFromProps","collapsedSize","collapsible","defaultSize","forwardedRef","id","idFromProps","maxSize","minSize","onCollapse","onExpand","onResize","order","style","styleFromProps","tagName","Type","rest","context","Error","collapsePanel","expandPanel","getPanelSize","getPanelStyle","groupId","isPanelCollapsed","reevaluatePanelConstraints","registerPanel","resizePanel","unregisterPanel","panelId","panelDataRef","callbacks","constraints","idIsFromProps","didLogMissingDefaultSizeWarning","prevConstraints","panelData","collapse","expand","getId","getSize","isCollapsed","isExpanded","resize","size","parseFloat","flexGrow","toFixed","Panel","props","ref","currentCursorStyle","styleElement","setGlobalCursorStyle","state","constraintFlags","verticalMin","EXCEEDED_VERTICAL_MIN","verticalMax","EXCEEDED_VERTICAL_MAX","EXCEEDED_HORIZONTAL_MIN","EXCEEDED_HORIZONTAL_MAX","getCursorStyle","document","head","appendChild","innerHTML","concat","isKeyDown","event","type","isMouseEvent","startsWith","isTouchEvent","getResizeEventCoordinates","x","clientX","y","clientY","touch","touches","Infinity","intersects","rectOne","rectTwo","strict","width","height","creates_stacking_context","node","getComputedStyle","position","zIndex","_get_parent","display","get_parent","is_flex_item","opacity","transform","webkitTransform","mixBlendMode","filter","webkitFilter","isolation","test","willChange","webkitOverflowScrolling","find_stacking_context","nodes","i","assert","get_z_index","Number","get_ancestors","ancestors","push","parentNode","ShadowRoot","host","isCoarsePointer","matchMedia","matches","getInputType","intersectingHandles","isPointerDown","ownerDocumentCounts","Map","panelConstraintFlags","registeredResizeHandlers","Set","handlePointerDown","target","recalculateIntersectingHandles","updateListeners","updateResizeHandlerStates","preventDefault","handlePointerMove","updateCursor","handlePointerUp","clear","_ref2","splice","targetElement","HTMLElement","forEach","data","element","dragHandleElement","hitAreaMargins","dragHandleRect","getBoundingClientRect","bottom","left","right","top","margin","coarse","fine","contains","a","b","common_ancestor","at","pop","z_indexes","childNodes","furthest_ancestors","child","Math","sign","compare","currentElement","didIntersect","parentElement","reportConstraintsViolation","resizeHandleId","flag","set","intersectsHorizontal","intersectsVertical","direction","removeChild","_","ownerDocument","body","removeEventListener","window","count","addEventListener","passive","action","setResizeHandlerState","isActive","includes","expectedCondition","message","console","error","PRECISION","fuzzyCompareNumbers","actual","expected","fractionDigits","fuzzyNumbersEqual$1","fuzzyNumbersEqual","_ref3","panelConstraints","panelConstraintsArray","panelIndex","min","adjustLayoutByDelta","_ref4","delta","initialLayout","pivotIndices","prevLayout","trigger","nextLayout","firstPivotIndex","secondPivotIndex","deltaApplied","index","prevSize","localDelta","abs","increment","maxAvailableDelta","minAbsDelta","deltaRemaining","safeSize","localeCompare","numeric","fuzzyLayoutsEqual","pivotIndex","unsafeSize","reduce","total","calculateAriaValues","_ref5","layout","panelsArray","currentMinSize","currentMaxSize","totalMinSize","totalMaxSize","firstIndex","valueMax","valueMin","max","valueNow","getResizeHandleElementsForGroup","scope","Array","from","querySelectorAll","getResizeHandleElementIndex","findIndex","handle","getAttribute","determinePivotIndices","dragHandleId","panelGroupElement","getPanelGroupElement","rootElement","_dataset","dataset","panelGroupId","querySelector","getResizeHandleElement","useWindowSplitterPanelGroupBehavior","_ref6","committedValuesRef","eagerValuesRef","panelDataArray","setLayout","didWarnAboutMissingResizeHandle","resizeHandleElements","resizeHandleElement","setAttribute","round","removeAttribute","eagerValues","handles","cleanupFunctions","map","handleId","idBefore","idAfter","_panelsArray$index$id","_panelsArray$index","_panelsArray$id","_panelsArray","indexOf","getResizeHandlePanelIds","onKeyDown","defaultPrevented","cleanupFunction","areEqual","arrayA","arrayB","getResizeEventCursorPosition","isHorizontal","calculateDeltaPercentage","initialDragState","keyboardResizeBy","shiftKey","movement","handleElement","initialCursorPosition","cursorPosition","groupElement","groupRect","calculateDragOffsetPercentage","callPanelCallbacks","panelIdToLastNotifiedSizeMap","lastNotifiedSize","compareLayouts","initializeDefaultStorage","storageObject","localStorage","getItem","name","setItem","value","getPanelGroupKey","autoSaveId","getPanelKey","panels","panel","JSON","stringify","sort","join","loadSerializedPanelGroupState","storage","panelGroupKey","serialized","parsed","parse","savePanelGroupState","panelSizesBeforeCollapse","sizes","_loadSerializedPanelG2","panelKey","expandToSizes","Object","fromEntries","entries","validatePanelGroupLayout","_ref9","nextLayoutTotalSize","accumulated","remainingSize","defaultStorage","debounceMap","PanelGroupWithForwardedRef","_ref10","onLayout","panelGroupElementRef","dragState","setDragState","panelIdToLastNotifiedSizeMapRef","panelSizeBeforeCollapseRef","prevDeltaRef","panelDataArrayChanged","didLogIdAndOrderWarning","didLogPanelConstraintsWarning","prevPanelIds","getLayout","unsafeLayout","safeLayout","debouncedSave","callback","durationMs","timeoutId","_len","args","_key","clearTimeout","setTimeout","debounce","clonedPanelDataArray","clonedPanelSizesBeforeCollapse","panelSize","panelDataHelper","findPanelDataIndex","prevPanelSize","get","baseSize","_ref8","precision","flexBasis","flexShrink","overflow","pointerEvents","computePanelFlexBoxStyle","isPanelExpanded","panelA","panelB","orderA","orderB","_loadSerializedPanelG","_state$panelKey","loadPanelGroupState","_ref7","numPanelsWithSizes","calculateUnsafeDefaultLayout","registerResizeHandle","dir","layoutChanged","unsafePanelSize","prevCollapsedSize","prevCollapsible","nextCollapsedSize","nextCollapsible","nextMaxSize","nextMinSize","startDragging","stopDragging","flexDirection","Provider","PanelGroup","prevPanelData","PanelResizeHandle","_ref12","disabled","onDragging","tabIndex","elementRef","callbacksRef","panelGroupContext","registerResizeHandleWithParentGroup","setState","isFocused","setIsFocused","resizeHandler","setResizeHandler","_hitAreaMargins$coars","_hitAreaMargins$fine","_ownerDocumentCounts$","add","_ownerDocumentCounts$2","delete","_ref11","focus","useWindowSplitterResizeHandlerBehavior","onBlur","onFocus","role","touchAction","userSelect"],"sourceRoot":""} \ No newline at end of file diff --git a/static/js/main.0aef8a69.js b/static/js/main.0aef8a69.js new file mode 100644 index 0000000..8643096 --- /dev/null +++ b/static/js/main.0aef8a69.js @@ -0,0 +1,3 @@ +/*! For license information please see main.0aef8a69.js.LICENSE.txt */ +(()=>{var e={4743:(e,t,n)=>{"use strict";function r(e){var t,n,o="";if("string"==typeof e||"number"==typeof e)o+=e;else if("object"==typeof e)if(Array.isArray(e))for(t=0;tp,Sc:()=>Aa,rI:()=>ga,SQ:()=>ya,_2:()=>ba,mB:()=>wa,ty:()=>va,pd:()=>xa,Wt:()=>m,o5:()=>v});const a=e=>"boolean"===typeof e?"".concat(e):0===e?"0":e,i=o,l=(e,t)=>n=>{var r;if(null==(null===t||void 0===t?void 0:t.variants))return i(e,null===n||void 0===n?void 0:n.class,null===n||void 0===n?void 0:n.className);const{variants:o,defaultVariants:l}=t,s=Object.keys(o).map((e=>{const t=null===n||void 0===n?void 0:n[e],r=null===l||void 0===l?void 0:l[e];if(null===t)return null;const i=a(t)||a(r);return o[e][i]})),u=n&&Object.entries(n).reduce(((e,t)=>{let[n,r]=t;return void 0===r||(e[n]=r),e}),{}),c=null===t||void 0===t||null===(r=t.compoundVariants)||void 0===r?void 0:r.reduce(((e,t)=>{let{class:n,className:r,...o}=t;return Object.entries(o).every((e=>{let[t,n]=e;return Array.isArray(n)?n.includes({...l,...u}[t]):{...l,...u}[t]===n}))?[...e,n,r]:e}),[]);return i(e,s,c,null===n||void 0===n?void 0:n.class,null===n||void 0===n?void 0:n.className)};var s=n(5043),u=n.t(s,2),c=n(4349),d=n(579);const f=l("inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 pointer-events-auto",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/90",destructive:"bg-destructive text-destructive-foreground hover:bg-destructive/90",outline:"border border-input bg-background hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-10 px-4 py-2",sm:"h-9 rounded-md px-3",lg:"h-11 rounded-md px-8",icon:"h-10 w-10",full:"h-10 w-full"}},defaultVariants:{variant:"default",size:"default"}}),p=s.forwardRef(((e,t)=>{let{className:n,variant:r,size:o,children:a,...i}=e;return(0,d.jsx)("button",{className:(0,c.cn)(f({variant:r,size:o,className:n})),ref:t,...i,children:a})}));p.displayName="Button";var h=n(5475);const m=e=>{let{to:t,className:n,children:r}=e;return(0,d.jsx)(h.k2,{end:!0,caseSensitive:!0,to:t,className:n,"data-testid":"route-link-".concat("string"===typeof t?t:t.pathname),children:e=>{let{isActive:t,isPending:n,isTransitioning:o}=e;return"function"===typeof r?r({isActive:t,isPending:n,isTransitioning:o}):r}})},g=l("text-foreground",{variants:{variant:{h1:"scroll-m-20 text-4xl font-extrabold tracking-tight lg:text-5xl",h2:"scroll-m-20 pb-2 text-3xl font-semibold tracking-tight first:mt-0",h3:"scroll-m-20 text-2xl font-semibold tracking-tight",h4:"scroll-m-20 text-xl font-semibold tracking-tight",h5:"scroll-m-20 text-lg font-semibold tracking-tight",h6:"scroll-m-20 text-base font-semibold tracking-tight",p:"leading-7 [&:not(:first-child)]:mt-6",blockquote:"mt-6 border-l-2 pl-6 italic",ul:"my-6 ml-6 list-disc [&>li]:mt-2",inlineCode:"relative rounded bg-muted px-[0.3rem] py-[0.2rem] font-mono text-sm font-semibold"},affects:{default:"",lead:"text-xl text-muted-foreground",large:"text-lg font-semibold",small:"text-sm font-medium leading-none",muted:"text-sm text-muted-foreground",withoutPMargin:"[&:not(:first-child)]:mt-0"}},defaultVariants:{variant:"h1",affects:"default"}}),v=s.forwardRef(((e,t)=>{let{className:n,variant:r,affects:o,...a}=e;const i=r||"h1";return(0,d.jsx)(i,{className:(0,c.cn)(g({variant:r,affects:o,className:n})),ref:t,...a})}));function y(){return y=Object.assign?Object.assign.bind():function(e){for(var t=1;t2&&void 0!==arguments[2]?arguments[2]:{};return function(r){if(null===e||void 0===e||e(r),!1===n||!r.defaultPrevented)return null===t||void 0===t?void 0:t(r)}}function w(){for(var e=arguments.length,t=new Array(e),n=0;nt.forEach((t=>function(e,t){"function"===typeof e?e(t):null!==e&&void 0!==e&&(e.current=t)}(t,e)))}function x(){for(var e=arguments.length,t=new Array(e),n=0;n1&&void 0!==arguments[1]?arguments[1]:[],n=[];const r=()=>{const t=n.map((e=>(0,s.createContext)(e)));return function(n){const r=(null===n||void 0===n?void 0:n[e])||t;return(0,s.useMemo)((()=>({["__scope".concat(e)]:{...n,[e]:r}})),[n,r])}};return r.scopeName=e,[function(t,r){const o=(0,s.createContext)(r),a=n.length;function i(t){const{scope:n,children:r,...i}=t,l=(null===n||void 0===n?void 0:n[e][a])||o,u=(0,s.useMemo)((()=>i),Object.values(i));return(0,s.createElement)(l.Provider,{value:u},r)}return n=[...n,r],i.displayName=t+"Provider",[i,function(n,i){const l=(null===i||void 0===i?void 0:i[e][a])||o,u=(0,s.useContext)(l);if(u)return u;if(void 0!==r)return r;throw new Error("`".concat(n,"` must be used within `").concat(t,"`"))}]},k(r,...t)]}function k(){for(var e=arguments.length,t=new Array(e),n=0;n{const e=t.map((e=>({useScope:e(),scopeName:e.scopeName})));return function(t){const n=e.reduce(((e,n)=>{let{useScope:r,scopeName:o}=n;return{...e,...r(t)["__scope".concat(o)]}}),{});return(0,s.useMemo)((()=>({["__scope".concat(r.scopeName)]:n})),[n])}};return o.scopeName=r.scopeName,o}function E(e){const t=(0,s.useRef)(e);return(0,s.useEffect)((()=>{t.current=e})),(0,s.useMemo)((()=>function(){for(var e,n=arguments.length,r=new Array(n),o=0;o{})}=e;const[o,a]=function(e){let{defaultProp:t,onChange:n}=e;const r=(0,s.useState)(t),[o]=r,a=(0,s.useRef)(o),i=E(n);return(0,s.useEffect)((()=>{a.current!==o&&(i(o),a.current=o)}),[o,a,i]),r}({defaultProp:n,onChange:r}),i=void 0!==t,l=i?t:o,u=E(r);return[l,(0,s.useCallback)((e=>{if(i){const n="function"===typeof e?e(t):e;n!==t&&u(n)}else a(e)}),[i,t,a,u])]}v.displayName="Typography";var R=n(7950);const O=(0,s.forwardRef)(((e,t)=>{const{children:n,...r}=e,o=s.Children.toArray(n),a=o.find(N);if(a){const e=a.props.children,n=o.map((t=>t===a?s.Children.count(e)>1?s.Children.only(null):(0,s.isValidElement)(e)?e.props.children:null:t));return(0,s.createElement)(P,y({},r,{ref:t}),(0,s.isValidElement)(e)?(0,s.cloneElement)(e,void 0,n):null)}return(0,s.createElement)(P,y({},r,{ref:t}),n)}));O.displayName="Slot";const P=(0,s.forwardRef)(((e,t)=>{const{children:n,...r}=e;return(0,s.isValidElement)(n)?(0,s.cloneElement)(n,{...T(r,n.props),ref:t?w(t,n.ref):n.ref}):s.Children.count(n)>1?s.Children.only(null):null}));P.displayName="SlotClone";const _=e=>{let{children:t}=e;return(0,s.createElement)(s.Fragment,null,t)};function N(e){return(0,s.isValidElement)(e)&&e.type===_}function T(e,t){const n={...t};for(const r in t){const o=e[r],a=t[r];/^on[A-Z]/.test(r)?o&&a?n[r]=function(){a(...arguments),o(...arguments)}:o&&(n[r]=o):"style"===r?n[r]={...o,...a}:"className"===r&&(n[r]=[o,a].filter(Boolean).join(" "))}return{...e,...n}}const L=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","span","svg","ul"].reduce(((e,t)=>{const n=(0,s.forwardRef)(((e,n)=>{const{asChild:r,...o}=e,a=r?O:t;return(0,s.useEffect)((()=>{window[Symbol.for("radix-ui")]=!0}),[]),(0,s.createElement)(a,y({},o,{ref:n}))}));return n.displayName="Primitive.".concat(t),{...e,[t]:n}}),{});function j(e,t){e&&(0,R.flushSync)((()=>e.dispatchEvent(t)))}function D(e){const t=e+"CollectionProvider",[n,r]=S(t),[o,a]=n(t,{collectionRef:{current:null},itemMap:new Map}),i=e=>{const{scope:t,children:n}=e,r=s.useRef(null),a=s.useRef(new Map).current;return s.createElement(o,{scope:t,itemMap:a,collectionRef:r},n)},l=e+"CollectionSlot",u=s.forwardRef(((e,t)=>{const{scope:n,children:r}=e,o=x(t,a(l,n).collectionRef);return s.createElement(O,{ref:o},r)})),c=e+"CollectionItemSlot",d="data-radix-collection-item",f=s.forwardRef(((e,t)=>{const{scope:n,children:r,...o}=e,i=s.useRef(null),l=x(t,i),u=a(c,n);return s.useEffect((()=>(u.itemMap.set(i,{ref:i,...o}),()=>{u.itemMap.delete(i)}))),s.createElement(O,{[d]:"",ref:l},r)}));return[{Provider:i,Slot:u,ItemSlot:f},function(t){const n=a(e+"CollectionConsumer",t);return s.useCallback((()=>{const e=n.collectionRef.current;if(!e)return[];const t=Array.from(e.querySelectorAll("[".concat(d,"]")));return Array.from(n.itemMap.values()).sort(((e,n)=>t.indexOf(e.ref.current)-t.indexOf(n.ref.current)))}),[n.collectionRef,n.itemMap])},r]}const A=(0,s.createContext)(void 0);function M(e){const t=(0,s.useContext)(A);return e||t||"ltr"}const I="dismissableLayer.update",z="dismissableLayer.pointerDownOutside",F="dismissableLayer.focusOutside";let U;const q=(0,s.createContext)({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set}),B=(0,s.forwardRef)(((e,t)=>{var n;const{disableOutsidePointerEvents:r=!1,onEscapeKeyDown:o,onPointerDownOutside:a,onFocusOutside:i,onInteractOutside:l,onDismiss:u,...c}=e,d=(0,s.useContext)(q),[f,p]=(0,s.useState)(null),h=null!==(n=null===f||void 0===f?void 0:f.ownerDocument)&&void 0!==n?n:null===globalThis||void 0===globalThis?void 0:globalThis.document,[,m]=(0,s.useState)({}),g=x(t,(e=>p(e))),v=Array.from(d.layers),[w]=[...d.layersWithOutsidePointerEventsDisabled].slice(-1),S=v.indexOf(w),k=f?v.indexOf(f):-1,C=d.layersWithOutsidePointerEventsDisabled.size>0,R=k>=S,O=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null===globalThis||void 0===globalThis?void 0:globalThis.document;const n=E(e),r=(0,s.useRef)(!1),o=(0,s.useRef)((()=>{}));return(0,s.useEffect)((()=>{const e=e=>{if(e.target&&!r.current){const a={originalEvent:e};function i(){W(z,n,a,{discrete:!0})}"touch"===e.pointerType?(t.removeEventListener("click",o.current),o.current=i,t.addEventListener("click",o.current,{once:!0})):i()}else t.removeEventListener("click",o.current);r.current=!1},a=window.setTimeout((()=>{t.addEventListener("pointerdown",e)}),0);return()=>{window.clearTimeout(a),t.removeEventListener("pointerdown",e),t.removeEventListener("click",o.current)}}),[t,n]),{onPointerDownCapture:()=>r.current=!0}}((e=>{const t=e.target,n=[...d.branches].some((e=>e.contains(t)));R&&!n&&(null===a||void 0===a||a(e),null===l||void 0===l||l(e),e.defaultPrevented||null===u||void 0===u||u())}),h),P=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null===globalThis||void 0===globalThis?void 0:globalThis.document;const n=E(e),r=(0,s.useRef)(!1);return(0,s.useEffect)((()=>{const e=e=>{if(e.target&&!r.current){W(F,n,{originalEvent:e},{discrete:!1})}};return t.addEventListener("focusin",e),()=>t.removeEventListener("focusin",e)}),[t,n]),{onFocusCapture:()=>r.current=!0,onBlurCapture:()=>r.current=!1}}((e=>{const t=e.target;[...d.branches].some((e=>e.contains(t)))||(null===i||void 0===i||i(e),null===l||void 0===l||l(e),e.defaultPrevented||null===u||void 0===u||u())}),h);return function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null===globalThis||void 0===globalThis?void 0:globalThis.document;const n=E(e);(0,s.useEffect)((()=>{const e=e=>{"Escape"===e.key&&n(e)};return t.addEventListener("keydown",e),()=>t.removeEventListener("keydown",e)}),[n,t])}((e=>{k===d.layers.size-1&&(null===o||void 0===o||o(e),!e.defaultPrevented&&u&&(e.preventDefault(),u()))}),h),(0,s.useEffect)((()=>{if(f)return r&&(0===d.layersWithOutsidePointerEventsDisabled.size&&(U=h.body.style.pointerEvents,h.body.style.pointerEvents="none"),d.layersWithOutsidePointerEventsDisabled.add(f)),d.layers.add(f),V(),()=>{r&&1===d.layersWithOutsidePointerEventsDisabled.size&&(h.body.style.pointerEvents=U)}}),[f,h,r,d]),(0,s.useEffect)((()=>()=>{f&&(d.layers.delete(f),d.layersWithOutsidePointerEventsDisabled.delete(f),V())}),[f,d]),(0,s.useEffect)((()=>{const e=()=>m({});return document.addEventListener(I,e),()=>document.removeEventListener(I,e)}),[]),(0,s.createElement)(L.div,y({},c,{ref:g,style:{pointerEvents:C?R?"auto":"none":void 0,...e.style},onFocusCapture:b(e.onFocusCapture,P.onFocusCapture),onBlurCapture:b(e.onBlurCapture,P.onBlurCapture),onPointerDownCapture:b(e.onPointerDownCapture,O.onPointerDownCapture)}))}));function V(){const e=new CustomEvent(I);document.dispatchEvent(e)}function W(e,t,n,r){let{discrete:o}=r;const a=n.originalEvent.target,i=new CustomEvent(e,{bubbles:!1,cancelable:!0,detail:n});t&&a.addEventListener(e,t,{once:!0}),o?j(a,i):a.dispatchEvent(i)}let H=0;function Q(){(0,s.useEffect)((()=>{var e,t;const n=document.querySelectorAll("[data-radix-focus-guard]");return document.body.insertAdjacentElement("afterbegin",null!==(e=n[0])&&void 0!==e?e:K()),document.body.insertAdjacentElement("beforeend",null!==(t=n[1])&&void 0!==t?t:K()),H++,()=>{1===H&&document.querySelectorAll("[data-radix-focus-guard]").forEach((e=>e.remove())),H--}}),[])}function K(){const e=document.createElement("span");return e.setAttribute("data-radix-focus-guard",""),e.tabIndex=0,e.style.cssText="outline: none; opacity: 0; position: fixed; pointer-events: none",e}const $="focusScope.autoFocusOnMount",G="focusScope.autoFocusOnUnmount",J={bubbles:!1,cancelable:!0},Y=(0,s.forwardRef)(((e,t)=>{const{loop:n=!1,trapped:r=!1,onMountAutoFocus:o,onUnmountAutoFocus:a,...i}=e,[l,u]=(0,s.useState)(null),c=E(o),d=E(a),f=(0,s.useRef)(null),p=x(t,(e=>u(e))),h=(0,s.useRef)({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}}).current;(0,s.useEffect)((()=>{if(r){function e(e){if(h.paused||!l)return;const t=e.target;l.contains(t)?f.current=t:te(f.current,{select:!0})}function t(e){if(h.paused||!l)return;const t=e.relatedTarget;null!==t&&(l.contains(t)||te(f.current,{select:!0}))}function n(e){if(document.activeElement===document.body)for(const t of e)t.removedNodes.length>0&&te(l)}document.addEventListener("focusin",e),document.addEventListener("focusout",t);const o=new MutationObserver(n);return l&&o.observe(l,{childList:!0,subtree:!0}),()=>{document.removeEventListener("focusin",e),document.removeEventListener("focusout",t),o.disconnect()}}}),[r,l,h.paused]),(0,s.useEffect)((()=>{if(l){ne.add(h);const t=document.activeElement;if(!l.contains(t)){const n=new CustomEvent($,J);l.addEventListener($,c),l.dispatchEvent(n),n.defaultPrevented||(!function(e){let{select:t=!1}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const n=document.activeElement;for(const r of e)if(te(r,{select:t}),document.activeElement!==n)return}((e=X(l),e.filter((e=>"A"!==e.tagName))),{select:!0}),document.activeElement===t&&te(l))}return()=>{l.removeEventListener($,c),setTimeout((()=>{const e=new CustomEvent(G,J);l.addEventListener(G,d),l.dispatchEvent(e),e.defaultPrevented||te(null!==t&&void 0!==t?t:document.body,{select:!0}),l.removeEventListener(G,d),ne.remove(h)}),0)}}var e}),[l,c,d,h]);const m=(0,s.useCallback)((e=>{if(!n&&!r)return;if(h.paused)return;const t="Tab"===e.key&&!e.altKey&&!e.ctrlKey&&!e.metaKey,o=document.activeElement;if(t&&o){const t=e.currentTarget,[r,a]=function(e){const t=X(e),n=Z(t,e),r=Z(t.reverse(),e);return[n,r]}(t);r&&a?e.shiftKey||o!==a?e.shiftKey&&o===r&&(e.preventDefault(),n&&te(a,{select:!0})):(e.preventDefault(),n&&te(r,{select:!0})):o===t&&e.preventDefault()}}),[n,r,h.paused]);return(0,s.createElement)(L.div,y({tabIndex:-1},i,{ref:p,onKeyDown:m}))}));function X(e){const t=[],n=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:e=>{const t="INPUT"===e.tagName&&"hidden"===e.type;return e.disabled||e.hidden||t?NodeFilter.FILTER_SKIP:e.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;n.nextNode();)t.push(n.currentNode);return t}function Z(e,t){for(const n of e)if(!ee(n,{upTo:t}))return n}function ee(e,t){let{upTo:n}=t;if("hidden"===getComputedStyle(e).visibility)return!0;for(;e;){if(void 0!==n&&e===n)return!1;if("none"===getComputedStyle(e).display)return!0;e=e.parentElement}return!1}function te(e){let{select:t=!1}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(e&&e.focus){const n=document.activeElement;e.focus({preventScroll:!0}),e!==n&&function(e){return e instanceof HTMLInputElement&&"select"in e}(e)&&t&&e.select()}}const ne=function(){let e=[];return{add(t){const n=e[0];t!==n&&(null===n||void 0===n||n.pause()),e=re(e,t),e.unshift(t)},remove(t){var n;e=re(e,t),null===(n=e[0])||void 0===n||n.resume()}}}();function re(e,t){const n=[...e],r=n.indexOf(t);return-1!==r&&n.splice(r,1),n}const oe=Boolean(null===globalThis||void 0===globalThis?void 0:globalThis.document)?s.useLayoutEffect:()=>{},ae=u["useId".toString()]||(()=>{});let ie=0;function le(e){const[t,n]=s.useState(ae());return oe((()=>{e||n((e=>null!==e&&void 0!==e?e:String(ie++)))}),[e]),e||(t?"radix-".concat(t):"")}const se=["top","right","bottom","left"],ue=Math.min,ce=Math.max,de=Math.round,fe=Math.floor,pe=e=>({x:e,y:e}),he={left:"right",right:"left",bottom:"top",top:"bottom"},me={start:"end",end:"start"};function ge(e,t,n){return ce(e,ue(t,n))}function ve(e,t){return"function"===typeof e?e(t):e}function ye(e){return e.split("-")[0]}function be(e){return e.split("-")[1]}function we(e){return"x"===e?"y":"x"}function xe(e){return"y"===e?"height":"width"}function Se(e){return["top","bottom"].includes(ye(e))?"y":"x"}function ke(e){return we(Se(e))}function Ee(e){return e.replace(/start|end/g,(e=>me[e]))}function Ce(e){return e.replace(/left|right|bottom|top/g,(e=>he[e]))}function Re(e){return"number"!==typeof e?function(e){return{top:0,right:0,bottom:0,left:0,...e}}(e):{top:e,right:e,bottom:e,left:e}}function Oe(e){const{x:t,y:n,width:r,height:o}=e;return{width:r,height:o,top:n,left:t,right:t+r,bottom:n+o,x:t,y:n}}function Pe(e,t,n){let{reference:r,floating:o}=e;const a=Se(t),i=ke(t),l=xe(i),s=ye(t),u="y"===a,c=r.x+r.width/2-o.width/2,d=r.y+r.height/2-o.height/2,f=r[l]/2-o[l]/2;let p;switch(s){case"top":p={x:c,y:r.y-o.height};break;case"bottom":p={x:c,y:r.y+r.height};break;case"right":p={x:r.x+r.width,y:d};break;case"left":p={x:r.x-o.width,y:d};break;default:p={x:r.x,y:r.y}}switch(be(t)){case"start":p[i]-=f*(n&&u?-1:1);break;case"end":p[i]+=f*(n&&u?-1:1)}return p}async function _e(e,t){var n;void 0===t&&(t={});const{x:r,y:o,platform:a,rects:i,elements:l,strategy:s}=e,{boundary:u="clippingAncestors",rootBoundary:c="viewport",elementContext:d="floating",altBoundary:f=!1,padding:p=0}=ve(t,e),h=Re(p),m=l[f?"floating"===d?"reference":"floating":d],g=Oe(await a.getClippingRect({element:null==(n=await(null==a.isElement?void 0:a.isElement(m)))||n?m:m.contextElement||await(null==a.getDocumentElement?void 0:a.getDocumentElement(l.floating)),boundary:u,rootBoundary:c,strategy:s})),v="floating"===d?{x:r,y:o,width:i.floating.width,height:i.floating.height}:i.reference,y=await(null==a.getOffsetParent?void 0:a.getOffsetParent(l.floating)),b=await(null==a.isElement?void 0:a.isElement(y))&&await(null==a.getScale?void 0:a.getScale(y))||{x:1,y:1},w=Oe(a.convertOffsetParentRelativeRectToViewportRelativeRect?await a.convertOffsetParentRelativeRectToViewportRelativeRect({elements:l,rect:v,offsetParent:y,strategy:s}):v);return{top:(g.top-w.top+h.top)/b.y,bottom:(w.bottom-g.bottom+h.bottom)/b.y,left:(g.left-w.left+h.left)/b.x,right:(w.right-g.right+h.right)/b.x}}function Ne(e,t){return{top:e.top-t.height,right:e.right-t.width,bottom:e.bottom-t.height,left:e.left-t.width}}function Te(e){return se.some((t=>e[t]>=0))}function Le(e){return Ae(e)?(e.nodeName||"").toLowerCase():"#document"}function je(e){var t;return(null==e||null==(t=e.ownerDocument)?void 0:t.defaultView)||window}function De(e){var t;return null==(t=(Ae(e)?e.ownerDocument:e.document)||window.document)?void 0:t.documentElement}function Ae(e){return e instanceof Node||e instanceof je(e).Node}function Me(e){return e instanceof Element||e instanceof je(e).Element}function Ie(e){return e instanceof HTMLElement||e instanceof je(e).HTMLElement}function ze(e){return"undefined"!==typeof ShadowRoot&&(e instanceof ShadowRoot||e instanceof je(e).ShadowRoot)}function Fe(e){const{overflow:t,overflowX:n,overflowY:r,display:o}=We(e);return/auto|scroll|overlay|hidden|clip/.test(t+r+n)&&!["inline","contents"].includes(o)}function Ue(e){return["table","td","th"].includes(Le(e))}function qe(e){const t=Be(),n=We(e);return"none"!==n.transform||"none"!==n.perspective||!!n.containerType&&"normal"!==n.containerType||!t&&!!n.backdropFilter&&"none"!==n.backdropFilter||!t&&!!n.filter&&"none"!==n.filter||["transform","perspective","filter"].some((e=>(n.willChange||"").includes(e)))||["paint","layout","strict","content"].some((e=>(n.contain||"").includes(e)))}function Be(){return!("undefined"===typeof CSS||!CSS.supports)&&CSS.supports("-webkit-backdrop-filter","none")}function Ve(e){return["html","body","#document"].includes(Le(e))}function We(e){return je(e).getComputedStyle(e)}function He(e){return Me(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function Qe(e){if("html"===Le(e))return e;const t=e.assignedSlot||e.parentNode||ze(e)&&e.host||De(e);return ze(t)?t.host:t}function Ke(e){const t=Qe(e);return Ve(t)?e.ownerDocument?e.ownerDocument.body:e.body:Ie(t)&&Fe(t)?t:Ke(t)}function $e(e,t,n){var r;void 0===t&&(t=[]),void 0===n&&(n=!0);const o=Ke(e),a=o===(null==(r=e.ownerDocument)?void 0:r.body),i=je(o);return a?t.concat(i,i.visualViewport||[],Fe(o)?o:[],i.frameElement&&n?$e(i.frameElement):[]):t.concat(o,$e(o,[],n))}function Ge(e){const t=We(e);let n=parseFloat(t.width)||0,r=parseFloat(t.height)||0;const o=Ie(e),a=o?e.offsetWidth:n,i=o?e.offsetHeight:r,l=de(n)!==a||de(r)!==i;return l&&(n=a,r=i),{width:n,height:r,$:l}}function Je(e){return Me(e)?e:e.contextElement}function Ye(e){const t=Je(e);if(!Ie(t))return pe(1);const n=t.getBoundingClientRect(),{width:r,height:o,$:a}=Ge(t);let i=(a?de(n.width):n.width)/r,l=(a?de(n.height):n.height)/o;return i&&Number.isFinite(i)||(i=1),l&&Number.isFinite(l)||(l=1),{x:i,y:l}}const Xe=pe(0);function Ze(e){const t=je(e);return Be()&&t.visualViewport?{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}:Xe}function et(e,t,n,r){void 0===t&&(t=!1),void 0===n&&(n=!1);const o=e.getBoundingClientRect(),a=Je(e);let i=pe(1);t&&(r?Me(r)&&(i=Ye(r)):i=Ye(e));const l=function(e,t,n){return void 0===t&&(t=!1),!(!n||t&&n!==je(e))&&t}(a,n,r)?Ze(a):pe(0);let s=(o.left+l.x)/i.x,u=(o.top+l.y)/i.y,c=o.width/i.x,d=o.height/i.y;if(a){const e=je(a),t=r&&Me(r)?je(r):r;let n=e,o=n.frameElement;for(;o&&r&&t!==n;){const e=Ye(o),t=o.getBoundingClientRect(),r=We(o),a=t.left+(o.clientLeft+parseFloat(r.paddingLeft))*e.x,i=t.top+(o.clientTop+parseFloat(r.paddingTop))*e.y;s*=e.x,u*=e.y,c*=e.x,d*=e.y,s+=a,u+=i,n=je(o),o=n.frameElement}}return Oe({width:c,height:d,x:s,y:u})}const tt=[":popover-open",":modal"];function nt(e){return tt.some((t=>{try{return e.matches(t)}catch(n){return!1}}))}function rt(e){return et(De(e)).left+He(e).scrollLeft}function ot(e,t,n){let r;if("viewport"===t)r=function(e,t){const n=je(e),r=De(e),o=n.visualViewport;let a=r.clientWidth,i=r.clientHeight,l=0,s=0;if(o){a=o.width,i=o.height;const e=Be();(!e||e&&"fixed"===t)&&(l=o.offsetLeft,s=o.offsetTop)}return{width:a,height:i,x:l,y:s}}(e,n);else if("document"===t)r=function(e){const t=De(e),n=He(e),r=e.ownerDocument.body,o=ce(t.scrollWidth,t.clientWidth,r.scrollWidth,r.clientWidth),a=ce(t.scrollHeight,t.clientHeight,r.scrollHeight,r.clientHeight);let i=-n.scrollLeft+rt(e);const l=-n.scrollTop;return"rtl"===We(r).direction&&(i+=ce(t.clientWidth,r.clientWidth)-o),{width:o,height:a,x:i,y:l}}(De(e));else if(Me(t))r=function(e,t){const n=et(e,!0,"fixed"===t),r=n.top+e.clientTop,o=n.left+e.clientLeft,a=Ie(e)?Ye(e):pe(1);return{width:e.clientWidth*a.x,height:e.clientHeight*a.y,x:o*a.x,y:r*a.y}}(t,n);else{const n=Ze(e);r={...t,x:t.x-n.x,y:t.y-n.y}}return Oe(r)}function at(e,t){const n=Qe(e);return!(n===t||!Me(n)||Ve(n))&&("fixed"===We(n).position||at(n,t))}function it(e,t,n){const r=Ie(t),o=De(t),a="fixed"===n,i=et(e,!0,a,t);let l={scrollLeft:0,scrollTop:0};const s=pe(0);if(r||!r&&!a)if(("body"!==Le(t)||Fe(o))&&(l=He(t)),r){const e=et(t,!0,a,t);s.x=e.x+t.clientLeft,s.y=e.y+t.clientTop}else o&&(s.x=rt(o));return{x:i.left+l.scrollLeft-s.x,y:i.top+l.scrollTop-s.y,width:i.width,height:i.height}}function lt(e){return"static"===We(e).position}function st(e,t){return Ie(e)&&"fixed"!==We(e).position?t?t(e):e.offsetParent:null}function ut(e,t){const n=je(e);if(nt(e))return n;if(!Ie(e)){let t=Qe(e);for(;t&&!Ve(t);){if(Me(t)&&!lt(t))return t;t=Qe(t)}return n}let r=st(e,t);for(;r&&Ue(r)&<(r);)r=st(r,t);return r&&Ve(r)&<(r)&&!qe(r)?n:r||function(e){let t=Qe(e);for(;Ie(t)&&!Ve(t);){if(qe(t))return t;t=Qe(t)}return null}(e)||n}const ct={convertOffsetParentRelativeRectToViewportRelativeRect:function(e){let{elements:t,rect:n,offsetParent:r,strategy:o}=e;const a="fixed"===o,i=De(r),l=!!t&&nt(t.floating);if(r===i||l&&a)return n;let s={scrollLeft:0,scrollTop:0},u=pe(1);const c=pe(0),d=Ie(r);if((d||!d&&!a)&&(("body"!==Le(r)||Fe(i))&&(s=He(r)),Ie(r))){const e=et(r);u=Ye(r),c.x=e.x+r.clientLeft,c.y=e.y+r.clientTop}return{width:n.width*u.x,height:n.height*u.y,x:n.x*u.x-s.scrollLeft*u.x+c.x,y:n.y*u.y-s.scrollTop*u.y+c.y}},getDocumentElement:De,getClippingRect:function(e){let{element:t,boundary:n,rootBoundary:r,strategy:o}=e;const a=[..."clippingAncestors"===n?nt(t)?[]:function(e,t){const n=t.get(e);if(n)return n;let r=$e(e,[],!1).filter((e=>Me(e)&&"body"!==Le(e))),o=null;const a="fixed"===We(e).position;let i=a?Qe(e):e;for(;Me(i)&&!Ve(i);){const t=We(i),n=qe(i);n||"fixed"!==t.position||(o=null),(a?!n&&!o:!n&&"static"===t.position&&o&&["absolute","fixed"].includes(o.position)||Fe(i)&&!n&&at(e,i))?r=r.filter((e=>e!==i)):o=t,i=Qe(i)}return t.set(e,r),r}(t,this._c):[].concat(n),r],i=a[0],l=a.reduce(((e,n)=>{const r=ot(t,n,o);return e.top=ce(r.top,e.top),e.right=ue(r.right,e.right),e.bottom=ue(r.bottom,e.bottom),e.left=ce(r.left,e.left),e}),ot(t,i,o));return{width:l.right-l.left,height:l.bottom-l.top,x:l.left,y:l.top}},getOffsetParent:ut,getElementRects:async function(e){const t=this.getOffsetParent||ut,n=this.getDimensions,r=await n(e.floating);return{reference:it(e.reference,await t(e.floating),e.strategy),floating:{x:0,y:0,width:r.width,height:r.height}}},getClientRects:function(e){return Array.from(e.getClientRects())},getDimensions:function(e){const{width:t,height:n}=Ge(e);return{width:t,height:n}},getScale:Ye,isElement:Me,isRTL:function(e){return"rtl"===We(e).direction}};function dt(e,t,n,r){void 0===r&&(r={});const{ancestorScroll:o=!0,ancestorResize:a=!0,elementResize:i="function"===typeof ResizeObserver,layoutShift:l="function"===typeof IntersectionObserver,animationFrame:s=!1}=r,u=Je(e),c=o||a?[...u?$e(u):[],...$e(t)]:[];c.forEach((e=>{o&&e.addEventListener("scroll",n,{passive:!0}),a&&e.addEventListener("resize",n)}));const d=u&&l?function(e,t){let n,r=null;const o=De(e);function a(){var e;clearTimeout(n),null==(e=r)||e.disconnect(),r=null}return function i(l,s){void 0===l&&(l=!1),void 0===s&&(s=1),a();const{left:u,top:c,width:d,height:f}=e.getBoundingClientRect();if(l||t(),!d||!f)return;const p={rootMargin:-fe(c)+"px "+-fe(o.clientWidth-(u+d))+"px "+-fe(o.clientHeight-(c+f))+"px "+-fe(u)+"px",threshold:ce(0,ue(1,s))||1};let h=!0;function m(e){const t=e[0].intersectionRatio;if(t!==s){if(!h)return i();t?i(!1,t):n=setTimeout((()=>{i(!1,1e-7)}),1e3)}h=!1}try{r=new IntersectionObserver(m,{...p,root:o.ownerDocument})}catch(g){r=new IntersectionObserver(m,p)}r.observe(e)}(!0),a}(u,n):null;let f,p=-1,h=null;i&&(h=new ResizeObserver((e=>{let[r]=e;r&&r.target===u&&h&&(h.unobserve(t),cancelAnimationFrame(p),p=requestAnimationFrame((()=>{var e;null==(e=h)||e.observe(t)}))),n()})),u&&!s&&h.observe(u),h.observe(t));let m=s?et(e):null;return s&&function t(){const r=et(e);!m||r.x===m.x&&r.y===m.y&&r.width===m.width&&r.height===m.height||n();m=r,f=requestAnimationFrame(t)}(),n(),()=>{var e;c.forEach((e=>{o&&e.removeEventListener("scroll",n),a&&e.removeEventListener("resize",n)})),null==d||d(),null==(e=h)||e.disconnect(),h=null,s&&cancelAnimationFrame(f)}}const ft=function(e){return void 0===e&&(e=0),{name:"offset",options:e,async fn(t){var n,r;const{x:o,y:a,placement:i,middlewareData:l}=t,s=await async function(e,t){const{placement:n,platform:r,elements:o}=e,a=await(null==r.isRTL?void 0:r.isRTL(o.floating)),i=ye(n),l=be(n),s="y"===Se(n),u=["left","top"].includes(i)?-1:1,c=a&&s?-1:1,d=ve(t,e);let{mainAxis:f,crossAxis:p,alignmentAxis:h}="number"===typeof d?{mainAxis:d,crossAxis:0,alignmentAxis:null}:{mainAxis:0,crossAxis:0,alignmentAxis:null,...d};return l&&"number"===typeof h&&(p="end"===l?-1*h:h),s?{x:p*c,y:f*u}:{x:f*u,y:p*c}}(t,e);return i===(null==(n=l.offset)?void 0:n.placement)&&null!=(r=l.arrow)&&r.alignmentOffset?{}:{x:o+s.x,y:a+s.y,data:{...s,placement:i}}}}},pt=function(e){return void 0===e&&(e={}),{name:"shift",options:e,async fn(t){const{x:n,y:r,placement:o}=t,{mainAxis:a=!0,crossAxis:i=!1,limiter:l={fn:e=>{let{x:t,y:n}=e;return{x:t,y:n}}},...s}=ve(e,t),u={x:n,y:r},c=await _e(t,s),d=Se(ye(o)),f=we(d);let p=u[f],h=u[d];if(a){const e="y"===f?"bottom":"right";p=ge(p+c["y"===f?"top":"left"],p,p-c[e])}if(i){const e="y"===d?"bottom":"right";h=ge(h+c["y"===d?"top":"left"],h,h-c[e])}const m=l.fn({...t,[f]:p,[d]:h});return{...m,data:{x:m.x-n,y:m.y-r}}}}},ht=function(e){return void 0===e&&(e={}),{name:"flip",options:e,async fn(t){var n,r;const{placement:o,middlewareData:a,rects:i,initialPlacement:l,platform:s,elements:u}=t,{mainAxis:c=!0,crossAxis:d=!0,fallbackPlacements:f,fallbackStrategy:p="bestFit",fallbackAxisSideDirection:h="none",flipAlignment:m=!0,...g}=ve(e,t);if(null!=(n=a.arrow)&&n.alignmentOffset)return{};const v=ye(o),y=ye(l)===l,b=await(null==s.isRTL?void 0:s.isRTL(u.floating)),w=f||(y||!m?[Ce(l)]:function(e){const t=Ce(e);return[Ee(e),t,Ee(t)]}(l));f||"none"===h||w.push(...function(e,t,n,r){const o=be(e);let a=function(e,t,n){const r=["left","right"],o=["right","left"],a=["top","bottom"],i=["bottom","top"];switch(e){case"top":case"bottom":return n?t?o:r:t?r:o;case"left":case"right":return t?a:i;default:return[]}}(ye(e),"start"===n,r);return o&&(a=a.map((e=>e+"-"+o)),t&&(a=a.concat(a.map(Ee)))),a}(l,m,h,b));const x=[l,...w],S=await _e(t,g),k=[];let E=(null==(r=a.flip)?void 0:r.overflows)||[];if(c&&k.push(S[v]),d){const e=function(e,t,n){void 0===n&&(n=!1);const r=be(e),o=ke(e),a=xe(o);let i="x"===o?r===(n?"end":"start")?"right":"left":"start"===r?"bottom":"top";return t.reference[a]>t.floating[a]&&(i=Ce(i)),[i,Ce(i)]}(o,i,b);k.push(S[e[0]],S[e[1]])}if(E=[...E,{placement:o,overflows:k}],!k.every((e=>e<=0))){var C,R;const e=((null==(C=a.flip)?void 0:C.index)||0)+1,t=x[e];if(t)return{data:{index:e,overflows:E},reset:{placement:t}};let n=null==(R=E.filter((e=>e.overflows[0]<=0)).sort(((e,t)=>e.overflows[1]-t.overflows[1]))[0])?void 0:R.placement;if(!n)switch(p){case"bestFit":{var O;const e=null==(O=E.map((e=>[e.placement,e.overflows.filter((e=>e>0)).reduce(((e,t)=>e+t),0)])).sort(((e,t)=>e[1]-t[1]))[0])?void 0:O[0];e&&(n=e);break}case"initialPlacement":n=l}if(o!==n)return{reset:{placement:n}}}return{}}}},mt=function(e){return void 0===e&&(e={}),{name:"size",options:e,async fn(t){const{placement:n,rects:r,platform:o,elements:a}=t,{apply:i=(()=>{}),...l}=ve(e,t),s=await _e(t,l),u=ye(n),c=be(n),d="y"===Se(n),{width:f,height:p}=r.floating;let h,m;"top"===u||"bottom"===u?(h=u,m=c===(await(null==o.isRTL?void 0:o.isRTL(a.floating))?"start":"end")?"left":"right"):(m=u,h="end"===c?"top":"bottom");const g=p-s.top-s.bottom,v=f-s.left-s.right,y=ue(p-s[h],g),b=ue(f-s[m],v),w=!t.middlewareData.shift;let x=y,S=b;if(d?S=c||w?ue(b,v):v:x=c||w?ue(y,g):g,w&&!c){const e=ce(s.left,0),t=ce(s.right,0),n=ce(s.top,0),r=ce(s.bottom,0);d?S=f-2*(0!==e||0!==t?e+t:ce(s.left,s.right)):x=p-2*(0!==n||0!==r?n+r:ce(s.top,s.bottom))}await i({...t,availableWidth:S,availableHeight:x});const k=await o.getDimensions(a.floating);return f!==k.width||p!==k.height?{reset:{rects:!0}}:{}}}},gt=function(e){return void 0===e&&(e={}),{name:"hide",options:e,async fn(t){const{rects:n}=t,{strategy:r="referenceHidden",...o}=ve(e,t);switch(r){case"referenceHidden":{const e=Ne(await _e(t,{...o,elementContext:"reference"}),n.reference);return{data:{referenceHiddenOffsets:e,referenceHidden:Te(e)}}}case"escaped":{const e=Ne(await _e(t,{...o,altBoundary:!0}),n.floating);return{data:{escapedOffsets:e,escaped:Te(e)}}}default:return{}}}}},vt=e=>({name:"arrow",options:e,async fn(t){const{x:n,y:r,placement:o,rects:a,platform:i,elements:l,middlewareData:s}=t,{element:u,padding:c=0}=ve(e,t)||{};if(null==u)return{};const d=Re(c),f={x:n,y:r},p=ke(o),h=xe(p),m=await i.getDimensions(u),g="y"===p,v=g?"top":"left",y=g?"bottom":"right",b=g?"clientHeight":"clientWidth",w=a.reference[h]+a.reference[p]-f[p]-a.floating[h],x=f[p]-a.reference[p],S=await(null==i.getOffsetParent?void 0:i.getOffsetParent(u));let k=S?S[b]:0;k&&await(null==i.isElement?void 0:i.isElement(S))||(k=l.floating[b]||a.floating[h]);const E=w/2-x/2,C=k/2-m[h]/2-1,R=ue(d[v],C),O=ue(d[y],C),P=R,_=k-m[h]-O,N=k/2-m[h]/2+E,T=ge(P,N,_),L=!s.arrow&&null!=be(o)&&N!==T&&a.reference[h]/2-(Nn&&(p=n)}if(u){var v,y;const e="y"===f?"width":"height",t=["top","left"].includes(ye(o)),n=a.reference[d]-a.floating[e]+(t&&(null==(v=i.offset)?void 0:v[d])||0)+(t?0:g.crossAxis),r=a.reference[d]+a.reference[e]+(t?0:(null==(y=i.offset)?void 0:y[d])||0)-(t?g.crossAxis:0);hr&&(h=r)}return{[f]:p,[d]:h}}}},bt=(e,t,n)=>{const r=new Map,o={platform:ct,...n},a={...o.platform,_c:r};return(async(e,t,n)=>{const{placement:r="bottom",strategy:o="absolute",middleware:a=[],platform:i}=n,l=a.filter(Boolean),s=await(null==i.isRTL?void 0:i.isRTL(t));let u=await i.getElementRects({reference:e,floating:t,strategy:o}),{x:c,y:d}=Pe(u,r,s),f=r,p={},h=0;for(let m=0;m{t.current=e})),t}const Ct=e=>({name:"arrow",options:e,fn(t){const{element:n,padding:r}="function"===typeof e?e(t):e;return n&&(o=n,{}.hasOwnProperty.call(o,"current"))?null!=n.current?vt({element:n.current,padding:r}).fn(t):{}:n?vt({element:n,padding:r}).fn(t):{};var o}}),Rt=(e,t)=>({...ft(e),options:[e,t]}),Ot=(e,t)=>({...pt(e),options:[e,t]}),Pt=(e,t)=>({...yt(e),options:[e,t]}),_t=(e,t)=>({...ht(e),options:[e,t]}),Nt=(e,t)=>({...mt(e),options:[e,t]}),Tt=(e,t)=>({...gt(e),options:[e,t]}),Lt=(e,t)=>({...Ct(e),options:[e,t]});function jt(e){const[t,n]=(0,s.useState)(void 0);return oe((()=>{if(e){n({width:e.offsetWidth,height:e.offsetHeight});const t=new ResizeObserver((t=>{if(!Array.isArray(t))return;if(!t.length)return;const r=t[0];let o,a;if("borderBoxSize"in r){const e=r.borderBoxSize,t=Array.isArray(e)?e[0]:e;o=t.inlineSize,a=t.blockSize}else o=e.offsetWidth,a=e.offsetHeight;n({width:o,height:a})}));return t.observe(e,{box:"border-box"}),()=>t.unobserve(e)}n(void 0)}),[e]),t}const Dt="Popper",[At,Mt]=S(Dt),[It,zt]=At(Dt),Ft=e=>{const{__scopePopper:t,children:n}=e,[r,o]=(0,s.useState)(null);return(0,s.createElement)(It,{scope:t,anchor:r,onAnchorChange:o},n)},Ut="PopperAnchor",qt=(0,s.forwardRef)(((e,t)=>{const{__scopePopper:n,virtualRef:r,...o}=e,a=zt(Ut,n),i=(0,s.useRef)(null),l=x(t,i);return(0,s.useEffect)((()=>{a.onAnchorChange((null===r||void 0===r?void 0:r.current)||i.current)})),r?null:(0,s.createElement)(L.div,y({},o,{ref:l}))})),Bt="PopperContent",[Vt,Wt]=At(Bt),Ht=(0,s.forwardRef)(((e,t)=>{var n,r,o,a,i,l,u,c;const{__scopePopper:d,side:f="bottom",sideOffset:p=0,align:h="center",alignOffset:m=0,arrowPadding:g=0,avoidCollisions:v=!0,collisionBoundary:b=[],collisionPadding:w=0,sticky:S="partial",hideWhenDetached:k=!1,updatePositionStrategy:C="optimized",onPlaced:O,...P}=e,_=zt(Bt,d),[N,T]=(0,s.useState)(null),j=x(t,(e=>T(e))),[D,A]=(0,s.useState)(null),M=jt(D),I=null!==(n=null===M||void 0===M?void 0:M.width)&&void 0!==n?n:0,z=null!==(r=null===M||void 0===M?void 0:M.height)&&void 0!==r?r:0,F=f+("center"!==h?"-"+h:""),U="number"===typeof w?w:{top:0,right:0,bottom:0,left:0,...w},q=Array.isArray(b)?b:[b],B=q.length>0,V={padding:U,boundary:q.filter(Qt),altBoundary:B},{refs:W,floatingStyles:H,placement:Q,isPositioned:K,middlewareData:$}=function(e){void 0===e&&(e={});const{placement:t="bottom",strategy:n="absolute",middleware:r=[],platform:o,elements:{reference:a,floating:i}={},transform:l=!0,whileElementsMounted:u,open:c}=e,[d,f]=s.useState({x:0,y:0,strategy:n,placement:t,middlewareData:{},isPositioned:!1}),[p,h]=s.useState(r);xt(p,r)||h(r);const[m,g]=s.useState(null),[v,y]=s.useState(null),b=s.useCallback((e=>{e!==k.current&&(k.current=e,g(e))}),[]),w=s.useCallback((e=>{e!==E.current&&(E.current=e,y(e))}),[]),x=a||m,S=i||v,k=s.useRef(null),E=s.useRef(null),C=s.useRef(d),O=null!=u,P=Et(u),_=Et(o),N=s.useCallback((()=>{if(!k.current||!E.current)return;const e={placement:t,strategy:n,middleware:p};_.current&&(e.platform=_.current),bt(k.current,E.current,e).then((e=>{const t={...e,isPositioned:!0};T.current&&!xt(C.current,t)&&(C.current=t,R.flushSync((()=>{f(t)})))}))}),[p,t,n,_]);wt((()=>{!1===c&&C.current.isPositioned&&(C.current.isPositioned=!1,f((e=>({...e,isPositioned:!1}))))}),[c]);const T=s.useRef(!1);wt((()=>(T.current=!0,()=>{T.current=!1})),[]),wt((()=>{if(x&&(k.current=x),S&&(E.current=S),x&&S){if(P.current)return P.current(x,S,N);N()}}),[x,S,N,P,O]);const L=s.useMemo((()=>({reference:k,floating:E,setReference:b,setFloating:w})),[b,w]),j=s.useMemo((()=>({reference:x,floating:S})),[x,S]),D=s.useMemo((()=>{const e={position:n,left:0,top:0};if(!j.floating)return e;const t=kt(j.floating,d.x),r=kt(j.floating,d.y);return l?{...e,transform:"translate("+t+"px, "+r+"px)",...St(j.floating)>=1.5&&{willChange:"transform"}}:{position:n,left:t,top:r}}),[n,l,j.floating,d.x,d.y]);return s.useMemo((()=>({...d,update:N,refs:L,elements:j,floatingStyles:D})),[d,N,L,j,D])}({strategy:"fixed",placement:F,whileElementsMounted:function(){for(var e=arguments.length,t=new Array(e),n=0;n{let{elements:t,rects:n,availableWidth:r,availableHeight:o}=e;const{width:a,height:i}=n.reference,l=t.floating.style;l.setProperty("--radix-popper-available-width","".concat(r,"px")),l.setProperty("--radix-popper-available-height","".concat(o,"px")),l.setProperty("--radix-popper-anchor-width","".concat(a,"px")),l.setProperty("--radix-popper-anchor-height","".concat(i,"px"))}}),D&&Lt({element:D,padding:g}),Kt({arrowWidth:I,arrowHeight:z}),k&&Tt({strategy:"referenceHidden",...V})]}),[G,J]=$t(Q),Y=E(O);oe((()=>{K&&(null===Y||void 0===Y||Y())}),[K,Y]);const X=null===(o=$.arrow)||void 0===o?void 0:o.x,Z=null===(a=$.arrow)||void 0===a?void 0:a.y,ee=0!==(null===(i=$.arrow)||void 0===i?void 0:i.centerOffset),[te,ne]=(0,s.useState)();return oe((()=>{N&&ne(window.getComputedStyle(N).zIndex)}),[N]),(0,s.createElement)("div",{ref:W.setFloating,"data-radix-popper-content-wrapper":"",style:{...H,transform:K?H.transform:"translate(0, -200%)",minWidth:"max-content",zIndex:te,"--radix-popper-transform-origin":[null===(l=$.transformOrigin)||void 0===l?void 0:l.x,null===(u=$.transformOrigin)||void 0===u?void 0:u.y].join(" ")},dir:e.dir},(0,s.createElement)(Vt,{scope:d,placedSide:G,onArrowChange:A,arrowX:X,arrowY:Z,shouldHideArrow:ee},(0,s.createElement)(L.div,y({"data-side":G,"data-align":J},P,{ref:j,style:{...P.style,animation:K?void 0:"none",opacity:null!==(c=$.hide)&&void 0!==c&&c.referenceHidden?0:void 0}}))))}));function Qt(e){return null!==e}const Kt=e=>({name:"transformOrigin",options:e,fn(t){var n,r,o,a,i;const{placement:l,rects:s,middlewareData:u}=t,c=0!==(null===(n=u.arrow)||void 0===n?void 0:n.centerOffset),d=c?0:e.arrowWidth,f=c?0:e.arrowHeight,[p,h]=$t(l),m={start:"0%",center:"50%",end:"100%"}[h],g=(null!==(r=null===(o=u.arrow)||void 0===o?void 0:o.x)&&void 0!==r?r:0)+d/2,v=(null!==(a=null===(i=u.arrow)||void 0===i?void 0:i.y)&&void 0!==a?a:0)+f/2;let y="",b="";return"bottom"===p?(y=c?m:"".concat(g,"px"),b="".concat(-f,"px")):"top"===p?(y=c?m:"".concat(g,"px"),b="".concat(s.floating.height+f,"px")):"right"===p?(y="".concat(-f,"px"),b=c?m:"".concat(v,"px")):"left"===p&&(y="".concat(s.floating.width+f,"px"),b=c?m:"".concat(v,"px")),{data:{x:y,y:b}}}});function $t(e){const[t,n="center"]=e.split("-");return[t,n]}const Gt=Ft,Jt=qt,Yt=Ht,Xt=(0,s.forwardRef)(((e,t)=>{var n;const{container:r=(null===globalThis||void 0===globalThis||null===(n=globalThis.document)||void 0===n?void 0:n.body),...o}=e;return r?R.createPortal((0,s.createElement)(L.div,y({},o,{ref:t})),r):null}));const Zt=e=>{const{present:t,children:n}=e,r=function(e){const[t,n]=(0,s.useState)(),r=(0,s.useRef)({}),o=(0,s.useRef)(e),a=(0,s.useRef)("none"),i=e?"mounted":"unmounted",[l,u]=function(e,t){return(0,s.useReducer)(((e,n)=>{const r=t[e][n];return null!==r&&void 0!==r?r:e}),e)}(i,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return(0,s.useEffect)((()=>{const e=en(r.current);a.current="mounted"===l?e:"none"}),[l]),oe((()=>{const t=r.current,n=o.current;if(n!==e){const r=a.current,i=en(t);if(e)u("MOUNT");else if("none"===i||"none"===(null===t||void 0===t?void 0:t.display))u("UNMOUNT");else{u(n&&r!==i?"ANIMATION_OUT":"UNMOUNT")}o.current=e}}),[e,u]),oe((()=>{if(t){const e=e=>{const n=en(r.current).includes(e.animationName);e.target===t&&n&&(0,R.flushSync)((()=>u("ANIMATION_END")))},n=e=>{e.target===t&&(a.current=en(r.current))};return t.addEventListener("animationstart",n),t.addEventListener("animationcancel",e),t.addEventListener("animationend",e),()=>{t.removeEventListener("animationstart",n),t.removeEventListener("animationcancel",e),t.removeEventListener("animationend",e)}}u("ANIMATION_END")}),[t,u]),{isPresent:["mounted","unmountSuspended"].includes(l),ref:(0,s.useCallback)((e=>{e&&(r.current=getComputedStyle(e)),n(e)}),[])}}(t),o="function"===typeof n?n({present:r.isPresent}):s.Children.only(n),a=x(r.ref,o.ref);return"function"===typeof n||r.isPresent?(0,s.cloneElement)(o,{ref:a}):null};function en(e){return(null===e||void 0===e?void 0:e.animationName)||"none"}Zt.displayName="Presence";const tn="rovingFocusGroup.onEntryFocus",nn={bubbles:!1,cancelable:!0},rn="RovingFocusGroup",[on,an,ln]=D(rn),[sn,un]=S(rn,[ln]),[cn,dn]=sn(rn),fn=(0,s.forwardRef)(((e,t)=>(0,s.createElement)(on.Provider,{scope:e.__scopeRovingFocusGroup},(0,s.createElement)(on.Slot,{scope:e.__scopeRovingFocusGroup},(0,s.createElement)(pn,y({},e,{ref:t})))))),pn=(0,s.forwardRef)(((e,t)=>{const{__scopeRovingFocusGroup:n,orientation:r,loop:o=!1,dir:a,currentTabStopId:i,defaultCurrentTabStopId:l,onCurrentTabStopIdChange:u,onEntryFocus:c,...d}=e,f=(0,s.useRef)(null),p=x(t,f),h=M(a),[m=null,g]=C({prop:i,defaultProp:l,onChange:u}),[v,w]=(0,s.useState)(!1),S=E(c),k=an(n),R=(0,s.useRef)(!1),[O,P]=(0,s.useState)(0);return(0,s.useEffect)((()=>{const e=f.current;if(e)return e.addEventListener(tn,S),()=>e.removeEventListener(tn,S)}),[S]),(0,s.createElement)(cn,{scope:n,orientation:r,dir:h,loop:o,currentTabStopId:m,onItemFocus:(0,s.useCallback)((e=>g(e)),[g]),onItemShiftTab:(0,s.useCallback)((()=>w(!0)),[]),onFocusableItemAdd:(0,s.useCallback)((()=>P((e=>e+1))),[]),onFocusableItemRemove:(0,s.useCallback)((()=>P((e=>e-1))),[])},(0,s.createElement)(L.div,y({tabIndex:v||0===O?-1:0,"data-orientation":r},d,{ref:p,style:{outline:"none",...e.style},onMouseDown:b(e.onMouseDown,(()=>{R.current=!0})),onFocus:b(e.onFocus,(e=>{const t=!R.current;if(e.target===e.currentTarget&&t&&!v){const t=new CustomEvent(tn,nn);if(e.currentTarget.dispatchEvent(t),!t.defaultPrevented){const e=k().filter((e=>e.focusable));vn([e.find((e=>e.active)),e.find((e=>e.id===m)),...e].filter(Boolean).map((e=>e.ref.current)))}}R.current=!1})),onBlur:b(e.onBlur,(()=>w(!1)))})))})),hn="RovingFocusGroupItem",mn=(0,s.forwardRef)(((e,t)=>{const{__scopeRovingFocusGroup:n,focusable:r=!0,active:o=!1,tabStopId:a,...i}=e,l=le(),u=a||l,c=dn(hn,n),d=c.currentTabStopId===u,f=an(n),{onFocusableItemAdd:p,onFocusableItemRemove:h}=c;return(0,s.useEffect)((()=>{if(r)return p(),()=>h()}),[r,p,h]),(0,s.createElement)(on.ItemSlot,{scope:n,id:u,focusable:r,active:o},(0,s.createElement)(L.span,y({tabIndex:d?0:-1,"data-orientation":c.orientation},i,{ref:t,onMouseDown:b(e.onMouseDown,(e=>{r?c.onItemFocus(u):e.preventDefault()})),onFocus:b(e.onFocus,(()=>c.onItemFocus(u))),onKeyDown:b(e.onKeyDown,(e=>{if("Tab"===e.key&&e.shiftKey)return void c.onItemShiftTab();if(e.target!==e.currentTarget)return;const t=function(e,t,n){const r=function(e,t){return"rtl"!==t?e:"ArrowLeft"===e?"ArrowRight":"ArrowRight"===e?"ArrowLeft":e}(e.key,n);return"vertical"===t&&["ArrowLeft","ArrowRight"].includes(r)||"horizontal"===t&&["ArrowUp","ArrowDown"].includes(r)?void 0:gn[r]}(e,c.orientation,c.dir);if(void 0!==t){e.preventDefault();let o=f().filter((e=>e.focusable)).map((e=>e.ref.current));if("last"===t)o.reverse();else if("prev"===t||"next"===t){"prev"===t&&o.reverse();const a=o.indexOf(e.currentTarget);o=c.loop?(r=a+1,(n=o).map(((e,t)=>n[(r+t)%n.length]))):o.slice(a+1)}setTimeout((()=>vn(o)))}var n,r}))})))})),gn={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"};function vn(e){const t=document.activeElement;for(const n of e){if(n===t)return;if(n.focus(),document.activeElement!==t)return}}const yn=fn,bn=mn;var wn=function(e){return"undefined"===typeof document?null:(Array.isArray(e)?e[0]:e).ownerDocument.body},xn=new WeakMap,Sn=new WeakMap,kn={},En=0,Cn=function(e){return e&&(e.host||Cn(e.parentNode))},Rn=function(e,t,n,r){var o=function(e,t){return t.map((function(t){if(e.contains(t))return t;var n=Cn(t);return n&&e.contains(n)?n:(console.error("aria-hidden",t,"in not contained inside",e,". Doing nothing"),null)})).filter((function(e){return Boolean(e)}))}(t,Array.isArray(e)?e:[e]);kn[n]||(kn[n]=new WeakMap);var a=kn[n],i=[],l=new Set,s=new Set(o),u=function(e){e&&!l.has(e)&&(l.add(e),u(e.parentNode))};o.forEach(u);var c=function(e){e&&!s.has(e)&&Array.prototype.forEach.call(e.children,(function(e){if(l.has(e))c(e);else try{var t=e.getAttribute(r),o=null!==t&&"false"!==t,s=(xn.get(e)||0)+1,u=(a.get(e)||0)+1;xn.set(e,s),a.set(e,u),i.push(e),1===s&&o&&Sn.set(e,!0),1===u&&e.setAttribute(n,"true"),o||e.setAttribute(r,"true")}catch(d){console.error("aria-hidden: cannot operate on ",e,d)}}))};return c(t),l.clear(),En++,function(){i.forEach((function(e){var t=xn.get(e)-1,o=a.get(e)-1;xn.set(e,t),a.set(e,o),t||(Sn.has(e)||e.removeAttribute(r),Sn.delete(e)),o||e.removeAttribute(n)})),--En||(xn=new WeakMap,xn=new WeakMap,Sn=new WeakMap,kn={})}},On=function(e,t,n){void 0===n&&(n="data-aria-hidden");var r=Array.from(Array.isArray(e)?e:[e]),o=t||wn(e);return o?(r.push.apply(r,Array.from(o.querySelectorAll("[aria-live]"))),Rn(r,o,n,"aria-hidden")):function(){return null}};var Pn=function(){return Pn=Object.assign||function(e){for(var t,n=1,r=arguments.length;n