@graphql-hive/laboratory
Version:
32,994 lines • 1.65 MB
JavaScript
import { Ju as __require, Ku as __commonJSMin, Yu as __toESM, a as MarkerSeverity, c as Range$1, 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-DPgI1LYm.js";
import { $ as assertNullableType, A as GraphQLDeprecatedDirective, B as GraphQLString, C as TypeMetaFieldDef, Ct as parseValue, Dt as Lexer, Et as inspect$1, F as specifiedDirectives, Ft as GraphQLError, G as GraphQLInputObjectType, H as specifiedScalarTypes, I as GraphQLBoolean, It as invariant$1, J as GraphQLNonNull, K as GraphQLInterfaceType, L as GraphQLFloat, Lt as isObjectLike$1, M as GraphQLIncludeDirective, Mt as Kind, N as GraphQLSkipDirective, Nt as DirectiveLocation, O as isIterableObject$1, Ot as isPunctuatorTokenKind, P as isSpecifiedDirective, Pt as OperationTypeNode, Q as assertInterfaceType, R as GraphQLID, Rt as devAssert, S as TypeKind, St as parse, T as introspectionTypes, Tt as isSource, U as doTypesOverlap, V as isSpecifiedScalarType, W as GraphQLEnumType, X as GraphQLScalarType, Y as GraphQLObjectType, Z as GraphQLUnionType, _ as typeFromAST, _t as isUnionType, a as collectFields$1, at as isEnumType, b as isSchema, bt as visit, c as getDirectiveValues, ct as isInterfaceType, d as coerceInputValue, dt as isNamedType, et as assertObjectType, f as addPath$1, ft as isNonNullType, g as visitWithTypeInfo, gt as isScalarType, h as TypeInfo, ht as isOutputType, i as validate, it as isCompositeType, j as GraphQLDirective, jt as printBlockString$1, kt as TokenKind, l as getVariableValues$1, lt as isLeafType, m as isTypeSystemDefinitionNode, mt as isObjectType, n as buildASTSchema, nt as getNullableType, o as collectSubfields$1, ot as isInputObjectType, p as pathToArray$1, pt as isNullableType, q as GraphQLList, r as buildSchema, rt as isAbstractType, s as getArgumentValues$1, st as isInputType, t as registerLanguage, tt as getNamedType, u as valueFromAST, ut as isListType, v as assertValidSchema, vt as valueFromASTUntyped, w as TypeNameMetaFieldDef, wt as Source, x as SchemaMetaFieldDef, xt as keyValMap, y as GraphQLSchema, yt as print, z as GraphQLInt } from "./monaco-editor-CXHJEBOf.js";
import "./monaco.contribution-BUcZa-0g.js";
import "./monaco.contribution-BrPPpP-5.js";
import ReactDOM from "react-dom/client";
import * as React$1 from "react";
import React, { Fragment, cloneElement, createContext, createElement, forwardRef, memo, useCallback, useContext, useDeferredValue, 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 { AlignLeftIcon, BookmarkIcon, Box, BoxIcon, Boxes, CheckIcon, ChevronDownIcon, ChevronUpIcon, CircleCheckIcon, CirclePlus, CircleXIcon, ClockIcon, CopyMinusIcon, CuboidIcon, FileIcon, FilePlus2Icon, FileTextIcon, FlaskConicalIcon, FolderClockIcon, FolderIcon, FolderOpenIcon, FolderPlusIcon, FoldersIcon, GitForkIcon, GlobeIcon, GripVerticalIcon, HistoryIcon, InfoIcon, Layers2Icon, ListOrderedIcon, ListTreeIcon, Loader2Icon, LockIcon, MaximizeIcon, MinimizeIcon, MoreHorizontalIcon, NetworkIcon, OctagonXIcon, PanelLeftCloseIcon, PanelLeftOpenIcon, PlayIcon, PowerIcon, PowerOffIcon, RefreshCcwIcon, RotateCcwIcon, ScrollTextIcon, SearchIcon, ServerIcon, SettingsIcon, SquarePenIcon, TextAlignStartIcon, TrashIcon, TriangleAlertIcon, UnlinkIcon, XIcon, ZoomInIcon, ZoomOutIcon } from "lucide-react";
import * as z$1 from "zod";
import { z } from "zod";
import { useForm } from "@tanstack/react-form";
import { createClient } from "graphql-ws";
import { format } from "date-fns";
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-destructive:hsl(var(--destructive));--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.9265 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.4125% 63.0291 19.2068);--color-gray-400:lab(65.9269% -.832707 -8.17473)}}}@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-4{left:calc(var(--spacing)*4)}.left-5{left:calc(var(--spacing)*5)}.left-\\[50\\%\\]{left:50%}.left-full{left:100%}.isolate{isolation:isolate}.-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}.z-100{z-index:100}.z-150{z-index:150}.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-0\\.5{margin-inline:calc(var(--spacing)*-.5)}.-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-2{margin-top:calc(var(--spacing)*-2)}.mt-0\\.5{margin-top:calc(var(--spacing)*.5)}.mt-auto{margin-top:auto}.mr-2{margin-right:calc(var(--spacing)*2)}.mb-2{margin-bottom:calc(var(--spacing)*2)}.mb-3{margin-bottom:calc(var(--spacing)*3)}.mb-px{margin-bottom:1px}.-ml-1{margin-left:calc(var(--spacing)*-1)}.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-6\\!{height:calc(var(--spacing)*6)!important}.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-\\[50px\\]{height:50px}.h-\\[calc\\(--spacing\\(5\\.5\\)\\)\\]{height:calc(calc(var(--spacing)*5.5))}.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-96{max-height:calc(var(--spacing)*96)}.max-h-150{max-height:calc(var(--spacing)*150)}.max-h-\\[300px\\]{max-height:300px}.max-h-\\[min\\(calc\\(--spacing\\(96\\)---spacing\\(9\\)\\)\\,calc\\(var\\(--available-height\\)---spacing\\(9\\)\\)\\)\\]{max-height:min(calc(calc(var(--spacing)*96) - calc(var(--spacing)*9)),calc(var(--available-height) - calc(var(--spacing)*9)))}.max-h-\\[var\\(--radix-select-content-available-height\\)\\]{max-height:var(--radix-select-content-available-height)}.min-h-9{min-height:calc(var(--spacing)*9)}.min-h-16{min-height:calc(var(--spacing)*16)}.\\!w-8{width:calc(var(--spacing)*8)!important}.w-\\(--anchor-width\\){width:var(--anchor-width)}.w-2\\.5{width:calc(var(--spacing)*2.5)}.w-3{width:calc(var(--spacing)*3)}.w-6{width:calc(var(--spacing)*6)}.w-8{width:calc(var(--spacing)*8)}.w-12{width:calc(var(--spacing)*12)}.w-56{width:calc(var(--spacing)*56)}.w-72{width:calc(var(--spacing)*72)}.w-96{width:calc(var(--spacing)*96)}.w-auto{width:auto}.w-fit{width:fit-content}.w-full{width:100%}.w-max{width:max-content}.w-px{width:1px}.max-w-\\(--available-width\\){max-width:var(--available-width)}.max-w-2xl{max-width:var(--container-2xl)}.max-w-2xl\\!{max-width:var(--container-2xl)!important}.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-6{min-width:calc(var(--spacing)*6)}.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-16{min-width:calc(var(--spacing)*16)}.min-w-72{min-width:calc(var(--spacing)*72)}.min-w-\\[8rem\\]{min-width:8rem}.min-w-\\[calc\\(var\\(--anchor-width\\)\\+--spacing\\(7\\)\\)\\]{min-width:calc(var(--anchor-width) + calc(var(--spacing)*7))}.min-w-\\[var\\(--radix-select-trigger-width\\)\\]{min-width:var(--radix-select-trigger-width)}.flex-1{flex:1}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.grow-0{flex-grow:0}.origin-\\(--radix-context-menu-content-transform-origin\\){transform-origin:var(--radix-context-menu-content-transform-origin)}.origin-\\(--transform-origin\\){transform-origin:var(--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-1\\/2{--tw-translate-x:calc(calc(1/2*100%)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.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}.rotate-90{rotate:90deg}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.animate-\\[dash_500ms_linear_infinite\\]{animation:.5s linear infinite dash}.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-auto{cursor:auto}.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-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-\\[1fr_auto\\]{grid-template-columns:1fr auto}.grid-cols-\\[1fr_auto_auto\\]{grid-template-columns:1fr auto auto}.grid-rows-1{grid-template-rows:repeat(1,minmax(0,1fr))}.grid-rows-\\[auto_1fr\\]{grid-template-rows:auto 1fr}.grid-rows-\\[auto_auto\\]{grid-template-rows:auto auto}.grid-rows-\\[auto_auto_1fr\\]{grid-template-rows:auto auto 1fr}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-row{flex-direction:row}.flex-wrap{flex-wrap:wrap}.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)}.gap-8{gap:calc(var(--spacing)*8)}.gap-\\[--spacing\\(var\\(--gap\\)\\)\\]{gap:calc(var(--spacing)*var(--gap))}.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)}.\\!rounded-l-none{border-top-left-radius:0!important;border-bottom-left-radius:0!important}.\\!rounded-l-sm{border-top-left-radius:calc(var(--radius) - 4px)!important;border-bottom-left-radius:calc(var(--radius) - 4px)!important}.\\!rounded-r-none{border-top-right-radius:0!important;border-bottom-right-radius:0!important}.\\!rounded-r-sm{border-top-right-radius:calc(var(--radius) - 4px)!important;border-bottom-right-radius:calc(var(--radius) - 4px)!important}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-t-2{border-top-style:var(--tw-border-style);border-top-width:2px}.border-r-0{border-right-style:var(--tw-border-style);border-right-width:0}.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,.bg-primary\\/10{background-color:hsl(var(--primary))}@supports (color:color-mix(in lab, red, red)){.bg-primary\\/10{background-color:color-mix(in oklab,hsl(var(--primary))10%,transparent)}}.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}.bg-white{background-color:var(--color-white)}.bg-\\[radial-gradient\\(hsl\\(var\\(--border\\)\\)_1px\\,transparent_1px\\)\\]{background-image:radial-gradient(hsl(var(--border))1px,transparent 1px)}.bg-size-\\[16px_16px\\]{background-size:16px 16px}.bg-clip-padding{background-clip:padding-box}.fill-current{fill:currentColor}.fill-foreground{fill:hsl(var(--foreground))}.fill-none{fill:none}.stroke-border{stroke:hsl(var(--border))}.stroke-2{stroke-width:2px}.p-0{padding:calc(var(--spacing)*0)}.p-0\\.5{padding:calc(var(--spacing)*.5)}.p-1{padding:calc(var(--spacing)*1)}.p-1\\!{padding:calc(var(--spacing)*1)!important}.p-2{padding:calc(var(--spacing)*2)}.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-0\\.5{padding-inline:calc(var(--spacing)*.5)}.px-1{padding-inline:calc(var(--spacing)*1)}.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{padding-block:calc(var(--spacing)*0)}.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-2{padding-top:calc(var(--spacing)*2)}.pt-3{padding-top:calc(var(--spacing)*3)}.pr-0{padding-right:calc(var(--spacing)*0)}.pr-0\\!{padding-right:calc(var(--spacing)*0)!important}.pr-1\\.5{padding-right:calc(var(--spacing)*1.5)}.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}.text-ellipsis{text-overflow:ellipsis}.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)}.shadow-xs{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);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-1{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-foreground\\/10{--tw-ring-color:hsl(var(--foreground))}@supports (color:color-mix(in lab, red, red)){.ring-foreground\\/10{--tw-ring-color:color-mix(in oklab,hsl(var(--foreground))10%,transparent)}}.ring-ring\\/50{--tw-ring-color:hsl(var(--ring))}@supports (color:color-mix(in lab, red, red)){.ring-ring\\/50{--tw-ring-color:color-mix(in oklab,hsl(var(--ring))50%,transparent)}}.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-100{--tw-duration:.1s;transition-duration:.1s}.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}.\\[stroke-dasharray\\:12_8\\]{stroke-dasharray:12 8}.running{animation-play-state:running}:is(.\\*\\:border-b>*){border-bottom-style:var(--tw-border-style);border-bottom-width:1px}:is(.\\*\\:border-dashed>*){--tw-border-style:dashed;border-style:dashed}:is(.\\*\\:border-border>*){border-color:hsl(var(--border))}:is(.\\*\\:pb-2>*){padding-bottom:calc(var(--spacing)*2)}@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-\\[slot\\=combobox-clear\\]\\/input-group\\:hidden:is(:where(.group\\/input-group):has([data-slot=combobox-clear]) *){display:none}.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-empty\\/combobox-content\\:flex:is(:where(.group\\/combobox-content)[data-empty] *){display:flex}.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)}:is(.\\*\\:last\\:border-b-0>*):last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}:is(.\\*\\:last\\:pb-0>*):last-child{padding-bottom:calc(var(--spacing)*0)}.empty\\:hidden:empty{display:none}.focus-within\\:border-ring:focus-within{border-color:hsl(var(--ring))}.focus-within\\:ring-\\[3px\\]:focus-within{--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-within\\:ring-ring\\/50:focus-within{--tw-ring-color:hsl(var(--ring))}@supports (color:color-mix(in lab, red, red)){.focus-within\\:ring-ring\\/50:focus-within{--tw-ring-color:color-mix(in oklab,hsl(var(--ring))50%,transparent)}}@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}.hover\\:ring-4:hover{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(4px + 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\\:z-10:focus{z-index:10}.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\\:z-10:focus-visible{z-index:10}.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-4:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(4px + 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-disabled\\:pointer-events-none:has(:disabled){pointer-events:none}.has-disabled\\:cursor-not-allowed:has(:disabled){cursor:not-allowed}.has-disabled\\:opacity-50:has(:disabled){opacity:.5}.has-aria-invalid\\:border-destructive:has([aria-invalid=true]){border-color:hsl(var(--destructive))}.has-aria-invalid\\:ring-\\[3px\\]:has([aria-invalid=true]){--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-aria-invalid\\:ring-destructive\\/20:has([aria-invalid=true]){--tw-ring-color:hsl(var(--destructive))}@supports (color:color-mix(in lab, red, red)){.has-aria-invalid\\:ring-destructive\\/20:has([aria-invalid=true]){--tw-ring-color:color-mix(in oklab,hsl(var(--destructive))20%,transparent)}}.has-data-\\[slot\\=combobox-chip\\]\\:px-1\\.5:has([data-slot=combobox-chip]){padding-inline:calc(var(--spacing)*1.5)}.has-data-\\[slot\\=combobox-chip-remove\\]\\:pr-0:has([data-slot=combobox-chip-remove]){padding-right:calc(var(--spacing)*0)}.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-closed\\:animate-out[data-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-closed\\:fade-out-0[data-closed]{--tw-exit-opacity:0}.data-closed\\:zoom-out-95[data-closed]{--tw-exit-scale:.95}.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-empty\\:p-0[data-empty]{padding:calc(var(--spacing)*0)}.data-highlighted\\:bg-accent[data-highlighted]{background-color:hsl(var(--accent))}.data-highlighted\\:text-accent-foreground[data-highlighted]{color:hsl(var(--accent-foreground))}.data-inset\\:pl-8[data-inset]{padding-left:calc(var(--spacing)*8)}.data-open\\:animate-in[data-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-open\\:fade-in-0[data-open]{--tw-enter-opacity:0}.data-open\\:zoom-in-95[data-open]{--tw-enter-scale:.95}.data-placeholder\\:text-muted-foreground[data-placeholder]{color:hsl(var(--muted-foreground))}.data-pressed\\:bg-transparent[data-pressed]{background-color:#0000}.data-\\[chips\\=true\\]\\:min-w-\\(--anchor-width\\)[data-chips=true]{min-width:var(--anchor-width)}.data-\\[disabled\\]\\:pointer-events-none[data-disabled]{pointer-events:none}.data-\\[disabled\\]\\:opacity-50[data-disabled]{opacity:.5}.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-1\\.5[data-orientation=horizontal]{height:calc(var(--spacing)*1.5)}.data-\\[orientation\\=horizontal\\]\\:h-full[data-orientation=horizontal]{height:100%}.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\\]\\:min-h-44[data-orientation=vertical]{min-height:calc(var(--spacing)*44)}.data-\\[orientation\\=vertical\\]\\:w-1\\.5[data-orientation=vertical]{width:calc(var(--spacing)*1.5)}.data-\\[orientation\\=vertical\\]\\:w-auto[data-orientation=vertical]{width:auto}.data-\\[orientation\\=vertical\\]\\:w-full[data-orientation=vertical]{width:100%}.data-\\[orientation\\=vertical\\]\\:w-px[data-orientation=vertical]{width:1px}.data-\\[orientation\\=vertical\\]\\:flex-col[data-orientation=vertical]{flex-direction:column}.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\\=input-group\\]\\:m-1>*)[data-slot=input-group]{margin:calc(var(--spacing)*1)}:is(.\\*\\:data-\\[slot\\=input-group\\]\\:mb-0>*)[data-slot=input-group]{margin-bottom:calc(var(--spacing)*0)}:is(.\\*\\:data-\\[slot\\=input-group\\]\\:h-8>*)[data-slot=input-group]{height:calc(var(--spacing)*8)}:is(.\\*\\:data-\\[slot\\=input-group\\]\\:border-input\\/30>*)[data-slot=input-group]{border-color:hsl(var(--input))}@supports (color:color-mix(in lab, red, red)){:is(.\\*\\:data-\\[slot\\=input-group\\]\\:border-input\\/30>*)[data-slot=input-group]{border-color:color-mix(in oklab,hsl(var(--input))30%,transparent)}}:is(.\\*\\:data-\\[slot\\=input-group\\]\\:bg-input\\/30>*)[data-slot=input-group]{background-color:hsl(var(--input))}@supports (color:color-mix(in lab, red, red)){:is(.\\*\\:data-\\[slot\\=input-group\\]\\:bg-input\\/30>*)[data-slot=input-group]{background-color:color-mix(in oklab,hsl(var(--input))30%,transparent)}}:is(.\\*\\:data-\\[slot\\=input-group\\]\\:shadow-none>*)[data-slot=input-group]{--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)}: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-\\[spacing\\=0\\]\\:rounded-none[data-spacing=\"0\"]{border-radius:0}.data-\\[spacing\\=0\\]\\:shadow-none[data-spacing=\"0\"]{--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)}.data-\\[spacing\\=0\\]\\:first\\:rounded-l-md[data-spacing=\"0\"]:first-child{border-top-left-radius:calc(var(--radius) - 2px);border-bottom-left-radius:calc(var(--radius) - 2px)}.data-\\[spacing\\=0\\]\\:last\\:rounded-r-md[data-spacing=\"0\"]:last-child{border-top-right-radius:calc(var(--radius) - 2px);border-bottom-right-radius:calc(var(--radius) - 2px)}.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))}.data-\\[spacing\\=0\\]\\:data-\\[variant\\=outline\\]\\:border-l-0[data-spacing=\"0\"][data-variant=outline]{border-left-style:var(--tw-border-style);border-left-width:0}.data-\\[spacing\\=0\\]\\:data-\\[variant\\=outline\\]\\:first\\:border-l[data-spacing=\"0\"][data-variant=outline]:first-child{border-left-style:var(--tw-border-style);border-left-width:1px}.data-\\[spacing\\=default\\]\\:data-\\[variant\\=outline\\]\\:shadow-xs[data-spacing=default][data-variant=outline]{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.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-aria-invalid\\:border-destructive\\/50:has([aria-invalid=true]){border-color:hsl(var(--destructive))}@supports (color:color-mix(in lab, red, red)){.dark\\:has-aria-invalid\\:border-destructive\\/50:has([aria-invalid=true]){border-color:color-mix(in oklab,hsl(var(--destructive))50%,transparent)}}.dark\\:has-aria-invalid\\:ring-destructive\\/40:has([aria-invalid=true]){--tw-ring-color:hsl(var(--destructive))}@supports (color:color-mix(in lab, red, red)){.dark\\:has-aria-invalid\\:ring-destructive\\/40:has([aria-invalid=true]){--tw-ring-color:color-mix(in oklab,hsl(var(--destructive))40%,transparent)}}.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)}}}@media (pointer:coarse){.pointer-coarse\\:size-5{width:calc(var(--spacing)*5);height:calc(var(--spacing)*5)}.pointer-coarse\\:px-3{padding-inline:calc(var(--spacing)*3)}.pointer-coarse\\:py-2{padding-block:calc(var(--spacing)*2)}.pointer-coarse\\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}}.\\[\\&_\\[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 .inactive-line{opacity:.5}.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%;--color-destructive:357 96% 58%;--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,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-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-8));--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(--color-destructive));--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%;--color-destructive:358.75 100% 70%;--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(--color-destructive));--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))}}@keyframes dash{to{stroke-dashoffset:-20px}}@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 t = 0; t < 256; ++t) byteToHex.push((t + 256).toString(16).slice(1));
function unsafeStringify(t, n = 0) {
return (byteToHex[t[n + 0]] + byteToHex[t[n + 1]] + byteToHex[t[n + 2]] + byteToHex[t[n + 3]] + "-" + byteToHex[t[n + 4]] + byteToHex[t[n + 5]] + "-" + byteToHex[t[n + 6]] + byteToHex[t[n + 7]] + "-" + byteToHex[t[n + 8]] + byteToHex[t[n + 9]] + "-" + byteToHex[t[n + 10]] + byteToHex[t[n + 11]] + byteToHex[t[n + 12]] + byteToHex[t[n + 13]] + byteToHex[t[n + 14]] + byteToHex[t[n + 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(t, n, i) {
t ||= {};
let a = t.random ?? t.rng?.() ?? rng();
if (a.length < 16) throw Error("Random bytes length must be >= 16");
if (a[6] = a[6] & 15 | 64, a[8] = a[8] & 63 | 128, n) {
if (i ||= 0, i < 0 || i + 16 > n.length) throw RangeError(`UUID byte range ${i}:${i + 15} is out of buffer bounds`);
for (let t = 0; t < 16; ++t) n[i + t] = a[t];
return n;
}
return unsafeStringify(a);
}
function v4(t, n, i) {
return native_default.randomUUID && !n && !t ? native_default.randomUUID() : _v4(t, n, i);
}
var v4_default = v4;
const useCollections = (t) => {
let [n, i] = useState(t.defaultCollections ?? []), a = useCallback((a) => {
let o = {
...a,
id: v4_default(),
createdAt: (/* @__PURE__ */ new Date()).toISOString(),
operations: []
}, s = [...n, o];
i(s), t.onCollectionsChange?.(s), t.onCollectionCreate?.(o);
}, [n, t]), o = useCallback((a, o) => {
let s = {
...o,
createdAt: (/* @__PURE__ */ new Date()).toISOString()
}, c = n.map((t) => t.id === a ? {
...t,
operations: [...t.operations, s]
} : t);
i(c), t.onCollectionsChange?.(c);
let d = c.find((t) => t.id === a);
d && (t.onCollectionUpdate?.(d), t.onCollectionOperationCreate?.(d, s));
}, [n, t]), s = useCallback((a) => {
let o = n.find((t) => t.id === a), s = n.filter((t) => t.id !== a);
i(s), t.onCollectionsChange?.(s), o && t.onCollectionDelete?.(o);
}, [n, t]), c = useCallback((a, o) => {
let s, c = n.map((t) => t.id === a ? {
...t,
operations: t.operations.filter((t) => t.id === o ? (s = t, !1) : !0)
} : t);
i(c), t.onCollectionsChange?.(c);
let d = c.find((t) => t.id === a);
d && (t.onCollectionUpdate?.(d), s && t.onCollectionOperationDelete?.(d, s));
}, [n, t]), d = useCallback((a, o) => {
let s = n.map((t) => t.id === a ? {
...t,
...o
} : t);
i(s), t.onCollectionsChange?.(s);
let c = s.find((t) => t.id === a);
c && t.onCollectionUpdate?.(c);
}, [n, t]), f = useCallback((a, o, s) => {
let c, d = n.map((t) => t.id === a ? {
...t,
operations: t.operations.map((t) => t.id === o ? (c = {
...t,
...s
}, c) : t)
} : t);
i(d), t.onCollectionsChange?.(d);
let f = d.find((t) => t.id === a);
f && (t.onCollectionUpdate?.(f), c && t.onCollectionOperationUpdate?.(f, c));
}, [n, t]);
return {
collections: n,
addCollection: a,
addOperationToCollection: o,
deleteCollection: s,
deleteOperationFromCollection: c,
updateCollection: d,
updateOperationInCollection: f
};
}, versionInfo = Object.freeze({
major: 16,
minor: 12,
patch: 0,
preReleaseTag: null
});
function isPromise$1(t) {
return typeof t?.then == "function";
}
function memoize3$1(t) {
let n;
return function(i, a, o) {
n === void 0 && (n = /* @__PURE__ */ new WeakMap());
let s = n.get(i);
s === void 0 && (s = /* @__PURE__ */ new WeakMap(), n.set(i, s));
let c = s.get(a);
c === void 0 && (c = /* @__PURE__ */ new WeakMap(), s.set(a, c));
let d = c.get(o);
return d === void 0 && (d = t(i, a, o), c.set(o, d)), d;
};
}
function promiseForObject$1(t) {
return Promise.all(Object.values(t)).then((n) => {
let i = Object.create(null);
for (let [a, o] of Object.keys(t).entries()) i[o] = n[a];
return i;
});
}
function promiseReduce$1(t, n, i) {
let a = i;
for (let i of t) a = isPromise$1(a) ? a.then((t) => n(t, i)) : n(a, i);
return a;
}
function toError(t) {
return t instanceof Error ? t : new NonErrorThrown(t);
}
var NonErrorThrown = class extends Error {
constructor(t) {
super("Unexpected error value: " + inspect$1(t)), this.name = "NonErrorThrown", this.thrownValue = t;
}
};
function locatedError(t, n, i) {
let a = toError(t);
return isLocatedGraphQLError(a) ? a : new GraphQLError(a.message, {
nodes: a.nodes ?? n,
source: a.source,
positions: a.positions,
path: i,
originalError: a
});
}
function isLocatedGraphQLError(t) {
return Array.isArray(t.path);
}
var collectSubfields$2 = memoize3$1((t, n, i) => collectSubfields$1(t.schema, t.fragments, t.variableValues, n, i));
function execute$2(t) {
arguments.length < 2 || devAssert(!1, "graphql@16 dropped long-deprecated support for positional arguments, please pass an object instead.");
let { schema: n, document: i, variableValues: a, rootValue: o } = t;
assertValidExecutionArguments(n, i, a);
let s = buildExecutionContext$1(t);
if (!("schema" in s)) return { errors: s };
try {
let { operation: t } = s, n = executeOperation$1(s, t, o);
return isPromise$1(n) ? n.then((t) => buildResponse$1(t, s.errors), (t) => (s.errors.push(t), buildResponse$1(null, s.errors))) : buildResponse$1(n, s.errors);
} catch (t) {
return s.errors.push(t), buildResponse$1(null, s.errors);
}
}
function executeSync(t) {
let n = execute$2(t);
if (isPromise$1(n)) throw Error("GraphQL execution failed to complete synchronously.");
return n;
}
function buildResponse$1(t, n) {
return n.length === 0 ? { data: t } : {
errors: n,
data: t
};
}
function assertValidExecutionArguments(t, n, i) {
n || devAssert(!1, "Must provide document."), assertValidSchema(t), i == null || isObjectLike$1(i) || devAssert(!1, "Variables must be provided as an Object where each property is a variable value. Perhaps look to see if an unparsed JSON string was provided.");
}
function buildExecutionContext$1(t) {
let { schema: n, document: i, rootValue: a, contextValue: o, variableValues: s, operationName: c, fieldResolver: d, typeResolver: f, subscribeFieldResolver: g, options: b } = t, x, S = Object.create(null);
for (let t of i.definitions) switch (t.kind) {
case Kind.OPERATION_DEFINITION:
if (c == null) {
if (x !== void 0) return [new GraphQLError("Must provide operation name if query contains multiple operations.")];
x = t;
} else t.name?.value === c && (x = t);
break;
case Kind.FRAGMENT_DEFINITION:
S[t.name.value] = t;
break;
default:
}
if (!x) return c == null ? [new GraphQLError("Must provide an operation.")] : [new GraphQLError(`Unknown operation named "${c}".`)];
/* c8 ignore next */
let C = x.variableDefinitions ?? [], w = getVariableValues$1(n, C, s ?? {}, { maxErrors: b?.maxCoercionErrors ?? 50 });
return w.errors ? w.errors : {
schema: n,
fragments: S,
rootValue: a,
contextValue: o,
operation: x,
variableValues: w.coerced,
fieldResolver: d ?? defaultFieldResolver,
typeResolver: f ?? defaultTypeResolver$1,
subscribeFieldResolver: g ?? defaultFieldResolver,
errors: []
};
}
function executeOperation$1(t, n, i) {
let a = t.schema.getRootType(n.operation);
if (a == null) throw new GraphQLError(`Schema is not configured to execute ${n.operation} operation.`, { nodes: n });
let o = collectFields$1(t.schema, t.fragments, t.variableValues, a, n.selectionSet);
switch (n.operation) {
case OperationTypeNode.QUERY: return executeFields$1(t, a, i, void 0, o);
case OperationTypeNode.MUTATION: return executeFieldsSerially$1(t, a, i, void 0, o);
case OperationTypeNode.SUBSCRIPTION: return executeFields$1(t, a, i, void 0, o);
}
}
function executeFieldsSerially$1(t, n, i, a, o) {
return promiseReduce$1(o.entries(), (o, [s, c]) => {
let d = addPath$1(a, s, n.name), f = executeField$1(t, n, i, c, d);
return f === void 0 ? o : isPromise$1(f) ? f.then((t) => (o[s] = t, o)) : (o[s] = f, o);
}, Object.create(null));
}
function executeFields$1(t, n, i, a, o) {
let s = Object.create(null), c = !1;
try {
for (let [d, f] of o.entries()) {
let o = addPath$1(a, d, n.name), g = executeField$1(t, n, i, f, o);
g !== void 0 && (s[d] = g, isPromise$1(g) && (c = !0));
}
} catch (t) {
if (c) return promiseForObject$1(s).finally(() => {
throw t;
});
throw t;
}
return c ? promiseForObject$1(s) : s;
}
function executeField$1(t, n, i, a, o) {
let s = getFieldDef$1(t.schema, n, a[0]);
if (!s) return;
let c = s.type, d = s.resolve ?? t.fieldResolver, f = buildResolveInfo$1(t, s, a, n, o);
try {
let n = getArgumentValues$1(s, a[0], t.variableValues), g = t.contextValue, b = d(i, n, g, f), x;
return x = isPromise$1(b) ? b.then((n) => completeValue$1(t, c, a, f, o, n)) : completeValue$1(t, c, a, f, o, b), isPromise$1(x) ? x.then(void 0, (n) => {
let i = locatedError(n, a, pathToArray$1(o));
return handleFieldError$1(i, c, t);
}) : x;
} catch (n) {
let i = locatedError(n, a, pathToArray$1(o));
return handleFieldError$1(i, c, t);
}
}
function buildResolveInfo$1(t, n, i, a, o) {
return {
fieldName: n.name,
fieldNodes: i,
returnType: n.type,
parentType: a,
path: o,
schema: t.schema,
fragments: t.fragments,
rootValue: t.rootValue,
operation: t.operation,
variableValues: t.variableValues
};
}
function handleFieldError$1(t, n, i) {
if (isNonNullType(n)) throw t;
return i.errors.push(t), null;
}
function completeValue$1(t, n, i, a, o, s) {
if (s instanceof Error) throw s;
if (isNonNullType(n)) {
let c = completeValue$1(t, n.ofType, i, a, o, s);
if (c === null) throw Error(`Cannot return null for non-nullable field ${a.parentType.name}.${a.fieldName}.`);
return c;
}
if (s == null) return null;
if (isListType(n)) return completeListValue$1(t, n, i, a, o, s);
if (isLeafType(n)) return completeLeafValue$1(n, s);
if (isAbstractType(n)) return completeAbstractValue$1(t, n, i, a, o, s);
if (isObjectType(n)) return completeObjectValue$1(t, n, i, a, o, s);
/* c8 ignore next 6 */
invariant$1(!1, "Cannot complete value of unexpected output type: " + inspect$1(n));
}
function completeListValue$1(t, n, i, a, o, s) {
if (!isIterableObject$1(s)) throw new GraphQLError(`Expected Iterable, but did not find one for field "${a.parentType.name}.${a.fieldName}".`);
let c = n.ofType, d = !1, f = Array.from(s, (n, s) => {
let f = addPath$1(o, s, void 0);
try {
let o;
return o = isPromise$1(n) ? n.then((n) => completeValue$1(t, c, i, a, f, n)) : completeValue$1(t, c, i, a, f, n), isPromise$1(o) ? (d = !0, o.then(void 0, (n) => {
let a = locatedError(n, i, pathToArray$1(f));
return handleFieldError$1(a, c, t);
})) : o;
} catch (n) {
let a = locatedError(n, i, pathToArray$1(f));
return handleFieldError$1(a, c, t);
}
});
return d ? Promise.all(f) : f;
}
function completeLeafValue$1(t, n) {
let i = t.serialize(n);
if (i == null) throw Error(`Expected \`${inspect$1(t)}.serialize(${inspect$1(n)})\` to return non-nullable value, returned: ${inspect$1(i)}`);
return i;
}
function completeAbstractValue$1(t, n, i, a, o, s) {
let c = n.resolveType ?? t.typeResolver, d = t.contextValue, f = c(s, d, a, n);
return isPromise$1(f) ? f.then((c) => completeObjectValue$1(t, ensureValidRuntimeType$1(c, t, n, i, a, s), i, a, o, s)) : completeObjectValue$1(t, ensureValidRuntimeType$1(f, t, n, i, a, s), i, a, o, s);
}
function ensureValidRuntimeType$1(t, n, i, a, o, s) {
if (t == null) throw new GraphQLError(`Abstract type "${i.name}" must resolve to an Object type at runtime for field "${o.parentType.name}.${o.fieldName}". Either the "${i.name}" type should provide a "resolveType" function or each possible type should provide an "isTypeOf" function.`, a);
if (isObjectType(t)) throw new GraphQLError("Support for returning GraphQLObjectType from resolveType was removed in graphql-js@16.0.0 please return type name instead.");
if (typeof t != "string") throw new GraphQLError(`Abstract type "${i.name}" must resolve to an Object type at runtime for field "${o.parentType.name}.${o.fieldName}" with value ${inspect$1(s)}, received "${inspect$1(t)}".`);
let c = n.schema.getType(t);
if (c == null) throw new GraphQLError(`Abstract type "${i.name}" was resolved to a type "${t}" that does not exist inside the schema.`, { nodes: a });
if (!isObjectType(c)) throw new GraphQLError(`Abstract type "${i.name}" was resolved to a non-object type "${t}".`, { nodes: a });
if (!n.schema.isSubType(i, c)) throw new GraphQLError(`Runtime Object type "${c.name}" is not a possible type for "${i.name}".`, { nodes: a });
return c;
}
function completeObjectValue$1(t, n, i, a, o, s) {
let c = collectSubfields$2(t, n, i);
if (n.isTypeOf) {
let d = n.isTypeOf(s, t.contextValue, a);
if (isPromise$1(d)) return d.then((a) => {
if (!a) throw invalidReturnTypeError$1(n, s, i);
return executeFields$1(t, n, s, o, c);
});
if (!d) throw invalidReturnTypeError$1(n, s, i);
}
return executeFields$1(t, n, s, o, c);
}
function invalidReturnTypeError$1(t, n, i) {
return new GraphQLError(`Expected value of type "${t.name}" but got: ${inspect$1(n)}.`, { nodes: i });
}
const defaultTypeResolver$1 = function(t, n, i, a) {
if (isObjectLike$1(t) && typeof t.__typename == "string") return t.__typename;
let o = i.schema.getPossibleTypes(a), s = [];
for (let a = 0; a < o.length; a++) {
let c = o[a];
if (c.isTypeOf) {
let o = c.isTypeOf(t, n, i);
if (isPromise$1(o)) s[a] = o;
else if (o) return s.length && Promise.allSettled(s).catch(() => {}), c.name;
}
}
if (s.length) return Promise.all(s).then((t) => {
for (let n = 0; n < t.length; n++) if (t[n]) return o[n].name;
});
}, defaultFieldResolver = function(t, n, i, a) {
if (isObjectLike$1(t) || typeof t == "function") {
let o = t[a.fieldName];
return typeof o == "function" ? t[a.fieldName](n, i, a) : o;
}
};
function getFieldDef$1(t, n, i) {
let a = i.name.value;
return a === SchemaMetaFieldDef.name && t.getQueryType() === n ? SchemaMetaFieldDef : a === TypeMetaFieldDef.name && t.getQueryType() === n ? TypeMetaFieldDef : a === TypeNameMetaFieldDef.name ? TypeNameMetaFieldDef : n.getFields()[a];
}
function getIntrospectionQuery(t) {
let n = {
descriptions: !0,
specifiedByUrl: !1,
directiveIsRepeatable: !1,
schemaDescription: !1,
inputValueDeprecation: !1,
oneOf: !1,
...t
}, i = n.descriptions ? "description" : "", a = n.specifiedByUrl ? "specifiedByURL" : "", o = n.directiveIsRepeatable ? "isRepeatable" : "", s = n.schemaDescription ? i : "";
function c(t) {
return n.inputValueDeprecation ? t : "";
}
let d = n.oneOf ? "isOneOf" : "";
return `
query IntrospectionQuery {
__schema {
${s}
queryType { name kind }
mutationType { name kind }
subscriptionType { name kind }
types {
...FullType
}
directives {
name
${i}
${o}
locations
args${c("(includeDeprecated: true)")} {
...InputValue
}
}
}
}
fragment FullType on __Type {
kind
name
${i}
${a}
${d}
fields(includeDeprecated: true) {
name
${i}
args${c("(includeDeprecated: true)")} {
...InputValue
}
type {
...TypeRef
}
isDeprecated
deprecationReason
}
inputFields${c("(includeDeprecated: true)")} {
...InputValue
}
interfaces {
...TypeRef
}
enumValues(includeDeprecated: true) {
name
${i}
isDeprecated
deprecationReason
}
possibleTypes {
...TypeRef
}
}
fragment InputValue on __InputValue {
name
${i}
type { ...TypeRef }
defaultValue
${c("isDeprecated")}
${c("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 getOperationAST(t, n) {
let i = null;
for (let a of t.definitions) if (a.kind === Kind.OPERATION_DEFINITION) {
if (n == null) {
if (i) return null;
i = a;
} else if (a.name?.value === n) return a;
}
return i;
}
function introspectionFromSchema(t, n) {
let i = {
specifiedByUrl: !0,
directiveIsRepeatable: !0,
schemaDescription: !0,
inputValueDeprecation: !0,
oneOf: !0,
...n
}, a = parse(getIntrospectionQuery(i)), o = executeSync({
schema: t,
document: a
});
return !o.errors && o.data || invariant$1(!1), o.data;
}
function buildClientSchema(t, n) {
isObjectLike$1(t) && isObjectLike$1(t.__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$1(t)}.`);
let i = t.__schema, a = keyValMap(i.types, (t) => t.name, (t) => S(t));
for (let t of [...specifiedScalarTypes, ...introspectionTypes]) a[t.name] && (a[t.name] = t);
let o = i.queryType ? b(i.queryType) : null, s = i.mutationType ? b(i.mutationType) : null, c = i.subscriptionType ? b(i.subscriptionType) : null, d = i.directives ? i.directives.map(XA) : [];
return new GraphQLSchema({
description: i.description,
query: o,
mutation: s,
subscription: c,
types: Object.values(a),
directives: d,
assumeValid: n?.assumeValid
});
function f(t) {
if (t.kind === TypeKind.LIST) {
let n = t.ofType;
if (!n) throw Error("Decorated type deeper than introspection query.");
return new GraphQLList(f(n));
}
if (t.kind === TypeKind.NON_NULL) {
let n = t.ofType;
if (!n) throw Error("Decorated type deeper than introspection query.");
let i = f(n);
return new GraphQLNonNull(assertNullableType(i));
}
return g(t);
}
function g(t) {
let n = t.name;
if (!n) throw Error(`Unknown type reference: ${inspect$1(t)}.`);
let i = a[n];
if (!i) throw Error(`Invalid or incomplete schema, unknown type: ${n}. Ensure that a full introspection query is used in order to build a client schema.`);
return i;
}
function b(t) {
return assertObjectType(g(t));
}
function x(t) {
return assertInterfaceType(g(t));
}
function S(t) {
if (t != null && t.name != null && t.kind != null) switch (t.kind) {
case TypeKind.SCALAR: return C(t);
case TypeKind.OBJECT: return E(t);
case TypeKind.INTERFACE: return O(t);
case TypeKind.UNION: return A(t);
case TypeKind.ENUM: return M(t);
case TypeKind.INPUT_OBJECT: return I(t);
}
let n = inspect$1(t);
throw Error(`Invalid or incomplete introspection result. Ensure that a full introspection query is used in order to build a client schema: ${n}.`);
}
function C(t) {
return new GraphQLScalarType({
name: t.name,
description: t.description,
specifiedByURL: t.specifiedByURL
});
}
function w(t) {
if (t.interfaces === null && t.kind === TypeKind.INTERFACE) return [];
if (!t.interfaces) {
let n = inspect$1(t);
throw Error(`Introspection result missing interfaces: ${n}.`);
}
return t.interfaces.map(x);
}
function E(t) {
return new GraphQLObjectType({
name: t.name,
description: t.description,
interfaces: () => w(t),
fields: () => R(t)
});
}
function O(t) {
return new GraphQLInterfaceType({
name: t.name,
description: t.description,
interfaces: () => w(t),
fields: () => R(t)
});
}
function A(t) {
if (!t.possibleTypes) {
let n = inspect$1(t);
throw Error(`Introspection result missing possibleTypes: ${n}.`);
}
return new GraphQLUnionType({
name: t.name,
description: t.description,
types: () => t.possibleTypes.map(b)
});
}
function M(t) {
if (!t.enumValues) {
let n = inspect$1(t);
throw Error(`Introspection result missing enumValues: ${n}.`);
}
return new GraphQLEnumType({
name: t.name,
description: t.description,
values: keyValMap(t.enumValues, (t) => t.name, (t) => ({
description: t.description,
deprecationReason: t.deprecationReason
}))
});
}
function I(t) {
if (!t.inputFields) {
let n = inspect$1(t);
throw Error(`Introspection result missing inputFields: ${n}.`);
}
return new GraphQLInputObjectType({
name: t.name,
description: t.description,
fields: () => q(t.inputFields),
isOneOf: t.isOneOf
});
}
function R(t) {
if (!t.fields) throw Error(`Introspection result missing fields: ${inspect$1(t)}.`);
return keyValMap(t.fields, (t) => t.name, qA);
}
function qA(t) {
let n = f(t.type);
if (!isOutputType(n)) {
let t = inspect$1(n);
throw Error(`Introspection must provide output type for fields, but received: ${t}.`);
}
if (!t.args) {
let n = inspect$1(t);
throw Error(`Introspection result missing field args: ${n}.`);
}
return {
description: t.description,
deprecationReason: t.deprecationReason,
type: n,
args: q(t.args)
};
}
function q(t) {
return keyValMap(t, (t) => t.name, YA);
}
function YA(t) {
let n = f(t.type);
if (!isInputType(n)) {
let t = inspect$1(n);
throw Error(`Introspection must provide input type for arguments, but received: ${t}.`);
}
let i = t.defaultValue == null ? void 0 : valueFromAST(parseValue(t.defaultValue), n);
return {
description: t.description,
type: n,
defaultValue: i,
deprecationReason: t.deprecationReason
};
}
function XA(t) {
if (!t.args) {
let n = inspect$1(t);
throw Error(`Introspection result missing directive args: ${n}.`);
}
if (!t.locations) {
let n = inspect$1(t);
throw Error(`Introspection result missing directive locations: ${n}.`);
}
return new GraphQLDirective({
name: t.name,
description: t.description,
isRepeatable: t.isRepeatable,
locations: t.locations.slice(),
args: q(t.args)
});
}
}
function stripIgnoredCharacters(t) {
let n = isSource(t) ? t : new Source(t), i = n.body, a = new Lexer(n), o = "", s = !1;
for (; a.advance().kind !== TokenKind.EOF;) {
let t = a.token, n = t.kind, c = !isPunctuatorTokenKind(t.kind);
s && (c || t.kind === TokenKind.SPREAD) && (o += " ");
let d = i.slice(t.start, t.end);
n === TokenKind.BLOCK_STRING ? o += printBlockString$1(t.value, { minimize: !0 }) : o += d, s = c;
}
return o;
}
function __insertCSS(t) {
if (!t || typeof document > "u") return;
let n = document.head || document.getElementsByTagName("head")[0], i = document.createElement("style");
i.type = "text/css", n.appendChild(i), i.styleSheet ? i.styleSheet.cssText = t : i.appendChild(document.createTextNode(t));
}
var getAsset = (t) => {
switch (t) {
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: t, className: n }) => /* @__PURE__ */ React.createElement("div", {
className: ["sonner-loading-wrapper", n].filter(Boolean).join(" "),
"data-visible": t
}, /* @__PURE__ */ React.createElement("div", { className: "sonner-spinner" }, bars.map((t, n) => /* @__PURE__ */ React.createElement("div", {
className: "sonner-loading-bar",
key: `spinner-bar-${n}`
})))), SuccessIcon = /* @__PURE__ */ React.createElement("svg", {
xmlns: "http://www.w3.org/2000/svg",
viewBox: "0 0 20 20",
fill: "currentColor",
height: "20",
width: "20"
}, /* @__PURE__ */ React.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__ */ React.createElement("svg", {
xmlns: "http://www.w3.org/2000/svg",
viewBox: "0 0 24 24",
fill: "currentColor",
height: "20",
width: "20"
}, /* @__PURE__ */ React.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__ */ React.createElement("svg", {
xmlns: "http://www.w3.org/2000/svg",
viewBox: "0 0 20 20",
fill: "currentColor",
height: "20",
width: "20"
}, /* @__PURE__ */ React.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__ */ React.createElement("svg", {
xmlns: "http://www.w3.org/2000/svg",
viewBox: "0 0 20 20",
fill: "currentColor",
height: "20",
width: "20"
}, /* @__PURE__ */ React.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__ */ React.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__ */ React.createElement("line", {
x1: "18",
y1: "6",
x2: "6",
y2: "18"
}), /* @__PURE__ */ React.createElement("line", {
x1: "6",
y1: "6",
x2: "18",
y2: "18"
})), useIsDocumentHidden = () => {
let [t, n] = React.useState(document.hidden);
return React.useEffect(() => {
let t = () => {
n(document.hidden);
};
return document.addEventListener("visibilitychange", t), () => window.removeEventListener("visibilitychange", t);
}, []), t;
}, toastsCounter = 1, ToastState = new class {
constructor() {
this.subscribe = (t) => (this.subscribers.push(t), () => {
let n = this.subscribers.indexOf(t);
this.subscribers.splice(n, 1);
}), this.publish = (t) => {
this.subscribers.forEach((n) => n(t));
}, this.addToast = (t) => {
this.publish(t), this.toasts = [...this.toasts, t];
}, this.create = (t) => {
let { message: n,...i } = t, a = typeof t?.id == "number" || t.id?.length > 0 ? t.id : toastsCounter++, o = this.toasts.find((t) => t.id === a), s = t.dismissible === void 0 ? !0 : t.dismissible;
return this.dismissedToasts.has(a) && this.dismissedToasts.delete(a), o ? this.toasts = this.toasts.map((i) => i.id === a ? (this.publish({
...i,
...t,
id: a,
title: n
}), {
...i,
...t,
id: a,
dismissible: s,
title: n
}) : i) : this.addToast({
title: n,
...i,
dismissible: s,
id: a
}), a;
}, this.dismiss = (t) => (t ? (this.dismissedToasts.add(t), requestAnimationFrame(() => this.subscribers.forEach((n) => n({
id: t,
dismiss: !0
})))) : this.toasts.forEach((t) => {
this.subscribers.forEach((n) => n({
id: t.id,
dismiss: !0
}));
}), t), this.message = (t, n) => this.create({
...n,
message: t
}), this.error = (t, n) => this.create({
...n,
message: t,
type: "error"
}), this.success = (t, n) => this.create({
...n,
type: "success",
message: t
}), this.info = (t, n) => this.create({
...n,
type: "info",
message: t
}), this.warning = (t, n) => this.create({
...n,
type: "warning",
message: t
}), this.loading = (t, n) => this.create({
...n,
type: "loading",
message: t
}), this.promise = (t, n) => {
if (!n) return;
let i;
n.loading !== void 0 && (i = this.create({
...n,
promise: t,
type: "loading",
message: n.loading,
description: typeof n.description == "function" ? void 0 : n.description
}));
let a = Promise.resolve(t instanceof Function ? t() : t), o = i !== void 0, s, c = a.then(async (t) => {
if (s = ["resolve", t], React.isValidElement(t)) o = !1, this.create({
id: i,
type: "default",
message: t
});
else if (isHttpResponse(t) && !t.ok) {
o = !1;
let a = typeof n.error == "function" ? await n.error(`HTTP error! status: ${t.status}`) : n.error, s = typeof n.description == "function" ? await n.description(`HTTP error! status: ${t.status}`) : n.description, c = typeof a == "object" && !React.isValidElement(a) ? a : { message: a };
this.create({
id: i,
type: "error",
description: s,
...c
});
} else if (t instanceof Error) {
o = !1;
let a = typeof n.error == "function" ? await n.error(t) : n.error, s = typeof n.description == "function" ? await n.description(t) : n.description, c = typeof a == "object" && !React.isValidElement(a) ? a : { message: a };
this.create({
id: i,
type: "error",
description: s,
...c
});
} else if (n.success !== void 0) {
o = !1;
let a = typeof n.success == "function" ? await n.success(t) : n.success, s = typeof n.description == "function" ? await n.description(t) : n.description, c = typeof a == "object" && !React.isValidElement(a) ? a : { message: a };
this.create({
id: i,
type: "success",
description: s,
...c
});
}
}).catch(async (t) => {
if (s = ["reject", t], n.error !== void 0) {
o = !1;
let a = typeof n.error == "function" ? await n.error(t) : n.error, s = typeof n.description == "function" ? await n.description(t) : n.description, c = typeof a == "object" && !React.isValidElement(a) ? a : { message: a };
this.create({
id: i,
type: "error",
description: s,
...c
});
}
}).finally(() => {
o && (this.dismiss(i), i = void 0), n.finally == null || n.finally.call(n);
}), d = () => new Promise((t, n) => c.then(() => s[0] === "reject" ? n(s[1]) : t(s[1])).catch(n));
return typeof i != "string" && typeof i != "number" ? { unwrap: d } : Object.assign(i, { unwrap: d });
}, this.custom = (t, n) => {
let i = n?.id || toastsCounter++;
return this.create({
jsx: t(i),
id: i,
...n
}), i;
}, this.getActiveToasts = () => this.toasts.filter((t) => !this.dismissedToasts.has(t.id)), this.subscribers = [], this.toasts = [], this.dismissedToasts = /* @__PURE__ */ new Set();
}
}(), toastFunction = (t, n) => {
let i = n?.id || toastsCounter++;
return ToastState.addToast({
title: t,
...n,
id: i
}), i;
}, isHttpResponse = (t) => t && typeof t == "object" && "ok" in t && typeof t.ok == "boolean" && "status" in t && typeof t.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(t) {
return t.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(...t) {
return t.filter(Boolean).join(" ");
}
function getDefaultSwipeDirections(t) {
let [n, i] = t.split("-"), a = [];
return n && a.push(n), i && a.push(i), a;
}
var Toast = (t) => {
let { invert: n, toast: i, unstyled: a, interacting: o, setHeights: s, visibleToasts: c, heights: d, index: f, toasts: g, expanded: b, removeToast: x, defaultRichColors: S, closeButton: C, style: w, cancelButtonStyle: E, actionButtonStyle: O, className: A = "", descriptionClassName: M = "", duration: F, position: I, gap: R, expandByDefault: qA, classNames: V, icons: q, closeButtonAriaLabel: JA = "Close toast" } = t, [YA, XA] = React.useState(null), [ZA, QA] = React.useState(null), [$A, ej] = React.useState(!1), [tj, nj] = React.useState(!1), [rj, ij] = React.useState(!1), [aj, oj] = React.useState(!1), [sj, cj] = React.useState(!1), [lj, uj] = React.useState(0), [dj, fj] = React.useState(0), pj = React.useRef(i.duration || F || TOAST_LIFETIME), mj = React.useRef(null), hj = React.useRef(null), gj = f === 0, _j = f + 1 <= c, vj = i.type, yj = i.dismissible !== !1, bj = i.className || "", xj = i.descriptionClassName || "", Sj = React.useMemo(() => d.findIndex((t) => t.toastId === i.id) || 0, [d, i.id]), Cj = React.useMemo(() => i.closeButton ?? C, [i.closeButton, C]), wj = React.useMemo(() => i.duration || F || TOAST_LIFETIME, [i.duration, F]), Tj = React.useRef(0), Ej = React.useRef(0), Dj = React.useRef(0), Oj = React.useRef(null), [kj, Aj] = I.split("-"), jj = React.useMemo(() => d.reduce((t, n, i) => i >= Sj ? t : t + n.height, 0), [d, Sj]), Mj = useIsDocumentHidden(), Nj = i.invert || n, Pj = vj === "loading";
Ej.current = React.useMemo(() => Sj * R + jj, [Sj, jj]), React.useEffect(() => {
pj.current = wj;
}, [wj]), React.useEffect(() => {
ej(!0);
}, []), React.useEffect(() => {
let t = hj.current;
if (t) {
let n = t.getBoundingClientRect().height;
return fj(n), s((t) => [{
toastId: i.id,
height: n,
position: i.position
}, ...t]), () => s((t) => t.filter((t) => t.toastId !== i.id));
}
}, [s, i.id]), React.useLayoutEffect(() => {
if (!$A) return;
let t = hj.current, n = t.style.height;
t.style.height = "auto";
let a = t.getBoundingClientRect().height;
t.style.height = n, fj(a), s((t) => t.find((t) => t.toastId === i.id) ? t.map((t) => t.toastId === i.id ? {
...t,
height: a
} : t) : [{
toastId: i.id,
height: a,
position: i.position
}, ...t]);
}, [
$A,
i.title,
i.description,
s,
i.id,
i.jsx,
i.action,
i.cancel
]);
let Fj = React.useCallback(() => {
nj(!0), uj(Ej.current), s((t) => t.filter((t) => t.toastId !== i.id)), setTimeout(() => {
x(i);
}, TIME_BEFORE_UNMOUNT);
}, [
i,
x,
s,
Ej
]);
React.useEffect(() => {
if (i.promise && vj === "loading" || i.duration === Infinity || i.type === "loading") return;
let t;
return b || o || Mj ? (() => {
if (Dj.current < Tj.current) {
let t = (/* @__PURE__ */ new Date()).getTime() - Tj.current;
pj.current -= t;
}
Dj.current = (/* @__PURE__ */ new Date()).getTime();
})() : pj.current !== Infinity && (Tj.current = (/* @__PURE__ */ new Date()).getTime(), t = setTimeout(() => {
i.onAutoClose == null || i.onAutoClose.call(i, i), Fj();
}, pj.current)), () => clearTimeout(t);
}, [
b,
o,
i,
vj,
Mj,
Fj
]), React.useEffect(() => {
i.delete && (Fj(), i.onDismiss == null || i.onDismiss.call(i, i));
}, [Fj, i.delete]);
function Ij() {
return q?.loading ? /* @__PURE__ */ React.createElement("div", {
className: cn$1(V?.loader, i?.classNames?.loader, "sonner-loader"),
"data-visible": vj === "loading"
}, q.loading) : /* @__PURE__ */ React.createElement(Loader, {
className: cn$1(V?.loader, i?.classNames?.loader),
visible: vj === "loading"
});
}
let Lj = i.icon || q?.[vj] || getAsset(vj);
return /* @__PURE__ */ React.createElement("li", {
tabIndex: 0,
ref: hj,
className: cn$1(A, bj, V?.toast, i?.classNames?.toast, V?.default, V?.[vj], i?.classNames?.[vj]),
"data-sonner-toast": "",
"data-rich-colors": i.richColors ?? S,
"data-styled": !(i.jsx || i.unstyled || a),
"data-mounted": $A,
"data-promise": !!i.promise,
"data-swiped": sj,
"data-removed": tj,
"data-visible": _j,
"data-y-position": kj,
"data-x-position": Aj,
"data-index": f,
"data-front": gj,
"data-swiping": rj,
"data-dismissible": yj,
"data-type": vj,
"data-invert": Nj,
"data-swipe-out": aj,
"data-swipe-direction": ZA,
"data-expanded": !!(b || qA && $A),
"data-testid": i.testId,
style: {
"--index": f,
"--toasts-before": f,
"--z-index": g.length - f,
"--offset": `${tj ? lj : Ej.current}px`,
"--initial-height": qA ? "auto" : `${dj}px`,
...w,
...i.style
},
onDragEnd: () => {
ij(!1), XA(null), Oj.current = null;
},
onPointerDown: (t) => {
t.button !== 2 && (Pj || !yj || (mj.current = /* @__PURE__ */ new Date(), uj(Ej.current), t.target.setPointerCapture(t.pointerId), t.target.tagName !== "BUTTON" && (ij(!0), Oj.current = {
x: t.clientX,
y: t.clientY
})));
},
onPointerUp: () => {
if (aj || !yj) return;
Oj.current = null;
let t = Number(hj.current?.style.getPropertyValue("--swipe-amount-x").replace("px", "") || 0), n = Number(hj.current?.style.getPropertyValue("--swipe-amount-y").replace("px", "") || 0), a = (/* @__PURE__ */ new Date()).getTime() - mj.current?.getTime(), o = YA === "x" ? t : n, s = Math.abs(o) / a;
if (Math.abs(o) >= SWIPE_THRESHOLD || s > .11) {
uj(Ej.current), i.onDismiss == null || i.onDismiss.call(i, i), QA(YA === "x" ? t > 0 ? "right" : "left" : n > 0 ? "down" : "up"), Fj(), oj(!0);
return;
} else {
var c, d;
(c = hj.current) == null || c.style.setProperty("--swipe-amount-x", "0px"), (d = hj.current) == null || d.style.setProperty("--swipe-amount-y", "0px");
}
cj(!1), ij(!1), XA(null);
},
onPointerMove: (n) => {
var i, a;
if (!Oj.current || !yj || window.getSelection()?.toString().length > 0) return;
let o = n.clientY - Oj.current.y, s = n.clientX - Oj.current.x, c = t.swipeDirections ?? getDefaultSwipeDirections(I);
!YA && (Math.abs(s) > 1 || Math.abs(o) > 1) && XA(Math.abs(s) > Math.abs(o) ? "x" : "y");
let d = {
x: 0,
y: 0
}, f = (t) => 1 / (1.5 + Math.abs(t) / 20);
if (YA === "y") {
if (c.includes("top") || c.includes("bottom")) if (c.includes("top") && o < 0 || c.includes("bottom") && o > 0) d.y = o;
else {
let t = o * f(o);
d.y = Math.abs(t) < Math.abs(o) ? t : o;
}
} else if (YA === "x" && (c.includes("left") || c.includes("right"))) if (c.includes("left") && s < 0 || c.includes("right") && s > 0) d.x = s;
else {
let t = s * f(s);
d.x = Math.abs(t) < Math.abs(s) ? t : s;
}
(Math.abs(d.x) > 0 || Math.abs(d.y) > 0) && cj(!0), (i = hj.current) == null || i.style.setProperty("--swipe-amount-x", `${d.x}px`), (a = hj.current) == null || a.style.setProperty("--swipe-amount-y", `${d.y}px`);
}
}, Cj && !i.jsx && vj !== "loading" ? /* @__PURE__ */ React.createElement("button", {
"aria-label": JA,
"data-disabled": Pj,
"data-close-button": !0,
onClick: Pj || !yj ? () => {} : () => {
Fj(), i.onDismiss == null || i.onDismiss.call(i, i);
},
className: cn$1(V?.closeButton, i?.classNames?.closeButton)
}, q?.close ?? CloseIcon) : null, (vj || i.icon || i.promise) && i.icon !== null && (q?.[vj] !== null || i.icon) ? /* @__PURE__ */ React.createElement("div", {
"data-icon": "",
className: cn$1(V?.icon, i?.classNames?.icon)
}, i.promise || i.type === "loading" && !i.icon ? i.icon || Ij() : null, i.type === "loading" ? null : Lj) : null, /* @__PURE__ */ React.createElement("div", {
"data-content": "",
className: cn$1(V?.content, i?.classNames?.content)
}, /* @__PURE__ */ React.createElement("div", {
"data-title": "",
className: cn$1(V?.title, i?.classNames?.title)
}, i.jsx ? i.jsx : typeof i.title == "function" ? i.title() : i.title), i.description ? /* @__PURE__ */ React.createElement("div", {
"data-description": "",
className: cn$1(M, xj, V?.description, i?.classNames?.description)
}, typeof i.description == "function" ? i.description() : i.description) : null), /* @__PURE__ */ React.isValidElement(i.cancel) ? i.cancel : i.cancel && isAction(i.cancel) ? /* @__PURE__ */ React.createElement("button", {
"data-button": !0,
"data-cancel": !0,
style: i.cancelButtonStyle || E,
onClick: (t) => {
isAction(i.cancel) && yj && (i.cancel.onClick == null || i.cancel.onClick.call(i.cancel, t), Fj());
},
className: cn$1(V?.cancelButton, i?.classNames?.cancelButton)
}, i.cancel.label) : null, /* @__PURE__ */ React.isValidElement(i.action) ? i.action : i.action && isAction(i.action) ? /* @__PURE__ */ React.createElement("button", {
"data-button": !0,
"data-action": !0,
style: i.actionButtonStyle || O,
onClick: (t) => {
isAction(i.action) && (i.action.onClick == null || i.action.onClick.call(i.action, t), !t.defaultPrevented && Fj());
},
className: cn$1(V?.actionButton, i?.classNames?.actionButton)
}, i.action.label) : null);
};
function getDocumentDirection() {
if (typeof window > "u" || typeof document > "u") return "ltr";
let t = document.documentElement.getAttribute("dir");
return t === "auto" || !t ? window.getComputedStyle(document.documentElement).direction : t;
}
function assignOffset(t, n) {
let i = {};
return [t, n].forEach((t, n) => {
let a = n === 1, o = a ? "--mobile-offset" : "--offset", s = a ? MOBILE_VIEWPORT_OFFSET : VIEWPORT_OFFSET;
function c(t) {
[
"top",
"right",
"bottom",
"left"
].forEach((n) => {
i[`${o}-${n}`] = typeof t == "number" ? `${t}px` : t;
});
}
typeof t == "number" || typeof t == "string" ? c(t) : typeof t == "object" ? [
"top",
"right",
"bottom",
"left"
].forEach((n) => {
t[n] === void 0 ? i[`${o}-${n}`] = s : i[`${o}-${n}`] = typeof t[n] == "number" ? `${t[n]}px` : t[n];
}) : c(s);
}), i;
}
var Toaster$1 = /* @__PURE__ */ React.forwardRef(function(t, n) {
let { id: i, invert: a, position: o = "bottom-right", hotkey: s = ["altKey", "KeyT"], expand: c, closeButton: d, className: f, offset: g, mobileOffset: b, theme: x = "light", richColors: S, duration: C, style: w, visibleToasts: E = VISIBLE_TOASTS_AMOUNT, toastOptions: O, dir: A = getDocumentDirection(), gap: M = GAP, icons: F, containerAriaLabel: I = "Notifications" } = t, [R, qA] = React.useState([]), V = React.useMemo(() => i ? R.filter((t) => t.toasterId === i) : R.filter((t) => !t.toasterId), [R, i]), q = React.useMemo(() => Array.from(new Set([o].concat(V.filter((t) => t.position).map((t) => t.position)))), [V, o]), [JA, YA] = React.useState([]), [XA, ZA] = React.useState(!1), [QA, $A] = React.useState(!1), [ej, tj] = React.useState(x === "system" ? typeof window < "u" && window.matchMedia && window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light" : x), nj = React.useRef(null), rj = s.join("+").replace(/Key/g, "").replace(/Digit/g, ""), ij = React.useRef(null), aj = React.useRef(!1), oj = React.useCallback((t) => {
qA((n) => (n.find((n) => n.id === t.id)?.delete || ToastState.dismiss(t.id), n.filter(({ id: n }) => n !== t.id)));
}, []);
return React.useEffect(() => ToastState.subscribe((t) => {
if (t.dismiss) {
requestAnimationFrame(() => {
qA((n) => n.map((n) => n.id === t.id ? {
...n,
delete: !0
} : n));
});
return;
}
setTimeout(() => {
ReactDOM$1.flushSync(() => {
qA((n) => {
let i = n.findIndex((n) => n.id === t.id);
return i === -1 ? [t, ...n] : [
...n.slice(0, i),
{
...n[i],
...t
},
...n.slice(i + 1)
];
});
});
});
}), [R]), React.useEffect(() => {
if (x !== "system") {
tj(x);
return;
}
if (x === "system" && (window.matchMedia && window.matchMedia("(prefers-color-scheme: dark)").matches ? tj("dark") : tj("light")), typeof window > "u") return;
let t = window.matchMedia("(prefers-color-scheme: dark)");
try {
t.addEventListener("change", ({ matches: t }) => {
tj(t ? "dark" : "light");
});
} catch {
t.addListener(({ matches: t }) => {
try {
tj(t ? "dark" : "light");
} catch (t) {
console.error(t);
}
});
}
}, [x]), React.useEffect(() => {
R.length <= 1 && ZA(!1);
}, [R]), React.useEffect(() => {
let t = (t) => {
if (s.every((n) => t[n] || t.code === n)) {
var n;
ZA(!0), (n = nj.current) == null || n.focus();
}
t.code === "Escape" && (document.activeElement === nj.current || nj.current?.contains(document.activeElement)) && ZA(!1);
};
return document.addEventListener("keydown", t), () => document.removeEventListener("keydown", t);
}, [s]), React.useEffect(() => {
if (nj.current) return () => {
ij.current && (ij.current.focus({ preventScroll: !0 }), ij.current = null, aj.current = !1);
};
}, [nj.current]), /* @__PURE__ */ React.createElement("section", {
ref: n,
"aria-label": `${I} ${rj}`,
tabIndex: -1,
"aria-live": "polite",
"aria-relevant": "additions text",
"aria-atomic": "false",
suppressHydrationWarning: !0
}, q.map((n, i) => {
let [o, s] = n.split("-");
return V.length ? /* @__PURE__ */ React.createElement("ol", {
key: n,
dir: A === "auto" ? getDocumentDirection() : A,
tabIndex: -1,
ref: nj,
className: f,
"data-sonner-toaster": !0,
"data-sonner-theme": ej,
"data-y-position": o,
"data-x-position": s,
style: {
"--front-toast-height": `${JA[0]?.height || 0}px`,
"--width": `${TOAST_WIDTH}px`,
"--gap": `${M}px`,
...w,
...assignOffset(g, b)
},
onBlur: (t) => {
aj.current && !t.currentTarget.contains(t.relatedTarget) && (aj.current = !1, ij.current &&= (ij.current.focus({ preventScroll: !0 }), null));
},
onFocus: (t) => {
t.target instanceof HTMLElement && t.target.dataset.dismissible === "false" || aj.current || (aj.current = !0, ij.current = t.relatedTarget);
},
onMouseEnter: () => ZA(!0),
onMouseMove: () => ZA(!0),
onMouseLeave: () => {
QA || ZA(!1);
},
onDragEnd: () => ZA(!1),
onPointerDown: (t) => {
t.target instanceof HTMLElement && t.target.dataset.dismissible === "false" || $A(!0);
},
onPointerUp: () => $A(!1)
}, V.filter((t) => !t.position && i === 0 || t.position === n).map((i, o) => /* @__PURE__ */ React.createElement(Toast, {
key: i.id,
icons: F,
index: o,
toast: i,
defaultRichColors: S,
duration: O?.duration ?? C,
className: O?.className,
descriptionClassName: O?.descriptionClassName,
invert: a,
visibleToasts: E,
closeButton: O?.closeButton ?? d,
interacting: QA,
position: n,
style: O?.style,
unstyled: O?.unstyled,
classNames: O?.classNames,
cancelButtonStyle: O?.cancelButtonStyle,
actionButtonStyle: O?.actionButtonStyle,
closeButtonAriaLabel: O?.closeButtonAriaLabel,
removeToast: oj,
toasts: V.filter((t) => t.position == i.position),
heights: JA.filter((t) => t.position == i.position),
setHeights: YA,
expandByDefault: c,
gap: M,
expanded: XA,
swipeDirections: t.swipeDirections
}))) : null;
}));
});
function r(t) {
var n, i, a = "";
if (typeof t == "string" || typeof t == "number") a += t;
else if (typeof t == "object") if (Array.isArray(t)) {
var o = t.length;
for (n = 0; n < o; n++) t[n] && (i = r(t[n])) && (a && (a += " "), a += i);
} else for (i in t) t[i] && (a && (a += " "), a += i);
return a;
}
function clsx() {
for (var t, n, i = 0, a = "", o = arguments.length; i < o; i++) (t = arguments[i]) && (n = r(t)) && (a && (a += " "), a += n);
return a;
}
var concatArrays = (t, n) => {
let i = Array(t.length + n.length);
for (let n = 0; n < t.length; n++) i[n] = t[n];
for (let a = 0; a < n.length; a++) i[t.length + a] = n[a];
return i;
}, createClassValidatorObject = (t, n) => ({
classGroupId: t,
validator: n
}), createClassPartObject = (t = /* @__PURE__ */ new Map(), n = null, i) => ({
nextPart: t,
validators: n,
classGroupId: i
}), CLASS_PART_SEPARATOR = "-", EMPTY_CONFLICTS = [], ARBITRARY_PROPERTY_PREFIX = "arbitrary..", createClassGroupUtils = (t) => {
let n = createClassMap(t), { conflictingClassGroups: i, conflictingClassGroupModifiers: a } = t;
return {
getClassGroupId: (t) => {
if (t.startsWith("[") && t.endsWith("]")) return getGroupIdForArbitraryProperty(t);
let i = t.split(CLASS_PART_SEPARATOR), a = i[0] === "" && i.length > 1 ? 1 : 0;
return getGroupRecursive(i, a, n);
},
getConflictingClassGroupIds: (t, n) => {
if (n) {
let n = a[t], o = i[t];
return n ? o ? concatArrays(o, n) : n : o || EMPTY_CONFLICTS;
}
return i[t] || EMPTY_CONFLICTS;
}
};
}, getGroupRecursive = (t, n, i) => {
if (t.length - n === 0) return i.classGroupId;
let a = t[n], o = i.nextPart.get(a);
if (o) {
let i = getGroupRecursive(t, n + 1, o);
if (i) return i;
}
let s = i.validators;
if (s === null) return;
let c = n === 0 ? t.join(CLASS_PART_SEPARATOR) : t.slice(n).join(CLASS_PART_SEPARATOR), d = s.length;
for (let t = 0; t < d; t++) {
let n = s[t];
if (n.validator(c)) return n.classGroupId;
}
}, getGroupIdForArbitraryProperty = (t) => t.slice(1, -1).indexOf(":") === -1 ? void 0 : (() => {
let n = t.slice(1, -1), i = n.indexOf(":"), a = n.slice(0, i);
return a ? ARBITRARY_PROPERTY_PREFIX + a : void 0;
})(), createClassMap = (t) => {
let { theme: n, classGroups: i } = t;
return processClassGroups(i, n);
}, processClassGroups = (t, n) => {
let i = createClassPartObject();
for (let a in t) {
let o = t[a];
processClassesRecursively(o, i, a, n);
}
return i;
}, processClassesRecursively = (t, n, i, a) => {
let o = t.length;
for (let s = 0; s < o; s++) {
let o = t[s];
processClassDefinition(o, n, i, a);
}
}, processClassDefinition = (t, n, i, a) => {
if (typeof t == "string") {
processStringDefinition(t, n, i);
return;
}
if (typeof t == "function") {
processFunctionDefinition(t, n, i, a);
return;
}
processObjectDefinition(t, n, i, a);
}, processStringDefinition = (t, n, i) => {
let a = t === "" ? n : getPart(n, t);
a.classGroupId = i;
}, processFunctionDefinition = (t, n, i, a) => {
if (isThemeGetter(t)) {
processClassesRecursively(t(a), n, i, a);
return;
}
n.validators === null && (n.validators = []), n.validators.push(createClassValidatorObject(i, t));
}, processObjectDefinition = (t, n, i, a) => {
let o = Object.entries(t), s = o.length;
for (let t = 0; t < s; t++) {
let [s, c] = o[t];
processClassesRecursively(c, getPart(n, s), i, a);
}
}, getPart = (t, n) => {
let i = t, a = n.split(CLASS_PART_SEPARATOR), o = a.length;
for (let t = 0; t < o; t++) {
let n = a[t], o = i.nextPart.get(n);
o || (o = createClassPartObject(), i.nextPart.set(n, o)), i = o;
}
return i;
}, isThemeGetter = (t) => "isThemeGetter" in t && t.isThemeGetter === !0, createLruCache = (t) => {
if (t < 1) return {
get: () => void 0,
set: () => {}
};
let n = 0, i = Object.create(null), a = Object.create(null), o = (o, s) => {
i[o] = s, n++, n > t && (n = 0, a = i, i = Object.create(null));
};
return {
get(t) {
let n = i[t];
if (n !== void 0) return n;
if ((n = a[t]) !== void 0) return o(t, n), n;
},
set(t, n) {
t in i ? i[t] = n : o(t, n);
}
};
}, IMPORTANT_MODIFIER = "!", MODIFIER_SEPARATOR = ":", EMPTY_MODIFIERS = [], createResultObject = (t, n, i, a, o) => ({
modifiers: t,
hasImportantModifier: n,
baseClassName: i,
maybePostfixModifierPosition: a,
isExternal: o
}), createParseClassName = (t) => {
let { prefix: n, experimentalParseClassName: i } = t, a = (t) => {
let n = [], i = 0, a = 0, o = 0, s, c = t.length;
for (let d = 0; d < c; d++) {
let c = t[d];
if (i === 0 && a === 0) {
if (c === MODIFIER_SEPARATOR) {
n.push(t.slice(o, d)), o = d + 1;
continue;
}
if (c === "/") {
s = d;
continue;
}
}
c === "[" ? i++ : c === "]" ? i-- : c === "(" ? a++ : c === ")" && a--;
}
let d = n.length === 0 ? t : t.slice(o), f = d, g = !1;
d.endsWith(IMPORTANT_MODIFIER) ? (f = d.slice(0, -1), g = !0) : d.startsWith(IMPORTANT_MODIFIER) && (f = d.slice(1), g = !0);
let b = s && s > o ? s - o : void 0;
return createResultObject(n, g, f, b);
};
if (n) {
let t = n + MODIFIER_SEPARATOR, i = a;
a = (n) => n.startsWith(t) ? i(n.slice(t.length)) : createResultObject(EMPTY_MODIFIERS, !1, n, void 0, !0);
}
if (i) {
let t = a;
a = (n) => i({
className: n,
parseClassName: t
});
}
return a;
}, createSortModifiers = (t) => {
let n = /* @__PURE__ */ new Map();
return t.orderSensitiveModifiers.forEach((t, i) => {
n.set(t, 1e6 + i);
}), (t) => {
let i = [], a = [];
for (let o = 0; o < t.length; o++) {
let s = t[o], c = s[0] === "[", d = n.has(s);
c || d ? (a.length > 0 && (a.sort(), i.push(...a), a = []), i.push(s)) : a.push(s);
}
return a.length > 0 && (a.sort(), i.push(...a)), i;
};
}, createConfigUtils = (t) => ({
cache: createLruCache(t.cacheSize),
parseClassName: createParseClassName(t),
sortModifiers: createSortModifiers(t),
...createClassGroupUtils(t)
}), SPLIT_CLASSES_REGEX = /\s+/, mergeClassList = (t, n) => {
let { parseClassName: i, getClassGroupId: a, getConflictingClassGroupIds: o, sortModifiers: s } = n, c = [], d = t.trim().split(SPLIT_CLASSES_REGEX), f = "";
for (let t = d.length - 1; t >= 0; --t) {
let n = d[t], { isExternal: g, modifiers: b, hasImportantModifier: x, baseClassName: S, maybePostfixModifierPosition: C } = i(n);
if (g) {
f = n + (f.length > 0 ? " " + f : f);
continue;
}
let w = !!C, E = a(w ? S.substring(0, C) : S);
if (!E) {
if (!w) {
f = n + (f.length > 0 ? " " + f : f);
continue;
}
if (E = a(S), !E) {
f = n + (f.length > 0 ? " " + f : f);
continue;
}
w = !1;
}
let O = b.length === 0 ? "" : b.length === 1 ? b[0] : s(b).join(":"), A = x ? O + IMPORTANT_MODIFIER : O, M = A + E;
if (c.indexOf(M) > -1) continue;
c.push(M);
let F = o(E, w);
for (let t = 0; t < F.length; ++t) {
let n = F[t];
c.push(A + n);
}
f = n + (f.length > 0 ? " " + f : f);
}
return f;
}, twJoin = (...t) => {
let n = 0, i, a, o = "";
for (; n < t.length;) (i = t[n++]) && (a = toValue(i)) && (o && (o += " "), o += a);
return o;
}, toValue = (t) => {
if (typeof t == "string") return t;
let n, i = "";
for (let a = 0; a < t.length; a++) t[a] && (n = toValue(t[a])) && (i && (i += " "), i += n);
return i;
}, createTailwindMerge = (t, ...n) => {
let i, a, o, s, c = (c) => {
let f = n.reduce((t, n) => n(t), t());
return i = createConfigUtils(f), a = i.cache.get, o = i.cache.set, s = d, d(c);
}, d = (t) => {
let n = a(t);
if (n) return n;
let s = mergeClassList(t, i);
return o(t, s), s;
};
return s = c, (...t) => s(twJoin(...t));
}, fallbackThemeArr = [], fromTheme = (t) => {
let n = (n) => n[t] || fallbackThemeArr;
return n.isThemeGetter = !0, n;
}, 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 = (t) => fractionRegex.test(t), isNumber = (t) => !!t && !Number.isNaN(Number(t)), isInteger = (t) => !!t && Number.isInteger(Number(t)), isPercent = (t) => t.endsWith("%") && isNumber(t.slice(0, -1)), isTshirtSize = (t) => tshirtUnitRegex.test(t), isAny = () => !0, isLengthOnly = (t) => lengthUnitRegex.test(t) && !colorFunctionRegex.test(t), isNever = () => !1, isShadow = (t) => shadowRegex.test(t), isImage = (t) => imageRegex.test(t), isAnyNonArbitrary = (t) => !isArbitraryValue(t) && !isArbitraryVariable(t), isArbitrarySize = (t) => getIsArbitraryValue(t, isLabelSize, isNever), isArbitraryValue = (t) => arbitraryValueRegex.test(t), isArbitraryLength = (t) => getIsArbitraryValue(t, isLabelLength, isLengthOnly), isArbitraryNumber = (t) => getIsArbitraryValue(t, isLabelNumber, isNumber), isArbitraryPosition = (t) => getIsArbitraryValue(t, isLabelPosition, isNever), isArbitraryImage = (t) => getIsArbitraryValue(t, isLabelImage, isImage), isArbitraryShadow = (t) => getIsArbitraryValue(t, isLabelShadow, isShadow), isArbitraryVariable = (t) => arbitraryVariableRegex.test(t), isArbitraryVariableLength = (t) => getIsArbitraryVariable(t, isLabelLength), isArbitraryVariableFamilyName = (t) => getIsArbitraryVariable(t, isLabelFamilyName), isArbitraryVariablePosition = (t) => getIsArbitraryVariable(t, isLabelPosition), isArbitraryVariableSize = (t) => getIsArbitraryVariable(t, isLabelSize), isArbitraryVariableImage = (t) => getIsArbitraryVariable(t, isLabelImage), isArbitraryVariableShadow = (t) => getIsArbitraryVariable(t, isLabelShadow, !0), getIsArbitraryValue = (t, n, i) => {
let a = arbitraryValueRegex.exec(t);
return a ? a[1] ? n(a[1]) : i(a[2]) : !1;
}, getIsArbitraryVariable = (t, n, i = !1) => {
let a = arbitraryVariableRegex.exec(t);
return a ? a[1] ? n(a[1]) : i : !1;
}, isLabelPosition = (t) => t === "position" || t === "percentage", isLabelImage = (t) => t === "image" || t === "url", isLabelSize = (t) => t === "length" || t === "size" || t === "bg-size", isLabelLength = (t) => t === "length", isLabelNumber = (t) => t === "number", isLabelFamilyName = (t) => t === "family-name", isLabelShadow = (t) => t === "shadow", twMerge = /* @__PURE__ */ createTailwindMerge(() => {
let t = fromTheme("color"), n = fromTheme("font"), i = fromTheme("text"), a = fromTheme("font-weight"), o = fromTheme("tracking"), s = fromTheme("leading"), c = fromTheme("breakpoint"), d = fromTheme("container"), f = fromTheme("spacing"), g = fromTheme("radius"), b = fromTheme("shadow"), x = fromTheme("inset-shadow"), S = fromTheme("text-shadow"), C = fromTheme("drop-shadow"), w = fromTheme("blur"), E = fromTheme("perspective"), O = fromTheme("aspect"), A = fromTheme("ease"), M = fromTheme("animate"), F = () => [
"auto",
"avoid",
"all",
"avoid-page",
"page",
"left",
"right",
"column"
], I = () => [
"center",
"top",
"bottom",
"left",
"right",
"top-left",
"left-top",
"top-right",
"right-top",
"bottom-right",
"right-bottom",
"bottom-left",
"left-bottom"
], R = () => [
...I(),
isArbitraryVariable,
isArbitraryValue
], qA = () => [
"auto",
"hidden",
"clip",
"visible",
"scroll"
], V = () => [
"auto",
"contain",
"none"
], q = () => [
isArbitraryVariable,
isArbitraryValue,
f
], JA = () => [
isFraction,
"full",
"auto",
...q()
], YA = () => [
isInteger,
"none",
"subgrid",
isArbitraryVariable,
isArbitraryValue
], XA = () => [
"auto",
{ span: [
"full",
isInteger,
isArbitraryVariable,
isArbitraryValue
] },
isInteger,
isArbitraryVariable,
isArbitraryValue
], ZA = () => [
isInteger,
"auto",
isArbitraryVariable,
isArbitraryValue
], QA = () => [
"auto",
"min",
"max",
"fr",
isArbitraryVariable,
isArbitraryValue
], $A = () => [
"start",
"end",
"center",
"between",
"around",
"evenly",
"stretch",
"baseline",
"center-safe",
"end-safe"
], ej = () => [
"start",
"end",
"center",
"stretch",
"center-safe",
"end-safe"
], tj = () => ["auto", ...q()], nj = () => [
isFraction,
"auto",
"full",
"dvw",
"dvh",
"lvw",
"lvh",
"svw",
"svh",
"min",
"max",
"fit",
...q()
], rj = () => [
t,
isArbitraryVariable,
isArbitraryValue
], ij = () => [
...I(),
isArbitraryVariablePosition,
isArbitraryPosition,
{ position: [isArbitraryVariable, isArbitraryValue] }
], aj = () => ["no-repeat", { repeat: [
"",
"x",
"y",
"space",
"round"
] }], oj = () => [
"auto",
"cover",
"contain",
isArbitraryVariableSize,
isArbitrarySize,
{ size: [isArbitraryVariable, isArbitraryValue] }
], sj = () => [
isPercent,
isArbitraryVariableLength,
isArbitraryLength
], cj = () => [
"",
"none",
"full",
g,
isArbitraryVariable,
isArbitraryValue
], lj = () => [
"",
isNumber,
isArbitraryVariableLength,
isArbitraryLength
], uj = () => [
"solid",
"dashed",
"dotted",
"double"
], dj = () => [
"normal",
"multiply",
"screen",
"overlay",
"darken",
"lighten",
"color-dodge",
"color-burn",
"hard-light",
"soft-light",
"difference",
"exclusion",
"hue",
"saturation",
"color",
"luminosity"
], fj = () => [
isNumber,
isPercent,
isArbitraryVariablePosition,
isArbitraryPosition
], pj = () => [
"",
"none",
w,
isArbitraryVariable,
isArbitraryValue
], mj = () => [
"none",
isNumber,
isArbitraryVariable,
isArbitraryValue
], hj = () => [
"none",
isNumber,
isArbitraryVariable,
isArbitraryValue
], gj = () => [
isNumber,
isArbitraryVariable,
isArbitraryValue
], _j = () => [
isFraction,
"full",
...q()
];
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,
O
] }],
container: ["container"],
columns: [{ columns: [
isNumber,
isArbitraryValue,
isArbitraryVariable,
d
] }],
"break-after": [{ "break-after": F() }],
"break-before": [{ "break-before": F() }],
"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: R() }],
overflow: [{ overflow: qA() }],
"overflow-x": [{ "overflow-x": qA() }],
"overflow-y": [{ "overflow-y": qA() }],
overscroll: [{ overscroll: V() }],
"overscroll-x": [{ "overscroll-x": V() }],
"overscroll-y": [{ "overscroll-y": V() }],
position: [
"static",
"fixed",
"absolute",
"relative",
"sticky"
],
inset: [{ inset: JA() }],
"inset-x": [{ "inset-x": JA() }],
"inset-y": [{ "inset-y": JA() }],
start: [{ start: JA() }],
end: [{ end: JA() }],
top: [{ top: JA() }],
right: [{ right: JA() }],
bottom: [{ bottom: JA() }],
left: [{ left: JA() }],
visibility: [
"visible",
"invisible",
"collapse"
],
z: [{ z: [
isInteger,
"auto",
isArbitraryVariable,
isArbitraryValue
] }],
basis: [{ basis: [
isFraction,
"full",
"auto",
d,
...q()
] }],
"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": YA() }],
"col-start-end": [{ col: XA() }],
"col-start": [{ "col-start": ZA() }],
"col-end": [{ "col-end": ZA() }],
"grid-rows": [{ "grid-rows": YA() }],
"row-start-end": [{ row: XA() }],
"row-start": [{ "row-start": ZA() }],
"row-end": [{ "row-end": ZA() }],
"grid-flow": [{ "grid-flow": [
"row",
"col",
"dense",
"row-dense",
"col-dense"
] }],
"auto-cols": [{ "auto-cols": QA() }],
"auto-rows": [{ "auto-rows": QA() }],
gap: [{ gap: q() }],
"gap-x": [{ "gap-x": q() }],
"gap-y": [{ "gap-y": q() }],
"justify-content": [{ justify: [...$A(), "normal"] }],
"justify-items": [{ "justify-items": [...ej(), "normal"] }],
"justify-self": [{ "justify-self": ["auto", ...ej()] }],
"align-content": [{ content: ["normal", ...$A()] }],
"align-items": [{ items: [...ej(), { baseline: ["", "last"] }] }],
"align-self": [{ self: [
"auto",
...ej(),
{ baseline: ["", "last"] }
] }],
"place-content": [{ "place-content": $A() }],
"place-items": [{ "place-items": [...ej(), "baseline"] }],
"place-self": [{ "place-self": ["auto", ...ej()] }],
p: [{ p: q() }],
px: [{ px: q() }],
py: [{ py: q() }],
ps: [{ ps: q() }],
pe: [{ pe: q() }],
pt: [{ pt: q() }],
pr: [{ pr: q() }],
pb: [{ pb: q() }],
pl: [{ pl: q() }],
m: [{ m: tj() }],
mx: [{ mx: tj() }],
my: [{ my: tj() }],
ms: [{ ms: tj() }],
me: [{ me: tj() }],
mt: [{ mt: tj() }],
mr: [{ mr: tj() }],
mb: [{ mb: tj() }],
ml: [{ ml: tj() }],
"space-x": [{ "space-x": q() }],
"space-x-reverse": ["space-x-reverse"],
"space-y": [{ "space-y": q() }],
"space-y-reverse": ["space-y-reverse"],
size: [{ size: nj() }],
w: [{ w: [
d,
"screen",
...nj()
] }],
"min-w": [{ "min-w": [
d,
"screen",
"none",
...nj()
] }],
"max-w": [{ "max-w": [
d,
"screen",
"none",
"prose",
{ screen: [c] },
...nj()
] }],
h: [{ h: [
"screen",
"lh",
...nj()
] }],
"min-h": [{ "min-h": [
"screen",
"lh",
"none",
...nj()
] }],
"max-h": [{ "max-h": [
"screen",
"lh",
...nj()
] }],
"font-size": [{ text: [
"base",
i,
isArbitraryVariableLength,
isArbitraryLength
] }],
"font-smoothing": ["antialiased", "subpixel-antialiased"],
"font-style": ["italic", "not-italic"],
"font-weight": [{ font: [
a,
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,
n
] }],
"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: [
o,
isArbitraryVariable,
isArbitraryValue
] }],
"line-clamp": [{ "line-clamp": [
isNumber,
"none",
isArbitraryVariable,
isArbitraryNumber
] }],
leading: [{ leading: [s, ...q()] }],
"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: rj() }],
"text-color": [{ text: rj() }],
"text-decoration": [
"underline",
"overline",
"line-through",
"no-underline"
],
"text-decoration-style": [{ decoration: [...uj(), "wavy"] }],
"text-decoration-thickness": [{ decoration: [
isNumber,
"from-font",
"auto",
isArbitraryVariable,
isArbitraryLength
] }],
"text-decoration-color": [{ decoration: rj() }],
"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: q() }],
"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: ij() }],
"bg-repeat": [{ bg: aj() }],
"bg-size": [{ bg: oj() }],
"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: rj() }],
"gradient-from-pos": [{ from: sj() }],
"gradient-via-pos": [{ via: sj() }],
"gradient-to-pos": [{ to: sj() }],
"gradient-from": [{ from: rj() }],
"gradient-via": [{ via: rj() }],
"gradient-to": [{ to: rj() }],
rounded: [{ rounded: cj() }],
"rounded-s": [{ "rounded-s": cj() }],
"rounded-e": [{ "rounded-e": cj() }],
"rounded-t": [{ "rounded-t": cj() }],
"rounded-r": [{ "rounded-r": cj() }],
"rounded-b": [{ "rounded-b": cj() }],
"rounded-l": [{ "rounded-l": cj() }],
"rounded-ss": [{ "rounded-ss": cj() }],
"rounded-se": [{ "rounded-se": cj() }],
"rounded-ee": [{ "rounded-ee": cj() }],
"rounded-es": [{ "rounded-es": cj() }],
"rounded-tl": [{ "rounded-tl": cj() }],
"rounded-tr": [{ "rounded-tr": cj() }],
"rounded-br": [{ "rounded-br": cj() }],
"rounded-bl": [{ "rounded-bl": cj() }],
"border-w": [{ border: lj() }],
"border-w-x": [{ "border-x": lj() }],
"border-w-y": [{ "border-y": lj() }],
"border-w-s": [{ "border-s": lj() }],
"border-w-e": [{ "border-e": lj() }],
"border-w-t": [{ "border-t": lj() }],
"border-w-r": [{ "border-r": lj() }],
"border-w-b": [{ "border-b": lj() }],
"border-w-l": [{ "border-l": lj() }],
"divide-x": [{ "divide-x": lj() }],
"divide-x-reverse": ["divide-x-reverse"],
"divide-y": [{ "divide-y": lj() }],
"divide-y-reverse": ["divide-y-reverse"],
"border-style": [{ border: [
...uj(),
"hidden",
"none"
] }],
"divide-style": [{ divide: [
...uj(),
"hidden",
"none"
] }],
"border-color": [{ border: rj() }],
"border-color-x": [{ "border-x": rj() }],
"border-color-y": [{ "border-y": rj() }],
"border-color-s": [{ "border-s": rj() }],
"border-color-e": [{ "border-e": rj() }],
"border-color-t": [{ "border-t": rj() }],
"border-color-r": [{ "border-r": rj() }],
"border-color-b": [{ "border-b": rj() }],
"border-color-l": [{ "border-l": rj() }],
"divide-color": [{ divide: rj() }],
"outline-style": [{ outline: [
...uj(),
"none",
"hidden"
] }],
"outline-offset": [{ "outline-offset": [
isNumber,
isArbitraryVariable,
isArbitraryValue
] }],
"outline-w": [{ outline: [
"",
isNumber,
isArbitraryVariableLength,
isArbitraryLength
] }],
"outline-color": [{ outline: rj() }],
shadow: [{ shadow: [
"",
"none",
b,
isArbitraryVariableShadow,
isArbitraryShadow
] }],
"shadow-color": [{ shadow: rj() }],
"inset-shadow": [{ "inset-shadow": [
"none",
x,
isArbitraryVariableShadow,
isArbitraryShadow
] }],
"inset-shadow-color": [{ "inset-shadow": rj() }],
"ring-w": [{ ring: lj() }],
"ring-w-inset": ["ring-inset"],
"ring-color": [{ ring: rj() }],
"ring-offset-w": [{ "ring-offset": [isNumber, isArbitraryLength] }],
"ring-offset-color": [{ "ring-offset": rj() }],
"inset-ring-w": [{ "inset-ring": lj() }],
"inset-ring-color": [{ "inset-ring": rj() }],
"text-shadow": [{ "text-shadow": [
"none",
S,
isArbitraryVariableShadow,
isArbitraryShadow
] }],
"text-shadow-color": [{ "text-shadow": rj() }],
opacity: [{ opacity: [
isNumber,
isArbitraryVariable,
isArbitraryValue
] }],
"mix-blend": [{ "mix-blend": [
...dj(),
"plus-darker",
"plus-lighter"
] }],
"bg-blend": [{ "bg-blend": dj() }],
"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": fj() }],
"mask-image-linear-to-pos": [{ "mask-linear-to": fj() }],
"mask-image-linear-from-color": [{ "mask-linear-from": rj() }],
"mask-image-linear-to-color": [{ "mask-linear-to": rj() }],
"mask-image-t-from-pos": [{ "mask-t-from": fj() }],
"mask-image-t-to-pos": [{ "mask-t-to": fj() }],
"mask-image-t-from-color": [{ "mask-t-from": rj() }],
"mask-image-t-to-color": [{ "mask-t-to": rj() }],
"mask-image-r-from-pos": [{ "mask-r-from": fj() }],
"mask-image-r-to-pos": [{ "mask-r-to": fj() }],
"mask-image-r-from-color": [{ "mask-r-from": rj() }],
"mask-image-r-to-color": [{ "mask-r-to": rj() }],
"mask-image-b-from-pos": [{ "mask-b-from": fj() }],
"mask-image-b-to-pos": [{ "mask-b-to": fj() }],
"mask-image-b-from-color": [{ "mask-b-from": rj() }],
"mask-image-b-to-color": [{ "mask-b-to": rj() }],
"mask-image-l-from-pos": [{ "mask-l-from": fj() }],
"mask-image-l-to-pos": [{ "mask-l-to": fj() }],
"mask-image-l-from-color": [{ "mask-l-from": rj() }],
"mask-image-l-to-color": [{ "mask-l-to": rj() }],
"mask-image-x-from-pos": [{ "mask-x-from": fj() }],
"mask-image-x-to-pos": [{ "mask-x-to": fj() }],
"mask-image-x-from-color": [{ "mask-x-from": rj() }],
"mask-image-x-to-color": [{ "mask-x-to": rj() }],
"mask-image-y-from-pos": [{ "mask-y-from": fj() }],
"mask-image-y-to-pos": [{ "mask-y-to": fj() }],
"mask-image-y-from-color": [{ "mask-y-from": rj() }],
"mask-image-y-to-color": [{ "mask-y-to": rj() }],
"mask-image-radial": [{ "mask-radial": [isArbitraryVariable, isArbitraryValue] }],
"mask-image-radial-from-pos": [{ "mask-radial-from": fj() }],
"mask-image-radial-to-pos": [{ "mask-radial-to": fj() }],
"mask-image-radial-from-color": [{ "mask-radial-from": rj() }],
"mask-image-radial-to-color": [{ "mask-radial-to": rj() }],
"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": I() }],
"mask-image-conic-pos": [{ "mask-conic": [isNumber] }],
"mask-image-conic-from-pos": [{ "mask-conic-from": fj() }],
"mask-image-conic-to-pos": [{ "mask-conic-to": fj() }],
"mask-image-conic-from-color": [{ "mask-conic-from": rj() }],
"mask-image-conic-to-color": [{ "mask-conic-to": rj() }],
"mask-mode": [{ mask: [
"alpha",
"luminance",
"match"
] }],
"mask-origin": [{ "mask-origin": [
"border",
"padding",
"content",
"fill",
"stroke",
"view"
] }],
"mask-position": [{ mask: ij() }],
"mask-repeat": [{ mask: aj() }],
"mask-size": [{ mask: oj() }],
"mask-type": [{ "mask-type": ["alpha", "luminance"] }],
"mask-image": [{ mask: [
"none",
isArbitraryVariable,
isArbitraryValue
] }],
filter: [{ filter: [
"",
"none",
isArbitraryVariable,
isArbitraryValue
] }],
blur: [{ blur: pj() }],
brightness: [{ brightness: [
isNumber,
isArbitraryVariable,
isArbitraryValue
] }],
contrast: [{ contrast: [
isNumber,
isArbitraryVariable,
isArbitraryValue
] }],
"drop-shadow": [{ "drop-shadow": [
"",
"none",
C,
isArbitraryVariableShadow,
isArbitraryShadow
] }],
"drop-shadow-color": [{ "drop-shadow": rj() }],
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": pj() }],
"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": q() }],
"border-spacing-x": [{ "border-spacing-x": q() }],
"border-spacing-y": [{ "border-spacing-y": q() }],
"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",
A,
isArbitraryVariable,
isArbitraryValue
] }],
delay: [{ delay: [
isNumber,
isArbitraryVariable,
isArbitraryValue
] }],
animate: [{ animate: [
"none",
M,
isArbitraryVariable,
isArbitraryValue
] }],
backface: [{ backface: ["hidden", "visible"] }],
perspective: [{ perspective: [
E,
isArbitraryVariable,
isArbitraryValue
] }],
"perspective-origin": [{ "perspective-origin": R() }],
rotate: [{ rotate: mj() }],
"rotate-x": [{ "rotate-x": mj() }],
"rotate-y": [{ "rotate-y": mj() }],
"rotate-z": [{ "rotate-z": mj() }],
scale: [{ scale: hj() }],
"scale-x": [{ "scale-x": hj() }],
"scale-y": [{ "scale-y": hj() }],
"scale-z": [{ "scale-z": hj() }],
"scale-3d": ["scale-3d"],
skew: [{ skew: gj() }],
"skew-x": [{ "skew-x": gj() }],
"skew-y": [{ "skew-y": gj() }],
transform: [{ transform: [
isArbitraryVariable,
isArbitraryValue,
"",
"none",
"gpu",
"cpu"
] }],
"transform-origin": [{ origin: R() }],
"transform-style": [{ transform: ["3d", "flat"] }],
translate: [{ translate: _j() }],
"translate-x": [{ "translate-x": _j() }],
"translate-y": [{ "translate-y": _j() }],
"translate-z": [{ "translate-z": _j() }],
"translate-none": ["translate-none"],
accent: [{ accent: rj() }],
appearance: [{ appearance: ["none", "auto"] }],
"caret-color": [{ caret: rj() }],
"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": q() }],
"scroll-mx": [{ "scroll-mx": q() }],
"scroll-my": [{ "scroll-my": q() }],
"scroll-ms": [{ "scroll-ms": q() }],
"scroll-me": [{ "scroll-me": q() }],
"scroll-mt": [{ "scroll-mt": q() }],
"scroll-mr": [{ "scroll-mr": q() }],
"scroll-mb": [{ "scroll-mb": q() }],
"scroll-ml": [{ "scroll-ml": q() }],
"scroll-p": [{ "scroll-p": q() }],
"scroll-px": [{ "scroll-px": q() }],
"scroll-py": [{ "scroll-py": q() }],
"scroll-ps": [{ "scroll-ps": q() }],
"scroll-pe": [{ "scroll-pe": q() }],
"scroll-pt": [{ "scroll-pt": q() }],
"scroll-pr": [{ "scroll-pr": q() }],
"scroll-pb": [{ "scroll-pb": q() }],
"scroll-pl": [{ "scroll-pl": q() }],
"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", ...rj()] }],
"stroke-w": [{ stroke: [
isNumber,
isArbitraryVariableLength,
isArbitraryLength,
isArbitraryNumber
] }],
stroke: [{ stroke: ["none", ...rj()] }],
"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(...t) {
return twMerge(clsx(t));
}
function splitIdentifier(t) {
return t.replace(/_/g, " ").replace(/([a-z0-9])([A-Z])/g, "$1 $2").trim().split(/\s+/).map((t) => t.toLowerCase());
}
async function asyncInterval(t, n, i) {
for (; !i?.aborted;) await t(), await new Promise((t, a) => {
let o = setTimeout(t, n);
i?.addEventListener("abort", () => {
clearTimeout(o), a(new DOMException("Aborted", "AbortError"));
}, { once: !0 });
});
}
function isAsyncIterable(t) {
return typeof Object(t)[Symbol.asyncIterator] == "function";
}
var ws = null;
typeof WebSocket < "u" ? ws = WebSocket : typeof MozWebSocket < "u" ? ws = MozWebSocket : typeof global < "u" ? ws = global.WebSocket || global.MozWebSocket : typeof window < "u" ? ws = window.WebSocket || window.MozWebSocket : typeof self < "u" && (ws = self.WebSocket || self.MozWebSocket);
var browser_default = ws, kFakePromise = Symbol.for("@whatwg-node/promise-helpers/FakePromise");
function isPromise(t) {
return t?.then != null;
}
function isActualPromise(t) {
let n = t;
return n && n.then && n.catch && n.finally;
}
function handleMaybePromise(t, n, i, a) {
let o = fakePromise().then(t).then(n, i);
return a && (o = o.finally(a)), unfakePromise(o);
}
function fakePromise(t) {
return t && isActualPromise(t) ? t : isPromise(t) ? {
then: (n, i) => fakePromise(t.then(n, i)),
catch: (n) => fakePromise(t.then((t) => t, n)),
finally: (n) => fakePromise(n ? promiseLikeFinally(t, n) : t),
[Symbol.toStringTag]: "Promise"
} : {
then(n) {
if (n) try {
return fakePromise(n(t));
} catch (t) {
return fakeRejectPromise(t);
}
return this;
},
catch() {
return this;
},
finally(n) {
if (n) try {
return fakePromise(n()).then(() => t, () => t);
} catch (t) {
return fakeRejectPromise(t);
}
return this;
},
[Symbol.toStringTag]: "Promise",
__fakePromiseValue: t,
[kFakePromise]: "resolved"
};
}
function createDeferredPromise() {
if (Promise.withResolvers) return Promise.withResolvers();
let t, n;
return {
promise: new Promise(function(i, a) {
t = i, n = a;
}),
get resolve() {
return t;
},
get reject() {
return n;
}
};
}
function fakeRejectPromise(t) {
return {
then(n, i) {
if (i) try {
return fakePromise(i(t));
} catch (t) {
return fakeRejectPromise(t);
}
return this;
},
catch(n) {
if (n) try {
return fakePromise(n(t));
} catch (t) {
return fakeRejectPromise(t);
}
return this;
},
finally(t) {
if (t) try {
t();
} catch (t) {
return fakeRejectPromise(t);
}
return this;
},
__fakeRejectError: t,
[Symbol.toStringTag]: "Promise",
[kFakePromise]: "rejected"
};
}
function mapAsyncIterator(t, n, i, a) {
Symbol.asyncIterator in t && (t = t[Symbol.asyncIterator]());
let o, s, c;
if (a) {
let t;
c = (n) => (t ||= handleMaybePromise(a, () => n, () => n), t);
}
typeof t.return == "function" && (o = t.return, s = (n) => {
let i = () => {
throw n;
};
return o.call(t).then(i, i);
});
function d(t) {
return t.done ? c ? c(t) : t : handleMaybePromise(() => t.value, (t) => handleMaybePromise(() => n(t), iteratorResult, s));
}
let f;
if (i) {
let t, n = i;
f = (i) => (t ||= handleMaybePromise(() => i, (t) => handleMaybePromise(() => n(t), iteratorResult, s)), t);
}
return {
next() {
return t.next().then(d, f);
},
return() {
let n = o ? o.call(t).then(d, f) : fakePromise({
value: void 0,
done: !0
});
return c ? n.then(c) : n;
},
throw(n) {
return typeof t.throw == "function" ? t.throw(n).then(d, f) : s ? s(n) : fakeRejectPromise(n);
},
[Symbol.asyncIterator]() {
return this;
}
};
}
function iteratorResult(t) {
return {
value: t,
done: !1
};
}
function isFakePromise(t) {
return t?.[kFakePromise] === "resolved";
}
function isFakeRejectPromise(t) {
return t?.[kFakePromise] === "rejected";
}
function promiseLikeFinally(t, n) {
return "finally" in t ? t.finally(n) : t.then((t) => {
let i = n();
return isPromise(i) ? i.then(() => t) : t;
}, (t) => {
let i = n();
if (isPromise(i)) return i.then(() => {
throw t;
});
throw t;
});
}
function unfakePromise(t) {
if (isFakePromise(t)) return t.__fakePromiseValue;
if (isFakeRejectPromise(t)) throw t.__fakeRejectError;
return t;
}
const documentStringMap = /* @__PURE__ */ new WeakMap();
function getDocumentString(t, n) {
let i = documentStringMap.get(t);
return !i && n && (i = n(t), documentStringMap.set(t, i)), i;
}
function stripAndPrint(t) {
return stripIgnoredCharacters(print(t));
}
var defaultPrintFn = function(t) {
return getDocumentString(t, stripAndPrint);
};
function serializeExecutionRequest({ executionRequest: t, excludeQuery: n, printFn: i = defaultPrintFn }) {
return {
query: n ? void 0 : i(t.document),
variables: (t.variables && Object.keys(t.variables).length) > 0 ? t.variables : void 0,
operationName: t.operationName ? t.operationName : void 0,
extensions: t.extensions && Object.keys(t.extensions).length > 0 ? t.extensions : void 0
};
}
var URL_REGEXP = /^(https?|wss?|file):\/\//;
function isUrl(t) {
if (typeof t != "string" || !URL_REGEXP.test(t)) return !1;
if (URL.canParse) return URL.canParse(t);
try {
return !!new URL(t);
} catch {
return !1;
}
}
function isSome$1(t) {
return t != null;
}
var MAX_RECURSIVE_DEPTH = 3;
function inspect(t) {
return formatValue(t, []);
}
function formatValue(t, n) {
switch (typeof t) {
case "string": return JSON.stringify(t);
case "function": return t.name ? `[function ${t.name}]` : "[function]";
case "object": return formatObjectValue(t, n);
default: return String(t);
}
}
function formatError(t) {
return (t.name = "GraphQLError") ? t.toString() : `${t.name}: ${t.message};\n ${t.stack}`;
}
function formatObjectValue(t, n) {
if (t === null) return "null";
if (t instanceof Error) return t.name === "AggregateError" ? formatError(t) + "\n" + formatArray(t.errors, n) : formatError(t);
if (n.includes(t)) return "[Circular]";
let i = [...n, t];
if (isJSONable(t)) {
let n = t.toJSON();
if (n !== t) return typeof n == "string" ? n : formatValue(n, i);
} else if (Array.isArray(t)) return formatArray(t, i);
return formatObject(t, i);
}
function isJSONable(t) {
return typeof t.toJSON == "function";
}
function formatObject(t, n) {
let i = Object.entries(t);
return i.length === 0 ? "{}" : n.length > MAX_RECURSIVE_DEPTH ? "[" + getObjectTag(t) + "]" : "{ " + i.map(([t, i]) => t + ": " + formatValue(i, n)).join(", ") + " }";
}
function formatArray(t, n) {
if (t.length === 0) return "[]";
if (n.length > MAX_RECURSIVE_DEPTH) return "[Array]";
let i = t.length, a = [];
for (let o = 0; o < i; ++o) a.push(formatValue(t[o], n));
return "[" + a.join(", ") + "]";
}
function getObjectTag(t) {
let n = Object.prototype.toString.call(t).replace(/^\[object /, "").replace(/]$/, "");
if (n === "Object" && typeof t.constructor == "function") {
let n = t.constructor.name;
if (typeof n == "string" && n !== "") return n;
}
return n;
}
var possibleGraphQLErrorProperties$1 = [
"message",
"locations",
"path",
"nodes",
"source",
"positions",
"originalError",
"name",
"stack",
"extensions",
"coordinate"
];
function isGraphQLErrorLike$1(t) {
return typeof t == "object" && !!t && Object.keys(t).every((t) => possibleGraphQLErrorProperties$1.includes(t));
}
function createGraphQLError$1(t, n) {
n?.originalError && !(n.originalError instanceof Error) && isGraphQLErrorLike$1(n.originalError) && (n.originalError = createGraphQLError$1(n.originalError.message, n.originalError));
let i = GraphQLError, a = versionInfo.major >= 16 ? new i(t, n) : new i(t, n?.nodes, n?.source, n?.positions, n?.path, n?.originalError, n?.extensions);
return n?.coordinate && a.coordinate == null && Object.defineProperties(a, { coordinate: {
value: n.coordinate,
enumerable: !0,
configurable: !0
} }), a;
}
function memoize1$1(t) {
let n = /* @__PURE__ */ new WeakMap();
return function(i) {
let a = n.get(i);
if (a === void 0) {
let a = t(i);
return n.set(i, a), a;
}
return a;
};
}
var MAX_LINE_LENGTH = 80, commentsRegistry = {};
function printComment(t) {
return "\n# " + t.replace(/\n/g, "\n# ");
}
function join(t, n) {
return t ? t.filter((t) => t).join(n || "") : "";
}
function hasMultilineItems(t) {
return t?.some((t) => t.includes("\n")) ?? !1;
}
function addDescription(t) {
return (n, i, a, o, s) => {
let c = [], d = o.reduce((t, n) => ([
"fields",
"arguments",
"values"
].includes(n) && t.name && c.push(t.name.value), t[n]), s[0]), f = [...c, d?.name?.value].filter(Boolean).join("."), g = [];
return n.kind.includes("Definition") && commentsRegistry[f] && g.push(...commentsRegistry[f]), join([
...g.map(printComment),
n.description,
t(n, i, a, o, s)
], "\n");
};
}
function indent$1(t) {
return t && ` ${t.replace(/\n/g, "\n ")}`;
}
function block(t) {
return t && t.length !== 0 ? `{\n${indent$1(join(t, "\n"))}\n}` : "";
}
function wrap(t, n, i) {
return n ? t + n + (i || "") : "";
}
function printBlockString(t, n = !1) {
let i = t.replace(/\\/g, "\\\\").replace(/"""/g, "\\\"\"\"");
return (t[0] === " " || t[0] === " ") && t.indexOf("\n") === -1 ? `"""${i.replace(/"$/, "\"\n")}"""` : `"""\n${n ? i : indent$1(i)}\n"""`;
}
var printDocASTReducer = {
Name: { leave: (t) => t.value },
Variable: { leave: (t) => "$" + t.name },
Document: { leave: (t) => join(t.definitions, "\n\n") },
OperationDefinition: { leave: (t) => {
let n = wrap("(", join(t.variableDefinitions, ", "), ")");
return join([
t.operation,
join([t.name, n]),
join(t.directives, " ")
], " ") + " " + t.selectionSet;
} },
VariableDefinition: { leave: ({ variable: t, type: n, defaultValue: i, directives: a }) => t + ": " + n + wrap(" = ", i) + wrap(" ", join(a, " ")) },
SelectionSet: { leave: ({ selections: t }) => block(t) },
Field: { leave({ alias: t, name: n, arguments: i, directives: a, selectionSet: o }) {
let s = wrap("", t, ": ") + n, c = s + wrap("(", join(i, ", "), ")");
return c.length > MAX_LINE_LENGTH && (c = s + wrap("(\n", indent$1(join(i, "\n")), "\n)")), join([
c,
join(a, " "),
o
], " ");
} },
Argument: { leave: ({ name: t, value: n }) => t + ": " + n },
FragmentSpread: { leave: ({ name: t, directives: n }) => "..." + t + wrap(" ", join(n, " ")) },
InlineFragment: { leave: ({ typeCondition: t, directives: n, selectionSet: i }) => join([
"...",
wrap("on ", t),
join(n, " "),
i
], " ") },
FragmentDefinition: { leave: ({ name: t, typeCondition: n, variableDefinitions: i, directives: a, selectionSet: o }) => `fragment ${t}${wrap("(", join(i, ", "), ")")} on ${n} ${wrap("", join(a, " "), " ")}` + o },
IntValue: { leave: ({ value: t }) => t },
FloatValue: { leave: ({ value: t }) => t },
StringValue: { leave: ({ value: t, block: n }) => n ? printBlockString(t) : JSON.stringify(t) },
BooleanValue: { leave: ({ value: t }) => t ? "true" : "false" },
NullValue: { leave: () => "null" },
EnumValue: { leave: ({ value: t }) => t },
ListValue: { leave: ({ values: t }) => "[" + join(t, ", ") + "]" },
ObjectValue: { leave: ({ fields: t }) => "{" + join(t, ", ") + "}" },
ObjectField: { leave: ({ name: t, value: n }) => t + ": " + n },
Directive: { leave: ({ name: t, arguments: n }) => "@" + t + wrap("(", join(n, ", "), ")") },
NamedType: { leave: ({ name: t }) => t },
ListType: { leave: ({ type: t }) => "[" + t + "]" },
NonNullType: { leave: ({ type: t }) => t + "!" },
SchemaDefinition: { leave: ({ directives: t, operationTypes: n }) => join([
"schema",
join(t, " "),
block(n)
], " ") },
OperationTypeDefinition: { leave: ({ operation: t, type: n }) => t + ": " + n },
ScalarTypeDefinition: { leave: ({ name: t, directives: n }) => join([
"scalar",
t,
join(n, " ")
], " ") },
ObjectTypeDefinition: { leave: ({ name: t, interfaces: n, directives: i, fields: a }) => join([
"type",
t,
wrap("implements ", join(n, " & ")),
join(i, " "),
block(a)
], " ") },
FieldDefinition: { leave: ({ name: t, arguments: n, type: i, directives: a }) => t + (hasMultilineItems(n) ? wrap("(\n", indent$1(join(n, "\n")), "\n)") : wrap("(", join(n, ", "), ")")) + ": " + i + wrap(" ", join(a, " ")) },
InputValueDefinition: { leave: ({ name: t, type: n, defaultValue: i, directives: a }) => join([
t + ": " + n,
wrap("= ", i),
join(a, " ")
], " ") },
InterfaceTypeDefinition: { leave: ({ name: t, interfaces: n, directives: i, fields: a }) => join([
"interface",
t,
wrap("implements ", join(n, " & ")),
join(i, " "),
block(a)
], " ") },
UnionTypeDefinition: { leave: ({ name: t, directives: n, types: i }) => join([
"union",
t,
join(n, " "),
wrap("= ", join(i, " | "))
], " ") },
EnumTypeDefinition: { leave: ({ name: t, directives: n, values: i }) => join([
"enum",
t,
join(n, " "),
block(i)
], " ") },
EnumValueDefinition: { leave: ({ name: t, directives: n }) => join([t, join(n, " ")], " ") },
InputObjectTypeDefinition: { leave: ({ name: t, directives: n, fields: i }) => join([
"input",
t,
join(n, " "),
block(i)
], " ") },
DirectiveDefinition: { leave: ({ name: t, arguments: n, repeatable: i, locations: a }) => "directive @" + t + (hasMultilineItems(n) ? wrap("(\n", indent$1(join(n, "\n")), "\n)") : wrap("(", join(n, ", "), ")")) + (i ? " repeatable" : "") + " on " + join(a, " | ") },
SchemaExtension: { leave: ({ directives: t, operationTypes: n }) => join([
"extend schema",
join(t, " "),
block(n)
], " ") },
ScalarTypeExtension: { leave: ({ name: t, directives: n }) => join([
"extend scalar",
t,
join(n, " ")
], " ") },
ObjectTypeExtension: { leave: ({ name: t, interfaces: n, directives: i, fields: a }) => join([
"extend type",
t,
wrap("implements ", join(n, " & ")),
join(i, " "),
block(a)
], " ") },
InterfaceTypeExtension: { leave: ({ name: t, interfaces: n, directives: i, fields: a }) => join([
"extend interface",
t,
wrap("implements ", join(n, " & ")),
join(i, " "),
block(a)
], " ") },
UnionTypeExtension: { leave: ({ name: t, directives: n, types: i }) => join([
"extend union",
t,
join(n, " "),
wrap("= ", join(i, " | "))
], " ") },
EnumTypeExtension: { leave: ({ name: t, directives: n, values: i }) => join([
"extend enum",
t,
join(n, " "),
block(i)
], " ") },
InputObjectTypeExtension: { leave: ({ name: t, directives: n, fields: i }) => join([
"extend input",
t,
join(n, " "),
block(i)
], " ") }
};
Object.keys(printDocASTReducer).reduce((t, n) => ({
...t,
[n]: { leave: addDescription(printDocASTReducer[n].leave) }
}), {});
function getLeadingCommentBlock(t) {
let n = t.loc;
if (!n) return;
let i = [], a = n.startToken.prev;
for (; a != null && a.kind === TokenKind.COMMENT && a.next != null && a.prev != null && a.line + 1 === a.next.line && a.line !== a.prev.line;) {
let t = String(a.value);
i.push(t), a = a.prev;
}
return i.length > 0 ? i.reverse().join("\n") : void 0;
}
function dedentBlockStringValue(t) {
let n = t.split(/\r\n|[\n\r]/g), i = getBlockStringIndentation(n);
if (i !== 0) for (let t = 1; t < n.length; t++) n[t] = n[t].slice(i);
for (; n.length > 0 && isBlank(n[0]);) n.shift();
for (; n.length > 0 && isBlank(n[n.length - 1]);) n.pop();
return n.join("\n");
}
function getBlockStringIndentation(t) {
let n = null;
for (let i = 1; i < t.length; i++) {
let a = t[i], o = leadingWhitespace(a);
if (o !== a.length && (n === null || o < n) && (n = o, n === 0)) break;
}
return n === null ? 0 : n;
}
function leadingWhitespace(t) {
let n = 0;
for (; n < t.length && (t[n] === " " || t[n] === " ");) n++;
return n;
}
function isBlank(t) {
return leadingWhitespace(t) === t.length;
}
function parseGraphQLSDL(t, n, i = {}) {
let a;
try {
i.commentDescriptions && n.includes("#") ? (a = transformCommentsToDescriptions(n, i), i.noLocation && (a = parse(print(a), i))) : a = parse(new Source(n, t), i);
} catch (t) {
if (t.message.includes("EOF") && n.replace(/(\#[^*]*)/g, "").trim() === "") a = {
kind: Kind.DOCUMENT,
definitions: []
};
else throw t;
}
return {
location: t,
document: a
};
}
function transformCommentsToDescriptions(t, n = {}) {
let i = parse(t, {
...n,
noLocation: !1
});
return visit(i, { leave: (t) => {
if (isDescribable(t)) {
let n = getLeadingCommentBlock(t);
if (n !== void 0) {
let i = dedentBlockStringValue("\n" + n), a = i.includes("\n");
return t.description ? {
...t,
description: {
...t.description,
value: t.description.value + "\n" + i,
block: !0
}
} : {
...t,
description: {
kind: Kind.STRING,
value: i,
block: a
}
};
}
}
} });
}
function isDescribable(t) {
return isTypeSystemDefinitionNode(t) || t.kind === Kind.FIELD_DEFINITION || t.kind === Kind.INPUT_VALUE_DEFINITION || t.kind === Kind.ENUM_VALUE_DEFINITION;
}
function mergeDeep$1(t, n = !1, i = !1, a = !1) {
if (t.length === 0) return;
if (t.length === 1) return t[0];
let o, s = !0, c = t.every((t) => {
if (Array.isArray(t)) {
if (o === void 0) return o = t.length, !0;
if (o === t.length) return !0;
} else s = !1;
return !1;
});
if (a && c) return Array(o).fill(null).map((o, s) => mergeDeep$1(t.map((t) => t[s]), n, i, a));
if (s) return t.flat(1);
let d, f;
n && (f = t.find((t) => isObject$4(t)), f && (d ??= {}, Object.setPrototypeOf(d, Object.create(Object.getPrototypeOf(f)))));
for (let o of t) if (o != null) if (isObject$4(o)) {
if (f) {
let t = Object.getPrototypeOf(d), n = Object.getPrototypeOf(o);
if (n) for (let i of Object.getOwnPropertyNames(n)) {
let a = Object.getOwnPropertyDescriptor(n, i);
isSome$1(a) && Object.defineProperty(t, i, a);
}
}
for (let t in o) d ??= {}, t in d ? d[t] = mergeDeep$1([d[t], o[t]], n, i, a) : d[t] = o[t];
} else d = Array.isArray(o) && Array.isArray(d) ? mergeDeep$1([d, o], n, i, a) : o;
return d;
}
function isObject$4(t) {
return t && typeof t == "object" && !Array.isArray(t);
}
function observableToAsyncIterable(t) {
let n = [], i = [], a = !0, o = (t) => {
n.length === 0 ? i.push({
value: t,
done: !1
}) : n.shift()({
value: t,
done: !1
});
}, s = (t) => {
n.length === 0 ? i.push({
value: { errors: [t] },
done: !1
}) : n.shift()({
value: { errors: [t] },
done: !1
});
}, c = () => {
n.length === 0 ? i.push({ done: !0 }) : n.shift()({ done: !0 });
}, d = () => new Promise((t) => {
if (i.length !== 0) {
let n = i.shift();
t(n);
} else n.push(t);
}), f = t.subscribe({
next(t) {
return o(t);
},
error(t) {
return s(t);
},
complete() {
return c();
}
}), g = () => {
if (a) {
a = !1, f.unsubscribe();
for (let t of n) t({
value: void 0,
done: !0
});
n.length = 0, i.length = 0;
}
};
return {
next() {
return a ? d() : this.return();
},
return() {
return g(), fakePromise({
value: void 0,
done: !0
});
},
throw(t) {
return g(), fakeRejectPromise(t);
},
[Symbol.asyncIterator]() {
return this;
}
};
}
function getOperationASTFromDocument$1(t, n) {
let i = getOperationAST(t, n);
if (!i) throw Error(`Cannot infer operation ${n || ""}`);
return i;
}
const getOperationASTFromRequest = memoize1$1(function(t) {
return getOperationASTFromDocument$1(t.document, t.operationName);
});
function isAsyncIterable$2(t) {
return t?.[Symbol.asyncIterator] != null;
}
function mergeIncrementalResult({ incrementalResult: t, executionResult: n }) {
let i = ["data", ...t.path ?? []];
if (t.items) for (let a of t.items) setObjectKeyPath$1(n, i, a), i[i.length - 1]++;
t.data && setObjectKeyPath$1(n, i, t.data), t.errors && (n.errors = n.errors || [], n.errors.push(...t.errors)), t.extensions && setObjectKeyPath$1(n, ["extensions"], t.extensions), t.incremental && t.incremental.forEach((t) => {
mergeIncrementalResult({
incrementalResult: t,
executionResult: n
});
});
}
function setObjectKeyPath$1(t, n, i) {
let a = t, o;
for (o = 0; o < n.length - 1; o++) {
let t = n[o];
if (t === "__proto__" || t === "constructor" || t === "prototype") return;
a[t] ?? (a[t] = typeof n[o + 1] == "number" ? [] : {}), a = a[t];
}
let s = n[o];
if (s === "__proto__" || s === "constructor" || s === "prototype") return;
let c = a[s];
a[s] = c == null ? i : mergeDeep$1([c, i]);
}
const DisposableSymbols = {
get dispose() {
return Symbol.dispose || Symbol.for("dispose");
},
get asyncDispose() {
return Symbol.asyncDispose || Symbol.for("asyncDispose");
}
};
function getNativeWebSocket() {
if (typeof WebSocket < "u") return WebSocket;
if (global.WebSocket !== void 0) return global.WebSocket;
if (window.WebSocket !== void 0) return window.WebSocket;
if (self.WebSocket !== void 0) return self.WebSocket;
throw Error("`WebSocket` is not supported in this environment");
}
const WebSocket$1 = getNativeWebSocket();
function isNode$3() {
return typeof process < "u" && process.versions && process.versions.node && typeof Bun > "u";
}
function isBrowser() {
return typeof window < "u";
}
function getNodeVer() {
if (!isNode$3()) return {
major: NaN,
minor: NaN,
patch: NaN
};
let [t, n, i] = process.versions.node.split(".").map(Number);
return {
major: t || NaN,
minor: n || NaN,
patch: i || NaN
};
}
function isClient(t) {
return "subscribe" in t;
}
function buildGraphQLWSExecutor(t) {
let n, i = {}, a = defaultPrintFn;
if (isClient(t)) n = t;
else {
t.print && (a = t.print);
let o = t.headers, s = o ? class extends WebSocket$1 {
constructor(t, n) {
isBrowser() ? super(t, n) : getNodeVer().major < 22 ? super(t, n, { headers: o }) : super(t, {
protocols: [n],
protocol: n,
headers: o
});
}
} : WebSocket$1;
n = createClient({
url: t.url,
webSocketImpl: s,
lazy: t.lazy !== !1,
lazyCloseTimeout: t.lazyCloseTimeout || 0,
connectionParams: () => {
let n = (typeof t.connectionParams == "function" ? t.connectionParams() : t.connectionParams) || {};
return Object.assign(n, i);
},
on: t.on
}), t.onClient && t.onClient(n);
}
let o = function(t) {
let { extensions: o, operationType: s = getOperationASTFromRequest(t).operation, info: c, signal: d = c?.signal } = t;
o?.connectionParams && typeof o?.connectionParams == "object" && (i = Object.assign(i, o.connectionParams));
let f = n.iterate(serializeExecutionRequest({
executionRequest: t,
printFn: a
}));
return f.return && d && d.addEventListener("abort", () => {
f.return?.();
}, { once: !0 }), s === "subscription" ? f : f.next().then(({ value: t }) => t);
};
return Object.defineProperty(o, DisposableSymbols.asyncDispose, { value: function() {
return n.dispose();
} }), o;
}
var isNode$2 = !globalThis.Bun && globalThis.process?.release?.name === "node", anySignalRegistry = isNode$2 ? new FinalizationRegistry((t) => t()) : null, controllerInSignalSy = Symbol("CONTROLLER_IN_SIGNAL");
function abortSignalAny(t) {
if (t.length === 0) return;
if (t.length === 1) return t[0];
if (!isNode$2) return AbortSignal.any(t);
for (let n of t) if (n.aborted) return n;
let n = new AbortController(), i = new WeakRef(n), a = [], o = t.length;
for (let n of t) {
let t = function() {
i.deref()?.abort(c.deref()?.reason);
}, c = new WeakRef(n);
n.addEventListener("abort", t), a.push([c, t]), anySignalRegistry.register(n, () => !--o && s(), n);
}
function s() {
for (let [t, n] of a) {
let a = t.deref();
a && (a.removeEventListener("abort", n), anySignalRegistry.unregister(a));
let o = i.deref();
o && (anySignalRegistry.unregister(o.signal), delete o.signal[controllerInSignalSy]);
}
}
return n.signal.addEventListener("abort", s), anySignalRegistry.register(n.signal, s, n.signal), n.signal[controllerInSignalSy] = n, n.signal;
}
var require_global_ponyfill = /* @__PURE__ */ __commonJSMin(((t, n) => {
n.exports.fetch = globalThis.fetch, n.exports.Headers = globalThis.Headers, n.exports.Request = globalThis.Request, n.exports.Response = globalThis.Response, n.exports.FormData = globalThis.FormData, n.exports.ReadableStream = globalThis.ReadableStream, n.exports.WritableStream = globalThis.WritableStream, n.exports.TransformStream = globalThis.TransformStream, n.exports.CompressionStream = globalThis.CompressionStream, n.exports.DecompressionStream = globalThis.DecompressionStream, n.exports.TextDecoderStream = globalThis.TextDecoderStream, n.exports.TextEncoderStream = globalThis.TextEncoderStream, n.exports.Blob = globalThis.Blob, n.exports.File = globalThis.File, n.exports.crypto = globalThis.crypto, n.exports.btoa = globalThis.btoa, n.exports.TextEncoder = globalThis.TextEncoder, n.exports.TextDecoder = globalThis.TextDecoder, n.exports.URLPattern = globalThis.URLPattern, n.exports.URL = globalThis.URL, n.exports.URLSearchParams = globalThis.URLSearchParams, n.exports.createFetch = () => globalThis;
})), import_global_ponyfill$1 = /* @__PURE__ */ __toESM(require_global_ponyfill()), extendStatics = function(t, n) {
return extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(t, n) {
t.__proto__ = n;
} || function(t, n) {
for (var i in n) n.hasOwnProperty(i) && (t[i] = n[i]);
}, extendStatics(t, n);
};
function __extends(t, n) {
extendStatics(t, n);
function i() {
this.constructor = t;
}
t.prototype = n === null ? Object.create(n) : (i.prototype = n.prototype, new i());
}
function __awaiter(t, n, i, a) {
function o(t) {
return t instanceof i ? t : new i(function(n) {
n(t);
});
}
return new (i ||= Promise)(function(i, s) {
function c(t) {
try {
f(a.next(t));
} catch (t) {
s(t);
}
}
function d(t) {
try {
f(a.throw(t));
} catch (t) {
s(t);
}
}
function f(t) {
t.done ? i(t.value) : o(t.value).then(c, d);
}
f((a = a.apply(t, n || [])).next());
});
}
function __generator(t, n) {
var i = {
label: 0,
sent: function() {
if (s[0] & 1) throw s[1];
return s[1];
},
trys: [],
ops: []
}, a, o, s, c;
return c = {
next: d(0),
throw: d(1),
return: d(2)
}, typeof Symbol == "function" && (c[Symbol.iterator] = function() {
return this;
}), c;
function d(t) {
return function(n) {
return f([t, n]);
};
}
function f(c) {
if (a) throw TypeError("Generator is already executing.");
for (; i;) try {
if (a = 1, o && (s = c[0] & 2 ? o.return : c[0] ? o.throw || ((s = o.return) && s.call(o), 0) : o.next) && !(s = s.call(o, c[1])).done) return s;
switch (o = 0, s && (c = [c[0] & 2, s.value]), c[0]) {
case 0:
case 1:
s = c;
break;
case 4: return i.label++, {
value: c[1],
done: !1
};
case 5:
i.label++, o = c[1], c = [0];
continue;
case 7:
c = i.ops.pop(), i.trys.pop();
continue;
default:
if ((s = i.trys, !(s = s.length > 0 && s[s.length - 1])) && (c[0] === 6 || c[0] === 2)) {
i = 0;
continue;
}
if (c[0] === 3 && (!s || c[1] > s[0] && c[1] < s[3])) {
i.label = c[1];
break;
}
if (c[0] === 6 && i.label < s[1]) {
i.label = s[1], s = c;
break;
}
if (s && i.label < s[2]) {
i.label = s[2], i.ops.push(c);
break;
}
s[2] && i.ops.pop(), i.trys.pop();
continue;
}
c = n.call(t, i);
} catch (t) {
c = [6, t], o = 0;
} finally {
a = s = 0;
}
if (c[0] & 5) throw c[1];
return {
value: c[0] ? c[1] : void 0,
done: !0
};
}
}
function __values(t) {
var n = typeof Symbol == "function" && Symbol.iterator, i = n && t[n], a = 0;
if (i) return i.call(t);
if (t && typeof t.length == "number") return { next: function() {
return t && a >= t.length && (t = void 0), {
value: t && t[a++],
done: !t
};
} };
throw TypeError(n ? "Object is not iterable." : "Symbol.iterator is not defined.");
}
function __await(t) {
return this instanceof __await ? (this.v = t, this) : new __await(t);
}
function __asyncGenerator(t, n, i) {
if (!Symbol.asyncIterator) throw TypeError("Symbol.asyncIterator is not defined.");
var a = i.apply(t, n || []), o, s = [];
return o = {}, c("next"), c("throw"), c("return"), o[Symbol.asyncIterator] = function() {
return this;
}, o;
function c(t) {
a[t] && (o[t] = function(n) {
return new Promise(function(i, a) {
s.push([
t,
n,
i,
a
]) > 1 || d(t, n);
});
});
}
function d(t, n) {
try {
f(a[t](n));
} catch (t) {
x(s[0][3], t);
}
}
function f(t) {
t.value instanceof __await ? Promise.resolve(t.value.v).then(g, b) : x(s[0][2], t);
}
function g(t) {
d("next", t);
}
function b(t) {
d("throw", t);
}
function x(t, n) {
t(n), s.shift(), s.length && d(s[0][0], s[0][1]);
}
}
var RepeaterOverflowError = function(t) {
__extends(n, t);
function n(n) {
var i = t.call(this, n) || this;
return Object.defineProperty(i, "name", {
value: "RepeaterOverflowError",
enumerable: !1
}), typeof Object.setPrototypeOf == "function" ? Object.setPrototypeOf(i, i.constructor.prototype) : i.__proto__ = i.constructor.prototype, typeof Error.captureStackTrace == "function" && Error.captureStackTrace(i, i.constructor), i;
}
return n;
}(Error);
(function() {
function t(t) {
if (t < 0) throw RangeError("Capacity may not be less than 0");
this._c = t, this._q = [];
}
return Object.defineProperty(t.prototype, "empty", {
get: function() {
return this._q.length === 0;
},
enumerable: !1,
configurable: !0
}), Object.defineProperty(t.prototype, "full", {
get: function() {
return this._q.length >= this._c;
},
enumerable: !1,
configurable: !0
}), t.prototype.add = function(t) {
if (this.full) throw Error("Buffer full");
this._q.push(t);
}, t.prototype.remove = function() {
if (this.empty) throw Error("Buffer empty");
return this._q.shift();
}, t;
})(), function() {
function t(t) {
if (t < 1) throw RangeError("Capacity may not be less than 1");
this._c = t, this._q = [];
}
return Object.defineProperty(t.prototype, "empty", {
get: function() {
return this._q.length === 0;
},
enumerable: !1,
configurable: !0
}), Object.defineProperty(t.prototype, "full", {
get: function() {
return !1;
},
enumerable: !1,
configurable: !0
}), t.prototype.add = function(t) {
for (; this._q.length >= this._c;) this._q.shift();
this._q.push(t);
}, t.prototype.remove = function() {
if (this.empty) throw Error("Buffer empty");
return this._q.shift();
}, t;
}(), function() {
function t(t) {
if (t < 1) throw RangeError("Capacity may not be less than 1");
this._c = t, this._q = [];
}
return Object.defineProperty(t.prototype, "empty", {
get: function() {
return this._q.length === 0;
},
enumerable: !1,
configurable: !0
}), Object.defineProperty(t.prototype, "full", {
get: function() {
return !1;
},
enumerable: !1,
configurable: !0
}), t.prototype.add = function(t) {
this._q.length < this._c && this._q.push(t);
}, t.prototype.remove = function() {
if (this.empty) throw Error("Buffer empty");
return this._q.shift();
}, t;
}();
function swallow(t) {
t != null && typeof t.then == "function" && t.then(NOOP, NOOP);
}
var Initial = 0, Started = 1, Stopped = 2, Done = 3, Rejected = 4, MAX_QUEUE_LENGTH = 1024, NOOP = function() {};
function consumeExecution(t) {
var n = t.err, i = Promise.resolve(t.execution).then(function(t) {
if (n != null) throw n;
return t;
});
return t.err = void 0, t.execution = i.then(function() {}, function() {}), t.pending === void 0 ? i : t.pending.then(function() {
return i;
});
}
function createIteration(t, n) {
var i = t.state >= Done;
return Promise.resolve(n).then(function(n) {
return !i && t.state >= Rejected ? consumeExecution(t).then(function(t) {
return {
value: t,
done: !0
};
}) : {
value: n,
done: i
};
});
}
function stop(t, n) {
var i, a;
if (!(t.state >= Stopped)) if (t.state = Stopped, t.onnext(), t.onstop(), t.err ??= n, t.pushes.length === 0 && (t.buffer === void 0 || t.buffer.empty)) finish(t);
else try {
for (var o = __values(t.pushes), s = o.next(); !s.done; s = o.next()) s.value.resolve();
} catch (t) {
i = { error: t };
} finally {
try {
s && !s.done && (a = o.return) && a.call(o);
} finally {
if (i) throw i.error;
}
}
}
function finish(t) {
var n, i;
if (!(t.state >= Done)) {
t.state < Stopped && stop(t), t.state = Done, t.buffer = void 0;
try {
for (var a = __values(t.nexts), o = a.next(); !o.done; o = a.next()) {
var s = o.value, c = t.pending === void 0 ? consumeExecution(t) : t.pending.then(function() {
return consumeExecution(t);
});
s.resolve(createIteration(t, c));
}
} catch (t) {
n = { error: t };
} finally {
try {
o && !o.done && (i = a.return) && i.call(a);
} finally {
if (n) throw n.error;
}
}
t.pushes = [], t.nexts = [];
}
}
function reject(t) {
t.state >= Rejected || (t.state < Done && finish(t), t.state = Rejected);
}
function push(t, n) {
if (swallow(n), t.pushes.length >= 1024) throw new RepeaterOverflowError("No more than " + MAX_QUEUE_LENGTH + " pending calls to push are allowed on a single repeater.");
if (t.state >= Stopped) return Promise.resolve(void 0);
var i = t.pending === void 0 ? Promise.resolve(n) : t.pending.then(function() {
return n;
});
i = i.catch(function(n) {
t.state < Stopped && (t.err = n), reject(t);
});
var a;
t.nexts.length ? (t.nexts.shift().resolve(createIteration(t, i)), a = t.nexts.length ? Promise.resolve(t.nexts[0].value) : t.buffer !== void 0 && !t.buffer.full ? Promise.resolve(void 0) : new Promise(function(n) {
return t.onnext = n;
})) : t.buffer !== void 0 && !t.buffer.full ? (t.buffer.add(i), a = Promise.resolve(void 0)) : a = new Promise(function(n) {
return t.pushes.push({
resolve: n,
value: i
});
});
var o = !0, s = {}, c = a.catch(function(t) {
if (o) throw t;
});
return s.then = function(t, n) {
return o = !1, Promise.prototype.then.call(a, t, n);
}, s.catch = function(t) {
return o = !1, Promise.prototype.catch.call(a, t);
}, s.finally = a.finally.bind(a), t.pending = i.then(function() {
return c;
}).catch(function(n) {
t.err = n, reject(t);
}), s;
}
function createStop(t) {
var n = stop.bind(null, t), i = new Promise(function(n) {
return t.onstop = n;
});
return n.then = i.then.bind(i), n.catch = i.catch.bind(i), n.finally = i.finally.bind(i), n;
}
function execute$1(t) {
if (!(t.state >= Started)) {
t.state = Started;
var n = push.bind(null, t), i = createStop(t);
t.execution = new Promise(function(a) {
return a(t.executor(n, i));
}), t.execution.catch(function() {
return stop(t);
});
}
}
var records = /* @__PURE__ */ new WeakMap(), Repeater = function() {
function t(t, n) {
records.set(this, {
executor: t,
buffer: n,
err: void 0,
state: Initial,
pushes: [],
nexts: [],
pending: void 0,
execution: void 0,
onnext: NOOP,
onstop: NOOP
});
}
return t.prototype.next = function(t) {
swallow(t);
var n = records.get(this);
if (n === void 0) throw Error("WeakMap error");
if (n.nexts.length >= 1024) throw new RepeaterOverflowError("No more than " + MAX_QUEUE_LENGTH + " pending calls to next are allowed on a single repeater.");
if (n.state <= Initial && execute$1(n), n.onnext(t), n.buffer !== void 0 && !n.buffer.empty) {
var i = createIteration(n, n.buffer.remove());
if (n.pushes.length) {
var a = n.pushes.shift();
n.buffer.add(a.value), n.onnext = a.resolve;
}
return i;
} else if (n.pushes.length) {
var o = n.pushes.shift();
return n.onnext = o.resolve, createIteration(n, o.value);
} else if (n.state >= Stopped) return finish(n), createIteration(n, consumeExecution(n));
return new Promise(function(i) {
return n.nexts.push({
resolve: i,
value: t
});
});
}, t.prototype.return = function(t) {
swallow(t);
var n = records.get(this);
if (n === void 0) throw Error("WeakMap error");
return finish(n), n.execution = Promise.resolve(n.execution).then(function() {
return t;
}), createIteration(n, consumeExecution(n));
}, t.prototype.throw = function(t) {
var n = records.get(this);
if (n === void 0) throw Error("WeakMap error");
return n.state <= Initial || n.state >= Stopped || n.buffer !== void 0 && !n.buffer.empty ? (finish(n), n.err ??= t, createIteration(n, consumeExecution(n))) : this.next(Promise.reject(t));
}, t.prototype[Symbol.asyncIterator] = function() {
return this;
}, t.race = race, t.merge = merge$1, t.zip = zip, t.latest = latest, t;
}();
function getIterators(t, n) {
var i, a, o = [], s = function(t) {
t != null && typeof t[Symbol.asyncIterator] == "function" ? o.push(t[Symbol.asyncIterator]()) : t != null && typeof t[Symbol.iterator] == "function" ? o.push(t[Symbol.iterator]()) : o.push((function() {
return __asyncGenerator(this, arguments, function() {
return __generator(this, function(i) {
switch (i.label) {
case 0: return n.yieldValues ? [4, __await(t)] : [3, 3];
case 1: return [4, i.sent()];
case 2: i.sent(), i.label = 3;
case 3: return n.returnValues ? [4, __await(t)] : [3, 5];
case 4: return [2, i.sent()];
case 5: return [2];
}
});
});
})());
};
try {
for (var c = __values(t), d = c.next(); !d.done; d = c.next()) {
var f = d.value;
s(f);
}
} catch (t) {
i = { error: t };
} finally {
try {
d && !d.done && (a = c.return) && a.call(c);
} finally {
if (i) throw i.error;
}
}
return o;
}
function race(t) {
var n = this, i = getIterators(t, { returnValues: !0 });
return new Repeater(function(t, a) {
return __awaiter(n, void 0, void 0, function() {
var n, o, s, c, d, f;
return __generator(this, function(g) {
switch (g.label) {
case 0:
if (!i.length) return a(), [2];
o = !1, a.then(function() {
n(), o = !0;
}), g.label = 1;
case 1: g.trys.push([
1,
,
5,
7
]), c = void 0, d = 0, f = function() {
var o, f, g, b, x, S;
return __generator(this, function(C) {
switch (C.label) {
case 0:
o = d;
try {
for (f = (x = void 0, __values(i)), g = f.next(); !g.done; g = f.next()) b = g.value, Promise.resolve(b.next()).then(function(t) {
t.done ? (a(), s === void 0 && (s = t)) : d === o && (d++, n(t));
}, function(t) {
return a(t);
});
} catch (t) {
x = { error: t };
} finally {
try {
g && !g.done && (S = f.return) && S.call(f);
} finally {
if (x) throw x.error;
}
}
return [4, new Promise(function(t) {
return n = t;
})];
case 1: return c = C.sent(), c === void 0 ? [3, 3] : [4, t(c.value)];
case 2: C.sent(), C.label = 3;
case 3: return [2];
}
});
}, g.label = 2;
case 2: return o ? [3, 4] : [5, f()];
case 3: return g.sent(), [3, 2];
case 4: return [2, s && s.value];
case 5: return a(), [4, Promise.race(i.map(function(t) {
return t.return && t.return();
}))];
case 6: return g.sent(), [7];
case 7: return [2];
}
});
});
});
}
function merge$1(t) {
var n = this, i = getIterators(t, { yieldValues: !0 });
return new Repeater(function(t, a) {
return __awaiter(n, void 0, void 0, function() {
var n, o, s, c = this;
return __generator(this, function(d) {
switch (d.label) {
case 0:
if (!i.length) return a(), [2];
n = [], o = !1, a.then(function() {
var t, i;
o = !0;
try {
for (var a = __values(n), s = a.next(); !s.done; s = a.next()) {
var c = s.value;
c();
}
} catch (n) {
t = { error: n };
} finally {
try {
s && !s.done && (i = a.return) && i.call(a);
} finally {
if (t) throw t.error;
}
}
}), d.label = 1;
case 1: return d.trys.push([
1,
,
3,
4
]), [4, Promise.all(i.map(function(i, d) {
return __awaiter(c, void 0, void 0, function() {
var c, f;
return __generator(this, function(g) {
switch (g.label) {
case 0: g.trys.push([
0,
,
6,
9
]), g.label = 1;
case 1: return o ? [3, 5] : (Promise.resolve(i.next()).then(function(t) {
return n[d](t);
}, function(t) {
return a(t);
}), [4, new Promise(function(t) {
n[d] = t;
})]);
case 2: return c = g.sent(), c === void 0 ? [3, 4] : c.done ? (s = c, [2]) : [4, t(c.value)];
case 3: g.sent(), g.label = 4;
case 4: return [3, 1];
case 5: return [3, 9];
case 6: return f = i.return, f ? [4, i.return()] : [3, 8];
case 7: f = g.sent(), g.label = 8;
case 8: return [7];
case 9: return [2];
}
});
});
}))];
case 2: return d.sent(), [2, s && s.value];
case 3: return a(), [7];
case 4: return [2];
}
});
});
});
}
function zip(t) {
var n = this, i = getIterators(t, { returnValues: !0 });
return new Repeater(function(t, a) {
return __awaiter(n, void 0, void 0, function() {
var n, o, s, c;
return __generator(this, function(d) {
switch (d.label) {
case 0:
if (!i.length) return a(), [2, []];
o = !1, a.then(function() {
n(), o = !0;
}), d.label = 1;
case 1: d.trys.push([
1,
,
6,
8
]), d.label = 2;
case 2: return o ? [3, 5] : (Promise.all(i.map(function(t) {
return t.next();
})).then(function(t) {
return n(t);
}, function(t) {
return a(t);
}), [4, new Promise(function(t) {
return n = t;
})]);
case 3: return s = d.sent(), s === void 0 ? [2] : (c = s.map(function(t) {
return t.value;
}), s.some(function(t) {
return t.done;
}) ? [2, c] : [4, t(c)]);
case 4: return d.sent(), [3, 2];
case 5: return [3, 8];
case 6: return a(), [4, Promise.all(i.map(function(t) {
return t.return && t.return();
}))];
case 7: return d.sent(), [7];
case 8: return [2];
}
});
});
});
}
function latest(t) {
var n = this, i = getIterators(t, {
yieldValues: !0,
returnValues: !0
});
return new Repeater(function(t, a) {
return __awaiter(n, void 0, void 0, function() {
var n, o, s, c, d, f = this;
return __generator(this, function(g) {
switch (g.label) {
case 0:
if (!i.length) return a(), [2, []];
o = [], s = !1, a.then(function() {
var t, i;
n();
try {
for (var a = __values(o), c = a.next(); !c.done; c = a.next()) {
var d = c.value;
d();
}
} catch (n) {
t = { error: n };
} finally {
try {
c && !c.done && (i = a.return) && i.call(a);
} finally {
if (t) throw t.error;
}
}
s = !0;
}), g.label = 1;
case 1: return g.trys.push([
1,
,
5,
7
]), Promise.all(i.map(function(t) {
return t.next();
})).then(function(t) {
return n(t);
}, function(t) {
return a(t);
}), [4, new Promise(function(t) {
return n = t;
})];
case 2: return c = g.sent(), c === void 0 ? [2] : (d = c.map(function(t) {
return t.value;
}), c.every(function(t) {
return t.done;
}) ? [2, d] : [4, t(d.slice())]);
case 3: return g.sent(), [4, Promise.all(i.map(function(n, i) {
return __awaiter(f, void 0, void 0, function() {
var f;
return __generator(this, function(g) {
switch (g.label) {
case 0:
if (c[i].done) return [2, c[i].value];
g.label = 1;
case 1: return s ? [3, 4] : (Promise.resolve(n.next()).then(function(t) {
return o[i](t);
}, function(t) {
return a(t);
}), [4, new Promise(function(t) {
return o[i] = t;
})]);
case 2: return f = g.sent(), f === void 0 ? [2, c[i].value] : f.done ? [2, f.value] : (d[i] = f.value, [4, t(d.slice())]);
case 3: return g.sent(), [3, 1];
case 4: return [2];
}
});
});
}))];
case 4: return [2, g.sent()];
case 5: return a(), [4, Promise.all(i.map(function(t) {
return t.return && t.return();
}))];
case 6: return g.sent(), [7];
case 7: return [2];
}
});
});
});
}
async function e(t, n) {
if (!t.ok || !t.body || t.bodyUsed) return t;
let i = t.headers.get("content-type");
if (!i || !~i.indexOf("multipart/")) return t;
let a = i.indexOf("boundary="), o = "-";
if (~a) {
let t = a + 9, n = i.indexOf(";", t);
o = i.slice(t, n > -1 ? n : void 0).trim().replace(/"/g, "");
}
return async function* (t, n, i) {
let a, o, s, c = new TextDecoder("utf8"), d = t.getReader(), f = !i || !i.multiple, g = n.length, b = "", x = [];
try {
let t;
e: for (; !(t = await d.read()).done;) {
let i = c.decode(t.value, { stream: !0 });
a = b.length, b += i;
let d = i.indexOf(n);
for (~d ? a += d : a = b.indexOf(n), x = []; ~a;) {
let t = b.slice(0, a), i = b.slice(a + g);
if (o) {
let n = t.indexOf("\r\n\r\n") + 4, a = t.lastIndexOf("\r\n", n), o = !1, c = t.slice(n, a > -1 ? void 0 : a), d = String(t.slice(0, n)).trim().split("\r\n"), g = {}, b = d.length;
for (; s = d[--b]; s = s.split(": "), g[s.shift().toLowerCase()] = s.join(": "));
if (s = g["content-type"], s && ~s.indexOf("application/json")) try {
c = JSON.parse(c), o = !0;
} catch {}
if (s = {
headers: g,
body: c,
json: o
}, f ? yield s : x.push(s), i.slice(0, 2) === "--") break e;
} else n = "\r\n" + n, o = g += 2;
b = i, a = b.indexOf(n);
}
x.length && (yield x);
}
} finally {
x.length && (yield x), await d.cancel();
}
}(t.body, `--${o}`, n);
}
async function e$1(t, n) {
let i = t.headers["content-type"];
if (!i || !~i.indexOf("multipart/")) return t;
let a = i.indexOf("boundary="), o = "-";
if (~a) {
let t = a + 9, n = i.indexOf(";", t);
o = i.slice(t, n > -1 ? n : void 0).trim().replace(/"/g, "");
}
return async function* (t, n, i) {
let a, o, s, c = !i || !i.multiple, d = Buffer.byteLength(n), f = Buffer.alloc(0), g = [];
e: for await (let i of t) {
a = f.byteLength, f = Buffer.concat([f, i]);
let t = i.indexOf(n);
for (~t ? a += t : a = f.indexOf(n), g = []; ~a;) {
let t = f.subarray(0, a), i = f.subarray(a + d);
if (o) {
let n = t.indexOf("\r\n\r\n") + 4, a = t.lastIndexOf("\r\n", n), o = !1, d = t.subarray(n, a > -1 ? void 0 : a), f = String(t.subarray(0, n)).trim().split("\r\n"), b = {}, x = f.length;
for (; s = f[--x]; s = s.split(": "), b[s.shift().toLowerCase()] = s.join(": "));
if (s = b["content-type"], s && ~s.indexOf("application/json")) try {
d = JSON.parse(String(d)), o = !0;
} catch {}
if (s = {
headers: b,
body: d,
json: o
}, c ? yield s : g.push(s), i[0] === 45 && i[1] === 45) break e;
} else n = "\r\n" + n, o = d += 2;
f = i, a = f.indexOf(n);
}
g.length && (yield g);
}
g.length && (yield g);
}(t, `--${o}`, n);
}
function isPlainObject(t) {
if (typeof t != "object" || !t) return !1;
let n = Object.getPrototypeOf(t);
return (n === null || n === Object.prototype || Object.getPrototypeOf(n) === null) && !(Symbol.toStringTag in t) && !(Symbol.iterator in t);
}
function extractFiles(t, n, i = "") {
if (!arguments.length) throw TypeError("Argument 1 `value` is required.");
if (typeof n != "function") throw TypeError("Argument 2 `isExtractable` must be a function.");
if (typeof i != "string") throw TypeError("Argument 3 `path` must be a string.");
let a = /* @__PURE__ */ new Map(), o = /* @__PURE__ */ new Map();
function s(t, i, c) {
if (n(t)) {
let n = o.get(t);
return n ? n.push(i) : o.set(t, [i]), null;
}
let d = Array.isArray(t) || typeof FileList < "u" && t instanceof FileList, f = isPlainObject(t);
if (d || f) {
let n = a.get(t), o = !n;
if (o && (n = d ? [] : t instanceof Object ? {} : Object.create(null), a.set(t, n)), !c.has(t)) {
let a = i ? `${i}.` : "", f = new Set(c).add(t);
if (d) {
let i = 0;
for (let c of t) {
let t = s(c, a + i++, f);
o && n.push(t);
}
} else for (let i in t) {
let c = s(t[i], a + i, f);
o && (n[i] = c);
}
}
return n;
}
return t;
}
return {
clone: s(t, i, /* @__PURE__ */ new Set()),
files: o
};
}
function isExtractableFile(t) {
return typeof File < "u" && t instanceof File || typeof Blob < "u" && t instanceof Blob;
}
function isGraphQLUpload(t) {
return typeof t.createReadStream == "function";
}
function collectAsyncIterableValues(t) {
let n = [], i = t[Symbol.asyncIterator]();
function a() {
return handleMaybePromise(() => i.next(), ({ value: t, done: i }) => (t != null && n.push(t), i ? n : a()));
}
return a();
}
function createFormDataFromVariables(t, { File: n = import_global_ponyfill$1.File, FormData: i = import_global_ponyfill$1.FormData }) {
if (!t.variables) return JSON.stringify(t);
let a = Object.assign({}, t.variables), { clone: o, files: s } = extractFiles(a, ((t) => isExtractableFile(t) || t?.promise || isAsyncIterable$2(t) || t?.then || typeof t?.arrayBuffer == "function"), "variables");
if (s.size === 0) return JSON.stringify(t);
let c = {}, d = [], f = 0;
for (let [t, n] of s) c[f] = n, d[f] = t, f++;
let g = new i();
g.append("operations", JSON.stringify({
...t,
variables: o
})), g.append("map", JSON.stringify(c));
function b(t, i) {
let a = i.toString();
if (t != null) return handleMaybePromise(() => t?.promise || t, (t) => {
let i = t.filename || t.name || t.path || `blob-${a}`;
if (isBlob(t)) g.append(a, t, i);
else if (isAsyncIterable$2(t)) return handleMaybePromise(() => collectAsyncIterableValues(t), (t) => {
let o = new Uint8Array(t);
g.append(a, new n([o], i), i);
});
else if (isGraphQLUpload(t)) return handleMaybePromise(() => collectAsyncIterableValues(t.createReadStream()), (o) => {
let s = new Uint8Array(o);
g.append(a, new n([s], i, { type: t.mimetype }), i);
});
else g.append(a, new n([t], i), i);
});
}
let x = [];
for (let t in d) {
let n = d[t], i = b(n, Number(t));
isPromise(i) && x.push(i);
}
return x.length > 0 ? Promise.all(x).then(() => g) : g;
}
function isBlob(t) {
return typeof t.arrayBuffer == "function";
}
function createGraphQLErrorForAbort(t, n) {
return t instanceof GraphQLError ? t : t?.name === "TimeoutError" ? createGraphQLError$1(t.message, {
extensions: {
http: {
status: 504,
...n?.http || {}
},
code: "TIMEOUT_ERROR",
...n || {}
},
originalError: t
}) : createGraphQLError$1(t.message, {
extensions: n,
originalError: t
});
}
function createResultForAbort(t, n) {
return { errors: [createGraphQLErrorForAbort(t, n)] };
}
function hashSHA256(t) {
let n = new import_global_ponyfill$1.TextEncoder().encode(t);
return handleMaybePromise(() => import_global_ponyfill$1.crypto.subtle.digest("SHA-256", n), (t) => {
let n = "";
for (let i of new Uint8Array(t)) n += i.toString(16).padStart(2, "0");
return n;
});
}
var DELIM = "\n\n";
function isReadableStream(t) {
return t && typeof t.getReader == "function";
}
function handleEventStreamResponse(t, n, i) {
let a = t.body;
if (!isReadableStream(a)) throw Error("Response body is expected to be a readable stream but got; " + inspect(a));
return new Repeater((t, o) => {
let s = new import_global_ponyfill$1.TextDecoder(), c = a.getReader(), d = !1;
c.closed.then(() => d = !0).catch((t) => d = t), o.then(() => {
n?.abort(), a.locked && c.releaseLock();
}).catch((t) => {
c.cancel(t);
});
let f = "";
async function g() {
if (i?.aborted) return await t(createResultForAbort(i.reason)), o();
if (!a?.locked) return o();
let n, b;
try {
let t = await c.read();
n = t.done, b = t.value;
} catch (n) {
if (i?.aborted) return await t(createResultForAbort(i.reason)), o();
let a = n instanceof Error ? n : Error(String(n));
return await t({ errors: [createGraphQLError$1(a.message, { originalError: a })] }), o();
}
if (n) return o();
for (f += typeof b == "string" ? b : s.decode(b);;) {
let n = f.indexOf(DELIM);
if (n === -1) break;
let i = f.slice(0, n);
f = f.slice(n + 2);
let a = i.split("\n").filter((t) => t.startsWith("data:")).map((t) => t.slice(5).trim()).join("\n");
if (a) {
let n = JSON.parse(a);
await t(n.payload || n);
}
if (i.split("event:")[1]?.trim().split("\n")[0]?.trim() === "complete") return o();
}
return d ? o() : g();
}
return g();
});
}
function isIncomingMessage(t) {
return typeof t == "object" && !!t && "pipe" in t;
}
async function handleMultipartMixedResponse(t) {
let n = t.body, i = t.headers.get("content-type") || "", a;
if (isIncomingMessage(n)) {
n.headers = { "content-type": i };
let t = await e$1(n);
"next" in t && (a = t);
} else {
let n = await e(t);
"next" in n && (a = n);
}
let o = {};
return a == null ? o : mapAsyncIterator(a, (t) => {
if (t.json) {
let n = t.body;
mergeIncrementalResult({
incrementalResult: n,
executionResult: o
});
}
return o;
});
}
var isLiveQueryOperationDefinitionNode = memoize1$1(function(t) {
return t.operation === "query" && t.directives?.some((t) => t.name.value === "live");
});
function prepareGETUrl({ baseUrl: t = "", body: n }) {
let i = "https://dummyhostname.com", a = t.startsWith("http") ? t : t?.startsWith("/") ? `${i}${t}` : `${i}/${t}`, o = new URL(a);
return n.query && o.searchParams.set("query", n.query), n.variables && Object.keys(n.variables).length > 0 && o.searchParams.set("variables", JSON.stringify(n.variables)), n.operationName && o.searchParams.set("operationName", n.operationName), n.extensions && o.searchParams.set("extensions", JSON.stringify(n.extensions)), o.toString().replace(i, "");
}
var inflightRequests = /* @__PURE__ */ new Map();
function buildHTTPExecutor(t) {
let n = t?.print ?? defaultPrintFn, i, a = (a, o) => {
if (a.context?.request?.cf || (i ||= new AbortController()), i?.signal.aborted) return createResultForAbort(i.signal.reason);
let s = a.extensions?.fetch ?? t?.fetch ?? import_global_ponyfill$1.fetch, c = a.extensions?.method || t?.method, d = getOperationASTFromRequest(a), f = d.operation;
(t?.useGETForQueries || a.extensions?.useGETForQueries) && f === "query" && (c = "GET");
let g = "application/graphql-response+json, application/json, multipart/mixed", b;
f === "subscription" || isLiveQueryOperationDefinitionNode(d) ? (c ||= "GET", g = "text/event-stream", b = new AbortController()) : c ||= "POST";
let x;
a.extensions?.endpoint && (typeof a.extensions.endpoint == "string" && (x = a.extensions.endpoint), typeof a.extensions.endpoint == "function" && (x = a.extensions.endpoint(a))), x || (typeof t?.endpoint == "string" && (x = t.endpoint), typeof t?.endpoint == "function" && (x = t.endpoint(a))), x ||= "/graphql";
let S = !1, C = { accept: g };
if (t?.headers && (S = !0, Object.assign(C, typeof t?.headers == "function" ? t.headers(a) : t?.headers)), a.extensions?.headers) {
S = !0;
let { headers: t,...n } = a.extensions;
Object.assign(C, t), a.extensions = n;
}
let w = [];
i?.signal && w.push(i.signal);
let E = a.signal || a.info?.signal;
if (E) {
if (E.aborted) return createResultForAbort(E.reason);
w.push(E);
}
if (t?.timeout) {
let n = typeof t.timeout == "number" ? t.timeout : t.timeout(a);
n && w.push(AbortSignal.timeout(n));
}
b && w.push(b.signal);
let O = w.length ? abortSignalAny(w) : void 0, A = { request: { method: c } }, M = n(a.document), F = function() {
return serializeExecutionRequest({
executionRequest: a,
excludeQuery: o,
printFn: n
});
};
t?.apq && (F = function() {
return handleMaybePromise(() => hashSHA256(M), (t) => {
let i = a.extensions || {};
return i.persistedQuery = {
version: 1,
sha256Hash: t
}, serializeExecutionRequest({
executionRequest: {
...a,
extensions: i
},
excludeQuery: o,
printFn: n
});
});
});
function I(t) {
return A.code = "SUBREQUEST_HTTP_ERROR", t.name === "AggregateError" ? { errors: t.errors.map((t) => coerceFetchError(t, {
signal: O,
endpoint: x,
upstreamErrorExtensions: A
})) } : { errors: [coerceFetchError(t, {
signal: O,
endpoint: x,
upstreamErrorExtensions: A
})] };
}
function R(n, i, a) {
if (t?.deduplicateInflightRequests === !1 || f !== "query") return o();
function o() {
let o = handleMaybePromise(() => s(n.url, {
method: n.method,
headers: n.headers,
body: n.body,
credentials: n.credentials,
signal: n.signal
}, i, a), (n) => handleMaybePromise(() => {
if (A.response ||= {}, A.response.status = n.status, A.response.statusText = n.statusText, t?.exposeHTTPDetailsInExtensions ? A.response.headers = Object.fromEntries(n.headers.entries()) : Object.defineProperty(A.response, "headers", { get() {
return Object.fromEntries(n.headers.entries());
} }), t?.retry != null && !n.status.toString().startsWith("2")) throw Error(n.statusText || `Upstream HTTP Error: ${n.status}`);
let i = n.headers.get("content-type");
return i?.includes("text/event-stream") ? handleEventStreamResponse(n, b, O) : i?.includes("multipart/mixed") ? handleMultipartMixedResponse(n) : n.text();
}, (t) => {
if (typeof t == "string") if (A.response ||= {}, A.response.body = t, t) try {
let n = JSON.parse(t);
if (A.response.body = n, n.data == null && (n.errors == null || n.errors.length === 0)) {
let n = `Unexpected empty "data" and "errors" fields in result: ${t}`;
return A.code = "RESPONSE_VALIDATION_FAILED", { errors: [createGraphQLError$1(n, {
originalError: Error(n),
extensions: A
})] };
}
return Array.isArray(n.errors) ? {
...n,
errors: n.errors.map(({ message: t,...n }) => createGraphQLError$1(t, n))
} : n;
} catch (n) {
return A.code = "RESPONSE_VALIDATION_FAILED", { errors: [createGraphQLError$1(`Unexpected response: ${JSON.stringify(t)}`, {
extensions: A,
originalError: n
})] };
}
else {
let t = "No response returned";
return A.code = "RESPONSE_VALIDATION_FAILED", { errors: [createGraphQLError$1(t, {
extensions: A,
originalError: Error(t)
})] };
}
else return t;
}, I), I);
return t?.exposeHTTPDetailsInExtensions ? handleMaybePromise(() => o, (t) => (A.response?.body && (A.response.body = structuredClone(A.response.body)), t.extensions ||= {}, t.extensions = Object.assign(t.extensions, A), t)) : o;
}
if (typeof n.body == "object") return o();
let c = `${n.url}|${n.method}`;
n.body && (c += `|${n.body}`), S && (c += `|${JSON.stringify(n.headers)}`);
let d = inflightRequests.get(c);
return d || (d = o(), isPromise(d) && (inflightRequests.set(c, d), d.finally(() => {
inflightRequests.delete(c);
}))), handleMaybePromise(() => d, (t) => {
if (t == null || !t.data) return t;
let n = { ...t };
return t.data && (n.data = structuredClone(t.data)), n;
});
}
return handleMaybePromise(() => F(), (n) => {
switch (c) {
case "GET": {
let i = prepareGETUrl({
baseUrl: x,
body: n
}), o = {
url: i,
method: "GET",
headers: C,
signal: O,
credentials: t?.credentials
};
return A.request.url = i, R(o, a.context, a.info);
}
case "POST": return A.request.body = n, handleMaybePromise(() => createFormDataFromVariables(n, {
File: t?.File,
FormData: t?.FormData
}), (n) => {
typeof n == "string" && !C["content-type"] && (A.request.body = n, C["content-type"] = "application/json");
let i = {
url: x,
method: "POST",
body: n,
headers: C,
credentials: t?.credentials,
signal: O
};
return R(i, a.context, a.info);
}, I);
}
}, I);
}, o = a;
if (t?.apq != null && (o = function(t) {
return handleMaybePromise(() => a(t, !0), (n) => n.errors?.some((t) => t.extensions.code === "PERSISTED_QUERY_NOT_FOUND" || t.message === "PersistedQueryNotFound") ? a(t, !1) : n);
}), t?.retry != null) {
let n = o;
o = function(a) {
let o, s = 0;
function c() {
return i?.signal.aborted ? createResultForAbort(i.signal.reason) : (s++, s > t.retry ? o ?? { errors: [createGraphQLError$1("No response returned from fetch")] } : handleMaybePromise(() => n(a), (t) => (o = t, o?.errors?.length ? c() : o)));
}
return c();
};
}
return Object.defineProperties(o, {
[DisposableSymbols.dispose]: { get() {
return function() {
i?.abort(t?.getDisposeReason?.()), i = void 0;
};
} },
[DisposableSymbols.asyncDispose]: { get() {
return function() {
i?.abort(t?.getDisposeReason?.()), i = void 0;
};
} }
}), o;
}
function coerceFetchError(t, { signal: n, endpoint: i, upstreamErrorExtensions: a }) {
return typeof t == "string" ? createGraphQLError$1(t, { extensions: a }) : t.name === "GraphQLError" ? t : t.name === "TypeError" && t.message === "fetch failed" ? createGraphQLError$1(`fetch failed to ${i}`, {
extensions: a,
originalError: t
}) : t.name === "AbortError" ? createGraphQLErrorForAbort(n?.reason || t, a) : t.message ? createGraphQLError$1(t.message, {
extensions: a,
originalError: t
}) : createGraphQLError$1("Unknown error", {
extensions: a,
originalError: t
});
}
var LEGACY_WS;
(function(t) {
t.CONNECTION_INIT = "connection_init", t.CONNECTION_ACK = "connection_ack", t.CONNECTION_ERROR = "connection_error", t.CONNECTION_KEEP_ALIVE = "ka", t.START = "start", t.STOP = "stop", t.CONNECTION_TERMINATE = "connection_terminate", t.DATA = "data", t.ERROR = "error", t.COMPLETE = "complete";
})(LEGACY_WS ||= {});
function buildWSLegacyExecutor(t, n, i) {
let a = {}, o = null, s = (s = (t) => console.error(t)) => {
(o == null || o.readyState !== browser_default.OPEN) && (o = new n(t, "graphql-ws", {
followRedirects: !0,
headers: i?.headers,
rejectUnauthorized: !1,
skipUTF8Validation: !0
}), o.onopen = () => {
let t = {};
switch (typeof i?.connectionParams) {
case "function":
t = i?.connectionParams();
break;
case "object":
t = i?.connectionParams;
break;
}
t = Object.assign(t, a), o.send(JSON.stringify({
type: LEGACY_WS.CONNECTION_INIT,
payload: t
}), (t) => {
t && s(t);
});
}, o.onerror = (t) => {
s(t.error);
}, o.onclose = () => {
o = null;
});
}, c = () => {
o != null && (o.send(JSON.stringify({ type: LEGACY_WS.CONNECTION_TERMINATE })), o.terminate(), o = null);
}, d = function(t) {
t.extensions?.connectionParams && typeof t.extensions?.connectionParams == "object" && (a = Object.assign(a, t.extensions.connectionParams));
let n = Date.now().toString();
return observableToAsyncIterable({ subscribe(i) {
function a(t) {
i.error(t);
}
if (s(), o == null) throw Error("WebSocket connection is not found!");
return o.onmessage = (s) => {
let d = JSON.parse(s.data.toString("utf-8"));
switch (d.type) {
case LEGACY_WS.CONNECTION_ACK:
if (o == null) throw Error("WebSocket connection is not found!");
o.send(JSON.stringify({
type: LEGACY_WS.START,
id: n,
payload: {
query: print(t.document),
variables: t.variables,
operationName: t.operationName
}
}), (t) => {
t && a(t);
});
break;
case LEGACY_WS.CONNECTION_ERROR:
i.error(d.payload);
break;
case LEGACY_WS.CONNECTION_KEEP_ALIVE: break;
case LEGACY_WS.DATA:
i.next(d.payload);
break;
case LEGACY_WS.COMPLETE:
o?.send(JSON.stringify({ type: LEGACY_WS.CONNECTION_TERMINATE }), (t) => {
t && a(t);
}), i.complete(), c();
break;
}
}, { unsubscribe: () => {
o?.readyState === browser_default.OPEN && o?.send(JSON.stringify({
type: LEGACY_WS.STOP,
id: n
})), c();
} };
} });
};
return d[Symbol.dispose] = c, d;
}
const asArray = (t) => Array.isArray(t) ? t : t ? [t] : [];
function isSome(t) {
return t != null;
}
var possibleGraphQLErrorProperties = [
"message",
"locations",
"path",
"nodes",
"source",
"positions",
"originalError",
"name",
"stack",
"extensions",
"coordinate"
];
function isGraphQLErrorLike(t) {
return typeof t == "object" && !!t && Object.keys(t).every((t) => possibleGraphQLErrorProperties.includes(t));
}
function createGraphQLError(t, n) {
n?.originalError && !(n.originalError instanceof Error) && isGraphQLErrorLike(n.originalError) && (n.originalError = createGraphQLError(n.originalError.message, n.originalError));
let i = GraphQLError, a = versionInfo.major >= 16 ? new i(t, n) : new i(t, n?.nodes, n?.source, n?.positions, n?.path, n?.originalError, n?.extensions);
return n?.coordinate && a.coordinate == null && Object.defineProperties(a, { coordinate: {
value: n.coordinate,
enumerable: !0,
configurable: !0
} }), a;
}
function locatedError$1(t, n, i, a) {
let o = locatedError(t, n, i);
if (!o.coordinate && a && o.coordinate == null) {
let t = `${a.parentType.name}.${a.fieldName}`;
Object.defineProperties(o, { coordinate: {
value: t,
enumerable: !0,
configurable: !0
} });
}
return o;
}
function relocatedError(t, n, i) {
return createGraphQLError(t.message, {
nodes: t.nodes,
source: t.source,
positions: t.positions,
path: n ?? t.path,
originalError: t,
extensions: t.extensions,
coordinate: i ? `${i.parentType.name}.${i.fieldName}` : void 0
});
}
function isIterableObject(t) {
return typeof t == "object" && !!t && Symbol.iterator in t;
}
function isObjectLike(t) {
return typeof t == "object" && !!t;
}
function promiseReduce(t, n, i) {
let a = i;
for (let i of t) a = handleMaybePromise(() => a, (t) => n(t, i));
return a;
}
function hasOwnProperty$1(t, n) {
return Object.prototype.hasOwnProperty.call(t, n);
}
function getArgumentValues(t, n, i = {}) {
let a = {}, o = (n.arguments ?? []).reduce((t, n) => ({
...t,
[n.name.value]: n
}), {});
for (let { name: s, type: c, defaultValue: d } of t.args) {
let t = o[s];
if (!t) {
if (d !== void 0) a[s] = d;
else if (isNonNullType(c)) throw createGraphQLError(`Argument "${s}" of required type "${inspect(c)}" was not provided.`, { nodes: [n] });
continue;
}
let f = t.value, g = f.kind === Kind.NULL;
if (f.kind === Kind.VARIABLE) {
let t = f.name.value;
if (i == null || !hasOwnProperty$1(i, t)) {
if (d !== void 0) a[s] = d;
else if (isNonNullType(c)) throw createGraphQLError(`Argument "${s}" of required type "${inspect(c)}" was provided the variable "$${t}" which was not provided a runtime value.`, { nodes: [f] });
continue;
}
g = i[t] == null;
}
if (g && isNonNullType(c)) throw createGraphQLError(`Argument "${s}" of non-null type "${inspect(c)}" must not be null.`, { nodes: [f] });
let b = valueFromAST(f, c, i);
if (b === void 0) throw createGraphQLError(`Argument "${s}" has invalid value ${print(f)}.`, { nodes: [f] });
a[s] = b;
}
return a;
}
function memoize1(t) {
let n = /* @__PURE__ */ new WeakMap();
return function(i) {
let a = n.get(i);
if (a === void 0) {
let a = t(i);
return n.set(i, a), a;
}
return a;
};
}
function memoize2(t) {
let n = /* @__PURE__ */ new WeakMap();
return function(i, a) {
let o = n.get(i);
if (!o) {
o = /* @__PURE__ */ new WeakMap(), n.set(i, o);
let s = t(i, a);
return o.set(a, s), s;
}
let s = o.get(a);
if (s === void 0) {
let n = t(i, a);
return o.set(a, n), n;
}
return s;
};
}
function memoize3(t) {
let n = /* @__PURE__ */ new WeakMap();
return function(i, a, o) {
let s = n.get(i);
if (!s) {
s = /* @__PURE__ */ new WeakMap(), n.set(i, s);
let c = /* @__PURE__ */ new WeakMap();
s.set(a, c);
let d = t(i, a, o);
return c.set(o, d), d;
}
let c = s.get(a);
if (!c) {
c = /* @__PURE__ */ new WeakMap(), s.set(a, c);
let n = t(i, a, o);
return c.set(o, n), n;
}
let d = c.get(o);
if (d === void 0) {
let n = t(i, a, o);
return c.set(o, n), n;
}
return d;
};
}
function memoize5(t) {
let n = /* @__PURE__ */ new WeakMap();
return function(i, a, o, s, c) {
let d = n.get(i);
if (!d) {
d = /* @__PURE__ */ new WeakMap(), n.set(i, d);
let f = /* @__PURE__ */ new WeakMap();
d.set(a, f);
let g = /* @__PURE__ */ new WeakMap();
f.set(o, g);
let b = /* @__PURE__ */ new WeakMap();
g.set(s, b);
let x = t(i, a, o, s, c);
return b.set(c, x), x;
}
let f = d.get(a);
if (!f) {
f = /* @__PURE__ */ new WeakMap(), d.set(a, f);
let n = /* @__PURE__ */ new WeakMap();
f.set(o, n);
let g = /* @__PURE__ */ new WeakMap();
n.set(s, g);
let b = t(i, a, o, s, c);
return g.set(c, b), b;
}
let g = f.get(o);
if (!g) {
g = /* @__PURE__ */ new WeakMap(), f.set(o, g);
let n = /* @__PURE__ */ new WeakMap();
g.set(s, n);
let d = t(i, a, o, s, c);
return n.set(c, d), d;
}
let b = g.get(s);
if (!b) {
b = /* @__PURE__ */ new WeakMap(), g.set(s, b);
let n = t(i, a, o, s, c);
return b.set(c, n), n;
}
let x = b.get(c);
if (x === void 0) {
let n = t(i, a, o, s, c);
return b.set(c, n), n;
}
return x;
};
}
function memoize2of4(t) {
let n = /* @__PURE__ */ new WeakMap();
return function(i, a, o, s) {
let c = n.get(i);
if (!c) {
c = /* @__PURE__ */ new WeakMap(), n.set(i, c);
let d = t(i, a, o, s);
return c.set(a, d), d;
}
let d = c.get(a);
if (d === void 0) {
let n = t(i, a, o, s);
return c.set(a, n), n;
}
return d;
};
}
function getDirectiveExtensions(t, n, i = ["directives"]) {
let a = {};
if (t.extensions) {
let n = t.extensions;
for (let t of i) n = n?.[t];
if (n != null) for (let t in n) {
let i = n[t], o = t;
if (Array.isArray(i)) for (let t of i) {
let n = a[o];
n || (n = [], a[o] = n), n.push(t);
}
else {
let t = a[o];
t || (t = [], a[o] = t), t.push(i);
}
}
}
let o = memoize1((t) => JSON.stringify(t)), s = [];
t.astNode && s.push(t.astNode), t.extensionASTNodes && s.push(...t.extensionASTNodes);
for (let t of s) if (t.directives?.length) for (let i of t.directives) {
let t = i.name.value, c = a[t];
c || (c = [], a[t] = c);
let d = n?.getDirective(t), f = {};
if (d && (f = getArgumentValues(d, i)), i.arguments) for (let t of i.arguments) {
let n = t.name.value;
if (f[n] == null) {
let i = d?.args.find((t) => t.name === n);
i && (f[n] = valueFromAST(t.value, i.type));
}
f[n] ?? (f[n] = valueFromASTUntyped(t.value));
}
if (s.length > 0 && c.length > 0) {
let t = o(f);
if (c.some((n) => o(n) === t)) continue;
}
c.push(f);
}
return a;
}
function getDirectivesInExtensions(t, n = ["directives"]) {
let i = getDirectiveExtensions(t, void 0, n);
return Object.entries(i).map(([t, n]) => n?.map((n) => ({
name: t,
args: n
}))).flat(Infinity).filter(Boolean);
}
function astFromType(t) {
if (isNonNullType(t)) {
let n = astFromType(t.ofType);
if (n.kind === Kind.NON_NULL_TYPE) throw Error(`Invalid type node ${inspect(t)}. Inner type of non-null type cannot be a non-null type.`);
return {
kind: Kind.NON_NULL_TYPE,
type: n
};
} else if (isListType(t)) return {
kind: Kind.LIST_TYPE,
type: astFromType(t.ofType)
};
return {
kind: Kind.NAMED_TYPE,
name: {
kind: Kind.NAME,
value: t.name
}
};
}
function astFromValueUntyped(t) {
if (t === null) return { kind: Kind.NULL };
if (t === void 0) return null;
if (Array.isArray(t)) {
let n = [];
for (let i of t) {
let t = astFromValueUntyped(i);
t != null && n.push(t);
}
return {
kind: Kind.LIST,
values: n
};
}
if (typeof t == "object") {
if (t?.toJSON) return astFromValueUntyped(t.toJSON());
let n = [];
for (let i in t) {
let a = t[i], o = astFromValueUntyped(a);
o && n.push({
kind: Kind.OBJECT_FIELD,
name: {
kind: Kind.NAME,
value: i
},
value: o
});
}
return {
kind: Kind.OBJECT,
fields: n
};
}
if (typeof t == "boolean") return {
kind: Kind.BOOLEAN,
value: t
};
if (typeof t == "bigint") return {
kind: Kind.INT,
value: String(t)
};
if (typeof t == "number" && isFinite(t)) {
let n = String(t);
return integerStringRegExp$1.test(n) ? {
kind: Kind.INT,
value: n
} : {
kind: Kind.FLOAT,
value: n
};
}
if (typeof t == "string") return {
kind: Kind.STRING,
value: t
};
throw TypeError(`Cannot convert value to AST: ${t}.`);
}
var integerStringRegExp$1 = /^-?(?:0|[1-9][0-9]*)$/;
function astFromValue$1(t, n) {
if (isNonNullType(n)) {
let i = astFromValue$1(t, n.ofType);
return i?.kind === Kind.NULL ? null : i;
}
if (t === null) return { kind: Kind.NULL };
if (t === void 0) return null;
if (isListType(n)) {
let i = n.ofType;
if (isIterableObject(t)) {
let n = [];
for (let a of t) {
let t = astFromValue$1(a, i);
t != null && n.push(t);
}
return {
kind: Kind.LIST,
values: n
};
}
return astFromValue$1(t, i);
}
if (isInputObjectType(n)) {
if (!isObjectLike(t)) return null;
let i = [];
for (let a of Object.values(n.getFields())) {
let n = astFromValue$1(t[a.name], a.type);
n && i.push({
kind: Kind.OBJECT_FIELD,
name: {
kind: Kind.NAME,
value: a.name
},
value: n
});
}
return {
kind: Kind.OBJECT,
fields: i
};
}
if (isLeafType(n)) {
let i = n.serialize(t);
return i == null ? null : isEnumType(n) ? {
kind: Kind.ENUM,
value: i
} : n.name === "ID" && typeof i == "string" && integerStringRegExp.test(i) ? {
kind: Kind.INT,
value: i
} : astFromValueUntyped(i);
}
/* c8 ignore next 3 */
console.assert(!1, "Unexpected input type: " + inspect(n));
}
var integerStringRegExp = /^-?(?:0|[1-9][0-9]*)$/;
function getDescriptionNode(t) {
if (t.astNode?.description) return {
...t.astNode.description,
block: !0
};
if (t.description) return {
kind: Kind.STRING,
value: t.description,
block: !0
};
}
function getDefinedRootType(t, n, i) {
let a = getRootTypeMap(t).get(n);
if (a == null) throw createGraphQLError(`Schema is not configured to execute ${n} operation.`, { nodes: i });
return a;
}
const getRootTypeNames = memoize1(function(t) {
let n = getRootTypes(t);
return new Set([...n].map((t) => t.name));
}), getRootTypes = memoize1(function(t) {
let n = getRootTypeMap(t);
return new Set(n.values());
}), getRootTypeMap = memoize1(function(t) {
let n = /* @__PURE__ */ new Map(), i = t.getQueryType();
i && n.set("query", i);
let a = t.getMutationType();
a && n.set("mutation", a);
let o = t.getSubscriptionType();
return o && n.set("subscription", o), n;
});
function getDirectiveNodes(t, n, i) {
let a = [], o = getDirectivesInExtensions(t, i), s;
o != null && (s = makeDirectiveNodes(n, o));
let c = null, d = null, f = null;
if (s != null && (a = s.filter((t) => specifiedDirectives.every((n) => n.name !== t.name.value)), c = s.find((t) => t.name.value === "deprecated"), d = s.find((t) => t.name.value === "specifiedBy"), f = s.find((t) => t.name.value === "oneOf")), t.deprecationReason != null && c == null && (c = makeDeprecatedDirective(t.deprecationReason)), t.specifiedByUrl != null || t.specifiedByURL != null && d == null) {
let n = { url: t.specifiedByUrl || t.specifiedByURL };
d = makeDirectiveNode("specifiedBy", n);
}
return t.isOneOf && f == null && (f = makeDirectiveNode("oneOf")), c != null && a.push(c), d != null && a.push(d), f != null && a.push(f), a;
}
function astFromArg(t, n, i) {
return {
kind: Kind.INPUT_VALUE_DEFINITION,
description: getDescriptionNode(t),
name: {
kind: Kind.NAME,
value: t.name
},
type: astFromType(t.type),
defaultValue: t.defaultValue === void 0 ? void 0 : astFromValue$1(t.defaultValue, t.type) ?? void 0,
directives: getDirectiveNodes(t, n, i)
};
}
function makeDeprecatedDirective(t) {
return makeDirectiveNode("deprecated", { reason: t }, GraphQLDeprecatedDirective);
}
function makeDirectiveNode(t, n, i) {
let a = [];
for (let t in n) {
let o = n[t], s;
if (i != null) {
let n = i.args.find((n) => n.name === t);
n && (s = astFromValue$1(o, n.type));
}
s ??= astFromValueUntyped(o), s != null && a.push({
kind: Kind.ARGUMENT,
name: {
kind: Kind.NAME,
value: t
},
value: s
});
}
return {
kind: Kind.DIRECTIVE,
name: {
kind: Kind.NAME,
value: t
},
arguments: a
};
}
function makeDirectiveNodes(t, n) {
let i = [];
for (let { name: a, args: o } of n) {
let n = t?.getDirective(a);
i.push(makeDirectiveNode(a, o, n));
}
return i;
}
var MapperKind;
(function(t) {
t.TYPE = "MapperKind.TYPE", t.SCALAR_TYPE = "MapperKind.SCALAR_TYPE", t.ENUM_TYPE = "MapperKind.ENUM_TYPE", t.COMPOSITE_TYPE = "MapperKind.COMPOSITE_TYPE", t.OBJECT_TYPE = "MapperKind.OBJECT_TYPE", t.INPUT_OBJECT_TYPE = "MapperKind.INPUT_OBJECT_TYPE", t.ABSTRACT_TYPE = "MapperKind.ABSTRACT_TYPE", t.UNION_TYPE = "MapperKind.UNION_TYPE", t.INTERFACE_TYPE = "MapperKind.INTERFACE_TYPE", t.ROOT_OBJECT = "MapperKind.ROOT_OBJECT", t.QUERY = "MapperKind.QUERY", t.MUTATION = "MapperKind.MUTATION", t.SUBSCRIPTION = "MapperKind.SUBSCRIPTION", t.DIRECTIVE = "MapperKind.DIRECTIVE", t.FIELD = "MapperKind.FIELD", t.COMPOSITE_FIELD = "MapperKind.COMPOSITE_FIELD", t.OBJECT_FIELD = "MapperKind.OBJECT_FIELD", t.ROOT_FIELD = "MapperKind.ROOT_FIELD", t.QUERY_ROOT_FIELD = "MapperKind.QUERY_ROOT_FIELD", t.MUTATION_ROOT_FIELD = "MapperKind.MUTATION_ROOT_FIELD", t.SUBSCRIPTION_ROOT_FIELD = "MapperKind.SUBSCRIPTION_ROOT_FIELD", t.INTERFACE_FIELD = "MapperKind.INTERFACE_FIELD", t.INPUT_OBJECT_FIELD = "MapperKind.INPUT_OBJECT_FIELD", t.ARGUMENT = "MapperKind.ARGUMENT", t.ENUM_VALUE = "MapperKind.ENUM_VALUE";
})(MapperKind ||= {});
function getObjectTypeFromTypeMap(t, n) {
if (n) {
let i = t[n.name];
if (isObjectType(i)) return i;
}
}
function isNamedStub(t) {
if ("getFields" in t) {
let n = t.getFields();
for (let t in n) return n[t].name === "_fake";
}
return !1;
}
function getBuiltInForStub(t) {
switch (t.name) {
case GraphQLInt.name: return GraphQLInt;
case GraphQLFloat.name: return GraphQLFloat;
case GraphQLString.name: return GraphQLString;
case GraphQLBoolean.name: return GraphQLBoolean;
case GraphQLID.name: return GraphQLID;
default: return t;
}
}
function rewireTypes(t, n) {
let i = Object.create(null);
for (let n in t) i[n] = t[n];
let a = Object.create(null);
for (let t in i) {
let n = i[t];
if (n == null || t.startsWith("__")) continue;
let o = n.name;
if (!o.startsWith("__")) {
if (a[o] != null) {
console.warn(`Duplicate schema type name ${o} found; keeping the existing one found in the schema`);
continue;
}
a[o] = n;
}
}
for (let t in a) a[t] = d(a[t]);
let o = n.map((t) => s(t));
return {
typeMap: a,
directives: o
};
function s(t) {
if (isSpecifiedDirective(t)) return t;
let n = t.toConfig();
return n.args = c(n.args), new GraphQLDirective(n);
}
function c(t) {
let n = {};
for (let i in t) {
let a = t[i], o = x(a.type);
o != null && (a.type = o, n[i] = a);
}
return n;
}
function d(t) {
if (isObjectType(t)) {
let n = t.toConfig(), i = {
...n,
fields: () => f(n.fields),
interfaces: () => b(n.interfaces)
};
return new GraphQLObjectType(i);
} else if (isInterfaceType(t)) {
let n = t.toConfig(), i = {
...n,
fields: () => f(n.fields)
};
return "interfaces" in i && (i.interfaces = () => b(n.interfaces)), new GraphQLInterfaceType(i);
} else if (isUnionType(t)) {
let n = t.toConfig(), i = {
...n,
types: () => b(n.types)
};
return new GraphQLUnionType(i);
} else if (isInputObjectType(t)) {
let n = t.toConfig(), i = {
...n,
fields: () => g(n.fields)
};
return new GraphQLInputObjectType(i);
} else if (isEnumType(t)) {
let n = t.toConfig();
return new GraphQLEnumType(n);
} else if (isScalarType(t)) {
if (isSpecifiedScalarType(t)) return t;
let n = t.toConfig();
return new GraphQLScalarType(n);
}
throw Error(`Unexpected schema type: ${t}`);
}
function f(t) {
let n = {};
for (let i in t) {
let a = t[i], o = x(a.type);
o != null && a.args && (a.type = o, a.args = c(a.args), n[i] = a);
}
return n;
}
function g(t) {
let n = {};
for (let i in t) {
let a = t[i], o = x(a.type);
o != null && (a.type = o, n[i] = a);
}
return n;
}
function b(t) {
let n = [];
for (let i of t) {
let t = x(i);
t != null && n.push(t);
}
return n;
}
function x(t) {
if (isListType(t)) {
let n = x(t.ofType);
return n == null ? null : new GraphQLList(n);
} else if (isNonNullType(t)) {
let n = x(t.ofType);
return n == null ? null : new GraphQLNonNull(n);
} else if (isNamedType(t)) {
let n = i[t.name];
return n === void 0 && (n = isNamedStub(t) ? getBuiltInForStub(t) : d(t), a[n.name] = i[t.name] = n), n == null ? null : a[n.name];
}
return null;
}
}
function transformInputValue(t, n, i = null, a = null) {
if (n == null) return n;
let o = getNullableType(t);
if (isLeafType(o)) return i == null ? n : i(o, n);
if (isListType(o)) return asArray(n).map((t) => transformInputValue(o.ofType, t, i, a));
if (isInputObjectType(o)) {
let t = o.getFields(), s = {};
for (let o in n) {
let c = t[o];
c != null && (s[o] = transformInputValue(c.type, n[o], i, a));
}
return a == null ? s : a(o, s);
}
}
function serializeInputValue(t, n) {
return transformInputValue(t, n, (t, n) => {
try {
return t.serialize(n);
} catch {
return n;
}
});
}
function parseInputValue(t, n) {
return transformInputValue(t, n, (t, n) => {
try {
return t.parseValue(n);
} catch {
return n;
}
});
}
function mapSchema(t, n = {}) {
let i = mapArguments(mapFields(mapTypes(mapDefaultValues(mapEnumValues(mapTypes(mapDefaultValues(t.getTypeMap(), t, serializeInputValue), t, n, (t) => isLeafType(t)), t, n), t, parseInputValue), t, n, (t) => !isLeafType(t)), t, n), t, n), a = t.getDirectives(), o = mapDirectives(a, t, n), { typeMap: s, directives: c } = rewireTypes(i, o);
return new GraphQLSchema({
...t.toConfig(),
query: getObjectTypeFromTypeMap(s, getObjectTypeFromTypeMap(i, t.getQueryType())),
mutation: getObjectTypeFromTypeMap(s, getObjectTypeFromTypeMap(i, t.getMutationType())),
subscription: getObjectTypeFromTypeMap(s, getObjectTypeFromTypeMap(i, t.getSubscriptionType())),
types: Object.values(s),
directives: c
});
}
var builtinTypes = [
"String",
"ID",
"Int",
"Float",
"Boolean"
];
function mapTypes(t, n, i, a = () => !0) {
let o = {};
for (let s in t) if (!s.startsWith("__") && !builtinTypes.includes(s)) {
let c = t[s];
if (c == null || !a(c)) {
o[s] = c;
continue;
}
let d = getTypeMapper(n, i, s);
if (d == null) {
o[s] = c;
continue;
}
let f = d(c, n);
if (f === void 0) {
o[s] = c;
continue;
}
o[s] = f;
}
return o;
}
function mapEnumValues(t, n, i) {
let a = getEnumValueMapper(i);
return a ? mapTypes(t, n, { [MapperKind.ENUM_TYPE]: (t) => {
let i = t.toConfig(), o = i.values, s = {};
for (let i in o) {
let c = o[i], d = a(c, t.name, n, i);
if (d === void 0) s[i] = c;
else if (Array.isArray(d)) {
let [t, n] = d;
s[t] = n === void 0 ? c : n;
} else d !== null && (s[i] = d);
}
return correctASTNodes(new GraphQLEnumType({
...i,
values: s
}));
} }, (t) => isEnumType(t)) : t;
}
function mapDefaultValues(t, n, i) {
let a = mapArguments(t, n, { [MapperKind.ARGUMENT]: (n) => {
if (n.defaultValue === void 0) return n;
let a = getNewType(t, n.type);
if (a != null) return {
...n,
defaultValue: i(a, n.defaultValue)
};
} });
return mapFields(a, n, { [MapperKind.INPUT_OBJECT_FIELD]: (t) => {
if (t.defaultValue === void 0) return t;
let n = getNewType(a, t.type);
if (n != null) return {
...t,
defaultValue: i(n, t.defaultValue)
};
} });
}
function getNewType(t, n) {
if (isListType(n)) {
let i = getNewType(t, n.ofType);
return i == null ? null : new GraphQLList(i);
} else if (isNonNullType(n)) {
let i = getNewType(t, n.ofType);
return i == null ? null : new GraphQLNonNull(i);
} else if (isNamedType(n)) return t[n.name] ?? null;
return null;
}
function mapFields(t, n, i) {
let a = {};
for (let o in t) if (!o.startsWith("__")) {
let s = t[o];
if (!isObjectType(s) && !isInterfaceType(s) && !isInputObjectType(s)) {
a[o] = s;
continue;
}
let c = getFieldMapper(n, i, o);
if (c == null) {
a[o] = s;
continue;
}
let d = s.toConfig(), f = d.fields, g = {};
for (let t in f) {
let i = f[t], a = c(i, t, o, n);
if (a === void 0) g[t] = i;
else if (Array.isArray(a)) {
let [t, n] = a;
n.astNode != null && (n.astNode = {
...n.astNode,
name: {
...n.astNode.name,
value: t
}
}), g[t] = n === void 0 ? i : n;
} else a !== null && (g[t] = a);
}
isObjectType(s) ? a[o] = correctASTNodes(new GraphQLObjectType({
...d,
fields: g
})) : isInterfaceType(s) ? a[o] = correctASTNodes(new GraphQLInterfaceType({
...d,
fields: g
})) : a[o] = correctASTNodes(new GraphQLInputObjectType({
...d,
fields: g
}));
}
return a;
}
function mapArguments(t, n, i) {
let a = {};
for (let o in t) if (!o.startsWith("__")) {
let s = t[o];
if (!isObjectType(s) && !isInterfaceType(s)) {
a[o] = s;
continue;
}
let c = getArgumentMapper(i);
if (c == null) {
a[o] = s;
continue;
}
let d = s.toConfig(), f = d.fields, g = {};
for (let t in f) {
let i = f[t], a = i.args;
if (a == null) {
g[t] = i;
continue;
}
let s = Object.keys(a);
if (!s.length) {
g[t] = i;
continue;
}
let d = {};
for (let i of s) {
let s = a[i], f = c(s, t, o, n);
if (f === void 0) d[i] = s;
else if (Array.isArray(f)) {
let [t, n] = f;
d[t] = n;
} else f !== null && (d[i] = f);
}
g[t] = {
...i,
args: d
};
}
isObjectType(s) ? a[o] = new GraphQLObjectType({
...d,
fields: g
}) : isInterfaceType(s) ? a[o] = new GraphQLInterfaceType({
...d,
fields: g
}) : a[o] = new GraphQLInputObjectType({
...d,
fields: g
});
}
return a;
}
function mapDirectives(t, n, i) {
let a = getDirectiveMapper(i);
if (a == null) return t.slice();
let o = [];
for (let i of t) {
let t = a(i, n);
t === void 0 ? o.push(i) : t !== null && o.push(t);
}
return o;
}
function getTypeSpecifiers(t, n) {
let i = t.getType(n), a = [MapperKind.TYPE];
return isObjectType(i) ? (a.push(MapperKind.COMPOSITE_TYPE, MapperKind.OBJECT_TYPE), n === t.getQueryType()?.name ? a.push(MapperKind.ROOT_OBJECT, MapperKind.QUERY) : n === t.getMutationType()?.name ? a.push(MapperKind.ROOT_OBJECT, MapperKind.MUTATION) : n === t.getSubscriptionType()?.name && a.push(MapperKind.ROOT_OBJECT, MapperKind.SUBSCRIPTION)) : isInputObjectType(i) ? a.push(MapperKind.INPUT_OBJECT_TYPE) : isInterfaceType(i) ? a.push(MapperKind.COMPOSITE_TYPE, MapperKind.ABSTRACT_TYPE, MapperKind.INTERFACE_TYPE) : isUnionType(i) ? a.push(MapperKind.COMPOSITE_TYPE, MapperKind.ABSTRACT_TYPE, MapperKind.UNION_TYPE) : isEnumType(i) ? a.push(MapperKind.ENUM_TYPE) : isScalarType(i) && a.push(MapperKind.SCALAR_TYPE), a;
}
function getTypeMapper(t, n, i) {
let a = getTypeSpecifiers(t, i), o, s = [...a];
for (; !o && s.length > 0;) {
let t = s.pop();
o = n[t];
}
return o ?? null;
}
function getFieldSpecifiers(t, n) {
let i = t.getType(n), a = [MapperKind.FIELD];
return isObjectType(i) ? (a.push(MapperKind.COMPOSITE_FIELD, MapperKind.OBJECT_FIELD), n === t.getQueryType()?.name ? a.push(MapperKind.ROOT_FIELD, MapperKind.QUERY_ROOT_FIELD) : n === t.getMutationType()?.name ? a.push(MapperKind.ROOT_FIELD, MapperKind.MUTATION_ROOT_FIELD) : n === t.getSubscriptionType()?.name && a.push(MapperKind.ROOT_FIELD, MapperKind.SUBSCRIPTION_ROOT_FIELD)) : isInterfaceType(i) ? a.push(MapperKind.COMPOSITE_FIELD, MapperKind.INTERFACE_FIELD) : isInputObjectType(i) && a.push(MapperKind.INPUT_OBJECT_FIELD), a;
}
function getFieldMapper(t, n, i) {
let a = getFieldSpecifiers(t, i), o, s = [...a];
for (; !o && s.length > 0;) {
let t = s.pop();
o = n[t];
}
return o ?? null;
}
function getArgumentMapper(t) {
return t[MapperKind.ARGUMENT] ?? null;
}
function getDirectiveMapper(t) {
return t[MapperKind.DIRECTIVE] ?? null;
}
function getEnumValueMapper(t) {
return t[MapperKind.ENUM_VALUE] ?? null;
}
function correctASTNodes(t) {
if (isObjectType(t)) {
let n = t.toConfig();
if (n.astNode != null) {
let t = [];
for (let i in n.fields) {
let a = n.fields[i];
a.astNode != null && t.push(a.astNode);
}
n.astNode = {
...n.astNode,
kind: Kind.OBJECT_TYPE_DEFINITION,
fields: t
};
}
return n.extensionASTNodes != null && (n.extensionASTNodes = n.extensionASTNodes.map((t) => ({
...t,
kind: Kind.OBJECT_TYPE_EXTENSION,
fields: void 0
}))), new GraphQLObjectType(n);
} else if (isInterfaceType(t)) {
let n = t.toConfig();
if (n.astNode != null) {
let t = [];
for (let i in n.fields) {
let a = n.fields[i];
a.astNode != null && t.push(a.astNode);
}
n.astNode = {
...n.astNode,
kind: Kind.INTERFACE_TYPE_DEFINITION,
fields: t
};
}
return n.extensionASTNodes != null && (n.extensionASTNodes = n.extensionASTNodes.map((t) => ({
...t,
kind: Kind.INTERFACE_TYPE_EXTENSION,
fields: void 0
}))), new GraphQLInterfaceType(n);
} else if (isInputObjectType(t)) {
let n = t.toConfig();
if (n.astNode != null) {
let t = [];
for (let i in n.fields) {
let a = n.fields[i];
a.astNode != null && t.push(a.astNode);
}
n.astNode = {
...n.astNode,
kind: Kind.INPUT_OBJECT_TYPE_DEFINITION,
fields: t
};
}
return n.extensionASTNodes != null && (n.extensionASTNodes = n.extensionASTNodes.map((t) => ({
...t,
kind: Kind.INPUT_OBJECT_TYPE_EXTENSION,
fields: void 0
}))), new GraphQLInputObjectType(n);
} else if (isEnumType(t)) {
let n = t.toConfig();
if (n.astNode != null) {
let t = [];
for (let i in n.values) {
let a = n.values[i];
a.astNode != null && t.push(a.astNode);
}
n.astNode = {
...n.astNode,
values: t
};
}
return n.extensionASTNodes != null && (n.extensionASTNodes = n.extensionASTNodes.map((t) => ({
...t,
values: void 0
}))), new GraphQLEnumType(n);
} else return t;
}
function mergeDeep(t, n = !1, i = !1, a = !1) {
if (t.length === 0) return;
if (t.length === 1) return t[0];
let o, s = !0, c = t.every((t) => {
if (Array.isArray(t)) {
if (o === void 0) return o = t.length, !0;
if (o === t.length) return !0;
} else s = !1;
return !1;
});
if (a && c) return Array(o).fill(null).map((o, s) => mergeDeep(t.map((t) => t[s]), n, i, a));
if (s) return t.flat(1);
let d, f;
n && (f = t.find((t) => isObject$3(t)), f && (d ??= {}, Object.setPrototypeOf(d, Object.create(Object.getPrototypeOf(f)))));
for (let o of t) if (o != null) if (isObject$3(o)) {
if (f) {
let t = Object.getPrototypeOf(d), n = Object.getPrototypeOf(o);
if (n) for (let i of Object.getOwnPropertyNames(n)) {
let a = Object.getOwnPropertyDescriptor(n, i);
isSome(a) && Object.defineProperty(t, i, a);
}
}
for (let t in o) d ??= {}, t in d ? d[t] = mergeDeep([d[t], o[t]], n, i, a) : d[t] = o[t];
} else d = Array.isArray(o) && Array.isArray(d) ? mergeDeep([d, o], n, i, a) : o;
return d;
}
function isObject$3(t) {
return t && typeof t == "object" && !Array.isArray(t);
}
function getResponseKeyFromInfo(t) {
return t.fieldNodes[0].alias == null ? t.fieldName : t.fieldNodes[0].alias.value;
}
function implementsAbstractType(t, n, i) {
return i == null || n == null ? !1 : n === i ? !0 : isCompositeType(n) && isCompositeType(i) ? doTypesOverlap(t, n, i) : !1;
}
var AccumulatorMap = class extends Map {
get [Symbol.toStringTag]() {
return "AccumulatorMap";
}
add(t, n) {
let i = this.get(t);
i === void 0 ? this.set(t, [n]) : i.push(n);
}
};
const GraphQLDeferDirective = new GraphQLDirective({
name: "defer",
description: "Directs the executor to defer this fragment when the `if` argument is true or undefined.",
locations: [DirectiveLocation.FRAGMENT_SPREAD, DirectiveLocation.INLINE_FRAGMENT],
args: {
if: {
type: new GraphQLNonNull(GraphQLBoolean),
description: "Deferred when true or undefined.",
defaultValue: !0
},
label: {
type: GraphQLString,
description: "Unique name"
}
}
}), GraphQLStreamDirective = new GraphQLDirective({
name: "stream",
description: "Directs the executor to stream plural fields when the `if` argument is true or undefined.",
locations: [DirectiveLocation.FIELD],
args: {
if: {
type: new GraphQLNonNull(GraphQLBoolean),
description: "Stream when true or undefined.",
defaultValue: !0
},
label: {
type: GraphQLString,
description: "Unique name"
},
initialCount: {
defaultValue: 0,
type: GraphQLInt,
description: "Number of items to return immediately"
}
}
});
function collectFieldsImpl(t, n, i, a, o, s, c, d) {
for (let f of o.selections) switch (f.kind) {
case Kind.FIELD:
if (!shouldIncludeNode(i, f)) continue;
s.add(getFieldEntryKey(f), f);
break;
case Kind.INLINE_FRAGMENT: {
if (!shouldIncludeNode(i, f) || !doesFragmentConditionMatch(t, f, a)) continue;
let o = getDeferValues(i, f);
if (o) {
let s = new AccumulatorMap();
collectFieldsImpl(t, n, i, a, f.selectionSet, s, c, d), c.push({
label: o.label,
fields: s
});
} else collectFieldsImpl(t, n, i, a, f.selectionSet, s, c, d);
break;
}
case Kind.FRAGMENT_SPREAD: {
let o = f.name.value;
if (!shouldIncludeNode(i, f)) continue;
let g = getDeferValues(i, f);
if (d.has(o) && !g) continue;
let b = n[o];
if (!b || !doesFragmentConditionMatch(t, b, a)) continue;
if (g || d.add(o), g) {
let o = new AccumulatorMap();
collectFieldsImpl(t, n, i, a, b.selectionSet, o, c, d), c.push({
label: g.label,
fields: o
});
} else collectFieldsImpl(t, n, i, a, b.selectionSet, s, c, d);
break;
}
}
}
function collectFields(t, n, i, a, o) {
let s = new AccumulatorMap(), c = [];
return collectFieldsImpl(t, n, i, a, o, s, c, /* @__PURE__ */ new Set()), {
fields: s,
patches: c
};
}
function shouldIncludeNode(t, n) {
return !(getDirectiveValues(GraphQLSkipDirective, n, t)?.if === !0 || getDirectiveValues(GraphQLIncludeDirective, n, t)?.if === !1);
}
function doesFragmentConditionMatch(t, n, i) {
let a = n.typeCondition;
if (!a) return !0;
let o = typeFromAST(t, a);
return o === i ? !0 : isAbstractType(o) ? t.getPossibleTypes(o).includes(i) : !1;
}
function getFieldEntryKey(t) {
return t.alias ? t.alias.value : t.name.value;
}
function getDeferValues(t, n) {
let i = getDirectiveValues(GraphQLDeferDirective, n, t);
if (i && i.if !== !1) return { label: typeof i.label == "string" ? i.label : void 0 };
}
const collectSubFields = memoize5(function(t, n, i, a, o) {
let s = new AccumulatorMap(), c = /* @__PURE__ */ new Set(), d = [], f = {
fields: s,
patches: d
};
for (let f of o) f.selectionSet && collectFieldsImpl(t, n, i, a, f.selectionSet, s, d, c);
return f;
});
function getOperationASTFromDocument(t, n) {
let i = getOperationAST(t, n);
if (!i) throw Error(`Cannot infer operation ${n || ""}`);
return i;
}
const getOperationASTFromRequest$1 = memoize1(function(t) {
return getOperationASTFromDocument(t.document, t.operationName);
});
function isAsyncIterable$1(t) {
return t?.[Symbol.asyncIterator] != null;
}
function addPath(t, n, i) {
return {
prev: t,
key: n,
typename: i
};
}
function pathToArray(t) {
let n = [], i = t;
for (; i;) n.push(i.key), i = i.prev;
return n.reverse();
}
function printPathArray(t) {
return t.map((t) => typeof t == "number" ? "[" + t.toString() + "]" : "." + t).join("");
}
function coerceError(t) {
if (t instanceof Error) return t;
if (typeof t == "object" && t && "message" in t && typeof t.message == "string") {
let n;
"cause" in t && (n = { cause: t.cause });
let i = Error(t.message, n);
return "stack" in t && typeof t.stack == "string" && (i.stack = t.stack), "name" in t && typeof t.name == "string" && (i.name = t.name), i;
}
return Error(String(t));
}
function flattenAsyncIterable(t) {
let n = t[Symbol.asyncIterator](), i, a, o = !1;
async function s() {
if (o) return {
value: void 0,
done: !0
};
try {
if (!i) {
if (a) return await a, await s();
let t;
a = new Promise((n) => {
t = n;
});
let c = await n.next();
return c.done ? (o = !0, await s()) : (i = c.value[Symbol.asyncIterator](), a = void 0, t(), await s());
}
let t = i, c = await i.next();
return c.done ? (i === t && (i = void 0), await s()) : c;
} catch (t) {
throw o = !0, t;
}
}
return {
next: s,
async return() {
return o = !0, await Promise.all([i?.return?.(), n.return?.()]), {
value: void 0,
done: !0
};
},
async throw(t) {
/* c8 ignore next */
throw o = !0, await Promise.all([i?.throw?.(t), n.throw?.(t)]), t;
},
[Symbol.asyncIterator]() {
return this;
},
async [DisposableSymbols.asyncDispose]() {
o = !0, await Promise.all([i?.[DisposableSymbols.asyncDispose]?.(), n?.[DisposableSymbols.asyncDispose]?.()]);
}
};
}
function invariant(t, n) {
if (!t) throw Error(n ?? "Unexpected invariant triggered.");
}
function promiseForObject(t, n, i) {
n?.throwIfAborted();
let a = Object.create(null), o = [];
for (let n in t) {
let i = handleMaybePromise(() => t[n], (t) => {
a[n] = t;
});
isPromise(i) && o.push(i);
}
if (!o.length) return a;
let s = o.length === 1 ? o[0] : Promise.all(o);
return i ? Promise.race([i, s]).then(() => a) : s.then(() => a);
}
function getVariableValues(t, n, i, a) {
let o = [], s = a?.maxErrors;
try {
let a = coerceVariableValues(t, n, i, (t) => {
if (s != null && o.length >= s) throw createGraphQLError("Too many errors processing variables, error limit reached. Execution aborted.");
o.push(t);
});
if (o.length === 0) return { coerced: a };
} catch (t) {
o.push(t);
}
return { errors: o };
}
function coerceVariableValues(t, n, i, a) {
let o = {};
for (let s of n) {
let n = s.variable.name.value, c = typeFromAST(t, s.type);
if (!isInputType(c)) {
let t = print(s.type);
a(createGraphQLError(`Variable "$${n}" expected value of type "${t}" which cannot be used as an input type.`, { nodes: s.type }));
continue;
}
if (!hasOwnProperty$1(i, n)) {
if (s.defaultValue) o[n] = valueFromAST(s.defaultValue, c);
else if (isNonNullType(c)) {
let t = inspect(c);
a(createGraphQLError(`Variable "$${n}" of required type "${t}" was not provided.`, { nodes: s }));
}
continue;
}
let d = i[n];
if (d === null && isNonNullType(c)) {
let t = inspect(c);
a(createGraphQLError(`Variable "$${n}" of non-null type "${t}" must not be null.`, { nodes: s }));
continue;
}
o[n] = coerceInputValue(d, c, (t, i, o) => {
let c = `Variable "$${n}" got invalid value ` + inspect(i);
t.length > 0 && (c += ` at "${n}${printPathArray(t)}"`), a(createGraphQLError(c + "; " + o.message, {
nodes: s,
originalError: o
}));
});
}
return o;
}
var collectSubfields = memoize3((t, n, i) => collectSubFields(t.schema, t.fragments, t.variableValues, n, i));
function execute(t) {
let n = buildExecutionContext(t);
return "schema" in n ? executeImpl(n) : { errors: n.map((t) => (Object.defineProperty(t, "extensions", { value: {
...t.extensions,
http: {
...t.extensions?.http || {},
status: 400
}
} }), t)) };
}
function executeImpl(t) {
return t.signal?.throwIfAborted(), handleMaybePromise(() => executeOperation(t), (n) => {
let i = buildResponse(n, t.errors);
return t.subsequentPayloads.size > 0 ? {
initialResult: {
...i,
hasNext: !0
},
subsequentResults: yieldSubsequentPayloads(t)
} : i;
}, (n) => (t.signal?.throwIfAborted(), n.errors ? t.errors.push(...n.errors) : t.errors.push(n), buildResponse(null, t.errors)));
}
function buildResponse(t, n) {
return n.length === 0 ? { data: t } : {
errors: n,
data: t
};
}
const getFragmentsFromDocument = memoize1(function(t) {
let n = Object.create(null);
for (let i of t.definitions) i.kind === Kind.FRAGMENT_DEFINITION && (n[i.name.value] = i);
return n;
});
function buildExecutionContext(t) {
let { schema: n, document: i, rootValue: a, contextValue: o, variableValues: s, operationName: c, fieldResolver: d, typeResolver: f, subscribeFieldResolver: g, signal: b, schemaCoordinateInErrors: x } = t;
b?.throwIfAborted(), assertValidSchema(n);
let S = getFragmentsFromDocument(i), C;
for (let t of i.definitions) switch (t.kind) {
case Kind.OPERATION_DEFINITION:
if (c == null) {
if (C !== void 0) return [createGraphQLError("Must provide operation name if query contains multiple operations.", { extensions: { code: "OPERATION_RESOLUTION_FAILURE" } })];
C = t;
} else t.name?.value === c && (C = t);
break;
default:
}
if (C == null) return c == null ? [createGraphQLError("Must provide an operation.", { extensions: { code: "OPERATION_RESOLUTION_FAILURE" } })] : [createGraphQLError(`Unknown operation named "${c}".`, { extensions: { code: "OPERATION_RESOLUTION_FAILURE" } })];
/* c8 ignore next */
let w = C.variableDefinitions ?? [], E = getVariableValues(n, w, s ?? {}, { maxErrors: 50 });
if (E.errors) return E.errors;
b?.throwIfAborted();
let O, A;
if (b) {
let t = /* @__PURE__ */ new Set(), n = createDeferredPromise();
A = n.promise;
let i = () => {
n.reject(b.reason), b.removeEventListener("abort", i);
};
b.addEventListener("abort", i, { once: !0 }), A.catch(() => {
for (let n of t) n();
t.clear();
}), O = (n) => {
t.add(n);
};
}
return {
schema: n,
fragments: S,
rootValue: a,
contextValue: o,
operation: C,
variableValues: E.coerced,
fieldResolver: d ?? defaultFieldResolver$1,
typeResolver: f ?? defaultTypeResolver,
subscribeFieldResolver: g ?? defaultFieldResolver$1,
subsequentPayloads: /* @__PURE__ */ new Set(),
errors: [],
signal: b,
onSignalAbort: O,
signalPromise: A,
schemaCoordinateInErrors: x
};
}
function buildPerEventExecutionContext(t, n) {
return {
...t,
rootValue: n,
subsequentPayloads: /* @__PURE__ */ new Set(),
errors: []
};
}
function executeOperation(t) {
let { operation: n, schema: i, fragments: a, variableValues: o, rootValue: s } = t, c = getDefinedRootType(i, n.operation, [n]);
c ?? createGraphQLError(`Schema is not configured to execute ${n.operation} operation.`, { nodes: n });
let { fields: d, patches: f } = collectFields(i, a, o, c, n.selectionSet), g;
g = n.operation === "mutation" ? executeFieldsSerially(t, c, s, void 0, d) : executeFields(t, c, s, void 0, d);
for (let n of f) {
let { label: i, fields: a } = n;
executeDeferredFragment(t, c, s, a, i, void 0);
}
return g;
}
function executeFieldsSerially(t, n, i, a, o) {
return promiseReduce(o, (o, [s, c]) => {
let d = addPath(a, s, n.name);
return t.signal?.throwIfAborted(), handleMaybePromise(() => executeField(t, n, i, c, d), (t) => (t === void 0 || (o[s] = t), o));
}, Object.create(null));
}
function executeFields(t, n, i, a, o, s) {
let c = Object.create(null), d = !1;
try {
for (let [f, g] of o) {
t.signal?.throwIfAborted();
let o = addPath(a, f, n.name), b = executeField(t, n, i, g, o, s);
b !== void 0 && (c[f] = b, isPromise(b) && (d = !0));
}
} catch (n) {
if (n !== t.signal?.reason && d) return handleMaybePromise(() => promiseForObject(c, t.signal), () => {
throw n;
}, () => {
throw n;
});
throw n;
}
return d ? promiseForObject(c, t.signal, t.signalPromise) : c;
}
function executeField(t, n, i, a, o, s) {
let c = s?.errors ?? t.errors, d = getFieldDef(t.schema, n, a[0]);
if (!d) return;
let f = d.type, g = d.resolve ?? t.fieldResolver, b = buildResolveInfo(t, d, a, n, o);
try {
t.signal?.throwIfAborted();
let n = getArgumentValues(d, a[0], t.variableValues), x = t.contextValue, S = g(i, n, x, b), C;
return C = isPromise(S) ? S.then((n) => completeValue(t, f, a, b, o, n, s)) : completeValue(t, f, a, b, o, S, s), isPromise(C) ? C.then(void 0, (n) => {
if (n instanceof AggregateError) {
let i;
for (let d of n.errors) {
d = coerceError(d);
let n = locatedError$1(d, a, pathToArray(o), t.schemaCoordinateInErrors && b);
i = handleFieldError(n, f, c), filterSubsequentPayloads(t, o, s);
}
return i;
}
n = coerceError(n);
let i = locatedError$1(n, a, pathToArray(o), t.schemaCoordinateInErrors && b), d = handleFieldError(i, f, c);
return filterSubsequentPayloads(t, o, s), d;
}) : C;
} catch (n) {
if (n instanceof AggregateError) {
let i;
for (let d of n.errors) {
d = coerceError(d);
let n = locatedError$1(d, a, pathToArray(o), t.schemaCoordinateInErrors && b);
i = handleFieldError(n, f, c), filterSubsequentPayloads(t, o, s);
}
return i;
}
let i = coerceError(n), d = locatedError$1(i, a, pathToArray(o), t.schemaCoordinateInErrors && b), g = handleFieldError(d, f, c);
return filterSubsequentPayloads(t, o, s), g;
}
}
function buildResolveInfo(t, n, i, a, o) {
return {
fieldName: n.name,
fieldNodes: i,
returnType: n.type,
parentType: a,
path: o,
schema: t.schema,
fragments: t.fragments,
rootValue: t.rootValue,
operation: t.operation,
variableValues: t.variableValues,
signal: t.signal
};
}
function handleFieldError(t, n, i) {
if (isNonNullType(n) || t.extensions?.CRITICAL_ERROR) throw t;
return i.push(t), null;
}
function completeValue(t, n, i, a, o, s, c) {
if (s instanceof Error) throw s;
if (isNonNullType(n)) {
let d = completeValue(t, n.ofType, i, a, o, s, c);
if (d === null) throw Error(`Cannot return null for non-nullable field ${a.parentType.name}.${a.fieldName}.`);
return d;
}
if (s == null) return null;
if (isListType(n)) return completeListValue(t, n, i, a, o, s, c);
if (isLeafType(n)) return completeLeafValue(n, s);
if (isAbstractType(n)) return completeAbstractValue(t, n, i, a, o, s, c);
if (isObjectType(n)) return completeObjectValue(t, n, i, a, o, s, c);
/* c8 ignore next 6 */
console.assert(!1, "Cannot complete value of unexpected output type: " + inspect(n));
}
function getStreamValues(t, n, i) {
if (typeof i.key == "number") return;
let a = getDirectiveValues(GraphQLStreamDirective, n[0], t.variableValues);
if (a && a.if !== !1) return invariant(typeof a.initialCount == "number", "initialCount must be a number"), invariant(a.initialCount >= 0, "initialCount must be a positive integer"), {
initialCount: a.initialCount,
label: typeof a.label == "string" ? a.label : void 0
};
}
async function completeAsyncIteratorValue(t, n, i, a, o, s, c) {
t.signal?.throwIfAborted(), s.return && t.onSignalAbort?.(() => {
s.return?.();
});
let d = c?.errors ?? t.errors, f = getStreamValues(t, i, o), g = !1, b = [], x = 0;
for (;;) {
if (f && typeof f.initialCount == "number" && x >= f.initialCount) {
executeStreamIterator(x, s, t, i, a, n, o, f.label, c);
break;
}
let S = addPath(o, x, void 0), C;
try {
if (C = await s.next(), C.done) break;
} catch (o) {
let s = coerceError(o), c = locatedError$1(s, i, pathToArray(S), t.schemaCoordinateInErrors && a);
b.push(handleFieldError(c, n, d));
break;
}
completeListItemValue(C.value, b, d, t, n, i, a, S, c) && (g = !0), x += 1;
}
return g ? Promise.all(b) : b;
}
function completeListValue(t, n, i, a, o, s, c) {
let d = n.ofType, f = c?.errors ?? t.errors;
if (isAsyncIterable$1(s)) {
let n = s[Symbol.asyncIterator]();
return completeAsyncIteratorValue(t, d, i, a, o, n, c);
}
if (!isIterableObject(s)) throw createGraphQLError(`Expected Iterable, but did not find one for field "${a.parentType.name}.${a.fieldName}".`);
let g = getStreamValues(t, i, o), b = !1, x = c, S = [], C = 0;
for (let n of s) {
let s = addPath(o, C, void 0);
if (g && typeof g.initialCount == "number" && C >= g.initialCount) {
x = executeStreamField(o, s, n, t, i, a, d, g.label, x), C++;
continue;
}
completeListItemValue(n, S, f, t, d, i, a, s, c) && (b = !0), C++;
}
return b ? Promise.all(S) : S;
}
function completeListItemValue(t, n, i, a, o, s, c, d, f) {
try {
let g;
if (g = isPromise(t) ? t.then((t) => completeValue(a, o, s, c, d, t, f)) : completeValue(a, o, s, c, d, t, f), isPromise(g)) return n.push(g.then(void 0, (t) => {
t = coerceError(t);
let n = locatedError$1(t, s, pathToArray(d), a.schemaCoordinateInErrors && c), g = handleFieldError(n, o, i);
return filterSubsequentPayloads(a, d, f), g;
})), !0;
n.push(g);
} catch (t) {
let g = coerceError(t), b = locatedError$1(g, s, pathToArray(d), a.schemaCoordinateInErrors && c), x = handleFieldError(b, o, i);
filterSubsequentPayloads(a, d, f), n.push(x);
}
return !1;
}
function completeLeafValue(t, n) {
let i;
try {
i = t.serialize(n);
} catch (t) {
throw t instanceof GraphQLError ? Error(t.message) : t;
}
if (i == null) throw Error(`Expected \`${inspect(t)}.serialize(${inspect(n)})\` to return non-nullable value, returned: ${inspect(i)}`);
return i;
}
function completeAbstractValue(t, n, i, a, o, s, c) {
let d = n.resolveType ?? t.typeResolver, f = t.contextValue, g = d(s, f, a, n);
return isPromise(g) ? g.then((d) => completeObjectValue(t, ensureValidRuntimeType(d, t, n, i, a, s), i, a, o, s, c)) : completeObjectValue(t, ensureValidRuntimeType(g, t, n, i, a, s), i, a, o, s, c);
}
function ensureValidRuntimeType(t, n, i, a, o, s) {
if (t == null) throw createGraphQLError(`Abstract type "${i.name}" must resolve to an Object type at runtime for field "${o.parentType.name}.${o.fieldName}". Either the "${i.name}" type should provide a "resolveType" function or each possible type should provide an "isTypeOf" function.`, { nodes: a });
if (isObjectType(t)) {
if (versionInfo.major >= 16) throw createGraphQLError("Support for returning GraphQLObjectType from resolveType was removed in graphql-js@16.0.0 please return type name instead.");
t = t.name;
}
if (typeof t != "string") throw createGraphQLError(`Abstract type "${i.name}" must resolve to an Object type at runtime for field "${o.parentType.name}.${o.fieldName}" with value ${inspect(s)}, received "${inspect(t)}".`);
let c = n.schema.getType(t);
if (c == null) throw createGraphQLError(`Abstract type "${i.name}" was resolved to a type "${t}" that does not exist inside the schema.`, { nodes: a });
if (!isObjectType(c)) throw createGraphQLError(`Abstract type "${i.name}" was resolved to a non-object type "${t}".`, { nodes: a });
if (!n.schema.isSubType(i, c)) throw createGraphQLError(`Runtime Object type "${c.name}" is not a possible type for "${i.name}".`, { nodes: a });
return c;
}
function completeObjectValue(t, n, i, a, o, s, c) {
if (n.isTypeOf) {
let d = n.isTypeOf(s, t.contextValue, a);
if (isPromise(d)) return d.then((a) => {
if (!a) throw invalidReturnTypeError(n, s, i);
return collectAndExecuteSubfields(t, n, i, o, s, c);
});
if (!d) throw invalidReturnTypeError(n, s, i);
}
return collectAndExecuteSubfields(t, n, i, o, s, c);
}
function invalidReturnTypeError(t, n, i) {
return createGraphQLError(`Expected value of type "${t.name}" but got: ${inspect(n)}.`, { nodes: i });
}
function collectAndExecuteSubfields(t, n, i, a, o, s) {
let { fields: c, patches: d } = collectSubfields(t, n, i), f = executeFields(t, n, o, a, c, s);
for (let i of d) {
let { label: c, fields: d } = i;
executeDeferredFragment(t, n, o, d, c, a, s);
}
return f;
}
const defaultTypeResolver = function(t, n, i, a) {
if (isObjectLike(t) && typeof t.__typename == "string") return t.__typename;
let o = i.schema.getPossibleTypes(a), s = [];
for (let a = 0; a < o.length; a++) {
let c = o[a];
if (c.isTypeOf) {
let o = c.isTypeOf(t, n, i);
if (isPromise(o)) s[a] = o;
else if (o) return c.name;
}
}
if (s.length) return Promise.all(s).then((t) => {
for (let n = 0; n < t.length; n++) if (t[n]) return o[n].name;
});
}, defaultFieldResolver$1 = function(t, n, i, a) {
if (isObjectLike(t) || typeof t == "function") {
let o = t[a.fieldName];
return typeof o == "function" ? t[a.fieldName](n, i, a) : o;
}
};
function subscribe(t) {
let n = buildExecutionContext(t);
if (!("schema" in n)) {
for (let t of n) {
let n = t.extensions ||= {}, i = n.http ||= {};
i.status = 400, t.extensions.code = "BAD_USER_INPUT";
}
return { errors: n };
}
let i = createSourceEventStreamImpl(n);
return isPromise(i) ? i.then((t) => mapSourceToResponse(n, t)) : mapSourceToResponse(n, i);
}
function isIncrementalResults(t) {
return t?.initialResult;
}
function flattenIncrementalResults(t) {
let n = t.subsequentResults, i = !1, a = !1;
return {
[Symbol.asyncIterator]() {
return this;
},
next() {
return a ? fakePromise({
value: void 0,
done: a
}) : i ? n.next() : (i = !0, fakePromise({
value: t.initialResult,
done: a
}));
},
return() {
return a = !0, n.return();
},
throw(t) {
return a = !0, n.throw(t);
},
[DisposableSymbols.asyncDispose]() {
return a = !0, n?.[DisposableSymbols.asyncDispose]?.();
}
};
}
async function* ensureAsyncIterable(t) {
"initialResult" in t ? yield* flattenIncrementalResults(t) : yield t;
}
function mapSourceToResponse(t, n) {
return isAsyncIterable$1(n) ? flattenAsyncIterable(mapAsyncIterator(n, (n) => handleMaybePromise(() => executeImpl(buildPerEventExecutionContext(t, n)), ensureAsyncIterable), (n) => {
throw n instanceof AggregateError ? AggregateError(n.errors.map((n) => wrapError(n, t.operation)), n.message) : wrapError(n, t.operation);
})) : n;
}
function wrapError(t, n) {
return createGraphQLError(t.message, {
originalError: t,
nodes: [n]
});
}
function createSourceEventStreamImpl(t) {
try {
let n = executeSubscription(t);
return isPromise(n) ? n.then(void 0, (t) => ({ errors: [t] })) : n;
} catch (t) {
return { errors: [t] };
}
}
function executeSubscription(t) {
let { schema: n, fragments: i, operation: a, variableValues: o, rootValue: s } = t, c = n.getSubscriptionType();
if (c == null) throw createGraphQLError("Schema is not configured to execute subscription operation.", { nodes: a });
let { fields: d } = collectFields(n, i, o, c, a.selectionSet), [f, g] = [...d.entries()][0], b = g[0].name.value, x = getFieldDef(n, c, g[0]);
if (!x) throw createGraphQLError(`The subscription field "${b}" is not defined.`, { nodes: g });
let S = addPath(void 0, f, c.name), C = buildResolveInfo(t, x, g, c, S);
try {
let n = getArgumentValues(x, g[0], o), i = t.contextValue, a = (x.subscribe ?? t.subscribeFieldResolver)(s, n, i, C);
return isPromise(a) ? a.then((n) => assertEventStream(n, t.signal, t.onSignalAbort)).then(void 0, (n) => {
throw locatedError$1(n, g, pathToArray(S), t.schemaCoordinateInErrors && C);
}) : assertEventStream(a, t.signal, t.onSignalAbort);
} catch (n) {
throw locatedError$1(n, g, pathToArray(S), t.schemaCoordinateInErrors && C);
}
}
function assertEventStream(t, n, i) {
if (n?.throwIfAborted(), t instanceof Error) throw t;
if (!isAsyncIterable$1(t)) throw createGraphQLError(`Subscription field must return Async Iterable. Received: ${inspect(t)}.`);
return i ? { [Symbol.asyncIterator]() {
let n = t[Symbol.asyncIterator]();
return n.return && i?.(() => {
n.return?.();
}), n;
} } : t;
}
function executeDeferredFragment(t, n, i, a, o, s, c) {
let d = new DeferredFragmentRecord({
label: o,
path: s,
parentContext: c,
exeContext: t
}), f;
try {
f = executeFields(t, n, i, s, a, d), isPromise(f) && (f = f.then(null, (t) => (d.errors.push(t), null)));
} catch (t) {
d.errors.push(t), f = null;
}
d.addData(f);
}
function executeStreamField(t, n, i, a, o, s, c, d, f) {
let g = new StreamRecord({
label: d,
path: n,
parentContext: f,
exeContext: a
}), b;
try {
try {
b = isPromise(i) ? i.then((t) => completeValue(a, c, o, s, n, t, g)) : completeValue(a, c, o, s, n, i, g), isPromise(b) && (b = b.then(void 0, (t) => {
t = coerceError(t);
let i = locatedError$1(t, o, pathToArray(n), a.schemaCoordinateInErrors && s), d = handleFieldError(i, c, g.errors);
return filterSubsequentPayloads(a, n, g), d;
}));
} catch (t) {
let i = coerceError(t), d = locatedError$1(i, o, pathToArray(n), a.schemaCoordinateInErrors && s);
b = handleFieldError(d, c, g.errors), filterSubsequentPayloads(a, n, g);
}
} catch (n) {
return g.errors.push(n), filterSubsequentPayloads(a, t, g), g.addItems(null), g;
}
let x;
return x = isPromise(b) ? b.then((t) => [t], (n) => (g.errors.push(n), filterSubsequentPayloads(a, t, g), null)) : [b], g.addItems(x), g;
}
async function executeStreamIteratorItem(t, n, i, a, o, s, c) {
let d;
try {
let { value: n, done: i } = await t.next();
if (i) return s.setIsCompletedIterator(), {
done: i,
value: void 0
};
d = n;
} catch (t) {
let d = coerceError(t), f = locatedError$1(d, i, pathToArray(c), n.schemaCoordinateInErrors && a);
return {
done: !0,
value: handleFieldError(f, o, s.errors)
};
}
let f;
try {
return f = completeValue(n, o, i, a, c, d, s), isPromise(f) && (f = f.then(void 0, (t) => {
let d = locatedError$1(t, i, pathToArray(c), n.schemaCoordinateInErrors && a), f = handleFieldError(d, o, s.errors);
return filterSubsequentPayloads(n, c, s), f;
})), {
done: !1,
value: f
};
} catch (t) {
let d = locatedError$1(t, i, pathToArray(c), n.schemaCoordinateInErrors && a), f = handleFieldError(d, o, s.errors);
return filterSubsequentPayloads(n, c, s), {
done: !1,
value: f
};
}
}
async function executeStreamIterator(t, n, i, a, o, s, c, d, f) {
let g = t, b = f ?? void 0;
for (;;) {
let t = addPath(c, g, void 0), f = new StreamRecord({
label: d,
path: t,
parentContext: b,
iterator: n,
exeContext: i
}), x;
try {
x = await executeStreamIteratorItem(n, i, a, o, s, f, t);
} catch (t) {
f.errors.push(t), filterSubsequentPayloads(i, c, f), f.addItems(null), n?.return && n.return().catch(() => {});
return;
}
let { done: S, value: C } = x, w;
if (w = isPromise(C) ? C.then((t) => [t], (t) => (f.errors.push(t), filterSubsequentPayloads(i, c, f), null)) : [C], f.addItems(w), S) break;
b = f, g++;
}
}
function filterSubsequentPayloads(t, n, i) {
let a = pathToArray(n);
t.subsequentPayloads.forEach((n) => {
if (n !== i) {
for (let t = 0; t < a.length; t++) if (n.path[t] !== a[t]) return;
isStreamPayload(n) && n.iterator?.return && n.iterator.return().catch(() => {}), t.subsequentPayloads.delete(n);
}
});
}
function getCompletedIncrementalResults(t) {
let n = [];
for (let i of t.subsequentPayloads) {
let a = {};
if (i.isCompleted) {
if (t.subsequentPayloads.delete(i), isStreamPayload(i)) {
let t = i.items;
if (i.isCompletedIterator) continue;
a.items = t;
} else a.data = i.data ?? null;
a.path = i.path, i.label && (a.label = i.label), i.errors.length > 0 && (a.errors = i.errors), n.push(a);
}
}
return n;
}
function yieldSubsequentPayloads(t) {
let n = !1;
async function i() {
if (n) return {
value: void 0,
done: !0
};
let a = Array.from(t.subsequentPayloads).map((t) => t.promise);
if (t.signalPromise ? await Promise.race([t.signalPromise, ...a]) : await Promise.race(a), n) return {
value: void 0,
done: !0
};
let o = getCompletedIncrementalResults(t), s = t.subsequentPayloads.size > 0;
return !o.length && s ? i() : (s || (n = !0), {
value: o.length ? {
incremental: o,
hasNext: s
} : { hasNext: s },
done: !1
});
}
function a() {
let n = [];
return t.subsequentPayloads.forEach((t) => {
isStreamPayload(t) && t.iterator?.return && n.push(t.iterator.return());
}), Promise.all(n);
}
return {
[Symbol.asyncIterator]() {
return this;
},
next: i,
async return() {
return await a(), n = !0, {
value: void 0,
done: !0
};
},
async throw(t) {
throw await a(), n = !0, t;
},
async [DisposableSymbols.asyncDispose]() {
await a(), n = !0;
}
};
}
var DeferredFragmentRecord = class {
type;
errors;
label;
path;
promise;
data;
parentContext;
isCompleted;
_exeContext;
_resolve;
constructor(t) {
this.type = "defer", this.label = t.label, this.path = pathToArray(t.path), this.parentContext = t.parentContext, this.errors = [], this._exeContext = t.exeContext, this._exeContext.subsequentPayloads.add(this), this.isCompleted = !1, this.data = null, this.promise = new Promise((t) => {
this._resolve = (n) => {
t(n);
};
}).then((t) => {
this.data = t, this.isCompleted = !0;
});
}
addData(t) {
let n = this.parentContext?.promise;
if (n) {
this._resolve?.(n.then(() => t));
return;
}
this._resolve?.(t);
}
}, StreamRecord = class {
type;
errors;
label;
path;
items;
promise;
parentContext;
iterator;
isCompletedIterator;
isCompleted;
_exeContext;
_resolve;
constructor(t) {
this.type = "stream", this.items = null, this.label = t.label, this.path = pathToArray(t.path), this.parentContext = t.parentContext, this.iterator = t.iterator, this.errors = [], this._exeContext = t.exeContext, this._exeContext.subsequentPayloads.add(this), this.isCompleted = !1, this.items = null, this.promise = new Promise((t) => {
this._resolve = (n) => {
t(n);
};
}).then((t) => {
this.items = t, this.isCompleted = !0;
});
}
addItems(t) {
let n = this.parentContext?.promise;
if (n) {
this._resolve?.(n.then(() => t));
return;
}
this._resolve?.(t);
}
setIsCompletedIterator() {
this.isCompletedIterator = !0;
}
};
function isStreamPayload(t) {
return t.type === "stream";
}
function getFieldDef(t, n, i) {
let a = i.name.value;
return a === SchemaMetaFieldDef.name && t.getQueryType() === n ? SchemaMetaFieldDef : a === TypeMetaFieldDef.name && t.getQueryType() === n ? TypeMetaFieldDef : a === TypeNameMetaFieldDef.name ? TypeNameMetaFieldDef : n.getFields()[a];
}
function normalizedExecutor(t) {
let n = getOperationAST(t.document, t.operationName);
if (n == null) throw Error("Must provide an operation.");
return n.operation === "subscription" ? subscribe(t) : handleMaybePromise(() => execute(t), (t) => isIncrementalResults(t) ? flattenIncrementalResults(t) : t);
}
const executorFromSchema = memoize1(function(t) {
return function(n) {
return normalizedExecutor({
schema: t,
document: n.document,
variableValues: n.variables,
operationName: n.operationName,
rootValue: n.rootValue,
contextValue: n.context,
signal: n.signal || n.info?.signal,
schemaCoordinateInErrors: n.schemaCoordinateInErrors
});
};
});
var import_dataloader = /* @__PURE__ */ __toESM((/* @__PURE__ */ __commonJSMin(((t, n) => {
var i = /* @__PURE__ */ function() {
function t(t, n) {
if (typeof t != "function") throw TypeError("DataLoader must be constructed with a function which accepts " + ("Array<key> and returns Promise<Array<value>>, but got: " + t + "."));
this._batchLoadFn = t, this._maxBatchSize = g(n), this._batchScheduleFn = b(n), this._cacheKeyFn = x(n), this._cacheMap = S(n), this._batch = null, this.name = C(n);
}
var n = t.prototype;
return n.load = function(t) {
if (t == null) throw TypeError("The loader.load() function must be called with a value, " + ("but got: " + String(t) + "."));
var n = s(this), i = this._cacheMap, a;
if (i) {
a = this._cacheKeyFn(t);
var o = i.get(a);
if (o) {
var c = n.cacheHits ||= [];
return new Promise(function(t) {
c.push(function() {
t(o);
});
});
}
}
n.keys.push(t);
var d = new Promise(function(t, i) {
n.callbacks.push({
resolve: t,
reject: i
});
});
return i && i.set(a, d), d;
}, n.loadMany = function(t) {
if (!w(t)) throw TypeError("The loader.loadMany() function must be called with Array<key> " + ("but got: " + t + "."));
for (var n = [], i = 0; i < t.length; i++) n.push(this.load(t[i]).catch(function(t) {
return t;
}));
return Promise.all(n);
}, n.clear = function(t) {
var n = this._cacheMap;
if (n) {
var i = this._cacheKeyFn(t);
n.delete(i);
}
return this;
}, n.clearAll = function() {
var t = this._cacheMap;
return t && t.clear(), this;
}, n.prime = function(t, n) {
var i = this._cacheMap;
if (i) {
var a = this._cacheKeyFn(t);
if (i.get(a) === void 0) {
var o;
n instanceof Error ? (o = Promise.reject(n), o.catch(function() {})) : o = Promise.resolve(n), i.set(a, o);
}
}
return this;
}, t;
}(), a = typeof process == "object" && typeof process.nextTick == "function" ? function(t) {
o ||= Promise.resolve(), o.then(function() {
process.nextTick(t);
});
} : typeof setImmediate == "function" ? function(t) {
setImmediate(t);
} : function(t) {
setTimeout(t);
}, o;
function s(t) {
var n = t._batch;
if (n !== null && !n.hasDispatched && n.keys.length < t._maxBatchSize) return n;
var i = {
hasDispatched: !1,
keys: [],
callbacks: []
};
return t._batch = i, t._batchScheduleFn(function() {
c(t, i);
}), i;
}
function c(t, n) {
if (n.hasDispatched = !0, n.keys.length === 0) {
f(n);
return;
}
var i;
try {
i = t._batchLoadFn(n.keys);
} catch (i) {
return d(t, n, /* @__PURE__ */ TypeError("DataLoader must be constructed with a function which accepts Array<key> and returns Promise<Array<value>>, but the function " + ("errored synchronously: " + String(i) + ".")));
}
if (!i || typeof i.then != "function") return d(t, n, /* @__PURE__ */ TypeError("DataLoader must be constructed with a function which accepts Array<key> and returns Promise<Array<value>>, but the function did " + ("not return a Promise: " + String(i) + ".")));
i.then(function(t) {
if (!w(t)) throw TypeError("DataLoader must be constructed with a function which accepts Array<key> and returns Promise<Array<value>>, but the function did " + ("not return a Promise of an Array: " + String(t) + "."));
if (t.length !== n.keys.length) throw TypeError("DataLoader must be constructed with a function which accepts Array<key> and returns Promise<Array<value>>, but the function did not return a Promise of an Array of the same length as the Array of keys." + ("\n\nKeys:\n" + String(n.keys)) + ("\n\nValues:\n" + String(t)));
f(n);
for (var i = 0; i < n.callbacks.length; i++) {
var a = t[i];
a instanceof Error ? n.callbacks[i].reject(a) : n.callbacks[i].resolve(a);
}
}).catch(function(i) {
d(t, n, i);
});
}
function d(t, n, i) {
f(n);
for (var a = 0; a < n.keys.length; a++) t.clear(n.keys[a]), n.callbacks[a].reject(i);
}
function f(t) {
if (t.cacheHits) for (var n = 0; n < t.cacheHits.length; n++) t.cacheHits[n]();
}
function g(t) {
if (!(!t || t.batch !== !1)) return 1;
var n = t && t.maxBatchSize;
if (n === void 0) return Infinity;
if (typeof n != "number" || n < 1) throw TypeError("maxBatchSize must be a positive number: " + n);
return n;
}
function b(t) {
var n = t && t.batchScheduleFn;
if (n === void 0) return a;
if (typeof n != "function") throw TypeError("batchScheduleFn must be a function: " + n);
return n;
}
function x(t) {
var n = t && t.cacheKeyFn;
if (n === void 0) return function(t) {
return t;
};
if (typeof n != "function") throw TypeError("cacheKeyFn must be a function: " + n);
return n;
}
function S(t) {
if (!(!t || t.cache !== !1)) return null;
var n = t && t.cacheMap;
if (n === void 0) return /* @__PURE__ */ new Map();
if (n !== null) {
var i = [
"get",
"set",
"delete",
"clear"
].filter(function(t) {
return n && typeof n[t] != "function";
});
if (i.length !== 0) throw TypeError("Custom cacheMap missing methods: " + i.join(", "));
}
return n;
}
function C(t) {
return t && t.name ? t.name : null;
}
function w(t) {
return typeof t == "object" && !!t && typeof t.length == "number" && (t.length === 0 || t.length > 0 && Object.prototype.hasOwnProperty.call(t, t.length - 1));
}
n.exports = i;
})))());
function createPrefix(t) {
return `_v${t}_`;
}
function matchKey(t) {
let n = /^_v(\d+)_(.*)$/.exec(t);
return n && n.length === 3 && !isNaN(Number(n[1])) && n[2] ? {
index: Number(n[1]),
originalKey: n[2]
} : null;
}
function parseKey(t) {
let n = matchKey(t);
if (!n) throw Error(`Key ${t} is not correctly prefixed`);
return n;
}
function parseKeyFromPath(t) {
let n = 0, i = null;
for (; !i && n < t.length; n++) {
let a = t[n];
typeof a == "string" && (i = matchKey(a));
}
if (!i) throw Error(`Path ${t.join(".")} does not contain correctly prefixed key`);
return {
...i,
keyOffset: n
};
}
function mergeRequests(t, n) {
if (t.length === 1) return t[0];
let i = t[0].subgraphName, a = /* @__PURE__ */ Object.create(null), o = [], s = [], c = [], d = /* @__PURE__ */ Object.create(null);
for (let i = 0; i < t.length; i++) {
let f = t[i];
if (f) {
let t = prefixRequest(createPrefix(i), f);
for (let n of t.document.definitions) isOperationDefinition(n) && (s.push(...n.selectionSet.selections), n.variableDefinitions && o.push(...n.variableDefinitions)), isFragmentDefinition(n) && c.push(n);
Object.assign(a, t.variables), d = n(d, f);
}
}
let f = t[0];
if (!f) throw Error("At least one request is required");
let g = f.operationType ?? getOperationASTFromRequest$1(f).operation, b = {
kind: Kind.OPERATION_DEFINITION,
operation: g,
variableDefinitions: o,
selectionSet: {
kind: Kind.SELECTION_SET,
selections: s
}
}, x = f.operationName ?? f.info?.operation?.name?.value;
return x && (b.name = {
kind: Kind.NAME,
value: x
}), {
subgraphName: i,
document: {
kind: Kind.DOCUMENT,
definitions: [b, ...c]
},
variables: a,
extensions: d,
context: f.context,
info: f.info,
operationType: g,
rootValue: f.rootValue
};
}
function prefixRequest(t, n) {
function i(n) {
return prefixNodeName(n, t);
}
let a = aliasTopLevelFields(t, n.document), o = !1;
for (let t of a.definitions) if (isFragmentDefinition(t) || isOperationDefinition(t) && t.variableDefinitions?.length) {
o = !0;
break;
}
let s = {}, c = !1;
o && (a = visit(a, {
[Kind.VARIABLE]: i,
[Kind.FRAGMENT_DEFINITION](t) {
return c = !0, i(t);
},
[Kind.FRAGMENT_SPREAD]: (n) => (n = prefixNodeName(n, t), s[n.name.value] = !0, n)
}));
let d, f = n.variables;
if (f) for (let n in d = /* @__PURE__ */ Object.create(null), f) d[t + n] = f[n];
return c && (a = {
...a,
definitions: a.definitions.filter((t) => !isFragmentDefinition(t) || s[t.name.value])
}), {
document: a,
variables: d
};
}
function aliasTopLevelFields(t, n) {
let i = { [Kind.OPERATION_DEFINITION]: (i) => {
let { selections: a } = i.selectionSet;
return {
...i,
selectionSet: {
...i.selectionSet,
selections: aliasFieldsInSelection(t, a, n)
}
};
} };
return visit(n, i, { [Kind.DOCUMENT]: ["definitions"] });
}
function aliasFieldsInSelection(t, n, i) {
return n.map((n) => {
switch (n.kind) {
case Kind.INLINE_FRAGMENT: return aliasFieldsInInlineFragment(t, n, i);
case Kind.FRAGMENT_SPREAD: {
let a = inlineFragmentSpread(n, i);
return aliasFieldsInInlineFragment(t, a, i);
}
case Kind.FIELD:
default: return aliasField(n, t);
}
});
}
function aliasFieldsInInlineFragment(t, n, i) {
let { selections: a } = n.selectionSet;
return {
...n,
selectionSet: {
...n.selectionSet,
selections: aliasFieldsInSelection(t, a, i)
}
};
}
function inlineFragmentSpread(t, n) {
let i = n.definitions.find((n) => isFragmentDefinition(n) && n.name.value === t.name.value);
if (!i) throw Error(`Fragment ${t.name.value} does not exist`);
let { typeCondition: a, selectionSet: o } = i;
return {
kind: Kind.INLINE_FRAGMENT,
typeCondition: a,
selectionSet: o,
directives: t.directives
};
}
function prefixNodeName(t, n) {
return {
...t,
name: {
...t.name,
value: n + t.name.value
}
};
}
function aliasField(t, n) {
let i = t.alias ? t.alias : t.name;
return {
...t,
alias: {
...i,
value: n + i.value
}
};
}
function isOperationDefinition(t) {
return t.kind === Kind.OPERATION_DEFINITION;
}
function isFragmentDefinition(t) {
return t.kind === Kind.FRAGMENT_DEFINITION;
}
function splitResult({ data: t, errors: n }, i) {
let a = Array(i);
if (t) for (let n in t) {
let { index: i, originalKey: o } = parseKey(n), s = a[i];
s == null ? a[i] = { data: { [o]: t[n] } } : s.data == null ? s.data = { [o]: t[n] } : s.data[o] = t[n];
}
if (n) for (let t of n) if (t.path) {
let { index: n, originalKey: i, keyOffset: o } = parseKeyFromPath(t.path), s = relocatedError(t, [i, ...t.path.slice(o)]), c = a[n];
if (c == null) {
a[n] = { errors: [s] };
continue;
} else if (c.errors == null) {
c.errors = [s];
continue;
} else c.errors.push(s);
} else for (let n = 0; n < i; n++) {
let i = a[n];
if (i == null) {
a[n] = { errors: [t] };
continue;
} else if (i.errors == null) {
i.errors = [t];
continue;
} else i.errors.push(t);
}
return a;
}
function createBatchingExecutor(t, n, i = defaultExtensionsReducer) {
let a = createLoadFn(t, i), o = new import_dataloader.default(a, n), s = new import_dataloader.default(a, n);
return function(n) {
let i = n.operationType ?? getOperationASTFromRequest$1(n)?.operation;
switch (i) {
case "query": return o.load(n);
case "mutation": return s.load(n);
case "subscription": return t(n);
default: throw Error(`Invalid operation type "${i}"`);
}
};
}
function createLoadFn(t, n) {
return function(i) {
if (i.length === 1 && i[0]) {
let n = i[0];
return fakePromise().then(() => t(n)).catch((t) => t).then((t) => [t]);
}
let a = mergeRequests(i, n);
return fakePromise().then(() => t(a)).then((t) => splitResult(t, i.length)).catch((t) => i.map(() => t));
};
}
function defaultExtensionsReducer(t, n) {
let i = n.extensions;
return i != null && Object.assign(t, i), t;
}
var getBatchingExecutor = memoize2of4(function(t, n, i, a) {
return createBatchingExecutor(n, i, a);
}), applySchemaTransforms = memoize2(function(t, n) {
let i = n.transforms;
return i == null ? t : i.reduce((t, i) => i.transformSchema?.(t, n) || t, t);
});
function isSubschema(t) {
return !!t.transformedSchema;
}
var prototypePollutingKeys = [
"__proto__",
"constructor",
"prototype"
];
function isPrototypePollutingKey(t) {
return prototypePollutingKeys.includes(t);
}
var leftOverByDelegationPlan = /* @__PURE__ */ new WeakMap(), PLAN_LEFT_OVER = Symbol("PLAN_LEFT_OVER");
function getPlanLeftOverFromParent(t) {
if (typeof t == "object" && t) return t[PLAN_LEFT_OVER];
}
var UNPATHED_ERRORS_SYMBOL = Symbol.for("subschemaErrors"), OBJECT_SUBSCHEMA_SYMBOL = Symbol.for("initialSubschema"), FIELD_SUBSCHEMA_MAP_SYMBOL = Symbol.for("subschemaMap");
function isExternalObject(t) {
return t[UNPATHED_ERRORS_SYMBOL] !== void 0;
}
function annotateExternalObject(t, n, i, a) {
return Object.defineProperties(t, {
[OBJECT_SUBSCHEMA_SYMBOL]: {
value: i,
writable: !0
},
[FIELD_SUBSCHEMA_MAP_SYMBOL]: {
value: a,
writable: !0
},
[UNPATHED_ERRORS_SYMBOL]: {
value: n,
writable: !0
}
}), t;
}
function getSubschema(t, n) {
return t[FIELD_SUBSCHEMA_MAP_SYMBOL]?.[n] ?? t[OBJECT_SUBSCHEMA_SYMBOL];
}
function getUnpathedErrors(t) {
return t[UNPATHED_ERRORS_SYMBOL];
}
var EMPTY_ARRAY = [], EMPTY_OBJECT = /* @__PURE__ */ Object.create(null), getActualFieldNodes = memoize1(function(t) {
return [t];
});
function mergeFields(t, n, i, a, o) {
let s = t.delegationPlanBuilder(o.schema, i, o.variableValues != null && Object.keys(o.variableValues).length > 0 ? o.variableValues : EMPTY_OBJECT, o.fragments != null && Object.keys(o.fragments).length > 0 ? o.fragments : EMPTY_OBJECT, o.fieldNodes?.length ? o.fieldNodes.length === 1 && o.fieldNodes[0] ? getActualFieldNodes(o.fieldNodes[0]) : o.fieldNodes : EMPTY_ARRAY, a, o), c = leftOverByDelegationPlan.get(s);
return c && (n[PLAN_LEFT_OVER] = c), handleMaybePromise(() => promiseReduce(s, (i, s) => executeDelegationStage(t, s, n, a, o), void 0), () => n);
}
function handleResolverResult(t, n, i, a, o, s, c, d) {
if (t instanceof Error || t == null) {
let o = n.transformedSchema || s.schema, d = o.getType(a.__typename), { fields: f } = collectFields(o, s.fragments, s.variableValues, d, i), g = {};
for (let [n, i] of f) {
let a = [...c, n];
t instanceof GraphQLError ? t.message.includes("Cannot return null for non-nullable field") ? g[n] = null : g[n] = relocatedError(t, a) : t instanceof Error ? g[n] = locatedError(t, i, a) : g[n] = null;
}
t = g;
} else t[UNPATHED_ERRORS_SYMBOL] && d.push(...t[UNPATHED_ERRORS_SYMBOL]);
let f = t[OBJECT_SUBSCHEMA_SYMBOL], g = t[FIELD_SUBSCHEMA_MAP_SYMBOL];
for (let i in t) {
if (isPrototypePollutingKey(i)) continue;
let s = a[i], c = t[i];
i === "__typename" && s !== c && isAbstractType(n.transformedSchema.getType(c)) || ((c != null || s == null) && (typeof s == "object" && s && !(s instanceof Error) && Object.keys(s).length > 0 ? Array.isArray(s) && Array.isArray(c) && s.length === c.length ? a[i] = s.map((t, n) => c instanceof Error ? t : mergeDeep([t, c[n]], void 0, !0, !0)) : c instanceof Error || (a[i] = mergeDeep([s, c], void 0, !0, !0)) : a[i] = c), o[i] = g?.[i] ?? f ?? n);
}
}
function executeDelegationStage(t, n, i, a, o) {
let s = i[UNPATHED_ERRORS_SYMBOL], c = pathToArray(o.path), d = i[FIELD_SUBSCHEMA_MAP_SYMBOL], f = [];
for (let [g, b] of n) {
let n = (g.transformedSchema || o.schema).getType(i.__typename), x = t.resolvers.get(g);
if (x) try {
let t = x(i, a, o, g, b, void 0, n);
isPromise(t) ? f.push(t.then((t) => handleResolverResult(t, g, b, i, d, o, c, s), (t) => handleResolverResult(t, g, b, i, d, o, c, s))) : handleResolverResult(t, g, b, i, d, o, c, s);
} catch (t) {
handleResolverResult(t, g, b, i, d, o, c, s);
}
}
if (f.length) return f.length === 1 ? f[0] : Promise.all(f);
}
function resolveExternalValue(t, n, i, a, o, s = getReturnType$1(o), c) {
let d = getNullableType(s);
if (t instanceof Error) return t;
if (t == null) return reportUnpathedErrorsViaNull(n);
if (isLeafType(d)) try {
return d.parseValue(t);
} catch {
return null;
}
else if (isCompositeType(d)) return handleMaybePromise(() => resolveExternalObject(d, t, n, i, a, o, c), (t) => o && isAbstractType(d) && t.__typename != null && !o.schema.getType(t.__typename) ? null : t);
else if (isListType(d)) return Array.isArray(t) ? resolveExternalList(d, t, n, i, a, o, c) : resolveExternalValue(t, n, i, a, o, d.ofType, c);
}
function resolveExternalObject(t, n, i, a, o, s, c) {
if (isExternalObject(n) || annotateExternalObject(n, i, a, /* @__PURE__ */ Object.create(null)), c || s == null) return n;
let d = s.schema.extensions?.stitchingInfo;
if (d == null) return n;
let f, g = [n.__typename, t.name];
for (let t of g) if (t != null && d.mergedTypes[t]?.targetSubschemas?.get(a)?.length) {
f = d.mergedTypes[t];
break;
}
if (!f) for (let t of g) {
let n = d.mergedTypes[t];
if (n != null) {
for (let [t, i] of n.targetSubschemas) i.length && t.name === a.name && (a = t, f = n);
break;
}
}
return f ? mergeFields(f, n, a, o, s) : n;
}
function resolveExternalList(t, n, i, a, o, s, c) {
return n.map((n) => resolveExternalValue(n, i, a, o, s, t.ofType, c));
}
var reportedErrors = /* @__PURE__ */ new WeakSet();
function reportUnpathedErrorsViaNull(t) {
if (t.length) {
let n = [];
for (let i of t) reportedErrors.has(i) || (n.push(i), reportedErrors.add(i));
if (n.length) {
let t = n[0];
return n.length === 1 && t ? locatedError(t, void 0, t.path) : AggregateError(n.map((n) => locatedError(n, void 0, t?.path)), n.map((t) => t.message).join(", \n"));
}
}
return null;
}
function getReturnType$1(t) {
if (t == null) throw Error("Return type cannot be inferred without a source schema.");
return t.returnType;
}
function checkResultAndHandleErrors(t = {
data: null,
errors: []
}, n) {
let { context: i, info: a, fieldName: o = getResponseKey(a), subschema: s, returnType: c = getReturnType(a), skipTypeMerging: d, onLocatedError: f } = n, { data: g, unpathedErrors: b } = mergeDataAndErrors(t.data == null ? void 0 : t.data[o], t.errors == null ? [] : t.errors, a != null && a.path ? pathToArray$1(a.path) : void 0, f);
return resolveExternalValue(g, b, s, i, a, c, d);
}
function mergeDataAndErrors(t, n, i, a, o = 1) {
if (t == null) {
if (!n.length) return {
data: null,
unpathedErrors: []
};
if (n.length === 1 && n[0]) {
let t = a ? a(n[0]) : n[0], o = i === void 0 ? t.path : t.path ? i.concat(t.path.slice(1)) : i;
return {
data: relocatedError(n[0], o),
unpathedErrors: []
};
}
return {
data: AggregateError(n.map((t) => {
let n = a ? a(t) : t, o = i === void 0 ? n.path : n.path ? i.concat(n.path.slice(1)) : i;
return relocatedError(n, o);
}), n.map((t) => t.message).join(",\n")),
unpathedErrors: []
};
}
if (!n.length) return {
data: t,
unpathedErrors: []
};
let s = [], c = /* @__PURE__ */ new Map();
for (let t of n) {
let n = t.path?.[o];
if (n != null) {
let i = c.get(n);
i === void 0 ? (i = [t], c.set(n, i)) : i.push(t);
} else s.push(t);
}
for (let [n, d] of c) if (t[n] !== void 0) {
let { data: c, unpathedErrors: f } = mergeDataAndErrors(t[n], d, i, a, o + 1);
t[n] = c, s.push(...f);
} else s.push(...d);
return {
data: t,
unpathedErrors: s
};
}
function getResponseKey(t) {
if (t == null) throw Error("Data cannot be extracted from result without an explicit key or source schema.");
return getResponseKeyFromInfo(t);
}
function getReturnType(t) {
if (t == null) throw Error("Return type cannot be inferred without a source schema.");
return t.returnType;
}
function getDocumentMetadata(t) {
let n = [], i = [], a = /* @__PURE__ */ new Set();
for (let o = 0; o < t.definitions.length; o++) {
let s = t.definitions[o];
s?.kind === Kind.FRAGMENT_DEFINITION ? (i.push(s), a.add(s.name.value)) : s?.kind === Kind.OPERATION_DEFINITION && n.push(s);
}
return {
operations: n,
fragments: i,
fragmentNames: a
};
}
var getTypeInfo = memoize1(function(t) {
return new TypeInfo(t);
}), getTypeInfoWithType = memoize2(function(t, n) {
return versionInfo.major < 16 ? new TypeInfo(t, void 0, n) : new TypeInfo(t, n);
}), handleOverrideByDelegation = memoize3(function(t, n, i) {
return i(n, t);
});
function finalizeGatewayDocument(t, n, i, a, o) {
let s = [], c = [], d = [], f = [], g = [], b = /* @__PURE__ */ Object.create(null);
for (let i of n) {
let n = i.typeCondition.name.value, a = t.getType(n);
a != null && (g.push(i), b[i.name.value] = a);
}
let x = /* @__PURE__ */ Object.create(null), S = 0;
for (let n of i) {
let i = getDefinedRootType(t, n.operation), { selectionSet: C, usedFragments: w, usedVariables: E } = finalizeSelectionSet(t, i, b, n.selectionSet, a, o);
c = union(c, w);
let { usedVariables: O, newFragments: A, fragmentSet: M } = collectFragmentVariables(t, x, g, b, c, a, o), F = union(E, O);
s = union(s, F), f = A, x = M;
let I = [];
for (let t of F) {
let i = n.variableDefinitions?.find((n) => n.variable.name.value === t);
if (i != null) I.push(i);
else {
let n = o.info?.operation.variableDefinitions?.find((n) => n.variable.name.value === t);
n != null && I.push(n);
}
}
n.operation === "subscription" && (C.selections = C.selections.filter((t) => t.kind !== Kind.FIELD || t.name.value !== "__typename")), !(C.selections.length === 1 && C.selections[0] && C.selections[0].kind === Kind.FIELD && C.selections[0].name.value === "__typename") && (S += C.selections.length, d.push({
kind: Kind.OPERATION_DEFINITION,
operation: n.operation,
name: n.name,
directives: n.directives,
variableDefinitions: I,
selectionSet: C
}));
}
if (!d.length || S === 0) throw createGraphQLError("Failed to create a gateway request. The request must contain at least one operation.", { extensions: { CRITICAL_ERROR: !0 } });
let C = {
kind: Kind.DOCUMENT,
definitions: [...d, ...f]
}, w = o.info?.schema?.extensions?.stitchingInfo;
if (w != null) {
let n = getTypeInfo(t);
C = visit(C, visitWithTypeInfo(n, { [Kind.FIELD](t) {
let i = n.getParentType();
if (i) {
let n = i.name, a = w?.mergedTypes?.[n];
if (a) {
let n = a?.providedSelectionsByField?.get(o.subschema);
if (n) {
let i = n[t.name.value];
if (i) return {
...t,
selectionSet: {
kind: Kind.SELECTION_SET,
selections: [...i.selections, ...t.selectionSet?.selections ?? []]
}
};
}
}
}
return t;
} }));
}
return {
usedVariables: s,
newDocument: C
};
}
function finalizeGatewayRequest(t, n, i) {
let { operations: a, fragments: o } = getDocumentMetadata(t.document), { targetSchema: s } = n, { usedVariables: c, newDocument: d } = finalizeGatewayDocument(s, o, a, i, n), f = {}, g = n.info?.variableValues;
for (let n of c) {
let i = t.variables?.[n], a = g?.[n];
i == null ? a != null && (f[n] = a) : f[n] = i, (i === null || a === null) && (f[n] = null);
}
return {
...t,
document: d,
variables: f
};
}
function isTypeNameField(t) {
return t.kind === Kind.FIELD && !t.alias && t.name.value === "__typename";
}
function filterTypenameFields(t) {
let n = !1, i = t.filter((t) => isTypeNameField(t) ? (n = !0, !1) : !0);
return {
hasTypeNameField: n,
selections: i
};
}
function collectFragmentVariables(t, n, i, a, o, s, c) {
let d = o.slice(), f = [], g = [];
for (; d.length !== 0;) {
let o = d.pop(), b = i.find((t) => t.name.value === o);
if (b != null) {
let i = o, x = b.typeCondition.name.value, S = t.getType(x);
if (S == null) throw Error(`Fragment reference type "${x}", but the type is not contained within the target schema.`);
let { selectionSet: C, usedFragments: w, usedVariables: E } = finalizeSelectionSet(t, S, a, b.selectionSet, s, c);
d = union(d, w), f = union(f, E), i && !(i in n) && (n[i] = !0, g.push({
kind: Kind.FRAGMENT_DEFINITION,
name: {
kind: Kind.NAME,
value: i
},
typeCondition: b.typeCondition,
selectionSet: C
}));
}
}
return {
usedVariables: f,
newFragments: g,
fragmentSet: n
};
}
var filteredSelectionSetVisitorKeys = {
SelectionSet: ["selections"],
Field: ["selectionSet"],
InlineFragment: ["selectionSet"],
FragmentDefinition: ["selectionSet"]
}, variablesVisitorKeys = {
SelectionSet: ["selections"],
Field: [
"arguments",
"directives",
"selectionSet"
],
Argument: ["value"],
InlineFragment: ["directives", "selectionSet"],
FragmentSpread: ["directives"],
FragmentDefinition: ["selectionSet"],
ObjectValue: ["fields"],
ObjectField: ["name", "value"],
Directive: ["arguments"],
ListValue: ["values"]
};
function finalizeSelectionSet(t, n, i, a, o, s) {
let c = [], d = [], f = getTypeInfoWithType(t, n), g = filterSelectionSet(t, f, i, a, o, c, /* @__PURE__ */ new WeakMap(), /* @__PURE__ */ new WeakMap(), s);
return visit(g, { [Kind.VARIABLE]: (t) => {
d.push(t.name.value);
} }, variablesVisitorKeys), {
selectionSet: g,
usedFragments: c,
usedVariables: d
};
}
function filterSelectionSet(t, n, i, a, o, s, c, d, f) {
return visit(a, visitWithTypeInfo(n, {
[Kind.FIELD]: {
enter: (a) => {
let g = n.getParentType(), b = n.getFieldDef();
if (f.context != null && f.info != null && g != null && b != null) {
let t = g.name, n = f.subschemaConfig?.merge?.[t]?.fields?.[b.name]?.override;
if (n != null && !handleOverrideByDelegation(f.info, f.context, n)) return null;
}
if (isObjectType(g) || isInterfaceType(g)) {
if (!b) return null;
let t = b.args == null ? [] : b.args, n = /* @__PURE__ */ Object.create(null);
for (let i of t) n[i.name] = i;
if (a.arguments != null) {
let t = [];
for (let i of a.arguments) i.name.value in n && t.push(i);
if (t.length !== a.arguments.length) return {
...a,
arguments: t
};
}
}
if (isUnionType(g) && n.getType() == null) {
let n = [], b = a.name.value;
for (let t of g.getTypes()) {
let i = t.getFields()[b];
if (i != null) {
let o = getNamedType(i.type);
if (a.selectionSet?.selections?.length && isLeafType(o) || !a.selectionSet?.selections?.length && isCompositeType(o)) continue;
n.push(t.name);
}
}
if (n.length > 0) {
let g = n.map((n) => {
if (!a.selectionSet?.selections) return {
kind: Kind.INLINE_FRAGMENT,
typeCondition: {
kind: Kind.NAMED_TYPE,
name: {
kind: Kind.NAME,
value: n
}
},
selectionSet: {
kind: Kind.SELECTION_SET,
selections: [a]
}
};
let g = t.getType(n).getFields()[a.name.value];
if (!g) return;
let b = filterSelectionSet(t, getTypeInfoWithType(t, g.type), i, a.selectionSet, o, s, c, d, f);
if (b.selections.length) return {
kind: Kind.INLINE_FRAGMENT,
typeCondition: {
kind: Kind.NAMED_TYPE,
name: {
kind: Kind.NAME,
value: n
}
},
selectionSet: {
kind: Kind.SELECTION_SET,
selections: [{
...a,
selectionSet: b
}]
}
};
}).filter(Boolean);
return g.length ? g : void 0;
}
}
},
leave: (i) => {
let a = n.getType();
if (a == null) return null;
let o = getNamedType(a);
if (t.getType(o.name) == null) return null;
if (isObjectType(o) || isInterfaceType(o)) {
let t = i.selectionSet == null ? null : i.selectionSet.selections;
if (t == null || t.length === 0) return null;
}
}
},
[Kind.FRAGMENT_SPREAD]: { enter: (a) => {
if (!(a.name.value in i)) return null;
let o = n.getParentType(), c = i[a.name.value];
if (!implementsAbstractType(t, o, c)) return null;
s.push(a.name.value);
} },
[Kind.SELECTION_SET]: { enter: (t, i, a, o) => {
let s = n.getParentType(), { hasTypeNameField: c, selections: d } = filterTypenameFields(t.selections);
return (c || s != null && isAbstractType(s)) && d.unshift({
kind: Kind.FIELD,
name: {
kind: Kind.NAME,
value: "__typename"
}
}), {
...t,
selections: d
};
} },
[Kind.INLINE_FRAGMENT]: {
enter: (i) => {
if (i.typeCondition != null) {
let a = n.getParentType(), o = t.getType(i.typeCondition.name.value);
if (isUnionType(a) && a.getTypes().some((t) => t.name === o?.name)) return i;
if (!implementsAbstractType(t, a, o)) return null;
}
},
leave: (n, i, a) => {
if (!n.selectionSet?.selections?.length) return null;
if (Array.isArray(a)) {
let i = n.typeCondition?.name.value;
if (i) {
let s = t.getType(i);
if (s && "getFields" in s) {
let t = s.getFields(), i = c.get(a);
i || (i = /* @__PURE__ */ new Set(), c.set(a, i));
let f = d.get(a);
f || (f = /* @__PURE__ */ new Set(), d.set(a, f)), n = {
...n,
selectionSet: {
...n.selectionSet,
selections: n.selectionSet.selections.map((n) => {
if (n.kind === Kind.FIELD) {
let a = n.name.value;
if (!n.alias) {
let s = t[a];
if (s) {
let t;
if (isNullableType(s.type) ? (f.add(a), t = !0) : (i.add(a), t = !1), f.has(a) && i.has(a)) return o(), {
...n,
alias: {
kind: Kind.NAME,
value: t ? `_nullable_${a}` : `_nonNullable_${a}`
}
};
}
}
}
return n;
})
}
};
}
}
}
let { selections: s } = filterTypenameFields(n.selectionSet.selections);
return s.length === 0 ? null : {
...n,
selectionSet: {
...n.selectionSet,
selections: s
},
directives: n.directives?.filter?.((t) => t.name.value !== "defer")
};
}
}
}), filteredSelectionSetVisitorKeys);
}
function union(...t) {
let n = /* @__PURE__ */ Object.create(null), i = [];
for (let a of t) for (let t of a) t in n || (n[t] = !0, i.push(t));
return i;
}
function prepareGatewayDocument(t, n, i, a) {
let o = wrapConcreteTypes(i, n, t);
if (a == null) return o;
let s = /* @__PURE__ */ new WeakSet(), { possibleTypesMap: c, reversePossibleTypesMap: d, interfaceExtensionsMap: f, fieldNodesByType: g, fieldNodesByField: b, dynamicSelectionSetsByField: x } = getSchemaMetaData(a, n), { operations: S, fragments: C, fragmentNames: w } = getDocumentMetadata(o), { expandedFragments: E, fragmentReplacements: O } = getExpandedFragments(C, w, c), A = getTypeInfo(n), M = {
kind: Kind.DOCUMENT,
definitions: [
...S,
...C,
...E
]
}, F = {
Document: ["definitions"],
OperationDefinition: ["selectionSet"],
SelectionSet: ["selections"],
Field: ["selectionSet"],
InlineFragment: ["selectionSet"],
FragmentDefinition: ["selectionSet"]
};
return visit(M, visitWithTypeInfo(A, { [Kind.SELECTION_SET]: (t) => visitSelectionSet(t, O, n, A, c, d, f, g, b, x, a, s) }), F);
}
var getExtraPossibleTypesFn = memoize2(function(t, n) {
let i = /* @__PURE__ */ new Map();
return function(a) {
let o = i.get(a);
if (!o) {
o = /* @__PURE__ */ new Set();
let s = n.getType(a), c = t.getType(a);
if (isAbstractType(s) && isAbstractType(c)) {
let i = n.getPossibleTypes(s), a = t.getPossibleTypes(c);
for (let n of i) {
let i = t.getType(n.name);
i && (i && a.some((t) => t.name === n.name) || o.add(n.name));
}
}
i.set(a, o);
}
return o;
};
});
function visitSelectionSet(t, n, i, a, o, s, c, d, f, g, b, x) {
let S = /* @__PURE__ */ new Set(), C = a.getParentType();
if (C != null) {
let a = getNamedType(C), w = a.name, E = d[w];
if (E) for (let t of E) S.add(t);
let O = c[a.name], A = [];
for (let s of t.selections) if (s.kind === Kind.INLINE_FRAGMENT) if (s.typeCondition != null) {
if (!x.has(s)) {
x.add(s);
let t = s.typeCondition.name.value, n = getExtraPossibleTypesFn(i, b)(t);
for (let t of n) S.add({
...s,
typeCondition: {
kind: Kind.NAMED_TYPE,
name: {
kind: Kind.NAME,
value: t
}
}
});
let a = i.getType(t);
if (isObjectType(a) || isInterfaceType(a)) {
let t = a.getFields();
for (let n of s.selectionSet.selections) if (n.kind === Kind.FIELD) {
let i = n.name.value;
t[i] || S.add(n);
}
} else if (!a) for (let t of s.selectionSet.selections) S.add(t);
}
let t = o[s.typeCondition.name.value];
if (t == null) {
let t = f[w]?.__typename;
if (t) for (let n of t) S.add(n);
S.add(s);
continue;
}
for (let n of t) {
let t = i.getType(n);
t != null && implementsAbstractType(i, a, t) && S.add(generateInlineFragment(n, s.selectionSet));
}
t.length === 0 && S.add(s);
} else S.add(s);
else if (s.kind === Kind.FRAGMENT_SPREAD) {
let t = s.name.value;
if (!n[t]) {
S.add(s);
continue;
}
for (let o of n[t]) {
let t = o.typeName;
i.getType(t) != null && implementsAbstractType(i, a, C) && S.add({
kind: Kind.FRAGMENT_SPREAD,
name: {
kind: Kind.NAME,
value: o.fragmentName
}
});
}
} else {
let t = s.name.value;
if (isAbstractType(a)) {
let t = f[w]?.__typename;
if (t) for (let n of t) S.add(n);
}
let n = f[w];
n && addDependenciesNestedly(s, /* @__PURE__ */ new Set(), n, S);
let i = g[w]?.[t];
if (i != null) for (let t of i) {
let n = t(s);
if (n != null) for (let t of n.selections) S.add(t);
}
O?.[t] ? A.push(s) : S.add(s);
}
if (s[a.name] && S.add({
kind: Kind.FIELD,
name: {
kind: Kind.NAME,
value: "__typename"
}
}), A.length) {
let t = o[a.name];
if (t != null) for (let n of t) S.add(generateInlineFragment(n, {
kind: Kind.SELECTION_SET,
selections: A
}));
}
return {
...t,
selections: Array.from(S)
};
}
return t;
}
function addDependenciesNestedly(t, n, i, a) {
if (n.has(t.name.value)) return;
n.add(t.name.value);
let o = i[t.name.value];
if (o != null) for (let t of o) a.add(t), addDependenciesNestedly(t, n, i, a);
}
function generateInlineFragment(t, n) {
return {
kind: Kind.INLINE_FRAGMENT,
typeCondition: {
kind: Kind.NAMED_TYPE,
name: {
kind: Kind.NAME,
value: t
}
},
selectionSet: n
};
}
var getSchemaMetaData = memoize2((t, n) => {
let i = t.getTypeMap(), a = n.getTypeMap(), o = /* @__PURE__ */ Object.create(null), s = /* @__PURE__ */ Object.create(null);
for (let n in i) {
let c = i[n];
if (isAbstractType(c)) {
let i = a[n];
if (isInterfaceType(c) && isInterfaceType(i)) {
let t = i.getFields(), a = c.getFields(), o = /* @__PURE__ */ Object.create(null), d = !0;
for (let n in a) t[n] || (o[n] = !0, d = !1);
d || (s[n] = o);
}
if (s[n] || !isAbstractType(i)) {
let i = t.getPossibleTypes(c);
o[n] = [];
for (let t of i) a[t.name] && o[n].push(t.name);
}
}
}
let c = t.extensions?.stitchingInfo;
return {
possibleTypesMap: o,
reversePossibleTypesMap: reversePossibleTypesMap(o),
interfaceExtensionsMap: s,
fieldNodesByType: c?.fieldNodesByType ?? {},
fieldNodesByField: c?.fieldNodesByField ?? {},
dynamicSelectionSetsByField: c?.dynamicSelectionSetsByField ?? {}
};
});
function reversePossibleTypesMap(t) {
let n = /* @__PURE__ */ Object.create(null);
for (let i in t) {
let a = t[i];
if (a) for (let t of a) n[t] || (n[t] = []), n[t].push(i);
}
return n;
}
function getExpandedFragments(t, n, i) {
let a = 0;
function o(t) {
let i;
do
i = `_${t}_Fragment${a.toString()}`, a++;
while (n.has(i));
return i;
}
let s = [], c = /* @__PURE__ */ Object.create(null);
for (let a of t) {
let t = i[a.typeCondition.name.value];
if (t != null) {
let i = a.name.value;
c[i] = [];
for (let d of t) {
let t = o(d);
n.add(t), s.push({
kind: Kind.FRAGMENT_DEFINITION,
name: {
kind: Kind.NAME,
value: t
},
typeCondition: {
kind: Kind.NAMED_TYPE,
name: {
kind: Kind.NAME,
value: d
}
},
selectionSet: a.selectionSet
}), c[i].push({
fragmentName: t,
typeName: d
});
}
}
}
return {
expandedFragments: s,
fragmentReplacements: c
};
}
function wrapConcreteTypes(t, n, i) {
let a = getNamedType(t);
if (isLeafType(a)) return i;
let o = isAbstractType(a) ? n.getPossibleTypes(a) : [a];
o.length === 0 && (o = [a]);
let s = getRootTypeNames(n), c = getTypeInfo(n), d = {
Document: ["definitions"],
OperationDefinition: ["selectionSet"],
SelectionSet: ["selections"],
InlineFragment: ["selectionSet"],
FragmentDefinition: ["selectionSet"]
};
return visit(i, visitWithTypeInfo(c, {
[Kind.FRAGMENT_DEFINITION]: (t) => {
let n = t.typeCondition.name.value;
if (!s.has(n)) return !1;
},
[Kind.FIELD]: (t) => {
let n = c.getType();
if (n) {
let i = getNamedType(n);
if (isAbstractType(i) && i.name !== a.name && o.length > 0) return {
...t,
selectionSet: {
kind: Kind.SELECTION_SET,
selections: o.map((n) => ({
kind: Kind.INLINE_FRAGMENT,
typeCondition: {
kind: Kind.NAMED_TYPE,
name: {
kind: Kind.NAME,
value: n.name
}
},
selectionSet: t.selectionSet
}))
}
};
}
}
}), d);
}
var Transformer = class {
transformations = [];
delegationContext;
hasOverlappingAliases = !1;
constructor(t) {
this.delegationContext = t;
let n = t.transforms.slice().reverse();
for (let t of n) this.addTransform(t);
}
addTransform(t, n = {}) {
this.transformations.push({
transform: t,
context: n
});
}
transformRequest(t) {
let n = {
...t,
document: prepareGatewayDocument(t.document, this.delegationContext.transformedSchema, this.delegationContext.returnType, this.delegationContext.info?.schema)
};
for (let t of this.transformations) t.transform.transformRequest && (n = t.transform.transformRequest(n, this.delegationContext, t.context));
return finalizeGatewayRequest(n, this.delegationContext, () => {
this.hasOverlappingAliases = !0;
});
}
transformResult(t) {
let n = t;
for (let t = this.transformations.length - 1; t >= 0; t--) {
let i = this.transformations[t];
i?.transform.transformResult && (n = i.transform.transformResult(n, this.delegationContext, i.context));
}
return this.hasOverlappingAliases && (n = removeOverlappingAliases(n)), checkResultAndHandleErrors(n, this.delegationContext);
}
};
function removeOverlappingAliases(t) {
if (t != null) {
if (Array.isArray(t)) return t.map(removeOverlappingAliases);
if (typeof t == "object") {
let n = {};
for (let i in t) if (i.startsWith("_nullable_") || i.startsWith("_nonNullable_")) {
let a = i.replace(/^_nullable_/, "").replace(/^_nonNullable_/, "");
n[a] = removeOverlappingAliases(t[i]);
} else n[i] = removeOverlappingAliases(t[i]);
return n;
}
}
return t;
}
function getDelegatingOperation(t, n) {
return t === n.getMutationType() ? "mutation" : t === n.getSubscriptionType() ? "subscription" : "query";
}
function createRequest({ subgraphName: t, fragments: n, rootValue: i, targetOperationName: a, targetOperation: o, targetSchema: s, targetFieldName: c, selectionSet: d, fieldNodes: f, context: g, info: b, args: x }) {
let S;
if (d != null) S = d;
else {
let t = [];
for (let n of f || []) if (n.selectionSet) for (let i of n.selectionSet.selections) t.push(i);
S = t.length ? {
kind: Kind.SELECTION_SET,
selections: t
} : void 0;
}
let C = f?.[0], w = c ?? C?.name.value;
if (w === void 0) throw Error("Either \"targetFieldName\" or a non empty \"fieldNodes\" array must be provided.");
let E = /* @__PURE__ */ Object.create(null), O = [], A = [];
if (x != null) {
let t = (s == null ? void 0 : getDefinedRootType(s, o))?.getFields()[w]?.args;
for (let n in x) {
let i = x[n], a = t?.find((t) => t.name === n);
if (a) {
let t = astFromArg(a, s), o = (t) => O.some((n) => n.variable.name.value === t), c = n;
if (o(c)) {
c = `_${w}_${n}`;
let t = 0;
for (; o(c);) c = `_${t++}_${w}_${n}`;
}
O.push({
kind: Kind.VARIABLE_DEFINITION,
variable: {
kind: Kind.VARIABLE,
name: {
kind: Kind.NAME,
value: c
}
},
type: t.type
}), E[c] = projectArgumentValue(i, a.type), A.push({
kind: Kind.ARGUMENT,
name: {
kind: Kind.NAME,
value: n
},
value: {
kind: Kind.VARIABLE,
name: {
kind: Kind.NAME,
value: c
}
}
});
} else {
let t = astFromValueUntyped(i);
t != null && A.push({
kind: Kind.ARGUMENT,
name: {
kind: Kind.NAME,
value: n
},
value: t
});
}
}
}
let M = {
kind: Kind.FIELD,
arguments: A,
name: {
kind: Kind.NAME,
value: w
},
selectionSet: S,
directives: C?.directives
}, F = a ? {
kind: Kind.NAME,
value: a
} : void 0, I = [{
kind: Kind.OPERATION_DEFINITION,
name: F,
operation: o,
variableDefinitions: O,
selectionSet: {
kind: Kind.SELECTION_SET,
selections: [M]
}
}];
n != null && I.push(...n);
let R = {
kind: Kind.DOCUMENT,
definitions: I
};
return {
subgraphName: t,
document: R,
variables: E,
rootValue: i,
operationName: a,
context: g,
info: b,
operationType: o
};
}
function projectArgumentValue(t, n) {
if (isNonNullType(n)) return projectArgumentValue(t, n.ofType);
if (isListType(n)) return asArray(t).map((t) => projectArgumentValue(t, n.ofType));
if (isInputObjectType(n) && typeof t == "object" && t) {
let i = {}, a = n.getFields();
for (let n in t) {
let o = a[n];
o && (i[n] = projectArgumentValue(t[n], o.type));
}
return i;
}
if (t != null) {
if (n.name === "Boolean") return !!t;
if (n.name === "Int" || n.name === "Float") return Number(t);
if (n.name === "String") return String(t);
}
return t;
}
function defaultMergedResolver(t, n, i, a) {
if (!t) return null;
let o = getResponseKeyFromInfo(a);
if (!isExternalObject(t)) return defaultFieldResolver(t, n, i, a);
if (!Object.prototype.hasOwnProperty.call(t, o)) {
let n = getPlanLeftOverFromParent(t);
if (n) {
let s = n.missingFieldsParentMap.get(t);
s || (s = [], n.missingFieldsParentMap.set(t, s)), s.push(...a.fieldNodes.filter((t) => n.unproxiableFieldNodes.some((n) => n === t)));
let c = n.missingFieldsParentDeferredMap.get(t);
c || (c = /* @__PURE__ */ new Map(), n.missingFieldsParentDeferredMap.set(t, c));
let d = createDeferredPromise();
c.set(o, d);
let f = a.schema.extensions?.stitchingInfo, g = t?.__typename || a.parentType.name;
return (f?.fieldNodesByField?.[g]?.[a.fieldName])?.every((n) => {
let i = n.alias?.value ?? n.name.value;
return Object.prototype.hasOwnProperty.call(t, i);
}) ? handleResult(t, o, i, a) : handleLeftOver(t, i, a, n), d.promise;
}
return;
}
return handleResult(t, o, i, a);
}
function handleResult(t, n, i, a) {
let o = getSubschema(t, n), s = t[n], c = getUnpathedErrors(t), d = resolveExternalValue(s, c, o, i, a), f = getPlanLeftOverFromParent(t);
return f ? handleMaybePromise(() => d, (o) => (t[n] = o, handleLeftOver(t, i, a, f), o)) : d;
}
function handleLeftOver(t, n, i, a) {
let o = i.schema.extensions?.stitchingInfo;
if (o) for (let s of a.nonProxiableSubschemas) {
let c = i.parentType.name, d = /* @__PURE__ */ new Set(), f = o.mergedTypes[c]?.selectionSets.get(s);
f && d.add(f);
for (let t of a.unproxiableFieldNodes) {
let n = t.name.value, i = o.mergedTypes[c]?.fieldSelectionSets.get(s)?.[n];
i && d.add(i);
}
if (d.size) {
let f = {
kind: Kind.SELECTION_SET,
selections: Array.from(d).flatMap((t) => t.selections)
};
handleMaybePromise(() => flattenPromise(t), (d) => {
handleFlattenedParent(d, t, s, f, a, o, c, n, i);
});
}
}
}
function handleFlattenedParent(t, n, i, a, o, s, c, d, f) {
if (parentSatisfiedSelectionSet(t, a)) {
let a = o.missingFieldsParentMap.get(n);
if (a) {
let g = s.mergedTypes[c]?.resolvers.get(i);
if (g) {
Object.assign(n, t);
let s = {
kind: Kind.SELECTION_SET,
selections: a
};
handleMaybePromise(() => g(n, d, f, i, s, f.parentType, f.parentType), (t) => {
handleDeferredResolverResult(t, i, s, n, o, d, f);
}, (t) => handleDeferredResolverFailure(o, n, t));
}
}
} else for (let g of a.selections) if (g.kind === Kind.FIELD && g.selectionSet?.selections?.length) {
let b = g.alias?.value ?? g.name.value, x = t[b], S = g.selectionSet;
if (x != null && !parentSatisfiedSelectionSet(x, S)) {
async function C(g, C) {
let w = g.__typename, E = getSubschema(t, b);
if (E && w) {
let b = s.mergedTypes[w]?.delegationPlanBuilder(f.schema, E, f.variableValues != null && Object.keys(f.variableValues).length > 0 ? f.variableValues : EMPTY_OBJECT, f.fragments != null && Object.keys(f.fragments).length > 0 ? f.fragments : EMPTY_OBJECT, getActualFieldNodes(C), d, f);
if (b?.length) for (let t of b) for (let [n, i] of t) {
let t = s.mergedTypes[w]?.resolvers.get(n);
if (t) {
let a = s.mergedTypes[w].typeMaps.get(n)[w], o = await t(g, d, f, n, i, a, f.parentType);
o && handleResolverResult(o, n, i, g, g[FIELD_SUBSCHEMA_MAP_SYMBOL] ||= /* @__PURE__ */ new Map(), f, pathToArray$1(f.path), g[UNPATHED_ERRORS_SYMBOL] ||= []);
}
}
parentSatisfiedSelectionSet(x, S) && handleFlattenedParent(t, n, i, a, o, s, c, d, f);
}
}
Array.isArray(x) ? x.forEach((t) => C(t, g)) : C(x, g);
}
}
}
function handleDeferredResolverResult(t, n, i, a, o, s, c) {
handleResolverResult(t, n, i, a, a[FIELD_SUBSCHEMA_MAP_SYMBOL], c, pathToArray$1(c.path), a[UNPATHED_ERRORS_SYMBOL]);
let d = o.missingFieldsParentDeferredMap.get(a);
if (d) {
let t = c.schema.extensions?.stitchingInfo, n = a?.__typename || c.parentType.name, i = /* @__PURE__ */ new Set();
for (let [f, g] of d) if (Object.prototype.hasOwnProperty.call(a, f)) g.resolve(handleResult(a, f, s, c)), i.add(f);
else {
let i = t?.fieldNodesByField?.[n]?.[f];
i && i.every((t) => {
let n = t.alias?.value ?? t.name.value;
return Object.prototype.hasOwnProperty.call(a, n);
}) && setTimeout(() => {
handleLeftOver(a, s, c, o);
}, 0);
}
for (let t of i) d.delete(t);
d.size === 0 && o.missingFieldsParentDeferredMap.delete(a);
}
}
function handleDeferredResolverFailure(t, n, i) {
let a = t.missingFieldsParentDeferredMap.get(n);
if (a) {
for (let [t, n] of a) n.reject(i);
t.missingFieldsParentDeferredMap.delete(n);
}
}
function parentSatisfiedSelectionSet(t, n) {
if (Array.isArray(t)) {
let i = /* @__PURE__ */ new Set();
for (let a of t) {
let t = parentSatisfiedSelectionSet(a, n);
if (t === void 0) return;
for (let n of t) i.add(n);
}
return i;
}
if (t === null) return /* @__PURE__ */ new Set();
if (t === void 0) return;
let i = /* @__PURE__ */ new Set();
for (let a of n.selections) if (a.kind === Kind.FIELD) {
let n = a.alias?.value ?? a.name.value;
if (t[n] === void 0) return;
if (isExternalObject(t)) {
let a = getSubschema(t, n);
a && i.add(a);
}
if (t[n] === null) continue;
if (a.selectionSet != null) {
let o = parentSatisfiedSelectionSet(t[n], a.selectionSet);
if (o === void 0) return;
for (let t of o) i.add(t);
}
} else if (a.kind === Kind.INLINE_FRAGMENT) {
let n = parentSatisfiedSelectionSet(t, a.selectionSet);
if (n === void 0) return;
for (let t of n) i.add(t);
}
return i;
}
function flattenPromise(t) {
if (isPromise(t)) return t.then(flattenPromise);
if (Array.isArray(t)) return Promise.all(t.map(flattenPromise));
if (typeof t == "object" && t) {
let n = [], i = {};
for (let a in t) {
let o = flattenPromise(t[a]);
isPromise(o) ? n.push(o.then((t) => {
i[a] = t;
})) : i[a] = o;
}
return OBJECT_SUBSCHEMA_SYMBOL in t && (i[OBJECT_SUBSCHEMA_SYMBOL] = t[OBJECT_SUBSCHEMA_SYMBOL]), FIELD_SUBSCHEMA_MAP_SYMBOL in t && (i[FIELD_SUBSCHEMA_MAP_SYMBOL] = t[FIELD_SUBSCHEMA_MAP_SYMBOL]), UNPATHED_ERRORS_SYMBOL in t && (i[UNPATHED_ERRORS_SYMBOL] = t[UNPATHED_ERRORS_SYMBOL]), n.length ? Promise.all(n).then(() => i) : i;
}
return t;
}
function isSubschemaConfig(t) {
return !!t?.schema;
}
var getFragmentDefinitions = memoize1((t) => {
let n = t.fragments;
return Object.values(n);
});
function delegateToSchema(t) {
let { info: n, schema: i, rootValue: a = i.rootValue ?? n.rootValue, operationName: o = n.operation.name?.value, operation: s = getDelegatingOperation(n.parentType, n.schema), fieldName: c = n.fieldName, selectionSet: d, fieldNodes: f = n.fieldNodes, context: g, args: b } = t, x = t.targetSchema;
if (isSubschema(i)) x = i.transformedSchema;
else if (isSchema(i)) x = i;
else {
let t = (n.schema.extensions?.stitchingInfo)?.subschemaMap.get(i);
x = t == null ? applySchemaTransforms(i.schema, i) : t.transformedSchema;
}
let S = n ? getFragmentDefinitions(n) : void 0, C = createRequest({
subgraphName: i.name,
fragments: S,
targetSchema: x,
rootValue: a,
targetOperationName: o,
targetOperation: s,
targetFieldName: c,
selectionSet: d,
fieldNodes: f,
context: g,
info: n,
args: b
});
return delegateRequest({
...t,
targetSchema: x,
request: C
});
}
function getDelegationReturnType(t, n, i) {
let a = getDefinedRootType(t, n), o = a.getFields()[i];
if (!o) throw Error(`Unable to find field '${i}' in type '${a}'.`);
return o.type;
}
function delegateRequest(t) {
let n = getDelegationContext(t), i = new Transformer(n), a = i.transformRequest(t.request);
return t.validateRequest && validateRequest(n, a.document), handleMaybePromise(() => getExecutor(n)(a), function(t) {
return isAsyncIterable$1(t) ? n.operation === "query" && isListType(n.returnType) ? new Repeater(async (n, a) => {
let o = /* @__PURE__ */ new WeakSet(), s = !1;
a.finally(() => {
s = !0;
});
try {
for await (let a of t) {
if (s) break;
if (a.incremental) {
let t = {};
for (let o of a.incremental) if (o.items?.length) {
for (let n of o.items) setObjectKeyPath(t, (o.path || []).slice(0, -1), n);
await n(await i.transformResult({ data: t }));
}
if (a.hasNext === !1) break;
continue;
}
let t = await i.transformResult(a);
if (Array.isArray(t)) for (let i of t) {
if (s) break;
let t = await i;
o.has(t) || (o.add(t), await n(t));
}
else await n(await t);
}
a();
} catch (t) {
a(t);
}
}) : mapAsyncIterator(t, (t) => i.transformResult(t)) : i.transformResult(t);
});
}
function getDelegationContext({ request: t, schema: n, fieldName: i, returnType: a, info: o, args: s, transforms: c = [], targetSchema: d, skipTypeMerging: f = !1, onLocatedError: g }) {
let b = getOperationASTFromRequest$1(t), x;
x = i ?? b.selectionSet.selections[0].name.value;
let S = (o?.schema.extensions?.stitchingInfo)?.subschemaMap.get(n) ?? n, C = b.operation;
if (isSubschemaConfig(S)) {
let i = S.schema;
return {
subschema: n,
subschemaConfig: S,
targetSchema: i,
operation: C,
fieldName: x,
context: t.context,
info: o,
returnType: a ?? o?.returnType ?? getDelegationReturnType(i, C, x),
transforms: S.transforms == null ? c : S.transforms.concat(c),
transformedSchema: d,
skipTypeMerging: f,
onLocatedError: g,
args: s
};
}
return {
subschema: n,
subschemaConfig: void 0,
targetSchema: S,
operation: C,
fieldName: x,
context: t.context,
info: o,
returnType: a ?? o?.returnType ?? getDelegationReturnType(S, C, x),
transforms: c,
transformedSchema: d ?? S,
skipTypeMerging: f
};
}
function validateRequest(t, n) {
let i = validate(t.targetSchema, n);
if (i.length > 0) {
if (i.length > 1) throw AggregateError(i, i.map((t) => t.message).join(", \n"));
let t = i[0];
if (t) throw t.originalError || t;
}
}
var GLOBAL_CONTEXT = {};
function getExecutor(t) {
let { subschemaConfig: n, targetSchema: i, context: a } = t, o = n?.executor || executorFromSchema(i);
if (n?.batch) {
let t = n?.batchingOptions;
o = getBatchingExecutor(a ?? GLOBAL_CONTEXT, o, t?.dataLoaderOptions, t?.extensionsReducer);
}
return o;
}
function setObjectKeyPath(t, n, i) {
let a = t;
for (let t = 0; t < n.length - 1; t++) {
let i = n[t];
if (i == null || i === "__proto__" || i === "constructor" || i === "prototype") return;
a[i] ?? (a[i] = typeof n[t + 1] == "number" ? [] : {}), a = a[i];
}
let o = n[n.length - 1];
if (o == null || o === "__proto__" || o === "constructor" || o === "prototype") return;
let s = a[o];
a[o] = s ? mergeDeep([s, i]) : i;
}
function generateProxyingResolvers(t) {
let n = t.schema, i = t.createProxyingResolver ?? defaultCreateProxyingResolver, a = getRootTypeMap(n), o = {};
for (let [n, s] of a.entries()) {
let a = s.name, c = s.getFields();
for (let s in o[a] = {}, c) {
let c = i({
subschemaConfig: t,
operation: n,
fieldName: s
}), d = createPossiblyNestedProxyingResolver(t, c);
n === "subscription" ? o[a][s] = {
subscribe: d,
resolve: identical
} : o[a][s] = { resolve: d };
}
}
return o;
}
function identical(t) {
return t;
}
function createPossiblyNestedProxyingResolver(t, n) {
return function(i, a, o, s) {
if (i != null) {
let n = getResponseKeyFromInfo(s);
if (isExternalObject(i)) {
let a = getUnpathedErrors(i), c = getSubschema(i, n);
if (t === c && i[n] !== void 0) return resolveExternalValue(i[n], a, c, o, s);
}
}
return n(i, a, o, s);
};
}
function defaultCreateProxyingResolver({ subschemaConfig: t, operation: n }) {
return function(i, a, o, s) {
return delegateToSchema({
schema: t,
operation: n,
rootValue: i,
args: a,
context: o,
info: s
});
};
}
var wrapSchema = memoize1(function(t) {
let n = t.schema, i = generateProxyingResolvers(t), a = createWrappingSchema(n, i);
return applySchemaTransforms(a, t);
});
function createWrappingSchema(t, n) {
return mapSchema(t, {
[MapperKind.ROOT_FIELD]: (t, i, a) => ({
...t,
...n[a]?.[i]
}),
[MapperKind.OBJECT_FIELD]: (t) => ({
...t,
resolve: defaultMergedResolver,
subscribe: void 0
}),
[MapperKind.OBJECT_TYPE]: (t) => {
let n = t.toConfig();
return new GraphQLObjectType({
...n,
isTypeOf: void 0
});
},
[MapperKind.INTERFACE_TYPE]: (t) => {
let n = t.toConfig();
return new GraphQLInterfaceType({
...n,
resolveType: void 0
});
},
[MapperKind.UNION_TYPE]: (t) => {
let n = t.toConfig();
return new GraphQLUnionType({
...n,
resolveType: void 0
});
},
[MapperKind.ENUM_VALUE]: (t) => ({
...t,
value: void 0
}),
[MapperKind.SCALAR_TYPE]: (t) => isSpecifiedScalarType(t) ? t : new GraphQLScalarType({
...t.toConfig(),
serialize: void 0,
parseValue: void 0,
parseLiteral: void 0
})
});
}
function getSchemaFromIntrospection(t, n) {
if (t?.data?.__schema) return buildClientSchema(t.data, n);
if (t?.errors) {
let n = t.errors.map((t) => createGraphQLError(t.message, t));
throw t.errors.length === 1 ? n[0] : AggregateError(n, "Could not obtain introspection result");
}
throw createGraphQLError(`Could not obtain introspection result, received the following as response;
${inspect(t)}`);
}
function schemaFromExecutor(t, n, i) {
let a = parse(getIntrospectionQuery(i), i);
return handleMaybePromise(() => handleMaybePromise(() => t({
document: a,
context: n
}), (t) => isAsyncIterable$1(t) ? t[Symbol.asyncIterator]().next().then(({ value: t }) => t) : t), (t) => getSchemaFromIntrospection(t, i));
}
const defaultAsyncFetch = (/* @__PURE__ */ __toESM(require_global_ponyfill())).fetch;
var import_browser = /* @__PURE__ */ __toESM((/* @__PURE__ */ __commonJSMin(((t, n) => {
var i = new TextEncoder(), a = new TextDecoder();
function o(...t) {
let n = new o.Request(...t), i = new XMLHttpRequest();
i.withCredentials = n.credentials === "include", i.timeout = n[s].timeout, i.open(n.method, n.url, !1);
let a = !1;
try {
i.responseType = "arraybuffer";
} catch {
i.overrideMimeType("text/plain; charset=x-user-defined"), a = !0;
}
for (let t of n.headers) i.setRequestHeader(...t);
i.send(n[s].body || null);
let c = i.getAllResponseHeaders();
c &&= c.split("\r\n").filter(Boolean).map((t) => t.split(": ", 2));
let d = i.response;
if (a) {
let t = new Uint8Array(d.length);
for (let n = 0; n < d.length; n++) t[n] = d.charCodeAt(n) & 255;
d = t;
}
let f = new o.Response(d, {
headers: c,
status: i.status,
statusText: i.statusText
});
return f[s].url = i.responseURL, f[s].redirected = i.responseURL !== n.url, f;
}
var s = Symbol("SyncFetch Internals"), c = [
"mode",
"cache",
"redirect",
"referrer",
"integrity"
], d = {
100: "Continue",
101: "Switching Protocols",
200: "OK",
201: "Created",
202: "Accepted",
203: "Non-Authoritative Information",
204: "No Content",
205: "Reset Content",
206: "Partial Content",
300: "Multiple Choices",
301: "Moved Permanently",
302: "Found",
303: "See Other",
304: "Not Modified",
305: "Use Proxy",
307: "Temporary Redirect",
400: "Bad Request",
401: "Unauthorized",
402: "Payment Required",
403: "Forbidden",
404: "Not Found",
405: "Method Not Allowed",
406: "Not Acceptable",
407: "Proxy Authentication Required",
408: "Request Timeout",
409: "Conflict",
410: "Gone",
411: "Length Required",
412: "Precondition Failed",
413: "Payload Too Large",
414: "URI Too Long",
415: "Unsupported Media Type",
416: "Range Not Satisfiable",
417: "Expectation Failed",
426: "Upgrade Required",
500: "Internal Server Error",
501: "Not Implemented",
502: "Bad Gateway",
503: "Service Unavailable",
504: "Gateway Timeout",
505: "HTTP Version Not Supported"
}, f = class t {
constructor(n, i = {}) {
for (let t of c) if (t in i) throw TypeError(`option ${t} not supported`);
if (i.credentials === "same-origin") throw TypeError("option credentials with value 'same-origin' not supported");
if (this[s] = {
method: i.method || "GET",
headers: new o.Headers(i.headers),
body: C(i.body),
credentials: i.credentials || "omit",
timeout: i.timeout || 0
}, typeof n == "string") this[s].url = n;
else if (n instanceof t) this[s].url = n.url, i.method || (this[s].method = n.method), i.headers || (this[s].headers = n.headers), i.body || (this[s].body = n[s].body), i.credentials || (this[s].credentials = n.credentials);
else throw TypeError("Request input should be a URL string or a Request object");
}
get cache() {
return "default";
}
get credentials() {
return this[s].credentials;
}
get destination() {
return "";
}
get headers() {
return this[s].headers;
}
get integrity() {
return "";
}
get method() {
return this[s].method;
}
get mode() {
return "cors";
}
get priority() {
return "auto";
}
get redirect() {
return "follow";
}
get referrer() {
return "about:client";
}
get referrerPolicy() {
return "";
}
get url() {
return this[s].url;
}
clone() {
return x(this), new t(this.url, this[s]);
}
}, g = class t {
constructor(t, n = {}) {
this[s] = {
body: C(t),
bodyUsed: !1,
headers: new o.Headers(n.headers),
status: n.status,
statusText: n.statusText
};
}
get headers() {
return this[s].headers;
}
get ok() {
let t = this[s].status;
return t >= 200 && t < 300;
}
get redirected() {
return this[s].redirected;
}
get status() {
return this[s].status;
}
get statusText() {
return this[s].statusText;
}
get url() {
return this[s].url;
}
clone() {
return this.redirect(this[s].url, this[s].status);
}
redirect(n, i) {
x(this);
let a = new t(this[s].body, {
headers: this[s].headers,
status: i || this[s].status,
statusText: d[i] || this[s].statusText
});
return a[s].url = n || this[s].url, a[s].redirected = this[s].redirected, a;
}
}, b = class t {
constructor(t) {
this[s] = {
body: C(t),
bodyUsed: !1
};
}
get bodyUsed() {
return this[s].bodyUsed;
}
static mixin(n) {
for (let i of Object.getOwnPropertyNames(t.prototype)) {
if (i === "constructor") continue;
let a = Object.getOwnPropertyDescriptor(t.prototype, i);
Object.defineProperty(n, i, {
...a,
enumerable: !0
});
}
}
arrayBuffer() {
let t = S(this);
return t.buffer.slice(t.byteOffset, t.byteOffset + t.byteLength);
}
blob() {
let t = this.headers && this.headers.get("content-type");
return new Blob([S(this)], t && { type: t });
}
text() {
return a.decode(S(this));
}
json() {
try {
return JSON.parse(this.text());
} catch (t) {
throw TypeError(`invalid json response body at ${this.url} reason: ${t.message}`, "invalid-json");
}
}
};
function x(t) {
if (t.bodyUsed) throw TypeError(`body used already for: ${t.url}`);
}
function S(t) {
return x(t), t[s].bodyUsed = !0, t[s].body || new Uint8Array();
}
function C(t) {
return typeof t == "string" ? i.encode(t) : t || null;
}
b.mixin(f.prototype), b.mixin(g.prototype), o.Headers = class {
constructor(t) {
if (t instanceof o.Headers) this[s] = { ...t[s] };
else if (this[s] = {}, Array.isArray(t)) for (let [n, i] of t) this.append(n, i);
else if (typeof t == "object") for (let n in t) this.set(n, t[n]);
}
append(t, n) {
t = t.toLowerCase(), this[s][t] || (this[s][t] = []), this[s][t].push(n);
}
delete(t) {
delete this[s][t.toLowerCase()];
}
set(t, n) {
this[s][t.toLowerCase()] = [n];
}
entries() {
let t = [];
for (let n in this[s]) for (let i of this[s][n]) t.push([n, i]);
return t;
}
get(t) {
return t = t.toLowerCase(), t in this[s] ? this[s][t].join(", ") : null;
}
keys() {
return Object.keys(this[s]);
}
has(t) {
return t.toLowerCase() in this[s];
}
values() {
let t = [];
for (let n in this[s]) for (let i of this[s][n]) t.push(i);
return t;
}
*[Symbol.iterator]() {
for (let t in this[s]) for (let n of this[s][t]) yield [t, n];
}
}, o.Request = f, o.Response = g, n.exports = o;
})))());
const defaultSyncFetch = (t, n) => (typeof t == "string" ? delete n?.signal : delete t.signal, (0, import_browser.default)(t, n));
var asyncImport = (t) => import(`${t}`), syncImport = (n) => __require(`${n}`), SubscriptionProtocol;
(function(t) {
t.WS = "WS", t.LEGACY_WS = "LEGACY_WS", t.SSE = "SSE", t.GRAPHQL_SSE = "GRAPHQL_SSE";
})(SubscriptionProtocol ||= {});
var acceptableProtocols = [
"http:",
"https:",
"ws:",
"wss:"
];
function isCompatibleUri(t) {
return acceptableProtocols.some((n) => t.startsWith(n)) ? isUrl(t) : !1;
}
var UrlLoader = class {
buildHTTPExecutor(t, n, i) {
let a = switchProtocols(t, {
wss: "https",
ws: "http"
});
return buildHTTPExecutor({
endpoint: a,
fetch: n,
...i
});
}
buildWSExecutor(t, n, i) {
let a = {
url: switchProtocols(t, {
https: "wss",
http: "ws"
}),
webSocketImpl: n,
connectionParams: i
};
return buildGraphQLWSExecutor(a);
}
buildWSLegacyExecutor(t, n, i) {
let a = switchProtocols(t, {
https: "wss",
http: "ws"
});
return buildWSLegacyExecutor(a, n, i);
}
getFetch(t, n) {
if (t) {
if (typeof t == "string") {
let [i, a] = t.split("#");
return handleMaybePromise(() => n(i), (t) => a ? t[a] : t);
} else if (typeof t == "function") return t;
}
return n === asyncImport ? defaultAsyncFetch : defaultSyncFetch;
}
getDefaultMethodFromOptions(t, n) {
return t && (n = t), n;
}
getWebSocketImpl(t, n) {
if (typeof n?.webSocketImpl == "string") {
let [i, a] = n.webSocketImpl.split("#");
return handleMaybePromise(() => t(i), (t) => a ? t[a] : t);
} else return n?.webSocketImpl || browser_default;
}
buildSubscriptionExecutor(t, n, i, a) {
return a?.subscriptionsProtocol === SubscriptionProtocol.SSE ? this.buildHTTPExecutor(t, n, a) : a?.subscriptionsProtocol === SubscriptionProtocol.GRAPHQL_SSE ? (a?.subscriptionsEndpoint || (t += "/stream"), this.buildHTTPExecutor(t, n, a)) : (n) => handleMaybePromise(() => handleMaybePromise(() => this.getWebSocketImpl(i, a), (n) => a?.subscriptionsProtocol === SubscriptionProtocol.LEGACY_WS ? this.buildWSLegacyExecutor(t, n, a) : this.buildWSExecutor(t, n, a?.connectionParams)), (t) => t(n));
}
getExecutor(t, n, i) {
let a, o = () => handleMaybePromise(() => a ||= this.getFetch(i?.customFetch, n), (n) => this.buildHTTPExecutor(t, n, i)), s = () => c ||= o(), c;
if (i?.subscriptionsEndpoint != null || i?.subscriptionsProtocol !== SubscriptionProtocol.SSE) {
let o = handleMaybePromise(() => a ||= this.getFetch(i?.customFetch, n), (a) => {
let o = i?.subscriptionsEndpoint || t;
return this.buildSubscriptionExecutor(o, a, n, i);
});
function c(t) {
return t.operationType = t.operationType || getOperationASTFromRequest(t)?.operation, t.operationType === "subscription" && isLiveQueryOperationDefinitionNode(getOperationASTFromRequest(t)) && (t.operationType = "subscription"), t.operationType === "subscription" ? o : s();
}
return (t) => handleMaybePromise(() => c(t), (n) => n(t));
} else return (t) => handleMaybePromise(s, (n) => n(t));
}
getExecutorAsync(t, n) {
return this.getExecutor(t, asyncImport, n);
}
getExecutorSync(t, n) {
return this.getExecutor(t, syncImport, n);
}
handleSDL(t, n, i) {
let a = this.getDefaultMethodFromOptions(i?.method, "GET");
return handleMaybePromise(() => n(t, {
method: a,
headers: typeof i?.headers == "function" ? i.headers() : i?.headers
}), (n) => handleMaybePromise(() => n.text(), (n) => parseGraphQLSDL(t, n, i)));
}
async load(t, n) {
if (!isCompatibleUri(t)) return [];
let i = { location: t }, a;
if (n?.handleAsSDL || t.endsWith(".graphql") || t.endsWith(".graphqls")) {
let a = await this.getFetch(n?.customFetch, asyncImport);
if (i = await this.handleSDL(t, a, n), !i.schema && !i.document && !i.rawSDL) throw Error("Invalid SDL response");
i.schema = i.schema || (i.document ? buildASTSchema(i.document, n) : i.rawSDL ? buildSchema(i.rawSDL, n) : void 0);
} else a = this.getExecutorAsync(t, n), i.schema = await schemaFromExecutor(a, {}, n);
if (!i.schema) throw Error("Invalid introspected schema");
return n?.endpoint && (a = this.getExecutorAsync(n.endpoint, n)), a && (i.schema = wrapSchema({
schema: i.schema,
executor: a,
batch: n?.batch
})), [i];
}
loadSync(t, n) {
if (!isCompatibleUri(t)) return [];
let i = { location: t }, a;
if (n?.handleAsSDL || t.endsWith(".graphql") || t.endsWith(".graphqls")) {
let a = this.getFetch(n?.customFetch, syncImport);
if (i = this.handleSDL(t, a, n), !i.schema && !i.document && !i.rawSDL) throw Error("Invalid SDL response");
i.schema = i.schema || (i.document ? buildASTSchema(i.document, n) : i.rawSDL ? buildSchema(i.rawSDL, n) : void 0);
} else a = this.getExecutorSync(t, n), i.schema = schemaFromExecutor(a, {}, n);
if (!i.schema) throw Error("Invalid introspected schema");
return n?.endpoint && (a = this.getExecutorSync(n.endpoint, n)), a && (i.schema = wrapSchema({
schema: i.schema,
executor: a
})), [i];
}
};
function switchProtocols(t, n) {
return Object.entries(n).reduce((t, [n, i]) => t.replace(`${n}://`, `${i}://`).replace(`${n}:\\`, `${i}:\\`), t);
}
const useEndpoint = (t) => {
let [n, i] = useState(t.defaultEndpoint ?? null), [a, o] = useState(null), s = useCallback((n) => {
i(n), t.onEndpointChange?.(n);
}, [t]), c = useMemo(() => a ? buildClientSchema(a) : null, [a]), d = useMemo(() => new UrlLoader(), []), f = useCallback(async (i) => {
if (n === t.defaultEndpoint && t.defaultSchemaIntrospection) {
o(t.defaultSchemaIntrospection);
return;
}
if (!n) {
o(null);
return;
}
try {
let a = await d.load(n, {
subscriptionsEndpoint: n,
subscriptionsProtocol: t.settingsApi?.settings.subscriptions.protocol ?? SubscriptionProtocol.GRAPHQL_SSE,
credentials: t.settingsApi?.settings.fetch.credentials,
specifiedByUrl: !0,
directiveIsRepeatable: !0,
inputValueDeprecation: !0,
retry: t.settingsApi?.settings.fetch.retry,
timeout: t.settingsApi?.settings.fetch.timeout,
useGETForQueries: t.settingsApi?.settings.fetch.useGETForQueries,
exposeHTTPDetailsInExtensions: !0,
descriptions: t.settingsApi?.settings.introspection.schemaDescription ?? !1,
method: t.settingsApi?.settings.introspection.method ?? "POST",
fetch: (t, n) => fetch(t, {
...n,
signal: i
})
});
if (a.length === 0 || !a[0].schema) throw Error("Failed to fetch schema");
o(introspectionFromSchema(a[0].schema));
} catch (t) {
throw t && typeof t == "object" && "message" in t && typeof t.message == "string" ? toast.error(t.message) : toast.error("Failed to fetch schema"), o(null), t;
}
}, [
n,
t.settingsApi?.settings.fetch.timeout,
t.settingsApi?.settings.introspection.method,
t.settingsApi?.settings.introspection.schemaDescription
]), g = useMemo(() => n !== t.defaultEndpoint || !t.defaultSchemaIntrospection, [
n,
t.defaultEndpoint,
t.defaultSchemaIntrospection
]);
useEffect(() => {
if (!g || !n) return;
let t = new AbortController();
return asyncInterval(async () => {
try {
await f(t.signal);
} catch {
t.abort();
}
}, 5e3, t.signal), () => {
t.abort();
};
}, [g, f]);
let b = useCallback(() => {
t.defaultEndpoint && s(t.defaultEndpoint);
}, [t.defaultEndpoint]);
return useEffect(() => {
n && !g && f();
}, [
n,
f,
g
]), {
endpoint: n,
setEndpoint: s,
schema: c,
introspection: a,
fetchSchema: f,
restoreDefaultEndpoint: b,
defaultEndpoint: t.defaultEndpoint ?? null
};
}, useEnv = (t) => {
let [n, i] = useState(t.defaultEnv ?? { variables: {} }), a = useCallback((n) => {
i(n), t.onEnvChange?.(n);
}, [t]);
return {
env: n,
setEnv: a
};
}, useHistory = (t) => {
let [n, i] = useState(t.defaultHistory ?? []), a = useRef(n);
useEffect(() => {
a.current = n;
}, [n]);
let o = useCallback((a) => {
let o = {
...a,
id: v4_default()
}, s = [...n, o];
return i(s), t.onHistoryChange?.(s), t.onHistoryCreate?.(o), o;
}, [n, t]), s = useCallback((n, o) => {
let s = a.current.find((t) => t.id === n);
if (s && "responses" in s) {
let c = [...s.responses, {
createdAt: (/* @__PURE__ */ new Date()).toISOString(),
data: o
}], d = {
...s,
responses: c
}, f = a.current.map((t) => t.id === n ? d : t);
i(f), t.onHistoryChange?.(f), t.onHistoryUpdate?.(d);
}
}, [t]), c = useCallback((n) => {
let o = a.current.find((t) => t.id === n), s = a.current.filter((t) => t.id !== n);
i(s), t.onHistoryChange?.(s), o && t.onHistoryDelete?.(o);
}, [t]), d = useCallback(() => {
let n = [...a.current];
if (i([]), t.onHistoryChange?.([]), t.onHistoryDelete) for (let i of n) t.onHistoryDelete(i);
}, [t]), f = useCallback((n) => {
let o = a.current.filter((t) => format(new Date(t.createdAt), "dd MMM yyyy") === n), s = a.current.filter((t) => format(new Date(t.createdAt), "dd MMM yyyy") !== n);
if (i(s), t.onHistoryChange?.(s), t.onHistoryDelete) for (let n of o) t.onHistoryDelete(n);
}, [t]);
return {
history: n,
addHistory: o,
addResponseToHistory: s,
deleteHistory: c,
deleteAllHistory: d,
deleteHistoryByDay: f
};
};
var require_lodash = /* @__PURE__ */ __commonJSMin(((t, n) => {
(function() {
var i, a = "4.18.1", o = 200, s = "Unsupported core-js use. Try https://npms.io/search?q=ponyfill.", c = "Expected a function", d = "Invalid `variable` option passed into `_.template`", f = "Invalid `imports` option passed into `_.template`", g = "__lodash_hash_undefined__", b = 500, x = "__lodash_placeholder__", S = 1, C = 2, w = 4, E = 1, O = 2, A = 1, M = 2, F = 4, I = 8, R = 16, qA = 32, V = 64, q = 128, JA = 256, YA = 512, XA = 30, ZA = "...", QA = 800, $A = 16, ej = 1, tj = 2, nj = 3, rj = Infinity, ij = 9007199254740991, aj = 17976931348623157e292, oj = NaN, sj = 4294967295, cj = sj - 1, lj = sj >>> 1, uj = [
["ary", q],
["bind", A],
["bindKey", M],
["curry", I],
["curryRight", R],
["flip", YA],
["partial", qA],
["partialRight", V],
["rearg", JA]
], dj = "[object Arguments]", fj = "[object Array]", pj = "[object AsyncFunction]", mj = "[object Boolean]", hj = "[object Date]", gj = "[object DOMException]", _j = "[object Error]", vj = "[object Function]", yj = "[object GeneratorFunction]", bj = "[object Map]", xj = "[object Number]", Sj = "[object Null]", Cj = "[object Object]", wj = "[object Promise]", Tj = "[object Proxy]", Ej = "[object RegExp]", Dj = "[object Set]", Oj = "[object String]", kj = "[object Symbol]", Aj = "[object Undefined]", jj = "[object WeakMap]", Mj = "[object WeakSet]", Nj = "[object ArrayBuffer]", Pj = "[object DataView]", Fj = "[object Float32Array]", Ij = "[object Float64Array]", Lj = "[object Int8Array]", Rj = "[object Int16Array]", zj = "[object Int32Array]", Bj = "[object Uint8Array]", Vj = "[object Uint8ClampedArray]", Hj = "[object Uint16Array]", Uj = "[object Uint32Array]", Wj = /\b__p \+= '';/g, Gj = /\b(__p \+=) '' \+/g, Kj = /(__e\(.*?\)|\b__t\)) \+\n'';/g, qj = /&(?:amp|lt|gt|quot|#39);/g, Jj = /[&<>"']/g, Yj = RegExp(qj.source), Xj = RegExp(Jj.source), Zj = /<%-([\s\S]+?)%>/g, Qj = /<%([\s\S]+?)%>/g, $j = /<%=([\s\S]+?)%>/g, eM = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, tM = /^\w*$/, nM = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g, rM = /[\\^$.*+?()[\]{}|]/g, iM = RegExp(rM.source), aM = /^\s+/, oM = /\s/, sM = /\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/, cM = /\{\n\/\* \[wrapped with (.+)\] \*/, lM = /,? & /, uM = /[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g, dM = /[()=,{}\[\]\/\s]/, fM = /\\(\\)?/g, pM = /\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g, mM = /\w*$/, hM = /^[-+]0x[0-9a-f]+$/i, gM = /^0b[01]+$/i, _M = /^\[object .+?Constructor\]$/, vM = /^0o[0-7]+$/i, yM = /^(?:0|[1-9]\d*)$/, bM = /[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g, xM = /($^)/, SM = /['\n\r\u2028\u2029\\]/g, CM = "\\ud800-\\udfff", wM = "\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff", TM = "\\u2700-\\u27bf", EM = "a-z\\xdf-\\xf6\\xf8-\\xff", DM = "\\xac\\xb1\\xd7\\xf7", OM = "\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf", kM = "\\u2000-\\u206f", AM = " \\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", jM = "A-Z\\xc0-\\xd6\\xd8-\\xde", MM = "\\ufe0e\\ufe0f", NM = DM + OM + kM + AM, PM = "['’]", FM = "[" + CM + "]", IM = "[" + NM + "]", LM = "[" + wM + "]", RM = "\\d+", zM = "[" + TM + "]", BM = "[" + EM + "]", VM = "[^" + CM + NM + RM + TM + EM + jM + "]", HM = "\\ud83c[\\udffb-\\udfff]", UM = "(?:" + LM + "|" + HM + ")", WM = "[^" + CM + "]", GM = "(?:\\ud83c[\\udde6-\\uddff]){2}", KM = "[\\ud800-\\udbff][\\udc00-\\udfff]", qM = "[" + jM + "]", JM = "\\u200d", YM = "(?:" + BM + "|" + VM + ")", XM = "(?:" + qM + "|" + VM + ")", ZM = "(?:" + PM + "(?:d|ll|m|re|s|t|ve))?", QM = "(?:" + PM + "(?:D|LL|M|RE|S|T|VE))?", $M = UM + "?", eN = "[" + MM + "]?", tN = "(?:" + JM + "(?:" + [
WM,
GM,
KM
].join("|") + ")" + eN + $M + ")*", nN = "\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])", rN = "\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])", iN = eN + $M + tN, aN = "(?:" + [
zM,
GM,
KM
].join("|") + ")" + iN, oN = "(?:" + [
WM + LM + "?",
LM,
GM,
KM,
FM
].join("|") + ")", sN = RegExp(PM, "g"), cN = RegExp(LM, "g"), lN = RegExp(HM + "(?=" + HM + ")|" + oN + iN, "g"), uN = RegExp([
qM + "?" + BM + "+" + ZM + "(?=" + [
IM,
qM,
"$"
].join("|") + ")",
XM + "+" + QM + "(?=" + [
IM,
qM + YM,
"$"
].join("|") + ")",
qM + "?" + YM + "+" + ZM,
qM + "+" + QM,
rN,
nN,
RM,
aN
].join("|"), "g"), dN = RegExp("[" + JM + CM + wM + MM + "]"), fN = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/, pN = /* @__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("."), mN = -1, hN = {};
hN[Fj] = hN[Ij] = hN[Lj] = hN[Rj] = hN[zj] = hN[Bj] = hN[Vj] = hN[Hj] = hN[Uj] = !0, hN[dj] = hN[fj] = hN[Nj] = hN[mj] = hN[Pj] = hN[hj] = hN[_j] = hN[vj] = hN[bj] = hN[xj] = hN[Cj] = hN[Ej] = hN[Dj] = hN[Oj] = hN[jj] = !1;
var gN = {};
gN[dj] = gN[fj] = gN[Nj] = gN[Pj] = gN[mj] = gN[hj] = gN[Fj] = gN[Ij] = gN[Lj] = gN[Rj] = gN[zj] = gN[bj] = gN[xj] = gN[Cj] = gN[Ej] = gN[Dj] = gN[Oj] = gN[kj] = gN[Bj] = gN[Vj] = gN[Hj] = gN[Uj] = !0, gN[_j] = gN[vj] = gN[jj] = !1;
var _N = {
À: "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"
}, vN = {
"&": "&",
"<": "<",
">": ">",
"\"": """,
"'": "'"
}, yN = {
"&": "&",
"<": "<",
">": ">",
""": "\"",
"'": "'"
}, bN = {
"\\": "\\",
"'": "'",
"\n": "n",
"\r": "r",
"\u2028": "u2028",
"\u2029": "u2029"
}, xN = parseFloat, SN = parseInt, CN = typeof global == "object" && global && global.Object === Object && global, wN = typeof self == "object" && self && self.Object === Object && self, TN = CN || wN || Function("return this")(), EN = typeof t == "object" && t && !t.nodeType && t, DN = EN && typeof n == "object" && n && !n.nodeType && n, ON = DN && DN.exports === EN, kN = ON && CN.process, AN = function() {
try {
return DN && DN.require && DN.require("util").types || kN && kN.binding && kN.binding("util");
} catch {}
}(), jN = AN && AN.isArrayBuffer, MN = AN && AN.isDate, NN = AN && AN.isMap, PN = AN && AN.isRegExp, FN = AN && AN.isSet, IN = AN && AN.isTypedArray;
function LN(t, n, i) {
switch (i.length) {
case 0: return t.call(n);
case 1: return t.call(n, i[0]);
case 2: return t.call(n, i[0], i[1]);
case 3: return t.call(n, i[0], i[1], i[2]);
}
return t.apply(n, i);
}
function RN(t, n, i, a) {
for (var o = -1, s = t == null ? 0 : t.length; ++o < s;) {
var c = t[o];
n(a, c, i(c), t);
}
return a;
}
function zN(t, n) {
for (var i = -1, a = t == null ? 0 : t.length; ++i < a && n(t[i], i, t) !== !1;);
return t;
}
function BN(t, n) {
for (var i = t == null ? 0 : t.length; i-- && n(t[i], i, t) !== !1;);
return t;
}
function VN(t, n) {
for (var i = -1, a = t == null ? 0 : t.length; ++i < a;) if (!n(t[i], i, t)) return !1;
return !0;
}
function HN(t, n) {
for (var i = -1, a = t == null ? 0 : t.length, o = 0, s = []; ++i < a;) {
var c = t[i];
n(c, i, t) && (s[o++] = c);
}
return s;
}
function UN(t, n) {
return !!(t != null && t.length) && tP(t, n, 0) > -1;
}
function WN(t, n, i) {
for (var a = -1, o = t == null ? 0 : t.length; ++a < o;) if (i(n, t[a])) return !0;
return !1;
}
function GN(t, n) {
for (var i = -1, a = t == null ? 0 : t.length, o = Array(a); ++i < a;) o[i] = n(t[i], i, t);
return o;
}
function KN(t, n) {
for (var i = -1, a = n.length, o = t.length; ++i < a;) t[o + i] = n[i];
return t;
}
function qN(t, n, i, a) {
var o = -1, s = t == null ? 0 : t.length;
for (a && s && (i = t[++o]); ++o < s;) i = n(i, t[o], o, t);
return i;
}
function JN(t, n, i, a) {
var o = t == null ? 0 : t.length;
for (a && o && (i = t[--o]); o--;) i = n(i, t[o], o, t);
return i;
}
function YN(t, n) {
for (var i = -1, a = t == null ? 0 : t.length; ++i < a;) if (n(t[i], i, t)) return !0;
return !1;
}
var XN = aP("length");
function ZN(t) {
return t.split("");
}
function QN(t) {
return t.match(uM) || [];
}
function $N(t, n, i) {
var a;
return i(t, function(t, i, o) {
if (n(t, i, o)) return a = i, !1;
}), a;
}
function eP(t, n, i, a) {
for (var o = t.length, s = i + (a ? 1 : -1); a ? s-- : ++s < o;) if (n(t[s], s, t)) return s;
return -1;
}
function tP(t, n, i) {
return n === n ? jP(t, n, i) : eP(t, rP, i);
}
function nP(t, n, i, a) {
for (var o = i - 1, s = t.length; ++o < s;) if (a(t[o], n)) return o;
return -1;
}
function rP(t) {
return t !== t;
}
function iP(t, n) {
var i = t == null ? 0 : t.length;
return i ? lP(t, n) / i : oj;
}
function aP(t) {
return function(n) {
return n == null ? i : n[t];
};
}
function oP(t) {
return function(n) {
return t == null ? i : t[n];
};
}
function sP(t, n, i, a, o) {
return o(t, function(t, o, s) {
i = a ? (a = !1, t) : n(i, t, o, s);
}), i;
}
function cP(t, n) {
var i = t.length;
for (t.sort(n); i--;) t[i] = t[i].value;
return t;
}
function lP(t, n) {
for (var a, o = -1, s = t.length; ++o < s;) {
var c = n(t[o]);
c !== i && (a = a === i ? c : a + c);
}
return a;
}
function uP(t, n) {
for (var i = -1, a = Array(t); ++i < t;) a[i] = n(i);
return a;
}
function dP(t, n) {
return GN(n, function(n) {
return [n, t[n]];
});
}
function fP(t) {
return t && t.slice(0, FP(t) + 1).replace(aM, "");
}
function pP(t) {
return function(n) {
return t(n);
};
}
function mP(t, n) {
return GN(n, function(n) {
return t[n];
});
}
function hP(t, n) {
return t.has(n);
}
function gP(t, n) {
for (var i = -1, a = t.length; ++i < a && tP(n, t[i], 0) > -1;);
return i;
}
function _P(t, n) {
for (var i = t.length; i-- && tP(n, t[i], 0) > -1;);
return i;
}
function vP(t, n) {
for (var i = t.length, a = 0; i--;) t[i] === n && ++a;
return a;
}
var yP = oP(_N), bP = oP(vN);
function xP(t) {
return "\\" + bN[t];
}
function SP(t, n) {
return t == null ? i : t[n];
}
function CP(t) {
return dN.test(t);
}
function wP(t) {
return fN.test(t);
}
function TP(t) {
for (var n, i = []; !(n = t.next()).done;) i.push(n.value);
return i;
}
function EP(t) {
var n = -1, i = Array(t.size);
return t.forEach(function(t, a) {
i[++n] = [a, t];
}), i;
}
function DP(t, n) {
return function(i) {
return t(n(i));
};
}
function OP(t, n) {
for (var i = -1, a = t.length, o = 0, s = []; ++i < a;) {
var c = t[i];
(c === n || c === x) && (t[i] = x, s[o++] = i);
}
return s;
}
function kP(t) {
var n = -1, i = Array(t.size);
return t.forEach(function(t) {
i[++n] = t;
}), i;
}
function AP(t) {
var n = -1, i = Array(t.size);
return t.forEach(function(t) {
i[++n] = [t, t];
}), i;
}
function jP(t, n, i) {
for (var a = i - 1, o = t.length; ++a < o;) if (t[a] === n) return a;
return -1;
}
function MP(t, n, i) {
for (var a = i + 1; a--;) if (t[a] === n) return a;
return a;
}
function NP(t) {
return CP(t) ? LP(t) : XN(t);
}
function PP(t) {
return CP(t) ? RP(t) : ZN(t);
}
function FP(t) {
for (var n = t.length; n-- && oM.test(t.charAt(n)););
return n;
}
var IP = oP(yN);
function LP(t) {
for (var n = lN.lastIndex = 0; lN.test(t);) ++n;
return n;
}
function RP(t) {
return t.match(lN) || [];
}
function zP(t) {
return t.match(uN) || [];
}
var BP = (function t(n) {
n = n == null ? TN : BP.defaults(TN.Object(), n, BP.pick(TN, pN));
var oM = n.Array, uM = n.Date, CM = n.Error, wM = n.Function, TM = n.Math, EM = n.Object, DM = n.RegExp, OM = n.String, kM = n.TypeError, AM = oM.prototype, jM = wM.prototype, MM = EM.prototype, NM = n["__core-js_shared__"], PM = jM.toString, FM = MM.hasOwnProperty, IM = 0, LM = function() {
var t = /[^.]+$/.exec(NM && NM.keys && NM.keys.IE_PROTO || "");
return t ? "Symbol(src)_1." + t : "";
}(), RM = MM.toString, zM = PM.call(EM), BM = TN._, VM = DM("^" + PM.call(FM).replace(rM, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$"), HM = ON ? n.Buffer : i, UM = n.Symbol, WM = n.Uint8Array, GM = HM ? HM.allocUnsafe : i, KM = DP(EM.getPrototypeOf, EM), qM = EM.create, JM = MM.propertyIsEnumerable, YM = AM.splice, XM = UM ? UM.isConcatSpreadable : i, ZM = UM ? UM.iterator : i, QM = UM ? UM.toStringTag : i, $M = function() {
try {
var t = mR(EM, "defineProperty");
return t({}, "", {}), t;
} catch {}
}(), eN = n.clearTimeout !== TN.clearTimeout && n.clearTimeout, tN = uM && uM.now !== TN.Date.now && uM.now, nN = n.setTimeout !== TN.setTimeout && n.setTimeout, rN = TM.ceil, iN = TM.floor, aN = EM.getOwnPropertySymbols, oN = HM ? HM.isBuffer : i, lN = n.isFinite, uN = AM.join, dN = DP(EM.keys, EM), fN = TM.max, _N = TM.min, vN = uM.now, yN = n.parseInt, bN = TM.random, CN = AM.reverse, wN = mR(n, "DataView"), EN = mR(n, "Map"), DN = mR(n, "Promise"), kN = mR(n, "Set"), AN = mR(n, "WeakMap"), XN = mR(EM, "create"), ZN = AN && new AN(), oP = {}, jP = $R(wN), LP = $R(EN), RP = $R(DN), VP = $R(kN), HP = $R(AN), UP = UM ? UM.prototype : i, WP = UP ? UP.valueOf : i, GP = UP ? UP.toString : i;
function Q(t) {
if (KV(t) && !kV(t) && !(t instanceof YP)) {
if (t instanceof JP) return t;
if (FM.call(t, "__wrapped__")) return tz(t);
}
return new JP(t);
}
var KP = function() {
function t() {}
return function(n) {
if (!GV(n)) return {};
if (qM) return qM(n);
t.prototype = n;
var a = new t();
return t.prototype = i, a;
};
}();
function qP() {}
function JP(t, n) {
this.__wrapped__ = t, this.__actions__ = [], this.__chain__ = !!n, this.__index__ = 0, this.__values__ = i;
}
Q.templateSettings = {
escape: Zj,
evaluate: Qj,
interpolate: $j,
variable: "",
imports: { _: Q }
}, Q.prototype = qP.prototype, Q.prototype.constructor = Q, JP.prototype = KP(qP.prototype), JP.prototype.constructor = JP;
function YP(t) {
this.__wrapped__ = t, this.__actions__ = [], this.__dir__ = 1, this.__filtered__ = !1, this.__iteratees__ = [], this.__takeCount__ = sj, this.__views__ = [];
}
function XP() {
var t = new YP(this.__wrapped__);
return t.__actions__ = TL(this.__actions__), t.__dir__ = this.__dir__, t.__filtered__ = this.__filtered__, t.__iteratees__ = TL(this.__iteratees__), t.__takeCount__ = this.__takeCount__, t.__views__ = TL(this.__views__), t;
}
function ZP() {
if (this.__filtered__) {
var t = new YP(this);
t.__dir__ = -1, t.__filtered__ = !0;
} else t = this.clone(), t.__dir__ *= -1;
return t;
}
function QP() {
var t = this.__wrapped__.value(), n = this.__dir__, i = kV(t), a = n < 0, o = i ? t.length : 0, s = yR(0, o, this.__views__), c = s.start, d = s.end, f = d - c, g = a ? d : c - 1, b = this.__iteratees__, x = b.length, S = 0, C = _N(f, this.__takeCount__);
if (!i || !a && o == f && C == f) return oL(t, this.__actions__);
var w = [];
outer: for (; f-- && S < C;) {
g += n;
for (var E = -1, O = t[g]; ++E < x;) {
var A = b[E], M = A.iteratee, F = A.type, I = M(O);
if (F == tj) O = I;
else if (!I) {
if (F == ej) continue outer;
break outer;
}
}
w[S++] = O;
}
return w;
}
YP.prototype = KP(qP.prototype), YP.prototype.constructor = YP;
function $P(t) {
var n = -1, i = t == null ? 0 : t.length;
for (this.clear(); ++n < i;) {
var a = t[n];
this.set(a[0], a[1]);
}
}
function eF() {
this.__data__ = XN ? XN(null) : {}, this.size = 0;
}
function tF(t) {
var n = this.has(t) && delete this.__data__[t];
return this.size -= n ? 1 : 0, n;
}
function nF(t) {
var n = this.__data__;
if (XN) {
var a = n[t];
return a === g ? i : a;
}
return FM.call(n, t) ? n[t] : i;
}
function rF(t) {
var n = this.__data__;
return XN ? n[t] !== i : FM.call(n, t);
}
function iF(t, n) {
var a = this.__data__;
return this.size += this.has(t) ? 0 : 1, a[t] = XN && n === i ? g : n, this;
}
$P.prototype.clear = eF, $P.prototype.delete = tF, $P.prototype.get = nF, $P.prototype.has = rF, $P.prototype.set = iF;
function aF(t) {
var n = -1, i = t == null ? 0 : t.length;
for (this.clear(); ++n < i;) {
var a = t[n];
this.set(a[0], a[1]);
}
}
function oF() {
this.__data__ = [], this.size = 0;
}
function sF(t) {
var n = this.__data__, i = MF(n, t);
if (i < 0) return !1;
var a = n.length - 1;
return i == a ? n.pop() : YM.call(n, i, 1), --this.size, !0;
}
function cF(t) {
var n = this.__data__, a = MF(n, t);
return a < 0 ? i : n[a][1];
}
function lF(t) {
return MF(this.__data__, t) > -1;
}
function uF(t, n) {
var i = this.__data__, a = MF(i, t);
return a < 0 ? (++this.size, i.push([t, n])) : i[a][1] = n, this;
}
aF.prototype.clear = oF, aF.prototype.delete = sF, aF.prototype.get = cF, aF.prototype.has = lF, aF.prototype.set = uF;
function dF(t) {
var n = -1, i = t == null ? 0 : t.length;
for (this.clear(); ++n < i;) {
var a = t[n];
this.set(a[0], a[1]);
}
}
function fF() {
this.size = 0, this.__data__ = {
hash: new $P(),
map: new (EN || aF)(),
string: new $P()
};
}
function pF(t) {
var n = fR(this, t).delete(t);
return this.size -= n ? 1 : 0, n;
}
function mF(t) {
return fR(this, t).get(t);
}
function hF(t) {
return fR(this, t).has(t);
}
function gF(t, n) {
var i = fR(this, t), a = i.size;
return i.set(t, n), this.size += i.size == a ? 0 : 1, this;
}
dF.prototype.clear = fF, dF.prototype.delete = pF, dF.prototype.get = mF, dF.prototype.has = hF, dF.prototype.set = gF;
function _F(t) {
var n = -1, i = t == null ? 0 : t.length;
for (this.__data__ = new dF(); ++n < i;) this.add(t[n]);
}
function vF(t) {
return this.__data__.set(t, g), this;
}
function yF(t) {
return this.__data__.has(t);
}
_F.prototype.add = _F.prototype.push = vF, _F.prototype.has = yF;
function bF(t) {
this.size = (this.__data__ = new aF(t)).size;
}
function xF() {
this.__data__ = new aF(), this.size = 0;
}
function SF(t) {
var n = this.__data__, i = n.delete(t);
return this.size = n.size, i;
}
function CF(t) {
return this.__data__.get(t);
}
function wF(t) {
return this.__data__.has(t);
}
function TF(t, n) {
var i = this.__data__;
if (i instanceof aF) {
var a = i.__data__;
if (!EN || a.length < o - 1) return a.push([t, n]), this.size = ++i.size, this;
i = this.__data__ = new dF(a);
}
return i.set(t, n), this.size = i.size, this;
}
bF.prototype.clear = xF, bF.prototype.delete = SF, bF.prototype.get = CF, bF.prototype.has = wF, bF.prototype.set = TF;
function EF(t, n) {
var i = kV(t), a = !i && OV(t), o = !i && !a && PV(t), s = !i && !a && !o && sH(t), c = i || a || o || s, d = c ? uP(t.length, OM) : [], f = d.length;
for (var g in t) (n || FM.call(t, g)) && !(c && (g == "length" || o && (g == "offset" || g == "parent") || s && (g == "buffer" || g == "byteLength" || g == "byteOffset") || DR(g, f))) && d.push(g);
return d;
}
function DF(t) {
var n = t.length;
return n ? t[zI(0, n - 1)] : i;
}
function OF(t, n) {
return XR(TL(t), RF(n, 0, t.length));
}
function kF(t) {
return XR(TL(t));
}
function AF(t, n, a) {
(a !== i && !TV(t[n], a) || a === i && !(n in t)) && IF(t, n, a);
}
function jF(t, n, a) {
var o = t[n];
(!(FM.call(t, n) && TV(o, a)) || a === i && !(n in t)) && IF(t, n, a);
}
function MF(t, n) {
for (var i = t.length; i--;) if (TV(t[i][0], n)) return i;
return -1;
}
function NF(t, n, i, a) {
return WF(t, function(t, o, s) {
n(a, t, i(t), s);
}), a;
}
function PF(t, n) {
return t && EL(n, UH(n), t);
}
function FF(t, n) {
return t && EL(n, WH(n), t);
}
function IF(t, n, i) {
n == "__proto__" && $M ? $M(t, n, {
configurable: !0,
enumerable: !0,
value: i,
writable: !0
}) : t[n] = i;
}
function LF(t, n) {
for (var a = -1, o = n.length, s = oM(o), c = t == null; ++a < o;) s[a] = c ? i : LH(t, n[a]);
return s;
}
function RF(t, n, a) {
return t === t && (a !== i && (t = t <= a ? t : a), n !== i && (t = t >= n ? t : n)), t;
}
function zF(t, n, a, o, s, c) {
var d, f = n & S, g = n & C, b = n & w;
if (a && (d = s ? a(t, o, s, c) : a(t)), d !== i) return d;
if (!GV(t)) return t;
var x = kV(t);
if (x) {
if (d = SR(t), !f) return TL(t, d);
} else {
var E = vR(t), O = E == vj || E == yj;
if (PV(t)) return hL(t, f);
if (E == Cj || E == dj || O && !s) {
if (d = g || O ? {} : CR(t), !f) return g ? OL(t, FF(d, t)) : DL(t, PF(d, t));
} else {
if (!gN[E]) return s ? t : {};
d = wR(t, E, f);
}
}
c ||= new bF();
var A = c.get(t);
if (A) return A;
c.set(t, d), iH(t) ? t.forEach(function(i) {
d.add(zF(i, n, a, i, t, c));
}) : qV(t) && t.forEach(function(i, o) {
d.set(o, zF(i, n, a, o, t, c));
});
var M = x ? i : (b ? g ? sR : oR : g ? WH : UH)(t);
return zN(M || t, function(i, o) {
M && (o = i, i = t[o]), jF(d, o, zF(i, n, a, o, t, c));
}), d;
}
function BF(t) {
var n = UH(t);
return function(i) {
return VF(i, t, n);
};
}
function VF(t, n, a) {
var o = a.length;
if (t == null) return !o;
for (t = EM(t); o--;) {
var s = a[o], c = n[s], d = t[s];
if (d === i && !(s in t) || !c(d)) return !1;
}
return !0;
}
function HF(t, n, a) {
if (typeof t != "function") throw new kM(c);
return KR(function() {
t.apply(i, a);
}, n);
}
function UF(t, n, i, a) {
var s = -1, c = UN, d = !0, f = t.length, g = [], b = n.length;
if (!f) return g;
i && (n = GN(n, pP(i))), a ? (c = WN, d = !1) : n.length >= o && (c = hP, d = !1, n = new _F(n));
outer: for (; ++s < f;) {
var x = t[s], S = i == null ? x : i(x);
if (x = a || x !== 0 ? x : 0, d && S === S) {
for (var C = b; C--;) if (n[C] === S) continue outer;
g.push(x);
} else c(n, S, a) || g.push(x);
}
return g;
}
var WF = jL($F), GF = jL(eI, !0);
function KF(t, n) {
var i = !0;
return WF(t, function(t, a, o) {
return i = !!n(t, a, o), i;
}), i;
}
function qF(t, n, a) {
for (var o = -1, s = t.length; ++o < s;) {
var c = t[o], d = n(c);
if (d != null && (f === i ? d === d && !oH(d) : a(d, f))) var f = d, g = c;
}
return g;
}
function JF(t, n, a, o) {
var s = t.length;
for (a = hH(a), a < 0 && (a = -a > s ? 0 : s + a), o = o === i || o > s ? s : hH(o), o < 0 && (o += s), o = a > o ? 0 : gH(o); a < o;) t[a++] = n;
return t;
}
function YF(t, n) {
var i = [];
return WF(t, function(t, a, o) {
n(t, a, o) && i.push(t);
}), i;
}
function XF(t, n, i, a, o) {
var s = -1, c = t.length;
for (i ||= ER, o ||= []; ++s < c;) {
var d = t[s];
n > 0 && i(d) ? n > 1 ? XF(d, n - 1, i, a, o) : KN(o, d) : a || (o[o.length] = d);
}
return o;
}
var ZF = ML(), QF = ML(!0);
function $F(t, n) {
return t && ZF(t, n, UH);
}
function eI(t, n) {
return t && QF(t, n, UH);
}
function tI(t, n) {
return HN(n, function(n) {
return HV(t[n]);
});
}
function nI(t, n) {
n = dL(n, t);
for (var a = 0, o = n.length; t != null && a < o;) t = t[QR(n[a++])];
return a && a == o ? t : i;
}
function rI(t, n, i) {
var a = n(t);
return kV(t) ? a : KN(a, i(t));
}
function iI(t) {
return t == null ? t === i ? Aj : Sj : QM && QM in EM(t) ? hR(t) : BR(t);
}
function aI(t, n) {
return t > n;
}
function oI(t, n) {
return t != null && FM.call(t, n);
}
function sI(t, n) {
return t != null && n in EM(t);
}
function cI(t, n, i) {
return t >= _N(n, i) && t < fN(n, i);
}
function lI(t, n, a) {
for (var o = a ? WN : UN, s = t[0].length, c = t.length, d = c, f = oM(c), g = Infinity, b = []; d--;) {
var x = t[d];
d && n && (x = GN(x, pP(n))), g = _N(x.length, g), f[d] = !a && (n || s >= 120 && x.length >= 120) ? new _F(d && x) : i;
}
x = t[0];
var S = -1, C = f[0];
outer: for (; ++S < s && b.length < g;) {
var w = x[S], E = n ? n(w) : w;
if (w = a || w !== 0 ? w : 0, !(C ? hP(C, E) : o(b, E, a))) {
for (d = c; --d;) {
var O = f[d];
if (!(O ? hP(O, E) : o(t[d], E, a))) continue outer;
}
C && C.push(E), b.push(w);
}
}
return b;
}
function uI(t, n, i, a) {
return $F(t, function(t, o, s) {
n(a, i(t), o, s);
}), a;
}
function dI(t, n, a) {
n = dL(n, t), t = HR(t, n);
var o = t == null ? t : t[QR(Ez(n))];
return o == null ? i : LN(o, t, a);
}
function fI(t) {
return KV(t) && iI(t) == dj;
}
function pI(t) {
return KV(t) && iI(t) == Nj;
}
function mI(t) {
return KV(t) && iI(t) == hj;
}
function hI(t, n, i, a, o) {
return t === n ? !0 : t == null || n == null || !KV(t) && !KV(n) ? t !== t && n !== n : gI(t, n, i, a, hI, o);
}
function gI(t, n, i, a, o, s) {
var c = kV(t), d = kV(n), f = c ? fj : vR(t), g = d ? fj : vR(n);
f = f == dj ? Cj : f, g = g == dj ? Cj : g;
var b = f == Cj, x = g == Cj, S = f == g;
if (S && PV(t)) {
if (!PV(n)) return !1;
c = !0, b = !1;
}
if (S && !b) return s ||= new bF(), c || sH(t) ? nR(t, n, i, a, o, s) : rR(t, n, f, i, a, o, s);
if (!(i & E)) {
var C = b && FM.call(t, "__wrapped__"), w = x && FM.call(n, "__wrapped__");
if (C || w) {
var O = C ? t.value() : t, A = w ? n.value() : n;
return s ||= new bF(), o(O, A, i, a, s);
}
}
return S ? (s ||= new bF(), iR(t, n, i, a, o, s)) : !1;
}
function _I(t) {
return KV(t) && vR(t) == bj;
}
function vI(t, n, a, o) {
var s = a.length, c = s, d = !o;
if (t == null) return !c;
for (t = EM(t); s--;) {
var f = a[s];
if (d && f[2] ? f[1] !== t[f[0]] : !(f[0] in t)) return !1;
}
for (; ++s < c;) {
f = a[s];
var g = f[0], b = t[g], x = f[1];
if (d && f[2]) {
if (b === i && !(g in t)) return !1;
} else {
var S = new bF();
if (o) var C = o(b, x, g, t, n, S);
if (!(C === i ? hI(x, b, E | O, o, S) : C)) return !1;
}
}
return !0;
}
function yI(t) {
return !GV(t) || MR(t) ? !1 : (HV(t) ? VM : _M).test($R(t));
}
function bI(t) {
return KV(t) && iI(t) == Ej;
}
function xI(t) {
return KV(t) && vR(t) == Dj;
}
function SI(t) {
return KV(t) && WV(t.length) && !!hN[iI(t)];
}
function CI(t) {
return typeof t == "function" ? t : t == null ? ZU : typeof t == "object" ? kV(t) ? kI(t[0], t[1]) : OI(t) : uW(t);
}
function wI(t) {
if (!PR(t)) return dN(t);
var n = [];
for (var i in EM(t)) FM.call(t, i) && i != "constructor" && n.push(i);
return n;
}
function TI(t) {
if (!GV(t)) return zR(t);
var n = PR(t), i = [];
for (var a in t) a == "constructor" && (n || !FM.call(t, a)) || i.push(a);
return i;
}
function EI(t, n) {
return t < n;
}
function DI(t, n) {
var i = -1, a = jV(t) ? oM(t.length) : [];
return WF(t, function(t, o, s) {
a[++i] = n(t, o, s);
}), a;
}
function OI(t) {
var n = pR(t);
return n.length == 1 && n[0][2] ? IR(n[0][0], n[0][1]) : function(i) {
return i === t || vI(i, t, n);
};
}
function kI(t, n) {
return kR(t) && FR(n) ? IR(QR(t), n) : function(a) {
var o = LH(a, t);
return o === i && o === n ? zH(a, t) : hI(n, o, E | O);
};
}
function AI(t, n, a, o, s) {
t !== n && ZF(n, function(c, d) {
if (s ||= new bF(), GV(c)) jI(t, n, d, a, AI, o, s);
else {
var f = o ? o(WR(t, d), c, d + "", t, n, s) : i;
f === i && (f = c), AF(t, d, f);
}
}, WH);
}
function jI(t, n, a, o, s, c, d) {
var f = WR(t, a), g = WR(n, a), b = d.get(g);
if (b) {
AF(t, a, b);
return;
}
var x = c ? c(f, g, a + "", t, n, d) : i, S = x === i;
if (S) {
var C = kV(g), w = !C && PV(g), E = !C && !w && sH(g);
x = g, C || w || E ? kV(f) ? x = f : MV(f) ? x = TL(f) : w ? (S = !1, x = hL(g, !0)) : E ? (S = !1, x = bL(g, !0)) : x = [] : tH(g) || OV(g) ? (x = f, OV(f) ? x = vH(f) : (!GV(f) || HV(f)) && (x = CR(g))) : S = !1;
}
S && (d.set(g, x), s(x, g, o, c, d), d.delete(g)), AF(t, a, x);
}
function MI(t, n) {
var a = t.length;
if (a) return n += n < 0 ? a : 0, DR(n, a) ? t[n] : i;
}
function NI(t, n, i) {
n = n.length ? GN(n, function(t) {
return kV(t) ? function(n) {
return nI(n, t.length === 1 ? t[0] : t);
} : t;
}) : [ZU];
var a = -1;
n = GN(n, pP(dR()));
var o = DI(t, function(t, i, o) {
return {
criteria: GN(n, function(n) {
return n(t);
}),
index: ++a,
value: t
};
});
return cP(o, function(t, n) {
return SL(t, n, i);
});
}
function PI(t, n) {
return FI(t, n, function(n, i) {
return zH(t, i);
});
}
function FI(t, n, i) {
for (var a = -1, o = n.length, s = {}; ++a < o;) {
var c = n[a], d = nI(t, c);
i(d, c) && GI(s, dL(c, t), d);
}
return s;
}
function II(t) {
return function(n) {
return nI(n, t);
};
}
function LI(t, n, i, a) {
var o = a ? nP : tP, s = -1, c = n.length, d = t;
for (t === n && (n = TL(n)), i && (d = GN(t, pP(i))); ++s < c;) for (var f = 0, g = n[s], b = i ? i(g) : g; (f = o(d, b, f, a)) > -1;) d !== t && YM.call(d, f, 1), YM.call(t, f, 1);
return t;
}
function RI(t, n) {
for (var i = t ? n.length : 0, a = i - 1; i--;) {
var o = n[i];
if (i == a || o !== s) {
var s = o;
DR(o) ? YM.call(t, o, 1) : rL(t, o);
}
}
return t;
}
function zI(t, n) {
return t + iN(bN() * (n - t + 1));
}
function BI(t, n, i, a) {
for (var o = -1, s = fN(rN((n - t) / (i || 1)), 0), c = oM(s); s--;) c[a ? s : ++o] = t, t += i;
return c;
}
function VI(t, n) {
var i = "";
if (!t || n < 1 || n > ij) return i;
do
n % 2 && (i += t), n = iN(n / 2), n && (t += t);
while (n);
return i;
}
function HI(t, n) {
return qR(VR(t, n, ZU), t + "");
}
function UI(t) {
return DF(cU(t));
}
function WI(t, n) {
var i = cU(t);
return XR(i, RF(n, 0, i.length));
}
function GI(t, n, a, o) {
if (!GV(t)) return t;
n = dL(n, t);
for (var s = -1, c = n.length, d = c - 1, f = t; f != null && ++s < c;) {
var g = QR(n[s]), b = a;
if (g === "__proto__" || g === "constructor" || g === "prototype") return t;
if (s != d) {
var x = f[g];
b = o ? o(x, g, f) : i, b === i && (b = GV(x) ? x : DR(n[s + 1]) ? [] : {});
}
jF(f, g, b), f = f[g];
}
return t;
}
var KI = ZN ? function(t, n) {
return ZN.set(t, n), t;
} : ZU, qI = $M ? function(t, n) {
return $M(t, "toString", {
configurable: !0,
enumerable: !1,
value: qU(n),
writable: !0
});
} : ZU;
function JI(t) {
return XR(cU(t));
}
function YI(t, n, i) {
var a = -1, o = t.length;
n < 0 && (n = -n > o ? 0 : o + n), i = i > o ? o : i, i < 0 && (i += o), o = n > i ? 0 : i - n >>> 0, n >>>= 0;
for (var s = oM(o); ++a < o;) s[a] = t[a + n];
return s;
}
function XI(t, n) {
var i;
return WF(t, function(t, a, o) {
return i = n(t, a, o), !i;
}), !!i;
}
function ZI(t, n, i) {
var a = 0, o = t == null ? a : t.length;
if (typeof n == "number" && n === n && o <= lj) {
for (; a < o;) {
var s = a + o >>> 1, c = t[s];
c !== null && !oH(c) && (i ? c <= n : c < n) ? a = s + 1 : o = s;
}
return o;
}
return QI(t, n, ZU, i);
}
function QI(t, n, a, o) {
var s = 0, c = t == null ? 0 : t.length;
if (c === 0) return 0;
n = a(n);
for (var d = n !== n, f = n === null, g = oH(n), b = n === i; s < c;) {
var x = iN((s + c) / 2), S = a(t[x]), C = S !== i, w = S === null, E = S === S, O = oH(S);
if (d) var A = o || E;
else A = b ? E && (o || C) : f ? E && C && (o || !w) : g ? E && C && !w && (o || !O) : w || O ? !1 : o ? S <= n : S < n;
A ? s = x + 1 : c = x;
}
return _N(c, cj);
}
function $I(t, n) {
for (var i = -1, a = t.length, o = 0, s = []; ++i < a;) {
var c = t[i], d = n ? n(c) : c;
if (!i || !TV(d, f)) {
var f = d;
s[o++] = c === 0 ? 0 : c;
}
}
return s;
}
function eL(t) {
return typeof t == "number" ? t : oH(t) ? oj : +t;
}
function tL(t) {
if (typeof t == "string") return t;
if (kV(t)) return GN(t, tL) + "";
if (oH(t)) return GP ? GP.call(t) : "";
var n = t + "";
return n == "0" && 1 / t == -rj ? "-0" : n;
}
function nL(t, n, i) {
var a = -1, s = UN, c = t.length, d = !0, f = [], g = f;
if (i) d = !1, s = WN;
else if (c >= o) {
var b = n ? null : XL(t);
if (b) return kP(b);
d = !1, s = hP, g = new _F();
} else g = n ? [] : f;
outer: for (; ++a < c;) {
var x = t[a], S = n ? n(x) : x;
if (x = i || x !== 0 ? x : 0, d && S === S) {
for (var C = g.length; C--;) if (g[C] === S) continue outer;
n && g.push(S), f.push(x);
} else s(g, S, i) || (g !== f && g.push(S), f.push(x));
}
return f;
}
function rL(t, n) {
n = dL(n, t);
var i = -1, a = n.length;
if (!a) return !0;
for (; ++i < a;) {
var o = QR(n[i]);
if (o === "__proto__" && !FM.call(t, "__proto__") || (o === "constructor" || o === "prototype") && i < a - 1) return !1;
}
var s = HR(t, n);
return s == null || delete s[QR(Ez(n))];
}
function iL(t, n, i, a) {
return GI(t, n, i(nI(t, n)), a);
}
function aL(t, n, i, a) {
for (var o = t.length, s = a ? o : -1; (a ? s-- : ++s < o) && n(t[s], s, t););
return i ? YI(t, a ? 0 : s, a ? s + 1 : o) : YI(t, a ? s + 1 : 0, a ? o : s);
}
function oL(t, n) {
var i = t;
return i instanceof YP && (i = i.value()), qN(n, function(t, n) {
return n.func.apply(n.thisArg, KN([t], n.args));
}, i);
}
function sL(t, n, i) {
var a = t.length;
if (a < 2) return a ? nL(t[0]) : [];
for (var o = -1, s = oM(a); ++o < a;) for (var c = t[o], d = -1; ++d < a;) d != o && (s[o] = UF(s[o] || c, t[d], n, i));
return nL(XF(s, 1), n, i);
}
function cL(t, n, a) {
for (var o = -1, s = t.length, c = n.length, d = {}; ++o < s;) {
var f = o < c ? n[o] : i;
a(d, t[o], f);
}
return d;
}
function lL(t) {
return MV(t) ? t : [];
}
function uL(t) {
return typeof t == "function" ? t : ZU;
}
function dL(t, n) {
return kV(t) ? t : kR(t, n) ? [t] : ZR(bH(t));
}
var fL = HI;
function pL(t, n, a) {
var o = t.length;
return a = a === i ? o : a, !n && a >= o ? t : YI(t, n, a);
}
var mL = eN || function(t) {
return TN.clearTimeout(t);
};
function hL(t, n) {
if (n) return t.slice();
var i = t.length, a = GM ? GM(i) : new t.constructor(i);
return t.copy(a), a;
}
function gL(t) {
var n = new t.constructor(t.byteLength);
return new WM(n).set(new WM(t)), n;
}
function _L(t, n) {
var i = n ? gL(t.buffer) : t.buffer;
return new t.constructor(i, t.byteOffset, t.byteLength);
}
function vL(t) {
var n = new t.constructor(t.source, mM.exec(t));
return n.lastIndex = t.lastIndex, n;
}
function yL(t) {
return WP ? EM(WP.call(t)) : {};
}
function bL(t, n) {
var i = n ? gL(t.buffer) : t.buffer;
return new t.constructor(i, t.byteOffset, t.length);
}
function xL(t, n) {
if (t !== n) {
var a = t !== i, o = t === null, s = t === t, c = oH(t), d = n !== i, f = n === null, g = n === n, b = oH(n);
if (!f && !b && !c && t > n || c && d && g && !f && !b || o && d && g || !a && g || !s) return 1;
if (!o && !c && !b && t < n || b && a && s && !o && !c || f && a && s || !d && s || !g) return -1;
}
return 0;
}
function SL(t, n, i) {
for (var a = -1, o = t.criteria, s = n.criteria, c = o.length, d = i.length; ++a < c;) {
var f = xL(o[a], s[a]);
if (f) {
if (a >= d) return f;
var g = i[a];
return f * (g == "desc" ? -1 : 1);
}
}
return t.index - n.index;
}
function CL(t, n, i, a) {
for (var o = -1, s = t.length, c = i.length, d = -1, f = n.length, g = fN(s - c, 0), b = oM(f + g), x = !a; ++d < f;) b[d] = n[d];
for (; ++o < c;) (x || o < s) && (b[i[o]] = t[o]);
for (; g--;) b[d++] = t[o++];
return b;
}
function wL(t, n, i, a) {
for (var o = -1, s = t.length, c = -1, d = i.length, f = -1, g = n.length, b = fN(s - d, 0), x = oM(b + g), S = !a; ++o < b;) x[o] = t[o];
for (var C = o; ++f < g;) x[C + f] = n[f];
for (; ++c < d;) (S || o < s) && (x[C + i[c]] = t[o++]);
return x;
}
function TL(t, n) {
var i = -1, a = t.length;
for (n ||= oM(a); ++i < a;) n[i] = t[i];
return n;
}
function EL(t, n, a, o) {
var s = !a;
a ||= {};
for (var c = -1, d = n.length; ++c < d;) {
var f = n[c], g = o ? o(a[f], t[f], f, a, t) : i;
g === i && (g = t[f]), s ? IF(a, f, g) : jF(a, f, g);
}
return a;
}
function DL(t, n) {
return EL(t, gR(t), n);
}
function OL(t, n) {
return EL(t, _R(t), n);
}
function kL(t, n) {
return function(i, a) {
var o = kV(i) ? RN : NF, s = n ? n() : {};
return o(i, t, dR(a, 2), s);
};
}
function AL(t) {
return HI(function(n, a) {
var o = -1, s = a.length, c = s > 1 ? a[s - 1] : i, d = s > 2 ? a[2] : i;
for (c = t.length > 3 && typeof c == "function" ? (s--, c) : i, d && OR(a[0], a[1], d) && (c = s < 3 ? i : c, s = 1), n = EM(n); ++o < s;) {
var f = a[o];
f && t(n, f, o, c);
}
return n;
});
}
function jL(t, n) {
return function(i, a) {
if (i == null) return i;
if (!jV(i)) return t(i, a);
for (var o = i.length, s = n ? o : -1, c = EM(i); (n ? s-- : ++s < o) && a(c[s], s, c) !== !1;);
return i;
};
}
function ML(t) {
return function(n, i, a) {
for (var o = -1, s = EM(n), c = a(n), d = c.length; d--;) {
var f = c[t ? d : ++o];
if (i(s[f], f, s) === !1) break;
}
return n;
};
}
function NL(t, n, i) {
var a = n & A, o = IL(t);
function s() {
return (this && this !== TN && this instanceof s ? o : t).apply(a ? i : this, arguments);
}
return s;
}
function PL(t) {
return function(n) {
n = bH(n);
var a = CP(n) ? PP(n) : i, o = a ? a[0] : n.charAt(0), s = a ? pL(a, 1).join("") : n.slice(1);
return o[t]() + s;
};
}
function FL(t) {
return function(n) {
return qN(HU(hU(n).replace(sN, "")), t, "");
};
}
function IL(t) {
return function() {
var n = arguments;
switch (n.length) {
case 0: return new t();
case 1: return new t(n[0]);
case 2: return new t(n[0], n[1]);
case 3: return new t(n[0], n[1], n[2]);
case 4: return new t(n[0], n[1], n[2], n[3]);
case 5: return new t(n[0], n[1], n[2], n[3], n[4]);
case 6: return new t(n[0], n[1], n[2], n[3], n[4], n[5]);
case 7: return new t(n[0], n[1], n[2], n[3], n[4], n[5], n[6]);
}
var i = KP(t.prototype), a = t.apply(i, n);
return GV(a) ? a : i;
};
}
function LL(t, n, a) {
var o = IL(t);
function s() {
for (var c = arguments.length, d = oM(c), f = c, g = uR(s); f--;) d[f] = arguments[f];
var b = c < 3 && d[0] !== g && d[c - 1] !== g ? [] : OP(d, g);
if (c -= b.length, c < a) return JL(t, n, BL, s.placeholder, i, d, b, i, i, a - c);
var x = this && this !== TN && this instanceof s ? o : t;
return LN(x, this, d);
}
return s;
}
function RL(t) {
return function(n, a, o) {
var s = EM(n);
if (!jV(n)) {
var c = dR(a, 3);
n = UH(n), a = function(t) {
return c(s[t], t, s);
};
}
var d = t(n, a, o);
return d > -1 ? s[c ? n[d] : d] : i;
};
}
function zL(t) {
return aR(function(n) {
var a = n.length, o = a, s = JP.prototype.thru;
for (t && n.reverse(); o--;) {
var d = n[o];
if (typeof d != "function") throw new kM(c);
if (s && !f && lR(d) == "wrapper") var f = new JP([], !0);
}
for (o = f ? o : a; ++o < a;) {
d = n[o];
var g = lR(d), b = g == "wrapper" ? cR(d) : i;
f = b && jR(b[0]) && b[1] == (q | I | qA | JA) && !b[4].length && b[9] == 1 ? f[lR(b[0])].apply(f, b[3]) : d.length == 1 && jR(d) ? f[g]() : f.thru(d);
}
return function() {
var t = arguments, i = t[0];
if (f && t.length == 1 && kV(i)) return f.plant(i).value();
for (var o = 0, s = a ? n[o].apply(this, t) : i; ++o < a;) s = n[o].call(this, s);
return s;
};
});
}
function BL(t, n, a, o, s, c, d, f, g, b) {
var x = n & q, S = n & A, C = n & M, w = n & (I | R), E = n & YA, O = C ? i : IL(t);
function F() {
for (var i = arguments.length, A = oM(i), M = i; M--;) A[M] = arguments[M];
if (w) var I = uR(F), R = vP(A, I);
if (o && (A = CL(A, o, s, w)), c && (A = wL(A, c, d, w)), i -= R, w && i < b) {
var qA = OP(A, I);
return JL(t, n, BL, F.placeholder, a, A, qA, f, g, b - i);
}
var V = S ? a : this, q = C ? V[t] : t;
return i = A.length, f ? A = UR(A, f) : E && i > 1 && A.reverse(), x && g < i && (A.length = g), this && this !== TN && this instanceof F && (q = O || IL(q)), q.apply(V, A);
}
return F;
}
function VL(t, n) {
return function(i, a) {
return uI(i, t, n(a), {});
};
}
function HL(t, n) {
return function(a, o) {
var s;
if (a === i && o === i) return n;
if (a !== i && (s = a), o !== i) {
if (s === i) return o;
typeof a == "string" || typeof o == "string" ? (a = tL(a), o = tL(o)) : (a = eL(a), o = eL(o)), s = t(a, o);
}
return s;
};
}
function UL(t) {
return aR(function(n) {
return n = GN(n, pP(dR())), HI(function(i) {
var a = this;
return t(n, function(t) {
return LN(t, a, i);
});
});
});
}
function WL(t, n) {
n = n === i ? " " : tL(n);
var a = n.length;
if (a < 2) return a ? VI(n, t) : n;
var o = VI(n, rN(t / NP(n)));
return CP(n) ? pL(PP(o), 0, t).join("") : o.slice(0, t);
}
function GL(t, n, i, a) {
var o = n & A, s = IL(t);
function c() {
for (var n = -1, d = arguments.length, f = -1, g = a.length, b = oM(g + d), x = this && this !== TN && this instanceof c ? s : t; ++f < g;) b[f] = a[f];
for (; d--;) b[f++] = arguments[++n];
return LN(x, o ? i : this, b);
}
return c;
}
function KL(t) {
return function(n, a, o) {
return o && typeof o != "number" && OR(n, a, o) && (a = o = i), n = mH(n), a === i ? (a = n, n = 0) : a = mH(a), o = o === i ? n < a ? 1 : -1 : mH(o), BI(n, a, o, t);
};
}
function qL(t) {
return function(n, i) {
return typeof n == "string" && typeof i == "string" || (n = _H(n), i = _H(i)), t(n, i);
};
}
function JL(t, n, a, o, s, c, d, f, g, b) {
var x = n & I, S = x ? d : i, C = x ? i : d, w = x ? c : i, E = x ? i : c;
n |= x ? qA : V, n &= ~(x ? V : qA), n & F || (n &= ~(A | M));
var O = [
t,
n,
s,
w,
S,
E,
C,
f,
g,
b
], R = a.apply(i, O);
return jR(t) && GR(R, O), R.placeholder = o, JR(R, t, n);
}
function YL(t) {
var n = TM[t];
return function(t, i) {
if (t = _H(t), i = i == null ? 0 : _N(hH(i), 292), i && lN(t)) {
var a = (bH(t) + "e").split("e"), o = n(a[0] + "e" + (+a[1] + i));
return a = (bH(o) + "e").split("e"), +(a[0] + "e" + (+a[1] - i));
}
return n(t);
};
}
var XL = kN && 1 / kP(new kN([, -0]))[1] == rj ? function(t) {
return new kN(t);
} : aW;
function ZL(t) {
return function(n) {
var i = vR(n);
return i == bj ? EP(n) : i == Dj ? AP(n) : dP(n, t(n));
};
}
function QL(t, n, a, o, s, d, f, g) {
var b = n & M;
if (!b && typeof t != "function") throw new kM(c);
var x = o ? o.length : 0;
if (x || (n &= ~(qA | V), o = s = i), f = f === i ? f : fN(hH(f), 0), g = g === i ? g : hH(g), x -= s ? s.length : 0, n & V) {
var S = o, C = s;
o = s = i;
}
var w = b ? i : cR(t), E = [
t,
n,
a,
o,
s,
S,
C,
d,
f,
g
];
if (w && RR(E, w), t = E[0], n = E[1], a = E[2], o = E[3], s = E[4], g = E[9] = E[9] === i ? b ? 0 : t.length : fN(E[9] - x, 0), !g && n & (I | R) && (n &= ~(I | R)), !n || n == A) var O = NL(t, n, a);
else O = n == I || n == R ? LL(t, n, g) : (n == qA || n == (A | qA)) && !s.length ? GL(t, n, a, o) : BL.apply(i, E);
return JR((w ? KI : GR)(O, E), t, n);
}
function $L(t, n, a, o) {
return t === i || TV(t, MM[a]) && !FM.call(o, a) ? n : t;
}
function eR(t, n, a, o, s, c) {
return GV(t) && GV(n) && (c.set(n, t), AI(t, n, i, eR, c), c.delete(n)), t;
}
function tR(t) {
return tH(t) ? i : t;
}
function nR(t, n, a, o, s, c) {
var d = a & E, f = t.length, g = n.length;
if (f != g && !(d && g > f)) return !1;
var b = c.get(t), x = c.get(n);
if (b && x) return b == n && x == t;
var S = -1, C = !0, w = a & O ? new _F() : i;
for (c.set(t, n), c.set(n, t); ++S < f;) {
var A = t[S], M = n[S];
if (o) var F = d ? o(M, A, S, n, t, c) : o(A, M, S, t, n, c);
if (F !== i) {
if (F) continue;
C = !1;
break;
}
if (w) {
if (!YN(n, function(t, n) {
if (!hP(w, n) && (A === t || s(A, t, a, o, c))) return w.push(n);
})) {
C = !1;
break;
}
} else if (!(A === M || s(A, M, a, o, c))) {
C = !1;
break;
}
}
return c.delete(t), c.delete(n), C;
}
function rR(t, n, i, a, o, s, c) {
switch (i) {
case Pj:
if (t.byteLength != n.byteLength || t.byteOffset != n.byteOffset) return !1;
t = t.buffer, n = n.buffer;
case Nj: return !(t.byteLength != n.byteLength || !s(new WM(t), new WM(n)));
case mj:
case hj:
case xj: return TV(+t, +n);
case _j: return t.name == n.name && t.message == n.message;
case Ej:
case Oj: return t == n + "";
case bj: var d = EP;
case Dj:
var f = a & E;
if (d ||= kP, t.size != n.size && !f) return !1;
var g = c.get(t);
if (g) return g == n;
a |= O, c.set(t, n);
var b = nR(d(t), d(n), a, o, s, c);
return c.delete(t), b;
case kj: if (WP) return WP.call(t) == WP.call(n);
}
return !1;
}
function iR(t, n, a, o, s, c) {
var d = a & E, f = oR(t), g = f.length, b = oR(n).length;
if (g != b && !d) return !1;
for (var x = g; x--;) {
var S = f[x];
if (!(d ? S in n : FM.call(n, S))) return !1;
}
var C = c.get(t), w = c.get(n);
if (C && w) return C == n && w == t;
var O = !0;
c.set(t, n), c.set(n, t);
for (var A = d; ++x < g;) {
S = f[x];
var M = t[S], F = n[S];
if (o) var I = d ? o(F, M, S, n, t, c) : o(M, F, S, t, n, c);
if (!(I === i ? M === F || s(M, F, a, o, c) : I)) {
O = !1;
break;
}
A ||= S == "constructor";
}
if (O && !A) {
var R = t.constructor, qA = n.constructor;
R != qA && "constructor" in t && "constructor" in n && !(typeof R == "function" && R instanceof R && typeof qA == "function" && qA instanceof qA) && (O = !1);
}
return c.delete(t), c.delete(n), O;
}
function aR(t) {
return qR(VR(t, i, hz), t + "");
}
function oR(t) {
return rI(t, UH, gR);
}
function sR(t) {
return rI(t, WH, _R);
}
var cR = ZN ? function(t) {
return ZN.get(t);
} : aW;
function lR(t) {
for (var n = t.name + "", i = oP[n], a = FM.call(oP, n) ? i.length : 0; a--;) {
var o = i[a], s = o.func;
if (s == null || s == t) return o.name;
}
return n;
}
function uR(t) {
return (FM.call(Q, "placeholder") ? Q : t).placeholder;
}
function dR() {
var t = Q.iteratee || QU;
return t = t === QU ? CI : t, arguments.length ? t(arguments[0], arguments[1]) : t;
}
function fR(t, n) {
var i = t.__data__;
return AR(n) ? i[typeof n == "string" ? "string" : "hash"] : i.map;
}
function pR(t) {
for (var n = UH(t), i = n.length; i--;) {
var a = n[i], o = t[a];
n[i] = [
a,
o,
FR(o)
];
}
return n;
}
function mR(t, n) {
var a = SP(t, n);
return yI(a) ? a : i;
}
function hR(t) {
var n = FM.call(t, QM), a = t[QM];
try {
t[QM] = i;
var o = !0;
} catch {}
var s = RM.call(t);
return o && (n ? t[QM] = a : delete t[QM]), s;
}
var gR = aN ? function(t) {
return t == null ? [] : (t = EM(t), HN(aN(t), function(n) {
return JM.call(t, n);
}));
} : mW, _R = aN ? function(t) {
for (var n = []; t;) KN(n, gR(t)), t = KM(t);
return n;
} : mW, vR = iI;
(wN && vR(new wN(/* @__PURE__ */ new ArrayBuffer(1))) != Pj || EN && vR(new EN()) != bj || DN && vR(DN.resolve()) != wj || kN && vR(new kN()) != Dj || AN && vR(new AN()) != jj) && (vR = function(t) {
var n = iI(t), a = n == Cj ? t.constructor : i, o = a ? $R(a) : "";
if (o) switch (o) {
case jP: return Pj;
case LP: return bj;
case RP: return wj;
case VP: return Dj;
case HP: return jj;
}
return n;
});
function yR(t, n, i) {
for (var a = -1, o = i.length; ++a < o;) {
var s = i[a], c = s.size;
switch (s.type) {
case "drop":
t += c;
break;
case "dropRight":
n -= c;
break;
case "take":
n = _N(n, t + c);
break;
case "takeRight":
t = fN(t, n - c);
break;
}
}
return {
start: t,
end: n
};
}
function bR(t) {
var n = t.match(cM);
return n ? n[1].split(lM) : [];
}
function xR(t, n, i) {
n = dL(n, t);
for (var a = -1, o = n.length, s = !1; ++a < o;) {
var c = QR(n[a]);
if (!(s = t != null && i(t, c))) break;
t = t[c];
}
return s || ++a != o ? s : (o = t == null ? 0 : t.length, !!o && WV(o) && DR(c, o) && (kV(t) || OV(t)));
}
function SR(t) {
var n = t.length, i = new t.constructor(n);
return n && typeof t[0] == "string" && FM.call(t, "index") && (i.index = t.index, i.input = t.input), i;
}
function CR(t) {
return typeof t.constructor == "function" && !PR(t) ? KP(KM(t)) : {};
}
function wR(t, n, i) {
var a = t.constructor;
switch (n) {
case Nj: return gL(t);
case mj:
case hj: return new a(+t);
case Pj: return _L(t, i);
case Fj:
case Ij:
case Lj:
case Rj:
case zj:
case Bj:
case Vj:
case Hj:
case Uj: return bL(t, i);
case bj: return new a();
case xj:
case Oj: return new a(t);
case Ej: return vL(t);
case Dj: return new a();
case kj: return yL(t);
}
}
function TR(t, n) {
var i = n.length;
if (!i) return t;
var a = i - 1;
return n[a] = (i > 1 ? "& " : "") + n[a], n = n.join(i > 2 ? ", " : " "), t.replace(sM, "{\n/* [wrapped with " + n + "] */\n");
}
function ER(t) {
return kV(t) || OV(t) || !!(XM && t && t[XM]);
}
function DR(t, n) {
var i = typeof t;
return n ??= ij, !!n && (i == "number" || i != "symbol" && yM.test(t)) && t > -1 && t % 1 == 0 && t < n;
}
function OR(t, n, i) {
if (!GV(i)) return !1;
var a = typeof n;
return (a == "number" ? jV(i) && DR(n, i.length) : a == "string" && n in i) ? TV(i[n], t) : !1;
}
function kR(t, n) {
if (kV(t)) return !1;
var i = typeof t;
return i == "number" || i == "symbol" || i == "boolean" || t == null || oH(t) ? !0 : tM.test(t) || !eM.test(t) || n != null && t in EM(n);
}
function AR(t) {
var n = typeof t;
return n == "string" || n == "number" || n == "symbol" || n == "boolean" ? t !== "__proto__" : t === null;
}
function jR(t) {
var n = lR(t), i = Q[n];
if (typeof i != "function" || !(n in YP.prototype)) return !1;
if (t === i) return !0;
var a = cR(i);
return !!a && t === a[0];
}
function MR(t) {
return !!LM && LM in t;
}
var NR = NM ? HV : hW;
function PR(t) {
var n = t && t.constructor, i = typeof n == "function" && n.prototype || MM;
return t === i;
}
function FR(t) {
return t === t && !GV(t);
}
function IR(t, n) {
return function(a) {
return a == null ? !1 : a[t] === n && (n !== i || t in EM(a));
};
}
function LR(t) {
var n = sV(t, function(t) {
return i.size === b && i.clear(), t;
}), i = n.cache;
return n;
}
function RR(t, n) {
var i = t[1], a = n[1], o = i | a, s = o < (A | M | q), c = a == q && i == I || a == q && i == JA && t[7].length <= n[8] || a == (q | JA) && n[7].length <= n[8] && i == I;
if (!(s || c)) return t;
a & A && (t[2] = n[2], o |= i & A ? 0 : F);
var d = n[3];
if (d) {
var f = t[3];
t[3] = f ? CL(f, d, n[4]) : d, t[4] = f ? OP(t[3], x) : n[4];
}
return d = n[5], d && (f = t[5], t[5] = f ? wL(f, d, n[6]) : d, t[6] = f ? OP(t[5], x) : n[6]), d = n[7], d && (t[7] = d), a & q && (t[8] = t[8] == null ? n[8] : _N(t[8], n[8])), t[9] ??= n[9], t[0] = n[0], t[1] = o, t;
}
function zR(t) {
var n = [];
if (t != null) for (var i in EM(t)) n.push(i);
return n;
}
function BR(t) {
return RM.call(t);
}
function VR(t, n, a) {
return n = fN(n === i ? t.length - 1 : n, 0), function() {
for (var i = arguments, o = -1, s = fN(i.length - n, 0), c = oM(s); ++o < s;) c[o] = i[n + o];
o = -1;
for (var d = oM(n + 1); ++o < n;) d[o] = i[o];
return d[n] = a(c), LN(t, this, d);
};
}
function HR(t, n) {
return n.length < 2 ? t : nI(t, YI(n, 0, -1));
}
function UR(t, n) {
for (var a = t.length, o = _N(n.length, a), s = TL(t); o--;) {
var c = n[o];
t[o] = DR(c, a) ? s[c] : i;
}
return t;
}
function WR(t, n) {
if (!(n === "constructor" && typeof t[n] == "function") && n != "__proto__") return t[n];
}
var GR = YR(KI), KR = nN || function(t, n) {
return TN.setTimeout(t, n);
}, qR = YR(qI);
function JR(t, n, i) {
var a = n + "";
return qR(t, TR(a, ez(bR(a), i)));
}
function YR(t) {
var n = 0, a = 0;
return function() {
var o = vN(), s = $A - (o - a);
if (a = o, s > 0) {
if (++n >= QA) return arguments[0];
} else n = 0;
return t.apply(i, arguments);
};
}
function XR(t, n) {
var a = -1, o = t.length, s = o - 1;
for (n = n === i ? o : n; ++a < n;) {
var c = zI(a, s), d = t[c];
t[c] = t[a], t[a] = d;
}
return t.length = n, t;
}
var ZR = LR(function(t) {
var n = [];
return t.charCodeAt(0) === 46 && n.push(""), t.replace(nM, function(t, i, a, o) {
n.push(a ? o.replace(fM, "$1") : i || t);
}), n;
});
function QR(t) {
if (typeof t == "string" || oH(t)) return t;
var n = t + "";
return n == "0" && 1 / t == -rj ? "-0" : n;
}
function $R(t) {
if (t != null) {
try {
return PM.call(t);
} catch {}
try {
return t + "";
} catch {}
}
return "";
}
function ez(t, n) {
return zN(uj, function(i) {
var a = "_." + i[0];
n & i[1] && !UN(t, a) && t.push(a);
}), t.sort();
}
function tz(t) {
if (t instanceof YP) return t.clone();
var n = new JP(t.__wrapped__, t.__chain__);
return n.__actions__ = TL(t.__actions__), n.__index__ = t.__index__, n.__values__ = t.__values__, n;
}
function nz(t, n, a) {
n = (a ? OR(t, n, a) : n === i) ? 1 : fN(hH(n), 0);
var o = t == null ? 0 : t.length;
if (!o || n < 1) return [];
for (var s = 0, c = 0, d = oM(rN(o / n)); s < o;) d[c++] = YI(t, s, s += n);
return d;
}
function rz(t) {
for (var n = -1, i = t == null ? 0 : t.length, a = 0, o = []; ++n < i;) {
var s = t[n];
s && (o[a++] = s);
}
return o;
}
function iz() {
var t = arguments.length;
if (!t) return [];
for (var n = oM(t - 1), i = arguments[0], a = t; a--;) n[a - 1] = arguments[a];
return KN(kV(i) ? TL(i) : [i], XF(n, 1));
}
var az = HI(function(t, n) {
return MV(t) ? UF(t, XF(n, 1, MV, !0)) : [];
}), oz = HI(function(t, n) {
var a = Ez(n);
return MV(a) && (a = i), MV(t) ? UF(t, XF(n, 1, MV, !0), dR(a, 2)) : [];
}), sz = HI(function(t, n) {
var a = Ez(n);
return MV(a) && (a = i), MV(t) ? UF(t, XF(n, 1, MV, !0), i, a) : [];
});
function cz(t, n, a) {
var o = t == null ? 0 : t.length;
return o ? (n = a || n === i ? 1 : hH(n), YI(t, n < 0 ? 0 : n, o)) : [];
}
function lz(t, n, a) {
var o = t == null ? 0 : t.length;
return o ? (n = a || n === i ? 1 : hH(n), n = o - n, YI(t, 0, n < 0 ? 0 : n)) : [];
}
function uz(t, n) {
return t && t.length ? aL(t, dR(n, 3), !0, !0) : [];
}
function dz(t, n) {
return t && t.length ? aL(t, dR(n, 3), !0) : [];
}
function fz(t, n, i, a) {
var o = t == null ? 0 : t.length;
return o ? (i && typeof i != "number" && OR(t, n, i) && (i = 0, a = o), JF(t, n, i, a)) : [];
}
function pz(t, n, i) {
var a = t == null ? 0 : t.length;
if (!a) return -1;
var o = i == null ? 0 : hH(i);
return o < 0 && (o = fN(a + o, 0)), eP(t, dR(n, 3), o);
}
function mz(t, n, a) {
var o = t == null ? 0 : t.length;
if (!o) return -1;
var s = o - 1;
return a !== i && (s = hH(a), s = a < 0 ? fN(o + s, 0) : _N(s, o - 1)), eP(t, dR(n, 3), s, !0);
}
function hz(t) {
return t != null && t.length ? XF(t, 1) : [];
}
function gz(t) {
return t != null && t.length ? XF(t, rj) : [];
}
function _z(t, n) {
return t != null && t.length ? (n = n === i ? 1 : hH(n), XF(t, n)) : [];
}
function vz(t) {
for (var n = -1, i = t == null ? 0 : t.length, a = {}; ++n < i;) {
var o = t[n];
IF(a, o[0], o[1]);
}
return a;
}
function yz(t) {
return t && t.length ? t[0] : i;
}
function bz(t, n, i) {
var a = t == null ? 0 : t.length;
if (!a) return -1;
var o = i == null ? 0 : hH(i);
return o < 0 && (o = fN(a + o, 0)), tP(t, n, o);
}
function xz(t) {
return t != null && t.length ? YI(t, 0, -1) : [];
}
var Sz = HI(function(t) {
var n = GN(t, lL);
return n.length && n[0] === t[0] ? lI(n) : [];
}), Cz = HI(function(t) {
var n = Ez(t), a = GN(t, lL);
return n === Ez(a) ? n = i : a.pop(), a.length && a[0] === t[0] ? lI(a, dR(n, 2)) : [];
}), wz = HI(function(t) {
var n = Ez(t), a = GN(t, lL);
return n = typeof n == "function" ? n : i, n && a.pop(), a.length && a[0] === t[0] ? lI(a, i, n) : [];
});
function Tz(t, n) {
return t == null ? "" : uN.call(t, n);
}
function Ez(t) {
var n = t == null ? 0 : t.length;
return n ? t[n - 1] : i;
}
function Dz(t, n, a) {
var o = t == null ? 0 : t.length;
if (!o) return -1;
var s = o;
return a !== i && (s = hH(a), s = s < 0 ? fN(o + s, 0) : _N(s, o - 1)), n === n ? MP(t, n, s) : eP(t, rP, s, !0);
}
function Oz(t, n) {
return t && t.length ? MI(t, hH(n)) : i;
}
var kz = HI(Az);
function Az(t, n) {
return t && t.length && n && n.length ? LI(t, n) : t;
}
function jz(t, n, i) {
return t && t.length && n && n.length ? LI(t, n, dR(i, 2)) : t;
}
function Mz(t, n, a) {
return t && t.length && n && n.length ? LI(t, n, i, a) : t;
}
var Nz = aR(function(t, n) {
var i = t == null ? 0 : t.length, a = LF(t, n);
return RI(t, GN(n, function(t) {
return DR(t, i) ? +t : t;
}).sort(xL)), a;
});
function Pz(t, n) {
var i = [];
if (!(t && t.length)) return i;
var a = -1, o = [], s = t.length;
for (n = dR(n, 3); ++a < s;) {
var c = t[a];
n(c, a, t) && (i.push(c), o.push(a));
}
return RI(t, o), i;
}
function Fz(t) {
return t == null ? t : CN.call(t);
}
function Iz(t, n, a) {
var o = t == null ? 0 : t.length;
return o ? (a && typeof a != "number" && OR(t, n, a) ? (n = 0, a = o) : (n = n == null ? 0 : hH(n), a = a === i ? o : hH(a)), YI(t, n, a)) : [];
}
function Lz(t, n) {
return ZI(t, n);
}
function Rz(t, n, i) {
return QI(t, n, dR(i, 2));
}
function zz(t, n) {
var i = t == null ? 0 : t.length;
if (i) {
var a = ZI(t, n);
if (a < i && TV(t[a], n)) return a;
}
return -1;
}
function Bz(t, n) {
return ZI(t, n, !0);
}
function Vz(t, n, i) {
return QI(t, n, dR(i, 2), !0);
}
function Hz(t, n) {
if (t != null && t.length) {
var i = ZI(t, n, !0) - 1;
if (TV(t[i], n)) return i;
}
return -1;
}
function Uz(t) {
return t && t.length ? $I(t) : [];
}
function Wz(t, n) {
return t && t.length ? $I(t, dR(n, 2)) : [];
}
function Gz(t) {
var n = t == null ? 0 : t.length;
return n ? YI(t, 1, n) : [];
}
function Kz(t, n, a) {
return t && t.length ? (n = a || n === i ? 1 : hH(n), YI(t, 0, n < 0 ? 0 : n)) : [];
}
function qz(t, n, a) {
var o = t == null ? 0 : t.length;
return o ? (n = a || n === i ? 1 : hH(n), n = o - n, YI(t, n < 0 ? 0 : n, o)) : [];
}
function Jz(t, n) {
return t && t.length ? aL(t, dR(n, 3), !1, !0) : [];
}
function Yz(t, n) {
return t && t.length ? aL(t, dR(n, 3)) : [];
}
var Xz = HI(function(t) {
return nL(XF(t, 1, MV, !0));
}), Zz = HI(function(t) {
var n = Ez(t);
return MV(n) && (n = i), nL(XF(t, 1, MV, !0), dR(n, 2));
}), Qz = HI(function(t) {
var n = Ez(t);
return n = typeof n == "function" ? n : i, nL(XF(t, 1, MV, !0), i, n);
});
function $z(t) {
return t && t.length ? nL(t) : [];
}
function eB(t, n) {
return t && t.length ? nL(t, dR(n, 2)) : [];
}
function tB(t, n) {
return n = typeof n == "function" ? n : i, t && t.length ? nL(t, i, n) : [];
}
function nB(t) {
if (!(t && t.length)) return [];
var n = 0;
return t = HN(t, function(t) {
if (MV(t)) return n = fN(t.length, n), !0;
}), uP(n, function(n) {
return GN(t, aP(n));
});
}
function rB(t, n) {
if (!(t && t.length)) return [];
var a = nB(t);
return n == null ? a : GN(a, function(t) {
return LN(n, i, t);
});
}
var iB = HI(function(t, n) {
return MV(t) ? UF(t, n) : [];
}), aB = HI(function(t) {
return sL(HN(t, MV));
}), oB = HI(function(t) {
var n = Ez(t);
return MV(n) && (n = i), sL(HN(t, MV), dR(n, 2));
}), sB = HI(function(t) {
var n = Ez(t);
return n = typeof n == "function" ? n : i, sL(HN(t, MV), i, n);
}), cB = HI(nB);
function lB(t, n) {
return cL(t || [], n || [], jF);
}
function uB(t, n) {
return cL(t || [], n || [], GI);
}
var dB = HI(function(t) {
var n = t.length, a = n > 1 ? t[n - 1] : i;
return a = typeof a == "function" ? (t.pop(), a) : i, rB(t, a);
});
function fB(t) {
var n = Q(t);
return n.__chain__ = !0, n;
}
function pB(t, n) {
return n(t), t;
}
function mB(t, n) {
return n(t);
}
var hB = aR(function(t) {
var n = t.length, a = n ? t[0] : 0, o = this.__wrapped__, s = function(n) {
return LF(n, t);
};
return n > 1 || this.__actions__.length || !(o instanceof YP) || !DR(a) ? this.thru(s) : (o = o.slice(a, +a + (n ? 1 : 0)), o.__actions__.push({
func: mB,
args: [s],
thisArg: i
}), new JP(o, this.__chain__).thru(function(t) {
return n && !t.length && t.push(i), t;
}));
});
function gB() {
return fB(this);
}
function _B() {
return new JP(this.value(), this.__chain__);
}
function vB() {
this.__values__ === i && (this.__values__ = pH(this.value()));
var t = this.__index__ >= this.__values__.length, n = t ? i : this.__values__[this.__index__++];
return {
done: t,
value: n
};
}
function yB() {
return this;
}
function bB(t) {
for (var n, a = this; a instanceof qP;) {
var o = tz(a);
o.__index__ = 0, o.__values__ = i, n ? s.__wrapped__ = o : n = o;
var s = o;
a = a.__wrapped__;
}
return s.__wrapped__ = t, n;
}
function xB() {
var t = this.__wrapped__;
if (t instanceof YP) {
var n = t;
return this.__actions__.length && (n = new YP(this)), n = n.reverse(), n.__actions__.push({
func: mB,
args: [Fz],
thisArg: i
}), new JP(n, this.__chain__);
}
return this.thru(Fz);
}
function SB() {
return oL(this.__wrapped__, this.__actions__);
}
var CB = kL(function(t, n, i) {
FM.call(t, i) ? ++t[i] : IF(t, i, 1);
});
function wB(t, n, a) {
var o = kV(t) ? VN : KF;
return a && OR(t, n, a) && (n = i), o(t, dR(n, 3));
}
function TB(t, n) {
return (kV(t) ? HN : YF)(t, dR(n, 3));
}
var EB = RL(pz), DB = RL(mz);
function OB(t, n) {
return XF(LB(t, n), 1);
}
function kB(t, n) {
return XF(LB(t, n), rj);
}
function AB(t, n, a) {
return a = a === i ? 1 : hH(a), XF(LB(t, n), a);
}
function jB(t, n) {
return (kV(t) ? zN : WF)(t, dR(n, 3));
}
function MB(t, n) {
return (kV(t) ? BN : GF)(t, dR(n, 3));
}
var NB = kL(function(t, n, i) {
FM.call(t, i) ? t[i].push(n) : IF(t, i, [n]);
});
function PB(t, n, i, a) {
t = jV(t) ? t : cU(t), i = i && !a ? hH(i) : 0;
var o = t.length;
return i < 0 && (i = fN(o + i, 0)), aH(t) ? i <= o && t.indexOf(n, i) > -1 : !!o && tP(t, n, i) > -1;
}
var FB = HI(function(t, n, i) {
var a = -1, o = typeof n == "function", s = jV(t) ? oM(t.length) : [];
return WF(t, function(t) {
s[++a] = o ? LN(n, t, i) : dI(t, n, i);
}), s;
}), IB = kL(function(t, n, i) {
IF(t, i, n);
});
function LB(t, n) {
return (kV(t) ? GN : DI)(t, dR(n, 3));
}
function RB(t, n, a, o) {
return t == null ? [] : (kV(n) || (n = n == null ? [] : [n]), a = o ? i : a, kV(a) || (a = a == null ? [] : [a]), NI(t, n, a));
}
var zB = kL(function(t, n, i) {
t[i ? 0 : 1].push(n);
}, function() {
return [[], []];
});
function BB(t, n, i) {
var a = kV(t) ? qN : sP, o = arguments.length < 3;
return a(t, dR(n, 4), i, o, WF);
}
function VB(t, n, i) {
var a = kV(t) ? JN : sP, o = arguments.length < 3;
return a(t, dR(n, 4), i, o, GF);
}
function HB(t, n) {
return (kV(t) ? HN : YF)(t, cV(dR(n, 3)));
}
function UB(t) {
return (kV(t) ? DF : UI)(t);
}
function WB(t, n, a) {
return n = (a ? OR(t, n, a) : n === i) ? 1 : hH(n), (kV(t) ? OF : WI)(t, n);
}
function GB(t) {
return (kV(t) ? kF : JI)(t);
}
function KB(t) {
if (t == null) return 0;
if (jV(t)) return aH(t) ? NP(t) : t.length;
var n = vR(t);
return n == bj || n == Dj ? t.size : wI(t).length;
}
function qB(t, n, a) {
var o = kV(t) ? YN : XI;
return a && OR(t, n, a) && (n = i), o(t, dR(n, 3));
}
var JB = HI(function(t, n) {
if (t == null) return [];
var i = n.length;
return i > 1 && OR(t, n[0], n[1]) ? n = [] : i > 2 && OR(n[0], n[1], n[2]) && (n = [n[0]]), NI(t, XF(n, 1), []);
}), YB = tN || function() {
return TN.Date.now();
};
function XB(t, n) {
if (typeof n != "function") throw new kM(c);
return t = hH(t), function() {
if (--t < 1) return n.apply(this, arguments);
};
}
function ZB(t, n, a) {
return n = a ? i : n, n = t && n == null ? t.length : n, QL(t, q, i, i, i, i, n);
}
function QB(t, n) {
var a;
if (typeof n != "function") throw new kM(c);
return t = hH(t), function() {
return --t > 0 && (a = n.apply(this, arguments)), t <= 1 && (n = i), a;
};
}
var $B = HI(function(t, n, i) {
var a = A;
if (i.length) {
var o = OP(i, uR($B));
a |= qA;
}
return QL(t, a, n, i, o);
}), eV = HI(function(t, n, i) {
var a = A | M;
if (i.length) {
var o = OP(i, uR(eV));
a |= qA;
}
return QL(n, a, t, i, o);
});
function tV(t, n, a) {
n = a ? i : n;
var o = QL(t, I, i, i, i, i, i, n);
return o.placeholder = tV.placeholder, o;
}
function nV(t, n, a) {
n = a ? i : n;
var o = QL(t, R, i, i, i, i, i, n);
return o.placeholder = nV.placeholder, o;
}
function rV(t, n, a) {
var o, s, d, f, g, b, x = 0, S = !1, C = !1, w = !0;
if (typeof t != "function") throw new kM(c);
n = _H(n) || 0, GV(a) && (S = !!a.leading, C = "maxWait" in a, d = C ? fN(_H(a.maxWait) || 0, n) : d, w = "trailing" in a ? !!a.trailing : w);
function E(n) {
var a = o, c = s;
return o = s = i, x = n, f = t.apply(c, a), f;
}
function O(t) {
return x = t, g = KR(F, n), S ? E(t) : f;
}
function A(t) {
var i = t - b, a = t - x, o = n - i;
return C ? _N(o, d - a) : o;
}
function M(t) {
var a = t - b, o = t - x;
return b === i || a >= n || a < 0 || C && o >= d;
}
function F() {
var t = YB();
if (M(t)) return I(t);
g = KR(F, A(t));
}
function I(t) {
return g = i, w && o ? E(t) : (o = s = i, f);
}
function R() {
g !== i && mL(g), x = 0, o = b = s = g = i;
}
function qA() {
return g === i ? f : I(YB());
}
function V() {
var t = YB(), a = M(t);
if (o = arguments, s = this, b = t, a) {
if (g === i) return O(b);
if (C) return mL(g), g = KR(F, n), E(b);
}
return g === i && (g = KR(F, n)), f;
}
return V.cancel = R, V.flush = qA, V;
}
var iV = HI(function(t, n) {
return HF(t, 1, n);
}), aV = HI(function(t, n, i) {
return HF(t, _H(n) || 0, i);
});
function oV(t) {
return QL(t, YA);
}
function sV(t, n) {
if (typeof t != "function" || n != null && typeof n != "function") throw new kM(c);
var i = function() {
var a = arguments, o = n ? n.apply(this, a) : a[0], s = i.cache;
if (s.has(o)) return s.get(o);
var c = t.apply(this, a);
return i.cache = s.set(o, c) || s, c;
};
return i.cache = new (sV.Cache || dF)(), i;
}
sV.Cache = dF;
function cV(t) {
if (typeof t != "function") throw new kM(c);
return function() {
var n = arguments;
switch (n.length) {
case 0: return !t.call(this);
case 1: return !t.call(this, n[0]);
case 2: return !t.call(this, n[0], n[1]);
case 3: return !t.call(this, n[0], n[1], n[2]);
}
return !t.apply(this, n);
};
}
function lV(t) {
return QB(2, t);
}
var uV = fL(function(t, n) {
n = n.length == 1 && kV(n[0]) ? GN(n[0], pP(dR())) : GN(XF(n, 1), pP(dR()));
var i = n.length;
return HI(function(a) {
for (var o = -1, s = _N(a.length, i); ++o < s;) a[o] = n[o].call(this, a[o]);
return LN(t, this, a);
});
}), dV = HI(function(t, n) {
var a = OP(n, uR(dV));
return QL(t, qA, i, n, a);
}), fV = HI(function(t, n) {
var a = OP(n, uR(fV));
return QL(t, V, i, n, a);
}), pV = aR(function(t, n) {
return QL(t, JA, i, i, i, n);
});
function mV(t, n) {
if (typeof t != "function") throw new kM(c);
return n = n === i ? n : hH(n), HI(t, n);
}
function hV(t, n) {
if (typeof t != "function") throw new kM(c);
return n = n == null ? 0 : fN(hH(n), 0), HI(function(i) {
var a = i[n], o = pL(i, 0, n);
return a && KN(o, a), LN(t, this, o);
});
}
function gV(t, n, i) {
var a = !0, o = !0;
if (typeof t != "function") throw new kM(c);
return GV(i) && (a = "leading" in i ? !!i.leading : a, o = "trailing" in i ? !!i.trailing : o), rV(t, n, {
leading: a,
maxWait: n,
trailing: o
});
}
function _V(t) {
return ZB(t, 1);
}
function vV(t, n) {
return dV(uL(n), t);
}
function yV() {
if (!arguments.length) return [];
var t = arguments[0];
return kV(t) ? t : [t];
}
function bV(t) {
return zF(t, w);
}
function xV(t, n) {
return n = typeof n == "function" ? n : i, zF(t, w, n);
}
function SV(t) {
return zF(t, S | w);
}
function CV(t, n) {
return n = typeof n == "function" ? n : i, zF(t, S | w, n);
}
function wV(t, n) {
return n == null || VF(t, n, UH(n));
}
function TV(t, n) {
return t === n || t !== t && n !== n;
}
var EV = qL(aI), DV = qL(function(t, n) {
return t >= n;
}), OV = fI(function() {
return arguments;
}()) ? fI : function(t) {
return KV(t) && FM.call(t, "callee") && !JM.call(t, "callee");
}, kV = oM.isArray, AV = jN ? pP(jN) : pI;
function jV(t) {
return t != null && WV(t.length) && !HV(t);
}
function MV(t) {
return KV(t) && jV(t);
}
function NV(t) {
return t === !0 || t === !1 || KV(t) && iI(t) == mj;
}
var PV = oN || hW, FV = MN ? pP(MN) : mI;
function IV(t) {
return KV(t) && t.nodeType === 1 && !tH(t);
}
function LV(t) {
if (t == null) return !0;
if (jV(t) && (kV(t) || typeof t == "string" || typeof t.splice == "function" || PV(t) || sH(t) || OV(t))) return !t.length;
var n = vR(t);
if (n == bj || n == Dj) return !t.size;
if (PR(t)) return !wI(t).length;
for (var i in t) if (FM.call(t, i)) return !1;
return !0;
}
function RV(t, n) {
return hI(t, n);
}
function zV(t, n, a) {
a = typeof a == "function" ? a : i;
var o = a ? a(t, n) : i;
return o === i ? hI(t, n, i, a) : !!o;
}
function BV(t) {
if (!KV(t)) return !1;
var n = iI(t);
return n == _j || n == gj || typeof t.message == "string" && typeof t.name == "string" && !tH(t);
}
function VV(t) {
return typeof t == "number" && lN(t);
}
function HV(t) {
if (!GV(t)) return !1;
var n = iI(t);
return n == vj || n == yj || n == pj || n == Tj;
}
function UV(t) {
return typeof t == "number" && t == hH(t);
}
function WV(t) {
return typeof t == "number" && t > -1 && t % 1 == 0 && t <= ij;
}
function GV(t) {
var n = typeof t;
return t != null && (n == "object" || n == "function");
}
function KV(t) {
return typeof t == "object" && !!t;
}
var qV = NN ? pP(NN) : _I;
function JV(t, n) {
return t === n || vI(t, n, pR(n));
}
function YV(t, n, a) {
return a = typeof a == "function" ? a : i, vI(t, n, pR(n), a);
}
function XV(t) {
return eH(t) && t != +t;
}
function ZV(t) {
if (NR(t)) throw new CM(s);
return yI(t);
}
function QV(t) {
return t === null;
}
function $V(t) {
return t == null;
}
function eH(t) {
return typeof t == "number" || KV(t) && iI(t) == xj;
}
function tH(t) {
if (!KV(t) || iI(t) != Cj) return !1;
var n = KM(t);
if (n === null) return !0;
var i = FM.call(n, "constructor") && n.constructor;
return typeof i == "function" && i instanceof i && PM.call(i) == zM;
}
var nH = PN ? pP(PN) : bI;
function rH(t) {
return UV(t) && t >= -ij && t <= ij;
}
var iH = FN ? pP(FN) : xI;
function aH(t) {
return typeof t == "string" || !kV(t) && KV(t) && iI(t) == Oj;
}
function oH(t) {
return typeof t == "symbol" || KV(t) && iI(t) == kj;
}
var sH = IN ? pP(IN) : SI;
function cH(t) {
return t === i;
}
function lH(t) {
return KV(t) && vR(t) == jj;
}
function uH(t) {
return KV(t) && iI(t) == Mj;
}
var dH = qL(EI), fH = qL(function(t, n) {
return t <= n;
});
function pH(t) {
if (!t) return [];
if (jV(t)) return aH(t) ? PP(t) : TL(t);
if (ZM && t[ZM]) return TP(t[ZM]());
var n = vR(t);
return (n == bj ? EP : n == Dj ? kP : cU)(t);
}
function mH(t) {
return t ? (t = _H(t), t === rj || t === -rj ? (t < 0 ? -1 : 1) * aj : t === t ? t : 0) : t === 0 ? t : 0;
}
function hH(t) {
var n = mH(t), i = n % 1;
return n === n ? i ? n - i : n : 0;
}
function gH(t) {
return t ? RF(hH(t), 0, sj) : 0;
}
function _H(t) {
if (typeof t == "number") return t;
if (oH(t)) return oj;
if (GV(t)) {
var n = typeof t.valueOf == "function" ? t.valueOf() : t;
t = GV(n) ? n + "" : n;
}
if (typeof t != "string") return t === 0 ? t : +t;
t = fP(t);
var i = gM.test(t);
return i || vM.test(t) ? SN(t.slice(2), i ? 2 : 8) : hM.test(t) ? oj : +t;
}
function vH(t) {
return EL(t, WH(t));
}
function yH(t) {
return t ? RF(hH(t), -ij, ij) : t === 0 ? t : 0;
}
function bH(t) {
return t == null ? "" : tL(t);
}
var xH = AL(function(t, n) {
if (PR(n) || jV(n)) {
EL(n, UH(n), t);
return;
}
for (var i in n) FM.call(n, i) && jF(t, i, n[i]);
}), SH = AL(function(t, n) {
EL(n, WH(n), t);
}), CH = AL(function(t, n, i, a) {
EL(n, WH(n), t, a);
}), wH = AL(function(t, n, i, a) {
EL(n, UH(n), t, a);
}), TH = aR(LF);
function EH(t, n) {
var i = KP(t);
return n == null ? i : PF(i, n);
}
var DH = HI(function(t, n) {
t = EM(t);
var a = -1, o = n.length, s = o > 2 ? n[2] : i;
for (s && OR(n[0], n[1], s) && (o = 1); ++a < o;) for (var c = n[a], d = WH(c), f = -1, g = d.length; ++f < g;) {
var b = d[f], x = t[b];
(x === i || TV(x, MM[b]) && !FM.call(t, b)) && (t[b] = c[b]);
}
return t;
}), OH = HI(function(t) {
return t.push(i, eR), LN(JH, i, t);
});
function kH(t, n) {
return $N(t, dR(n, 3), $F);
}
function AH(t, n) {
return $N(t, dR(n, 3), eI);
}
function jH(t, n) {
return t == null ? t : ZF(t, dR(n, 3), WH);
}
function MH(t, n) {
return t == null ? t : QF(t, dR(n, 3), WH);
}
function NH(t, n) {
return t && $F(t, dR(n, 3));
}
function PH(t, n) {
return t && eI(t, dR(n, 3));
}
function FH(t) {
return t == null ? [] : tI(t, UH(t));
}
function IH(t) {
return t == null ? [] : tI(t, WH(t));
}
function LH(t, n, a) {
var o = t == null ? i : nI(t, n);
return o === i ? a : o;
}
function RH(t, n) {
return t != null && xR(t, n, oI);
}
function zH(t, n) {
return t != null && xR(t, n, sI);
}
var BH = VL(function(t, n, i) {
n != null && typeof n.toString != "function" && (n = RM.call(n)), t[n] = i;
}, qU(ZU)), VH = VL(function(t, n, i) {
n != null && typeof n.toString != "function" && (n = RM.call(n)), FM.call(t, n) ? t[n].push(i) : t[n] = [i];
}, dR), HH = HI(dI);
function UH(t) {
return jV(t) ? EF(t) : wI(t);
}
function WH(t) {
return jV(t) ? EF(t, !0) : TI(t);
}
function GH(t, n) {
var i = {};
return n = dR(n, 3), $F(t, function(t, a, o) {
IF(i, n(t, a, o), t);
}), i;
}
function KH(t, n) {
var i = {};
return n = dR(n, 3), $F(t, function(t, a, o) {
IF(i, a, n(t, a, o));
}), i;
}
var qH = AL(function(t, n, i) {
AI(t, n, i);
}), JH = AL(function(t, n, i, a) {
AI(t, n, i, a);
}), YH = aR(function(t, n) {
var i = {};
if (t == null) return i;
var a = !1;
n = GN(n, function(n) {
return n = dL(n, t), a ||= n.length > 1, n;
}), EL(t, sR(t), i), a && (i = zF(i, S | C | w, tR));
for (var o = n.length; o--;) rL(i, n[o]);
return i;
});
function XH(t, n) {
return QH(t, cV(dR(n)));
}
var ZH = aR(function(t, n) {
return t == null ? {} : PI(t, n);
});
function QH(t, n) {
if (t == null) return {};
var i = GN(sR(t), function(t) {
return [t];
});
return n = dR(n), FI(t, i, function(t, i) {
return n(t, i[0]);
});
}
function $H(t, n, a) {
n = dL(n, t);
var o = -1, s = n.length;
for (s || (s = 1, t = i); ++o < s;) {
var c = t == null ? i : t[QR(n[o])];
c === i && (o = s, c = a), t = HV(c) ? c.call(t) : c;
}
return t;
}
function eU(t, n, i) {
return t == null ? t : GI(t, n, i);
}
function tU(t, n, a, o) {
return o = typeof o == "function" ? o : i, t == null ? t : GI(t, n, a, o);
}
var nU = ZL(UH), rU = ZL(WH);
function iU(t, n, i) {
var a = kV(t), o = a || PV(t) || sH(t);
if (n = dR(n, 4), i == null) {
var s = t && t.constructor;
i = o ? a ? new s() : [] : GV(t) && HV(s) ? KP(KM(t)) : {};
}
return (o ? zN : $F)(t, function(t, a, o) {
return n(i, t, a, o);
}), i;
}
function aU(t, n) {
return t == null ? !0 : rL(t, n);
}
function oU(t, n, i) {
return t == null ? t : iL(t, n, uL(i));
}
function sU(t, n, a, o) {
return o = typeof o == "function" ? o : i, t == null ? t : iL(t, n, uL(a), o);
}
function cU(t) {
return t == null ? [] : mP(t, UH(t));
}
function lU(t) {
return t == null ? [] : mP(t, WH(t));
}
function uU(t, n, a) {
return a === i && (a = n, n = i), a !== i && (a = _H(a), a = a === a ? a : 0), n !== i && (n = _H(n), n = n === n ? n : 0), RF(_H(t), n, a);
}
function dU(t, n, a) {
return n = mH(n), a === i ? (a = n, n = 0) : a = mH(a), t = _H(t), cI(t, n, a);
}
function fU(t, n, a) {
if (a && typeof a != "boolean" && OR(t, n, a) && (n = a = i), a === i && (typeof n == "boolean" ? (a = n, n = i) : typeof t == "boolean" && (a = t, t = i)), t === i && n === i ? (t = 0, n = 1) : (t = mH(t), n === i ? (n = t, t = 0) : n = mH(n)), t > n) {
var o = t;
t = n, n = o;
}
if (a || t % 1 || n % 1) {
var s = bN();
return _N(t + s * (n - t + xN("1e-" + ((s + "").length - 1))), n);
}
return zI(t, n);
}
var pU = FL(function(t, n, i) {
return n = n.toLowerCase(), t + (i ? mU(n) : n);
});
function mU(t) {
return VU(bH(t).toLowerCase());
}
function hU(t) {
return t = bH(t), t && t.replace(bM, yP).replace(cN, "");
}
function gU(t, n, a) {
t = bH(t), n = tL(n);
var o = t.length;
a = a === i ? o : RF(hH(a), 0, o);
var s = a;
return a -= n.length, a >= 0 && t.slice(a, s) == n;
}
function _U(t) {
return t = bH(t), t && Xj.test(t) ? t.replace(Jj, bP) : t;
}
function vU(t) {
return t = bH(t), t && iM.test(t) ? t.replace(rM, "\\$&") : t;
}
var yU = FL(function(t, n, i) {
return t + (i ? "-" : "") + n.toLowerCase();
}), bU = FL(function(t, n, i) {
return t + (i ? " " : "") + n.toLowerCase();
}), xU = PL("toLowerCase");
function SU(t, n, i) {
t = bH(t), n = hH(n);
var a = n ? NP(t) : 0;
if (!n || a >= n) return t;
var o = (n - a) / 2;
return WL(iN(o), i) + t + WL(rN(o), i);
}
function CU(t, n, i) {
t = bH(t), n = hH(n);
var a = n ? NP(t) : 0;
return n && a < n ? t + WL(n - a, i) : t;
}
function wU(t, n, i) {
t = bH(t), n = hH(n);
var a = n ? NP(t) : 0;
return n && a < n ? WL(n - a, i) + t : t;
}
function TU(t, n, i) {
return i || n == null ? n = 0 : n &&= +n, yN(bH(t).replace(aM, ""), n || 0);
}
function EU(t, n, a) {
return n = (a ? OR(t, n, a) : n === i) ? 1 : hH(n), VI(bH(t), n);
}
function DU() {
var t = arguments, n = bH(t[0]);
return t.length < 3 ? n : n.replace(t[1], t[2]);
}
var OU = FL(function(t, n, i) {
return t + (i ? "_" : "") + n.toLowerCase();
});
function kU(t, n, a) {
return a && typeof a != "number" && OR(t, n, a) && (n = a = i), a = a === i ? sj : a >>> 0, a ? (t = bH(t), t && (typeof n == "string" || n != null && !nH(n)) && (n = tL(n), !n && CP(t)) ? pL(PP(t), 0, a) : t.split(n, a)) : [];
}
var AU = FL(function(t, n, i) {
return t + (i ? " " : "") + VU(n);
});
function jU(t, n, i) {
return t = bH(t), i = i == null ? 0 : RF(hH(i), 0, t.length), n = tL(n), t.slice(i, i + n.length) == n;
}
function MU(t, n, a) {
var o = Q.templateSettings;
a && OR(t, n, a) && (n = i), t = bH(t), n = wH({}, n, o, $L);
var s = wH({}, n.imports, o.imports, $L), c = UH(s), g = mP(s, c);
zN(c, function(t) {
if (dM.test(t)) throw new CM(f);
});
var b, x, S = 0, C = n.interpolate || xM, w = "__p += '", E = DM((n.escape || xM).source + "|" + C.source + "|" + (C === $j ? pM : xM).source + "|" + (n.evaluate || xM).source + "|$", "g"), O = "//# sourceURL=" + (FM.call(n, "sourceURL") ? (n.sourceURL + "").replace(/\s/g, " ") : "lodash.templateSources[" + ++mN + "]") + "\n";
t.replace(E, function(n, i, a, o, s, c) {
return a ||= o, w += t.slice(S, c).replace(SM, xP), i && (b = !0, w += "' +\n__e(" + i + ") +\n'"), s && (x = !0, w += "';\n" + s + ";\n__p += '"), a && (w += "' +\n((__t = (" + a + ")) == null ? '' : __t) +\n'"), S = c + n.length, n;
}), w += "';\n";
var A = FM.call(n, "variable") && n.variable;
if (!A) w = "with (obj) {\n" + w + "\n}\n";
else if (dM.test(A)) throw new CM(d);
w = (x ? w.replace(Wj, "") : w).replace(Gj, "$1").replace(Kj, "$1;"), w = "function(" + (A || "obj") + ") {\n" + (A ? "" : "obj || (obj = {});\n") + "var __t, __p = ''" + (b ? ", __e = _.escape" : "") + (x ? ", __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\n" : ";\n") + w + "return __p\n}";
var M = UU(function() {
return wM(c, O + "return " + w).apply(i, g);
});
if (M.source = w, BV(M)) throw M;
return M;
}
function NU(t) {
return bH(t).toLowerCase();
}
function PU(t) {
return bH(t).toUpperCase();
}
function FU(t, n, a) {
if (t = bH(t), t && (a || n === i)) return fP(t);
if (!t || !(n = tL(n))) return t;
var o = PP(t), s = PP(n), c = gP(o, s), d = _P(o, s) + 1;
return pL(o, c, d).join("");
}
function IU(t, n, a) {
if (t = bH(t), t && (a || n === i)) return t.slice(0, FP(t) + 1);
if (!t || !(n = tL(n))) return t;
var o = PP(t), s = _P(o, PP(n)) + 1;
return pL(o, 0, s).join("");
}
function LU(t, n, a) {
if (t = bH(t), t && (a || n === i)) return t.replace(aM, "");
if (!t || !(n = tL(n))) return t;
var o = PP(t), s = gP(o, PP(n));
return pL(o, s).join("");
}
function RU(t, n) {
var a = XA, o = ZA;
if (GV(n)) {
var s = "separator" in n ? n.separator : s;
a = "length" in n ? hH(n.length) : a, o = "omission" in n ? tL(n.omission) : o;
}
t = bH(t);
var c = t.length;
if (CP(t)) {
var d = PP(t);
c = d.length;
}
if (a >= c) return t;
var f = a - NP(o);
if (f < 1) return o;
var g = d ? pL(d, 0, f).join("") : t.slice(0, f);
if (s === i) return g + o;
if (d && (f += g.length - f), nH(s)) {
if (t.slice(f).search(s)) {
var b, x = g;
for (s.global || (s = DM(s.source, bH(mM.exec(s)) + "g")), s.lastIndex = 0; b = s.exec(x);) var S = b.index;
g = g.slice(0, S === i ? f : S);
}
} else if (t.indexOf(tL(s), f) != f) {
var C = g.lastIndexOf(s);
C > -1 && (g = g.slice(0, C));
}
return g + o;
}
function zU(t) {
return t = bH(t), t && Yj.test(t) ? t.replace(qj, IP) : t;
}
var BU = FL(function(t, n, i) {
return t + (i ? " " : "") + n.toUpperCase();
}), VU = PL("toUpperCase");
function HU(t, n, a) {
return t = bH(t), n = a ? i : n, n === i ? wP(t) ? zP(t) : QN(t) : t.match(n) || [];
}
var UU = HI(function(t, n) {
try {
return LN(t, i, n);
} catch (t) {
return BV(t) ? t : new CM(t);
}
}), WU = aR(function(t, n) {
return zN(n, function(n) {
n = QR(n), IF(t, n, $B(t[n], t));
}), t;
});
function GU(t) {
var n = t == null ? 0 : t.length, i = dR();
return t = n ? GN(t, function(t) {
if (typeof t[1] != "function") throw new kM(c);
return [i(t[0]), t[1]];
}) : [], HI(function(i) {
for (var a = -1; ++a < n;) {
var o = t[a];
if (LN(o[0], this, i)) return LN(o[1], this, i);
}
});
}
function KU(t) {
return BF(zF(t, S));
}
function qU(t) {
return function() {
return t;
};
}
function JU(t, n) {
return t == null || t !== t ? n : t;
}
var YU = zL(), XU = zL(!0);
function ZU(t) {
return t;
}
function QU(t) {
return CI(typeof t == "function" ? t : zF(t, S));
}
function $U(t) {
return OI(zF(t, S));
}
function eW(t, n) {
return kI(t, zF(n, S));
}
var tW = HI(function(t, n) {
return function(i) {
return dI(i, t, n);
};
}), nW = HI(function(t, n) {
return function(i) {
return dI(t, i, n);
};
});
function rW(t, n, i) {
var a = UH(n), o = tI(n, a);
i == null && !(GV(n) && (o.length || !a.length)) && (i = n, n = t, t = this, o = tI(n, UH(n)));
var s = !(GV(i) && "chain" in i) || !!i.chain, c = HV(t);
return zN(o, function(i) {
var a = n[i];
t[i] = a, c && (t.prototype[i] = function() {
var n = this.__chain__;
if (s || n) {
var i = t(this.__wrapped__);
return (i.__actions__ = TL(this.__actions__)).push({
func: a,
args: arguments,
thisArg: t
}), i.__chain__ = n, i;
}
return a.apply(t, KN([this.value()], arguments));
});
}), t;
}
function iW() {
return TN._ === this && (TN._ = BM), this;
}
function aW() {}
function oW(t) {
return t = hH(t), HI(function(n) {
return MI(n, t);
});
}
var sW = UL(GN), cW = UL(VN), lW = UL(YN);
function uW(t) {
return kR(t) ? aP(QR(t)) : II(t);
}
function dW(t) {
return function(n) {
return t == null ? i : nI(t, n);
};
}
var fW = KL(), pW = KL(!0);
function mW() {
return [];
}
function hW() {
return !1;
}
function gW() {
return {};
}
function _W() {
return "";
}
function vW() {
return !0;
}
function yW(t, n) {
if (t = hH(t), t < 1 || t > ij) return [];
var i = sj, a = _N(t, sj);
n = dR(n), t -= sj;
for (var o = uP(a, n); ++i < t;) n(i);
return o;
}
function bW(t) {
return kV(t) ? GN(t, QR) : oH(t) ? [t] : TL(ZR(bH(t)));
}
function xW(t) {
var n = ++IM;
return bH(t) + n;
}
var SW = HL(function(t, n) {
return t + n;
}, 0), CW = YL("ceil"), wW = HL(function(t, n) {
return t / n;
}, 1), TW = YL("floor");
function EW(t) {
return t && t.length ? qF(t, ZU, aI) : i;
}
function DW(t, n) {
return t && t.length ? qF(t, dR(n, 2), aI) : i;
}
function OW(t) {
return iP(t, ZU);
}
function kW(t, n) {
return iP(t, dR(n, 2));
}
function AW(t) {
return t && t.length ? qF(t, ZU, EI) : i;
}
function jW(t, n) {
return t && t.length ? qF(t, dR(n, 2), EI) : i;
}
var MW = HL(function(t, n) {
return t * n;
}, 1), NW = YL("round"), PW = HL(function(t, n) {
return t - n;
}, 0);
function FW(t) {
return t && t.length ? lP(t, ZU) : 0;
}
function IW(t, n) {
return t && t.length ? lP(t, dR(n, 2)) : 0;
}
return Q.after = XB, Q.ary = ZB, Q.assign = xH, Q.assignIn = SH, Q.assignInWith = CH, Q.assignWith = wH, Q.at = TH, Q.before = QB, Q.bind = $B, Q.bindAll = WU, Q.bindKey = eV, Q.castArray = yV, Q.chain = fB, Q.chunk = nz, Q.compact = rz, Q.concat = iz, Q.cond = GU, Q.conforms = KU, Q.constant = qU, Q.countBy = CB, Q.create = EH, Q.curry = tV, Q.curryRight = nV, Q.debounce = rV, Q.defaults = DH, Q.defaultsDeep = OH, Q.defer = iV, Q.delay = aV, Q.difference = az, Q.differenceBy = oz, Q.differenceWith = sz, Q.drop = cz, Q.dropRight = lz, Q.dropRightWhile = uz, Q.dropWhile = dz, Q.fill = fz, Q.filter = TB, Q.flatMap = OB, Q.flatMapDeep = kB, Q.flatMapDepth = AB, Q.flatten = hz, Q.flattenDeep = gz, Q.flattenDepth = _z, Q.flip = oV, Q.flow = YU, Q.flowRight = XU, Q.fromPairs = vz, Q.functions = FH, Q.functionsIn = IH, Q.groupBy = NB, Q.initial = xz, Q.intersection = Sz, Q.intersectionBy = Cz, Q.intersectionWith = wz, Q.invert = BH, Q.invertBy = VH, Q.invokeMap = FB, Q.iteratee = QU, Q.keyBy = IB, Q.keys = UH, Q.keysIn = WH, Q.map = LB, Q.mapKeys = GH, Q.mapValues = KH, Q.matches = $U, Q.matchesProperty = eW, Q.memoize = sV, Q.merge = qH, Q.mergeWith = JH, Q.method = tW, Q.methodOf = nW, Q.mixin = rW, Q.negate = cV, Q.nthArg = oW, Q.omit = YH, Q.omitBy = XH, Q.once = lV, Q.orderBy = RB, Q.over = sW, Q.overArgs = uV, Q.overEvery = cW, Q.overSome = lW, Q.partial = dV, Q.partialRight = fV, Q.partition = zB, Q.pick = ZH, Q.pickBy = QH, Q.property = uW, Q.propertyOf = dW, Q.pull = kz, Q.pullAll = Az, Q.pullAllBy = jz, Q.pullAllWith = Mz, Q.pullAt = Nz, Q.range = fW, Q.rangeRight = pW, Q.rearg = pV, Q.reject = HB, Q.remove = Pz, Q.rest = mV, Q.reverse = Fz, Q.sampleSize = WB, Q.set = eU, Q.setWith = tU, Q.shuffle = GB, Q.slice = Iz, Q.sortBy = JB, Q.sortedUniq = Uz, Q.sortedUniqBy = Wz, Q.split = kU, Q.spread = hV, Q.tail = Gz, Q.take = Kz, Q.takeRight = qz, Q.takeRightWhile = Jz, Q.takeWhile = Yz, Q.tap = pB, Q.throttle = gV, Q.thru = mB, Q.toArray = pH, Q.toPairs = nU, Q.toPairsIn = rU, Q.toPath = bW, Q.toPlainObject = vH, Q.transform = iU, Q.unary = _V, Q.union = Xz, Q.unionBy = Zz, Q.unionWith = Qz, Q.uniq = $z, Q.uniqBy = eB, Q.uniqWith = tB, Q.unset = aU, Q.unzip = nB, Q.unzipWith = rB, Q.update = oU, Q.updateWith = sU, Q.values = cU, Q.valuesIn = lU, Q.without = iB, Q.words = HU, Q.wrap = vV, Q.xor = aB, Q.xorBy = oB, Q.xorWith = sB, Q.zip = cB, Q.zipObject = lB, Q.zipObjectDeep = uB, Q.zipWith = dB, Q.entries = nU, Q.entriesIn = rU, Q.extend = SH, Q.extendWith = CH, rW(Q, Q), Q.add = SW, Q.attempt = UU, Q.camelCase = pU, Q.capitalize = mU, Q.ceil = CW, Q.clamp = uU, Q.clone = bV, Q.cloneDeep = SV, Q.cloneDeepWith = CV, Q.cloneWith = xV, Q.conformsTo = wV, Q.deburr = hU, Q.defaultTo = JU, Q.divide = wW, Q.endsWith = gU, Q.eq = TV, Q.escape = _U, Q.escapeRegExp = vU, Q.every = wB, Q.find = EB, Q.findIndex = pz, Q.findKey = kH, Q.findLast = DB, Q.findLastIndex = mz, Q.findLastKey = AH, Q.floor = TW, Q.forEach = jB, Q.forEachRight = MB, Q.forIn = jH, Q.forInRight = MH, Q.forOwn = NH, Q.forOwnRight = PH, Q.get = LH, Q.gt = EV, Q.gte = DV, Q.has = RH, Q.hasIn = zH, Q.head = yz, Q.identity = ZU, Q.includes = PB, Q.indexOf = bz, Q.inRange = dU, Q.invoke = HH, Q.isArguments = OV, Q.isArray = kV, Q.isArrayBuffer = AV, Q.isArrayLike = jV, Q.isArrayLikeObject = MV, Q.isBoolean = NV, Q.isBuffer = PV, Q.isDate = FV, Q.isElement = IV, Q.isEmpty = LV, Q.isEqual = RV, Q.isEqualWith = zV, Q.isError = BV, Q.isFinite = VV, Q.isFunction = HV, Q.isInteger = UV, Q.isLength = WV, Q.isMap = qV, Q.isMatch = JV, Q.isMatchWith = YV, Q.isNaN = XV, Q.isNative = ZV, Q.isNil = $V, Q.isNull = QV, Q.isNumber = eH, Q.isObject = GV, Q.isObjectLike = KV, Q.isPlainObject = tH, Q.isRegExp = nH, Q.isSafeInteger = rH, Q.isSet = iH, Q.isString = aH, Q.isSymbol = oH, Q.isTypedArray = sH, Q.isUndefined = cH, Q.isWeakMap = lH, Q.isWeakSet = uH, Q.join = Tz, Q.kebabCase = yU, Q.last = Ez, Q.lastIndexOf = Dz, Q.lowerCase = bU, Q.lowerFirst = xU, Q.lt = dH, Q.lte = fH, Q.max = EW, Q.maxBy = DW, Q.mean = OW, Q.meanBy = kW, Q.min = AW, Q.minBy = jW, Q.stubArray = mW, Q.stubFalse = hW, Q.stubObject = gW, Q.stubString = _W, Q.stubTrue = vW, Q.multiply = MW, Q.nth = Oz, Q.noConflict = iW, Q.noop = aW, Q.now = YB, Q.pad = SU, Q.padEnd = CU, Q.padStart = wU, Q.parseInt = TU, Q.random = fU, Q.reduce = BB, Q.reduceRight = VB, Q.repeat = EU, Q.replace = DU, Q.result = $H, Q.round = NW, Q.runInContext = t, Q.sample = UB, Q.size = KB, Q.snakeCase = OU, Q.some = qB, Q.sortedIndex = Lz, Q.sortedIndexBy = Rz, Q.sortedIndexOf = zz, Q.sortedLastIndex = Bz, Q.sortedLastIndexBy = Vz, Q.sortedLastIndexOf = Hz, Q.startCase = AU, Q.startsWith = jU, Q.subtract = PW, Q.sum = FW, Q.sumBy = IW, Q.template = MU, Q.times = yW, Q.toFinite = mH, Q.toInteger = hH, Q.toLength = gH, Q.toLower = NU, Q.toNumber = _H, Q.toSafeInteger = yH, Q.toString = bH, Q.toUpper = PU, Q.trim = FU, Q.trimEnd = IU, Q.trimStart = LU, Q.truncate = RU, Q.unescape = zU, Q.uniqueId = xW, Q.upperCase = BU, Q.upperFirst = VU, Q.each = jB, Q.eachRight = MB, Q.first = yz, rW(Q, function() {
var t = {};
return $F(Q, function(n, i) {
FM.call(Q.prototype, i) || (t[i] = n);
}), t;
}(), { chain: !1 }), Q.VERSION = a, zN([
"bind",
"bindKey",
"curry",
"curryRight",
"partial",
"partialRight"
], function(t) {
Q[t].placeholder = Q;
}), zN(["drop", "take"], function(t, n) {
YP.prototype[t] = function(a) {
a = a === i ? 1 : fN(hH(a), 0);
var o = this.__filtered__ && !n ? new YP(this) : this.clone();
return o.__filtered__ ? o.__takeCount__ = _N(a, o.__takeCount__) : o.__views__.push({
size: _N(a, sj),
type: t + (o.__dir__ < 0 ? "Right" : "")
}), o;
}, YP.prototype[t + "Right"] = function(n) {
return this.reverse()[t](n).reverse();
};
}), zN([
"filter",
"map",
"takeWhile"
], function(t, n) {
var i = n + 1, a = i == ej || i == nj;
YP.prototype[t] = function(t) {
var n = this.clone();
return n.__iteratees__.push({
iteratee: dR(t, 3),
type: i
}), n.__filtered__ = n.__filtered__ || a, n;
};
}), zN(["head", "last"], function(t, n) {
var i = "take" + (n ? "Right" : "");
YP.prototype[t] = function() {
return this[i](1).value()[0];
};
}), zN(["initial", "tail"], function(t, n) {
var i = "drop" + (n ? "" : "Right");
YP.prototype[t] = function() {
return this.__filtered__ ? new YP(this) : this[i](1);
};
}), YP.prototype.compact = function() {
return this.filter(ZU);
}, YP.prototype.find = function(t) {
return this.filter(t).head();
}, YP.prototype.findLast = function(t) {
return this.reverse().find(t);
}, YP.prototype.invokeMap = HI(function(t, n) {
return typeof t == "function" ? new YP(this) : this.map(function(i) {
return dI(i, t, n);
});
}), YP.prototype.reject = function(t) {
return this.filter(cV(dR(t)));
}, YP.prototype.slice = function(t, n) {
t = hH(t);
var a = this;
return a.__filtered__ && (t > 0 || n < 0) ? new YP(a) : (t < 0 ? a = a.takeRight(-t) : t && (a = a.drop(t)), n !== i && (n = hH(n), a = n < 0 ? a.dropRight(-n) : a.take(n - t)), a);
}, YP.prototype.takeRightWhile = function(t) {
return this.reverse().takeWhile(t).reverse();
}, YP.prototype.toArray = function() {
return this.take(sj);
}, $F(YP.prototype, function(t, n) {
var a = /^(?:filter|find|map|reject)|While$/.test(n), o = /^(?:head|last)$/.test(n), s = Q[o ? "take" + (n == "last" ? "Right" : "") : n], c = o || /^find/.test(n);
s && (Q.prototype[n] = function() {
var n = this.__wrapped__, d = o ? [1] : arguments, f = n instanceof YP, g = d[0], b = f || kV(n), x = function(t) {
var n = s.apply(Q, KN([t], d));
return o && S ? n[0] : n;
};
b && a && typeof g == "function" && g.length != 1 && (f = b = !1);
var S = this.__chain__, C = !!this.__actions__.length, w = c && !S, E = f && !C;
if (!c && b) {
n = E ? n : new YP(this);
var O = t.apply(n, d);
return O.__actions__.push({
func: mB,
args: [x],
thisArg: i
}), new JP(O, S);
}
return w && E ? t.apply(this, d) : (O = this.thru(x), w ? o ? O.value()[0] : O.value() : O);
});
}), zN([
"pop",
"push",
"shift",
"sort",
"splice",
"unshift"
], function(t) {
var n = AM[t], i = /^(?:push|sort|unshift)$/.test(t) ? "tap" : "thru", a = /^(?:pop|shift)$/.test(t);
Q.prototype[t] = function() {
var t = arguments;
if (a && !this.__chain__) {
var o = this.value();
return n.apply(kV(o) ? o : [], t);
}
return this[i](function(i) {
return n.apply(kV(i) ? i : [], t);
});
};
}), $F(YP.prototype, function(t, n) {
var i = Q[n];
if (i) {
var a = i.name + "";
FM.call(oP, a) || (oP[a] = []), oP[a].push({
name: n,
func: i
});
}
}), oP[BL(i, M).name] = [{
name: "wrapper",
func: i
}], YP.prototype.clone = XP, YP.prototype.reverse = ZP, YP.prototype.value = QP, Q.prototype.at = hB, Q.prototype.chain = gB, Q.prototype.commit = _B, Q.prototype.next = vB, Q.prototype.plant = bB, Q.prototype.reverse = xB, Q.prototype.toJSON = Q.prototype.valueOf = Q.prototype.value = SB, Q.prototype.first = Q.prototype.head, ZM && (Q.prototype[ZM] = yB), Q;
})();
typeof define == "function" && typeof define.amd == "object" && define.amd ? (TN._ = BP, define(function() {
return BP;
})) : DN ? ((DN.exports = BP)._ = BP, EN._ = BP) : TN._ = BP;
}).call(t);
})), import_lodash$3 = /* @__PURE__ */ __toESM(require_lodash());
function healQuery(t) {
return t.replace(/\{(\s+)?\}/g, "");
}
function isPathInQuery(t, n, i) {
if (!t || !n) return !1;
t = healQuery(t);
let [a, ...o] = n.split("."), s;
try {
s = parse(t);
} catch {}
if (!s) return !1;
let c = s.definitions.find((t) => t.kind === Kind.OPERATION_DEFINITION && t.operation === a ? i ? t.name?.value === i : !0 : !1);
if (!c) return !1;
if (o.length === 0) return !0;
let d = [], f = !1;
return visit(c, { Field: {
enter(t) {
if (d.push(t.name.value), d.length === o.length && d.every((t, n) => t === o[n])) return f = !0, !1;
},
leave() {
d.pop();
}
} }), f;
}
function addPathToQuery(t, n, i) {
t = healQuery(t);
let [a, ...o] = n.split("."), s;
try {
s = parse(t);
} catch {}
s ??= {
kind: Kind.DOCUMENT,
definitions: [{
kind: Kind.OPERATION_DEFINITION,
operation: a,
name: {
kind: Kind.NAME,
value: "Untitled"
},
selectionSet: {
kind: Kind.SELECTION_SET,
selections: []
}
}]
};
let c = s.definitions.find((t) => t.kind === Kind.OPERATION_DEFINITION && t.operation === a ? i ? t.name?.value === i : !0 : !1);
if (c || (c = {
kind: Kind.OPERATION_DEFINITION,
operation: a,
name: {
kind: Kind.NAME,
value: "Untitled"
},
selectionSet: {
kind: Kind.SELECTION_SET,
selections: []
}
}, s.definitions.push(c)), o.length === 0) return print(s).split("\n").map((t) => t.includes(`${a} Untitled`) ? t + " {}" : t).join("\n");
let d = [];
return visit(c, {
OperationDefinition: { enter(t) {
let n = o[0];
t.selectionSet ??= {
kind: Kind.SELECTION_SET,
selections: []
};
let i = t.selectionSet.selections.find((t) => t.kind === Kind.FIELD && t.name.value === n);
i || (i = {
kind: Kind.FIELD,
name: {
kind: Kind.NAME,
value: n
}
}, t.selectionSet.selections.push(i));
} },
Field: {
enter(t) {
if (d.push(t.name.value), d.every((t, n) => t === o[n])) {
if (d.length === o.length) return !1;
let n = o[d.length];
t.selectionSet ??= {
kind: Kind.SELECTION_SET,
selections: []
};
let i = t.selectionSet.selections.find((t) => t.kind === Kind.FIELD && t.name.value === n);
i || (i = {
kind: Kind.FIELD,
name: {
kind: Kind.NAME,
value: n
}
}, t.selectionSet.selections.push(i));
}
},
leave() {
d.pop();
}
}
}), print(s);
}
function deletePathFromQuery(t, n, i) {
t = healQuery(t);
let [a, ...o] = n.split("."), s;
try {
s = parse(t);
} catch {}
if (!s) return t;
let c = s.definitions.find((t) => t.kind === Kind.OPERATION_DEFINITION && t.operation === a ? i ? t.name?.value === i : !0 : !1);
if (!c) return t;
let d = [], f = !1;
return visit(c, {
OperationDefinition: { enter(t) {
if (o.length === 1) {
let n = o[0];
t.selectionSet && (t.selectionSet.selections = t.selectionSet.selections.filter((t) => t.kind !== Kind.FIELD || t.name.value !== n), f = t.selectionSet.selections.length === 0);
}
} },
Field: {
enter(t) {
if (d.push(t.name.value), d.length === o.length - 1 && d.every((t, n) => t === o[n])) {
let n = o[d.length];
t.selectionSet && (t.selectionSet.selections = t.selectionSet.selections.filter((t) => t.kind !== Kind.FIELD || t.name.value !== n));
}
},
leave() {
d.pop();
}
}
}), f ? s.definitions.length > 1 ? `${print({
...s,
definitions: s.definitions.filter((t) => t !== c)
})}
${a} ${c.name?.value} {}` : `${a} ${c.name?.value} {}` : (c = s.definitions.find((t) => t.kind === Kind.OPERATION_DEFINITION && t.operation === a ? i ? t.name?.value === i : !0 : !1), print(s));
}
function getOperationName(t) {
try {
return parse(t).definitions.find((t) => t.kind === Kind.OPERATION_DEFINITION)?.name?.value;
} catch {
let n = t.match(/(query|mutation|subscription)\s+([a-zA-Z0-9_]+)/);
return n ? n[2] : null;
}
}
function getOperationType(t) {
try {
return parse(t).definitions.find((t) => t.kind === Kind.OPERATION_DEFINITION)?.operation;
} catch {
return null;
}
}
function isArgInQuery(t, n, i, a) {
if (!t || !n) return !1;
t = healQuery(t);
let [o, ...s] = n.split("."), c;
try {
c = parse(t);
} catch {}
if (!c) return !1;
let d = c.definitions.find((t) => t.kind === Kind.OPERATION_DEFINITION && t.operation === o ? a ? t.name?.value === a : !0 : !1);
if (!d) return !1;
let f = [], g = !1;
return visit(d, { Field: {
enter(t) {
f.push(t.name.value), f.length === s.length && f.every((t, n) => t === s[n]) && t.arguments && (g = t.arguments.some((t) => t.name.value === i));
},
leave() {
f.pop();
}
} }), g;
}
function extractOfType(t) {
return t instanceof GraphQLNonNull || t instanceof GraphQLNonNull || t instanceof GraphQLList ? extractOfType(t.ofType) : t instanceof GraphQLObjectType || t instanceof GraphQLScalarType ? t : null;
}
function findFieldInSchema(t, n) {
let [i, ...a] = t.split("."), o;
if (i === "query" ? o = n.getQueryType() : i === "mutation" ? o = n.getMutationType() : i === "subscription" && (o = n.getSubscriptionType()), o) {
for (let t = 0; t < a.length; ++t) {
if (!o) return;
if (o instanceof GraphQLObjectType) {
let n = o.getFields()[a[t]];
if (!n) return;
if (t === a.length - 1) return n;
o = extractOfType(n.type);
}
}
return null;
}
}
function addArgToField(t, n, i, a, o) {
t = healQuery(t);
let [s, ...c] = n.split("."), d;
try {
d = parse(t);
} catch {}
d ||= {
kind: Kind.DOCUMENT,
definitions: [{
kind: Kind.OPERATION_DEFINITION,
operation: s,
name: {
kind: Kind.NAME,
value: "NewOperation"
},
selectionSet: {
kind: Kind.SELECTION_SET,
selections: []
}
}]
};
let f = d.definitions.find((t) => t.kind === Kind.OPERATION_DEFINITION && t.operation === s ? o ? t.name?.value === o : !0 : !1);
f || (f = {
kind: Kind.OPERATION_DEFINITION,
operation: s,
name: {
kind: Kind.NAME,
value: "NewOperation"
},
selectionSet: {
kind: Kind.SELECTION_SET,
selections: []
}
}, d.definitions.push(f)), t = print(d), isPathInQuery(t, n, o) || (d = parse(addPathToQuery(t, n, o)), f = d.definitions.find((t) => t.kind === Kind.OPERATION_DEFINITION && t.operation === s ? o ? t.name?.value === o : !0 : !1));
let g = [];
return visit(f, {
Field: {
enter(t) {
if (g.push(t.name.value), g.length === c.length - 1 && g.every((t, n) => t === c[n])) {
let n = c[g.length];
if (t.selectionSet) {
let o = findFieldInSchema([
s,
...g,
n
].join("."), a);
if (o?.args) {
let a = o.args.find((t) => t.name === i);
if (a) {
f.variableDefinitions ||= [];
let o = a.name, s = 2;
for (; f.variableDefinitions.find((t) => t.variable.name.value === o);) o = a.name + s, ++s;
f.variableDefinitions.push({
kind: Kind.VARIABLE_DEFINITION,
variable: {
kind: Kind.VARIABLE,
name: {
kind: Kind.NAME,
value: o
}
},
type: {
kind: Kind.NAMED_TYPE,
name: {
kind: Kind.NAME,
value: a.type.toString()
}
}
});
let c = t.selectionSet.selections.find((t) => t.kind === Kind.FIELD && t.name.value === n);
c && (c.arguments ||= [], c.arguments.push({
kind: Kind.ARGUMENT,
name: {
kind: Kind.NAME,
value: i
},
value: {
kind: Kind.VARIABLE,
name: {
kind: Kind.NAME,
value: o
}
}
}));
}
}
}
}
},
leave() {
g.pop();
}
},
OperationDefinition: { enter(t) {
if (c.length === 1) {
let n = c[0];
if (t.selectionSet) {
let o = findFieldInSchema([
s,
...g,
n
].join("."), a);
if (o?.args) {
let a = o.args.find((t) => t.name === i);
if (a) {
t.variableDefinitions ||= [];
let o = a.name, s = 2;
for (; t.variableDefinitions.find((t) => t.variable.name.value === o);) o = a.name + s, ++s;
t.variableDefinitions.push({
kind: Kind.VARIABLE_DEFINITION,
variable: {
kind: Kind.VARIABLE,
name: {
kind: Kind.NAME,
value: o
}
},
type: {
kind: Kind.NAMED_TYPE,
name: {
kind: Kind.NAME,
value: a.type.toString()
}
}
});
let c = t.selectionSet.selections.find((t) => t.kind === Kind.FIELD && t.name.value === n);
c && (c.arguments ||= [], c.arguments.push({
kind: Kind.ARGUMENT,
name: {
kind: Kind.NAME,
value: i
},
value: {
kind: Kind.VARIABLE,
name: {
kind: Kind.NAME,
value: o
}
}
}));
}
}
}
}
} }
}), print(d);
}
function removeArgFromField(t, n, i, a) {
t = healQuery(t);
let [o, ...s] = n.split("."), c;
try {
c = parse(t);
} catch {}
if (!c) return t;
let d = c.definitions.find((t) => t.kind === Kind.OPERATION_DEFINITION && t.operation === o ? a ? t.name?.value === a : !0 : !1);
if (!d) return t;
let f = [];
return visit(d, {
Field: {
enter(t) {
if (f.push(t.name.value), f.length === s.length - 1 && f.every((t, n) => t === s[n])) {
let n = s[f.length];
if (t.selectionSet) {
let a = t.selectionSet.selections.find((t) => t.kind === Kind.FIELD && t.name.value === n);
a?.arguments && (a.arguments = a.arguments.filter((t) => t.kind !== Kind.ARGUMENT || t.name.value !== i));
}
}
},
leave() {
f.pop();
}
},
OperationDefinition: { enter(t) {
if (s.length === 1) {
let n = s[0];
if (t.selectionSet) {
let a = t.selectionSet.selections.find((t) => t.kind === Kind.FIELD && t.name.value === n);
a?.arguments && (a.arguments = a.arguments.filter((t) => t.kind !== Kind.ARGUMENT || t.name.value !== i));
}
}
} }
}), print(c);
}
function extractPaths(t) {
try {
let n = parse(t), i = [[n.definitions[0].kind === Kind.OPERATION_DEFINITION ? n.definitions[0].operation : "query"]], a = (t, n = []) => {
for (let o of t) if (o.kind === "Field") {
let t = [...n, o.name.value];
i.push(t), o.selectionSet && a(o.selectionSet.selections, t);
}
};
for (let t of n.definitions) t.kind === "OperationDefinition" && t.selectionSet && a(t.selectionSet.selections, i[0]);
return i;
} catch {
return [];
}
}
function getOpenPaths(t) {
return extractPaths(t).map((t) => t.join("."));
}
function unwrapNamedType(t) {
return t instanceof GraphQLNonNull || t instanceof GraphQLList ? unwrapNamedType(t.ofType) : t;
}
function isSearchableFieldType(t) {
return t instanceof GraphQLObjectType || t instanceof GraphQLInterfaceType;
}
function matchSearchAgainstPath(t, n, i) {
if (i.length > 1) {
let n = t.length - i.length;
if (n < 0) return !1;
for (let a = 0; a <= n; ++a) {
let n = !0;
for (let o = 0; o < i.length; ++o) if (!t[a + o].includes(i[o])) {
n = !1;
break;
}
if (n) return !0;
}
return !1;
}
for (let i of t) if (i.includes(n)) return !0;
return !1;
}
function searchSchemaPaths(t, n, i) {
let a = n.trim().toLowerCase();
if (!a) return {
matchedPaths: [],
visiblePaths: /* @__PURE__ */ new Set(),
forcedOpenPaths: /* @__PURE__ */ new Set(),
hasMore: !1,
nodesVisited: 0
};
let o = i?.maxDepth ?? 8, s = i?.maxMatches ?? 500, c = i?.maxNodes ?? 4e4, d = a.split(".").filter(Boolean), f = [], g = /* @__PURE__ */ new Set(), b = /* @__PURE__ */ new Set(), x = [], S = 0, C = [
[OperationTypeNode.QUERY, t.getQueryType() ?? null],
[OperationTypeNode.MUTATION, t.getMutationType() ?? null],
[OperationTypeNode.SUBSCRIPTION, t.getSubscriptionType() ?? null]
], w = i?.operationTypes && i.operationTypes.length > 0 ? C.filter(([t]) => i.operationTypes.includes(t)) : C;
for (let [t, n] of w) if (n) for (let i of Object.values(n.getFields())) x.push({
operation: t,
field: i,
pathSegments: [i.name],
typeTrail: [n.name],
depth: 1
});
let E = 0, O = !1;
for (; S < x.length;) {
if (E >= c || f.length >= s) {
O = !0;
break;
}
let t = x[S++];
++E;
let n = `${t.operation}.${t.pathSegments.join(".")}`, i = t.pathSegments.map((t) => t.toLowerCase());
if (matchSearchAgainstPath(i, a, d)) {
f.push(n), g.add(n);
let t = n.indexOf(".");
for (; t !== -1;) {
let i = n.slice(0, t);
g.add(i), b.add(i), t = n.indexOf(".", t + 1);
}
}
if (t.depth >= o) continue;
let C = unwrapNamedType(t.field.type);
if (!isSearchableFieldType(C) || t.typeTrail.includes(C.name)) continue;
let w = [...t.typeTrail, C.name];
for (let n of Object.values(C.getFields())) x.push({
operation: t.operation,
field: n,
pathSegments: [...t.pathSegments, n.name],
typeTrail: w,
depth: t.depth + 1
});
}
return {
matchedPaths: f,
visiblePaths: g,
forcedOpenPaths: b,
hasMore: O,
nodesVisited: E
};
}
function handleTemplate(t, n) {
return t.replace(/\{\{(.*?)\}\}/g, (t, i) => (0, import_lodash$3.get)(n, i) ?? t);
}
function getFieldByPath(t, n) {
let [i, ...a] = t.split("."), o;
if (i === "query" ? o = n.getQueryType() : i === "mutation" ? o = n.getMutationType() : i === "subscription" && (o = n.getSubscriptionType()), !o) return null;
let s;
for (let t of a) if (o instanceof GraphQLObjectType) {
if (s = o.getFields()[t], !s) return null;
o = s.type;
}
return s;
}
function getOperationType$1(t) {
try {
return getOperationAST(parse(t))?.operation ?? null;
} catch {
return null;
}
}
var getOperationWithFragments = (t, n) => {
let i = t.definitions.filter((t) => !(t.kind === Kind.OPERATION_DEFINITION && n && t.name?.value !== n));
return {
kind: Kind.DOCUMENT,
definitions: i
};
};
const useOperations = (t) => {
let [n, i] = useState(t.defaultOperations ?? []), a = useMemo(() => {
let i = t.tabsApi?.activeTab;
return i && i.type === "operation" ? n.find((t) => t.id === i.data.id) ?? null : null;
}, [t.tabsApi, n]), o = useCallback((n) => {
let i = t.tabsApi?.tabs.find((t) => t.type === "operation" && t.data.id === n) ?? null;
i && t.tabsApi?.setActiveTab(i);
}, [t.tabsApi]), s = useCallback((n) => {
i(n), t.onOperationsChange?.(n);
}, [t]), c = useCallback((a) => {
let o = {
id: v4_default(),
...a
}, s = [...n, o];
return i(s), t.onOperationsChange?.(s), t.onOperationCreate?.(o), o;
}, [n, t]);
useEffect(() => {
let n = new URLSearchParams(window.location.search).get("share");
if (n) {
let i = decompressFromEncodedURIComponent(n);
if (i) {
let { n, q: a, v: o, h: s, e: d } = JSON.parse(i), f = c({
name: n,
query: a,
variables: o,
headers: s,
extensions: d
}), g = t.tabsApi?.addTab({
type: "operation",
data: f
});
g && t.tabsApi?.setActiveTab(g);
let b = new URLSearchParams(window.location.search);
b.delete("share"), window.history.replaceState(null, "", window.location.pathname + "?" + b.toString());
}
}
}, []);
let d = useCallback((o) => {
let s = {
...a,
...o
};
if (s.query) {
let t = getOperationName(s.query);
t && (s.name = t);
}
let c = n.map((t) => t.id === a?.id ? s : t);
if (i(c), t.onOperationsChange?.(c), s.id && t.onOperationUpdate?.(s), t.collectionsApi && t.checkPermissions?.("collectionsOperations:update") && a?.id) {
let n = t.collectionsApi.collections.find((t) => t.operations.some((t) => t.id === a.id))?.id ?? "";
t.collectionsApi.updateOperationInCollection(n, a.id, s);
}
}, [
a,
n,
t.checkPermissions,
t.collectionsApi
]), f = useCallback((s) => {
let c = n.find((t) => t.id === s), d = n.filter((t) => t.id !== s);
i(d), t.onOperationsChange?.(d), c && t.onOperationDelete?.(c), a?.id === s && o(d[0]?.id ?? "");
}, [
a,
n,
t,
o
]), g = useCallback((t, n) => {
if (!a) return;
let i = {
...a,
query: addPathToQuery(a.query, t, n)
};
d(i);
}, [a, d]), b = useCallback((t, n) => {
if (!a?.query) return;
let i = {
...a,
query: deletePathFromQuery(a.query, t, n)
};
d(i);
}, [a, d]), x = useCallback((t, n, i, o) => {
if (!a?.query) return;
let s = {
...a,
query: addArgToField(a.query, t, n, i, o)
};
d(s);
}, [a, d]), S = useCallback((t, n, i) => {
if (!a?.query) return;
let o = {
...a,
query: removeArgFromField(a.query, t, n, i)
};
d(o);
}, [a, d]), [C, w] = useState({}), E = useCallback((t) => Object.keys(C).includes(t), [C]), O = useMemo(() => a ? E(a.id) : !1, [a, E]), A = useMemo(() => new UrlLoader(), []), M = useCallback(async (n, i, o = t.pluginsApi?.plugins ?? [], s = t.pluginsApi?.pluginsState ?? {}) => {
if (!a?.query) return null;
let c, d;
if (i?.env) c = i.env, d = i.headers ?? {};
else {
let n = await t.preflightApi?.runPreflight?.(o, s);
c = n?.env ?? { variables: {} }, d = n?.headers ?? {}, s = n?.pluginsState ?? {}, t.pluginsApi?.setPluginsState(s);
}
c && Object.keys(c?.variables ?? {}).length > 0 ? t.envApi?.setEnv(c) : c = t.envApi?.env ?? { variables: {} };
let f = a.headers ? JSON.parse(handleTemplate(a.headers, {
...c.variables,
plugins: s
})) : {}, g = {
...d,
...f
}, b = a.variables ? JSON.parse(handleTemplate(a.variables, {
...c.variables,
plugins: s
})) : {}, x = a.extensions ? JSON.parse(handleTemplate(a.extensions, {
...c.variables,
plugins: s
})) : {}, S = A.getExecutorAsync(n, {
subscriptionsEndpoint: n,
subscriptionsProtocol: t.settingsApi?.settings.subscriptions.protocol ?? SubscriptionProtocol.GRAPHQL_SSE,
credentials: t.settingsApi?.settings.fetch.credentials,
specifiedByUrl: !0,
directiveIsRepeatable: !0,
inputValueDeprecation: !0,
retry: t.settingsApi?.settings.fetch.retry,
timeout: t.settingsApi?.settings.fetch.timeout,
useGETForQueries: t.settingsApi?.settings.fetch.useGETForQueries,
exposeHTTPDetailsInExtensions: !0,
fetch
}), C = getOperationWithFragments(parse(a.query)), E = new AbortController();
w((t) => ({
...t,
[a.id]: () => {
E.abort();
}
}));
let O = await S({
document: C,
variables: b,
extensions: {
...x,
headers: g
},
signal: E.signal
});
if (isAsyncIterable(O)) {
try {
for await (let t of O) i?.onResponse?.(JSON.stringify(t ?? {}));
} finally {
w((t) => {
let n = { ...t };
return delete n[a.id], n;
});
}
return null;
}
return O.extensions?.response?.body && delete O.extensions.response.body, w((t) => {
let n = { ...t };
return delete n[a.id], n;
}), O;
}, [
a,
t.preflightApi,
t.envApi,
t.pluginsApi,
t.settingsApi
]), F = useCallback((t) => getOperationType$1(t.query) === "subscription", []), I = useMemo(() => a ? F(a) : !1, [a, F]);
return {
operations: n,
setOperations: s,
runActiveOperation: M,
setActiveOperation: o,
activeOperation: a,
addOperation: c,
updateActiveOperation: d,
deleteOperation: f,
addPathToActiveOperation: g,
deletePathFromActiveOperation: b,
addArgToActiveOperation: x,
deleteArgFromActiveOperation: S,
isActiveOperationLoading: O,
stopActiveOperation: C[a?.id ?? ""],
isActiveOperationSubscription: I,
isOperationSubscription: F,
isOperationLoading: E
};
}, usePlugins = (t) => {
let [n, i] = useState({
...t.plugins?.reduce((t, n) => (t[n.id] = n.defaultState ?? {}, t), {}),
...t.defaultPluginsState
}), a = useCallback((n) => {
i(n), t.onPluginsStateChange?.(n);
}, [t]);
return {
plugins: t.plugins ?? [],
pluginsState: n,
setPluginsState: a
};
};
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 = (t) => {
let [n, i] = useState(t.defaultPreflight ?? null), a = useCallback((n) => {
i(n), t.onPreflightChange?.(n);
}, [t]), o = useCallback(async (i, a) => n?.enabled ? runIsolatedLabScript(n.script, t.envApi?.env ?? { variables: {} }, void 0, i, a) : null, [n, t.envApi.env]), s = useCallback((a) => {
i({
...n ?? {
script: "",
enabled: !0
},
lastTestResult: a
}), t.onPreflightChange?.({
...n ?? {
script: "",
enabled: !0
},
lastTestResult: a
});
}, [n, t]);
return {
preflight: n,
setPreflight: a,
runPreflight: o,
setLastTestResult: s
};
};
async function runIsolatedLabScript(t, n, i, a = [], o = {}) {
let s = a.filter((t) => t.preflight?.lab?.object).map((t) => t.preflight?.lab?.object);
return new Promise((c) => {
let d = new Blob([crypto_js_default.replace("}(this, function () {", "}(self, function () {"), `
const env = {
variables: ${JSON.stringify(n?.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(o)};
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: {
${s.map((t) => t?.toString()).map((t) => t?.startsWith("object") ? `function${t.slice(6)}` : t).map((t, n) => `
...(${t})(${JSON.stringify(a[n].preflight?.lab?.props ?? {})}, state['${a[n].id}'] ?? {}, (newState) => setState('${a[n].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" }), f = [], g = {}, b = new Worker(URL.createObjectURL(d), { type: "module" });
b.onmessage = ({ data: t }) => {
t.type === "result" ? (b.terminate(), t.error ? c({
status: "error",
error: t.error,
logs: f,
env: n,
headers: t.headers,
pluginsState: t.pluginsState
}) : (Object.keys(t.headers).length > 0 && f.push({
level: "system",
message: [`Headers:\n${JSON.stringify(t.headers, null, 2)}`],
createdAt: (/* @__PURE__ */ new Date()).toISOString()
}), c({
status: "success",
logs: f,
env: t.env,
headers: t.headers,
pluginsState: t.pluginsState
}))) : t.type === "log" ? t.level === "log" ? f.push({
level: "log",
message: t.message,
createdAt: (/* @__PURE__ */ new Date()).toISOString()
}) : t.level === "warn" ? f.push({
level: "warn",
message: t.message,
createdAt: (/* @__PURE__ */ new Date()).toISOString()
}) : t.level === "error" ? f.push({
level: "error",
message: t.message,
createdAt: (/* @__PURE__ */ new Date()).toISOString()
}) : t.level === "info" && f.push({
level: "info",
message: t.message,
createdAt: (/* @__PURE__ */ new Date()).toISOString()
}) : t.type === "header" ? (g[t.name] = t.value, f.push({
level: "system",
message: [`Header ${t.name} set to ${t.value}`],
createdAt: (/* @__PURE__ */ new Date()).toISOString()
})) : t.type === "prompt" && i?.(t.placeholder, t.defaultValue).then((t) => {
b.postMessage({
type: "prompt:result",
value: t
});
});
}, b.onerror = (t) => {
c({
status: "error",
error: t.message,
logs: f,
env: n,
headers: {},
pluginsState: o
});
}, b.postMessage({
type: "init",
script: t
});
});
}
const defaultLaboratorySettings = {
fetch: {
credentials: "same-origin",
timeout: 1e4,
retry: 3,
useGETForQueries: !1
},
subscriptions: { protocol: "WS" },
introspection: {
method: "POST",
schemaDescription: !1
}
}, normalizeLaboratorySettings = (t) => ({
fetch: {
credentials: t?.fetch?.credentials ?? defaultLaboratorySettings.fetch.credentials,
timeout: t?.fetch?.timeout ?? defaultLaboratorySettings.fetch.timeout,
retry: t?.fetch?.retry ?? defaultLaboratorySettings.fetch.retry,
useGETForQueries: t?.fetch?.useGETForQueries ?? defaultLaboratorySettings.fetch.useGETForQueries
},
subscriptions: { protocol: t?.subscriptions?.protocol ?? defaultLaboratorySettings.subscriptions.protocol },
introspection: {
method: t?.introspection?.method ?? defaultLaboratorySettings.introspection.method,
schemaDescription: t?.introspection?.schemaDescription ?? defaultLaboratorySettings.introspection.schemaDescription
}
}), useSettings = (t) => {
let [n, i] = useState(normalizeLaboratorySettings(t.defaultSettings)), a = useCallback((n) => {
let a = normalizeLaboratorySettings(n);
i(a), t.onSettingsChange?.(a);
}, [t]);
return {
settings: n,
setSettings: a
};
}, useTabs = (t) => {
let [n, i] = useState(t.defaultTabs ?? []), [a, o] = useState(t.defaultTabs?.find((n) => n.id === t.defaultActiveTabId) ?? t.defaultTabs?.[0] ?? null), s = useCallback((n) => {
o(n), t.onActiveTabIdChange?.(n?.id ?? null);
}, [t]), c = useCallback((n) => {
i(n), t.onTabsChange?.(n);
}, [t]), d = useCallback((a) => {
let o = {
...a,
id: v4_default()
}, s = [...n ?? [], o];
return i(s), t.onTabsChange?.(s), o;
}, [n, t]), f = useCallback((a) => {
let o = n.filter((t) => t.id !== a);
i(o), t.onTabsChange?.(o);
}, [n, t]), g = useCallback((a, o) => {
let s = n.map((t) => t.id === a ? {
...t,
data: o
} : t);
i(s), t.onTabsChange?.(s);
}, [n, t]);
return {
activeTab: a,
setActiveTab: s,
tabs: n,
setTabs: c,
addTab: d,
deleteTab: f,
updateTab: g
};
}, useTests = (t) => {
let [n, i] = useState(t.defaultTests ?? []), a = useRef(n);
useEffect(() => {
a.current = n;
}, [n]);
let o = useCallback((a) => {
let o = {
...a,
id: v4_default(),
createdAt: (/* @__PURE__ */ new Date()).toISOString(),
tasks: []
}, s = [...n, o];
return i(s), t.onTestsChange?.(s), o;
}, [n, t]), s = useCallback((n) => {
let o = a.current.filter((t) => t.id !== n);
i(o), t.onTestsChange?.(o);
}, [t]), c = useCallback((n, o) => {
let s = {
...o,
id: v4_default(),
next: null
}, c = a.current.map((t) => t.id === n ? {
...t,
tasks: [...t.tasks, s]
} : t);
i(c), t.onTestsChange?.(c);
}, [t]), d = useCallback((n, o) => {
let s = a.current.map((t) => t.id === n ? {
...t,
tasks: t.tasks.filter((t) => t.id !== o)
} : t);
i(s), t.onTestsChange?.(s);
}, [t]);
return {
tests: n,
addTest: o,
deleteTest: s,
addTaskToTest: c,
deleteTaskFromTest: d
};
};
var falsyToString = (t) => typeof t == "boolean" ? `${t}` : t === 0 ? "0" : t;
const cx = clsx, cva = (t, n) => (i) => {
if (n?.variants == null) return cx(t, i?.class, i?.className);
let { variants: a, defaultVariants: o } = n, s = Object.keys(a).map((t) => {
let n = i?.[t], s = o?.[t];
if (n === null) return null;
let c = falsyToString(n) || falsyToString(s);
return a[t][c];
}), c = i && Object.entries(i).reduce((t, n) => {
let [i, a] = n;
return a === void 0 || (t[i] = a), t;
}, {}), d = n?.compoundVariants?.reduce((t, n) => {
let { class: i, className: a,...s } = n;
return Object.entries(s).every((t) => {
let [n, i] = t;
return Array.isArray(i) ? i.includes({
...o,
...c
}[n]) : {
...o,
...c
}[n] === i;
}) ? [
...t,
i,
a
] : t;
}, []);
return cx(t, s, d, i?.class, i?.className);
};
function setRef$1(t, n) {
if (typeof t == "function") return t(n);
t != null && (t.current = n);
}
function composeRefs$1(...t) {
return (n) => {
let i = !1, a = t.map((t) => {
let a = setRef$1(t, n);
return !i && typeof a == "function" && (i = !0), a;
});
if (i) return () => {
for (let n = 0; n < a.length; n++) {
let i = a[n];
typeof i == "function" ? i() : setRef$1(t[n], null);
}
};
};
}
function useComposedRefs$1(...t) {
return React$1.useCallback(composeRefs$1(...t), t);
}
var REACT_LAZY_TYPE = Symbol.for("react.lazy"), use = React$1.use;
function isPromiseLike(t) {
return typeof t == "object" && !!t && "then" in t;
}
function isLazyComponent(t) {
return typeof t == "object" && !!t && "$$typeof" in t && t.$$typeof === REACT_LAZY_TYPE && "_payload" in t && isPromiseLike(t._payload);
}
/* @__NO_SIDE_EFFECTS__ */
function createSlot$1(t) {
let n = /* @__PURE__ */ createSlotClone$1(t), i = React$1.forwardRef((t, i) => {
let { children: a,...o } = t;
isLazyComponent(a) && typeof use == "function" && (a = use(a._payload));
let s = React$1.Children.toArray(a), c = s.find(isSlottable$1);
if (c) {
let t = c.props.children, a = s.map((n) => n === c ? React$1.Children.count(t) > 1 ? React$1.Children.only(null) : React$1.isValidElement(t) ? t.props.children : null : n);
return /* @__PURE__ */ jsx(n, {
...o,
ref: i,
children: React$1.isValidElement(t) ? React$1.cloneElement(t, void 0, a) : null
});
}
return /* @__PURE__ */ jsx(n, {
...o,
ref: i,
children: a
});
});
return i.displayName = `${t}.Slot`, i;
}
var Slot = /* @__PURE__ */ createSlot$1("Slot");
/* @__NO_SIDE_EFFECTS__ */
function createSlotClone$1(t) {
let n = React$1.forwardRef((t, n) => {
let { children: i,...a } = t;
if (isLazyComponent(i) && typeof use == "function" && (i = use(i._payload)), React$1.isValidElement(i)) {
let t = getElementRef$2(i), o = mergeProps$1(a, i.props);
return i.type !== React$1.Fragment && (o.ref = n ? composeRefs$1(n, t) : t), React$1.cloneElement(i, o);
}
return React$1.Children.count(i) > 1 ? React$1.Children.only(null) : null;
});
return n.displayName = `${t}.SlotClone`, n;
}
var SLOTTABLE_IDENTIFIER$1 = Symbol("radix.slottable");
function isSlottable$1(t) {
return React$1.isValidElement(t) && typeof t.type == "function" && "__radixId" in t.type && t.type.__radixId === SLOTTABLE_IDENTIFIER$1;
}
function mergeProps$1(t, n) {
let i = { ...n };
for (let a in n) {
let o = t[a], s = n[a];
/^on[A-Z]/.test(a) ? o && s ? i[a] = (...t) => {
let n = s(...t);
return o(...t), n;
} : o && (i[a] = o) : a === "style" ? i[a] = {
...o,
...s
} : a === "className" && (i[a] = [o, s].filter(Boolean).join(" "));
}
return {
...t,
...i
};
}
function getElementRef$2(t) {
let n = Object.getOwnPropertyDescriptor(t.props, "ref")?.get, i = n && "isReactWarning" in n && n.isReactWarning;
return i ? t.ref : (n = Object.getOwnPropertyDescriptor(t, "ref")?.get, i = n && "isReactWarning" in n && n.isReactWarning, i ? t.props.ref : t.props.ref || t.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: t, variant: n, size: i, asChild: a = !1,...o }) {
return /* @__PURE__ */ jsx(a ? Slot : "button", {
"data-slot": "button",
className: cn(buttonVariants({
variant: n,
size: i,
className: t
})),
...o
});
}
var LaboratoryContext = createContext({});
const useLaboratory = () => useContext(LaboratoryContext), LaboratoryProvider = (t) => /* @__PURE__ */ jsx(LaboratoryContext.Provider, {
value: { ...t },
children: t.children
});
typeof window < "u" && window.document && window.document.createElement;
function composeEventHandlers(t, n, { checkForDefaultPrevented: i = !0 } = {}) {
return function(a) {
if (t?.(a), i === !1 || !a.defaultPrevented) return n?.(a);
};
}
function createContext2(t, n) {
let i = React$1.createContext(n), a = (t) => {
let { children: n,...a } = t, o = React$1.useMemo(() => a, Object.values(a));
return /* @__PURE__ */ jsx(i.Provider, {
value: o,
children: n
});
};
a.displayName = t + "Provider";
function o(a) {
let o = React$1.useContext(i);
if (o) return o;
if (n !== void 0) return n;
throw Error(`\`${a}\` must be used within \`${t}\``);
}
return [a, o];
}
function createContextScope(t, n = []) {
let i = [];
function a(n, a) {
let o = React$1.createContext(a), s = i.length;
i = [...i, a];
let c = (n) => {
let { scope: i, children: a,...c } = n, d = i?.[t]?.[s] || o, f = React$1.useMemo(() => c, Object.values(c));
return /* @__PURE__ */ jsx(d.Provider, {
value: f,
children: a
});
};
c.displayName = n + "Provider";
function d(i, c) {
let d = c?.[t]?.[s] || o, f = React$1.useContext(d);
if (f) return f;
if (a !== void 0) return a;
throw Error(`\`${i}\` must be used within \`${n}\``);
}
return [c, d];
}
let o = () => {
let n = i.map((t) => React$1.createContext(t));
return function(i) {
let a = i?.[t] || n;
return React$1.useMemo(() => ({ [`__scope${t}`]: {
...i,
[t]: a
} }), [i, a]);
};
};
return o.scopeName = t, [a, composeContextScopes(o, ...n)];
}
function composeContextScopes(...t) {
let n = t[0];
if (t.length === 1) return n;
let i = () => {
let i = t.map((t) => ({
useScope: t(),
scopeName: t.scopeName
}));
return function(t) {
let a = i.reduce((n, { useScope: i, scopeName: a }) => {
let o = i(t)[`__scope${a}`];
return {
...n,
...o
};
}, {});
return React$1.useMemo(() => ({ [`__scope${n.scopeName}`]: a }), [a]);
};
};
return i.scopeName = n.scopeName, i;
}
var useLayoutEffect2 = globalThis?.document ? React$1.useLayoutEffect : () => {}, useReactId = React$1.useId || (() => void 0), count$1 = 0;
function useId$1(t) {
let [n, i] = React$1.useState(useReactId());
return useLayoutEffect2(() => {
t || i((t) => t ?? String(count$1++));
}, [t]), t || (n ? `radix-${n}` : "");
}
var useInsertionEffect = React$1.useInsertionEffect || useLayoutEffect2;
function useControllableState({ prop: t, defaultProp: n, onChange: i = () => {}, caller: a }) {
let [o, s, c] = useUncontrolledState({
defaultProp: n,
onChange: i
}), d = t !== void 0, f = d ? t : o;
{
let n = React$1.useRef(t !== void 0);
React$1.useEffect(() => {
let t = n.current;
if (t !== d) {
let n = t ? "controlled" : "uncontrolled", i = d ? "controlled" : "uncontrolled";
console.warn(`${a} is changing from ${n} to ${i}. 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.`);
}
n.current = d;
}, [d, a]);
}
let g = React$1.useCallback((n) => {
if (d) {
let i = isFunction$2(n) ? n(t) : n;
i !== t && c.current?.(i);
} else s(n);
}, [
d,
t,
s,
c
]);
return [f, g];
}
function useUncontrolledState({ defaultProp: t, onChange: n }) {
let [i, a] = React$1.useState(t), o = React$1.useRef(i), s = React$1.useRef(n);
return useInsertionEffect(() => {
s.current = n;
}, [n]), React$1.useEffect(() => {
o.current !== i && (s.current?.(i), o.current = i);
}, [i, o]), [
i,
a,
s
];
}
function isFunction$2(t) {
return typeof t == "function";
}
/* @__NO_SIDE_EFFECTS__ */
function createSlot(t) {
let n = /* @__PURE__ */ createSlotClone(t), i = React$1.forwardRef((t, i) => {
let { children: a,...o } = t, s = React$1.Children.toArray(a), c = s.find(isSlottable);
if (c) {
let t = c.props.children, a = s.map((n) => n === c ? React$1.Children.count(t) > 1 ? React$1.Children.only(null) : React$1.isValidElement(t) ? t.props.children : null : n);
return /* @__PURE__ */ jsx(n, {
...o,
ref: i,
children: React$1.isValidElement(t) ? React$1.cloneElement(t, void 0, a) : null
});
}
return /* @__PURE__ */ jsx(n, {
...o,
ref: i,
children: a
});
});
return i.displayName = `${t}.Slot`, i;
}
/* @__NO_SIDE_EFFECTS__ */
function createSlotClone(t) {
let n = React$1.forwardRef((t, n) => {
let { children: i,...a } = t;
if (React$1.isValidElement(i)) {
let t = getElementRef$1(i), o = mergeProps(a, i.props);
return i.type !== React$1.Fragment && (o.ref = n ? composeRefs$1(n, t) : t), React$1.cloneElement(i, o);
}
return React$1.Children.count(i) > 1 ? React$1.Children.only(null) : null;
});
return n.displayName = `${t}.SlotClone`, n;
}
var SLOTTABLE_IDENTIFIER = Symbol("radix.slottable");
/* @__NO_SIDE_EFFECTS__ */
function createSlottable(t) {
let n = ({ children: t }) => /* @__PURE__ */ jsx(Fragment$1, { children: t });
return n.displayName = `${t}.Slottable`, n.__radixId = SLOTTABLE_IDENTIFIER, n;
}
function isSlottable(t) {
return React$1.isValidElement(t) && typeof t.type == "function" && "__radixId" in t.type && t.type.__radixId === SLOTTABLE_IDENTIFIER;
}
function mergeProps(t, n) {
let i = { ...n };
for (let a in n) {
let o = t[a], s = n[a];
/^on[A-Z]/.test(a) ? o && s ? i[a] = (...t) => {
let n = s(...t);
return o(...t), n;
} : o && (i[a] = o) : a === "style" ? i[a] = {
...o,
...s
} : a === "className" && (i[a] = [o, s].filter(Boolean).join(" "));
}
return {
...t,
...i
};
}
function getElementRef$1(t) {
let n = Object.getOwnPropertyDescriptor(t.props, "ref")?.get, i = n && "isReactWarning" in n && n.isReactWarning;
return i ? t.ref : (n = Object.getOwnPropertyDescriptor(t, "ref")?.get, i = n && "isReactWarning" in n && n.isReactWarning, i ? t.props.ref : t.props.ref || t.ref);
}
var Primitive = [
"a",
"button",
"div",
"form",
"h2",
"h3",
"img",
"input",
"label",
"li",
"nav",
"ol",
"p",
"select",
"span",
"svg",
"ul"
].reduce((t, n) => {
let i = /* @__PURE__ */ createSlot(`Primitive.${n}`), a = React$1.forwardRef((t, a) => {
let { asChild: o,...s } = t, c = o ? i : n;
return typeof window < "u" && (window[Symbol.for("radix-ui")] = !0), /* @__PURE__ */ jsx(c, {
...s,
ref: a
});
});
return a.displayName = `Primitive.${n}`, {
...t,
[n]: a
};
}, {});
function dispatchDiscreteCustomEvent(t, n) {
t && ReactDOM$2.flushSync(() => t.dispatchEvent(n));
}
function useCallbackRef(t) {
let n = React$1.useRef(t);
return React$1.useEffect(() => {
n.current = t;
}), React$1.useMemo(() => (...t) => n.current?.(...t), []);
}
function useEscapeKeydown(t, n = globalThis?.document) {
let i = useCallbackRef(t);
React$1.useEffect(() => {
let t = (t) => {
t.key === "Escape" && i(t);
};
return n.addEventListener("keydown", t, { capture: !0 }), () => n.removeEventListener("keydown", t, { capture: !0 });
}, [i, n]);
}
var DISMISSABLE_LAYER_NAME = "DismissableLayer", CONTEXT_UPDATE = "dismissableLayer.update", POINTER_DOWN_OUTSIDE = "dismissableLayer.pointerDownOutside", FOCUS_OUTSIDE = "dismissableLayer.focusOutside", originalBodyPointerEvents, DismissableLayerContext = React$1.createContext({
layers: /* @__PURE__ */ new Set(),
layersWithOutsidePointerEventsDisabled: /* @__PURE__ */ new Set(),
branches: /* @__PURE__ */ new Set()
}), DismissableLayer = React$1.forwardRef((t, n) => {
let { disableOutsidePointerEvents: i = !1, onEscapeKeyDown: a, onPointerDownOutside: o, onFocusOutside: s, onInteractOutside: c, onDismiss: d,...f } = t, g = React$1.useContext(DismissableLayerContext), [b, x] = React$1.useState(null), S = b?.ownerDocument ?? globalThis?.document, [, C] = React$1.useState({}), w = useComposedRefs$1(n, (t) => x(t)), E = Array.from(g.layers), [O] = [...g.layersWithOutsidePointerEventsDisabled].slice(-1), A = E.indexOf(O), M = b ? E.indexOf(b) : -1, F = g.layersWithOutsidePointerEventsDisabled.size > 0, I = M >= A, R = usePointerDownOutside((t) => {
let n = t.target, i = [...g.branches].some((t) => t.contains(n));
!I || i || (o?.(t), c?.(t), t.defaultPrevented || d?.());
}, S), qA = useFocusOutside((t) => {
let n = t.target;
[...g.branches].some((t) => t.contains(n)) || (s?.(t), c?.(t), t.defaultPrevented || d?.());
}, S);
return useEscapeKeydown((t) => {
M === g.layers.size - 1 && (a?.(t), !t.defaultPrevented && d && (t.preventDefault(), d()));
}, S), React$1.useEffect(() => {
if (b) return i && (g.layersWithOutsidePointerEventsDisabled.size === 0 && (originalBodyPointerEvents = S.body.style.pointerEvents, S.body.style.pointerEvents = "none"), g.layersWithOutsidePointerEventsDisabled.add(b)), g.layers.add(b), dispatchUpdate(), () => {
i && g.layersWithOutsidePointerEventsDisabled.size === 1 && (S.body.style.pointerEvents = originalBodyPointerEvents);
};
}, [
b,
S,
i,
g
]), React$1.useEffect(() => () => {
b && (g.layers.delete(b), g.layersWithOutsidePointerEventsDisabled.delete(b), dispatchUpdate());
}, [b, g]), React$1.useEffect(() => {
let t = () => C({});
return document.addEventListener(CONTEXT_UPDATE, t), () => document.removeEventListener(CONTEXT_UPDATE, t);
}, []), /* @__PURE__ */ jsx(Primitive.div, {
...f,
ref: w,
style: {
pointerEvents: F ? I ? "auto" : "none" : void 0,
...t.style
},
onFocusCapture: composeEventHandlers(t.onFocusCapture, qA.onFocusCapture),
onBlurCapture: composeEventHandlers(t.onBlurCapture, qA.onBlurCapture),
onPointerDownCapture: composeEventHandlers(t.onPointerDownCapture, R.onPointerDownCapture)
});
});
DismissableLayer.displayName = DISMISSABLE_LAYER_NAME;
var BRANCH_NAME = "DismissableLayerBranch", DismissableLayerBranch = React$1.forwardRef((t, n) => {
let i = React$1.useContext(DismissableLayerContext), a = React$1.useRef(null), o = useComposedRefs$1(n, a);
return React$1.useEffect(() => {
let t = a.current;
if (t) return i.branches.add(t), () => {
i.branches.delete(t);
};
}, [i.branches]), /* @__PURE__ */ jsx(Primitive.div, {
...t,
ref: o
});
});
DismissableLayerBranch.displayName = BRANCH_NAME;
function usePointerDownOutside(t, n = globalThis?.document) {
let i = useCallbackRef(t), a = React$1.useRef(!1), o = React$1.useRef(() => {});
return React$1.useEffect(() => {
let t = (t) => {
if (t.target && !a.current) {
let a = function() {
handleAndDispatchCustomEvent(POINTER_DOWN_OUTSIDE, i, s, { discrete: !0 });
}, s = { originalEvent: t };
t.pointerType === "touch" ? (n.removeEventListener("click", o.current), o.current = a, n.addEventListener("click", o.current, { once: !0 })) : a();
} else n.removeEventListener("click", o.current);
a.current = !1;
}, s = window.setTimeout(() => {
n.addEventListener("pointerdown", t);
}, 0);
return () => {
window.clearTimeout(s), n.removeEventListener("pointerdown", t), n.removeEventListener("click", o.current);
};
}, [n, i]), { onPointerDownCapture: () => a.current = !0 };
}
function useFocusOutside(t, n = globalThis?.document) {
let i = useCallbackRef(t), a = React$1.useRef(!1);
return React$1.useEffect(() => {
let t = (t) => {
t.target && !a.current && handleAndDispatchCustomEvent(FOCUS_OUTSIDE, i, { originalEvent: t }, { discrete: !1 });
};
return n.addEventListener("focusin", t), () => n.removeEventListener("focusin", t);
}, [n, i]), {
onFocusCapture: () => a.current = !0,
onBlurCapture: () => a.current = !1
};
}
function dispatchUpdate() {
let t = new CustomEvent(CONTEXT_UPDATE);
document.dispatchEvent(t);
}
function handleAndDispatchCustomEvent(t, n, i, { discrete: a }) {
let o = i.originalEvent.target, s = new CustomEvent(t, {
bubbles: !1,
cancelable: !0,
detail: i
});
n && o.addEventListener(t, n, { once: !0 }), a ? dispatchDiscreteCustomEvent(o, s) : o.dispatchEvent(s);
}
var AUTOFOCUS_ON_MOUNT = "focusScope.autoFocusOnMount", AUTOFOCUS_ON_UNMOUNT = "focusScope.autoFocusOnUnmount", EVENT_OPTIONS$1 = {
bubbles: !1,
cancelable: !0
}, FOCUS_SCOPE_NAME = "FocusScope", FocusScope = React$1.forwardRef((t, n) => {
let { loop: i = !1, trapped: a = !1, onMountAutoFocus: o, onUnmountAutoFocus: s,...c } = t, [d, f] = React$1.useState(null), g = useCallbackRef(o), b = useCallbackRef(s), x = React$1.useRef(null), S = useComposedRefs$1(n, (t) => f(t)), C = React$1.useRef({
paused: !1,
pause() {
this.paused = !0;
},
resume() {
this.paused = !1;
}
}).current;
React$1.useEffect(() => {
if (a) {
let t = function(t) {
if (C.paused || !d) return;
let n = t.target;
d.contains(n) ? x.current = n : focus(x.current, { select: !0 });
}, n = function(t) {
if (C.paused || !d) return;
let n = t.relatedTarget;
n !== null && (d.contains(n) || focus(x.current, { select: !0 }));
}, i = function(t) {
if (document.activeElement === document.body) for (let n of t) n.removedNodes.length > 0 && focus(d);
};
document.addEventListener("focusin", t), document.addEventListener("focusout", n);
let a = new MutationObserver(i);
return d && a.observe(d, {
childList: !0,
subtree: !0
}), () => {
document.removeEventListener("focusin", t), document.removeEventListener("focusout", n), a.disconnect();
};
}
}, [
a,
d,
C.paused
]), React$1.useEffect(() => {
if (d) {
focusScopesStack.add(C);
let t = document.activeElement;
if (!d.contains(t)) {
let n = new CustomEvent(AUTOFOCUS_ON_MOUNT, EVENT_OPTIONS$1);
d.addEventListener(AUTOFOCUS_ON_MOUNT, g), d.dispatchEvent(n), n.defaultPrevented || (focusFirst$2(removeLinks(getTabbableCandidates(d)), { select: !0 }), document.activeElement === t && focus(d));
}
return () => {
d.removeEventListener(AUTOFOCUS_ON_MOUNT, g), setTimeout(() => {
let n = new CustomEvent(AUTOFOCUS_ON_UNMOUNT, EVENT_OPTIONS$1);
d.addEventListener(AUTOFOCUS_ON_UNMOUNT, b), d.dispatchEvent(n), n.defaultPrevented || focus(t ?? document.body, { select: !0 }), d.removeEventListener(AUTOFOCUS_ON_UNMOUNT, b), focusScopesStack.remove(C);
}, 0);
};
}
}, [
d,
g,
b,
C
]);
let w = React$1.useCallback((t) => {
if (!i && !a || C.paused) return;
let n = t.key === "Tab" && !t.altKey && !t.ctrlKey && !t.metaKey, o = document.activeElement;
if (n && o) {
let n = t.currentTarget, [a, s] = getTabbableEdges(n);
a && s ? !t.shiftKey && o === s ? (t.preventDefault(), i && focus(a, { select: !0 })) : t.shiftKey && o === a && (t.preventDefault(), i && focus(s, { select: !0 })) : o === n && t.preventDefault();
}
}, [
i,
a,
C.paused
]);
return /* @__PURE__ */ jsx(Primitive.div, {
tabIndex: -1,
...c,
ref: S,
onKeyDown: w
});
});
FocusScope.displayName = FOCUS_SCOPE_NAME;
function focusFirst$2(t, { select: n = !1 } = {}) {
let i = document.activeElement;
for (let a of t) if (focus(a, { select: n }), document.activeElement !== i) return;
}
function getTabbableEdges(t) {
let n = getTabbableCandidates(t), i = findVisible(n, t), a = findVisible(n.reverse(), t);
return [i, a];
}
function getTabbableCandidates(t) {
let n = [], i = document.createTreeWalker(t, NodeFilter.SHOW_ELEMENT, { acceptNode: (t) => {
let n = t.tagName === "INPUT" && t.type === "hidden";
return t.disabled || t.hidden || n ? NodeFilter.FILTER_SKIP : t.tabIndex >= 0 ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP;
} });
for (; i.nextNode();) n.push(i.currentNode);
return n;
}
function findVisible(t, n) {
for (let i of t) if (!isHidden(i, { upTo: n })) return i;
}
function isHidden(t, { upTo: n }) {
if (getComputedStyle(t).visibility === "hidden") return !0;
for (; t;) {
if (n !== void 0 && t === n) return !1;
if (getComputedStyle(t).display === "none") return !0;
t = t.parentElement;
}
return !1;
}
function isSelectableInput(t) {
return t instanceof HTMLInputElement && "select" in t;
}
function focus(t, { select: n = !1 } = {}) {
if (t && t.focus) {
let i = document.activeElement;
t.focus({ preventScroll: !0 }), t !== i && isSelectableInput(t) && n && t.select();
}
}
var focusScopesStack = createFocusScopesStack();
function createFocusScopesStack() {
let t = [];
return {
add(n) {
let i = t[0];
n !== i && i?.pause(), t = arrayRemove(t, n), t.unshift(n);
},
remove(n) {
t = arrayRemove(t, n), t[0]?.resume();
}
};
}
function arrayRemove(t, n) {
let i = [...t], a = i.indexOf(n);
return a !== -1 && i.splice(a, 1), i;
}
function removeLinks(t) {
return t.filter((t) => t.tagName !== "A");
}
var PORTAL_NAME$7 = "Portal", Portal = React$1.forwardRef((t, n) => {
let { container: i,...a } = t, [o, s] = React$1.useState(!1);
useLayoutEffect2(() => s(!0), []);
let c = i || o && globalThis?.document?.body;
return c ? ReactDOM$1.createPortal(/* @__PURE__ */ jsx(Primitive.div, {
...a,
ref: n
}), c) : null;
});
Portal.displayName = PORTAL_NAME$7;
function useStateMachine$1(t, n) {
return React$1.useReducer((t, i) => n[t][i] ?? t, t);
}
var Presence = (t) => {
let { present: n, children: i } = t, a = usePresence(n), o = typeof i == "function" ? i({ present: a.isPresent }) : React$1.Children.only(i), s = useComposedRefs$1(a.ref, getElementRef(o));
return typeof i == "function" || a.isPresent ? React$1.cloneElement(o, { ref: s }) : null;
};
Presence.displayName = "Presence";
function usePresence(t) {
let [n, i] = React$1.useState(), a = React$1.useRef(null), o = React$1.useRef(t), s = React$1.useRef("none"), [c, d] = useStateMachine$1(t ? "mounted" : "unmounted", {
mounted: {
UNMOUNT: "unmounted",
ANIMATION_OUT: "unmountSuspended"
},
unmountSuspended: {
MOUNT: "mounted",
ANIMATION_END: "unmounted"
},
unmounted: { MOUNT: "mounted" }
});
return React$1.useEffect(() => {
let t = getAnimationName(a.current);
s.current = c === "mounted" ? t : "none";
}, [c]), useLayoutEffect2(() => {
let n = a.current, i = o.current;
if (i !== t) {
let a = s.current, c = getAnimationName(n);
t ? d("MOUNT") : c === "none" || n?.display === "none" ? d("UNMOUNT") : d(i && a !== c ? "ANIMATION_OUT" : "UNMOUNT"), o.current = t;
}
}, [t, d]), useLayoutEffect2(() => {
if (n) {
let t, i = n.ownerDocument.defaultView ?? window, c = (s) => {
let c = getAnimationName(a.current).includes(CSS.escape(s.animationName));
if (s.target === n && c && (d("ANIMATION_END"), !o.current)) {
let a = n.style.animationFillMode;
n.style.animationFillMode = "forwards", t = i.setTimeout(() => {
n.style.animationFillMode === "forwards" && (n.style.animationFillMode = a);
});
}
}, f = (t) => {
t.target === n && (s.current = getAnimationName(a.current));
};
return n.addEventListener("animationstart", f), n.addEventListener("animationcancel", c), n.addEventListener("animationend", c), () => {
i.clearTimeout(t), n.removeEventListener("animationstart", f), n.removeEventListener("animationcancel", c), n.removeEventListener("animationend", c);
};
} else d("ANIMATION_END");
}, [n, d]), {
isPresent: ["mounted", "unmountSuspended"].includes(c),
ref: React$1.useCallback((t) => {
a.current = t ? getComputedStyle(t) : null, i(t);
}, [])
};
}
function getAnimationName(t) {
return t?.animationName || "none";
}
function getElementRef(t) {
let n = Object.getOwnPropertyDescriptor(t.props, "ref")?.get, i = n && "isReactWarning" in n && n.isReactWarning;
return i ? t.ref : (n = Object.getOwnPropertyDescriptor(t, "ref")?.get, i = n && "isReactWarning" in n && n.isReactWarning, i ? t.props.ref : t.props.ref || t.ref);
}
var count = 0;
function useFocusGuards() {
React$1.useEffect(() => {
let t = document.querySelectorAll("[data-radix-focus-guard]");
return document.body.insertAdjacentElement("afterbegin", t[0] ?? createFocusGuard()), document.body.insertAdjacentElement("beforeend", t[1] ?? createFocusGuard()), count++, () => {
count === 1 && document.querySelectorAll("[data-radix-focus-guard]").forEach((t) => t.remove()), count--;
};
}, []);
}
function createFocusGuard() {
let t = document.createElement("span");
return t.setAttribute("data-radix-focus-guard", ""), t.tabIndex = 0, t.style.outline = "none", t.style.opacity = "0", t.style.position = "fixed", t.style.pointerEvents = "none", t;
}
var zeroRightClassName = "right-scroll-bar-position", fullWidthClassName = "width-before-scroll-bar", noScrollbarsClassName = "with-scroll-bars-hidden", removedBarSizeVariable = "--removed-body-scroll-bar-size";
function assignRef(t, n) {
return typeof t == "function" ? t(n) : t && (t.current = n), t;
}
function useCallbackRef$1(t, n) {
var i = useState(function() {
return {
value: t,
callback: n,
facade: {
get current() {
return i.value;
},
set current(t) {
var n = i.value;
n !== t && (i.value = t, i.callback(t, n));
}
}
};
})[0];
return i.callback = n, i.facade;
}
var useIsomorphicLayoutEffect$2 = typeof window < "u" ? React$1.useLayoutEffect : React$1.useEffect, currentValues = /* @__PURE__ */ new WeakMap();
function useMergeRefs(t, n) {
var i = useCallbackRef$1(n || null, function(n) {
return t.forEach(function(t) {
return assignRef(t, n);
});
});
return useIsomorphicLayoutEffect$2(function() {
var n = currentValues.get(i);
if (n) {
var a = new Set(n), o = new Set(t), s = i.current;
a.forEach(function(t) {
o.has(t) || assignRef(t, null);
}), o.forEach(function(t) {
a.has(t) || assignRef(t, s);
});
}
currentValues.set(i, t);
}, [t]), i;
}
function ItoI(t) {
return t;
}
function innerCreateMedium(t, n) {
n === void 0 && (n = ItoI);
var i = [], a = !1;
return {
read: function() {
if (a) throw Error("Sidecar: could not `read` from an `assigned` medium. `read` could be used only with `useMedium`.");
return i.length ? i[i.length - 1] : t;
},
useMedium: function(t) {
var o = n(t, a);
return i.push(o), function() {
i = i.filter(function(t) {
return t !== o;
});
};
},
assignSyncMedium: function(t) {
for (a = !0; i.length;) {
var n = i;
i = [], n.forEach(t);
}
i = {
push: function(n) {
return t(n);
},
filter: function() {
return i;
}
};
},
assignMedium: function(t) {
a = !0;
var n = [];
if (i.length) {
var o = i;
i = [], o.forEach(t), n = i;
}
var s = function() {
var i = n;
n = [], i.forEach(t);
}, c = function() {
return Promise.resolve().then(s);
};
c(), i = {
push: function(t) {
n.push(t), c();
},
filter: function(t) {
return n = n.filter(t), i;
}
};
}
};
}
function createSidecarMedium(t) {
t === void 0 && (t = {});
var n = innerCreateMedium(null);
return n.options = __assign({
async: !0,
ssr: !1
}, t), n;
}
var SideCar = function(t) {
var n = t.sideCar, i = __rest(t, ["sideCar"]);
if (!n) throw Error("Sidecar: please provide `sideCar` property to import the right car");
var a = n.read();
if (!a) throw Error("Sidecar medium not found");
return React$1.createElement(a, __assign({}, i));
};
SideCar.isSideCarExport = !0;
function exportSidecar(t, n) {
return t.useMedium(n), SideCar;
}
var effectCar = createSidecarMedium(), nothing = function() {}, RemoveScroll = React$1.forwardRef(function(t, n) {
var i = React$1.useRef(null), a = React$1.useState({
onScrollCapture: nothing,
onWheelCapture: nothing,
onTouchMoveCapture: nothing
}), o = a[0], s = a[1], c = t.forwardProps, d = t.children, f = t.className, g = t.removeScrollBar, b = t.enabled, x = t.shards, S = t.sideCar, C = t.noRelative, w = t.noIsolation, E = t.inert, O = t.allowPinchZoom, A = t.as, M = A === void 0 ? "div" : A, F = t.gapMode, I = __rest(t, [
"forwardProps",
"children",
"className",
"removeScrollBar",
"enabled",
"shards",
"sideCar",
"noRelative",
"noIsolation",
"inert",
"allowPinchZoom",
"as",
"gapMode"
]), R = S, qA = useMergeRefs([i, n]), V = __assign(__assign({}, I), o);
return React$1.createElement(React$1.Fragment, null, b && React$1.createElement(R, {
sideCar: effectCar,
removeScrollBar: g,
shards: x,
noRelative: C,
noIsolation: w,
inert: E,
setCallbacks: s,
allowPinchZoom: !!O,
lockRef: i,
gapMode: F
}), c ? React$1.cloneElement(React$1.Children.only(d), __assign(__assign({}, V), { ref: qA })) : React$1.createElement(M, __assign({}, V, {
className: f,
ref: qA
}), d));
});
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 t = document.createElement("style");
t.type = "text/css";
var n = getNonce$1();
return n && t.setAttribute("nonce", n), t;
}
function injectStyles(t, n) {
t.styleSheet ? t.styleSheet.cssText = n : t.appendChild(document.createTextNode(n));
}
function insertStyleTag(t) {
(document.head || document.getElementsByTagName("head")[0]).appendChild(t);
}
var stylesheetSingleton = function() {
var t = 0, n = null;
return {
add: function(i) {
t == 0 && (n = makeStyleTag()) && (injectStyles(n, i), insertStyleTag(n)), t++;
},
remove: function() {
t--, !t && n && (n.parentNode && n.parentNode.removeChild(n), n = null);
}
};
}, styleHookSingleton = function() {
var t = stylesheetSingleton();
return function(n, i) {
React$1.useEffect(function() {
return t.add(n), function() {
t.remove();
};
}, [n && i]);
};
}, styleSingleton = function() {
var t = styleHookSingleton();
return function(n) {
var i = n.styles, a = n.dynamic;
return t(i, a), null;
};
}, zeroGap = {
left: 0,
top: 0,
right: 0,
gap: 0
}, parse$1 = function(t) {
return parseInt(t || "", 10) || 0;
}, getOffset = function(t) {
var n = window.getComputedStyle(document.body), i = n[t === "padding" ? "paddingLeft" : "marginLeft"], a = n[t === "padding" ? "paddingTop" : "marginTop"], o = n[t === "padding" ? "paddingRight" : "marginRight"];
return [
parse$1(i),
parse$1(a),
parse$1(o)
];
}, getGapWidth = function(t) {
if (t === void 0 && (t = "margin"), typeof window > "u") return zeroGap;
var n = getOffset(t), i = document.documentElement.clientWidth, a = window.innerWidth;
return {
left: n[0],
top: n[1],
right: n[2],
gap: Math.max(0, a - i + n[2] - n[0])
};
}, Style = styleSingleton(), lockAttribute = "data-scroll-locked", getStyles = function(t, n, i, a) {
var o = t.left, s = t.top, c = t.right, d = t.gap;
return i === void 0 && (i = "margin"), `
.${noScrollbarsClassName} {
overflow: hidden ${a};
padding-right: ${d}px ${a};
}
body[${lockAttribute}] {
overflow: hidden ${a};
overscroll-behavior: contain;
${[
n && `position: relative ${a};`,
i === "margin" && `
padding-left: ${o}px;
padding-top: ${s}px;
padding-right: ${c}px;
margin-left:0;
margin-top:0;
margin-right: ${d}px ${a};
`,
i === "padding" && `padding-right: ${d}px ${a};`
].filter(Boolean).join("")}
}
.${zeroRightClassName} {
right: ${d}px ${a};
}
.${fullWidthClassName} {
margin-right: ${d}px ${a};
}
.${zeroRightClassName} .${zeroRightClassName} {
right: 0 ${a};
}
.${fullWidthClassName} .${fullWidthClassName} {
margin-right: 0 ${a};
}
body[${lockAttribute}] {
${removedBarSizeVariable}: ${d}px;
}
`;
}, getCurrentUseCounter = function() {
var t = parseInt(document.body.getAttribute("data-scroll-locked") || "0", 10);
return isFinite(t) ? t : 0;
}, useLockAttribute = function() {
React$1.useEffect(function() {
return document.body.setAttribute(lockAttribute, (getCurrentUseCounter() + 1).toString()), function() {
var t = getCurrentUseCounter() - 1;
t <= 0 ? document.body.removeAttribute(lockAttribute) : document.body.setAttribute(lockAttribute, t.toString());
};
}, []);
}, RemoveScrollBar = function(t) {
var n = t.noRelative, i = t.noImportant, a = t.gapMode, o = a === void 0 ? "margin" : a;
useLockAttribute();
var s = React$1.useMemo(function() {
return getGapWidth(o);
}, [o]);
return React$1.createElement(Style, { styles: getStyles(s, !n, o, i ? "" : "!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(t) {
return t.tagName === "TEXTAREA";
}, elementCanBeScrolled = function(t, n) {
if (!(t instanceof Element)) return !1;
var i = window.getComputedStyle(t);
return i[n] !== "hidden" && !(i.overflowY === i.overflowX && !alwaysContainsScroll(t) && i[n] === "visible");
}, elementCouldBeVScrolled = function(t) {
return elementCanBeScrolled(t, "overflowY");
}, elementCouldBeHScrolled = function(t) {
return elementCanBeScrolled(t, "overflowX");
}, locationCouldBeScrolled = function(t, n) {
var i = n.ownerDocument, a = n;
do {
if (typeof ShadowRoot < "u" && a instanceof ShadowRoot && (a = a.host), elementCouldBeScrolled(t, a)) {
var o = getScrollVariables(t, a), s = o[1], c = o[2];
if (s > c) return !0;
}
a = a.parentNode;
} while (a && a !== i.body);
return !1;
}, getVScrollVariables = function(t) {
var n = t.scrollTop, i = t.scrollHeight, a = t.clientHeight;
return [
n,
i,
a
];
}, getHScrollVariables = function(t) {
var n = t.scrollLeft, i = t.scrollWidth, a = t.clientWidth;
return [
n,
i,
a
];
}, elementCouldBeScrolled = function(t, n) {
return t === "v" ? elementCouldBeVScrolled(n) : elementCouldBeHScrolled(n);
}, getScrollVariables = function(t, n) {
return t === "v" ? getVScrollVariables(n) : getHScrollVariables(n);
}, getDirectionFactor = function(t, n) {
return t === "h" && n === "rtl" ? -1 : 1;
}, handleScroll = function(t, n, i, a, o) {
var s = getDirectionFactor(t, window.getComputedStyle(n).direction), c = s * a, d = i.target, f = n.contains(d), g = !1, b = c > 0, x = 0, S = 0;
do {
if (!d) break;
var C = getScrollVariables(t, d), w = C[0], E = C[1], O = C[2], A = E - O - s * w;
(w || A) && elementCouldBeScrolled(t, d) && (x += A, S += w);
var M = d.parentNode;
d = M && M.nodeType === Node.DOCUMENT_FRAGMENT_NODE ? M.host : M;
} while (!f && d !== document.body || f && (n.contains(d) || n === d));
return (b && (o && Math.abs(x) < 1 || !o && c > x) || !b && (o && Math.abs(S) < 1 || !o && -c > S)) && (g = !0), g;
}, getTouchXY = function(t) {
return "changedTouches" in t ? [t.changedTouches[0].clientX, t.changedTouches[0].clientY] : [0, 0];
}, getDeltaXY = function(t) {
return [t.deltaX, t.deltaY];
}, extractRef = function(t) {
return t && "current" in t ? t.current : t;
}, deltaCompare = function(t, n) {
return t[0] === n[0] && t[1] === n[1];
}, generateStyle = function(t) {
return `
.block-interactivity-${t} {pointer-events: none;}
.allow-interactivity-${t} {pointer-events: all;}
`;
}, idCounter = 0, lockStack = [];
function RemoveScrollSideCar(t) {
var n = React$1.useRef([]), i = React$1.useRef([0, 0]), a = React$1.useRef(), o = React$1.useState(idCounter++)[0], s = React$1.useState(styleSingleton)[0], c = React$1.useRef(t);
React$1.useEffect(function() {
c.current = t;
}, [t]), React$1.useEffect(function() {
if (t.inert) {
document.body.classList.add(`block-interactivity-${o}`);
var n = __spreadArray([t.lockRef.current], (t.shards || []).map(extractRef), !0).filter(Boolean);
return n.forEach(function(t) {
return t.classList.add(`allow-interactivity-${o}`);
}), function() {
document.body.classList.remove(`block-interactivity-${o}`), n.forEach(function(t) {
return t.classList.remove(`allow-interactivity-${o}`);
});
};
}
}, [
t.inert,
t.lockRef.current,
t.shards
]);
var d = React$1.useCallback(function(t, n) {
if ("touches" in t && t.touches.length === 2 || t.type === "wheel" && t.ctrlKey) return !c.current.allowPinchZoom;
var o = getTouchXY(t), s = i.current, d = "deltaX" in t ? t.deltaX : s[0] - o[0], f = "deltaY" in t ? t.deltaY : s[1] - o[1], g, b = t.target, x = Math.abs(d) > Math.abs(f) ? "h" : "v";
if ("touches" in t && x === "h" && b.type === "range") return !1;
var S = window.getSelection(), C = S && S.anchorNode;
if (C && (C === b || C.contains(b))) return !1;
var w = locationCouldBeScrolled(x, b);
if (!w) return !0;
if (w ? g = x : (g = x === "v" ? "h" : "v", w = locationCouldBeScrolled(x, b)), !w) return !1;
if (!a.current && "changedTouches" in t && (d || f) && (a.current = g), !g) return !0;
var E = a.current || g;
return handleScroll(E, n, t, E === "h" ? d : f, !0);
}, []), f = React$1.useCallback(function(t) {
var i = t;
if (!(!lockStack.length || lockStack[lockStack.length - 1] !== s)) {
var a = "deltaY" in i ? getDeltaXY(i) : getTouchXY(i), o = n.current.filter(function(t) {
return t.name === i.type && (t.target === i.target || i.target === t.shadowParent) && deltaCompare(t.delta, a);
})[0];
if (o && o.should) {
i.cancelable && i.preventDefault();
return;
}
if (!o) {
var f = (c.current.shards || []).map(extractRef).filter(Boolean).filter(function(t) {
return t.contains(i.target);
});
(f.length > 0 ? d(i, f[0]) : !c.current.noIsolation) && i.cancelable && i.preventDefault();
}
}
}, []), g = React$1.useCallback(function(t, i, a, o) {
var s = {
name: t,
delta: i,
target: a,
should: o,
shadowParent: getOutermostShadowParent(a)
};
n.current.push(s), setTimeout(function() {
n.current = n.current.filter(function(t) {
return t !== s;
});
}, 1);
}, []), b = React$1.useCallback(function(t) {
i.current = getTouchXY(t), a.current = void 0;
}, []), x = React$1.useCallback(function(n) {
g(n.type, getDeltaXY(n), n.target, d(n, t.lockRef.current));
}, []), S = React$1.useCallback(function(n) {
g(n.type, getTouchXY(n), n.target, d(n, t.lockRef.current));
}, []);
React$1.useEffect(function() {
return lockStack.push(s), t.setCallbacks({
onScrollCapture: x,
onWheelCapture: x,
onTouchMoveCapture: S
}), document.addEventListener("wheel", f, nonPassive), document.addEventListener("touchmove", f, nonPassive), document.addEventListener("touchstart", b, nonPassive), function() {
lockStack = lockStack.filter(function(t) {
return t !== s;
}), document.removeEventListener("wheel", f, nonPassive), document.removeEventListener("touchmove", f, nonPassive), document.removeEventListener("touchstart", b, nonPassive);
};
}, []);
var C = t.removeScrollBar, w = t.inert;
return React$1.createElement(React$1.Fragment, null, w ? React$1.createElement(s, { styles: generateStyle(o) }) : null, C ? React$1.createElement(RemoveScrollBar, {
noRelative: t.noRelative,
gapMode: t.gapMode
}) : null);
}
function getOutermostShadowParent(t) {
for (var n = null; t !== null;) t instanceof ShadowRoot && (n = t.host, t = t.host), t = t.parentNode;
return n;
}
var sidecar_default = exportSidecar(effectCar, RemoveScrollSideCar), ReactRemoveScroll = React$1.forwardRef(function(t, n) {
return React$1.createElement(RemoveScroll, __assign({}, t, {
ref: n,
sideCar: sidecar_default
}));
});
ReactRemoveScroll.classNames = RemoveScroll.classNames;
var Combination_default = ReactRemoveScroll, getDefaultParent = function(t) {
return typeof document > "u" ? null : (Array.isArray(t) ? t[0] : t).ownerDocument.body;
}, counterMap = /* @__PURE__ */ new WeakMap(), uncontrolledNodes = /* @__PURE__ */ new WeakMap(), markerMap = {}, lockCount = 0, unwrapHost = function(t) {
return t && (t.host || unwrapHost(t.parentNode));
}, correctTargets = function(t, n) {
return n.map(function(n) {
if (t.contains(n)) return n;
var i = unwrapHost(n);
return i && t.contains(i) ? i : (console.error("aria-hidden", n, "in not contained inside", t, ". Doing nothing"), null);
}).filter(function(t) {
return !!t;
});
}, applyAttributeToOthers = function(t, n, i, a) {
var o = correctTargets(n, Array.isArray(t) ? t : [t]);
markerMap[i] || (markerMap[i] = /* @__PURE__ */ new WeakMap());
var s = markerMap[i], c = [], d = /* @__PURE__ */ new Set(), f = new Set(o), g = function(t) {
!t || d.has(t) || (d.add(t), g(t.parentNode));
};
o.forEach(g);
var b = function(t) {
!t || f.has(t) || Array.prototype.forEach.call(t.children, function(t) {
if (d.has(t)) b(t);
else try {
var n = t.getAttribute(a), o = n !== null && n !== "false", f = (counterMap.get(t) || 0) + 1, g = (s.get(t) || 0) + 1;
counterMap.set(t, f), s.set(t, g), c.push(t), f === 1 && o && uncontrolledNodes.set(t, !0), g === 1 && t.setAttribute(i, "true"), o || t.setAttribute(a, "true");
} catch (n) {
console.error("aria-hidden: cannot operate on ", t, n);
}
});
};
return b(n), d.clear(), lockCount++, function() {
c.forEach(function(t) {
var n = counterMap.get(t) - 1, o = s.get(t) - 1;
counterMap.set(t, n), s.set(t, o), n || (uncontrolledNodes.has(t) || t.removeAttribute(a), uncontrolledNodes.delete(t)), o || t.removeAttribute(i);
}), lockCount--, lockCount || (counterMap = /* @__PURE__ */ new WeakMap(), counterMap = /* @__PURE__ */ new WeakMap(), uncontrolledNodes = /* @__PURE__ */ new WeakMap(), markerMap = {});
};
}, hideOthers = function(t, n, i) {
i === void 0 && (i = "data-aria-hidden");
var a = Array.from(Array.isArray(t) ? t : [t]), o = n || getDefaultParent(t);
return o ? (a.push.apply(a, Array.from(o.querySelectorAll("[aria-live], script"))), applyAttributeToOthers(a, o, i, "aria-hidden")) : function() {
return null;
};
}, DIALOG_NAME = "Dialog", [createDialogContext, createDialogScope] = createContextScope(DIALOG_NAME), [DialogProvider, useDialogContext] = createDialogContext(DIALOG_NAME), Dialog$1 = (t) => {
let { __scopeDialog: n, children: i, open: a, defaultOpen: o, onOpenChange: s, modal: c = !0 } = t, d = React$1.useRef(null), f = React$1.useRef(null), [g, b] = useControllableState({
prop: a,
defaultProp: o ?? !1,
onChange: s,
caller: DIALOG_NAME
});
return /* @__PURE__ */ jsx(DialogProvider, {
scope: n,
triggerRef: d,
contentRef: f,
contentId: useId$1(),
titleId: useId$1(),
descriptionId: useId$1(),
open: g,
onOpenChange: b,
onOpenToggle: React$1.useCallback(() => b((t) => !t), [b]),
modal: c,
children: i
});
};
Dialog$1.displayName = DIALOG_NAME;
var TRIGGER_NAME$8 = "DialogTrigger", DialogTrigger$1 = React$1.forwardRef((t, n) => {
let { __scopeDialog: i,...a } = t, o = useDialogContext(TRIGGER_NAME$8, i), s = useComposedRefs$1(n, o.triggerRef);
return /* @__PURE__ */ jsx(Primitive.button, {
type: "button",
"aria-haspopup": "dialog",
"aria-expanded": o.open,
"aria-controls": o.contentId,
"data-state": getState$4(o.open),
...a,
ref: s,
onClick: composeEventHandlers(t.onClick, o.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 = (t) => {
let { __scopeDialog: n, forceMount: i, children: a, container: o } = t, s = useDialogContext(PORTAL_NAME$6, n);
return /* @__PURE__ */ jsx(PortalProvider$2, {
scope: n,
forceMount: i,
children: React$1.Children.map(a, (t) => /* @__PURE__ */ jsx(Presence, {
present: i || s.open,
children: /* @__PURE__ */ jsx(Portal, {
asChild: !0,
container: o,
children: t
})
}))
});
};
DialogPortal$1.displayName = PORTAL_NAME$6;
var OVERLAY_NAME$2 = "DialogOverlay", DialogOverlay$1 = React$1.forwardRef((t, n) => {
let i = usePortalContext$2(OVERLAY_NAME$2, t.__scopeDialog), { forceMount: a = i.forceMount,...o } = t, s = useDialogContext(OVERLAY_NAME$2, t.__scopeDialog);
return s.modal ? /* @__PURE__ */ jsx(Presence, {
present: a || s.open,
children: /* @__PURE__ */ jsx(DialogOverlayImpl, {
...o,
ref: n
})
}) : null;
});
DialogOverlay$1.displayName = OVERLAY_NAME$2;
var Slot$3 = /* @__PURE__ */ createSlot("DialogOverlay.RemoveScroll"), DialogOverlayImpl = React$1.forwardRef((t, n) => {
let { __scopeDialog: i,...a } = t, o = useDialogContext(OVERLAY_NAME$2, i);
return /* @__PURE__ */ jsx(Combination_default, {
as: Slot$3,
allowPinchZoom: !0,
shards: [o.contentRef],
children: /* @__PURE__ */ jsx(Primitive.div, {
"data-state": getState$4(o.open),
...a,
ref: n,
style: {
pointerEvents: "auto",
...a.style
}
})
});
}), CONTENT_NAME$10 = "DialogContent", DialogContent$1 = React$1.forwardRef((t, n) => {
let i = usePortalContext$2(CONTENT_NAME$10, t.__scopeDialog), { forceMount: a = i.forceMount,...o } = t, s = useDialogContext(CONTENT_NAME$10, t.__scopeDialog);
return /* @__PURE__ */ jsx(Presence, {
present: a || s.open,
children: s.modal ? /* @__PURE__ */ jsx(DialogContentModal, {
...o,
ref: n
}) : /* @__PURE__ */ jsx(DialogContentNonModal, {
...o,
ref: n
})
});
});
DialogContent$1.displayName = CONTENT_NAME$10;
var DialogContentModal = React$1.forwardRef((t, n) => {
let i = useDialogContext(CONTENT_NAME$10, t.__scopeDialog), a = React$1.useRef(null), o = useComposedRefs$1(n, i.contentRef, a);
return React$1.useEffect(() => {
let t = a.current;
if (t) return hideOthers(t);
}, []), /* @__PURE__ */ jsx(DialogContentImpl, {
...t,
ref: o,
trapFocus: i.open,
disableOutsidePointerEvents: !0,
onCloseAutoFocus: composeEventHandlers(t.onCloseAutoFocus, (t) => {
t.preventDefault(), i.triggerRef.current?.focus();
}),
onPointerDownOutside: composeEventHandlers(t.onPointerDownOutside, (t) => {
let n = t.detail.originalEvent, i = n.button === 0 && n.ctrlKey === !0;
(n.button === 2 || i) && t.preventDefault();
}),
onFocusOutside: composeEventHandlers(t.onFocusOutside, (t) => t.preventDefault())
});
}), DialogContentNonModal = React$1.forwardRef((t, n) => {
let i = useDialogContext(CONTENT_NAME$10, t.__scopeDialog), a = React$1.useRef(!1), o = React$1.useRef(!1);
return /* @__PURE__ */ jsx(DialogContentImpl, {
...t,
ref: n,
trapFocus: !1,
disableOutsidePointerEvents: !1,
onCloseAutoFocus: (n) => {
t.onCloseAutoFocus?.(n), n.defaultPrevented || (a.current || i.triggerRef.current?.focus(), n.preventDefault()), a.current = !1, o.current = !1;
},
onInteractOutside: (n) => {
t.onInteractOutside?.(n), n.defaultPrevented || (a.current = !0, n.detail.originalEvent.type === "pointerdown" && (o.current = !0));
let s = n.target;
i.triggerRef.current?.contains(s) && n.preventDefault(), n.detail.originalEvent.type === "focusin" && o.current && n.preventDefault();
}
});
}), DialogContentImpl = React$1.forwardRef((t, n) => {
let { __scopeDialog: i, trapFocus: a, onOpenAutoFocus: o, onCloseAutoFocus: s,...c } = t, d = useDialogContext(CONTENT_NAME$10, i), f = React$1.useRef(null), g = useComposedRefs$1(n, f);
return useFocusGuards(), /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(FocusScope, {
asChild: !0,
loop: !0,
trapped: a,
onMountAutoFocus: o,
onUnmountAutoFocus: s,
children: /* @__PURE__ */ jsx(DismissableLayer, {
role: "dialog",
id: d.contentId,
"aria-describedby": d.descriptionId,
"aria-labelledby": d.titleId,
"data-state": getState$4(d.open),
...c,
ref: g,
onDismiss: () => d.onOpenChange(!1)
})
}), /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(TitleWarning, { titleId: d.titleId }), /* @__PURE__ */ jsx(DescriptionWarning$1, {
contentRef: f,
descriptionId: d.descriptionId
})] })] });
}), TITLE_NAME$1 = "DialogTitle", DialogTitle$1 = React$1.forwardRef((t, n) => {
let { __scopeDialog: i,...a } = t, o = useDialogContext(TITLE_NAME$1, i);
return /* @__PURE__ */ jsx(Primitive.h2, {
id: o.titleId,
...a,
ref: n
});
});
DialogTitle$1.displayName = TITLE_NAME$1;
var DESCRIPTION_NAME$1 = "DialogDescription", DialogDescription$1 = React$1.forwardRef((t, n) => {
let { __scopeDialog: i,...a } = t, o = useDialogContext(DESCRIPTION_NAME$1, i);
return /* @__PURE__ */ jsx(Primitive.p, {
id: o.descriptionId,
...a,
ref: n
});
});
DialogDescription$1.displayName = DESCRIPTION_NAME$1;
var CLOSE_NAME = "DialogClose", DialogClose$1 = React$1.forwardRef((t, n) => {
let { __scopeDialog: i,...a } = t, o = useDialogContext(CLOSE_NAME, i);
return /* @__PURE__ */ jsx(Primitive.button, {
type: "button",
...a,
ref: n,
onClick: composeEventHandlers(t.onClick, () => o.onOpenChange(!1))
});
});
DialogClose$1.displayName = CLOSE_NAME;
function getState$4(t) {
return t ? "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: t }) => {
let n = useWarningContext(TITLE_WARNING_NAME), i = `\`${n.contentName}\` requires a \`${n.titleName}\` for the component to be accessible for screen reader users.
If you want to hide the \`${n.titleName}\`, you can wrap it with our VisuallyHidden component.
For more information, see https://radix-ui.com/primitives/docs/components/${n.docsSlug}`;
return React$1.useEffect(() => {
t && (document.getElementById(t) || console.error(i));
}, [i, t]), null;
}, DESCRIPTION_WARNING_NAME = "DialogDescriptionWarning", DescriptionWarning$1 = ({ contentRef: t, descriptionId: n }) => {
let i = `Warning: Missing \`Description\` or \`aria-describedby={undefined}\` for {${useWarningContext(DESCRIPTION_WARNING_NAME).contentName}}.`;
return React$1.useEffect(() => {
let a = t.current?.getAttribute("aria-describedby");
n && a && (document.getElementById(n) || console.warn(i));
}, [
i,
t,
n
]), null;
}, Root$10 = 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({ ...t }) {
return /* @__PURE__ */ jsx(Root$10, {
"data-slot": "dialog",
...t
});
}
function DialogTrigger({ ...t }) {
return /* @__PURE__ */ jsx(Trigger$5, {
"data-slot": "dialog-trigger",
...t
});
}
function DialogPortal({ ...t }) {
let { container: n } = useLaboratory();
return /* @__PURE__ */ jsx(Portal$4, {
"data-slot": "dialog-portal",
...t,
container: n
});
}
function DialogClose({ ...t }) {
return /* @__PURE__ */ jsx(Close, {
"data-slot": "dialog-close",
...t
});
}
function DialogOverlay({ className: t,...n }) {
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 z-150 fixed inset-0 bg-black/50", t),
...n
});
}
function DialogContent({ className: t, children: n, showCloseButton: i = !0,...a }) {
let { container: o } = useLaboratory();
return /* @__PURE__ */ jsxs(DialogPortal, {
"data-slot": "dialog-portal",
container: o,
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 z-150 fixed left-[50%] top-[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", t),
...a,
children: [n, i && /* @__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: t,...n }) {
return /* @__PURE__ */ jsx("div", {
"data-slot": "dialog-header",
className: cn("flex flex-col gap-2 text-center sm:text-left", t),
...n
});
}
function DialogFooter({ className: t,...n }) {
return /* @__PURE__ */ jsx("div", {
"data-slot": "dialog-footer",
className: cn("flex flex-col-reverse gap-2 sm:flex-row sm:justify-end", t),
...n
});
}
function DialogTitle({ className: t,...n }) {
return /* @__PURE__ */ jsx(Title, {
"data-slot": "dialog-title",
className: cn("text-lg font-semibold leading-none", t),
...n
});
}
function DialogDescription({ className: t,...n }) {
return /* @__PURE__ */ jsx(Description, {
"data-slot": "dialog-description",
className: cn("text-muted-foreground text-sm", t),
...n
});
}
function createCollection(t) {
let n = t + "CollectionProvider", [i, a] = createContextScope(n), [o, s] = i(n, {
collectionRef: { current: null },
itemMap: /* @__PURE__ */ new Map()
}), c = (t) => {
let { scope: n, children: i } = t, a = React.useRef(null), s = React.useRef(/* @__PURE__ */ new Map()).current;
return /* @__PURE__ */ jsx(o, {
scope: n,
itemMap: s,
collectionRef: a,
children: i
});
};
c.displayName = n;
let d = t + "CollectionSlot", f = /* @__PURE__ */ createSlot(d), g = React.forwardRef((t, n) => {
let { scope: i, children: a } = t, o = s(d, i), c = useComposedRefs$1(n, o.collectionRef);
return /* @__PURE__ */ jsx(f, {
ref: c,
children: a
});
});
g.displayName = d;
let b = t + "CollectionItemSlot", x = "data-radix-collection-item", S = /* @__PURE__ */ createSlot(b), C = React.forwardRef((t, n) => {
let { scope: i, children: a,...o } = t, c = React.useRef(null), d = useComposedRefs$1(n, c), f = s(b, i);
return React.useEffect(() => (f.itemMap.set(c, {
ref: c,
...o
}), () => void f.itemMap.delete(c))), /* @__PURE__ */ jsx(S, {
[x]: "",
ref: d,
children: a
});
});
C.displayName = b;
function w(n) {
let i = s(t + "CollectionConsumer", n);
return React.useCallback(() => {
let t = i.collectionRef.current;
if (!t) return [];
let n = Array.from(t.querySelectorAll(`[${x}]`));
return Array.from(i.itemMap.values()).sort((t, i) => n.indexOf(t.ref.current) - n.indexOf(i.ref.current));
}, [i.collectionRef, i.itemMap]);
}
return [
{
Provider: c,
Slot: g,
ItemSlot: C
},
w,
a
];
}
var DirectionContext = React$1.createContext(void 0);
function useDirection(t) {
let n = React$1.useContext(DirectionContext);
return t || n || "ltr";
}
var sides = [
"top",
"right",
"bottom",
"left"
], min = Math.min, max = Math.max, round = Math.round, floor = Math.floor, createCoords = (t) => ({
x: t,
y: t
}), oppositeSideMap = {
left: "right",
right: "left",
bottom: "top",
top: "bottom"
}, oppositeAlignmentMap = {
start: "end",
end: "start"
};
function clamp$1(t, n, i) {
return max(t, min(n, i));
}
function evaluate(t, n) {
return typeof t == "function" ? t(n) : t;
}
function getSide(t) {
return t.split("-")[0];
}
function getAlignment(t) {
return t.split("-")[1];
}
function getOppositeAxis(t) {
return t === "x" ? "y" : "x";
}
function getAxisLength(t) {
return t === "y" ? "height" : "width";
}
var yAxisSides = /* @__PURE__ */ new Set(["top", "bottom"]);
function getSideAxis(t) {
return yAxisSides.has(getSide(t)) ? "y" : "x";
}
function getAlignmentAxis(t) {
return getOppositeAxis(getSideAxis(t));
}
function getAlignmentSides(t, n, i) {
i === void 0 && (i = !1);
let a = getAlignment(t), o = getAlignmentAxis(t), s = getAxisLength(o), c = o === "x" ? a === (i ? "end" : "start") ? "right" : "left" : a === "start" ? "bottom" : "top";
return n.reference[s] > n.floating[s] && (c = getOppositePlacement(c)), [c, getOppositePlacement(c)];
}
function getExpandedPlacements(t) {
let n = getOppositePlacement(t);
return [
getOppositeAlignmentPlacement(t),
n,
getOppositeAlignmentPlacement(n)
];
}
function getOppositeAlignmentPlacement(t) {
return t.replace(/start|end/g, (t) => oppositeAlignmentMap[t]);
}
var lrPlacement = ["left", "right"], rlPlacement = ["right", "left"], tbPlacement = ["top", "bottom"], btPlacement = ["bottom", "top"];
function getSideList(t, n, i) {
switch (t) {
case "top":
case "bottom": return i ? n ? rlPlacement : lrPlacement : n ? lrPlacement : rlPlacement;
case "left":
case "right": return n ? tbPlacement : btPlacement;
default: return [];
}
}
function getOppositeAxisPlacements(t, n, i, a) {
let o = getAlignment(t), s = getSideList(getSide(t), i === "start", a);
return o && (s = s.map((t) => t + "-" + o), n && (s = s.concat(s.map(getOppositeAlignmentPlacement)))), s;
}
function getOppositePlacement(t) {
return t.replace(/left|right|bottom|top/g, (t) => oppositeSideMap[t]);
}
function expandPaddingObject(t) {
return {
top: 0,
right: 0,
bottom: 0,
left: 0,
...t
};
}
function getPaddingObject(t) {
return typeof t == "number" ? {
top: t,
right: t,
bottom: t,
left: t
} : expandPaddingObject(t);
}
function rectToClientRect(t) {
let { x: n, y: i, width: a, height: o } = t;
return {
width: a,
height: o,
top: i,
left: n,
right: n + a,
bottom: i + o,
x: n,
y: i
};
}
function computeCoordsFromPlacement(t, n, i) {
let { reference: a, floating: o } = t, s = getSideAxis(n), c = getAlignmentAxis(n), d = getAxisLength(c), f = getSide(n), g = s === "y", b = a.x + a.width / 2 - o.width / 2, x = a.y + a.height / 2 - o.height / 2, S = a[d] / 2 - o[d] / 2, C;
switch (f) {
case "top":
C = {
x: b,
y: a.y - o.height
};
break;
case "bottom":
C = {
x: b,
y: a.y + a.height
};
break;
case "right":
C = {
x: a.x + a.width,
y: x
};
break;
case "left":
C = {
x: a.x - o.width,
y: x
};
break;
default: C = {
x: a.x,
y: a.y
};
}
switch (getAlignment(n)) {
case "start":
C[c] -= S * (i && g ? -1 : 1);
break;
case "end":
C[c] += S * (i && g ? -1 : 1);
break;
}
return C;
}
async function detectOverflow$1(t, n) {
n === void 0 && (n = {});
let { x: i, y: a, platform: o, rects: s, elements: c, strategy: d } = t, { boundary: f = "clippingAncestors", rootBoundary: g = "viewport", elementContext: b = "floating", altBoundary: x = !1, padding: S = 0 } = evaluate(n, t), C = getPaddingObject(S), w = c[x ? b === "floating" ? "reference" : "floating" : b], E = rectToClientRect(await o.getClippingRect({
element: await (o.isElement == null ? void 0 : o.isElement(w)) ?? !0 ? w : w.contextElement || await (o.getDocumentElement == null ? void 0 : o.getDocumentElement(c.floating)),
boundary: f,
rootBoundary: g,
strategy: d
})), O = b === "floating" ? {
x: i,
y: a,
width: s.floating.width,
height: s.floating.height
} : s.reference, A = await (o.getOffsetParent == null ? void 0 : o.getOffsetParent(c.floating)), M = await (o.isElement == null ? void 0 : o.isElement(A)) && await (o.getScale == null ? void 0 : o.getScale(A)) || {
x: 1,
y: 1
}, F = rectToClientRect(o.convertOffsetParentRelativeRectToViewportRelativeRect ? await o.convertOffsetParentRelativeRectToViewportRelativeRect({
elements: c,
rect: O,
offsetParent: A,
strategy: d
}) : O);
return {
top: (E.top - F.top + C.top) / M.y,
bottom: (F.bottom - E.bottom + C.bottom) / M.y,
left: (E.left - F.left + C.left) / M.x,
right: (F.right - E.right + C.right) / M.x
};
}
var computePosition$1 = async (t, n, i) => {
let { placement: a = "bottom", strategy: o = "absolute", middleware: s = [], platform: c } = i, d = s.filter(Boolean), f = await (c.isRTL == null ? void 0 : c.isRTL(n)), g = await c.getElementRects({
reference: t,
floating: n,
strategy: o
}), { x: b, y: x } = computeCoordsFromPlacement(g, a, f), S = a, C = {}, w = 0;
for (let i = 0; i < d.length; i++) {
let { name: s, fn: E } = d[i], { x: O, y: A, data: M, reset: F } = await E({
x: b,
y: x,
initialPlacement: a,
placement: S,
strategy: o,
middlewareData: C,
rects: g,
platform: {
...c,
detectOverflow: c.detectOverflow ?? detectOverflow$1
},
elements: {
reference: t,
floating: n
}
});
b = O ?? b, x = A ?? x, C = {
...C,
[s]: {
...C[s],
...M
}
}, F && w <= 50 && (w++, typeof F == "object" && (F.placement && (S = F.placement), F.rects && (g = F.rects === !0 ? await c.getElementRects({
reference: t,
floating: n,
strategy: o
}) : F.rects), {x: b, y: x} = computeCoordsFromPlacement(g, S, f)), i = -1);
}
return {
x: b,
y: x,
placement: S,
strategy: o,
middlewareData: C
};
}, arrow$2 = (t) => ({
name: "arrow",
options: t,
async fn(n) {
let { x: i, y: a, placement: o, rects: s, platform: c, elements: d, middlewareData: f } = n, { element: g, padding: b = 0 } = evaluate(t, n) || {};
if (g == null) return {};
let x = getPaddingObject(b), S = {
x: i,
y: a
}, C = getAlignmentAxis(o), w = getAxisLength(C), E = await c.getDimensions(g), O = C === "y", A = O ? "top" : "left", M = O ? "bottom" : "right", F = O ? "clientHeight" : "clientWidth", I = s.reference[w] + s.reference[C] - S[C] - s.floating[w], R = S[C] - s.reference[C], qA = await (c.getOffsetParent == null ? void 0 : c.getOffsetParent(g)), V = qA ? qA[F] : 0;
(!V || !await (c.isElement == null ? void 0 : c.isElement(qA))) && (V = d.floating[F] || s.floating[w]);
let q = I / 2 - R / 2, JA = V / 2 - E[w] / 2 - 1, YA = min(x[A], JA), XA = min(x[M], JA), ZA = YA, QA = V - E[w] - XA, $A = V / 2 - E[w] / 2 + q, ej = clamp$1(ZA, $A, QA), tj = !f.arrow && getAlignment(o) != null && $A !== ej && s.reference[w] / 2 - ($A < ZA ? YA : XA) - E[w] / 2 < 0, nj = tj ? $A < ZA ? $A - ZA : $A - QA : 0;
return {
[C]: S[C] + nj,
data: {
[C]: ej,
centerOffset: $A - ej - nj,
...tj && { alignmentOffset: nj }
},
reset: tj
};
}
}), flip$2 = function(t) {
return t === void 0 && (t = {}), {
name: "flip",
options: t,
async fn(n) {
var i;
let { placement: a, middlewareData: o, rects: s, initialPlacement: c, platform: d, elements: f } = n, { mainAxis: g = !0, crossAxis: b = !0, fallbackPlacements: x, fallbackStrategy: S = "bestFit", fallbackAxisSideDirection: C = "none", flipAlignment: w = !0,...E } = evaluate(t, n);
if ((i = o.arrow) != null && i.alignmentOffset) return {};
let O = getSide(a), A = getSideAxis(c), M = getSide(c) === c, F = await (d.isRTL == null ? void 0 : d.isRTL(f.floating)), I = x || (M || !w ? [getOppositePlacement(c)] : getExpandedPlacements(c)), R = C !== "none";
!x && R && I.push(...getOppositeAxisPlacements(c, w, C, F));
let qA = [c, ...I], V = await d.detectOverflow(n, E), q = [], JA = o.flip?.overflows || [];
if (g && q.push(V[O]), b) {
let t = getAlignmentSides(a, s, F);
q.push(V[t[0]], V[t[1]]);
}
if (JA = [...JA, {
placement: a,
overflows: q
}], !q.every((t) => t <= 0)) {
let t = (o.flip?.index || 0) + 1, n = qA[t];
if (n && (!(b === "alignment" && A !== getSideAxis(n)) || JA.every((t) => getSideAxis(t.placement) === A ? t.overflows[0] > 0 : !0))) return {
data: {
index: t,
overflows: JA
},
reset: { placement: n }
};
let i = JA.filter((t) => t.overflows[0] <= 0).sort((t, n) => t.overflows[1] - n.overflows[1])[0]?.placement;
if (!i) switch (S) {
case "bestFit": {
let t = JA.filter((t) => {
if (R) {
let n = getSideAxis(t.placement);
return n === A || n === "y";
}
return !0;
}).map((t) => [t.placement, t.overflows.filter((t) => t > 0).reduce((t, n) => t + n, 0)]).sort((t, n) => t[1] - n[1])[0]?.[0];
t && (i = t);
break;
}
case "initialPlacement":
i = c;
break;
}
if (a !== i) return { reset: { placement: i } };
}
return {};
}
};
};
function getSideOffsets(t, n) {
return {
top: t.top - n.height,
right: t.right - n.width,
bottom: t.bottom - n.height,
left: t.left - n.width
};
}
function isAnySideFullyClipped(t) {
return sides.some((n) => t[n] >= 0);
}
var hide$2 = function(t) {
return t === void 0 && (t = {}), {
name: "hide",
options: t,
async fn(n) {
let { rects: i, platform: a } = n, { strategy: o = "referenceHidden",...s } = evaluate(t, n);
switch (o) {
case "referenceHidden": {
let t = await a.detectOverflow(n, {
...s,
elementContext: "reference"
}), o = getSideOffsets(t, i.reference);
return { data: {
referenceHiddenOffsets: o,
referenceHidden: isAnySideFullyClipped(o)
} };
}
case "escaped": {
let t = await a.detectOverflow(n, {
...s,
altBoundary: !0
}), o = getSideOffsets(t, i.floating);
return { data: {
escapedOffsets: o,
escaped: isAnySideFullyClipped(o)
} };
}
default: return {};
}
}
};
}, originSides = /* @__PURE__ */ new Set(["left", "top"]);
async function convertValueToCoords(t, n) {
let { placement: i, platform: a, elements: o } = t, s = await (a.isRTL == null ? void 0 : a.isRTL(o.floating)), c = getSide(i), d = getAlignment(i), f = getSideAxis(i) === "y", g = originSides.has(c) ? -1 : 1, b = s && f ? -1 : 1, x = evaluate(n, t), { mainAxis: S, crossAxis: C, alignmentAxis: w } = typeof x == "number" ? {
mainAxis: x,
crossAxis: 0,
alignmentAxis: null
} : {
mainAxis: x.mainAxis || 0,
crossAxis: x.crossAxis || 0,
alignmentAxis: x.alignmentAxis
};
return d && typeof w == "number" && (C = d === "end" ? w * -1 : w), f ? {
x: C * b,
y: S * g
} : {
x: S * g,
y: C * b
};
}
var offset$2 = function(t) {
return t === void 0 && (t = 0), {
name: "offset",
options: t,
async fn(n) {
var i;
let { x: a, y: o, placement: s, middlewareData: c } = n, d = await convertValueToCoords(n, t);
return s === c.offset?.placement && (i = c.arrow) != null && i.alignmentOffset ? {} : {
x: a + d.x,
y: o + d.y,
data: {
...d,
placement: s
}
};
}
};
}, shift$2 = function(t) {
return t === void 0 && (t = {}), {
name: "shift",
options: t,
async fn(n) {
let { x: i, y: a, placement: o, platform: s } = n, { mainAxis: c = !0, crossAxis: d = !1, limiter: f = { fn: (t) => {
let { x: n, y: i } = t;
return {
x: n,
y: i
};
} },...g } = evaluate(t, n), b = {
x: i,
y: a
}, x = await s.detectOverflow(n, g), S = getSideAxis(getSide(o)), C = getOppositeAxis(S), w = b[C], E = b[S];
if (c) {
let t = C === "y" ? "top" : "left", n = C === "y" ? "bottom" : "right", i = w + x[t], a = w - x[n];
w = clamp$1(i, w, a);
}
if (d) {
let t = S === "y" ? "top" : "left", n = S === "y" ? "bottom" : "right", i = E + x[t], a = E - x[n];
E = clamp$1(i, E, a);
}
let O = f.fn({
...n,
[C]: w,
[S]: E
});
return {
...O,
data: {
x: O.x - i,
y: O.y - a,
enabled: {
[C]: c,
[S]: d
}
}
};
}
};
}, limitShift$2 = function(t) {
return t === void 0 && (t = {}), {
options: t,
fn(n) {
let { x: i, y: a, placement: o, rects: s, middlewareData: c } = n, { offset: d = 0, mainAxis: f = !0, crossAxis: g = !0 } = evaluate(t, n), b = {
x: i,
y: a
}, x = getSideAxis(o), S = getOppositeAxis(x), C = b[S], w = b[x], E = evaluate(d, n), O = typeof E == "number" ? {
mainAxis: E,
crossAxis: 0
} : {
mainAxis: 0,
crossAxis: 0,
...E
};
if (f) {
let t = S === "y" ? "height" : "width", n = s.reference[S] - s.floating[t] + O.mainAxis, i = s.reference[S] + s.reference[t] - O.mainAxis;
C < n ? C = n : C > i && (C = i);
}
if (g) {
let t = S === "y" ? "width" : "height", n = originSides.has(getSide(o)), i = s.reference[x] - s.floating[t] + (n && c.offset?.[x] || 0) + (n ? 0 : O.crossAxis), a = s.reference[x] + s.reference[t] + (n ? 0 : c.offset?.[x] || 0) - (n ? O.crossAxis : 0);
w < i ? w = i : w > a && (w = a);
}
return {
[S]: C,
[x]: w
};
}
};
}, size$2 = function(t) {
return t === void 0 && (t = {}), {
name: "size",
options: t,
async fn(n) {
var i, a;
let { placement: o, rects: s, platform: c, elements: d } = n, { apply: f = () => {},...g } = evaluate(t, n), b = await c.detectOverflow(n, g), x = getSide(o), S = getAlignment(o), C = getSideAxis(o) === "y", { width: w, height: E } = s.floating, O, A;
x === "top" || x === "bottom" ? (O = x, A = S === (await (c.isRTL == null ? void 0 : c.isRTL(d.floating)) ? "start" : "end") ? "left" : "right") : (A = x, O = S === "end" ? "top" : "bottom");
let M = E - b.top - b.bottom, F = w - b.left - b.right, I = min(E - b[O], M), R = min(w - b[A], F), qA = !n.middlewareData.shift, V = I, q = R;
if ((i = n.middlewareData.shift) != null && i.enabled.x && (q = F), (a = n.middlewareData.shift) != null && a.enabled.y && (V = M), qA && !S) {
let t = max(b.left, 0), n = max(b.right, 0), i = max(b.top, 0), a = max(b.bottom, 0);
C ? q = w - 2 * (t !== 0 || n !== 0 ? t + n : max(b.left, b.right)) : V = E - 2 * (i !== 0 || a !== 0 ? i + a : max(b.top, b.bottom));
}
await f({
...n,
availableWidth: q,
availableHeight: V
});
let JA = await c.getDimensions(d.floating);
return w !== JA.width || E !== JA.height ? { reset: { rects: !0 } } : {};
}
};
};
function hasWindow() {
return typeof window < "u";
}
function getNodeName(t) {
return isNode$1(t) ? (t.nodeName || "").toLowerCase() : "#document";
}
function getWindow$1(t) {
var n;
return (t == null || (n = t.ownerDocument) == null ? void 0 : n.defaultView) || window;
}
function getDocumentElement(t) {
return ((isNode$1(t) ? t.ownerDocument : t.document) || window.document)?.documentElement;
}
function isNode$1(t) {
return hasWindow() ? t instanceof Node || t instanceof getWindow$1(t).Node : !1;
}
function isElement(t) {
return hasWindow() ? t instanceof Element || t instanceof getWindow$1(t).Element : !1;
}
function isHTMLElement$2(t) {
return hasWindow() ? t instanceof HTMLElement || t instanceof getWindow$1(t).HTMLElement : !1;
}
function isShadowRoot(t) {
return !hasWindow() || typeof ShadowRoot > "u" ? !1 : t instanceof ShadowRoot || t instanceof getWindow$1(t).ShadowRoot;
}
var invalidOverflowDisplayValues = /* @__PURE__ */ new Set(["inline", "contents"]);
function isOverflowElement(t) {
let { overflow: n, overflowX: i, overflowY: a, display: o } = getComputedStyle$1(t);
return /auto|scroll|overlay|hidden|clip/.test(n + a + i) && !invalidOverflowDisplayValues.has(o);
}
var tableElements = /* @__PURE__ */ new Set([
"table",
"td",
"th"
]);
function isTableElement(t) {
return tableElements.has(getNodeName(t));
}
var topLayerSelectors = [":popover-open", ":modal"];
function isTopLayer(t) {
return topLayerSelectors.some((n) => {
try {
return t.matches(n);
} catch {
return !1;
}
});
}
var transformProperties = [
"transform",
"translate",
"scale",
"rotate",
"perspective"
], willChangeValues = [
"transform",
"translate",
"scale",
"rotate",
"perspective",
"filter"
], containValues = [
"paint",
"layout",
"strict",
"content"
];
function isContainingBlock(t) {
let n = isWebKit(), i = isElement(t) ? getComputedStyle$1(t) : t;
return transformProperties.some((t) => i[t] ? i[t] !== "none" : !1) || (i.containerType ? i.containerType !== "normal" : !1) || !n && (i.backdropFilter ? i.backdropFilter !== "none" : !1) || !n && (i.filter ? i.filter !== "none" : !1) || willChangeValues.some((t) => (i.willChange || "").includes(t)) || containValues.some((t) => (i.contain || "").includes(t));
}
function getContainingBlock(t) {
let n = getParentNode(t);
for (; isHTMLElement$2(n) && !isLastTraversableNode(n);) {
if (isContainingBlock(n)) return n;
if (isTopLayer(n)) return null;
n = getParentNode(n);
}
return null;
}
function isWebKit() {
return typeof CSS > "u" || !CSS.supports ? !1 : CSS.supports("-webkit-backdrop-filter", "none");
}
var lastTraversableNodeNames = /* @__PURE__ */ new Set([
"html",
"body",
"#document"
]);
function isLastTraversableNode(t) {
return lastTraversableNodeNames.has(getNodeName(t));
}
function getComputedStyle$1(t) {
return getWindow$1(t).getComputedStyle(t);
}
function getNodeScroll(t) {
return isElement(t) ? {
scrollLeft: t.scrollLeft,
scrollTop: t.scrollTop
} : {
scrollLeft: t.scrollX,
scrollTop: t.scrollY
};
}
function getParentNode(t) {
if (getNodeName(t) === "html") return t;
let n = t.assignedSlot || t.parentNode || isShadowRoot(t) && t.host || getDocumentElement(t);
return isShadowRoot(n) ? n.host : n;
}
function getNearestOverflowAncestor(t) {
let n = getParentNode(t);
return isLastTraversableNode(n) ? t.ownerDocument ? t.ownerDocument.body : t.body : isHTMLElement$2(n) && isOverflowElement(n) ? n : getNearestOverflowAncestor(n);
}
function getOverflowAncestors(t, n, i) {
n === void 0 && (n = []), i === void 0 && (i = !0);
let a = getNearestOverflowAncestor(t), o = a === t.ownerDocument?.body, s = getWindow$1(a);
if (o) {
let t = getFrameElement(s);
return n.concat(s, s.visualViewport || [], isOverflowElement(a) ? a : [], t && i ? getOverflowAncestors(t) : []);
}
return n.concat(a, getOverflowAncestors(a, [], i));
}
function getFrameElement(t) {
return t.parent && Object.getPrototypeOf(t.parent) ? t.frameElement : null;
}
function getCssDimensions(t) {
let n = getComputedStyle$1(t), i = parseFloat(n.width) || 0, a = parseFloat(n.height) || 0, o = isHTMLElement$2(t), s = o ? t.offsetWidth : i, c = o ? t.offsetHeight : a, d = round(i) !== s || round(a) !== c;
return d && (i = s, a = c), {
width: i,
height: a,
$: d
};
}
function unwrapElement(t) {
return isElement(t) ? t : t.contextElement;
}
function getScale(t) {
let n = unwrapElement(t);
if (!isHTMLElement$2(n)) return createCoords(1);
let i = n.getBoundingClientRect(), { width: a, height: o, $: s } = getCssDimensions(n), c = (s ? round(i.width) : i.width) / a, d = (s ? round(i.height) : i.height) / o;
return (!c || !Number.isFinite(c)) && (c = 1), (!d || !Number.isFinite(d)) && (d = 1), {
x: c,
y: d
};
}
var noOffsets = /* @__PURE__ */ createCoords(0);
function getVisualOffsets(t) {
let n = getWindow$1(t);
return !isWebKit() || !n.visualViewport ? noOffsets : {
x: n.visualViewport.offsetLeft,
y: n.visualViewport.offsetTop
};
}
function shouldAddVisualOffsets(t, n, i) {
return n === void 0 && (n = !1), !i || n && i !== getWindow$1(t) ? !1 : n;
}
function getBoundingClientRect(t, n, i, a) {
n === void 0 && (n = !1), i === void 0 && (i = !1);
let o = t.getBoundingClientRect(), s = unwrapElement(t), c = createCoords(1);
n && (a ? isElement(a) && (c = getScale(a)) : c = getScale(t));
let d = shouldAddVisualOffsets(s, i, a) ? getVisualOffsets(s) : createCoords(0), f = (o.left + d.x) / c.x, g = (o.top + d.y) / c.y, b = o.width / c.x, x = o.height / c.y;
if (s) {
let t = getWindow$1(s), n = a && isElement(a) ? getWindow$1(a) : a, i = t, o = getFrameElement(i);
for (; o && a && n !== i;) {
let t = getScale(o), n = o.getBoundingClientRect(), a = getComputedStyle$1(o), s = n.left + (o.clientLeft + parseFloat(a.paddingLeft)) * t.x, c = n.top + (o.clientTop + parseFloat(a.paddingTop)) * t.y;
f *= t.x, g *= t.y, b *= t.x, x *= t.y, f += s, g += c, i = getWindow$1(o), o = getFrameElement(i);
}
}
return rectToClientRect({
width: b,
height: x,
x: f,
y: g
});
}
function getWindowScrollBarX(t, n) {
let i = getNodeScroll(t).scrollLeft;
return n ? n.left + i : getBoundingClientRect(getDocumentElement(t)).left + i;
}
function getHTMLOffset(t, n) {
let i = t.getBoundingClientRect(), a = i.left + n.scrollLeft - getWindowScrollBarX(t, i), o = i.top + n.scrollTop;
return {
x: a,
y: o
};
}
function convertOffsetParentRelativeRectToViewportRelativeRect(t) {
let { elements: n, rect: i, offsetParent: a, strategy: o } = t, s = o === "fixed", c = getDocumentElement(a), d = n ? isTopLayer(n.floating) : !1;
if (a === c || d && s) return i;
let f = {
scrollLeft: 0,
scrollTop: 0
}, g = createCoords(1), b = createCoords(0), x = isHTMLElement$2(a);
if ((x || !x && !s) && ((getNodeName(a) !== "body" || isOverflowElement(c)) && (f = getNodeScroll(a)), isHTMLElement$2(a))) {
let t = getBoundingClientRect(a);
g = getScale(a), b.x = t.x + a.clientLeft, b.y = t.y + a.clientTop;
}
let S = c && !x && !s ? getHTMLOffset(c, f) : createCoords(0);
return {
width: i.width * g.x,
height: i.height * g.y,
x: i.x * g.x - f.scrollLeft * g.x + b.x + S.x,
y: i.y * g.y - f.scrollTop * g.y + b.y + S.y
};
}
function getClientRects(t) {
return Array.from(t.getClientRects());
}
function getDocumentRect(t) {
let n = getDocumentElement(t), i = getNodeScroll(t), a = t.ownerDocument.body, o = max(n.scrollWidth, n.clientWidth, a.scrollWidth, a.clientWidth), s = max(n.scrollHeight, n.clientHeight, a.scrollHeight, a.clientHeight), c = -i.scrollLeft + getWindowScrollBarX(t), d = -i.scrollTop;
return getComputedStyle$1(a).direction === "rtl" && (c += max(n.clientWidth, a.clientWidth) - o), {
width: o,
height: s,
x: c,
y: d
};
}
var SCROLLBAR_MAX = 25;
function getViewportRect(t, n) {
let i = getWindow$1(t), a = getDocumentElement(t), o = i.visualViewport, s = a.clientWidth, c = a.clientHeight, d = 0, f = 0;
if (o) {
s = o.width, c = o.height;
let t = isWebKit();
(!t || t && n === "fixed") && (d = o.offsetLeft, f = o.offsetTop);
}
let g = getWindowScrollBarX(a);
if (g <= 0) {
let t = a.ownerDocument, n = t.body, i = getComputedStyle(n), o = t.compatMode === "CSS1Compat" && parseFloat(i.marginLeft) + parseFloat(i.marginRight) || 0, c = Math.abs(a.clientWidth - n.clientWidth - o);
c <= SCROLLBAR_MAX && (s -= c);
} else g <= SCROLLBAR_MAX && (s += g);
return {
width: s,
height: c,
x: d,
y: f
};
}
var absoluteOrFixed = /* @__PURE__ */ new Set(["absolute", "fixed"]);
function getInnerBoundingClientRect(t, n) {
let i = getBoundingClientRect(t, !0, n === "fixed"), a = i.top + t.clientTop, o = i.left + t.clientLeft, s = isHTMLElement$2(t) ? getScale(t) : createCoords(1), c = t.clientWidth * s.x, d = t.clientHeight * s.y, f = o * s.x, g = a * s.y;
return {
width: c,
height: d,
x: f,
y: g
};
}
function getClientRectFromClippingAncestor(t, n, i) {
let a;
if (n === "viewport") a = getViewportRect(t, i);
else if (n === "document") a = getDocumentRect(getDocumentElement(t));
else if (isElement(n)) a = getInnerBoundingClientRect(n, i);
else {
let i = getVisualOffsets(t);
a = {
x: n.x - i.x,
y: n.y - i.y,
width: n.width,
height: n.height
};
}
return rectToClientRect(a);
}
function hasFixedPositionAncestor(t, n) {
let i = getParentNode(t);
return i === n || !isElement(i) || isLastTraversableNode(i) ? !1 : getComputedStyle$1(i).position === "fixed" || hasFixedPositionAncestor(i, n);
}
function getClippingElementAncestors(t, n) {
let i = n.get(t);
if (i) return i;
let a = getOverflowAncestors(t, [], !1).filter((t) => isElement(t) && getNodeName(t) !== "body"), o = null, s = getComputedStyle$1(t).position === "fixed", c = s ? getParentNode(t) : t;
for (; isElement(c) && !isLastTraversableNode(c);) {
let n = getComputedStyle$1(c), i = isContainingBlock(c);
!i && n.position === "fixed" && (o = null), (s ? !i && !o : !i && n.position === "static" && o && absoluteOrFixed.has(o.position) || isOverflowElement(c) && !i && hasFixedPositionAncestor(t, c)) ? a = a.filter((t) => t !== c) : o = n, c = getParentNode(c);
}
return n.set(t, a), a;
}
function getClippingRect(t) {
let { element: n, boundary: i, rootBoundary: a, strategy: o } = t, s = [...i === "clippingAncestors" ? isTopLayer(n) ? [] : getClippingElementAncestors(n, this._c) : [].concat(i), a], c = s[0], d = s.reduce((t, i) => {
let a = getClientRectFromClippingAncestor(n, i, o);
return t.top = max(a.top, t.top), t.right = min(a.right, t.right), t.bottom = min(a.bottom, t.bottom), t.left = max(a.left, t.left), t;
}, getClientRectFromClippingAncestor(n, c, o));
return {
width: d.right - d.left,
height: d.bottom - d.top,
x: d.left,
y: d.top
};
}
function getDimensions(t) {
let { width: n, height: i } = getCssDimensions(t);
return {
width: n,
height: i
};
}
function getRectRelativeToOffsetParent(t, n, i) {
let a = isHTMLElement$2(n), o = getDocumentElement(n), s = i === "fixed", c = getBoundingClientRect(t, !0, s, n), d = {
scrollLeft: 0,
scrollTop: 0
}, f = createCoords(0);
function g() {
f.x = getWindowScrollBarX(o);
}
if (a || !a && !s) if ((getNodeName(n) !== "body" || isOverflowElement(o)) && (d = getNodeScroll(n)), a) {
let t = getBoundingClientRect(n, !0, s, n);
f.x = t.x + n.clientLeft, f.y = t.y + n.clientTop;
} else o && g();
s && !a && o && g();
let b = o && !a && !s ? getHTMLOffset(o, d) : createCoords(0), x = c.left + d.scrollLeft - f.x - b.x, S = c.top + d.scrollTop - f.y - b.y;
return {
x,
y: S,
width: c.width,
height: c.height
};
}
function isStaticPositioned(t) {
return getComputedStyle$1(t).position === "static";
}
function getTrueOffsetParent(t, n) {
if (!isHTMLElement$2(t) || getComputedStyle$1(t).position === "fixed") return null;
if (n) return n(t);
let i = t.offsetParent;
return getDocumentElement(t) === i && (i = i.ownerDocument.body), i;
}
function getOffsetParent(t, n) {
let i = getWindow$1(t);
if (isTopLayer(t)) return i;
if (!isHTMLElement$2(t)) {
let n = getParentNode(t);
for (; n && !isLastTraversableNode(n);) {
if (isElement(n) && !isStaticPositioned(n)) return n;
n = getParentNode(n);
}
return i;
}
let a = getTrueOffsetParent(t, n);
for (; a && isTableElement(a) && isStaticPositioned(a);) a = getTrueOffsetParent(a, n);
return a && isLastTraversableNode(a) && isStaticPositioned(a) && !isContainingBlock(a) ? i : a || getContainingBlock(t) || i;
}
var getElementRects = async function(t) {
let n = this.getOffsetParent || getOffsetParent, i = this.getDimensions, a = await i(t.floating);
return {
reference: getRectRelativeToOffsetParent(t.reference, await n(t.floating), t.strategy),
floating: {
x: 0,
y: 0,
width: a.width,
height: a.height
}
};
};
function isRTL(t) {
return getComputedStyle$1(t).direction === "rtl";
}
var platform = {
convertOffsetParentRelativeRectToViewportRelativeRect,
getDocumentElement,
getClippingRect,
getOffsetParent,
getElementRects,
getClientRects,
getDimensions,
getScale,
isElement,
isRTL
};
function rectsAreEqual(t, n) {
return t.x === n.x && t.y === n.y && t.width === n.width && t.height === n.height;
}
function observeMove(t, n) {
let i = null, a, o = getDocumentElement(t);
function s() {
var t;
clearTimeout(a), (t = i) == null || t.disconnect(), i = null;
}
function c(d, f) {
d === void 0 && (d = !1), f === void 0 && (f = 1), s();
let g = t.getBoundingClientRect(), { left: b, top: x, width: S, height: C } = g;
if (d || n(), !S || !C) return;
let w = floor(x), E = floor(o.clientWidth - (b + S)), O = floor(o.clientHeight - (x + C)), A = floor(b), M = {
rootMargin: -w + "px " + -E + "px " + -O + "px " + -A + "px",
threshold: max(0, min(1, f)) || 1
}, F = !0;
function I(n) {
let i = n[0].intersectionRatio;
if (i !== f) {
if (!F) return c();
i ? c(!1, i) : a = setTimeout(() => {
c(!1, 1e-7);
}, 1e3);
}
i === 1 && !rectsAreEqual(g, t.getBoundingClientRect()) && c(), F = !1;
}
try {
i = new IntersectionObserver(I, {
...M,
root: o.ownerDocument
});
} catch {
i = new IntersectionObserver(I, M);
}
i.observe(t);
}
return c(!0), s;
}
function autoUpdate(t, n, i, a) {
a === void 0 && (a = {});
let { ancestorScroll: o = !0, ancestorResize: s = !0, elementResize: c = typeof ResizeObserver == "function", layoutShift: d = typeof IntersectionObserver == "function", animationFrame: f = !1 } = a, g = unwrapElement(t), b = o || s ? [...g ? getOverflowAncestors(g) : [], ...getOverflowAncestors(n)] : [];
b.forEach((t) => {
o && t.addEventListener("scroll", i, { passive: !0 }), s && t.addEventListener("resize", i);
});
let x = g && d ? observeMove(g, i) : null, S = -1, C = null;
c && (C = new ResizeObserver((t) => {
let [a] = t;
a && a.target === g && C && (C.unobserve(n), cancelAnimationFrame(S), S = requestAnimationFrame(() => {
var t;
(t = C) == null || t.observe(n);
})), i();
}), g && !f && C.observe(g), C.observe(n));
let w, E = f ? getBoundingClientRect(t) : null;
f && O();
function O() {
let n = getBoundingClientRect(t);
E && !rectsAreEqual(E, n) && i(), E = n, w = requestAnimationFrame(O);
}
return i(), () => {
var t;
b.forEach((t) => {
o && t.removeEventListener("scroll", i), s && t.removeEventListener("resize", i);
}), x?.(), (t = C) == null || t.disconnect(), C = null, f && cancelAnimationFrame(w);
};
}
var offset$1 = offset$2, shift$1 = shift$2, flip$1 = flip$2, size$1 = size$2, hide$1 = hide$2, arrow$1 = arrow$2, limitShift$1 = limitShift$2, computePosition = (t, n, i) => {
let a = /* @__PURE__ */ new Map(), o = {
platform,
...i
}, s = {
...o.platform,
_c: a
};
return computePosition$1(t, n, {
...o,
platform: s
});
}, index$1 = typeof document < "u" ? useLayoutEffect : function() {};
function deepEqual(t, n) {
if (t === n) return !0;
if (typeof t != typeof n) return !1;
if (typeof t == "function" && t.toString() === n.toString()) return !0;
let i, a, o;
if (t && n && typeof t == "object") {
if (Array.isArray(t)) {
if (i = t.length, i !== n.length) return !1;
for (a = i; a-- !== 0;) if (!deepEqual(t[a], n[a])) return !1;
return !0;
}
if (o = Object.keys(t), i = o.length, i !== Object.keys(n).length) return !1;
for (a = i; a-- !== 0;) if (!{}.hasOwnProperty.call(n, o[a])) return !1;
for (a = i; a-- !== 0;) {
let i = o[a];
if (!(i === "_owner" && t.$$typeof) && !deepEqual(t[i], n[i])) return !1;
}
return !0;
}
return t !== t && n !== n;
}
function getDPR(t) {
return typeof window > "u" ? 1 : (t.ownerDocument.defaultView || window).devicePixelRatio || 1;
}
function roundByDPR(t, n) {
let i = getDPR(t);
return Math.round(n * i) / i;
}
function useLatestRef(t) {
let n = React$1.useRef(t);
return index$1(() => {
n.current = t;
}), n;
}
function useFloating(t) {
t === void 0 && (t = {});
let { placement: n = "bottom", strategy: i = "absolute", middleware: a = [], platform: o, elements: { reference: s, floating: c } = {}, transform: d = !0, whileElementsMounted: f, open: g } = t, [b, x] = React$1.useState({
x: 0,
y: 0,
strategy: i,
placement: n,
middlewareData: {},
isPositioned: !1
}), [S, C] = React$1.useState(a);
deepEqual(S, a) || C(a);
let [w, E] = React$1.useState(null), [O, A] = React$1.useState(null), M = React$1.useCallback((t) => {
t !== qA.current && (qA.current = t, E(t));
}, []), F = React$1.useCallback((t) => {
t !== V.current && (V.current = t, A(t));
}, []), I = s || w, R = c || O, qA = React$1.useRef(null), V = React$1.useRef(null), q = React$1.useRef(b), JA = f != null, YA = useLatestRef(f), XA = useLatestRef(o), ZA = useLatestRef(g), QA = React$1.useCallback(() => {
if (!qA.current || !V.current) return;
let t = {
placement: n,
strategy: i,
middleware: S
};
XA.current && (t.platform = XA.current), computePosition(qA.current, V.current, t).then((t) => {
let n = {
...t,
isPositioned: ZA.current !== !1
};
$A.current && !deepEqual(q.current, n) && (q.current = n, ReactDOM$2.flushSync(() => {
x(n);
}));
});
}, [
S,
n,
i,
XA,
ZA
]);
index$1(() => {
g === !1 && q.current.isPositioned && (q.current.isPositioned = !1, x((t) => ({
...t,
isPositioned: !1
})));
}, [g]);
let $A = React$1.useRef(!1);
index$1(() => ($A.current = !0, () => {
$A.current = !1;
}), []), index$1(() => {
if (I && (qA.current = I), R && (V.current = R), I && R) {
if (YA.current) return YA.current(I, R, QA);
QA();
}
}, [
I,
R,
QA,
YA,
JA
]);
let ej = React$1.useMemo(() => ({
reference: qA,
floating: V,
setReference: M,
setFloating: F
}), [M, F]), tj = React$1.useMemo(() => ({
reference: I,
floating: R
}), [I, R]), nj = React$1.useMemo(() => {
let t = {
position: i,
left: 0,
top: 0
};
if (!tj.floating) return t;
let n = roundByDPR(tj.floating, b.x), a = roundByDPR(tj.floating, b.y);
return d ? {
...t,
transform: "translate(" + n + "px, " + a + "px)",
...getDPR(tj.floating) >= 1.5 && { willChange: "transform" }
} : {
position: i,
left: n,
top: a
};
}, [
i,
d,
tj.floating,
b.x,
b.y
]);
return React$1.useMemo(() => ({
...b,
update: QA,
refs: ej,
elements: tj,
floatingStyles: nj
}), [
b,
QA,
ej,
tj,
nj
]);
}
var arrow$1$1 = (t) => {
function n(t) {
return {}.hasOwnProperty.call(t, "current");
}
return {
name: "arrow",
options: t,
fn(i) {
let { element: a, padding: o } = typeof t == "function" ? t(i) : t;
return a && n(a) ? a.current == null ? {} : arrow$1({
element: a.current,
padding: o
}).fn(i) : a ? arrow$1({
element: a,
padding: o
}).fn(i) : {};
}
};
}, offset = (t, n) => ({
...offset$1(t),
options: [t, n]
}), shift = (t, n) => ({
...shift$1(t),
options: [t, n]
}), limitShift = (t, n) => ({
...limitShift$1(t),
options: [t, n]
}), flip = (t, n) => ({
...flip$1(t),
options: [t, n]
}), size = (t, n) => ({
...size$1(t),
options: [t, n]
}), hide = (t, n) => ({
...hide$1(t),
options: [t, n]
}), arrow = (t, n) => ({
...arrow$1$1(t),
options: [t, n]
}), NAME$4 = "Arrow", Arrow$1 = React$1.forwardRef((t, n) => {
let { children: i, width: a = 10, height: o = 5,...s } = t;
return /* @__PURE__ */ jsx(Primitive.svg, {
...s,
ref: n,
width: a,
height: o,
viewBox: "0 0 30 10",
preserveAspectRatio: "none",
children: t.asChild ? i : /* @__PURE__ */ jsx("polygon", { points: "0,0 30,0 15,10" })
});
});
Arrow$1.displayName = NAME$4;
var Root$9 = Arrow$1;
function useSize(t) {
let [n, i] = React$1.useState(void 0);
return useLayoutEffect2(() => {
if (t) {
i({
width: t.offsetWidth,
height: t.offsetHeight
});
let n = new ResizeObserver((n) => {
if (!Array.isArray(n) || !n.length) return;
let a = n[0], o, s;
if ("borderBoxSize" in a) {
let t = a.borderBoxSize, n = Array.isArray(t) ? t[0] : t;
o = n.inlineSize, s = n.blockSize;
} else o = t.offsetWidth, s = t.offsetHeight;
i({
width: o,
height: s
});
});
return n.observe(t, { box: "border-box" }), () => n.unobserve(t);
} else i(void 0);
}, [t]), n;
}
var POPPER_NAME = "Popper", [createPopperContext, createPopperScope] = createContextScope(POPPER_NAME), [PopperProvider, usePopperContext] = createPopperContext(POPPER_NAME), Popper = (t) => {
let { __scopePopper: n, children: i } = t, [a, o] = React$1.useState(null);
return /* @__PURE__ */ jsx(PopperProvider, {
scope: n,
anchor: a,
onAnchorChange: o,
children: i
});
};
Popper.displayName = POPPER_NAME;
var ANCHOR_NAME$1 = "PopperAnchor", PopperAnchor = React$1.forwardRef((t, n) => {
let { __scopePopper: i, virtualRef: a,...o } = t, s = usePopperContext(ANCHOR_NAME$1, i), c = React$1.useRef(null), d = useComposedRefs$1(n, c), f = React$1.useRef(null);
return React$1.useEffect(() => {
let t = f.current;
f.current = a?.current || c.current, t !== f.current && s.onAnchorChange(f.current);
}), a ? null : /* @__PURE__ */ jsx(Primitive.div, {
...o,
ref: d
});
});
PopperAnchor.displayName = ANCHOR_NAME$1;
var CONTENT_NAME$9 = "PopperContent", [PopperContentProvider, useContentContext] = createPopperContext(CONTENT_NAME$9), PopperContent = React$1.forwardRef((t, n) => {
let { __scopePopper: i, side: a = "bottom", sideOffset: o = 0, align: s = "center", alignOffset: c = 0, arrowPadding: d = 0, avoidCollisions: f = !0, collisionBoundary: g = [], collisionPadding: b = 0, sticky: x = "partial", hideWhenDetached: S = !1, updatePositionStrategy: C = "optimized", onPlaced: w,...E } = t, O = usePopperContext(CONTENT_NAME$9, i), [A, M] = React$1.useState(null), F = useComposedRefs$1(n, (t) => M(t)), [I, R] = React$1.useState(null), qA = useSize(I), V = qA?.width ?? 0, q = qA?.height ?? 0, JA = a + (s === "center" ? "" : "-" + s), YA = typeof b == "number" ? b : {
top: 0,
right: 0,
bottom: 0,
left: 0,
...b
}, XA = Array.isArray(g) ? g : [g], ZA = XA.length > 0, QA = {
padding: YA,
boundary: XA.filter(isNotNull),
altBoundary: ZA
}, { refs: $A, floatingStyles: ej, placement: tj, isPositioned: nj, middlewareData: rj } = useFloating({
strategy: "fixed",
placement: JA,
whileElementsMounted: (...t) => autoUpdate(...t, { animationFrame: C === "always" }),
elements: { reference: O.anchor },
middleware: [
offset({
mainAxis: o + q,
alignmentAxis: c
}),
f && shift({
mainAxis: !0,
crossAxis: !1,
limiter: x === "partial" ? limitShift() : void 0,
...QA
}),
f && flip({ ...QA }),
size({
...QA,
apply: ({ elements: t, rects: n, availableWidth: i, availableHeight: a }) => {
let { width: o, height: s } = n.reference, c = t.floating.style;
c.setProperty("--radix-popper-available-width", `${i}px`), c.setProperty("--radix-popper-available-height", `${a}px`), c.setProperty("--radix-popper-anchor-width", `${o}px`), c.setProperty("--radix-popper-anchor-height", `${s}px`);
}
}),
I && arrow({
element: I,
padding: d
}),
transformOrigin({
arrowWidth: V,
arrowHeight: q
}),
S && hide({
strategy: "referenceHidden",
...QA
})
]
}), [ij, aj] = getSideAndAlignFromPlacement(tj), oj = useCallbackRef(w);
useLayoutEffect2(() => {
nj && oj?.();
}, [nj, oj]);
let sj = rj.arrow?.x, cj = rj.arrow?.y, lj = rj.arrow?.centerOffset !== 0, [uj, dj] = React$1.useState();
return useLayoutEffect2(() => {
A && dj(window.getComputedStyle(A).zIndex);
}, [A]), /* @__PURE__ */ jsx("div", {
ref: $A.setFloating,
"data-radix-popper-content-wrapper": "",
style: {
...ej,
transform: nj ? ej.transform : "translate(0, -200%)",
minWidth: "max-content",
zIndex: uj,
"--radix-popper-transform-origin": [rj.transformOrigin?.x, rj.transformOrigin?.y].join(" "),
...rj.hide?.referenceHidden && {
visibility: "hidden",
pointerEvents: "none"
}
},
dir: t.dir,
children: /* @__PURE__ */ jsx(PopperContentProvider, {
scope: i,
placedSide: ij,
onArrowChange: R,
arrowX: sj,
arrowY: cj,
shouldHideArrow: lj,
children: /* @__PURE__ */ jsx(Primitive.div, {
"data-side": ij,
"data-align": aj,
...E,
ref: F,
style: {
...E.style,
animation: nj ? 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$1.forwardRef(function(t, n) {
let { __scopePopper: i,...a } = t, o = useContentContext(ARROW_NAME$5, i), s = OPPOSITE_SIDE[o.placedSide];
return /* @__PURE__ */ jsx("span", {
ref: o.onArrowChange,
style: {
position: "absolute",
left: o.arrowX,
top: o.arrowY,
[s]: 0,
transformOrigin: {
top: "",
right: "0 0",
bottom: "center 0",
left: "100% 0"
}[o.placedSide],
transform: {
top: "translateY(100%)",
right: "translateY(50%) rotate(90deg) translateX(-50%)",
bottom: "rotate(180deg)",
left: "translateY(50%) rotate(-90deg) translateX(50%)"
}[o.placedSide],
visibility: o.shouldHideArrow ? "hidden" : void 0
},
children: /* @__PURE__ */ jsx(Root$9, {
...a,
ref: n,
style: {
...a.style,
display: "block"
}
})
});
});
PopperArrow.displayName = ARROW_NAME$5;
function isNotNull(t) {
return t !== null;
}
var transformOrigin = (t) => ({
name: "transformOrigin",
options: t,
fn(n) {
let { placement: i, rects: a, middlewareData: o } = n, s = o.arrow?.centerOffset !== 0, c = s ? 0 : t.arrowWidth, d = s ? 0 : t.arrowHeight, [f, g] = getSideAndAlignFromPlacement(i), b = {
start: "0%",
center: "50%",
end: "100%"
}[g], x = (o.arrow?.x ?? 0) + c / 2, S = (o.arrow?.y ?? 0) + d / 2, C = "", w = "";
return f === "bottom" ? (C = s ? b : `${x}px`, w = `${-d}px`) : f === "top" ? (C = s ? b : `${x}px`, w = `${a.floating.height + d}px`) : f === "right" ? (C = `${-d}px`, w = s ? b : `${S}px`) : f === "left" && (C = `${a.floating.width + d}px`, w = s ? b : `${S}px`), { data: {
x: C,
y: w
} };
}
});
function getSideAndAlignFromPlacement(t) {
let [n, i = "center"] = t.split("-");
return [n, i];
}
var Root2$6 = Popper, Anchor = PopperAnchor, Content$1 = PopperContent, Arrow = PopperArrow, ENTRY_FOCUS = "rovingFocusGroup.onEntryFocus", EVENT_OPTIONS = {
bubbles: !1,
cancelable: !0
}, GROUP_NAME$4 = "RovingFocusGroup", [Collection$3, useCollection$3, createCollectionScope$3] = createCollection(GROUP_NAME$4), [createRovingFocusGroupContext, createRovingFocusGroupScope] = createContextScope(GROUP_NAME$4, [createCollectionScope$3]), [RovingFocusProvider, useRovingFocusContext] = createRovingFocusGroupContext(GROUP_NAME$4), RovingFocusGroup = React$1.forwardRef((t, n) => /* @__PURE__ */ jsx(Collection$3.Provider, {
scope: t.__scopeRovingFocusGroup,
children: /* @__PURE__ */ jsx(Collection$3.Slot, {
scope: t.__scopeRovingFocusGroup,
children: /* @__PURE__ */ jsx(RovingFocusGroupImpl, {
...t,
ref: n
})
})
}));
RovingFocusGroup.displayName = GROUP_NAME$4;
var RovingFocusGroupImpl = React$1.forwardRef((t, n) => {
let { __scopeRovingFocusGroup: i, orientation: a, loop: o = !1, dir: s, currentTabStopId: c, defaultCurrentTabStopId: d, onCurrentTabStopIdChange: f, onEntryFocus: g, preventScrollOnEntryFocus: b = !1,...x } = t, S = React$1.useRef(null), C = useComposedRefs$1(n, S), w = useDirection(s), [E, O] = useControllableState({
prop: c,
defaultProp: d ?? null,
onChange: f,
caller: GROUP_NAME$4
}), [A, M] = React$1.useState(!1), F = useCallbackRef(g), I = useCollection$3(i), R = React$1.useRef(!1), [qA, V] = React$1.useState(0);
return React$1.useEffect(() => {
let t = S.current;
if (t) return t.addEventListener(ENTRY_FOCUS, F), () => t.removeEventListener(ENTRY_FOCUS, F);
}, [F]), /* @__PURE__ */ jsx(RovingFocusProvider, {
scope: i,
orientation: a,
dir: w,
loop: o,
currentTabStopId: E,
onItemFocus: React$1.useCallback((t) => O(t), [O]),
onItemShiftTab: React$1.useCallback(() => M(!0), []),
onFocusableItemAdd: React$1.useCallback(() => V((t) => t + 1), []),
onFocusableItemRemove: React$1.useCallback(() => V((t) => t - 1), []),
children: /* @__PURE__ */ jsx(Primitive.div, {
tabIndex: A || qA === 0 ? -1 : 0,
"data-orientation": a,
...x,
ref: C,
style: {
outline: "none",
...t.style
},
onMouseDown: composeEventHandlers(t.onMouseDown, () => {
R.current = !0;
}),
onFocus: composeEventHandlers(t.onFocus, (t) => {
let n = !R.current;
if (t.target === t.currentTarget && n && !A) {
let n = new CustomEvent(ENTRY_FOCUS, EVENT_OPTIONS);
if (t.currentTarget.dispatchEvent(n), !n.defaultPrevented) {
let t = I().filter((t) => t.focusable), n = t.find((t) => t.active), i = t.find((t) => t.id === E), a = [
n,
i,
...t
].filter(Boolean).map((t) => t.ref.current);
focusFirst$1(a, b);
}
}
R.current = !1;
}),
onBlur: composeEventHandlers(t.onBlur, () => M(!1))
})
});
}), ITEM_NAME$6 = "RovingFocusGroupItem", RovingFocusGroupItem = React$1.forwardRef((t, n) => {
let { __scopeRovingFocusGroup: i, focusable: a = !0, active: o = !1, tabStopId: s, children: c,...d } = t, f = useId$1(), g = s || f, b = useRovingFocusContext(ITEM_NAME$6, i), x = b.currentTabStopId === g, S = useCollection$3(i), { onFocusableItemAdd: C, onFocusableItemRemove: w, currentTabStopId: E } = b;
return React$1.useEffect(() => {
if (a) return C(), () => w();
}, [
a,
C,
w
]), /* @__PURE__ */ jsx(Collection$3.ItemSlot, {
scope: i,
id: g,
focusable: a,
active: o,
children: /* @__PURE__ */ jsx(Primitive.span, {
tabIndex: x ? 0 : -1,
"data-orientation": b.orientation,
...d,
ref: n,
onMouseDown: composeEventHandlers(t.onMouseDown, (t) => {
a ? b.onItemFocus(g) : t.preventDefault();
}),
onFocus: composeEventHandlers(t.onFocus, () => b.onItemFocus(g)),
onKeyDown: composeEventHandlers(t.onKeyDown, (t) => {
if (t.key === "Tab" && t.shiftKey) {
b.onItemShiftTab();
return;
}
if (t.target !== t.currentTarget) return;
let n = getFocusIntent(t, b.orientation, b.dir);
if (n !== void 0) {
if (t.metaKey || t.ctrlKey || t.altKey || t.shiftKey) return;
t.preventDefault();
let i = S().filter((t) => t.focusable).map((t) => t.ref.current);
if (n === "last") i.reverse();
else if (n === "prev" || n === "next") {
n === "prev" && i.reverse();
let a = i.indexOf(t.currentTarget);
i = b.loop ? wrapArray$2(i, a + 1) : i.slice(a + 1);
}
setTimeout(() => focusFirst$1(i));
}
}),
children: typeof c == "function" ? c({
isCurrentTabStop: x,
hasTabStop: E != null
}) : c
})
});
});
RovingFocusGroupItem.displayName = ITEM_NAME$6;
var MAP_KEY_TO_FOCUS_INTENT = {
ArrowLeft: "prev",
ArrowUp: "prev",
ArrowRight: "next",
ArrowDown: "next",
PageUp: "first",
Home: "first",
PageDown: "last",
End: "last"
};
function getDirectionAwareKey(t, n) {
return n === "rtl" ? t === "ArrowLeft" ? "ArrowRight" : t === "ArrowRight" ? "ArrowLeft" : t : t;
}
function getFocusIntent(t, n, i) {
let a = getDirectionAwareKey(t.key, i);
if (!(n === "vertical" && ["ArrowLeft", "ArrowRight"].includes(a)) && !(n === "horizontal" && ["ArrowUp", "ArrowDown"].includes(a))) return MAP_KEY_TO_FOCUS_INTENT[a];
}
function focusFirst$1(t, n = !1) {
let i = document.activeElement;
for (let a of t) if (a === i || (a.focus({ preventScroll: n }), document.activeElement !== i)) return;
}
function wrapArray$2(t, n) {
return t.map((i, a) => t[(n + a) % t.length]);
}
var Root$8 = 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$2, useCollection$2, createCollectionScope$2] = createCollection(MENU_NAME), [createMenuContext, createMenuScope] = createContextScope(MENU_NAME, [
createCollectionScope$2,
createPopperScope,
createRovingFocusGroupScope
]), usePopperScope$2 = createPopperScope(), useRovingFocusGroupScope$2 = createRovingFocusGroupScope(), [MenuProvider, useMenuContext] = createMenuContext(MENU_NAME), [MenuRootProvider, useMenuRootContext] = createMenuContext(MENU_NAME), Menu = (t) => {
let { __scopeMenu: n, open: i = !1, children: a, dir: o, onOpenChange: s, modal: c = !0 } = t, d = usePopperScope$2(n), [f, g] = React$1.useState(null), b = React$1.useRef(!1), x = useCallbackRef(s), S = useDirection(o);
return React$1.useEffect(() => {
let t = () => {
b.current = !0, document.addEventListener("pointerdown", n, {
capture: !0,
once: !0
}), document.addEventListener("pointermove", n, {
capture: !0,
once: !0
});
}, n = () => b.current = !1;
return document.addEventListener("keydown", t, { capture: !0 }), () => {
document.removeEventListener("keydown", t, { capture: !0 }), document.removeEventListener("pointerdown", n, { capture: !0 }), document.removeEventListener("pointermove", n, { capture: !0 });
};
}, []), /* @__PURE__ */ jsx(Root2$6, {
...d,
children: /* @__PURE__ */ jsx(MenuProvider, {
scope: n,
open: i,
onOpenChange: x,
content: f,
onContentChange: g,
children: /* @__PURE__ */ jsx(MenuRootProvider, {
scope: n,
onClose: React$1.useCallback(() => x(!1), [x]),
isUsingKeyboardRef: b,
dir: S,
modal: c,
children: a
})
})
});
};
Menu.displayName = MENU_NAME;
var ANCHOR_NAME = "MenuAnchor", MenuAnchor = React$1.forwardRef((t, n) => {
let { __scopeMenu: i,...a } = t, o = usePopperScope$2(i);
return /* @__PURE__ */ jsx(Anchor, {
...o,
...a,
ref: n
});
});
MenuAnchor.displayName = ANCHOR_NAME;
var PORTAL_NAME$5 = "MenuPortal", [PortalProvider$1, usePortalContext$1] = createMenuContext(PORTAL_NAME$5, { forceMount: void 0 }), MenuPortal = (t) => {
let { __scopeMenu: n, forceMount: i, children: a, container: o } = t, s = useMenuContext(PORTAL_NAME$5, n);
return /* @__PURE__ */ jsx(PortalProvider$1, {
scope: n,
forceMount: i,
children: /* @__PURE__ */ jsx(Presence, {
present: i || s.open,
children: /* @__PURE__ */ jsx(Portal, {
asChild: !0,
container: o,
children: a
})
})
});
};
MenuPortal.displayName = PORTAL_NAME$5;
var CONTENT_NAME$8 = "MenuContent", [MenuContentProvider, useMenuContentContext] = createMenuContext(CONTENT_NAME$8), MenuContent = React$1.forwardRef((t, n) => {
let i = usePortalContext$1(CONTENT_NAME$8, t.__scopeMenu), { forceMount: a = i.forceMount,...o } = t, s = useMenuContext(CONTENT_NAME$8, t.__scopeMenu), c = useMenuRootContext(CONTENT_NAME$8, t.__scopeMenu);
return /* @__PURE__ */ jsx(Collection$2.Provider, {
scope: t.__scopeMenu,
children: /* @__PURE__ */ jsx(Presence, {
present: a || s.open,
children: /* @__PURE__ */ jsx(Collection$2.Slot, {
scope: t.__scopeMenu,
children: c.modal ? /* @__PURE__ */ jsx(MenuRootContentModal, {
...o,
ref: n
}) : /* @__PURE__ */ jsx(MenuRootContentNonModal, {
...o,
ref: n
})
})
})
});
}), MenuRootContentModal = React$1.forwardRef((t, n) => {
let i = useMenuContext(CONTENT_NAME$8, t.__scopeMenu), a = React$1.useRef(null), o = useComposedRefs$1(n, a);
return React$1.useEffect(() => {
let t = a.current;
if (t) return hideOthers(t);
}, []), /* @__PURE__ */ jsx(MenuContentImpl, {
...t,
ref: o,
trapFocus: i.open,
disableOutsidePointerEvents: i.open,
disableOutsideScroll: !0,
onFocusOutside: composeEventHandlers(t.onFocusOutside, (t) => t.preventDefault(), { checkForDefaultPrevented: !1 }),
onDismiss: () => i.onOpenChange(!1)
});
}), MenuRootContentNonModal = React$1.forwardRef((t, n) => {
let i = useMenuContext(CONTENT_NAME$8, t.__scopeMenu);
return /* @__PURE__ */ jsx(MenuContentImpl, {
...t,
ref: n,
trapFocus: !1,
disableOutsidePointerEvents: !1,
disableOutsideScroll: !1,
onDismiss: () => i.onOpenChange(!1)
});
}), Slot$2 = /* @__PURE__ */ createSlot("MenuContent.ScrollLock"), MenuContentImpl = React$1.forwardRef((t, n) => {
let { __scopeMenu: i, loop: a = !1, trapFocus: o, onOpenAutoFocus: s, onCloseAutoFocus: c, disableOutsidePointerEvents: d, onEntryFocus: f, onEscapeKeyDown: g, onPointerDownOutside: b, onFocusOutside: x, onInteractOutside: S, onDismiss: C, disableOutsideScroll: w,...E } = t, O = useMenuContext(CONTENT_NAME$8, i), A = useMenuRootContext(CONTENT_NAME$8, i), M = usePopperScope$2(i), F = useRovingFocusGroupScope$2(i), I = useCollection$2(i), [R, qA] = React$1.useState(null), V = React$1.useRef(null), q = useComposedRefs$1(n, V, O.onContentChange), JA = React$1.useRef(0), YA = React$1.useRef(""), XA = React$1.useRef(0), ZA = React$1.useRef(null), QA = React$1.useRef("right"), $A = React$1.useRef(0), ej = w ? Combination_default : React$1.Fragment, tj = w ? {
as: Slot$2,
allowPinchZoom: !0
} : void 0, nj = (t) => {
let n = YA.current + t, i = I().filter((t) => !t.disabled), a = document.activeElement, o = i.find((t) => t.ref.current === a)?.textValue, s = i.map((t) => t.textValue), c = getNextMatch(s, n, o), d = i.find((t) => t.textValue === c)?.ref.current;
(function t(n) {
YA.current = n, window.clearTimeout(JA.current), n !== "" && (JA.current = window.setTimeout(() => t(""), 1e3));
})(n), d && setTimeout(() => d.focus());
};
React$1.useEffect(() => () => window.clearTimeout(JA.current), []), useFocusGuards();
let rj = React$1.useCallback((t) => QA.current === ZA.current?.side && isPointerInGraceArea(t, ZA.current?.area), []);
return /* @__PURE__ */ jsx(MenuContentProvider, {
scope: i,
searchRef: YA,
onItemEnter: React$1.useCallback((t) => {
rj(t) && t.preventDefault();
}, [rj]),
onItemLeave: React$1.useCallback((t) => {
rj(t) || (V.current?.focus(), qA(null));
}, [rj]),
onTriggerLeave: React$1.useCallback((t) => {
rj(t) && t.preventDefault();
}, [rj]),
pointerGraceTimerRef: XA,
onPointerGraceIntentChange: React$1.useCallback((t) => {
ZA.current = t;
}, []),
children: /* @__PURE__ */ jsx(ej, {
...tj,
children: /* @__PURE__ */ jsx(FocusScope, {
asChild: !0,
trapped: o,
onMountAutoFocus: composeEventHandlers(s, (t) => {
t.preventDefault(), V.current?.focus({ preventScroll: !0 });
}),
onUnmountAutoFocus: c,
children: /* @__PURE__ */ jsx(DismissableLayer, {
asChild: !0,
disableOutsidePointerEvents: d,
onEscapeKeyDown: g,
onPointerDownOutside: b,
onFocusOutside: x,
onInteractOutside: S,
onDismiss: C,
children: /* @__PURE__ */ jsx(Root$8, {
asChild: !0,
...F,
dir: A.dir,
orientation: "vertical",
loop: a,
currentTabStopId: R,
onCurrentTabStopIdChange: qA,
onEntryFocus: composeEventHandlers(f, (t) => {
A.isUsingKeyboardRef.current || t.preventDefault();
}),
preventScrollOnEntryFocus: !0,
children: /* @__PURE__ */ jsx(Content$1, {
role: "menu",
"aria-orientation": "vertical",
"data-state": getOpenState(O.open),
"data-radix-menu-content": "",
dir: A.dir,
...M,
...E,
ref: q,
style: {
outline: "none",
...E.style
},
onKeyDown: composeEventHandlers(E.onKeyDown, (t) => {
let n = t.target.closest("[data-radix-menu-content]") === t.currentTarget, i = t.ctrlKey || t.altKey || t.metaKey, a = t.key.length === 1;
n && (t.key === "Tab" && t.preventDefault(), !i && a && nj(t.key));
let o = V.current;
if (t.target !== o || !FIRST_LAST_KEYS.includes(t.key)) return;
t.preventDefault();
let s = I().filter((t) => !t.disabled).map((t) => t.ref.current);
LAST_KEYS.includes(t.key) && s.reverse(), focusFirst(s);
}),
onBlur: composeEventHandlers(t.onBlur, (t) => {
t.currentTarget.contains(t.target) || (window.clearTimeout(JA.current), YA.current = "");
}),
onPointerMove: composeEventHandlers(t.onPointerMove, whenMouse((t) => {
let n = t.target, i = $A.current !== t.clientX;
t.currentTarget.contains(n) && i && (QA.current = t.clientX > $A.current ? "right" : "left", $A.current = t.clientX);
}))
})
})
})
})
})
});
});
MenuContent.displayName = CONTENT_NAME$8;
var GROUP_NAME$3 = "MenuGroup", MenuGroup = React$1.forwardRef((t, n) => {
let { __scopeMenu: i,...a } = t;
return /* @__PURE__ */ jsx(Primitive.div, {
role: "group",
...a,
ref: n
});
});
MenuGroup.displayName = GROUP_NAME$3;
var LABEL_NAME$3 = "MenuLabel", MenuLabel = React$1.forwardRef((t, n) => {
let { __scopeMenu: i,...a } = t;
return /* @__PURE__ */ jsx(Primitive.div, {
...a,
ref: n
});
});
MenuLabel.displayName = LABEL_NAME$3;
var ITEM_NAME$5 = "MenuItem", ITEM_SELECT = "menu.itemSelect", MenuItem = React$1.forwardRef((t, n) => {
let { disabled: i = !1, onSelect: a,...o } = t, s = React$1.useRef(null), c = useMenuRootContext(ITEM_NAME$5, t.__scopeMenu), d = useMenuContentContext(ITEM_NAME$5, t.__scopeMenu), f = useComposedRefs$1(n, s), g = React$1.useRef(!1), b = () => {
let t = s.current;
if (!i && t) {
let n = new CustomEvent(ITEM_SELECT, {
bubbles: !0,
cancelable: !0
});
t.addEventListener(ITEM_SELECT, (t) => a?.(t), { once: !0 }), dispatchDiscreteCustomEvent(t, n), n.defaultPrevented ? g.current = !1 : c.onClose();
}
};
return /* @__PURE__ */ jsx(MenuItemImpl, {
...o,
ref: f,
disabled: i,
onClick: composeEventHandlers(t.onClick, b),
onPointerDown: (n) => {
t.onPointerDown?.(n), g.current = !0;
},
onPointerUp: composeEventHandlers(t.onPointerUp, (t) => {
g.current || t.currentTarget?.click();
}),
onKeyDown: composeEventHandlers(t.onKeyDown, (t) => {
let n = d.searchRef.current !== "";
i || n && t.key === " " || SELECTION_KEYS$1.includes(t.key) && (t.currentTarget.click(), t.preventDefault());
})
});
});
MenuItem.displayName = ITEM_NAME$5;
var MenuItemImpl = React$1.forwardRef((t, n) => {
let { __scopeMenu: i, disabled: a = !1, textValue: o,...s } = t, c = useMenuContentContext(ITEM_NAME$5, i), d = useRovingFocusGroupScope$2(i), f = React$1.useRef(null), g = useComposedRefs$1(n, f), [b, x] = React$1.useState(!1), [S, C] = React$1.useState("");
return React$1.useEffect(() => {
let t = f.current;
t && C((t.textContent ?? "").trim());
}, [s.children]), /* @__PURE__ */ jsx(Collection$2.ItemSlot, {
scope: i,
disabled: a,
textValue: o ?? S,
children: /* @__PURE__ */ jsx(Item$1, {
asChild: !0,
...d,
focusable: !a,
children: /* @__PURE__ */ jsx(Primitive.div, {
role: "menuitem",
"data-highlighted": b ? "" : void 0,
"aria-disabled": a || void 0,
"data-disabled": a ? "" : void 0,
...s,
ref: g,
onPointerMove: composeEventHandlers(t.onPointerMove, whenMouse((t) => {
a ? c.onItemLeave(t) : (c.onItemEnter(t), t.defaultPrevented || t.currentTarget.focus({ preventScroll: !0 }));
})),
onPointerLeave: composeEventHandlers(t.onPointerLeave, whenMouse((t) => c.onItemLeave(t))),
onFocus: composeEventHandlers(t.onFocus, () => x(!0)),
onBlur: composeEventHandlers(t.onBlur, () => x(!1))
})
})
});
}), CHECKBOX_ITEM_NAME$2 = "MenuCheckboxItem", MenuCheckboxItem = React$1.forwardRef((t, n) => {
let { checked: i = !1, onCheckedChange: a,...o } = t;
return /* @__PURE__ */ jsx(ItemIndicatorProvider, {
scope: t.__scopeMenu,
checked: i,
children: /* @__PURE__ */ jsx(MenuItem, {
role: "menuitemcheckbox",
"aria-checked": isIndeterminate$1(i) ? "mixed" : i,
...o,
ref: n,
"data-state": getCheckedState(i),
onSelect: composeEventHandlers(o.onSelect, () => a?.(isIndeterminate$1(i) ? !0 : !i), { 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$1.forwardRef((t, n) => {
let { value: i, onValueChange: a,...o } = t, s = useCallbackRef(a);
return /* @__PURE__ */ jsx(RadioGroupProvider, {
scope: t.__scopeMenu,
value: i,
onValueChange: s,
children: /* @__PURE__ */ jsx(MenuGroup, {
...o,
ref: n
})
});
});
MenuRadioGroup.displayName = RADIO_GROUP_NAME$2;
var RADIO_ITEM_NAME$2 = "MenuRadioItem", MenuRadioItem = React$1.forwardRef((t, n) => {
let { value: i,...a } = t, o = useRadioGroupContext(RADIO_ITEM_NAME$2, t.__scopeMenu), s = i === o.value;
return /* @__PURE__ */ jsx(ItemIndicatorProvider, {
scope: t.__scopeMenu,
checked: s,
children: /* @__PURE__ */ jsx(MenuItem, {
role: "menuitemradio",
"aria-checked": s,
...a,
ref: n,
"data-state": getCheckedState(s),
onSelect: composeEventHandlers(a.onSelect, () => o.onValueChange?.(i), { 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$1.forwardRef((t, n) => {
let { __scopeMenu: i, forceMount: a,...o } = t, s = useItemIndicatorContext(ITEM_INDICATOR_NAME$1, i);
return /* @__PURE__ */ jsx(Presence, {
present: a || isIndeterminate$1(s.checked) || s.checked === !0,
children: /* @__PURE__ */ jsx(Primitive.span, {
...o,
ref: n,
"data-state": getCheckedState(s.checked)
})
});
});
MenuItemIndicator.displayName = ITEM_INDICATOR_NAME$1;
var SEPARATOR_NAME$3 = "MenuSeparator", MenuSeparator = React$1.forwardRef((t, n) => {
let { __scopeMenu: i,...a } = t;
return /* @__PURE__ */ jsx(Primitive.div, {
role: "separator",
"aria-orientation": "horizontal",
...a,
ref: n
});
});
MenuSeparator.displayName = SEPARATOR_NAME$3;
var ARROW_NAME$4 = "MenuArrow", MenuArrow = React$1.forwardRef((t, n) => {
let { __scopeMenu: i,...a } = t, o = usePopperScope$2(i);
return /* @__PURE__ */ jsx(Arrow, {
...o,
...a,
ref: n
});
});
MenuArrow.displayName = ARROW_NAME$4;
var SUB_NAME$1 = "MenuSub", [MenuSubProvider, useMenuSubContext] = createMenuContext(SUB_NAME$1), MenuSub = (t) => {
let { __scopeMenu: n, children: i, open: a = !1, onOpenChange: o } = t, s = useMenuContext(SUB_NAME$1, n), c = usePopperScope$2(n), [d, f] = React$1.useState(null), [g, b] = React$1.useState(null), x = useCallbackRef(o);
return React$1.useEffect(() => (s.open === !1 && x(!1), () => x(!1)), [s.open, x]), /* @__PURE__ */ jsx(Root2$6, {
...c,
children: /* @__PURE__ */ jsx(MenuProvider, {
scope: n,
open: a,
onOpenChange: x,
content: g,
onContentChange: b,
children: /* @__PURE__ */ jsx(MenuSubProvider, {
scope: n,
contentId: useId$1(),
triggerId: useId$1(),
trigger: d,
onTriggerChange: f,
children: i
})
})
});
};
MenuSub.displayName = SUB_NAME$1;
var SUB_TRIGGER_NAME$2 = "MenuSubTrigger", MenuSubTrigger = React$1.forwardRef((t, n) => {
let i = useMenuContext(SUB_TRIGGER_NAME$2, t.__scopeMenu), a = useMenuRootContext(SUB_TRIGGER_NAME$2, t.__scopeMenu), o = useMenuSubContext(SUB_TRIGGER_NAME$2, t.__scopeMenu), s = useMenuContentContext(SUB_TRIGGER_NAME$2, t.__scopeMenu), c = React$1.useRef(null), { pointerGraceTimerRef: d, onPointerGraceIntentChange: f } = s, g = { __scopeMenu: t.__scopeMenu }, b = React$1.useCallback(() => {
c.current && window.clearTimeout(c.current), c.current = null;
}, []);
return React$1.useEffect(() => b, [b]), React$1.useEffect(() => {
let t = d.current;
return () => {
window.clearTimeout(t), f(null);
};
}, [d, f]), /* @__PURE__ */ jsx(MenuAnchor, {
asChild: !0,
...g,
children: /* @__PURE__ */ jsx(MenuItemImpl, {
id: o.triggerId,
"aria-haspopup": "menu",
"aria-expanded": i.open,
"aria-controls": o.contentId,
"data-state": getOpenState(i.open),
...t,
ref: composeRefs$1(n, o.onTriggerChange),
onClick: (n) => {
t.onClick?.(n), !(t.disabled || n.defaultPrevented) && (n.currentTarget.focus(), i.open || i.onOpenChange(!0));
},
onPointerMove: composeEventHandlers(t.onPointerMove, whenMouse((n) => {
s.onItemEnter(n), !n.defaultPrevented && !t.disabled && !i.open && !c.current && (s.onPointerGraceIntentChange(null), c.current = window.setTimeout(() => {
i.onOpenChange(!0), b();
}, 100));
})),
onPointerLeave: composeEventHandlers(t.onPointerLeave, whenMouse((t) => {
b();
let n = i.content?.getBoundingClientRect();
if (n) {
let a = i.content?.dataset.side, o = a === "right", c = o ? -5 : 5, f = n[o ? "left" : "right"], g = n[o ? "right" : "left"];
s.onPointerGraceIntentChange({
area: [
{
x: t.clientX + c,
y: t.clientY
},
{
x: f,
y: n.top
},
{
x: g,
y: n.top
},
{
x: g,
y: n.bottom
},
{
x: f,
y: n.bottom
}
],
side: a
}), window.clearTimeout(d.current), d.current = window.setTimeout(() => s.onPointerGraceIntentChange(null), 300);
} else {
if (s.onTriggerLeave(t), t.defaultPrevented) return;
s.onPointerGraceIntentChange(null);
}
})),
onKeyDown: composeEventHandlers(t.onKeyDown, (n) => {
let o = s.searchRef.current !== "";
t.disabled || o && n.key === " " || SUB_OPEN_KEYS[a.dir].includes(n.key) && (i.onOpenChange(!0), i.content?.focus(), n.preventDefault());
})
})
});
});
MenuSubTrigger.displayName = SUB_TRIGGER_NAME$2;
var SUB_CONTENT_NAME$2 = "MenuSubContent", MenuSubContent = React$1.forwardRef((t, n) => {
let i = usePortalContext$1(CONTENT_NAME$8, t.__scopeMenu), { forceMount: a = i.forceMount,...o } = t, s = useMenuContext(CONTENT_NAME$8, t.__scopeMenu), c = useMenuRootContext(CONTENT_NAME$8, t.__scopeMenu), d = useMenuSubContext(SUB_CONTENT_NAME$2, t.__scopeMenu), f = React$1.useRef(null), g = useComposedRefs$1(n, f);
return /* @__PURE__ */ jsx(Collection$2.Provider, {
scope: t.__scopeMenu,
children: /* @__PURE__ */ jsx(Presence, {
present: a || s.open,
children: /* @__PURE__ */ jsx(Collection$2.Slot, {
scope: t.__scopeMenu,
children: /* @__PURE__ */ jsx(MenuContentImpl, {
id: d.contentId,
"aria-labelledby": d.triggerId,
...o,
ref: g,
align: "start",
side: c.dir === "rtl" ? "left" : "right",
disableOutsidePointerEvents: !1,
disableOutsideScroll: !1,
trapFocus: !1,
onOpenAutoFocus: (t) => {
c.isUsingKeyboardRef.current && f.current?.focus(), t.preventDefault();
},
onCloseAutoFocus: (t) => t.preventDefault(),
onFocusOutside: composeEventHandlers(t.onFocusOutside, (t) => {
t.target !== d.trigger && s.onOpenChange(!1);
}),
onEscapeKeyDown: composeEventHandlers(t.onEscapeKeyDown, (t) => {
c.onClose(), t.preventDefault();
}),
onKeyDown: composeEventHandlers(t.onKeyDown, (t) => {
let n = t.currentTarget.contains(t.target), i = SUB_CLOSE_KEYS[c.dir].includes(t.key);
n && i && (s.onOpenChange(!1), d.trigger?.focus(), t.preventDefault());
})
})
})
})
});
});
MenuSubContent.displayName = SUB_CONTENT_NAME$2;
function getOpenState(t) {
return t ? "open" : "closed";
}
function isIndeterminate$1(t) {
return t === "indeterminate";
}
function getCheckedState(t) {
return isIndeterminate$1(t) ? "indeterminate" : t ? "checked" : "unchecked";
}
function focusFirst(t) {
let n = document.activeElement;
for (let i of t) if (i === n || (i.focus(), document.activeElement !== n)) return;
}
function wrapArray$1(t, n) {
return t.map((i, a) => t[(n + a) % t.length]);
}
function getNextMatch(t, n, i) {
let a = n.length > 1 && Array.from(n).every((t) => t === n[0]) ? n[0] : n, o = i ? t.indexOf(i) : -1, s = wrapArray$1(t, Math.max(o, 0));
a.length === 1 && (s = s.filter((t) => t !== i));
let c = s.find((t) => t.toLowerCase().startsWith(a.toLowerCase()));
return c === i ? void 0 : c;
}
function isPointInPolygon$1(t, n) {
let { x: i, y: a } = t, o = !1;
for (let t = 0, s = n.length - 1; t < n.length; s = t++) {
let c = n[t], d = n[s], f = c.x, g = c.y, b = d.x, x = d.y;
g > a != x > a && i < (b - f) * (a - g) / (x - g) + f && (o = !o);
}
return o;
}
function isPointerInGraceArea(t, n) {
if (!n) return !1;
let i = {
x: t.clientX,
y: t.clientY
};
return isPointInPolygon$1(i, n);
}
function whenMouse(t) {
return (n) => n.pointerType === "mouse" ? t(n) : void 0;
}
var Root3$1 = Menu, Anchor2 = MenuAnchor, Portal$3 = MenuPortal, Content2$5 = MenuContent, Group = MenuGroup, Label$2 = MenuLabel, Item2$3 = MenuItem, CheckboxItem = MenuCheckboxItem, RadioGroup = MenuRadioGroup, RadioItem = MenuRadioItem, ItemIndicator$1 = MenuItemIndicator, Separator$2 = 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 = (t) => {
let { __scopeDropdownMenu: n, children: i, dir: a, open: o, defaultOpen: s, onOpenChange: c, modal: d = !0 } = t, f = useMenuScope$1(n), g = React$1.useRef(null), [b, x] = useControllableState({
prop: o,
defaultProp: s ?? !1,
onChange: c,
caller: DROPDOWN_MENU_NAME
});
return /* @__PURE__ */ jsx(DropdownMenuProvider, {
scope: n,
triggerId: useId$1(),
triggerRef: g,
contentId: useId$1(),
open: b,
onOpenChange: x,
onOpenToggle: React$1.useCallback(() => x((t) => !t), [x]),
modal: d,
children: /* @__PURE__ */ jsx(Root3$1, {
...f,
open: b,
onOpenChange: x,
dir: a,
modal: d,
children: i
})
});
};
DropdownMenu$1.displayName = DROPDOWN_MENU_NAME;
var TRIGGER_NAME$7 = "DropdownMenuTrigger", DropdownMenuTrigger$1 = React$1.forwardRef((t, n) => {
let { __scopeDropdownMenu: i, disabled: a = !1,...o } = t, s = useDropdownMenuContext(TRIGGER_NAME$7, i), c = useMenuScope$1(i);
return /* @__PURE__ */ jsx(Anchor2, {
asChild: !0,
...c,
children: /* @__PURE__ */ jsx(Primitive.button, {
type: "button",
id: s.triggerId,
"aria-haspopup": "menu",
"aria-expanded": s.open,
"aria-controls": s.open ? s.contentId : void 0,
"data-state": s.open ? "open" : "closed",
"data-disabled": a ? "" : void 0,
disabled: a,
...o,
ref: composeRefs$1(n, s.triggerRef),
onPointerDown: composeEventHandlers(t.onPointerDown, (t) => {
!a && t.button === 0 && t.ctrlKey === !1 && (s.onOpenToggle(), s.open || t.preventDefault());
}),
onKeyDown: composeEventHandlers(t.onKeyDown, (t) => {
a || (["Enter", " "].includes(t.key) && s.onOpenToggle(), t.key === "ArrowDown" && s.onOpenChange(!0), [
"Enter",
" ",
"ArrowDown"
].includes(t.key) && t.preventDefault());
})
})
});
});
DropdownMenuTrigger$1.displayName = TRIGGER_NAME$7;
var PORTAL_NAME$4 = "DropdownMenuPortal", DropdownMenuPortal = (t) => {
let { __scopeDropdownMenu: n,...i } = t, a = useMenuScope$1(n);
return /* @__PURE__ */ jsx(Portal$3, {
...a,
...i
});
};
DropdownMenuPortal.displayName = PORTAL_NAME$4;
var CONTENT_NAME$7 = "DropdownMenuContent", DropdownMenuContent$1 = React$1.forwardRef((t, n) => {
let { __scopeDropdownMenu: i,...a } = t, o = useDropdownMenuContext(CONTENT_NAME$7, i), s = useMenuScope$1(i), c = React$1.useRef(!1);
return /* @__PURE__ */ jsx(Content2$5, {
id: o.contentId,
"aria-labelledby": o.triggerId,
...s,
...a,
ref: n,
onCloseAutoFocus: composeEventHandlers(t.onCloseAutoFocus, (t) => {
c.current || o.triggerRef.current?.focus(), c.current = !1, t.preventDefault();
}),
onInteractOutside: composeEventHandlers(t.onInteractOutside, (t) => {
let n = t.detail.originalEvent, i = n.button === 0 && n.ctrlKey === !0, a = n.button === 2 || i;
(!o.modal || a) && (c.current = !0);
}),
style: {
...t.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$1.forwardRef((t, n) => {
let { __scopeDropdownMenu: i,...a } = t, o = useMenuScope$1(i);
return /* @__PURE__ */ jsx(Group, {
...o,
...a,
ref: n
});
});
DropdownMenuGroup$1.displayName = GROUP_NAME$2;
var LABEL_NAME$2 = "DropdownMenuLabel", DropdownMenuLabel = React$1.forwardRef((t, n) => {
let { __scopeDropdownMenu: i,...a } = t, o = useMenuScope$1(i);
return /* @__PURE__ */ jsx(Label$2, {
...o,
...a,
ref: n
});
});
DropdownMenuLabel.displayName = LABEL_NAME$2;
var ITEM_NAME$4 = "DropdownMenuItem", DropdownMenuItem$1 = React$1.forwardRef((t, n) => {
let { __scopeDropdownMenu: i,...a } = t, o = useMenuScope$1(i);
return /* @__PURE__ */ jsx(Item2$3, {
...o,
...a,
ref: n
});
});
DropdownMenuItem$1.displayName = ITEM_NAME$4;
var CHECKBOX_ITEM_NAME$1 = "DropdownMenuCheckboxItem", DropdownMenuCheckboxItem = React$1.forwardRef((t, n) => {
let { __scopeDropdownMenu: i,...a } = t, o = useMenuScope$1(i);
return /* @__PURE__ */ jsx(CheckboxItem, {
...o,
...a,
ref: n
});
});
DropdownMenuCheckboxItem.displayName = CHECKBOX_ITEM_NAME$1;
var RADIO_GROUP_NAME$1 = "DropdownMenuRadioGroup", DropdownMenuRadioGroup = React$1.forwardRef((t, n) => {
let { __scopeDropdownMenu: i,...a } = t, o = useMenuScope$1(i);
return /* @__PURE__ */ jsx(RadioGroup, {
...o,
...a,
ref: n
});
});
DropdownMenuRadioGroup.displayName = RADIO_GROUP_NAME$1;
var RADIO_ITEM_NAME$1 = "DropdownMenuRadioItem", DropdownMenuRadioItem = React$1.forwardRef((t, n) => {
let { __scopeDropdownMenu: i,...a } = t, o = useMenuScope$1(i);
return /* @__PURE__ */ jsx(RadioItem, {
...o,
...a,
ref: n
});
});
DropdownMenuRadioItem.displayName = RADIO_ITEM_NAME$1;
var INDICATOR_NAME$2 = "DropdownMenuItemIndicator", DropdownMenuItemIndicator = React$1.forwardRef((t, n) => {
let { __scopeDropdownMenu: i,...a } = t, o = useMenuScope$1(i);
return /* @__PURE__ */ jsx(ItemIndicator$1, {
...o,
...a,
ref: n
});
});
DropdownMenuItemIndicator.displayName = INDICATOR_NAME$2;
var SEPARATOR_NAME$2 = "DropdownMenuSeparator", DropdownMenuSeparator$1 = React$1.forwardRef((t, n) => {
let { __scopeDropdownMenu: i,...a } = t, o = useMenuScope$1(i);
return /* @__PURE__ */ jsx(Separator$2, {
...o,
...a,
ref: n
});
});
DropdownMenuSeparator$1.displayName = SEPARATOR_NAME$2;
var ARROW_NAME$3 = "DropdownMenuArrow", DropdownMenuArrow = React$1.forwardRef((t, n) => {
let { __scopeDropdownMenu: i,...a } = t, o = useMenuScope$1(i);
return /* @__PURE__ */ jsx(Arrow2$1, {
...o,
...a,
ref: n
});
});
DropdownMenuArrow.displayName = ARROW_NAME$3;
var SUB_TRIGGER_NAME$1 = "DropdownMenuSubTrigger", DropdownMenuSubTrigger = React$1.forwardRef((t, n) => {
let { __scopeDropdownMenu: i,...a } = t, o = useMenuScope$1(i);
return /* @__PURE__ */ jsx(SubTrigger, {
...o,
...a,
ref: n
});
});
DropdownMenuSubTrigger.displayName = SUB_TRIGGER_NAME$1;
var SUB_CONTENT_NAME$1 = "DropdownMenuSubContent", DropdownMenuSubContent = React$1.forwardRef((t, n) => {
let { __scopeDropdownMenu: i,...a } = t, o = useMenuScope$1(i);
return /* @__PURE__ */ jsx(SubContent, {
...o,
...a,
ref: n,
style: {
...t.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$5 = DropdownMenu$1, Trigger$4 = DropdownMenuTrigger$1, Portal2$2 = DropdownMenuPortal, Content2$4 = DropdownMenuContent$1, Group2 = DropdownMenuGroup$1, Item2$2 = DropdownMenuItem$1, Separator2 = DropdownMenuSeparator$1;
function DropdownMenu({ ...t }) {
return /* @__PURE__ */ jsx(Root2$5, {
"data-slot": "dropdown-menu",
...t
});
}
function DropdownMenuTrigger({ ...t }) {
return /* @__PURE__ */ jsx(Trigger$4, {
"data-slot": "dropdown-menu-trigger",
...t
});
}
function DropdownMenuContent({ className: t, sideOffset: n = 4,...i }) {
let [a, o] = useState(null);
return /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(Portal2$2, {
container: a,
children: /* @__PURE__ */ jsx(Content2$4, {
"data-slot": "dropdown-menu-content",
sideOffset: n,
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", t),
...i
})
}), /* @__PURE__ */ jsx("div", {
ref: o,
style: { display: "contents" }
})] });
}
function DropdownMenuGroup({ ...t }) {
return /* @__PURE__ */ jsx(Group2, {
"data-slot": "dropdown-menu-group",
...t
});
}
function DropdownMenuItem({ className: t, inset: n, variant: i = "default",...a }) {
return /* @__PURE__ */ jsx(Item2$2, {
"data-slot": "dropdown-menu-item",
"data-inset": n,
"data-variant": i,
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-pointer 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", t),
...a
});
}
function DropdownMenuSeparator({ className: t,...n }) {
return /* @__PURE__ */ jsx(Separator2, {
"data-slot": "dropdown-menu-separator",
className: cn("bg-border -mx-1 my-1 h-px", t),
...n
});
}
function DropdownMenuShortcut({ className: t,...n }) {
return /* @__PURE__ */ jsx("span", {
"data-slot": "dropdown-menu-shortcut",
className: cn("text-muted-foreground ml-auto text-xs tracking-widest", t),
...n
});
}
function Empty({ className: t,...n }) {
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", t),
...n
});
}
function EmptyHeader({ className: t,...n }) {
return /* @__PURE__ */ jsx("div", {
"data-slot": "empty-header",
className: cn("flex max-w-sm flex-col items-center gap-2 text-center", t),
...n
});
}
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: t, variant: n = "default",...i }) {
return /* @__PURE__ */ jsx("div", {
"data-slot": "empty-icon",
"data-variant": n,
className: cn(emptyMediaVariants({
variant: n,
className: t
})),
...i
});
}
function EmptyTitle({ className: t,...n }) {
return /* @__PURE__ */ jsx("div", {
"data-slot": "empty-title",
className: cn("text-lg font-medium tracking-tight", t),
...n
});
}
function EmptyDescription({ className: t,...n }) {
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", t),
...n
});
}
function EmptyContent({ className: t,...n }) {
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", t),
...n
});
}
var Primitive$1 = [
"a",
"button",
"div",
"form",
"h2",
"h3",
"img",
"input",
"label",
"li",
"nav",
"ol",
"p",
"select",
"span",
"svg",
"ul"
].reduce((t, n) => {
let i = /* @__PURE__ */ createSlot$1(`Primitive.${n}`), a = React$1.forwardRef((t, a) => {
let { asChild: o,...s } = t, c = o ? i : n;
return typeof window < "u" && (window[Symbol.for("radix-ui")] = !0), /* @__PURE__ */ jsx(c, {
...s,
ref: a
});
});
return a.displayName = `Primitive.${n}`, {
...t,
[n]: a
};
}, {}), NAME$3 = "Label", Label$1 = React$1.forwardRef((t, n) => /* @__PURE__ */ jsx(Primitive$1.label, {
...t,
ref: n,
onMouseDown: (n) => {
n.target.closest("button, input, select, textarea") || (t.onMouseDown?.(n), !n.defaultPrevented && n.detail > 1 && n.preventDefault());
}
}));
Label$1.displayName = NAME$3;
var Root$7 = Label$1;
function Label({ className: t,...n }) {
return /* @__PURE__ */ jsx(Root$7, {
"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", t),
...n
});
}
var NAME$2 = "Separator", DEFAULT_ORIENTATION = "horizontal", ORIENTATIONS = ["horizontal", "vertical"], Separator$1 = React$1.forwardRef((t, n) => {
let { decorative: i, orientation: a = DEFAULT_ORIENTATION,...o } = t, s = isValidOrientation(a) ? a : DEFAULT_ORIENTATION, c = s === "vertical" ? s : void 0, d = i ? { role: "none" } : {
"aria-orientation": c,
role: "separator"
};
return /* @__PURE__ */ jsx(Primitive$1.div, {
"data-orientation": s,
...d,
...o,
ref: n
});
});
Separator$1.displayName = NAME$2;
function isValidOrientation(t) {
return ORIENTATIONS.includes(t);
}
var Root$6 = Separator$1;
function Separator({ className: t, orientation: n = "horizontal", decorative: i = !0,...a }) {
return /* @__PURE__ */ jsx(Root$6, {
"data-slot": "separator",
decorative: i,
orientation: n,
className: cn("bg-border shrink-0 data-[orientation=horizontal]:h-px data-[orientation=vertical]:h-full data-[orientation=horizontal]:w-full data-[orientation=vertical]:w-px", t),
...a
});
}
function FieldGroup({ className: t,...n }) {
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", t),
...n
});
}
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: t, orientation: n = "vertical",...i }) {
return /* @__PURE__ */ jsx("div", {
role: "group",
"data-slot": "field",
"data-orientation": n,
className: cn(fieldVariants({ orientation: n }), t),
...i
});
}
function FieldLabel({ className: t,...n }) {
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", t),
...n
});
}
function FieldError({ className: t, children: n, errors: i,...a }) {
let o = useMemo(() => {
if (n) return n;
if (!i?.length) return null;
let t = [...new Map(i.map((t) => [t?.message, t])).values()];
return t?.length === 1 ? t[0]?.message : /* @__PURE__ */ jsx("ul", {
className: "ml-4 flex list-disc flex-col gap-1",
children: t.map((t, n) => t?.message && /* @__PURE__ */ jsx("li", { children: t.message }, n))
});
}, [n, i]);
return o ? /* @__PURE__ */ jsx("div", {
role: "alert",
"data-slot": "field-error",
className: cn("text-destructive text-sm font-normal", t),
...a,
children: o
}) : null;
}
function Input({ className: t, type: n,...i }) {
return /* @__PURE__ */ jsx("input", {
type: n,
"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", t),
...i
});
}
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$1.useId, wrappedUseId = typeof useId$2 == "function" ? useId$2 : () => null, counter = 0;
function useUniqueId$1(t = null) {
let n = wrappedUseId(), i = useRef(t || n || null);
return i.current === null && (i.current = "" + counter++), t ?? i.current;
}
function PanelWithForwardedRef({ children: t, className: n = "", collapsedSize: i, collapsible: a, defaultSize: o, forwardedRef: s, id: c, maxSize: d, minSize: f, onCollapse: g, onExpand: b, onResize: x, order: S, style: C, tagName: w = "div",...E }) {
let O = useContext(PanelGroupContext);
if (O === null) throw Error("Panel components must be rendered within a PanelGroup container");
let { collapsePanel: A, expandPanel: M, getPanelSize: F, getPanelStyle: I, groupId: R, isPanelCollapsed: qA, reevaluatePanelConstraints: V, registerPanel: q, resizePanel: JA, unregisterPanel: YA } = O, XA = useUniqueId$1(c), ZA = useRef({
callbacks: {
onCollapse: g,
onExpand: b,
onResize: x
},
constraints: {
collapsedSize: i,
collapsible: a,
defaultSize: o,
maxSize: d,
minSize: f
},
id: XA,
idIsFromProps: c !== void 0,
order: S
});
useRef({ didLogMissingDefaultSizeWarning: !1 }), useIsomorphicLayoutEffect$1(() => {
let { callbacks: t, constraints: n } = ZA.current, s = { ...n };
ZA.current.id = XA, ZA.current.idIsFromProps = c !== void 0, ZA.current.order = S, t.onCollapse = g, t.onExpand = b, t.onResize = x, n.collapsedSize = i, n.collapsible = a, n.defaultSize = o, n.maxSize = d, n.minSize = f, (s.collapsedSize !== n.collapsedSize || s.collapsible !== n.collapsible || s.maxSize !== n.maxSize || s.minSize !== n.minSize) && V(ZA.current, s);
}), useIsomorphicLayoutEffect$1(() => {
let t = ZA.current;
return q(t), () => {
YA(t);
};
}, [
S,
XA,
q,
YA
]), useImperativeHandle(s, () => ({
collapse: () => {
A(ZA.current);
},
expand: (t) => {
M(ZA.current, t);
},
getId() {
return XA;
},
getSize() {
return F(ZA.current);
},
isCollapsed() {
return qA(ZA.current);
},
isExpanded() {
return !qA(ZA.current);
},
resize: (t) => {
JA(ZA.current, t);
}
}), [
A,
M,
F,
qA,
XA,
JA
]);
let QA = I(ZA.current, o);
return createElement(w, {
...E,
children: t,
className: n,
id: XA,
style: {
...QA,
...C
},
[DATA_ATTRIBUTES.groupId]: R,
[DATA_ATTRIBUTES.panel]: "",
[DATA_ATTRIBUTES.panelCollapsible]: a || void 0,
[DATA_ATTRIBUTES.panelId]: XA,
[DATA_ATTRIBUTES.panelSize]: parseFloat("" + QA.flexGrow).toFixed(1)
});
}
var Panel = forwardRef((t, n) => createElement(PanelWithForwardedRef, {
...t,
forwardedRef: n
}));
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(t, n, i) {
let a = (n & EXCEEDED_HORIZONTAL_MIN) !== 0, o = (n & EXCEEDED_HORIZONTAL_MAX) !== 0, s = (n & EXCEEDED_VERTICAL_MIN) !== 0, c = (n & EXCEEDED_VERTICAL_MAX) !== 0;
if (getCustomCursorStyleFunction) return getCustomCursorStyleFunction({
exceedsHorizontalMaximum: o,
exceedsHorizontalMinimum: a,
exceedsVerticalMaximum: c,
exceedsVerticalMinimum: s,
intersectsHorizontalDragHandle: t === "horizontal" || t === "intersection",
intersectsVerticalDragHandle: t === "vertical" || t === "intersection",
isPointerDown: i
});
if (n) {
if (a) return s ? "se-resize" : c ? "ne-resize" : "e-resize";
if (o) return s ? "sw-resize" : c ? "nw-resize" : "w-resize";
if (s) return "s-resize";
if (c) return "n-resize";
}
switch (t) {
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(t, n, i) {
if (!enabled) return;
let a = getCursorStyle(t, n, i);
if (currentCursorStyle !== a) {
if (currentCursorStyle = a, styleElement === null) {
styleElement = document.createElement("style");
let t = getNonce();
t && styleElement.setAttribute("nonce", t), document.head.appendChild(styleElement);
}
if (prevRuleIndex >= 0) {
var o;
(o = styleElement.sheet) == null || o.removeRule(prevRuleIndex);
}
prevRuleIndex = styleElement.sheet?.insertRule(`*{cursor: ${a} !important;}`) ?? -1;
}
}
function isKeyDown(t) {
return t.type === "keydown";
}
function isPointerEvent(t) {
return t.type.startsWith("pointer");
}
function isMouseEvent(t) {
return t.type.startsWith("mouse");
}
function getResizeEventCoordinates(t) {
if (isPointerEvent(t)) {
if (t.isPrimary) return {
x: t.clientX,
y: t.clientY
};
} else if (isMouseEvent(t)) return {
x: t.clientX,
y: t.clientY
};
return {
x: Infinity,
y: Infinity
};
}
function getInputType() {
if (typeof matchMedia == "function") return matchMedia("(pointer:coarse)").matches ? "coarse" : "fine";
}
function intersects(t, n, i) {
return i ? t.x < n.x + n.width && t.x + t.width > n.x && t.y < n.y + n.height && t.y + t.height > n.y : t.x <= n.x + n.width && t.x + t.width >= n.x && t.y <= n.y + n.height && t.y + t.height >= n.y;
}
function compare(t, n) {
if (t === n) throw Error("Cannot compare node with itself");
let i = {
a: get_ancestors(t),
b: get_ancestors(n)
}, a;
for (; i.a.at(-1) === i.b.at(-1);) t = i.a.pop(), n = i.b.pop(), a = t;
assert(a, "Stacking order can only be calculated for elements with a common ancestor");
let o = {
a: get_z_index(find_stacking_context(i.a)),
b: get_z_index(find_stacking_context(i.b))
};
if (o.a === o.b) {
let t = a.childNodes, n = {
a: i.a.at(-1),
b: i.b.at(-1)
}, o = t.length;
for (; o--;) {
let i = t[o];
if (i === n.a) return 1;
if (i === n.b) return -1;
}
}
return Math.sign(o.a - o.b);
}
var props = /\b(?:position|zIndex|opacity|transform|webkitTransform|mixBlendMode|filter|webkitFilter|isolation)\b/;
function is_flex_item(t) {
let n = getComputedStyle(get_parent(t) ?? t).display;
return n === "flex" || n === "inline-flex";
}
function creates_stacking_context(t) {
let n = getComputedStyle(t);
return !!(n.position === "fixed" || n.zIndex !== "auto" && (n.position !== "static" || is_flex_item(t)) || +n.opacity < 1 || "transform" in n && n.transform !== "none" || "webkitTransform" in n && n.webkitTransform !== "none" || "mixBlendMode" in n && n.mixBlendMode !== "normal" || "filter" in n && n.filter !== "none" || "webkitFilter" in n && n.webkitFilter !== "none" || "isolation" in n && n.isolation === "isolate" || props.test(n.willChange) || n.webkitOverflowScrolling === "touch");
}
function find_stacking_context(t) {
let n = t.length;
for (; n--;) {
let i = t[n];
if (assert(i, "Missing node"), creates_stacking_context(i)) return i;
}
return null;
}
function get_z_index(t) {
return t && Number(getComputedStyle(t).zIndex) || 0;
}
function get_ancestors(t) {
let n = [];
for (; t;) n.push(t), t = get_parent(t);
return n;
}
function get_parent(t) {
let { parentNode: n } = t;
return n && n instanceof ShadowRoot ? n.host : n;
}
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(t, n, i, a, o) {
let { ownerDocument: s } = n, c = {
direction: i,
element: n,
hitAreaMargins: a,
setResizeHandlerState: o
}, d = ownerDocumentCounts.get(s) ?? 0;
return ownerDocumentCounts.set(s, d + 1), registeredResizeHandlers.add(c), updateListeners(), function() {
panelConstraintFlags.delete(t), registeredResizeHandlers.delete(c);
let n = ownerDocumentCounts.get(s) ?? 1;
if (ownerDocumentCounts.set(s, n - 1), updateListeners(), n === 1 && ownerDocumentCounts.delete(s), intersectingHandles.includes(c)) {
let t = intersectingHandles.indexOf(c);
t >= 0 && intersectingHandles.splice(t, 1), updateCursor(), o("up", !0, null);
}
};
}
function handlePointerDown(t) {
let { target: n } = t, { x: i, y: a } = getResizeEventCoordinates(t);
isPointerDown = !0, recalculateIntersectingHandles({
target: n,
x: i,
y: a
}), updateListeners(), intersectingHandles.length > 0 && (updateResizeHandlerStates("down", t), updateCursor(), t.preventDefault(), isWithinResizeHandle(n) || t.stopImmediatePropagation());
}
function handlePointerMove(t) {
let { x: n, y: i } = getResizeEventCoordinates(t);
if (isPointerDown && t.type !== "pointerleave" && t.buttons === 0 && (isPointerDown = !1, updateResizeHandlerStates("up", t)), !isPointerDown) {
let { target: a } = t;
recalculateIntersectingHandles({
target: a,
x: n,
y: i
});
}
updateResizeHandlerStates("move", t), updateCursor(), intersectingHandles.length > 0 && t.preventDefault();
}
function handlePointerUp(t) {
let { target: n } = t, { x: i, y: a } = getResizeEventCoordinates(t);
panelConstraintFlags.clear(), isPointerDown = !1, intersectingHandles.length > 0 && (t.preventDefault(), isWithinResizeHandle(n) || t.stopImmediatePropagation()), updateResizeHandlerStates("up", t), recalculateIntersectingHandles({
target: n,
x: i,
y: a
}), updateCursor(), updateListeners();
}
function isWithinResizeHandle(t) {
let n = t;
for (; n;) {
if (n.hasAttribute(DATA_ATTRIBUTES.resizeHandle)) return !0;
n = n.parentElement;
}
return !1;
}
function recalculateIntersectingHandles({ target: t, x: n, y: i }) {
intersectingHandles.splice(0);
let a = null;
(t instanceof HTMLElement || t instanceof SVGElement) && (a = t), registeredResizeHandlers.forEach((t) => {
let { element: o, hitAreaMargins: s } = t, c = o.getBoundingClientRect(), { bottom: d, left: f, right: g, top: b } = c, x = isCoarsePointer ? s.coarse : s.fine;
if (n >= f - x && n <= g + x && i >= b - x && i <= d + x) {
if (a !== null && document.contains(a) && o !== a && !o.contains(a) && !a.contains(o) && compare(a, o) > 0) {
let t = a, n = !1;
for (; t && !t.contains(o);) {
if (intersects(t.getBoundingClientRect(), c, !0)) {
n = !0;
break;
}
t = t.parentElement;
}
if (n) return;
}
intersectingHandles.push(t);
}
});
}
function reportConstraintsViolation(t, n) {
panelConstraintFlags.set(t, n);
}
function updateCursor() {
let t = !1, n = !1;
intersectingHandles.forEach((i) => {
let { direction: a } = i;
a === "horizontal" ? t = !0 : n = !0;
});
let i = 0;
panelConstraintFlags.forEach((t) => {
i |= t;
}), t && n ? setGlobalCursorStyle("intersection", i, isPointerDown) : t ? setGlobalCursorStyle("horizontal", i, isPointerDown) : n ? setGlobalCursorStyle("vertical", i, isPointerDown) : resetGlobalCursorStyle();
}
var listenersAbortController;
function updateListeners() {
var t;
(t = listenersAbortController) == null || t.abort(), listenersAbortController = new AbortController();
let n = {
capture: !0,
signal: listenersAbortController.signal
};
registeredResizeHandlers.size && (isPointerDown ? (intersectingHandles.length > 0 && ownerDocumentCounts.forEach((t, i) => {
let { body: a } = i;
t > 0 && (a.addEventListener("contextmenu", handlePointerUp, n), a.addEventListener("pointerleave", handlePointerMove, n), a.addEventListener("pointermove", handlePointerMove, n));
}), ownerDocumentCounts.forEach((t, i) => {
let { body: a } = i;
a.addEventListener("pointerup", handlePointerUp, n), a.addEventListener("pointercancel", handlePointerUp, n);
})) : ownerDocumentCounts.forEach((t, i) => {
let { body: a } = i;
t > 0 && (a.addEventListener("pointerdown", handlePointerDown, n), a.addEventListener("pointermove", handlePointerMove, n));
}));
}
function updateResizeHandlerStates(t, n) {
registeredResizeHandlers.forEach((i) => {
let { setResizeHandlerState: a } = i, o = intersectingHandles.includes(i);
a(t, o, n);
});
}
function useForceUpdate() {
let [t, n] = useState(0);
return useCallback(() => n((t) => t + 1), []);
}
function assert(t, n) {
if (!t) throw console.error(n), Error(n);
}
function fuzzyCompareNumbers(t, n, i = PRECISION) {
return t.toFixed(i) === n.toFixed(i) ? 0 : t > n ? 1 : -1;
}
function fuzzyNumbersEqual$1(t, n, i = PRECISION) {
return fuzzyCompareNumbers(t, n, i) === 0;
}
function fuzzyNumbersEqual(t, n, i) {
return fuzzyCompareNumbers(t, n, i) === 0;
}
function fuzzyLayoutsEqual(t, n, i) {
if (t.length !== n.length) return !1;
for (let a = 0; a < t.length; a++) {
let o = t[a], s = n[a];
if (!fuzzyNumbersEqual(o, s, i)) return !1;
}
return !0;
}
function resizePanel({ panelConstraints: t, panelIndex: n, size: i }) {
let a = t[n];
assert(a != null, `Panel constraints not found for index ${n}`);
let { collapsedSize: o = 0, collapsible: s, maxSize: c = 100, minSize: d = 0 } = a;
if (fuzzyCompareNumbers(i, d) < 0) if (s) {
let t = (o + d) / 2;
i = fuzzyCompareNumbers(i, t) < 0 ? o : d;
} else i = d;
return i = Math.min(c, i), i = parseFloat(i.toFixed(PRECISION)), i;
}
function adjustLayoutByDelta({ delta: t, initialLayout: n, panelConstraints: i, pivotIndices: a, prevLayout: o, trigger: s }) {
if (fuzzyNumbersEqual(t, 0)) return n;
let c = [...n], [d, f] = a;
assert(d != null, "Invalid first pivot index"), assert(f != null, "Invalid second pivot index");
let g = 0;
if (s === "keyboard") {
{
let a = t < 0 ? f : d, o = i[a];
assert(o, `Panel constraints not found for index ${a}`);
let { collapsedSize: s = 0, collapsible: c, minSize: g = 0 } = o;
if (c) {
let i = n[a];
if (assert(i != null, `Previous layout not found for panel index ${a}`), fuzzyNumbersEqual(i, s)) {
let n = g - i;
fuzzyCompareNumbers(n, Math.abs(t)) > 0 && (t = t < 0 ? 0 - n : n);
}
}
}
{
let a = t < 0 ? d : f, o = i[a];
assert(o, `No panel constraints found for index ${a}`);
let { collapsedSize: s = 0, collapsible: c, minSize: g = 0 } = o;
if (c) {
let i = n[a];
if (assert(i != null, `Previous layout not found for panel index ${a}`), fuzzyNumbersEqual(i, g)) {
let n = i - s;
fuzzyCompareNumbers(n, Math.abs(t)) > 0 && (t = t < 0 ? 0 - n : n);
}
}
}
}
{
let a = t < 0 ? 1 : -1, o = t < 0 ? f : d, s = 0;
for (;;) {
let t = n[o];
assert(t != null, `Previous layout not found for panel index ${o}`);
let c = resizePanel({
panelConstraints: i,
panelIndex: o,
size: 100
}) - t;
if (s += c, o += a, o < 0 || o >= i.length) break;
}
let c = Math.min(Math.abs(t), Math.abs(s));
t = t < 0 ? 0 - c : c;
}
{
let a = t < 0 ? d : f;
for (; a >= 0 && a < i.length;) {
let o = Math.abs(t) - Math.abs(g), s = n[a];
assert(s != null, `Previous layout not found for panel index ${a}`);
let d = s - o, f = resizePanel({
panelConstraints: i,
panelIndex: a,
size: d
});
if (!fuzzyNumbersEqual(s, f) && (g += s - f, c[a] = f, g.toFixed(3).localeCompare(Math.abs(t).toFixed(3), void 0, { numeric: !0 }) >= 0)) break;
t < 0 ? a-- : a++;
}
}
if (fuzzyLayoutsEqual(o, c)) return o;
{
let a = t < 0 ? f : d, o = n[a];
assert(o != null, `Previous layout not found for panel index ${a}`);
let s = o + g, b = resizePanel({
panelConstraints: i,
panelIndex: a,
size: s
});
if (c[a] = b, !fuzzyNumbersEqual(b, s)) {
let n = s - b, a = t < 0 ? f : d;
for (; a >= 0 && a < i.length;) {
let o = c[a];
assert(o != null, `Previous layout not found for panel index ${a}`);
let s = o + n, d = resizePanel({
panelConstraints: i,
panelIndex: a,
size: s
});
if (fuzzyNumbersEqual(o, d) || (n -= d - o, c[a] = d), fuzzyNumbersEqual(n, 0)) break;
t > 0 ? a-- : a++;
}
}
}
let b = c.reduce((t, n) => n + t, 0);
return fuzzyNumbersEqual(b, 100) ? c : o;
}
function calculateAriaValues({ layout: t, panelsArray: n, pivotIndices: i }) {
let a = 0, o = 100, s = 0, c = 0, d = i[0];
assert(d != null, "No pivot index found"), n.forEach((t, n) => {
let { constraints: i } = t, { maxSize: f = 100, minSize: g = 0 } = i;
n === d ? (a = g, o = f) : (s += g, c += f);
});
let f = Math.min(o, 100 - s), g = Math.max(a, 100 - c), b = t[d];
return {
valueMax: f,
valueMin: g,
valueNow: b
};
}
function getResizeHandleElementsForGroup(t, n = document) {
return Array.from(n.querySelectorAll(`[${DATA_ATTRIBUTES.resizeHandleId}][data-panel-group-id="${t}"]`));
}
function getResizeHandleElementIndex(t, n, i = document) {
return getResizeHandleElementsForGroup(t, i).findIndex((t) => t.getAttribute(DATA_ATTRIBUTES.resizeHandleId) === n) ?? null;
}
function determinePivotIndices(t, n, i) {
let a = getResizeHandleElementIndex(t, n, i);
return a == null ? [-1, -1] : [a, a + 1];
}
function isHTMLElement$1(t) {
return t instanceof HTMLElement ? !0 : typeof t == "object" && !!t && "tagName" in t && "getAttribute" in t;
}
function getPanelGroupElement(t, n = document) {
return isHTMLElement$1(n) && n.dataset.panelGroupId == t ? n : n.querySelector(`[data-panel-group][data-panel-group-id="${t}"]`) || null;
}
function getResizeHandleElement(t, n = document) {
return n.querySelector(`[${DATA_ATTRIBUTES.resizeHandleId}="${t}"]`) || null;
}
function getResizeHandlePanelIds(t, n, i, a = document) {
let o = getResizeHandleElement(n, a), s = getResizeHandleElementsForGroup(t, a), c = o ? s.indexOf(o) : -1, d = i[c]?.id ?? null, f = i[c + 1]?.id ?? null;
return [d, f];
}
function useWindowSplitterPanelGroupBehavior({ committedValuesRef: t, eagerValuesRef: n, groupId: i, layout: a, panelDataArray: o, panelGroupElement: s, setLayout: c }) {
useRef({ didWarnAboutMissingResizeHandle: !1 }), useIsomorphicLayoutEffect$1(() => {
if (!s) return;
let t = getResizeHandleElementsForGroup(i, s);
for (let n = 0; n < o.length - 1; n++) {
let { valueMax: i, valueMin: s, valueNow: c } = calculateAriaValues({
layout: a,
panelsArray: o,
pivotIndices: [n, n + 1]
}), d = t[n];
if (d != null) {
let t = o[n];
assert(t, `No panel data found for index "${n}"`), d.setAttribute("aria-controls", t.id), d.setAttribute("aria-valuemax", "" + Math.round(i)), d.setAttribute("aria-valuemin", "" + Math.round(s)), d.setAttribute("aria-valuenow", c == null ? "" : "" + Math.round(c));
}
}
return () => {
t.forEach((t, n) => {
t.removeAttribute("aria-controls"), t.removeAttribute("aria-valuemax"), t.removeAttribute("aria-valuemin"), t.removeAttribute("aria-valuenow");
});
};
}, [
i,
a,
o,
s
]), useEffect(() => {
if (!s) return;
let t = n.current;
assert(t, "Eager values not found");
let { panelDataArray: o } = t, d = getPanelGroupElement(i, s);
assert(d != null, `No group found for id "${i}"`);
let f = getResizeHandleElementsForGroup(i, s);
assert(f, `No resize handles found for group id "${i}"`);
let g = f.map((t) => {
let n = t.getAttribute(DATA_ATTRIBUTES.resizeHandleId);
assert(n, "Resize handle element has no handle id attribute");
let [d, f] = getResizeHandlePanelIds(i, n, o, s);
if (d == null || f == null) return () => {};
let g = (t) => {
if (!t.defaultPrevented) switch (t.key) {
case "Enter": {
t.preventDefault();
let f = o.findIndex((t) => t.id === d);
if (f >= 0) {
let t = o[f];
assert(t, `No panel data found for index ${f}`);
let d = a[f], { collapsedSize: g = 0, collapsible: b, minSize: x = 0 } = t.constraints;
if (d != null && b) {
let t = adjustLayoutByDelta({
delta: fuzzyNumbersEqual(d, g) ? x - g : g - d,
initialLayout: a,
panelConstraints: o.map((t) => t.constraints),
pivotIndices: determinePivotIndices(i, n, s),
prevLayout: a,
trigger: "keyboard"
});
a !== t && c(t);
}
}
break;
}
}
};
return t.addEventListener("keydown", g), () => {
t.removeEventListener("keydown", g);
};
});
return () => {
g.forEach((t) => t());
};
}, [
s,
t,
n,
i,
a,
o,
c
]);
}
function areEqual(t, n) {
if (t.length !== n.length) return !1;
for (let i = 0; i < t.length; i++) if (t[i] !== n[i]) return !1;
return !0;
}
function getResizeEventCursorPosition(t, n) {
let i = t === "horizontal", { x: a, y: o } = getResizeEventCoordinates(n);
return i ? a : o;
}
function calculateDragOffsetPercentage(t, n, i, a, o) {
let s = i === "horizontal", c = getResizeHandleElement(n, o);
assert(c, `No resize handle element found for id "${n}"`);
let d = c.getAttribute(DATA_ATTRIBUTES.groupId);
assert(d, "Resize handle element has no group id attribute");
let { initialCursorPosition: f } = a, g = getResizeEventCursorPosition(i, t), b = getPanelGroupElement(d, o);
assert(b, `No group element found for id "${d}"`);
let x = b.getBoundingClientRect(), S = s ? x.width : x.height;
return (g - f) / S * 100;
}
function calculateDeltaPercentage(t, n, i, a, o, s) {
if (isKeyDown(t)) {
let n = i === "horizontal", a = 0;
a = t.shiftKey ? 100 : o ?? 10;
let s = 0;
switch (t.key) {
case "ArrowDown":
s = n ? 0 : a;
break;
case "ArrowLeft":
s = n ? -a : 0;
break;
case "ArrowRight":
s = n ? a : 0;
break;
case "ArrowUp":
s = n ? 0 : -a;
break;
case "End":
s = 100;
break;
case "Home":
s = -100;
break;
}
return s;
} else return a == null ? 0 : calculateDragOffsetPercentage(t, n, i, a, s);
}
function calculateUnsafeDefaultLayout({ panelDataArray: t }) {
let n = Array(t.length), i = t.map((t) => t.constraints), a = 0, o = 100;
for (let s = 0; s < t.length; s++) {
let t = i[s];
assert(t, `Panel constraints not found for index ${s}`);
let { defaultSize: c } = t;
c != null && (a++, n[s] = c, o -= c);
}
for (let s = 0; s < t.length; s++) {
let c = i[s];
assert(c, `Panel constraints not found for index ${s}`);
let { defaultSize: d } = c;
if (d != null) continue;
let f = t.length - a, g = o / f;
a++, n[s] = g, o -= g;
}
return n;
}
function callPanelCallbacks(t, n, i) {
n.forEach((n, a) => {
let o = t[a];
assert(o, `Panel data not found for index ${a}`);
let { callbacks: s, constraints: c, id: d } = o, { collapsedSize: f = 0, collapsible: g } = c, b = i[d];
if (b == null || n !== b) {
i[d] = n;
let { onCollapse: t, onExpand: a, onResize: o } = s;
o && o(n, b), g && (t || a) && (a && (b == null || fuzzyNumbersEqual$1(b, f)) && !fuzzyNumbersEqual$1(n, f) && a(), t && (b == null || !fuzzyNumbersEqual$1(b, f)) && fuzzyNumbersEqual$1(n, f) && t());
}
});
}
function compareLayouts(t, n) {
if (t.length !== n.length) return !1;
for (let i = 0; i < t.length; i++) if (t[i] != n[i]) return !1;
return !0;
}
function computePanelFlexBoxStyle({ defaultSize: t, dragState: n, layout: i, panelData: a, panelIndex: o, precision: s = 3 }) {
let c = i[o], d;
return d = c == null ? t == null ? "1" : t.toFixed(s) : a.length === 1 ? "1" : c.toFixed(s), {
flexBasis: 0,
flexGrow: d,
flexShrink: 1,
overflow: "hidden",
pointerEvents: n === null ? void 0 : "none"
};
}
function debounce(t, n = 10) {
let i = null;
return (...a) => {
i !== null && clearTimeout(i), i = setTimeout(() => {
t(...a);
}, n);
};
}
function initializeDefaultStorage(t) {
try {
if (typeof localStorage < "u") t.getItem = (t) => localStorage.getItem(t), t.setItem = (t, n) => {
localStorage.setItem(t, n);
};
else throw Error("localStorage not supported in this environment");
} catch (n) {
console.error(n), t.getItem = () => null, t.setItem = () => {};
}
}
function getPanelGroupKey(t) {
return `react-resizable-panels:${t}`;
}
function getPanelKey(t) {
return t.map((t) => {
let { constraints: n, id: i, idIsFromProps: a, order: o } = t;
return a ? i : o ? `${o}:${JSON.stringify(n)}` : JSON.stringify(n);
}).sort((t, n) => t.localeCompare(n)).join(",");
}
function loadSerializedPanelGroupState(t, n) {
try {
let i = getPanelGroupKey(t), a = n.getItem(i);
if (a) {
let t = JSON.parse(a);
if (typeof t == "object" && t) return t;
}
} catch {}
return null;
}
function loadPanelGroupState(t, n, i) {
let a = loadSerializedPanelGroupState(t, i) ?? {}, o = getPanelKey(n);
return a[o] ?? null;
}
function savePanelGroupState(t, n, i, a, o) {
let s = getPanelGroupKey(t), c = getPanelKey(n), d = loadSerializedPanelGroupState(t, o) ?? {};
d[c] = {
expandToSizes: Object.fromEntries(i.entries()),
layout: a
};
try {
o.setItem(s, JSON.stringify(d));
} catch (t) {
console.error(t);
}
}
function validatePanelGroupLayout({ layout: t, panelConstraints: n }) {
let i = [...t], a = i.reduce((t, n) => t + n, 0);
if (i.length !== n.length) throw Error(`Invalid ${n.length} panel layout: ${i.map((t) => `${t}%`).join(", ")}`);
if (!fuzzyNumbersEqual(a, 100) && i.length > 0) for (let t = 0; t < n.length; t++) {
let n = i[t];
assert(n != null, `No layout data found for index ${t}`), i[t] = 100 / a * n;
}
let o = 0;
for (let t = 0; t < n.length; t++) {
let a = i[t];
assert(a != null, `No layout data found for index ${t}`);
let s = resizePanel({
panelConstraints: n,
panelIndex: t,
size: a
});
a != s && (o += a - s, i[t] = s);
}
if (!fuzzyNumbersEqual(o, 0)) for (let t = 0; t < n.length; t++) {
let a = i[t];
assert(a != null, `No layout data found for index ${t}`);
let s = a + o, c = resizePanel({
panelConstraints: n,
panelIndex: t,
size: s
});
if (a !== c && (o -= c - a, i[t] = c, fuzzyNumbersEqual(o, 0))) break;
}
return i;
}
var LOCAL_STORAGE_DEBOUNCE_INTERVAL = 100, defaultStorage = {
getItem: (t) => (initializeDefaultStorage(defaultStorage), defaultStorage.getItem(t)),
setItem: (t, n) => {
initializeDefaultStorage(defaultStorage), defaultStorage.setItem(t, n);
}
}, debounceMap = {};
function PanelGroupWithForwardedRef({ autoSaveId: t = null, children: n, className: i = "", direction: a, forwardedRef: o, id: s = null, onLayout: c = null, keyboardResizeBy: d = null, storage: f = defaultStorage, style: g, tagName: b = "div",...x }) {
let S = useUniqueId$1(s), C = useRef(null), [w, E] = useState(null), [O, A] = useState([]), M = useForceUpdate(), F = useRef({}), I = useRef(/* @__PURE__ */ new Map()), R = useRef(0), qA = useRef({
autoSaveId: t,
direction: a,
dragState: w,
id: S,
keyboardResizeBy: d,
onLayout: c,
storage: f
}), V = useRef({
layout: O,
panelDataArray: [],
panelDataArrayChanged: !1
});
useRef({
didLogIdAndOrderWarning: !1,
didLogPanelConstraintsWarning: !1,
prevPanelIds: []
}), useImperativeHandle(o, () => ({
getId: () => qA.current.id,
getLayout: () => {
let { layout: t } = V.current;
return t;
},
setLayout: (t) => {
let { onLayout: n } = qA.current, { layout: i, panelDataArray: a } = V.current, o = validatePanelGroupLayout({
layout: t,
panelConstraints: a.map((t) => t.constraints)
});
areEqual(i, o) || (A(o), V.current.layout = o, n && n(o), callPanelCallbacks(a, o, F.current));
}
}), []), useIsomorphicLayoutEffect$1(() => {
qA.current.autoSaveId = t, qA.current.direction = a, qA.current.dragState = w, qA.current.id = S, qA.current.onLayout = c, qA.current.storage = f;
}), useWindowSplitterPanelGroupBehavior({
committedValuesRef: qA,
eagerValuesRef: V,
groupId: S,
layout: O,
panelDataArray: V.current.panelDataArray,
setLayout: A,
panelGroupElement: C.current
}), useEffect(() => {
let { panelDataArray: n } = V.current;
if (t) {
if (O.length === 0 || O.length !== n.length) return;
let i = debounceMap[t];
i ?? (i = debounce(savePanelGroupState, LOCAL_STORAGE_DEBOUNCE_INTERVAL), debounceMap[t] = i);
let a = [...n], o = new Map(I.current);
i(t, a, o, O, f);
}
}, [
t,
O,
f
]), useEffect(() => {});
let q = useCallback((t) => {
let { onLayout: n } = qA.current, { layout: i, panelDataArray: a } = V.current;
if (t.constraints.collapsible) {
let o = a.map((t) => t.constraints), { collapsedSize: s = 0, panelSize: c, pivotIndices: d } = panelDataHelper(a, t, i);
if (assert(c != null, `Panel size not found for panel "${t.id}"`), !fuzzyNumbersEqual$1(c, s)) {
I.current.set(t.id, c);
let f = findPanelDataIndex(a, t) === a.length - 1 ? c - s : s - c, g = adjustLayoutByDelta({
delta: f,
initialLayout: i,
panelConstraints: o,
pivotIndices: d,
prevLayout: i,
trigger: "imperative-api"
});
compareLayouts(i, g) || (A(g), V.current.layout = g, n && n(g), callPanelCallbacks(a, g, F.current));
}
}
}, []), JA = useCallback((t, n) => {
let { onLayout: i } = qA.current, { layout: a, panelDataArray: o } = V.current;
if (t.constraints.collapsible) {
let s = o.map((t) => t.constraints), { collapsedSize: c = 0, panelSize: d = 0, minSize: f = 0, pivotIndices: g } = panelDataHelper(o, t, a), b = n ?? f;
if (fuzzyNumbersEqual$1(d, c)) {
let n = I.current.get(t.id), c = n != null && n >= b ? n : b, f = findPanelDataIndex(o, t) === o.length - 1 ? d - c : c - d, x = adjustLayoutByDelta({
delta: f,
initialLayout: a,
panelConstraints: s,
pivotIndices: g,
prevLayout: a,
trigger: "imperative-api"
});
compareLayouts(a, x) || (A(x), V.current.layout = x, i && i(x), callPanelCallbacks(o, x, F.current));
}
}
}, []), YA = useCallback((t) => {
let { layout: n, panelDataArray: i } = V.current, { panelSize: a } = panelDataHelper(i, t, n);
return assert(a != null, `Panel size not found for panel "${t.id}"`), a;
}, []), XA = useCallback((t, n) => {
let { panelDataArray: i } = V.current, a = findPanelDataIndex(i, t);
return computePanelFlexBoxStyle({
defaultSize: n,
dragState: w,
layout: O,
panelData: i,
panelIndex: a
});
}, [w, O]), ZA = useCallback((t) => {
let { layout: n, panelDataArray: i } = V.current, { collapsedSize: a = 0, collapsible: o, panelSize: s } = panelDataHelper(i, t, n);
return assert(s != null, `Panel size not found for panel "${t.id}"`), o === !0 && fuzzyNumbersEqual$1(s, a);
}, []), QA = useCallback((t) => {
let { layout: n, panelDataArray: i } = V.current, { collapsedSize: a = 0, collapsible: o, panelSize: s } = panelDataHelper(i, t, n);
return assert(s != null, `Panel size not found for panel "${t.id}"`), !o || fuzzyCompareNumbers(s, a) > 0;
}, []), $A = useCallback((t) => {
let { panelDataArray: n } = V.current;
n.push(t), n.sort((t, n) => {
let i = t.order, a = n.order;
return i == null && a == null ? 0 : i == null ? -1 : a == null ? 1 : i - a;
}), V.current.panelDataArrayChanged = !0, M();
}, [M]);
useIsomorphicLayoutEffect$1(() => {
if (V.current.panelDataArrayChanged) {
V.current.panelDataArrayChanged = !1;
let { autoSaveId: t, onLayout: n, storage: i } = qA.current, { layout: a, panelDataArray: o } = V.current, s = null;
if (t) {
let n = loadPanelGroupState(t, o, i);
n && (I.current = new Map(Object.entries(n.expandToSizes)), s = n.layout);
}
s ??= calculateUnsafeDefaultLayout({ panelDataArray: o });
let c = validatePanelGroupLayout({
layout: s,
panelConstraints: o.map((t) => t.constraints)
});
areEqual(a, c) || (A(c), V.current.layout = c, n && n(c), callPanelCallbacks(o, c, F.current));
}
}), useIsomorphicLayoutEffect$1(() => {
let t = V.current;
return () => {
t.layout = [];
};
}, []);
let ej = useCallback((t) => {
let n = !1, i = C.current;
return i && window.getComputedStyle(i, null).getPropertyValue("direction") === "rtl" && (n = !0), function(i) {
i.preventDefault();
let a = C.current;
if (!a) return () => null;
let { direction: o, dragState: s, id: c, keyboardResizeBy: d, onLayout: f } = qA.current, { layout: g, panelDataArray: b } = V.current, { initialLayout: x } = s ?? {}, S = determinePivotIndices(c, t, a), w = calculateDeltaPercentage(i, t, o, s, d, a), E = o === "horizontal";
E && n && (w = -w);
let O = b.map((t) => t.constraints), M = adjustLayoutByDelta({
delta: w,
initialLayout: x ?? g,
panelConstraints: O,
pivotIndices: S,
prevLayout: g,
trigger: isKeyDown(i) ? "keyboard" : "mouse-or-touch"
}), I = !compareLayouts(g, M);
(isPointerEvent(i) || isMouseEvent(i)) && R.current != w && (R.current = w, !I && w !== 0 ? E ? reportConstraintsViolation(t, w < 0 ? EXCEEDED_HORIZONTAL_MIN : EXCEEDED_HORIZONTAL_MAX) : reportConstraintsViolation(t, w < 0 ? EXCEEDED_VERTICAL_MIN : EXCEEDED_VERTICAL_MAX) : reportConstraintsViolation(t, 0)), I && (A(M), V.current.layout = M, f && f(M), callPanelCallbacks(b, M, F.current));
};
}, []), tj = useCallback((t, n) => {
let { onLayout: i } = qA.current, { layout: a, panelDataArray: o } = V.current, s = o.map((t) => t.constraints), { panelSize: c, pivotIndices: d } = panelDataHelper(o, t, a);
assert(c != null, `Panel size not found for panel "${t.id}"`);
let f = findPanelDataIndex(o, t) === o.length - 1 ? c - n : n - c, g = adjustLayoutByDelta({
delta: f,
initialLayout: a,
panelConstraints: s,
pivotIndices: d,
prevLayout: a,
trigger: "imperative-api"
});
compareLayouts(a, g) || (A(g), V.current.layout = g, i && i(g), callPanelCallbacks(o, g, F.current));
}, []), nj = useCallback((t, n) => {
let { layout: i, panelDataArray: a } = V.current, { collapsedSize: o = 0, collapsible: s } = n, { collapsedSize: c = 0, collapsible: d, maxSize: f = 100, minSize: g = 0 } = t.constraints, { panelSize: b } = panelDataHelper(a, t, i);
b != null && (s && d && fuzzyNumbersEqual$1(b, o) ? fuzzyNumbersEqual$1(o, c) || tj(t, c) : b < g ? tj(t, g) : b > f && tj(t, f));
}, [tj]), rj = useCallback((t, n) => {
let { direction: i } = qA.current, { layout: a } = V.current;
if (!C.current) return;
let o = getResizeHandleElement(t, C.current);
assert(o, `Drag handle element not found for id "${t}"`);
let s = getResizeEventCursorPosition(i, n);
E({
dragHandleId: t,
dragHandleRect: o.getBoundingClientRect(),
initialCursorPosition: s,
initialLayout: a
});
}, []), ij = useCallback(() => {
E(null);
}, []), aj = useCallback((t) => {
let { panelDataArray: n } = V.current, i = findPanelDataIndex(n, t);
i >= 0 && (n.splice(i, 1), delete F.current[t.id], V.current.panelDataArrayChanged = !0, M());
}, [M]), oj = useMemo(() => ({
collapsePanel: q,
direction: a,
dragState: w,
expandPanel: JA,
getPanelSize: YA,
getPanelStyle: XA,
groupId: S,
isPanelCollapsed: ZA,
isPanelExpanded: QA,
reevaluatePanelConstraints: nj,
registerPanel: $A,
registerResizeHandle: ej,
resizePanel: tj,
startDragging: rj,
stopDragging: ij,
unregisterPanel: aj,
panelGroupElement: C.current
}), [
q,
w,
a,
JA,
YA,
XA,
S,
ZA,
QA,
nj,
$A,
ej,
tj,
rj,
ij,
aj
]), sj = {
display: "flex",
flexDirection: a === "horizontal" ? "row" : "column",
height: "100%",
overflow: "hidden",
width: "100%"
};
return createElement(PanelGroupContext.Provider, { value: oj }, createElement(b, {
...x,
children: n,
className: i,
id: s,
ref: C,
style: {
...sj,
...g
},
[DATA_ATTRIBUTES.group]: "",
[DATA_ATTRIBUTES.groupDirection]: a,
[DATA_ATTRIBUTES.groupId]: S
}));
}
var PanelGroup = forwardRef((t, n) => createElement(PanelGroupWithForwardedRef, {
...t,
forwardedRef: n
}));
PanelGroupWithForwardedRef.displayName = "PanelGroup", PanelGroup.displayName = "forwardRef(PanelGroup)";
function findPanelDataIndex(t, n) {
return t.findIndex((t) => t === n || t.id === n.id);
}
function panelDataHelper(t, n, i) {
let a = findPanelDataIndex(t, n), o = a === t.length - 1 ? [a - 1, a] : [a, a + 1], s = i[a];
return {
...n.constraints,
panelSize: s,
pivotIndices: o
};
}
function useWindowSplitterResizeHandlerBehavior({ disabled: t, handleId: n, resizeHandler: i, panelGroupElement: a }) {
useEffect(() => {
if (t || i == null || a == null) return;
let o = getResizeHandleElement(n, a);
if (o == null) return;
let s = (t) => {
if (!t.defaultPrevented) switch (t.key) {
case "ArrowDown":
case "ArrowLeft":
case "ArrowRight":
case "ArrowUp":
case "End":
case "Home":
t.preventDefault(), i(t);
break;
case "F6": {
t.preventDefault();
let i = o.getAttribute(DATA_ATTRIBUTES.groupId);
assert(i, `No group element found for id "${i}"`);
let s = getResizeHandleElementsForGroup(i, a), c = getResizeHandleElementIndex(i, n, a);
assert(c !== null, `No resize element found for id "${n}"`);
let d = t.shiftKey ? c > 0 ? c - 1 : s.length - 1 : c + 1 < s.length ? c + 1 : 0;
s[d].focus();
break;
}
}
};
return o.addEventListener("keydown", s), () => {
o.removeEventListener("keydown", s);
};
}, [
a,
t,
n,
i
]);
}
function PanelResizeHandle({ children: t = null, className: n = "", disabled: i = !1, hitAreaMargins: a, id: o, onBlur: s, onClick: c, onDragging: d, onFocus: f, onPointerDown: g, onPointerUp: b, style: x = {}, tabIndex: S = 0, tagName: C = "div",...w }) {
let E = useRef(null), O = useRef({
onClick: c,
onDragging: d,
onPointerDown: g,
onPointerUp: b
});
useEffect(() => {
O.current.onClick = c, O.current.onDragging = d, O.current.onPointerDown = g, O.current.onPointerUp = b;
});
let A = useContext(PanelGroupContext);
if (A === null) throw Error("PanelResizeHandle components must be rendered within a PanelGroup container");
let { direction: M, groupId: F, registerResizeHandle: I, startDragging: R, stopDragging: qA, panelGroupElement: V } = A, q = useUniqueId$1(o), [JA, YA] = useState("inactive"), [XA, ZA] = useState(!1), [QA, $A] = useState(null), ej = useRef({ state: JA });
useIsomorphicLayoutEffect$1(() => {
ej.current.state = JA;
}), useEffect(() => {
if (i) $A(null);
else {
let t = I(q);
$A(() => t);
}
}, [
i,
q,
I
]);
let tj = a?.coarse ?? 15, nj = a?.fine ?? 5;
useEffect(() => {
if (i || QA == null) return;
let t = E.current;
assert(t, "Element ref not attached");
let n = !1;
return registerResizeHandle(q, t, M, {
coarse: tj,
fine: nj
}, (t, i, a) => {
if (!i) {
YA("inactive");
return;
}
switch (t) {
case "down": {
YA("drag"), n = !1, assert(a, "Expected event to be defined for \"down\" action"), R(q, a);
let { onDragging: t, onPointerDown: i } = O.current;
t?.(!0), i?.();
break;
}
case "move": {
let { state: t } = ej.current;
n = !0, t !== "drag" && YA("hover"), assert(a, "Expected event to be defined for \"move\" action"), QA(a);
break;
}
case "up": {
YA("hover"), qA();
let { onClick: t, onDragging: i, onPointerUp: a } = O.current;
i?.(!1), a?.(), n || t?.();
break;
}
}
});
}, [
tj,
M,
i,
nj,
I,
q,
QA,
R,
qA
]), useWindowSplitterResizeHandlerBehavior({
disabled: i,
handleId: q,
resizeHandler: QA,
panelGroupElement: V
});
let rj = {
touchAction: "none",
userSelect: "none"
};
return createElement(C, {
...w,
children: t,
className: n,
id: o,
onBlur: () => {
ZA(!1), s?.();
},
onFocus: () => {
ZA(!0), f?.();
},
ref: E,
role: "separator",
style: {
...rj,
...x
},
tabIndex: S,
[DATA_ATTRIBUTES.groupDirection]: M,
[DATA_ATTRIBUTES.groupId]: F,
[DATA_ATTRIBUTES.resizeHandle]: "",
[DATA_ATTRIBUTES.resizeHandleActive]: JA === "drag" ? "pointer" : XA ? "keyboard" : void 0,
[DATA_ATTRIBUTES.resizeHandleEnabled]: !i,
[DATA_ATTRIBUTES.resizeHandleId]: q,
[DATA_ATTRIBUTES.resizeHandleState]: JA
});
}
PanelResizeHandle.displayName = "PanelResizeHandle";
function ResizablePanelGroup({ className: t,...n }) {
return /* @__PURE__ */ jsx(PanelGroup, {
"data-slot": "resizable-panel-group",
className: cn("flex size-full data-[panel-group-direction=vertical]:flex-col", t),
...n
});
}
function ResizablePanel({ ...t }) {
return /* @__PURE__ */ jsx(Panel, {
"data-slot": "resizable-panel",
...t
});
}
function ResizableHandle({ withHandle: t, className: n,...i }) {
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", n),
...i,
children: t && /* @__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 = ({ ...t }) => /* @__PURE__ */ jsx(Toaster$1, {
theme: t.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)"
},
...t
}), 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$1.forwardRef((t, n) => /* @__PURE__ */ jsx(Primitive.span, {
...t,
ref: n,
style: {
...VISUALLY_HIDDEN_STYLES,
...t.style
}
}));
VisuallyHidden.displayName = NAME$1;
var Root$5 = 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 = (t) => {
let { __scopeTooltip: n, delayDuration: i = DEFAULT_DELAY_DURATION, skipDelayDuration: a = 300, disableHoverableContent: o = !1, children: s } = t, c = React$1.useRef(!0), d = React$1.useRef(!1), f = React$1.useRef(0);
return React$1.useEffect(() => {
let t = f.current;
return () => window.clearTimeout(t);
}, []), /* @__PURE__ */ jsx(TooltipProviderContextProvider, {
scope: n,
isOpenDelayedRef: c,
delayDuration: i,
onOpen: React$1.useCallback(() => {
window.clearTimeout(f.current), c.current = !1;
}, []),
onClose: React$1.useCallback(() => {
window.clearTimeout(f.current), f.current = window.setTimeout(() => c.current = !0, a);
}, [a]),
isPointerInTransitRef: d,
onPointerInTransitChange: React$1.useCallback((t) => {
d.current = t;
}, []),
disableHoverableContent: o,
children: s
});
};
TooltipProvider$1.displayName = PROVIDER_NAME;
var TOOLTIP_NAME = "Tooltip", [TooltipContextProvider, useTooltipContext] = createTooltipContext(TOOLTIP_NAME), Tooltip$1 = (t) => {
let { __scopeTooltip: n, children: i, open: a, defaultOpen: o, onOpenChange: s, disableHoverableContent: c, delayDuration: d } = t, f = useTooltipProviderContext(TOOLTIP_NAME, t.__scopeTooltip), g = usePopperScope$1(n), [b, x] = React$1.useState(null), S = useId$1(), C = React$1.useRef(0), w = c ?? f.disableHoverableContent, E = d ?? f.delayDuration, O = React$1.useRef(!1), [A, M] = useControllableState({
prop: a,
defaultProp: o ?? !1,
onChange: (t) => {
t ? (f.onOpen(), document.dispatchEvent(new CustomEvent(TOOLTIP_OPEN))) : f.onClose(), s?.(t);
},
caller: TOOLTIP_NAME
}), F = React$1.useMemo(() => A ? O.current ? "delayed-open" : "instant-open" : "closed", [A]), I = React$1.useCallback(() => {
window.clearTimeout(C.current), C.current = 0, O.current = !1, M(!0);
}, [M]), R = React$1.useCallback(() => {
window.clearTimeout(C.current), C.current = 0, M(!1);
}, [M]), qA = React$1.useCallback(() => {
window.clearTimeout(C.current), C.current = window.setTimeout(() => {
O.current = !0, M(!0), C.current = 0;
}, E);
}, [E, M]);
return React$1.useEffect(() => () => {
C.current &&= (window.clearTimeout(C.current), 0);
}, []), /* @__PURE__ */ jsx(Root2$6, {
...g,
children: /* @__PURE__ */ jsx(TooltipContextProvider, {
scope: n,
contentId: S,
open: A,
stateAttribute: F,
trigger: b,
onTriggerChange: x,
onTriggerEnter: React$1.useCallback(() => {
f.isOpenDelayedRef.current ? qA() : I();
}, [
f.isOpenDelayedRef,
qA,
I
]),
onTriggerLeave: React$1.useCallback(() => {
w ? R() : (window.clearTimeout(C.current), C.current = 0);
}, [R, w]),
onOpen: I,
onClose: R,
disableHoverableContent: w,
children: i
})
});
};
Tooltip$1.displayName = TOOLTIP_NAME;
var TRIGGER_NAME$6 = "TooltipTrigger", TooltipTrigger$1 = React$1.forwardRef((t, n) => {
let { __scopeTooltip: i,...a } = t, o = useTooltipContext(TRIGGER_NAME$6, i), s = useTooltipProviderContext(TRIGGER_NAME$6, i), c = usePopperScope$1(i), d = React$1.useRef(null), f = useComposedRefs$1(n, d, o.onTriggerChange), g = React$1.useRef(!1), b = React$1.useRef(!1), x = React$1.useCallback(() => g.current = !1, []);
return React$1.useEffect(() => () => document.removeEventListener("pointerup", x), [x]), /* @__PURE__ */ jsx(Anchor, {
asChild: !0,
...c,
children: /* @__PURE__ */ jsx(Primitive.button, {
"aria-describedby": o.open ? o.contentId : void 0,
"data-state": o.stateAttribute,
...a,
ref: f,
onPointerMove: composeEventHandlers(t.onPointerMove, (t) => {
t.pointerType !== "touch" && !b.current && !s.isPointerInTransitRef.current && (o.onTriggerEnter(), b.current = !0);
}),
onPointerLeave: composeEventHandlers(t.onPointerLeave, () => {
o.onTriggerLeave(), b.current = !1;
}),
onPointerDown: composeEventHandlers(t.onPointerDown, () => {
o.open && o.onClose(), g.current = !0, document.addEventListener("pointerup", x, { once: !0 });
}),
onFocus: composeEventHandlers(t.onFocus, () => {
g.current || o.onOpen();
}),
onBlur: composeEventHandlers(t.onBlur, o.onClose),
onClick: composeEventHandlers(t.onClick, o.onClose)
})
});
});
TooltipTrigger$1.displayName = TRIGGER_NAME$6;
var PORTAL_NAME$3 = "TooltipPortal", [PortalProvider, usePortalContext] = createTooltipContext(PORTAL_NAME$3, { forceMount: void 0 }), TooltipPortal = (t) => {
let { __scopeTooltip: n, forceMount: i, children: a, container: o } = t, s = useTooltipContext(PORTAL_NAME$3, n);
return /* @__PURE__ */ jsx(PortalProvider, {
scope: n,
forceMount: i,
children: /* @__PURE__ */ jsx(Presence, {
present: i || s.open,
children: /* @__PURE__ */ jsx(Portal, {
asChild: !0,
container: o,
children: a
})
})
});
};
TooltipPortal.displayName = PORTAL_NAME$3;
var CONTENT_NAME$6 = "TooltipContent", TooltipContent$1 = React$1.forwardRef((t, n) => {
let i = usePortalContext(CONTENT_NAME$6, t.__scopeTooltip), { forceMount: a = i.forceMount, side: o = "top",...s } = t, c = useTooltipContext(CONTENT_NAME$6, t.__scopeTooltip);
return /* @__PURE__ */ jsx(Presence, {
present: a || c.open,
children: c.disableHoverableContent ? /* @__PURE__ */ jsx(TooltipContentImpl, {
side: o,
...s,
ref: n
}) : /* @__PURE__ */ jsx(TooltipContentHoverable, {
side: o,
...s,
ref: n
})
});
}), TooltipContentHoverable = React$1.forwardRef((t, n) => {
let i = useTooltipContext(CONTENT_NAME$6, t.__scopeTooltip), a = useTooltipProviderContext(CONTENT_NAME$6, t.__scopeTooltip), o = React$1.useRef(null), s = useComposedRefs$1(n, o), [c, d] = React$1.useState(null), { trigger: f, onClose: g } = i, b = o.current, { onPointerInTransitChange: x } = a, S = React$1.useCallback(() => {
d(null), x(!1);
}, [x]), C = React$1.useCallback((t, n) => {
let i = t.currentTarget, a = {
x: t.clientX,
y: t.clientY
}, o = getExitSideFromRect(a, i.getBoundingClientRect()), s = getPaddedExitPoints(a, o), c = getPointsFromRect(n.getBoundingClientRect()), f = getHull([...s, ...c]);
d(f), x(!0);
}, [x]);
return React$1.useEffect(() => () => S(), [S]), React$1.useEffect(() => {
if (f && b) {
let t = (t) => C(t, b), n = (t) => C(t, f);
return f.addEventListener("pointerleave", t), b.addEventListener("pointerleave", n), () => {
f.removeEventListener("pointerleave", t), b.removeEventListener("pointerleave", n);
};
}
}, [
f,
b,
C,
S
]), React$1.useEffect(() => {
if (c) {
let t = (t) => {
let n = t.target, i = {
x: t.clientX,
y: t.clientY
}, a = f?.contains(n) || b?.contains(n), o = !isPointInPolygon(i, c);
a ? S() : o && (S(), g());
};
return document.addEventListener("pointermove", t), () => document.removeEventListener("pointermove", t);
}
}, [
f,
b,
c,
g,
S
]), /* @__PURE__ */ jsx(TooltipContentImpl, {
...t,
ref: s
});
}), [VisuallyHiddenContentContextProvider, useVisuallyHiddenContentContext] = createTooltipContext(TOOLTIP_NAME, { isInside: !1 }), Slottable$1 = /* @__PURE__ */ createSlottable("TooltipContent"), TooltipContentImpl = React$1.forwardRef((t, n) => {
let { __scopeTooltip: i, children: a, "aria-label": o, onEscapeKeyDown: s, onPointerDownOutside: c,...d } = t, f = useTooltipContext(CONTENT_NAME$6, i), g = usePopperScope$1(i), { onClose: b } = f;
return React$1.useEffect(() => (document.addEventListener(TOOLTIP_OPEN, b), () => document.removeEventListener(TOOLTIP_OPEN, b)), [b]), React$1.useEffect(() => {
if (f.trigger) {
let t = (t) => {
t.target?.contains(f.trigger) && b();
};
return window.addEventListener("scroll", t, { capture: !0 }), () => window.removeEventListener("scroll", t, { capture: !0 });
}
}, [f.trigger, b]), /* @__PURE__ */ jsx(DismissableLayer, {
asChild: !0,
disableOutsidePointerEvents: !1,
onEscapeKeyDown: s,
onPointerDownOutside: c,
onFocusOutside: (t) => t.preventDefault(),
onDismiss: b,
children: /* @__PURE__ */ jsxs(Content$1, {
"data-state": f.stateAttribute,
...g,
...d,
ref: n,
style: {
...d.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: a }), /* @__PURE__ */ jsx(VisuallyHiddenContentContextProvider, {
scope: i,
isInside: !0,
children: /* @__PURE__ */ jsx(Root$5, {
id: f.contentId,
role: "tooltip",
children: o || a
})
})]
})
});
});
TooltipContent$1.displayName = CONTENT_NAME$6;
var ARROW_NAME$2 = "TooltipArrow", TooltipArrow = React$1.forwardRef((t, n) => {
let { __scopeTooltip: i,...a } = t, o = usePopperScope$1(i);
return useVisuallyHiddenContentContext(ARROW_NAME$2, i).isInside ? null : /* @__PURE__ */ jsx(Arrow, {
...o,
...a,
ref: n
});
});
TooltipArrow.displayName = ARROW_NAME$2;
function getExitSideFromRect(t, n) {
let i = Math.abs(n.top - t.y), a = Math.abs(n.bottom - t.y), o = Math.abs(n.right - t.x), s = Math.abs(n.left - t.x);
switch (Math.min(i, a, o, s)) {
case s: return "left";
case o: return "right";
case i: return "top";
case a: return "bottom";
default: throw Error("unreachable");
}
}
function getPaddedExitPoints(t, n, i = 5) {
let a = [];
switch (n) {
case "top":
a.push({
x: t.x - i,
y: t.y + i
}, {
x: t.x + i,
y: t.y + i
});
break;
case "bottom":
a.push({
x: t.x - i,
y: t.y - i
}, {
x: t.x + i,
y: t.y - i
});
break;
case "left":
a.push({
x: t.x + i,
y: t.y - i
}, {
x: t.x + i,
y: t.y + i
});
break;
case "right":
a.push({
x: t.x - i,
y: t.y - i
}, {
x: t.x - i,
y: t.y + i
});
break;
}
return a;
}
function getPointsFromRect(t) {
let { top: n, right: i, bottom: a, left: o } = t;
return [
{
x: o,
y: n
},
{
x: i,
y: n
},
{
x: i,
y: a
},
{
x: o,
y: a
}
];
}
function isPointInPolygon(t, n) {
let { x: i, y: a } = t, o = !1;
for (let t = 0, s = n.length - 1; t < n.length; s = t++) {
let c = n[t], d = n[s], f = c.x, g = c.y, b = d.x, x = d.y;
g > a != x > a && i < (b - f) * (a - g) / (x - g) + f && (o = !o);
}
return o;
}
function getHull(t) {
let n = t.slice();
return n.sort((t, n) => t.x < n.x ? -1 : t.x > n.x ? 1 : t.y < n.y ? -1 : t.y > n.y ? 1 : 0), getHullPresorted(n);
}
function getHullPresorted(t) {
if (t.length <= 1) return t.slice();
let n = [];
for (let i = 0; i < t.length; i++) {
let a = t[i];
for (; n.length >= 2;) {
let t = n[n.length - 1], i = n[n.length - 2];
if ((t.x - i.x) * (a.y - i.y) >= (t.y - i.y) * (a.x - i.x)) n.pop();
else break;
}
n.push(a);
}
n.pop();
let i = [];
for (let n = t.length - 1; n >= 0; n--) {
let a = t[n];
for (; i.length >= 2;) {
let t = i[i.length - 1], n = i[i.length - 2];
if ((t.x - n.x) * (a.y - n.y) >= (t.y - n.y) * (a.x - n.x)) i.pop();
else break;
}
i.push(a);
}
return i.pop(), n.length === 1 && i.length === 1 && n[0].x === i[0].x && n[0].y === i[0].y ? n : n.concat(i);
}
var Provider = TooltipProvider$1, Root3 = Tooltip$1, Trigger$3 = TooltipTrigger$1, Portal$2 = TooltipPortal, Content2$3 = TooltipContent$1, Arrow2 = TooltipArrow;
function TooltipProvider({ delayDuration: t = 0,...n }) {
return /* @__PURE__ */ jsx(Provider, {
"data-slot": "tooltip-provider",
delayDuration: t,
...n
});
}
function Tooltip({ ...t }) {
return /* @__PURE__ */ jsx(TooltipProvider, { children: /* @__PURE__ */ jsx(Root3, {
"data-slot": "tooltip",
...t
}) });
}
function TooltipTrigger({ ...t }) {
return /* @__PURE__ */ jsx(Trigger$3, {
"data-slot": "tooltip-trigger",
...t
});
}
function TooltipContent({ className: t, sideOffset: n = 0, children: i,...a }) {
let { container: o } = useLaboratory();
return /* @__PURE__ */ jsx(Fragment$1, { children: /* @__PURE__ */ jsx(Portal$2, {
container: o,
children: /* @__PURE__ */ jsxs(Content2$3, {
"data-slot": "tooltip-content",
sideOffset: n,
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-150 w-fit origin-[var(--radix-tooltip-content-transform-origin)] text-balance rounded-md px-3 py-1.5 text-xs", t),
...a,
children: [i, /* @__PURE__ */ jsx(Arrow2, { className: "bg-foreground fill-foreground z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]" })]
})
}) });
}
const GraphQLIcon = (t) => /* @__PURE__ */ jsxs("svg", {
width: "100",
height: "100",
viewBox: "0 0 100 100",
fill: "none",
xmlns: "http://www.w3.org/2000/svg",
...t,
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 = (t) => {
let { __scopeAlertDialog: n,...i } = t, a = useDialogScope(n);
return /* @__PURE__ */ jsx(Root$10, {
...a,
...i,
modal: !0
});
};
AlertDialog$1.displayName = ROOT_NAME$1;
var TRIGGER_NAME$5 = "AlertDialogTrigger", AlertDialogTrigger$1 = React$1.forwardRef((t, n) => {
let { __scopeAlertDialog: i,...a } = t, o = useDialogScope(i);
return /* @__PURE__ */ jsx(Trigger$5, {
...o,
...a,
ref: n
});
});
AlertDialogTrigger$1.displayName = TRIGGER_NAME$5;
var PORTAL_NAME$2 = "AlertDialogPortal", AlertDialogPortal$1 = (t) => {
let { __scopeAlertDialog: n,...i } = t, a = useDialogScope(n);
return /* @__PURE__ */ jsx(Portal$4, {
...a,
...i
});
};
AlertDialogPortal$1.displayName = PORTAL_NAME$2;
var OVERLAY_NAME$1 = "AlertDialogOverlay", AlertDialogOverlay$1 = React$1.forwardRef((t, n) => {
let { __scopeAlertDialog: i,...a } = t, o = useDialogScope(i);
return /* @__PURE__ */ jsx(Overlay, {
...o,
...a,
ref: n
});
});
AlertDialogOverlay$1.displayName = OVERLAY_NAME$1;
var CONTENT_NAME$5 = "AlertDialogContent", [AlertDialogContentProvider, useAlertDialogContentContext] = createAlertDialogContext(CONTENT_NAME$5), Slottable = /* @__PURE__ */ createSlottable("AlertDialogContent"), AlertDialogContent$1 = React$1.forwardRef((t, n) => {
let { __scopeAlertDialog: i, children: a,...o } = t, s = useDialogScope(i), c = React$1.useRef(null), d = useComposedRefs$1(n, c), f = React$1.useRef(null);
return /* @__PURE__ */ jsx(WarningProvider, {
contentName: CONTENT_NAME$5,
titleName: TITLE_NAME,
docsSlug: "alert-dialog",
children: /* @__PURE__ */ jsx(AlertDialogContentProvider, {
scope: i,
cancelRef: f,
children: /* @__PURE__ */ jsxs(Content$2, {
role: "alertdialog",
...s,
...o,
ref: d,
onOpenAutoFocus: composeEventHandlers(o.onOpenAutoFocus, (t) => {
t.preventDefault(), f.current?.focus({ preventScroll: !0 });
}),
onPointerDownOutside: (t) => t.preventDefault(),
onInteractOutside: (t) => t.preventDefault(),
children: [/* @__PURE__ */ jsx(Slottable, { children: a }), /* @__PURE__ */ jsx(DescriptionWarning, { contentRef: c })]
})
})
});
});
AlertDialogContent$1.displayName = CONTENT_NAME$5;
var TITLE_NAME = "AlertDialogTitle", AlertDialogTitle$1 = React$1.forwardRef((t, n) => {
let { __scopeAlertDialog: i,...a } = t, o = useDialogScope(i);
return /* @__PURE__ */ jsx(Title, {
...o,
...a,
ref: n
});
});
AlertDialogTitle$1.displayName = TITLE_NAME;
var DESCRIPTION_NAME = "AlertDialogDescription", AlertDialogDescription$1 = React$1.forwardRef((t, n) => {
let { __scopeAlertDialog: i,...a } = t, o = useDialogScope(i);
return /* @__PURE__ */ jsx(Description, {
...o,
...a,
ref: n
});
});
AlertDialogDescription$1.displayName = DESCRIPTION_NAME;
var ACTION_NAME = "AlertDialogAction", AlertDialogAction$1 = React$1.forwardRef((t, n) => {
let { __scopeAlertDialog: i,...a } = t, o = useDialogScope(i);
return /* @__PURE__ */ jsx(Close, {
...o,
...a,
ref: n
});
});
AlertDialogAction$1.displayName = ACTION_NAME;
var CANCEL_NAME = "AlertDialogCancel", AlertDialogCancel$1 = React$1.forwardRef((t, n) => {
let { __scopeAlertDialog: i,...a } = t, { cancelRef: o } = useAlertDialogContentContext(CANCEL_NAME, i), s = useDialogScope(i), c = useComposedRefs$1(n, o);
return /* @__PURE__ */ jsx(Close, {
...s,
...a,
ref: c
});
});
AlertDialogCancel$1.displayName = CANCEL_NAME;
var DescriptionWarning = ({ contentRef: t }) => {
let n = `\`${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$1.useEffect(() => {
document.getElementById(t.current?.getAttribute("aria-describedby")) || console.warn(n);
}, [n, t]), null;
}, Root2$4 = 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({ ...t }) {
return /* @__PURE__ */ jsx(Root2$4, {
"data-slot": "alert-dialog",
...t
});
}
function AlertDialogTrigger({ ...t }) {
return /* @__PURE__ */ jsx(Trigger2, {
"data-slot": "alert-dialog-trigger",
...t
});
}
function AlertDialogPortal({ ...t }) {
return /* @__PURE__ */ jsx(Portal2$1, {
"data-slot": "alert-dialog-portal",
...t
});
}
function AlertDialogOverlay({ className: t,...n }) {
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", t),
...n
});
}
function AlertDialogContent({ className: t,...n }) {
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", t),
...n
})] });
}
function AlertDialogHeader({ className: t,...n }) {
return /* @__PURE__ */ jsx("div", {
"data-slot": "alert-dialog-header",
className: cn("flex flex-col gap-2 text-center sm:text-left", t),
...n
});
}
function AlertDialogFooter({ className: t,...n }) {
return /* @__PURE__ */ jsx("div", {
"data-slot": "alert-dialog-footer",
className: cn("flex flex-col-reverse gap-2 sm:flex-row sm:justify-end", t),
...n
});
}
function AlertDialogTitle({ className: t,...n }) {
return /* @__PURE__ */ jsx(Title2, {
"data-slot": "alert-dialog-title",
className: cn("text-lg font-semibold", t),
...n
});
}
function AlertDialogDescription({ className: t,...n }) {
return /* @__PURE__ */ jsx(Description2, {
"data-slot": "alert-dialog-description",
className: cn("text-muted-foreground text-sm", t),
...n
});
}
function AlertDialogAction({ className: t,...n }) {
return /* @__PURE__ */ jsx(Action$1, {
className: cn(buttonVariants(), t),
...n
});
}
function AlertDialogCancel({ className: t,...n }) {
return /* @__PURE__ */ jsx(Cancel, {
className: cn(buttonVariants({ variant: "outline" }), t),
...n
});
}
var COLLAPSIBLE_NAME = "Collapsible", [createCollapsibleContext, createCollapsibleScope] = createContextScope(COLLAPSIBLE_NAME), [CollapsibleProvider, useCollapsibleContext] = createCollapsibleContext(COLLAPSIBLE_NAME), Collapsible$1 = React$1.forwardRef((t, n) => {
let { __scopeCollapsible: i, open: a, defaultOpen: o, disabled: s, onOpenChange: c,...d } = t, [f, g] = useControllableState({
prop: a,
defaultProp: o ?? !1,
onChange: c,
caller: COLLAPSIBLE_NAME
});
return /* @__PURE__ */ jsx(CollapsibleProvider, {
scope: i,
disabled: s,
contentId: useId$1(),
open: f,
onOpenToggle: React$1.useCallback(() => g((t) => !t), [g]),
children: /* @__PURE__ */ jsx(Primitive.div, {
"data-state": getState$3(f),
"data-disabled": s ? "" : void 0,
...d,
ref: n
})
});
});
Collapsible$1.displayName = COLLAPSIBLE_NAME;
var TRIGGER_NAME$4 = "CollapsibleTrigger", CollapsibleTrigger$1 = React$1.forwardRef((t, n) => {
let { __scopeCollapsible: i,...a } = t, o = useCollapsibleContext(TRIGGER_NAME$4, i);
return /* @__PURE__ */ jsx(Primitive.button, {
type: "button",
"aria-controls": o.contentId,
"aria-expanded": o.open || !1,
"data-state": getState$3(o.open),
"data-disabled": o.disabled ? "" : void 0,
disabled: o.disabled,
...a,
ref: n,
onClick: composeEventHandlers(t.onClick, o.onOpenToggle)
});
});
CollapsibleTrigger$1.displayName = TRIGGER_NAME$4;
var CONTENT_NAME$4 = "CollapsibleContent", CollapsibleContent$1 = React$1.forwardRef((t, n) => {
let { forceMount: i,...a } = t, o = useCollapsibleContext(CONTENT_NAME$4, t.__scopeCollapsible);
return /* @__PURE__ */ jsx(Presence, {
present: i || o.open,
children: ({ present: t }) => /* @__PURE__ */ jsx(CollapsibleContentImpl, {
...a,
ref: n,
present: t
})
});
});
CollapsibleContent$1.displayName = CONTENT_NAME$4;
var CollapsibleContentImpl = React$1.forwardRef((t, n) => {
let { __scopeCollapsible: i, present: a, children: o,...s } = t, c = useCollapsibleContext(CONTENT_NAME$4, i), [d, f] = React$1.useState(a), g = React$1.useRef(null), b = useComposedRefs$1(n, g), x = React$1.useRef(0), S = x.current, C = React$1.useRef(0), w = C.current, E = c.open || d, O = React$1.useRef(E), A = React$1.useRef(void 0);
return React$1.useEffect(() => {
let t = requestAnimationFrame(() => O.current = !1);
return () => cancelAnimationFrame(t);
}, []), useLayoutEffect2(() => {
let t = g.current;
if (t) {
A.current = A.current || {
transitionDuration: t.style.transitionDuration,
animationName: t.style.animationName
}, t.style.transitionDuration = "0s", t.style.animationName = "none";
let n = t.getBoundingClientRect();
x.current = n.height, C.current = n.width, O.current || (t.style.transitionDuration = A.current.transitionDuration, t.style.animationName = A.current.animationName), f(a);
}
}, [c.open, a]), /* @__PURE__ */ jsx(Primitive.div, {
"data-state": getState$3(c.open),
"data-disabled": c.disabled ? "" : void 0,
id: c.contentId,
hidden: !E,
...s,
ref: b,
style: {
"--radix-collapsible-content-height": S ? `${S}px` : void 0,
"--radix-collapsible-content-width": w ? `${w}px` : void 0,
...t.style
},
children: E && o
});
});
function getState$3(t) {
return t ? "open" : "closed";
}
var Root$4 = Collapsible$1;
function Collapsible({ ...t }) {
return /* @__PURE__ */ jsx(Root$4, {
"data-slot": "collapsible",
...t
});
}
function CollapsibleTrigger({ ...t }) {
return /* @__PURE__ */ jsx(CollapsibleTrigger$1, {
"data-slot": "collapsible-trigger",
...t
});
}
function CollapsibleContent({ ...t }) {
return /* @__PURE__ */ jsx(CollapsibleContent$1, {
"data-slot": "collapsible-content",
...t
});
}
function clamp(t, [n, i]) {
return Math.min(i, Math.max(n, t));
}
function useStateMachine(t, n) {
return React$1.useReducer((t, i) => n[t][i] ?? t, t);
}
var SCROLL_AREA_NAME = "ScrollArea", [createScrollAreaContext, createScrollAreaScope] = createContextScope(SCROLL_AREA_NAME), [ScrollAreaProvider, useScrollAreaContext] = createScrollAreaContext(SCROLL_AREA_NAME), ScrollArea$1 = React$1.forwardRef((t, n) => {
let { __scopeScrollArea: i, type: a = "hover", dir: o, scrollHideDelay: s = 600,...c } = t, [d, f] = React$1.useState(null), [g, b] = React$1.useState(null), [x, S] = React$1.useState(null), [C, w] = React$1.useState(null), [E, O] = React$1.useState(null), [A, M] = React$1.useState(0), [F, I] = React$1.useState(0), [R, qA] = React$1.useState(!1), [V, q] = React$1.useState(!1), JA = useComposedRefs$1(n, (t) => f(t)), YA = useDirection(o);
return /* @__PURE__ */ jsx(ScrollAreaProvider, {
scope: i,
type: a,
dir: YA,
scrollHideDelay: s,
scrollArea: d,
viewport: g,
onViewportChange: b,
content: x,
onContentChange: S,
scrollbarX: C,
onScrollbarXChange: w,
scrollbarXEnabled: R,
onScrollbarXEnabledChange: qA,
scrollbarY: E,
onScrollbarYChange: O,
scrollbarYEnabled: V,
onScrollbarYEnabledChange: q,
onCornerWidthChange: M,
onCornerHeightChange: I,
children: /* @__PURE__ */ jsx(Primitive.div, {
dir: YA,
...c,
ref: JA,
style: {
position: "relative",
"--radix-scroll-area-corner-width": A + "px",
"--radix-scroll-area-corner-height": F + "px",
...t.style
}
})
});
});
ScrollArea$1.displayName = SCROLL_AREA_NAME;
var VIEWPORT_NAME$1 = "ScrollAreaViewport", ScrollAreaViewport = React$1.forwardRef((t, n) => {
let { __scopeScrollArea: i, children: a, nonce: o,...s } = t, c = useScrollAreaContext(VIEWPORT_NAME$1, i), d = React$1.useRef(null), f = useComposedRefs$1(n, d, c.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: o
}), /* @__PURE__ */ jsx(Primitive.div, {
"data-radix-scroll-area-viewport": "",
...s,
ref: f,
style: {
overflowX: c.scrollbarXEnabled ? "scroll" : "hidden",
overflowY: c.scrollbarYEnabled ? "scroll" : "hidden",
...t.style
},
children: /* @__PURE__ */ jsx("div", {
ref: c.onContentChange,
style: {
minWidth: "100%",
display: "table"
},
children: a
})
})] });
});
ScrollAreaViewport.displayName = VIEWPORT_NAME$1;
var SCROLLBAR_NAME = "ScrollAreaScrollbar", ScrollAreaScrollbar = React$1.forwardRef((t, n) => {
let { forceMount: i,...a } = t, o = useScrollAreaContext(SCROLLBAR_NAME, t.__scopeScrollArea), { onScrollbarXEnabledChange: s, onScrollbarYEnabledChange: c } = o, d = t.orientation === "horizontal";
return React$1.useEffect(() => (d ? s(!0) : c(!0), () => {
d ? s(!1) : c(!1);
}), [
d,
s,
c
]), o.type === "hover" ? /* @__PURE__ */ jsx(ScrollAreaScrollbarHover, {
...a,
ref: n,
forceMount: i
}) : o.type === "scroll" ? /* @__PURE__ */ jsx(ScrollAreaScrollbarScroll, {
...a,
ref: n,
forceMount: i
}) : o.type === "auto" ? /* @__PURE__ */ jsx(ScrollAreaScrollbarAuto, {
...a,
ref: n,
forceMount: i
}) : o.type === "always" ? /* @__PURE__ */ jsx(ScrollAreaScrollbarVisible, {
...a,
ref: n
}) : null;
});
ScrollAreaScrollbar.displayName = SCROLLBAR_NAME;
var ScrollAreaScrollbarHover = React$1.forwardRef((t, n) => {
let { forceMount: i,...a } = t, o = useScrollAreaContext(SCROLLBAR_NAME, t.__scopeScrollArea), [s, c] = React$1.useState(!1);
return React$1.useEffect(() => {
let t = o.scrollArea, n = 0;
if (t) {
let i = () => {
window.clearTimeout(n), c(!0);
}, a = () => {
n = window.setTimeout(() => c(!1), o.scrollHideDelay);
};
return t.addEventListener("pointerenter", i), t.addEventListener("pointerleave", a), () => {
window.clearTimeout(n), t.removeEventListener("pointerenter", i), t.removeEventListener("pointerleave", a);
};
}
}, [o.scrollArea, o.scrollHideDelay]), /* @__PURE__ */ jsx(Presence, {
present: i || s,
children: /* @__PURE__ */ jsx(ScrollAreaScrollbarAuto, {
"data-state": s ? "visible" : "hidden",
...a,
ref: n
})
});
}), ScrollAreaScrollbarScroll = React$1.forwardRef((t, n) => {
let { forceMount: i,...a } = t, o = useScrollAreaContext(SCROLLBAR_NAME, t.__scopeScrollArea), s = t.orientation === "horizontal", c = useDebounceCallback(() => f("SCROLL_END"), 100), [d, f] = 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$1.useEffect(() => {
if (d === "idle") {
let t = window.setTimeout(() => f("HIDE"), o.scrollHideDelay);
return () => window.clearTimeout(t);
}
}, [
d,
o.scrollHideDelay,
f
]), React$1.useEffect(() => {
let t = o.viewport, n = s ? "scrollLeft" : "scrollTop";
if (t) {
let i = t[n], a = () => {
let a = t[n];
i !== a && (f("SCROLL"), c()), i = a;
};
return t.addEventListener("scroll", a), () => t.removeEventListener("scroll", a);
}
}, [
o.viewport,
s,
f,
c
]), /* @__PURE__ */ jsx(Presence, {
present: i || d !== "hidden",
children: /* @__PURE__ */ jsx(ScrollAreaScrollbarVisible, {
"data-state": d === "hidden" ? "hidden" : "visible",
...a,
ref: n,
onPointerEnter: composeEventHandlers(t.onPointerEnter, () => f("POINTER_ENTER")),
onPointerLeave: composeEventHandlers(t.onPointerLeave, () => f("POINTER_LEAVE"))
})
});
}), ScrollAreaScrollbarAuto = React$1.forwardRef((t, n) => {
let i = useScrollAreaContext(SCROLLBAR_NAME, t.__scopeScrollArea), { forceMount: a,...o } = t, [s, c] = React$1.useState(!1), d = t.orientation === "horizontal", f = useDebounceCallback(() => {
if (i.viewport) {
let t = i.viewport.offsetWidth < i.viewport.scrollWidth, n = i.viewport.offsetHeight < i.viewport.scrollHeight;
c(d ? t : n);
}
}, 10);
return useResizeObserver$1(i.viewport, f), useResizeObserver$1(i.content, f), /* @__PURE__ */ jsx(Presence, {
present: a || s,
children: /* @__PURE__ */ jsx(ScrollAreaScrollbarVisible, {
"data-state": s ? "visible" : "hidden",
...o,
ref: n
})
});
}), ScrollAreaScrollbarVisible = React$1.forwardRef((t, n) => {
let { orientation: i = "vertical",...a } = t, o = useScrollAreaContext(SCROLLBAR_NAME, t.__scopeScrollArea), s = React$1.useRef(null), c = React$1.useRef(0), [d, f] = React$1.useState({
content: 0,
viewport: 0,
scrollbar: {
size: 0,
paddingStart: 0,
paddingEnd: 0
}
}), g = getThumbRatio(d.viewport, d.content), b = {
...a,
sizes: d,
onSizesChange: f,
hasThumb: g > 0 && g < 1,
onThumbChange: (t) => s.current = t,
onThumbPointerUp: () => c.current = 0,
onThumbPointerDown: (t) => c.current = t
};
function x(t, n) {
return getScrollPositionFromPointer(t, c.current, d, n);
}
return i === "horizontal" ? /* @__PURE__ */ jsx(ScrollAreaScrollbarX, {
...b,
ref: n,
onThumbPositionChange: () => {
if (o.viewport && s.current) {
let t = o.viewport.scrollLeft, n = getThumbOffsetFromScroll(t, d, o.dir);
s.current.style.transform = `translate3d(${n}px, 0, 0)`;
}
},
onWheelScroll: (t) => {
o.viewport && (o.viewport.scrollLeft = t);
},
onDragScroll: (t) => {
o.viewport && (o.viewport.scrollLeft = x(t, o.dir));
}
}) : i === "vertical" ? /* @__PURE__ */ jsx(ScrollAreaScrollbarY, {
...b,
ref: n,
onThumbPositionChange: () => {
if (o.viewport && s.current) {
let t = o.viewport.scrollTop, n = getThumbOffsetFromScroll(t, d);
s.current.style.transform = `translate3d(0, ${n}px, 0)`;
}
},
onWheelScroll: (t) => {
o.viewport && (o.viewport.scrollTop = t);
},
onDragScroll: (t) => {
o.viewport && (o.viewport.scrollTop = x(t));
}
}) : null;
}), ScrollAreaScrollbarX = React$1.forwardRef((t, n) => {
let { sizes: i, onSizesChange: a,...o } = t, s = useScrollAreaContext(SCROLLBAR_NAME, t.__scopeScrollArea), [c, d] = React$1.useState(), f = React$1.useRef(null), g = useComposedRefs$1(n, f, s.onScrollbarXChange);
return React$1.useEffect(() => {
f.current && d(getComputedStyle(f.current));
}, [f]), /* @__PURE__ */ jsx(ScrollAreaScrollbarImpl, {
"data-orientation": "horizontal",
...o,
ref: g,
sizes: i,
style: {
bottom: 0,
left: s.dir === "rtl" ? "var(--radix-scroll-area-corner-width)" : 0,
right: s.dir === "ltr" ? "var(--radix-scroll-area-corner-width)" : 0,
"--radix-scroll-area-thumb-width": getThumbSize(i) + "px",
...t.style
},
onThumbPointerDown: (n) => t.onThumbPointerDown(n.x),
onDragScroll: (n) => t.onDragScroll(n.x),
onWheelScroll: (n, i) => {
if (s.viewport) {
let a = s.viewport.scrollLeft + n.deltaX;
t.onWheelScroll(a), isScrollingWithinScrollbarBounds(a, i) && n.preventDefault();
}
},
onResize: () => {
f.current && s.viewport && c && a({
content: s.viewport.scrollWidth,
viewport: s.viewport.offsetWidth,
scrollbar: {
size: f.current.clientWidth,
paddingStart: toInt(c.paddingLeft),
paddingEnd: toInt(c.paddingRight)
}
});
}
});
}), ScrollAreaScrollbarY = React$1.forwardRef((t, n) => {
let { sizes: i, onSizesChange: a,...o } = t, s = useScrollAreaContext(SCROLLBAR_NAME, t.__scopeScrollArea), [c, d] = React$1.useState(), f = React$1.useRef(null), g = useComposedRefs$1(n, f, s.onScrollbarYChange);
return React$1.useEffect(() => {
f.current && d(getComputedStyle(f.current));
}, [f]), /* @__PURE__ */ jsx(ScrollAreaScrollbarImpl, {
"data-orientation": "vertical",
...o,
ref: g,
sizes: i,
style: {
top: 0,
right: s.dir === "ltr" ? 0 : void 0,
left: s.dir === "rtl" ? 0 : void 0,
bottom: "var(--radix-scroll-area-corner-height)",
"--radix-scroll-area-thumb-height": getThumbSize(i) + "px",
...t.style
},
onThumbPointerDown: (n) => t.onThumbPointerDown(n.y),
onDragScroll: (n) => t.onDragScroll(n.y),
onWheelScroll: (n, i) => {
if (s.viewport) {
let a = s.viewport.scrollTop + n.deltaY;
t.onWheelScroll(a), isScrollingWithinScrollbarBounds(a, i) && n.preventDefault();
}
},
onResize: () => {
f.current && s.viewport && c && a({
content: s.viewport.scrollHeight,
viewport: s.viewport.offsetHeight,
scrollbar: {
size: f.current.clientHeight,
paddingStart: toInt(c.paddingTop),
paddingEnd: toInt(c.paddingBottom)
}
});
}
});
}), [ScrollbarProvider, useScrollbarContext] = createScrollAreaContext(SCROLLBAR_NAME), ScrollAreaScrollbarImpl = React$1.forwardRef((t, n) => {
let { __scopeScrollArea: i, sizes: a, hasThumb: o, onThumbChange: s, onThumbPointerUp: c, onThumbPointerDown: d, onThumbPositionChange: f, onDragScroll: g, onWheelScroll: b, onResize: x,...S } = t, C = useScrollAreaContext(SCROLLBAR_NAME, i), [w, E] = React$1.useState(null), O = useComposedRefs$1(n, (t) => E(t)), A = React$1.useRef(null), M = React$1.useRef(""), F = C.viewport, I = a.content - a.viewport, R = useCallbackRef(b), qA = useCallbackRef(f), V = useDebounceCallback(x, 10);
function q(t) {
if (A.current) {
let n = t.clientX - A.current.left, i = t.clientY - A.current.top;
g({
x: n,
y: i
});
}
}
return React$1.useEffect(() => {
let t = (t) => {
let n = t.target;
w?.contains(n) && R(t, I);
};
return document.addEventListener("wheel", t, { passive: !1 }), () => document.removeEventListener("wheel", t, { passive: !1 });
}, [
F,
w,
I,
R
]), React$1.useEffect(qA, [a, qA]), useResizeObserver$1(w, V), useResizeObserver$1(C.content, V), /* @__PURE__ */ jsx(ScrollbarProvider, {
scope: i,
scrollbar: w,
hasThumb: o,
onThumbChange: useCallbackRef(s),
onThumbPointerUp: useCallbackRef(c),
onThumbPositionChange: qA,
onThumbPointerDown: useCallbackRef(d),
children: /* @__PURE__ */ jsx(Primitive.div, {
...S,
ref: O,
style: {
position: "absolute",
...S.style
},
onPointerDown: composeEventHandlers(t.onPointerDown, (t) => {
t.button === 0 && (t.target.setPointerCapture(t.pointerId), A.current = w.getBoundingClientRect(), M.current = document.body.style.webkitUserSelect, document.body.style.webkitUserSelect = "none", C.viewport && (C.viewport.style.scrollBehavior = "auto"), q(t));
}),
onPointerMove: composeEventHandlers(t.onPointerMove, q),
onPointerUp: composeEventHandlers(t.onPointerUp, (t) => {
let n = t.target;
n.hasPointerCapture(t.pointerId) && n.releasePointerCapture(t.pointerId), document.body.style.webkitUserSelect = M.current, C.viewport && (C.viewport.style.scrollBehavior = ""), A.current = null;
})
})
});
}), THUMB_NAME$2 = "ScrollAreaThumb", ScrollAreaThumb = React$1.forwardRef((t, n) => {
let { forceMount: i,...a } = t, o = useScrollbarContext(THUMB_NAME$2, t.__scopeScrollArea);
return /* @__PURE__ */ jsx(Presence, {
present: i || o.hasThumb,
children: /* @__PURE__ */ jsx(ScrollAreaThumbImpl, {
ref: n,
...a
})
});
}), ScrollAreaThumbImpl = React$1.forwardRef((t, n) => {
let { __scopeScrollArea: i, style: a,...o } = t, s = useScrollAreaContext(THUMB_NAME$2, i), c = useScrollbarContext(THUMB_NAME$2, i), { onThumbPositionChange: d } = c, f = useComposedRefs$1(n, (t) => c.onThumbChange(t)), g = React$1.useRef(void 0), b = useDebounceCallback(() => {
g.current &&= (g.current(), void 0);
}, 100);
return React$1.useEffect(() => {
let t = s.viewport;
if (t) {
let n = () => {
b(), g.current || (g.current = addUnlinkedScrollListener(t, d), d());
};
return d(), t.addEventListener("scroll", n), () => t.removeEventListener("scroll", n);
}
}, [
s.viewport,
b,
d
]), /* @__PURE__ */ jsx(Primitive.div, {
"data-state": c.hasThumb ? "visible" : "hidden",
...o,
ref: f,
style: {
width: "var(--radix-scroll-area-thumb-width)",
height: "var(--radix-scroll-area-thumb-height)",
...a
},
onPointerDownCapture: composeEventHandlers(t.onPointerDownCapture, (t) => {
let n = t.target.getBoundingClientRect(), i = t.clientX - n.left, a = t.clientY - n.top;
c.onThumbPointerDown({
x: i,
y: a
});
}),
onPointerUp: composeEventHandlers(t.onPointerUp, c.onThumbPointerUp)
});
});
ScrollAreaThumb.displayName = THUMB_NAME$2;
var CORNER_NAME = "ScrollAreaCorner", ScrollAreaCorner = React$1.forwardRef((t, n) => {
let i = useScrollAreaContext(CORNER_NAME, t.__scopeScrollArea), a = !!(i.scrollbarX && i.scrollbarY);
return i.type !== "scroll" && a ? /* @__PURE__ */ jsx(ScrollAreaCornerImpl, {
...t,
ref: n
}) : null;
});
ScrollAreaCorner.displayName = CORNER_NAME;
var ScrollAreaCornerImpl = React$1.forwardRef((t, n) => {
let { __scopeScrollArea: i,...a } = t, o = useScrollAreaContext(CORNER_NAME, i), [s, c] = React$1.useState(0), [d, f] = React$1.useState(0), g = !!(s && d);
return useResizeObserver$1(o.scrollbarX, () => {
let t = o.scrollbarX?.offsetHeight || 0;
o.onCornerHeightChange(t), f(t);
}), useResizeObserver$1(o.scrollbarY, () => {
let t = o.scrollbarY?.offsetWidth || 0;
o.onCornerWidthChange(t), c(t);
}), g ? /* @__PURE__ */ jsx(Primitive.div, {
...a,
ref: n,
style: {
width: s,
height: d,
position: "absolute",
right: o.dir === "ltr" ? 0 : void 0,
left: o.dir === "rtl" ? 0 : void 0,
bottom: 0,
...t.style
}
}) : null;
});
function toInt(t) {
return t ? parseInt(t, 10) : 0;
}
function getThumbRatio(t, n) {
let i = t / n;
return isNaN(i) ? 0 : i;
}
function getThumbSize(t) {
let n = getThumbRatio(t.viewport, t.content), i = t.scrollbar.paddingStart + t.scrollbar.paddingEnd, a = (t.scrollbar.size - i) * n;
return Math.max(a, 18);
}
function getScrollPositionFromPointer(t, n, i, a = "ltr") {
let o = getThumbSize(i), s = o / 2, c = n || s, d = o - c, f = i.scrollbar.paddingStart + c, g = i.scrollbar.size - i.scrollbar.paddingEnd - d, b = i.content - i.viewport, x = a === "ltr" ? [0, b] : [b * -1, 0];
return linearScale$1([f, g], x)(t);
}
function getThumbOffsetFromScroll(t, n, i = "ltr") {
let a = getThumbSize(n), o = n.scrollbar.paddingStart + n.scrollbar.paddingEnd, s = n.scrollbar.size - o, c = n.content - n.viewport, d = s - a, f = i === "ltr" ? [0, c] : [c * -1, 0], g = clamp(t, f);
return linearScale$1([0, c], [0, d])(g);
}
function linearScale$1(t, n) {
return (i) => {
if (t[0] === t[1] || n[0] === n[1]) return n[0];
let a = (n[1] - n[0]) / (t[1] - t[0]);
return n[0] + a * (i - t[0]);
};
}
function isScrollingWithinScrollbarBounds(t, n) {
return t > 0 && t < n;
}
var addUnlinkedScrollListener = (t, n = () => {}) => {
let i = {
left: t.scrollLeft,
top: t.scrollTop
}, a = 0;
return (function o() {
let s = {
left: t.scrollLeft,
top: t.scrollTop
}, c = i.left !== s.left, d = i.top !== s.top;
(c || d) && n(), i = s, a = window.requestAnimationFrame(o);
})(), () => window.cancelAnimationFrame(a);
};
function useDebounceCallback(t, n) {
let i = useCallbackRef(t), a = React$1.useRef(0);
return React$1.useEffect(() => () => window.clearTimeout(a.current), []), React$1.useCallback(() => {
window.clearTimeout(a.current), a.current = window.setTimeout(i, n);
}, [i, n]);
}
function useResizeObserver$1(t, n) {
let i = useCallbackRef(n);
useLayoutEffect2(() => {
let n = 0;
if (t) {
let a = new ResizeObserver(() => {
cancelAnimationFrame(n), n = window.requestAnimationFrame(i);
});
return a.observe(t), () => {
window.cancelAnimationFrame(n), a.unobserve(t);
};
}
}, [t, i]);
}
var Root$3 = ScrollArea$1, Viewport$1 = ScrollAreaViewport, Corner = ScrollAreaCorner;
function ScrollArea({ className: t, children: n,...i }) {
return /* @__PURE__ */ jsxs(Root$3, {
"data-slot": "scroll-area",
className: cn("relative", t),
...i,
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: n
}),
/* @__PURE__ */ jsx(ScrollBar, {}),
/* @__PURE__ */ jsx(Corner, {})
]
});
}
function ScrollBar({ className: t, orientation: n = "vertical",...i }) {
return /* @__PURE__ */ jsx(ScrollAreaScrollbar, {
"data-slot": "scroll-area-scrollbar",
orientation: n,
className: cn("flex touch-none select-none p-px transition-colors", n === "vertical" && "h-full w-2.5 border-l border-l-transparent", n === "horizontal" && "h-2.5 flex-col border-t border-t-transparent", t),
...i,
children: /* @__PURE__ */ jsx(ScrollAreaThumb, {
"data-slot": "scroll-area-thumb",
className: "bg-border relative flex-1 rounded-full"
})
});
}
const CollectionItem = (t) => {
let { activeOperation: n, operations: i, addOperation: a, setActiveOperation: o, deleteCollection: s, deleteOperationFromCollection: c, addTab: d, setActiveTab: f, checkPermissions: g } = useLaboratory(), [b, x] = useState(!1);
return /* @__PURE__ */ jsxs(Collapsible, {
open: b,
onOpenChange: x,
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(b ? FolderOpenIcon : FolderIcon, { className: "text-muted-foreground size-4" }),
t.collection.name,
g?.("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: (t) => {
t.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: [t.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: (n) => {
n.stopPropagation(), s(t.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: b && t.collection.operations.map((s) => {
let b = n?.id === s.id;
return /* @__PURE__ */ jsxs(Button, {
variant: "ghost",
className: cn("group w-full justify-start gap-2 px-2", { "bg-accent/50": b }),
size: "sm",
onClick: () => {
if (i.some((t) => t.id === s.id)) o(s.id);
else {
let t = a(s), n = d({
type: "operation",
data: t
});
f(n);
}
},
children: [
/* @__PURE__ */ jsx(GraphQLIcon, { className: "size-4 text-pink-500" }),
s.name,
g?.("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: (t) => {
t.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 ",
s.name,
"?"
] }), /* @__PURE__ */ jsxs(AlertDialogDescription, { children: [s.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: (n) => {
n.stopPropagation(), c(t.collection.id, s.id);
},
children: "Delete"
})
})] })] })] })
}), /* @__PURE__ */ jsx(TooltipContent, { children: "Delete operation" })] })
]
}, s.name);
})
})]
});
}, CollectionsSearchResult = (t) => {
let { activeOperation: n, operations: i, addOperation: a, setActiveOperation: o, addTab: s, setActiveTab: c } = useLaboratory();
return /* @__PURE__ */ jsx("div", {
className: "flex flex-col gap-1",
children: t.items.map((t) => {
let d = n?.id === t.id;
return /* @__PURE__ */ jsxs(Button, {
variant: "ghost",
className: cn("group w-full justify-start gap-2 px-2", { "bg-accent/50": d }),
size: "sm",
onClick: () => {
if (i.some((n) => n.id === t.id)) o(t.id);
else {
let n = a(t), i = s({
type: "operation",
data: n
});
c(i);
}
},
children: [
/* @__PURE__ */ jsx(GraphQLIcon, { className: "size-4 text-pink-500" }),
/* @__PURE__ */ jsx("span", {
className: "text-muted-foreground truncate",
children: t.parent.name
}),
/* @__PURE__ */ jsx("span", {
className: "text-muted-foreground",
children: " / "
}),
t.name
]
}, t.name);
})
});
}, Collections = () => {
let [t, n] = useState(""), { collections: i, openAddCollectionDialog: a, checkPermissions: o } = useLaboratory(), s = useMemo(() => i.reduce((t, n) => [...t, ...n.operations.map((t) => ({
...t,
parent: n
}))], []).filter((n) => n.name.toLowerCase().includes(t.toLowerCase())), [i, t]);
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: o?.("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: a,
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: t,
onChange: (t) => n(t.target.value)
}),
t.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: () => n(""),
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: t.length > 0 ? s.length > 0 ? /* @__PURE__ */ jsx(CollectionsSearchResult, { items: s }) : /* @__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."
})
] })
}) : i.length > 0 ? i.map((t) => /* @__PURE__ */ jsx(CollectionItem, { collection: t }, t.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: a,
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$1(t, n, i, a, o, s, c) {
if (s === n.length) return o === t.length ? U : k$2;
var d = `${o},${s}`;
if (c[d] !== void 0) return c[d];
for (var f = a.charAt(s), g = i.indexOf(f, o), b = 0, x, S, C, w; g >= 0;) x = G$1(t, n, i, a, g + 1, s + 1, c), x > b && (g === o ? x *= U : m.test(t.charAt(g - 1)) ? (x *= H$1, C = t.slice(o, g - 1).match(B$1), C && o > 0 && (x *= u ** +C.length)) : K$1.test(t.charAt(g - 1)) ? (x *= Y$2, w = t.slice(o, g - 1).match(X), w && o > 0 && (x *= u ** +w.length)) : (x *= J, o > 0 && (x *= u ** +(g - o))), t.charAt(g) !== n.charAt(s) && (x *= $$1)), (x < p && i.charAt(g - 1) === a.charAt(s + 1) || a.charAt(s + 1) === a.charAt(s) && i.charAt(g - 1) !== a.charAt(s)) && (S = G$1(t, n, i, a, g + 1, s + 2, c), S * p > x && (x = S * p)), x > b && (b = x), g = i.indexOf(f, g + 1);
return c[d] = b, b;
}
function D$1(t) {
return t.toLowerCase().replace(X, " ");
}
function W(t, n, i) {
return t = i && i.length > 0 ? `${t + " " + i.join(" ")}` : t, G$1(t, n, D$1(t), D$1(n), 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$1 = (t, n, i) => W(t, n, i), ue = React$1.createContext(void 0), K = () => React$1.useContext(ue), de$1 = React$1.createContext(void 0), ee = () => React$1.useContext(de$1), fe = React$1.createContext(void 0), me = React$1.forwardRef((t, n) => {
let i = L(() => ({
search: "",
value: t.value ?? t.defaultValue ?? "",
selectedItemId: void 0,
filtered: {
count: 0,
items: /* @__PURE__ */ new Map(),
groups: /* @__PURE__ */ new Set()
}
})), a = L(() => /* @__PURE__ */ new Set()), o = L(() => /* @__PURE__ */ new Map()), s = L(() => /* @__PURE__ */ new Map()), c = L(() => /* @__PURE__ */ new Set()), d = pe$1(t), { label: f, children: g, value: b, onValueChange: x, filter: S, shouldFilter: C, loop: w, disablePointerSelection: E = !1, vimBindings: O = !0,...A } = t, M = useId$1(), F = useId$1(), I = useId$1(), R = React$1.useRef(null), qA = ke();
k$1(() => {
if (b !== void 0) {
let t = b.trim();
i.current.value = t, V.emit();
}
}, [b]), k$1(() => {
qA(6, QA);
}, []);
let V = React$1.useMemo(() => ({
subscribe: (t) => (c.current.add(t), () => c.current.delete(t)),
snapshot: () => i.current,
setState: (t, n, a) => {
var o, s, c;
if (!Object.is(i.current[t], n)) {
if (i.current[t] = n, t === "search") ZA(), YA(), qA(1, XA);
else if (t === "value") {
if (document.activeElement.hasAttribute("cmdk-input") || document.activeElement.hasAttribute("cmdk-root")) {
let t = document.getElementById(I);
t ? t.focus() : (o = document.getElementById(M)) == null || o.focus();
}
if (qA(7, () => {
i.current.selectedItemId = $A()?.id, V.emit();
}), a || qA(5, QA), d.current?.value !== void 0) {
let t = n ?? "";
(c = (s = d.current).onValueChange) == null || c.call(s, t);
return;
}
}
V.emit();
}
},
emit: () => {
c.current.forEach((t) => t());
}
}), []), q = React$1.useMemo(() => ({
value: (t, n, a) => {
n !== s.current.get(t)?.value && (s.current.set(t, {
value: n,
keywords: a
}), i.current.filtered.items.set(t, JA(n, a)), qA(2, () => {
YA(), V.emit();
}));
},
item: (t, n) => (a.current.add(t), n && (o.current.has(n) ? o.current.get(n).add(t) : o.current.set(n, new Set([t]))), qA(3, () => {
ZA(), YA(), i.current.value || XA(), V.emit();
}), () => {
s.current.delete(t), a.current.delete(t), i.current.filtered.items.delete(t);
let n = $A();
qA(4, () => {
ZA(), n?.getAttribute("id") === t && XA(), V.emit();
});
}),
group: (t) => (o.current.has(t) || o.current.set(t, /* @__PURE__ */ new Set()), () => {
s.current.delete(t), o.current.delete(t);
}),
filter: () => d.current.shouldFilter,
label: f || t["aria-label"],
getDisablePointerSelection: () => d.current.disablePointerSelection,
listId: M,
inputId: I,
labelId: F,
listInnerRef: R
}), []);
function JA(t, n) {
let a = d.current?.filter ?? Re$1;
return t ? a(t, i.current.search, n) : 0;
}
function YA() {
if (!i.current.search || d.current.shouldFilter === !1) return;
let t = i.current.filtered.items, n = [];
i.current.filtered.groups.forEach((i) => {
let a = o.current.get(i), s = 0;
a.forEach((n) => {
let i = t.get(n);
s = Math.max(i, s);
}), n.push([i, s]);
});
let a = R.current;
ej().sort((n, i) => {
let a = n.getAttribute("id"), o = i.getAttribute("id");
return (t.get(o) ?? 0) - (t.get(a) ?? 0);
}).forEach((t) => {
let n = t.closest(Y$1);
n ? n.appendChild(t.parentElement === n ? t : t.closest(`${Y$1} > *`)) : a.appendChild(t.parentElement === a ? t : t.closest(`${Y$1} > *`));
}), n.sort((t, n) => n[1] - t[1]).forEach((t) => {
let n = R.current?.querySelector(`${N}[${T}="${encodeURIComponent(t[0])}"]`);
n?.parentElement.appendChild(n);
});
}
function XA() {
let t = ej().find((t) => t.getAttribute("aria-disabled") !== "true")?.getAttribute(T);
V.setState("value", t || void 0);
}
function ZA() {
if (!i.current.search || d.current.shouldFilter === !1) {
i.current.filtered.count = a.current.size;
return;
}
i.current.filtered.groups = /* @__PURE__ */ new Set();
let t = 0;
for (let n of a.current) {
let a = s.current.get(n)?.value ?? "", o = s.current.get(n)?.keywords ?? [], c = JA(a, o);
i.current.filtered.items.set(n, c), c > 0 && t++;
}
for (let [t, n] of o.current) for (let a of n) if (i.current.filtered.items.get(a) > 0) {
i.current.filtered.groups.add(t);
break;
}
i.current.filtered.count = t;
}
function QA() {
var t;
let n = $A();
n && (n.parentElement?.firstChild === n && ((t = n.closest(N)?.querySelector(be$1)) == null || t.scrollIntoView({ block: "nearest" })), n.scrollIntoView({ block: "nearest" }));
}
function $A() {
return R.current?.querySelector(`${le}[aria-selected="true"]`);
}
function ej() {
return Array.from(R.current?.querySelectorAll(ce) || []);
}
function tj(t) {
let n = ej()[t];
n && V.setState("value", n.getAttribute(T));
}
function nj(t) {
var n;
let i = $A(), a = ej(), o = a.findIndex((t) => t === i), s = a[o + t];
(n = d.current) != null && n.loop && (s = o + t < 0 ? a[a.length - 1] : o + t === a.length ? a[0] : a[o + t]), s && V.setState("value", s.getAttribute(T));
}
function rj(t) {
let n = $A()?.closest(N), i;
for (; n && !i;) n = t > 0 ? we$2(n, N) : De$1(n, N), i = n?.querySelector(ce);
i ? V.setState("value", i.getAttribute(T)) : nj(t);
}
let ij = () => tj(ej().length - 1), aj = (t) => {
t.preventDefault(), t.metaKey ? ij() : t.altKey ? rj(1) : nj(1);
}, oj = (t) => {
t.preventDefault(), t.metaKey ? tj(0) : t.altKey ? rj(-1) : nj(-1);
};
return React$1.createElement(Primitive.div, {
ref: n,
tabIndex: -1,
...A,
"cmdk-root": "",
onKeyDown: (t) => {
var n;
(n = A.onKeyDown) == null || n.call(A, t);
let i = t.nativeEvent.isComposing || t.keyCode === 229;
if (!(t.defaultPrevented || i)) switch (t.key) {
case "n":
case "j":
O && t.ctrlKey && aj(t);
break;
case "ArrowDown":
aj(t);
break;
case "p":
case "k":
O && t.ctrlKey && oj(t);
break;
case "ArrowUp":
oj(t);
break;
case "Home":
t.preventDefault(), tj(0);
break;
case "End":
t.preventDefault(), ij();
break;
case "Enter": {
t.preventDefault();
let n = $A();
if (n) {
let t = new Event(Z);
n.dispatchEvent(t);
}
}
}
}
}, React$1.createElement("label", {
"cmdk-label": "",
htmlFor: q.inputId,
id: q.labelId,
style: Te
}, f), B(t, (t) => React$1.createElement(de$1.Provider, { value: V }, React$1.createElement(ue.Provider, { value: q }, t))));
}), he$1 = React$1.forwardRef((t, n) => {
let i = useId$1(), a = React$1.useRef(null), o = React$1.useContext(fe), s = K(), c = pe$1(t), d = c.current?.forceMount ?? o?.forceMount;
k$1(() => {
if (!d) return s.item(i, o?.id);
}, [d]);
let f = ve(i, a, [
t.value,
t.children,
a
], t.keywords), g = ee(), b = P((t) => t.value && t.value === f.current), x = P((t) => d || s.filter() === !1 ? !0 : t.search ? t.filtered.items.get(i) > 0 : !0);
React$1.useEffect(() => {
let n = a.current;
if (!(!n || t.disabled)) return n.addEventListener(Z, S), () => n.removeEventListener(Z, S);
}, [
x,
t.onSelect,
t.disabled
]);
function S() {
var t, n;
C(), (n = (t = c.current).onSelect) == null || n.call(t, f.current);
}
function C() {
g.setState("value", f.current, !0);
}
if (!x) return null;
let { disabled: w, value: E, onSelect: O, forceMount: A, keywords: M,...F } = t;
return React$1.createElement(Primitive.div, {
ref: composeRefs$1(a, n),
...F,
id: i,
"cmdk-item": "",
role: "option",
"aria-disabled": !!w,
"aria-selected": !!b,
"data-disabled": !!w,
"data-selected": !!b,
onPointerMove: w || s.getDisablePointerSelection() ? void 0 : C,
onClick: w ? void 0 : S
}, t.children);
}), Ee$1 = React$1.forwardRef((t, n) => {
let { heading: i, children: a, forceMount: o,...s } = t, c = useId$1(), d = React$1.useRef(null), f = React$1.useRef(null), g = useId$1(), b = K(), x = P((t) => o || b.filter() === !1 ? !0 : t.search ? t.filtered.groups.has(c) : !0);
k$1(() => b.group(c), []), ve(c, d, [
t.value,
t.heading,
f
]);
let S = React$1.useMemo(() => ({
id: c,
forceMount: o
}), [o]);
return React$1.createElement(Primitive.div, {
ref: composeRefs$1(d, n),
...s,
"cmdk-group": "",
role: "presentation",
hidden: x ? void 0 : !0
}, i && React$1.createElement("div", {
ref: f,
"cmdk-group-heading": "",
"aria-hidden": !0,
id: g
}, i), B(t, (t) => React$1.createElement("div", {
"cmdk-group-items": "",
role: "group",
"aria-labelledby": i ? g : void 0
}, React$1.createElement(fe.Provider, { value: S }, t))));
}), ye = React$1.forwardRef((t, n) => {
let { alwaysRender: i,...a } = t, o = React$1.useRef(null), s = P((t) => !t.search);
return !i && !s ? null : React$1.createElement(Primitive.div, {
ref: composeRefs$1(o, n),
...a,
"cmdk-separator": "",
role: "separator"
});
}), Se = React$1.forwardRef((t, n) => {
let { onValueChange: i,...a } = t, o = t.value != null, s = ee(), c = P((t) => t.search), d = P((t) => t.selectedItemId), f = K();
return React$1.useEffect(() => {
t.value != null && s.setState("search", t.value);
}, [t.value]), React$1.createElement(Primitive.input, {
ref: n,
...a,
"cmdk-input": "",
autoComplete: "off",
autoCorrect: "off",
spellCheck: !1,
"aria-autocomplete": "list",
role: "combobox",
"aria-expanded": !0,
"aria-controls": f.listId,
"aria-labelledby": f.labelId,
"aria-activedescendant": d,
id: f.inputId,
type: "text",
value: o ? t.value : c,
onChange: (t) => {
o || s.setState("search", t.target.value), i?.(t.target.value);
}
});
}), Ce$1 = React$1.forwardRef((t, n) => {
let { children: i, label: a = "Suggestions",...o } = t, s = React$1.useRef(null), c = React$1.useRef(null), d = P((t) => t.selectedItemId), f = K();
return React$1.useEffect(() => {
if (c.current && s.current) {
let t = c.current, n = s.current, i, a = new ResizeObserver(() => {
i = requestAnimationFrame(() => {
let i = t.offsetHeight;
n.style.setProperty("--cmdk-list-height", i.toFixed(1) + "px");
});
});
return a.observe(t), () => {
cancelAnimationFrame(i), a.unobserve(t);
};
}
}, []), React$1.createElement(Primitive.div, {
ref: composeRefs$1(s, n),
...o,
"cmdk-list": "",
role: "listbox",
tabIndex: -1,
"aria-activedescendant": d,
"aria-label": a,
id: f.listId
}, B(t, (t) => React$1.createElement("div", {
ref: composeRefs$1(c, f.listInnerRef),
"cmdk-list-sizer": ""
}, t)));
}), xe = React$1.forwardRef((t, n) => {
let { open: i, onOpenChange: a, overlayClassName: o, contentClassName: s, container: c,...d } = t;
return React$1.createElement(Root$10, {
open: i,
onOpenChange: a
}, React$1.createElement(Portal$4, { container: c }, React$1.createElement(Overlay, {
"cmdk-overlay": "",
className: o
}), React$1.createElement(Content$2, {
"aria-label": t.label,
"cmdk-dialog": "",
className: s
}, React$1.createElement(me, {
ref: n,
...d
}))));
}), Ie$1 = React$1.forwardRef((t, n) => P((t) => t.filtered.count === 0) ? React$1.createElement(Primitive.div, {
ref: n,
...t,
"cmdk-empty": "",
role: "presentation"
}) : null), Pe$1 = React$1.forwardRef((t, n) => {
let { progress: i, children: a, label: o = "Loading...",...s } = t;
return React$1.createElement(Primitive.div, {
ref: n,
...s,
"cmdk-loading": "",
role: "progressbar",
"aria-valuenow": i,
"aria-valuemin": 0,
"aria-valuemax": 100,
"aria-label": o
}, B(t, (t) => React$1.createElement("div", { "aria-hidden": !0 }, t)));
}), _e = Object.assign(me, {
List: Ce$1,
Item: he$1,
Input: Se,
Group: Ee$1,
Separator: ye,
Dialog: xe,
Empty: Ie$1,
Loading: Pe$1
});
function we$2(t, n) {
let i = t.nextElementSibling;
for (; i;) {
if (i.matches(n)) return i;
i = i.nextElementSibling;
}
}
function De$1(t, n) {
let i = t.previousElementSibling;
for (; i;) {
if (i.matches(n)) return i;
i = i.previousElementSibling;
}
}
function pe$1(t) {
let n = React$1.useRef(t);
return k$1(() => {
n.current = t;
}), n;
}
var k$1 = typeof window > "u" ? React$1.useEffect : React$1.useLayoutEffect;
function L(t) {
let n = React$1.useRef();
return n.current === void 0 && (n.current = t()), n;
}
function P(t) {
let n = ee(), i = () => t(n.snapshot());
return React$1.useSyncExternalStore(n.subscribe, i, i);
}
function ve(t, n, i, a = []) {
let o = React$1.useRef(), s = K();
return k$1(() => {
var c;
let d = (() => {
for (let t of i) {
if (typeof t == "string") return t.trim();
if (typeof t == "object" && "current" in t) return t.current ? t.current.textContent?.trim() : o.current;
}
})(), f = a.map((t) => t.trim());
s.value(t, d, f), (c = n.current) == null || c.setAttribute(T, d), o.current = d;
}), o;
}
var ke = () => {
let [t, n] = React$1.useState(), i = L(() => /* @__PURE__ */ new Map());
return k$1(() => {
i.current.forEach((t) => t()), i.current = /* @__PURE__ */ new Map();
}, [t]), (t, a) => {
i.current.set(t, a), n({});
};
};
function Me$1(t) {
let n = t.type;
return typeof n == "function" ? n(t.props) : "render" in n ? n.render(t.props) : t;
}
function B({ asChild: t, children: n }, i) {
return t && React$1.isValidElement(n) ? React$1.cloneElement(Me$1(n), { ref: n.ref }, i(n.props.children)) : i(n);
}
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: t,...n }) {
return /* @__PURE__ */ jsx(_e, {
"data-slot": "command",
className: cn("bg-popover text-popover-foreground flex size-full flex-col overflow-hidden rounded-md", t),
...n
});
}
function CommandDialog({ title: t = "Command Palette", description: n = "Search for a command to run...", children: i, className: a, showCloseButton: o = !0,...s }) {
return /* @__PURE__ */ jsxs(Dialog, {
...s,
children: [/* @__PURE__ */ jsxs(DialogHeader, {
className: "sr-only",
children: [/* @__PURE__ */ jsx(DialogTitle, { children: t }), /* @__PURE__ */ jsx(DialogDescription, { children: n })]
}), /* @__PURE__ */ jsx(DialogContent, {
className: cn("overflow-hidden p-0", a),
showCloseButton: o,
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: i
})
})]
});
}
function CommandInput({ className: t,...n }) {
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", t),
...n
})]
});
}
function CommandList({ className: t,...n }) {
return /* @__PURE__ */ jsx(_e.List, {
"data-slot": "command-list",
className: cn("max-h-[300px] scroll-py-1 overflow-y-auto overflow-x-hidden", t),
...n
});
}
function CommandEmpty({ ...t }) {
return /* @__PURE__ */ jsx(_e.Empty, {
"data-slot": "command-empty",
className: "py-6 text-center text-sm",
...t
});
}
function CommandGroup({ className: t,...n }) {
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", t),
...n
});
}
function CommandSeparator({ className: t,...n }) {
return /* @__PURE__ */ jsx(_e.Separator, {
"data-slot": "command-separator",
className: cn("bg-border -mx-1 h-px", t),
...n
});
}
function CommandItem({ className: t,...n }) {
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", t),
...n
});
}
function CommandShortcut({ className: t,...n }) {
return /* @__PURE__ */ jsx("span", {
"data-slot": "command-shortcut",
className: cn("text-muted-foreground ml-auto text-xs tracking-widest", t),
...n
});
}
function Command(t) {
let { endpoint: n, openAddCollectionDialog: i, addOperation: a, runActiveOperation: o, addTab: s, setActiveTab: c, tabs: d, preflight: f, env: g, plugins: b } = useLaboratory(), x = useLaboratory(), [S, C] = useState(t.open ?? !1);
return useEffect(() => {
C(t.open ?? !1);
}, [t.open]), useEffect(() => {
let n = (n) => {
if (n.key === "j" && (n.metaKey || n.ctrlKey)) {
n.preventDefault();
let i = !S;
C(i), t.onOpenChange?.(i);
}
};
return document.addEventListener("keydown", n), () => document.removeEventListener("keydown", n);
}, [S, t]), /* @__PURE__ */ jsx(Fragment$1, { children: /* @__PURE__ */ jsxs(CommandDialog, {
open: S,
onOpenChange: (n) => {
C(n), t.onOpenChange?.(n);
},
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: !n,
onSelect: () => {
o(n), C(!1);
},
children: [
/* @__PURE__ */ jsx(PlayIcon, {}),
/* @__PURE__ */ jsx("span", { children: "Run operation" }),
/* @__PURE__ */ jsx(CommandShortcut, { children: "⌘↵" })
]
}), /* @__PURE__ */ jsxs(CommandItem, {
onSelect: () => {
let t = a({
name: "",
query: "",
variables: "",
headers: "",
extensions: ""
}), n = s({
type: "operation",
data: t
});
c(n), C(!1);
},
children: [/* @__PURE__ */ jsx(FilePlus2Icon, {}), /* @__PURE__ */ jsx("span", { children: "Add operation" })]
})]
}),
/* @__PURE__ */ jsx(CommandSeparator, {}),
/* @__PURE__ */ jsx(CommandGroup, {
heading: "Collections",
children: /* @__PURE__ */ jsxs(CommandItem, {
onSelect: () => {
i?.(), C(!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 t = d.find((t) => t.type === "env") ?? s({
type: "env",
data: g ?? { variables: {} }
});
c(t), C(!1);
},
children: [/* @__PURE__ */ jsx(ServerIcon, {}), /* @__PURE__ */ jsx("span", { children: "Open Environment Variables" })]
}), /* @__PURE__ */ jsxs(CommandItem, {
onSelect: () => {
let t = d.find((t) => t.type === "preflight") ?? s({
type: "preflight",
data: f ?? { script: "" }
});
c(t), C(!1);
},
children: [/* @__PURE__ */ jsx(RefreshCcwIcon, {}), /* @__PURE__ */ jsx("span", { children: "Open Preflight Script" })]
})]
}),
b.filter((t) => !!t.commands?.length).map((t) => /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(CommandSeparator, {}), /* @__PURE__ */ jsx(CommandGroup, {
heading: t.name,
children: t.commands?.map((t, n) => /* @__PURE__ */ jsxs(CommandItem, {
onSelect: () => {
t.onClick(x, {}), C(!1);
},
children: [typeof t.icon == "function" ? t.icon(x, {}) : t.icon, /* @__PURE__ */ jsx("span", { children: typeof t.name == "function" ? t.name(x, {}) : t.name })]
}, n))
})] }, t.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-Cf0Cb2u_.js").then((t) => t.TagAutoInterpolationDollar)
}), registerLanguage({
id: "freemarker2.tag-angle.interpolation-dollar",
aliases: ["FreeMarker2 (Angle/Dollar)", "Apache FreeMarker2 (Angle/Dollar)"],
loader: () => import("./freemarker2-Cf0Cb2u_.js").then((t) => t.TagAngleInterpolationDollar)
}), registerLanguage({
id: "freemarker2.tag-bracket.interpolation-dollar",
aliases: ["FreeMarker2 (Bracket/Dollar)", "Apache FreeMarker2 (Bracket/Dollar)"],
loader: () => import("./freemarker2-Cf0Cb2u_.js").then((t) => t.TagBracketInterpolationDollar)
}), registerLanguage({
id: "freemarker2.tag-angle.interpolation-bracket",
aliases: ["FreeMarker2 (Angle/Bracket)", "Apache FreeMarker2 (Angle/Bracket)"],
loader: () => import("./freemarker2-Cf0Cb2u_.js").then((t) => t.TagAngleInterpolationBracket)
}), registerLanguage({
id: "freemarker2.tag-bracket.interpolation-bracket",
aliases: ["FreeMarker2 (Bracket/Bracket)", "Apache FreeMarker2 (Bracket/Bracket)"],
loader: () => import("./freemarker2-Cf0Cb2u_.js").then((t) => t.TagBracketInterpolationBracket)
}), registerLanguage({
id: "freemarker2.tag-auto.interpolation-dollar",
aliases: ["FreeMarker2 (Auto/Dollar)", "Apache FreeMarker2 (Auto/Dollar)"],
loader: () => import("./freemarker2-Cf0Cb2u_.js").then((t) => t.TagAutoInterpolationDollar)
}), registerLanguage({
id: "freemarker2.tag-auto.interpolation-bracket",
aliases: ["FreeMarker2 (Auto/Bracket)", "Apache FreeMarker2 (Auto/Bracket)"],
loader: () => import("./freemarker2-Cf0Cb2u_.js").then((t) => t.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-Cqmgi-YE.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-Bbvq7LBi.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-BJTI42Uh.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-CANmaoYR.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-CgUIqwva.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-B4X-s-7d.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-RlbijOZc.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-B9TjLPoe.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-BrFmlPeD.js")
}), registerLanguage({
id: "yaml",
extensions: [".yaml", ".yml"],
aliases: [
"YAML",
"yaml",
"YML",
"yml"
],
mimetypes: ["application/x-yaml", "text/x-yaml"],
loader: () => import("./yaml-vmjnrT9v.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 = (t, n, i, a) => {
if (n && typeof n == "object" || typeof n == "function") for (let o of __getOwnPropNames$1(n)) !__hasOwnProp$1.call(t, o) && o !== i && __defProp$1(t, o, {
get: () => n[o],
enumerable: !(a = __getOwnPropDesc$1(n, o)) || a.enumerable
});
return t;
}, __reExport$1 = (t, n, i) => (__copyProps$1(t, n, "default"), i && __copyProps$1(i, n, "default")), monaco_editor_core_exports$1 = {};
__reExport$1(monaco_editor_core_exports$1, editor_api_exports);
var LanguageServiceDefaultsImpl$1 = class {
constructor(t, n, i) {
this._onDidChange = new monaco_editor_core_exports$1.Emitter(), this._languageId = t, this.setOptions(n), this.setModeConfiguration(i);
}
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(t) {
this._options = t || /* @__PURE__ */ Object.create(null), this._onDidChange.fire(this);
}
setDiagnosticsOptions(t) {
this.setOptions(t);
}
setModeConfiguration(t) {
this._modeConfiguration = t || /* @__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-sXc4QLzd.js");
}
monaco_editor_core_exports$1.languages.onLanguage("less", () => {
getMode$2().then((t) => t.setupMode(lessDefaults));
}), monaco_editor_core_exports$1.languages.onLanguage("scss", () => {
getMode$2().then((t) => t.setupMode(scssDefaults));
}), monaco_editor_core_exports$1.languages.onLanguage("css", () => {
getMode$2().then((t) => t.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 = (t, n, i, a) => {
if (n && typeof n == "object" || typeof n == "function") for (let o of __getOwnPropNames(n)) !__hasOwnProp.call(t, o) && o !== i && __defProp(t, o, {
get: () => n[o],
enumerable: !(a = __getOwnPropDesc(n, o)) || a.enumerable
});
return t;
}, __reExport = (t, n, i) => (__copyProps(t, n, "default"), i && __copyProps(i, n, "default")), monaco_editor_core_exports = {};
__reExport(monaco_editor_core_exports, editor_api_exports);
var LanguageServiceDefaultsImpl = class {
constructor(t, n, i) {
this._onDidChange = new monaco_editor_core_exports.Emitter(), this._languageId = t, this.setOptions(n), this.setModeConfiguration(i);
}
get onDidChange() {
return this._onDidChange.event;
}
get languageId() {
return this._languageId;
}
get options() {
return this._options;
}
get modeConfiguration() {
return this._modeConfiguration;
}
setOptions(t) {
this._options = t || /* @__PURE__ */ Object.create(null), this._onDidChange.fire(this);
}
setModeConfiguration(t) {
this._modeConfiguration = t || /* @__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(t) {
return {
completionItems: !0,
hovers: !0,
documentSymbols: !0,
links: !0,
documentHighlights: !0,
rename: !0,
colors: !0,
foldingRanges: !0,
selectionRanges: !0,
diagnostics: t === htmlLanguageId,
documentFormattingEdits: t === htmlLanguageId,
documentRangeFormattingEdits: t === 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-CJoHCvNX.js");
}
function registerHTMLLanguageService(t, n = optionsDefault, i = getConfigurationDefault(t)) {
let a = new LanguageServiceDefaultsImpl(t, n, i), o, s = monaco_editor_core_exports.languages.onLanguage(t, async () => {
o = (await getMode$1()).setupMode(a);
});
return {
defaults: a,
dispose() {
s.dispose(), o?.dispose(), o = void 0;
}
};
}
var editor_main_exports = /* @__PURE__ */ __export({
CancellationTokenSource: () => CancellationTokenSource,
Emitter: () => Emitter,
KeyCode: () => KeyCode,
KeyMod: () => KeyMod,
MarkerSeverity: () => MarkerSeverity,
MarkerTag: () => MarkerTag,
Position: () => Position,
Range: () => Range$1,
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: t, schemas: n, modeConfiguration: i, formattingOptions: a, diagnosticSettings: o, completionSettings: s }) {
this._languageId = t, n && this.setSchemaConfig(n), this._modeConfiguration = i, this._completionSettings = s, this._diagnosticSettings = o, this._formattingOptions = a;
}
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(t) {
this._schemas = t, this._schemasById = t.reduce((t, n) => (t[n.uri] = n, t), Object.create(null)), this._onDidChange.fire(this);
}
setExternalFragmentDefinitions(t) {
this._externalFragmentDefinitions = t;
}
setModeConfiguration(t) {
this._modeConfiguration = t, this._onDidChange.fire(this);
}
setFormattingOptions(t) {
this._formattingOptions = t, this._onDidChange.fire(this);
}
setDiagnosticSettings(t) {
this._diagnosticSettings = t, this._onDidChange.fire(this);
}
setCompletionSettings(t) {
this._completionSettings = t, this._onDidChange.fire(this);
}
};
function create$1(t, n) {
if (!n) return new MonacoGraphQLAPI({
languageId: t,
schemas: [],
formattingOptions: formattingDefaults,
modeConfiguration: modeConfigurationDefault,
diagnosticSettings: diagnosticSettingDefault,
completionSettings: completionSettingDefault
});
let { schemas: i, formattingOptions: a, modeConfiguration: o, diagnosticSettings: s, completionSettings: c } = n;
return new MonacoGraphQLAPI({
languageId: t,
schemas: i,
formattingOptions: {
...formattingDefaults,
...a,
prettierConfig: {
...formattingDefaults.prettierConfig,
...a?.prettierConfig
}
},
modeConfiguration: {
...modeConfigurationDefault,
...o
},
diagnosticSettings: {
...diagnosticSettingDefault,
...s
},
completionSettings: {
...completionSettingDefault,
...c
}
});
}
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(t) {
return api || (api = create$1("graphql", t), languages.graphql = { api }, getMode().then((t) => t.setupMode(api))), api;
}
function getMode() {
return import("./graphqlMode-DdopYWmP.js");
}
function _arrayLikeToArray(t, n) {
(n == null || n > t.length) && (n = t.length);
for (var i = 0, a = Array(n); i < n; i++) a[i] = t[i];
return a;
}
function _arrayWithHoles(t) {
if (Array.isArray(t)) return t;
}
function _defineProperty$1(t, n, i) {
return (n = _toPropertyKey(n)) in t ? Object.defineProperty(t, n, {
value: i,
enumerable: !0,
configurable: !0,
writable: !0
}) : t[n] = i, t;
}
function _iterableToArrayLimit(t, n) {
var i = t == null ? null : typeof Symbol < "u" && t[Symbol.iterator] || t["@@iterator"];
if (i != null) {
var a, o, s, c, d = [], f = !0, g = !1;
try {
if (s = (i = i.call(t)).next, n !== 0) for (; !(f = (a = s.call(i)).done) && (d.push(a.value), d.length !== n); f = !0);
} catch (t) {
g = !0, o = t;
} finally {
try {
if (!f && i.return != null && (c = i.return(), Object(c) !== c)) return;
} finally {
if (g) throw o;
}
}
return d;
}
}
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(t, n) {
var i = Object.keys(t);
if (Object.getOwnPropertySymbols) {
var a = Object.getOwnPropertySymbols(t);
n && (a = a.filter(function(n) {
return Object.getOwnPropertyDescriptor(t, n).enumerable;
})), i.push.apply(i, a);
}
return i;
}
function _objectSpread2(t) {
for (var n = 1; n < arguments.length; n++) {
var i = arguments[n] == null ? {} : arguments[n];
n % 2 ? ownKeys$1(Object(i), !0).forEach(function(n) {
_defineProperty$1(t, n, i[n]);
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(t, Object.getOwnPropertyDescriptors(i)) : ownKeys$1(Object(i)).forEach(function(n) {
Object.defineProperty(t, n, Object.getOwnPropertyDescriptor(i, n));
});
}
return t;
}
function _objectWithoutProperties(t, n) {
if (t == null) return {};
var i, a, o = _objectWithoutPropertiesLoose(t, n);
if (Object.getOwnPropertySymbols) {
var s = Object.getOwnPropertySymbols(t);
for (a = 0; a < s.length; a++) i = s[a], n.indexOf(i) === -1 && {}.propertyIsEnumerable.call(t, i) && (o[i] = t[i]);
}
return o;
}
function _objectWithoutPropertiesLoose(t, n) {
if (t == null) return {};
var i = {};
for (var a in t) if ({}.hasOwnProperty.call(t, a)) {
if (n.indexOf(a) !== -1) continue;
i[a] = t[a];
}
return i;
}
function _slicedToArray(t, n) {
return _arrayWithHoles(t) || _iterableToArrayLimit(t, n) || _unsupportedIterableToArray(t, n) || _nonIterableRest();
}
function _toPrimitive(t, n) {
if (typeof t != "object" || !t) return t;
var i = t[Symbol.toPrimitive];
if (i !== void 0) {
var a = i.call(t, n);
if (typeof a != "object") return a;
throw TypeError("@@toPrimitive must return a primitive value.");
}
return (n === "string" ? String : Number)(t);
}
function _toPropertyKey(t) {
var n = _toPrimitive(t, "string");
return typeof n == "symbol" ? n : n + "";
}
function _unsupportedIterableToArray(t, n) {
if (t) {
if (typeof t == "string") return _arrayLikeToArray(t, n);
var i = {}.toString.call(t).slice(8, -1);
return i === "Object" && t.constructor && (i = t.constructor.name), i === "Map" || i === "Set" ? Array.from(t) : i === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i) ? _arrayLikeToArray(t, n) : void 0;
}
}
function _defineProperty(t, n, i) {
return n in t ? Object.defineProperty(t, n, {
value: i,
enumerable: !0,
configurable: !0,
writable: !0
}) : t[n] = i, t;
}
function ownKeys(t, n) {
var i = Object.keys(t);
if (Object.getOwnPropertySymbols) {
var a = Object.getOwnPropertySymbols(t);
n && (a = a.filter(function(n) {
return Object.getOwnPropertyDescriptor(t, n).enumerable;
})), i.push.apply(i, a);
}
return i;
}
function _objectSpread2$1(t) {
for (var n = 1; n < arguments.length; n++) {
var i = arguments[n] == null ? {} : arguments[n];
n % 2 ? ownKeys(Object(i), !0).forEach(function(n) {
_defineProperty(t, n, i[n]);
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(t, Object.getOwnPropertyDescriptors(i)) : ownKeys(Object(i)).forEach(function(n) {
Object.defineProperty(t, n, Object.getOwnPropertyDescriptor(i, n));
});
}
return t;
}
function compose$1() {
var t = [...arguments];
return function(n) {
return t.reduceRight(function(t, n) {
return n(t);
}, n);
};
}
function curry$1(t) {
return function n() {
var i = this, a = [...arguments];
return a.length >= t.length ? t.apply(this, a) : function() {
var t = [...arguments];
return n.apply(i, [].concat(a, t));
};
};
}
function isObject$2(t) {
return {}.toString.call(t).includes("Object");
}
function isEmpty(t) {
return !Object.keys(t).length;
}
function isFunction$1(t) {
return typeof t == "function";
}
function hasOwnProperty(t, n) {
return Object.prototype.hasOwnProperty.call(t, n);
}
function validateChanges(t, n) {
return isObject$2(n) || errorHandler$1("changeType"), Object.keys(n).some(function(n) {
return !hasOwnProperty(t, n);
}) && errorHandler$1("changeField"), n;
}
function validateSelector(t) {
isFunction$1(t) || errorHandler$1("selectorType");
}
function validateHandler(t) {
isFunction$1(t) || isObject$2(t) || errorHandler$1("handlerType"), isObject$2(t) && Object.values(t).some(function(t) {
return !isFunction$1(t);
}) && errorHandler$1("handlersType");
}
function validateInitial(t) {
t || errorHandler$1("initialIsRequired"), isObject$2(t) || errorHandler$1("initialType"), isEmpty(t) && errorHandler$1("initialContent");
}
function throwError$1(t, n) {
throw Error(t[n] || t.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(t) {
var n = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
validators$1.initial(t), validators$1.handler(n);
var i = { current: t }, a = curry$1(didStateUpdate)(i, n), o = curry$1(updateState)(i), s = curry$1(validators$1.changes)(t), c = curry$1(extractChanges)(i);
function d() {
var t = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : function(t) {
return t;
};
return validators$1.selector(t), t(i.current);
}
function f(t) {
compose$1(a, o, s, c)(t);
}
return [d, f];
}
function extractChanges(t, n) {
return isFunction$1(n) ? n(t.current) : n;
}
function updateState(t, n) {
return t.current = _objectSpread2$1(_objectSpread2$1({}, t.current), n), n;
}
function didStateUpdate(t, n, i) {
return isFunction$1(n) ? n(t.current) : Object.keys(i).forEach(function(i) {
return n[i]?.call(n, t.current[i]);
}), i;
}
var state_local_default = { create }, config = { paths: { vs: "https://cdn.jsdelivr.net/npm/monaco-editor@0.55.1/min/vs" } };
function curry(t) {
return function n() {
var i = this, a = [...arguments];
return a.length >= t.length ? t.apply(this, a) : function() {
var t = [...arguments];
return n.apply(i, [].concat(a, t));
};
};
}
function isObject$1(t) {
return {}.toString.call(t).includes("Object");
}
function validateConfig(t) {
return t || errorHandler("configIsRequired"), isObject$1(t) || errorHandler("configType"), t.urls ? (informAboutDeprecation(), { paths: { vs: t.urls.monacoBase } }) : t;
}
function informAboutDeprecation() {
console.warn(errorMessages.deprecation);
}
function throwError(t, n) {
throw Error(t[n] || t.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 t = [...arguments];
return function(n) {
return t.reduceRight(function(t, n) {
return n(t);
}, n);
};
};
function merge(t, n) {
return Object.keys(n).forEach(function(i) {
n[i] instanceof Object && t[i] && Object.assign(n[i], merge(t[i], n[i]));
}), _objectSpread2(_objectSpread2({}, t), n);
}
var CANCELATION_MESSAGE = {
type: "cancelation",
msg: "operation is manually canceled"
};
function makeCancelable(t) {
var n = !1, i = new Promise(function(i, a) {
t.then(function(t) {
return n ? a(CANCELATION_MESSAGE) : i(t);
}), t.catch(a);
});
return i.cancel = function() {
return n = !0;
}, i;
}
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$2 = _state$create2[0], setState = _state$create2[1];
function config$1(t) {
var n = validators.config(t), i = n.monaco, a = _objectWithoutProperties(n, _excluded);
setState(function(t) {
return {
config: merge(t.config, a),
monaco: i
};
});
}
function init() {
var t = getState$2(function(t) {
var n = t.monaco, i = t.isInitialized, a = t.resolve;
return {
monaco: n,
isInitialized: i,
resolve: a
};
});
if (!t.isInitialized) {
if (setState({ isInitialized: !0 }), t.monaco) return t.resolve(t.monaco), makeCancelable(wrapperPromise);
if (window.monaco && window.monaco.editor) return storeMonacoInstance(window.monaco), t.resolve(window.monaco), makeCancelable(wrapperPromise);
compose(injectScripts, getMonacoLoaderScript)(configureLoader);
}
return makeCancelable(wrapperPromise);
}
function injectScripts(t) {
return document.body.appendChild(t);
}
function createScript(t) {
var n = document.createElement("script");
return t && (n.src = t), n;
}
function getMonacoLoaderScript(t) {
var n = getState$2(function(t) {
var n = t.config, i = t.reject;
return {
config: n,
reject: i
};
}), i = createScript(`${n.config.paths.vs}/loader.js`);
return i.onload = function() {
return t();
}, i.onerror = n.reject, i;
}
function configureLoader() {
var t = getState$2(function(t) {
var n = t.config, i = t.resolve, a = t.reject;
return {
config: n,
resolve: i,
reject: a
};
}), n = window.require;
n.config(t.config), n(["vs/editor/editor.main"], function(n) {
var i = n.m || n;
storeMonacoInstance(i), t.resolve(i);
}, function(n) {
t.reject(n);
});
}
function storeMonacoInstance(t) {
getState$2().monaco || setState({ monaco: t });
}
function __getMonacoInstance() {
return getState$2(function(t) {
return t.monaco;
});
}
var wrapperPromise = new Promise(function(t, n) {
return setState({
resolve: t,
reject: n
});
}), loader = {
config: config$1,
init,
__getMonacoInstance
}, v$1 = {
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: t }) {
return React.createElement("div", { style: Y.container }, t);
}
var $ = Me;
function Ee({ width: t, height: n, isEditorReady: i, loading: a, _ref: o, className: s, wrapperProps: c }) {
return React.createElement("section", {
style: {
...v$1.wrapper,
width: t,
height: n
},
...c
}, !i && React.createElement($, null, a), React.createElement("div", {
ref: o,
style: {
...v$1.fullWidth,
...!i && v$1.hide
},
className: s
}));
}
var H = memo(Ee);
function Ce(t) {
useEffect(t, []);
}
var k = Ce;
function he(t, n, i = !0) {
let a = useRef(!0);
useEffect(a.current || !i ? () => {
a.current = !1;
} : t, n);
}
var l = he;
function D() {}
function h(t, n, i, a) {
return De(t, a) || be(t, n, i, a);
}
function De(t, n) {
return t.editor.getModel(te(t, n));
}
function be(t, n, i, a) {
return t.editor.createModel(n, i, a ? te(t, a) : void 0);
}
function te(t, n) {
return t.Uri.parse(n);
}
function Oe({ original: t, modified: n, language: i, originalLanguage: a, modifiedLanguage: o, originalModelPath: s, modifiedModelPath: c, keepCurrentOriginalModel: d = !1, keepCurrentModifiedModel: f = !1, theme: g = "light", loading: b = "Loading...", options: x = {}, height: S = "100%", width: C = "100%", className: w, wrapperProps: E = {}, beforeMount: O = D, onMount: A = D }) {
let [M, F] = useState(!1), [I, R] = useState(!0), qA = useRef(null), V = useRef(null), q = useRef(null), JA = useRef(A), YA = useRef(O), XA = useRef(!1);
k(() => {
let t = loader.init();
return t.then((t) => (V.current = t) && R(!1)).catch((t) => t?.type !== "cancelation" && console.error("Monaco initialization: error:", t)), () => qA.current ? $A() : t.cancel();
}), l(() => {
if (qA.current && V.current) {
let n = qA.current.getOriginalEditor(), o = h(V.current, t || "", a || i || "text", s || "");
o !== n.getModel() && n.setModel(o);
}
}, [s], M), l(() => {
if (qA.current && V.current) {
let t = qA.current.getModifiedEditor(), a = h(V.current, n || "", o || i || "text", c || "");
a !== t.getModel() && t.setModel(a);
}
}, [c], M), l(() => {
let t = qA.current.getModifiedEditor();
t.getOption(V.current.editor.EditorOption.readOnly) ? t.setValue(n || "") : n !== t.getValue() && (t.executeEdits("", [{
range: t.getModel().getFullModelRange(),
text: n || "",
forceMoveMarkers: !0
}]), t.pushUndoStop());
}, [n], M), l(() => {
qA.current?.getModel()?.original.setValue(t || "");
}, [t], M), l(() => {
let { original: t, modified: n } = qA.current.getModel();
V.current.editor.setModelLanguage(t, a || i || "text"), V.current.editor.setModelLanguage(n, o || i || "text");
}, [
i,
a,
o
], M), l(() => {
V.current?.editor.setTheme(g);
}, [g], M), l(() => {
qA.current?.updateOptions(x);
}, [x], M);
let ZA = useCallback(() => {
if (!V.current) return;
YA.current(V.current);
let d = h(V.current, t || "", a || i || "text", s || ""), f = h(V.current, n || "", o || i || "text", c || "");
qA.current?.setModel({
original: d,
modified: f
});
}, [
i,
n,
o,
t,
a,
s,
c
]), QA = useCallback(() => {
!XA.current && q.current && (qA.current = V.current.editor.createDiffEditor(q.current, {
automaticLayout: !0,
...x
}), ZA(), V.current?.editor.setTheme(g), F(!0), XA.current = !0);
}, [
x,
g,
ZA
]);
useEffect(() => {
M && JA.current(qA.current, V.current);
}, [M]), useEffect(() => {
!I && !M && QA();
}, [
I,
M,
QA
]);
function $A() {
let t = qA.current?.getModel();
d || t?.original?.dispose(), f || t?.modified?.dispose(), qA.current?.dispose();
}
return React.createElement(H, {
width: C,
height: S,
isEditorReady: M,
loading: b,
_ref: q,
className: w,
wrapperProps: E
});
}
memo(Oe);
function He(t) {
let n = useRef();
return useEffect(() => {
n.current = t;
}, [t]), n.current;
}
var se = He, _$1 = /* @__PURE__ */ new Map();
function Ve({ defaultValue: t, defaultLanguage: n, defaultPath: i, value: a, language: o, path: s, theme: c = "light", line: d, loading: f = "Loading...", options: g = {}, overrideServices: b = {}, saveViewState: x = !0, keepCurrentModel: S = !1, width: C = "100%", height: w = "100%", className: E, wrapperProps: O = {}, beforeMount: A = D, onMount: M = D, onChange: F, onValidate: I = D }) {
let [R, qA] = useState(!1), [V, q] = useState(!0), JA = useRef(null), YA = useRef(null), XA = useRef(null), ZA = useRef(M), QA = useRef(A), $A = useRef(void 0), ej = useRef(a), tj = se(s), nj = useRef(!1), rj = useRef(!1);
k(() => {
let t = loader.init();
return t.then((t) => (JA.current = t) && q(!1)).catch((t) => t?.type !== "cancelation" && console.error("Monaco initialization: error:", t)), () => YA.current ? aj() : t.cancel();
}), l(() => {
let c = h(JA.current, t || a || "", n || o || "", s || i || "");
c !== YA.current?.getModel() && (x && _$1.set(tj, YA.current?.saveViewState()), YA.current?.setModel(c), x && YA.current?.restoreViewState(_$1.get(s)));
}, [s], R), l(() => {
YA.current?.updateOptions(g);
}, [g], R), l(() => {
!YA.current || a === void 0 || (YA.current.getOption(JA.current.editor.EditorOption.readOnly) ? YA.current.setValue(a) : a !== YA.current.getValue() && (rj.current = !0, YA.current.executeEdits("", [{
range: YA.current.getModel().getFullModelRange(),
text: a,
forceMoveMarkers: !0
}]), YA.current.pushUndoStop(), rj.current = !1));
}, [a], R), l(() => {
let t = YA.current?.getModel();
R && t && o && JA.current?.editor.setModelLanguage(t, o);
}, [o, R], R), l(() => {
d !== void 0 && YA.current?.revealLine(d);
}, [d], R), l(() => {
JA.current?.editor.setTheme(c);
}, [c], R);
let ij = useCallback(() => {
if (!(!XA.current || !JA.current) && !nj.current) {
QA.current(JA.current);
let f = s || i, S = h(JA.current, a || t || "", n || o || "", f || "");
YA.current = JA.current?.editor.create(XA.current, {
model: S,
automaticLayout: !0,
...g
}, b), x && YA.current.restoreViewState(_$1.get(f)), JA.current.editor.setTheme(c), d !== void 0 && YA.current.revealLine(d), qA(!0), nj.current = !0;
}
}, [
t,
n,
i,
a,
o,
s,
g,
b,
x,
c,
d
]);
useEffect(() => {
R && ZA.current(YA.current, JA.current);
}, [R]), useEffect(() => {
!V && !R && ij();
}, [
V,
R,
ij
]), ej.current = a, useEffect(() => {
R && F && ($A.current?.dispose(), $A.current = YA.current?.onDidChangeModelContent((t) => {
rj.current || F(YA.current.getValue(), t);
}));
}, [R, F]), useEffect(() => {
if (R) {
let t = JA.current.editor.onDidChangeMarkers((t) => {
let n = YA.current.getModel()?.uri;
if (n && t.find((t) => t.path === n.path)) {
let t = JA.current.editor.getModelMarkers({ resource: n });
I?.(t);
}
});
return () => {
t?.dispose();
};
}
return () => {};
}, [R, I]);
function aj() {
$A.current?.dispose(), S ? x && _$1.set(s, YA.current.saveViewState()) : YA.current.getModel()?.dispose(), YA.current.dispose(), YA.current = null, nj.current = !1, qA(!1);
}
return React.createElement(H, {
width: C,
height: w,
isEditorReady: R,
loading: f,
_ref: XA,
className: E,
wrapperProps: O
});
}
var Ft$1 = 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((t, n) => {
let i = useId(), a = useRef(null), { introspection: s, endpoint: c, theme: f } = useLaboratory(), g = t.language === "json" || t.defaultLanguage === "json", [b, x] = useState(!!languages.typescript), [S, C] = useState(languages.getLanguages().some((t) => t.id === "json")), w = useRef(null);
useEffect(() => {
s && (w.current ? w.current.setSchemaConfig([{
introspectionJSON: s,
uri: `schema_${c}.graphql`
}]) : (w.current = initializeMode({
schemas: [{
introspectionJSON: s,
uri: `schema_${c}.graphql`
}],
diagnosticSettings: t.uri && t.variablesUri ? {
validateVariablesJSON: { [t.uri.toString()]: [t.variablesUri.toString()] },
jsonDiagnosticSettings: { allowComments: !0 }
} : void 0
}), w.current.setCompletionSettings({ __experimental__fillLeafsOnComplete: !0 })));
}, [
c,
s,
t.uri?.toString(),
t.variablesUri?.toString()
]), useEffect(() => {
(async function() {
if (g && !S && (await import("./monaco.contribution-pnEHc2s_.js"), C(!0)), languages.typescript || (await import("./monaco.contribution-lY42bfA6.js"), x(!0)), !t.extraLibs?.length) return;
let n = languages.typescript;
if (!n) return;
let a = Object.values(n.typescriptDefaults.getExtraLibs()).map((t) => t.content);
if (t.extraLibs.every((t) => a.includes(t))) return;
let o = i.replace(/[^a-zA-Z0-9_-]/g, "_");
n.typescriptDefaults.setCompilerOptions({
target: n.ScriptTarget.ESNext,
module: n.ModuleKind.ESNext,
allowNonTsExtensions: !0,
allowJs: !0,
lib: ["esnext", "webworker"]
}), n.typescriptDefaults.setExtraLibs(t.extraLibs.map((t, n) => ({
content: t,
filePath: `file:///hive-lab-globals-${o}-${n}.d.ts`
})));
})();
}, [
i,
S,
t.extraLibs,
g
]), useImperativeHandle(n, () => ({ setValue: (t) => {
a.current && a.current.setValue(t);
} }), []);
let E = useCallback((n) => {
let i = null, a = () => {
i?.clear();
try {
let a = n.getValue(), s = parse(a).definitions.find((t) => {
if (t.kind !== "OperationDefinition" || !t.loc) return !1;
let i = n.getPosition();
if (i) return t.loc.startToken.line <= i.lineNumber && t.loc.endToken.line >= i.lineNumber;
});
if (s?.loc) {
let a = [];
s.loc.startToken.line > 1 && a.push({
range: new Range$1(0, 0, s.loc.startToken.line - 1, s.loc.startToken.column),
options: {
isWholeLine: !0,
inlineClassName: "inactive-line"
}
});
let c = n.getModel()?.getLineCount() ?? 0, d = n.getModel()?.getLineMaxColumn(c) ?? 0;
s.loc.endToken.line < c && a.push({
range: new Range$1(s.loc.endToken.line + 1, s.loc.endToken.column, c, d),
options: {
isWholeLine: !0,
inlineClassName: "inactive-line"
}
}), i = n.createDecorationsCollection(a), t.onOperationNameChange?.(s.name?.value ?? null);
}
} catch {}
};
n.onDidChangeCursorPosition(a), a();
}, [t.onOperationNameChange]), O = useCallback((t) => {
a.current = t, E(t);
}, [E]), A = useRef(null);
return useLayoutEffect(() => {
A.current = a.current?.getPosition() ?? null;
}, [t.value]), useEffect(() => {
a.current && A.current && (a.current.setPosition(A.current), A.current = null);
}, [t.value]), !b && t.language === "typescript" || !S && g ? null : /* @__PURE__ */ jsx("div", {
className: "size-full overflow-hidden",
children: /* @__PURE__ */ jsx(Ft$1, {
className: "size-full",
...t,
theme: f === "dark" ? "hive-laboratory-dark" : "hive-laboratory-light",
onMount: O,
loading: null,
options: {
...t.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: t.uri?.toString()
})
});
}), Env = () => {
let { env: t, setEnv: n } = useLaboratory();
return /* @__PURE__ */ jsx("div", {
className: "bg-card size-full",
children: /* @__PURE__ */ jsx(Editor, {
defaultValue: Object.entries(t?.variables ?? {}).map(([t, n]) => `${t}=${n}`).join("\n"),
onChange: (t) => {
n({ variables: Object.fromEntries(t?.split("\n").filter((t) => t.trim() && !t.trim().startsWith("#")).map((t) => {
let n = t.split(/=(.*)/s);
return [n[0].trim(), (n[1] ?? "").trim()];
}) ?? []) });
},
language: "dotenv",
options: { scrollbar: { horizontal: "hidden" } }
})
});
}, HistoryOperationItem = (t) => {
let { activeTab: n, addTab: i, setActiveTab: a, deleteHistory: o } = useLaboratory(), s = useMemo(() => n?.type === "history" && n.data.id === t.historyItem.id, [n, t.historyItem]), c = useMemo(() => t.historyItem.status ? t.historyItem.status < 200 || t.historyItem.status >= 300 || "response" in t.historyItem && JSON.parse(t.historyItem.response).errors : !0, [t.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": s }),
onClick: () => {
a(i({
type: "history",
data: t.historyItem,
readOnly: !0
}));
},
children: [
/* @__PURE__ */ jsx(HistoryIcon, { className: cn("size-4 text-indigo-400", {
"text-green-500": !t.historyItem.status || t.historyItem.status >= 200 && t.historyItem.status < 300,
"text-red-500": c
}) }),
/* @__PURE__ */ jsx("span", {
className: "text-muted-foreground",
children: format(new Date(t.historyItem.createdAt), "HH:mm")
}),
/* @__PURE__ */ jsx("div", {
className: "truncate",
children: t.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: (t) => {
t.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: (n) => {
n.stopPropagation(), o(t.historyItem.id);
},
children: "Delete"
})
})] })] })] })
}), /* @__PURE__ */ jsx(TooltipContent, { children: "Delete history" })] })
})
]
});
}, HistoryGroup = (t) => {
let { deleteHistoryByDay: n } = useLaboratory(), [i, a] = useState(!1);
return /* @__PURE__ */ jsxs(Collapsible, {
open: i,
onOpenChange: a,
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(i ? FolderOpenIcon : FolderClockIcon, { className: "text-muted-foreground size-4" }),
t.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: (t) => {
t.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 ",
t.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: (i) => {
i.stopPropagation(), n(t.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: t.group.items.map((t) => /* @__PURE__ */ jsx(HistoryOperationItem, { historyItem: t }, t.id))
})]
});
}, History = () => {
let { history: t, deleteAllHistory: n, tabs: i, setTabs: a, setActiveTab: o } = useLaboratory(), s = useMemo(() => t.sort((t, n) => new Date(n.createdAt).getTime() - new Date(t.createdAt).getTime()), [t]), c = useMemo(() => s.reduce((t, n) => {
let i = format(new Date(n.createdAt), "dd MMM yyyy"), a = t.find((t) => t.date === i);
return a || (a = {
date: i,
items: []
}, t.push(a)), a.items.push(n), t;
}, []), [s]), d = useCallback(() => {
n(), a(i.filter((t) => t.type !== "history"));
let t = i.find((t) => t.type !== "history");
t && o(t);
}, [
n,
a,
i,
o
]);
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: t.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: (t) => {
t.stopPropagation(), d();
},
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: c.length > 0 ? c.map((t) => /* @__PURE__ */ jsx(HistoryGroup, { group: t }, t.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, {})]
})
})]
});
}, FlattenNodePathSegmentSchema = z.union([
z.object({ Field: z.string() }),
z.object({ TypeCondition: z.array(z.string()) }),
z.literal("@")
]), FlattenNodePathSchema = z.array(FlattenNodePathSegmentSchema), FlattenNodePathsSchema = z.array(FlattenNodePathSchema), FetchNodePathSegmentSchema = z.union([z.object({ Key: z.string() }), z.object({ TypenameEquals: z.array(z.string()) })]), ValueSetterSchema = z.object({
path: z.array(FetchNodePathSegmentSchema),
setValueTo: z.string()
}), KeyRenamerSchema = z.object({
path: z.array(FetchNodePathSegmentSchema),
renameKeyTo: z.string()
}), FetchRewriteSchema = z.union([ValueSetterSchema, KeyRenamerSchema]), SelectionFieldSchema = z.object({
kind: z.literal("Field"),
name: z.string()
}), SelectionInlineFragmentSchema = z.object({
kind: z.literal("InlineFragment"),
typeCondition: z.string().nullish(),
selections: z.array(SelectionFieldSchema).nullish()
}), SelectionFragmentSpreadSchema = z.object({
kind: z.literal("FragmentSpread"),
name: z.string()
}), SelectionItemSchema = z.union([
SelectionInlineFragmentSchema,
SelectionFragmentSpreadSchema,
SelectionFieldSchema
]), SelectionSetSchema = z.array(SelectionItemSchema), PlanNodeSchema = z.lazy(() => z.discriminatedUnion("kind", [
FetchNodePlanSchema,
BatchFetchNodePlanSchema,
SequenceNodePlanSchema,
ParallelNodePlanSchema,
FlattenNodePlanSchema,
ConditionNodePlanSchema,
SubscriptionNodePlanSchema,
DeferNodePlanSchema
])), FetchNodePlanSchema = z.object({
kind: z.literal("Fetch"),
serviceName: z.string(),
operationKind: z.string().nullish(),
operationName: z.string().nullish(),
operation: z.string(),
variableUsages: z.array(z.string()).nullish(),
requires: SelectionSetSchema.nullish(),
inputRewrites: z.array(FetchRewriteSchema).nullish(),
outputRewrites: z.array(FetchRewriteSchema).nullish()
}), EntityBatchAliasSchema = z.object({
alias: z.string(),
representationsVariableName: z.string(),
paths: FlattenNodePathsSchema,
requires: SelectionSetSchema,
inputRewrites: z.array(FetchRewriteSchema).nullish(),
outputRewrites: z.array(FetchRewriteSchema).nullish()
}), EntityBatchSchema = z.object({ aliases: z.array(EntityBatchAliasSchema) }), BatchFetchNodePlanSchema = z.object({
kind: z.literal("BatchFetch"),
serviceName: z.string(),
operationKind: z.string().nullish(),
operationName: z.string().nullish(),
operation: z.string(),
variableUsages: z.array(z.string()).nullish(),
entityBatch: EntityBatchSchema
}), SequenceNodePlanSchema = z.object({
kind: z.literal("Sequence"),
nodes: z.array(PlanNodeSchema)
}), ParallelNodePlanSchema = z.object({
kind: z.literal("Parallel"),
nodes: z.array(PlanNodeSchema)
}), FlattenNodePlanSchema = z.object({
kind: z.literal("Flatten"),
path: FlattenNodePathSchema,
node: PlanNodeSchema
}), ConditionNodePlanSchema = z.object({
kind: z.literal("Condition"),
condition: z.string(),
ifClause: PlanNodeSchema.nullish(),
elseClause: PlanNodeSchema.nullish()
}), SubscriptionNodePlanSchema = z.object({
kind: z.literal("Subscription"),
primary: PlanNodeSchema
}), DeferDependencySchema = z.object({
id: z.string(),
deferLabel: z.string().nullish()
}), DeferPrimarySchema = z.object({
subselection: z.string().nullish(),
node: PlanNodeSchema.nullish()
}), DeferredNodeSchema = z.object({
depends: z.array(DeferDependencySchema),
label: z.string().nullish(),
queryPath: z.array(z.string()),
subselection: z.string().nullish(),
node: PlanNodeSchema.nullish()
}), DeferNodePlanSchema = z.object({
kind: z.literal("Defer"),
primary: DeferPrimarySchema,
deferred: z.array(DeferredNodeSchema)
}), QueryPlanSchema = z.object({
kind: z.literal("QueryPlan"),
node: PlanNodeSchema.nullish()
});
function usePrevious$1(t) {
let n = React$1.useRef({
value: t,
previous: t
});
return React$1.useMemo(() => (n.current.value !== t && (n.current.previous = n.current.value, n.current.value = t), n.current.previous), [t]);
}
var CHECKBOX_NAME = "Checkbox", [createCheckboxContext, createCheckboxScope] = createContextScope(CHECKBOX_NAME), [CheckboxProviderImpl, useCheckboxContext] = createCheckboxContext(CHECKBOX_NAME);
function CheckboxProvider(t) {
let { __scopeCheckbox: n, checked: i, children: a, defaultChecked: o, disabled: s, form: c, name: d, onCheckedChange: f, required: g, value: b = "on", internal_do_not_use_render: x } = t, [S, C] = useControllableState({
prop: i,
defaultProp: o ?? !1,
onChange: f,
caller: CHECKBOX_NAME
}), [w, E] = React$1.useState(null), [O, A] = React$1.useState(null), M = React$1.useRef(!1), F = w ? !!c || !!w.closest("form") : !0, I = {
checked: S,
disabled: s,
setChecked: C,
control: w,
setControl: E,
name: d,
form: c,
value: b,
hasConsumerStoppedPropagationRef: M,
required: g,
defaultChecked: isIndeterminate(o) ? !1 : o,
isFormControl: F,
bubbleInput: O,
setBubbleInput: A
};
return /* @__PURE__ */ jsx(CheckboxProviderImpl, {
scope: n,
...I,
children: isFunction(x) ? x(I) : a
});
}
var TRIGGER_NAME$3 = "CheckboxTrigger", CheckboxTrigger = React$1.forwardRef(({ __scopeCheckbox: t, onKeyDown: n, onClick: i,...a }, o) => {
let { control: s, value: c, disabled: d, checked: f, required: g, setControl: b, setChecked: x, hasConsumerStoppedPropagationRef: S, isFormControl: C, bubbleInput: w } = useCheckboxContext(TRIGGER_NAME$3, t), E = useComposedRefs$1(o, b), O = React$1.useRef(f);
return React$1.useEffect(() => {
let t = s?.form;
if (t) {
let n = () => x(O.current);
return t.addEventListener("reset", n), () => t.removeEventListener("reset", n);
}
}, [s, x]), /* @__PURE__ */ jsx(Primitive.button, {
type: "button",
role: "checkbox",
"aria-checked": isIndeterminate(f) ? "mixed" : f,
"aria-required": g,
"data-state": getState$1(f),
"data-disabled": d ? "" : void 0,
disabled: d,
value: c,
...a,
ref: E,
onKeyDown: composeEventHandlers(n, (t) => {
t.key === "Enter" && t.preventDefault();
}),
onClick: composeEventHandlers(i, (t) => {
x((t) => isIndeterminate(t) ? !0 : !t), w && C && (S.current = t.isPropagationStopped(), S.current || t.stopPropagation());
})
});
});
CheckboxTrigger.displayName = TRIGGER_NAME$3;
var Checkbox$1 = React$1.forwardRef((t, n) => {
let { __scopeCheckbox: i, name: a, checked: o, defaultChecked: s, required: c, disabled: d, value: f, onCheckedChange: g, form: b,...x } = t;
return /* @__PURE__ */ jsx(CheckboxProvider, {
__scopeCheckbox: i,
checked: o,
defaultChecked: s,
disabled: d,
required: c,
onCheckedChange: g,
name: a,
form: b,
value: f,
internal_do_not_use_render: ({ isFormControl: t }) => /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(CheckboxTrigger, {
...x,
ref: n,
__scopeCheckbox: i
}), t && /* @__PURE__ */ jsx(CheckboxBubbleInput, { __scopeCheckbox: i })] })
});
});
Checkbox$1.displayName = CHECKBOX_NAME;
var INDICATOR_NAME$1 = "CheckboxIndicator", CheckboxIndicator = React$1.forwardRef((t, n) => {
let { __scopeCheckbox: i, forceMount: a,...o } = t, s = useCheckboxContext(INDICATOR_NAME$1, i);
return /* @__PURE__ */ jsx(Presence, {
present: a || isIndeterminate(s.checked) || s.checked === !0,
children: /* @__PURE__ */ jsx(Primitive.span, {
"data-state": getState$1(s.checked),
"data-disabled": s.disabled ? "" : void 0,
...o,
ref: n,
style: {
pointerEvents: "none",
...t.style
}
})
});
});
CheckboxIndicator.displayName = INDICATOR_NAME$1;
var BUBBLE_INPUT_NAME$3 = "CheckboxBubbleInput", CheckboxBubbleInput = React$1.forwardRef(({ __scopeCheckbox: t,...n }, i) => {
let { control: a, hasConsumerStoppedPropagationRef: o, checked: s, defaultChecked: c, required: d, disabled: f, name: g, value: b, form: x, bubbleInput: S, setBubbleInput: C } = useCheckboxContext(BUBBLE_INPUT_NAME$3, t), w = useComposedRefs$1(i, C), E = usePrevious$1(s), O = useSize(a);
React$1.useEffect(() => {
let t = S;
if (!t) return;
let n = window.HTMLInputElement.prototype, i = Object.getOwnPropertyDescriptor(n, "checked").set, a = !o.current;
if (E !== s && i) {
let n = new Event("click", { bubbles: a });
t.indeterminate = isIndeterminate(s), i.call(t, isIndeterminate(s) ? !1 : s), t.dispatchEvent(n);
}
}, [
S,
E,
s,
o
]);
let A = React$1.useRef(isIndeterminate(s) ? !1 : s);
return /* @__PURE__ */ jsx(Primitive.input, {
type: "checkbox",
"aria-hidden": !0,
defaultChecked: c ?? A.current,
required: d,
disabled: f,
name: g,
value: b,
form: x,
...n,
tabIndex: -1,
ref: w,
style: {
...n.style,
...O,
position: "absolute",
pointerEvents: "none",
opacity: 0,
margin: 0,
transform: "translateX(-100%)"
}
});
});
CheckboxBubbleInput.displayName = BUBBLE_INPUT_NAME$3;
function isFunction(t) {
return typeof t == "function";
}
function isIndeterminate(t) {
return t === "indeterminate";
}
function getState$1(t) {
return isIndeterminate(t) ? "indeterminate" : t ? "checked" : "unchecked";
}
var CONTEXT_MENU_NAME = "ContextMenu", [createContextMenuContext, createContextMenuScope] = createContextScope(CONTEXT_MENU_NAME, [createMenuScope]), useMenuScope = createMenuScope(), [ContextMenuProvider, useContextMenuContext] = createContextMenuContext(CONTEXT_MENU_NAME), ContextMenu$1 = (t) => {
let { __scopeContextMenu: n, children: i, onOpenChange: a, dir: o, modal: s = !0 } = t, [c, d] = React$1.useState(!1), f = useMenuScope(n), g = useCallbackRef(a), b = React$1.useCallback((t) => {
d(t), g(t);
}, [g]);
return /* @__PURE__ */ jsx(ContextMenuProvider, {
scope: n,
open: c,
onOpenChange: b,
modal: s,
children: /* @__PURE__ */ jsx(Root3$1, {
...f,
dir: o,
open: c,
onOpenChange: b,
modal: s,
children: i
})
});
};
ContextMenu$1.displayName = CONTEXT_MENU_NAME;
var TRIGGER_NAME$2 = "ContextMenuTrigger", ContextMenuTrigger$1 = React$1.forwardRef((t, n) => {
let { __scopeContextMenu: i, disabled: a = !1,...o } = t, s = useContextMenuContext(TRIGGER_NAME$2, i), c = useMenuScope(i), d = React$1.useRef({
x: 0,
y: 0
}), f = React$1.useRef({ getBoundingClientRect: () => DOMRect.fromRect({
width: 0,
height: 0,
...d.current
}) }), g = React$1.useRef(0), b = React$1.useCallback(() => window.clearTimeout(g.current), []), x = (t) => {
d.current = {
x: t.clientX,
y: t.clientY
}, s.onOpenChange(!0);
};
return React$1.useEffect(() => b, [b]), React$1.useEffect(() => void (a && b()), [a, b]), /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(Anchor2, {
...c,
virtualRef: f
}), /* @__PURE__ */ jsx(Primitive.span, {
"data-state": s.open ? "open" : "closed",
"data-disabled": a ? "" : void 0,
...o,
ref: n,
style: {
WebkitTouchCallout: "none",
...t.style
},
onContextMenu: a ? t.onContextMenu : composeEventHandlers(t.onContextMenu, (t) => {
b(), x(t), t.preventDefault();
}),
onPointerDown: a ? t.onPointerDown : composeEventHandlers(t.onPointerDown, whenTouchOrPen((t) => {
b(), g.current = window.setTimeout(() => x(t), 700);
})),
onPointerMove: a ? t.onPointerMove : composeEventHandlers(t.onPointerMove, whenTouchOrPen(b)),
onPointerCancel: a ? t.onPointerCancel : composeEventHandlers(t.onPointerCancel, whenTouchOrPen(b)),
onPointerUp: a ? t.onPointerUp : composeEventHandlers(t.onPointerUp, whenTouchOrPen(b))
})] });
});
ContextMenuTrigger$1.displayName = TRIGGER_NAME$2;
var PORTAL_NAME$1 = "ContextMenuPortal", ContextMenuPortal = (t) => {
let { __scopeContextMenu: n,...i } = t, a = useMenuScope(n);
return /* @__PURE__ */ jsx(Portal$3, {
...a,
...i
});
};
ContextMenuPortal.displayName = PORTAL_NAME$1;
var CONTENT_NAME$3 = "ContextMenuContent", ContextMenuContent$1 = React$1.forwardRef((t, n) => {
let { __scopeContextMenu: i,...a } = t, o = useContextMenuContext(CONTENT_NAME$3, i), s = useMenuScope(i), c = React$1.useRef(!1);
return /* @__PURE__ */ jsx(Content2$5, {
...s,
...a,
ref: n,
side: "right",
sideOffset: 2,
align: "start",
onCloseAutoFocus: (n) => {
t.onCloseAutoFocus?.(n), !n.defaultPrevented && c.current && n.preventDefault(), c.current = !1;
},
onInteractOutside: (n) => {
t.onInteractOutside?.(n), !n.defaultPrevented && !o.modal && (c.current = !0);
},
style: {
...t.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$3;
var GROUP_NAME$1 = "ContextMenuGroup", ContextMenuGroup = React$1.forwardRef((t, n) => {
let { __scopeContextMenu: i,...a } = t, o = useMenuScope(i);
return /* @__PURE__ */ jsx(Group, {
...o,
...a,
ref: n
});
});
ContextMenuGroup.displayName = GROUP_NAME$1;
var LABEL_NAME$1 = "ContextMenuLabel", ContextMenuLabel = React$1.forwardRef((t, n) => {
let { __scopeContextMenu: i,...a } = t, o = useMenuScope(i);
return /* @__PURE__ */ jsx(Label$2, {
...o,
...a,
ref: n
});
});
ContextMenuLabel.displayName = LABEL_NAME$1;
var ITEM_NAME$3 = "ContextMenuItem", ContextMenuItem$1 = React$1.forwardRef((t, n) => {
let { __scopeContextMenu: i,...a } = t, o = useMenuScope(i);
return /* @__PURE__ */ jsx(Item2$3, {
...o,
...a,
ref: n
});
});
ContextMenuItem$1.displayName = ITEM_NAME$3;
var CHECKBOX_ITEM_NAME = "ContextMenuCheckboxItem", ContextMenuCheckboxItem = React$1.forwardRef((t, n) => {
let { __scopeContextMenu: i,...a } = t, o = useMenuScope(i);
return /* @__PURE__ */ jsx(CheckboxItem, {
...o,
...a,
ref: n
});
});
ContextMenuCheckboxItem.displayName = CHECKBOX_ITEM_NAME;
var RADIO_GROUP_NAME = "ContextMenuRadioGroup", ContextMenuRadioGroup = React$1.forwardRef((t, n) => {
let { __scopeContextMenu: i,...a } = t, o = useMenuScope(i);
return /* @__PURE__ */ jsx(RadioGroup, {
...o,
...a,
ref: n
});
});
ContextMenuRadioGroup.displayName = RADIO_GROUP_NAME;
var RADIO_ITEM_NAME = "ContextMenuRadioItem", ContextMenuRadioItem = React$1.forwardRef((t, n) => {
let { __scopeContextMenu: i,...a } = t, o = useMenuScope(i);
return /* @__PURE__ */ jsx(RadioItem, {
...o,
...a,
ref: n
});
});
ContextMenuRadioItem.displayName = RADIO_ITEM_NAME;
var INDICATOR_NAME = "ContextMenuItemIndicator", ContextMenuItemIndicator = React$1.forwardRef((t, n) => {
let { __scopeContextMenu: i,...a } = t, o = useMenuScope(i);
return /* @__PURE__ */ jsx(ItemIndicator$1, {
...o,
...a,
ref: n
});
});
ContextMenuItemIndicator.displayName = INDICATOR_NAME;
var SEPARATOR_NAME$1 = "ContextMenuSeparator", ContextMenuSeparator = React$1.forwardRef((t, n) => {
let { __scopeContextMenu: i,...a } = t, o = useMenuScope(i);
return /* @__PURE__ */ jsx(Separator$2, {
...o,
...a,
ref: n
});
});
ContextMenuSeparator.displayName = SEPARATOR_NAME$1;
var ARROW_NAME$1 = "ContextMenuArrow", ContextMenuArrow = React$1.forwardRef((t, n) => {
let { __scopeContextMenu: i,...a } = t, o = useMenuScope(i);
return /* @__PURE__ */ jsx(Arrow2$1, {
...o,
...a,
ref: n
});
});
ContextMenuArrow.displayName = ARROW_NAME$1;
var SUB_NAME = "ContextMenuSub", ContextMenuSub = (t) => {
let { __scopeContextMenu: n, children: i, onOpenChange: a, open: o, defaultOpen: s } = t, c = useMenuScope(n), [d, f] = useControllableState({
prop: o,
defaultProp: s ?? !1,
onChange: a,
caller: SUB_NAME
});
return /* @__PURE__ */ jsx(Sub, {
...c,
open: d,
onOpenChange: f,
children: i
});
};
ContextMenuSub.displayName = SUB_NAME;
var SUB_TRIGGER_NAME = "ContextMenuSubTrigger", ContextMenuSubTrigger = React$1.forwardRef((t, n) => {
let { __scopeContextMenu: i,...a } = t, o = useMenuScope(i);
return /* @__PURE__ */ jsx(SubTrigger, {
...o,
...a,
ref: n
});
});
ContextMenuSubTrigger.displayName = SUB_TRIGGER_NAME;
var SUB_CONTENT_NAME = "ContextMenuSubContent", ContextMenuSubContent = React$1.forwardRef((t, n) => {
let { __scopeContextMenu: i,...a } = t, o = useMenuScope(i);
return /* @__PURE__ */ jsx(SubContent, {
...o,
...a,
ref: n,
style: {
...t.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(t) {
return (n) => n.pointerType === "mouse" ? void 0 : t(n);
}
var Root2$3 = ContextMenu$1, Trigger$2 = ContextMenuTrigger$1, Portal2 = ContextMenuPortal, Content2$1 = ContextMenuContent$1, Item2$1 = ContextMenuItem$1, OPEN_KEYS = [
" ",
"Enter",
"ArrowUp",
"ArrowDown"
], SELECTION_KEYS = [" ", "Enter"], SELECT_NAME = "Select", [Collection$1, useCollection$1, createCollectionScope$1] = createCollection(SELECT_NAME), [createSelectContext, createSelectScope] = createContextScope(SELECT_NAME, [createCollectionScope$1, createPopperScope]), usePopperScope = createPopperScope(), [SelectProvider, useSelectContext] = createSelectContext(SELECT_NAME), [SelectNativeOptionsProvider, useSelectNativeOptionsContext] = createSelectContext(SELECT_NAME), Select$1 = (t) => {
let { __scopeSelect: n, children: i, open: a, defaultOpen: o, onOpenChange: s, value: c, defaultValue: d, onValueChange: f, dir: g, name: b, autoComplete: x, disabled: S, required: C, form: w } = t, E = usePopperScope(n), [O, A] = React$1.useState(null), [M, F] = React$1.useState(null), [I, R] = React$1.useState(!1), qA = useDirection(g), [V, q] = useControllableState({
prop: a,
defaultProp: o ?? !1,
onChange: s,
caller: SELECT_NAME
}), [JA, YA] = useControllableState({
prop: c,
defaultProp: d,
onChange: f,
caller: SELECT_NAME
}), XA = React$1.useRef(null), ZA = O ? w || !!O.closest("form") : !0, [QA, $A] = React$1.useState(/* @__PURE__ */ new Set()), ej = Array.from(QA).map((t) => t.props.value).join(";");
return /* @__PURE__ */ jsx(Root2$6, {
...E,
children: /* @__PURE__ */ jsxs(SelectProvider, {
required: C,
scope: n,
trigger: O,
onTriggerChange: A,
valueNode: M,
onValueNodeChange: F,
valueNodeHasChildren: I,
onValueNodeHasChildrenChange: R,
contentId: useId$1(),
value: JA,
onValueChange: YA,
open: V,
onOpenChange: q,
dir: qA,
triggerPointerDownPosRef: XA,
disabled: S,
children: [/* @__PURE__ */ jsx(Collection$1.Provider, {
scope: n,
children: /* @__PURE__ */ jsx(SelectNativeOptionsProvider, {
scope: t.__scopeSelect,
onNativeOptionAdd: React$1.useCallback((t) => {
$A((n) => new Set(n).add(t));
}, []),
onNativeOptionRemove: React$1.useCallback((t) => {
$A((n) => {
let i = new Set(n);
return i.delete(t), i;
});
}, []),
children: i
})
}), ZA ? /* @__PURE__ */ jsxs(SelectBubbleInput, {
"aria-hidden": !0,
required: C,
tabIndex: -1,
name: b,
autoComplete: x,
value: JA,
onChange: (t) => YA(t.target.value),
disabled: S,
form: w,
children: [JA === void 0 ? /* @__PURE__ */ jsx("option", { value: "" }) : null, Array.from(QA)]
}, ej) : null]
})
});
};
Select$1.displayName = SELECT_NAME;
var TRIGGER_NAME$1 = "SelectTrigger", SelectTrigger$1 = React$1.forwardRef((t, n) => {
let { __scopeSelect: i, disabled: a = !1,...o } = t, s = usePopperScope(i), c = useSelectContext(TRIGGER_NAME$1, i), d = c.disabled || a, f = useComposedRefs$1(n, c.onTriggerChange), g = useCollection$1(i), b = React$1.useRef("touch"), [x, S, C] = useTypeaheadSearch((t) => {
let n = g().filter((t) => !t.disabled), i = n.find((t) => t.value === c.value), a = findNextItem(n, t, i);
a !== void 0 && c.onValueChange(a.value);
}), w = (t) => {
d || (c.onOpenChange(!0), C()), t && (c.triggerPointerDownPosRef.current = {
x: Math.round(t.pageX),
y: Math.round(t.pageY)
});
};
return /* @__PURE__ */ jsx(Anchor, {
asChild: !0,
...s,
children: /* @__PURE__ */ jsx(Primitive.button, {
type: "button",
role: "combobox",
"aria-controls": c.contentId,
"aria-expanded": c.open,
"aria-required": c.required,
"aria-autocomplete": "none",
dir: c.dir,
"data-state": c.open ? "open" : "closed",
disabled: d,
"data-disabled": d ? "" : void 0,
"data-placeholder": shouldShowPlaceholder(c.value) ? "" : void 0,
...o,
ref: f,
onClick: composeEventHandlers(o.onClick, (t) => {
t.currentTarget.focus(), b.current !== "mouse" && w(t);
}),
onPointerDown: composeEventHandlers(o.onPointerDown, (t) => {
b.current = t.pointerType;
let n = t.target;
n.hasPointerCapture(t.pointerId) && n.releasePointerCapture(t.pointerId), t.button === 0 && t.ctrlKey === !1 && t.pointerType === "mouse" && (w(t), t.preventDefault());
}),
onKeyDown: composeEventHandlers(o.onKeyDown, (t) => {
let n = x.current !== "";
!(t.ctrlKey || t.altKey || t.metaKey) && t.key.length === 1 && S(t.key), !(n && t.key === " ") && OPEN_KEYS.includes(t.key) && (w(), t.preventDefault());
})
})
});
});
SelectTrigger$1.displayName = TRIGGER_NAME$1;
var VALUE_NAME = "SelectValue", SelectValue$1 = React$1.forwardRef((t, n) => {
let { __scopeSelect: i, className: a, style: o, children: s, placeholder: c = "",...d } = t, f = useSelectContext(VALUE_NAME, i), { onValueNodeHasChildrenChange: g } = f, b = s !== void 0, x = useComposedRefs$1(n, f.onValueNodeChange);
return useLayoutEffect2(() => {
g(b);
}, [g, b]), /* @__PURE__ */ jsx(Primitive.span, {
...d,
ref: x,
style: { pointerEvents: "none" },
children: shouldShowPlaceholder(f.value) ? /* @__PURE__ */ jsx(Fragment$1, { children: c }) : s
});
});
SelectValue$1.displayName = VALUE_NAME;
var ICON_NAME = "SelectIcon", SelectIcon = React$1.forwardRef((t, n) => {
let { __scopeSelect: i, children: a,...o } = t;
return /* @__PURE__ */ jsx(Primitive.span, {
"aria-hidden": !0,
...o,
ref: n,
children: a || "▼"
});
});
SelectIcon.displayName = ICON_NAME;
var PORTAL_NAME = "SelectPortal", SelectPortal = (t) => /* @__PURE__ */ jsx(Portal, {
asChild: !0,
...t
});
SelectPortal.displayName = PORTAL_NAME;
var CONTENT_NAME$2 = "SelectContent", SelectContent$1 = React$1.forwardRef((t, n) => {
let i = useSelectContext(CONTENT_NAME$2, t.__scopeSelect), [a, o] = React$1.useState();
if (useLayoutEffect2(() => {
o(new DocumentFragment());
}, []), !i.open) {
let n = a;
return n ? ReactDOM$2.createPortal(/* @__PURE__ */ jsx(SelectContentProvider, {
scope: t.__scopeSelect,
children: /* @__PURE__ */ jsx(Collection$1.Slot, {
scope: t.__scopeSelect,
children: /* @__PURE__ */ jsx("div", { children: t.children })
})
}), n) : null;
}
return /* @__PURE__ */ jsx(SelectContentImpl, {
...t,
ref: n
});
});
SelectContent$1.displayName = CONTENT_NAME$2;
var CONTENT_MARGIN = 10, [SelectContentProvider, useSelectContentContext] = createSelectContext(CONTENT_NAME$2), CONTENT_IMPL_NAME = "SelectContentImpl", Slot$1 = /* @__PURE__ */ createSlot("SelectContent.RemoveScroll"), SelectContentImpl = React$1.forwardRef((t, n) => {
let { __scopeSelect: i, position: a = "item-aligned", onCloseAutoFocus: o, onEscapeKeyDown: s, onPointerDownOutside: c, side: d, sideOffset: f, align: g, alignOffset: b, arrowPadding: x, collisionBoundary: S, collisionPadding: C, sticky: w, hideWhenDetached: E, avoidCollisions: O,...A } = t, M = useSelectContext(CONTENT_NAME$2, i), [F, I] = React$1.useState(null), [R, qA] = React$1.useState(null), V = useComposedRefs$1(n, (t) => I(t)), [q, JA] = React$1.useState(null), [YA, XA] = React$1.useState(null), ZA = useCollection$1(i), [QA, $A] = React$1.useState(!1), ej = React$1.useRef(!1);
React$1.useEffect(() => {
if (F) return hideOthers(F);
}, [F]), useFocusGuards();
let tj = React$1.useCallback((t) => {
let [n, ...i] = ZA().map((t) => t.ref.current), [a] = i.slice(-1), o = document.activeElement;
for (let i of t) if (i === o || (i?.scrollIntoView({ block: "nearest" }), i === n && R && (R.scrollTop = 0), i === a && R && (R.scrollTop = R.scrollHeight), i?.focus(), document.activeElement !== o)) return;
}, [ZA, R]), nj = React$1.useCallback(() => tj([q, F]), [
tj,
q,
F
]);
React$1.useEffect(() => {
QA && nj();
}, [QA, nj]);
let { onOpenChange: rj, triggerPointerDownPosRef: ij } = M;
React$1.useEffect(() => {
if (F) {
let t = {
x: 0,
y: 0
}, n = (n) => {
t = {
x: Math.abs(Math.round(n.pageX) - (ij.current?.x ?? 0)),
y: Math.abs(Math.round(n.pageY) - (ij.current?.y ?? 0))
};
}, i = (i) => {
t.x <= 10 && t.y <= 10 ? i.preventDefault() : F.contains(i.target) || rj(!1), document.removeEventListener("pointermove", n), ij.current = null;
};
return ij.current !== null && (document.addEventListener("pointermove", n), document.addEventListener("pointerup", i, {
capture: !0,
once: !0
})), () => {
document.removeEventListener("pointermove", n), document.removeEventListener("pointerup", i, { capture: !0 });
};
}
}, [
F,
rj,
ij
]), React$1.useEffect(() => {
let t = () => rj(!1);
return window.addEventListener("blur", t), window.addEventListener("resize", t), () => {
window.removeEventListener("blur", t), window.removeEventListener("resize", t);
};
}, [rj]);
let [aj, oj] = useTypeaheadSearch((t) => {
let n = ZA().filter((t) => !t.disabled), i = n.find((t) => t.ref.current === document.activeElement), a = findNextItem(n, t, i);
a && setTimeout(() => a.ref.current.focus());
}), sj = React$1.useCallback((t, n, i) => {
let a = !ej.current && !i;
(M.value !== void 0 && M.value === n || a) && (JA(t), a && (ej.current = !0));
}, [M.value]), cj = React$1.useCallback(() => F?.focus(), [F]), lj = React$1.useCallback((t, n, i) => {
let a = !ej.current && !i;
(M.value !== void 0 && M.value === n || a) && XA(t);
}, [M.value]), uj = a === "popper" ? SelectPopperPosition : SelectItemAlignedPosition, dj = uj === SelectPopperPosition ? {
side: d,
sideOffset: f,
align: g,
alignOffset: b,
arrowPadding: x,
collisionBoundary: S,
collisionPadding: C,
sticky: w,
hideWhenDetached: E,
avoidCollisions: O
} : {};
return /* @__PURE__ */ jsx(SelectContentProvider, {
scope: i,
content: F,
viewport: R,
onViewportChange: qA,
itemRefCallback: sj,
selectedItem: q,
onItemLeave: cj,
itemTextRefCallback: lj,
focusSelectedItem: nj,
selectedItemText: YA,
position: a,
isPositioned: QA,
searchRef: aj,
children: /* @__PURE__ */ jsx(Combination_default, {
as: Slot$1,
allowPinchZoom: !0,
children: /* @__PURE__ */ jsx(FocusScope, {
asChild: !0,
trapped: M.open,
onMountAutoFocus: (t) => {
t.preventDefault();
},
onUnmountAutoFocus: composeEventHandlers(o, (t) => {
M.trigger?.focus({ preventScroll: !0 }), t.preventDefault();
}),
children: /* @__PURE__ */ jsx(DismissableLayer, {
asChild: !0,
disableOutsidePointerEvents: !0,
onEscapeKeyDown: s,
onPointerDownOutside: c,
onFocusOutside: (t) => t.preventDefault(),
onDismiss: () => M.onOpenChange(!1),
children: /* @__PURE__ */ jsx(uj, {
role: "listbox",
id: M.contentId,
"data-state": M.open ? "open" : "closed",
dir: M.dir,
onContextMenu: (t) => t.preventDefault(),
...A,
...dj,
onPlaced: () => $A(!0),
ref: V,
style: {
display: "flex",
flexDirection: "column",
outline: "none",
...A.style
},
onKeyDown: composeEventHandlers(A.onKeyDown, (t) => {
let n = t.ctrlKey || t.altKey || t.metaKey;
if (t.key === "Tab" && t.preventDefault(), !n && t.key.length === 1 && oj(t.key), [
"ArrowUp",
"ArrowDown",
"Home",
"End"
].includes(t.key)) {
let n = ZA().filter((t) => !t.disabled).map((t) => t.ref.current);
if (["ArrowUp", "End"].includes(t.key) && (n = n.slice().reverse()), ["ArrowUp", "ArrowDown"].includes(t.key)) {
let i = t.target, a = n.indexOf(i);
n = n.slice(a + 1);
}
setTimeout(() => tj(n)), t.preventDefault();
}
})
})
})
})
})
});
});
SelectContentImpl.displayName = CONTENT_IMPL_NAME;
var ITEM_ALIGNED_POSITION_NAME = "SelectItemAlignedPosition", SelectItemAlignedPosition = React$1.forwardRef((t, n) => {
let { __scopeSelect: i, onPlaced: a,...o } = t, s = useSelectContext(CONTENT_NAME$2, i), c = useSelectContentContext(CONTENT_NAME$2, i), [d, f] = React$1.useState(null), [g, b] = React$1.useState(null), x = useComposedRefs$1(n, (t) => b(t)), S = useCollection$1(i), C = React$1.useRef(!1), w = React$1.useRef(!0), { viewport: E, selectedItem: O, selectedItemText: A, focusSelectedItem: M } = c, F = React$1.useCallback(() => {
if (s.trigger && s.valueNode && d && g && E && O && A) {
let t = s.trigger.getBoundingClientRect(), n = g.getBoundingClientRect(), i = s.valueNode.getBoundingClientRect(), o = A.getBoundingClientRect();
if (s.dir !== "rtl") {
let a = o.left - n.left, s = i.left - a, c = t.left - s, f = t.width + c, g = Math.max(f, n.width), b = window.innerWidth - CONTENT_MARGIN, x = clamp(s, [CONTENT_MARGIN, Math.max(CONTENT_MARGIN, b - g)]);
d.style.minWidth = f + "px", d.style.left = x + "px";
} else {
let a = n.right - o.right, s = window.innerWidth - i.right - a, c = window.innerWidth - t.right - s, f = t.width + c, g = Math.max(f, n.width), b = window.innerWidth - CONTENT_MARGIN, x = clamp(s, [CONTENT_MARGIN, Math.max(CONTENT_MARGIN, b - g)]);
d.style.minWidth = f + "px", d.style.right = x + "px";
}
let c = S(), f = window.innerHeight - CONTENT_MARGIN * 2, b = E.scrollHeight, x = window.getComputedStyle(g), w = parseInt(x.borderTopWidth, 10), M = parseInt(x.paddingTop, 10), F = parseInt(x.borderBottomWidth, 10), I = parseInt(x.paddingBottom, 10), R = w + M + b + I + F, qA = Math.min(O.offsetHeight * 5, R), V = window.getComputedStyle(E), q = parseInt(V.paddingTop, 10), JA = parseInt(V.paddingBottom, 10), YA = t.top + t.height / 2 - CONTENT_MARGIN, XA = f - YA, ZA = O.offsetHeight / 2, QA = O.offsetTop + ZA, $A = w + M + QA, ej = R - $A;
if ($A <= YA) {
let t = c.length > 0 && O === c[c.length - 1].ref.current;
d.style.bottom = "0px";
let n = g.clientHeight - E.offsetTop - E.offsetHeight, i = Math.max(XA, ZA + (t ? JA : 0) + n + F), a = $A + i;
d.style.height = a + "px";
} else {
let t = c.length > 0 && O === c[0].ref.current;
d.style.top = "0px";
let n = Math.max(YA, w + E.offsetTop + (t ? q : 0) + ZA) + ej;
d.style.height = n + "px", E.scrollTop = $A - YA + E.offsetTop;
}
d.style.margin = `${CONTENT_MARGIN}px 0`, d.style.minHeight = qA + "px", d.style.maxHeight = f + "px", a?.(), requestAnimationFrame(() => C.current = !0);
}
}, [
S,
s.trigger,
s.valueNode,
d,
g,
E,
O,
A,
s.dir,
a
]);
useLayoutEffect2(() => F(), [F]);
let [I, R] = React$1.useState();
useLayoutEffect2(() => {
g && R(window.getComputedStyle(g).zIndex);
}, [g]);
let qA = React$1.useCallback((t) => {
t && w.current === !0 && (F(), M?.(), w.current = !1);
}, [F, M]);
return /* @__PURE__ */ jsx(SelectViewportProvider, {
scope: i,
contentWrapper: d,
shouldExpandOnScrollRef: C,
onScrollButtonChange: qA,
children: /* @__PURE__ */ jsx("div", {
ref: f,
style: {
display: "flex",
flexDirection: "column",
position: "fixed",
zIndex: I
},
children: /* @__PURE__ */ jsx(Primitive.div, {
...o,
ref: x,
style: {
boxSizing: "border-box",
maxHeight: "100%",
...o.style
}
})
})
});
});
SelectItemAlignedPosition.displayName = ITEM_ALIGNED_POSITION_NAME;
var POPPER_POSITION_NAME = "SelectPopperPosition", SelectPopperPosition = React$1.forwardRef((t, n) => {
let { __scopeSelect: i, align: a = "start", collisionPadding: o = CONTENT_MARGIN,...s } = t, c = usePopperScope(i);
return /* @__PURE__ */ jsx(Content$1, {
...c,
...s,
ref: n,
align: a,
collisionPadding: o,
style: {
boxSizing: "border-box",
...s.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$2, {}), VIEWPORT_NAME = "SelectViewport", SelectViewport = React$1.forwardRef((t, n) => {
let { __scopeSelect: i, nonce: a,...o } = t, s = useSelectContentContext(VIEWPORT_NAME, i), c = useSelectViewportContext(VIEWPORT_NAME, i), d = useComposedRefs$1(n, s.onViewportChange), f = React$1.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: a
}), /* @__PURE__ */ jsx(Collection$1.Slot, {
scope: i,
children: /* @__PURE__ */ jsx(Primitive.div, {
"data-radix-select-viewport": "",
role: "presentation",
...o,
ref: d,
style: {
position: "relative",
flex: 1,
overflow: "hidden auto",
...o.style
},
onScroll: composeEventHandlers(o.onScroll, (t) => {
let n = t.currentTarget, { contentWrapper: i, shouldExpandOnScrollRef: a } = c;
if (a?.current && i) {
let t = Math.abs(f.current - n.scrollTop);
if (t > 0) {
let a = window.innerHeight - CONTENT_MARGIN * 2, o = parseFloat(i.style.minHeight), s = parseFloat(i.style.height), c = Math.max(o, s);
if (c < a) {
let o = c + t, s = Math.min(a, o), d = o - s;
i.style.height = s + "px", i.style.bottom === "0px" && (n.scrollTop = d > 0 ? d : 0, i.style.justifyContent = "flex-end");
}
}
}
f.current = n.scrollTop;
})
})
})] });
});
SelectViewport.displayName = VIEWPORT_NAME;
var GROUP_NAME = "SelectGroup", [SelectGroupContextProvider, useSelectGroupContext] = createSelectContext(GROUP_NAME), SelectGroup = React$1.forwardRef((t, n) => {
let { __scopeSelect: i,...a } = t, o = useId$1();
return /* @__PURE__ */ jsx(SelectGroupContextProvider, {
scope: i,
id: o,
children: /* @__PURE__ */ jsx(Primitive.div, {
role: "group",
"aria-labelledby": o,
...a,
ref: n
})
});
});
SelectGroup.displayName = GROUP_NAME;
var LABEL_NAME = "SelectLabel", SelectLabel = React$1.forwardRef((t, n) => {
let { __scopeSelect: i,...a } = t, o = useSelectGroupContext(LABEL_NAME, i);
return /* @__PURE__ */ jsx(Primitive.div, {
id: o.id,
...a,
ref: n
});
});
SelectLabel.displayName = LABEL_NAME;
var ITEM_NAME$2 = "SelectItem", [SelectItemContextProvider, useSelectItemContext] = createSelectContext(ITEM_NAME$2), SelectItem$1 = React$1.forwardRef((t, n) => {
let { __scopeSelect: i, value: a, disabled: o = !1, textValue: s,...c } = t, d = useSelectContext(ITEM_NAME$2, i), f = useSelectContentContext(ITEM_NAME$2, i), g = d.value === a, [b, x] = React$1.useState(s ?? ""), [S, C] = React$1.useState(!1), w = useComposedRefs$1(n, (t) => f.itemRefCallback?.(t, a, o)), E = useId$1(), O = React$1.useRef("touch"), A = () => {
o || (d.onValueChange(a), d.onOpenChange(!1));
};
if (a === "") 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: i,
value: a,
disabled: o,
textId: E,
isSelected: g,
onItemTextChange: React$1.useCallback((t) => {
x((n) => n || (t?.textContent ?? "").trim());
}, []),
children: /* @__PURE__ */ jsx(Collection$1.ItemSlot, {
scope: i,
value: a,
disabled: o,
textValue: b,
children: /* @__PURE__ */ jsx(Primitive.div, {
role: "option",
"aria-labelledby": E,
"data-highlighted": S ? "" : void 0,
"aria-selected": g && S,
"data-state": g ? "checked" : "unchecked",
"aria-disabled": o || void 0,
"data-disabled": o ? "" : void 0,
tabIndex: o ? void 0 : -1,
...c,
ref: w,
onFocus: composeEventHandlers(c.onFocus, () => C(!0)),
onBlur: composeEventHandlers(c.onBlur, () => C(!1)),
onClick: composeEventHandlers(c.onClick, () => {
O.current !== "mouse" && A();
}),
onPointerUp: composeEventHandlers(c.onPointerUp, () => {
O.current === "mouse" && A();
}),
onPointerDown: composeEventHandlers(c.onPointerDown, (t) => {
O.current = t.pointerType;
}),
onPointerMove: composeEventHandlers(c.onPointerMove, (t) => {
O.current = t.pointerType, o ? f.onItemLeave?.() : O.current === "mouse" && t.currentTarget.focus({ preventScroll: !0 });
}),
onPointerLeave: composeEventHandlers(c.onPointerLeave, (t) => {
t.currentTarget === document.activeElement && f.onItemLeave?.();
}),
onKeyDown: composeEventHandlers(c.onKeyDown, (t) => {
f.searchRef?.current !== "" && t.key === " " || (SELECTION_KEYS.includes(t.key) && A(), t.key === " " && t.preventDefault());
})
})
})
});
});
SelectItem$1.displayName = ITEM_NAME$2;
var ITEM_TEXT_NAME = "SelectItemText", SelectItemText = React$1.forwardRef((t, n) => {
let { __scopeSelect: i, className: a, style: o,...s } = t, c = useSelectContext(ITEM_TEXT_NAME, i), d = useSelectContentContext(ITEM_TEXT_NAME, i), f = useSelectItemContext(ITEM_TEXT_NAME, i), g = useSelectNativeOptionsContext(ITEM_TEXT_NAME, i), [b, x] = React$1.useState(null), S = useComposedRefs$1(n, (t) => x(t), f.onItemTextChange, (t) => d.itemTextRefCallback?.(t, f.value, f.disabled)), C = b?.textContent, w = React$1.useMemo(() => /* @__PURE__ */ jsx("option", {
value: f.value,
disabled: f.disabled,
children: C
}, f.value), [
f.disabled,
f.value,
C
]), { onNativeOptionAdd: E, onNativeOptionRemove: O } = g;
return useLayoutEffect2(() => (E(w), () => O(w)), [
E,
O,
w
]), /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(Primitive.span, {
id: f.textId,
...s,
ref: S
}), f.isSelected && c.valueNode && !c.valueNodeHasChildren ? ReactDOM$2.createPortal(s.children, c.valueNode) : null] });
});
SelectItemText.displayName = ITEM_TEXT_NAME;
var ITEM_INDICATOR_NAME = "SelectItemIndicator", SelectItemIndicator = React$1.forwardRef((t, n) => {
let { __scopeSelect: i,...a } = t;
return useSelectItemContext(ITEM_INDICATOR_NAME, i).isSelected ? /* @__PURE__ */ jsx(Primitive.span, {
"aria-hidden": !0,
...a,
ref: n
}) : null;
});
SelectItemIndicator.displayName = ITEM_INDICATOR_NAME;
var SCROLL_UP_BUTTON_NAME = "SelectScrollUpButton", SelectScrollUpButton$1 = React$1.forwardRef((t, n) => {
let i = useSelectContentContext(SCROLL_UP_BUTTON_NAME, t.__scopeSelect), a = useSelectViewportContext(SCROLL_UP_BUTTON_NAME, t.__scopeSelect), [o, s] = React$1.useState(!1), c = useComposedRefs$1(n, a.onScrollButtonChange);
return useLayoutEffect2(() => {
if (i.viewport && i.isPositioned) {
let t = function() {
let t = n.scrollTop > 0;
s(t);
}, n = i.viewport;
return t(), n.addEventListener("scroll", t), () => n.removeEventListener("scroll", t);
}
}, [i.viewport, i.isPositioned]), o ? /* @__PURE__ */ jsx(SelectScrollButtonImpl, {
...t,
ref: c,
onAutoScroll: () => {
let { viewport: t, selectedItem: n } = i;
t && n && (t.scrollTop -= n.offsetHeight);
}
}) : null;
});
SelectScrollUpButton$1.displayName = SCROLL_UP_BUTTON_NAME;
var SCROLL_DOWN_BUTTON_NAME = "SelectScrollDownButton", SelectScrollDownButton$1 = React$1.forwardRef((t, n) => {
let i = useSelectContentContext(SCROLL_DOWN_BUTTON_NAME, t.__scopeSelect), a = useSelectViewportContext(SCROLL_DOWN_BUTTON_NAME, t.__scopeSelect), [o, s] = React$1.useState(!1), c = useComposedRefs$1(n, a.onScrollButtonChange);
return useLayoutEffect2(() => {
if (i.viewport && i.isPositioned) {
let t = function() {
let t = n.scrollHeight - n.clientHeight, i = Math.ceil(n.scrollTop) < t;
s(i);
}, n = i.viewport;
return t(), n.addEventListener("scroll", t), () => n.removeEventListener("scroll", t);
}
}, [i.viewport, i.isPositioned]), o ? /* @__PURE__ */ jsx(SelectScrollButtonImpl, {
...t,
ref: c,
onAutoScroll: () => {
let { viewport: t, selectedItem: n } = i;
t && n && (t.scrollTop += n.offsetHeight);
}
}) : null;
});
SelectScrollDownButton$1.displayName = SCROLL_DOWN_BUTTON_NAME;
var SelectScrollButtonImpl = React$1.forwardRef((t, n) => {
let { __scopeSelect: i, onAutoScroll: a,...o } = t, s = useSelectContentContext("SelectScrollButton", i), c = React$1.useRef(null), d = useCollection$1(i), f = React$1.useCallback(() => {
c.current !== null && (window.clearInterval(c.current), c.current = null);
}, []);
return React$1.useEffect(() => () => f(), [f]), useLayoutEffect2(() => {
d().find((t) => t.ref.current === document.activeElement)?.ref.current?.scrollIntoView({ block: "nearest" });
}, [d]), /* @__PURE__ */ jsx(Primitive.div, {
"aria-hidden": !0,
...o,
ref: n,
style: {
flexShrink: 0,
...o.style
},
onPointerDown: composeEventHandlers(o.onPointerDown, () => {
c.current === null && (c.current = window.setInterval(a, 50));
}),
onPointerMove: composeEventHandlers(o.onPointerMove, () => {
s.onItemLeave?.(), c.current === null && (c.current = window.setInterval(a, 50));
}),
onPointerLeave: composeEventHandlers(o.onPointerLeave, () => {
f();
})
});
}), SEPARATOR_NAME = "SelectSeparator", SelectSeparator = React$1.forwardRef((t, n) => {
let { __scopeSelect: i,...a } = t;
return /* @__PURE__ */ jsx(Primitive.div, {
"aria-hidden": !0,
...a,
ref: n
});
});
SelectSeparator.displayName = SEPARATOR_NAME;
var ARROW_NAME = "SelectArrow", SelectArrow = React$1.forwardRef((t, n) => {
let { __scopeSelect: i,...a } = t, o = usePopperScope(i), s = useSelectContext(ARROW_NAME, i), c = useSelectContentContext(ARROW_NAME, i);
return s.open && c.position === "popper" ? /* @__PURE__ */ jsx(Arrow, {
...o,
...a,
ref: n
}) : null;
});
SelectArrow.displayName = ARROW_NAME;
var BUBBLE_INPUT_NAME$2 = "SelectBubbleInput", SelectBubbleInput = React$1.forwardRef(({ __scopeSelect: t, value: n,...i }, a) => {
let o = React$1.useRef(null), s = useComposedRefs$1(a, o), c = usePrevious$1(n);
return React$1.useEffect(() => {
let t = o.current;
if (!t) return;
let i = window.HTMLSelectElement.prototype, a = Object.getOwnPropertyDescriptor(i, "value").set;
if (c !== n && a) {
let i = new Event("change", { bubbles: !0 });
a.call(t, n), t.dispatchEvent(i);
}
}, [c, n]), /* @__PURE__ */ jsx(Primitive.select, {
...i,
style: {
...VISUALLY_HIDDEN_STYLES,
...i.style
},
ref: s,
defaultValue: n
});
});
SelectBubbleInput.displayName = BUBBLE_INPUT_NAME$2;
function shouldShowPlaceholder(t) {
return t === "" || t === void 0;
}
function useTypeaheadSearch(t) {
let n = useCallbackRef(t), i = React$1.useRef(""), a = React$1.useRef(0), o = React$1.useCallback((t) => {
let o = i.current + t;
n(o), (function t(n) {
i.current = n, window.clearTimeout(a.current), n !== "" && (a.current = window.setTimeout(() => t(""), 1e3));
})(o);
}, [n]), s = React$1.useCallback(() => {
i.current = "", window.clearTimeout(a.current);
}, []);
return React$1.useEffect(() => () => window.clearTimeout(a.current), []), [
i,
o,
s
];
}
function findNextItem(t, n, i) {
let a = n.length > 1 && Array.from(n).every((t) => t === n[0]) ? n[0] : n, o = i ? t.indexOf(i) : -1, s = wrapArray(t, Math.max(o, 0));
a.length === 1 && (s = s.filter((t) => t !== i));
let c = s.find((t) => t.textValue.toLowerCase().startsWith(a.toLowerCase()));
return c === i ? void 0 : c;
}
function wrapArray(t, n) {
return t.map((i, a) => t[(n + a) % t.length]);
}
var Root2$2 = Select$1, Trigger$1 = SelectTrigger$1, Value = SelectValue$1, Icon = SelectIcon, Portal$1 = SelectPortal, Content2 = SelectContent$1, Viewport = SelectViewport, Item = SelectItem$1, ItemText = SelectItemText, ItemIndicator = SelectItemIndicator, ScrollUpButton = SelectScrollUpButton$1, ScrollDownButton = SelectScrollDownButton$1, PAGE_KEYS = ["PageUp", "PageDown"], ARROW_KEYS = [
"ArrowUp",
"ArrowDown",
"ArrowLeft",
"ArrowRight"
], BACK_KEYS = {
"from-left": [
"Home",
"PageDown",
"ArrowDown",
"ArrowLeft"
],
"from-right": [
"Home",
"PageDown",
"ArrowDown",
"ArrowRight"
],
"from-bottom": [
"Home",
"PageDown",
"ArrowDown",
"ArrowLeft"
],
"from-top": [
"Home",
"PageDown",
"ArrowUp",
"ArrowLeft"
]
}, SLIDER_NAME = "Slider", [Collection, useCollection, createCollectionScope] = createCollection(SLIDER_NAME), [createSliderContext, createSliderScope] = createContextScope(SLIDER_NAME, [createCollectionScope]), [SliderProvider, useSliderContext] = createSliderContext(SLIDER_NAME), Slider$1 = React$1.forwardRef((t, n) => {
let { name: i, min: a = 0, max: o = 100, step: s = 1, orientation: c = "horizontal", disabled: d = !1, minStepsBetweenThumbs: f = 0, defaultValue: g = [a], value: b, onValueChange: x = () => {}, onValueCommit: S = () => {}, inverted: C = !1, form: w,...E } = t, O = React$1.useRef(/* @__PURE__ */ new Set()), A = React$1.useRef(0), M = c === "horizontal" ? SliderHorizontal : SliderVertical, [F = [], I] = useControllableState({
prop: b,
defaultProp: g,
onChange: (t) => {
[...O.current][A.current]?.focus(), x(t);
}
}), R = React$1.useRef(F);
function qA(t) {
let n = getClosestValueIndex(F, t);
JA(t, n);
}
function V(t) {
JA(t, A.current);
}
function q() {
let t = R.current[A.current];
F[A.current] !== t && S(F);
}
function JA(t, n, { commit: i } = { commit: !1 }) {
let c = getDecimalCount(s), d = roundValue(Math.round((t - a) / s) * s + a, c), g = clamp(d, [a, o]);
I((t = []) => {
let a = getNextSortedValues(t, g, n);
if (hasMinStepsBetweenValues(a, f * s)) {
A.current = a.indexOf(g);
let n = String(a) !== String(t);
return n && i && S(a), n ? a : t;
} else return t;
});
}
return /* @__PURE__ */ jsx(SliderProvider, {
scope: t.__scopeSlider,
name: i,
disabled: d,
min: a,
max: o,
valueIndexToChangeRef: A,
thumbs: O.current,
values: F,
orientation: c,
form: w,
children: /* @__PURE__ */ jsx(Collection.Provider, {
scope: t.__scopeSlider,
children: /* @__PURE__ */ jsx(Collection.Slot, {
scope: t.__scopeSlider,
children: /* @__PURE__ */ jsx(M, {
"aria-disabled": d,
"data-disabled": d ? "" : void 0,
...E,
ref: n,
onPointerDown: composeEventHandlers(E.onPointerDown, () => {
d || (R.current = F);
}),
min: a,
max: o,
inverted: C,
onSlideStart: d ? void 0 : qA,
onSlideMove: d ? void 0 : V,
onSlideEnd: d ? void 0 : q,
onHomeKeyDown: () => !d && JA(a, 0, { commit: !0 }),
onEndKeyDown: () => !d && JA(o, F.length - 1, { commit: !0 }),
onStepKeyDown: ({ event: t, direction: n }) => {
if (!d) {
let i = PAGE_KEYS.includes(t.key) || t.shiftKey && ARROW_KEYS.includes(t.key) ? 10 : 1, a = A.current, o = F[a], c = s * i * n;
JA(o + c, a, { commit: !0 });
}
}
})
})
})
});
});
Slider$1.displayName = SLIDER_NAME;
var [SliderOrientationProvider, useSliderOrientationContext] = createSliderContext(SLIDER_NAME, {
startEdge: "left",
endEdge: "right",
size: "width",
direction: 1
}), SliderHorizontal = React$1.forwardRef((t, n) => {
let { min: i, max: a, dir: o, inverted: s, onSlideStart: c, onSlideMove: d, onSlideEnd: f, onStepKeyDown: g,...b } = t, [x, S] = React$1.useState(null), C = useComposedRefs$1(n, (t) => S(t)), w = React$1.useRef(void 0), E = useDirection(o), O = E === "ltr", A = O && !s || !O && s;
function M(t) {
let n = w.current || x.getBoundingClientRect(), o = [0, n.width], s = linearScale(o, A ? [i, a] : [a, i]);
return w.current = n, s(t - n.left);
}
return /* @__PURE__ */ jsx(SliderOrientationProvider, {
scope: t.__scopeSlider,
startEdge: A ? "left" : "right",
endEdge: A ? "right" : "left",
direction: A ? 1 : -1,
size: "width",
children: /* @__PURE__ */ jsx(SliderImpl, {
dir: E,
"data-orientation": "horizontal",
...b,
ref: C,
style: {
...b.style,
"--radix-slider-thumb-transform": "translateX(-50%)"
},
onSlideStart: (t) => {
let n = M(t.clientX);
c?.(n);
},
onSlideMove: (t) => {
let n = M(t.clientX);
d?.(n);
},
onSlideEnd: () => {
w.current = void 0, f?.();
},
onStepKeyDown: (t) => {
let n = BACK_KEYS[A ? "from-left" : "from-right"].includes(t.key);
g?.({
event: t,
direction: n ? -1 : 1
});
}
})
});
}), SliderVertical = React$1.forwardRef((t, n) => {
let { min: i, max: a, inverted: o, onSlideStart: s, onSlideMove: c, onSlideEnd: d, onStepKeyDown: f,...g } = t, b = React$1.useRef(null), x = useComposedRefs$1(n, b), S = React$1.useRef(void 0), C = !o;
function w(t) {
let n = S.current || b.current.getBoundingClientRect(), o = [0, n.height], s = linearScale(o, C ? [a, i] : [i, a]);
return S.current = n, s(t - n.top);
}
return /* @__PURE__ */ jsx(SliderOrientationProvider, {
scope: t.__scopeSlider,
startEdge: C ? "bottom" : "top",
endEdge: C ? "top" : "bottom",
size: "height",
direction: C ? 1 : -1,
children: /* @__PURE__ */ jsx(SliderImpl, {
"data-orientation": "vertical",
...g,
ref: x,
style: {
...g.style,
"--radix-slider-thumb-transform": "translateY(50%)"
},
onSlideStart: (t) => {
let n = w(t.clientY);
s?.(n);
},
onSlideMove: (t) => {
let n = w(t.clientY);
c?.(n);
},
onSlideEnd: () => {
S.current = void 0, d?.();
},
onStepKeyDown: (t) => {
let n = BACK_KEYS[C ? "from-bottom" : "from-top"].includes(t.key);
f?.({
event: t,
direction: n ? -1 : 1
});
}
})
});
}), SliderImpl = React$1.forwardRef((t, n) => {
let { __scopeSlider: i, onSlideStart: a, onSlideMove: o, onSlideEnd: s, onHomeKeyDown: c, onEndKeyDown: d, onStepKeyDown: f,...g } = t, b = useSliderContext(SLIDER_NAME, i);
return /* @__PURE__ */ jsx(Primitive.span, {
...g,
ref: n,
onKeyDown: composeEventHandlers(t.onKeyDown, (t) => {
t.key === "Home" ? (c(t), t.preventDefault()) : t.key === "End" ? (d(t), t.preventDefault()) : PAGE_KEYS.concat(ARROW_KEYS).includes(t.key) && (f(t), t.preventDefault());
}),
onPointerDown: composeEventHandlers(t.onPointerDown, (t) => {
let n = t.target;
n.setPointerCapture(t.pointerId), t.preventDefault(), b.thumbs.has(n) ? n.focus() : a(t);
}),
onPointerMove: composeEventHandlers(t.onPointerMove, (t) => {
t.target.hasPointerCapture(t.pointerId) && o(t);
}),
onPointerUp: composeEventHandlers(t.onPointerUp, (t) => {
let n = t.target;
n.hasPointerCapture(t.pointerId) && (n.releasePointerCapture(t.pointerId), s(t));
})
});
}), TRACK_NAME = "SliderTrack", SliderTrack = React$1.forwardRef((t, n) => {
let { __scopeSlider: i,...a } = t, o = useSliderContext(TRACK_NAME, i);
return /* @__PURE__ */ jsx(Primitive.span, {
"data-disabled": o.disabled ? "" : void 0,
"data-orientation": o.orientation,
...a,
ref: n
});
});
SliderTrack.displayName = TRACK_NAME;
var RANGE_NAME = "SliderRange", SliderRange = React$1.forwardRef((t, n) => {
let { __scopeSlider: i,...a } = t, o = useSliderContext(RANGE_NAME, i), s = useSliderOrientationContext(RANGE_NAME, i), c = React$1.useRef(null), d = useComposedRefs$1(n, c), f = o.values.length, g = o.values.map((t) => convertValueToPercentage(t, o.min, o.max)), b = f > 1 ? Math.min(...g) : 0, x = 100 - Math.max(...g);
return /* @__PURE__ */ jsx(Primitive.span, {
"data-orientation": o.orientation,
"data-disabled": o.disabled ? "" : void 0,
...a,
ref: d,
style: {
...t.style,
[s.startEdge]: b + "%",
[s.endEdge]: x + "%"
}
});
});
SliderRange.displayName = RANGE_NAME;
var THUMB_NAME$1 = "SliderThumb", SliderThumb = React$1.forwardRef((t, n) => {
let i = useCollection(t.__scopeSlider), [a, o] = React$1.useState(null), s = useComposedRefs$1(n, (t) => o(t)), c = React$1.useMemo(() => a ? i().findIndex((t) => t.ref.current === a) : -1, [i, a]);
return /* @__PURE__ */ jsx(SliderThumbImpl, {
...t,
ref: s,
index: c
});
}), SliderThumbImpl = React$1.forwardRef((t, n) => {
let { __scopeSlider: i, index: a, name: o,...s } = t, c = useSliderContext(THUMB_NAME$1, i), d = useSliderOrientationContext(THUMB_NAME$1, i), [f, g] = React$1.useState(null), b = useComposedRefs$1(n, (t) => g(t)), x = f ? c.form || !!f.closest("form") : !0, S = useSize(f), C = c.values[a], w = C === void 0 ? 0 : convertValueToPercentage(C, c.min, c.max), E = getLabel(a, c.values.length), O = S?.[d.size], A = O ? getThumbInBoundsOffset(O, w, d.direction) : 0;
return React$1.useEffect(() => {
if (f) return c.thumbs.add(f), () => {
c.thumbs.delete(f);
};
}, [f, c.thumbs]), /* @__PURE__ */ jsxs("span", {
style: {
transform: "var(--radix-slider-thumb-transform)",
position: "absolute",
[d.startEdge]: `calc(${w}% + ${A}px)`
},
children: [/* @__PURE__ */ jsx(Collection.ItemSlot, {
scope: t.__scopeSlider,
children: /* @__PURE__ */ jsx(Primitive.span, {
role: "slider",
"aria-label": t["aria-label"] || E,
"aria-valuemin": c.min,
"aria-valuenow": C,
"aria-valuemax": c.max,
"aria-orientation": c.orientation,
"data-orientation": c.orientation,
"data-disabled": c.disabled ? "" : void 0,
tabIndex: c.disabled ? void 0 : 0,
...s,
ref: b,
style: C === void 0 ? { display: "none" } : t.style,
onFocus: composeEventHandlers(t.onFocus, () => {
c.valueIndexToChangeRef.current = a;
})
})
}), x && /* @__PURE__ */ jsx(SliderBubbleInput, {
name: o ?? (c.name ? c.name + (c.values.length > 1 ? "[]" : "") : void 0),
form: c.form,
value: C
}, a)]
});
});
SliderThumb.displayName = THUMB_NAME$1;
var BUBBLE_INPUT_NAME$1 = "RadioBubbleInput", SliderBubbleInput = React$1.forwardRef(({ __scopeSlider: t, value: n,...i }, a) => {
let o = React$1.useRef(null), s = useComposedRefs$1(o, a), c = usePrevious$1(n);
return React$1.useEffect(() => {
let t = o.current;
if (!t) return;
let i = window.HTMLInputElement.prototype, a = Object.getOwnPropertyDescriptor(i, "value").set;
if (c !== n && a) {
let i = new Event("input", { bubbles: !0 });
a.call(t, n), t.dispatchEvent(i);
}
}, [c, n]), /* @__PURE__ */ jsx(Primitive.input, {
style: { display: "none" },
...i,
ref: s,
defaultValue: n
});
});
SliderBubbleInput.displayName = BUBBLE_INPUT_NAME$1;
function getNextSortedValues(t = [], n, i) {
let a = [...t];
return a[i] = n, a.sort((t, n) => t - n);
}
function convertValueToPercentage(t, n, i) {
let a = 100 / (i - n) * (t - n);
return clamp(a, [0, 100]);
}
function getLabel(t, n) {
if (n > 2) return `Value ${t + 1} of ${n}`;
if (n === 2) return ["Minimum", "Maximum"][t];
}
function getClosestValueIndex(t, n) {
if (t.length === 1) return 0;
let i = t.map((t) => Math.abs(t - n)), a = Math.min(...i);
return i.indexOf(a);
}
function getThumbInBoundsOffset(t, n, i) {
let a = t / 2, o = linearScale([0, 50], [0, a]);
return (a - o(n) * i) * i;
}
function getStepsBetweenValues(t) {
return t.slice(0, -1).map((n, i) => t[i + 1] - n);
}
function hasMinStepsBetweenValues(t, n) {
if (n > 0) {
let i = getStepsBetweenValues(t);
return Math.min(...i) >= n;
}
return !0;
}
function linearScale(t, n) {
return (i) => {
if (t[0] === t[1] || n[0] === n[1]) return n[0];
let a = (n[1] - n[0]) / (t[1] - t[0]);
return n[0] + a * (i - t[0]);
};
}
function getDecimalCount(t) {
return (String(t).split(".")[1] || "").length;
}
function roundValue(t, n) {
let i = 10 ** n;
return Math.round(t * i) / i;
}
var Root$2 = Slider$1, Track = SliderTrack, Range = SliderRange, Thumb$1 = SliderThumb, SWITCH_NAME = "Switch", [createSwitchContext, createSwitchScope] = createContextScope(SWITCH_NAME), [SwitchProvider, useSwitchContext] = createSwitchContext(SWITCH_NAME), Switch$1 = React$1.forwardRef((t, n) => {
let { __scopeSwitch: i, name: a, checked: o, defaultChecked: s, required: c, disabled: d, value: f = "on", onCheckedChange: g, form: b,...x } = t, [S, C] = React$1.useState(null), w = useComposedRefs$1(n, (t) => C(t)), E = React$1.useRef(!1), O = S ? b || !!S.closest("form") : !0, [A, M] = useControllableState({
prop: o,
defaultProp: s ?? !1,
onChange: g,
caller: SWITCH_NAME
});
return /* @__PURE__ */ jsxs(SwitchProvider, {
scope: i,
checked: A,
disabled: d,
children: [/* @__PURE__ */ jsx(Primitive.button, {
type: "button",
role: "switch",
"aria-checked": A,
"aria-required": c,
"data-state": getState(A),
"data-disabled": d ? "" : void 0,
disabled: d,
value: f,
...x,
ref: w,
onClick: composeEventHandlers(t.onClick, (t) => {
M((t) => !t), O && (E.current = t.isPropagationStopped(), E.current || t.stopPropagation());
})
}), O && /* @__PURE__ */ jsx(SwitchBubbleInput, {
control: S,
bubbles: !E.current,
name: a,
value: f,
checked: A,
required: c,
disabled: d,
form: b,
style: { transform: "translateX(-100%)" }
})]
});
});
Switch$1.displayName = SWITCH_NAME;
var THUMB_NAME = "SwitchThumb", SwitchThumb = React$1.forwardRef((t, n) => {
let { __scopeSwitch: i,...a } = t, o = useSwitchContext(THUMB_NAME, i);
return /* @__PURE__ */ jsx(Primitive.span, {
"data-state": getState(o.checked),
"data-disabled": o.disabled ? "" : void 0,
...a,
ref: n
});
});
SwitchThumb.displayName = THUMB_NAME;
var BUBBLE_INPUT_NAME = "SwitchBubbleInput", SwitchBubbleInput = React$1.forwardRef(({ __scopeSwitch: t, control: n, checked: i, bubbles: a = !0,...o }, s) => {
let c = React$1.useRef(null), d = useComposedRefs$1(c, s), f = usePrevious$1(i), g = useSize(n);
return React$1.useEffect(() => {
let t = c.current;
if (!t) return;
let n = window.HTMLInputElement.prototype, o = Object.getOwnPropertyDescriptor(n, "checked").set;
if (f !== i && o) {
let n = new Event("click", { bubbles: a });
o.call(t, i), t.dispatchEvent(n);
}
}, [
f,
i,
a
]), /* @__PURE__ */ jsx("input", {
type: "checkbox",
"aria-hidden": !0,
defaultChecked: i,
...o,
tabIndex: -1,
ref: d,
style: {
...o.style,
...g,
position: "absolute",
pointerEvents: "none",
opacity: 0,
margin: 0
}
});
});
SwitchBubbleInput.displayName = BUBBLE_INPUT_NAME;
function getState(t) {
return t ? "checked" : "unchecked";
}
var Root$1 = Switch$1, Thumb = SwitchThumb, TABS_NAME = "Tabs", [createTabsContext, createTabsScope] = createContextScope(TABS_NAME, [createRovingFocusGroupScope]), useRovingFocusGroupScope$1 = createRovingFocusGroupScope(), [TabsProvider, useTabsContext] = createTabsContext(TABS_NAME), Tabs$2 = React$1.forwardRef((t, n) => {
let { __scopeTabs: i, value: a, onValueChange: o, defaultValue: s, orientation: c = "horizontal", dir: d, activationMode: f = "automatic",...g } = t, b = useDirection(d), [x, S] = useControllableState({
prop: a,
onChange: o,
defaultProp: s ?? "",
caller: TABS_NAME
});
return /* @__PURE__ */ jsx(TabsProvider, {
scope: i,
baseId: useId$1(),
value: x,
onValueChange: S,
orientation: c,
dir: b,
activationMode: f,
children: /* @__PURE__ */ jsx(Primitive.div, {
dir: b,
"data-orientation": c,
...g,
ref: n
})
});
});
Tabs$2.displayName = TABS_NAME;
var TAB_LIST_NAME = "TabsList", TabsList$1 = React$1.forwardRef((t, n) => {
let { __scopeTabs: i, loop: a = !0,...o } = t, s = useTabsContext(TAB_LIST_NAME, i), c = useRovingFocusGroupScope$1(i);
return /* @__PURE__ */ jsx(Root$8, {
asChild: !0,
...c,
orientation: s.orientation,
dir: s.dir,
loop: a,
children: /* @__PURE__ */ jsx(Primitive.div, {
role: "tablist",
"aria-orientation": s.orientation,
...o,
ref: n
})
});
});
TabsList$1.displayName = TAB_LIST_NAME;
var TRIGGER_NAME = "TabsTrigger", TabsTrigger$1 = React$1.forwardRef((t, n) => {
let { __scopeTabs: i, value: a, disabled: o = !1,...s } = t, c = useTabsContext(TRIGGER_NAME, i), d = useRovingFocusGroupScope$1(i), f = makeTriggerId(c.baseId, a), g = makeContentId(c.baseId, a), b = a === c.value;
return /* @__PURE__ */ jsx(Item$1, {
asChild: !0,
...d,
focusable: !o,
active: b,
children: /* @__PURE__ */ jsx(Primitive.button, {
type: "button",
role: "tab",
"aria-selected": b,
"aria-controls": g,
"data-state": b ? "active" : "inactive",
"data-disabled": o ? "" : void 0,
disabled: o,
id: f,
...s,
ref: n,
onMouseDown: composeEventHandlers(t.onMouseDown, (t) => {
!o && t.button === 0 && t.ctrlKey === !1 ? c.onValueChange(a) : t.preventDefault();
}),
onKeyDown: composeEventHandlers(t.onKeyDown, (t) => {
[" ", "Enter"].includes(t.key) && c.onValueChange(a);
}),
onFocus: composeEventHandlers(t.onFocus, () => {
let t = c.activationMode !== "manual";
!b && !o && t && c.onValueChange(a);
})
})
});
});
TabsTrigger$1.displayName = TRIGGER_NAME;
var CONTENT_NAME$1 = "TabsContent", TabsContent$1 = React$1.forwardRef((t, n) => {
let { __scopeTabs: i, value: a, forceMount: o, children: s,...c } = t, d = useTabsContext(CONTENT_NAME$1, i), f = makeTriggerId(d.baseId, a), g = makeContentId(d.baseId, a), b = a === d.value, x = React$1.useRef(b);
return React$1.useEffect(() => {
let t = requestAnimationFrame(() => x.current = !1);
return () => cancelAnimationFrame(t);
}, []), /* @__PURE__ */ jsx(Presence, {
present: o || b,
children: ({ present: i }) => /* @__PURE__ */ jsx(Primitive.div, {
"data-state": b ? "active" : "inactive",
"data-orientation": d.orientation,
role: "tabpanel",
"aria-labelledby": f,
hidden: !i,
id: g,
tabIndex: 0,
...c,
ref: n,
style: {
...t.style,
animationDuration: x.current ? "0s" : void 0
},
children: i && s
})
});
});
TabsContent$1.displayName = CONTENT_NAME$1;
function makeTriggerId(t, n) {
return `${t}-trigger-${n}`;
}
function makeContentId(t, n) {
return `${t}-content-${n}`;
}
var Root2$1 = Tabs$2, List = TabsList$1, Trigger = TabsTrigger$1, Content = TabsContent$1, NAME = "Toggle", Toggle$1 = React$1.forwardRef((t, n) => {
let { pressed: i, defaultPressed: a, onPressedChange: o,...s } = t, [c, d] = useControllableState({
prop: i,
onChange: o,
defaultProp: a ?? !1,
caller: NAME
});
return /* @__PURE__ */ jsx(Primitive.button, {
type: "button",
"aria-pressed": c,
"data-state": c ? "on" : "off",
"data-disabled": t.disabled ? "" : void 0,
...s,
ref: n,
onClick: composeEventHandlers(t.onClick, () => {
t.disabled || d(!c);
})
});
});
Toggle$1.displayName = NAME;
var Root = Toggle$1, TOGGLE_GROUP_NAME = "ToggleGroup", [createToggleGroupContext, createToggleGroupScope] = createContextScope(TOGGLE_GROUP_NAME, [createRovingFocusGroupScope]), useRovingFocusGroupScope = createRovingFocusGroupScope(), ToggleGroup$1 = React.forwardRef((t, n) => {
let { type: i,...a } = t;
if (i === "single") return /* @__PURE__ */ jsx(ToggleGroupImplSingle, {
...a,
ref: n
});
if (i === "multiple") return /* @__PURE__ */ jsx(ToggleGroupImplMultiple, {
...a,
ref: n
});
throw Error(`Missing prop \`type\` expected on \`${TOGGLE_GROUP_NAME}\``);
});
ToggleGroup$1.displayName = TOGGLE_GROUP_NAME;
var [ToggleGroupValueProvider, useToggleGroupValueContext] = createToggleGroupContext(TOGGLE_GROUP_NAME), ToggleGroupImplSingle = React.forwardRef((t, n) => {
let { value: i, defaultValue: a, onValueChange: o = () => {},...s } = t, [c, d] = useControllableState({
prop: i,
defaultProp: a ?? "",
onChange: o,
caller: TOGGLE_GROUP_NAME
});
return /* @__PURE__ */ jsx(ToggleGroupValueProvider, {
scope: t.__scopeToggleGroup,
type: "single",
value: React.useMemo(() => c ? [c] : [], [c]),
onItemActivate: d,
onItemDeactivate: React.useCallback(() => d(""), [d]),
children: /* @__PURE__ */ jsx(ToggleGroupImpl, {
...s,
ref: n
})
});
}), ToggleGroupImplMultiple = React.forwardRef((t, n) => {
let { value: i, defaultValue: a, onValueChange: o = () => {},...s } = t, [c, d] = useControllableState({
prop: i,
defaultProp: a ?? [],
onChange: o,
caller: TOGGLE_GROUP_NAME
}), f = React.useCallback((t) => d((n = []) => [...n, t]), [d]), g = React.useCallback((t) => d((n = []) => n.filter((n) => n !== t)), [d]);
return /* @__PURE__ */ jsx(ToggleGroupValueProvider, {
scope: t.__scopeToggleGroup,
type: "multiple",
value: c,
onItemActivate: f,
onItemDeactivate: g,
children: /* @__PURE__ */ jsx(ToggleGroupImpl, {
...s,
ref: n
})
});
});
ToggleGroup$1.displayName = TOGGLE_GROUP_NAME;
var [ToggleGroupContext$1, useToggleGroupContext] = createToggleGroupContext(TOGGLE_GROUP_NAME), ToggleGroupImpl = React.forwardRef((t, n) => {
let { __scopeToggleGroup: i, disabled: a = !1, rovingFocus: o = !0, orientation: s, dir: c, loop: d = !0,...f } = t, g = useRovingFocusGroupScope(i), b = useDirection(c), x = {
role: "group",
dir: b,
...f
};
return /* @__PURE__ */ jsx(ToggleGroupContext$1, {
scope: i,
rovingFocus: o,
disabled: a,
children: o ? /* @__PURE__ */ jsx(Root$8, {
asChild: !0,
...g,
orientation: s,
dir: b,
loop: d,
children: /* @__PURE__ */ jsx(Primitive.div, {
...x,
ref: n
})
}) : /* @__PURE__ */ jsx(Primitive.div, {
...x,
ref: n
})
});
}), ITEM_NAME$1 = "ToggleGroupItem", ToggleGroupItem$1 = React.forwardRef((t, n) => {
let i = useToggleGroupValueContext(ITEM_NAME$1, t.__scopeToggleGroup), a = useToggleGroupContext(ITEM_NAME$1, t.__scopeToggleGroup), o = useRovingFocusGroupScope(t.__scopeToggleGroup), s = i.value.includes(t.value), c = a.disabled || t.disabled, d = {
...t,
pressed: s,
disabled: c
}, f = React.useRef(null);
return a.rovingFocus ? /* @__PURE__ */ jsx(Item$1, {
asChild: !0,
...o,
focusable: !c,
active: s,
ref: f,
children: /* @__PURE__ */ jsx(ToggleGroupItemImpl, {
...d,
ref: n
})
}) : /* @__PURE__ */ jsx(ToggleGroupItemImpl, {
...d,
ref: n
});
});
ToggleGroupItem$1.displayName = ITEM_NAME$1;
var ToggleGroupItemImpl = React.forwardRef((t, n) => {
let { __scopeToggleGroup: i, value: a,...o } = t, s = useToggleGroupValueContext(ITEM_NAME$1, i), c = {
role: "radio",
"aria-checked": t.pressed,
"aria-pressed": void 0
}, d = s.type === "single" ? c : void 0;
return /* @__PURE__ */ jsx(Toggle$1, {
...d,
...o,
ref: n,
onPressedChange: (t) => {
t ? s.onItemActivate(a) : s.onItemDeactivate(a);
}
});
}), Root2 = ToggleGroup$1, Item2 = ToggleGroupItem$1;
function Slider({ className: t, defaultValue: n, value: i, min: a = 0, max: o = 100,...s }) {
let c = React$1.useMemo(() => Array.isArray(i) ? i : Array.isArray(n) ? n : [a, o], [
i,
n,
a,
o
]);
return /* @__PURE__ */ jsxs(Root$2, {
"data-slot": "slider",
defaultValue: n,
value: i,
min: a,
max: o,
className: cn("relative flex w-full touch-none select-none items-center data-[orientation=vertical]:h-full data-[orientation=vertical]:min-h-44 data-[orientation=vertical]:w-auto data-[orientation=vertical]:flex-col data-[disabled]:opacity-50", t),
...s,
children: [/* @__PURE__ */ jsx(Track, {
"data-slot": "slider-track",
className: cn("bg-muted relative grow overflow-hidden rounded-full data-[orientation=horizontal]:h-1.5 data-[orientation=vertical]:h-full data-[orientation=horizontal]:w-full data-[orientation=vertical]:w-1.5"),
children: /* @__PURE__ */ jsx(Range, {
"data-slot": "slider-range",
className: cn("bg-primary absolute data-[orientation=horizontal]:h-full data-[orientation=vertical]:w-full")
})
}), Array.from({ length: c.length }, (t, n) => /* @__PURE__ */ jsx(Thumb$1, {
"data-slot": "slider-thumb",
className: "border-primary ring-ring/50 focus-visible:outline-hidden block size-4 shrink-0 rounded-full border bg-white shadow-sm transition-[color,box-shadow] hover:ring-4 focus-visible:ring-4 disabled:pointer-events-none disabled:opacity-50"
}, n))]
});
}
var v = (t, n) => () => (n || t((n = { exports: {} }).exports, n), n.exports), y = v((t, n) => {
var i = Object.defineProperty, a = (t, n, a) => n in t ? i(t, n, {
enumerable: !0,
configurable: !0,
writable: !0,
value: a
}) : t[n] = a, o = (t, n) => () => (n || t((n = { exports: {} }).exports, n), n.exports), s = (t, n, i) => a(t, typeof n == "symbol" ? n : n + "", i), c = o((t, n) => {
var i = "\0", a = "\0", o = "", c = class {
constructor(t) {
s(this, "_isDirected", !0), s(this, "_isMultigraph", !1), s(this, "_isCompound", !1), s(this, "_label"), s(this, "_defaultNodeLabelFn", () => {}), s(this, "_defaultEdgeLabelFn", () => {}), s(this, "_nodes", {}), s(this, "_in", {}), s(this, "_preds", {}), s(this, "_out", {}), s(this, "_sucs", {}), s(this, "_edgeObjs", {}), s(this, "_edgeLabels", {}), s(this, "_nodeCount", 0), s(this, "_edgeCount", 0), s(this, "_parent"), s(this, "_children"), t && (this._isDirected = Object.hasOwn(t, "directed") ? t.directed : !0, this._isMultigraph = Object.hasOwn(t, "multigraph") ? t.multigraph : !1, this._isCompound = Object.hasOwn(t, "compound") ? t.compound : !1), this._isCompound && (this._parent = {}, this._children = {}, this._children[a] = {});
}
isDirected() {
return this._isDirected;
}
isMultigraph() {
return this._isMultigraph;
}
isCompound() {
return this._isCompound;
}
setGraph(t) {
return this._label = t, this;
}
graph() {
return this._label;
}
setDefaultNodeLabel(t) {
return this._defaultNodeLabelFn = t, typeof t != "function" && (this._defaultNodeLabelFn = () => t), this;
}
nodeCount() {
return this._nodeCount;
}
nodes() {
return Object.keys(this._nodes);
}
sources() {
var t = this;
return this.nodes().filter((n) => Object.keys(t._in[n]).length === 0);
}
sinks() {
var t = this;
return this.nodes().filter((n) => Object.keys(t._out[n]).length === 0);
}
setNodes(t, n) {
var i = arguments, a = this;
return t.forEach(function(t) {
i.length > 1 ? a.setNode(t, n) : a.setNode(t);
}), this;
}
setNode(t, n) {
return Object.hasOwn(this._nodes, t) ? (arguments.length > 1 && (this._nodes[t] = n), this) : (this._nodes[t] = arguments.length > 1 ? n : this._defaultNodeLabelFn(t), this._isCompound && (this._parent[t] = a, this._children[t] = {}, this._children[a][t] = !0), this._in[t] = {}, this._preds[t] = {}, this._out[t] = {}, this._sucs[t] = {}, ++this._nodeCount, this);
}
node(t) {
return this._nodes[t];
}
hasNode(t) {
return Object.hasOwn(this._nodes, t);
}
removeNode(t) {
var n = this;
if (Object.hasOwn(this._nodes, t)) {
var i = (t) => n.removeEdge(n._edgeObjs[t]);
delete this._nodes[t], this._isCompound && (this._removeFromParentsChildList(t), delete this._parent[t], this.children(t).forEach(function(t) {
n.setParent(t);
}), delete this._children[t]), Object.keys(this._in[t]).forEach(i), delete this._in[t], delete this._preds[t], Object.keys(this._out[t]).forEach(i), delete this._out[t], delete this._sucs[t], --this._nodeCount;
}
return this;
}
setParent(t, n) {
if (!this._isCompound) throw Error("Cannot set parent in a non-compound graph");
if (n === void 0) n = a;
else {
n += "";
for (var i = n; i !== void 0; i = this.parent(i)) if (i === t) throw Error("Setting " + n + " as parent of " + t + " would create a cycle");
this.setNode(n);
}
return this.setNode(t), this._removeFromParentsChildList(t), this._parent[t] = n, this._children[n][t] = !0, this;
}
_removeFromParentsChildList(t) {
delete this._children[this._parent[t]][t];
}
parent(t) {
if (this._isCompound) {
var n = this._parent[t];
if (n !== a) return n;
}
}
children(t = a) {
if (this._isCompound) {
var n = this._children[t];
if (n) return Object.keys(n);
} else {
if (t === a) return this.nodes();
if (this.hasNode(t)) return [];
}
}
predecessors(t) {
var n = this._preds[t];
if (n) return Object.keys(n);
}
successors(t) {
var n = this._sucs[t];
if (n) return Object.keys(n);
}
neighbors(t) {
var n = this.predecessors(t);
if (n) {
let a = new Set(n);
for (var i of this.successors(t)) a.add(i);
return Array.from(a.values());
}
}
isLeaf(t) {
var n;
return n = this.isDirected() ? this.successors(t) : this.neighbors(t), n.length === 0;
}
filterNodes(t) {
var n = new this.constructor({
directed: this._isDirected,
multigraph: this._isMultigraph,
compound: this._isCompound
});
n.setGraph(this.graph());
var i = this;
Object.entries(this._nodes).forEach(function([i, a]) {
t(i) && n.setNode(i, a);
}), Object.values(this._edgeObjs).forEach(function(t) {
n.hasNode(t.v) && n.hasNode(t.w) && n.setEdge(t, i.edge(t));
});
var a = {};
function o(t) {
var s = i.parent(t);
return s === void 0 || n.hasNode(s) ? (a[t] = s, s) : s in a ? a[s] : o(s);
}
return this._isCompound && n.nodes().forEach((t) => n.setParent(t, o(t))), n;
}
setDefaultEdgeLabel(t) {
return this._defaultEdgeLabelFn = t, typeof t != "function" && (this._defaultEdgeLabelFn = () => t), this;
}
edgeCount() {
return this._edgeCount;
}
edges() {
return Object.values(this._edgeObjs);
}
setPath(t, n) {
var i = this, a = arguments;
return t.reduce(function(t, o) {
return a.length > 1 ? i.setEdge(t, o, n) : i.setEdge(t, o), o;
}), this;
}
setEdge() {
var t, n, i, a, o = !1, s = arguments[0];
typeof s == "object" && s && "v" in s ? (t = s.v, n = s.w, i = s.name, arguments.length === 2 && (a = arguments[1], o = !0)) : (t = s, n = arguments[1], i = arguments[3], arguments.length > 2 && (a = arguments[2], o = !0)), t = "" + t, n = "" + n, i !== void 0 && (i = "" + i);
var c = g(this._isDirected, t, n, i);
if (Object.hasOwn(this._edgeLabels, c)) return o && (this._edgeLabels[c] = a), this;
if (i !== void 0 && !this._isMultigraph) throw Error("Cannot set a named edge when isMultigraph = false");
this.setNode(t), this.setNode(n), this._edgeLabels[c] = o ? a : this._defaultEdgeLabelFn(t, n, i);
var f = b(this._isDirected, t, n, i);
return t = f.v, n = f.w, Object.freeze(f), this._edgeObjs[c] = f, d(this._preds[n], t), d(this._sucs[t], n), this._in[n][c] = f, this._out[t][c] = f, this._edgeCount++, this;
}
edge(t, n, i) {
var a = arguments.length === 1 ? x(this._isDirected, arguments[0]) : g(this._isDirected, t, n, i);
return this._edgeLabels[a];
}
edgeAsObj() {
let t = this.edge(...arguments);
return typeof t == "object" ? t : { label: t };
}
hasEdge(t, n, i) {
var a = arguments.length === 1 ? x(this._isDirected, arguments[0]) : g(this._isDirected, t, n, i);
return Object.hasOwn(this._edgeLabels, a);
}
removeEdge(t, n, i) {
var a = arguments.length === 1 ? x(this._isDirected, arguments[0]) : g(this._isDirected, t, n, i), o = this._edgeObjs[a];
return o && (t = o.v, n = o.w, delete this._edgeLabels[a], delete this._edgeObjs[a], f(this._preds[n], t), f(this._sucs[t], n), delete this._in[n][a], delete this._out[t][a], this._edgeCount--), this;
}
inEdges(t, n) {
return this.isDirected() ? this.filterEdges(this._in[t], t, n) : this.nodeEdges(t, n);
}
outEdges(t, n) {
return this.isDirected() ? this.filterEdges(this._out[t], t, n) : this.nodeEdges(t, n);
}
nodeEdges(t, n) {
if (t in this._nodes) return this.filterEdges({
...this._in[t],
...this._out[t]
}, t, n);
}
filterEdges(t, n, i) {
if (t) {
var a = Object.values(t);
return i ? a.filter(function(t) {
return t.v === n && t.w === i || t.v === i && t.w === n;
}) : a;
}
}
};
function d(t, n) {
t[n] ? t[n]++ : t[n] = 1;
}
function f(t, n) {
--t[n] || delete t[n];
}
function g(t, n, a, s) {
var c = "" + n, d = "" + a;
if (!t && c > d) {
var f = c;
c = d, d = f;
}
return c + o + d + o + (s === void 0 ? i : s);
}
function b(t, n, i, a) {
var o = "" + n, s = "" + i;
if (!t && o > s) {
var c = o;
o = s, s = c;
}
var d = {
v: o,
w: s
};
return a && (d.name = a), d;
}
function x(t, n) {
return g(t, n.v, n.w, n.name);
}
n.exports = c;
}), d = o((t, n) => {
n.exports = "3.0.2";
}), f = o((t, n) => {
n.exports = {
Graph: c(),
version: d()
};
}), g = o((t, n) => {
var i = c();
n.exports = {
write: a,
read: d
};
function a(t) {
var n = {
options: {
directed: t.isDirected(),
multigraph: t.isMultigraph(),
compound: t.isCompound()
},
nodes: o(t),
edges: s(t)
};
return t.graph() !== void 0 && (n.value = structuredClone(t.graph())), n;
}
function o(t) {
return t.nodes().map(function(n) {
var i = t.node(n), a = t.parent(n), o = { v: n };
return i !== void 0 && (o.value = i), a !== void 0 && (o.parent = a), o;
});
}
function s(t) {
return t.edges().map(function(n) {
var i = t.edge(n), a = {
v: n.v,
w: n.w
};
return n.name !== void 0 && (a.name = n.name), i !== void 0 && (a.value = i), a;
});
}
function d(t) {
var n = new i(t.options).setGraph(t.value);
return t.nodes.forEach(function(t) {
n.setNode(t.v, t.value), t.parent && n.setParent(t.v, t.parent);
}), t.edges.forEach(function(t) {
n.setEdge({
v: t.v,
w: t.w,
name: t.name
}, t.value);
}), n;
}
}), b = o((t, n) => {
n.exports = a;
var i = () => 1;
function a(t, n, a, s) {
return o(t, String(n), a || i, s || function(n) {
return t.outEdges(n);
});
}
function o(t, n, i, a) {
var o = {}, s = !0, c = 0, d = t.nodes(), f = function(t) {
var n = i(t);
o[t.v].distance + n < o[t.w].distance && (o[t.w] = {
distance: o[t.v].distance + n,
predecessor: t.v
}, s = !0);
}, g = function() {
d.forEach(function(t) {
a(t).forEach(function(n) {
var i = n.v === t ? n.v : n.w, a = i === n.v ? n.w : n.v;
f({
v: i,
w: a
});
});
});
};
d.forEach(function(t) {
o[t] = { distance: t === n ? 0 : Infinity };
});
for (var b = d.length, x = 1; x < b && (s = !1, c++, g(), s); x++);
if (c === b - 1 && (s = !1, g(), s)) throw Error("The graph contains a negative weight cycle");
return o;
}
}), x = o((t, n) => {
n.exports = i;
function i(t) {
var n = {}, i = [], a;
function o(i) {
Object.hasOwn(n, i) || (n[i] = !0, a.push(i), t.successors(i).forEach(o), t.predecessors(i).forEach(o));
}
return t.nodes().forEach(function(t) {
a = [], o(t), a.length && i.push(a);
}), i;
}
}), S = o((t, n) => {
n.exports = class {
constructor() {
s(this, "_arr", []), s(this, "_keyIndices", {});
}
size() {
return this._arr.length;
}
keys() {
return this._arr.map(function(t) {
return t.key;
});
}
has(t) {
return Object.hasOwn(this._keyIndices, t);
}
priority(t) {
var n = this._keyIndices[t];
if (n !== void 0) return this._arr[n].priority;
}
min() {
if (this.size() === 0) throw Error("Queue underflow");
return this._arr[0].key;
}
add(t, n) {
var i = this._keyIndices;
if (t = String(t), !Object.hasOwn(i, t)) {
var a = this._arr, o = a.length;
return i[t] = o, a.push({
key: t,
priority: n
}), this._decrease(o), !0;
}
return !1;
}
removeMin() {
this._swap(0, this._arr.length - 1);
var t = this._arr.pop();
return delete this._keyIndices[t.key], this._heapify(0), t.key;
}
decrease(t, n) {
var i = this._keyIndices[t];
if (n > this._arr[i].priority) throw Error("New priority is greater than current priority. Key: " + t + " Old: " + this._arr[i].priority + " New: " + n);
this._arr[i].priority = n, this._decrease(i);
}
_heapify(t) {
var n = this._arr, i = 2 * t, a = i + 1, o = t;
i < n.length && (o = n[i].priority < n[o].priority ? i : o, a < n.length && (o = n[a].priority < n[o].priority ? a : o), o !== t && (this._swap(t, o), this._heapify(o)));
}
_decrease(t) {
for (var n = this._arr, i = n[t].priority, a; t !== 0 && (a = t >> 1, !(n[a].priority < i));) this._swap(t, a), t = a;
}
_swap(t, n) {
var i = this._arr, a = this._keyIndices, o = i[t], s = i[n];
i[t] = s, i[n] = o, a[s.key] = t, a[o.key] = n;
}
};
}), C = o((t, n) => {
var i = S();
n.exports = o;
var a = () => 1;
function o(t, n, i, o) {
return s(t, String(n), i || a, o || function(n) {
return t.outEdges(n);
});
}
function s(t, n, a, o) {
var s = {}, c = new i(), d, f, g = function(t) {
var n = t.v === d ? t.w : t.v, i = s[n], o = a(t), g = f.distance + o;
if (o < 0) throw Error("dijkstra does not allow negative edge weights. Bad edge: " + t + " Weight: " + o);
g < i.distance && (i.distance = g, i.predecessor = d, c.decrease(n, g));
};
for (t.nodes().forEach(function(t) {
var i = t === n ? 0 : Infinity;
s[t] = { distance: i }, c.add(t, i);
}); c.size() > 0 && (d = c.removeMin(), f = s[d], f.distance !== Infinity);) o(d).forEach(g);
return s;
}
}), w = o((t, n) => {
var i = C();
n.exports = a;
function a(t, n, a) {
return t.nodes().reduce(function(o, s) {
return o[s] = i(t, s, n, a), o;
}, {});
}
}), E = o((t, n) => {
n.exports = i;
function i(t, n, i) {
if (t[n].predecessor !== void 0) throw Error("Invalid source vertex");
if (t[i].predecessor === void 0 && i !== n) throw Error("Invalid destination vertex");
return {
weight: t[i].distance,
path: a(t, n, i)
};
}
function a(t, n, i) {
for (var a = [], o = i; o !== n;) a.push(o), o = t[o].predecessor;
return a.push(n), a.reverse();
}
}), O = o((t, n) => {
n.exports = i;
function i(t) {
var n = 0, i = [], a = {}, o = [];
function s(c) {
var d = a[c] = {
onStack: !0,
lowlink: n,
index: n++
};
if (i.push(c), t.successors(c).forEach(function(t) {
Object.hasOwn(a, t) ? a[t].onStack && (d.lowlink = Math.min(d.lowlink, a[t].index)) : (s(t), d.lowlink = Math.min(d.lowlink, a[t].lowlink));
}), d.lowlink === d.index) {
var f = [], g;
do
g = i.pop(), a[g].onStack = !1, f.push(g);
while (c !== g);
o.push(f);
}
}
return t.nodes().forEach(function(t) {
Object.hasOwn(a, t) || s(t);
}), o;
}
}), A = o((t, n) => {
var i = O();
n.exports = a;
function a(t) {
return i(t).filter(function(n) {
return n.length > 1 || n.length === 1 && t.hasEdge(n[0], n[0]);
});
}
}), M = o((t, n) => {
n.exports = a;
var i = () => 1;
function a(t, n, a) {
return o(t, n || i, a || function(n) {
return t.outEdges(n);
});
}
function o(t, n, i) {
var a = {}, o = t.nodes();
return o.forEach(function(t) {
a[t] = {}, a[t][t] = { distance: 0 }, o.forEach(function(n) {
t !== n && (a[t][n] = { distance: Infinity });
}), i(t).forEach(function(i) {
var o = i.v === t ? i.w : i.v, s = n(i);
a[t][o] = {
distance: s,
predecessor: t
};
});
}), o.forEach(function(t) {
var n = a[t];
o.forEach(function(i) {
var s = a[i];
o.forEach(function(i) {
var a = s[t], o = n[i], c = s[i], d = a.distance + o.distance;
d < c.distance && (c.distance = d, c.predecessor = o.predecessor);
});
});
}), a;
}
}), F = o((t, n) => {
function i(t) {
var n = {}, i = {}, o = [];
function s(c) {
if (Object.hasOwn(i, c)) throw new a();
Object.hasOwn(n, c) || (i[c] = !0, n[c] = !0, t.predecessors(c).forEach(s), delete i[c], o.push(c));
}
if (t.sinks().forEach(s), Object.keys(n).length !== t.nodeCount()) throw new a();
return o;
}
var a = class extends Error {
constructor() {
super(...arguments);
}
};
n.exports = i, i.CycleException = a;
}), I = o((t, n) => {
var i = F();
n.exports = a;
function a(t) {
try {
i(t);
} catch (t) {
if (t instanceof i.CycleException) return !1;
throw t;
}
return !0;
}
}), R = o((t, n) => {
n.exports = i;
function i(t, n, i, o, s) {
Array.isArray(n) || (n = [n]);
var c = (t.isDirected() ? t.successors : t.neighbors).bind(t), d = {};
return n.forEach(function(n) {
if (!t.hasNode(n)) throw Error("Graph does not have node: " + n);
s = a(t, n, i === "post", d, c, o, s);
}), s;
}
function a(t, n, i, o, s, c, d) {
return Object.hasOwn(o, n) || (o[n] = !0, i || (d = c(d, n)), s(n).forEach(function(n) {
d = a(t, n, i, o, s, c, d);
}), i && (d = c(d, n))), d;
}
}), qA = o((t, n) => {
var i = R();
n.exports = a;
function a(t, n, a) {
return i(t, n, a, function(t, n) {
return t.push(n), t;
}, []);
}
}), V = o((t, n) => {
var i = qA();
n.exports = a;
function a(t, n) {
return i(t, n, "post");
}
}), q = o((t, n) => {
var i = qA();
n.exports = a;
function a(t, n) {
return i(t, n, "pre");
}
}), JA = o((t, n) => {
var i = c(), a = S();
n.exports = o;
function o(t, n) {
var o = new i(), s = {}, c = new a(), d;
function f(t) {
var i = t.v === d ? t.w : t.v, a = c.priority(i);
if (a !== void 0) {
var o = n(t);
o < a && (s[i] = d, c.decrease(i, o));
}
}
if (t.nodeCount() === 0) return o;
t.nodes().forEach(function(t) {
c.add(t, Infinity), o.setNode(t);
}), c.decrease(t.nodes()[0], 0);
for (var g = !1; c.size() > 0;) {
if (d = c.removeMin(), Object.hasOwn(s, d)) o.setEdge(d, s[d]);
else {
if (g) throw Error("Input graph is not connected: " + t);
g = !0;
}
t.nodeEdges(d).forEach(f);
}
return o;
}
}), YA = o((t, n) => {
var i = C(), a = b();
n.exports = o;
function o(t, n, i, a) {
return s(t, n, i, a || function(n) {
return t.outEdges(n);
});
}
function s(t, n, o, s) {
if (o === void 0) return i(t, n, o, s);
for (var c = !1, d = t.nodes(), f = 0; f < d.length; f++) {
for (var g = s(d[f]), b = 0; b < g.length; b++) {
var x = g[b], S = x.v === d[f] ? x.v : x.w, C = S === x.v ? x.w : x.v;
o({
v: S,
w: C
}) < 0 && (c = !0);
}
if (c) return a(t, n, o, s);
}
return i(t, n, o, s);
}
}), XA = o((t, n) => {
n.exports = {
bellmanFord: b(),
components: x(),
dijkstra: C(),
dijkstraAll: w(),
extractPath: E(),
findCycles: A(),
floydWarshall: M(),
isAcyclic: I(),
postorder: V(),
preorder: q(),
prim: JA(),
shortestPaths: YA(),
reduce: R(),
tarjan: O(),
topsort: F()
};
}), ZA = f();
n.exports = {
Graph: ZA.Graph,
json: g(),
alg: XA(),
version: ZA.version
};
}), ne = v((t, n) => {
var i = class {
constructor() {
let t = {};
t._next = t._prev = t, this._sentinel = t;
}
dequeue() {
let t = this._sentinel, n = t._prev;
if (n !== t) return a(n), n;
}
enqueue(t) {
let n = this._sentinel;
t._prev && t._next && a(t), t._next = n._next, n._next._prev = t, n._next = t, t._prev = n;
}
toString() {
let t = [], n = this._sentinel, i = n._prev;
for (; i !== n;) t.push(JSON.stringify(i, o)), i = i._prev;
return "[" + t.join(", ") + "]";
}
};
function a(t) {
t._prev._next = t._next, t._next._prev = t._prev, delete t._next, delete t._prev;
}
function o(t, n) {
if (t !== "_next" && t !== "_prev") return n;
}
n.exports = i;
}), oe = v((t, n) => {
var i = y().Graph, a = ne();
n.exports = s;
var o = () => 1;
function s(t, n) {
if (t.nodeCount() <= 1) return [];
let i = f(t, n || o);
return c(i.graph, i.buckets, i.zeroIdx).flatMap((n) => t.outEdges(n.v, n.w));
}
function c(t, n, i) {
let a = [], o = n[n.length - 1], s = n[0], c;
for (; t.nodeCount();) {
for (; c = s.dequeue();) d(t, n, i, c);
for (; c = o.dequeue();) d(t, n, i, c);
if (t.nodeCount()) {
for (let o = n.length - 2; o > 0; --o) if (c = n[o].dequeue(), c) {
a = a.concat(d(t, n, i, c, !0));
break;
}
}
}
return a;
}
function d(t, n, i, a, o) {
let s = o ? [] : void 0;
return t.inEdges(a.v).forEach((a) => {
let c = t.edge(a), d = t.node(a.v);
o && s.push({
v: a.v,
w: a.w
}), d.out -= c, g(n, i, d);
}), t.outEdges(a.v).forEach((a) => {
let o = t.edge(a), s = a.w, c = t.node(s);
c.in -= o, g(n, i, c);
}), t.removeNode(a.v), s;
}
function f(t, n) {
let o = new i(), s = 0, c = 0;
t.nodes().forEach((t) => {
o.setNode(t, {
v: t,
in: 0,
out: 0
});
}), t.edges().forEach((t) => {
let i = o.edge(t.v, t.w) || 0, a = n(t), d = i + a;
o.setEdge(t.v, t.w, d), c = Math.max(c, o.node(t.v).out += a), s = Math.max(s, o.node(t.w).in += a);
});
let d = b(c + s + 3).map(() => new a()), f = s + 1;
return o.nodes().forEach((t) => {
g(d, f, o.node(t));
}), {
graph: o,
buckets: d,
zeroIdx: f
};
}
function g(t, n, i) {
i.out ? i.in ? t[i.out - i.in + n].enqueue(i) : t[t.length - 1].enqueue(i) : t[0].enqueue(i);
}
function b(t) {
let n = [];
for (let i = 0; i < t; i++) n.push(i);
return n;
}
}), _ = v((t, n) => {
var i = y().Graph;
n.exports = {
addBorderNode: S,
addDummyNode: a,
applyWithChunking: E,
asNonCompoundGraph: s,
buildLayerMatrix: g,
intersectRect: f,
mapValues: q,
maxRank: O,
normalizeRanks: b,
notime: F,
partition: A,
pick: V,
predecessorWeights: d,
range: qA,
removeEmptyRanks: x,
simplify: o,
successorWeights: c,
time: M,
uniqueId: R,
zipObject: JA
};
function a(t, n, i, a) {
for (var o = a; t.hasNode(o);) o = R(a);
return i.dummy = n, t.setNode(o, i), o;
}
function o(t) {
let n = new i().setGraph(t.graph());
return t.nodes().forEach((i) => n.setNode(i, t.node(i))), t.edges().forEach((i) => {
let a = n.edge(i.v, i.w) || {
weight: 0,
minlen: 1
}, o = t.edge(i);
n.setEdge(i.v, i.w, {
weight: a.weight + o.weight,
minlen: Math.max(a.minlen, o.minlen)
});
}), n;
}
function s(t) {
let n = new i({ multigraph: t.isMultigraph() }).setGraph(t.graph());
return t.nodes().forEach((i) => {
t.children(i).length || n.setNode(i, t.node(i));
}), t.edges().forEach((i) => {
n.setEdge(i, t.edge(i));
}), n;
}
function c(t) {
let n = t.nodes().map((n) => {
let i = {};
return t.outEdges(n).forEach((n) => {
i[n.w] = (i[n.w] || 0) + t.edge(n).weight;
}), i;
});
return JA(t.nodes(), n);
}
function d(t) {
let n = t.nodes().map((n) => {
let i = {};
return t.inEdges(n).forEach((n) => {
i[n.v] = (i[n.v] || 0) + t.edge(n).weight;
}), i;
});
return JA(t.nodes(), n);
}
function f(t, n) {
let i = t.x, a = t.y, o = n.x - i, s = n.y - a, c = t.width / 2, d = t.height / 2;
if (!o && !s) throw Error("Not possible to find intersection inside of the rectangle");
let f, g;
return Math.abs(s) * c > Math.abs(o) * d ? (s < 0 && (d = -d), f = d * o / s, g = d) : (o < 0 && (c = -c), f = c, g = c * s / o), {
x: i + f,
y: a + g
};
}
function g(t) {
let n = qA(O(t) + 1).map(() => []);
return t.nodes().forEach((i) => {
let a = t.node(i), o = a.rank;
o !== void 0 && (n[o][a.order] = i);
}), n;
}
function b(t) {
let n = t.nodes().map((n) => {
let i = t.node(n).rank;
return i === void 0 ? Number.MAX_VALUE : i;
}), i = E(Math.min, n);
t.nodes().forEach((n) => {
let a = t.node(n);
Object.hasOwn(a, "rank") && (a.rank -= i);
});
}
function x(t) {
let n = t.nodes().map((n) => t.node(n).rank).filter((t) => t !== void 0), i = E(Math.min, n), a = [];
t.nodes().forEach((n) => {
let o = t.node(n).rank - i;
a[o] || (a[o] = []), a[o].push(n);
});
let o = 0, s = t.graph().nodeRankFactor;
Array.from(a).forEach((n, i) => {
n === void 0 && i % s !== 0 ? --o : n !== void 0 && o && n.forEach((n) => t.node(n).rank += o);
});
}
function S(t, n, i, o) {
let s = {
width: 0,
height: 0
};
return arguments.length >= 4 && (s.rank = i, s.order = o), a(t, "border", s, n);
}
function C(t, n = w) {
let i = [];
for (let a = 0; a < t.length; a += n) {
let o = t.slice(a, a + n);
i.push(o);
}
return i;
}
var w = 65535;
function E(t, n) {
if (n.length > w) {
let i = C(n);
return t.apply(null, i.map((n) => t.apply(null, n)));
} else return t.apply(null, n);
}
function O(t) {
let n = t.nodes().map((n) => {
let i = t.node(n).rank;
return i === void 0 ? Number.MIN_VALUE : i;
});
return E(Math.max, n);
}
function A(t, n) {
let i = {
lhs: [],
rhs: []
};
return t.forEach((t) => {
n(t) ? i.lhs.push(t) : i.rhs.push(t);
}), i;
}
function M(t, n) {
let i = Date.now();
try {
return n();
} finally {
console.log(t + " time: " + (Date.now() - i) + "ms");
}
}
function F(t, n) {
return n();
}
var I = 0;
function R(t) {
var n = ++I;
return t + ("" + n);
}
function qA(t, n, i = 1) {
n ?? (n = t, t = 0);
let a = (t) => t < n;
i < 0 && (a = (t) => n < t);
let o = [];
for (let n = t; a(n); n += i) o.push(n);
return o;
}
function V(t, n) {
let i = {};
for (let a of n) t[a] !== void 0 && (i[a] = t[a]);
return i;
}
function q(t, n) {
let i = n;
return typeof n == "string" && (i = (t) => t[n]), Object.entries(t).reduce((t, [n, a]) => (t[n] = i(a, n), t), {});
}
function JA(t, n) {
return t.reduce((t, i, a) => (t[i] = n[a], t), {});
}
}), pe = v((t, n) => {
var i = oe(), a = _().uniqueId;
n.exports = {
run: o,
undo: c
};
function o(t) {
(t.graph().acyclicer === "greedy" ? i(t, n(t)) : s(t)).forEach((n) => {
let i = t.edge(n);
t.removeEdge(n), i.forwardName = n.name, i.reversed = !0, t.setEdge(n.w, n.v, i, a("rev"));
});
function n(t) {
return (n) => t.edge(n).weight;
}
}
function s(t) {
let n = [], i = {}, a = {};
function o(s) {
Object.hasOwn(a, s) || (a[s] = !0, i[s] = !0, t.outEdges(s).forEach((t) => {
Object.hasOwn(i, t.w) ? n.push(t) : o(t.w);
}), delete i[s]);
}
return t.nodes().forEach(o), n;
}
function c(t) {
t.edges().forEach((n) => {
let i = t.edge(n);
if (i.reversed) {
t.removeEdge(n);
let a = i.forwardName;
delete i.reversed, delete i.forwardName, t.setEdge(n.w, n.v, i, a);
}
});
}
}), we = v((t, n) => {
var i = _();
n.exports = {
run: a,
undo: s
};
function a(t) {
t.graph().dummyChains = [], t.edges().forEach((n) => o(t, n));
}
function o(t, n) {
let a = n.v, o = t.node(a).rank, s = n.w, c = t.node(s).rank, d = n.name, f = t.edge(n), g = f.labelRank;
if (c === o + 1) return;
t.removeEdge(n);
let b, x, S;
for (S = 0, ++o; o < c; ++S, ++o) f.points = [], x = {
width: 0,
height: 0,
edgeLabel: f,
edgeObj: n,
rank: o
}, b = i.addDummyNode(t, "edge", x, "_d"), o === g && (x.width = f.width, x.height = f.height, x.dummy = "edge-label", x.labelpos = f.labelpos), t.setEdge(a, b, { weight: f.weight }, d), S === 0 && t.graph().dummyChains.push(b), a = b;
t.setEdge(a, s, { weight: f.weight }, d);
}
function s(t) {
t.graph().dummyChains.forEach((n) => {
let i = t.node(n), a = i.edgeLabel, o;
for (t.setEdge(i.edgeObj, a); i.dummy;) o = t.successors(n)[0], t.removeNode(n), a.points.push({
x: i.x,
y: i.y
}), i.dummy === "edge-label" && (a.x = i.x, a.y = i.y, a.width = i.width, a.height = i.height), n = o, i = t.node(n);
});
}
}), j = v((t, n) => {
var { applyWithChunking: i } = _();
n.exports = {
longestPath: a,
slack: o
};
function a(t) {
var n = {};
function a(o) {
var s = t.node(o);
if (Object.hasOwn(n, o)) return s.rank;
n[o] = !0;
let c = t.outEdges(o).map((n) => n == null ? Infinity : a(n.w) - t.edge(n).minlen);
var d = i(Math.min, c);
return d === Infinity && (d = 0), s.rank = d;
}
t.sources().forEach(a);
}
function o(t, n) {
return t.node(n.w).rank - t.node(n.v).rank - t.edge(n).minlen;
}
}), G = v((t, n) => {
var i = y().Graph, a = j().slack;
n.exports = o;
function o(t) {
var n = new i({ directed: !1 }), o = t.nodes()[0], f = t.nodeCount();
n.setNode(o, {});
for (var g, b; s(n, t) < f;) g = c(n, t), b = n.hasNode(g.v) ? a(t, g) : -a(t, g), d(n, t, b);
return n;
}
function s(t, n) {
function i(o) {
n.nodeEdges(o).forEach((s) => {
var c = s.v, d = o === c ? s.w : c;
!t.hasNode(d) && !a(n, s) && (t.setNode(d, {}), t.setEdge(o, d, {}), i(d));
});
}
return t.nodes().forEach(i), t.nodeCount();
}
function c(t, n) {
return n.edges().reduce((i, o) => {
let s = Infinity;
return t.hasNode(o.v) !== t.hasNode(o.w) && (s = a(n, o)), s < i[0] ? [s, o] : i;
}, [Infinity, null])[1];
}
function d(t, n, i) {
t.nodes().forEach((t) => n.node(t).rank += i);
}
}), Ie = v((t, n) => {
var i = G(), a = j().slack, o = j().longestPath, s = y().alg.preorder, c = y().alg.postorder, d = _().simplify;
n.exports = f, f.initLowLimValues = S, f.initCutValues = g, f.calcCutValue = x, f.leaveEdge = w, f.enterEdge = E, f.exchangeEdges = O;
function f(t) {
t = d(t), o(t);
var n = i(t);
S(n), g(n, t);
for (var a, s; a = w(n);) s = E(n, t, a), O(n, t, a, s);
}
function g(t, n) {
var i = c(t, t.nodes());
i = i.slice(0, i.length - 1), i.forEach((i) => b(t, n, i));
}
function b(t, n, i) {
var a = t.node(i).parent;
t.edge(i, a).cutvalue = x(t, n, i);
}
function x(t, n, i) {
var a = t.node(i).parent, o = !0, s = n.edge(i, a), c = 0;
return s ||= (o = !1, n.edge(a, i)), c = s.weight, n.nodeEdges(i).forEach((s) => {
var d = s.v === i, f = d ? s.w : s.v;
if (f !== a) {
var g = d === o, b = n.edge(s).weight;
if (c += g ? b : -b, M(t, i, f)) {
var x = t.edge(i, f).cutvalue;
c += g ? -x : x;
}
}
}), c;
}
function S(t, n) {
arguments.length < 2 && (n = t.nodes()[0]), C(t, {}, 1, n);
}
function C(t, n, i, a, o) {
var s = i, c = t.node(a);
return n[a] = !0, t.neighbors(a).forEach((o) => {
Object.hasOwn(n, o) || (i = C(t, n, i, o, a));
}), c.low = s, c.lim = i++, o ? c.parent = o : delete c.parent, i;
}
function w(t) {
return t.edges().find((n) => t.edge(n).cutvalue < 0);
}
function E(t, n, i) {
var o = i.v, s = i.w;
n.hasEdge(o, s) || (o = i.w, s = i.v);
var c = t.node(o), d = t.node(s), f = c, g = !1;
return c.lim > d.lim && (f = d, g = !0), n.edges().filter((n) => g === F(t, t.node(n.v), f) && g !== F(t, t.node(n.w), f)).reduce((t, i) => a(n, i) < a(n, t) ? i : t);
}
function O(t, n, i, a) {
var o = i.v, s = i.w;
t.removeEdge(o, s), t.setEdge(a.v, a.w, {}), S(t), g(t, n), A(t, n);
}
function A(t, n) {
var i = t.nodes().find((t) => !n.node(t).parent), a = s(t, i);
a = a.slice(1), a.forEach((i) => {
var a = t.node(i).parent, o = n.edge(i, a), s = !1;
o || (o = n.edge(a, i), s = !0), n.node(i).rank = n.node(a).rank + (s ? o.minlen : -o.minlen);
});
}
function M(t, n, i) {
return t.hasEdge(n, i);
}
function F(t, n, i) {
return i.low <= n.lim && n.lim <= i.lim;
}
}), qe = v((t, n) => {
var i = j().longestPath, a = G(), o = Ie();
n.exports = s;
function s(t) {
var n = t.graph().ranker;
if (n instanceof Function) return n(t);
switch (t.graph().ranker) {
case "network-simplex":
f(t);
break;
case "tight-tree":
d(t);
break;
case "longest-path":
c(t);
break;
case "none": break;
default: f(t);
}
}
var c = i;
function d(t) {
i(t), a(t);
}
function f(t) {
o(t);
}
}), Re = v((t, n) => {
n.exports = i;
function i(t) {
let n = o(t);
t.graph().dummyChains.forEach((i) => {
let o = t.node(i), s = o.edgeObj, c = a(t, n, s.v, s.w), d = c.path, f = c.lca, g = 0, b = d[g], x = !0;
for (; i !== s.w;) {
if (o = t.node(i), x) {
for (; (b = d[g]) !== f && t.node(b).maxRank < o.rank;) g++;
b === f && (x = !1);
}
if (!x) {
for (; g < d.length - 1 && t.node(b = d[g + 1]).minRank <= o.rank;) g++;
b = d[g];
}
t.setParent(i, b), i = t.successors(i)[0];
}
});
}
function a(t, n, i, a) {
let o = [], s = [], c = Math.min(n[i].low, n[a].low), d = Math.max(n[i].lim, n[a].lim), f, g;
f = i;
do
f = t.parent(f), o.push(f);
while (f && (n[f].low > c || d > n[f].lim));
for (g = f, f = a; (f = t.parent(f)) !== g;) s.push(f);
return {
path: o.concat(s.reverse()),
lca: g
};
}
function o(t) {
let n = {}, i = 0;
function a(o) {
let s = i;
t.children(o).forEach(a), n[o] = {
low: s,
lim: i++
};
}
return t.children().forEach(a), n;
}
}), Pe = v((t, n) => {
var i = _();
n.exports = {
run: a,
cleanup: d
};
function a(t) {
let n = i.addDummyNode(t, "root", {}, "_root"), a = s(t), d = Object.values(a), f = i.applyWithChunking(Math.max, d) - 1, g = 2 * f + 1;
t.graph().nestingRoot = n, t.edges().forEach((n) => t.edge(n).minlen *= g);
let b = c(t) + 1;
t.children().forEach((i) => o(t, n, g, b, f, a, i)), t.graph().nodeRankFactor = g;
}
function o(t, n, a, s, c, d, f) {
let g = t.children(f);
if (!g.length) {
f !== n && t.setEdge(n, f, {
weight: 0,
minlen: a
});
return;
}
let b = i.addBorderNode(t, "_bt"), x = i.addBorderNode(t, "_bb"), S = t.node(f);
t.setParent(b, f), S.borderTop = b, t.setParent(x, f), S.borderBottom = x, g.forEach((i) => {
o(t, n, a, s, c, d, i);
let g = t.node(i), S = g.borderTop ? g.borderTop : i, C = g.borderBottom ? g.borderBottom : i, w = g.borderTop ? s : 2 * s, E = S === C ? c - d[f] + 1 : 1;
t.setEdge(b, S, {
weight: w,
minlen: E,
nestingEdge: !0
}), t.setEdge(C, x, {
weight: w,
minlen: E,
nestingEdge: !0
});
}), t.parent(f) || t.setEdge(n, b, {
weight: 0,
minlen: c + d[f]
});
}
function s(t) {
var n = {};
function i(a, o) {
var s = t.children(a);
s && s.length && s.forEach((t) => i(t, o + 1)), n[a] = o;
}
return t.children().forEach((t) => i(t, 1)), n;
}
function c(t) {
return t.edges().reduce((n, i) => n + t.edge(i).weight, 0);
}
function d(t) {
var n = t.graph();
t.removeNode(n.nestingRoot), delete n.nestingRoot, t.edges().forEach((n) => {
t.edge(n).nestingEdge && t.removeEdge(n);
});
}
}), Ge = v((t, n) => {
var i = _();
n.exports = a;
function a(t) {
function n(i) {
let a = t.children(i), s = t.node(i);
if (a.length && a.forEach(n), Object.hasOwn(s, "minRank")) {
s.borderLeft = [], s.borderRight = [];
for (let n = s.minRank, a = s.maxRank + 1; n < a; ++n) o(t, "borderLeft", "_bl", i, s, n), o(t, "borderRight", "_br", i, s, n);
}
}
t.children().forEach(n);
}
function o(t, n, a, o, s, c) {
let d = {
width: 0,
height: 0,
rank: c,
borderType: n
}, f = s[n][c - 1], g = i.addDummyNode(t, "border", d, a);
s[n][c] = g, t.setParent(g, o), f && t.setEdge(f, g, { weight: 1 });
}
}), Be = v((t, n) => {
n.exports = {
adjust: i,
undo: a
};
function i(t) {
let n = t.graph().rankdir.toLowerCase();
(n === "lr" || n === "rl") && o(t);
}
function a(t) {
let n = t.graph().rankdir.toLowerCase();
(n === "bt" || n === "rl") && c(t), (n === "lr" || n === "rl") && (f(t), o(t));
}
function o(t) {
t.nodes().forEach((n) => s(t.node(n))), t.edges().forEach((n) => s(t.edge(n)));
}
function s(t) {
let n = t.width;
t.width = t.height, t.height = n;
}
function c(t) {
t.nodes().forEach((n) => d(t.node(n))), t.edges().forEach((n) => {
let i = t.edge(n);
i.points.forEach(d), Object.hasOwn(i, "y") && d(i);
});
}
function d(t) {
t.y = -t.y;
}
function f(t) {
t.nodes().forEach((n) => g(t.node(n))), t.edges().forEach((n) => {
let i = t.edge(n);
i.points.forEach(g), Object.hasOwn(i, "x") && g(i);
});
}
function g(t) {
let n = t.x;
t.x = t.y, t.y = n;
}
}), Xe = v((t, n) => {
var i = _();
n.exports = a;
function a(t) {
let n = {}, a = t.nodes().filter((n) => !t.children(n).length), o = a.map((n) => t.node(n).rank), s = i.applyWithChunking(Math.max, o), c = i.range(s + 1).map(() => []);
function d(i) {
if (n[i]) return;
n[i] = !0;
let a = t.node(i);
c[a.rank].push(i), t.successors(i).forEach(d);
}
return a.sort((n, i) => t.node(n).rank - t.node(i).rank).forEach(d), c;
}
}), Ue = v((t, n) => {
var i = _().zipObject;
n.exports = a;
function a(t, n) {
let i = 0;
for (let a = 1; a < n.length; ++a) i += o(t, n[a - 1], n[a]);
return i;
}
function o(t, n, a) {
let o = i(a, a.map((t, n) => n)), s = n.flatMap((n) => t.outEdges(n).map((n) => ({
pos: o[n.w],
weight: t.edge(n).weight
})).sort((t, n) => t.pos - n.pos)), c = 1;
for (; c < a.length;) c <<= 1;
let d = 2 * c - 1;
--c;
let f = Array(d).fill(0), g = 0;
return s.forEach((t) => {
let n = t.pos + c;
f[n] += t.weight;
let i = 0;
for (; n > 0;) n % 2 && (i += f[n + 1]), n = n - 1 >> 1, f[n] += t.weight;
g += t.weight * i;
}), g;
}
}), Qe = v((t, n) => {
n.exports = i;
function i(t, n = []) {
return n.map((n) => {
let i = t.inEdges(n);
if (i.length) {
let a = i.reduce((n, i) => {
let a = t.edge(i), o = t.node(i.v);
return {
sum: n.sum + a.weight * o.order,
weight: n.weight + a.weight
};
}, {
sum: 0,
weight: 0
});
return {
v: n,
barycenter: a.sum / a.weight,
weight: a.weight
};
} else return { v: n };
});
}
}), Ze = v((t, n) => {
var i = _();
n.exports = a;
function a(t, n) {
let i = {};
t.forEach((t, n) => {
let a = i[t.v] = {
indegree: 0,
in: [],
out: [],
vs: [t.v],
i: n
};
t.barycenter !== void 0 && (a.barycenter = t.barycenter, a.weight = t.weight);
}), n.edges().forEach((t) => {
let n = i[t.v], a = i[t.w];
n !== void 0 && a !== void 0 && (a.indegree++, n.out.push(i[t.w]));
});
let a = Object.values(i).filter((t) => !t.indegree);
return o(a);
}
function o(t) {
let n = [];
function a(t) {
return (n) => {
n.merged || (n.barycenter === void 0 || t.barycenter === void 0 || n.barycenter >= t.barycenter) && s(t, n);
};
}
function o(n) {
return (i) => {
i.in.push(n), --i.indegree === 0 && t.push(i);
};
}
for (; t.length;) {
let i = t.pop();
n.push(i), i.in.reverse().forEach(a(i)), i.out.forEach(o(i));
}
return n.filter((t) => !t.merged).map((t) => i.pick(t, [
"vs",
"i",
"barycenter",
"weight"
]));
}
function s(t, n) {
let i = 0, a = 0;
t.weight && (i += t.barycenter * t.weight, a += t.weight), n.weight && (i += n.barycenter * n.weight, a += n.weight), t.vs = n.vs.concat(t.vs), t.barycenter = i / a, t.weight = a, t.i = Math.min(n.i, t.i), n.merged = !0;
}
}), tt = v((t, n) => {
var i = _();
n.exports = a;
function a(t, n) {
let a = i.partition(t, (t) => Object.hasOwn(t, "barycenter")), c = a.lhs, d = a.rhs.sort((t, n) => n.i - t.i), f = [], g = 0, b = 0, x = 0;
c.sort(s(!!n)), x = o(f, d, x), c.forEach((t) => {
x += t.vs.length, f.push(t.vs), g += t.barycenter * t.weight, b += t.weight, x = o(f, d, x);
});
let S = { vs: f.flat(!0) };
return b && (S.barycenter = g / b, S.weight = b), S;
}
function o(t, n, i) {
let a;
for (; n.length && (a = n[n.length - 1]).i <= i;) n.pop(), t.push(a.vs), i++;
return i;
}
function s(t) {
return (n, i) => n.barycenter < i.barycenter ? -1 : n.barycenter > i.barycenter ? 1 : t ? i.i - n.i : n.i - i.i;
}
}), it = v((t, n) => {
var i = Qe(), a = Ze(), o = tt();
n.exports = s;
function s(t, n, f, g) {
let b = t.children(n), x = t.node(n), S = x ? x.borderLeft : void 0, C = x ? x.borderRight : void 0, w = {};
S && (b = b.filter((t) => t !== S && t !== C));
let E = i(t, b);
E.forEach((n) => {
if (t.children(n.v).length) {
let i = s(t, n.v, f, g);
w[n.v] = i, Object.hasOwn(i, "barycenter") && d(n, i);
}
});
let O = a(E, f);
c(O, w);
let A = o(O, g);
if (S && (A.vs = [
S,
A.vs,
C
].flat(!0), t.predecessors(S).length)) {
let n = t.node(t.predecessors(S)[0]), i = t.node(t.predecessors(C)[0]);
Object.hasOwn(A, "barycenter") || (A.barycenter = 0, A.weight = 0), A.barycenter = (A.barycenter * A.weight + n.order + i.order) / (A.weight + 2), A.weight += 2;
}
return A;
}
function c(t, n) {
t.forEach((t) => {
t.vs = t.vs.flatMap((t) => n[t] ? n[t].vs : t);
});
}
function d(t, n) {
t.barycenter === void 0 ? (t.barycenter = n.barycenter, t.weight = n.weight) : (t.barycenter = (t.barycenter * t.weight + n.barycenter * n.weight) / (t.weight + n.weight), t.weight += n.weight);
}
}), st = v((t, n) => {
var i = y().Graph, a = _();
n.exports = o;
function o(t, n, a, o) {
o ||= t.nodes();
let c = s(t), d = new i({ compound: !0 }).setGraph({ root: c }).setDefaultNodeLabel((n) => t.node(n));
return o.forEach((i) => {
let o = t.node(i), s = t.parent(i);
(o.rank === n || o.minRank <= n && n <= o.maxRank) && (d.setNode(i), d.setParent(i, s || c), t[a](i).forEach((n) => {
let a = n.v === i ? n.w : n.v, o = d.edge(a, i), s = o === void 0 ? 0 : o.weight;
d.setEdge(a, i, { weight: t.edge(n).weight + s });
}), Object.hasOwn(o, "minRank") && d.setNode(i, {
borderLeft: o.borderLeft[n],
borderRight: o.borderRight[n]
}));
}), d;
}
function s(t) {
for (var n; t.hasNode(n = a.uniqueId("_root")););
return n;
}
}), dt = v((t, n) => {
n.exports = i;
function i(t, n, i) {
let a = {}, o;
i.forEach((i) => {
let s = t.parent(i), c, d;
for (; s;) {
if (c = t.parent(s), c ? (d = a[c], a[c] = s) : (d = o, o = s), d && d !== s) {
n.setEdge(d, s);
return;
}
s = c;
}
});
}
}), ft = v((t, n) => {
var i = Xe(), a = Ue(), o = it(), s = st(), c = dt(), d = y().Graph, f = _();
n.exports = g;
function g(t, n = {}) {
if (typeof n.customOrder == "function") {
n.customOrder(t, g);
return;
}
let o = f.maxRank(t), s = b(t, f.range(1, o + 1), "inEdges"), c = b(t, f.range(o - 1, -1, -1), "outEdges"), d = i(t);
if (S(t, d), n.disableOptimalOrderHeuristic) return;
let C = Infinity, w, E = n.constraints || [];
for (let n = 0, i = 0; i < 4; ++n, ++i) {
x(n % 2 ? s : c, n % 4 >= 2, E), d = f.buildLayerMatrix(t);
let o = a(t, d);
o < C ? (i = 0, w = Object.assign({}, d), C = o) : o === C && (w = structuredClone(d));
}
S(t, w);
}
function b(t, n, i) {
let a = /* @__PURE__ */ new Map(), o = (t, n) => {
a.has(t) || a.set(t, []), a.get(t).push(n);
};
for (let n of t.nodes()) {
let i = t.node(n);
if (typeof i.rank == "number" && o(i.rank, n), typeof i.minRank == "number" && typeof i.maxRank == "number") for (let t = i.minRank; t <= i.maxRank; t++) t !== i.rank && o(t, n);
}
return n.map(function(n) {
return s(t, n, i, a.get(n) || []);
});
}
function x(t, n, i) {
let a = new d();
t.forEach(function(t) {
i.forEach((t) => a.setEdge(t.left, t.right));
let s = t.graph().root, d = o(t, s, a, n);
d.vs.forEach((n, i) => t.node(n).order = i), c(t, a, d.vs);
});
}
function S(t, n) {
Object.values(n).forEach((n) => n.forEach((n, i) => t.node(n).order = i));
}
}), yt = v((t, n) => {
var i = y().Graph, a = _();
n.exports = {
positionX: E,
findType1Conflicts: o,
findType2Conflicts: s,
addConflict: d,
hasConflict: f,
verticalAlignment: g,
horizontalCompaction: b,
alignCoordinates: C,
findSmallestWidthAlignment: S,
balance: w
};
function o(t, n) {
let i = {};
function a(n, a) {
let o = 0, s = 0, f = n.length, g = a[a.length - 1];
return a.forEach((n, b) => {
let x = c(t, n), S = x ? t.node(x).order : f;
(x || n === g) && (a.slice(s, b + 1).forEach((n) => {
t.predecessors(n).forEach((a) => {
let s = t.node(a), c = s.order;
(c < o || S < c) && !(s.dummy && t.node(n).dummy) && d(i, a, n);
});
}), s = b + 1, o = S);
}), a;
}
return n.length && n.reduce(a), i;
}
function s(t, n) {
let i = {};
function o(n, o, s, c, f) {
let g;
a.range(o, s).forEach((a) => {
g = n[a], t.node(g).dummy && t.predecessors(g).forEach((n) => {
let a = t.node(n);
a.dummy && (a.order < c || a.order > f) && d(i, n, g);
});
});
}
function s(n, i) {
let a = -1, s, c = 0;
return i.forEach((d, f) => {
if (t.node(d).dummy === "border") {
let n = t.predecessors(d);
n.length && (s = t.node(n[0]).order, o(i, c, f, a, s), c = f, a = s);
}
o(i, c, i.length, s, n.length);
}), i;
}
return n.length && n.reduce(s), i;
}
function c(t, n) {
if (t.node(n).dummy) return t.predecessors(n).find((n) => t.node(n).dummy);
}
function d(t, n, i) {
if (n > i) {
let t = n;
n = i, i = t;
}
let a = t[n];
a || (t[n] = a = {}), a[i] = !0;
}
function f(t, n, i) {
if (n > i) {
let t = n;
n = i, i = t;
}
return !!t[n] && Object.hasOwn(t[n], i);
}
function g(t, n, i, a) {
let o = {}, s = {}, c = {};
return n.forEach((t) => {
t.forEach((t, n) => {
o[t] = t, s[t] = t, c[t] = n;
});
}), n.forEach((t) => {
let n = -1;
t.forEach((t) => {
let d = a(t);
if (d.length) {
d = d.sort((t, n) => c[t] - c[n]);
let a = (d.length - 1) / 2;
for (let g = Math.floor(a), b = Math.ceil(a); g <= b; ++g) {
let a = d[g];
s[t] === t && n < c[a] && !f(i, t, a) && (s[a] = t, s[t] = o[t] = o[a], n = c[a]);
}
}
});
}), {
root: o,
align: s
};
}
function b(t, n, i, a, o) {
let s = {}, c = x(t, n, i, o), d = o ? "borderLeft" : "borderRight";
function f(t, n) {
let i = c.nodes().slice(), a = {}, o = i.pop();
for (; o;) {
if (a[o]) t(o);
else {
a[o] = !0, i.push(o);
for (let t of n(o)) i.push(t);
}
o = i.pop();
}
}
function g(t) {
s[t] = c.inEdges(t).reduce((t, n) => Math.max(t, s[n.v] + c.edge(n)), 0);
}
function b(n) {
let i = c.outEdges(n).reduce((t, n) => Math.min(t, s[n.w] - c.edge(n)), Infinity), a = t.node(n);
i !== Infinity && a.borderType !== d && (s[n] = Math.max(s[n], i));
}
return f(g, c.predecessors.bind(c)), f(b, c.successors.bind(c)), Object.keys(a).forEach((t) => s[t] = s[i[t]]), s;
}
function x(t, n, a, o) {
let s = new i(), c = t.graph(), d = O(c.nodesep, c.edgesep, o);
return n.forEach((n) => {
let i;
n.forEach((n) => {
let o = a[n];
if (s.setNode(o), i) {
var c = a[i], f = s.edge(c, o);
s.setEdge(c, o, Math.max(d(t, n, i), f || 0));
}
i = n;
});
}), s;
}
function S(t, n) {
return Object.values(n).reduce((n, i) => {
let a = -Infinity, o = Infinity;
Object.entries(i).forEach(([n, i]) => {
let s = A(t, n) / 2;
a = Math.max(i + s, a), o = Math.min(i - s, o);
});
let s = a - o;
return s < n[0] && (n = [s, i]), n;
}, [Infinity, null])[1];
}
function C(t, n) {
let i = Object.values(n), o = a.applyWithChunking(Math.min, i), s = a.applyWithChunking(Math.max, i);
["u", "d"].forEach((i) => {
["l", "r"].forEach((c) => {
let d = i + c, f = t[d];
if (f === n) return;
let g = Object.values(f), b = o - a.applyWithChunking(Math.min, g);
c !== "l" && (b = s - a.applyWithChunking(Math.max, g)), b && (t[d] = a.mapValues(f, (t) => t + b));
});
});
}
function w(t, n) {
return a.mapValues(t.ul, (i, a) => {
if (n) return t[n.toLowerCase()][a];
{
let n = Object.values(t).map((t) => t[a]).sort((t, n) => t - n);
return (n[1] + n[2]) / 2;
}
});
}
function E(t) {
let n = a.buildLayerMatrix(t), i = Object.assign(o(t, n), s(t, n)), c = {}, d;
["u", "d"].forEach((o) => {
d = o === "u" ? n : Object.values(n).reverse(), ["l", "r"].forEach((n) => {
n === "r" && (d = d.map((t) => Object.values(t).reverse()));
let s = (o === "u" ? t.predecessors : t.successors).bind(t), f = g(t, d, i, s), x = b(t, d, f.root, f.align, n === "r");
n === "r" && (x = a.mapValues(x, (t) => -t)), c[o + n] = x;
});
});
let f = S(t, c);
return C(c, f), w(c, t.graph().align);
}
function O(t, n, i) {
return (a, o, s) => {
let c = a.node(o), d = a.node(s), f = 0, g;
if (f += c.width / 2, Object.hasOwn(c, "labelpos")) switch (c.labelpos.toLowerCase()) {
case "l":
g = -c.width / 2;
break;
case "r":
g = c.width / 2;
break;
}
if (g && (f += i ? g : -g), g = 0, f += (c.dummy ? n : t) / 2, f += (d.dummy ? n : t) / 2, f += d.width / 2, Object.hasOwn(d, "labelpos")) switch (d.labelpos.toLowerCase()) {
case "l":
g = d.width / 2;
break;
case "r":
g = -d.width / 2;
break;
}
return g && (f += i ? g : -g), g = 0, f;
};
}
function A(t, n) {
return t.node(n).width;
}
}), Nt = v((t, n) => {
var i = _(), a = yt().positionX;
n.exports = o;
function o(t) {
t = i.asNonCompoundGraph(t), s(t), Object.entries(a(t)).forEach(([n, i]) => t.node(n).x = i);
}
function s(t) {
let n = i.buildLayerMatrix(t), a = t.graph().ranksep, o = t.graph().rankalign, s = 0;
n.forEach((n) => {
let i = n.reduce((n, i) => {
let a = t.node(i).height;
return n > a ? n : a;
}, 0);
n.forEach((n) => {
let a = t.node(n);
o === "top" ? a.y = s + a.height / 2 : o === "bottom" ? a.y = s + i - a.height / 2 : a.y = s + i / 2;
}), s += i + a;
});
}
}), Rt = v((t, n) => {
var i = pe(), a = we(), o = qe(), s = _().normalizeRanks, c = Re(), d = _().removeEmptyRanks, f = Pe(), g = Ge(), b = Be(), x = ft(), S = Nt(), C = _(), w = y().Graph;
n.exports = E;
function E(t, n = {}) {
let i = n.debugTiming ? C.time : C.notime;
return i("layout", () => {
let a = i(" buildLayoutGraph", () => YA(t));
return i(" runLayout", () => O(a, i, n)), i(" updateInputGraph", () => A(t, a)), a;
});
}
function O(t, n, w) {
n(" makeSpaceForEdgeLabels", () => XA(t)), n(" removeSelfEdges", () => aj(t)), n(" acyclic", () => i.run(t)), n(" nestingGraph.run", () => f.run(t)), n(" rank", () => o(C.asNonCompoundGraph(t))), n(" injectEdgeLabelProxies", () => ZA(t)), n(" removeEmptyRanks", () => d(t)), n(" nestingGraph.cleanup", () => f.cleanup(t)), n(" normalizeRanks", () => s(t)), n(" assignRankMinMax", () => QA(t)), n(" removeEdgeLabelProxies", () => $A(t)), n(" normalize.run", () => a.run(t)), n(" parentDummyChains", () => c(t)), n(" addBorderSegments", () => g(t)), n(" order", () => x(t, w)), n(" insertSelfEdges", () => oj(t)), n(" adjustCoordinateSystem", () => b.adjust(t)), n(" position", () => S(t)), n(" positionSelfEdges", () => sj(t)), n(" removeBorderNodes", () => ij(t)), n(" normalize.undo", () => a.undo(t)), n(" fixupEdgeLabelCoords", () => nj(t)), n(" undoCoordinateSystem", () => b.undo(t)), n(" translateGraph", () => ej(t)), n(" assignNodeIntersects", () => tj(t)), n(" reversePoints", () => rj(t)), n(" acyclic.undo", () => i.undo(t));
}
function A(t, n) {
t.nodes().forEach((i) => {
let a = t.node(i), o = n.node(i);
a && (a.x = o.x, a.y = o.y, a.order = o.order, a.rank = o.rank, n.children(i).length && (a.width = o.width, a.height = o.height));
}), t.edges().forEach((i) => {
let a = t.edge(i), o = n.edge(i);
a.points = o.points, Object.hasOwn(o, "x") && (a.x = o.x, a.y = o.y);
}), t.graph().width = n.graph().width, t.graph().height = n.graph().height;
}
var M = [
"nodesep",
"edgesep",
"ranksep",
"marginx",
"marginy"
], F = {
ranksep: 50,
edgesep: 20,
nodesep: 50,
rankdir: "tb",
rankalign: "center"
}, I = [
"acyclicer",
"ranker",
"rankdir",
"align",
"rankalign"
], R = [
"width",
"height",
"rank"
], qA = {
width: 0,
height: 0
}, V = [
"minlen",
"weight",
"width",
"height",
"labeloffset"
], q = {
minlen: 1,
weight: 1,
width: 0,
height: 0,
labeloffset: 10,
labelpos: "r"
}, JA = ["labelpos"];
function YA(t) {
let n = new w({
multigraph: !0,
compound: !0
}), i = lj(t.graph());
return n.setGraph(Object.assign({}, F, cj(i, M), C.pick(i, I))), t.nodes().forEach((i) => {
let a = lj(t.node(i)), o = cj(a, R);
Object.keys(qA).forEach((t) => {
o[t] === void 0 && (o[t] = qA[t]);
}), n.setNode(i, o), n.setParent(i, t.parent(i));
}), t.edges().forEach((i) => {
let a = lj(t.edge(i));
n.setEdge(i, Object.assign({}, q, cj(a, V), C.pick(a, JA)));
}), n;
}
function XA(t) {
let n = t.graph();
n.ranksep /= 2, t.edges().forEach((i) => {
let a = t.edge(i);
a.minlen *= 2, a.labelpos.toLowerCase() !== "c" && (n.rankdir === "TB" || n.rankdir === "BT" ? a.width += a.labeloffset : a.height += a.labeloffset);
});
}
function ZA(t) {
t.edges().forEach((n) => {
let i = t.edge(n);
if (i.width && i.height) {
let i = t.node(n.v), a = {
rank: (t.node(n.w).rank - i.rank) / 2 + i.rank,
e: n
};
C.addDummyNode(t, "edge-proxy", a, "_ep");
}
});
}
function QA(t) {
let n = 0;
t.nodes().forEach((i) => {
let a = t.node(i);
a.borderTop && (a.minRank = t.node(a.borderTop).rank, a.maxRank = t.node(a.borderBottom).rank, n = Math.max(n, a.maxRank));
}), t.graph().maxRank = n;
}
function $A(t) {
t.nodes().forEach((n) => {
let i = t.node(n);
i.dummy === "edge-proxy" && (t.edge(i.e).labelRank = i.rank, t.removeNode(n));
});
}
function ej(t) {
let n = Infinity, i = 0, a = Infinity, o = 0, s = t.graph(), c = s.marginx || 0, d = s.marginy || 0;
function f(t) {
let s = t.x, c = t.y, d = t.width, f = t.height;
n = Math.min(n, s - d / 2), i = Math.max(i, s + d / 2), a = Math.min(a, c - f / 2), o = Math.max(o, c + f / 2);
}
t.nodes().forEach((n) => f(t.node(n))), t.edges().forEach((n) => {
let i = t.edge(n);
Object.hasOwn(i, "x") && f(i);
}), n -= c, a -= d, t.nodes().forEach((i) => {
let o = t.node(i);
o.x -= n, o.y -= a;
}), t.edges().forEach((i) => {
let o = t.edge(i);
o.points.forEach((t) => {
t.x -= n, t.y -= a;
}), Object.hasOwn(o, "x") && (o.x -= n), Object.hasOwn(o, "y") && (o.y -= a);
}), s.width = i - n + c, s.height = o - a + d;
}
function tj(t) {
t.edges().forEach((n) => {
let i = t.edge(n), a = t.node(n.v), o = t.node(n.w), s, c;
i.points ? (s = i.points[0], c = i.points[i.points.length - 1]) : (i.points = [], s = o, c = a), i.points.unshift(C.intersectRect(a, s)), i.points.push(C.intersectRect(o, c));
});
}
function nj(t) {
t.edges().forEach((n) => {
let i = t.edge(n);
if (Object.hasOwn(i, "x")) switch ((i.labelpos === "l" || i.labelpos === "r") && (i.width -= i.labeloffset), i.labelpos) {
case "l":
i.x -= i.width / 2 + i.labeloffset;
break;
case "r":
i.x += i.width / 2 + i.labeloffset;
break;
}
});
}
function rj(t) {
t.edges().forEach((n) => {
let i = t.edge(n);
i.reversed && i.points.reverse();
});
}
function ij(t) {
t.nodes().forEach((n) => {
if (t.children(n).length) {
let i = t.node(n), a = t.node(i.borderTop), o = t.node(i.borderBottom), s = t.node(i.borderLeft[i.borderLeft.length - 1]), c = t.node(i.borderRight[i.borderRight.length - 1]);
i.width = Math.abs(c.x - s.x), i.height = Math.abs(o.y - a.y), i.x = s.x + i.width / 2, i.y = a.y + i.height / 2;
}
}), t.nodes().forEach((n) => {
t.node(n).dummy === "border" && t.removeNode(n);
});
}
function aj(t) {
t.edges().forEach((n) => {
if (n.v === n.w) {
var i = t.node(n.v);
i.selfEdges ||= [], i.selfEdges.push({
e: n,
label: t.edge(n)
}), t.removeEdge(n);
}
});
}
function oj(t) {
C.buildLayerMatrix(t).forEach((n) => {
var i = 0;
n.forEach((n, a) => {
var o = t.node(n);
o.order = a + i, (o.selfEdges || []).forEach((n) => {
C.addDummyNode(t, "selfedge", {
width: n.label.width,
height: n.label.height,
rank: o.rank,
order: a + ++i,
e: n.e,
label: n.label
}, "_se");
}), delete o.selfEdges;
});
});
}
function sj(t) {
t.nodes().forEach((n) => {
var i = t.node(n);
if (i.dummy === "selfedge") {
var a = t.node(i.e.v), o = a.x + a.width / 2, s = a.y, c = i.x - o, d = a.height / 2;
t.setEdge(i.e, i.label), t.removeNode(n), i.label.points = [
{
x: o + 2 * c / 3,
y: s - d
},
{
x: o + 5 * c / 6,
y: s - d
},
{
x: o + c,
y: s
},
{
x: o + 5 * c / 6,
y: s + d
},
{
x: o + 2 * c / 3,
y: s + d
}
], i.label.x = i.x, i.label.y = i.y;
}
});
}
function cj(t, n) {
return C.mapValues(C.pick(t, n), Number);
}
function lj(t) {
var n = {};
return t && Object.entries(t).forEach(([t, i]) => {
typeof t == "string" && (t = t.toLowerCase()), n[t] = i;
}), n;
}
}), St = v((t, n) => {
var i = _(), a = y().Graph;
n.exports = { debugOrdering: o };
function o(t) {
let n = i.buildLayerMatrix(t), o = new a({
compound: !0,
multigraph: !0
}).setGraph({});
return t.nodes().forEach((n) => {
o.setNode(n, { label: n }), o.setParent(n, "layer" + t.node(n).rank);
}), t.edges().forEach((t) => o.setEdge(t.v, t.w, {}, t.name)), n.forEach((t, n) => {
let i = "layer" + n;
o.setNode(i, { rank: "same" }), t.reduce((t, n) => (o.setEdge(t, n, { style: "invis" }), n));
}), o;
}
}), Ft = v((t, n) => {
n.exports = "2.0.4";
}), dagre_esm_default = v((t, n) => {
n.exports = {
graphlib: y(),
layout: Rt(),
debug: St(),
util: {
time: _().time,
notime: _().notime
},
version: Ft()
};
})();
/*! For license information please see dagre.esm.js.LEGAL.txt */
function orthogonalPoints(t, n, i = .5) {
let a = t.x + (n.x - t.x) * i;
return [
t,
{
x: a,
y: t.y
},
{
x: a,
y: n.y
},
n
];
}
function roundedOrthogonalPath([t, n, i, a], o = 12) {
let s = Math.min(o, Math.abs(n.x - t.x), Math.abs(i.y - n.y)), c = Math.min(o, Math.abs(i.y - n.y), Math.abs(a.x - i.x)), d = {
x: n.x - Math.sign(n.x - t.x) * s,
y: n.y
}, f = {
x: n.x,
y: n.y + Math.sign(i.y - n.y) * s
}, g = {
x: i.x,
y: i.y - Math.sign(i.y - n.y) * c
}, b = {
x: i.x + Math.sign(a.x - i.x) * c,
y: i.y
};
return [
`M ${t.x} ${t.y}`,
`L ${d.x} ${d.y}`,
`Q ${n.x} ${n.y} ${f.x} ${f.y}`,
`L ${g.x} ${g.y}`,
`Q ${i.x} ${i.y} ${b.x} ${b.y}`,
`L ${a.x} ${a.y}`
].join(" ");
}
var MIN_SCALE = .2, MAX_SCALE = 3, ZOOM_STEP = .02;
const Flow = (t) => {
let [n, i] = useState(!1), [a, o] = useState(!1), s = useRef(null), c = useRef(null), [d, f] = useState({
x: 0,
y: 0,
scale: 1
}), [g, b] = useState({}), [x, S, C] = useMemo(() => {
if (Object.keys(g).length === 0) return [
t.nodes.map((t) => ({
...t,
x: 0,
y: 0,
width: 0,
height: 0,
isCluster: !1
})),
[],
{
width: 0,
height: 0
}
];
let n = new dagre_esm_default.graphlib.Graph({ compound: !0 }).setGraph({
rankdir: "LR",
align: "UL",
ranksep: t.gapX ?? 48,
nodesep: t.gapY ?? 48,
marginx: t.margin ?? 32,
marginy: t.margin ?? 64,
graph: "tight-tree"
}).setDefaultEdgeLabel(() => ({}));
for (let i of t.nodes) n.setNode(i.id, {
width: g[i.id]?.width,
height: g[i.id]?.height
});
for (let i of t.nodes) if (i.next) for (let t of i.next) n.setEdge(i.id, t);
dagre_esm_default.layout(n), t.onGraphLayout?.(n);
let i = n.graph();
return [
t.nodes.map((t) => {
let i = n.node(t.id);
return {
...t,
x: i?.x ?? 0,
y: i?.y ?? 0,
width: i?.width ?? 0,
height: i?.height ?? 0
};
}),
n.edges().map((t) => ({
from: t.v,
to: t.w
})),
{
width: i.width,
height: i.height
}
];
}, [
g,
t.nodes,
t.margin,
t.gapX
]), w = useCallback((n) => {
if (!t.disableGestures && (n.ctrlKey || n.metaKey)) {
let t = n.currentTarget.getBoundingClientRect(), i = n.clientX - t.left, a = n.clientY - t.top;
f((t) => {
let o = Math.exp(-n.deltaY * ZOOM_STEP), s = Math.max(MIN_SCALE, Math.min(MAX_SCALE, t.scale * o)), c = s / t.scale, d = i - (i - t.x) * c, f = a - (a - t.y) * c;
return {
x: d,
y: f,
scale: s
};
});
return;
}
}, [t.disableGestures]), E = useCallback(() => {
o(!1), c.current = null;
}, []), O = useCallback((n) => {
if (!s.current || !n.nativeEvent.composedPath().includes(s.current) || t.disableGestures) return;
n.preventDefault(), o(!0), c.current = {
x: n.clientX,
y: n.clientY
};
function a() {
E(), i(!1);
}
return document.addEventListener("mouseup", a), () => {
document.removeEventListener("mouseup", a);
};
}, [t.disableGestures]), A = useCallback((n) => {
if (t.disableGestures || !a || !c.current) return;
let i = n.clientX - c.current.x, o = n.clientY - c.current.y;
c.current = {
x: n.clientX,
y: n.clientY
}, f((t) => ({
...t,
x: t.x + i,
y: t.y + o
}));
}, [a, t.disableGestures]), M = useCallback(() => {
let { width: t, height: n } = C, i = s.current;
if (!i) return;
let { width: a, height: o } = i.getBoundingClientRect();
console.log({
container: i,
containerWidth: a,
containerHeight: o,
width: t,
height: n
});
let c = Math.min(MAX_SCALE, Math.max(MIN_SCALE, Math.min(a / t, o / n)));
f((i) => ({
...i,
scale: c,
x: a / 2 - t * c / 2,
y: o / 2 - n * c / 2
}));
}, [C]);
return useEffect(() => {
if (t.disableGestures || !s.current) return;
let n = s.current, i = (t) => {
t.preventDefault();
};
return n.addEventListener("gesturestart", i, { passive: !1 }), n.addEventListener("gesturechange", i, { passive: !1 }), n.addEventListener("gestureend", i, { passive: !1 }), n.addEventListener("wheel", i, { passive: !1 }), () => {
n.removeEventListener("gesturestart", i), n.removeEventListener("gesturechange", i), n.removeEventListener("gestureend", i), n.removeEventListener("wheel", i);
};
}, [t.disableGestures]), useEffect(() => {
if (t.disableGestures) return;
let i = (t) => {
!n || !t.metaKey && !t.ctrlKey || [
"+",
"-",
"=",
"0"
].includes(t.key) && t.preventDefault();
};
return window.addEventListener("keydown", i), () => {
window.removeEventListener("keydown", i);
};
}, [n, t.disableGestures]), /* @__PURE__ */ jsxs("div", {
ref: s,
className: cn("bg-background relative h-full w-full touch-none", {
"cursor-grab": !t.disableGestures && !a,
"cursor-grabbing": !t.disableGestures && a
}, t.containerClassName),
onWheel: w,
onMouseDown: O,
onMouseMove: A,
onMouseLeave: () => {
E(), i(!1);
},
onMouseEnter: () => i(!0),
children: [
!t.disableBackground && /* @__PURE__ */ jsx("div", { className: "bg-size-[16px_16px] absolute inset-0 h-full w-full bg-[radial-gradient(hsl(var(--border))_1px,transparent_1px)] opacity-50" }),
/* @__PURE__ */ jsxs("div", {
className: cn("relative", t.className),
style: {
width: C.width,
height: C.height,
transform: `translate(${d.x}px, ${d.y}px) scale(${d.scale})`,
transformOrigin: "0 0"
},
children: [x.map((t) => {
let n = !!t.next?.length, i = x.some((n) => n.next?.includes(t.id)), a = !!(t.content && t.content({ node: t })), o = !!t.children?.length;
return /* @__PURE__ */ jsxs("div", {
ref: (n) => {
n && !g[t.id] && b((i) => ({
...i,
[t.id]: {
width: n.clientWidth,
height: n.clientHeight
}
}));
},
className: cn("bg-card transition-color absolute flex grid min-w-72 grid-cols-1 grid-rows-1 justify-start gap-2 rounded-lg border p-2 text-sm shadow-sm", {
"w-72": !o,
"grid-rows-[auto_1fr]": a || o,
"grid-rows-[auto_auto_1fr]": a && o,
"rounded-xl border-dashed bg-transparent shadow-none": o
}),
style: {
left: t.x - t.width / 2,
top: t.y - t.height / 2,
minWidth: Math.min(Math.max(t.width, 256), t.maxWidth ?? Infinity),
minHeight: t.height,
maxWidth: t.maxWidth
},
children: [
/* @__PURE__ */ jsxs("div", {
className: "flex w-full items-center gap-2",
children: [
t.icon ? t.icon({ className: "size-4 text-secondary-foreground" }) : null,
/* @__PURE__ */ jsx("span", {
className: "font-medium",
children: t.title
}),
/* @__PURE__ */ jsx("div", {
className: "ml-auto",
children: t.headerSuffix ? t.headerSuffix({ node: t }) : null
})
]
}),
/* @__PURE__ */ jsx("div", {
className: "bg-secondary w-full rounded-sm p-2 empty:hidden",
children: t.content ? t.content({ node: t }) : null
}),
!!t.children?.length && /* @__PURE__ */ jsx("div", {
className: "size-full rounded-sm",
children: /* @__PURE__ */ jsx(Flow, {
nodes: t.children,
margin: 0,
gapX: 24,
gapY: 16,
onGraphLayout: (n) => {
let { width: i, height: a } = n.graph();
b((n) => ({
...n,
[t.id]: {
width: i + 20,
height: t.height + a + 4
}
}));
},
disableBackground: !0,
disableGestures: !0,
className: "bg-transparent",
isChild: !0
})
}),
n && /* @__PURE__ */ jsx("div", { className: "border-border bg-background absolute left-full top-1/2 size-2 -translate-x-1/2 -translate-y-1/2 rounded-full border-2 transition-all" }),
i && /* @__PURE__ */ jsx("div", { className: "border-border bg-background absolute left-0 top-1/2 size-2 -translate-x-1/2 -translate-y-1/2 rounded-full border-2 transition-all" })
]
}, t.id);
}), /* @__PURE__ */ jsx("svg", {
className: "pointer-events-none absolute left-0 top-0 -z-10",
style: {
width: C.width,
height: C.height
},
children: S.filter(Boolean).map((t) => {
let n = x.find((n) => n.id === t.from), i = x.find((n) => n.id === t.to);
return !n || !i ? null : /* @__PURE__ */ jsx("path", {
className: "stroke-border animate-dash transition-color animate-[dash_500ms_linear_infinite] fill-none stroke-2 [stroke-dasharray:12_8]",
d: roundedOrthogonalPath(orthogonalPoints({
x: n.x + n.width / 2,
y: n.y
}, {
x: i.x - i.width / 2,
y: i.y
}), 4)
}, t.from + t.to);
})
})]
}),
!t.isChild && /* @__PURE__ */ jsx("div", {
className: "absolute left-4 top-4 z-10 flex items-center gap-2",
children: /* @__PURE__ */ jsxs("div", {
className: "bg-card grid w-96 grid-cols-[1fr_auto_auto] items-center gap-2 rounded-lg border p-2 shadow-sm",
children: [
/* @__PURE__ */ jsxs("div", {
className: "flex flex-1 items-center gap-2",
children: [
/* @__PURE__ */ jsxs(Tooltip, { children: [/* @__PURE__ */ jsx(TooltipTrigger, {
asChild: !0,
children: /* @__PURE__ */ jsx(Button, {
variant: "ghost",
size: "icon-sm",
onClick: () => f((t) => ({
...t,
scale: t.scale - ZOOM_STEP
})),
children: /* @__PURE__ */ jsx(ZoomOutIcon, { className: "size-4" })
})
}), /* @__PURE__ */ jsx(TooltipContent, { children: "Zoom out" })] }),
/* @__PURE__ */ jsx(Slider, {
value: [d.scale],
onValueChange: (t) => f((n) => ({
...n,
scale: t[0]
})),
min: MIN_SCALE,
max: MAX_SCALE,
step: ZOOM_STEP
}),
/* @__PURE__ */ jsxs(Tooltip, { children: [/* @__PURE__ */ jsx(TooltipTrigger, {
asChild: !0,
children: /* @__PURE__ */ jsx(Button, {
variant: "ghost",
size: "icon-sm",
onClick: () => f((t) => ({
...t,
scale: t.scale + ZOOM_STEP
})),
children: /* @__PURE__ */ jsx(ZoomInIcon, { className: "size-4" })
})
}), /* @__PURE__ */ jsx(TooltipContent, { children: "Zoom in" })] })
]
}),
/* @__PURE__ */ jsx(Separator, {
orientation: "vertical",
className: "h-6!"
}),
/* @__PURE__ */ jsxs(Button, {
variant: "ghost",
size: "sm",
onClick: M,
children: [/* @__PURE__ */ jsx(MaximizeIcon, { className: "size-4" }), "Fit in view"]
})
]
})
})
]
});
};
var import_lodash$2 = /* @__PURE__ */ __toESM(require_lodash());
function indent(t) {
return " ".repeat(t);
}
function normalizeStringSet(t) {
return t ? Array.isArray(t) ? t : Array.from(t) : [];
}
function isObject(t) {
return !!t && typeof t == "object" && !Array.isArray(t);
}
function renderFlattenPathSegment(t) {
return t === "@" ? "@" : isObject(t) && "Field" in t ? String(t.Field) : isObject(t) && "TypeCondition" in t ? `|[${normalizeStringSet(t.TypeCondition).join("|")}]` : (0, import_lodash$2.isArray)(t) ? renderFlattenPath(t) : String(t);
}
function renderFlattenPath(t) {
let n = "";
for (let i = 0; i < t.length; i++) {
let a = t[i], o = t[i + 1];
n += renderFlattenPathSegment(a), o !== void 0 && (isObject(o) && "TypeCondition" in o || (n += "."));
}
return n;
}
function renderSelectionSet(t, n = 0) {
if (!t?.length) return "";
let i = [];
for (let a of t) if (a.kind === "InlineFragment") {
i.push(`${indent(n)}... on ${a.typeCondition} {`);
for (let t of a.selections ?? []) i.push(`${indent(n + 1)}${t.name}`);
i.push(`${indent(n)}}`);
}
return i.join("\n");
}
function renderQueryPlan(t) {
let n = [];
return n.push("QueryPlan {"), t.node ? n.push(renderPlanNode(t.node, 1)) : n.push(`${indent(1)}None`), n.push("}"), n.join("\n");
}
function renderPlanNode(t, n = 0) {
switch (t.kind) {
case "Fetch": return renderFetchNode(t, n);
case "BatchFetch": return renderBatchFetchNode(t, n);
case "Flatten": return renderFlattenNode(t, n);
case "Sequence": return renderSequenceNode(t, n);
case "Parallel": return renderParallelNode(t, n);
case "Condition": return renderConditionNode(t, n);
case "Subscription": return renderSubscriptionNode(t, n);
case "Defer": return renderDeferNode(t, n);
default: return `${indent(n)}<UnknownNode kind="${t.kind ?? "unknown"}">`;
}
}
function renderFetchNode(t, n = 0) {
let i = [];
if (i.push(`${indent(n)}Fetch(service: "${t.serviceName}") {`), t.requires) {
i.push(`${indent(n + 1)}{`);
let a = renderSelectionSet(t.requires, n + 2);
a && i.push(a), i.push(`${indent(n + 1)}} =>`);
}
let a = t.operation.includes("_entities") ? 2 : 1;
try {
i.push(`${indent(n + 1)}{`, renderMultilineBlock(print(parse(t.operation)).split("\n").slice(a, a * -1).join("\n"), n + 2 - a), `${indent(n + 1)}}`);
} catch {
i.push(`${indent(n + 1)}${t.operation}`);
}
return i.push(`${indent(n)}}`), i.join("\n");
}
function renderBatchFetchNode(t, n = 0) {
let i = [];
i.push(`${indent(n)}BatchFetch(service: "${t.serviceName}") {`);
for (let a = 0; a < t.entityBatch.aliases.length; a++) {
let o = t.entityBatch.aliases[a];
i.push(`${indent(n + 1)}${o.alias} {`, `${indent(n + 2)}paths: [`, ...o.paths.map((t) => `${indent(n + 3)}"${renderFlattenPath(t)}"`), `${indent(n + 2)}]`);
let s = renderSelectionSet(o.requires, n + 3);
s && i.push(`${indent(n + 2)}{`, s, `${indent(n + 2)}}`), a < t.entityBatch.aliases.length - 1 && i.push(`${indent(n + 1)}}`);
}
try {
i.push(`${indent(n + 1)}}`, `${indent(n + 1)}{`, renderMultilineBlock(print(parse(t.operation)).split("\n").slice(1, -1).join("\n"), n + 1), `${indent(n + 1)}}`, `${indent(n)}}`);
} catch {
i.push(`${indent(n + 1)}${t.operation}`);
}
return i.join("\n");
}
function renderFlattenNode(t, n = 0) {
let i = [];
return i.push(`${indent(n)}Flatten(path: "${renderFlattenPath(t.path)}") {`, renderPlanNode(t.node, n + 1), `${indent(n)}}`), i.join("\n");
}
function renderSequenceNode(t, n = 0) {
let i = [];
i.push(`${indent(n)}Sequence {`);
for (let a of t.nodes) i.push(renderPlanNode(a, n + 1));
return i.push(`${indent(n)}}`), i.join("\n");
}
function renderParallelNode(t, n = 0) {
let i = [];
i.push(`${indent(n)}Parallel {`);
for (let a of t.nodes) i.push(renderPlanNode(a, n + 1));
return i.push(`${indent(n)}}`), i.join("\n");
}
function renderConditionNode(t, n = 0) {
let i = [];
return t.ifClause && !t.elseClause ? (i.push(`${indent(n)}Include(if: $${t.condition}) {`, renderPlanNode(t.ifClause, n + 1), `${indent(n)}}`), i.join("\n")) : !t.ifClause && t.elseClause ? (i.push(`${indent(n)}Skip(if: $${t.condition}) {`, renderPlanNode(t.elseClause, n + 1), `${indent(n)}}`), i.join("\n")) : t.ifClause && t.elseClause ? (i.push(`${indent(n)}Condition(if: $${t.condition}) {`, `${indent(n + 1)}if {`, renderPlanNode(t.ifClause, n + 2), `${indent(n + 1)}}`, `${indent(n + 1)}else {`, renderPlanNode(t.elseClause, n + 2), `${indent(n + 1)}}`, `${indent(n)}}`), i.join("\n")) : `${indent(n)}Condition(if: $${t.condition}) {}`;
}
function renderSubscriptionNode(t, n = 0) {
let i = [];
return i.push(`${indent(n)}Subscription {`, `${indent(n + 1)}primary {`, renderPlanNode(t.primary, n + 2), `${indent(n + 1)}}`, `${indent(n)}}`), i.join("\n");
}
function renderDeferNode(t, n = 0) {
let i = [];
if (i.push(`${indent(n)}Defer {`, `${indent(n + 1)}primary {`), t.primary.subselection && i.push(`${indent(n + 2)}subselection: ${JSON.stringify(t.primary.subselection)}`), t.primary.node && i.push(renderPlanNode(t.primary.node, n + 2)), i.push(`${indent(n + 1)}}`), t.deferred.length > 0) {
i.push(`${indent(n + 1)}deferred {`);
for (let a of t.deferred) i.push(`${indent(n + 2)}item {`), a.label && i.push(`${indent(n + 3)}label: ${JSON.stringify(a.label)}`), i.push(`${indent(n + 3)}queryPath: [${a.queryPath.join(", ")}]`), a.subselection && i.push(`${indent(n + 3)}subselection: ${JSON.stringify(a.subselection)}`), a.depends.length && i.push(`${indent(n + 3)}depends: [${a.depends.map((t) => t.deferLabel ? `${t.id}:${t.deferLabel}` : t.id).join(", ")}]`), a.node && i.push(renderPlanNode(a.node, n + 3)), i.push(`${indent(n + 2)}}`);
i.push(`${indent(n + 1)}}`);
}
return i.push(`${indent(n)}}`), i.join("\n");
}
function renderMultilineBlock(t, n = 0) {
return t.split("\n").map((t) => `${indent(n)}${t}`).join("\n");
}
function visitNode(t, n, i, a, o) {
let s = {
id: v4_default(),
title: t.kind,
kind: t.kind
};
switch (t.kind) {
case "Fetch":
s.content = () => {
let n = t.requires?.[0]?.typeCondition;
return /* @__PURE__ */ jsxs("div", {
className: "flex flex-col gap-2",
children: [
a,
/* @__PURE__ */ jsxs("div", {
className: "grid grid-cols-[1fr_auto] items-center gap-8 overflow-hidden font-mono text-xs",
children: [/* @__PURE__ */ jsx("span", {
className: "font-medium",
children: "Service"
}), /* @__PURE__ */ jsx("span", {
className: "text-secondary-foreground overflow-hidden text-ellipsis whitespace-nowrap",
children: t.serviceName
})]
}),
n && /* @__PURE__ */ jsxs("div", {
className: "grid grid-cols-[1fr_auto] items-center gap-8 overflow-hidden font-mono text-xs",
children: [/* @__PURE__ */ jsx("span", {
className: "font-medium",
children: "Entity"
}), /* @__PURE__ */ jsx("span", {
className: "text-secondary-foreground overflow-hidden text-ellipsis whitespace-nowrap",
children: n
})]
}),
/* @__PURE__ */ jsx("div", {
className: "border-t border-dashed",
children: /* @__PURE__ */ jsxs(Dialog, { children: [/* @__PURE__ */ jsx(DialogTrigger, {
asChild: !0,
children: /* @__PURE__ */ jsx(Button, {
size: "sm",
variant: "link",
className: "h-auto w-full pt-2 text-xs",
children: "Show details"
})
}), /* @__PURE__ */ jsxs(DialogContent, {
className: "max-w-2xl! max-h-150 h-full w-full",
children: [/* @__PURE__ */ jsx(DialogHeader, { children: /* @__PURE__ */ jsx(DialogTitle, { children: "Fetch" }) }), /* @__PURE__ */ jsx("div", {
className: "h-full overflow-hidden rounded-sm border",
children: /* @__PURE__ */ jsx(Editor, {
value: o ?? renderFetchNode(t),
language: "graphql"
})
})]
})] })
})
]
});
};
break;
case "BatchFetch":
s.headerSuffix = () => {
let n = t.entityBatch.aliases.reduce((t, n) => t + n.paths.length, 0);
return /* @__PURE__ */ jsxs("div", {
className: "bg-muted flex items-center gap-1 rounded-md p-0.5 pl-1 font-mono text-xs leading-none",
children: ["Total paths:", /* @__PURE__ */ jsx("div", {
className: "bg-primary/10 border-primary text-primary rounded-sm border px-1 text-xs font-medium leading-none",
children: n
})]
});
}, s.content = () => /* @__PURE__ */ jsxs("div", {
className: "*:border-border flex flex-col gap-2 *:border-b *:border-dashed *:pb-2 *:last:border-b-0 *:last:pb-0",
children: [
/* @__PURE__ */ jsxs("div", {
className: "grid grid-cols-[1fr_auto] items-center gap-8 overflow-hidden font-mono text-xs",
children: [/* @__PURE__ */ jsx("span", {
className: "font-medium",
children: "Service"
}), /* @__PURE__ */ jsx("span", {
className: "text-secondary-foreground overflow-hidden text-ellipsis whitespace-nowrap",
children: t.serviceName
})]
}),
t.entityBatch.aliases.map((t) => /* @__PURE__ */ jsxs("div", {
className: "grid gap-2",
children: [/* @__PURE__ */ jsxs("div", {
className: "grid grid-cols-[1fr_auto] items-center gap-8 overflow-hidden font-mono text-xs",
children: [/* @__PURE__ */ jsx("span", {
className: "font-medium",
children: "Path"
}), t.paths.length > 1 ? /* @__PURE__ */ jsxs(Tooltip, { children: [/* @__PURE__ */ jsx(TooltipTrigger, {
asChild: !0,
children: /* @__PURE__ */ jsx("span", {
className: "text-secondary-foreground cursor-auto overflow-hidden text-ellipsis whitespace-nowrap",
children: /* @__PURE__ */ jsx("div", {
className: "bg-card rounded-sm border px-1 text-xs font-medium",
children: t.paths.length
})
})
}), /* @__PURE__ */ jsx(TooltipContent, {
className: "whitespace-pre-wrap font-mono",
children: t.paths.map((t) => renderFlattenPath(t)).join(",\n")
})] }) : /* @__PURE__ */ jsxs(Tooltip, { children: [/* @__PURE__ */ jsx(TooltipTrigger, {
asChild: !0,
children: /* @__PURE__ */ jsx("span", {
className: "text-secondary-foreground cursor-auto overflow-hidden text-ellipsis whitespace-nowrap",
children: renderFlattenPath(t.paths[0])
})
}), /* @__PURE__ */ jsx(TooltipContent, { children: renderFlattenPath(t.paths[0]) })] })]
}), /* @__PURE__ */ jsxs("div", {
className: "grid grid-cols-[1fr_auto] items-center gap-8 overflow-hidden font-mono text-xs",
children: [/* @__PURE__ */ jsx("span", {
className: "font-medium",
children: "Enitity"
}), /* @__PURE__ */ jsx("span", {
className: "text-secondary-foreground overflow-hidden text-ellipsis whitespace-nowrap",
children: t.requires[0].typeCondition
})]
})]
}, t.alias)),
/* @__PURE__ */ jsx("div", {
className: "-mt-2",
children: /* @__PURE__ */ jsxs(Dialog, { children: [/* @__PURE__ */ jsx(DialogTrigger, {
asChild: !0,
children: /* @__PURE__ */ jsx(Button, {
size: "sm",
variant: "link",
className: "h-auto w-full pt-2 text-xs",
children: "Show details"
})
}), /* @__PURE__ */ jsxs(DialogContent, {
className: "max-w-2xl! max-h-150 h-full w-full",
onMouseDown: (t) => {
t.preventDefault(), t.stopPropagation();
},
children: [/* @__PURE__ */ jsx(DialogHeader, { children: /* @__PURE__ */ jsx(DialogTitle, { children: "BatchFetch" }) }), /* @__PURE__ */ jsx("div", {
className: "h-full overflow-hidden rounded-sm border",
children: /* @__PURE__ */ jsx(Editor, {
value: renderBatchFetchNode(t),
language: "graphql"
})
})]
})] })
})
]
});
break;
case "Flatten":
s = null, visitNode(t.node, s, i, /* @__PURE__ */ jsxs(Fragment$1, { children: [a, /* @__PURE__ */ jsxs("div", {
className: "grid grid-cols-[1fr_auto] items-center gap-8 overflow-hidden font-mono text-xs",
children: [/* @__PURE__ */ jsx("span", {
className: "font-medium",
children: "Path"
}), /* @__PURE__ */ jsxs(Tooltip, { children: [/* @__PURE__ */ jsx(TooltipTrigger, {
asChild: !0,
children: /* @__PURE__ */ jsx("span", {
className: "text-secondary-foreground cursor-auto overflow-hidden text-ellipsis whitespace-nowrap",
children: renderFlattenPath(t.path)
})
}), /* @__PURE__ */ jsx(TooltipContent, { children: renderFlattenPath(t.path) })] })]
})] }), o ?? renderFlattenNode(t));
break;
case "Sequence": {
s = null;
let n = null;
for (let c = 0; c < t.nodes.length; c++) {
let d = t.nodes[c], f = visitNode(d, n, c === 0 ? [] : i, a, o);
c === 0 && (s = f), n && (n.next = [f.id]), n = f;
}
break;
}
case "Parallel":
s.children = [];
for (let n of t.nodes) visitNode(n, s, s.children, a, o);
break;
case "Condition":
s = null, t.ifClause && visitNode(t.ifClause, s, i, /* @__PURE__ */ jsxs("div", {
className: "grid grid-cols-[1fr_auto] items-center gap-8 overflow-hidden font-mono text-xs",
children: [/* @__PURE__ */ jsx("span", {
className: "font-medium",
children: "Include"
}), /* @__PURE__ */ jsxs("span", {
className: "text-secondary-foreground overflow-hidden text-ellipsis whitespace-nowrap",
children: ["if: $", t.condition]
})]
}), renderConditionNode(t)), t.elseClause && visitNode(t.elseClause, s, i, /* @__PURE__ */ jsxs("div", {
className: "grid grid-cols-[1fr_auto] items-center gap-8 overflow-hidden font-mono text-xs",
children: [/* @__PURE__ */ jsx("span", {
className: "font-medium",
children: "Skip"
}), /* @__PURE__ */ jsxs("span", {
className: "text-secondary-foreground overflow-hidden text-ellipsis whitespace-nowrap",
children: ["if: $", t.condition]
})]
}), renderConditionNode(t));
break;
case "Subscription":
visitNode(t.primary, s, i, a, o);
break;
case "Defer":
t.primary.node && visitNode(t.primary.node, s, i, a, o);
for (let n of t.deferred) n.node && visitNode(n.node, s, i, a, o);
break;
default: break;
}
return n && s && (n.next = [...n.next ?? [], s.id]), s && (s.icon = queryPlanNodeIcon(s.kind), i.push(s)), s;
}
const queryPlanNodeIcon = (t) => (n) => {
switch (t) {
case "Root": return /* @__PURE__ */ jsx(GraphQLIcon, {
...n,
className: cn(n.className, "size-6 min-w-6 text-pink-500")
});
case "Fetch": return /* @__PURE__ */ jsx(Box, { ...n });
case "BatchFetch": return /* @__PURE__ */ jsx(Boxes, { ...n });
case "Flatten": return /* @__PURE__ */ jsx(Layers2Icon, { ...n });
case "Sequence": return /* @__PURE__ */ jsx(ListOrderedIcon, { ...n });
case "Parallel": return /* @__PURE__ */ jsx(NetworkIcon, { ...n });
case "Condition": return /* @__PURE__ */ jsx(GitForkIcon, {
...n,
className: cn("rotate-90", n.className)
});
case "Subscription": return /* @__PURE__ */ jsx(UnlinkIcon, { ...n });
case "Defer": return /* @__PURE__ */ jsx(ClockIcon, { ...n });
}
};
function QueryPlanTree(t) {
let n = useMemo(() => {
let n = [], i = {
id: v4_default(),
title: "",
kind: "Root",
maxWidth: 42
};
return n.push(i), t.plan.node && visitNode(t.plan.node, i, n), n.map((t) => ({
...t,
icon: queryPlanNodeIcon(t.kind)
}));
}, [t.plan]);
return /* @__PURE__ */ jsx(Flow, { nodes: n });
}
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: t, variant: n, asChild: i = !1,...a }) {
return /* @__PURE__ */ jsx(i ? Slot : "span", {
"data-slot": "badge",
className: cn(badgeVariants({ variant: n }), t),
...a
});
}
function Select({ ...t }) {
return /* @__PURE__ */ jsx(Root2$2, {
"data-slot": "select",
...t
});
}
function SelectValue({ ...t }) {
return /* @__PURE__ */ jsx(Value, {
"data-slot": "select-value",
...t
});
}
function SelectTrigger({ className: t, size: n = "default", children: i,...a }) {
return /* @__PURE__ */ jsxs(Trigger$1, {
"data-slot": "select-trigger",
"data-size": n,
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", t),
...a,
children: [i, /* @__PURE__ */ jsx(Icon, {
asChild: !0,
children: /* @__PURE__ */ jsx(ChevronDownIcon, { className: "size-4 opacity-50" })
})]
});
}
function SelectContent({ className: t, children: n, position: i = "popper", align: a = "center",...o }) {
let { container: s } = useLaboratory();
return /* @__PURE__ */ jsx(Portal$1, {
container: s,
children: /* @__PURE__ */ jsxs(Content2, {
"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", i === "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", t),
position: i,
align: a,
...o,
children: [
/* @__PURE__ */ jsx(SelectScrollUpButton, {}),
/* @__PURE__ */ jsx(Viewport, {
className: cn("p-1", i === "popper" && "h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1"),
children: n
}),
/* @__PURE__ */ jsx(SelectScrollDownButton, {})
]
})
});
}
function SelectItem({ className: t, children: n,...i }) {
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", t),
...i,
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: n })]
});
}
function SelectScrollUpButton({ className: t,...n }) {
return /* @__PURE__ */ jsx(ScrollUpButton, {
"data-slot": "select-scroll-up-button",
className: cn("flex cursor-default items-center justify-center py-1", t),
...n,
children: /* @__PURE__ */ jsx(ChevronUpIcon, { className: "size-4" })
});
}
function SelectScrollDownButton({ className: t,...n }) {
return /* @__PURE__ */ jsx(ScrollDownButton, {
"data-slot": "select-scroll-down-button",
className: cn("flex cursor-default items-center justify-center py-1", t),
...n,
children: /* @__PURE__ */ jsx(ChevronDownIcon, { className: "size-4" })
});
}
function Spinner({ className: t,...n }) {
return /* @__PURE__ */ jsx(Loader2Icon, {
role: "status",
"aria-label": "Loading",
className: cn("size-4 animate-spin", t),
...n
});
}
function Tabs({ className: t,...n }) {
return /* @__PURE__ */ jsx(Root2$1, {
"data-slot": "tabs",
className: cn("flex flex-col", t),
...n
});
}
function TabsList({ className: t,...n }) {
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]", t),
...n
});
}
function TabsTrigger({ className: t,...n }) {
return /* @__PURE__ */ jsx(Trigger, {
"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", t),
...n
});
}
function TabsContent({ className: t,...n }) {
return /* @__PURE__ */ jsx(Content, {
"data-slot": "tabs-content",
className: cn("flex-1 outline-none", t),
...n
});
}
var 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: t, variant: n, size: i,...a }) {
return /* @__PURE__ */ jsx(Root, {
"data-slot": "toggle",
className: cn(toggleVariants({
variant: n,
size: i,
className: t
})),
...a
});
}
var ToggleGroupContext = React$1.createContext({
size: "default",
variant: "default",
spacing: 0
});
function ToggleGroup({ className: t, variant: n, size: i, spacing: a = 0, children: o,...s }) {
return /* @__PURE__ */ jsx(Root2, {
"data-slot": "toggle-group",
"data-variant": n,
"data-size": i,
"data-spacing": a,
style: { "--gap": a },
className: cn("group/toggle-group data-[spacing=default]:data-[variant=outline]:shadow-xs flex w-fit items-center gap-[--spacing(var(--gap))] rounded-md", t),
...s,
children: /* @__PURE__ */ jsx(ToggleGroupContext.Provider, {
value: {
variant: n,
size: i,
spacing: a
},
children: o
})
});
}
function ToggleGroupItem({ className: t, children: n, variant: i, size: a,...o }) {
let s = React$1.useContext(ToggleGroupContext);
return /* @__PURE__ */ jsx(Item2, {
"data-slot": "toggle-group-item",
"data-variant": s.variant || i,
"data-size": s.size || a,
"data-spacing": s.spacing,
className: cn(toggleVariants({
variant: s.variant || i,
size: s.size || a
}), "w-auto min-w-0 shrink-0 px-3 focus:z-10 focus-visible:z-10", "data-[spacing=0]:rounded-none data-[spacing=0]:data-[variant=outline]:border-l-0 data-[spacing=0]:shadow-none data-[spacing=0]:first:rounded-l-md data-[spacing=0]:data-[variant=outline]:first:border-l data-[spacing=0]:last:rounded-r-md", t),
...o,
children: n
});
}
const GraphQLType = (t) => t.type instanceof GraphQLNonNull ? /* @__PURE__ */ jsxs("span", { children: [/* @__PURE__ */ jsx(GraphQLType, { type: t.type.ofType }), /* @__PURE__ */ jsx("span", {
className: "text-muted-foreground!",
children: "!"
})] }) : t.type instanceof GraphQLList ? /* @__PURE__ */ jsxs("span", { children: [
/* @__PURE__ */ jsx("span", {
className: "text-muted-foreground!",
children: "["
}),
/* @__PURE__ */ jsx(GraphQLType, { type: t.type.ofType }),
/* @__PURE__ */ jsx("span", {
className: "text-muted-foreground!",
children: "]"
})
] }) : t.type instanceof GraphQLScalarType || t.type instanceof GraphQLEnumType ? /* @__PURE__ */ jsx("span", {
className: "text-teal-400",
children: t.type.name
}) : /* @__PURE__ */ jsx("span", {
className: "text-amber-400",
children: t.type.name
});
function Checkbox({ className: t,...n }) {
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", t),
...n,
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: t,...n }) {
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", t),
...n
});
}
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: t, align: n = "inline-start",...i }) {
return /* @__PURE__ */ jsx("div", {
role: "group",
"data-slot": "input-group-addon",
"data-align": n,
className: cn(inputGroupAddonVariants({ align: n }), t),
onClick: (t) => {
t.target.closest("button") || t.currentTarget.parentElement?.querySelector("input")?.focus();
},
...i
});
}
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: t, type: n = "button", variant: i = "ghost", size: a = "xs",...o }) {
return /* @__PURE__ */ jsx(Button, {
type: n,
"data-size": a,
variant: i,
className: cn(inputGroupButtonVariants({ size: a }), t),
...o
});
}
function InputGroupInput({ className: t,...n }) {
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", t),
...n
});
}
var import_lodash$1 = /* @__PURE__ */ __toESM(require_lodash());
const BuilderArgument = (t) => {
let { schema: n, activeOperation: i, addArgToActiveOperation: a, deleteArgFromActiveOperation: o, activeTab: s } = useLaboratory(), c = useMemo(() => t.operation ?? i ?? null, [t.operation, i]), d = useMemo(() => t.path.join("."), [t.path]), f = useMemo(() => isArgInQuery(c?.query ?? "", d, t.field.name), [
c?.query,
d,
t.field.name
]);
return /* @__PURE__ */ jsxs(Button, {
variant: "ghost",
className: cn("text-muted-foreground p-1! w-full justify-start text-xs", { "text-foreground-primary": f }),
size: "sm",
children: [
/* @__PURE__ */ jsx("div", { className: "size-4" }),
/* @__PURE__ */ jsx(Checkbox, {
onClick: (t) => t.stopPropagation(),
checked: f,
disabled: s?.type !== "operation" || t.isReadOnly,
onCheckedChange: (i) => {
n && (i ? a(t.path.join("."), t.field.name, n, t.operationName) : o(t.path.join("."), t.field.name, t.operationName));
}
}),
/* @__PURE__ */ jsx(BoxIcon, { className: "size-4 text-rose-400" }),
t.field.name,
": ",
/* @__PURE__ */ jsx(GraphQLType, { type: t.field.type })
]
}, t.field.name);
}, BuilderScalarField = (t) => {
let { activeOperation: n, addPathToActiveOperation: i, deletePathFromActiveOperation: a, activeTab: o } = useLaboratory(), s = useMemo(() => t.operation ?? n ?? null, [t.operation, n]), c = useMemo(() => t.path.join("."), [t.path]), d = useMemo(() => t.openPaths.includes(c) || !!t.forcedOpenPaths?.has(c), [
t.openPaths,
t.forcedOpenPaths,
c
]), f = useCallback((n) => {
t.setOpenPaths(n ? [...t.openPaths, c] : t.openPaths.filter((t) => t !== c));
}, [c, t]), g = useMemo(() => isPathInQuery(s?.query ?? "", c, t.operationName), [
s?.query,
c,
t.operationName
]), b = useMemo(() => t.field.args ?? [], [t.field]), x = useMemo(() => b.some((n) => isArgInQuery(s?.query ?? "", c, n.name, t.operationName)), [
s?.query,
b,
c,
t.operationName
]), S = useMemo(() => splitIdentifier(t.field.name).some((n) => t.searchValue?.toLowerCase().includes(n.toLowerCase())), [t.searchValue, t.field.name]);
return t.isSearchActive && t.visiblePaths && !t.visiblePaths.has(c) ? null : t.disableChildren ? /* @__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": g }),
style: { top: `${(t.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(Checkbox, {
onClick: (t) => t.stopPropagation(),
checked: g,
disabled: o?.type !== "operation" || t.isReadOnly,
onCheckedChange: (n) => {
n ? (f(!0), i(c, t.operationName)) : a(c, t.operationName);
}
}),
/* @__PURE__ */ jsx(BoxIcon, { className: "size-4 text-rose-400" }),
t.label ?? /* @__PURE__ */ jsx("span", {
className: cn({ "text-primary-foreground bg-primary -mx-0.5 rounded-sm px-0.5": S }),
children: t.field.name
}),
": ",
/* @__PURE__ */ jsx(GraphQLType, { type: t.field.type })
]
}) : b.length > 0 ? /* @__PURE__ */ jsxs(Collapsible, {
open: d,
onOpenChange: f,
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": g }),
style: { top: `${(t.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": !d }) }),
/* @__PURE__ */ jsx(Checkbox, {
onClick: (t) => t.stopPropagation(),
checked: g,
disabled: o?.type !== "operation" || t.isReadOnly,
onCheckedChange: (n) => {
n ? (f(!0), i(c, t.operationName)) : a(c, t.operationName);
}
}),
/* @__PURE__ */ jsx(BoxIcon, { className: "size-4 text-rose-400" }),
t.label ?? /* @__PURE__ */ jsx("span", {
className: cn({ "text-primary-foreground bg-primary -mx-0.5 rounded-sm px-0.5": S }),
children: t.field.name
}),
": ",
/* @__PURE__ */ jsx(GraphQLType, { type: t.field.type })
]
})
}), /* @__PURE__ */ jsx(CollapsibleContent, {
className: "border-border relative z-0 ml-3 flex flex-col border-l pl-2",
children: d && /* @__PURE__ */ jsx("div", { children: b.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": x }),
style: { top: `${(t.path.length - 1) * 32}px` },
size: "sm",
children: [
/* @__PURE__ */ jsx(ChevronDownIcon, { className: cn("text-muted-foreground size-4 transition-all", { "-rotate-90": !d }) }),
/* @__PURE__ */ jsx(Checkbox, {
onClick: (t) => t.stopPropagation(),
checked: x,
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: b.map((n) => /* @__PURE__ */ jsx(BuilderArgument, {
field: n,
path: [...t.path],
isReadOnly: t.isReadOnly,
operation: s
}, n.name))
})] }) })
})]
}, t.field.name) : /* @__PURE__ */ jsxs(Button, {
variant: "ghost",
className: cn("text-muted-foreground p-1! w-full justify-start text-xs", { "text-foreground-primary": g }),
size: "sm",
children: [
/* @__PURE__ */ jsx("div", { className: "size-4" }),
/* @__PURE__ */ jsx(Checkbox, {
onClick: (t) => t.stopPropagation(),
checked: g,
disabled: o?.type !== "operation",
onCheckedChange: (n) => {
n ? i(t.path.join("."), t.operationName) : a(t.path.join("."), t.operationName);
}
}),
/* @__PURE__ */ jsx(BoxIcon, { className: "size-4 text-rose-400" }),
t.label ?? /* @__PURE__ */ jsx("span", {
className: cn({ "text-primary-foreground bg-primary -mx-0.5 rounded-sm px-0.5": S }),
children: t.field.name
}),
": ",
/* @__PURE__ */ jsx(GraphQLType, { type: t.field.type })
]
}, t.field.name);
}, BuilderObjectField = (t) => {
let { schema: n, activeOperation: i, addPathToActiveOperation: a, deletePathFromActiveOperation: o, activeTab: s } = useLaboratory(), c = useMemo(() => t.operation ?? i ?? null, [t.operation, i]), d = useMemo(() => t.path.join("."), [t.path]), f = useMemo(() => t.openPaths.includes(d) || !!t.forcedOpenPaths?.has(d), [
t.openPaths,
t.forcedOpenPaths,
d
]), g = useCallback((n) => {
t.setOpenPaths(n ? [...t.openPaths, d] : t.openPaths.filter((t) => t !== d));
}, [d, t]), b = useMemo(() => Object.values((n?.getType(t.field.type.toString().replace(/\[|\]|!/g, "")))?.getFields?.() ?? {}), [n, t.field.type]), x = useMemo(() => t.field.args ?? [], [t.field]), S = useMemo(() => x.some((n) => isArgInQuery(c?.query ?? "", t.path.join("."), n.name)), [
c?.query,
x,
t.path
]), C = useMemo(() => isPathInQuery(c?.query ?? "", d), [c?.query, d]), w = useMemo(() => splitIdentifier(t.field.name).some((n) => t.searchValue?.toLowerCase().includes(n.toLowerCase())), [t.searchValue, t.field.name]);
return t.isSearchActive && t.visiblePaths && !t.visiblePaths.has(d) ? null : t.disableChildren ? /* @__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": C }),
style: { top: `${(t.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(Checkbox, {
onClick: (t) => t.stopPropagation(),
checked: C,
disabled: s?.type !== "operation" || t.isReadOnly,
onCheckedChange: (n) => {
n ? (g(!0), a(d, t.operationName)) : o(d, t.operationName);
}
}),
/* @__PURE__ */ jsx(BoxIcon, { className: "size-4 text-rose-400" }),
t.label ?? /* @__PURE__ */ jsx("span", {
className: cn({ "text-primary-foreground bg-primary -mx-0.5 rounded-sm px-0.5": w }),
children: t.field.name
}),
": ",
/* @__PURE__ */ jsx(GraphQLType, { type: t.field.type })
]
}) : /* @__PURE__ */ jsxs(Collapsible, {
open: f,
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": C }),
style: { top: `${(t.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": !f }) }),
/* @__PURE__ */ jsx(Checkbox, {
onClick: (t) => t.stopPropagation(),
checked: C,
disabled: s?.type !== "operation" || t.isReadOnly,
onCheckedChange: (n) => {
n ? (g(!0), a(d, t.operationName)) : o(d, t.operationName);
}
}),
/* @__PURE__ */ jsx(BoxIcon, { className: "size-4 text-rose-400" }),
t.label ?? /* @__PURE__ */ jsx("span", {
className: cn({ "text-primary-foreground bg-primary -mx-0.5 rounded-sm px-0.5": w }),
children: t.field.name
}),
": ",
/* @__PURE__ */ jsx(GraphQLType, { type: t.field.type })
]
})
}), /* @__PURE__ */ jsx(CollapsibleContent, {
className: "border-border relative z-0 ml-4 flex flex-col border-l pl-1",
children: f && /* @__PURE__ */ jsxs("div", { children: [x.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": S }),
style: { top: `${(t.path.length - 1) * 32}px` },
size: "sm",
children: [
/* @__PURE__ */ jsx(ChevronDownIcon, { className: cn("text-muted-foreground size-4 transition-all", { "-rotate-90": !f }) }),
/* @__PURE__ */ jsx(Checkbox, {
onClick: (t) => t.stopPropagation(),
checked: S,
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: x.map((n) => /* @__PURE__ */ jsx(BuilderArgument, {
field: n,
path: [...t.path],
operation: c
}, n.name))
})] }), b?.map((n) => /* @__PURE__ */ jsx(BuilderField, {
field: n,
path: [...t.path, n.name],
openPaths: t.openPaths,
setOpenPaths: t.setOpenPaths,
visiblePaths: t.visiblePaths,
forcedOpenPaths: t.forcedOpenPaths,
isSearchActive: t.isSearchActive,
isReadOnly: t.isReadOnly,
operation: c,
operationName: t.operationName,
searchValue: t.searchValue
}, n.name))] })
})]
}, t.field.name);
}, BuilderField = (t) => {
let { schema: n } = useLaboratory(), i = n?.getType(t.field.type.toString().replace(/\[|\]|!/g, ""));
return !i || i instanceof GraphQLScalarType || i instanceof GraphQLEnumType || i instanceof GraphQLUnionType ? /* @__PURE__ */ jsx(BuilderScalarField, {
field: t.field,
path: t.path,
openPaths: t.openPaths,
setOpenPaths: t.setOpenPaths,
visiblePaths: t.visiblePaths,
forcedOpenPaths: t.forcedOpenPaths,
isSearchActive: t.isSearchActive,
isReadOnly: t.isReadOnly,
operation: t.operation,
operationName: t.operationName,
searchValue: t.searchValue,
label: t.label,
disableChildren: t.disableChildren
}) : /* @__PURE__ */ jsx(BuilderObjectField, {
field: t.field,
path: t.path,
openPaths: t.openPaths,
setOpenPaths: t.setOpenPaths,
visiblePaths: t.visiblePaths,
forcedOpenPaths: t.forcedOpenPaths,
isSearchActive: t.isSearchActive,
isReadOnly: t.isReadOnly,
operation: t.operation,
operationName: t.operationName,
searchValue: t.searchValue,
label: t.label,
disableChildren: t.disableChildren
});
};
var BuilderSearchResultMode = /* @__PURE__ */ function(t) {
return t.LIST = "list", t.TREE = "tree", t;
}(BuilderSearchResultMode || {});
const BuilderSearchResults = (t) => t.mode === BuilderSearchResultMode.LIST ? t.matchedPaths.map((n) => {
let i = getFieldByPath(n, t.schema);
return i ? /* @__PURE__ */ jsx(BuilderField, {
field: i,
path: [n],
openPaths: t.openPaths,
setOpenPaths: t.setOpenPaths,
visiblePaths: t.visiblePaths,
forcedOpenPaths: t.forcedOpenPaths,
isSearchActive: t.isSearchActive,
isReadOnly: t.isReadOnly,
operation: t.operation,
operationName: t.operationName,
searchValue: t.searchValue,
disableChildren: !0,
label: /* @__PURE__ */ jsx("span", { children: n.split(".").map((i, a) => splitIdentifier(i).some((n) => t.searchValue.toLowerCase().includes(n.toLowerCase())) ? /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx("span", {
className: "text-primary-foreground bg-primary -mx-0.5 rounded-sm px-0.5",
children: i
}), a < n.split(".").length - 1 && "."] }, a) : /* @__PURE__ */ jsxs("span", { children: [i, a < n.split(".").length - 1 && "."] }, a)) })
}, n) : null;
}) : t.fields.filter((n) => t.visiblePaths?.has(`${t.tab}.${n.name}`)).map((n) => /* @__PURE__ */ jsx(BuilderField, {
field: n,
path: [t.tab, n.name],
openPaths: t.openPaths,
setOpenPaths: t.setOpenPaths,
visiblePaths: t.visiblePaths,
forcedOpenPaths: t.forcedOpenPaths,
isSearchActive: t.isSearchActive,
isReadOnly: t.isReadOnly,
operation: t.operation,
operationName: t.operationName,
searchValue: t.searchValue
}, n.name)), Builder = (t) => {
let { schema: n, activeOperation: i, endpoint: a, setEndpoint: o, defaultEndpoint: s } = useLaboratory(), [c, d] = useState(a ?? ""), [f, g] = useState(""), b = useDeferredValue(f[f.length - 1] === "." ? f.slice(0, -1) : f), [x, S] = useState([]), [C, w] = useState(OperationTypeNode.QUERY), E = useMemo(() => t.operation ?? i ?? null, [t.operation, i]);
useEffect(() => {
if (n) {
let t = getOpenPaths(E?.query ?? "");
t.length > 0 && (S(t), w(t[0]));
}
}, [n, E?.query]);
let O = useMemo(() => Object.values(n?.getQueryType()?.getFields?.() ?? {}), [n]), A = useMemo(() => Object.values(n?.getMutationType()?.getFields?.() ?? {}), [n]), M = useMemo(() => Object.values(n?.getSubscriptionType()?.getFields?.() ?? {}), [n]), F = b.trim().length > 0, I = useMemo(() => !n || !F ? null : searchSchemaPaths(n, b, {
maxDepth: 8,
maxMatches: 100,
maxNodes: 1e4,
operationTypes: [C]
}), [
n,
b,
F,
C
]), R = F ? I?.visiblePaths ?? null : null, qA = F && b.includes(".") ? I?.forcedOpenPaths ?? null : null, [V, q] = useState(BuilderSearchResultMode.TREE), JA = useMemo(() => (0, import_lodash$1.throttle)((t) => {
o(t);
}, 1e3), [o]);
useEffect(() => {
JA(c);
}, [c, JA]);
let YA = useCallback(() => {
d(a ?? ""), o(s ?? ""), toast.success("Endpoint restored to default");
}, [s, d]);
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: () => S([]),
variant: "ghost",
size: "icon-sm",
className: "p-1! size-6 rounded-sm",
disabled: x.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: c,
onChange: (t) => d(t.currentTarget.value)
}),
/* @__PURE__ */ jsx(InputGroupAddon, { children: /* @__PURE__ */ jsx(GraphQLIcon, {}) }),
s && /* @__PURE__ */ jsx(InputGroupAddon, {
align: "inline-end",
children: /* @__PURE__ */ jsxs(Tooltip, { children: [/* @__PURE__ */ jsx(TooltipTrigger, { children: /* @__PURE__ */ jsx(InputGroupButton, {
className: "rounded-full",
size: "icon-xs",
onClick: YA,
children: /* @__PURE__ */ jsx(RotateCcwIcon, { className: "size-4" })
}) }), /* @__PURE__ */ jsx(TooltipContent, { children: "Restore default endpoint" })] })
})
] })
}),
/* @__PURE__ */ jsx("div", {
className: "flex-1 overflow-hidden",
children: n ? /* @__PURE__ */ jsxs(Tabs, {
value: C,
onValueChange: (t) => w(t),
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: O.length === 0,
className: "text-xs",
children: "Query"
}),
/* @__PURE__ */ jsx(TabsTrigger, {
value: "mutation",
disabled: A.length === 0,
className: "text-xs",
children: "Mutation"
}),
/* @__PURE__ */ jsx(TabsTrigger, {
value: "subscription",
disabled: M.length === 0,
className: "text-xs",
children: "Subscription"
})
]
})
}),
n && /* @__PURE__ */ jsx("div", {
className: "border-border sticky top-0 z-10 border-b p-3",
children: /* @__PURE__ */ jsxs(InputGroup, {
className: "pr-0",
children: [
/* @__PURE__ */ jsx(InputGroupInput, {
placeholder: "Search fields",
value: f,
onChange: (t) => g(t.currentTarget.value)
}),
/* @__PURE__ */ jsx(InputGroupAddon, { children: /* @__PURE__ */ jsx(SearchIcon, { className: "text-muted-foreground size-4" }) }),
/* @__PURE__ */ jsx(InputGroupAddon, {
align: "inline-end",
className: "py-0 pr-1.5",
children: /* @__PURE__ */ jsxs(ToggleGroup, {
type: "single",
variant: "outline",
defaultValue: V,
onValueChange: (t) => q(t),
children: [/* @__PURE__ */ jsxs(Tooltip, { children: [/* @__PURE__ */ jsx(TooltipTrigger, { children: /* @__PURE__ */ jsx(ToggleGroupItem, {
value: BuilderSearchResultMode.TREE,
"aria-label": "Toggle tree",
className: "h-6 !rounded-l-sm !rounded-r-none border-r-0 p-2",
children: /* @__PURE__ */ jsx(ListTreeIcon, { className: "size-4" })
}) }), /* @__PURE__ */ jsx(TooltipContent, { children: "Tree" })] }), /* @__PURE__ */ jsxs(Tooltip, { children: [/* @__PURE__ */ jsx(TooltipTrigger, { children: /* @__PURE__ */ jsx(ToggleGroupItem, {
value: BuilderSearchResultMode.LIST,
"aria-label": "Toggle list",
className: "h-6 !rounded-l-none !rounded-r-sm p-2",
children: /* @__PURE__ */ jsx(TextAlignStartIcon, { className: "size-4" })
}) }), /* @__PURE__ */ jsx(TooltipContent, { children: "List" })] })]
})
})
]
})
}),
/* @__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: F ? /* @__PURE__ */ jsx(BuilderSearchResults, {
type: "query",
fields: O,
openPaths: x,
setOpenPaths: S,
visiblePaths: R,
matchedPaths: I?.matchedPaths ?? [],
forcedOpenPaths: I?.forcedOpenPaths ?? null,
isSearchActive: F,
mode: V,
isReadOnly: t.isReadOnly ?? !1,
operation: E,
searchValue: b,
schema: n,
tab: C
}) : O.map((n) => /* @__PURE__ */ jsx(BuilderField, {
field: n,
path: ["query", n.name],
openPaths: x,
setOpenPaths: S,
visiblePaths: R,
forcedOpenPaths: qA,
isSearchActive: F,
isReadOnly: t.isReadOnly,
operation: E,
operationName: t.operationName,
searchValue: b
}, n.name))
}),
/* @__PURE__ */ jsx(TabsContent, {
value: "mutation",
children: F ? /* @__PURE__ */ jsx(BuilderSearchResults, {
type: "mutation",
fields: A,
openPaths: x,
setOpenPaths: S,
visiblePaths: R,
matchedPaths: I?.matchedPaths ?? [],
forcedOpenPaths: I?.forcedOpenPaths ?? null,
isSearchActive: F,
mode: V,
isReadOnly: t.isReadOnly ?? !1,
operation: E,
searchValue: b,
schema: n,
tab: C
}) : A.map((n) => /* @__PURE__ */ jsx(BuilderField, {
field: n,
path: ["mutation", n.name],
openPaths: x,
setOpenPaths: S,
visiblePaths: R,
forcedOpenPaths: qA,
isSearchActive: F,
isReadOnly: t.isReadOnly,
operation: E,
operationName: t.operationName,
searchValue: b
}, n.name))
}),
/* @__PURE__ */ jsx(TabsContent, {
value: "subscription",
children: F ? /* @__PURE__ */ jsx(BuilderSearchResults, {
type: "subscription",
fields: M,
openPaths: x,
setOpenPaths: S,
visiblePaths: R,
matchedPaths: I?.matchedPaths ?? [],
forcedOpenPaths: I?.forcedOpenPaths ?? null,
isSearchActive: F,
mode: V,
isReadOnly: t.isReadOnly ?? !1,
operation: E,
searchValue: b,
schema: n,
tab: C
}) : M.map((n) => /* @__PURE__ */ jsx(BuilderField, {
field: n,
path: ["subscription", n.name],
openPaths: x,
setOpenPaths: S,
visiblePaths: R,
forcedOpenPaths: qA,
isSearchActive: F,
isReadOnly: t.isReadOnly,
operation: E,
operationName: t.operationName,
searchValue: b
}, n.name))
})
]
}),
/* @__PURE__ */ jsx(ScrollBar, { className: "relative z-50" }),
/* @__PURE__ */ jsx(ScrollBar, {
orientation: "horizontal",
className: "relative z-50"
})
]
})
})
]
}, E?.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 = (t) => {
let { activeOperation: n, updateActiveOperation: i } = useLaboratory(), a = useMemo(() => t.operation ?? n ?? null, [t.operation, n]);
return /* @__PURE__ */ jsx(Editor, {
uri: variablesUri,
value: a?.variables ?? "",
language: "json",
onChange: (t) => {
i({ variables: t ?? "" });
},
options: { readOnly: t.isReadOnly }
});
}, Headers = (t) => {
let { activeOperation: n, updateActiveOperation: i } = useLaboratory(), a = useMemo(() => t.operation ?? n ?? null, [t.operation, n]);
return /* @__PURE__ */ jsx(Editor, {
uri: Uri.file("headers.json"),
value: a?.headers ?? "",
language: "json",
onChange: (t) => {
i({ headers: t ?? "" });
},
options: { readOnly: t.isReadOnly }
});
}, Extensions = (t) => {
let { activeOperation: n, updateActiveOperation: i } = useLaboratory(), a = useMemo(() => t.operation ?? n ?? null, [t.operation, n]);
return /* @__PURE__ */ jsx(Editor, {
uri: Uri.file("extensions.json"),
value: a?.extensions ?? "",
language: "json",
onChange: (t) => {
i({ extensions: t ?? "" });
},
options: { readOnly: t.isReadOnly }
});
};
const ResponseBody = ({ historyItem: t }) => /* @__PURE__ */ jsx(Editor, {
value: JSON.stringify(JSON.parse(t?.response ?? "{}"), null, 2),
defaultLanguage: "json",
theme: "hive-laboratory",
options: { readOnly: !0 }
}), ResponseHeaders = ({ historyItem: t }) => /* @__PURE__ */ jsx(Editor, {
value: JSON.stringify(JSON.parse(t?.headers ?? "{}"), null, 2),
defaultLanguage: "json",
theme: "hive-laboratory"
}), ResponsePreflight = ({ historyItem: t }) => /* @__PURE__ */ jsxs(ScrollArea, {
className: "h-full",
children: [/* @__PURE__ */ jsx("div", {
className: "flex flex-col gap-1.5 whitespace-pre-wrap p-3",
children: t?.preflightLogs?.map((t, n) => /* @__PURE__ */ jsxs("div", {
className: "gap-2 font-mono",
children: [
/* @__PURE__ */ jsx("span", {
className: "text-muted-foreground text-xs",
children: t.createdAt
}),
" ",
/* @__PURE__ */ jsx("span", {
className: cn("text-xs font-medium", {
"text-blue-400": t.level === "info",
"text-green-400": t.level === "log",
"text-yellow-400": t.level === "warn",
"text-red-400": t.level === "error",
"text-gray-400": t.level === "system"
}),
children: t.level.toUpperCase()
}),
" ",
/* @__PURE__ */ jsx("span", {
className: "text-xs",
children: t.message.join(" ")
})
]
}, n))
}), /* @__PURE__ */ jsx(ScrollBar, {})]
}), ResponseQueryPlan = ({ historyItem: t }) => {
let [n, i] = useState("text"), a = useMemo(() => {
try {
let n = JSON.parse(t?.response ?? "{}").extensions?.queryPlan ?? {};
return n && QueryPlanSchema.safeParse(n).success ? n : null;
} catch {
return null;
}
}, [t]);
return /* @__PURE__ */ jsxs("div", {
className: "relative size-full",
children: [/* @__PURE__ */ jsxs(ToggleGroup, {
className: "bg-card absolute right-4 top-4 z-10 shadow-sm",
type: "single",
variant: "outline",
value: n,
onValueChange: (t) => i(t),
children: [/* @__PURE__ */ jsxs(ToggleGroupItem, {
value: "text",
children: [/* @__PURE__ */ jsx(AlignLeftIcon, { className: "size-4" }), "Text"]
}), /* @__PURE__ */ jsxs(ToggleGroupItem, {
value: "visual",
children: [/* @__PURE__ */ jsx(NetworkIcon, { className: "size-4" }), "Visual"]
})]
}), n === "visual" ? /* @__PURE__ */ jsx(QueryPlanTree, { plan: a }, t?.id) : /* @__PURE__ */ jsx(Editor, {
value: renderQueryPlan(a),
defaultLanguage: "graphql",
theme: "hive-laboratory",
options: { readOnly: !0 }
})]
});
}, ResponseSubscription = ({ historyItem: t }) => {
let { isActiveOperationLoading: n } = 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: n ? /* @__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: t?.responses.sort((t, n) => new Date(n.createdAt).getTime() - new Date(t.createdAt).getTime()).map((t, n) => {
let i = [
`// ${t.createdAt}`,
"",
JSON.stringify(JSON.parse(t.data), null, 2)
].join("\n"), a = 20.5 * i.split("\n").length;
return /* @__PURE__ */ jsx("div", {
className: "border-border border-b",
style: { height: `${a}px` },
children: /* @__PURE__ */ jsx(Editor, {
value: i,
defaultLanguage: "json",
theme: "hive-laboratory",
options: {
readOnly: !0,
scrollBeyondLastLine: !1,
scrollbar: {
vertical: "hidden",
handleMouseWheel: !1,
alwaysConsumeMouseWheel: !1
}
}
}, t.createdAt)
}, n);
})
}), /* @__PURE__ */ jsx(ScrollBar, {})]
})
})]
});
}, Response = ({ historyItem: t }) => {
let [n, i] = useState(!1), a = useMemo(() => t ? t.status ? t.status < 200 || t.status >= 300 || "response" in t && JSON.parse(t.response).errors : !0 : !1, [t]), o = useMemo(() => {
if (!t) return !1;
let n = JSON.parse(t.response).extensions?.queryPlan;
return n ? QueryPlanSchema.safeParse(n).success : !1;
}, [t?.response]);
return /* @__PURE__ */ jsxs(Tabs, {
defaultValue: "response",
className: cn("bg-card grid size-full grid-rows-[auto_1fr]", { "z-100 absolute inset-0 size-full": n }),
children: [
/* @__PURE__ */ jsxs(TabsList, {
className: "h-[50px] w-full items-center justify-start rounded-none border-b bg-transparent p-3",
children: [
n ? /* @__PURE__ */ jsxs(Tooltip, { children: [/* @__PURE__ */ jsx(TooltipTrigger, { children: /* @__PURE__ */ jsx(Button, {
variant: "ghost",
size: "sm",
className: "mr-2 mt-0.5 h-6 w-6",
onClick: () => i(!1),
children: /* @__PURE__ */ jsx(PanelLeftOpenIcon, { className: "size-4" })
}) }), /* @__PURE__ */ jsx(TooltipContent, {
side: "bottom",
children: "Minimize panel"
})] }) : /* @__PURE__ */ jsxs(Tooltip, { children: [/* @__PURE__ */ jsx(TooltipTrigger, { children: /* @__PURE__ */ jsx(Button, {
variant: "ghost",
size: "sm",
className: "mr-2 mt-0.5 h-6 w-6",
onClick: () => i(!0),
children: /* @__PURE__ */ jsx(PanelLeftCloseIcon, { className: "size-4" })
}) }), /* @__PURE__ */ jsx(TooltipContent, {
side: "bottom",
children: "Maximize panel"
})] }),
/* @__PURE__ */ jsx(TabsTrigger, {
value: "response",
className: "grow-0 rounded-sm",
children: "Response"
}),
o && /* @__PURE__ */ jsx(TabsTrigger, {
value: "query-plan",
className: "grow-0 rounded-sm",
children: "Query Plan"
}),
/* @__PURE__ */ jsx(TabsTrigger, {
value: "headers",
className: "grow-0 rounded-sm",
children: "Headers"
}),
t?.preflightLogs && t?.preflightLogs.length > 0 && /* @__PURE__ */ jsx(TabsTrigger, {
value: "preflight",
className: "grow-0 rounded-sm",
children: "Preflight"
}),
t ? /* @__PURE__ */ jsxs("div", {
className: "ml-auto flex items-center gap-2",
children: [
!!t?.status && /* @__PURE__ */ jsxs(Badge, {
className: cn("bg-green-400/10 text-green-500", { "bg-red-400/10 text-red-500": a }),
children: [jsx(a ? CircleXIcon : CircleCheckIcon, { className: "size-3" }), /* @__PURE__ */ jsx("span", { children: t.status })]
}),
t?.duration && /* @__PURE__ */ jsxs(Badge, {
variant: "outline",
className: "bg-card",
children: [/* @__PURE__ */ jsx(ClockIcon, { className: "size-3" }), /* @__PURE__ */ jsxs("span", { children: [Math.round(t.duration), "ms"] })]
}),
t?.size && /* @__PURE__ */ jsxs(Badge, {
variant: "outline",
className: "bg-card",
children: [/* @__PURE__ */ jsx(FileTextIcon, { className: "size-3" }), /* @__PURE__ */ jsxs("span", { children: [Math.round(t.size / 1024), "KB"] })]
})
]
}) : null
]
}),
/* @__PURE__ */ jsx(TabsContent, {
value: "response",
className: "overflow-hidden",
children: /* @__PURE__ */ jsx(ResponseBody, { historyItem: t })
}),
/* @__PURE__ */ jsx(TabsContent, {
value: "query-plan",
className: "overflow-hidden",
children: /* @__PURE__ */ jsx(ResponseQueryPlan, { historyItem: t })
}),
/* @__PURE__ */ jsx(TabsContent, {
value: "headers",
className: "overflow-hidden",
children: /* @__PURE__ */ jsx(ResponseHeaders, { historyItem: t })
}),
/* @__PURE__ */ jsx(TabsContent, {
value: "preflight",
className: "overflow-hidden",
children: /* @__PURE__ */ jsx(ResponsePreflight, { historyItem: t })
})
]
});
};
var saveToCollectionFormSchema = z.object({ collectionId: z.string().min(1, "Collection is required") });
const Query = (t) => {
let { endpoint: n, runActiveOperation: i, activeOperation: a, isActiveOperationLoading: o, updateActiveOperation: s, collections: d, addOperationToCollection: f, addHistory: g, stopActiveOperation: b, addResponseToHistory: x, isActiveOperationSubscription: S, runPreflight: C, addTab: w, setActiveTab: E, addOperation: O, checkPermissions: A, preflight: M, setPreflight: F, plugins: I, pluginsState: R, setPluginsState: qA } = useLaboratory(), [V, q] = useState(null), JA = useMemo(() => t.operation ?? a ?? null, [t.operation, a]), YA = useCallback(async () => {
if (!JA || !n) return;
let a = await C?.(I, R);
if (qA(a?.pluginsState ?? {}), a?.status === "error") {
let n = g({
headers: "{}",
operation: JA,
preflightLogs: a?.logs ?? [],
response: "{\n \"errors\": [\n {\n \"message\": \"Preflight failed check logs for more details\"\n }\n ]\n }",
createdAt: (/* @__PURE__ */ new Date()).toISOString()
});
t.onAfterOperationRun?.(n);
return;
}
if (S) {
let o = g({
responses: [],
operation: JA,
preflightLogs: a?.logs ?? [],
createdAt: (/* @__PURE__ */ new Date()).toISOString()
});
i(n, {
env: a?.env,
headers: a?.headers,
operationName: V ?? void 0,
onResponse: (t) => {
x(o.id, t);
}
}), t.onAfterOperationRun?.(o);
} else {
let o = performance.now(), s = await i(n, {
env: a?.env,
headers: a?.headers,
operationName: V ?? void 0
});
if (!s) return;
let c = s.extensions?.response ?? {
status: 0,
headers: {}
};
delete s.extensions?.request, delete s.extensions?.response, Object.keys(s.extensions ?? {}).length === 0 && delete s.extensions;
let d = c.status, f = performance.now() - o, b = JSON.stringify(s, null, 2), x = b.length, S = g({
status: d,
duration: f,
size: x,
headers: JSON.stringify(c.headers, null, 2),
operation: JA,
preflightLogs: a?.logs ?? [],
response: b,
createdAt: (/* @__PURE__ */ new Date()).toISOString()
});
t.onAfterOperationRun?.(S);
}
}, [
JA,
V,
n,
S,
g,
i,
t,
x,
C,
R
]);
useEffect(() => {
let t = (t) => {
t.key === "Enter" && (t.metaKey || t.ctrlKey) && (t.preventDefault(), t.stopPropagation(), YA());
};
return document.addEventListener("keydown", t, { capture: !0 }), () => document.removeEventListener("keydown", t, { capture: !0 });
}, [YA]);
let [XA, ZA] = useState(!1), QA = useForm({
defaultValues: { collectionId: "" },
validators: { onSubmit: saveToCollectionFormSchema },
onSubmit: ({ value: t }) => {
JA && (f(t.collectionId, {
id: JA.id ?? "",
name: JA.name ?? "",
query: JA.query ?? "",
variables: JA.variables ?? "",
headers: JA.headers ?? "",
extensions: JA.extensions ?? "",
description: ""
}), ZA(!1));
}
}), $A = useCallback(() => {
QA.reset({ collectionId: d[0]?.id ?? "" }), ZA(!0);
}, [QA, d]), ej = useMemo(() => d.some((t) => t.operations.some((t) => t.id === JA?.id)), [JA?.id, d]), tj = useCallback((t) => {
let n = compressToEncodedURIComponent(JSON.stringify({
n: JA?.name,
q: JA?.query,
v: t.variables ? JA?.variables : void 0,
h: t.headers ? JA?.headers : void 0,
e: t.extensions ? JA?.extensions : void 0
}));
navigator.clipboard.writeText(`${window.location.origin}${window.location.pathname}?share=${n}`), toast.success("Operation copied to clipboard");
}, [JA]);
return /* @__PURE__ */ jsxs("div", {
className: "grid size-full grid-rows-[auto_1fr] overflow-hidden pb-0",
children: [
/* @__PURE__ */ jsx(Dialog, {
open: XA,
onOpenChange: ZA,
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: (t) => {
t.preventDefault(), QA.handleSubmit();
},
children: /* @__PURE__ */ jsx(FieldGroup, { children: /* @__PURE__ */ jsx(QA.Field, {
name: "collectionId",
children: (t) => {
let n = t.state.meta.isTouched && !t.state.meta.isValid;
return /* @__PURE__ */ jsxs(Field, {
"data-invalid": n,
children: [/* @__PURE__ */ jsx(FieldLabel, {
htmlFor: t.name,
children: "Collection"
}), /* @__PURE__ */ jsxs(Select, {
name: t.name,
value: t.state.value,
onValueChange: t.handleChange,
children: [/* @__PURE__ */ jsx(SelectTrigger, {
id: t.name,
"aria-invalid": n,
children: /* @__PURE__ */ jsx(SelectValue, { placeholder: "Select collection" })
}), /* @__PURE__ */ jsx(SelectContent, { children: d.map((t) => /* @__PURE__ */ jsx(SelectItem, {
value: t.id,
children: t.name
}, t.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"
}),
A?.("collectionsOperations:create") && /* @__PURE__ */ jsxs(Toggle, {
"aria-label": "Save operation",
size: "sm",
variant: "default",
pressed: ej,
disabled: ej,
className: "data-[state=on]:*:[svg]:fill-yellow-500 data-[state=on]:*:[svg]:stroke-yellow-500 h-6 data-[state=on]:bg-transparent",
onClick: $A,
children: [/* @__PURE__ */ jsx(BookmarkIcon, { className: "size-4" }), ej ? "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: () => tj({ variables: !0 }),
children: "Share with variables"
}),
/* @__PURE__ */ jsx(DropdownMenuItem, {
onClick: () => tj({
variables: !0,
extensions: !0
}),
children: "Share with variables and extensions"
}),
/* @__PURE__ */ jsx(DropdownMenuItem, {
onClick: () => tj({
variables: !0,
headers: !0,
extensions: !0
}),
children: "Share with variables, extensions, headers"
})
]
})] }),
/* @__PURE__ */ jsxs(Toggle, {
"aria-label": M?.enabled ? "Disable preflight" : "Enable preflight",
size: "sm",
variant: "default",
pressed: M?.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: () => {
F({
...M ?? {
script: "",
enabled: !0
},
enabled: !M?.enabled
});
},
children: [M?.enabled ? /* @__PURE__ */ jsx(PowerIcon, { className: "size-4 text-green-500" }) : /* @__PURE__ */ jsx(PowerOffIcon, { className: "size-4 text-red-500" }), "Preflight"]
}),
t.isReadOnly ? /* @__PURE__ */ jsxs(Button, {
variant: "default",
size: "sm",
className: "h-6 rounded-sm",
onClick: () => {
JA && E(w({
type: "operation",
data: O(JA)
}));
},
children: [/* @__PURE__ */ jsx(SquarePenIcon, { className: "size-4" }), "Edit"]
}) : /* @__PURE__ */ jsx(Button, {
variant: "default",
size: "sm",
className: "h-6 rounded-sm",
onClick: () => {
o ? b?.() : YA();
},
disabled: !JA || !n,
children: o ? /* @__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_${n}.graphql`),
variablesUri,
value: JA?.query ?? "",
onChange: (t) => {
s({ query: t ?? "" });
},
onOperationNameChange: (n) => {
q(n), t.onOperationNameChange?.(n);
},
language: "graphql",
theme: "hive-laboratory",
options: { readOnly: t.isReadOnly }
})
]
});
}, Operation = (t) => {
let { activeOperation: n, history: i } = useLaboratory(), [a, o] = useState(null), s = useMemo(() => t.operation ?? n ?? null, [t.operation, n]), c = useMemo(() => t.historyItem ?? i.filter((t) => t.operation.id === s?.id).sort((t, n) => new Date(n.createdAt).getTime() - new Date(t.createdAt).getTime())[0] ?? null, [
i,
t.historyItem,
s?.id
]), d = useMemo(() => !!t.historyItem, [t.historyItem]);
return /* @__PURE__ */ jsx("div", {
className: "bg-card relative size-full",
children: /* @__PURE__ */ jsxs(ResizablePanelGroup, {
direction: "horizontal",
className: "size-full",
children: [
/* @__PURE__ */ jsx(ResizablePanel, {
defaultSize: 25,
children: /* @__PURE__ */ jsx(Builder, {
operation: s,
operationName: a,
isReadOnly: d
})
}),
/* @__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: s,
isReadOnly: d,
onOperationNameChange: o
})
}),
/* @__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: s,
isReadOnly: d
})
}),
/* @__PURE__ */ jsx(TabsContent, {
value: "headers",
className: "overflow-hidden",
children: /* @__PURE__ */ jsx(Headers, {
operation: s,
isReadOnly: d
})
}),
/* @__PURE__ */ jsx(TabsContent, {
value: "extensions",
className: "overflow-hidden",
children: /* @__PURE__ */ jsx(Extensions, {
operation: s,
isReadOnly: d
})
})
]
})
})
]
})
}),
/* @__PURE__ */ jsx(ResizableHandle, {}),
/* @__PURE__ */ jsx(ResizablePanel, {
minSize: 10,
defaultSize: 35,
children: c ? /* @__PURE__ */ jsx(Fragment$1, { children: "responses" in c ? /* @__PURE__ */ jsx(ResponseSubscription, { historyItem: c }) : /* @__PURE__ */ jsx(Response, { historyItem: c }) }) : /* @__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: t, history: n } = useLaboratory(), i = useMemo(() => t?.type === "history" ? n.find((n) => n.id === t.data.id) ?? null : null, [n, t]);
return i ? /* @__PURE__ */ jsx(Operation, {
operation: i.operation,
historyItem: i
}) : null;
}, Preflight = () => {
let { preflight: t, setLastTestResult: n, setPreflight: i, env: a, setEnv: o, openPreflightPromptModal: s, checkPermissions: c, plugins: d, pluginsState: f, setPluginsState: g } = useLaboratory(), b = useCallback(async () => {
if (!t?.script) return;
let i = await runIsolatedLabScript(t?.script ?? "", a ?? { variables: {} }, (t, n) => new Promise((i) => {
s?.({
placeholder: t,
defaultValue: n,
onSubmit: (t) => {
i(t);
}
});
}), d, f);
o(i?.env ?? { variables: {} }), g(i?.pluginsState ?? {}), n(i);
}, [
a,
o,
t,
n,
s
]);
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: b,
children: [/* @__PURE__ */ jsx(PlayIcon, { className: "size-4" }), /* @__PURE__ */ jsx("span", { children: "Test" })]
})
})]
}), /* @__PURE__ */ jsx("div", {
className: "size-full",
children: /* @__PURE__ */ jsx(Editor, {
value: t?.script ?? "",
onChange: (n) => {
i({
...t ?? {
script: "",
enabled: !0
},
script: n ?? ""
});
},
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: {
${d.filter((t) => t.preflight?.lab?.definition).map((t) => t.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: !c?.("preflight:update") }
})
})]
})
}),
/* @__PURE__ */ jsx(ResizableHandle, {}),
/* @__PURE__ */ jsx(ResizablePanel, {
minSize: 10,
defaultSize: 50,
className: "bg-card",
children: t?.lastTestResult?.logs && t?.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: t?.lastTestResult?.logs.map((t, n) => /* @__PURE__ */ jsxs("div", {
className: "gap-2 font-mono",
children: [
/* @__PURE__ */ jsx("span", {
className: "text-muted-foreground text-xs",
children: t.createdAt
}),
" ",
/* @__PURE__ */ jsx("span", {
className: cn("text-xs font-medium", {
"text-blue-400": t.level === "info",
"text-green-400": t.level === "log",
"text-yellow-400": t.level === "warn",
"text-red-400": t.level === "error",
"text-gray-400": t.level === "system"
}),
children: t.level.toUpperCase()
}),
" ",
/* @__PURE__ */ jsx("span", {
className: "text-xs",
children: t.message.join(" ")
})
]
}, n))
}), /* @__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 Switch({ className: t,...n }) {
return /* @__PURE__ */ jsx(Root$1, {
"data-slot": "switch",
className: cn("focus-visible:border-ring focus-visible:ring-ring/50 data-[state=unchecked]:bg-input/80 data-[state=checked]:bg-primary peer inline-flex h-[1.15rem] w-8 shrink-0 items-center rounded-full border border-transparent shadow-sm outline-none transition-all focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50", t),
...n,
children: /* @__PURE__ */ jsx(Thumb, {
"data-slot": "switch-thumb",
className: cn("bg-background data-[state=unchecked]:bg-foreground data-[state=checked]:bg-primary-foreground pointer-events-none block size-4 rounded-full ring-0 transition-transform data-[state=checked]:translate-x-[calc(100%-2px)] data-[state=unchecked]:translate-x-0")
})
});
}
function Card({ className: t,...n }) {
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", t),
...n
});
}
function CardHeader({ className: t,...n }) {
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]", t),
...n
});
}
function CardTitle({ className: t,...n }) {
return /* @__PURE__ */ jsx("div", {
"data-slot": "card-title",
className: cn("font-semibold leading-none", t),
...n
});
}
function CardDescription({ className: t,...n }) {
return /* @__PURE__ */ jsx("div", {
"data-slot": "card-description",
className: cn("text-muted-foreground text-sm", t),
...n
});
}
function CardContent({ className: t,...n }) {
return /* @__PURE__ */ jsx("div", {
"data-slot": "card-content",
className: cn("px-6", t),
...n
});
}
var settingsFormSchema = z.object({
fetch: z.object({
credentials: z.enum([
"include",
"omit",
"same-origin"
]),
timeout: z.number().optional(),
retry: z.number().optional(),
useGETForQueries: z.boolean().optional()
}),
subscriptions: z.object({ protocol: z.enum([
"SSE",
"GRAPHQL_SSE",
"WS",
"LEGACY_WS"
]) }),
introspection: z.object({
method: z.enum(["GET", "POST"]).optional(),
schemaDescription: z.boolean().optional()
})
});
const Settings = () => {
let { settings: t, setSettings: n } = useLaboratory(), i = useForm({
defaultValues: t,
validators: { onSubmit: settingsFormSchema },
onSubmit: ({ value: t }) => {
n(t);
}
});
return /* @__PURE__ */ jsx("div", {
className: "bg-card size-full overflow-y-auto p-3",
children: /* @__PURE__ */ jsxs("form", {
id: "settings-form",
onSubmit: i.handleSubmit,
onChange: i.handleSubmit,
className: "mx-auto flex max-w-2xl flex-col gap-4",
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__ */ jsxs(FieldGroup, { children: [
/* @__PURE__ */ jsx(i.Field, {
name: "fetch.credentials",
children: (t) => {
let n = t.state.meta.isTouched && !t.state.meta.isValid;
return /* @__PURE__ */ jsxs(Field, {
"data-invalid": n,
children: [/* @__PURE__ */ jsx(FieldLabel, {
htmlFor: t.name,
children: "Credentials"
}), /* @__PURE__ */ jsxs(Select, {
name: t.name,
value: t.state.value,
onValueChange: (n) => t.handleChange(n),
children: [/* @__PURE__ */ jsx(SelectTrigger, {
id: t.name,
"aria-invalid": n,
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"
})
] })]
})]
});
}
}),
/* @__PURE__ */ jsx(i.Field, {
name: "fetch.timeout",
children: (t) => /* @__PURE__ */ jsxs(Field, { children: [/* @__PURE__ */ jsx(FieldLabel, {
htmlFor: t.name,
children: "Timeout"
}), /* @__PURE__ */ jsx(Input, {
type: "number",
name: t.name,
value: t.state.value ?? "",
onChange: (n) => t.handleChange(n.target.value === "" ? void 0 : Number(n.target.value))
})] })
}),
/* @__PURE__ */ jsx(i.Field, {
name: "fetch.retry",
children: (t) => /* @__PURE__ */ jsxs(Field, { children: [/* @__PURE__ */ jsx(FieldLabel, {
htmlFor: t.name,
children: "Retry"
}), /* @__PURE__ */ jsx(Input, {
type: "number",
name: t.name,
value: t.state.value ?? "",
onChange: (n) => t.handleChange(n.target.value === "" ? void 0 : Number(n.target.value))
})] })
}),
/* @__PURE__ */ jsx(i.Field, {
name: "fetch.useGETForQueries",
children: (t) => /* @__PURE__ */ jsxs(Field, {
className: "flex-row items-center",
children: [/* @__PURE__ */ jsx(Switch, {
className: "!w-8",
checked: t.state.value ?? !1,
onCheckedChange: t.handleChange
}), /* @__PURE__ */ jsx(FieldLabel, {
htmlFor: t.name,
children: "Use GET for queries"
})]
})
})
] }) })] }),
/* @__PURE__ */ jsxs(Card, { children: [/* @__PURE__ */ jsxs(CardHeader, { children: [/* @__PURE__ */ jsx(CardTitle, { children: "Subscriptions" }), /* @__PURE__ */ jsx(CardDescription, { children: "Configure the subscriptions options for the laboratory." })] }), /* @__PURE__ */ jsx(CardContent, { children: /* @__PURE__ */ jsx(FieldGroup, { children: /* @__PURE__ */ jsx(i.Field, {
name: "subscriptions.protocol",
children: (t) => {
let n = t.state.meta.isTouched && !t.state.meta.isValid;
return /* @__PURE__ */ jsxs(Field, {
"data-invalid": n,
children: [/* @__PURE__ */ jsx(FieldLabel, {
htmlFor: t.name,
children: "Protocol"
}), /* @__PURE__ */ jsxs(Select, {
name: t.name,
value: t.state.value,
onValueChange: (n) => t.handleChange(n),
children: [/* @__PURE__ */ jsx(SelectTrigger, {
id: t.name,
"aria-invalid": n,
children: /* @__PURE__ */ jsx(SelectValue, { placeholder: "Select protocol" })
}), /* @__PURE__ */ jsxs(SelectContent, { children: [
/* @__PURE__ */ jsx(SelectItem, {
value: "SSE",
children: "SSE"
}),
/* @__PURE__ */ jsx(SelectItem, {
value: "GRAPHQL_SSE",
children: "GRAPHQL_SSE"
}),
/* @__PURE__ */ jsx(SelectItem, {
value: "WS",
children: "WS"
}),
/* @__PURE__ */ jsx(SelectItem, {
value: "LEGACY_WS",
children: "LEGACY_WS"
})
] })]
})]
});
}
}) }) })] }),
/* @__PURE__ */ jsxs(Card, { children: [/* @__PURE__ */ jsxs(CardHeader, { children: [/* @__PURE__ */ jsx(CardTitle, { children: "Introspection" }), /* @__PURE__ */ jsx(CardDescription, { children: "Configure the introspection options for the laboratory." })] }), /* @__PURE__ */ jsx(CardContent, { children: /* @__PURE__ */ jsxs(FieldGroup, { children: [/* @__PURE__ */ jsx(i.Field, {
name: "introspection.method",
children: (t) => {
let n = t.state.meta.isTouched && !t.state.meta.isValid;
return /* @__PURE__ */ jsxs(Field, { children: [/* @__PURE__ */ jsx(FieldLabel, {
htmlFor: t.name,
children: "Method"
}), /* @__PURE__ */ jsxs(Select, {
name: t.name,
value: t.state.value,
onValueChange: (n) => t.handleChange(n),
children: [/* @__PURE__ */ jsx(SelectTrigger, {
id: t.name,
"aria-invalid": n,
children: /* @__PURE__ */ jsx(SelectValue, { placeholder: "Select method" })
}), /* @__PURE__ */ jsxs(SelectContent, { children: [/* @__PURE__ */ jsx(SelectItem, {
value: "GET",
children: "GET"
}), /* @__PURE__ */ jsx(SelectItem, {
value: "POST",
children: "POST"
})] })]
})] });
}
}), /* @__PURE__ */ jsx(i.Field, {
name: "introspection.schemaDescription",
children: (t) => /* @__PURE__ */ jsxs(Field, {
className: "flex-row items-center",
children: [/* @__PURE__ */ jsx(Switch, {
className: "!w-8",
checked: t.state.value ?? !1,
onCheckedChange: t.handleChange
}), /* @__PURE__ */ jsx(FieldLabel, {
htmlFor: t.name,
children: "Schema description"
})]
})
})] }) })] })
]
})
});
};
function ContextMenu({ ...t }) {
return /* @__PURE__ */ jsx(Root2$3, {
"data-slot": "context-menu",
...t
});
}
function ContextMenuTrigger({ ...t }) {
return /* @__PURE__ */ jsx(Trigger$2, {
"data-slot": "context-menu-trigger",
...t
});
}
function ContextMenuContent({ className: t,...n }) {
let [i, a] = useState(null);
return /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(Portal2, {
container: i,
children: /* @__PURE__ */ jsx(Content2$1, {
"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", t),
...n
})
}), /* @__PURE__ */ jsx("div", {
ref: a,
style: { display: "contents" }
})] });
}
function ContextMenuItem({ className: t, inset: n, variant: i = "default",...a }) {
return /* @__PURE__ */ jsx(Item2$1, {
"data-slot": "context-menu-item",
"data-inset": n,
"data-variant": i,
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", t),
...a
});
}
function useCombinedRefs() {
var t = [...arguments];
return useMemo(() => (n) => {
t.forEach((t) => t(n));
}, t);
}
var canUseDOM = typeof window < "u" && window.document !== void 0 && window.document.createElement !== void 0;
function isWindow(t) {
let n = Object.prototype.toString.call(t);
return n === "[object Window]" || n === "[object global]";
}
function isNode(t) {
return "nodeType" in t;
}
function getWindow(t) {
return t ? isWindow(t) ? t : isNode(t) ? t.ownerDocument?.defaultView ?? window : window : window;
}
function isDocument(t) {
let { Document: n } = getWindow(t);
return t instanceof n;
}
function isHTMLElement(t) {
return isWindow(t) ? !1 : t instanceof getWindow(t).HTMLElement;
}
function isSVGElement(t) {
return t instanceof getWindow(t).SVGElement;
}
function getOwnerDocument(t) {
return t ? isWindow(t) ? t.document : isNode(t) ? isDocument(t) ? t : isHTMLElement(t) || isSVGElement(t) ? t.ownerDocument : document : document : document;
}
var useIsomorphicLayoutEffect = canUseDOM ? useLayoutEffect : useEffect;
function useEvent(t) {
let n = useRef(t);
return useIsomorphicLayoutEffect(() => {
n.current = t;
}), useCallback(function() {
var t = [...arguments];
return n.current == null ? void 0 : n.current(...t);
}, []);
}
function useInterval() {
let t = useRef(null), n = useCallback((n, i) => {
t.current = setInterval(n, i);
}, []), i = useCallback(() => {
t.current !== null && (clearInterval(t.current), t.current = null);
}, []);
return [n, i];
}
function useLatestValue(t, n) {
n === void 0 && (n = [t]);
let i = useRef(t);
return useIsomorphicLayoutEffect(() => {
i.current !== t && (i.current = t);
}, n), i;
}
function useLazyMemo(t, n) {
let i = useRef();
return useMemo(() => {
let n = t(i.current);
return i.current = n, n;
}, [...n]);
}
function useNodeRef(t) {
let n = useEvent(t), i = useRef(null), a = useCallback((t) => {
t !== i.current && n?.(t, i.current), i.current = t;
}, []);
return [i, a];
}
function usePrevious(t) {
let n = useRef();
return useEffect(() => {
n.current = t;
}, [t]), n.current;
}
var ids = {};
function useUniqueId(t, n) {
return useMemo(() => {
if (n) return n;
let i = ids[t] == null ? 0 : ids[t] + 1;
return ids[t] = i, t + "-" + i;
}, [t, n]);
}
function createAdjustmentFn(t) {
return function(n) {
return [...arguments].slice(1).reduce((n, i) => {
let a = Object.entries(i);
for (let [i, o] of a) {
let a = n[i];
a != null && (n[i] = a + t * o);
}
return n;
}, { ...n });
};
}
var add = /* @__PURE__ */ createAdjustmentFn(1), subtract = /* @__PURE__ */ createAdjustmentFn(-1);
function hasViewportRelativeCoordinates(t) {
return "clientX" in t && "clientY" in t;
}
function isKeyboardEvent(t) {
if (!t) return !1;
let { KeyboardEvent: n } = getWindow(t.target);
return n && t instanceof n;
}
function isTouchEvent(t) {
if (!t) return !1;
let { TouchEvent: n } = getWindow(t.target);
return n && t instanceof n;
}
function getEventCoordinates(t) {
if (isTouchEvent(t)) {
if (t.touches && t.touches.length) {
let { clientX: n, clientY: i } = t.touches[0];
return {
x: n,
y: i
};
} else if (t.changedTouches && t.changedTouches.length) {
let { clientX: n, clientY: i } = t.changedTouches[0];
return {
x: n,
y: i
};
}
}
return hasViewportRelativeCoordinates(t) ? {
x: t.clientX,
y: t.clientY
} : null;
}
var CSS$1 = /* @__PURE__ */ Object.freeze({
Translate: { toString(t) {
if (!t) return;
let { x: n, y: i } = t;
return "translate3d(" + (n ? Math.round(n) : 0) + "px, " + (i ? Math.round(i) : 0) + "px, 0)";
} },
Scale: { toString(t) {
if (!t) return;
let { scaleX: n, scaleY: i } = t;
return "scaleX(" + n + ") scaleY(" + i + ")";
} },
Transform: { toString(t) {
if (t) return [CSS$1.Translate.toString(t), CSS$1.Scale.toString(t)].join(" ");
} },
Transition: { toString(t) {
let { property: n, duration: i, easing: a } = t;
return n + " " + i + "ms " + a;
} }
}), SELECTOR = "a,frame,iframe,input:not([type=hidden]):not(:disabled),select:not(:disabled),textarea:not(:disabled),button:not(:disabled),*[tabindex]";
function findFirstFocusableNode(t) {
return t.matches(SELECTOR) ? t : t.querySelector(SELECTOR);
}
var hiddenStyles = { display: "none" };
function HiddenText(t) {
let { id: n, value: i } = t;
return React.createElement("div", {
id: n,
style: hiddenStyles
}, i);
}
function LiveRegion(t) {
let { id: n, announcement: i, ariaLiveType: a = "assertive" } = t;
return React.createElement("div", {
id: n,
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": a,
"aria-atomic": !0
}, i);
}
function useAnnouncement() {
let [t, n] = useState("");
return {
announce: useCallback((t) => {
t != null && n(t);
}, []),
announcement: t
};
}
var DndMonitorContext = /* @__PURE__ */ createContext(null);
function useDndMonitor(t) {
let n = useContext(DndMonitorContext);
useEffect(() => {
if (!n) throw Error("useDndMonitor must be used within a children of <DndContext>");
return n(t);
}, [t, n]);
}
function useDndMonitorProvider() {
let [t] = useState(() => /* @__PURE__ */ new Set()), n = useCallback((n) => (t.add(n), () => t.delete(n)), [t]);
return [useCallback((n) => {
let { type: i, event: a } = n;
t.forEach((t) => t[i]?.call(t, a));
}, [t]), n];
}
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(t) {
let { active: n } = t;
return "Picked up draggable item " + n.id + ".";
},
onDragOver(t) {
let { active: n, over: i } = t;
return i ? "Draggable item " + n.id + " was moved over droppable area " + i.id + "." : "Draggable item " + n.id + " is no longer over a droppable area.";
},
onDragEnd(t) {
let { active: n, over: i } = t;
return i ? "Draggable item " + n.id + " was dropped over droppable area " + i.id : "Draggable item " + n.id + " was dropped.";
},
onDragCancel(t) {
let { active: n } = t;
return "Dragging was cancelled. Draggable item " + n.id + " was dropped.";
}
};
function Accessibility(t) {
let { announcements: n = defaultAnnouncements, container: i, hiddenTextDescribedById: a, screenReaderInstructions: o = defaultScreenReaderInstructions } = t, { announce: s, announcement: c } = useAnnouncement(), d = useUniqueId("DndLiveRegion"), [f, g] = useState(!1);
if (useEffect(() => {
g(!0);
}, []), useDndMonitor(useMemo(() => ({
onDragStart(t) {
let { active: i } = t;
s(n.onDragStart({ active: i }));
},
onDragMove(t) {
let { active: i, over: a } = t;
n.onDragMove && s(n.onDragMove({
active: i,
over: a
}));
},
onDragOver(t) {
let { active: i, over: a } = t;
s(n.onDragOver({
active: i,
over: a
}));
},
onDragEnd(t) {
let { active: i, over: a } = t;
s(n.onDragEnd({
active: i,
over: a
}));
},
onDragCancel(t) {
let { active: i, over: a } = t;
s(n.onDragCancel({
active: i,
over: a
}));
}
}), [s, n])), !f) return null;
let b = React.createElement(React.Fragment, null, React.createElement(HiddenText, {
id: a,
value: o.draggable
}), React.createElement(LiveRegion, {
id: d,
announcement: c
}));
return i ? createPortal(b, i) : b;
}
var Action;
(function(t) {
t.DragStart = "dragStart", t.DragMove = "dragMove", t.DragEnd = "dragEnd", t.DragCancel = "dragCancel", t.DragOver = "dragOver", t.RegisterDroppable = "registerDroppable", t.SetDroppableDisabled = "setDroppableDisabled", t.UnregisterDroppable = "unregisterDroppable";
})(Action ||= {});
function noop() {}
function useSensor(t, n) {
return useMemo(() => ({
sensor: t,
options: n ?? {}
}), [t, n]);
}
function useSensors() {
var t = [...arguments];
return useMemo(() => [...t].filter((t) => t != null), [...t]);
}
var defaultCoordinates = /* @__PURE__ */ Object.freeze({
x: 0,
y: 0
});
function distanceBetween(t, n) {
return Math.sqrt((t.x - n.x) ** 2 + (t.y - n.y) ** 2);
}
function getRelativeTransformOrigin(t, n) {
let i = getEventCoordinates(t);
if (!i) return "0 0";
let a = {
x: (i.x - n.left) / n.width * 100,
y: (i.y - n.top) / n.height * 100
};
return a.x + "% " + a.y + "%";
}
function sortCollisionsAsc(t, n) {
let { data: { value: i } } = t, { data: { value: a } } = n;
return i - a;
}
function sortCollisionsDesc(t, n) {
let { data: { value: i } } = t, { data: { value: a } } = n;
return a - i;
}
function cornersOfRectangle(t) {
let { left: n, top: i, height: a, width: o } = t;
return [
{
x: n,
y: i
},
{
x: n + o,
y: i
},
{
x: n,
y: i + a
},
{
x: n + o,
y: i + a
}
];
}
function getFirstCollision(t, n) {
if (!t || t.length === 0) return null;
let [i] = t;
return n ? i[n] : i;
}
function centerOfRectangle(t, n, i) {
return n === void 0 && (n = t.left), i === void 0 && (i = t.top), {
x: n + t.width * .5,
y: i + t.height * .5
};
}
var closestCenter = (t) => {
let { collisionRect: n, droppableRects: i, droppableContainers: a } = t, o = centerOfRectangle(n, n.left, n.top), s = [];
for (let t of a) {
let { id: n } = t, a = i.get(n);
if (a) {
let i = distanceBetween(centerOfRectangle(a), o);
s.push({
id: n,
data: {
droppableContainer: t,
value: i
}
});
}
}
return s.sort(sortCollisionsAsc);
}, closestCorners = (t) => {
let { collisionRect: n, droppableRects: i, droppableContainers: a } = t, o = cornersOfRectangle(n), s = [];
for (let t of a) {
let { id: n } = t, a = i.get(n);
if (a) {
let i = cornersOfRectangle(a), c = o.reduce((t, n, a) => t + distanceBetween(i[a], n), 0), d = Number((c / 4).toFixed(4));
s.push({
id: n,
data: {
droppableContainer: t,
value: d
}
});
}
}
return s.sort(sortCollisionsAsc);
};
function getIntersectionRatio(t, n) {
let i = Math.max(n.top, t.top), a = Math.max(n.left, t.left), o = Math.min(n.left + n.width, t.left + t.width), s = Math.min(n.top + n.height, t.top + t.height), c = o - a, d = s - i;
if (a < o && i < s) {
let i = n.width * n.height, a = t.width * t.height, o = c * d, s = o / (i + a - o);
return Number(s.toFixed(4));
}
return 0;
}
var rectIntersection = (t) => {
let { collisionRect: n, droppableRects: i, droppableContainers: a } = t, o = [];
for (let t of a) {
let { id: a } = t, s = i.get(a);
if (s) {
let i = getIntersectionRatio(s, n);
i > 0 && o.push({
id: a,
data: {
droppableContainer: t,
value: i
}
});
}
}
return o.sort(sortCollisionsDesc);
};
function adjustScale(t, n, i) {
return {
...t,
scaleX: n && i ? n.width / i.width : 1,
scaleY: n && i ? n.height / i.height : 1
};
}
function getRectDelta(t, n) {
return t && n ? {
x: t.left - n.left,
y: t.top - n.top
} : defaultCoordinates;
}
function createRectAdjustmentFn(t) {
return function(n) {
return [...arguments].slice(1).reduce((n, i) => ({
...n,
top: n.top + t * i.y,
bottom: n.bottom + t * i.y,
left: n.left + t * i.x,
right: n.right + t * i.x
}), { ...n });
};
}
var getAdjustedRect = /* @__PURE__ */ createRectAdjustmentFn(1);
function parseTransform(t) {
if (t.startsWith("matrix3d(")) {
let n = t.slice(9, -1).split(/, /);
return {
x: +n[12],
y: +n[13],
scaleX: +n[0],
scaleY: +n[5]
};
} else if (t.startsWith("matrix(")) {
let n = t.slice(7, -1).split(/, /);
return {
x: +n[4],
y: +n[5],
scaleX: +n[0],
scaleY: +n[3]
};
}
return null;
}
function inverseTransform(t, n, i) {
let a = parseTransform(n);
if (!a) return t;
let { scaleX: o, scaleY: s, x: c, y: d } = a, f = t.left - c - (1 - o) * parseFloat(i), g = t.top - d - (1 - s) * parseFloat(i.slice(i.indexOf(" ") + 1)), b = o ? t.width / o : t.width, x = s ? t.height / s : t.height;
return {
width: b,
height: x,
top: g,
right: f + b,
bottom: g + x,
left: f
};
}
var defaultOptions = { ignoreTransform: !1 };
function getClientRect(t, n) {
n === void 0 && (n = defaultOptions);
let i = t.getBoundingClientRect();
if (n.ignoreTransform) {
let { transform: n, transformOrigin: a } = getWindow(t).getComputedStyle(t);
n && (i = inverseTransform(i, n, a));
}
let { top: a, left: o, width: s, height: c, bottom: d, right: f } = i;
return {
top: a,
left: o,
width: s,
height: c,
bottom: d,
right: f
};
}
function getTransformAgnosticClientRect(t) {
return getClientRect(t, { ignoreTransform: !0 });
}
function getWindowClientRect(t) {
let n = t.innerWidth, i = t.innerHeight;
return {
top: 0,
left: 0,
right: n,
bottom: i,
width: n,
height: i
};
}
function isFixed(t, n) {
return n === void 0 && (n = getWindow(t).getComputedStyle(t)), n.position === "fixed";
}
function isScrollable(t, n) {
n === void 0 && (n = getWindow(t).getComputedStyle(t));
let i = /(auto|scroll|overlay)/;
return [
"overflow",
"overflowX",
"overflowY"
].some((t) => {
let a = n[t];
return typeof a == "string" ? i.test(a) : !1;
});
}
function getScrollableAncestors(t, n) {
let i = [];
function a(o) {
if (n != null && i.length >= n || !o) return i;
if (isDocument(o) && o.scrollingElement != null && !i.includes(o.scrollingElement)) return i.push(o.scrollingElement), i;
if (!isHTMLElement(o) || isSVGElement(o) || i.includes(o)) return i;
let s = getWindow(t).getComputedStyle(o);
return o !== t && isScrollable(o, s) && i.push(o), isFixed(o, s) ? i : a(o.parentNode);
}
return t ? a(t) : i;
}
function getFirstScrollableAncestor(t) {
let [n] = getScrollableAncestors(t, 1);
return n ?? null;
}
function getScrollableElement(t) {
return !canUseDOM || !t ? null : isWindow(t) ? t : isNode(t) ? isDocument(t) || t === getOwnerDocument(t).scrollingElement ? window : isHTMLElement(t) ? t : null : null;
}
function getScrollXCoordinate(t) {
return isWindow(t) ? t.scrollX : t.scrollLeft;
}
function getScrollYCoordinate(t) {
return isWindow(t) ? t.scrollY : t.scrollTop;
}
function getScrollCoordinates(t) {
return {
x: getScrollXCoordinate(t),
y: getScrollYCoordinate(t)
};
}
var Direction;
(function(t) {
t[t.Forward = 1] = "Forward", t[t.Backward = -1] = "Backward";
})(Direction ||= {});
function isDocumentScrollingElement(t) {
return !canUseDOM || !t ? !1 : t === document.scrollingElement;
}
function getScrollPosition(t) {
let n = {
x: 0,
y: 0
}, i = isDocumentScrollingElement(t) ? {
height: window.innerHeight,
width: window.innerWidth
} : {
height: t.clientHeight,
width: t.clientWidth
}, a = {
x: t.scrollWidth - i.width,
y: t.scrollHeight - i.height
}, o = t.scrollTop <= n.y, s = t.scrollLeft <= n.x, c = t.scrollTop >= a.y, d = t.scrollLeft >= a.x;
return {
isTop: o,
isLeft: s,
isBottom: c,
isRight: d,
maxScroll: a,
minScroll: n
};
}
var defaultThreshold = {
x: .2,
y: .2
};
function getScrollDirectionAndSpeed(t, n, i, a, o) {
let { top: s, left: c, right: d, bottom: f } = i;
a === void 0 && (a = 10), o === void 0 && (o = defaultThreshold);
let { isTop: g, isBottom: b, isLeft: x, isRight: S } = getScrollPosition(t), C = {
x: 0,
y: 0
}, w = {
x: 0,
y: 0
}, E = {
height: n.height * o.y,
width: n.width * o.x
};
return !g && s <= n.top + E.height ? (C.y = Direction.Backward, w.y = a * Math.abs((n.top + E.height - s) / E.height)) : !b && f >= n.bottom - E.height && (C.y = Direction.Forward, w.y = a * Math.abs((n.bottom - E.height - f) / E.height)), !S && d >= n.right - E.width ? (C.x = Direction.Forward, w.x = a * Math.abs((n.right - E.width - d) / E.width)) : !x && c <= n.left + E.width && (C.x = Direction.Backward, w.x = a * Math.abs((n.left + E.width - c) / E.width)), {
direction: C,
speed: w
};
}
function getScrollElementRect(t) {
if (t === document.scrollingElement) {
let { innerWidth: t, innerHeight: n } = window;
return {
top: 0,
left: 0,
right: t,
bottom: n,
width: t,
height: n
};
}
let { top: n, left: i, right: a, bottom: o } = t.getBoundingClientRect();
return {
top: n,
left: i,
right: a,
bottom: o,
width: t.clientWidth,
height: t.clientHeight
};
}
function getScrollOffsets(t) {
return t.reduce((t, n) => add(t, getScrollCoordinates(n)), defaultCoordinates);
}
function getScrollXOffset(t) {
return t.reduce((t, n) => t + getScrollXCoordinate(n), 0);
}
function getScrollYOffset(t) {
return t.reduce((t, n) => t + getScrollYCoordinate(n), 0);
}
function scrollIntoViewIfNeeded(t, n) {
if (n === void 0 && (n = getClientRect), !t) return;
let { top: i, left: a, bottom: o, right: s } = n(t);
getFirstScrollableAncestor(t) && (o <= 0 || s <= 0 || i >= window.innerHeight || a >= window.innerWidth) && t.scrollIntoView({
block: "center",
inline: "center"
});
}
var properties = [[
"x",
["left", "right"],
getScrollXOffset
], [
"y",
["top", "bottom"],
getScrollYOffset
]], Rect = class {
constructor(t, n) {
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 i = getScrollableAncestors(n), a = getScrollOffsets(i);
this.rect = { ...t }, this.width = t.width, this.height = t.height;
for (let [t, n, o] of properties) for (let s of n) Object.defineProperty(this, s, {
get: () => {
let n = o(i), c = a[t] - n;
return this.rect[s] + c;
},
enumerable: !0
});
Object.defineProperty(this, "rect", { enumerable: !1 });
}
}, Listeners = class {
constructor(t) {
this.target = void 0, this.listeners = [], this.removeAll = () => {
this.listeners.forEach((t) => this.target?.removeEventListener(...t));
}, this.target = t;
}
add(t, n, i) {
var a;
(a = this.target) == null || a.addEventListener(t, n, i), this.listeners.push([
t,
n,
i
]);
}
};
function getEventListenerTarget(t) {
let { EventTarget: n } = getWindow(t);
return t instanceof n ? t : getOwnerDocument(t);
}
function hasExceededDistance(t, n) {
let i = Math.abs(t.x), a = Math.abs(t.y);
return typeof n == "number" ? Math.sqrt(i ** 2 + a ** 2) > n : "x" in n && "y" in n ? i > n.x && a > n.y : "x" in n ? i > n.x : "y" in n ? a > n.y : !1;
}
var EventName;
(function(t) {
t.Click = "click", t.DragStart = "dragstart", t.Keydown = "keydown", t.ContextMenu = "contextmenu", t.Resize = "resize", t.SelectionChange = "selectionchange", t.VisibilityChange = "visibilitychange";
})(EventName ||= {});
function preventDefault(t) {
t.preventDefault();
}
function stopPropagation(t) {
t.stopPropagation();
}
var KeyboardCode;
(function(t) {
t.Space = "Space", t.Down = "ArrowDown", t.Right = "ArrowRight", t.Left = "ArrowLeft", t.Up = "ArrowUp", t.Esc = "Escape", t.Enter = "Enter", t.Tab = "Tab";
})(KeyboardCode ||= {});
var defaultKeyboardCodes = {
start: [KeyboardCode.Space, KeyboardCode.Enter],
cancel: [KeyboardCode.Esc],
end: [
KeyboardCode.Space,
KeyboardCode.Enter,
KeyboardCode.Tab
]
}, defaultKeyboardCoordinateGetter = (t, n) => {
let { currentCoordinates: i } = n;
switch (t.code) {
case KeyboardCode.Right: return {
...i,
x: i.x + 25
};
case KeyboardCode.Left: return {
...i,
x: i.x - 25
};
case KeyboardCode.Down: return {
...i,
y: i.y + 25
};
case KeyboardCode.Up: return {
...i,
y: i.y - 25
};
}
}, KeyboardSensor = class {
constructor(t) {
this.props = void 0, this.autoScrollEnabled = !1, this.referenceCoordinates = void 0, this.listeners = void 0, this.windowListeners = void 0, this.props = t;
let { event: { target: n } } = t;
this.props = t, this.listeners = new Listeners(getOwnerDocument(n)), this.windowListeners = new Listeners(getWindow(n)), 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: t, onStart: n } = this.props, i = t.node.current;
i && scrollIntoViewIfNeeded(i), n(defaultCoordinates);
}
handleKeyDown(t) {
if (isKeyboardEvent(t)) {
let { active: n, context: i, options: a } = this.props, { keyboardCodes: o = defaultKeyboardCodes, coordinateGetter: s = defaultKeyboardCoordinateGetter, scrollBehavior: c = "smooth" } = a, { code: d } = t;
if (o.end.includes(d)) {
this.handleEnd(t);
return;
}
if (o.cancel.includes(d)) {
this.handleCancel(t);
return;
}
let { collisionRect: f } = i.current, g = f ? {
x: f.left,
y: f.top
} : defaultCoordinates;
this.referenceCoordinates ||= g;
let b = s(t, {
active: n,
context: i.current,
currentCoordinates: g
});
if (b) {
let n = subtract(b, g), a = {
x: 0,
y: 0
}, { scrollableAncestors: o } = i.current;
for (let i of o) {
let o = t.code, { isTop: s, isRight: d, isLeft: f, isBottom: g, maxScroll: x, minScroll: S } = getScrollPosition(i), C = getScrollElementRect(i), w = {
x: Math.min(o === KeyboardCode.Right ? C.right - C.width / 2 : C.right, Math.max(o === KeyboardCode.Right ? C.left : C.left + C.width / 2, b.x)),
y: Math.min(o === KeyboardCode.Down ? C.bottom - C.height / 2 : C.bottom, Math.max(o === KeyboardCode.Down ? C.top : C.top + C.height / 2, b.y))
}, E = o === KeyboardCode.Right && !d || o === KeyboardCode.Left && !f, O = o === KeyboardCode.Down && !g || o === KeyboardCode.Up && !s;
if (E && w.x !== b.x) {
let t = i.scrollLeft + n.x, s = o === KeyboardCode.Right && t <= x.x || o === KeyboardCode.Left && t >= S.x;
if (s && !n.y) {
i.scrollTo({
left: t,
behavior: c
});
return;
}
s ? a.x = i.scrollLeft - t : a.x = o === KeyboardCode.Right ? i.scrollLeft - x.x : i.scrollLeft - S.x, a.x && i.scrollBy({
left: -a.x,
behavior: c
});
break;
} else if (O && w.y !== b.y) {
let t = i.scrollTop + n.y, s = o === KeyboardCode.Down && t <= x.y || o === KeyboardCode.Up && t >= S.y;
if (s && !n.x) {
i.scrollTo({
top: t,
behavior: c
});
return;
}
s ? a.y = i.scrollTop - t : a.y = o === KeyboardCode.Down ? i.scrollTop - x.y : i.scrollTop - S.y, a.y && i.scrollBy({
top: -a.y,
behavior: c
});
break;
}
}
this.handleMove(t, add(subtract(b, this.referenceCoordinates), a));
}
}
}
handleMove(t, n) {
let { onMove: i } = this.props;
t.preventDefault(), i(n);
}
handleEnd(t) {
let { onEnd: n } = this.props;
t.preventDefault(), this.detach(), n();
}
handleCancel(t) {
let { onCancel: n } = this.props;
t.preventDefault(), this.detach(), n();
}
detach() {
this.listeners.removeAll(), this.windowListeners.removeAll();
}
};
KeyboardSensor.activators = [{
eventName: "onKeyDown",
handler: (t, n, i) => {
let { keyboardCodes: a = defaultKeyboardCodes, onActivation: o } = n, { active: s } = i, { code: c } = t.nativeEvent;
if (a.start.includes(c)) {
let n = s.activatorNode.current;
return n && t.target !== n ? !1 : (t.preventDefault(), o?.({ event: t.nativeEvent }), !0);
}
return !1;
}
}];
function isDistanceConstraint(t) {
return !!(t && "distance" in t);
}
function isDelayConstraint(t) {
return !!(t && "delay" in t);
}
var AbstractPointerSensor = class {
constructor(t, n, i) {
i === void 0 && (i = getEventListenerTarget(t.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 = t, this.events = n;
let { event: a } = t, { target: o } = a;
this.props = t, this.events = n, this.document = getOwnerDocument(o), this.documentListeners = new Listeners(this.document), this.listeners = new Listeners(i), this.windowListeners = new Listeners(getWindow(o)), this.initialCoordinates = getEventCoordinates(a) ?? 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: t, props: { options: { activationConstraint: n, bypassActivationConstraint: i } } } = this;
if (this.listeners.add(t.move.name, this.handleMove, { passive: !1 }), this.listeners.add(t.end.name, this.handleEnd), t.cancel && this.listeners.add(t.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), n) {
if (i != null && i({
event: this.props.event,
activeNode: this.props.activeNode,
options: this.props.options
})) return this.handleStart();
if (isDelayConstraint(n)) {
this.timeoutId = setTimeout(this.handleStart, n.delay), this.handlePending(n);
return;
}
if (isDistanceConstraint(n)) {
this.handlePending(n);
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(t, n) {
let { active: i, onPending: a } = this.props;
a(i, t, this.initialCoordinates, n);
}
handleStart() {
let { initialCoordinates: t } = this, { onStart: n } = this.props;
t && (this.activated = !0, this.documentListeners.add(EventName.Click, stopPropagation, { capture: !0 }), this.removeTextSelection(), this.documentListeners.add(EventName.SelectionChange, this.removeTextSelection), n(t));
}
handleMove(t) {
let { activated: n, initialCoordinates: i, props: a } = this, { onMove: o, options: { activationConstraint: s } } = a;
if (!i) return;
let c = getEventCoordinates(t) ?? defaultCoordinates, d = subtract(i, c);
if (!n && s) {
if (isDistanceConstraint(s)) {
if (s.tolerance != null && hasExceededDistance(d, s.tolerance)) return this.handleCancel();
if (hasExceededDistance(d, s.distance)) return this.handleStart();
}
if (isDelayConstraint(s) && hasExceededDistance(d, s.tolerance)) return this.handleCancel();
this.handlePending(s, d);
return;
}
t.cancelable && t.preventDefault(), o(c);
}
handleEnd() {
let { onAbort: t, onEnd: n } = this.props;
this.detach(), this.activated || t(this.props.active), n();
}
handleCancel() {
let { onAbort: t, onCancel: n } = this.props;
this.detach(), this.activated || t(this.props.active), n();
}
handleKeydown(t) {
t.code === KeyboardCode.Esc && this.handleCancel();
}
removeTextSelection() {
var t;
(t = this.document.getSelection()) == null || t.removeAllRanges();
}
}, events = {
cancel: { name: "pointercancel" },
move: { name: "pointermove" },
end: { name: "pointerup" }
}, PointerSensor = class extends AbstractPointerSensor {
constructor(t) {
let { event: n } = t, i = getOwnerDocument(n.target);
super(t, events, i);
}
};
PointerSensor.activators = [{
eventName: "onPointerDown",
handler: (t, n) => {
let { nativeEvent: i } = t, { onActivation: a } = n;
return !i.isPrimary || i.button !== 0 ? !1 : (a?.({ event: i }), !0);
}
}];
var events$1 = {
move: { name: "mousemove" },
end: { name: "mouseup" }
}, MouseButton;
(function(t) {
t[t.RightClick = 2] = "RightClick";
})(MouseButton ||= {});
var MouseSensor = class extends AbstractPointerSensor {
constructor(t) {
super(t, events$1, getOwnerDocument(t.event.target));
}
};
MouseSensor.activators = [{
eventName: "onMouseDown",
handler: (t, n) => {
let { nativeEvent: i } = t, { onActivation: a } = n;
return i.button === MouseButton.RightClick ? !1 : (a?.({ event: i }), !0);
}
}];
var events$2 = {
cancel: { name: "touchcancel" },
move: { name: "touchmove" },
end: { name: "touchend" }
}, TouchSensor = class extends AbstractPointerSensor {
constructor(t) {
super(t, events$2);
}
static setup() {
return window.addEventListener(events$2.move.name, t, {
capture: !1,
passive: !1
}), function() {
window.removeEventListener(events$2.move.name, t);
};
function t() {}
}
};
TouchSensor.activators = [{
eventName: "onTouchStart",
handler: (t, n) => {
let { nativeEvent: i } = t, { onActivation: a } = n, { touches: o } = i;
return o.length > 1 ? !1 : (a?.({ event: i }), !0);
}
}];
var AutoScrollActivator;
(function(t) {
t[t.Pointer = 0] = "Pointer", t[t.DraggableRect = 1] = "DraggableRect";
})(AutoScrollActivator ||= {});
var TraversalOrder;
(function(t) {
t[t.TreeOrder = 0] = "TreeOrder", t[t.ReversedTreeOrder = 1] = "ReversedTreeOrder";
})(TraversalOrder ||= {});
function useAutoScroller(t) {
let { acceleration: n, activator: i = AutoScrollActivator.Pointer, canScroll: a, draggingRect: o, enabled: s, interval: c = 5, order: d = TraversalOrder.TreeOrder, pointerCoordinates: f, scrollableAncestors: g, scrollableAncestorRects: b, delta: x, threshold: S } = t, C = useScrollIntent({
delta: x,
disabled: !s
}), [w, E] = useInterval(), O = useRef({
x: 0,
y: 0
}), A = useRef({
x: 0,
y: 0
}), M = useMemo(() => {
switch (i) {
case AutoScrollActivator.Pointer: return f ? {
top: f.y,
bottom: f.y,
left: f.x,
right: f.x
} : null;
case AutoScrollActivator.DraggableRect: return o;
}
}, [
i,
o,
f
]), F = useRef(null), I = useCallback(() => {
let t = F.current;
if (!t) return;
let n = O.current.x * A.current.x, i = O.current.y * A.current.y;
t.scrollBy(n, i);
}, []), R = useMemo(() => d === TraversalOrder.TreeOrder ? [...g].reverse() : g, [d, g]);
useEffect(() => {
if (!s || !g.length || !M) {
E();
return;
}
for (let t of R) {
if (a?.(t) === !1) continue;
let i = g.indexOf(t), o = b[i];
if (!o) continue;
let { direction: s, speed: d } = getScrollDirectionAndSpeed(t, o, M, n, S);
for (let t of ["x", "y"]) C[t][s[t]] || (d[t] = 0, s[t] = 0);
if (d.x > 0 || d.y > 0) {
E(), F.current = t, w(I, c), O.current = d, A.current = s;
return;
}
}
O.current = {
x: 0,
y: 0
}, A.current = {
x: 0,
y: 0
}, E();
}, [
n,
I,
a,
E,
s,
c,
JSON.stringify(M),
JSON.stringify(C),
w,
g,
R,
b,
JSON.stringify(S)
]);
}
var defaultScrollIntent = {
x: {
[Direction.Backward]: !1,
[Direction.Forward]: !1
},
y: {
[Direction.Backward]: !1,
[Direction.Forward]: !1
}
};
function useScrollIntent(t) {
let { delta: n, disabled: i } = t, a = usePrevious(n);
return useLazyMemo((t) => {
if (i || !a || !t) return defaultScrollIntent;
let o = {
x: Math.sign(n.x - a.x),
y: Math.sign(n.y - a.y)
};
return {
x: {
[Direction.Backward]: t.x[Direction.Backward] || o.x === -1,
[Direction.Forward]: t.x[Direction.Forward] || o.x === 1
},
y: {
[Direction.Backward]: t.y[Direction.Backward] || o.y === -1,
[Direction.Forward]: t.y[Direction.Forward] || o.y === 1
}
};
}, [
i,
n,
a
]);
}
function useCachedNode(t, n) {
let i = n == null ? void 0 : t.get(n), a = i ? i.node.current : null;
return useLazyMemo((t) => n == null ? null : a ?? t ?? null, [a, n]);
}
function useCombineActivators(t, n) {
return useMemo(() => t.reduce((t, i) => {
let { sensor: a } = i, o = a.activators.map((t) => ({
eventName: t.eventName,
handler: n(t.handler, i)
}));
return [...t, ...o];
}, []), [t, n]);
}
var MeasuringStrategy;
(function(t) {
t[t.Always = 0] = "Always", t[t.BeforeDragging = 1] = "BeforeDragging", t[t.WhileDragging = 2] = "WhileDragging";
})(MeasuringStrategy ||= {});
var MeasuringFrequency;
(function(t) {
t.Optimized = "optimized";
})(MeasuringFrequency ||= {});
var defaultValue = /* @__PURE__ */ new Map();
function useDroppableMeasuring(t, n) {
let { dragging: i, dependencies: a, config: o } = n, [s, c] = useState(null), { frequency: d, measure: f, strategy: g } = o, b = useRef(t), x = O(), S = useLatestValue(x), C = useCallback(function(t) {
t === void 0 && (t = []), !S.current && c((n) => n === null ? t : n.concat(t.filter((t) => !n.includes(t))));
}, [S]), w = useRef(null), E = useLazyMemo((n) => {
if (x && !i) return defaultValue;
if (!n || n === defaultValue || b.current !== t || s != null) {
let n = /* @__PURE__ */ new Map();
for (let i of t) {
if (!i) continue;
if (s && s.length > 0 && !s.includes(i.id) && i.rect.current) {
n.set(i.id, i.rect.current);
continue;
}
let t = i.node.current, a = t ? new Rect(f(t), t) : null;
i.rect.current = a, a && n.set(i.id, a);
}
return n;
}
return n;
}, [
t,
s,
i,
x,
f
]);
return useEffect(() => {
b.current = t;
}, [t]), useEffect(() => {
x || C();
}, [i, x]), useEffect(() => {
s && s.length > 0 && c(null);
}, [JSON.stringify(s)]), useEffect(() => {
x || typeof d != "number" || w.current !== null || (w.current = setTimeout(() => {
C(), w.current = null;
}, d));
}, [
d,
x,
C,
...a
]), {
droppableRects: E,
measureDroppableContainers: C,
measuringScheduled: s != null
};
function O() {
switch (g) {
case MeasuringStrategy.Always: return !1;
case MeasuringStrategy.BeforeDragging: return i;
default: return !i;
}
}
}
function useInitialValue(t, n) {
return useLazyMemo((i) => t ? i || (typeof n == "function" ? n(t) : t) : null, [n, t]);
}
function useInitialRect(t, n) {
return useInitialValue(t, n);
}
function useMutationObserver(t) {
let { callback: n, disabled: i } = t, a = useEvent(n), o = useMemo(() => {
if (i || typeof window > "u" || window.MutationObserver === void 0) return;
let { MutationObserver: t } = window;
return new t(a);
}, [a, i]);
return useEffect(() => () => o?.disconnect(), [o]), o;
}
function useResizeObserver(t) {
let { callback: n, disabled: i } = t, a = useEvent(n), o = useMemo(() => {
if (i || typeof window > "u" || window.ResizeObserver === void 0) return;
let { ResizeObserver: t } = window;
return new t(a);
}, [i]);
return useEffect(() => () => o?.disconnect(), [o]), o;
}
function defaultMeasure(t) {
return new Rect(getClientRect(t), t);
}
function useRect(t, n, i) {
n === void 0 && (n = defaultMeasure);
let [a, o] = useState(null);
function s() {
o((a) => {
if (!t) return null;
if (t.isConnected === !1) return a ?? i ?? null;
let o = n(t);
return JSON.stringify(a) === JSON.stringify(o) ? a : o;
});
}
let c = useMutationObserver({ callback(n) {
if (t) for (let i of n) {
let { type: n, target: a } = i;
if (n === "childList" && a instanceof HTMLElement && a.contains(t)) {
s();
break;
}
}
} }), d = useResizeObserver({ callback: s });
return useIsomorphicLayoutEffect(() => {
s(), t ? (d?.observe(t), c?.observe(document.body, {
childList: !0,
subtree: !0
})) : (d?.disconnect(), c?.disconnect());
}, [t]), a;
}
function useRectDelta(t) {
let n = useInitialValue(t);
return getRectDelta(t, n);
}
var defaultValue$1 = [];
function useScrollableAncestors(t) {
let n = useRef(t), i = useLazyMemo((i) => t ? i && i !== defaultValue$1 && t && n.current && t.parentNode === n.current.parentNode ? i : getScrollableAncestors(t) : defaultValue$1, [t]);
return useEffect(() => {
n.current = t;
}, [t]), i;
}
function useScrollOffsets(t) {
let [n, i] = useState(null), a = useRef(t), o = useCallback((t) => {
let n = getScrollableElement(t.target);
n && i((t) => t ? (t.set(n, getScrollCoordinates(n)), new Map(t)) : null);
}, []);
return useEffect(() => {
let n = a.current;
if (t !== n) {
s(n);
let c = t.map((t) => {
let n = getScrollableElement(t);
return n ? (n.addEventListener("scroll", o, { passive: !0 }), [n, getScrollCoordinates(n)]) : null;
}).filter((t) => t != null);
i(c.length ? new Map(c) : null), a.current = t;
}
return () => {
s(t), s(n);
};
function s(t) {
t.forEach((t) => {
getScrollableElement(t)?.removeEventListener("scroll", o);
});
}
}, [o, t]), useMemo(() => t.length ? n ? Array.from(n.values()).reduce((t, n) => add(t, n), defaultCoordinates) : getScrollOffsets(t) : defaultCoordinates, [t, n]);
}
function useScrollOffsetsDelta(t, n) {
n === void 0 && (n = []);
let i = useRef(null);
return useEffect(() => {
i.current = null;
}, n), useEffect(() => {
let n = t !== defaultCoordinates;
n && !i.current && (i.current = t), !n && i.current && (i.current = null);
}, [t]), i.current ? subtract(t, i.current) : defaultCoordinates;
}
function useSensorSetup(t) {
useEffect(() => {
if (!canUseDOM) return;
let n = t.map((t) => {
let { sensor: n } = t;
return n.setup == null ? void 0 : n.setup();
});
return () => {
for (let t of n) t?.();
};
}, t.map((t) => {
let { sensor: n } = t;
return n;
}));
}
function useSyntheticListeners(t, n) {
return useMemo(() => t.reduce((t, i) => {
let { eventName: a, handler: o } = i;
return t[a] = (t) => {
o(t, n);
}, t;
}, {}), [t, n]);
}
function useWindowRect(t) {
return useMemo(() => t ? getWindowClientRect(t) : null, [t]);
}
var defaultValue$2 = [];
function useRects(t, n) {
n === void 0 && (n = getClientRect);
let [i] = t, a = useWindowRect(i ? getWindow(i) : null), [o, s] = useState(defaultValue$2);
function c() {
s(() => t.length ? t.map((t) => isDocumentScrollingElement(t) ? a : new Rect(n(t), t)) : defaultValue$2);
}
let d = useResizeObserver({ callback: c });
return useIsomorphicLayoutEffect(() => {
d?.disconnect(), c(), t.forEach((t) => d?.observe(t));
}, [t]), o;
}
function getMeasurableNode(t) {
if (!t) return null;
if (t.children.length > 1) return t;
let n = t.children[0];
return isHTMLElement(n) ? n : t;
}
function useDragOverlayMeasuring(t) {
let { measure: n } = t, [i, a] = useState(null), o = useCallback((t) => {
for (let { target: i } of t) if (isHTMLElement(i)) {
a((t) => {
let a = n(i);
return t ? {
...t,
width: a.width,
height: a.height
} : a;
});
break;
}
}, [n]), s = useResizeObserver({ callback: o }), c = useCallback((t) => {
let i = getMeasurableNode(t);
s?.disconnect(), i && s?.observe(i), a(i ? n(i) : null);
}, [n, s]), [d, f] = useNodeRef(c);
return useMemo(() => ({
nodeRef: d,
rect: i,
setRef: f
}), [
i,
d,
f
]);
}
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(t) {
return t == null ? void 0 : super.get(t) ?? void 0;
}
toArray() {
return Array.from(this.values());
}
getEnabled() {
return this.toArray().filter((t) => {
let { disabled: n } = t;
return !n;
});
}
getNodeFor(t) {
return this.get(t)?.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(t, n) {
switch (n.type) {
case Action.DragStart: return {
...t,
draggable: {
...t.draggable,
initialCoordinates: n.initialCoordinates,
active: n.active
}
};
case Action.DragMove: return t.draggable.active == null ? t : {
...t,
draggable: {
...t.draggable,
translate: {
x: n.coordinates.x - t.draggable.initialCoordinates.x,
y: n.coordinates.y - t.draggable.initialCoordinates.y
}
}
};
case Action.DragEnd:
case Action.DragCancel: return {
...t,
draggable: {
...t.draggable,
active: null,
initialCoordinates: {
x: 0,
y: 0
},
translate: {
x: 0,
y: 0
}
}
};
case Action.RegisterDroppable: {
let { element: i } = n, { id: a } = i, o = new DroppableContainersMap(t.droppable.containers);
return o.set(a, i), {
...t,
droppable: {
...t.droppable,
containers: o
}
};
}
case Action.SetDroppableDisabled: {
let { id: i, key: a, disabled: o } = n, s = t.droppable.containers.get(i);
if (!s || a !== s.key) return t;
let c = new DroppableContainersMap(t.droppable.containers);
return c.set(i, {
...s,
disabled: o
}), {
...t,
droppable: {
...t.droppable,
containers: c
}
};
}
case Action.UnregisterDroppable: {
let { id: i, key: a } = n, o = t.droppable.containers.get(i);
if (!o || a !== o.key) return t;
let s = new DroppableContainersMap(t.droppable.containers);
return s.delete(i), {
...t,
droppable: {
...t.droppable,
containers: s
}
};
}
default: return t;
}
}
function RestoreFocus(t) {
let { disabled: n } = t, { active: i, activatorEvent: a, draggableNodes: o } = useContext(InternalContext), s = usePrevious(a), c = usePrevious(i?.id);
return useEffect(() => {
if (!n && !a && s && c != null) {
if (!isKeyboardEvent(s) || document.activeElement === s.target) return;
let t = o.get(c);
if (!t) return;
let { activatorNode: n, node: i } = t;
if (!n.current && !i.current) return;
requestAnimationFrame(() => {
for (let t of [n.current, i.current]) {
if (!t) continue;
let n = findFirstFocusableNode(t);
if (n) {
n.focus();
break;
}
}
});
}
}, [
a,
n,
o,
c,
s
]), null;
}
function applyModifiers(t, n) {
let { transform: i,...a } = n;
return t != null && t.length ? t.reduce((t, n) => n({
transform: t,
...a
}), i) : i;
}
function useMeasuringConfiguration(t) {
return useMemo(() => ({
draggable: {
...defaultMeasuringConfiguration.draggable,
...t?.draggable
},
droppable: {
...defaultMeasuringConfiguration.droppable,
...t?.droppable
},
dragOverlay: {
...defaultMeasuringConfiguration.dragOverlay,
...t?.dragOverlay
}
}), [
t?.draggable,
t?.droppable,
t?.dragOverlay
]);
}
function useLayoutShiftScrollCompensation(t) {
let { activeNode: n, measure: i, initialRect: a, config: o = !0 } = t, s = useRef(!1), { x: c, y: d } = typeof o == "boolean" ? {
x: o,
y: o
} : o;
useIsomorphicLayoutEffect(() => {
if (!c && !d || !n) {
s.current = !1;
return;
}
if (s.current || !a) return;
let t = n?.node.current;
if (!t || t.isConnected === !1) return;
let o = i(t), f = getRectDelta(o, a);
if (c || (f.x = 0), d || (f.y = 0), s.current = !0, Math.abs(f.x) > 0 || Math.abs(f.y) > 0) {
let n = getFirstScrollableAncestor(t);
n && n.scrollBy({
top: f.y,
left: f.x
});
}
}, [
n,
c,
d,
a,
i
]);
}
var ActiveDraggableContext = /* @__PURE__ */ createContext({
...defaultCoordinates,
scaleX: 1,
scaleY: 1
}), Status;
(function(t) {
t[t.Uninitialized = 0] = "Uninitialized", t[t.Initializing = 1] = "Initializing", t[t.Initialized = 2] = "Initialized";
})(Status ||= {});
var DndContext = /* @__PURE__ */ memo(function(t) {
let { id: n, accessibility: i, autoScroll: a = !0, children: o, sensors: s = defaultSensors, collisionDetection: c = rectIntersection, measuring: d, modifiers: f,...g } = t, [b, x] = useReducer(reducer, void 0, getInitialState), [S, C] = useDndMonitorProvider(), [w, E] = useState(Status.Uninitialized), O = w === Status.Initialized, { draggable: { active: A, nodes: M, translate: F }, droppable: { containers: I } } = b, R = A == null ? null : M.get(A), qA = useRef({
initial: null,
translated: null
}), V = useMemo(() => A == null ? null : {
id: A,
data: R?.data ?? defaultData,
rect: qA
}, [A, R]), q = useRef(null), [JA, YA] = useState(null), [XA, ZA] = useState(null), QA = useLatestValue(g, Object.values(g)), $A = useUniqueId("DndDescribedBy", n), ej = useMemo(() => I.getEnabled(), [I]), tj = useMeasuringConfiguration(d), { droppableRects: nj, measureDroppableContainers: rj, measuringScheduled: ij } = useDroppableMeasuring(ej, {
dragging: O,
dependencies: [F.x, F.y],
config: tj.droppable
}), aj = useCachedNode(M, A), oj = useMemo(() => XA ? getEventCoordinates(XA) : null, [XA]), sj = Bj(), cj = useInitialRect(aj, tj.draggable.measure);
useLayoutShiftScrollCompensation({
activeNode: A == null ? null : M.get(A),
config: sj.layoutShiftCompensation,
initialRect: cj,
measure: tj.draggable.measure
});
let lj = useRect(aj, tj.draggable.measure, cj), uj = useRect(aj ? aj.parentElement : null), dj = useRef({
activatorEvent: null,
active: null,
activeNode: aj,
collisionRect: null,
collisions: null,
droppableRects: nj,
draggableNodes: M,
draggingNode: null,
draggingNodeRect: null,
droppableContainers: I,
over: null,
scrollableAncestors: [],
scrollAdjustedTranslate: null
}), fj = I.getNodeFor(dj.current.over?.id), pj = useDragOverlayMeasuring({ measure: tj.dragOverlay.measure }), mj = pj.nodeRef.current ?? aj, hj = O ? pj.rect ?? lj : null, gj = !!(pj.nodeRef.current && pj.rect), _j = useRectDelta(gj ? null : lj), vj = useWindowRect(mj ? getWindow(mj) : null), yj = useScrollableAncestors(O ? fj ?? aj : null), bj = useRects(yj), xj = applyModifiers(f, {
transform: {
x: F.x - _j.x,
y: F.y - _j.y,
scaleX: 1,
scaleY: 1
},
activatorEvent: XA,
active: V,
activeNodeRect: lj,
containerNodeRect: uj,
draggingNodeRect: hj,
over: dj.current.over,
overlayNodeRect: pj.rect,
scrollableAncestors: yj,
scrollableAncestorRects: bj,
windowRect: vj
}), Sj = oj ? add(oj, F) : null, Cj = useScrollOffsets(yj), wj = useScrollOffsetsDelta(Cj), Tj = useScrollOffsetsDelta(Cj, [lj]), Ej = add(xj, wj), Dj = hj ? getAdjustedRect(hj, xj) : null, Oj = V && Dj ? c({
active: V,
collisionRect: Dj,
droppableRects: nj,
droppableContainers: ej,
pointerCoordinates: Sj
}) : null, kj = getFirstCollision(Oj, "id"), [Aj, jj] = useState(null), Mj = gj ? xj : add(xj, Tj), Nj = adjustScale(Mj, Aj?.rect ?? null, lj), Pj = useRef(null), Fj = useCallback((t, n) => {
let { sensor: i, options: a } = n;
if (q.current == null) return;
let o = M.get(q.current);
if (!o) return;
let s = t.nativeEvent;
Pj.current = new i({
active: q.current,
activeNode: o,
event: s,
options: a,
context: dj,
onAbort(t) {
if (!M.get(t)) return;
let { onDragAbort: n } = QA.current, i = { id: t };
n?.(i), S({
type: "onDragAbort",
event: i
});
},
onPending(t, n, i, a) {
if (!M.get(t)) return;
let { onDragPending: o } = QA.current, s = {
id: t,
constraint: n,
initialCoordinates: i,
offset: a
};
o?.(s), S({
type: "onDragPending",
event: s
});
},
onStart(t) {
let n = q.current;
if (n == null) return;
let i = M.get(n);
if (!i) return;
let { onDragStart: a } = QA.current, o = {
activatorEvent: s,
active: {
id: n,
data: i.data,
rect: qA
}
};
unstable_batchedUpdates(() => {
a?.(o), E(Status.Initializing), x({
type: Action.DragStart,
initialCoordinates: t,
active: n
}), S({
type: "onDragStart",
event: o
}), YA(Pj.current), ZA(s);
});
},
onMove(t) {
x({
type: Action.DragMove,
coordinates: t
});
},
onEnd: c(Action.DragEnd),
onCancel: c(Action.DragCancel)
});
function c(t) {
return async function() {
let { active: n, collisions: i, over: a, scrollAdjustedTranslate: o } = dj.current, c = null;
if (n && o) {
let { cancelDrop: d } = QA.current;
c = {
activatorEvent: s,
active: n,
collisions: i,
delta: o,
over: a
}, t === Action.DragEnd && typeof d == "function" && await Promise.resolve(d(c)) && (t = Action.DragCancel);
}
q.current = null, unstable_batchedUpdates(() => {
x({ type: t }), E(Status.Uninitialized), jj(null), YA(null), ZA(null), Pj.current = null;
let n = t === Action.DragEnd ? "onDragEnd" : "onDragCancel";
if (c) {
let t = QA.current[n];
t?.(c), S({
type: n,
event: c
});
}
});
};
}
}, [M]), Ij = useCallback((t, n) => (i, a) => {
let o = i.nativeEvent, s = M.get(a);
if (q.current !== null || !s || o.dndKit || o.defaultPrevented) return;
let c = { active: s };
t(i, n.options, c) === !0 && (o.dndKit = { capturedBy: n.sensor }, q.current = a, Fj(i, n));
}, [M, Fj]), Lj = useCombineActivators(s, Ij);
useSensorSetup(s), useIsomorphicLayoutEffect(() => {
lj && w === Status.Initializing && E(Status.Initialized);
}, [lj, w]), useEffect(() => {
let { onDragMove: t } = QA.current, { active: n, activatorEvent: i, collisions: a, over: o } = dj.current;
if (!n || !i) return;
let s = {
active: n,
activatorEvent: i,
collisions: a,
delta: {
x: Ej.x,
y: Ej.y
},
over: o
};
unstable_batchedUpdates(() => {
t?.(s), S({
type: "onDragMove",
event: s
});
});
}, [Ej.x, Ej.y]), useEffect(() => {
let { active: t, activatorEvent: n, collisions: i, droppableContainers: a, scrollAdjustedTranslate: o } = dj.current;
if (!t || q.current == null || !n || !o) return;
let { onDragOver: s } = QA.current, c = a.get(kj), d = c && c.rect.current ? {
id: c.id,
rect: c.rect.current,
data: c.data,
disabled: c.disabled
} : null, f = {
active: t,
activatorEvent: n,
collisions: i,
delta: {
x: o.x,
y: o.y
},
over: d
};
unstable_batchedUpdates(() => {
jj(d), s?.(f), S({
type: "onDragOver",
event: f
});
});
}, [kj]), useIsomorphicLayoutEffect(() => {
dj.current = {
activatorEvent: XA,
active: V,
activeNode: aj,
collisionRect: Dj,
collisions: Oj,
droppableRects: nj,
draggableNodes: M,
draggingNode: mj,
draggingNodeRect: hj,
droppableContainers: I,
over: Aj,
scrollableAncestors: yj,
scrollAdjustedTranslate: Ej
}, qA.current = {
initial: hj,
translated: Dj
};
}, [
V,
aj,
Oj,
Dj,
M,
mj,
hj,
nj,
I,
Aj,
yj,
Ej
]), useAutoScroller({
...sj,
delta: F,
draggingRect: Dj,
pointerCoordinates: Sj,
scrollableAncestors: yj,
scrollableAncestorRects: bj
});
let Rj = useMemo(() => ({
active: V,
activeNode: aj,
activeNodeRect: lj,
activatorEvent: XA,
collisions: Oj,
containerNodeRect: uj,
dragOverlay: pj,
draggableNodes: M,
droppableContainers: I,
droppableRects: nj,
over: Aj,
measureDroppableContainers: rj,
scrollableAncestors: yj,
scrollableAncestorRects: bj,
measuringConfiguration: tj,
measuringScheduled: ij,
windowRect: vj
}), [
V,
aj,
lj,
XA,
Oj,
uj,
pj,
M,
I,
nj,
Aj,
rj,
yj,
bj,
tj,
ij,
vj
]), zj = useMemo(() => ({
activatorEvent: XA,
activators: Lj,
active: V,
activeNodeRect: lj,
ariaDescribedById: { draggable: $A },
dispatch: x,
draggableNodes: M,
over: Aj,
measureDroppableContainers: rj
}), [
XA,
Lj,
V,
lj,
x,
$A,
M,
Aj,
rj
]);
return React.createElement(DndMonitorContext.Provider, { value: C }, React.createElement(InternalContext.Provider, { value: zj }, React.createElement(PublicContext.Provider, { value: Rj }, React.createElement(ActiveDraggableContext.Provider, { value: Nj }, o)), React.createElement(RestoreFocus, { disabled: i?.restoreFocus === !1 })), React.createElement(Accessibility, {
...i,
hiddenTextDescribedById: $A
}));
function Bj() {
let t = JA?.autoScrollEnabled === !1, n = typeof a == "object" ? a.enabled === !1 : a === !1, i = O && !t && !n;
return typeof a == "object" ? {
...a,
enabled: i
} : { enabled: i };
}
}), NullContext = /* @__PURE__ */ createContext(null), defaultRole = "button", ID_PREFIX$1 = "Draggable";
function useDraggable(t) {
let { id: n, data: i, disabled: a = !1, attributes: o } = t, s = useUniqueId(ID_PREFIX$1), { activators: c, activatorEvent: d, active: f, activeNodeRect: g, ariaDescribedById: b, draggableNodes: x, over: S } = useContext(InternalContext), { role: C = defaultRole, roleDescription: w = "draggable", tabIndex: E = 0 } = o ?? {}, O = f?.id === n, A = useContext(O ? ActiveDraggableContext : NullContext), [M, F] = useNodeRef(), [I, R] = useNodeRef(), qA = useSyntheticListeners(c, n), V = useLatestValue(i);
useIsomorphicLayoutEffect(() => (x.set(n, {
id: n,
key: s,
node: M,
activatorNode: I,
data: V
}), () => {
let t = x.get(n);
t && t.key === s && x.delete(n);
}), [x, n]);
let q = useMemo(() => ({
role: C,
tabIndex: E,
"aria-disabled": a,
"aria-pressed": O && C === defaultRole ? !0 : void 0,
"aria-roledescription": w,
"aria-describedby": b.draggable
}), [
a,
C,
E,
O,
w,
b.draggable
]);
return {
active: f,
activatorEvent: d,
activeNodeRect: g,
attributes: q,
isDragging: O,
listeners: a ? void 0 : qA,
node: M,
over: S,
setNodeRef: F,
setActivatorNodeRef: R,
transform: A
};
}
function useDndContext() {
return useContext(PublicContext);
}
var ID_PREFIX$1$1 = "Droppable", defaultResizeObserverConfig = { timeout: 25 };
function useDroppable(t) {
let { data: n, disabled: i = !1, id: a, resizeObserverConfig: o } = t, s = useUniqueId(ID_PREFIX$1$1), { active: c, dispatch: d, over: f, measureDroppableContainers: g } = useContext(InternalContext), b = useRef({ disabled: i }), x = useRef(!1), S = useRef(null), C = useRef(null), { disabled: w, updateMeasurementsFor: E, timeout: O } = {
...defaultResizeObserverConfig,
...o
}, A = useLatestValue(E ?? a), M = useCallback(() => {
if (!x.current) {
x.current = !0;
return;
}
C.current != null && clearTimeout(C.current), C.current = setTimeout(() => {
g(Array.isArray(A.current) ? A.current : [A.current]), C.current = null;
}, O);
}, [O]), F = useResizeObserver({
callback: M,
disabled: w || !c
}), I = useCallback((t, n) => {
F && (n && (F.unobserve(n), x.current = !1), t && F.observe(t));
}, [F]), [R, qA] = useNodeRef(I), V = useLatestValue(n);
return useEffect(() => {
!F || !R.current || (F.disconnect(), x.current = !1, F.observe(R.current));
}, [R, F]), useEffect(() => (d({
type: Action.RegisterDroppable,
element: {
id: a,
key: s,
disabled: i,
node: R,
rect: S,
data: V
}
}), () => d({
type: Action.UnregisterDroppable,
key: s,
id: a
})), [a]), useEffect(() => {
i !== b.current.disabled && (d({
type: Action.SetDroppableDisabled,
id: a,
key: s,
disabled: i
}), b.current.disabled = i);
}, [
a,
s,
i,
d
]), {
active: c,
rect: S,
isOver: f?.id === a,
node: R,
over: f,
setNodeRef: qA
};
}
function AnimationManager(t) {
let { animation: n, children: i } = t, [a, o] = useState(null), [s, c] = useState(null), d = usePrevious(i);
return !i && !a && d && o(d), useIsomorphicLayoutEffect(() => {
if (!s) return;
let t = a?.key, i = a?.props.id;
if (t == null || i == null) {
o(null);
return;
}
Promise.resolve(n(i, s)).then(() => {
o(null);
});
}, [
n,
a,
s
]), React.createElement(React.Fragment, null, i, a ? cloneElement(a, { ref: c }) : null);
}
var defaultTransform = {
x: 0,
y: 0,
scaleX: 1,
scaleY: 1
};
function NullifiedContextProvider(t) {
let { children: n } = t;
return React.createElement(InternalContext.Provider, { value: defaultInternalContext }, React.createElement(ActiveDraggableContext.Provider, { value: defaultTransform }, n));
}
var baseStyles = {
position: "fixed",
touchAction: "none"
}, defaultTransition$1 = (t) => isKeyboardEvent(t) ? "transform 250ms ease" : void 0, PositionedOverlay = /* @__PURE__ */ forwardRef((t, n) => {
let { as: i, activatorEvent: a, adjustScale: o, children: s, className: c, rect: d, style: f, transform: g, transition: b = defaultTransition$1 } = t;
if (!d) return null;
let x = o ? g : {
...g,
scaleX: 1,
scaleY: 1
}, S = {
...baseStyles,
width: d.width,
height: d.height,
top: d.top,
left: d.left,
transform: CSS$1.Transform.toString(x),
transformOrigin: o && a ? getRelativeTransformOrigin(a, d) : void 0,
transition: typeof b == "function" ? b(a) : b,
...f
};
return React.createElement(i, {
className: c,
style: S,
ref: n
}, s);
}), defaultDropAnimationSideEffects = (t) => (n) => {
let { active: i, dragOverlay: a } = n, o = {}, { styles: s, className: c } = t;
if (s != null && s.active) for (let [t, n] of Object.entries(s.active)) n !== void 0 && (o[t] = i.node.style.getPropertyValue(t), i.node.style.setProperty(t, n));
if (s != null && s.dragOverlay) for (let [t, n] of Object.entries(s.dragOverlay)) n !== void 0 && a.node.style.setProperty(t, n);
return c != null && c.active && i.node.classList.add(c.active), c != null && c.dragOverlay && a.node.classList.add(c.dragOverlay), function() {
for (let [t, n] of Object.entries(o)) i.node.style.setProperty(t, n);
c != null && c.active && i.node.classList.remove(c.active);
};
}, defaultDropAnimationConfiguration = {
duration: 250,
easing: "ease",
keyframes: (t) => {
let { transform: { initial: n, final: i } } = t;
return [{ transform: CSS$1.Transform.toString(n) }, { transform: CSS$1.Transform.toString(i) }];
},
sideEffects: /* @__PURE__ */ defaultDropAnimationSideEffects({ styles: { active: { opacity: "0" } } })
};
function useDropAnimation(t) {
let { config: n, draggableNodes: i, droppableContainers: a, measuringConfiguration: o } = t;
return useEvent((t, s) => {
if (n === null) return;
let c = i.get(t);
if (!c) return;
let d = c.node.current;
if (!d) return;
let f = getMeasurableNode(s);
if (!f) return;
let { transform: g } = getWindow(s).getComputedStyle(s), b = parseTransform(g);
if (!b) return;
let x = typeof n == "function" ? n : createDefaultDropAnimation(n);
return scrollIntoViewIfNeeded(d, o.draggable.measure), x({
active: {
id: t,
data: c.data,
node: d,
rect: o.draggable.measure(d)
},
draggableNodes: i,
dragOverlay: {
node: s,
rect: o.dragOverlay.measure(f)
},
droppableContainers: a,
measuringConfiguration: o,
transform: b
});
});
}
function createDefaultDropAnimation(t) {
let { duration: n, easing: i, sideEffects: a, keyframes: o } = {
...defaultDropAnimationConfiguration,
...t
};
return (t) => {
let { active: s, dragOverlay: c, transform: d,...f } = t;
if (!n) return;
let g = {
x: c.rect.left - s.rect.left,
y: c.rect.top - s.rect.top
}, b = {
scaleX: d.scaleX === 1 ? 1 : s.rect.width * d.scaleX / c.rect.width,
scaleY: d.scaleY === 1 ? 1 : s.rect.height * d.scaleY / c.rect.height
}, x = {
x: d.x - g.x,
y: d.y - g.y,
...b
}, S = o({
...f,
active: s,
dragOverlay: c,
transform: {
initial: d,
final: x
}
}), [C] = S, w = S[S.length - 1];
if (JSON.stringify(C) === JSON.stringify(w)) return;
let E = a?.({
active: s,
dragOverlay: c,
...f
}), O = c.node.animate(S, {
duration: n,
easing: i,
fill: "forwards"
});
return new Promise((t) => {
O.onfinish = () => {
E?.(), t();
};
});
};
}
var key = 0;
function useKey(t) {
return useMemo(() => {
if (t != null) return key++, key;
}, [t]);
}
var DragOverlay = /* @__PURE__ */ React.memo((t) => {
let { adjustScale: n = !1, children: i, dropAnimation: a, style: o, transition: s, modifiers: c, wrapperElement: d = "div", className: f, zIndex: g = 999 } = t, { activatorEvent: b, active: x, activeNodeRect: S, containerNodeRect: C, draggableNodes: w, droppableContainers: E, dragOverlay: O, over: A, measuringConfiguration: M, scrollableAncestors: F, scrollableAncestorRects: I, windowRect: R } = useDndContext(), qA = useContext(ActiveDraggableContext), V = useKey(x?.id), q = applyModifiers(c, {
activatorEvent: b,
active: x,
activeNodeRect: S,
containerNodeRect: C,
draggingNodeRect: O.rect,
over: A,
overlayNodeRect: O.rect,
scrollableAncestors: F,
scrollableAncestorRects: I,
transform: qA,
windowRect: R
}), JA = useInitialValue(S), YA = useDropAnimation({
config: a,
draggableNodes: w,
droppableContainers: E,
measuringConfiguration: M
}), XA = JA ? O.setRef : void 0;
return React.createElement(NullifiedContextProvider, null, React.createElement(AnimationManager, { animation: YA }, x && V ? React.createElement(PositionedOverlay, {
key: V,
id: x.id,
ref: XA,
as: d,
activatorEvent: b,
adjustScale: n,
className: f,
transition: s,
rect: JA,
style: {
zIndex: g,
...o
},
transform: q
}, i) : null));
}), restrictToHorizontalAxis = (t) => {
let { transform: n } = t;
return {
...n,
y: 0
};
};
function restrictToBoundingRect(t, n, i) {
let a = { ...t };
return n.top + t.y <= i.top ? a.y = i.top - n.top : n.bottom + t.y >= i.top + i.height && (a.y = i.top + i.height - n.bottom), n.left + t.x <= i.left ? a.x = i.left - n.left : n.right + t.x >= i.left + i.width && (a.x = i.left + i.width - n.right), a;
}
var restrictToParentElement = (t) => {
let { containerNodeRect: n, draggingNodeRect: i, transform: a } = t;
return !i || !n ? a : restrictToBoundingRect(a, i, n);
}, restrictToVerticalAxis = (t) => {
let { transform: n } = t;
return {
...n,
x: 0
};
};
function arrayMove(t, n, i) {
let a = t.slice();
return a.splice(i < 0 ? a.length + i : i, 0, a.splice(n, 1)[0]), a;
}
function getSortedRects(t, n) {
return t.reduce((t, i, a) => {
let o = n.get(i);
return o && (t[a] = o), t;
}, Array(t.length));
}
function isValidIndex(t) {
return t !== null && t >= 0;
}
function itemsEqual(t, n) {
if (t === n) return !0;
if (t.length !== n.length) return !1;
for (let i = 0; i < t.length; i++) if (t[i] !== n[i]) return !1;
return !0;
}
function normalizeDisabled(t) {
return typeof t == "boolean" ? {
draggable: t,
droppable: t
} : t;
}
var defaultScale = {
scaleX: 1,
scaleY: 1
}, horizontalListSortingStrategy = (t) => {
let { rects: n, activeNodeRect: i, activeIndex: a, overIndex: o, index: s } = t, c = n[a] ?? i;
if (!c) return null;
let d = getItemGap(n, s, a);
if (s === a) {
let t = n[o];
return t ? {
x: a < o ? t.left + t.width - (c.left + c.width) : t.left - c.left,
y: 0,
...defaultScale
} : null;
}
return s > a && s <= o ? {
x: -c.width - d,
y: 0,
...defaultScale
} : s < a && s >= o ? {
x: c.width + d,
y: 0,
...defaultScale
} : {
x: 0,
y: 0,
...defaultScale
};
};
function getItemGap(t, n, i) {
let a = t[n], o = t[n - 1], s = t[n + 1];
return !a || !o && !s ? 0 : i < n ? o ? a.left - (o.left + o.width) : s.left - (a.left + a.width) : s ? s.left - (a.left + a.width) : a.left - (o.left + o.width);
}
var rectSortingStrategy = (t) => {
let { rects: n, activeIndex: i, overIndex: a, index: o } = t, s = arrayMove(n, a, i), c = n[o], d = s[o];
return !d || !c ? null : {
x: d.left - c.left,
y: d.top - c.top,
scaleX: d.width / c.width,
scaleY: d.height / c.height
};
}, defaultScale$1 = {
scaleX: 1,
scaleY: 1
}, verticalListSortingStrategy = (t) => {
let { activeIndex: n, activeNodeRect: i, index: a, rects: o, overIndex: s } = t, c = o[n] ?? i;
if (!c) return null;
if (a === n) {
let t = o[s];
return t ? {
x: 0,
y: n < s ? t.top + t.height - (c.top + c.height) : t.top - c.top,
...defaultScale$1
} : null;
}
let d = getItemGap$1(o, a, n);
return a > n && a <= s ? {
x: 0,
y: -c.height - d,
...defaultScale$1
} : a < n && a >= s ? {
x: 0,
y: c.height + d,
...defaultScale$1
} : {
x: 0,
y: 0,
...defaultScale$1
};
};
function getItemGap$1(t, n, i) {
let a = t[n], o = t[n - 1], s = t[n + 1];
return a ? i < n ? o ? a.top - (o.top + o.height) : s ? s.top - (a.top + a.height) : 0 : s ? s.top - (a.top + a.height) : o ? a.top - (o.top + o.height) : 0 : 0;
}
var ID_PREFIX = "Sortable", Context = /* @__PURE__ */ React.createContext({
activeIndex: -1,
containerId: ID_PREFIX,
disableTransforms: !1,
items: [],
overIndex: -1,
useDragOverlay: !1,
sortedRects: [],
strategy: rectSortingStrategy,
disabled: {
draggable: !1,
droppable: !1
}
});
function SortableContext(t) {
let { children: n, id: i, items: a, strategy: o = rectSortingStrategy, disabled: s = !1 } = t, { active: c, dragOverlay: d, droppableRects: f, over: g, measureDroppableContainers: b } = useDndContext(), x = useUniqueId(ID_PREFIX, i), S = d.rect !== null, C = useMemo(() => a.map((t) => typeof t == "object" && "id" in t ? t.id : t), [a]), w = c != null, E = c ? C.indexOf(c.id) : -1, O = g ? C.indexOf(g.id) : -1, A = useRef(C), M = !itemsEqual(C, A.current), F = O !== -1 && E === -1 || M, I = normalizeDisabled(s);
useIsomorphicLayoutEffect(() => {
M && w && b(C);
}, [
M,
C,
w,
b
]), useEffect(() => {
A.current = C;
}, [C]);
let R = useMemo(() => ({
activeIndex: E,
containerId: x,
disabled: I,
disableTransforms: F,
items: C,
overIndex: O,
useDragOverlay: S,
sortedRects: getSortedRects(C, f),
strategy: o
}), [
E,
x,
I.draggable,
I.droppable,
F,
C,
O,
f,
S,
o
]);
return React.createElement(Context.Provider, { value: R }, n);
}
var defaultNewIndexGetter = (t) => {
let { id: n, items: i, activeIndex: a, overIndex: o } = t;
return arrayMove(i, a, o).indexOf(n);
}, defaultAnimateLayoutChanges = (t) => {
let { containerId: n, isSorting: i, wasDragging: a, index: o, items: s, newIndex: c, previousItems: d, previousContainerId: f, transition: g } = t;
return !g || !a || d !== s && o === c ? !1 : i ? !0 : c !== o && n === f;
}, defaultTransition = {
duration: 200,
easing: "ease"
}, transitionProperty = "transform", disabledTransition = /* @__PURE__ */ CSS$1.Transition.toString({
property: transitionProperty,
duration: 0,
easing: "linear"
}), defaultAttributes = { roleDescription: "sortable" };
function useDerivedTransform(t) {
let { disabled: n, index: i, node: a, rect: o } = t, [s, c] = useState(null), d = useRef(i);
return useIsomorphicLayoutEffect(() => {
if (!n && i !== d.current && a.current) {
let t = o.current;
if (t) {
let n = getClientRect(a.current, { ignoreTransform: !0 }), i = {
x: t.left - n.left,
y: t.top - n.top,
scaleX: t.width / n.width,
scaleY: t.height / n.height
};
(i.x || i.y) && c(i);
}
}
i !== d.current && (d.current = i);
}, [
n,
i,
a,
o
]), useEffect(() => {
s && c(null);
}, [s]), s;
}
function useSortable(t) {
let { animateLayoutChanges: n = defaultAnimateLayoutChanges, attributes: i, disabled: a, data: o, getNewIndex: s = defaultNewIndexGetter, id: c, strategy: d, resizeObserverConfig: f, transition: g = defaultTransition } = t, { items: b, containerId: x, activeIndex: S, disabled: C, disableTransforms: w, sortedRects: E, overIndex: O, useDragOverlay: A, strategy: M } = useContext(Context), F = normalizeLocalDisabled(a, C), I = b.indexOf(c), R = useMemo(() => ({
sortable: {
containerId: x,
index: I,
items: b
},
...o
}), [
x,
o,
I,
b
]), qA = useMemo(() => b.slice(b.indexOf(c)), [b, c]), { rect: V, node: q, isOver: JA, setNodeRef: YA } = useDroppable({
id: c,
data: R,
disabled: F.droppable,
resizeObserverConfig: {
updateMeasurementsFor: qA,
...f
}
}), { active: XA, activatorEvent: ZA, activeNodeRect: QA, attributes: $A, setNodeRef: ej, listeners: tj, isDragging: nj, over: rj, setActivatorNodeRef: ij, transform: aj } = useDraggable({
id: c,
data: R,
attributes: {
...defaultAttributes,
...i
},
disabled: F.draggable
}), oj = useCombinedRefs(YA, ej), sj = !!XA, cj = sj && !w && isValidIndex(S) && isValidIndex(O), lj = !A && nj, uj = cj ? (lj && cj ? aj : null) ?? (d ?? M)({
rects: E,
activeNodeRect: QA,
activeIndex: S,
overIndex: O,
index: I
}) : null, dj = isValidIndex(S) && isValidIndex(O) ? s({
id: c,
items: b,
activeIndex: S,
overIndex: O
}) : I, fj = XA?.id, pj = useRef({
activeId: fj,
items: b,
newIndex: dj,
containerId: x
}), mj = b !== pj.current.items, hj = n({
active: XA,
containerId: x,
isDragging: nj,
isSorting: sj,
id: c,
index: I,
items: b,
newIndex: pj.current.newIndex,
previousItems: pj.current.items,
previousContainerId: pj.current.containerId,
transition: g,
wasDragging: pj.current.activeId != null
}), gj = useDerivedTransform({
disabled: !hj,
index: I,
node: q,
rect: V
});
return useEffect(() => {
sj && pj.current.newIndex !== dj && (pj.current.newIndex = dj), x !== pj.current.containerId && (pj.current.containerId = x), b !== pj.current.items && (pj.current.items = b);
}, [
sj,
dj,
x,
b
]), useEffect(() => {
if (fj === pj.current.activeId) return;
if (fj != null && pj.current.activeId == null) {
pj.current.activeId = fj;
return;
}
let t = setTimeout(() => {
pj.current.activeId = fj;
}, 50);
return () => clearTimeout(t);
}, [fj]), {
active: XA,
activeIndex: S,
attributes: $A,
data: R,
rect: V,
index: I,
newIndex: dj,
items: b,
isOver: JA,
isSorting: sj,
isDragging: nj,
listeners: tj,
node: q,
overIndex: O,
over: rj,
setNodeRef: oj,
setActivatorNodeRef: ij,
setDroppableNodeRef: YA,
setDraggableNodeRef: ej,
transform: gj ?? uj,
transition: _j()
};
function _j() {
if (gj || mj && pj.current.newIndex === I) return disabledTransition;
if (!(lj && !isKeyboardEvent(ZA) || !g) && (sj || hj)) return CSS$1.Transition.toString({
...g,
property: transitionProperty
});
}
}
function normalizeLocalDisabled(t, n) {
return typeof t == "boolean" ? {
draggable: t,
droppable: !1
} : {
draggable: t?.draggable ?? n.draggable,
droppable: t?.droppable ?? n.droppable
};
}
function hasSortableData(t) {
if (!t) return !1;
let n = t.data.current;
return !!(n && "sortable" in n && typeof n.sortable == "object" && "containerId" in n.sortable && "items" in n.sortable && "index" in n.sortable);
}
var directions = [
KeyboardCode.Down,
KeyboardCode.Right,
KeyboardCode.Up,
KeyboardCode.Left
], sortableKeyboardCoordinates = (t, n) => {
let { context: { active: i, collisionRect: a, droppableRects: o, droppableContainers: s, over: c, scrollableAncestors: d } } = n;
if (directions.includes(t.code)) {
if (t.preventDefault(), !i || !a) return;
let n = [];
s.getEnabled().forEach((i) => {
if (!i || i != null && i.disabled) return;
let s = o.get(i.id);
if (s) switch (t.code) {
case KeyboardCode.Down:
a.top < s.top && n.push(i);
break;
case KeyboardCode.Up:
a.top > s.top && n.push(i);
break;
case KeyboardCode.Left:
a.left > s.left && n.push(i);
break;
case KeyboardCode.Right:
a.left < s.left && n.push(i);
break;
}
});
let f = closestCorners({
active: i,
collisionRect: a,
droppableRects: o,
droppableContainers: n,
pointerCoordinates: null
}), g = getFirstCollision(f, "id");
if (g === c?.id && f.length > 1 && (g = f[1].id), g != null) {
let t = s.get(i.id), n = s.get(g), c = n ? o.get(n.id) : null, f = n?.node.current;
if (f && c && t && n) {
let i = getScrollableAncestors(f).some((t, n) => d[n] !== t), o = isSameContainer(t, n), s = isAfter(t, n), g = i || !o ? {
x: 0,
y: 0
} : {
x: s ? a.width - c.width : 0,
y: s ? a.height - c.height : 0
}, b = {
x: c.left,
y: c.top
};
return g.x && g.y ? b : subtract(b, g);
}
}
}
};
function isSameContainer(t, n) {
return !hasSortableData(t) || !hasSortableData(n) ? !1 : t.data.current.sortable.containerId === n.data.current.sortable.containerId;
}
function isAfter(t, n) {
return !hasSortableData(t) || !hasSortableData(n) || !isSameContainer(t, n) ? !1 : t.data.current.sortable.index < n.data.current.sortable.index;
}
function setRef(t, n) {
if (typeof t == "function") return t(n);
t != null && (t.current = n);
}
function composeRefs(...t) {
return (n) => {
let i = !1, a = t.map((t) => {
let a = setRef(t, n);
return !i && typeof a == "function" && (i = !0), a;
});
if (i) return () => {
for (let n = 0; n < a.length; n++) {
let i = a[n];
typeof i == "function" ? i() : setRef(t[n], null);
}
};
};
}
function useComposedRefs(...t) {
return useCallback(composeRefs(...t), t);
}
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(t) {
let n = useContext(SortableRootContext);
if (!n) throw Error(`\`${t}\` must be used within \`${ROOT_NAME}\``);
return n;
}
function SortableRoot(t) {
let { value: n, onValueChange: i, collisionDetection: a, modifiers: o, strategy: s, onMove: c, orientation: d = "vertical", flatCursor: f = !1, getItemValue: g, accessibility: b,...x } = t, S = useId(), [C, w] = useState(null), E = useSensors(useSensor(MouseSensor), useSensor(TouchSensor), useSensor(KeyboardSensor, { coordinateGetter: sortableKeyboardCoordinates })), O = useMemo(() => orientationConfig[d], [d]), A = useCallback((t) => {
if (typeof t == "object" && !g) throw Error("getItemValue is required when using array of objects");
return g ? g(t) : t;
}, [g]), M = useMemo(() => n.map((t) => A(t)), [n, A]), F = useCallback((t) => {
x.onDragStart?.(t), !t.activatorEvent.defaultPrevented && w(t.active.id);
}, [x.onDragStart]), I = useCallback((t) => {
if (x.onDragEnd?.(t), t.activatorEvent.defaultPrevented) return;
let { active: a, over: o } = t;
if (o && a.id !== o?.id) {
let s = n.findIndex((t) => A(t) === a.id), d = n.findIndex((t) => A(t) === o.id);
c ? c({
...t,
activeIndex: s,
overIndex: d
}) : i?.(arrayMove(n, s, d));
}
w(null);
}, [
n,
i,
c,
A,
x.onDragEnd
]), R = useCallback((t) => {
x.onDragCancel?.(t), !t.activatorEvent.defaultPrevented && w(null);
}, [x.onDragCancel]), qA = useMemo(() => ({
onDragStart({ active: t }) {
return `Grabbed sortable item "${t.id.toString()}". Current position is ${t.data.current?.sortable.index + 1} of ${n.length}. Use arrow keys to move, space to drop.`;
},
onDragOver({ active: t, over: i }) {
if (i) {
let a = i.data.current?.sortable.index ?? 0, o = t.data.current?.sortable.index ?? 0, s = a > o ? "down" : "up";
return `Sortable item "${t.id.toString()}" moved ${s} to position ${a + 1} of ${n.length}.`;
}
return "Sortable item is no longer over a droppable area. Press escape to cancel.";
},
onDragEnd({ active: t, over: i }) {
let a = t.id.toString();
if (i) {
let t = i.data.current?.sortable.index ?? 0;
return `Sortable item "${a}" dropped at position ${t + 1} of ${n.length}.`;
}
return `Sortable item "${a}" dropped. No changes were made.`;
},
onDragCancel({ active: t }) {
let i = t.data.current?.sortable.index ?? 0;
return `Sorting cancelled. Sortable item "${t.id.toString()}" returned to position ${i + 1} of ${n.length}.`;
},
onDragMove({ active: t, over: i }) {
if (i) {
let a = i.data.current?.sortable.index ?? 0, o = t.data.current?.sortable.index ?? 0, s = a > o ? "down" : "up";
return `Sortable item "${t.id.toString()}" is moving ${s} to position ${a + 1} of ${n.length}.`;
}
return "Sortable item is no longer over a droppable area. Press escape to cancel.";
}
}), [n]), V = useMemo(() => ({ draggable: `
To pick up a sortable item, press space or enter.
While dragging, use the ${d === "vertical" ? "up and down" : d === "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.
` }), [d]), q = useMemo(() => ({
id: S,
items: M,
modifiers: o ?? O.modifiers,
strategy: s ?? O.strategy,
activeId: C,
setActiveId: w,
getItemValue: A,
flatCursor: f
}), [
S,
M,
o,
s,
O.modifiers,
O.strategy,
C,
A,
f
]);
return /* @__PURE__ */ jsx(SortableRootContext.Provider, {
value: q,
children: /* @__PURE__ */ jsx(DndContext, {
collisionDetection: a ?? O.collisionDetection,
modifiers: o ?? O.modifiers,
sensors: E,
...x,
id: S,
onDragStart: F,
onDragEnd: I,
onDragCancel: R,
accessibility: {
announcements: qA,
screenReaderInstructions: V,
...b
}
})
});
}
var SortableContentContext = createContext(!1);
function SortableContent(t) {
let { strategy: n, asChild: i, withoutSlot: a, children: o, ref: s,...c } = t, d = useSortableContext(CONTENT_NAME), f = i ? Slot : "div";
return /* @__PURE__ */ jsx(SortableContentContext.Provider, {
value: !0,
children: /* @__PURE__ */ jsx(SortableContext, {
items: d.items,
strategy: n ?? d.strategy,
children: a ? o : /* @__PURE__ */ jsx(f, {
"data-slot": "sortable-content",
...c,
ref: s,
children: o
})
})
});
}
var SortableItemContext = createContext(null);
function SortableItem(t) {
let { value: n, style: i, asHandle: a, asChild: o, disabled: s, className: c, ref: d,...f } = t, g = useContext(SortableContentContext), b = useContext(SortableOverlayContext);
if (!g && !b) throw Error(`\`${ITEM_NAME}\` must be used within \`${CONTENT_NAME}\` or \`${OVERLAY_NAME}\``);
if (n === "") throw Error(`\`${ITEM_NAME}\` value cannot be an empty string`);
let x = useSortableContext(ITEM_NAME), S = useId(), { attributes: C, listeners: w, setNodeRef: E, setActivatorNodeRef: O, transform: A, transition: M, isDragging: F } = useSortable({
id: n,
disabled: s
}), I = useComposedRefs(d, (t) => {
s || (E(t), a && O(t));
}), R = useMemo(() => ({
transform: CSS$1.Translate.toString(A),
transition: M,
...i
}), [
A,
M,
i
]), qA = useMemo(() => ({
id: S,
attributes: C,
listeners: w,
setActivatorNodeRef: O,
isDragging: F,
disabled: s
}), [
S,
C,
w,
O,
F,
s
]), V = o ? Slot : "div";
return /* @__PURE__ */ jsx(SortableItemContext.Provider, {
value: qA,
children: /* @__PURE__ */ jsx(V, {
id: S,
"data-disabled": s,
"data-dragging": F ? "" : void 0,
"data-slot": "sortable-item",
...f,
...a && !s ? C : {},
...a && !s ? w : {},
ref: I,
style: R,
className: cn("focus-visible:ring-ring focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-offset-1", {
"touch-none select-none": a,
"cursor-default": x.flatCursor,
"data-dragging:cursor-grabbing": !x.flatCursor,
"cursor-grab": !F && a && !x.flatCursor,
"opacity-50": F,
"pointer-events-none opacity-50": s
}, c)
})
});
}
var SortableOverlayContext = createContext(!1), dropAnimation = { sideEffects: defaultDropAnimationSideEffects({ styles: { active: { opacity: "0.4" } } }) };
function SortableOverlay(t) {
let { container: n, children: i,...a } = t, o = useSortableContext(OVERLAY_NAME), [s, c] = useState(!1);
useLayoutEffect(() => c(!0), []);
let d = n ?? (s ? globalThis.document?.body : null);
return d ? ReactDOM$2.createPortal(/* @__PURE__ */ jsx(DragOverlay, {
dropAnimation,
modifiers: o.modifiers,
className: cn(!o.flatCursor && "cursor-grabbing"),
...a,
children: /* @__PURE__ */ jsx(SortableOverlayContext.Provider, {
value: !0,
children: o.activeId ? typeof i == "function" ? i({ value: o.activeId }) : i : null
})
}), d) : null;
}
var import_lodash = /* @__PURE__ */ __toESM(require_lodash());
const Tab = (t) => {
let { history: n, operations: i, tests: a, plugins: o } = useLaboratory(), s = useLaboratory(), c = useRef(!1), d = useRef(null);
useEffect(() => {
function t() {
d.current &&= (clearTimeout(d.current), null), c.current = !1;
}
return document.addEventListener("mouseup", t), () => {
document.removeEventListener("mouseup", t);
};
}, []);
let f = useMemo(() => t.activeTab?.id === t.item.id, [t.activeTab, t.item]), g = useMemo(() => t.item.type === "history" ? n.find((n) => t.item.type === "history" && n.id === t.item.data.id) : null, [n, t.item]), b = useMemo(() => t.item.type === "operation" ? i.find((n) => n.id === t.item.data.id) : null, [t.item, i]), x = useMemo(() => t.item.type === "test" ? a.find((n) => n.id === t.item.data.id) : null, [t.item, a]), S = useMemo(() => g ? "status" in g && g.status < 200 || "status" in g && g.status >= 300 || "response" in g && JSON.parse(g.response).errors : !1, [g]), C = useCallback(() => {
t.handleDeleteTab(t.item.id);
}, [t]), w = useCallback(() => {
t.handleDeleteAllTabs();
}, [t]), E = useCallback(() => {
t.handleDeleteOtherTabs(t.item.id);
}, [t]), O = useMemo(() => {
if (t.item.type === "operation") {
let t = b?.name || getOperationName(b?.query || "") || "Untitled";
if (t === "Untitled") {
let n = (0, import_lodash.capitalize)(getOperationType(b?.query || "") || "query");
return t + n;
}
return t;
}
if (t.item.type === "history") {
let t = g?.operation.name || getOperationName(g?.operation.query || "") || "Untitled";
if (t === "Untitled") {
let n = (0, import_lodash.capitalize)(getOperationType(g?.operation.query || "") || "query");
return t + n;
}
return t;
}
if (t.item.type === "preflight") return "Preflight";
if (t.item.type === "env") return "Environment Variables";
if (t.item.type === "settings") return "Settings";
if (t.item.type === "test") return x?.name || "Untitled";
let n = null;
for (let i of o) for (let a of i.tabs ?? []) if (a.type === t.item.type) {
n = a;
break;
}
return n ? typeof n.name == "function" ? n.name(s, {}) : n.name : "Untitled";
}, [
t.item,
g,
b,
x
]), A = useMemo(() => {
if (t.item.type === "operation") return /* @__PURE__ */ jsx(GraphQLIcon, { className: "size-4 text-pink-500" });
if (t.item.type === "preflight") return /* @__PURE__ */ jsx(ScrollTextIcon, { className: "size-4 text-teal-400" });
if (t.item.type === "env") return /* @__PURE__ */ jsx(GlobeIcon, { className: "size-4 text-blue-400" });
if (t.item.type === "history") return /* @__PURE__ */ jsx(HistoryIcon, { className: cn("size-4 text-indigo-400", {
"text-green-500": !S,
"text-red-500": S
}) });
if (t.item.type === "settings") return /* @__PURE__ */ jsx(SettingsIcon, { className: "size-4 text-gray-400" });
if (t.item.type === "test") return /* @__PURE__ */ jsx(FlaskConicalIcon, { className: "size-4 text-lime-400" });
let n = null;
for (let i of o) for (let a of i.tabs ?? []) if (a.type === t.item.type) {
n = a;
break;
}
return n ? typeof n.icon == "function" ? n.icon(s, {}) : n.icon : /* @__PURE__ */ jsx(FileIcon, { className: "text-muted-foreground size-4" });
}, [t.item, S]);
return /* @__PURE__ */ jsxs(ContextMenu, { children: [/* @__PURE__ */ jsx(ContextMenuTrigger, {
asChild: !0,
children: /* @__PURE__ */ jsxs(SortableItem, {
value: t.item.id,
asHandle: !0,
className: cn("data-dragging:opacity-0 flex h-12 w-max items-stretch", t.isOverlay && "bg-background", t.isOverlay && !f && "h-12"),
children: [/* @__PURE__ */ jsx("div", {
onMouseDown: (t) => {
if (c.current) return;
t.preventDefault();
let n = { ...t };
d.current = setTimeout(() => {
c.current = !0, n.currentTarget.dispatchEvent(new MouseEvent("mousedown", { ...n }));
}, 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", t.activeTab?.id === t.item.id && "border-primary bg-card text-foreground"),
onClick: () => {
t.setActiveTab(t.item);
},
onMouseUp: () => {
d.current &&= (clearTimeout(d.current), null), c.current = !1;
},
children: [
A,
O,
t.isOperationLoading(t.item.id) && /* @__PURE__ */ jsx(Spinner, { className: "size-3" }),
t.item.readOnly && /* @__PURE__ */ jsx(LockIcon, { className: "size-3 text-gray-400" }),
/* @__PURE__ */ jsx(XIcon, {
className: "text-muted-foreground size-3",
onMouseDown: (t) => {
t.stopPropagation();
},
onClick: (n) => {
n.stopPropagation(), t.handleDeleteTab(t.item.id);
}
})
]
})
}), /* @__PURE__ */ jsx("div", { className: "bg-border mb-px w-px" })]
})
}), /* @__PURE__ */ jsxs(ContextMenuContent, { children: [
/* @__PURE__ */ jsx(ContextMenuItem, {
onClick: C,
children: "Close"
}),
/* @__PURE__ */ jsx(ContextMenuItem, {
onClick: E,
children: "Close other"
}),
/* @__PURE__ */ jsx(ContextMenuItem, {
onClick: w,
children: "Close all"
})
] })] });
}, Tabs$1 = ({ className: t }) => {
let { tabs: n, setTabs: i, activeTab: a, addTab: o, deleteTab: s, operations: c, setActiveTab: d, addOperation: f, setOperations: g, deleteOperation: b, isOperationLoading: x, goToFullScreen: S, exitFullScreen: C, isFullScreen: w } = useLaboratory(), E = useCallback(() => {
let t = f({
name: "",
query: "",
variables: "",
headers: "",
extensions: ""
}), n = o({
type: "operation",
data: t
});
d(n);
}, [
f,
o,
d
]), O = useCallback((t) => {
let i = n.findIndex((n) => n.id === t);
if (i === -1) return;
let a = n[i];
a.type === "operation" && b(a.data.id), s(a.id), d(i === 0 ? n[1] ?? null : i > 0 ? n[i - 1] ?? null : n[0] ?? null);
}, [
n,
s,
b,
d
]), A = useCallback(() => {
g([]), i([]);
}, [g, i]), M = useCallback((t) => {
let a = n.find((n) => n.id === t);
if (a) {
let o = n.filter((n) => n.id !== t).filter((t) => t.type === "operation").map((t) => t.data.id);
g(c.filter((t) => !o.includes(t.id))), i([a]), d(a);
}
}, [
n,
g,
c,
i,
d
]);
return /* @__PURE__ */ jsxs("div", {
className: cn("relative z-10 grid size-full grid-cols-[1fr_auto] overflow-hidden", t),
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: n,
onValueChange: i,
getItemValue: (t) => t.id,
orientation: "horizontal",
children: [/* @__PURE__ */ jsx(SortableContent, {
className: "flex w-max items-stretch",
children: n.map((t) => /* @__PURE__ */ jsx(Fragment$1, { children: /* @__PURE__ */ jsx(Tab, {
item: t,
activeTab: a,
setActiveTab: d,
isOperationLoading: x,
handleDeleteTab: O,
handleDeleteAllTabs: A,
handleDeleteOtherTabs: M
}, t.id) }))
}), /* @__PURE__ */ jsx(SortableOverlay, { children: (t) => {
let i = n.find((n) => n.id === t.value);
return i ? /* @__PURE__ */ jsx(Tab, {
item: i,
activeTab: a,
setActiveTab: d,
isOperationLoading: x,
handleDeleteTab: O,
isOverlay: !0,
handleDeleteAllTabs: A,
handleDeleteOtherTabs: M
}) : 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: E,
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: w ? /* @__PURE__ */ jsxs(Tooltip, { children: [/* @__PURE__ */ jsx(TooltipTrigger, { children: /* @__PURE__ */ jsx(Button, {
variant: "ghost",
size: "sm",
onClick: C,
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: S,
children: /* @__PURE__ */ jsx(MaximizeIcon, { className: "size-4" })
}) }), /* @__PURE__ */ jsx(TooltipContent, {
side: "bottom",
children: "Go to full screen"
})] })
})
]
});
};
var ShadowRootContainer = (t) => {
let n = useRef(null), [i, a] = useState(null);
return useLayoutEffect(() => {
!n.current || i || a(n.current.attachShadow({ mode: "open" }));
}, [i]), useLayoutEffect(() => {
i && document.head.querySelectorAll("style").forEach((t) => {
t.textContent?.includes("[data-sonner-toaster]") && i.append(t.cloneNode(!0));
});
}, [i]), /* @__PURE__ */ jsx("div", {
ref: n,
className: "hive-laboratory-host size-full",
children: i ? createPortal(t.children, i) : 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 = (t) => {
let n = useForm({
defaultValues: { value: t.defaultValue || null },
validators: { onSubmit: z$1.object({ value: z$1.string().min(1, "Value is required").nullable() }) },
onSubmit: ({ value: i }) => {
t.onSubmit?.(i.value || null), t.onOpenChange(!1), n.reset();
}
});
return /* @__PURE__ */ jsx(Dialog, {
open: t.open,
onOpenChange: (i) => {
n.state.isSubmitted || n.handleSubmit(), t.onOpenChange(i);
},
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: (t) => {
t.preventDefault(), n.handleSubmit();
},
children: /* @__PURE__ */ jsx(FieldGroup, { children: /* @__PURE__ */ jsx(n.Field, {
name: "value",
children: (n) => {
let i = n.state.meta.isTouched && !n.state.meta.isValid;
return /* @__PURE__ */ jsxs(Field, {
"data-invalid": i,
children: [/* @__PURE__ */ jsx(Input, {
id: n.name,
name: n.name,
value: n.state.value || "",
onBlur: n.handleBlur,
onChange: (t) => n.handleChange(t.target.value),
"aria-invalid": i,
placeholder: t.placeholder,
autoComplete: "off"
}), i && /* @__PURE__ */ jsx(FieldError, { errors: n.state.meta.errors })]
});
}
}) })
}),
/* @__PURE__ */ jsx(DialogFooter, { children: /* @__PURE__ */ jsx(Button, {
type: "submit",
form: "preflight-prompt-form",
onClick: () => {
n.handleSubmit();
},
children: "Submit"
}) })
] })
});
}, LaboratoryContent = () => {
let { activeTab: t, addOperation: n, collections: i, addTab: a, setActiveTab: o, preflight: s, tabs: c, env: d, plugins: f, pluginsState: g, setPluginsState: b } = useLaboratory(), x = useLaboratory(), [S, C] = useState(i.length > 0 ? "collections" : null), [w, E] = useState(!1), O = useMemo(() => {
switch (t?.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 i = null, s = null;
for (let n of f) for (let a of n.tabs ?? []) if (a.type === t?.type) {
s = a, i = n.id;
break;
}
return s && i ? s.component(t, x, g[i] ?? {}, (t) => b({
...g,
[i]: t
})) : /* @__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 t = n({
name: "",
query: "",
variables: "",
headers: "",
extensions: ""
}), i = a({
type: "operation",
data: t
});
o(i);
},
children: "Add operation"
}) })]
});
}
}
}, [
t?.type,
n,
a,
o
]);
return /* @__PURE__ */ jsxs("div", {
className: "flex size-full",
children: [
/* @__PURE__ */ jsx(Command, {
open: w,
onOpenChange: E
}),
/* @__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": S === "collections" }),
children: /* @__PURE__ */ jsx(Button, {
variant: "ghost",
size: "icon",
onClick: () => C(S === "collections" ? null : "collections"),
className: cn("text-muted-foreground hover:text-foreground", { "text-foreground": S === "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": S === "history" }),
children: /* @__PURE__ */ jsx(Button, {
variant: "ghost",
size: "icon",
onClick: () => C(S === "history" ? null : "history"),
className: cn("text-muted-foreground hover:text-foreground", { "text-foreground": S === "history" }),
children: /* @__PURE__ */ jsx(HistoryIcon, { className: "size-5" })
})
})
}), /* @__PURE__ */ jsx(TooltipContent, {
side: "right",
children: "History"
})] }),
/* @__PURE__ */ jsx("div", {
className: cn("z-100 relative mt-auto flex aspect-square h-12 w-full items-center justify-center border-l-2 border-transparent", { "border-primary": S === "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: () => C(S === "history" ? null : "history"),
className: cn("text-muted-foreground hover:text-foreground", { "text-foreground": S === "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: () => E(!0),
children: ["Command Palette...", /* @__PURE__ */ jsx(DropdownMenuShortcut, { children: "⌘J" })]
}) }),
/* @__PURE__ */ jsx(DropdownMenuSeparator, {}),
/* @__PURE__ */ jsx(DropdownMenuItem, {
onSelect: () => {
let t = c.find((t) => t.type === "env") ?? a({
type: "env",
data: d ?? { variables: {} }
});
o(t);
},
children: "Environment Variables"
}),
/* @__PURE__ */ jsx(DropdownMenuItem, {
onSelect: () => {
let t = c.find((t) => t.type === "preflight") ?? a({
type: "preflight",
data: s ?? { script: "" }
});
o(t);
},
children: "Preflight Script"
}),
/* @__PURE__ */ jsx(DropdownMenuSeparator, {}),
/* @__PURE__ */ jsx(DropdownMenuItem, {
onSelect: () => {
let t = c.find((t) => t.type === "settings") ?? a({
type: "settings",
data: {}
});
o(t);
},
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: !S,
className: "border-l",
children: [S === "collections" && /* @__PURE__ */ jsx(Collections, {}), S === "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 relative flex-1 overflow-hidden",
children: O
})]
})
]
})
]
});
};
const Laboratory = (t) => {
let n = useCallback((n) => {
let [i, a] = n.split(":");
return t.permissions?.[i]?.[a] ?? !0;
}, [t.permissions]), i = useSettings(t), a = useEnv(t), o = usePreflight({
...t,
envApi: a
}), s = usePlugins(t), c = useTests(t), d = useTabs(t), f = useEndpoint({
...t,
settingsApi: i
}), g = useCollections({
...t,
tabsApi: d
}), b = useOperations({
...t,
collectionsApi: g,
tabsApi: d,
envApi: a,
preflightApi: o,
settingsApi: i,
pluginsApi: s,
checkPermissions: n
}), x = useHistory(t), [S, C] = useState(!1), [w, E] = useState(!1), [O, A] = useState(!1), M = useCallback(() => {
C(!0);
}, []), F = useCallback(() => {
E(!0);
}, []), I = useCallback(() => {
A(!0);
}, []), R = useForm({
defaultValues: { name: "" },
validators: { onSubmit: addCollectionFormSchema },
onSubmit: ({ value: t }) => {
g.addCollection({ name: t.name }), C(!1);
}
}), qA = useForm({
defaultValues: { endpoint: f.endpoint ?? "" },
validators: { onSubmit: updateEndpointFormSchema },
onSubmit: ({ value: t }) => {
f.setEndpoint(t.endpoint), E(!1);
}
}), V = useForm({
defaultValues: { name: "" },
validators: { onSubmit: addTestFormSchema },
onSubmit: ({ value: t }) => {
c.addTest({ name: t.name }), A(!1);
}
}), [q, JA] = useState(!1), [YA, XA] = useState({
placeholder: "",
defaultValue: void 0,
onSubmit: void 0
}), ZA = useCallback((t) => {
XA({
placeholder: t.placeholder,
defaultValue: t.defaultValue,
onSubmit: t.onSubmit
}), setTimeout(() => {
JA(!0);
}, 200);
}, []), [QA, $A] = useState(null), [ej, tj] = useState(!1), nj = useCallback(() => {
tj(!0);
}, []), rj = useCallback(() => {
tj(!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", t.theme, { "fixed inset-0 z-50": ej }),
ref: $A,
children: [
/* @__PURE__ */ jsx(Toaster, {
richColors: !0,
closeButton: !0,
position: "top-right",
theme: t.theme
}),
/* @__PURE__ */ jsx(Dialog, {
open: w,
onOpenChange: E,
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: (t) => {
t.preventDefault(), qA.handleSubmit();
},
children: /* @__PURE__ */ jsx(FieldGroup, { children: /* @__PURE__ */ jsx(qA.Field, {
name: "endpoint",
children: (t) => {
let n = t.state.meta.isTouched && !t.state.meta.isValid;
return /* @__PURE__ */ jsx(Input, {
id: t.name,
name: t.name,
value: t.state.value,
onBlur: t.handleBlur,
onChange: (n) => t.handleChange(n.target.value),
"aria-invalid": n,
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: q,
onOpenChange: JA,
...YA
}),
/* @__PURE__ */ jsx(Dialog, {
open: S,
onOpenChange: C,
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: (t) => {
t.preventDefault(), R.handleSubmit();
},
children: /* @__PURE__ */ jsx(FieldGroup, { children: /* @__PURE__ */ jsx(R.Field, {
name: "name",
children: (t) => {
let n = t.state.meta.isTouched && !t.state.meta.isValid;
return /* @__PURE__ */ jsxs(Field, {
"data-invalid": n,
children: [
/* @__PURE__ */ jsx(FieldLabel, {
htmlFor: t.name,
children: "Name"
}),
/* @__PURE__ */ jsx(Input, {
id: t.name,
name: t.name,
value: t.state.value,
onBlur: t.handleBlur,
onChange: (n) => t.handleChange(n.target.value),
"aria-invalid": n,
placeholder: "Enter name of the collection",
autoComplete: "off"
}),
n && /* @__PURE__ */ jsx(FieldError, { errors: t.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: O,
onOpenChange: A,
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: (t) => {
t.preventDefault(), V.handleSubmit();
},
children: /* @__PURE__ */ jsx(FieldGroup, { children: /* @__PURE__ */ jsx(V.Field, {
name: "name",
children: (t) => {
let n = t.state.meta.isTouched && !t.state.meta.isValid;
return /* @__PURE__ */ jsxs(Field, {
"data-invalid": n,
children: [
/* @__PURE__ */ jsx(FieldLabel, {
htmlFor: t.name,
children: "Name"
}),
/* @__PURE__ */ jsx(Input, {
id: t.name,
name: t.name,
value: t.state.value,
onBlur: t.handleBlur,
onChange: (n) => t.handleChange(n.target.value),
"aria-invalid": n,
placeholder: "Enter name of the test",
autoComplete: "off"
}),
n && /* @__PURE__ */ jsx(FieldError, { errors: t.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, {
...t,
...c,
...i,
...s,
...a,
...o,
...d,
...f,
...g,
...b,
...x,
container: QA,
openAddCollectionDialog: M,
openUpdateEndpointDialog: F,
openAddTestDialog: I,
openPreflightPromptModal: ZA,
goToFullScreen: nj,
exitFullScreen: rj,
isFullScreen: ej,
checkPermissions: n,
children: /* @__PURE__ */ jsx(LaboratoryContent, {})
})
]
})] });
}, renderLaboratory = (t, n) => {
let i = "hive-laboratory", a = (t) => {
let n = localStorage.getItem(`${i}:${t}`);
return n ? JSON.parse(n) : null;
}, o = (t, n) => {
localStorage.setItem(`${i}:${t}`, JSON.stringify(n));
};
if (!t) throw Error("Laboratory element not found");
return ReactDOM.createRoot(t).render(/* @__PURE__ */ jsx(Laboratory, {
theme: "dark",
defaultEndpoint: a("endpoint") ?? window.location.origin + window.location.pathname,
onEndpointChange: (t) => {
o("endpoint", t ?? "");
},
defaultCollections: a("collections") ?? [],
onCollectionsChange: (t) => {
o("collections", t);
},
defaultTabs: a("tabs") ?? [],
onTabsChange: (t) => {
o("tabs", t);
},
defaultOperations: a("operations") ?? [],
onOperationsChange: (t) => {
o("operations", t);
},
defaultActiveTabId: a("activeTabId") ?? null,
onActiveTabIdChange: (t) => {
o("activeTabId", t ?? "");
},
defaultPreflight: a("preflight") ?? null,
onPreflightChange: (t) => {
o("preflight", t ?? "");
},
defaultEnv: a("env") ?? null,
onEnvChange: (t) => {
o("env", t ?? "");
},
defaultSettings: a("settings") ?? null,
onSettingsChange: (t) => {
o("settings", t ?? "");
},
defaultHistory: a("history") ?? [],
onHistoryChange: (t) => {
o("history", t);
},
...n
}));
};
export { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, Editor, Laboratory, LaboratoryProvider, Tabs, TabsContent, TabsList, TabsTrigger, defaultLaboratorySettings, normalizeLaboratorySettings, renderLaboratory, runIsolatedLabScript, useCollections, useEndpoint, useEnv, useHistory, useLaboratory, useOperations, usePlugins, usePreflight, useSettings, useTabs, useTests };