@graphql-hive/laboratory
Version:
22,434 lines • 1.3 MB
JavaScript
import { Ju as __toESM, Ku as __commonJSMin, a as MarkerSeverity, c as Range, d as Token, f as Uri, h as languages, i as KeyMod, l as Selection, m as editor_api_exports, n as Emitter, o as MarkerTag, p as editor, qu as __export, r as KeyCode, s as Position, t as CancellationTokenSource, u as SelectionDirection } from "./editor.api-erJ7GEVs.js";
import { A as assertInterfaceType, C as GraphQLInputObjectType, D as GraphQLObjectType, E as GraphQLNonNull, K as isOutputType, M as assertObjectType, O as GraphQLScalarType, Q as print, S as GraphQLEnumType, T as GraphQLList, a as TypeKind, at as keyValMap, c as introspectionTypes, ct as parse$1, et as visit, ft as Kind, j as assertNullableType, k as GraphQLUnionType, lt as parseValue, n as valueFromAST, p as GraphQLDirective, r as GraphQLSchema, t as registerLanguage, ut as inspect, vt as isObjectLike, w as GraphQLInterfaceType, x as specifiedScalarTypes, yt as devAssert, z as isInputType } from "./monaco-editor-PHzrpXpJ.js";
import "./monaco.contribution-fOs10zIq.js";
import "./monaco.contribution-CoVlf0Jr.js";
import ReactDOM from "react-dom/client";
import * as React from "react";
import ke, { Fragment, cloneElement, createContext, createElement, forwardRef, memo, useCallback, useContext, useEffect, useId, useImperativeHandle, useLayoutEffect, useMemo, useReducer, useRef, useState } from "react";
import * as ReactDOM$2 from "react-dom";
import ReactDOM$1, { createPortal, unstable_batchedUpdates } from "react-dom";
import { BookmarkIcon, BoxIcon, CheckIcon, ChevronDownIcon, ChevronUpIcon, CircleCheckIcon, CirclePlus, CircleXIcon, ClockIcon, CopyMinusIcon, CuboidIcon, FileIcon, FilePlus2Icon, FileTextIcon, FlaskConicalIcon, FolderClockIcon, FolderIcon, FolderOpenIcon, FolderPlusIcon, FoldersIcon, GlobeIcon, GripVerticalIcon, HistoryIcon, InfoIcon, Loader2Icon, LockIcon, MaximizeIcon, MinimizeIcon, MoreHorizontalIcon, OctagonXIcon, PlayIcon, PowerIcon, PowerOffIcon, RefreshCcwIcon, RotateCcwIcon, ScrollTextIcon, SearchIcon, ServerIcon, SettingsIcon, SquarePenIcon, TrashIcon, TriangleAlertIcon, XIcon } from "lucide-react";
import * as z$1 from "zod";
import { z } from "zod";
import { useForm } from "@tanstack/react-form";
import { format } from "date-fns";
import { createClient } from "graphql-ws";
import { compressToEncodedURIComponent, decompressFromEncodedURIComponent } from "lz-string";
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
import { __assign, __rest, __spreadArray } from "tslib";
var src_default = "/*! tailwindcss v4.1.18 | MIT License | https://tailwindcss.com */\n@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-duration:initial;--tw-content:\"\";--tw-animation-delay:0s;--tw-animation-direction:normal;--tw-animation-duration:initial;--tw-animation-fill-mode:none;--tw-animation-iteration-count:1;--tw-enter-blur:0;--tw-enter-opacity:1;--tw-enter-rotate:0;--tw-enter-scale:1;--tw-enter-translate-x:0;--tw-enter-translate-y:0;--tw-exit-blur:0;--tw-exit-opacity:1;--tw-exit-rotate:0;--tw-exit-scale:1;--tw-exit-translate-x:0;--tw-exit-translate-y:0}}}@layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",\"Segoe UI Symbol\",\"Noto Color Emoji\";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,\"Liberation Mono\",\"Courier New\",monospace;--color-red-400:#ff6568;--color-red-500:#fb2c36;--color-orange-400:#ff8b1a;--color-amber-400:#fcbb00;--color-yellow-400:#fac800;--color-yellow-500:#edb200;--color-lime-400:#9de500;--color-green-400:#05df72;--color-green-500:#00c758;--color-teal-400:#00d3bd;--color-blue-400:#54a2ff;--color-indigo-400:#7d87ff;--color-pink-500:#f6339a;--color-rose-400:#ff667f;--color-gray-400:#99a1af;--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-sm:24rem;--container-lg:32rem;--container-2xl:42rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-base:1rem;--text-base--line-height:calc(1.5/1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75/1.125);--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--tracking-tight:-.025em;--tracking-widest:.1em;--leading-snug:1.375;--leading-normal:1.5;--leading-relaxed:1.625;--radius-xs:.125rem;--animate-spin:spin 1s linear infinite;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-accent:hsl(var(--accent));--color-ring:hsl(var(--ring))}@supports (color:lab(0% 0 0)){:root,:host{--color-red-400:lab(63.7053% 60.745 31.3109);--color-red-500:lab(55.4814% 75.0732 48.8528);--color-orange-400:lab(70.0429% 42.5156 75.8207);--color-amber-400:lab(80.1641% 16.6016 99.2089);--color-yellow-400:lab(83.2664% 8.65132 106.895);--color-yellow-500:lab(76.3898% 14.5258 98.4589);--color-lime-400:lab(83.7876% -45.0447 88.4738);--color-green-400:lab(78.503% -64.9264 39.7492);--color-green-500:lab(70.5521% -66.5147 45.8073);--color-teal-400:lab(76.0109% -53.3483 -2.27906);--color-blue-400:lab(65.0361% -1.42065 -56.9802);--color-indigo-400:lab(59.866% 22.4834 -64.4485);--color-pink-500:lab(56.9303% 76.8162 -8.07021);--color-rose-400:lab(64.4124% 63.0291 19.2068);--color-gray-400:lab(65.9269% -.832677 -8.17474)}}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",\"Segoe UI Symbol\",\"Noto Color Emoji\");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,\"Liberation Mono\",\"Courier New\",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components{*{--tw-border-style:solid;--tw-translate-x:0;--tw-translate-y:0;outline-color:hsl(var(--ring))}@supports (color:color-mix(in lab, red, red)){*{outline-color:color-mix(in oklab,hsl(var(--ring))50%,transparent)}}*,:after,:before,::backdrop{border:0 solid hsl(var(--border))}}@layer utilities{.pointer-events-none{pointer-events:none}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:calc(var(--spacing)*0)}.top-0{top:calc(var(--spacing)*0)}.top-1\\/2{top:50%}.top-4{top:calc(var(--spacing)*4)}.top-\\[50\\%\\]{top:50%}.right-2{right:calc(var(--spacing)*2)}.right-4{right:calc(var(--spacing)*4)}.right-5{right:calc(var(--spacing)*5)}.bottom-0{bottom:calc(var(--spacing)*0)}.left-0{left:calc(var(--spacing)*0)}.left-2{left:calc(var(--spacing)*2)}.left-5{left:calc(var(--spacing)*5)}.left-\\[50\\%\\]{left:50%}.-z-10{z-index:calc(10*-1)}.-z-20{z-index:calc(20*-1)}.z-0{z-index:0}.z-10{z-index:10}.z-50{z-index:50}.order-first{order:-9999}.order-last{order:9999}.col-start-2{grid-column-start:2}.row-span-2{grid-row:span 2/span 2}.row-start-1{grid-row-start:1}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.m-0\\!{margin:calc(var(--spacing)*0)!important}.-mx-1{margin-inline:calc(var(--spacing)*-1)}.mx-auto{margin-inline:auto}.-my-2{margin-block:calc(var(--spacing)*-2)}.my-1{margin-block:calc(var(--spacing)*1)}.mt-auto{margin-top:auto}.mb-2{margin-bottom:calc(var(--spacing)*2)}.mb-3{margin-bottom:calc(var(--spacing)*3)}.mb-px{margin-bottom:1px}.ml-2{margin-left:calc(var(--spacing)*2)}.ml-3{margin-left:calc(var(--spacing)*3)}.ml-4{margin-left:calc(var(--spacing)*4)}.ml-auto{margin-left:auto}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline-flex{display:inline-flex}.aspect-square{aspect-ratio:1}.size-2{width:calc(var(--spacing)*2);height:calc(var(--spacing)*2)}.size-2\\.5{width:calc(var(--spacing)*2.5);height:calc(var(--spacing)*2.5)}.size-3{width:calc(var(--spacing)*3);height:calc(var(--spacing)*3)}.size-3\\.5{width:calc(var(--spacing)*3.5);height:calc(var(--spacing)*3.5)}.size-4{width:calc(var(--spacing)*4);height:calc(var(--spacing)*4)}.size-5{width:calc(var(--spacing)*5);height:calc(var(--spacing)*5)}.size-6{width:calc(var(--spacing)*6);height:calc(var(--spacing)*6)}.size-8{width:calc(var(--spacing)*8);height:calc(var(--spacing)*8)}.size-9{width:calc(var(--spacing)*9);height:calc(var(--spacing)*9)}.size-10{width:calc(var(--spacing)*10);height:calc(var(--spacing)*10)}.size-full{width:100%;height:100%}.h-2\\.5{height:calc(var(--spacing)*2.5)}.h-4{height:calc(var(--spacing)*4)}.h-5{height:calc(var(--spacing)*5)}.h-6{height:calc(var(--spacing)*6)}.h-8{height:calc(var(--spacing)*8)}.h-9{height:calc(var(--spacing)*9)}.h-10{height:calc(var(--spacing)*10)}.h-12{height:calc(var(--spacing)*12)}.h-96{height:calc(var(--spacing)*96)}.h-\\[1\\.15rem\\]{height:1.15rem}.h-\\[49\\.5px\\]{height:49.5px}.h-\\[calc\\(100\\%-1px\\)\\]{height:calc(100% - 1px)}.h-\\[var\\(--radix-select-trigger-height\\)\\]{height:var(--radix-select-trigger-height)}.h-auto{height:auto}.h-full{height:100%}.h-px{height:1px}.max-h-\\(--radix-context-menu-content-available-height\\){max-height:var(--radix-context-menu-content-available-height)}.max-h-\\[300px\\]{max-height:300px}.max-h-\\[var\\(--radix-select-content-available-height\\)\\]{max-height:var(--radix-select-content-available-height)}.min-h-16{min-height:calc(var(--spacing)*16)}.w-2\\.5{width:calc(var(--spacing)*2.5)}.w-3{width:calc(var(--spacing)*3)}.w-8{width:calc(var(--spacing)*8)}.w-12{width:calc(var(--spacing)*12)}.w-56{width:calc(var(--spacing)*56)}.w-fit{width:fit-content}.w-full{width:100%}.w-max{width:max-content}.w-px{width:1px}.max-w-2xl{max-width:var(--container-2xl)}.max-w-\\[calc\\(100\\%-2rem\\)\\]{max-width:calc(100% - 2rem)}.max-w-sm{max-width:var(--container-sm)}.min-w-0{min-width:calc(var(--spacing)*0)}.min-w-8{min-width:calc(var(--spacing)*8)}.min-w-9{min-width:calc(var(--spacing)*9)}.min-w-10{min-width:calc(var(--spacing)*10)}.min-w-\\[8rem\\]{min-width:8rem}.min-w-\\[var\\(--radix-select-trigger-width\\)\\]{min-width:var(--radix-select-trigger-width)}.flex-1{flex:1}.shrink-0{flex-shrink:0}.grow-0{flex-grow:0}.origin-\\(--radix-context-menu-content-transform-origin\\){transform-origin:var(--radix-context-menu-content-transform-origin)}.origin-\\[var\\(--radix-dropdown-menu-content-transform-origin\\)\\]{transform-origin:var(--radix-dropdown-menu-content-transform-origin)}.origin-\\[var\\(--radix-select-content-transform-origin\\)\\]{transform-origin:var(--radix-select-content-transform-origin)}.origin-\\[var\\(--radix-tooltip-content-transform-origin\\)\\]{transform-origin:var(--radix-tooltip-content-transform-origin)}.translate-x-\\[-50\\%\\]{--tw-translate-x:-50%;translate:var(--tw-translate-x)var(--tw-translate-y)}.-translate-y-1\\/2{--tw-translate-y:calc(calc(1/2*100%)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-y-\\[-50\\%\\]{--tw-translate-y:-50%;translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-y-\\[calc\\(-50\\%_-_2px\\)\\]{--tw-translate-y:calc(-50% - 2px);translate:var(--tw-translate-x)var(--tw-translate-y)}.-rotate-90{rotate:-90deg}.rotate-45{rotate:45deg}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.animate-in{animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.animate-spin{animation:var(--animate-spin)}.cursor-default{cursor:default}.cursor-grab{cursor:grab}.cursor-grabbing{cursor:grabbing}.cursor-pointer{cursor:pointer}.cursor-text{cursor:text}.touch-none{touch-action:none}.resize-none{resize:none}.scroll-my-1{scroll-margin-block:calc(var(--spacing)*1)}.scroll-py-1{scroll-padding-block:calc(var(--spacing)*1)}.list-disc{list-style-type:disc}.auto-rows-min{grid-auto-rows:min-content}.grid-cols-\\[1fr_auto\\]{grid-template-columns:1fr auto}.grid-rows-\\[auto_1fr\\]{grid-template-rows:auto 1fr}.grid-rows-\\[auto_auto\\]{grid-template-rows:auto auto}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-row{flex-direction:row}.place-content-center{place-content:center}.items-center{align-items:center}.items-start{align-items:flex-start}.items-stretch{align-items:stretch}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-start{justify-content:flex-start}.gap-0{gap:calc(var(--spacing)*0)}.gap-1{gap:calc(var(--spacing)*1)}.gap-1\\.5{gap:calc(var(--spacing)*1.5)}.gap-2{gap:calc(var(--spacing)*2)}.gap-3{gap:calc(var(--spacing)*3)}.gap-4{gap:calc(var(--spacing)*4)}.gap-6{gap:calc(var(--spacing)*6)}.gap-7{gap:calc(var(--spacing)*7)}.self-start{align-self:flex-start}.self-stretch{align-self:stretch}.justify-self-end{justify-self:flex-end}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-hidden{overflow:hidden}.overflow-x-hidden{overflow-x:hidden}.overflow-y-auto{overflow-y:auto}.rounded-\\[2px\\]{border-radius:2px}.rounded-\\[4px\\]{border-radius:4px}.rounded-\\[calc\\(var\\(--radius\\)-5px\\)\\]{border-radius:calc(var(--radius) - 5px)}.rounded-\\[inherit\\]{border-radius:inherit}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-none{border-radius:0}.rounded-sm{border-radius:calc(var(--radius) - 4px)}.rounded-xl{border-radius:calc(var(--radius) + 4px)}.rounded-xs{border-radius:var(--radius-xs)}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-t-2{border-top-style:var(--tw-border-style);border-top-width:2px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-border{border-color:hsl(var(--border))}.border-input{border-color:hsl(var(--input))}.border-primary{border-color:hsl(var(--primary))}.border-transparent{border-color:#0000}.border-t-transparent{border-top-color:#0000}.border-l-transparent{border-left-color:#0000}.bg-accent\\/50{background-color:hsl(var(--accent))}@supports (color:color-mix(in lab, red, red)){.bg-accent\\/50{background-color:color-mix(in oklab,hsl(var(--accent))50%,transparent)}}.bg-background{background-color:hsl(var(--background))}.bg-black\\/50{background-color:#00000080}@supports (color:color-mix(in lab, red, red)){.bg-black\\/50{background-color:color-mix(in oklab,var(--color-black)50%,transparent)}}.bg-border{background-color:hsl(var(--border))}.bg-card{background-color:hsl(var(--card))}.bg-destructive\\/60{background-color:hsl(var(--destructive))}@supports (color:color-mix(in lab, red, red)){.bg-destructive\\/60{background-color:color-mix(in oklab,hsl(var(--destructive))60%,transparent)}}.bg-foreground{background-color:hsl(var(--foreground))}.bg-green-400\\/10{background-color:#05df721a}@supports (color:color-mix(in lab, red, red)){.bg-green-400\\/10{background-color:color-mix(in oklab,var(--color-green-400)10%,transparent)}}.bg-input,.bg-input\\/30{background-color:hsl(var(--input))}@supports (color:color-mix(in lab, red, red)){.bg-input\\/30{background-color:color-mix(in oklab,hsl(var(--input))30%,transparent)}}.bg-muted{background-color:hsl(var(--muted))}.bg-popover{background-color:hsl(var(--popover))}.bg-primary{background-color:hsl(var(--primary))}.bg-red-400\\/10{background-color:#ff65681a}@supports (color:color-mix(in lab, red, red)){.bg-red-400\\/10{background-color:color-mix(in oklab,var(--color-red-400)10%,transparent)}}.bg-secondary{background-color:hsl(var(--secondary))}.bg-transparent{background-color:#0000}.fill-current{fill:currentColor}.fill-foreground{fill:hsl(var(--foreground))}.p-0{padding:calc(var(--spacing)*0)}.p-1{padding:calc(var(--spacing)*1)}.p-1\\!{padding:calc(var(--spacing)*1)!important}.p-3{padding:calc(var(--spacing)*3)}.p-6{padding:calc(var(--spacing)*6)}.p-\\[3px\\]{padding:3px}.p-px{padding:1px}.px-0\\!{padding-inline:calc(var(--spacing)*0)!important}.px-1\\.5{padding-inline:calc(var(--spacing)*1.5)}.px-2{padding-inline:calc(var(--spacing)*2)}.px-2\\.5{padding-inline:calc(var(--spacing)*2.5)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-4{padding-inline:calc(var(--spacing)*4)}.px-6{padding-inline:calc(var(--spacing)*6)}.px-7{padding-inline:calc(var(--spacing)*7)}.py-0\\.5{padding-block:calc(var(--spacing)*.5)}.py-1{padding-block:calc(var(--spacing)*1)}.py-1\\.5{padding-block:calc(var(--spacing)*1.5)}.py-2{padding-block:calc(var(--spacing)*2)}.py-3{padding-block:calc(var(--spacing)*3)}.py-6{padding-block:calc(var(--spacing)*6)}.pt-3{padding-top:calc(var(--spacing)*3)}.pr-0\\!{padding-right:calc(var(--spacing)*0)!important}.pr-2{padding-right:calc(var(--spacing)*2)}.pr-3{padding-right:calc(var(--spacing)*3)}.pr-8{padding-right:calc(var(--spacing)*8)}.pb-0{padding-bottom:calc(var(--spacing)*0)}.pb-1{padding-bottom:calc(var(--spacing)*1)}.pb-3{padding-bottom:calc(var(--spacing)*3)}.pl-1{padding-left:calc(var(--spacing)*1)}.pl-2{padding-left:calc(var(--spacing)*2)}.pl-3{padding-left:calc(var(--spacing)*3)}.pl-8{padding-left:calc(var(--spacing)*8)}.text-center{text-align:center}.font-mono{font-family:var(--font-mono)}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-sm\\/relaxed{font-size:var(--text-sm);line-height:var(--leading-relaxed)}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.leading-none{--tw-leading:1;line-height:1}.leading-normal{--tw-leading:var(--leading-normal);line-height:var(--leading-normal)}.leading-snug{--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-widest{--tw-tracking:var(--tracking-widest);letter-spacing:var(--tracking-widest)}.text-balance{text-wrap:balance}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.\\!text-white{color:var(--color-white)!important}.text-amber-400{color:var(--color-amber-400)}.text-background{color:hsl(var(--background))}.text-blue-400{color:var(--color-blue-400)}.text-card-foreground{color:hsl(var(--card-foreground))}.text-current{color:currentColor}.text-destructive{color:hsl(var(--destructive))}.text-foreground{color:hsl(var(--foreground))}.text-gray-400{color:var(--color-gray-400)}.text-green-400{color:var(--color-green-400)}.text-green-500{color:var(--color-green-500)}.text-indigo-400{color:var(--color-indigo-400)}.text-lime-400{color:var(--color-lime-400)}.text-muted-foreground{color:hsl(var(--muted-foreground))}.text-muted-foreground\\!{color:hsl(var(--muted-foreground))!important}.text-orange-400{color:var(--color-orange-400)}.text-pink-500{color:var(--color-pink-500)}.text-popover-foreground{color:hsl(var(--popover-foreground))}.text-primary{color:hsl(var(--primary))}.text-primary-foreground{color:hsl(var(--primary-foreground))}.text-red-400{color:var(--color-red-400)}.text-red-500{color:var(--color-red-500)}.text-rose-400{color:var(--color-rose-400)}.text-secondary-foreground{color:hsl(var(--secondary-foreground))}.text-teal-400{color:var(--color-teal-400)}.text-white{color:var(--color-white)}.text-yellow-400{color:var(--color-yellow-400)}.capitalize{text-transform:capitalize}.italic{font-style:italic}.underline-offset-4{text-underline-offset:4px}.opacity-0{opacity:0}.opacity-50{opacity:.5}.opacity-70{opacity:.7}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-none{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-0{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(0px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-offset-background{--tw-ring-offset-color:hsl(var(--background))}.outline-hidden{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.outline-hidden{outline-offset:2px;outline:2px solid #0000}}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.transition-\\[color\\,box-shadow\\]{transition-property:color,box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-shadow{transition-property:box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-none{transition-property:none}.duration-200{--tw-duration:.2s;transition-duration:.2s}.fade-in-0{--tw-enter-opacity:0}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.zoom-in-95{--tw-enter-scale:.95}.running{animation-play-state:running}@media (hover:hover){.group-hover\\:bg-accent\\/50:is(:where(.group):hover *){background-color:hsl(var(--accent))}@supports (color:color-mix(in lab, red, red)){.group-hover\\:bg-accent\\/50:is(:where(.group):hover *){background-color:color-mix(in oklab,hsl(var(--accent))50%,transparent)}}.group-hover\\:opacity-100:is(:where(.group):hover *){opacity:1}}.group-has-\\[\\[data-orientation\\=horizontal\\]\\]\\/field\\:text-balance:is(:where(.group\\/field):has([data-orientation=horizontal]) *){text-wrap:balance}.group-has-\\[\\>input\\]\\/input-group\\:pt-2\\.5:is(:where(.group\\/input-group):has(>input) *){padding-top:calc(var(--spacing)*2.5)}.group-has-\\[\\>input\\]\\/input-group\\:pb-2\\.5:is(:where(.group\\/input-group):has(>input) *){padding-bottom:calc(var(--spacing)*2.5)}.group-data-\\[disabled\\=true\\]\\:pointer-events-none:is(:where(.group)[data-disabled=true] *){pointer-events:none}.group-data-\\[disabled\\=true\\]\\:opacity-50:is(:where(.group)[data-disabled=true] *),.group-data-\\[disabled\\=true\\]\\/field\\:opacity-50:is(:where(.group\\/field)[data-disabled=true] *),.group-data-\\[disabled\\=true\\]\\/input-group\\:opacity-50:is(:where(.group\\/input-group)[data-disabled=true] *){opacity:.5}.group-data-\\[variant\\=outline\\]\\/field-group\\:-mb-2:is(:where(.group\\/field-group)[data-variant=outline] *){margin-bottom:calc(var(--spacing)*-2)}.peer-disabled\\:cursor-not-allowed:is(:where(.peer):disabled~*){cursor:not-allowed}.peer-disabled\\:opacity-50:is(:where(.peer):disabled~*){opacity:.5}.selection\\:bg-primary ::selection,.selection\\:bg-primary::selection{background-color:hsl(var(--primary))}.selection\\:text-primary-foreground ::selection,.selection\\:text-primary-foreground::selection{color:hsl(var(--primary-foreground))}.file\\:inline-flex::file-selector-button{display:inline-flex}.file\\:h-7::file-selector-button{height:calc(var(--spacing)*7)}.file\\:border-0::file-selector-button{border-style:var(--tw-border-style);border-width:0}.file\\:bg-transparent::file-selector-button{background-color:#0000}.file\\:text-sm::file-selector-button{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.file\\:font-medium::file-selector-button{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.file\\:text-foreground::file-selector-button{color:hsl(var(--foreground))}.placeholder\\:text-muted-foreground::placeholder{color:hsl(var(--muted-foreground))}.after\\:absolute:after{content:var(--tw-content);position:absolute}.after\\:inset-y-0:after{content:var(--tw-content);inset-block:calc(var(--spacing)*0)}.after\\:left-1\\/2:after{content:var(--tw-content);left:50%}.after\\:w-1:after{content:var(--tw-content);width:calc(var(--spacing)*1)}.after\\:-translate-x-1\\/2:after{content:var(--tw-content);--tw-translate-x:calc(calc(1/2*100%)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.last\\:mt-0:last-child{margin-top:calc(var(--spacing)*0)}@media (hover:hover){.hover\\:bg-accent:hover,.hover\\:bg-accent\\/50:hover{background-color:hsl(var(--accent))}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-accent\\/50:hover{background-color:color-mix(in oklab,hsl(var(--accent))50%,transparent)}}.hover\\:bg-destructive\\/90:hover{background-color:hsl(var(--destructive))}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-destructive\\/90:hover{background-color:color-mix(in oklab,hsl(var(--destructive))90%,transparent)}}.hover\\:bg-input\\/50:hover{background-color:hsl(var(--input))}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-input\\/50:hover{background-color:color-mix(in oklab,hsl(var(--input))50%,transparent)}}.hover\\:bg-muted:hover{background-color:hsl(var(--muted))}.hover\\:bg-primary\\/90:hover{background-color:hsl(var(--primary))}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-primary\\/90:hover{background-color:color-mix(in oklab,hsl(var(--primary))90%,transparent)}}.hover\\:bg-secondary\\/80:hover{background-color:hsl(var(--secondary))}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-secondary\\/80:hover{background-color:color-mix(in oklab,hsl(var(--secondary))80%,transparent)}}.hover\\:text-accent-foreground:hover{color:hsl(var(--accent-foreground))}.hover\\:text-destructive:hover{color:hsl(var(--destructive))}.hover\\:text-foreground:hover{color:hsl(var(--foreground))}.hover\\:text-muted-foreground:hover{color:hsl(var(--muted-foreground))}.hover\\:text-primary:hover{color:hsl(var(--primary))}.hover\\:underline:hover{text-decoration-line:underline}.hover\\:opacity-100:hover{opacity:1}}.focus\\:bg-accent:focus{background-color:hsl(var(--accent))}.focus\\:text-accent-foreground:focus{color:hsl(var(--accent-foreground))}.focus\\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\\:ring-ring:focus{--tw-ring-color:hsl(var(--ring))}.focus\\:ring-offset-2:focus{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}.focus\\:outline-hidden:focus{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.focus\\:outline-hidden:focus{outline-offset:2px;outline:2px solid #0000}}.focus-visible\\:border-ring:focus-visible{border-color:hsl(var(--ring))}.focus-visible\\:ring-0:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(0px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\\:ring-1:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\\:ring-\\[3px\\]:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(3px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\\:ring-destructive\\/40:focus-visible{--tw-ring-color:hsl(var(--destructive))}@supports (color:color-mix(in lab, red, red)){.focus-visible\\:ring-destructive\\/40:focus-visible{--tw-ring-color:color-mix(in oklab,hsl(var(--destructive))40%,transparent)}}.focus-visible\\:ring-ring:focus-visible,.focus-visible\\:ring-ring\\/50:focus-visible{--tw-ring-color:hsl(var(--ring))}@supports (color:color-mix(in lab, red, red)){.focus-visible\\:ring-ring\\/50:focus-visible{--tw-ring-color:color-mix(in oklab,hsl(var(--ring))50%,transparent)}}.focus-visible\\:ring-offset-1:focus-visible{--tw-ring-offset-width:1px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}.focus-visible\\:outline-hidden:focus-visible{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.focus-visible\\:outline-hidden:focus-visible{outline-offset:2px;outline:2px solid #0000}}.focus-visible\\:outline-1:focus-visible{outline-style:var(--tw-outline-style);outline-width:1px}.focus-visible\\:outline-ring:focus-visible{outline-color:hsl(var(--ring))}:is(.\\*\\:focus-visible\\:relative>*):focus-visible{position:relative}:is(.\\*\\:focus-visible\\:z-10>*):focus-visible{z-index:10}.disabled\\:pointer-events-none:disabled{pointer-events:none}.disabled\\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\\:opacity-50:disabled{opacity:.5}.has-\\[\\[data-slot\\=input-group-control\\]\\:focus-visible\\]\\:border-ring:has([data-slot=input-group-control]:focus-visible){border-color:hsl(var(--ring))}.has-\\[\\[data-slot\\=input-group-control\\]\\:focus-visible\\]\\:ring-\\[3px\\]:has([data-slot=input-group-control]:focus-visible){--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(3px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.has-\\[\\[data-slot\\=input-group-control\\]\\:focus-visible\\]\\:ring-ring\\/50:has([data-slot=input-group-control]:focus-visible){--tw-ring-color:hsl(var(--ring))}@supports (color:color-mix(in lab, red, red)){.has-\\[\\[data-slot\\=input-group-control\\]\\:focus-visible\\]\\:ring-ring\\/50:has([data-slot=input-group-control]:focus-visible){--tw-ring-color:color-mix(in oklab,hsl(var(--ring))50%,transparent)}}.has-\\[\\[data-slot\\]\\[aria-invalid\\=true\\]\\]\\:border-destructive:has([data-slot][aria-invalid=true]){border-color:hsl(var(--destructive))}.has-\\[\\[data-slot\\]\\[aria-invalid\\=true\\]\\]\\:ring-destructive\\/20:has([data-slot][aria-invalid=true]){--tw-ring-color:hsl(var(--destructive))}@supports (color:color-mix(in lab, red, red)){.has-\\[\\[data-slot\\]\\[aria-invalid\\=true\\]\\]\\:ring-destructive\\/20:has([data-slot][aria-invalid=true]){--tw-ring-color:color-mix(in oklab,hsl(var(--destructive))20%,transparent)}}.has-\\[\\>\\[data-align\\=block-end\\]\\]\\:h-auto:has(>[data-align=block-end]){height:auto}.has-\\[\\>\\[data-align\\=block-end\\]\\]\\:flex-col:has(>[data-align=block-end]){flex-direction:column}.has-\\[\\>\\[data-align\\=block-start\\]\\]\\:h-auto:has(>[data-align=block-start]){height:auto}.has-\\[\\>\\[data-align\\=block-start\\]\\]\\:flex-col:has(>[data-align=block-start]){flex-direction:column}.has-\\[\\>\\[data-slot\\=button-group\\]\\]\\:gap-2:has(>[data-slot=button-group]){gap:calc(var(--spacing)*2)}.has-\\[\\>\\[data-slot\\=card-action\\]\\]\\:grid-cols-\\[1fr_auto\\]:has(>[data-slot=card-action]){grid-template-columns:1fr auto}.has-\\[\\>\\[data-slot\\=checkbox-group\\]\\]\\:gap-3:has(>[data-slot=checkbox-group]){gap:calc(var(--spacing)*3)}.has-\\[\\>\\[data-slot\\=field-content\\]\\]\\:items-start:has(>[data-slot=field-content]){align-items:flex-start}.has-\\[\\>\\[data-slot\\=field\\]\\]\\:w-full:has(>[data-slot=field]){width:100%}.has-\\[\\>\\[data-slot\\=field\\]\\]\\:flex-col:has(>[data-slot=field]){flex-direction:column}.has-\\[\\>\\[data-slot\\=field\\]\\]\\:rounded-md:has(>[data-slot=field]){border-radius:calc(var(--radius) - 2px)}.has-\\[\\>\\[data-slot\\=field\\]\\]\\:border:has(>[data-slot=field]){border-style:var(--tw-border-style);border-width:1px}.has-\\[\\>\\[data-slot\\=radio-group\\]\\]\\:gap-3:has(>[data-slot=radio-group]){gap:calc(var(--spacing)*3)}.has-\\[\\>\\[data-state\\=checked\\]\\]\\:border-primary:has(>[data-state=checked]){border-color:hsl(var(--primary))}.has-\\[\\>\\[data-state\\=checked\\]\\]\\:bg-primary\\/10:has(>[data-state=checked]){background-color:hsl(var(--primary))}@supports (color:color-mix(in lab, red, red)){.has-\\[\\>\\[data-state\\=checked\\]\\]\\:bg-primary\\/10:has(>[data-state=checked]){background-color:color-mix(in oklab,hsl(var(--primary))10%,transparent)}}.has-\\[\\>button\\]\\:mr-\\[-0\\.45rem\\]:has(>button){margin-right:-.45rem}.has-\\[\\>button\\]\\:ml-\\[-0\\.45rem\\]:has(>button){margin-left:-.45rem}.has-\\[\\>kbd\\]\\:mr-\\[-0\\.35rem\\]:has(>kbd){margin-right:-.35rem}.has-\\[\\>kbd\\]\\:ml-\\[-0\\.35rem\\]:has(>kbd){margin-left:-.35rem}.has-\\[\\>svg\\]\\:p-0:has(>svg){padding:calc(var(--spacing)*0)}.has-\\[\\>svg\\]\\:px-2:has(>svg){padding-inline:calc(var(--spacing)*2)}.has-\\[\\>svg\\]\\:px-2\\.5:has(>svg){padding-inline:calc(var(--spacing)*2.5)}.has-\\[\\>svg\\]\\:px-3:has(>svg){padding-inline:calc(var(--spacing)*3)}.has-\\[\\>svg\\]\\:px-4:has(>svg){padding-inline:calc(var(--spacing)*4)}.has-\\[\\>textarea\\]\\:h-auto:has(>textarea){height:auto}.aria-invalid\\:border-destructive[aria-invalid=true]{border-color:hsl(var(--destructive))}.aria-invalid\\:ring-destructive\\/20[aria-invalid=true]{--tw-ring-color:hsl(var(--destructive))}@supports (color:color-mix(in lab, red, red)){.aria-invalid\\:ring-destructive\\/20[aria-invalid=true]{--tw-ring-color:color-mix(in oklab,hsl(var(--destructive))20%,transparent)}}.aria-invalid\\:ring-destructive\\/40[aria-invalid=true]{--tw-ring-color:hsl(var(--destructive))}@supports (color:color-mix(in lab, red, red)){.aria-invalid\\:ring-destructive\\/40[aria-invalid=true]{--tw-ring-color:color-mix(in oklab,hsl(var(--destructive))40%,transparent)}}.data-disabled\\:pointer-events-none[data-disabled]{pointer-events:none}.data-disabled\\:opacity-50[data-disabled]{opacity:.5}.data-dragging\\:cursor-grabbing[data-dragging]{cursor:grabbing}.data-dragging\\:opacity-0[data-dragging]{opacity:0}.data-inset\\:pl-8[data-inset]{padding-left:calc(var(--spacing)*8)}.data-placeholder\\:text-muted-foreground[data-placeholder]{color:hsl(var(--muted-foreground))}.data-\\[disabled\\=true\\]\\:pointer-events-none[data-disabled=true]{pointer-events:none}.data-\\[disabled\\=true\\]\\:opacity-50[data-disabled=true]{opacity:.5}.data-\\[invalid\\=true\\]\\:text-destructive[data-invalid=true]{color:hsl(var(--destructive))}.data-\\[orientation\\=horizontal\\]\\:h-px[data-orientation=horizontal]{height:1px}.data-\\[orientation\\=horizontal\\]\\:w-full[data-orientation=horizontal]{width:100%}.data-\\[orientation\\=vertical\\]\\:h-auto[data-orientation=vertical]{height:auto}.data-\\[orientation\\=vertical\\]\\:h-full[data-orientation=vertical]{height:100%}.data-\\[orientation\\=vertical\\]\\:w-px[data-orientation=vertical]{width:1px}.data-\\[panel-group-direction\\=vertical\\]\\:h-px[data-panel-group-direction=vertical]{height:1px}.data-\\[panel-group-direction\\=vertical\\]\\:w-full[data-panel-group-direction=vertical]{width:100%}.data-\\[panel-group-direction\\=vertical\\]\\:flex-col[data-panel-group-direction=vertical]{flex-direction:column}.data-\\[panel-group-direction\\=vertical\\]\\:after\\:left-0[data-panel-group-direction=vertical]:after{content:var(--tw-content);left:calc(var(--spacing)*0)}.data-\\[panel-group-direction\\=vertical\\]\\:after\\:h-1[data-panel-group-direction=vertical]:after{content:var(--tw-content);height:calc(var(--spacing)*1)}.data-\\[panel-group-direction\\=vertical\\]\\:after\\:w-full[data-panel-group-direction=vertical]:after{content:var(--tw-content);width:100%}.data-\\[panel-group-direction\\=vertical\\]\\:after\\:translate-x-0[data-panel-group-direction=vertical]:after{content:var(--tw-content);--tw-translate-x:calc(var(--spacing)*0);translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\\[panel-group-direction\\=vertical\\]\\:after\\:-translate-y-1\\/2[data-panel-group-direction=vertical]:after{content:var(--tw-content);--tw-translate-y:calc(calc(1/2*100%)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\\[selected\\=true\\]\\:bg-accent[data-selected=true]{background-color:hsl(var(--accent))}.data-\\[selected\\=true\\]\\:text-accent-foreground[data-selected=true]{color:hsl(var(--accent-foreground))}.data-\\[side\\=bottom\\]\\:translate-y-1[data-side=bottom]{--tw-translate-y:calc(var(--spacing)*1);translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\\[side\\=bottom\\]\\:slide-in-from-top-2[data-side=bottom]{--tw-enter-translate-y:calc(2*var(--spacing)*-1)}.data-\\[side\\=left\\]\\:-translate-x-1[data-side=left]{--tw-translate-x:calc(var(--spacing)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\\[side\\=left\\]\\:slide-in-from-right-2[data-side=left]{--tw-enter-translate-x:calc(2*var(--spacing))}.data-\\[side\\=right\\]\\:translate-x-1[data-side=right]{--tw-translate-x:calc(var(--spacing)*1);translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\\[side\\=right\\]\\:slide-in-from-left-2[data-side=right]{--tw-enter-translate-x:calc(2*var(--spacing)*-1)}.data-\\[side\\=top\\]\\:-translate-y-1[data-side=top]{--tw-translate-y:calc(var(--spacing)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\\[side\\=top\\]\\:slide-in-from-bottom-2[data-side=top]{--tw-enter-translate-y:calc(2*var(--spacing))}.data-\\[size\\=default\\]\\:h-9[data-size=default]{height:calc(var(--spacing)*9)}.data-\\[size\\=sm\\]\\:h-8[data-size=sm]{height:calc(var(--spacing)*8)}.data-\\[slot\\=checkbox-group\\]\\:gap-3[data-slot=checkbox-group]{gap:calc(var(--spacing)*3)}:is(.\\*\\*\\:data-\\[slot\\=command-input-wrapper\\]\\:h-12 *)[data-slot=command-input-wrapper]{height:calc(var(--spacing)*12)}:is(.\\*\\:data-\\[slot\\=select-value\\]\\:line-clamp-1>*)[data-slot=select-value]{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}:is(.\\*\\:data-\\[slot\\=select-value\\]\\:flex>*)[data-slot=select-value]{display:flex}:is(.\\*\\:data-\\[slot\\=select-value\\]\\:items-center>*)[data-slot=select-value]{align-items:center}:is(.\\*\\:data-\\[slot\\=select-value\\]\\:gap-2>*)[data-slot=select-value]{gap:calc(var(--spacing)*2)}.data-\\[state\\=active\\]\\:border-input[data-state=active]{border-color:hsl(var(--input))}.data-\\[state\\=active\\]\\:bg-input\\/30[data-state=active]{background-color:hsl(var(--input))}@supports (color:color-mix(in lab, red, red)){.data-\\[state\\=active\\]\\:bg-input\\/30[data-state=active]{background-color:color-mix(in oklab,hsl(var(--input))30%,transparent)}}.data-\\[state\\=active\\]\\:text-foreground[data-state=active]{color:hsl(var(--foreground))}.data-\\[state\\=active\\]\\:shadow-sm[data-state=active]{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.data-\\[state\\=checked\\]\\:translate-x-\\[calc\\(100\\%-2px\\)\\][data-state=checked]{--tw-translate-x:calc(100% - 2px);translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\\[state\\=checked\\]\\:border-primary[data-state=checked]{border-color:hsl(var(--primary))}.data-\\[state\\=checked\\]\\:bg-primary[data-state=checked]{background-color:hsl(var(--primary))}.data-\\[state\\=checked\\]\\:bg-primary-foreground[data-state=checked]{background-color:hsl(var(--primary-foreground))}.data-\\[state\\=checked\\]\\:text-primary-foreground[data-state=checked]{color:hsl(var(--primary-foreground))}.data-\\[state\\=closed\\]\\:animate-out[data-state=closed]{animation:exit var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-\\[state\\=closed\\]\\:fade-out-0[data-state=closed]{--tw-exit-opacity:0}.data-\\[state\\=closed\\]\\:zoom-out-95[data-state=closed]{--tw-exit-scale:.95}.data-\\[state\\=on\\]\\:bg-accent[data-state=on]{background-color:hsl(var(--accent))}.data-\\[state\\=on\\]\\:bg-transparent[data-state=on]{background-color:#0000}.data-\\[state\\=on\\]\\:text-accent-foreground[data-state=on]{color:hsl(var(--accent-foreground))}.data-\\[state\\=open\\]\\:animate-in[data-state=open]{animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-\\[state\\=open\\]\\:bg-accent[data-state=open]{background-color:hsl(var(--accent))}.data-\\[state\\=open\\]\\:text-accent-foreground[data-state=open]{color:hsl(var(--accent-foreground))}.data-\\[state\\=open\\]\\:text-muted-foreground[data-state=open]{color:hsl(var(--muted-foreground))}.data-\\[state\\=open\\]\\:fade-in-0[data-state=open]{--tw-enter-opacity:0}.data-\\[state\\=open\\]\\:zoom-in-95[data-state=open]{--tw-enter-scale:.95}.data-\\[state\\=unchecked\\]\\:translate-x-0[data-state=unchecked]{--tw-translate-x:calc(var(--spacing)*0);translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\\[state\\=unchecked\\]\\:bg-foreground[data-state=unchecked]{background-color:hsl(var(--foreground))}.data-\\[state\\=unchecked\\]\\:bg-input\\/80[data-state=unchecked]{background-color:hsl(var(--input))}@supports (color:color-mix(in lab, red, red)){.data-\\[state\\=unchecked\\]\\:bg-input\\/80[data-state=unchecked]{background-color:color-mix(in oklab,hsl(var(--input))80%,transparent)}}.data-\\[variant\\=destructive\\]\\:text-destructive[data-variant=destructive]{color:hsl(var(--destructive))}.data-\\[variant\\=destructive\\]\\:focus\\:bg-destructive\\/20[data-variant=destructive]:focus{background-color:hsl(var(--destructive))}@supports (color:color-mix(in lab, red, red)){.data-\\[variant\\=destructive\\]\\:focus\\:bg-destructive\\/20[data-variant=destructive]:focus{background-color:color-mix(in oklab,hsl(var(--destructive))20%,transparent)}}.data-\\[variant\\=destructive\\]\\:focus\\:text-destructive[data-variant=destructive]:focus{color:hsl(var(--destructive))}.data-\\[variant\\=label\\]\\:text-sm[data-variant=label]{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.data-\\[variant\\=legend\\]\\:text-base[data-variant=legend]{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.nth-last-2\\:-mt-1:nth-last-child(2){margin-top:calc(var(--spacing)*-1)}@media (min-width:40rem){.sm\\:max-w-\\[425px\\]{max-width:425px}.sm\\:max-w-lg{max-width:var(--container-lg)}.sm\\:flex-row{flex-direction:row}.sm\\:justify-end{justify-content:flex-end}.sm\\:text-left{text-align:left}}@media (min-width:48rem){.md\\:p-12{padding:calc(var(--spacing)*12)}.md\\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}}@container field-group (width>=28rem){.\\@md\\/field-group\\:flex-row{flex-direction:row}.\\@md\\/field-group\\:items-center{align-items:center}.\\@md\\/field-group\\:has-\\[\\>\\[data-slot\\=field-content\\]\\]\\:items-start:has(>[data-slot=field-content]){align-items:flex-start}}@media (prefers-color-scheme:dark){.dark\\:bg-input\\/30{background-color:hsl(var(--input))}@supports (color:color-mix(in lab, red, red)){.dark\\:bg-input\\/30{background-color:color-mix(in oklab,hsl(var(--input))30%,transparent)}}.dark\\:bg-transparent{background-color:#0000}.dark\\:has-\\[\\[data-slot\\]\\[aria-invalid\\=true\\]\\]\\:ring-destructive\\/40:has([data-slot][aria-invalid=true]){--tw-ring-color:hsl(var(--destructive))}@supports (color:color-mix(in lab, red, red)){.dark\\:has-\\[\\[data-slot\\]\\[aria-invalid\\=true\\]\\]\\:ring-destructive\\/40:has([data-slot][aria-invalid=true]){--tw-ring-color:color-mix(in oklab,hsl(var(--destructive))40%,transparent)}}.dark\\:aria-invalid\\:ring-destructive\\/40[aria-invalid=true]{--tw-ring-color:hsl(var(--destructive))}@supports (color:color-mix(in lab, red, red)){.dark\\:aria-invalid\\:ring-destructive\\/40[aria-invalid=true]{--tw-ring-color:color-mix(in oklab,hsl(var(--destructive))40%,transparent)}}}.\\[\\&_\\[cmdk-group-heading\\]\\]\\:px-2 [cmdk-group-heading]{padding-inline:calc(var(--spacing)*2)}.\\[\\&_\\[cmdk-group-heading\\]\\]\\:py-1\\.5 [cmdk-group-heading]{padding-block:calc(var(--spacing)*1.5)}.\\[\\&_\\[cmdk-group-heading\\]\\]\\:text-xs [cmdk-group-heading]{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.\\[\\&_\\[cmdk-group-heading\\]\\]\\:font-medium [cmdk-group-heading]{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.\\[\\&_\\[cmdk-group-heading\\]\\]\\:text-muted-foreground [cmdk-group-heading]{color:hsl(var(--muted-foreground))}.\\[\\&_\\[cmdk-group\\]\\]\\:px-2 [cmdk-group]{padding-inline:calc(var(--spacing)*2)}.\\[\\&_\\[cmdk-group\\]\\:not\\(\\[hidden\\]\\)_\\~\\[cmdk-group\\]\\]\\:pt-0 [cmdk-group]:not([hidden])~[cmdk-group]{padding-top:calc(var(--spacing)*0)}.\\[\\&_\\[cmdk-input-wrapper\\]_svg\\]\\:size-5 [cmdk-input-wrapper] svg{width:calc(var(--spacing)*5);height:calc(var(--spacing)*5)}.\\[\\&_\\[cmdk-input\\]\\]\\:h-12 [cmdk-input]{height:calc(var(--spacing)*12)}.\\[\\&_\\[cmdk-item\\]\\]\\:px-2 [cmdk-item]{padding-inline:calc(var(--spacing)*2)}.\\[\\&_\\[cmdk-item\\]\\]\\:py-3 [cmdk-item]{padding-block:calc(var(--spacing)*3)}.\\[\\&_\\[cmdk-item\\]_svg\\]\\:size-5 [cmdk-item] svg{width:calc(var(--spacing)*5);height:calc(var(--spacing)*5)}.\\[\\&_svg\\]\\:pointer-events-none svg{pointer-events:none}.\\[\\&_svg\\]\\:shrink-0 svg{flex-shrink:0}.\\[\\&_svg\\:not\\(\\[class\\*\\=\\'size-\\'\\]\\)\\]\\:size-4 svg:not([class*=size-]){width:calc(var(--spacing)*4);height:calc(var(--spacing)*4)}.\\[\\&_svg\\:not\\(\\[class\\*\\=\\'size-\\'\\]\\)\\]\\:size-6 svg:not([class*=size-]){width:calc(var(--spacing)*6);height:calc(var(--spacing)*6)}.\\[\\&_svg\\:not\\(\\[class\\*\\=\\'text-\\'\\]\\)\\]\\:text-muted-foreground svg:not([class*=text-]){color:hsl(var(--muted-foreground))}.\\[\\.border-b\\]\\:pb-3.border-b{padding-bottom:calc(var(--spacing)*3)}.\\[\\.border-b\\]\\:pb-6.border-b{padding-bottom:calc(var(--spacing)*6)}.\\[\\.border-t\\]\\:pt-3.border-t{padding-top:calc(var(--spacing)*3)}.\\[\\.border-t\\]\\:pt-6.border-t{padding-top:calc(var(--spacing)*6)}:is(.\\*\\:\\[span\\]\\:last\\:flex>*):is(span):last-child{display:flex}:is(.\\*\\:\\[span\\]\\:last\\:items-center>*):is(span):last-child{align-items:center}:is(.\\*\\:\\[span\\]\\:last\\:gap-2>*):is(span):last-child{gap:calc(var(--spacing)*2)}:is(.data-\\[state\\=on\\]\\:\\*\\:\\[svg\\]\\:fill-yellow-500[data-state=on]>*):is(svg){fill:var(--color-yellow-500)}:is(.data-\\[state\\=on\\]\\:\\*\\:\\[svg\\]\\:stroke-yellow-500[data-state=on]>*):is(svg){stroke:var(--color-yellow-500)}:is(.data-\\[variant\\=destructive\\]\\:\\*\\:\\[svg\\]\\:text-destructive\\![data-variant=destructive]>*):is(svg){color:hsl(var(--destructive))!important}.\\[\\&\\>\\*\\]\\:w-full>*{width:100%}.\\[\\&\\>\\*\\]\\:data-\\[slot\\=field\\]\\:p-4>[data-slot=field]{padding:calc(var(--spacing)*4)}@container field-group (width>=28rem){.\\@md\\/field-group\\:\\[\\&\\>\\*\\]\\:w-auto>*{width:auto}}.\\[\\&\\>\\*\\:not\\(\\:first-child\\)\\]\\:rounded-t-none>:not(:first-child){border-top-left-radius:0;border-top-right-radius:0}.\\[\\&\\>\\*\\:not\\(\\:first-child\\)\\]\\:rounded-l-none>:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.\\[\\&\\>\\*\\:not\\(\\:first-child\\)\\]\\:border-t-0>:not(:first-child){border-top-style:var(--tw-border-style);border-top-width:0}.\\[\\&\\>\\*\\:not\\(\\:first-child\\)\\]\\:border-l-0>:not(:first-child){border-left-style:var(--tw-border-style);border-left-width:0}.\\[\\&\\>\\*\\:not\\(\\:last-child\\)\\]\\:rounded-r-none>:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.\\[\\&\\>\\*\\:not\\(\\:last-child\\)\\]\\:rounded-b-none>:not(:last-child){border-bottom-right-radius:0;border-bottom-left-radius:0}.\\[\\&\\>\\.sr-only\\]\\:w-auto>.sr-only{width:auto}.\\[\\&\\>\\[data-slot\\=field-group\\]\\]\\:gap-4>[data-slot=field-group]{gap:calc(var(--spacing)*4)}.\\[\\&\\>\\[data-slot\\=field-label\\]\\]\\:flex-auto>[data-slot=field-label]{flex:auto}@container field-group (width>=28rem){.\\@md\\/field-group\\:\\[\\&\\>\\[data-slot\\=field-label\\]\\]\\:flex-auto>[data-slot=field-label]{flex:auto}}.has-\\[select\\[aria-hidden\\=true\\]\\:last-child\\]\\:\\[\\&\\>\\[data-slot\\=select-trigger\\]\\:last-of-type\\]\\:rounded-r-md:has(:is(select[aria-hidden=true]:last-child))>[data-slot=select-trigger]:last-of-type{border-top-right-radius:calc(var(--radius) - 2px);border-bottom-right-radius:calc(var(--radius) - 2px)}.\\[\\&\\>\\[data-slot\\=select-trigger\\]\\:not\\(\\[class\\*\\=\\'w-\\'\\]\\)\\]\\:w-fit>[data-slot=select-trigger]:not([class*=w-]){width:fit-content}:is(.has-\\[\\>\\[data-slot\\=field-content\\]\\]\\:\\[\\&\\>\\[role\\=checkbox\\]\\,\\[role\\=radio\\]\\]\\:mt-px:has(>[data-slot=field-content])>[role=checkbox],.has-\\[\\>\\[data-slot\\=field-content\\]\\]\\:\\[\\&\\>\\[role\\=checkbox\\]\\,\\[role\\=radio\\]\\]\\:mt-px:has(>[data-slot=field-content]) [role=radio]){margin-top:1px}@container field-group (width>=28rem){:is(.\\@md\\/field-group\\:has-\\[\\>\\[data-slot\\=field-content\\]\\]\\:\\[\\&\\>\\[role\\=checkbox\\]\\,\\[role\\=radio\\]\\]\\:mt-px:has(>[data-slot=field-content])>[role=checkbox],.\\@md\\/field-group\\:has-\\[\\>\\[data-slot\\=field-content\\]\\]\\:\\[\\&\\>\\[role\\=checkbox\\]\\,\\[role\\=radio\\]\\]\\:mt-px:has(>[data-slot=field-content]) [role=radio]){margin-top:1px}}.\\[\\&\\>a\\]\\:underline>a{text-decoration-line:underline}.\\[\\&\\>a\\]\\:underline-offset-4>a{text-underline-offset:4px}.\\[\\&\\>a\\:hover\\]\\:text-primary>a:hover{color:hsl(var(--primary))}.\\[\\&\\>input\\]\\:flex-1>input{flex:1}.has-\\[\\>\\[data-align\\=block-end\\]\\]\\:\\[\\&\\>input\\]\\:pt-3:has(>[data-align=block-end])>input{padding-top:calc(var(--spacing)*3)}.has-\\[\\>\\[data-align\\=block-start\\]\\]\\:\\[\\&\\>input\\]\\:pb-3:has(>[data-align=block-start])>input{padding-bottom:calc(var(--spacing)*3)}.has-\\[\\>\\[data-align\\=inline-end\\]\\]\\:\\[\\&\\>input\\]\\:pr-2:has(>[data-align=inline-end])>input{padding-right:calc(var(--spacing)*2)}.has-\\[\\>\\[data-align\\=inline-start\\]\\]\\:\\[\\&\\>input\\]\\:pl-2:has(>[data-align=inline-start])>input{padding-left:calc(var(--spacing)*2)}.\\[\\&\\>kbd\\]\\:rounded-\\[calc\\(var\\(--radius\\)-5px\\)\\]>kbd{border-radius:calc(var(--radius) - 5px)}.\\[\\&\\>svg\\]\\:pointer-events-none>svg{pointer-events:none}.\\[\\&\\>svg\\]\\:size-3>svg{width:calc(var(--spacing)*3);height:calc(var(--spacing)*3)}.\\[\\&\\>svg\\:not\\(\\[class\\*\\=\\'size-\\'\\]\\)\\]\\:size-3\\.5>svg:not([class*=size-]){width:calc(var(--spacing)*3.5);height:calc(var(--spacing)*3.5)}.\\[\\&\\>svg\\:not\\(\\[class\\*\\=\\'size-\\'\\]\\)\\]\\:size-4>svg:not([class*=size-]){width:calc(var(--spacing)*4);height:calc(var(--spacing)*4)}.\\[\\&\\[data-panel-group-direction\\=vertical\\]\\>div\\]\\:rotate-90[data-panel-group-direction=vertical]>div{rotate:90deg}[data-variant=legend]+.\\[\\[data-variant\\=legend\\]\\+\\&\\]\\:-mt-1\\.5{margin-top:calc(var(--spacing)*-1.5)}@media (hover:hover){a.\\[a\\&\\]\\:hover\\:bg-accent:hover{background-color:hsl(var(--accent))}a.\\[a\\&\\]\\:hover\\:bg-destructive\\/90:hover{background-color:hsl(var(--destructive))}@supports (color:color-mix(in lab, red, red)){a.\\[a\\&\\]\\:hover\\:bg-destructive\\/90:hover{background-color:color-mix(in oklab,hsl(var(--destructive))90%,transparent)}}a.\\[a\\&\\]\\:hover\\:bg-primary\\/90:hover{background-color:hsl(var(--primary))}@supports (color:color-mix(in lab, red, red)){a.\\[a\\&\\]\\:hover\\:bg-primary\\/90:hover{background-color:color-mix(in oklab,hsl(var(--primary))90%,transparent)}}a.\\[a\\&\\]\\:hover\\:bg-secondary\\/90:hover{background-color:hsl(var(--secondary))}@supports (color:color-mix(in lab, red, red)){a.\\[a\\&\\]\\:hover\\:bg-secondary\\/90:hover{background-color:color-mix(in oklab,hsl(var(--secondary))90%,transparent)}}a.\\[a\\&\\]\\:hover\\:text-accent-foreground:hover{color:hsl(var(--accent-foreground))}}}@property --tw-animation-delay{syntax:\"*\";inherits:false;initial-value:0s}@property --tw-animation-direction{syntax:\"*\";inherits:false;initial-value:normal}@property --tw-animation-duration{syntax:\"*\";inherits:false}@property --tw-animation-fill-mode{syntax:\"*\";inherits:false;initial-value:none}@property --tw-animation-iteration-count{syntax:\"*\";inherits:false;initial-value:1}@property --tw-enter-blur{syntax:\"*\";inherits:false;initial-value:0}@property --tw-enter-opacity{syntax:\"*\";inherits:false;initial-value:1}@property --tw-enter-rotate{syntax:\"*\";inherits:false;initial-value:0}@property --tw-enter-scale{syntax:\"*\";inherits:false;initial-value:1}@property --tw-enter-translate-x{syntax:\"*\";inherits:false;initial-value:0}@property --tw-enter-translate-y{syntax:\"*\";inherits:false;initial-value:0}@property --tw-exit-blur{syntax:\"*\";inherits:false;initial-value:0}@property --tw-exit-opacity{syntax:\"*\";inherits:false;initial-value:1}@property --tw-exit-rotate{syntax:\"*\";inherits:false;initial-value:0}@property --tw-exit-scale{syntax:\"*\";inherits:false;initial-value:1}@property --tw-exit-translate-x{syntax:\"*\";inherits:false;initial-value:0}@property --tw-exit-translate-y{syntax:\"*\";inherits:false;initial-value:0}:host,.hive-laboratory{width:100%;height:100%;display:block}.hive-laboratory{--color-neutral-1:0 0% 99%;--color-neutral-2:180 9% 97%;--color-neutral-3:210 7% 95%;--color-neutral-4:200 6% 92%;--color-neutral-5:210 6% 89%;--color-neutral-6:204 5% 79%;--color-neutral-7:197 4% 67%;--color-neutral-8:196 4% 51%;--color-neutral-9:193 9% 32%;--color-neutral-10:188 15% 21%;--color-neutral-11:188 19% 15%;--color-neutral-12:175 23% 10%;--color-accent:206 96% 35%;--color-ring:216 58% 49%;--radius:var(--hive-laboratory-radius,.5rem);--background:var(--hive-laboratory-background,var(--color-neutral-2));--foreground:var(--hive-laboratory-foreground,var(--color-neutral-11));--muted:var(--hive-laboratory-muted,24 9.8% 10%);--muted-foreground:var(--hive-laboratory-muted-foreground,var(--color-neutral-11));--popover:var(--hive-laboratory-popover,var(--color-neutral-3));--popover-foreground:var(--hive-laboratory-popover-foreground,var(--color-neutral-11));--card:var(--hive-laboratory-card,var(--color-neutral-1));--card-foreground:var(--hive-laboratory-card-foreground,var(--color-neutral-11));--border:var(--hive-laboratory-border,var(--color-neutral-5));--input:var(--hive-laboratory-input,var(--color-neutral-5));--primary:var(--hive-laboratory-primary,var(--color-accent));--primary-foreground:var(--hive-laboratory-primary-foreground,var(--color-neutral-1));--secondary:var(--hive-laboratory-secondary,var(--color-neutral-3));--secondary-foreground:var(--hive-laboratory-secondary-foreground,var(--color-neutral-11));--accent:var(--hive-laboratory-accent,var(--color-neutral-4));--accent-foreground:var(--hive-laboratory-accent-foreground,var(--color-neutral-11));--destructive:var(--hive-laboratory-destructive,var(--red-500));--destructive-foreground:var(--hive-laboratory-destructive-foreground,var(--color-neutral-1));--ring:var(--hive-laboratory-ring,var(--color-ring))}.hive-laboratory.dark{--color-neutral-1:210 21% 5%;--color-neutral-2:210 16% 7%;--color-neutral-3:214 14% 10%;--color-neutral-4:210 13% 13%;--color-neutral-5:210 12% 16%;--color-neutral-6:210 11% 21%;--color-neutral-7:210 12% 27%;--color-neutral-8:210 11% 34%;--color-neutral-9:210 10% 43%;--color-neutral-10:213 9% 58%;--color-neutral-11:210 11% 75%;--color-neutral-12:204 14% 93%;--color-accent:48 100% 83%;--radius:var(--hive-laboratory-radius,.5rem);--background:var(--hive-laboratory-background,var(--color-neutral-1));--foreground:var(--hive-laboratory-foreground,var(--color-neutral-11));--muted:var(--hive-laboratory-muted,var(--color-neutral-3));--muted-foreground:var(--hive-laboratory-muted-foreground,var(--color-neutral-11));--popover:var(--hive-laboratory-popover,var(--color-neutral-3));--popover-foreground:var(--hive-laboratory-popover-foreground,var(--color-neutral-11));--card:var(--hive-laboratory-card,var(--color-neutral-2));--card-foreground:var(--hive-laboratory-card-foreground,var(--color-neutral-11));--border:var(--hive-laboratory-border,var(--color-neutral-5));--input:var(--hive-laboratory-input,var(--color-neutral-5));--primary:var(--hive-laboratory-primary,var(--color-accent));--primary-foreground:var(--hive-laboratory-primary-foreground,var(--color-neutral-1));--secondary:var(--hive-laboratory-secondary,var(--color-neutral-3));--secondary-foreground:var(--hive-laboratory-secondary-foreground,var(--color-neutral-11));--accent:var(--hive-laboratory-accent,var(--color-neutral-6));--accent-foreground:var(--hive-laboratory-accent-foreground,var(--color-neutral-11));--destructive:var(--hive-laboratory-destructive,var(--red-500));--destructive-foreground:var(--hive-laboratory-destructive-foreground,var(--color-neutral-1));--ring:var(--hive-laboratory-ring,var(--color-ring))}@layer color{.hive-laboratory{background-color:hsl(var(--background));color:hsl(var(--foreground))}}@property --tw-translate-x{syntax:\"*\";inherits:false;initial-value:0}@property --tw-translate-y{syntax:\"*\";inherits:false;initial-value:0}@property --tw-translate-z{syntax:\"*\";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:\"*\";inherits:false}@property --tw-rotate-y{syntax:\"*\";inherits:false}@property --tw-rotate-z{syntax:\"*\";inherits:false}@property --tw-skew-x{syntax:\"*\";inherits:false}@property --tw-skew-y{syntax:\"*\";inherits:false}@property --tw-border-style{syntax:\"*\";inherits:false;initial-value:solid}@property --tw-leading{syntax:\"*\";inherits:false}@property --tw-font-weight{syntax:\"*\";inherits:false}@property --tw-tracking{syntax:\"*\";inherits:false}@property --tw-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:\"*\";inherits:false}@property --tw-shadow-alpha{syntax:\"<percentage>\";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:\"*\";inherits:false}@property --tw-inset-shadow-alpha{syntax:\"<percentage>\";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:\"*\";inherits:false}@property --tw-ring-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:\"*\";inherits:false}@property --tw-inset-ring-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:\"*\";inherits:false}@property --tw-ring-offset-width{syntax:\"<length>\";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:\"*\";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:\"*\";inherits:false;initial-value:solid}@property --tw-duration{syntax:\"*\";inherits:false}@property --tw-content{syntax:\"*\";inherits:false;initial-value:\"\"}@keyframes spin{to{transform:rotate(360deg)}}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0)scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1))rotate(var(--tw-enter-rotate,0));filter:blur(var(--tw-enter-blur,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0)scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1))rotate(var(--tw-exit-rotate,0));filter:blur(var(--tw-exit-blur,0))}}", editor_main_default = "/*!-----------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.52.2(404545bded1df6ffa41ea0af4e8ddb219018c6c1)\n * Released under the MIT license\n * https://github.com/microsoft/vscode/blob/main/LICENSE.txt\n *-----------------------------------------------------------*/\n.monaco-action-bar{white-space:nowrap;height:100%}.monaco-action-bar .actions-container{align-items:center;width:100%;height:100%;margin:0 auto;padding:0;display:flex}.monaco-action-bar.vertical .actions-container{display:inline-block}.monaco-action-bar .action-item{cursor:pointer;justify-content:center;align-items:center;display:block;position:relative}.monaco-action-bar .action-item.disabled{cursor:default}.monaco-action-bar .action-item .codicon,.monaco-action-bar .action-item .icon{display:block}.monaco-action-bar .action-item .codicon{align-items:center;width:16px;height:16px;display:flex}.monaco-action-bar .action-label{border-radius:5px;padding:3px;font-size:11px;display:flex}.monaco-action-bar .action-item.disabled .action-label,.monaco-action-bar .action-item.disabled .action-label:before,.monaco-action-bar .action-item.disabled .action-label:hover{color:var(--vscode-disabledForeground)}.monaco-action-bar.vertical{text-align:left}.monaco-action-bar.vertical .action-item{display:block}.monaco-action-bar.vertical .action-label.separator{border-bottom:1px solid #bbb;margin-left:.8em;margin-right:.8em;padding-top:1px;display:block}.monaco-action-bar .action-item .action-label.separator{cursor:default;background-color:#bbb;width:1px;min-width:1px;height:16px;padding:0;margin:5px 4px!important}.secondary-actions .monaco-action-bar .action-label{margin-left:6px}.monaco-action-bar .action-item.select-container{flex:1;justify-content:center;align-items:center;min-width:60px;max-width:170px;margin-right:10px;display:flex;overflow:hidden}.monaco-action-bar .action-item.action-dropdown-item{display:flex}.monaco-action-bar .action-item.action-dropdown-item>.action-dropdown-item-separator{cursor:default;align-items:center;display:flex}.monaco-action-bar .action-item.action-dropdown-item>.action-dropdown-item-separator>div{width:1px}.monaco-aria-container{position:absolute;left:-999em}.monaco-text-button{border:1px solid var(--vscode-button-border,transparent);box-sizing:border-box;cursor:pointer;text-align:center;border-radius:2px;justify-content:center;align-items:center;width:100%;padding:4px;line-height:18px;display:flex}.monaco-text-button:focus{outline-offset:2px!important}.monaco-text-button:hover{text-decoration:none!important}.monaco-button.disabled,.monaco-button.disabled:focus{cursor:default;opacity:.4!important}.monaco-text-button .codicon{margin:0 .2em;color:inherit!important}.monaco-text-button.monaco-text-button-with-short-label{flex-flow:wrap;height:28px;padding:0 4px;overflow:hidden}.monaco-text-button.monaco-text-button-with-short-label>.monaco-button-label{flex-basis:100%}.monaco-text-button.monaco-text-button-with-short-label>.monaco-button-label-short{flex-grow:1;width:0;overflow:hidden}.monaco-text-button.monaco-text-button-with-short-label>.monaco-button-label,.monaco-text-button.monaco-text-button-with-short-label>.monaco-button-label-short{font-style:inherit;justify-content:center;align-items:center;padding:4px 0;font-weight:400;display:flex}.monaco-button-dropdown{cursor:pointer;display:flex}.monaco-button-dropdown.disabled{cursor:default}.monaco-button-dropdown>.monaco-button:focus{outline-offset:-1px!important}.monaco-button-dropdown.disabled>.monaco-button-dropdown-separator,.monaco-button-dropdown.disabled>.monaco-button.disabled,.monaco-button-dropdown.disabled>.monaco-button.disabled:focus{opacity:.4!important}.monaco-button-dropdown>.monaco-button.monaco-text-button{border-right-width:0!important}.monaco-button-dropdown .monaco-button-dropdown-separator{cursor:default;padding:4px 0}.monaco-button-dropdown .monaco-button-dropdown-separator>div{width:1px;height:100%}.monaco-button-dropdown>.monaco-button.monaco-dropdown-button{border:1px solid var(--vscode-button-border,transparent);border-radius:0 2px 2px 0;align-items:center;display:flex;border-left-width:0!important}.monaco-button-dropdown>.monaco-button.monaco-text-button{border-radius:2px 0 0 2px}.monaco-description-button{flex-direction:column;align-items:center;margin:4px 5px;display:flex}.monaco-description-button .monaco-button-description{padding:4px 20px;font-size:11px;font-style:italic}.monaco-description-button .monaco-button-description,.monaco-description-button .monaco-button-label{justify-content:center;align-items:center;display:flex}.monaco-description-button .monaco-button-description>.codicon,.monaco-description-button .monaco-button-label>.codicon{margin:0 .2em;color:inherit!important}.monaco-button-dropdown.default-colors>.monaco-button,.monaco-button.default-colors{background-color:var(--vscode-button-background);color:var(--vscode-button-foreground)}.monaco-button-dropdown.default-colors>.monaco-button:hover,.monaco-button.default-colors:hover{background-color:var(--vscode-button-hoverBackground)}.monaco-button-dropdown.default-colors>.monaco-button.secondary,.monaco-button.default-colors.secondary{background-color:var(--vscode-button-secondaryBackground);color:var(--vscode-button-secondaryForeground)}.monaco-button-dropdown.default-colors>.monaco-button.secondary:hover,.monaco-button.default-colors.secondary:hover{background-color:var(--vscode-button-secondaryHoverBackground)}.monaco-button-dropdown.default-colors .monaco-button-dropdown-separator{background-color:var(--vscode-button-background);border-bottom:1px solid var(--vscode-button-border);border-top:1px solid var(--vscode-button-border)}.monaco-button-dropdown.default-colors .monaco-button.secondary+.monaco-button-dropdown-separator{background-color:var(--vscode-button-secondaryBackground)}.monaco-button-dropdown.default-colors .monaco-button-dropdown-separator>div{background-color:var(--vscode-button-separator)}@font-face{font-display:block;font-family:codicon;src:url(data:font/ttf;base64,AAEAAAALAIAAAwAwR1NVQiCLJXoAAAE4AAAAVE9TLzI3T0tHAAABjAAAAGBjbWFwQ5s/ewAACSQAABreZ2x5ZvJtKHkAACekAAD3FGhlYWRYl6BTAAAA4AAAADZoaGVhAlsC+QAAALwAAAAkaG10eBxB//oAAAHsAAAHOGxvY2EFi8dWAAAkBAAAA55tYXhwAu8BgQAAARgAAAAgbmFtZZP3uUsAAR64AAAB+HBvc3RjGEbCAAEgsAAAGSQAAQAAASwAAAAAASz////+AS4AAQAAAAAAAAAAAAAAAAAAAc4AAQAAAAEAAFT7+XFfDzz1AAsBLAAAAAB8JbCAAAAAAHwlsID////9AS4BLQAAAAgAAgAAAAAAAAABAAABzgF1ABcAAAAAAAIAAAAKAAoAAAD/AAAAAAAAAAEAAAAKADAAPgACREZMVAAObGF0bgAaAAQAAAAAAAAAAQAAAAQAAAAAAAAAAQAAAAFsaWdhAAgAAAABAAAAAQAEAAQAAAABAAgAAQAGAAAAAQAAAAQBKwGQAAUAAADLANIAAAAqAMsA0gAAAJAADgBNAAACAAUDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBmRWQAwOpg8QEBLAAAABsBRwADAAAAAQAAAAAAAAAAAAAAAAACAAAAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEs//8BLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLP//ASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEs//8BLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASz//wEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASz//wEsAAABLAAAASwAAAEs//8BLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAAAAABQAAAAMAAAAsAAAABAAABSYAAQAAAAAEIAADAAEAAAAsAAMACgAABSYABAP0AAAAEgAQAAMAAuqI6ozqx+rJ6wnrTuw08QH//wAA6mDqiuqP6snqzOsL61DxAf//AAAAAAAAAAAAAAAAAAAAAAABABIAYgBmANYA1gFQAdYDngAAAAMA8QFKAUcAtAE3AZUBJQFuAQ4BdABOAcMBYAFqAWkAkQA2ATAAhgDPAP4AQQGTAHkAFwG+AJsAiAFDAR0BFAEVAagAyQCmALwBoAGAAIsBkQF5AYgBhgF6AYkBkAGLAYQAvgF/AY0AAgAEAAUACgALAAwADQAOAA8AEAASABsAHQAeAB8AXABdAF4AXwBiAGMAIgAjACQAJQAmACkAKwAsAC0ALgAvADAAMgAzADQANQA8ADkAPQA+AD8AQABCAEMARgBIAEkASwBVAFYAVwBYAGcAaQBrAG4AcgB0AHUAdgB3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AKIAAOr2AADq9gAAAKMAAOr3AADq9wAAAKUAAOr4AADq+AAAAKgAAOr5AADq+QAAAKkAAOr6AADq+gAAAKoAAOr7AADq+wAAAJQAAOr8AADq/AAAAKsAAOr9AADq/QAAAKwAAOr+AADq/gAAAK4AAOr/AADq/wAAALgAAOsAAADrAAAAALkAAOsBAADrAQAAAL0AAOsCAADrAgAAAMAAAOsDAADrAwAAAMQAAOsEAADrBAAAAMUAAOsFAADrBQAAAMgAAOsGAADrBgAAAMoAAOsHAADrBwAAAMsAAOsIAADrCAAAAMwAAOsJAADrCQAAAM0AAOsLAADrCwAAANMAAOsMAADrDAAAANQAAOsNAADrDQAAANUAAOsOAADrDgAAANYAAOsPAADrDwAAANcAAOsQAADrEAAAANgAAOsRAADrEQAAANkAAOsSAADrEgAAANoAAOsTAADrEwAAAO8AAOsUAADrFAAAAPIAAOsVAADrFQAAAPMAAOsWAADrFgAAAPYAAOsXAADrFwAAAPkAAOsYAADrGAAAAPoAAOsZAADrGQAAAPsAAOsaAADrGgAAAPwAAOsbAADrGwAAAQAAAOscAADrHAAAAQEAAOsdAADrHQAAAQYAAOseAADrHgAAAQcAAOsfAADrHwAAAQgAAOsgAADrIAAAAQ0AAOshAADrIQAAAQ8AAOsiAADrIgAAARAAAOsjAADrIwAAAREAAOskAADrJAAAARMAAOslAADrJQAAARcAAOsmAADrJgAAARgAAOsnAADrJwAAARsAAOsoAADrKAAAARwAAOspAADrKQAAAR8AAOsqAADrKgAAASAAAOsrAADrKwAAASgAAOssAADrLAAAASwAAOstAADrLQAAAS0AAOsuAADrLgAAAS4AAOsvAADrLwAAAS8AAOswAADrMAAAATEAAOsxAADrMQAAATIAAOsyAADrMgAAATMAAOszAADrMwAAATQAAOs0AADrNAAAATUAAOs1AADrNQAAATYAAOs2AADrNgAAATsAAOs3AADrNwAAATwAAOs4AADrOAAAAT0AAOs5AADrOQAAAT4AAOs6AADrOgAAAT8AAOs7AADrOwAAAUAAAOs8AADrPAAAAUEAAOs9AADrPQAAAUIAAOs+AADrPgAAAUQAAOs/AADrPwAAAUYAAOtAAADrQAAAAUgAAOtBAADrQQAAAUkAAOtCAADrQgAAAUsAAOtDAADrQwAAAUwAAOtEAADrRAAAAU4AAOtFAADrRQAAAU8AAOtGAADrRgAAAVAAAOtHAADrRwAAAVEAAOtIAADrSAAAAVIAAOtJAADrSQAAAVkAAOtKAADrSgAAAVoAAOtLAADrSwAAAVsAAOtMAADrTAAAAVwAAOtNAADrTQAAAV0AAOtOAADrTgAAAV8AAOtQAADrUAAAAWQAAOtRAADrUQAAAWUAAOtSAADrUgAAAWYAAOtTAADrUwAAAWgAAOtUAADrVAAAAWsAAOtVAADrVQAAAW0AAOtWAADrVgAAAXEAAOtXAADrVwAAAXIAAOtYAADrWAAAAXMAAOtZAADrWQAAAXUAAOtaAADrWgAAAXYAAOtbAADrWwAAAXsAAOtcAADrXAAAAXwAAOtdAADrXQAAAX0AAOteAADrXgAAAX4AAOtfAADrXwAAAYEAAOtgAADrYAAAAYIAAOthAADrYQAAAYMAAOtiAADrYgAAAYUAAOtjAADrYwAAAYcAAOtkAADrZAAAAYoAAOtlAADrZQAAAYwAAOtmAADrZgAAAY4AAOtnAADrZwAAAZcAAOtoAADraAAAAZgAAOtpAADraQAAAaEAAOtqAADragAAAaIAAOtrAADrawAAAaQAAOtsAADrbAAAAaYAAOttAADrbQAAAacAAOtuAADrbgAAAakAAOtvAADrbwAAAaoAAOtwAADrcAAAAasAAOtxAADrcQAAAawAAOtyAADrcgAAAa0AAOtzAADrcwAAAbEAAOt0AADrdAAAAbMAAOt1AADrdQAAAbQAAOt2AADrdgAAAbUAAOt3AADrdwAAAbgAAOt4AADreAAAAbkAAOt5AADreQAAAboAAOt6AADregAAAbwAAOt7AADrewAAAb0AAOt8AADrfAAAAcQAAOt9AADrfQAAAcUAAOt+AADrfgAAAcYAAOt/AADrfwAAAccAAOuAAADrgAAAAcgAAOuBAADrgQAAAcwAAOuCAADrggAAAc0AAOuDAADrgwAAAPQAAOuEAADrhAAAAPUAAOuFAADrhQAAAPcAAOuGAADrhgAAAPgAAOuHAADrhwAAAGAAAOuIAADriAAAAGEAAOuJAADriQAAAHAAAOuKAADrigAAADoAAOuLAADriwAAAHEAAOuMAADrjAAAAGQAAOuNAADrjQAAAY8AAOuOAADrjgAAAG8AAOuPAADrjwAAAHMAAOuQAADrkAAAAG0AAOuRAADrkQAAAFsAAOuSAADrkgAAACcAAOuTAADrkwAAACgAAOuUAADrlAAAAQkAAOuVAADrlQAAAI0AAOuWAADrlgAAAJIAAOuXAADrlwAAAMYAAOuYAADrmAAAAbIAAOuZAADrmQAAAAEAAOuaAADrmgAAABgAAOubAADrmwAAAGUAAOucAADrnAAAAO4AAOudAADrnQAAAR4AAOueAADrngAAAVUAAOufAADrnwAAAZIAAOugAADroAAAASoAAOuhAADroQAAALoAAOuiAADrogAAAWMAAOujAADrowAAAWIAAOukAADrpAAAASIAAOulAADrpQAAAXcAAOumAADrpgAAASsAAOunAADrpwAAATkAAOuoAADrqAAAAFoAAOupAADrqQAAAbsAAOuqAADrqgAAAEQAAOurAADrqwAAAQoAAOusAADrrAAAAI4AAOutAADrrQAAAMEAAOuuAADrrgAAAP8AAOuvAADrrwAAARoAAOuwAADrsAAAAToAAOuxAADrsQAAACoAAOuyAADrsgAAASkAAOuzAADrswAAASEAAOu0AADrtAAAADcAAOu1AADrtQAAADgAAOu2AADrtgAAAEoAAOu3AADrtwAAAZQAAOu4AADruAAAAbYAAOu5AADruQAAAbAAAOu6AADrugAAAa4AAOu7AADruwAAAa8AAOu8AADrvAAAALAAAOu9AADrvQAAAVMAAOu+AADrvgAAAVYAAOu/AADrvwAAARkAAOvAAADrwAAAAGwAAOvBAADrwQAAAckAAOvCAADrwgAAAcsAAOvDAADrwwAAAcoAAOvEAADrxAAAAZoAAOvFAADrxQAAAZsAAOvGAADrxgAAAZwAAOvHAADrxwAAAZ0AAOvIAADryAAAAZ4AAOvJAADryQAAAZ8AAOvKAADrygAAAZkAAOvLAADrywAAABEAAOvMAADrzAAAAFMAAOvNAADrzQAAASQAAOvOAADrzgAAAJ0AAOvPAADrzwAAAcIAAOvQAADr0AAAAGoAAOvRAADr0QAAANEAAOvSAADr0gAAAN0AAOvTAADr0wAAANwAAOvUAADr1AAAANsAAOvVAADr1QAAAFEAAOvWAADr1gAAAFAAAOvXAADr1wAAAE8AAOvYAADr2AAA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ACAAaQBjAG8AbgAgAGYAbwBuAHQAIABmAG8AcgAgAFYAaQBzAHUAYQBsACAAUwB0AHUAZABpAG8AIABDAG8AZABlAGgAdAB0AHAAOgAvAC8AZgBvAG4AdABlAGwAbABvAC4AYwBvAG0AAgAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHOAQIBAwEEAQUBBgEHAQgBCQEKAQsBDAENAQ4BDwEQAREBEgETARQBFQEWARcBGAEZARoBGwEcAR0BHgEfASABIQEiASMBJAElASYBJwEoASkBKgErASwBLQEuAS8BMAExATIBMwE0ATUBNgE3ATgBOQE6ATsBPAE9AT4BPwFAAUEBQgFDAUQBRQFGAUcBSAFJAUoBSwFMAU0BTgFPAVABUQFSAVMBVAFVAVYBVwFYAVkBWgFbAVwBXQFeAV8BYAFhAWIBYwFkAWUBZgFnAWgBaQFqAWsBbAFtAW4BbwFwAXEBcgFzAXQBdQF2AXcBeAF5AXoBewF8AX0BfgF/AYABgQGCAYMBhAGFAYYBhwGIAYkBigGLAYwBjQGOAY8BkAGRAZIBkwGUAZUBlgGXAZgBmQGaAZsBnAGdAZ4BnwGgAaEBogGjAaQBpQGmAacBqAGpAaoBqwGsAa0BrgGvAbABsQGyAbMBtAG1AbYBtwG4AbkBugG7AbwBvQG+Ab8BwAHBAcIBwwHEAcUBxgHHAcgByQHKAcsBzAHNAc4BzwHQAdEB0gHTAdQB1QHWAdcB2AHZAdoB2wHcAd0B3gHfAeAB4QHiAeMB5AHlAeYB5wHoAekB6gHrAewB7QHuAe8B8AHxAfIB8wH0AfUB9gH3AfgB+QH6AfsB/AH9Af4B/wIAAgECAgIDAgQCBQIGAgcCCAIJAgoCCwIMAg0CDgIPAhACEQISAhMCFAIVAhYCFwIYAhkCGgIbAhwCHQIeAh8CIAIhAiICIwIkAiUCJgInAigCKQIqAisCLAItAi4CLwIwAjECMgIzAjQCNQI2AjcCOAI5AjoCOwI8Aj0CPgI/AkACQQJCAkMCRAJFAkYCRwJIAkkCSgJLAkwCTQJOAk8CUAJRAlICUwJUAlUCVgJXAlgCWQJaAlsCXAJdAl4CXwJgAmECYgJjAmQCZQJmAmcCaAJpAmoCawJsAm0CbgJvAnACcQJyAnMCdAJ1AnYCdwJ4AnkCegJ7AnwCfQJ+An8CgAKBAoICgwKEAoUChgKHAogCiQKKAosCjAKNAo4CjwKQApECkgKTApQClQKWApcCmAKZApoCmwKcAp0CngKfAqACoQKiAqMCpAKlAqYCpwKoAqkCqgKrAqwCrQKuAq8CsAKxArICswK0ArUCtgK3ArgCuQK6ArsCvAK9Ar4CvwLAAsECwgLDAsQCxQLGAscCyALJAsoCywLMAs0CzgLPAAdhY2NvdW50FGFjdGl2YXRlLWJyZWFrcG9pbnRzA2FkZAdhcmNoaXZlCmFycm93LWJvdGgRYXJyb3ctY2lyY2xlLWRvd24RYXJyb3ctY2lyY2xlLWxlZnQSYXJyb3ctY2lyY2xlLXJpZ2h0D2Fycm93LWNpcmNsZS11cAphcnJvdy1kb3duCmFycm93LWxlZnQLYXJyb3ctcmlnaHQQYXJyb3ctc21hbGwtZG93bhBhcnJvdy1zbWFsbC1sZWZ0EWFycm93LXNtYWxsLXJpZ2h0DmFycm93LXNtYWxsLXVwCmFycm93LXN3YXAIYXJyb3ctdXAGYXR0YWNoDGF6dXJlLWRldm9wcwVhenVyZQtiZWFrZXItc3RvcAZiZWFrZXIIYmVsbC1kb3QOYmVsbC1zbGFzaC1kb3QKYmVsbC1zbGFzaARiZWxsBWJsYW5rBGJvbGQEYm9vawhib29rbWFyawticmFja2V0LWRvdA1icmFja2V0LWVycm9yCWJyaWVmY2FzZQlicm9hZGNhc3QHYnJvd3NlcgNidWcIY2FsZW5kYXINY2FsbC1pbmNvbWluZw1jYWxsLW91dGdvaW5nDmNhc2Utc2Vuc2l0aXZlCWNoZWNrLWFsbAVjaGVjawljaGVja2xpc3QMY2hldnJvbi1kb3duDGNoZXZyb24tbGVmdA1jaGV2cm9uLXJpZ2h0CmNoZXZyb24tdXAEY2hpcAxjaHJvbWUtY2xvc2UPY2hyb21lLW1heGltaXplD2Nocm9tZS1taW5pbWl6ZQ5jaHJvbWUtcmVzdG9yZQ1jaXJjbGUtZmlsbGVkE2NpcmNsZS1sYXJnZS1maWxsZWQMY2lyY2xlLWxhcmdlDGNpcmNsZS1zbGFzaBNjaXJjbGUtc21hbGwtZmlsbGVkDGNpcmNsZS1zbWFsbAZjaXJjbGUNY2lyY3VpdC1ib2FyZAljbGVhci1hbGwGY2xpcHB5CWNsb3NlLWFsbAVjbG9zZQ5jbG91ZC1kb3dubG9hZAxjbG91ZC11cGxvYWQFY2xvdWQIY29kZS1vc3MEY29kZQZjb2ZmZWUMY29sbGFwc2UtYWxsCmNvbG9yLW1vZGUHY29tYmluZRJjb21tZW50LWRpc2N1c3Npb24NY29tbWVudC1kcmFmdBJjb21tZW50LXVucmVzb2x2ZWQHY29tbWVudA5jb21wYXNzLWFjdGl2ZQtjb21wYXNzLWRvdAdjb21wYXNzB2NvcGlsb3QEY29weQhjb3ZlcmFnZQtjcmVkaXQtY2FyZARkYXNoCWRhc2hib2FyZAhkYXRhYmFzZQlkZWJ1Zy1hbGwPZGVidWctYWx0LXNtYWxsCWRlYnVnLWFsdCdkZWJ1Zy1icmVha3BvaW50LWNvbmRpdGlvbmFsLXVudmVyaWZpZWQcZGVidWctYnJlYWtwb2ludC1jb25kaXRpb25hbCBkZWJ1Zy1icmVha3BvaW50LWRhdGEtdW52ZXJpZmllZBVkZWJ1Zy1icmVha3BvaW50LWRhdGEkZGVidWctYnJlYWtwb2ludC1mdW5jdGlvbi11bnZlcmlmaWVkGWRlYnVnLWJyZWFrcG9pbnQtZnVuY3Rpb24fZGVidWctYnJlYWtwb2ludC1sb2ctdW52ZXJpZmllZBRkZWJ1Zy1icmVha3BvaW50LWxvZxxkZWJ1Zy1icmVha3BvaW50LXVuc3VwcG9ydGVkDWRlYnVnLWNvbnNvbGUUZGVidWctY29udGludWUtc21hbGwOZGVidWctY29udGludWUOZGVidWctY292ZXJhZ2UQZGVidWctZGlzY29ubmVjdBJkZWJ1Zy1saW5lLWJ5LWxpbmULZGVidWctcGF1c2ULZGVidWctcmVydW4TZGVidWctcmVzdGFydC1mcmFtZQ1kZWJ1Zy1yZXN0YXJ0FmRlYnVnLXJldmVyc2UtY29udGludWUXZGVidWctc3RhY2tmcmFtZS1hY3RpdmUQZGVidWctc3RhY2tmcmFtZQtkZWJ1Zy1zdGFydA9kZWJ1Zy1zdGVwLWJhY2sPZGVidWctc3RlcC1pbnRvDmRlYnVnLXN0ZXAtb3V0D2RlYnVnLXN0ZXAtb3ZlcgpkZWJ1Zy1zdG9wBWRlYnVnEGRlc2t0b3AtZG93bmxvYWQTZGV2aWNlLWNhbWVyYS12aWRlbw1kZXZpY2UtY2FtZXJhDWRldmljZS1tb2JpbGUKZGlmZi1hZGRlZAxkaWZmLWlnbm9yZWQNZGlmZi1tb2RpZmllZA1kaWZmLW11bHRpcGxlDGRpZmYtcmVtb3ZlZAxkaWZmLXJlbmFtZWQLZGlmZi1zaW5nbGUEZGlmZgdkaXNjYXJkBGVkaXQNZWRpdG9yLWxheW91dAhlbGxpcHNpcwxlbXB0eS13aW5kb3cLZXJyb3Itc21hbGwFZXJyb3IHZXhjbHVkZQpleHBhbmQtYWxsBmV4cG9ydApleHRlbnNpb25zCmV5ZS1jbG9zZWQDZXllCGZlZWRiYWNrC2ZpbGUtYmluYXJ5CWZpbGUtY29kZQpmaWxlLW1lZGlhCGZpbGUtcGRmDmZpbGUtc3VibW9kdWxlFmZpbGUtc3ltbGluay1kaXJlY3RvcnkRZmlsZS1zeW1saW5rLWZpbGUIZmlsZS16aXAEZmlsZQVmaWxlcw1maWx0ZXItZmlsbGVkBmZpbHRlcgVmbGFtZQlmb2xkLWRvd24HZm9sZC11cARmb2xkDWZvbGRlci1hY3RpdmUOZm9sZGVyLWxpYnJhcnkNZm9sZGVyLW9wZW5lZAZmb2xkZXIEZ2FtZQRnZWFyBGdpZnQLZ2lzdC1zZWNyZXQKZ2l0LWNvbW1pdAtnaXQtY29tcGFyZQlnaXQtZmV0Y2gJZ2l0LW1lcmdlF2dpdC1wdWxsLXJlcXVlc3QtY2xvc2VkF2dpdC1wdWxsLXJlcXVlc3QtY3JlYXRlFmdpdC1wdWxsLXJlcXVlc3QtZHJhZnQeZ2l0LXB1bGwtcmVxdWVzdC1nby10by1jaGFuZ2VzHGdpdC1wdWxsLXJlcXVlc3QtbmV3LWNoYW5nZXMQZ2l0LXB1bGwtcmVxdWVzdA9naXQtc3Rhc2gtYXBwbHkNZ2l0LXN0YXNoLXBvcAlnaXQtc3Rhc2gNZ2l0aHViLWFjdGlvbgpnaXRodWItYWx0D2dpdGh1Yi1pbnZlcnRlZA5naXRodWItcHJvamVjdAZnaXRodWIFZ2xvYmUKZ28tdG8tZmlsZQxnby10by1zZWFyY2gHZ3JhYmJlcgpncmFwaC1sZWZ0CmdyYXBoLWxpbmUNZ3JhcGgtc2NhdHRlcgVncmFwaAdncmlwcGVyEWdyb3VwLWJ5LXJlZi10eXBlDGhlYXJ0LWZpbGxlZAVoZWFydAdoaXN0b3J5BGhvbWUPaG9yaXpvbnRhbC1ydWxlBWh1Ym90BWluYm94BmluZGVudARpbmZvBmluc2VydAdpbnNwZWN0C2lzc3VlLWRyYWZ0Dmlzc3VlLXJlb3BlbmVkBmlzc3VlcwZpdGFsaWMGamVyc2V5BGpzb24Oa2ViYWItdmVydGljYWwDa2V5A2xhdw1sYXllcnMtYWN0aXZlCmxheWVycy1kb3QGbGF5ZXJzF2xheW91dC1hY3Rpdml0eWJhci1sZWZ0GGxheW91dC1hY3Rpdml0eWJhci1yaWdodA9sYXlvdXQtY2VudGVyZWQObGF5b3V0LW1lbnViYXITbGF5b3V0LXBhbmVsLWNlbnRlchRsYXlvdXQtcGFuZWwtanVzdGlmeRFsYXlvdXQtcGFuZWwtbGVmdBBsYXlvdXQtcGFuZWwtb2ZmEmxheW91dC1wYW5lbC1yaWdodAxsYXlvdXQtcGFuZWwXbGF5b3V0LXNpZGViYXItbGVmdC1vZmYTbGF5b3V0LXNpZGViYXItbGVmdBhsYXlvdXQtc2lkZWJhci1yaWdodC1vZmYUbGF5b3V0LXNpZGViYXItcmlnaHQQbGF5b3V0LXN0YXR1c2JhcgZsYXlvdXQHbGlicmFyeRFsaWdodGJ1bGItYXV0b2ZpeBFsaWdodGJ1bGItc3BhcmtsZQlsaWdodGJ1bGINbGluay1leHRlcm5hbARsaW5rC2xpc3QtZmlsdGVyCWxpc3QtZmxhdAxsaXN0LW9yZGVyZWQObGlzdC1zZWxlY3Rpb24JbGlzdC10cmVlDmxpc3QtdW5vcmRlcmVkCmxpdmUtc2hhcmUHbG9hZGluZwhsb2NhdGlvbgpsb2NrLXNtYWxsBGxvY2sGbWFnbmV0CW1haWwtcmVhZARtYWlsCm1hcC1maWxsZWQTbWFwLXZlcnRpY2FsLWZpbGxlZAxtYXAtdmVydGljYWwDbWFwCG1hcmtkb3duCW1lZ2FwaG9uZQdtZW50aW9uBG1lbnUFbWVyZ2UKbWljLWZpbGxlZANtaWMJbWlsZXN0b25lBm1pcnJvcgxtb3J0YXItYm9hcmQEbW92ZRBtdWx0aXBsZS13aW5kb3dzBW11c2ljBG11dGUIbmV3LWZpbGUKbmV3LWZvbGRlcgduZXdsaW5lCm5vLW5ld2xpbmUEbm90ZRFub3RlYm9vay10ZW1wbGF0ZQhub3RlYm9vawhvY3RvZmFjZQxvcGVuLXByZXZpZXcMb3JnYW5pemF0aW9uBm91dHB1dAdwYWNrYWdlCHBhaW50Y2FuC3Bhc3MtZmlsbGVkBHBhc3MKcGVyY2VudGFnZQpwZXJzb24tYWRkBnBlcnNvbgVwaWFubwlwaWUtY2hhcnQDcGluDHBpbm5lZC1kaXJ0eQZwaW5uZWQLcGxheS1jaXJjbGUEcGxheQRwbHVnDXByZXNlcnZlLWNhc2UHcHJldmlldxBwcmltaXRpdmUtc3F1YXJlB3Byb2plY3QFcHVsc2UIcXVlc3Rpb24FcXVvdGULcmFkaW8tdG93ZXIJcmVhY3Rpb25zC3JlY29yZC1rZXlzDHJlY29yZC1zbWFsbAZyZWNvcmQEcmVkbwpyZWZlcmVuY2VzB3JlZnJlc2gFcmVnZXgPcmVtb3RlLWV4cGxvcmVyBnJlbW90ZQZyZW1vdmULcmVwbGFjZS1hbGwHcmVwbGFjZQVyZXBseQpyZXBvLWNsb25lCnJlcG8tZmV0Y2gPcmVwby1mb3JjZS1wdXNoC3JlcG8tZm9ya2VkCXJlcG8tcHVsbAlyZXBvLXB1c2gEcmVwbwZyZXBvcnQPcmVxdWVzdC1jaGFuZ2VzBXJvYm90BnJvY2tldBJyb290LWZvbGRlci1vcGVuZWQLcm9vdC1mb2xkZXIDcnNzBHJ1YnkJcnVuLWFib3ZlEHJ1bi1hbGwtY292ZXJhZ2UHcnVuLWFsbAlydW4tYmVsb3cMcnVuLWNvdmVyYWdlCnJ1bi1lcnJvcnMIc2F2ZS1hbGwHc2F2ZS1hcwRzYXZlC3NjcmVlbi1mdWxsDXNjcmVlbi1ub3JtYWwMc2VhcmNoLWZ1enp5C3NlYXJjaC1zdG9wBnNlYXJjaARzZW5kEnNlcnZlci1lbnZpcm9ubWVudA5zZXJ2ZXItcHJvY2VzcwZzZXJ2ZXINc2V0dGluZ3MtZ2VhcghzZXR0aW5ncwVzaGFyZQZzaGllbGQHc2lnbi1pbghzaWduLW91dAZzbWlsZXkFc25ha2UPc29ydC1wcmVjZWRlbmNlDnNvdXJjZS1jb250cm9sDnNwYXJrbGUtZmlsbGVkB3NwYXJrbGUQc3BsaXQtaG9yaXpvbnRhbA5zcGxpdC12ZXJ0aWNhbAhzcXVpcnJlbApzdGFyLWVtcHR5CXN0YXItZnVsbAlzdGFyLWhhbGYLc3RvcC1jaXJjbGUNc3Vycm91bmQtd2l0aAxzeW1ib2wtYXJyYXkOc3ltYm9sLWJvb2xlYW4Mc3ltYm9sLWNsYXNzDHN5bWJvbC1jb2xvcg9zeW1ib2wtY29uc3RhbnQSc3ltYm9sLWVudW0tbWVtYmVyC3N5bWJvbC1lbnVtDHN5bWJvbC1ldmVudAxzeW1ib2wtZmllbGQLc3ltYm9sLWZpbGUQc3ltYm9sLWludGVyZmFjZQpzeW1ib2wta2V5DnN5bWJvbC1rZXl3b3JkDXN5bWJvbC1tZXRob2QLc3ltYm9sLW1pc2MQc3ltYm9sLW5hbWVzcGFjZQ5zeW1ib2wtbnVtZXJpYw9zeW1ib2wtb3BlcmF0b3IQc3ltYm9sLXBhcmFtZXRlcg9zeW1ib2wtcHJvcGVydHkMc3ltYm9sLXJ1bGVyDnN5bWJvbC1zbmlwcGV0DXN5bWJvbC1zdHJpbmcQc3ltYm9sLXN0cnVjdHVyZQ9zeW1ib2wtdmFyaWFibGUMc3luYy1pZ25vcmVkBHN5bmMFdGFibGUDdGFnBnRhcmdldAh0YXNrbGlzdAl0ZWxlc2NvcGUNdGVybWluYWwtYmFzaAx0ZXJtaW5hbC1jbWQPdGVybWluYWwtZGViaWFuDnRlcm1pbmFsLWxpbnV4E3Rlcm1pbmFsLXBvd2Vyc2hlbGwNdGVybWluYWwtdG11eA90ZXJtaW5hbC11YnVudHUIdGVybWluYWwJdGV4dC1zaXplCnRocmVlLWJhcnMRdGh1bWJzZG93bi1maWxsZWQKdGh1bWJzZG93bg90aHVtYnN1cC1maWxsZWQIdGh1bWJzdXAFdG9vbHMFdHJhc2gNdHJpYW5nbGUtZG93bg10cmlhbmdsZS1sZWZ0DnRyaWFuZ2xlLXJpZ2h0C3RyaWFuZ2xlLXVwB3R3aXR0ZXISdHlwZS1oaWVyYXJjaHktc3ViFHR5cGUtaGllcmFyY2h5LXN1cGVyDnR5cGUtaGllcmFyY2h5BnVuZm9sZBN1bmdyb3VwLWJ5LXJlZi10eXBlBnVubG9jawZ1bm11dGUKdW52ZXJpZmllZA52YXJpYWJsZS1ncm91cA92ZXJpZmllZC1maWxsZWQIdmVyaWZpZWQIdmVyc2lvbnMJdm0tYWN0aXZlCnZtLWNvbm5lY3QKdm0tb3V0bGluZQp2bS1ydW5uaW5nAnZtAnZyD3ZzY29kZS1pbnNpZGVycwZ2c2NvZGUEd2FuZAd3YXJuaW5nBXdhdGNoCndoaXRlc3BhY2UKd2hvbGUtd29yZAZ3aW5kb3cJd29yZC13cmFwEXdvcmtzcGFjZS10cnVzdGVkEXdvcmtzcGFjZS11bmtub3duE3dvcmtzcGFjZS11bnRydXN0ZWQHem9vbS1pbgh6b29tLW91dAAA)format(\"truetype\")}.codicon[class*=codicon-]{text-align:center;text-rendering:auto;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-user-select:none;user-select:none;font:16px/1 codicon;text-decoration:none;display:inline-block}.codicon-wrench-subaction{opacity:.5}@keyframes codicon-spin{to{transform:rotate(1turn)}}.codicon-gear.codicon-modifier-spin,.codicon-loading.codicon-modifier-spin,.codicon-notebook-state-executing.codicon-modifier-spin,.codicon-sync.codicon-modifier-spin{animation:1.5s steps(30,end) infinite codicon-spin}.codicon-modifier-disabled{opacity:.4}.codicon-loading,.codicon-tree-item-loading:before{animation-duration:1s!important;animation-timing-function:cubic-bezier(.53,.21,.29,.67)!important}.context-view{position:absolute}.context-view.fixed{all:initial;color:inherit;font-family:inherit;font-size:13px;position:fixed}.monaco-count-badge{box-sizing:border-box;text-align:center;border-radius:11px;min-width:18px;min-height:18px;padding:3px 6px;font-size:11px;font-weight:400;line-height:11px;display:inline-block}.monaco-count-badge.long{border-radius:2px;min-height:auto;padding:2px 3px;line-height:normal}.monaco-dropdown{height:100%;padding:0}.monaco-dropdown>.dropdown-label{cursor:pointer;justify-content:center;align-items:center;height:100%;display:flex}.monaco-dropdown>.dropdown-label>.action-label.disabled{cursor:default}.monaco-dropdown-with-primary{border-radius:5px;flex-direction:row;display:flex!important}.monaco-dropdown-with-primary>.action-container>.action-label{margin-right:0}.monaco-dropdown-with-primary>.dropdown-action-container>.monaco-dropdown>.dropdown-label .codicon[class*=codicon-]{margin-left:-3px;padding-left:0;padding-right:0;font-size:12px;line-height:16px}.monaco-dropdown-with-primary>.dropdown-action-container>.monaco-dropdown>.dropdown-label>.action-label{background-position:50%;background-repeat:no-repeat;background-size:16px;display:block}.monaco-findInput{position:relative}.monaco-findInput .monaco-inputbox{width:100%;font-size:13px}.monaco-findInput>.controls{position:absolute;top:3px;right:2px}.vs .monaco-findInput.disabled{background-color:#e1e1e1}.vs-dark .monaco-findInput.disabled{background-color:#333}.hc-light .monaco-findInput.highlight-0 .controls,.monaco-findInput.highlight-0 .controls{animation:.1s linear monaco-findInput-highlight-0}.hc-light .monaco-findInput.highlight-1 .controls,.monaco-findInput.highlight-1 .controls{animation:.1s linear monaco-findInput-highlight-1}.hc-black .monaco-findInput.highlight-0 .controls,.vs-dark .monaco-findInput.highlight-0 .controls{animation:.1s linear monaco-findInput-highlight-dark-0}.hc-black .monaco-findInput.highlight-1 .controls,.vs-dark .monaco-findInput.highlight-1 .controls{animation:.1s linear monaco-findInput-highlight-dark-1}@keyframes monaco-findInput-highlight-0{0%{background:#fdff00cc}to{background:0 0}}@keyframes monaco-findInput-highlight-1{0%{background:#fdff00cc}99%{background:0 0}}@keyframes monaco-findInput-highlight-dark-0{0%{background:#ffffff70}to{background:0 0}}@keyframes monaco-findInput-highlight-dark-1{0%{background:#ffffff70}99%{background:0 0}}.monaco-hover{box-sizing:border-box;cursor:default;-webkit-user-select:text;user-select:text;white-space:var(--vscode-hover-whiteSpace,normal);line-height:1.5em;animation:.1s linear fadein;position:absolute;overflow:hidden}.monaco-hover.hidden{display:none}.monaco-hover a:hover:not(.disabled){cursor:pointer}.monaco-hover .hover-contents:not(.html-hover-contents){padding:4px 8px}.monaco-hover .markdown-hover>.hover-contents:not(.code-hover-contents){max-width:var(--vscode-hover-maxWidth,500px);word-wrap:break-word}.monaco-hover .markdown-hover>.hover-contents:not(.code-hover-contents) hr{min-width:100%}.monaco-hover .code,.monaco-hover h1,.monaco-hover h2,.monaco-hover h3,.monaco-hover h4,.monaco-hover h5,.monaco-hover h6,.monaco-hover p,.monaco-hover ul{margin:8px 0}.monaco-hover h1,.monaco-hover h2,.monaco-hover h3,.monaco-hover h4,.monaco-hover h5,.monaco-hover h6{line-height:1.1}.monaco-hover code{font-family:var(--monaco-monospace-font)}.monaco-hover hr{box-sizing:border-box;border-left:0;border-right:0;height:1px;margin:4px -8px -4px}.monaco-hover .code:first-child,.monaco-hover p:first-child,.monaco-hover ul:first-child{margin-top:0}.monaco-hover .code:last-child,.monaco-hover p:last-child,.monaco-hover ul:last-child{margin-bottom:0}.monaco-hover ol,.monaco-hover ul{padding-left:20px}.monaco-hover li>p{margin-bottom:0}.monaco-hover li>ul{margin-top:0}.monaco-hover code{border-radius:3px;padding:0 .4em}.monaco-hover .monaco-tokenized-source{white-space:var(--vscode-hover-sourceWhiteSpace,pre-wrap)}.monaco-hover .hover-row.status-bar{font-size:12px;line-height:22px}.monaco-hover .hover-row.status-bar .info{padding:0 8px;font-style:italic}.monaco-hover .hover-row.status-bar .actions{width:100%;padding:0 8px;display:flex}.monaco-hover .hover-row.status-bar .actions .action-container{cursor:pointer;margin-right:16px}.monaco-hover .hover-row.status-bar .actions .action-container .action .icon{padding-right:4px}.monaco-hover .hover-row.status-bar .actions .action-container a{color:var(--vscode-textLink-foreground);-webkit-text-decoration:var(--text-link-decoration);text-decoration:var(--text-link-decoration)}.monaco-hover .markdown-hover .hover-contents .codicon{color:inherit;font-size:inherit;vertical-align:middle}.monaco-hover .hover-contents a.code-link,.monaco-hover .hover-contents a.code-link:hover{color:inherit}.monaco-hover .hover-contents a.code-link:before{content:\"(\"}.monaco-hover .hover-contents a.code-link:after{content:\")\"}.monaco-hover .hover-contents a.code-link>span{color:var(--vscode-textLink-foreground);text-underline-position:under;border-bottom:1px solid #0000;text-decoration:underline}.monaco-hover .hover-contents a.code-link>span:hover{color:var(--vscode-textLink-activeForeground)}.monaco-hover .markdown-hover .hover-contents:not(.code-hover-contents):not(.html-hover-contents) span{margin-bottom:4px;display:inline-block}.monaco-hover .markdown-hover .hover-contents:not(.code-hover-contents):not(.html-hover-contents) span.codicon{margin-bottom:2px}.monaco-hover-content .action-container a{-webkit-user-select:none;user-select:none}.monaco-hover-content .action-container.disabled{cursor:default;opacity:.4;pointer-events:none}.monaco-icon-label{text-overflow:ellipsis;display:flex;overflow:hidden}.monaco-icon-label:before{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;vertical-align:top;background-position:0;background-repeat:no-repeat;background-size:16px;flex-shrink:0;width:16px;height:22px;padding-right:6px;display:inline-block;line-height:inherit!important}.monaco-icon-label-iconpath{width:16px;height:16px;margin-top:2px;padding-left:2px;display:flex}.monaco-icon-label-container.disabled{color:var(--vscode-disabledForeground)}.monaco-icon-label>.monaco-icon-label-container{text-overflow:ellipsis;flex:1;min-width:0;overflow:hidden}.monaco-icon-label>.monaco-icon-label-container>.monaco-icon-name-container>.label-name{color:inherit;white-space:pre}.monaco-icon-label>.monaco-icon-label-container>.monaco-icon-name-container>.label-name>.label-separator{opacity:.5;margin:0 2px}.monaco-icon-label>.monaco-icon-label-container>.monaco-icon-suffix-container>.label-suffix{opacity:.7;white-space:pre}.monaco-icon-label>.monaco-icon-label-container>.monaco-icon-description-container>.label-description{opacity:.7;white-space:pre;margin-left:.5em;font-size:.9em}.monaco-icon-label.nowrap>.monaco-icon-label-container>.monaco-icon-description-container>.label-description{white-space:nowrap}.vs .monaco-icon-label>.monaco-icon-label-container>.monaco-icon-description-container>.label-description{opacity:.95}.monaco-icon-label.italic>.monaco-icon-label-container>.monaco-icon-description-container>.label-description,.monaco-icon-label.italic>.monaco-icon-label-container>.monaco-icon-name-container>.label-name{font-style:italic}.monaco-icon-label.deprecated{opacity:.66;text-decoration:line-through}.monaco-icon-label.italic:after{font-style:italic}.monaco-icon-label.strikethrough>.monaco-icon-label-container>.monaco-icon-description-container>.label-description,.monaco-icon-label.strikethrough>.monaco-icon-label-container>.monaco-icon-name-container>.label-name{text-decoration:line-through}.monaco-icon-label:after{opacity:.75;text-align:center;margin:auto 16px 0 5px;font-size:90%;font-weight:600}.monaco-list:focus .selected .monaco-icon-label,.monaco-list:focus .selected .monaco-icon-label:after{color:inherit!important}.monaco-list-row.focused.selected .label-description,.monaco-list-row.selected .label-description{opacity:.8}.monaco-inputbox{box-sizing:border-box;font-size:inherit;border-radius:2px;padding:0;display:block;position:relative}.monaco-inputbox>.ibwrapper>.input,.monaco-inputbox>.ibwrapper>.mirror{padding:4px 6px}.monaco-inputbox>.ibwrapper{width:100%;height:100%;position:relative}.monaco-inputbox>.ibwrapper>.input{box-sizing:border-box;color:inherit;font-family:inherit;font-size:inherit;height:100%;line-height:inherit;resize:none;border:none;width:100%;display:inline-block}.monaco-inputbox>.ibwrapper>input{text-overflow:ellipsis}.monaco-inputbox>.ibwrapper>textarea.input{scrollbar-width:none;outline:none;display:block}.monaco-inputbox>.ibwrapper>textarea.input::-webkit-scrollbar{display:none}.monaco-inputbox>.ibwrapper>textarea.input.empty{white-space:nowrap}.monaco-inputbox>.ibwrapper>.mirror{box-sizing:border-box;visibility:hidden;white-space:pre-wrap;word-wrap:break-word;width:100%;display:inline-block;position:absolute;top:0;left:0}.monaco-inputbox-container{text-align:right}.monaco-inputbox-container .monaco-inputbox-message{box-sizing:border-box;text-align:left;word-wrap:break-word;width:100%;margin-top:-1px;padding:.4em;font-size:12px;line-height:17px;display:inline-block;overflow:hidden}.monaco-inputbox .monaco-action-bar{position:absolute;top:4px;right:2px}.monaco-inputbox .monaco-action-bar .action-item{margin-left:2px}.monaco-inputbox .monaco-action-bar .action-item .codicon{background-repeat:no-repeat;width:16px;height:16px}.monaco-keybinding{align-items:center;line-height:10px;display:flex}.monaco-keybinding>.monaco-keybinding-key{vertical-align:middle;border-style:solid;border-width:1px;border-radius:3px;margin:0 2px;padding:3px 5px;font-size:11px;display:inline-block}.monaco-keybinding>.monaco-keybinding-key:first-child{margin-left:0}.monaco-keybinding>.monaco-keybinding-key:last-child{margin-right:0}.monaco-keybinding>.monaco-keybinding-key-separator{display:inline-block}.monaco-keybinding>.monaco-keybinding-key-chord-separator{width:6px}.monaco-list{white-space:nowrap;width:100%;height:100%;position:relative}.monaco-list.mouse-support{-webkit-user-select:none;user-select:none}.monaco-list>.monaco-scrollable-element{height:100%}.monaco-list-rows{width:100%;height:100%;position:relative}.monaco-list.horizontal-scrolling .monaco-list-rows{width:auto;min-width:100%}.monaco-list-row{box-sizing:border-box;width:100%;position:absolute;overflow:hidden}.monaco-list.mouse-support .monaco-list-row{cursor:pointer;touch-action:none}.monaco-list .monaco-scrollable-element>.scrollbar.vertical,.monaco-pane-view>.monaco-split-view2.vertical>.monaco-scrollable-element>.scrollbar.vertical{z-index:14}.monaco-list-row.scrolling{display:none!important}.monaco-list.element-focused,.monaco-list.selection-multiple,.monaco-list.selection-single{outline:0!important}.monaco-drag-image{z-index:1000;border-radius:10px;padding:1px 7px;font-size:12px;display:inline-block;position:absolute}.monaco-list-type-filter-message{box-sizing:border-box;opacity:.7;pointer-events:none;text-align:center;white-space:normal;width:100%;height:100%;padding:40px 1em 1em;position:absolute;top:0;left:0}.monaco-list-type-filter-message:empty{display:none}.monaco-mouse-cursor-text{cursor:text}.monaco-progress-container{width:100%;height:2px;overflow:hidden}.monaco-progress-container .progress-bit{width:2%;height:2px;display:none;position:absolute;left:0}.monaco-progress-container.active .progress-bit{display:inherit}.monaco-progress-container.discrete .progress-bit{transition:width .1s linear;left:0}.monaco-progress-container.discrete.done .progress-bit{width:100%}.monaco-progress-container.infinite .progress-bit{animation-name:progress;animation-duration:4s;animation-timing-function:linear;animation-iteration-count:infinite;transform:translateZ(0)}.monaco-progress-container.infinite.infinite-long-running .progress-bit{animation-timing-function:steps(100,end)}@keyframes progress{0%{transform:translate(0)scaleX(1)}50%{transform:translate(2500%)scaleX(3)}to{transform:translate(4900%)scaleX(1)}}:root{--vscode-sash-size:4px;--vscode-sash-hover-size:4px}.monaco-sash{touch-action:none;z-index:35;position:absolute}.monaco-sash.disabled{pointer-events:none}.monaco-sash.mac.vertical{cursor:col-resize}.monaco-sash.vertical.minimum{cursor:e-resize}.monaco-sash.vertical.maximum{cursor:w-resize}.monaco-sash.mac.horizontal{cursor:row-resize}.monaco-sash.horizontal.minimum{cursor:s-resize}.monaco-sash.horizontal.maximum{cursor:n-resize}.monaco-sash.disabled{cursor:default!important;pointer-events:none!important}.monaco-sash.vertical{cursor:ew-resize;height:100%;width:var(--vscode-sash-size);top:0}.monaco-sash.horizontal{cursor:ns-resize;height:var(--vscode-sash-size);width:100%;left:0}.monaco-sash:not(.disabled)>.orthogonal-drag-handle{content:\" \";cursor:all-scroll;height:calc(var(--vscode-sash-size)*2);width:calc(var(--vscode-sash-size)*2);z-index:100;display:block;position:absolute}.monaco-sash.horizontal.orthogonal-edge-north:not(.disabled)>.orthogonal-drag-handle.start,.monaco-sash.horizontal.orthogonal-edge-south:not(.disabled)>.orthogonal-drag-handle.end{cursor:nwse-resize}.monaco-sash.horizontal.orthogonal-edge-north:not(.disabled)>.orthogonal-drag-handle.end,.monaco-sash.horizontal.orthogonal-edge-south:not(.disabled)>.orthogonal-drag-handle.start{cursor:nesw-resize}.monaco-sash.vertical>.orthogonal-drag-handle.start{left:calc(var(--vscode-sash-size)*-.5);top:calc(var(--vscode-sash-size)*-1)}.monaco-sash.vertical>.orthogonal-drag-handle.end{bottom:calc(var(--vscode-sash-size)*-1);left:calc(var(--vscode-sash-size)*-.5)}.monaco-sash.horizontal>.orthogonal-drag-handle.start{left:calc(var(--vscode-sash-size)*-1);top:calc(var(--vscode-sash-size)*-.5)}.monaco-sash.horizontal>.orthogonal-drag-handle.end{right:calc(var(--vscode-sash-size)*-1);top:calc(var(--vscode-sash-size)*-.5)}.monaco-sash:before{content:\"\";pointer-events:none;background:0 0;width:100%;height:100%;position:absolute}.monaco-workbench:not(.reduce-motion) .monaco-sash:before{transition:background-color .1s ease-out}.monaco-sash.active:before,.monaco-sash.hover:before{background:var(--vscode-sash-hoverBorder)}.monaco-sash.vertical:before{left:calc(50% - var(--vscode-sash-hover-size)/2);width:var(--vscode-sash-hover-size)}.monaco-sash.horizontal:before{height:var(--vscode-sash-hover-size);top:calc(50% - var(--vscode-sash-hover-size)/2)}.pointer-events-disabled{pointer-events:none!important}.monaco-sash.debug{background:#0ff}.monaco-sash.debug.disabled{background:#0ff3}.monaco-sash.debug:not(.disabled)>.orthogonal-drag-handle{background:red}.monaco-scrollable-element>.scrollbar>.scra{cursor:pointer;font-size:11px!important}.monaco-scrollable-element>.visible{opacity:1;z-index:11;background:0 0;transition:opacity .1s linear}.monaco-scrollable-element>.invisible{opacity:0;pointer-events:none}.monaco-scrollable-element>.invisible.fade{transition:opacity .8s linear}.monaco-scrollable-element>.shadow{display:none;position:absolute}.monaco-scrollable-element>.shadow.top{box-shadow:var(--vscode-scrollbar-shadow)0 6px 6px -6px inset;width:100%;height:3px;display:block;top:0;left:3px}.monaco-scrollable-element>.shadow.left{box-shadow:var(--vscode-scrollbar-shadow)6px 0 6px -6px inset;width:3px;height:100%;display:block;top:3px;left:0}.monaco-scrollable-element>.shadow.top-left-corner{width:3px;height:3px;display:block;top:0;left:0}.monaco-scrollable-element>.shadow.top.left{box-shadow:var(--vscode-scrollbar-shadow)6px 0 6px -6px inset}.monaco-scrollable-element>.scrollbar>.slider{background:var(--vscode-scrollbarSlider-background)}.monaco-scrollable-element>.scrollbar>.slider:hover{background:var(--vscode-scrollbarSlider-hoverBackground)}.monaco-scrollable-element>.scrollbar>.slider.active{background:var(--vscode-scrollbarSlider-activeBackground)}.monaco-select-box{cursor:pointer;border-radius:2px;width:100%}.monaco-select-box-dropdown-container{text-transform:none;font-size:13px;font-weight:400}.monaco-action-bar .action-item.select-container{cursor:default}.monaco-action-bar .action-item .monaco-select-box{cursor:pointer;min-width:100px;min-height:18px;padding:2px 23px 2px 8px}.mac .monaco-action-bar .action-item .monaco-select-box{border-radius:5px;font-size:11px}.monaco-select-box-dropdown-padding{--dropdown-padding-top:1px;--dropdown-padding-bottom:1px}.hc-black .monaco-select-box-dropdown-padding,.hc-light .monaco-select-box-dropdown-padding{--dropdown-padding-top:3px;--dropdown-padding-bottom:4px}.monaco-select-box-dropdown-container{box-sizing:border-box;display:none}.monaco-select-box-dropdown-container>.select-box-details-pane>.select-box-description-markdown *{margin:0}.monaco-select-box-dropdown-container>.select-box-details-pane>.select-box-description-markdown a:focus{outline:1px solid -webkit-focus-ring-color;outline-offset:-1px}.monaco-select-box-dropdown-container>.select-box-details-pane>.select-box-description-markdown code{font-family:var(--monaco-monospace-font);line-height:15px}.monaco-select-box-dropdown-container.visible{text-align:left;border-bottom-right-radius:3px;border-bottom-left-radius:3px;flex-direction:column;width:1px;display:flex;overflow:hidden}.monaco-select-box-dropdown-container>.select-box-dropdown-list-container{box-sizing:border-box;padding-bottom:var(--dropdown-padding-bottom);padding-left:1px;padding-right:1px;padding-top:var(--dropdown-padding-top);flex:none;align-self:flex-start;width:100%;overflow:hidden}.monaco-select-box-dropdown-container>.select-box-details-pane{padding:5px}.hc-black .monaco-select-box-dropdown-container>.select-box-dropdown-list-container{padding-bottom:var(--dropdown-padding-bottom);padding-top:var(--dropdown-padding-top)}.monaco-select-box-dropdown-container>.select-box-dropdown-list-container .monaco-list .monaco-list-row{cursor:pointer}.monaco-select-box-dropdown-container>.select-box-dropdown-list-container .monaco-list .monaco-list-row>.option-text{float:left;text-overflow:ellipsis;white-space:nowrap;padding-left:3.5px;overflow:hidden}.monaco-select-box-dropdown-container>.select-box-dropdown-list-container .monaco-list .monaco-list-row>.option-detail{float:left;opacity:.7;text-overflow:ellipsis;white-space:nowrap;padding-left:3.5px;overflow:hidden}.monaco-select-box-dropdown-container>.select-box-dropdown-list-container .monaco-list .monaco-list-row>.option-decorator-right{float:right;text-overflow:ellipsis;white-space:nowrap;padding-right:10px;overflow:hidden}.monaco-select-box-dropdown-container>.select-box-dropdown-list-container .monaco-list .monaco-list-row>.visually-hidden{width:1px;height:1px;position:absolute;top:auto;left:-10000px;overflow:hidden}.monaco-select-box-dropdown-container>.select-box-dropdown-container-width-control{opacity:0;flex:auto;align-self:flex-start}.monaco-select-box-dropdown-container>.select-box-dropdown-container-width-control>.width-control-div{max-height:0;overflow:hidden}.monaco-select-box-dropdown-container>.select-box-dropdown-container-width-control>.width-control-div>.option-text-width-control{white-space:nowrap;padding-left:4px;padding-right:8px}.monaco-split-view2{width:100%;height:100%;position:relative}.monaco-split-view2>.sash-container{pointer-events:none;width:100%;height:100%;position:absolute}.monaco-split-view2>.sash-container>.monaco-sash{pointer-events:auto}.monaco-split-view2>.monaco-scrollable-element{width:100%;height:100%}.monaco-split-view2>.monaco-scrollable-element>.split-view-container{white-space:nowrap;width:100%;height:100%;position:relative}.monaco-split-view2>.monaco-scrollable-element>.split-view-container>.split-view-view{white-space:normal;position:absolute}.monaco-split-view2>.monaco-scrollable-element>.split-view-container>.split-view-view:not(.visible){display:none}.monaco-split-view2.vertical>.monaco-scrollable-element>.split-view-container>.split-view-view{width:100%}.monaco-split-view2.horizontal>.monaco-scrollable-element>.split-view-container>.split-view-view{height:100%}.monaco-split-view2.separator-border>.monaco-scrollable-element>.split-view-container>.split-view-view:not(:first-child):before{background-color:var(--separator-border);content:\" \";pointer-events:none;z-index:5;position:absolute;top:0;left:0}.monaco-split-view2.separator-border.horizontal>.monaco-scrollable-element>.split-view-container>.split-view-view:not(:first-child):before{width:1px;height:100%}.monaco-split-view2.separator-border.vertical>.monaco-scrollable-element>.split-view-container>.split-view-view:not(:first-child):before{width:100%;height:1px}.monaco-table{white-space:nowrap;flex-direction:column;width:100%;height:100%;display:flex;position:relative;overflow:hidden}.monaco-table>.monaco-split-view2{border-bottom:1px solid #0000}.monaco-table>.monaco-list{flex:1}.monaco-table-tr{height:100%;display:flex}.monaco-table-th{text-overflow:ellipsis;width:100%;height:100%;font-weight:700;overflow:hidden}.monaco-table-td,.monaco-table-th{box-sizing:border-box;text-overflow:ellipsis;white-space:nowrap;flex-shrink:0;overflow:hidden}.monaco-table>.monaco-split-view2 .monaco-sash.vertical:before{content:\"\";left:calc(var(--vscode-sash-size)/2);border-left:1px solid #0000;width:0;position:absolute}.monaco-workbench:not(.reduce-motion) .monaco-table>.monaco-split-view2,.monaco-workbench:not(.reduce-motion) .monaco-table>.monaco-split-view2 .monaco-sash.vertical:before{transition:border-color .2s ease-out}.monaco-custom-toggle{box-sizing:border-box;cursor:pointer;float:left;-webkit-user-select:none;user-select:none;border:1px solid #0000;border-radius:3px;width:20px;height:20px;margin-left:2px;padding:1px;overflow:hidden}.monaco-custom-toggle:hover{background-color:var(--vscode-inputOption-hoverBackground)}.hc-black .monaco-custom-toggle:hover,.hc-light .monaco-custom-toggle:hover{border:1px dashed var(--vscode-focusBorder)}.hc-black .monaco-custom-toggle,.hc-black .monaco-custom-toggle:hover,.hc-light .monaco-custom-toggle,.hc-light .monaco-custom-toggle:hover{background:0 0}.monaco-custom-toggle.monaco-checkbox{opacity:1;border:1px solid #0000;border-radius:3px;width:18px;height:18px;margin-left:0;margin-right:9px;padding:0;background-size:16px!important}.monaco-action-bar .checkbox-action-item{border-radius:2px;align-items:center;padding-right:2px;display:flex}.monaco-action-bar .checkbox-action-item:hover{background-color:var(--vscode-toolbar-hoverBackground)}.monaco-action-bar .checkbox-action-item>.monaco-custom-toggle.monaco-checkbox{margin-right:4px}.monaco-action-bar .checkbox-action-item>.checkbox-label{font-size:12px}.monaco-custom-toggle.monaco-checkbox:not(.checked):before{visibility:hidden}.monaco-toolbar{height:100%}.monaco-toolbar .toolbar-toggle-more{padding:0;display:inline-block}.monaco-tl-row{align-items:center;height:100%;display:flex;position:relative}.monaco-tl-row.disabled{cursor:default}.monaco-tl-indent{pointer-events:none;height:100%;position:absolute;top:0;left:16px}.hide-arrows .monaco-tl-indent{left:12px}.monaco-tl-indent>.indent-guide{box-sizing:border-box;border-left:1px solid #0000;height:100%;display:inline-block}.monaco-workbench:not(.reduce-motion) .monaco-tl-indent>.indent-guide{transition:border-color .1s linear}.monaco-tl-contents,.monaco-tl-twistie{height:100%}.monaco-tl-twistie{text-align:right;flex-shrink:0;justify-content:center;align-items:center;width:16px;padding-right:6px;font-size:10px;transform:translate(3px);display:flex!important}.monaco-tl-contents{flex:1;overflow:hidden}.monaco-tl-twistie:before{border-radius:20px}.monaco-tl-twistie.collapsed:before{transform:rotate(-90deg)}.monaco-tl-twistie.codicon-tree-item-loading:before{animation:1.25s steps(30,end) infinite codicon-spin}.monaco-tree-type-filter{border:1px solid var(--vscode-widget-border);z-index:100;border-bottom-right-radius:4px;border-bottom-left-radius:4px;max-width:200px;margin:0 6px;padding:3px;display:flex;position:absolute;top:0}.monaco-workbench:not(.reduce-motion) .monaco-tree-type-filter{transition:top .3s}.monaco-tree-type-filter.disabled{top:-40px!important}.monaco-tree-type-filter-grab{cursor:grab;justify-content:center;align-items:center;margin-right:2px;display:flex!important}.monaco-tree-type-filter-grab.grabbing{cursor:grabbing}.monaco-tree-type-filter-input{flex:1}.monaco-tree-type-filter-input .monaco-inputbox{height:23px}.monaco-tree-type-filter-input .monaco-inputbox>.ibwrapper>.input,.monaco-tree-type-filter-input .monaco-inputbox>.ibwrapper>.mirror{padding:2px 4px}.monaco-tree-type-filter-input .monaco-findInput>.controls{top:2px}.monaco-tree-type-filter-actionbar{margin-left:4px}.monaco-tree-type-filter-actionbar .monaco-action-bar .action-label{padding:2px}.monaco-list .monaco-scrollable-element .monaco-tree-sticky-container{background-color:var(--vscode-sideBar-background);z-index:13;width:100%;height:0;position:absolute;top:0;left:0}.monaco-list .monaco-scrollable-element .monaco-tree-sticky-container .monaco-tree-sticky-row.monaco-list-row{background-color:var(--vscode-sideBar-background);width:100%;position:absolute;overflow:hidden;opacity:1!important}.monaco-list .monaco-scrollable-element .monaco-tree-sticky-container .monaco-tree-sticky-row:hover{cursor:pointer;background-color:var(--vscode-list-hoverBackground)!important}.monaco-list .monaco-scrollable-element .monaco-tree-sticky-container.empty,.monaco-list .monaco-scrollable-element .monaco-tree-sticky-container.empty .monaco-tree-sticky-container-shadow{display:none}.monaco-list .monaco-scrollable-element .monaco-tree-sticky-container .monaco-tree-sticky-container-shadow{width:100%;height:0;position:absolute;bottom:-3px;left:0}.monaco-list .monaco-scrollable-element .monaco-tree-sticky-container[tabindex=\"0\"]:focus{outline:none}.monaco-editor .inputarea{color:#0000;resize:none;z-index:-10;background-color:#0000;border:none;min-width:0;min-height:0;margin:0;padding:0;position:absolute;overflow:hidden;outline:none!important}.monaco-editor .inputarea.ime-input{caret-color:var(--vscode-editorCursor-foreground);color:var(--vscode-editor-foreground);z-index:10}.monaco-workbench .workbench-hover{background:var(--vscode-editorHoverWidget-background);border:1px solid var(--vscode-editorHoverWidget-border);box-shadow:0 2px 8px var(--vscode-widget-shadow);color:var(--vscode-editorHoverWidget-foreground);z-index:40;border-radius:3px;max-width:700px;font-size:13px;line-height:19px;position:relative;overflow:hidden}.monaco-workbench .workbench-hover hr{border-bottom:none}.monaco-workbench .workbench-hover:not(.skip-fade-in){animation:.1s linear fadein}.monaco-workbench .workbench-hover.compact{font-size:12px}.monaco-workbench .workbench-hover.compact .hover-contents{padding:2px 8px}.monaco-workbench .workbench-hover-container.locked .workbench-hover{outline:1px solid var(--vscode-editorHoverWidget-border)}.monaco-workbench .workbench-hover-container.locked .workbench-hover:focus,.monaco-workbench .workbench-hover-lock:focus{outline:1px solid var(--vscode-focusBorder)}.monaco-workbench .workbench-hover-container.locked .workbench-hover-lock:hover{background:var(--vscode-toolbar-hoverBackground)}.monaco-workbench .workbench-hover-pointer{pointer-events:none;z-index:41;position:absolute}.monaco-workbench .workbench-hover-pointer:after{background-color:var(--vscode-editorHoverWidget-background);border-bottom:1px solid var(--vscode-editorHoverWidget-border);border-right:1px solid var(--vscode-editorHoverWidget-border);content:\"\";width:5px;height:5px;position:absolute}.monaco-workbench .locked .workbench-hover-pointer:after{border-bottom-width:2px;border-right-width:2px;width:4px;height:4px}.monaco-workbench .workbench-hover-pointer.left{left:-3px}.monaco-workbench .workbench-hover-pointer.right{right:3px}.monaco-workbench .workbench-hover-pointer.top{top:-3px}.monaco-workbench .workbench-hover-pointer.bottom{bottom:3px}.monaco-workbench .workbench-hover-pointer.left:after{transform:rotate(135deg)}.monaco-workbench .workbench-hover-pointer.right:after{transform:rotate(315deg)}.monaco-workbench .workbench-hover-pointer.top:after{transform:rotate(225deg)}.monaco-workbench .workbench-hover-pointer.bottom:after{transform:rotate(45deg)}.monaco-workbench .workbench-hover a{color:var(--vscode-textLink-foreground)}.monaco-workbench .workbench-hover a:focus{outline:1px solid;outline-color:var(--vscode-focusBorder);outline-offset:-1px;text-decoration:underline}.monaco-workbench .workbench-hover a:active,.monaco-workbench .workbench-hover a:hover{color:var(--vscode-textLink-activeForeground)}.monaco-workbench .workbench-hover code{background:var(--vscode-textCodeBlock-background)}.monaco-workbench .workbench-hover .hover-row .actions{background:var(--vscode-editorHoverWidget-statusBarBackground)}.monaco-workbench .workbench-hover.right-aligned{left:1px}.monaco-workbench .workbench-hover.right-aligned .hover-row.status-bar .actions{flex-direction:row-reverse}.monaco-workbench .workbench-hover.right-aligned .hover-row.status-bar .actions .action-container{margin-left:16px;margin-right:0}.monaco-editor .blockDecorations-container{pointer-events:none;position:absolute;top:0}.monaco-editor .blockDecorations-block{box-sizing:border-box;position:absolute}.monaco-editor .margin-view-overlays .current-line,.monaco-editor .view-overlays .current-line{box-sizing:border-box;height:100%;display:block;position:absolute;top:0;left:0}.monaco-editor .margin-view-overlays .current-line.current-line-margin.current-line-margin-both{border-right:0}.monaco-editor .lines-content .cdr{height:100%;position:absolute}.monaco-editor .glyph-margin{position:absolute;top:0}.monaco-editor .glyph-margin-widgets .cgmr{justify-content:center;align-items:center;display:flex;position:absolute}.monaco-editor .glyph-margin-widgets .cgmr.codicon-modifier-spin:before{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.monaco-editor .lines-content .core-guide{box-sizing:border-box;height:100%;position:absolute}.monaco-editor .margin-view-overlays .line-numbers{box-sizing:border-box;cursor:default;font-variant-numeric:tabular-nums;text-align:right;vertical-align:middle;display:inline-block;position:absolute;bottom:0}.monaco-editor .relative-current-line-number{text-align:left;width:100%;display:inline-block}.monaco-editor .margin-view-overlays .line-numbers.lh-odd{margin-top:1px}.monaco-editor .line-numbers{color:var(--vscode-editorLineNumber-foreground)}.monaco-editor .line-numbers.active-line-number{color:var(--vscode-editorLineNumber-activeForeground)}.mtkcontrol{color:#fff!important;background:#960000!important}.mtkoverflow{background-color:var(--vscode-button-background,var(--vscode-editor-background));border-color:var(--vscode-contrastBorder);color:var(--vscode-button-foreground,var(--vscode-editor-foreground));cursor:pointer;border-style:solid;border-width:1px;border-radius:2px;padding:4px}.mtkoverflow:hover{background-color:var(--vscode-button-hoverBackground)}.monaco-editor.no-user-select .lines-content,.monaco-editor.no-user-select .view-line,.monaco-editor.no-user-select .view-lines{-webkit-user-select:none;user-select:none}.monaco-editor.mac .lines-content:hover,.monaco-editor.mac .view-line:hover,.monaco-editor.mac .view-lines:hover{-webkit-user-select:text;user-select:text}.monaco-editor.enable-user-select{-webkit-user-select:auto;user-select:auto;-webkit-user-select:initial}.monaco-editor .view-lines{white-space:nowrap}.monaco-editor .view-line{width:100%;position:absolute}.monaco-editor .lines-content>.view-lines>.view-line>span{position:absolute;top:0;bottom:0}.monaco-editor .mtkw,.monaco-editor .mtkz{color:var(--vscode-editorWhitespace-foreground)!important}.monaco-editor .mtkz{display:inline-block}.monaco-editor .lines-decorations{background:#fff;position:absolute;top:0}.monaco-editor .margin-view-overlays .cldr{height:100%;position:absolute}.monaco-editor .margin{background-color:var(--vscode-editorGutter-background)}.monaco-editor .margin-view-overlays .cmdr{width:100%;height:100%;position:absolute;left:0}.monaco-editor .minimap.slider-mouseover .minimap-slider{opacity:0;transition:opacity .1s linear}.monaco-editor .minimap.slider-mouseover .minimap-slider.active,.monaco-editor .minimap.slider-mouseover:hover .minimap-slider{opacity:1}.monaco-editor .minimap-slider .minimap-slider-horizontal{background:var(--vscode-minimapSlider-background)}.monaco-editor .minimap-slider:hover .minimap-slider-horizontal{background:var(--vscode-minimapSlider-hoverBackground)}.monaco-editor .minimap-slider.active .minimap-slider-horizontal{background:var(--vscode-minimapSlider-activeBackground)}.monaco-editor .minimap-shadow-visible{box-shadow:var(--vscode-scrollbar-shadow)-6px 0 6px -6px inset}.monaco-editor .minimap-shadow-hidden{width:0;position:absolute}.monaco-editor .minimap-shadow-visible{width:6px;position:absolute;left:-6px}.monaco-editor.no-minimap-shadow .minimap-shadow-visible{width:1px;position:absolute;left:-1px}.minimap.autohide{opacity:0;transition:opacity .5s}.minimap.autohide:hover{opacity:1}.monaco-editor .minimap{z-index:5}.monaco-editor .overlayWidgets{position:absolute;top:0;left:0}.monaco-editor .view-ruler{box-shadow:1px 0 0 0 var(--vscode-editorRuler-foreground)inset;position:absolute;top:0}.monaco-editor .scroll-decoration{box-shadow:var(--vscode-scrollbar-shadow)0 6px 6px -6px inset;height:6px;position:absolute;top:0;left:0}.monaco-editor .lines-content .cslr{position:absolute}.monaco-editor .focused .selected-text{background-color:var(--vscode-editor-selectionBackground)}.monaco-editor .selected-text{background-color:var(--vscode-editor-inactiveSelectionBackground)}.monaco-editor .top-left-radius{border-top-left-radius:3px}.monaco-editor .bottom-left-radius{border-bottom-left-radius:3px}.monaco-editor .top-right-radius{border-top-right-radius:3px}.monaco-editor .bottom-right-radius{border-bottom-right-radius:3px}.monaco-editor.hc-black .top-left-radius{border-top-left-radius:0}.monaco-editor.hc-black .bottom-left-radius{border-bottom-left-radius:0}.monaco-editor.hc-black .top-right-radius{border-top-right-radius:0}.monaco-editor.hc-black .bottom-right-radius{border-bottom-right-radius:0}.monaco-editor.hc-light .top-left-radius{border-top-left-radius:0}.monaco-editor.hc-light .bottom-left-radius{border-bottom-left-radius:0}.monaco-editor.hc-light .top-right-radius{border-top-right-radius:0}.monaco-editor.hc-light .bottom-right-radius{border-bottom-right-radius:0}.monaco-editor .cursors-layer{position:absolute;top:0}.monaco-editor .cursors-layer>.cursor{box-sizing:border-box;position:absolute;overflow:hidden}.monaco-editor .cursors-layer.cursor-smooth-caret-animation>.cursor{transition:all 80ms}.monaco-editor .cursors-layer.cursor-block-outline-style>.cursor{border-style:solid;border-width:1px;background:0 0!important}.monaco-editor .cursors-layer.cursor-underline-style>.cursor{border-bottom-style:solid;border-bottom-width:2px;background:0 0!important}.monaco-editor .cursors-layer.cursor-underline-thin-style>.cursor{border-bottom-style:solid;border-bottom-width:1px;background:0 0!important}@keyframes monaco-cursor-smooth{0%,20%{opacity:1}60%,to{opacity:0}}@keyframes monaco-cursor-phase{0%,20%{opacity:1}90%,to{opacity:0}}@keyframes monaco-cursor-expand{0%,20%{transform:scaleY(1)}80%,to{transform:scaleY(0)}}.cursor-smooth{animation:.5s ease-in-out 20 alternate monaco-cursor-smooth}.cursor-phase{animation:.5s ease-in-out 20 alternate monaco-cursor-phase}.cursor-expand>.cursor{animation:.5s ease-in-out 20 alternate monaco-cursor-expand}.monaco-editor .mwh{position:absolute;color:var(--vscode-editorWhitespace-foreground)!important}::-ms-clear{display:none}.monaco-editor .editor-widget input{color:inherit}.monaco-editor{-webkit-text-size-adjust:100%;color:var(--vscode-editor-foreground);overflow-wrap:normal;position:relative;overflow:visible}.monaco-editor,.monaco-editor-background{background-color:var(--vscode-editor-background)}.monaco-editor .rangeHighlight{background-color:var(--vscode-editor-rangeHighlightBackground);border:1px solid var(--vscode-editor-rangeHighlightBorder);box-sizing:border-box}.monaco-editor.hc-black .rangeHighlight,.monaco-editor.hc-light .rangeHighlight{border-style:dotted}.monaco-editor .symbolHighlight{background-color:var(--vscode-editor-symbolHighlightBackground);border:1px solid var(--vscode-editor-symbolHighlightBorder);box-sizing:border-box}.monaco-editor.hc-black .symbolHighlight,.monaco-editor.hc-light .symbolHighlight{border-style:dotted}.monaco-editor .overflow-guard{position:relative;overflow:hidden}.monaco-editor .view-overlays{position:absolute;top:0}.monaco-editor .margin-view-overlays>div,.monaco-editor .view-overlays>div{width:100%;position:absolute}.monaco-editor .squiggly-error{border-bottom:4px double var(--vscode-editorError-border)}.monaco-editor .squiggly-error:before{background:var(--vscode-editorError-background);content:\"\";width:100%;height:100%;display:block}.monaco-editor .squiggly-warning{border-bottom:4px double var(--vscode-editorWarning-border)}.monaco-editor .squiggly-warning:before{background:var(--vscode-editorWarning-background);content:\"\";width:100%;height:100%;display:block}.monaco-editor .squiggly-info{border-bottom:4px double var(--vscode-editorInfo-border)}.monaco-editor .squiggly-info:before{background:var(--vscode-editorInfo-background);content:\"\";width:100%;height:100%;display:block}.monaco-editor .squiggly-hint{border-bottom:2px dotted var(--vscode-editorHint-border)}.monaco-editor.showUnused .squiggly-unnecessary{border-bottom:2px dashed var(--vscode-editorUnnecessaryCode-border)}.monaco-editor.showDeprecated .squiggly-inline-deprecated{text-decoration:line-through;-webkit-text-decoration-color:var(--vscode-editor-foreground,inherit);text-decoration-color:var(--vscode-editor-foreground,inherit)}.monaco-component.diff-review{-webkit-user-select:none;user-select:none;z-index:99}.monaco-diff-editor .diff-review{position:absolute}.monaco-component.diff-review .diff-review-line-number{color:var(--vscode-editorLineNumber-foreground);text-align:right;display:inline-block}.monaco-component.diff-review .diff-review-summary{padding-left:10px}.monaco-component.diff-review .diff-review-shadow{box-shadow:var(--vscode-scrollbar-shadow)0 -6px 6px -6px inset;position:absolute}.monaco-component.diff-review .diff-review-row{white-space:pre}.monaco-component.diff-review .diff-review-table{min-width:100%;display:table}.monaco-component.diff-review .diff-review-row{width:100%;display:table-row}.monaco-component.diff-review .diff-review-spacer{vertical-align:middle;width:10px;display:inline-block}.monaco-component.diff-review .diff-review-spacer>.codicon{font-size:9px!important}.monaco-component.diff-review .diff-review-actions{z-index:100;display:inline-block;position:absolute;top:2px;right:10px}.monaco-component.diff-review .diff-review-actions .action-label{width:16px;height:16px;margin:2px 0}.monaco-component.diff-review .revertButton{cursor:pointer}.monaco-editor .diff-hidden-lines-widget{width:100%}.monaco-editor .diff-hidden-lines{height:0;font-size:13px;line-height:14px;transform:translateY(-10px)}.monaco-editor .diff-hidden-lines .bottom.dragging,.monaco-editor .diff-hidden-lines .top.dragging,.monaco-editor .diff-hidden-lines:not(.dragging) .bottom:hover,.monaco-editor .diff-hidden-lines:not(.dragging) .top:hover{background-color:var(--vscode-focusBorder)}.monaco-editor .diff-hidden-lines .bottom,.monaco-editor .diff-hidden-lines .top{background-color:#0000;background-clip:padding-box;border-top:4px solid #0000;border-bottom:2px solid #0000;height:4px;transition:background-color .1s ease-out}.monaco-editor .diff-hidden-lines .bottom.canMoveTop:not(.canMoveBottom),.monaco-editor .diff-hidden-lines .top.canMoveTop:not(.canMoveBottom),.monaco-editor.draggingUnchangedRegion.canMoveTop:not(.canMoveBottom) *{cursor:n-resize!important}.monaco-editor .diff-hidden-lines .bottom:not(.canMoveTop).canMoveBottom,.monaco-editor .diff-hidden-lines .top:not(.canMoveTop).canMoveBottom,.monaco-editor.draggingUnchangedRegion:not(.canMoveTop).canMoveBottom *{cursor:s-resize!important}.monaco-editor .diff-hidden-lines .bottom.canMoveTop.canMoveBottom,.monaco-editor .diff-hidden-lines .top.canMoveTop.canMoveBottom,.monaco-editor.draggingUnchangedRegion.canMoveTop.canMoveBottom *{cursor:ns-resize!important}.monaco-editor .diff-hidden-lines .top{transform:translateY(4px)}.monaco-editor .diff-hidden-lines .bottom{transform:translateY(-6px)}.monaco-editor .diff-unchanged-lines{background:var(--vscode-diffEditor-unchangedCodeBackground)}.monaco-editor .noModificationsOverlay{background:var(--vscode-editor-background);z-index:1;justify-content:center;align-items:center;display:flex}.monaco-editor .diff-hidden-lines .center{background:var(--vscode-diffEditor-unchangedRegionBackground);box-shadow:inset 0 -5px 5px -7px var(--vscode-diffEditor-unchangedRegionShadow),inset 0 5px 5px -7px var(--vscode-diffEditor-unchangedRegionShadow);color:var(--vscode-diffEditor-unchangedRegionForeground);text-overflow:ellipsis;white-space:nowrap;height:24px;display:block;overflow:hidden}.monaco-editor .diff-hidden-lines .center span.codicon{vertical-align:middle}.monaco-editor .diff-hidden-lines .center a:hover .codicon{cursor:pointer;color:var(--vscode-editorLink-activeForeground)!important}.monaco-editor .diff-hidden-lines div.breadcrumb-item{cursor:pointer}.monaco-editor .diff-hidden-lines div.breadcrumb-item:hover{color:var(--vscode-editorLink-activeForeground)}.monaco-editor .movedModified,.monaco-editor .movedOriginal{border:2px solid var(--vscode-diffEditor-move-border)}.monaco-editor .movedModified.currentMove,.monaco-editor .movedOriginal.currentMove{border:2px solid var(--vscode-diffEditor-moveActive-border)}.monaco-diff-editor .moved-blocks-lines path.currentMove{stroke:var(--vscode-diffEditor-moveActive-border)}.monaco-diff-editor .moved-blocks-lines path{pointer-events:visiblestroke}.monaco-diff-editor .moved-blocks-lines .arrow{fill:var(--vscode-diffEditor-move-border)}.monaco-diff-editor .moved-blocks-lines .arrow.currentMove{fill:var(--vscode-diffEditor-moveActive-border)}.monaco-diff-editor .moved-blocks-lines .arrow-rectangle{fill:var(--vscode-editor-background)}.monaco-diff-editor .moved-blocks-lines{pointer-events:none;position:absolute}.monaco-diff-editor .moved-blocks-lines path{fill:none;stroke:var(--vscode-diffEditor-move-border);stroke-width:2px}.monaco-editor .char-delete.diff-range-empty{border-left:3px solid var(--vscode-diffEditor-removedTextBackground);margin-left:-1px}.monaco-editor .char-insert.diff-range-empty{border-left:3px solid var(--vscode-diffEditor-insertedTextBackground)}.monaco-editor .fold-unchanged{cursor:pointer}.monaco-diff-editor .diff-moved-code-block{justify-content:flex-end;margin-top:-4px;display:flex}.monaco-diff-editor .diff-moved-code-block .action-bar .action-label.codicon{width:12px;height:12px;font-size:12px}.monaco-diff-editor .diffOverview{z-index:9}.monaco-diff-editor .diffOverview .diffViewport{z-index:10}.monaco-diff-editor.vs .diffOverview{background:#00000008}.monaco-diff-editor.vs-dark .diffOverview{background:#ffffff03}.monaco-scrollable-element.modified-in-monaco-diff-editor.vs .scrollbar,.monaco-scrollable-element.modified-in-monaco-diff-editor.vs-dark .scrollbar,.monaco-scrollable-element.modified-in-monaco-diff-editor.hc-black .scrollbar,.monaco-scrollable-element.modified-in-monaco-diff-editor.hc-light .scrollbar{background:0 0}.monaco-scrollable-element.modified-in-monaco-diff-editor .slider{z-index:10}.modified-in-monaco-diff-editor .slider.active{background:#ababab66}.modified-in-monaco-diff-editor.hc-black .slider.active,.modified-in-monaco-diff-editor.hc-light .slider.active{background:0 0}.monaco-diff-editor .delete-sign,.monaco-diff-editor .insert-sign,.monaco-editor .delete-sign,.monaco-editor .insert-sign{align-items:center;opacity:.7!important;font-size:11px!important;display:flex!important}.monaco-diff-editor.hc-black .delete-sign,.monaco-diff-editor.hc-black .insert-sign,.monaco-diff-editor.hc-light .delete-sign,.monaco-diff-editor.hc-light .insert-sign,.monaco-editor.hc-black .delete-sign,.monaco-editor.hc-black .insert-sign,.monaco-editor.hc-light .delete-sign,.monaco-editor.hc-light .insert-sign{opacity:1}.monaco-editor .inline-added-margin-view-zone,.monaco-editor .inline-deleted-margin-view-zone{text-align:right}.monaco-editor .arrow-revert-change{z-index:10;position:absolute}.monaco-editor .arrow-revert-change:hover{cursor:pointer}.monaco-editor .view-zones .view-lines .view-line span{display:inline-block}.monaco-editor .margin-view-zones .lightbulb-glyph:hover{cursor:pointer}.monaco-diff-editor .char-insert,.monaco-editor .char-insert{background-color:var(--vscode-diffEditor-insertedTextBackground)}.monaco-diff-editor .line-insert,.monaco-editor .line-insert{background-color:var(--vscode-diffEditor-insertedLineBackground,var(--vscode-diffEditor-insertedTextBackground))}.monaco-editor .char-insert,.monaco-editor .line-insert{border:1px solid var(--vscode-diffEditor-insertedTextBorder);box-sizing:border-box}.monaco-editor.hc-black .char-insert,.monaco-editor.hc-black .line-insert,.monaco-editor.hc-light .char-insert,.monaco-editor.hc-light .line-insert{border-style:dashed}.monaco-editor .char-delete,.monaco-editor .line-delete{border:1px solid var(--vscode-diffEditor-removedTextBorder);box-sizing:border-box}.monaco-editor.hc-black .char-delete,.monaco-editor.hc-black .line-delete,.monaco-editor.hc-light .char-delete,.monaco-editor.hc-light .line-delete{border-style:dashed}.monaco-diff-editor .gutter-insert,.monaco-editor .gutter-insert,.monaco-editor .inline-added-margin-view-zone{background-color:var(--vscode-diffEditorGutter-insertedLineBackground,var(--vscode-diffEditor-insertedLineBackground),var(--vscode-diffEditor-insertedTextBackground))}.monaco-diff-editor .char-delete,.monaco-editor .char-delete,.monaco-editor .inline-deleted-text{background-color:var(--vscode-diffEditor-removedTextBackground)}.monaco-editor .inline-deleted-text{text-decoration:line-through}.monaco-diff-editor .line-delete,.monaco-editor .line-delete{background-color:var(--vscode-diffEditor-removedLineBackground,var(--vscode-diffEditor-removedTextBackground))}.monaco-diff-editor .gutter-delete,.monaco-editor .gutter-delete,.monaco-editor .inline-deleted-margin-view-zone{background-color:var(--vscode-diffEditorGutter-removedLineBackground,var(--vscode-diffEditor-removedLineBackground),var(--vscode-diffEditor-removedTextBackground))}.monaco-diff-editor.side-by-side .editor.modified{border-left:1px solid var(--vscode-diffEditor-border);box-shadow:-6px 0 5px -5px var(--vscode-scrollbar-shadow)}.monaco-diff-editor.side-by-side .editor.original{border-right:1px solid var(--vscode-diffEditor-border);box-shadow:6px 0 5px -5px var(--vscode-scrollbar-shadow)}.monaco-diff-editor .diffViewport{background:var(--vscode-scrollbarSlider-background)}.monaco-diff-editor .diffViewport:hover{background:var(--vscode-scrollbarSlider-hoverBackground)}.monaco-diff-editor .diffViewport:active{background:var(--vscode-scrollbarSlider-activeBackground)}.monaco-editor .diagonal-fill{background-image:linear-gradient(-45deg,var(--vscode-diffEditor-diagonalFill)12.5%,#0000 12.5%,#0000 50%,var(--vscode-diffEditor-diagonalFill)50%,var(--vscode-diffEditor-diagonalFill)62.5%,#0000 62.5%,#0000 100%);background-size:8px 8px}.monaco-diff-editor .gutter{flex-grow:0;flex-shrink:0;position:relative;overflow:hidden}.monaco-diff-editor .gutter>div{position:absolute}.monaco-diff-editor .gutter .gutterItem{opacity:0;transition:opacity .7s}.monaco-diff-editor .gutter .gutterItem.showAlways{opacity:1;transition:none}.monaco-diff-editor .gutter .gutterItem.noTransition{transition:none}.monaco-diff-editor .gutter:hover .gutterItem{opacity:1;transition:opacity .1s ease-in-out}.monaco-diff-editor .gutter .gutterItem .background{border-left:2px solid var(--vscode-menu-border);width:1px;height:100%;position:absolute;left:50%}.monaco-diff-editor .gutter .gutterItem .buttons{justify-content:center;align-items:center;width:100%;display:flex;position:absolute}.monaco-diff-editor .gutter .gutterItem .buttons .monaco-toolbar{height:fit-content}.monaco-diff-editor .gutter .gutterItem .buttons .monaco-toolbar .monaco-action-bar{line-height:1}.monaco-diff-editor .gutter .gutterItem .buttons .monaco-toolbar .monaco-action-bar .actions-container{background:var(--vscode-editorGutter-commentRangeForeground);border-radius:4px;width:fit-content}.monaco-diff-editor .gutter .gutterItem .buttons .monaco-toolbar .monaco-action-bar .actions-container .action-item:hover{background:var(--vscode-toolbar-hoverBackground)}.monaco-diff-editor .gutter .gutterItem .buttons .monaco-toolbar .monaco-action-bar .actions-container .action-item .action-label{padding:1px 2px}.monaco-diff-editor .diff-hidden-lines-compact{height:11px;display:flex}.monaco-diff-editor .diff-hidden-lines-compact .line-left,.monaco-diff-editor .diff-hidden-lines-compact .line-right{border-top:1px solid;border-color:var(--vscode-editorCodeLens-foreground);opacity:.5;width:100%;height:1px;margin:auto}.monaco-diff-editor .diff-hidden-lines-compact .line-left{width:20px}.monaco-diff-editor .diff-hidden-lines-compact .text{color:var(--vscode-editorCodeLens-foreground);text-wrap:nowrap;margin:0 4px;font-size:11px;line-height:11px}.monaco-editor .rendered-markdown kbd{background-color:var(--vscode-keybindingLabel-background);border-color:var(--vscode-keybindingLabel-border);border-bottom-color:var(--vscode-keybindingLabel-bottomBorder);box-shadow:inset 0 -1px 0 var(--vscode-widget-shadow);color:var(--vscode-keybindingLabel-foreground);vertical-align:middle;border-style:solid;border-width:1px;border-radius:3px;padding:1px 3px}.rendered-markdown li:has(input[type=checkbox]){list-style-type:none}.monaco-component.multiDiffEditor{background:var(--vscode-multiDiffEditor-background);width:100%;height:100%;position:relative;overflow-y:hidden}.monaco-component.multiDiffEditor>div{width:100%;height:100%;position:absolute;top:0;left:0}.monaco-component.multiDiffEditor>div.placeholder{visibility:hidden;place-content:center;place-items:center;display:grid}.monaco-component.multiDiffEditor>div.placeholder.visible{visibility:visible}.monaco-component.multiDiffEditor .active{--vscode-multiDiffEditor-border:var(--vscode-focusBorder)}.monaco-component.multiDiffEditor .multiDiffEntry{flex-direction:column;flex:1;display:flex;overflow:hidden}.monaco-component.multiDiffEditor .multiDiffEntry .collapse-button{cursor:pointer;margin:0 5px}.monaco-component.multiDiffEditor .multiDiffEntry .collapse-button a{display:block}.monaco-component.multiDiffEditor .multiDiffEntry .header{background:var(--vscode-editor-background);z-index:1000}.monaco-component.multiDiffEditor .multiDiffEntry .header:not(.collapsed) .header-content{border-bottom:1px solid var(--vscode-sideBarSectionHeader-border)}.monaco-component.multiDiffEditor .multiDiffEntry .header .header-content{background:var(--vscode-multiDiffEditor-headerBackground);border-top:1px solid var(--vscode-multiDiffEditor-border);color:var(--vscode-foreground);align-items:center;margin:8px 0 0;padding:4px 5px;display:flex}.monaco-component.multiDiffEditor .multiDiffEntry .header .header-content.shadow{box-shadow:var(--vscode-scrollbar-shadow)0 6px 6px -6px}.monaco-component.multiDiffEditor .multiDiffEntry .header .header-content .file-path{flex:1;min-width:0;display:flex}.monaco-component.multiDiffEditor .multiDiffEntry .header .header-content .file-path .title{font-size:14px;line-height:22px}.monaco-component.multiDiffEditor .multiDiffEntry .header .header-content .file-path .title.original{text-overflow:ellipsis;flex:1;min-width:0}.monaco-component.multiDiffEditor .multiDiffEntry .header .header-content .file-path .status{opacity:.75;margin:0 10px;font-weight:600;line-height:22px}.monaco-component.multiDiffEditor .multiDiffEntry .header .header-content .actions{padding:0 8px}.monaco-component.multiDiffEditor .multiDiffEntry .editorParent{border-bottom:1px solid var(--vscode-multiDiffEditor-border);flex-direction:column;flex:1;display:flex;overflow:hidden}.monaco-component.multiDiffEditor .multiDiffEntry .editorContainer{flex:1}.monaco-editor .selection-anchor{background-color:#007acc;width:2px!important}.monaco-editor .bracket-match{background-color:var(--vscode-editorBracketMatch-background);border:1px solid var(--vscode-editorBracketMatch-border);box-sizing:border-box}.monaco-editor .lightBulbWidget{justify-content:center;align-items:center;display:flex}.monaco-editor .lightBulbWidget:hover{cursor:pointer}.monaco-editor .lightBulbWidget.codicon-light-bulb,.monaco-editor .lightBulbWidget.codicon-lightbulb-sparkle{color:var(--vscode-editorLightBulb-foreground)}.monaco-editor .lightBulbWidget.codicon-lightbulb-autofix,.monaco-editor .lightBulbWidget.codicon-lightbulb-sparkle-autofix{color:var(--vscode-editorLightBulbAutoFix-foreground,var(--vscode-editorLightBulb-foreground))}.monaco-editor .lightBulbWidget.codicon-sparkle-filled{color:var(--vscode-editorLightBulbAi-foreground,var(--vscode-icon-foreground))}.monaco-editor .lightBulbWidget:before{z-index:2;position:relative}.monaco-editor .lightBulbWidget:after{content:\"\";opacity:.3;z-index:1;width:100%;height:100%;display:block;position:absolute;top:0;left:0}.monaco-editor .glyph-margin-widgets .cgmr[class*=codicon-gutter-lightbulb]{cursor:pointer;display:block}.monaco-editor .glyph-margin-widgets .cgmr.codicon-gutter-lightbulb,.monaco-editor .glyph-margin-widgets .cgmr.codicon-gutter-lightbulb-sparkle{color:var(--vscode-editorLightBulb-foreground)}.monaco-editor .glyph-margin-widgets .cgmr.codicon-gutter-lightbulb-aifix-auto-fix,.monaco-editor .glyph-margin-widgets .cgmr.codicon-gutter-lightbulb-auto-fix{color:var(--vscode-editorLightBulbAutoFix-foreground,var(--vscode-editorLightBulb-foreground))}.monaco-editor .glyph-margin-widgets .cgmr.codicon-gutter-lightbulb-sparkle-filled{color:var(--vscode-editorLightBulbAi-foreground,var(--vscode-icon-foreground))}.monaco-editor .codelens-decoration{color:var(--vscode-editorCodeLens-foreground);font-family:var(--vscode-editorCodeLens-fontFamily),var(--vscode-editorCodeLens-fontFamilyDefault);font-feature-settings:var(--vscode-editorCodeLens-fontFeatureSettings);font-size:var(--vscode-editorCodeLens-fontSize);line-height:var(--vscode-editorCodeLens-lineHeight);padding-right:calc(var(--vscode-editorCodeLens-fontSize)*.5);text-overflow:ellipsis;white-space:nowrap;display:inline-block;overflow:hidden}.monaco-editor .codelens-decoration>a,.monaco-editor .codelens-decoration>span{-webkit-user-select:none;user-select:none;vertical-align:sub;white-space:nowrap}.monaco-editor .codelens-decoration>a{text-decoration:none}.monaco-editor .codelens-decoration>a:hover{cursor:pointer}.monaco-editor .codelens-decoration>a:hover,.monaco-editor .codelens-decoration>a:hover .codicon{color:var(--vscode-editorLink-activeForeground)!important}.monaco-editor .codelens-decoration .codicon{color:var(--vscode-editorCodeLens-foreground);font-size:var(--vscode-editorCodeLens-fontSize);line-height:var(--vscode-editorCodeLens-lineHeight);vertical-align:middle;color:currentColor!important}.monaco-editor .codelens-decoration>a:hover .codicon:before{cursor:pointer}@keyframes fadein{0%{opacity:0;visibility:visible}to{opacity:1}}.monaco-editor .codelens-decoration.fadein{animation:.1s linear fadein}.colorpicker-widget{-webkit-user-select:none;user-select:none;height:190px}.colorpicker-color-decoration,.hc-light .colorpicker-color-decoration{box-sizing:border-box;cursor:pointer;border:.1em solid #000;width:.8em;height:.8em;margin:.1em .2em 0;line-height:.8em;display:inline-block}.hc-black .colorpicker-color-decoration,.vs-dark .colorpicker-color-decoration{border:.1em solid #eee}.colorpicker-header{height:24px;image-rendering:pixelated;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAYAAACp8Z5+AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAZdEVYdFNvZnR3YXJlAHBhaW50Lm5ldCA0LjAuMTZEaa/1AAAAHUlEQVQYV2PYvXu3JAi7uLiAMaYAjAGTQBPYLQkAa/0Zef3qRswAAAAASUVORK5CYII=) 0 0/9px 9px;display:flex;position:relative}.colorpicker-header .picked-color{color:#fff;cursor:pointer;white-space:nowrap;flex:1;justify-content:center;align-items:center;width:240px;line-height:24px;display:flex;overflow:hidden}.colorpicker-header .picked-color .picked-color-presentation{white-space:nowrap;margin-left:5px;margin-right:5px}.colorpicker-header .picked-color .codicon{color:inherit;font-size:14px}.colorpicker-header .picked-color.light{color:#000}.colorpicker-header .original-color{cursor:pointer;width:74px;z-index:inherit}.standalone-colorpicker{background-color:var(--vscode-editorHoverWidget-background);border:1px solid var(--vscode-editorHoverWidget-border);color:var(--vscode-editorHoverWidget-foreground)}.colorpicker-header.standalone-colorpicker{border-bottom:none}.colorpicker-header .close-button{background-color:var(--vscode-editorHoverWidget-background);border-left:1px solid var(--vscode-editorHoverWidget-border);cursor:pointer}.colorpicker-header .close-button-inner-div{text-align:center;width:100%;height:100%}.colorpicker-header .close-button-inner-div:hover{background-color:var(--vscode-toolbar-hoverBackground)}.colorpicker-header .close-icon{padding:3px}.colorpicker-body{padding:8px;display:flex;position:relative}.colorpicker-body .saturation-wrap{flex:1;min-width:220px;height:150px;position:relative;overflow:hidden}.colorpicker-body .saturation-box{height:150px;position:absolute}.colorpicker-body .saturation-selection{border:1px solid #fff;border-radius:100%;width:9px;height:9px;margin:-5px 0 0 -5px;position:absolute;box-shadow:0 0 2px #000c}.colorpicker-body .strip{width:25px;height:150px}.colorpicker-body .standalone-strip{width:25px;height:122px}.colorpicker-body .hue-strip{cursor:grab;background:linear-gradient(red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red);margin-left:8px;position:relative}.colorpicker-body .opacity-strip{cursor:grab;image-rendering:pixelated;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAYAAACp8Z5+AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAZdEVYdFNvZnR3YXJlAHBhaW50Lm5ldCA0LjAuMTZEaa/1AAAAHUlEQVQYV2PYvXu3JAi7uLiAMaYAjAGTQBPYLQkAa/0Zef3qRswAAAAASUVORK5CYII=) 0 0/9px 9px;margin-left:8px;position:relative}.colorpicker-body .strip.grabbing{cursor:grabbing}.colorpicker-body .slider{box-sizing:border-box;border:1px solid #ffffffb5;width:calc(100% + 4px);height:4px;position:absolute;top:0;left:-2px;box-shadow:0 0 1px #000000d9}.colorpicker-body .strip .overlay{pointer-events:none;height:150px}.colorpicker-body .standalone-strip .standalone-overlay{pointer-events:none;height:122px}.standalone-colorpicker-body{border:1px solid #0000;border-bottom:1px solid var(--vscode-editorHoverWidget-border);display:block;overflow:hidden}.colorpicker-body .insert-button{background:var(--vscode-button-background);color:var(--vscode-button-foreground);cursor:pointer;border:none;border-radius:2px;width:58px;height:20px;padding:0;position:absolute;bottom:8px;right:8px}.colorpicker-body .insert-button:hover{background:var(--vscode-button-hoverBackground)}.monaco-editor.hc-light .dnd-target,.monaco-editor.vs .dnd-target{color:#fff;border-right:2px dotted #000}.monaco-editor.vs-dark .dnd-target{color:#51504f;border-right:2px dotted #aeafad}.monaco-editor.hc-black .dnd-target{color:#000;border-right:2px dotted #fff}.monaco-editor.hc-black.mac.mouse-default .view-lines,.monaco-editor.hc-light.mac.mouse-default .view-lines,.monaco-editor.mouse-default .view-lines,.monaco-editor.vs-dark.mac.mouse-default .view-lines{cursor:default}.monaco-editor.hc-black.mac.mouse-copy .view-lines,.monaco-editor.hc-light.mac.mouse-copy .view-lines,.monaco-editor.mouse-copy .view-lines,.monaco-editor.vs-dark.mac.mouse-copy .view-lines{cursor:copy}.post-edit-widget{background-color:var(--vscode-editorWidget-background);border:1px solid var(--vscode-widget-border,transparent);box-shadow:0 0 8px 2px var(--vscode-widget-shadow);border-radius:4px;overflow:hidden}.post-edit-widget .monaco-button{border:none;border-radius:0;padding:2px}.post-edit-widget .monaco-button:hover{background-color:var(--vscode-button-secondaryHoverBackground)!important}.post-edit-widget .monaco-button .codicon{margin:0}.monaco-editor .findOptionsWidget{border:2px solid var(--vscode-contrastBorder)}.monaco-editor .find-widget,.monaco-editor .findOptionsWidget{background-color:var(--vscode-editorWidget-background);box-shadow:0 0 8px 2px var(--vscode-widget-shadow);color:var(--vscode-editorWidget-foreground)}.monaco-editor .find-widget{border-bottom:1px solid var(--vscode-widget-border);border-left:1px solid var(--vscode-widget-border);border-right:1px solid var(--vscode-widget-border);box-sizing:border-box;z-index:35;border-bottom-right-radius:4px;border-bottom-left-radius:4px;height:33px;padding:0 4px;line-height:19px;transition:transform .2s linear;position:absolute;overflow:hidden;transform:translateY(calc(-100% - 10px))}.monaco-workbench.reduce-motion .monaco-editor .find-widget{transition:transform linear}.monaco-editor .find-widget textarea{margin:0}.monaco-editor .find-widget.hiddenEditor{display:none}.monaco-editor .find-widget.replaceToggled>.replace-part{display:flex}.monaco-editor .find-widget.visible{transform:translateY(0)}.monaco-editor .find-widget .monaco-inputbox.synthetic-focus{outline:1px solid -webkit-focus-ring-color;outline-color:var(--vscode-focusBorder);outline-offset:-1px}.monaco-editor .find-widget .monaco-inputbox .input{background-color:#0000;min-height:0}.monaco-editor .find-widget .monaco-findInput .input{font-size:13px}.monaco-editor .find-widget>.find-part,.monaco-editor .find-widget>.replace-part{margin:3px 25px 0 17px;font-size:12px;display:flex}.monaco-editor .find-widget>.find-part .monaco-inputbox,.monaco-editor .find-widget>.replace-part .monaco-inputbox{min-height:25px}.monaco-editor .find-widget>.replace-part .monaco-inputbox>.ibwrapper>.mirror{padding-right:22px}.monaco-editor .find-widget>.find-part .monaco-inputbox>.ibwrapper>.input,.monaco-editor .find-widget>.find-part .monaco-inputbox>.ibwrapper>.mirror,.monaco-editor .find-widget>.replace-part .monaco-inputbox>.ibwrapper>.input,.monaco-editor .find-widget>.replace-part .monaco-inputbox>.ibwrapper>.mirror{padding-top:2px;padding-bottom:2px}.monaco-editor .find-widget>.find-part .find-actions,.monaco-editor .find-widget>.replace-part .replace-actions{align-items:center;height:25px;display:flex}.monaco-editor .find-widget .monaco-findInput{vertical-align:middle;flex:1;display:flex}.monaco-editor .find-widget .monaco-findInput .monaco-scrollable-element{width:100%}.monaco-editor .find-widget .monaco-findInput .monaco-scrollable-element .scrollbar.vertical{opacity:0}.monaco-editor .find-widget .matchesCount{box-sizing:border-box;flex:initial;text-align:center;vertical-align:middle;height:25px;margin:0 0 0 3px;padding:2px 0 0 2px;line-height:23px;display:flex}.monaco-editor .find-widget .button{cursor:pointer;flex:initial;background-position:50%;background-repeat:no-repeat;border-radius:5px;justify-content:center;align-items:center;width:16px;height:16px;margin-left:3px;padding:3px;display:flex}.monaco-editor .find-widget .codicon-find-selection{border-radius:5px;width:22px;height:22px;padding:3px}.monaco-editor .find-widget .button.left{margin-left:0;margin-right:3px}.monaco-editor .find-widget .button.wide{width:auto;padding:1px 6px;top:-1px}.monaco-editor .find-widget .button.toggle{box-sizing:border-box;border-radius:0;width:18px;height:100%;position:absolute;top:0;left:3px}.monaco-editor .find-widget .button.toggle.disabled{display:none}.monaco-editor .find-widget .disabled{color:var(--vscode-disabledForeground);cursor:default}.monaco-editor .find-widget>.replace-part{display:none}.monaco-editor .find-widget>.replace-part>.monaco-findInput{vertical-align:middle;flex:none;display:flex;position:relative}.monaco-editor .find-widget>.replace-part>.monaco-findInput>.controls{position:absolute;top:3px;right:2px}.monaco-editor .find-widget.reduced-find-widget .matchesCount{display:none}.monaco-editor .find-widget.narrow-find-widget{max-width:257px!important}.monaco-editor .find-widget.collapsed-find-widget{max-width:170px!important}.monaco-editor .find-widget.collapsed-find-widget .button.next,.monaco-editor .find-widget.collapsed-find-widget .button.previous,.monaco-editor .find-widget.collapsed-find-widget .button.replace,.monaco-editor .find-widget.collapsed-find-widget .button.replace-all,.monaco-editor .find-widget.collapsed-find-widget>.find-part .monaco-findInput .controls{display:none}.monaco-editor .find-widget.no-results .matchesCount{color:var(--vscode-errorForeground)}.monaco-editor .findMatch{animation-duration:0;background-color:var(--vscode-editor-findMatchHighlightBackground);animation-name:inherit!important}.monaco-editor .currentFindMatch{background-color:var(--vscode-editor-findMatchBackground);border:2px solid var(--vscode-editor-findMatchBorder);box-sizing:border-box;padding:1px}.monaco-editor .findScope{background-color:var(--vscode-editor-findRangeHighlightBackground)}.monaco-editor .find-widget .monaco-sash{background-color:var(--vscode-editorWidget-resizeBorder,var(--vscode-editorWidget-border));left:0!important}.monaco-editor.hc-black .find-widget .button:before{position:relative;top:1px;left:2px}.monaco-editor .find-widget .button:not(.disabled):hover,.monaco-editor .find-widget .codicon-find-selection:hover{background-color:var(--vscode-toolbar-hoverBackground)!important}.monaco-editor.currentFindMatch{background-color:var(--vscode-editor-findMatchBackground)}.monaco-editor.findScope{background-color:var(--vscode-editor-findRangeHighlightBackground)}.monaco-editor.findMatch{background-color:var(--vscode-editorWidget-background)}.monaco-editor .find-widget>.button.codicon-widget-close{position:absolute;top:5px;right:4px}.monaco-editor .margin-view-overlays .codicon-folding-collapsed,.monaco-editor .margin-view-overlays .codicon-folding-expanded,.monaco-editor .margin-view-overlays .codicon-folding-manual-collapsed,.monaco-editor .margin-view-overlays .codicon-folding-manual-expanded{cursor:pointer;opacity:0;justify-content:center;align-items:center;margin-left:2px;font-size:140%;transition:opacity .5s;display:flex}.monaco-workbench.reduce-motion .monaco-editor .margin-view-overlays .codicon-folding-collapsed,.monaco-workbench.reduce-motion .monaco-editor .margin-view-overlays .codicon-folding-expanded,.monaco-workbench.reduce-motion .monaco-editor .margin-view-overlays .codicon-folding-manual-collapsed,.monaco-workbench.reduce-motion .monaco-editor .margin-view-overlays .codicon-folding-manual-expanded{transition:initial}.monaco-editor .margin-view-overlays .codicon.alwaysShowFoldIcons,.monaco-editor .margin-view-overlays .codicon.codicon-folding-collapsed,.monaco-editor .margin-view-overlays .codicon.codicon-folding-manual-collapsed,.monaco-editor .margin-view-overlays:hover .codicon{opacity:1}.monaco-editor .inline-folded:after{color:var(--vscode-editor-foldPlaceholderForeground);content:\"⋯\";cursor:pointer;margin:.1em .2em 0;line-height:1em;display:inline}.monaco-editor .folded-background{background-color:var(--vscode-editor-foldBackground)}.monaco-editor .cldr.codicon.codicon-folding-collapsed,.monaco-editor .cldr.codicon.codicon-folding-expanded,.monaco-editor .cldr.codicon.codicon-folding-manual-collapsed,.monaco-editor .cldr.codicon.codicon-folding-manual-expanded{color:var(--vscode-editorGutter-foldingControlForeground)!important}.monaco-editor .peekview-widget .head .peekview-title .severity-icon{vertical-align:text-top;margin-right:4px;display:inline-block}.monaco-editor .marker-widget{text-overflow:ellipsis;white-space:nowrap}.monaco-editor .marker-widget>.stale{opacity:.6;font-style:italic}.monaco-editor .marker-widget .title{padding-right:5px;display:inline-block}.monaco-editor .marker-widget .descriptioncontainer{-webkit-user-select:text;user-select:text;white-space:pre;padding:8px 12px 0 20px;position:absolute}.monaco-editor .marker-widget .descriptioncontainer .message{flex-direction:column;display:flex}.monaco-editor .marker-widget .descriptioncontainer .message .details{padding-left:6px}.monaco-editor .marker-widget .descriptioncontainer .message .source,.monaco-editor .marker-widget .descriptioncontainer .message span.code{opacity:.6}.monaco-editor .marker-widget .descriptioncontainer .message a.code-link{color:inherit;opacity:.6}.monaco-editor .marker-widget .descriptioncontainer .message a.code-link:before{content:\"(\"}.monaco-editor .marker-widget .descriptioncontainer .message a.code-link:after{content:\")\"}.monaco-editor .marker-widget .descriptioncontainer .message a.code-link>span{color:var(--vscode-textLink-activeForeground);text-underline-position:under;border-bottom:1px solid #0000;text-decoration:underline}.monaco-editor .marker-widget .descriptioncontainer .filename{color:var(--vscode-textLink-activeForeground);cursor:pointer}.monaco-editor .goto-definition-link{cursor:pointer;text-decoration:underline;color:var(--vscode-editorLink-activeForeground)!important}.monaco-editor .zone-widget .zone-widget-container.reference-zone-widget{border-top-width:1px;border-bottom-width:1px}.monaco-editor .reference-zone-widget .inline{vertical-align:top;display:inline-block}.monaco-editor .reference-zone-widget .messages{text-align:center;width:100%;height:100%;padding:3em 0}.monaco-editor .reference-zone-widget .ref-tree{background-color:var(--vscode-peekViewResult-background);color:var(--vscode-peekViewResult-lineForeground);line-height:23px}.monaco-editor .reference-zone-widget .ref-tree .reference{text-overflow:ellipsis;overflow:hidden}.monaco-editor .reference-zone-widget .ref-tree .reference-file{color:var(--vscode-peekViewResult-fileForeground);width:100%;height:100%;display:inline-flex}.monaco-editor .reference-zone-widget .ref-tree .monaco-list:focus .selected .reference-file{color:inherit!important}.monaco-editor .reference-zone-widget .ref-tree .monaco-list:focus .monaco-list-rows>.monaco-list-row.selected:not(.highlighted){background-color:var(--vscode-peekViewResult-selectionBackground);color:var(--vscode-peekViewResult-selectionForeground)!important}.monaco-editor .reference-zone-widget .ref-tree .reference-file .count{margin-left:auto;margin-right:12px}.monaco-editor .reference-zone-widget .ref-tree .referenceMatch .highlight{background-color:var(--vscode-peekViewResult-matchHighlightBackground)}.monaco-editor .reference-zone-widget .preview .reference-decoration{background-color:var(--vscode-peekViewEditor-matchHighlightBackground);border:2px solid var(--vscode-peekViewEditor-matchHighlightBorder);box-sizing:border-box}.monaco-editor .reference-zone-widget .preview .monaco-editor .inputarea.ime-input,.monaco-editor .reference-zone-widget .preview .monaco-editor .monaco-editor-background{background-color:var(--vscode-peekViewEditor-background)}.monaco-editor .reference-zone-widget .preview .monaco-editor .margin{background-color:var(--vscode-peekViewEditorGutter-background)}.monaco-editor.hc-black .reference-zone-widget .ref-tree .reference-file,.monaco-editor.hc-light .reference-zone-widget .ref-tree .reference-file{font-weight:700}.monaco-editor.hc-black .reference-zone-widget .ref-tree .referenceMatch .highlight,.monaco-editor.hc-light .reference-zone-widget .ref-tree .referenceMatch .highlight{border:1px dotted var(--vscode-contrastActiveBorder,transparent);box-sizing:border-box}.monaco-editor .hoverHighlight{background-color:var(--vscode-editor-hoverHighlightBackground)}.monaco-editor .monaco-hover-content{box-sizing:border-box;padding-bottom:2px;padding-right:2px}.monaco-editor .monaco-hover{background-color:var(--vscode-editorHoverWidget-background);border:1px solid var(--vscode-editorHoverWidget-border);color:var(--vscode-editorHoverWidget-foreground);border-radius:3px}.monaco-editor .monaco-hover a{color:var(--vscode-textLink-foreground)}.monaco-editor .monaco-hover a:hover{color:var(--vscode-textLink-activeForeground)}.monaco-editor .monaco-hover .hover-row{display:flex}.monaco-editor .monaco-hover .hover-row .hover-row-contents{flex-direction:column;min-width:0;display:flex}.monaco-editor .monaco-hover .hover-row .verbosity-actions{border-right:1px solid var(--vscode-editorHoverWidget-border);flex-direction:column;justify-content:end;padding-left:5px;padding-right:5px;display:flex}.monaco-editor .monaco-hover .hover-row .verbosity-actions .codicon{cursor:pointer;font-size:11px}.monaco-editor .monaco-hover .hover-row .verbosity-actions .codicon.enabled{color:var(--vscode-textLink-foreground)}.monaco-editor .monaco-hover .hover-row .verbosity-actions .codicon.disabled{opacity:.6}.monaco-editor .monaco-hover .hover-row .actions{background-color:var(--vscode-editorHoverWidget-statusBarBackground)}.monaco-editor .monaco-hover code{background-color:var(--vscode-textCodeBlock-background)}.monaco-editor.vs .valueSetReplacement{outline:solid 2px var(--vscode-editorBracketMatch-border)}.monaco-editor .inlineSuggestionsHints.withBorder{background-color:var(--vscode-editorHoverWidget-background);border:1px solid var(--vscode-editorHoverWidget-border);color:var(--vscode-editorHoverWidget-foreground);z-index:39}.monaco-editor .inlineSuggestionsHints a,.monaco-editor .inlineSuggestionsHints a:hover{color:var(--vscode-foreground)}.monaco-editor .inlineSuggestionsHints .keybinding{opacity:.6;margin-left:4px;display:flex}.monaco-editor .inlineSuggestionsHints .keybinding .monaco-keybinding-key{padding:2px 3px;font-size:8px}.monaco-editor .inlineSuggestionsHints .availableSuggestionCount a{justify-content:center;min-width:19px;display:flex}.monaco-editor .inlineSuggestionStatusBarItemLabel{margin-right:2px}.monaco-editor .suggest-preview-additional-widget{white-space:nowrap}.monaco-editor .suggest-preview-additional-widget .content-spacer{color:#0000;white-space:pre}.monaco-editor .suggest-preview-additional-widget .button{cursor:pointer;text-underline-position:under;text-decoration:underline;display:inline-block}.monaco-editor .ghost-text-hidden{opacity:0;font-size:0}.monaco-editor .ghost-text-decoration,.monaco-editor .suggest-preview-text .ghost-text{font-style:italic}.monaco-editor .ghost-text-decoration,.monaco-editor .ghost-text-decoration-preview,.monaco-editor .suggest-preview-text .ghost-text{background-color:var(--vscode-editorGhostText-background);border:1px solid var(--vscode-editorGhostText-border);color:var(--vscode-editorGhostText-foreground)!important}.monaco-editor .inline-edit-remove{background-color:var(--vscode-editorGhostText-background);font-style:italic}.monaco-editor .inline-edit-hidden{opacity:0;font-size:0}.monaco-editor .inline-edit-decoration,.monaco-editor .suggest-preview-text .inline-edit{font-style:italic}.monaco-editor .inline-completion-text-to-replace{text-underline-position:under;text-decoration:underline}.monaco-editor .inline-edit-decoration,.monaco-editor .inline-edit-decoration-preview,.monaco-editor .suggest-preview-text .inline-edit{background-color:var(--vscode-editorGhostText-background);border:1px solid var(--vscode-editorGhostText-border);color:var(--vscode-editorGhostText-foreground)!important}.monaco-editor .inlineEditHints.withBorder{background-color:var(--vscode-editorHoverWidget-background);border:1px solid var(--vscode-editorHoverWidget-border);color:var(--vscode-editorHoverWidget-foreground);z-index:39}.monaco-editor .inlineEditHints a,.monaco-editor .inlineEditHints a:hover{color:var(--vscode-foreground)}.monaco-editor .inlineEditHints .keybinding{opacity:.6;margin-left:4px;display:flex}.monaco-editor .inlineEditHints .keybinding .monaco-keybinding-key{padding:2px 3px;font-size:8px}.monaco-editor .inlineEditStatusBarItemLabel{margin-right:2px}.monaco-editor .inlineEditSideBySide{background-color:var(--vscode-editorHoverWidget-background);border:1px solid var(--vscode-editorHoverWidget-border);color:var(--vscode-editorHoverWidget-foreground);white-space:pre;z-index:39}.monaco-editor div.inline-edits-widget{--widget-color:var(--vscode-notifications-background)}.monaco-editor div.inline-edits-widget .promptEditor .monaco-editor{--vscode-editor-placeholder-foreground:var(--vscode-editorGhostText-foreground)}.monaco-editor div.inline-edits-widget .promptEditor,.monaco-editor div.inline-edits-widget .toolbar{opacity:0;transition:opacity .2s ease-in-out}.monaco-editor div.inline-edits-widget.focused .promptEditor,.monaco-editor div.inline-edits-widget.focused .toolbar,.monaco-editor div.inline-edits-widget:hover .promptEditor,.monaco-editor div.inline-edits-widget:hover .toolbar{opacity:1}.monaco-editor div.inline-edits-widget .preview .monaco-editor{--vscode-editor-background:var(--widget-color)}.monaco-editor div.inline-edits-widget .preview .monaco-editor .mtk1{color:var(--vscode-editorGhostText-foreground)}.monaco-editor div.inline-edits-widget .preview .monaco-editor .current-line-margin,.monaco-editor div.inline-edits-widget .preview .monaco-editor .view-overlays .current-line-exact{border:none}.monaco-editor div.inline-edits-widget svg .gradient-start{stop-color:var(--vscode-editor-background)}.monaco-editor div.inline-edits-widget svg .gradient-stop{stop-color:var(--widget-color)}.inline-editor-progress-decoration{width:1em;height:1em;display:inline-block}.inline-progress-widget{justify-content:center;align-items:center;display:flex!important}.inline-progress-widget .icon{font-size:80%!important}.inline-progress-widget:hover .icon{animation:none;font-size:90%!important}.inline-progress-widget:hover .icon:before{content:var(--vscode-icon-x-content);font-family:var(--vscode-icon-x-font-family)}.monaco-editor .linked-editing-decoration{background-color:var(--vscode-editor-linkedEditingBackground);min-width:1px}.monaco-editor .detected-link,.monaco-editor .detected-link-active{text-underline-position:under;text-decoration:underline}.monaco-editor .detected-link-active{cursor:pointer;color:var(--vscode-editorLink-activeForeground)!important}.monaco-editor .monaco-editor-overlaymessage{z-index:10000;padding-bottom:8px}.monaco-editor .monaco-editor-overlaymessage.below{z-index:10000;padding-top:8px;padding-bottom:0}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.monaco-editor .monaco-editor-overlaymessage.fadeIn{animation:.15s ease-out fadeIn}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}.monaco-editor .monaco-editor-overlaymessage.fadeOut{animation:.1s ease-out fadeOut}.monaco-editor .monaco-editor-overlaymessage .message{background-color:var(--vscode-editorHoverWidget-background);border:1px solid var(--vscode-inputValidation-infoBorder);color:var(--vscode-editorHoverWidget-foreground);border-radius:3px;padding:2px 4px}.monaco-editor .monaco-editor-overlaymessage .message p{margin-block:0}.monaco-editor .monaco-editor-overlaymessage .message a{color:var(--vscode-textLink-foreground)}.monaco-editor .monaco-editor-overlaymessage .message a:hover{color:var(--vscode-textLink-activeForeground)}.monaco-editor.hc-black .monaco-editor-overlaymessage .message,.monaco-editor.hc-light .monaco-editor-overlaymessage .message{border-width:2px}.monaco-editor .monaco-editor-overlaymessage .anchor{z-index:1000;border:8px solid #0000;position:absolute;left:2px;width:0!important;height:0!important}.monaco-editor .monaco-editor-overlaymessage .anchor.top{border-bottom-color:var(--vscode-inputValidation-infoBorder)}.monaco-editor .monaco-editor-overlaymessage .anchor.below{border-top-color:var(--vscode-inputValidation-infoBorder)}.monaco-editor .monaco-editor-overlaymessage.below .anchor.below,.monaco-editor .monaco-editor-overlaymessage:not(.below) .anchor.top{display:none}.monaco-editor .monaco-editor-overlaymessage.below .anchor.top{display:inherit;top:-8px}.monaco-editor .parameter-hints-widget{background-color:var(--vscode-editorHoverWidget-background);border:1px solid var(--vscode-editorHoverWidget-border);color:var(--vscode-editorHoverWidget-foreground);cursor:default;z-index:39;flex-direction:column;line-height:1.5em;display:flex}.hc-black .monaco-editor .parameter-hints-widget,.hc-light .monaco-editor .parameter-hints-widget{border-width:2px}.monaco-editor .parameter-hints-widget>.phwrapper{flex-direction:row;max-width:440px;display:flex}.monaco-editor .parameter-hints-widget.multiple{min-height:3.3em;padding:0}.monaco-editor .parameter-hints-widget.multiple .body:before{border-left:1px solid var(--vscode-editorHoverWidget-border);content:\"\";opacity:.5;height:100%;display:block;position:absolute}.monaco-editor .parameter-hints-widget p,.monaco-editor .parameter-hints-widget ul{margin:8px 0}.monaco-editor .parameter-hints-widget .body,.monaco-editor .parameter-hints-widget .monaco-scrollable-element{flex-direction:column;flex:1;min-height:100%;display:flex}.monaco-editor .parameter-hints-widget .signature{padding:4px 5px;position:relative}.monaco-editor .parameter-hints-widget .signature.has-docs:after{border-bottom:1px solid var(--vscode-editorHoverWidget-border);content:\"\";opacity:.5;width:100%;padding-top:4px;display:block;position:absolute;left:0}.monaco-editor .parameter-hints-widget .code{font-family:var(--vscode-parameterHintsWidget-editorFontFamily),var(--vscode-parameterHintsWidget-editorFontFamilyDefault)}.monaco-editor .parameter-hints-widget .docs{white-space:pre-wrap;padding:0 10px 0 5px}.monaco-editor .parameter-hints-widget .docs.empty{display:none}.monaco-editor .parameter-hints-widget .docs a{color:var(--vscode-textLink-foreground)}.monaco-editor .parameter-hints-widget .docs a:hover{color:var(--vscode-textLink-activeForeground);cursor:pointer}.monaco-editor .parameter-hints-widget .docs .markdown-docs{white-space:normal}.monaco-editor .parameter-hints-widget .docs code{background-color:var(--vscode-textCodeBlock-background);font-family:var(--monaco-monospace-font);border-radius:3px;padding:0 .4em}.monaco-editor .parameter-hints-widget .docs .code,.monaco-editor .parameter-hints-widget .docs .monaco-tokenized-source{white-space:pre-wrap}.monaco-editor .parameter-hints-widget .controls{flex-direction:column;justify-content:flex-end;align-items:center;min-width:22px;display:none}.monaco-editor .parameter-hints-widget.multiple .controls{padding:0 2px;display:flex}.monaco-editor .parameter-hints-widget.multiple .button{cursor:pointer;background-repeat:no-repeat;width:16px;height:16px}.monaco-editor .parameter-hints-widget .button.previous{bottom:24px}.monaco-editor .parameter-hints-widget .overloads{font-family:var(--monaco-monospace-font);text-align:center;height:12px;line-height:12px}.monaco-editor .parameter-hints-widget .signature .parameter.active{color:var(--vscode-editorHoverWidget-highlightForeground);font-weight:700}.monaco-editor .parameter-hints-widget .documentation-parameter>.parameter{margin-right:.5em;font-weight:700}.monaco-editor .peekview-widget .head{box-sizing:border-box;flex-wrap:nowrap;justify-content:space-between;display:flex}.monaco-editor .peekview-widget .head .peekview-title{text-overflow:ellipsis;align-items:baseline;min-width:0;margin-left:20px;font-size:13px;display:flex;overflow:hidden}.monaco-editor .peekview-widget .head .peekview-title.clickable{cursor:pointer}.monaco-editor .peekview-widget .head .peekview-title .dirname:not(:empty){margin-left:.5em;font-size:.9em}.monaco-editor .peekview-widget .head .peekview-title .dirname,.monaco-editor .peekview-widget .head .peekview-title .filename,.monaco-editor .peekview-widget .head .peekview-title .meta{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.monaco-editor .peekview-widget .head .peekview-title .meta:not(:empty):before{content:\"-\";padding:0 .3em}.monaco-editor .peekview-widget .head .peekview-actions{text-align:right;flex:1;padding-right:2px}.monaco-editor .peekview-widget .head .peekview-actions>.monaco-action-bar{display:inline-block}.monaco-editor .peekview-widget .head .peekview-actions>.monaco-action-bar,.monaco-editor .peekview-widget .head .peekview-actions>.monaco-action-bar>.actions-container{height:100%}.monaco-editor .peekview-widget>.body{border-top:1px solid;position:relative}.monaco-editor .peekview-widget .head .peekview-title .codicon{align-self:center;margin-right:4px}.monaco-editor .peekview-widget .monaco-list .monaco-list-row.focused .codicon{color:inherit!important}.monaco-editor{--vscode-editor-placeholder-foreground:var(--vscode-editorGhostText-foreground)}.monaco-editor .editorPlaceholder{text-overflow:ellipsis;text-wrap:nowrap;color:var(--vscode-editor-placeholder-foreground);pointer-events:none;position:absolute;top:0;overflow:hidden}.monaco-editor .rename-box{color:inherit;z-index:100;border-radius:4px}.monaco-editor .rename-box.preview{padding:4px 4px 0}.monaco-editor .rename-box .rename-input-with-button{border-radius:2px;width:calc(100% - 8px);padding:3px}.monaco-editor .rename-box .rename-input{width:calc(100% - 8px);padding:0}.monaco-editor .rename-box .rename-input:focus{outline:none}.monaco-editor .rename-box .rename-suggestions-button{cursor:pointer;background-color:#0000;border:none;border-radius:5px;align-items:center;padding:3px;display:flex}.monaco-editor .rename-box .rename-suggestions-button:hover{background-color:var(--vscode-toolbar-hoverBackground)}.monaco-editor .rename-box .rename-candidate-list-container .monaco-list-row{border-radius:2px}.monaco-editor .rename-box .rename-label{opacity:.8;display:none}.monaco-editor .rename-box.preview .rename-label{display:inherit}.monaco-editor .snippet-placeholder{background-color:var(--vscode-editor-snippetTabstopHighlightBackground,transparent);outline-color:var(--vscode-editor-snippetTabstopHighlightBorder,transparent);outline-width:1px;outline-style:solid;min-width:2px}.monaco-editor .finish-snippet-placeholder{background-color:var(--vscode-editor-snippetFinalTabstopHighlightBackground,transparent);outline-color:var(--vscode-editor-snippetFinalTabstopHighlightBorder,transparent);outline-width:1px;outline-style:solid}.monaco-editor .sticky-widget{overflow:hidden}.monaco-editor .sticky-widget-line-numbers{background-color:inherit;float:left}.monaco-editor .sticky-widget-lines-scrollable{background-color:inherit;width:var(--vscode-editorStickyScroll-scrollableWidth);display:inline-block;position:absolute;overflow:hidden}.monaco-editor .sticky-widget-lines{background-color:inherit;position:absolute}.monaco-editor .sticky-line-content,.monaco-editor .sticky-line-number{background-color:inherit;color:var(--vscode-editorLineNumber-foreground);white-space:nowrap;display:inline-block;position:absolute}.monaco-editor .sticky-line-number .codicon-folding-collapsed,.monaco-editor .sticky-line-number .codicon-folding-expanded{float:right;transition:var(--vscode-editorStickyScroll-foldingOpacityTransition)}.monaco-editor .sticky-line-content{background-color:inherit;white-space:nowrap;width:var(--vscode-editorStickyScroll-scrollableWidth)}.monaco-editor .sticky-line-number-inner{text-align:right;display:inline-block}.monaco-editor .sticky-widget{border-bottom:1px solid var(--vscode-editorStickyScroll-border)}.monaco-editor .sticky-line-content:hover{background-color:var(--vscode-editorStickyScrollHover-background);cursor:pointer}.monaco-editor .sticky-widget{background-color:var(--vscode-editorStickyScroll-background);box-shadow:var(--vscode-editorStickyScroll-shadow)0 4px 2px -2px;z-index:4;width:100%;right:auto!important}.monaco-editor .sticky-widget.peek{background-color:var(--vscode-peekViewEditorStickyScroll-background)}.monaco-editor .suggest-widget{z-index:40;border-radius:3px;flex-direction:column;width:430px;display:flex}.monaco-editor .suggest-widget.message{flex-direction:row;align-items:center}.monaco-editor .suggest-details,.monaco-editor .suggest-widget{background-color:var(--vscode-editorSuggestWidget-background);border-color:var(--vscode-editorSuggestWidget-border);border-style:solid;border-width:1px;flex:0 auto;width:100%}.monaco-editor.hc-black .suggest-details,.monaco-editor.hc-black .suggest-widget,.monaco-editor.hc-light .suggest-details,.monaco-editor.hc-light .suggest-widget{border-width:2px}.monaco-editor .suggest-widget .suggest-status-bar{border-top:1px solid var(--vscode-editorSuggestWidget-border);box-sizing:border-box;flex-flow:row;justify-content:space-between;width:100%;padding:0 4px;font-size:80%;display:none;overflow:hidden}.monaco-editor .suggest-widget.with-status-bar .suggest-status-bar{display:flex}.monaco-editor .suggest-widget .suggest-status-bar .left{padding-right:8px}.monaco-editor .suggest-widget.with-status-bar .suggest-status-bar .action-label{color:var(--vscode-editorSuggestWidgetStatus-foreground)}.monaco-editor .suggest-widget.with-status-bar .suggest-status-bar .action-item:not(:last-of-type) .action-label{margin-right:0}.monaco-editor .suggest-widget.with-status-bar .suggest-status-bar .action-item:not(:last-of-type) .action-label:after{content:\", \";margin-right:.3em}.monaco-editor .suggest-widget.with-status-bar .monaco-list .monaco-list-row.focused.string-label>.contents>.main>.right>.readMore,.monaco-editor .suggest-widget.with-status-bar .monaco-list .monaco-list-row>.contents>.main>.right>.readMore{display:none}.monaco-editor .suggest-widget.with-status-bar:not(.docs-side) .monaco-list .monaco-list-row:hover>.contents>.main>.right.can-expand-details>.details-label{width:100%}.monaco-editor .suggest-widget>.message{padding-left:22px}.monaco-editor .suggest-widget>.tree{width:100%;height:100%}.monaco-editor .suggest-widget .monaco-list{-webkit-user-select:none;user-select:none}.monaco-editor .suggest-widget .monaco-list .monaco-list-row{-mox-box-sizing:border-box;box-sizing:border-box;cursor:pointer;touch-action:none;white-space:nowrap;background-position:2px 2px;background-repeat:no-repeat;padding-right:10px;display:flex}.monaco-editor .suggest-widget .monaco-list .monaco-list-row.focused{color:var(--vscode-editorSuggestWidget-selectedForeground)}.monaco-editor .suggest-widget .monaco-list .monaco-list-row.focused .codicon{color:var(--vscode-editorSuggestWidget-selectedIconForeground)}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents{flex:1;height:100%;padding-left:2px;overflow:hidden}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main{text-overflow:ellipsis;white-space:pre;justify-content:space-between;display:flex;overflow:hidden}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.left,.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right{display:flex}.monaco-editor .suggest-widget .monaco-list .monaco-list-row:not(.focused)>.contents>.main .monaco-icon-label{color:var(--vscode-editorSuggestWidget-foreground)}.monaco-editor .suggest-widget:not(.frozen) .monaco-highlighted-label .highlight{font-weight:700}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main .monaco-highlighted-label .highlight{color:var(--vscode-editorSuggestWidget-highlightForeground)}.monaco-editor .suggest-widget .monaco-list .monaco-list-row.focused>.contents>.main .monaco-highlighted-label .highlight{color:var(--vscode-editorSuggestWidget-focusHighlightForeground)}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.header>.codicon-close,.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right>.readMore:before{color:inherit;cursor:pointer;opacity:1;font-size:14px}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.header>.codicon-close{position:absolute;top:6px;right:2px}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.header>.codicon-close:hover,.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right>.readMore:hover{opacity:1}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right>.details-label{opacity:.7}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.left>.signature-label{opacity:.6;text-overflow:ellipsis;overflow:hidden}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.left>.qualifier-label{opacity:.4;text-overflow:ellipsis;align-self:center;margin-left:12px;font-size:85%;line-height:normal;overflow:hidden}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right>.details-label{text-overflow:ellipsis;white-space:nowrap;margin-left:1.1em;font-size:85%;overflow:hidden}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right>.details-label>.monaco-tokenized-source{display:inline}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right>.details-label{display:none}.monaco-editor .suggest-widget .monaco-list .monaco-list-row:not(.string-label)>.contents>.main>.right>.details-label,.monaco-editor .suggest-widget.docs-side .monaco-list .monaco-list-row.focused:not(.string-label)>.contents>.main>.right>.details-label,.monaco-editor .suggest-widget:not(.shows-details) .monaco-list .monaco-list-row.focused>.contents>.main>.right>.details-label{display:inline}.monaco-editor .suggest-widget:not(.docs-side) .monaco-list .monaco-list-row.focused:hover>.contents>.main>.right.can-expand-details>.details-label{width:calc(100% - 26px)}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.left{flex-grow:1;flex-shrink:1;overflow:hidden}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.left>.monaco-icon-label{flex-shrink:0}.monaco-editor .suggest-widget .monaco-list .monaco-list-row:not(.string-label)>.contents>.main>.left>.monaco-icon-label{max-width:100%}.monaco-editor .suggest-widget .monaco-list .monaco-list-row.string-label>.contents>.main>.left>.monaco-icon-label{flex-shrink:1}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right{flex-shrink:4;max-width:70%;overflow:hidden}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right>.readMore{visibility:hidden;width:18px;height:18px;display:inline-block;position:absolute;right:10px}.monaco-editor .suggest-widget.docs-side .monaco-list .monaco-list-row>.contents>.main>.right>.readMore{display:none!important}.monaco-editor .suggest-widget .monaco-list .monaco-list-row.string-label>.contents>.main>.right>.readMore{display:none}.monaco-editor .suggest-widget .monaco-list .monaco-list-row.focused.string-label>.contents>.main>.right>.readMore{display:inline-block}.monaco-editor .suggest-widget .monaco-list .monaco-list-row.focused:hover>.contents>.main>.right>.readMore{visibility:visible}.monaco-editor .suggest-widget .monaco-list .monaco-list-row .monaco-icon-label.deprecated{opacity:.66;-webkit-text-decoration:unset;text-decoration:unset}.monaco-editor .suggest-widget .monaco-list .monaco-list-row .monaco-icon-label.deprecated>.monaco-icon-label-container>.monaco-icon-name-container{text-decoration:line-through}.monaco-editor .suggest-widget .monaco-list .monaco-list-row .monaco-icon-label:before{height:100%}.monaco-editor .suggest-widget .monaco-list .monaco-list-row .icon{background-position:50%;background-repeat:no-repeat;background-size:80%;width:16px;height:16px;margin-left:2px;display:block}.monaco-editor .suggest-widget .monaco-list .monaco-list-row .icon.hide{display:none}.monaco-editor .suggest-widget .monaco-list .monaco-list-row .suggest-icon{align-items:center;margin-right:4px;display:flex}.monaco-editor .suggest-widget.no-icons .monaco-list .monaco-list-row .icon,.monaco-editor .suggest-widget.no-icons .monaco-list .monaco-list-row .suggest-icon:before{display:none}.monaco-editor .suggest-widget .monaco-list .monaco-list-row .icon.customcolor .colorspan{border:.1em solid #000;width:.7em;height:.7em;margin:0 0 0 .3em;display:inline-block}.monaco-editor .suggest-details-container{z-index:41}.monaco-editor .suggest-details{color:var(--vscode-editorSuggestWidget-foreground);cursor:default;flex-direction:column;display:flex}.monaco-editor .suggest-details.focused{border-color:var(--vscode-focusBorder)}.monaco-editor .suggest-details a{color:var(--vscode-textLink-foreground)}.monaco-editor .suggest-details a:hover{color:var(--vscode-textLink-activeForeground)}.monaco-editor .suggest-details code{background-color:var(--vscode-textCodeBlock-background)}.monaco-editor .suggest-details.no-docs{display:none}.monaco-editor .suggest-details>.monaco-scrollable-element{flex:1}.monaco-editor .suggest-details>.monaco-scrollable-element>.body{box-sizing:border-box;width:100%;height:100%}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.header>.type{opacity:.7;text-overflow:ellipsis;white-space:pre;flex:2;margin:0 24px 0 0;padding:4px 0 12px 5px;overflow:hidden}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.header>.type.auto-wrap{white-space:normal;word-break:break-all}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs{white-space:pre-wrap;margin:0;padding:4px 5px}.monaco-editor .suggest-details.no-type>.monaco-scrollable-element>.body>.docs{margin-right:24px;overflow:hidden}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs.markdown-docs{white-space:normal;min-height:calc(1rem + 8px);padding:0}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs.markdown-docs>div,.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs.markdown-docs>span:not(:empty){padding:4px 5px}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs.markdown-docs>div>p:first-child{margin-top:0}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs.markdown-docs>div>p:last-child{margin-bottom:0}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs.markdown-docs .monaco-tokenized-source{white-space:pre}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs .code{white-space:pre-wrap;word-wrap:break-word}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs.markdown-docs .codicon{vertical-align:sub}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>p:empty{display:none}.monaco-editor .suggest-details code{border-radius:3px;padding:0 .4em}.monaco-editor .suggest-details ol,.monaco-editor .suggest-details ul{padding-left:20px}.monaco-editor .suggest-details p code{font-family:var(--monaco-monospace-font)}.monaco-editor .codicon.codicon-symbol-array,.monaco-workbench .codicon.codicon-symbol-array{color:var(--vscode-symbolIcon-arrayForeground)}.monaco-editor .codicon.codicon-symbol-boolean,.monaco-workbench .codicon.codicon-symbol-boolean{color:var(--vscode-symbolIcon-booleanForeground)}.monaco-editor .codicon.codicon-symbol-class,.monaco-workbench .codicon.codicon-symbol-class{color:var(--vscode-symbolIcon-classForeground)}.monaco-editor .codicon.codicon-symbol-method,.monaco-workbench .codicon.codicon-symbol-method{color:var(--vscode-symbolIcon-methodForeground)}.monaco-editor .codicon.codicon-symbol-color,.monaco-workbench .codicon.codicon-symbol-color{color:var(--vscode-symbolIcon-colorForeground)}.monaco-editor .codicon.codicon-symbol-constant,.monaco-workbench .codicon.codicon-symbol-constant{color:var(--vscode-symbolIcon-constantForeground)}.monaco-editor .codicon.codicon-symbol-constructor,.monaco-workbench .codicon.codicon-symbol-constructor{color:var(--vscode-symbolIcon-constructorForeground)}.monaco-editor .codicon.codicon-symbol-enum,.monaco-editor .codicon.codicon-symbol-value,.monaco-workbench .codicon.codicon-symbol-enum,.monaco-workbench .codicon.codicon-symbol-value{color:var(--vscode-symbolIcon-enumeratorForeground)}.monaco-editor .codicon.codicon-symbol-enum-member,.monaco-workbench .codicon.codicon-symbol-enum-member{color:var(--vscode-symbolIcon-enumeratorMemberForeground)}.monaco-editor .codicon.codicon-symbol-event,.monaco-workbench .codicon.codicon-symbol-event{color:var(--vscode-symbolIcon-eventForeground)}.monaco-editor .codicon.codicon-symbol-field,.monaco-workbench .codicon.codicon-symbol-field{color:var(--vscode-symbolIcon-fieldForeground)}.monaco-editor .codicon.codicon-symbol-file,.monaco-workbench .codicon.codicon-symbol-file{color:var(--vscode-symbolIcon-fileForeground)}.monaco-editor .codicon.codicon-symbol-folder,.monaco-workbench .codicon.codicon-symbol-folder{color:var(--vscode-symbolIcon-folderForeground)}.monaco-editor .codicon.codicon-symbol-function,.monaco-workbench .codicon.codicon-symbol-function{color:var(--vscode-symbolIcon-functionForeground)}.monaco-editor .codicon.codicon-symbol-interface,.monaco-workbench .codicon.codicon-symbol-interface{color:var(--vscode-symbolIcon-interfaceForeground)}.monaco-editor .codicon.codicon-symbol-key,.monaco-workbench .codicon.codicon-symbol-key{color:var(--vscode-symbolIcon-keyForeground)}.monaco-editor .codicon.codicon-symbol-keyword,.monaco-workbench .codicon.codicon-symbol-keyword{color:var(--vscode-symbolIcon-keywordForeground)}.monaco-editor .codicon.codicon-symbol-module,.monaco-workbench .codicon.codicon-symbol-module{color:var(--vscode-symbolIcon-moduleForeground)}.monaco-editor .codicon.codicon-symbol-namespace,.monaco-workbench .codicon.codicon-symbol-namespace{color:var(--vscode-symbolIcon-namespaceForeground)}.monaco-editor .codicon.codicon-symbol-null,.monaco-workbench .codicon.codicon-symbol-null{color:var(--vscode-symbolIcon-nullForeground)}.monaco-editor .codicon.codicon-symbol-number,.monaco-workbench .codicon.codicon-symbol-number{color:var(--vscode-symbolIcon-numberForeground)}.monaco-editor .codicon.codicon-symbol-object,.monaco-workbench .codicon.codicon-symbol-object{color:var(--vscode-symbolIcon-objectForeground)}.monaco-editor .codicon.codicon-symbol-operator,.monaco-workbench .codicon.codicon-symbol-operator{color:var(--vscode-symbolIcon-operatorForeground)}.monaco-editor .codicon.codicon-symbol-package,.monaco-workbench .codicon.codicon-symbol-package{color:var(--vscode-symbolIcon-packageForeground)}.monaco-editor .codicon.codicon-symbol-property,.monaco-workbench .codicon.codicon-symbol-property{color:var(--vscode-symbolIcon-propertyForeground)}.monaco-editor .codicon.codicon-symbol-reference,.monaco-workbench .codicon.codicon-symbol-reference{color:var(--vscode-symbolIcon-referenceForeground)}.monaco-editor .codicon.codicon-symbol-snippet,.monaco-workbench .codicon.codicon-symbol-snippet{color:var(--vscode-symbolIcon-snippetForeground)}.monaco-editor .codicon.codicon-symbol-string,.monaco-workbench .codicon.codicon-symbol-string{color:var(--vscode-symbolIcon-stringForeground)}.monaco-editor .codicon.codicon-symbol-struct,.monaco-workbench .codicon.codicon-symbol-struct{color:var(--vscode-symbolIcon-structForeground)}.monaco-editor .codicon.codicon-symbol-text,.monaco-workbench .codicon.codicon-symbol-text{color:var(--vscode-symbolIcon-textForeground)}.monaco-editor .codicon.codicon-symbol-type-parameter,.monaco-workbench .codicon.codicon-symbol-type-parameter{color:var(--vscode-symbolIcon-typeParameterForeground)}.monaco-editor .codicon.codicon-symbol-unit,.monaco-workbench .codicon.codicon-symbol-unit{color:var(--vscode-symbolIcon-unitForeground)}.monaco-editor .codicon.codicon-symbol-variable,.monaco-workbench .codicon.codicon-symbol-variable{color:var(--vscode-symbolIcon-variableForeground)}.editor-banner{background:var(--vscode-banner-background);box-sizing:border-box;cursor:default;width:100%;height:26px;font-size:12px;display:flex;overflow:visible}.editor-banner .icon-container{flex-shrink:0;align-items:center;padding:0 6px 0 10px;display:flex}.editor-banner .icon-container.custom-icon{background-position:50%;background-repeat:no-repeat;background-size:16px;width:16px;margin:0 6px 0 10px;padding:0}.editor-banner .message-container{text-overflow:ellipsis;white-space:nowrap;align-items:center;line-height:26px;display:flex;overflow:hidden}.editor-banner .message-container p{margin-block:0}.editor-banner .message-actions-container{flex-grow:1;flex-shrink:0;margin:0 4px;line-height:26px}.editor-banner .message-actions-container a.monaco-button{width:inherit;margin:2px 8px;padding:0 12px}.editor-banner .message-actions-container a{margin-left:12px;padding:3px;text-decoration:underline}.editor-banner .action-container{padding:0 10px 0 6px}.editor-banner{background-color:var(--vscode-banner-background)}.editor-banner,.editor-banner .action-container .codicon,.editor-banner .message-actions-container .monaco-link{color:var(--vscode-banner-foreground)}.editor-banner .icon-container .codicon{color:var(--vscode-banner-iconForeground)}.monaco-editor .unicode-highlight{background-color:var(--vscode-editorUnicodeHighlight-background);border:1px solid var(--vscode-editorUnicodeHighlight-border);box-sizing:border-box}.monaco-editor .focused .selectionHighlight{background-color:var(--vscode-editor-selectionHighlightBackground);border:1px solid var(--vscode-editor-selectionHighlightBorder);box-sizing:border-box}.monaco-editor.hc-black .focused .selectionHighlight,.monaco-editor.hc-light .focused .selectionHighlight{border-style:dotted}.monaco-editor .wordHighlight{background-color:var(--vscode-editor-wordHighlightBackground);border:1px solid var(--vscode-editor-wordHighlightBorder);box-sizing:border-box}.monaco-editor.hc-black .wordHighlight,.monaco-editor.hc-light .wordHighlight{border-style:dotted}.monaco-editor .wordHighlightStrong{background-color:var(--vscode-editor-wordHighlightStrongBackground);border:1px solid var(--vscode-editor-wordHighlightStrongBorder);box-sizing:border-box}.monaco-editor.hc-black .wordHighlightStrong,.monaco-editor.hc-light .wordHighlightStrong{border-style:dotted}.monaco-editor .wordHighlightText{background-color:var(--vscode-editor-wordHighlightTextBackground);border:1px solid var(--vscode-editor-wordHighlightTextBorder);box-sizing:border-box}.monaco-editor.hc-black .wordHighlightText,.monaco-editor.hc-light .wordHighlightText{border-style:dotted}.monaco-editor .zone-widget{z-index:10;position:absolute}.monaco-editor .zone-widget .zone-widget-container{border-top-style:solid;border-top-width:0;border-bottom-style:solid;border-bottom-width:0;position:relative}.monaco-editor .iPadShowKeyboard{resize:none;background:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI1MyIgaGVpZ2h0PSIzNiIgZmlsbD0ibm9uZSI+PGcgY2xpcC1wYXRoPSJ1cmwoI2EpIj48cGF0aCBmaWxsPSIjNDI0MjQyIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00OC4wMzYgNC4wMUg0LjAwOFYzMi4wM2g0NC4wMjh6TTQuMDA4LjAwOEE0LjAwMyA0LjAwMyAwIDAgMCAuMDA1IDQuMDFWMzIuMDNhNC4wMDMgNC4wMDMgMCAwIDAgNC4wMDMgNC4wMDJoNDQuMDI4YTQuMDAzIDQuMDAzIDAgMCAwIDQuMDAzLTQuMDAyVjQuMDFBNC4wMDMgNC4wMDMgMCAwIDAgNDguMDM2LjAwOHpNOC4wMSA4LjAxM2g0LjAwM3Y0LjAwM0g4LjAxem0xMi4wMDggMGgtNC4wMDJ2NC4wMDNoNC4wMDJ6bTQuMDAzIDBoNC4wMDJ2NC4wMDNoLTQuMDAyem0xMi4wMDggMGgtNC4wMDN2NC4wMDNoNC4wMDN6bTQuMDAyIDBoNC4wMDN2NC4wMDNINDAuMDN6bS0yNC4wMTUgOC4wMDVIOC4wMXY0LjAwM2g4LjAwNnptNC4wMDIgMGg0LjAwM3Y0LjAwM2gtNC4wMDN6bTEyLjAwOCAwaC00LjAwM3Y0LjAwM2g0LjAwM3ptMTIuMDA4IDB2NC4wMDNoLTguMDA1di00LjAwM3ptLTMyLjAyMSA4LjAwNUg4LjAxdjQuMDAzaDQuMDAzem00LjAwMyAwaDIwLjAxM3Y0LjAwM0gxNi4wMTZ6bTI4LjAxOCAwSDQwLjAzdjQuMDAzaDQuMDAzeiIgY2xpcC1ydWxlPSJldmVub2RkIi8+PC9nPjxkZWZzPjxjbGlwUGF0aCBpZD0iYSI+PHBhdGggZmlsbD0iI2ZmZiIgZD0iTTAgMGg1M3YzNkgweiIvPjwvY2xpcFBhdGg+PC9kZWZzPjwvc3ZnPg==) 50% no-repeat;border:4px solid #f6f6f6;border-radius:4px;width:58px;min-width:0;height:36px;min-height:0;margin:0;padding:0;position:absolute;overflow:hidden}.monaco-editor.vs-dark .iPadShowKeyboard{background:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI1MyIgaGVpZ2h0PSIzNiIgZmlsbD0ibm9uZSI+PGcgY2xpcC1wYXRoPSJ1cmwoI2EpIj48cGF0aCBmaWxsPSIjQzVDNUM1IiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00OC4wMzYgNC4wMUg0LjAwOFYzMi4wM2g0NC4wMjh6TTQuMDA4LjAwOEE0LjAwMyA0LjAwMyAwIDAgMCAuMDA1IDQuMDFWMzIuMDNhNC4wMDMgNC4wMDMgMCAwIDAgNC4wMDMgNC4wMDJoNDQuMDI4YTQuMDAzIDQuMDAzIDAgMCAwIDQuMDAzLTQuMDAyVjQuMDFBNC4wMDMgNC4wMDMgMCAwIDAgNDguMDM2LjAwOHpNOC4wMSA4LjAxM2g0LjAwM3Y0LjAwM0g4LjAxem0xMi4wMDggMGgtNC4wMDJ2NC4wMDNoNC4wMDJ6bTQuMDAzIDBoNC4wMDJ2NC4wMDNoLTQuMDAyem0xMi4wMDggMGgtNC4wMDN2NC4wMDNoNC4wMDN6bTQuMDAyIDBoNC4wMDN2NC4wMDNINDAuMDN6bS0yNC4wMTUgOC4wMDVIOC4wMXY0LjAwM2g4LjAwNnptNC4wMDIgMGg0LjAwM3Y0LjAwM2gtNC4wMDN6bTEyLjAwOCAwaC00LjAwM3Y0LjAwM2g0LjAwM3ptMTIuMDA4IDB2NC4wMDNoLTguMDA1di00LjAwM3ptLTMyLjAyMSA4LjAwNUg4LjAxdjQuMDAzaDQuMDAzem00LjAwMyAwaDIwLjAxM3Y0LjAwM0gxNi4wMTZ6bTI4LjAxOCAwSDQwLjAzdjQuMDAzaDQuMDAzeiIgY2xpcC1ydWxlPSJldmVub2RkIi8+PC9nPjxkZWZzPjxjbGlwUGF0aCBpZD0iYSI+PHBhdGggZmlsbD0iI2ZmZiIgZD0iTTAgMGg1M3YzNkgweiIvPjwvY2xpcFBhdGg+PC9kZWZzPjwvc3ZnPg==) 50% no-repeat;border:4px solid #252526}.monaco-editor .tokens-inspect-widget{background-color:var(--vscode-editorHoverWidget-background);border:1px solid var(--vscode-editorHoverWidget-border);color:var(--vscode-editorHoverWidget-foreground);-webkit-user-select:text;user-select:text;z-index:50;padding:10px}.monaco-editor.hc-black .tokens-inspect-widget,.monaco-editor.hc-light .tokens-inspect-widget{border-width:2px}.monaco-editor .tokens-inspect-widget .tokens-inspect-separator{background-color:var(--vscode-editorHoverWidget-border);border:0;height:1px}.monaco-editor .tokens-inspect-widget .tm-token{font-family:var(--monaco-monospace-font)}.monaco-editor .tokens-inspect-widget .tm-token-length{float:right;font-size:60%;font-weight:400}.monaco-editor .tokens-inspect-widget .tm-metadata-table{width:100%}.monaco-editor .tokens-inspect-widget .tm-metadata-value{font-family:var(--monaco-monospace-font);text-align:right}.monaco-editor .tokens-inspect-widget .tm-token-type{font-family:var(--monaco-monospace-font)}.quick-input-widget{font-size:13px}.quick-input-widget .monaco-highlighted-label .highlight{color:#0066bf}.vs .quick-input-widget .monaco-list-row.focused .monaco-highlighted-label .highlight{color:#9dddff}.vs-dark .quick-input-widget .monaco-highlighted-label .highlight{color:#0097fb}.hc-black .quick-input-widget .monaco-highlighted-label .highlight{color:#f38518}.hc-light .quick-input-widget .monaco-highlighted-label .highlight{color:#0f4a85}.monaco-keybinding>.monaco-keybinding-key{color:#555;background-color:#dedede66;border:1px solid #ccc6;border-bottom-color:#bababa66;box-shadow:inset 0 -1px #bababa66}.hc-black .monaco-keybinding>.monaco-keybinding-key{box-shadow:none;color:#fff;background-color:#0000;border:1px solid #6fc3df}.hc-light .monaco-keybinding>.monaco-keybinding-key{box-shadow:none;color:#292929;background-color:#0000;border:1px solid #0f4a85}.vs-dark .monaco-keybinding>.monaco-keybinding-key{color:#ccc;background-color:#8080802b;border:1px solid #3339;border-bottom-color:#4449;box-shadow:inset 0 -1px #4449}.monaco-editor{--monaco-monospace-font:\"SF Mono\",Monaco,Menlo,Consolas,\"Ubuntu Mono\",\"Liberation Mono\",\"DejaVu Sans Mono\",\"Courier New\",monospace;font-family:-apple-system,BlinkMacSystemFont,Segoe WPC,Segoe UI,HelveticaNeue-Light,system-ui,Ubuntu,Droid Sans,sans-serif}.monaco-editor.hc-black .monaco-menu .monaco-action-bar.vertical .action-menu-item:focus .action-label,.monaco-editor.hc-light .monaco-menu .monaco-action-bar.vertical .action-menu-item:focus .action-label,.monaco-editor.vs-dark .monaco-menu .monaco-action-bar.vertical .action-menu-item:focus .action-label,.monaco-menu .monaco-action-bar.vertical .action-item .action-menu-item:focus .action-label{stroke-width:1.2px}.monaco-hover p{margin:0}.monaco-aria-container{clip:rect(1px,1px,1px,1px);clip-path:inset(50%);width:1px;height:1px;margin:-1px;padding:0;top:0;overflow:hidden;position:absolute!important}.monaco-diff-editor .synthetic-focus,.monaco-diff-editor [tabindex=\"-1\"]:focus,.monaco-diff-editor [tabindex=\"0\"]:focus,.monaco-diff-editor button:focus,.monaco-diff-editor input[type=button]:focus,.monaco-diff-editor input[type=checkbox]:focus,.monaco-diff-editor input[type=search]:focus,.monaco-diff-editor input[type=text]:focus,.monaco-diff-editor select:focus,.monaco-diff-editor textarea:focus,.monaco-editor{opacity:1;outline-color:var(--vscode-focusBorder);outline-offset:-1px;outline-width:1px;outline-style:solid}.action-widget{background-color:var(--vscode-editorActionList-background);box-shadow:0 2px 8px var(--vscode-widget-shadow);color:var(--vscode-editorActionList-foreground);z-index:40;border-radius:5px;width:100%;min-width:160px;max-width:80vw;padding:4px;font-size:13px;display:block;border:1px solid var(--vscode-editorWidget-border)!important}.context-view-block{z-index:-1}.context-view-block,.context-view-pointerBlock{cursor:auto;width:100%;height:100%;position:fixed;top:0;left:0}.context-view-pointerBlock{z-index:2}.action-widget .monaco-list{-webkit-user-select:none;user-select:none;border:0!important}.action-widget .monaco-list:focus:before{outline:0!important}.action-widget .monaco-list .monaco-scrollable-element{overflow:visible}.action-widget .monaco-list .monaco-list-row{cursor:pointer;touch-action:none;white-space:nowrap;border-radius:4px;width:100%;padding:0 10px}.action-widget .monaco-list .monaco-list-row.action.focused:not(.option-disabled){color:var(--vscode-editorActionList-focusForeground);outline:1px solid var(--vscode-menu-selectionBorder,transparent);outline-offset:-1px;background-color:var(--vscode-editorActionList-focusBackground)!important}.action-widget .monaco-list-row.group-header{font-size:12px;font-weight:600;color:var(--vscode-descriptionForeground)!important}.action-widget .monaco-list-row.group-header:not(:first-of-type){margin-top:2px}.action-widget .monaco-list .group-header,.action-widget .monaco-list .option-disabled,.action-widget .monaco-list .option-disabled .focused,.action-widget .monaco-list .option-disabled .focused:before,.action-widget .monaco-list .option-disabled:before{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;cursor:default!important;background-color:#0000!important;outline:0 solid!important}.action-widget .monaco-list-row.action{align-items:center;gap:8px;display:flex}.action-widget .monaco-list-row.action.option-disabled,.action-widget .monaco-list-row.action.option-disabled .codicon,.action-widget .monaco-list:focus .monaco-list-row.focused.action.option-disabled,.action-widget .monaco-list:not(.drop-target):not(.dragging) .monaco-list-row:hover:not(.selected):not(.focused).option-disabled{color:var(--vscode-disabledForeground)}.action-widget .monaco-list-row.action:not(.option-disabled) .codicon{color:inherit}.action-widget .monaco-list-row.action .title{text-overflow:ellipsis;flex:1;overflow:hidden}.action-widget .monaco-list-row.action .monaco-keybinding>.monaco-keybinding-key{background-color:var(--vscode-keybindingLabel-background);border-color:var(--vscode-keybindingLabel-border);border-bottom-color:var(--vscode-keybindingLabel-bottomBorder);box-shadow:inset 0 -1px 0 var(--vscode-widget-shadow);color:var(--vscode-keybindingLabel-foreground);border-style:solid;border-width:1px;border-radius:3px}.action-widget .action-widget-action-bar{background-color:var(--vscode-editorActionList-background);border-top:1px solid var(--vscode-editorHoverWidget-border);margin-top:2px}.action-widget .action-widget-action-bar:before{content:\"\";width:100%;display:block}.action-widget .action-widget-action-bar .actions-container{padding:3px 8px 0}.action-widget-action-bar .action-label{color:var(--vscode-textLink-activeForeground);pointer-events:all;padding:0;font-size:12px;line-height:22px}.action-widget-action-bar .action-item{pointer-events:none;margin-right:16px}.action-widget-action-bar .action-label:hover{background-color:#0000!important}.monaco-action-bar .actions-container.highlight-toggled .action-label.checked{background:var(--vscode-actionBar-toggledBackground)!important}.monaco-action-bar .action-item.menu-entry .action-label.icon{background-position:50%;background-repeat:no-repeat;background-size:16px;width:16px;height:16px}.monaco-action-bar .action-item.menu-entry.text-only .action-label{color:var(--vscode-descriptionForeground);border-radius:2px;overflow:hidden}.monaco-action-bar .action-item.menu-entry.text-only.use-comma:not(:last-of-type) .action-label:after{content:\", \"}.monaco-action-bar .action-item.menu-entry.text-only+.action-item:not(.text-only)>.monaco-dropdown .action-label{color:var(--vscode-descriptionForeground)}.monaco-dropdown-with-default{border-radius:5px;flex-direction:row;display:flex!important}.monaco-dropdown-with-default>.action-container>.action-label{margin-right:0}.monaco-dropdown-with-default>.action-container.menu-entry>.action-label.icon{background-position:50%;background-repeat:no-repeat;background-size:16px;width:16px;height:16px}.monaco-dropdown-with-default:hover{background-color:var(--vscode-toolbar-hoverBackground)}.monaco-dropdown-with-default>.dropdown-action-container>.monaco-dropdown>.dropdown-label .codicon[class*=codicon-]{margin-left:-3px;padding-left:0;padding-right:0;font-size:12px;line-height:16px}.monaco-dropdown-with-default>.dropdown-action-container>.monaco-dropdown>.dropdown-label>.action-label{background-position:50%;background-repeat:no-repeat;background-size:16px;display:block}.monaco-link{color:var(--vscode-textLink-foreground)}.monaco-link:hover{color:var(--vscode-textLink-activeForeground)}.quick-input-widget{z-index:2550;-webkit-app-region:no-drag;border-radius:6px;width:600px;margin-left:-300px;position:absolute;left:50%}.quick-input-titlebar{border-top-left-radius:5px;border-top-right-radius:5px;align-items:center;display:flex}.quick-input-left-action-bar{flex:1;margin-left:4px;display:flex}.quick-input-inline-action-bar{margin:2px 0 0 5px}.quick-input-title{text-align:center;text-overflow:ellipsis;padding:3px 0;overflow:hidden}.quick-input-right-action-bar{flex:1;margin-right:4px;display:flex}.quick-input-right-action-bar>.actions-container{justify-content:flex-end}.quick-input-titlebar .monaco-action-bar .action-label.codicon{background-position:50%;background-repeat:no-repeat;padding:2px}.quick-input-description{margin:6px 6px 6px 11px}.quick-input-header .quick-input-description{flex:1;margin:4px 2px}.quick-input-header{padding:8px 6px 2px;display:flex}.quick-input-widget.hidden-input .quick-input-header{margin-bottom:0;padding:0}.quick-input-and-message{flex-direction:column;flex-grow:1;min-width:0;display:flex;position:relative}.quick-input-check-all{align-self:center;margin:0}.quick-input-filter{flex-grow:1;display:flex;position:relative}.quick-input-box{flex-grow:1}.quick-input-widget.show-checkboxes .quick-input-box,.quick-input-widget.show-checkboxes .quick-input-message{margin-left:5px}.quick-input-visible-count{position:absolute;left:-10000px}.quick-input-count{align-self:center;align-items:center;display:flex;position:absolute;right:4px}.quick-input-count .monaco-count-badge{vertical-align:middle;border-radius:2px;min-height:auto;padding:2px 4px;line-height:normal}.quick-input-action{margin-left:6px}.quick-input-action .monaco-text-button{align-items:center;height:25px;padding:0 6px;font-size:11px;display:flex}.quick-input-message{overflow-wrap:break-word;margin-top:-1px;padding:5px}.quick-input-message>.codicon{vertical-align:text-bottom;margin:0 .2em}.quick-input-message a{color:inherit}.quick-input-progress.monaco-progress-container{position:relative}.quick-input-list{line-height:22px}.quick-input-widget.hidden-input .quick-input-list{margin-top:4px;padding-bottom:4px}.quick-input-list .monaco-list{max-height:440px;padding-bottom:5px;overflow:hidden}.quick-input-list .monaco-scrollable-element{padding:0 5px}.quick-input-list .quick-input-list-entry{box-sizing:border-box;padding:0 6px;display:flex;overflow:hidden}.quick-input-list .quick-input-list-entry.quick-input-list-separator-border{border-top-style:solid;border-top-width:1px}.quick-input-list .monaco-list-row{border-radius:3px}.quick-input-list .monaco-list-row[data-index=\"0\"] .quick-input-list-entry.quick-input-list-separator-border{border-top-style:none}.quick-input-list .quick-input-list-label{flex:1;height:100%;display:flex;overflow:hidden}.quick-input-list .quick-input-list-checkbox{align-self:center;margin:0}.quick-input-list .quick-input-list-icon{background-position:0;background-repeat:no-repeat;background-size:16px;justify-content:center;align-items:center;width:16px;height:22px;padding-right:6px;display:flex}.quick-input-list .quick-input-list-rows{text-overflow:ellipsis;flex-direction:column;flex:1;height:100%;margin-left:5px;display:flex;overflow:hidden}.quick-input-widget.show-checkboxes .quick-input-list .quick-input-list-rows{margin-left:10px}.quick-input-widget .quick-input-list .quick-input-list-checkbox{display:none}.quick-input-widget.show-checkboxes .quick-input-list .quick-input-list-checkbox{display:inline}.quick-input-list .quick-input-list-rows>.quick-input-list-row{align-items:center;display:flex}.quick-input-list .quick-input-list-rows>.quick-input-list-row .monaco-icon-label,.quick-input-list .quick-input-list-rows>.quick-input-list-row .monaco-icon-label .monaco-icon-label-container>.monaco-icon-name-container{flex:1}.quick-input-list .quick-input-list-rows>.quick-input-list-row .codicon[class*=codicon-]{vertical-align:text-bottom}.quick-input-list .quick-input-list-rows .monaco-highlighted-label>span{opacity:1}.quick-input-list .quick-input-list-entry .quick-input-list-entry-keybinding{margin-right:8px}.quick-input-list .quick-input-list-label-meta{opacity:.7;text-overflow:ellipsis;line-height:normal;overflow:hidden}.quick-input-list .monaco-list .monaco-list-row .monaco-highlighted-label .highlight{background-color:unset;font-weight:700;color:var(--vscode-list-highlightForeground)!important}.quick-input-list .monaco-list .monaco-list-row.focused .monaco-highlighted-label .highlight{color:var(--vscode-list-focusHighlightForeground)!important}.quick-input-list .quick-input-list-entry .quick-input-list-separator{margin-right:4px}.quick-input-list .quick-input-list-entry-action-bar{flex:0;display:flex;overflow:visible}.quick-input-list .quick-input-list-entry-action-bar .action-label{display:none}.quick-input-list .quick-input-list-entry-action-bar .action-label.codicon{margin-right:4px;padding:2px}.quick-input-list .quick-input-list-entry-action-bar{margin-top:1px;margin-right:4px}.quick-input-list .monaco-list-row.focused .quick-input-list-entry-action-bar .action-label,.quick-input-list .monaco-list-row.passive-focused .quick-input-list-entry-action-bar .action-label,.quick-input-list .quick-input-list-entry .quick-input-list-entry-action-bar .action-label.always-visible,.quick-input-list .quick-input-list-entry.focus-inside .quick-input-list-entry-action-bar .action-label,.quick-input-list .quick-input-list-entry:hover .quick-input-list-entry-action-bar .action-label{display:flex}.quick-input-list .monaco-list-row.focused .monaco-keybinding-key,.quick-input-list .monaco-list-row.focused .quick-input-list-entry .quick-input-list-separator{color:inherit}.quick-input-list .monaco-list-row.focused .monaco-keybinding-key{background:0 0}.quick-input-list .quick-input-list-separator-as-item{padding:4px 6px;font-size:12px}.quick-input-list .quick-input-list-separator-as-item .label-name{font-weight:600}.quick-input-list .quick-input-list-separator-as-item .label-description{opacity:1!important}.quick-input-list .monaco-tree-sticky-row .quick-input-list-entry.quick-input-list-separator-as-item.quick-input-list-separator-border{border-top-style:none}.quick-input-list .monaco-tree-sticky-row{padding:0 5px}.quick-input-list .monaco-tl-twistie{display:none!important}.extension-editor .codicon.codicon-error,.extensions-viewlet>.extensions .codicon.codicon-error,.markers-panel .marker-icon .codicon.codicon-error,.markers-panel .marker-icon.error,.monaco-editor .zone-widget .codicon.codicon-error,.preferences-editor .codicon.codicon-error,.text-search-provider-messages .providerMessage .codicon.codicon-error{color:var(--vscode-problemsErrorIcon-foreground)}.extension-editor .codicon.codicon-warning,.extensions-viewlet>.extensions .codicon.codicon-warning,.markers-panel .marker-icon .codicon.codicon-warning,.markers-panel .marker-icon.warning,.monaco-editor .zone-widget .codicon.codicon-warning,.preferences-editor .codicon.codicon-warning,.text-search-provider-messages .providerMessage .codicon.codicon-warning{color:var(--vscode-problemsWarningIcon-foreground)}.extension-editor .codicon.codicon-info,.extensions-viewlet>.extensions .codicon.codicon-info,.markers-panel .marker-icon .codicon.codicon-info,.markers-panel .marker-icon.info,.monaco-editor .zone-widget .codicon.codicon-info,.preferences-editor .codicon.codicon-info,.text-search-provider-messages .providerMessage .codicon.codicon-info{color:var(--vscode-problemsInfoIcon-foreground)}", byteToHex = [];
for (let j = 0; j < 256; ++j) byteToHex.push((j + 256).toString(16).slice(1));
function unsafeStringify(j, I = 0) {
return (byteToHex[j[I + 0]] + byteToHex[j[I + 1]] + byteToHex[j[I + 2]] + byteToHex[j[I + 3]] + "-" + byteToHex[j[I + 4]] + byteToHex[j[I + 5]] + "-" + byteToHex[j[I + 6]] + byteToHex[j[I + 7]] + "-" + byteToHex[j[I + 8]] + byteToHex[j[I + 9]] + "-" + byteToHex[j[I + 10]] + byteToHex[j[I + 11]] + byteToHex[j[I + 12]] + byteToHex[j[I + 13]] + byteToHex[j[I + 14]] + byteToHex[j[I + 15]]).toLowerCase();
}
var getRandomValues, rnds8 = new Uint8Array(16);
function rng() {
if (!getRandomValues) {
if (typeof crypto > "u" || !crypto.getRandomValues) throw Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");
getRandomValues = crypto.getRandomValues.bind(crypto);
}
return getRandomValues(rnds8);
}
var native_default = { randomUUID: typeof crypto < "u" && crypto.randomUUID && crypto.randomUUID.bind(crypto) };
function _v4(j, I, q) {
j ||= {};
let Q = j.random ?? j.rng?.() ?? rng();
if (Q.length < 16) throw Error("Random bytes length must be >= 16");
if (Q[6] = Q[6] & 15 | 64, Q[8] = Q[8] & 63 | 128, I) {
if (q ||= 0, q < 0 || q + 16 > I.length) throw RangeError(`UUID byte range ${q}:${q + 15} is out of buffer bounds`);
for (let j = 0; j < 16; ++j) I[q + j] = Q[j];
return I;
}
return unsafeStringify(Q);
}
function v4(j, I, q) {
return native_default.randomUUID && !I && !j ? native_default.randomUUID() : _v4(j, I, q);
}
var v4_default = v4;
const useCollections = (j) => {
let [I, q] = useState(j.defaultCollections ?? []), Q = useCallback((Q) => {
let p_ = {
...Q,
id: v4_default(),
createdAt: (/* @__PURE__ */ new Date()).toISOString(),
operations: []
}, m_ = [...I, p_];
q(m_), j.onCollectionsChange?.(m_), j.onCollectionCreate?.(p_);
}, [I, j]), p_ = useCallback((Q, p_) => {
let m_ = {
...p_,
createdAt: (/* @__PURE__ */ new Date()).toISOString()
}, h_ = I.map((j) => j.id === Q ? {
...j,
operations: [...j.operations, m_]
} : j);
q(h_), j.onCollectionsChange?.(h_);
let g_ = h_.find((j) => j.id === Q);
g_ && (j.onCollectionUpdate?.(g_), j.onCollectionOperationCreate?.(g_, m_));
}, [I, j]), m_ = useCallback((Q) => {
let p_ = I.find((j) => j.id === Q), m_ = I.filter((j) => j.id !== Q);
q(m_), j.onCollectionsChange?.(m_), p_ && j.onCollectionDelete?.(p_);
}, [I, j]), h_ = useCallback((Q, p_) => {
let m_, h_ = I.map((j) => j.id === Q ? {
...j,
operations: j.operations.filter((j) => j.id === p_ ? (m_ = j, !1) : !0)
} : j);
q(h_), j.onCollectionsChange?.(h_);
let g_ = h_.find((j) => j.id === Q);
g_ && (j.onCollectionUpdate?.(g_), m_ && j.onCollectionOperationDelete?.(g_, m_));
}, [I, j]), g_ = useCallback((Q, p_) => {
let m_ = I.map((j) => j.id === Q ? {
...j,
...p_
} : j);
q(m_), j.onCollectionsChange?.(m_);
let h_ = m_.find((j) => j.id === Q);
h_ && j.onCollectionUpdate?.(h_);
}, [I, j]), __ = useCallback((Q, p_, m_) => {
let h_, g_ = I.map((j) => j.id === Q ? {
...j,
operations: j.operations.map((j) => j.id === p_ ? (h_ = {
...j,
...m_
}, h_) : j)
} : j);
q(g_), j.onCollectionsChange?.(g_);
let __ = g_.find((j) => j.id === Q);
__ && (j.onCollectionUpdate?.(__), h_ && j.onCollectionOperationUpdate?.(__, h_));
}, [I, j]);
return {
collections: I,
addCollection: Q,
addOperationToCollection: p_,
deleteCollection: m_,
deleteOperationFromCollection: h_,
updateCollection: g_,
updateOperationInCollection: __
};
};
function getIntrospectionQuery(j) {
let I = {
descriptions: !0,
specifiedByUrl: !1,
directiveIsRepeatable: !1,
schemaDescription: !1,
inputValueDeprecation: !1,
oneOf: !1,
...j
}, q = I.descriptions ? "description" : "", Q = I.specifiedByUrl ? "specifiedByURL" : "", p_ = I.directiveIsRepeatable ? "isRepeatable" : "", m_ = I.schemaDescription ? q : "";
function h_(j) {
return I.inputValueDeprecation ? j : "";
}
let g_ = I.oneOf ? "isOneOf" : "";
return `
query IntrospectionQuery {
__schema {
${m_}
queryType { name kind }
mutationType { name kind }
subscriptionType { name kind }
types {
...FullType
}
directives {
name
${q}
${p_}
locations
args${h_("(includeDeprecated: true)")} {
...InputValue
}
}
}
}
fragment FullType on __Type {
kind
name
${q}
${Q}
${g_}
fields(includeDeprecated: true) {
name
${q}
args${h_("(includeDeprecated: true)")} {
...InputValue
}
type {
...TypeRef
}
isDeprecated
deprecationReason
}
inputFields${h_("(includeDeprecated: true)")} {
...InputValue
}
interfaces {
...TypeRef
}
enumValues(includeDeprecated: true) {
name
${q}
isDeprecated
deprecationReason
}
possibleTypes {
...TypeRef
}
}
fragment InputValue on __InputValue {
name
${q}
type { ...TypeRef }
defaultValue
${h_("isDeprecated")}
${h_("deprecationReason")}
}
fragment TypeRef on __Type {
kind
name
ofType {
kind
name
ofType {
kind
name
ofType {
kind
name
ofType {
kind
name
ofType {
kind
name
ofType {
kind
name
ofType {
kind
name
ofType {
kind
name
ofType {
kind
name
}
}
}
}
}
}
}
}
}
}
`;
}
function buildClientSchema(j, I) {
isObjectLike(j) && isObjectLike(j.__schema) || devAssert(!1, `Invalid or incomplete introspection result. Ensure that you are passing "data" property of introspection response and no "errors" was returned alongside: ${inspect(j)}.`);
let q = j.__schema, Q = keyValMap(q.types, (j) => j.name, (j) => x_(j));
for (let j of [...specifiedScalarTypes, ...introspectionTypes]) Q[j.name] && (Q[j.name] = j);
let p_ = q.queryType ? y_(q.queryType) : null, m_ = q.mutationType ? y_(q.mutationType) : null, h_ = q.subscriptionType ? y_(q.subscriptionType) : null, g_ = q.directives ? q.directives.map(rv) : [];
return new GraphQLSchema({
description: q.description,
query: p_,
mutation: m_,
subscription: h_,
types: Object.values(Q),
directives: g_,
assumeValid: I?.assumeValid
});
function __(j) {
if (j.kind === TypeKind.LIST) {
let I = j.ofType;
if (!I) throw Error("Decorated type deeper than introspection query.");
return new GraphQLList(__(I));
}
if (j.kind === TypeKind.NON_NULL) {
let I = j.ofType;
if (!I) throw Error("Decorated type deeper than introspection query.");
let q = __(I);
return new GraphQLNonNull(assertNullableType(q));
}
return v_(j);
}
function v_(j) {
let I = j.name;
if (!I) throw Error(`Unknown type reference: ${inspect(j)}.`);
let q = Q[I];
if (!q) throw Error(`Invalid or incomplete schema, unknown type: ${I}. Ensure that a full introspection query is used in order to build a client schema.`);
return q;
}
function y_(j) {
return assertObjectType(v_(j));
}
function b_(j) {
return assertInterfaceType(v_(j));
}
function x_(j) {
if (j != null && j.name != null && j.kind != null) switch (j.kind) {
case TypeKind.SCALAR: return S_(j);
case TypeKind.OBJECT: return w_(j);
case TypeKind.INTERFACE: return T_(j);
case TypeKind.UNION: return E_(j);
case TypeKind.ENUM: return P_(j);
case TypeKind.INPUT_OBJECT: return B_(j);
}
let I = inspect(j);
throw Error(`Invalid or incomplete introspection result. Ensure that a full introspection query is used in order to build a client schema: ${I}.`);
}
function S_(j) {
return new GraphQLScalarType({
name: j.name,
description: j.description,
specifiedByURL: j.specifiedByURL
});
}
function C_(j) {
if (j.interfaces === null && j.kind === TypeKind.INTERFACE) return [];
if (!j.interfaces) {
let I = inspect(j);
throw Error(`Introspection result missing interfaces: ${I}.`);
}
return j.interfaces.map(b_);
}
function w_(j) {
return new GraphQLObjectType({
name: j.name,
description: j.description,
interfaces: () => C_(j),
fields: () => V_(j)
});
}
function T_(j) {
return new GraphQLInterfaceType({
name: j.name,
description: j.description,
interfaces: () => C_(j),
fields: () => V_(j)
});
}
function E_(j) {
if (!j.possibleTypes) {
let I = inspect(j);
throw Error(`Introspection result missing possibleTypes: ${I}.`);
}
return new GraphQLUnionType({
name: j.name,
description: j.description,
types: () => j.possibleTypes.map(y_)
});
}
function P_(j) {
if (!j.enumValues) {
let I = inspect(j);
throw Error(`Introspection result missing enumValues: ${I}.`);
}
return new GraphQLEnumType({
name: j.name,
description: j.description,
values: keyValMap(j.enumValues, (j) => j.name, (j) => ({
description: j.description,
deprecationReason: j.deprecationReason
}))
});
}
function B_(j) {
if (!j.inputFields) {
let I = inspect(j);
throw Error(`Introspection result missing inputFields: ${I}.`);
}
return new GraphQLInputObjectType({
name: j.name,
description: j.description,
fields: () => Y_(j.inputFields),
isOneOf: j.isOneOf
});
}
function V_(j) {
if (!j.fields) throw Error(`Introspection result missing fields: ${inspect(j)}.`);
return keyValMap(j.fields, (j) => j.name, H_);
}
function H_(j) {
let I = __(j.type);
if (!isOutputType(I)) {
let j = inspect(I);
throw Error(`Introspection must provide output type for fields, but received: ${j}.`);
}
if (!j.args) {
let I = inspect(j);
throw Error(`Introspection result missing field args: ${I}.`);
}
return {
description: j.description,
deprecationReason: j.deprecationReason,
type: I,
args: Y_(j.args)
};
}
function Y_(j) {
return keyValMap(j, (j) => j.name, nv);
}
function nv(j) {
let I = __(j.type);
if (!isInputType(I)) {
let j = inspect(I);
throw Error(`Introspection must provide input type for arguments, but received: ${j}.`);
}
let q = j.defaultValue == null ? void 0 : valueFromAST(parseValue(j.defaultValue), I);
return {
description: j.description,
type: I,
defaultValue: q,
deprecationReason: j.deprecationReason
};
}
function rv(j) {
if (!j.args) {
let I = inspect(j);
throw Error(`Introspection result missing directive args: ${I}.`);
}
if (!j.locations) {
let I = inspect(j);
throw Error(`Introspection result missing directive locations: ${I}.`);
}
return new GraphQLDirective({
name: j.name,
description: j.description,
isRepeatable: j.isRepeatable,
locations: j.locations.slice(),
args: Y_(j.args)
});
}
}
function __insertCSS(j) {
if (!j || typeof document > "u") return;
let I = document.head || document.getElementsByTagName("head")[0], q = document.createElement("style");
q.type = "text/css", I.appendChild(q), q.styleSheet ? q.styleSheet.cssText = j : q.appendChild(document.createTextNode(j));
}
var getAsset = (j) => {
switch (j) {
case "success": return SuccessIcon;
case "info": return InfoIcon$1;
case "warning": return WarningIcon;
case "error": return ErrorIcon;
default: return null;
}
}, bars = Array(12).fill(0), Loader = ({ visible: j, className: I }) => /* @__PURE__ */ ke.createElement("div", {
className: ["sonner-loading-wrapper", I].filter(Boolean).join(" "),
"data-visible": j
}, /* @__PURE__ */ ke.createElement("div", { className: "sonner-spinner" }, bars.map((j, I) => /* @__PURE__ */ ke.createElement("div", {
className: "sonner-loading-bar",
key: `spinner-bar-${I}`
})))), SuccessIcon = /* @__PURE__ */ ke.createElement("svg", {
xmlns: "http://www.w3.org/2000/svg",
viewBox: "0 0 20 20",
fill: "currentColor",
height: "20",
width: "20"
}, /* @__PURE__ */ ke.createElement("path", {
fillRule: "evenodd",
d: "M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z",
clipRule: "evenodd"
})), WarningIcon = /* @__PURE__ */ ke.createElement("svg", {
xmlns: "http://www.w3.org/2000/svg",
viewBox: "0 0 24 24",
fill: "currentColor",
height: "20",
width: "20"
}, /* @__PURE__ */ ke.createElement("path", {
fillRule: "evenodd",
d: "M9.401 3.003c1.155-2 4.043-2 5.197 0l7.355 12.748c1.154 2-.29 4.5-2.599 4.5H4.645c-2.309 0-3.752-2.5-2.598-4.5L9.4 3.003zM12 8.25a.75.75 0 01.75.75v3.75a.75.75 0 01-1.5 0V9a.75.75 0 01.75-.75zm0 8.25a.75.75 0 100-1.5.75.75 0 000 1.5z",
clipRule: "evenodd"
})), InfoIcon$1 = /* @__PURE__ */ ke.createElement("svg", {
xmlns: "http://www.w3.org/2000/svg",
viewBox: "0 0 20 20",
fill: "currentColor",
height: "20",
width: "20"
}, /* @__PURE__ */ ke.createElement("path", {
fillRule: "evenodd",
d: "M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a.75.75 0 000 1.5h.253a.25.25 0 01.244.304l-.459 2.066A1.75 1.75 0 0010.747 15H11a.75.75 0 000-1.5h-.253a.25.25 0 01-.244-.304l.459-2.066A1.75 1.75 0 009.253 9H9z",
clipRule: "evenodd"
})), ErrorIcon = /* @__PURE__ */ ke.createElement("svg", {
xmlns: "http://www.w3.org/2000/svg",
viewBox: "0 0 20 20",
fill: "currentColor",
height: "20",
width: "20"
}, /* @__PURE__ */ ke.createElement("path", {
fillRule: "evenodd",
d: "M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-8-5a.75.75 0 01.75.75v4.5a.75.75 0 01-1.5 0v-4.5A.75.75 0 0110 5zm0 10a1 1 0 100-2 1 1 0 000 2z",
clipRule: "evenodd"
})), CloseIcon = /* @__PURE__ */ ke.createElement("svg", {
xmlns: "http://www.w3.org/2000/svg",
width: "12",
height: "12",
viewBox: "0 0 24 24",
fill: "none",
stroke: "currentColor",
strokeWidth: "1.5",
strokeLinecap: "round",
strokeLinejoin: "round"
}, /* @__PURE__ */ ke.createElement("line", {
x1: "18",
y1: "6",
x2: "6",
y2: "18"
}), /* @__PURE__ */ ke.createElement("line", {
x1: "6",
y1: "6",
x2: "18",
y2: "18"
})), useIsDocumentHidden = () => {
let [j, I] = ke.useState(document.hidden);
return ke.useEffect(() => {
let j = () => {
I(document.hidden);
};
return document.addEventListener("visibilitychange", j), () => window.removeEventListener("visibilitychange", j);
}, []), j;
}, toastsCounter = 1, ToastState = new class {
constructor() {
this.subscribe = (j) => (this.subscribers.push(j), () => {
let I = this.subscribers.indexOf(j);
this.subscribers.splice(I, 1);
}), this.publish = (j) => {
this.subscribers.forEach((I) => I(j));
}, this.addToast = (j) => {
this.publish(j), this.toasts = [...this.toasts, j];
}, this.create = (j) => {
let { message: I,...q } = j, Q = typeof j?.id == "number" || j.id?.length > 0 ? j.id : toastsCounter++, p_ = this.toasts.find((j) => j.id === Q), m_ = j.dismissible === void 0 ? !0 : j.dismissible;
return this.dismissedToasts.has(Q) && this.dismissedToasts.delete(Q), p_ ? this.toasts = this.toasts.map((q) => q.id === Q ? (this.publish({
...q,
...j,
id: Q,
title: I
}), {
...q,
...j,
id: Q,
dismissible: m_,
title: I
}) : q) : this.addToast({
title: I,
...q,
dismissible: m_,
id: Q
}), Q;
}, this.dismiss = (j) => (j ? (this.dismissedToasts.add(j), requestAnimationFrame(() => this.subscribers.forEach((I) => I({
id: j,
dismiss: !0
})))) : this.toasts.forEach((j) => {
this.subscribers.forEach((I) => I({
id: j.id,
dismiss: !0
}));
}), j), this.message = (j, I) => this.create({
...I,
message: j
}), this.error = (j, I) => this.create({
...I,
message: j,
type: "error"
}), this.success = (j, I) => this.create({
...I,
type: "success",
message: j
}), this.info = (j, I) => this.create({
...I,
type: "info",
message: j
}), this.warning = (j, I) => this.create({
...I,
type: "warning",
message: j
}), this.loading = (j, I) => this.create({
...I,
type: "loading",
message: j
}), this.promise = (j, I) => {
if (!I) return;
let q;
I.loading !== void 0 && (q = this.create({
...I,
promise: j,
type: "loading",
message: I.loading,
description: typeof I.description == "function" ? void 0 : I.description
}));
let Q = Promise.resolve(j instanceof Function ? j() : j), p_ = q !== void 0, m_, h_ = Q.then(async (j) => {
if (m_ = ["resolve", j], ke.isValidElement(j)) p_ = !1, this.create({
id: q,
type: "default",
message: j
});
else if (isHttpResponse(j) && !j.ok) {
p_ = !1;
let Q = typeof I.error == "function" ? await I.error(`HTTP error! status: ${j.status}`) : I.error, m_ = typeof I.description == "function" ? await I.description(`HTTP error! status: ${j.status}`) : I.description, h_ = typeof Q == "object" && !ke.isValidElement(Q) ? Q : { message: Q };
this.create({
id: q,
type: "error",
description: m_,
...h_
});
} else if (j instanceof Error) {
p_ = !1;
let Q = typeof I.error == "function" ? await I.error(j) : I.error, m_ = typeof I.description == "function" ? await I.description(j) : I.description, h_ = typeof Q == "object" && !ke.isValidElement(Q) ? Q : { message: Q };
this.create({
id: q,
type: "error",
description: m_,
...h_
});
} else if (I.success !== void 0) {
p_ = !1;
let Q = typeof I.success == "function" ? await I.success(j) : I.success, m_ = typeof I.description == "function" ? await I.description(j) : I.description, h_ = typeof Q == "object" && !ke.isValidElement(Q) ? Q : { message: Q };
this.create({
id: q,
type: "success",
description: m_,
...h_
});
}
}).catch(async (j) => {
if (m_ = ["reject", j], I.error !== void 0) {
p_ = !1;
let Q = typeof I.error == "function" ? await I.error(j) : I.error, m_ = typeof I.description == "function" ? await I.description(j) : I.description, h_ = typeof Q == "object" && !ke.isValidElement(Q) ? Q : { message: Q };
this.create({
id: q,
type: "error",
description: m_,
...h_
});
}
}).finally(() => {
p_ && (this.dismiss(q), q = void 0), I.finally == null || I.finally.call(I);
}), g_ = () => new Promise((j, I) => h_.then(() => m_[0] === "reject" ? I(m_[1]) : j(m_[1])).catch(I));
return typeof q != "string" && typeof q != "number" ? { unwrap: g_ } : Object.assign(q, { unwrap: g_ });
}, this.custom = (j, I) => {
let q = I?.id || toastsCounter++;
return this.create({
jsx: j(q),
id: q,
...I
}), q;
}, this.getActiveToasts = () => this.toasts.filter((j) => !this.dismissedToasts.has(j.id)), this.subscribers = [], this.toasts = [], this.dismissedToasts = /* @__PURE__ */ new Set();
}
}(), toastFunction = (j, I) => {
let q = I?.id || toastsCounter++;
return ToastState.addToast({
title: j,
...I,
id: q
}), q;
}, isHttpResponse = (j) => j && typeof j == "object" && "ok" in j && typeof j.ok == "boolean" && "status" in j && typeof j.status == "number", basicToast = toastFunction, toast = Object.assign(basicToast, {
success: ToastState.success,
info: ToastState.info,
warning: ToastState.warning,
error: ToastState.error,
custom: ToastState.custom,
message: ToastState.message,
promise: ToastState.promise,
dismiss: ToastState.dismiss,
loading: ToastState.loading
}, {
getHistory: () => ToastState.toasts,
getToasts: () => ToastState.getActiveToasts()
});
__insertCSS("[data-sonner-toaster][dir=ltr],html[dir=ltr]{--toast-icon-margin-start:-3px;--toast-icon-margin-end:4px;--toast-svg-margin-start:-1px;--toast-svg-margin-end:0px;--toast-button-margin-start:auto;--toast-button-margin-end:0;--toast-close-button-start:0;--toast-close-button-end:unset;--toast-close-button-transform:translate(-35%, -35%)}[data-sonner-toaster][dir=rtl],html[dir=rtl]{--toast-icon-margin-start:4px;--toast-icon-margin-end:-3px;--toast-svg-margin-start:0px;--toast-svg-margin-end:-1px;--toast-button-margin-start:0;--toast-button-margin-end:auto;--toast-close-button-start:unset;--toast-close-button-end:0;--toast-close-button-transform:translate(35%, -35%)}[data-sonner-toaster]{position:fixed;width:var(--width);font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;--gray1:hsl(0, 0%, 99%);--gray2:hsl(0, 0%, 97.3%);--gray3:hsl(0, 0%, 95.1%);--gray4:hsl(0, 0%, 93%);--gray5:hsl(0, 0%, 90.9%);--gray6:hsl(0, 0%, 88.7%);--gray7:hsl(0, 0%, 85.8%);--gray8:hsl(0, 0%, 78%);--gray9:hsl(0, 0%, 56.1%);--gray10:hsl(0, 0%, 52.3%);--gray11:hsl(0, 0%, 43.5%);--gray12:hsl(0, 0%, 9%);--border-radius:8px;box-sizing:border-box;padding:0;margin:0;list-style:none;outline:0;z-index:999999999;transition:transform .4s ease}@media (hover:none) and (pointer:coarse){[data-sonner-toaster][data-lifted=true]{transform:none}}[data-sonner-toaster][data-x-position=right]{right:var(--offset-right)}[data-sonner-toaster][data-x-position=left]{left:var(--offset-left)}[data-sonner-toaster][data-x-position=center]{left:50%;transform:translateX(-50%)}[data-sonner-toaster][data-y-position=top]{top:var(--offset-top)}[data-sonner-toaster][data-y-position=bottom]{bottom:var(--offset-bottom)}[data-sonner-toast]{--y:translateY(100%);--lift-amount:calc(var(--lift) * var(--gap));z-index:var(--z-index);position:absolute;opacity:0;transform:var(--y);touch-action:none;transition:transform .4s,opacity .4s,height .4s,box-shadow .2s;box-sizing:border-box;outline:0;overflow-wrap:anywhere}[data-sonner-toast][data-styled=true]{padding:16px;background:var(--normal-bg);border:1px solid var(--normal-border);color:var(--normal-text);border-radius:var(--border-radius);box-shadow:0 4px 12px rgba(0,0,0,.1);width:var(--width);font-size:13px;display:flex;align-items:center;gap:6px}[data-sonner-toast]:focus-visible{box-shadow:0 4px 12px rgba(0,0,0,.1),0 0 0 2px rgba(0,0,0,.2)}[data-sonner-toast][data-y-position=top]{top:0;--y:translateY(-100%);--lift:1;--lift-amount:calc(1 * var(--gap))}[data-sonner-toast][data-y-position=bottom]{bottom:0;--y:translateY(100%);--lift:-1;--lift-amount:calc(var(--lift) * var(--gap))}[data-sonner-toast][data-styled=true] [data-description]{font-weight:400;line-height:1.4;color:#3f3f3f}[data-rich-colors=true][data-sonner-toast][data-styled=true] [data-description]{color:inherit}[data-sonner-toaster][data-sonner-theme=dark] [data-description]{color:#e8e8e8}[data-sonner-toast][data-styled=true] [data-title]{font-weight:500;line-height:1.5;color:inherit}[data-sonner-toast][data-styled=true] [data-icon]{display:flex;height:16px;width:16px;position:relative;justify-content:flex-start;align-items:center;flex-shrink:0;margin-left:var(--toast-icon-margin-start);margin-right:var(--toast-icon-margin-end)}[data-sonner-toast][data-promise=true] [data-icon]>svg{opacity:0;transform:scale(.8);transform-origin:center;animation:sonner-fade-in .3s ease forwards}[data-sonner-toast][data-styled=true] [data-icon]>*{flex-shrink:0}[data-sonner-toast][data-styled=true] [data-icon] svg{margin-left:var(--toast-svg-margin-start);margin-right:var(--toast-svg-margin-end)}[data-sonner-toast][data-styled=true] [data-content]{display:flex;flex-direction:column;gap:2px}[data-sonner-toast][data-styled=true] [data-button]{border-radius:4px;padding-left:8px;padding-right:8px;height:24px;font-size:12px;color:var(--normal-bg);background:var(--normal-text);margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end);border:none;font-weight:500;cursor:pointer;outline:0;display:flex;align-items:center;flex-shrink:0;transition:opacity .4s,box-shadow .2s}[data-sonner-toast][data-styled=true] [data-button]:focus-visible{box-shadow:0 0 0 2px rgba(0,0,0,.4)}[data-sonner-toast][data-styled=true] [data-button]:first-of-type{margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end)}[data-sonner-toast][data-styled=true] [data-cancel]{color:var(--normal-text);background:rgba(0,0,0,.08)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast][data-styled=true] [data-cancel]{background:rgba(255,255,255,.3)}[data-sonner-toast][data-styled=true] [data-close-button]{position:absolute;left:var(--toast-close-button-start);right:var(--toast-close-button-end);top:0;height:20px;width:20px;display:flex;justify-content:center;align-items:center;padding:0;color:var(--gray12);background:var(--normal-bg);border:1px solid var(--gray4);transform:var(--toast-close-button-transform);border-radius:50%;cursor:pointer;z-index:1;transition:opacity .1s,background .2s,border-color .2s}[data-sonner-toast][data-styled=true] [data-close-button]:focus-visible{box-shadow:0 4px 12px rgba(0,0,0,.1),0 0 0 2px rgba(0,0,0,.2)}[data-sonner-toast][data-styled=true] [data-disabled=true]{cursor:not-allowed}[data-sonner-toast][data-styled=true]:hover [data-close-button]:hover{background:var(--gray2);border-color:var(--gray5)}[data-sonner-toast][data-swiping=true]::before{content:'';position:absolute;left:-100%;right:-100%;height:100%;z-index:-1}[data-sonner-toast][data-y-position=top][data-swiping=true]::before{bottom:50%;transform:scaleY(3) translateY(50%)}[data-sonner-toast][data-y-position=bottom][data-swiping=true]::before{top:50%;transform:scaleY(3) translateY(-50%)}[data-sonner-toast][data-swiping=false][data-removed=true]::before{content:'';position:absolute;inset:0;transform:scaleY(2)}[data-sonner-toast][data-expanded=true]::after{content:'';position:absolute;left:0;height:calc(var(--gap) + 1px);bottom:100%;width:100%}[data-sonner-toast][data-mounted=true]{--y:translateY(0);opacity:1}[data-sonner-toast][data-expanded=false][data-front=false]{--scale:var(--toasts-before) * 0.05 + 1;--y:translateY(calc(var(--lift-amount) * var(--toasts-before))) scale(calc(-1 * var(--scale)));height:var(--front-toast-height)}[data-sonner-toast]>*{transition:opacity .4s}[data-sonner-toast][data-x-position=right]{right:0}[data-sonner-toast][data-x-position=left]{left:0}[data-sonner-toast][data-expanded=false][data-front=false][data-styled=true]>*{opacity:0}[data-sonner-toast][data-visible=false]{opacity:0;pointer-events:none}[data-sonner-toast][data-mounted=true][data-expanded=true]{--y:translateY(calc(var(--lift) * var(--offset)));height:var(--initial-height)}[data-sonner-toast][data-removed=true][data-front=true][data-swipe-out=false]{--y:translateY(calc(var(--lift) * -100%));opacity:0}[data-sonner-toast][data-removed=true][data-front=false][data-swipe-out=false][data-expanded=true]{--y:translateY(calc(var(--lift) * var(--offset) + var(--lift) * -100%));opacity:0}[data-sonner-toast][data-removed=true][data-front=false][data-swipe-out=false][data-expanded=false]{--y:translateY(40%);opacity:0;transition:transform .5s,opacity .2s}[data-sonner-toast][data-removed=true][data-front=false]::before{height:calc(var(--initial-height) + 20%)}[data-sonner-toast][data-swiping=true]{transform:var(--y) translateY(var(--swipe-amount-y,0)) translateX(var(--swipe-amount-x,0));transition:none}[data-sonner-toast][data-swiped=true]{user-select:none}[data-sonner-toast][data-swipe-out=true][data-y-position=bottom],[data-sonner-toast][data-swipe-out=true][data-y-position=top]{animation-duration:.2s;animation-timing-function:ease-out;animation-fill-mode:forwards}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=left]{animation-name:swipe-out-left}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=right]{animation-name:swipe-out-right}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=up]{animation-name:swipe-out-up}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=down]{animation-name:swipe-out-down}@keyframes swipe-out-left{from{transform:var(--y) translateX(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translateX(calc(var(--swipe-amount-x) - 100%));opacity:0}}@keyframes swipe-out-right{from{transform:var(--y) translateX(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translateX(calc(var(--swipe-amount-x) + 100%));opacity:0}}@keyframes swipe-out-up{from{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) - 100%));opacity:0}}@keyframes swipe-out-down{from{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) + 100%));opacity:0}}@media (max-width:600px){[data-sonner-toaster]{position:fixed;right:var(--mobile-offset-right);left:var(--mobile-offset-left);width:100%}[data-sonner-toaster][dir=rtl]{left:calc(var(--mobile-offset-left) * -1)}[data-sonner-toaster] [data-sonner-toast]{left:0;right:0;width:calc(100% - var(--mobile-offset-left) * 2)}[data-sonner-toaster][data-x-position=left]{left:var(--mobile-offset-left)}[data-sonner-toaster][data-y-position=bottom]{bottom:var(--mobile-offset-bottom)}[data-sonner-toaster][data-y-position=top]{top:var(--mobile-offset-top)}[data-sonner-toaster][data-x-position=center]{left:var(--mobile-offset-left);right:var(--mobile-offset-right);transform:none}}[data-sonner-toaster][data-sonner-theme=light]{--normal-bg:#fff;--normal-border:var(--gray4);--normal-text:var(--gray12);--success-bg:hsl(143, 85%, 96%);--success-border:hsl(145, 92%, 87%);--success-text:hsl(140, 100%, 27%);--info-bg:hsl(208, 100%, 97%);--info-border:hsl(221, 91%, 93%);--info-text:hsl(210, 92%, 45%);--warning-bg:hsl(49, 100%, 97%);--warning-border:hsl(49, 91%, 84%);--warning-text:hsl(31, 92%, 45%);--error-bg:hsl(359, 100%, 97%);--error-border:hsl(359, 100%, 94%);--error-text:hsl(360, 100%, 45%)}[data-sonner-toaster][data-sonner-theme=light] [data-sonner-toast][data-invert=true]{--normal-bg:#000;--normal-border:hsl(0, 0%, 20%);--normal-text:var(--gray1)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast][data-invert=true]{--normal-bg:#fff;--normal-border:var(--gray3);--normal-text:var(--gray12)}[data-sonner-toaster][data-sonner-theme=dark]{--normal-bg:#000;--normal-bg-hover:hsl(0, 0%, 12%);--normal-border:hsl(0, 0%, 20%);--normal-border-hover:hsl(0, 0%, 25%);--normal-text:var(--gray1);--success-bg:hsl(150, 100%, 6%);--success-border:hsl(147, 100%, 12%);--success-text:hsl(150, 86%, 65%);--info-bg:hsl(215, 100%, 6%);--info-border:hsl(223, 43%, 17%);--info-text:hsl(216, 87%, 65%);--warning-bg:hsl(64, 100%, 6%);--warning-border:hsl(60, 100%, 9%);--warning-text:hsl(46, 87%, 65%);--error-bg:hsl(358, 76%, 10%);--error-border:hsl(357, 89%, 16%);--error-text:hsl(358, 100%, 81%)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast] [data-close-button]{background:var(--normal-bg);border-color:var(--normal-border);color:var(--normal-text)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast] [data-close-button]:hover{background:var(--normal-bg-hover);border-color:var(--normal-border-hover)}[data-rich-colors=true][data-sonner-toast][data-type=success]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true][data-sonner-toast][data-type=success] [data-close-button]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true][data-sonner-toast][data-type=info]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true][data-sonner-toast][data-type=info] [data-close-button]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true][data-sonner-toast][data-type=warning]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true][data-sonner-toast][data-type=warning] [data-close-button]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true][data-sonner-toast][data-type=error]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}[data-rich-colors=true][data-sonner-toast][data-type=error] [data-close-button]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}.sonner-loading-wrapper{--size:16px;height:var(--size);width:var(--size);position:absolute;inset:0;z-index:10}.sonner-loading-wrapper[data-visible=false]{transform-origin:center;animation:sonner-fade-out .2s ease forwards}.sonner-spinner{position:relative;top:50%;left:50%;height:var(--size);width:var(--size)}.sonner-loading-bar{animation:sonner-spin 1.2s linear infinite;background:var(--gray11);border-radius:6px;height:8%;left:-10%;position:absolute;top:-3.9%;width:24%}.sonner-loading-bar:first-child{animation-delay:-1.2s;transform:rotate(.0001deg) translate(146%)}.sonner-loading-bar:nth-child(2){animation-delay:-1.1s;transform:rotate(30deg) translate(146%)}.sonner-loading-bar:nth-child(3){animation-delay:-1s;transform:rotate(60deg) translate(146%)}.sonner-loading-bar:nth-child(4){animation-delay:-.9s;transform:rotate(90deg) translate(146%)}.sonner-loading-bar:nth-child(5){animation-delay:-.8s;transform:rotate(120deg) translate(146%)}.sonner-loading-bar:nth-child(6){animation-delay:-.7s;transform:rotate(150deg) translate(146%)}.sonner-loading-bar:nth-child(7){animation-delay:-.6s;transform:rotate(180deg) translate(146%)}.sonner-loading-bar:nth-child(8){animation-delay:-.5s;transform:rotate(210deg) translate(146%)}.sonner-loading-bar:nth-child(9){animation-delay:-.4s;transform:rotate(240deg) translate(146%)}.sonner-loading-bar:nth-child(10){animation-delay:-.3s;transform:rotate(270deg) translate(146%)}.sonner-loading-bar:nth-child(11){animation-delay:-.2s;transform:rotate(300deg) translate(146%)}.sonner-loading-bar:nth-child(12){animation-delay:-.1s;transform:rotate(330deg) translate(146%)}@keyframes sonner-fade-in{0%{opacity:0;transform:scale(.8)}100%{opacity:1;transform:scale(1)}}@keyframes sonner-fade-out{0%{opacity:1;transform:scale(1)}100%{opacity:0;transform:scale(.8)}}@keyframes sonner-spin{0%{opacity:1}100%{opacity:.15}}@media (prefers-reduced-motion){.sonner-loading-bar,[data-sonner-toast],[data-sonner-toast]>*{transition:none!important;animation:none!important}}.sonner-loader{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);transform-origin:center;transition:opacity .2s,transform .2s}.sonner-loader[data-visible=false]{opacity:0;transform:scale(.8) translate(-50%,-50%)}");
function isAction(j) {
return j.label !== void 0;
}
var VISIBLE_TOASTS_AMOUNT = 3, VIEWPORT_OFFSET = "24px", MOBILE_VIEWPORT_OFFSET = "16px", TOAST_LIFETIME = 4e3, TOAST_WIDTH = 356, GAP = 14, SWIPE_THRESHOLD = 45, TIME_BEFORE_UNMOUNT = 200;
function cn$1(...j) {
return j.filter(Boolean).join(" ");
}
function getDefaultSwipeDirections(j) {
let [I, q] = j.split("-"), Q = [];
return I && Q.push(I), q && Q.push(q), Q;
}
var Toast = (j) => {
let { invert: I, toast: q, unstyled: Q, interacting: p_, setHeights: m_, visibleToasts: h_, heights: g_, index: __, toasts: v_, expanded: y_, removeToast: b_, defaultRichColors: x_, closeButton: S_, style: C_, cancelButtonStyle: w_, actionButtonStyle: T_, className: E_ = "", descriptionClassName: D_ = "", duration: O_, position: k_, gap: A_, expandByDefault: j_, classNames: M_, icons: N_, closeButtonAriaLabel: P_ = "Close toast" } = j, [F_, I_] = ke.useState(null), [L_, R_] = ke.useState(null), [z_, B_] = ke.useState(!1), [V_, H_] = ke.useState(!1), [U_, W_] = ke.useState(!1), [G_, K_] = ke.useState(!1), [q_, J_] = ke.useState(!1), [Y_, X_] = ke.useState(0), [Z_, Q_] = ke.useState(0), $_ = ke.useRef(q.duration || O_ || TOAST_LIFETIME), ev = ke.useRef(null), tv = ke.useRef(null), nv = __ === 0, rv = __ + 1 <= h_, av = q.type, ov = q.dismissible !== !1, sv = q.className || "", cv = q.descriptionClassName || "", lv = ke.useMemo(() => g_.findIndex((j) => j.toastId === q.id) || 0, [g_, q.id]), uv = ke.useMemo(() => q.closeButton ?? S_, [q.closeButton, S_]), dv = ke.useMemo(() => q.duration || O_ || TOAST_LIFETIME, [q.duration, O_]), fv = ke.useRef(0), pv = ke.useRef(0), mv = ke.useRef(0), hv = ke.useRef(null), [gv, _v] = k_.split("-"), vv = ke.useMemo(() => g_.reduce((j, I, q) => q >= lv ? j : j + I.height, 0), [g_, lv]), yv = useIsDocumentHidden(), bv = q.invert || I, xv = av === "loading";
pv.current = ke.useMemo(() => lv * A_ + vv, [lv, vv]), ke.useEffect(() => {
$_.current = dv;
}, [dv]), ke.useEffect(() => {
B_(!0);
}, []), ke.useEffect(() => {
let j = tv.current;
if (j) {
let I = j.getBoundingClientRect().height;
return Q_(I), m_((j) => [{
toastId: q.id,
height: I,
position: q.position
}, ...j]), () => m_((j) => j.filter((j) => j.toastId !== q.id));
}
}, [m_, q.id]), ke.useLayoutEffect(() => {
if (!z_) return;
let j = tv.current, I = j.style.height;
j.style.height = "auto";
let Q = j.getBoundingClientRect().height;
j.style.height = I, Q_(Q), m_((j) => j.find((j) => j.toastId === q.id) ? j.map((j) => j.toastId === q.id ? {
...j,
height: Q
} : j) : [{
toastId: q.id,
height: Q,
position: q.position
}, ...j]);
}, [
z_,
q.title,
q.description,
m_,
q.id,
q.jsx,
q.action,
q.cancel
]);
let Sv = ke.useCallback(() => {
H_(!0), X_(pv.current), m_((j) => j.filter((j) => j.toastId !== q.id)), setTimeout(() => {
b_(q);
}, TIME_BEFORE_UNMOUNT);
}, [
q,
b_,
m_,
pv
]);
ke.useEffect(() => {
if (q.promise && av === "loading" || q.duration === Infinity || q.type === "loading") return;
let j;
return y_ || p_ || yv ? (() => {
if (mv.current < fv.current) {
let j = (/* @__PURE__ */ new Date()).getTime() - fv.current;
$_.current -= j;
}
mv.current = (/* @__PURE__ */ new Date()).getTime();
})() : $_.current !== Infinity && (fv.current = (/* @__PURE__ */ new Date()).getTime(), j = setTimeout(() => {
q.onAutoClose == null || q.onAutoClose.call(q, q), Sv();
}, $_.current)), () => clearTimeout(j);
}, [
y_,
p_,
q,
av,
yv,
Sv
]), ke.useEffect(() => {
q.delete && (Sv(), q.onDismiss == null || q.onDismiss.call(q, q));
}, [Sv, q.delete]);
function Cv() {
return N_?.loading ? /* @__PURE__ */ ke.createElement("div", {
className: cn$1(M_?.loader, q?.classNames?.loader, "sonner-loader"),
"data-visible": av === "loading"
}, N_.loading) : /* @__PURE__ */ ke.createElement(Loader, {
className: cn$1(M_?.loader, q?.classNames?.loader),
visible: av === "loading"
});
}
let wv = q.icon || N_?.[av] || getAsset(av);
return /* @__PURE__ */ ke.createElement("li", {
tabIndex: 0,
ref: tv,
className: cn$1(E_, sv, M_?.toast, q?.classNames?.toast, M_?.default, M_?.[av], q?.classNames?.[av]),
"data-sonner-toast": "",
"data-rich-colors": q.richColors ?? x_,
"data-styled": !(q.jsx || q.unstyled || Q),
"data-mounted": z_,
"data-promise": !!q.promise,
"data-swiped": q_,
"data-removed": V_,
"data-visible": rv,
"data-y-position": gv,
"data-x-position": _v,
"data-index": __,
"data-front": nv,
"data-swiping": U_,
"data-dismissible": ov,
"data-type": av,
"data-invert": bv,
"data-swipe-out": G_,
"data-swipe-direction": L_,
"data-expanded": !!(y_ || j_ && z_),
"data-testid": q.testId,
style: {
"--index": __,
"--toasts-before": __,
"--z-index": v_.length - __,
"--offset": `${V_ ? Y_ : pv.current}px`,
"--initial-height": j_ ? "auto" : `${Z_}px`,
...C_,
...q.style
},
onDragEnd: () => {
W_(!1), I_(null), hv.current = null;
},
onPointerDown: (j) => {
j.button !== 2 && (xv || !ov || (ev.current = /* @__PURE__ */ new Date(), X_(pv.current), j.target.setPointerCapture(j.pointerId), j.target.tagName !== "BUTTON" && (W_(!0), hv.current = {
x: j.clientX,
y: j.clientY
})));
},
onPointerUp: () => {
if (G_ || !ov) return;
hv.current = null;
let j = Number(tv.current?.style.getPropertyValue("--swipe-amount-x").replace("px", "") || 0), I = Number(tv.current?.style.getPropertyValue("--swipe-amount-y").replace("px", "") || 0), Q = (/* @__PURE__ */ new Date()).getTime() - ev.current?.getTime(), p_ = F_ === "x" ? j : I, m_ = Math.abs(p_) / Q;
if (Math.abs(p_) >= SWIPE_THRESHOLD || m_ > .11) {
X_(pv.current), q.onDismiss == null || q.onDismiss.call(q, q), R_(F_ === "x" ? j > 0 ? "right" : "left" : I > 0 ? "down" : "up"), Sv(), K_(!0);
return;
} else {
var h_, g_;
(h_ = tv.current) == null || h_.style.setProperty("--swipe-amount-x", "0px"), (g_ = tv.current) == null || g_.style.setProperty("--swipe-amount-y", "0px");
}
J_(!1), W_(!1), I_(null);
},
onPointerMove: (I) => {
var q, Q;
if (!hv.current || !ov || window.getSelection()?.toString().length > 0) return;
let p_ = I.clientY - hv.current.y, m_ = I.clientX - hv.current.x, h_ = j.swipeDirections ?? getDefaultSwipeDirections(k_);
!F_ && (Math.abs(m_) > 1 || Math.abs(p_) > 1) && I_(Math.abs(m_) > Math.abs(p_) ? "x" : "y");
let g_ = {
x: 0,
y: 0
}, __ = (j) => 1 / (1.5 + Math.abs(j) / 20);
if (F_ === "y") {
if (h_.includes("top") || h_.includes("bottom")) if (h_.includes("top") && p_ < 0 || h_.includes("bottom") && p_ > 0) g_.y = p_;
else {
let j = p_ * __(p_);
g_.y = Math.abs(j) < Math.abs(p_) ? j : p_;
}
} else if (F_ === "x" && (h_.includes("left") || h_.includes("right"))) if (h_.includes("left") && m_ < 0 || h_.includes("right") && m_ > 0) g_.x = m_;
else {
let j = m_ * __(m_);
g_.x = Math.abs(j) < Math.abs(m_) ? j : m_;
}
(Math.abs(g_.x) > 0 || Math.abs(g_.y) > 0) && J_(!0), (q = tv.current) == null || q.style.setProperty("--swipe-amount-x", `${g_.x}px`), (Q = tv.current) == null || Q.style.setProperty("--swipe-amount-y", `${g_.y}px`);
}
}, uv && !q.jsx && av !== "loading" ? /* @__PURE__ */ ke.createElement("button", {
"aria-label": P_,
"data-disabled": xv,
"data-close-button": !0,
onClick: xv || !ov ? () => {} : () => {
Sv(), q.onDismiss == null || q.onDismiss.call(q, q);
},
className: cn$1(M_?.closeButton, q?.classNames?.closeButton)
}, N_?.close ?? CloseIcon) : null, (av || q.icon || q.promise) && q.icon !== null && (N_?.[av] !== null || q.icon) ? /* @__PURE__ */ ke.createElement("div", {
"data-icon": "",
className: cn$1(M_?.icon, q?.classNames?.icon)
}, q.promise || q.type === "loading" && !q.icon ? q.icon || Cv() : null, q.type === "loading" ? null : wv) : null, /* @__PURE__ */ ke.createElement("div", {
"data-content": "",
className: cn$1(M_?.content, q?.classNames?.content)
}, /* @__PURE__ */ ke.createElement("div", {
"data-title": "",
className: cn$1(M_?.title, q?.classNames?.title)
}, q.jsx ? q.jsx : typeof q.title == "function" ? q.title() : q.title), q.description ? /* @__PURE__ */ ke.createElement("div", {
"data-description": "",
className: cn$1(D_, cv, M_?.description, q?.classNames?.description)
}, typeof q.description == "function" ? q.description() : q.description) : null), /* @__PURE__ */ ke.isValidElement(q.cancel) ? q.cancel : q.cancel && isAction(q.cancel) ? /* @__PURE__ */ ke.createElement("button", {
"data-button": !0,
"data-cancel": !0,
style: q.cancelButtonStyle || w_,
onClick: (j) => {
isAction(q.cancel) && ov && (q.cancel.onClick == null || q.cancel.onClick.call(q.cancel, j), Sv());
},
className: cn$1(M_?.cancelButton, q?.classNames?.cancelButton)
}, q.cancel.label) : null, /* @__PURE__ */ ke.isValidElement(q.action) ? q.action : q.action && isAction(q.action) ? /* @__PURE__ */ ke.createElement("button", {
"data-button": !0,
"data-action": !0,
style: q.actionButtonStyle || T_,
onClick: (j) => {
isAction(q.action) && (q.action.onClick == null || q.action.onClick.call(q.action, j), !j.defaultPrevented && Sv());
},
className: cn$1(M_?.actionButton, q?.classNames?.actionButton)
}, q.action.label) : null);
};
function getDocumentDirection() {
if (typeof window > "u" || typeof document > "u") return "ltr";
let j = document.documentElement.getAttribute("dir");
return j === "auto" || !j ? window.getComputedStyle(document.documentElement).direction : j;
}
function assignOffset(j, I) {
let q = {};
return [j, I].forEach((j, I) => {
let Q = I === 1, p_ = Q ? "--mobile-offset" : "--offset", m_ = Q ? MOBILE_VIEWPORT_OFFSET : VIEWPORT_OFFSET;
function h_(j) {
[
"top",
"right",
"bottom",
"left"
].forEach((I) => {
q[`${p_}-${I}`] = typeof j == "number" ? `${j}px` : j;
});
}
typeof j == "number" || typeof j == "string" ? h_(j) : typeof j == "object" ? [
"top",
"right",
"bottom",
"left"
].forEach((I) => {
j[I] === void 0 ? q[`${p_}-${I}`] = m_ : q[`${p_}-${I}`] = typeof j[I] == "number" ? `${j[I]}px` : j[I];
}) : h_(m_);
}), q;
}
var Toaster$1 = /* @__PURE__ */ ke.forwardRef(function(j, I) {
let { id: q, invert: Q, position: p_ = "bottom-right", hotkey: m_ = ["altKey", "KeyT"], expand: h_, closeButton: g_, className: __, offset: v_, mobileOffset: y_, theme: b_ = "light", richColors: x_, duration: S_, style: C_, visibleToasts: w_ = VISIBLE_TOASTS_AMOUNT, toastOptions: T_, dir: E_ = getDocumentDirection(), gap: D_ = GAP, icons: O_, containerAriaLabel: k_ = "Notifications" } = j, [A_, j_] = ke.useState([]), M_ = ke.useMemo(() => q ? A_.filter((j) => j.toasterId === q) : A_.filter((j) => !j.toasterId), [A_, q]), N_ = ke.useMemo(() => Array.from(new Set([p_].concat(M_.filter((j) => j.position).map((j) => j.position)))), [M_, p_]), [P_, F_] = ke.useState([]), [I_, L_] = ke.useState(!1), [R_, z_] = ke.useState(!1), [B_, V_] = ke.useState(b_ === "system" ? typeof window < "u" && window.matchMedia && window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light" : b_), H_ = ke.useRef(null), U_ = m_.join("+").replace(/Key/g, "").replace(/Digit/g, ""), W_ = ke.useRef(null), G_ = ke.useRef(!1), K_ = ke.useCallback((j) => {
j_((I) => (I.find((I) => I.id === j.id)?.delete || ToastState.dismiss(j.id), I.filter(({ id: I }) => I !== j.id)));
}, []);
return ke.useEffect(() => ToastState.subscribe((j) => {
if (j.dismiss) {
requestAnimationFrame(() => {
j_((I) => I.map((I) => I.id === j.id ? {
...I,
delete: !0
} : I));
});
return;
}
setTimeout(() => {
ReactDOM$1.flushSync(() => {
j_((I) => {
let q = I.findIndex((I) => I.id === j.id);
return q === -1 ? [j, ...I] : [
...I.slice(0, q),
{
...I[q],
...j
},
...I.slice(q + 1)
];
});
});
});
}), [A_]), ke.useEffect(() => {
if (b_ !== "system") {
V_(b_);
return;
}
if (b_ === "system" && (window.matchMedia && window.matchMedia("(prefers-color-scheme: dark)").matches ? V_("dark") : V_("light")), typeof window > "u") return;
let j = window.matchMedia("(prefers-color-scheme: dark)");
try {
j.addEventListener("change", ({ matches: j }) => {
V_(j ? "dark" : "light");
});
} catch {
j.addListener(({ matches: j }) => {
try {
V_(j ? "dark" : "light");
} catch (j) {
console.error(j);
}
});
}
}, [b_]), ke.useEffect(() => {
A_.length <= 1 && L_(!1);
}, [A_]), ke.useEffect(() => {
let j = (j) => {
if (m_.every((I) => j[I] || j.code === I)) {
var I;
L_(!0), (I = H_.current) == null || I.focus();
}
j.code === "Escape" && (document.activeElement === H_.current || H_.current?.contains(document.activeElement)) && L_(!1);
};
return document.addEventListener("keydown", j), () => document.removeEventListener("keydown", j);
}, [m_]), ke.useEffect(() => {
if (H_.current) return () => {
W_.current && (W_.current.focus({ preventScroll: !0 }), W_.current = null, G_.current = !1);
};
}, [H_.current]), /* @__PURE__ */ ke.createElement("section", {
ref: I,
"aria-label": `${k_} ${U_}`,
tabIndex: -1,
"aria-live": "polite",
"aria-relevant": "additions text",
"aria-atomic": "false",
suppressHydrationWarning: !0
}, N_.map((I, q) => {
let [p_, m_] = I.split("-");
return M_.length ? /* @__PURE__ */ ke.createElement("ol", {
key: I,
dir: E_ === "auto" ? getDocumentDirection() : E_,
tabIndex: -1,
ref: H_,
className: __,
"data-sonner-toaster": !0,
"data-sonner-theme": B_,
"data-y-position": p_,
"data-x-position": m_,
style: {
"--front-toast-height": `${P_[0]?.height || 0}px`,
"--width": `${TOAST_WIDTH}px`,
"--gap": `${D_}px`,
...C_,
...assignOffset(v_, y_)
},
onBlur: (j) => {
G_.current && !j.currentTarget.contains(j.relatedTarget) && (G_.current = !1, W_.current &&= (W_.current.focus({ preventScroll: !0 }), null));
},
onFocus: (j) => {
j.target instanceof HTMLElement && j.target.dataset.dismissible === "false" || G_.current || (G_.current = !0, W_.current = j.relatedTarget);
},
onMouseEnter: () => L_(!0),
onMouseMove: () => L_(!0),
onMouseLeave: () => {
R_ || L_(!1);
},
onDragEnd: () => L_(!1),
onPointerDown: (j) => {
j.target instanceof HTMLElement && j.target.dataset.dismissible === "false" || z_(!0);
},
onPointerUp: () => z_(!1)
}, M_.filter((j) => !j.position && q === 0 || j.position === I).map((q, p_) => /* @__PURE__ */ ke.createElement(Toast, {
key: q.id,
icons: O_,
index: p_,
toast: q,
defaultRichColors: x_,
duration: T_?.duration ?? S_,
className: T_?.className,
descriptionClassName: T_?.descriptionClassName,
invert: Q,
visibleToasts: w_,
closeButton: T_?.closeButton ?? g_,
interacting: R_,
position: I,
style: T_?.style,
unstyled: T_?.unstyled,
classNames: T_?.classNames,
cancelButtonStyle: T_?.cancelButtonStyle,
actionButtonStyle: T_?.actionButtonStyle,
closeButtonAriaLabel: T_?.closeButtonAriaLabel,
removeToast: K_,
toasts: M_.filter((j) => j.position == q.position),
heights: P_.filter((j) => j.position == q.position),
setHeights: F_,
expandByDefault: h_,
gap: D_,
expanded: I_,
swipeDirections: j.swipeDirections
}))) : null;
}));
});
const useEndpoint = (j) => {
let [I, q] = useState(j.defaultEndpoint ?? null), [Q, p_] = useState(null), m_ = useCallback((I) => {
q(I), j.onEndpointChange?.(I);
}, [j]), h_ = useMemo(() => Q ? buildClientSchema(Q) : null, [Q]), g_ = useCallback(async () => {
if (I === j.defaultEndpoint && j.defaultSchemaIntrospection) {
p_(j.defaultSchemaIntrospection);
return;
}
if (!I) {
p_(null);
return;
}
try {
let j = await fetch(I, {
method: "POST",
body: JSON.stringify({ query: getIntrospectionQuery() }),
headers: { "Content-Type": "application/json" }
}).then((j) => j.json());
p_(j.data);
} catch {
toast.error("Failed to fetch schema"), p_(null);
return;
}
}, [I]), __ = useCallback(() => {
j.defaultEndpoint && m_(j.defaultEndpoint);
}, [j.defaultEndpoint]);
return useEffect(() => {
I && g_();
}, [I, g_]), {
endpoint: I,
setEndpoint: m_,
schema: h_,
introspection: Q,
fetchSchema: g_,
restoreDefaultEndpoint: __,
defaultEndpoint: j.defaultEndpoint ?? null
};
}, useEnv = (j) => {
let [I, q] = useState(j.defaultEnv ?? { variables: {} }), Q = useCallback((I) => {
q(I), j.onEnvChange?.(I);
}, [j]);
return {
env: I,
setEnv: Q
};
}, useHistory = (j) => {
let [I, q] = useState(j.defaultHistory ?? []), Q = useRef(I);
useEffect(() => {
Q.current = I;
}, [I]);
let p_ = useCallback((Q) => {
let p_ = {
...Q,
id: v4_default()
}, m_ = [...I, p_];
return q(m_), j.onHistoryChange?.(m_), j.onHistoryCreate?.(p_), p_;
}, [I, j]), m_ = useCallback((I, p_) => {
let m_ = Q.current.find((j) => j.id === I);
if (m_ && "responses" in m_) {
let h_ = [...m_.responses, {
createdAt: (/* @__PURE__ */ new Date()).toISOString(),
data: p_
}], g_ = {
...m_,
responses: h_
}, __ = Q.current.map((j) => j.id === I ? g_ : j);
q(__), j.onHistoryChange?.(__), j.onHistoryUpdate?.(g_);
}
}, [j]), h_ = useCallback((I) => {
let p_ = Q.current.find((j) => j.id === I), m_ = Q.current.filter((j) => j.id !== I);
q(m_), j.onHistoryChange?.(m_), p_ && j.onHistoryDelete?.(p_);
}, [j]), g_ = useCallback(() => {
let I = [...Q.current];
if (q([]), j.onHistoryChange?.([]), j.onHistoryDelete) for (let q of I) j.onHistoryDelete(q);
}, [j]), __ = useCallback((I) => {
let p_ = Q.current.filter((j) => format(new Date(j.createdAt), "dd MMM yyyy") === I), m_ = Q.current.filter((j) => format(new Date(j.createdAt), "dd MMM yyyy") !== I);
if (q(m_), j.onHistoryChange?.(m_), j.onHistoryDelete) for (let I of p_) j.onHistoryDelete(I);
}, [j]);
return {
history: I,
addHistory: p_,
addResponseToHistory: m_,
deleteHistory: h_,
deleteAllHistory: g_,
deleteHistoryByDay: __
};
};
var require_lodash = /* @__PURE__ */ __commonJSMin(((j, I) => {
(function() {
var q, Q = "4.17.23", p_ = 200, m_ = "Unsupported core-js use. Try https://npms.io/search?q=ponyfill.", h_ = "Expected a function", g_ = "Invalid `variable` option passed into `_.template`", __ = "__lodash_hash_undefined__", v_ = 500, y_ = "__lodash_placeholder__", b_ = 1, x_ = 2, S_ = 4, C_ = 1, w_ = 2, T_ = 1, E_ = 2, D_ = 4, O_ = 8, k_ = 16, A_ = 32, j_ = 64, M_ = 128, N_ = 256, P_ = 512, F_ = 30, I_ = "...", L_ = 800, R_ = 16, z_ = 1, B_ = 2, V_ = 3, H_ = Infinity, U_ = 9007199254740991, W_ = 17976931348623157e292, G_ = NaN, K_ = 4294967295, q_ = K_ - 1, J_ = K_ >>> 1, Y_ = [
["ary", M_],
["bind", T_],
["bindKey", E_],
["curry", O_],
["curryRight", k_],
["flip", P_],
["partial", A_],
["partialRight", j_],
["rearg", N_]
], X_ = "[object Arguments]", Z_ = "[object Array]", Q_ = "[object AsyncFunction]", $_ = "[object Boolean]", ev = "[object Date]", tv = "[object DOMException]", nv = "[object Error]", rv = "[object Function]", iv = "[object GeneratorFunction]", av = "[object Map]", ov = "[object Number]", sv = "[object Null]", cv = "[object Object]", lv = "[object Promise]", uv = "[object Proxy]", dv = "[object RegExp]", fv = "[object Set]", pv = "[object String]", mv = "[object Symbol]", hv = "[object Undefined]", gv = "[object WeakMap]", _v = "[object WeakSet]", vv = "[object ArrayBuffer]", yv = "[object DataView]", bv = "[object Float32Array]", xv = "[object Float64Array]", Sv = "[object Int8Array]", Cv = "[object Int16Array]", wv = "[object Int32Array]", Tv = "[object Uint8Array]", Ev = "[object Uint8ClampedArray]", Dv = "[object Uint16Array]", Ov = "[object Uint32Array]", kv = /\b__p \+= '';/g, Av = /\b(__p \+=) '' \+/g, jv = /(__e\(.*?\)|\b__t\)) \+\n'';/g, Mv = /&(?:amp|lt|gt|quot|#39);/g, Nv = /[&<>"']/g, Pv = RegExp(Mv.source), Fv = RegExp(Nv.source), Iv = /<%-([\s\S]+?)%>/g, Lv = /<%([\s\S]+?)%>/g, Rv = /<%=([\s\S]+?)%>/g, zv = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, Bv = /^\w*$/, Vv = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g, Hv = /[\\^$.*+?()[\]{}|]/g, Uv = RegExp(Hv.source), Wv = /^\s+/, Gv = /\s/, Kv = /\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/, qv = /\{\n\/\* \[wrapped with (.+)\] \*/, Jv = /,? & /, Yv = /[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g, Xv = /[()=,{}\[\]\/\s]/, Zv = /\\(\\)?/g, Qv = /\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g, $v = /\w*$/, ey = /^[-+]0x[0-9a-f]+$/i, ty = /^0b[01]+$/i, ny = /^\[object .+?Constructor\]$/, ry = /^0o[0-7]+$/i, iy = /^(?:0|[1-9]\d*)$/, ay = /[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g, oy = /($^)/, sy = /['\n\r\u2028\u2029\\]/g, cy = "\\ud800-\\udfff", ly = "\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff", uy = "\\u2700-\\u27bf", dy = "a-z\\xdf-\\xf6\\xf8-\\xff", fy = "\\xac\\xb1\\xd7\\xf7", py = "\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf", my = "\\u2000-\\u206f", hy = " \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000", gy = "A-Z\\xc0-\\xd6\\xd8-\\xde", _y = "\\ufe0e\\ufe0f", vy = fy + py + my + hy, yy = "['’]", by = "[" + cy + "]", xy = "[" + vy + "]", Sy = "[" + ly + "]", Cy = "\\d+", wy = "[" + uy + "]", Ty = "[" + dy + "]", Ey = "[^" + cy + vy + Cy + uy + dy + gy + "]", Dy = "\\ud83c[\\udffb-\\udfff]", Oy = "(?:" + Sy + "|" + Dy + ")", ky = "[^" + cy + "]", Ay = "(?:\\ud83c[\\udde6-\\uddff]){2}", jy = "[\\ud800-\\udbff][\\udc00-\\udfff]", My = "[" + gy + "]", Ny = "\\u200d", Py = "(?:" + Ty + "|" + Ey + ")", Fy = "(?:" + My + "|" + Ey + ")", Iy = "(?:" + yy + "(?:d|ll|m|re|s|t|ve))?", Ly = "(?:" + yy + "(?:D|LL|M|RE|S|T|VE))?", Ry = Oy + "?", zy = "[" + _y + "]?", By = "(?:" + Ny + "(?:" + [
ky,
Ay,
jy
].join("|") + ")" + zy + Ry + ")*", Vy = "\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])", Hy = "\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])", Uy = zy + Ry + By, Wy = "(?:" + [
wy,
Ay,
jy
].join("|") + ")" + Uy, Gy = "(?:" + [
ky + Sy + "?",
Sy,
Ay,
jy,
by
].join("|") + ")", Ky = RegExp(yy, "g"), qy = RegExp(Sy, "g"), Jy = RegExp(Dy + "(?=" + Dy + ")|" + Gy + Uy, "g"), Yy = RegExp([
My + "?" + Ty + "+" + Iy + "(?=" + [
xy,
My,
"$"
].join("|") + ")",
Fy + "+" + Ly + "(?=" + [
xy,
My + Py,
"$"
].join("|") + ")",
My + "?" + Py + "+" + Iy,
My + "+" + Ly,
Hy,
Vy,
Cy,
Wy
].join("|"), "g"), Xy = RegExp("[" + Ny + cy + ly + _y + "]"), Zy = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/, Qy = /* @__PURE__ */ "Array.Buffer.DataView.Date.Error.Float32Array.Float64Array.Function.Int8Array.Int16Array.Int32Array.Map.Math.Object.Promise.RegExp.Set.String.Symbol.TypeError.Uint8Array.Uint8ClampedArray.Uint16Array.Uint32Array.WeakMap._.clearTimeout.isFinite.parseInt.setTimeout".split("."), $y = -1, eb = {};
eb[bv] = eb[xv] = eb[Sv] = eb[Cv] = eb[wv] = eb[Tv] = eb[Ev] = eb[Dv] = eb[Ov] = !0, eb[X_] = eb[Z_] = eb[vv] = eb[$_] = eb[yv] = eb[ev] = eb[nv] = eb[rv] = eb[av] = eb[ov] = eb[cv] = eb[dv] = eb[fv] = eb[pv] = eb[gv] = !1;
var tb = {};
tb[X_] = tb[Z_] = tb[vv] = tb[yv] = tb[$_] = tb[ev] = tb[bv] = tb[xv] = tb[Sv] = tb[Cv] = tb[wv] = tb[av] = tb[ov] = tb[cv] = tb[dv] = tb[fv] = tb[pv] = tb[mv] = tb[Tv] = tb[Ev] = tb[Dv] = tb[Ov] = !0, tb[nv] = tb[rv] = tb[gv] = !1;
var nb = {
À: "A",
Á: "A",
Â: "A",
Ã: "A",
Ä: "A",
Å: "A",
à: "a",
á: "a",
â: "a",
ã: "a",
ä: "a",
å: "a",
Ç: "C",
ç: "c",
Ð: "D",
ð: "d",
È: "E",
É: "E",
Ê: "E",
Ë: "E",
è: "e",
é: "e",
ê: "e",
ë: "e",
Ì: "I",
Í: "I",
Î: "I",
Ï: "I",
ì: "i",
í: "i",
î: "i",
ï: "i",
Ñ: "N",
ñ: "n",
Ò: "O",
Ó: "O",
Ô: "O",
Õ: "O",
Ö: "O",
Ø: "O",
ò: "o",
ó: "o",
ô: "o",
õ: "o",
ö: "o",
ø: "o",
Ù: "U",
Ú: "U",
Û: "U",
Ü: "U",
ù: "u",
ú: "u",
û: "u",
ü: "u",
Ý: "Y",
ý: "y",
ÿ: "y",
Æ: "Ae",
æ: "ae",
Þ: "Th",
þ: "th",
ß: "ss",
Ā: "A",
Ă: "A",
Ą: "A",
ā: "a",
ă: "a",
ą: "a",
Ć: "C",
Ĉ: "C",
Ċ: "C",
Č: "C",
ć: "c",
ĉ: "c",
ċ: "c",
č: "c",
Ď: "D",
Đ: "D",
ď: "d",
đ: "d",
Ē: "E",
Ĕ: "E",
Ė: "E",
Ę: "E",
Ě: "E",
ē: "e",
ĕ: "e",
ė: "e",
ę: "e",
ě: "e",
Ĝ: "G",
Ğ: "G",
Ġ: "G",
Ģ: "G",
ĝ: "g",
ğ: "g",
ġ: "g",
ģ: "g",
Ĥ: "H",
Ħ: "H",
ĥ: "h",
ħ: "h",
Ĩ: "I",
Ī: "I",
Ĭ: "I",
Į: "I",
İ: "I",
ĩ: "i",
ī: "i",
ĭ: "i",
į: "i",
ı: "i",
Ĵ: "J",
ĵ: "j",
Ķ: "K",
ķ: "k",
ĸ: "k",
Ĺ: "L",
Ļ: "L",
Ľ: "L",
Ŀ: "L",
Ł: "L",
ĺ: "l",
ļ: "l",
ľ: "l",
ŀ: "l",
ł: "l",
Ń: "N",
Ņ: "N",
Ň: "N",
Ŋ: "N",
ń: "n",
ņ: "n",
ň: "n",
ŋ: "n",
Ō: "O",
Ŏ: "O",
Ő: "O",
ō: "o",
ŏ: "o",
ő: "o",
Ŕ: "R",
Ŗ: "R",
Ř: "R",
ŕ: "r",
ŗ: "r",
ř: "r",
Ś: "S",
Ŝ: "S",
Ş: "S",
Š: "S",
ś: "s",
ŝ: "s",
ş: "s",
š: "s",
Ţ: "T",
Ť: "T",
Ŧ: "T",
ţ: "t",
ť: "t",
ŧ: "t",
Ũ: "U",
Ū: "U",
Ŭ: "U",
Ů: "U",
Ű: "U",
Ų: "U",
ũ: "u",
ū: "u",
ŭ: "u",
ů: "u",
ű: "u",
ų: "u",
Ŵ: "W",
ŵ: "w",
Ŷ: "Y",
ŷ: "y",
Ÿ: "Y",
Ź: "Z",
Ż: "Z",
Ž: "Z",
ź: "z",
ż: "z",
ž: "z",
IJ: "IJ",
ij: "ij",
Œ: "Oe",
œ: "oe",
ʼn: "'n",
ſ: "s"
}, rb = {
"&": "&",
"<": "<",
">": ">",
"\"": """,
"'": "'"
}, ib = {
"&": "&",
"<": "<",
">": ">",
""": "\"",
"'": "'"
}, ab = {
"\\": "\\",
"'": "'",
"\n": "n",
"\r": "r",
"\u2028": "u2028",
"\u2029": "u2029"
}, ob = parseFloat, sb = parseInt, cb = typeof global == "object" && global && global.Object === Object && global, lb = typeof self == "object" && self && self.Object === Object && self, ub = cb || lb || Function("return this")(), db = typeof j == "object" && j && !j.nodeType && j, fb = db && typeof I == "object" && I && !I.nodeType && I, pb = fb && fb.exports === db, mb = pb && cb.process, hb = function() {
try {
return fb && fb.require && fb.require("util").types || mb && mb.binding && mb.binding("util");
} catch {}
}(), gb = hb && hb.isArrayBuffer, _b = hb && hb.isDate, vb = hb && hb.isMap, yb = hb && hb.isRegExp, bb = hb && hb.isSet, xb = hb && hb.isTypedArray;
function Sb(j, I, q) {
switch (q.length) {
case 0: return j.call(I);
case 1: return j.call(I, q[0]);
case 2: return j.call(I, q[0], q[1]);
case 3: return j.call(I, q[0], q[1], q[2]);
}
return j.apply(I, q);
}
function Cb(j, I, q, Q) {
for (var p_ = -1, m_ = j == null ? 0 : j.length; ++p_ < m_;) {
var h_ = j[p_];
I(Q, h_, q(h_), j);
}
return Q;
}
function wb(j, I) {
for (var q = -1, Q = j == null ? 0 : j.length; ++q < Q && I(j[q], q, j) !== !1;);
return j;
}
function Tb(j, I) {
for (var q = j == null ? 0 : j.length; q-- && I(j[q], q, j) !== !1;);
return j;
}
function Eb(j, I) {
for (var q = -1, Q = j == null ? 0 : j.length; ++q < Q;) if (!I(j[q], q, j)) return !1;
return !0;
}
function Db(j, I) {
for (var q = -1, Q = j == null ? 0 : j.length, p_ = 0, m_ = []; ++q < Q;) {
var h_ = j[q];
I(h_, q, j) && (m_[p_++] = h_);
}
return m_;
}
function Ob(j, I) {
return !!(j != null && j.length) && Bb(j, I, 0) > -1;
}
function kb(j, I, q) {
for (var Q = -1, p_ = j == null ? 0 : j.length; ++Q < p_;) if (q(I, j[Q])) return !0;
return !1;
}
function Ab(j, I) {
for (var q = -1, Q = j == null ? 0 : j.length, p_ = Array(Q); ++q < Q;) p_[q] = I(j[q], q, j);
return p_;
}
function jb(j, I) {
for (var q = -1, Q = I.length, p_ = j.length; ++q < Q;) j[p_ + q] = I[q];
return j;
}
function Mb(j, I, q, Q) {
var p_ = -1, m_ = j == null ? 0 : j.length;
for (Q && m_ && (q = j[++p_]); ++p_ < m_;) q = I(q, j[p_], p_, j);
return q;
}
function Nb(j, I, q, Q) {
var p_ = j == null ? 0 : j.length;
for (Q && p_ && (q = j[--p_]); p_--;) q = I(q, j[p_], p_, j);
return q;
}
function Pb(j, I) {
for (var q = -1, Q = j == null ? 0 : j.length; ++q < Q;) if (I(j[q], q, j)) return !0;
return !1;
}
var Fb = Wb("length");
function Ib(j) {
return j.split("");
}
function Lb(j) {
return j.match(Yv) || [];
}
function Rb(j, I, q) {
var Q;
return q(j, function(j, q, p_) {
if (I(j, q, p_)) return Q = q, !1;
}), Q;
}
function zb(j, I, q, Q) {
for (var p_ = j.length, m_ = q + (Q ? 1 : -1); Q ? m_-- : ++m_ < p_;) if (I(j[m_], m_, j)) return m_;
return -1;
}
function Bb(j, I, q) {
return I === I ? _x(j, I, q) : zb(j, Hb, q);
}
function Vb(j, I, q, Q) {
for (var p_ = q - 1, m_ = j.length; ++p_ < m_;) if (Q(j[p_], I)) return p_;
return -1;
}
function Hb(j) {
return j !== j;
}
function Ub(j, I) {
var q = j == null ? 0 : j.length;
return q ? Jb(j, I) / q : G_;
}
function Wb(j) {
return function(I) {
return I == null ? q : I[j];
};
}
function Gb(j) {
return function(I) {
return j == null ? q : j[I];
};
}
function Kb(j, I, q, Q, p_) {
return p_(j, function(j, p_, m_) {
q = Q ? (Q = !1, j) : I(q, j, p_, m_);
}), q;
}
function qb(j, I) {
var q = j.length;
for (j.sort(I); q--;) j[q] = j[q].value;
return j;
}
function Jb(j, I) {
for (var Q, p_ = -1, m_ = j.length; ++p_ < m_;) {
var h_ = I(j[p_]);
h_ !== q && (Q = Q === q ? h_ : Q + h_);
}
return Q;
}
function Yb(j, I) {
for (var q = -1, Q = Array(j); ++q < j;) Q[q] = I(q);
return Q;
}
function Xb(j, I) {
return Ab(I, function(I) {
return [I, j[I]];
});
}
function Zb(j) {
return j && j.slice(0, xx(j) + 1).replace(Wv, "");
}
function Qb(j) {
return function(I) {
return j(I);
};
}
function $b(j, I) {
return Ab(I, function(I) {
return j[I];
});
}
function ex(j, I) {
return j.has(I);
}
function tx(j, I) {
for (var q = -1, Q = j.length; ++q < Q && Bb(I, j[q], 0) > -1;);
return q;
}
function nx(j, I) {
for (var q = j.length; q-- && Bb(I, j[q], 0) > -1;);
return q;
}
function rx(j, I) {
for (var q = j.length, Q = 0; q--;) j[q] === I && ++Q;
return Q;
}
var ix = Gb(nb), ax = Gb(rb);
function ox(j) {
return "\\" + ab[j];
}
function sx(j, I) {
return j == null ? q : j[I];
}
function lx(j) {
return Xy.test(j);
}
function ux(j) {
return Zy.test(j);
}
function dx(j) {
for (var I, q = []; !(I = j.next()).done;) q.push(I.value);
return q;
}
function fx(j) {
var I = -1, q = Array(j.size);
return j.forEach(function(j, Q) {
q[++I] = [Q, j];
}), q;
}
function px(j, I) {
return function(q) {
return j(I(q));
};
}
function mx(j, I) {
for (var q = -1, Q = j.length, p_ = 0, m_ = []; ++q < Q;) {
var h_ = j[q];
(h_ === I || h_ === y_) && (j[q] = y_, m_[p_++] = q);
}
return m_;
}
function hx(j) {
var I = -1, q = Array(j.size);
return j.forEach(function(j) {
q[++I] = j;
}), q;
}
function gx(j) {
var I = -1, q = Array(j.size);
return j.forEach(function(j) {
q[++I] = [j, j];
}), q;
}
function _x(j, I, q) {
for (var Q = q - 1, p_ = j.length; ++Q < p_;) if (j[Q] === I) return Q;
return -1;
}
function vx(j, I, q) {
for (var Q = q + 1; Q--;) if (j[Q] === I) return Q;
return Q;
}
function yx(j) {
return lx(j) ? Cx(j) : Fb(j);
}
function bx(j) {
return lx(j) ? wx(j) : Ib(j);
}
function xx(j) {
for (var I = j.length; I-- && Gv.test(j.charAt(I)););
return I;
}
var Sx = Gb(ib);
function Cx(j) {
for (var I = Jy.lastIndex = 0; Jy.test(j);) ++I;
return I;
}
function wx(j) {
return j.match(Jy) || [];
}
function Tx(j) {
return j.match(Yy) || [];
}
var Ex = (function j(I) {
I = I == null ? ub : Ex.defaults(ub.Object(), I, Ex.pick(ub, Qy));
var Gv = I.Array, Yv = I.Date, cy = I.Error, ly = I.Function, uy = I.Math, dy = I.Object, fy = I.RegExp, py = I.String, my = I.TypeError, hy = Gv.prototype, gy = ly.prototype, _y = dy.prototype, vy = I["__core-js_shared__"], yy = gy.toString, by = _y.hasOwnProperty, xy = 0, Sy = function() {
var j = /[^.]+$/.exec(vy && vy.keys && vy.keys.IE_PROTO || "");
return j ? "Symbol(src)_1." + j : "";
}(), Cy = _y.toString, wy = yy.call(dy), Ty = ub._, Ey = fy("^" + yy.call(by).replace(Hv, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$"), Dy = pb ? I.Buffer : q, Oy = I.Symbol, ky = I.Uint8Array, Ay = Dy ? Dy.allocUnsafe : q, jy = px(dy.getPrototypeOf, dy), My = dy.create, Ny = _y.propertyIsEnumerable, Py = hy.splice, Fy = Oy ? Oy.isConcatSpreadable : q, Iy = Oy ? Oy.iterator : q, Ly = Oy ? Oy.toStringTag : q, Ry = function() {
try {
var j = tT(dy, "defineProperty");
return j({}, "", {}), j;
} catch {}
}(), zy = I.clearTimeout !== ub.clearTimeout && I.clearTimeout, By = Yv && Yv.now !== ub.Date.now && Yv.now, Vy = I.setTimeout !== ub.setTimeout && I.setTimeout, Hy = uy.ceil, Uy = uy.floor, Wy = dy.getOwnPropertySymbols, Gy = Dy ? Dy.isBuffer : q, Jy = I.isFinite, Yy = hy.join, Xy = px(dy.keys, dy), Zy = uy.max, nb = uy.min, rb = Yv.now, ib = I.parseInt, ab = uy.random, cb = hy.reverse, lb = tT(I, "DataView"), db = tT(I, "Map"), fb = tT(I, "Promise"), mb = tT(I, "Set"), hb = tT(I, "WeakMap"), Fb = tT(dy, "create"), Ib = hb && new hb(), Gb = {}, _x = BT(lb), Cx = BT(db), wx = BT(fb), Dx = BT(mb), Ox = BT(hb), kx = Oy ? Oy.prototype : q, Ax = kx ? kx.valueOf : q, jx = kx ? kx.toString : q;
function Mx(j) {
if (NO(j) && !gO(j) && !(j instanceof Ix)) {
if (j instanceof Fx) return j;
if (by.call(j, "__wrapped__")) return HT(j);
}
return new Fx(j);
}
var Nx = function() {
function j() {}
return function(I) {
if (!MO(I)) return {};
if (My) return My(I);
j.prototype = I;
var Q = new j();
return j.prototype = q, Q;
};
}();
function Px() {}
function Fx(j, I) {
this.__wrapped__ = j, this.__actions__ = [], this.__chain__ = !!I, this.__index__ = 0, this.__values__ = q;
}
Mx.templateSettings = {
escape: Iv,
evaluate: Lv,
interpolate: Rv,
variable: "",
imports: { _: Mx }
}, Mx.prototype = Px.prototype, Mx.prototype.constructor = Mx, Fx.prototype = Nx(Px.prototype), Fx.prototype.constructor = Fx;
function Ix(j) {
this.__wrapped__ = j, this.__actions__ = [], this.__dir__ = 1, this.__filtered__ = !1, this.__iteratees__ = [], this.__takeCount__ = K_, this.__views__ = [];
}
function Lx() {
var j = new Ix(this.__wrapped__);
return j.__actions__ = fw(this.__actions__), j.__dir__ = this.__dir__, j.__filtered__ = this.__filtered__, j.__iteratees__ = fw(this.__iteratees__), j.__takeCount__ = this.__takeCount__, j.__views__ = fw(this.__views__), j;
}
function Rx() {
if (this.__filtered__) {
var j = new Ix(this);
j.__dir__ = -1, j.__filtered__ = !0;
} else j = this.clone(), j.__dir__ *= -1;
return j;
}
function zx() {
var j = this.__wrapped__.value(), I = this.__dir__, q = gO(j), Q = I < 0, p_ = q ? j.length : 0, m_ = oT(0, p_, this.__views__), h_ = m_.start, g_ = m_.end, __ = g_ - h_, v_ = Q ? g_ : h_ - 1, y_ = this.__iteratees__, b_ = y_.length, x_ = 0, S_ = nb(__, this.__takeCount__);
if (!q || !Q && p_ == __ && S_ == __) return qC(j, this.__actions__);
var C_ = [];
outer: for (; __-- && x_ < S_;) {
v_ += I;
for (var w_ = -1, T_ = j[v_]; ++w_ < b_;) {
var E_ = y_[w_], D_ = E_.iteratee, O_ = E_.type, k_ = D_(T_);
if (O_ == B_) T_ = k_;
else if (!k_) {
if (O_ == z_) continue outer;
break outer;
}
}
C_[x_++] = T_;
}
return C_;
}
Ix.prototype = Nx(Px.prototype), Ix.prototype.constructor = Ix;
function Bx(j) {
var I = -1, q = j == null ? 0 : j.length;
for (this.clear(); ++I < q;) {
var Q = j[I];
this.set(Q[0], Q[1]);
}
}
function Vx() {
this.__data__ = Fb ? Fb(null) : {}, this.size = 0;
}
function Hx(j) {
var I = this.has(j) && delete this.__data__[j];
return this.size -= I ? 1 : 0, I;
}
function Ux(j) {
var I = this.__data__;
if (Fb) {
var Q = I[j];
return Q === __ ? q : Q;
}
return by.call(I, j) ? I[j] : q;
}
function Wx(j) {
var I = this.__data__;
return Fb ? I[j] !== q : by.call(I, j);
}
function Gx(j, I) {
var Q = this.__data__;
return this.size += this.has(j) ? 0 : 1, Q[j] = Fb && I === q ? __ : I, this;
}
Bx.prototype.clear = Vx, Bx.prototype.delete = Hx, Bx.prototype.get = Ux, Bx.prototype.has = Wx, Bx.prototype.set = Gx;
function Kx(j) {
var I = -1, q = j == null ? 0 : j.length;
for (this.clear(); ++I < q;) {
var Q = j[I];
this.set(Q[0], Q[1]);
}
}
function qx() {
this.__data__ = [], this.size = 0;
}
function Jx(j) {
var I = this.__data__, q = yS(I, j);
if (q < 0) return !1;
var Q = I.length - 1;
return q == Q ? I.pop() : Py.call(I, q, 1), --this.size, !0;
}
function Yx(j) {
var I = this.__data__, Q = yS(I, j);
return Q < 0 ? q : I[Q][1];
}
function Xx(j) {
return yS(this.__data__, j) > -1;
}
function Zx(j, I) {
var q = this.__data__, Q = yS(q, j);
return Q < 0 ? (++this.size, q.push([j, I])) : q[Q][1] = I, this;
}
Kx.prototype.clear = qx, Kx.prototype.delete = Jx, Kx.prototype.get = Yx, Kx.prototype.has = Xx, Kx.prototype.set = Zx;
function Qx(j) {
var I = -1, q = j == null ? 0 : j.length;
for (this.clear(); ++I < q;) {
var Q = j[I];
this.set(Q[0], Q[1]);
}
}
function $x() {
this.size = 0, this.__data__ = {
hash: new Bx(),
map: new (db || Kx)(),
string: new Bx()
};
}
function eS(j) {
var I = $w(this, j).delete(j);
return this.size -= I ? 1 : 0, I;
}
function tS(j) {
return $w(this, j).get(j);
}
function nS(j) {
return $w(this, j).has(j);
}
function rS(j, I) {
var q = $w(this, j), Q = q.size;
return q.set(j, I), this.size += q.size == Q ? 0 : 1, this;
}
Qx.prototype.clear = $x, Qx.prototype.delete = eS, Qx.prototype.get = tS, Qx.prototype.has = nS, Qx.prototype.set = rS;
function iS(j) {
var I = -1, q = j == null ? 0 : j.length;
for (this.__data__ = new Qx(); ++I < q;) this.add(j[I]);
}
function aS(j) {
return this.__data__.set(j, __), this;
}
function oS(j) {
return this.__data__.has(j);
}
iS.prototype.add = iS.prototype.push = aS, iS.prototype.has = oS;
function sS(j) {
this.size = (this.__data__ = new Kx(j)).size;
}
function cS() {
this.__data__ = new Kx(), this.size = 0;
}
function lS(j) {
var I = this.__data__, q = I.delete(j);
return this.size = I.size, q;
}
function uS(j) {
return this.__data__.get(j);
}
function dS(j) {
return this.__data__.has(j);
}
function fS(j, I) {
var q = this.__data__;
if (q instanceof Kx) {
var Q = q.__data__;
if (!db || Q.length < p_ - 1) return Q.push([j, I]), this.size = ++q.size, this;
q = this.__data__ = new Qx(Q);
}
return q.set(j, I), this.size = q.size, this;
}
sS.prototype.clear = cS, sS.prototype.delete = lS, sS.prototype.get = uS, sS.prototype.has = dS, sS.prototype.set = fS;
function pS(j, I) {
var q = gO(j), Q = !q && hO(j), p_ = !q && !Q && xO(j), m_ = !q && !Q && !p_ && JO(j), h_ = q || Q || p_ || m_, g_ = h_ ? Yb(j.length, py) : [], __ = g_.length;
for (var v_ in j) (I || by.call(j, v_)) && !(h_ && (v_ == "length" || p_ && (v_ == "offset" || v_ == "parent") || m_ && (v_ == "buffer" || v_ == "byteLength" || v_ == "byteOffset") || mT(v_, __))) && g_.push(v_);
return g_;
}
function mS(j) {
var I = j.length;
return I ? j[EC(0, I - 1)] : q;
}
function hS(j, I) {
return LT(fw(j), TS(I, 0, j.length));
}
function gS(j) {
return LT(fw(j));
}
function _S(j, I, Q) {
(Q !== q && !fO(j[I], Q) || Q === q && !(I in j)) && CS(j, I, Q);
}
function vS(j, I, Q) {
var p_ = j[I];
(!(by.call(j, I) && fO(p_, Q)) || Q === q && !(I in j)) && CS(j, I, Q);
}
function yS(j, I) {
for (var q = j.length; q--;) if (fO(j[q][0], I)) return q;
return -1;
}
function bS(j, I, q, Q) {
return jS(j, function(j, p_, m_) {
I(Q, j, q(j), m_);
}), Q;
}
function xS(j, I) {
return j && pw(I, Ak(I), j);
}
function SS(j, I) {
return j && pw(I, jk(I), j);
}
function CS(j, I, q) {
I == "__proto__" && Ry ? Ry(j, I, {
configurable: !0,
enumerable: !0,
value: q,
writable: !0
}) : j[I] = q;
}
function wS(j, I) {
for (var Q = -1, p_ = I.length, m_ = Gv(p_), h_ = j == null; ++Q < p_;) m_[Q] = h_ ? q : wk(j, I[Q]);
return m_;
}
function TS(j, I, Q) {
return j === j && (Q !== q && (j = j <= Q ? j : Q), I !== q && (j = j >= I ? j : I)), j;
}
function ES(j, I, Q, p_, m_, h_) {
var g_, __ = I & b_, v_ = I & x_, y_ = I & S_;
if (Q && (g_ = m_ ? Q(j, p_, m_, h_) : Q(j)), g_ !== q) return g_;
if (!MO(j)) return j;
var C_ = gO(j);
if (C_) {
if (g_ = lT(j), !__) return fw(j, g_);
} else {
var w_ = aT(j), T_ = w_ == rv || w_ == iv;
if (xO(j)) return nw(j, __);
if (w_ == cv || w_ == X_ || T_ && !m_) {
if (g_ = v_ || T_ ? {} : uT(j), !__) return v_ ? hw(j, SS(g_, j)) : mw(j, xS(g_, j));
} else {
if (!tb[w_]) return m_ ? j : {};
g_ = dT(j, w_, __);
}
}
h_ ||= new sS();
var E_ = h_.get(j);
if (E_) return E_;
h_.set(j, g_), GO(j) ? j.forEach(function(q) {
g_.add(ES(q, I, Q, q, j, h_));
}) : PO(j) && j.forEach(function(q, p_) {
g_.set(p_, ES(q, I, Q, p_, j, h_));
});
var D_ = C_ ? q : (y_ ? v_ ? Jw : qw : v_ ? jk : Ak)(j);
return wb(D_ || j, function(q, p_) {
D_ && (p_ = q, q = j[p_]), vS(g_, p_, ES(q, I, Q, p_, j, h_));
}), g_;
}
function DS(j) {
var I = Ak(j);
return function(q) {
return OS(q, j, I);
};
}
function OS(j, I, Q) {
var p_ = Q.length;
if (j == null) return !p_;
for (j = dy(j); p_--;) {
var m_ = Q[p_], h_ = I[m_], g_ = j[m_];
if (g_ === q && !(m_ in j) || !h_(g_)) return !1;
}
return !0;
}
function kS(j, I, Q) {
if (typeof j != "function") throw new my(h_);
return NT(function() {
j.apply(q, Q);
}, I);
}
function AS(j, I, q, Q) {
var m_ = -1, h_ = Ob, g_ = !0, __ = j.length, v_ = [], y_ = I.length;
if (!__) return v_;
q && (I = Ab(I, Qb(q))), Q ? (h_ = kb, g_ = !1) : I.length >= p_ && (h_ = ex, g_ = !1, I = new iS(I));
outer: for (; ++m_ < __;) {
var b_ = j[m_], x_ = q == null ? b_ : q(b_);
if (b_ = Q || b_ !== 0 ? b_ : 0, g_ && x_ === x_) {
for (var S_ = y_; S_--;) if (I[S_] === x_) continue outer;
v_.push(b_);
} else h_(I, x_, Q) || v_.push(b_);
}
return v_;
}
var jS = vw(BS), MS = vw(VS, !0);
function NS(j, I) {
var q = !0;
return jS(j, function(j, Q, p_) {
return q = !!I(j, Q, p_), q;
}), q;
}
function PS(j, I, Q) {
for (var p_ = -1, m_ = j.length; ++p_ < m_;) {
var h_ = j[p_], g_ = I(h_);
if (g_ != null && (__ === q ? g_ === g_ && !qO(g_) : Q(g_, __))) var __ = g_, v_ = h_;
}
return v_;
}
function FS(j, I, Q, p_) {
var m_ = j.length;
for (Q = nk(Q), Q < 0 && (Q = -Q > m_ ? 0 : m_ + Q), p_ = p_ === q || p_ > m_ ? m_ : nk(p_), p_ < 0 && (p_ += m_), p_ = Q > p_ ? 0 : rk(p_); Q < p_;) j[Q++] = I;
return j;
}
function IS(j, I) {
var q = [];
return jS(j, function(j, Q, p_) {
I(j, Q, p_) && q.push(j);
}), q;
}
function LS(j, I, q, Q, p_) {
var m_ = -1, h_ = j.length;
for (q ||= pT, p_ ||= []; ++m_ < h_;) {
var g_ = j[m_];
I > 0 && q(g_) ? I > 1 ? LS(g_, I - 1, q, Q, p_) : jb(p_, g_) : Q || (p_[p_.length] = g_);
}
return p_;
}
var RS = yw(), zS = yw(!0);
function BS(j, I) {
return j && RS(j, I, Ak);
}
function VS(j, I) {
return j && zS(j, I, Ak);
}
function HS(j, I) {
return Db(I, function(I) {
return kO(j[I]);
});
}
function US(j, I) {
I = QC(I, j);
for (var Q = 0, p_ = I.length; j != null && Q < p_;) j = j[zT(I[Q++])];
return Q && Q == p_ ? j : q;
}
function WS(j, I, q) {
var Q = I(j);
return gO(j) ? Q : jb(Q, q(j));
}
function GS(j) {
return j == null ? j === q ? hv : sv : Ly && Ly in dy(j) ? nT(j) : DT(j);
}
function KS(j, I) {
return j > I;
}
function qS(j, I) {
return j != null && by.call(j, I);
}
function JS(j, I) {
return j != null && I in dy(j);
}
function YS(j, I, q) {
return j >= nb(I, q) && j < Zy(I, q);
}
function XS(j, I, Q) {
for (var p_ = Q ? kb : Ob, m_ = j[0].length, h_ = j.length, g_ = h_, __ = Gv(h_), v_ = Infinity, y_ = []; g_--;) {
var b_ = j[g_];
g_ && I && (b_ = Ab(b_, Qb(I))), v_ = nb(b_.length, v_), __[g_] = !Q && (I || m_ >= 120 && b_.length >= 120) ? new iS(g_ && b_) : q;
}
b_ = j[0];
var x_ = -1, S_ = __[0];
outer: for (; ++x_ < m_ && y_.length < v_;) {
var C_ = b_[x_], w_ = I ? I(C_) : C_;
if (C_ = Q || C_ !== 0 ? C_ : 0, !(S_ ? ex(S_, w_) : p_(y_, w_, Q))) {
for (g_ = h_; --g_;) {
var T_ = __[g_];
if (!(T_ ? ex(T_, w_) : p_(j[g_], w_, Q))) continue outer;
}
S_ && S_.push(w_), y_.push(C_);
}
}
return y_;
}
function ZS(j, I, q, Q) {
return BS(j, function(j, p_, m_) {
I(Q, q(j), p_, m_);
}), Q;
}
function QS(j, I, Q) {
I = QC(I, j), j = kT(j, I);
var p_ = j == null ? j : j[zT(pE(I))];
return p_ == null ? q : Sb(p_, j, Q);
}
function $S(j) {
return NO(j) && GS(j) == X_;
}
function eC(j) {
return NO(j) && GS(j) == vv;
}
function tC(j) {
return NO(j) && GS(j) == ev;
}
function nC(j, I, q, Q, p_) {
return j === I ? !0 : j == null || I == null || !NO(j) && !NO(I) ? j !== j && I !== I : rC(j, I, q, Q, nC, p_);
}
function rC(j, I, q, Q, p_, m_) {
var h_ = gO(j), g_ = gO(I), __ = h_ ? Z_ : aT(j), v_ = g_ ? Z_ : aT(I);
__ = __ == X_ ? cv : __, v_ = v_ == X_ ? cv : v_;
var y_ = __ == cv, b_ = v_ == cv, x_ = __ == v_;
if (x_ && xO(j)) {
if (!xO(I)) return !1;
h_ = !0, y_ = !1;
}
if (x_ && !y_) return m_ ||= new sS(), h_ || JO(j) ? Uw(j, I, q, Q, p_, m_) : Ww(j, I, __, q, Q, p_, m_);
if (!(q & C_)) {
var S_ = y_ && by.call(j, "__wrapped__"), w_ = b_ && by.call(I, "__wrapped__");
if (S_ || w_) {
var T_ = S_ ? j.value() : j, E_ = w_ ? I.value() : I;
return m_ ||= new sS(), p_(T_, E_, q, Q, m_);
}
}
return x_ ? (m_ ||= new sS(), Gw(j, I, q, Q, p_, m_)) : !1;
}
function iC(j) {
return NO(j) && aT(j) == av;
}
function aC(j, I, Q, p_) {
var m_ = Q.length, h_ = m_, g_ = !p_;
if (j == null) return !h_;
for (j = dy(j); m_--;) {
var __ = Q[m_];
if (g_ && __[2] ? __[1] !== j[__[0]] : !(__[0] in j)) return !1;
}
for (; ++m_ < h_;) {
__ = Q[m_];
var v_ = __[0], y_ = j[v_], b_ = __[1];
if (g_ && __[2]) {
if (y_ === q && !(v_ in j)) return !1;
} else {
var x_ = new sS();
if (p_) var S_ = p_(y_, b_, v_, j, I, x_);
if (!(S_ === q ? nC(b_, y_, C_ | w_, p_, x_) : S_)) return !1;
}
}
return !0;
}
function oC(j) {
return !MO(j) || yT(j) ? !1 : (kO(j) ? Ey : ny).test(BT(j));
}
function sC(j) {
return NO(j) && GS(j) == dv;
}
function cC(j) {
return NO(j) && aT(j) == fv;
}
function lC(j) {
return NO(j) && jO(j.length) && !!eb[GS(j)];
}
function uC(j) {
return typeof j == "function" ? j : j == null ? RA : typeof j == "object" ? gO(j) ? gC(j[0], j[1]) : hC(j) : ZA(j);
}
function dC(j) {
if (!xT(j)) return Xy(j);
var I = [];
for (var q in dy(j)) by.call(j, q) && q != "constructor" && I.push(q);
return I;
}
function fC(j) {
if (!MO(j)) return ET(j);
var I = xT(j), q = [];
for (var Q in j) Q == "constructor" && (I || !by.call(j, Q)) || q.push(Q);
return q;
}
function pC(j, I) {
return j < I;
}
function mC(j, I) {
var q = -1, Q = vO(j) ? Gv(j.length) : [];
return jS(j, function(j, p_, m_) {
Q[++q] = I(j, p_, m_);
}), Q;
}
function hC(j) {
var I = eT(j);
return I.length == 1 && I[0][2] ? CT(I[0][0], I[0][1]) : function(q) {
return q === j || aC(q, j, I);
};
}
function gC(j, I) {
return gT(j) && ST(I) ? CT(zT(j), I) : function(Q) {
var p_ = wk(Q, j);
return p_ === q && p_ === I ? Ek(Q, j) : nC(I, p_, C_ | w_);
};
}
function _C(j, I, Q, p_, m_) {
j !== I && RS(I, function(h_, g_) {
if (m_ ||= new sS(), MO(h_)) vC(j, I, g_, Q, _C, p_, m_);
else {
var __ = p_ ? p_(jT(j, g_), h_, g_ + "", j, I, m_) : q;
__ === q && (__ = h_), _S(j, g_, __);
}
}, jk);
}
function vC(j, I, Q, p_, m_, h_, g_) {
var __ = jT(j, Q), v_ = jT(I, Q), y_ = g_.get(v_);
if (y_) {
_S(j, Q, y_);
return;
}
var b_ = h_ ? h_(__, v_, Q + "", j, I, g_) : q, x_ = b_ === q;
if (x_) {
var S_ = gO(v_), C_ = !S_ && xO(v_), w_ = !S_ && !C_ && JO(v_);
b_ = v_, S_ || C_ || w_ ? gO(__) ? b_ = __ : yO(__) ? b_ = fw(__) : C_ ? (x_ = !1, b_ = nw(v_, !0)) : w_ ? (x_ = !1, b_ = sw(v_, !0)) : b_ = [] : HO(v_) || hO(v_) ? (b_ = __, hO(__) ? b_ = ak(__) : (!MO(__) || kO(__)) && (b_ = uT(v_))) : x_ = !1;
}
x_ && (g_.set(v_, b_), m_(b_, v_, p_, h_, g_), g_.delete(v_)), _S(j, Q, b_);
}
function yC(j, I) {
var Q = j.length;
if (Q) return I += I < 0 ? Q : 0, mT(I, Q) ? j[I] : q;
}
function bC(j, I, q) {
I = I.length ? Ab(I, function(j) {
return gO(j) ? function(I) {
return US(I, j.length === 1 ? j[0] : j);
} : j;
}) : [RA];
var Q = -1;
I = Ab(I, Qb(Qw()));
var p_ = mC(j, function(j, q, p_) {
return {
criteria: Ab(I, function(I) {
return I(j);
}),
index: ++Q,
value: j
};
});
return qb(p_, function(j, I) {
return lw(j, I, q);
});
}
function xC(j, I) {
return SC(j, I, function(I, q) {
return Ek(j, q);
});
}
function SC(j, I, q) {
for (var Q = -1, p_ = I.length, m_ = {}; ++Q < p_;) {
var h_ = I[Q], g_ = US(j, h_);
q(g_, h_) && MC(m_, QC(h_, j), g_);
}
return m_;
}
function CC(j) {
return function(I) {
return US(I, j);
};
}
function wC(j, I, q, Q) {
var p_ = Q ? Vb : Bb, m_ = -1, h_ = I.length, g_ = j;
for (j === I && (I = fw(I)), q && (g_ = Ab(j, Qb(q))); ++m_ < h_;) for (var __ = 0, v_ = I[m_], y_ = q ? q(v_) : v_; (__ = p_(g_, y_, __, Q)) > -1;) g_ !== j && Py.call(g_, __, 1), Py.call(j, __, 1);
return j;
}
function TC(j, I) {
for (var q = j ? I.length : 0, Q = q - 1; q--;) {
var p_ = I[q];
if (q == Q || p_ !== m_) {
var m_ = p_;
mT(p_) ? Py.call(j, p_, 1) : WC(j, p_);
}
}
return j;
}
function EC(j, I) {
return j + Uy(ab() * (I - j + 1));
}
function DC(j, I, q, Q) {
for (var p_ = -1, m_ = Zy(Hy((I - j) / (q || 1)), 0), h_ = Gv(m_); m_--;) h_[Q ? m_ : ++p_] = j, j += q;
return h_;
}
function OC(j, I) {
var q = "";
if (!j || I < 1 || I > U_) return q;
do
I % 2 && (q += j), I = Uy(I / 2), I && (j += j);
while (I);
return q;
}
function kC(j, I) {
return PT(OT(j, I, RA), j + "");
}
function AC(j) {
return mS(Yk(j));
}
function jC(j, I) {
var q = Yk(j);
return LT(q, TS(I, 0, q.length));
}
function MC(j, I, Q, p_) {
if (!MO(j)) return j;
I = QC(I, j);
for (var m_ = -1, h_ = I.length, g_ = h_ - 1, __ = j; __ != null && ++m_ < h_;) {
var v_ = zT(I[m_]), y_ = Q;
if (v_ === "__proto__" || v_ === "constructor" || v_ === "prototype") return j;
if (m_ != g_) {
var b_ = __[v_];
y_ = p_ ? p_(b_, v_, __) : q, y_ === q && (y_ = MO(b_) ? b_ : mT(I[m_ + 1]) ? [] : {});
}
vS(__, v_, y_), __ = __[v_];
}
return j;
}
var NC = Ib ? function(j, I) {
return Ib.set(j, I), j;
} : RA, PC = Ry ? function(j, I) {
return Ry(j, "toString", {
configurable: !0,
enumerable: !1,
value: PA(I),
writable: !0
});
} : RA;
function FC(j) {
return LT(Yk(j));
}
function IC(j, I, q) {
var Q = -1, p_ = j.length;
I < 0 && (I = -I > p_ ? 0 : p_ + I), q = q > p_ ? p_ : q, q < 0 && (q += p_), p_ = I > q ? 0 : q - I >>> 0, I >>>= 0;
for (var m_ = Gv(p_); ++Q < p_;) m_[Q] = j[Q + I];
return m_;
}
function LC(j, I) {
var q;
return jS(j, function(j, Q, p_) {
return q = I(j, Q, p_), !q;
}), !!q;
}
function RC(j, I, q) {
var Q = 0, p_ = j == null ? Q : j.length;
if (typeof I == "number" && I === I && p_ <= J_) {
for (; Q < p_;) {
var m_ = Q + p_ >>> 1, h_ = j[m_];
h_ !== null && !qO(h_) && (q ? h_ <= I : h_ < I) ? Q = m_ + 1 : p_ = m_;
}
return p_;
}
return zC(j, I, RA, q);
}
function zC(j, I, Q, p_) {
var m_ = 0, h_ = j == null ? 0 : j.length;
if (h_ === 0) return 0;
I = Q(I);
for (var g_ = I !== I, __ = I === null, v_ = qO(I), y_ = I === q; m_ < h_;) {
var b_ = Uy((m_ + h_) / 2), x_ = Q(j[b_]), S_ = x_ !== q, C_ = x_ === null, w_ = x_ === x_, T_ = qO(x_);
if (g_) var E_ = p_ || w_;
else E_ = y_ ? w_ && (p_ || S_) : __ ? w_ && S_ && (p_ || !C_) : v_ ? w_ && S_ && !C_ && (p_ || !T_) : C_ || T_ ? !1 : p_ ? x_ <= I : x_ < I;
E_ ? m_ = b_ + 1 : h_ = b_;
}
return nb(h_, q_);
}
function BC(j, I) {
for (var q = -1, Q = j.length, p_ = 0, m_ = []; ++q < Q;) {
var h_ = j[q], g_ = I ? I(h_) : h_;
if (!q || !fO(g_, __)) {
var __ = g_;
m_[p_++] = h_ === 0 ? 0 : h_;
}
}
return m_;
}
function VC(j) {
return typeof j == "number" ? j : qO(j) ? G_ : +j;
}
function HC(j) {
if (typeof j == "string") return j;
if (gO(j)) return Ab(j, HC) + "";
if (qO(j)) return jx ? jx.call(j) : "";
var I = j + "";
return I == "0" && 1 / j == -H_ ? "-0" : I;
}
function UC(j, I, q) {
var Q = -1, m_ = Ob, h_ = j.length, g_ = !0, __ = [], v_ = __;
if (q) g_ = !1, m_ = kb;
else if (h_ >= p_) {
var y_ = I ? null : Lw(j);
if (y_) return hx(y_);
g_ = !1, m_ = ex, v_ = new iS();
} else v_ = I ? [] : __;
outer: for (; ++Q < h_;) {
var b_ = j[Q], x_ = I ? I(b_) : b_;
if (b_ = q || b_ !== 0 ? b_ : 0, g_ && x_ === x_) {
for (var S_ = v_.length; S_--;) if (v_[S_] === x_) continue outer;
I && v_.push(x_), __.push(b_);
} else m_(v_, x_, q) || (v_ !== __ && v_.push(x_), __.push(b_));
}
return __;
}
function WC(j, I) {
I = QC(I, j);
var q = -1, Q = I.length;
if (!Q) return !0;
for (var p_ = j == null || typeof j != "object" && typeof j != "function"; ++q < Q;) {
var m_ = I[q];
if (typeof m_ == "string") {
if (m_ === "__proto__" && !by.call(j, "__proto__")) return !1;
if (m_ === "constructor" && q + 1 < Q && typeof I[q + 1] == "string" && I[q + 1] === "prototype") {
if (p_ && q === 0) continue;
return !1;
}
}
}
var h_ = kT(j, I);
return h_ == null || delete h_[zT(pE(I))];
}
function GC(j, I, q, Q) {
return MC(j, I, q(US(j, I)), Q);
}
function KC(j, I, q, Q) {
for (var p_ = j.length, m_ = Q ? p_ : -1; (Q ? m_-- : ++m_ < p_) && I(j[m_], m_, j););
return q ? IC(j, Q ? 0 : m_, Q ? m_ + 1 : p_) : IC(j, Q ? m_ + 1 : 0, Q ? p_ : m_);
}
function qC(j, I) {
var q = j;
return q instanceof Ix && (q = q.value()), Mb(I, function(j, I) {
return I.func.apply(I.thisArg, jb([j], I.args));
}, q);
}
function JC(j, I, q) {
var Q = j.length;
if (Q < 2) return Q ? UC(j[0]) : [];
for (var p_ = -1, m_ = Gv(Q); ++p_ < Q;) for (var h_ = j[p_], g_ = -1; ++g_ < Q;) g_ != p_ && (m_[p_] = AS(m_[p_] || h_, j[g_], I, q));
return UC(LS(m_, 1), I, q);
}
function YC(j, I, Q) {
for (var p_ = -1, m_ = j.length, h_ = I.length, g_ = {}; ++p_ < m_;) {
var __ = p_ < h_ ? I[p_] : q;
Q(g_, j[p_], __);
}
return g_;
}
function XC(j) {
return yO(j) ? j : [];
}
function ZC(j) {
return typeof j == "function" ? j : RA;
}
function QC(j, I) {
return gO(j) ? j : gT(j, I) ? [j] : RT(sk(j));
}
var $C = kC;
function ew(j, I, Q) {
var p_ = j.length;
return Q = Q === q ? p_ : Q, !I && Q >= p_ ? j : IC(j, I, Q);
}
var tw = zy || function(j) {
return ub.clearTimeout(j);
};
function nw(j, I) {
if (I) return j.slice();
var q = j.length, Q = Ay ? Ay(q) : new j.constructor(q);
return j.copy(Q), Q;
}
function rw(j) {
var I = new j.constructor(j.byteLength);
return new ky(I).set(new ky(j)), I;
}
function iw(j, I) {
var q = I ? rw(j.buffer) : j.buffer;
return new j.constructor(q, j.byteOffset, j.byteLength);
}
function aw(j) {
var I = new j.constructor(j.source, $v.exec(j));
return I.lastIndex = j.lastIndex, I;
}
function ow(j) {
return Ax ? dy(Ax.call(j)) : {};
}
function sw(j, I) {
var q = I ? rw(j.buffer) : j.buffer;
return new j.constructor(q, j.byteOffset, j.length);
}
function cw(j, I) {
if (j !== I) {
var Q = j !== q, p_ = j === null, m_ = j === j, h_ = qO(j), g_ = I !== q, __ = I === null, v_ = I === I, y_ = qO(I);
if (!__ && !y_ && !h_ && j > I || h_ && g_ && v_ && !__ && !y_ || p_ && g_ && v_ || !Q && v_ || !m_) return 1;
if (!p_ && !h_ && !y_ && j < I || y_ && Q && m_ && !p_ && !h_ || __ && Q && m_ || !g_ && m_ || !v_) return -1;
}
return 0;
}
function lw(j, I, q) {
for (var Q = -1, p_ = j.criteria, m_ = I.criteria, h_ = p_.length, g_ = q.length; ++Q < h_;) {
var __ = cw(p_[Q], m_[Q]);
if (__) {
if (Q >= g_) return __;
var v_ = q[Q];
return __ * (v_ == "desc" ? -1 : 1);
}
}
return j.index - I.index;
}
function uw(j, I, q, Q) {
for (var p_ = -1, m_ = j.length, h_ = q.length, g_ = -1, __ = I.length, v_ = Zy(m_ - h_, 0), y_ = Gv(__ + v_), b_ = !Q; ++g_ < __;) y_[g_] = I[g_];
for (; ++p_ < h_;) (b_ || p_ < m_) && (y_[q[p_]] = j[p_]);
for (; v_--;) y_[g_++] = j[p_++];
return y_;
}
function dw(j, I, q, Q) {
for (var p_ = -1, m_ = j.length, h_ = -1, g_ = q.length, __ = -1, v_ = I.length, y_ = Zy(m_ - g_, 0), b_ = Gv(y_ + v_), x_ = !Q; ++p_ < y_;) b_[p_] = j[p_];
for (var S_ = p_; ++__ < v_;) b_[S_ + __] = I[__];
for (; ++h_ < g_;) (x_ || p_ < m_) && (b_[S_ + q[h_]] = j[p_++]);
return b_;
}
function fw(j, I) {
var q = -1, Q = j.length;
for (I ||= Gv(Q); ++q < Q;) I[q] = j[q];
return I;
}
function pw(j, I, Q, p_) {
var m_ = !Q;
Q ||= {};
for (var h_ = -1, g_ = I.length; ++h_ < g_;) {
var __ = I[h_], v_ = p_ ? p_(Q[__], j[__], __, Q, j) : q;
v_ === q && (v_ = j[__]), m_ ? CS(Q, __, v_) : vS(Q, __, v_);
}
return Q;
}
function mw(j, I) {
return pw(j, rT(j), I);
}
function hw(j, I) {
return pw(j, iT(j), I);
}
function gw(j, I) {
return function(q, Q) {
var p_ = gO(q) ? Cb : bS, m_ = I ? I() : {};
return p_(q, j, Qw(Q, 2), m_);
};
}
function _w(j) {
return kC(function(I, Q) {
var p_ = -1, m_ = Q.length, h_ = m_ > 1 ? Q[m_ - 1] : q, g_ = m_ > 2 ? Q[2] : q;
for (h_ = j.length > 3 && typeof h_ == "function" ? (m_--, h_) : q, g_ && hT(Q[0], Q[1], g_) && (h_ = m_ < 3 ? q : h_, m_ = 1), I = dy(I); ++p_ < m_;) {
var __ = Q[p_];
__ && j(I, __, p_, h_);
}
return I;
});
}
function vw(j, I) {
return function(q, Q) {
if (q == null) return q;
if (!vO(q)) return j(q, Q);
for (var p_ = q.length, m_ = I ? p_ : -1, h_ = dy(q); (I ? m_-- : ++m_ < p_) && Q(h_[m_], m_, h_) !== !1;);
return q;
};
}
function yw(j) {
return function(I, q, Q) {
for (var p_ = -1, m_ = dy(I), h_ = Q(I), g_ = h_.length; g_--;) {
var __ = h_[j ? g_ : ++p_];
if (q(m_[__], __, m_) === !1) break;
}
return I;
};
}
function bw(j, I, q) {
var Q = I & T_, p_ = Cw(j);
function m_() {
return (this && this !== ub && this instanceof m_ ? p_ : j).apply(Q ? q : this, arguments);
}
return m_;
}
function xw(j) {
return function(I) {
I = sk(I);
var Q = lx(I) ? bx(I) : q, p_ = Q ? Q[0] : I.charAt(0), m_ = Q ? ew(Q, 1).join("") : I.slice(1);
return p_[j]() + m_;
};
}
function Sw(j) {
return function(I) {
return Mb(kA(nA(I).replace(Ky, "")), j, "");
};
}
function Cw(j) {
return function() {
var I = arguments;
switch (I.length) {
case 0: return new j();
case 1: return new j(I[0]);
case 2: return new j(I[0], I[1]);
case 3: return new j(I[0], I[1], I[2]);
case 4: return new j(I[0], I[1], I[2], I[3]);
case 5: return new j(I[0], I[1], I[2], I[3], I[4]);
case 6: return new j(I[0], I[1], I[2], I[3], I[4], I[5]);
case 7: return new j(I[0], I[1], I[2], I[3], I[4], I[5], I[6]);
}
var q = Nx(j.prototype), Q = j.apply(q, I);
return MO(Q) ? Q : q;
};
}
function ww(j, I, Q) {
var p_ = Cw(j);
function m_() {
for (var h_ = arguments.length, g_ = Gv(h_), __ = h_, v_ = Zw(m_); __--;) g_[__] = arguments[__];
var y_ = h_ < 3 && g_[0] !== v_ && g_[h_ - 1] !== v_ ? [] : mx(g_, v_);
if (h_ -= y_.length, h_ < Q) return Fw(j, I, Dw, m_.placeholder, q, g_, y_, q, q, Q - h_);
var b_ = this && this !== ub && this instanceof m_ ? p_ : j;
return Sb(b_, this, g_);
}
return m_;
}
function Tw(j) {
return function(I, Q, p_) {
var m_ = dy(I);
if (!vO(I)) {
var h_ = Qw(Q, 3);
I = Ak(I), Q = function(j) {
return h_(m_[j], j, m_);
};
}
var g_ = j(I, Q, p_);
return g_ > -1 ? m_[h_ ? I[g_] : g_] : q;
};
}
function Ew(j) {
return Kw(function(I) {
var Q = I.length, p_ = Q, m_ = Fx.prototype.thru;
for (j && I.reverse(); p_--;) {
var g_ = I[p_];
if (typeof g_ != "function") throw new my(h_);
if (m_ && !__ && Xw(g_) == "wrapper") var __ = new Fx([], !0);
}
for (p_ = __ ? p_ : Q; ++p_ < Q;) {
g_ = I[p_];
var v_ = Xw(g_), y_ = v_ == "wrapper" ? Yw(g_) : q;
__ = y_ && vT(y_[0]) && y_[1] == (M_ | O_ | A_ | N_) && !y_[4].length && y_[9] == 1 ? __[Xw(y_[0])].apply(__, y_[3]) : g_.length == 1 && vT(g_) ? __[v_]() : __.thru(g_);
}
return function() {
var j = arguments, q = j[0];
if (__ && j.length == 1 && gO(q)) return __.plant(q).value();
for (var p_ = 0, m_ = Q ? I[p_].apply(this, j) : q; ++p_ < Q;) m_ = I[p_].call(this, m_);
return m_;
};
});
}
function Dw(j, I, Q, p_, m_, h_, g_, __, v_, y_) {
var b_ = I & M_, x_ = I & T_, S_ = I & E_, C_ = I & (O_ | k_), w_ = I & P_, D_ = S_ ? q : Cw(j);
function A_() {
for (var q = arguments.length, T_ = Gv(q), E_ = q; E_--;) T_[E_] = arguments[E_];
if (C_) var O_ = Zw(A_), k_ = rx(T_, O_);
if (p_ && (T_ = uw(T_, p_, m_, C_)), h_ && (T_ = dw(T_, h_, g_, C_)), q -= k_, C_ && q < y_) {
var j_ = mx(T_, O_);
return Fw(j, I, Dw, A_.placeholder, Q, T_, j_, __, v_, y_ - q);
}
var M_ = x_ ? Q : this, N_ = S_ ? M_[j] : j;
return q = T_.length, __ ? T_ = AT(T_, __) : w_ && q > 1 && T_.reverse(), b_ && v_ < q && (T_.length = v_), this && this !== ub && this instanceof A_ && (N_ = D_ || Cw(N_)), N_.apply(M_, T_);
}
return A_;
}
function Ow(j, I) {
return function(q, Q) {
return ZS(q, j, I(Q), {});
};
}
function kw(j, I) {
return function(Q, p_) {
var m_;
if (Q === q && p_ === q) return I;
if (Q !== q && (m_ = Q), p_ !== q) {
if (m_ === q) return p_;
typeof Q == "string" || typeof p_ == "string" ? (Q = HC(Q), p_ = HC(p_)) : (Q = VC(Q), p_ = VC(p_)), m_ = j(Q, p_);
}
return m_;
};
}
function Aw(j) {
return Kw(function(I) {
return I = Ab(I, Qb(Qw())), kC(function(q) {
var Q = this;
return j(I, function(j) {
return Sb(j, Q, q);
});
});
});
}
function jw(j, I) {
I = I === q ? " " : HC(I);
var Q = I.length;
if (Q < 2) return Q ? OC(I, j) : I;
var p_ = OC(I, Hy(j / yx(I)));
return lx(I) ? ew(bx(p_), 0, j).join("") : p_.slice(0, j);
}
function Mw(j, I, q, Q) {
var p_ = I & T_, m_ = Cw(j);
function h_() {
for (var I = -1, g_ = arguments.length, __ = -1, v_ = Q.length, y_ = Gv(v_ + g_), b_ = this && this !== ub && this instanceof h_ ? m_ : j; ++__ < v_;) y_[__] = Q[__];
for (; g_--;) y_[__++] = arguments[++I];
return Sb(b_, p_ ? q : this, y_);
}
return h_;
}
function Nw(j) {
return function(I, Q, p_) {
return p_ && typeof p_ != "number" && hT(I, Q, p_) && (Q = p_ = q), I = tk(I), Q === q ? (Q = I, I = 0) : Q = tk(Q), p_ = p_ === q ? I < Q ? 1 : -1 : tk(p_), DC(I, Q, p_, j);
};
}
function Pw(j) {
return function(I, q) {
return typeof I == "string" && typeof q == "string" || (I = ik(I), q = ik(q)), j(I, q);
};
}
function Fw(j, I, Q, p_, m_, h_, g_, __, v_, y_) {
var b_ = I & O_, x_ = b_ ? g_ : q, S_ = b_ ? q : g_, C_ = b_ ? h_ : q, w_ = b_ ? q : h_;
I |= b_ ? A_ : j_, I &= ~(b_ ? j_ : A_), I & D_ || (I &= ~(T_ | E_));
var k_ = [
j,
I,
m_,
C_,
x_,
w_,
S_,
__,
v_,
y_
], M_ = Q.apply(q, k_);
return vT(j) && MT(M_, k_), M_.placeholder = p_, FT(M_, j, I);
}
function Iw(j) {
var I = uy[j];
return function(j, q) {
if (j = ik(j), q = q == null ? 0 : nb(nk(q), 292), q && Jy(j)) {
var Q = (sk(j) + "e").split("e"), p_ = I(Q[0] + "e" + (+Q[1] + q));
return Q = (sk(p_) + "e").split("e"), +(Q[0] + "e" + (+Q[1] - q));
}
return I(j);
};
}
var Lw = mb && 1 / hx(new mb([, -0]))[1] == H_ ? function(j) {
return new mb(j);
} : KA;
function Rw(j) {
return function(I) {
var q = aT(I);
return q == av ? fx(I) : q == fv ? gx(I) : Xb(I, j(I));
};
}
function zw(j, I, Q, p_, m_, g_, __, v_) {
var y_ = I & E_;
if (!y_ && typeof j != "function") throw new my(h_);
var b_ = p_ ? p_.length : 0;
if (b_ || (I &= ~(A_ | j_), p_ = m_ = q), __ = __ === q ? __ : Zy(nk(__), 0), v_ = v_ === q ? v_ : nk(v_), b_ -= m_ ? m_.length : 0, I & j_) {
var x_ = p_, S_ = m_;
p_ = m_ = q;
}
var C_ = y_ ? q : Yw(j), w_ = [
j,
I,
Q,
p_,
m_,
x_,
S_,
g_,
__,
v_
];
if (C_ && TT(w_, C_), j = w_[0], I = w_[1], Q = w_[2], p_ = w_[3], m_ = w_[4], v_ = w_[9] = w_[9] === q ? y_ ? 0 : j.length : Zy(w_[9] - b_, 0), !v_ && I & (O_ | k_) && (I &= ~(O_ | k_)), !I || I == T_) var D_ = bw(j, I, Q);
else D_ = I == O_ || I == k_ ? ww(j, I, v_) : (I == A_ || I == (T_ | A_)) && !m_.length ? Mw(j, I, Q, p_) : Dw.apply(q, w_);
return FT((C_ ? NC : MT)(D_, w_), j, I);
}
function Bw(j, I, Q, p_) {
return j === q || fO(j, _y[Q]) && !by.call(p_, Q) ? I : j;
}
function Vw(j, I, Q, p_, m_, h_) {
return MO(j) && MO(I) && (h_.set(I, j), _C(j, I, q, Vw, h_), h_.delete(I)), j;
}
function Hw(j) {
return HO(j) ? q : j;
}
function Uw(j, I, Q, p_, m_, h_) {
var g_ = Q & C_, __ = j.length, v_ = I.length;
if (__ != v_ && !(g_ && v_ > __)) return !1;
var y_ = h_.get(j), b_ = h_.get(I);
if (y_ && b_) return y_ == I && b_ == j;
var x_ = -1, S_ = !0, T_ = Q & w_ ? new iS() : q;
for (h_.set(j, I), h_.set(I, j); ++x_ < __;) {
var E_ = j[x_], D_ = I[x_];
if (p_) var O_ = g_ ? p_(D_, E_, x_, I, j, h_) : p_(E_, D_, x_, j, I, h_);
if (O_ !== q) {
if (O_) continue;
S_ = !1;
break;
}
if (T_) {
if (!Pb(I, function(j, I) {
if (!ex(T_, I) && (E_ === j || m_(E_, j, Q, p_, h_))) return T_.push(I);
})) {
S_ = !1;
break;
}
} else if (!(E_ === D_ || m_(E_, D_, Q, p_, h_))) {
S_ = !1;
break;
}
}
return h_.delete(j), h_.delete(I), S_;
}
function Ww(j, I, q, Q, p_, m_, h_) {
switch (q) {
case yv:
if (j.byteLength != I.byteLength || j.byteOffset != I.byteOffset) return !1;
j = j.buffer, I = I.buffer;
case vv: return !(j.byteLength != I.byteLength || !m_(new ky(j), new ky(I)));
case $_:
case ev:
case ov: return fO(+j, +I);
case nv: return j.name == I.name && j.message == I.message;
case dv:
case pv: return j == I + "";
case av: var g_ = fx;
case fv:
var __ = Q & C_;
if (g_ ||= hx, j.size != I.size && !__) return !1;
var v_ = h_.get(j);
if (v_) return v_ == I;
Q |= w_, h_.set(j, I);
var y_ = Uw(g_(j), g_(I), Q, p_, m_, h_);
return h_.delete(j), y_;
case mv: if (Ax) return Ax.call(j) == Ax.call(I);
}
return !1;
}
function Gw(j, I, Q, p_, m_, h_) {
var g_ = Q & C_, __ = qw(j), v_ = __.length, y_ = qw(I).length;
if (v_ != y_ && !g_) return !1;
for (var b_ = v_; b_--;) {
var x_ = __[b_];
if (!(g_ ? x_ in I : by.call(I, x_))) return !1;
}
var S_ = h_.get(j), w_ = h_.get(I);
if (S_ && w_) return S_ == I && w_ == j;
var T_ = !0;
h_.set(j, I), h_.set(I, j);
for (var E_ = g_; ++b_ < v_;) {
x_ = __[b_];
var D_ = j[x_], O_ = I[x_];
if (p_) var k_ = g_ ? p_(O_, D_, x_, I, j, h_) : p_(D_, O_, x_, j, I, h_);
if (!(k_ === q ? D_ === O_ || m_(D_, O_, Q, p_, h_) : k_)) {
T_ = !1;
break;
}
E_ ||= x_ == "constructor";
}
if (T_ && !E_) {
var A_ = j.constructor, j_ = I.constructor;
A_ != j_ && "constructor" in j && "constructor" in I && !(typeof A_ == "function" && A_ instanceof A_ && typeof j_ == "function" && j_ instanceof j_) && (T_ = !1);
}
return h_.delete(j), h_.delete(I), T_;
}
function Kw(j) {
return PT(OT(j, q, nE), j + "");
}
function qw(j) {
return WS(j, Ak, rT);
}
function Jw(j) {
return WS(j, jk, iT);
}
var Yw = Ib ? function(j) {
return Ib.get(j);
} : KA;
function Xw(j) {
for (var I = j.name + "", q = Gb[I], Q = by.call(Gb, I) ? q.length : 0; Q--;) {
var p_ = q[Q], m_ = p_.func;
if (m_ == null || m_ == j) return p_.name;
}
return I;
}
function Zw(j) {
return (by.call(Mx, "placeholder") ? Mx : j).placeholder;
}
function Qw() {
var j = Mx.iteratee || zA;
return j = j === zA ? uC : j, arguments.length ? j(arguments[0], arguments[1]) : j;
}
function $w(j, I) {
var q = j.__data__;
return _T(I) ? q[typeof I == "string" ? "string" : "hash"] : q.map;
}
function eT(j) {
for (var I = Ak(j), q = I.length; q--;) {
var Q = I[q], p_ = j[Q];
I[q] = [
Q,
p_,
ST(p_)
];
}
return I;
}
function tT(j, I) {
var Q = sx(j, I);
return oC(Q) ? Q : q;
}
function nT(j) {
var I = by.call(j, Ly), Q = j[Ly];
try {
j[Ly] = q;
var p_ = !0;
} catch {}
var m_ = Cy.call(j);
return p_ && (I ? j[Ly] = Q : delete j[Ly]), m_;
}
var rT = Wy ? function(j) {
return j == null ? [] : (j = dy(j), Db(Wy(j), function(I) {
return Ny.call(j, I);
}));
} : tj, iT = Wy ? function(j) {
for (var I = []; j;) jb(I, rT(j)), j = jy(j);
return I;
} : tj, aT = GS;
(lb && aT(new lb(/* @__PURE__ */ new ArrayBuffer(1))) != yv || db && aT(new db()) != av || fb && aT(fb.resolve()) != lv || mb && aT(new mb()) != fv || hb && aT(new hb()) != gv) && (aT = function(j) {
var I = GS(j), Q = I == cv ? j.constructor : q, p_ = Q ? BT(Q) : "";
if (p_) switch (p_) {
case _x: return yv;
case Cx: return av;
case wx: return lv;
case Dx: return fv;
case Ox: return gv;
}
return I;
});
function oT(j, I, q) {
for (var Q = -1, p_ = q.length; ++Q < p_;) {
var m_ = q[Q], h_ = m_.size;
switch (m_.type) {
case "drop":
j += h_;
break;
case "dropRight":
I -= h_;
break;
case "take":
I = nb(I, j + h_);
break;
case "takeRight":
j = Zy(j, I - h_);
break;
}
}
return {
start: j,
end: I
};
}
function sT(j) {
var I = j.match(qv);
return I ? I[1].split(Jv) : [];
}
function cT(j, I, q) {
I = QC(I, j);
for (var Q = -1, p_ = I.length, m_ = !1; ++Q < p_;) {
var h_ = zT(I[Q]);
if (!(m_ = j != null && q(j, h_))) break;
j = j[h_];
}
return m_ || ++Q != p_ ? m_ : (p_ = j == null ? 0 : j.length, !!p_ && jO(p_) && mT(h_, p_) && (gO(j) || hO(j)));
}
function lT(j) {
var I = j.length, q = new j.constructor(I);
return I && typeof j[0] == "string" && by.call(j, "index") && (q.index = j.index, q.input = j.input), q;
}
function uT(j) {
return typeof j.constructor == "function" && !xT(j) ? Nx(jy(j)) : {};
}
function dT(j, I, q) {
var Q = j.constructor;
switch (I) {
case vv: return rw(j);
case $_:
case ev: return new Q(+j);
case yv: return iw(j, q);
case bv:
case xv:
case Sv:
case Cv:
case wv:
case Tv:
case Ev:
case Dv:
case Ov: return sw(j, q);
case av: return new Q();
case ov:
case pv: return new Q(j);
case dv: return aw(j);
case fv: return new Q();
case mv: return ow(j);
}
}
function fT(j, I) {
var q = I.length;
if (!q) return j;
var Q = q - 1;
return I[Q] = (q > 1 ? "& " : "") + I[Q], I = I.join(q > 2 ? ", " : " "), j.replace(Kv, "{\n/* [wrapped with " + I + "] */\n");
}
function pT(j) {
return gO(j) || hO(j) || !!(Fy && j && j[Fy]);
}
function mT(j, I) {
var q = typeof j;
return I ??= U_, !!I && (q == "number" || q != "symbol" && iy.test(j)) && j > -1 && j % 1 == 0 && j < I;
}
function hT(j, I, q) {
if (!MO(q)) return !1;
var Q = typeof I;
return (Q == "number" ? vO(q) && mT(I, q.length) : Q == "string" && I in q) ? fO(q[I], j) : !1;
}
function gT(j, I) {
if (gO(j)) return !1;
var q = typeof j;
return q == "number" || q == "symbol" || q == "boolean" || j == null || qO(j) ? !0 : Bv.test(j) || !zv.test(j) || I != null && j in dy(I);
}
function _T(j) {
var I = typeof j;
return I == "string" || I == "number" || I == "symbol" || I == "boolean" ? j !== "__proto__" : j === null;
}
function vT(j) {
var I = Xw(j), q = Mx[I];
if (typeof q != "function" || !(I in Ix.prototype)) return !1;
if (j === q) return !0;
var Q = Yw(q);
return !!Q && j === Q[0];
}
function yT(j) {
return !!Sy && Sy in j;
}
var bT = vy ? kO : nj;
function xT(j) {
var I = j && j.constructor, q = typeof I == "function" && I.prototype || _y;
return j === q;
}
function ST(j) {
return j === j && !MO(j);
}
function CT(j, I) {
return function(Q) {
return Q == null ? !1 : Q[j] === I && (I !== q || j in dy(Q));
};
}
function wT(j) {
var I = JD(j, function(j) {
return q.size === v_ && q.clear(), j;
}), q = I.cache;
return I;
}
function TT(j, I) {
var q = j[1], Q = I[1], p_ = q | Q, m_ = p_ < (T_ | E_ | M_), h_ = Q == M_ && q == O_ || Q == M_ && q == N_ && j[7].length <= I[8] || Q == (M_ | N_) && I[7].length <= I[8] && q == O_;
if (!(m_ || h_)) return j;
Q & T_ && (j[2] = I[2], p_ |= q & T_ ? 0 : D_);
var g_ = I[3];
if (g_) {
var __ = j[3];
j[3] = __ ? uw(__, g_, I[4]) : g_, j[4] = __ ? mx(j[3], y_) : I[4];
}
return g_ = I[5], g_ && (__ = j[5], j[5] = __ ? dw(__, g_, I[6]) : g_, j[6] = __ ? mx(j[5], y_) : I[6]), g_ = I[7], g_ && (j[7] = g_), Q & M_ && (j[8] = j[8] == null ? I[8] : nb(j[8], I[8])), j[9] ??= I[9], j[0] = I[0], j[1] = p_, j;
}
function ET(j) {
var I = [];
if (j != null) for (var q in dy(j)) I.push(q);
return I;
}
function DT(j) {
return Cy.call(j);
}
function OT(j, I, Q) {
return I = Zy(I === q ? j.length - 1 : I, 0), function() {
for (var q = arguments, p_ = -1, m_ = Zy(q.length - I, 0), h_ = Gv(m_); ++p_ < m_;) h_[p_] = q[I + p_];
p_ = -1;
for (var g_ = Gv(I + 1); ++p_ < I;) g_[p_] = q[p_];
return g_[I] = Q(h_), Sb(j, this, g_);
};
}
function kT(j, I) {
return I.length < 2 ? j : US(j, IC(I, 0, -1));
}
function AT(j, I) {
for (var Q = j.length, p_ = nb(I.length, Q), m_ = fw(j); p_--;) {
var h_ = I[p_];
j[p_] = mT(h_, Q) ? m_[h_] : q;
}
return j;
}
function jT(j, I) {
if (!(I === "constructor" && typeof j[I] == "function") && I != "__proto__") return j[I];
}
var MT = IT(NC), NT = Vy || function(j, I) {
return ub.setTimeout(j, I);
}, PT = IT(PC);
function FT(j, I, q) {
var Q = I + "";
return PT(j, fT(Q, VT(sT(Q), q)));
}
function IT(j) {
var I = 0, Q = 0;
return function() {
var p_ = rb(), m_ = R_ - (p_ - Q);
if (Q = p_, m_ > 0) {
if (++I >= L_) return arguments[0];
} else I = 0;
return j.apply(q, arguments);
};
}
function LT(j, I) {
var Q = -1, p_ = j.length, m_ = p_ - 1;
for (I = I === q ? p_ : I; ++Q < I;) {
var h_ = EC(Q, m_), g_ = j[h_];
j[h_] = j[Q], j[Q] = g_;
}
return j.length = I, j;
}
var RT = wT(function(j) {
var I = [];
return j.charCodeAt(0) === 46 && I.push(""), j.replace(Vv, function(j, q, Q, p_) {
I.push(Q ? p_.replace(Zv, "$1") : q || j);
}), I;
});
function zT(j) {
if (typeof j == "string" || qO(j)) return j;
var I = j + "";
return I == "0" && 1 / j == -H_ ? "-0" : I;
}
function BT(j) {
if (j != null) {
try {
return yy.call(j);
} catch {}
try {
return j + "";
} catch {}
}
return "";
}
function VT(j, I) {
return wb(Y_, function(q) {
var Q = "_." + q[0];
I & q[1] && !Ob(j, Q) && j.push(Q);
}), j.sort();
}
function HT(j) {
if (j instanceof Ix) return j.clone();
var I = new Fx(j.__wrapped__, j.__chain__);
return I.__actions__ = fw(j.__actions__), I.__index__ = j.__index__, I.__values__ = j.__values__, I;
}
function UT(j, I, Q) {
I = (Q ? hT(j, I, Q) : I === q) ? 1 : Zy(nk(I), 0);
var p_ = j == null ? 0 : j.length;
if (!p_ || I < 1) return [];
for (var m_ = 0, h_ = 0, g_ = Gv(Hy(p_ / I)); m_ < p_;) g_[h_++] = IC(j, m_, m_ += I);
return g_;
}
function WT(j) {
for (var I = -1, q = j == null ? 0 : j.length, Q = 0, p_ = []; ++I < q;) {
var m_ = j[I];
m_ && (p_[Q++] = m_);
}
return p_;
}
function GT() {
var j = arguments.length;
if (!j) return [];
for (var I = Gv(j - 1), q = arguments[0], Q = j; Q--;) I[Q - 1] = arguments[Q];
return jb(gO(q) ? fw(q) : [q], LS(I, 1));
}
var KT = kC(function(j, I) {
return yO(j) ? AS(j, LS(I, 1, yO, !0)) : [];
}), qT = kC(function(j, I) {
var Q = pE(I);
return yO(Q) && (Q = q), yO(j) ? AS(j, LS(I, 1, yO, !0), Qw(Q, 2)) : [];
}), JT = kC(function(j, I) {
var Q = pE(I);
return yO(Q) && (Q = q), yO(j) ? AS(j, LS(I, 1, yO, !0), q, Q) : [];
});
function YT(j, I, Q) {
var p_ = j == null ? 0 : j.length;
return p_ ? (I = Q || I === q ? 1 : nk(I), IC(j, I < 0 ? 0 : I, p_)) : [];
}
function XT(j, I, Q) {
var p_ = j == null ? 0 : j.length;
return p_ ? (I = Q || I === q ? 1 : nk(I), I = p_ - I, IC(j, 0, I < 0 ? 0 : I)) : [];
}
function ZT(j, I) {
return j && j.length ? KC(j, Qw(I, 3), !0, !0) : [];
}
function QT(j, I) {
return j && j.length ? KC(j, Qw(I, 3), !0) : [];
}
function $T(j, I, q, Q) {
var p_ = j == null ? 0 : j.length;
return p_ ? (q && typeof q != "number" && hT(j, I, q) && (q = 0, Q = p_), FS(j, I, q, Q)) : [];
}
function eE(j, I, q) {
var Q = j == null ? 0 : j.length;
if (!Q) return -1;
var p_ = q == null ? 0 : nk(q);
return p_ < 0 && (p_ = Zy(Q + p_, 0)), zb(j, Qw(I, 3), p_);
}
function tE(j, I, Q) {
var p_ = j == null ? 0 : j.length;
if (!p_) return -1;
var m_ = p_ - 1;
return Q !== q && (m_ = nk(Q), m_ = Q < 0 ? Zy(p_ + m_, 0) : nb(m_, p_ - 1)), zb(j, Qw(I, 3), m_, !0);
}
function nE(j) {
return j != null && j.length ? LS(j, 1) : [];
}
function rE(j) {
return j != null && j.length ? LS(j, H_) : [];
}
function iE(j, I) {
return j != null && j.length ? (I = I === q ? 1 : nk(I), LS(j, I)) : [];
}
function aE(j) {
for (var I = -1, q = j == null ? 0 : j.length, Q = {}; ++I < q;) {
var p_ = j[I];
Q[p_[0]] = p_[1];
}
return Q;
}
function oE(j) {
return j && j.length ? j[0] : q;
}
function sE(j, I, q) {
var Q = j == null ? 0 : j.length;
if (!Q) return -1;
var p_ = q == null ? 0 : nk(q);
return p_ < 0 && (p_ = Zy(Q + p_, 0)), Bb(j, I, p_);
}
function cE(j) {
return j != null && j.length ? IC(j, 0, -1) : [];
}
var lE = kC(function(j) {
var I = Ab(j, XC);
return I.length && I[0] === j[0] ? XS(I) : [];
}), uE = kC(function(j) {
var I = pE(j), Q = Ab(j, XC);
return I === pE(Q) ? I = q : Q.pop(), Q.length && Q[0] === j[0] ? XS(Q, Qw(I, 2)) : [];
}), dE = kC(function(j) {
var I = pE(j), Q = Ab(j, XC);
return I = typeof I == "function" ? I : q, I && Q.pop(), Q.length && Q[0] === j[0] ? XS(Q, q, I) : [];
});
function fE(j, I) {
return j == null ? "" : Yy.call(j, I);
}
function pE(j) {
var I = j == null ? 0 : j.length;
return I ? j[I - 1] : q;
}
function mE(j, I, Q) {
var p_ = j == null ? 0 : j.length;
if (!p_) return -1;
var m_ = p_;
return Q !== q && (m_ = nk(Q), m_ = m_ < 0 ? Zy(p_ + m_, 0) : nb(m_, p_ - 1)), I === I ? vx(j, I, m_) : zb(j, Hb, m_, !0);
}
function hE(j, I) {
return j && j.length ? yC(j, nk(I)) : q;
}
var gE = kC(_E);
function _E(j, I) {
return j && j.length && I && I.length ? wC(j, I) : j;
}
function vE(j, I, q) {
return j && j.length && I && I.length ? wC(j, I, Qw(q, 2)) : j;
}
function yE(j, I, Q) {
return j && j.length && I && I.length ? wC(j, I, q, Q) : j;
}
var bE = Kw(function(j, I) {
var q = j == null ? 0 : j.length, Q = wS(j, I);
return TC(j, Ab(I, function(j) {
return mT(j, q) ? +j : j;
}).sort(cw)), Q;
});
function xE(j, I) {
var q = [];
if (!(j && j.length)) return q;
var Q = -1, p_ = [], m_ = j.length;
for (I = Qw(I, 3); ++Q < m_;) {
var h_ = j[Q];
I(h_, Q, j) && (q.push(h_), p_.push(Q));
}
return TC(j, p_), q;
}
function SE(j) {
return j == null ? j : cb.call(j);
}
function CE(j, I, Q) {
var p_ = j == null ? 0 : j.length;
return p_ ? (Q && typeof Q != "number" && hT(j, I, Q) ? (I = 0, Q = p_) : (I = I == null ? 0 : nk(I), Q = Q === q ? p_ : nk(Q)), IC(j, I, Q)) : [];
}
function wE(j, I) {
return RC(j, I);
}
function TE(j, I, q) {
return zC(j, I, Qw(q, 2));
}
function EE(j, I) {
var q = j == null ? 0 : j.length;
if (q) {
var Q = RC(j, I);
if (Q < q && fO(j[Q], I)) return Q;
}
return -1;
}
function DE(j, I) {
return RC(j, I, !0);
}
function OE(j, I, q) {
return zC(j, I, Qw(q, 2), !0);
}
function kE(j, I) {
if (j != null && j.length) {
var q = RC(j, I, !0) - 1;
if (fO(j[q], I)) return q;
}
return -1;
}
function AE(j) {
return j && j.length ? BC(j) : [];
}
function jE(j, I) {
return j && j.length ? BC(j, Qw(I, 2)) : [];
}
function ME(j) {
var I = j == null ? 0 : j.length;
return I ? IC(j, 1, I) : [];
}
function NE(j, I, Q) {
return j && j.length ? (I = Q || I === q ? 1 : nk(I), IC(j, 0, I < 0 ? 0 : I)) : [];
}
function PE(j, I, Q) {
var p_ = j == null ? 0 : j.length;
return p_ ? (I = Q || I === q ? 1 : nk(I), I = p_ - I, IC(j, I < 0 ? 0 : I, p_)) : [];
}
function FE(j, I) {
return j && j.length ? KC(j, Qw(I, 3), !1, !0) : [];
}
function IE(j, I) {
return j && j.length ? KC(j, Qw(I, 3)) : [];
}
var LE = kC(function(j) {
return UC(LS(j, 1, yO, !0));
}), RE = kC(function(j) {
var I = pE(j);
return yO(I) && (I = q), UC(LS(j, 1, yO, !0), Qw(I, 2));
}), zE = kC(function(j) {
var I = pE(j);
return I = typeof I == "function" ? I : q, UC(LS(j, 1, yO, !0), q, I);
});
function BE(j) {
return j && j.length ? UC(j) : [];
}
function VE(j, I) {
return j && j.length ? UC(j, Qw(I, 2)) : [];
}
function HE(j, I) {
return I = typeof I == "function" ? I : q, j && j.length ? UC(j, q, I) : [];
}
function UE(j) {
if (!(j && j.length)) return [];
var I = 0;
return j = Db(j, function(j) {
if (yO(j)) return I = Zy(j.length, I), !0;
}), Yb(I, function(I) {
return Ab(j, Wb(I));
});
}
function WE(j, I) {
if (!(j && j.length)) return [];
var Q = UE(j);
return I == null ? Q : Ab(Q, function(j) {
return Sb(I, q, j);
});
}
var GE = kC(function(j, I) {
return yO(j) ? AS(j, I) : [];
}), KE = kC(function(j) {
return JC(Db(j, yO));
}), qE = kC(function(j) {
var I = pE(j);
return yO(I) && (I = q), JC(Db(j, yO), Qw(I, 2));
}), JE = kC(function(j) {
var I = pE(j);
return I = typeof I == "function" ? I : q, JC(Db(j, yO), q, I);
}), YE = kC(UE);
function XE(j, I) {
return YC(j || [], I || [], vS);
}
function ZE(j, I) {
return YC(j || [], I || [], MC);
}
var QE = kC(function(j) {
var I = j.length, Q = I > 1 ? j[I - 1] : q;
return Q = typeof Q == "function" ? (j.pop(), Q) : q, WE(j, Q);
});
function $E(j) {
var I = Mx(j);
return I.__chain__ = !0, I;
}
function eD(j, I) {
return I(j), j;
}
function tD(j, I) {
return I(j);
}
var nD = Kw(function(j) {
var I = j.length, Q = I ? j[0] : 0, p_ = this.__wrapped__, m_ = function(I) {
return wS(I, j);
};
return I > 1 || this.__actions__.length || !(p_ instanceof Ix) || !mT(Q) ? this.thru(m_) : (p_ = p_.slice(Q, +Q + (I ? 1 : 0)), p_.__actions__.push({
func: tD,
args: [m_],
thisArg: q
}), new Fx(p_, this.__chain__).thru(function(j) {
return I && !j.length && j.push(q), j;
}));
});
function rD() {
return $E(this);
}
function iD() {
return new Fx(this.value(), this.__chain__);
}
function aD() {
this.__values__ === q && (this.__values__ = ek(this.value()));
var j = this.__index__ >= this.__values__.length, I = j ? q : this.__values__[this.__index__++];
return {
done: j,
value: I
};
}
function oD() {
return this;
}
function sD(j) {
for (var I, Q = this; Q instanceof Px;) {
var p_ = HT(Q);
p_.__index__ = 0, p_.__values__ = q, I ? m_.__wrapped__ = p_ : I = p_;
var m_ = p_;
Q = Q.__wrapped__;
}
return m_.__wrapped__ = j, I;
}
function cD() {
var j = this.__wrapped__;
if (j instanceof Ix) {
var I = j;
return this.__actions__.length && (I = new Ix(this)), I = I.reverse(), I.__actions__.push({
func: tD,
args: [SE],
thisArg: q
}), new Fx(I, this.__chain__);
}
return this.thru(SE);
}
function lD() {
return qC(this.__wrapped__, this.__actions__);
}
var uD = gw(function(j, I, q) {
by.call(j, q) ? ++j[q] : CS(j, q, 1);
});
function dD(j, I, Q) {
var p_ = gO(j) ? Eb : NS;
return Q && hT(j, I, Q) && (I = q), p_(j, Qw(I, 3));
}
function fD(j, I) {
return (gO(j) ? Db : IS)(j, Qw(I, 3));
}
var pD = Tw(eE), mD = Tw(tE);
function hD(j, I) {
return LS(wD(j, I), 1);
}
function gD(j, I) {
return LS(wD(j, I), H_);
}
function _D(j, I, Q) {
return Q = Q === q ? 1 : nk(Q), LS(wD(j, I), Q);
}
function vD(j, I) {
return (gO(j) ? wb : jS)(j, Qw(I, 3));
}
function yD(j, I) {
return (gO(j) ? Tb : MS)(j, Qw(I, 3));
}
var bD = gw(function(j, I, q) {
by.call(j, q) ? j[q].push(I) : CS(j, q, [I]);
});
function xD(j, I, q, Q) {
j = vO(j) ? j : Yk(j), q = q && !Q ? nk(q) : 0;
var p_ = j.length;
return q < 0 && (q = Zy(p_ + q, 0)), KO(j) ? q <= p_ && j.indexOf(I, q) > -1 : !!p_ && Bb(j, I, q) > -1;
}
var SD = kC(function(j, I, q) {
var Q = -1, p_ = typeof I == "function", m_ = vO(j) ? Gv(j.length) : [];
return jS(j, function(j) {
m_[++Q] = p_ ? Sb(I, j, q) : QS(j, I, q);
}), m_;
}), CD = gw(function(j, I, q) {
CS(j, q, I);
});
function wD(j, I) {
return (gO(j) ? Ab : mC)(j, Qw(I, 3));
}
function TD(j, I, Q, p_) {
return j == null ? [] : (gO(I) || (I = I == null ? [] : [I]), Q = p_ ? q : Q, gO(Q) || (Q = Q == null ? [] : [Q]), bC(j, I, Q));
}
var ED = gw(function(j, I, q) {
j[q ? 0 : 1].push(I);
}, function() {
return [[], []];
});
function DD(j, I, q) {
var Q = gO(j) ? Mb : Kb, p_ = arguments.length < 3;
return Q(j, Qw(I, 4), q, p_, jS);
}
function OD(j, I, q) {
var Q = gO(j) ? Nb : Kb, p_ = arguments.length < 3;
return Q(j, Qw(I, 4), q, p_, MS);
}
function kD(j, I) {
return (gO(j) ? Db : IS)(j, YD(Qw(I, 3)));
}
function AD(j) {
return (gO(j) ? mS : AC)(j);
}
function jD(j, I, Q) {
return I = (Q ? hT(j, I, Q) : I === q) ? 1 : nk(I), (gO(j) ? hS : jC)(j, I);
}
function MD(j) {
return (gO(j) ? gS : FC)(j);
}
function ND(j) {
if (j == null) return 0;
if (vO(j)) return KO(j) ? yx(j) : j.length;
var I = aT(j);
return I == av || I == fv ? j.size : dC(j).length;
}
function PD(j, I, Q) {
var p_ = gO(j) ? Pb : LC;
return Q && hT(j, I, Q) && (I = q), p_(j, Qw(I, 3));
}
var FD = kC(function(j, I) {
if (j == null) return [];
var q = I.length;
return q > 1 && hT(j, I[0], I[1]) ? I = [] : q > 2 && hT(I[0], I[1], I[2]) && (I = [I[0]]), bC(j, LS(I, 1), []);
}), ID = By || function() {
return ub.Date.now();
};
function LD(j, I) {
if (typeof I != "function") throw new my(h_);
return j = nk(j), function() {
if (--j < 1) return I.apply(this, arguments);
};
}
function RD(j, I, Q) {
return I = Q ? q : I, I = j && I == null ? j.length : I, zw(j, M_, q, q, q, q, I);
}
function zD(j, I) {
var Q;
if (typeof I != "function") throw new my(h_);
return j = nk(j), function() {
return --j > 0 && (Q = I.apply(this, arguments)), j <= 1 && (I = q), Q;
};
}
var BD = kC(function(j, I, q) {
var Q = T_;
if (q.length) {
var p_ = mx(q, Zw(BD));
Q |= A_;
}
return zw(j, Q, I, q, p_);
}), VD = kC(function(j, I, q) {
var Q = T_ | E_;
if (q.length) {
var p_ = mx(q, Zw(VD));
Q |= A_;
}
return zw(I, Q, j, q, p_);
});
function HD(j, I, Q) {
I = Q ? q : I;
var p_ = zw(j, O_, q, q, q, q, q, I);
return p_.placeholder = HD.placeholder, p_;
}
function UD(j, I, Q) {
I = Q ? q : I;
var p_ = zw(j, k_, q, q, q, q, q, I);
return p_.placeholder = UD.placeholder, p_;
}
function WD(j, I, Q) {
var p_, m_, g_, __, v_, y_, b_ = 0, x_ = !1, S_ = !1, C_ = !0;
if (typeof j != "function") throw new my(h_);
I = ik(I) || 0, MO(Q) && (x_ = !!Q.leading, S_ = "maxWait" in Q, g_ = S_ ? Zy(ik(Q.maxWait) || 0, I) : g_, C_ = "trailing" in Q ? !!Q.trailing : C_);
function w_(I) {
var Q = p_, h_ = m_;
return p_ = m_ = q, b_ = I, __ = j.apply(h_, Q), __;
}
function T_(j) {
return b_ = j, v_ = NT(O_, I), x_ ? w_(j) : __;
}
function E_(j) {
var q = j - y_, Q = j - b_, p_ = I - q;
return S_ ? nb(p_, g_ - Q) : p_;
}
function D_(j) {
var Q = j - y_, p_ = j - b_;
return y_ === q || Q >= I || Q < 0 || S_ && p_ >= g_;
}
function O_() {
var j = ID();
if (D_(j)) return k_(j);
v_ = NT(O_, E_(j));
}
function k_(j) {
return v_ = q, C_ && p_ ? w_(j) : (p_ = m_ = q, __);
}
function A_() {
v_ !== q && tw(v_), b_ = 0, p_ = y_ = m_ = v_ = q;
}
function j_() {
return v_ === q ? __ : k_(ID());
}
function M_() {
var j = ID(), Q = D_(j);
if (p_ = arguments, m_ = this, y_ = j, Q) {
if (v_ === q) return T_(y_);
if (S_) return tw(v_), v_ = NT(O_, I), w_(y_);
}
return v_ === q && (v_ = NT(O_, I)), __;
}
return M_.cancel = A_, M_.flush = j_, M_;
}
var GD = kC(function(j, I) {
return kS(j, 1, I);
}), KD = kC(function(j, I, q) {
return kS(j, ik(I) || 0, q);
});
function qD(j) {
return zw(j, P_);
}
function JD(j, I) {
if (typeof j != "function" || I != null && typeof I != "function") throw new my(h_);
var q = function() {
var Q = arguments, p_ = I ? I.apply(this, Q) : Q[0], m_ = q.cache;
if (m_.has(p_)) return m_.get(p_);
var h_ = j.apply(this, Q);
return q.cache = m_.set(p_, h_) || m_, h_;
};
return q.cache = new (JD.Cache || Qx)(), q;
}
JD.Cache = Qx;
function YD(j) {
if (typeof j != "function") throw new my(h_);
return function() {
var I = arguments;
switch (I.length) {
case 0: return !j.call(this);
case 1: return !j.call(this, I[0]);
case 2: return !j.call(this, I[0], I[1]);
case 3: return !j.call(this, I[0], I[1], I[2]);
}
return !j.apply(this, I);
};
}
function XD(j) {
return zD(2, j);
}
var ZD = $C(function(j, I) {
I = I.length == 1 && gO(I[0]) ? Ab(I[0], Qb(Qw())) : Ab(LS(I, 1), Qb(Qw()));
var q = I.length;
return kC(function(Q) {
for (var p_ = -1, m_ = nb(Q.length, q); ++p_ < m_;) Q[p_] = I[p_].call(this, Q[p_]);
return Sb(j, this, Q);
});
}), QD = kC(function(j, I) {
var Q = mx(I, Zw(QD));
return zw(j, A_, q, I, Q);
}), $D = kC(function(j, I) {
var Q = mx(I, Zw($D));
return zw(j, j_, q, I, Q);
}), eO = Kw(function(j, I) {
return zw(j, N_, q, q, q, I);
});
function tO(j, I) {
if (typeof j != "function") throw new my(h_);
return I = I === q ? I : nk(I), kC(j, I);
}
function nO(j, I) {
if (typeof j != "function") throw new my(h_);
return I = I == null ? 0 : Zy(nk(I), 0), kC(function(q) {
var Q = q[I], p_ = ew(q, 0, I);
return Q && jb(p_, Q), Sb(j, this, p_);
});
}
function rO(j, I, q) {
var Q = !0, p_ = !0;
if (typeof j != "function") throw new my(h_);
return MO(q) && (Q = "leading" in q ? !!q.leading : Q, p_ = "trailing" in q ? !!q.trailing : p_), WD(j, I, {
leading: Q,
maxWait: I,
trailing: p_
});
}
function iO(j) {
return RD(j, 1);
}
function aO(j, I) {
return QD(ZC(I), j);
}
function oO() {
if (!arguments.length) return [];
var j = arguments[0];
return gO(j) ? j : [j];
}
function sO(j) {
return ES(j, S_);
}
function cO(j, I) {
return I = typeof I == "function" ? I : q, ES(j, S_, I);
}
function lO(j) {
return ES(j, b_ | S_);
}
function uO(j, I) {
return I = typeof I == "function" ? I : q, ES(j, b_ | S_, I);
}
function dO(j, I) {
return I == null || OS(j, I, Ak(I));
}
function fO(j, I) {
return j === I || j !== j && I !== I;
}
var pO = Pw(KS), mO = Pw(function(j, I) {
return j >= I;
}), hO = $S(function() {
return arguments;
}()) ? $S : function(j) {
return NO(j) && by.call(j, "callee") && !Ny.call(j, "callee");
}, gO = Gv.isArray, _O = gb ? Qb(gb) : eC;
function vO(j) {
return j != null && jO(j.length) && !kO(j);
}
function yO(j) {
return NO(j) && vO(j);
}
function bO(j) {
return j === !0 || j === !1 || NO(j) && GS(j) == $_;
}
var xO = Gy || nj, SO = _b ? Qb(_b) : tC;
function CO(j) {
return NO(j) && j.nodeType === 1 && !HO(j);
}
function wO(j) {
if (j == null) return !0;
if (vO(j) && (gO(j) || typeof j == "string" || typeof j.splice == "function" || xO(j) || JO(j) || hO(j))) return !j.length;
var I = aT(j);
if (I == av || I == fv) return !j.size;
if (xT(j)) return !dC(j).length;
for (var q in j) if (by.call(j, q)) return !1;
return !0;
}
function TO(j, I) {
return nC(j, I);
}
function EO(j, I, Q) {
Q = typeof Q == "function" ? Q : q;
var p_ = Q ? Q(j, I) : q;
return p_ === q ? nC(j, I, q, Q) : !!p_;
}
function DO(j) {
if (!NO(j)) return !1;
var I = GS(j);
return I == nv || I == tv || typeof j.message == "string" && typeof j.name == "string" && !HO(j);
}
function OO(j) {
return typeof j == "number" && Jy(j);
}
function kO(j) {
if (!MO(j)) return !1;
var I = GS(j);
return I == rv || I == iv || I == Q_ || I == uv;
}
function AO(j) {
return typeof j == "number" && j == nk(j);
}
function jO(j) {
return typeof j == "number" && j > -1 && j % 1 == 0 && j <= U_;
}
function MO(j) {
var I = typeof j;
return j != null && (I == "object" || I == "function");
}
function NO(j) {
return typeof j == "object" && !!j;
}
var PO = vb ? Qb(vb) : iC;
function FO(j, I) {
return j === I || aC(j, I, eT(I));
}
function IO(j, I, Q) {
return Q = typeof Q == "function" ? Q : q, aC(j, I, eT(I), Q);
}
function LO(j) {
return VO(j) && j != +j;
}
function RO(j) {
if (bT(j)) throw new cy(m_);
return oC(j);
}
function zO(j) {
return j === null;
}
function BO(j) {
return j == null;
}
function VO(j) {
return typeof j == "number" || NO(j) && GS(j) == ov;
}
function HO(j) {
if (!NO(j) || GS(j) != cv) return !1;
var I = jy(j);
if (I === null) return !0;
var q = by.call(I, "constructor") && I.constructor;
return typeof q == "function" && q instanceof q && yy.call(q) == wy;
}
var UO = yb ? Qb(yb) : sC;
function WO(j) {
return AO(j) && j >= -U_ && j <= U_;
}
var GO = bb ? Qb(bb) : cC;
function KO(j) {
return typeof j == "string" || !gO(j) && NO(j) && GS(j) == pv;
}
function qO(j) {
return typeof j == "symbol" || NO(j) && GS(j) == mv;
}
var JO = xb ? Qb(xb) : lC;
function YO(j) {
return j === q;
}
function XO(j) {
return NO(j) && aT(j) == gv;
}
function ZO(j) {
return NO(j) && GS(j) == _v;
}
var QO = Pw(pC), $O = Pw(function(j, I) {
return j <= I;
});
function ek(j) {
if (!j) return [];
if (vO(j)) return KO(j) ? bx(j) : fw(j);
if (Iy && j[Iy]) return dx(j[Iy]());
var I = aT(j);
return (I == av ? fx : I == fv ? hx : Yk)(j);
}
function tk(j) {
return j ? (j = ik(j), j === H_ || j === -H_ ? (j < 0 ? -1 : 1) * W_ : j === j ? j : 0) : j === 0 ? j : 0;
}
function nk(j) {
var I = tk(j), q = I % 1;
return I === I ? q ? I - q : I : 0;
}
function rk(j) {
return j ? TS(nk(j), 0, K_) : 0;
}
function ik(j) {
if (typeof j == "number") return j;
if (qO(j)) return G_;
if (MO(j)) {
var I = typeof j.valueOf == "function" ? j.valueOf() : j;
j = MO(I) ? I + "" : I;
}
if (typeof j != "string") return j === 0 ? j : +j;
j = Zb(j);
var q = ty.test(j);
return q || ry.test(j) ? sb(j.slice(2), q ? 2 : 8) : ey.test(j) ? G_ : +j;
}
function ak(j) {
return pw(j, jk(j));
}
function ok(j) {
return j ? TS(nk(j), -U_, U_) : j === 0 ? j : 0;
}
function sk(j) {
return j == null ? "" : HC(j);
}
var ck = _w(function(j, I) {
if (xT(I) || vO(I)) {
pw(I, Ak(I), j);
return;
}
for (var q in I) by.call(I, q) && vS(j, q, I[q]);
}), lk = _w(function(j, I) {
pw(I, jk(I), j);
}), uk = _w(function(j, I, q, Q) {
pw(I, jk(I), j, Q);
}), dk = _w(function(j, I, q, Q) {
pw(I, Ak(I), j, Q);
}), fk = Kw(wS);
function pk(j, I) {
var q = Nx(j);
return I == null ? q : xS(q, I);
}
var mk = kC(function(j, I) {
j = dy(j);
var Q = -1, p_ = I.length, m_ = p_ > 2 ? I[2] : q;
for (m_ && hT(I[0], I[1], m_) && (p_ = 1); ++Q < p_;) for (var h_ = I[Q], g_ = jk(h_), __ = -1, v_ = g_.length; ++__ < v_;) {
var y_ = g_[__], b_ = j[y_];
(b_ === q || fO(b_, _y[y_]) && !by.call(j, y_)) && (j[y_] = h_[y_]);
}
return j;
}), hk = kC(function(j) {
return j.push(q, Vw), Sb(Fk, q, j);
});
function gk(j, I) {
return Rb(j, Qw(I, 3), BS);
}
function _k(j, I) {
return Rb(j, Qw(I, 3), VS);
}
function vk(j, I) {
return j == null ? j : RS(j, Qw(I, 3), jk);
}
function yk(j, I) {
return j == null ? j : zS(j, Qw(I, 3), jk);
}
function bk(j, I) {
return j && BS(j, Qw(I, 3));
}
function xk(j, I) {
return j && VS(j, Qw(I, 3));
}
function Sk(j) {
return j == null ? [] : HS(j, Ak(j));
}
function Ck(j) {
return j == null ? [] : HS(j, jk(j));
}
function wk(j, I, Q) {
var p_ = j == null ? q : US(j, I);
return p_ === q ? Q : p_;
}
function Tk(j, I) {
return j != null && cT(j, I, qS);
}
function Ek(j, I) {
return j != null && cT(j, I, JS);
}
var Dk = Ow(function(j, I, q) {
I != null && typeof I.toString != "function" && (I = Cy.call(I)), j[I] = q;
}, PA(RA)), Ok = Ow(function(j, I, q) {
I != null && typeof I.toString != "function" && (I = Cy.call(I)), by.call(j, I) ? j[I].push(q) : j[I] = [q];
}, Qw), kk = kC(QS);
function Ak(j) {
return vO(j) ? pS(j) : dC(j);
}
function jk(j) {
return vO(j) ? pS(j, !0) : fC(j);
}
function Mk(j, I) {
var q = {};
return I = Qw(I, 3), BS(j, function(j, Q, p_) {
CS(q, I(j, Q, p_), j);
}), q;
}
function Nk(j, I) {
var q = {};
return I = Qw(I, 3), BS(j, function(j, Q, p_) {
CS(q, Q, I(j, Q, p_));
}), q;
}
var Pk = _w(function(j, I, q) {
_C(j, I, q);
}), Fk = _w(function(j, I, q, Q) {
_C(j, I, q, Q);
}), Ik = Kw(function(j, I) {
var q = {};
if (j == null) return q;
var Q = !1;
I = Ab(I, function(I) {
return I = QC(I, j), Q ||= I.length > 1, I;
}), pw(j, Jw(j), q), Q && (q = ES(q, b_ | x_ | S_, Hw));
for (var p_ = I.length; p_--;) WC(q, I[p_]);
return q;
});
function Lk(j, I) {
return zk(j, YD(Qw(I)));
}
var Rk = Kw(function(j, I) {
return j == null ? {} : xC(j, I);
});
function zk(j, I) {
if (j == null) return {};
var q = Ab(Jw(j), function(j) {
return [j];
});
return I = Qw(I), SC(j, q, function(j, q) {
return I(j, q[0]);
});
}
function Bk(j, I, Q) {
I = QC(I, j);
var p_ = -1, m_ = I.length;
for (m_ || (m_ = 1, j = q); ++p_ < m_;) {
var h_ = j == null ? q : j[zT(I[p_])];
h_ === q && (p_ = m_, h_ = Q), j = kO(h_) ? h_.call(j) : h_;
}
return j;
}
function Vk(j, I, q) {
return j == null ? j : MC(j, I, q);
}
function Hk(j, I, Q, p_) {
return p_ = typeof p_ == "function" ? p_ : q, j == null ? j : MC(j, I, Q, p_);
}
var Uk = Rw(Ak), Wk = Rw(jk);
function Gk(j, I, q) {
var Q = gO(j), p_ = Q || xO(j) || JO(j);
if (I = Qw(I, 4), q == null) {
var m_ = j && j.constructor;
q = p_ ? Q ? new m_() : [] : MO(j) && kO(m_) ? Nx(jy(j)) : {};
}
return (p_ ? wb : BS)(j, function(j, Q, p_) {
return I(q, j, Q, p_);
}), q;
}
function Kk(j, I) {
return j == null ? !0 : WC(j, I);
}
function qk(j, I, q) {
return j == null ? j : GC(j, I, ZC(q));
}
function Jk(j, I, Q, p_) {
return p_ = typeof p_ == "function" ? p_ : q, j == null ? j : GC(j, I, ZC(Q), p_);
}
function Yk(j) {
return j == null ? [] : $b(j, Ak(j));
}
function Xk(j) {
return j == null ? [] : $b(j, jk(j));
}
function Zk(j, I, Q) {
return Q === q && (Q = I, I = q), Q !== q && (Q = ik(Q), Q = Q === Q ? Q : 0), I !== q && (I = ik(I), I = I === I ? I : 0), TS(ik(j), I, Q);
}
function Qk(j, I, Q) {
return I = tk(I), Q === q ? (Q = I, I = 0) : Q = tk(Q), j = ik(j), YS(j, I, Q);
}
function $k(j, I, Q) {
if (Q && typeof Q != "boolean" && hT(j, I, Q) && (I = Q = q), Q === q && (typeof I == "boolean" ? (Q = I, I = q) : typeof j == "boolean" && (Q = j, j = q)), j === q && I === q ? (j = 0, I = 1) : (j = tk(j), I === q ? (I = j, j = 0) : I = tk(I)), j > I) {
var p_ = j;
j = I, I = p_;
}
if (Q || j % 1 || I % 1) {
var m_ = ab();
return nb(j + m_ * (I - j + ob("1e-" + ((m_ + "").length - 1))), I);
}
return EC(j, I);
}
var eA = Sw(function(j, I, q) {
return I = I.toLowerCase(), j + (q ? tA(I) : I);
});
function tA(j) {
return OA(sk(j).toLowerCase());
}
function nA(j) {
return j = sk(j), j && j.replace(ay, ix).replace(qy, "");
}
function rA(j, I, Q) {
j = sk(j), I = HC(I);
var p_ = j.length;
Q = Q === q ? p_ : TS(nk(Q), 0, p_);
var m_ = Q;
return Q -= I.length, Q >= 0 && j.slice(Q, m_) == I;
}
function iA(j) {
return j = sk(j), j && Fv.test(j) ? j.replace(Nv, ax) : j;
}
function aA(j) {
return j = sk(j), j && Uv.test(j) ? j.replace(Hv, "\\$&") : j;
}
var oA = Sw(function(j, I, q) {
return j + (q ? "-" : "") + I.toLowerCase();
}), sA = Sw(function(j, I, q) {
return j + (q ? " " : "") + I.toLowerCase();
}), cA = xw("toLowerCase");
function lA(j, I, q) {
j = sk(j), I = nk(I);
var Q = I ? yx(j) : 0;
if (!I || Q >= I) return j;
var p_ = (I - Q) / 2;
return jw(Uy(p_), q) + j + jw(Hy(p_), q);
}
function uA(j, I, q) {
j = sk(j), I = nk(I);
var Q = I ? yx(j) : 0;
return I && Q < I ? j + jw(I - Q, q) : j;
}
function dA(j, I, q) {
j = sk(j), I = nk(I);
var Q = I ? yx(j) : 0;
return I && Q < I ? jw(I - Q, q) + j : j;
}
function fA(j, I, q) {
return q || I == null ? I = 0 : I &&= +I, ib(sk(j).replace(Wv, ""), I || 0);
}
function pA(j, I, Q) {
return I = (Q ? hT(j, I, Q) : I === q) ? 1 : nk(I), OC(sk(j), I);
}
function mA() {
var j = arguments, I = sk(j[0]);
return j.length < 3 ? I : I.replace(j[1], j[2]);
}
var hA = Sw(function(j, I, q) {
return j + (q ? "_" : "") + I.toLowerCase();
});
function gA(j, I, Q) {
return Q && typeof Q != "number" && hT(j, I, Q) && (I = Q = q), Q = Q === q ? K_ : Q >>> 0, Q ? (j = sk(j), j && (typeof I == "string" || I != null && !UO(I)) && (I = HC(I), !I && lx(j)) ? ew(bx(j), 0, Q) : j.split(I, Q)) : [];
}
var _A = Sw(function(j, I, q) {
return j + (q ? " " : "") + OA(I);
});
function vA(j, I, q) {
return j = sk(j), q = q == null ? 0 : TS(nk(q), 0, j.length), I = HC(I), j.slice(q, q + I.length) == I;
}
function yA(j, I, Q) {
var p_ = Mx.templateSettings;
Q && hT(j, I, Q) && (I = q), j = sk(j), I = uk({}, I, p_, Bw);
var m_ = uk({}, I.imports, p_.imports, Bw), h_ = Ak(m_), __ = $b(m_, h_), v_, y_, b_ = 0, x_ = I.interpolate || oy, S_ = "__p += '", C_ = fy((I.escape || oy).source + "|" + x_.source + "|" + (x_ === Rv ? Qv : oy).source + "|" + (I.evaluate || oy).source + "|$", "g"), w_ = "//# sourceURL=" + (by.call(I, "sourceURL") ? (I.sourceURL + "").replace(/\s/g, " ") : "lodash.templateSources[" + ++$y + "]") + "\n";
j.replace(C_, function(I, q, Q, p_, m_, h_) {
return Q ||= p_, S_ += j.slice(b_, h_).replace(sy, ox), q && (v_ = !0, S_ += "' +\n__e(" + q + ") +\n'"), m_ && (y_ = !0, S_ += "';\n" + m_ + ";\n__p += '"), Q && (S_ += "' +\n((__t = (" + Q + ")) == null ? '' : __t) +\n'"), b_ = h_ + I.length, I;
}), S_ += "';\n";
var T_ = by.call(I, "variable") && I.variable;
if (!T_) S_ = "with (obj) {\n" + S_ + "\n}\n";
else if (Xv.test(T_)) throw new cy(g_);
S_ = (y_ ? S_.replace(kv, "") : S_).replace(Av, "$1").replace(jv, "$1;"), S_ = "function(" + (T_ || "obj") + ") {\n" + (T_ ? "" : "obj || (obj = {});\n") + "var __t, __p = ''" + (v_ ? ", __e = _.escape" : "") + (y_ ? ", __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\n" : ";\n") + S_ + "return __p\n}";
var E_ = AA(function() {
return ly(h_, w_ + "return " + S_).apply(q, __);
});
if (E_.source = S_, DO(E_)) throw E_;
return E_;
}
function bA(j) {
return sk(j).toLowerCase();
}
function xA(j) {
return sk(j).toUpperCase();
}
function SA(j, I, Q) {
if (j = sk(j), j && (Q || I === q)) return Zb(j);
if (!j || !(I = HC(I))) return j;
var p_ = bx(j), m_ = bx(I), h_ = tx(p_, m_), g_ = nx(p_, m_) + 1;
return ew(p_, h_, g_).join("");
}
function CA(j, I, Q) {
if (j = sk(j), j && (Q || I === q)) return j.slice(0, xx(j) + 1);
if (!j || !(I = HC(I))) return j;
var p_ = bx(j), m_ = nx(p_, bx(I)) + 1;
return ew(p_, 0, m_).join("");
}
function wA(j, I, Q) {
if (j = sk(j), j && (Q || I === q)) return j.replace(Wv, "");
if (!j || !(I = HC(I))) return j;
var p_ = bx(j), m_ = tx(p_, bx(I));
return ew(p_, m_).join("");
}
function TA(j, I) {
var Q = F_, p_ = I_;
if (MO(I)) {
var m_ = "separator" in I ? I.separator : m_;
Q = "length" in I ? nk(I.length) : Q, p_ = "omission" in I ? HC(I.omission) : p_;
}
j = sk(j);
var h_ = j.length;
if (lx(j)) {
var g_ = bx(j);
h_ = g_.length;
}
if (Q >= h_) return j;
var __ = Q - yx(p_);
if (__ < 1) return p_;
var v_ = g_ ? ew(g_, 0, __).join("") : j.slice(0, __);
if (m_ === q) return v_ + p_;
if (g_ && (__ += v_.length - __), UO(m_)) {
if (j.slice(__).search(m_)) {
var y_, b_ = v_;
for (m_.global || (m_ = fy(m_.source, sk($v.exec(m_)) + "g")), m_.lastIndex = 0; y_ = m_.exec(b_);) var x_ = y_.index;
v_ = v_.slice(0, x_ === q ? __ : x_);
}
} else if (j.indexOf(HC(m_), __) != __) {
var S_ = v_.lastIndexOf(m_);
S_ > -1 && (v_ = v_.slice(0, S_));
}
return v_ + p_;
}
function EA(j) {
return j = sk(j), j && Pv.test(j) ? j.replace(Mv, Sx) : j;
}
var DA = Sw(function(j, I, q) {
return j + (q ? " " : "") + I.toUpperCase();
}), OA = xw("toUpperCase");
function kA(j, I, Q) {
return j = sk(j), I = Q ? q : I, I === q ? ux(j) ? Tx(j) : Lb(j) : j.match(I) || [];
}
var AA = kC(function(j, I) {
try {
return Sb(j, q, I);
} catch (j) {
return DO(j) ? j : new cy(j);
}
}), jA = Kw(function(j, I) {
return wb(I, function(I) {
I = zT(I), CS(j, I, BD(j[I], j));
}), j;
});
function MA(j) {
var I = j == null ? 0 : j.length, q = Qw();
return j = I ? Ab(j, function(j) {
if (typeof j[1] != "function") throw new my(h_);
return [q(j[0]), j[1]];
}) : [], kC(function(q) {
for (var Q = -1; ++Q < I;) {
var p_ = j[Q];
if (Sb(p_[0], this, q)) return Sb(p_[1], this, q);
}
});
}
function NA(j) {
return DS(ES(j, b_));
}
function PA(j) {
return function() {
return j;
};
}
function FA(j, I) {
return j == null || j !== j ? I : j;
}
var IA = Ew(), LA = Ew(!0);
function RA(j) {
return j;
}
function zA(j) {
return uC(typeof j == "function" ? j : ES(j, b_));
}
function BA(j) {
return hC(ES(j, b_));
}
function VA(j, I) {
return gC(j, ES(I, b_));
}
var HA = kC(function(j, I) {
return function(q) {
return QS(q, j, I);
};
}), UA = kC(function(j, I) {
return function(q) {
return QS(j, q, I);
};
});
function WA(j, I, q) {
var Q = Ak(I), p_ = HS(I, Q);
q == null && !(MO(I) && (p_.length || !Q.length)) && (q = I, I = j, j = this, p_ = HS(I, Ak(I)));
var m_ = !(MO(q) && "chain" in q) || !!q.chain, h_ = kO(j);
return wb(p_, function(q) {
var Q = I[q];
j[q] = Q, h_ && (j.prototype[q] = function() {
var I = this.__chain__;
if (m_ || I) {
var q = j(this.__wrapped__);
return (q.__actions__ = fw(this.__actions__)).push({
func: Q,
args: arguments,
thisArg: j
}), q.__chain__ = I, q;
}
return Q.apply(j, jb([this.value()], arguments));
});
}), j;
}
function GA() {
return ub._ === this && (ub._ = Ty), this;
}
function KA() {}
function qA(j) {
return j = nk(j), kC(function(I) {
return yC(I, j);
});
}
var JA = Aw(Ab), YA = Aw(Eb), XA = Aw(Pb);
function ZA(j) {
return gT(j) ? Wb(zT(j)) : CC(j);
}
function QA(j) {
return function(I) {
return j == null ? q : US(j, I);
};
}
var $A = Nw(), ej = Nw(!0);
function tj() {
return [];
}
function nj() {
return !1;
}
function rj() {
return {};
}
function ij() {
return "";
}
function aj() {
return !0;
}
function oj(j, I) {
if (j = nk(j), j < 1 || j > U_) return [];
var q = K_, Q = nb(j, K_);
I = Qw(I), j -= K_;
for (var p_ = Yb(Q, I); ++q < j;) I(q);
return p_;
}
function sj(j) {
return gO(j) ? Ab(j, zT) : qO(j) ? [j] : fw(RT(sk(j)));
}
function cj(j) {
var I = ++xy;
return sk(j) + I;
}
var lj = kw(function(j, I) {
return j + I;
}, 0), uj = Iw("ceil"), dj = kw(function(j, I) {
return j / I;
}, 1), fj = Iw("floor");
function pj(j) {
return j && j.length ? PS(j, RA, KS) : q;
}
function mj(j, I) {
return j && j.length ? PS(j, Qw(I, 2), KS) : q;
}
function hj(j) {
return Ub(j, RA);
}
function gj(j, I) {
return Ub(j, Qw(I, 2));
}
function _j(j) {
return j && j.length ? PS(j, RA, pC) : q;
}
function vj(j, I) {
return j && j.length ? PS(j, Qw(I, 2), pC) : q;
}
var yj = kw(function(j, I) {
return j * I;
}, 1), bj = Iw("round"), xj = kw(function(j, I) {
return j - I;
}, 0);
function Sj(j) {
return j && j.length ? Jb(j, RA) : 0;
}
function Cj(j, I) {
return j && j.length ? Jb(j, Qw(I, 2)) : 0;
}
return Mx.after = LD, Mx.ary = RD, Mx.assign = ck, Mx.assignIn = lk, Mx.assignInWith = uk, Mx.assignWith = dk, Mx.at = fk, Mx.before = zD, Mx.bind = BD, Mx.bindAll = jA, Mx.bindKey = VD, Mx.castArray = oO, Mx.chain = $E, Mx.chunk = UT, Mx.compact = WT, Mx.concat = GT, Mx.cond = MA, Mx.conforms = NA, Mx.constant = PA, Mx.countBy = uD, Mx.create = pk, Mx.curry = HD, Mx.curryRight = UD, Mx.debounce = WD, Mx.defaults = mk, Mx.defaultsDeep = hk, Mx.defer = GD, Mx.delay = KD, Mx.difference = KT, Mx.differenceBy = qT, Mx.differenceWith = JT, Mx.drop = YT, Mx.dropRight = XT, Mx.dropRightWhile = ZT, Mx.dropWhile = QT, Mx.fill = $T, Mx.filter = fD, Mx.flatMap = hD, Mx.flatMapDeep = gD, Mx.flatMapDepth = _D, Mx.flatten = nE, Mx.flattenDeep = rE, Mx.flattenDepth = iE, Mx.flip = qD, Mx.flow = IA, Mx.flowRight = LA, Mx.fromPairs = aE, Mx.functions = Sk, Mx.functionsIn = Ck, Mx.groupBy = bD, Mx.initial = cE, Mx.intersection = lE, Mx.intersectionBy = uE, Mx.intersectionWith = dE, Mx.invert = Dk, Mx.invertBy = Ok, Mx.invokeMap = SD, Mx.iteratee = zA, Mx.keyBy = CD, Mx.keys = Ak, Mx.keysIn = jk, Mx.map = wD, Mx.mapKeys = Mk, Mx.mapValues = Nk, Mx.matches = BA, Mx.matchesProperty = VA, Mx.memoize = JD, Mx.merge = Pk, Mx.mergeWith = Fk, Mx.method = HA, Mx.methodOf = UA, Mx.mixin = WA, Mx.negate = YD, Mx.nthArg = qA, Mx.omit = Ik, Mx.omitBy = Lk, Mx.once = XD, Mx.orderBy = TD, Mx.over = JA, Mx.overArgs = ZD, Mx.overEvery = YA, Mx.overSome = XA, Mx.partial = QD, Mx.partialRight = $D, Mx.partition = ED, Mx.pick = Rk, Mx.pickBy = zk, Mx.property = ZA, Mx.propertyOf = QA, Mx.pull = gE, Mx.pullAll = _E, Mx.pullAllBy = vE, Mx.pullAllWith = yE, Mx.pullAt = bE, Mx.range = $A, Mx.rangeRight = ej, Mx.rearg = eO, Mx.reject = kD, Mx.remove = xE, Mx.rest = tO, Mx.reverse = SE, Mx.sampleSize = jD, Mx.set = Vk, Mx.setWith = Hk, Mx.shuffle = MD, Mx.slice = CE, Mx.sortBy = FD, Mx.sortedUniq = AE, Mx.sortedUniqBy = jE, Mx.split = gA, Mx.spread = nO, Mx.tail = ME, Mx.take = NE, Mx.takeRight = PE, Mx.takeRightWhile = FE, Mx.takeWhile = IE, Mx.tap = eD, Mx.throttle = rO, Mx.thru = tD, Mx.toArray = ek, Mx.toPairs = Uk, Mx.toPairsIn = Wk, Mx.toPath = sj, Mx.toPlainObject = ak, Mx.transform = Gk, Mx.unary = iO, Mx.union = LE, Mx.unionBy = RE, Mx.unionWith = zE, Mx.uniq = BE, Mx.uniqBy = VE, Mx.uniqWith = HE, Mx.unset = Kk, Mx.unzip = UE, Mx.unzipWith = WE, Mx.update = qk, Mx.updateWith = Jk, Mx.values = Yk, Mx.valuesIn = Xk, Mx.without = GE, Mx.words = kA, Mx.wrap = aO, Mx.xor = KE, Mx.xorBy = qE, Mx.xorWith = JE, Mx.zip = YE, Mx.zipObject = XE, Mx.zipObjectDeep = ZE, Mx.zipWith = QE, Mx.entries = Uk, Mx.entriesIn = Wk, Mx.extend = lk, Mx.extendWith = uk, WA(Mx, Mx), Mx.add = lj, Mx.attempt = AA, Mx.camelCase = eA, Mx.capitalize = tA, Mx.ceil = uj, Mx.clamp = Zk, Mx.clone = sO, Mx.cloneDeep = lO, Mx.cloneDeepWith = uO, Mx.cloneWith = cO, Mx.conformsTo = dO, Mx.deburr = nA, Mx.defaultTo = FA, Mx.divide = dj, Mx.endsWith = rA, Mx.eq = fO, Mx.escape = iA, Mx.escapeRegExp = aA, Mx.every = dD, Mx.find = pD, Mx.findIndex = eE, Mx.findKey = gk, Mx.findLast = mD, Mx.findLastIndex = tE, Mx.findLastKey = _k, Mx.floor = fj, Mx.forEach = vD, Mx.forEachRight = yD, Mx.forIn = vk, Mx.forInRight = yk, Mx.forOwn = bk, Mx.forOwnRight = xk, Mx.get = wk, Mx.gt = pO, Mx.gte = mO, Mx.has = Tk, Mx.hasIn = Ek, Mx.head = oE, Mx.identity = RA, Mx.includes = xD, Mx.indexOf = sE, Mx.inRange = Qk, Mx.invoke = kk, Mx.isArguments = hO, Mx.isArray = gO, Mx.isArrayBuffer = _O, Mx.isArrayLike = vO, Mx.isArrayLikeObject = yO, Mx.isBoolean = bO, Mx.isBuffer = xO, Mx.isDate = SO, Mx.isElement = CO, Mx.isEmpty = wO, Mx.isEqual = TO, Mx.isEqualWith = EO, Mx.isError = DO, Mx.isFinite = OO, Mx.isFunction = kO, Mx.isInteger = AO, Mx.isLength = jO, Mx.isMap = PO, Mx.isMatch = FO, Mx.isMatchWith = IO, Mx.isNaN = LO, Mx.isNative = RO, Mx.isNil = BO, Mx.isNull = zO, Mx.isNumber = VO, Mx.isObject = MO, Mx.isObjectLike = NO, Mx.isPlainObject = HO, Mx.isRegExp = UO, Mx.isSafeInteger = WO, Mx.isSet = GO, Mx.isString = KO, Mx.isSymbol = qO, Mx.isTypedArray = JO, Mx.isUndefined = YO, Mx.isWeakMap = XO, Mx.isWeakSet = ZO, Mx.join = fE, Mx.kebabCase = oA, Mx.last = pE, Mx.lastIndexOf = mE, Mx.lowerCase = sA, Mx.lowerFirst = cA, Mx.lt = QO, Mx.lte = $O, Mx.max = pj, Mx.maxBy = mj, Mx.mean = hj, Mx.meanBy = gj, Mx.min = _j, Mx.minBy = vj, Mx.stubArray = tj, Mx.stubFalse = nj, Mx.stubObject = rj, Mx.stubString = ij, Mx.stubTrue = aj, Mx.multiply = yj, Mx.nth = hE, Mx.noConflict = GA, Mx.noop = KA, Mx.now = ID, Mx.pad = lA, Mx.padEnd = uA, Mx.padStart = dA, Mx.parseInt = fA, Mx.random = $k, Mx.reduce = DD, Mx.reduceRight = OD, Mx.repeat = pA, Mx.replace = mA, Mx.result = Bk, Mx.round = bj, Mx.runInContext = j, Mx.sample = AD, Mx.size = ND, Mx.snakeCase = hA, Mx.some = PD, Mx.sortedIndex = wE, Mx.sortedIndexBy = TE, Mx.sortedIndexOf = EE, Mx.sortedLastIndex = DE, Mx.sortedLastIndexBy = OE, Mx.sortedLastIndexOf = kE, Mx.startCase = _A, Mx.startsWith = vA, Mx.subtract = xj, Mx.sum = Sj, Mx.sumBy = Cj, Mx.template = yA, Mx.times = oj, Mx.toFinite = tk, Mx.toInteger = nk, Mx.toLength = rk, Mx.toLower = bA, Mx.toNumber = ik, Mx.toSafeInteger = ok, Mx.toString = sk, Mx.toUpper = xA, Mx.trim = SA, Mx.trimEnd = CA, Mx.trimStart = wA, Mx.truncate = TA, Mx.unescape = EA, Mx.uniqueId = cj, Mx.upperCase = DA, Mx.upperFirst = OA, Mx.each = vD, Mx.eachRight = yD, Mx.first = oE, WA(Mx, function() {
var j = {};
return BS(Mx, function(I, q) {
by.call(Mx.prototype, q) || (j[q] = I);
}), j;
}(), { chain: !1 }), Mx.VERSION = Q, wb([
"bind",
"bindKey",
"curry",
"curryRight",
"partial",
"partialRight"
], function(j) {
Mx[j].placeholder = Mx;
}), wb(["drop", "take"], function(j, I) {
Ix.prototype[j] = function(Q) {
Q = Q === q ? 1 : Zy(nk(Q), 0);
var p_ = this.__filtered__ && !I ? new Ix(this) : this.clone();
return p_.__filtered__ ? p_.__takeCount__ = nb(Q, p_.__takeCount__) : p_.__views__.push({
size: nb(Q, K_),
type: j + (p_.__dir__ < 0 ? "Right" : "")
}), p_;
}, Ix.prototype[j + "Right"] = function(I) {
return this.reverse()[j](I).reverse();
};
}), wb([
"filter",
"map",
"takeWhile"
], function(j, I) {
var q = I + 1, Q = q == z_ || q == V_;
Ix.prototype[j] = function(j) {
var I = this.clone();
return I.__iteratees__.push({
iteratee: Qw(j, 3),
type: q
}), I.__filtered__ = I.__filtered__ || Q, I;
};
}), wb(["head", "last"], function(j, I) {
var q = "take" + (I ? "Right" : "");
Ix.prototype[j] = function() {
return this[q](1).value()[0];
};
}), wb(["initial", "tail"], function(j, I) {
var q = "drop" + (I ? "" : "Right");
Ix.prototype[j] = function() {
return this.__filtered__ ? new Ix(this) : this[q](1);
};
}), Ix.prototype.compact = function() {
return this.filter(RA);
}, Ix.prototype.find = function(j) {
return this.filter(j).head();
}, Ix.prototype.findLast = function(j) {
return this.reverse().find(j);
}, Ix.prototype.invokeMap = kC(function(j, I) {
return typeof j == "function" ? new Ix(this) : this.map(function(q) {
return QS(q, j, I);
});
}), Ix.prototype.reject = function(j) {
return this.filter(YD(Qw(j)));
}, Ix.prototype.slice = function(j, I) {
j = nk(j);
var Q = this;
return Q.__filtered__ && (j > 0 || I < 0) ? new Ix(Q) : (j < 0 ? Q = Q.takeRight(-j) : j && (Q = Q.drop(j)), I !== q && (I = nk(I), Q = I < 0 ? Q.dropRight(-I) : Q.take(I - j)), Q);
}, Ix.prototype.takeRightWhile = function(j) {
return this.reverse().takeWhile(j).reverse();
}, Ix.prototype.toArray = function() {
return this.take(K_);
}, BS(Ix.prototype, function(j, I) {
var Q = /^(?:filter|find|map|reject)|While$/.test(I), p_ = /^(?:head|last)$/.test(I), m_ = Mx[p_ ? "take" + (I == "last" ? "Right" : "") : I], h_ = p_ || /^find/.test(I);
m_ && (Mx.prototype[I] = function() {
var I = this.__wrapped__, g_ = p_ ? [1] : arguments, __ = I instanceof Ix, v_ = g_[0], y_ = __ || gO(I), b_ = function(j) {
var I = m_.apply(Mx, jb([j], g_));
return p_ && x_ ? I[0] : I;
};
y_ && Q && typeof v_ == "function" && v_.length != 1 && (__ = y_ = !1);
var x_ = this.__chain__, S_ = !!this.__actions__.length, C_ = h_ && !x_, w_ = __ && !S_;
if (!h_ && y_) {
I = w_ ? I : new Ix(this);
var T_ = j.apply(I, g_);
return T_.__actions__.push({
func: tD,
args: [b_],
thisArg: q
}), new Fx(T_, x_);
}
return C_ && w_ ? j.apply(this, g_) : (T_ = this.thru(b_), C_ ? p_ ? T_.value()[0] : T_.value() : T_);
});
}), wb([
"pop",
"push",
"shift",
"sort",
"splice",
"unshift"
], function(j) {
var I = hy[j], q = /^(?:push|sort|unshift)$/.test(j) ? "tap" : "thru", Q = /^(?:pop|shift)$/.test(j);
Mx.prototype[j] = function() {
var j = arguments;
if (Q && !this.__chain__) {
var p_ = this.value();
return I.apply(gO(p_) ? p_ : [], j);
}
return this[q](function(q) {
return I.apply(gO(q) ? q : [], j);
});
};
}), BS(Ix.prototype, function(j, I) {
var q = Mx[I];
if (q) {
var Q = q.name + "";
by.call(Gb, Q) || (Gb[Q] = []), Gb[Q].push({
name: I,
func: q
});
}
}), Gb[Dw(q, E_).name] = [{
name: "wrapper",
func: q
}], Ix.prototype.clone = Lx, Ix.prototype.reverse = Rx, Ix.prototype.value = zx, Mx.prototype.at = nD, Mx.prototype.chain = rD, Mx.prototype.commit = iD, Mx.prototype.next = aD, Mx.prototype.plant = sD, Mx.prototype.reverse = cD, Mx.prototype.toJSON = Mx.prototype.valueOf = Mx.prototype.value = lD, Mx.prototype.first = Mx.prototype.head, Iy && (Mx.prototype[Iy] = oD), Mx;
})();
typeof define == "function" && typeof define.amd == "object" && define.amd ? (ub._ = Ex, define(function() {
return Ex;
})) : fb ? ((fb.exports = Ex)._ = Ex, db._ = Ex) : ub._ = Ex;
}).call(j);
})), import_lodash$2 = /* @__PURE__ */ __toESM(require_lodash());
function healQuery(j) {
return j.replace(/\{(\s+)?\}/g, "");
}
function isPathInQuery(j, I, q) {
if (!j || !I) return !1;
j = healQuery(j);
let [Q, ...p_] = I.split("."), m_;
try {
m_ = parse$1(j);
} catch {}
if (!m_) return !1;
let h_ = m_.definitions.find((j) => j.kind === Kind.OPERATION_DEFINITION && j.operation === Q ? q ? j.name?.value === q : !0 : !1);
if (!h_) return !1;
if (p_.length === 0) return !0;
let g_ = [], __ = !1;
return visit(h_, { Field: {
enter(j) {
if (g_.push(j.name.value), g_.length === p_.length && g_.every((j, I) => j === p_[I])) return __ = !0, !1;
},
leave() {
g_.pop();
}
} }), __;
}
function addPathToQuery(j, I, q) {
j = healQuery(j);
let [Q, ...p_] = I.split("."), m_;
try {
m_ = parse$1(j);
} catch {}
m_ ??= {
kind: Kind.DOCUMENT,
definitions: [{
kind: Kind.OPERATION_DEFINITION,
operation: Q,
name: {
kind: Kind.NAME,
value: "Untitled"
},
selectionSet: {
kind: Kind.SELECTION_SET,
selections: []
}
}]
};
let h_ = m_.definitions.find((j) => j.kind === Kind.OPERATION_DEFINITION && j.operation === Q ? q ? j.name?.value === q : !0 : !1);
if (h_ || (h_ = {
kind: Kind.OPERATION_DEFINITION,
operation: Q,
name: {
kind: Kind.NAME,
value: "Untitled"
},
selectionSet: {
kind: Kind.SELECTION_SET,
selections: []
}
}, m_.definitions.push(h_)), p_.length === 0) return print(m_).split("\n").map((j) => j.includes(`${Q} Untitled`) ? j + " {}" : j).join("\n");
let g_ = [];
return visit(h_, {
OperationDefinition: { enter(j) {
let I = p_[0];
j.selectionSet ??= {
kind: Kind.SELECTION_SET,
selections: []
};
let q = j.selectionSet.selections.find((j) => j.kind === Kind.FIELD && j.name.value === I);
q || (q = {
kind: Kind.FIELD,
name: {
kind: Kind.NAME,
value: I
}
}, j.selectionSet.selections.push(q));
} },
Field: {
enter(j) {
if (g_.push(j.name.value), g_.every((j, I) => j === p_[I])) {
if (g_.length === p_.length) return !1;
let I = p_[g_.length];
j.selectionSet ??= {
kind: Kind.SELECTION_SET,
selections: []
};
let q = j.selectionSet.selections.find((j) => j.kind === Kind.FIELD && j.name.value === I);
q || (q = {
kind: Kind.FIELD,
name: {
kind: Kind.NAME,
value: I
}
}, j.selectionSet.selections.push(q));
}
},
leave() {
g_.pop();
}
}
}), print(m_);
}
function deletePathFromQuery(j, I, q) {
j = healQuery(j);
let [Q, ...p_] = I.split("."), m_;
try {
m_ = parse$1(j);
} catch {}
if (!m_) return j;
let h_ = m_.definitions.find((j) => j.kind === Kind.OPERATION_DEFINITION && j.operation === Q ? q ? j.name?.value === q : !0 : !1);
if (!h_) return j;
let g_ = [], __ = !1;
return visit(h_, {
OperationDefinition: { enter(j) {
if (p_.length === 1) {
let I = p_[0];
j.selectionSet && (j.selectionSet.selections = j.selectionSet.selections.filter((j) => j.kind !== Kind.FIELD || j.name.value !== I), __ = j.selectionSet.selections.length === 0);
}
} },
Field: {
enter(j) {
if (g_.push(j.name.value), g_.length === p_.length - 1 && g_.every((j, I) => j === p_[I])) {
let I = p_[g_.length];
j.selectionSet && (j.selectionSet.selections = j.selectionSet.selections.filter((j) => j.kind !== Kind.FIELD || j.name.value !== I));
}
},
leave() {
g_.pop();
}
}
}), __ ? m_.definitions.length > 1 ? `${print({
...m_,
definitions: m_.definitions.filter((j) => j !== h_)
})}
${Q} ${h_.name?.value} {}` : `${Q} ${h_.name?.value} {}` : (h_ = m_.definitions.find((j) => j.kind === Kind.OPERATION_DEFINITION && j.operation === Q ? q ? j.name?.value === q : !0 : !1), print(m_));
}
function getOperationName(j) {
try {
return parse$1(j).definitions.find((j) => j.kind === Kind.OPERATION_DEFINITION)?.name?.value;
} catch {
let I = j.match(/(query|mutation|subscription)\s+([a-zA-Z0-9_]+)/);
return I ? I[2] : null;
}
}
function getOperationType(j) {
try {
return parse$1(j).definitions.find((j) => j.kind === Kind.OPERATION_DEFINITION)?.operation;
} catch {
return null;
}
}
function isArgInQuery(j, I, q, Q) {
if (!j || !I) return !1;
j = healQuery(j);
let [p_, ...m_] = I.split("."), h_;
try {
h_ = parse$1(j);
} catch {}
if (!h_) return !1;
let g_ = h_.definitions.find((j) => j.kind === Kind.OPERATION_DEFINITION && j.operation === p_ ? Q ? j.name?.value === Q : !0 : !1);
if (!g_) return !1;
let __ = [], v_ = !1;
return visit(g_, { Field: {
enter(j) {
__.push(j.name.value), __.length === m_.length && __.every((j, I) => j === m_[I]) && j.arguments && (v_ = j.arguments.some((j) => j.name.value === q));
},
leave() {
__.pop();
}
} }), v_;
}
function extractOfType(j) {
return j instanceof GraphQLNonNull || j instanceof GraphQLNonNull || j instanceof GraphQLList ? extractOfType(j.ofType) : j instanceof GraphQLObjectType || j instanceof GraphQLScalarType ? j : null;
}
function findFieldInSchema(j, I) {
let [q, ...Q] = j.split("."), p_;
if (q === "query" ? p_ = I.getQueryType() : q === "mutation" ? p_ = I.getMutationType() : q === "subscription" && (p_ = I.getSubscriptionType()), p_) {
for (let j = 0; j < Q.length; ++j) {
if (!p_) return;
if (p_ instanceof GraphQLObjectType) {
let I = p_.getFields()[Q[j]];
if (!I) return;
if (j === Q.length - 1) return I;
p_ = extractOfType(I.type);
}
}
return null;
}
}
function addArgToField(j, I, q, Q, p_) {
j = healQuery(j);
let [m_, ...h_] = I.split("."), g_;
try {
g_ = parse$1(j);
} catch {}
g_ ||= {
kind: Kind.DOCUMENT,
definitions: [{
kind: Kind.OPERATION_DEFINITION,
operation: m_,
name: {
kind: Kind.NAME,
value: "NewOperation"
},
selectionSet: {
kind: Kind.SELECTION_SET,
selections: []
}
}]
};
let __ = g_.definitions.find((j) => j.kind === Kind.OPERATION_DEFINITION && j.operation === m_ ? p_ ? j.name?.value === p_ : !0 : !1);
__ || (__ = {
kind: Kind.OPERATION_DEFINITION,
operation: m_,
name: {
kind: Kind.NAME,
value: "NewOperation"
},
selectionSet: {
kind: Kind.SELECTION_SET,
selections: []
}
}, g_.definitions.push(__)), j = print(g_), isPathInQuery(j, I, p_) || (g_ = parse$1(addPathToQuery(j, I, p_)), __ = g_.definitions.find((j) => j.kind === Kind.OPERATION_DEFINITION && j.operation === m_ ? p_ ? j.name?.value === p_ : !0 : !1));
let v_ = [];
return visit(__, {
Field: {
enter(j) {
if (v_.push(j.name.value), v_.length === h_.length - 1 && v_.every((j, I) => j === h_[I])) {
let I = h_[v_.length];
if (j.selectionSet) {
let p_ = findFieldInSchema([
m_,
...v_,
I
].join("."), Q);
if (p_?.args) {
let Q = p_.args.find((j) => j.name === q);
if (Q) {
__.variableDefinitions ||= [];
let p_ = Q.name, m_ = 2;
for (; __.variableDefinitions.find((j) => j.variable.name.value === p_);) p_ = Q.name + m_, ++m_;
__.variableDefinitions.push({
kind: Kind.VARIABLE_DEFINITION,
variable: {
kind: Kind.VARIABLE,
name: {
kind: Kind.NAME,
value: p_
}
},
type: {
kind: Kind.NAMED_TYPE,
name: {
kind: Kind.NAME,
value: Q.type.toString()
}
}
});
let h_ = j.selectionSet.selections.find((j) => j.kind === Kind.FIELD && j.name.value === I);
h_ && (h_.arguments ||= [], h_.arguments.push({
kind: Kind.ARGUMENT,
name: {
kind: Kind.NAME,
value: q
},
value: {
kind: Kind.VARIABLE,
name: {
kind: Kind.NAME,
value: p_
}
}
}));
}
}
}
}
},
leave() {
v_.pop();
}
},
OperationDefinition: { enter(j) {
if (h_.length === 1) {
let I = h_[0];
if (j.selectionSet) {
let p_ = findFieldInSchema([
m_,
...v_,
I
].join("."), Q);
if (p_?.args) {
let Q = p_.args.find((j) => j.name === q);
if (Q) {
j.variableDefinitions ||= [];
let p_ = Q.name, m_ = 2;
for (; j.variableDefinitions.find((j) => j.variable.name.value === p_);) p_ = Q.name + m_, ++m_;
j.variableDefinitions.push({
kind: Kind.VARIABLE_DEFINITION,
variable: {
kind: Kind.VARIABLE,
name: {
kind: Kind.NAME,
value: p_
}
},
type: {
kind: Kind.NAMED_TYPE,
name: {
kind: Kind.NAME,
value: Q.type.toString()
}
}
});
let h_ = j.selectionSet.selections.find((j) => j.kind === Kind.FIELD && j.name.value === I);
h_ && (h_.arguments ||= [], h_.arguments.push({
kind: Kind.ARGUMENT,
name: {
kind: Kind.NAME,
value: q
},
value: {
kind: Kind.VARIABLE,
name: {
kind: Kind.NAME,
value: p_
}
}
}));
}
}
}
}
} }
}), print(g_);
}
function removeArgFromField(j, I, q, Q) {
j = healQuery(j);
let [p_, ...m_] = I.split("."), h_;
try {
h_ = parse$1(j);
} catch {}
if (!h_) return j;
let g_ = h_.definitions.find((j) => j.kind === Kind.OPERATION_DEFINITION && j.operation === p_ ? Q ? j.name?.value === Q : !0 : !1);
if (!g_) return j;
let __ = [];
return visit(g_, {
Field: {
enter(j) {
if (__.push(j.name.value), __.length === m_.length - 1 && __.every((j, I) => j === m_[I])) {
let I = m_[__.length];
if (j.selectionSet) {
let Q = j.selectionSet.selections.find((j) => j.kind === Kind.FIELD && j.name.value === I);
Q?.arguments && (Q.arguments = Q.arguments.filter((j) => j.kind !== Kind.ARGUMENT || j.name.value !== q));
}
}
},
leave() {
__.pop();
}
},
OperationDefinition: { enter(j) {
if (m_.length === 1) {
let I = m_[0];
if (j.selectionSet) {
let Q = j.selectionSet.selections.find((j) => j.kind === Kind.FIELD && j.name.value === I);
Q?.arguments && (Q.arguments = Q.arguments.filter((j) => j.kind !== Kind.ARGUMENT || j.name.value !== q));
}
}
} }
}), print(h_);
}
function extractPaths(j) {
try {
let I = parse$1(j), q = [[I.definitions[0].kind === Kind.OPERATION_DEFINITION ? I.definitions[0].operation : "query"]], Q = (j, I = []) => {
for (let p_ of j) if (p_.kind === "Field") {
let j = [...I, p_.name.value];
q.push(j), p_.selectionSet && Q(p_.selectionSet.selections, j);
}
};
for (let j of I.definitions) j.kind === "OperationDefinition" && j.selectionSet && Q(j.selectionSet.selections, q[0]);
return q;
} catch {
return [];
}
}
function getOpenPaths(j) {
return extractPaths(j).map((j) => j.join("."));
}
function handleTemplate(j, I) {
return j.replace(/\{\{(.*?)\}\}/g, (j, q) => (0, import_lodash$2.get)(I, q) ?? j);
}
const useOperations = (j) => {
let [I, q] = useState(j.defaultOperations ?? []), Q = useMemo(() => {
let q = j.tabsApi?.activeTab;
return q && q.type === "operation" ? I.find((j) => j.id === q.data.id) ?? null : null;
}, [j.tabsApi, I]), p_ = useCallback((I) => {
let q = j.tabsApi?.tabs.find((j) => j.type === "operation" && j.data.id === I) ?? null;
q && j.tabsApi?.setActiveTab(q);
}, [j.tabsApi]), m_ = useCallback((I) => {
q(I), j.onOperationsChange?.(I);
}, [j]), h_ = useCallback((Q) => {
let p_ = {
id: v4_default(),
...Q
}, m_ = [...I, p_];
return q(m_), j.onOperationsChange?.(m_), j.onOperationCreate?.(p_), p_;
}, [I, j]);
useEffect(() => {
let I = new URLSearchParams(window.location.search).get("share");
if (I) {
let q = decompressFromEncodedURIComponent(I);
if (q) {
let { n: I, q: Q, v: p_, h: m_, e: g_ } = JSON.parse(q), __ = h_({
name: I,
query: Q,
variables: p_,
headers: m_,
extensions: g_
}), v_ = j.tabsApi?.addTab({
type: "operation",
data: __
});
v_ && j.tabsApi?.setActiveTab(v_);
let y_ = new URLSearchParams(window.location.search);
y_.delete("share"), window.history.replaceState(null, "", window.location.pathname + "?" + y_.toString());
}
}
}, []);
let g_ = useCallback((p_) => {
let m_ = {
...Q,
...p_
};
if (m_.query) {
let j = getOperationName(m_.query);
j && (m_.name = j);
}
let h_ = I.map((j) => j.id === Q?.id ? m_ : j);
if (q(h_), j.onOperationsChange?.(h_), m_.id && j.onOperationUpdate?.(m_), j.collectionsApi && j.checkPermissions?.("collectionsOperations:update") && Q?.id) {
let I = j.collectionsApi.collections.find((j) => j.operations.some((j) => j.id === Q.id))?.id ?? "";
j.collectionsApi.updateOperationInCollection(I, Q.id, m_);
}
}, [
Q,
I,
j.checkPermissions,
j.collectionsApi
]), __ = useCallback((m_) => {
let h_ = I.find((j) => j.id === m_), g_ = I.filter((j) => j.id !== m_);
q(g_), j.onOperationsChange?.(g_), h_ && j.onOperationDelete?.(h_), Q?.id === m_ && p_(g_[0]?.id ?? "");
}, [
Q,
I,
j,
p_
]), v_ = useCallback((j) => {
if (!Q) return;
let I = {
...Q,
query: addPathToQuery(Q.query, j)
};
g_(I);
}, [Q, g_]), y_ = useCallback((j) => {
if (!Q?.query) return;
let I = {
...Q,
query: deletePathFromQuery(Q.query, j)
};
g_(I);
}, [Q, g_]), b_ = useCallback((j, I, q) => {
if (!Q?.query) return;
let p_ = {
...Q,
query: addArgToField(Q.query, j, I, q)
};
g_(p_);
}, [Q, g_]), x_ = useCallback((j, I) => {
if (!Q?.query) return;
let q = {
...Q,
query: removeArgFromField(Q.query, j, I)
};
g_(q);
}, [Q, g_]), [S_, C_] = useState({}), w_ = useCallback((j) => Object.keys(S_).includes(j), [S_]), T_ = useMemo(() => Q ? w_(Q.id) : !1, [Q, w_]), E_ = useCallback(async (I, q, p_ = j.pluginsApi?.plugins ?? [], m_ = j.pluginsApi?.pluginsState ?? {}) => {
if (!Q?.query) return null;
let h_, g_;
if (q?.env) h_ = q.env, g_ = q.headers ?? {};
else {
let I = await j.preflightApi?.runPreflight?.(p_, m_);
h_ = I?.env ?? { variables: {} }, g_ = I?.headers ?? {}, m_ = I?.pluginsState ?? {}, j.pluginsApi?.setPluginsState(m_);
}
h_ && Object.keys(h_?.variables ?? {}).length > 0 ? j.envApi?.setEnv(h_) : h_ = j.envApi?.env ?? { variables: {} };
let __ = Q.headers ? JSON.parse(handleTemplate(Q.headers, {
...h_.variables,
plugins: m_
})) : {}, v_ = {
...g_,
...__
}, y_ = Q.variables ? JSON.parse(handleTemplate(Q.variables, {
...h_.variables,
plugins: m_
})) : {}, b_ = Q.extensions ? JSON.parse(handleTemplate(Q.extensions, {
...h_.variables,
plugins: m_
})) : {};
if (Q.query.startsWith("subscription")) {
let j = createClient({
url: I.replace("http", "ws"),
connectionParams: { ...v_ }
});
return j.on("connected", () => {
console.log("connected");
}), j.on("error", () => {
C_((j) => {
let I = { ...j };
return delete I[Q.id], I;
});
}), j.on("closed", () => {
C_((j) => {
let I = { ...j };
return delete I[Q.id], I;
});
}), j.subscribe({
query: Q.query,
variables: y_,
extensions: b_
}, {
next: (j) => {
q?.onResponse?.(JSON.stringify(j ?? {}));
},
error: () => {},
complete: () => {}
}), C_((I) => ({
...I,
[Q.id]: () => {
j.dispose(), C_((j) => {
let I = { ...j };
return delete I[Q.id], I;
});
}
})), Promise.resolve(new Response());
}
let x_ = new AbortController(), S_ = fetch(I, {
method: "POST",
credentials: j.settingsApi?.settings.fetch.credentials,
body: JSON.stringify({
query: Q.query,
variables: y_,
extensions: b_
}),
headers: {
...v_,
"Content-Type": "application/json"
},
signal: x_.signal
}).finally(() => {
C_((j) => {
let I = { ...j };
return delete I[Q.id], I;
});
});
return C_((j) => ({
...j,
[Q.id]: () => x_.abort()
})), S_;
}, [
Q,
j.preflightApi,
j.envApi,
j.pluginsApi
]), D_ = useCallback((j) => j.query?.startsWith("subscription") ?? !1, []), O_ = useMemo(() => Q ? D_(Q) : !1, [Q, D_]);
return {
operations: I,
setOperations: m_,
runActiveOperation: E_,
setActiveOperation: p_,
activeOperation: Q,
addOperation: h_,
updateActiveOperation: g_,
deleteOperation: __,
addPathToActiveOperation: v_,
deletePathFromActiveOperation: y_,
addArgToActiveOperation: b_,
deleteArgFromActiveOperation: x_,
isActiveOperationLoading: T_,
stopActiveOperation: S_[Q?.id ?? ""],
isActiveOperationSubscription: O_,
isOperationSubscription: D_,
isOperationLoading: w_
};
}, usePlugins = (j) => {
let [I, q] = useState({
...j.plugins?.reduce((j, I) => (j[I.id] = I.defaultState ?? {}, j), {}),
...j.defaultPluginsState
}), Q = useCallback((I) => {
q(I), j.onPluginsStateChange?.(I);
}, [j]);
return {
plugins: j.plugins ?? [],
pluginsState: I,
setPluginsState: Q
};
};
var crypto_js_default = ";(function (root, factory) {\n if (typeof exports === \"object\") {\n // CommonJS\n module.exports = exports = factory();\n }\n else if (typeof define === \"function\" && define.amd) {\n // AMD\n define([], factory);\n }\n else {\n // Global (browser)\n root.CryptoJS = factory();\n }\n}(this, function () {\n\n /*globals window, global, require*/\n\n /**\n * CryptoJS core components.\n */\n var CryptoJS = CryptoJS || (function (Math, undefined) {\n\n var crypto;\n\n // Native crypto from window (Browser)\n if (typeof window !== 'undefined' && window.crypto) {\n crypto = window.crypto;\n }\n\n // Native crypto in web worker (Browser)\n if (typeof self !== 'undefined' && self.crypto) {\n crypto = self.crypto;\n }\n\n // Native crypto from worker\n if (typeof globalThis !== 'undefined' && globalThis.crypto) {\n crypto = globalThis.crypto;\n }\n\n // Native (experimental IE 11) crypto from window (Browser)\n if (!crypto && typeof window !== 'undefined' && window.msCrypto) {\n crypto = window.msCrypto;\n }\n\n // Native crypto from global (NodeJS)\n if (!crypto && typeof global !== 'undefined' && global.crypto) {\n crypto = global.crypto;\n }\n\n // Native crypto import via require (NodeJS)\n if (!crypto && typeof require === 'function') {\n try {\n crypto = require('crypto');\n } catch (err) {}\n }\n\n /*\n * Cryptographically secure pseudorandom number generator\n *\n * As Math.random() is cryptographically not safe to use\n */\n var cryptoSecureRandomInt = function () {\n if (crypto) {\n // Use getRandomValues method (Browser)\n if (typeof crypto.getRandomValues === 'function') {\n try {\n return crypto.getRandomValues(new Uint32Array(1))[0];\n } catch (err) {}\n }\n\n // Use randomBytes method (NodeJS)\n if (typeof crypto.randomBytes === 'function') {\n try {\n return crypto.randomBytes(4).readInt32LE();\n } catch (err) {}\n }\n }\n\n throw new Error('Native crypto module could not be used to get secure random number.');\n };\n\n /*\n * Local polyfill of Object.create\n\n */\n var create = Object.create || (function () {\n function F() {}\n\n return function (obj) {\n var subtype;\n\n F.prototype = obj;\n\n subtype = new F();\n\n F.prototype = null;\n\n return subtype;\n };\n }());\n\n /**\n * CryptoJS namespace.\n */\n var C = {};\n\n /**\n * Library namespace.\n */\n var C_lib = C.lib = {};\n\n /**\n * Base object for prototypal inheritance.\n */\n var Base = C_lib.Base = (function () {\n\n\n return {\n /**\n * Creates a new object that inherits from this object.\n *\n * @param {Object} overrides Properties to copy into the new object.\n *\n * @return {Object} The new object.\n *\n * @static\n *\n * @example\n *\n * var MyType = CryptoJS.lib.Base.extend({\n * field: 'value',\n *\n * method: function () {\n * }\n * });\n */\n extend: function (overrides) {\n // Spawn\n var subtype = create(this);\n\n // Augment\n if (overrides) {\n subtype.mixIn(overrides);\n }\n\n // Create default initializer\n if (!subtype.hasOwnProperty('init') || this.init === subtype.init) {\n subtype.init = function () {\n subtype.$super.init.apply(this, arguments);\n };\n }\n\n // Initializer's prototype is the subtype object\n subtype.init.prototype = subtype;\n\n // Reference supertype\n subtype.$super = this;\n\n return subtype;\n },\n\n /**\n * Extends this object and runs the init method.\n * Arguments to create() will be passed to init().\n *\n * @return {Object} The new object.\n *\n * @static\n *\n * @example\n *\n * var instance = MyType.create();\n */\n create: function () {\n var instance = this.extend();\n instance.init.apply(instance, arguments);\n\n return instance;\n },\n\n /**\n * Initializes a newly created object.\n * Override this method to add some logic when your objects are created.\n *\n * @example\n *\n * var MyType = CryptoJS.lib.Base.extend({\n * init: function () {\n * // ...\n * }\n * });\n */\n init: function () {\n },\n\n /**\n * Copies properties into this object.\n *\n * @param {Object} properties The properties to mix in.\n *\n * @example\n *\n * MyType.mixIn({\n * field: 'value'\n * });\n */\n mixIn: function (properties) {\n for (var propertyName in properties) {\n if (properties.hasOwnProperty(propertyName)) {\n this[propertyName] = properties[propertyName];\n }\n }\n\n // IE won't copy toString using the loop above\n if (properties.hasOwnProperty('toString')) {\n this.toString = properties.toString;\n }\n },\n\n /**\n * Creates a copy of this object.\n *\n * @return {Object} The clone.\n *\n * @example\n *\n * var clone = instance.clone();\n */\n clone: function () {\n return this.init.prototype.extend(this);\n }\n };\n }());\n\n /**\n * An array of 32-bit words.\n *\n * @property {Array} words The array of 32-bit words.\n * @property {number} sigBytes The number of significant bytes in this word array.\n */\n var WordArray = C_lib.WordArray = Base.extend({\n /**\n * Initializes a newly created word array.\n *\n * @param {Array} words (Optional) An array of 32-bit words.\n * @param {number} sigBytes (Optional) The number of significant bytes in the words.\n *\n * @example\n *\n * var wordArray = CryptoJS.lib.WordArray.create();\n * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607]);\n * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607], 6);\n */\n init: function (words, sigBytes) {\n words = this.words = words || [];\n\n if (sigBytes != undefined) {\n this.sigBytes = sigBytes;\n } else {\n this.sigBytes = words.length * 4;\n }\n },\n\n /**\n * Converts this word array to a string.\n *\n * @param {Encoder} encoder (Optional) The encoding strategy to use. Default: CryptoJS.enc.Hex\n *\n * @return {string} The stringified word array.\n *\n * @example\n *\n * var string = wordArray + '';\n * var string = wordArray.toString();\n * var string = wordArray.toString(CryptoJS.enc.Utf8);\n */\n toString: function (encoder) {\n return (encoder || Hex).stringify(this);\n },\n\n /**\n * Concatenates a word array to this word array.\n *\n * @param {WordArray} wordArray The word array to append.\n *\n * @return {WordArray} This word array.\n *\n * @example\n *\n * wordArray1.concat(wordArray2);\n */\n concat: function (wordArray) {\n // Shortcuts\n var thisWords = this.words;\n var thatWords = wordArray.words;\n var thisSigBytes = this.sigBytes;\n var thatSigBytes = wordArray.sigBytes;\n\n // Clamp excess bits\n this.clamp();\n\n // Concat\n if (thisSigBytes % 4) {\n // Copy one byte at a time\n for (var i = 0; i < thatSigBytes; i++) {\n var thatByte = (thatWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n thisWords[(thisSigBytes + i) >>> 2] |= thatByte << (24 - ((thisSigBytes + i) % 4) * 8);\n }\n } else {\n // Copy one word at a time\n for (var j = 0; j < thatSigBytes; j += 4) {\n thisWords[(thisSigBytes + j) >>> 2] = thatWords[j >>> 2];\n }\n }\n this.sigBytes += thatSigBytes;\n\n // Chainable\n return this;\n },\n\n /**\n * Removes insignificant bits.\n *\n * @example\n *\n * wordArray.clamp();\n */\n clamp: function () {\n // Shortcuts\n var words = this.words;\n var sigBytes = this.sigBytes;\n\n // Clamp\n words[sigBytes >>> 2] &= 0xffffffff << (32 - (sigBytes % 4) * 8);\n words.length = Math.ceil(sigBytes / 4);\n },\n\n /**\n * Creates a copy of this word array.\n *\n * @return {WordArray} The clone.\n *\n * @example\n *\n * var clone = wordArray.clone();\n */\n clone: function () {\n var clone = Base.clone.call(this);\n clone.words = this.words.slice(0);\n\n return clone;\n },\n\n /**\n * Creates a word array filled with random bytes.\n *\n * @param {number} nBytes The number of random bytes to generate.\n *\n * @return {WordArray} The random word array.\n *\n * @static\n *\n * @example\n *\n * var wordArray = CryptoJS.lib.WordArray.random(16);\n */\n random: function (nBytes) {\n var words = [];\n\n for (var i = 0; i < nBytes; i += 4) {\n words.push(cryptoSecureRandomInt());\n }\n\n return new WordArray.init(words, nBytes);\n }\n });\n\n /**\n * Encoder namespace.\n */\n var C_enc = C.enc = {};\n\n /**\n * Hex encoding strategy.\n */\n var Hex = C_enc.Hex = {\n /**\n * Converts a word array to a hex string.\n *\n * @param {WordArray} wordArray The word array.\n *\n * @return {string} The hex string.\n *\n * @static\n *\n * @example\n *\n * var hexString = CryptoJS.enc.Hex.stringify(wordArray);\n */\n stringify: function (wordArray) {\n // Shortcuts\n var words = wordArray.words;\n var sigBytes = wordArray.sigBytes;\n\n // Convert\n var hexChars = [];\n for (var i = 0; i < sigBytes; i++) {\n var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n hexChars.push((bite >>> 4).toString(16));\n hexChars.push((bite & 0x0f).toString(16));\n }\n\n return hexChars.join('');\n },\n\n /**\n * Converts a hex string to a word array.\n *\n * @param {string} hexStr The hex string.\n *\n * @return {WordArray} The word array.\n *\n * @static\n *\n * @example\n *\n * var wordArray = CryptoJS.enc.Hex.parse(hexString);\n */\n parse: function (hexStr) {\n // Shortcut\n var hexStrLength = hexStr.length;\n\n // Convert\n var words = [];\n for (var i = 0; i < hexStrLength; i += 2) {\n words[i >>> 3] |= parseInt(hexStr.substr(i, 2), 16) << (24 - (i % 8) * 4);\n }\n\n return new WordArray.init(words, hexStrLength / 2);\n }\n };\n\n /**\n * Latin1 encoding strategy.\n */\n var Latin1 = C_enc.Latin1 = {\n /**\n * Converts a word array to a Latin1 string.\n *\n * @param {WordArray} wordArray The word array.\n *\n * @return {string} The Latin1 string.\n *\n * @static\n *\n * @example\n *\n * var latin1String = CryptoJS.enc.Latin1.stringify(wordArray);\n */\n stringify: function (wordArray) {\n // Shortcuts\n var words = wordArray.words;\n var sigBytes = wordArray.sigBytes;\n\n // Convert\n var latin1Chars = [];\n for (var i = 0; i < sigBytes; i++) {\n var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n latin1Chars.push(String.fromCharCode(bite));\n }\n\n return latin1Chars.join('');\n },\n\n /**\n * Converts a Latin1 string to a word array.\n *\n * @param {string} latin1Str The Latin1 string.\n *\n * @return {WordArray} The word array.\n *\n * @static\n *\n * @example\n *\n * var wordArray = CryptoJS.enc.Latin1.parse(latin1String);\n */\n parse: function (latin1Str) {\n // Shortcut\n var latin1StrLength = latin1Str.length;\n\n // Convert\n var words = [];\n for (var i = 0; i < latin1StrLength; i++) {\n words[i >>> 2] |= (latin1Str.charCodeAt(i) & 0xff) << (24 - (i % 4) * 8);\n }\n\n return new WordArray.init(words, latin1StrLength);\n }\n };\n\n /**\n * UTF-8 encoding strategy.\n */\n var Utf8 = C_enc.Utf8 = {\n /**\n * Converts a word array to a UTF-8 string.\n *\n * @param {WordArray} wordArray The word array.\n *\n * @return {string} The UTF-8 string.\n *\n * @static\n *\n * @example\n *\n * var utf8String = CryptoJS.enc.Utf8.stringify(wordArray);\n */\n stringify: function (wordArray) {\n try {\n return decodeURIComponent(escape(Latin1.stringify(wordArray)));\n } catch (e) {\n throw new Error('Malformed UTF-8 data');\n }\n },\n\n /**\n * Converts a UTF-8 string to a word array.\n *\n * @param {string} utf8Str The UTF-8 string.\n *\n * @return {WordArray} The word array.\n *\n * @static\n *\n * @example\n *\n * var wordArray = CryptoJS.enc.Utf8.parse(utf8String);\n */\n parse: function (utf8Str) {\n return Latin1.parse(unescape(encodeURIComponent(utf8Str)));\n }\n };\n\n /**\n * Abstract buffered block algorithm template.\n *\n * The property blockSize must be implemented in a concrete subtype.\n *\n * @property {number} _minBufferSize The number of blocks that should be kept unprocessed in the buffer. Default: 0\n */\n var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm = Base.extend({\n /**\n * Resets this block algorithm's data buffer to its initial state.\n *\n * @example\n *\n * bufferedBlockAlgorithm.reset();\n */\n reset: function () {\n // Initial values\n this._data = new WordArray.init();\n this._nDataBytes = 0;\n },\n\n /**\n * Adds new data to this block algorithm's buffer.\n *\n * @param {WordArray|string} data The data to append. Strings are converted to a WordArray using UTF-8.\n *\n * @example\n *\n * bufferedBlockAlgorithm._append('data');\n * bufferedBlockAlgorithm._append(wordArray);\n */\n _append: function (data) {\n // Convert string to WordArray, else assume WordArray already\n if (typeof data == 'string') {\n data = Utf8.parse(data);\n }\n\n // Append\n this._data.concat(data);\n this._nDataBytes += data.sigBytes;\n },\n\n /**\n * Processes available data blocks.\n *\n * This method invokes _doProcessBlock(offset), which must be implemented by a concrete subtype.\n *\n * @param {boolean} doFlush Whether all blocks and partial blocks should be processed.\n *\n * @return {WordArray} The processed data.\n *\n * @example\n *\n * var processedData = bufferedBlockAlgorithm._process();\n * var processedData = bufferedBlockAlgorithm._process(!!'flush');\n */\n _process: function (doFlush) {\n var processedWords;\n\n // Shortcuts\n var data = this._data;\n var dataWords = data.words;\n var dataSigBytes = data.sigBytes;\n var blockSize = this.blockSize;\n var blockSizeBytes = blockSize * 4;\n\n // Count blocks ready\n var nBlocksReady = dataSigBytes / blockSizeBytes;\n if (doFlush) {\n // Round up to include partial blocks\n nBlocksReady = Math.ceil(nBlocksReady);\n } else {\n // Round down to include only full blocks,\n // less the number of blocks that must remain in the buffer\n nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0);\n }\n\n // Count words ready\n var nWordsReady = nBlocksReady * blockSize;\n\n // Count bytes ready\n var nBytesReady = Math.min(nWordsReady * 4, dataSigBytes);\n\n // Process blocks\n if (nWordsReady) {\n for (var offset = 0; offset < nWordsReady; offset += blockSize) {\n // Perform concrete-algorithm logic\n this._doProcessBlock(dataWords, offset);\n }\n\n // Remove processed words\n processedWords = dataWords.splice(0, nWordsReady);\n data.sigBytes -= nBytesReady;\n }\n\n // Return processed words\n return new WordArray.init(processedWords, nBytesReady);\n },\n\n /**\n * Creates a copy of this object.\n *\n * @return {Object} The clone.\n *\n * @example\n *\n * var clone = bufferedBlockAlgorithm.clone();\n */\n clone: function () {\n var clone = Base.clone.call(this);\n clone._data = this._data.clone();\n\n return clone;\n },\n\n _minBufferSize: 0\n });\n\n /**\n * Abstract hasher template.\n *\n * @property {number} blockSize The number of 32-bit words this hasher operates on. Default: 16 (512 bits)\n */\n var Hasher = C_lib.Hasher = BufferedBlockAlgorithm.extend({\n /**\n * Configuration options.\n */\n cfg: Base.extend(),\n\n /**\n * Initializes a newly created hasher.\n *\n * @param {Object} cfg (Optional) The configuration options to use for this hash computation.\n *\n * @example\n *\n * var hasher = CryptoJS.algo.SHA256.create();\n */\n init: function (cfg) {\n // Apply config defaults\n this.cfg = this.cfg.extend(cfg);\n\n // Set initial values\n this.reset();\n },\n\n /**\n * Resets this hasher to its initial state.\n *\n * @example\n *\n * hasher.reset();\n */\n reset: function () {\n // Reset data buffer\n BufferedBlockAlgorithm.reset.call(this);\n\n // Perform concrete-hasher logic\n this._doReset();\n },\n\n /**\n * Updates this hasher with a message.\n *\n * @param {WordArray|string} messageUpdate The message to append.\n *\n * @return {Hasher} This hasher.\n *\n * @example\n *\n * hasher.update('message');\n * hasher.update(wordArray);\n */\n update: function (messageUpdate) {\n // Append\n this._append(messageUpdate);\n\n // Update the hash\n this._process();\n\n // Chainable\n return this;\n },\n\n /**\n * Finalizes the hash computation.\n * Note that the finalize operation is effectively a destructive, read-once operation.\n *\n * @param {WordArray|string} messageUpdate (Optional) A final message update.\n *\n * @return {WordArray} The hash.\n *\n * @example\n *\n * var hash = hasher.finalize();\n * var hash = hasher.finalize('message');\n * var hash = hasher.finalize(wordArray);\n */\n finalize: function (messageUpdate) {\n // Final message update\n if (messageUpdate) {\n this._append(messageUpdate);\n }\n\n // Perform concrete-hasher logic\n var hash = this._doFinalize();\n\n return hash;\n },\n\n blockSize: 512/32,\n\n /**\n * Creates a shortcut function to a hasher's object interface.\n *\n * @param {Hasher} hasher The hasher to create a helper for.\n *\n * @return {Function} The shortcut function.\n *\n * @static\n *\n * @example\n *\n * var SHA256 = CryptoJS.lib.Hasher._createHelper(CryptoJS.algo.SHA256);\n */\n _createHelper: function (hasher) {\n return function (message, cfg) {\n return new hasher.init(cfg).finalize(message);\n };\n },\n\n /**\n * Creates a shortcut function to the HMAC's object interface.\n *\n * @param {Hasher} hasher The hasher to use in this HMAC helper.\n *\n * @return {Function} The shortcut function.\n *\n * @static\n *\n * @example\n *\n * var HmacSHA256 = CryptoJS.lib.Hasher._createHmacHelper(CryptoJS.algo.SHA256);\n */\n _createHmacHelper: function (hasher) {\n return function (message, key) {\n return new C_algo.HMAC.init(hasher, key).finalize(message);\n };\n }\n });\n\n /**\n * Algorithm namespace.\n */\n var C_algo = C.algo = {};\n\n return C;\n }(Math));\n\n\n (function (undefined) {\n // Shortcuts\n var C = CryptoJS;\n var C_lib = C.lib;\n var Base = C_lib.Base;\n var X32WordArray = C_lib.WordArray;\n\n /**\n * x64 namespace.\n */\n var C_x64 = C.x64 = {};\n\n /**\n * A 64-bit word.\n */\n var X64Word = C_x64.Word = Base.extend({\n /**\n * Initializes a newly created 64-bit word.\n *\n * @param {number} high The high 32 bits.\n * @param {number} low The low 32 bits.\n *\n * @example\n *\n * var x64Word = CryptoJS.x64.Word.create(0x00010203, 0x04050607);\n */\n init: function (high, low) {\n this.high = high;\n this.low = low;\n }\n\n /**\n * Bitwise NOTs this word.\n *\n * @return {X64Word} A new x64-Word object after negating.\n *\n * @example\n *\n * var negated = x64Word.not();\n */\n // not: function () {\n // var high = ~this.high;\n // var low = ~this.low;\n\n // return X64Word.create(high, low);\n // },\n\n /**\n * Bitwise ANDs this word with the passed word.\n *\n * @param {X64Word} word The x64-Word to AND with this word.\n *\n * @return {X64Word} A new x64-Word object after ANDing.\n *\n * @example\n *\n * var anded = x64Word.and(anotherX64Word);\n */\n // and: function (word) {\n // var high = this.high & word.high;\n // var low = this.low & word.low;\n\n // return X64Word.create(high, low);\n // },\n\n /**\n * Bitwise ORs this word with the passed word.\n *\n * @param {X64Word} word The x64-Word to OR with this word.\n *\n * @return {X64Word} A new x64-Word object after ORing.\n *\n * @example\n *\n * var ored = x64Word.or(anotherX64Word);\n */\n // or: function (word) {\n // var high = this.high | word.high;\n // var low = this.low | word.low;\n\n // return X64Word.create(high, low);\n // },\n\n /**\n * Bitwise XORs this word with the passed word.\n *\n * @param {X64Word} word The x64-Word to XOR with this word.\n *\n * @return {X64Word} A new x64-Word object after XORing.\n *\n * @example\n *\n * var xored = x64Word.xor(anotherX64Word);\n */\n // xor: function (word) {\n // var high = this.high ^ word.high;\n // var low = this.low ^ word.low;\n\n // return X64Word.create(high, low);\n // },\n\n /**\n * Shifts this word n bits to the left.\n *\n * @param {number} n The number of bits to shift.\n *\n * @return {X64Word} A new x64-Word object after shifting.\n *\n * @example\n *\n * var shifted = x64Word.shiftL(25);\n */\n // shiftL: function (n) {\n // if (n < 32) {\n // var high = (this.high << n) | (this.low >>> (32 - n));\n // var low = this.low << n;\n // } else {\n // var high = this.low << (n - 32);\n // var low = 0;\n // }\n\n // return X64Word.create(high, low);\n // },\n\n /**\n * Shifts this word n bits to the right.\n *\n * @param {number} n The number of bits to shift.\n *\n * @return {X64Word} A new x64-Word object after shifting.\n *\n * @example\n *\n * var shifted = x64Word.shiftR(7);\n */\n // shiftR: function (n) {\n // if (n < 32) {\n // var low = (this.low >>> n) | (this.high << (32 - n));\n // var high = this.high >>> n;\n // } else {\n // var low = this.high >>> (n - 32);\n // var high = 0;\n // }\n\n // return X64Word.create(high, low);\n // },\n\n /**\n * Rotates this word n bits to the left.\n *\n * @param {number} n The number of bits to rotate.\n *\n * @return {X64Word} A new x64-Word object after rotating.\n *\n * @example\n *\n * var rotated = x64Word.rotL(25);\n */\n // rotL: function (n) {\n // return this.shiftL(n).or(this.shiftR(64 - n));\n // },\n\n /**\n * Rotates this word n bits to the right.\n *\n * @param {number} n The number of bits to rotate.\n *\n * @return {X64Word} A new x64-Word object after rotating.\n *\n * @example\n *\n * var rotated = x64Word.rotR(7);\n */\n // rotR: function (n) {\n // return this.shiftR(n).or(this.shiftL(64 - n));\n // },\n\n /**\n * Adds this word with the passed word.\n *\n * @param {X64Word} word The x64-Word to add with this word.\n *\n * @return {X64Word} A new x64-Word object after adding.\n *\n * @example\n *\n * var added = x64Word.add(anotherX64Word);\n */\n // add: function (word) {\n // var low = (this.low + word.low) | 0;\n // var carry = (low >>> 0) < (this.low >>> 0) ? 1 : 0;\n // var high = (this.high + word.high + carry) | 0;\n\n // return X64Word.create(high, low);\n // }\n });\n\n /**\n * An array of 64-bit words.\n *\n * @property {Array} words The array of CryptoJS.x64.Word objects.\n * @property {number} sigBytes The number of significant bytes in this word array.\n */\n var X64WordArray = C_x64.WordArray = Base.extend({\n /**\n * Initializes a newly created word array.\n *\n * @param {Array} words (Optional) An array of CryptoJS.x64.Word objects.\n * @param {number} sigBytes (Optional) The number of significant bytes in the words.\n *\n * @example\n *\n * var wordArray = CryptoJS.x64.WordArray.create();\n *\n * var wordArray = CryptoJS.x64.WordArray.create([\n * CryptoJS.x64.Word.create(0x00010203, 0x04050607),\n * CryptoJS.x64.Word.create(0x18191a1b, 0x1c1d1e1f)\n * ]);\n *\n * var wordArray = CryptoJS.x64.WordArray.create([\n * CryptoJS.x64.Word.create(0x00010203, 0x04050607),\n * CryptoJS.x64.Word.create(0x18191a1b, 0x1c1d1e1f)\n * ], 10);\n */\n init: function (words, sigBytes) {\n words = this.words = words || [];\n\n if (sigBytes != undefined) {\n this.sigBytes = sigBytes;\n } else {\n this.sigBytes = words.length * 8;\n }\n },\n\n /**\n * Converts this 64-bit word array to a 32-bit word array.\n *\n * @return {CryptoJS.lib.WordArray} This word array's data as a 32-bit word array.\n *\n * @example\n *\n * var x32WordArray = x64WordArray.toX32();\n */\n toX32: function () {\n // Shortcuts\n var x64Words = this.words;\n var x64WordsLength = x64Words.length;\n\n // Convert\n var x32Words = [];\n for (var i = 0; i < x64WordsLength; i++) {\n var x64Word = x64Words[i];\n x32Words.push(x64Word.high);\n x32Words.push(x64Word.low);\n }\n\n return X32WordArray.create(x32Words, this.sigBytes);\n },\n\n /**\n * Creates a copy of this word array.\n *\n * @return {X64WordArray} The clone.\n *\n * @example\n *\n * var clone = x64WordArray.clone();\n */\n clone: function () {\n var clone = Base.clone.call(this);\n\n // Clone \"words\" array\n var words = clone.words = this.words.slice(0);\n\n // Clone each X64Word object\n var wordsLength = words.length;\n for (var i = 0; i < wordsLength; i++) {\n words[i] = words[i].clone();\n }\n\n return clone;\n }\n });\n }());\n\n\n (function () {\n // Check if typed arrays are supported\n if (typeof ArrayBuffer != 'function') {\n return;\n }\n\n // Shortcuts\n var C = CryptoJS;\n var C_lib = C.lib;\n var WordArray = C_lib.WordArray;\n\n // Reference original init\n var superInit = WordArray.init;\n\n // Augment WordArray.init to handle typed arrays\n var subInit = WordArray.init = function (typedArray) {\n // Convert buffers to uint8\n if (typedArray instanceof ArrayBuffer) {\n typedArray = new Uint8Array(typedArray);\n }\n\n // Convert other array views to uint8\n if (\n typedArray instanceof Int8Array ||\n (typeof Uint8ClampedArray !== \"undefined\" && typedArray instanceof Uint8ClampedArray) ||\n typedArray instanceof Int16Array ||\n typedArray instanceof Uint16Array ||\n typedArray instanceof Int32Array ||\n typedArray instanceof Uint32Array ||\n typedArray instanceof Float32Array ||\n typedArray instanceof Float64Array\n ) {\n typedArray = new Uint8Array(typedArray.buffer, typedArray.byteOffset, typedArray.byteLength);\n }\n\n // Handle Uint8Array\n if (typedArray instanceof Uint8Array) {\n // Shortcut\n var typedArrayByteLength = typedArray.byteLength;\n\n // Extract bytes\n var words = [];\n for (var i = 0; i < typedArrayByteLength; i++) {\n words[i >>> 2] |= typedArray[i] << (24 - (i % 4) * 8);\n }\n\n // Initialize this word array\n superInit.call(this, words, typedArrayByteLength);\n } else {\n // Else call normal init\n superInit.apply(this, arguments);\n }\n };\n\n subInit.prototype = WordArray;\n }());\n\n\n (function () {\n // Shortcuts\n var C = CryptoJS;\n var C_lib = C.lib;\n var WordArray = C_lib.WordArray;\n var C_enc = C.enc;\n\n /**\n * UTF-16 BE encoding strategy.\n */\n var Utf16BE = C_enc.Utf16 = C_enc.Utf16BE = {\n /**\n * Converts a word array to a UTF-16 BE string.\n *\n * @param {WordArray} wordArray The word array.\n *\n * @return {string} The UTF-16 BE string.\n *\n * @static\n *\n * @example\n *\n * var utf16String = CryptoJS.enc.Utf16.stringify(wordArray);\n */\n stringify: function (wordArray) {\n // Shortcuts\n var words = wordArray.words;\n var sigBytes = wordArray.sigBytes;\n\n // Convert\n var utf16Chars = [];\n for (var i = 0; i < sigBytes; i += 2) {\n var codePoint = (words[i >>> 2] >>> (16 - (i % 4) * 8)) & 0xffff;\n utf16Chars.push(String.fromCharCode(codePoint));\n }\n\n return utf16Chars.join('');\n },\n\n /**\n * Converts a UTF-16 BE string to a word array.\n *\n * @param {string} utf16Str The UTF-16 BE string.\n *\n * @return {WordArray} The word array.\n *\n * @static\n *\n * @example\n *\n * var wordArray = CryptoJS.enc.Utf16.parse(utf16String);\n */\n parse: function (utf16Str) {\n // Shortcut\n var utf16StrLength = utf16Str.length;\n\n // Convert\n var words = [];\n for (var i = 0; i < utf16StrLength; i++) {\n words[i >>> 1] |= utf16Str.charCodeAt(i) << (16 - (i % 2) * 16);\n }\n\n return WordArray.create(words, utf16StrLength * 2);\n }\n };\n\n /**\n * UTF-16 LE encoding strategy.\n */\n C_enc.Utf16LE = {\n /**\n * Converts a word array to a UTF-16 LE string.\n *\n * @param {WordArray} wordArray The word array.\n *\n * @return {string} The UTF-16 LE string.\n *\n * @static\n *\n * @example\n *\n * var utf16Str = CryptoJS.enc.Utf16LE.stringify(wordArray);\n */\n stringify: function (wordArray) {\n // Shortcuts\n var words = wordArray.words;\n var sigBytes = wordArray.sigBytes;\n\n // Convert\n var utf16Chars = [];\n for (var i = 0; i < sigBytes; i += 2) {\n var codePoint = swapEndian((words[i >>> 2] >>> (16 - (i % 4) * 8)) & 0xffff);\n utf16Chars.push(String.fromCharCode(codePoint));\n }\n\n return utf16Chars.join('');\n },\n\n /**\n * Converts a UTF-16 LE string to a word array.\n *\n * @param {string} utf16Str The UTF-16 LE string.\n *\n * @return {WordArray} The word array.\n *\n * @static\n *\n * @example\n *\n * var wordArray = CryptoJS.enc.Utf16LE.parse(utf16Str);\n */\n parse: function (utf16Str) {\n // Shortcut\n var utf16StrLength = utf16Str.length;\n\n // Convert\n var words = [];\n for (var i = 0; i < utf16StrLength; i++) {\n words[i >>> 1] |= swapEndian(utf16Str.charCodeAt(i) << (16 - (i % 2) * 16));\n }\n\n return WordArray.create(words, utf16StrLength * 2);\n }\n };\n\n function swapEndian(word) {\n return ((word << 8) & 0xff00ff00) | ((word >>> 8) & 0x00ff00ff);\n }\n }());\n\n\n (function () {\n // Shortcuts\n var C = CryptoJS;\n var C_lib = C.lib;\n var WordArray = C_lib.WordArray;\n var C_enc = C.enc;\n\n /**\n * Base64 encoding strategy.\n */\n var Base64 = C_enc.Base64 = {\n /**\n * Converts a word array to a Base64 string.\n *\n * @param {WordArray} wordArray The word array.\n *\n * @return {string} The Base64 string.\n *\n * @static\n *\n * @example\n *\n * var base64String = CryptoJS.enc.Base64.stringify(wordArray);\n */\n stringify: function (wordArray) {\n // Shortcuts\n var words = wordArray.words;\n var sigBytes = wordArray.sigBytes;\n var map = this._map;\n\n // Clamp excess bits\n wordArray.clamp();\n\n // Convert\n var base64Chars = [];\n for (var i = 0; i < sigBytes; i += 3) {\n var byte1 = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff;\n var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff;\n\n var triplet = (byte1 << 16) | (byte2 << 8) | byte3;\n\n for (var j = 0; (j < 4) && (i + j * 0.75 < sigBytes); j++) {\n base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f));\n }\n }\n\n // Add padding\n var paddingChar = map.charAt(64);\n if (paddingChar) {\n while (base64Chars.length % 4) {\n base64Chars.push(paddingChar);\n }\n }\n\n return base64Chars.join('');\n },\n\n /**\n * Converts a Base64 string to a word array.\n *\n * @param {string} base64Str The Base64 string.\n *\n * @return {WordArray} The word array.\n *\n * @static\n *\n * @example\n *\n * var wordArray = CryptoJS.enc.Base64.parse(base64String);\n */\n parse: function (base64Str) {\n // Shortcuts\n var base64StrLength = base64Str.length;\n var map = this._map;\n var reverseMap = this._reverseMap;\n\n if (!reverseMap) {\n reverseMap = this._reverseMap = [];\n for (var j = 0; j < map.length; j++) {\n reverseMap[map.charCodeAt(j)] = j;\n }\n }\n\n // Ignore padding\n var paddingChar = map.charAt(64);\n if (paddingChar) {\n var paddingIndex = base64Str.indexOf(paddingChar);\n if (paddingIndex !== -1) {\n base64StrLength = paddingIndex;\n }\n }\n\n // Convert\n return parseLoop(base64Str, base64StrLength, reverseMap);\n\n },\n\n _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='\n };\n\n function parseLoop(base64Str, base64StrLength, reverseMap) {\n var words = [];\n var nBytes = 0;\n for (var i = 0; i < base64StrLength; i++) {\n if (i % 4) {\n var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << ((i % 4) * 2);\n var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> (6 - (i % 4) * 2);\n var bitsCombined = bits1 | bits2;\n words[nBytes >>> 2] |= bitsCombined << (24 - (nBytes % 4) * 8);\n nBytes++;\n }\n }\n return WordArray.create(words, nBytes);\n }\n }());\n\n\n (function () {\n // Shortcuts\n var C = CryptoJS;\n var C_lib = C.lib;\n var WordArray = C_lib.WordArray;\n var C_enc = C.enc;\n\n /**\n * Base64url encoding strategy.\n */\n var Base64url = C_enc.Base64url = {\n /**\n * Converts a word array to a Base64url string.\n *\n * @param {WordArray} wordArray The word array.\n *\n * @param {boolean} urlSafe Whether to use url safe\n *\n * @return {string} The Base64url string.\n *\n * @static\n *\n * @example\n *\n * var base64String = CryptoJS.enc.Base64url.stringify(wordArray);\n */\n stringify: function (wordArray, urlSafe) {\n if (urlSafe === undefined) {\n urlSafe = true\n }\n // Shortcuts\n var words = wordArray.words;\n var sigBytes = wordArray.sigBytes;\n var map = urlSafe ? this._safe_map : this._map;\n\n // Clamp excess bits\n wordArray.clamp();\n\n // Convert\n var base64Chars = [];\n for (var i = 0; i < sigBytes; i += 3) {\n var byte1 = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff;\n var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff;\n\n var triplet = (byte1 << 16) | (byte2 << 8) | byte3;\n\n for (var j = 0; (j < 4) && (i + j * 0.75 < sigBytes); j++) {\n base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f));\n }\n }\n\n // Add padding\n var paddingChar = map.charAt(64);\n if (paddingChar) {\n while (base64Chars.length % 4) {\n base64Chars.push(paddingChar);\n }\n }\n\n return base64Chars.join('');\n },\n\n /**\n * Converts a Base64url string to a word array.\n *\n * @param {string} base64Str The Base64url string.\n *\n * @param {boolean} urlSafe Whether to use url safe\n *\n * @return {WordArray} The word array.\n *\n * @static\n *\n * @example\n *\n * var wordArray = CryptoJS.enc.Base64url.parse(base64String);\n */\n parse: function (base64Str, urlSafe) {\n if (urlSafe === undefined) {\n urlSafe = true\n }\n\n // Shortcuts\n var base64StrLength = base64Str.length;\n var map = urlSafe ? this._safe_map : this._map;\n var reverseMap = this._reverseMap;\n\n if (!reverseMap) {\n reverseMap = this._reverseMap = [];\n for (var j = 0; j < map.length; j++) {\n reverseMap[map.charCodeAt(j)] = j;\n }\n }\n\n // Ignore padding\n var paddingChar = map.charAt(64);\n if (paddingChar) {\n var paddingIndex = base64Str.indexOf(paddingChar);\n if (paddingIndex !== -1) {\n base64StrLength = paddingIndex;\n }\n }\n\n // Convert\n return parseLoop(base64Str, base64StrLength, reverseMap);\n\n },\n\n _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=',\n _safe_map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_',\n };\n\n function parseLoop(base64Str, base64StrLength, reverseMap) {\n var words = [];\n var nBytes = 0;\n for (var i = 0; i < base64StrLength; i++) {\n if (i % 4) {\n var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << ((i % 4) * 2);\n var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> (6 - (i % 4) * 2);\n var bitsCombined = bits1 | bits2;\n words[nBytes >>> 2] |= bitsCombined << (24 - (nBytes % 4) * 8);\n nBytes++;\n }\n }\n return WordArray.create(words, nBytes);\n }\n }());\n\n\n (function (Math) {\n // Shortcuts\n var C = CryptoJS;\n var C_lib = C.lib;\n var WordArray = C_lib.WordArray;\n var Hasher = C_lib.Hasher;\n var C_algo = C.algo;\n\n // Constants table\n var T = [];\n\n // Compute constants\n (function () {\n for (var i = 0; i < 64; i++) {\n T[i] = (Math.abs(Math.sin(i + 1)) * 0x100000000) | 0;\n }\n }());\n\n /**\n * MD5 hash algorithm.\n */\n var MD5 = C_algo.MD5 = Hasher.extend({\n _doReset: function () {\n this._hash = new WordArray.init([\n 0x67452301, 0xefcdab89,\n 0x98badcfe, 0x10325476\n ]);\n },\n\n _doProcessBlock: function (M, offset) {\n // Swap endian\n for (var i = 0; i < 16; i++) {\n // Shortcuts\n var offset_i = offset + i;\n var M_offset_i = M[offset_i];\n\n M[offset_i] = (\n (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) |\n (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00)\n );\n }\n\n // Shortcuts\n var H = this._hash.words;\n\n var M_offset_0 = M[offset + 0];\n var M_offset_1 = M[offset + 1];\n var M_offset_2 = M[offset + 2];\n var M_offset_3 = M[offset + 3];\n var M_offset_4 = M[offset + 4];\n var M_offset_5 = M[offset + 5];\n var M_offset_6 = M[offset + 6];\n var M_offset_7 = M[offset + 7];\n var M_offset_8 = M[offset + 8];\n var M_offset_9 = M[offset + 9];\n var M_offset_10 = M[offset + 10];\n var M_offset_11 = M[offset + 11];\n var M_offset_12 = M[offset + 12];\n var M_offset_13 = M[offset + 13];\n var M_offset_14 = M[offset + 14];\n var M_offset_15 = M[offset + 15];\n\n // Working variables\n var a = H[0];\n var b = H[1];\n var c = H[2];\n var d = H[3];\n\n // Computation\n a = FF(a, b, c, d, M_offset_0, 7, T[0]);\n d = FF(d, a, b, c, M_offset_1, 12, T[1]);\n c = FF(c, d, a, b, M_offset_2, 17, T[2]);\n b = FF(b, c, d, a, M_offset_3, 22, T[3]);\n a = FF(a, b, c, d, M_offset_4, 7, T[4]);\n d = FF(d, a, b, c, M_offset_5, 12, T[5]);\n c = FF(c, d, a, b, M_offset_6, 17, T[6]);\n b = FF(b, c, d, a, M_offset_7, 22, T[7]);\n a = FF(a, b, c, d, M_offset_8, 7, T[8]);\n d = FF(d, a, b, c, M_offset_9, 12, T[9]);\n c = FF(c, d, a, b, M_offset_10, 17, T[10]);\n b = FF(b, c, d, a, M_offset_11, 22, T[11]);\n a = FF(a, b, c, d, M_offset_12, 7, T[12]);\n d = FF(d, a, b, c, M_offset_13, 12, T[13]);\n c = FF(c, d, a, b, M_offset_14, 17, T[14]);\n b = FF(b, c, d, a, M_offset_15, 22, T[15]);\n\n a = GG(a, b, c, d, M_offset_1, 5, T[16]);\n d = GG(d, a, b, c, M_offset_6, 9, T[17]);\n c = GG(c, d, a, b, M_offset_11, 14, T[18]);\n b = GG(b, c, d, a, M_offset_0, 20, T[19]);\n a = GG(a, b, c, d, M_offset_5, 5, T[20]);\n d = GG(d, a, b, c, M_offset_10, 9, T[21]);\n c = GG(c, d, a, b, M_offset_15, 14, T[22]);\n b = GG(b, c, d, a, M_offset_4, 20, T[23]);\n a = GG(a, b, c, d, M_offset_9, 5, T[24]);\n d = GG(d, a, b, c, M_offset_14, 9, T[25]);\n c = GG(c, d, a, b, M_offset_3, 14, T[26]);\n b = GG(b, c, d, a, M_offset_8, 20, T[27]);\n a = GG(a, b, c, d, M_offset_13, 5, T[28]);\n d = GG(d, a, b, c, M_offset_2, 9, T[29]);\n c = GG(c, d, a, b, M_offset_7, 14, T[30]);\n b = GG(b, c, d, a, M_offset_12, 20, T[31]);\n\n a = HH(a, b, c, d, M_offset_5, 4, T[32]);\n d = HH(d, a, b, c, M_offset_8, 11, T[33]);\n c = HH(c, d, a, b, M_offset_11, 16, T[34]);\n b = HH(b, c, d, a, M_offset_14, 23, T[35]);\n a = HH(a, b, c, d, M_offset_1, 4, T[36]);\n d = HH(d, a, b, c, M_offset_4, 11, T[37]);\n c = HH(c, d, a, b, M_offset_7, 16, T[38]);\n b = HH(b, c, d, a, M_offset_10, 23, T[39]);\n a = HH(a, b, c, d, M_offset_13, 4, T[40]);\n d = HH(d, a, b, c, M_offset_0, 11, T[41]);\n c = HH(c, d, a, b, M_offset_3, 16, T[42]);\n b = HH(b, c, d, a, M_offset_6, 23, T[43]);\n a = HH(a, b, c, d, M_offset_9, 4, T[44]);\n d = HH(d, a, b, c, M_offset_12, 11, T[45]);\n c = HH(c, d, a, b, M_offset_15, 16, T[46]);\n b = HH(b, c, d, a, M_offset_2, 23, T[47]);\n\n a = II(a, b, c, d, M_offset_0, 6, T[48]);\n d = II(d, a, b, c, M_offset_7, 10, T[49]);\n c = II(c, d, a, b, M_offset_14, 15, T[50]);\n b = II(b, c, d, a, M_offset_5, 21, T[51]);\n a = II(a, b, c, d, M_offset_12, 6, T[52]);\n d = II(d, a, b, c, M_offset_3, 10, T[53]);\n c = II(c, d, a, b, M_offset_10, 15, T[54]);\n b = II(b, c, d, a, M_offset_1, 21, T[55]);\n a = II(a, b, c, d, M_offset_8, 6, T[56]);\n d = II(d, a, b, c, M_offset_15, 10, T[57]);\n c = II(c, d, a, b, M_offset_6, 15, T[58]);\n b = II(b, c, d, a, M_offset_13, 21, T[59]);\n a = II(a, b, c, d, M_offset_4, 6, T[60]);\n d = II(d, a, b, c, M_offset_11, 10, T[61]);\n c = II(c, d, a, b, M_offset_2, 15, T[62]);\n b = II(b, c, d, a, M_offset_9, 21, T[63]);\n\n // Intermediate hash value\n H[0] = (H[0] + a) | 0;\n H[1] = (H[1] + b) | 0;\n H[2] = (H[2] + c) | 0;\n H[3] = (H[3] + d) | 0;\n },\n\n _doFinalize: function () {\n // Shortcuts\n var data = this._data;\n var dataWords = data.words;\n\n var nBitsTotal = this._nDataBytes * 8;\n var nBitsLeft = data.sigBytes * 8;\n\n // Add padding\n dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\n var nBitsTotalH = Math.floor(nBitsTotal / 0x100000000);\n var nBitsTotalL = nBitsTotal;\n dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = (\n (((nBitsTotalH << 8) | (nBitsTotalH >>> 24)) & 0x00ff00ff) |\n (((nBitsTotalH << 24) | (nBitsTotalH >>> 8)) & 0xff00ff00)\n );\n dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (\n (((nBitsTotalL << 8) | (nBitsTotalL >>> 24)) & 0x00ff00ff) |\n (((nBitsTotalL << 24) | (nBitsTotalL >>> 8)) & 0xff00ff00)\n );\n\n data.sigBytes = (dataWords.length + 1) * 4;\n\n // Hash final blocks\n this._process();\n\n // Shortcuts\n var hash = this._hash;\n var H = hash.words;\n\n // Swap endian\n for (var i = 0; i < 4; i++) {\n // Shortcut\n var H_i = H[i];\n\n H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) |\n (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00);\n }\n\n // Return final computed hash\n return hash;\n },\n\n clone: function () {\n var clone = Hasher.clone.call(this);\n clone._hash = this._hash.clone();\n\n return clone;\n }\n });\n\n function FF(a, b, c, d, x, s, t) {\n var n = a + ((b & c) | (~b & d)) + x + t;\n return ((n << s) | (n >>> (32 - s))) + b;\n }\n\n function GG(a, b, c, d, x, s, t) {\n var n = a + ((b & d) | (c & ~d)) + x + t;\n return ((n << s) | (n >>> (32 - s))) + b;\n }\n\n function HH(a, b, c, d, x, s, t) {\n var n = a + (b ^ c ^ d) + x + t;\n return ((n << s) | (n >>> (32 - s))) + b;\n }\n\n function II(a, b, c, d, x, s, t) {\n var n = a + (c ^ (b | ~d)) + x + t;\n return ((n << s) | (n >>> (32 - s))) + b;\n }\n\n /**\n * Shortcut function to the hasher's object interface.\n *\n * @param {WordArray|string} message The message to hash.\n *\n * @return {WordArray} The hash.\n *\n * @static\n *\n * @example\n *\n * var hash = CryptoJS.MD5('message');\n * var hash = CryptoJS.MD5(wordArray);\n */\n C.MD5 = Hasher._createHelper(MD5);\n\n /**\n * Shortcut function to the HMAC's object interface.\n *\n * @param {WordArray|string} message The message to hash.\n * @param {WordArray|string} key The secret key.\n *\n * @return {WordArray} The HMAC.\n *\n * @static\n *\n * @example\n *\n * var hmac = CryptoJS.HmacMD5(message, key);\n */\n C.HmacMD5 = Hasher._createHmacHelper(MD5);\n }(Math));\n\n\n (function () {\n // Shortcuts\n var C = CryptoJS;\n var C_lib = C.lib;\n var WordArray = C_lib.WordArray;\n var Hasher = C_lib.Hasher;\n var C_algo = C.algo;\n\n // Reusable object\n var W = [];\n\n /**\n * SHA-1 hash algorithm.\n */\n var SHA1 = C_algo.SHA1 = Hasher.extend({\n _doReset: function () {\n this._hash = new WordArray.init([\n 0x67452301, 0xefcdab89,\n 0x98badcfe, 0x10325476,\n 0xc3d2e1f0\n ]);\n },\n\n _doProcessBlock: function (M, offset) {\n // Shortcut\n var H = this._hash.words;\n\n // Working variables\n var a = H[0];\n var b = H[1];\n var c = H[2];\n var d = H[3];\n var e = H[4];\n\n // Computation\n for (var i = 0; i < 80; i++) {\n if (i < 16) {\n W[i] = M[offset + i] | 0;\n } else {\n var n = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16];\n W[i] = (n << 1) | (n >>> 31);\n }\n\n var t = ((a << 5) | (a >>> 27)) + e + W[i];\n if (i < 20) {\n t += ((b & c) | (~b & d)) + 0x5a827999;\n } else if (i < 40) {\n t += (b ^ c ^ d) + 0x6ed9eba1;\n } else if (i < 60) {\n t += ((b & c) | (b & d) | (c & d)) - 0x70e44324;\n } else /* if (i < 80) */ {\n t += (b ^ c ^ d) - 0x359d3e2a;\n }\n\n e = d;\n d = c;\n c = (b << 30) | (b >>> 2);\n b = a;\n a = t;\n }\n\n // Intermediate hash value\n H[0] = (H[0] + a) | 0;\n H[1] = (H[1] + b) | 0;\n H[2] = (H[2] + c) | 0;\n H[3] = (H[3] + d) | 0;\n H[4] = (H[4] + e) | 0;\n },\n\n _doFinalize: function () {\n // Shortcuts\n var data = this._data;\n var dataWords = data.words;\n\n var nBitsTotal = this._nDataBytes * 8;\n var nBitsLeft = data.sigBytes * 8;\n\n // Add padding\n dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000);\n dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal;\n data.sigBytes = dataWords.length * 4;\n\n // Hash final blocks\n this._process();\n\n // Return final computed hash\n return this._hash;\n },\n\n clone: function () {\n var clone = Hasher.clone.call(this);\n clone._hash = this._hash.clone();\n\n return clone;\n }\n });\n\n /**\n * Shortcut function to the hasher's object interface.\n *\n * @param {WordArray|string} message The message to hash.\n *\n * @return {WordArray} The hash.\n *\n * @static\n *\n * @example\n *\n * var hash = CryptoJS.SHA1('message');\n * var hash = CryptoJS.SHA1(wordArray);\n */\n C.SHA1 = Hasher._createHelper(SHA1);\n\n /**\n * Shortcut function to the HMAC's object interface.\n *\n * @param {WordArray|string} message The message to hash.\n * @param {WordArray|string} key The secret key.\n *\n * @return {WordArray} The HMAC.\n *\n * @static\n *\n * @example\n *\n * var hmac = CryptoJS.HmacSHA1(message, key);\n */\n C.HmacSHA1 = Hasher._createHmacHelper(SHA1);\n }());\n\n\n (function (Math) {\n // Shortcuts\n var C = CryptoJS;\n var C_lib = C.lib;\n var WordArray = C_lib.WordArray;\n var Hasher = C_lib.Hasher;\n var C_algo = C.algo;\n\n // Initialization and round constants tables\n var H = [];\n var K = [];\n\n // Compute constants\n (function () {\n function isPrime(n) {\n var sqrtN = Math.sqrt(n);\n for (var factor = 2; factor <= sqrtN; factor++) {\n if (!(n % factor)) {\n return false;\n }\n }\n\n return true;\n }\n\n function getFractionalBits(n) {\n return ((n - (n | 0)) * 0x100000000) | 0;\n }\n\n var n = 2;\n var nPrime = 0;\n while (nPrime < 64) {\n if (isPrime(n)) {\n if (nPrime < 8) {\n H[nPrime] = getFractionalBits(Math.pow(n, 1 / 2));\n }\n K[nPrime] = getFractionalBits(Math.pow(n, 1 / 3));\n\n nPrime++;\n }\n\n n++;\n }\n }());\n\n // Reusable object\n var W = [];\n\n /**\n * SHA-256 hash algorithm.\n */\n var SHA256 = C_algo.SHA256 = Hasher.extend({\n _doReset: function () {\n this._hash = new WordArray.init(H.slice(0));\n },\n\n _doProcessBlock: function (M, offset) {\n // Shortcut\n var H = this._hash.words;\n\n // Working variables\n var a = H[0];\n var b = H[1];\n var c = H[2];\n var d = H[3];\n var e = H[4];\n var f = H[5];\n var g = H[6];\n var h = H[7];\n\n // Computation\n for (var i = 0; i < 64; i++) {\n if (i < 16) {\n W[i] = M[offset + i] | 0;\n } else {\n var gamma0x = W[i - 15];\n var gamma0 = ((gamma0x << 25) | (gamma0x >>> 7)) ^\n ((gamma0x << 14) | (gamma0x >>> 18)) ^\n (gamma0x >>> 3);\n\n var gamma1x = W[i - 2];\n var gamma1 = ((gamma1x << 15) | (gamma1x >>> 17)) ^\n ((gamma1x << 13) | (gamma1x >>> 19)) ^\n (gamma1x >>> 10);\n\n W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16];\n }\n\n var ch = (e & f) ^ (~e & g);\n var maj = (a & b) ^ (a & c) ^ (b & c);\n\n var sigma0 = ((a << 30) | (a >>> 2)) ^ ((a << 19) | (a >>> 13)) ^ ((a << 10) | (a >>> 22));\n var sigma1 = ((e << 26) | (e >>> 6)) ^ ((e << 21) | (e >>> 11)) ^ ((e << 7) | (e >>> 25));\n\n var t1 = h + sigma1 + ch + K[i] + W[i];\n var t2 = sigma0 + maj;\n\n h = g;\n g = f;\n f = e;\n e = (d + t1) | 0;\n d = c;\n c = b;\n b = a;\n a = (t1 + t2) | 0;\n }\n\n // Intermediate hash value\n H[0] = (H[0] + a) | 0;\n H[1] = (H[1] + b) | 0;\n H[2] = (H[2] + c) | 0;\n H[3] = (H[3] + d) | 0;\n H[4] = (H[4] + e) | 0;\n H[5] = (H[5] + f) | 0;\n H[6] = (H[6] + g) | 0;\n H[7] = (H[7] + h) | 0;\n },\n\n _doFinalize: function () {\n // Shortcuts\n var data = this._data;\n var dataWords = data.words;\n\n var nBitsTotal = this._nDataBytes * 8;\n var nBitsLeft = data.sigBytes * 8;\n\n // Add padding\n dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000);\n dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal;\n data.sigBytes = dataWords.length * 4;\n\n // Hash final blocks\n this._process();\n\n // Return final computed hash\n return this._hash;\n },\n\n clone: function () {\n var clone = Hasher.clone.call(this);\n clone._hash = this._hash.clone();\n\n return clone;\n }\n });\n\n /**\n * Shortcut function to the hasher's object interface.\n *\n * @param {WordArray|string} message The message to hash.\n *\n * @return {WordArray} The hash.\n *\n * @static\n *\n * @example\n *\n * var hash = CryptoJS.SHA256('message');\n * var hash = CryptoJS.SHA256(wordArray);\n */\n C.SHA256 = Hasher._createHelper(SHA256);\n\n /**\n * Shortcut function to the HMAC's object interface.\n *\n * @param {WordArray|string} message The message to hash.\n * @param {WordArray|string} key The secret key.\n *\n * @return {WordArray} The HMAC.\n *\n * @static\n *\n * @example\n *\n * var hmac = CryptoJS.HmacSHA256(message, key);\n */\n C.HmacSHA256 = Hasher._createHmacHelper(SHA256);\n }(Math));\n\n\n (function () {\n // Shortcuts\n var C = CryptoJS;\n var C_lib = C.lib;\n var WordArray = C_lib.WordArray;\n var C_algo = C.algo;\n var SHA256 = C_algo.SHA256;\n\n /**\n * SHA-224 hash algorithm.\n */\n var SHA224 = C_algo.SHA224 = SHA256.extend({\n _doReset: function () {\n this._hash = new WordArray.init([\n 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,\n 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4\n ]);\n },\n\n _doFinalize: function () {\n var hash = SHA256._doFinalize.call(this);\n\n hash.sigBytes -= 4;\n\n return hash;\n }\n });\n\n /**\n * Shortcut function to the hasher's object interface.\n *\n * @param {WordArray|string} message The message to hash.\n *\n * @return {WordArray} The hash.\n *\n * @static\n *\n * @example\n *\n * var hash = CryptoJS.SHA224('message');\n * var hash = CryptoJS.SHA224(wordArray);\n */\n C.SHA224 = SHA256._createHelper(SHA224);\n\n /**\n * Shortcut function to the HMAC's object interface.\n *\n * @param {WordArray|string} message The message to hash.\n * @param {WordArray|string} key The secret key.\n *\n * @return {WordArray} The HMAC.\n *\n * @static\n *\n * @example\n *\n * var hmac = CryptoJS.HmacSHA224(message, key);\n */\n C.HmacSHA224 = SHA256._createHmacHelper(SHA224);\n }());\n\n\n (function () {\n // Shortcuts\n var C = CryptoJS;\n var C_lib = C.lib;\n var Hasher = C_lib.Hasher;\n var C_x64 = C.x64;\n var X64Word = C_x64.Word;\n var X64WordArray = C_x64.WordArray;\n var C_algo = C.algo;\n\n function X64Word_create() {\n return X64Word.create.apply(X64Word, arguments);\n }\n\n // Constants\n var K = [\n X64Word_create(0x428a2f98, 0xd728ae22), X64Word_create(0x71374491, 0x23ef65cd),\n X64Word_create(0xb5c0fbcf, 0xec4d3b2f), X64Word_create(0xe9b5dba5, 0x8189dbbc),\n X64Word_create(0x3956c25b, 0xf348b538), X64Word_create(0x59f111f1, 0xb605d019),\n X64Word_create(0x923f82a4, 0xaf194f9b), X64Word_create(0xab1c5ed5, 0xda6d8118),\n X64Word_create(0xd807aa98, 0xa3030242), X64Word_create(0x12835b01, 0x45706fbe),\n X64Word_create(0x243185be, 0x4ee4b28c), X64Word_create(0x550c7dc3, 0xd5ffb4e2),\n X64Word_create(0x72be5d74, 0xf27b896f), X64Word_create(0x80deb1fe, 0x3b1696b1),\n X64Word_create(0x9bdc06a7, 0x25c71235), X64Word_create(0xc19bf174, 0xcf692694),\n X64Word_create(0xe49b69c1, 0x9ef14ad2), X64Word_create(0xefbe4786, 0x384f25e3),\n X64Word_create(0x0fc19dc6, 0x8b8cd5b5), X64Word_create(0x240ca1cc, 0x77ac9c65),\n X64Word_create(0x2de92c6f, 0x592b0275), X64Word_create(0x4a7484aa, 0x6ea6e483),\n X64Word_create(0x5cb0a9dc, 0xbd41fbd4), X64Word_create(0x76f988da, 0x831153b5),\n X64Word_create(0x983e5152, 0xee66dfab), X64Word_create(0xa831c66d, 0x2db43210),\n X64Word_create(0xb00327c8, 0x98fb213f), X64Word_create(0xbf597fc7, 0xbeef0ee4),\n X64Word_create(0xc6e00bf3, 0x3da88fc2), X64Word_create(0xd5a79147, 0x930aa725),\n X64Word_create(0x06ca6351, 0xe003826f), X64Word_create(0x14292967, 0x0a0e6e70),\n X64Word_create(0x27b70a85, 0x46d22ffc), X64Word_create(0x2e1b2138, 0x5c26c926),\n X64Word_create(0x4d2c6dfc, 0x5ac42aed), X64Word_create(0x53380d13, 0x9d95b3df),\n X64Word_create(0x650a7354, 0x8baf63de), X64Word_create(0x766a0abb, 0x3c77b2a8),\n X64Word_create(0x81c2c92e, 0x47edaee6), X64Word_create(0x92722c85, 0x1482353b),\n X64Word_create(0xa2bfe8a1, 0x4cf10364), X64Word_create(0xa81a664b, 0xbc423001),\n X64Word_create(0xc24b8b70, 0xd0f89791), X64Word_create(0xc76c51a3, 0x0654be30),\n X64Word_create(0xd192e819, 0xd6ef5218), X64Word_create(0xd6990624, 0x5565a910),\n X64Word_create(0xf40e3585, 0x5771202a), X64Word_create(0x106aa070, 0x32bbd1b8),\n X64Word_create(0x19a4c116, 0xb8d2d0c8), X64Word_create(0x1e376c08, 0x5141ab53),\n X64Word_create(0x2748774c, 0xdf8eeb99), X64Word_create(0x34b0bcb5, 0xe19b48a8),\n X64Word_create(0x391c0cb3, 0xc5c95a63), X64Word_create(0x4ed8aa4a, 0xe3418acb),\n X64Word_create(0x5b9cca4f, 0x7763e373), X64Word_create(0x682e6ff3, 0xd6b2b8a3),\n X64Word_create(0x748f82ee, 0x5defb2fc), X64Word_create(0x78a5636f, 0x43172f60),\n X64Word_create(0x84c87814, 0xa1f0ab72), X64Word_create(0x8cc70208, 0x1a6439ec),\n X64Word_create(0x90befffa, 0x23631e28), X64Word_create(0xa4506ceb, 0xde82bde9),\n X64Word_create(0xbef9a3f7, 0xb2c67915), X64Word_create(0xc67178f2, 0xe372532b),\n X64Word_create(0xca273ece, 0xea26619c), X64Word_create(0xd186b8c7, 0x21c0c207),\n X64Word_create(0xeada7dd6, 0xcde0eb1e), X64Word_create(0xf57d4f7f, 0xee6ed178),\n X64Word_create(0x06f067aa, 0x72176fba), X64Word_create(0x0a637dc5, 0xa2c898a6),\n X64Word_create(0x113f9804, 0xbef90dae), X64Word_create(0x1b710b35, 0x131c471b),\n X64Word_create(0x28db77f5, 0x23047d84), X64Word_create(0x32caab7b, 0x40c72493),\n X64Word_create(0x3c9ebe0a, 0x15c9bebc), X64Word_create(0x431d67c4, 0x9c100d4c),\n X64Word_create(0x4cc5d4be, 0xcb3e42b6), X64Word_create(0x597f299c, 0xfc657e2a),\n X64Word_create(0x5fcb6fab, 0x3ad6faec), X64Word_create(0x6c44198c, 0x4a475817)\n ];\n\n // Reusable objects\n var W = [];\n (function () {\n for (var i = 0; i < 80; i++) {\n W[i] = X64Word_create();\n }\n }());\n\n /**\n * SHA-512 hash algorithm.\n */\n var SHA512 = C_algo.SHA512 = Hasher.extend({\n _doReset: function () {\n this._hash = new X64WordArray.init([\n new X64Word.init(0x6a09e667, 0xf3bcc908), new X64Word.init(0xbb67ae85, 0x84caa73b),\n new X64Word.init(0x3c6ef372, 0xfe94f82b), new X64Word.init(0xa54ff53a, 0x5f1d36f1),\n new X64Word.init(0x510e527f, 0xade682d1), new X64Word.init(0x9b05688c, 0x2b3e6c1f),\n new X64Word.init(0x1f83d9ab, 0xfb41bd6b), new X64Word.init(0x5be0cd19, 0x137e2179)\n ]);\n },\n\n _doProcessBlock: function (M, offset) {\n // Shortcuts\n var H = this._hash.words;\n\n var H0 = H[0];\n var H1 = H[1];\n var H2 = H[2];\n var H3 = H[3];\n var H4 = H[4];\n var H5 = H[5];\n var H6 = H[6];\n var H7 = H[7];\n\n var H0h = H0.high;\n var H0l = H0.low;\n var H1h = H1.high;\n var H1l = H1.low;\n var H2h = H2.high;\n var H2l = H2.low;\n var H3h = H3.high;\n var H3l = H3.low;\n var H4h = H4.high;\n var H4l = H4.low;\n var H5h = H5.high;\n var H5l = H5.low;\n var H6h = H6.high;\n var H6l = H6.low;\n var H7h = H7.high;\n var H7l = H7.low;\n\n // Working variables\n var ah = H0h;\n var al = H0l;\n var bh = H1h;\n var bl = H1l;\n var ch = H2h;\n var cl = H2l;\n var dh = H3h;\n var dl = H3l;\n var eh = H4h;\n var el = H4l;\n var fh = H5h;\n var fl = H5l;\n var gh = H6h;\n var gl = H6l;\n var hh = H7h;\n var hl = H7l;\n\n // Rounds\n for (var i = 0; i < 80; i++) {\n var Wil;\n var Wih;\n\n // Shortcut\n var Wi = W[i];\n\n // Extend message\n if (i < 16) {\n Wih = Wi.high = M[offset + i * 2] | 0;\n Wil = Wi.low = M[offset + i * 2 + 1] | 0;\n } else {\n // Gamma0\n var gamma0x = W[i - 15];\n var gamma0xh = gamma0x.high;\n var gamma0xl = gamma0x.low;\n var gamma0h = ((gamma0xh >>> 1) | (gamma0xl << 31)) ^ ((gamma0xh >>> 8) | (gamma0xl << 24)) ^ (gamma0xh >>> 7);\n var gamma0l = ((gamma0xl >>> 1) | (gamma0xh << 31)) ^ ((gamma0xl >>> 8) | (gamma0xh << 24)) ^ ((gamma0xl >>> 7) | (gamma0xh << 25));\n\n // Gamma1\n var gamma1x = W[i - 2];\n var gamma1xh = gamma1x.high;\n var gamma1xl = gamma1x.low;\n var gamma1h = ((gamma1xh >>> 19) | (gamma1xl << 13)) ^ ((gamma1xh << 3) | (gamma1xl >>> 29)) ^ (gamma1xh >>> 6);\n var gamma1l = ((gamma1xl >>> 19) | (gamma1xh << 13)) ^ ((gamma1xl << 3) | (gamma1xh >>> 29)) ^ ((gamma1xl >>> 6) | (gamma1xh << 26));\n\n // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]\n var Wi7 = W[i - 7];\n var Wi7h = Wi7.high;\n var Wi7l = Wi7.low;\n\n var Wi16 = W[i - 16];\n var Wi16h = Wi16.high;\n var Wi16l = Wi16.low;\n\n Wil = gamma0l + Wi7l;\n Wih = gamma0h + Wi7h + ((Wil >>> 0) < (gamma0l >>> 0) ? 1 : 0);\n Wil = Wil + gamma1l;\n Wih = Wih + gamma1h + ((Wil >>> 0) < (gamma1l >>> 0) ? 1 : 0);\n Wil = Wil + Wi16l;\n Wih = Wih + Wi16h + ((Wil >>> 0) < (Wi16l >>> 0) ? 1 : 0);\n\n Wi.high = Wih;\n Wi.low = Wil;\n }\n\n var chh = (eh & fh) ^ (~eh & gh);\n var chl = (el & fl) ^ (~el & gl);\n var majh = (ah & bh) ^ (ah & ch) ^ (bh & ch);\n var majl = (al & bl) ^ (al & cl) ^ (bl & cl);\n\n var sigma0h = ((ah >>> 28) | (al << 4)) ^ ((ah << 30) | (al >>> 2)) ^ ((ah << 25) | (al >>> 7));\n var sigma0l = ((al >>> 28) | (ah << 4)) ^ ((al << 30) | (ah >>> 2)) ^ ((al << 25) | (ah >>> 7));\n var sigma1h = ((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9));\n var sigma1l = ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9));\n\n // t1 = h + sigma1 + ch + K[i] + W[i]\n var Ki = K[i];\n var Kih = Ki.high;\n var Kil = Ki.low;\n\n var t1l = hl + sigma1l;\n var t1h = hh + sigma1h + ((t1l >>> 0) < (hl >>> 0) ? 1 : 0);\n var t1l = t1l + chl;\n var t1h = t1h + chh + ((t1l >>> 0) < (chl >>> 0) ? 1 : 0);\n var t1l = t1l + Kil;\n var t1h = t1h + Kih + ((t1l >>> 0) < (Kil >>> 0) ? 1 : 0);\n var t1l = t1l + Wil;\n var t1h = t1h + Wih + ((t1l >>> 0) < (Wil >>> 0) ? 1 : 0);\n\n // t2 = sigma0 + maj\n var t2l = sigma0l + majl;\n var t2h = sigma0h + majh + ((t2l >>> 0) < (sigma0l >>> 0) ? 1 : 0);\n\n // Update working variables\n hh = gh;\n hl = gl;\n gh = fh;\n gl = fl;\n fh = eh;\n fl = el;\n el = (dl + t1l) | 0;\n eh = (dh + t1h + ((el >>> 0) < (dl >>> 0) ? 1 : 0)) | 0;\n dh = ch;\n dl = cl;\n ch = bh;\n cl = bl;\n bh = ah;\n bl = al;\n al = (t1l + t2l) | 0;\n ah = (t1h + t2h + ((al >>> 0) < (t1l >>> 0) ? 1 : 0)) | 0;\n }\n\n // Intermediate hash value\n H0l = H0.low = (H0l + al);\n H0.high = (H0h + ah + ((H0l >>> 0) < (al >>> 0) ? 1 : 0));\n H1l = H1.low = (H1l + bl);\n H1.high = (H1h + bh + ((H1l >>> 0) < (bl >>> 0) ? 1 : 0));\n H2l = H2.low = (H2l + cl);\n H2.high = (H2h + ch + ((H2l >>> 0) < (cl >>> 0) ? 1 : 0));\n H3l = H3.low = (H3l + dl);\n H3.high = (H3h + dh + ((H3l >>> 0) < (dl >>> 0) ? 1 : 0));\n H4l = H4.low = (H4l + el);\n H4.high = (H4h + eh + ((H4l >>> 0) < (el >>> 0) ? 1 : 0));\n H5l = H5.low = (H5l + fl);\n H5.high = (H5h + fh + ((H5l >>> 0) < (fl >>> 0) ? 1 : 0));\n H6l = H6.low = (H6l + gl);\n H6.high = (H6h + gh + ((H6l >>> 0) < (gl >>> 0) ? 1 : 0));\n H7l = H7.low = (H7l + hl);\n H7.high = (H7h + hh + ((H7l >>> 0) < (hl >>> 0) ? 1 : 0));\n },\n\n _doFinalize: function () {\n // Shortcuts\n var data = this._data;\n var dataWords = data.words;\n\n var nBitsTotal = this._nDataBytes * 8;\n var nBitsLeft = data.sigBytes * 8;\n\n // Add padding\n dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n dataWords[(((nBitsLeft + 128) >>> 10) << 5) + 30] = Math.floor(nBitsTotal / 0x100000000);\n dataWords[(((nBitsLeft + 128) >>> 10) << 5) + 31] = nBitsTotal;\n data.sigBytes = dataWords.length * 4;\n\n // Hash final blocks\n this._process();\n\n // Convert hash to 32-bit word array before returning\n var hash = this._hash.toX32();\n\n // Return final computed hash\n return hash;\n },\n\n clone: function () {\n var clone = Hasher.clone.call(this);\n clone._hash = this._hash.clone();\n\n return clone;\n },\n\n blockSize: 1024/32\n });\n\n /**\n * Shortcut function to the hasher's object interface.\n *\n * @param {WordArray|string} message The message to hash.\n *\n * @return {WordArray} The hash.\n *\n * @static\n *\n * @example\n *\n * var hash = CryptoJS.SHA512('message');\n * var hash = CryptoJS.SHA512(wordArray);\n */\n C.SHA512 = Hasher._createHelper(SHA512);\n\n /**\n * Shortcut function to the HMAC's object interface.\n *\n * @param {WordArray|string} message The message to hash.\n * @param {WordArray|string} key The secret key.\n *\n * @return {WordArray} The HMAC.\n *\n * @static\n *\n * @example\n *\n * var hmac = CryptoJS.HmacSHA512(message, key);\n */\n C.HmacSHA512 = Hasher._createHmacHelper(SHA512);\n }());\n\n\n (function () {\n // Shortcuts\n var C = CryptoJS;\n var C_x64 = C.x64;\n var X64Word = C_x64.Word;\n var X64WordArray = C_x64.WordArray;\n var C_algo = C.algo;\n var SHA512 = C_algo.SHA512;\n\n /**\n * SHA-384 hash algorithm.\n */\n var SHA384 = C_algo.SHA384 = SHA512.extend({\n _doReset: function () {\n this._hash = new X64WordArray.init([\n new X64Word.init(0xcbbb9d5d, 0xc1059ed8), new X64Word.init(0x629a292a, 0x367cd507),\n new X64Word.init(0x9159015a, 0x3070dd17), new X64Word.init(0x152fecd8, 0xf70e5939),\n new X64Word.init(0x67332667, 0xffc00b31), new X64Word.init(0x8eb44a87, 0x68581511),\n new X64Word.init(0xdb0c2e0d, 0x64f98fa7), new X64Word.init(0x47b5481d, 0xbefa4fa4)\n ]);\n },\n\n _doFinalize: function () {\n var hash = SHA512._doFinalize.call(this);\n\n hash.sigBytes -= 16;\n\n return hash;\n }\n });\n\n /**\n * Shortcut function to the hasher's object interface.\n *\n * @param {WordArray|string} message The message to hash.\n *\n * @return {WordArray} The hash.\n *\n * @static\n *\n * @example\n *\n * var hash = CryptoJS.SHA384('message');\n * var hash = CryptoJS.SHA384(wordArray);\n */\n C.SHA384 = SHA512._createHelper(SHA384);\n\n /**\n * Shortcut function to the HMAC's object interface.\n *\n * @param {WordArray|string} message The message to hash.\n * @param {WordArray|string} key The secret key.\n *\n * @return {WordArray} The HMAC.\n *\n * @static\n *\n * @example\n *\n * var hmac = CryptoJS.HmacSHA384(message, key);\n */\n C.HmacSHA384 = SHA512._createHmacHelper(SHA384);\n }());\n\n\n (function (Math) {\n // Shortcuts\n var C = CryptoJS;\n var C_lib = C.lib;\n var WordArray = C_lib.WordArray;\n var Hasher = C_lib.Hasher;\n var C_x64 = C.x64;\n var X64Word = C_x64.Word;\n var C_algo = C.algo;\n\n // Constants tables\n var RHO_OFFSETS = [];\n var PI_INDEXES = [];\n var ROUND_CONSTANTS = [];\n\n // Compute Constants\n (function () {\n // Compute rho offset constants\n var x = 1, y = 0;\n for (var t = 0; t < 24; t++) {\n RHO_OFFSETS[x + 5 * y] = ((t + 1) * (t + 2) / 2) % 64;\n\n var newX = y % 5;\n var newY = (2 * x + 3 * y) % 5;\n x = newX;\n y = newY;\n }\n\n // Compute pi index constants\n for (var x = 0; x < 5; x++) {\n for (var y = 0; y < 5; y++) {\n PI_INDEXES[x + 5 * y] = y + ((2 * x + 3 * y) % 5) * 5;\n }\n }\n\n // Compute round constants\n var LFSR = 0x01;\n for (var i = 0; i < 24; i++) {\n var roundConstantMsw = 0;\n var roundConstantLsw = 0;\n\n for (var j = 0; j < 7; j++) {\n if (LFSR & 0x01) {\n var bitPosition = (1 << j) - 1;\n if (bitPosition < 32) {\n roundConstantLsw ^= 1 << bitPosition;\n } else /* if (bitPosition >= 32) */ {\n roundConstantMsw ^= 1 << (bitPosition - 32);\n }\n }\n\n // Compute next LFSR\n if (LFSR & 0x80) {\n // Primitive polynomial over GF(2): x^8 + x^6 + x^5 + x^4 + 1\n LFSR = (LFSR << 1) ^ 0x71;\n } else {\n LFSR <<= 1;\n }\n }\n\n ROUND_CONSTANTS[i] = X64Word.create(roundConstantMsw, roundConstantLsw);\n }\n }());\n\n // Reusable objects for temporary values\n var T = [];\n (function () {\n for (var i = 0; i < 25; i++) {\n T[i] = X64Word.create();\n }\n }());\n\n /**\n * SHA-3 hash algorithm.\n */\n var SHA3 = C_algo.SHA3 = Hasher.extend({\n /**\n * Configuration options.\n *\n * @property {number} outputLength\n * The desired number of bits in the output hash.\n * Only values permitted are: 224, 256, 384, 512.\n * Default: 512\n */\n cfg: Hasher.cfg.extend({\n outputLength: 512\n }),\n\n _doReset: function () {\n var state = this._state = []\n for (var i = 0; i < 25; i++) {\n state[i] = new X64Word.init();\n }\n\n this.blockSize = (1600 - 2 * this.cfg.outputLength) / 32;\n },\n\n _doProcessBlock: function (M, offset) {\n // Shortcuts\n var state = this._state;\n var nBlockSizeLanes = this.blockSize / 2;\n\n // Absorb\n for (var i = 0; i < nBlockSizeLanes; i++) {\n // Shortcuts\n var M2i = M[offset + 2 * i];\n var M2i1 = M[offset + 2 * i + 1];\n\n // Swap endian\n M2i = (\n (((M2i << 8) | (M2i >>> 24)) & 0x00ff00ff) |\n (((M2i << 24) | (M2i >>> 8)) & 0xff00ff00)\n );\n M2i1 = (\n (((M2i1 << 8) | (M2i1 >>> 24)) & 0x00ff00ff) |\n (((M2i1 << 24) | (M2i1 >>> 8)) & 0xff00ff00)\n );\n\n // Absorb message into state\n var lane = state[i];\n lane.high ^= M2i1;\n lane.low ^= M2i;\n }\n\n // Rounds\n for (var round = 0; round < 24; round++) {\n // Theta\n for (var x = 0; x < 5; x++) {\n // Mix column lanes\n var tMsw = 0, tLsw = 0;\n for (var y = 0; y < 5; y++) {\n var lane = state[x + 5 * y];\n tMsw ^= lane.high;\n tLsw ^= lane.low;\n }\n\n // Temporary values\n var Tx = T[x];\n Tx.high = tMsw;\n Tx.low = tLsw;\n }\n for (var x = 0; x < 5; x++) {\n // Shortcuts\n var Tx4 = T[(x + 4) % 5];\n var Tx1 = T[(x + 1) % 5];\n var Tx1Msw = Tx1.high;\n var Tx1Lsw = Tx1.low;\n\n // Mix surrounding columns\n var tMsw = Tx4.high ^ ((Tx1Msw << 1) | (Tx1Lsw >>> 31));\n var tLsw = Tx4.low ^ ((Tx1Lsw << 1) | (Tx1Msw >>> 31));\n for (var y = 0; y < 5; y++) {\n var lane = state[x + 5 * y];\n lane.high ^= tMsw;\n lane.low ^= tLsw;\n }\n }\n\n // Rho Pi\n for (var laneIndex = 1; laneIndex < 25; laneIndex++) {\n var tMsw;\n var tLsw;\n\n // Shortcuts\n var lane = state[laneIndex];\n var laneMsw = lane.high;\n var laneLsw = lane.low;\n var rhoOffset = RHO_OFFSETS[laneIndex];\n\n // Rotate lanes\n if (rhoOffset < 32) {\n tMsw = (laneMsw << rhoOffset) | (laneLsw >>> (32 - rhoOffset));\n tLsw = (laneLsw << rhoOffset) | (laneMsw >>> (32 - rhoOffset));\n } else /* if (rhoOffset >= 32) */ {\n tMsw = (laneLsw << (rhoOffset - 32)) | (laneMsw >>> (64 - rhoOffset));\n tLsw = (laneMsw << (rhoOffset - 32)) | (laneLsw >>> (64 - rhoOffset));\n }\n\n // Transpose lanes\n var TPiLane = T[PI_INDEXES[laneIndex]];\n TPiLane.high = tMsw;\n TPiLane.low = tLsw;\n }\n\n // Rho pi at x = y = 0\n var T0 = T[0];\n var state0 = state[0];\n T0.high = state0.high;\n T0.low = state0.low;\n\n // Chi\n for (var x = 0; x < 5; x++) {\n for (var y = 0; y < 5; y++) {\n // Shortcuts\n var laneIndex = x + 5 * y;\n var lane = state[laneIndex];\n var TLane = T[laneIndex];\n var Tx1Lane = T[((x + 1) % 5) + 5 * y];\n var Tx2Lane = T[((x + 2) % 5) + 5 * y];\n\n // Mix rows\n lane.high = TLane.high ^ (~Tx1Lane.high & Tx2Lane.high);\n lane.low = TLane.low ^ (~Tx1Lane.low & Tx2Lane.low);\n }\n }\n\n // Iota\n var lane = state[0];\n var roundConstant = ROUND_CONSTANTS[round];\n lane.high ^= roundConstant.high;\n lane.low ^= roundConstant.low;\n }\n },\n\n _doFinalize: function () {\n // Shortcuts\n var data = this._data;\n var dataWords = data.words;\n var nBitsTotal = this._nDataBytes * 8;\n var nBitsLeft = data.sigBytes * 8;\n var blockSizeBits = this.blockSize * 32;\n\n // Add padding\n dataWords[nBitsLeft >>> 5] |= 0x1 << (24 - nBitsLeft % 32);\n dataWords[((Math.ceil((nBitsLeft + 1) / blockSizeBits) * blockSizeBits) >>> 5) - 1] |= 0x80;\n data.sigBytes = dataWords.length * 4;\n\n // Hash final blocks\n this._process();\n\n // Shortcuts\n var state = this._state;\n var outputLengthBytes = this.cfg.outputLength / 8;\n var outputLengthLanes = outputLengthBytes / 8;\n\n // Squeeze\n var hashWords = [];\n for (var i = 0; i < outputLengthLanes; i++) {\n // Shortcuts\n var lane = state[i];\n var laneMsw = lane.high;\n var laneLsw = lane.low;\n\n // Swap endian\n laneMsw = (\n (((laneMsw << 8) | (laneMsw >>> 24)) & 0x00ff00ff) |\n (((laneMsw << 24) | (laneMsw >>> 8)) & 0xff00ff00)\n );\n laneLsw = (\n (((laneLsw << 8) | (laneLsw >>> 24)) & 0x00ff00ff) |\n (((laneLsw << 24) | (laneLsw >>> 8)) & 0xff00ff00)\n );\n\n // Squeeze state to retrieve hash\n hashWords.push(laneLsw);\n hashWords.push(laneMsw);\n }\n\n // Return final computed hash\n return new WordArray.init(hashWords, outputLengthBytes);\n },\n\n clone: function () {\n var clone = Hasher.clone.call(this);\n\n var state = clone._state = this._state.slice(0);\n for (var i = 0; i < 25; i++) {\n state[i] = state[i].clone();\n }\n\n return clone;\n }\n });\n\n /**\n * Shortcut function to the hasher's object interface.\n *\n * @param {WordArray|string} message The message to hash.\n *\n * @return {WordArray} The hash.\n *\n * @static\n *\n * @example\n *\n * var hash = CryptoJS.SHA3('message');\n * var hash = CryptoJS.SHA3(wordArray);\n */\n C.SHA3 = Hasher._createHelper(SHA3);\n\n /**\n * Shortcut function to the HMAC's object interface.\n *\n * @param {WordArray|string} message The message to hash.\n * @param {WordArray|string} key The secret key.\n *\n * @return {WordArray} The HMAC.\n *\n * @static\n *\n * @example\n *\n * var hmac = CryptoJS.HmacSHA3(message, key);\n */\n C.HmacSHA3 = Hasher._createHmacHelper(SHA3);\n }(Math));\n\n\n /** @preserve\n (c) 2012 by Cédric Mesnil. All rights reserved.\n\n Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:\n\n - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.\n - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.\n\n THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n (function (Math) {\n // Shortcuts\n var C = CryptoJS;\n var C_lib = C.lib;\n var WordArray = C_lib.WordArray;\n var Hasher = C_lib.Hasher;\n var C_algo = C.algo;\n\n // Constants table\n var _zl = WordArray.create([\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13]);\n var _zr = WordArray.create([\n 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11]);\n var _sl = WordArray.create([\n 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6 ]);\n var _sr = WordArray.create([\n 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11 ]);\n\n var _hl = WordArray.create([ 0x00000000, 0x5A827999, 0x6ED9EBA1, 0x8F1BBCDC, 0xA953FD4E]);\n var _hr = WordArray.create([ 0x50A28BE6, 0x5C4DD124, 0x6D703EF3, 0x7A6D76E9, 0x00000000]);\n\n /**\n * RIPEMD160 hash algorithm.\n */\n var RIPEMD160 = C_algo.RIPEMD160 = Hasher.extend({\n _doReset: function () {\n this._hash = WordArray.create([0x67452301, 0xEFCDAB89, 0x98BADCFE, 0x10325476, 0xC3D2E1F0]);\n },\n\n _doProcessBlock: function (M, offset) {\n\n // Swap endian\n for (var i = 0; i < 16; i++) {\n // Shortcuts\n var offset_i = offset + i;\n var M_offset_i = M[offset_i];\n\n // Swap\n M[offset_i] = (\n (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) |\n (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00)\n );\n }\n // Shortcut\n var H = this._hash.words;\n var hl = _hl.words;\n var hr = _hr.words;\n var zl = _zl.words;\n var zr = _zr.words;\n var sl = _sl.words;\n var sr = _sr.words;\n\n // Working variables\n var al, bl, cl, dl, el;\n var ar, br, cr, dr, er;\n\n ar = al = H[0];\n br = bl = H[1];\n cr = cl = H[2];\n dr = dl = H[3];\n er = el = H[4];\n // Computation\n var t;\n for (var i = 0; i < 80; i += 1) {\n t = (al + M[offset+zl[i]])|0;\n if (i<16){\n t += f1(bl,cl,dl) + hl[0];\n } else if (i<32) {\n t += f2(bl,cl,dl) + hl[1];\n } else if (i<48) {\n t += f3(bl,cl,dl) + hl[2];\n } else if (i<64) {\n t += f4(bl,cl,dl) + hl[3];\n } else {// if (i<80) {\n t += f5(bl,cl,dl) + hl[4];\n }\n t = t|0;\n t = rotl(t,sl[i]);\n t = (t+el)|0;\n al = el;\n el = dl;\n dl = rotl(cl, 10);\n cl = bl;\n bl = t;\n\n t = (ar + M[offset+zr[i]])|0;\n if (i<16){\n t += f5(br,cr,dr) + hr[0];\n } else if (i<32) {\n t += f4(br,cr,dr) + hr[1];\n } else if (i<48) {\n t += f3(br,cr,dr) + hr[2];\n } else if (i<64) {\n t += f2(br,cr,dr) + hr[3];\n } else {// if (i<80) {\n t += f1(br,cr,dr) + hr[4];\n }\n t = t|0;\n t = rotl(t,sr[i]) ;\n t = (t+er)|0;\n ar = er;\n er = dr;\n dr = rotl(cr, 10);\n cr = br;\n br = t;\n }\n // Intermediate hash value\n t = (H[1] + cl + dr)|0;\n H[1] = (H[2] + dl + er)|0;\n H[2] = (H[3] + el + ar)|0;\n H[3] = (H[4] + al + br)|0;\n H[4] = (H[0] + bl + cr)|0;\n H[0] = t;\n },\n\n _doFinalize: function () {\n // Shortcuts\n var data = this._data;\n var dataWords = data.words;\n\n var nBitsTotal = this._nDataBytes * 8;\n var nBitsLeft = data.sigBytes * 8;\n\n // Add padding\n dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (\n (((nBitsTotal << 8) | (nBitsTotal >>> 24)) & 0x00ff00ff) |\n (((nBitsTotal << 24) | (nBitsTotal >>> 8)) & 0xff00ff00)\n );\n data.sigBytes = (dataWords.length + 1) * 4;\n\n // Hash final blocks\n this._process();\n\n // Shortcuts\n var hash = this._hash;\n var H = hash.words;\n\n // Swap endian\n for (var i = 0; i < 5; i++) {\n // Shortcut\n var H_i = H[i];\n\n // Swap\n H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) |\n (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00);\n }\n\n // Return final computed hash\n return hash;\n },\n\n clone: function () {\n var clone = Hasher.clone.call(this);\n clone._hash = this._hash.clone();\n\n return clone;\n }\n });\n\n\n function f1(x, y, z) {\n return ((x) ^ (y) ^ (z));\n\n }\n\n function f2(x, y, z) {\n return (((x)&(y)) | ((~x)&(z)));\n }\n\n function f3(x, y, z) {\n return (((x) | (~(y))) ^ (z));\n }\n\n function f4(x, y, z) {\n return (((x) & (z)) | ((y)&(~(z))));\n }\n\n function f5(x, y, z) {\n return ((x) ^ ((y) |(~(z))));\n\n }\n\n function rotl(x,n) {\n return (x<<n) | (x>>>(32-n));\n }\n\n\n /**\n * Shortcut function to the hasher's object interface.\n *\n * @param {WordArray|string} message The message to hash.\n *\n * @return {WordArray} The hash.\n *\n * @static\n *\n * @example\n *\n * var hash = CryptoJS.RIPEMD160('message');\n * var hash = CryptoJS.RIPEMD160(wordArray);\n */\n C.RIPEMD160 = Hasher._createHelper(RIPEMD160);\n\n /**\n * Shortcut function to the HMAC's object interface.\n *\n * @param {WordArray|string} message The message to hash.\n * @param {WordArray|string} key The secret key.\n *\n * @return {WordArray} The HMAC.\n *\n * @static\n *\n * @example\n *\n * var hmac = CryptoJS.HmacRIPEMD160(message, key);\n */\n C.HmacRIPEMD160 = Hasher._createHmacHelper(RIPEMD160);\n }(Math));\n\n\n (function () {\n // Shortcuts\n var C = CryptoJS;\n var C_lib = C.lib;\n var Base = C_lib.Base;\n var C_enc = C.enc;\n var Utf8 = C_enc.Utf8;\n var C_algo = C.algo;\n\n /**\n * HMAC algorithm.\n */\n var HMAC = C_algo.HMAC = Base.extend({\n /**\n * Initializes a newly created HMAC.\n *\n * @param {Hasher} hasher The hash algorithm to use.\n * @param {WordArray|string} key The secret key.\n *\n * @example\n *\n * var hmacHasher = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256, key);\n */\n init: function (hasher, key) {\n // Init hasher\n hasher = this._hasher = new hasher.init();\n\n // Convert string to WordArray, else assume WordArray already\n if (typeof key == 'string') {\n key = Utf8.parse(key);\n }\n\n // Shortcuts\n var hasherBlockSize = hasher.blockSize;\n var hasherBlockSizeBytes = hasherBlockSize * 4;\n\n // Allow arbitrary length keys\n if (key.sigBytes > hasherBlockSizeBytes) {\n key = hasher.finalize(key);\n }\n\n // Clamp excess bits\n key.clamp();\n\n // Clone key for inner and outer pads\n var oKey = this._oKey = key.clone();\n var iKey = this._iKey = key.clone();\n\n // Shortcuts\n var oKeyWords = oKey.words;\n var iKeyWords = iKey.words;\n\n // XOR keys with pad constants\n for (var i = 0; i < hasherBlockSize; i++) {\n oKeyWords[i] ^= 0x5c5c5c5c;\n iKeyWords[i] ^= 0x36363636;\n }\n oKey.sigBytes = iKey.sigBytes = hasherBlockSizeBytes;\n\n // Set initial values\n this.reset();\n },\n\n /**\n * Resets this HMAC to its initial state.\n *\n * @example\n *\n * hmacHasher.reset();\n */\n reset: function () {\n // Shortcut\n var hasher = this._hasher;\n\n // Reset\n hasher.reset();\n hasher.update(this._iKey);\n },\n\n /**\n * Updates this HMAC with a message.\n *\n * @param {WordArray|string} messageUpdate The message to append.\n *\n * @return {HMAC} This HMAC instance.\n *\n * @example\n *\n * hmacHasher.update('message');\n * hmacHasher.update(wordArray);\n */\n update: function (messageUpdate) {\n this._hasher.update(messageUpdate);\n\n // Chainable\n return this;\n },\n\n /**\n * Finalizes the HMAC computation.\n * Note that the finalize operation is effectively a destructive, read-once operation.\n *\n * @param {WordArray|string} messageUpdate (Optional) A final message update.\n *\n * @return {WordArray} The HMAC.\n *\n * @example\n *\n * var hmac = hmacHasher.finalize();\n * var hmac = hmacHasher.finalize('message');\n * var hmac = hmacHasher.finalize(wordArray);\n */\n finalize: function (messageUpdate) {\n // Shortcut\n var hasher = this._hasher;\n\n // Compute HMAC\n var innerHash = hasher.finalize(messageUpdate);\n hasher.reset();\n var hmac = hasher.finalize(this._oKey.clone().concat(innerHash));\n\n return hmac;\n }\n });\n }());\n\n\n (function () {\n // Shortcuts\n var C = CryptoJS;\n var C_lib = C.lib;\n var Base = C_lib.Base;\n var WordArray = C_lib.WordArray;\n var C_algo = C.algo;\n var SHA256 = C_algo.SHA256;\n var HMAC = C_algo.HMAC;\n\n /**\n * Password-Based Key Derivation Function 2 algorithm.\n */\n var PBKDF2 = C_algo.PBKDF2 = Base.extend({\n /**\n * Configuration options.\n *\n * @property {number} keySize The key size in words to generate. Default: 4 (128 bits)\n * @property {Hasher} hasher The hasher to use. Default: SHA256\n * @property {number} iterations The number of iterations to perform. Default: 250000\n */\n cfg: Base.extend({\n keySize: 128/32,\n hasher: SHA256,\n iterations: 250000\n }),\n\n /**\n * Initializes a newly created key derivation function.\n *\n * @param {Object} cfg (Optional) The configuration options to use for the derivation.\n *\n * @example\n *\n * var kdf = CryptoJS.algo.PBKDF2.create();\n * var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8 });\n * var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8, iterations: 1000 });\n */\n init: function (cfg) {\n this.cfg = this.cfg.extend(cfg);\n },\n\n /**\n * Computes the Password-Based Key Derivation Function 2.\n *\n * @param {WordArray|string} password The password.\n * @param {WordArray|string} salt A salt.\n *\n * @return {WordArray} The derived key.\n *\n * @example\n *\n * var key = kdf.compute(password, salt);\n */\n compute: function (password, salt) {\n // Shortcut\n var cfg = this.cfg;\n\n // Init HMAC\n var hmac = HMAC.create(cfg.hasher, password);\n\n // Initial values\n var derivedKey = WordArray.create();\n var blockIndex = WordArray.create([0x00000001]);\n\n // Shortcuts\n var derivedKeyWords = derivedKey.words;\n var blockIndexWords = blockIndex.words;\n var keySize = cfg.keySize;\n var iterations = cfg.iterations;\n\n // Generate key\n while (derivedKeyWords.length < keySize) {\n var block = hmac.update(salt).finalize(blockIndex);\n hmac.reset();\n\n // Shortcuts\n var blockWords = block.words;\n var blockWordsLength = blockWords.length;\n\n // Iterations\n var intermediate = block;\n for (var i = 1; i < iterations; i++) {\n intermediate = hmac.finalize(intermediate);\n hmac.reset();\n\n // Shortcut\n var intermediateWords = intermediate.words;\n\n // XOR intermediate with block\n for (var j = 0; j < blockWordsLength; j++) {\n blockWords[j] ^= intermediateWords[j];\n }\n }\n\n derivedKey.concat(block);\n blockIndexWords[0]++;\n }\n derivedKey.sigBytes = keySize * 4;\n\n return derivedKey;\n }\n });\n\n /**\n * Computes the Password-Based Key Derivation Function 2.\n *\n * @param {WordArray|string} password The password.\n * @param {WordArray|string} salt A salt.\n * @param {Object} cfg (Optional) The configuration options to use for this computation.\n *\n * @return {WordArray} The derived key.\n *\n * @static\n *\n * @example\n *\n * var key = CryptoJS.PBKDF2(password, salt);\n * var key = CryptoJS.PBKDF2(password, salt, { keySize: 8 });\n * var key = CryptoJS.PBKDF2(password, salt, { keySize: 8, iterations: 1000 });\n */\n C.PBKDF2 = function (password, salt, cfg) {\n return PBKDF2.create(cfg).compute(password, salt);\n };\n }());\n\n\n (function () {\n // Shortcuts\n var C = CryptoJS;\n var C_lib = C.lib;\n var Base = C_lib.Base;\n var WordArray = C_lib.WordArray;\n var C_algo = C.algo;\n var MD5 = C_algo.MD5;\n\n /**\n * This key derivation function is meant to conform with EVP_BytesToKey.\n * www.openssl.org/docs/crypto/EVP_BytesToKey.html\n */\n var EvpKDF = C_algo.EvpKDF = Base.extend({\n /**\n * Configuration options.\n *\n * @property {number} keySize The key size in words to generate. Default: 4 (128 bits)\n * @property {Hasher} hasher The hash algorithm to use. Default: MD5\n * @property {number} iterations The number of iterations to perform. Default: 1\n */\n cfg: Base.extend({\n keySize: 128/32,\n hasher: MD5,\n iterations: 1\n }),\n\n /**\n * Initializes a newly created key derivation function.\n *\n * @param {Object} cfg (Optional) The configuration options to use for the derivation.\n *\n * @example\n *\n * var kdf = CryptoJS.algo.EvpKDF.create();\n * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8 });\n * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8, iterations: 1000 });\n */\n init: function (cfg) {\n this.cfg = this.cfg.extend(cfg);\n },\n\n /**\n * Derives a key from a password.\n *\n * @param {WordArray|string} password The password.\n * @param {WordArray|string} salt A salt.\n *\n * @return {WordArray} The derived key.\n *\n * @example\n *\n * var key = kdf.compute(password, salt);\n */\n compute: function (password, salt) {\n var block;\n\n // Shortcut\n var cfg = this.cfg;\n\n // Init hasher\n var hasher = cfg.hasher.create();\n\n // Initial values\n var derivedKey = WordArray.create();\n\n // Shortcuts\n var derivedKeyWords = derivedKey.words;\n var keySize = cfg.keySize;\n var iterations = cfg.iterations;\n\n // Generate key\n while (derivedKeyWords.length < keySize) {\n if (block) {\n hasher.update(block);\n }\n block = hasher.update(password).finalize(salt);\n hasher.reset();\n\n // Iterations\n for (var i = 1; i < iterations; i++) {\n block = hasher.finalize(block);\n hasher.reset();\n }\n\n derivedKey.concat(block);\n }\n derivedKey.sigBytes = keySize * 4;\n\n return derivedKey;\n }\n });\n\n /**\n * Derives a key from a password.\n *\n * @param {WordArray|string} password The password.\n * @param {WordArray|string} salt A salt.\n * @param {Object} cfg (Optional) The configuration options to use for this computation.\n *\n * @return {WordArray} The derived key.\n *\n * @static\n *\n * @example\n *\n * var key = CryptoJS.EvpKDF(password, salt);\n * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8 });\n * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8, iterations: 1000 });\n */\n C.EvpKDF = function (password, salt, cfg) {\n return EvpKDF.create(cfg).compute(password, salt);\n };\n }());\n\n\n /**\n * Cipher core components.\n */\n CryptoJS.lib.Cipher || (function (undefined) {\n // Shortcuts\n var C = CryptoJS;\n var C_lib = C.lib;\n var Base = C_lib.Base;\n var WordArray = C_lib.WordArray;\n var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm;\n var C_enc = C.enc;\n var Utf8 = C_enc.Utf8;\n var Base64 = C_enc.Base64;\n var C_algo = C.algo;\n var EvpKDF = C_algo.EvpKDF;\n\n /**\n * Abstract base cipher template.\n *\n * @property {number} keySize This cipher's key size. Default: 4 (128 bits)\n * @property {number} ivSize This cipher's IV size. Default: 4 (128 bits)\n * @property {number} _ENC_XFORM_MODE A constant representing encryption mode.\n * @property {number} _DEC_XFORM_MODE A constant representing decryption mode.\n */\n var Cipher = C_lib.Cipher = BufferedBlockAlgorithm.extend({\n /**\n * Configuration options.\n *\n * @property {WordArray} iv The IV to use for this operation.\n */\n cfg: Base.extend(),\n\n /**\n * Creates this cipher in encryption mode.\n *\n * @param {WordArray} key The key.\n * @param {Object} cfg (Optional) The configuration options to use for this operation.\n *\n * @return {Cipher} A cipher instance.\n *\n * @static\n *\n * @example\n *\n * var cipher = CryptoJS.algo.AES.createEncryptor(keyWordArray, { iv: ivWordArray });\n */\n createEncryptor: function (key, cfg) {\n return this.create(this._ENC_XFORM_MODE, key, cfg);\n },\n\n /**\n * Creates this cipher in decryption mode.\n *\n * @param {WordArray} key The key.\n * @param {Object} cfg (Optional) The configuration options to use for this operation.\n *\n * @return {Cipher} A cipher instance.\n *\n * @static\n *\n * @example\n *\n * var cipher = CryptoJS.algo.AES.createDecryptor(keyWordArray, { iv: ivWordArray });\n */\n createDecryptor: function (key, cfg) {\n return this.create(this._DEC_XFORM_MODE, key, cfg);\n },\n\n /**\n * Initializes a newly created cipher.\n *\n * @param {number} xformMode Either the encryption or decryption transormation mode constant.\n * @param {WordArray} key The key.\n * @param {Object} cfg (Optional) The configuration options to use for this operation.\n *\n * @example\n *\n * var cipher = CryptoJS.algo.AES.create(CryptoJS.algo.AES._ENC_XFORM_MODE, keyWordArray, { iv: ivWordArray });\n */\n init: function (xformMode, key, cfg) {\n // Apply config defaults\n this.cfg = this.cfg.extend(cfg);\n\n // Store transform mode and key\n this._xformMode = xformMode;\n this._key = key;\n\n // Set initial values\n this.reset();\n },\n\n /**\n * Resets this cipher to its initial state.\n *\n * @example\n *\n * cipher.reset();\n */\n reset: function () {\n // Reset data buffer\n BufferedBlockAlgorithm.reset.call(this);\n\n // Perform concrete-cipher logic\n this._doReset();\n },\n\n /**\n * Adds data to be encrypted or decrypted.\n *\n * @param {WordArray|string} dataUpdate The data to encrypt or decrypt.\n *\n * @return {WordArray} The data after processing.\n *\n * @example\n *\n * var encrypted = cipher.process('data');\n * var encrypted = cipher.process(wordArray);\n */\n process: function (dataUpdate) {\n // Append\n this._append(dataUpdate);\n\n // Process available blocks\n return this._process();\n },\n\n /**\n * Finalizes the encryption or decryption process.\n * Note that the finalize operation is effectively a destructive, read-once operation.\n *\n * @param {WordArray|string} dataUpdate The final data to encrypt or decrypt.\n *\n * @return {WordArray} The data after final processing.\n *\n * @example\n *\n * var encrypted = cipher.finalize();\n * var encrypted = cipher.finalize('data');\n * var encrypted = cipher.finalize(wordArray);\n */\n finalize: function (dataUpdate) {\n // Final data update\n if (dataUpdate) {\n this._append(dataUpdate);\n }\n\n // Perform concrete-cipher logic\n var finalProcessedData = this._doFinalize();\n\n return finalProcessedData;\n },\n\n keySize: 128/32,\n\n ivSize: 128/32,\n\n _ENC_XFORM_MODE: 1,\n\n _DEC_XFORM_MODE: 2,\n\n /**\n * Creates shortcut functions to a cipher's object interface.\n *\n * @param {Cipher} cipher The cipher to create a helper for.\n *\n * @return {Object} An object with encrypt and decrypt shortcut functions.\n *\n * @static\n *\n * @example\n *\n * var AES = CryptoJS.lib.Cipher._createHelper(CryptoJS.algo.AES);\n */\n _createHelper: (function () {\n function selectCipherStrategy(key) {\n if (typeof key == 'string') {\n return PasswordBasedCipher;\n } else {\n return SerializableCipher;\n }\n }\n\n return function (cipher) {\n return {\n encrypt: function (message, key, cfg) {\n return selectCipherStrategy(key).encrypt(cipher, message, key, cfg);\n },\n\n decrypt: function (ciphertext, key, cfg) {\n return selectCipherStrategy(key).decrypt(cipher, ciphertext, key, cfg);\n }\n };\n };\n }())\n });\n\n /**\n * Abstract base stream cipher template.\n *\n * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 1 (32 bits)\n */\n var StreamCipher = C_lib.StreamCipher = Cipher.extend({\n _doFinalize: function () {\n // Process partial blocks\n var finalProcessedBlocks = this._process(!!'flush');\n\n return finalProcessedBlocks;\n },\n\n blockSize: 1\n });\n\n /**\n * Mode namespace.\n */\n var C_mode = C.mode = {};\n\n /**\n * Abstract base block cipher mode template.\n */\n var BlockCipherMode = C_lib.BlockCipherMode = Base.extend({\n /**\n * Creates this mode for encryption.\n *\n * @param {Cipher} cipher A block cipher instance.\n * @param {Array} iv The IV words.\n *\n * @static\n *\n * @example\n *\n * var mode = CryptoJS.mode.CBC.createEncryptor(cipher, iv.words);\n */\n createEncryptor: function (cipher, iv) {\n return this.Encryptor.create(cipher, iv);\n },\n\n /**\n * Creates this mode for decryption.\n *\n * @param {Cipher} cipher A block cipher instance.\n * @param {Array} iv The IV words.\n *\n * @static\n *\n * @example\n *\n * var mode = CryptoJS.mode.CBC.createDecryptor(cipher, iv.words);\n */\n createDecryptor: function (cipher, iv) {\n return this.Decryptor.create(cipher, iv);\n },\n\n /**\n * Initializes a newly created mode.\n *\n * @param {Cipher} cipher A block cipher instance.\n * @param {Array} iv The IV words.\n *\n * @example\n *\n * var mode = CryptoJS.mode.CBC.Encryptor.create(cipher, iv.words);\n */\n init: function (cipher, iv) {\n this._cipher = cipher;\n this._iv = iv;\n }\n });\n\n /**\n * Cipher Block Chaining mode.\n */\n var CBC = C_mode.CBC = (function () {\n /**\n * Abstract base CBC mode.\n */\n var CBC = BlockCipherMode.extend();\n\n /**\n * CBC encryptor.\n */\n CBC.Encryptor = CBC.extend({\n /**\n * Processes the data block at offset.\n *\n * @param {Array} words The data words to operate on.\n * @param {number} offset The offset where the block starts.\n *\n * @example\n *\n * mode.processBlock(data.words, offset);\n */\n processBlock: function (words, offset) {\n // Shortcuts\n var cipher = this._cipher;\n var blockSize = cipher.blockSize;\n\n // XOR and encrypt\n xorBlock.call(this, words, offset, blockSize);\n cipher.encryptBlock(words, offset);\n\n // Remember this block to use with next block\n this._prevBlock = words.slice(offset, offset + blockSize);\n }\n });\n\n /**\n * CBC decryptor.\n */\n CBC.Decryptor = CBC.extend({\n /**\n * Processes the data block at offset.\n *\n * @param {Array} words The data words to operate on.\n * @param {number} offset The offset where the block starts.\n *\n * @example\n *\n * mode.processBlock(data.words, offset);\n */\n processBlock: function (words, offset) {\n // Shortcuts\n var cipher = this._cipher;\n var blockSize = cipher.blockSize;\n\n // Remember this block to use with next block\n var thisBlock = words.slice(offset, offset + blockSize);\n\n // Decrypt and XOR\n cipher.decryptBlock(words, offset);\n xorBlock.call(this, words, offset, blockSize);\n\n // This block becomes the previous block\n this._prevBlock = thisBlock;\n }\n });\n\n function xorBlock(words, offset, blockSize) {\n var block;\n\n // Shortcut\n var iv = this._iv;\n\n // Choose mixing block\n if (iv) {\n block = iv;\n\n // Remove IV for subsequent blocks\n this._iv = undefined;\n } else {\n block = this._prevBlock;\n }\n\n // XOR blocks\n for (var i = 0; i < blockSize; i++) {\n words[offset + i] ^= block[i];\n }\n }\n\n return CBC;\n }());\n\n /**\n * Padding namespace.\n */\n var C_pad = C.pad = {};\n\n /**\n * PKCS #5/7 padding strategy.\n */\n var Pkcs7 = C_pad.Pkcs7 = {\n /**\n * Pads data using the algorithm defined in PKCS #5/7.\n *\n * @param {WordArray} data The data to pad.\n * @param {number} blockSize The multiple that the data should be padded to.\n *\n * @static\n *\n * @example\n *\n * CryptoJS.pad.Pkcs7.pad(wordArray, 4);\n */\n pad: function (data, blockSize) {\n // Shortcut\n var blockSizeBytes = blockSize * 4;\n\n // Count padding bytes\n var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes;\n\n // Create padding word\n var paddingWord = (nPaddingBytes << 24) | (nPaddingBytes << 16) | (nPaddingBytes << 8) | nPaddingBytes;\n\n // Create padding\n var paddingWords = [];\n for (var i = 0; i < nPaddingBytes; i += 4) {\n paddingWords.push(paddingWord);\n }\n var padding = WordArray.create(paddingWords, nPaddingBytes);\n\n // Add padding\n data.concat(padding);\n },\n\n /**\n * Unpads data that had been padded using the algorithm defined in PKCS #5/7.\n *\n * @param {WordArray} data The data to unpad.\n *\n * @static\n *\n * @example\n *\n * CryptoJS.pad.Pkcs7.unpad(wordArray);\n */\n unpad: function (data) {\n // Get number of padding bytes from last byte\n var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;\n\n // Remove padding\n data.sigBytes -= nPaddingBytes;\n }\n };\n\n /**\n * Abstract base block cipher template.\n *\n * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 4 (128 bits)\n */\n var BlockCipher = C_lib.BlockCipher = Cipher.extend({\n /**\n * Configuration options.\n *\n * @property {Mode} mode The block mode to use. Default: CBC\n * @property {Padding} padding The padding strategy to use. Default: Pkcs7\n */\n cfg: Cipher.cfg.extend({\n mode: CBC,\n padding: Pkcs7\n }),\n\n reset: function () {\n var modeCreator;\n\n // Reset cipher\n Cipher.reset.call(this);\n\n // Shortcuts\n var cfg = this.cfg;\n var iv = cfg.iv;\n var mode = cfg.mode;\n\n // Reset block mode\n if (this._xformMode == this._ENC_XFORM_MODE) {\n modeCreator = mode.createEncryptor;\n } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {\n modeCreator = mode.createDecryptor;\n // Keep at least one block in the buffer for unpadding\n this._minBufferSize = 1;\n }\n\n if (this._mode && this._mode.__creator == modeCreator) {\n this._mode.init(this, iv && iv.words);\n } else {\n this._mode = modeCreator.call(mode, this, iv && iv.words);\n this._mode.__creator = modeCreator;\n }\n },\n\n _doProcessBlock: function (words, offset) {\n this._mode.processBlock(words, offset);\n },\n\n _doFinalize: function () {\n var finalProcessedBlocks;\n\n // Shortcut\n var padding = this.cfg.padding;\n\n // Finalize\n if (this._xformMode == this._ENC_XFORM_MODE) {\n // Pad data\n padding.pad(this._data, this.blockSize);\n\n // Process final blocks\n finalProcessedBlocks = this._process(!!'flush');\n } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {\n // Process final blocks\n finalProcessedBlocks = this._process(!!'flush');\n\n // Unpad data\n padding.unpad(finalProcessedBlocks);\n }\n\n return finalProcessedBlocks;\n },\n\n blockSize: 128/32\n });\n\n /**\n * A collection of cipher parameters.\n *\n * @property {WordArray} ciphertext The raw ciphertext.\n * @property {WordArray} key The key to this ciphertext.\n * @property {WordArray} iv The IV used in the ciphering operation.\n * @property {WordArray} salt The salt used with a key derivation function.\n * @property {Cipher} algorithm The cipher algorithm.\n * @property {Mode} mode The block mode used in the ciphering operation.\n * @property {Padding} padding The padding scheme used in the ciphering operation.\n * @property {number} blockSize The block size of the cipher.\n * @property {Format} formatter The default formatting strategy to convert this cipher params object to a string.\n */\n var CipherParams = C_lib.CipherParams = Base.extend({\n /**\n * Initializes a newly created cipher params object.\n *\n * @param {Object} cipherParams An object with any of the possible cipher parameters.\n *\n * @example\n *\n * var cipherParams = CryptoJS.lib.CipherParams.create({\n * ciphertext: ciphertextWordArray,\n * key: keyWordArray,\n * iv: ivWordArray,\n * salt: saltWordArray,\n * algorithm: CryptoJS.algo.AES,\n * mode: CryptoJS.mode.CBC,\n * padding: CryptoJS.pad.PKCS7,\n * blockSize: 4,\n * formatter: CryptoJS.format.OpenSSL\n * });\n */\n init: function (cipherParams) {\n this.mixIn(cipherParams);\n },\n\n /**\n * Converts this cipher params object to a string.\n *\n * @param {Format} formatter (Optional) The formatting strategy to use.\n *\n * @return {string} The stringified cipher params.\n *\n * @throws Error If neither the formatter nor the default formatter is set.\n *\n * @example\n *\n * var string = cipherParams + '';\n * var string = cipherParams.toString();\n * var string = cipherParams.toString(CryptoJS.format.OpenSSL);\n */\n toString: function (formatter) {\n return (formatter || this.formatter).stringify(this);\n }\n });\n\n /**\n * Format namespace.\n */\n var C_format = C.format = {};\n\n /**\n * OpenSSL formatting strategy.\n */\n var OpenSSLFormatter = C_format.OpenSSL = {\n /**\n * Converts a cipher params object to an OpenSSL-compatible string.\n *\n * @param {CipherParams} cipherParams The cipher params object.\n *\n * @return {string} The OpenSSL-compatible string.\n *\n * @static\n *\n * @example\n *\n * var openSSLString = CryptoJS.format.OpenSSL.stringify(cipherParams);\n */\n stringify: function (cipherParams) {\n var wordArray;\n\n // Shortcuts\n var ciphertext = cipherParams.ciphertext;\n var salt = cipherParams.salt;\n\n // Format\n if (salt) {\n wordArray = WordArray.create([0x53616c74, 0x65645f5f]).concat(salt).concat(ciphertext);\n } else {\n wordArray = ciphertext;\n }\n\n return wordArray.toString(Base64);\n },\n\n /**\n * Converts an OpenSSL-compatible string to a cipher params object.\n *\n * @param {string} openSSLStr The OpenSSL-compatible string.\n *\n * @return {CipherParams} The cipher params object.\n *\n * @static\n *\n * @example\n *\n * var cipherParams = CryptoJS.format.OpenSSL.parse(openSSLString);\n */\n parse: function (openSSLStr) {\n var salt;\n\n // Parse base64\n var ciphertext = Base64.parse(openSSLStr);\n\n // Shortcut\n var ciphertextWords = ciphertext.words;\n\n // Test for salt\n if (ciphertextWords[0] == 0x53616c74 && ciphertextWords[1] == 0x65645f5f) {\n // Extract salt\n salt = WordArray.create(ciphertextWords.slice(2, 4));\n\n // Remove salt from ciphertext\n ciphertextWords.splice(0, 4);\n ciphertext.sigBytes -= 16;\n }\n\n return CipherParams.create({ ciphertext: ciphertext, salt: salt });\n }\n };\n\n /**\n * A cipher wrapper that returns ciphertext as a serializable cipher params object.\n */\n var SerializableCipher = C_lib.SerializableCipher = Base.extend({\n /**\n * Configuration options.\n *\n * @property {Formatter} format The formatting strategy to convert cipher param objects to and from a string. Default: OpenSSL\n */\n cfg: Base.extend({\n format: OpenSSLFormatter\n }),\n\n /**\n * Encrypts a message.\n *\n * @param {Cipher} cipher The cipher algorithm to use.\n * @param {WordArray|string} message The message to encrypt.\n * @param {WordArray} key The key.\n * @param {Object} cfg (Optional) The configuration options to use for this operation.\n *\n * @return {CipherParams} A cipher params object.\n *\n * @static\n *\n * @example\n *\n * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key);\n * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv });\n * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n */\n encrypt: function (cipher, message, key, cfg) {\n // Apply config defaults\n cfg = this.cfg.extend(cfg);\n\n // Encrypt\n var encryptor = cipher.createEncryptor(key, cfg);\n var ciphertext = encryptor.finalize(message);\n\n // Shortcut\n var cipherCfg = encryptor.cfg;\n\n // Create and return serializable cipher params\n return CipherParams.create({\n ciphertext: ciphertext,\n key: key,\n iv: cipherCfg.iv,\n algorithm: cipher,\n mode: cipherCfg.mode,\n padding: cipherCfg.padding,\n blockSize: cipher.blockSize,\n formatter: cfg.format\n });\n },\n\n /**\n * Decrypts serialized ciphertext.\n *\n * @param {Cipher} cipher The cipher algorithm to use.\n * @param {CipherParams|string} ciphertext The ciphertext to decrypt.\n * @param {WordArray} key The key.\n * @param {Object} cfg (Optional) The configuration options to use for this operation.\n *\n * @return {WordArray} The plaintext.\n *\n * @static\n *\n * @example\n *\n * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n */\n decrypt: function (cipher, ciphertext, key, cfg) {\n // Apply config defaults\n cfg = this.cfg.extend(cfg);\n\n // Convert string to CipherParams\n ciphertext = this._parse(ciphertext, cfg.format);\n\n // Decrypt\n var plaintext = cipher.createDecryptor(key, cfg).finalize(ciphertext.ciphertext);\n\n return plaintext;\n },\n\n /**\n * Converts serialized ciphertext to CipherParams,\n * else assumed CipherParams already and returns ciphertext unchanged.\n *\n * @param {CipherParams|string} ciphertext The ciphertext.\n * @param {Formatter} format The formatting strategy to use to parse serialized ciphertext.\n *\n * @return {CipherParams} The unserialized ciphertext.\n *\n * @static\n *\n * @example\n *\n * var ciphertextParams = CryptoJS.lib.SerializableCipher._parse(ciphertextStringOrParams, format);\n */\n _parse: function (ciphertext, format) {\n if (typeof ciphertext == 'string') {\n return format.parse(ciphertext, this);\n } else {\n return ciphertext;\n }\n }\n });\n\n /**\n * Key derivation function namespace.\n */\n var C_kdf = C.kdf = {};\n\n /**\n * OpenSSL key derivation function.\n */\n var OpenSSLKdf = C_kdf.OpenSSL = {\n /**\n * Derives a key and IV from a password.\n *\n * @param {string} password The password to derive from.\n * @param {number} keySize The size in words of the key to generate.\n * @param {number} ivSize The size in words of the IV to generate.\n * @param {WordArray|string} salt (Optional) A 64-bit salt to use. If omitted, a salt will be generated randomly.\n *\n * @return {CipherParams} A cipher params object with the key, IV, and salt.\n *\n * @static\n *\n * @example\n *\n * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32);\n * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32, 'saltsalt');\n */\n execute: function (password, keySize, ivSize, salt, hasher) {\n // Generate random salt\n if (!salt) {\n salt = WordArray.random(64/8);\n }\n\n // Derive key and IV\n if (!hasher) {\n var key = EvpKDF.create({ keySize: keySize + ivSize }).compute(password, salt);\n } else {\n var key = EvpKDF.create({ keySize: keySize + ivSize, hasher: hasher }).compute(password, salt);\n }\n\n\n // Separate key and IV\n var iv = WordArray.create(key.words.slice(keySize), ivSize * 4);\n key.sigBytes = keySize * 4;\n\n // Return params\n return CipherParams.create({ key: key, iv: iv, salt: salt });\n }\n };\n\n /**\n * A serializable cipher wrapper that derives the key from a password,\n * and returns ciphertext as a serializable cipher params object.\n */\n var PasswordBasedCipher = C_lib.PasswordBasedCipher = SerializableCipher.extend({\n /**\n * Configuration options.\n *\n * @property {KDF} kdf The key derivation function to use to generate a key and IV from a password. Default: OpenSSL\n */\n cfg: SerializableCipher.cfg.extend({\n kdf: OpenSSLKdf\n }),\n\n /**\n * Encrypts a message using a password.\n *\n * @param {Cipher} cipher The cipher algorithm to use.\n * @param {WordArray|string} message The message to encrypt.\n * @param {string} password The password.\n * @param {Object} cfg (Optional) The configuration options to use for this operation.\n *\n * @return {CipherParams} A cipher params object.\n *\n * @static\n *\n * @example\n *\n * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password');\n * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password', { format: CryptoJS.format.OpenSSL });\n */\n encrypt: function (cipher, message, password, cfg) {\n // Apply config defaults\n cfg = this.cfg.extend(cfg);\n\n // Derive key and other params\n var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize, cfg.salt, cfg.hasher);\n\n // Add IV to config\n cfg.iv = derivedParams.iv;\n\n // Encrypt\n var ciphertext = SerializableCipher.encrypt.call(this, cipher, message, derivedParams.key, cfg);\n\n // Mix in derived params\n ciphertext.mixIn(derivedParams);\n\n return ciphertext;\n },\n\n /**\n * Decrypts serialized ciphertext using a password.\n *\n * @param {Cipher} cipher The cipher algorithm to use.\n * @param {CipherParams|string} ciphertext The ciphertext to decrypt.\n * @param {string} password The password.\n * @param {Object} cfg (Optional) The configuration options to use for this operation.\n *\n * @return {WordArray} The plaintext.\n *\n * @static\n *\n * @example\n *\n * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, 'password', { format: CryptoJS.format.OpenSSL });\n * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, 'password', { format: CryptoJS.format.OpenSSL });\n */\n decrypt: function (cipher, ciphertext, password, cfg) {\n // Apply config defaults\n cfg = this.cfg.extend(cfg);\n\n // Convert string to CipherParams\n ciphertext = this._parse(ciphertext, cfg.format);\n\n // Derive key and other params\n var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize, ciphertext.salt, cfg.hasher);\n\n // Add IV to config\n cfg.iv = derivedParams.iv;\n\n // Decrypt\n var plaintext = SerializableCipher.decrypt.call(this, cipher, ciphertext, derivedParams.key, cfg);\n\n return plaintext;\n }\n });\n }());\n\n\n /**\n * Cipher Feedback block mode.\n */\n CryptoJS.mode.CFB = (function () {\n var CFB = CryptoJS.lib.BlockCipherMode.extend();\n\n CFB.Encryptor = CFB.extend({\n processBlock: function (words, offset) {\n // Shortcuts\n var cipher = this._cipher;\n var blockSize = cipher.blockSize;\n\n generateKeystreamAndEncrypt.call(this, words, offset, blockSize, cipher);\n\n // Remember this block to use with next block\n this._prevBlock = words.slice(offset, offset + blockSize);\n }\n });\n\n CFB.Decryptor = CFB.extend({\n processBlock: function (words, offset) {\n // Shortcuts\n var cipher = this._cipher;\n var blockSize = cipher.blockSize;\n\n // Remember this block to use with next block\n var thisBlock = words.slice(offset, offset + blockSize);\n\n generateKeystreamAndEncrypt.call(this, words, offset, blockSize, cipher);\n\n // This block becomes the previous block\n this._prevBlock = thisBlock;\n }\n });\n\n function generateKeystreamAndEncrypt(words, offset, blockSize, cipher) {\n var keystream;\n\n // Shortcut\n var iv = this._iv;\n\n // Generate keystream\n if (iv) {\n keystream = iv.slice(0);\n\n // Remove IV for subsequent blocks\n this._iv = undefined;\n } else {\n keystream = this._prevBlock;\n }\n cipher.encryptBlock(keystream, 0);\n\n // Encrypt\n for (var i = 0; i < blockSize; i++) {\n words[offset + i] ^= keystream[i];\n }\n }\n\n return CFB;\n }());\n\n\n /**\n * Counter block mode.\n */\n CryptoJS.mode.CTR = (function () {\n var CTR = CryptoJS.lib.BlockCipherMode.extend();\n\n var Encryptor = CTR.Encryptor = CTR.extend({\n processBlock: function (words, offset) {\n // Shortcuts\n var cipher = this._cipher\n var blockSize = cipher.blockSize;\n var iv = this._iv;\n var counter = this._counter;\n\n // Generate keystream\n if (iv) {\n counter = this._counter = iv.slice(0);\n\n // Remove IV for subsequent blocks\n this._iv = undefined;\n }\n var keystream = counter.slice(0);\n cipher.encryptBlock(keystream, 0);\n\n // Increment counter\n counter[blockSize - 1] = (counter[blockSize - 1] + 1) | 0\n\n // Encrypt\n for (var i = 0; i < blockSize; i++) {\n words[offset + i] ^= keystream[i];\n }\n }\n });\n\n CTR.Decryptor = Encryptor;\n\n return CTR;\n }());\n\n\n /** @preserve\n * Counter block mode compatible with Dr Brian Gladman fileenc.c\n * derived from CryptoJS.mode.CTR\n * Jan Hruby jhruby.web@gmail.com\n */\n CryptoJS.mode.CTRGladman = (function () {\n var CTRGladman = CryptoJS.lib.BlockCipherMode.extend();\n\n function incWord(word)\n {\n if (((word >> 24) & 0xff) === 0xff) { //overflow\n var b1 = (word >> 16)&0xff;\n var b2 = (word >> 8)&0xff;\n var b3 = word & 0xff;\n\n if (b1 === 0xff) // overflow b1\n {\n b1 = 0;\n if (b2 === 0xff)\n {\n b2 = 0;\n if (b3 === 0xff)\n {\n b3 = 0;\n }\n else\n {\n ++b3;\n }\n }\n else\n {\n ++b2;\n }\n }\n else\n {\n ++b1;\n }\n\n word = 0;\n word += (b1 << 16);\n word += (b2 << 8);\n word += b3;\n }\n else\n {\n word += (0x01 << 24);\n }\n return word;\n }\n\n function incCounter(counter)\n {\n if ((counter[0] = incWord(counter[0])) === 0)\n {\n // encr_data in fileenc.c from Dr Brian Gladman's counts only with DWORD j < 8\n counter[1] = incWord(counter[1]);\n }\n return counter;\n }\n\n var Encryptor = CTRGladman.Encryptor = CTRGladman.extend({\n processBlock: function (words, offset) {\n // Shortcuts\n var cipher = this._cipher\n var blockSize = cipher.blockSize;\n var iv = this._iv;\n var counter = this._counter;\n\n // Generate keystream\n if (iv) {\n counter = this._counter = iv.slice(0);\n\n // Remove IV for subsequent blocks\n this._iv = undefined;\n }\n\n incCounter(counter);\n\n var keystream = counter.slice(0);\n cipher.encryptBlock(keystream, 0);\n\n // Encrypt\n for (var i = 0; i < blockSize; i++) {\n words[offset + i] ^= keystream[i];\n }\n }\n });\n\n CTRGladman.Decryptor = Encryptor;\n\n return CTRGladman;\n }());\n\n\n\n\n /**\n * Output Feedback block mode.\n */\n CryptoJS.mode.OFB = (function () {\n var OFB = CryptoJS.lib.BlockCipherMode.extend();\n\n var Encryptor = OFB.Encryptor = OFB.extend({\n processBlock: function (words, offset) {\n // Shortcuts\n var cipher = this._cipher\n var blockSize = cipher.blockSize;\n var iv = this._iv;\n var keystream = this._keystream;\n\n // Generate keystream\n if (iv) {\n keystream = this._keystream = iv.slice(0);\n\n // Remove IV for subsequent blocks\n this._iv = undefined;\n }\n cipher.encryptBlock(keystream, 0);\n\n // Encrypt\n for (var i = 0; i < blockSize; i++) {\n words[offset + i] ^= keystream[i];\n }\n }\n });\n\n OFB.Decryptor = Encryptor;\n\n return OFB;\n }());\n\n\n /**\n * Electronic Codebook block mode.\n */\n CryptoJS.mode.ECB = (function () {\n var ECB = CryptoJS.lib.BlockCipherMode.extend();\n\n ECB.Encryptor = ECB.extend({\n processBlock: function (words, offset) {\n this._cipher.encryptBlock(words, offset);\n }\n });\n\n ECB.Decryptor = ECB.extend({\n processBlock: function (words, offset) {\n this._cipher.decryptBlock(words, offset);\n }\n });\n\n return ECB;\n }());\n\n\n /**\n * ANSI X.923 padding strategy.\n */\n CryptoJS.pad.AnsiX923 = {\n pad: function (data, blockSize) {\n // Shortcuts\n var dataSigBytes = data.sigBytes;\n var blockSizeBytes = blockSize * 4;\n\n // Count padding bytes\n var nPaddingBytes = blockSizeBytes - dataSigBytes % blockSizeBytes;\n\n // Compute last byte position\n var lastBytePos = dataSigBytes + nPaddingBytes - 1;\n\n // Pad\n data.clamp();\n data.words[lastBytePos >>> 2] |= nPaddingBytes << (24 - (lastBytePos % 4) * 8);\n data.sigBytes += nPaddingBytes;\n },\n\n unpad: function (data) {\n // Get number of padding bytes from last byte\n var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;\n\n // Remove padding\n data.sigBytes -= nPaddingBytes;\n }\n };\n\n\n /**\n * ISO 10126 padding strategy.\n */\n CryptoJS.pad.Iso10126 = {\n pad: function (data, blockSize) {\n // Shortcut\n var blockSizeBytes = blockSize * 4;\n\n // Count padding bytes\n var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes;\n\n // Pad\n data.concat(CryptoJS.lib.WordArray.random(nPaddingBytes - 1)).\n concat(CryptoJS.lib.WordArray.create([nPaddingBytes << 24], 1));\n },\n\n unpad: function (data) {\n // Get number of padding bytes from last byte\n var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;\n\n // Remove padding\n data.sigBytes -= nPaddingBytes;\n }\n };\n\n\n /**\n * ISO/IEC 9797-1 Padding Method 2.\n */\n CryptoJS.pad.Iso97971 = {\n pad: function (data, blockSize) {\n // Add 0x80 byte\n data.concat(CryptoJS.lib.WordArray.create([0x80000000], 1));\n\n // Zero pad the rest\n CryptoJS.pad.ZeroPadding.pad(data, blockSize);\n },\n\n unpad: function (data) {\n // Remove zero padding\n CryptoJS.pad.ZeroPadding.unpad(data);\n\n // Remove one more byte -- the 0x80 byte\n data.sigBytes--;\n }\n };\n\n\n /**\n * Zero padding strategy.\n */\n CryptoJS.pad.ZeroPadding = {\n pad: function (data, blockSize) {\n // Shortcut\n var blockSizeBytes = blockSize * 4;\n\n // Pad\n data.clamp();\n data.sigBytes += blockSizeBytes - ((data.sigBytes % blockSizeBytes) || blockSizeBytes);\n },\n\n unpad: function (data) {\n // Shortcut\n var dataWords = data.words;\n\n // Unpad\n var i = data.sigBytes - 1;\n for (var i = data.sigBytes - 1; i >= 0; i--) {\n if (((dataWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff)) {\n data.sigBytes = i + 1;\n break;\n }\n }\n }\n };\n\n\n /**\n * A noop padding strategy.\n */\n CryptoJS.pad.NoPadding = {\n pad: function () {\n },\n\n unpad: function () {\n }\n };\n\n\n (function (undefined) {\n // Shortcuts\n var C = CryptoJS;\n var C_lib = C.lib;\n var CipherParams = C_lib.CipherParams;\n var C_enc = C.enc;\n var Hex = C_enc.Hex;\n var C_format = C.format;\n\n var HexFormatter = C_format.Hex = {\n /**\n * Converts the ciphertext of a cipher params object to a hexadecimally encoded string.\n *\n * @param {CipherParams} cipherParams The cipher params object.\n *\n * @return {string} The hexadecimally encoded string.\n *\n * @static\n *\n * @example\n *\n * var hexString = CryptoJS.format.Hex.stringify(cipherParams);\n */\n stringify: function (cipherParams) {\n return cipherParams.ciphertext.toString(Hex);\n },\n\n /**\n * Converts a hexadecimally encoded ciphertext string to a cipher params object.\n *\n * @param {string} input The hexadecimally encoded string.\n *\n * @return {CipherParams} The cipher params object.\n *\n * @static\n *\n * @example\n *\n * var cipherParams = CryptoJS.format.Hex.parse(hexString);\n */\n parse: function (input) {\n var ciphertext = Hex.parse(input);\n return CipherParams.create({ ciphertext: ciphertext });\n }\n };\n }());\n\n\n (function () {\n // Shortcuts\n var C = CryptoJS;\n var C_lib = C.lib;\n var BlockCipher = C_lib.BlockCipher;\n var C_algo = C.algo;\n\n // Lookup tables\n var SBOX = [];\n var INV_SBOX = [];\n var SUB_MIX_0 = [];\n var SUB_MIX_1 = [];\n var SUB_MIX_2 = [];\n var SUB_MIX_3 = [];\n var INV_SUB_MIX_0 = [];\n var INV_SUB_MIX_1 = [];\n var INV_SUB_MIX_2 = [];\n var INV_SUB_MIX_3 = [];\n\n // Compute lookup tables\n (function () {\n // Compute double table\n var d = [];\n for (var i = 0; i < 256; i++) {\n if (i < 128) {\n d[i] = i << 1;\n } else {\n d[i] = (i << 1) ^ 0x11b;\n }\n }\n\n // Walk GF(2^8)\n var x = 0;\n var xi = 0;\n for (var i = 0; i < 256; i++) {\n // Compute sbox\n var sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4);\n sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63;\n SBOX[x] = sx;\n INV_SBOX[sx] = x;\n\n // Compute multiplication\n var x2 = d[x];\n var x4 = d[x2];\n var x8 = d[x4];\n\n // Compute sub bytes, mix columns tables\n var t = (d[sx] * 0x101) ^ (sx * 0x1010100);\n SUB_MIX_0[x] = (t << 24) | (t >>> 8);\n SUB_MIX_1[x] = (t << 16) | (t >>> 16);\n SUB_MIX_2[x] = (t << 8) | (t >>> 24);\n SUB_MIX_3[x] = t;\n\n // Compute inv sub bytes, inv mix columns tables\n var t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100);\n INV_SUB_MIX_0[sx] = (t << 24) | (t >>> 8);\n INV_SUB_MIX_1[sx] = (t << 16) | (t >>> 16);\n INV_SUB_MIX_2[sx] = (t << 8) | (t >>> 24);\n INV_SUB_MIX_3[sx] = t;\n\n // Compute next counter\n if (!x) {\n x = xi = 1;\n } else {\n x = x2 ^ d[d[d[x8 ^ x2]]];\n xi ^= d[d[xi]];\n }\n }\n }());\n\n // Precomputed Rcon lookup\n var RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36];\n\n /**\n * AES block cipher algorithm.\n */\n var AES = C_algo.AES = BlockCipher.extend({\n _doReset: function () {\n var t;\n\n // Skip reset of nRounds has been set before and key did not change\n if (this._nRounds && this._keyPriorReset === this._key) {\n return;\n }\n\n // Shortcuts\n var key = this._keyPriorReset = this._key;\n var keyWords = key.words;\n var keySize = key.sigBytes / 4;\n\n // Compute number of rounds\n var nRounds = this._nRounds = keySize + 6;\n\n // Compute number of key schedule rows\n var ksRows = (nRounds + 1) * 4;\n\n // Compute key schedule\n var keySchedule = this._keySchedule = [];\n for (var ksRow = 0; ksRow < ksRows; ksRow++) {\n if (ksRow < keySize) {\n keySchedule[ksRow] = keyWords[ksRow];\n } else {\n t = keySchedule[ksRow - 1];\n\n if (!(ksRow % keySize)) {\n // Rot word\n t = (t << 8) | (t >>> 24);\n\n // Sub word\n t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff];\n\n // Mix Rcon\n t ^= RCON[(ksRow / keySize) | 0] << 24;\n } else if (keySize > 6 && ksRow % keySize == 4) {\n // Sub word\n t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff];\n }\n\n keySchedule[ksRow] = keySchedule[ksRow - keySize] ^ t;\n }\n }\n\n // Compute inv key schedule\n var invKeySchedule = this._invKeySchedule = [];\n for (var invKsRow = 0; invKsRow < ksRows; invKsRow++) {\n var ksRow = ksRows - invKsRow;\n\n if (invKsRow % 4) {\n var t = keySchedule[ksRow];\n } else {\n var t = keySchedule[ksRow - 4];\n }\n\n if (invKsRow < 4 || ksRow <= 4) {\n invKeySchedule[invKsRow] = t;\n } else {\n invKeySchedule[invKsRow] = INV_SUB_MIX_0[SBOX[t >>> 24]] ^ INV_SUB_MIX_1[SBOX[(t >>> 16) & 0xff]] ^\n INV_SUB_MIX_2[SBOX[(t >>> 8) & 0xff]] ^ INV_SUB_MIX_3[SBOX[t & 0xff]];\n }\n }\n },\n\n encryptBlock: function (M, offset) {\n this._doCryptBlock(M, offset, this._keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX);\n },\n\n decryptBlock: function (M, offset) {\n // Swap 2nd and 4th rows\n var t = M[offset + 1];\n M[offset + 1] = M[offset + 3];\n M[offset + 3] = t;\n\n this._doCryptBlock(M, offset, this._invKeySchedule, INV_SUB_MIX_0, INV_SUB_MIX_1, INV_SUB_MIX_2, INV_SUB_MIX_3, INV_SBOX);\n\n // Inv swap 2nd and 4th rows\n var t = M[offset + 1];\n M[offset + 1] = M[offset + 3];\n M[offset + 3] = t;\n },\n\n _doCryptBlock: function (M, offset, keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX) {\n // Shortcut\n var nRounds = this._nRounds;\n\n // Get input, add round key\n var s0 = M[offset] ^ keySchedule[0];\n var s1 = M[offset + 1] ^ keySchedule[1];\n var s2 = M[offset + 2] ^ keySchedule[2];\n var s3 = M[offset + 3] ^ keySchedule[3];\n\n // Key schedule row counter\n var ksRow = 4;\n\n // Rounds\n for (var round = 1; round < nRounds; round++) {\n // Shift rows, sub bytes, mix columns, add round key\n var t0 = SUB_MIX_0[s0 >>> 24] ^ SUB_MIX_1[(s1 >>> 16) & 0xff] ^ SUB_MIX_2[(s2 >>> 8) & 0xff] ^ SUB_MIX_3[s3 & 0xff] ^ keySchedule[ksRow++];\n var t1 = SUB_MIX_0[s1 >>> 24] ^ SUB_MIX_1[(s2 >>> 16) & 0xff] ^ SUB_MIX_2[(s3 >>> 8) & 0xff] ^ SUB_MIX_3[s0 & 0xff] ^ keySchedule[ksRow++];\n var t2 = SUB_MIX_0[s2 >>> 24] ^ SUB_MIX_1[(s3 >>> 16) & 0xff] ^ SUB_MIX_2[(s0 >>> 8) & 0xff] ^ SUB_MIX_3[s1 & 0xff] ^ keySchedule[ksRow++];\n var t3 = SUB_MIX_0[s3 >>> 24] ^ SUB_MIX_1[(s0 >>> 16) & 0xff] ^ SUB_MIX_2[(s1 >>> 8) & 0xff] ^ SUB_MIX_3[s2 & 0xff] ^ keySchedule[ksRow++];\n\n // Update state\n s0 = t0;\n s1 = t1;\n s2 = t2;\n s3 = t3;\n }\n\n // Shift rows, sub bytes, add round key\n var t0 = ((SBOX[s0 >>> 24] << 24) | (SBOX[(s1 >>> 16) & 0xff] << 16) | (SBOX[(s2 >>> 8) & 0xff] << 8) | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++];\n var t1 = ((SBOX[s1 >>> 24] << 24) | (SBOX[(s2 >>> 16) & 0xff] << 16) | (SBOX[(s3 >>> 8) & 0xff] << 8) | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++];\n var t2 = ((SBOX[s2 >>> 24] << 24) | (SBOX[(s3 >>> 16) & 0xff] << 16) | (SBOX[(s0 >>> 8) & 0xff] << 8) | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++];\n var t3 = ((SBOX[s3 >>> 24] << 24) | (SBOX[(s0 >>> 16) & 0xff] << 16) | (SBOX[(s1 >>> 8) & 0xff] << 8) | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++];\n\n // Set output\n M[offset] = t0;\n M[offset + 1] = t1;\n M[offset + 2] = t2;\n M[offset + 3] = t3;\n },\n\n keySize: 256/32\n });\n\n /**\n * Shortcut functions to the cipher's object interface.\n *\n * @example\n *\n * var ciphertext = CryptoJS.AES.encrypt(message, key, cfg);\n * var plaintext = CryptoJS.AES.decrypt(ciphertext, key, cfg);\n */\n C.AES = BlockCipher._createHelper(AES);\n }());\n\n\n (function () {\n // Shortcuts\n var C = CryptoJS;\n var C_lib = C.lib;\n var WordArray = C_lib.WordArray;\n var BlockCipher = C_lib.BlockCipher;\n var C_algo = C.algo;\n\n // Permuted Choice 1 constants\n var PC1 = [\n 57, 49, 41, 33, 25, 17, 9, 1,\n 58, 50, 42, 34, 26, 18, 10, 2,\n 59, 51, 43, 35, 27, 19, 11, 3,\n 60, 52, 44, 36, 63, 55, 47, 39,\n 31, 23, 15, 7, 62, 54, 46, 38,\n 30, 22, 14, 6, 61, 53, 45, 37,\n 29, 21, 13, 5, 28, 20, 12, 4\n ];\n\n // Permuted Choice 2 constants\n var PC2 = [\n 14, 17, 11, 24, 1, 5,\n 3, 28, 15, 6, 21, 10,\n 23, 19, 12, 4, 26, 8,\n 16, 7, 27, 20, 13, 2,\n 41, 52, 31, 37, 47, 55,\n 30, 40, 51, 45, 33, 48,\n 44, 49, 39, 56, 34, 53,\n 46, 42, 50, 36, 29, 32\n ];\n\n // Cumulative bit shift constants\n var BIT_SHIFTS = [1, 2, 4, 6, 8, 10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28];\n\n // SBOXes and round permutation constants\n var SBOX_P = [\n {\n 0x0: 0x808200,\n 0x10000000: 0x8000,\n 0x20000000: 0x808002,\n 0x30000000: 0x2,\n 0x40000000: 0x200,\n 0x50000000: 0x808202,\n 0x60000000: 0x800202,\n 0x70000000: 0x800000,\n 0x80000000: 0x202,\n 0x90000000: 0x800200,\n 0xa0000000: 0x8200,\n 0xb0000000: 0x808000,\n 0xc0000000: 0x8002,\n 0xd0000000: 0x800002,\n 0xe0000000: 0x0,\n 0xf0000000: 0x8202,\n 0x8000000: 0x0,\n 0x18000000: 0x808202,\n 0x28000000: 0x8202,\n 0x38000000: 0x8000,\n 0x48000000: 0x808200,\n 0x58000000: 0x200,\n 0x68000000: 0x808002,\n 0x78000000: 0x2,\n 0x88000000: 0x800200,\n 0x98000000: 0x8200,\n 0xa8000000: 0x808000,\n 0xb8000000: 0x800202,\n 0xc8000000: 0x800002,\n 0xd8000000: 0x8002,\n 0xe8000000: 0x202,\n 0xf8000000: 0x800000,\n 0x1: 0x8000,\n 0x10000001: 0x2,\n 0x20000001: 0x808200,\n 0x30000001: 0x800000,\n 0x40000001: 0x808002,\n 0x50000001: 0x8200,\n 0x60000001: 0x200,\n 0x70000001: 0x800202,\n 0x80000001: 0x808202,\n 0x90000001: 0x808000,\n 0xa0000001: 0x800002,\n 0xb0000001: 0x8202,\n 0xc0000001: 0x202,\n 0xd0000001: 0x800200,\n 0xe0000001: 0x8002,\n 0xf0000001: 0x0,\n 0x8000001: 0x808202,\n 0x18000001: 0x808000,\n 0x28000001: 0x800000,\n 0x38000001: 0x200,\n 0x48000001: 0x8000,\n 0x58000001: 0x800002,\n 0x68000001: 0x2,\n 0x78000001: 0x8202,\n 0x88000001: 0x8002,\n 0x98000001: 0x800202,\n 0xa8000001: 0x202,\n 0xb8000001: 0x808200,\n 0xc8000001: 0x800200,\n 0xd8000001: 0x0,\n 0xe8000001: 0x8200,\n 0xf8000001: 0x808002\n },\n {\n 0x0: 0x40084010,\n 0x1000000: 0x4000,\n 0x2000000: 0x80000,\n 0x3000000: 0x40080010,\n 0x4000000: 0x40000010,\n 0x5000000: 0x40084000,\n 0x6000000: 0x40004000,\n 0x7000000: 0x10,\n 0x8000000: 0x84000,\n 0x9000000: 0x40004010,\n 0xa000000: 0x40000000,\n 0xb000000: 0x84010,\n 0xc000000: 0x80010,\n 0xd000000: 0x0,\n 0xe000000: 0x4010,\n 0xf000000: 0x40080000,\n 0x800000: 0x40004000,\n 0x1800000: 0x84010,\n 0x2800000: 0x10,\n 0x3800000: 0x40004010,\n 0x4800000: 0x40084010,\n 0x5800000: 0x40000000,\n 0x6800000: 0x80000,\n 0x7800000: 0x40080010,\n 0x8800000: 0x80010,\n 0x9800000: 0x0,\n 0xa800000: 0x4000,\n 0xb800000: 0x40080000,\n 0xc800000: 0x40000010,\n 0xd800000: 0x84000,\n 0xe800000: 0x40084000,\n 0xf800000: 0x4010,\n 0x10000000: 0x0,\n 0x11000000: 0x40080010,\n 0x12000000: 0x40004010,\n 0x13000000: 0x40084000,\n 0x14000000: 0x40080000,\n 0x15000000: 0x10,\n 0x16000000: 0x84010,\n 0x17000000: 0x4000,\n 0x18000000: 0x4010,\n 0x19000000: 0x80000,\n 0x1a000000: 0x80010,\n 0x1b000000: 0x40000010,\n 0x1c000000: 0x84000,\n 0x1d000000: 0x40004000,\n 0x1e000000: 0x40000000,\n 0x1f000000: 0x40084010,\n 0x10800000: 0x84010,\n 0x11800000: 0x80000,\n 0x12800000: 0x40080000,\n 0x13800000: 0x4000,\n 0x14800000: 0x40004000,\n 0x15800000: 0x40084010,\n 0x16800000: 0x10,\n 0x17800000: 0x40000000,\n 0x18800000: 0x40084000,\n 0x19800000: 0x40000010,\n 0x1a800000: 0x40004010,\n 0x1b800000: 0x80010,\n 0x1c800000: 0x0,\n 0x1d800000: 0x4010,\n 0x1e800000: 0x40080010,\n 0x1f800000: 0x84000\n },\n {\n 0x0: 0x104,\n 0x100000: 0x0,\n 0x200000: 0x4000100,\n 0x300000: 0x10104,\n 0x400000: 0x10004,\n 0x500000: 0x4000004,\n 0x600000: 0x4010104,\n 0x700000: 0x4010000,\n 0x800000: 0x4000000,\n 0x900000: 0x4010100,\n 0xa00000: 0x10100,\n 0xb00000: 0x4010004,\n 0xc00000: 0x4000104,\n 0xd00000: 0x10000,\n 0xe00000: 0x4,\n 0xf00000: 0x100,\n 0x80000: 0x4010100,\n 0x180000: 0x4010004,\n 0x280000: 0x0,\n 0x380000: 0x4000100,\n 0x480000: 0x4000004,\n 0x580000: 0x10000,\n 0x680000: 0x10004,\n 0x780000: 0x104,\n 0x880000: 0x4,\n 0x980000: 0x100,\n 0xa80000: 0x4010000,\n 0xb80000: 0x10104,\n 0xc80000: 0x10100,\n 0xd80000: 0x4000104,\n 0xe80000: 0x4010104,\n 0xf80000: 0x4000000,\n 0x1000000: 0x4010100,\n 0x1100000: 0x10004,\n 0x1200000: 0x10000,\n 0x1300000: 0x4000100,\n 0x1400000: 0x100,\n 0x1500000: 0x4010104,\n 0x1600000: 0x4000004,\n 0x1700000: 0x0,\n 0x1800000: 0x4000104,\n 0x1900000: 0x4000000,\n 0x1a00000: 0x4,\n 0x1b00000: 0x10100,\n 0x1c00000: 0x4010000,\n 0x1d00000: 0x104,\n 0x1e00000: 0x10104,\n 0x1f00000: 0x4010004,\n 0x1080000: 0x4000000,\n 0x1180000: 0x104,\n 0x1280000: 0x4010100,\n 0x1380000: 0x0,\n 0x1480000: 0x10004,\n 0x1580000: 0x4000100,\n 0x1680000: 0x100,\n 0x1780000: 0x4010004,\n 0x1880000: 0x10000,\n 0x1980000: 0x4010104,\n 0x1a80000: 0x10104,\n 0x1b80000: 0x4000004,\n 0x1c80000: 0x4000104,\n 0x1d80000: 0x4010000,\n 0x1e80000: 0x4,\n 0x1f80000: 0x10100\n },\n {\n 0x0: 0x80401000,\n 0x10000: 0x80001040,\n 0x20000: 0x401040,\n 0x30000: 0x80400000,\n 0x40000: 0x0,\n 0x50000: 0x401000,\n 0x60000: 0x80000040,\n 0x70000: 0x400040,\n 0x80000: 0x80000000,\n 0x90000: 0x400000,\n 0xa0000: 0x40,\n 0xb0000: 0x80001000,\n 0xc0000: 0x80400040,\n 0xd0000: 0x1040,\n 0xe0000: 0x1000,\n 0xf0000: 0x80401040,\n 0x8000: 0x80001040,\n 0x18000: 0x40,\n 0x28000: 0x80400040,\n 0x38000: 0x80001000,\n 0x48000: 0x401000,\n 0x58000: 0x80401040,\n 0x68000: 0x0,\n 0x78000: 0x80400000,\n 0x88000: 0x1000,\n 0x98000: 0x80401000,\n 0xa8000: 0x400000,\n 0xb8000: 0x1040,\n 0xc8000: 0x80000000,\n 0xd8000: 0x400040,\n 0xe8000: 0x401040,\n 0xf8000: 0x80000040,\n 0x100000: 0x400040,\n 0x110000: 0x401000,\n 0x120000: 0x80000040,\n 0x130000: 0x0,\n 0x140000: 0x1040,\n 0x150000: 0x80400040,\n 0x160000: 0x80401000,\n 0x170000: 0x80001040,\n 0x180000: 0x80401040,\n 0x190000: 0x80000000,\n 0x1a0000: 0x80400000,\n 0x1b0000: 0x401040,\n 0x1c0000: 0x80001000,\n 0x1d0000: 0x400000,\n 0x1e0000: 0x40,\n 0x1f0000: 0x1000,\n 0x108000: 0x80400000,\n 0x118000: 0x80401040,\n 0x128000: 0x0,\n 0x138000: 0x401000,\n 0x148000: 0x400040,\n 0x158000: 0x80000000,\n 0x168000: 0x80001040,\n 0x178000: 0x40,\n 0x188000: 0x80000040,\n 0x198000: 0x1000,\n 0x1a8000: 0x80001000,\n 0x1b8000: 0x80400040,\n 0x1c8000: 0x1040,\n 0x1d8000: 0x80401000,\n 0x1e8000: 0x400000,\n 0x1f8000: 0x401040\n },\n {\n 0x0: 0x80,\n 0x1000: 0x1040000,\n 0x2000: 0x40000,\n 0x3000: 0x20000000,\n 0x4000: 0x20040080,\n 0x5000: 0x1000080,\n 0x6000: 0x21000080,\n 0x7000: 0x40080,\n 0x8000: 0x1000000,\n 0x9000: 0x20040000,\n 0xa000: 0x20000080,\n 0xb000: 0x21040080,\n 0xc000: 0x21040000,\n 0xd000: 0x0,\n 0xe000: 0x1040080,\n 0xf000: 0x21000000,\n 0x800: 0x1040080,\n 0x1800: 0x21000080,\n 0x2800: 0x80,\n 0x3800: 0x1040000,\n 0x4800: 0x40000,\n 0x5800: 0x20040080,\n 0x6800: 0x21040000,\n 0x7800: 0x20000000,\n 0x8800: 0x20040000,\n 0x9800: 0x0,\n 0xa800: 0x21040080,\n 0xb800: 0x1000080,\n 0xc800: 0x20000080,\n 0xd800: 0x21000000,\n 0xe800: 0x1000000,\n 0xf800: 0x40080,\n 0x10000: 0x40000,\n 0x11000: 0x80,\n 0x12000: 0x20000000,\n 0x13000: 0x21000080,\n 0x14000: 0x1000080,\n 0x15000: 0x21040000,\n 0x16000: 0x20040080,\n 0x17000: 0x1000000,\n 0x18000: 0x21040080,\n 0x19000: 0x21000000,\n 0x1a000: 0x1040000,\n 0x1b000: 0x20040000,\n 0x1c000: 0x40080,\n 0x1d000: 0x20000080,\n 0x1e000: 0x0,\n 0x1f000: 0x1040080,\n 0x10800: 0x21000080,\n 0x11800: 0x1000000,\n 0x12800: 0x1040000,\n 0x13800: 0x20040080,\n 0x14800: 0x20000000,\n 0x15800: 0x1040080,\n 0x16800: 0x80,\n 0x17800: 0x21040000,\n 0x18800: 0x40080,\n 0x19800: 0x21040080,\n 0x1a800: 0x0,\n 0x1b800: 0x21000000,\n 0x1c800: 0x1000080,\n 0x1d800: 0x40000,\n 0x1e800: 0x20040000,\n 0x1f800: 0x20000080\n },\n {\n 0x0: 0x10000008,\n 0x100: 0x2000,\n 0x200: 0x10200000,\n 0x300: 0x10202008,\n 0x400: 0x10002000,\n 0x500: 0x200000,\n 0x600: 0x200008,\n 0x700: 0x10000000,\n 0x800: 0x0,\n 0x900: 0x10002008,\n 0xa00: 0x202000,\n 0xb00: 0x8,\n 0xc00: 0x10200008,\n 0xd00: 0x202008,\n 0xe00: 0x2008,\n 0xf00: 0x10202000,\n 0x80: 0x10200000,\n 0x180: 0x10202008,\n 0x280: 0x8,\n 0x380: 0x200000,\n 0x480: 0x202008,\n 0x580: 0x10000008,\n 0x680: 0x10002000,\n 0x780: 0x2008,\n 0x880: 0x200008,\n 0x980: 0x2000,\n 0xa80: 0x10002008,\n 0xb80: 0x10200008,\n 0xc80: 0x0,\n 0xd80: 0x10202000,\n 0xe80: 0x202000,\n 0xf80: 0x10000000,\n 0x1000: 0x10002000,\n 0x1100: 0x10200008,\n 0x1200: 0x10202008,\n 0x1300: 0x2008,\n 0x1400: 0x200000,\n 0x1500: 0x10000000,\n 0x1600: 0x10000008,\n 0x1700: 0x202000,\n 0x1800: 0x202008,\n 0x1900: 0x0,\n 0x1a00: 0x8,\n 0x1b00: 0x10200000,\n 0x1c00: 0x2000,\n 0x1d00: 0x10002008,\n 0x1e00: 0x10202000,\n 0x1f00: 0x200008,\n 0x1080: 0x8,\n 0x1180: 0x202000,\n 0x1280: 0x200000,\n 0x1380: 0x10000008,\n 0x1480: 0x10002000,\n 0x1580: 0x2008,\n 0x1680: 0x10202008,\n 0x1780: 0x10200000,\n 0x1880: 0x10202000,\n 0x1980: 0x10200008,\n 0x1a80: 0x2000,\n 0x1b80: 0x202008,\n 0x1c80: 0x200008,\n 0x1d80: 0x0,\n 0x1e80: 0x10000000,\n 0x1f80: 0x10002008\n },\n {\n 0x0: 0x100000,\n 0x10: 0x2000401,\n 0x20: 0x400,\n 0x30: 0x100401,\n 0x40: 0x2100401,\n 0x50: 0x0,\n 0x60: 0x1,\n 0x70: 0x2100001,\n 0x80: 0x2000400,\n 0x90: 0x100001,\n 0xa0: 0x2000001,\n 0xb0: 0x2100400,\n 0xc0: 0x2100000,\n 0xd0: 0x401,\n 0xe0: 0x100400,\n 0xf0: 0x2000000,\n 0x8: 0x2100001,\n 0x18: 0x0,\n 0x28: 0x2000401,\n 0x38: 0x2100400,\n 0x48: 0x100000,\n 0x58: 0x2000001,\n 0x68: 0x2000000,\n 0x78: 0x401,\n 0x88: 0x100401,\n 0x98: 0x2000400,\n 0xa8: 0x2100000,\n 0xb8: 0x100001,\n 0xc8: 0x400,\n 0xd8: 0x2100401,\n 0xe8: 0x1,\n 0xf8: 0x100400,\n 0x100: 0x2000000,\n 0x110: 0x100000,\n 0x120: 0x2000401,\n 0x130: 0x2100001,\n 0x140: 0x100001,\n 0x150: 0x2000400,\n 0x160: 0x2100400,\n 0x170: 0x100401,\n 0x180: 0x401,\n 0x190: 0x2100401,\n 0x1a0: 0x100400,\n 0x1b0: 0x1,\n 0x1c0: 0x0,\n 0x1d0: 0x2100000,\n 0x1e0: 0x2000001,\n 0x1f0: 0x400,\n 0x108: 0x100400,\n 0x118: 0x2000401,\n 0x128: 0x2100001,\n 0x138: 0x1,\n 0x148: 0x2000000,\n 0x158: 0x100000,\n 0x168: 0x401,\n 0x178: 0x2100400,\n 0x188: 0x2000001,\n 0x198: 0x2100000,\n 0x1a8: 0x0,\n 0x1b8: 0x2100401,\n 0x1c8: 0x100401,\n 0x1d8: 0x400,\n 0x1e8: 0x2000400,\n 0x1f8: 0x100001\n },\n {\n 0x0: 0x8000820,\n 0x1: 0x20000,\n 0x2: 0x8000000,\n 0x3: 0x20,\n 0x4: 0x20020,\n 0x5: 0x8020820,\n 0x6: 0x8020800,\n 0x7: 0x800,\n 0x8: 0x8020000,\n 0x9: 0x8000800,\n 0xa: 0x20800,\n 0xb: 0x8020020,\n 0xc: 0x820,\n 0xd: 0x0,\n 0xe: 0x8000020,\n 0xf: 0x20820,\n 0x80000000: 0x800,\n 0x80000001: 0x8020820,\n 0x80000002: 0x8000820,\n 0x80000003: 0x8000000,\n 0x80000004: 0x8020000,\n 0x80000005: 0x20800,\n 0x80000006: 0x20820,\n 0x80000007: 0x20,\n 0x80000008: 0x8000020,\n 0x80000009: 0x820,\n 0x8000000a: 0x20020,\n 0x8000000b: 0x8020800,\n 0x8000000c: 0x0,\n 0x8000000d: 0x8020020,\n 0x8000000e: 0x8000800,\n 0x8000000f: 0x20000,\n 0x10: 0x20820,\n 0x11: 0x8020800,\n 0x12: 0x20,\n 0x13: 0x800,\n 0x14: 0x8000800,\n 0x15: 0x8000020,\n 0x16: 0x8020020,\n 0x17: 0x20000,\n 0x18: 0x0,\n 0x19: 0x20020,\n 0x1a: 0x8020000,\n 0x1b: 0x8000820,\n 0x1c: 0x8020820,\n 0x1d: 0x20800,\n 0x1e: 0x820,\n 0x1f: 0x8000000,\n 0x80000010: 0x20000,\n 0x80000011: 0x800,\n 0x80000012: 0x8020020,\n 0x80000013: 0x20820,\n 0x80000014: 0x20,\n 0x80000015: 0x8020000,\n 0x80000016: 0x8000000,\n 0x80000017: 0x8000820,\n 0x80000018: 0x8020820,\n 0x80000019: 0x8000020,\n 0x8000001a: 0x8000800,\n 0x8000001b: 0x0,\n 0x8000001c: 0x20800,\n 0x8000001d: 0x820,\n 0x8000001e: 0x20020,\n 0x8000001f: 0x8020800\n }\n ];\n\n // Masks that select the SBOX input\n var SBOX_MASK = [\n 0xf8000001, 0x1f800000, 0x01f80000, 0x001f8000,\n 0x0001f800, 0x00001f80, 0x000001f8, 0x8000001f\n ];\n\n /**\n * DES block cipher algorithm.\n */\n var DES = C_algo.DES = BlockCipher.extend({\n _doReset: function () {\n // Shortcuts\n var key = this._key;\n var keyWords = key.words;\n\n // Select 56 bits according to PC1\n var keyBits = [];\n for (var i = 0; i < 56; i++) {\n var keyBitPos = PC1[i] - 1;\n keyBits[i] = (keyWords[keyBitPos >>> 5] >>> (31 - keyBitPos % 32)) & 1;\n }\n\n // Assemble 16 subkeys\n var subKeys = this._subKeys = [];\n for (var nSubKey = 0; nSubKey < 16; nSubKey++) {\n // Create subkey\n var subKey = subKeys[nSubKey] = [];\n\n // Shortcut\n var bitShift = BIT_SHIFTS[nSubKey];\n\n // Select 48 bits according to PC2\n for (var i = 0; i < 24; i++) {\n // Select from the left 28 key bits\n subKey[(i / 6) | 0] |= keyBits[((PC2[i] - 1) + bitShift) % 28] << (31 - i % 6);\n\n // Select from the right 28 key bits\n subKey[4 + ((i / 6) | 0)] |= keyBits[28 + (((PC2[i + 24] - 1) + bitShift) % 28)] << (31 - i % 6);\n }\n\n // Since each subkey is applied to an expanded 32-bit input,\n // the subkey can be broken into 8 values scaled to 32-bits,\n // which allows the key to be used without expansion\n subKey[0] = (subKey[0] << 1) | (subKey[0] >>> 31);\n for (var i = 1; i < 7; i++) {\n subKey[i] = subKey[i] >>> ((i - 1) * 4 + 3);\n }\n subKey[7] = (subKey[7] << 5) | (subKey[7] >>> 27);\n }\n\n // Compute inverse subkeys\n var invSubKeys = this._invSubKeys = [];\n for (var i = 0; i < 16; i++) {\n invSubKeys[i] = subKeys[15 - i];\n }\n },\n\n encryptBlock: function (M, offset) {\n this._doCryptBlock(M, offset, this._subKeys);\n },\n\n decryptBlock: function (M, offset) {\n this._doCryptBlock(M, offset, this._invSubKeys);\n },\n\n _doCryptBlock: function (M, offset, subKeys) {\n // Get input\n this._lBlock = M[offset];\n this._rBlock = M[offset + 1];\n\n // Initial permutation\n exchangeLR.call(this, 4, 0x0f0f0f0f);\n exchangeLR.call(this, 16, 0x0000ffff);\n exchangeRL.call(this, 2, 0x33333333);\n exchangeRL.call(this, 8, 0x00ff00ff);\n exchangeLR.call(this, 1, 0x55555555);\n\n // Rounds\n for (var round = 0; round < 16; round++) {\n // Shortcuts\n var subKey = subKeys[round];\n var lBlock = this._lBlock;\n var rBlock = this._rBlock;\n\n // Feistel function\n var f = 0;\n for (var i = 0; i < 8; i++) {\n f |= SBOX_P[i][((rBlock ^ subKey[i]) & SBOX_MASK[i]) >>> 0];\n }\n this._lBlock = rBlock;\n this._rBlock = lBlock ^ f;\n }\n\n // Undo swap from last round\n var t = this._lBlock;\n this._lBlock = this._rBlock;\n this._rBlock = t;\n\n // Final permutation\n exchangeLR.call(this, 1, 0x55555555);\n exchangeRL.call(this, 8, 0x00ff00ff);\n exchangeRL.call(this, 2, 0x33333333);\n exchangeLR.call(this, 16, 0x0000ffff);\n exchangeLR.call(this, 4, 0x0f0f0f0f);\n\n // Set output\n M[offset] = this._lBlock;\n M[offset + 1] = this._rBlock;\n },\n\n keySize: 64/32,\n\n ivSize: 64/32,\n\n blockSize: 64/32\n });\n\n // Swap bits across the left and right words\n function exchangeLR(offset, mask) {\n var t = ((this._lBlock >>> offset) ^ this._rBlock) & mask;\n this._rBlock ^= t;\n this._lBlock ^= t << offset;\n }\n\n function exchangeRL(offset, mask) {\n var t = ((this._rBlock >>> offset) ^ this._lBlock) & mask;\n this._lBlock ^= t;\n this._rBlock ^= t << offset;\n }\n\n /**\n * Shortcut functions to the cipher's object interface.\n *\n * @example\n *\n * var ciphertext = CryptoJS.DES.encrypt(message, key, cfg);\n * var plaintext = CryptoJS.DES.decrypt(ciphertext, key, cfg);\n */\n C.DES = BlockCipher._createHelper(DES);\n\n /**\n * Triple-DES block cipher algorithm.\n */\n var TripleDES = C_algo.TripleDES = BlockCipher.extend({\n _doReset: function () {\n // Shortcuts\n var key = this._key;\n var keyWords = key.words;\n // Make sure the key length is valid (64, 128 or >= 192 bit)\n if (keyWords.length !== 2 && keyWords.length !== 4 && keyWords.length < 6) {\n throw new Error('Invalid key length - 3DES requires the key length to be 64, 128, 192 or >192.');\n }\n\n // Extend the key according to the keying options defined in 3DES standard\n var key1 = keyWords.slice(0, 2);\n var key2 = keyWords.length < 4 ? keyWords.slice(0, 2) : keyWords.slice(2, 4);\n var key3 = keyWords.length < 6 ? keyWords.slice(0, 2) : keyWords.slice(4, 6);\n\n // Create DES instances\n this._des1 = DES.createEncryptor(WordArray.create(key1));\n this._des2 = DES.createEncryptor(WordArray.create(key2));\n this._des3 = DES.createEncryptor(WordArray.create(key3));\n },\n\n encryptBlock: function (M, offset) {\n this._des1.encryptBlock(M, offset);\n this._des2.decryptBlock(M, offset);\n this._des3.encryptBlock(M, offset);\n },\n\n decryptBlock: function (M, offset) {\n this._des3.decryptBlock(M, offset);\n this._des2.encryptBlock(M, offset);\n this._des1.decryptBlock(M, offset);\n },\n\n keySize: 192/32,\n\n ivSize: 64/32,\n\n blockSize: 64/32\n });\n\n /**\n * Shortcut functions to the cipher's object interface.\n *\n * @example\n *\n * var ciphertext = CryptoJS.TripleDES.encrypt(message, key, cfg);\n * var plaintext = CryptoJS.TripleDES.decrypt(ciphertext, key, cfg);\n */\n C.TripleDES = BlockCipher._createHelper(TripleDES);\n }());\n\n\n (function () {\n // Shortcuts\n var C = CryptoJS;\n var C_lib = C.lib;\n var StreamCipher = C_lib.StreamCipher;\n var C_algo = C.algo;\n\n /**\n * RC4 stream cipher algorithm.\n */\n var RC4 = C_algo.RC4 = StreamCipher.extend({\n _doReset: function () {\n // Shortcuts\n var key = this._key;\n var keyWords = key.words;\n var keySigBytes = key.sigBytes;\n\n // Init sbox\n var S = this._S = [];\n for (var i = 0; i < 256; i++) {\n S[i] = i;\n }\n\n // Key setup\n for (var i = 0, j = 0; i < 256; i++) {\n var keyByteIndex = i % keySigBytes;\n var keyByte = (keyWords[keyByteIndex >>> 2] >>> (24 - (keyByteIndex % 4) * 8)) & 0xff;\n\n j = (j + S[i] + keyByte) % 256;\n\n // Swap\n var t = S[i];\n S[i] = S[j];\n S[j] = t;\n }\n\n // Counters\n this._i = this._j = 0;\n },\n\n _doProcessBlock: function (M, offset) {\n M[offset] ^= generateKeystreamWord.call(this);\n },\n\n keySize: 256/32,\n\n ivSize: 0\n });\n\n function generateKeystreamWord() {\n // Shortcuts\n var S = this._S;\n var i = this._i;\n var j = this._j;\n\n // Generate keystream word\n var keystreamWord = 0;\n for (var n = 0; n < 4; n++) {\n i = (i + 1) % 256;\n j = (j + S[i]) % 256;\n\n // Swap\n var t = S[i];\n S[i] = S[j];\n S[j] = t;\n\n keystreamWord |= S[(S[i] + S[j]) % 256] << (24 - n * 8);\n }\n\n // Update counters\n this._i = i;\n this._j = j;\n\n return keystreamWord;\n }\n\n /**\n * Shortcut functions to the cipher's object interface.\n *\n * @example\n *\n * var ciphertext = CryptoJS.RC4.encrypt(message, key, cfg);\n * var plaintext = CryptoJS.RC4.decrypt(ciphertext, key, cfg);\n */\n C.RC4 = StreamCipher._createHelper(RC4);\n\n /**\n * Modified RC4 stream cipher algorithm.\n */\n var RC4Drop = C_algo.RC4Drop = RC4.extend({\n /**\n * Configuration options.\n *\n * @property {number} drop The number of keystream words to drop. Default 192\n */\n cfg: RC4.cfg.extend({\n drop: 192\n }),\n\n _doReset: function () {\n RC4._doReset.call(this);\n\n // Drop\n for (var i = this.cfg.drop; i > 0; i--) {\n generateKeystreamWord.call(this);\n }\n }\n });\n\n /**\n * Shortcut functions to the cipher's object interface.\n *\n * @example\n *\n * var ciphertext = CryptoJS.RC4Drop.encrypt(message, key, cfg);\n * var plaintext = CryptoJS.RC4Drop.decrypt(ciphertext, key, cfg);\n */\n C.RC4Drop = StreamCipher._createHelper(RC4Drop);\n }());\n\n\n (function () {\n // Shortcuts\n var C = CryptoJS;\n var C_lib = C.lib;\n var StreamCipher = C_lib.StreamCipher;\n var C_algo = C.algo;\n\n // Reusable objects\n var S = [];\n var C_ = [];\n var G = [];\n\n /**\n * Rabbit stream cipher algorithm\n */\n var Rabbit = C_algo.Rabbit = StreamCipher.extend({\n _doReset: function () {\n // Shortcuts\n var K = this._key.words;\n var iv = this.cfg.iv;\n\n // Swap endian\n for (var i = 0; i < 4; i++) {\n K[i] = (((K[i] << 8) | (K[i] >>> 24)) & 0x00ff00ff) |\n (((K[i] << 24) | (K[i] >>> 8)) & 0xff00ff00);\n }\n\n // Generate initial state values\n var X = this._X = [\n K[0], (K[3] << 16) | (K[2] >>> 16),\n K[1], (K[0] << 16) | (K[3] >>> 16),\n K[2], (K[1] << 16) | (K[0] >>> 16),\n K[3], (K[2] << 16) | (K[1] >>> 16)\n ];\n\n // Generate initial counter values\n var C = this._C = [\n (K[2] << 16) | (K[2] >>> 16), (K[0] & 0xffff0000) | (K[1] & 0x0000ffff),\n (K[3] << 16) | (K[3] >>> 16), (K[1] & 0xffff0000) | (K[2] & 0x0000ffff),\n (K[0] << 16) | (K[0] >>> 16), (K[2] & 0xffff0000) | (K[3] & 0x0000ffff),\n (K[1] << 16) | (K[1] >>> 16), (K[3] & 0xffff0000) | (K[0] & 0x0000ffff)\n ];\n\n // Carry bit\n this._b = 0;\n\n // Iterate the system four times\n for (var i = 0; i < 4; i++) {\n nextState.call(this);\n }\n\n // Modify the counters\n for (var i = 0; i < 8; i++) {\n C[i] ^= X[(i + 4) & 7];\n }\n\n // IV setup\n if (iv) {\n // Shortcuts\n var IV = iv.words;\n var IV_0 = IV[0];\n var IV_1 = IV[1];\n\n // Generate four subvectors\n var i0 = (((IV_0 << 8) | (IV_0 >>> 24)) & 0x00ff00ff) | (((IV_0 << 24) | (IV_0 >>> 8)) & 0xff00ff00);\n var i2 = (((IV_1 << 8) | (IV_1 >>> 24)) & 0x00ff00ff) | (((IV_1 << 24) | (IV_1 >>> 8)) & 0xff00ff00);\n var i1 = (i0 >>> 16) | (i2 & 0xffff0000);\n var i3 = (i2 << 16) | (i0 & 0x0000ffff);\n\n // Modify counter values\n C[0] ^= i0;\n C[1] ^= i1;\n C[2] ^= i2;\n C[3] ^= i3;\n C[4] ^= i0;\n C[5] ^= i1;\n C[6] ^= i2;\n C[7] ^= i3;\n\n // Iterate the system four times\n for (var i = 0; i < 4; i++) {\n nextState.call(this);\n }\n }\n },\n\n _doProcessBlock: function (M, offset) {\n // Shortcut\n var X = this._X;\n\n // Iterate the system\n nextState.call(this);\n\n // Generate four keystream words\n S[0] = X[0] ^ (X[5] >>> 16) ^ (X[3] << 16);\n S[1] = X[2] ^ (X[7] >>> 16) ^ (X[5] << 16);\n S[2] = X[4] ^ (X[1] >>> 16) ^ (X[7] << 16);\n S[3] = X[6] ^ (X[3] >>> 16) ^ (X[1] << 16);\n\n for (var i = 0; i < 4; i++) {\n // Swap endian\n S[i] = (((S[i] << 8) | (S[i] >>> 24)) & 0x00ff00ff) |\n (((S[i] << 24) | (S[i] >>> 8)) & 0xff00ff00);\n\n // Encrypt\n M[offset + i] ^= S[i];\n }\n },\n\n blockSize: 128/32,\n\n ivSize: 64/32\n });\n\n function nextState() {\n // Shortcuts\n var X = this._X;\n var C = this._C;\n\n // Save old counter values\n for (var i = 0; i < 8; i++) {\n C_[i] = C[i];\n }\n\n // Calculate new counter values\n C[0] = (C[0] + 0x4d34d34d + this._b) | 0;\n C[1] = (C[1] + 0xd34d34d3 + ((C[0] >>> 0) < (C_[0] >>> 0) ? 1 : 0)) | 0;\n C[2] = (C[2] + 0x34d34d34 + ((C[1] >>> 0) < (C_[1] >>> 0) ? 1 : 0)) | 0;\n C[3] = (C[3] + 0x4d34d34d + ((C[2] >>> 0) < (C_[2] >>> 0) ? 1 : 0)) | 0;\n C[4] = (C[4] + 0xd34d34d3 + ((C[3] >>> 0) < (C_[3] >>> 0) ? 1 : 0)) | 0;\n C[5] = (C[5] + 0x34d34d34 + ((C[4] >>> 0) < (C_[4] >>> 0) ? 1 : 0)) | 0;\n C[6] = (C[6] + 0x4d34d34d + ((C[5] >>> 0) < (C_[5] >>> 0) ? 1 : 0)) | 0;\n C[7] = (C[7] + 0xd34d34d3 + ((C[6] >>> 0) < (C_[6] >>> 0) ? 1 : 0)) | 0;\n this._b = (C[7] >>> 0) < (C_[7] >>> 0) ? 1 : 0;\n\n // Calculate the g-values\n for (var i = 0; i < 8; i++) {\n var gx = X[i] + C[i];\n\n // Construct high and low argument for squaring\n var ga = gx & 0xffff;\n var gb = gx >>> 16;\n\n // Calculate high and low result of squaring\n var gh = ((((ga * ga) >>> 17) + ga * gb) >>> 15) + gb * gb;\n var gl = (((gx & 0xffff0000) * gx) | 0) + (((gx & 0x0000ffff) * gx) | 0);\n\n // High XOR low\n G[i] = gh ^ gl;\n }\n\n // Calculate new state values\n X[0] = (G[0] + ((G[7] << 16) | (G[7] >>> 16)) + ((G[6] << 16) | (G[6] >>> 16))) | 0;\n X[1] = (G[1] + ((G[0] << 8) | (G[0] >>> 24)) + G[7]) | 0;\n X[2] = (G[2] + ((G[1] << 16) | (G[1] >>> 16)) + ((G[0] << 16) | (G[0] >>> 16))) | 0;\n X[3] = (G[3] + ((G[2] << 8) | (G[2] >>> 24)) + G[1]) | 0;\n X[4] = (G[4] + ((G[3] << 16) | (G[3] >>> 16)) + ((G[2] << 16) | (G[2] >>> 16))) | 0;\n X[5] = (G[5] + ((G[4] << 8) | (G[4] >>> 24)) + G[3]) | 0;\n X[6] = (G[6] + ((G[5] << 16) | (G[5] >>> 16)) + ((G[4] << 16) | (G[4] >>> 16))) | 0;\n X[7] = (G[7] + ((G[6] << 8) | (G[6] >>> 24)) + G[5]) | 0;\n }\n\n /**\n * Shortcut functions to the cipher's object interface.\n *\n * @example\n *\n * var ciphertext = CryptoJS.Rabbit.encrypt(message, key, cfg);\n * var plaintext = CryptoJS.Rabbit.decrypt(ciphertext, key, cfg);\n */\n C.Rabbit = StreamCipher._createHelper(Rabbit);\n }());\n\n\n (function () {\n // Shortcuts\n var C = CryptoJS;\n var C_lib = C.lib;\n var StreamCipher = C_lib.StreamCipher;\n var C_algo = C.algo;\n\n // Reusable objects\n var S = [];\n var C_ = [];\n var G = [];\n\n /**\n * Rabbit stream cipher algorithm.\n *\n * This is a legacy version that neglected to convert the key to little-endian.\n * This error doesn't affect the cipher's security,\n * but it does affect its compatibility with other implementations.\n */\n var RabbitLegacy = C_algo.RabbitLegacy = StreamCipher.extend({\n _doReset: function () {\n // Shortcuts\n var K = this._key.words;\n var iv = this.cfg.iv;\n\n // Generate initial state values\n var X = this._X = [\n K[0], (K[3] << 16) | (K[2] >>> 16),\n K[1], (K[0] << 16) | (K[3] >>> 16),\n K[2], (K[1] << 16) | (K[0] >>> 16),\n K[3], (K[2] << 16) | (K[1] >>> 16)\n ];\n\n // Generate initial counter values\n var C = this._C = [\n (K[2] << 16) | (K[2] >>> 16), (K[0] & 0xffff0000) | (K[1] & 0x0000ffff),\n (K[3] << 16) | (K[3] >>> 16), (K[1] & 0xffff0000) | (K[2] & 0x0000ffff),\n (K[0] << 16) | (K[0] >>> 16), (K[2] & 0xffff0000) | (K[3] & 0x0000ffff),\n (K[1] << 16) | (K[1] >>> 16), (K[3] & 0xffff0000) | (K[0] & 0x0000ffff)\n ];\n\n // Carry bit\n this._b = 0;\n\n // Iterate the system four times\n for (var i = 0; i < 4; i++) {\n nextState.call(this);\n }\n\n // Modify the counters\n for (var i = 0; i < 8; i++) {\n C[i] ^= X[(i + 4) & 7];\n }\n\n // IV setup\n if (iv) {\n // Shortcuts\n var IV = iv.words;\n var IV_0 = IV[0];\n var IV_1 = IV[1];\n\n // Generate four subvectors\n var i0 = (((IV_0 << 8) | (IV_0 >>> 24)) & 0x00ff00ff) | (((IV_0 << 24) | (IV_0 >>> 8)) & 0xff00ff00);\n var i2 = (((IV_1 << 8) | (IV_1 >>> 24)) & 0x00ff00ff) | (((IV_1 << 24) | (IV_1 >>> 8)) & 0xff00ff00);\n var i1 = (i0 >>> 16) | (i2 & 0xffff0000);\n var i3 = (i2 << 16) | (i0 & 0x0000ffff);\n\n // Modify counter values\n C[0] ^= i0;\n C[1] ^= i1;\n C[2] ^= i2;\n C[3] ^= i3;\n C[4] ^= i0;\n C[5] ^= i1;\n C[6] ^= i2;\n C[7] ^= i3;\n\n // Iterate the system four times\n for (var i = 0; i < 4; i++) {\n nextState.call(this);\n }\n }\n },\n\n _doProcessBlock: function (M, offset) {\n // Shortcut\n var X = this._X;\n\n // Iterate the system\n nextState.call(this);\n\n // Generate four keystream words\n S[0] = X[0] ^ (X[5] >>> 16) ^ (X[3] << 16);\n S[1] = X[2] ^ (X[7] >>> 16) ^ (X[5] << 16);\n S[2] = X[4] ^ (X[1] >>> 16) ^ (X[7] << 16);\n S[3] = X[6] ^ (X[3] >>> 16) ^ (X[1] << 16);\n\n for (var i = 0; i < 4; i++) {\n // Swap endian\n S[i] = (((S[i] << 8) | (S[i] >>> 24)) & 0x00ff00ff) |\n (((S[i] << 24) | (S[i] >>> 8)) & 0xff00ff00);\n\n // Encrypt\n M[offset + i] ^= S[i];\n }\n },\n\n blockSize: 128/32,\n\n ivSize: 64/32\n });\n\n function nextState() {\n // Shortcuts\n var X = this._X;\n var C = this._C;\n\n // Save old counter values\n for (var i = 0; i < 8; i++) {\n C_[i] = C[i];\n }\n\n // Calculate new counter values\n C[0] = (C[0] + 0x4d34d34d + this._b) | 0;\n C[1] = (C[1] + 0xd34d34d3 + ((C[0] >>> 0) < (C_[0] >>> 0) ? 1 : 0)) | 0;\n C[2] = (C[2] + 0x34d34d34 + ((C[1] >>> 0) < (C_[1] >>> 0) ? 1 : 0)) | 0;\n C[3] = (C[3] + 0x4d34d34d + ((C[2] >>> 0) < (C_[2] >>> 0) ? 1 : 0)) | 0;\n C[4] = (C[4] + 0xd34d34d3 + ((C[3] >>> 0) < (C_[3] >>> 0) ? 1 : 0)) | 0;\n C[5] = (C[5] + 0x34d34d34 + ((C[4] >>> 0) < (C_[4] >>> 0) ? 1 : 0)) | 0;\n C[6] = (C[6] + 0x4d34d34d + ((C[5] >>> 0) < (C_[5] >>> 0) ? 1 : 0)) | 0;\n C[7] = (C[7] + 0xd34d34d3 + ((C[6] >>> 0) < (C_[6] >>> 0) ? 1 : 0)) | 0;\n this._b = (C[7] >>> 0) < (C_[7] >>> 0) ? 1 : 0;\n\n // Calculate the g-values\n for (var i = 0; i < 8; i++) {\n var gx = X[i] + C[i];\n\n // Construct high and low argument for squaring\n var ga = gx & 0xffff;\n var gb = gx >>> 16;\n\n // Calculate high and low result of squaring\n var gh = ((((ga * ga) >>> 17) + ga * gb) >>> 15) + gb * gb;\n var gl = (((gx & 0xffff0000) * gx) | 0) + (((gx & 0x0000ffff) * gx) | 0);\n\n // High XOR low\n G[i] = gh ^ gl;\n }\n\n // Calculate new state values\n X[0] = (G[0] + ((G[7] << 16) | (G[7] >>> 16)) + ((G[6] << 16) | (G[6] >>> 16))) | 0;\n X[1] = (G[1] + ((G[0] << 8) | (G[0] >>> 24)) + G[7]) | 0;\n X[2] = (G[2] + ((G[1] << 16) | (G[1] >>> 16)) + ((G[0] << 16) | (G[0] >>> 16))) | 0;\n X[3] = (G[3] + ((G[2] << 8) | (G[2] >>> 24)) + G[1]) | 0;\n X[4] = (G[4] + ((G[3] << 16) | (G[3] >>> 16)) + ((G[2] << 16) | (G[2] >>> 16))) | 0;\n X[5] = (G[5] + ((G[4] << 8) | (G[4] >>> 24)) + G[3]) | 0;\n X[6] = (G[6] + ((G[5] << 16) | (G[5] >>> 16)) + ((G[4] << 16) | (G[4] >>> 16))) | 0;\n X[7] = (G[7] + ((G[6] << 8) | (G[6] >>> 24)) + G[5]) | 0;\n }\n\n /**\n * Shortcut functions to the cipher's object interface.\n *\n * @example\n *\n * var ciphertext = CryptoJS.RabbitLegacy.encrypt(message, key, cfg);\n * var plaintext = CryptoJS.RabbitLegacy.decrypt(ciphertext, key, cfg);\n */\n C.RabbitLegacy = StreamCipher._createHelper(RabbitLegacy);\n }());\n\n\n (function () {\n // Shortcuts\n var C = CryptoJS;\n var C_lib = C.lib;\n var BlockCipher = C_lib.BlockCipher;\n var C_algo = C.algo;\n\n const N = 16;\n\n //Origin pbox and sbox, derived from PI\n const ORIG_P = [\n 0x243F6A88, 0x85A308D3, 0x13198A2E, 0x03707344,\n 0xA4093822, 0x299F31D0, 0x082EFA98, 0xEC4E6C89,\n 0x452821E6, 0x38D01377, 0xBE5466CF, 0x34E90C6C,\n 0xC0AC29B7, 0xC97C50DD, 0x3F84D5B5, 0xB5470917,\n 0x9216D5D9, 0x8979FB1B\n ];\n\n const ORIG_S = [\n [ 0xD1310BA6, 0x98DFB5AC, 0x2FFD72DB, 0xD01ADFB7,\n 0xB8E1AFED, 0x6A267E96, 0xBA7C9045, 0xF12C7F99,\n 0x24A19947, 0xB3916CF7, 0x0801F2E2, 0x858EFC16,\n 0x636920D8, 0x71574E69, 0xA458FEA3, 0xF4933D7E,\n 0x0D95748F, 0x728EB658, 0x718BCD58, 0x82154AEE,\n 0x7B54A41D, 0xC25A59B5, 0x9C30D539, 0x2AF26013,\n 0xC5D1B023, 0x286085F0, 0xCA417918, 0xB8DB38EF,\n 0x8E79DCB0, 0x603A180E, 0x6C9E0E8B, 0xB01E8A3E,\n 0xD71577C1, 0xBD314B27, 0x78AF2FDA, 0x55605C60,\n 0xE65525F3, 0xAA55AB94, 0x57489862, 0x63E81440,\n 0x55CA396A, 0x2AAB10B6, 0xB4CC5C34, 0x1141E8CE,\n 0xA15486AF, 0x7C72E993, 0xB3EE1411, 0x636FBC2A,\n 0x2BA9C55D, 0x741831F6, 0xCE5C3E16, 0x9B87931E,\n 0xAFD6BA33, 0x6C24CF5C, 0x7A325381, 0x28958677,\n 0x3B8F4898, 0x6B4BB9AF, 0xC4BFE81B, 0x66282193,\n 0x61D809CC, 0xFB21A991, 0x487CAC60, 0x5DEC8032,\n 0xEF845D5D, 0xE98575B1, 0xDC262302, 0xEB651B88,\n 0x23893E81, 0xD396ACC5, 0x0F6D6FF3, 0x83F44239,\n 0x2E0B4482, 0xA4842004, 0x69C8F04A, 0x9E1F9B5E,\n 0x21C66842, 0xF6E96C9A, 0x670C9C61, 0xABD388F0,\n 0x6A51A0D2, 0xD8542F68, 0x960FA728, 0xAB5133A3,\n 0x6EEF0B6C, 0x137A3BE4, 0xBA3BF050, 0x7EFB2A98,\n 0xA1F1651D, 0x39AF0176, 0x66CA593E, 0x82430E88,\n 0x8CEE8619, 0x456F9FB4, 0x7D84A5C3, 0x3B8B5EBE,\n 0xE06F75D8, 0x85C12073, 0x401A449F, 0x56C16AA6,\n 0x4ED3AA62, 0x363F7706, 0x1BFEDF72, 0x429B023D,\n 0x37D0D724, 0xD00A1248, 0xDB0FEAD3, 0x49F1C09B,\n 0x075372C9, 0x80991B7B, 0x25D479D8, 0xF6E8DEF7,\n 0xE3FE501A, 0xB6794C3B, 0x976CE0BD, 0x04C006BA,\n 0xC1A94FB6, 0x409F60C4, 0x5E5C9EC2, 0x196A2463,\n 0x68FB6FAF, 0x3E6C53B5, 0x1339B2EB, 0x3B52EC6F,\n 0x6DFC511F, 0x9B30952C, 0xCC814544, 0xAF5EBD09,\n 0xBEE3D004, 0xDE334AFD, 0x660F2807, 0x192E4BB3,\n 0xC0CBA857, 0x45C8740F, 0xD20B5F39, 0xB9D3FBDB,\n 0x5579C0BD, 0x1A60320A, 0xD6A100C6, 0x402C7279,\n 0x679F25FE, 0xFB1FA3CC, 0x8EA5E9F8, 0xDB3222F8,\n 0x3C7516DF, 0xFD616B15, 0x2F501EC8, 0xAD0552AB,\n 0x323DB5FA, 0xFD238760, 0x53317B48, 0x3E00DF82,\n 0x9E5C57BB, 0xCA6F8CA0, 0x1A87562E, 0xDF1769DB,\n 0xD542A8F6, 0x287EFFC3, 0xAC6732C6, 0x8C4F5573,\n 0x695B27B0, 0xBBCA58C8, 0xE1FFA35D, 0xB8F011A0,\n 0x10FA3D98, 0xFD2183B8, 0x4AFCB56C, 0x2DD1D35B,\n 0x9A53E479, 0xB6F84565, 0xD28E49BC, 0x4BFB9790,\n 0xE1DDF2DA, 0xA4CB7E33, 0x62FB1341, 0xCEE4C6E8,\n 0xEF20CADA, 0x36774C01, 0xD07E9EFE, 0x2BF11FB4,\n 0x95DBDA4D, 0xAE909198, 0xEAAD8E71, 0x6B93D5A0,\n 0xD08ED1D0, 0xAFC725E0, 0x8E3C5B2F, 0x8E7594B7,\n 0x8FF6E2FB, 0xF2122B64, 0x8888B812, 0x900DF01C,\n 0x4FAD5EA0, 0x688FC31C, 0xD1CFF191, 0xB3A8C1AD,\n 0x2F2F2218, 0xBE0E1777, 0xEA752DFE, 0x8B021FA1,\n 0xE5A0CC0F, 0xB56F74E8, 0x18ACF3D6, 0xCE89E299,\n 0xB4A84FE0, 0xFD13E0B7, 0x7CC43B81, 0xD2ADA8D9,\n 0x165FA266, 0x80957705, 0x93CC7314, 0x211A1477,\n 0xE6AD2065, 0x77B5FA86, 0xC75442F5, 0xFB9D35CF,\n 0xEBCDAF0C, 0x7B3E89A0, 0xD6411BD3, 0xAE1E7E49,\n 0x00250E2D, 0x2071B35E, 0x226800BB, 0x57B8E0AF,\n 0x2464369B, 0xF009B91E, 0x5563911D, 0x59DFA6AA,\n 0x78C14389, 0xD95A537F, 0x207D5BA2, 0x02E5B9C5,\n 0x83260376, 0x6295CFA9, 0x11C81968, 0x4E734A41,\n 0xB3472DCA, 0x7B14A94A, 0x1B510052, 0x9A532915,\n 0xD60F573F, 0xBC9BC6E4, 0x2B60A476, 0x81E67400,\n 0x08BA6FB5, 0x571BE91F, 0xF296EC6B, 0x2A0DD915,\n 0xB6636521, 0xE7B9F9B6, 0xFF34052E, 0xC5855664,\n 0x53B02D5D, 0xA99F8FA1, 0x08BA4799, 0x6E85076A ],\n [ 0x4B7A70E9, 0xB5B32944, 0xDB75092E, 0xC4192623,\n 0xAD6EA6B0, 0x49A7DF7D, 0x9CEE60B8, 0x8FEDB266,\n 0xECAA8C71, 0x699A17FF, 0x5664526C, 0xC2B19EE1,\n 0x193602A5, 0x75094C29, 0xA0591340, 0xE4183A3E,\n 0x3F54989A, 0x5B429D65, 0x6B8FE4D6, 0x99F73FD6,\n 0xA1D29C07, 0xEFE830F5, 0x4D2D38E6, 0xF0255DC1,\n 0x4CDD2086, 0x8470EB26, 0x6382E9C6, 0x021ECC5E,\n 0x09686B3F, 0x3EBAEFC9, 0x3C971814, 0x6B6A70A1,\n 0x687F3584, 0x52A0E286, 0xB79C5305, 0xAA500737,\n 0x3E07841C, 0x7FDEAE5C, 0x8E7D44EC, 0x5716F2B8,\n 0xB03ADA37, 0xF0500C0D, 0xF01C1F04, 0x0200B3FF,\n 0xAE0CF51A, 0x3CB574B2, 0x25837A58, 0xDC0921BD,\n 0xD19113F9, 0x7CA92FF6, 0x94324773, 0x22F54701,\n 0x3AE5E581, 0x37C2DADC, 0xC8B57634, 0x9AF3DDA7,\n 0xA9446146, 0x0FD0030E, 0xECC8C73E, 0xA4751E41,\n 0xE238CD99, 0x3BEA0E2F, 0x3280BBA1, 0x183EB331,\n 0x4E548B38, 0x4F6DB908, 0x6F420D03, 0xF60A04BF,\n 0x2CB81290, 0x24977C79, 0x5679B072, 0xBCAF89AF,\n 0xDE9A771F, 0xD9930810, 0xB38BAE12, 0xDCCF3F2E,\n 0x5512721F, 0x2E6B7124, 0x501ADDE6, 0x9F84CD87,\n 0x7A584718, 0x7408DA17, 0xBC9F9ABC, 0xE94B7D8C,\n 0xEC7AEC3A, 0xDB851DFA, 0x63094366, 0xC464C3D2,\n 0xEF1C1847, 0x3215D908, 0xDD433B37, 0x24C2BA16,\n 0x12A14D43, 0x2A65C451, 0x50940002, 0x133AE4DD,\n 0x71DFF89E, 0x10314E55, 0x81AC77D6, 0x5F11199B,\n 0x043556F1, 0xD7A3C76B, 0x3C11183B, 0x5924A509,\n 0xF28FE6ED, 0x97F1FBFA, 0x9EBABF2C, 0x1E153C6E,\n 0x86E34570, 0xEAE96FB1, 0x860E5E0A, 0x5A3E2AB3,\n 0x771FE71C, 0x4E3D06FA, 0x2965DCB9, 0x99E71D0F,\n 0x803E89D6, 0x5266C825, 0x2E4CC978, 0x9C10B36A,\n 0xC6150EBA, 0x94E2EA78, 0xA5FC3C53, 0x1E0A2DF4,\n 0xF2F74EA7, 0x361D2B3D, 0x1939260F, 0x19C27960,\n 0x5223A708, 0xF71312B6, 0xEBADFE6E, 0xEAC31F66,\n 0xE3BC4595, 0xA67BC883, 0xB17F37D1, 0x018CFF28,\n 0xC332DDEF, 0xBE6C5AA5, 0x65582185, 0x68AB9802,\n 0xEECEA50F, 0xDB2F953B, 0x2AEF7DAD, 0x5B6E2F84,\n 0x1521B628, 0x29076170, 0xECDD4775, 0x619F1510,\n 0x13CCA830, 0xEB61BD96, 0x0334FE1E, 0xAA0363CF,\n 0xB5735C90, 0x4C70A239, 0xD59E9E0B, 0xCBAADE14,\n 0xEECC86BC, 0x60622CA7, 0x9CAB5CAB, 0xB2F3846E,\n 0x648B1EAF, 0x19BDF0CA, 0xA02369B9, 0x655ABB50,\n 0x40685A32, 0x3C2AB4B3, 0x319EE9D5, 0xC021B8F7,\n 0x9B540B19, 0x875FA099, 0x95F7997E, 0x623D7DA8,\n 0xF837889A, 0x97E32D77, 0x11ED935F, 0x16681281,\n 0x0E358829, 0xC7E61FD6, 0x96DEDFA1, 0x7858BA99,\n 0x57F584A5, 0x1B227263, 0x9B83C3FF, 0x1AC24696,\n 0xCDB30AEB, 0x532E3054, 0x8FD948E4, 0x6DBC3128,\n 0x58EBF2EF, 0x34C6FFEA, 0xFE28ED61, 0xEE7C3C73,\n 0x5D4A14D9, 0xE864B7E3, 0x42105D14, 0x203E13E0,\n 0x45EEE2B6, 0xA3AAABEA, 0xDB6C4F15, 0xFACB4FD0,\n 0xC742F442, 0xEF6ABBB5, 0x654F3B1D, 0x41CD2105,\n 0xD81E799E, 0x86854DC7, 0xE44B476A, 0x3D816250,\n 0xCF62A1F2, 0x5B8D2646, 0xFC8883A0, 0xC1C7B6A3,\n 0x7F1524C3, 0x69CB7492, 0x47848A0B, 0x5692B285,\n 0x095BBF00, 0xAD19489D, 0x1462B174, 0x23820E00,\n 0x58428D2A, 0x0C55F5EA, 0x1DADF43E, 0x233F7061,\n 0x3372F092, 0x8D937E41, 0xD65FECF1, 0x6C223BDB,\n 0x7CDE3759, 0xCBEE7460, 0x4085F2A7, 0xCE77326E,\n 0xA6078084, 0x19F8509E, 0xE8EFD855, 0x61D99735,\n 0xA969A7AA, 0xC50C06C2, 0x5A04ABFC, 0x800BCADC,\n 0x9E447A2E, 0xC3453484, 0xFDD56705, 0x0E1E9EC9,\n 0xDB73DBD3, 0x105588CD, 0x675FDA79, 0xE3674340,\n 0xC5C43465, 0x713E38D8, 0x3D28F89E, 0xF16DFF20,\n 0x153E21E7, 0x8FB03D4A, 0xE6E39F2B, 0xDB83ADF7 ],\n [ 0xE93D5A68, 0x948140F7, 0xF64C261C, 0x94692934,\n 0x411520F7, 0x7602D4F7, 0xBCF46B2E, 0xD4A20068,\n 0xD4082471, 0x3320F46A, 0x43B7D4B7, 0x500061AF,\n 0x1E39F62E, 0x97244546, 0x14214F74, 0xBF8B8840,\n 0x4D95FC1D, 0x96B591AF, 0x70F4DDD3, 0x66A02F45,\n 0xBFBC09EC, 0x03BD9785, 0x7FAC6DD0, 0x31CB8504,\n 0x96EB27B3, 0x55FD3941, 0xDA2547E6, 0xABCA0A9A,\n 0x28507825, 0x530429F4, 0x0A2C86DA, 0xE9B66DFB,\n 0x68DC1462, 0xD7486900, 0x680EC0A4, 0x27A18DEE,\n 0x4F3FFEA2, 0xE887AD8C, 0xB58CE006, 0x7AF4D6B6,\n 0xAACE1E7C, 0xD3375FEC, 0xCE78A399, 0x406B2A42,\n 0x20FE9E35, 0xD9F385B9, 0xEE39D7AB, 0x3B124E8B,\n 0x1DC9FAF7, 0x4B6D1856, 0x26A36631, 0xEAE397B2,\n 0x3A6EFA74, 0xDD5B4332, 0x6841E7F7, 0xCA7820FB,\n 0xFB0AF54E, 0xD8FEB397, 0x454056AC, 0xBA489527,\n 0x55533A3A, 0x20838D87, 0xFE6BA9B7, 0xD096954B,\n 0x55A867BC, 0xA1159A58, 0xCCA92963, 0x99E1DB33,\n 0xA62A4A56, 0x3F3125F9, 0x5EF47E1C, 0x9029317C,\n 0xFDF8E802, 0x04272F70, 0x80BB155C, 0x05282CE3,\n 0x95C11548, 0xE4C66D22, 0x48C1133F, 0xC70F86DC,\n 0x07F9C9EE, 0x41041F0F, 0x404779A4, 0x5D886E17,\n 0x325F51EB, 0xD59BC0D1, 0xF2BCC18F, 0x41113564,\n 0x257B7834, 0x602A9C60, 0xDFF8E8A3, 0x1F636C1B,\n 0x0E12B4C2, 0x02E1329E, 0xAF664FD1, 0xCAD18115,\n 0x6B2395E0, 0x333E92E1, 0x3B240B62, 0xEEBEB922,\n 0x85B2A20E, 0xE6BA0D99, 0xDE720C8C, 0x2DA2F728,\n 0xD0127845, 0x95B794FD, 0x647D0862, 0xE7CCF5F0,\n 0x5449A36F, 0x877D48FA, 0xC39DFD27, 0xF33E8D1E,\n 0x0A476341, 0x992EFF74, 0x3A6F6EAB, 0xF4F8FD37,\n 0xA812DC60, 0xA1EBDDF8, 0x991BE14C, 0xDB6E6B0D,\n 0xC67B5510, 0x6D672C37, 0x2765D43B, 0xDCD0E804,\n 0xF1290DC7, 0xCC00FFA3, 0xB5390F92, 0x690FED0B,\n 0x667B9FFB, 0xCEDB7D9C, 0xA091CF0B, 0xD9155EA3,\n 0xBB132F88, 0x515BAD24, 0x7B9479BF, 0x763BD6EB,\n 0x37392EB3, 0xCC115979, 0x8026E297, 0xF42E312D,\n 0x6842ADA7, 0xC66A2B3B, 0x12754CCC, 0x782EF11C,\n 0x6A124237, 0xB79251E7, 0x06A1BBE6, 0x4BFB6350,\n 0x1A6B1018, 0x11CAEDFA, 0x3D25BDD8, 0xE2E1C3C9,\n 0x44421659, 0x0A121386, 0xD90CEC6E, 0xD5ABEA2A,\n 0x64AF674E, 0xDA86A85F, 0xBEBFE988, 0x64E4C3FE,\n 0x9DBC8057, 0xF0F7C086, 0x60787BF8, 0x6003604D,\n 0xD1FD8346, 0xF6381FB0, 0x7745AE04, 0xD736FCCC,\n 0x83426B33, 0xF01EAB71, 0xB0804187, 0x3C005E5F,\n 0x77A057BE, 0xBDE8AE24, 0x55464299, 0xBF582E61,\n 0x4E58F48F, 0xF2DDFDA2, 0xF474EF38, 0x8789BDC2,\n 0x5366F9C3, 0xC8B38E74, 0xB475F255, 0x46FCD9B9,\n 0x7AEB2661, 0x8B1DDF84, 0x846A0E79, 0x915F95E2,\n 0x466E598E, 0x20B45770, 0x8CD55591, 0xC902DE4C,\n 0xB90BACE1, 0xBB8205D0, 0x11A86248, 0x7574A99E,\n 0xB77F19B6, 0xE0A9DC09, 0x662D09A1, 0xC4324633,\n 0xE85A1F02, 0x09F0BE8C, 0x4A99A025, 0x1D6EFE10,\n 0x1AB93D1D, 0x0BA5A4DF, 0xA186F20F, 0x2868F169,\n 0xDCB7DA83, 0x573906FE, 0xA1E2CE9B, 0x4FCD7F52,\n 0x50115E01, 0xA70683FA, 0xA002B5C4, 0x0DE6D027,\n 0x9AF88C27, 0x773F8641, 0xC3604C06, 0x61A806B5,\n 0xF0177A28, 0xC0F586E0, 0x006058AA, 0x30DC7D62,\n 0x11E69ED7, 0x2338EA63, 0x53C2DD94, 0xC2C21634,\n 0xBBCBEE56, 0x90BCB6DE, 0xEBFC7DA1, 0xCE591D76,\n 0x6F05E409, 0x4B7C0188, 0x39720A3D, 0x7C927C24,\n 0x86E3725F, 0x724D9DB9, 0x1AC15BB4, 0xD39EB8FC,\n 0xED545578, 0x08FCA5B5, 0xD83D7CD3, 0x4DAD0FC4,\n 0x1E50EF5E, 0xB161E6F8, 0xA28514D9, 0x6C51133C,\n 0x6FD5C7E7, 0x56E14EC4, 0x362ABFCE, 0xDDC6C837,\n 0xD79A3234, 0x92638212, 0x670EFA8E, 0x406000E0 ],\n [ 0x3A39CE37, 0xD3FAF5CF, 0xABC27737, 0x5AC52D1B,\n 0x5CB0679E, 0x4FA33742, 0xD3822740, 0x99BC9BBE,\n 0xD5118E9D, 0xBF0F7315, 0xD62D1C7E, 0xC700C47B,\n 0xB78C1B6B, 0x21A19045, 0xB26EB1BE, 0x6A366EB4,\n 0x5748AB2F, 0xBC946E79, 0xC6A376D2, 0x6549C2C8,\n 0x530FF8EE, 0x468DDE7D, 0xD5730A1D, 0x4CD04DC6,\n 0x2939BBDB, 0xA9BA4650, 0xAC9526E8, 0xBE5EE304,\n 0xA1FAD5F0, 0x6A2D519A, 0x63EF8CE2, 0x9A86EE22,\n 0xC089C2B8, 0x43242EF6, 0xA51E03AA, 0x9CF2D0A4,\n 0x83C061BA, 0x9BE96A4D, 0x8FE51550, 0xBA645BD6,\n 0x2826A2F9, 0xA73A3AE1, 0x4BA99586, 0xEF5562E9,\n 0xC72FEFD3, 0xF752F7DA, 0x3F046F69, 0x77FA0A59,\n 0x80E4A915, 0x87B08601, 0x9B09E6AD, 0x3B3EE593,\n 0xE990FD5A, 0x9E34D797, 0x2CF0B7D9, 0x022B8B51,\n 0x96D5AC3A, 0x017DA67D, 0xD1CF3ED6, 0x7C7D2D28,\n 0x1F9F25CF, 0xADF2B89B, 0x5AD6B472, 0x5A88F54C,\n 0xE029AC71, 0xE019A5E6, 0x47B0ACFD, 0xED93FA9B,\n 0xE8D3C48D, 0x283B57CC, 0xF8D56629, 0x79132E28,\n 0x785F0191, 0xED756055, 0xF7960E44, 0xE3D35E8C,\n 0x15056DD4, 0x88F46DBA, 0x03A16125, 0x0564F0BD,\n 0xC3EB9E15, 0x3C9057A2, 0x97271AEC, 0xA93A072A,\n 0x1B3F6D9B, 0x1E6321F5, 0xF59C66FB, 0x26DCF319,\n 0x7533D928, 0xB155FDF5, 0x03563482, 0x8ABA3CBB,\n 0x28517711, 0xC20AD9F8, 0xABCC5167, 0xCCAD925F,\n 0x4DE81751, 0x3830DC8E, 0x379D5862, 0x9320F991,\n 0xEA7A90C2, 0xFB3E7BCE, 0x5121CE64, 0x774FBE32,\n 0xA8B6E37E, 0xC3293D46, 0x48DE5369, 0x6413E680,\n 0xA2AE0810, 0xDD6DB224, 0x69852DFD, 0x09072166,\n 0xB39A460A, 0x6445C0DD, 0x586CDECF, 0x1C20C8AE,\n 0x5BBEF7DD, 0x1B588D40, 0xCCD2017F, 0x6BB4E3BB,\n 0xDDA26A7E, 0x3A59FF45, 0x3E350A44, 0xBCB4CDD5,\n 0x72EACEA8, 0xFA6484BB, 0x8D6612AE, 0xBF3C6F47,\n 0xD29BE463, 0x542F5D9E, 0xAEC2771B, 0xF64E6370,\n 0x740E0D8D, 0xE75B1357, 0xF8721671, 0xAF537D5D,\n 0x4040CB08, 0x4EB4E2CC, 0x34D2466A, 0x0115AF84,\n 0xE1B00428, 0x95983A1D, 0x06B89FB4, 0xCE6EA048,\n 0x6F3F3B82, 0x3520AB82, 0x011A1D4B, 0x277227F8,\n 0x611560B1, 0xE7933FDC, 0xBB3A792B, 0x344525BD,\n 0xA08839E1, 0x51CE794B, 0x2F32C9B7, 0xA01FBAC9,\n 0xE01CC87E, 0xBCC7D1F6, 0xCF0111C3, 0xA1E8AAC7,\n 0x1A908749, 0xD44FBD9A, 0xD0DADECB, 0xD50ADA38,\n 0x0339C32A, 0xC6913667, 0x8DF9317C, 0xE0B12B4F,\n 0xF79E59B7, 0x43F5BB3A, 0xF2D519FF, 0x27D9459C,\n 0xBF97222C, 0x15E6FC2A, 0x0F91FC71, 0x9B941525,\n 0xFAE59361, 0xCEB69CEB, 0xC2A86459, 0x12BAA8D1,\n 0xB6C1075E, 0xE3056A0C, 0x10D25065, 0xCB03A442,\n 0xE0EC6E0E, 0x1698DB3B, 0x4C98A0BE, 0x3278E964,\n 0x9F1F9532, 0xE0D392DF, 0xD3A0342B, 0x8971F21E,\n 0x1B0A7441, 0x4BA3348C, 0xC5BE7120, 0xC37632D8,\n 0xDF359F8D, 0x9B992F2E, 0xE60B6F47, 0x0FE3F11D,\n 0xE54CDA54, 0x1EDAD891, 0xCE6279CF, 0xCD3E7E6F,\n 0x1618B166, 0xFD2C1D05, 0x848FD2C5, 0xF6FB2299,\n 0xF523F357, 0xA6327623, 0x93A83531, 0x56CCCD02,\n 0xACF08162, 0x5A75EBB5, 0x6E163697, 0x88D273CC,\n 0xDE966292, 0x81B949D0, 0x4C50901B, 0x71C65614,\n 0xE6C6C7BD, 0x327A140A, 0x45E1D006, 0xC3F27B9A,\n 0xC9AA53FD, 0x62A80F00, 0xBB25BFE2, 0x35BDD2F6,\n 0x71126905, 0xB2040222, 0xB6CBCF7C, 0xCD769C2B,\n 0x53113EC0, 0x1640E3D3, 0x38ABBD60, 0x2547ADF0,\n 0xBA38209C, 0xF746CE76, 0x77AFA1C5, 0x20756060,\n 0x85CBFE4E, 0x8AE88DD8, 0x7AAAF9B0, 0x4CF9AA7E,\n 0x1948C25C, 0x02FB8A8C, 0x01C36AE4, 0xD6EBE1F9,\n 0x90D4F869, 0xA65CDEA0, 0x3F09252D, 0xC208E69F,\n 0xB74E6132, 0xCE77E25B, 0x578FDFE3, 0x3AC372E6 ]\n ];\n\n var BLOWFISH_CTX = {\n pbox: [],\n sbox: []\n }\n\n function F(ctx, x){\n let a = (x >> 24) & 0xFF;\n let b = (x >> 16) & 0xFF;\n let c = (x >> 8) & 0xFF;\n let d = x & 0xFF;\n\n let y = ctx.sbox[0][a] + ctx.sbox[1][b];\n y = y ^ ctx.sbox[2][c];\n y = y + ctx.sbox[3][d];\n\n return y;\n }\n\n function BlowFish_Encrypt(ctx, left, right){\n let Xl = left;\n let Xr = right;\n let temp;\n\n for(let i = 0; i < N; ++i){\n Xl = Xl ^ ctx.pbox[i];\n Xr = F(ctx, Xl) ^ Xr;\n\n temp = Xl;\n Xl = Xr;\n Xr = temp;\n }\n\n temp = Xl;\n Xl = Xr;\n Xr = temp;\n\n Xr = Xr ^ ctx.pbox[N];\n Xl = Xl ^ ctx.pbox[N + 1];\n\n return {left: Xl, right: Xr};\n }\n\n function BlowFish_Decrypt(ctx, left, right){\n let Xl = left;\n let Xr = right;\n let temp;\n\n for(let i = N + 1; i > 1; --i){\n Xl = Xl ^ ctx.pbox[i];\n Xr = F(ctx, Xl) ^ Xr;\n\n temp = Xl;\n Xl = Xr;\n Xr = temp;\n }\n\n temp = Xl;\n Xl = Xr;\n Xr = temp;\n\n Xr = Xr ^ ctx.pbox[1];\n Xl = Xl ^ ctx.pbox[0];\n\n return {left: Xl, right: Xr};\n }\n\n /**\n * Initialization ctx's pbox and sbox.\n *\n * @param {Object} ctx The object has pbox and sbox.\n * @param {Array} key An array of 32-bit words.\n * @param {int} keysize The length of the key.\n *\n * @example\n *\n * BlowFishInit(BLOWFISH_CTX, key, 128/32);\n */\n function BlowFishInit(ctx, key, keysize)\n {\n for(let Row = 0; Row < 4; Row++)\n {\n ctx.sbox[Row] = [];\n for(let Col = 0; Col < 256; Col++)\n {\n ctx.sbox[Row][Col] = ORIG_S[Row][Col];\n }\n }\n\n let keyIndex = 0;\n for(let index = 0; index < N + 2; index++)\n {\n ctx.pbox[index] = ORIG_P[index] ^ key[keyIndex];\n keyIndex++;\n if(keyIndex >= keysize)\n {\n keyIndex = 0;\n }\n }\n\n let Data1 = 0;\n let Data2 = 0;\n let res = 0;\n for(let i = 0; i < N + 2; i += 2)\n {\n res = BlowFish_Encrypt(ctx, Data1, Data2);\n Data1 = res.left;\n Data2 = res.right;\n ctx.pbox[i] = Data1;\n ctx.pbox[i + 1] = Data2;\n }\n\n for(let i = 0; i < 4; i++)\n {\n for(let j = 0; j < 256; j += 2)\n {\n res = BlowFish_Encrypt(ctx, Data1, Data2);\n Data1 = res.left;\n Data2 = res.right;\n ctx.sbox[i][j] = Data1;\n ctx.sbox[i][j + 1] = Data2;\n }\n }\n\n return true;\n }\n\n /**\n * Blowfish block cipher algorithm.\n */\n var Blowfish = C_algo.Blowfish = BlockCipher.extend({\n _doReset: function () {\n // Skip reset of nRounds has been set before and key did not change\n if (this._keyPriorReset === this._key) {\n return;\n }\n\n // Shortcuts\n var key = this._keyPriorReset = this._key;\n var keyWords = key.words;\n var keySize = key.sigBytes / 4;\n\n //Initialization pbox and sbox\n BlowFishInit(BLOWFISH_CTX, keyWords, keySize);\n },\n\n encryptBlock: function (M, offset) {\n var res = BlowFish_Encrypt(BLOWFISH_CTX, M[offset], M[offset + 1]);\n M[offset] = res.left;\n M[offset + 1] = res.right;\n },\n\n decryptBlock: function (M, offset) {\n var res = BlowFish_Decrypt(BLOWFISH_CTX, M[offset], M[offset + 1]);\n M[offset] = res.left;\n M[offset + 1] = res.right;\n },\n\n blockSize: 64/32,\n\n keySize: 128/32,\n\n ivSize: 64/32\n });\n\n /**\n * Shortcut functions to the cipher's object interface.\n *\n * @example\n *\n * var ciphertext = CryptoJS.Blowfish.encrypt(message, key, cfg);\n * var plaintext = CryptoJS.Blowfish.decrypt(ciphertext, key, cfg);\n */\n C.Blowfish = BlockCipher._createHelper(Blowfish);\n }());\n\n\n return CryptoJS;\n\n}));";
const usePreflight = (j) => {
let [I, q] = useState(j.defaultPreflight ?? null), Q = useCallback((I) => {
q(I), j.onPreflightChange?.(I);
}, [j]), p_ = useCallback(async (q, Q) => I?.enabled ? runIsolatedLabScript(I.script, j.envApi?.env ?? { variables: {} }, void 0, q, Q) : null, [I, j.envApi.env]), m_ = useCallback((Q) => {
q({
...I ?? {
script: "",
enabled: !0
},
lastTestResult: Q
}), j.onPreflightChange?.({
...I ?? {
script: "",
enabled: !0
},
lastTestResult: Q
});
}, [I, j]);
return {
preflight: I,
setPreflight: Q,
runPreflight: p_,
setLastTestResult: m_
};
};
async function runIsolatedLabScript(j, I, q, Q = [], p_ = {}) {
let m_ = Q.filter((j) => j.preflight?.lab?.object).map((j) => j.preflight?.lab?.object);
return new Promise((h_) => {
let g_ = new Blob([crypto_js_default.replace("}(this, function () {", "}(self, function () {"), `
const env = {
variables: ${JSON.stringify(I?.variables)} || {},
};
let promptResolve = null;
self.onmessage = async (event) => {
if (event.data.type === 'prompt:result') {
promptResolve?.(event.data.value || null);
}
if (event.data.type === 'init') {
try {
self.console = {
log: (...args) => {
self.postMessage({ type: 'log', level: 'log', message: args });
},
warn: (...args) => {
self.postMessage({ type: 'log', level: 'warn', message: args });
},
error: (...args) => {
self.postMessage({ type: 'log', level: 'error', message: args });
},
info: (...args) => {
self.postMessage({ type: 'log', level: 'info', message: args });
},
};
let state = ${JSON.stringify(p_)};
const setState = (id, newState) => {
Object.assign(state[id] ?? {}, newState);
};
const lab = Object.freeze({
environment: {
get: (key) => env.variables[key],
set: (key, value) => {
env.variables[key] = value;
},
delete: (key) => {
delete env.variables[key];
}
},
request: {
headers: new Headers()
},
prompt: (placeholder, defaultValue) => {
return new Promise((resolve) => {
promptResolve = resolve;
self.postMessage({ type: 'prompt', placeholder, defaultValue });
});
},
plugins: {
${m_.map((j) => j?.toString()).map((j) => j?.startsWith("object") ? `function${j.slice(6)}` : j).map((j, I) => `
...(${j})(${JSON.stringify(Q[I].preflight?.lab?.props ?? {})}, state['${Q[I].id}'] ?? {}, (newState) => setState('${Q[I].id}', newState))
`).join(",")}
}
});
// Make CryptoJS available globally in the script context
const AsyncFunction = async function () {}.constructor;
await new AsyncFunction('lab', 'CryptoJS', 'with(lab){' + event.data.script + '}')(lab, CryptoJS);
self.postMessage({ type: 'result', env: env, headers: Object.fromEntries(lab.request.headers.entries()), pluginsState: state });
} catch (err) {
self.console.error(err);
self.postMessage({ type: 'result', error: err.message || String(err) });
}
}
};
`], { type: "application/javascript" }), __ = [], v_ = {}, y_ = new Worker(URL.createObjectURL(g_), { type: "module" });
y_.onmessage = ({ data: j }) => {
j.type === "result" ? (y_.terminate(), j.error ? h_({
status: "error",
error: j.error,
logs: __,
env: I,
headers: j.headers,
pluginsState: j.pluginsState
}) : (Object.keys(j.headers).length > 0 && __.push({
level: "system",
message: [`Headers:\n${JSON.stringify(j.headers, null, 2)}`],
createdAt: (/* @__PURE__ */ new Date()).toISOString()
}), h_({
status: "success",
logs: __,
env: j.env,
headers: j.headers,
pluginsState: j.pluginsState
}))) : j.type === "log" ? j.level === "log" ? __.push({
level: "log",
message: j.message,
createdAt: (/* @__PURE__ */ new Date()).toISOString()
}) : j.level === "warn" ? __.push({
level: "warn",
message: j.message,
createdAt: (/* @__PURE__ */ new Date()).toISOString()
}) : j.level === "error" ? __.push({
level: "error",
message: j.message,
createdAt: (/* @__PURE__ */ new Date()).toISOString()
}) : j.level === "info" && __.push({
level: "info",
message: j.message,
createdAt: (/* @__PURE__ */ new Date()).toISOString()
}) : j.type === "header" ? (v_[j.name] = j.value, __.push({
level: "system",
message: [`Header ${j.name} set to ${j.value}`],
createdAt: (/* @__PURE__ */ new Date()).toISOString()
})) : j.type === "prompt" && q?.(j.placeholder, j.defaultValue).then((j) => {
y_.postMessage({
type: "prompt:result",
value: j
});
});
}, y_.onerror = (j) => {
h_({
status: "error",
error: j.message,
logs: __,
env: I,
headers: {},
pluginsState: p_
});
}, y_.postMessage({
type: "init",
script: j
});
});
}
const useSettings = (j) => {
let [I, q] = useState(j.defaultSettings ?? { fetch: { credentials: "same-origin" } }), Q = useCallback((I) => {
q(I), j.onSettingsChange?.(I);
}, [j]);
return {
settings: I,
setSettings: Q
};
}, useTabs = (j) => {
let [I, q] = useState(j.defaultTabs ?? []), [Q, p_] = useState(j.defaultTabs?.find((I) => I.id === j.defaultActiveTabId) ?? j.defaultTabs?.[0] ?? null), m_ = useCallback((I) => {
p_(I), j.onActiveTabIdChange?.(I?.id ?? null);
}, [j]), h_ = useCallback((I) => {
q(I), j.onTabsChange?.(I);
}, [j]), g_ = useCallback((Q) => {
let p_ = {
...Q,
id: v4_default()
}, m_ = [...I ?? [], p_];
return q(m_), j.onTabsChange?.(m_), p_;
}, [I, j]), __ = useCallback((Q) => {
let p_ = I.filter((j) => j.id !== Q);
q(p_), j.onTabsChange?.(p_);
}, [I, j]), v_ = useCallback((Q, p_) => {
let m_ = I.map((j) => j.id === Q ? {
...j,
data: p_
} : j);
q(m_), j.onTabsChange?.(m_);
}, [I, j]);
return {
activeTab: Q,
setActiveTab: m_,
tabs: I,
setTabs: h_,
addTab: g_,
deleteTab: __,
updateTab: v_
};
}, useTests = (j) => {
let [I, q] = useState(j.defaultTests ?? []), Q = useRef(I);
useEffect(() => {
Q.current = I;
}, [I]);
let p_ = useCallback((Q) => {
let p_ = {
...Q,
id: v4_default(),
createdAt: (/* @__PURE__ */ new Date()).toISOString(),
tasks: []
}, m_ = [...I, p_];
return q(m_), j.onTestsChange?.(m_), p_;
}, [I, j]), m_ = useCallback((I) => {
let p_ = Q.current.filter((j) => j.id !== I);
q(p_), j.onTestsChange?.(p_);
}, [j]), h_ = useCallback((I, p_) => {
let m_ = {
...p_,
id: crypto.randomUUID(),
next: null
}, h_ = Q.current.map((j) => j.id === I ? {
...j,
tasks: [...j.tasks, m_]
} : j);
q(h_), j.onTestsChange?.(h_);
}, [j]), g_ = useCallback((I, p_) => {
let m_ = Q.current.map((j) => j.id === I ? {
...j,
tasks: j.tasks.filter((j) => j.id !== p_)
} : j);
q(m_), j.onTestsChange?.(m_);
}, [j]);
return {
tests: I,
addTest: p_,
deleteTest: m_,
addTaskToTest: h_,
deleteTaskFromTest: g_
};
};
function r$2(j) {
var I, q, Q = "";
if (typeof j == "string" || typeof j == "number") Q += j;
else if (typeof j == "object") if (Array.isArray(j)) {
var p_ = j.length;
for (I = 0; I < p_; I++) j[I] && (q = r$2(j[I])) && (Q && (Q += " "), Q += q);
} else for (q in j) j[q] && (Q && (Q += " "), Q += q);
return Q;
}
function clsx() {
for (var j, I, q = 0, Q = "", p_ = arguments.length; q < p_; q++) (j = arguments[q]) && (I = r$2(j)) && (Q && (Q += " "), Q += I);
return Q;
}
var concatArrays = (j, I) => {
let q = Array(j.length + I.length);
for (let I = 0; I < j.length; I++) q[I] = j[I];
for (let Q = 0; Q < I.length; Q++) q[j.length + Q] = I[Q];
return q;
}, createClassValidatorObject = (j, I) => ({
classGroupId: j,
validator: I
}), createClassPartObject = (j = /* @__PURE__ */ new Map(), I = null, q) => ({
nextPart: j,
validators: I,
classGroupId: q
}), CLASS_PART_SEPARATOR = "-", EMPTY_CONFLICTS = [], ARBITRARY_PROPERTY_PREFIX = "arbitrary..", createClassGroupUtils = (j) => {
let I = createClassMap(j), { conflictingClassGroups: q, conflictingClassGroupModifiers: Q } = j;
return {
getClassGroupId: (j) => {
if (j.startsWith("[") && j.endsWith("]")) return getGroupIdForArbitraryProperty(j);
let q = j.split(CLASS_PART_SEPARATOR), Q = q[0] === "" && q.length > 1 ? 1 : 0;
return getGroupRecursive(q, Q, I);
},
getConflictingClassGroupIds: (j, I) => {
if (I) {
let I = Q[j], p_ = q[j];
return I ? p_ ? concatArrays(p_, I) : I : p_ || EMPTY_CONFLICTS;
}
return q[j] || EMPTY_CONFLICTS;
}
};
}, getGroupRecursive = (j, I, q) => {
if (j.length - I === 0) return q.classGroupId;
let Q = j[I], p_ = q.nextPart.get(Q);
if (p_) {
let q = getGroupRecursive(j, I + 1, p_);
if (q) return q;
}
let m_ = q.validators;
if (m_ === null) return;
let h_ = I === 0 ? j.join(CLASS_PART_SEPARATOR) : j.slice(I).join(CLASS_PART_SEPARATOR), g_ = m_.length;
for (let j = 0; j < g_; j++) {
let I = m_[j];
if (I.validator(h_)) return I.classGroupId;
}
}, getGroupIdForArbitraryProperty = (j) => j.slice(1, -1).indexOf(":") === -1 ? void 0 : (() => {
let I = j.slice(1, -1), q = I.indexOf(":"), Q = I.slice(0, q);
return Q ? ARBITRARY_PROPERTY_PREFIX + Q : void 0;
})(), createClassMap = (j) => {
let { theme: I, classGroups: q } = j;
return processClassGroups(q, I);
}, processClassGroups = (j, I) => {
let q = createClassPartObject();
for (let Q in j) {
let p_ = j[Q];
processClassesRecursively(p_, q, Q, I);
}
return q;
}, processClassesRecursively = (j, I, q, Q) => {
let p_ = j.length;
for (let m_ = 0; m_ < p_; m_++) {
let p_ = j[m_];
processClassDefinition(p_, I, q, Q);
}
}, processClassDefinition = (j, I, q, Q) => {
if (typeof j == "string") {
processStringDefinition(j, I, q);
return;
}
if (typeof j == "function") {
processFunctionDefinition(j, I, q, Q);
return;
}
processObjectDefinition(j, I, q, Q);
}, processStringDefinition = (j, I, q) => {
let Q = j === "" ? I : getPart(I, j);
Q.classGroupId = q;
}, processFunctionDefinition = (j, I, q, Q) => {
if (isThemeGetter(j)) {
processClassesRecursively(j(Q), I, q, Q);
return;
}
I.validators === null && (I.validators = []), I.validators.push(createClassValidatorObject(q, j));
}, processObjectDefinition = (j, I, q, Q) => {
let p_ = Object.entries(j), m_ = p_.length;
for (let j = 0; j < m_; j++) {
let [m_, h_] = p_[j];
processClassesRecursively(h_, getPart(I, m_), q, Q);
}
}, getPart = (j, I) => {
let q = j, Q = I.split(CLASS_PART_SEPARATOR), p_ = Q.length;
for (let j = 0; j < p_; j++) {
let I = Q[j], p_ = q.nextPart.get(I);
p_ || (p_ = createClassPartObject(), q.nextPart.set(I, p_)), q = p_;
}
return q;
}, isThemeGetter = (j) => "isThemeGetter" in j && j.isThemeGetter === !0, createLruCache = (j) => {
if (j < 1) return {
get: () => void 0,
set: () => {}
};
let I = 0, q = Object.create(null), Q = Object.create(null), p_ = (p_, m_) => {
q[p_] = m_, I++, I > j && (I = 0, Q = q, q = Object.create(null));
};
return {
get(j) {
let I = q[j];
if (I !== void 0) return I;
if ((I = Q[j]) !== void 0) return p_(j, I), I;
},
set(j, I) {
j in q ? q[j] = I : p_(j, I);
}
};
}, IMPORTANT_MODIFIER = "!", MODIFIER_SEPARATOR = ":", EMPTY_MODIFIERS = [], createResultObject = (j, I, q, Q, p_) => ({
modifiers: j,
hasImportantModifier: I,
baseClassName: q,
maybePostfixModifierPosition: Q,
isExternal: p_
}), createParseClassName = (j) => {
let { prefix: I, experimentalParseClassName: q } = j, Q = (j) => {
let I = [], q = 0, Q = 0, p_ = 0, m_, h_ = j.length;
for (let g_ = 0; g_ < h_; g_++) {
let h_ = j[g_];
if (q === 0 && Q === 0) {
if (h_ === MODIFIER_SEPARATOR) {
I.push(j.slice(p_, g_)), p_ = g_ + 1;
continue;
}
if (h_ === "/") {
m_ = g_;
continue;
}
}
h_ === "[" ? q++ : h_ === "]" ? q-- : h_ === "(" ? Q++ : h_ === ")" && Q--;
}
let g_ = I.length === 0 ? j : j.slice(p_), __ = g_, v_ = !1;
g_.endsWith(IMPORTANT_MODIFIER) ? (__ = g_.slice(0, -1), v_ = !0) : g_.startsWith(IMPORTANT_MODIFIER) && (__ = g_.slice(1), v_ = !0);
let y_ = m_ && m_ > p_ ? m_ - p_ : void 0;
return createResultObject(I, v_, __, y_);
};
if (I) {
let j = I + MODIFIER_SEPARATOR, q = Q;
Q = (I) => I.startsWith(j) ? q(I.slice(j.length)) : createResultObject(EMPTY_MODIFIERS, !1, I, void 0, !0);
}
if (q) {
let j = Q;
Q = (I) => q({
className: I,
parseClassName: j
});
}
return Q;
}, createSortModifiers = (j) => {
let I = /* @__PURE__ */ new Map();
return j.orderSensitiveModifiers.forEach((j, q) => {
I.set(j, 1e6 + q);
}), (j) => {
let q = [], Q = [];
for (let p_ = 0; p_ < j.length; p_++) {
let m_ = j[p_], h_ = m_[0] === "[", g_ = I.has(m_);
h_ || g_ ? (Q.length > 0 && (Q.sort(), q.push(...Q), Q = []), q.push(m_)) : Q.push(m_);
}
return Q.length > 0 && (Q.sort(), q.push(...Q)), q;
};
}, createConfigUtils = (j) => ({
cache: createLruCache(j.cacheSize),
parseClassName: createParseClassName(j),
sortModifiers: createSortModifiers(j),
...createClassGroupUtils(j)
}), SPLIT_CLASSES_REGEX = /\s+/, mergeClassList = (j, I) => {
let { parseClassName: q, getClassGroupId: Q, getConflictingClassGroupIds: p_, sortModifiers: m_ } = I, h_ = [], g_ = j.trim().split(SPLIT_CLASSES_REGEX), __ = "";
for (let j = g_.length - 1; j >= 0; --j) {
let I = g_[j], { isExternal: v_, modifiers: y_, hasImportantModifier: b_, baseClassName: x_, maybePostfixModifierPosition: S_ } = q(I);
if (v_) {
__ = I + (__.length > 0 ? " " + __ : __);
continue;
}
let C_ = !!S_, w_ = Q(C_ ? x_.substring(0, S_) : x_);
if (!w_) {
if (!C_) {
__ = I + (__.length > 0 ? " " + __ : __);
continue;
}
if (w_ = Q(x_), !w_) {
__ = I + (__.length > 0 ? " " + __ : __);
continue;
}
C_ = !1;
}
let T_ = y_.length === 0 ? "" : y_.length === 1 ? y_[0] : m_(y_).join(":"), E_ = b_ ? T_ + IMPORTANT_MODIFIER : T_, D_ = E_ + w_;
if (h_.indexOf(D_) > -1) continue;
h_.push(D_);
let O_ = p_(w_, C_);
for (let j = 0; j < O_.length; ++j) {
let I = O_[j];
h_.push(E_ + I);
}
__ = I + (__.length > 0 ? " " + __ : __);
}
return __;
}, twJoin = (...j) => {
let I = 0, q, Q, p_ = "";
for (; I < j.length;) (q = j[I++]) && (Q = toValue(q)) && (p_ && (p_ += " "), p_ += Q);
return p_;
}, toValue = (j) => {
if (typeof j == "string") return j;
let I, q = "";
for (let Q = 0; Q < j.length; Q++) j[Q] && (I = toValue(j[Q])) && (q && (q += " "), q += I);
return q;
}, createTailwindMerge = (j, ...I) => {
let q, Q, p_, m_, h_ = (h_) => {
let __ = I.reduce((j, I) => I(j), j());
return q = createConfigUtils(__), Q = q.cache.get, p_ = q.cache.set, m_ = g_, g_(h_);
}, g_ = (j) => {
let I = Q(j);
if (I) return I;
let m_ = mergeClassList(j, q);
return p_(j, m_), m_;
};
return m_ = h_, (...j) => m_(twJoin(...j));
}, fallbackThemeArr = [], fromTheme = (j) => {
let I = (I) => I[j] || fallbackThemeArr;
return I.isThemeGetter = !0, I;
}, arbitraryValueRegex = /^\[(?:(\w[\w-]*):)?(.+)\]$/i, arbitraryVariableRegex = /^\((?:(\w[\w-]*):)?(.+)\)$/i, fractionRegex = /^\d+\/\d+$/, tshirtUnitRegex = /^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/, lengthUnitRegex = /\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/, colorFunctionRegex = /^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/, shadowRegex = /^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/, imageRegex = /^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/, isFraction = (j) => fractionRegex.test(j), isNumber = (j) => !!j && !Number.isNaN(Number(j)), isInteger = (j) => !!j && Number.isInteger(Number(j)), isPercent = (j) => j.endsWith("%") && isNumber(j.slice(0, -1)), isTshirtSize = (j) => tshirtUnitRegex.test(j), isAny = () => !0, isLengthOnly = (j) => lengthUnitRegex.test(j) && !colorFunctionRegex.test(j), isNever = () => !1, isShadow = (j) => shadowRegex.test(j), isImage = (j) => imageRegex.test(j), isAnyNonArbitrary = (j) => !isArbitraryValue(j) && !isArbitraryVariable(j), isArbitrarySize = (j) => getIsArbitraryValue(j, isLabelSize, isNever), isArbitraryValue = (j) => arbitraryValueRegex.test(j), isArbitraryLength = (j) => getIsArbitraryValue(j, isLabelLength, isLengthOnly), isArbitraryNumber = (j) => getIsArbitraryValue(j, isLabelNumber, isNumber), isArbitraryPosition = (j) => getIsArbitraryValue(j, isLabelPosition, isNever), isArbitraryImage = (j) => getIsArbitraryValue(j, isLabelImage, isImage), isArbitraryShadow = (j) => getIsArbitraryValue(j, isLabelShadow, isShadow), isArbitraryVariable = (j) => arbitraryVariableRegex.test(j), isArbitraryVariableLength = (j) => getIsArbitraryVariable(j, isLabelLength), isArbitraryVariableFamilyName = (j) => getIsArbitraryVariable(j, isLabelFamilyName), isArbitraryVariablePosition = (j) => getIsArbitraryVariable(j, isLabelPosition), isArbitraryVariableSize = (j) => getIsArbitraryVariable(j, isLabelSize), isArbitraryVariableImage = (j) => getIsArbitraryVariable(j, isLabelImage), isArbitraryVariableShadow = (j) => getIsArbitraryVariable(j, isLabelShadow, !0), getIsArbitraryValue = (j, I, q) => {
let Q = arbitraryValueRegex.exec(j);
return Q ? Q[1] ? I(Q[1]) : q(Q[2]) : !1;
}, getIsArbitraryVariable = (j, I, q = !1) => {
let Q = arbitraryVariableRegex.exec(j);
return Q ? Q[1] ? I(Q[1]) : q : !1;
}, isLabelPosition = (j) => j === "position" || j === "percentage", isLabelImage = (j) => j === "image" || j === "url", isLabelSize = (j) => j === "length" || j === "size" || j === "bg-size", isLabelLength = (j) => j === "length", isLabelNumber = (j) => j === "number", isLabelFamilyName = (j) => j === "family-name", isLabelShadow = (j) => j === "shadow", twMerge = /* @__PURE__ */ createTailwindMerge(() => {
let j = fromTheme("color"), I = fromTheme("font"), q = fromTheme("text"), Q = fromTheme("font-weight"), p_ = fromTheme("tracking"), m_ = fromTheme("leading"), h_ = fromTheme("breakpoint"), g_ = fromTheme("container"), __ = fromTheme("spacing"), v_ = fromTheme("radius"), y_ = fromTheme("shadow"), b_ = fromTheme("inset-shadow"), x_ = fromTheme("text-shadow"), S_ = fromTheme("drop-shadow"), C_ = fromTheme("blur"), w_ = fromTheme("perspective"), T_ = fromTheme("aspect"), E_ = fromTheme("ease"), D_ = fromTheme("animate"), O_ = () => [
"auto",
"avoid",
"all",
"avoid-page",
"page",
"left",
"right",
"column"
], k_ = () => [
"center",
"top",
"bottom",
"left",
"right",
"top-left",
"left-top",
"top-right",
"right-top",
"bottom-right",
"right-bottom",
"bottom-left",
"left-bottom"
], A_ = () => [
...k_(),
isArbitraryVariable,
isArbitraryValue
], j_ = () => [
"auto",
"hidden",
"clip",
"visible",
"scroll"
], M_ = () => [
"auto",
"contain",
"none"
], N_ = () => [
isArbitraryVariable,
isArbitraryValue,
__
], P_ = () => [
isFraction,
"full",
"auto",
...N_()
], F_ = () => [
isInteger,
"none",
"subgrid",
isArbitraryVariable,
isArbitraryValue
], I_ = () => [
"auto",
{ span: [
"full",
isInteger,
isArbitraryVariable,
isArbitraryValue
] },
isInteger,
isArbitraryVariable,
isArbitraryValue
], L_ = () => [
isInteger,
"auto",
isArbitraryVariable,
isArbitraryValue
], R_ = () => [
"auto",
"min",
"max",
"fr",
isArbitraryVariable,
isArbitraryValue
], z_ = () => [
"start",
"end",
"center",
"between",
"around",
"evenly",
"stretch",
"baseline",
"center-safe",
"end-safe"
], B_ = () => [
"start",
"end",
"center",
"stretch",
"center-safe",
"end-safe"
], V_ = () => ["auto", ...N_()], H_ = () => [
isFraction,
"auto",
"full",
"dvw",
"dvh",
"lvw",
"lvh",
"svw",
"svh",
"min",
"max",
"fit",
...N_()
], U_ = () => [
j,
isArbitraryVariable,
isArbitraryValue
], W_ = () => [
...k_(),
isArbitraryVariablePosition,
isArbitraryPosition,
{ position: [isArbitraryVariable, isArbitraryValue] }
], G_ = () => ["no-repeat", { repeat: [
"",
"x",
"y",
"space",
"round"
] }], K_ = () => [
"auto",
"cover",
"contain",
isArbitraryVariableSize,
isArbitrarySize,
{ size: [isArbitraryVariable, isArbitraryValue] }
], q_ = () => [
isPercent,
isArbitraryVariableLength,
isArbitraryLength
], J_ = () => [
"",
"none",
"full",
v_,
isArbitraryVariable,
isArbitraryValue
], Y_ = () => [
"",
isNumber,
isArbitraryVariableLength,
isArbitraryLength
], X_ = () => [
"solid",
"dashed",
"dotted",
"double"
], Z_ = () => [
"normal",
"multiply",
"screen",
"overlay",
"darken",
"lighten",
"color-dodge",
"color-burn",
"hard-light",
"soft-light",
"difference",
"exclusion",
"hue",
"saturation",
"color",
"luminosity"
], Q_ = () => [
isNumber,
isPercent,
isArbitraryVariablePosition,
isArbitraryPosition
], $_ = () => [
"",
"none",
C_,
isArbitraryVariable,
isArbitraryValue
], ev = () => [
"none",
isNumber,
isArbitraryVariable,
isArbitraryValue
], tv = () => [
"none",
isNumber,
isArbitraryVariable,
isArbitraryValue
], nv = () => [
isNumber,
isArbitraryVariable,
isArbitraryValue
], rv = () => [
isFraction,
"full",
...N_()
];
return {
cacheSize: 500,
theme: {
animate: [
"spin",
"ping",
"pulse",
"bounce"
],
aspect: ["video"],
blur: [isTshirtSize],
breakpoint: [isTshirtSize],
color: [isAny],
container: [isTshirtSize],
"drop-shadow": [isTshirtSize],
ease: [
"in",
"out",
"in-out"
],
font: [isAnyNonArbitrary],
"font-weight": [
"thin",
"extralight",
"light",
"normal",
"medium",
"semibold",
"bold",
"extrabold",
"black"
],
"inset-shadow": [isTshirtSize],
leading: [
"none",
"tight",
"snug",
"normal",
"relaxed",
"loose"
],
perspective: [
"dramatic",
"near",
"normal",
"midrange",
"distant",
"none"
],
radius: [isTshirtSize],
shadow: [isTshirtSize],
spacing: ["px", isNumber],
text: [isTshirtSize],
"text-shadow": [isTshirtSize],
tracking: [
"tighter",
"tight",
"normal",
"wide",
"wider",
"widest"
]
},
classGroups: {
aspect: [{ aspect: [
"auto",
"square",
isFraction,
isArbitraryValue,
isArbitraryVariable,
T_
] }],
container: ["container"],
columns: [{ columns: [
isNumber,
isArbitraryValue,
isArbitraryVariable,
g_
] }],
"break-after": [{ "break-after": O_() }],
"break-before": [{ "break-before": O_() }],
"break-inside": [{ "break-inside": [
"auto",
"avoid",
"avoid-page",
"avoid-column"
] }],
"box-decoration": [{ "box-decoration": ["slice", "clone"] }],
box: [{ box: ["border", "content"] }],
display: [
"block",
"inline-block",
"inline",
"flex",
"inline-flex",
"table",
"inline-table",
"table-caption",
"table-cell",
"table-column",
"table-column-group",
"table-footer-group",
"table-header-group",
"table-row-group",
"table-row",
"flow-root",
"grid",
"inline-grid",
"contents",
"list-item",
"hidden"
],
sr: ["sr-only", "not-sr-only"],
float: [{ float: [
"right",
"left",
"none",
"start",
"end"
] }],
clear: [{ clear: [
"left",
"right",
"both",
"none",
"start",
"end"
] }],
isolation: ["isolate", "isolation-auto"],
"object-fit": [{ object: [
"contain",
"cover",
"fill",
"none",
"scale-down"
] }],
"object-position": [{ object: A_() }],
overflow: [{ overflow: j_() }],
"overflow-x": [{ "overflow-x": j_() }],
"overflow-y": [{ "overflow-y": j_() }],
overscroll: [{ overscroll: M_() }],
"overscroll-x": [{ "overscroll-x": M_() }],
"overscroll-y": [{ "overscroll-y": M_() }],
position: [
"static",
"fixed",
"absolute",
"relative",
"sticky"
],
inset: [{ inset: P_() }],
"inset-x": [{ "inset-x": P_() }],
"inset-y": [{ "inset-y": P_() }],
start: [{ start: P_() }],
end: [{ end: P_() }],
top: [{ top: P_() }],
right: [{ right: P_() }],
bottom: [{ bottom: P_() }],
left: [{ left: P_() }],
visibility: [
"visible",
"invisible",
"collapse"
],
z: [{ z: [
isInteger,
"auto",
isArbitraryVariable,
isArbitraryValue
] }],
basis: [{ basis: [
isFraction,
"full",
"auto",
g_,
...N_()
] }],
"flex-direction": [{ flex: [
"row",
"row-reverse",
"col",
"col-reverse"
] }],
"flex-wrap": [{ flex: [
"nowrap",
"wrap",
"wrap-reverse"
] }],
flex: [{ flex: [
isNumber,
isFraction,
"auto",
"initial",
"none",
isArbitraryValue
] }],
grow: [{ grow: [
"",
isNumber,
isArbitraryVariable,
isArbitraryValue
] }],
shrink: [{ shrink: [
"",
isNumber,
isArbitraryVariable,
isArbitraryValue
] }],
order: [{ order: [
isInteger,
"first",
"last",
"none",
isArbitraryVariable,
isArbitraryValue
] }],
"grid-cols": [{ "grid-cols": F_() }],
"col-start-end": [{ col: I_() }],
"col-start": [{ "col-start": L_() }],
"col-end": [{ "col-end": L_() }],
"grid-rows": [{ "grid-rows": F_() }],
"row-start-end": [{ row: I_() }],
"row-start": [{ "row-start": L_() }],
"row-end": [{ "row-end": L_() }],
"grid-flow": [{ "grid-flow": [
"row",
"col",
"dense",
"row-dense",
"col-dense"
] }],
"auto-cols": [{ "auto-cols": R_() }],
"auto-rows": [{ "auto-rows": R_() }],
gap: [{ gap: N_() }],
"gap-x": [{ "gap-x": N_() }],
"gap-y": [{ "gap-y": N_() }],
"justify-content": [{ justify: [...z_(), "normal"] }],
"justify-items": [{ "justify-items": [...B_(), "normal"] }],
"justify-self": [{ "justify-self": ["auto", ...B_()] }],
"align-content": [{ content: ["normal", ...z_()] }],
"align-items": [{ items: [...B_(), { baseline: ["", "last"] }] }],
"align-self": [{ self: [
"auto",
...B_(),
{ baseline: ["", "last"] }
] }],
"place-content": [{ "place-content": z_() }],
"place-items": [{ "place-items": [...B_(), "baseline"] }],
"place-self": [{ "place-self": ["auto", ...B_()] }],
p: [{ p: N_() }],
px: [{ px: N_() }],
py: [{ py: N_() }],
ps: [{ ps: N_() }],
pe: [{ pe: N_() }],
pt: [{ pt: N_() }],
pr: [{ pr: N_() }],
pb: [{ pb: N_() }],
pl: [{ pl: N_() }],
m: [{ m: V_() }],
mx: [{ mx: V_() }],
my: [{ my: V_() }],
ms: [{ ms: V_() }],
me: [{ me: V_() }],
mt: [{ mt: V_() }],
mr: [{ mr: V_() }],
mb: [{ mb: V_() }],
ml: [{ ml: V_() }],
"space-x": [{ "space-x": N_() }],
"space-x-reverse": ["space-x-reverse"],
"space-y": [{ "space-y": N_() }],
"space-y-reverse": ["space-y-reverse"],
size: [{ size: H_() }],
w: [{ w: [
g_,
"screen",
...H_()
] }],
"min-w": [{ "min-w": [
g_,
"screen",
"none",
...H_()
] }],
"max-w": [{ "max-w": [
g_,
"screen",
"none",
"prose",
{ screen: [h_] },
...H_()
] }],
h: [{ h: [
"screen",
"lh",
...H_()
] }],
"min-h": [{ "min-h": [
"screen",
"lh",
"none",
...H_()
] }],
"max-h": [{ "max-h": [
"screen",
"lh",
...H_()
] }],
"font-size": [{ text: [
"base",
q,
isArbitraryVariableLength,
isArbitraryLength
] }],
"font-smoothing": ["antialiased", "subpixel-antialiased"],
"font-style": ["italic", "not-italic"],
"font-weight": [{ font: [
Q,
isArbitraryVariable,
isArbitraryNumber
] }],
"font-stretch": [{ "font-stretch": [
"ultra-condensed",
"extra-condensed",
"condensed",
"semi-condensed",
"normal",
"semi-expanded",
"expanded",
"extra-expanded",
"ultra-expanded",
isPercent,
isArbitraryValue
] }],
"font-family": [{ font: [
isArbitraryVariableFamilyName,
isArbitraryValue,
I
] }],
"fvn-normal": ["normal-nums"],
"fvn-ordinal": ["ordinal"],
"fvn-slashed-zero": ["slashed-zero"],
"fvn-figure": ["lining-nums", "oldstyle-nums"],
"fvn-spacing": ["proportional-nums", "tabular-nums"],
"fvn-fraction": ["diagonal-fractions", "stacked-fractions"],
tracking: [{ tracking: [
p_,
isArbitraryVariable,
isArbitraryValue
] }],
"line-clamp": [{ "line-clamp": [
isNumber,
"none",
isArbitraryVariable,
isArbitraryNumber
] }],
leading: [{ leading: [m_, ...N_()] }],
"list-image": [{ "list-image": [
"none",
isArbitraryVariable,
isArbitraryValue
] }],
"list-style-position": [{ list: ["inside", "outside"] }],
"list-style-type": [{ list: [
"disc",
"decimal",
"none",
isArbitraryVariable,
isArbitraryValue
] }],
"text-alignment": [{ text: [
"left",
"center",
"right",
"justify",
"start",
"end"
] }],
"placeholder-color": [{ placeholder: U_() }],
"text-color": [{ text: U_() }],
"text-decoration": [
"underline",
"overline",
"line-through",
"no-underline"
],
"text-decoration-style": [{ decoration: [...X_(), "wavy"] }],
"text-decoration-thickness": [{ decoration: [
isNumber,
"from-font",
"auto",
isArbitraryVariable,
isArbitraryLength
] }],
"text-decoration-color": [{ decoration: U_() }],
"underline-offset": [{ "underline-offset": [
isNumber,
"auto",
isArbitraryVariable,
isArbitraryValue
] }],
"text-transform": [
"uppercase",
"lowercase",
"capitalize",
"normal-case"
],
"text-overflow": [
"truncate",
"text-ellipsis",
"text-clip"
],
"text-wrap": [{ text: [
"wrap",
"nowrap",
"balance",
"pretty"
] }],
indent: [{ indent: N_() }],
"vertical-align": [{ align: [
"baseline",
"top",
"middle",
"bottom",
"text-top",
"text-bottom",
"sub",
"super",
isArbitraryVariable,
isArbitraryValue
] }],
whitespace: [{ whitespace: [
"normal",
"nowrap",
"pre",
"pre-line",
"pre-wrap",
"break-spaces"
] }],
break: [{ break: [
"normal",
"words",
"all",
"keep"
] }],
wrap: [{ wrap: [
"break-word",
"anywhere",
"normal"
] }],
hyphens: [{ hyphens: [
"none",
"manual",
"auto"
] }],
content: [{ content: [
"none",
isArbitraryVariable,
isArbitraryValue
] }],
"bg-attachment": [{ bg: [
"fixed",
"local",
"scroll"
] }],
"bg-clip": [{ "bg-clip": [
"border",
"padding",
"content",
"text"
] }],
"bg-origin": [{ "bg-origin": [
"border",
"padding",
"content"
] }],
"bg-position": [{ bg: W_() }],
"bg-repeat": [{ bg: G_() }],
"bg-size": [{ bg: K_() }],
"bg-image": [{ bg: [
"none",
{
linear: [
{ to: [
"t",
"tr",
"r",
"br",
"b",
"bl",
"l",
"tl"
] },
isInteger,
isArbitraryVariable,
isArbitraryValue
],
radial: [
"",
isArbitraryVariable,
isArbitraryValue
],
conic: [
isInteger,
isArbitraryVariable,
isArbitraryValue
]
},
isArbitraryVariableImage,
isArbitraryImage
] }],
"bg-color": [{ bg: U_() }],
"gradient-from-pos": [{ from: q_() }],
"gradient-via-pos": [{ via: q_() }],
"gradient-to-pos": [{ to: q_() }],
"gradient-from": [{ from: U_() }],
"gradient-via": [{ via: U_() }],
"gradient-to": [{ to: U_() }],
rounded: [{ rounded: J_() }],
"rounded-s": [{ "rounded-s": J_() }],
"rounded-e": [{ "rounded-e": J_() }],
"rounded-t": [{ "rounded-t": J_() }],
"rounded-r": [{ "rounded-r": J_() }],
"rounded-b": [{ "rounded-b": J_() }],
"rounded-l": [{ "rounded-l": J_() }],
"rounded-ss": [{ "rounded-ss": J_() }],
"rounded-se": [{ "rounded-se": J_() }],
"rounded-ee": [{ "rounded-ee": J_() }],
"rounded-es": [{ "rounded-es": J_() }],
"rounded-tl": [{ "rounded-tl": J_() }],
"rounded-tr": [{ "rounded-tr": J_() }],
"rounded-br": [{ "rounded-br": J_() }],
"rounded-bl": [{ "rounded-bl": J_() }],
"border-w": [{ border: Y_() }],
"border-w-x": [{ "border-x": Y_() }],
"border-w-y": [{ "border-y": Y_() }],
"border-w-s": [{ "border-s": Y_() }],
"border-w-e": [{ "border-e": Y_() }],
"border-w-t": [{ "border-t": Y_() }],
"border-w-r": [{ "border-r": Y_() }],
"border-w-b": [{ "border-b": Y_() }],
"border-w-l": [{ "border-l": Y_() }],
"divide-x": [{ "divide-x": Y_() }],
"divide-x-reverse": ["divide-x-reverse"],
"divide-y": [{ "divide-y": Y_() }],
"divide-y-reverse": ["divide-y-reverse"],
"border-style": [{ border: [
...X_(),
"hidden",
"none"
] }],
"divide-style": [{ divide: [
...X_(),
"hidden",
"none"
] }],
"border-color": [{ border: U_() }],
"border-color-x": [{ "border-x": U_() }],
"border-color-y": [{ "border-y": U_() }],
"border-color-s": [{ "border-s": U_() }],
"border-color-e": [{ "border-e": U_() }],
"border-color-t": [{ "border-t": U_() }],
"border-color-r": [{ "border-r": U_() }],
"border-color-b": [{ "border-b": U_() }],
"border-color-l": [{ "border-l": U_() }],
"divide-color": [{ divide: U_() }],
"outline-style": [{ outline: [
...X_(),
"none",
"hidden"
] }],
"outline-offset": [{ "outline-offset": [
isNumber,
isArbitraryVariable,
isArbitraryValue
] }],
"outline-w": [{ outline: [
"",
isNumber,
isArbitraryVariableLength,
isArbitraryLength
] }],
"outline-color": [{ outline: U_() }],
shadow: [{ shadow: [
"",
"none",
y_,
isArbitraryVariableShadow,
isArbitraryShadow
] }],
"shadow-color": [{ shadow: U_() }],
"inset-shadow": [{ "inset-shadow": [
"none",
b_,
isArbitraryVariableShadow,
isArbitraryShadow
] }],
"inset-shadow-color": [{ "inset-shadow": U_() }],
"ring-w": [{ ring: Y_() }],
"ring-w-inset": ["ring-inset"],
"ring-color": [{ ring: U_() }],
"ring-offset-w": [{ "ring-offset": [isNumber, isArbitraryLength] }],
"ring-offset-color": [{ "ring-offset": U_() }],
"inset-ring-w": [{ "inset-ring": Y_() }],
"inset-ring-color": [{ "inset-ring": U_() }],
"text-shadow": [{ "text-shadow": [
"none",
x_,
isArbitraryVariableShadow,
isArbitraryShadow
] }],
"text-shadow-color": [{ "text-shadow": U_() }],
opacity: [{ opacity: [
isNumber,
isArbitraryVariable,
isArbitraryValue
] }],
"mix-blend": [{ "mix-blend": [
...Z_(),
"plus-darker",
"plus-lighter"
] }],
"bg-blend": [{ "bg-blend": Z_() }],
"mask-clip": [{ "mask-clip": [
"border",
"padding",
"content",
"fill",
"stroke",
"view"
] }, "mask-no-clip"],
"mask-composite": [{ mask: [
"add",
"subtract",
"intersect",
"exclude"
] }],
"mask-image-linear-pos": [{ "mask-linear": [isNumber] }],
"mask-image-linear-from-pos": [{ "mask-linear-from": Q_() }],
"mask-image-linear-to-pos": [{ "mask-linear-to": Q_() }],
"mask-image-linear-from-color": [{ "mask-linear-from": U_() }],
"mask-image-linear-to-color": [{ "mask-linear-to": U_() }],
"mask-image-t-from-pos": [{ "mask-t-from": Q_() }],
"mask-image-t-to-pos": [{ "mask-t-to": Q_() }],
"mask-image-t-from-color": [{ "mask-t-from": U_() }],
"mask-image-t-to-color": [{ "mask-t-to": U_() }],
"mask-image-r-from-pos": [{ "mask-r-from": Q_() }],
"mask-image-r-to-pos": [{ "mask-r-to": Q_() }],
"mask-image-r-from-color": [{ "mask-r-from": U_() }],
"mask-image-r-to-color": [{ "mask-r-to": U_() }],
"mask-image-b-from-pos": [{ "mask-b-from": Q_() }],
"mask-image-b-to-pos": [{ "mask-b-to": Q_() }],
"mask-image-b-from-color": [{ "mask-b-from": U_() }],
"mask-image-b-to-color": [{ "mask-b-to": U_() }],
"mask-image-l-from-pos": [{ "mask-l-from": Q_() }],
"mask-image-l-to-pos": [{ "mask-l-to": Q_() }],
"mask-image-l-from-color": [{ "mask-l-from": U_() }],
"mask-image-l-to-color": [{ "mask-l-to": U_() }],
"mask-image-x-from-pos": [{ "mask-x-from": Q_() }],
"mask-image-x-to-pos": [{ "mask-x-to": Q_() }],
"mask-image-x-from-color": [{ "mask-x-from": U_() }],
"mask-image-x-to-color": [{ "mask-x-to": U_() }],
"mask-image-y-from-pos": [{ "mask-y-from": Q_() }],
"mask-image-y-to-pos": [{ "mask-y-to": Q_() }],
"mask-image-y-from-color": [{ "mask-y-from": U_() }],
"mask-image-y-to-color": [{ "mask-y-to": U_() }],
"mask-image-radial": [{ "mask-radial": [isArbitraryVariable, isArbitraryValue] }],
"mask-image-radial-from-pos": [{ "mask-radial-from": Q_() }],
"mask-image-radial-to-pos": [{ "mask-radial-to": Q_() }],
"mask-image-radial-from-color": [{ "mask-radial-from": U_() }],
"mask-image-radial-to-color": [{ "mask-radial-to": U_() }],
"mask-image-radial-shape": [{ "mask-radial": ["circle", "ellipse"] }],
"mask-image-radial-size": [{ "mask-radial": [{
closest: ["side", "corner"],
farthest: ["side", "corner"]
}] }],
"mask-image-radial-pos": [{ "mask-radial-at": k_() }],
"mask-image-conic-pos": [{ "mask-conic": [isNumber] }],
"mask-image-conic-from-pos": [{ "mask-conic-from": Q_() }],
"mask-image-conic-to-pos": [{ "mask-conic-to": Q_() }],
"mask-image-conic-from-color": [{ "mask-conic-from": U_() }],
"mask-image-conic-to-color": [{ "mask-conic-to": U_() }],
"mask-mode": [{ mask: [
"alpha",
"luminance",
"match"
] }],
"mask-origin": [{ "mask-origin": [
"border",
"padding",
"content",
"fill",
"stroke",
"view"
] }],
"mask-position": [{ mask: W_() }],
"mask-repeat": [{ mask: G_() }],
"mask-size": [{ mask: K_() }],
"mask-type": [{ "mask-type": ["alpha", "luminance"] }],
"mask-image": [{ mask: [
"none",
isArbitraryVariable,
isArbitraryValue
] }],
filter: [{ filter: [
"",
"none",
isArbitraryVariable,
isArbitraryValue
] }],
blur: [{ blur: $_() }],
brightness: [{ brightness: [
isNumber,
isArbitraryVariable,
isArbitraryValue
] }],
contrast: [{ contrast: [
isNumber,
isArbitraryVariable,
isArbitraryValue
] }],
"drop-shadow": [{ "drop-shadow": [
"",
"none",
S_,
isArbitraryVariableShadow,
isArbitraryShadow
] }],
"drop-shadow-color": [{ "drop-shadow": U_() }],
grayscale: [{ grayscale: [
"",
isNumber,
isArbitraryVariable,
isArbitraryValue
] }],
"hue-rotate": [{ "hue-rotate": [
isNumber,
isArbitraryVariable,
isArbitraryValue
] }],
invert: [{ invert: [
"",
isNumber,
isArbitraryVariable,
isArbitraryValue
] }],
saturate: [{ saturate: [
isNumber,
isArbitraryVariable,
isArbitraryValue
] }],
sepia: [{ sepia: [
"",
isNumber,
isArbitraryVariable,
isArbitraryValue
] }],
"backdrop-filter": [{ "backdrop-filter": [
"",
"none",
isArbitraryVariable,
isArbitraryValue
] }],
"backdrop-blur": [{ "backdrop-blur": $_() }],
"backdrop-brightness": [{ "backdrop-brightness": [
isNumber,
isArbitraryVariable,
isArbitraryValue
] }],
"backdrop-contrast": [{ "backdrop-contrast": [
isNumber,
isArbitraryVariable,
isArbitraryValue
] }],
"backdrop-grayscale": [{ "backdrop-grayscale": [
"",
isNumber,
isArbitraryVariable,
isArbitraryValue
] }],
"backdrop-hue-rotate": [{ "backdrop-hue-rotate": [
isNumber,
isArbitraryVariable,
isArbitraryValue
] }],
"backdrop-invert": [{ "backdrop-invert": [
"",
isNumber,
isArbitraryVariable,
isArbitraryValue
] }],
"backdrop-opacity": [{ "backdrop-opacity": [
isNumber,
isArbitraryVariable,
isArbitraryValue
] }],
"backdrop-saturate": [{ "backdrop-saturate": [
isNumber,
isArbitraryVariable,
isArbitraryValue
] }],
"backdrop-sepia": [{ "backdrop-sepia": [
"",
isNumber,
isArbitraryVariable,
isArbitraryValue
] }],
"border-collapse": [{ border: ["collapse", "separate"] }],
"border-spacing": [{ "border-spacing": N_() }],
"border-spacing-x": [{ "border-spacing-x": N_() }],
"border-spacing-y": [{ "border-spacing-y": N_() }],
"table-layout": [{ table: ["auto", "fixed"] }],
caption: [{ caption: ["top", "bottom"] }],
transition: [{ transition: [
"",
"all",
"colors",
"opacity",
"shadow",
"transform",
"none",
isArbitraryVariable,
isArbitraryValue
] }],
"transition-behavior": [{ transition: ["normal", "discrete"] }],
duration: [{ duration: [
isNumber,
"initial",
isArbitraryVariable,
isArbitraryValue
] }],
ease: [{ ease: [
"linear",
"initial",
E_,
isArbitraryVariable,
isArbitraryValue
] }],
delay: [{ delay: [
isNumber,
isArbitraryVariable,
isArbitraryValue
] }],
animate: [{ animate: [
"none",
D_,
isArbitraryVariable,
isArbitraryValue
] }],
backface: [{ backface: ["hidden", "visible"] }],
perspective: [{ perspective: [
w_,
isArbitraryVariable,
isArbitraryValue
] }],
"perspective-origin": [{ "perspective-origin": A_() }],
rotate: [{ rotate: ev() }],
"rotate-x": [{ "rotate-x": ev() }],
"rotate-y": [{ "rotate-y": ev() }],
"rotate-z": [{ "rotate-z": ev() }],
scale: [{ scale: tv() }],
"scale-x": [{ "scale-x": tv() }],
"scale-y": [{ "scale-y": tv() }],
"scale-z": [{ "scale-z": tv() }],
"scale-3d": ["scale-3d"],
skew: [{ skew: nv() }],
"skew-x": [{ "skew-x": nv() }],
"skew-y": [{ "skew-y": nv() }],
transform: [{ transform: [
isArbitraryVariable,
isArbitraryValue,
"",
"none",
"gpu",
"cpu"
] }],
"transform-origin": [{ origin: A_() }],
"transform-style": [{ transform: ["3d", "flat"] }],
translate: [{ translate: rv() }],
"translate-x": [{ "translate-x": rv() }],
"translate-y": [{ "translate-y": rv() }],
"translate-z": [{ "translate-z": rv() }],
"translate-none": ["translate-none"],
accent: [{ accent: U_() }],
appearance: [{ appearance: ["none", "auto"] }],
"caret-color": [{ caret: U_() }],
"color-scheme": [{ scheme: [
"normal",
"dark",
"light",
"light-dark",
"only-dark",
"only-light"
] }],
cursor: [{ cursor: [
"auto",
"default",
"pointer",
"wait",
"text",
"move",
"help",
"not-allowed",
"none",
"context-menu",
"progress",
"cell",
"crosshair",
"vertical-text",
"alias",
"copy",
"no-drop",
"grab",
"grabbing",
"all-scroll",
"col-resize",
"row-resize",
"n-resize",
"e-resize",
"s-resize",
"w-resize",
"ne-resize",
"nw-resize",
"se-resize",
"sw-resize",
"ew-resize",
"ns-resize",
"nesw-resize",
"nwse-resize",
"zoom-in",
"zoom-out",
isArbitraryVariable,
isArbitraryValue
] }],
"field-sizing": [{ "field-sizing": ["fixed", "content"] }],
"pointer-events": [{ "pointer-events": ["auto", "none"] }],
resize: [{ resize: [
"none",
"",
"y",
"x"
] }],
"scroll-behavior": [{ scroll: ["auto", "smooth"] }],
"scroll-m": [{ "scroll-m": N_() }],
"scroll-mx": [{ "scroll-mx": N_() }],
"scroll-my": [{ "scroll-my": N_() }],
"scroll-ms": [{ "scroll-ms": N_() }],
"scroll-me": [{ "scroll-me": N_() }],
"scroll-mt": [{ "scroll-mt": N_() }],
"scroll-mr": [{ "scroll-mr": N_() }],
"scroll-mb": [{ "scroll-mb": N_() }],
"scroll-ml": [{ "scroll-ml": N_() }],
"scroll-p": [{ "scroll-p": N_() }],
"scroll-px": [{ "scroll-px": N_() }],
"scroll-py": [{ "scroll-py": N_() }],
"scroll-ps": [{ "scroll-ps": N_() }],
"scroll-pe": [{ "scroll-pe": N_() }],
"scroll-pt": [{ "scroll-pt": N_() }],
"scroll-pr": [{ "scroll-pr": N_() }],
"scroll-pb": [{ "scroll-pb": N_() }],
"scroll-pl": [{ "scroll-pl": N_() }],
"snap-align": [{ snap: [
"start",
"end",
"center",
"align-none"
] }],
"snap-stop": [{ snap: ["normal", "always"] }],
"snap-type": [{ snap: [
"none",
"x",
"y",
"both"
] }],
"snap-strictness": [{ snap: ["mandatory", "proximity"] }],
touch: [{ touch: [
"auto",
"none",
"manipulation"
] }],
"touch-x": [{ "touch-pan": [
"x",
"left",
"right"
] }],
"touch-y": [{ "touch-pan": [
"y",
"up",
"down"
] }],
"touch-pz": ["touch-pinch-zoom"],
select: [{ select: [
"none",
"text",
"all",
"auto"
] }],
"will-change": [{ "will-change": [
"auto",
"scroll",
"contents",
"transform",
isArbitraryVariable,
isArbitraryValue
] }],
fill: [{ fill: ["none", ...U_()] }],
"stroke-w": [{ stroke: [
isNumber,
isArbitraryVariableLength,
isArbitraryLength,
isArbitraryNumber
] }],
stroke: [{ stroke: ["none", ...U_()] }],
"forced-color-adjust": [{ "forced-color-adjust": ["auto", "none"] }]
},
conflictingClassGroups: {
overflow: ["overflow-x", "overflow-y"],
overscroll: ["overscroll-x", "overscroll-y"],
inset: [
"inset-x",
"inset-y",
"start",
"end",
"top",
"right",
"bottom",
"left"
],
"inset-x": ["right", "left"],
"inset-y": ["top", "bottom"],
flex: [
"basis",
"grow",
"shrink"
],
gap: ["gap-x", "gap-y"],
p: [
"px",
"py",
"ps",
"pe",
"pt",
"pr",
"pb",
"pl"
],
px: ["pr", "pl"],
py: ["pt", "pb"],
m: [
"mx",
"my",
"ms",
"me",
"mt",
"mr",
"mb",
"ml"
],
mx: ["mr", "ml"],
my: ["mt", "mb"],
size: ["w", "h"],
"font-size": ["leading"],
"fvn-normal": [
"fvn-ordinal",
"fvn-slashed-zero",
"fvn-figure",
"fvn-spacing",
"fvn-fraction"
],
"fvn-ordinal": ["fvn-normal"],
"fvn-slashed-zero": ["fvn-normal"],
"fvn-figure": ["fvn-normal"],
"fvn-spacing": ["fvn-normal"],
"fvn-fraction": ["fvn-normal"],
"line-clamp": ["display", "overflow"],
rounded: [
"rounded-s",
"rounded-e",
"rounded-t",
"rounded-r",
"rounded-b",
"rounded-l",
"rounded-ss",
"rounded-se",
"rounded-ee",
"rounded-es",
"rounded-tl",
"rounded-tr",
"rounded-br",
"rounded-bl"
],
"rounded-s": ["rounded-ss", "rounded-es"],
"rounded-e": ["rounded-se", "rounded-ee"],
"rounded-t": ["rounded-tl", "rounded-tr"],
"rounded-r": ["rounded-tr", "rounded-br"],
"rounded-b": ["rounded-br", "rounded-bl"],
"rounded-l": ["rounded-tl", "rounded-bl"],
"border-spacing": ["border-spacing-x", "border-spacing-y"],
"border-w": [
"border-w-x",
"border-w-y",
"border-w-s",
"border-w-e",
"border-w-t",
"border-w-r",
"border-w-b",
"border-w-l"
],
"border-w-x": ["border-w-r", "border-w-l"],
"border-w-y": ["border-w-t", "border-w-b"],
"border-color": [
"border-color-x",
"border-color-y",
"border-color-s",
"border-color-e",
"border-color-t",
"border-color-r",
"border-color-b",
"border-color-l"
],
"border-color-x": ["border-color-r", "border-color-l"],
"border-color-y": ["border-color-t", "border-color-b"],
translate: [
"translate-x",
"translate-y",
"translate-none"
],
"translate-none": [
"translate",
"translate-x",
"translate-y",
"translate-z"
],
"scroll-m": [
"scroll-mx",
"scroll-my",
"scroll-ms",
"scroll-me",
"scroll-mt",
"scroll-mr",
"scroll-mb",
"scroll-ml"
],
"scroll-mx": ["scroll-mr", "scroll-ml"],
"scroll-my": ["scroll-mt", "scroll-mb"],
"scroll-p": [
"scroll-px",
"scroll-py",
"scroll-ps",
"scroll-pe",
"scroll-pt",
"scroll-pr",
"scroll-pb",
"scroll-pl"
],
"scroll-px": ["scroll-pr", "scroll-pl"],
"scroll-py": ["scroll-pt", "scroll-pb"],
touch: [
"touch-x",
"touch-y",
"touch-pz"
],
"touch-x": ["touch"],
"touch-y": ["touch"],
"touch-pz": ["touch"]
},
conflictingClassGroupModifiers: { "font-size": ["leading"] },
orderSensitiveModifiers: [
"*",
"**",
"after",
"backdrop",
"before",
"details-content",
"file",
"first-letter",
"first-line",
"marker",
"placeholder",
"selection"
]
};
});
function cn(...j) {
return twMerge(clsx(j));
}
var falsyToString = (j) => typeof j == "boolean" ? `${j}` : j === 0 ? "0" : j;
const cx = clsx, cva = (j, I) => (q) => {
if (I?.variants == null) return cx(j, q?.class, q?.className);
let { variants: Q, defaultVariants: p_ } = I, m_ = Object.keys(Q).map((j) => {
let I = q?.[j], m_ = p_?.[j];
if (I === null) return null;
let h_ = falsyToString(I) || falsyToString(m_);
return Q[j][h_];
}), h_ = q && Object.entries(q).reduce((j, I) => {
let [q, Q] = I;
return Q === void 0 || (j[q] = Q), j;
}, {}), g_ = I?.compoundVariants?.reduce((j, I) => {
let { class: q, className: Q,...m_ } = I;
return Object.entries(m_).every((j) => {
let [I, q] = j;
return Array.isArray(q) ? q.includes({
...p_,
...h_
}[I]) : {
...p_,
...h_
}[I] === q;
}) ? [
...j,
q,
Q
] : j;
}, []);
return cx(j, m_, g_, q?.class, q?.className);
};
function setRef$1(j, I) {
if (typeof j == "function") return j(I);
j != null && (j.current = I);
}
function composeRefs$1(...j) {
return (I) => {
let q = !1, Q = j.map((j) => {
let Q = setRef$1(j, I);
return !q && typeof Q == "function" && (q = !0), Q;
});
if (q) return () => {
for (let I = 0; I < Q.length; I++) {
let q = Q[I];
typeof q == "function" ? q() : setRef$1(j[I], null);
}
};
};
}
function useComposedRefs$1(...j) {
return React.useCallback(composeRefs$1(...j), j);
}
var REACT_LAZY_TYPE = Symbol.for("react.lazy"), use = React.use;
function isPromiseLike(j) {
return typeof j == "object" && !!j && "then" in j;
}
function isLazyComponent(j) {
return typeof j == "object" && !!j && "$$typeof" in j && j.$$typeof === REACT_LAZY_TYPE && "_payload" in j && isPromiseLike(j._payload);
}
/* @__NO_SIDE_EFFECTS__ */
function createSlot$1(j) {
let I = /* @__PURE__ */ createSlotClone$1(j), q = React.forwardRef((j, q) => {
let { children: Q,...p_ } = j;
isLazyComponent(Q) && typeof use == "function" && (Q = use(Q._payload));
let m_ = React.Children.toArray(Q), h_ = m_.find(isSlottable$1);
if (h_) {
let j = h_.props.children, Q = m_.map((I) => I === h_ ? React.Children.count(j) > 1 ? React.Children.only(null) : React.isValidElement(j) ? j.props.children : null : I);
return /* @__PURE__ */ jsx(I, {
...p_,
ref: q,
children: React.isValidElement(j) ? React.cloneElement(j, void 0, Q) : null
});
}
return /* @__PURE__ */ jsx(I, {
...p_,
ref: q,
children: Q
});
});
return q.displayName = `${j}.Slot`, q;
}
var Slot = /* @__PURE__ */ createSlot$1("Slot");
/* @__NO_SIDE_EFFECTS__ */
function createSlotClone$1(j) {
let I = React.forwardRef((j, I) => {
let { children: q,...Q } = j;
if (isLazyComponent(q) && typeof use == "function" && (q = use(q._payload)), React.isValidElement(q)) {
let j = getElementRef$2(q), p_ = mergeProps$1(Q, q.props);
return q.type !== React.Fragment && (p_.ref = I ? composeRefs$1(I, j) : j), React.cloneElement(q, p_);
}
return React.Children.count(q) > 1 ? React.Children.only(null) : null;
});
return I.displayName = `${j}.SlotClone`, I;
}
var SLOTTABLE_IDENTIFIER$1 = Symbol("radix.slottable");
function isSlottable$1(j) {
return React.isValidElement(j) && typeof j.type == "function" && "__radixId" in j.type && j.type.__radixId === SLOTTABLE_IDENTIFIER$1;
}
function mergeProps$1(j, I) {
let q = { ...I };
for (let Q in I) {
let p_ = j[Q], m_ = I[Q];
/^on[A-Z]/.test(Q) ? p_ && m_ ? q[Q] = (...j) => {
let I = m_(...j);
return p_(...j), I;
} : p_ && (q[Q] = p_) : Q === "style" ? q[Q] = {
...p_,
...m_
} : Q === "className" && (q[Q] = [p_, m_].filter(Boolean).join(" "));
}
return {
...j,
...q
};
}
function getElementRef$2(j) {
let I = Object.getOwnPropertyDescriptor(j.props, "ref")?.get, q = I && "isReactWarning" in I && I.isReactWarning;
return q ? j.ref : (I = Object.getOwnPropertyDescriptor(j, "ref")?.get, q = I && "isReactWarning" in I && I.isReactWarning, q ? j.props.ref : j.props.ref || j.ref);
}
var buttonVariants = cva("cursor-pointer inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/40 aria-invalid:border-destructive", {
variants: {
variant: {
default: "bg-primary text-primary-foreground hover:bg-primary/90",
destructive: "!text-white hover:bg-destructive/90 focus-visible:ring-destructive/40 bg-destructive/60",
outline: "border shadow-sm hover:text-accent-foreground bg-input/30 border-input hover:bg-input/50",
secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/80",
ghost: "hover:text-accent-foreground hover:bg-accent/50",
link: "text-primary underline-offset-4 hover:underline"
},
size: {
default: "h-9 px-4 py-2 has-[>svg]:px-3",
sm: "h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5",
lg: "h-10 rounded-md px-6 has-[>svg]:px-4",
icon: "size-9",
"icon-sm": "size-8",
"icon-lg": "size-10"
}
},
defaultVariants: {
variant: "default",
size: "default"
}
});
function Button({ className: j, variant: I, size: q, asChild: Q = !1,...p_ }) {
return /* @__PURE__ */ jsx(Q ? Slot : "button", {
"data-slot": "button",
className: cn(buttonVariants({
variant: I,
size: q,
className: j
})),
...p_
});
}
typeof window < "u" && window.document && window.document.createElement;
function composeEventHandlers(j, I, { checkForDefaultPrevented: q = !0 } = {}) {
return function(Q) {
if (j?.(Q), q === !1 || !Q.defaultPrevented) return I?.(Q);
};
}
function createContext2(j, I) {
let q = React.createContext(I), Q = (j) => {
let { children: I,...Q } = j, p_ = React.useMemo(() => Q, Object.values(Q));
return /* @__PURE__ */ jsx(q.Provider, {
value: p_,
children: I
});
};
Q.displayName = j + "Provider";
function p_(Q) {
let p_ = React.useContext(q);
if (p_) return p_;
if (I !== void 0) return I;
throw Error(`\`${Q}\` must be used within \`${j}\``);
}
return [Q, p_];
}
function createContextScope(j, I = []) {
let q = [];
function Q(I, Q) {
let p_ = React.createContext(Q), m_ = q.length;
q = [...q, Q];
let h_ = (I) => {
let { scope: q, children: Q,...h_ } = I, g_ = q?.[j]?.[m_] || p_, __ = React.useMemo(() => h_, Object.values(h_));
return /* @__PURE__ */ jsx(g_.Provider, {
value: __,
children: Q
});
};
h_.displayName = I + "Provider";
function g_(q, h_) {
let g_ = h_?.[j]?.[m_] || p_, __ = React.useContext(g_);
if (__) return __;
if (Q !== void 0) return Q;
throw Error(`\`${q}\` must be used within \`${I}\``);
}
return [h_, g_];
}
let p_ = () => {
let I = q.map((j) => React.createContext(j));
return function(q) {
let Q = q?.[j] || I;
return React.useMemo(() => ({ [`__scope${j}`]: {
...q,
[j]: Q
} }), [q, Q]);
};
};
return p_.scopeName = j, [Q, composeContextScopes(p_, ...I)];
}
function composeContextScopes(...j) {
let I = j[0];
if (j.length === 1) return I;
let q = () => {
let q = j.map((j) => ({
useScope: j(),
scopeName: j.scopeName
}));
return function(j) {
let Q = q.reduce((I, { useScope: q, scopeName: Q }) => {
let p_ = q(j)[`__scope${Q}`];
return {
...I,
...p_
};
}, {});
return React.useMemo(() => ({ [`__scope${I.scopeName}`]: Q }), [Q]);
};
};
return q.scopeName = I.scopeName, q;
}
var useLayoutEffect2 = globalThis?.document ? React.useLayoutEffect : () => {}, useReactId = React.useId || (() => void 0), count$1 = 0;
function useId$1(j) {
let [I, q] = React.useState(useReactId());
return useLayoutEffect2(() => {
j || q((j) => j ?? String(count$1++));
}, [j]), j || (I ? `radix-${I}` : "");
}
var useInsertionEffect = React.useInsertionEffect || useLayoutEffect2;
function useControllableState({ prop: j, defaultProp: I, onChange: q = () => {}, caller: Q }) {
let [p_, m_, h_] = useUncontrolledState({
defaultProp: I,
onChange: q
}), g_ = j !== void 0, __ = g_ ? j : p_;
{
let I = React.useRef(j !== void 0);
React.useEffect(() => {
let j = I.current;
if (j !== g_) {
let I = j ? "controlled" : "uncontrolled", q = g_ ? "controlled" : "uncontrolled";
console.warn(`${Q} is changing from ${I} to ${q}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`);
}
I.current = g_;
}, [g_, Q]);
}
let v_ = React.useCallback((I) => {
if (g_) {
let q = isFunction$2(I) ? I(j) : I;
q !== j && h_.current?.(q);
} else m_(I);
}, [
g_,
j,
m_,
h_
]);
return [__, v_];
}
function useUncontrolledState({ defaultProp: j, onChange: I }) {
let [q, Q] = React.useState(j), p_ = React.useRef(q), m_ = React.useRef(I);
return useInsertionEffect(() => {
m_.current = I;
}, [I]), React.useEffect(() => {
p_.current !== q && (m_.current?.(q), p_.current = q);
}, [q, p_]), [
q,
Q,
m_
];
}
function isFunction$2(j) {
return typeof j == "function";
}
/* @__NO_SIDE_EFFECTS__ */
function createSlot(j) {
let I = /* @__PURE__ */ createSlotClone(j), q = React.forwardRef((j, q) => {
let { children: Q,...p_ } = j, m_ = React.Children.toArray(Q), h_ = m_.find(isSlottable);
if (h_) {
let j = h_.props.children, Q = m_.map((I) => I === h_ ? React.Children.count(j) > 1 ? React.Children.only(null) : React.isValidElement(j) ? j.props.children : null : I);
return /* @__PURE__ */ jsx(I, {
...p_,
ref: q,
children: React.isValidElement(j) ? React.cloneElement(j, void 0, Q) : null
});
}
return /* @__PURE__ */ jsx(I, {
...p_,
ref: q,
children: Q
});
});
return q.displayName = `${j}.Slot`, q;
}
/* @__NO_SIDE_EFFECTS__ */
function createSlotClone(j) {
let I = React.forwardRef((j, I) => {
let { children: q,...Q } = j;
if (React.isValidElement(q)) {
let j = getElementRef$1(q), p_ = mergeProps(Q, q.props);
return q.type !== React.Fragment && (p_.ref = I ? composeRefs$1(I, j) : j), React.cloneElement(q, p_);
}
return React.Children.count(q) > 1 ? React.Children.only(null) : null;
});
return I.displayName = `${j}.SlotClone`, I;
}
var SLOTTABLE_IDENTIFIER = Symbol("radix.slottable");
/* @__NO_SIDE_EFFECTS__ */
function createSlottable(j) {
let I = ({ children: j }) => /* @__PURE__ */ jsx(Fragment$1, { children: j });
return I.displayName = `${j}.Slottable`, I.__radixId = SLOTTABLE_IDENTIFIER, I;
}
function isSlottable(j) {
return React.isValidElement(j) && typeof j.type == "function" && "__radixId" in j.type && j.type.__radixId === SLOTTABLE_IDENTIFIER;
}
function mergeProps(j, I) {
let q = { ...I };
for (let Q in I) {
let p_ = j[Q], m_ = I[Q];
/^on[A-Z]/.test(Q) ? p_ && m_ ? q[Q] = (...j) => {
let I = m_(...j);
return p_(...j), I;
} : p_ && (q[Q] = p_) : Q === "style" ? q[Q] = {
...p_,
...m_
} : Q === "className" && (q[Q] = [p_, m_].filter(Boolean).join(" "));
}
return {
...j,
...q
};
}
function getElementRef$1(j) {
let I = Object.getOwnPropertyDescriptor(j.props, "ref")?.get, q = I && "isReactWarning" in I && I.isReactWarning;
return q ? j.ref : (I = Object.getOwnPropertyDescriptor(j, "ref")?.get, q = I && "isReactWarning" in I && I.isReactWarning, q ? j.props.ref : j.props.ref || j.ref);
}
var Primitive = [
"a",
"button",
"div",
"form",
"h2",
"h3",
"img",
"input",
"label",
"li",
"nav",
"ol",
"p",
"select",
"span",
"svg",
"ul"
].reduce((j, I) => {
let q = /* @__PURE__ */ createSlot(`Primitive.${I}`), Q = React.forwardRef((j, Q) => {
let { asChild: p_,...m_ } = j, h_ = p_ ? q : I;
return typeof window < "u" && (window[Symbol.for("radix-ui")] = !0), /* @__PURE__ */ jsx(h_, {
...m_,
ref: Q
});
});
return Q.displayName = `Primitive.${I}`, {
...j,
[I]: Q
};
}, {});
function dispatchDiscreteCustomEvent(j, I) {
j && ReactDOM$2.flushSync(() => j.dispatchEvent(I));
}
function useCallbackRef(j) {
let I = React.useRef(j);
return React.useEffect(() => {
I.current = j;
}), React.useMemo(() => (...j) => I.current?.(...j), []);
}
function useEscapeKeydown(j, I = globalThis?.document) {
let q = useCallbackRef(j);
React.useEffect(() => {
let j = (j) => {
j.key === "Escape" && q(j);
};
return I.addEventListener("keydown", j, { capture: !0 }), () => I.removeEventListener("keydown", j, { capture: !0 });
}, [q, I]);
}
var DISMISSABLE_LAYER_NAME = "DismissableLayer", CONTEXT_UPDATE = "dismissableLayer.update", POINTER_DOWN_OUTSIDE = "dismissableLayer.pointerDownOutside", FOCUS_OUTSIDE = "dismissableLayer.focusOutside", originalBodyPointerEvents, DismissableLayerContext = React.createContext({
layers: /* @__PURE__ */ new Set(),
layersWithOutsidePointerEventsDisabled: /* @__PURE__ */ new Set(),
branches: /* @__PURE__ */ new Set()
}), DismissableLayer = React.forwardRef((j, I) => {
let { disableOutsidePointerEvents: q = !1, onEscapeKeyDown: Q, onPointerDownOutside: p_, onFocusOutside: m_, onInteractOutside: h_, onDismiss: g_,...__ } = j, v_ = React.useContext(DismissableLayerContext), [y_, b_] = React.useState(null), x_ = y_?.ownerDocument ?? globalThis?.document, [, S_] = React.useState({}), C_ = useComposedRefs$1(I, (j) => b_(j)), w_ = Array.from(v_.layers), [T_] = [...v_.layersWithOutsidePointerEventsDisabled].slice(-1), E_ = w_.indexOf(T_), D_ = y_ ? w_.indexOf(y_) : -1, O_ = v_.layersWithOutsidePointerEventsDisabled.size > 0, k_ = D_ >= E_, A_ = usePointerDownOutside((j) => {
let I = j.target, q = [...v_.branches].some((j) => j.contains(I));
!k_ || q || (p_?.(j), h_?.(j), j.defaultPrevented || g_?.());
}, x_), j_ = useFocusOutside((j) => {
let I = j.target;
[...v_.branches].some((j) => j.contains(I)) || (m_?.(j), h_?.(j), j.defaultPrevented || g_?.());
}, x_);
return useEscapeKeydown((j) => {
D_ === v_.layers.size - 1 && (Q?.(j), !j.defaultPrevented && g_ && (j.preventDefault(), g_()));
}, x_), React.useEffect(() => {
if (y_) return q && (v_.layersWithOutsidePointerEventsDisabled.size === 0 && (originalBodyPointerEvents = x_.body.style.pointerEvents, x_.body.style.pointerEvents = "none"), v_.layersWithOutsidePointerEventsDisabled.add(y_)), v_.layers.add(y_), dispatchUpdate(), () => {
q && v_.layersWithOutsidePointerEventsDisabled.size === 1 && (x_.body.style.pointerEvents = originalBodyPointerEvents);
};
}, [
y_,
x_,
q,
v_
]), React.useEffect(() => () => {
y_ && (v_.layers.delete(y_), v_.layersWithOutsidePointerEventsDisabled.delete(y_), dispatchUpdate());
}, [y_, v_]), React.useEffect(() => {
let j = () => S_({});
return document.addEventListener(CONTEXT_UPDATE, j), () => document.removeEventListener(CONTEXT_UPDATE, j);
}, []), /* @__PURE__ */ jsx(Primitive.div, {
...__,
ref: C_,
style: {
pointerEvents: O_ ? k_ ? "auto" : "none" : void 0,
...j.style
},
onFocusCapture: composeEventHandlers(j.onFocusCapture, j_.onFocusCapture),
onBlurCapture: composeEventHandlers(j.onBlurCapture, j_.onBlurCapture),
onPointerDownCapture: composeEventHandlers(j.onPointerDownCapture, A_.onPointerDownCapture)
});
});
DismissableLayer.displayName = DISMISSABLE_LAYER_NAME;
var BRANCH_NAME = "DismissableLayerBranch", DismissableLayerBranch = React.forwardRef((j, I) => {
let q = React.useContext(DismissableLayerContext), Q = React.useRef(null), p_ = useComposedRefs$1(I, Q);
return React.useEffect(() => {
let j = Q.current;
if (j) return q.branches.add(j), () => {
q.branches.delete(j);
};
}, [q.branches]), /* @__PURE__ */ jsx(Primitive.div, {
...j,
ref: p_
});
});
DismissableLayerBranch.displayName = BRANCH_NAME;
function usePointerDownOutside(j, I = globalThis?.document) {
let q = useCallbackRef(j), Q = React.useRef(!1), p_ = React.useRef(() => {});
return React.useEffect(() => {
let j = (j) => {
if (j.target && !Q.current) {
let Q = function() {
handleAndDispatchCustomEvent(POINTER_DOWN_OUTSIDE, q, m_, { discrete: !0 });
}, m_ = { originalEvent: j };
j.pointerType === "touch" ? (I.removeEventListener("click", p_.current), p_.current = Q, I.addEventListener("click", p_.current, { once: !0 })) : Q();
} else I.removeEventListener("click", p_.current);
Q.current = !1;
}, m_ = window.setTimeout(() => {
I.addEventListener("pointerdown", j);
}, 0);
return () => {
window.clearTimeout(m_), I.removeEventListener("pointerdown", j), I.removeEventListener("click", p_.current);
};
}, [I, q]), { onPointerDownCapture: () => Q.current = !0 };
}
function useFocusOutside(j, I = globalThis?.document) {
let q = useCallbackRef(j), Q = React.useRef(!1);
return React.useEffect(() => {
let j = (j) => {
j.target && !Q.current && handleAndDispatchCustomEvent(FOCUS_OUTSIDE, q, { originalEvent: j }, { discrete: !1 });
};
return I.addEventListener("focusin", j), () => I.removeEventListener("focusin", j);
}, [I, q]), {
onFocusCapture: () => Q.current = !0,
onBlurCapture: () => Q.current = !1
};
}
function dispatchUpdate() {
let j = new CustomEvent(CONTEXT_UPDATE);
document.dispatchEvent(j);
}
function handleAndDispatchCustomEvent(j, I, q, { discrete: Q }) {
let p_ = q.originalEvent.target, m_ = new CustomEvent(j, {
bubbles: !1,
cancelable: !0,
detail: q
});
I && p_.addEventListener(j, I, { once: !0 }), Q ? dispatchDiscreteCustomEvent(p_, m_) : p_.dispatchEvent(m_);
}
var AUTOFOCUS_ON_MOUNT = "focusScope.autoFocusOnMount", AUTOFOCUS_ON_UNMOUNT = "focusScope.autoFocusOnUnmount", EVENT_OPTIONS$1 = {
bubbles: !1,
cancelable: !0
}, FOCUS_SCOPE_NAME = "FocusScope", FocusScope = React.forwardRef((j, I) => {
let { loop: q = !1, trapped: Q = !1, onMountAutoFocus: p_, onUnmountAutoFocus: m_,...h_ } = j, [g_, __] = React.useState(null), v_ = useCallbackRef(p_), y_ = useCallbackRef(m_), b_ = React.useRef(null), x_ = useComposedRefs$1(I, (j) => __(j)), S_ = React.useRef({
paused: !1,
pause() {
this.paused = !0;
},
resume() {
this.paused = !1;
}
}).current;
React.useEffect(() => {
if (Q) {
let j = function(j) {
if (S_.paused || !g_) return;
let I = j.target;
g_.contains(I) ? b_.current = I : focus(b_.current, { select: !0 });
}, I = function(j) {
if (S_.paused || !g_) return;
let I = j.relatedTarget;
I !== null && (g_.contains(I) || focus(b_.current, { select: !0 }));
}, q = function(j) {
if (document.activeElement === document.body) for (let I of j) I.removedNodes.length > 0 && focus(g_);
};
document.addEventListener("focusin", j), document.addEventListener("focusout", I);
let Q = new MutationObserver(q);
return g_ && Q.observe(g_, {
childList: !0,
subtree: !0
}), () => {
document.removeEventListener("focusin", j), document.removeEventListener("focusout", I), Q.disconnect();
};
}
}, [
Q,
g_,
S_.paused
]), React.useEffect(() => {
if (g_) {
focusScopesStack.add(S_);
let j = document.activeElement;
if (!g_.contains(j)) {
let I = new CustomEvent(AUTOFOCUS_ON_MOUNT, EVENT_OPTIONS$1);
g_.addEventListener(AUTOFOCUS_ON_MOUNT, v_), g_.dispatchEvent(I), I.defaultPrevented || (focusFirst$2(removeLinks(getTabbableCandidates(g_)), { select: !0 }), document.activeElement === j && focus(g_));
}
return () => {
g_.removeEventListener(AUTOFOCUS_ON_MOUNT, v_), setTimeout(() => {
let I = new CustomEvent(AUTOFOCUS_ON_UNMOUNT, EVENT_OPTIONS$1);
g_.addEventListener(AUTOFOCUS_ON_UNMOUNT, y_), g_.dispatchEvent(I), I.defaultPrevented || focus(j ?? document.body, { select: !0 }), g_.removeEventListener(AUTOFOCUS_ON_UNMOUNT, y_), focusScopesStack.remove(S_);
}, 0);
};
}
}, [
g_,
v_,
y_,
S_
]);
let C_ = React.useCallback((j) => {
if (!q && !Q || S_.paused) return;
let I = j.key === "Tab" && !j.altKey && !j.ctrlKey && !j.metaKey, p_ = document.activeElement;
if (I && p_) {
let I = j.currentTarget, [Q, m_] = getTabbableEdges(I);
Q && m_ ? !j.shiftKey && p_ === m_ ? (j.preventDefault(), q && focus(Q, { select: !0 })) : j.shiftKey && p_ === Q && (j.preventDefault(), q && focus(m_, { select: !0 })) : p_ === I && j.preventDefault();
}
}, [
q,
Q,
S_.paused
]);
return /* @__PURE__ */ jsx(Primitive.div, {
tabIndex: -1,
...h_,
ref: x_,
onKeyDown: C_
});
});
FocusScope.displayName = FOCUS_SCOPE_NAME;
function focusFirst$2(j, { select: I = !1 } = {}) {
let q = document.activeElement;
for (let Q of j) if (focus(Q, { select: I }), document.activeElement !== q) return;
}
function getTabbableEdges(j) {
let I = getTabbableCandidates(j), q = findVisible(I, j), Q = findVisible(I.reverse(), j);
return [q, Q];
}
function getTabbableCandidates(j) {
let I = [], q = document.createTreeWalker(j, NodeFilter.SHOW_ELEMENT, { acceptNode: (j) => {
let I = j.tagName === "INPUT" && j.type === "hidden";
return j.disabled || j.hidden || I ? NodeFilter.FILTER_SKIP : j.tabIndex >= 0 ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP;
} });
for (; q.nextNode();) I.push(q.currentNode);
return I;
}
function findVisible(j, I) {
for (let q of j) if (!isHidden(q, { upTo: I })) return q;
}
function isHidden(j, { upTo: I }) {
if (getComputedStyle(j).visibility === "hidden") return !0;
for (; j;) {
if (I !== void 0 && j === I) return !1;
if (getComputedStyle(j).display === "none") return !0;
j = j.parentElement;
}
return !1;
}
function isSelectableInput(j) {
return j instanceof HTMLInputElement && "select" in j;
}
function focus(j, { select: I = !1 } = {}) {
if (j && j.focus) {
let q = document.activeElement;
j.focus({ preventScroll: !0 }), j !== q && isSelectableInput(j) && I && j.select();
}
}
var focusScopesStack = createFocusScopesStack();
function createFocusScopesStack() {
let j = [];
return {
add(I) {
let q = j[0];
I !== q && q?.pause(), j = arrayRemove(j, I), j.unshift(I);
},
remove(I) {
j = arrayRemove(j, I), j[0]?.resume();
}
};
}
function arrayRemove(j, I) {
let q = [...j], Q = q.indexOf(I);
return Q !== -1 && q.splice(Q, 1), q;
}
function removeLinks(j) {
return j.filter((j) => j.tagName !== "A");
}
var PORTAL_NAME$7 = "Portal", Portal = React.forwardRef((j, I) => {
let { container: q,...Q } = j, [p_, m_] = React.useState(!1);
useLayoutEffect2(() => m_(!0), []);
let h_ = q || p_ && globalThis?.document?.body;
return h_ ? ReactDOM$1.createPortal(/* @__PURE__ */ jsx(Primitive.div, {
...Q,
ref: I
}), h_) : null;
});
Portal.displayName = PORTAL_NAME$7;
function useStateMachine$1(j, I) {
return React.useReducer((j, q) => I[j][q] ?? j, j);
}
var Presence = (j) => {
let { present: I, children: q } = j, Q = usePresence(I), p_ = typeof q == "function" ? q({ present: Q.isPresent }) : React.Children.only(q), m_ = useComposedRefs$1(Q.ref, getElementRef(p_));
return typeof q == "function" || Q.isPresent ? React.cloneElement(p_, { ref: m_ }) : null;
};
Presence.displayName = "Presence";
function usePresence(j) {
let [I, q] = React.useState(), Q = React.useRef(null), p_ = React.useRef(j), m_ = React.useRef("none"), [h_, g_] = useStateMachine$1(j ? "mounted" : "unmounted", {
mounted: {
UNMOUNT: "unmounted",
ANIMATION_OUT: "unmountSuspended"
},
unmountSuspended: {
MOUNT: "mounted",
ANIMATION_END: "unmounted"
},
unmounted: { MOUNT: "mounted" }
});
return React.useEffect(() => {
let j = getAnimationName(Q.current);
m_.current = h_ === "mounted" ? j : "none";
}, [h_]), useLayoutEffect2(() => {
let I = Q.current, q = p_.current;
if (q !== j) {
let Q = m_.current, h_ = getAnimationName(I);
j ? g_("MOUNT") : h_ === "none" || I?.display === "none" ? g_("UNMOUNT") : g_(q && Q !== h_ ? "ANIMATION_OUT" : "UNMOUNT"), p_.current = j;
}
}, [j, g_]), useLayoutEffect2(() => {
if (I) {
let j, q = I.ownerDocument.defaultView ?? window, h_ = (m_) => {
let h_ = getAnimationName(Q.current).includes(CSS.escape(m_.animationName));
if (m_.target === I && h_ && (g_("ANIMATION_END"), !p_.current)) {
let Q = I.style.animationFillMode;
I.style.animationFillMode = "forwards", j = q.setTimeout(() => {
I.style.animationFillMode === "forwards" && (I.style.animationFillMode = Q);
});
}
}, __ = (j) => {
j.target === I && (m_.current = getAnimationName(Q.current));
};
return I.addEventListener("animationstart", __), I.addEventListener("animationcancel", h_), I.addEventListener("animationend", h_), () => {
q.clearTimeout(j), I.removeEventListener("animationstart", __), I.removeEventListener("animationcancel", h_), I.removeEventListener("animationend", h_);
};
} else g_("ANIMATION_END");
}, [I, g_]), {
isPresent: ["mounted", "unmountSuspended"].includes(h_),
ref: React.useCallback((j) => {
Q.current = j ? getComputedStyle(j) : null, q(j);
}, [])
};
}
function getAnimationName(j) {
return j?.animationName || "none";
}
function getElementRef(j) {
let I = Object.getOwnPropertyDescriptor(j.props, "ref")?.get, q = I && "isReactWarning" in I && I.isReactWarning;
return q ? j.ref : (I = Object.getOwnPropertyDescriptor(j, "ref")?.get, q = I && "isReactWarning" in I && I.isReactWarning, q ? j.props.ref : j.props.ref || j.ref);
}
var count = 0;
function useFocusGuards() {
React.useEffect(() => {
let j = document.querySelectorAll("[data-radix-focus-guard]");
return document.body.insertAdjacentElement("afterbegin", j[0] ?? createFocusGuard()), document.body.insertAdjacentElement("beforeend", j[1] ?? createFocusGuard()), count++, () => {
count === 1 && document.querySelectorAll("[data-radix-focus-guard]").forEach((j) => j.remove()), count--;
};
}, []);
}
function createFocusGuard() {
let j = document.createElement("span");
return j.setAttribute("data-radix-focus-guard", ""), j.tabIndex = 0, j.style.outline = "none", j.style.opacity = "0", j.style.position = "fixed", j.style.pointerEvents = "none", j;
}
var zeroRightClassName = "right-scroll-bar-position", fullWidthClassName = "width-before-scroll-bar", noScrollbarsClassName = "with-scroll-bars-hidden", removedBarSizeVariable = "--removed-body-scroll-bar-size";
function assignRef(j, I) {
return typeof j == "function" ? j(I) : j && (j.current = I), j;
}
function useCallbackRef$1(j, I) {
var q = useState(function() {
return {
value: j,
callback: I,
facade: {
get current() {
return q.value;
},
set current(j) {
var I = q.value;
I !== j && (q.value = j, q.callback(j, I));
}
}
};
})[0];
return q.callback = I, q.facade;
}
var useIsomorphicLayoutEffect$2 = typeof window < "u" ? React.useLayoutEffect : React.useEffect, currentValues = /* @__PURE__ */ new WeakMap();
function useMergeRefs(j, I) {
var q = useCallbackRef$1(I || null, function(I) {
return j.forEach(function(j) {
return assignRef(j, I);
});
});
return useIsomorphicLayoutEffect$2(function() {
var I = currentValues.get(q);
if (I) {
var Q = new Set(I), p_ = new Set(j), m_ = q.current;
Q.forEach(function(j) {
p_.has(j) || assignRef(j, null);
}), p_.forEach(function(j) {
Q.has(j) || assignRef(j, m_);
});
}
currentValues.set(q, j);
}, [j]), q;
}
function ItoI(j) {
return j;
}
function innerCreateMedium(j, I) {
I === void 0 && (I = ItoI);
var q = [], Q = !1;
return {
read: function() {
if (Q) throw Error("Sidecar: could not `read` from an `assigned` medium. `read` could be used only with `useMedium`.");
return q.length ? q[q.length - 1] : j;
},
useMedium: function(j) {
var p_ = I(j, Q);
return q.push(p_), function() {
q = q.filter(function(j) {
return j !== p_;
});
};
},
assignSyncMedium: function(j) {
for (Q = !0; q.length;) {
var I = q;
q = [], I.forEach(j);
}
q = {
push: function(I) {
return j(I);
},
filter: function() {
return q;
}
};
},
assignMedium: function(j) {
Q = !0;
var I = [];
if (q.length) {
var p_ = q;
q = [], p_.forEach(j), I = q;
}
var m_ = function() {
var q = I;
I = [], q.forEach(j);
}, h_ = function() {
return Promise.resolve().then(m_);
};
h_(), q = {
push: function(j) {
I.push(j), h_();
},
filter: function(j) {
return I = I.filter(j), q;
}
};
}
};
}
function createSidecarMedium(j) {
j === void 0 && (j = {});
var I = innerCreateMedium(null);
return I.options = __assign({
async: !0,
ssr: !1
}, j), I;
}
var SideCar = function(j) {
var I = j.sideCar, q = __rest(j, ["sideCar"]);
if (!I) throw Error("Sidecar: please provide `sideCar` property to import the right car");
var Q = I.read();
if (!Q) throw Error("Sidecar medium not found");
return React.createElement(Q, __assign({}, q));
};
SideCar.isSideCarExport = !0;
function exportSidecar(j, I) {
return j.useMedium(I), SideCar;
}
var effectCar = createSidecarMedium(), nothing = function() {}, RemoveScroll = React.forwardRef(function(j, I) {
var q = React.useRef(null), Q = React.useState({
onScrollCapture: nothing,
onWheelCapture: nothing,
onTouchMoveCapture: nothing
}), p_ = Q[0], m_ = Q[1], h_ = j.forwardProps, g_ = j.children, __ = j.className, v_ = j.removeScrollBar, y_ = j.enabled, b_ = j.shards, x_ = j.sideCar, S_ = j.noRelative, C_ = j.noIsolation, w_ = j.inert, T_ = j.allowPinchZoom, E_ = j.as, D_ = E_ === void 0 ? "div" : E_, O_ = j.gapMode, k_ = __rest(j, [
"forwardProps",
"children",
"className",
"removeScrollBar",
"enabled",
"shards",
"sideCar",
"noRelative",
"noIsolation",
"inert",
"allowPinchZoom",
"as",
"gapMode"
]), A_ = x_, j_ = useMergeRefs([q, I]), M_ = __assign(__assign({}, k_), p_);
return React.createElement(React.Fragment, null, y_ && React.createElement(A_, {
sideCar: effectCar,
removeScrollBar: v_,
shards: b_,
noRelative: S_,
noIsolation: C_,
inert: w_,
setCallbacks: m_,
allowPinchZoom: !!T_,
lockRef: q,
gapMode: O_
}), h_ ? React.cloneElement(React.Children.only(g_), __assign(__assign({}, M_), { ref: j_ })) : React.createElement(D_, __assign({}, M_, {
className: __,
ref: j_
}), g_));
});
RemoveScroll.defaultProps = {
enabled: !0,
removeScrollBar: !0,
inert: !1
}, RemoveScroll.classNames = {
fullWidth: fullWidthClassName,
zeroRight: zeroRightClassName
};
var currentNonce, getNonce$1 = function() {
if (currentNonce) return currentNonce;
if (typeof __webpack_nonce__ < "u") return __webpack_nonce__;
};
function makeStyleTag() {
if (!document) return null;
var j = document.createElement("style");
j.type = "text/css";
var I = getNonce$1();
return I && j.setAttribute("nonce", I), j;
}
function injectStyles(j, I) {
j.styleSheet ? j.styleSheet.cssText = I : j.appendChild(document.createTextNode(I));
}
function insertStyleTag(j) {
(document.head || document.getElementsByTagName("head")[0]).appendChild(j);
}
var stylesheetSingleton = function() {
var j = 0, I = null;
return {
add: function(q) {
j == 0 && (I = makeStyleTag()) && (injectStyles(I, q), insertStyleTag(I)), j++;
},
remove: function() {
j--, !j && I && (I.parentNode && I.parentNode.removeChild(I), I = null);
}
};
}, styleHookSingleton = function() {
var j = stylesheetSingleton();
return function(I, q) {
React.useEffect(function() {
return j.add(I), function() {
j.remove();
};
}, [I && q]);
};
}, styleSingleton = function() {
var j = styleHookSingleton();
return function(I) {
var q = I.styles, Q = I.dynamic;
return j(q, Q), null;
};
}, zeroGap = {
left: 0,
top: 0,
right: 0,
gap: 0
}, parse = function(j) {
return parseInt(j || "", 10) || 0;
}, getOffset = function(j) {
var I = window.getComputedStyle(document.body), q = I[j === "padding" ? "paddingLeft" : "marginLeft"], Q = I[j === "padding" ? "paddingTop" : "marginTop"], p_ = I[j === "padding" ? "paddingRight" : "marginRight"];
return [
parse(q),
parse(Q),
parse(p_)
];
}, getGapWidth = function(j) {
if (j === void 0 && (j = "margin"), typeof window > "u") return zeroGap;
var I = getOffset(j), q = document.documentElement.clientWidth, Q = window.innerWidth;
return {
left: I[0],
top: I[1],
right: I[2],
gap: Math.max(0, Q - q + I[2] - I[0])
};
}, Style = styleSingleton(), lockAttribute = "data-scroll-locked", getStyles = function(j, I, q, Q) {
var p_ = j.left, m_ = j.top, h_ = j.right, g_ = j.gap;
return q === void 0 && (q = "margin"), `
.${noScrollbarsClassName} {
overflow: hidden ${Q};
padding-right: ${g_}px ${Q};
}
body[${lockAttribute}] {
overflow: hidden ${Q};
overscroll-behavior: contain;
${[
I && `position: relative ${Q};`,
q === "margin" && `
padding-left: ${p_}px;
padding-top: ${m_}px;
padding-right: ${h_}px;
margin-left:0;
margin-top:0;
margin-right: ${g_}px ${Q};
`,
q === "padding" && `padding-right: ${g_}px ${Q};`
].filter(Boolean).join("")}
}
.${zeroRightClassName} {
right: ${g_}px ${Q};
}
.${fullWidthClassName} {
margin-right: ${g_}px ${Q};
}
.${zeroRightClassName} .${zeroRightClassName} {
right: 0 ${Q};
}
.${fullWidthClassName} .${fullWidthClassName} {
margin-right: 0 ${Q};
}
body[${lockAttribute}] {
${removedBarSizeVariable}: ${g_}px;
}
`;
}, getCurrentUseCounter = function() {
var j = parseInt(document.body.getAttribute("data-scroll-locked") || "0", 10);
return isFinite(j) ? j : 0;
}, useLockAttribute = function() {
React.useEffect(function() {
return document.body.setAttribute(lockAttribute, (getCurrentUseCounter() + 1).toString()), function() {
var j = getCurrentUseCounter() - 1;
j <= 0 ? document.body.removeAttribute(lockAttribute) : document.body.setAttribute(lockAttribute, j.toString());
};
}, []);
}, RemoveScrollBar = function(j) {
var I = j.noRelative, q = j.noImportant, Q = j.gapMode, p_ = Q === void 0 ? "margin" : Q;
useLockAttribute();
var m_ = React.useMemo(function() {
return getGapWidth(p_);
}, [p_]);
return React.createElement(Style, { styles: getStyles(m_, !I, p_, q ? "" : "!important") });
}, passiveSupported = !1;
if (typeof window < "u") try {
var options = Object.defineProperty({}, "passive", { get: function() {
return passiveSupported = !0, !0;
} });
window.addEventListener("test", options, options), window.removeEventListener("test", options, options);
} catch {
passiveSupported = !1;
}
var nonPassive = passiveSupported ? { passive: !1 } : !1, alwaysContainsScroll = function(j) {
return j.tagName === "TEXTAREA";
}, elementCanBeScrolled = function(j, I) {
if (!(j instanceof Element)) return !1;
var q = window.getComputedStyle(j);
return q[I] !== "hidden" && !(q.overflowY === q.overflowX && !alwaysContainsScroll(j) && q[I] === "visible");
}, elementCouldBeVScrolled = function(j) {
return elementCanBeScrolled(j, "overflowY");
}, elementCouldBeHScrolled = function(j) {
return elementCanBeScrolled(j, "overflowX");
}, locationCouldBeScrolled = function(j, I) {
var q = I.ownerDocument, Q = I;
do {
if (typeof ShadowRoot < "u" && Q instanceof ShadowRoot && (Q = Q.host), elementCouldBeScrolled(j, Q)) {
var p_ = getScrollVariables(j, Q), m_ = p_[1], h_ = p_[2];
if (m_ > h_) return !0;
}
Q = Q.parentNode;
} while (Q && Q !== q.body);
return !1;
}, getVScrollVariables = function(j) {
var I = j.scrollTop, q = j.scrollHeight, Q = j.clientHeight;
return [
I,
q,
Q
];
}, getHScrollVariables = function(j) {
var I = j.scrollLeft, q = j.scrollWidth, Q = j.clientWidth;
return [
I,
q,
Q
];
}, elementCouldBeScrolled = function(j, I) {
return j === "v" ? elementCouldBeVScrolled(I) : elementCouldBeHScrolled(I);
}, getScrollVariables = function(j, I) {
return j === "v" ? getVScrollVariables(I) : getHScrollVariables(I);
}, getDirectionFactor = function(j, I) {
return j === "h" && I === "rtl" ? -1 : 1;
}, handleScroll = function(j, I, q, Q, p_) {
var m_ = getDirectionFactor(j, window.getComputedStyle(I).direction), h_ = m_ * Q, g_ = q.target, __ = I.contains(g_), v_ = !1, y_ = h_ > 0, b_ = 0, x_ = 0;
do {
if (!g_) break;
var S_ = getScrollVariables(j, g_), C_ = S_[0], w_ = S_[1], T_ = S_[2], E_ = w_ - T_ - m_ * C_;
(C_ || E_) && elementCouldBeScrolled(j, g_) && (b_ += E_, x_ += C_);
var D_ = g_.parentNode;
g_ = D_ && D_.nodeType === Node.DOCUMENT_FRAGMENT_NODE ? D_.host : D_;
} while (!__ && g_ !== document.body || __ && (I.contains(g_) || I === g_));
return (y_ && (p_ && Math.abs(b_) < 1 || !p_ && h_ > b_) || !y_ && (p_ && Math.abs(x_) < 1 || !p_ && -h_ > x_)) && (v_ = !0), v_;
}, getTouchXY = function(j) {
return "changedTouches" in j ? [j.changedTouches[0].clientX, j.changedTouches[0].clientY] : [0, 0];
}, getDeltaXY = function(j) {
return [j.deltaX, j.deltaY];
}, extractRef = function(j) {
return j && "current" in j ? j.current : j;
}, deltaCompare = function(j, I) {
return j[0] === I[0] && j[1] === I[1];
}, generateStyle = function(j) {
return `
.block-interactivity-${j} {pointer-events: none;}
.allow-interactivity-${j} {pointer-events: all;}
`;
}, idCounter = 0, lockStack = [];
function RemoveScrollSideCar(j) {
var I = React.useRef([]), q = React.useRef([0, 0]), Q = React.useRef(), p_ = React.useState(idCounter++)[0], m_ = React.useState(styleSingleton)[0], h_ = React.useRef(j);
React.useEffect(function() {
h_.current = j;
}, [j]), React.useEffect(function() {
if (j.inert) {
document.body.classList.add(`block-interactivity-${p_}`);
var I = __spreadArray([j.lockRef.current], (j.shards || []).map(extractRef), !0).filter(Boolean);
return I.forEach(function(j) {
return j.classList.add(`allow-interactivity-${p_}`);
}), function() {
document.body.classList.remove(`block-interactivity-${p_}`), I.forEach(function(j) {
return j.classList.remove(`allow-interactivity-${p_}`);
});
};
}
}, [
j.inert,
j.lockRef.current,
j.shards
]);
var g_ = React.useCallback(function(j, I) {
if ("touches" in j && j.touches.length === 2 || j.type === "wheel" && j.ctrlKey) return !h_.current.allowPinchZoom;
var p_ = getTouchXY(j), m_ = q.current, g_ = "deltaX" in j ? j.deltaX : m_[0] - p_[0], __ = "deltaY" in j ? j.deltaY : m_[1] - p_[1], v_, y_ = j.target, b_ = Math.abs(g_) > Math.abs(__) ? "h" : "v";
if ("touches" in j && b_ === "h" && y_.type === "range") return !1;
var x_ = window.getSelection(), S_ = x_ && x_.anchorNode;
if (S_ && (S_ === y_ || S_.contains(y_))) return !1;
var C_ = locationCouldBeScrolled(b_, y_);
if (!C_) return !0;
if (C_ ? v_ = b_ : (v_ = b_ === "v" ? "h" : "v", C_ = locationCouldBeScrolled(b_, y_)), !C_) return !1;
if (!Q.current && "changedTouches" in j && (g_ || __) && (Q.current = v_), !v_) return !0;
var w_ = Q.current || v_;
return handleScroll(w_, I, j, w_ === "h" ? g_ : __, !0);
}, []), __ = React.useCallback(function(j) {
var q = j;
if (!(!lockStack.length || lockStack[lockStack.length - 1] !== m_)) {
var Q = "deltaY" in q ? getDeltaXY(q) : getTouchXY(q), p_ = I.current.filter(function(j) {
return j.name === q.type && (j.target === q.target || q.target === j.shadowParent) && deltaCompare(j.delta, Q);
})[0];
if (p_ && p_.should) {
q.cancelable && q.preventDefault();
return;
}
if (!p_) {
var __ = (h_.current.shards || []).map(extractRef).filter(Boolean).filter(function(j) {
return j.contains(q.target);
});
(__.length > 0 ? g_(q, __[0]) : !h_.current.noIsolation) && q.cancelable && q.preventDefault();
}
}
}, []), v_ = React.useCallback(function(j, q, Q, p_) {
var m_ = {
name: j,
delta: q,
target: Q,
should: p_,
shadowParent: getOutermostShadowParent(Q)
};
I.current.push(m_), setTimeout(function() {
I.current = I.current.filter(function(j) {
return j !== m_;
});
}, 1);
}, []), y_ = React.useCallback(function(j) {
q.current = getTouchXY(j), Q.current = void 0;
}, []), b_ = React.useCallback(function(I) {
v_(I.type, getDeltaXY(I), I.target, g_(I, j.lockRef.current));
}, []), x_ = React.useCallback(function(I) {
v_(I.type, getTouchXY(I), I.target, g_(I, j.lockRef.current));
}, []);
React.useEffect(function() {
return lockStack.push(m_), j.setCallbacks({
onScrollCapture: b_,
onWheelCapture: b_,
onTouchMoveCapture: x_
}), document.addEventListener("wheel", __, nonPassive), document.addEventListener("touchmove", __, nonPassive), document.addEventListener("touchstart", y_, nonPassive), function() {
lockStack = lockStack.filter(function(j) {
return j !== m_;
}), document.removeEventListener("wheel", __, nonPassive), document.removeEventListener("touchmove", __, nonPassive), document.removeEventListener("touchstart", y_, nonPassive);
};
}, []);
var S_ = j.removeScrollBar, C_ = j.inert;
return React.createElement(React.Fragment, null, C_ ? React.createElement(m_, { styles: generateStyle(p_) }) : null, S_ ? React.createElement(RemoveScrollBar, {
noRelative: j.noRelative,
gapMode: j.gapMode
}) : null);
}
function getOutermostShadowParent(j) {
for (var I = null; j !== null;) j instanceof ShadowRoot && (I = j.host, j = j.host), j = j.parentNode;
return I;
}
var sidecar_default = exportSidecar(effectCar, RemoveScrollSideCar), ReactRemoveScroll = React.forwardRef(function(j, I) {
return React.createElement(RemoveScroll, __assign({}, j, {
ref: I,
sideCar: sidecar_default
}));
});
ReactRemoveScroll.classNames = RemoveScroll.classNames;
var Combination_default = ReactRemoveScroll, getDefaultParent = function(j) {
return typeof document > "u" ? null : (Array.isArray(j) ? j[0] : j).ownerDocument.body;
}, counterMap = /* @__PURE__ */ new WeakMap(), uncontrolledNodes = /* @__PURE__ */ new WeakMap(), markerMap = {}, lockCount = 0, unwrapHost = function(j) {
return j && (j.host || unwrapHost(j.parentNode));
}, correctTargets = function(j, I) {
return I.map(function(I) {
if (j.contains(I)) return I;
var q = unwrapHost(I);
return q && j.contains(q) ? q : (console.error("aria-hidden", I, "in not contained inside", j, ". Doing nothing"), null);
}).filter(function(j) {
return !!j;
});
}, applyAttributeToOthers = function(j, I, q, Q) {
var p_ = correctTargets(I, Array.isArray(j) ? j : [j]);
markerMap[q] || (markerMap[q] = /* @__PURE__ */ new WeakMap());
var m_ = markerMap[q], h_ = [], g_ = /* @__PURE__ */ new Set(), __ = new Set(p_), v_ = function(j) {
!j || g_.has(j) || (g_.add(j), v_(j.parentNode));
};
p_.forEach(v_);
var y_ = function(j) {
!j || __.has(j) || Array.prototype.forEach.call(j.children, function(j) {
if (g_.has(j)) y_(j);
else try {
var I = j.getAttribute(Q), p_ = I !== null && I !== "false", __ = (counterMap.get(j) || 0) + 1, v_ = (m_.get(j) || 0) + 1;
counterMap.set(j, __), m_.set(j, v_), h_.push(j), __ === 1 && p_ && uncontrolledNodes.set(j, !0), v_ === 1 && j.setAttribute(q, "true"), p_ || j.setAttribute(Q, "true");
} catch (I) {
console.error("aria-hidden: cannot operate on ", j, I);
}
});
};
return y_(I), g_.clear(), lockCount++, function() {
h_.forEach(function(j) {
var I = counterMap.get(j) - 1, p_ = m_.get(j) - 1;
counterMap.set(j, I), m_.set(j, p_), I || (uncontrolledNodes.has(j) || j.removeAttribute(Q), uncontrolledNodes.delete(j)), p_ || j.removeAttribute(q);
}), lockCount--, lockCount || (counterMap = /* @__PURE__ */ new WeakMap(), counterMap = /* @__PURE__ */ new WeakMap(), uncontrolledNodes = /* @__PURE__ */ new WeakMap(), markerMap = {});
};
}, hideOthers = function(j, I, q) {
q === void 0 && (q = "data-aria-hidden");
var Q = Array.from(Array.isArray(j) ? j : [j]), p_ = I || getDefaultParent(j);
return p_ ? (Q.push.apply(Q, Array.from(p_.querySelectorAll("[aria-live], script"))), applyAttributeToOthers(Q, p_, q, "aria-hidden")) : function() {
return null;
};
}, DIALOG_NAME = "Dialog", [createDialogContext, createDialogScope] = createContextScope(DIALOG_NAME), [DialogProvider, useDialogContext] = createDialogContext(DIALOG_NAME), Dialog$1 = (j) => {
let { __scopeDialog: I, children: q, open: Q, defaultOpen: p_, onOpenChange: m_, modal: h_ = !0 } = j, g_ = React.useRef(null), __ = React.useRef(null), [v_, y_] = useControllableState({
prop: Q,
defaultProp: p_ ?? !1,
onChange: m_,
caller: DIALOG_NAME
});
return /* @__PURE__ */ jsx(DialogProvider, {
scope: I,
triggerRef: g_,
contentRef: __,
contentId: useId$1(),
titleId: useId$1(),
descriptionId: useId$1(),
open: v_,
onOpenChange: y_,
onOpenToggle: React.useCallback(() => y_((j) => !j), [y_]),
modal: h_,
children: q
});
};
Dialog$1.displayName = DIALOG_NAME;
var TRIGGER_NAME$8 = "DialogTrigger", DialogTrigger$1 = React.forwardRef((j, I) => {
let { __scopeDialog: q,...Q } = j, p_ = useDialogContext(TRIGGER_NAME$8, q), m_ = useComposedRefs$1(I, p_.triggerRef);
return /* @__PURE__ */ jsx(Primitive.button, {
type: "button",
"aria-haspopup": "dialog",
"aria-expanded": p_.open,
"aria-controls": p_.contentId,
"data-state": getState$3(p_.open),
...Q,
ref: m_,
onClick: composeEventHandlers(j.onClick, p_.onOpenToggle)
});
});
DialogTrigger$1.displayName = TRIGGER_NAME$8;
var PORTAL_NAME$6 = "DialogPortal", [PortalProvider$2, usePortalContext$2] = createDialogContext(PORTAL_NAME$6, { forceMount: void 0 }), DialogPortal$1 = (j) => {
let { __scopeDialog: I, forceMount: q, children: Q, container: p_ } = j, m_ = useDialogContext(PORTAL_NAME$6, I);
return /* @__PURE__ */ jsx(PortalProvider$2, {
scope: I,
forceMount: q,
children: React.Children.map(Q, (j) => /* @__PURE__ */ jsx(Presence, {
present: q || m_.open,
children: /* @__PURE__ */ jsx(Portal, {
asChild: !0,
container: p_,
children: j
})
}))
});
};
DialogPortal$1.displayName = PORTAL_NAME$6;
var OVERLAY_NAME$2 = "DialogOverlay", DialogOverlay$1 = React.forwardRef((j, I) => {
let q = usePortalContext$2(OVERLAY_NAME$2, j.__scopeDialog), { forceMount: Q = q.forceMount,...p_ } = j, m_ = useDialogContext(OVERLAY_NAME$2, j.__scopeDialog);
return m_.modal ? /* @__PURE__ */ jsx(Presence, {
present: Q || m_.open,
children: /* @__PURE__ */ jsx(DialogOverlayImpl, {
...p_,
ref: I
})
}) : null;
});
DialogOverlay$1.displayName = OVERLAY_NAME$2;
var Slot$3 = /* @__PURE__ */ createSlot("DialogOverlay.RemoveScroll"), DialogOverlayImpl = React.forwardRef((j, I) => {
let { __scopeDialog: q,...Q } = j, p_ = useDialogContext(OVERLAY_NAME$2, q);
return /* @__PURE__ */ jsx(Combination_default, {
as: Slot$3,
allowPinchZoom: !0,
shards: [p_.contentRef],
children: /* @__PURE__ */ jsx(Primitive.div, {
"data-state": getState$3(p_.open),
...Q,
ref: I,
style: {
pointerEvents: "auto",
...Q.style
}
})
});
}), CONTENT_NAME$10 = "DialogContent", DialogContent$1 = React.forwardRef((j, I) => {
let q = usePortalContext$2(CONTENT_NAME$10, j.__scopeDialog), { forceMount: Q = q.forceMount,...p_ } = j, m_ = useDialogContext(CONTENT_NAME$10, j.__scopeDialog);
return /* @__PURE__ */ jsx(Presence, {
present: Q || m_.open,
children: m_.modal ? /* @__PURE__ */ jsx(DialogContentModal, {
...p_,
ref: I
}) : /* @__PURE__ */ jsx(DialogContentNonModal, {
...p_,
ref: I
})
});
});
DialogContent$1.displayName = CONTENT_NAME$10;
var DialogContentModal = React.forwardRef((j, I) => {
let q = useDialogContext(CONTENT_NAME$10, j.__scopeDialog), Q = React.useRef(null), p_ = useComposedRefs$1(I, q.contentRef, Q);
return React.useEffect(() => {
let j = Q.current;
if (j) return hideOthers(j);
}, []), /* @__PURE__ */ jsx(DialogContentImpl, {
...j,
ref: p_,
trapFocus: q.open,
disableOutsidePointerEvents: !0,
onCloseAutoFocus: composeEventHandlers(j.onCloseAutoFocus, (j) => {
j.preventDefault(), q.triggerRef.current?.focus();
}),
onPointerDownOutside: composeEventHandlers(j.onPointerDownOutside, (j) => {
let I = j.detail.originalEvent, q = I.button === 0 && I.ctrlKey === !0;
(I.button === 2 || q) && j.preventDefault();
}),
onFocusOutside: composeEventHandlers(j.onFocusOutside, (j) => j.preventDefault())
});
}), DialogContentNonModal = React.forwardRef((j, I) => {
let q = useDialogContext(CONTENT_NAME$10, j.__scopeDialog), Q = React.useRef(!1), p_ = React.useRef(!1);
return /* @__PURE__ */ jsx(DialogContentImpl, {
...j,
ref: I,
trapFocus: !1,
disableOutsidePointerEvents: !1,
onCloseAutoFocus: (I) => {
j.onCloseAutoFocus?.(I), I.defaultPrevented || (Q.current || q.triggerRef.current?.focus(), I.preventDefault()), Q.current = !1, p_.current = !1;
},
onInteractOutside: (I) => {
j.onInteractOutside?.(I), I.defaultPrevented || (Q.current = !0, I.detail.originalEvent.type === "pointerdown" && (p_.current = !0));
let m_ = I.target;
q.triggerRef.current?.contains(m_) && I.preventDefault(), I.detail.originalEvent.type === "focusin" && p_.current && I.preventDefault();
}
});
}), DialogContentImpl = React.forwardRef((j, I) => {
let { __scopeDialog: q, trapFocus: Q, onOpenAutoFocus: p_, onCloseAutoFocus: m_,...h_ } = j, g_ = useDialogContext(CONTENT_NAME$10, q), __ = React.useRef(null), v_ = useComposedRefs$1(I, __);
return useFocusGuards(), /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(FocusScope, {
asChild: !0,
loop: !0,
trapped: Q,
onMountAutoFocus: p_,
onUnmountAutoFocus: m_,
children: /* @__PURE__ */ jsx(DismissableLayer, {
role: "dialog",
id: g_.contentId,
"aria-describedby": g_.descriptionId,
"aria-labelledby": g_.titleId,
"data-state": getState$3(g_.open),
...h_,
ref: v_,
onDismiss: () => g_.onOpenChange(!1)
})
}), /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(TitleWarning, { titleId: g_.titleId }), /* @__PURE__ */ jsx(DescriptionWarning$1, {
contentRef: __,
descriptionId: g_.descriptionId
})] })] });
}), TITLE_NAME$1 = "DialogTitle", DialogTitle$1 = React.forwardRef((j, I) => {
let { __scopeDialog: q,...Q } = j, p_ = useDialogContext(TITLE_NAME$1, q);
return /* @__PURE__ */ jsx(Primitive.h2, {
id: p_.titleId,
...Q,
ref: I
});
});
DialogTitle$1.displayName = TITLE_NAME$1;
var DESCRIPTION_NAME$1 = "DialogDescription", DialogDescription$1 = React.forwardRef((j, I) => {
let { __scopeDialog: q,...Q } = j, p_ = useDialogContext(DESCRIPTION_NAME$1, q);
return /* @__PURE__ */ jsx(Primitive.p, {
id: p_.descriptionId,
...Q,
ref: I
});
});
DialogDescription$1.displayName = DESCRIPTION_NAME$1;
var CLOSE_NAME = "DialogClose", DialogClose$1 = React.forwardRef((j, I) => {
let { __scopeDialog: q,...Q } = j, p_ = useDialogContext(CLOSE_NAME, q);
return /* @__PURE__ */ jsx(Primitive.button, {
type: "button",
...Q,
ref: I,
onClick: composeEventHandlers(j.onClick, () => p_.onOpenChange(!1))
});
});
DialogClose$1.displayName = CLOSE_NAME;
function getState$3(j) {
return j ? "open" : "closed";
}
var TITLE_WARNING_NAME = "DialogTitleWarning", [WarningProvider, useWarningContext] = createContext2(TITLE_WARNING_NAME, {
contentName: CONTENT_NAME$10,
titleName: TITLE_NAME$1,
docsSlug: "dialog"
}), TitleWarning = ({ titleId: j }) => {
let I = useWarningContext(TITLE_WARNING_NAME), q = `\`${I.contentName}\` requires a \`${I.titleName}\` for the component to be accessible for screen reader users.
If you want to hide the \`${I.titleName}\`, you can wrap it with our VisuallyHidden component.
For more information, see https://radix-ui.com/primitives/docs/components/${I.docsSlug}`;
return React.useEffect(() => {
j && (document.getElementById(j) || console.error(q));
}, [q, j]), null;
}, DESCRIPTION_WARNING_NAME = "DialogDescriptionWarning", DescriptionWarning$1 = ({ contentRef: j, descriptionId: I }) => {
let q = `Warning: Missing \`Description\` or \`aria-describedby={undefined}\` for {${useWarningContext(DESCRIPTION_WARNING_NAME).contentName}}.`;
return React.useEffect(() => {
let Q = j.current?.getAttribute("aria-describedby");
I && Q && (document.getElementById(I) || console.warn(q));
}, [
q,
j,
I
]), null;
}, Root$7 = Dialog$1, Trigger$5 = DialogTrigger$1, Portal$4 = DialogPortal$1, Overlay = DialogOverlay$1, Content$2 = DialogContent$1, Title = DialogTitle$1, Description = DialogDescription$1, Close = DialogClose$1;
function Dialog({ ...j }) {
return /* @__PURE__ */ jsx(Root$7, {
"data-slot": "dialog",
...j
});
}
function DialogTrigger({ ...j }) {
return /* @__PURE__ */ jsx(Trigger$5, {
"data-slot": "dialog-trigger",
...j
});
}
function DialogPortal({ ...j }) {
let [I, q] = useState(null);
return /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(Portal$4, {
"data-slot": "dialog-portal",
...j,
container: I
}), /* @__PURE__ */ jsx("div", {
ref: q,
style: { display: "contents" }
})] });
}
function DialogClose({ ...j }) {
return /* @__PURE__ */ jsx(Close, {
"data-slot": "dialog-close",
...j
});
}
function DialogOverlay({ className: j,...I }) {
return /* @__PURE__ */ jsx(Overlay, {
"data-slot": "dialog-overlay",
className: cn("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50", j),
...I
});
}
function DialogContent({ className: j, children: I, showCloseButton: q = !0,...Q }) {
return /* @__PURE__ */ jsxs(DialogPortal, {
"data-slot": "dialog-portal",
children: [/* @__PURE__ */ jsx(DialogOverlay, {}), /* @__PURE__ */ jsxs(Content$2, {
"data-slot": "dialog-content",
className: cn("bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed left-[50%] top-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg", j),
...Q,
children: [I, q && /* @__PURE__ */ jsxs(Close, {
"data-slot": "dialog-close",
className: "ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground rounded-xs focus:outline-hidden absolute right-4 top-4 opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 disabled:pointer-events-none [&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0",
children: [/* @__PURE__ */ jsx(XIcon, {}), /* @__PURE__ */ jsx("span", {
className: "sr-only",
children: "Close"
})]
})]
})]
});
}
function DialogHeader({ className: j,...I }) {
return /* @__PURE__ */ jsx("div", {
"data-slot": "dialog-header",
className: cn("flex flex-col gap-2 text-center sm:text-left", j),
...I
});
}
function DialogFooter({ className: j,...I }) {
return /* @__PURE__ */ jsx("div", {
"data-slot": "dialog-footer",
className: cn("flex flex-col-reverse gap-2 sm:flex-row sm:justify-end", j),
...I
});
}
function DialogTitle({ className: j,...I }) {
return /* @__PURE__ */ jsx(Title, {
"data-slot": "dialog-title",
className: cn("text-lg font-semibold leading-none", j),
...I
});
}
function DialogDescription({ className: j,...I }) {
return /* @__PURE__ */ jsx(Description, {
"data-slot": "dialog-description",
className: cn("text-muted-foreground text-sm", j),
...I
});
}
function createCollection(j) {
let I = j + "CollectionProvider", [q, Q] = createContextScope(I), [p_, m_] = q(I, {
collectionRef: { current: null },
itemMap: /* @__PURE__ */ new Map()
}), h_ = (j) => {
let { scope: I, children: q } = j, Q = ke.useRef(null), m_ = ke.useRef(/* @__PURE__ */ new Map()).current;
return /* @__PURE__ */ jsx(p_, {
scope: I,
itemMap: m_,
collectionRef: Q,
children: q
});
};
h_.displayName = I;
let g_ = j + "CollectionSlot", __ = /* @__PURE__ */ createSlot(g_), v_ = ke.forwardRef((j, I) => {
let { scope: q, children: Q } = j, p_ = m_(g_, q), h_ = useComposedRefs$1(I, p_.collectionRef);
return /* @__PURE__ */ jsx(__, {
ref: h_,
children: Q
});
});
v_.displayName = g_;
let y_ = j + "CollectionItemSlot", b_ = "data-radix-collection-item", x_ = /* @__PURE__ */ createSlot(y_), S_ = ke.forwardRef((j, I) => {
let { scope: q, children: Q,...p_ } = j, h_ = ke.useRef(null), g_ = useComposedRefs$1(I, h_), __ = m_(y_, q);
return ke.useEffect(() => (__.itemMap.set(h_, {
ref: h_,
...p_
}), () => void __.itemMap.delete(h_))), /* @__PURE__ */ jsx(x_, {
[b_]: "",
ref: g_,
children: Q
});
});
S_.displayName = y_;
function C_(I) {
let q = m_(j + "CollectionConsumer", I);
return ke.useCallback(() => {
let j = q.collectionRef.current;
if (!j) return [];
let I = Array.from(j.querySelectorAll(`[${b_}]`));
return Array.from(q.itemMap.values()).sort((j, q) => I.indexOf(j.ref.current) - I.indexOf(q.ref.current));
}, [q.collectionRef, q.itemMap]);
}
return [
{
Provider: h_,
Slot: v_,
ItemSlot: S_
},
C_,
Q
];
}
var DirectionContext = React.createContext(void 0);
function useDirection(j) {
let I = React.useContext(DirectionContext);
return j || I || "ltr";
}
function t(j) {
return j.split("-")[1];
}
function e(j) {
return j === "y" ? "height" : "width";
}
function n$1(j) {
return j.split("-")[0];
}
function o$1(j) {
return ["top", "bottom"].includes(n$1(j)) ? "x" : "y";
}
function i$1(j, I, q) {
let { reference: Q, floating: p_ } = j, m_ = Q.x + Q.width / 2 - p_.width / 2, h_ = Q.y + Q.height / 2 - p_.height / 2, g_ = o$1(I), __ = e(g_), v_ = Q[__] / 2 - p_[__] / 2, y_ = g_ === "x", b_;
switch (n$1(I)) {
case "top":
b_ = {
x: m_,
y: Q.y - p_.height
};
break;
case "bottom":
b_ = {
x: m_,
y: Q.y + Q.height
};
break;
case "right":
b_ = {
x: Q.x + Q.width,
y: h_
};
break;
case "left":
b_ = {
x: Q.x - p_.width,
y: h_
};
break;
default: b_ = {
x: Q.x,
y: Q.y
};
}
switch (t(I)) {
case "start":
b_[g_] -= v_ * (q && y_ ? -1 : 1);
break;
case "end": b_[g_] += v_ * (q && y_ ? -1 : 1);
}
return b_;
}
var r = async (j, I, q) => {
let { placement: Q = "bottom", strategy: p_ = "absolute", middleware: m_ = [], platform: h_ } = q, g_ = m_.filter(Boolean), __ = await (h_.isRTL == null ? void 0 : h_.isRTL(I)), v_ = await h_.getElementRects({
reference: j,
floating: I,
strategy: p_
}), { x: y_, y: b_ } = i$1(v_, Q, __), x_ = Q, S_ = {}, C_ = 0;
for (let q = 0; q < g_.length; q++) {
let { name: m_, fn: w_ } = g_[q], { x: T_, y: E_, data: D_, reset: O_ } = await w_({
x: y_,
y: b_,
initialPlacement: Q,
placement: x_,
strategy: p_,
middlewareData: S_,
rects: v_,
platform: h_,
elements: {
reference: j,
floating: I
}
});
y_ = T_ ?? y_, b_ = E_ ?? b_, S_ = {
...S_,
[m_]: {
...S_[m_],
...D_
}
}, O_ && C_ <= 50 && (C_++, typeof O_ == "object" && (O_.placement && (x_ = O_.placement), O_.rects && (v_ = !0 === O_.rects ? await h_.getElementRects({
reference: j,
floating: I,
strategy: p_
}) : O_.rects), {x: y_, y: b_} = i$1(v_, x_, __)), q = -1);
}
return {
x: y_,
y: b_,
placement: x_,
strategy: p_,
middlewareData: S_
};
};
function a$1(j) {
return typeof j == "number" ? {
top: j,
right: j,
bottom: j,
left: j
} : function(j) {
return {
top: 0,
right: 0,
bottom: 0,
left: 0,
...j
};
}(j);
}
function l$1(j) {
return {
...j,
top: j.y,
left: j.x,
right: j.x + j.width,
bottom: j.y + j.height
};
}
async function s(j, I) {
var q;
I === void 0 && (I = {});
let { x: Q, y: p_, platform: m_, rects: h_, elements: g_, strategy: __ } = j, { boundary: v_ = "clippingAncestors", rootBoundary: y_ = "viewport", elementContext: b_ = "floating", altBoundary: x_ = !1, padding: S_ = 0 } = I, C_ = a$1(S_), w_ = g_[x_ ? b_ === "floating" ? "reference" : "floating" : b_], T_ = l$1(await m_.getClippingRect({
element: (q = await (m_.isElement == null ? void 0 : m_.isElement(w_))) == null || q ? w_ : w_.contextElement || await (m_.getDocumentElement == null ? void 0 : m_.getDocumentElement(g_.floating)),
boundary: v_,
rootBoundary: y_,
strategy: __
})), E_ = b_ === "floating" ? {
...h_.floating,
x: Q,
y: p_
} : h_.reference, D_ = await (m_.getOffsetParent == null ? void 0 : m_.getOffsetParent(g_.floating)), O_ = await (m_.isElement == null ? void 0 : m_.isElement(D_)) && await (m_.getScale == null ? void 0 : m_.getScale(D_)) || {
x: 1,
y: 1
}, k_ = l$1(m_.convertOffsetParentRelativeRectToViewportRelativeRect ? await m_.convertOffsetParentRelativeRectToViewportRelativeRect({
rect: E_,
offsetParent: D_,
strategy: __
}) : E_);
return {
top: (T_.top - k_.top + C_.top) / O_.y,
bottom: (k_.bottom - T_.bottom + C_.bottom) / O_.y,
left: (T_.left - k_.left + C_.left) / O_.x,
right: (k_.right - T_.right + C_.right) / O_.x
};
}
var c$1 = Math.min, f$1 = Math.max;
function m$2(j, I, q) {
return f$1(j, c$1(I, q));
}
var u$1 = (j) => ({
name: "arrow",
options: j,
async fn(I) {
let { element: q, padding: Q = 0 } = j || {}, { x: p_, y: m_, placement: h_, rects: g_, platform: __, elements: v_ } = I;
if (q == null) return {};
let y_ = a$1(Q), b_ = {
x: p_,
y: m_
}, x_ = o$1(h_), S_ = e(x_), C_ = await __.getDimensions(q), w_ = x_ === "y", T_ = w_ ? "top" : "left", E_ = w_ ? "bottom" : "right", D_ = w_ ? "clientHeight" : "clientWidth", O_ = g_.reference[S_] + g_.reference[x_] - b_[x_] - g_.floating[S_], k_ = b_[x_] - g_.reference[x_], A_ = await (__.getOffsetParent == null ? void 0 : __.getOffsetParent(q)), j_ = A_ ? A_[D_] : 0;
j_ && await (__.isElement == null ? void 0 : __.isElement(A_)) || (j_ = v_.floating[D_] || g_.floating[S_]);
let M_ = O_ / 2 - k_ / 2, N_ = y_[T_], P_ = j_ - C_[S_] - y_[E_], F_ = j_ / 2 - C_[S_] / 2 + M_, I_ = m$2(N_, F_, P_), L_ = t(h_) != null && F_ != I_ && g_.reference[S_] / 2 - (F_ < N_ ? y_[T_] : y_[E_]) - C_[S_] / 2 < 0;
return {
[x_]: b_[x_] - (L_ ? F_ < N_ ? N_ - F_ : P_ - F_ : 0),
data: {
[x_]: I_,
centerOffset: F_ - I_
}
};
}
}), g$1 = [
"top",
"right",
"bottom",
"left"
];
g$1.reduce(((j, I) => j.concat(I, I + "-start", I + "-end")), []);
var p$2 = {
left: "right",
right: "left",
bottom: "top",
top: "bottom"
};
function h$2(j) {
return j.replace(/left|right|bottom|top/g, ((j) => p$2[j]));
}
function y$1(j, I, q) {
q === void 0 && (q = !1);
let Q = t(j), p_ = o$1(j), m_ = e(p_), h_ = p_ === "x" ? Q === (q ? "end" : "start") ? "right" : "left" : Q === "start" ? "bottom" : "top";
return I.reference[m_] > I.floating[m_] && (h_ = h$2(h_)), {
main: h_,
cross: h$2(h_)
};
}
var x$1 = {
start: "end",
end: "start"
};
function w$1(j) {
return j.replace(/start|end/g, ((j) => x$1[j]));
}
var b = function(j) {
return j === void 0 && (j = {}), {
name: "flip",
options: j,
async fn(I) {
let { placement: q, middlewareData: Q, rects: p_, initialPlacement: m_, platform: h_, elements: g_ } = I, { mainAxis: __ = !0, crossAxis: v_ = !0, fallbackPlacements: y_, fallbackStrategy: b_ = "bestFit", fallbackAxisSideDirection: x_ = "none", flipAlignment: S_ = !0,...C_ } = j, w_ = n$1(q), T_ = n$1(m_) === m_, E_ = await (h_.isRTL == null ? void 0 : h_.isRTL(g_.floating)), D_ = y_ || (T_ || !S_ ? [h$2(m_)] : function(j) {
let I = h$2(j);
return [
w$1(j),
I,
w$1(I)
];
}(m_));
y_ || x_ === "none" || D_.push(...function(j, I, q, Q) {
let p_ = t(j), m_ = function(j, I, q) {
let Q = ["left", "right"], p_ = ["right", "left"], m_ = ["top", "bottom"], h_ = ["bottom", "top"];
switch (j) {
case "top":
case "bottom": return q ? I ? p_ : Q : I ? Q : p_;
case "left":
case "right": return I ? m_ : h_;
default: return [];
}
}(n$1(j), q === "start", Q);
return p_ && (m_ = m_.map(((j) => j + "-" + p_)), I && (m_ = m_.concat(m_.map(w$1)))), m_;
}(m_, S_, x_, E_));
let O_ = [m_, ...D_], k_ = await s(I, C_), A_ = [], j_ = Q.flip?.overflows || [];
if (__ && A_.push(k_[w_]), v_) {
let { main: j, cross: I } = y$1(q, p_, E_);
A_.push(k_[j], k_[I]);
}
if (j_ = [...j_, {
placement: q,
overflows: A_
}], !A_.every(((j) => j <= 0))) {
let j = (Q.flip?.index || 0) + 1, I = O_[j];
if (I) return {
data: {
index: j,
overflows: j_
},
reset: { placement: I }
};
let p_ = j_.filter(((j) => j.overflows[0] <= 0)).sort(((j, I) => j.overflows[1] - I.overflows[1]))[0]?.placement;
if (!p_) switch (b_) {
case "bestFit": {
let j = j_.map(((j) => [j.placement, j.overflows.filter(((j) => j > 0)).reduce(((j, I) => j + I), 0)])).sort(((j, I) => j[1] - I[1]))[0]?.[0];
j && (p_ = j);
break;
}
case "initialPlacement": p_ = m_;
}
if (q !== p_) return { reset: { placement: p_ } };
}
return {};
}
};
};
function A(j, I) {
return {
top: j.top - I.height,
right: j.right - I.width,
bottom: j.bottom - I.height,
left: j.left - I.width
};
}
function R$1(j) {
return g$1.some(((I) => j[I] >= 0));
}
var P$1 = function(j) {
return j === void 0 && (j = {}), {
name: "hide",
options: j,
async fn(I) {
let { strategy: q = "referenceHidden",...Q } = j, { rects: p_ } = I;
switch (q) {
case "referenceHidden": {
let j = A(await s(I, {
...Q,
elementContext: "reference"
}), p_.reference);
return { data: {
referenceHiddenOffsets: j,
referenceHidden: R$1(j)
} };
}
case "escaped": {
let j = A(await s(I, {
...Q,
altBoundary: !0
}), p_.floating);
return { data: {
escapedOffsets: j,
escaped: R$1(j)
} };
}
default: return {};
}
}
};
}, D$2 = function(j) {
return j === void 0 && (j = 0), {
name: "offset",
options: j,
async fn(I) {
let { x: q, y: Q } = I, p_ = await async function(j, I) {
let { placement: q, platform: Q, elements: p_ } = j, m_ = await (Q.isRTL == null ? void 0 : Q.isRTL(p_.floating)), h_ = n$1(q), g_ = t(q), __ = o$1(q) === "x", v_ = ["left", "top"].includes(h_) ? -1 : 1, y_ = m_ && __ ? -1 : 1, b_ = typeof I == "function" ? I(j) : I, { mainAxis: x_, crossAxis: S_, alignmentAxis: C_ } = typeof b_ == "number" ? {
mainAxis: b_,
crossAxis: 0,
alignmentAxis: null
} : {
mainAxis: 0,
crossAxis: 0,
alignmentAxis: null,
...b_
};
return g_ && typeof C_ == "number" && (S_ = g_ === "end" ? -1 * C_ : C_), __ ? {
x: S_ * y_,
y: x_ * v_
} : {
x: x_ * v_,
y: S_ * y_
};
}(I, j);
return {
x: q + p_.x,
y: Q + p_.y,
data: p_
};
}
};
};
function L$2(j) {
return j === "x" ? "y" : "x";
}
var k$3 = function(j) {
return j === void 0 && (j = {}), {
name: "shift",
options: j,
async fn(I) {
let { x: q, y: Q, placement: p_ } = I, { mainAxis: m_ = !0, crossAxis: h_ = !1, limiter: g_ = { fn: (j) => {
let { x: I, y: q } = j;
return {
x: I,
y: q
};
} },...__ } = j, v_ = {
x: q,
y: Q
}, y_ = await s(I, __), b_ = o$1(n$1(p_)), x_ = L$2(b_), S_ = v_[b_], C_ = v_[x_];
if (m_) {
let j = b_ === "y" ? "bottom" : "right";
S_ = m$2(S_ + y_[b_ === "y" ? "top" : "left"], S_, S_ - y_[j]);
}
if (h_) {
let j = x_ === "y" ? "bottom" : "right";
C_ = m$2(C_ + y_[x_ === "y" ? "top" : "left"], C_, C_ - y_[j]);
}
let w_ = g_.fn({
...I,
[b_]: S_,
[x_]: C_
});
return {
...w_,
data: {
x: w_.x - q,
y: w_.y - Q
}
};
}
};
}, O = function(j) {
return j === void 0 && (j = {}), {
options: j,
fn(I) {
let { x: q, y: Q, placement: p_, rects: m_, middlewareData: h_ } = I, { offset: g_ = 0, mainAxis: __ = !0, crossAxis: v_ = !0 } = j, y_ = {
x: q,
y: Q
}, b_ = o$1(p_), x_ = L$2(b_), S_ = y_[b_], C_ = y_[x_], w_ = typeof g_ == "function" ? g_(I) : g_, T_ = typeof w_ == "number" ? {
mainAxis: w_,
crossAxis: 0
} : {
mainAxis: 0,
crossAxis: 0,
...w_
};
if (__) {
let j = b_ === "y" ? "height" : "width", I = m_.reference[b_] - m_.floating[j] + T_.mainAxis, q = m_.reference[b_] + m_.reference[j] - T_.mainAxis;
S_ < I ? S_ = I : S_ > q && (S_ = q);
}
if (v_) {
let j = b_ === "y" ? "width" : "height", I = ["top", "left"].includes(n$1(p_)), q = m_.reference[x_] - m_.floating[j] + (I && h_.offset?.[x_] || 0) + (I ? 0 : T_.crossAxis), Q = m_.reference[x_] + m_.reference[j] + (I ? 0 : h_.offset?.[x_] || 0) - (I ? T_.crossAxis : 0);
C_ < q ? C_ = q : C_ > Q && (C_ = Q);
}
return {
[b_]: S_,
[x_]: C_
};
}
};
}, B$2 = function(j) {
return j === void 0 && (j = {}), {
name: "size",
options: j,
async fn(I) {
let { placement: q, rects: Q, platform: p_, elements: m_ } = I, { apply: h_ = (() => {}),...g_ } = j, __ = await s(I, g_), v_ = n$1(q), y_ = t(q), b_ = o$1(q) === "x", { width: x_, height: S_ } = Q.floating, C_, w_;
v_ === "top" || v_ === "bottom" ? (C_ = v_, w_ = y_ === (await (p_.isRTL == null ? void 0 : p_.isRTL(m_.floating)) ? "start" : "end") ? "left" : "right") : (w_ = v_, C_ = y_ === "end" ? "top" : "bottom");
let T_ = S_ - __[C_], E_ = x_ - __[w_], D_ = !I.middlewareData.shift, O_ = T_, k_ = E_;
if (b_) {
let j = x_ - __.left - __.right;
k_ = y_ || D_ ? c$1(E_, j) : j;
} else {
let j = S_ - __.top - __.bottom;
O_ = y_ || D_ ? c$1(T_, j) : j;
}
if (D_ && !y_) {
let j = f$1(__.left, 0), I = f$1(__.right, 0), q = f$1(__.top, 0), Q = f$1(__.bottom, 0);
b_ ? k_ = x_ - 2 * (j !== 0 || I !== 0 ? j + I : f$1(__.left, __.right)) : O_ = S_ - 2 * (q !== 0 || Q !== 0 ? q + Q : f$1(__.top, __.bottom));
}
await h_({
...I,
availableWidth: k_,
availableHeight: O_
});
let A_ = await p_.getDimensions(m_.floating);
return x_ !== A_.width || S_ !== A_.height ? { reset: { rects: !0 } } : {};
}
};
};
function n(j) {
return j.ownerDocument?.defaultView || window;
}
function o(j) {
return n(j).getComputedStyle(j);
}
function i(j) {
return j instanceof n(j).Node;
}
function r$1(j) {
return i(j) ? (j.nodeName || "").toLowerCase() : "";
}
function l$2(j) {
return j instanceof n(j).HTMLElement;
}
function c(j) {
return j instanceof n(j).Element;
}
function s$1(j) {
return typeof ShadowRoot > "u" ? !1 : j instanceof n(j).ShadowRoot || j instanceof ShadowRoot;
}
function f(j) {
let { overflow: I, overflowX: q, overflowY: Q, display: p_ } = o(j);
return /auto|scroll|overlay|hidden|clip/.test(I + Q + q) && !["inline", "contents"].includes(p_);
}
function u$2(j) {
return [
"table",
"td",
"th"
].includes(r$1(j));
}
function a(j) {
let I = d(), q = o(j);
return q.transform !== "none" || q.perspective !== "none" || !I && !!q.backdropFilter && q.backdropFilter !== "none" || !I && !!q.filter && q.filter !== "none" || [
"transform",
"perspective",
"filter"
].some(((j) => (q.willChange || "").includes(j))) || [
"paint",
"layout",
"strict",
"content"
].some(((j) => (q.contain || "").includes(j)));
}
function d() {
return !(typeof CSS > "u" || !CSS.supports) && CSS.supports("-webkit-backdrop-filter", "none");
}
function h$1(j) {
return [
"html",
"body",
"#document"
].includes(r$1(j));
}
var p$1 = Math.min, m$1 = Math.max, g = Math.round;
function y(j) {
let I = o(j), q = parseFloat(I.width) || 0, Q = parseFloat(I.height) || 0, p_ = l$2(j), m_ = p_ ? j.offsetWidth : q, h_ = p_ ? j.offsetHeight : Q, g_ = g(q) !== m_ || g(Q) !== h_;
return g_ && (q = m_, Q = h_), {
width: q,
height: Q,
fallback: g_
};
}
function x(j) {
return c(j) ? j : j.contextElement;
}
var w = {
x: 1,
y: 1
};
function v$2(j) {
let I = x(j);
if (!l$2(I)) return w;
let q = I.getBoundingClientRect(), { width: Q, height: p_, fallback: m_ } = y(I), h_ = (m_ ? g(q.width) : q.width) / Q, g_ = (m_ ? g(q.height) : q.height) / p_;
return h_ && Number.isFinite(h_) || (h_ = 1), g_ && Number.isFinite(g_) || (g_ = 1), {
x: h_,
y: g_
};
}
var b$1 = {
x: 0,
y: 0
};
function L$1(j, I, q) {
if (I === void 0 && (I = !0), !d()) return b$1;
let Q = j ? n(j) : window;
return !q || I && q !== Q ? b$1 : {
x: Q.visualViewport?.offsetLeft || 0,
y: Q.visualViewport?.offsetTop || 0
};
}
function E(j, I, q, Q) {
I === void 0 && (I = !1), q === void 0 && (q = !1);
let p_ = j.getBoundingClientRect(), m_ = x(j), h_ = w;
I && (Q ? c(Q) && (h_ = v$2(Q)) : h_ = v$2(j));
let g_ = L$1(m_, q, Q), __ = (p_.left + g_.x) / h_.x, v_ = (p_.top + g_.y) / h_.y, y_ = p_.width / h_.x, b_ = p_.height / h_.y;
if (m_) {
let j = n(m_), I = Q && c(Q) ? n(Q) : Q, q = j.frameElement;
for (; q && Q && I !== j;) {
let j = v$2(q), I = q.getBoundingClientRect(), Q = getComputedStyle(q);
I.x += (q.clientLeft + parseFloat(Q.paddingLeft)) * j.x, I.y += (q.clientTop + parseFloat(Q.paddingTop)) * j.y, __ *= j.x, v_ *= j.y, y_ *= j.x, b_ *= j.y, __ += I.x, v_ += I.y, q = n(q).frameElement;
}
}
return l$1({
width: y_,
height: b_,
x: __,
y: v_
});
}
function R(j) {
return ((i(j) ? j.ownerDocument : j.document) || window.document).documentElement;
}
function T$2(j) {
return c(j) ? {
scrollLeft: j.scrollLeft,
scrollTop: j.scrollTop
} : {
scrollLeft: j.pageXOffset,
scrollTop: j.pageYOffset
};
}
function S(j) {
return E(R(j)).left + T$2(j).scrollLeft;
}
function C(j) {
if (r$1(j) === "html") return j;
let I = j.assignedSlot || j.parentNode || s$1(j) && j.host || R(j);
return s$1(I) ? I.host : I;
}
function F(j) {
let I = C(j);
return h$1(I) ? I.ownerDocument.body : l$2(I) && f(I) ? I : F(I);
}
function W$1(j, I) {
I === void 0 && (I = []);
let q = F(j), Q = q === j.ownerDocument?.body, p_ = n(q);
return Q ? I.concat(p_, p_.visualViewport || [], f(q) ? q : []) : I.concat(q, W$1(q));
}
function D$3(j, I, q) {
let Q;
if (I === "viewport") Q = function(j, I) {
let q = n(j), Q = R(j), p_ = q.visualViewport, m_ = Q.clientWidth, h_ = Q.clientHeight, g_ = 0, __ = 0;
if (p_) {
m_ = p_.width, h_ = p_.height;
let j = d();
(!j || j && I === "fixed") && (g_ = p_.offsetLeft, __ = p_.offsetTop);
}
return {
width: m_,
height: h_,
x: g_,
y: __
};
}(j, q);
else if (I === "document") Q = function(j) {
let I = R(j), q = T$2(j), Q = j.ownerDocument.body, p_ = m$1(I.scrollWidth, I.clientWidth, Q.scrollWidth, Q.clientWidth), m_ = m$1(I.scrollHeight, I.clientHeight, Q.scrollHeight, Q.clientHeight), h_ = -q.scrollLeft + S(j), g_ = -q.scrollTop;
return o(Q).direction === "rtl" && (h_ += m$1(I.clientWidth, Q.clientWidth) - p_), {
width: p_,
height: m_,
x: h_,
y: g_
};
}(R(j));
else if (c(I)) Q = function(j, I) {
let q = E(j, !0, I === "fixed"), Q = q.top + j.clientTop, p_ = q.left + j.clientLeft, m_ = l$2(j) ? v$2(j) : {
x: 1,
y: 1
};
return {
width: j.clientWidth * m_.x,
height: j.clientHeight * m_.y,
x: p_ * m_.x,
y: Q * m_.y
};
}(I, q);
else {
let q = L$1(j);
Q = {
...I,
x: I.x - q.x,
y: I.y - q.y
};
}
return l$1(Q);
}
function H$2(j, I) {
let q = C(j);
return !(q === I || !c(q) || h$1(q)) && (o(q).position === "fixed" || H$2(q, I));
}
function O$1(j, I) {
return l$2(j) && o(j).position !== "fixed" ? I ? I(j) : j.offsetParent : null;
}
function P$2(j, I) {
let q = n(j);
if (!l$2(j)) return q;
let Q = O$1(j, I);
for (; Q && u$2(Q) && o(Q).position === "static";) Q = O$1(Q, I);
return Q && (r$1(Q) === "html" || r$1(Q) === "body" && o(Q).position === "static" && !a(Q)) ? q : Q || function(j) {
let I = C(j);
for (; l$2(I) && !h$1(I);) {
if (a(I)) return I;
I = C(I);
}
return null;
}(j) || q;
}
function V(j, I, q) {
let Q = l$2(I), p_ = R(I), m_ = q === "fixed", h_ = E(j, !0, m_, I), g_ = {
scrollLeft: 0,
scrollTop: 0
}, __ = {
x: 0,
y: 0
};
if (Q || !Q && !m_) if ((r$1(I) !== "body" || f(p_)) && (g_ = T$2(I)), l$2(I)) {
let j = E(I, !0, m_, I);
__.x = j.x + I.clientLeft, __.y = j.y + I.clientTop;
} else p_ && (__.x = S(p_));
return {
x: h_.left + g_.scrollLeft - __.x,
y: h_.top + g_.scrollTop - __.y,
width: h_.width,
height: h_.height
};
}
var k$4 = {
getClippingRect: function(j) {
let { element: I, boundary: q, rootBoundary: Q, strategy: p_ } = j, m_ = [...q === "clippingAncestors" ? function(j, I) {
let q = I.get(j);
if (q) return q;
let Q = W$1(j).filter(((j) => c(j) && r$1(j) !== "body")), p_ = null, m_ = o(j).position === "fixed", h_ = m_ ? C(j) : j;
for (; c(h_) && !h$1(h_);) {
let I = o(h_), q = a(h_);
q || I.position !== "fixed" || (p_ = null), (m_ ? !q && !p_ : !q && I.position === "static" && p_ && ["absolute", "fixed"].includes(p_.position) || f(h_) && !q && H$2(j, h_)) ? Q = Q.filter(((j) => j !== h_)) : p_ = I, h_ = C(h_);
}
return I.set(j, Q), Q;
}(I, this._c) : [].concat(q), Q], h_ = m_[0], g_ = m_.reduce(((j, q) => {
let Q = D$3(I, q, p_);
return j.top = m$1(Q.top, j.top), j.right = p$1(Q.right, j.right), j.bottom = p$1(Q.bottom, j.bottom), j.left = m$1(Q.left, j.left), j;
}), D$3(I, h_, p_));
return {
width: g_.right - g_.left,
height: g_.bottom - g_.top,
x: g_.left,
y: g_.top
};
},
convertOffsetParentRelativeRectToViewportRelativeRect: function(j) {
let { rect: I, offsetParent: q, strategy: Q } = j, p_ = l$2(q), m_ = R(q);
if (q === m_) return I;
let h_ = {
scrollLeft: 0,
scrollTop: 0
}, g_ = {
x: 1,
y: 1
}, __ = {
x: 0,
y: 0
};
if ((p_ || !p_ && Q !== "fixed") && ((r$1(q) !== "body" || f(m_)) && (h_ = T$2(q)), l$2(q))) {
let j = E(q);
g_ = v$2(q), __.x = j.x + q.clientLeft, __.y = j.y + q.clientTop;
}
return {
width: I.width * g_.x,
height: I.height * g_.y,
x: I.x * g_.x - h_.scrollLeft * g_.x + __.x,
y: I.y * g_.y - h_.scrollTop * g_.y + __.y
};
},
isElement: c,
getDimensions: function(j) {
return y(j);
},
getOffsetParent: P$2,
getDocumentElement: R,
getScale: v$2,
async getElementRects(j) {
let { reference: I, floating: q, strategy: Q } = j, p_ = this.getOffsetParent || P$2, m_ = this.getDimensions;
return {
reference: V(I, await p_(q), Q),
floating: {
x: 0,
y: 0,
...await m_(q)
}
};
},
getClientRects: (j) => Array.from(j.getClientRects()),
isRTL: (j) => o(j).direction === "rtl"
};
function z$2(j, I, q, Q) {
Q === void 0 && (Q = {});
let { ancestorScroll: p_ = !0, ancestorResize: m_ = !0, elementResize: h_ = !0, animationFrame: g_ = !1 } = Q, __ = p_ || m_ ? [...c(j) ? W$1(j) : j.contextElement ? W$1(j.contextElement) : [], ...W$1(I)] : [];
__.forEach(((j) => {
let I = !c(j) && j.toString().includes("V");
!p_ || g_ && !I || j.addEventListener("scroll", q, { passive: !0 }), m_ && j.addEventListener("resize", q);
}));
let v_, y_ = null;
h_ && (y_ = new ResizeObserver((() => {
q();
})), c(j) && !g_ && y_.observe(j), c(j) || !j.contextElement || g_ || y_.observe(j.contextElement), y_.observe(I));
let b_ = g_ ? E(j) : null;
return g_ && function I() {
let Q = E(j);
!b_ || Q.x === b_.x && Q.y === b_.y && Q.width === b_.width && Q.height === b_.height || q(), b_ = Q, v_ = requestAnimationFrame(I);
}(), q(), () => {
var j;
__.forEach(((j) => {
p_ && j.removeEventListener("scroll", q), m_ && j.removeEventListener("resize", q);
})), (j = y_) == null || j.disconnect(), y_ = null, g_ && cancelAnimationFrame(v_);
};
}
var M = (j, I, q) => {
let Q = /* @__PURE__ */ new Map(), p_ = {
platform: k$4,
...q
}, m_ = {
...p_.platform,
_c: Q
};
return r(j, I, {
...p_,
platform: m_
});
}, index$1 = typeof document < "u" ? useLayoutEffect : useEffect;
function deepEqual(j, I) {
if (j === I) return !0;
if (typeof j != typeof I) return !1;
if (typeof j == "function" && j.toString() === I.toString()) return !0;
let q, Q, p_;
if (j && I && typeof j == "object") {
if (Array.isArray(j)) {
if (q = j.length, q !== I.length) return !1;
for (Q = q; Q-- !== 0;) if (!deepEqual(j[Q], I[Q])) return !1;
return !0;
}
if (p_ = Object.keys(j), q = p_.length, q !== Object.keys(I).length) return !1;
for (Q = q; Q-- !== 0;) if (!{}.hasOwnProperty.call(I, p_[Q])) return !1;
for (Q = q; Q-- !== 0;) {
let q = p_[Q];
if (!(q === "_owner" && j.$$typeof) && !deepEqual(j[q], I[q])) return !1;
}
return !0;
}
return j !== j && I !== I;
}
function getDPR(j) {
return typeof window > "u" ? 1 : (j.ownerDocument.defaultView || window).devicePixelRatio || 1;
}
function roundByDPR(j, I) {
let q = getDPR(j);
return Math.round(I * q) / q;
}
function useLatestRef(j) {
let I = React.useRef(j);
return index$1(() => {
I.current = j;
}), I;
}
function useFloating(j) {
j === void 0 && (j = {});
let { placement: I = "bottom", strategy: q = "absolute", middleware: Q = [], platform: p_, elements: { reference: m_, floating: h_ } = {}, transform: g_ = !0, whileElementsMounted: __, open: v_ } = j, [y_, b_] = React.useState({
x: 0,
y: 0,
strategy: q,
placement: I,
middlewareData: {},
isPositioned: !1
}), [x_, S_] = React.useState(Q);
deepEqual(x_, Q) || S_(Q);
let [C_, w_] = React.useState(null), [T_, E_] = React.useState(null), D_ = React.useCallback((j) => {
j !== j_.current && (j_.current = j, w_(j));
}, []), O_ = React.useCallback((j) => {
j !== M_.current && (M_.current = j, E_(j));
}, []), k_ = m_ || C_, A_ = h_ || T_, j_ = React.useRef(null), M_ = React.useRef(null), N_ = React.useRef(y_), P_ = __ != null, F_ = useLatestRef(__), I_ = useLatestRef(p_), L_ = React.useCallback(() => {
if (!j_.current || !M_.current) return;
let j = {
placement: I,
strategy: q,
middleware: x_
};
I_.current && (j.platform = I_.current), M(j_.current, M_.current, j).then((j) => {
let I = {
...j,
isPositioned: !0
};
R_.current && !deepEqual(N_.current, I) && (N_.current = I, ReactDOM$2.flushSync(() => {
b_(I);
}));
});
}, [
x_,
I,
q,
I_
]);
index$1(() => {
v_ === !1 && N_.current.isPositioned && (N_.current.isPositioned = !1, b_((j) => ({
...j,
isPositioned: !1
})));
}, [v_]);
let R_ = React.useRef(!1);
index$1(() => (R_.current = !0, () => {
R_.current = !1;
}), []), index$1(() => {
if (k_ && (j_.current = k_), A_ && (M_.current = A_), k_ && A_) {
if (F_.current) return F_.current(k_, A_, L_);
L_();
}
}, [
k_,
A_,
L_,
F_,
P_
]);
let z_ = React.useMemo(() => ({
reference: j_,
floating: M_,
setReference: D_,
setFloating: O_
}), [D_, O_]), B_ = React.useMemo(() => ({
reference: k_,
floating: A_
}), [k_, A_]), V_ = React.useMemo(() => {
let j = {
position: q,
left: 0,
top: 0
};
if (!B_.floating) return j;
let I = roundByDPR(B_.floating, y_.x), Q = roundByDPR(B_.floating, y_.y);
return g_ ? {
...j,
transform: "translate(" + I + "px, " + Q + "px)",
...getDPR(B_.floating) >= 1.5 && { willChange: "transform" }
} : {
position: q,
left: I,
top: Q
};
}, [
q,
g_,
B_.floating,
y_.x,
y_.y
]);
return React.useMemo(() => ({
...y_,
update: L_,
refs: z_,
elements: B_,
floatingStyles: V_
}), [
y_,
L_,
z_,
B_,
V_
]);
}
var arrow$1 = (j) => {
function I(j) {
return {}.hasOwnProperty.call(j, "current");
}
return {
name: "arrow",
options: j,
fn(q) {
let { element: Q, padding: p_ } = typeof j == "function" ? j(q) : j;
return Q && I(Q) ? Q.current == null ? {} : u$1({
element: Q.current,
padding: p_
}).fn(q) : Q ? u$1({
element: Q,
padding: p_
}).fn(q) : {};
}
};
}, offset = (j, I) => ({
...D$2(j),
options: [j, I]
}), shift = (j, I) => ({
...k$3(j),
options: [j, I]
}), limitShift = (j, I) => ({
...O(j),
options: [j, I]
}), flip = (j, I) => ({
...b(j),
options: [j, I]
}), size = (j, I) => ({
...B$2(j),
options: [j, I]
}), hide = (j, I) => ({
...P$1(j),
options: [j, I]
}), arrow = (j, I) => ({
...arrow$1(j),
options: [j, I]
}), NAME$3 = "Arrow", Arrow$1 = React.forwardRef((j, I) => {
let { children: q, width: Q = 10, height: p_ = 5,...m_ } = j;
return /* @__PURE__ */ jsx(Primitive.svg, {
...m_,
ref: I,
width: Q,
height: p_,
viewBox: "0 0 30 10",
preserveAspectRatio: "none",
children: j.asChild ? q : /* @__PURE__ */ jsx("polygon", { points: "0,0 30,0 15,10" })
});
});
Arrow$1.displayName = NAME$3;
var Root$6 = Arrow$1;
function useSize(j) {
let [I, q] = React.useState(void 0);
return useLayoutEffect2(() => {
if (j) {
q({
width: j.offsetWidth,
height: j.offsetHeight
});
let I = new ResizeObserver((I) => {
if (!Array.isArray(I) || !I.length) return;
let Q = I[0], p_, m_;
if ("borderBoxSize" in Q) {
let j = Q.borderBoxSize, I = Array.isArray(j) ? j[0] : j;
p_ = I.inlineSize, m_ = I.blockSize;
} else p_ = j.offsetWidth, m_ = j.offsetHeight;
q({
width: p_,
height: m_
});
});
return I.observe(j, { box: "border-box" }), () => I.unobserve(j);
} else q(void 0);
}, [j]), I;
}
var POPPER_NAME = "Popper", [createPopperContext, createPopperScope] = createContextScope(POPPER_NAME), [PopperProvider, usePopperContext] = createPopperContext(POPPER_NAME), Popper = (j) => {
let { __scopePopper: I, children: q } = j, [Q, p_] = React.useState(null);
return /* @__PURE__ */ jsx(PopperProvider, {
scope: I,
anchor: Q,
onAnchorChange: p_,
children: q
});
};
Popper.displayName = POPPER_NAME;
var ANCHOR_NAME$1 = "PopperAnchor", PopperAnchor = React.forwardRef((j, I) => {
let { __scopePopper: q, virtualRef: Q,...p_ } = j, m_ = usePopperContext(ANCHOR_NAME$1, q), h_ = React.useRef(null), g_ = useComposedRefs$1(I, h_), __ = React.useRef(null);
return React.useEffect(() => {
let j = __.current;
__.current = Q?.current || h_.current, j !== __.current && m_.onAnchorChange(__.current);
}), Q ? null : /* @__PURE__ */ jsx(Primitive.div, {
...p_,
ref: g_
});
});
PopperAnchor.displayName = ANCHOR_NAME$1;
var CONTENT_NAME$9 = "PopperContent", [PopperContentProvider, useContentContext] = createPopperContext(CONTENT_NAME$9), PopperContent = React.forwardRef((j, I) => {
let { __scopePopper: q, side: Q = "bottom", sideOffset: p_ = 0, align: m_ = "center", alignOffset: h_ = 0, arrowPadding: g_ = 0, avoidCollisions: __ = !0, collisionBoundary: v_ = [], collisionPadding: y_ = 0, sticky: b_ = "partial", hideWhenDetached: x_ = !1, updatePositionStrategy: S_ = "optimized", onPlaced: C_,...w_ } = j, T_ = usePopperContext(CONTENT_NAME$9, q), [E_, D_] = React.useState(null), O_ = useComposedRefs$1(I, (j) => D_(j)), [k_, A_] = React.useState(null), j_ = useSize(k_), M_ = j_?.width ?? 0, N_ = j_?.height ?? 0, P_ = Q + (m_ === "center" ? "" : "-" + m_), F_ = typeof y_ == "number" ? y_ : {
top: 0,
right: 0,
bottom: 0,
left: 0,
...y_
}, I_ = Array.isArray(v_) ? v_ : [v_], L_ = I_.length > 0, R_ = {
padding: F_,
boundary: I_.filter(isNotNull),
altBoundary: L_
}, { refs: z_, floatingStyles: B_, placement: V_, isPositioned: H_, middlewareData: U_ } = useFloating({
strategy: "fixed",
placement: P_,
whileElementsMounted: (...j) => z$2(...j, { animationFrame: S_ === "always" }),
elements: { reference: T_.anchor },
middleware: [
offset({
mainAxis: p_ + N_,
alignmentAxis: h_
}),
__ && shift({
mainAxis: !0,
crossAxis: !1,
limiter: b_ === "partial" ? limitShift() : void 0,
...R_
}),
__ && flip({ ...R_ }),
size({
...R_,
apply: ({ elements: j, rects: I, availableWidth: q, availableHeight: Q }) => {
let { width: p_, height: m_ } = I.reference, h_ = j.floating.style;
h_.setProperty("--radix-popper-available-width", `${q}px`), h_.setProperty("--radix-popper-available-height", `${Q}px`), h_.setProperty("--radix-popper-anchor-width", `${p_}px`), h_.setProperty("--radix-popper-anchor-height", `${m_}px`);
}
}),
k_ && arrow({
element: k_,
padding: g_
}),
transformOrigin({
arrowWidth: M_,
arrowHeight: N_
}),
x_ && hide({
strategy: "referenceHidden",
...R_
})
]
}), [W_, G_] = getSideAndAlignFromPlacement(V_), K_ = useCallbackRef(C_);
useLayoutEffect2(() => {
H_ && K_?.();
}, [H_, K_]);
let q_ = U_.arrow?.x, J_ = U_.arrow?.y, Y_ = U_.arrow?.centerOffset !== 0, [X_, Z_] = React.useState();
return useLayoutEffect2(() => {
E_ && Z_(window.getComputedStyle(E_).zIndex);
}, [E_]), /* @__PURE__ */ jsx("div", {
ref: z_.setFloating,
"data-radix-popper-content-wrapper": "",
style: {
...B_,
transform: H_ ? B_.transform : "translate(0, -200%)",
minWidth: "max-content",
zIndex: X_,
"--radix-popper-transform-origin": [U_.transformOrigin?.x, U_.transformOrigin?.y].join(" "),
...U_.hide?.referenceHidden && {
visibility: "hidden",
pointerEvents: "none"
}
},
dir: j.dir,
children: /* @__PURE__ */ jsx(PopperContentProvider, {
scope: q,
placedSide: W_,
onArrowChange: A_,
arrowX: q_,
arrowY: J_,
shouldHideArrow: Y_,
children: /* @__PURE__ */ jsx(Primitive.div, {
"data-side": W_,
"data-align": G_,
...w_,
ref: O_,
style: {
...w_.style,
animation: H_ ? void 0 : "none"
}
})
})
});
});
PopperContent.displayName = CONTENT_NAME$9;
var ARROW_NAME$5 = "PopperArrow", OPPOSITE_SIDE = {
top: "bottom",
right: "left",
bottom: "top",
left: "right"
}, PopperArrow = React.forwardRef(function(j, I) {
let { __scopePopper: q,...Q } = j, p_ = useContentContext(ARROW_NAME$5, q), m_ = OPPOSITE_SIDE[p_.placedSide];
return /* @__PURE__ */ jsx("span", {
ref: p_.onArrowChange,
style: {
position: "absolute",
left: p_.arrowX,
top: p_.arrowY,
[m_]: 0,
transformOrigin: {
top: "",
right: "0 0",
bottom: "center 0",
left: "100% 0"
}[p_.placedSide],
transform: {
top: "translateY(100%)",
right: "translateY(50%) rotate(90deg) translateX(-50%)",
bottom: "rotate(180deg)",
left: "translateY(50%) rotate(-90deg) translateX(50%)"
}[p_.placedSide],
visibility: p_.shouldHideArrow ? "hidden" : void 0
},
children: /* @__PURE__ */ jsx(Root$6, {
...Q,
ref: I,
style: {
...Q.style,
display: "block"
}
})
});
});
PopperArrow.displayName = ARROW_NAME$5;
function isNotNull(j) {
return j !== null;
}
var transformOrigin = (j) => ({
name: "transformOrigin",
options: j,
fn(I) {
let { placement: q, rects: Q, middlewareData: p_ } = I, m_ = p_.arrow?.centerOffset !== 0, h_ = m_ ? 0 : j.arrowWidth, g_ = m_ ? 0 : j.arrowHeight, [__, v_] = getSideAndAlignFromPlacement(q), y_ = {
start: "0%",
center: "50%",
end: "100%"
}[v_], b_ = (p_.arrow?.x ?? 0) + h_ / 2, x_ = (p_.arrow?.y ?? 0) + g_ / 2, S_ = "", C_ = "";
return __ === "bottom" ? (S_ = m_ ? y_ : `${b_}px`, C_ = `${-g_}px`) : __ === "top" ? (S_ = m_ ? y_ : `${b_}px`, C_ = `${Q.floating.height + g_}px`) : __ === "right" ? (S_ = `${-g_}px`, C_ = m_ ? y_ : `${x_}px`) : __ === "left" && (S_ = `${Q.floating.width + g_}px`, C_ = m_ ? y_ : `${x_}px`), { data: {
x: S_,
y: C_
} };
}
});
function getSideAndAlignFromPlacement(j) {
let [I, q = "center"] = j.split("-");
return [I, q];
}
var Root2$5 = Popper, Anchor = PopperAnchor, Content$1 = PopperContent, Arrow = PopperArrow, ENTRY_FOCUS = "rovingFocusGroup.onEntryFocus", EVENT_OPTIONS = {
bubbles: !1,
cancelable: !0
}, GROUP_NAME$4 = "RovingFocusGroup", [Collection$2, useCollection$2, createCollectionScope$2] = createCollection(GROUP_NAME$4), [createRovingFocusGroupContext, createRovingFocusGroupScope] = createContextScope(GROUP_NAME$4, [createCollectionScope$2]), [RovingFocusProvider, useRovingFocusContext] = createRovingFocusGroupContext(GROUP_NAME$4), RovingFocusGroup = React.forwardRef((j, I) => /* @__PURE__ */ jsx(Collection$2.Provider, {
scope: j.__scopeRovingFocusGroup,
children: /* @__PURE__ */ jsx(Collection$2.Slot, {
scope: j.__scopeRovingFocusGroup,
children: /* @__PURE__ */ jsx(RovingFocusGroupImpl, {
...j,
ref: I
})
})
}));
RovingFocusGroup.displayName = GROUP_NAME$4;
var RovingFocusGroupImpl = React.forwardRef((j, I) => {
let { __scopeRovingFocusGroup: q, orientation: Q, loop: p_ = !1, dir: m_, currentTabStopId: h_, defaultCurrentTabStopId: g_, onCurrentTabStopIdChange: __, onEntryFocus: v_, preventScrollOnEntryFocus: y_ = !1,...b_ } = j, x_ = React.useRef(null), S_ = useComposedRefs$1(I, x_), C_ = useDirection(m_), [w_, T_] = useControllableState({
prop: h_,
defaultProp: g_ ?? null,
onChange: __,
caller: GROUP_NAME$4
}), [E_, D_] = React.useState(!1), O_ = useCallbackRef(v_), k_ = useCollection$2(q), A_ = React.useRef(!1), [j_, M_] = React.useState(0);
return React.useEffect(() => {
let j = x_.current;
if (j) return j.addEventListener(ENTRY_FOCUS, O_), () => j.removeEventListener(ENTRY_FOCUS, O_);
}, [O_]), /* @__PURE__ */ jsx(RovingFocusProvider, {
scope: q,
orientation: Q,
dir: C_,
loop: p_,
currentTabStopId: w_,
onItemFocus: React.useCallback((j) => T_(j), [T_]),
onItemShiftTab: React.useCallback(() => D_(!0), []),
onFocusableItemAdd: React.useCallback(() => M_((j) => j + 1), []),
onFocusableItemRemove: React.useCallback(() => M_((j) => j - 1), []),
children: /* @__PURE__ */ jsx(Primitive.div, {
tabIndex: E_ || j_ === 0 ? -1 : 0,
"data-orientation": Q,
...b_,
ref: S_,
style: {
outline: "none",
...j.style
},
onMouseDown: composeEventHandlers(j.onMouseDown, () => {
A_.current = !0;
}),
onFocus: composeEventHandlers(j.onFocus, (j) => {
let I = !A_.current;
if (j.target === j.currentTarget && I && !E_) {
let I = new CustomEvent(ENTRY_FOCUS, EVENT_OPTIONS);
if (j.currentTarget.dispatchEvent(I), !I.defaultPrevented) {
let j = k_().filter((j) => j.focusable), I = j.find((j) => j.active), q = j.find((j) => j.id === w_), Q = [
I,
q,
...j
].filter(Boolean).map((j) => j.ref.current);
focusFirst$1(Q, y_);
}
}
A_.current = !1;
}),
onBlur: composeEventHandlers(j.onBlur, () => D_(!1))
})
});
}), ITEM_NAME$5 = "RovingFocusGroupItem", RovingFocusGroupItem = React.forwardRef((j, I) => {
let { __scopeRovingFocusGroup: q, focusable: Q = !0, active: p_ = !1, tabStopId: m_, children: h_,...g_ } = j, __ = useId$1(), v_ = m_ || __, y_ = useRovingFocusContext(ITEM_NAME$5, q), b_ = y_.currentTabStopId === v_, x_ = useCollection$2(q), { onFocusableItemAdd: S_, onFocusableItemRemove: C_, currentTabStopId: w_ } = y_;
return React.useEffect(() => {
if (Q) return S_(), () => C_();
}, [
Q,
S_,
C_
]), /* @__PURE__ */ jsx(Collection$2.ItemSlot, {
scope: q,
id: v_,
focusable: Q,
active: p_,
children: /* @__PURE__ */ jsx(Primitive.span, {
tabIndex: b_ ? 0 : -1,
"data-orientation": y_.orientation,
...g_,
ref: I,
onMouseDown: composeEventHandlers(j.onMouseDown, (j) => {
Q ? y_.onItemFocus(v_) : j.preventDefault();
}),
onFocus: composeEventHandlers(j.onFocus, () => y_.onItemFocus(v_)),
onKeyDown: composeEventHandlers(j.onKeyDown, (j) => {
if (j.key === "Tab" && j.shiftKey) {
y_.onItemShiftTab();
return;
}
if (j.target !== j.currentTarget) return;
let I = getFocusIntent(j, y_.orientation, y_.dir);
if (I !== void 0) {
if (j.metaKey || j.ctrlKey || j.altKey || j.shiftKey) return;
j.preventDefault();
let q = x_().filter((j) => j.focusable).map((j) => j.ref.current);
if (I === "last") q.reverse();
else if (I === "prev" || I === "next") {
I === "prev" && q.reverse();
let Q = q.indexOf(j.currentTarget);
q = y_.loop ? wrapArray$2(q, Q + 1) : q.slice(Q + 1);
}
setTimeout(() => focusFirst$1(q));
}
}),
children: typeof h_ == "function" ? h_({
isCurrentTabStop: b_,
hasTabStop: w_ != null
}) : h_
})
});
});
RovingFocusGroupItem.displayName = ITEM_NAME$5;
var MAP_KEY_TO_FOCUS_INTENT = {
ArrowLeft: "prev",
ArrowUp: "prev",
ArrowRight: "next",
ArrowDown: "next",
PageUp: "first",
Home: "first",
PageDown: "last",
End: "last"
};
function getDirectionAwareKey(j, I) {
return I === "rtl" ? j === "ArrowLeft" ? "ArrowRight" : j === "ArrowRight" ? "ArrowLeft" : j : j;
}
function getFocusIntent(j, I, q) {
let Q = getDirectionAwareKey(j.key, q);
if (!(I === "vertical" && ["ArrowLeft", "ArrowRight"].includes(Q)) && !(I === "horizontal" && ["ArrowUp", "ArrowDown"].includes(Q))) return MAP_KEY_TO_FOCUS_INTENT[Q];
}
function focusFirst$1(j, I = !1) {
let q = document.activeElement;
for (let Q of j) if (Q === q || (Q.focus({ preventScroll: I }), document.activeElement !== q)) return;
}
function wrapArray$2(j, I) {
return j.map((q, Q) => j[(I + Q) % j.length]);
}
var Root$5 = RovingFocusGroup, Item$1 = RovingFocusGroupItem, SELECTION_KEYS$1 = ["Enter", " "], FIRST_KEYS = [
"ArrowDown",
"PageUp",
"Home"
], LAST_KEYS = [
"ArrowUp",
"PageDown",
"End"
], FIRST_LAST_KEYS = [...FIRST_KEYS, ...LAST_KEYS], SUB_OPEN_KEYS = {
ltr: [...SELECTION_KEYS$1, "ArrowRight"],
rtl: [...SELECTION_KEYS$1, "ArrowLeft"]
}, SUB_CLOSE_KEYS = {
ltr: ["ArrowLeft"],
rtl: ["ArrowRight"]
}, MENU_NAME = "Menu", [Collection$1, useCollection$1, createCollectionScope$1] = createCollection(MENU_NAME), [createMenuContext, createMenuScope] = createContextScope(MENU_NAME, [
createCollectionScope$1,
createPopperScope,
createRovingFocusGroupScope
]), usePopperScope$2 = createPopperScope(), useRovingFocusGroupScope$1 = createRovingFocusGroupScope(), [MenuProvider, useMenuContext] = createMenuContext(MENU_NAME), [MenuRootProvider, useMenuRootContext] = createMenuContext(MENU_NAME), Menu = (j) => {
let { __scopeMenu: I, open: q = !1, children: Q, dir: p_, onOpenChange: m_, modal: h_ = !0 } = j, g_ = usePopperScope$2(I), [__, v_] = React.useState(null), y_ = React.useRef(!1), b_ = useCallbackRef(m_), x_ = useDirection(p_);
return React.useEffect(() => {
let j = () => {
y_.current = !0, document.addEventListener("pointerdown", I, {
capture: !0,
once: !0
}), document.addEventListener("pointermove", I, {
capture: !0,
once: !0
});
}, I = () => y_.current = !1;
return document.addEventListener("keydown", j, { capture: !0 }), () => {
document.removeEventListener("keydown", j, { capture: !0 }), document.removeEventListener("pointerdown", I, { capture: !0 }), document.removeEventListener("pointermove", I, { capture: !0 });
};
}, []), /* @__PURE__ */ jsx(Root2$5, {
...g_,
children: /* @__PURE__ */ jsx(MenuProvider, {
scope: I,
open: q,
onOpenChange: b_,
content: __,
onContentChange: v_,
children: /* @__PURE__ */ jsx(MenuRootProvider, {
scope: I,
onClose: React.useCallback(() => b_(!1), [b_]),
isUsingKeyboardRef: y_,
dir: x_,
modal: h_,
children: Q
})
})
});
};
Menu.displayName = MENU_NAME;
var ANCHOR_NAME = "MenuAnchor", MenuAnchor = React.forwardRef((j, I) => {
let { __scopeMenu: q,...Q } = j, p_ = usePopperScope$2(q);
return /* @__PURE__ */ jsx(Anchor, {
...p_,
...Q,
ref: I
});
});
MenuAnchor.displayName = ANCHOR_NAME;
var PORTAL_NAME$5 = "MenuPortal", [PortalProvider$1, usePortalContext$1] = createMenuContext(PORTAL_NAME$5, { forceMount: void 0 }), MenuPortal = (j) => {
let { __scopeMenu: I, forceMount: q, children: Q, container: p_ } = j, m_ = useMenuContext(PORTAL_NAME$5, I);
return /* @__PURE__ */ jsx(PortalProvider$1, {
scope: I,
forceMount: q,
children: /* @__PURE__ */ jsx(Presence, {
present: q || m_.open,
children: /* @__PURE__ */ jsx(Portal, {
asChild: !0,
container: p_,
children: Q
})
})
});
};
MenuPortal.displayName = PORTAL_NAME$5;
var CONTENT_NAME$8 = "MenuContent", [MenuContentProvider, useMenuContentContext] = createMenuContext(CONTENT_NAME$8), MenuContent = React.forwardRef((j, I) => {
let q = usePortalContext$1(CONTENT_NAME$8, j.__scopeMenu), { forceMount: Q = q.forceMount,...p_ } = j, m_ = useMenuContext(CONTENT_NAME$8, j.__scopeMenu), h_ = useMenuRootContext(CONTENT_NAME$8, j.__scopeMenu);
return /* @__PURE__ */ jsx(Collection$1.Provider, {
scope: j.__scopeMenu,
children: /* @__PURE__ */ jsx(Presence, {
present: Q || m_.open,
children: /* @__PURE__ */ jsx(Collection$1.Slot, {
scope: j.__scopeMenu,
children: h_.modal ? /* @__PURE__ */ jsx(MenuRootContentModal, {
...p_,
ref: I
}) : /* @__PURE__ */ jsx(MenuRootContentNonModal, {
...p_,
ref: I
})
})
})
});
}), MenuRootContentModal = React.forwardRef((j, I) => {
let q = useMenuContext(CONTENT_NAME$8, j.__scopeMenu), Q = React.useRef(null), p_ = useComposedRefs$1(I, Q);
return React.useEffect(() => {
let j = Q.current;
if (j) return hideOthers(j);
}, []), /* @__PURE__ */ jsx(MenuContentImpl, {
...j,
ref: p_,
trapFocus: q.open,
disableOutsidePointerEvents: q.open,
disableOutsideScroll: !0,
onFocusOutside: composeEventHandlers(j.onFocusOutside, (j) => j.preventDefault(), { checkForDefaultPrevented: !1 }),
onDismiss: () => q.onOpenChange(!1)
});
}), MenuRootContentNonModal = React.forwardRef((j, I) => {
let q = useMenuContext(CONTENT_NAME$8, j.__scopeMenu);
return /* @__PURE__ */ jsx(MenuContentImpl, {
...j,
ref: I,
trapFocus: !1,
disableOutsidePointerEvents: !1,
disableOutsideScroll: !1,
onDismiss: () => q.onOpenChange(!1)
});
}), Slot$2 = /* @__PURE__ */ createSlot("MenuContent.ScrollLock"), MenuContentImpl = React.forwardRef((j, I) => {
let { __scopeMenu: q, loop: Q = !1, trapFocus: p_, onOpenAutoFocus: m_, onCloseAutoFocus: h_, disableOutsidePointerEvents: g_, onEntryFocus: __, onEscapeKeyDown: v_, onPointerDownOutside: y_, onFocusOutside: b_, onInteractOutside: x_, onDismiss: S_, disableOutsideScroll: C_,...w_ } = j, T_ = useMenuContext(CONTENT_NAME$8, q), E_ = useMenuRootContext(CONTENT_NAME$8, q), D_ = usePopperScope$2(q), O_ = useRovingFocusGroupScope$1(q), k_ = useCollection$1(q), [A_, j_] = React.useState(null), M_ = React.useRef(null), N_ = useComposedRefs$1(I, M_, T_.onContentChange), P_ = React.useRef(0), F_ = React.useRef(""), I_ = React.useRef(0), L_ = React.useRef(null), R_ = React.useRef("right"), z_ = React.useRef(0), B_ = C_ ? Combination_default : React.Fragment, V_ = C_ ? {
as: Slot$2,
allowPinchZoom: !0
} : void 0, H_ = (j) => {
let I = F_.current + j, q = k_().filter((j) => !j.disabled), Q = document.activeElement, p_ = q.find((j) => j.ref.current === Q)?.textValue, m_ = q.map((j) => j.textValue), h_ = getNextMatch(m_, I, p_), g_ = q.find((j) => j.textValue === h_)?.ref.current;
(function j(I) {
F_.current = I, window.clearTimeout(P_.current), I !== "" && (P_.current = window.setTimeout(() => j(""), 1e3));
})(I), g_ && setTimeout(() => g_.focus());
};
React.useEffect(() => () => window.clearTimeout(P_.current), []), useFocusGuards();
let U_ = React.useCallback((j) => R_.current === L_.current?.side && isPointerInGraceArea(j, L_.current?.area), []);
return /* @__PURE__ */ jsx(MenuContentProvider, {
scope: q,
searchRef: F_,
onItemEnter: React.useCallback((j) => {
U_(j) && j.preventDefault();
}, [U_]),
onItemLeave: React.useCallback((j) => {
U_(j) || (M_.current?.focus(), j_(null));
}, [U_]),
onTriggerLeave: React.useCallback((j) => {
U_(j) && j.preventDefault();
}, [U_]),
pointerGraceTimerRef: I_,
onPointerGraceIntentChange: React.useCallback((j) => {
L_.current = j;
}, []),
children: /* @__PURE__ */ jsx(B_, {
...V_,
children: /* @__PURE__ */ jsx(FocusScope, {
asChild: !0,
trapped: p_,
onMountAutoFocus: composeEventHandlers(m_, (j) => {
j.preventDefault(), M_.current?.focus({ preventScroll: !0 });
}),
onUnmountAutoFocus: h_,
children: /* @__PURE__ */ jsx(DismissableLayer, {
asChild: !0,
disableOutsidePointerEvents: g_,
onEscapeKeyDown: v_,
onPointerDownOutside: y_,
onFocusOutside: b_,
onInteractOutside: x_,
onDismiss: S_,
children: /* @__PURE__ */ jsx(Root$5, {
asChild: !0,
...O_,
dir: E_.dir,
orientation: "vertical",
loop: Q,
currentTabStopId: A_,
onCurrentTabStopIdChange: j_,
onEntryFocus: composeEventHandlers(__, (j) => {
E_.isUsingKeyboardRef.current || j.preventDefault();
}),
preventScrollOnEntryFocus: !0,
children: /* @__PURE__ */ jsx(Content$1, {
role: "menu",
"aria-orientation": "vertical",
"data-state": getOpenState(T_.open),
"data-radix-menu-content": "",
dir: E_.dir,
...D_,
...w_,
ref: N_,
style: {
outline: "none",
...w_.style
},
onKeyDown: composeEventHandlers(w_.onKeyDown, (j) => {
let I = j.target.closest("[data-radix-menu-content]") === j.currentTarget, q = j.ctrlKey || j.altKey || j.metaKey, Q = j.key.length === 1;
I && (j.key === "Tab" && j.preventDefault(), !q && Q && H_(j.key));
let p_ = M_.current;
if (j.target !== p_ || !FIRST_LAST_KEYS.includes(j.key)) return;
j.preventDefault();
let m_ = k_().filter((j) => !j.disabled).map((j) => j.ref.current);
LAST_KEYS.includes(j.key) && m_.reverse(), focusFirst(m_);
}),
onBlur: composeEventHandlers(j.onBlur, (j) => {
j.currentTarget.contains(j.target) || (window.clearTimeout(P_.current), F_.current = "");
}),
onPointerMove: composeEventHandlers(j.onPointerMove, whenMouse((j) => {
let I = j.target, q = z_.current !== j.clientX;
j.currentTarget.contains(I) && q && (R_.current = j.clientX > z_.current ? "right" : "left", z_.current = j.clientX);
}))
})
})
})
})
})
});
});
MenuContent.displayName = CONTENT_NAME$8;
var GROUP_NAME$3 = "MenuGroup", MenuGroup = React.forwardRef((j, I) => {
let { __scopeMenu: q,...Q } = j;
return /* @__PURE__ */ jsx(Primitive.div, {
role: "group",
...Q,
ref: I
});
});
MenuGroup.displayName = GROUP_NAME$3;
var LABEL_NAME$3 = "MenuLabel", MenuLabel = React.forwardRef((j, I) => {
let { __scopeMenu: q,...Q } = j;
return /* @__PURE__ */ jsx(Primitive.div, {
...Q,
ref: I
});
});
MenuLabel.displayName = LABEL_NAME$3;
var ITEM_NAME$4 = "MenuItem", ITEM_SELECT = "menu.itemSelect", MenuItem = React.forwardRef((j, I) => {
let { disabled: q = !1, onSelect: Q,...p_ } = j, m_ = React.useRef(null), h_ = useMenuRootContext(ITEM_NAME$4, j.__scopeMenu), g_ = useMenuContentContext(ITEM_NAME$4, j.__scopeMenu), __ = useComposedRefs$1(I, m_), v_ = React.useRef(!1), y_ = () => {
let j = m_.current;
if (!q && j) {
let I = new CustomEvent(ITEM_SELECT, {
bubbles: !0,
cancelable: !0
});
j.addEventListener(ITEM_SELECT, (j) => Q?.(j), { once: !0 }), dispatchDiscreteCustomEvent(j, I), I.defaultPrevented ? v_.current = !1 : h_.onClose();
}
};
return /* @__PURE__ */ jsx(MenuItemImpl, {
...p_,
ref: __,
disabled: q,
onClick: composeEventHandlers(j.onClick, y_),
onPointerDown: (I) => {
j.onPointerDown?.(I), v_.current = !0;
},
onPointerUp: composeEventHandlers(j.onPointerUp, (j) => {
v_.current || j.currentTarget?.click();
}),
onKeyDown: composeEventHandlers(j.onKeyDown, (j) => {
let I = g_.searchRef.current !== "";
q || I && j.key === " " || SELECTION_KEYS$1.includes(j.key) && (j.currentTarget.click(), j.preventDefault());
})
});
});
MenuItem.displayName = ITEM_NAME$4;
var MenuItemImpl = React.forwardRef((j, I) => {
let { __scopeMenu: q, disabled: Q = !1, textValue: p_,...m_ } = j, h_ = useMenuContentContext(ITEM_NAME$4, q), g_ = useRovingFocusGroupScope$1(q), __ = React.useRef(null), v_ = useComposedRefs$1(I, __), [y_, b_] = React.useState(!1), [x_, S_] = React.useState("");
return React.useEffect(() => {
let j = __.current;
j && S_((j.textContent ?? "").trim());
}, [m_.children]), /* @__PURE__ */ jsx(Collection$1.ItemSlot, {
scope: q,
disabled: Q,
textValue: p_ ?? x_,
children: /* @__PURE__ */ jsx(Item$1, {
asChild: !0,
...g_,
focusable: !Q,
children: /* @__PURE__ */ jsx(Primitive.div, {
role: "menuitem",
"data-highlighted": y_ ? "" : void 0,
"aria-disabled": Q || void 0,
"data-disabled": Q ? "" : void 0,
...m_,
ref: v_,
onPointerMove: composeEventHandlers(j.onPointerMove, whenMouse((j) => {
Q ? h_.onItemLeave(j) : (h_.onItemEnter(j), j.defaultPrevented || j.currentTarget.focus({ preventScroll: !0 }));
})),
onPointerLeave: composeEventHandlers(j.onPointerLeave, whenMouse((j) => h_.onItemLeave(j))),
onFocus: composeEventHandlers(j.onFocus, () => b_(!0)),
onBlur: composeEventHandlers(j.onBlur, () => b_(!1))
})
})
});
}), CHECKBOX_ITEM_NAME$2 = "MenuCheckboxItem", MenuCheckboxItem = React.forwardRef((j, I) => {
let { checked: q = !1, onCheckedChange: Q,...p_ } = j;
return /* @__PURE__ */ jsx(ItemIndicatorProvider, {
scope: j.__scopeMenu,
checked: q,
children: /* @__PURE__ */ jsx(MenuItem, {
role: "menuitemcheckbox",
"aria-checked": isIndeterminate$1(q) ? "mixed" : q,
...p_,
ref: I,
"data-state": getCheckedState(q),
onSelect: composeEventHandlers(p_.onSelect, () => Q?.(isIndeterminate$1(q) ? !0 : !q), { checkForDefaultPrevented: !1 })
})
});
});
MenuCheckboxItem.displayName = CHECKBOX_ITEM_NAME$2;
var RADIO_GROUP_NAME$2 = "MenuRadioGroup", [RadioGroupProvider, useRadioGroupContext] = createMenuContext(RADIO_GROUP_NAME$2, {
value: void 0,
onValueChange: () => {}
}), MenuRadioGroup = React.forwardRef((j, I) => {
let { value: q, onValueChange: Q,...p_ } = j, m_ = useCallbackRef(Q);
return /* @__PURE__ */ jsx(RadioGroupProvider, {
scope: j.__scopeMenu,
value: q,
onValueChange: m_,
children: /* @__PURE__ */ jsx(MenuGroup, {
...p_,
ref: I
})
});
});
MenuRadioGroup.displayName = RADIO_GROUP_NAME$2;
var RADIO_ITEM_NAME$2 = "MenuRadioItem", MenuRadioItem = React.forwardRef((j, I) => {
let { value: q,...Q } = j, p_ = useRadioGroupContext(RADIO_ITEM_NAME$2, j.__scopeMenu), m_ = q === p_.value;
return /* @__PURE__ */ jsx(ItemIndicatorProvider, {
scope: j.__scopeMenu,
checked: m_,
children: /* @__PURE__ */ jsx(MenuItem, {
role: "menuitemradio",
"aria-checked": m_,
...Q,
ref: I,
"data-state": getCheckedState(m_),
onSelect: composeEventHandlers(Q.onSelect, () => p_.onValueChange?.(q), { checkForDefaultPrevented: !1 })
})
});
});
MenuRadioItem.displayName = RADIO_ITEM_NAME$2;
var ITEM_INDICATOR_NAME$1 = "MenuItemIndicator", [ItemIndicatorProvider, useItemIndicatorContext] = createMenuContext(ITEM_INDICATOR_NAME$1, { checked: !1 }), MenuItemIndicator = React.forwardRef((j, I) => {
let { __scopeMenu: q, forceMount: Q,...p_ } = j, m_ = useItemIndicatorContext(ITEM_INDICATOR_NAME$1, q);
return /* @__PURE__ */ jsx(Presence, {
present: Q || isIndeterminate$1(m_.checked) || m_.checked === !0,
children: /* @__PURE__ */ jsx(Primitive.span, {
...p_,
ref: I,
"data-state": getCheckedState(m_.checked)
})
});
});
MenuItemIndicator.displayName = ITEM_INDICATOR_NAME$1;
var SEPARATOR_NAME$3 = "MenuSeparator", MenuSeparator = React.forwardRef((j, I) => {
let { __scopeMenu: q,...Q } = j;
return /* @__PURE__ */ jsx(Primitive.div, {
role: "separator",
"aria-orientation": "horizontal",
...Q,
ref: I
});
});
MenuSeparator.displayName = SEPARATOR_NAME$3;
var ARROW_NAME$4 = "MenuArrow", MenuArrow = React.forwardRef((j, I) => {
let { __scopeMenu: q,...Q } = j, p_ = usePopperScope$2(q);
return /* @__PURE__ */ jsx(Arrow, {
...p_,
...Q,
ref: I
});
});
MenuArrow.displayName = ARROW_NAME$4;
var SUB_NAME$1 = "MenuSub", [MenuSubProvider, useMenuSubContext] = createMenuContext(SUB_NAME$1), MenuSub = (j) => {
let { __scopeMenu: I, children: q, open: Q = !1, onOpenChange: p_ } = j, m_ = useMenuContext(SUB_NAME$1, I), h_ = usePopperScope$2(I), [g_, __] = React.useState(null), [v_, y_] = React.useState(null), b_ = useCallbackRef(p_);
return React.useEffect(() => (m_.open === !1 && b_(!1), () => b_(!1)), [m_.open, b_]), /* @__PURE__ */ jsx(Root2$5, {
...h_,
children: /* @__PURE__ */ jsx(MenuProvider, {
scope: I,
open: Q,
onOpenChange: b_,
content: v_,
onContentChange: y_,
children: /* @__PURE__ */ jsx(MenuSubProvider, {
scope: I,
contentId: useId$1(),
triggerId: useId$1(),
trigger: g_,
onTriggerChange: __,
children: q
})
})
});
};
MenuSub.displayName = SUB_NAME$1;
var SUB_TRIGGER_NAME$2 = "MenuSubTrigger", MenuSubTrigger = React.forwardRef((j, I) => {
let q = useMenuContext(SUB_TRIGGER_NAME$2, j.__scopeMenu), Q = useMenuRootContext(SUB_TRIGGER_NAME$2, j.__scopeMenu), p_ = useMenuSubContext(SUB_TRIGGER_NAME$2, j.__scopeMenu), m_ = useMenuContentContext(SUB_TRIGGER_NAME$2, j.__scopeMenu), h_ = React.useRef(null), { pointerGraceTimerRef: g_, onPointerGraceIntentChange: __ } = m_, v_ = { __scopeMenu: j.__scopeMenu }, y_ = React.useCallback(() => {
h_.current && window.clearTimeout(h_.current), h_.current = null;
}, []);
return React.useEffect(() => y_, [y_]), React.useEffect(() => {
let j = g_.current;
return () => {
window.clearTimeout(j), __(null);
};
}, [g_, __]), /* @__PURE__ */ jsx(MenuAnchor, {
asChild: !0,
...v_,
children: /* @__PURE__ */ jsx(MenuItemImpl, {
id: p_.triggerId,
"aria-haspopup": "menu",
"aria-expanded": q.open,
"aria-controls": p_.contentId,
"data-state": getOpenState(q.open),
...j,
ref: composeRefs$1(I, p_.onTriggerChange),
onClick: (I) => {
j.onClick?.(I), !(j.disabled || I.defaultPrevented) && (I.currentTarget.focus(), q.open || q.onOpenChange(!0));
},
onPointerMove: composeEventHandlers(j.onPointerMove, whenMouse((I) => {
m_.onItemEnter(I), !I.defaultPrevented && !j.disabled && !q.open && !h_.current && (m_.onPointerGraceIntentChange(null), h_.current = window.setTimeout(() => {
q.onOpenChange(!0), y_();
}, 100));
})),
onPointerLeave: composeEventHandlers(j.onPointerLeave, whenMouse((j) => {
y_();
let I = q.content?.getBoundingClientRect();
if (I) {
let Q = q.content?.dataset.side, p_ = Q === "right", h_ = p_ ? -5 : 5, __ = I[p_ ? "left" : "right"], v_ = I[p_ ? "right" : "left"];
m_.onPointerGraceIntentChange({
area: [
{
x: j.clientX + h_,
y: j.clientY
},
{
x: __,
y: I.top
},
{
x: v_,
y: I.top
},
{
x: v_,
y: I.bottom
},
{
x: __,
y: I.bottom
}
],
side: Q
}), window.clearTimeout(g_.current), g_.current = window.setTimeout(() => m_.onPointerGraceIntentChange(null), 300);
} else {
if (m_.onTriggerLeave(j), j.defaultPrevented) return;
m_.onPointerGraceIntentChange(null);
}
})),
onKeyDown: composeEventHandlers(j.onKeyDown, (I) => {
let p_ = m_.searchRef.current !== "";
j.disabled || p_ && I.key === " " || SUB_OPEN_KEYS[Q.dir].includes(I.key) && (q.onOpenChange(!0), q.content?.focus(), I.preventDefault());
})
})
});
});
MenuSubTrigger.displayName = SUB_TRIGGER_NAME$2;
var SUB_CONTENT_NAME$2 = "MenuSubContent", MenuSubContent = React.forwardRef((j, I) => {
let q = usePortalContext$1(CONTENT_NAME$8, j.__scopeMenu), { forceMount: Q = q.forceMount,...p_ } = j, m_ = useMenuContext(CONTENT_NAME$8, j.__scopeMenu), h_ = useMenuRootContext(CONTENT_NAME$8, j.__scopeMenu), g_ = useMenuSubContext(SUB_CONTENT_NAME$2, j.__scopeMenu), __ = React.useRef(null), v_ = useComposedRefs$1(I, __);
return /* @__PURE__ */ jsx(Collection$1.Provider, {
scope: j.__scopeMenu,
children: /* @__PURE__ */ jsx(Presence, {
present: Q || m_.open,
children: /* @__PURE__ */ jsx(Collection$1.Slot, {
scope: j.__scopeMenu,
children: /* @__PURE__ */ jsx(MenuContentImpl, {
id: g_.contentId,
"aria-labelledby": g_.triggerId,
...p_,
ref: v_,
align: "start",
side: h_.dir === "rtl" ? "left" : "right",
disableOutsidePointerEvents: !1,
disableOutsideScroll: !1,
trapFocus: !1,
onOpenAutoFocus: (j) => {
h_.isUsingKeyboardRef.current && __.current?.focus(), j.preventDefault();
},
onCloseAutoFocus: (j) => j.preventDefault(),
onFocusOutside: composeEventHandlers(j.onFocusOutside, (j) => {
j.target !== g_.trigger && m_.onOpenChange(!1);
}),
onEscapeKeyDown: composeEventHandlers(j.onEscapeKeyDown, (j) => {
h_.onClose(), j.preventDefault();
}),
onKeyDown: composeEventHandlers(j.onKeyDown, (j) => {
let I = j.currentTarget.contains(j.target), q = SUB_CLOSE_KEYS[h_.dir].includes(j.key);
I && q && (m_.onOpenChange(!1), g_.trigger?.focus(), j.preventDefault());
})
})
})
})
});
});
MenuSubContent.displayName = SUB_CONTENT_NAME$2;
function getOpenState(j) {
return j ? "open" : "closed";
}
function isIndeterminate$1(j) {
return j === "indeterminate";
}
function getCheckedState(j) {
return isIndeterminate$1(j) ? "indeterminate" : j ? "checked" : "unchecked";
}
function focusFirst(j) {
let I = document.activeElement;
for (let q of j) if (q === I || (q.focus(), document.activeElement !== I)) return;
}
function wrapArray$1(j, I) {
return j.map((q, Q) => j[(I + Q) % j.length]);
}
function getNextMatch(j, I, q) {
let Q = I.length > 1 && Array.from(I).every((j) => j === I[0]) ? I[0] : I, p_ = q ? j.indexOf(q) : -1, m_ = wrapArray$1(j, Math.max(p_, 0));
Q.length === 1 && (m_ = m_.filter((j) => j !== q));
let h_ = m_.find((j) => j.toLowerCase().startsWith(Q.toLowerCase()));
return h_ === q ? void 0 : h_;
}
function isPointInPolygon$1(j, I) {
let { x: q, y: Q } = j, p_ = !1;
for (let j = 0, m_ = I.length - 1; j < I.length; m_ = j++) {
let h_ = I[j], g_ = I[m_], __ = h_.x, v_ = h_.y, y_ = g_.x, b_ = g_.y;
v_ > Q != b_ > Q && q < (y_ - __) * (Q - v_) / (b_ - v_) + __ && (p_ = !p_);
}
return p_;
}
function isPointerInGraceArea(j, I) {
if (!I) return !1;
let q = {
x: j.clientX,
y: j.clientY
};
return isPointInPolygon$1(q, I);
}
function whenMouse(j) {
return (I) => I.pointerType === "mouse" ? j(I) : void 0;
}
var Root3$1 = Menu, Anchor2 = MenuAnchor, Portal$3 = MenuPortal, Content2$5 = MenuContent, Group = MenuGroup, Label$2 = MenuLabel, Item2$2 = MenuItem, CheckboxItem = MenuCheckboxItem, RadioGroup = MenuRadioGroup, RadioItem = MenuRadioItem, ItemIndicator$1 = MenuItemIndicator, Separator = MenuSeparator, Arrow2$1 = MenuArrow, Sub = MenuSub, SubTrigger = MenuSubTrigger, SubContent = MenuSubContent, DROPDOWN_MENU_NAME = "DropdownMenu", [createDropdownMenuContext, createDropdownMenuScope] = createContextScope(DROPDOWN_MENU_NAME, [createMenuScope]), useMenuScope$1 = createMenuScope(), [DropdownMenuProvider, useDropdownMenuContext] = createDropdownMenuContext(DROPDOWN_MENU_NAME), DropdownMenu$1 = (j) => {
let { __scopeDropdownMenu: I, children: q, dir: Q, open: p_, defaultOpen: m_, onOpenChange: h_, modal: g_ = !0 } = j, __ = useMenuScope$1(I), v_ = React.useRef(null), [y_, b_] = useControllableState({
prop: p_,
defaultProp: m_ ?? !1,
onChange: h_,
caller: DROPDOWN_MENU_NAME
});
return /* @__PURE__ */ jsx(DropdownMenuProvider, {
scope: I,
triggerId: useId$1(),
triggerRef: v_,
contentId: useId$1(),
open: y_,
onOpenChange: b_,
onOpenToggle: React.useCallback(() => b_((j) => !j), [b_]),
modal: g_,
children: /* @__PURE__ */ jsx(Root3$1, {
...__,
open: y_,
onOpenChange: b_,
dir: Q,
modal: g_,
children: q
})
});
};
DropdownMenu$1.displayName = DROPDOWN_MENU_NAME;
var TRIGGER_NAME$7 = "DropdownMenuTrigger", DropdownMenuTrigger$1 = React.forwardRef((j, I) => {
let { __scopeDropdownMenu: q, disabled: Q = !1,...p_ } = j, m_ = useDropdownMenuContext(TRIGGER_NAME$7, q), h_ = useMenuScope$1(q);
return /* @__PURE__ */ jsx(Anchor2, {
asChild: !0,
...h_,
children: /* @__PURE__ */ jsx(Primitive.button, {
type: "button",
id: m_.triggerId,
"aria-haspopup": "menu",
"aria-expanded": m_.open,
"aria-controls": m_.open ? m_.contentId : void 0,
"data-state": m_.open ? "open" : "closed",
"data-disabled": Q ? "" : void 0,
disabled: Q,
...p_,
ref: composeRefs$1(I, m_.triggerRef),
onPointerDown: composeEventHandlers(j.onPointerDown, (j) => {
!Q && j.button === 0 && j.ctrlKey === !1 && (m_.onOpenToggle(), m_.open || j.preventDefault());
}),
onKeyDown: composeEventHandlers(j.onKeyDown, (j) => {
Q || (["Enter", " "].includes(j.key) && m_.onOpenToggle(), j.key === "ArrowDown" && m_.onOpenChange(!0), [
"Enter",
" ",
"ArrowDown"
].includes(j.key) && j.preventDefault());
})
})
});
});
DropdownMenuTrigger$1.displayName = TRIGGER_NAME$7;
var PORTAL_NAME$4 = "DropdownMenuPortal", DropdownMenuPortal = (j) => {
let { __scopeDropdownMenu: I,...q } = j, Q = useMenuScope$1(I);
return /* @__PURE__ */ jsx(Portal$3, {
...Q,
...q
});
};
DropdownMenuPortal.displayName = PORTAL_NAME$4;
var CONTENT_NAME$7 = "DropdownMenuContent", DropdownMenuContent$1 = React.forwardRef((j, I) => {
let { __scopeDropdownMenu: q,...Q } = j, p_ = useDropdownMenuContext(CONTENT_NAME$7, q), m_ = useMenuScope$1(q), h_ = React.useRef(!1);
return /* @__PURE__ */ jsx(Content2$5, {
id: p_.contentId,
"aria-labelledby": p_.triggerId,
...m_,
...Q,
ref: I,
onCloseAutoFocus: composeEventHandlers(j.onCloseAutoFocus, (j) => {
h_.current || p_.triggerRef.current?.focus(), h_.current = !1, j.preventDefault();
}),
onInteractOutside: composeEventHandlers(j.onInteractOutside, (j) => {
let I = j.detail.originalEvent, q = I.button === 0 && I.ctrlKey === !0, Q = I.button === 2 || q;
(!p_.modal || Q) && (h_.current = !0);
}),
style: {
...j.style,
"--radix-dropdown-menu-content-transform-origin": "var(--radix-popper-transform-origin)",
"--radix-dropdown-menu-content-available-width": "var(--radix-popper-available-width)",
"--radix-dropdown-menu-content-available-height": "var(--radix-popper-available-height)",
"--radix-dropdown-menu-trigger-width": "var(--radix-popper-anchor-width)",
"--radix-dropdown-menu-trigger-height": "var(--radix-popper-anchor-height)"
}
});
});
DropdownMenuContent$1.displayName = CONTENT_NAME$7;
var GROUP_NAME$2 = "DropdownMenuGroup", DropdownMenuGroup$1 = React.forwardRef((j, I) => {
let { __scopeDropdownMenu: q,...Q } = j, p_ = useMenuScope$1(q);
return /* @__PURE__ */ jsx(Group, {
...p_,
...Q,
ref: I
});
});
DropdownMenuGroup$1.displayName = GROUP_NAME$2;
var LABEL_NAME$2 = "DropdownMenuLabel", DropdownMenuLabel = React.forwardRef((j, I) => {
let { __scopeDropdownMenu: q,...Q } = j, p_ = useMenuScope$1(q);
return /* @__PURE__ */ jsx(Label$2, {
...p_,
...Q,
ref: I
});
});
DropdownMenuLabel.displayName = LABEL_NAME$2;
var ITEM_NAME$3 = "DropdownMenuItem", DropdownMenuItem$1 = React.forwardRef((j, I) => {
let { __scopeDropdownMenu: q,...Q } = j, p_ = useMenuScope$1(q);
return /* @__PURE__ */ jsx(Item2$2, {
...p_,
...Q,
ref: I
});
});
DropdownMenuItem$1.displayName = ITEM_NAME$3;
var CHECKBOX_ITEM_NAME$1 = "DropdownMenuCheckboxItem", DropdownMenuCheckboxItem = React.forwardRef((j, I) => {
let { __scopeDropdownMenu: q,...Q } = j, p_ = useMenuScope$1(q);
return /* @__PURE__ */ jsx(CheckboxItem, {
...p_,
...Q,
ref: I
});
});
DropdownMenuCheckboxItem.displayName = CHECKBOX_ITEM_NAME$1;
var RADIO_GROUP_NAME$1 = "DropdownMenuRadioGroup", DropdownMenuRadioGroup = React.forwardRef((j, I) => {
let { __scopeDropdownMenu: q,...Q } = j, p_ = useMenuScope$1(q);
return /* @__PURE__ */ jsx(RadioGroup, {
...p_,
...Q,
ref: I
});
});
DropdownMenuRadioGroup.displayName = RADIO_GROUP_NAME$1;
var RADIO_ITEM_NAME$1 = "DropdownMenuRadioItem", DropdownMenuRadioItem = React.forwardRef((j, I) => {
let { __scopeDropdownMenu: q,...Q } = j, p_ = useMenuScope$1(q);
return /* @__PURE__ */ jsx(RadioItem, {
...p_,
...Q,
ref: I
});
});
DropdownMenuRadioItem.displayName = RADIO_ITEM_NAME$1;
var INDICATOR_NAME$2 = "DropdownMenuItemIndicator", DropdownMenuItemIndicator = React.forwardRef((j, I) => {
let { __scopeDropdownMenu: q,...Q } = j, p_ = useMenuScope$1(q);
return /* @__PURE__ */ jsx(ItemIndicator$1, {
...p_,
...Q,
ref: I
});
});
DropdownMenuItemIndicator.displayName = INDICATOR_NAME$2;
var SEPARATOR_NAME$2 = "DropdownMenuSeparator", DropdownMenuSeparator$1 = React.forwardRef((j, I) => {
let { __scopeDropdownMenu: q,...Q } = j, p_ = useMenuScope$1(q);
return /* @__PURE__ */ jsx(Separator, {
...p_,
...Q,
ref: I
});
});
DropdownMenuSeparator$1.displayName = SEPARATOR_NAME$2;
var ARROW_NAME$3 = "DropdownMenuArrow", DropdownMenuArrow = React.forwardRef((j, I) => {
let { __scopeDropdownMenu: q,...Q } = j, p_ = useMenuScope$1(q);
return /* @__PURE__ */ jsx(Arrow2$1, {
...p_,
...Q,
ref: I
});
});
DropdownMenuArrow.displayName = ARROW_NAME$3;
var SUB_TRIGGER_NAME$1 = "DropdownMenuSubTrigger", DropdownMenuSubTrigger = React.forwardRef((j, I) => {
let { __scopeDropdownMenu: q,...Q } = j, p_ = useMenuScope$1(q);
return /* @__PURE__ */ jsx(SubTrigger, {
...p_,
...Q,
ref: I
});
});
DropdownMenuSubTrigger.displayName = SUB_TRIGGER_NAME$1;
var SUB_CONTENT_NAME$1 = "DropdownMenuSubContent", DropdownMenuSubContent = React.forwardRef((j, I) => {
let { __scopeDropdownMenu: q,...Q } = j, p_ = useMenuScope$1(q);
return /* @__PURE__ */ jsx(SubContent, {
...p_,
...Q,
ref: I,
style: {
...j.style,
"--radix-dropdown-menu-content-transform-origin": "var(--radix-popper-transform-origin)",
"--radix-dropdown-menu-content-available-width": "var(--radix-popper-available-width)",
"--radix-dropdown-menu-content-available-height": "var(--radix-popper-available-height)",
"--radix-dropdown-menu-trigger-width": "var(--radix-popper-anchor-width)",
"--radix-dropdown-menu-trigger-height": "var(--radix-popper-anchor-height)"
}
});
});
DropdownMenuSubContent.displayName = SUB_CONTENT_NAME$1;
var Root2$4 = DropdownMenu$1, Trigger$4 = DropdownMenuTrigger$1, Portal2$2 = DropdownMenuPortal, Content2$4 = DropdownMenuContent$1, Group2 = DropdownMenuGroup$1, Item2$1 = DropdownMenuItem$1, Separator2 = DropdownMenuSeparator$1;
function DropdownMenu({ ...j }) {
return /* @__PURE__ */ jsx(Root2$4, {
"data-slot": "dropdown-menu",
...j
});
}
function DropdownMenuTrigger({ ...j }) {
return /* @__PURE__ */ jsx(Trigger$4, {
"data-slot": "dropdown-menu-trigger",
...j
});
}
function DropdownMenuContent({ className: j, sideOffset: I = 4,...q }) {
let [Q, p_] = useState(null);
return /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(Portal2$2, {
container: Q,
children: /* @__PURE__ */ jsx(Content2$4, {
"data-slot": "dropdown-menu-content",
sideOffset: I,
className: cn("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[8rem] origin-[var(--radix-dropdown-menu-content-transform-origin)] overflow-y-auto overflow-x-hidden rounded-md border p-1 shadow-md", j),
...q
})
}), /* @__PURE__ */ jsx("div", {
ref: p_,
style: { display: "contents" }
})] });
}
function DropdownMenuGroup({ ...j }) {
return /* @__PURE__ */ jsx(Group2, {
"data-slot": "dropdown-menu-group",
...j
});
}
function DropdownMenuItem({ className: j, inset: I, variant: q = "default",...Q }) {
return /* @__PURE__ */ jsx(Item2$1, {
"data-slot": "dropdown-menu-item",
"data-inset": I,
"data-variant": q,
className: cn("focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:text-destructive! [&_svg:not([class*='text-'])]:text-muted-foreground outline-hidden data-disabled:pointer-events-none data-inset:pl-8 data-disabled:opacity-50 relative flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm [&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0", j),
...Q
});
}
function DropdownMenuSeparator({ className: j,...I }) {
return /* @__PURE__ */ jsx(Separator2, {
"data-slot": "dropdown-menu-separator",
className: cn("bg-border -mx-1 my-1 h-px", j),
...I
});
}
function DropdownMenuShortcut({ className: j,...I }) {
return /* @__PURE__ */ jsx("span", {
"data-slot": "dropdown-menu-shortcut",
className: cn("text-muted-foreground ml-auto text-xs tracking-widest", j),
...I
});
}
function Empty({ className: j,...I }) {
return /* @__PURE__ */ jsx("div", {
"data-slot": "empty",
className: cn("flex min-w-0 flex-1 flex-col items-center justify-center gap-6 text-balance rounded-lg border-dashed p-6 text-center md:p-12", j),
...I
});
}
function EmptyHeader({ className: j,...I }) {
return /* @__PURE__ */ jsx("div", {
"data-slot": "empty-header",
className: cn("flex max-w-sm flex-col items-center gap-2 text-center", j),
...I
});
}
var emptyMediaVariants = cva("flex shrink-0 items-center justify-center mb-2 [&_svg]:pointer-events-none [&_svg]:shrink-0", {
variants: { variant: {
default: "bg-transparent",
icon: "bg-muted text-foreground flex size-10 shrink-0 items-center justify-center rounded-lg [&_svg:not([class*='size-'])]:size-6"
} },
defaultVariants: { variant: "default" }
});
function EmptyMedia({ className: j, variant: I = "default",...q }) {
return /* @__PURE__ */ jsx("div", {
"data-slot": "empty-icon",
"data-variant": I,
className: cn(emptyMediaVariants({
variant: I,
className: j
})),
...q
});
}
function EmptyTitle({ className: j,...I }) {
return /* @__PURE__ */ jsx("div", {
"data-slot": "empty-title",
className: cn("text-lg font-medium tracking-tight", j),
...I
});
}
function EmptyDescription({ className: j,...I }) {
return /* @__PURE__ */ jsx("div", {
"data-slot": "empty-description",
className: cn("text-muted-foreground [&>a:hover]:text-primary text-sm/relaxed [&>a]:underline [&>a]:underline-offset-4", j),
...I
});
}
function EmptyContent({ className: j,...I }) {
return /* @__PURE__ */ jsx("div", {
"data-slot": "empty-content",
className: cn("flex w-full min-w-0 max-w-sm flex-col items-center gap-4 text-balance text-sm", j),
...I
});
}
var Primitive$1 = [
"a",
"button",
"div",
"form",
"h2",
"h3",
"img",
"input",
"label",
"li",
"nav",
"ol",
"p",
"select",
"span",
"svg",
"ul"
].reduce((j, I) => {
let q = /* @__PURE__ */ createSlot$1(`Primitive.${I}`), Q = React.forwardRef((j, Q) => {
let { asChild: p_,...m_ } = j, h_ = p_ ? q : I;
return typeof window < "u" && (window[Symbol.for("radix-ui")] = !0), /* @__PURE__ */ jsx(h_, {
...m_,
ref: Q
});
});
return Q.displayName = `Primitive.${I}`, {
...j,
[I]: Q
};
}, {}), NAME$2 = "Label", Label$1 = React.forwardRef((j, I) => /* @__PURE__ */ jsx(Primitive$1.label, {
...j,
ref: I,
onMouseDown: (I) => {
I.target.closest("button, input, select, textarea") || (j.onMouseDown?.(I), !I.defaultPrevented && I.detail > 1 && I.preventDefault());
}
}));
Label$1.displayName = NAME$2;
var Root$4 = Label$1;
function Label({ className: j,...I }) {
return /* @__PURE__ */ jsx(Root$4, {
"data-slot": "label",
className: cn("flex select-none items-center gap-2 text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-50 group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50", j),
...I
});
}
function FieldGroup({ className: j,...I }) {
return /* @__PURE__ */ jsx("div", {
"data-slot": "field-group",
className: cn("group/field-group flex w-full flex-col gap-7 data-[slot=checkbox-group]:gap-3 [&>[data-slot=field-group]]:gap-4", j),
...I
});
}
var fieldVariants = cva("group/field flex w-full gap-3 data-[invalid=true]:text-destructive", {
variants: { orientation: {
vertical: ["flex-col [&>*]:w-full [&>.sr-only]:w-auto"],
horizontal: [
"flex-row items-center",
"[&>[data-slot=field-label]]:flex-auto",
"has-[>[data-slot=field-content]]:items-start has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px"
],
responsive: [
"flex-col [&>*]:w-full [&>.sr-only]:w-auto @md/field-group:flex-row @md/field-group:items-center @md/field-group:[&>*]:w-auto",
"@md/field-group:[&>[data-slot=field-label]]:flex-auto",
"@md/field-group:has-[>[data-slot=field-content]]:items-start @md/field-group:has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px"
]
} },
defaultVariants: { orientation: "vertical" }
});
function Field({ className: j, orientation: I = "vertical",...q }) {
return /* @__PURE__ */ jsx("div", {
role: "group",
"data-slot": "field",
"data-orientation": I,
className: cn(fieldVariants({ orientation: I }), j),
...q
});
}
function FieldLabel({ className: j,...I }) {
return /* @__PURE__ */ jsx(Label, {
"data-slot": "field-label",
className: cn("group/field-label peer/field-label flex w-fit gap-2 leading-snug group-data-[disabled=true]/field:opacity-50", "has-[>[data-slot=field]]:w-full has-[>[data-slot=field]]:flex-col has-[>[data-slot=field]]:rounded-md has-[>[data-slot=field]]:border [&>*]:data-[slot=field]:p-4", "has-[>[data-state=checked]]:border-primary has-[>[data-state=checked]]:bg-primary/10", j),
...I
});
}
function FieldError({ className: j, children: I, errors: q,...Q }) {
let p_ = useMemo(() => {
if (I) return I;
if (!q?.length) return null;
let j = [...new Map(q.map((j) => [j?.message, j])).values()];
return j?.length === 1 ? j[0]?.message : /* @__PURE__ */ jsx("ul", {
className: "ml-4 flex list-disc flex-col gap-1",
children: j.map((j, I) => j?.message && /* @__PURE__ */ jsx("li", { children: j.message }, I))
});
}, [I, q]);
return p_ ? /* @__PURE__ */ jsx("div", {
role: "alert",
"data-slot": "field-error",
className: cn("text-destructive text-sm font-normal", j),
...Q,
children: p_
}) : null;
}
function Input({ className: j, type: I,...q }) {
return /* @__PURE__ */ jsx("input", {
type: I,
"data-slot": "input",
className: cn("file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground bg-input/30 border-input h-9 w-full min-w-0 rounded-md border px-3 py-1 text-base shadow-sm outline-none transition-[color,box-shadow] file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm", "focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]", "aria-invalid:ring-destructive/40 aria-invalid:border-destructive", j),
...q
});
}
var PanelGroupContext = createContext(null);
PanelGroupContext.displayName = "PanelGroupContext";
var DATA_ATTRIBUTES = {
group: "data-panel-group",
groupDirection: "data-panel-group-direction",
groupId: "data-panel-group-id",
panel: "data-panel",
panelCollapsible: "data-panel-collapsible",
panelId: "data-panel-id",
panelSize: "data-panel-size",
resizeHandle: "data-resize-handle",
resizeHandleActive: "data-resize-handle-active",
resizeHandleEnabled: "data-panel-resize-handle-enabled",
resizeHandleId: "data-panel-resize-handle-id",
resizeHandleState: "data-resize-handle-state"
}, PRECISION = 10, useIsomorphicLayoutEffect$1 = useLayoutEffect, useId$2 = React.useId, wrappedUseId = typeof useId$2 == "function" ? useId$2 : () => null, counter = 0;
function useUniqueId$1(j = null) {
let I = wrappedUseId(), q = useRef(j || I || null);
return q.current === null && (q.current = "" + counter++), j ?? q.current;
}
function PanelWithForwardedRef({ children: j, className: I = "", collapsedSize: q, collapsible: Q, defaultSize: p_, forwardedRef: m_, id: h_, maxSize: g_, minSize: __, onCollapse: v_, onExpand: y_, onResize: b_, order: x_, style: S_, tagName: C_ = "div",...w_ }) {
let T_ = useContext(PanelGroupContext);
if (T_ === null) throw Error("Panel components must be rendered within a PanelGroup container");
let { collapsePanel: E_, expandPanel: D_, getPanelSize: O_, getPanelStyle: k_, groupId: A_, isPanelCollapsed: j_, reevaluatePanelConstraints: M_, registerPanel: N_, resizePanel: P_, unregisterPanel: F_ } = T_, I_ = useUniqueId$1(h_), L_ = useRef({
callbacks: {
onCollapse: v_,
onExpand: y_,
onResize: b_
},
constraints: {
collapsedSize: q,
collapsible: Q,
defaultSize: p_,
maxSize: g_,
minSize: __
},
id: I_,
idIsFromProps: h_ !== void 0,
order: x_
});
useRef({ didLogMissingDefaultSizeWarning: !1 }), useIsomorphicLayoutEffect$1(() => {
let { callbacks: j, constraints: I } = L_.current, m_ = { ...I };
L_.current.id = I_, L_.current.idIsFromProps = h_ !== void 0, L_.current.order = x_, j.onCollapse = v_, j.onExpand = y_, j.onResize = b_, I.collapsedSize = q, I.collapsible = Q, I.defaultSize = p_, I.maxSize = g_, I.minSize = __, (m_.collapsedSize !== I.collapsedSize || m_.collapsible !== I.collapsible || m_.maxSize !== I.maxSize || m_.minSize !== I.minSize) && M_(L_.current, m_);
}), useIsomorphicLayoutEffect$1(() => {
let j = L_.current;
return N_(j), () => {
F_(j);
};
}, [
x_,
I_,
N_,
F_
]), useImperativeHandle(m_, () => ({
collapse: () => {
E_(L_.current);
},
expand: (j) => {
D_(L_.current, j);
},
getId() {
return I_;
},
getSize() {
return O_(L_.current);
},
isCollapsed() {
return j_(L_.current);
},
isExpanded() {
return !j_(L_.current);
},
resize: (j) => {
P_(L_.current, j);
}
}), [
E_,
D_,
O_,
j_,
I_,
P_
]);
let R_ = k_(L_.current, p_);
return createElement(C_, {
...w_,
children: j,
className: I,
id: I_,
style: {
...R_,
...S_
},
[DATA_ATTRIBUTES.groupId]: A_,
[DATA_ATTRIBUTES.panel]: "",
[DATA_ATTRIBUTES.panelCollapsible]: Q || void 0,
[DATA_ATTRIBUTES.panelId]: I_,
[DATA_ATTRIBUTES.panelSize]: parseFloat("" + R_.flexGrow).toFixed(1)
});
}
var Panel = forwardRef((j, I) => createElement(PanelWithForwardedRef, {
...j,
forwardedRef: I
}));
PanelWithForwardedRef.displayName = "Panel", Panel.displayName = "forwardRef(Panel)";
var nonce;
function getNonce() {
return nonce;
}
var currentCursorStyle = null, enabled = !0, getCustomCursorStyleFunction = null, prevRuleIndex = -1, styleElement = null;
function getCursorStyle(j, I, q) {
let Q = (I & EXCEEDED_HORIZONTAL_MIN) !== 0, p_ = (I & EXCEEDED_HORIZONTAL_MAX) !== 0, m_ = (I & EXCEEDED_VERTICAL_MIN) !== 0, h_ = (I & EXCEEDED_VERTICAL_MAX) !== 0;
if (getCustomCursorStyleFunction) return getCustomCursorStyleFunction({
exceedsHorizontalMaximum: p_,
exceedsHorizontalMinimum: Q,
exceedsVerticalMaximum: h_,
exceedsVerticalMinimum: m_,
intersectsHorizontalDragHandle: j === "horizontal" || j === "intersection",
intersectsVerticalDragHandle: j === "vertical" || j === "intersection",
isPointerDown: q
});
if (I) {
if (Q) return m_ ? "se-resize" : h_ ? "ne-resize" : "e-resize";
if (p_) return m_ ? "sw-resize" : h_ ? "nw-resize" : "w-resize";
if (m_) return "s-resize";
if (h_) return "n-resize";
}
switch (j) {
case "horizontal": return "ew-resize";
case "intersection": return "move";
case "vertical": return "ns-resize";
}
}
function resetGlobalCursorStyle() {
styleElement !== null && (document.head.removeChild(styleElement), currentCursorStyle = null, styleElement = null, prevRuleIndex = -1);
}
function setGlobalCursorStyle(j, I, q) {
if (!enabled) return;
let Q = getCursorStyle(j, I, q);
if (currentCursorStyle !== Q) {
if (currentCursorStyle = Q, styleElement === null) {
styleElement = document.createElement("style");
let j = getNonce();
j && styleElement.setAttribute("nonce", j), document.head.appendChild(styleElement);
}
if (prevRuleIndex >= 0) {
var p_;
(p_ = styleElement.sheet) == null || p_.removeRule(prevRuleIndex);
}
prevRuleIndex = styleElement.sheet?.insertRule(`*{cursor: ${Q} !important;}`) ?? -1;
}
}
function isKeyDown(j) {
return j.type === "keydown";
}
function isPointerEvent(j) {
return j.type.startsWith("pointer");
}
function isMouseEvent(j) {
return j.type.startsWith("mouse");
}
function getResizeEventCoordinates(j) {
if (isPointerEvent(j)) {
if (j.isPrimary) return {
x: j.clientX,
y: j.clientY
};
} else if (isMouseEvent(j)) return {
x: j.clientX,
y: j.clientY
};
return {
x: Infinity,
y: Infinity
};
}
function getInputType() {
if (typeof matchMedia == "function") return matchMedia("(pointer:coarse)").matches ? "coarse" : "fine";
}
function intersects(j, I, q) {
return q ? j.x < I.x + I.width && j.x + j.width > I.x && j.y < I.y + I.height && j.y + j.height > I.y : j.x <= I.x + I.width && j.x + j.width >= I.x && j.y <= I.y + I.height && j.y + j.height >= I.y;
}
function compare(j, I) {
if (j === I) throw Error("Cannot compare node with itself");
let q = {
a: get_ancestors(j),
b: get_ancestors(I)
}, Q;
for (; q.a.at(-1) === q.b.at(-1);) j = q.a.pop(), I = q.b.pop(), Q = j;
assert(Q, "Stacking order can only be calculated for elements with a common ancestor");
let p_ = {
a: get_z_index(find_stacking_context(q.a)),
b: get_z_index(find_stacking_context(q.b))
};
if (p_.a === p_.b) {
let j = Q.childNodes, I = {
a: q.a.at(-1),
b: q.b.at(-1)
}, p_ = j.length;
for (; p_--;) {
let q = j[p_];
if (q === I.a) return 1;
if (q === I.b) return -1;
}
}
return Math.sign(p_.a - p_.b);
}
var props = /\b(?:position|zIndex|opacity|transform|webkitTransform|mixBlendMode|filter|webkitFilter|isolation)\b/;
function is_flex_item(j) {
let I = getComputedStyle(get_parent(j) ?? j).display;
return I === "flex" || I === "inline-flex";
}
function creates_stacking_context(j) {
let I = getComputedStyle(j);
return !!(I.position === "fixed" || I.zIndex !== "auto" && (I.position !== "static" || is_flex_item(j)) || +I.opacity < 1 || "transform" in I && I.transform !== "none" || "webkitTransform" in I && I.webkitTransform !== "none" || "mixBlendMode" in I && I.mixBlendMode !== "normal" || "filter" in I && I.filter !== "none" || "webkitFilter" in I && I.webkitFilter !== "none" || "isolation" in I && I.isolation === "isolate" || props.test(I.willChange) || I.webkitOverflowScrolling === "touch");
}
function find_stacking_context(j) {
let I = j.length;
for (; I--;) {
let q = j[I];
if (assert(q, "Missing node"), creates_stacking_context(q)) return q;
}
return null;
}
function get_z_index(j) {
return j && Number(getComputedStyle(j).zIndex) || 0;
}
function get_ancestors(j) {
let I = [];
for (; j;) I.push(j), j = get_parent(j);
return I;
}
function get_parent(j) {
let { parentNode: I } = j;
return I && I instanceof ShadowRoot ? I.host : I;
}
var EXCEEDED_HORIZONTAL_MIN = 1, EXCEEDED_HORIZONTAL_MAX = 2, EXCEEDED_VERTICAL_MIN = 4, EXCEEDED_VERTICAL_MAX = 8, isCoarsePointer = getInputType() === "coarse", intersectingHandles = [], isPointerDown = !1, ownerDocumentCounts = /* @__PURE__ */ new Map(), panelConstraintFlags = /* @__PURE__ */ new Map(), registeredResizeHandlers = /* @__PURE__ */ new Set();
function registerResizeHandle(j, I, q, Q, p_) {
let { ownerDocument: m_ } = I, h_ = {
direction: q,
element: I,
hitAreaMargins: Q,
setResizeHandlerState: p_
}, g_ = ownerDocumentCounts.get(m_) ?? 0;
return ownerDocumentCounts.set(m_, g_ + 1), registeredResizeHandlers.add(h_), updateListeners(), function() {
panelConstraintFlags.delete(j), registeredResizeHandlers.delete(h_);
let I = ownerDocumentCounts.get(m_) ?? 1;
if (ownerDocumentCounts.set(m_, I - 1), updateListeners(), I === 1 && ownerDocumentCounts.delete(m_), intersectingHandles.includes(h_)) {
let j = intersectingHandles.indexOf(h_);
j >= 0 && intersectingHandles.splice(j, 1), updateCursor(), p_("up", !0, null);
}
};
}
function handlePointerDown(j) {
let { target: I } = j, { x: q, y: Q } = getResizeEventCoordinates(j);
isPointerDown = !0, recalculateIntersectingHandles({
target: I,
x: q,
y: Q
}), updateListeners(), intersectingHandles.length > 0 && (updateResizeHandlerStates("down", j), updateCursor(), j.preventDefault(), isWithinResizeHandle(I) || j.stopImmediatePropagation());
}
function handlePointerMove(j) {
let { x: I, y: q } = getResizeEventCoordinates(j);
if (isPointerDown && j.type !== "pointerleave" && j.buttons === 0 && (isPointerDown = !1, updateResizeHandlerStates("up", j)), !isPointerDown) {
let { target: Q } = j;
recalculateIntersectingHandles({
target: Q,
x: I,
y: q
});
}
updateResizeHandlerStates("move", j), updateCursor(), intersectingHandles.length > 0 && j.preventDefault();
}
function handlePointerUp(j) {
let { target: I } = j, { x: q, y: Q } = getResizeEventCoordinates(j);
panelConstraintFlags.clear(), isPointerDown = !1, intersectingHandles.length > 0 && (j.preventDefault(), isWithinResizeHandle(I) || j.stopImmediatePropagation()), updateResizeHandlerStates("up", j), recalculateIntersectingHandles({
target: I,
x: q,
y: Q
}), updateCursor(), updateListeners();
}
function isWithinResizeHandle(j) {
let I = j;
for (; I;) {
if (I.hasAttribute(DATA_ATTRIBUTES.resizeHandle)) return !0;
I = I.parentElement;
}
return !1;
}
function recalculateIntersectingHandles({ target: j, x: I, y: q }) {
intersectingHandles.splice(0);
let Q = null;
(j instanceof HTMLElement || j instanceof SVGElement) && (Q = j), registeredResizeHandlers.forEach((j) => {
let { element: p_, hitAreaMargins: m_ } = j, h_ = p_.getBoundingClientRect(), { bottom: g_, left: __, right: v_, top: y_ } = h_, b_ = isCoarsePointer ? m_.coarse : m_.fine;
if (I >= __ - b_ && I <= v_ + b_ && q >= y_ - b_ && q <= g_ + b_) {
if (Q !== null && document.contains(Q) && p_ !== Q && !p_.contains(Q) && !Q.contains(p_) && compare(Q, p_) > 0) {
let j = Q, I = !1;
for (; j && !j.contains(p_);) {
if (intersects(j.getBoundingClientRect(), h_, !0)) {
I = !0;
break;
}
j = j.parentElement;
}
if (I) return;
}
intersectingHandles.push(j);
}
});
}
function reportConstraintsViolation(j, I) {
panelConstraintFlags.set(j, I);
}
function updateCursor() {
let j = !1, I = !1;
intersectingHandles.forEach((q) => {
let { direction: Q } = q;
Q === "horizontal" ? j = !0 : I = !0;
});
let q = 0;
panelConstraintFlags.forEach((j) => {
q |= j;
}), j && I ? setGlobalCursorStyle("intersection", q, isPointerDown) : j ? setGlobalCursorStyle("horizontal", q, isPointerDown) : I ? setGlobalCursorStyle("vertical", q, isPointerDown) : resetGlobalCursorStyle();
}
var listenersAbortController;
function updateListeners() {
var j;
(j = listenersAbortController) == null || j.abort(), listenersAbortController = new AbortController();
let I = {
capture: !0,
signal: listenersAbortController.signal
};
registeredResizeHandlers.size && (isPointerDown ? (intersectingHandles.length > 0 && ownerDocumentCounts.forEach((j, q) => {
let { body: Q } = q;
j > 0 && (Q.addEventListener("contextmenu", handlePointerUp, I), Q.addEventListener("pointerleave", handlePointerMove, I), Q.addEventListener("pointermove", handlePointerMove, I));
}), ownerDocumentCounts.forEach((j, q) => {
let { body: Q } = q;
Q.addEventListener("pointerup", handlePointerUp, I), Q.addEventListener("pointercancel", handlePointerUp, I);
})) : ownerDocumentCounts.forEach((j, q) => {
let { body: Q } = q;
j > 0 && (Q.addEventListener("pointerdown", handlePointerDown, I), Q.addEventListener("pointermove", handlePointerMove, I));
}));
}
function updateResizeHandlerStates(j, I) {
registeredResizeHandlers.forEach((q) => {
let { setResizeHandlerState: Q } = q, p_ = intersectingHandles.includes(q);
Q(j, p_, I);
});
}
function useForceUpdate() {
let [j, I] = useState(0);
return useCallback(() => I((j) => j + 1), []);
}
function assert(j, I) {
if (!j) throw console.error(I), Error(I);
}
function fuzzyCompareNumbers(j, I, q = PRECISION) {
return j.toFixed(q) === I.toFixed(q) ? 0 : j > I ? 1 : -1;
}
function fuzzyNumbersEqual$1(j, I, q = PRECISION) {
return fuzzyCompareNumbers(j, I, q) === 0;
}
function fuzzyNumbersEqual(j, I, q) {
return fuzzyCompareNumbers(j, I, q) === 0;
}
function fuzzyLayoutsEqual(j, I, q) {
if (j.length !== I.length) return !1;
for (let Q = 0; Q < j.length; Q++) {
let p_ = j[Q], m_ = I[Q];
if (!fuzzyNumbersEqual(p_, m_, q)) return !1;
}
return !0;
}
function resizePanel({ panelConstraints: j, panelIndex: I, size: q }) {
let Q = j[I];
assert(Q != null, `Panel constraints not found for index ${I}`);
let { collapsedSize: p_ = 0, collapsible: m_, maxSize: h_ = 100, minSize: g_ = 0 } = Q;
if (fuzzyCompareNumbers(q, g_) < 0) if (m_) {
let j = (p_ + g_) / 2;
q = fuzzyCompareNumbers(q, j) < 0 ? p_ : g_;
} else q = g_;
return q = Math.min(h_, q), q = parseFloat(q.toFixed(PRECISION)), q;
}
function adjustLayoutByDelta({ delta: j, initialLayout: I, panelConstraints: q, pivotIndices: Q, prevLayout: p_, trigger: m_ }) {
if (fuzzyNumbersEqual(j, 0)) return I;
let h_ = [...I], [g_, __] = Q;
assert(g_ != null, "Invalid first pivot index"), assert(__ != null, "Invalid second pivot index");
let v_ = 0;
if (m_ === "keyboard") {
{
let Q = j < 0 ? __ : g_, p_ = q[Q];
assert(p_, `Panel constraints not found for index ${Q}`);
let { collapsedSize: m_ = 0, collapsible: h_, minSize: v_ = 0 } = p_;
if (h_) {
let q = I[Q];
if (assert(q != null, `Previous layout not found for panel index ${Q}`), fuzzyNumbersEqual(q, m_)) {
let I = v_ - q;
fuzzyCompareNumbers(I, Math.abs(j)) > 0 && (j = j < 0 ? 0 - I : I);
}
}
}
{
let Q = j < 0 ? g_ : __, p_ = q[Q];
assert(p_, `No panel constraints found for index ${Q}`);
let { collapsedSize: m_ = 0, collapsible: h_, minSize: v_ = 0 } = p_;
if (h_) {
let q = I[Q];
if (assert(q != null, `Previous layout not found for panel index ${Q}`), fuzzyNumbersEqual(q, v_)) {
let I = q - m_;
fuzzyCompareNumbers(I, Math.abs(j)) > 0 && (j = j < 0 ? 0 - I : I);
}
}
}
}
{
let Q = j < 0 ? 1 : -1, p_ = j < 0 ? __ : g_, m_ = 0;
for (;;) {
let j = I[p_];
assert(j != null, `Previous layout not found for panel index ${p_}`);
let h_ = resizePanel({
panelConstraints: q,
panelIndex: p_,
size: 100
}) - j;
if (m_ += h_, p_ += Q, p_ < 0 || p_ >= q.length) break;
}
let h_ = Math.min(Math.abs(j), Math.abs(m_));
j = j < 0 ? 0 - h_ : h_;
}
{
let Q = j < 0 ? g_ : __;
for (; Q >= 0 && Q < q.length;) {
let p_ = Math.abs(j) - Math.abs(v_), m_ = I[Q];
assert(m_ != null, `Previous layout not found for panel index ${Q}`);
let g_ = m_ - p_, __ = resizePanel({
panelConstraints: q,
panelIndex: Q,
size: g_
});
if (!fuzzyNumbersEqual(m_, __) && (v_ += m_ - __, h_[Q] = __, v_.toFixed(3).localeCompare(Math.abs(j).toFixed(3), void 0, { numeric: !0 }) >= 0)) break;
j < 0 ? Q-- : Q++;
}
}
if (fuzzyLayoutsEqual(p_, h_)) return p_;
{
let Q = j < 0 ? __ : g_, p_ = I[Q];
assert(p_ != null, `Previous layout not found for panel index ${Q}`);
let m_ = p_ + v_, y_ = resizePanel({
panelConstraints: q,
panelIndex: Q,
size: m_
});
if (h_[Q] = y_, !fuzzyNumbersEqual(y_, m_)) {
let I = m_ - y_, Q = j < 0 ? __ : g_;
for (; Q >= 0 && Q < q.length;) {
let p_ = h_[Q];
assert(p_ != null, `Previous layout not found for panel index ${Q}`);
let m_ = p_ + I, g_ = resizePanel({
panelConstraints: q,
panelIndex: Q,
size: m_
});
if (fuzzyNumbersEqual(p_, g_) || (I -= g_ - p_, h_[Q] = g_), fuzzyNumbersEqual(I, 0)) break;
j > 0 ? Q-- : Q++;
}
}
}
let y_ = h_.reduce((j, I) => I + j, 0);
return fuzzyNumbersEqual(y_, 100) ? h_ : p_;
}
function calculateAriaValues({ layout: j, panelsArray: I, pivotIndices: q }) {
let Q = 0, p_ = 100, m_ = 0, h_ = 0, g_ = q[0];
assert(g_ != null, "No pivot index found"), I.forEach((j, I) => {
let { constraints: q } = j, { maxSize: __ = 100, minSize: v_ = 0 } = q;
I === g_ ? (Q = v_, p_ = __) : (m_ += v_, h_ += __);
});
let __ = Math.min(p_, 100 - m_), v_ = Math.max(Q, 100 - h_), y_ = j[g_];
return {
valueMax: __,
valueMin: v_,
valueNow: y_
};
}
function getResizeHandleElementsForGroup(j, I = document) {
return Array.from(I.querySelectorAll(`[${DATA_ATTRIBUTES.resizeHandleId}][data-panel-group-id="${j}"]`));
}
function getResizeHandleElementIndex(j, I, q = document) {
return getResizeHandleElementsForGroup(j, q).findIndex((j) => j.getAttribute(DATA_ATTRIBUTES.resizeHandleId) === I) ?? null;
}
function determinePivotIndices(j, I, q) {
let Q = getResizeHandleElementIndex(j, I, q);
return Q == null ? [-1, -1] : [Q, Q + 1];
}
function isHTMLElement$1(j) {
return j instanceof HTMLElement ? !0 : typeof j == "object" && !!j && "tagName" in j && "getAttribute" in j;
}
function getPanelGroupElement(j, I = document) {
return isHTMLElement$1(I) && I.dataset.panelGroupId == j ? I : I.querySelector(`[data-panel-group][data-panel-group-id="${j}"]`) || null;
}
function getResizeHandleElement(j, I = document) {
return I.querySelector(`[${DATA_ATTRIBUTES.resizeHandleId}="${j}"]`) || null;
}
function getResizeHandlePanelIds(j, I, q, Q = document) {
let p_ = getResizeHandleElement(I, Q), m_ = getResizeHandleElementsForGroup(j, Q), h_ = p_ ? m_.indexOf(p_) : -1, g_ = q[h_]?.id ?? null, __ = q[h_ + 1]?.id ?? null;
return [g_, __];
}
function useWindowSplitterPanelGroupBehavior({ committedValuesRef: j, eagerValuesRef: I, groupId: q, layout: Q, panelDataArray: p_, panelGroupElement: m_, setLayout: h_ }) {
useRef({ didWarnAboutMissingResizeHandle: !1 }), useIsomorphicLayoutEffect$1(() => {
if (!m_) return;
let j = getResizeHandleElementsForGroup(q, m_);
for (let I = 0; I < p_.length - 1; I++) {
let { valueMax: q, valueMin: m_, valueNow: h_ } = calculateAriaValues({
layout: Q,
panelsArray: p_,
pivotIndices: [I, I + 1]
}), g_ = j[I];
if (g_ != null) {
let j = p_[I];
assert(j, `No panel data found for index "${I}"`), g_.setAttribute("aria-controls", j.id), g_.setAttribute("aria-valuemax", "" + Math.round(q)), g_.setAttribute("aria-valuemin", "" + Math.round(m_)), g_.setAttribute("aria-valuenow", h_ == null ? "" : "" + Math.round(h_));
}
}
return () => {
j.forEach((j, I) => {
j.removeAttribute("aria-controls"), j.removeAttribute("aria-valuemax"), j.removeAttribute("aria-valuemin"), j.removeAttribute("aria-valuenow");
});
};
}, [
q,
Q,
p_,
m_
]), useEffect(() => {
if (!m_) return;
let j = I.current;
assert(j, "Eager values not found");
let { panelDataArray: p_ } = j, g_ = getPanelGroupElement(q, m_);
assert(g_ != null, `No group found for id "${q}"`);
let __ = getResizeHandleElementsForGroup(q, m_);
assert(__, `No resize handles found for group id "${q}"`);
let v_ = __.map((j) => {
let I = j.getAttribute(DATA_ATTRIBUTES.resizeHandleId);
assert(I, "Resize handle element has no handle id attribute");
let [g_, __] = getResizeHandlePanelIds(q, I, p_, m_);
if (g_ == null || __ == null) return () => {};
let v_ = (j) => {
if (!j.defaultPrevented) switch (j.key) {
case "Enter": {
j.preventDefault();
let __ = p_.findIndex((j) => j.id === g_);
if (__ >= 0) {
let j = p_[__];
assert(j, `No panel data found for index ${__}`);
let g_ = Q[__], { collapsedSize: v_ = 0, collapsible: y_, minSize: b_ = 0 } = j.constraints;
if (g_ != null && y_) {
let j = adjustLayoutByDelta({
delta: fuzzyNumbersEqual(g_, v_) ? b_ - v_ : v_ - g_,
initialLayout: Q,
panelConstraints: p_.map((j) => j.constraints),
pivotIndices: determinePivotIndices(q, I, m_),
prevLayout: Q,
trigger: "keyboard"
});
Q !== j && h_(j);
}
}
break;
}
}
};
return j.addEventListener("keydown", v_), () => {
j.removeEventListener("keydown", v_);
};
});
return () => {
v_.forEach((j) => j());
};
}, [
m_,
j,
I,
q,
Q,
p_,
h_
]);
}
function areEqual(j, I) {
if (j.length !== I.length) return !1;
for (let q = 0; q < j.length; q++) if (j[q] !== I[q]) return !1;
return !0;
}
function getResizeEventCursorPosition(j, I) {
let q = j === "horizontal", { x: Q, y: p_ } = getResizeEventCoordinates(I);
return q ? Q : p_;
}
function calculateDragOffsetPercentage(j, I, q, Q, p_) {
let m_ = q === "horizontal", h_ = getResizeHandleElement(I, p_);
assert(h_, `No resize handle element found for id "${I}"`);
let g_ = h_.getAttribute(DATA_ATTRIBUTES.groupId);
assert(g_, "Resize handle element has no group id attribute");
let { initialCursorPosition: __ } = Q, v_ = getResizeEventCursorPosition(q, j), y_ = getPanelGroupElement(g_, p_);
assert(y_, `No group element found for id "${g_}"`);
let b_ = y_.getBoundingClientRect(), x_ = m_ ? b_.width : b_.height;
return (v_ - __) / x_ * 100;
}
function calculateDeltaPercentage(j, I, q, Q, p_, m_) {
if (isKeyDown(j)) {
let I = q === "horizontal", Q = 0;
Q = j.shiftKey ? 100 : p_ ?? 10;
let m_ = 0;
switch (j.key) {
case "ArrowDown":
m_ = I ? 0 : Q;
break;
case "ArrowLeft":
m_ = I ? -Q : 0;
break;
case "ArrowRight":
m_ = I ? Q : 0;
break;
case "ArrowUp":
m_ = I ? 0 : -Q;
break;
case "End":
m_ = 100;
break;
case "Home":
m_ = -100;
break;
}
return m_;
} else return Q == null ? 0 : calculateDragOffsetPercentage(j, I, q, Q, m_);
}
function calculateUnsafeDefaultLayout({ panelDataArray: j }) {
let I = Array(j.length), q = j.map((j) => j.constraints), Q = 0, p_ = 100;
for (let m_ = 0; m_ < j.length; m_++) {
let j = q[m_];
assert(j, `Panel constraints not found for index ${m_}`);
let { defaultSize: h_ } = j;
h_ != null && (Q++, I[m_] = h_, p_ -= h_);
}
for (let m_ = 0; m_ < j.length; m_++) {
let h_ = q[m_];
assert(h_, `Panel constraints not found for index ${m_}`);
let { defaultSize: g_ } = h_;
if (g_ != null) continue;
let __ = j.length - Q, v_ = p_ / __;
Q++, I[m_] = v_, p_ -= v_;
}
return I;
}
function callPanelCallbacks(j, I, q) {
I.forEach((I, Q) => {
let p_ = j[Q];
assert(p_, `Panel data not found for index ${Q}`);
let { callbacks: m_, constraints: h_, id: g_ } = p_, { collapsedSize: __ = 0, collapsible: v_ } = h_, y_ = q[g_];
if (y_ == null || I !== y_) {
q[g_] = I;
let { onCollapse: j, onExpand: Q, onResize: p_ } = m_;
p_ && p_(I, y_), v_ && (j || Q) && (Q && (y_ == null || fuzzyNumbersEqual$1(y_, __)) && !fuzzyNumbersEqual$1(I, __) && Q(), j && (y_ == null || !fuzzyNumbersEqual$1(y_, __)) && fuzzyNumbersEqual$1(I, __) && j());
}
});
}
function compareLayouts(j, I) {
if (j.length !== I.length) return !1;
for (let q = 0; q < j.length; q++) if (j[q] != I[q]) return !1;
return !0;
}
function computePanelFlexBoxStyle({ defaultSize: j, dragState: I, layout: q, panelData: Q, panelIndex: p_, precision: m_ = 3 }) {
let h_ = q[p_], g_;
return g_ = h_ == null ? j == null ? "1" : j.toFixed(m_) : Q.length === 1 ? "1" : h_.toFixed(m_), {
flexBasis: 0,
flexGrow: g_,
flexShrink: 1,
overflow: "hidden",
pointerEvents: I === null ? void 0 : "none"
};
}
function debounce(j, I = 10) {
let q = null;
return (...Q) => {
q !== null && clearTimeout(q), q = setTimeout(() => {
j(...Q);
}, I);
};
}
function initializeDefaultStorage(j) {
try {
if (typeof localStorage < "u") j.getItem = (j) => localStorage.getItem(j), j.setItem = (j, I) => {
localStorage.setItem(j, I);
};
else throw Error("localStorage not supported in this environment");
} catch (I) {
console.error(I), j.getItem = () => null, j.setItem = () => {};
}
}
function getPanelGroupKey(j) {
return `react-resizable-panels:${j}`;
}
function getPanelKey(j) {
return j.map((j) => {
let { constraints: I, id: q, idIsFromProps: Q, order: p_ } = j;
return Q ? q : p_ ? `${p_}:${JSON.stringify(I)}` : JSON.stringify(I);
}).sort((j, I) => j.localeCompare(I)).join(",");
}
function loadSerializedPanelGroupState(j, I) {
try {
let q = getPanelGroupKey(j), Q = I.getItem(q);
if (Q) {
let j = JSON.parse(Q);
if (typeof j == "object" && j) return j;
}
} catch {}
return null;
}
function loadPanelGroupState(j, I, q) {
let Q = loadSerializedPanelGroupState(j, q) ?? {}, p_ = getPanelKey(I);
return Q[p_] ?? null;
}
function savePanelGroupState(j, I, q, Q, p_) {
let m_ = getPanelGroupKey(j), h_ = getPanelKey(I), g_ = loadSerializedPanelGroupState(j, p_) ?? {};
g_[h_] = {
expandToSizes: Object.fromEntries(q.entries()),
layout: Q
};
try {
p_.setItem(m_, JSON.stringify(g_));
} catch (j) {
console.error(j);
}
}
function validatePanelGroupLayout({ layout: j, panelConstraints: I }) {
let q = [...j], Q = q.reduce((j, I) => j + I, 0);
if (q.length !== I.length) throw Error(`Invalid ${I.length} panel layout: ${q.map((j) => `${j}%`).join(", ")}`);
if (!fuzzyNumbersEqual(Q, 100) && q.length > 0) for (let j = 0; j < I.length; j++) {
let I = q[j];
assert(I != null, `No layout data found for index ${j}`), q[j] = 100 / Q * I;
}
let p_ = 0;
for (let j = 0; j < I.length; j++) {
let Q = q[j];
assert(Q != null, `No layout data found for index ${j}`);
let m_ = resizePanel({
panelConstraints: I,
panelIndex: j,
size: Q
});
Q != m_ && (p_ += Q - m_, q[j] = m_);
}
if (!fuzzyNumbersEqual(p_, 0)) for (let j = 0; j < I.length; j++) {
let Q = q[j];
assert(Q != null, `No layout data found for index ${j}`);
let m_ = Q + p_, h_ = resizePanel({
panelConstraints: I,
panelIndex: j,
size: m_
});
if (Q !== h_ && (p_ -= h_ - Q, q[j] = h_, fuzzyNumbersEqual(p_, 0))) break;
}
return q;
}
var LOCAL_STORAGE_DEBOUNCE_INTERVAL = 100, defaultStorage = {
getItem: (j) => (initializeDefaultStorage(defaultStorage), defaultStorage.getItem(j)),
setItem: (j, I) => {
initializeDefaultStorage(defaultStorage), defaultStorage.setItem(j, I);
}
}, debounceMap = {};
function PanelGroupWithForwardedRef({ autoSaveId: j = null, children: I, className: q = "", direction: Q, forwardedRef: p_, id: m_ = null, onLayout: h_ = null, keyboardResizeBy: g_ = null, storage: __ = defaultStorage, style: v_, tagName: y_ = "div",...b_ }) {
let x_ = useUniqueId$1(m_), S_ = useRef(null), [C_, w_] = useState(null), [T_, E_] = useState([]), D_ = useForceUpdate(), O_ = useRef({}), k_ = useRef(/* @__PURE__ */ new Map()), A_ = useRef(0), j_ = useRef({
autoSaveId: j,
direction: Q,
dragState: C_,
id: x_,
keyboardResizeBy: g_,
onLayout: h_,
storage: __
}), M_ = useRef({
layout: T_,
panelDataArray: [],
panelDataArrayChanged: !1
});
useRef({
didLogIdAndOrderWarning: !1,
didLogPanelConstraintsWarning: !1,
prevPanelIds: []
}), useImperativeHandle(p_, () => ({
getId: () => j_.current.id,
getLayout: () => {
let { layout: j } = M_.current;
return j;
},
setLayout: (j) => {
let { onLayout: I } = j_.current, { layout: q, panelDataArray: Q } = M_.current, p_ = validatePanelGroupLayout({
layout: j,
panelConstraints: Q.map((j) => j.constraints)
});
areEqual(q, p_) || (E_(p_), M_.current.layout = p_, I && I(p_), callPanelCallbacks(Q, p_, O_.current));
}
}), []), useIsomorphicLayoutEffect$1(() => {
j_.current.autoSaveId = j, j_.current.direction = Q, j_.current.dragState = C_, j_.current.id = x_, j_.current.onLayout = h_, j_.current.storage = __;
}), useWindowSplitterPanelGroupBehavior({
committedValuesRef: j_,
eagerValuesRef: M_,
groupId: x_,
layout: T_,
panelDataArray: M_.current.panelDataArray,
setLayout: E_,
panelGroupElement: S_.current
}), useEffect(() => {
let { panelDataArray: I } = M_.current;
if (j) {
if (T_.length === 0 || T_.length !== I.length) return;
let q = debounceMap[j];
q ?? (q = debounce(savePanelGroupState, LOCAL_STORAGE_DEBOUNCE_INTERVAL), debounceMap[j] = q);
let Q = [...I], p_ = new Map(k_.current);
q(j, Q, p_, T_, __);
}
}, [
j,
T_,
__
]), useEffect(() => {});
let N_ = useCallback((j) => {
let { onLayout: I } = j_.current, { layout: q, panelDataArray: Q } = M_.current;
if (j.constraints.collapsible) {
let p_ = Q.map((j) => j.constraints), { collapsedSize: m_ = 0, panelSize: h_, pivotIndices: g_ } = panelDataHelper(Q, j, q);
if (assert(h_ != null, `Panel size not found for panel "${j.id}"`), !fuzzyNumbersEqual$1(h_, m_)) {
k_.current.set(j.id, h_);
let __ = findPanelDataIndex(Q, j) === Q.length - 1 ? h_ - m_ : m_ - h_, v_ = adjustLayoutByDelta({
delta: __,
initialLayout: q,
panelConstraints: p_,
pivotIndices: g_,
prevLayout: q,
trigger: "imperative-api"
});
compareLayouts(q, v_) || (E_(v_), M_.current.layout = v_, I && I(v_), callPanelCallbacks(Q, v_, O_.current));
}
}
}, []), P_ = useCallback((j, I) => {
let { onLayout: q } = j_.current, { layout: Q, panelDataArray: p_ } = M_.current;
if (j.constraints.collapsible) {
let m_ = p_.map((j) => j.constraints), { collapsedSize: h_ = 0, panelSize: g_ = 0, minSize: __ = 0, pivotIndices: v_ } = panelDataHelper(p_, j, Q), y_ = I ?? __;
if (fuzzyNumbersEqual$1(g_, h_)) {
let I = k_.current.get(j.id), h_ = I != null && I >= y_ ? I : y_, __ = findPanelDataIndex(p_, j) === p_.length - 1 ? g_ - h_ : h_ - g_, b_ = adjustLayoutByDelta({
delta: __,
initialLayout: Q,
panelConstraints: m_,
pivotIndices: v_,
prevLayout: Q,
trigger: "imperative-api"
});
compareLayouts(Q, b_) || (E_(b_), M_.current.layout = b_, q && q(b_), callPanelCallbacks(p_, b_, O_.current));
}
}
}, []), F_ = useCallback((j) => {
let { layout: I, panelDataArray: q } = M_.current, { panelSize: Q } = panelDataHelper(q, j, I);
return assert(Q != null, `Panel size not found for panel "${j.id}"`), Q;
}, []), I_ = useCallback((j, I) => {
let { panelDataArray: q } = M_.current, Q = findPanelDataIndex(q, j);
return computePanelFlexBoxStyle({
defaultSize: I,
dragState: C_,
layout: T_,
panelData: q,
panelIndex: Q
});
}, [C_, T_]), L_ = useCallback((j) => {
let { layout: I, panelDataArray: q } = M_.current, { collapsedSize: Q = 0, collapsible: p_, panelSize: m_ } = panelDataHelper(q, j, I);
return assert(m_ != null, `Panel size not found for panel "${j.id}"`), p_ === !0 && fuzzyNumbersEqual$1(m_, Q);
}, []), R_ = useCallback((j) => {
let { layout: I, panelDataArray: q } = M_.current, { collapsedSize: Q = 0, collapsible: p_, panelSize: m_ } = panelDataHelper(q, j, I);
return assert(m_ != null, `Panel size not found for panel "${j.id}"`), !p_ || fuzzyCompareNumbers(m_, Q) > 0;
}, []), z_ = useCallback((j) => {
let { panelDataArray: I } = M_.current;
I.push(j), I.sort((j, I) => {
let q = j.order, Q = I.order;
return q == null && Q == null ? 0 : q == null ? -1 : Q == null ? 1 : q - Q;
}), M_.current.panelDataArrayChanged = !0, D_();
}, [D_]);
useIsomorphicLayoutEffect$1(() => {
if (M_.current.panelDataArrayChanged) {
M_.current.panelDataArrayChanged = !1;
let { autoSaveId: j, onLayout: I, storage: q } = j_.current, { layout: Q, panelDataArray: p_ } = M_.current, m_ = null;
if (j) {
let I = loadPanelGroupState(j, p_, q);
I && (k_.current = new Map(Object.entries(I.expandToSizes)), m_ = I.layout);
}
m_ ??= calculateUnsafeDefaultLayout({ panelDataArray: p_ });
let h_ = validatePanelGroupLayout({
layout: m_,
panelConstraints: p_.map((j) => j.constraints)
});
areEqual(Q, h_) || (E_(h_), M_.current.layout = h_, I && I(h_), callPanelCallbacks(p_, h_, O_.current));
}
}), useIsomorphicLayoutEffect$1(() => {
let j = M_.current;
return () => {
j.layout = [];
};
}, []);
let B_ = useCallback((j) => {
let I = !1, q = S_.current;
return q && window.getComputedStyle(q, null).getPropertyValue("direction") === "rtl" && (I = !0), function(q) {
q.preventDefault();
let Q = S_.current;
if (!Q) return () => null;
let { direction: p_, dragState: m_, id: h_, keyboardResizeBy: g_, onLayout: __ } = j_.current, { layout: v_, panelDataArray: y_ } = M_.current, { initialLayout: b_ } = m_ ?? {}, x_ = determinePivotIndices(h_, j, Q), C_ = calculateDeltaPercentage(q, j, p_, m_, g_, Q), w_ = p_ === "horizontal";
w_ && I && (C_ = -C_);
let T_ = y_.map((j) => j.constraints), D_ = adjustLayoutByDelta({
delta: C_,
initialLayout: b_ ?? v_,
panelConstraints: T_,
pivotIndices: x_,
prevLayout: v_,
trigger: isKeyDown(q) ? "keyboard" : "mouse-or-touch"
}), k_ = !compareLayouts(v_, D_);
(isPointerEvent(q) || isMouseEvent(q)) && A_.current != C_ && (A_.current = C_, !k_ && C_ !== 0 ? w_ ? reportConstraintsViolation(j, C_ < 0 ? EXCEEDED_HORIZONTAL_MIN : EXCEEDED_HORIZONTAL_MAX) : reportConstraintsViolation(j, C_ < 0 ? EXCEEDED_VERTICAL_MIN : EXCEEDED_VERTICAL_MAX) : reportConstraintsViolation(j, 0)), k_ && (E_(D_), M_.current.layout = D_, __ && __(D_), callPanelCallbacks(y_, D_, O_.current));
};
}, []), V_ = useCallback((j, I) => {
let { onLayout: q } = j_.current, { layout: Q, panelDataArray: p_ } = M_.current, m_ = p_.map((j) => j.constraints), { panelSize: h_, pivotIndices: g_ } = panelDataHelper(p_, j, Q);
assert(h_ != null, `Panel size not found for panel "${j.id}"`);
let __ = findPanelDataIndex(p_, j) === p_.length - 1 ? h_ - I : I - h_, v_ = adjustLayoutByDelta({
delta: __,
initialLayout: Q,
panelConstraints: m_,
pivotIndices: g_,
prevLayout: Q,
trigger: "imperative-api"
});
compareLayouts(Q, v_) || (E_(v_), M_.current.layout = v_, q && q(v_), callPanelCallbacks(p_, v_, O_.current));
}, []), H_ = useCallback((j, I) => {
let { layout: q, panelDataArray: Q } = M_.current, { collapsedSize: p_ = 0, collapsible: m_ } = I, { collapsedSize: h_ = 0, collapsible: g_, maxSize: __ = 100, minSize: v_ = 0 } = j.constraints, { panelSize: y_ } = panelDataHelper(Q, j, q);
y_ != null && (m_ && g_ && fuzzyNumbersEqual$1(y_, p_) ? fuzzyNumbersEqual$1(p_, h_) || V_(j, h_) : y_ < v_ ? V_(j, v_) : y_ > __ && V_(j, __));
}, [V_]), U_ = useCallback((j, I) => {
let { direction: q } = j_.current, { layout: Q } = M_.current;
if (!S_.current) return;
let p_ = getResizeHandleElement(j, S_.current);
assert(p_, `Drag handle element not found for id "${j}"`);
let m_ = getResizeEventCursorPosition(q, I);
w_({
dragHandleId: j,
dragHandleRect: p_.getBoundingClientRect(),
initialCursorPosition: m_,
initialLayout: Q
});
}, []), W_ = useCallback(() => {
w_(null);
}, []), G_ = useCallback((j) => {
let { panelDataArray: I } = M_.current, q = findPanelDataIndex(I, j);
q >= 0 && (I.splice(q, 1), delete O_.current[j.id], M_.current.panelDataArrayChanged = !0, D_());
}, [D_]), K_ = useMemo(() => ({
collapsePanel: N_,
direction: Q,
dragState: C_,
expandPanel: P_,
getPanelSize: F_,
getPanelStyle: I_,
groupId: x_,
isPanelCollapsed: L_,
isPanelExpanded: R_,
reevaluatePanelConstraints: H_,
registerPanel: z_,
registerResizeHandle: B_,
resizePanel: V_,
startDragging: U_,
stopDragging: W_,
unregisterPanel: G_,
panelGroupElement: S_.current
}), [
N_,
C_,
Q,
P_,
F_,
I_,
x_,
L_,
R_,
H_,
z_,
B_,
V_,
U_,
W_,
G_
]), q_ = {
display: "flex",
flexDirection: Q === "horizontal" ? "row" : "column",
height: "100%",
overflow: "hidden",
width: "100%"
};
return createElement(PanelGroupContext.Provider, { value: K_ }, createElement(y_, {
...b_,
children: I,
className: q,
id: m_,
ref: S_,
style: {
...q_,
...v_
},
[DATA_ATTRIBUTES.group]: "",
[DATA_ATTRIBUTES.groupDirection]: Q,
[DATA_ATTRIBUTES.groupId]: x_
}));
}
var PanelGroup = forwardRef((j, I) => createElement(PanelGroupWithForwardedRef, {
...j,
forwardedRef: I
}));
PanelGroupWithForwardedRef.displayName = "PanelGroup", PanelGroup.displayName = "forwardRef(PanelGroup)";
function findPanelDataIndex(j, I) {
return j.findIndex((j) => j === I || j.id === I.id);
}
function panelDataHelper(j, I, q) {
let Q = findPanelDataIndex(j, I), p_ = Q === j.length - 1 ? [Q - 1, Q] : [Q, Q + 1], m_ = q[Q];
return {
...I.constraints,
panelSize: m_,
pivotIndices: p_
};
}
function useWindowSplitterResizeHandlerBehavior({ disabled: j, handleId: I, resizeHandler: q, panelGroupElement: Q }) {
useEffect(() => {
if (j || q == null || Q == null) return;
let p_ = getResizeHandleElement(I, Q);
if (p_ == null) return;
let m_ = (j) => {
if (!j.defaultPrevented) switch (j.key) {
case "ArrowDown":
case "ArrowLeft":
case "ArrowRight":
case "ArrowUp":
case "End":
case "Home":
j.preventDefault(), q(j);
break;
case "F6": {
j.preventDefault();
let q = p_.getAttribute(DATA_ATTRIBUTES.groupId);
assert(q, `No group element found for id "${q}"`);
let m_ = getResizeHandleElementsForGroup(q, Q), h_ = getResizeHandleElementIndex(q, I, Q);
assert(h_ !== null, `No resize element found for id "${I}"`);
let g_ = j.shiftKey ? h_ > 0 ? h_ - 1 : m_.length - 1 : h_ + 1 < m_.length ? h_ + 1 : 0;
m_[g_].focus();
break;
}
}
};
return p_.addEventListener("keydown", m_), () => {
p_.removeEventListener("keydown", m_);
};
}, [
Q,
j,
I,
q
]);
}
function PanelResizeHandle({ children: j = null, className: I = "", disabled: q = !1, hitAreaMargins: Q, id: p_, onBlur: m_, onClick: h_, onDragging: g_, onFocus: __, onPointerDown: v_, onPointerUp: y_, style: b_ = {}, tabIndex: x_ = 0, tagName: S_ = "div",...C_ }) {
let w_ = useRef(null), T_ = useRef({
onClick: h_,
onDragging: g_,
onPointerDown: v_,
onPointerUp: y_
});
useEffect(() => {
T_.current.onClick = h_, T_.current.onDragging = g_, T_.current.onPointerDown = v_, T_.current.onPointerUp = y_;
});
let E_ = useContext(PanelGroupContext);
if (E_ === null) throw Error("PanelResizeHandle components must be rendered within a PanelGroup container");
let { direction: D_, groupId: O_, registerResizeHandle: k_, startDragging: A_, stopDragging: j_, panelGroupElement: M_ } = E_, N_ = useUniqueId$1(p_), [P_, F_] = useState("inactive"), [I_, L_] = useState(!1), [R_, z_] = useState(null), B_ = useRef({ state: P_ });
useIsomorphicLayoutEffect$1(() => {
B_.current.state = P_;
}), useEffect(() => {
if (q) z_(null);
else {
let j = k_(N_);
z_(() => j);
}
}, [
q,
N_,
k_
]);
let V_ = Q?.coarse ?? 15, H_ = Q?.fine ?? 5;
useEffect(() => {
if (q || R_ == null) return;
let j = w_.current;
assert(j, "Element ref not attached");
let I = !1;
return registerResizeHandle(N_, j, D_, {
coarse: V_,
fine: H_
}, (j, q, Q) => {
if (!q) {
F_("inactive");
return;
}
switch (j) {
case "down": {
F_("drag"), I = !1, assert(Q, "Expected event to be defined for \"down\" action"), A_(N_, Q);
let { onDragging: j, onPointerDown: q } = T_.current;
j?.(!0), q?.();
break;
}
case "move": {
let { state: j } = B_.current;
I = !0, j !== "drag" && F_("hover"), assert(Q, "Expected event to be defined for \"move\" action"), R_(Q);
break;
}
case "up": {
F_("hover"), j_();
let { onClick: j, onDragging: q, onPointerUp: Q } = T_.current;
q?.(!1), Q?.(), I || j?.();
break;
}
}
});
}, [
V_,
D_,
q,
H_,
k_,
N_,
R_,
A_,
j_
]), useWindowSplitterResizeHandlerBehavior({
disabled: q,
handleId: N_,
resizeHandler: R_,
panelGroupElement: M_
});
let U_ = {
touchAction: "none",
userSelect: "none"
};
return createElement(S_, {
...C_,
children: j,
className: I,
id: p_,
onBlur: () => {
L_(!1), m_?.();
},
onFocus: () => {
L_(!0), __?.();
},
ref: w_,
role: "separator",
style: {
...U_,
...b_
},
tabIndex: x_,
[DATA_ATTRIBUTES.groupDirection]: D_,
[DATA_ATTRIBUTES.groupId]: O_,
[DATA_ATTRIBUTES.resizeHandle]: "",
[DATA_ATTRIBUTES.resizeHandleActive]: P_ === "drag" ? "pointer" : I_ ? "keyboard" : void 0,
[DATA_ATTRIBUTES.resizeHandleEnabled]: !q,
[DATA_ATTRIBUTES.resizeHandleId]: N_,
[DATA_ATTRIBUTES.resizeHandleState]: P_
});
}
PanelResizeHandle.displayName = "PanelResizeHandle";
function ResizablePanelGroup({ className: j,...I }) {
return /* @__PURE__ */ jsx(PanelGroup, {
"data-slot": "resizable-panel-group",
className: cn("flex size-full data-[panel-group-direction=vertical]:flex-col", j),
...I
});
}
function ResizablePanel({ ...j }) {
return /* @__PURE__ */ jsx(Panel, {
"data-slot": "resizable-panel",
...j
});
}
function ResizableHandle({ withHandle: j, className: I,...q }) {
return /* @__PURE__ */ jsx(PanelResizeHandle, {
"data-slot": "resizable-handle",
className: cn("bg-border focus-visible:ring-ring focus-visible:outline-hidden relative flex w-px items-center justify-center after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:ring-1 focus-visible:ring-offset-1 data-[panel-group-direction=vertical]:h-px data-[panel-group-direction=vertical]:w-full data-[panel-group-direction=vertical]:after:left-0 data-[panel-group-direction=vertical]:after:h-1 data-[panel-group-direction=vertical]:after:w-full data-[panel-group-direction=vertical]:after:-translate-y-1/2 data-[panel-group-direction=vertical]:after:translate-x-0 [&[data-panel-group-direction=vertical]>div]:rotate-90", I),
...q,
children: j && /* @__PURE__ */ jsx("div", {
className: "bg-border rounded-xs z-10 flex h-4 w-3 items-center justify-center border",
children: /* @__PURE__ */ jsx(GripVerticalIcon, { className: "size-2.5" })
})
});
}
var Toaster = ({ ...j }) => /* @__PURE__ */ jsx(Toaster$1, {
theme: j.theme,
className: "group",
icons: {
success: /* @__PURE__ */ jsx(CircleCheckIcon, { className: "size-4" }),
info: /* @__PURE__ */ jsx(InfoIcon, { className: "size-4" }),
warning: /* @__PURE__ */ jsx(TriangleAlertIcon, { className: "size-4" }),
error: /* @__PURE__ */ jsx(OctagonXIcon, { className: "size-4" }),
loading: /* @__PURE__ */ jsx(Loader2Icon, { className: "size-4 animate-spin" })
},
style: {
"--normal-bg": "var(--popover)",
"--normal-text": "var(--popover-foreground)",
"--normal-border": "var(--border)",
"--border-radius": "var(--radius)"
},
...j
}), VISUALLY_HIDDEN_STYLES = Object.freeze({
position: "absolute",
border: 0,
width: 1,
height: 1,
padding: 0,
margin: -1,
overflow: "hidden",
clip: "rect(0, 0, 0, 0)",
whiteSpace: "nowrap",
wordWrap: "normal"
}), NAME$1 = "VisuallyHidden", VisuallyHidden = React.forwardRef((j, I) => /* @__PURE__ */ jsx(Primitive.span, {
...j,
ref: I,
style: {
...VISUALLY_HIDDEN_STYLES,
...j.style
}
}));
VisuallyHidden.displayName = NAME$1;
var Root$3 = VisuallyHidden, [createTooltipContext, createTooltipScope] = createContextScope("Tooltip", [createPopperScope]), usePopperScope$1 = createPopperScope(), PROVIDER_NAME = "TooltipProvider", DEFAULT_DELAY_DURATION = 700, TOOLTIP_OPEN = "tooltip.open", [TooltipProviderContextProvider, useTooltipProviderContext] = createTooltipContext(PROVIDER_NAME), TooltipProvider$1 = (j) => {
let { __scopeTooltip: I, delayDuration: q = DEFAULT_DELAY_DURATION, skipDelayDuration: Q = 300, disableHoverableContent: p_ = !1, children: m_ } = j, h_ = React.useRef(!0), g_ = React.useRef(!1), __ = React.useRef(0);
return React.useEffect(() => {
let j = __.current;
return () => window.clearTimeout(j);
}, []), /* @__PURE__ */ jsx(TooltipProviderContextProvider, {
scope: I,
isOpenDelayedRef: h_,
delayDuration: q,
onOpen: React.useCallback(() => {
window.clearTimeout(__.current), h_.current = !1;
}, []),
onClose: React.useCallback(() => {
window.clearTimeout(__.current), __.current = window.setTimeout(() => h_.current = !0, Q);
}, [Q]),
isPointerInTransitRef: g_,
onPointerInTransitChange: React.useCallback((j) => {
g_.current = j;
}, []),
disableHoverableContent: p_,
children: m_
});
};
TooltipProvider$1.displayName = PROVIDER_NAME;
var TOOLTIP_NAME = "Tooltip", [TooltipContextProvider, useTooltipContext] = createTooltipContext(TOOLTIP_NAME), Tooltip$1 = (j) => {
let { __scopeTooltip: I, children: q, open: Q, defaultOpen: p_, onOpenChange: m_, disableHoverableContent: h_, delayDuration: g_ } = j, __ = useTooltipProviderContext(TOOLTIP_NAME, j.__scopeTooltip), v_ = usePopperScope$1(I), [y_, b_] = React.useState(null), x_ = useId$1(), S_ = React.useRef(0), C_ = h_ ?? __.disableHoverableContent, w_ = g_ ?? __.delayDuration, T_ = React.useRef(!1), [E_, D_] = useControllableState({
prop: Q,
defaultProp: p_ ?? !1,
onChange: (j) => {
j ? (__.onOpen(), document.dispatchEvent(new CustomEvent(TOOLTIP_OPEN))) : __.onClose(), m_?.(j);
},
caller: TOOLTIP_NAME
}), O_ = React.useMemo(() => E_ ? T_.current ? "delayed-open" : "instant-open" : "closed", [E_]), k_ = React.useCallback(() => {
window.clearTimeout(S_.current), S_.current = 0, T_.current = !1, D_(!0);
}, [D_]), A_ = React.useCallback(() => {
window.clearTimeout(S_.current), S_.current = 0, D_(!1);
}, [D_]), j_ = React.useCallback(() => {
window.clearTimeout(S_.current), S_.current = window.setTimeout(() => {
T_.current = !0, D_(!0), S_.current = 0;
}, w_);
}, [w_, D_]);
return React.useEffect(() => () => {
S_.current &&= (window.clearTimeout(S_.current), 0);
}, []), /* @__PURE__ */ jsx(Root2$5, {
...v_,
children: /* @__PURE__ */ jsx(TooltipContextProvider, {
scope: I,
contentId: x_,
open: E_,
stateAttribute: O_,
trigger: y_,
onTriggerChange: b_,
onTriggerEnter: React.useCallback(() => {
__.isOpenDelayedRef.current ? j_() : k_();
}, [
__.isOpenDelayedRef,
j_,
k_
]),
onTriggerLeave: React.useCallback(() => {
C_ ? A_() : (window.clearTimeout(S_.current), S_.current = 0);
}, [A_, C_]),
onOpen: k_,
onClose: A_,
disableHoverableContent: C_,
children: q
})
});
};
Tooltip$1.displayName = TOOLTIP_NAME;
var TRIGGER_NAME$6 = "TooltipTrigger", TooltipTrigger$1 = React.forwardRef((j, I) => {
let { __scopeTooltip: q,...Q } = j, p_ = useTooltipContext(TRIGGER_NAME$6, q), m_ = useTooltipProviderContext(TRIGGER_NAME$6, q), h_ = usePopperScope$1(q), g_ = React.useRef(null), __ = useComposedRefs$1(I, g_, p_.onTriggerChange), v_ = React.useRef(!1), y_ = React.useRef(!1), b_ = React.useCallback(() => v_.current = !1, []);
return React.useEffect(() => () => document.removeEventListener("pointerup", b_), [b_]), /* @__PURE__ */ jsx(Anchor, {
asChild: !0,
...h_,
children: /* @__PURE__ */ jsx(Primitive.button, {
"aria-describedby": p_.open ? p_.contentId : void 0,
"data-state": p_.stateAttribute,
...Q,
ref: __,
onPointerMove: composeEventHandlers(j.onPointerMove, (j) => {
j.pointerType !== "touch" && !y_.current && !m_.isPointerInTransitRef.current && (p_.onTriggerEnter(), y_.current = !0);
}),
onPointerLeave: composeEventHandlers(j.onPointerLeave, () => {
p_.onTriggerLeave(), y_.current = !1;
}),
onPointerDown: composeEventHandlers(j.onPointerDown, () => {
p_.open && p_.onClose(), v_.current = !0, document.addEventListener("pointerup", b_, { once: !0 });
}),
onFocus: composeEventHandlers(j.onFocus, () => {
v_.current || p_.onOpen();
}),
onBlur: composeEventHandlers(j.onBlur, p_.onClose),
onClick: composeEventHandlers(j.onClick, p_.onClose)
})
});
});
TooltipTrigger$1.displayName = TRIGGER_NAME$6;
var PORTAL_NAME$3 = "TooltipPortal", [PortalProvider, usePortalContext] = createTooltipContext(PORTAL_NAME$3, { forceMount: void 0 }), TooltipPortal = (j) => {
let { __scopeTooltip: I, forceMount: q, children: Q, container: p_ } = j, m_ = useTooltipContext(PORTAL_NAME$3, I);
return /* @__PURE__ */ jsx(PortalProvider, {
scope: I,
forceMount: q,
children: /* @__PURE__ */ jsx(Presence, {
present: q || m_.open,
children: /* @__PURE__ */ jsx(Portal, {
asChild: !0,
container: p_,
children: Q
})
})
});
};
TooltipPortal.displayName = PORTAL_NAME$3;
var CONTENT_NAME$6 = "TooltipContent", TooltipContent$1 = React.forwardRef((j, I) => {
let q = usePortalContext(CONTENT_NAME$6, j.__scopeTooltip), { forceMount: Q = q.forceMount, side: p_ = "top",...m_ } = j, h_ = useTooltipContext(CONTENT_NAME$6, j.__scopeTooltip);
return /* @__PURE__ */ jsx(Presence, {
present: Q || h_.open,
children: h_.disableHoverableContent ? /* @__PURE__ */ jsx(TooltipContentImpl, {
side: p_,
...m_,
ref: I
}) : /* @__PURE__ */ jsx(TooltipContentHoverable, {
side: p_,
...m_,
ref: I
})
});
}), TooltipContentHoverable = React.forwardRef((j, I) => {
let q = useTooltipContext(CONTENT_NAME$6, j.__scopeTooltip), Q = useTooltipProviderContext(CONTENT_NAME$6, j.__scopeTooltip), p_ = React.useRef(null), m_ = useComposedRefs$1(I, p_), [h_, g_] = React.useState(null), { trigger: __, onClose: v_ } = q, y_ = p_.current, { onPointerInTransitChange: b_ } = Q, x_ = React.useCallback(() => {
g_(null), b_(!1);
}, [b_]), S_ = React.useCallback((j, I) => {
let q = j.currentTarget, Q = {
x: j.clientX,
y: j.clientY
}, p_ = getExitSideFromRect(Q, q.getBoundingClientRect()), m_ = getPaddedExitPoints(Q, p_), h_ = getPointsFromRect(I.getBoundingClientRect()), __ = getHull([...m_, ...h_]);
g_(__), b_(!0);
}, [b_]);
return React.useEffect(() => () => x_(), [x_]), React.useEffect(() => {
if (__ && y_) {
let j = (j) => S_(j, y_), I = (j) => S_(j, __);
return __.addEventListener("pointerleave", j), y_.addEventListener("pointerleave", I), () => {
__.removeEventListener("pointerleave", j), y_.removeEventListener("pointerleave", I);
};
}
}, [
__,
y_,
S_,
x_
]), React.useEffect(() => {
if (h_) {
let j = (j) => {
let I = j.target, q = {
x: j.clientX,
y: j.clientY
}, Q = __?.contains(I) || y_?.contains(I), p_ = !isPointInPolygon(q, h_);
Q ? x_() : p_ && (x_(), v_());
};
return document.addEventListener("pointermove", j), () => document.removeEventListener("pointermove", j);
}
}, [
__,
y_,
h_,
v_,
x_
]), /* @__PURE__ */ jsx(TooltipContentImpl, {
...j,
ref: m_
});
}), [VisuallyHiddenContentContextProvider, useVisuallyHiddenContentContext] = createTooltipContext(TOOLTIP_NAME, { isInside: !1 }), Slottable$1 = /* @__PURE__ */ createSlottable("TooltipContent"), TooltipContentImpl = React.forwardRef((j, I) => {
let { __scopeTooltip: q, children: Q, "aria-label": p_, onEscapeKeyDown: m_, onPointerDownOutside: h_,...g_ } = j, __ = useTooltipContext(CONTENT_NAME$6, q), v_ = usePopperScope$1(q), { onClose: y_ } = __;
return React.useEffect(() => (document.addEventListener(TOOLTIP_OPEN, y_), () => document.removeEventListener(TOOLTIP_OPEN, y_)), [y_]), React.useEffect(() => {
if (__.trigger) {
let j = (j) => {
j.target?.contains(__.trigger) && y_();
};
return window.addEventListener("scroll", j, { capture: !0 }), () => window.removeEventListener("scroll", j, { capture: !0 });
}
}, [__.trigger, y_]), /* @__PURE__ */ jsx(DismissableLayer, {
asChild: !0,
disableOutsidePointerEvents: !1,
onEscapeKeyDown: m_,
onPointerDownOutside: h_,
onFocusOutside: (j) => j.preventDefault(),
onDismiss: y_,
children: /* @__PURE__ */ jsxs(Content$1, {
"data-state": __.stateAttribute,
...v_,
...g_,
ref: I,
style: {
...g_.style,
"--radix-tooltip-content-transform-origin": "var(--radix-popper-transform-origin)",
"--radix-tooltip-content-available-width": "var(--radix-popper-available-width)",
"--radix-tooltip-content-available-height": "var(--radix-popper-available-height)",
"--radix-tooltip-trigger-width": "var(--radix-popper-anchor-width)",
"--radix-tooltip-trigger-height": "var(--radix-popper-anchor-height)"
},
children: [/* @__PURE__ */ jsx(Slottable$1, { children: Q }), /* @__PURE__ */ jsx(VisuallyHiddenContentContextProvider, {
scope: q,
isInside: !0,
children: /* @__PURE__ */ jsx(Root$3, {
id: __.contentId,
role: "tooltip",
children: p_ || Q
})
})]
})
});
});
TooltipContent$1.displayName = CONTENT_NAME$6;
var ARROW_NAME$2 = "TooltipArrow", TooltipArrow = React.forwardRef((j, I) => {
let { __scopeTooltip: q,...Q } = j, p_ = usePopperScope$1(q);
return useVisuallyHiddenContentContext(ARROW_NAME$2, q).isInside ? null : /* @__PURE__ */ jsx(Arrow, {
...p_,
...Q,
ref: I
});
});
TooltipArrow.displayName = ARROW_NAME$2;
function getExitSideFromRect(j, I) {
let q = Math.abs(I.top - j.y), Q = Math.abs(I.bottom - j.y), p_ = Math.abs(I.right - j.x), m_ = Math.abs(I.left - j.x);
switch (Math.min(q, Q, p_, m_)) {
case m_: return "left";
case p_: return "right";
case q: return "top";
case Q: return "bottom";
default: throw Error("unreachable");
}
}
function getPaddedExitPoints(j, I, q = 5) {
let Q = [];
switch (I) {
case "top":
Q.push({
x: j.x - q,
y: j.y + q
}, {
x: j.x + q,
y: j.y + q
});
break;
case "bottom":
Q.push({
x: j.x - q,
y: j.y - q
}, {
x: j.x + q,
y: j.y - q
});
break;
case "left":
Q.push({
x: j.x + q,
y: j.y - q
}, {
x: j.x + q,
y: j.y + q
});
break;
case "right":
Q.push({
x: j.x - q,
y: j.y - q
}, {
x: j.x - q,
y: j.y + q
});
break;
}
return Q;
}
function getPointsFromRect(j) {
let { top: I, right: q, bottom: Q, left: p_ } = j;
return [
{
x: p_,
y: I
},
{
x: q,
y: I
},
{
x: q,
y: Q
},
{
x: p_,
y: Q
}
];
}
function isPointInPolygon(j, I) {
let { x: q, y: Q } = j, p_ = !1;
for (let j = 0, m_ = I.length - 1; j < I.length; m_ = j++) {
let h_ = I[j], g_ = I[m_], __ = h_.x, v_ = h_.y, y_ = g_.x, b_ = g_.y;
v_ > Q != b_ > Q && q < (y_ - __) * (Q - v_) / (b_ - v_) + __ && (p_ = !p_);
}
return p_;
}
function getHull(j) {
let I = j.slice();
return I.sort((j, I) => j.x < I.x ? -1 : j.x > I.x ? 1 : j.y < I.y ? -1 : j.y > I.y ? 1 : 0), getHullPresorted(I);
}
function getHullPresorted(j) {
if (j.length <= 1) return j.slice();
let I = [];
for (let q = 0; q < j.length; q++) {
let Q = j[q];
for (; I.length >= 2;) {
let j = I[I.length - 1], q = I[I.length - 2];
if ((j.x - q.x) * (Q.y - q.y) >= (j.y - q.y) * (Q.x - q.x)) I.pop();
else break;
}
I.push(Q);
}
I.pop();
let q = [];
for (let I = j.length - 1; I >= 0; I--) {
let Q = j[I];
for (; q.length >= 2;) {
let j = q[q.length - 1], I = q[q.length - 2];
if ((j.x - I.x) * (Q.y - I.y) >= (j.y - I.y) * (Q.x - I.x)) q.pop();
else break;
}
q.push(Q);
}
return q.pop(), I.length === 1 && q.length === 1 && I[0].x === q[0].x && I[0].y === q[0].y ? I : I.concat(q);
}
var Provider = TooltipProvider$1, Root3 = Tooltip$1, Trigger$3 = TooltipTrigger$1, Portal$2 = TooltipPortal, Content2$3 = TooltipContent$1, Arrow2 = TooltipArrow;
function TooltipProvider({ delayDuration: j = 0,...I }) {
return /* @__PURE__ */ jsx(Provider, {
"data-slot": "tooltip-provider",
delayDuration: j,
...I
});
}
function Tooltip({ ...j }) {
return /* @__PURE__ */ jsx(TooltipProvider, { children: /* @__PURE__ */ jsx(Root3, {
"data-slot": "tooltip",
...j
}) });
}
function TooltipTrigger({ ...j }) {
return /* @__PURE__ */ jsx(Trigger$3, {
"data-slot": "tooltip-trigger",
...j
});
}
function TooltipContent({ className: j, sideOffset: I = 0, children: q,...Q }) {
let [p_, m_] = useState(null);
return /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(Portal$2, {
container: p_,
children: /* @__PURE__ */ jsxs(Content2$3, {
"data-slot": "tooltip-content",
sideOffset: I,
className: cn("bg-foreground text-background animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-fit origin-[var(--radix-tooltip-content-transform-origin)] text-balance rounded-md px-3 py-1.5 text-xs", j),
...Q,
children: [q, /* @__PURE__ */ jsx(Arrow2, { className: "bg-foreground fill-foreground z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]" })]
})
}), /* @__PURE__ */ jsx("div", {
ref: m_,
style: { display: "contents" }
})] });
}
const GraphQLIcon = (j) => /* @__PURE__ */ jsxs("svg", {
width: "100",
height: "100",
viewBox: "0 0 100 100",
fill: "none",
xmlns: "http://www.w3.org/2000/svg",
...j,
children: [
/* @__PURE__ */ jsx("path", {
fillRule: "evenodd",
clipRule: "evenodd",
d: "M49.9994 6.90218L87.3224 28.4506V71.5475L49.9994 93.0959L12.6764 71.5475V28.4506L49.9994 6.90218ZM16.8641 30.8684V62.5242L44.2789 15.0405L16.8641 30.8684ZM49.9994 13.5077L18.3969 68.2448H81.6019L49.9994 13.5077ZM77.4142 72.4325H22.5846L49.9994 88.2604L77.4142 72.4325ZM83.1347 62.5242L55.7199 15.0405L83.1347 30.8684V62.5242Z",
fill: "currentColor"
}),
/* @__PURE__ */ jsx("path", {
d: "M49.9994 18.14C54.8706 18.14 58.8194 14.1912 58.8194 9.32C58.8194 4.44885 54.8706 0.5 49.9994 0.5C45.1283 0.5 41.1794 4.44885 41.1794 9.32C41.1794 14.1912 45.1283 18.14 49.9994 18.14Z",
fill: "currentColor"
}),
/* @__PURE__ */ jsx("path", {
d: "M85.2286 38.4796C90.0998 38.4796 94.0486 34.5308 94.0486 29.6596C94.0486 24.7884 90.0998 20.8396 85.2286 20.8396C80.3575 20.8396 76.4086 24.7884 76.4086 29.6596C76.4086 34.5308 80.3575 38.4796 85.2286 38.4796Z",
fill: "currentColor"
}),
/* @__PURE__ */ jsx("path", {
d: "M85.2286 79.1587C90.0998 79.1587 94.0486 75.2099 94.0486 70.3387C94.0486 65.4675 90.0998 61.5187 85.2286 61.5187C80.3575 61.5187 76.4086 65.4675 76.4086 70.3387C76.4086 75.2099 80.3575 79.1587 85.2286 79.1587Z",
fill: "currentColor"
}),
/* @__PURE__ */ jsx("path", {
d: "M49.9994 99.4982C54.8706 99.4982 58.8194 95.5494 58.8194 90.6782C58.8194 85.807 54.8706 81.8582 49.9994 81.8582C45.1283 81.8582 41.1794 85.807 41.1794 90.6782C41.1794 95.5494 45.1283 99.4982 49.9994 99.4982Z",
fill: "currentColor"
}),
/* @__PURE__ */ jsx("path", {
d: "M14.7653 79.1587C19.6365 79.1587 23.5853 75.2099 23.5853 70.3387C23.5853 65.4675 19.6365 61.5187 14.7653 61.5187C9.89416 61.5187 5.94531 65.4675 5.94531 70.3387C5.94531 75.2099 9.89416 79.1587 14.7653 79.1587Z",
fill: "currentColor"
}),
/* @__PURE__ */ jsx("path", {
d: "M14.7653 38.4796C19.6365 38.4796 23.5853 34.5308 23.5853 29.6596C23.5853 24.7884 19.6365 20.8396 14.7653 20.8396C9.89416 20.8396 5.94531 24.7884 5.94531 29.6596C5.94531 34.5308 9.89416 38.4796 14.7653 38.4796Z",
fill: "currentColor"
})
]
});
var ROOT_NAME$1 = "AlertDialog", [createAlertDialogContext, createAlertDialogScope] = createContextScope(ROOT_NAME$1, [createDialogScope]), useDialogScope = createDialogScope(), AlertDialog$1 = (j) => {
let { __scopeAlertDialog: I,...q } = j, Q = useDialogScope(I);
return /* @__PURE__ */ jsx(Root$7, {
...Q,
...q,
modal: !0
});
};
AlertDialog$1.displayName = ROOT_NAME$1;
var TRIGGER_NAME$5 = "AlertDialogTrigger", AlertDialogTrigger$1 = React.forwardRef((j, I) => {
let { __scopeAlertDialog: q,...Q } = j, p_ = useDialogScope(q);
return /* @__PURE__ */ jsx(Trigger$5, {
...p_,
...Q,
ref: I
});
});
AlertDialogTrigger$1.displayName = TRIGGER_NAME$5;
var PORTAL_NAME$2 = "AlertDialogPortal", AlertDialogPortal$1 = (j) => {
let { __scopeAlertDialog: I,...q } = j, Q = useDialogScope(I);
return /* @__PURE__ */ jsx(Portal$4, {
...Q,
...q
});
};
AlertDialogPortal$1.displayName = PORTAL_NAME$2;
var OVERLAY_NAME$1 = "AlertDialogOverlay", AlertDialogOverlay$1 = React.forwardRef((j, I) => {
let { __scopeAlertDialog: q,...Q } = j, p_ = useDialogScope(q);
return /* @__PURE__ */ jsx(Overlay, {
...p_,
...Q,
ref: I
});
});
AlertDialogOverlay$1.displayName = OVERLAY_NAME$1;
var CONTENT_NAME$5 = "AlertDialogContent", [AlertDialogContentProvider, useAlertDialogContentContext] = createAlertDialogContext(CONTENT_NAME$5), Slottable = /* @__PURE__ */ createSlottable("AlertDialogContent"), AlertDialogContent$1 = React.forwardRef((j, I) => {
let { __scopeAlertDialog: q, children: Q,...p_ } = j, m_ = useDialogScope(q), h_ = React.useRef(null), g_ = useComposedRefs$1(I, h_), __ = React.useRef(null);
return /* @__PURE__ */ jsx(WarningProvider, {
contentName: CONTENT_NAME$5,
titleName: TITLE_NAME,
docsSlug: "alert-dialog",
children: /* @__PURE__ */ jsx(AlertDialogContentProvider, {
scope: q,
cancelRef: __,
children: /* @__PURE__ */ jsxs(Content$2, {
role: "alertdialog",
...m_,
...p_,
ref: g_,
onOpenAutoFocus: composeEventHandlers(p_.onOpenAutoFocus, (j) => {
j.preventDefault(), __.current?.focus({ preventScroll: !0 });
}),
onPointerDownOutside: (j) => j.preventDefault(),
onInteractOutside: (j) => j.preventDefault(),
children: [/* @__PURE__ */ jsx(Slottable, { children: Q }), /* @__PURE__ */ jsx(DescriptionWarning, { contentRef: h_ })]
})
})
});
});
AlertDialogContent$1.displayName = CONTENT_NAME$5;
var TITLE_NAME = "AlertDialogTitle", AlertDialogTitle$1 = React.forwardRef((j, I) => {
let { __scopeAlertDialog: q,...Q } = j, p_ = useDialogScope(q);
return /* @__PURE__ */ jsx(Title, {
...p_,
...Q,
ref: I
});
});
AlertDialogTitle$1.displayName = TITLE_NAME;
var DESCRIPTION_NAME = "AlertDialogDescription", AlertDialogDescription$1 = React.forwardRef((j, I) => {
let { __scopeAlertDialog: q,...Q } = j, p_ = useDialogScope(q);
return /* @__PURE__ */ jsx(Description, {
...p_,
...Q,
ref: I
});
});
AlertDialogDescription$1.displayName = DESCRIPTION_NAME;
var ACTION_NAME = "AlertDialogAction", AlertDialogAction$1 = React.forwardRef((j, I) => {
let { __scopeAlertDialog: q,...Q } = j, p_ = useDialogScope(q);
return /* @__PURE__ */ jsx(Close, {
...p_,
...Q,
ref: I
});
});
AlertDialogAction$1.displayName = ACTION_NAME;
var CANCEL_NAME = "AlertDialogCancel", AlertDialogCancel$1 = React.forwardRef((j, I) => {
let { __scopeAlertDialog: q,...Q } = j, { cancelRef: p_ } = useAlertDialogContentContext(CANCEL_NAME, q), m_ = useDialogScope(q), h_ = useComposedRefs$1(I, p_);
return /* @__PURE__ */ jsx(Close, {
...m_,
...Q,
ref: h_
});
});
AlertDialogCancel$1.displayName = CANCEL_NAME;
var DescriptionWarning = ({ contentRef: j }) => {
let I = `\`${CONTENT_NAME$5}\` requires a description for the component to be accessible for screen reader users.
You can add a description to the \`${CONTENT_NAME$5}\` by passing a \`${DESCRIPTION_NAME}\` component as a child, which also benefits sighted users by adding visible context to the dialog.
Alternatively, you can use your own component as a description by assigning it an \`id\` and passing the same value to the \`aria-describedby\` prop in \`${CONTENT_NAME$5}\`. If the description is confusing or duplicative for sighted users, you can use the \`@radix-ui/react-visually-hidden\` primitive as a wrapper around your description component.
For more information, see https://radix-ui.com/primitives/docs/components/alert-dialog`;
return React.useEffect(() => {
document.getElementById(j.current?.getAttribute("aria-describedby")) || console.warn(I);
}, [I, j]), null;
}, Root2$3 = AlertDialog$1, Trigger2 = AlertDialogTrigger$1, Portal2$1 = AlertDialogPortal$1, Overlay2 = AlertDialogOverlay$1, Content2$2 = AlertDialogContent$1, Action$1 = AlertDialogAction$1, Cancel = AlertDialogCancel$1, Title2 = AlertDialogTitle$1, Description2 = AlertDialogDescription$1;
function AlertDialog({ ...j }) {
return /* @__PURE__ */ jsx(Root2$3, {
"data-slot": "alert-dialog",
...j
});
}
function AlertDialogTrigger({ ...j }) {
return /* @__PURE__ */ jsx(Trigger2, {
"data-slot": "alert-dialog-trigger",
...j
});
}
function AlertDialogPortal({ ...j }) {
return /* @__PURE__ */ jsx(Portal2$1, {
"data-slot": "alert-dialog-portal",
...j
});
}
function AlertDialogOverlay({ className: j,...I }) {
return /* @__PURE__ */ jsx(Overlay2, {
"data-slot": "alert-dialog-overlay",
className: cn("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50", j),
...I
});
}
function AlertDialogContent({ className: j,...I }) {
return /* @__PURE__ */ jsxs(AlertDialogPortal, { children: [/* @__PURE__ */ jsx(AlertDialogOverlay, {}), /* @__PURE__ */ jsx(Content2$2, {
"data-slot": "alert-dialog-content",
className: cn("bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed left-[50%] top-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg", j),
...I
})] });
}
function AlertDialogHeader({ className: j,...I }) {
return /* @__PURE__ */ jsx("div", {
"data-slot": "alert-dialog-header",
className: cn("flex flex-col gap-2 text-center sm:text-left", j),
...I
});
}
function AlertDialogFooter({ className: j,...I }) {
return /* @__PURE__ */ jsx("div", {
"data-slot": "alert-dialog-footer",
className: cn("flex flex-col-reverse gap-2 sm:flex-row sm:justify-end", j),
...I
});
}
function AlertDialogTitle({ className: j,...I }) {
return /* @__PURE__ */ jsx(Title2, {
"data-slot": "alert-dialog-title",
className: cn("text-lg font-semibold", j),
...I
});
}
function AlertDialogDescription({ className: j,...I }) {
return /* @__PURE__ */ jsx(Description2, {
"data-slot": "alert-dialog-description",
className: cn("text-muted-foreground text-sm", j),
...I
});
}
function AlertDialogAction({ className: j,...I }) {
return /* @__PURE__ */ jsx(Action$1, {
className: cn(buttonVariants(), j),
...I
});
}
function AlertDialogCancel({ className: j,...I }) {
return /* @__PURE__ */ jsx(Cancel, {
className: cn(buttonVariants({ variant: "outline" }), j),
...I
});
}
var COLLAPSIBLE_NAME = "Collapsible", [createCollapsibleContext, createCollapsibleScope] = createContextScope(COLLAPSIBLE_NAME), [CollapsibleProvider, useCollapsibleContext] = createCollapsibleContext(COLLAPSIBLE_NAME), Collapsible$1 = React.forwardRef((j, I) => {
let { __scopeCollapsible: q, open: Q, defaultOpen: p_, disabled: m_, onOpenChange: h_,...g_ } = j, [__, v_] = useControllableState({
prop: Q,
defaultProp: p_ ?? !1,
onChange: h_,
caller: COLLAPSIBLE_NAME
});
return /* @__PURE__ */ jsx(CollapsibleProvider, {
scope: q,
disabled: m_,
contentId: useId$1(),
open: __,
onOpenToggle: React.useCallback(() => v_((j) => !j), [v_]),
children: /* @__PURE__ */ jsx(Primitive.div, {
"data-state": getState$2(__),
"data-disabled": m_ ? "" : void 0,
...g_,
ref: I
})
});
});
Collapsible$1.displayName = COLLAPSIBLE_NAME;
var TRIGGER_NAME$4 = "CollapsibleTrigger", CollapsibleTrigger$1 = React.forwardRef((j, I) => {
let { __scopeCollapsible: q,...Q } = j, p_ = useCollapsibleContext(TRIGGER_NAME$4, q);
return /* @__PURE__ */ jsx(Primitive.button, {
type: "button",
"aria-controls": p_.contentId,
"aria-expanded": p_.open || !1,
"data-state": getState$2(p_.open),
"data-disabled": p_.disabled ? "" : void 0,
disabled: p_.disabled,
...Q,
ref: I,
onClick: composeEventHandlers(j.onClick, p_.onOpenToggle)
});
});
CollapsibleTrigger$1.displayName = TRIGGER_NAME$4;
var CONTENT_NAME$4 = "CollapsibleContent", CollapsibleContent$1 = React.forwardRef((j, I) => {
let { forceMount: q,...Q } = j, p_ = useCollapsibleContext(CONTENT_NAME$4, j.__scopeCollapsible);
return /* @__PURE__ */ jsx(Presence, {
present: q || p_.open,
children: ({ present: j }) => /* @__PURE__ */ jsx(CollapsibleContentImpl, {
...Q,
ref: I,
present: j
})
});
});
CollapsibleContent$1.displayName = CONTENT_NAME$4;
var CollapsibleContentImpl = React.forwardRef((j, I) => {
let { __scopeCollapsible: q, present: Q, children: p_,...m_ } = j, h_ = useCollapsibleContext(CONTENT_NAME$4, q), [g_, __] = React.useState(Q), v_ = React.useRef(null), y_ = useComposedRefs$1(I, v_), b_ = React.useRef(0), x_ = b_.current, S_ = React.useRef(0), C_ = S_.current, w_ = h_.open || g_, T_ = React.useRef(w_), E_ = React.useRef(void 0);
return React.useEffect(() => {
let j = requestAnimationFrame(() => T_.current = !1);
return () => cancelAnimationFrame(j);
}, []), useLayoutEffect2(() => {
let j = v_.current;
if (j) {
E_.current = E_.current || {
transitionDuration: j.style.transitionDuration,
animationName: j.style.animationName
}, j.style.transitionDuration = "0s", j.style.animationName = "none";
let I = j.getBoundingClientRect();
b_.current = I.height, S_.current = I.width, T_.current || (j.style.transitionDuration = E_.current.transitionDuration, j.style.animationName = E_.current.animationName), __(Q);
}
}, [h_.open, Q]), /* @__PURE__ */ jsx(Primitive.div, {
"data-state": getState$2(h_.open),
"data-disabled": h_.disabled ? "" : void 0,
id: h_.contentId,
hidden: !w_,
...m_,
ref: y_,
style: {
"--radix-collapsible-content-height": x_ ? `${x_}px` : void 0,
"--radix-collapsible-content-width": C_ ? `${C_}px` : void 0,
...j.style
},
children: w_ && p_
});
});
function getState$2(j) {
return j ? "open" : "closed";
}
var Root$2 = Collapsible$1;
function Collapsible({ ...j }) {
return /* @__PURE__ */ jsx(Root$2, {
"data-slot": "collapsible",
...j
});
}
function CollapsibleTrigger({ ...j }) {
return /* @__PURE__ */ jsx(CollapsibleTrigger$1, {
"data-slot": "collapsible-trigger",
...j
});
}
function CollapsibleContent({ ...j }) {
return /* @__PURE__ */ jsx(CollapsibleContent$1, {
"data-slot": "collapsible-content",
...j
});
}
function clamp(j, [I, q]) {
return Math.min(q, Math.max(I, j));
}
function useStateMachine(j, I) {
return React.useReducer((j, q) => I[j][q] ?? j, j);
}
var SCROLL_AREA_NAME = "ScrollArea", [createScrollAreaContext, createScrollAreaScope] = createContextScope(SCROLL_AREA_NAME), [ScrollAreaProvider, useScrollAreaContext] = createScrollAreaContext(SCROLL_AREA_NAME), ScrollArea$1 = React.forwardRef((j, I) => {
let { __scopeScrollArea: q, type: Q = "hover", dir: p_, scrollHideDelay: m_ = 600,...h_ } = j, [g_, __] = React.useState(null), [v_, y_] = React.useState(null), [b_, x_] = React.useState(null), [S_, C_] = React.useState(null), [w_, T_] = React.useState(null), [E_, D_] = React.useState(0), [O_, k_] = React.useState(0), [A_, j_] = React.useState(!1), [M_, N_] = React.useState(!1), P_ = useComposedRefs$1(I, (j) => __(j)), F_ = useDirection(p_);
return /* @__PURE__ */ jsx(ScrollAreaProvider, {
scope: q,
type: Q,
dir: F_,
scrollHideDelay: m_,
scrollArea: g_,
viewport: v_,
onViewportChange: y_,
content: b_,
onContentChange: x_,
scrollbarX: S_,
onScrollbarXChange: C_,
scrollbarXEnabled: A_,
onScrollbarXEnabledChange: j_,
scrollbarY: w_,
onScrollbarYChange: T_,
scrollbarYEnabled: M_,
onScrollbarYEnabledChange: N_,
onCornerWidthChange: D_,
onCornerHeightChange: k_,
children: /* @__PURE__ */ jsx(Primitive.div, {
dir: F_,
...h_,
ref: P_,
style: {
position: "relative",
"--radix-scroll-area-corner-width": E_ + "px",
"--radix-scroll-area-corner-height": O_ + "px",
...j.style
}
})
});
});
ScrollArea$1.displayName = SCROLL_AREA_NAME;
var VIEWPORT_NAME$1 = "ScrollAreaViewport", ScrollAreaViewport = React.forwardRef((j, I) => {
let { __scopeScrollArea: q, children: Q, nonce: p_,...m_ } = j, h_ = useScrollAreaContext(VIEWPORT_NAME$1, q), g_ = React.useRef(null), __ = useComposedRefs$1(I, g_, h_.onViewportChange);
return /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx("style", {
dangerouslySetInnerHTML: { __html: "[data-radix-scroll-area-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-scroll-area-viewport]::-webkit-scrollbar{display:none}" },
nonce: p_
}), /* @__PURE__ */ jsx(Primitive.div, {
"data-radix-scroll-area-viewport": "",
...m_,
ref: __,
style: {
overflowX: h_.scrollbarXEnabled ? "scroll" : "hidden",
overflowY: h_.scrollbarYEnabled ? "scroll" : "hidden",
...j.style
},
children: /* @__PURE__ */ jsx("div", {
ref: h_.onContentChange,
style: {
minWidth: "100%",
display: "table"
},
children: Q
})
})] });
});
ScrollAreaViewport.displayName = VIEWPORT_NAME$1;
var SCROLLBAR_NAME = "ScrollAreaScrollbar", ScrollAreaScrollbar = React.forwardRef((j, I) => {
let { forceMount: q,...Q } = j, p_ = useScrollAreaContext(SCROLLBAR_NAME, j.__scopeScrollArea), { onScrollbarXEnabledChange: m_, onScrollbarYEnabledChange: h_ } = p_, g_ = j.orientation === "horizontal";
return React.useEffect(() => (g_ ? m_(!0) : h_(!0), () => {
g_ ? m_(!1) : h_(!1);
}), [
g_,
m_,
h_
]), p_.type === "hover" ? /* @__PURE__ */ jsx(ScrollAreaScrollbarHover, {
...Q,
ref: I,
forceMount: q
}) : p_.type === "scroll" ? /* @__PURE__ */ jsx(ScrollAreaScrollbarScroll, {
...Q,
ref: I,
forceMount: q
}) : p_.type === "auto" ? /* @__PURE__ */ jsx(ScrollAreaScrollbarAuto, {
...Q,
ref: I,
forceMount: q
}) : p_.type === "always" ? /* @__PURE__ */ jsx(ScrollAreaScrollbarVisible, {
...Q,
ref: I
}) : null;
});
ScrollAreaScrollbar.displayName = SCROLLBAR_NAME;
var ScrollAreaScrollbarHover = React.forwardRef((j, I) => {
let { forceMount: q,...Q } = j, p_ = useScrollAreaContext(SCROLLBAR_NAME, j.__scopeScrollArea), [m_, h_] = React.useState(!1);
return React.useEffect(() => {
let j = p_.scrollArea, I = 0;
if (j) {
let q = () => {
window.clearTimeout(I), h_(!0);
}, Q = () => {
I = window.setTimeout(() => h_(!1), p_.scrollHideDelay);
};
return j.addEventListener("pointerenter", q), j.addEventListener("pointerleave", Q), () => {
window.clearTimeout(I), j.removeEventListener("pointerenter", q), j.removeEventListener("pointerleave", Q);
};
}
}, [p_.scrollArea, p_.scrollHideDelay]), /* @__PURE__ */ jsx(Presence, {
present: q || m_,
children: /* @__PURE__ */ jsx(ScrollAreaScrollbarAuto, {
"data-state": m_ ? "visible" : "hidden",
...Q,
ref: I
})
});
}), ScrollAreaScrollbarScroll = React.forwardRef((j, I) => {
let { forceMount: q,...Q } = j, p_ = useScrollAreaContext(SCROLLBAR_NAME, j.__scopeScrollArea), m_ = j.orientation === "horizontal", h_ = useDebounceCallback(() => __("SCROLL_END"), 100), [g_, __] = useStateMachine("hidden", {
hidden: { SCROLL: "scrolling" },
scrolling: {
SCROLL_END: "idle",
POINTER_ENTER: "interacting"
},
interacting: {
SCROLL: "interacting",
POINTER_LEAVE: "idle"
},
idle: {
HIDE: "hidden",
SCROLL: "scrolling",
POINTER_ENTER: "interacting"
}
});
return React.useEffect(() => {
if (g_ === "idle") {
let j = window.setTimeout(() => __("HIDE"), p_.scrollHideDelay);
return () => window.clearTimeout(j);
}
}, [
g_,
p_.scrollHideDelay,
__
]), React.useEffect(() => {
let j = p_.viewport, I = m_ ? "scrollLeft" : "scrollTop";
if (j) {
let q = j[I], Q = () => {
let Q = j[I];
q !== Q && (__("SCROLL"), h_()), q = Q;
};
return j.addEventListener("scroll", Q), () => j.removeEventListener("scroll", Q);
}
}, [
p_.viewport,
m_,
__,
h_
]), /* @__PURE__ */ jsx(Presence, {
present: q || g_ !== "hidden",
children: /* @__PURE__ */ jsx(ScrollAreaScrollbarVisible, {
"data-state": g_ === "hidden" ? "hidden" : "visible",
...Q,
ref: I,
onPointerEnter: composeEventHandlers(j.onPointerEnter, () => __("POINTER_ENTER")),
onPointerLeave: composeEventHandlers(j.onPointerLeave, () => __("POINTER_LEAVE"))
})
});
}), ScrollAreaScrollbarAuto = React.forwardRef((j, I) => {
let q = useScrollAreaContext(SCROLLBAR_NAME, j.__scopeScrollArea), { forceMount: Q,...p_ } = j, [m_, h_] = React.useState(!1), g_ = j.orientation === "horizontal", __ = useDebounceCallback(() => {
if (q.viewport) {
let j = q.viewport.offsetWidth < q.viewport.scrollWidth, I = q.viewport.offsetHeight < q.viewport.scrollHeight;
h_(g_ ? j : I);
}
}, 10);
return useResizeObserver$1(q.viewport, __), useResizeObserver$1(q.content, __), /* @__PURE__ */ jsx(Presence, {
present: Q || m_,
children: /* @__PURE__ */ jsx(ScrollAreaScrollbarVisible, {
"data-state": m_ ? "visible" : "hidden",
...p_,
ref: I
})
});
}), ScrollAreaScrollbarVisible = React.forwardRef((j, I) => {
let { orientation: q = "vertical",...Q } = j, p_ = useScrollAreaContext(SCROLLBAR_NAME, j.__scopeScrollArea), m_ = React.useRef(null), h_ = React.useRef(0), [g_, __] = React.useState({
content: 0,
viewport: 0,
scrollbar: {
size: 0,
paddingStart: 0,
paddingEnd: 0
}
}), v_ = getThumbRatio(g_.viewport, g_.content), y_ = {
...Q,
sizes: g_,
onSizesChange: __,
hasThumb: v_ > 0 && v_ < 1,
onThumbChange: (j) => m_.current = j,
onThumbPointerUp: () => h_.current = 0,
onThumbPointerDown: (j) => h_.current = j
};
function b_(j, I) {
return getScrollPositionFromPointer(j, h_.current, g_, I);
}
return q === "horizontal" ? /* @__PURE__ */ jsx(ScrollAreaScrollbarX, {
...y_,
ref: I,
onThumbPositionChange: () => {
if (p_.viewport && m_.current) {
let j = p_.viewport.scrollLeft, I = getThumbOffsetFromScroll(j, g_, p_.dir);
m_.current.style.transform = `translate3d(${I}px, 0, 0)`;
}
},
onWheelScroll: (j) => {
p_.viewport && (p_.viewport.scrollLeft = j);
},
onDragScroll: (j) => {
p_.viewport && (p_.viewport.scrollLeft = b_(j, p_.dir));
}
}) : q === "vertical" ? /* @__PURE__ */ jsx(ScrollAreaScrollbarY, {
...y_,
ref: I,
onThumbPositionChange: () => {
if (p_.viewport && m_.current) {
let j = p_.viewport.scrollTop, I = getThumbOffsetFromScroll(j, g_);
m_.current.style.transform = `translate3d(0, ${I}px, 0)`;
}
},
onWheelScroll: (j) => {
p_.viewport && (p_.viewport.scrollTop = j);
},
onDragScroll: (j) => {
p_.viewport && (p_.viewport.scrollTop = b_(j));
}
}) : null;
}), ScrollAreaScrollbarX = React.forwardRef((j, I) => {
let { sizes: q, onSizesChange: Q,...p_ } = j, m_ = useScrollAreaContext(SCROLLBAR_NAME, j.__scopeScrollArea), [h_, g_] = React.useState(), __ = React.useRef(null), v_ = useComposedRefs$1(I, __, m_.onScrollbarXChange);
return React.useEffect(() => {
__.current && g_(getComputedStyle(__.current));
}, [__]), /* @__PURE__ */ jsx(ScrollAreaScrollbarImpl, {
"data-orientation": "horizontal",
...p_,
ref: v_,
sizes: q,
style: {
bottom: 0,
left: m_.dir === "rtl" ? "var(--radix-scroll-area-corner-width)" : 0,
right: m_.dir === "ltr" ? "var(--radix-scroll-area-corner-width)" : 0,
"--radix-scroll-area-thumb-width": getThumbSize(q) + "px",
...j.style
},
onThumbPointerDown: (I) => j.onThumbPointerDown(I.x),
onDragScroll: (I) => j.onDragScroll(I.x),
onWheelScroll: (I, q) => {
if (m_.viewport) {
let Q = m_.viewport.scrollLeft + I.deltaX;
j.onWheelScroll(Q), isScrollingWithinScrollbarBounds(Q, q) && I.preventDefault();
}
},
onResize: () => {
__.current && m_.viewport && h_ && Q({
content: m_.viewport.scrollWidth,
viewport: m_.viewport.offsetWidth,
scrollbar: {
size: __.current.clientWidth,
paddingStart: toInt(h_.paddingLeft),
paddingEnd: toInt(h_.paddingRight)
}
});
}
});
}), ScrollAreaScrollbarY = React.forwardRef((j, I) => {
let { sizes: q, onSizesChange: Q,...p_ } = j, m_ = useScrollAreaContext(SCROLLBAR_NAME, j.__scopeScrollArea), [h_, g_] = React.useState(), __ = React.useRef(null), v_ = useComposedRefs$1(I, __, m_.onScrollbarYChange);
return React.useEffect(() => {
__.current && g_(getComputedStyle(__.current));
}, [__]), /* @__PURE__ */ jsx(ScrollAreaScrollbarImpl, {
"data-orientation": "vertical",
...p_,
ref: v_,
sizes: q,
style: {
top: 0,
right: m_.dir === "ltr" ? 0 : void 0,
left: m_.dir === "rtl" ? 0 : void 0,
bottom: "var(--radix-scroll-area-corner-height)",
"--radix-scroll-area-thumb-height": getThumbSize(q) + "px",
...j.style
},
onThumbPointerDown: (I) => j.onThumbPointerDown(I.y),
onDragScroll: (I) => j.onDragScroll(I.y),
onWheelScroll: (I, q) => {
if (m_.viewport) {
let Q = m_.viewport.scrollTop + I.deltaY;
j.onWheelScroll(Q), isScrollingWithinScrollbarBounds(Q, q) && I.preventDefault();
}
},
onResize: () => {
__.current && m_.viewport && h_ && Q({
content: m_.viewport.scrollHeight,
viewport: m_.viewport.offsetHeight,
scrollbar: {
size: __.current.clientHeight,
paddingStart: toInt(h_.paddingTop),
paddingEnd: toInt(h_.paddingBottom)
}
});
}
});
}), [ScrollbarProvider, useScrollbarContext] = createScrollAreaContext(SCROLLBAR_NAME), ScrollAreaScrollbarImpl = React.forwardRef((j, I) => {
let { __scopeScrollArea: q, sizes: Q, hasThumb: p_, onThumbChange: m_, onThumbPointerUp: h_, onThumbPointerDown: g_, onThumbPositionChange: __, onDragScroll: v_, onWheelScroll: y_, onResize: b_,...x_ } = j, S_ = useScrollAreaContext(SCROLLBAR_NAME, q), [C_, w_] = React.useState(null), T_ = useComposedRefs$1(I, (j) => w_(j)), E_ = React.useRef(null), D_ = React.useRef(""), O_ = S_.viewport, k_ = Q.content - Q.viewport, A_ = useCallbackRef(y_), j_ = useCallbackRef(__), M_ = useDebounceCallback(b_, 10);
function N_(j) {
if (E_.current) {
let I = j.clientX - E_.current.left, q = j.clientY - E_.current.top;
v_({
x: I,
y: q
});
}
}
return React.useEffect(() => {
let j = (j) => {
let I = j.target;
C_?.contains(I) && A_(j, k_);
};
return document.addEventListener("wheel", j, { passive: !1 }), () => document.removeEventListener("wheel", j, { passive: !1 });
}, [
O_,
C_,
k_,
A_
]), React.useEffect(j_, [Q, j_]), useResizeObserver$1(C_, M_), useResizeObserver$1(S_.content, M_), /* @__PURE__ */ jsx(ScrollbarProvider, {
scope: q,
scrollbar: C_,
hasThumb: p_,
onThumbChange: useCallbackRef(m_),
onThumbPointerUp: useCallbackRef(h_),
onThumbPositionChange: j_,
onThumbPointerDown: useCallbackRef(g_),
children: /* @__PURE__ */ jsx(Primitive.div, {
...x_,
ref: T_,
style: {
position: "absolute",
...x_.style
},
onPointerDown: composeEventHandlers(j.onPointerDown, (j) => {
j.button === 0 && (j.target.setPointerCapture(j.pointerId), E_.current = C_.getBoundingClientRect(), D_.current = document.body.style.webkitUserSelect, document.body.style.webkitUserSelect = "none", S_.viewport && (S_.viewport.style.scrollBehavior = "auto"), N_(j));
}),
onPointerMove: composeEventHandlers(j.onPointerMove, N_),
onPointerUp: composeEventHandlers(j.onPointerUp, (j) => {
let I = j.target;
I.hasPointerCapture(j.pointerId) && I.releasePointerCapture(j.pointerId), document.body.style.webkitUserSelect = D_.current, S_.viewport && (S_.viewport.style.scrollBehavior = ""), E_.current = null;
})
})
});
}), THUMB_NAME = "ScrollAreaThumb", ScrollAreaThumb = React.forwardRef((j, I) => {
let { forceMount: q,...Q } = j, p_ = useScrollbarContext(THUMB_NAME, j.__scopeScrollArea);
return /* @__PURE__ */ jsx(Presence, {
present: q || p_.hasThumb,
children: /* @__PURE__ */ jsx(ScrollAreaThumbImpl, {
ref: I,
...Q
})
});
}), ScrollAreaThumbImpl = React.forwardRef((j, I) => {
let { __scopeScrollArea: q, style: Q,...p_ } = j, m_ = useScrollAreaContext(THUMB_NAME, q), h_ = useScrollbarContext(THUMB_NAME, q), { onThumbPositionChange: g_ } = h_, __ = useComposedRefs$1(I, (j) => h_.onThumbChange(j)), v_ = React.useRef(void 0), y_ = useDebounceCallback(() => {
v_.current &&= (v_.current(), void 0);
}, 100);
return React.useEffect(() => {
let j = m_.viewport;
if (j) {
let I = () => {
y_(), v_.current || (v_.current = addUnlinkedScrollListener(j, g_), g_());
};
return g_(), j.addEventListener("scroll", I), () => j.removeEventListener("scroll", I);
}
}, [
m_.viewport,
y_,
g_
]), /* @__PURE__ */ jsx(Primitive.div, {
"data-state": h_.hasThumb ? "visible" : "hidden",
...p_,
ref: __,
style: {
width: "var(--radix-scroll-area-thumb-width)",
height: "var(--radix-scroll-area-thumb-height)",
...Q
},
onPointerDownCapture: composeEventHandlers(j.onPointerDownCapture, (j) => {
let I = j.target.getBoundingClientRect(), q = j.clientX - I.left, Q = j.clientY - I.top;
h_.onThumbPointerDown({
x: q,
y: Q
});
}),
onPointerUp: composeEventHandlers(j.onPointerUp, h_.onThumbPointerUp)
});
});
ScrollAreaThumb.displayName = THUMB_NAME;
var CORNER_NAME = "ScrollAreaCorner", ScrollAreaCorner = React.forwardRef((j, I) => {
let q = useScrollAreaContext(CORNER_NAME, j.__scopeScrollArea), Q = !!(q.scrollbarX && q.scrollbarY);
return q.type !== "scroll" && Q ? /* @__PURE__ */ jsx(ScrollAreaCornerImpl, {
...j,
ref: I
}) : null;
});
ScrollAreaCorner.displayName = CORNER_NAME;
var ScrollAreaCornerImpl = React.forwardRef((j, I) => {
let { __scopeScrollArea: q,...Q } = j, p_ = useScrollAreaContext(CORNER_NAME, q), [m_, h_] = React.useState(0), [g_, __] = React.useState(0), v_ = !!(m_ && g_);
return useResizeObserver$1(p_.scrollbarX, () => {
let j = p_.scrollbarX?.offsetHeight || 0;
p_.onCornerHeightChange(j), __(j);
}), useResizeObserver$1(p_.scrollbarY, () => {
let j = p_.scrollbarY?.offsetWidth || 0;
p_.onCornerWidthChange(j), h_(j);
}), v_ ? /* @__PURE__ */ jsx(Primitive.div, {
...Q,
ref: I,
style: {
width: m_,
height: g_,
position: "absolute",
right: p_.dir === "ltr" ? 0 : void 0,
left: p_.dir === "rtl" ? 0 : void 0,
bottom: 0,
...j.style
}
}) : null;
});
function toInt(j) {
return j ? parseInt(j, 10) : 0;
}
function getThumbRatio(j, I) {
let q = j / I;
return isNaN(q) ? 0 : q;
}
function getThumbSize(j) {
let I = getThumbRatio(j.viewport, j.content), q = j.scrollbar.paddingStart + j.scrollbar.paddingEnd, Q = (j.scrollbar.size - q) * I;
return Math.max(Q, 18);
}
function getScrollPositionFromPointer(j, I, q, Q = "ltr") {
let p_ = getThumbSize(q), m_ = p_ / 2, h_ = I || m_, g_ = p_ - h_, __ = q.scrollbar.paddingStart + h_, v_ = q.scrollbar.size - q.scrollbar.paddingEnd - g_, y_ = q.content - q.viewport, b_ = Q === "ltr" ? [0, y_] : [y_ * -1, 0];
return linearScale([__, v_], b_)(j);
}
function getThumbOffsetFromScroll(j, I, q = "ltr") {
let Q = getThumbSize(I), p_ = I.scrollbar.paddingStart + I.scrollbar.paddingEnd, m_ = I.scrollbar.size - p_, h_ = I.content - I.viewport, g_ = m_ - Q, __ = q === "ltr" ? [0, h_] : [h_ * -1, 0], v_ = clamp(j, __);
return linearScale([0, h_], [0, g_])(v_);
}
function linearScale(j, I) {
return (q) => {
if (j[0] === j[1] || I[0] === I[1]) return I[0];
let Q = (I[1] - I[0]) / (j[1] - j[0]);
return I[0] + Q * (q - j[0]);
};
}
function isScrollingWithinScrollbarBounds(j, I) {
return j > 0 && j < I;
}
var addUnlinkedScrollListener = (j, I = () => {}) => {
let q = {
left: j.scrollLeft,
top: j.scrollTop
}, Q = 0;
return (function p_() {
let m_ = {
left: j.scrollLeft,
top: j.scrollTop
}, h_ = q.left !== m_.left, g_ = q.top !== m_.top;
(h_ || g_) && I(), q = m_, Q = window.requestAnimationFrame(p_);
})(), () => window.cancelAnimationFrame(Q);
};
function useDebounceCallback(j, I) {
let q = useCallbackRef(j), Q = React.useRef(0);
return React.useEffect(() => () => window.clearTimeout(Q.current), []), React.useCallback(() => {
window.clearTimeout(Q.current), Q.current = window.setTimeout(q, I);
}, [q, I]);
}
function useResizeObserver$1(j, I) {
let q = useCallbackRef(I);
useLayoutEffect2(() => {
let I = 0;
if (j) {
let Q = new ResizeObserver(() => {
cancelAnimationFrame(I), I = window.requestAnimationFrame(q);
});
return Q.observe(j), () => {
window.cancelAnimationFrame(I), Q.unobserve(j);
};
}
}, [j, q]);
}
var Root$1 = ScrollArea$1, Viewport$1 = ScrollAreaViewport, Corner = ScrollAreaCorner;
function ScrollArea({ className: j, children: I,...q }) {
return /* @__PURE__ */ jsxs(Root$1, {
"data-slot": "scroll-area",
className: cn("relative", j),
...q,
children: [
/* @__PURE__ */ jsx(Viewport$1, {
"data-slot": "scroll-area-viewport",
className: "focus-visible:ring-ring/50 size-full rounded-[inherit] outline-none transition-[color,box-shadow] focus-visible:outline-1 focus-visible:ring-[3px]",
children: I
}),
/* @__PURE__ */ jsx(ScrollBar, {}),
/* @__PURE__ */ jsx(Corner, {})
]
});
}
function ScrollBar({ className: j, orientation: I = "vertical",...q }) {
return /* @__PURE__ */ jsx(ScrollAreaScrollbar, {
"data-slot": "scroll-area-scrollbar",
orientation: I,
className: cn("flex touch-none select-none p-px transition-colors", I === "vertical" && "h-full w-2.5 border-l border-l-transparent", I === "horizontal" && "h-2.5 flex-col border-t border-t-transparent", j),
...q,
children: /* @__PURE__ */ jsx(ScrollAreaThumb, {
"data-slot": "scroll-area-thumb",
className: "bg-border relative flex-1 rounded-full"
})
});
}
var LaboratoryContext = createContext({});
const useLaboratory = () => useContext(LaboratoryContext), LaboratoryProvider = (j) => /* @__PURE__ */ jsx(LaboratoryContext.Provider, {
value: { ...j },
children: j.children
}), CollectionItem = (j) => {
let { activeOperation: I, operations: q, addOperation: Q, setActiveOperation: p_, deleteCollection: m_, deleteOperationFromCollection: h_, addTab: g_, setActiveTab: __, checkPermissions: v_ } = useLaboratory(), [y_, b_] = useState(!1);
return /* @__PURE__ */ jsxs(Collapsible, {
open: y_,
onOpenChange: b_,
children: [/* @__PURE__ */ jsx(CollapsibleTrigger, {
asChild: !0,
children: /* @__PURE__ */ jsxs(Button, {
variant: "ghost",
className: "bg-background group sticky top-0 w-full justify-start px-2",
size: "sm",
children: [
jsx(y_ ? FolderOpenIcon : FolderIcon, { className: "text-muted-foreground size-4" }),
j.collection.name,
v_?.("collections:delete") && /* @__PURE__ */ jsxs(Tooltip, { children: [/* @__PURE__ */ jsx(TooltipTrigger$1, {
asChild: !0,
children: /* @__PURE__ */ jsxs(AlertDialog, { children: [/* @__PURE__ */ jsx(AlertDialogTrigger, {
asChild: !0,
children: /* @__PURE__ */ jsx(Button, {
variant: "link",
className: "text-muted-foreground hover:text-destructive p-1! pr-0! ml-auto opacity-0 transition-opacity group-hover:opacity-100",
onClick: (j) => {
j.stopPropagation();
},
children: /* @__PURE__ */ jsx(TrashIcon, {})
})
}), /* @__PURE__ */ jsxs(AlertDialogContent, { children: [/* @__PURE__ */ jsxs(AlertDialogHeader, { children: [/* @__PURE__ */ jsx(AlertDialogTitle, { children: "Are you sure you want to delete collection?" }), /* @__PURE__ */ jsxs(AlertDialogDescription, { children: [j.collection.name, " will be permanently deleted. All operations in this collection will be deleted as well."] })] }), /* @__PURE__ */ jsxs(AlertDialogFooter, { children: [/* @__PURE__ */ jsx(AlertDialogCancel, { children: "Cancel" }), /* @__PURE__ */ jsx(AlertDialogAction, {
asChild: !0,
children: /* @__PURE__ */ jsx(Button, {
variant: "destructive",
onClick: (I) => {
I.stopPropagation(), m_(j.collection.id);
},
children: "Delete"
})
})] })] })] })
}), /* @__PURE__ */ jsx(TooltipContent, { children: "Delete collection" })] })
]
})
}), /* @__PURE__ */ jsx(CollapsibleContent, {
className: cn("border-border ml-4 flex flex-col gap-1 border-l pl-2"),
children: y_ && j.collection.operations.map((m_) => {
let y_ = I?.id === m_.id;
return /* @__PURE__ */ jsxs(Button, {
variant: "ghost",
className: cn("group w-full justify-start gap-2 px-2", { "bg-accent/50": y_ }),
size: "sm",
onClick: () => {
if (q.some((j) => j.id === m_.id)) p_(m_.id);
else {
let j = Q(m_), I = g_({
type: "operation",
data: j
});
__(I);
}
},
children: [
/* @__PURE__ */ jsx(GraphQLIcon, { className: "size-4 text-pink-500" }),
m_.name,
v_?.("collectionsOperations:delete") && /* @__PURE__ */ jsxs(Tooltip, { children: [/* @__PURE__ */ jsx(TooltipTrigger$1, {
asChild: !0,
children: /* @__PURE__ */ jsxs(AlertDialog, { children: [/* @__PURE__ */ jsx(AlertDialogTrigger, {
asChild: !0,
children: /* @__PURE__ */ jsx(Button, {
variant: "link",
className: "text-muted-foreground hover:text-destructive p-1! pr-0! ml-auto opacity-0 transition-opacity group-hover:opacity-100",
onClick: (j) => {
j.stopPropagation();
},
children: /* @__PURE__ */ jsx(TrashIcon, {})
})
}), /* @__PURE__ */ jsxs(AlertDialogContent, { children: [/* @__PURE__ */ jsxs(AlertDialogHeader, { children: [/* @__PURE__ */ jsxs(AlertDialogTitle, { children: [
"Are you sure you want to delete operation ",
m_.name,
"?"
] }), /* @__PURE__ */ jsxs(AlertDialogDescription, { children: [m_.name, " will be permanently deleted."] })] }), /* @__PURE__ */ jsxs(AlertDialogFooter, { children: [/* @__PURE__ */ jsx(AlertDialogCancel, { children: "Cancel" }), /* @__PURE__ */ jsx(AlertDialogAction, {
asChild: !0,
children: /* @__PURE__ */ jsx(Button, {
variant: "destructive",
onClick: (I) => {
I.stopPropagation(), h_(j.collection.id, m_.id);
},
children: "Delete"
})
})] })] })] })
}), /* @__PURE__ */ jsx(TooltipContent, { children: "Delete operation" })] })
]
}, m_.name);
})
})]
});
}, CollectionsSearchResult = (j) => {
let { activeOperation: I, operations: q, addOperation: Q, setActiveOperation: p_, addTab: m_, setActiveTab: h_ } = useLaboratory();
return /* @__PURE__ */ jsx("div", {
className: "flex flex-col gap-1",
children: j.items.map((j) => {
let g_ = I?.id === j.id;
return /* @__PURE__ */ jsxs(Button, {
variant: "ghost",
className: cn("group w-full justify-start gap-2 px-2", { "bg-accent/50": g_ }),
size: "sm",
onClick: () => {
if (q.some((I) => I.id === j.id)) p_(j.id);
else {
let I = Q(j), q = m_({
type: "operation",
data: I
});
h_(q);
}
},
children: [
/* @__PURE__ */ jsx(GraphQLIcon, { className: "size-4 text-pink-500" }),
/* @__PURE__ */ jsx("span", {
className: "text-muted-foreground truncate",
children: j.parent.name
}),
/* @__PURE__ */ jsx("span", {
className: "text-muted-foreground",
children: " / "
}),
j.name
]
}, j.name);
})
});
}, Collections = () => {
let [j, I] = useState(""), { collections: q, openAddCollectionDialog: Q, checkPermissions: p_ } = useLaboratory(), m_ = useMemo(() => q.reduce((j, I) => [...j, ...I.operations.map((j) => ({
...j,
parent: I
}))], []).filter((I) => I.name.toLowerCase().includes(j.toLowerCase())), [q, j]);
return /* @__PURE__ */ jsxs("div", {
className: "grid size-full grid-rows-[auto_1fr] pb-0",
children: [/* @__PURE__ */ jsxs("div", {
className: "flex flex-col",
children: [/* @__PURE__ */ jsxs("div", {
className: "flex items-center gap-2 p-3 pb-0",
children: [/* @__PURE__ */ jsx("span", {
className: "text-base font-medium",
children: "Collections"
}), /* @__PURE__ */ jsx("div", {
className: "ml-auto flex items-center gap-2",
children: p_?.("collections:create") && /* @__PURE__ */ jsxs(Tooltip, { children: [/* @__PURE__ */ jsx(TooltipTrigger$1, {
asChild: !0,
children: /* @__PURE__ */ jsx(Button, {
variant: "ghost",
size: "icon-sm",
className: "p-1! size-6 rounded-sm",
onClick: Q,
children: /* @__PURE__ */ jsx(FolderPlusIcon, { className: "text-primary size-4" })
})
}), /* @__PURE__ */ jsx(TooltipContent, { children: "Add collection" })] })
})]
}), /* @__PURE__ */ jsxs("div", {
className: "border-border relative border-b p-3",
children: [
/* @__PURE__ */ jsx(SearchIcon, { className: "text-muted-foreground absolute left-5 top-1/2 size-4 -translate-y-1/2" }),
/* @__PURE__ */ jsx(Input, {
type: "text",
placeholder: "Search...",
className: cn("px-7"),
value: j,
onChange: (j) => I(j.target.value)
}),
j.length > 0 && /* @__PURE__ */ jsx(Button, {
variant: "ghost",
size: "icon-sm",
className: "p-1! absolute right-5 top-1/2 size-6 -translate-y-1/2 rounded-sm",
onClick: () => I(""),
children: /* @__PURE__ */ jsx(XIcon, { className: "text-muted-foreground size-4" })
})
]
})]
}), /* @__PURE__ */ jsx("div", {
className: "size-full overflow-hidden",
children: /* @__PURE__ */ jsxs(ScrollArea, {
className: "size-full",
children: [/* @__PURE__ */ jsx("div", {
className: "flex flex-col gap-1 p-3",
children: j.length > 0 ? m_.length > 0 ? /* @__PURE__ */ jsx(CollectionsSearchResult, { items: m_ }) : /* @__PURE__ */ jsx(Empty, {
className: "px-0! w-full",
children: /* @__PURE__ */ jsxs(EmptyHeader, { children: [
/* @__PURE__ */ jsx(EmptyMedia, {
variant: "icon",
children: /* @__PURE__ */ jsx(SearchIcon, { className: "text-muted-foreground size-6" })
}),
/* @__PURE__ */ jsx(EmptyTitle, {
className: "text-base",
children: "No results found"
}),
/* @__PURE__ */ jsx(EmptyDescription, {
className: "text-xs",
children: "No collections found matching your search."
})
] })
}) : q.length > 0 ? q.map((j) => /* @__PURE__ */ jsx(CollectionItem, { collection: j }, j.id)) : /* @__PURE__ */ jsxs(Empty, {
className: "px-0! w-full",
children: [/* @__PURE__ */ jsxs(EmptyHeader, { children: [
/* @__PURE__ */ jsx(EmptyMedia, {
variant: "icon",
children: /* @__PURE__ */ jsx(FolderIcon, { className: "text-muted-foreground size-6" })
}),
/* @__PURE__ */ jsx(EmptyTitle, {
className: "text-base",
children: "No collections yet"
}),
/* @__PURE__ */ jsx(EmptyDescription, {
className: "text-xs",
children: "You haven't created any collections yet. Get started by adding your first collection."
})
] }), /* @__PURE__ */ jsx(EmptyContent, { children: /* @__PURE__ */ jsx(Button, {
variant: "secondary",
size: "sm",
onClick: Q,
children: "Add collection"
}) })]
})
}), /* @__PURE__ */ jsx(ScrollBar, {})]
})
})]
});
};
var U = 1, Y$2 = .9, H$1 = .8, J = .17, p = .1, u = .999, $$1 = .9999, k$2 = .99, m = /[\\\/_+.#"@\[\(\{&]/, B$1 = /[\\\/_+.#"@\[\(\{&]/g, K$1 = /[\s-]/, X = /[\s-]/g;
function G(j, I, q, Q, p_, m_, h_) {
if (m_ === I.length) return p_ === j.length ? U : k$2;
var g_ = `${p_},${m_}`;
if (h_[g_] !== void 0) return h_[g_];
for (var __ = Q.charAt(m_), v_ = q.indexOf(__, p_), y_ = 0, b_, x_, S_, C_; v_ >= 0;) b_ = G(j, I, q, Q, v_ + 1, m_ + 1, h_), b_ > y_ && (v_ === p_ ? b_ *= U : m.test(j.charAt(v_ - 1)) ? (b_ *= H$1, S_ = j.slice(p_, v_ - 1).match(B$1), S_ && p_ > 0 && (b_ *= u ** +S_.length)) : K$1.test(j.charAt(v_ - 1)) ? (b_ *= Y$2, C_ = j.slice(p_, v_ - 1).match(X), C_ && p_ > 0 && (b_ *= u ** +C_.length)) : (b_ *= J, p_ > 0 && (b_ *= u ** +(v_ - p_))), j.charAt(v_) !== I.charAt(m_) && (b_ *= $$1)), (b_ < p && q.charAt(v_ - 1) === Q.charAt(m_ + 1) || Q.charAt(m_ + 1) === Q.charAt(m_) && q.charAt(v_ - 1) !== Q.charAt(m_)) && (x_ = G(j, I, q, Q, v_ + 1, m_ + 2, h_), x_ * p > b_ && (b_ = x_ * p)), b_ > y_ && (y_ = b_), v_ = q.indexOf(__, v_ + 1);
return h_[g_] = y_, y_;
}
function D$1(j) {
return j.toLowerCase().replace(X, " ");
}
function W(j, I, q) {
return j = q && q.length > 0 ? `${j + " " + q.join(" ")}` : j, G(j, I, D$1(j), D$1(I), 0, 0, {});
}
var N = "[cmdk-group=\"\"]", Y$1 = "[cmdk-group-items=\"\"]", be$1 = "[cmdk-group-heading=\"\"]", le = "[cmdk-item=\"\"]", ce = `${le}:not([aria-disabled="true"])`, Z = "cmdk-item-select", T = "data-value", Re = (j, I, q) => W(j, I, q), ue = React.createContext(void 0), K = () => React.useContext(ue), de$1 = React.createContext(void 0), ee = () => React.useContext(de$1), fe = React.createContext(void 0), me = React.forwardRef((j, I) => {
let q = L(() => ({
search: "",
value: j.value ?? j.defaultValue ?? "",
selectedItemId: void 0,
filtered: {
count: 0,
items: /* @__PURE__ */ new Map(),
groups: /* @__PURE__ */ new Set()
}
})), Q = L(() => /* @__PURE__ */ new Set()), p_ = L(() => /* @__PURE__ */ new Map()), m_ = L(() => /* @__PURE__ */ new Map()), h_ = L(() => /* @__PURE__ */ new Set()), g_ = pe(j), { label: __, children: v_, value: y_, onValueChange: b_, filter: x_, shouldFilter: S_, loop: C_, disablePointerSelection: w_ = !1, vimBindings: T_ = !0,...E_ } = j, D_ = useId$1(), O_ = useId$1(), k_ = useId$1(), A_ = React.useRef(null), j_ = ke$1();
k$1(() => {
if (y_ !== void 0) {
let j = y_.trim();
q.current.value = j, M_.emit();
}
}, [y_]), k$1(() => {
j_(6, R_);
}, []);
let M_ = React.useMemo(() => ({
subscribe: (j) => (h_.current.add(j), () => h_.current.delete(j)),
snapshot: () => q.current,
setState: (j, I, Q) => {
var p_, m_, h_;
if (!Object.is(q.current[j], I)) {
if (q.current[j] = I, j === "search") L_(), F_(), j_(1, I_);
else if (j === "value") {
if (document.activeElement.hasAttribute("cmdk-input") || document.activeElement.hasAttribute("cmdk-root")) {
let j = document.getElementById(k_);
j ? j.focus() : (p_ = document.getElementById(D_)) == null || p_.focus();
}
if (j_(7, () => {
q.current.selectedItemId = z_()?.id, M_.emit();
}), Q || j_(5, R_), g_.current?.value !== void 0) {
let j = I ?? "";
(h_ = (m_ = g_.current).onValueChange) == null || h_.call(m_, j);
return;
}
}
M_.emit();
}
},
emit: () => {
h_.current.forEach((j) => j());
}
}), []), N_ = React.useMemo(() => ({
value: (j, I, Q) => {
I !== m_.current.get(j)?.value && (m_.current.set(j, {
value: I,
keywords: Q
}), q.current.filtered.items.set(j, P_(I, Q)), j_(2, () => {
F_(), M_.emit();
}));
},
item: (j, I) => (Q.current.add(j), I && (p_.current.has(I) ? p_.current.get(I).add(j) : p_.current.set(I, new Set([j]))), j_(3, () => {
L_(), F_(), q.current.value || I_(), M_.emit();
}), () => {
m_.current.delete(j), Q.current.delete(j), q.current.filtered.items.delete(j);
let I = z_();
j_(4, () => {
L_(), I?.getAttribute("id") === j && I_(), M_.emit();
});
}),
group: (j) => (p_.current.has(j) || p_.current.set(j, /* @__PURE__ */ new Set()), () => {
m_.current.delete(j), p_.current.delete(j);
}),
filter: () => g_.current.shouldFilter,
label: __ || j["aria-label"],
getDisablePointerSelection: () => g_.current.disablePointerSelection,
listId: D_,
inputId: k_,
labelId: O_,
listInnerRef: A_
}), []);
function P_(j, I) {
let Q = g_.current?.filter ?? Re;
return j ? Q(j, q.current.search, I) : 0;
}
function F_() {
if (!q.current.search || g_.current.shouldFilter === !1) return;
let j = q.current.filtered.items, I = [];
q.current.filtered.groups.forEach((q) => {
let Q = p_.current.get(q), m_ = 0;
Q.forEach((I) => {
let q = j.get(I);
m_ = Math.max(q, m_);
}), I.push([q, m_]);
});
let Q = A_.current;
B_().sort((I, q) => {
let Q = I.getAttribute("id"), p_ = q.getAttribute("id");
return (j.get(p_) ?? 0) - (j.get(Q) ?? 0);
}).forEach((j) => {
let I = j.closest(Y$1);
I ? I.appendChild(j.parentElement === I ? j : j.closest(`${Y$1} > *`)) : Q.appendChild(j.parentElement === Q ? j : j.closest(`${Y$1} > *`));
}), I.sort((j, I) => I[1] - j[1]).forEach((j) => {
let I = A_.current?.querySelector(`${N}[${T}="${encodeURIComponent(j[0])}"]`);
I?.parentElement.appendChild(I);
});
}
function I_() {
let j = B_().find((j) => j.getAttribute("aria-disabled") !== "true")?.getAttribute(T);
M_.setState("value", j || void 0);
}
function L_() {
if (!q.current.search || g_.current.shouldFilter === !1) {
q.current.filtered.count = Q.current.size;
return;
}
q.current.filtered.groups = /* @__PURE__ */ new Set();
let j = 0;
for (let I of Q.current) {
let Q = m_.current.get(I)?.value ?? "", p_ = m_.current.get(I)?.keywords ?? [], h_ = P_(Q, p_);
q.current.filtered.items.set(I, h_), h_ > 0 && j++;
}
for (let [j, I] of p_.current) for (let Q of I) if (q.current.filtered.items.get(Q) > 0) {
q.current.filtered.groups.add(j);
break;
}
q.current.filtered.count = j;
}
function R_() {
var j;
let I = z_();
I && (I.parentElement?.firstChild === I && ((j = I.closest(N)?.querySelector(be$1)) == null || j.scrollIntoView({ block: "nearest" })), I.scrollIntoView({ block: "nearest" }));
}
function z_() {
return A_.current?.querySelector(`${le}[aria-selected="true"]`);
}
function B_() {
return Array.from(A_.current?.querySelectorAll(ce) || []);
}
function V_(j) {
let I = B_()[j];
I && M_.setState("value", I.getAttribute(T));
}
function H_(j) {
var I;
let q = z_(), Q = B_(), p_ = Q.findIndex((j) => j === q), m_ = Q[p_ + j];
(I = g_.current) != null && I.loop && (m_ = p_ + j < 0 ? Q[Q.length - 1] : p_ + j === Q.length ? Q[0] : Q[p_ + j]), m_ && M_.setState("value", m_.getAttribute(T));
}
function U_(j) {
let I = z_()?.closest(N), q;
for (; I && !q;) I = j > 0 ? we$1(I, N) : De$1(I, N), q = I?.querySelector(ce);
q ? M_.setState("value", q.getAttribute(T)) : H_(j);
}
let W_ = () => V_(B_().length - 1), G_ = (j) => {
j.preventDefault(), j.metaKey ? W_() : j.altKey ? U_(1) : H_(1);
}, K_ = (j) => {
j.preventDefault(), j.metaKey ? V_(0) : j.altKey ? U_(-1) : H_(-1);
};
return React.createElement(Primitive.div, {
ref: I,
tabIndex: -1,
...E_,
"cmdk-root": "",
onKeyDown: (j) => {
var I;
(I = E_.onKeyDown) == null || I.call(E_, j);
let q = j.nativeEvent.isComposing || j.keyCode === 229;
if (!(j.defaultPrevented || q)) switch (j.key) {
case "n":
case "j":
T_ && j.ctrlKey && G_(j);
break;
case "ArrowDown":
G_(j);
break;
case "p":
case "k":
T_ && j.ctrlKey && K_(j);
break;
case "ArrowUp":
K_(j);
break;
case "Home":
j.preventDefault(), V_(0);
break;
case "End":
j.preventDefault(), W_();
break;
case "Enter": {
j.preventDefault();
let I = z_();
if (I) {
let j = new Event(Z);
I.dispatchEvent(j);
}
}
}
}
}, React.createElement("label", {
"cmdk-label": "",
htmlFor: N_.inputId,
id: N_.labelId,
style: Te
}, __), B(j, (j) => React.createElement(de$1.Provider, { value: M_ }, React.createElement(ue.Provider, { value: N_ }, j))));
}), he$1 = React.forwardRef((j, I) => {
let q = useId$1(), Q = React.useRef(null), p_ = React.useContext(fe), m_ = K(), h_ = pe(j), g_ = h_.current?.forceMount ?? p_?.forceMount;
k$1(() => {
if (!g_) return m_.item(q, p_?.id);
}, [g_]);
let __ = ve(q, Q, [
j.value,
j.children,
Q
], j.keywords), v_ = ee(), y_ = P((j) => j.value && j.value === __.current), b_ = P((j) => g_ || m_.filter() === !1 ? !0 : j.search ? j.filtered.items.get(q) > 0 : !0);
React.useEffect(() => {
let I = Q.current;
if (!(!I || j.disabled)) return I.addEventListener(Z, x_), () => I.removeEventListener(Z, x_);
}, [
b_,
j.onSelect,
j.disabled
]);
function x_() {
var j, I;
S_(), (I = (j = h_.current).onSelect) == null || I.call(j, __.current);
}
function S_() {
v_.setState("value", __.current, !0);
}
if (!b_) return null;
let { disabled: C_, value: w_, onSelect: T_, forceMount: E_, keywords: D_,...O_ } = j;
return React.createElement(Primitive.div, {
ref: composeRefs$1(Q, I),
...O_,
id: q,
"cmdk-item": "",
role: "option",
"aria-disabled": !!C_,
"aria-selected": !!y_,
"data-disabled": !!C_,
"data-selected": !!y_,
onPointerMove: C_ || m_.getDisablePointerSelection() ? void 0 : S_,
onClick: C_ ? void 0 : x_
}, j.children);
}), Ee$1 = React.forwardRef((j, I) => {
let { heading: q, children: Q, forceMount: p_,...m_ } = j, h_ = useId$1(), g_ = React.useRef(null), __ = React.useRef(null), v_ = useId$1(), y_ = K(), b_ = P((j) => p_ || y_.filter() === !1 ? !0 : j.search ? j.filtered.groups.has(h_) : !0);
k$1(() => y_.group(h_), []), ve(h_, g_, [
j.value,
j.heading,
__
]);
let x_ = React.useMemo(() => ({
id: h_,
forceMount: p_
}), [p_]);
return React.createElement(Primitive.div, {
ref: composeRefs$1(g_, I),
...m_,
"cmdk-group": "",
role: "presentation",
hidden: b_ ? void 0 : !0
}, q && React.createElement("div", {
ref: __,
"cmdk-group-heading": "",
"aria-hidden": !0,
id: v_
}, q), B(j, (j) => React.createElement("div", {
"cmdk-group-items": "",
role: "group",
"aria-labelledby": q ? v_ : void 0
}, React.createElement(fe.Provider, { value: x_ }, j))));
}), ye = React.forwardRef((j, I) => {
let { alwaysRender: q,...Q } = j, p_ = React.useRef(null), m_ = P((j) => !j.search);
return !q && !m_ ? null : React.createElement(Primitive.div, {
ref: composeRefs$1(p_, I),
...Q,
"cmdk-separator": "",
role: "separator"
});
}), Se = React.forwardRef((j, I) => {
let { onValueChange: q,...Q } = j, p_ = j.value != null, m_ = ee(), h_ = P((j) => j.search), g_ = P((j) => j.selectedItemId), __ = K();
return React.useEffect(() => {
j.value != null && m_.setState("search", j.value);
}, [j.value]), React.createElement(Primitive.input, {
ref: I,
...Q,
"cmdk-input": "",
autoComplete: "off",
autoCorrect: "off",
spellCheck: !1,
"aria-autocomplete": "list",
role: "combobox",
"aria-expanded": !0,
"aria-controls": __.listId,
"aria-labelledby": __.labelId,
"aria-activedescendant": g_,
id: __.inputId,
type: "text",
value: p_ ? j.value : h_,
onChange: (j) => {
p_ || m_.setState("search", j.target.value), q?.(j.target.value);
}
});
}), Ce$1 = React.forwardRef((j, I) => {
let { children: q, label: Q = "Suggestions",...p_ } = j, m_ = React.useRef(null), h_ = React.useRef(null), g_ = P((j) => j.selectedItemId), __ = K();
return React.useEffect(() => {
if (h_.current && m_.current) {
let j = h_.current, I = m_.current, q, Q = new ResizeObserver(() => {
q = requestAnimationFrame(() => {
let q = j.offsetHeight;
I.style.setProperty("--cmdk-list-height", q.toFixed(1) + "px");
});
});
return Q.observe(j), () => {
cancelAnimationFrame(q), Q.unobserve(j);
};
}
}, []), React.createElement(Primitive.div, {
ref: composeRefs$1(m_, I),
...p_,
"cmdk-list": "",
role: "listbox",
tabIndex: -1,
"aria-activedescendant": g_,
"aria-label": Q,
id: __.listId
}, B(j, (j) => React.createElement("div", {
ref: composeRefs$1(h_, __.listInnerRef),
"cmdk-list-sizer": ""
}, j)));
}), xe = React.forwardRef((j, I) => {
let { open: q, onOpenChange: Q, overlayClassName: p_, contentClassName: m_, container: h_,...g_ } = j;
return React.createElement(Root$7, {
open: q,
onOpenChange: Q
}, React.createElement(Portal$4, { container: h_ }, React.createElement(Overlay, {
"cmdk-overlay": "",
className: p_
}), React.createElement(Content$2, {
"aria-label": j.label,
"cmdk-dialog": "",
className: m_
}, React.createElement(me, {
ref: I,
...g_
}))));
}), Ie = React.forwardRef((j, I) => P((j) => j.filtered.count === 0) ? React.createElement(Primitive.div, {
ref: I,
...j,
"cmdk-empty": "",
role: "presentation"
}) : null), Pe = React.forwardRef((j, I) => {
let { progress: q, children: Q, label: p_ = "Loading...",...m_ } = j;
return React.createElement(Primitive.div, {
ref: I,
...m_,
"cmdk-loading": "",
role: "progressbar",
"aria-valuenow": q,
"aria-valuemin": 0,
"aria-valuemax": 100,
"aria-label": p_
}, B(j, (j) => React.createElement("div", { "aria-hidden": !0 }, j)));
}), _e = Object.assign(me, {
List: Ce$1,
Item: he$1,
Input: Se,
Group: Ee$1,
Separator: ye,
Dialog: xe,
Empty: Ie,
Loading: Pe
});
function we$1(j, I) {
let q = j.nextElementSibling;
for (; q;) {
if (q.matches(I)) return q;
q = q.nextElementSibling;
}
}
function De$1(j, I) {
let q = j.previousElementSibling;
for (; q;) {
if (q.matches(I)) return q;
q = q.previousElementSibling;
}
}
function pe(j) {
let I = React.useRef(j);
return k$1(() => {
I.current = j;
}), I;
}
var k$1 = typeof window > "u" ? React.useEffect : React.useLayoutEffect;
function L(j) {
let I = React.useRef();
return I.current === void 0 && (I.current = j()), I;
}
function P(j) {
let I = ee(), q = () => j(I.snapshot());
return React.useSyncExternalStore(I.subscribe, q, q);
}
function ve(j, I, q, Q = []) {
let p_ = React.useRef(), m_ = K();
return k$1(() => {
var h_;
let g_ = (() => {
for (let j of q) {
if (typeof j == "string") return j.trim();
if (typeof j == "object" && "current" in j) return j.current ? j.current.textContent?.trim() : p_.current;
}
})(), __ = Q.map((j) => j.trim());
m_.value(j, g_, __), (h_ = I.current) == null || h_.setAttribute(T, g_), p_.current = g_;
}), p_;
}
var ke$1 = () => {
let [j, I] = React.useState(), q = L(() => /* @__PURE__ */ new Map());
return k$1(() => {
q.current.forEach((j) => j()), q.current = /* @__PURE__ */ new Map();
}, [j]), (j, Q) => {
q.current.set(j, Q), I({});
};
};
function Me$1(j) {
let I = j.type;
return typeof I == "function" ? I(j.props) : "render" in I ? I.render(j.props) : j;
}
function B({ asChild: j, children: I }, q) {
return j && React.isValidElement(I) ? React.cloneElement(Me$1(I), { ref: I.ref }, q(I.props.children)) : q(I);
}
var Te = {
position: "absolute",
width: "1px",
height: "1px",
padding: "0",
margin: "-1px",
overflow: "hidden",
clip: "rect(0, 0, 0, 0)",
whiteSpace: "nowrap",
borderWidth: "0"
};
function Command$1({ className: j,...I }) {
return /* @__PURE__ */ jsx(_e, {
"data-slot": "command",
className: cn("bg-popover text-popover-foreground flex size-full flex-col overflow-hidden rounded-md", j),
...I
});
}
function CommandDialog({ title: j = "Command Palette", description: I = "Search for a command to run...", children: q, className: Q, showCloseButton: p_ = !0,...m_ }) {
return /* @__PURE__ */ jsxs(Dialog, {
...m_,
children: [/* @__PURE__ */ jsxs(DialogHeader, {
className: "sr-only",
children: [/* @__PURE__ */ jsx(DialogTitle, { children: j }), /* @__PURE__ */ jsx(DialogDescription, { children: I })]
}), /* @__PURE__ */ jsx(DialogContent, {
className: cn("overflow-hidden p-0", Q),
showCloseButton: p_,
children: /* @__PURE__ */ jsx(Command$1, {
className: "[&_[cmdk-group-heading]]:text-muted-foreground **:data-[slot=command-input-wrapper]:h-12 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-group]]:px-2 [&_[cmdk-input-wrapper]_svg]:size-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:size-5",
children: q
})
})]
});
}
function CommandInput({ className: j,...I }) {
return /* @__PURE__ */ jsxs("div", {
"data-slot": "command-input-wrapper",
className: "flex h-9 items-center gap-2 border-b px-3",
children: [/* @__PURE__ */ jsx(SearchIcon, { className: "size-4 shrink-0 opacity-50" }), /* @__PURE__ */ jsx(_e.Input, {
"data-slot": "command-input",
className: cn("placeholder:text-muted-foreground outline-hidden flex h-10 w-full rounded-md bg-transparent py-3 text-sm disabled:cursor-not-allowed disabled:opacity-50", j),
...I
})]
});
}
function CommandList({ className: j,...I }) {
return /* @__PURE__ */ jsx(_e.List, {
"data-slot": "command-list",
className: cn("max-h-[300px] scroll-py-1 overflow-y-auto overflow-x-hidden", j),
...I
});
}
function CommandEmpty({ ...j }) {
return /* @__PURE__ */ jsx(_e.Empty, {
"data-slot": "command-empty",
className: "py-6 text-center text-sm",
...j
});
}
function CommandGroup({ className: j,...I }) {
return /* @__PURE__ */ jsx(_e.Group, {
"data-slot": "command-group",
className: cn("text-foreground [&_[cmdk-group-heading]]:text-muted-foreground overflow-hidden p-1 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium", j),
...I
});
}
function CommandSeparator({ className: j,...I }) {
return /* @__PURE__ */ jsx(_e.Separator, {
"data-slot": "command-separator",
className: cn("bg-border -mx-1 h-px", j),
...I
});
}
function CommandItem({ className: j,...I }) {
return /* @__PURE__ */ jsx(_e.Item, {
"data-slot": "command-item",
className: cn("data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground outline-hidden relative flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 [&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0", j),
...I
});
}
function CommandShortcut({ className: j,...I }) {
return /* @__PURE__ */ jsx("span", {
"data-slot": "command-shortcut",
className: cn("text-muted-foreground ml-auto text-xs tracking-widest", j),
...I
});
}
function Command(j) {
let { endpoint: I, openAddCollectionDialog: q, addOperation: Q, runActiveOperation: p_, addTab: m_, setActiveTab: h_, tabs: g_, preflight: __, env: v_, plugins: y_ } = useLaboratory(), b_ = useLaboratory(), [x_, S_] = useState(j.open ?? !1);
return useEffect(() => {
S_(j.open ?? !1);
}, [j.open]), useEffect(() => {
let I = (I) => {
if (I.key === "j" && (I.metaKey || I.ctrlKey)) {
I.preventDefault();
let q = !x_;
S_(q), j.onOpenChange?.(q);
}
};
return document.addEventListener("keydown", I), () => document.removeEventListener("keydown", I);
}, [x_, j]), /* @__PURE__ */ jsx(Fragment$1, { children: /* @__PURE__ */ jsxs(CommandDialog, {
open: x_,
onOpenChange: (I) => {
S_(I), j.onOpenChange?.(I);
},
children: [/* @__PURE__ */ jsx(CommandInput, { placeholder: "Type a command or search..." }), /* @__PURE__ */ jsxs(CommandList, { children: [
/* @__PURE__ */ jsx(CommandEmpty, { children: "No results found." }),
/* @__PURE__ */ jsxs(CommandGroup, {
heading: "Operations",
children: [/* @__PURE__ */ jsxs(CommandItem, {
disabled: !I,
onSelect: () => {
p_(I), S_(!1);
},
children: [
/* @__PURE__ */ jsx(PlayIcon, {}),
/* @__PURE__ */ jsx("span", { children: "Run operation" }),
/* @__PURE__ */ jsx(CommandShortcut, { children: "⌘↵" })
]
}), /* @__PURE__ */ jsxs(CommandItem, {
onSelect: () => {
let j = Q({
name: "",
query: "",
variables: "",
headers: "",
extensions: ""
}), I = m_({
type: "operation",
data: j
});
h_(I), S_(!1);
},
children: [/* @__PURE__ */ jsx(FilePlus2Icon, {}), /* @__PURE__ */ jsx("span", { children: "Add operation" })]
})]
}),
/* @__PURE__ */ jsx(CommandSeparator, {}),
/* @__PURE__ */ jsx(CommandGroup, {
heading: "Collections",
children: /* @__PURE__ */ jsxs(CommandItem, {
onSelect: () => {
q?.(), S_(!1);
},
children: [/* @__PURE__ */ jsx(FolderPlusIcon, {}), /* @__PURE__ */ jsx("span", { children: "Add collection" })]
})
}),
/* @__PURE__ */ jsx(CommandSeparator, {}),
/* @__PURE__ */ jsxs(CommandGroup, {
heading: "Settings",
children: [/* @__PURE__ */ jsxs(CommandItem, {
onSelect: () => {
let j = g_.find((j) => j.type === "env") ?? m_({
type: "env",
data: v_ ?? { variables: {} }
});
h_(j), S_(!1);
},
children: [/* @__PURE__ */ jsx(ServerIcon, {}), /* @__PURE__ */ jsx("span", { children: "Open Environment Variables" })]
}), /* @__PURE__ */ jsxs(CommandItem, {
onSelect: () => {
let j = g_.find((j) => j.type === "preflight") ?? m_({
type: "preflight",
data: __ ?? { script: "" }
});
h_(j), S_(!1);
},
children: [/* @__PURE__ */ jsx(RefreshCcwIcon, {}), /* @__PURE__ */ jsx("span", { children: "Open Preflight Script" })]
})]
}),
y_.filter((j) => !!j.commands?.length).map((j) => /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(CommandSeparator, {}), /* @__PURE__ */ jsx(CommandGroup, {
heading: j.name,
children: j.commands?.map((j, I) => /* @__PURE__ */ jsxs(CommandItem, {
onSelect: () => {
j.onClick(b_, {}), S_(!1);
},
children: [typeof j.icon == "function" ? j.icon(b_, {}) : j.icon, /* @__PURE__ */ jsx("span", { children: typeof j.name == "function" ? j.name(b_, {}) : j.name })]
}, I))
})] }, j.name))
] })]
}) });
}
registerLanguage({
id: "abap",
extensions: [".abap"],
aliases: ["abap", "ABAP"],
loader: () => import("./abap-Blow-wio.js")
}), registerLanguage({
id: "apex",
extensions: [".cls"],
aliases: ["Apex", "apex"],
mimetypes: ["text/x-apex-source", "text/x-apex"],
loader: () => import("./apex-BYf_JRkG.js")
}), registerLanguage({
id: "azcli",
extensions: [".azcli"],
aliases: ["Azure CLI", "azcli"],
loader: () => import("./azcli-Y8Iryvmz.js")
}), registerLanguage({
id: "bat",
extensions: [".bat", ".cmd"],
aliases: ["Batch", "bat"],
loader: () => import("./bat-B7uW-WWG.js")
}), registerLanguage({
id: "bicep",
extensions: [".bicep"],
aliases: ["Bicep"],
loader: () => import("./bicep-Dpaq4BVo.js")
}), registerLanguage({
id: "cameligo",
extensions: [".mligo"],
aliases: ["Cameligo"],
loader: () => import("./cameligo-C_YBjIWF.js")
}), registerLanguage({
id: "clojure",
extensions: [
".clj",
".cljs",
".cljc",
".edn"
],
aliases: ["clojure", "Clojure"],
loader: () => import("./clojure-AkeekAPE.js")
}), registerLanguage({
id: "coffeescript",
extensions: [".coffee"],
aliases: [
"CoffeeScript",
"coffeescript",
"coffee"
],
mimetypes: ["text/x-coffeescript", "text/coffeescript"],
loader: () => import("./coffee-_z_LB7K-.js")
}), registerLanguage({
id: "c",
extensions: [".c", ".h"],
aliases: ["C", "c"],
loader: () => import("./cpp-HtwBLzwY.js")
}), registerLanguage({
id: "cpp",
extensions: [
".cpp",
".cc",
".cxx",
".hpp",
".hh",
".hxx"
],
aliases: [
"C++",
"Cpp",
"cpp"
],
loader: () => import("./cpp-HtwBLzwY.js")
}), registerLanguage({
id: "csharp",
extensions: [
".cs",
".csx",
".cake"
],
aliases: ["C#", "csharp"],
loader: () => import("./csharp-K-4ofc0P.js")
}), registerLanguage({
id: "csp",
extensions: [".csp"],
aliases: ["CSP", "csp"],
loader: () => import("./csp-DaKO7Rgz.js")
}), registerLanguage({
id: "css",
extensions: [".css"],
aliases: ["CSS", "css"],
mimetypes: ["text/css"],
loader: () => import("./css-CYE4QtFf.js")
}), registerLanguage({
id: "cypher",
extensions: [".cypher", ".cyp"],
aliases: ["Cypher", "OpenCypher"],
loader: () => import("./cypher-DVYCC2h8.js")
}), registerLanguage({
id: "dart",
extensions: [".dart"],
aliases: ["Dart", "dart"],
mimetypes: ["text/x-dart-source", "text/x-dart"],
loader: () => import("./dart-q_4g8qmg.js")
}), registerLanguage({
id: "dockerfile",
extensions: [".dockerfile"],
filenames: ["Dockerfile"],
aliases: ["Dockerfile"],
loader: () => import("./dockerfile-BU7xw4eN.js")
}), registerLanguage({
id: "ecl",
extensions: [".ecl"],
aliases: [
"ECL",
"Ecl",
"ecl"
],
loader: () => import("./ecl-BR8iEelW.js")
}), registerLanguage({
id: "elixir",
extensions: [".ex", ".exs"],
aliases: [
"Elixir",
"elixir",
"ex"
],
loader: () => import("./elixir-B2OgRT4A.js")
}), registerLanguage({
id: "flow9",
extensions: [".flow"],
aliases: [
"Flow9",
"Flow",
"flow9",
"flow"
],
loader: () => import("./flow9-C00JQKOs.js")
}), registerLanguage({
id: "fsharp",
extensions: [
".fs",
".fsi",
".ml",
".mli",
".fsx",
".fsscript"
],
aliases: [
"F#",
"FSharp",
"fsharp"
],
loader: () => import("./fsharp-BgjL1RH4.js")
}), registerLanguage({
id: "freemarker2",
extensions: [
".ftl",
".ftlh",
".ftlx"
],
aliases: ["FreeMarker2", "Apache FreeMarker2"],
loader: () => import("./freemarker2-Bl-UoQjv.js").then((j) => j.TagAutoInterpolationDollar)
}), registerLanguage({
id: "freemarker2.tag-angle.interpolation-dollar",
aliases: ["FreeMarker2 (Angle/Dollar)", "Apache FreeMarker2 (Angle/Dollar)"],
loader: () => import("./freemarker2-Bl-UoQjv.js").then((j) => j.TagAngleInterpolationDollar)
}), registerLanguage({
id: "freemarker2.tag-bracket.interpolation-dollar",
aliases: ["FreeMarker2 (Bracket/Dollar)", "Apache FreeMarker2 (Bracket/Dollar)"],
loader: () => import("./freemarker2-Bl-UoQjv.js").then((j) => j.TagBracketInterpolationDollar)
}), registerLanguage({
id: "freemarker2.tag-angle.interpolation-bracket",
aliases: ["FreeMarker2 (Angle/Bracket)", "Apache FreeMarker2 (Angle/Bracket)"],
loader: () => import("./freemarker2-Bl-UoQjv.js").then((j) => j.TagAngleInterpolationBracket)
}), registerLanguage({
id: "freemarker2.tag-bracket.interpolation-bracket",
aliases: ["FreeMarker2 (Bracket/Bracket)", "Apache FreeMarker2 (Bracket/Bracket)"],
loader: () => import("./freemarker2-Bl-UoQjv.js").then((j) => j.TagBracketInterpolationBracket)
}), registerLanguage({
id: "freemarker2.tag-auto.interpolation-dollar",
aliases: ["FreeMarker2 (Auto/Dollar)", "Apache FreeMarker2 (Auto/Dollar)"],
loader: () => import("./freemarker2-Bl-UoQjv.js").then((j) => j.TagAutoInterpolationDollar)
}), registerLanguage({
id: "freemarker2.tag-auto.interpolation-bracket",
aliases: ["FreeMarker2 (Auto/Bracket)", "Apache FreeMarker2 (Auto/Bracket)"],
loader: () => import("./freemarker2-Bl-UoQjv.js").then((j) => j.TagAutoInterpolationBracket)
}), registerLanguage({
id: "go",
extensions: [".go"],
aliases: ["Go"],
loader: () => import("./go-BHi9UCF_.js")
}), registerLanguage({
id: "handlebars",
extensions: [".handlebars", ".hbs"],
aliases: [
"Handlebars",
"handlebars",
"hbs"
],
mimetypes: ["text/x-handlebars-template"],
loader: () => import("./handlebars-DXvuueHB.js")
}), registerLanguage({
id: "hcl",
extensions: [
".tf",
".tfvars",
".hcl"
],
aliases: [
"Terraform",
"tf",
"HCL",
"hcl"
],
loader: () => import("./hcl-Dw0RM3rS.js")
}), registerLanguage({
id: "html",
extensions: [
".html",
".htm",
".shtml",
".xhtml",
".mdoc",
".jsp",
".asp",
".aspx",
".jshtm"
],
aliases: [
"HTML",
"htm",
"html",
"xhtml"
],
mimetypes: [
"text/html",
"text/x-jshtm",
"text/template",
"text/ng-template"
],
loader: () => import("./html-cN1WMeYF.js")
}), registerLanguage({
id: "ini",
extensions: [
".ini",
".properties",
".gitconfig"
],
filenames: [
"config",
".gitattributes",
".gitconfig",
".editorconfig"
],
aliases: ["Ini", "ini"],
loader: () => import("./ini-mSzu__fH.js")
}), registerLanguage({
id: "java",
extensions: [".java", ".jav"],
aliases: ["Java", "java"],
mimetypes: ["text/x-java-source", "text/x-java"],
loader: () => import("./java-C7boSOt1.js")
}), registerLanguage({
id: "javascript",
extensions: [
".js",
".es6",
".jsx",
".mjs",
".cjs"
],
firstLine: "^#!.*\\bnode",
filenames: ["jakefile"],
aliases: [
"JavaScript",
"javascript",
"js"
],
mimetypes: ["text/javascript"],
loader: () => import("./javascript-CRIfyw9_.js")
}), registerLanguage({
id: "julia",
extensions: [".jl"],
aliases: ["julia", "Julia"],
loader: () => import("./julia-B_zpvU_H.js")
}), registerLanguage({
id: "kotlin",
extensions: [".kt", ".kts"],
aliases: ["Kotlin", "kotlin"],
mimetypes: ["text/x-kotlin-source", "text/x-kotlin"],
loader: () => import("./kotlin-DLpTU5jW.js")
}), registerLanguage({
id: "less",
extensions: [".less"],
aliases: ["Less", "less"],
mimetypes: ["text/x-less", "text/less"],
loader: () => import("./less-BQ1QMJed.js")
}), registerLanguage({
id: "lexon",
extensions: [".lex"],
aliases: ["Lexon"],
loader: () => import("./lexon-60-H09CD.js")
}), registerLanguage({
id: "lua",
extensions: [".lua"],
aliases: ["Lua", "lua"],
loader: () => import("./lua-BGYYZxwF.js")
}), registerLanguage({
id: "liquid",
extensions: [".liquid", ".html.liquid"],
aliases: ["Liquid", "liquid"],
mimetypes: ["application/liquid"],
loader: () => import("./liquid-BlU50gX7.js")
}), registerLanguage({
id: "m3",
extensions: [
".m3",
".i3",
".mg",
".ig"
],
aliases: [
"Modula-3",
"Modula3",
"modula3",
"m3"
],
loader: () => import("./m3-Bi73MTjg.js")
}), registerLanguage({
id: "markdown",
extensions: [
".md",
".markdown",
".mdown",
".mkdn",
".mkd",
".mdwn",
".mdtxt",
".mdtext"
],
aliases: ["Markdown", "markdown"],
loader: () => import("./markdown-D7FHDoKM.js")
}), registerLanguage({
id: "mdx",
extensions: [".mdx"],
aliases: ["MDX", "mdx"],
loader: () => import("./mdx-D8NqdP_w.js")
}), registerLanguage({
id: "mips",
extensions: [".s"],
aliases: ["MIPS", "MIPS-V"],
mimetypes: [
"text/x-mips",
"text/mips",
"text/plaintext"
],
loader: () => import("./mips-DL-M6daJ.js")
}), registerLanguage({
id: "msdax",
extensions: [".dax", ".msdax"],
aliases: ["DAX", "MSDAX"],
loader: () => import("./msdax-BfAL0NiP.js")
}), registerLanguage({
id: "mysql",
extensions: [],
aliases: ["MySQL", "mysql"],
loader: () => import("./mysql-afzB9Z08.js")
}), registerLanguage({
id: "objective-c",
extensions: [".m"],
aliases: ["Objective-C"],
loader: () => import("./objective-c-qqhfQPCm.js")
}), registerLanguage({
id: "pascal",
extensions: [
".pas",
".p",
".pp"
],
aliases: ["Pascal", "pas"],
mimetypes: ["text/x-pascal-source", "text/x-pascal"],
loader: () => import("./pascal-BiHx6cUn.js")
}), registerLanguage({
id: "pascaligo",
extensions: [".ligo"],
aliases: ["Pascaligo", "ligo"],
loader: () => import("./pascaligo-Bx9CUesZ.js")
}), registerLanguage({
id: "perl",
extensions: [".pl", ".pm"],
aliases: ["Perl", "pl"],
loader: () => import("./perl-Dv-iVIkY.js")
}), registerLanguage({
id: "pgsql",
extensions: [],
aliases: [
"PostgreSQL",
"postgres",
"pg",
"postgre"
],
loader: () => import("./pgsql-C-6LU2PR.js")
}), registerLanguage({
id: "php",
extensions: [
".php",
".php4",
".php5",
".phtml",
".ctp"
],
aliases: ["PHP", "php"],
mimetypes: ["application/x-php"],
loader: () => import("./php-rClOArta.js")
}), registerLanguage({
id: "pla",
extensions: [".pla"],
loader: () => import("./pla-CGWeh8Pz.js")
}), registerLanguage({
id: "postiats",
extensions: [
".dats",
".sats",
".hats"
],
aliases: ["ATS", "ATS/Postiats"],
loader: () => import("./postiats-DVrCA24o.js")
}), registerLanguage({
id: "powerquery",
extensions: [".pq", ".pqm"],
aliases: [
"PQ",
"M",
"Power Query",
"Power Query M"
],
loader: () => import("./powerquery-BVNiAP3y.js")
}), registerLanguage({
id: "powershell",
extensions: [
".ps1",
".psm1",
".psd1"
],
aliases: [
"PowerShell",
"powershell",
"ps",
"ps1"
],
loader: () => import("./powershell-CnnnHgbw.js")
}), registerLanguage({
id: "proto",
extensions: [".proto"],
aliases: ["protobuf", "Protocol Buffers"],
loader: () => import("./protobuf-LrboCqQw.js")
}), registerLanguage({
id: "pug",
extensions: [".jade", ".pug"],
aliases: [
"Pug",
"Jade",
"jade"
],
loader: () => import("./pug-Dh1tQQTR.js")
}), registerLanguage({
id: "python",
extensions: [
".py",
".rpy",
".pyw",
".cpy",
".gyp",
".gypi"
],
aliases: ["Python", "py"],
firstLine: "^#!/.*\\bpython[0-9.-]*\\b",
loader: () => import("./python-CvI08Xv3.js")
}), registerLanguage({
id: "qsharp",
extensions: [".qs"],
aliases: ["Q#", "qsharp"],
loader: () => import("./qsharp-BVCNm8gl.js")
}), registerLanguage({
id: "r",
extensions: [
".r",
".rhistory",
".rmd",
".rprofile",
".rt"
],
aliases: ["R", "r"],
loader: () => import("./r-8JcHznkE.js")
}), registerLanguage({
id: "razor",
extensions: [".cshtml"],
aliases: ["Razor", "razor"],
mimetypes: ["text/x-cshtml"],
loader: () => import("./razor-Dihz6rre.js")
}), registerLanguage({
id: "redis",
extensions: [".redis"],
aliases: ["redis"],
loader: () => import("./redis-qtomFnyh.js")
}), registerLanguage({
id: "redshift",
extensions: [],
aliases: ["Redshift", "redshift"],
loader: () => import("./redshift-BHv7eDOD.js")
}), registerLanguage({
id: "restructuredtext",
extensions: [".rst"],
aliases: ["reStructuredText", "restructuredtext"],
loader: () => import("./restructuredtext-BS-C3c5D.js")
}), registerLanguage({
id: "ruby",
extensions: [
".rb",
".rbx",
".rjs",
".gemspec",
".pp"
],
filenames: ["rakefile", "Gemfile"],
aliases: ["Ruby", "rb"],
loader: () => import("./ruby-52YUg_Ol.js")
}), registerLanguage({
id: "rust",
extensions: [".rs", ".rlib"],
aliases: ["Rust", "rust"],
loader: () => import("./rust-CV21LUVt.js")
}), registerLanguage({
id: "sb",
extensions: [".sb"],
aliases: ["Small Basic", "sb"],
loader: () => import("./sb-CuQMlHBA.js")
}), registerLanguage({
id: "scala",
extensions: [
".scala",
".sc",
".sbt"
],
aliases: [
"Scala",
"scala",
"SBT",
"Sbt",
"sbt",
"Dotty",
"dotty"
],
mimetypes: [
"text/x-scala-source",
"text/x-scala",
"text/x-sbt",
"text/x-dotty"
],
loader: () => import("./scala-Cs8dc70t.js")
}), registerLanguage({
id: "scheme",
extensions: [
".scm",
".ss",
".sch",
".rkt"
],
aliases: ["scheme", "Scheme"],
loader: () => import("./scheme-CC08dajv.js")
}), registerLanguage({
id: "scss",
extensions: [".scss"],
aliases: [
"Sass",
"sass",
"scss"
],
mimetypes: ["text/x-scss", "text/scss"],
loader: () => import("./scss-DZAhnzoz.js")
}), registerLanguage({
id: "shell",
extensions: [".sh", ".bash"],
aliases: ["Shell", "sh"],
loader: () => import("./shell-BV3gMUeN.js")
}), registerLanguage({
id: "sol",
extensions: [".sol"],
aliases: [
"sol",
"solidity",
"Solidity"
],
loader: () => import("./solidity-BbL9KL7g.js")
}), registerLanguage({
id: "aes",
extensions: [".aes"],
aliases: [
"aes",
"sophia",
"Sophia"
],
loader: () => import("./sophia-CbBkAwOP.js")
}), registerLanguage({
id: "sparql",
extensions: [".rq"],
aliases: ["sparql", "SPARQL"],
loader: () => import("./sparql-C7Y1qHIo.js")
}), registerLanguage({
id: "sql",
extensions: [".sql"],
aliases: ["SQL"],
loader: () => import("./sql-D0XZ8IcC.js")
}), registerLanguage({
id: "st",
extensions: [
".st",
".iecst",
".iecplc",
".lc3lib",
".TcPOU",
".TcDUT",
".TcGVL",
".TcIO"
],
aliases: [
"StructuredText",
"scl",
"stl"
],
loader: () => import("./st-B67PwWwf.js")
}), registerLanguage({
id: "swift",
aliases: ["Swift", "swift"],
extensions: [".swift"],
mimetypes: ["text/swift"],
loader: () => import("./swift-CRmSPMf8.js")
}), registerLanguage({
id: "systemverilog",
extensions: [".sv", ".svh"],
aliases: [
"SV",
"sv",
"SystemVerilog",
"systemverilog"
],
loader: () => import("./systemverilog-BpoPxVcJ.js")
}), registerLanguage({
id: "verilog",
extensions: [".v", ".vh"],
aliases: [
"V",
"v",
"Verilog",
"verilog"
],
loader: () => import("./systemverilog-BpoPxVcJ.js")
}), registerLanguage({
id: "tcl",
extensions: [".tcl"],
aliases: [
"tcl",
"Tcl",
"tcltk",
"TclTk",
"tcl/tk",
"Tcl/Tk"
],
loader: () => import("./tcl-BKbFyvVc.js")
}), registerLanguage({
id: "twig",
extensions: [".twig"],
aliases: ["Twig", "twig"],
mimetypes: ["text/x-twig"],
loader: () => import("./twig-DKIp5FLj.js")
}), registerLanguage({
id: "typescript",
extensions: [
".ts",
".tsx",
".cts",
".mts"
],
aliases: [
"TypeScript",
"ts",
"typescript"
],
mimetypes: ["text/typescript"],
loader: () => import("./typescript-CblrNixe.js")
}), registerLanguage({
id: "typespec",
extensions: [".tsp"],
aliases: ["TypeSpec"],
loader: () => import("./typespec-CuK-Jj3B.js")
}), registerLanguage({
id: "vb",
extensions: [".vb"],
aliases: ["Visual Basic", "vb"],
loader: () => import("./vb-HIG7rbHd.js")
}), registerLanguage({
id: "wgsl",
extensions: [".wgsl"],
aliases: [
"WebGPU Shading Language",
"WGSL",
"wgsl"
],
loader: () => import("./wgsl-rkQq9nnS.js")
}), registerLanguage({
id: "xml",
extensions: [
".xml",
".xsd",
".dtd",
".ascx",
".csproj",
".config",
".props",
".targets",
".wxi",
".wxl",
".wxs",
".xaml",
".svg",
".svgz",
".opf",
".xslt",
".xsl"
],
firstLine: "(\\<\\?xml.*)|(\\<svg)|(\\<\\!doctype\\s+svg)",
aliases: ["XML", "xml"],
mimetypes: [
"text/xml",
"application/xml",
"application/xaml+xml",
"application/xml-dtd"
],
loader: () => import("./xml-D1JwasIP.js")
}), registerLanguage({
id: "yaml",
extensions: [".yaml", ".yml"],
aliases: [
"YAML",
"yaml",
"YML",
"yml"
],
mimetypes: ["application/x-yaml", "text/x-yaml"],
loader: () => import("./yaml-Be2cXYRM.js")
});
/*!-----------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Version: 0.52.2(404545bded1df6ffa41ea0af4e8ddb219018c6c1)
* Released under the MIT license
* https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt
*-----------------------------------------------------------------------------*/
var __defProp$1 = Object.defineProperty, __getOwnPropDesc$1 = Object.getOwnPropertyDescriptor, __getOwnPropNames$1 = Object.getOwnPropertyNames, __hasOwnProp$1 = Object.prototype.hasOwnProperty, __copyProps$1 = (j, I, q, Q) => {
if (I && typeof I == "object" || typeof I == "function") for (let p_ of __getOwnPropNames$1(I)) !__hasOwnProp$1.call(j, p_) && p_ !== q && __defProp$1(j, p_, {
get: () => I[p_],
enumerable: !(Q = __getOwnPropDesc$1(I, p_)) || Q.enumerable
});
return j;
}, __reExport$1 = (j, I, q) => (__copyProps$1(j, I, "default"), q && __copyProps$1(q, I, "default")), monaco_editor_core_exports$1 = {};
__reExport$1(monaco_editor_core_exports$1, editor_api_exports);
var LanguageServiceDefaultsImpl$1 = class {
constructor(j, I, q) {
this._onDidChange = new monaco_editor_core_exports$1.Emitter(), this._languageId = j, this.setOptions(I), this.setModeConfiguration(q);
}
get onDidChange() {
return this._onDidChange.event;
}
get languageId() {
return this._languageId;
}
get modeConfiguration() {
return this._modeConfiguration;
}
get diagnosticsOptions() {
return this.options;
}
get options() {
return this._options;
}
setOptions(j) {
this._options = j || /* @__PURE__ */ Object.create(null), this._onDidChange.fire(this);
}
setDiagnosticsOptions(j) {
this.setOptions(j);
}
setModeConfiguration(j) {
this._modeConfiguration = j || /* @__PURE__ */ Object.create(null), this._onDidChange.fire(this);
}
}, optionsDefault$1 = {
validate: !0,
lint: {
compatibleVendorPrefixes: "ignore",
vendorPrefix: "warning",
duplicateProperties: "warning",
emptyRules: "warning",
importStatement: "ignore",
boxModel: "ignore",
universalSelector: "ignore",
zeroUnits: "ignore",
fontFaceProperties: "warning",
hexColorLength: "error",
argumentsInColorFunction: "error",
unknownProperties: "warning",
ieHack: "ignore",
unknownVendorSpecificProperties: "ignore",
propertyIgnoredDueToDisplay: "warning",
important: "ignore",
float: "ignore",
idSelector: "ignore"
},
data: { useDefaultDataProvider: !0 },
format: {
newlineBetweenSelectors: !0,
newlineBetweenRules: !0,
spaceAroundSelectorSeparator: !1,
braceStyle: "collapse",
maxPreserveNewLines: void 0,
preserveNewLines: !0
}
}, modeConfigurationDefault$1 = {
completionItems: !0,
hovers: !0,
documentSymbols: !0,
definitions: !0,
references: !0,
documentHighlights: !0,
rename: !0,
colors: !0,
foldingRanges: !0,
diagnostics: !0,
selectionRanges: !0,
documentFormattingEdits: !0,
documentRangeFormattingEdits: !0
}, cssDefaults = new LanguageServiceDefaultsImpl$1("css", optionsDefault$1, modeConfigurationDefault$1), scssDefaults = new LanguageServiceDefaultsImpl$1("scss", optionsDefault$1, modeConfigurationDefault$1), lessDefaults = new LanguageServiceDefaultsImpl$1("less", optionsDefault$1, modeConfigurationDefault$1);
monaco_editor_core_exports$1.languages.css = {
cssDefaults,
lessDefaults,
scssDefaults
};
function getMode$2() {
return import("./cssMode-CAMV087D.js");
}
monaco_editor_core_exports$1.languages.onLanguage("less", () => {
getMode$2().then((j) => j.setupMode(lessDefaults));
}), monaco_editor_core_exports$1.languages.onLanguage("scss", () => {
getMode$2().then((j) => j.setupMode(scssDefaults));
}), monaco_editor_core_exports$1.languages.onLanguage("css", () => {
getMode$2().then((j) => j.setupMode(cssDefaults));
});
/*!-----------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Version: 0.52.2(404545bded1df6ffa41ea0af4e8ddb219018c6c1)
* Released under the MIT license
* https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt
*-----------------------------------------------------------------------------*/
var __defProp = Object.defineProperty, __getOwnPropDesc = Object.getOwnPropertyDescriptor, __getOwnPropNames = Object.getOwnPropertyNames, __hasOwnProp = Object.prototype.hasOwnProperty, __copyProps = (j, I, q, Q) => {
if (I && typeof I == "object" || typeof I == "function") for (let p_ of __getOwnPropNames(I)) !__hasOwnProp.call(j, p_) && p_ !== q && __defProp(j, p_, {
get: () => I[p_],
enumerable: !(Q = __getOwnPropDesc(I, p_)) || Q.enumerable
});
return j;
}, __reExport = (j, I, q) => (__copyProps(j, I, "default"), q && __copyProps(q, I, "default")), monaco_editor_core_exports = {};
__reExport(monaco_editor_core_exports, editor_api_exports);
var LanguageServiceDefaultsImpl = class {
constructor(j, I, q) {
this._onDidChange = new monaco_editor_core_exports.Emitter(), this._languageId = j, this.setOptions(I), this.setModeConfiguration(q);
}
get onDidChange() {
return this._onDidChange.event;
}
get languageId() {
return this._languageId;
}
get options() {
return this._options;
}
get modeConfiguration() {
return this._modeConfiguration;
}
setOptions(j) {
this._options = j || /* @__PURE__ */ Object.create(null), this._onDidChange.fire(this);
}
setModeConfiguration(j) {
this._modeConfiguration = j || /* @__PURE__ */ Object.create(null), this._onDidChange.fire(this);
}
}, optionsDefault = {
format: {
tabSize: 4,
insertSpaces: !1,
wrapLineLength: 120,
unformatted: "default\": \"a, abbr, acronym, b, bdo, big, br, button, cite, code, dfn, em, i, img, input, kbd, label, map, object, q, samp, select, small, span, strong, sub, sup, textarea, tt, var",
contentUnformatted: "pre",
indentInnerHtml: !1,
preserveNewLines: !0,
maxPreserveNewLines: void 0,
indentHandlebars: !1,
endWithNewline: !1,
extraLiners: "head, body, /html",
wrapAttributes: "auto"
},
suggest: {},
data: { useDefaultDataProvider: !0 }
};
function getConfigurationDefault(j) {
return {
completionItems: !0,
hovers: !0,
documentSymbols: !0,
links: !0,
documentHighlights: !0,
rename: !0,
colors: !0,
foldingRanges: !0,
selectionRanges: !0,
diagnostics: j === htmlLanguageId,
documentFormattingEdits: j === htmlLanguageId,
documentRangeFormattingEdits: j === htmlLanguageId
};
}
var htmlLanguageId = "html", handlebarsLanguageId = "handlebars", razorLanguageId = "razor", htmlLanguageService = registerHTMLLanguageService(htmlLanguageId, optionsDefault, getConfigurationDefault(htmlLanguageId)), htmlDefaults = htmlLanguageService.defaults, handlebarLanguageService = registerHTMLLanguageService(handlebarsLanguageId, optionsDefault, getConfigurationDefault(handlebarsLanguageId)), handlebarDefaults = handlebarLanguageService.defaults, razorLanguageService = registerHTMLLanguageService(razorLanguageId, optionsDefault, getConfigurationDefault(razorLanguageId)), razorDefaults = razorLanguageService.defaults;
monaco_editor_core_exports.languages.html = {
htmlDefaults,
razorDefaults,
handlebarDefaults,
htmlLanguageService,
handlebarLanguageService,
razorLanguageService,
registerHTMLLanguageService
};
function getMode$1() {
return import("./htmlMode-CY9ALOyk.js");
}
function registerHTMLLanguageService(j, I = optionsDefault, q = getConfigurationDefault(j)) {
let Q = new LanguageServiceDefaultsImpl(j, I, q), p_, m_ = monaco_editor_core_exports.languages.onLanguage(j, async () => {
p_ = (await getMode$1()).setupMode(Q);
});
return {
defaults: Q,
dispose() {
m_.dispose(), p_?.dispose(), p_ = void 0;
}
};
}
var editor_main_exports = /* @__PURE__ */ __export({
CancellationTokenSource: () => CancellationTokenSource,
Emitter: () => Emitter,
KeyCode: () => KeyCode,
KeyMod: () => KeyMod,
MarkerSeverity: () => MarkerSeverity,
MarkerTag: () => MarkerTag,
Position: () => Position,
Range: () => Range,
Selection: () => Selection,
SelectionDirection: () => SelectionDirection,
Token: () => Token,
Uri: () => Uri,
editor: () => editor,
languages: () => languages
}), MonacoGraphQLAPI = class {
_onDidChange = new Emitter();
_formattingOptions;
_modeConfiguration;
_diagnosticSettings;
_completionSettings;
_schemas = null;
_schemasById = Object.create(null);
_languageId;
_externalFragmentDefinitions;
constructor({ languageId: j, schemas: I, modeConfiguration: q, formattingOptions: Q, diagnosticSettings: p_, completionSettings: m_ }) {
this._languageId = j, I && this.setSchemaConfig(I), this._modeConfiguration = q, this._completionSettings = m_, this._diagnosticSettings = p_, this._formattingOptions = Q;
}
get onDidChange() {
return this._onDidChange.event;
}
get languageId() {
return this._languageId;
}
get modeConfiguration() {
return this._modeConfiguration;
}
get schemas() {
return this._schemas;
}
schemasById() {
return this._schemasById;
}
get formattingOptions() {
return this._formattingOptions;
}
get diagnosticSettings() {
return this._diagnosticSettings;
}
get completionSettings() {
return {
...this._completionSettings,
fillLeafsOnComplete: this._completionSettings.__experimental__fillLeafsOnComplete ?? this._completionSettings.fillLeafsOnComplete
};
}
get externalFragmentDefinitions() {
return this._externalFragmentDefinitions;
}
setSchemaConfig(j) {
this._schemas = j, this._schemasById = j.reduce((j, I) => (j[I.uri] = I, j), Object.create(null)), this._onDidChange.fire(this);
}
setExternalFragmentDefinitions(j) {
this._externalFragmentDefinitions = j;
}
setModeConfiguration(j) {
this._modeConfiguration = j, this._onDidChange.fire(this);
}
setFormattingOptions(j) {
this._formattingOptions = j, this._onDidChange.fire(this);
}
setDiagnosticSettings(j) {
this._diagnosticSettings = j, this._onDidChange.fire(this);
}
setCompletionSettings(j) {
this._completionSettings = j, this._onDidChange.fire(this);
}
};
function create$1(j, I) {
if (!I) return new MonacoGraphQLAPI({
languageId: j,
schemas: [],
formattingOptions: formattingDefaults,
modeConfiguration: modeConfigurationDefault,
diagnosticSettings: diagnosticSettingDefault,
completionSettings: completionSettingDefault
});
let { schemas: q, formattingOptions: Q, modeConfiguration: p_, diagnosticSettings: m_, completionSettings: h_ } = I;
return new MonacoGraphQLAPI({
languageId: j,
schemas: q,
formattingOptions: {
...formattingDefaults,
...Q,
prettierConfig: {
...formattingDefaults.prettierConfig,
...Q?.prettierConfig
}
},
modeConfiguration: {
...modeConfigurationDefault,
...p_
},
diagnosticSettings: {
...diagnosticSettingDefault,
...m_
},
completionSettings: {
...completionSettingDefault,
...h_
}
});
}
const modeConfigurationDefault = {
documentFormattingEdits: !0,
documentRangeFormattingEdits: !1,
completionItems: !0,
hovers: !0,
documentSymbols: !1,
tokens: !1,
colors: !1,
foldingRanges: !1,
diagnostics: !0,
selectionRanges: !1
}, formattingDefaults = { prettierConfig: { tabWidth: 2 } }, diagnosticSettingDefault = { jsonDiagnosticSettings: { schemaValidation: "error" } }, completionSettingDefault = { __experimental__fillLeafsOnComplete: !1 };
var api;
function initializeMode(j) {
return api || (api = create$1("graphql", j), languages.graphql = { api }, getMode().then((j) => j.setupMode(api))), api;
}
function getMode() {
return import("./graphqlMode-D3qt77Ss.js");
}
function _arrayLikeToArray(j, I) {
(I == null || I > j.length) && (I = j.length);
for (var q = 0, Q = Array(I); q < I; q++) Q[q] = j[q];
return Q;
}
function _arrayWithHoles(j) {
if (Array.isArray(j)) return j;
}
function _defineProperty$1(j, I, q) {
return (I = _toPropertyKey(I)) in j ? Object.defineProperty(j, I, {
value: q,
enumerable: !0,
configurable: !0,
writable: !0
}) : j[I] = q, j;
}
function _iterableToArrayLimit(j, I) {
var q = j == null ? null : typeof Symbol < "u" && j[Symbol.iterator] || j["@@iterator"];
if (q != null) {
var Q, p_, m_, h_, g_ = [], __ = !0, v_ = !1;
try {
if (m_ = (q = q.call(j)).next, I !== 0) for (; !(__ = (Q = m_.call(q)).done) && (g_.push(Q.value), g_.length !== I); __ = !0);
} catch (j) {
v_ = !0, p_ = j;
} finally {
try {
if (!__ && q.return != null && (h_ = q.return(), Object(h_) !== h_)) return;
} finally {
if (v_) throw p_;
}
}
return g_;
}
}
function _nonIterableRest() {
throw TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
}
function ownKeys$1(j, I) {
var q = Object.keys(j);
if (Object.getOwnPropertySymbols) {
var Q = Object.getOwnPropertySymbols(j);
I && (Q = Q.filter(function(I) {
return Object.getOwnPropertyDescriptor(j, I).enumerable;
})), q.push.apply(q, Q);
}
return q;
}
function _objectSpread2(j) {
for (var I = 1; I < arguments.length; I++) {
var q = arguments[I] == null ? {} : arguments[I];
I % 2 ? ownKeys$1(Object(q), !0).forEach(function(I) {
_defineProperty$1(j, I, q[I]);
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(j, Object.getOwnPropertyDescriptors(q)) : ownKeys$1(Object(q)).forEach(function(I) {
Object.defineProperty(j, I, Object.getOwnPropertyDescriptor(q, I));
});
}
return j;
}
function _objectWithoutProperties(j, I) {
if (j == null) return {};
var q, Q, p_ = _objectWithoutPropertiesLoose(j, I);
if (Object.getOwnPropertySymbols) {
var m_ = Object.getOwnPropertySymbols(j);
for (Q = 0; Q < m_.length; Q++) q = m_[Q], I.indexOf(q) === -1 && {}.propertyIsEnumerable.call(j, q) && (p_[q] = j[q]);
}
return p_;
}
function _objectWithoutPropertiesLoose(j, I) {
if (j == null) return {};
var q = {};
for (var Q in j) if ({}.hasOwnProperty.call(j, Q)) {
if (I.indexOf(Q) !== -1) continue;
q[Q] = j[Q];
}
return q;
}
function _slicedToArray(j, I) {
return _arrayWithHoles(j) || _iterableToArrayLimit(j, I) || _unsupportedIterableToArray(j, I) || _nonIterableRest();
}
function _toPrimitive(j, I) {
if (typeof j != "object" || !j) return j;
var q = j[Symbol.toPrimitive];
if (q !== void 0) {
var Q = q.call(j, I);
if (typeof Q != "object") return Q;
throw TypeError("@@toPrimitive must return a primitive value.");
}
return (I === "string" ? String : Number)(j);
}
function _toPropertyKey(j) {
var I = _toPrimitive(j, "string");
return typeof I == "symbol" ? I : I + "";
}
function _unsupportedIterableToArray(j, I) {
if (j) {
if (typeof j == "string") return _arrayLikeToArray(j, I);
var q = {}.toString.call(j).slice(8, -1);
return q === "Object" && j.constructor && (q = j.constructor.name), q === "Map" || q === "Set" ? Array.from(j) : q === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(q) ? _arrayLikeToArray(j, I) : void 0;
}
}
function _defineProperty(j, I, q) {
return I in j ? Object.defineProperty(j, I, {
value: q,
enumerable: !0,
configurable: !0,
writable: !0
}) : j[I] = q, j;
}
function ownKeys(j, I) {
var q = Object.keys(j);
if (Object.getOwnPropertySymbols) {
var Q = Object.getOwnPropertySymbols(j);
I && (Q = Q.filter(function(I) {
return Object.getOwnPropertyDescriptor(j, I).enumerable;
})), q.push.apply(q, Q);
}
return q;
}
function _objectSpread2$1(j) {
for (var I = 1; I < arguments.length; I++) {
var q = arguments[I] == null ? {} : arguments[I];
I % 2 ? ownKeys(Object(q), !0).forEach(function(I) {
_defineProperty(j, I, q[I]);
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(j, Object.getOwnPropertyDescriptors(q)) : ownKeys(Object(q)).forEach(function(I) {
Object.defineProperty(j, I, Object.getOwnPropertyDescriptor(q, I));
});
}
return j;
}
function compose$1() {
var j = [...arguments];
return function(I) {
return j.reduceRight(function(j, I) {
return I(j);
}, I);
};
}
function curry$1(j) {
return function I() {
var q = this, Q = [...arguments];
return Q.length >= j.length ? j.apply(this, Q) : function() {
var j = [...arguments];
return I.apply(q, [].concat(Q, j));
};
};
}
function isObject$1(j) {
return {}.toString.call(j).includes("Object");
}
function isEmpty(j) {
return !Object.keys(j).length;
}
function isFunction$1(j) {
return typeof j == "function";
}
function hasOwnProperty(j, I) {
return Object.prototype.hasOwnProperty.call(j, I);
}
function validateChanges(j, I) {
return isObject$1(I) || errorHandler$1("changeType"), Object.keys(I).some(function(I) {
return !hasOwnProperty(j, I);
}) && errorHandler$1("changeField"), I;
}
function validateSelector(j) {
isFunction$1(j) || errorHandler$1("selectorType");
}
function validateHandler(j) {
isFunction$1(j) || isObject$1(j) || errorHandler$1("handlerType"), isObject$1(j) && Object.values(j).some(function(j) {
return !isFunction$1(j);
}) && errorHandler$1("handlersType");
}
function validateInitial(j) {
j || errorHandler$1("initialIsRequired"), isObject$1(j) || errorHandler$1("initialType"), isEmpty(j) && errorHandler$1("initialContent");
}
function throwError$1(j, I) {
throw Error(j[I] || j.default);
}
var errorHandler$1 = curry$1(throwError$1)({
initialIsRequired: "initial state is required",
initialType: "initial state should be an object",
initialContent: "initial state shouldn't be an empty object",
handlerType: "handler should be an object or a function",
handlersType: "all handlers should be a functions",
selectorType: "selector should be a function",
changeType: "provided value of changes should be an object",
changeField: "it seams you want to change a field in the state which is not specified in the \"initial\" state",
default: "an unknown error accured in `state-local` package"
}), validators$1 = {
changes: validateChanges,
selector: validateSelector,
handler: validateHandler,
initial: validateInitial
};
function create(j) {
var I = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
validators$1.initial(j), validators$1.handler(I);
var q = { current: j }, Q = curry$1(didStateUpdate)(q, I), p_ = curry$1(updateState)(q), m_ = curry$1(validators$1.changes)(j), h_ = curry$1(extractChanges)(q);
function g_() {
var j = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : function(j) {
return j;
};
return validators$1.selector(j), j(q.current);
}
function __(j) {
compose$1(Q, p_, m_, h_)(j);
}
return [g_, __];
}
function extractChanges(j, I) {
return isFunction$1(I) ? I(j.current) : I;
}
function updateState(j, I) {
return j.current = _objectSpread2$1(_objectSpread2$1({}, j.current), I), I;
}
function didStateUpdate(j, I, q) {
return isFunction$1(I) ? I(j.current) : Object.keys(q).forEach(function(q) {
return I[q]?.call(I, j.current[q]);
}), q;
}
var state_local_default = { create }, config = { paths: { vs: "https://cdn.jsdelivr.net/npm/monaco-editor@0.55.1/min/vs" } };
function curry(j) {
return function I() {
var q = this, Q = [...arguments];
return Q.length >= j.length ? j.apply(this, Q) : function() {
var j = [...arguments];
return I.apply(q, [].concat(Q, j));
};
};
}
function isObject(j) {
return {}.toString.call(j).includes("Object");
}
function validateConfig(j) {
return j || errorHandler("configIsRequired"), isObject(j) || errorHandler("configType"), j.urls ? (informAboutDeprecation(), { paths: { vs: j.urls.monacoBase } }) : j;
}
function informAboutDeprecation() {
console.warn(errorMessages.deprecation);
}
function throwError(j, I) {
throw Error(j[I] || j.default);
}
var errorMessages = {
configIsRequired: "the configuration object is required",
configType: "the configuration object should be an object",
default: "an unknown error accured in `@monaco-editor/loader` package",
deprecation: "Deprecation warning!\n You are using deprecated way of configuration.\n\n Instead of using\n monaco.config({ urls: { monacoBase: '...' } })\n use\n monaco.config({ paths: { vs: '...' } })\n\n For more please check the link https://github.com/suren-atoyan/monaco-loader#config\n "
}, errorHandler = curry(throwError)(errorMessages), validators = { config: validateConfig }, compose = function() {
var j = [...arguments];
return function(I) {
return j.reduceRight(function(j, I) {
return I(j);
}, I);
};
};
function merge(j, I) {
return Object.keys(I).forEach(function(q) {
I[q] instanceof Object && j[q] && Object.assign(I[q], merge(j[q], I[q]));
}), _objectSpread2(_objectSpread2({}, j), I);
}
var CANCELATION_MESSAGE = {
type: "cancelation",
msg: "operation is manually canceled"
};
function makeCancelable(j) {
var I = !1, q = new Promise(function(q, Q) {
j.then(function(j) {
return I ? Q(CANCELATION_MESSAGE) : q(j);
}), j.catch(Q);
});
return q.cancel = function() {
return I = !0;
}, q;
}
var _excluded = ["monaco"], _state$create = state_local_default.create({
config,
isInitialized: !1,
resolve: null,
reject: null,
monaco: null
}), _state$create2 = _slicedToArray(_state$create, 2), getState$1 = _state$create2[0], setState = _state$create2[1];
function config$1(j) {
var I = validators.config(j), q = I.monaco, Q = _objectWithoutProperties(I, _excluded);
setState(function(j) {
return {
config: merge(j.config, Q),
monaco: q
};
});
}
function init() {
var j = getState$1(function(j) {
var I = j.monaco, q = j.isInitialized, Q = j.resolve;
return {
monaco: I,
isInitialized: q,
resolve: Q
};
});
if (!j.isInitialized) {
if (setState({ isInitialized: !0 }), j.monaco) return j.resolve(j.monaco), makeCancelable(wrapperPromise);
if (window.monaco && window.monaco.editor) return storeMonacoInstance(window.monaco), j.resolve(window.monaco), makeCancelable(wrapperPromise);
compose(injectScripts, getMonacoLoaderScript)(configureLoader);
}
return makeCancelable(wrapperPromise);
}
function injectScripts(j) {
return document.body.appendChild(j);
}
function createScript(j) {
var I = document.createElement("script");
return j && (I.src = j), I;
}
function getMonacoLoaderScript(j) {
var I = getState$1(function(j) {
var I = j.config, q = j.reject;
return {
config: I,
reject: q
};
}), q = createScript(`${I.config.paths.vs}/loader.js`);
return q.onload = function() {
return j();
}, q.onerror = I.reject, q;
}
function configureLoader() {
var j = getState$1(function(j) {
var I = j.config, q = j.resolve, Q = j.reject;
return {
config: I,
resolve: q,
reject: Q
};
}), I = window.require;
I.config(j.config), I(["vs/editor/editor.main"], function(I) {
var q = I.m || I;
storeMonacoInstance(q), j.resolve(q);
}, function(I) {
j.reject(I);
});
}
function storeMonacoInstance(j) {
getState$1().monaco || setState({ monaco: j });
}
function __getMonacoInstance() {
return getState$1(function(j) {
return j.monaco;
});
}
var wrapperPromise = new Promise(function(j, I) {
return setState({
resolve: j,
reject: I
});
}), loader = {
config: config$1,
init,
__getMonacoInstance
}, v = {
wrapper: {
display: "flex",
position: "relative",
textAlign: "initial"
},
fullWidth: { width: "100%" },
hide: { display: "none" }
}, Y = { container: {
display: "flex",
height: "100%",
width: "100%",
justifyContent: "center",
alignItems: "center"
} };
function Me({ children: j }) {
return ke.createElement("div", { style: Y.container }, j);
}
var $ = Me;
function Ee({ width: j, height: I, isEditorReady: q, loading: Q, _ref: p_, className: m_, wrapperProps: h_ }) {
return ke.createElement("section", {
style: {
...v.wrapper,
width: j,
height: I
},
...h_
}, !q && ke.createElement($, null, Q), ke.createElement("div", {
ref: p_,
style: {
...v.fullWidth,
...!q && v.hide
},
className: m_
}));
}
var H = memo(Ee);
function Ce(j) {
useEffect(j, []);
}
var k = Ce;
function he(j, I, q = !0) {
let Q = useRef(!0);
useEffect(Q.current || !q ? () => {
Q.current = !1;
} : j, I);
}
var l = he;
function D() {}
function h(j, I, q, Q) {
return De(j, Q) || be(j, I, q, Q);
}
function De(j, I) {
return j.editor.getModel(te(j, I));
}
function be(j, I, q, Q) {
return j.editor.createModel(I, q, Q ? te(j, Q) : void 0);
}
function te(j, I) {
return j.Uri.parse(I);
}
function Oe({ original: j, modified: I, language: q, originalLanguage: Q, modifiedLanguage: p_, originalModelPath: m_, modifiedModelPath: h_, keepCurrentOriginalModel: g_ = !1, keepCurrentModifiedModel: __ = !1, theme: v_ = "light", loading: y_ = "Loading...", options: b_ = {}, height: x_ = "100%", width: S_ = "100%", className: C_, wrapperProps: w_ = {}, beforeMount: T_ = D, onMount: E_ = D }) {
let [D_, O_] = useState(!1), [k_, A_] = useState(!0), j_ = useRef(null), M_ = useRef(null), N_ = useRef(null), P_ = useRef(E_), F_ = useRef(T_), I_ = useRef(!1);
k(() => {
let j = loader.init();
return j.then((j) => (M_.current = j) && A_(!1)).catch((j) => j?.type !== "cancelation" && console.error("Monaco initialization: error:", j)), () => j_.current ? z_() : j.cancel();
}), l(() => {
if (j_.current && M_.current) {
let I = j_.current.getOriginalEditor(), p_ = h(M_.current, j || "", Q || q || "text", m_ || "");
p_ !== I.getModel() && I.setModel(p_);
}
}, [m_], D_), l(() => {
if (j_.current && M_.current) {
let j = j_.current.getModifiedEditor(), Q = h(M_.current, I || "", p_ || q || "text", h_ || "");
Q !== j.getModel() && j.setModel(Q);
}
}, [h_], D_), l(() => {
let j = j_.current.getModifiedEditor();
j.getOption(M_.current.editor.EditorOption.readOnly) ? j.setValue(I || "") : I !== j.getValue() && (j.executeEdits("", [{
range: j.getModel().getFullModelRange(),
text: I || "",
forceMoveMarkers: !0
}]), j.pushUndoStop());
}, [I], D_), l(() => {
j_.current?.getModel()?.original.setValue(j || "");
}, [j], D_), l(() => {
let { original: j, modified: I } = j_.current.getModel();
M_.current.editor.setModelLanguage(j, Q || q || "text"), M_.current.editor.setModelLanguage(I, p_ || q || "text");
}, [
q,
Q,
p_
], D_), l(() => {
M_.current?.editor.setTheme(v_);
}, [v_], D_), l(() => {
j_.current?.updateOptions(b_);
}, [b_], D_);
let L_ = useCallback(() => {
if (!M_.current) return;
F_.current(M_.current);
let g_ = h(M_.current, j || "", Q || q || "text", m_ || ""), __ = h(M_.current, I || "", p_ || q || "text", h_ || "");
j_.current?.setModel({
original: g_,
modified: __
});
}, [
q,
I,
p_,
j,
Q,
m_,
h_
]), R_ = useCallback(() => {
!I_.current && N_.current && (j_.current = M_.current.editor.createDiffEditor(N_.current, {
automaticLayout: !0,
...b_
}), L_(), M_.current?.editor.setTheme(v_), O_(!0), I_.current = !0);
}, [
b_,
v_,
L_
]);
useEffect(() => {
D_ && P_.current(j_.current, M_.current);
}, [D_]), useEffect(() => {
!k_ && !D_ && R_();
}, [
k_,
D_,
R_
]);
function z_() {
let j = j_.current?.getModel();
g_ || j?.original?.dispose(), __ || j?.modified?.dispose(), j_.current?.dispose();
}
return ke.createElement(H, {
width: S_,
height: x_,
isEditorReady: D_,
loading: y_,
_ref: N_,
className: C_,
wrapperProps: w_
});
}
memo(Oe);
function He(j) {
let I = useRef();
return useEffect(() => {
I.current = j;
}, [j]), I.current;
}
var se = He, _ = /* @__PURE__ */ new Map();
function Ve({ defaultValue: j, defaultLanguage: I, defaultPath: q, value: Q, language: p_, path: m_, theme: h_ = "light", line: g_, loading: __ = "Loading...", options: v_ = {}, overrideServices: y_ = {}, saveViewState: b_ = !0, keepCurrentModel: x_ = !1, width: S_ = "100%", height: C_ = "100%", className: w_, wrapperProps: T_ = {}, beforeMount: E_ = D, onMount: D_ = D, onChange: O_, onValidate: k_ = D }) {
let [A_, j_] = useState(!1), [M_, N_] = useState(!0), P_ = useRef(null), F_ = useRef(null), I_ = useRef(null), L_ = useRef(D_), R_ = useRef(E_), z_ = useRef(void 0), B_ = useRef(Q), V_ = se(m_), H_ = useRef(!1), U_ = useRef(!1);
k(() => {
let j = loader.init();
return j.then((j) => (P_.current = j) && N_(!1)).catch((j) => j?.type !== "cancelation" && console.error("Monaco initialization: error:", j)), () => F_.current ? G_() : j.cancel();
}), l(() => {
let h_ = h(P_.current, j || Q || "", I || p_ || "", m_ || q || "");
h_ !== F_.current?.getModel() && (b_ && _.set(V_, F_.current?.saveViewState()), F_.current?.setModel(h_), b_ && F_.current?.restoreViewState(_.get(m_)));
}, [m_], A_), l(() => {
F_.current?.updateOptions(v_);
}, [v_], A_), l(() => {
!F_.current || Q === void 0 || (F_.current.getOption(P_.current.editor.EditorOption.readOnly) ? F_.current.setValue(Q) : Q !== F_.current.getValue() && (U_.current = !0, F_.current.executeEdits("", [{
range: F_.current.getModel().getFullModelRange(),
text: Q,
forceMoveMarkers: !0
}]), F_.current.pushUndoStop(), U_.current = !1));
}, [Q], A_), l(() => {
let j = F_.current?.getModel();
A_ && j && p_ && P_.current?.editor.setModelLanguage(j, p_);
}, [p_, A_], A_), l(() => {
g_ !== void 0 && F_.current?.revealLine(g_);
}, [g_], A_), l(() => {
P_.current?.editor.setTheme(h_);
}, [h_], A_);
let W_ = useCallback(() => {
if (!(!I_.current || !P_.current) && !H_.current) {
R_.current(P_.current);
let __ = m_ || q, x_ = h(P_.current, Q || j || "", I || p_ || "", __ || "");
F_.current = P_.current?.editor.create(I_.current, {
model: x_,
automaticLayout: !0,
...v_
}, y_), b_ && F_.current.restoreViewState(_.get(__)), P_.current.editor.setTheme(h_), g_ !== void 0 && F_.current.revealLine(g_), j_(!0), H_.current = !0;
}
}, [
j,
I,
q,
Q,
p_,
m_,
v_,
y_,
b_,
h_,
g_
]);
useEffect(() => {
A_ && L_.current(F_.current, P_.current);
}, [A_]), useEffect(() => {
!M_ && !A_ && W_();
}, [
M_,
A_,
W_
]), B_.current = Q, useEffect(() => {
A_ && O_ && (z_.current?.dispose(), z_.current = F_.current?.onDidChangeModelContent((j) => {
U_.current || O_(F_.current.getValue(), j);
}));
}, [A_, O_]), useEffect(() => {
if (A_) {
let j = P_.current.editor.onDidChangeMarkers((j) => {
let I = F_.current.getModel()?.uri;
if (I && j.find((j) => j.path === I.path)) {
let j = P_.current.editor.getModelMarkers({ resource: I });
k_?.(j);
}
});
return () => {
j?.dispose();
};
}
return () => {};
}, [A_, k_]);
function G_() {
z_.current?.dispose(), x_ ? b_ && _.set(m_, F_.current.saveViewState()) : F_.current.getModel()?.dispose(), F_.current.dispose(), F_.current = null, H_.current = !1, j_(!1);
}
return ke.createElement(H, {
width: S_,
height: C_,
isEditorReady: A_,
loading: __,
_ref: I_,
className: w_,
wrapperProps: T_
});
}
var Ft = memo(Ve);
typeof window < "u" && (window.monaco = editor_main_exports), loader.config({ monaco: editor_main_exports }), languages.register({ id: "dotenv" }), editor.defineTheme("hive-laboratory-dark", {
base: "vs-dark",
inherit: !0,
rules: [
{
token: "",
foreground: "F8F9FA",
background: "fffffe"
},
{
token: "invalid",
foreground: "cd3131"
},
{
token: "emphasis",
fontStyle: "italic"
},
{
token: "strong",
fontStyle: "bold"
},
{
token: "variable",
foreground: "001188"
},
{
token: "variable.predefined",
foreground: "4864AA"
},
{
token: "constant",
foreground: "dd0000"
},
{
token: "comment",
foreground: "15803d"
},
{
token: "number",
foreground: "fde68a"
},
{
token: "number.hex",
foreground: "3030c0"
},
{
token: "regexp",
foreground: "800000"
},
{
token: "annotation",
foreground: "808080"
},
{
token: "type",
foreground: "fde68a"
},
{
token: "delimiter",
foreground: "6E757C"
},
{
token: "delimiter.html",
foreground: "383838"
},
{
token: "delimiter.xml",
foreground: "facc15"
},
{
token: "tag",
foreground: "800000"
},
{
token: "tag.id.jade",
foreground: "4F76AC"
},
{
token: "tag.class.jade",
foreground: "4F76AC"
},
{
token: "meta.scss",
foreground: "800000"
},
{
token: "metatag",
foreground: "e00000"
},
{
token: "metatag.content.html",
foreground: "FF0000"
},
{
token: "metatag.html",
foreground: "808080"
},
{
token: "metatag.xml",
foreground: "808080"
},
{
token: "metatag.php",
fontStyle: "bold"
},
{
token: "key",
foreground: "93c5fd"
},
{
token: "string.key.json",
foreground: "93c5fd"
},
{
token: "string.value.json",
foreground: "fdba74"
},
{
token: "attribute.name",
foreground: "FF0000"
},
{
token: "attribute.value",
foreground: "34d399"
},
{
token: "attribute.value.number",
foreground: "fdba74"
},
{
token: "attribute.value.unit",
foreground: "fdba74"
},
{
token: "attribute.value.html",
foreground: "facc15"
},
{
token: "attribute.value.xml",
foreground: "facc15"
},
{
token: "string",
foreground: "2dd4bf"
},
{
token: "string.html",
foreground: "facc15"
},
{
token: "string.sql",
foreground: "FF0000"
},
{
token: "string.yaml",
foreground: "34d399"
},
{
token: "keyword",
foreground: "60a5fa"
},
{
token: "keyword.json",
foreground: "34d399"
},
{
token: "keyword.flow",
foreground: "AF00DB"
},
{
token: "keyword.flow.scss",
foreground: "facc15"
},
{
token: "operator.scss",
foreground: "666666"
},
{
token: "operator.sql",
foreground: "778899"
},
{
token: "operator.swift",
foreground: "666666"
},
{
token: "predefined.sql",
foreground: "FF00FF"
}
],
colors: {
"editor.foreground": "#f6f8fa",
"editor.background": "#0f1214",
"editor.selectionBackground": "#2A2F34",
"editor.inactiveSelectionBackground": "#2A2F34",
"editor.lineHighlightBackground": "#2A2F34",
"editorCursor.foreground": "#ffffff",
"editorWhitespace.foreground": "#6a737d",
"editorIndentGuide.background": "#6E757C",
"editorIndentGuide.activeBackground": "#CFD4D9",
"editor.selectionHighlightBorder": "#2A2F34"
}
}), editor.defineTheme("hive-laboratory-light", {
base: "vs",
inherit: !0,
rules: [],
colors: {}
}), languages.setMonarchTokensProvider("dotenv", { tokenizer: {
root: [[/^\s*#.*$/, "comment"], [
/^\s*([A-Za-z_][A-Za-z0-9_]*)\s*=/,
"key",
"@value"
]],
value: [
[
/"([^"\\]|\\.)*$/,
"string",
"@pop"
],
[
/"([^"\\]|\\.)*"/,
"string",
"@pop"
],
[
/'([^'\\]|\\.)*$/,
"string",
"@pop"
],
[
/'([^'\\]|\\.)*'/,
"string",
"@pop"
],
[
/[^#\n]+/,
"string",
"@pop"
]
]
} });
const Editor = forwardRef((j, I) => {
let q = useId(), Q = useRef(null), { introspection: p_, endpoint: m_, theme: g_ } = useLaboratory(), [__, v_] = useState(!!languages.typescript);
return useEffect(() => {
p_ && initializeMode({
schemas: [{
introspectionJSON: p_,
uri: `schema_${m_}.graphql`
}],
diagnosticSettings: j.uri && j.variablesUri ? {
validateVariablesJSON: { [j.uri.toString()]: [j.variablesUri.toString()] },
jsonDiagnosticSettings: { allowComments: !0 }
} : void 0
}).setCompletionSettings({ __experimental__fillLeafsOnComplete: !0 });
}, [
p_,
j.uri?.toString(),
j.variablesUri?.toString()
]), useEffect(() => {
(async function() {
if (!j.extraLibs?.length) return;
languages.typescript || (await import("./monaco.contribution-CAUSzgDp.js"), v_(!0));
let I = languages.typescript;
if (!I) return;
let Q = Object.values(I.typescriptDefaults.getExtraLibs()).map((j) => j.content);
if (j.extraLibs.every((j) => Q.includes(j))) return;
let p_ = q.replace(/[^a-zA-Z0-9_-]/g, "_");
I.typescriptDefaults.setCompilerOptions({
target: I.ScriptTarget.ESNext,
module: I.ModuleKind.ESNext,
allowNonTsExtensions: !0,
allowJs: !0,
lib: ["esnext", "webworker"]
}), I.typescriptDefaults.setExtraLibs(j.extraLibs.map((j, I) => ({
content: j,
filePath: `file:///hive-lab-globals-${p_}-${I}.d.ts`
})));
})();
}, [q, j.extraLibs]), useImperativeHandle(I, () => ({ setValue: (j) => {
Q.current && Q.current.setValue(j);
} }), []), !__ && j.language === "typescript" ? null : /* @__PURE__ */ jsx("div", {
className: "size-full overflow-hidden",
children: /* @__PURE__ */ jsx(Ft, {
className: "size-full",
...j,
theme: g_ === "dark" ? "hive-laboratory-dark" : "hive-laboratory-light",
onMount: (j) => {
Q.current = j;
},
loading: null,
options: {
...j.options,
lineNumbers: "on",
cursorStyle: "line",
cursorBlinking: "smooth",
padding: { top: 16 },
fontFamily: "ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace",
minimap: { enabled: !1 },
automaticLayout: !0,
tabSize: 2,
formatOnPaste: !0
},
defaultPath: j.uri?.toString()
})
});
}), Env = () => {
let { env: j, setEnv: I } = useLaboratory();
return /* @__PURE__ */ jsx("div", {
className: "bg-card size-full",
children: /* @__PURE__ */ jsx(Editor, {
defaultValue: Object.entries(j?.variables ?? {}).map(([j, I]) => `${j}=${I}`).join("\n"),
onChange: (j) => {
I({ variables: Object.fromEntries(j?.split("\n").filter((j) => j.trim() && !j.trim().startsWith("#")).map((j) => {
let I = j.split(/=(.*)/s);
return [I[0].trim(), (I[1] ?? "").trim()];
}) ?? []) });
},
language: "dotenv",
options: { scrollbar: { horizontal: "hidden" } }
})
});
}, HistoryOperationItem = (j) => {
let { activeTab: I, addTab: q, setActiveTab: Q, deleteHistory: p_ } = useLaboratory(), m_ = useMemo(() => I?.type === "history" && I.data.id === j.historyItem.id, [I, j.historyItem]), h_ = useMemo(() => j.historyItem.status ? j.historyItem.status < 200 || j.historyItem.status >= 300 || "response" in j.historyItem && JSON.parse(j.historyItem.response).errors : !0, [j.historyItem]);
return /* @__PURE__ */ jsxs(Button, {
variant: "ghost",
size: "sm",
className: cn("bg-background group sticky top-0 w-full justify-start px-2", { "bg-accent/50": m_ }),
onClick: () => {
Q(q({
type: "history",
data: j.historyItem,
readOnly: !0
}));
},
children: [
/* @__PURE__ */ jsx(HistoryIcon, { className: cn("size-4 text-indigo-400", {
"text-green-500": !j.historyItem.status || j.historyItem.status >= 200 && j.historyItem.status < 300,
"text-red-500": h_
}) }),
/* @__PURE__ */ jsx("span", {
className: "text-muted-foreground",
children: format(new Date(j.historyItem.createdAt), "HH:mm")
}),
/* @__PURE__ */ jsx("div", {
className: "truncate",
children: j.historyItem.operation.name || "Untitled"
}),
/* @__PURE__ */ jsx("div", {
className: "ml-auto flex items-center gap-2",
children: /* @__PURE__ */ jsxs(Tooltip, { children: [/* @__PURE__ */ jsx(TooltipTrigger, {
asChild: !0,
children: /* @__PURE__ */ jsxs(AlertDialog, { children: [/* @__PURE__ */ jsx(AlertDialogTrigger, {
asChild: !0,
children: /* @__PURE__ */ jsx(Button, {
variant: "link",
className: "text-muted-foreground hover:text-destructive p-1! pr-0! ml-auto opacity-0 transition-opacity group-hover:opacity-100",
onClick: (j) => {
j.stopPropagation();
},
children: /* @__PURE__ */ jsx(TrashIcon, {})
})
}), /* @__PURE__ */ jsxs(AlertDialogContent, { children: [/* @__PURE__ */ jsxs(AlertDialogHeader, { children: [/* @__PURE__ */ jsx(AlertDialogTitle, { children: "Are you sure you want to delete history?" }), /* @__PURE__ */ jsx(AlertDialogDescription, { children: "This history operation will be permanently deleted." })] }), /* @__PURE__ */ jsxs(AlertDialogFooter, { children: [/* @__PURE__ */ jsx(AlertDialogCancel, { children: "Cancel" }), /* @__PURE__ */ jsx(AlertDialogAction, {
asChild: !0,
children: /* @__PURE__ */ jsx(Button, {
variant: "destructive",
onClick: (I) => {
I.stopPropagation(), p_(j.historyItem.id);
},
children: "Delete"
})
})] })] })] })
}), /* @__PURE__ */ jsx(TooltipContent, { children: "Delete history" })] })
})
]
});
}, HistoryGroup = (j) => {
let { deleteHistoryByDay: I } = useLaboratory(), [q, Q] = useState(!1);
return /* @__PURE__ */ jsxs(Collapsible, {
open: q,
onOpenChange: Q,
children: [/* @__PURE__ */ jsx(CollapsibleTrigger, {
asChild: !0,
children: /* @__PURE__ */ jsxs(Button, {
variant: "ghost",
className: "bg-background group sticky top-0 w-full justify-start px-2",
size: "sm",
children: [
jsx(q ? FolderOpenIcon : FolderClockIcon, { className: "text-muted-foreground size-4" }),
j.group.date,
/* @__PURE__ */ jsxs(Tooltip, { children: [/* @__PURE__ */ jsx(TooltipTrigger, {
asChild: !0,
children: /* @__PURE__ */ jsxs(AlertDialog, { children: [/* @__PURE__ */ jsx(AlertDialogTrigger, {
asChild: !0,
children: /* @__PURE__ */ jsx(Button, {
variant: "link",
className: "text-muted-foreground hover:text-destructive p-1! pr-0! ml-auto opacity-0 transition-opacity group-hover:opacity-100",
onClick: (j) => {
j.stopPropagation();
},
children: /* @__PURE__ */ jsx(TrashIcon, {})
})
}), /* @__PURE__ */ jsxs(AlertDialogContent, { children: [/* @__PURE__ */ jsxs(AlertDialogHeader, { children: [/* @__PURE__ */ jsx(AlertDialogTitle, { children: "Are you sure you want to delete history?" }), /* @__PURE__ */ jsxs(AlertDialogDescription, { children: [
"All history for ",
j.group.date,
" will be permanently deleted."
] })] }), /* @__PURE__ */ jsxs(AlertDialogFooter, { children: [/* @__PURE__ */ jsx(AlertDialogCancel, { children: "Cancel" }), /* @__PURE__ */ jsx(AlertDialogAction, {
asChild: !0,
children: /* @__PURE__ */ jsx(Button, {
variant: "destructive",
onClick: (q) => {
q.stopPropagation(), I(j.group.date);
},
children: "Delete"
})
})] })] })] })
}), /* @__PURE__ */ jsx(TooltipContent, { children: "Delete history" })] })
]
})
}), /* @__PURE__ */ jsx(CollapsibleContent, {
className: cn("border-border ml-4 flex flex-col gap-1 border-l pl-2"),
children: j.group.items.map((j) => /* @__PURE__ */ jsx(HistoryOperationItem, { historyItem: j }, j.id))
})]
});
}, History = () => {
let { history: j, deleteAllHistory: I, tabs: q, setTabs: Q, setActiveTab: p_ } = useLaboratory(), m_ = useMemo(() => j.sort((j, I) => new Date(I.createdAt).getTime() - new Date(j.createdAt).getTime()), [j]), h_ = useMemo(() => m_.reduce((j, I) => {
let q = format(new Date(I.createdAt), "dd MMM yyyy"), Q = j.find((j) => j.date === q);
return Q || (Q = {
date: q,
items: []
}, j.push(Q)), Q.items.push(I), j;
}, []), [m_]), g_ = useCallback(() => {
I(), Q(q.filter((j) => j.type !== "history"));
let j = q.find((j) => j.type !== "history");
j && p_(j);
}, [
I,
Q,
q,
p_
]);
return /* @__PURE__ */ jsxs("div", {
className: "grid size-full grid-rows-[auto_1fr] pb-0",
children: [/* @__PURE__ */ jsxs("div", {
className: "border-border flex h-12 items-center gap-2 border-b p-3",
children: [/* @__PURE__ */ jsx("span", {
className: "text-base font-medium",
children: "History"
}), /* @__PURE__ */ jsx("div", {
className: "ml-auto flex items-center",
children: /* @__PURE__ */ jsxs(Tooltip, { children: [/* @__PURE__ */ jsx(TooltipTrigger, {
asChild: !0,
children: /* @__PURE__ */ jsxs(AlertDialog, { children: [/* @__PURE__ */ jsx(AlertDialogTrigger, {
asChild: !0,
children: /* @__PURE__ */ jsx(Button, {
variant: "ghost",
size: "icon-sm",
className: "text-muted-foreground hover:text-destructive p-1! size-6 rounded-sm",
disabled: j.length === 0,
children: /* @__PURE__ */ jsx(TrashIcon, { className: "size-4" })
})
}), /* @__PURE__ */ jsxs(AlertDialogContent, { children: [/* @__PURE__ */ jsxs(AlertDialogHeader, { children: [/* @__PURE__ */ jsx(AlertDialogTitle, { children: "Are you sure you want to delete all history?" }), /* @__PURE__ */ jsx(AlertDialogDescription, { children: "All history will be permanently deleted." })] }), /* @__PURE__ */ jsxs(AlertDialogFooter, { children: [/* @__PURE__ */ jsx(AlertDialogCancel, { children: "Cancel" }), /* @__PURE__ */ jsx(AlertDialogAction, {
asChild: !0,
children: /* @__PURE__ */ jsx(Button, {
variant: "destructive",
onClick: (j) => {
j.stopPropagation(), g_();
},
children: "Delete"
})
})] })] })] })
}), /* @__PURE__ */ jsx(TooltipContent, { children: "Delete all" })] })
})]
}), /* @__PURE__ */ jsx("div", {
className: "size-full overflow-hidden",
children: /* @__PURE__ */ jsxs(ScrollArea, {
className: "size-full",
children: [/* @__PURE__ */ jsx("div", {
className: "flex flex-col gap-1 p-3",
children: h_.length > 0 ? h_.map((j) => /* @__PURE__ */ jsx(HistoryGroup, { group: j }, j.date)) : /* @__PURE__ */ jsx(Empty, {
className: "px-0! w-full",
children: /* @__PURE__ */ jsxs(EmptyHeader, { children: [
/* @__PURE__ */ jsx(EmptyMedia, {
variant: "icon",
children: /* @__PURE__ */ jsx(ClockIcon, { className: "text-muted-foreground size-6" })
}),
/* @__PURE__ */ jsx(EmptyTitle, {
className: "text-base",
children: "No history yet"
}),
/* @__PURE__ */ jsx(EmptyDescription, {
className: "text-xs",
children: "You haven't run any operations yet. Get started by running your first operation."
})
] })
})
}), /* @__PURE__ */ jsx(ScrollBar, {})]
})
})]
});
};
var badgeVariants = cva("inline-flex items-center justify-center rounded-full border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden", {
variants: { variant: {
default: "border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90",
secondary: "border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90",
destructive: "border-transparent text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/40 bg-destructive/60",
outline: "text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground"
} },
defaultVariants: { variant: "default" }
});
function Badge({ className: j, variant: I, asChild: q = !1,...Q }) {
return /* @__PURE__ */ jsx(q ? Slot : "span", {
"data-slot": "badge",
className: cn(badgeVariants({ variant: I }), j),
...Q
});
}
function usePrevious$1(j) {
let I = React.useRef({
value: j,
previous: j
});
return React.useMemo(() => (I.current.value !== j && (I.current.previous = I.current.value, I.current.value = j), I.current.previous), [j]);
}
var OPEN_KEYS = [
" ",
"Enter",
"ArrowUp",
"ArrowDown"
], SELECTION_KEYS = [" ", "Enter"], SELECT_NAME = "Select", [Collection, useCollection, createCollectionScope] = createCollection(SELECT_NAME), [createSelectContext, createSelectScope] = createContextScope(SELECT_NAME, [createCollectionScope, createPopperScope]), usePopperScope = createPopperScope(), [SelectProvider, useSelectContext] = createSelectContext(SELECT_NAME), [SelectNativeOptionsProvider, useSelectNativeOptionsContext] = createSelectContext(SELECT_NAME), Select$1 = (j) => {
let { __scopeSelect: I, children: q, open: Q, defaultOpen: p_, onOpenChange: m_, value: h_, defaultValue: g_, onValueChange: __, dir: v_, name: y_, autoComplete: b_, disabled: x_, required: S_, form: C_ } = j, w_ = usePopperScope(I), [T_, E_] = React.useState(null), [D_, O_] = React.useState(null), [k_, A_] = React.useState(!1), j_ = useDirection(v_), [M_, N_] = useControllableState({
prop: Q,
defaultProp: p_ ?? !1,
onChange: m_,
caller: SELECT_NAME
}), [P_, F_] = useControllableState({
prop: h_,
defaultProp: g_,
onChange: __,
caller: SELECT_NAME
}), I_ = React.useRef(null), L_ = T_ ? C_ || !!T_.closest("form") : !0, [R_, z_] = React.useState(/* @__PURE__ */ new Set()), B_ = Array.from(R_).map((j) => j.props.value).join(";");
return /* @__PURE__ */ jsx(Root2$5, {
...w_,
children: /* @__PURE__ */ jsxs(SelectProvider, {
required: S_,
scope: I,
trigger: T_,
onTriggerChange: E_,
valueNode: D_,
onValueNodeChange: O_,
valueNodeHasChildren: k_,
onValueNodeHasChildrenChange: A_,
contentId: useId$1(),
value: P_,
onValueChange: F_,
open: M_,
onOpenChange: N_,
dir: j_,
triggerPointerDownPosRef: I_,
disabled: x_,
children: [/* @__PURE__ */ jsx(Collection.Provider, {
scope: I,
children: /* @__PURE__ */ jsx(SelectNativeOptionsProvider, {
scope: j.__scopeSelect,
onNativeOptionAdd: React.useCallback((j) => {
z_((I) => new Set(I).add(j));
}, []),
onNativeOptionRemove: React.useCallback((j) => {
z_((I) => {
let q = new Set(I);
return q.delete(j), q;
});
}, []),
children: q
})
}), L_ ? /* @__PURE__ */ jsxs(SelectBubbleInput, {
"aria-hidden": !0,
required: S_,
tabIndex: -1,
name: y_,
autoComplete: b_,
value: P_,
onChange: (j) => F_(j.target.value),
disabled: x_,
form: C_,
children: [P_ === void 0 ? /* @__PURE__ */ jsx("option", { value: "" }) : null, Array.from(R_)]
}, B_) : null]
})
});
};
Select$1.displayName = SELECT_NAME;
var TRIGGER_NAME$3 = "SelectTrigger", SelectTrigger$1 = React.forwardRef((j, I) => {
let { __scopeSelect: q, disabled: Q = !1,...p_ } = j, m_ = usePopperScope(q), h_ = useSelectContext(TRIGGER_NAME$3, q), g_ = h_.disabled || Q, __ = useComposedRefs$1(I, h_.onTriggerChange), v_ = useCollection(q), y_ = React.useRef("touch"), [b_, x_, S_] = useTypeaheadSearch((j) => {
let I = v_().filter((j) => !j.disabled), q = I.find((j) => j.value === h_.value), Q = findNextItem(I, j, q);
Q !== void 0 && h_.onValueChange(Q.value);
}), C_ = (j) => {
g_ || (h_.onOpenChange(!0), S_()), j && (h_.triggerPointerDownPosRef.current = {
x: Math.round(j.pageX),
y: Math.round(j.pageY)
});
};
return /* @__PURE__ */ jsx(Anchor, {
asChild: !0,
...m_,
children: /* @__PURE__ */ jsx(Primitive.button, {
type: "button",
role: "combobox",
"aria-controls": h_.contentId,
"aria-expanded": h_.open,
"aria-required": h_.required,
"aria-autocomplete": "none",
dir: h_.dir,
"data-state": h_.open ? "open" : "closed",
disabled: g_,
"data-disabled": g_ ? "" : void 0,
"data-placeholder": shouldShowPlaceholder(h_.value) ? "" : void 0,
...p_,
ref: __,
onClick: composeEventHandlers(p_.onClick, (j) => {
j.currentTarget.focus(), y_.current !== "mouse" && C_(j);
}),
onPointerDown: composeEventHandlers(p_.onPointerDown, (j) => {
y_.current = j.pointerType;
let I = j.target;
I.hasPointerCapture(j.pointerId) && I.releasePointerCapture(j.pointerId), j.button === 0 && j.ctrlKey === !1 && j.pointerType === "mouse" && (C_(j), j.preventDefault());
}),
onKeyDown: composeEventHandlers(p_.onKeyDown, (j) => {
let I = b_.current !== "";
!(j.ctrlKey || j.altKey || j.metaKey) && j.key.length === 1 && x_(j.key), !(I && j.key === " ") && OPEN_KEYS.includes(j.key) && (C_(), j.preventDefault());
})
})
});
});
SelectTrigger$1.displayName = TRIGGER_NAME$3;
var VALUE_NAME = "SelectValue", SelectValue$1 = React.forwardRef((j, I) => {
let { __scopeSelect: q, className: Q, style: p_, children: m_, placeholder: h_ = "",...g_ } = j, __ = useSelectContext(VALUE_NAME, q), { onValueNodeHasChildrenChange: v_ } = __, y_ = m_ !== void 0, b_ = useComposedRefs$1(I, __.onValueNodeChange);
return useLayoutEffect2(() => {
v_(y_);
}, [v_, y_]), /* @__PURE__ */ jsx(Primitive.span, {
...g_,
ref: b_,
style: { pointerEvents: "none" },
children: shouldShowPlaceholder(__.value) ? /* @__PURE__ */ jsx(Fragment$1, { children: h_ }) : m_
});
});
SelectValue$1.displayName = VALUE_NAME;
var ICON_NAME = "SelectIcon", SelectIcon = React.forwardRef((j, I) => {
let { __scopeSelect: q, children: Q,...p_ } = j;
return /* @__PURE__ */ jsx(Primitive.span, {
"aria-hidden": !0,
...p_,
ref: I,
children: Q || "▼"
});
});
SelectIcon.displayName = ICON_NAME;
var PORTAL_NAME$1 = "SelectPortal", SelectPortal = (j) => /* @__PURE__ */ jsx(Portal, {
asChild: !0,
...j
});
SelectPortal.displayName = PORTAL_NAME$1;
var CONTENT_NAME$3 = "SelectContent", SelectContent$1 = React.forwardRef((j, I) => {
let q = useSelectContext(CONTENT_NAME$3, j.__scopeSelect), [Q, p_] = React.useState();
if (useLayoutEffect2(() => {
p_(new DocumentFragment());
}, []), !q.open) {
let I = Q;
return I ? ReactDOM$2.createPortal(/* @__PURE__ */ jsx(SelectContentProvider, {
scope: j.__scopeSelect,
children: /* @__PURE__ */ jsx(Collection.Slot, {
scope: j.__scopeSelect,
children: /* @__PURE__ */ jsx("div", { children: j.children })
})
}), I) : null;
}
return /* @__PURE__ */ jsx(SelectContentImpl, {
...j,
ref: I
});
});
SelectContent$1.displayName = CONTENT_NAME$3;
var CONTENT_MARGIN = 10, [SelectContentProvider, useSelectContentContext] = createSelectContext(CONTENT_NAME$3), CONTENT_IMPL_NAME = "SelectContentImpl", Slot$1 = /* @__PURE__ */ createSlot("SelectContent.RemoveScroll"), SelectContentImpl = React.forwardRef((j, I) => {
let { __scopeSelect: q, position: Q = "item-aligned", onCloseAutoFocus: p_, onEscapeKeyDown: m_, onPointerDownOutside: h_, side: g_, sideOffset: __, align: v_, alignOffset: y_, arrowPadding: b_, collisionBoundary: x_, collisionPadding: S_, sticky: C_, hideWhenDetached: w_, avoidCollisions: T_,...E_ } = j, D_ = useSelectContext(CONTENT_NAME$3, q), [O_, k_] = React.useState(null), [A_, j_] = React.useState(null), M_ = useComposedRefs$1(I, (j) => k_(j)), [N_, P_] = React.useState(null), [F_, I_] = React.useState(null), L_ = useCollection(q), [R_, z_] = React.useState(!1), B_ = React.useRef(!1);
React.useEffect(() => {
if (O_) return hideOthers(O_);
}, [O_]), useFocusGuards();
let V_ = React.useCallback((j) => {
let [I, ...q] = L_().map((j) => j.ref.current), [Q] = q.slice(-1), p_ = document.activeElement;
for (let q of j) if (q === p_ || (q?.scrollIntoView({ block: "nearest" }), q === I && A_ && (A_.scrollTop = 0), q === Q && A_ && (A_.scrollTop = A_.scrollHeight), q?.focus(), document.activeElement !== p_)) return;
}, [L_, A_]), H_ = React.useCallback(() => V_([N_, O_]), [
V_,
N_,
O_
]);
React.useEffect(() => {
R_ && H_();
}, [R_, H_]);
let { onOpenChange: U_, triggerPointerDownPosRef: W_ } = D_;
React.useEffect(() => {
if (O_) {
let j = {
x: 0,
y: 0
}, I = (I) => {
j = {
x: Math.abs(Math.round(I.pageX) - (W_.current?.x ?? 0)),
y: Math.abs(Math.round(I.pageY) - (W_.current?.y ?? 0))
};
}, q = (q) => {
j.x <= 10 && j.y <= 10 ? q.preventDefault() : O_.contains(q.target) || U_(!1), document.removeEventListener("pointermove", I), W_.current = null;
};
return W_.current !== null && (document.addEventListener("pointermove", I), document.addEventListener("pointerup", q, {
capture: !0,
once: !0
})), () => {
document.removeEventListener("pointermove", I), document.removeEventListener("pointerup", q, { capture: !0 });
};
}
}, [
O_,
U_,
W_
]), React.useEffect(() => {
let j = () => U_(!1);
return window.addEventListener("blur", j), window.addEventListener("resize", j), () => {
window.removeEventListener("blur", j), window.removeEventListener("resize", j);
};
}, [U_]);
let [G_, K_] = useTypeaheadSearch((j) => {
let I = L_().filter((j) => !j.disabled), q = I.find((j) => j.ref.current === document.activeElement), Q = findNextItem(I, j, q);
Q && setTimeout(() => Q.ref.current.focus());
}), q_ = React.useCallback((j, I, q) => {
let Q = !B_.current && !q;
(D_.value !== void 0 && D_.value === I || Q) && (P_(j), Q && (B_.current = !0));
}, [D_.value]), J_ = React.useCallback(() => O_?.focus(), [O_]), Y_ = React.useCallback((j, I, q) => {
let Q = !B_.current && !q;
(D_.value !== void 0 && D_.value === I || Q) && I_(j);
}, [D_.value]), X_ = Q === "popper" ? SelectPopperPosition : SelectItemAlignedPosition, Z_ = X_ === SelectPopperPosition ? {
side: g_,
sideOffset: __,
align: v_,
alignOffset: y_,
arrowPadding: b_,
collisionBoundary: x_,
collisionPadding: S_,
sticky: C_,
hideWhenDetached: w_,
avoidCollisions: T_
} : {};
return /* @__PURE__ */ jsx(SelectContentProvider, {
scope: q,
content: O_,
viewport: A_,
onViewportChange: j_,
itemRefCallback: q_,
selectedItem: N_,
onItemLeave: J_,
itemTextRefCallback: Y_,
focusSelectedItem: H_,
selectedItemText: F_,
position: Q,
isPositioned: R_,
searchRef: G_,
children: /* @__PURE__ */ jsx(Combination_default, {
as: Slot$1,
allowPinchZoom: !0,
children: /* @__PURE__ */ jsx(FocusScope, {
asChild: !0,
trapped: D_.open,
onMountAutoFocus: (j) => {
j.preventDefault();
},
onUnmountAutoFocus: composeEventHandlers(p_, (j) => {
D_.trigger?.focus({ preventScroll: !0 }), j.preventDefault();
}),
children: /* @__PURE__ */ jsx(DismissableLayer, {
asChild: !0,
disableOutsidePointerEvents: !0,
onEscapeKeyDown: m_,
onPointerDownOutside: h_,
onFocusOutside: (j) => j.preventDefault(),
onDismiss: () => D_.onOpenChange(!1),
children: /* @__PURE__ */ jsx(X_, {
role: "listbox",
id: D_.contentId,
"data-state": D_.open ? "open" : "closed",
dir: D_.dir,
onContextMenu: (j) => j.preventDefault(),
...E_,
...Z_,
onPlaced: () => z_(!0),
ref: M_,
style: {
display: "flex",
flexDirection: "column",
outline: "none",
...E_.style
},
onKeyDown: composeEventHandlers(E_.onKeyDown, (j) => {
let I = j.ctrlKey || j.altKey || j.metaKey;
if (j.key === "Tab" && j.preventDefault(), !I && j.key.length === 1 && K_(j.key), [
"ArrowUp",
"ArrowDown",
"Home",
"End"
].includes(j.key)) {
let I = L_().filter((j) => !j.disabled).map((j) => j.ref.current);
if (["ArrowUp", "End"].includes(j.key) && (I = I.slice().reverse()), ["ArrowUp", "ArrowDown"].includes(j.key)) {
let q = j.target, Q = I.indexOf(q);
I = I.slice(Q + 1);
}
setTimeout(() => V_(I)), j.preventDefault();
}
})
})
})
})
})
});
});
SelectContentImpl.displayName = CONTENT_IMPL_NAME;
var ITEM_ALIGNED_POSITION_NAME = "SelectItemAlignedPosition", SelectItemAlignedPosition = React.forwardRef((j, I) => {
let { __scopeSelect: q, onPlaced: Q,...p_ } = j, m_ = useSelectContext(CONTENT_NAME$3, q), h_ = useSelectContentContext(CONTENT_NAME$3, q), [g_, __] = React.useState(null), [v_, y_] = React.useState(null), b_ = useComposedRefs$1(I, (j) => y_(j)), x_ = useCollection(q), S_ = React.useRef(!1), C_ = React.useRef(!0), { viewport: w_, selectedItem: T_, selectedItemText: E_, focusSelectedItem: D_ } = h_, O_ = React.useCallback(() => {
if (m_.trigger && m_.valueNode && g_ && v_ && w_ && T_ && E_) {
let j = m_.trigger.getBoundingClientRect(), I = v_.getBoundingClientRect(), q = m_.valueNode.getBoundingClientRect(), p_ = E_.getBoundingClientRect();
if (m_.dir !== "rtl") {
let Q = p_.left - I.left, m_ = q.left - Q, h_ = j.left - m_, __ = j.width + h_, v_ = Math.max(__, I.width), y_ = window.innerWidth - CONTENT_MARGIN, b_ = clamp(m_, [CONTENT_MARGIN, Math.max(CONTENT_MARGIN, y_ - v_)]);
g_.style.minWidth = __ + "px", g_.style.left = b_ + "px";
} else {
let Q = I.right - p_.right, m_ = window.innerWidth - q.right - Q, h_ = window.innerWidth - j.right - m_, __ = j.width + h_, v_ = Math.max(__, I.width), y_ = window.innerWidth - CONTENT_MARGIN, b_ = clamp(m_, [CONTENT_MARGIN, Math.max(CONTENT_MARGIN, y_ - v_)]);
g_.style.minWidth = __ + "px", g_.style.right = b_ + "px";
}
let h_ = x_(), __ = window.innerHeight - CONTENT_MARGIN * 2, y_ = w_.scrollHeight, b_ = window.getComputedStyle(v_), C_ = parseInt(b_.borderTopWidth, 10), D_ = parseInt(b_.paddingTop, 10), O_ = parseInt(b_.borderBottomWidth, 10), k_ = parseInt(b_.paddingBottom, 10), A_ = C_ + D_ + y_ + k_ + O_, j_ = Math.min(T_.offsetHeight * 5, A_), M_ = window.getComputedStyle(w_), N_ = parseInt(M_.paddingTop, 10), P_ = parseInt(M_.paddingBottom, 10), F_ = j.top + j.height / 2 - CONTENT_MARGIN, I_ = __ - F_, L_ = T_.offsetHeight / 2, R_ = T_.offsetTop + L_, z_ = C_ + D_ + R_, B_ = A_ - z_;
if (z_ <= F_) {
let j = h_.length > 0 && T_ === h_[h_.length - 1].ref.current;
g_.style.bottom = "0px";
let I = v_.clientHeight - w_.offsetTop - w_.offsetHeight, q = Math.max(I_, L_ + (j ? P_ : 0) + I + O_), Q = z_ + q;
g_.style.height = Q + "px";
} else {
let j = h_.length > 0 && T_ === h_[0].ref.current;
g_.style.top = "0px";
let I = Math.max(F_, C_ + w_.offsetTop + (j ? N_ : 0) + L_) + B_;
g_.style.height = I + "px", w_.scrollTop = z_ - F_ + w_.offsetTop;
}
g_.style.margin = `${CONTENT_MARGIN}px 0`, g_.style.minHeight = j_ + "px", g_.style.maxHeight = __ + "px", Q?.(), requestAnimationFrame(() => S_.current = !0);
}
}, [
x_,
m_.trigger,
m_.valueNode,
g_,
v_,
w_,
T_,
E_,
m_.dir,
Q
]);
useLayoutEffect2(() => O_(), [O_]);
let [k_, A_] = React.useState();
useLayoutEffect2(() => {
v_ && A_(window.getComputedStyle(v_).zIndex);
}, [v_]);
let j_ = React.useCallback((j) => {
j && C_.current === !0 && (O_(), D_?.(), C_.current = !1);
}, [O_, D_]);
return /* @__PURE__ */ jsx(SelectViewportProvider, {
scope: q,
contentWrapper: g_,
shouldExpandOnScrollRef: S_,
onScrollButtonChange: j_,
children: /* @__PURE__ */ jsx("div", {
ref: __,
style: {
display: "flex",
flexDirection: "column",
position: "fixed",
zIndex: k_
},
children: /* @__PURE__ */ jsx(Primitive.div, {
...p_,
ref: b_,
style: {
boxSizing: "border-box",
maxHeight: "100%",
...p_.style
}
})
})
});
});
SelectItemAlignedPosition.displayName = ITEM_ALIGNED_POSITION_NAME;
var POPPER_POSITION_NAME = "SelectPopperPosition", SelectPopperPosition = React.forwardRef((j, I) => {
let { __scopeSelect: q, align: Q = "start", collisionPadding: p_ = CONTENT_MARGIN,...m_ } = j, h_ = usePopperScope(q);
return /* @__PURE__ */ jsx(Content$1, {
...h_,
...m_,
ref: I,
align: Q,
collisionPadding: p_,
style: {
boxSizing: "border-box",
...m_.style,
"--radix-select-content-transform-origin": "var(--radix-popper-transform-origin)",
"--radix-select-content-available-width": "var(--radix-popper-available-width)",
"--radix-select-content-available-height": "var(--radix-popper-available-height)",
"--radix-select-trigger-width": "var(--radix-popper-anchor-width)",
"--radix-select-trigger-height": "var(--radix-popper-anchor-height)"
}
});
});
SelectPopperPosition.displayName = POPPER_POSITION_NAME;
var [SelectViewportProvider, useSelectViewportContext] = createSelectContext(CONTENT_NAME$3, {}), VIEWPORT_NAME = "SelectViewport", SelectViewport = React.forwardRef((j, I) => {
let { __scopeSelect: q, nonce: Q,...p_ } = j, m_ = useSelectContentContext(VIEWPORT_NAME, q), h_ = useSelectViewportContext(VIEWPORT_NAME, q), g_ = useComposedRefs$1(I, m_.onViewportChange), __ = React.useRef(0);
return /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx("style", {
dangerouslySetInnerHTML: { __html: "[data-radix-select-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-select-viewport]::-webkit-scrollbar{display:none}" },
nonce: Q
}), /* @__PURE__ */ jsx(Collection.Slot, {
scope: q,
children: /* @__PURE__ */ jsx(Primitive.div, {
"data-radix-select-viewport": "",
role: "presentation",
...p_,
ref: g_,
style: {
position: "relative",
flex: 1,
overflow: "hidden auto",
...p_.style
},
onScroll: composeEventHandlers(p_.onScroll, (j) => {
let I = j.currentTarget, { contentWrapper: q, shouldExpandOnScrollRef: Q } = h_;
if (Q?.current && q) {
let j = Math.abs(__.current - I.scrollTop);
if (j > 0) {
let Q = window.innerHeight - CONTENT_MARGIN * 2, p_ = parseFloat(q.style.minHeight), m_ = parseFloat(q.style.height), h_ = Math.max(p_, m_);
if (h_ < Q) {
let p_ = h_ + j, m_ = Math.min(Q, p_), g_ = p_ - m_;
q.style.height = m_ + "px", q.style.bottom === "0px" && (I.scrollTop = g_ > 0 ? g_ : 0, q.style.justifyContent = "flex-end");
}
}
}
__.current = I.scrollTop;
})
})
})] });
});
SelectViewport.displayName = VIEWPORT_NAME;
var GROUP_NAME$1 = "SelectGroup", [SelectGroupContextProvider, useSelectGroupContext] = createSelectContext(GROUP_NAME$1), SelectGroup = React.forwardRef((j, I) => {
let { __scopeSelect: q,...Q } = j, p_ = useId$1();
return /* @__PURE__ */ jsx(SelectGroupContextProvider, {
scope: q,
id: p_,
children: /* @__PURE__ */ jsx(Primitive.div, {
role: "group",
"aria-labelledby": p_,
...Q,
ref: I
})
});
});
SelectGroup.displayName = GROUP_NAME$1;
var LABEL_NAME$1 = "SelectLabel", SelectLabel = React.forwardRef((j, I) => {
let { __scopeSelect: q,...Q } = j, p_ = useSelectGroupContext(LABEL_NAME$1, q);
return /* @__PURE__ */ jsx(Primitive.div, {
id: p_.id,
...Q,
ref: I
});
});
SelectLabel.displayName = LABEL_NAME$1;
var ITEM_NAME$2 = "SelectItem", [SelectItemContextProvider, useSelectItemContext] = createSelectContext(ITEM_NAME$2), SelectItem$1 = React.forwardRef((j, I) => {
let { __scopeSelect: q, value: Q, disabled: p_ = !1, textValue: m_,...h_ } = j, g_ = useSelectContext(ITEM_NAME$2, q), __ = useSelectContentContext(ITEM_NAME$2, q), v_ = g_.value === Q, [y_, b_] = React.useState(m_ ?? ""), [x_, S_] = React.useState(!1), C_ = useComposedRefs$1(I, (j) => __.itemRefCallback?.(j, Q, p_)), w_ = useId$1(), T_ = React.useRef("touch"), E_ = () => {
p_ || (g_.onValueChange(Q), g_.onOpenChange(!1));
};
if (Q === "") throw Error("A <Select.Item /> must have a value prop that is not an empty string. This is because the Select value can be set to an empty string to clear the selection and show the placeholder.");
return /* @__PURE__ */ jsx(SelectItemContextProvider, {
scope: q,
value: Q,
disabled: p_,
textId: w_,
isSelected: v_,
onItemTextChange: React.useCallback((j) => {
b_((I) => I || (j?.textContent ?? "").trim());
}, []),
children: /* @__PURE__ */ jsx(Collection.ItemSlot, {
scope: q,
value: Q,
disabled: p_,
textValue: y_,
children: /* @__PURE__ */ jsx(Primitive.div, {
role: "option",
"aria-labelledby": w_,
"data-highlighted": x_ ? "" : void 0,
"aria-selected": v_ && x_,
"data-state": v_ ? "checked" : "unchecked",
"aria-disabled": p_ || void 0,
"data-disabled": p_ ? "" : void 0,
tabIndex: p_ ? void 0 : -1,
...h_,
ref: C_,
onFocus: composeEventHandlers(h_.onFocus, () => S_(!0)),
onBlur: composeEventHandlers(h_.onBlur, () => S_(!1)),
onClick: composeEventHandlers(h_.onClick, () => {
T_.current !== "mouse" && E_();
}),
onPointerUp: composeEventHandlers(h_.onPointerUp, () => {
T_.current === "mouse" && E_();
}),
onPointerDown: composeEventHandlers(h_.onPointerDown, (j) => {
T_.current = j.pointerType;
}),
onPointerMove: composeEventHandlers(h_.onPointerMove, (j) => {
T_.current = j.pointerType, p_ ? __.onItemLeave?.() : T_.current === "mouse" && j.currentTarget.focus({ preventScroll: !0 });
}),
onPointerLeave: composeEventHandlers(h_.onPointerLeave, (j) => {
j.currentTarget === document.activeElement && __.onItemLeave?.();
}),
onKeyDown: composeEventHandlers(h_.onKeyDown, (j) => {
__.searchRef?.current !== "" && j.key === " " || (SELECTION_KEYS.includes(j.key) && E_(), j.key === " " && j.preventDefault());
})
})
})
});
});
SelectItem$1.displayName = ITEM_NAME$2;
var ITEM_TEXT_NAME = "SelectItemText", SelectItemText = React.forwardRef((j, I) => {
let { __scopeSelect: q, className: Q, style: p_,...m_ } = j, h_ = useSelectContext(ITEM_TEXT_NAME, q), g_ = useSelectContentContext(ITEM_TEXT_NAME, q), __ = useSelectItemContext(ITEM_TEXT_NAME, q), v_ = useSelectNativeOptionsContext(ITEM_TEXT_NAME, q), [y_, b_] = React.useState(null), x_ = useComposedRefs$1(I, (j) => b_(j), __.onItemTextChange, (j) => g_.itemTextRefCallback?.(j, __.value, __.disabled)), S_ = y_?.textContent, C_ = React.useMemo(() => /* @__PURE__ */ jsx("option", {
value: __.value,
disabled: __.disabled,
children: S_
}, __.value), [
__.disabled,
__.value,
S_
]), { onNativeOptionAdd: w_, onNativeOptionRemove: T_ } = v_;
return useLayoutEffect2(() => (w_(C_), () => T_(C_)), [
w_,
T_,
C_
]), /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(Primitive.span, {
id: __.textId,
...m_,
ref: x_
}), __.isSelected && h_.valueNode && !h_.valueNodeHasChildren ? ReactDOM$2.createPortal(m_.children, h_.valueNode) : null] });
});
SelectItemText.displayName = ITEM_TEXT_NAME;
var ITEM_INDICATOR_NAME = "SelectItemIndicator", SelectItemIndicator = React.forwardRef((j, I) => {
let { __scopeSelect: q,...Q } = j;
return useSelectItemContext(ITEM_INDICATOR_NAME, q).isSelected ? /* @__PURE__ */ jsx(Primitive.span, {
"aria-hidden": !0,
...Q,
ref: I
}) : null;
});
SelectItemIndicator.displayName = ITEM_INDICATOR_NAME;
var SCROLL_UP_BUTTON_NAME = "SelectScrollUpButton", SelectScrollUpButton$1 = React.forwardRef((j, I) => {
let q = useSelectContentContext(SCROLL_UP_BUTTON_NAME, j.__scopeSelect), Q = useSelectViewportContext(SCROLL_UP_BUTTON_NAME, j.__scopeSelect), [p_, m_] = React.useState(!1), h_ = useComposedRefs$1(I, Q.onScrollButtonChange);
return useLayoutEffect2(() => {
if (q.viewport && q.isPositioned) {
let j = function() {
let j = I.scrollTop > 0;
m_(j);
}, I = q.viewport;
return j(), I.addEventListener("scroll", j), () => I.removeEventListener("scroll", j);
}
}, [q.viewport, q.isPositioned]), p_ ? /* @__PURE__ */ jsx(SelectScrollButtonImpl, {
...j,
ref: h_,
onAutoScroll: () => {
let { viewport: j, selectedItem: I } = q;
j && I && (j.scrollTop -= I.offsetHeight);
}
}) : null;
});
SelectScrollUpButton$1.displayName = SCROLL_UP_BUTTON_NAME;
var SCROLL_DOWN_BUTTON_NAME = "SelectScrollDownButton", SelectScrollDownButton$1 = React.forwardRef((j, I) => {
let q = useSelectContentContext(SCROLL_DOWN_BUTTON_NAME, j.__scopeSelect), Q = useSelectViewportContext(SCROLL_DOWN_BUTTON_NAME, j.__scopeSelect), [p_, m_] = React.useState(!1), h_ = useComposedRefs$1(I, Q.onScrollButtonChange);
return useLayoutEffect2(() => {
if (q.viewport && q.isPositioned) {
let j = function() {
let j = I.scrollHeight - I.clientHeight, q = Math.ceil(I.scrollTop) < j;
m_(q);
}, I = q.viewport;
return j(), I.addEventListener("scroll", j), () => I.removeEventListener("scroll", j);
}
}, [q.viewport, q.isPositioned]), p_ ? /* @__PURE__ */ jsx(SelectScrollButtonImpl, {
...j,
ref: h_,
onAutoScroll: () => {
let { viewport: j, selectedItem: I } = q;
j && I && (j.scrollTop += I.offsetHeight);
}
}) : null;
});
SelectScrollDownButton$1.displayName = SCROLL_DOWN_BUTTON_NAME;
var SelectScrollButtonImpl = React.forwardRef((j, I) => {
let { __scopeSelect: q, onAutoScroll: Q,...p_ } = j, m_ = useSelectContentContext("SelectScrollButton", q), h_ = React.useRef(null), g_ = useCollection(q), __ = React.useCallback(() => {
h_.current !== null && (window.clearInterval(h_.current), h_.current = null);
}, []);
return React.useEffect(() => () => __(), [__]), useLayoutEffect2(() => {
g_().find((j) => j.ref.current === document.activeElement)?.ref.current?.scrollIntoView({ block: "nearest" });
}, [g_]), /* @__PURE__ */ jsx(Primitive.div, {
"aria-hidden": !0,
...p_,
ref: I,
style: {
flexShrink: 0,
...p_.style
},
onPointerDown: composeEventHandlers(p_.onPointerDown, () => {
h_.current === null && (h_.current = window.setInterval(Q, 50));
}),
onPointerMove: composeEventHandlers(p_.onPointerMove, () => {
m_.onItemLeave?.(), h_.current === null && (h_.current = window.setInterval(Q, 50));
}),
onPointerLeave: composeEventHandlers(p_.onPointerLeave, () => {
__();
})
});
}), SEPARATOR_NAME$1 = "SelectSeparator", SelectSeparator = React.forwardRef((j, I) => {
let { __scopeSelect: q,...Q } = j;
return /* @__PURE__ */ jsx(Primitive.div, {
"aria-hidden": !0,
...Q,
ref: I
});
});
SelectSeparator.displayName = SEPARATOR_NAME$1;
var ARROW_NAME$1 = "SelectArrow", SelectArrow = React.forwardRef((j, I) => {
let { __scopeSelect: q,...Q } = j, p_ = usePopperScope(q), m_ = useSelectContext(ARROW_NAME$1, q), h_ = useSelectContentContext(ARROW_NAME$1, q);
return m_.open && h_.position === "popper" ? /* @__PURE__ */ jsx(Arrow, {
...p_,
...Q,
ref: I
}) : null;
});
SelectArrow.displayName = ARROW_NAME$1;
var BUBBLE_INPUT_NAME$1 = "SelectBubbleInput", SelectBubbleInput = React.forwardRef(({ __scopeSelect: j, value: I,...q }, Q) => {
let p_ = React.useRef(null), m_ = useComposedRefs$1(Q, p_), h_ = usePrevious$1(I);
return React.useEffect(() => {
let j = p_.current;
if (!j) return;
let q = window.HTMLSelectElement.prototype, Q = Object.getOwnPropertyDescriptor(q, "value").set;
if (h_ !== I && Q) {
let q = new Event("change", { bubbles: !0 });
Q.call(j, I), j.dispatchEvent(q);
}
}, [h_, I]), /* @__PURE__ */ jsx(Primitive.select, {
...q,
style: {
...VISUALLY_HIDDEN_STYLES,
...q.style
},
ref: m_,
defaultValue: I
});
});
SelectBubbleInput.displayName = BUBBLE_INPUT_NAME$1;
function shouldShowPlaceholder(j) {
return j === "" || j === void 0;
}
function useTypeaheadSearch(j) {
let I = useCallbackRef(j), q = React.useRef(""), Q = React.useRef(0), p_ = React.useCallback((j) => {
let p_ = q.current + j;
I(p_), (function j(I) {
q.current = I, window.clearTimeout(Q.current), I !== "" && (Q.current = window.setTimeout(() => j(""), 1e3));
})(p_);
}, [I]), m_ = React.useCallback(() => {
q.current = "", window.clearTimeout(Q.current);
}, []);
return React.useEffect(() => () => window.clearTimeout(Q.current), []), [
q,
p_,
m_
];
}
function findNextItem(j, I, q) {
let Q = I.length > 1 && Array.from(I).every((j) => j === I[0]) ? I[0] : I, p_ = q ? j.indexOf(q) : -1, m_ = wrapArray(j, Math.max(p_, 0));
Q.length === 1 && (m_ = m_.filter((j) => j !== q));
let h_ = m_.find((j) => j.textValue.toLowerCase().startsWith(Q.toLowerCase()));
return h_ === q ? void 0 : h_;
}
function wrapArray(j, I) {
return j.map((q, Q) => j[(I + Q) % j.length]);
}
var Root2$2 = Select$1, Trigger$2 = SelectTrigger$1, Value = SelectValue$1, Icon = SelectIcon, Portal$1 = SelectPortal, Content2$1 = SelectContent$1, Viewport = SelectViewport, Item = SelectItem$1, ItemText = SelectItemText, ItemIndicator = SelectItemIndicator, ScrollUpButton = SelectScrollUpButton$1, ScrollDownButton = SelectScrollDownButton$1;
function Select({ ...j }) {
return /* @__PURE__ */ jsx(Root2$2, {
"data-slot": "select",
...j
});
}
function SelectValue({ ...j }) {
return /* @__PURE__ */ jsx(Value, {
"data-slot": "select-value",
...j
});
}
function SelectTrigger({ className: j, size: I = "default", children: q,...Q }) {
return /* @__PURE__ */ jsxs(Trigger$2, {
"data-slot": "select-trigger",
"data-size": I,
className: cn("border-input data-placeholder:text-muted-foreground [&_svg:not([class*='text-'])]:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/40 aria-invalid:border-destructive bg-input/30 hover:bg-input/50 flex w-fit items-center justify-between gap-2 whitespace-nowrap rounded-md border px-3 py-2 text-sm shadow-sm outline-none transition-[color,box-shadow] focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0", j),
...Q,
children: [q, /* @__PURE__ */ jsx(Icon, {
asChild: !0,
children: /* @__PURE__ */ jsx(ChevronDownIcon, { className: "size-4 opacity-50" })
})]
});
}
function SelectContent({ className: j, children: I, position: q = "popper", align: Q = "center",...p_ }) {
let { container: m_ } = useLaboratory();
return /* @__PURE__ */ jsx(Portal$1, {
container: m_,
children: /* @__PURE__ */ jsxs(Content2$1, {
"data-slot": "select-content",
className: cn("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 relative z-50 max-h-[var(--radix-select-content-available-height)] min-w-[8rem] origin-[var(--radix-select-content-transform-origin)] overflow-y-auto overflow-x-hidden rounded-md border shadow-md", q === "popper" && "data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1", j),
position: q,
align: Q,
...p_,
children: [
/* @__PURE__ */ jsx(SelectScrollUpButton, {}),
/* @__PURE__ */ jsx(Viewport, {
className: cn("p-1", q === "popper" && "h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1"),
children: I
}),
/* @__PURE__ */ jsx(SelectScrollDownButton, {})
]
})
});
}
function SelectItem({ className: j, children: I,...q }) {
return /* @__PURE__ */ jsxs(Item, {
"data-slot": "select-item",
className: cn("focus:bg-accent focus:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground outline-hidden *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2 data-disabled:pointer-events-none data-disabled:opacity-50 relative flex w-full cursor-default select-none items-center gap-2 rounded-sm py-1.5 pl-2 pr-8 text-sm [&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0", j),
...q,
children: [/* @__PURE__ */ jsx("span", {
className: "absolute right-2 flex size-3.5 items-center justify-center",
children: /* @__PURE__ */ jsx(ItemIndicator, { children: /* @__PURE__ */ jsx(CheckIcon, { className: "size-4" }) })
}), /* @__PURE__ */ jsx(ItemText, { children: I })]
});
}
function SelectScrollUpButton({ className: j,...I }) {
return /* @__PURE__ */ jsx(ScrollUpButton, {
"data-slot": "select-scroll-up-button",
className: cn("flex cursor-default items-center justify-center py-1", j),
...I,
children: /* @__PURE__ */ jsx(ChevronUpIcon, { className: "size-4" })
});
}
function SelectScrollDownButton({ className: j,...I }) {
return /* @__PURE__ */ jsx(ScrollDownButton, {
"data-slot": "select-scroll-down-button",
className: cn("flex cursor-default items-center justify-center py-1", j),
...I,
children: /* @__PURE__ */ jsx(ChevronDownIcon, { className: "size-4" })
});
}
function Spinner({ className: j,...I }) {
return /* @__PURE__ */ jsx(Loader2Icon, {
role: "status",
"aria-label": "Loading",
className: cn("size-4 animate-spin", j),
...I
});
}
var TABS_NAME = "Tabs", [createTabsContext, createTabsScope] = createContextScope(TABS_NAME, [createRovingFocusGroupScope]), useRovingFocusGroupScope = createRovingFocusGroupScope(), [TabsProvider, useTabsContext] = createTabsContext(TABS_NAME), Tabs$2 = React.forwardRef((j, I) => {
let { __scopeTabs: q, value: Q, onValueChange: p_, defaultValue: m_, orientation: h_ = "horizontal", dir: g_, activationMode: __ = "automatic",...v_ } = j, y_ = useDirection(g_), [b_, x_] = useControllableState({
prop: Q,
onChange: p_,
defaultProp: m_ ?? "",
caller: TABS_NAME
});
return /* @__PURE__ */ jsx(TabsProvider, {
scope: q,
baseId: useId$1(),
value: b_,
onValueChange: x_,
orientation: h_,
dir: y_,
activationMode: __,
children: /* @__PURE__ */ jsx(Primitive.div, {
dir: y_,
"data-orientation": h_,
...v_,
ref: I
})
});
});
Tabs$2.displayName = TABS_NAME;
var TAB_LIST_NAME = "TabsList", TabsList$1 = React.forwardRef((j, I) => {
let { __scopeTabs: q, loop: Q = !0,...p_ } = j, m_ = useTabsContext(TAB_LIST_NAME, q), h_ = useRovingFocusGroupScope(q);
return /* @__PURE__ */ jsx(Root$5, {
asChild: !0,
...h_,
orientation: m_.orientation,
dir: m_.dir,
loop: Q,
children: /* @__PURE__ */ jsx(Primitive.div, {
role: "tablist",
"aria-orientation": m_.orientation,
...p_,
ref: I
})
});
});
TabsList$1.displayName = TAB_LIST_NAME;
var TRIGGER_NAME$2 = "TabsTrigger", TabsTrigger$1 = React.forwardRef((j, I) => {
let { __scopeTabs: q, value: Q, disabled: p_ = !1,...m_ } = j, h_ = useTabsContext(TRIGGER_NAME$2, q), g_ = useRovingFocusGroupScope(q), __ = makeTriggerId(h_.baseId, Q), v_ = makeContentId(h_.baseId, Q), y_ = Q === h_.value;
return /* @__PURE__ */ jsx(Item$1, {
asChild: !0,
...g_,
focusable: !p_,
active: y_,
children: /* @__PURE__ */ jsx(Primitive.button, {
type: "button",
role: "tab",
"aria-selected": y_,
"aria-controls": v_,
"data-state": y_ ? "active" : "inactive",
"data-disabled": p_ ? "" : void 0,
disabled: p_,
id: __,
...m_,
ref: I,
onMouseDown: composeEventHandlers(j.onMouseDown, (j) => {
!p_ && j.button === 0 && j.ctrlKey === !1 ? h_.onValueChange(Q) : j.preventDefault();
}),
onKeyDown: composeEventHandlers(j.onKeyDown, (j) => {
[" ", "Enter"].includes(j.key) && h_.onValueChange(Q);
}),
onFocus: composeEventHandlers(j.onFocus, () => {
let j = h_.activationMode !== "manual";
!y_ && !p_ && j && h_.onValueChange(Q);
})
})
});
});
TabsTrigger$1.displayName = TRIGGER_NAME$2;
var CONTENT_NAME$2 = "TabsContent", TabsContent$1 = React.forwardRef((j, I) => {
let { __scopeTabs: q, value: Q, forceMount: p_, children: m_,...h_ } = j, g_ = useTabsContext(CONTENT_NAME$2, q), __ = makeTriggerId(g_.baseId, Q), v_ = makeContentId(g_.baseId, Q), y_ = Q === g_.value, b_ = React.useRef(y_);
return React.useEffect(() => {
let j = requestAnimationFrame(() => b_.current = !1);
return () => cancelAnimationFrame(j);
}, []), /* @__PURE__ */ jsx(Presence, {
present: p_ || y_,
children: ({ present: q }) => /* @__PURE__ */ jsx(Primitive.div, {
"data-state": y_ ? "active" : "inactive",
"data-orientation": g_.orientation,
role: "tabpanel",
"aria-labelledby": __,
hidden: !q,
id: v_,
tabIndex: 0,
...h_,
ref: I,
style: {
...j.style,
animationDuration: b_.current ? "0s" : void 0
},
children: q && m_
})
});
});
TabsContent$1.displayName = CONTENT_NAME$2;
function makeTriggerId(j, I) {
return `${j}-trigger-${I}`;
}
function makeContentId(j, I) {
return `${j}-content-${I}`;
}
var Root2$1 = Tabs$2, List = TabsList$1, Trigger$1 = TabsTrigger$1, Content = TabsContent$1;
function Tabs({ className: j,...I }) {
return /* @__PURE__ */ jsx(Root2$1, {
"data-slot": "tabs",
className: cn("flex flex-col", j),
...I
});
}
function TabsList({ className: j,...I }) {
return /* @__PURE__ */ jsx(List, {
"data-slot": "tabs-list",
className: cn("bg-muted text-muted-foreground inline-flex h-9 w-fit items-center justify-center rounded-lg p-[3px]", j),
...I
});
}
function TabsTrigger({ className: j,...I }) {
return /* @__PURE__ */ jsx(Trigger$1, {
"data-slot": "tabs-trigger",
className: cn("data-[state=active]:text-foreground focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring data-[state=active]:border-input data-[state=active]:bg-input/30 text-muted-foreground inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 whitespace-nowrap rounded-md border border-transparent px-2 py-1 text-sm font-medium transition-[color,box-shadow] focus-visible:outline-1 focus-visible:ring-[3px] disabled:pointer-events-none disabled:opacity-50 data-[state=active]:shadow-sm [&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0", j),
...I
});
}
function TabsContent({ className: j,...I }) {
return /* @__PURE__ */ jsx(Content, {
"data-slot": "tabs-content",
className: cn("flex-1 outline-none", j),
...I
});
}
var NAME = "Toggle", Toggle$1 = React.forwardRef((j, I) => {
let { pressed: q, defaultPressed: Q, onPressedChange: p_,...m_ } = j, [h_, g_] = useControllableState({
prop: q,
onChange: p_,
defaultProp: Q ?? !1,
caller: NAME
});
return /* @__PURE__ */ jsx(Primitive.button, {
type: "button",
"aria-pressed": h_,
"data-state": h_ ? "on" : "off",
"data-disabled": j.disabled ? "" : void 0,
...m_,
ref: I,
onClick: composeEventHandlers(j.onClick, () => {
j.disabled || g_(!h_);
})
});
});
Toggle$1.displayName = NAME;
var Root = Toggle$1, toggleVariants = cva("inline-flex items-center justify-center gap-2 rounded-md text-sm font-medium hover:bg-muted hover:text-muted-foreground disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 [&_svg]:shrink-0 focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] outline-none transition-[color,box-shadow] aria-invalid:ring-destructive/40 aria-invalid:border-destructive whitespace-nowrap", {
variants: {
variant: {
default: "bg-transparent",
outline: "border border-input bg-transparent shadow-sm hover:bg-accent hover:text-accent-foreground"
},
size: {
default: "h-9 px-2 min-w-9",
sm: "h-8 px-1.5 min-w-8",
lg: "h-10 px-2.5 min-w-10"
}
},
defaultVariants: {
variant: "default",
size: "default"
}
});
function Toggle({ className: j, variant: I, size: q,...Q }) {
return /* @__PURE__ */ jsx(Root, {
"data-slot": "toggle",
className: cn(toggleVariants({
variant: I,
size: q,
className: j
})),
...Q
});
}
const GraphQLType = (j) => j.type instanceof GraphQLNonNull ? /* @__PURE__ */ jsxs("span", { children: [/* @__PURE__ */ jsx(GraphQLType, { type: j.type.ofType }), /* @__PURE__ */ jsx("span", {
className: "text-muted-foreground!",
children: "!"
})] }) : j.type instanceof GraphQLList ? /* @__PURE__ */ jsxs("span", { children: [
/* @__PURE__ */ jsx("span", {
className: "text-muted-foreground!",
children: "["
}),
/* @__PURE__ */ jsx(GraphQLType, { type: j.type.ofType }),
/* @__PURE__ */ jsx("span", {
className: "text-muted-foreground!",
children: "]"
})
] }) : j.type instanceof GraphQLScalarType || j.type instanceof GraphQLEnumType ? /* @__PURE__ */ jsx("span", {
className: "text-teal-400",
children: j.type.name
}) : /* @__PURE__ */ jsx("span", {
className: "text-amber-400",
children: j.type.name
});
var CHECKBOX_NAME = "Checkbox", [createCheckboxContext, createCheckboxScope] = createContextScope(CHECKBOX_NAME), [CheckboxProviderImpl, useCheckboxContext] = createCheckboxContext(CHECKBOX_NAME);
function CheckboxProvider(j) {
let { __scopeCheckbox: I, checked: q, children: Q, defaultChecked: p_, disabled: m_, form: h_, name: g_, onCheckedChange: __, required: v_, value: y_ = "on", internal_do_not_use_render: b_ } = j, [x_, S_] = useControllableState({
prop: q,
defaultProp: p_ ?? !1,
onChange: __,
caller: CHECKBOX_NAME
}), [C_, w_] = React.useState(null), [T_, E_] = React.useState(null), D_ = React.useRef(!1), O_ = C_ ? !!h_ || !!C_.closest("form") : !0, k_ = {
checked: x_,
disabled: m_,
setChecked: S_,
control: C_,
setControl: w_,
name: g_,
form: h_,
value: y_,
hasConsumerStoppedPropagationRef: D_,
required: v_,
defaultChecked: isIndeterminate(p_) ? !1 : p_,
isFormControl: O_,
bubbleInput: T_,
setBubbleInput: E_
};
return /* @__PURE__ */ jsx(CheckboxProviderImpl, {
scope: I,
...k_,
children: isFunction(b_) ? b_(k_) : Q
});
}
var TRIGGER_NAME$1 = "CheckboxTrigger", CheckboxTrigger = React.forwardRef(({ __scopeCheckbox: j, onKeyDown: I, onClick: q,...Q }, p_) => {
let { control: m_, value: h_, disabled: g_, checked: __, required: v_, setControl: y_, setChecked: b_, hasConsumerStoppedPropagationRef: x_, isFormControl: S_, bubbleInput: C_ } = useCheckboxContext(TRIGGER_NAME$1, j), w_ = useComposedRefs$1(p_, y_), T_ = React.useRef(__);
return React.useEffect(() => {
let j = m_?.form;
if (j) {
let I = () => b_(T_.current);
return j.addEventListener("reset", I), () => j.removeEventListener("reset", I);
}
}, [m_, b_]), /* @__PURE__ */ jsx(Primitive.button, {
type: "button",
role: "checkbox",
"aria-checked": isIndeterminate(__) ? "mixed" : __,
"aria-required": v_,
"data-state": getState(__),
"data-disabled": g_ ? "" : void 0,
disabled: g_,
value: h_,
...Q,
ref: w_,
onKeyDown: composeEventHandlers(I, (j) => {
j.key === "Enter" && j.preventDefault();
}),
onClick: composeEventHandlers(q, (j) => {
b_((j) => isIndeterminate(j) ? !0 : !j), C_ && S_ && (x_.current = j.isPropagationStopped(), x_.current || j.stopPropagation());
})
});
});
CheckboxTrigger.displayName = TRIGGER_NAME$1;
var Checkbox$1 = React.forwardRef((j, I) => {
let { __scopeCheckbox: q, name: Q, checked: p_, defaultChecked: m_, required: h_, disabled: g_, value: __, onCheckedChange: v_, form: y_,...b_ } = j;
return /* @__PURE__ */ jsx(CheckboxProvider, {
__scopeCheckbox: q,
checked: p_,
defaultChecked: m_,
disabled: g_,
required: h_,
onCheckedChange: v_,
name: Q,
form: y_,
value: __,
internal_do_not_use_render: ({ isFormControl: j }) => /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(CheckboxTrigger, {
...b_,
ref: I,
__scopeCheckbox: q
}), j && /* @__PURE__ */ jsx(CheckboxBubbleInput, { __scopeCheckbox: q })] })
});
});
Checkbox$1.displayName = CHECKBOX_NAME;
var INDICATOR_NAME$1 = "CheckboxIndicator", CheckboxIndicator = React.forwardRef((j, I) => {
let { __scopeCheckbox: q, forceMount: Q,...p_ } = j, m_ = useCheckboxContext(INDICATOR_NAME$1, q);
return /* @__PURE__ */ jsx(Presence, {
present: Q || isIndeterminate(m_.checked) || m_.checked === !0,
children: /* @__PURE__ */ jsx(Primitive.span, {
"data-state": getState(m_.checked),
"data-disabled": m_.disabled ? "" : void 0,
...p_,
ref: I,
style: {
pointerEvents: "none",
...j.style
}
})
});
});
CheckboxIndicator.displayName = INDICATOR_NAME$1;
var BUBBLE_INPUT_NAME = "CheckboxBubbleInput", CheckboxBubbleInput = React.forwardRef(({ __scopeCheckbox: j,...I }, q) => {
let { control: Q, hasConsumerStoppedPropagationRef: p_, checked: m_, defaultChecked: h_, required: g_, disabled: __, name: v_, value: y_, form: b_, bubbleInput: x_, setBubbleInput: S_ } = useCheckboxContext(BUBBLE_INPUT_NAME, j), C_ = useComposedRefs$1(q, S_), w_ = usePrevious$1(m_), T_ = useSize(Q);
React.useEffect(() => {
let j = x_;
if (!j) return;
let I = window.HTMLInputElement.prototype, q = Object.getOwnPropertyDescriptor(I, "checked").set, Q = !p_.current;
if (w_ !== m_ && q) {
let I = new Event("click", { bubbles: Q });
j.indeterminate = isIndeterminate(m_), q.call(j, isIndeterminate(m_) ? !1 : m_), j.dispatchEvent(I);
}
}, [
x_,
w_,
m_,
p_
]);
let E_ = React.useRef(isIndeterminate(m_) ? !1 : m_);
return /* @__PURE__ */ jsx(Primitive.input, {
type: "checkbox",
"aria-hidden": !0,
defaultChecked: h_ ?? E_.current,
required: g_,
disabled: __,
name: v_,
value: y_,
form: b_,
...I,
tabIndex: -1,
ref: C_,
style: {
...I.style,
...T_,
position: "absolute",
pointerEvents: "none",
opacity: 0,
margin: 0,
transform: "translateX(-100%)"
}
});
});
CheckboxBubbleInput.displayName = BUBBLE_INPUT_NAME;
function isFunction(j) {
return typeof j == "function";
}
function isIndeterminate(j) {
return j === "indeterminate";
}
function getState(j) {
return isIndeterminate(j) ? "indeterminate" : j ? "checked" : "unchecked";
}
function Checkbox({ className: j,...I }) {
return /* @__PURE__ */ jsx(Checkbox$1, {
"data-slot": "checkbox",
className: cn("border-input bg-input/30 data-[state=checked]:text-primary-foreground data-[state=checked]:bg-primary data-[state=checked]:border-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/40 aria-invalid:border-destructive peer size-4 shrink-0 rounded-[4px] border shadow-sm outline-none transition-shadow focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50", j),
...I,
children: /* @__PURE__ */ jsx(CheckboxIndicator, {
"data-slot": "checkbox-indicator",
className: "grid place-content-center text-current transition-none",
children: /* @__PURE__ */ jsx(CheckIcon, { className: "size-3.5" })
})
});
}
function InputGroup({ className: j,...I }) {
return /* @__PURE__ */ jsx("div", {
"data-slot": "input-group",
role: "group",
className: cn("group/input-group border-input dark:bg-input/30 relative flex w-full items-center rounded-md border shadow-sm outline-none transition-[color,box-shadow]", "h-9 min-w-0 has-[>textarea]:h-auto", "has-[>[data-align=inline-start]]:[&>input]:pl-2", "has-[>[data-align=inline-end]]:[&>input]:pr-2", "has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>[data-align=block-start]]:[&>input]:pb-3", "has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-end]]:[&>input]:pt-3", "has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:ring-ring/50 has-[[data-slot=input-group-control]:focus-visible]:ring-[3px]", "has-[[data-slot][aria-invalid=true]]:ring-destructive/20 has-[[data-slot][aria-invalid=true]]:border-destructive dark:has-[[data-slot][aria-invalid=true]]:ring-destructive/40", j),
...I
});
}
var inputGroupAddonVariants = cva("text-muted-foreground flex h-auto cursor-text items-center justify-center gap-2 py-1.5 text-sm font-medium select-none [&>svg:not([class*='size-'])]:size-4 [&>kbd]:rounded-[calc(var(--radius)-5px)] group-data-[disabled=true]/input-group:opacity-50", {
variants: { align: {
"inline-start": "order-first pl-3 has-[>button]:ml-[-0.45rem] has-[>kbd]:ml-[-0.35rem]",
"inline-end": "order-last pr-3 has-[>button]:mr-[-0.45rem] has-[>kbd]:mr-[-0.35rem]",
"block-start": "order-first w-full justify-start px-3 pt-3 [.border-b]:pb-3 group-has-[>input]/input-group:pt-2.5",
"block-end": "order-last w-full justify-start px-3 pb-3 [.border-t]:pt-3 group-has-[>input]/input-group:pb-2.5"
} },
defaultVariants: { align: "inline-start" }
});
function InputGroupAddon({ className: j, align: I = "inline-start",...q }) {
return /* @__PURE__ */ jsx("div", {
role: "group",
"data-slot": "input-group-addon",
"data-align": I,
className: cn(inputGroupAddonVariants({ align: I }), j),
onClick: (j) => {
j.target.closest("button") || j.currentTarget.parentElement?.querySelector("input")?.focus();
},
...q
});
}
var inputGroupButtonVariants = cva("text-sm shadow-none flex gap-2 items-center", {
variants: { size: {
xs: "h-6 gap-1 px-2 rounded-[calc(var(--radius)-5px)] [&>svg:not([class*='size-'])]:size-3.5 has-[>svg]:px-2",
sm: "h-8 px-2.5 gap-1.5 rounded-md has-[>svg]:px-2.5",
"icon-xs": "size-6 rounded-[calc(var(--radius)-5px)] p-0 has-[>svg]:p-0",
"icon-sm": "size-8 p-0 has-[>svg]:p-0"
} },
defaultVariants: { size: "xs" }
});
function InputGroupButton({ className: j, type: I = "button", variant: q = "ghost", size: Q = "xs",...p_ }) {
return /* @__PURE__ */ jsx(Button, {
type: I,
"data-size": Q,
variant: q,
className: cn(inputGroupButtonVariants({ size: Q }), j),
...p_
});
}
function InputGroupInput({ className: j,...I }) {
return /* @__PURE__ */ jsx(Input, {
"data-slot": "input-group-control",
className: cn("flex-1 rounded-none border-0 bg-transparent shadow-none focus-visible:ring-0 dark:bg-transparent", j),
...I
});
}
var import_lodash$1 = /* @__PURE__ */ __toESM(require_lodash());
const BuilderArgument = (j) => {
let { schema: I, activeOperation: q, addArgToActiveOperation: Q, deleteArgFromActiveOperation: p_, activeTab: m_ } = useLaboratory(), h_ = useMemo(() => j.operation ?? q ?? null, [j.operation, q]), g_ = useMemo(() => j.path.join("."), [j.path]), __ = useMemo(() => isArgInQuery(h_?.query ?? "", g_, j.field.name), [
h_?.query,
g_,
j.field.name
]);
return /* @__PURE__ */ jsxs(Button, {
variant: "ghost",
className: cn("text-muted-foreground p-1! w-full justify-start text-xs", { "text-foreground-primary": __ }),
size: "sm",
children: [
/* @__PURE__ */ jsx("div", { className: "size-4" }),
/* @__PURE__ */ jsx(Checkbox, {
onClick: (j) => j.stopPropagation(),
checked: __,
disabled: m_?.type !== "operation" || j.isReadOnly,
onCheckedChange: (q) => {
I && (q ? Q(j.path.join("."), j.field.name, I) : p_(j.path.join("."), j.field.name));
}
}),
/* @__PURE__ */ jsx(BoxIcon, { className: "size-4 text-rose-400" }),
j.field.name,
": ",
/* @__PURE__ */ jsx(GraphQLType, { type: j.field.type })
]
}, j.field.name);
}, BuilderScalarField = (j) => {
let { activeOperation: I, addPathToActiveOperation: q, deletePathFromActiveOperation: Q, activeTab: p_ } = useLaboratory(), m_ = useMemo(() => j.operation ?? I ?? null, [j.operation, I]), h_ = useMemo(() => j.openPaths.includes(j.path.join(".")), [j.openPaths, j.path]), g_ = useCallback((I) => {
j.setOpenPaths(I ? [...j.openPaths, j.path.join(".")] : j.openPaths.filter((I) => I !== j.path.join(".")));
}, [j]), __ = useMemo(() => j.path.join("."), [j.path]), v_ = useMemo(() => isPathInQuery(m_?.query ?? "", __), [m_?.query, __]), y_ = useMemo(() => j.field.args ?? [], [j.field]), b_ = useMemo(() => y_.some((j) => isArgInQuery(m_?.query ?? "", __, j.name)), [
m_?.query,
y_,
__
]);
return y_.length > 0 ? /* @__PURE__ */ jsxs(Collapsible, {
open: h_,
onOpenChange: g_,
children: [/* @__PURE__ */ jsx(CollapsibleTrigger, {
asChild: !0,
children: /* @__PURE__ */ jsxs(Button, {
variant: "ghost",
className: cn("text-muted-foreground bg-card p-1! group sticky top-0 z-10 w-full justify-start overflow-hidden text-xs", { "text-foreground-primary": v_ }),
style: { top: `${(j.path.length - 2) * 32}px` },
size: "sm",
children: [
/* @__PURE__ */ jsx("div", { className: "bg-card absolute left-0 top-0 -z-20 size-full" }),
/* @__PURE__ */ jsx("div", { className: "group-hover:bg-accent/50 absolute left-0 top-0 -z-10 size-full transition-colors" }),
/* @__PURE__ */ jsx(ChevronDownIcon, { className: cn("text-muted-foreground size-4 transition-all", { "-rotate-90": !h_ }) }),
/* @__PURE__ */ jsx(Checkbox, {
onClick: (j) => j.stopPropagation(),
checked: v_,
disabled: p_?.type !== "operation" || j.isReadOnly,
onCheckedChange: (j) => {
j ? (g_(!0), q(__)) : Q(__);
}
}),
/* @__PURE__ */ jsx(BoxIcon, { className: "size-4 text-rose-400" }),
j.field.name,
": ",
/* @__PURE__ */ jsx(GraphQLType, { type: j.field.type })
]
})
}), /* @__PURE__ */ jsx(CollapsibleContent, {
className: "border-border relative z-0 ml-3 flex flex-col border-l pl-2",
children: h_ && /* @__PURE__ */ jsx("div", { children: y_.length > 0 && /* @__PURE__ */ jsxs(Collapsible, { children: [/* @__PURE__ */ jsx(CollapsibleTrigger, {
asChild: !0,
children: /* @__PURE__ */ jsxs(Button, {
variant: "ghost",
className: cn("text-muted-foreground bg-card p-1! group sticky top-0 z-10 w-full justify-start overflow-hidden text-xs", { "text-foreground-primary": b_ }),
style: { top: `${(j.path.length - 1) * 32}px` },
size: "sm",
children: [
/* @__PURE__ */ jsx(ChevronDownIcon, { className: cn("text-muted-foreground size-4 transition-all", { "-rotate-90": !h_ }) }),
/* @__PURE__ */ jsx(Checkbox, {
onClick: (j) => j.stopPropagation(),
checked: b_,
disabled: !0
}),
/* @__PURE__ */ jsx(CuboidIcon, { className: "size-4 text-rose-400" }),
"[arguments]"
]
})
}), /* @__PURE__ */ jsx(CollapsibleContent, {
className: "border-border ml-3 flex flex-col border-l pl-2",
children: y_.map((I) => /* @__PURE__ */ jsx(BuilderArgument, {
field: I,
path: [...j.path],
isReadOnly: j.isReadOnly,
operation: m_
}, I.name))
})] }) })
})]
}, j.field.name) : /* @__PURE__ */ jsxs(Button, {
variant: "ghost",
className: cn("text-muted-foreground p-1! w-full justify-start text-xs", { "text-foreground-primary": v_ }),
size: "sm",
children: [
/* @__PURE__ */ jsx("div", { className: "size-4" }),
/* @__PURE__ */ jsx(Checkbox, {
onClick: (j) => j.stopPropagation(),
checked: v_,
disabled: p_?.type !== "operation",
onCheckedChange: (I) => {
I ? q(j.path.join(".")) : Q(j.path.join("."));
}
}),
/* @__PURE__ */ jsx(BoxIcon, { className: "size-4 text-rose-400" }),
j.field.name,
": ",
/* @__PURE__ */ jsx(GraphQLType, { type: j.field.type })
]
}, j.field.name);
}, BuilderObjectField = (j) => {
let { schema: I, activeOperation: q, addPathToActiveOperation: Q, deletePathFromActiveOperation: p_, activeTab: m_ } = useLaboratory(), h_ = useMemo(() => j.operation ?? q ?? null, [j.operation, q]), g_ = useMemo(() => j.openPaths.includes(j.path.join(".")), [j.openPaths, j.path]), __ = useCallback((I) => {
j.setOpenPaths(I ? [...j.openPaths, j.path.join(".")] : j.openPaths.filter((I) => I !== j.path.join(".")));
}, [j]), v_ = useMemo(() => Object.values((I?.getType(j.field.type.toString().replace(/\[|\]|!/g, "")))?.getFields?.() ?? {}), [I, j.field.type]), y_ = useMemo(() => j.field.args ?? [], [j.field]), b_ = useMemo(() => y_.some((I) => isArgInQuery(h_?.query ?? "", j.path.join("."), I.name)), [
h_?.query,
y_,
j.path
]), x_ = useMemo(() => j.path.join("."), [j.path]), S_ = useMemo(() => isPathInQuery(h_?.query ?? "", x_), [h_?.query, x_]);
return /* @__PURE__ */ jsxs(Collapsible, {
open: g_,
onOpenChange: __,
children: [/* @__PURE__ */ jsx(CollapsibleTrigger, {
asChild: !0,
children: /* @__PURE__ */ jsxs(Button, {
variant: "ghost",
className: cn("text-muted-foreground bg-card p-1! group sticky top-0 z-10 w-full justify-start overflow-hidden text-xs", { "text-foreground-primary": S_ }),
style: { top: `${(j.path.length - 2) * 32}px` },
size: "sm",
children: [
/* @__PURE__ */ jsx("div", { className: "bg-card absolute left-0 top-0 -z-20 size-full" }),
/* @__PURE__ */ jsx("div", { className: "group-hover:bg-accent/50 absolute left-0 top-0 -z-10 size-full transition-colors" }),
/* @__PURE__ */ jsx(ChevronDownIcon, { className: cn("text-muted-foreground size-4 transition-all", { "-rotate-90": !g_ }) }),
/* @__PURE__ */ jsx(Checkbox, {
onClick: (j) => j.stopPropagation(),
checked: S_,
disabled: m_?.type !== "operation" || j.isReadOnly,
onCheckedChange: (j) => {
j ? (__(!0), Q(x_)) : p_(x_);
}
}),
/* @__PURE__ */ jsx(BoxIcon, { className: "size-4 text-rose-400" }),
j.field.name,
": ",
/* @__PURE__ */ jsx(GraphQLType, { type: j.field.type })
]
})
}), /* @__PURE__ */ jsx(CollapsibleContent, {
className: "border-border relative z-0 ml-4 flex flex-col border-l pl-1",
children: g_ && /* @__PURE__ */ jsxs("div", { children: [y_.length > 0 && /* @__PURE__ */ jsxs(Collapsible, { children: [/* @__PURE__ */ jsx(CollapsibleTrigger, {
asChild: !0,
children: /* @__PURE__ */ jsxs(Button, {
variant: "ghost",
className: cn("text-muted-foreground bg-card p-1! group sticky top-0 z-10 w-full justify-start overflow-hidden text-xs", { "text-foreground-primary": b_ }),
style: { top: `${(j.path.length - 1) * 32}px` },
size: "sm",
children: [
/* @__PURE__ */ jsx(ChevronDownIcon, { className: cn("text-muted-foreground size-4 transition-all", { "-rotate-90": !g_ }) }),
/* @__PURE__ */ jsx(Checkbox, {
onClick: (j) => j.stopPropagation(),
checked: b_,
disabled: !0
}),
/* @__PURE__ */ jsx(CuboidIcon, { className: "size-4 text-rose-400" }),
"[arguments]"
]
})
}), /* @__PURE__ */ jsx(CollapsibleContent, {
className: "border-border ml-4 flex flex-col border-l pl-1",
children: y_.map((I) => /* @__PURE__ */ jsx(BuilderArgument, {
field: I,
path: [...j.path],
operation: h_
}, I.name))
})] }), v_?.map((I) => /* @__PURE__ */ jsx(BuilderField, {
field: I,
path: [...j.path, I.name],
openPaths: j.openPaths,
setOpenPaths: j.setOpenPaths,
isReadOnly: j.isReadOnly,
operation: h_
}, I.name))] })
})]
}, j.field.name);
}, BuilderField = (j) => {
let { schema: I } = useLaboratory(), q = I?.getType(j.field.type.toString().replace(/\[|\]|!/g, ""));
return !q || q instanceof GraphQLScalarType || q instanceof GraphQLEnumType || q instanceof GraphQLUnionType ? /* @__PURE__ */ jsx(BuilderScalarField, {
field: j.field,
path: j.path,
openPaths: j.openPaths,
setOpenPaths: j.setOpenPaths,
isReadOnly: j.isReadOnly,
operation: j.operation
}) : /* @__PURE__ */ jsx(BuilderObjectField, {
field: j.field,
path: j.path,
openPaths: j.openPaths,
setOpenPaths: j.setOpenPaths,
isReadOnly: j.isReadOnly,
operation: j.operation
});
}, Builder = (j) => {
let { schema: I, activeOperation: q, endpoint: Q, setEndpoint: p_, defaultEndpoint: m_ } = useLaboratory(), [h_, g_] = useState(Q ?? ""), [__, v_] = useState([]), y_ = useMemo(() => j.operation ?? q ?? null, [j.operation, q]);
useEffect(() => {
if (I) {
let j = getOpenPaths(y_?.query ?? "");
j.length > 0 && (v_(j), w_(j[0]));
}
}, [I, y_?.query]);
let b_ = useMemo(() => Object.values(I?.getQueryType()?.getFields?.() ?? {}), [I]), x_ = useMemo(() => Object.values(I?.getMutationType()?.getFields?.() ?? {}), [I]), S_ = useMemo(() => Object.values(I?.getSubscriptionType()?.getFields?.() ?? {}), [I]), [C_, w_] = useState("query"), T_ = useMemo(() => (0, import_lodash$1.throttle)((j) => {
p_(j);
}, 1e3), [p_]);
useEffect(() => {
T_(h_);
}, [h_, T_]);
let E_ = useCallback(() => {
g_(Q ?? ""), p_(m_ ?? "");
}, [m_, g_]);
return /* @__PURE__ */ jsxs("div", {
className: "bg-card flex size-full flex-col overflow-hidden",
children: [
/* @__PURE__ */ jsxs("div", {
className: "flex items-center px-3 pt-3",
children: [/* @__PURE__ */ jsx("span", {
className: "text-base font-medium",
children: "Builder"
}), /* @__PURE__ */ jsx("div", {
className: "ml-auto flex items-center",
children: /* @__PURE__ */ jsxs(Tooltip, { children: [/* @__PURE__ */ jsx(TooltipTrigger, {
asChild: !0,
children: /* @__PURE__ */ jsx(Button, {
onClick: () => v_([]),
variant: "ghost",
size: "icon-sm",
className: "p-1! size-6 rounded-sm",
disabled: __.length === 0,
children: /* @__PURE__ */ jsx(CopyMinusIcon, { className: "text-muted-foreground size-4" })
})
}), /* @__PURE__ */ jsx(TooltipContent, { children: "Collapse all" })] })
})]
}),
/* @__PURE__ */ jsx("div", {
className: "px-3 pt-3",
children: /* @__PURE__ */ jsxs(InputGroup, { children: [
/* @__PURE__ */ jsx(InputGroupInput, {
placeholder: "Enter endpoint",
value: h_,
onChange: (j) => g_(j.currentTarget.value)
}),
/* @__PURE__ */ jsx(InputGroupAddon, { children: /* @__PURE__ */ jsx(GraphQLIcon, {}) }),
m_ && /* @__PURE__ */ jsx(InputGroupAddon, {
align: "inline-end",
children: /* @__PURE__ */ jsx(InputGroupButton, {
className: "rounded-full",
size: "icon-xs",
onClick: E_,
children: /* @__PURE__ */ jsxs(Tooltip, { children: [/* @__PURE__ */ jsx(TooltipTrigger, { children: /* @__PURE__ */ jsx(RotateCcwIcon, { className: "size-4" }) }), /* @__PURE__ */ jsx(TooltipContent, { children: "Restore default endpoint" })] })
})
})
] })
}),
/* @__PURE__ */ jsx("div", {
className: "flex-1 overflow-hidden",
children: I ? /* @__PURE__ */ jsxs(Tabs, {
value: C_,
onValueChange: w_,
className: "flex size-full flex-col gap-0",
children: [/* @__PURE__ */ jsx("div", {
className: "border-border flex items-center border-b p-3",
children: /* @__PURE__ */ jsxs(TabsList, {
className: "w-full",
children: [
/* @__PURE__ */ jsx(TabsTrigger, {
value: "query",
disabled: b_.length === 0,
className: "text-xs",
children: "Query"
}),
/* @__PURE__ */ jsx(TabsTrigger, {
value: "mutation",
disabled: x_.length === 0,
className: "text-xs",
children: "Mutation"
}),
/* @__PURE__ */ jsx(TabsTrigger, {
value: "subscription",
disabled: S_.length === 0,
className: "text-xs",
children: "Subscription"
})
]
})
}), /* @__PURE__ */ jsx("div", {
className: "flex-1 overflow-hidden",
children: /* @__PURE__ */ jsxs(ScrollArea, {
className: "h-full font-mono",
children: [
/* @__PURE__ */ jsxs("div", {
className: "p-3",
children: [
/* @__PURE__ */ jsx(TabsContent, {
value: "query",
children: b_?.map((I) => /* @__PURE__ */ jsx(BuilderField, {
field: I,
path: ["query", I.name],
openPaths: __,
setOpenPaths: v_,
isReadOnly: j.isReadOnly,
operation: y_
}, I.name))
}),
/* @__PURE__ */ jsx(TabsContent, {
value: "mutation",
children: x_?.map((I) => /* @__PURE__ */ jsx(BuilderField, {
field: I,
path: ["mutation", I.name],
openPaths: __,
setOpenPaths: v_,
isReadOnly: j.isReadOnly,
operation: y_
}, I.name))
}),
/* @__PURE__ */ jsx(TabsContent, {
value: "subscription",
children: S_?.map((I) => /* @__PURE__ */ jsx(BuilderField, {
field: I,
path: ["subscription", I.name],
openPaths: __,
setOpenPaths: v_,
isReadOnly: j.isReadOnly,
operation: y_
}, I.name))
})
]
}),
/* @__PURE__ */ jsx(ScrollBar, { className: "relative z-50" }),
/* @__PURE__ */ jsx(ScrollBar, {
orientation: "horizontal",
className: "relative z-50"
})
]
})
})]
}, y_?.id) : /* @__PURE__ */ jsx(Empty, {
className: "px-0! h-96 w-full",
children: /* @__PURE__ */ jsxs(EmptyHeader, { children: [
/* @__PURE__ */ jsx(EmptyMedia, {
variant: "icon",
children: /* @__PURE__ */ jsx(FolderIcon, { className: "text-muted-foreground size-6" })
}),
/* @__PURE__ */ jsx(EmptyTitle, {
className: "text-base",
children: "No endpoint selected"
}),
/* @__PURE__ */ jsx(EmptyDescription, {
className: "text-xs",
children: "You haven't selected any endpoint yet. Get started by selecting an endpoint."
})
] })
})
})
]
});
};
var variablesUri = Uri.file("variables.json"), Variables = (j) => {
let { activeOperation: I, updateActiveOperation: q } = useLaboratory(), Q = useMemo(() => j.operation ?? I ?? null, [j.operation, I]);
return /* @__PURE__ */ jsx(Editor, {
uri: variablesUri,
value: Q?.variables ?? "",
language: "json",
onChange: (j) => {
q({ variables: j ?? "" });
},
options: { readOnly: j.isReadOnly }
});
}, Headers = (j) => {
let { activeOperation: I, updateActiveOperation: q } = useLaboratory(), Q = useMemo(() => j.operation ?? I ?? null, [j.operation, I]);
return /* @__PURE__ */ jsx(Editor, {
uri: Uri.file("headers.json"),
value: Q?.headers ?? "",
onChange: (j) => {
q({ headers: j ?? "" });
},
options: { readOnly: j.isReadOnly }
});
}, Extensions = (j) => {
let { activeOperation: I, updateActiveOperation: q } = useLaboratory(), Q = useMemo(() => j.operation ?? I ?? null, [j.operation, I]);
return /* @__PURE__ */ jsx(Editor, {
uri: Uri.file("extensions.json"),
value: Q?.extensions ?? "",
onChange: (j) => {
q({ extensions: j ?? "" });
},
options: { readOnly: j.isReadOnly }
});
};
const ResponseBody = ({ historyItem: j }) => /* @__PURE__ */ jsx(Editor, {
value: JSON.stringify(JSON.parse(j?.response ?? "{}"), null, 2),
defaultLanguage: "json",
theme: "hive-laboratory",
options: { readOnly: !0 }
}), ResponseHeaders = ({ historyItem: j }) => /* @__PURE__ */ jsx(Editor, {
value: JSON.stringify(JSON.parse(j?.headers ?? "{}"), null, 2),
defaultLanguage: "json",
theme: "hive-laboratory"
}), ResponsePreflight = ({ historyItem: j }) => /* @__PURE__ */ jsxs(ScrollArea, {
className: "h-full",
children: [/* @__PURE__ */ jsx("div", {
className: "flex flex-col gap-1.5 whitespace-pre-wrap p-3",
children: j?.preflightLogs?.map((j, I) => /* @__PURE__ */ jsxs("div", {
className: "gap-2 font-mono",
children: [
/* @__PURE__ */ jsx("span", {
className: "text-muted-foreground text-xs",
children: j.createdAt
}),
" ",
/* @__PURE__ */ jsx("span", {
className: cn("text-xs font-medium", {
"text-blue-400": j.level === "info",
"text-green-400": j.level === "log",
"text-yellow-400": j.level === "warn",
"text-red-400": j.level === "error",
"text-gray-400": j.level === "system"
}),
children: j.level.toUpperCase()
}),
" ",
/* @__PURE__ */ jsx("span", {
className: "text-xs",
children: j.message.join(" ")
})
]
}, I))
}), /* @__PURE__ */ jsx(ScrollBar, {})]
}), ResponseSubscription = ({ historyItem: j }) => {
let { isActiveOperationLoading: I } = useLaboratory();
return /* @__PURE__ */ jsxs("div", {
className: "flex h-full flex-col",
children: [/* @__PURE__ */ jsxs("div", {
className: "border-border flex h-12 border-b p-3 text-base font-medium",
children: ["Subscription", /* @__PURE__ */ jsx("div", {
className: "ml-auto flex items-center gap-2",
children: I ? /* @__PURE__ */ jsx(Badge, {
variant: "default",
className: "bg-green-400/10 text-green-500",
children: "Listening"
}) : /* @__PURE__ */ jsx(Badge, {
variant: "default",
className: "bg-red-400/10 text-red-500",
children: "Not listening"
})
})]
}), /* @__PURE__ */ jsx("div", {
className: "flex-1 overflow-hidden",
children: /* @__PURE__ */ jsxs(ScrollArea, {
className: "h-full",
children: [/* @__PURE__ */ jsx("div", {
className: "flex flex-col overflow-hidden",
children: j?.responses.sort((j, I) => new Date(I.createdAt).getTime() - new Date(j.createdAt).getTime()).map((j, I) => {
let q = [
`// ${j.createdAt}`,
"",
JSON.stringify(JSON.parse(j.data), null, 2)
].join("\n"), Q = 20.5 * q.split("\n").length;
return /* @__PURE__ */ jsx("div", {
className: "border-border border-b",
style: { height: `${Q}px` },
children: /* @__PURE__ */ jsx(Editor, {
value: q,
defaultLanguage: "json",
theme: "hive-laboratory",
options: {
readOnly: !0,
scrollBeyondLastLine: !1,
scrollbar: {
vertical: "hidden",
handleMouseWheel: !1,
alwaysConsumeMouseWheel: !1
}
}
}, j.createdAt)
}, I);
})
}), /* @__PURE__ */ jsx(ScrollBar, {})]
})
})]
});
}, Response$1 = ({ historyItem: j }) => {
let I = useMemo(() => j ? j.status ? j.status < 200 || j.status >= 300 || "response" in j && JSON.parse(j.response).errors : !0 : !1, [j]);
return /* @__PURE__ */ jsxs(Tabs, {
defaultValue: "response",
className: "grid size-full grid-rows-[auto_1fr]",
children: [
/* @__PURE__ */ jsxs(TabsList, {
className: "h-[49.5px] w-full justify-start rounded-none border-b bg-transparent p-3",
children: [
/* @__PURE__ */ jsx(TabsTrigger, {
value: "response",
className: "grow-0 rounded-sm",
children: "Response"
}),
/* @__PURE__ */ jsx(TabsTrigger, {
value: "headers",
className: "grow-0 rounded-sm",
children: "Headers"
}),
j?.preflightLogs && j?.preflightLogs.length > 0 && /* @__PURE__ */ jsx(TabsTrigger, {
value: "preflight",
className: "grow-0 rounded-sm",
children: "Preflight"
}),
j ? /* @__PURE__ */ jsxs("div", {
className: "ml-auto flex items-center gap-2",
children: [
j?.status && /* @__PURE__ */ jsxs(Badge, {
className: cn("bg-green-400/10 text-green-500", { "bg-red-400/10 text-red-500": I }),
children: [jsx(I ? CircleXIcon : CircleCheckIcon, { className: "size-3" }), /* @__PURE__ */ jsx("span", { children: j.status })]
}),
j?.duration && /* @__PURE__ */ jsxs(Badge, {
variant: "outline",
className: "bg-card",
children: [/* @__PURE__ */ jsx(ClockIcon, { className: "size-3" }), /* @__PURE__ */ jsxs("span", { children: [Math.round(j.duration), "ms"] })]
}),
j?.size && /* @__PURE__ */ jsxs(Badge, {
variant: "outline",
className: "bg-card",
children: [/* @__PURE__ */ jsx(FileTextIcon, { className: "size-3" }), /* @__PURE__ */ jsxs("span", { children: [Math.round(j.size / 1024), "KB"] })]
})
]
}) : null
]
}),
/* @__PURE__ */ jsx(TabsContent, {
value: "response",
className: "overflow-hidden",
children: /* @__PURE__ */ jsx(ResponseBody, { historyItem: j })
}),
/* @__PURE__ */ jsx(TabsContent, {
value: "headers",
className: "overflow-hidden",
children: /* @__PURE__ */ jsx(ResponseHeaders, { historyItem: j })
}),
/* @__PURE__ */ jsx(TabsContent, {
value: "preflight",
className: "overflow-hidden",
children: /* @__PURE__ */ jsx(ResponsePreflight, { historyItem: j })
})
]
});
};
var saveToCollectionFormSchema = z.object({ collectionId: z.string().min(1, "Collection is required") });
const Query = (j) => {
let { endpoint: I, runActiveOperation: q, activeOperation: Q, isActiveOperationLoading: p_, updateActiveOperation: h_, collections: g_, addOperationToCollection: __, addHistory: v_, stopActiveOperation: y_, addResponseToHistory: b_, isActiveOperationSubscription: x_, runPreflight: S_, addTab: C_, setActiveTab: w_, addOperation: T_, checkPermissions: E_, preflight: D_, setPreflight: O_, plugins: k_, pluginsState: A_, setPluginsState: j_ } = useLaboratory(), M_ = useMemo(() => j.operation ?? Q ?? null, [j.operation, Q]), N_ = useCallback(async () => {
if (!M_ || !I) return;
let Q = await S_?.(k_, A_);
if (j_(Q?.pluginsState ?? {}), Q?.status === "error") {
let I = v_({
headers: "{}",
operation: M_,
preflightLogs: Q?.logs ?? [],
response: "{\n \"errors\": [\n {\n \"message\": \"Preflight failed check logs for more details\"\n }\n ]\n }",
createdAt: (/* @__PURE__ */ new Date()).toISOString()
});
j.onAfterOperationRun?.(I);
return;
}
if (x_) {
let p_ = v_({
responses: [],
operation: M_,
preflightLogs: Q?.logs ?? [],
createdAt: (/* @__PURE__ */ new Date()).toISOString()
});
q(I, {
env: Q?.env,
headers: Q?.headers,
onResponse: (j) => {
b_(p_.id, j);
}
}), j.onAfterOperationRun?.(p_);
} else {
let p_ = performance.now(), m_ = await q(I, {
env: Q?.env,
headers: Q?.headers
});
if (!m_) return;
let h_ = m_.status, g_ = performance.now() - p_, __ = await m_.text(), y_ = __.length, b_ = v_({
status: h_,
duration: g_,
size: y_,
headers: JSON.stringify(Object.fromEntries(m_.headers.entries()), null, 2),
operation: M_,
preflightLogs: Q?.logs ?? [],
response: __,
createdAt: (/* @__PURE__ */ new Date()).toISOString()
});
j.onAfterOperationRun?.(b_);
}
}, [
M_,
I,
x_,
v_,
q,
j,
b_,
S_,
A_
]);
useEffect(() => {
let j = (j) => {
j.key === "Enter" && (j.metaKey || j.ctrlKey) && (j.preventDefault(), j.stopPropagation(), N_());
};
return document.addEventListener("keydown", j, { capture: !0 }), () => document.removeEventListener("keydown", j, { capture: !0 });
}, [N_]);
let [P_, F_] = useState(!1), I_ = useForm({
defaultValues: { collectionId: "" },
validators: { onSubmit: saveToCollectionFormSchema },
onSubmit: ({ value: j }) => {
M_ && (__(j.collectionId, {
id: M_.id ?? "",
name: M_.name ?? "",
query: M_.query ?? "",
variables: M_.variables ?? "",
headers: M_.headers ?? "",
extensions: M_.extensions ?? "",
description: ""
}), F_(!1));
}
}), L_ = useCallback(() => {
I_.reset({ collectionId: g_[0]?.id ?? "" }), F_(!0);
}, [I_, g_]), R_ = useMemo(() => g_.some((j) => j.operations.some((j) => j.id === M_?.id)), [M_?.id, g_]), z_ = useCallback((j) => {
let I = compressToEncodedURIComponent(JSON.stringify({
n: M_?.name,
q: M_?.query,
v: j.variables ? M_?.variables : void 0,
h: j.headers ? M_?.headers : void 0,
e: j.extensions ? M_?.extensions : void 0
}));
navigator.clipboard.writeText(`${window.location.origin}${window.location.pathname}?share=${I}`), toast.success("Operation copied to clipboard");
}, [M_]);
return /* @__PURE__ */ jsxs("div", {
className: "grid size-full grid-rows-[auto_1fr] overflow-hidden pb-0",
children: [
/* @__PURE__ */ jsx(Dialog, {
open: P_,
onOpenChange: F_,
children: /* @__PURE__ */ jsxs(DialogContent, {
className: "sm:max-w-[425px]",
children: [
/* @__PURE__ */ jsxs(DialogHeader, { children: [/* @__PURE__ */ jsx(DialogTitle, { children: "Add collection" }), /* @__PURE__ */ jsx(DialogDescription, { children: "Add a new collection of operations to your laboratory." })] }),
/* @__PURE__ */ jsx("div", {
className: "grid gap-4",
children: /* @__PURE__ */ jsx("form", {
id: "save-to-collection",
onSubmit: (j) => {
j.preventDefault(), I_.handleSubmit();
},
children: /* @__PURE__ */ jsx(FieldGroup, { children: /* @__PURE__ */ jsx(I_.Field, {
name: "collectionId",
children: (j) => {
let I = j.state.meta.isTouched && !j.state.meta.isValid;
return /* @__PURE__ */ jsxs(Field, {
"data-invalid": I,
children: [/* @__PURE__ */ jsx(FieldLabel, {
htmlFor: j.name,
children: "Collection"
}), /* @__PURE__ */ jsxs(Select, {
name: j.name,
value: j.state.value,
onValueChange: j.handleChange,
children: [/* @__PURE__ */ jsx(SelectTrigger, {
id: j.name,
"aria-invalid": I,
children: /* @__PURE__ */ jsx(SelectValue, { placeholder: "Select collection" })
}), /* @__PURE__ */ jsx(SelectContent, { children: g_.map((j) => /* @__PURE__ */ jsx(SelectItem, {
value: j.id,
children: j.name
}, j.id)) })]
})]
});
}
}) })
})
}),
/* @__PURE__ */ jsxs(DialogFooter, { children: [/* @__PURE__ */ jsx(DialogClose, {
asChild: !0,
children: /* @__PURE__ */ jsx(Button, {
variant: "outline",
children: "Cancel"
})
}), /* @__PURE__ */ jsx(Button, {
type: "submit",
form: "save-to-collection",
children: "Save to collection"
})] })
]
})
}),
/* @__PURE__ */ jsxs("div", {
className: "border-border flex w-full items-center gap-2 overflow-hidden border-b p-3",
children: [
/* @__PURE__ */ jsx("span", {
className: "text-base font-medium",
children: "Operation"
}),
E_?.("collectionsOperations:create") && /* @__PURE__ */ jsxs(Toggle, {
"aria-label": "Save operation",
size: "sm",
variant: "default",
pressed: R_,
disabled: R_,
className: "data-[state=on]:*:[svg]:fill-yellow-500 data-[state=on]:*:[svg]:stroke-yellow-500 h-6 data-[state=on]:bg-transparent",
onClick: L_,
children: [/* @__PURE__ */ jsx(BookmarkIcon, { className: "size-4" }), R_ ? "Saved" : "Save"]
}),
/* @__PURE__ */ jsxs("div", {
className: "ml-auto flex items-center gap-2",
children: [
/* @__PURE__ */ jsxs(DropdownMenu, { children: [/* @__PURE__ */ jsx(DropdownMenuTrigger$1, { children: /* @__PURE__ */ jsxs(Button, {
variant: "outline",
size: "sm",
className: "h-6 rounded-sm",
children: ["Share", /* @__PURE__ */ jsx(MoreHorizontalIcon, { className: "size-4" })]
}) }), /* @__PURE__ */ jsxs(DropdownMenuContent, {
align: "end",
children: [
/* @__PURE__ */ jsx(DropdownMenuItem, {
onClick: () => z_({ variables: !0 }),
children: "Share with variables"
}),
/* @__PURE__ */ jsx(DropdownMenuItem, {
onClick: () => z_({
variables: !0,
extensions: !0
}),
children: "Share with variables and extensions"
}),
/* @__PURE__ */ jsx(DropdownMenuItem, {
onClick: () => z_({
variables: !0,
headers: !0,
extensions: !0
}),
children: "Share with variables, extensions, headers"
})
]
})] }),
/* @__PURE__ */ jsxs(Toggle, {
"aria-label": D_?.enabled ? "Disable preflight" : "Enable preflight",
size: "sm",
variant: "default",
pressed: D_?.enabled,
className: "hover:text-accent-foreground bg-input/30 border-input hover:bg-input/50 h-6 rounded-sm border shadow-sm data-[state=on]:bg-transparent",
onClick: () => {
O_({
...D_ ?? {
script: "",
enabled: !0
},
enabled: !D_?.enabled
});
},
children: [D_?.enabled ? /* @__PURE__ */ jsx(PowerIcon, { className: "size-4 text-green-500" }) : /* @__PURE__ */ jsx(PowerOffIcon, { className: "size-4 text-red-500" }), "Preflight"]
}),
j.isReadOnly ? /* @__PURE__ */ jsxs(Button, {
variant: "default",
size: "sm",
className: "h-6 rounded-sm",
onClick: () => {
M_ && w_(C_({
type: "operation",
data: T_(M_)
}));
},
children: [/* @__PURE__ */ jsx(SquarePenIcon, { className: "size-4" }), "Edit"]
}) : /* @__PURE__ */ jsx(Button, {
variant: "default",
size: "sm",
className: "h-6 rounded-sm",
onClick: () => {
p_ ? y_?.() : N_();
},
disabled: !M_ || !I,
children: p_ ? /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(Spinner, { className: "size-4" }), /* @__PURE__ */ jsx("span", { children: "Stop" })] }) : /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(PlayIcon, { className: "size-4" }), /* @__PURE__ */ jsx("span", { children: "Run" })] })
})
]
})
]
}),
/* @__PURE__ */ jsx(Editor, {
uri: Uri.file(`operation_${I}.graphql`),
variablesUri,
value: M_?.query ?? "",
onChange: (j) => {
h_({ query: j ?? "" });
},
language: "graphql",
theme: "hive-laboratory",
options: { readOnly: j.isReadOnly }
})
]
});
}, Operation = (j) => {
let { activeOperation: I, history: q } = useLaboratory(), Q = useMemo(() => j.operation ?? I ?? null, [j.operation, I]), p_ = useMemo(() => j.historyItem ?? q.filter((j) => j.operation.id === Q?.id).sort((j, I) => new Date(I.createdAt).getTime() - new Date(j.createdAt).getTime())[0] ?? null, [
q,
j.historyItem,
Q?.id
]), m_ = useMemo(() => !!j.historyItem, [j.historyItem]);
return /* @__PURE__ */ jsx("div", {
className: "bg-card size-full",
children: /* @__PURE__ */ jsxs(ResizablePanelGroup, {
direction: "horizontal",
className: "size-full",
children: [
/* @__PURE__ */ jsx(ResizablePanel, {
defaultSize: 25,
children: /* @__PURE__ */ jsx(Builder, {
operation: Q,
isReadOnly: m_
})
}),
/* @__PURE__ */ jsx(ResizableHandle, {}),
/* @__PURE__ */ jsx(ResizablePanel, {
minSize: 10,
defaultSize: 40,
children: /* @__PURE__ */ jsxs(ResizablePanelGroup, {
direction: "vertical",
children: [
/* @__PURE__ */ jsx(ResizablePanel, {
defaultSize: 70,
children: /* @__PURE__ */ jsx(Query, {
operation: Q,
isReadOnly: m_
})
}),
/* @__PURE__ */ jsx(ResizableHandle, {}),
/* @__PURE__ */ jsx(ResizablePanel, {
minSize: 10,
defaultSize: 30,
children: /* @__PURE__ */ jsxs(Tabs, {
className: "grid size-full grid-rows-[auto_1fr]",
defaultValue: "variables",
children: [
/* @__PURE__ */ jsxs(TabsList, {
className: "h-[49.5px] w-full justify-start rounded-none border-b bg-transparent p-3",
children: [
/* @__PURE__ */ jsx(TabsTrigger, {
value: "variables",
className: "grow-0 rounded-sm",
children: "Variables"
}),
/* @__PURE__ */ jsx(TabsTrigger, {
value: "headers",
className: "grow-0 rounded-sm",
children: "Headers"
}),
/* @__PURE__ */ jsx(TabsTrigger, {
value: "extensions",
className: "grow-0 rounded-sm",
children: "Extensions"
})
]
}),
/* @__PURE__ */ jsx(TabsContent, {
value: "variables",
className: "overflow-hidden",
children: /* @__PURE__ */ jsx(Variables, {
operation: Q,
isReadOnly: m_
})
}),
/* @__PURE__ */ jsx(TabsContent, {
value: "headers",
className: "overflow-hidden",
children: /* @__PURE__ */ jsx(Headers, {
operation: Q,
isReadOnly: m_
})
}),
/* @__PURE__ */ jsx(TabsContent, {
value: "extensions",
className: "overflow-hidden",
children: /* @__PURE__ */ jsx(Extensions, {
operation: Q,
isReadOnly: m_
})
})
]
})
})
]
})
}),
/* @__PURE__ */ jsx(ResizableHandle, {}),
/* @__PURE__ */ jsx(ResizablePanel, {
minSize: 10,
defaultSize: 35,
children: p_ ? /* @__PURE__ */ jsx(Fragment$1, { children: "responses" in p_ ? /* @__PURE__ */ jsx(ResponseSubscription, { historyItem: p_ }) : /* @__PURE__ */ jsx(Response$1, { historyItem: p_ }) }) : /* @__PURE__ */ jsx(Empty, {
className: "size-full",
children: /* @__PURE__ */ jsxs(EmptyHeader, { children: [
/* @__PURE__ */ jsx(EmptyMedia, {
variant: "icon",
children: /* @__PURE__ */ jsx(HistoryIcon, { className: "text-muted-foreground size-6" })
}),
/* @__PURE__ */ jsx(EmptyTitle, { children: "No history yet" }),
/* @__PURE__ */ jsx(EmptyDescription, { children: "No response available yet. Run your operation to see the response here." })
] })
})
})
]
})
});
}, HistoryItem = () => {
let { activeTab: j, history: I } = useLaboratory(), q = useMemo(() => j?.type === "history" ? I.find((I) => I.id === j.data.id) ?? null : null, [I, j]);
return q ? /* @__PURE__ */ jsx(Operation, {
operation: q.operation,
historyItem: q
}) : null;
}, Preflight = () => {
let { preflight: j, setLastTestResult: I, setPreflight: q, env: Q, setEnv: p_, openPreflightPromptModal: m_, checkPermissions: h_, plugins: g_, pluginsState: __, setPluginsState: v_ } = useLaboratory(), y_ = useCallback(async () => {
if (!j?.script) return;
let q = await runIsolatedLabScript(j?.script ?? "", Q ?? { variables: {} }, (j, I) => new Promise((q) => {
m_?.({
placeholder: j,
defaultValue: I,
onSubmit: (j) => {
q(j);
}
});
}), g_, __);
p_(q?.env ?? { variables: {} }), v_(q?.pluginsState ?? {}), I(q);
}, [
Q,
p_,
j,
I,
m_
]);
return /* @__PURE__ */ jsxs(ResizablePanelGroup, {
direction: "horizontal",
className: "size-full",
children: [
/* @__PURE__ */ jsx(ResizablePanel, {
defaultSize: 50,
className: "bg-card",
children: /* @__PURE__ */ jsxs("div", {
className: "grid size-full grid-rows-[auto_1fr] pb-0",
children: [/* @__PURE__ */ jsxs("div", {
className: "border-border flex w-full items-center gap-2 border-b p-3",
children: [/* @__PURE__ */ jsx("span", {
className: "text-base font-medium",
children: "Preflight"
}), /* @__PURE__ */ jsx("div", {
className: "ml-auto flex items-center gap-2",
children: /* @__PURE__ */ jsxs(Button, {
variant: "default",
size: "sm",
className: "h-6 rounded-sm",
onClick: y_,
children: [/* @__PURE__ */ jsx(PlayIcon, { className: "size-4" }), /* @__PURE__ */ jsx("span", { children: "Test" })]
})
})]
}), /* @__PURE__ */ jsx("div", {
className: "size-full",
children: /* @__PURE__ */ jsx(Editor, {
value: j?.script ?? "",
onChange: (I) => {
q({
...j ?? {
script: "",
enabled: !0
},
script: I ?? ""
});
},
language: "typescript",
extraLibs: [`
interface Lab {
environment: {
set: (key: string, value: string) => void;
get: (key: string) => string;
delete: (key: string) => void;
};
request: {
headers: Headers;
};
prompt: (placeholder: string, defaultValue: string) => Promise<string | null>;
CryptoJS: typeof CryptoJS;
plugins: {
${g_.filter((j) => j.preflight?.lab?.definition).map((j) => j.preflight?.lab?.definition).join("\n")}
}
}
declare namespace CryptoJS {
namespace lib {
interface WordArray {
words: number[];
sigBytes: number;
toString(encoder?: Encoder): string;
concat(wordArray: WordArray): WordArray;
clone(): WordArray;
}
interface CipherParams {
ciphertext: WordArray;
key: WordArray;
iv: WordArray;
salt: WordArray;
toString(formatter?: Format): string;
}
}
namespace enc {
interface Encoder {
stringify(wordArray: lib.WordArray): string;
parse(str: string): lib.WordArray;
}
const Hex: Encoder;
const Latin1: Encoder;
const Utf8: Encoder;
const Base64: Encoder;
}
namespace algo {
interface HasherStatic {
create(cfg?: object): Hasher;
}
interface Hasher {
update(messageUpdate: lib.WordArray | string): Hasher;
finalize(messageUpdate?: lib.WordArray | string): lib.WordArray;
}
const MD5: HasherStatic;
const SHA1: HasherStatic;
const SHA256: HasherStatic;
const SHA224: HasherStatic;
const SHA512: HasherStatic;
const SHA384: HasherStatic;
const SHA3: HasherStatic;
const RIPEMD160: HasherStatic;
interface CipherStatic {
createEncryptor(key: lib.WordArray, cfg?: CipherOption): Cipher;
createDecryptor(key: lib.WordArray, cfg?: CipherOption): Cipher;
}
interface Cipher {
process(dataUpdate: lib.WordArray | string): lib.WordArray;
finalize(dataUpdate?: lib.WordArray | string): lib.WordArray;
}
interface CipherHelper {
encrypt(message: lib.WordArray | string, key: lib.WordArray | string, cfg?: CipherOption): lib.CipherParams;
decrypt(ciphertext: lib.CipherParams | string, key: lib.WordArray | string, cfg?: CipherOption): lib.WordArray;
}
const AES: CipherStatic;
const DES: CipherStatic;
const TripleDES: CipherStatic;
const RC4: CipherStatic;
}
namespace mode {
interface BlockCipherMode {
createEncryptor(cipher: algo.Cipher, iv: number[]): Mode;
createDecryptor(cipher: algo.Cipher, iv: number[]): Mode;
}
const CBC: BlockCipherMode;
const CFB: BlockCipherMode;
const CTR: BlockCipherMode;
const OFB: BlockCipherMode;
const ECB: BlockCipherMode;
}
namespace pad {
interface Padding {
pad(data: lib.WordArray, blockSize: number): void;
unpad(data: lib.WordArray): void;
}
const Pkcs7: Padding;
const AnsiX923: Padding;
const Iso10126: Padding;
const Iso97971: Padding;
const ZeroPadding: Padding;
const NoPadding: Padding;
}
namespace format {
interface Format {
stringify(cipherParams: lib.CipherParams): string;
parse(str: string): lib.CipherParams;
}
const OpenSSL: Format;
const Hex: Format;
}
interface CipherOption {
iv?: lib.WordArray;
mode?: mode.BlockCipherMode;
padding?: pad.Padding;
format?: format.Format;
[key: string]: any;
}
interface Mode {
processBlock(words: number[], offset: number): void;
}
type HasherHelper = (message: lib.WordArray | string, cfg?: object) => lib.WordArray;
type HmacHasherHelper = (message: lib.WordArray | string, key: lib.WordArray | string) => lib.WordArray;
type CipherHelper = {
encrypt(message: lib.WordArray | string, key: lib.WordArray | string, cfg?: CipherOption): lib.CipherParams;
decrypt(ciphertext: lib.CipherParams | string, key: lib.WordArray | string, cfg?: CipherOption): lib.WordArray;
};
const MD5: HasherHelper;
const SHA1: HasherHelper;
const SHA256: HasherHelper;
const SHA224: HasherHelper;
const SHA512: HasherHelper;
const SHA384: HasherHelper;
const SHA3: HasherHelper;
const RIPEMD160: HasherHelper;
const HmacMD5: HmacHasherHelper;
const HmacSHA1: HmacHasherHelper;
const HmacSHA256: HmacHasherHelper;
const HmacSHA224: HmacHasherHelper;
const HmacSHA512: HmacHasherHelper;
const HmacSHA384: HmacHasherHelper;
const HmacSHA3: HmacHasherHelper;
const HmacRIPEMD160: HmacHasherHelper;
const AES: CipherHelper;
const DES: CipherHelper;
const TripleDES: CipherHelper;
const RC4: CipherHelper;
const RC4Drop: CipherHelper;
const Rabbit: CipherHelper;
const RabbitLegacy: CipherHelper;
function PBKDF2(password: lib.WordArray | string, salt: lib.WordArray | string, cfg?: { keySize?: number; hasher?: algo.HasherStatic; iterations?: number }): lib.WordArray;
function EvpKDF(password: lib.WordArray | string, salt: lib.WordArray | string, cfg?: { keySize: number; hasher?: algo.HasherStatic; iterations: number }): lib.WordArray;
}
declare var lab: Lab;
declare var CryptoJS: typeof CryptoJS;
`],
options: { readOnly: !h_?.("preflight:update") }
})
})]
})
}),
/* @__PURE__ */ jsx(ResizableHandle, {}),
/* @__PURE__ */ jsx(ResizablePanel, {
minSize: 10,
defaultSize: 50,
className: "bg-card",
children: j?.lastTestResult?.logs && j?.lastTestResult?.logs.length > 0 ? /* @__PURE__ */ jsxs("div", {
className: "grid size-full grid-rows-[auto_1fr] pb-0",
children: [/* @__PURE__ */ jsxs("div", {
className: "border-border flex h-12 w-full items-center gap-2 border-b p-3",
children: [/* @__PURE__ */ jsx("span", {
className: "text-base font-medium",
children: "Logs"
}), /* @__PURE__ */ jsx("div", { className: "ml-auto flex items-center gap-2" })]
}), /* @__PURE__ */ jsxs(ScrollArea, {
className: "h-full",
children: [/* @__PURE__ */ jsx("div", {
className: "flex flex-col gap-1.5 whitespace-pre-wrap p-3",
children: j?.lastTestResult?.logs.map((j, I) => /* @__PURE__ */ jsxs("div", {
className: "gap-2 font-mono",
children: [
/* @__PURE__ */ jsx("span", {
className: "text-muted-foreground text-xs",
children: j.createdAt
}),
" ",
/* @__PURE__ */ jsx("span", {
className: cn("text-xs font-medium", {
"text-blue-400": j.level === "info",
"text-green-400": j.level === "log",
"text-yellow-400": j.level === "warn",
"text-red-400": j.level === "error",
"text-gray-400": j.level === "system"
}),
children: j.level.toUpperCase()
}),
" ",
/* @__PURE__ */ jsx("span", {
className: "text-xs",
children: j.message.join(" ")
})
]
}, I))
}), /* @__PURE__ */ jsx(ScrollBar, {})]
})]
}) : /* @__PURE__ */ jsx(Empty, {
className: "size-full",
children: /* @__PURE__ */ jsxs(EmptyHeader, { children: [
/* @__PURE__ */ jsx(EmptyMedia, {
variant: "icon",
children: /* @__PURE__ */ jsx(HistoryIcon, { className: "text-muted-foreground size-6" })
}),
/* @__PURE__ */ jsx(EmptyTitle, { children: "No logs yet" }),
/* @__PURE__ */ jsx(EmptyDescription, { children: "No logs available yet. Run your preflight to see the logs here." })
] })
})
})
]
});
};
function Card({ className: j,...I }) {
return /* @__PURE__ */ jsx("div", {
"data-slot": "card",
className: cn("bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm", j),
...I
});
}
function CardHeader({ className: j,...I }) {
return /* @__PURE__ */ jsx("div", {
"data-slot": "card-header",
className: cn("[.border-b]:pb-6 grid auto-rows-min grid-rows-[auto_auto] items-start gap-2 px-6 has-[>[data-slot=card-action]]:grid-cols-[1fr_auto]", j),
...I
});
}
function CardTitle({ className: j,...I }) {
return /* @__PURE__ */ jsx("div", {
"data-slot": "card-title",
className: cn("font-semibold leading-none", j),
...I
});
}
function CardDescription({ className: j,...I }) {
return /* @__PURE__ */ jsx("div", {
"data-slot": "card-description",
className: cn("text-muted-foreground text-sm", j),
...I
});
}
function CardContent({ className: j,...I }) {
return /* @__PURE__ */ jsx("div", {
"data-slot": "card-content",
className: cn("px-6", j),
...I
});
}
var settingsFormSchema = z.object({ fetch: z.object({ credentials: z.enum([
"include",
"omit",
"same-origin"
]) }) });
const Settings = () => {
let { settings: j, setSettings: I } = useLaboratory(), q = useForm({
defaultValues: j,
validators: { onSubmit: settingsFormSchema },
onSubmit: ({ value: j }) => {
I(j);
}
});
return /* @__PURE__ */ jsx("div", {
className: "bg-card size-full p-3",
children: /* @__PURE__ */ jsx("form", {
id: "settings-form",
onSubmit: q.handleSubmit,
onChange: q.handleSubmit,
className: "mx-auto max-w-2xl",
children: /* @__PURE__ */ jsxs(Card, { children: [/* @__PURE__ */ jsxs(CardHeader, { children: [/* @__PURE__ */ jsx(CardTitle, { children: "Fetch" }), /* @__PURE__ */ jsx(CardDescription, { children: "Configure the fetch options for the laboratory." })] }), /* @__PURE__ */ jsx(CardContent, { children: /* @__PURE__ */ jsx(FieldGroup, { children: /* @__PURE__ */ jsx(q.Field, {
name: "fetch.credentials",
children: (j) => {
let I = j.state.meta.isTouched && !j.state.meta.isValid;
return /* @__PURE__ */ jsxs(Field, {
"data-invalid": I,
children: [/* @__PURE__ */ jsx(FieldLabel, {
htmlFor: j.name,
children: "Credentials"
}), /* @__PURE__ */ jsxs(Select, {
name: j.name,
value: j.state.value,
onValueChange: (I) => j.handleChange(I),
children: [/* @__PURE__ */ jsx(SelectTrigger, {
id: j.name,
"aria-invalid": I,
children: /* @__PURE__ */ jsx(SelectValue, { placeholder: "Select credentials" })
}), /* @__PURE__ */ jsxs(SelectContent, { children: [
/* @__PURE__ */ jsx(SelectItem, {
value: "include",
children: "Include"
}),
/* @__PURE__ */ jsx(SelectItem, {
value: "omit",
children: "Omit"
}),
/* @__PURE__ */ jsx(SelectItem, {
value: "same-origin",
children: "Same-origin"
})
] })]
})]
});
}
}) }) })] })
})
});
};
var CONTEXT_MENU_NAME = "ContextMenu", [createContextMenuContext, createContextMenuScope] = createContextScope(CONTEXT_MENU_NAME, [createMenuScope]), useMenuScope = createMenuScope(), [ContextMenuProvider, useContextMenuContext] = createContextMenuContext(CONTEXT_MENU_NAME), ContextMenu$1 = (j) => {
let { __scopeContextMenu: I, children: q, onOpenChange: Q, dir: p_, modal: m_ = !0 } = j, [h_, g_] = React.useState(!1), __ = useMenuScope(I), v_ = useCallbackRef(Q), y_ = React.useCallback((j) => {
g_(j), v_(j);
}, [v_]);
return /* @__PURE__ */ jsx(ContextMenuProvider, {
scope: I,
open: h_,
onOpenChange: y_,
modal: m_,
children: /* @__PURE__ */ jsx(Root3$1, {
...__,
dir: p_,
open: h_,
onOpenChange: y_,
modal: m_,
children: q
})
});
};
ContextMenu$1.displayName = CONTEXT_MENU_NAME;
var TRIGGER_NAME = "ContextMenuTrigger", ContextMenuTrigger$1 = React.forwardRef((j, I) => {
let { __scopeContextMenu: q, disabled: Q = !1,...p_ } = j, m_ = useContextMenuContext(TRIGGER_NAME, q), h_ = useMenuScope(q), g_ = React.useRef({
x: 0,
y: 0
}), __ = React.useRef({ getBoundingClientRect: () => DOMRect.fromRect({
width: 0,
height: 0,
...g_.current
}) }), v_ = React.useRef(0), y_ = React.useCallback(() => window.clearTimeout(v_.current), []), b_ = (j) => {
g_.current = {
x: j.clientX,
y: j.clientY
}, m_.onOpenChange(!0);
};
return React.useEffect(() => y_, [y_]), React.useEffect(() => void (Q && y_()), [Q, y_]), /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(Anchor2, {
...h_,
virtualRef: __
}), /* @__PURE__ */ jsx(Primitive.span, {
"data-state": m_.open ? "open" : "closed",
"data-disabled": Q ? "" : void 0,
...p_,
ref: I,
style: {
WebkitTouchCallout: "none",
...j.style
},
onContextMenu: Q ? j.onContextMenu : composeEventHandlers(j.onContextMenu, (j) => {
y_(), b_(j), j.preventDefault();
}),
onPointerDown: Q ? j.onPointerDown : composeEventHandlers(j.onPointerDown, whenTouchOrPen((j) => {
y_(), v_.current = window.setTimeout(() => b_(j), 700);
})),
onPointerMove: Q ? j.onPointerMove : composeEventHandlers(j.onPointerMove, whenTouchOrPen(y_)),
onPointerCancel: Q ? j.onPointerCancel : composeEventHandlers(j.onPointerCancel, whenTouchOrPen(y_)),
onPointerUp: Q ? j.onPointerUp : composeEventHandlers(j.onPointerUp, whenTouchOrPen(y_))
})] });
});
ContextMenuTrigger$1.displayName = TRIGGER_NAME;
var PORTAL_NAME = "ContextMenuPortal", ContextMenuPortal = (j) => {
let { __scopeContextMenu: I,...q } = j, Q = useMenuScope(I);
return /* @__PURE__ */ jsx(Portal$3, {
...Q,
...q
});
};
ContextMenuPortal.displayName = PORTAL_NAME;
var CONTENT_NAME$1 = "ContextMenuContent", ContextMenuContent$1 = React.forwardRef((j, I) => {
let { __scopeContextMenu: q,...Q } = j, p_ = useContextMenuContext(CONTENT_NAME$1, q), m_ = useMenuScope(q), h_ = React.useRef(!1);
return /* @__PURE__ */ jsx(Content2$5, {
...m_,
...Q,
ref: I,
side: "right",
sideOffset: 2,
align: "start",
onCloseAutoFocus: (I) => {
j.onCloseAutoFocus?.(I), !I.defaultPrevented && h_.current && I.preventDefault(), h_.current = !1;
},
onInteractOutside: (I) => {
j.onInteractOutside?.(I), !I.defaultPrevented && !p_.modal && (h_.current = !0);
},
style: {
...j.style,
"--radix-context-menu-content-transform-origin": "var(--radix-popper-transform-origin)",
"--radix-context-menu-content-available-width": "var(--radix-popper-available-width)",
"--radix-context-menu-content-available-height": "var(--radix-popper-available-height)",
"--radix-context-menu-trigger-width": "var(--radix-popper-anchor-width)",
"--radix-context-menu-trigger-height": "var(--radix-popper-anchor-height)"
}
});
});
ContextMenuContent$1.displayName = CONTENT_NAME$1;
var GROUP_NAME = "ContextMenuGroup", ContextMenuGroup = React.forwardRef((j, I) => {
let { __scopeContextMenu: q,...Q } = j, p_ = useMenuScope(q);
return /* @__PURE__ */ jsx(Group, {
...p_,
...Q,
ref: I
});
});
ContextMenuGroup.displayName = GROUP_NAME;
var LABEL_NAME = "ContextMenuLabel", ContextMenuLabel = React.forwardRef((j, I) => {
let { __scopeContextMenu: q,...Q } = j, p_ = useMenuScope(q);
return /* @__PURE__ */ jsx(Label$2, {
...p_,
...Q,
ref: I
});
});
ContextMenuLabel.displayName = LABEL_NAME;
var ITEM_NAME$1 = "ContextMenuItem", ContextMenuItem$1 = React.forwardRef((j, I) => {
let { __scopeContextMenu: q,...Q } = j, p_ = useMenuScope(q);
return /* @__PURE__ */ jsx(Item2$2, {
...p_,
...Q,
ref: I
});
});
ContextMenuItem$1.displayName = ITEM_NAME$1;
var CHECKBOX_ITEM_NAME = "ContextMenuCheckboxItem", ContextMenuCheckboxItem = React.forwardRef((j, I) => {
let { __scopeContextMenu: q,...Q } = j, p_ = useMenuScope(q);
return /* @__PURE__ */ jsx(CheckboxItem, {
...p_,
...Q,
ref: I
});
});
ContextMenuCheckboxItem.displayName = CHECKBOX_ITEM_NAME;
var RADIO_GROUP_NAME = "ContextMenuRadioGroup", ContextMenuRadioGroup = React.forwardRef((j, I) => {
let { __scopeContextMenu: q,...Q } = j, p_ = useMenuScope(q);
return /* @__PURE__ */ jsx(RadioGroup, {
...p_,
...Q,
ref: I
});
});
ContextMenuRadioGroup.displayName = RADIO_GROUP_NAME;
var RADIO_ITEM_NAME = "ContextMenuRadioItem", ContextMenuRadioItem = React.forwardRef((j, I) => {
let { __scopeContextMenu: q,...Q } = j, p_ = useMenuScope(q);
return /* @__PURE__ */ jsx(RadioItem, {
...p_,
...Q,
ref: I
});
});
ContextMenuRadioItem.displayName = RADIO_ITEM_NAME;
var INDICATOR_NAME = "ContextMenuItemIndicator", ContextMenuItemIndicator = React.forwardRef((j, I) => {
let { __scopeContextMenu: q,...Q } = j, p_ = useMenuScope(q);
return /* @__PURE__ */ jsx(ItemIndicator$1, {
...p_,
...Q,
ref: I
});
});
ContextMenuItemIndicator.displayName = INDICATOR_NAME;
var SEPARATOR_NAME = "ContextMenuSeparator", ContextMenuSeparator = React.forwardRef((j, I) => {
let { __scopeContextMenu: q,...Q } = j, p_ = useMenuScope(q);
return /* @__PURE__ */ jsx(Separator, {
...p_,
...Q,
ref: I
});
});
ContextMenuSeparator.displayName = SEPARATOR_NAME;
var ARROW_NAME = "ContextMenuArrow", ContextMenuArrow = React.forwardRef((j, I) => {
let { __scopeContextMenu: q,...Q } = j, p_ = useMenuScope(q);
return /* @__PURE__ */ jsx(Arrow2$1, {
...p_,
...Q,
ref: I
});
});
ContextMenuArrow.displayName = ARROW_NAME;
var SUB_NAME = "ContextMenuSub", ContextMenuSub = (j) => {
let { __scopeContextMenu: I, children: q, onOpenChange: Q, open: p_, defaultOpen: m_ } = j, h_ = useMenuScope(I), [g_, __] = useControllableState({
prop: p_,
defaultProp: m_ ?? !1,
onChange: Q,
caller: SUB_NAME
});
return /* @__PURE__ */ jsx(Sub, {
...h_,
open: g_,
onOpenChange: __,
children: q
});
};
ContextMenuSub.displayName = SUB_NAME;
var SUB_TRIGGER_NAME = "ContextMenuSubTrigger", ContextMenuSubTrigger = React.forwardRef((j, I) => {
let { __scopeContextMenu: q,...Q } = j, p_ = useMenuScope(q);
return /* @__PURE__ */ jsx(SubTrigger, {
...p_,
...Q,
ref: I
});
});
ContextMenuSubTrigger.displayName = SUB_TRIGGER_NAME;
var SUB_CONTENT_NAME = "ContextMenuSubContent", ContextMenuSubContent = React.forwardRef((j, I) => {
let { __scopeContextMenu: q,...Q } = j, p_ = useMenuScope(q);
return /* @__PURE__ */ jsx(SubContent, {
...p_,
...Q,
ref: I,
style: {
...j.style,
"--radix-context-menu-content-transform-origin": "var(--radix-popper-transform-origin)",
"--radix-context-menu-content-available-width": "var(--radix-popper-available-width)",
"--radix-context-menu-content-available-height": "var(--radix-popper-available-height)",
"--radix-context-menu-trigger-width": "var(--radix-popper-anchor-width)",
"--radix-context-menu-trigger-height": "var(--radix-popper-anchor-height)"
}
});
});
ContextMenuSubContent.displayName = SUB_CONTENT_NAME;
function whenTouchOrPen(j) {
return (I) => I.pointerType === "mouse" ? void 0 : j(I);
}
var Root2 = ContextMenu$1, Trigger = ContextMenuTrigger$1, Portal2 = ContextMenuPortal, Content2 = ContextMenuContent$1, Item2 = ContextMenuItem$1;
function ContextMenu({ ...j }) {
return /* @__PURE__ */ jsx(Root2, {
"data-slot": "context-menu",
...j
});
}
function ContextMenuTrigger({ ...j }) {
return /* @__PURE__ */ jsx(Trigger, {
"data-slot": "context-menu-trigger",
...j
});
}
function ContextMenuContent({ className: j,...I }) {
let [q, Q] = useState(null);
return /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(Portal2, {
container: q,
children: /* @__PURE__ */ jsx(Content2, {
"data-slot": "context-menu-content",
className: cn("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 max-h-(--radix-context-menu-content-available-height) origin-(--radix-context-menu-content-transform-origin) z-50 min-w-[8rem] overflow-y-auto overflow-x-hidden rounded-md border p-1 shadow-md", j),
...I
})
}), /* @__PURE__ */ jsx("div", {
ref: Q,
style: { display: "contents" }
})] });
}
function ContextMenuItem({ className: j, inset: I, variant: q = "default",...Q }) {
return /* @__PURE__ */ jsx(Item2, {
"data-slot": "context-menu-item",
"data-inset": I,
"data-variant": q,
className: cn("focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:text-destructive! [&_svg:not([class*='text-'])]:text-muted-foreground outline-hidden data-disabled:pointer-events-none data-inset:pl-8 data-disabled:opacity-50 relative flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm [&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0", j),
...Q
});
}
function useCombinedRefs() {
var j = [...arguments];
return useMemo(() => (I) => {
j.forEach((j) => j(I));
}, j);
}
var canUseDOM = typeof window < "u" && window.document !== void 0 && window.document.createElement !== void 0;
function isWindow(j) {
let I = Object.prototype.toString.call(j);
return I === "[object Window]" || I === "[object global]";
}
function isNode(j) {
return "nodeType" in j;
}
function getWindow(j) {
return j ? isWindow(j) ? j : isNode(j) ? j.ownerDocument?.defaultView ?? window : window : window;
}
function isDocument(j) {
let { Document: I } = getWindow(j);
return j instanceof I;
}
function isHTMLElement(j) {
return isWindow(j) ? !1 : j instanceof getWindow(j).HTMLElement;
}
function isSVGElement(j) {
return j instanceof getWindow(j).SVGElement;
}
function getOwnerDocument(j) {
return j ? isWindow(j) ? j.document : isNode(j) ? isDocument(j) ? j : isHTMLElement(j) || isSVGElement(j) ? j.ownerDocument : document : document : document;
}
var useIsomorphicLayoutEffect = canUseDOM ? useLayoutEffect : useEffect;
function useEvent(j) {
let I = useRef(j);
return useIsomorphicLayoutEffect(() => {
I.current = j;
}), useCallback(function() {
var j = [...arguments];
return I.current == null ? void 0 : I.current(...j);
}, []);
}
function useInterval() {
let j = useRef(null), I = useCallback((I, q) => {
j.current = setInterval(I, q);
}, []), q = useCallback(() => {
j.current !== null && (clearInterval(j.current), j.current = null);
}, []);
return [I, q];
}
function useLatestValue(j, I) {
I === void 0 && (I = [j]);
let q = useRef(j);
return useIsomorphicLayoutEffect(() => {
q.current !== j && (q.current = j);
}, I), q;
}
function useLazyMemo(j, I) {
let q = useRef();
return useMemo(() => {
let I = j(q.current);
return q.current = I, I;
}, [...I]);
}
function useNodeRef(j) {
let I = useEvent(j), q = useRef(null), Q = useCallback((j) => {
j !== q.current && I?.(j, q.current), q.current = j;
}, []);
return [q, Q];
}
function usePrevious(j) {
let I = useRef();
return useEffect(() => {
I.current = j;
}, [j]), I.current;
}
var ids = {};
function useUniqueId(j, I) {
return useMemo(() => {
if (I) return I;
let q = ids[j] == null ? 0 : ids[j] + 1;
return ids[j] = q, j + "-" + q;
}, [j, I]);
}
function createAdjustmentFn(j) {
return function(I) {
return [...arguments].slice(1).reduce((I, q) => {
let Q = Object.entries(q);
for (let [q, p_] of Q) {
let Q = I[q];
Q != null && (I[q] = Q + j * p_);
}
return I;
}, { ...I });
};
}
var add = /* @__PURE__ */ createAdjustmentFn(1), subtract = /* @__PURE__ */ createAdjustmentFn(-1);
function hasViewportRelativeCoordinates(j) {
return "clientX" in j && "clientY" in j;
}
function isKeyboardEvent(j) {
if (!j) return !1;
let { KeyboardEvent: I } = getWindow(j.target);
return I && j instanceof I;
}
function isTouchEvent(j) {
if (!j) return !1;
let { TouchEvent: I } = getWindow(j.target);
return I && j instanceof I;
}
function getEventCoordinates(j) {
if (isTouchEvent(j)) {
if (j.touches && j.touches.length) {
let { clientX: I, clientY: q } = j.touches[0];
return {
x: I,
y: q
};
} else if (j.changedTouches && j.changedTouches.length) {
let { clientX: I, clientY: q } = j.changedTouches[0];
return {
x: I,
y: q
};
}
}
return hasViewportRelativeCoordinates(j) ? {
x: j.clientX,
y: j.clientY
} : null;
}
var CSS$1 = /* @__PURE__ */ Object.freeze({
Translate: { toString(j) {
if (!j) return;
let { x: I, y: q } = j;
return "translate3d(" + (I ? Math.round(I) : 0) + "px, " + (q ? Math.round(q) : 0) + "px, 0)";
} },
Scale: { toString(j) {
if (!j) return;
let { scaleX: I, scaleY: q } = j;
return "scaleX(" + I + ") scaleY(" + q + ")";
} },
Transform: { toString(j) {
if (j) return [CSS$1.Translate.toString(j), CSS$1.Scale.toString(j)].join(" ");
} },
Transition: { toString(j) {
let { property: I, duration: q, easing: Q } = j;
return I + " " + q + "ms " + Q;
} }
}), SELECTOR = "a,frame,iframe,input:not([type=hidden]):not(:disabled),select:not(:disabled),textarea:not(:disabled),button:not(:disabled),*[tabindex]";
function findFirstFocusableNode(j) {
return j.matches(SELECTOR) ? j : j.querySelector(SELECTOR);
}
var hiddenStyles = { display: "none" };
function HiddenText(j) {
let { id: I, value: q } = j;
return ke.createElement("div", {
id: I,
style: hiddenStyles
}, q);
}
function LiveRegion(j) {
let { id: I, announcement: q, ariaLiveType: Q = "assertive" } = j;
return ke.createElement("div", {
id: I,
style: {
position: "fixed",
top: 0,
left: 0,
width: 1,
height: 1,
margin: -1,
border: 0,
padding: 0,
overflow: "hidden",
clip: "rect(0 0 0 0)",
clipPath: "inset(100%)",
whiteSpace: "nowrap"
},
role: "status",
"aria-live": Q,
"aria-atomic": !0
}, q);
}
function useAnnouncement() {
let [j, I] = useState("");
return {
announce: useCallback((j) => {
j != null && I(j);
}, []),
announcement: j
};
}
var DndMonitorContext = /* @__PURE__ */ createContext(null);
function useDndMonitor(j) {
let I = useContext(DndMonitorContext);
useEffect(() => {
if (!I) throw Error("useDndMonitor must be used within a children of <DndContext>");
return I(j);
}, [j, I]);
}
function useDndMonitorProvider() {
let [j] = useState(() => /* @__PURE__ */ new Set()), I = useCallback((I) => (j.add(I), () => j.delete(I)), [j]);
return [useCallback((I) => {
let { type: q, event: Q } = I;
j.forEach((j) => j[q]?.call(j, Q));
}, [j]), I];
}
var defaultScreenReaderInstructions = { draggable: "\n To pick up a draggable item, press the space bar.\n While dragging, use the arrow keys to move the item.\n Press space again to drop the item in its new position, or press escape to cancel.\n " }, defaultAnnouncements = {
onDragStart(j) {
let { active: I } = j;
return "Picked up draggable item " + I.id + ".";
},
onDragOver(j) {
let { active: I, over: q } = j;
return q ? "Draggable item " + I.id + " was moved over droppable area " + q.id + "." : "Draggable item " + I.id + " is no longer over a droppable area.";
},
onDragEnd(j) {
let { active: I, over: q } = j;
return q ? "Draggable item " + I.id + " was dropped over droppable area " + q.id : "Draggable item " + I.id + " was dropped.";
},
onDragCancel(j) {
let { active: I } = j;
return "Dragging was cancelled. Draggable item " + I.id + " was dropped.";
}
};
function Accessibility(j) {
let { announcements: I = defaultAnnouncements, container: q, hiddenTextDescribedById: Q, screenReaderInstructions: p_ = defaultScreenReaderInstructions } = j, { announce: m_, announcement: h_ } = useAnnouncement(), g_ = useUniqueId("DndLiveRegion"), [__, v_] = useState(!1);
if (useEffect(() => {
v_(!0);
}, []), useDndMonitor(useMemo(() => ({
onDragStart(j) {
let { active: q } = j;
m_(I.onDragStart({ active: q }));
},
onDragMove(j) {
let { active: q, over: Q } = j;
I.onDragMove && m_(I.onDragMove({
active: q,
over: Q
}));
},
onDragOver(j) {
let { active: q, over: Q } = j;
m_(I.onDragOver({
active: q,
over: Q
}));
},
onDragEnd(j) {
let { active: q, over: Q } = j;
m_(I.onDragEnd({
active: q,
over: Q
}));
},
onDragCancel(j) {
let { active: q, over: Q } = j;
m_(I.onDragCancel({
active: q,
over: Q
}));
}
}), [m_, I])), !__) return null;
let y_ = ke.createElement(ke.Fragment, null, ke.createElement(HiddenText, {
id: Q,
value: p_.draggable
}), ke.createElement(LiveRegion, {
id: g_,
announcement: h_
}));
return q ? createPortal(y_, q) : y_;
}
var Action;
(function(j) {
j.DragStart = "dragStart", j.DragMove = "dragMove", j.DragEnd = "dragEnd", j.DragCancel = "dragCancel", j.DragOver = "dragOver", j.RegisterDroppable = "registerDroppable", j.SetDroppableDisabled = "setDroppableDisabled", j.UnregisterDroppable = "unregisterDroppable";
})(Action ||= {});
function noop() {}
function useSensor(j, I) {
return useMemo(() => ({
sensor: j,
options: I ?? {}
}), [j, I]);
}
function useSensors() {
var j = [...arguments];
return useMemo(() => [...j].filter((j) => j != null), [...j]);
}
var defaultCoordinates = /* @__PURE__ */ Object.freeze({
x: 0,
y: 0
});
function distanceBetween(j, I) {
return Math.sqrt((j.x - I.x) ** 2 + (j.y - I.y) ** 2);
}
function getRelativeTransformOrigin(j, I) {
let q = getEventCoordinates(j);
if (!q) return "0 0";
let Q = {
x: (q.x - I.left) / I.width * 100,
y: (q.y - I.top) / I.height * 100
};
return Q.x + "% " + Q.y + "%";
}
function sortCollisionsAsc(j, I) {
let { data: { value: q } } = j, { data: { value: Q } } = I;
return q - Q;
}
function sortCollisionsDesc(j, I) {
let { data: { value: q } } = j, { data: { value: Q } } = I;
return Q - q;
}
function cornersOfRectangle(j) {
let { left: I, top: q, height: Q, width: p_ } = j;
return [
{
x: I,
y: q
},
{
x: I + p_,
y: q
},
{
x: I,
y: q + Q
},
{
x: I + p_,
y: q + Q
}
];
}
function getFirstCollision(j, I) {
if (!j || j.length === 0) return null;
let [q] = j;
return I ? q[I] : q;
}
function centerOfRectangle(j, I, q) {
return I === void 0 && (I = j.left), q === void 0 && (q = j.top), {
x: I + j.width * .5,
y: q + j.height * .5
};
}
var closestCenter = (j) => {
let { collisionRect: I, droppableRects: q, droppableContainers: Q } = j, p_ = centerOfRectangle(I, I.left, I.top), m_ = [];
for (let j of Q) {
let { id: I } = j, Q = q.get(I);
if (Q) {
let q = distanceBetween(centerOfRectangle(Q), p_);
m_.push({
id: I,
data: {
droppableContainer: j,
value: q
}
});
}
}
return m_.sort(sortCollisionsAsc);
}, closestCorners = (j) => {
let { collisionRect: I, droppableRects: q, droppableContainers: Q } = j, p_ = cornersOfRectangle(I), m_ = [];
for (let j of Q) {
let { id: I } = j, Q = q.get(I);
if (Q) {
let q = cornersOfRectangle(Q), h_ = p_.reduce((j, I, Q) => j + distanceBetween(q[Q], I), 0), g_ = Number((h_ / 4).toFixed(4));
m_.push({
id: I,
data: {
droppableContainer: j,
value: g_
}
});
}
}
return m_.sort(sortCollisionsAsc);
};
function getIntersectionRatio(j, I) {
let q = Math.max(I.top, j.top), Q = Math.max(I.left, j.left), p_ = Math.min(I.left + I.width, j.left + j.width), m_ = Math.min(I.top + I.height, j.top + j.height), h_ = p_ - Q, g_ = m_ - q;
if (Q < p_ && q < m_) {
let q = I.width * I.height, Q = j.width * j.height, p_ = h_ * g_, m_ = p_ / (q + Q - p_);
return Number(m_.toFixed(4));
}
return 0;
}
var rectIntersection = (j) => {
let { collisionRect: I, droppableRects: q, droppableContainers: Q } = j, p_ = [];
for (let j of Q) {
let { id: Q } = j, m_ = q.get(Q);
if (m_) {
let q = getIntersectionRatio(m_, I);
q > 0 && p_.push({
id: Q,
data: {
droppableContainer: j,
value: q
}
});
}
}
return p_.sort(sortCollisionsDesc);
};
function adjustScale(j, I, q) {
return {
...j,
scaleX: I && q ? I.width / q.width : 1,
scaleY: I && q ? I.height / q.height : 1
};
}
function getRectDelta(j, I) {
return j && I ? {
x: j.left - I.left,
y: j.top - I.top
} : defaultCoordinates;
}
function createRectAdjustmentFn(j) {
return function(I) {
return [...arguments].slice(1).reduce((I, q) => ({
...I,
top: I.top + j * q.y,
bottom: I.bottom + j * q.y,
left: I.left + j * q.x,
right: I.right + j * q.x
}), { ...I });
};
}
var getAdjustedRect = /* @__PURE__ */ createRectAdjustmentFn(1);
function parseTransform(j) {
if (j.startsWith("matrix3d(")) {
let I = j.slice(9, -1).split(/, /);
return {
x: +I[12],
y: +I[13],
scaleX: +I[0],
scaleY: +I[5]
};
} else if (j.startsWith("matrix(")) {
let I = j.slice(7, -1).split(/, /);
return {
x: +I[4],
y: +I[5],
scaleX: +I[0],
scaleY: +I[3]
};
}
return null;
}
function inverseTransform(j, I, q) {
let Q = parseTransform(I);
if (!Q) return j;
let { scaleX: p_, scaleY: m_, x: h_, y: g_ } = Q, __ = j.left - h_ - (1 - p_) * parseFloat(q), v_ = j.top - g_ - (1 - m_) * parseFloat(q.slice(q.indexOf(" ") + 1)), y_ = p_ ? j.width / p_ : j.width, b_ = m_ ? j.height / m_ : j.height;
return {
width: y_,
height: b_,
top: v_,
right: __ + y_,
bottom: v_ + b_,
left: __
};
}
var defaultOptions = { ignoreTransform: !1 };
function getClientRect(j, I) {
I === void 0 && (I = defaultOptions);
let q = j.getBoundingClientRect();
if (I.ignoreTransform) {
let { transform: I, transformOrigin: Q } = getWindow(j).getComputedStyle(j);
I && (q = inverseTransform(q, I, Q));
}
let { top: Q, left: p_, width: m_, height: h_, bottom: g_, right: __ } = q;
return {
top: Q,
left: p_,
width: m_,
height: h_,
bottom: g_,
right: __
};
}
function getTransformAgnosticClientRect(j) {
return getClientRect(j, { ignoreTransform: !0 });
}
function getWindowClientRect(j) {
let I = j.innerWidth, q = j.innerHeight;
return {
top: 0,
left: 0,
right: I,
bottom: q,
width: I,
height: q
};
}
function isFixed(j, I) {
return I === void 0 && (I = getWindow(j).getComputedStyle(j)), I.position === "fixed";
}
function isScrollable(j, I) {
I === void 0 && (I = getWindow(j).getComputedStyle(j));
let q = /(auto|scroll|overlay)/;
return [
"overflow",
"overflowX",
"overflowY"
].some((j) => {
let Q = I[j];
return typeof Q == "string" ? q.test(Q) : !1;
});
}
function getScrollableAncestors(j, I) {
let q = [];
function Q(p_) {
if (I != null && q.length >= I || !p_) return q;
if (isDocument(p_) && p_.scrollingElement != null && !q.includes(p_.scrollingElement)) return q.push(p_.scrollingElement), q;
if (!isHTMLElement(p_) || isSVGElement(p_) || q.includes(p_)) return q;
let m_ = getWindow(j).getComputedStyle(p_);
return p_ !== j && isScrollable(p_, m_) && q.push(p_), isFixed(p_, m_) ? q : Q(p_.parentNode);
}
return j ? Q(j) : q;
}
function getFirstScrollableAncestor(j) {
let [I] = getScrollableAncestors(j, 1);
return I ?? null;
}
function getScrollableElement(j) {
return !canUseDOM || !j ? null : isWindow(j) ? j : isNode(j) ? isDocument(j) || j === getOwnerDocument(j).scrollingElement ? window : isHTMLElement(j) ? j : null : null;
}
function getScrollXCoordinate(j) {
return isWindow(j) ? j.scrollX : j.scrollLeft;
}
function getScrollYCoordinate(j) {
return isWindow(j) ? j.scrollY : j.scrollTop;
}
function getScrollCoordinates(j) {
return {
x: getScrollXCoordinate(j),
y: getScrollYCoordinate(j)
};
}
var Direction;
(function(j) {
j[j.Forward = 1] = "Forward", j[j.Backward = -1] = "Backward";
})(Direction ||= {});
function isDocumentScrollingElement(j) {
return !canUseDOM || !j ? !1 : j === document.scrollingElement;
}
function getScrollPosition(j) {
let I = {
x: 0,
y: 0
}, q = isDocumentScrollingElement(j) ? {
height: window.innerHeight,
width: window.innerWidth
} : {
height: j.clientHeight,
width: j.clientWidth
}, Q = {
x: j.scrollWidth - q.width,
y: j.scrollHeight - q.height
}, p_ = j.scrollTop <= I.y, m_ = j.scrollLeft <= I.x, h_ = j.scrollTop >= Q.y, g_ = j.scrollLeft >= Q.x;
return {
isTop: p_,
isLeft: m_,
isBottom: h_,
isRight: g_,
maxScroll: Q,
minScroll: I
};
}
var defaultThreshold = {
x: .2,
y: .2
};
function getScrollDirectionAndSpeed(j, I, q, Q, p_) {
let { top: m_, left: h_, right: g_, bottom: __ } = q;
Q === void 0 && (Q = 10), p_ === void 0 && (p_ = defaultThreshold);
let { isTop: v_, isBottom: y_, isLeft: b_, isRight: x_ } = getScrollPosition(j), S_ = {
x: 0,
y: 0
}, C_ = {
x: 0,
y: 0
}, w_ = {
height: I.height * p_.y,
width: I.width * p_.x
};
return !v_ && m_ <= I.top + w_.height ? (S_.y = Direction.Backward, C_.y = Q * Math.abs((I.top + w_.height - m_) / w_.height)) : !y_ && __ >= I.bottom - w_.height && (S_.y = Direction.Forward, C_.y = Q * Math.abs((I.bottom - w_.height - __) / w_.height)), !x_ && g_ >= I.right - w_.width ? (S_.x = Direction.Forward, C_.x = Q * Math.abs((I.right - w_.width - g_) / w_.width)) : !b_ && h_ <= I.left + w_.width && (S_.x = Direction.Backward, C_.x = Q * Math.abs((I.left + w_.width - h_) / w_.width)), {
direction: S_,
speed: C_
};
}
function getScrollElementRect(j) {
if (j === document.scrollingElement) {
let { innerWidth: j, innerHeight: I } = window;
return {
top: 0,
left: 0,
right: j,
bottom: I,
width: j,
height: I
};
}
let { top: I, left: q, right: Q, bottom: p_ } = j.getBoundingClientRect();
return {
top: I,
left: q,
right: Q,
bottom: p_,
width: j.clientWidth,
height: j.clientHeight
};
}
function getScrollOffsets(j) {
return j.reduce((j, I) => add(j, getScrollCoordinates(I)), defaultCoordinates);
}
function getScrollXOffset(j) {
return j.reduce((j, I) => j + getScrollXCoordinate(I), 0);
}
function getScrollYOffset(j) {
return j.reduce((j, I) => j + getScrollYCoordinate(I), 0);
}
function scrollIntoViewIfNeeded(j, I) {
if (I === void 0 && (I = getClientRect), !j) return;
let { top: q, left: Q, bottom: p_, right: m_ } = I(j);
getFirstScrollableAncestor(j) && (p_ <= 0 || m_ <= 0 || q >= window.innerHeight || Q >= window.innerWidth) && j.scrollIntoView({
block: "center",
inline: "center"
});
}
var properties = [[
"x",
["left", "right"],
getScrollXOffset
], [
"y",
["top", "bottom"],
getScrollYOffset
]], Rect = class {
constructor(j, I) {
this.rect = void 0, this.width = void 0, this.height = void 0, this.top = void 0, this.bottom = void 0, this.right = void 0, this.left = void 0;
let q = getScrollableAncestors(I), Q = getScrollOffsets(q);
this.rect = { ...j }, this.width = j.width, this.height = j.height;
for (let [j, I, p_] of properties) for (let m_ of I) Object.defineProperty(this, m_, {
get: () => {
let I = p_(q), h_ = Q[j] - I;
return this.rect[m_] + h_;
},
enumerable: !0
});
Object.defineProperty(this, "rect", { enumerable: !1 });
}
}, Listeners = class {
constructor(j) {
this.target = void 0, this.listeners = [], this.removeAll = () => {
this.listeners.forEach((j) => this.target?.removeEventListener(...j));
}, this.target = j;
}
add(j, I, q) {
var Q;
(Q = this.target) == null || Q.addEventListener(j, I, q), this.listeners.push([
j,
I,
q
]);
}
};
function getEventListenerTarget(j) {
let { EventTarget: I } = getWindow(j);
return j instanceof I ? j : getOwnerDocument(j);
}
function hasExceededDistance(j, I) {
let q = Math.abs(j.x), Q = Math.abs(j.y);
return typeof I == "number" ? Math.sqrt(q ** 2 + Q ** 2) > I : "x" in I && "y" in I ? q > I.x && Q > I.y : "x" in I ? q > I.x : "y" in I ? Q > I.y : !1;
}
var EventName;
(function(j) {
j.Click = "click", j.DragStart = "dragstart", j.Keydown = "keydown", j.ContextMenu = "contextmenu", j.Resize = "resize", j.SelectionChange = "selectionchange", j.VisibilityChange = "visibilitychange";
})(EventName ||= {});
function preventDefault(j) {
j.preventDefault();
}
function stopPropagation(j) {
j.stopPropagation();
}
var KeyboardCode;
(function(j) {
j.Space = "Space", j.Down = "ArrowDown", j.Right = "ArrowRight", j.Left = "ArrowLeft", j.Up = "ArrowUp", j.Esc = "Escape", j.Enter = "Enter", j.Tab = "Tab";
})(KeyboardCode ||= {});
var defaultKeyboardCodes = {
start: [KeyboardCode.Space, KeyboardCode.Enter],
cancel: [KeyboardCode.Esc],
end: [
KeyboardCode.Space,
KeyboardCode.Enter,
KeyboardCode.Tab
]
}, defaultKeyboardCoordinateGetter = (j, I) => {
let { currentCoordinates: q } = I;
switch (j.code) {
case KeyboardCode.Right: return {
...q,
x: q.x + 25
};
case KeyboardCode.Left: return {
...q,
x: q.x - 25
};
case KeyboardCode.Down: return {
...q,
y: q.y + 25
};
case KeyboardCode.Up: return {
...q,
y: q.y - 25
};
}
}, KeyboardSensor = class {
constructor(j) {
this.props = void 0, this.autoScrollEnabled = !1, this.referenceCoordinates = void 0, this.listeners = void 0, this.windowListeners = void 0, this.props = j;
let { event: { target: I } } = j;
this.props = j, this.listeners = new Listeners(getOwnerDocument(I)), this.windowListeners = new Listeners(getWindow(I)), this.handleKeyDown = this.handleKeyDown.bind(this), this.handleCancel = this.handleCancel.bind(this), this.attach();
}
attach() {
this.handleStart(), this.windowListeners.add(EventName.Resize, this.handleCancel), this.windowListeners.add(EventName.VisibilityChange, this.handleCancel), setTimeout(() => this.listeners.add(EventName.Keydown, this.handleKeyDown));
}
handleStart() {
let { activeNode: j, onStart: I } = this.props, q = j.node.current;
q && scrollIntoViewIfNeeded(q), I(defaultCoordinates);
}
handleKeyDown(j) {
if (isKeyboardEvent(j)) {
let { active: I, context: q, options: Q } = this.props, { keyboardCodes: p_ = defaultKeyboardCodes, coordinateGetter: m_ = defaultKeyboardCoordinateGetter, scrollBehavior: h_ = "smooth" } = Q, { code: g_ } = j;
if (p_.end.includes(g_)) {
this.handleEnd(j);
return;
}
if (p_.cancel.includes(g_)) {
this.handleCancel(j);
return;
}
let { collisionRect: __ } = q.current, v_ = __ ? {
x: __.left,
y: __.top
} : defaultCoordinates;
this.referenceCoordinates ||= v_;
let y_ = m_(j, {
active: I,
context: q.current,
currentCoordinates: v_
});
if (y_) {
let I = subtract(y_, v_), Q = {
x: 0,
y: 0
}, { scrollableAncestors: p_ } = q.current;
for (let q of p_) {
let p_ = j.code, { isTop: m_, isRight: g_, isLeft: __, isBottom: v_, maxScroll: b_, minScroll: x_ } = getScrollPosition(q), S_ = getScrollElementRect(q), C_ = {
x: Math.min(p_ === KeyboardCode.Right ? S_.right - S_.width / 2 : S_.right, Math.max(p_ === KeyboardCode.Right ? S_.left : S_.left + S_.width / 2, y_.x)),
y: Math.min(p_ === KeyboardCode.Down ? S_.bottom - S_.height / 2 : S_.bottom, Math.max(p_ === KeyboardCode.Down ? S_.top : S_.top + S_.height / 2, y_.y))
}, w_ = p_ === KeyboardCode.Right && !g_ || p_ === KeyboardCode.Left && !__, T_ = p_ === KeyboardCode.Down && !v_ || p_ === KeyboardCode.Up && !m_;
if (w_ && C_.x !== y_.x) {
let j = q.scrollLeft + I.x, m_ = p_ === KeyboardCode.Right && j <= b_.x || p_ === KeyboardCode.Left && j >= x_.x;
if (m_ && !I.y) {
q.scrollTo({
left: j,
behavior: h_
});
return;
}
m_ ? Q.x = q.scrollLeft - j : Q.x = p_ === KeyboardCode.Right ? q.scrollLeft - b_.x : q.scrollLeft - x_.x, Q.x && q.scrollBy({
left: -Q.x,
behavior: h_
});
break;
} else if (T_ && C_.y !== y_.y) {
let j = q.scrollTop + I.y, m_ = p_ === KeyboardCode.Down && j <= b_.y || p_ === KeyboardCode.Up && j >= x_.y;
if (m_ && !I.x) {
q.scrollTo({
top: j,
behavior: h_
});
return;
}
m_ ? Q.y = q.scrollTop - j : Q.y = p_ === KeyboardCode.Down ? q.scrollTop - b_.y : q.scrollTop - x_.y, Q.y && q.scrollBy({
top: -Q.y,
behavior: h_
});
break;
}
}
this.handleMove(j, add(subtract(y_, this.referenceCoordinates), Q));
}
}
}
handleMove(j, I) {
let { onMove: q } = this.props;
j.preventDefault(), q(I);
}
handleEnd(j) {
let { onEnd: I } = this.props;
j.preventDefault(), this.detach(), I();
}
handleCancel(j) {
let { onCancel: I } = this.props;
j.preventDefault(), this.detach(), I();
}
detach() {
this.listeners.removeAll(), this.windowListeners.removeAll();
}
};
KeyboardSensor.activators = [{
eventName: "onKeyDown",
handler: (j, I, q) => {
let { keyboardCodes: Q = defaultKeyboardCodes, onActivation: p_ } = I, { active: m_ } = q, { code: h_ } = j.nativeEvent;
if (Q.start.includes(h_)) {
let I = m_.activatorNode.current;
return I && j.target !== I ? !1 : (j.preventDefault(), p_?.({ event: j.nativeEvent }), !0);
}
return !1;
}
}];
function isDistanceConstraint(j) {
return !!(j && "distance" in j);
}
function isDelayConstraint(j) {
return !!(j && "delay" in j);
}
var AbstractPointerSensor = class {
constructor(j, I, q) {
q === void 0 && (q = getEventListenerTarget(j.event.target)), this.props = void 0, this.events = void 0, this.autoScrollEnabled = !0, this.document = void 0, this.activated = !1, this.initialCoordinates = void 0, this.timeoutId = null, this.listeners = void 0, this.documentListeners = void 0, this.windowListeners = void 0, this.props = j, this.events = I;
let { event: Q } = j, { target: p_ } = Q;
this.props = j, this.events = I, this.document = getOwnerDocument(p_), this.documentListeners = new Listeners(this.document), this.listeners = new Listeners(q), this.windowListeners = new Listeners(getWindow(p_)), this.initialCoordinates = getEventCoordinates(Q) ?? defaultCoordinates, this.handleStart = this.handleStart.bind(this), this.handleMove = this.handleMove.bind(this), this.handleEnd = this.handleEnd.bind(this), this.handleCancel = this.handleCancel.bind(this), this.handleKeydown = this.handleKeydown.bind(this), this.removeTextSelection = this.removeTextSelection.bind(this), this.attach();
}
attach() {
let { events: j, props: { options: { activationConstraint: I, bypassActivationConstraint: q } } } = this;
if (this.listeners.add(j.move.name, this.handleMove, { passive: !1 }), this.listeners.add(j.end.name, this.handleEnd), j.cancel && this.listeners.add(j.cancel.name, this.handleCancel), this.windowListeners.add(EventName.Resize, this.handleCancel), this.windowListeners.add(EventName.DragStart, preventDefault), this.windowListeners.add(EventName.VisibilityChange, this.handleCancel), this.windowListeners.add(EventName.ContextMenu, preventDefault), this.documentListeners.add(EventName.Keydown, this.handleKeydown), I) {
if (q != null && q({
event: this.props.event,
activeNode: this.props.activeNode,
options: this.props.options
})) return this.handleStart();
if (isDelayConstraint(I)) {
this.timeoutId = setTimeout(this.handleStart, I.delay), this.handlePending(I);
return;
}
if (isDistanceConstraint(I)) {
this.handlePending(I);
return;
}
}
this.handleStart();
}
detach() {
this.listeners.removeAll(), this.windowListeners.removeAll(), setTimeout(this.documentListeners.removeAll, 50), this.timeoutId !== null && (clearTimeout(this.timeoutId), this.timeoutId = null);
}
handlePending(j, I) {
let { active: q, onPending: Q } = this.props;
Q(q, j, this.initialCoordinates, I);
}
handleStart() {
let { initialCoordinates: j } = this, { onStart: I } = this.props;
j && (this.activated = !0, this.documentListeners.add(EventName.Click, stopPropagation, { capture: !0 }), this.removeTextSelection(), this.documentListeners.add(EventName.SelectionChange, this.removeTextSelection), I(j));
}
handleMove(j) {
let { activated: I, initialCoordinates: q, props: Q } = this, { onMove: p_, options: { activationConstraint: m_ } } = Q;
if (!q) return;
let h_ = getEventCoordinates(j) ?? defaultCoordinates, g_ = subtract(q, h_);
if (!I && m_) {
if (isDistanceConstraint(m_)) {
if (m_.tolerance != null && hasExceededDistance(g_, m_.tolerance)) return this.handleCancel();
if (hasExceededDistance(g_, m_.distance)) return this.handleStart();
}
if (isDelayConstraint(m_) && hasExceededDistance(g_, m_.tolerance)) return this.handleCancel();
this.handlePending(m_, g_);
return;
}
j.cancelable && j.preventDefault(), p_(h_);
}
handleEnd() {
let { onAbort: j, onEnd: I } = this.props;
this.detach(), this.activated || j(this.props.active), I();
}
handleCancel() {
let { onAbort: j, onCancel: I } = this.props;
this.detach(), this.activated || j(this.props.active), I();
}
handleKeydown(j) {
j.code === KeyboardCode.Esc && this.handleCancel();
}
removeTextSelection() {
var j;
(j = this.document.getSelection()) == null || j.removeAllRanges();
}
}, events = {
cancel: { name: "pointercancel" },
move: { name: "pointermove" },
end: { name: "pointerup" }
}, PointerSensor = class extends AbstractPointerSensor {
constructor(j) {
let { event: I } = j, q = getOwnerDocument(I.target);
super(j, events, q);
}
};
PointerSensor.activators = [{
eventName: "onPointerDown",
handler: (j, I) => {
let { nativeEvent: q } = j, { onActivation: Q } = I;
return !q.isPrimary || q.button !== 0 ? !1 : (Q?.({ event: q }), !0);
}
}];
var events$1 = {
move: { name: "mousemove" },
end: { name: "mouseup" }
}, MouseButton;
(function(j) {
j[j.RightClick = 2] = "RightClick";
})(MouseButton ||= {});
var MouseSensor = class extends AbstractPointerSensor {
constructor(j) {
super(j, events$1, getOwnerDocument(j.event.target));
}
};
MouseSensor.activators = [{
eventName: "onMouseDown",
handler: (j, I) => {
let { nativeEvent: q } = j, { onActivation: Q } = I;
return q.button === MouseButton.RightClick ? !1 : (Q?.({ event: q }), !0);
}
}];
var events$2 = {
cancel: { name: "touchcancel" },
move: { name: "touchmove" },
end: { name: "touchend" }
}, TouchSensor = class extends AbstractPointerSensor {
constructor(j) {
super(j, events$2);
}
static setup() {
return window.addEventListener(events$2.move.name, j, {
capture: !1,
passive: !1
}), function() {
window.removeEventListener(events$2.move.name, j);
};
function j() {}
}
};
TouchSensor.activators = [{
eventName: "onTouchStart",
handler: (j, I) => {
let { nativeEvent: q } = j, { onActivation: Q } = I, { touches: p_ } = q;
return p_.length > 1 ? !1 : (Q?.({ event: q }), !0);
}
}];
var AutoScrollActivator;
(function(j) {
j[j.Pointer = 0] = "Pointer", j[j.DraggableRect = 1] = "DraggableRect";
})(AutoScrollActivator ||= {});
var TraversalOrder;
(function(j) {
j[j.TreeOrder = 0] = "TreeOrder", j[j.ReversedTreeOrder = 1] = "ReversedTreeOrder";
})(TraversalOrder ||= {});
function useAutoScroller(j) {
let { acceleration: I, activator: q = AutoScrollActivator.Pointer, canScroll: Q, draggingRect: p_, enabled: m_, interval: h_ = 5, order: g_ = TraversalOrder.TreeOrder, pointerCoordinates: __, scrollableAncestors: v_, scrollableAncestorRects: y_, delta: b_, threshold: x_ } = j, S_ = useScrollIntent({
delta: b_,
disabled: !m_
}), [C_, w_] = useInterval(), T_ = useRef({
x: 0,
y: 0
}), E_ = useRef({
x: 0,
y: 0
}), D_ = useMemo(() => {
switch (q) {
case AutoScrollActivator.Pointer: return __ ? {
top: __.y,
bottom: __.y,
left: __.x,
right: __.x
} : null;
case AutoScrollActivator.DraggableRect: return p_;
}
}, [
q,
p_,
__
]), O_ = useRef(null), k_ = useCallback(() => {
let j = O_.current;
if (!j) return;
let I = T_.current.x * E_.current.x, q = T_.current.y * E_.current.y;
j.scrollBy(I, q);
}, []), A_ = useMemo(() => g_ === TraversalOrder.TreeOrder ? [...v_].reverse() : v_, [g_, v_]);
useEffect(() => {
if (!m_ || !v_.length || !D_) {
w_();
return;
}
for (let j of A_) {
if (Q?.(j) === !1) continue;
let q = v_.indexOf(j), p_ = y_[q];
if (!p_) continue;
let { direction: m_, speed: g_ } = getScrollDirectionAndSpeed(j, p_, D_, I, x_);
for (let j of ["x", "y"]) S_[j][m_[j]] || (g_[j] = 0, m_[j] = 0);
if (g_.x > 0 || g_.y > 0) {
w_(), O_.current = j, C_(k_, h_), T_.current = g_, E_.current = m_;
return;
}
}
T_.current = {
x: 0,
y: 0
}, E_.current = {
x: 0,
y: 0
}, w_();
}, [
I,
k_,
Q,
w_,
m_,
h_,
JSON.stringify(D_),
JSON.stringify(S_),
C_,
v_,
A_,
y_,
JSON.stringify(x_)
]);
}
var defaultScrollIntent = {
x: {
[Direction.Backward]: !1,
[Direction.Forward]: !1
},
y: {
[Direction.Backward]: !1,
[Direction.Forward]: !1
}
};
function useScrollIntent(j) {
let { delta: I, disabled: q } = j, Q = usePrevious(I);
return useLazyMemo((j) => {
if (q || !Q || !j) return defaultScrollIntent;
let p_ = {
x: Math.sign(I.x - Q.x),
y: Math.sign(I.y - Q.y)
};
return {
x: {
[Direction.Backward]: j.x[Direction.Backward] || p_.x === -1,
[Direction.Forward]: j.x[Direction.Forward] || p_.x === 1
},
y: {
[Direction.Backward]: j.y[Direction.Backward] || p_.y === -1,
[Direction.Forward]: j.y[Direction.Forward] || p_.y === 1
}
};
}, [
q,
I,
Q
]);
}
function useCachedNode(j, I) {
let q = I == null ? void 0 : j.get(I), Q = q ? q.node.current : null;
return useLazyMemo((j) => I == null ? null : Q ?? j ?? null, [Q, I]);
}
function useCombineActivators(j, I) {
return useMemo(() => j.reduce((j, q) => {
let { sensor: Q } = q, p_ = Q.activators.map((j) => ({
eventName: j.eventName,
handler: I(j.handler, q)
}));
return [...j, ...p_];
}, []), [j, I]);
}
var MeasuringStrategy;
(function(j) {
j[j.Always = 0] = "Always", j[j.BeforeDragging = 1] = "BeforeDragging", j[j.WhileDragging = 2] = "WhileDragging";
})(MeasuringStrategy ||= {});
var MeasuringFrequency;
(function(j) {
j.Optimized = "optimized";
})(MeasuringFrequency ||= {});
var defaultValue = /* @__PURE__ */ new Map();
function useDroppableMeasuring(j, I) {
let { dragging: q, dependencies: Q, config: p_ } = I, [m_, h_] = useState(null), { frequency: g_, measure: __, strategy: v_ } = p_, y_ = useRef(j), b_ = T_(), x_ = useLatestValue(b_), S_ = useCallback(function(j) {
j === void 0 && (j = []), !x_.current && h_((I) => I === null ? j : I.concat(j.filter((j) => !I.includes(j))));
}, [x_]), C_ = useRef(null), w_ = useLazyMemo((I) => {
if (b_ && !q) return defaultValue;
if (!I || I === defaultValue || y_.current !== j || m_ != null) {
let I = /* @__PURE__ */ new Map();
for (let q of j) {
if (!q) continue;
if (m_ && m_.length > 0 && !m_.includes(q.id) && q.rect.current) {
I.set(q.id, q.rect.current);
continue;
}
let j = q.node.current, Q = j ? new Rect(__(j), j) : null;
q.rect.current = Q, Q && I.set(q.id, Q);
}
return I;
}
return I;
}, [
j,
m_,
q,
b_,
__
]);
return useEffect(() => {
y_.current = j;
}, [j]), useEffect(() => {
b_ || S_();
}, [q, b_]), useEffect(() => {
m_ && m_.length > 0 && h_(null);
}, [JSON.stringify(m_)]), useEffect(() => {
b_ || typeof g_ != "number" || C_.current !== null || (C_.current = setTimeout(() => {
S_(), C_.current = null;
}, g_));
}, [
g_,
b_,
S_,
...Q
]), {
droppableRects: w_,
measureDroppableContainers: S_,
measuringScheduled: m_ != null
};
function T_() {
switch (v_) {
case MeasuringStrategy.Always: return !1;
case MeasuringStrategy.BeforeDragging: return q;
default: return !q;
}
}
}
function useInitialValue(j, I) {
return useLazyMemo((q) => j ? q || (typeof I == "function" ? I(j) : j) : null, [I, j]);
}
function useInitialRect(j, I) {
return useInitialValue(j, I);
}
function useMutationObserver(j) {
let { callback: I, disabled: q } = j, Q = useEvent(I), p_ = useMemo(() => {
if (q || typeof window > "u" || window.MutationObserver === void 0) return;
let { MutationObserver: j } = window;
return new j(Q);
}, [Q, q]);
return useEffect(() => () => p_?.disconnect(), [p_]), p_;
}
function useResizeObserver(j) {
let { callback: I, disabled: q } = j, Q = useEvent(I), p_ = useMemo(() => {
if (q || typeof window > "u" || window.ResizeObserver === void 0) return;
let { ResizeObserver: j } = window;
return new j(Q);
}, [q]);
return useEffect(() => () => p_?.disconnect(), [p_]), p_;
}
function defaultMeasure(j) {
return new Rect(getClientRect(j), j);
}
function useRect(j, I, q) {
I === void 0 && (I = defaultMeasure);
let [Q, p_] = useState(null);
function m_() {
p_((Q) => {
if (!j) return null;
if (j.isConnected === !1) return Q ?? q ?? null;
let p_ = I(j);
return JSON.stringify(Q) === JSON.stringify(p_) ? Q : p_;
});
}
let h_ = useMutationObserver({ callback(I) {
if (j) for (let q of I) {
let { type: I, target: Q } = q;
if (I === "childList" && Q instanceof HTMLElement && Q.contains(j)) {
m_();
break;
}
}
} }), g_ = useResizeObserver({ callback: m_ });
return useIsomorphicLayoutEffect(() => {
m_(), j ? (g_?.observe(j), h_?.observe(document.body, {
childList: !0,
subtree: !0
})) : (g_?.disconnect(), h_?.disconnect());
}, [j]), Q;
}
function useRectDelta(j) {
let I = useInitialValue(j);
return getRectDelta(j, I);
}
var defaultValue$1 = [];
function useScrollableAncestors(j) {
let I = useRef(j), q = useLazyMemo((q) => j ? q && q !== defaultValue$1 && j && I.current && j.parentNode === I.current.parentNode ? q : getScrollableAncestors(j) : defaultValue$1, [j]);
return useEffect(() => {
I.current = j;
}, [j]), q;
}
function useScrollOffsets(j) {
let [I, q] = useState(null), Q = useRef(j), p_ = useCallback((j) => {
let I = getScrollableElement(j.target);
I && q((j) => j ? (j.set(I, getScrollCoordinates(I)), new Map(j)) : null);
}, []);
return useEffect(() => {
let I = Q.current;
if (j !== I) {
m_(I);
let h_ = j.map((j) => {
let I = getScrollableElement(j);
return I ? (I.addEventListener("scroll", p_, { passive: !0 }), [I, getScrollCoordinates(I)]) : null;
}).filter((j) => j != null);
q(h_.length ? new Map(h_) : null), Q.current = j;
}
return () => {
m_(j), m_(I);
};
function m_(j) {
j.forEach((j) => {
getScrollableElement(j)?.removeEventListener("scroll", p_);
});
}
}, [p_, j]), useMemo(() => j.length ? I ? Array.from(I.values()).reduce((j, I) => add(j, I), defaultCoordinates) : getScrollOffsets(j) : defaultCoordinates, [j, I]);
}
function useScrollOffsetsDelta(j, I) {
I === void 0 && (I = []);
let q = useRef(null);
return useEffect(() => {
q.current = null;
}, I), useEffect(() => {
let I = j !== defaultCoordinates;
I && !q.current && (q.current = j), !I && q.current && (q.current = null);
}, [j]), q.current ? subtract(j, q.current) : defaultCoordinates;
}
function useSensorSetup(j) {
useEffect(() => {
if (!canUseDOM) return;
let I = j.map((j) => {
let { sensor: I } = j;
return I.setup == null ? void 0 : I.setup();
});
return () => {
for (let j of I) j?.();
};
}, j.map((j) => {
let { sensor: I } = j;
return I;
}));
}
function useSyntheticListeners(j, I) {
return useMemo(() => j.reduce((j, q) => {
let { eventName: Q, handler: p_ } = q;
return j[Q] = (j) => {
p_(j, I);
}, j;
}, {}), [j, I]);
}
function useWindowRect(j) {
return useMemo(() => j ? getWindowClientRect(j) : null, [j]);
}
var defaultValue$2 = [];
function useRects(j, I) {
I === void 0 && (I = getClientRect);
let [q] = j, Q = useWindowRect(q ? getWindow(q) : null), [p_, m_] = useState(defaultValue$2);
function h_() {
m_(() => j.length ? j.map((j) => isDocumentScrollingElement(j) ? Q : new Rect(I(j), j)) : defaultValue$2);
}
let g_ = useResizeObserver({ callback: h_ });
return useIsomorphicLayoutEffect(() => {
g_?.disconnect(), h_(), j.forEach((j) => g_?.observe(j));
}, [j]), p_;
}
function getMeasurableNode(j) {
if (!j) return null;
if (j.children.length > 1) return j;
let I = j.children[0];
return isHTMLElement(I) ? I : j;
}
function useDragOverlayMeasuring(j) {
let { measure: I } = j, [q, Q] = useState(null), p_ = useCallback((j) => {
for (let { target: q } of j) if (isHTMLElement(q)) {
Q((j) => {
let Q = I(q);
return j ? {
...j,
width: Q.width,
height: Q.height
} : Q;
});
break;
}
}, [I]), m_ = useResizeObserver({ callback: p_ }), h_ = useCallback((j) => {
let q = getMeasurableNode(j);
m_?.disconnect(), q && m_?.observe(q), Q(q ? I(q) : null);
}, [I, m_]), [g_, __] = useNodeRef(h_);
return useMemo(() => ({
nodeRef: g_,
rect: q,
setRef: __
}), [
q,
g_,
__
]);
}
var defaultSensors = [{
sensor: PointerSensor,
options: {}
}, {
sensor: KeyboardSensor,
options: {}
}], defaultData = { current: {} }, defaultMeasuringConfiguration = {
draggable: { measure: getTransformAgnosticClientRect },
droppable: {
measure: getTransformAgnosticClientRect,
strategy: MeasuringStrategy.WhileDragging,
frequency: MeasuringFrequency.Optimized
},
dragOverlay: { measure: getClientRect }
}, DroppableContainersMap = class extends Map {
get(j) {
return j == null ? void 0 : super.get(j) ?? void 0;
}
toArray() {
return Array.from(this.values());
}
getEnabled() {
return this.toArray().filter((j) => {
let { disabled: I } = j;
return !I;
});
}
getNodeFor(j) {
return this.get(j)?.node.current ?? void 0;
}
}, defaultPublicContext = {
activatorEvent: null,
active: null,
activeNode: null,
activeNodeRect: null,
collisions: null,
containerNodeRect: null,
draggableNodes: /* @__PURE__ */ new Map(),
droppableRects: /* @__PURE__ */ new Map(),
droppableContainers: /* @__PURE__ */ new DroppableContainersMap(),
over: null,
dragOverlay: {
nodeRef: { current: null },
rect: null,
setRef: noop
},
scrollableAncestors: [],
scrollableAncestorRects: [],
measuringConfiguration: defaultMeasuringConfiguration,
measureDroppableContainers: noop,
windowRect: null,
measuringScheduled: !1
}, defaultInternalContext = {
activatorEvent: null,
activators: [],
active: null,
activeNodeRect: null,
ariaDescribedById: { draggable: "" },
dispatch: noop,
draggableNodes: /* @__PURE__ */ new Map(),
over: null,
measureDroppableContainers: noop
}, InternalContext = /* @__PURE__ */ createContext(defaultInternalContext), PublicContext = /* @__PURE__ */ createContext(defaultPublicContext);
function getInitialState() {
return {
draggable: {
active: null,
initialCoordinates: {
x: 0,
y: 0
},
nodes: /* @__PURE__ */ new Map(),
translate: {
x: 0,
y: 0
}
},
droppable: { containers: new DroppableContainersMap() }
};
}
function reducer(j, I) {
switch (I.type) {
case Action.DragStart: return {
...j,
draggable: {
...j.draggable,
initialCoordinates: I.initialCoordinates,
active: I.active
}
};
case Action.DragMove: return j.draggable.active == null ? j : {
...j,
draggable: {
...j.draggable,
translate: {
x: I.coordinates.x - j.draggable.initialCoordinates.x,
y: I.coordinates.y - j.draggable.initialCoordinates.y
}
}
};
case Action.DragEnd:
case Action.DragCancel: return {
...j,
draggable: {
...j.draggable,
active: null,
initialCoordinates: {
x: 0,
y: 0
},
translate: {
x: 0,
y: 0
}
}
};
case Action.RegisterDroppable: {
let { element: q } = I, { id: Q } = q, p_ = new DroppableContainersMap(j.droppable.containers);
return p_.set(Q, q), {
...j,
droppable: {
...j.droppable,
containers: p_
}
};
}
case Action.SetDroppableDisabled: {
let { id: q, key: Q, disabled: p_ } = I, m_ = j.droppable.containers.get(q);
if (!m_ || Q !== m_.key) return j;
let h_ = new DroppableContainersMap(j.droppable.containers);
return h_.set(q, {
...m_,
disabled: p_
}), {
...j,
droppable: {
...j.droppable,
containers: h_
}
};
}
case Action.UnregisterDroppable: {
let { id: q, key: Q } = I, p_ = j.droppable.containers.get(q);
if (!p_ || Q !== p_.key) return j;
let m_ = new DroppableContainersMap(j.droppable.containers);
return m_.delete(q), {
...j,
droppable: {
...j.droppable,
containers: m_
}
};
}
default: return j;
}
}
function RestoreFocus(j) {
let { disabled: I } = j, { active: q, activatorEvent: Q, draggableNodes: p_ } = useContext(InternalContext), m_ = usePrevious(Q), h_ = usePrevious(q?.id);
return useEffect(() => {
if (!I && !Q && m_ && h_ != null) {
if (!isKeyboardEvent(m_) || document.activeElement === m_.target) return;
let j = p_.get(h_);
if (!j) return;
let { activatorNode: I, node: q } = j;
if (!I.current && !q.current) return;
requestAnimationFrame(() => {
for (let j of [I.current, q.current]) {
if (!j) continue;
let I = findFirstFocusableNode(j);
if (I) {
I.focus();
break;
}
}
});
}
}, [
Q,
I,
p_,
h_,
m_
]), null;
}
function applyModifiers(j, I) {
let { transform: q,...Q } = I;
return j != null && j.length ? j.reduce((j, I) => I({
transform: j,
...Q
}), q) : q;
}
function useMeasuringConfiguration(j) {
return useMemo(() => ({
draggable: {
...defaultMeasuringConfiguration.draggable,
...j?.draggable
},
droppable: {
...defaultMeasuringConfiguration.droppable,
...j?.droppable
},
dragOverlay: {
...defaultMeasuringConfiguration.dragOverlay,
...j?.dragOverlay
}
}), [
j?.draggable,
j?.droppable,
j?.dragOverlay
]);
}
function useLayoutShiftScrollCompensation(j) {
let { activeNode: I, measure: q, initialRect: Q, config: p_ = !0 } = j, m_ = useRef(!1), { x: h_, y: g_ } = typeof p_ == "boolean" ? {
x: p_,
y: p_
} : p_;
useIsomorphicLayoutEffect(() => {
if (!h_ && !g_ || !I) {
m_.current = !1;
return;
}
if (m_.current || !Q) return;
let j = I?.node.current;
if (!j || j.isConnected === !1) return;
let p_ = q(j), __ = getRectDelta(p_, Q);
if (h_ || (__.x = 0), g_ || (__.y = 0), m_.current = !0, Math.abs(__.x) > 0 || Math.abs(__.y) > 0) {
let I = getFirstScrollableAncestor(j);
I && I.scrollBy({
top: __.y,
left: __.x
});
}
}, [
I,
h_,
g_,
Q,
q
]);
}
var ActiveDraggableContext = /* @__PURE__ */ createContext({
...defaultCoordinates,
scaleX: 1,
scaleY: 1
}), Status;
(function(j) {
j[j.Uninitialized = 0] = "Uninitialized", j[j.Initializing = 1] = "Initializing", j[j.Initialized = 2] = "Initialized";
})(Status ||= {});
var DndContext = /* @__PURE__ */ memo(function(j) {
let { id: I, accessibility: q, autoScroll: Q = !0, children: p_, sensors: m_ = defaultSensors, collisionDetection: h_ = rectIntersection, measuring: g_, modifiers: __,...v_ } = j, [y_, b_] = useReducer(reducer, void 0, getInitialState), [x_, S_] = useDndMonitorProvider(), [C_, w_] = useState(Status.Uninitialized), T_ = C_ === Status.Initialized, { draggable: { active: E_, nodes: D_, translate: O_ }, droppable: { containers: k_ } } = y_, A_ = E_ == null ? null : D_.get(E_), j_ = useRef({
initial: null,
translated: null
}), M_ = useMemo(() => E_ == null ? null : {
id: E_,
data: A_?.data ?? defaultData,
rect: j_
}, [E_, A_]), N_ = useRef(null), [P_, F_] = useState(null), [I_, L_] = useState(null), R_ = useLatestValue(v_, Object.values(v_)), z_ = useUniqueId("DndDescribedBy", I), B_ = useMemo(() => k_.getEnabled(), [k_]), V_ = useMeasuringConfiguration(g_), { droppableRects: H_, measureDroppableContainers: U_, measuringScheduled: W_ } = useDroppableMeasuring(B_, {
dragging: T_,
dependencies: [O_.x, O_.y],
config: V_.droppable
}), G_ = useCachedNode(D_, E_), K_ = useMemo(() => I_ ? getEventCoordinates(I_) : null, [I_]), q_ = Pv(), J_ = useInitialRect(G_, V_.draggable.measure);
useLayoutShiftScrollCompensation({
activeNode: E_ == null ? null : D_.get(E_),
config: q_.layoutShiftCompensation,
initialRect: J_,
measure: V_.draggable.measure
});
let Y_ = useRect(G_, V_.draggable.measure, J_), X_ = useRect(G_ ? G_.parentElement : null), Z_ = useRef({
activatorEvent: null,
active: null,
activeNode: G_,
collisionRect: null,
collisions: null,
droppableRects: H_,
draggableNodes: D_,
draggingNode: null,
draggingNodeRect: null,
droppableContainers: k_,
over: null,
scrollableAncestors: [],
scrollAdjustedTranslate: null
}), Q_ = k_.getNodeFor(Z_.current.over?.id), $_ = useDragOverlayMeasuring({ measure: V_.dragOverlay.measure }), ev = $_.nodeRef.current ?? G_, tv = T_ ? $_.rect ?? Y_ : null, nv = !!($_.nodeRef.current && $_.rect), rv = useRectDelta(nv ? null : Y_), av = useWindowRect(ev ? getWindow(ev) : null), ov = useScrollableAncestors(T_ ? Q_ ?? G_ : null), sv = useRects(ov), cv = applyModifiers(__, {
transform: {
x: O_.x - rv.x,
y: O_.y - rv.y,
scaleX: 1,
scaleY: 1
},
activatorEvent: I_,
active: M_,
activeNodeRect: Y_,
containerNodeRect: X_,
draggingNodeRect: tv,
over: Z_.current.over,
overlayNodeRect: $_.rect,
scrollableAncestors: ov,
scrollableAncestorRects: sv,
windowRect: av
}), lv = K_ ? add(K_, O_) : null, uv = useScrollOffsets(ov), fv = useScrollOffsetsDelta(uv), mv = useScrollOffsetsDelta(uv, [Y_]), hv = add(cv, fv), gv = tv ? getAdjustedRect(tv, cv) : null, xv = M_ && gv ? h_({
active: M_,
collisionRect: gv,
droppableRects: H_,
droppableContainers: B_,
pointerCoordinates: lv
}) : null, Sv = getFirstCollision(xv, "id"), [Cv, Tv] = useState(null), Ev = nv ? cv : add(cv, mv), Dv = adjustScale(Ev, Cv?.rect ?? null, Y_), Ov = useRef(null), kv = useCallback((j, I) => {
let { sensor: q, options: Q } = I;
if (N_.current == null) return;
let p_ = D_.get(N_.current);
if (!p_) return;
let m_ = j.nativeEvent;
Ov.current = new q({
active: N_.current,
activeNode: p_,
event: m_,
options: Q,
context: Z_,
onAbort(j) {
if (!D_.get(j)) return;
let { onDragAbort: I } = R_.current, q = { id: j };
I?.(q), x_({
type: "onDragAbort",
event: q
});
},
onPending(j, I, q, Q) {
if (!D_.get(j)) return;
let { onDragPending: p_ } = R_.current, m_ = {
id: j,
constraint: I,
initialCoordinates: q,
offset: Q
};
p_?.(m_), x_({
type: "onDragPending",
event: m_
});
},
onStart(j) {
let I = N_.current;
if (I == null) return;
let q = D_.get(I);
if (!q) return;
let { onDragStart: Q } = R_.current, p_ = {
activatorEvent: m_,
active: {
id: I,
data: q.data,
rect: j_
}
};
unstable_batchedUpdates(() => {
Q?.(p_), w_(Status.Initializing), b_({
type: Action.DragStart,
initialCoordinates: j,
active: I
}), x_({
type: "onDragStart",
event: p_
}), F_(Ov.current), L_(m_);
});
},
onMove(j) {
b_({
type: Action.DragMove,
coordinates: j
});
},
onEnd: h_(Action.DragEnd),
onCancel: h_(Action.DragCancel)
});
function h_(j) {
return async function() {
let { active: I, collisions: q, over: Q, scrollAdjustedTranslate: p_ } = Z_.current, h_ = null;
if (I && p_) {
let { cancelDrop: g_ } = R_.current;
h_ = {
activatorEvent: m_,
active: I,
collisions: q,
delta: p_,
over: Q
}, j === Action.DragEnd && typeof g_ == "function" && await Promise.resolve(g_(h_)) && (j = Action.DragCancel);
}
N_.current = null, unstable_batchedUpdates(() => {
b_({ type: j }), w_(Status.Uninitialized), Tv(null), F_(null), L_(null), Ov.current = null;
let I = j === Action.DragEnd ? "onDragEnd" : "onDragCancel";
if (h_) {
let j = R_.current[I];
j?.(h_), x_({
type: I,
event: h_
});
}
});
};
}
}, [D_]), Av = useCallback((j, I) => (q, Q) => {
let p_ = q.nativeEvent, m_ = D_.get(Q);
if (N_.current !== null || !m_ || p_.dndKit || p_.defaultPrevented) return;
let h_ = { active: m_ };
j(q, I.options, h_) === !0 && (p_.dndKit = { capturedBy: I.sensor }, N_.current = Q, kv(q, I));
}, [D_, kv]), jv = useCombineActivators(m_, Av);
useSensorSetup(m_), useIsomorphicLayoutEffect(() => {
Y_ && C_ === Status.Initializing && w_(Status.Initialized);
}, [Y_, C_]), useEffect(() => {
let { onDragMove: j } = R_.current, { active: I, activatorEvent: q, collisions: Q, over: p_ } = Z_.current;
if (!I || !q) return;
let m_ = {
active: I,
activatorEvent: q,
collisions: Q,
delta: {
x: hv.x,
y: hv.y
},
over: p_
};
unstable_batchedUpdates(() => {
j?.(m_), x_({
type: "onDragMove",
event: m_
});
});
}, [hv.x, hv.y]), useEffect(() => {
let { active: j, activatorEvent: I, collisions: q, droppableContainers: Q, scrollAdjustedTranslate: p_ } = Z_.current;
if (!j || N_.current == null || !I || !p_) return;
let { onDragOver: m_ } = R_.current, h_ = Q.get(Sv), g_ = h_ && h_.rect.current ? {
id: h_.id,
rect: h_.rect.current,
data: h_.data,
disabled: h_.disabled
} : null, __ = {
active: j,
activatorEvent: I,
collisions: q,
delta: {
x: p_.x,
y: p_.y
},
over: g_
};
unstable_batchedUpdates(() => {
Tv(g_), m_?.(__), x_({
type: "onDragOver",
event: __
});
});
}, [Sv]), useIsomorphicLayoutEffect(() => {
Z_.current = {
activatorEvent: I_,
active: M_,
activeNode: G_,
collisionRect: gv,
collisions: xv,
droppableRects: H_,
draggableNodes: D_,
draggingNode: ev,
draggingNodeRect: tv,
droppableContainers: k_,
over: Cv,
scrollableAncestors: ov,
scrollAdjustedTranslate: hv
}, j_.current = {
initial: tv,
translated: gv
};
}, [
M_,
G_,
xv,
gv,
D_,
ev,
tv,
H_,
k_,
Cv,
ov,
hv
]), useAutoScroller({
...q_,
delta: O_,
draggingRect: gv,
pointerCoordinates: lv,
scrollableAncestors: ov,
scrollableAncestorRects: sv
});
let Mv = useMemo(() => ({
active: M_,
activeNode: G_,
activeNodeRect: Y_,
activatorEvent: I_,
collisions: xv,
containerNodeRect: X_,
dragOverlay: $_,
draggableNodes: D_,
droppableContainers: k_,
droppableRects: H_,
over: Cv,
measureDroppableContainers: U_,
scrollableAncestors: ov,
scrollableAncestorRects: sv,
measuringConfiguration: V_,
measuringScheduled: W_,
windowRect: av
}), [
M_,
G_,
Y_,
I_,
xv,
X_,
$_,
D_,
k_,
H_,
Cv,
U_,
ov,
sv,
V_,
W_,
av
]), Nv = useMemo(() => ({
activatorEvent: I_,
activators: jv,
active: M_,
activeNodeRect: Y_,
ariaDescribedById: { draggable: z_ },
dispatch: b_,
draggableNodes: D_,
over: Cv,
measureDroppableContainers: U_
}), [
I_,
jv,
M_,
Y_,
b_,
z_,
D_,
Cv,
U_
]);
return ke.createElement(DndMonitorContext.Provider, { value: S_ }, ke.createElement(InternalContext.Provider, { value: Nv }, ke.createElement(PublicContext.Provider, { value: Mv }, ke.createElement(ActiveDraggableContext.Provider, { value: Dv }, p_)), ke.createElement(RestoreFocus, { disabled: q?.restoreFocus === !1 })), ke.createElement(Accessibility, {
...q,
hiddenTextDescribedById: z_
}));
function Pv() {
let j = P_?.autoScrollEnabled === !1, I = typeof Q == "object" ? Q.enabled === !1 : Q === !1, q = T_ && !j && !I;
return typeof Q == "object" ? {
...Q,
enabled: q
} : { enabled: q };
}
}), NullContext = /* @__PURE__ */ createContext(null), defaultRole = "button", ID_PREFIX$1 = "Draggable";
function useDraggable(j) {
let { id: I, data: q, disabled: Q = !1, attributes: p_ } = j, m_ = useUniqueId(ID_PREFIX$1), { activators: h_, activatorEvent: g_, active: __, activeNodeRect: v_, ariaDescribedById: y_, draggableNodes: b_, over: x_ } = useContext(InternalContext), { role: S_ = defaultRole, roleDescription: C_ = "draggable", tabIndex: w_ = 0 } = p_ ?? {}, T_ = __?.id === I, E_ = useContext(T_ ? ActiveDraggableContext : NullContext), [D_, O_] = useNodeRef(), [k_, A_] = useNodeRef(), j_ = useSyntheticListeners(h_, I), M_ = useLatestValue(q);
useIsomorphicLayoutEffect(() => (b_.set(I, {
id: I,
key: m_,
node: D_,
activatorNode: k_,
data: M_
}), () => {
let j = b_.get(I);
j && j.key === m_ && b_.delete(I);
}), [b_, I]);
let N_ = useMemo(() => ({
role: S_,
tabIndex: w_,
"aria-disabled": Q,
"aria-pressed": T_ && S_ === defaultRole ? !0 : void 0,
"aria-roledescription": C_,
"aria-describedby": y_.draggable
}), [
Q,
S_,
w_,
T_,
C_,
y_.draggable
]);
return {
active: __,
activatorEvent: g_,
activeNodeRect: v_,
attributes: N_,
isDragging: T_,
listeners: Q ? void 0 : j_,
node: D_,
over: x_,
setNodeRef: O_,
setActivatorNodeRef: A_,
transform: E_
};
}
function useDndContext() {
return useContext(PublicContext);
}
var ID_PREFIX$1$1 = "Droppable", defaultResizeObserverConfig = { timeout: 25 };
function useDroppable(j) {
let { data: I, disabled: q = !1, id: Q, resizeObserverConfig: p_ } = j, m_ = useUniqueId(ID_PREFIX$1$1), { active: h_, dispatch: g_, over: __, measureDroppableContainers: v_ } = useContext(InternalContext), y_ = useRef({ disabled: q }), b_ = useRef(!1), x_ = useRef(null), S_ = useRef(null), { disabled: C_, updateMeasurementsFor: w_, timeout: T_ } = {
...defaultResizeObserverConfig,
...p_
}, E_ = useLatestValue(w_ ?? Q), D_ = useCallback(() => {
if (!b_.current) {
b_.current = !0;
return;
}
S_.current != null && clearTimeout(S_.current), S_.current = setTimeout(() => {
v_(Array.isArray(E_.current) ? E_.current : [E_.current]), S_.current = null;
}, T_);
}, [T_]), O_ = useResizeObserver({
callback: D_,
disabled: C_ || !h_
}), k_ = useCallback((j, I) => {
O_ && (I && (O_.unobserve(I), b_.current = !1), j && O_.observe(j));
}, [O_]), [A_, j_] = useNodeRef(k_), M_ = useLatestValue(I);
return useEffect(() => {
!O_ || !A_.current || (O_.disconnect(), b_.current = !1, O_.observe(A_.current));
}, [A_, O_]), useEffect(() => (g_({
type: Action.RegisterDroppable,
element: {
id: Q,
key: m_,
disabled: q,
node: A_,
rect: x_,
data: M_
}
}), () => g_({
type: Action.UnregisterDroppable,
key: m_,
id: Q
})), [Q]), useEffect(() => {
q !== y_.current.disabled && (g_({
type: Action.SetDroppableDisabled,
id: Q,
key: m_,
disabled: q
}), y_.current.disabled = q);
}, [
Q,
m_,
q,
g_
]), {
active: h_,
rect: x_,
isOver: __?.id === Q,
node: A_,
over: __,
setNodeRef: j_
};
}
function AnimationManager(j) {
let { animation: I, children: q } = j, [Q, p_] = useState(null), [m_, h_] = useState(null), g_ = usePrevious(q);
return !q && !Q && g_ && p_(g_), useIsomorphicLayoutEffect(() => {
if (!m_) return;
let j = Q?.key, q = Q?.props.id;
if (j == null || q == null) {
p_(null);
return;
}
Promise.resolve(I(q, m_)).then(() => {
p_(null);
});
}, [
I,
Q,
m_
]), ke.createElement(ke.Fragment, null, q, Q ? cloneElement(Q, { ref: h_ }) : null);
}
var defaultTransform = {
x: 0,
y: 0,
scaleX: 1,
scaleY: 1
};
function NullifiedContextProvider(j) {
let { children: I } = j;
return ke.createElement(InternalContext.Provider, { value: defaultInternalContext }, ke.createElement(ActiveDraggableContext.Provider, { value: defaultTransform }, I));
}
var baseStyles = {
position: "fixed",
touchAction: "none"
}, defaultTransition$1 = (j) => isKeyboardEvent(j) ? "transform 250ms ease" : void 0, PositionedOverlay = /* @__PURE__ */ forwardRef((j, I) => {
let { as: q, activatorEvent: Q, adjustScale: p_, children: m_, className: h_, rect: g_, style: __, transform: v_, transition: y_ = defaultTransition$1 } = j;
if (!g_) return null;
let b_ = p_ ? v_ : {
...v_,
scaleX: 1,
scaleY: 1
}, x_ = {
...baseStyles,
width: g_.width,
height: g_.height,
top: g_.top,
left: g_.left,
transform: CSS$1.Transform.toString(b_),
transformOrigin: p_ && Q ? getRelativeTransformOrigin(Q, g_) : void 0,
transition: typeof y_ == "function" ? y_(Q) : y_,
...__
};
return ke.createElement(q, {
className: h_,
style: x_,
ref: I
}, m_);
}), defaultDropAnimationSideEffects = (j) => (I) => {
let { active: q, dragOverlay: Q } = I, p_ = {}, { styles: m_, className: h_ } = j;
if (m_ != null && m_.active) for (let [j, I] of Object.entries(m_.active)) I !== void 0 && (p_[j] = q.node.style.getPropertyValue(j), q.node.style.setProperty(j, I));
if (m_ != null && m_.dragOverlay) for (let [j, I] of Object.entries(m_.dragOverlay)) I !== void 0 && Q.node.style.setProperty(j, I);
return h_ != null && h_.active && q.node.classList.add(h_.active), h_ != null && h_.dragOverlay && Q.node.classList.add(h_.dragOverlay), function() {
for (let [j, I] of Object.entries(p_)) q.node.style.setProperty(j, I);
h_ != null && h_.active && q.node.classList.remove(h_.active);
};
}, defaultDropAnimationConfiguration = {
duration: 250,
easing: "ease",
keyframes: (j) => {
let { transform: { initial: I, final: q } } = j;
return [{ transform: CSS$1.Transform.toString(I) }, { transform: CSS$1.Transform.toString(q) }];
},
sideEffects: /* @__PURE__ */ defaultDropAnimationSideEffects({ styles: { active: { opacity: "0" } } })
};
function useDropAnimation(j) {
let { config: I, draggableNodes: q, droppableContainers: Q, measuringConfiguration: p_ } = j;
return useEvent((j, m_) => {
if (I === null) return;
let h_ = q.get(j);
if (!h_) return;
let g_ = h_.node.current;
if (!g_) return;
let __ = getMeasurableNode(m_);
if (!__) return;
let { transform: v_ } = getWindow(m_).getComputedStyle(m_), y_ = parseTransform(v_);
if (!y_) return;
let b_ = typeof I == "function" ? I : createDefaultDropAnimation(I);
return scrollIntoViewIfNeeded(g_, p_.draggable.measure), b_({
active: {
id: j,
data: h_.data,
node: g_,
rect: p_.draggable.measure(g_)
},
draggableNodes: q,
dragOverlay: {
node: m_,
rect: p_.dragOverlay.measure(__)
},
droppableContainers: Q,
measuringConfiguration: p_,
transform: y_
});
});
}
function createDefaultDropAnimation(j) {
let { duration: I, easing: q, sideEffects: Q, keyframes: p_ } = {
...defaultDropAnimationConfiguration,
...j
};
return (j) => {
let { active: m_, dragOverlay: h_, transform: g_,...__ } = j;
if (!I) return;
let v_ = {
x: h_.rect.left - m_.rect.left,
y: h_.rect.top - m_.rect.top
}, y_ = {
scaleX: g_.scaleX === 1 ? 1 : m_.rect.width * g_.scaleX / h_.rect.width,
scaleY: g_.scaleY === 1 ? 1 : m_.rect.height * g_.scaleY / h_.rect.height
}, b_ = {
x: g_.x - v_.x,
y: g_.y - v_.y,
...y_
}, x_ = p_({
...__,
active: m_,
dragOverlay: h_,
transform: {
initial: g_,
final: b_
}
}), [S_] = x_, C_ = x_[x_.length - 1];
if (JSON.stringify(S_) === JSON.stringify(C_)) return;
let w_ = Q?.({
active: m_,
dragOverlay: h_,
...__
}), T_ = h_.node.animate(x_, {
duration: I,
easing: q,
fill: "forwards"
});
return new Promise((j) => {
T_.onfinish = () => {
w_?.(), j();
};
});
};
}
var key = 0;
function useKey(j) {
return useMemo(() => {
if (j != null) return key++, key;
}, [j]);
}
var DragOverlay = /* @__PURE__ */ ke.memo((j) => {
let { adjustScale: I = !1, children: q, dropAnimation: Q, style: p_, transition: m_, modifiers: h_, wrapperElement: g_ = "div", className: __, zIndex: v_ = 999 } = j, { activatorEvent: y_, active: b_, activeNodeRect: x_, containerNodeRect: S_, draggableNodes: C_, droppableContainers: w_, dragOverlay: T_, over: E_, measuringConfiguration: D_, scrollableAncestors: O_, scrollableAncestorRects: k_, windowRect: A_ } = useDndContext(), j_ = useContext(ActiveDraggableContext), M_ = useKey(b_?.id), N_ = applyModifiers(h_, {
activatorEvent: y_,
active: b_,
activeNodeRect: x_,
containerNodeRect: S_,
draggingNodeRect: T_.rect,
over: E_,
overlayNodeRect: T_.rect,
scrollableAncestors: O_,
scrollableAncestorRects: k_,
transform: j_,
windowRect: A_
}), P_ = useInitialValue(x_), F_ = useDropAnimation({
config: Q,
draggableNodes: C_,
droppableContainers: w_,
measuringConfiguration: D_
}), I_ = P_ ? T_.setRef : void 0;
return ke.createElement(NullifiedContextProvider, null, ke.createElement(AnimationManager, { animation: F_ }, b_ && M_ ? ke.createElement(PositionedOverlay, {
key: M_,
id: b_.id,
ref: I_,
as: g_,
activatorEvent: y_,
adjustScale: I,
className: __,
transition: m_,
rect: P_,
style: {
zIndex: v_,
...p_
},
transform: N_
}, q) : null));
}), restrictToHorizontalAxis = (j) => {
let { transform: I } = j;
return {
...I,
y: 0
};
};
function restrictToBoundingRect(j, I, q) {
let Q = { ...j };
return I.top + j.y <= q.top ? Q.y = q.top - I.top : I.bottom + j.y >= q.top + q.height && (Q.y = q.top + q.height - I.bottom), I.left + j.x <= q.left ? Q.x = q.left - I.left : I.right + j.x >= q.left + q.width && (Q.x = q.left + q.width - I.right), Q;
}
var restrictToParentElement = (j) => {
let { containerNodeRect: I, draggingNodeRect: q, transform: Q } = j;
return !q || !I ? Q : restrictToBoundingRect(Q, q, I);
}, restrictToVerticalAxis = (j) => {
let { transform: I } = j;
return {
...I,
x: 0
};
};
function arrayMove(j, I, q) {
let Q = j.slice();
return Q.splice(q < 0 ? Q.length + q : q, 0, Q.splice(I, 1)[0]), Q;
}
function getSortedRects(j, I) {
return j.reduce((j, q, Q) => {
let p_ = I.get(q);
return p_ && (j[Q] = p_), j;
}, Array(j.length));
}
function isValidIndex(j) {
return j !== null && j >= 0;
}
function itemsEqual(j, I) {
if (j === I) return !0;
if (j.length !== I.length) return !1;
for (let q = 0; q < j.length; q++) if (j[q] !== I[q]) return !1;
return !0;
}
function normalizeDisabled(j) {
return typeof j == "boolean" ? {
draggable: j,
droppable: j
} : j;
}
var defaultScale = {
scaleX: 1,
scaleY: 1
}, horizontalListSortingStrategy = (j) => {
let { rects: I, activeNodeRect: q, activeIndex: Q, overIndex: p_, index: m_ } = j, h_ = I[Q] ?? q;
if (!h_) return null;
let g_ = getItemGap(I, m_, Q);
if (m_ === Q) {
let j = I[p_];
return j ? {
x: Q < p_ ? j.left + j.width - (h_.left + h_.width) : j.left - h_.left,
y: 0,
...defaultScale
} : null;
}
return m_ > Q && m_ <= p_ ? {
x: -h_.width - g_,
y: 0,
...defaultScale
} : m_ < Q && m_ >= p_ ? {
x: h_.width + g_,
y: 0,
...defaultScale
} : {
x: 0,
y: 0,
...defaultScale
};
};
function getItemGap(j, I, q) {
let Q = j[I], p_ = j[I - 1], m_ = j[I + 1];
return !Q || !p_ && !m_ ? 0 : q < I ? p_ ? Q.left - (p_.left + p_.width) : m_.left - (Q.left + Q.width) : m_ ? m_.left - (Q.left + Q.width) : Q.left - (p_.left + p_.width);
}
var rectSortingStrategy = (j) => {
let { rects: I, activeIndex: q, overIndex: Q, index: p_ } = j, m_ = arrayMove(I, Q, q), h_ = I[p_], g_ = m_[p_];
return !g_ || !h_ ? null : {
x: g_.left - h_.left,
y: g_.top - h_.top,
scaleX: g_.width / h_.width,
scaleY: g_.height / h_.height
};
}, defaultScale$1 = {
scaleX: 1,
scaleY: 1
}, verticalListSortingStrategy = (j) => {
let { activeIndex: I, activeNodeRect: q, index: Q, rects: p_, overIndex: m_ } = j, h_ = p_[I] ?? q;
if (!h_) return null;
if (Q === I) {
let j = p_[m_];
return j ? {
x: 0,
y: I < m_ ? j.top + j.height - (h_.top + h_.height) : j.top - h_.top,
...defaultScale$1
} : null;
}
let g_ = getItemGap$1(p_, Q, I);
return Q > I && Q <= m_ ? {
x: 0,
y: -h_.height - g_,
...defaultScale$1
} : Q < I && Q >= m_ ? {
x: 0,
y: h_.height + g_,
...defaultScale$1
} : {
x: 0,
y: 0,
...defaultScale$1
};
};
function getItemGap$1(j, I, q) {
let Q = j[I], p_ = j[I - 1], m_ = j[I + 1];
return Q ? q < I ? p_ ? Q.top - (p_.top + p_.height) : m_ ? m_.top - (Q.top + Q.height) : 0 : m_ ? m_.top - (Q.top + Q.height) : p_ ? Q.top - (p_.top + p_.height) : 0 : 0;
}
var ID_PREFIX = "Sortable", Context = /* @__PURE__ */ ke.createContext({
activeIndex: -1,
containerId: ID_PREFIX,
disableTransforms: !1,
items: [],
overIndex: -1,
useDragOverlay: !1,
sortedRects: [],
strategy: rectSortingStrategy,
disabled: {
draggable: !1,
droppable: !1
}
});
function SortableContext(j) {
let { children: I, id: q, items: Q, strategy: p_ = rectSortingStrategy, disabled: m_ = !1 } = j, { active: h_, dragOverlay: g_, droppableRects: __, over: v_, measureDroppableContainers: y_ } = useDndContext(), b_ = useUniqueId(ID_PREFIX, q), x_ = g_.rect !== null, S_ = useMemo(() => Q.map((j) => typeof j == "object" && "id" in j ? j.id : j), [Q]), C_ = h_ != null, w_ = h_ ? S_.indexOf(h_.id) : -1, T_ = v_ ? S_.indexOf(v_.id) : -1, E_ = useRef(S_), D_ = !itemsEqual(S_, E_.current), O_ = T_ !== -1 && w_ === -1 || D_, k_ = normalizeDisabled(m_);
useIsomorphicLayoutEffect(() => {
D_ && C_ && y_(S_);
}, [
D_,
S_,
C_,
y_
]), useEffect(() => {
E_.current = S_;
}, [S_]);
let A_ = useMemo(() => ({
activeIndex: w_,
containerId: b_,
disabled: k_,
disableTransforms: O_,
items: S_,
overIndex: T_,
useDragOverlay: x_,
sortedRects: getSortedRects(S_, __),
strategy: p_
}), [
w_,
b_,
k_.draggable,
k_.droppable,
O_,
S_,
T_,
__,
x_,
p_
]);
return ke.createElement(Context.Provider, { value: A_ }, I);
}
var defaultNewIndexGetter = (j) => {
let { id: I, items: q, activeIndex: Q, overIndex: p_ } = j;
return arrayMove(q, Q, p_).indexOf(I);
}, defaultAnimateLayoutChanges = (j) => {
let { containerId: I, isSorting: q, wasDragging: Q, index: p_, items: m_, newIndex: h_, previousItems: g_, previousContainerId: __, transition: v_ } = j;
return !v_ || !Q || g_ !== m_ && p_ === h_ ? !1 : q ? !0 : h_ !== p_ && I === __;
}, defaultTransition = {
duration: 200,
easing: "ease"
}, transitionProperty = "transform", disabledTransition = /* @__PURE__ */ CSS$1.Transition.toString({
property: transitionProperty,
duration: 0,
easing: "linear"
}), defaultAttributes = { roleDescription: "sortable" };
function useDerivedTransform(j) {
let { disabled: I, index: q, node: Q, rect: p_ } = j, [m_, h_] = useState(null), g_ = useRef(q);
return useIsomorphicLayoutEffect(() => {
if (!I && q !== g_.current && Q.current) {
let j = p_.current;
if (j) {
let I = getClientRect(Q.current, { ignoreTransform: !0 }), q = {
x: j.left - I.left,
y: j.top - I.top,
scaleX: j.width / I.width,
scaleY: j.height / I.height
};
(q.x || q.y) && h_(q);
}
}
q !== g_.current && (g_.current = q);
}, [
I,
q,
Q,
p_
]), useEffect(() => {
m_ && h_(null);
}, [m_]), m_;
}
function useSortable(j) {
let { animateLayoutChanges: I = defaultAnimateLayoutChanges, attributes: q, disabled: Q, data: p_, getNewIndex: m_ = defaultNewIndexGetter, id: h_, strategy: g_, resizeObserverConfig: __, transition: v_ = defaultTransition } = j, { items: y_, containerId: b_, activeIndex: x_, disabled: S_, disableTransforms: C_, sortedRects: w_, overIndex: T_, useDragOverlay: E_, strategy: D_ } = useContext(Context), O_ = normalizeLocalDisabled(Q, S_), k_ = y_.indexOf(h_), A_ = useMemo(() => ({
sortable: {
containerId: b_,
index: k_,
items: y_
},
...p_
}), [
b_,
p_,
k_,
y_
]), j_ = useMemo(() => y_.slice(y_.indexOf(h_)), [y_, h_]), { rect: M_, node: N_, isOver: P_, setNodeRef: F_ } = useDroppable({
id: h_,
data: A_,
disabled: O_.droppable,
resizeObserverConfig: {
updateMeasurementsFor: j_,
...__
}
}), { active: I_, activatorEvent: L_, activeNodeRect: R_, attributes: z_, setNodeRef: B_, listeners: V_, isDragging: H_, over: U_, setActivatorNodeRef: W_, transform: G_ } = useDraggable({
id: h_,
data: A_,
attributes: {
...defaultAttributes,
...q
},
disabled: O_.draggable
}), K_ = useCombinedRefs(F_, B_), q_ = !!I_, J_ = q_ && !C_ && isValidIndex(x_) && isValidIndex(T_), Y_ = !E_ && H_, X_ = J_ ? (Y_ && J_ ? G_ : null) ?? (g_ ?? D_)({
rects: w_,
activeNodeRect: R_,
activeIndex: x_,
overIndex: T_,
index: k_
}) : null, Z_ = isValidIndex(x_) && isValidIndex(T_) ? m_({
id: h_,
items: y_,
activeIndex: x_,
overIndex: T_
}) : k_, Q_ = I_?.id, $_ = useRef({
activeId: Q_,
items: y_,
newIndex: Z_,
containerId: b_
}), ev = y_ !== $_.current.items, tv = I({
active: I_,
containerId: b_,
isDragging: H_,
isSorting: q_,
id: h_,
index: k_,
items: y_,
newIndex: $_.current.newIndex,
previousItems: $_.current.items,
previousContainerId: $_.current.containerId,
transition: v_,
wasDragging: $_.current.activeId != null
}), nv = useDerivedTransform({
disabled: !tv,
index: k_,
node: N_,
rect: M_
});
return useEffect(() => {
q_ && $_.current.newIndex !== Z_ && ($_.current.newIndex = Z_), b_ !== $_.current.containerId && ($_.current.containerId = b_), y_ !== $_.current.items && ($_.current.items = y_);
}, [
q_,
Z_,
b_,
y_
]), useEffect(() => {
if (Q_ === $_.current.activeId) return;
if (Q_ != null && $_.current.activeId == null) {
$_.current.activeId = Q_;
return;
}
let j = setTimeout(() => {
$_.current.activeId = Q_;
}, 50);
return () => clearTimeout(j);
}, [Q_]), {
active: I_,
activeIndex: x_,
attributes: z_,
data: A_,
rect: M_,
index: k_,
newIndex: Z_,
items: y_,
isOver: P_,
isSorting: q_,
isDragging: H_,
listeners: V_,
node: N_,
overIndex: T_,
over: U_,
setNodeRef: K_,
setActivatorNodeRef: W_,
setDroppableNodeRef: F_,
setDraggableNodeRef: B_,
transform: nv ?? X_,
transition: rv()
};
function rv() {
if (nv || ev && $_.current.newIndex === k_) return disabledTransition;
if (!(Y_ && !isKeyboardEvent(L_) || !v_) && (q_ || tv)) return CSS$1.Transition.toString({
...v_,
property: transitionProperty
});
}
}
function normalizeLocalDisabled(j, I) {
return typeof j == "boolean" ? {
draggable: j,
droppable: !1
} : {
draggable: j?.draggable ?? I.draggable,
droppable: j?.droppable ?? I.droppable
};
}
function hasSortableData(j) {
if (!j) return !1;
let I = j.data.current;
return !!(I && "sortable" in I && typeof I.sortable == "object" && "containerId" in I.sortable && "items" in I.sortable && "index" in I.sortable);
}
var directions = [
KeyboardCode.Down,
KeyboardCode.Right,
KeyboardCode.Up,
KeyboardCode.Left
], sortableKeyboardCoordinates = (j, I) => {
let { context: { active: q, collisionRect: Q, droppableRects: p_, droppableContainers: m_, over: h_, scrollableAncestors: g_ } } = I;
if (directions.includes(j.code)) {
if (j.preventDefault(), !q || !Q) return;
let I = [];
m_.getEnabled().forEach((q) => {
if (!q || q != null && q.disabled) return;
let m_ = p_.get(q.id);
if (m_) switch (j.code) {
case KeyboardCode.Down:
Q.top < m_.top && I.push(q);
break;
case KeyboardCode.Up:
Q.top > m_.top && I.push(q);
break;
case KeyboardCode.Left:
Q.left > m_.left && I.push(q);
break;
case KeyboardCode.Right:
Q.left < m_.left && I.push(q);
break;
}
});
let __ = closestCorners({
active: q,
collisionRect: Q,
droppableRects: p_,
droppableContainers: I,
pointerCoordinates: null
}), v_ = getFirstCollision(__, "id");
if (v_ === h_?.id && __.length > 1 && (v_ = __[1].id), v_ != null) {
let j = m_.get(q.id), I = m_.get(v_), h_ = I ? p_.get(I.id) : null, __ = I?.node.current;
if (__ && h_ && j && I) {
let q = getScrollableAncestors(__).some((j, I) => g_[I] !== j), p_ = isSameContainer(j, I), m_ = isAfter(j, I), v_ = q || !p_ ? {
x: 0,
y: 0
} : {
x: m_ ? Q.width - h_.width : 0,
y: m_ ? Q.height - h_.height : 0
}, y_ = {
x: h_.left,
y: h_.top
};
return v_.x && v_.y ? y_ : subtract(y_, v_);
}
}
}
};
function isSameContainer(j, I) {
return !hasSortableData(j) || !hasSortableData(I) ? !1 : j.data.current.sortable.containerId === I.data.current.sortable.containerId;
}
function isAfter(j, I) {
return !hasSortableData(j) || !hasSortableData(I) || !isSameContainer(j, I) ? !1 : j.data.current.sortable.index < I.data.current.sortable.index;
}
function setRef(j, I) {
if (typeof j == "function") return j(I);
j != null && (j.current = I);
}
function composeRefs(...j) {
return (I) => {
let q = !1, Q = j.map((j) => {
let Q = setRef(j, I);
return !q && typeof Q == "function" && (q = !0), Q;
});
if (q) return () => {
for (let I = 0; I < Q.length; I++) {
let q = Q[I];
typeof q == "function" ? q() : setRef(j[I], null);
}
};
};
}
function useComposedRefs(...j) {
return useCallback(composeRefs(...j), j);
}
var orientationConfig = {
vertical: {
modifiers: [restrictToVerticalAxis, restrictToParentElement],
strategy: verticalListSortingStrategy,
collisionDetection: closestCenter
},
horizontal: {
modifiers: [restrictToHorizontalAxis, restrictToParentElement],
strategy: horizontalListSortingStrategy,
collisionDetection: closestCenter
},
mixed: {
modifiers: [restrictToParentElement],
strategy: void 0,
collisionDetection: closestCorners
}
}, ROOT_NAME = "Sortable", CONTENT_NAME = "SortableContent", ITEM_NAME = "SortableItem", OVERLAY_NAME = "SortableOverlay", SortableRootContext = createContext(null);
function useSortableContext(j) {
let I = useContext(SortableRootContext);
if (!I) throw Error(`\`${j}\` must be used within \`${ROOT_NAME}\``);
return I;
}
function SortableRoot(j) {
let { value: I, onValueChange: q, collisionDetection: Q, modifiers: p_, strategy: m_, onMove: h_, orientation: g_ = "vertical", flatCursor: __ = !1, getItemValue: v_, accessibility: y_,...b_ } = j, x_ = useId(), [S_, C_] = useState(null), w_ = useSensors(useSensor(MouseSensor), useSensor(TouchSensor), useSensor(KeyboardSensor, { coordinateGetter: sortableKeyboardCoordinates })), T_ = useMemo(() => orientationConfig[g_], [g_]), E_ = useCallback((j) => {
if (typeof j == "object" && !v_) throw Error("getItemValue is required when using array of objects");
return v_ ? v_(j) : j;
}, [v_]), D_ = useMemo(() => I.map((j) => E_(j)), [I, E_]), O_ = useCallback((j) => {
b_.onDragStart?.(j), !j.activatorEvent.defaultPrevented && C_(j.active.id);
}, [b_.onDragStart]), k_ = useCallback((j) => {
if (b_.onDragEnd?.(j), j.activatorEvent.defaultPrevented) return;
let { active: Q, over: p_ } = j;
if (p_ && Q.id !== p_?.id) {
let m_ = I.findIndex((j) => E_(j) === Q.id), g_ = I.findIndex((j) => E_(j) === p_.id);
h_ ? h_({
...j,
activeIndex: m_,
overIndex: g_
}) : q?.(arrayMove(I, m_, g_));
}
C_(null);
}, [
I,
q,
h_,
E_,
b_.onDragEnd
]), A_ = useCallback((j) => {
b_.onDragCancel?.(j), !j.activatorEvent.defaultPrevented && C_(null);
}, [b_.onDragCancel]), j_ = useMemo(() => ({
onDragStart({ active: j }) {
return `Grabbed sortable item "${j.id.toString()}". Current position is ${j.data.current?.sortable.index + 1} of ${I.length}. Use arrow keys to move, space to drop.`;
},
onDragOver({ active: j, over: q }) {
if (q) {
let Q = q.data.current?.sortable.index ?? 0, p_ = j.data.current?.sortable.index ?? 0, m_ = Q > p_ ? "down" : "up";
return `Sortable item "${j.id.toString()}" moved ${m_} to position ${Q + 1} of ${I.length}.`;
}
return "Sortable item is no longer over a droppable area. Press escape to cancel.";
},
onDragEnd({ active: j, over: q }) {
let Q = j.id.toString();
if (q) {
let j = q.data.current?.sortable.index ?? 0;
return `Sortable item "${Q}" dropped at position ${j + 1} of ${I.length}.`;
}
return `Sortable item "${Q}" dropped. No changes were made.`;
},
onDragCancel({ active: j }) {
let q = j.data.current?.sortable.index ?? 0;
return `Sorting cancelled. Sortable item "${j.id.toString()}" returned to position ${q + 1} of ${I.length}.`;
},
onDragMove({ active: j, over: q }) {
if (q) {
let Q = q.data.current?.sortable.index ?? 0, p_ = j.data.current?.sortable.index ?? 0, m_ = Q > p_ ? "down" : "up";
return `Sortable item "${j.id.toString()}" is moving ${m_} to position ${Q + 1} of ${I.length}.`;
}
return "Sortable item is no longer over a droppable area. Press escape to cancel.";
}
}), [I]), M_ = useMemo(() => ({ draggable: `
To pick up a sortable item, press space or enter.
While dragging, use the ${g_ === "vertical" ? "up and down" : g_ === "horizontal" ? "left and right" : "arrow"} keys to move the item.
Press space or enter again to drop the item in its new position, or press escape to cancel.
` }), [g_]), N_ = useMemo(() => ({
id: x_,
items: D_,
modifiers: p_ ?? T_.modifiers,
strategy: m_ ?? T_.strategy,
activeId: S_,
setActiveId: C_,
getItemValue: E_,
flatCursor: __
}), [
x_,
D_,
p_,
m_,
T_.modifiers,
T_.strategy,
S_,
E_,
__
]);
return /* @__PURE__ */ jsx(SortableRootContext.Provider, {
value: N_,
children: /* @__PURE__ */ jsx(DndContext, {
collisionDetection: Q ?? T_.collisionDetection,
modifiers: p_ ?? T_.modifiers,
sensors: w_,
...b_,
id: x_,
onDragStart: O_,
onDragEnd: k_,
onDragCancel: A_,
accessibility: {
announcements: j_,
screenReaderInstructions: M_,
...y_
}
})
});
}
var SortableContentContext = createContext(!1);
function SortableContent(j) {
let { strategy: I, asChild: q, withoutSlot: Q, children: p_, ref: m_,...h_ } = j, g_ = useSortableContext(CONTENT_NAME), __ = q ? Slot : "div";
return /* @__PURE__ */ jsx(SortableContentContext.Provider, {
value: !0,
children: /* @__PURE__ */ jsx(SortableContext, {
items: g_.items,
strategy: I ?? g_.strategy,
children: Q ? p_ : /* @__PURE__ */ jsx(__, {
"data-slot": "sortable-content",
...h_,
ref: m_,
children: p_
})
})
});
}
var SortableItemContext = createContext(null);
function SortableItem(j) {
let { value: I, style: q, asHandle: Q, asChild: p_, disabled: m_, className: h_, ref: g_,...__ } = j, v_ = useContext(SortableContentContext), y_ = useContext(SortableOverlayContext);
if (!v_ && !y_) throw Error(`\`${ITEM_NAME}\` must be used within \`${CONTENT_NAME}\` or \`${OVERLAY_NAME}\``);
if (I === "") throw Error(`\`${ITEM_NAME}\` value cannot be an empty string`);
let b_ = useSortableContext(ITEM_NAME), x_ = useId(), { attributes: S_, listeners: C_, setNodeRef: w_, setActivatorNodeRef: T_, transform: E_, transition: D_, isDragging: O_ } = useSortable({
id: I,
disabled: m_
}), k_ = useComposedRefs(g_, (j) => {
m_ || (w_(j), Q && T_(j));
}), A_ = useMemo(() => ({
transform: CSS$1.Translate.toString(E_),
transition: D_,
...q
}), [
E_,
D_,
q
]), j_ = useMemo(() => ({
id: x_,
attributes: S_,
listeners: C_,
setActivatorNodeRef: T_,
isDragging: O_,
disabled: m_
}), [
x_,
S_,
C_,
T_,
O_,
m_
]), M_ = p_ ? Slot : "div";
return /* @__PURE__ */ jsx(SortableItemContext.Provider, {
value: j_,
children: /* @__PURE__ */ jsx(M_, {
id: x_,
"data-disabled": m_,
"data-dragging": O_ ? "" : void 0,
"data-slot": "sortable-item",
...__,
...Q && !m_ ? S_ : {},
...Q && !m_ ? C_ : {},
ref: k_,
style: A_,
className: cn("focus-visible:ring-ring focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-offset-1", {
"touch-none select-none": Q,
"cursor-default": b_.flatCursor,
"data-dragging:cursor-grabbing": !b_.flatCursor,
"cursor-grab": !O_ && Q && !b_.flatCursor,
"opacity-50": O_,
"pointer-events-none opacity-50": m_
}, h_)
})
});
}
var SortableOverlayContext = createContext(!1), dropAnimation = { sideEffects: defaultDropAnimationSideEffects({ styles: { active: { opacity: "0.4" } } }) };
function SortableOverlay(j) {
let { container: I, children: q,...Q } = j, p_ = useSortableContext(OVERLAY_NAME), [m_, h_] = useState(!1);
useLayoutEffect(() => h_(!0), []);
let g_ = I ?? (m_ ? globalThis.document?.body : null);
return g_ ? ReactDOM$2.createPortal(/* @__PURE__ */ jsx(DragOverlay, {
dropAnimation,
modifiers: p_.modifiers,
className: cn(!p_.flatCursor && "cursor-grabbing"),
...Q,
children: /* @__PURE__ */ jsx(SortableOverlayContext.Provider, {
value: !0,
children: p_.activeId ? typeof q == "function" ? q({ value: p_.activeId }) : q : null
})
}), g_) : null;
}
var import_lodash = /* @__PURE__ */ __toESM(require_lodash());
const Tab = (j) => {
let { history: I, operations: q, tests: Q, plugins: p_ } = useLaboratory(), m_ = useLaboratory(), h_ = useRef(!1), g_ = useRef(null);
useEffect(() => {
function j() {
g_.current &&= (clearTimeout(g_.current), null), h_.current = !1;
}
return document.addEventListener("mouseup", j), () => {
document.removeEventListener("mouseup", j);
};
}, []);
let __ = useMemo(() => j.activeTab?.id === j.item.id, [j.activeTab, j.item]), v_ = useMemo(() => j.item.type === "history" ? I.find((I) => j.item.type === "history" && I.id === j.item.data.id) : null, [I, j.item]), y_ = useMemo(() => j.item.type === "operation" ? q.find((I) => I.id === j.item.data.id) : null, [j.item, q]), b_ = useMemo(() => j.item.type === "test" ? Q.find((I) => I.id === j.item.data.id) : null, [j.item, Q]), x_ = useMemo(() => v_ ? "status" in v_ && v_.status < 200 || "status" in v_ && v_.status >= 300 || "response" in v_ && JSON.parse(v_.response).errors : !1, [v_]), S_ = useCallback(() => {
j.handleDeleteTab(j.item.id);
}, [j]), C_ = useCallback(() => {
j.handleDeleteAllTabs();
}, [j]), w_ = useCallback(() => {
j.handleDeleteOtherTabs(j.item.id);
}, [j]), T_ = useMemo(() => {
if (j.item.type === "operation") {
let j = y_?.name || getOperationName(y_?.query || "") || "Untitled";
if (j === "Untitled") {
let I = (0, import_lodash.capitalize)(getOperationType(y_?.query || "") || "query");
return j + I;
}
return j;
}
if (j.item.type === "history") {
let j = v_?.operation.name || getOperationName(v_?.operation.query || "") || "Untitled";
if (j === "Untitled") {
let I = (0, import_lodash.capitalize)(getOperationType(v_?.operation.query || "") || "query");
return j + I;
}
return j;
}
if (j.item.type === "preflight") return "Preflight";
if (j.item.type === "env") return "Environment Variables";
if (j.item.type === "settings") return "Settings";
if (j.item.type === "test") return b_?.name || "Untitled";
let I = null;
for (let q of p_) for (let Q of q.tabs ?? []) if (Q.type === j.item.type) {
I = Q;
break;
}
return I ? typeof I.name == "function" ? I.name(m_, {}) : I.name : "Untitled";
}, [
j.item,
v_,
y_,
b_
]), E_ = useMemo(() => {
if (j.item.type === "operation") return /* @__PURE__ */ jsx(GraphQLIcon, { className: "size-4 text-pink-500" });
if (j.item.type === "preflight") return /* @__PURE__ */ jsx(ScrollTextIcon, { className: "size-4 text-teal-400" });
if (j.item.type === "env") return /* @__PURE__ */ jsx(GlobeIcon, { className: "size-4 text-blue-400" });
if (j.item.type === "history") return /* @__PURE__ */ jsx(HistoryIcon, { className: cn("size-4 text-indigo-400", {
"text-green-500": !x_,
"text-red-500": x_
}) });
if (j.item.type === "settings") return /* @__PURE__ */ jsx(SettingsIcon, { className: "size-4 text-gray-400" });
if (j.item.type === "test") return /* @__PURE__ */ jsx(FlaskConicalIcon, { className: "size-4 text-lime-400" });
let I = null;
for (let q of p_) for (let Q of q.tabs ?? []) if (Q.type === j.item.type) {
I = Q;
break;
}
return I ? typeof I.icon == "function" ? I.icon(m_, {}) : I.icon : /* @__PURE__ */ jsx(FileIcon, { className: "text-muted-foreground size-4" });
}, [j.item, x_]);
return /* @__PURE__ */ jsxs(ContextMenu, { children: [/* @__PURE__ */ jsx(ContextMenuTrigger, {
asChild: !0,
children: /* @__PURE__ */ jsxs(SortableItem, {
value: j.item.id,
asHandle: !0,
className: cn("data-dragging:opacity-0 flex h-12 w-max items-stretch", j.isOverlay && "bg-background", j.isOverlay && !__ && "h-12"),
children: [/* @__PURE__ */ jsx("div", {
onMouseDown: (j) => {
if (h_.current) return;
j.preventDefault();
let I = { ...j };
g_.current = setTimeout(() => {
h_.current = !0, I.currentTarget.dispatchEvent(new MouseEvent("mousedown", { ...I }));
}, 200);
},
children: /* @__PURE__ */ jsxs("div", {
className: cn("text-muted-foreground hover:text-foreground group relative flex h-full cursor-pointer items-center gap-2 border-t-2 border-transparent px-3 pb-1 text-sm transition-all", j.activeTab?.id === j.item.id && "border-primary bg-card text-foreground"),
onClick: () => {
j.setActiveTab(j.item);
},
onMouseUp: () => {
g_.current &&= (clearTimeout(g_.current), null), h_.current = !1;
},
children: [
E_,
T_,
j.isOperationLoading(j.item.id) && /* @__PURE__ */ jsx(Spinner, { className: "size-3" }),
j.item.readOnly && /* @__PURE__ */ jsx(LockIcon, { className: "size-3 text-gray-400" }),
/* @__PURE__ */ jsx(XIcon, {
className: "text-muted-foreground size-3",
onMouseDown: (j) => {
j.stopPropagation();
},
onClick: (I) => {
I.stopPropagation(), j.handleDeleteTab(j.item.id);
}
})
]
})
}), /* @__PURE__ */ jsx("div", { className: "bg-border mb-px w-px" })]
})
}), /* @__PURE__ */ jsxs(ContextMenuContent, { children: [
/* @__PURE__ */ jsx(ContextMenuItem, {
onClick: S_,
children: "Close"
}),
/* @__PURE__ */ jsx(ContextMenuItem, {
onClick: w_,
children: "Close other"
}),
/* @__PURE__ */ jsx(ContextMenuItem, {
onClick: C_,
children: "Close all"
})
] })] });
}, Tabs$1 = ({ className: j }) => {
let { tabs: I, setTabs: q, activeTab: Q, addTab: p_, deleteTab: m_, operations: h_, setActiveTab: g_, addOperation: __, setOperations: v_, deleteOperation: y_, isOperationLoading: b_, goToFullScreen: x_, exitFullScreen: S_, isFullScreen: C_ } = useLaboratory(), w_ = useCallback(() => {
let j = __({
name: "",
query: "",
variables: "",
headers: "",
extensions: ""
}), I = p_({
type: "operation",
data: j
});
g_(I);
}, [
__,
p_,
g_
]), T_ = useCallback((j) => {
let q = I.findIndex((I) => I.id === j);
if (q === -1) return;
let Q = I[q];
Q.type === "operation" && y_(Q.data.id), m_(Q.id), g_(q === 0 ? I[1] ?? null : q > 0 ? I[q - 1] ?? null : I[0] ?? null);
}, [
I,
m_,
y_,
g_
]), E_ = useCallback(() => {
v_([]), q([]);
}, [v_, q]), D_ = useCallback((j) => {
let Q = I.find((I) => I.id === j);
if (Q) {
let p_ = I.filter((I) => I.id !== j).filter((j) => j.type === "operation").map((j) => j.data.id);
v_(h_.filter((j) => !p_.includes(j.id))), q([Q]), g_(Q);
}
}, [
I,
v_,
h_,
q,
g_
]);
return /* @__PURE__ */ jsxs("div", {
className: cn("relative z-10 grid size-full grid-cols-[1fr_auto] overflow-hidden", j),
children: [
/* @__PURE__ */ jsx("div", { className: "bg-border absolute bottom-0 left-0 -z-10 h-px w-full" }),
/* @__PURE__ */ jsx("div", {
className: "overflow-hidden",
children: /* @__PURE__ */ jsxs(ScrollArea, {
className: "size-full whitespace-nowrap",
children: [/* @__PURE__ */ jsxs("div", {
className: "flex items-stretch",
children: [/* @__PURE__ */ jsxs(SortableRoot, {
value: I,
onValueChange: q,
getItemValue: (j) => j.id,
orientation: "horizontal",
children: [/* @__PURE__ */ jsx(SortableContent, {
className: "flex w-max items-stretch",
children: I.map((j) => /* @__PURE__ */ jsx(Fragment$1, { children: /* @__PURE__ */ jsx(Tab, {
item: j,
activeTab: Q,
setActiveTab: g_,
isOperationLoading: b_,
handleDeleteTab: T_,
handleDeleteAllTabs: E_,
handleDeleteOtherTabs: D_
}, j.id) }))
}), /* @__PURE__ */ jsx(SortableOverlay, { children: (j) => {
let q = I.find((I) => I.id === j.value);
return q ? /* @__PURE__ */ jsx(Tab, {
item: q,
activeTab: Q,
setActiveTab: g_,
isOperationLoading: b_,
handleDeleteTab: T_,
isOverlay: !0,
handleDeleteAllTabs: E_,
handleDeleteOtherTabs: D_
}) : null;
} })]
}), /* @__PURE__ */ jsx("div", {
className: "group ml-2 flex h-12 items-center border-b-2 border-transparent",
children: /* @__PURE__ */ jsxs(Button, {
variant: "ghost",
size: "sm",
className: "text-primary hover:text-primary",
onClick: w_,
children: [/* @__PURE__ */ jsx(CirclePlus, { className: "size-4" }), "Add operation"]
})
})]
}), /* @__PURE__ */ jsx(ScrollBar, { orientation: "horizontal" })]
})
}),
/* @__PURE__ */ jsx("div", {
className: "group flex h-12 items-center border-l px-2",
children: C_ ? /* @__PURE__ */ jsxs(Tooltip, { children: [/* @__PURE__ */ jsx(TooltipTrigger, { children: /* @__PURE__ */ jsx(Button, {
variant: "ghost",
size: "sm",
onClick: S_,
children: /* @__PURE__ */ jsx(MinimizeIcon, { className: "size-4" })
}) }), /* @__PURE__ */ jsx(TooltipContent, {
side: "bottom",
children: "Exit full screen"
})] }) : /* @__PURE__ */ jsxs(Tooltip, { children: [/* @__PURE__ */ jsx(TooltipTrigger, { children: /* @__PURE__ */ jsx(Button, {
variant: "ghost",
size: "sm",
onClick: x_,
children: /* @__PURE__ */ jsx(MaximizeIcon, { className: "size-4" })
}) }), /* @__PURE__ */ jsx(TooltipContent, {
side: "bottom",
children: "Go to full screen"
})] })
})
]
});
};
var ShadowRootContainer = (j) => {
let I = useRef(null), [q, Q] = useState(null);
return useLayoutEffect(() => {
!I.current || q || Q(I.current.attachShadow({ mode: "open" }));
}, [q]), useLayoutEffect(() => {
q && document.head.querySelectorAll("style").forEach((j) => {
j.textContent?.includes("[data-sonner-toaster]") && q.append(j.cloneNode(!0));
});
}, [q]), /* @__PURE__ */ jsx("div", {
ref: I,
className: "hive-laboratory-host size-full",
children: q ? createPortal(j.children, q) : null
});
}, addCollectionFormSchema = z$1.object({ name: z$1.string().min(1, "Name is required") }), updateEndpointFormSchema = z$1.object({ endpoint: z$1.string().min(1, "Endpoint is required") }), addTestFormSchema = z$1.object({ name: z$1.string().min(1, "Name is required") }), PreflightPromptModal = (j) => {
let I = useForm({
defaultValues: { value: j.defaultValue || null },
validators: { onSubmit: z$1.object({ value: z$1.string().min(1, "Value is required").nullable() }) },
onSubmit: ({ value: q }) => {
j.onSubmit?.(q.value || null), j.onOpenChange(!1), I.reset();
}
});
return /* @__PURE__ */ jsx(Dialog, {
open: j.open,
onOpenChange: (q) => {
I.state.isSubmitted || I.handleSubmit(), j.onOpenChange(q);
},
children: /* @__PURE__ */ jsxs(DialogContent, { children: [
/* @__PURE__ */ jsx(DialogHeader, { children: /* @__PURE__ */ jsx(DialogTitle, { children: "Preflight prompt" }) }),
/* @__PURE__ */ jsx(DialogDescription, { children: "Enter values for the preflight script." }),
/* @__PURE__ */ jsx("form", {
id: "preflight-prompt-form",
onSubmit: (j) => {
j.preventDefault(), I.handleSubmit();
},
children: /* @__PURE__ */ jsx(FieldGroup, { children: /* @__PURE__ */ jsx(I.Field, {
name: "value",
children: (I) => {
let q = I.state.meta.isTouched && !I.state.meta.isValid;
return /* @__PURE__ */ jsxs(Field, {
"data-invalid": q,
children: [/* @__PURE__ */ jsx(Input, {
id: I.name,
name: I.name,
value: I.state.value || "",
onBlur: I.handleBlur,
onChange: (j) => I.handleChange(j.target.value),
"aria-invalid": q,
placeholder: j.placeholder,
autoComplete: "off"
}), q && /* @__PURE__ */ jsx(FieldError, { errors: I.state.meta.errors })]
});
}
}) })
}),
/* @__PURE__ */ jsx(DialogFooter, { children: /* @__PURE__ */ jsx(Button, {
type: "submit",
form: "preflight-prompt-form",
onClick: () => {
I.handleSubmit();
},
children: "Submit"
}) })
] })
});
}, LaboratoryContent = () => {
let { activeTab: j, addOperation: I, collections: q, addTab: Q, setActiveTab: p_, preflight: m_, tabs: h_, env: g_, plugins: __, pluginsState: v_, setPluginsState: y_ } = useLaboratory(), b_ = useLaboratory(), [x_, S_] = useState(q.length > 0 ? "collections" : null), [C_, w_] = useState(!1), T_ = useMemo(() => {
switch (j?.type) {
case "operation": return /* @__PURE__ */ jsx(Operation, {});
case "preflight": return /* @__PURE__ */ jsx(Preflight, {});
case "env": return /* @__PURE__ */ jsx(Env, {});
case "history": return /* @__PURE__ */ jsx(HistoryItem, {});
case "settings": return /* @__PURE__ */ jsx(Settings, {});
default: {
let q = null, m_ = null;
for (let I of __) for (let Q of I.tabs ?? []) if (Q.type === j?.type) {
m_ = Q, q = I.id;
break;
}
return m_ && q ? m_.component(j, b_, v_[q] ?? {}, (j) => y_({
...v_,
[q]: j
})) : /* @__PURE__ */ jsxs(Empty, {
className: "px-0! w-full",
children: [/* @__PURE__ */ jsxs(EmptyHeader, { children: [
/* @__PURE__ */ jsx(EmptyMedia, {
variant: "icon",
children: /* @__PURE__ */ jsx(FileIcon, { className: "text-muted-foreground size-6" })
}),
/* @__PURE__ */ jsx(EmptyTitle, { children: "No operation selected" }),
/* @__PURE__ */ jsx(EmptyDescription, { children: "You haven't selected any operation yet. Get started by selecting an operation or add a new one." })
] }), /* @__PURE__ */ jsx(EmptyContent, { children: /* @__PURE__ */ jsx(Button, {
size: "sm",
onClick: () => {
let j = I({
name: "",
query: "",
variables: "",
headers: "",
extensions: ""
}), q = Q({
type: "operation",
data: j
});
p_(q);
},
children: "Add operation"
}) })]
});
}
}
}, [
j?.type,
I,
Q,
p_
]);
return /* @__PURE__ */ jsxs("div", {
className: "flex size-full",
children: [
/* @__PURE__ */ jsx(Command, {
open: C_,
onOpenChange: w_
}),
/* @__PURE__ */ jsxs("div", {
className: "flex h-full w-12 flex-col",
children: [
/* @__PURE__ */ jsxs(Tooltip, { children: [/* @__PURE__ */ jsx(TooltipTrigger, {
asChild: !0,
children: /* @__PURE__ */ jsx("div", {
className: cn("relative z-10 flex aspect-square h-12 w-full items-center justify-center border-l-2 border-transparent", { "border-primary": x_ === "collections" }),
children: /* @__PURE__ */ jsx(Button, {
variant: "ghost",
size: "icon",
onClick: () => S_(x_ === "collections" ? null : "collections"),
className: cn("text-muted-foreground hover:text-foreground", { "text-foreground": x_ === "collections" }),
children: /* @__PURE__ */ jsx(FoldersIcon, { className: "size-5" })
})
})
}), /* @__PURE__ */ jsx(TooltipContent, {
side: "right",
children: "Collections"
})] }),
/* @__PURE__ */ jsxs(Tooltip, { children: [/* @__PURE__ */ jsx(TooltipTrigger, {
asChild: !0,
children: /* @__PURE__ */ jsx("div", {
className: cn("relative z-10 flex aspect-square h-12 w-full items-center justify-center border-l-2 border-transparent", { "border-primary": x_ === "history" }),
children: /* @__PURE__ */ jsx(Button, {
variant: "ghost",
size: "icon",
onClick: () => S_(x_ === "history" ? null : "history"),
className: cn("text-muted-foreground hover:text-foreground", { "text-foreground": x_ === "history" }),
children: /* @__PURE__ */ jsx(HistoryIcon, { className: "size-5" })
})
})
}), /* @__PURE__ */ jsx(TooltipContent, {
side: "right",
children: "History"
})] }),
/* @__PURE__ */ jsx("div", {
className: cn("relative z-10 mt-auto flex aspect-square h-12 w-full items-center justify-center border-l-2 border-transparent", { "border-primary": x_ === "settings" }),
children: /* @__PURE__ */ jsxs(Tooltip, { children: [/* @__PURE__ */ jsxs(DropdownMenu, { children: [/* @__PURE__ */ jsx(DropdownMenuTrigger, { children: /* @__PURE__ */ jsx(TooltipTrigger, {
asChild: !0,
children: /* @__PURE__ */ jsx(Button, {
variant: "ghost",
size: "icon",
onClick: () => S_(x_ === "history" ? null : "history"),
className: cn("text-muted-foreground hover:text-foreground", { "text-foreground": x_ === "history" }),
children: /* @__PURE__ */ jsx(SettingsIcon, { className: "size-5" })
})
}) }), /* @__PURE__ */ jsxs(DropdownMenuContent, {
className: "mb-2 w-56",
align: "start",
side: "right",
children: [
/* @__PURE__ */ jsx(DropdownMenuGroup, { children: /* @__PURE__ */ jsxs(DropdownMenuItem, {
onSelect: () => w_(!0),
children: ["Command Palette...", /* @__PURE__ */ jsx(DropdownMenuShortcut, { children: "⌘J" })]
}) }),
/* @__PURE__ */ jsx(DropdownMenuSeparator, {}),
/* @__PURE__ */ jsx(DropdownMenuItem, {
onSelect: () => {
let j = h_.find((j) => j.type === "env") ?? Q({
type: "env",
data: g_ ?? { variables: {} }
});
p_(j);
},
children: "Environment Variables"
}),
/* @__PURE__ */ jsx(DropdownMenuItem, {
onSelect: () => {
let j = h_.find((j) => j.type === "preflight") ?? Q({
type: "preflight",
data: m_ ?? { script: "" }
});
p_(j);
},
children: "Preflight Script"
}),
/* @__PURE__ */ jsx(DropdownMenuSeparator, {}),
/* @__PURE__ */ jsx(DropdownMenuItem, {
onSelect: () => {
let j = h_.find((j) => j.type === "settings") ?? Q({
type: "settings",
data: {}
});
p_(j);
},
children: "Settings"
})
]
})] }), /* @__PURE__ */ jsx(TooltipContent, {
side: "right",
children: "Settings"
})] })
})
]
}),
/* @__PURE__ */ jsxs(ResizablePanelGroup, {
direction: "horizontal",
className: "h-full flex-1",
children: [
/* @__PURE__ */ jsxs(ResizablePanel, {
minSize: 10,
defaultSize: 17,
hidden: !x_,
className: "border-l",
children: [x_ === "collections" && /* @__PURE__ */ jsx(Collections, {}), x_ === "history" && /* @__PURE__ */ jsx(History, {})]
}),
/* @__PURE__ */ jsx(ResizableHandle, {}),
/* @__PURE__ */ jsxs(ResizablePanel, {
minSize: 10,
defaultSize: 83,
className: "flex flex-col",
children: [/* @__PURE__ */ jsx("div", {
className: "w-full",
children: /* @__PURE__ */ jsx(Tabs$1, {})
}), /* @__PURE__ */ jsx("div", {
className: "bg-card flex-1 overflow-hidden",
children: T_
})]
})
]
})
]
});
};
const Laboratory = (j) => {
let I = useCallback((I) => {
let [q, Q] = I.split(":");
return j.permissions?.[q]?.[Q] ?? !0;
}, [j.permissions]), q = useSettings(j), Q = useEnv(j), p_ = usePreflight({
...j,
envApi: Q
}), m_ = usePlugins(j), h_ = useTests(j), g_ = useTabs(j), __ = useEndpoint(j), v_ = useCollections({
...j,
tabsApi: g_
}), y_ = useOperations({
...j,
collectionsApi: v_,
tabsApi: g_,
envApi: Q,
preflightApi: p_,
settingsApi: q,
pluginsApi: m_,
checkPermissions: I
}), b_ = useHistory(j), [x_, S_] = useState(!1), [C_, w_] = useState(!1), [T_, E_] = useState(!1), D_ = useCallback(() => {
S_(!0);
}, []), O_ = useCallback(() => {
w_(!0);
}, []), k_ = useCallback(() => {
E_(!0);
}, []), A_ = useForm({
defaultValues: { name: "" },
validators: { onSubmit: addCollectionFormSchema },
onSubmit: ({ value: j }) => {
v_.addCollection({ name: j.name }), S_(!1);
}
}), j_ = useForm({
defaultValues: { endpoint: __.endpoint ?? "" },
validators: { onSubmit: updateEndpointFormSchema },
onSubmit: ({ value: j }) => {
__.setEndpoint(j.endpoint), w_(!1);
}
}), M_ = useForm({
defaultValues: { name: "" },
validators: { onSubmit: addTestFormSchema },
onSubmit: ({ value: j }) => {
h_.addTest({ name: j.name }), E_(!1);
}
}), [N_, P_] = useState(!1), [F_, I_] = useState({
placeholder: "",
defaultValue: void 0,
onSubmit: void 0
}), L_ = useCallback((j) => {
I_({
placeholder: j.placeholder,
defaultValue: j.defaultValue,
onSubmit: j.onSubmit
}), setTimeout(() => {
P_(!0);
}, 200);
}, []), R_ = useRef(null), [z_, B_] = useState(!1), V_ = useCallback(() => {
B_(!0);
}, []), H_ = useCallback(() => {
B_(!1);
}, []);
return /* @__PURE__ */ jsxs(ShadowRootContainer, { children: [/* @__PURE__ */ jsx("style", { children: `${src_default}\n${editor_main_default}` }), /* @__PURE__ */ jsxs("div", {
className: cn("hive-laboratory bg-background size-full", j.theme, { "fixed inset-0 z-50": z_ }),
ref: R_,
children: [
/* @__PURE__ */ jsx(Toaster, {
richColors: !0,
closeButton: !0,
position: "top-right",
theme: j.theme
}),
/* @__PURE__ */ jsx(Dialog, {
open: C_,
onOpenChange: w_,
children: /* @__PURE__ */ jsxs(DialogContent, {
className: "sm:max-w-[425px]",
children: [
/* @__PURE__ */ jsxs(DialogHeader, { children: [/* @__PURE__ */ jsx(DialogTitle, { children: "Update endpoint" }), /* @__PURE__ */ jsx(DialogDescription, { children: "Update the endpoint of your laboratory." })] }),
/* @__PURE__ */ jsx("div", {
className: "grid gap-4",
children: /* @__PURE__ */ jsx("form", {
id: "update-endpoint-form",
onSubmit: (j) => {
j.preventDefault(), j_.handleSubmit();
},
children: /* @__PURE__ */ jsx(FieldGroup, { children: /* @__PURE__ */ jsx(j_.Field, {
name: "endpoint",
children: (j) => {
let I = j.state.meta.isTouched && !j.state.meta.isValid;
return /* @__PURE__ */ jsx(Input, {
id: j.name,
name: j.name,
value: j.state.value,
onBlur: j.handleBlur,
onChange: (I) => j.handleChange(I.target.value),
"aria-invalid": I,
placeholder: "Enter endpoint",
autoComplete: "off"
});
}
}) })
})
}),
/* @__PURE__ */ jsxs(DialogFooter, { children: [/* @__PURE__ */ jsx(DialogClose, {
asChild: !0,
children: /* @__PURE__ */ jsx(Button, {
variant: "outline",
children: "Cancel"
})
}), /* @__PURE__ */ jsx(Button, {
type: "submit",
form: "update-endpoint-form",
children: "Update endpoint"
})] })
]
})
}),
/* @__PURE__ */ jsx(PreflightPromptModal, {
open: N_,
onOpenChange: P_,
...F_
}),
/* @__PURE__ */ jsx(Dialog, {
open: x_,
onOpenChange: S_,
children: /* @__PURE__ */ jsxs(DialogContent, {
className: "sm:max-w-[425px]",
children: [
/* @__PURE__ */ jsxs(DialogHeader, { children: [/* @__PURE__ */ jsx(DialogTitle, { children: "Add collection" }), /* @__PURE__ */ jsx(DialogDescription, { children: "Add a new collection of operations to your laboratory." })] }),
/* @__PURE__ */ jsx("div", {
className: "grid gap-4",
children: /* @__PURE__ */ jsx("form", {
id: "add-collection-form",
onSubmit: (j) => {
j.preventDefault(), A_.handleSubmit();
},
children: /* @__PURE__ */ jsx(FieldGroup, { children: /* @__PURE__ */ jsx(A_.Field, {
name: "name",
children: (j) => {
let I = j.state.meta.isTouched && !j.state.meta.isValid;
return /* @__PURE__ */ jsxs(Field, {
"data-invalid": I,
children: [
/* @__PURE__ */ jsx(FieldLabel, {
htmlFor: j.name,
children: "Name"
}),
/* @__PURE__ */ jsx(Input, {
id: j.name,
name: j.name,
value: j.state.value,
onBlur: j.handleBlur,
onChange: (I) => j.handleChange(I.target.value),
"aria-invalid": I,
placeholder: "Enter name of the collection",
autoComplete: "off"
}),
I && /* @__PURE__ */ jsx(FieldError, { errors: j.state.meta.errors })
]
});
}
}) })
})
}),
/* @__PURE__ */ jsxs(DialogFooter, { children: [/* @__PURE__ */ jsx(DialogClose, {
asChild: !0,
children: /* @__PURE__ */ jsx(Button, {
variant: "outline",
children: "Cancel"
})
}), /* @__PURE__ */ jsx(Button, {
type: "submit",
form: "add-collection-form",
children: "Add collection"
})] })
]
})
}),
/* @__PURE__ */ jsx(Dialog, {
open: T_,
onOpenChange: E_,
children: /* @__PURE__ */ jsxs(DialogContent, {
className: "sm:max-w-[425px]",
children: [
/* @__PURE__ */ jsxs(DialogHeader, { children: [/* @__PURE__ */ jsx(DialogTitle, { children: "Add test" }), /* @__PURE__ */ jsx(DialogDescription, { children: "Add a new test to your laboratory." })] }),
/* @__PURE__ */ jsx("div", {
className: "grid gap-4",
children: /* @__PURE__ */ jsx("form", {
id: "add-test-form",
onSubmit: (j) => {
j.preventDefault(), M_.handleSubmit();
},
children: /* @__PURE__ */ jsx(FieldGroup, { children: /* @__PURE__ */ jsx(M_.Field, {
name: "name",
children: (j) => {
let I = j.state.meta.isTouched && !j.state.meta.isValid;
return /* @__PURE__ */ jsxs(Field, {
"data-invalid": I,
children: [
/* @__PURE__ */ jsx(FieldLabel, {
htmlFor: j.name,
children: "Name"
}),
/* @__PURE__ */ jsx(Input, {
id: j.name,
name: j.name,
value: j.state.value,
onBlur: j.handleBlur,
onChange: (I) => j.handleChange(I.target.value),
"aria-invalid": I,
placeholder: "Enter name of the test",
autoComplete: "off"
}),
I && /* @__PURE__ */ jsx(FieldError, { errors: j.state.meta.errors })
]
});
}
}) })
})
}),
/* @__PURE__ */ jsxs(DialogFooter, { children: [/* @__PURE__ */ jsx(DialogClose, {
asChild: !0,
children: /* @__PURE__ */ jsx(Button, {
variant: "outline",
children: "Cancel"
})
}), /* @__PURE__ */ jsx(Button, {
type: "submit",
form: "add-test-form",
children: "Add test"
})] })
]
})
}),
/* @__PURE__ */ jsx(LaboratoryProvider, {
...j,
...h_,
...q,
...m_,
...Q,
...p_,
...g_,
...__,
...v_,
...y_,
...b_,
container: R_.current,
openAddCollectionDialog: D_,
openUpdateEndpointDialog: O_,
openAddTestDialog: k_,
openPreflightPromptModal: L_,
goToFullScreen: V_,
exitFullScreen: H_,
isFullScreen: z_,
checkPermissions: I,
children: /* @__PURE__ */ jsx(LaboratoryContent, {})
})
]
})] });
}, renderLaboratory = (j) => {
let I = "hive-laboratory", q = (j) => {
let q = localStorage.getItem(`${I}:${j}`);
return q ? JSON.parse(q) : null;
}, Q = (j, q) => {
localStorage.setItem(`${I}:${j}`, JSON.stringify(q));
};
if (!j) throw Error("Laboratory element not found");
return ReactDOM.createRoot(j).render(/* @__PURE__ */ jsx(Laboratory, {
theme: "dark",
defaultEndpoint: q("endpoint") ?? window.location.origin + window.location.pathname,
onEndpointChange: (j) => {
Q("endpoint", j ?? "");
},
defaultCollections: q("collections") ?? [],
onCollectionsChange: (j) => {
Q("collections", j);
},
defaultTabs: q("tabs") ?? [],
onTabsChange: (j) => {
Q("tabs", j);
},
defaultOperations: q("operations") ?? [],
onOperationsChange: (j) => {
Q("operations", j);
},
defaultActiveTabId: q("activeTabId") ?? null,
onActiveTabIdChange: (j) => {
Q("activeTabId", j ?? "");
},
defaultPreflight: q("preflight") ?? null,
onPreflightChange: (j) => {
Q("preflight", j ?? "");
},
defaultEnv: q("env") ?? null,
onEnvChange: (j) => {
Q("env", j ?? "");
},
defaultSettings: q("settings") ?? null,
onSettingsChange: (j) => {
Q("settings", j ?? "");
},
defaultHistory: q("history") ?? [],
onHistoryChange: (j) => {
Q("history", j);
}
}));
};
export { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, Editor, Laboratory, LaboratoryProvider, Tabs, TabsContent, TabsList, TabsTrigger, renderLaboratory, runIsolatedLabScript, useCollections, useEndpoint, useEnv, useHistory, useLaboratory, useOperations, usePlugins, usePreflight, useSettings, useTabs, useTests };