@graphql-hive/laboratory
Version:
[Hive](https://the-guild.dev/graphql/hive) is a fully open-source schema registry, analytics, metrics and gateway for [GraphQL federation](https://the-guild.dev/graphql/hive/federation) and other GraphQL APIs.
35,424 lines • 1.74 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$1, t as CancellationTokenSource, u as SelectionDirection } from "./editor.api-DPgI1LYm.js";
import { $ as GraphQLObjectType, At as inspect$1, B as GraphQLBoolean, Bt as invariant$1, C as GraphQLSchema, Ct as print, D as TypeMetaFieldDef, Dt as parseValue, E as TypeKind, Et as parse, F as GraphQLDirective, Ft as printBlockString$1, G as isSpecifiedScalarType, H as GraphQLID, Ht as devAssert, I as GraphQLIncludeDirective, It as Kind, J as GraphQLEnumType, K as specifiedScalarTypes, L as GraphQLSkipDirective, Lt as DirectiveLocation, M as isIterableObject$2, Mt as isPunctuatorTokenKind, Nt as TokenKind, O as TypeNameMetaFieldDef, Ot as Source, P as GraphQLDeprecatedDirective, Q as GraphQLNonNull, R as isSpecifiedDirective, Rt as OperationTypeNode, S as assertValidSchema, St as valueFromASTUntyped, T as SchemaMetaFieldDef, Tt as keyValMap, U as GraphQLInt, V as GraphQLFloat, Vt as isObjectLike$2, W as GraphQLString, X as GraphQLInterfaceType, Y as GraphQLInputObjectType, Z as GraphQLList, _ as pathToArray$1, _t as isNullableType, a as getContextAtPosition, at as getNamedType, b as visitWithTypeInfo, bt as isScalarType, c as validate, ct as isCompositeType, d as getArgumentValues$2, dt as isInputType, et as GraphQLScalarType, f as getDirectiveValues, ft as isInterfaceType, g as addPath$1, gt as isNonNullType, h as coerceInputValue, ht as isNamedType, it as assertObjectType, jt as Lexer, k as introspectionTypes, kt as isSource, l as collectFields$2, lt as isEnumType, m as valueFromAST, mt as isListType, n as getHoverInformation, nt as assertInterfaceType, o as buildASTSchema, ot as getNullableType, p as getVariableValues$1, pt as isLeafType, q as doTypesOverlap, r as Position, rt as assertNullableType, s as buildSchema, st as isAbstractType, t as registerLanguage, tt as GraphQLUnionType, u as collectSubfields$1, ut as isInputObjectType, v as isTypeSystemDefinitionNode, vt as isObjectType, w as isSchema, wt as visit, x as typeFromAST, xt as isUnionType, y as TypeInfo, yt as isOutputType, z as specifiedDirectives, zt as GraphQLError } from "./monaco-editor-CQb_QZSU.js";
import "./monaco.contribution-BUcZa-0g.js";
import "./monaco.contribution-BrPPpP-5.js";
import ReactDOM from "react-dom/client";
import * as React from "react";
import ke, { Fragment, cloneElement, createContext, createElement, forwardRef, memo, useCallback, useContext, useDeferredValue, useEffect, useId, useImperativeHandle, useInsertionEffect, 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, BookOpenIcon, BookmarkIcon, Box, BoxIcon, Boxes, CheckIcon, ChevronDownIcon, ChevronLeftIcon, 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, PencilIcon, PlayIcon, PowerIcon, PowerOffIcon, RefreshCcwIcon, RefreshCwIcon, ScrollTextIcon, SearchIcon, ServerIcon, SettingsIcon, SquareIcon, SquarePenIcon, SquareTerminal, TextAlignStartIcon, Trash2Icon, 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-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-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-wide:.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}.collapse{visibility:collapse}.visible{visibility:visible}.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}.static{position:static}.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%}.-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}.z-200{z-index:200}.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-1\\.5{margin-right:calc(var(--spacing)*1.5)}.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}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.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-64{height:calc(var(--spacing)*64)}.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\\(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-150{max-height:calc(var(--spacing)*150)}.max-h-\\[300px\\]{max-height:300px}.max-h-\\[var\\(--radix-select-content-available-height\\)\\]{max-height:var(--radix-select-content-available-height)}.min-h-16{min-height:calc(var(--spacing)*16)}.\\!w-8{width:calc(var(--spacing)*8)!important}.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-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-72{min-width:calc(var(--spacing)*72)}.min-w-\\[8rem\\]{min-width:8rem}.min-w-\\[var\\(--radix-select-trigger-width\\)\\]{min-width:var(--radix-select-trigger-width)}.flex-1{flex:1}.shrink-0{flex-shrink:0}.grow{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-\\[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-0\\.5{gap:calc(var(--spacing)*.5)}.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{border-radius:.25rem}.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-none{--tw-border-style:none;border-style:none}.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))!important}@supports (color:color-mix(in lab, red, red)){.\\!bg-accent\\/50{background-color:color-mix(in oklab,hsl(var(--accent))50%,transparent)!important}}.\\!bg-destructive\\/60{background-color:hsl(var(--destructive))!important}@supports (color:color-mix(in lab, red, red)){.\\!bg-destructive\\/60{background-color:color-mix(in oklab,hsl(var(--destructive))60%,transparent)!important}}.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}.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-1\\.5{padding-inline:calc(var(--spacing)*1.5)!important}.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\\.5{padding-left:calc(var(--spacing)*1.5)!important}.pl-1{padding-left:calc(var(--spacing)*1)}.pl-2{padding-left:calc(var(--spacing)*2)}.pl-2\\.5{padding-left:calc(var(--spacing)*2.5)}.pl-3{padding-left:calc(var(--spacing)*3)}.pl-8{padding-left:calc(var(--spacing)*8)}.text-center{text-align:center}.text-left{text-align:left}.align-\\[-2px\\]{vertical-align:-2px}.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))}.text-\\[11px\\]{font-size:11px}.leading-none{--tw-leading:1;line-height:1}.leading-normal{--tw-leading:var(--leading-normal);line-height:var(--leading-normal)}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.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-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.tracking-widest{--tw-tracking:var(--tracking-widest);letter-spacing:var(--tracking-widest)}.text-balance{text-wrap:balance}.break-all{word-break:break-all}.text-ellipsis{text-overflow:ellipsis}.whitespace-normal{white-space:normal}.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}.uppercase{text-transform:uppercase}.italic{font-style:italic}.underline{text-decoration-line:underline}.underline-offset-2{text-underline-offset:2px}.underline-offset-4{text-underline-offset:4px}.opacity-0{opacity:0}.opacity-50{opacity:.5}.opacity-70{opacity:.7}.shadow{--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-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-none{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-0{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(0px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-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}.filter{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.transition-\\[color\\,box-shadow\\]{transition-property:color,box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-shadow{transition-property:box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-none{transition-property:none}.duration-200{--tw-duration:.2s;transition-duration:.2s}.fade-in-0{--tw-enter-opacity:0}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.zoom-in-95{--tw-enter-scale:.95}.\\[stroke-dasharray\\:12_8\\]{stroke-dasharray:12 8}.paused{animation-play-state:paused}.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-orientation\\=horizontal\\]\\]\\/field\\:text-balance:is(:where(.group\\/field):has([data-orientation=horizontal]) *){text-wrap:balance}.group-has-\\[\\>input\\]\\/input-group\\:pt-2\\.5:is(:where(.group\\/input-group):has(>input) *){padding-top:calc(var(--spacing)*2.5)}.group-has-\\[\\>input\\]\\/input-group\\:pb-2\\.5:is(:where(.group\\/input-group):has(>input) *){padding-bottom:calc(var(--spacing)*2.5)}.group-data-\\[disabled\\=true\\]\\:pointer-events-none:is(:where(.group)[data-disabled=true] *){pointer-events:none}.group-data-\\[disabled\\=true\\]\\:opacity-50:is(:where(.group)[data-disabled=true] *),.group-data-\\[disabled\\=true\\]\\/field\\:opacity-50:is(:where(.group\\/field)[data-disabled=true] *),.group-data-\\[disabled\\=true\\]\\/input-group\\:opacity-50:is(:where(.group\\/input-group)[data-disabled=true] *){opacity:.5}.group-data-\\[variant\\=outline\\]\\/field-group\\:-mb-2:is(:where(.group\\/field-group)[data-variant=outline] *){margin-bottom:calc(var(--spacing)*-2)}.peer-disabled\\:cursor-not-allowed:is(:where(.peer):disabled~*){cursor:not-allowed}.peer-disabled\\:opacity-50:is(:where(.peer):disabled~*){opacity:.5}.selection\\:bg-primary ::selection,.selection\\:bg-primary::selection{background-color:hsl(var(--primary))}.selection\\:text-primary-foreground ::selection,.selection\\:text-primary-foreground::selection{color:hsl(var(--primary-foreground))}.file\\:inline-flex::file-selector-button{display:inline-flex}.file\\:h-7::file-selector-button{height:calc(var(--spacing)*7)}.file\\:border-0::file-selector-button{border-style:var(--tw-border-style);border-width:0}.file\\:bg-transparent::file-selector-button{background-color:#0000}.file\\:text-sm::file-selector-button{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.file\\:font-medium::file-selector-button{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.file\\:text-foreground::file-selector-button{color:hsl(var(--foreground))}.placeholder\\:text-muted-foreground::placeholder{color:hsl(var(--muted-foreground))}.after\\:absolute:after{content:var(--tw-content);position:absolute}.after\\:inset-y-0:after{content:var(--tw-content);inset-block:calc(var(--spacing)*0)}.after\\:left-1\\/2:after{content:var(--tw-content);left:50%}.after\\:w-1:after{content:var(--tw-content);width:calc(var(--spacing)*1)}.after\\:-translate-x-1\\/2:after{content:var(--tw-content);--tw-translate-x:calc(calc(1/2*100%)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.last\\:mt-0:last-child{margin-top:calc(var(--spacing)*0)}: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-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-80:hover{opacity:.8}.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-\\[\\[data-slot\\=input-group-control\\]\\:focus-visible\\]\\:border-ring:has([data-slot=input-group-control]:focus-visible){border-color:hsl(var(--ring))}.has-\\[\\[data-slot\\=input-group-control\\]\\:focus-visible\\]\\:ring-\\[3px\\]:has([data-slot=input-group-control]:focus-visible){--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(3px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.has-\\[\\[data-slot\\=input-group-control\\]\\:focus-visible\\]\\:ring-ring\\/50:has([data-slot=input-group-control]:focus-visible){--tw-ring-color:hsl(var(--ring))}@supports (color:color-mix(in lab, red, red)){.has-\\[\\[data-slot\\=input-group-control\\]\\:focus-visible\\]\\:ring-ring\\/50:has([data-slot=input-group-control]:focus-visible){--tw-ring-color:color-mix(in oklab,hsl(var(--ring))50%,transparent)}}.has-\\[\\[data-slot\\]\\[aria-invalid\\=true\\]\\]\\:border-destructive:has([data-slot][aria-invalid=true]){border-color:hsl(var(--destructive))}.has-\\[\\[data-slot\\]\\[aria-invalid\\=true\\]\\]\\:ring-destructive\\/20:has([data-slot][aria-invalid=true]){--tw-ring-color:hsl(var(--destructive))}@supports (color:color-mix(in lab, red, red)){.has-\\[\\[data-slot\\]\\[aria-invalid\\=true\\]\\]\\:ring-destructive\\/20:has([data-slot][aria-invalid=true]){--tw-ring-color:color-mix(in oklab,hsl(var(--destructive))20%,transparent)}}.has-\\[\\>\\[data-align\\=block-end\\]\\]\\:h-auto:has(>[data-align=block-end]){height:auto}.has-\\[\\>\\[data-align\\=block-end\\]\\]\\:flex-col:has(>[data-align=block-end]){flex-direction:column}.has-\\[\\>\\[data-align\\=block-start\\]\\]\\:h-auto:has(>[data-align=block-start]){height:auto}.has-\\[\\>\\[data-align\\=block-start\\]\\]\\:flex-col:has(>[data-align=block-start]){flex-direction:column}.has-\\[\\>\\[data-slot\\=button-group\\]\\]\\:gap-2:has(>[data-slot=button-group]){gap:calc(var(--spacing)*2)}.has-\\[\\>\\[data-slot\\=card-action\\]\\]\\:grid-cols-\\[1fr_auto\\]:has(>[data-slot=card-action]){grid-template-columns:1fr auto}.has-\\[\\>\\[data-slot\\=checkbox-group\\]\\]\\:gap-3:has(>[data-slot=checkbox-group]){gap:calc(var(--spacing)*3)}.has-\\[\\>\\[data-slot\\=field-content\\]\\]\\:items-start:has(>[data-slot=field-content]){align-items:flex-start}.has-\\[\\>\\[data-slot\\=field\\]\\]\\:w-full:has(>[data-slot=field]){width:100%}.has-\\[\\>\\[data-slot\\=field\\]\\]\\:flex-col:has(>[data-slot=field]){flex-direction:column}.has-\\[\\>\\[data-slot\\=field\\]\\]\\:rounded-md:has(>[data-slot=field]){border-radius:calc(var(--radius) - 2px)}.has-\\[\\>\\[data-slot\\=field\\]\\]\\:border:has(>[data-slot=field]){border-style:var(--tw-border-style);border-width:1px}.has-\\[\\>\\[data-slot\\=radio-group\\]\\]\\:gap-3:has(>[data-slot=radio-group]){gap:calc(var(--spacing)*3)}.has-\\[\\>\\[data-state\\=checked\\]\\]\\:border-primary:has(>[data-state=checked]){border-color:hsl(var(--primary))}.has-\\[\\>\\[data-state\\=checked\\]\\]\\:bg-primary\\/10:has(>[data-state=checked]){background-color:hsl(var(--primary))}@supports (color:color-mix(in lab, red, red)){.has-\\[\\>\\[data-state\\=checked\\]\\]\\:bg-primary\\/10:has(>[data-state=checked]){background-color:color-mix(in oklab,hsl(var(--primary))10%,transparent)}}.has-\\[\\>button\\]\\:mr-\\[-0\\.45rem\\]:has(>button){margin-right:-.45rem}.has-\\[\\>button\\]\\:ml-\\[-0\\.45rem\\]:has(>button){margin-left:-.45rem}.has-\\[\\>kbd\\]\\:mr-\\[-0\\.35rem\\]:has(>kbd){margin-right:-.35rem}.has-\\[\\>kbd\\]\\:ml-\\[-0\\.35rem\\]:has(>kbd){margin-left:-.35rem}.has-\\[\\>svg\\]\\:p-0:has(>svg){padding:calc(var(--spacing)*0)}.has-\\[\\>svg\\]\\:px-2:has(>svg){padding-inline:calc(var(--spacing)*2)}.has-\\[\\>svg\\]\\:px-2\\.5:has(>svg){padding-inline:calc(var(--spacing)*2.5)}.has-\\[\\>svg\\]\\:px-3:has(>svg){padding-inline:calc(var(--spacing)*3)}.has-\\[\\>svg\\]\\:px-4:has(>svg){padding-inline:calc(var(--spacing)*4)}.has-\\[\\>textarea\\]\\:h-auto:has(>textarea){height:auto}.aria-invalid\\:border-destructive[aria-invalid=true]{border-color:hsl(var(--destructive))}.aria-invalid\\:ring-destructive\\/20[aria-invalid=true]{--tw-ring-color:hsl(var(--destructive))}@supports (color:color-mix(in lab, red, red)){.aria-invalid\\:ring-destructive\\/20[aria-invalid=true]{--tw-ring-color:color-mix(in oklab,hsl(var(--destructive))20%,transparent)}}.aria-invalid\\:ring-destructive\\/40[aria-invalid=true]{--tw-ring-color:hsl(var(--destructive))}@supports (color:color-mix(in lab, red, red)){.aria-invalid\\:ring-destructive\\/40[aria-invalid=true]{--tw-ring-color:color-mix(in oklab,hsl(var(--destructive))40%,transparent)}}.data-disabled\\:pointer-events-none[data-disabled]{pointer-events:none}.data-disabled\\:opacity-50[data-disabled]{opacity:.5}.data-dragging\\:cursor-grabbing[data-dragging]{cursor:grabbing}.data-dragging\\:opacity-0[data-dragging]{opacity:0}.data-inset\\:pl-8[data-inset]{padding-left:calc(var(--spacing)*8)}.data-placeholder\\:text-muted-foreground[data-placeholder]{color:hsl(var(--muted-foreground))}.data-\\[disabled\\]\\: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\\=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-\\[\\[data-slot\\]\\[aria-invalid\\=true\\]\\]\\:ring-destructive\\/40:has([data-slot][aria-invalid=true]){--tw-ring-color:hsl(var(--destructive))}@supports (color:color-mix(in lab, red, red)){.dark\\:has-\\[\\[data-slot\\]\\[aria-invalid\\=true\\]\\]\\:ring-destructive\\/40:has([data-slot][aria-invalid=true]){--tw-ring-color:color-mix(in oklab,hsl(var(--destructive))40%,transparent)}}.dark\\:aria-invalid\\:ring-destructive\\/40[aria-invalid=true]{--tw-ring-color:hsl(var(--destructive))}@supports (color:color-mix(in lab, red, red)){.dark\\:aria-invalid\\:ring-destructive\\/40[aria-invalid=true]{--tw-ring-color:color-mix(in oklab,hsl(var(--destructive))40%,transparent)}}}.\\[\\&_\\[cmdk-group-heading\\]\\]\\:px-2 [cmdk-group-heading]{padding-inline:calc(var(--spacing)*2)}.\\[\\&_\\[cmdk-group-heading\\]\\]\\:py-1\\.5 [cmdk-group-heading]{padding-block:calc(var(--spacing)*1.5)}.\\[\\&_\\[cmdk-group-heading\\]\\]\\:text-xs [cmdk-group-heading]{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.\\[\\&_\\[cmdk-group-heading\\]\\]\\:font-medium [cmdk-group-heading]{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.\\[\\&_\\[cmdk-group-heading\\]\\]\\:text-muted-foreground [cmdk-group-heading]{color:hsl(var(--muted-foreground))}.\\[\\&_\\[cmdk-group\\]\\]\\:px-2 [cmdk-group]{padding-inline:calc(var(--spacing)*2)}.\\[\\&_\\[cmdk-group\\]\\:not\\(\\[hidden\\]\\)_\\~\\[cmdk-group\\]\\]\\:pt-0 [cmdk-group]:not([hidden])~[cmdk-group]{padding-top:calc(var(--spacing)*0)}.\\[\\&_\\[cmdk-input-wrapper\\]_svg\\]\\:size-5 [cmdk-input-wrapper] svg{width:calc(var(--spacing)*5);height:calc(var(--spacing)*5)}.\\[\\&_\\[cmdk-input\\]\\]\\:h-12 [cmdk-input]{height:calc(var(--spacing)*12)}.\\[\\&_\\[cmdk-item\\]\\]\\:px-2 [cmdk-item]{padding-inline:calc(var(--spacing)*2)}.\\[\\&_\\[cmdk-item\\]\\]\\:py-3 [cmdk-item]{padding-block:calc(var(--spacing)*3)}.\\[\\&_\\[cmdk-item\\]_svg\\]\\:size-5 [cmdk-item] svg{width:calc(var(--spacing)*5);height:calc(var(--spacing)*5)}.\\[\\&_a\\]\\:text-primary a{color:hsl(var(--primary))}.\\[\\&_a\\]\\:underline a{text-decoration-line:underline}.\\[\\&_code\\]\\:rounded code{border-radius:.25rem}.\\[\\&_code\\]\\:bg-black\\/20 code{background-color:#0003}@supports (color:color-mix(in lab, red, red)){.\\[\\&_code\\]\\:bg-black\\/20 code{background-color:color-mix(in oklab,var(--color-black)20%,transparent)}}.\\[\\&_code\\]\\:px-1 code{padding-inline:calc(var(--spacing)*1)}.\\[\\&_code\\]\\:py-0\\.5 code{padding-block: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 .monaco-editor{--vscode-focusBorder:transparent!important}.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-blur{syntax:\"*\";inherits:false}@property --tw-brightness{syntax:\"*\";inherits:false}@property --tw-contrast{syntax:\"*\";inherits:false}@property --tw-grayscale{syntax:\"*\";inherits:false}@property --tw-hue-rotate{syntax:\"*\";inherits:false}@property --tw-invert{syntax:\"*\";inherits:false}@property --tw-opacity{syntax:\"*\";inherits:false}@property --tw-saturate{syntax:\"*\";inherits:false}@property --tw-sepia{syntax:\"*\";inherits:false}@property --tw-drop-shadow{syntax:\"*\";inherits:false}@property --tw-drop-shadow-color{syntax:\"*\";inherits:false}@property --tw-drop-shadow-alpha{syntax:\"<percentage>\";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:\"*\";inherits:false}@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 i = 0; i < 256; ++i) byteToHex.push((i + 256).toString(16).slice(1));
function unsafeStringify(i, a = 0) {
return (byteToHex[i[a + 0]] + byteToHex[i[a + 1]] + byteToHex[i[a + 2]] + byteToHex[i[a + 3]] + "-" + byteToHex[i[a + 4]] + byteToHex[i[a + 5]] + "-" + byteToHex[i[a + 6]] + byteToHex[i[a + 7]] + "-" + byteToHex[i[a + 8]] + byteToHex[i[a + 9]] + "-" + byteToHex[i[a + 10]] + byteToHex[i[a + 11]] + byteToHex[i[a + 12]] + byteToHex[i[a + 13]] + byteToHex[i[a + 14]] + byteToHex[i[a + 15]]).toLowerCase();
}
var rnds8 = new Uint8Array(16);
function rng() {
return crypto.getRandomValues(rnds8);
}
function v4(i, a, o) {
return !a && !i && crypto.randomUUID ? crypto.randomUUID() : _v4(i, a, o);
}
function _v4(i, a, o) {
i ||= {};
let s = i.random ?? i.rng?.() ?? rng();
if (s.length < 16) throw Error("Random bytes length must be >= 16");
if (s[6] = s[6] & 15 | 64, s[8] = s[8] & 63 | 128, a) {
if (o ||= 0, o < 0 || o + 16 > a.length) throw RangeError(`UUID byte range ${o}:${o + 15} is out of buffer bounds`);
for (let i = 0; i < 16; ++i) a[o + i] = s[i];
return a;
}
return unsafeStringify(s);
}
var v4_default = v4;
const useCollections = (i) => {
let [a, o] = useState(i.defaultCollections ?? []), s = useCallback((s) => {
let c = {
...s,
id: v4_default(),
createdAt: (/* @__PURE__ */ new Date()).toISOString(),
operations: s.operations?.map((i) => ({
...i,
createdAt: (/* @__PURE__ */ new Date()).toISOString()
})) ?? []
}, d = [...a, c];
return o(d), i.onCollectionsChange?.(d), i.onCollectionCreate?.(c), c;
}, [a, i]), c = useCallback((s, c) => {
let d = {
...c,
createdAt: (/* @__PURE__ */ new Date()).toISOString()
}, f = a.map((i) => i.id === s ? {
...i,
operations: [...i.operations, d]
} : i);
o(f), i.onCollectionsChange?.(f);
let g = f.find((i) => i.id === s);
g && (i.onCollectionUpdate?.(g), i.onCollectionOperationCreate?.(g, d));
}, [a, i]), d = useCallback((s) => {
let c = a.find((i) => i.id === s), d = a.filter((i) => i.id !== s);
o(d), i.onCollectionsChange?.(d), c && i.onCollectionDelete?.(c);
}, [a, i]), f = useCallback((s, c) => {
let d, f = a.map((i) => i.id === s ? {
...i,
operations: i.operations.filter((i) => i.id === c ? (d = i, !1) : !0)
} : i);
o(f), i.onCollectionsChange?.(f);
let g = f.find((i) => i.id === s);
g && (i.onCollectionUpdate?.(g), d && i.onCollectionOperationDelete?.(g, d));
}, [a, i]), g = useCallback((s, c) => {
let d = a.map((i) => i.id === s ? {
...i,
...c
} : i);
o(d), i.onCollectionsChange?.(d);
let f = d.find((i) => i.id === s);
f && i.onCollectionUpdate?.(f);
}, [a, i]), b = useCallback((s, c, d) => {
let f, g = a.map((i) => i.id === s ? {
...i,
operations: i.operations.map((i) => i.id === c ? (f = {
...i,
...d
}, f) : i)
} : i);
o(g), i.onCollectionsChange?.(g);
let b = g.find((i) => i.id === s);
b && (i.onCollectionUpdate?.(b), f && i.onCollectionOperationUpdate?.(b, f));
}, [a, i]);
return {
collections: a,
addCollection: s,
addOperationToCollection: c,
deleteCollection: d,
deleteOperationFromCollection: f,
updateCollection: g,
updateOperationInCollection: b
};
}, versionInfo = Object.freeze({
major: 16,
minor: 14,
patch: 2,
preReleaseTag: null
});
function isPromise$1(i) {
return typeof i?.then == "function";
}
function memoize3$2(i) {
let a;
return function(o, s, c) {
a === void 0 && (a = /* @__PURE__ */ new WeakMap());
let d = a.get(o);
d === void 0 && (d = /* @__PURE__ */ new WeakMap(), a.set(o, d));
let f = d.get(s);
f === void 0 && (f = /* @__PURE__ */ new WeakMap(), d.set(s, f));
let g = f.get(c);
return g === void 0 && (g = i(o, s, c), f.set(c, g)), g;
};
}
function promiseForObject$1(i) {
return Promise.all(Object.values(i)).then((a) => {
let o = Object.create(null);
for (let [s, c] of Object.keys(i).entries()) o[c] = a[s];
return o;
});
}
function promiseReduce$2(i, a, o) {
let s = o;
for (let o of i) s = isPromise$1(s) ? s.then((i) => a(i, o)) : a(s, o);
return s;
}
function toError(i) {
return i instanceof Error ? i : new NonErrorThrown(i);
}
var NonErrorThrown = class extends Error {
constructor(i) {
super("Unexpected error value: " + inspect$1(i)), this.name = "NonErrorThrown", this.thrownValue = i;
}
};
function locatedError(i, a, o) {
let s = toError(i);
return isLocatedGraphQLError(s) ? s : new GraphQLError(s.message, {
nodes: s.nodes ?? a,
source: s.source,
positions: s.positions,
path: o,
originalError: s
});
}
function isLocatedGraphQLError(i) {
return Array.isArray(i.path);
}
var collectSubfields$2 = memoize3$2((i, a, o) => collectSubfields$1(i.schema, i.fragments, i.variableValues, a, o)), CollectedErrors = class {
constructor() {
this._errorPositions = /* @__PURE__ */ new Set(), this._errors = [];
}
get errors() {
return this._errors;
}
add(i, a) {
this._hasNulledPosition(a) || (this._errorPositions.add(a), this._errors.push(i));
}
_hasNulledPosition(i) {
let a = i;
for (; a !== void 0;) {
if (this._errorPositions.has(a)) return !0;
a = a.prev;
}
return this._errorPositions.has(void 0);
}
};
function execute$2(i) {
arguments.length < 2 || devAssert(!1, "graphql@16 dropped long-deprecated support for positional arguments, please pass an object instead.");
let { schema: a, document: o, variableValues: s, rootValue: c } = i;
assertValidExecutionArguments(a, o, s);
let d = buildExecutionContext$1(i);
if (!("schema" in d)) return { errors: d };
try {
let { operation: i } = d, a = executeOperation$1(d, i, c);
return isPromise$1(a) ? a.then((i) => buildResponse$1(i, d.collectedErrors.errors), (i) => (d.collectedErrors.add(i, void 0), buildResponse$1(null, d.collectedErrors.errors))) : buildResponse$1(a, d.collectedErrors.errors);
} catch (i) {
return d.collectedErrors.add(i, void 0), buildResponse$1(null, d.collectedErrors.errors);
}
}
function executeSync(i) {
let a = execute$2(i);
if (isPromise$1(a)) throw Error("GraphQL execution failed to complete synchronously.");
return a;
}
function buildResponse$1(i, a) {
return a.length === 0 ? { data: i } : {
errors: a,
data: i
};
}
function assertValidExecutionArguments(i, a, o) {
a || devAssert(!1, "Must provide document."), assertValidSchema(i), o == null || isObjectLike$2(o) || 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(i) {
let { schema: a, document: o, rootValue: s, contextValue: c, variableValues: d, operationName: f, fieldResolver: g, typeResolver: b, subscribeFieldResolver: x, options: S } = i, C, w = Object.create(null);
for (let i of o.definitions) switch (i.kind) {
case Kind.OPERATION_DEFINITION:
if (f == null) {
if (C !== void 0) return [new GraphQLError("Must provide operation name if query contains multiple operations.")];
C = i;
} else i.name?.value === f && (C = i);
break;
case Kind.FRAGMENT_DEFINITION:
w[i.name.value] = i;
break;
default:
}
if (!C) return f == null ? [new GraphQLError("Must provide an operation.")] : [new GraphQLError(`Unknown operation named "${f}".`)];
/* c8 ignore next */
let E = C.variableDefinitions ?? [], O = getVariableValues$1(a, E, d ?? {}, { maxErrors: S?.maxCoercionErrors ?? 50 });
return O.errors ? O.errors : {
schema: a,
fragments: w,
rootValue: s,
contextValue: c,
operation: C,
variableValues: O.coerced,
fieldResolver: g ?? defaultFieldResolver,
typeResolver: b ?? defaultTypeResolver$1,
subscribeFieldResolver: x ?? defaultFieldResolver,
collectedErrors: new CollectedErrors()
};
}
function executeOperation$1(i, a, o) {
let s = i.schema.getRootType(a.operation);
if (s == null) throw new GraphQLError(`Schema is not configured to execute ${a.operation} operation.`, { nodes: a });
let c = collectFields$2(i.schema, i.fragments, i.variableValues, s, a.selectionSet);
switch (a.operation) {
case OperationTypeNode.QUERY: return executeFields$1(i, s, o, void 0, c);
case OperationTypeNode.MUTATION: return executeFieldsSerially$1(i, s, o, void 0, c);
case OperationTypeNode.SUBSCRIPTION: return executeFields$1(i, s, o, void 0, c);
}
}
function executeFieldsSerially$1(i, a, o, s, c) {
return promiseReduce$2(c.entries(), (c, [d, f]) => {
let g = addPath$1(s, d, a.name), b = executeField$1(i, a, o, f, g);
return b === void 0 ? c : isPromise$1(b) ? b.then((i) => (c[d] = i, c)) : (c[d] = b, c);
}, Object.create(null));
}
function executeFields$1(i, a, o, s, c) {
let d = Object.create(null), f = !1;
try {
for (let [g, b] of c.entries()) {
let c = addPath$1(s, g, a.name), x = executeField$1(i, a, o, b, c);
x !== void 0 && (d[g] = x, isPromise$1(x) && (f = !0));
}
} catch (i) {
if (f) return promiseForObject$1(d).finally(() => {
throw i;
});
throw i;
}
return f ? promiseForObject$1(d) : d;
}
function executeField$1(i, a, o, s, c) {
let d = getFieldDef$1(i.schema, a, s[0]);
if (!d) return;
let f = d.type, g = d.resolve ?? i.fieldResolver, b = buildResolveInfo$1(i, d, s, a, c);
try {
let a = getArgumentValues$2(d, s[0], i.variableValues), x = i.contextValue, S = g(o, a, x, b), C;
return C = isPromise$1(S) ? S.then((a) => completeValue$1(i, f, s, b, c, a)) : completeValue$1(i, f, s, b, c, S), isPromise$1(C) ? C.then(void 0, (a) => {
let o = locatedError(a, s, pathToArray$1(c));
return handleFieldError$1(o, f, c, i);
}) : C;
} catch (a) {
let o = locatedError(a, s, pathToArray$1(c));
return handleFieldError$1(o, f, c, i);
}
}
function buildResolveInfo$1(i, a, o, s, c) {
return {
fieldName: a.name,
fieldNodes: o,
returnType: a.type,
parentType: s,
path: c,
schema: i.schema,
fragments: i.fragments,
rootValue: i.rootValue,
operation: i.operation,
variableValues: i.variableValues
};
}
function handleFieldError$1(i, a, o, s) {
if (isNonNullType(a)) throw i;
return s.collectedErrors.add(i, o), null;
}
function completeValue$1(i, a, o, s, c, d) {
if (d instanceof Error) throw d;
if (isNonNullType(a)) {
let f = completeValue$1(i, a.ofType, o, s, c, d);
if (f === null) throw Error(`Cannot return null for non-nullable field ${s.parentType.name}.${s.fieldName}.`);
return f;
}
if (d == null) return null;
if (isListType(a)) return completeListValue$1(i, a, o, s, c, d);
if (isLeafType(a)) return completeLeafValue$1(a, d);
if (isAbstractType(a)) return completeAbstractValue$1(i, a, o, s, c, d);
if (isObjectType(a)) return completeObjectValue$1(i, a, o, s, c, d);
/* c8 ignore next 6 */
invariant$1(!1, "Cannot complete value of unexpected output type: " + inspect$1(a));
}
function completeListValue$1(i, a, o, s, c, d) {
if (!isIterableObject$2(d)) throw new GraphQLError(`Expected Iterable, but did not find one for field "${s.parentType.name}.${s.fieldName}".`);
let f = a.ofType, g = !1, b = Array.from(d, (a, d) => {
let b = addPath$1(c, d, void 0);
try {
let c;
return c = isPromise$1(a) ? a.then((a) => completeValue$1(i, f, o, s, b, a)) : completeValue$1(i, f, o, s, b, a), isPromise$1(c) ? (g = !0, c.then(void 0, (a) => {
let s = locatedError(a, o, pathToArray$1(b));
return handleFieldError$1(s, f, b, i);
})) : c;
} catch (a) {
let s = locatedError(a, o, pathToArray$1(b));
return handleFieldError$1(s, f, b, i);
}
});
return g ? Promise.all(b) : b;
}
function completeLeafValue$1(i, a) {
let o = i.serialize(a);
if (o == null) throw Error(`Expected \`${inspect$1(i)}.serialize(${inspect$1(a)})\` to return non-nullable value, returned: ${inspect$1(o)}`);
return o;
}
function completeAbstractValue$1(i, a, o, s, c, d) {
let f = a.resolveType ?? i.typeResolver, g = i.contextValue, b = f(d, g, s, a);
return isPromise$1(b) ? b.then((f) => completeObjectValue$1(i, ensureValidRuntimeType$1(f, i, a, o, s, d), o, s, c, d)) : completeObjectValue$1(i, ensureValidRuntimeType$1(b, i, a, o, s, d), o, s, c, d);
}
function ensureValidRuntimeType$1(i, a, o, s, c, d) {
if (i == null) throw new GraphQLError(`Abstract type "${o.name}" must resolve to an Object type at runtime for field "${c.parentType.name}.${c.fieldName}". Either the "${o.name}" type should provide a "resolveType" function or each possible type should provide an "isTypeOf" function.`, s);
if (isObjectType(i)) throw new GraphQLError("Support for returning GraphQLObjectType from resolveType was removed in graphql-js@16.0.0 please return type name instead.");
if (typeof i != "string") throw new GraphQLError(`Abstract type "${o.name}" must resolve to an Object type at runtime for field "${c.parentType.name}.${c.fieldName}" with value ${inspect$1(d)}, received "${inspect$1(i)}".`);
let f = a.schema.getType(i);
if (f == null) throw new GraphQLError(`Abstract type "${o.name}" was resolved to a type "${i}" that does not exist inside the schema.`, { nodes: s });
if (!isObjectType(f)) throw new GraphQLError(`Abstract type "${o.name}" was resolved to a non-object type "${i}".`, { nodes: s });
if (!a.schema.isSubType(o, f)) throw new GraphQLError(`Runtime Object type "${f.name}" is not a possible type for "${o.name}".`, { nodes: s });
return f;
}
function completeObjectValue$1(i, a, o, s, c, d) {
let f = collectSubfields$2(i, a, o);
if (a.isTypeOf) {
let g = a.isTypeOf(d, i.contextValue, s);
if (isPromise$1(g)) return g.then((s) => {
if (!s) throw invalidReturnTypeError$1(a, d, o);
return executeFields$1(i, a, d, c, f);
});
if (!g) throw invalidReturnTypeError$1(a, d, o);
}
return executeFields$1(i, a, d, c, f);
}
function invalidReturnTypeError$1(i, a, o) {
return new GraphQLError(`Expected value of type "${i.name}" but got: ${inspect$1(a)}.`, { nodes: o });
}
const defaultTypeResolver$1 = function(i, a, o, s) {
if (isObjectLike$2(i) && typeof i.__typename == "string") return i.__typename;
let c = o.schema.getPossibleTypes(s), d = [];
for (let s = 0; s < c.length; s++) {
let f = c[s];
if (f.isTypeOf) {
let c = f.isTypeOf(i, a, o);
if (isPromise$1(c)) d[s] = c;
else if (c) return d.length && Promise.allSettled(d).catch(() => {}), f.name;
}
}
if (d.length) return Promise.all(d).then((i) => {
for (let a = 0; a < i.length; a++) if (i[a]) return c[a].name;
});
}, defaultFieldResolver = function(i, a, o, s) {
if (isObjectLike$2(i) || typeof i == "function") {
let c = i[s.fieldName];
return typeof c == "function" ? i[s.fieldName](a, o, s) : c;
}
};
function getFieldDef$1(i, a, o) {
let s = o.name.value;
return s === SchemaMetaFieldDef.name && i.getQueryType() === a ? SchemaMetaFieldDef : s === TypeMetaFieldDef.name && i.getQueryType() === a ? TypeMetaFieldDef : s === TypeNameMetaFieldDef.name ? TypeNameMetaFieldDef : a.getFields()[s];
}
function getIntrospectionQuery(i) {
let a = {
descriptions: !0,
specifiedByUrl: !1,
directiveIsRepeatable: !1,
schemaDescription: !1,
inputValueDeprecation: !1,
experimentalDirectiveDeprecation: !1,
oneOf: !1,
typeDepth: 9,
...i
}, o = a.descriptions ? "description" : "", s = a.specifiedByUrl ? "specifiedByURL" : "", c = a.directiveIsRepeatable ? "isRepeatable" : "", d = a.schemaDescription ? o : "";
function f(i) {
return a.inputValueDeprecation ? i : "";
}
function g(i) {
return a.experimentalDirectiveDeprecation ? i : "";
}
let b = a.oneOf ? "isOneOf" : "";
function x(i, a) {
if (i <= 0) return "";
if (i > 100) throw Error("Please set typeDepth to a reasonable value between 0 and 100; the default is 9.");
return `
${a}ofType {
${a} name
${a} kind${x(i - 1, a + " ")}
${a}}`;
}
return `
query IntrospectionQuery {
__schema {
${d}
queryType { name kind }
mutationType { name kind }
subscriptionType { name kind }
types {
...FullType
}
directives${g("(includeDeprecated: true)")} {
name
${o}
${c}
${g("isDeprecated")}
${g("deprecationReason")}
locations
args${f("(includeDeprecated: true)")} {
...InputValue
}
}
}
}
fragment FullType on __Type {
kind
name
${o}
${s}
${b}
fields(includeDeprecated: true) {
name
${o}
args${f("(includeDeprecated: true)")} {
...InputValue
}
type {
...TypeRef
}
isDeprecated
deprecationReason
}
inputFields${f("(includeDeprecated: true)")} {
...InputValue
}
interfaces {
...TypeRef
}
enumValues(includeDeprecated: true) {
name
${o}
isDeprecated
deprecationReason
}
possibleTypes {
...TypeRef
}
}
fragment InputValue on __InputValue {
name
${o}
type { ...TypeRef }
defaultValue
${f("isDeprecated")}
${f("deprecationReason")}
}
fragment TypeRef on __Type {
kind
name${x(a.typeDepth, " ")}
}
`;
}
function getOperationAST(i, a) {
let o = null;
for (let s of i.definitions) if (s.kind === Kind.OPERATION_DEFINITION) {
if (a == null) {
if (o) return null;
o = s;
} else if (s.name?.value === a) return s;
}
return o;
}
function introspectionFromSchema(i, a) {
let o = {
specifiedByUrl: !0,
directiveIsRepeatable: !0,
schemaDescription: !0,
inputValueDeprecation: !0,
experimentalDirectiveDeprecation: !0,
oneOf: !0,
...a
}, s = parse(getIntrospectionQuery(o)), c = executeSync({
schema: i,
document: s
});
return !c.errors && c.data || invariant$1(!1), c.data;
}
function buildClientSchema(i, a) {
isObjectLike$2(i) && isObjectLike$2(i.__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(i)}.`);
let o = i.__schema, s = keyValMap(o.types, (i) => i.name, (i) => w(i));
for (let i of [...specifiedScalarTypes, ...introspectionTypes]) s[i.name] && (s[i.name] = i);
let c = o.queryType ? S(o.queryType) : null, d = o.mutationType ? S(o.mutationType) : null, f = o.subscriptionType ? S(o.subscriptionType) : null, g = o.directives ? o.directives.map(dP) : [];
return new GraphQLSchema({
description: o.description,
query: c,
mutation: d,
subscription: f,
types: Object.values(s),
directives: g,
assumeValid: a?.assumeValid
});
function b(i) {
if (i.kind === TypeKind.LIST) {
let a = i.ofType;
if (!a) throw Error("Decorated type deeper than introspection query.");
return new GraphQLList(b(a));
}
if (i.kind === TypeKind.NON_NULL) {
let a = i.ofType;
if (!a) throw Error("Decorated type deeper than introspection query.");
let o = b(a);
return new GraphQLNonNull(assertNullableType(o));
}
return x(i);
}
function x(i) {
let a = i.name;
if (!a) throw Error(`Unknown type reference: ${inspect$1(i)}.`);
let o = s[a];
if (!o) throw Error(`Invalid or incomplete schema, unknown type: ${a}. Ensure that a full introspection query is used in order to build a client schema.`);
return o;
}
function S(i) {
return assertObjectType(x(i));
}
function C(i) {
return assertInterfaceType(x(i));
}
function w(i) {
if (i != null && i.name != null && i.kind != null) switch (i.kind) {
case TypeKind.SCALAR: return E(i);
case TypeKind.OBJECT: return A(i);
case TypeKind.INTERFACE: return M(i);
case TypeKind.UNION: return F(i);
case TypeKind.ENUM: return I(i);
case TypeKind.INPUT_OBJECT: return rP(i);
}
let a = inspect$1(i);
throw Error(`Invalid or incomplete introspection result. Ensure that a full introspection query is used in order to build a client schema: ${a}.`);
}
function E(i) {
return new GraphQLScalarType({
name: i.name,
description: i.description,
specifiedByURL: i.specifiedByURL
});
}
function O(i) {
if (i.interfaces === null && i.kind === TypeKind.INTERFACE) return [];
if (!i.interfaces) {
let a = inspect$1(i);
throw Error(`Introspection result missing interfaces: ${a}.`);
}
return i.interfaces.map(C);
}
function A(i) {
return new GraphQLObjectType({
name: i.name,
description: i.description,
interfaces: () => O(i),
fields: () => iP(i)
});
}
function M(i) {
return new GraphQLInterfaceType({
name: i.name,
description: i.description,
interfaces: () => O(i),
fields: () => iP(i)
});
}
function F(i) {
if (!i.possibleTypes) {
let a = inspect$1(i);
throw Error(`Introspection result missing possibleTypes: ${a}.`);
}
return new GraphQLUnionType({
name: i.name,
description: i.description,
types: () => i.possibleTypes.map(S)
});
}
function I(i) {
if (!i.enumValues) {
let a = inspect$1(i);
throw Error(`Introspection result missing enumValues: ${a}.`);
}
return new GraphQLEnumType({
name: i.name,
description: i.description,
values: keyValMap(i.enumValues, (i) => i.name, (i) => ({
description: i.description,
deprecationReason: i.deprecationReason
}))
});
}
function rP(i) {
if (!i.inputFields) {
let a = inspect$1(i);
throw Error(`Introspection result missing inputFields: ${a}.`);
}
return new GraphQLInputObjectType({
name: i.name,
description: i.description,
fields: () => oP(i.inputFields),
isOneOf: i.isOneOf
});
}
function iP(i) {
if (!i.fields) throw Error(`Introspection result missing fields: ${inspect$1(i)}.`);
return keyValMap(i.fields, (i) => i.name, aP);
}
function aP(i) {
let a = b(i.type);
if (!isOutputType(a)) {
let i = inspect$1(a);
throw Error(`Introspection must provide output type for fields, but received: ${i}.`);
}
if (!i.args) {
let a = inspect$1(i);
throw Error(`Introspection result missing field args: ${a}.`);
}
return {
description: i.description,
deprecationReason: i.deprecationReason,
type: a,
args: oP(i.args)
};
}
function oP(i) {
return keyValMap(i, (i) => i.name, lP);
}
function lP(i) {
let a = b(i.type);
if (!isInputType(a)) {
let i = inspect$1(a);
throw Error(`Introspection must provide input type for arguments, but received: ${i}.`);
}
let o = i.defaultValue == null ? void 0 : valueFromAST(parseValue(i.defaultValue), a);
return {
description: i.description,
type: a,
defaultValue: o,
deprecationReason: i.deprecationReason
};
}
function dP(i) {
if (!i.args) {
let a = inspect$1(i);
throw Error(`Introspection result missing directive args: ${a}.`);
}
if (!i.locations) {
let a = inspect$1(i);
throw Error(`Introspection result missing directive locations: ${a}.`);
}
return new GraphQLDirective({
name: i.name,
description: i.description,
isRepeatable: i.isRepeatable,
deprecationReason: i.deprecationReason,
locations: i.locations.slice(),
args: oP(i.args)
});
}
}
function stripIgnoredCharacters(i) {
let a = isSource(i) ? i : new Source(i), o = a.body, s = new Lexer(a), c = "", d = !1;
for (; s.advance().kind !== TokenKind.EOF;) {
let i = s.token, a = i.kind, f = !isPunctuatorTokenKind(i.kind);
d && (f || i.kind === TokenKind.SPREAD) && (c += " ");
let g = o.slice(i.start, i.end);
a === TokenKind.BLOCK_STRING ? c += printBlockString$1(i.value, { minimize: !0 }) : c += g, d = f;
}
return c;
}
const docsTargetFromPath = (i, a) => {
let [o, ...s] = i;
if (!a || s.length === 0) return null;
let c = o === "query" ? a.getQueryType() : o === "mutation" ? a.getMutationType() : o === "subscription" ? a.getSubscriptionType() : null;
for (let i = 0; i < s.length; i++) {
if (!c || !isObjectType(c) && !isInterfaceType(c)) return null;
let a = c.name, o = c.getFields()[s[i]];
if (!o) return null;
if (i === s.length - 1) return {
kind: "field",
typeName: a,
fieldName: o.name
};
c = getNamedType(o.type);
}
return null;
}, useDocs = (i) => {
let [a, o] = useState(i.defaultActivePanel ?? null), [s, c] = useState([]), d = useCallback((i) => {
c((a) => [...a, i]);
}, []), f = useCallback(() => {
c((i) => i.slice(0, -1));
}, []), g = useCallback(() => {
c([]);
}, []), b = useCallback((i) => {
o("docs"), i && c((a) => [...a, i]);
}, []);
return {
activePanel: a,
docsNavStack: s,
setActivePanel: o,
openDocs: b,
pushDocs: d,
popDocs: f,
resetDocs: g
};
};
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((i) => i.TagAutoInterpolationDollar)
}), registerLanguage({
id: "freemarker2.tag-angle.interpolation-dollar",
aliases: ["FreeMarker2 (Angle/Dollar)", "Apache FreeMarker2 (Angle/Dollar)"],
loader: () => import("./freemarker2-Cf0Cb2u_.js").then((i) => i.TagAngleInterpolationDollar)
}), registerLanguage({
id: "freemarker2.tag-bracket.interpolation-dollar",
aliases: ["FreeMarker2 (Bracket/Dollar)", "Apache FreeMarker2 (Bracket/Dollar)"],
loader: () => import("./freemarker2-Cf0Cb2u_.js").then((i) => i.TagBracketInterpolationDollar)
}), registerLanguage({
id: "freemarker2.tag-angle.interpolation-bracket",
aliases: ["FreeMarker2 (Angle/Bracket)", "Apache FreeMarker2 (Angle/Bracket)"],
loader: () => import("./freemarker2-Cf0Cb2u_.js").then((i) => i.TagAngleInterpolationBracket)
}), registerLanguage({
id: "freemarker2.tag-bracket.interpolation-bracket",
aliases: ["FreeMarker2 (Bracket/Bracket)", "Apache FreeMarker2 (Bracket/Bracket)"],
loader: () => import("./freemarker2-Cf0Cb2u_.js").then((i) => i.TagBracketInterpolationBracket)
}), registerLanguage({
id: "freemarker2.tag-auto.interpolation-dollar",
aliases: ["FreeMarker2 (Auto/Dollar)", "Apache FreeMarker2 (Auto/Dollar)"],
loader: () => import("./freemarker2-Cf0Cb2u_.js").then((i) => i.TagAutoInterpolationDollar)
}), registerLanguage({
id: "freemarker2.tag-auto.interpolation-bracket",
aliases: ["FreeMarker2 (Auto/Bracket)", "Apache FreeMarker2 (Auto/Bracket)"],
loader: () => import("./freemarker2-Cf0Cb2u_.js").then((i) => i.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 = (i, a, o, s) => {
if (a && typeof a == "object" || typeof a == "function") for (let c of __getOwnPropNames$1(a)) !__hasOwnProp$1.call(i, c) && c !== o && __defProp$1(i, c, {
get: () => a[c],
enumerable: !(s = __getOwnPropDesc$1(a, c)) || s.enumerable
});
return i;
}, __reExport$1 = (i, a, o) => (__copyProps$1(i, a, "default"), o && __copyProps$1(o, a, "default")), monaco_editor_core_exports$1 = {};
__reExport$1(monaco_editor_core_exports$1, editor_api_exports);
var LanguageServiceDefaultsImpl$1 = class {
constructor(i, a, o) {
this._onDidChange = new monaco_editor_core_exports$1.Emitter(), this._languageId = i, this.setOptions(a), this.setModeConfiguration(o);
}
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(i) {
this._options = i || /* @__PURE__ */ Object.create(null), this._onDidChange.fire(this);
}
setDiagnosticsOptions(i) {
this.setOptions(i);
}
setModeConfiguration(i) {
this._modeConfiguration = i || /* @__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((i) => i.setupMode(lessDefaults));
}), monaco_editor_core_exports$1.languages.onLanguage("scss", () => {
getMode$2().then((i) => i.setupMode(scssDefaults));
}), monaco_editor_core_exports$1.languages.onLanguage("css", () => {
getMode$2().then((i) => i.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 = (i, a, o, s) => {
if (a && typeof a == "object" || typeof a == "function") for (let c of __getOwnPropNames(a)) !__hasOwnProp.call(i, c) && c !== o && __defProp(i, c, {
get: () => a[c],
enumerable: !(s = __getOwnPropDesc(a, c)) || s.enumerable
});
return i;
}, __reExport = (i, a, o) => (__copyProps(i, a, "default"), o && __copyProps(o, a, "default")), monaco_editor_core_exports = {};
__reExport(monaco_editor_core_exports, editor_api_exports);
var LanguageServiceDefaultsImpl = class {
constructor(i, a, o) {
this._onDidChange = new monaco_editor_core_exports.Emitter(), this._languageId = i, this.setOptions(a), this.setModeConfiguration(o);
}
get onDidChange() {
return this._onDidChange.event;
}
get languageId() {
return this._languageId;
}
get options() {
return this._options;
}
get modeConfiguration() {
return this._modeConfiguration;
}
setOptions(i) {
this._options = i || /* @__PURE__ */ Object.create(null), this._onDidChange.fire(this);
}
setModeConfiguration(i) {
this._modeConfiguration = i || /* @__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(i) {
return {
completionItems: !0,
hovers: !0,
documentSymbols: !0,
links: !0,
documentHighlights: !0,
rename: !0,
colors: !0,
foldingRanges: !0,
selectionRanges: !0,
diagnostics: i === htmlLanguageId,
documentFormattingEdits: i === htmlLanguageId,
documentRangeFormattingEdits: i === 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(i, a = optionsDefault, o = getConfigurationDefault(i)) {
let s = new LanguageServiceDefaultsImpl(i, a, o), c, d = monaco_editor_core_exports.languages.onLanguage(i, async () => {
c = (await getMode$1()).setupMode(s);
});
return {
defaults: s,
dispose() {
d.dispose(), c?.dispose(), c = void 0;
}
};
}
var editor_main_exports = /* @__PURE__ */ __export({
CancellationTokenSource: () => CancellationTokenSource,
Emitter: () => Emitter,
KeyCode: () => KeyCode,
KeyMod: () => KeyMod,
MarkerSeverity: () => MarkerSeverity,
MarkerTag: () => MarkerTag,
Position: () => Position$1,
Range: () => Range$1,
Selection: () => Selection,
SelectionDirection: () => SelectionDirection,
Token: () => Token,
Uri: () => Uri,
editor: () => editor,
languages: () => languages
});
const OPEN_DOCS_COMMAND_ID = "hive-laboratory.openDocs";
var toLanguageServicePosition = (i) => new Position(i.lineNumber - 1, i.column - 1);
const docsTargetAtPosition = (i, a, o) => {
let s = getContextAtPosition(a, toLanguageServicePosition(o), i);
if (!s) return null;
let { typeInfo: c } = s;
if (c.fieldDef && c.parentType) return {
kind: "field",
typeName: getNamedType(c.parentType).name,
fieldName: c.fieldDef.name
};
let d = c.type ?? c.inputType;
return d ? {
kind: "type",
name: getNamedType(d).name
} : null;
}, registerDocsHover = (i) => {
let a = editor.registerCommand(OPEN_DOCS_COMMAND_ID, (a, ...o) => {
i.openDocs(o[0]);
}), o = languages.registerHoverProvider("graphql", { provideHover(a, o) {
let s = i.getSchema();
if (!s) return null;
let c = a.getValue(), d = getHoverInformation(s, c, toLanguageServicePosition(o), void 0, { useMarkdown: !0 });
if (!d || typeof d != "string") return null;
let f = [{ value: d }], g = docsTargetAtPosition(s, c, o);
return g && f.push({
isTrusted: !0,
value: `[Open in Docs](command:${OPEN_DOCS_COMMAND_ID}?${encodeURIComponent(JSON.stringify([g]))})`
}), { contents: f };
} });
return () => {
o.dispose(), a.dispose();
};
};
var FONT_FACE_RULE = /@font-face\s*\{[^}]*\}/g, MARKER_ATTRIBUTE = "data-hive-laboratory-fonts", hasInjected = !1;
function ensureDocumentFontFaces(i) {
if (hasInjected || typeof document > "u" || (hasInjected = !0, document.head.querySelector(`[${MARKER_ATTRIBUTE}]`))) return;
let a = i.match(FONT_FACE_RULE);
if (!a?.length) return;
let o = document.createElement("style");
o.setAttribute(MARKER_ATTRIBUTE, ""), o.textContent = a.join("\n"), document.head.append(o);
}
var require_lodash = /* @__PURE__ */ __commonJSMin(((i, a) => {
(function() {
var o, s = "4.18.1", c = 200, d = "Unsupported core-js use. Try https://npms.io/search?q=ponyfill.", f = "Expected a function", g = "Invalid `variable` option passed into `_.template`", b = "Invalid `imports` option passed into `_.template`", x = "__lodash_hash_undefined__", S = 500, C = "__lodash_placeholder__", w = 1, E = 2, O = 4, A = 1, M = 2, F = 1, I = 2, R = 4, V = 8, rP = 16, iP = 32, q = 64, aP = 128, oP = 256, sP = 512, cP = 30, lP = "...", uP = 800, dP = 16, fP = 1, pP = 2, mP = 3, hP = Infinity, gP = 9007199254740991, _P = 17976931348623157e292, vP = NaN, yP = 4294967295, bP = yP - 1, xP = yP >>> 1, SP = [
["ary", aP],
["bind", F],
["bindKey", I],
["curry", V],
["curryRight", rP],
["flip", sP],
["partial", iP],
["partialRight", q],
["rearg", oP]
], CP = "[object Arguments]", wP = "[object Array]", TP = "[object AsyncFunction]", EP = "[object Boolean]", DP = "[object Date]", OP = "[object DOMException]", kP = "[object Error]", AP = "[object Function]", jP = "[object GeneratorFunction]", MP = "[object Map]", NP = "[object Number]", PP = "[object Null]", FP = "[object Object]", IP = "[object Promise]", LP = "[object Proxy]", RP = "[object RegExp]", zP = "[object Set]", BP = "[object String]", VP = "[object Symbol]", HP = "[object Undefined]", UP = "[object WeakMap]", WP = "[object WeakSet]", GP = "[object ArrayBuffer]", KP = "[object DataView]", qP = "[object Float32Array]", JP = "[object Float64Array]", YP = "[object Int8Array]", XP = "[object Int16Array]", ZP = "[object Int32Array]", QP = "[object Uint8Array]", $P = "[object Uint8ClampedArray]", eF = "[object Uint16Array]", tF = "[object Uint32Array]", nF = /\b__p \+= '';/g, rF = /\b(__p \+=) '' \+/g, iF = /(__e\(.*?\)|\b__t\)) \+\n'';/g, aF = /&(?:amp|lt|gt|quot|#39);/g, oF = /[&<>"']/g, sF = RegExp(aF.source), cF = RegExp(oF.source), lF = /<%-([\s\S]+?)%>/g, uF = /<%([\s\S]+?)%>/g, dF = /<%=([\s\S]+?)%>/g, fF = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, pF = /^\w*$/, mF = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g, hF = /[\\^$.*+?()[\]{}|]/g, gF = RegExp(hF.source), _F = /^\s+/, vF = /\s/, yF = /\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/, bF = /\{\n\/\* \[wrapped with (.+)\] \*/, xF = /,? & /, SF = /[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g, CF = /[()=,{}\[\]\/\s]/, wF = /\\(\\)?/g, TF = /\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g, EF = /\w*$/, DF = /^[-+]0x[0-9a-f]+$/i, OF = /^0b[01]+$/i, kF = /^\[object .+?Constructor\]$/, AF = /^0o[0-7]+$/i, jF = /^(?:0|[1-9]\d*)$/, MF = /[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g, NF = /($^)/, PF = /['\n\r\u2028\u2029\\]/g, FF = "\\ud800-\\udfff", IF = "\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff", LF = "\\u2700-\\u27bf", RF = "a-z\\xdf-\\xf6\\xf8-\\xff", zF = "\\xac\\xb1\\xd7\\xf7", BF = "\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf", VF = "\\u2000-\\u206f", HF = " \\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", UF = "A-Z\\xc0-\\xd6\\xd8-\\xde", WF = "\\ufe0e\\ufe0f", GF = zF + BF + VF + HF, KF = "['’]", qF = "[" + FF + "]", JF = "[" + GF + "]", YF = "[" + IF + "]", XF = "\\d+", ZF = "[" + LF + "]", QF = "[" + RF + "]", $F = "[^" + FF + GF + XF + LF + RF + UF + "]", eI = "\\ud83c[\\udffb-\\udfff]", tI = "(?:" + YF + "|" + eI + ")", nI = "[^" + FF + "]", rI = "(?:\\ud83c[\\udde6-\\uddff]){2}", iI = "[\\ud800-\\udbff][\\udc00-\\udfff]", aI = "[" + UF + "]", oI = "\\u200d", sI = "(?:" + QF + "|" + $F + ")", cI = "(?:" + aI + "|" + $F + ")", lI = "(?:" + KF + "(?:d|ll|m|re|s|t|ve))?", uI = "(?:" + KF + "(?:D|LL|M|RE|S|T|VE))?", dI = tI + "?", fI = "[" + WF + "]?", pI = "(?:" + oI + "(?:" + [
nI,
rI,
iI
].join("|") + ")" + fI + dI + ")*", mI = "\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])", hI = "\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])", gI = fI + dI + pI, _I = "(?:" + [
ZF,
rI,
iI
].join("|") + ")" + gI, vI = "(?:" + [
nI + YF + "?",
YF,
rI,
iI,
qF
].join("|") + ")", yI = RegExp(KF, "g"), bI = RegExp(YF, "g"), xI = RegExp(eI + "(?=" + eI + ")|" + vI + gI, "g"), SI = RegExp([
aI + "?" + QF + "+" + lI + "(?=" + [
JF,
aI,
"$"
].join("|") + ")",
cI + "+" + uI + "(?=" + [
JF,
aI + sI,
"$"
].join("|") + ")",
aI + "?" + sI + "+" + lI,
aI + "+" + uI,
hI,
mI,
XF,
_I
].join("|"), "g"), CI = RegExp("[" + oI + FF + IF + WF + "]"), wI = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/, TI = /* @__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("."), EI = -1, DI = {};
DI[qP] = DI[JP] = DI[YP] = DI[XP] = DI[ZP] = DI[QP] = DI[$P] = DI[eF] = DI[tF] = !0, DI[CP] = DI[wP] = DI[GP] = DI[EP] = DI[KP] = DI[DP] = DI[kP] = DI[AP] = DI[MP] = DI[NP] = DI[FP] = DI[RP] = DI[zP] = DI[BP] = DI[UP] = !1;
var OI = {};
OI[CP] = OI[wP] = OI[GP] = OI[KP] = OI[EP] = OI[DP] = OI[qP] = OI[JP] = OI[YP] = OI[XP] = OI[ZP] = OI[MP] = OI[NP] = OI[FP] = OI[RP] = OI[zP] = OI[BP] = OI[VP] = OI[QP] = OI[$P] = OI[eF] = OI[tF] = !0, OI[kP] = OI[AP] = OI[UP] = !1;
var kI = {
À: "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"
}, AI = {
"&": "&",
"<": "<",
">": ">",
"\"": """,
"'": "'"
}, jI = {
"&": "&",
"<": "<",
">": ">",
""": "\"",
"'": "'"
}, MI = {
"\\": "\\",
"'": "'",
"\n": "n",
"\r": "r",
"\u2028": "u2028",
"\u2029": "u2029"
}, NI = parseFloat, PI = parseInt, FI = typeof global == "object" && global && global.Object === Object && global, II = typeof self == "object" && self && self.Object === Object && self, LI = FI || II || Function("return this")(), RI = typeof i == "object" && i && !i.nodeType && i, zI = RI && typeof a == "object" && a && !a.nodeType && a, BI = zI && zI.exports === RI, VI = BI && FI.process, HI = function() {
try {
return zI && zI.require && zI.require("util").types || VI && VI.binding && VI.binding("util");
} catch {}
}(), UI = HI && HI.isArrayBuffer, WI = HI && HI.isDate, GI = HI && HI.isMap, KI = HI && HI.isRegExp, qI = HI && HI.isSet, JI = HI && HI.isTypedArray;
function YI(i, a, o) {
switch (o.length) {
case 0: return i.call(a);
case 1: return i.call(a, o[0]);
case 2: return i.call(a, o[0], o[1]);
case 3: return i.call(a, o[0], o[1], o[2]);
}
return i.apply(a, o);
}
function XI(i, a, o, s) {
for (var c = -1, d = i == null ? 0 : i.length; ++c < d;) {
var f = i[c];
a(s, f, o(f), i);
}
return s;
}
function ZI(i, a) {
for (var o = -1, s = i == null ? 0 : i.length; ++o < s && a(i[o], o, i) !== !1;);
return i;
}
function QI(i, a) {
for (var o = i == null ? 0 : i.length; o-- && a(i[o], o, i) !== !1;);
return i;
}
function $I(i, a) {
for (var o = -1, s = i == null ? 0 : i.length; ++o < s;) if (!a(i[o], o, i)) return !1;
return !0;
}
function eL(i, a) {
for (var o = -1, s = i == null ? 0 : i.length, c = 0, d = []; ++o < s;) {
var f = i[o];
a(f, o, i) && (d[c++] = f);
}
return d;
}
function tL(i, a) {
return !!(i != null && i.length) && pL(i, a, 0) > -1;
}
function nL(i, a, o) {
for (var s = -1, c = i == null ? 0 : i.length; ++s < c;) if (o(a, i[s])) return !0;
return !1;
}
function rL(i, a) {
for (var o = -1, s = i == null ? 0 : i.length, c = Array(s); ++o < s;) c[o] = a(i[o], o, i);
return c;
}
function iL(i, a) {
for (var o = -1, s = a.length, c = i.length; ++o < s;) i[c + o] = a[o];
return i;
}
function aL(i, a, o, s) {
var c = -1, d = i == null ? 0 : i.length;
for (s && d && (o = i[++c]); ++c < d;) o = a(o, i[c], c, i);
return o;
}
function oL(i, a, o, s) {
var c = i == null ? 0 : i.length;
for (s && c && (o = i[--c]); c--;) o = a(o, i[c], c, i);
return o;
}
function sL(i, a) {
for (var o = -1, s = i == null ? 0 : i.length; ++o < s;) if (a(i[o], o, i)) return !0;
return !1;
}
var cL = _L("length");
function lL(i) {
return i.split("");
}
function uL(i) {
return i.match(SF) || [];
}
function dL(i, a, o) {
var s;
return o(i, function(i, o, c) {
if (a(i, o, c)) return s = o, !1;
}), s;
}
function fL(i, a, o, s) {
for (var c = i.length, d = o + (s ? 1 : -1); s ? d-- : ++d < c;) if (a(i[d], d, i)) return d;
return -1;
}
function pL(i, a, o) {
return a === a ? UL(i, a, o) : fL(i, hL, o);
}
function mL(i, a, o, s) {
for (var c = o - 1, d = i.length; ++c < d;) if (s(i[c], a)) return c;
return -1;
}
function hL(i) {
return i !== i;
}
function gL(i, a) {
var o = i == null ? 0 : i.length;
return o ? xL(i, a) / o : vP;
}
function _L(i) {
return function(a) {
return a == null ? o : a[i];
};
}
function vL(i) {
return function(a) {
return i == null ? o : i[a];
};
}
function yL(i, a, o, s, c) {
return c(i, function(i, c, d) {
o = s ? (s = !1, i) : a(o, i, c, d);
}), o;
}
function bL(i, a) {
var o = i.length;
for (i.sort(a); o--;) i[o] = i[o].value;
return i;
}
function xL(i, a) {
for (var s, c = -1, d = i.length; ++c < d;) {
var f = a(i[c]);
f !== o && (s = s === o ? f : s + f);
}
return s;
}
function SL(i, a) {
for (var o = -1, s = Array(i); ++o < i;) s[o] = a(o);
return s;
}
function CL(i, a) {
return rL(a, function(a) {
return [a, i[a]];
});
}
function wL(i) {
return i && i.slice(0, qL(i) + 1).replace(_F, "");
}
function TL(i) {
return function(a) {
return i(a);
};
}
function EL(i, a) {
return rL(a, function(a) {
return i[a];
});
}
function DL(i, a) {
return i.has(a);
}
function OL(i, a) {
for (var o = -1, s = i.length; ++o < s && pL(a, i[o], 0) > -1;);
return o;
}
function kL(i, a) {
for (var o = i.length; o-- && pL(a, i[o], 0) > -1;);
return o;
}
function AL(i, a) {
for (var o = i.length, s = 0; o--;) i[o] === a && ++s;
return s;
}
var jL = vL(kI), ML = vL(AI);
function NL(i) {
return "\\" + MI[i];
}
function PL(i, a) {
return i == null ? o : i[a];
}
function FL(i) {
return CI.test(i);
}
function IL(i) {
return wI.test(i);
}
function LL(i) {
for (var a, o = []; !(a = i.next()).done;) o.push(a.value);
return o;
}
function RL(i) {
var a = -1, o = Array(i.size);
return i.forEach(function(i, s) {
o[++a] = [s, i];
}), o;
}
function zL(i, a) {
return function(o) {
return i(a(o));
};
}
function BL(i, a) {
for (var o = -1, s = i.length, c = 0, d = []; ++o < s;) {
var f = i[o];
(f === a || f === C) && (i[o] = C, d[c++] = o);
}
return d;
}
function VL(i) {
var a = -1, o = Array(i.size);
return i.forEach(function(i) {
o[++a] = i;
}), o;
}
function HL(i) {
var a = -1, o = Array(i.size);
return i.forEach(function(i) {
o[++a] = [i, i];
}), o;
}
function UL(i, a, o) {
for (var s = o - 1, c = i.length; ++s < c;) if (i[s] === a) return s;
return -1;
}
function WL(i, a, o) {
for (var s = o + 1; s--;) if (i[s] === a) return s;
return s;
}
function GL(i) {
return FL(i) ? YL(i) : cL(i);
}
function KL(i) {
return FL(i) ? XL(i) : lL(i);
}
function qL(i) {
for (var a = i.length; a-- && vF.test(i.charAt(a)););
return a;
}
var JL = vL(jI);
function YL(i) {
for (var a = xI.lastIndex = 0; xI.test(i);) ++a;
return a;
}
function XL(i) {
return i.match(xI) || [];
}
function ZL(i) {
return i.match(SI) || [];
}
var QL = (function i(a) {
a = a == null ? LI : QL.defaults(LI.Object(), a, QL.pick(LI, TI));
var vF = a.Array, SF = a.Date, FF = a.Error, IF = a.Function, LF = a.Math, RF = a.Object, zF = a.RegExp, BF = a.String, VF = a.TypeError, HF = vF.prototype, UF = IF.prototype, WF = RF.prototype, GF = a["__core-js_shared__"], KF = UF.toString, qF = WF.hasOwnProperty, JF = 0, YF = function() {
var i = /[^.]+$/.exec(GF && GF.keys && GF.keys.IE_PROTO || "");
return i ? "Symbol(src)_1." + i : "";
}(), XF = WF.toString, ZF = KF.call(RF), QF = LI._, $F = zF("^" + KF.call(qF).replace(hF, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$"), eI = BI ? a.Buffer : o, tI = a.Symbol, nI = a.Uint8Array, rI = eI ? eI.allocUnsafe : o, iI = zL(RF.getPrototypeOf, RF), aI = RF.create, oI = WF.propertyIsEnumerable, sI = HF.splice, cI = tI ? tI.isConcatSpreadable : o, lI = tI ? tI.iterator : o, uI = tI ? tI.toStringTag : o, dI = function() {
try {
var i = EV(RF, "defineProperty");
return i({}, "", {}), i;
} catch {}
}(), fI = a.clearTimeout !== LI.clearTimeout && a.clearTimeout, pI = SF && SF.now !== LI.Date.now && SF.now, mI = a.setTimeout !== LI.setTimeout && a.setTimeout, hI = LF.ceil, gI = LF.floor, _I = RF.getOwnPropertySymbols, vI = eI ? eI.isBuffer : o, xI = a.isFinite, SI = HF.join, CI = zL(RF.keys, RF), wI = LF.max, kI = LF.min, AI = SF.now, jI = a.parseInt, MI = LF.random, FI = HF.reverse, II = EV(a, "DataView"), RI = EV(a, "Map"), zI = EV(a, "Promise"), VI = EV(a, "Set"), HI = EV(a, "WeakMap"), cL = EV(RF, "create"), lL = HI && new HI(), vL = {}, UL = dH(II), YL = dH(RI), XL = dH(zI), $L = dH(VI), eR = dH(HI), tR = tI ? tI.prototype : o, nR = tR ? tR.valueOf : o, rR = tR ? tR.toString : o;
function Q(i) {
if (iG(i) && !VW(i) && !(i instanceof sR)) {
if (i instanceof oR) return i;
if (qF.call(i, "__wrapped__")) return pH(i);
}
return new oR(i);
}
var iR = function() {
function i() {}
return function(a) {
if (!rG(a)) return {};
if (aI) return aI(a);
i.prototype = a;
var s = new i();
return i.prototype = o, s;
};
}();
function aR() {}
function oR(i, a) {
this.__wrapped__ = i, this.__actions__ = [], this.__chain__ = !!a, this.__index__ = 0, this.__values__ = o;
}
Q.templateSettings = {
escape: lF,
evaluate: uF,
interpolate: dF,
variable: "",
imports: { _: Q }
}, Q.prototype = aR.prototype, Q.prototype.constructor = Q, oR.prototype = iR(aR.prototype), oR.prototype.constructor = oR;
function sR(i) {
this.__wrapped__ = i, this.__actions__ = [], this.__dir__ = 1, this.__filtered__ = !1, this.__iteratees__ = [], this.__takeCount__ = yP, this.__views__ = [];
}
function cR() {
var i = new sR(this.__wrapped__);
return i.__actions__ = LB(this.__actions__), i.__dir__ = this.__dir__, i.__filtered__ = this.__filtered__, i.__iteratees__ = LB(this.__iteratees__), i.__takeCount__ = this.__takeCount__, i.__views__ = LB(this.__views__), i;
}
function lR() {
if (this.__filtered__) {
var i = new sR(this);
i.__dir__ = -1, i.__filtered__ = !0;
} else i = this.clone(), i.__dir__ *= -1;
return i;
}
function uR() {
var i = this.__wrapped__.value(), a = this.__dir__, o = VW(i), s = a < 0, c = o ? i.length : 0, d = jV(0, c, this.__views__), f = d.start, g = d.end, b = g - f, x = s ? g : f - 1, S = this.__iteratees__, C = S.length, w = 0, E = kI(b, this.__takeCount__);
if (!o || !s && c == b && E == b) return vB(i, this.__actions__);
var O = [];
outer: for (; b-- && w < E;) {
x += a;
for (var A = -1, M = i[x]; ++A < C;) {
var F = S[A], I = F.iteratee, R = F.type, V = I(M);
if (R == pP) M = V;
else if (!V) {
if (R == fP) continue outer;
break outer;
}
}
O[w++] = M;
}
return O;
}
sR.prototype = iR(aR.prototype), sR.prototype.constructor = sR;
function dR(i) {
var a = -1, o = i == null ? 0 : i.length;
for (this.clear(); ++a < o;) {
var s = i[a];
this.set(s[0], s[1]);
}
}
function fR() {
this.__data__ = cL ? cL(null) : {}, this.size = 0;
}
function pR(i) {
var a = this.has(i) && delete this.__data__[i];
return this.size -= a ? 1 : 0, a;
}
function mR(i) {
var a = this.__data__;
if (cL) {
var s = a[i];
return s === x ? o : s;
}
return qF.call(a, i) ? a[i] : o;
}
function hR(i) {
var a = this.__data__;
return cL ? a[i] !== o : qF.call(a, i);
}
function gR(i, a) {
var s = this.__data__;
return this.size += this.has(i) ? 0 : 1, s[i] = cL && a === o ? x : a, this;
}
dR.prototype.clear = fR, dR.prototype.delete = pR, dR.prototype.get = mR, dR.prototype.has = hR, dR.prototype.set = gR;
function _R(i) {
var a = -1, o = i == null ? 0 : i.length;
for (this.clear(); ++a < o;) {
var s = i[a];
this.set(s[0], s[1]);
}
}
function vR() {
this.__data__ = [], this.size = 0;
}
function yR(i) {
var a = this.__data__, o = WR(a, i);
if (o < 0) return !1;
var s = a.length - 1;
return o == s ? a.pop() : sI.call(a, o, 1), --this.size, !0;
}
function bR(i) {
var a = this.__data__, s = WR(a, i);
return s < 0 ? o : a[s][1];
}
function xR(i) {
return WR(this.__data__, i) > -1;
}
function SR(i, a) {
var o = this.__data__, s = WR(o, i);
return s < 0 ? (++this.size, o.push([i, a])) : o[s][1] = a, this;
}
_R.prototype.clear = vR, _R.prototype.delete = yR, _R.prototype.get = bR, _R.prototype.has = xR, _R.prototype.set = SR;
function CR(i) {
var a = -1, o = i == null ? 0 : i.length;
for (this.clear(); ++a < o;) {
var s = i[a];
this.set(s[0], s[1]);
}
}
function wR() {
this.size = 0, this.__data__ = {
hash: new dR(),
map: new (RI || _R)(),
string: new dR()
};
}
function TR(i) {
var a = wV(this, i).delete(i);
return this.size -= a ? 1 : 0, a;
}
function ER(i) {
return wV(this, i).get(i);
}
function DR(i) {
return wV(this, i).has(i);
}
function OR(i, a) {
var o = wV(this, i), s = o.size;
return o.set(i, a), this.size += o.size == s ? 0 : 1, this;
}
CR.prototype.clear = wR, CR.prototype.delete = TR, CR.prototype.get = ER, CR.prototype.has = DR, CR.prototype.set = OR;
function kR(i) {
var a = -1, o = i == null ? 0 : i.length;
for (this.__data__ = new CR(); ++a < o;) this.add(i[a]);
}
function AR(i) {
return this.__data__.set(i, x), this;
}
function jR(i) {
return this.__data__.has(i);
}
kR.prototype.add = kR.prototype.push = AR, kR.prototype.has = jR;
function MR(i) {
this.size = (this.__data__ = new _R(i)).size;
}
function NR() {
this.__data__ = new _R(), this.size = 0;
}
function PR(i) {
var a = this.__data__, o = a.delete(i);
return this.size = a.size, o;
}
function FR(i) {
return this.__data__.get(i);
}
function IR(i) {
return this.__data__.has(i);
}
function LR(i, a) {
var o = this.__data__;
if (o instanceof _R) {
var s = o.__data__;
if (!RI || s.length < c - 1) return s.push([i, a]), this.size = ++o.size, this;
o = this.__data__ = new CR(s);
}
return o.set(i, a), this.size = o.size, this;
}
MR.prototype.clear = NR, MR.prototype.delete = PR, MR.prototype.get = FR, MR.prototype.has = IR, MR.prototype.set = LR;
function RR(i, a) {
var o = VW(i), s = !o && BW(i), c = !o && !s && KW(i), d = !o && !s && !c && yG(i), f = o || s || c || d, g = f ? SL(i.length, BF) : [], b = g.length;
for (var x in i) (a || qF.call(i, x)) && !(f && (x == "length" || c && (x == "offset" || x == "parent") || d && (x == "buffer" || x == "byteLength" || x == "byteOffset") || zV(x, b))) && g.push(x);
return g;
}
function zR(i) {
var a = i.length;
return a ? i[Zz(0, a - 1)] : o;
}
function BR(i, a) {
return cH(LB(i), XR(a, 0, i.length));
}
function VR(i) {
return cH(LB(i));
}
function HR(i, a, s) {
(s !== o && !LW(i[a], s) || s === o && !(a in i)) && JR(i, a, s);
}
function UR(i, a, s) {
var c = i[a];
(!(qF.call(i, a) && LW(c, s)) || s === o && !(a in i)) && JR(i, a, s);
}
function WR(i, a) {
for (var o = i.length; o--;) if (LW(i[o][0], a)) return o;
return -1;
}
function GR(i, a, o, s) {
return nz(i, function(i, c, d) {
a(s, i, o(i), d);
}), s;
}
function KR(i, a) {
return i && RB(a, tK(a), i);
}
function qR(i, a) {
return i && RB(a, nK(a), i);
}
function JR(i, a, o) {
a == "__proto__" && dI ? dI(i, a, {
configurable: !0,
enumerable: !0,
value: o,
writable: !0
}) : i[a] = o;
}
function YR(i, a) {
for (var s = -1, c = a.length, d = vF(c), f = i == null; ++s < c;) d[s] = f ? o : YG(i, a[s]);
return d;
}
function XR(i, a, s) {
return i === i && (s !== o && (i = i <= s ? i : s), a !== o && (i = i >= a ? i : a)), i;
}
function ZR(i, a, s, c, d, f) {
var g, b = a & w, x = a & E, S = a & O;
if (s && (g = d ? s(i, c, d, f) : s(i)), g !== o) return g;
if (!rG(i)) return i;
var C = VW(i);
if (C) {
if (g = PV(i), !b) return LB(i, g);
} else {
var A = AV(i), M = A == AP || A == jP;
if (KW(i)) return DB(i, b);
if (A == FP || A == CP || M && !d) {
if (g = x || M ? {} : FV(i), !b) return x ? BB(i, qR(g, i)) : zB(i, KR(g, i));
} else {
if (!OI[A]) return d ? i : {};
g = IV(i, A, b);
}
}
f ||= new MR();
var F = f.get(i);
if (F) return F;
f.set(i, g), gG(i) ? i.forEach(function(o) {
g.add(ZR(o, a, s, o, i, f));
}) : aG(i) && i.forEach(function(o, c) {
g.set(c, ZR(o, a, s, c, i, f));
});
var I = C ? o : (S ? x ? yV : vV : x ? nK : tK)(i);
return ZI(I || i, function(o, c) {
I && (c = o, o = i[c]), UR(g, c, ZR(o, a, s, c, i, f));
}), g;
}
function QR(i) {
var a = tK(i);
return function(o) {
return $R(o, i, a);
};
}
function $R(i, a, s) {
var c = s.length;
if (i == null) return !c;
for (i = RF(i); c--;) {
var d = s[c], f = a[d], g = i[d];
if (g === o && !(d in i) || !f(g)) return !1;
}
return !0;
}
function ez(i, a, s) {
if (typeof i != "function") throw new VF(f);
return iH(function() {
i.apply(o, s);
}, a);
}
function tz(i, a, o, s) {
var d = -1, f = tL, g = !0, b = i.length, x = [], S = a.length;
if (!b) return x;
o && (a = rL(a, TL(o))), s ? (f = nL, g = !1) : a.length >= c && (f = DL, g = !1, a = new kR(a));
outer: for (; ++d < b;) {
var C = i[d], w = o == null ? C : o(C);
if (C = s || C !== 0 ? C : 0, g && w === w) {
for (var E = S; E--;) if (a[E] === w) continue outer;
x.push(C);
} else f(a, w, s) || x.push(C);
}
return x;
}
var nz = UB(dz), rz = UB(fz, !0);
function iz(i, a) {
var o = !0;
return nz(i, function(i, s, c) {
return o = !!a(i, s, c), o;
}), o;
}
function az(i, a, s) {
for (var c = -1, d = i.length; ++c < d;) {
var f = i[c], g = a(f);
if (g != null && (b === o ? g === g && !vG(g) : s(g, b))) var b = g, x = f;
}
return x;
}
function oz(i, a, s, c) {
var d = i.length;
for (s = DG(s), s < 0 && (s = -s > d ? 0 : d + s), c = c === o || c > d ? d : DG(c), c < 0 && (c += d), c = s > c ? 0 : OG(c); s < c;) i[s++] = a;
return i;
}
function sz(i, a) {
var o = [];
return nz(i, function(i, s, c) {
a(i, s, c) && o.push(i);
}), o;
}
function cz(i, a, o, s, c) {
var d = -1, f = i.length;
for (o ||= RV, c ||= []; ++d < f;) {
var g = i[d];
a > 0 && o(g) ? a > 1 ? cz(g, a - 1, o, s, c) : iL(c, g) : s || (c[c.length] = g);
}
return c;
}
var lz = WB(), uz = WB(!0);
function dz(i, a) {
return i && lz(i, a, tK);
}
function fz(i, a) {
return i && uz(i, a, tK);
}
function pz(i, a) {
return eL(a, function(a) {
return eG(i[a]);
});
}
function mz(i, a) {
a = CB(a, i);
for (var s = 0, c = a.length; i != null && s < c;) i = i[uH(a[s++])];
return s && s == c ? i : o;
}
function hz(i, a, o) {
var s = a(i);
return VW(i) ? s : iL(s, o(i));
}
function gz(i) {
return i == null ? i === o ? HP : PP : uI && uI in RF(i) ? DV(i) : QV(i);
}
function _z(i, a) {
return i > a;
}
function vz(i, a) {
return i != null && qF.call(i, a);
}
function yz(i, a) {
return i != null && a in RF(i);
}
function bz(i, a, o) {
return i >= kI(a, o) && i < wI(a, o);
}
function xz(i, a, s) {
for (var c = s ? nL : tL, d = i[0].length, f = i.length, g = f, b = vF(f), x = Infinity, S = []; g--;) {
var C = i[g];
g && a && (C = rL(C, TL(a))), x = kI(C.length, x), b[g] = !s && (a || d >= 120 && C.length >= 120) ? new kR(g && C) : o;
}
C = i[0];
var w = -1, E = b[0];
outer: for (; ++w < d && S.length < x;) {
var O = C[w], A = a ? a(O) : O;
if (O = s || O !== 0 ? O : 0, !(E ? DL(E, A) : c(S, A, s))) {
for (g = f; --g;) {
var M = b[g];
if (!(M ? DL(M, A) : c(i[g], A, s))) continue outer;
}
E && E.push(A), S.push(O);
}
}
return S;
}
function Sz(i, a, o, s) {
return dz(i, function(i, c, d) {
a(s, o(i), c, d);
}), s;
}
function Cz(i, a, s) {
a = CB(a, i), i = eH(i, a);
var c = i == null ? i : i[uH(RH(a))];
return c == null ? o : YI(c, i, s);
}
function wz(i) {
return iG(i) && gz(i) == CP;
}
function Tz(i) {
return iG(i) && gz(i) == GP;
}
function Ez(i) {
return iG(i) && gz(i) == DP;
}
function Dz(i, a, o, s, c) {
return i === a ? !0 : i == null || a == null || !iG(i) && !iG(a) ? i !== i && a !== a : Oz(i, a, o, s, Dz, c);
}
function Oz(i, a, o, s, c, d) {
var f = VW(i), g = VW(a), b = f ? wP : AV(i), x = g ? wP : AV(a);
b = b == CP ? FP : b, x = x == CP ? FP : x;
var S = b == FP, C = x == FP, w = b == x;
if (w && KW(i)) {
if (!KW(a)) return !1;
f = !0, S = !1;
}
if (w && !S) return d ||= new MR(), f || yG(i) ? mV(i, a, o, s, c, d) : hV(i, a, b, o, s, c, d);
if (!(o & A)) {
var E = S && qF.call(i, "__wrapped__"), O = C && qF.call(a, "__wrapped__");
if (E || O) {
var M = E ? i.value() : i, F = O ? a.value() : a;
return d ||= new MR(), c(M, F, o, s, d);
}
}
return w ? (d ||= new MR(), gV(i, a, o, s, c, d)) : !1;
}
function kz(i) {
return iG(i) && AV(i) == MP;
}
function Az(i, a, s, c) {
var d = s.length, f = d, g = !c;
if (i == null) return !f;
for (i = RF(i); d--;) {
var b = s[d];
if (g && b[2] ? b[1] !== i[b[0]] : !(b[0] in i)) return !1;
}
for (; ++d < f;) {
b = s[d];
var x = b[0], S = i[x], C = b[1];
if (g && b[2]) {
if (S === o && !(x in i)) return !1;
} else {
var w = new MR();
if (c) var E = c(S, C, x, i, a, w);
if (!(E === o ? Dz(C, S, A | M, c, w) : E)) return !1;
}
}
return !0;
}
function jz(i) {
return !rG(i) || WV(i) ? !1 : (eG(i) ? $F : kF).test(dH(i));
}
function Mz(i) {
return iG(i) && gz(i) == RP;
}
function Nz(i) {
return iG(i) && AV(i) == zP;
}
function Pz(i) {
return iG(i) && nG(i.length) && !!DI[gz(i)];
}
function Fz(i) {
return typeof i == "function" ? i : i == null ? lq : typeof i == "object" ? VW(i) ? Vz(i[0], i[1]) : Bz(i) : Sq(i);
}
function Iz(i) {
if (!KV(i)) return CI(i);
var a = [];
for (var o in RF(i)) qF.call(i, o) && o != "constructor" && a.push(o);
return a;
}
function Lz(i) {
if (!rG(i)) return ZV(i);
var a = KV(i), o = [];
for (var s in i) s == "constructor" && (a || !qF.call(i, s)) || o.push(s);
return o;
}
function Rz(i, a) {
return i < a;
}
function zz(i, a) {
var o = -1, s = UW(i) ? vF(i.length) : [];
return nz(i, function(i, c, d) {
s[++o] = a(i, c, d);
}), s;
}
function Bz(i) {
var a = TV(i);
return a.length == 1 && a[0][2] ? JV(a[0][0], a[0][1]) : function(o) {
return o === i || Az(o, i, a);
};
}
function Vz(i, a) {
return VV(i) && qV(a) ? JV(uH(i), a) : function(s) {
var c = YG(s, i);
return c === o && c === a ? ZG(s, i) : Dz(a, c, A | M);
};
}
function Hz(i, a, s, c, d) {
i !== a && lz(a, function(f, g) {
if (d ||= new MR(), rG(f)) Uz(i, a, g, s, Hz, c, d);
else {
var b = c ? c(nH(i, g), f, g + "", i, a, d) : o;
b === o && (b = f), HR(i, g, b);
}
}, nK);
}
function Uz(i, a, s, c, d, f, g) {
var b = nH(i, s), x = nH(a, s), S = g.get(x);
if (S) {
HR(i, s, S);
return;
}
var C = f ? f(b, x, s + "", i, a, g) : o, w = C === o;
if (w) {
var E = VW(x), O = !E && KW(x), A = !E && !O && yG(x);
C = x, E || O || A ? VW(b) ? C = b : WW(b) ? C = LB(b) : O ? (w = !1, C = DB(x, !0)) : A ? (w = !1, C = MB(x, !0)) : C = [] : pG(x) || BW(x) ? (C = b, BW(b) ? C = AG(b) : (!rG(b) || eG(b)) && (C = FV(x))) : w = !1;
}
w && (g.set(x, C), d(C, x, c, f, g), g.delete(x)), HR(i, s, C);
}
function Wz(i, a) {
var s = i.length;
if (s) return a += a < 0 ? s : 0, zV(a, s) ? i[a] : o;
}
function Gz(i, a, o) {
a = a.length ? rL(a, function(i) {
return VW(i) ? function(a) {
return mz(a, i.length === 1 ? i[0] : i);
} : i;
}) : [lq];
var s = -1;
a = rL(a, TL(CV()));
var c = zz(i, function(i, o, c) {
return {
criteria: rL(a, function(a) {
return a(i);
}),
index: ++s,
value: i
};
});
return bL(c, function(i, a) {
return PB(i, a, o);
});
}
function Kz(i, a) {
return qz(i, a, function(a, o) {
return ZG(i, o);
});
}
function qz(i, a, o) {
for (var s = -1, c = a.length, d = {}; ++s < c;) {
var f = a[s], g = mz(i, f);
o(g, f) && rB(d, CB(f, i), g);
}
return d;
}
function Jz(i) {
return function(a) {
return mz(a, i);
};
}
function Yz(i, a, o, s) {
var c = s ? mL : pL, d = -1, f = a.length, g = i;
for (i === a && (a = LB(a)), o && (g = rL(i, TL(o))); ++d < f;) for (var b = 0, x = a[d], S = o ? o(x) : x; (b = c(g, S, b, s)) > -1;) g !== i && sI.call(g, b, 1), sI.call(i, b, 1);
return i;
}
function Xz(i, a) {
for (var o = i ? a.length : 0, s = o - 1; o--;) {
var c = a[o];
if (o == s || c !== d) {
var d = c;
zV(c) ? sI.call(i, c, 1) : hB(i, c);
}
}
return i;
}
function Zz(i, a) {
return i + gI(MI() * (a - i + 1));
}
function Qz(i, a, o, s) {
for (var c = -1, d = wI(hI((a - i) / (o || 1)), 0), f = vF(d); d--;) f[s ? d : ++c] = i, i += o;
return f;
}
function $z(i, a) {
var o = "";
if (!i || a < 1 || a > gP) return o;
do
a % 2 && (o += i), a = gI(a / 2), a && (i += i);
while (a);
return o;
}
function eB(i, a) {
return aH($V(i, a, lq), i + "");
}
function tB(i) {
return zR(bK(i));
}
function nB(i, a) {
var o = bK(i);
return cH(o, XR(a, 0, o.length));
}
function rB(i, a, s, c) {
if (!rG(i)) return i;
a = CB(a, i);
for (var d = -1, f = a.length, g = f - 1, b = i; b != null && ++d < f;) {
var x = uH(a[d]), S = s;
if (x === "__proto__" || x === "constructor" || x === "prototype") return i;
if (d != g) {
var C = b[x];
S = c ? c(C, x, b) : o, S === o && (S = rG(C) ? C : zV(a[d + 1]) ? [] : {});
}
UR(b, x, S), b = b[x];
}
return i;
}
var iB = lL ? function(i, a) {
return lL.set(i, a), i;
} : lq, aB = dI ? function(i, a) {
return dI(i, "toString", {
configurable: !0,
enumerable: !1,
value: aq(a),
writable: !0
});
} : lq;
function oB(i) {
return cH(bK(i));
}
function sB(i, a, o) {
var s = -1, c = i.length;
a < 0 && (a = -a > c ? 0 : c + a), o = o > c ? c : o, o < 0 && (o += c), c = a > o ? 0 : o - a >>> 0, a >>>= 0;
for (var d = vF(c); ++s < c;) d[s] = i[s + a];
return d;
}
function cB(i, a) {
var o;
return nz(i, function(i, s, c) {
return o = a(i, s, c), !o;
}), !!o;
}
function lB(i, a, o) {
var s = 0, c = i == null ? s : i.length;
if (typeof a == "number" && a === a && c <= xP) {
for (; s < c;) {
var d = s + c >>> 1, f = i[d];
f !== null && !vG(f) && (o ? f <= a : f < a) ? s = d + 1 : c = d;
}
return c;
}
return uB(i, a, lq, o);
}
function uB(i, a, s, c) {
var d = 0, f = i == null ? 0 : i.length;
if (f === 0) return 0;
a = s(a);
for (var g = a !== a, b = a === null, x = vG(a), S = a === o; d < f;) {
var C = gI((d + f) / 2), w = s(i[C]), E = w !== o, O = w === null, A = w === w, M = vG(w);
if (g) var F = c || A;
else F = S ? A && (c || E) : b ? A && E && (c || !O) : x ? A && E && !O && (c || !M) : O || M ? !1 : c ? w <= a : w < a;
F ? d = C + 1 : f = C;
}
return kI(f, bP);
}
function dB(i, a) {
for (var o = -1, s = i.length, c = 0, d = []; ++o < s;) {
var f = i[o], g = a ? a(f) : f;
if (!o || !LW(g, b)) {
var b = g;
d[c++] = f === 0 ? 0 : f;
}
}
return d;
}
function fB(i) {
return typeof i == "number" ? i : vG(i) ? vP : +i;
}
function pB(i) {
if (typeof i == "string") return i;
if (VW(i)) return rL(i, pB) + "";
if (vG(i)) return rR ? rR.call(i) : "";
var a = i + "";
return a == "0" && 1 / i == -hP ? "-0" : a;
}
function mB(i, a, o) {
var s = -1, d = tL, f = i.length, g = !0, b = [], x = b;
if (o) g = !1, d = nL;
else if (f >= c) {
var S = a ? null : cV(i);
if (S) return VL(S);
g = !1, d = DL, x = new kR();
} else x = a ? [] : b;
outer: for (; ++s < f;) {
var C = i[s], w = a ? a(C) : C;
if (C = o || C !== 0 ? C : 0, g && w === w) {
for (var E = x.length; E--;) if (x[E] === w) continue outer;
a && x.push(w), b.push(C);
} else d(x, w, o) || (x !== b && x.push(w), b.push(C));
}
return b;
}
function hB(i, a) {
a = CB(a, i);
var o = -1, s = a.length;
if (!s) return !0;
for (; ++o < s;) {
var c = uH(a[o]);
if (c === "__proto__" && !qF.call(i, "__proto__") || (c === "constructor" || c === "prototype") && o < s - 1) return !1;
}
var d = eH(i, a);
return d == null || delete d[uH(RH(a))];
}
function gB(i, a, o, s) {
return rB(i, a, o(mz(i, a)), s);
}
function _B(i, a, o, s) {
for (var c = i.length, d = s ? c : -1; (s ? d-- : ++d < c) && a(i[d], d, i););
return o ? sB(i, s ? 0 : d, s ? d + 1 : c) : sB(i, s ? d + 1 : 0, s ? c : d);
}
function vB(i, a) {
var o = i;
return o instanceof sR && (o = o.value()), aL(a, function(i, a) {
return a.func.apply(a.thisArg, iL([i], a.args));
}, o);
}
function yB(i, a, o) {
var s = i.length;
if (s < 2) return s ? mB(i[0]) : [];
for (var c = -1, d = vF(s); ++c < s;) for (var f = i[c], g = -1; ++g < s;) g != c && (d[c] = tz(d[c] || f, i[g], a, o));
return mB(cz(d, 1), a, o);
}
function bB(i, a, s) {
for (var c = -1, d = i.length, f = a.length, g = {}; ++c < d;) {
var b = c < f ? a[c] : o;
s(g, i[c], b);
}
return g;
}
function xB(i) {
return WW(i) ? i : [];
}
function SB(i) {
return typeof i == "function" ? i : lq;
}
function CB(i, a) {
return VW(i) ? i : VV(i, a) ? [i] : lH(MG(i));
}
var wB = eB;
function TB(i, a, s) {
var c = i.length;
return s = s === o ? c : s, !a && s >= c ? i : sB(i, a, s);
}
var EB = fI || function(i) {
return LI.clearTimeout(i);
};
function DB(i, a) {
if (a) return i.slice();
var o = i.length, s = rI ? rI(o) : new i.constructor(o);
return i.copy(s), s;
}
function OB(i) {
var a = new i.constructor(i.byteLength);
return new nI(a).set(new nI(i)), a;
}
function kB(i, a) {
var o = a ? OB(i.buffer) : i.buffer;
return new i.constructor(o, i.byteOffset, i.byteLength);
}
function AB(i) {
var a = new i.constructor(i.source, EF.exec(i));
return a.lastIndex = i.lastIndex, a;
}
function jB(i) {
return nR ? RF(nR.call(i)) : {};
}
function MB(i, a) {
var o = a ? OB(i.buffer) : i.buffer;
return new i.constructor(o, i.byteOffset, i.length);
}
function NB(i, a) {
if (i !== a) {
var s = i !== o, c = i === null, d = i === i, f = vG(i), g = a !== o, b = a === null, x = a === a, S = vG(a);
if (!b && !S && !f && i > a || f && g && x && !b && !S || c && g && x || !s && x || !d) return 1;
if (!c && !f && !S && i < a || S && s && d && !c && !f || b && s && d || !g && d || !x) return -1;
}
return 0;
}
function PB(i, a, o) {
for (var s = -1, c = i.criteria, d = a.criteria, f = c.length, g = o.length; ++s < f;) {
var b = NB(c[s], d[s]);
if (b) {
if (s >= g) return b;
var x = o[s];
return b * (x == "desc" ? -1 : 1);
}
}
return i.index - a.index;
}
function FB(i, a, o, s) {
for (var c = -1, d = i.length, f = o.length, g = -1, b = a.length, x = wI(d - f, 0), S = vF(b + x), C = !s; ++g < b;) S[g] = a[g];
for (; ++c < f;) (C || c < d) && (S[o[c]] = i[c]);
for (; x--;) S[g++] = i[c++];
return S;
}
function IB(i, a, o, s) {
for (var c = -1, d = i.length, f = -1, g = o.length, b = -1, x = a.length, S = wI(d - g, 0), C = vF(S + x), w = !s; ++c < S;) C[c] = i[c];
for (var E = c; ++b < x;) C[E + b] = a[b];
for (; ++f < g;) (w || c < d) && (C[E + o[f]] = i[c++]);
return C;
}
function LB(i, a) {
var o = -1, s = i.length;
for (a ||= vF(s); ++o < s;) a[o] = i[o];
return a;
}
function RB(i, a, s, c) {
var d = !s;
s ||= {};
for (var f = -1, g = a.length; ++f < g;) {
var b = a[f], x = c ? c(s[b], i[b], b, s, i) : o;
x === o && (x = i[b]), d ? JR(s, b, x) : UR(s, b, x);
}
return s;
}
function zB(i, a) {
return RB(i, OV(i), a);
}
function BB(i, a) {
return RB(i, kV(i), a);
}
function VB(i, a) {
return function(o, s) {
var c = VW(o) ? XI : GR, d = a ? a() : {};
return c(o, i, CV(s, 2), d);
};
}
function HB(i) {
return eB(function(a, s) {
var c = -1, d = s.length, f = d > 1 ? s[d - 1] : o, g = d > 2 ? s[2] : o;
for (f = i.length > 3 && typeof f == "function" ? (d--, f) : o, g && BV(s[0], s[1], g) && (f = d < 3 ? o : f, d = 1), a = RF(a); ++c < d;) {
var b = s[c];
b && i(a, b, c, f);
}
return a;
});
}
function UB(i, a) {
return function(o, s) {
if (o == null) return o;
if (!UW(o)) return i(o, s);
for (var c = o.length, d = a ? c : -1, f = RF(o); (a ? d-- : ++d < c) && s(f[d], d, f) !== !1;);
return o;
};
}
function WB(i) {
return function(a, o, s) {
for (var c = -1, d = RF(a), f = s(a), g = f.length; g--;) {
var b = f[i ? g : ++c];
if (o(d[b], b, d) === !1) break;
}
return a;
};
}
function GB(i, a, o) {
var s = a & F, c = JB(i);
function d() {
return (this && this !== LI && this instanceof d ? c : i).apply(s ? o : this, arguments);
}
return d;
}
function KB(i) {
return function(a) {
a = MG(a);
var s = FL(a) ? KL(a) : o, c = s ? s[0] : a.charAt(0), d = s ? TB(s, 1).join("") : a.slice(1);
return c[i]() + d;
};
}
function qB(i) {
return function(a) {
return aL(eq(DK(a).replace(yI, "")), i, "");
};
}
function JB(i) {
return function() {
var a = arguments;
switch (a.length) {
case 0: return new i();
case 1: return new i(a[0]);
case 2: return new i(a[0], a[1]);
case 3: return new i(a[0], a[1], a[2]);
case 4: return new i(a[0], a[1], a[2], a[3]);
case 5: return new i(a[0], a[1], a[2], a[3], a[4]);
case 6: return new i(a[0], a[1], a[2], a[3], a[4], a[5]);
case 7: return new i(a[0], a[1], a[2], a[3], a[4], a[5], a[6]);
}
var o = iR(i.prototype), s = i.apply(o, a);
return rG(s) ? s : o;
};
}
function YB(i, a, s) {
var c = JB(i);
function d() {
for (var f = arguments.length, g = vF(f), b = f, x = SV(d); b--;) g[b] = arguments[b];
var S = f < 3 && g[0] !== x && g[f - 1] !== x ? [] : BL(g, x);
if (f -= S.length, f < s) return oV(i, a, QB, d.placeholder, o, g, S, o, o, s - f);
var C = this && this !== LI && this instanceof d ? c : i;
return YI(C, this, g);
}
return d;
}
function XB(i) {
return function(a, s, c) {
var d = RF(a);
if (!UW(a)) {
var f = CV(s, 3);
a = tK(a), s = function(i) {
return f(d[i], i, d);
};
}
var g = i(a, s, c);
return g > -1 ? d[f ? a[g] : g] : o;
};
}
function ZB(i) {
return _V(function(a) {
var s = a.length, c = s, d = oR.prototype.thru;
for (i && a.reverse(); c--;) {
var g = a[c];
if (typeof g != "function") throw new VF(f);
if (d && !b && xV(g) == "wrapper") var b = new oR([], !0);
}
for (c = b ? c : s; ++c < s;) {
g = a[c];
var x = xV(g), S = x == "wrapper" ? bV(g) : o;
b = S && UV(S[0]) && S[1] == (aP | V | iP | oP) && !S[4].length && S[9] == 1 ? b[xV(S[0])].apply(b, S[3]) : g.length == 1 && UV(g) ? b[x]() : b.thru(g);
}
return function() {
var i = arguments, o = i[0];
if (b && i.length == 1 && VW(o)) return b.plant(o).value();
for (var c = 0, d = s ? a[c].apply(this, i) : o; ++c < s;) d = a[c].call(this, d);
return d;
};
});
}
function QB(i, a, s, c, d, f, g, b, x, S) {
var C = a & aP, w = a & F, E = a & I, O = a & (V | rP), A = a & sP, M = E ? o : JB(i);
function R() {
for (var o = arguments.length, F = vF(o), I = o; I--;) F[I] = arguments[I];
if (O) var V = SV(R), rP = AL(F, V);
if (c && (F = FB(F, c, d, O)), f && (F = IB(F, f, g, O)), o -= rP, O && o < S) {
var iP = BL(F, V);
return oV(i, a, QB, R.placeholder, s, F, iP, b, x, S - o);
}
var q = w ? s : this, aP = E ? q[i] : i;
return o = F.length, b ? F = tH(F, b) : A && o > 1 && F.reverse(), C && x < o && (F.length = x), this && this !== LI && this instanceof R && (aP = M || JB(aP)), aP.apply(q, F);
}
return R;
}
function $B(i, a) {
return function(o, s) {
return Sz(o, i, a(s), {});
};
}
function eV(i, a) {
return function(s, c) {
var d;
if (s === o && c === o) return a;
if (s !== o && (d = s), c !== o) {
if (d === o) return c;
typeof s == "string" || typeof c == "string" ? (s = pB(s), c = pB(c)) : (s = fB(s), c = fB(c)), d = i(s, c);
}
return d;
};
}
function tV(i) {
return _V(function(a) {
return a = rL(a, TL(CV())), eB(function(o) {
var s = this;
return i(a, function(i) {
return YI(i, s, o);
});
});
});
}
function nV(i, a) {
a = a === o ? " " : pB(a);
var s = a.length;
if (s < 2) return s ? $z(a, i) : a;
var c = $z(a, hI(i / GL(a)));
return FL(a) ? TB(KL(c), 0, i).join("") : c.slice(0, i);
}
function rV(i, a, o, s) {
var c = a & F, d = JB(i);
function f() {
for (var a = -1, g = arguments.length, b = -1, x = s.length, S = vF(x + g), C = this && this !== LI && this instanceof f ? d : i; ++b < x;) S[b] = s[b];
for (; g--;) S[b++] = arguments[++a];
return YI(C, c ? o : this, S);
}
return f;
}
function iV(i) {
return function(a, s, c) {
return c && typeof c != "number" && BV(a, s, c) && (s = c = o), a = EG(a), s === o ? (s = a, a = 0) : s = EG(s), c = c === o ? a < s ? 1 : -1 : EG(c), Qz(a, s, c, i);
};
}
function aV(i) {
return function(a, o) {
return typeof a == "string" && typeof o == "string" || (a = kG(a), o = kG(o)), i(a, o);
};
}
function oV(i, a, s, c, d, f, g, b, x, S) {
var C = a & V, w = C ? g : o, E = C ? o : g, O = C ? f : o, A = C ? o : f;
a |= C ? iP : q, a &= ~(C ? q : iP), a & R || (a &= ~(F | I));
var M = [
i,
a,
d,
O,
w,
A,
E,
b,
x,
S
], rP = s.apply(o, M);
return UV(i) && rH(rP, M), rP.placeholder = c, oH(rP, i, a);
}
function sV(i) {
var a = LF[i];
return function(i, o) {
if (i = kG(i), o = o == null ? 0 : kI(DG(o), 292), o && xI(i)) {
var s = (MG(i) + "e").split("e"), c = a(s[0] + "e" + (+s[1] + o));
return s = (MG(c) + "e").split("e"), +(s[0] + "e" + (+s[1] - o));
}
return a(i);
};
}
var cV = VI && 1 / VL(new VI([, -0]))[1] == hP ? function(i) {
return new VI(i);
} : _q;
function lV(i) {
return function(a) {
var o = AV(a);
return o == MP ? RL(a) : o == zP ? HL(a) : CL(a, i(a));
};
}
function uV(i, a, s, c, d, g, b, x) {
var S = a & I;
if (!S && typeof i != "function") throw new VF(f);
var C = c ? c.length : 0;
if (C || (a &= ~(iP | q), c = d = o), b = b === o ? b : wI(DG(b), 0), x = x === o ? x : DG(x), C -= d ? d.length : 0, a & q) {
var w = c, E = d;
c = d = o;
}
var O = S ? o : bV(i), A = [
i,
a,
s,
c,
d,
w,
E,
g,
b,
x
];
if (O && XV(A, O), i = A[0], a = A[1], s = A[2], c = A[3], d = A[4], x = A[9] = A[9] === o ? S ? 0 : i.length : wI(A[9] - C, 0), !x && a & (V | rP) && (a &= ~(V | rP)), !a || a == F) var M = GB(i, a, s);
else M = a == V || a == rP ? YB(i, a, x) : (a == iP || a == (F | iP)) && !d.length ? rV(i, a, s, c) : QB.apply(o, A);
return oH((O ? iB : rH)(M, A), i, a);
}
function dV(i, a, s, c) {
return i === o || LW(i, WF[s]) && !qF.call(c, s) ? a : i;
}
function fV(i, a, s, c, d, f) {
return rG(i) && rG(a) && (f.set(a, i), Hz(i, a, o, fV, f), f.delete(a)), i;
}
function pV(i) {
return pG(i) ? o : i;
}
function mV(i, a, s, c, d, f) {
var g = s & A, b = i.length, x = a.length;
if (b != x && !(g && x > b)) return !1;
var S = f.get(i), C = f.get(a);
if (S && C) return S == a && C == i;
var w = -1, E = !0, O = s & M ? new kR() : o;
for (f.set(i, a), f.set(a, i); ++w < b;) {
var F = i[w], I = a[w];
if (c) var R = g ? c(I, F, w, a, i, f) : c(F, I, w, i, a, f);
if (R !== o) {
if (R) continue;
E = !1;
break;
}
if (O) {
if (!sL(a, function(i, a) {
if (!DL(O, a) && (F === i || d(F, i, s, c, f))) return O.push(a);
})) {
E = !1;
break;
}
} else if (!(F === I || d(F, I, s, c, f))) {
E = !1;
break;
}
}
return f.delete(i), f.delete(a), E;
}
function hV(i, a, o, s, c, d, f) {
switch (o) {
case KP:
if (i.byteLength != a.byteLength || i.byteOffset != a.byteOffset) return !1;
i = i.buffer, a = a.buffer;
case GP: return !(i.byteLength != a.byteLength || !d(new nI(i), new nI(a)));
case EP:
case DP:
case NP: return LW(+i, +a);
case kP: return i.name == a.name && i.message == a.message;
case RP:
case BP: return i == a + "";
case MP: var g = RL;
case zP:
var b = s & A;
if (g ||= VL, i.size != a.size && !b) return !1;
var x = f.get(i);
if (x) return x == a;
s |= M, f.set(i, a);
var S = mV(g(i), g(a), s, c, d, f);
return f.delete(i), S;
case VP: if (nR) return nR.call(i) == nR.call(a);
}
return !1;
}
function gV(i, a, s, c, d, f) {
var g = s & A, b = vV(i), x = b.length, S = vV(a).length;
if (x != S && !g) return !1;
for (var C = x; C--;) {
var w = b[C];
if (!(g ? w in a : qF.call(a, w))) return !1;
}
var E = f.get(i), O = f.get(a);
if (E && O) return E == a && O == i;
var M = !0;
f.set(i, a), f.set(a, i);
for (var F = g; ++C < x;) {
w = b[C];
var I = i[w], R = a[w];
if (c) var V = g ? c(R, I, w, a, i, f) : c(I, R, w, i, a, f);
if (!(V === o ? I === R || d(I, R, s, c, f) : V)) {
M = !1;
break;
}
F ||= w == "constructor";
}
if (M && !F) {
var rP = i.constructor, iP = a.constructor;
rP != iP && "constructor" in i && "constructor" in a && !(typeof rP == "function" && rP instanceof rP && typeof iP == "function" && iP instanceof iP) && (M = !1);
}
return f.delete(i), f.delete(a), M;
}
function _V(i) {
return aH($V(i, o, DH), i + "");
}
function vV(i) {
return hz(i, tK, OV);
}
function yV(i) {
return hz(i, nK, kV);
}
var bV = lL ? function(i) {
return lL.get(i);
} : _q;
function xV(i) {
for (var a = i.name + "", o = vL[a], s = qF.call(vL, a) ? o.length : 0; s--;) {
var c = o[s], d = c.func;
if (d == null || d == i) return c.name;
}
return a;
}
function SV(i) {
return (qF.call(Q, "placeholder") ? Q : i).placeholder;
}
function CV() {
var i = Q.iteratee || uq;
return i = i === uq ? Fz : i, arguments.length ? i(arguments[0], arguments[1]) : i;
}
function wV(i, a) {
var o = i.__data__;
return HV(a) ? o[typeof a == "string" ? "string" : "hash"] : o.map;
}
function TV(i) {
for (var a = tK(i), o = a.length; o--;) {
var s = a[o], c = i[s];
a[o] = [
s,
c,
qV(c)
];
}
return a;
}
function EV(i, a) {
var s = PL(i, a);
return jz(s) ? s : o;
}
function DV(i) {
var a = qF.call(i, uI), s = i[uI];
try {
i[uI] = o;
var c = !0;
} catch {}
var d = XF.call(i);
return c && (a ? i[uI] = s : delete i[uI]), d;
}
var OV = _I ? function(i) {
return i == null ? [] : (i = RF(i), eL(_I(i), function(a) {
return oI.call(i, a);
}));
} : Eq, kV = _I ? function(i) {
for (var a = []; i;) iL(a, OV(i)), i = iI(i);
return a;
} : Eq, AV = gz;
(II && AV(new II(/* @__PURE__ */ new ArrayBuffer(1))) != KP || RI && AV(new RI()) != MP || zI && AV(zI.resolve()) != IP || VI && AV(new VI()) != zP || HI && AV(new HI()) != UP) && (AV = function(i) {
var a = gz(i), s = a == FP ? i.constructor : o, c = s ? dH(s) : "";
if (c) switch (c) {
case UL: return KP;
case YL: return MP;
case XL: return IP;
case $L: return zP;
case eR: return UP;
}
return a;
});
function jV(i, a, o) {
for (var s = -1, c = o.length; ++s < c;) {
var d = o[s], f = d.size;
switch (d.type) {
case "drop":
i += f;
break;
case "dropRight":
a -= f;
break;
case "take":
a = kI(a, i + f);
break;
case "takeRight":
i = wI(i, a - f);
break;
}
}
return {
start: i,
end: a
};
}
function MV(i) {
var a = i.match(bF);
return a ? a[1].split(xF) : [];
}
function NV(i, a, o) {
a = CB(a, i);
for (var s = -1, c = a.length, d = !1; ++s < c;) {
var f = uH(a[s]);
if (!(d = i != null && o(i, f))) break;
i = i[f];
}
return d || ++s != c ? d : (c = i == null ? 0 : i.length, !!c && nG(c) && zV(f, c) && (VW(i) || BW(i)));
}
function PV(i) {
var a = i.length, o = new i.constructor(a);
return a && typeof i[0] == "string" && qF.call(i, "index") && (o.index = i.index, o.input = i.input), o;
}
function FV(i) {
return typeof i.constructor == "function" && !KV(i) ? iR(iI(i)) : {};
}
function IV(i, a, o) {
var s = i.constructor;
switch (a) {
case GP: return OB(i);
case EP:
case DP: return new s(+i);
case KP: return kB(i, o);
case qP:
case JP:
case YP:
case XP:
case ZP:
case QP:
case $P:
case eF:
case tF: return MB(i, o);
case MP: return new s();
case NP:
case BP: return new s(i);
case RP: return AB(i);
case zP: return new s();
case VP: return jB(i);
}
}
function LV(i, a) {
var o = a.length;
if (!o) return i;
var s = o - 1;
return a[s] = (o > 1 ? "& " : "") + a[s], a = a.join(o > 2 ? ", " : " "), i.replace(yF, "{\n/* [wrapped with " + a + "] */\n");
}
function RV(i) {
return VW(i) || BW(i) || !!(cI && i && i[cI]);
}
function zV(i, a) {
var o = typeof i;
return a ??= gP, !!a && (o == "number" || o != "symbol" && jF.test(i)) && i > -1 && i % 1 == 0 && i < a;
}
function BV(i, a, o) {
if (!rG(o)) return !1;
var s = typeof a;
return (s == "number" ? UW(o) && zV(a, o.length) : s == "string" && a in o) ? LW(o[a], i) : !1;
}
function VV(i, a) {
if (VW(i)) return !1;
var o = typeof i;
return o == "number" || o == "symbol" || o == "boolean" || i == null || vG(i) ? !0 : pF.test(i) || !fF.test(i) || a != null && i in RF(a);
}
function HV(i) {
var a = typeof i;
return a == "string" || a == "number" || a == "symbol" || a == "boolean" ? i !== "__proto__" : i === null;
}
function UV(i) {
var a = xV(i), o = Q[a];
if (typeof o != "function" || !(a in sR.prototype)) return !1;
if (i === o) return !0;
var s = bV(o);
return !!s && i === s[0];
}
function WV(i) {
return !!YF && YF in i;
}
var GV = GF ? eG : Dq;
function KV(i) {
var a = i && i.constructor, o = typeof a == "function" && a.prototype || WF;
return i === o;
}
function qV(i) {
return i === i && !rG(i);
}
function JV(i, a) {
return function(s) {
return s == null ? !1 : s[i] === a && (a !== o || i in RF(s));
};
}
function YV(i) {
var a = yW(i, function(i) {
return o.size === S && o.clear(), i;
}), o = a.cache;
return a;
}
function XV(i, a) {
var o = i[1], s = a[1], c = o | s, d = c < (F | I | aP), f = s == aP && o == V || s == aP && o == oP && i[7].length <= a[8] || s == (aP | oP) && a[7].length <= a[8] && o == V;
if (!(d || f)) return i;
s & F && (i[2] = a[2], c |= o & F ? 0 : R);
var g = a[3];
if (g) {
var b = i[3];
i[3] = b ? FB(b, g, a[4]) : g, i[4] = b ? BL(i[3], C) : a[4];
}
return g = a[5], g && (b = i[5], i[5] = b ? IB(b, g, a[6]) : g, i[6] = b ? BL(i[5], C) : a[6]), g = a[7], g && (i[7] = g), s & aP && (i[8] = i[8] == null ? a[8] : kI(i[8], a[8])), i[9] ??= a[9], i[0] = a[0], i[1] = c, i;
}
function ZV(i) {
var a = [];
if (i != null) for (var o in RF(i)) a.push(o);
return a;
}
function QV(i) {
return XF.call(i);
}
function $V(i, a, s) {
return a = wI(a === o ? i.length - 1 : a, 0), function() {
for (var o = arguments, c = -1, d = wI(o.length - a, 0), f = vF(d); ++c < d;) f[c] = o[a + c];
c = -1;
for (var g = vF(a + 1); ++c < a;) g[c] = o[c];
return g[a] = s(f), YI(i, this, g);
};
}
function eH(i, a) {
return a.length < 2 ? i : mz(i, sB(a, 0, -1));
}
function tH(i, a) {
for (var s = i.length, c = kI(a.length, s), d = LB(i); c--;) {
var f = a[c];
i[c] = zV(f, s) ? d[f] : o;
}
return i;
}
function nH(i, a) {
if (!(a === "constructor" && typeof i[a] == "function") && a != "__proto__") return i[a];
}
var rH = sH(iB), iH = mI || function(i, a) {
return LI.setTimeout(i, a);
}, aH = sH(aB);
function oH(i, a, o) {
var s = a + "";
return aH(i, LV(s, fH(MV(s), o)));
}
function sH(i) {
var a = 0, s = 0;
return function() {
var c = AI(), d = dP - (c - s);
if (s = c, d > 0) {
if (++a >= uP) return arguments[0];
} else a = 0;
return i.apply(o, arguments);
};
}
function cH(i, a) {
var s = -1, c = i.length, d = c - 1;
for (a = a === o ? c : a; ++s < a;) {
var f = Zz(s, d), g = i[f];
i[f] = i[s], i[s] = g;
}
return i.length = a, i;
}
var lH = YV(function(i) {
var a = [];
return i.charCodeAt(0) === 46 && a.push(""), i.replace(mF, function(i, o, s, c) {
a.push(s ? c.replace(wF, "$1") : o || i);
}), a;
});
function uH(i) {
if (typeof i == "string" || vG(i)) return i;
var a = i + "";
return a == "0" && 1 / i == -hP ? "-0" : a;
}
function dH(i) {
if (i != null) {
try {
return KF.call(i);
} catch {}
try {
return i + "";
} catch {}
}
return "";
}
function fH(i, a) {
return ZI(SP, function(o) {
var s = "_." + o[0];
a & o[1] && !tL(i, s) && i.push(s);
}), i.sort();
}
function pH(i) {
if (i instanceof sR) return i.clone();
var a = new oR(i.__wrapped__, i.__chain__);
return a.__actions__ = LB(i.__actions__), a.__index__ = i.__index__, a.__values__ = i.__values__, a;
}
function mH(i, a, s) {
a = (s ? BV(i, a, s) : a === o) ? 1 : wI(DG(a), 0);
var c = i == null ? 0 : i.length;
if (!c || a < 1) return [];
for (var d = 0, f = 0, g = vF(hI(c / a)); d < c;) g[f++] = sB(i, d, d += a);
return g;
}
function hH(i) {
for (var a = -1, o = i == null ? 0 : i.length, s = 0, c = []; ++a < o;) {
var d = i[a];
d && (c[s++] = d);
}
return c;
}
function gH() {
var i = arguments.length;
if (!i) return [];
for (var a = vF(i - 1), o = arguments[0], s = i; s--;) a[s - 1] = arguments[s];
return iL(VW(o) ? LB(o) : [o], cz(a, 1));
}
var _H = eB(function(i, a) {
return WW(i) ? tz(i, cz(a, 1, WW, !0)) : [];
}), vH = eB(function(i, a) {
var s = RH(a);
return WW(s) && (s = o), WW(i) ? tz(i, cz(a, 1, WW, !0), CV(s, 2)) : [];
}), yH = eB(function(i, a) {
var s = RH(a);
return WW(s) && (s = o), WW(i) ? tz(i, cz(a, 1, WW, !0), o, s) : [];
});
function bH(i, a, s) {
var c = i == null ? 0 : i.length;
return c ? (a = s || a === o ? 1 : DG(a), sB(i, a < 0 ? 0 : a, c)) : [];
}
function xH(i, a, s) {
var c = i == null ? 0 : i.length;
return c ? (a = s || a === o ? 1 : DG(a), a = c - a, sB(i, 0, a < 0 ? 0 : a)) : [];
}
function SH(i, a) {
return i && i.length ? _B(i, CV(a, 3), !0, !0) : [];
}
function CH(i, a) {
return i && i.length ? _B(i, CV(a, 3), !0) : [];
}
function wH(i, a, o, s) {
var c = i == null ? 0 : i.length;
return c ? (o && typeof o != "number" && BV(i, a, o) && (o = 0, s = c), oz(i, a, o, s)) : [];
}
function TH(i, a, o) {
var s = i == null ? 0 : i.length;
if (!s) return -1;
var c = o == null ? 0 : DG(o);
return c < 0 && (c = wI(s + c, 0)), fL(i, CV(a, 3), c);
}
function EH(i, a, s) {
var c = i == null ? 0 : i.length;
if (!c) return -1;
var d = c - 1;
return s !== o && (d = DG(s), d = s < 0 ? wI(c + d, 0) : kI(d, c - 1)), fL(i, CV(a, 3), d, !0);
}
function DH(i) {
return i != null && i.length ? cz(i, 1) : [];
}
function OH(i) {
return i != null && i.length ? cz(i, hP) : [];
}
function kH(i, a) {
return i != null && i.length ? (a = a === o ? 1 : DG(a), cz(i, a)) : [];
}
function AH(i) {
for (var a = -1, o = i == null ? 0 : i.length, s = {}; ++a < o;) {
var c = i[a];
JR(s, c[0], c[1]);
}
return s;
}
function jH(i) {
return i && i.length ? i[0] : o;
}
function MH(i, a, o) {
var s = i == null ? 0 : i.length;
if (!s) return -1;
var c = o == null ? 0 : DG(o);
return c < 0 && (c = wI(s + c, 0)), pL(i, a, c);
}
function NH(i) {
return i != null && i.length ? sB(i, 0, -1) : [];
}
var PH = eB(function(i) {
var a = rL(i, xB);
return a.length && a[0] === i[0] ? xz(a) : [];
}), FH = eB(function(i) {
var a = RH(i), s = rL(i, xB);
return a === RH(s) ? a = o : s.pop(), s.length && s[0] === i[0] ? xz(s, CV(a, 2)) : [];
}), IH = eB(function(i) {
var a = RH(i), s = rL(i, xB);
return a = typeof a == "function" ? a : o, a && s.pop(), s.length && s[0] === i[0] ? xz(s, o, a) : [];
});
function LH(i, a) {
return i == null ? "" : SI.call(i, a);
}
function RH(i) {
var a = i == null ? 0 : i.length;
return a ? i[a - 1] : o;
}
function zH(i, a, s) {
var c = i == null ? 0 : i.length;
if (!c) return -1;
var d = c;
return s !== o && (d = DG(s), d = d < 0 ? wI(c + d, 0) : kI(d, c - 1)), a === a ? WL(i, a, d) : fL(i, hL, d, !0);
}
function BH(i, a) {
return i && i.length ? Wz(i, DG(a)) : o;
}
var VH = eB(HH);
function HH(i, a) {
return i && i.length && a && a.length ? Yz(i, a) : i;
}
function UH(i, a, o) {
return i && i.length && a && a.length ? Yz(i, a, CV(o, 2)) : i;
}
function WH(i, a, s) {
return i && i.length && a && a.length ? Yz(i, a, o, s) : i;
}
var GH = _V(function(i, a) {
var o = i == null ? 0 : i.length, s = YR(i, a);
return Xz(i, rL(a, function(i) {
return zV(i, o) ? +i : i;
}).sort(NB)), s;
});
function KH(i, a) {
var o = [];
if (!(i && i.length)) return o;
var s = -1, c = [], d = i.length;
for (a = CV(a, 3); ++s < d;) {
var f = i[s];
a(f, s, i) && (o.push(f), c.push(s));
}
return Xz(i, c), o;
}
function qH(i) {
return i == null ? i : FI.call(i);
}
function JH(i, a, s) {
var c = i == null ? 0 : i.length;
return c ? (s && typeof s != "number" && BV(i, a, s) ? (a = 0, s = c) : (a = a == null ? 0 : DG(a), s = s === o ? c : DG(s)), sB(i, a, s)) : [];
}
function YH(i, a) {
return lB(i, a);
}
function XH(i, a, o) {
return uB(i, a, CV(o, 2));
}
function ZH(i, a) {
var o = i == null ? 0 : i.length;
if (o) {
var s = lB(i, a);
if (s < o && LW(i[s], a)) return s;
}
return -1;
}
function QH(i, a) {
return lB(i, a, !0);
}
function $H(i, a, o) {
return uB(i, a, CV(o, 2), !0);
}
function eU(i, a) {
if (i != null && i.length) {
var o = lB(i, a, !0) - 1;
if (LW(i[o], a)) return o;
}
return -1;
}
function tU(i) {
return i && i.length ? dB(i) : [];
}
function nU(i, a) {
return i && i.length ? dB(i, CV(a, 2)) : [];
}
function rU(i) {
var a = i == null ? 0 : i.length;
return a ? sB(i, 1, a) : [];
}
function iU(i, a, s) {
return i && i.length ? (a = s || a === o ? 1 : DG(a), sB(i, 0, a < 0 ? 0 : a)) : [];
}
function aU(i, a, s) {
var c = i == null ? 0 : i.length;
return c ? (a = s || a === o ? 1 : DG(a), a = c - a, sB(i, a < 0 ? 0 : a, c)) : [];
}
function oU(i, a) {
return i && i.length ? _B(i, CV(a, 3), !1, !0) : [];
}
function sU(i, a) {
return i && i.length ? _B(i, CV(a, 3)) : [];
}
var cU = eB(function(i) {
return mB(cz(i, 1, WW, !0));
}), lU = eB(function(i) {
var a = RH(i);
return WW(a) && (a = o), mB(cz(i, 1, WW, !0), CV(a, 2));
}), uU = eB(function(i) {
var a = RH(i);
return a = typeof a == "function" ? a : o, mB(cz(i, 1, WW, !0), o, a);
});
function dU(i) {
return i && i.length ? mB(i) : [];
}
function fU(i, a) {
return i && i.length ? mB(i, CV(a, 2)) : [];
}
function pU(i, a) {
return a = typeof a == "function" ? a : o, i && i.length ? mB(i, o, a) : [];
}
function mU(i) {
if (!(i && i.length)) return [];
var a = 0;
return i = eL(i, function(i) {
if (WW(i)) return a = wI(i.length, a), !0;
}), SL(a, function(a) {
return rL(i, _L(a));
});
}
function hU(i, a) {
if (!(i && i.length)) return [];
var s = mU(i);
return a == null ? s : rL(s, function(i) {
return YI(a, o, i);
});
}
var gU = eB(function(i, a) {
return WW(i) ? tz(i, a) : [];
}), _U = eB(function(i) {
return yB(eL(i, WW));
}), vU = eB(function(i) {
var a = RH(i);
return WW(a) && (a = o), yB(eL(i, WW), CV(a, 2));
}), yU = eB(function(i) {
var a = RH(i);
return a = typeof a == "function" ? a : o, yB(eL(i, WW), o, a);
}), bU = eB(mU);
function xU(i, a) {
return bB(i || [], a || [], UR);
}
function SU(i, a) {
return bB(i || [], a || [], rB);
}
var CU = eB(function(i) {
var a = i.length, s = a > 1 ? i[a - 1] : o;
return s = typeof s == "function" ? (i.pop(), s) : o, hU(i, s);
});
function wU(i) {
var a = Q(i);
return a.__chain__ = !0, a;
}
function TU(i, a) {
return a(i), i;
}
function EU(i, a) {
return a(i);
}
var DU = _V(function(i) {
var a = i.length, s = a ? i[0] : 0, c = this.__wrapped__, d = function(a) {
return YR(a, i);
};
return a > 1 || this.__actions__.length || !(c instanceof sR) || !zV(s) ? this.thru(d) : (c = c.slice(s, +s + (a ? 1 : 0)), c.__actions__.push({
func: EU,
args: [d],
thisArg: o
}), new oR(c, this.__chain__).thru(function(i) {
return a && !i.length && i.push(o), i;
}));
});
function OU() {
return wU(this);
}
function kU() {
return new oR(this.value(), this.__chain__);
}
function AU() {
this.__values__ === o && (this.__values__ = TG(this.value()));
var i = this.__index__ >= this.__values__.length, a = i ? o : this.__values__[this.__index__++];
return {
done: i,
value: a
};
}
function jU() {
return this;
}
function MU(i) {
for (var a, s = this; s instanceof aR;) {
var c = pH(s);
c.__index__ = 0, c.__values__ = o, a ? d.__wrapped__ = c : a = c;
var d = c;
s = s.__wrapped__;
}
return d.__wrapped__ = i, a;
}
function NU() {
var i = this.__wrapped__;
if (i instanceof sR) {
var a = i;
return this.__actions__.length && (a = new sR(this)), a = a.reverse(), a.__actions__.push({
func: EU,
args: [qH],
thisArg: o
}), new oR(a, this.__chain__);
}
return this.thru(qH);
}
function PU() {
return vB(this.__wrapped__, this.__actions__);
}
var FU = VB(function(i, a, o) {
qF.call(i, o) ? ++i[o] : JR(i, o, 1);
});
function IU(i, a, s) {
var c = VW(i) ? $I : iz;
return s && BV(i, a, s) && (a = o), c(i, CV(a, 3));
}
function LU(i, a) {
return (VW(i) ? eL : sz)(i, CV(a, 3));
}
var RU = XB(TH), zU = XB(EH);
function BU(i, a) {
return cz(YU(i, a), 1);
}
function VU(i, a) {
return cz(YU(i, a), hP);
}
function HU(i, a, s) {
return s = s === o ? 1 : DG(s), cz(YU(i, a), s);
}
function UU(i, a) {
return (VW(i) ? ZI : nz)(i, CV(a, 3));
}
function WU(i, a) {
return (VW(i) ? QI : rz)(i, CV(a, 3));
}
var GU = VB(function(i, a, o) {
qF.call(i, o) ? i[o].push(a) : JR(i, o, [a]);
});
function KU(i, a, o, s) {
i = UW(i) ? i : bK(i), o = o && !s ? DG(o) : 0;
var c = i.length;
return o < 0 && (o = wI(c + o, 0)), _G(i) ? o <= c && i.indexOf(a, o) > -1 : !!c && pL(i, a, o) > -1;
}
var qU = eB(function(i, a, o) {
var s = -1, c = typeof a == "function", d = UW(i) ? vF(i.length) : [];
return nz(i, function(i) {
d[++s] = c ? YI(a, i, o) : Cz(i, a, o);
}), d;
}), JU = VB(function(i, a, o) {
JR(i, o, a);
});
function YU(i, a) {
return (VW(i) ? rL : zz)(i, CV(a, 3));
}
function XU(i, a, s, c) {
return i == null ? [] : (VW(a) || (a = a == null ? [] : [a]), s = c ? o : s, VW(s) || (s = s == null ? [] : [s]), Gz(i, a, s));
}
var ZU = VB(function(i, a, o) {
i[o ? 0 : 1].push(a);
}, function() {
return [[], []];
});
function QU(i, a, o) {
var s = VW(i) ? aL : yL, c = arguments.length < 3;
return s(i, CV(a, 4), o, c, nz);
}
function $U(i, a, o) {
var s = VW(i) ? oL : yL, c = arguments.length < 3;
return s(i, CV(a, 4), o, c, rz);
}
function eW(i, a) {
return (VW(i) ? eL : sz)(i, bW(CV(a, 3)));
}
function tW(i) {
return (VW(i) ? zR : tB)(i);
}
function nW(i, a, s) {
return a = (s ? BV(i, a, s) : a === o) ? 1 : DG(a), (VW(i) ? BR : nB)(i, a);
}
function rW(i) {
return (VW(i) ? VR : oB)(i);
}
function iW(i) {
if (i == null) return 0;
if (UW(i)) return _G(i) ? GL(i) : i.length;
var a = AV(i);
return a == MP || a == zP ? i.size : Iz(i).length;
}
function aW(i, a, s) {
var c = VW(i) ? sL : cB;
return s && BV(i, a, s) && (a = o), c(i, CV(a, 3));
}
var oW = eB(function(i, a) {
if (i == null) return [];
var o = a.length;
return o > 1 && BV(i, a[0], a[1]) ? a = [] : o > 2 && BV(a[0], a[1], a[2]) && (a = [a[0]]), Gz(i, cz(a, 1), []);
}), sW = pI || function() {
return LI.Date.now();
};
function cW(i, a) {
if (typeof a != "function") throw new VF(f);
return i = DG(i), function() {
if (--i < 1) return a.apply(this, arguments);
};
}
function lW(i, a, s) {
return a = s ? o : a, a = i && a == null ? i.length : a, uV(i, aP, o, o, o, o, a);
}
function uW(i, a) {
var s;
if (typeof a != "function") throw new VF(f);
return i = DG(i), function() {
return --i > 0 && (s = a.apply(this, arguments)), i <= 1 && (a = o), s;
};
}
var dW = eB(function(i, a, o) {
var s = F;
if (o.length) {
var c = BL(o, SV(dW));
s |= iP;
}
return uV(i, s, a, o, c);
}), fW = eB(function(i, a, o) {
var s = F | I;
if (o.length) {
var c = BL(o, SV(fW));
s |= iP;
}
return uV(a, s, i, o, c);
});
function pW(i, a, s) {
a = s ? o : a;
var c = uV(i, V, o, o, o, o, o, a);
return c.placeholder = pW.placeholder, c;
}
function mW(i, a, s) {
a = s ? o : a;
var c = uV(i, rP, o, o, o, o, o, a);
return c.placeholder = mW.placeholder, c;
}
function hW(i, a, s) {
var c, d, g, b, x, S, C = 0, w = !1, E = !1, O = !0;
if (typeof i != "function") throw new VF(f);
a = kG(a) || 0, rG(s) && (w = !!s.leading, E = "maxWait" in s, g = E ? wI(kG(s.maxWait) || 0, a) : g, O = "trailing" in s ? !!s.trailing : O);
function A(a) {
var s = c, f = d;
return c = d = o, C = a, b = i.apply(f, s), b;
}
function M(i) {
return C = i, x = iH(R, a), w ? A(i) : b;
}
function F(i) {
var o = i - S, s = i - C, c = a - o;
return E ? kI(c, g - s) : c;
}
function I(i) {
var s = i - S, c = i - C;
return S === o || s >= a || s < 0 || E && c >= g;
}
function R() {
var i = sW();
if (I(i)) return V(i);
x = iH(R, F(i));
}
function V(i) {
return x = o, O && c ? A(i) : (c = d = o, b);
}
function rP() {
x !== o && EB(x), C = 0, c = S = d = x = o;
}
function iP() {
return x === o ? b : V(sW());
}
function q() {
var i = sW(), s = I(i);
if (c = arguments, d = this, S = i, s) {
if (x === o) return M(S);
if (E) return EB(x), x = iH(R, a), A(S);
}
return x === o && (x = iH(R, a)), b;
}
return q.cancel = rP, q.flush = iP, q;
}
var gW = eB(function(i, a) {
return ez(i, 1, a);
}), _W = eB(function(i, a, o) {
return ez(i, kG(a) || 0, o);
});
function vW(i) {
return uV(i, sP);
}
function yW(i, a) {
if (typeof i != "function" || a != null && typeof a != "function") throw new VF(f);
var o = function() {
var s = arguments, c = a ? a.apply(this, s) : s[0], d = o.cache;
if (d.has(c)) return d.get(c);
var f = i.apply(this, s);
return o.cache = d.set(c, f) || d, f;
};
return o.cache = new (yW.Cache || CR)(), o;
}
yW.Cache = CR;
function bW(i) {
if (typeof i != "function") throw new VF(f);
return function() {
var a = arguments;
switch (a.length) {
case 0: return !i.call(this);
case 1: return !i.call(this, a[0]);
case 2: return !i.call(this, a[0], a[1]);
case 3: return !i.call(this, a[0], a[1], a[2]);
}
return !i.apply(this, a);
};
}
function xW(i) {
return uW(2, i);
}
var SW = wB(function(i, a) {
a = a.length == 1 && VW(a[0]) ? rL(a[0], TL(CV())) : rL(cz(a, 1), TL(CV()));
var o = a.length;
return eB(function(s) {
for (var c = -1, d = kI(s.length, o); ++c < d;) s[c] = a[c].call(this, s[c]);
return YI(i, this, s);
});
}), CW = eB(function(i, a) {
var s = BL(a, SV(CW));
return uV(i, iP, o, a, s);
}), wW = eB(function(i, a) {
var s = BL(a, SV(wW));
return uV(i, q, o, a, s);
}), TW = _V(function(i, a) {
return uV(i, oP, o, o, o, a);
});
function EW(i, a) {
if (typeof i != "function") throw new VF(f);
return a = a === o ? a : DG(a), eB(i, a);
}
function DW(i, a) {
if (typeof i != "function") throw new VF(f);
return a = a == null ? 0 : wI(DG(a), 0), eB(function(o) {
var s = o[a], c = TB(o, 0, a);
return s && iL(c, s), YI(i, this, c);
});
}
function OW(i, a, o) {
var s = !0, c = !0;
if (typeof i != "function") throw new VF(f);
return rG(o) && (s = "leading" in o ? !!o.leading : s, c = "trailing" in o ? !!o.trailing : c), hW(i, a, {
leading: s,
maxWait: a,
trailing: c
});
}
function kW(i) {
return lW(i, 1);
}
function AW(i, a) {
return CW(SB(a), i);
}
function jW() {
if (!arguments.length) return [];
var i = arguments[0];
return VW(i) ? i : [i];
}
function MW(i) {
return ZR(i, O);
}
function NW(i, a) {
return a = typeof a == "function" ? a : o, ZR(i, O, a);
}
function PW(i) {
return ZR(i, w | O);
}
function FW(i, a) {
return a = typeof a == "function" ? a : o, ZR(i, w | O, a);
}
function IW(i, a) {
return a == null || $R(i, a, tK(a));
}
function LW(i, a) {
return i === a || i !== i && a !== a;
}
var RW = aV(_z), zW = aV(function(i, a) {
return i >= a;
}), BW = wz(function() {
return arguments;
}()) ? wz : function(i) {
return iG(i) && qF.call(i, "callee") && !oI.call(i, "callee");
}, VW = vF.isArray, HW = UI ? TL(UI) : Tz;
function UW(i) {
return i != null && nG(i.length) && !eG(i);
}
function WW(i) {
return iG(i) && UW(i);
}
function GW(i) {
return i === !0 || i === !1 || iG(i) && gz(i) == EP;
}
var KW = vI || Dq, qW = WI ? TL(WI) : Ez;
function JW(i) {
return iG(i) && i.nodeType === 1 && !pG(i);
}
function YW(i) {
if (i == null) return !0;
if (UW(i) && (VW(i) || typeof i == "string" || typeof i.splice == "function" || KW(i) || yG(i) || BW(i))) return !i.length;
var a = AV(i);
if (a == MP || a == zP) return !i.size;
if (KV(i)) return !Iz(i).length;
for (var o in i) if (qF.call(i, o)) return !1;
return !0;
}
function XW(i, a) {
return Dz(i, a);
}
function ZW(i, a, s) {
s = typeof s == "function" ? s : o;
var c = s ? s(i, a) : o;
return c === o ? Dz(i, a, o, s) : !!c;
}
function QW(i) {
if (!iG(i)) return !1;
var a = gz(i);
return a == kP || a == OP || typeof i.message == "string" && typeof i.name == "string" && !pG(i);
}
function $W(i) {
return typeof i == "number" && xI(i);
}
function eG(i) {
if (!rG(i)) return !1;
var a = gz(i);
return a == AP || a == jP || a == TP || a == LP;
}
function tG(i) {
return typeof i == "number" && i == DG(i);
}
function nG(i) {
return typeof i == "number" && i > -1 && i % 1 == 0 && i <= gP;
}
function rG(i) {
var a = typeof i;
return i != null && (a == "object" || a == "function");
}
function iG(i) {
return typeof i == "object" && !!i;
}
var aG = GI ? TL(GI) : kz;
function oG(i, a) {
return i === a || Az(i, a, TV(a));
}
function sG(i, a, s) {
return s = typeof s == "function" ? s : o, Az(i, a, TV(a), s);
}
function cG(i) {
return fG(i) && i != +i;
}
function lG(i) {
if (GV(i)) throw new FF(d);
return jz(i);
}
function uG(i) {
return i === null;
}
function dG(i) {
return i == null;
}
function fG(i) {
return typeof i == "number" || iG(i) && gz(i) == NP;
}
function pG(i) {
if (!iG(i) || gz(i) != FP) return !1;
var a = iI(i);
if (a === null) return !0;
var o = qF.call(a, "constructor") && a.constructor;
return typeof o == "function" && o instanceof o && KF.call(o) == ZF;
}
var mG = KI ? TL(KI) : Mz;
function hG(i) {
return tG(i) && i >= -gP && i <= gP;
}
var gG = qI ? TL(qI) : Nz;
function _G(i) {
return typeof i == "string" || !VW(i) && iG(i) && gz(i) == BP;
}
function vG(i) {
return typeof i == "symbol" || iG(i) && gz(i) == VP;
}
var yG = JI ? TL(JI) : Pz;
function bG(i) {
return i === o;
}
function xG(i) {
return iG(i) && AV(i) == UP;
}
function SG(i) {
return iG(i) && gz(i) == WP;
}
var CG = aV(Rz), wG = aV(function(i, a) {
return i <= a;
});
function TG(i) {
if (!i) return [];
if (UW(i)) return _G(i) ? KL(i) : LB(i);
if (lI && i[lI]) return LL(i[lI]());
var a = AV(i);
return (a == MP ? RL : a == zP ? VL : bK)(i);
}
function EG(i) {
return i ? (i = kG(i), i === hP || i === -hP ? (i < 0 ? -1 : 1) * _P : i === i ? i : 0) : i === 0 ? i : 0;
}
function DG(i) {
var a = EG(i), o = a % 1;
return a === a ? o ? a - o : a : 0;
}
function OG(i) {
return i ? XR(DG(i), 0, yP) : 0;
}
function kG(i) {
if (typeof i == "number") return i;
if (vG(i)) return vP;
if (rG(i)) {
var a = typeof i.valueOf == "function" ? i.valueOf() : i;
i = rG(a) ? a + "" : a;
}
if (typeof i != "string") return i === 0 ? i : +i;
i = wL(i);
var o = OF.test(i);
return o || AF.test(i) ? PI(i.slice(2), o ? 2 : 8) : DF.test(i) ? vP : +i;
}
function AG(i) {
return RB(i, nK(i));
}
function jG(i) {
return i ? XR(DG(i), -gP, gP) : i === 0 ? i : 0;
}
function MG(i) {
return i == null ? "" : pB(i);
}
var NG = HB(function(i, a) {
if (KV(a) || UW(a)) {
RB(a, tK(a), i);
return;
}
for (var o in a) qF.call(a, o) && UR(i, o, a[o]);
}), PG = HB(function(i, a) {
RB(a, nK(a), i);
}), FG = HB(function(i, a, o, s) {
RB(a, nK(a), i, s);
}), IG = HB(function(i, a, o, s) {
RB(a, tK(a), i, s);
}), LG = _V(YR);
function RG(i, a) {
var o = iR(i);
return a == null ? o : KR(o, a);
}
var zG = eB(function(i, a) {
i = RF(i);
var s = -1, c = a.length, d = c > 2 ? a[2] : o;
for (d && BV(a[0], a[1], d) && (c = 1); ++s < c;) for (var f = a[s], g = nK(f), b = -1, x = g.length; ++b < x;) {
var S = g[b], C = i[S];
(C === o || LW(C, WF[S]) && !qF.call(i, S)) && (i[S] = f[S]);
}
return i;
}), BG = eB(function(i) {
return i.push(o, fV), YI(oK, o, i);
});
function VG(i, a) {
return dL(i, CV(a, 3), dz);
}
function HG(i, a) {
return dL(i, CV(a, 3), fz);
}
function UG(i, a) {
return i == null ? i : lz(i, CV(a, 3), nK);
}
function WG(i, a) {
return i == null ? i : uz(i, CV(a, 3), nK);
}
function GG(i, a) {
return i && dz(i, CV(a, 3));
}
function KG(i, a) {
return i && fz(i, CV(a, 3));
}
function qG(i) {
return i == null ? [] : pz(i, tK(i));
}
function JG(i) {
return i == null ? [] : pz(i, nK(i));
}
function YG(i, a, s) {
var c = i == null ? o : mz(i, a);
return c === o ? s : c;
}
function XG(i, a) {
return i != null && NV(i, a, vz);
}
function ZG(i, a) {
return i != null && NV(i, a, yz);
}
var QG = $B(function(i, a, o) {
a != null && typeof a.toString != "function" && (a = XF.call(a)), i[a] = o;
}, aq(lq)), $G = $B(function(i, a, o) {
a != null && typeof a.toString != "function" && (a = XF.call(a)), qF.call(i, a) ? i[a].push(o) : i[a] = [o];
}, CV), eK = eB(Cz);
function tK(i) {
return UW(i) ? RR(i) : Iz(i);
}
function nK(i) {
return UW(i) ? RR(i, !0) : Lz(i);
}
function rK(i, a) {
var o = {};
return a = CV(a, 3), dz(i, function(i, s, c) {
JR(o, a(i, s, c), i);
}), o;
}
function iK(i, a) {
var o = {};
return a = CV(a, 3), dz(i, function(i, s, c) {
JR(o, s, a(i, s, c));
}), o;
}
var aK = HB(function(i, a, o) {
Hz(i, a, o);
}), oK = HB(function(i, a, o, s) {
Hz(i, a, o, s);
}), sK = _V(function(i, a) {
var o = {};
if (i == null) return o;
var s = !1;
a = rL(a, function(a) {
return a = CB(a, i), s ||= a.length > 1, a;
}), RB(i, yV(i), o), s && (o = ZR(o, w | E | O, pV));
for (var c = a.length; c--;) hB(o, a[c]);
return o;
});
function cK(i, a) {
return uK(i, bW(CV(a)));
}
var lK = _V(function(i, a) {
return i == null ? {} : Kz(i, a);
});
function uK(i, a) {
if (i == null) return {};
var o = rL(yV(i), function(i) {
return [i];
});
return a = CV(a), qz(i, o, function(i, o) {
return a(i, o[0]);
});
}
function dK(i, a, s) {
a = CB(a, i);
var c = -1, d = a.length;
for (d || (d = 1, i = o); ++c < d;) {
var f = i == null ? o : i[uH(a[c])];
f === o && (c = d, f = s), i = eG(f) ? f.call(i) : f;
}
return i;
}
function fK(i, a, o) {
return i == null ? i : rB(i, a, o);
}
function pK(i, a, s, c) {
return c = typeof c == "function" ? c : o, i == null ? i : rB(i, a, s, c);
}
var mK = lV(tK), hK = lV(nK);
function gK(i, a, o) {
var s = VW(i), c = s || KW(i) || yG(i);
if (a = CV(a, 4), o == null) {
var d = i && i.constructor;
o = c ? s ? new d() : [] : rG(i) && eG(d) ? iR(iI(i)) : {};
}
return (c ? ZI : dz)(i, function(i, s, c) {
return a(o, i, s, c);
}), o;
}
function _K(i, a) {
return i == null ? !0 : hB(i, a);
}
function vK(i, a, o) {
return i == null ? i : gB(i, a, SB(o));
}
function yK(i, a, s, c) {
return c = typeof c == "function" ? c : o, i == null ? i : gB(i, a, SB(s), c);
}
function bK(i) {
return i == null ? [] : EL(i, tK(i));
}
function xK(i) {
return i == null ? [] : EL(i, nK(i));
}
function SK(i, a, s) {
return s === o && (s = a, a = o), s !== o && (s = kG(s), s = s === s ? s : 0), a !== o && (a = kG(a), a = a === a ? a : 0), XR(kG(i), a, s);
}
function CK(i, a, s) {
return a = EG(a), s === o ? (s = a, a = 0) : s = EG(s), i = kG(i), bz(i, a, s);
}
function wK(i, a, s) {
if (s && typeof s != "boolean" && BV(i, a, s) && (a = s = o), s === o && (typeof a == "boolean" ? (s = a, a = o) : typeof i == "boolean" && (s = i, i = o)), i === o && a === o ? (i = 0, a = 1) : (i = EG(i), a === o ? (a = i, i = 0) : a = EG(a)), i > a) {
var c = i;
i = a, a = c;
}
if (s || i % 1 || a % 1) {
var d = MI();
return kI(i + d * (a - i + NI("1e-" + ((d + "").length - 1))), a);
}
return Zz(i, a);
}
var TK = qB(function(i, a, o) {
return a = a.toLowerCase(), i + (o ? EK(a) : a);
});
function EK(i) {
return $K(MG(i).toLowerCase());
}
function DK(i) {
return i = MG(i), i && i.replace(MF, jL).replace(bI, "");
}
function OK(i, a, s) {
i = MG(i), a = pB(a);
var c = i.length;
s = s === o ? c : XR(DG(s), 0, c);
var d = s;
return s -= a.length, s >= 0 && i.slice(s, d) == a;
}
function kK(i) {
return i = MG(i), i && cF.test(i) ? i.replace(oF, ML) : i;
}
function AK(i) {
return i = MG(i), i && gF.test(i) ? i.replace(hF, "\\$&") : i;
}
var jK = qB(function(i, a, o) {
return i + (o ? "-" : "") + a.toLowerCase();
}), MK = qB(function(i, a, o) {
return i + (o ? " " : "") + a.toLowerCase();
}), NK = KB("toLowerCase");
function PK(i, a, o) {
i = MG(i), a = DG(a);
var s = a ? GL(i) : 0;
if (!a || s >= a) return i;
var c = (a - s) / 2;
return nV(gI(c), o) + i + nV(hI(c), o);
}
function FK(i, a, o) {
i = MG(i), a = DG(a);
var s = a ? GL(i) : 0;
return a && s < a ? i + nV(a - s, o) : i;
}
function IK(i, a, o) {
i = MG(i), a = DG(a);
var s = a ? GL(i) : 0;
return a && s < a ? nV(a - s, o) + i : i;
}
function LK(i, a, o) {
return o || a == null ? a = 0 : a &&= +a, jI(MG(i).replace(_F, ""), a || 0);
}
function RK(i, a, s) {
return a = (s ? BV(i, a, s) : a === o) ? 1 : DG(a), $z(MG(i), a);
}
function zK() {
var i = arguments, a = MG(i[0]);
return i.length < 3 ? a : a.replace(i[1], i[2]);
}
var BK = qB(function(i, a, o) {
return i + (o ? "_" : "") + a.toLowerCase();
});
function VK(i, a, s) {
return s && typeof s != "number" && BV(i, a, s) && (a = s = o), s = s === o ? yP : s >>> 0, s ? (i = MG(i), i && (typeof a == "string" || a != null && !mG(a)) && (a = pB(a), !a && FL(i)) ? TB(KL(i), 0, s) : i.split(a, s)) : [];
}
var HK = qB(function(i, a, o) {
return i + (o ? " " : "") + $K(a);
});
function UK(i, a, o) {
return i = MG(i), o = o == null ? 0 : XR(DG(o), 0, i.length), a = pB(a), i.slice(o, o + a.length) == a;
}
function WK(i, a, s) {
var c = Q.templateSettings;
s && BV(i, a, s) && (a = o), i = MG(i), a = IG({}, a, c, dV);
var d = IG({}, a.imports, c.imports, dV), f = tK(d), x = EL(d, f);
ZI(f, function(i) {
if (CF.test(i)) throw new FF(b);
});
var S, C, w = 0, E = a.interpolate || NF, O = "__p += '", A = zF((a.escape || NF).source + "|" + E.source + "|" + (E === dF ? TF : NF).source + "|" + (a.evaluate || NF).source + "|$", "g"), M = "//# sourceURL=" + (qF.call(a, "sourceURL") ? (a.sourceURL + "").replace(/\s/g, " ") : "lodash.templateSources[" + ++EI + "]") + "\n";
i.replace(A, function(a, o, s, c, d, f) {
return s ||= c, O += i.slice(w, f).replace(PF, NL), o && (S = !0, O += "' +\n__e(" + o + ") +\n'"), d && (C = !0, O += "';\n" + d + ";\n__p += '"), s && (O += "' +\n((__t = (" + s + ")) == null ? '' : __t) +\n'"), w = f + a.length, a;
}), O += "';\n";
var F = qF.call(a, "variable") && a.variable;
if (!F) O = "with (obj) {\n" + O + "\n}\n";
else if (CF.test(F)) throw new FF(g);
O = (C ? O.replace(nF, "") : O).replace(rF, "$1").replace(iF, "$1;"), O = "function(" + (F || "obj") + ") {\n" + (F ? "" : "obj || (obj = {});\n") + "var __t, __p = ''" + (S ? ", __e = _.escape" : "") + (C ? ", __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\n" : ";\n") + O + "return __p\n}";
var I = tq(function() {
return IF(f, M + "return " + O).apply(o, x);
});
if (I.source = O, QW(I)) throw I;
return I;
}
function GK(i) {
return MG(i).toLowerCase();
}
function KK(i) {
return MG(i).toUpperCase();
}
function qK(i, a, s) {
if (i = MG(i), i && (s || a === o)) return wL(i);
if (!i || !(a = pB(a))) return i;
var c = KL(i), d = KL(a), f = OL(c, d), g = kL(c, d) + 1;
return TB(c, f, g).join("");
}
function JK(i, a, s) {
if (i = MG(i), i && (s || a === o)) return i.slice(0, qL(i) + 1);
if (!i || !(a = pB(a))) return i;
var c = KL(i), d = kL(c, KL(a)) + 1;
return TB(c, 0, d).join("");
}
function YK(i, a, s) {
if (i = MG(i), i && (s || a === o)) return i.replace(_F, "");
if (!i || !(a = pB(a))) return i;
var c = KL(i), d = OL(c, KL(a));
return TB(c, d).join("");
}
function XK(i, a) {
var s = cP, c = lP;
if (rG(a)) {
var d = "separator" in a ? a.separator : d;
s = "length" in a ? DG(a.length) : s, c = "omission" in a ? pB(a.omission) : c;
}
i = MG(i);
var f = i.length;
if (FL(i)) {
var g = KL(i);
f = g.length;
}
if (s >= f) return i;
var b = s - GL(c);
if (b < 1) return c;
var x = g ? TB(g, 0, b).join("") : i.slice(0, b);
if (d === o) return x + c;
if (g && (b += x.length - b), mG(d)) {
if (i.slice(b).search(d)) {
var S, C = x;
for (d.global || (d = zF(d.source, MG(EF.exec(d)) + "g")), d.lastIndex = 0; S = d.exec(C);) var w = S.index;
x = x.slice(0, w === o ? b : w);
}
} else if (i.indexOf(pB(d), b) != b) {
var E = x.lastIndexOf(d);
E > -1 && (x = x.slice(0, E));
}
return x + c;
}
function ZK(i) {
return i = MG(i), i && sF.test(i) ? i.replace(aF, JL) : i;
}
var QK = qB(function(i, a, o) {
return i + (o ? " " : "") + a.toUpperCase();
}), $K = KB("toUpperCase");
function eq(i, a, s) {
return i = MG(i), a = s ? o : a, a === o ? IL(i) ? ZL(i) : uL(i) : i.match(a) || [];
}
var tq = eB(function(i, a) {
try {
return YI(i, o, a);
} catch (i) {
return QW(i) ? i : new FF(i);
}
}), nq = _V(function(i, a) {
return ZI(a, function(a) {
a = uH(a), JR(i, a, dW(i[a], i));
}), i;
});
function rq(i) {
var a = i == null ? 0 : i.length, o = CV();
return i = a ? rL(i, function(i) {
if (typeof i[1] != "function") throw new VF(f);
return [o(i[0]), i[1]];
}) : [], eB(function(o) {
for (var s = -1; ++s < a;) {
var c = i[s];
if (YI(c[0], this, o)) return YI(c[1], this, o);
}
});
}
function iq(i) {
return QR(ZR(i, w));
}
function aq(i) {
return function() {
return i;
};
}
function oq(i, a) {
return i == null || i !== i ? a : i;
}
var sq = ZB(), cq = ZB(!0);
function lq(i) {
return i;
}
function uq(i) {
return Fz(typeof i == "function" ? i : ZR(i, w));
}
function dq(i) {
return Bz(ZR(i, w));
}
function fq(i, a) {
return Vz(i, ZR(a, w));
}
var pq = eB(function(i, a) {
return function(o) {
return Cz(o, i, a);
};
}), mq = eB(function(i, a) {
return function(o) {
return Cz(i, o, a);
};
});
function hq(i, a, o) {
var s = tK(a), c = pz(a, s);
o == null && !(rG(a) && (c.length || !s.length)) && (o = a, a = i, i = this, c = pz(a, tK(a)));
var d = !(rG(o) && "chain" in o) || !!o.chain, f = eG(i);
return ZI(c, function(o) {
var s = a[o];
i[o] = s, f && (i.prototype[o] = function() {
var a = this.__chain__;
if (d || a) {
var o = i(this.__wrapped__);
return (o.__actions__ = LB(this.__actions__)).push({
func: s,
args: arguments,
thisArg: i
}), o.__chain__ = a, o;
}
return s.apply(i, iL([this.value()], arguments));
});
}), i;
}
function gq() {
return LI._ === this && (LI._ = QF), this;
}
function _q() {}
function vq(i) {
return i = DG(i), eB(function(a) {
return Wz(a, i);
});
}
var yq = tV(rL), bq = tV($I), xq = tV(sL);
function Sq(i) {
return VV(i) ? _L(uH(i)) : Jz(i);
}
function Cq(i) {
return function(a) {
return i == null ? o : mz(i, a);
};
}
var wq = iV(), Tq = iV(!0);
function Eq() {
return [];
}
function Dq() {
return !1;
}
function Oq() {
return {};
}
function kq() {
return "";
}
function Aq() {
return !0;
}
function jq(i, a) {
if (i = DG(i), i < 1 || i > gP) return [];
var o = yP, s = kI(i, yP);
a = CV(a), i -= yP;
for (var c = SL(s, a); ++o < i;) a(o);
return c;
}
function Mq(i) {
return VW(i) ? rL(i, uH) : vG(i) ? [i] : LB(lH(MG(i)));
}
function Nq(i) {
var a = ++JF;
return MG(i) + a;
}
var Pq = eV(function(i, a) {
return i + a;
}, 0), Fq = sV("ceil"), Iq = eV(function(i, a) {
return i / a;
}, 1), Lq = sV("floor");
function Rq(i) {
return i && i.length ? az(i, lq, _z) : o;
}
function zq(i, a) {
return i && i.length ? az(i, CV(a, 2), _z) : o;
}
function Bq(i) {
return gL(i, lq);
}
function Vq(i, a) {
return gL(i, CV(a, 2));
}
function Hq(i) {
return i && i.length ? az(i, lq, Rz) : o;
}
function Uq(i, a) {
return i && i.length ? az(i, CV(a, 2), Rz) : o;
}
var Wq = eV(function(i, a) {
return i * a;
}, 1), Gq = sV("round"), Kq = eV(function(i, a) {
return i - a;
}, 0);
function qq(i) {
return i && i.length ? xL(i, lq) : 0;
}
function Jq(i, a) {
return i && i.length ? xL(i, CV(a, 2)) : 0;
}
return Q.after = cW, Q.ary = lW, Q.assign = NG, Q.assignIn = PG, Q.assignInWith = FG, Q.assignWith = IG, Q.at = LG, Q.before = uW, Q.bind = dW, Q.bindAll = nq, Q.bindKey = fW, Q.castArray = jW, Q.chain = wU, Q.chunk = mH, Q.compact = hH, Q.concat = gH, Q.cond = rq, Q.conforms = iq, Q.constant = aq, Q.countBy = FU, Q.create = RG, Q.curry = pW, Q.curryRight = mW, Q.debounce = hW, Q.defaults = zG, Q.defaultsDeep = BG, Q.defer = gW, Q.delay = _W, Q.difference = _H, Q.differenceBy = vH, Q.differenceWith = yH, Q.drop = bH, Q.dropRight = xH, Q.dropRightWhile = SH, Q.dropWhile = CH, Q.fill = wH, Q.filter = LU, Q.flatMap = BU, Q.flatMapDeep = VU, Q.flatMapDepth = HU, Q.flatten = DH, Q.flattenDeep = OH, Q.flattenDepth = kH, Q.flip = vW, Q.flow = sq, Q.flowRight = cq, Q.fromPairs = AH, Q.functions = qG, Q.functionsIn = JG, Q.groupBy = GU, Q.initial = NH, Q.intersection = PH, Q.intersectionBy = FH, Q.intersectionWith = IH, Q.invert = QG, Q.invertBy = $G, Q.invokeMap = qU, Q.iteratee = uq, Q.keyBy = JU, Q.keys = tK, Q.keysIn = nK, Q.map = YU, Q.mapKeys = rK, Q.mapValues = iK, Q.matches = dq, Q.matchesProperty = fq, Q.memoize = yW, Q.merge = aK, Q.mergeWith = oK, Q.method = pq, Q.methodOf = mq, Q.mixin = hq, Q.negate = bW, Q.nthArg = vq, Q.omit = sK, Q.omitBy = cK, Q.once = xW, Q.orderBy = XU, Q.over = yq, Q.overArgs = SW, Q.overEvery = bq, Q.overSome = xq, Q.partial = CW, Q.partialRight = wW, Q.partition = ZU, Q.pick = lK, Q.pickBy = uK, Q.property = Sq, Q.propertyOf = Cq, Q.pull = VH, Q.pullAll = HH, Q.pullAllBy = UH, Q.pullAllWith = WH, Q.pullAt = GH, Q.range = wq, Q.rangeRight = Tq, Q.rearg = TW, Q.reject = eW, Q.remove = KH, Q.rest = EW, Q.reverse = qH, Q.sampleSize = nW, Q.set = fK, Q.setWith = pK, Q.shuffle = rW, Q.slice = JH, Q.sortBy = oW, Q.sortedUniq = tU, Q.sortedUniqBy = nU, Q.split = VK, Q.spread = DW, Q.tail = rU, Q.take = iU, Q.takeRight = aU, Q.takeRightWhile = oU, Q.takeWhile = sU, Q.tap = TU, Q.throttle = OW, Q.thru = EU, Q.toArray = TG, Q.toPairs = mK, Q.toPairsIn = hK, Q.toPath = Mq, Q.toPlainObject = AG, Q.transform = gK, Q.unary = kW, Q.union = cU, Q.unionBy = lU, Q.unionWith = uU, Q.uniq = dU, Q.uniqBy = fU, Q.uniqWith = pU, Q.unset = _K, Q.unzip = mU, Q.unzipWith = hU, Q.update = vK, Q.updateWith = yK, Q.values = bK, Q.valuesIn = xK, Q.without = gU, Q.words = eq, Q.wrap = AW, Q.xor = _U, Q.xorBy = vU, Q.xorWith = yU, Q.zip = bU, Q.zipObject = xU, Q.zipObjectDeep = SU, Q.zipWith = CU, Q.entries = mK, Q.entriesIn = hK, Q.extend = PG, Q.extendWith = FG, hq(Q, Q), Q.add = Pq, Q.attempt = tq, Q.camelCase = TK, Q.capitalize = EK, Q.ceil = Fq, Q.clamp = SK, Q.clone = MW, Q.cloneDeep = PW, Q.cloneDeepWith = FW, Q.cloneWith = NW, Q.conformsTo = IW, Q.deburr = DK, Q.defaultTo = oq, Q.divide = Iq, Q.endsWith = OK, Q.eq = LW, Q.escape = kK, Q.escapeRegExp = AK, Q.every = IU, Q.find = RU, Q.findIndex = TH, Q.findKey = VG, Q.findLast = zU, Q.findLastIndex = EH, Q.findLastKey = HG, Q.floor = Lq, Q.forEach = UU, Q.forEachRight = WU, Q.forIn = UG, Q.forInRight = WG, Q.forOwn = GG, Q.forOwnRight = KG, Q.get = YG, Q.gt = RW, Q.gte = zW, Q.has = XG, Q.hasIn = ZG, Q.head = jH, Q.identity = lq, Q.includes = KU, Q.indexOf = MH, Q.inRange = CK, Q.invoke = eK, Q.isArguments = BW, Q.isArray = VW, Q.isArrayBuffer = HW, Q.isArrayLike = UW, Q.isArrayLikeObject = WW, Q.isBoolean = GW, Q.isBuffer = KW, Q.isDate = qW, Q.isElement = JW, Q.isEmpty = YW, Q.isEqual = XW, Q.isEqualWith = ZW, Q.isError = QW, Q.isFinite = $W, Q.isFunction = eG, Q.isInteger = tG, Q.isLength = nG, Q.isMap = aG, Q.isMatch = oG, Q.isMatchWith = sG, Q.isNaN = cG, Q.isNative = lG, Q.isNil = dG, Q.isNull = uG, Q.isNumber = fG, Q.isObject = rG, Q.isObjectLike = iG, Q.isPlainObject = pG, Q.isRegExp = mG, Q.isSafeInteger = hG, Q.isSet = gG, Q.isString = _G, Q.isSymbol = vG, Q.isTypedArray = yG, Q.isUndefined = bG, Q.isWeakMap = xG, Q.isWeakSet = SG, Q.join = LH, Q.kebabCase = jK, Q.last = RH, Q.lastIndexOf = zH, Q.lowerCase = MK, Q.lowerFirst = NK, Q.lt = CG, Q.lte = wG, Q.max = Rq, Q.maxBy = zq, Q.mean = Bq, Q.meanBy = Vq, Q.min = Hq, Q.minBy = Uq, Q.stubArray = Eq, Q.stubFalse = Dq, Q.stubObject = Oq, Q.stubString = kq, Q.stubTrue = Aq, Q.multiply = Wq, Q.nth = BH, Q.noConflict = gq, Q.noop = _q, Q.now = sW, Q.pad = PK, Q.padEnd = FK, Q.padStart = IK, Q.parseInt = LK, Q.random = wK, Q.reduce = QU, Q.reduceRight = $U, Q.repeat = RK, Q.replace = zK, Q.result = dK, Q.round = Gq, Q.runInContext = i, Q.sample = tW, Q.size = iW, Q.snakeCase = BK, Q.some = aW, Q.sortedIndex = YH, Q.sortedIndexBy = XH, Q.sortedIndexOf = ZH, Q.sortedLastIndex = QH, Q.sortedLastIndexBy = $H, Q.sortedLastIndexOf = eU, Q.startCase = HK, Q.startsWith = UK, Q.subtract = Kq, Q.sum = qq, Q.sumBy = Jq, Q.template = WK, Q.times = jq, Q.toFinite = EG, Q.toInteger = DG, Q.toLength = OG, Q.toLower = GK, Q.toNumber = kG, Q.toSafeInteger = jG, Q.toString = MG, Q.toUpper = KK, Q.trim = qK, Q.trimEnd = JK, Q.trimStart = YK, Q.truncate = XK, Q.unescape = ZK, Q.uniqueId = Nq, Q.upperCase = QK, Q.upperFirst = $K, Q.each = UU, Q.eachRight = WU, Q.first = jH, hq(Q, function() {
var i = {};
return dz(Q, function(a, o) {
qF.call(Q.prototype, o) || (i[o] = a);
}), i;
}(), { chain: !1 }), Q.VERSION = s, ZI([
"bind",
"bindKey",
"curry",
"curryRight",
"partial",
"partialRight"
], function(i) {
Q[i].placeholder = Q;
}), ZI(["drop", "take"], function(i, a) {
sR.prototype[i] = function(s) {
s = s === o ? 1 : wI(DG(s), 0);
var c = this.__filtered__ && !a ? new sR(this) : this.clone();
return c.__filtered__ ? c.__takeCount__ = kI(s, c.__takeCount__) : c.__views__.push({
size: kI(s, yP),
type: i + (c.__dir__ < 0 ? "Right" : "")
}), c;
}, sR.prototype[i + "Right"] = function(a) {
return this.reverse()[i](a).reverse();
};
}), ZI([
"filter",
"map",
"takeWhile"
], function(i, a) {
var o = a + 1, s = o == fP || o == mP;
sR.prototype[i] = function(i) {
var a = this.clone();
return a.__iteratees__.push({
iteratee: CV(i, 3),
type: o
}), a.__filtered__ = a.__filtered__ || s, a;
};
}), ZI(["head", "last"], function(i, a) {
var o = "take" + (a ? "Right" : "");
sR.prototype[i] = function() {
return this[o](1).value()[0];
};
}), ZI(["initial", "tail"], function(i, a) {
var o = "drop" + (a ? "" : "Right");
sR.prototype[i] = function() {
return this.__filtered__ ? new sR(this) : this[o](1);
};
}), sR.prototype.compact = function() {
return this.filter(lq);
}, sR.prototype.find = function(i) {
return this.filter(i).head();
}, sR.prototype.findLast = function(i) {
return this.reverse().find(i);
}, sR.prototype.invokeMap = eB(function(i, a) {
return typeof i == "function" ? new sR(this) : this.map(function(o) {
return Cz(o, i, a);
});
}), sR.prototype.reject = function(i) {
return this.filter(bW(CV(i)));
}, sR.prototype.slice = function(i, a) {
i = DG(i);
var s = this;
return s.__filtered__ && (i > 0 || a < 0) ? new sR(s) : (i < 0 ? s = s.takeRight(-i) : i && (s = s.drop(i)), a !== o && (a = DG(a), s = a < 0 ? s.dropRight(-a) : s.take(a - i)), s);
}, sR.prototype.takeRightWhile = function(i) {
return this.reverse().takeWhile(i).reverse();
}, sR.prototype.toArray = function() {
return this.take(yP);
}, dz(sR.prototype, function(i, a) {
var s = /^(?:filter|find|map|reject)|While$/.test(a), c = /^(?:head|last)$/.test(a), d = Q[c ? "take" + (a == "last" ? "Right" : "") : a], f = c || /^find/.test(a);
d && (Q.prototype[a] = function() {
var a = this.__wrapped__, g = c ? [1] : arguments, b = a instanceof sR, x = g[0], S = b || VW(a), C = function(i) {
var a = d.apply(Q, iL([i], g));
return c && w ? a[0] : a;
};
S && s && typeof x == "function" && x.length != 1 && (b = S = !1);
var w = this.__chain__, E = !!this.__actions__.length, O = f && !w, A = b && !E;
if (!f && S) {
a = A ? a : new sR(this);
var M = i.apply(a, g);
return M.__actions__.push({
func: EU,
args: [C],
thisArg: o
}), new oR(M, w);
}
return O && A ? i.apply(this, g) : (M = this.thru(C), O ? c ? M.value()[0] : M.value() : M);
});
}), ZI([
"pop",
"push",
"shift",
"sort",
"splice",
"unshift"
], function(i) {
var a = HF[i], o = /^(?:push|sort|unshift)$/.test(i) ? "tap" : "thru", s = /^(?:pop|shift)$/.test(i);
Q.prototype[i] = function() {
var i = arguments;
if (s && !this.__chain__) {
var c = this.value();
return a.apply(VW(c) ? c : [], i);
}
return this[o](function(o) {
return a.apply(VW(o) ? o : [], i);
});
};
}), dz(sR.prototype, function(i, a) {
var o = Q[a];
if (o) {
var s = o.name + "";
qF.call(vL, s) || (vL[s] = []), vL[s].push({
name: a,
func: o
});
}
}), vL[QB(o, I).name] = [{
name: "wrapper",
func: o
}], sR.prototype.clone = cR, sR.prototype.reverse = lR, sR.prototype.value = uR, Q.prototype.at = DU, Q.prototype.chain = OU, Q.prototype.commit = kU, Q.prototype.next = AU, Q.prototype.plant = MU, Q.prototype.reverse = NU, Q.prototype.toJSON = Q.prototype.valueOf = Q.prototype.value = PU, Q.prototype.first = Q.prototype.head, lI && (Q.prototype[lI] = jU), Q;
})();
typeof define == "function" && typeof define.amd == "object" && define.amd ? (LI._ = QL, define(function() {
return QL;
})) : zI ? ((zI.exports = QL)._ = QL, RI._ = QL) : LI._ = QL;
}).call(i);
})), import_lodash$4 = /* @__PURE__ */ __toESM(require_lodash());
function __insertCSS(i) {
if (!i || typeof document > "u") return;
let a = document.head || document.getElementsByTagName("head")[0], o = document.createElement("style");
o.type = "text/css", a.appendChild(o), o.styleSheet ? o.styleSheet.cssText = i : o.appendChild(document.createTextNode(i));
}
var getAsset = (i) => {
switch (i) {
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: i, className: a }) => /* @__PURE__ */ ke.createElement("div", {
className: ["sonner-loading-wrapper", a].filter(Boolean).join(" "),
"data-visible": i
}, /* @__PURE__ */ ke.createElement("div", { className: "sonner-spinner" }, bars.map((i, a) => /* @__PURE__ */ ke.createElement("div", {
className: "sonner-loading-bar",
key: `spinner-bar-${a}`
})))), SuccessIcon = /* @__PURE__ */ ke.createElement("svg", {
xmlns: "http://www.w3.org/2000/svg",
viewBox: "0 0 20 20",
fill: "currentColor",
height: "20",
width: "20"
}, /* @__PURE__ */ ke.createElement("path", {
fillRule: "evenodd",
d: "M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z",
clipRule: "evenodd"
})), WarningIcon = /* @__PURE__ */ ke.createElement("svg", {
xmlns: "http://www.w3.org/2000/svg",
viewBox: "0 0 24 24",
fill: "currentColor",
height: "20",
width: "20"
}, /* @__PURE__ */ ke.createElement("path", {
fillRule: "evenodd",
d: "M9.401 3.003c1.155-2 4.043-2 5.197 0l7.355 12.748c1.154 2-.29 4.5-2.599 4.5H4.645c-2.309 0-3.752-2.5-2.598-4.5L9.4 3.003zM12 8.25a.75.75 0 01.75.75v3.75a.75.75 0 01-1.5 0V9a.75.75 0 01.75-.75zm0 8.25a.75.75 0 100-1.5.75.75 0 000 1.5z",
clipRule: "evenodd"
})), InfoIcon$1 = /* @__PURE__ */ ke.createElement("svg", {
xmlns: "http://www.w3.org/2000/svg",
viewBox: "0 0 20 20",
fill: "currentColor",
height: "20",
width: "20"
}, /* @__PURE__ */ ke.createElement("path", {
fillRule: "evenodd",
d: "M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a.75.75 0 000 1.5h.253a.25.25 0 01.244.304l-.459 2.066A1.75 1.75 0 0010.747 15H11a.75.75 0 000-1.5h-.253a.25.25 0 01-.244-.304l.459-2.066A1.75 1.75 0 009.253 9H9z",
clipRule: "evenodd"
})), ErrorIcon = /* @__PURE__ */ ke.createElement("svg", {
xmlns: "http://www.w3.org/2000/svg",
viewBox: "0 0 20 20",
fill: "currentColor",
height: "20",
width: "20"
}, /* @__PURE__ */ ke.createElement("path", {
fillRule: "evenodd",
d: "M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-8-5a.75.75 0 01.75.75v4.5a.75.75 0 01-1.5 0v-4.5A.75.75 0 0110 5zm0 10a1 1 0 100-2 1 1 0 000 2z",
clipRule: "evenodd"
})), CloseIcon = /* @__PURE__ */ ke.createElement("svg", {
xmlns: "http://www.w3.org/2000/svg",
width: "12",
height: "12",
viewBox: "0 0 24 24",
fill: "none",
stroke: "currentColor",
strokeWidth: "1.5",
strokeLinecap: "round",
strokeLinejoin: "round"
}, /* @__PURE__ */ ke.createElement("line", {
x1: "18",
y1: "6",
x2: "6",
y2: "18"
}), /* @__PURE__ */ ke.createElement("line", {
x1: "6",
y1: "6",
x2: "18",
y2: "18"
})), useIsDocumentHidden = () => {
let [i, a] = ke.useState(document.hidden);
return ke.useEffect(() => {
let i = () => {
a(document.hidden);
};
return document.addEventListener("visibilitychange", i), () => window.removeEventListener("visibilitychange", i);
}, []), i;
}, toastsCounter = 1, ToastState = new class {
constructor() {
this.subscribe = (i) => (this.subscribers.push(i), () => {
let a = this.subscribers.indexOf(i);
this.subscribers.splice(a, 1);
}), this.publish = (i) => {
this.subscribers.forEach((a) => a(i));
}, this.addToast = (i) => {
this.publish(i), this.toasts = [...this.toasts, i];
}, this.create = (i) => {
let { message: a,...o } = i, s = typeof i?.id == "number" || i.id?.length > 0 ? i.id : toastsCounter++, c = this.toasts.find((i) => i.id === s), d = i.dismissible === void 0 ? !0 : i.dismissible;
return this.dismissedToasts.has(s) && this.dismissedToasts.delete(s), c ? this.toasts = this.toasts.map((o) => o.id === s ? (this.publish({
...o,
...i,
id: s,
title: a
}), {
...o,
...i,
id: s,
dismissible: d,
title: a
}) : o) : this.addToast({
title: a,
...o,
dismissible: d,
id: s
}), s;
}, this.dismiss = (i) => (i ? (this.dismissedToasts.add(i), requestAnimationFrame(() => this.subscribers.forEach((a) => a({
id: i,
dismiss: !0
})))) : this.toasts.forEach((i) => {
this.subscribers.forEach((a) => a({
id: i.id,
dismiss: !0
}));
}), i), this.message = (i, a) => this.create({
...a,
message: i
}), this.error = (i, a) => this.create({
...a,
message: i,
type: "error"
}), this.success = (i, a) => this.create({
...a,
type: "success",
message: i
}), this.info = (i, a) => this.create({
...a,
type: "info",
message: i
}), this.warning = (i, a) => this.create({
...a,
type: "warning",
message: i
}), this.loading = (i, a) => this.create({
...a,
type: "loading",
message: i
}), this.promise = (i, a) => {
if (!a) return;
let o;
a.loading !== void 0 && (o = this.create({
...a,
promise: i,
type: "loading",
message: a.loading,
description: typeof a.description == "function" ? void 0 : a.description
}));
let s = Promise.resolve(i instanceof Function ? i() : i), c = o !== void 0, d, f = s.then(async (i) => {
if (d = ["resolve", i], ke.isValidElement(i)) c = !1, this.create({
id: o,
type: "default",
message: i
});
else if (isHttpResponse(i) && !i.ok) {
c = !1;
let s = typeof a.error == "function" ? await a.error(`HTTP error! status: ${i.status}`) : a.error, d = typeof a.description == "function" ? await a.description(`HTTP error! status: ${i.status}`) : a.description, f = typeof s == "object" && !ke.isValidElement(s) ? s : { message: s };
this.create({
id: o,
type: "error",
description: d,
...f
});
} else if (i instanceof Error) {
c = !1;
let s = typeof a.error == "function" ? await a.error(i) : a.error, d = typeof a.description == "function" ? await a.description(i) : a.description, f = typeof s == "object" && !ke.isValidElement(s) ? s : { message: s };
this.create({
id: o,
type: "error",
description: d,
...f
});
} else if (a.success !== void 0) {
c = !1;
let s = typeof a.success == "function" ? await a.success(i) : a.success, d = typeof a.description == "function" ? await a.description(i) : a.description, f = typeof s == "object" && !ke.isValidElement(s) ? s : { message: s };
this.create({
id: o,
type: "success",
description: d,
...f
});
}
}).catch(async (i) => {
if (d = ["reject", i], a.error !== void 0) {
c = !1;
let s = typeof a.error == "function" ? await a.error(i) : a.error, d = typeof a.description == "function" ? await a.description(i) : a.description, f = typeof s == "object" && !ke.isValidElement(s) ? s : { message: s };
this.create({
id: o,
type: "error",
description: d,
...f
});
}
}).finally(() => {
c && (this.dismiss(o), o = void 0), a.finally == null || a.finally.call(a);
}), g = () => new Promise((i, a) => f.then(() => d[0] === "reject" ? a(d[1]) : i(d[1])).catch(a));
return typeof o != "string" && typeof o != "number" ? { unwrap: g } : Object.assign(o, { unwrap: g });
}, this.custom = (i, a) => {
let o = a?.id || toastsCounter++;
return this.create({
jsx: i(o),
id: o,
...a
}), o;
}, this.getActiveToasts = () => this.toasts.filter((i) => !this.dismissedToasts.has(i.id)), this.subscribers = [], this.toasts = [], this.dismissedToasts = /* @__PURE__ */ new Set();
}
}(), toastFunction = (i, a) => {
let o = a?.id || toastsCounter++;
return ToastState.addToast({
title: i,
...a,
id: o
}), o;
}, isHttpResponse = (i) => i && typeof i == "object" && "ok" in i && typeof i.ok == "boolean" && "status" in i && typeof i.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(i) {
return i.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(...i) {
return i.filter(Boolean).join(" ");
}
function getDefaultSwipeDirections(i) {
let [a, o] = i.split("-"), s = [];
return a && s.push(a), o && s.push(o), s;
}
var Toast = (i) => {
let { invert: a, toast: o, unstyled: s, interacting: c, setHeights: d, visibleToasts: f, heights: g, index: b, toasts: x, expanded: S, removeToast: C, defaultRichColors: w, closeButton: E, style: O, cancelButtonStyle: A, actionButtonStyle: M, className: F = "", descriptionClassName: I = "", duration: R, position: V, gap: rP, expandByDefault: iP, classNames: q, icons: aP, closeButtonAriaLabel: oP = "Close toast" } = i, [sP, cP] = ke.useState(null), [lP, uP] = ke.useState(null), [dP, fP] = ke.useState(!1), [pP, mP] = ke.useState(!1), [hP, gP] = ke.useState(!1), [_P, vP] = ke.useState(!1), [yP, bP] = ke.useState(!1), [xP, SP] = ke.useState(0), [CP, wP] = ke.useState(0), TP = ke.useRef(o.duration || R || TOAST_LIFETIME), EP = ke.useRef(null), DP = ke.useRef(null), OP = b === 0, kP = b + 1 <= f, AP = o.type, jP = o.dismissible !== !1, MP = o.className || "", NP = o.descriptionClassName || "", PP = ke.useMemo(() => g.findIndex((i) => i.toastId === o.id) || 0, [g, o.id]), FP = ke.useMemo(() => o.closeButton ?? E, [o.closeButton, E]), IP = ke.useMemo(() => o.duration || R || TOAST_LIFETIME, [o.duration, R]), LP = ke.useRef(0), RP = ke.useRef(0), zP = ke.useRef(0), BP = ke.useRef(null), [VP, HP] = V.split("-"), UP = ke.useMemo(() => g.reduce((i, a, o) => o >= PP ? i : i + a.height, 0), [g, PP]), WP = useIsDocumentHidden(), GP = o.invert || a, KP = AP === "loading";
RP.current = ke.useMemo(() => PP * rP + UP, [PP, UP]), ke.useEffect(() => {
TP.current = IP;
}, [IP]), ke.useEffect(() => {
fP(!0);
}, []), ke.useEffect(() => {
let i = DP.current;
if (i) {
let a = i.getBoundingClientRect().height;
return wP(a), d((i) => [{
toastId: o.id,
height: a,
position: o.position
}, ...i]), () => d((i) => i.filter((i) => i.toastId !== o.id));
}
}, [d, o.id]), ke.useLayoutEffect(() => {
if (!dP) return;
let i = DP.current, a = i.style.height;
i.style.height = "auto";
let s = i.getBoundingClientRect().height;
i.style.height = a, wP(s), d((i) => i.find((i) => i.toastId === o.id) ? i.map((i) => i.toastId === o.id ? {
...i,
height: s
} : i) : [{
toastId: o.id,
height: s,
position: o.position
}, ...i]);
}, [
dP,
o.title,
o.description,
d,
o.id,
o.jsx,
o.action,
o.cancel
]);
let qP = ke.useCallback(() => {
mP(!0), SP(RP.current), d((i) => i.filter((i) => i.toastId !== o.id)), setTimeout(() => {
C(o);
}, TIME_BEFORE_UNMOUNT);
}, [
o,
C,
d,
RP
]);
ke.useEffect(() => {
if (o.promise && AP === "loading" || o.duration === Infinity || o.type === "loading") return;
let i;
return S || c || WP ? (() => {
if (zP.current < LP.current) {
let i = (/* @__PURE__ */ new Date()).getTime() - LP.current;
TP.current -= i;
}
zP.current = (/* @__PURE__ */ new Date()).getTime();
})() : TP.current !== Infinity && (LP.current = (/* @__PURE__ */ new Date()).getTime(), i = setTimeout(() => {
o.onAutoClose == null || o.onAutoClose.call(o, o), qP();
}, TP.current)), () => clearTimeout(i);
}, [
S,
c,
o,
AP,
WP,
qP
]), ke.useEffect(() => {
o.delete && (qP(), o.onDismiss == null || o.onDismiss.call(o, o));
}, [qP, o.delete]);
function JP() {
return aP?.loading ? /* @__PURE__ */ ke.createElement("div", {
className: cn$1(q?.loader, o?.classNames?.loader, "sonner-loader"),
"data-visible": AP === "loading"
}, aP.loading) : /* @__PURE__ */ ke.createElement(Loader, {
className: cn$1(q?.loader, o?.classNames?.loader),
visible: AP === "loading"
});
}
let YP = o.icon || aP?.[AP] || getAsset(AP);
return /* @__PURE__ */ ke.createElement("li", {
tabIndex: 0,
ref: DP,
className: cn$1(F, MP, q?.toast, o?.classNames?.toast, q?.default, q?.[AP], o?.classNames?.[AP]),
"data-sonner-toast": "",
"data-rich-colors": o.richColors ?? w,
"data-styled": !(o.jsx || o.unstyled || s),
"data-mounted": dP,
"data-promise": !!o.promise,
"data-swiped": yP,
"data-removed": pP,
"data-visible": kP,
"data-y-position": VP,
"data-x-position": HP,
"data-index": b,
"data-front": OP,
"data-swiping": hP,
"data-dismissible": jP,
"data-type": AP,
"data-invert": GP,
"data-swipe-out": _P,
"data-swipe-direction": lP,
"data-expanded": !!(S || iP && dP),
"data-testid": o.testId,
style: {
"--index": b,
"--toasts-before": b,
"--z-index": x.length - b,
"--offset": `${pP ? xP : RP.current}px`,
"--initial-height": iP ? "auto" : `${CP}px`,
...O,
...o.style
},
onDragEnd: () => {
gP(!1), cP(null), BP.current = null;
},
onPointerDown: (i) => {
i.button !== 2 && (KP || !jP || (EP.current = /* @__PURE__ */ new Date(), SP(RP.current), i.target.setPointerCapture(i.pointerId), i.target.tagName !== "BUTTON" && (gP(!0), BP.current = {
x: i.clientX,
y: i.clientY
})));
},
onPointerUp: () => {
if (_P || !jP) return;
BP.current = null;
let i = Number(DP.current?.style.getPropertyValue("--swipe-amount-x").replace("px", "") || 0), a = Number(DP.current?.style.getPropertyValue("--swipe-amount-y").replace("px", "") || 0), s = (/* @__PURE__ */ new Date()).getTime() - EP.current?.getTime(), c = sP === "x" ? i : a, d = Math.abs(c) / s;
if (Math.abs(c) >= SWIPE_THRESHOLD || d > .11) {
SP(RP.current), o.onDismiss == null || o.onDismiss.call(o, o), uP(sP === "x" ? i > 0 ? "right" : "left" : a > 0 ? "down" : "up"), qP(), vP(!0);
return;
} else {
var f, g;
(f = DP.current) == null || f.style.setProperty("--swipe-amount-x", "0px"), (g = DP.current) == null || g.style.setProperty("--swipe-amount-y", "0px");
}
bP(!1), gP(!1), cP(null);
},
onPointerMove: (a) => {
var o, s;
if (!BP.current || !jP || window.getSelection()?.toString().length > 0) return;
let c = a.clientY - BP.current.y, d = a.clientX - BP.current.x, f = i.swipeDirections ?? getDefaultSwipeDirections(V);
!sP && (Math.abs(d) > 1 || Math.abs(c) > 1) && cP(Math.abs(d) > Math.abs(c) ? "x" : "y");
let g = {
x: 0,
y: 0
}, b = (i) => 1 / (1.5 + Math.abs(i) / 20);
if (sP === "y") {
if (f.includes("top") || f.includes("bottom")) if (f.includes("top") && c < 0 || f.includes("bottom") && c > 0) g.y = c;
else {
let i = c * b(c);
g.y = Math.abs(i) < Math.abs(c) ? i : c;
}
} else if (sP === "x" && (f.includes("left") || f.includes("right"))) if (f.includes("left") && d < 0 || f.includes("right") && d > 0) g.x = d;
else {
let i = d * b(d);
g.x = Math.abs(i) < Math.abs(d) ? i : d;
}
(Math.abs(g.x) > 0 || Math.abs(g.y) > 0) && bP(!0), (o = DP.current) == null || o.style.setProperty("--swipe-amount-x", `${g.x}px`), (s = DP.current) == null || s.style.setProperty("--swipe-amount-y", `${g.y}px`);
}
}, FP && !o.jsx && AP !== "loading" ? /* @__PURE__ */ ke.createElement("button", {
"aria-label": oP,
"data-disabled": KP,
"data-close-button": !0,
onClick: KP || !jP ? () => {} : () => {
qP(), o.onDismiss == null || o.onDismiss.call(o, o);
},
className: cn$1(q?.closeButton, o?.classNames?.closeButton)
}, aP?.close ?? CloseIcon) : null, (AP || o.icon || o.promise) && o.icon !== null && (aP?.[AP] !== null || o.icon) ? /* @__PURE__ */ ke.createElement("div", {
"data-icon": "",
className: cn$1(q?.icon, o?.classNames?.icon)
}, o.promise || o.type === "loading" && !o.icon ? o.icon || JP() : null, o.type === "loading" ? null : YP) : null, /* @__PURE__ */ ke.createElement("div", {
"data-content": "",
className: cn$1(q?.content, o?.classNames?.content)
}, /* @__PURE__ */ ke.createElement("div", {
"data-title": "",
className: cn$1(q?.title, o?.classNames?.title)
}, o.jsx ? o.jsx : typeof o.title == "function" ? o.title() : o.title), o.description ? /* @__PURE__ */ ke.createElement("div", {
"data-description": "",
className: cn$1(I, NP, q?.description, o?.classNames?.description)
}, typeof o.description == "function" ? o.description() : o.description) : null), /* @__PURE__ */ ke.isValidElement(o.cancel) ? o.cancel : o.cancel && isAction(o.cancel) ? /* @__PURE__ */ ke.createElement("button", {
"data-button": !0,
"data-cancel": !0,
style: o.cancelButtonStyle || A,
onClick: (i) => {
isAction(o.cancel) && jP && (o.cancel.onClick == null || o.cancel.onClick.call(o.cancel, i), qP());
},
className: cn$1(q?.cancelButton, o?.classNames?.cancelButton)
}, o.cancel.label) : null, /* @__PURE__ */ ke.isValidElement(o.action) ? o.action : o.action && isAction(o.action) ? /* @__PURE__ */ ke.createElement("button", {
"data-button": !0,
"data-action": !0,
style: o.actionButtonStyle || M,
onClick: (i) => {
isAction(o.action) && (o.action.onClick == null || o.action.onClick.call(o.action, i), !i.defaultPrevented && qP());
},
className: cn$1(q?.actionButton, o?.classNames?.actionButton)
}, o.action.label) : null);
};
function getDocumentDirection() {
if (typeof window > "u" || typeof document > "u") return "ltr";
let i = document.documentElement.getAttribute("dir");
return i === "auto" || !i ? window.getComputedStyle(document.documentElement).direction : i;
}
function assignOffset(i, a) {
let o = {};
return [i, a].forEach((i, a) => {
let s = a === 1, c = s ? "--mobile-offset" : "--offset", d = s ? MOBILE_VIEWPORT_OFFSET : VIEWPORT_OFFSET;
function f(i) {
[
"top",
"right",
"bottom",
"left"
].forEach((a) => {
o[`${c}-${a}`] = typeof i == "number" ? `${i}px` : i;
});
}
typeof i == "number" || typeof i == "string" ? f(i) : typeof i == "object" ? [
"top",
"right",
"bottom",
"left"
].forEach((a) => {
i[a] === void 0 ? o[`${c}-${a}`] = d : o[`${c}-${a}`] = typeof i[a] == "number" ? `${i[a]}px` : i[a];
}) : f(d);
}), o;
}
var Toaster$1 = /* @__PURE__ */ ke.forwardRef(function(i, a) {
let { id: o, invert: s, position: c = "bottom-right", hotkey: d = ["altKey", "KeyT"], expand: f, closeButton: g, className: b, offset: x, mobileOffset: S, theme: C = "light", richColors: w, duration: E, style: O, visibleToasts: A = VISIBLE_TOASTS_AMOUNT, toastOptions: M, dir: F = getDocumentDirection(), gap: I = GAP, icons: R, containerAriaLabel: V = "Notifications" } = i, [rP, iP] = ke.useState([]), q = ke.useMemo(() => o ? rP.filter((i) => i.toasterId === o) : rP.filter((i) => !i.toasterId), [rP, o]), aP = ke.useMemo(() => Array.from(new Set([c].concat(q.filter((i) => i.position).map((i) => i.position)))), [q, c]), [oP, sP] = ke.useState([]), [cP, lP] = ke.useState(!1), [uP, dP] = ke.useState(!1), [fP, pP] = ke.useState(C === "system" ? typeof window < "u" && window.matchMedia && window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light" : C), mP = ke.useRef(null), hP = d.join("+").replace(/Key/g, "").replace(/Digit/g, ""), gP = ke.useRef(null), _P = ke.useRef(!1), vP = ke.useCallback((i) => {
iP((a) => (a.find((a) => a.id === i.id)?.delete || ToastState.dismiss(i.id), a.filter(({ id: a }) => a !== i.id)));
}, []);
return ke.useEffect(() => ToastState.subscribe((i) => {
if (i.dismiss) {
requestAnimationFrame(() => {
iP((a) => a.map((a) => a.id === i.id ? {
...a,
delete: !0
} : a));
});
return;
}
setTimeout(() => {
ReactDOM$1.flushSync(() => {
iP((a) => {
let o = a.findIndex((a) => a.id === i.id);
return o === -1 ? [i, ...a] : [
...a.slice(0, o),
{
...a[o],
...i
},
...a.slice(o + 1)
];
});
});
});
}), [rP]), ke.useEffect(() => {
if (C !== "system") {
pP(C);
return;
}
if (C === "system" && (window.matchMedia && window.matchMedia("(prefers-color-scheme: dark)").matches ? pP("dark") : pP("light")), typeof window > "u") return;
let i = window.matchMedia("(prefers-color-scheme: dark)");
try {
i.addEventListener("change", ({ matches: i }) => {
pP(i ? "dark" : "light");
});
} catch {
i.addListener(({ matches: i }) => {
try {
pP(i ? "dark" : "light");
} catch (i) {
console.error(i);
}
});
}
}, [C]), ke.useEffect(() => {
rP.length <= 1 && lP(!1);
}, [rP]), ke.useEffect(() => {
let i = (i) => {
if (d.every((a) => i[a] || i.code === a)) {
var a;
lP(!0), (a = mP.current) == null || a.focus();
}
i.code === "Escape" && (document.activeElement === mP.current || mP.current?.contains(document.activeElement)) && lP(!1);
};
return document.addEventListener("keydown", i), () => document.removeEventListener("keydown", i);
}, [d]), ke.useEffect(() => {
if (mP.current) return () => {
gP.current && (gP.current.focus({ preventScroll: !0 }), gP.current = null, _P.current = !1);
};
}, [mP.current]), /* @__PURE__ */ ke.createElement("section", {
ref: a,
"aria-label": `${V} ${hP}`,
tabIndex: -1,
"aria-live": "polite",
"aria-relevant": "additions text",
"aria-atomic": "false",
suppressHydrationWarning: !0
}, aP.map((a, o) => {
let [c, d] = a.split("-");
return q.length ? /* @__PURE__ */ ke.createElement("ol", {
key: a,
dir: F === "auto" ? getDocumentDirection() : F,
tabIndex: -1,
ref: mP,
className: b,
"data-sonner-toaster": !0,
"data-sonner-theme": fP,
"data-y-position": c,
"data-x-position": d,
style: {
"--front-toast-height": `${oP[0]?.height || 0}px`,
"--width": `${TOAST_WIDTH}px`,
"--gap": `${I}px`,
...O,
...assignOffset(x, S)
},
onBlur: (i) => {
_P.current && !i.currentTarget.contains(i.relatedTarget) && (_P.current = !1, gP.current &&= (gP.current.focus({ preventScroll: !0 }), null));
},
onFocus: (i) => {
i.target instanceof HTMLElement && i.target.dataset.dismissible === "false" || _P.current || (_P.current = !0, gP.current = i.relatedTarget);
},
onMouseEnter: () => lP(!0),
onMouseMove: () => lP(!0),
onMouseLeave: () => {
uP || lP(!1);
},
onDragEnd: () => lP(!1),
onPointerDown: (i) => {
i.target instanceof HTMLElement && i.target.dataset.dismissible === "false" || dP(!0);
},
onPointerUp: () => dP(!1)
}, q.filter((i) => !i.position && o === 0 || i.position === a).map((o, c) => /* @__PURE__ */ ke.createElement(Toast, {
key: o.id,
icons: R,
index: c,
toast: o,
defaultRichColors: w,
duration: M?.duration ?? E,
className: M?.className,
descriptionClassName: M?.descriptionClassName,
invert: s,
visibleToasts: A,
closeButton: M?.closeButton ?? g,
interacting: uP,
position: a,
style: M?.style,
unstyled: M?.unstyled,
classNames: M?.classNames,
cancelButtonStyle: M?.cancelButtonStyle,
actionButtonStyle: M?.actionButtonStyle,
closeButtonAriaLabel: M?.closeButtonAriaLabel,
removeToast: vP,
toasts: q.filter((i) => i.position == o.position),
heights: oP.filter((i) => i.position == o.position),
setHeights: sP,
expandByDefault: f,
gap: I,
expanded: cP,
swipeDirections: i.swipeDirections
}))) : null;
}));
});
function healQuery(i) {
return i.replace(/\{(\s+)?\}/g, "");
}
function isPathInQuery(i, a, o) {
if (!i || !a) return !1;
i = healQuery(i);
let [s, ...c] = a.split("."), d;
try {
d = parse(i);
} catch {}
if (!d) return !1;
let f = d.definitions.find((i) => i.kind === Kind.OPERATION_DEFINITION && i.operation === s ? o ? i.name?.value === o : !0 : !1);
if (!f) return !1;
if (c.length === 0) return !0;
let g = [], b = !1;
return visit(f, { Field: {
enter(i) {
if (g.push(i.name.value), g.length === c.length && g.every((i, a) => i === c[a])) return b = !0, !1;
},
leave() {
g.pop();
}
} }), b;
}
function addPathToQuery(i, a, o) {
i = healQuery(i);
let [s, ...c] = a.split("."), d;
try {
d = parse(i);
} catch {}
d ??= {
kind: Kind.DOCUMENT,
definitions: [{
kind: Kind.OPERATION_DEFINITION,
operation: s,
name: {
kind: Kind.NAME,
value: "Untitled"
},
selectionSet: {
kind: Kind.SELECTION_SET,
selections: []
}
}]
};
let f = d.definitions.find((i) => i.kind === Kind.OPERATION_DEFINITION && i.operation === s ? o ? i.name?.value === o : !0 : !1);
if (f || (f = {
kind: Kind.OPERATION_DEFINITION,
operation: s,
name: {
kind: Kind.NAME,
value: "Untitled"
},
selectionSet: {
kind: Kind.SELECTION_SET,
selections: []
}
}, d.definitions.push(f)), c.length === 0) return print(d).split("\n").map((i) => i.includes(`${s} Untitled`) ? i + " {}" : i).join("\n");
let g = [];
return visit(f, {
OperationDefinition: { enter(i) {
let a = c[0];
i.selectionSet ??= {
kind: Kind.SELECTION_SET,
selections: []
};
let o = i.selectionSet.selections.find((i) => i.kind === Kind.FIELD && i.name.value === a);
o || (o = {
kind: Kind.FIELD,
name: {
kind: Kind.NAME,
value: a
}
}, i.selectionSet.selections.push(o));
} },
Field: {
enter(i) {
if (g.push(i.name.value), g.every((i, a) => i === c[a])) {
if (g.length === c.length) return !1;
let a = c[g.length];
i.selectionSet ??= {
kind: Kind.SELECTION_SET,
selections: []
};
let o = i.selectionSet.selections.find((i) => i.kind === Kind.FIELD && i.name.value === a);
o || (o = {
kind: Kind.FIELD,
name: {
kind: Kind.NAME,
value: a
}
}, i.selectionSet.selections.push(o));
}
},
leave() {
g.pop();
}
}
}), print(d);
}
function deletePathFromQuery(i, a, o) {
i = healQuery(i);
let [s, ...c] = a.split("."), d;
try {
d = parse(i);
} catch {}
if (!d) return i;
let f = d.definitions.find((i) => i.kind === Kind.OPERATION_DEFINITION && i.operation === s ? o ? i.name?.value === o : !0 : !1);
if (!f) return i;
let g = [], b = !1;
return visit(f, {
OperationDefinition: { enter(i) {
if (c.length === 1) {
let a = c[0];
i.selectionSet && (i.selectionSet.selections = i.selectionSet.selections.filter((i) => i.kind !== Kind.FIELD || i.name.value !== a), b = i.selectionSet.selections.length === 0);
}
} },
Field: {
enter(i) {
if (g.push(i.name.value), g.length === c.length - 1 && g.every((i, a) => i === c[a])) {
let a = c[g.length];
i.selectionSet && (i.selectionSet.selections = i.selectionSet.selections.filter((i) => i.kind !== Kind.FIELD || i.name.value !== a));
}
},
leave() {
g.pop();
}
}
}), b ? d.definitions.length > 1 ? `${print({
...d,
definitions: d.definitions.filter((i) => i !== f)
})}
${s} ${f.name?.value} {}` : `${s} ${f.name?.value} {}` : (f = d.definitions.find((i) => i.kind === Kind.OPERATION_DEFINITION && i.operation === s ? o ? i.name?.value === o : !0 : !1), print(d));
}
function getOperationName(i) {
try {
return parse(i).definitions.find((i) => i.kind === Kind.OPERATION_DEFINITION)?.name?.value;
} catch {
let a = i.match(/(query|mutation|subscription)\s+([a-zA-Z0-9_]+)/);
return a ? a[2] : null;
}
}
function getOperationType(i) {
try {
return parse(i).definitions.find((i) => i.kind === Kind.OPERATION_DEFINITION)?.operation;
} catch {
return null;
}
}
function isArgInQuery(i, a, o, s) {
if (!i || !a) return !1;
i = healQuery(i);
let [c, ...d] = a.split("."), f;
try {
f = parse(i);
} catch {}
if (!f) return !1;
let g = f.definitions.find((i) => i.kind === Kind.OPERATION_DEFINITION && i.operation === c ? s ? i.name?.value === s : !0 : !1);
if (!g) return !1;
let b = [], x = !1;
return visit(g, { Field: {
enter(i) {
b.push(i.name.value), b.length === d.length && b.every((i, a) => i === d[a]) && i.arguments && (x = i.arguments.some((i) => i.name.value === o));
},
leave() {
b.pop();
}
} }), x;
}
function extractOfType(i) {
return i instanceof GraphQLNonNull || i instanceof GraphQLNonNull || i instanceof GraphQLList ? extractOfType(i.ofType) : i instanceof GraphQLObjectType || i instanceof GraphQLScalarType ? i : null;
}
function findFieldInSchema(i, a) {
let [o, ...s] = i.split("."), c;
if (o === "query" ? c = a.getQueryType() : o === "mutation" ? c = a.getMutationType() : o === "subscription" && (c = a.getSubscriptionType()), c) {
for (let i = 0; i < s.length; ++i) {
if (!c) return;
if (c instanceof GraphQLObjectType) {
let a = c.getFields()[s[i]];
if (!a) return;
if (i === s.length - 1) return a;
c = extractOfType(a.type);
}
}
return null;
}
}
function addArgToField(i, a, o, s, c) {
i = healQuery(i);
let [d, ...f] = a.split("."), g;
try {
g = parse(i);
} catch {}
g ||= {
kind: Kind.DOCUMENT,
definitions: [{
kind: Kind.OPERATION_DEFINITION,
operation: d,
name: {
kind: Kind.NAME,
value: "NewOperation"
},
selectionSet: {
kind: Kind.SELECTION_SET,
selections: []
}
}]
};
let b = g.definitions.find((i) => i.kind === Kind.OPERATION_DEFINITION && i.operation === d ? c ? i.name?.value === c : !0 : !1);
b || (b = {
kind: Kind.OPERATION_DEFINITION,
operation: d,
name: {
kind: Kind.NAME,
value: "NewOperation"
},
selectionSet: {
kind: Kind.SELECTION_SET,
selections: []
}
}, g.definitions.push(b)), i = print(g), isPathInQuery(i, a, c) || (g = parse(addPathToQuery(i, a, c)), b = g.definitions.find((i) => i.kind === Kind.OPERATION_DEFINITION && i.operation === d ? c ? i.name?.value === c : !0 : !1));
let x = [];
return visit(b, {
Field: {
enter(i) {
if (x.push(i.name.value), x.length === f.length - 1 && x.every((i, a) => i === f[a])) {
let a = f[x.length];
if (i.selectionSet) {
let c = findFieldInSchema([
d,
...x,
a
].join("."), s);
if (c?.args) {
let s = c.args.find((i) => i.name === o);
if (s) {
b.variableDefinitions ||= [];
let c = s.name, d = 2;
for (; b.variableDefinitions.find((i) => i.variable.name.value === c);) c = s.name + d, ++d;
b.variableDefinitions.push({
kind: Kind.VARIABLE_DEFINITION,
variable: {
kind: Kind.VARIABLE,
name: {
kind: Kind.NAME,
value: c
}
},
type: {
kind: Kind.NAMED_TYPE,
name: {
kind: Kind.NAME,
value: s.type.toString()
}
}
});
let f = i.selectionSet.selections.find((i) => i.kind === Kind.FIELD && i.name.value === a);
f && (f.arguments ||= [], f.arguments.push({
kind: Kind.ARGUMENT,
name: {
kind: Kind.NAME,
value: o
},
value: {
kind: Kind.VARIABLE,
name: {
kind: Kind.NAME,
value: c
}
}
}));
}
}
}
}
},
leave() {
x.pop();
}
},
OperationDefinition: { enter(i) {
if (f.length === 1) {
let a = f[0];
if (i.selectionSet) {
let c = findFieldInSchema([
d,
...x,
a
].join("."), s);
if (c?.args) {
let s = c.args.find((i) => i.name === o);
if (s) {
i.variableDefinitions ||= [];
let c = s.name, d = 2;
for (; i.variableDefinitions.find((i) => i.variable.name.value === c);) c = s.name + d, ++d;
i.variableDefinitions.push({
kind: Kind.VARIABLE_DEFINITION,
variable: {
kind: Kind.VARIABLE,
name: {
kind: Kind.NAME,
value: c
}
},
type: {
kind: Kind.NAMED_TYPE,
name: {
kind: Kind.NAME,
value: s.type.toString()
}
}
});
let f = i.selectionSet.selections.find((i) => i.kind === Kind.FIELD && i.name.value === a);
f && (f.arguments ||= [], f.arguments.push({
kind: Kind.ARGUMENT,
name: {
kind: Kind.NAME,
value: o
},
value: {
kind: Kind.VARIABLE,
name: {
kind: Kind.NAME,
value: c
}
}
}));
}
}
}
}
} }
}), print(g);
}
function removeArgFromField(i, a, o, s) {
i = healQuery(i);
let [c, ...d] = a.split("."), f;
try {
f = parse(i);
} catch {}
if (!f) return i;
let g = f.definitions.find((i) => i.kind === Kind.OPERATION_DEFINITION && i.operation === c ? s ? i.name?.value === s : !0 : !1);
if (!g) return i;
let b = [];
return visit(g, {
Field: {
enter(i) {
if (b.push(i.name.value), b.length === d.length - 1 && b.every((i, a) => i === d[a])) {
let a = d[b.length];
if (i.selectionSet) {
let s = i.selectionSet.selections.find((i) => i.kind === Kind.FIELD && i.name.value === a);
s?.arguments && (s.arguments = s.arguments.filter((i) => i.kind !== Kind.ARGUMENT || i.name.value !== o));
}
}
},
leave() {
b.pop();
}
},
OperationDefinition: { enter(i) {
if (d.length === 1) {
let a = d[0];
if (i.selectionSet) {
let s = i.selectionSet.selections.find((i) => i.kind === Kind.FIELD && i.name.value === a);
s?.arguments && (s.arguments = s.arguments.filter((i) => i.kind !== Kind.ARGUMENT || i.name.value !== o));
}
}
} }
}), print(f);
}
function extractPaths(i) {
try {
let a = parse(i), o = [[a.definitions[0].kind === Kind.OPERATION_DEFINITION ? a.definitions[0].operation : "query"]], s = (i, a = []) => {
for (let c of i) if (c.kind === "Field") {
let i = [...a, c.name.value];
o.push(i), c.selectionSet && s(c.selectionSet.selections, i);
}
};
for (let i of a.definitions) i.kind === "OperationDefinition" && i.selectionSet && s(i.selectionSet.selections, o[0]);
return o;
} catch {
return [];
}
}
function getOpenPaths(i) {
return extractPaths(i).map((i) => i.join("."));
}
function mergeOpenPaths(i, a, o) {
let s = new Set(i);
for (let i of a) o.includes(i) || s.delete(i);
for (let i of o) s.add(i);
return s.size === i.length && i.every((i) => s.has(i)) ? i : [...s];
}
function unwrapNamedType(i) {
return i instanceof GraphQLNonNull || i instanceof GraphQLList ? unwrapNamedType(i.ofType) : i;
}
function isSearchableFieldType(i) {
return i instanceof GraphQLObjectType || i instanceof GraphQLInterfaceType;
}
function matchSearchAgainstPath(i, a, o) {
if (o.length > 1) {
let a = i.length - o.length;
if (a < 0) return !1;
for (let s = 0; s <= a; ++s) {
let a = !0;
for (let c = 0; c < o.length; ++c) if (!i[s + c].includes(o[c])) {
a = !1;
break;
}
if (a) return !0;
}
return !1;
}
for (let o of i) if (o.includes(a)) return !0;
return !1;
}
function searchSchemaPaths(i, a, o) {
let s = a.trim().toLowerCase();
if (!s) return {
matchedPaths: [],
visiblePaths: /* @__PURE__ */ new Set(),
forcedOpenPaths: /* @__PURE__ */ new Set(),
hasMore: !1,
nodesVisited: 0
};
let c = o?.maxDepth ?? 8, d = o?.maxMatches ?? 500, f = o?.maxNodes ?? 4e4, g = s.split(".").filter(Boolean), b = [], x = /* @__PURE__ */ new Set(), S = /* @__PURE__ */ new Set(), C = [], w = 0, E = [
[OperationTypeNode.QUERY, i.getQueryType() ?? null],
[OperationTypeNode.MUTATION, i.getMutationType() ?? null],
[OperationTypeNode.SUBSCRIPTION, i.getSubscriptionType() ?? null]
], O = o?.operationTypes && o.operationTypes.length > 0 ? E.filter(([i]) => o.operationTypes.includes(i)) : E;
for (let [i, a] of O) if (a) for (let o of Object.values(a.getFields())) C.push({
operation: i,
field: o,
pathSegments: [o.name],
typeTrail: [a.name],
depth: 1
});
let A = 0, M = !1;
for (; w < C.length;) {
if (A >= f || b.length >= d) {
M = !0;
break;
}
let i = C[w++];
++A;
let a = `${i.operation}.${i.pathSegments.join(".")}`, o = i.pathSegments.map((i) => i.toLowerCase());
if (matchSearchAgainstPath(o, s, g)) {
b.push(a), x.add(a);
let i = a.indexOf(".");
for (; i !== -1;) {
let o = a.slice(0, i);
x.add(o), S.add(o), i = a.indexOf(".", i + 1);
}
}
if (i.depth >= c) continue;
let E = unwrapNamedType(i.field.type);
if (!isSearchableFieldType(E) || i.typeTrail.includes(E.name)) continue;
let O = [...i.typeTrail, E.name];
for (let a of Object.values(E.getFields())) C.push({
operation: i.operation,
field: a,
pathSegments: [...i.pathSegments, a.name],
typeTrail: O,
depth: i.depth + 1
});
}
return {
matchedPaths: b,
visiblePaths: x,
forcedOpenPaths: S,
hasMore: M,
nodesVisited: A
};
}
function handleTemplate(i, a) {
return i.replace(/\{\{(.*?)\}\}/g, (i, o) => (0, import_lodash$4.get)(a, o) ?? i);
}
function getFieldByPath(i, a) {
let [o, ...s] = i.split("."), c;
if (o === "query" ? c = a.getQueryType() : o === "mutation" ? c = a.getMutationType() : o === "subscription" && (c = a.getSubscriptionType()), !c) return null;
let d;
for (let i of s) if (c instanceof GraphQLObjectType) {
if (d = c.getFields()[i], !d) return null;
c = d.type;
}
return d;
}
function r$1(i) {
var a, o, s = "";
if (typeof i == "string" || typeof i == "number") s += i;
else if (typeof i == "object") if (Array.isArray(i)) {
var c = i.length;
for (a = 0; a < c; a++) i[a] && (o = r$1(i[a])) && (s && (s += " "), s += o);
} else for (o in i) i[o] && (s && (s += " "), s += o);
return s;
}
function clsx() {
for (var i, a, o = 0, s = "", c = arguments.length; o < c; o++) (i = arguments[o]) && (a = r$1(i)) && (s && (s += " "), s += a);
return s;
}
var concatArrays = (i, a) => {
let o = Array(i.length + a.length);
for (let a = 0; a < i.length; a++) o[a] = i[a];
for (let s = 0; s < a.length; s++) o[i.length + s] = a[s];
return o;
}, createClassValidatorObject = (i, a) => ({
classGroupId: i,
validator: a
}), createClassPartObject = (i = /* @__PURE__ */ new Map(), a = null, o) => ({
nextPart: i,
validators: a,
classGroupId: o
}), CLASS_PART_SEPARATOR = "-", EMPTY_CONFLICTS = [], ARBITRARY_PROPERTY_PREFIX = "arbitrary..", createClassGroupUtils = (i) => {
let a = createClassMap(i), { conflictingClassGroups: o, conflictingClassGroupModifiers: s } = i;
return {
getClassGroupId: (i) => {
if (i.startsWith("[") && i.endsWith("]")) return getGroupIdForArbitraryProperty(i);
let o = i.split(CLASS_PART_SEPARATOR), s = o[0] === "" && o.length > 1 ? 1 : 0;
return getGroupRecursive(o, s, a);
},
getConflictingClassGroupIds: (i, a) => {
if (a) {
let a = s[i], c = o[i];
return a ? c ? concatArrays(c, a) : a : c || EMPTY_CONFLICTS;
}
return o[i] || EMPTY_CONFLICTS;
}
};
}, getGroupRecursive = (i, a, o) => {
if (i.length - a === 0) return o.classGroupId;
let s = i[a], c = o.nextPart.get(s);
if (c) {
let o = getGroupRecursive(i, a + 1, c);
if (o) return o;
}
let d = o.validators;
if (d === null) return;
let f = a === 0 ? i.join(CLASS_PART_SEPARATOR) : i.slice(a).join(CLASS_PART_SEPARATOR), g = d.length;
for (let i = 0; i < g; i++) {
let a = d[i];
if (a.validator(f)) return a.classGroupId;
}
}, getGroupIdForArbitraryProperty = (i) => i.slice(1, -1).indexOf(":") === -1 ? void 0 : (() => {
let a = i.slice(1, -1), o = a.indexOf(":"), s = a.slice(0, o);
return s ? ARBITRARY_PROPERTY_PREFIX + s : void 0;
})(), createClassMap = (i) => {
let { theme: a, classGroups: o } = i;
return processClassGroups(o, a);
}, processClassGroups = (i, a) => {
let o = createClassPartObject();
for (let s in i) {
let c = i[s];
processClassesRecursively(c, o, s, a);
}
return o;
}, processClassesRecursively = (i, a, o, s) => {
let c = i.length;
for (let d = 0; d < c; d++) {
let c = i[d];
processClassDefinition(c, a, o, s);
}
}, processClassDefinition = (i, a, o, s) => {
if (typeof i == "string") {
processStringDefinition(i, a, o);
return;
}
if (typeof i == "function") {
processFunctionDefinition(i, a, o, s);
return;
}
processObjectDefinition(i, a, o, s);
}, processStringDefinition = (i, a, o) => {
let s = i === "" ? a : getPart(a, i);
s.classGroupId = o;
}, processFunctionDefinition = (i, a, o, s) => {
if (isThemeGetter(i)) {
processClassesRecursively(i(s), a, o, s);
return;
}
a.validators === null && (a.validators = []), a.validators.push(createClassValidatorObject(o, i));
}, processObjectDefinition = (i, a, o, s) => {
let c = Object.entries(i), d = c.length;
for (let i = 0; i < d; i++) {
let [d, f] = c[i];
processClassesRecursively(f, getPart(a, d), o, s);
}
}, getPart = (i, a) => {
let o = i, s = a.split(CLASS_PART_SEPARATOR), c = s.length;
for (let i = 0; i < c; i++) {
let a = s[i], c = o.nextPart.get(a);
c || (c = createClassPartObject(), o.nextPart.set(a, c)), o = c;
}
return o;
}, isThemeGetter = (i) => "isThemeGetter" in i && i.isThemeGetter === !0, createLruCache = (i) => {
if (i < 1) return {
get: () => void 0,
set: () => {}
};
let a = 0, o = Object.create(null), s = Object.create(null), c = (c, d) => {
o[c] = d, a++, a > i && (a = 0, s = o, o = Object.create(null));
};
return {
get(i) {
let a = o[i];
if (a !== void 0) return a;
if ((a = s[i]) !== void 0) return c(i, a), a;
},
set(i, a) {
i in o ? o[i] = a : c(i, a);
}
};
}, IMPORTANT_MODIFIER = "!", MODIFIER_SEPARATOR = ":", EMPTY_MODIFIERS = [], createResultObject = (i, a, o, s, c) => ({
modifiers: i,
hasImportantModifier: a,
baseClassName: o,
maybePostfixModifierPosition: s,
isExternal: c
}), createParseClassName = (i) => {
let { prefix: a, experimentalParseClassName: o } = i, s = (i) => {
let a = [], o = 0, s = 0, c = 0, d, f = i.length;
for (let g = 0; g < f; g++) {
let f = i[g];
if (o === 0 && s === 0) {
if (f === MODIFIER_SEPARATOR) {
a.push(i.slice(c, g)), c = g + 1;
continue;
}
if (f === "/") {
d = g;
continue;
}
}
f === "[" ? o++ : f === "]" ? o-- : f === "(" ? s++ : f === ")" && s--;
}
let g = a.length === 0 ? i : i.slice(c), b = g, x = !1;
g.endsWith(IMPORTANT_MODIFIER) ? (b = g.slice(0, -1), x = !0) : g.startsWith(IMPORTANT_MODIFIER) && (b = g.slice(1), x = !0);
let S = d && d > c ? d - c : void 0;
return createResultObject(a, x, b, S);
};
if (a) {
let i = a + MODIFIER_SEPARATOR, o = s;
s = (a) => a.startsWith(i) ? o(a.slice(i.length)) : createResultObject(EMPTY_MODIFIERS, !1, a, void 0, !0);
}
if (o) {
let i = s;
s = (a) => o({
className: a,
parseClassName: i
});
}
return s;
}, createSortModifiers = (i) => {
let a = /* @__PURE__ */ new Map();
return i.orderSensitiveModifiers.forEach((i, o) => {
a.set(i, 1e6 + o);
}), (i) => {
let o = [], s = [];
for (let c = 0; c < i.length; c++) {
let d = i[c], f = d[0] === "[", g = a.has(d);
f || g ? (s.length > 0 && (s.sort(), o.push(...s), s = []), o.push(d)) : s.push(d);
}
return s.length > 0 && (s.sort(), o.push(...s)), o;
};
}, createConfigUtils = (i) => ({
cache: createLruCache(i.cacheSize),
parseClassName: createParseClassName(i),
sortModifiers: createSortModifiers(i),
...createClassGroupUtils(i)
}), SPLIT_CLASSES_REGEX = /\s+/, mergeClassList = (i, a) => {
let { parseClassName: o, getClassGroupId: s, getConflictingClassGroupIds: c, sortModifiers: d } = a, f = [], g = i.trim().split(SPLIT_CLASSES_REGEX), b = "";
for (let i = g.length - 1; i >= 0; --i) {
let a = g[i], { isExternal: x, modifiers: S, hasImportantModifier: C, baseClassName: w, maybePostfixModifierPosition: E } = o(a);
if (x) {
b = a + (b.length > 0 ? " " + b : b);
continue;
}
let O = !!E, A = s(O ? w.substring(0, E) : w);
if (!A) {
if (!O) {
b = a + (b.length > 0 ? " " + b : b);
continue;
}
if (A = s(w), !A) {
b = a + (b.length > 0 ? " " + b : b);
continue;
}
O = !1;
}
let M = S.length === 0 ? "" : S.length === 1 ? S[0] : d(S).join(":"), F = C ? M + IMPORTANT_MODIFIER : M, I = F + A;
if (f.indexOf(I) > -1) continue;
f.push(I);
let R = c(A, O);
for (let i = 0; i < R.length; ++i) {
let a = R[i];
f.push(F + a);
}
b = a + (b.length > 0 ? " " + b : b);
}
return b;
}, twJoin = (...i) => {
let a = 0, o, s, c = "";
for (; a < i.length;) (o = i[a++]) && (s = toValue(o)) && (c && (c += " "), c += s);
return c;
}, toValue = (i) => {
if (typeof i == "string") return i;
let a, o = "";
for (let s = 0; s < i.length; s++) i[s] && (a = toValue(i[s])) && (o && (o += " "), o += a);
return o;
}, createTailwindMerge = (i, ...a) => {
let o, s, c, d, f = (f) => {
let b = a.reduce((i, a) => a(i), i());
return o = createConfigUtils(b), s = o.cache.get, c = o.cache.set, d = g, g(f);
}, g = (i) => {
let a = s(i);
if (a) return a;
let d = mergeClassList(i, o);
return c(i, d), d;
};
return d = f, (...i) => d(twJoin(...i));
}, fallbackThemeArr = [], fromTheme = (i) => {
let a = (a) => a[i] || fallbackThemeArr;
return a.isThemeGetter = !0, a;
}, 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 = (i) => fractionRegex.test(i), isNumber = (i) => !!i && !Number.isNaN(Number(i)), isInteger = (i) => !!i && Number.isInteger(Number(i)), isPercent = (i) => i.endsWith("%") && isNumber(i.slice(0, -1)), isTshirtSize = (i) => tshirtUnitRegex.test(i), isAny = () => !0, isLengthOnly = (i) => lengthUnitRegex.test(i) && !colorFunctionRegex.test(i), isNever = () => !1, isShadow = (i) => shadowRegex.test(i), isImage = (i) => imageRegex.test(i), isAnyNonArbitrary = (i) => !isArbitraryValue(i) && !isArbitraryVariable(i), isArbitrarySize = (i) => getIsArbitraryValue(i, isLabelSize, isNever), isArbitraryValue = (i) => arbitraryValueRegex.test(i), isArbitraryLength = (i) => getIsArbitraryValue(i, isLabelLength, isLengthOnly), isArbitraryNumber = (i) => getIsArbitraryValue(i, isLabelNumber, isNumber), isArbitraryPosition = (i) => getIsArbitraryValue(i, isLabelPosition, isNever), isArbitraryImage = (i) => getIsArbitraryValue(i, isLabelImage, isImage), isArbitraryShadow = (i) => getIsArbitraryValue(i, isLabelShadow, isShadow), isArbitraryVariable = (i) => arbitraryVariableRegex.test(i), isArbitraryVariableLength = (i) => getIsArbitraryVariable(i, isLabelLength), isArbitraryVariableFamilyName = (i) => getIsArbitraryVariable(i, isLabelFamilyName), isArbitraryVariablePosition = (i) => getIsArbitraryVariable(i, isLabelPosition), isArbitraryVariableSize = (i) => getIsArbitraryVariable(i, isLabelSize), isArbitraryVariableImage = (i) => getIsArbitraryVariable(i, isLabelImage), isArbitraryVariableShadow = (i) => getIsArbitraryVariable(i, isLabelShadow, !0), getIsArbitraryValue = (i, a, o) => {
let s = arbitraryValueRegex.exec(i);
return s ? s[1] ? a(s[1]) : o(s[2]) : !1;
}, getIsArbitraryVariable = (i, a, o = !1) => {
let s = arbitraryVariableRegex.exec(i);
return s ? s[1] ? a(s[1]) : o : !1;
}, isLabelPosition = (i) => i === "position" || i === "percentage", isLabelImage = (i) => i === "image" || i === "url", isLabelSize = (i) => i === "length" || i === "size" || i === "bg-size", isLabelLength = (i) => i === "length", isLabelNumber = (i) => i === "number", isLabelFamilyName = (i) => i === "family-name", isLabelShadow = (i) => i === "shadow", twMerge = /* @__PURE__ */ createTailwindMerge(() => {
let i = fromTheme("color"), a = fromTheme("font"), o = fromTheme("text"), s = fromTheme("font-weight"), c = fromTheme("tracking"), d = fromTheme("leading"), f = fromTheme("breakpoint"), g = fromTheme("container"), b = fromTheme("spacing"), x = fromTheme("radius"), S = fromTheme("shadow"), C = fromTheme("inset-shadow"), w = fromTheme("text-shadow"), E = fromTheme("drop-shadow"), O = fromTheme("blur"), A = fromTheme("perspective"), M = fromTheme("aspect"), F = fromTheme("ease"), I = fromTheme("animate"), R = () => [
"auto",
"avoid",
"all",
"avoid-page",
"page",
"left",
"right",
"column"
], V = () => [
"center",
"top",
"bottom",
"left",
"right",
"top-left",
"left-top",
"top-right",
"right-top",
"bottom-right",
"right-bottom",
"bottom-left",
"left-bottom"
], rP = () => [
...V(),
isArbitraryVariable,
isArbitraryValue
], iP = () => [
"auto",
"hidden",
"clip",
"visible",
"scroll"
], q = () => [
"auto",
"contain",
"none"
], aP = () => [
isArbitraryVariable,
isArbitraryValue,
b
], oP = () => [
isFraction,
"full",
"auto",
...aP()
], sP = () => [
isInteger,
"none",
"subgrid",
isArbitraryVariable,
isArbitraryValue
], cP = () => [
"auto",
{ span: [
"full",
isInteger,
isArbitraryVariable,
isArbitraryValue
] },
isInteger,
isArbitraryVariable,
isArbitraryValue
], lP = () => [
isInteger,
"auto",
isArbitraryVariable,
isArbitraryValue
], uP = () => [
"auto",
"min",
"max",
"fr",
isArbitraryVariable,
isArbitraryValue
], dP = () => [
"start",
"end",
"center",
"between",
"around",
"evenly",
"stretch",
"baseline",
"center-safe",
"end-safe"
], fP = () => [
"start",
"end",
"center",
"stretch",
"center-safe",
"end-safe"
], pP = () => ["auto", ...aP()], mP = () => [
isFraction,
"auto",
"full",
"dvw",
"dvh",
"lvw",
"lvh",
"svw",
"svh",
"min",
"max",
"fit",
...aP()
], hP = () => [
i,
isArbitraryVariable,
isArbitraryValue
], gP = () => [
...V(),
isArbitraryVariablePosition,
isArbitraryPosition,
{ position: [isArbitraryVariable, isArbitraryValue] }
], _P = () => ["no-repeat", { repeat: [
"",
"x",
"y",
"space",
"round"
] }], vP = () => [
"auto",
"cover",
"contain",
isArbitraryVariableSize,
isArbitrarySize,
{ size: [isArbitraryVariable, isArbitraryValue] }
], yP = () => [
isPercent,
isArbitraryVariableLength,
isArbitraryLength
], bP = () => [
"",
"none",
"full",
x,
isArbitraryVariable,
isArbitraryValue
], xP = () => [
"",
isNumber,
isArbitraryVariableLength,
isArbitraryLength
], SP = () => [
"solid",
"dashed",
"dotted",
"double"
], CP = () => [
"normal",
"multiply",
"screen",
"overlay",
"darken",
"lighten",
"color-dodge",
"color-burn",
"hard-light",
"soft-light",
"difference",
"exclusion",
"hue",
"saturation",
"color",
"luminosity"
], wP = () => [
isNumber,
isPercent,
isArbitraryVariablePosition,
isArbitraryPosition
], TP = () => [
"",
"none",
O,
isArbitraryVariable,
isArbitraryValue
], EP = () => [
"none",
isNumber,
isArbitraryVariable,
isArbitraryValue
], DP = () => [
"none",
isNumber,
isArbitraryVariable,
isArbitraryValue
], OP = () => [
isNumber,
isArbitraryVariable,
isArbitraryValue
], kP = () => [
isFraction,
"full",
...aP()
];
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,
M
] }],
container: ["container"],
columns: [{ columns: [
isNumber,
isArbitraryValue,
isArbitraryVariable,
g
] }],
"break-after": [{ "break-after": R() }],
"break-before": [{ "break-before": R() }],
"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: rP() }],
overflow: [{ overflow: iP() }],
"overflow-x": [{ "overflow-x": iP() }],
"overflow-y": [{ "overflow-y": iP() }],
overscroll: [{ overscroll: q() }],
"overscroll-x": [{ "overscroll-x": q() }],
"overscroll-y": [{ "overscroll-y": q() }],
position: [
"static",
"fixed",
"absolute",
"relative",
"sticky"
],
inset: [{ inset: oP() }],
"inset-x": [{ "inset-x": oP() }],
"inset-y": [{ "inset-y": oP() }],
start: [{ start: oP() }],
end: [{ end: oP() }],
top: [{ top: oP() }],
right: [{ right: oP() }],
bottom: [{ bottom: oP() }],
left: [{ left: oP() }],
visibility: [
"visible",
"invisible",
"collapse"
],
z: [{ z: [
isInteger,
"auto",
isArbitraryVariable,
isArbitraryValue
] }],
basis: [{ basis: [
isFraction,
"full",
"auto",
g,
...aP()
] }],
"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": sP() }],
"col-start-end": [{ col: cP() }],
"col-start": [{ "col-start": lP() }],
"col-end": [{ "col-end": lP() }],
"grid-rows": [{ "grid-rows": sP() }],
"row-start-end": [{ row: cP() }],
"row-start": [{ "row-start": lP() }],
"row-end": [{ "row-end": lP() }],
"grid-flow": [{ "grid-flow": [
"row",
"col",
"dense",
"row-dense",
"col-dense"
] }],
"auto-cols": [{ "auto-cols": uP() }],
"auto-rows": [{ "auto-rows": uP() }],
gap: [{ gap: aP() }],
"gap-x": [{ "gap-x": aP() }],
"gap-y": [{ "gap-y": aP() }],
"justify-content": [{ justify: [...dP(), "normal"] }],
"justify-items": [{ "justify-items": [...fP(), "normal"] }],
"justify-self": [{ "justify-self": ["auto", ...fP()] }],
"align-content": [{ content: ["normal", ...dP()] }],
"align-items": [{ items: [...fP(), { baseline: ["", "last"] }] }],
"align-self": [{ self: [
"auto",
...fP(),
{ baseline: ["", "last"] }
] }],
"place-content": [{ "place-content": dP() }],
"place-items": [{ "place-items": [...fP(), "baseline"] }],
"place-self": [{ "place-self": ["auto", ...fP()] }],
p: [{ p: aP() }],
px: [{ px: aP() }],
py: [{ py: aP() }],
ps: [{ ps: aP() }],
pe: [{ pe: aP() }],
pt: [{ pt: aP() }],
pr: [{ pr: aP() }],
pb: [{ pb: aP() }],
pl: [{ pl: aP() }],
m: [{ m: pP() }],
mx: [{ mx: pP() }],
my: [{ my: pP() }],
ms: [{ ms: pP() }],
me: [{ me: pP() }],
mt: [{ mt: pP() }],
mr: [{ mr: pP() }],
mb: [{ mb: pP() }],
ml: [{ ml: pP() }],
"space-x": [{ "space-x": aP() }],
"space-x-reverse": ["space-x-reverse"],
"space-y": [{ "space-y": aP() }],
"space-y-reverse": ["space-y-reverse"],
size: [{ size: mP() }],
w: [{ w: [
g,
"screen",
...mP()
] }],
"min-w": [{ "min-w": [
g,
"screen",
"none",
...mP()
] }],
"max-w": [{ "max-w": [
g,
"screen",
"none",
"prose",
{ screen: [f] },
...mP()
] }],
h: [{ h: [
"screen",
"lh",
...mP()
] }],
"min-h": [{ "min-h": [
"screen",
"lh",
"none",
...mP()
] }],
"max-h": [{ "max-h": [
"screen",
"lh",
...mP()
] }],
"font-size": [{ text: [
"base",
o,
isArbitraryVariableLength,
isArbitraryLength
] }],
"font-smoothing": ["antialiased", "subpixel-antialiased"],
"font-style": ["italic", "not-italic"],
"font-weight": [{ font: [
s,
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,
a
] }],
"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: [
c,
isArbitraryVariable,
isArbitraryValue
] }],
"line-clamp": [{ "line-clamp": [
isNumber,
"none",
isArbitraryVariable,
isArbitraryNumber
] }],
leading: [{ leading: [d, ...aP()] }],
"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: hP() }],
"text-color": [{ text: hP() }],
"text-decoration": [
"underline",
"overline",
"line-through",
"no-underline"
],
"text-decoration-style": [{ decoration: [...SP(), "wavy"] }],
"text-decoration-thickness": [{ decoration: [
isNumber,
"from-font",
"auto",
isArbitraryVariable,
isArbitraryLength
] }],
"text-decoration-color": [{ decoration: hP() }],
"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: aP() }],
"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: gP() }],
"bg-repeat": [{ bg: _P() }],
"bg-size": [{ bg: vP() }],
"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: hP() }],
"gradient-from-pos": [{ from: yP() }],
"gradient-via-pos": [{ via: yP() }],
"gradient-to-pos": [{ to: yP() }],
"gradient-from": [{ from: hP() }],
"gradient-via": [{ via: hP() }],
"gradient-to": [{ to: hP() }],
rounded: [{ rounded: bP() }],
"rounded-s": [{ "rounded-s": bP() }],
"rounded-e": [{ "rounded-e": bP() }],
"rounded-t": [{ "rounded-t": bP() }],
"rounded-r": [{ "rounded-r": bP() }],
"rounded-b": [{ "rounded-b": bP() }],
"rounded-l": [{ "rounded-l": bP() }],
"rounded-ss": [{ "rounded-ss": bP() }],
"rounded-se": [{ "rounded-se": bP() }],
"rounded-ee": [{ "rounded-ee": bP() }],
"rounded-es": [{ "rounded-es": bP() }],
"rounded-tl": [{ "rounded-tl": bP() }],
"rounded-tr": [{ "rounded-tr": bP() }],
"rounded-br": [{ "rounded-br": bP() }],
"rounded-bl": [{ "rounded-bl": bP() }],
"border-w": [{ border: xP() }],
"border-w-x": [{ "border-x": xP() }],
"border-w-y": [{ "border-y": xP() }],
"border-w-s": [{ "border-s": xP() }],
"border-w-e": [{ "border-e": xP() }],
"border-w-t": [{ "border-t": xP() }],
"border-w-r": [{ "border-r": xP() }],
"border-w-b": [{ "border-b": xP() }],
"border-w-l": [{ "border-l": xP() }],
"divide-x": [{ "divide-x": xP() }],
"divide-x-reverse": ["divide-x-reverse"],
"divide-y": [{ "divide-y": xP() }],
"divide-y-reverse": ["divide-y-reverse"],
"border-style": [{ border: [
...SP(),
"hidden",
"none"
] }],
"divide-style": [{ divide: [
...SP(),
"hidden",
"none"
] }],
"border-color": [{ border: hP() }],
"border-color-x": [{ "border-x": hP() }],
"border-color-y": [{ "border-y": hP() }],
"border-color-s": [{ "border-s": hP() }],
"border-color-e": [{ "border-e": hP() }],
"border-color-t": [{ "border-t": hP() }],
"border-color-r": [{ "border-r": hP() }],
"border-color-b": [{ "border-b": hP() }],
"border-color-l": [{ "border-l": hP() }],
"divide-color": [{ divide: hP() }],
"outline-style": [{ outline: [
...SP(),
"none",
"hidden"
] }],
"outline-offset": [{ "outline-offset": [
isNumber,
isArbitraryVariable,
isArbitraryValue
] }],
"outline-w": [{ outline: [
"",
isNumber,
isArbitraryVariableLength,
isArbitraryLength
] }],
"outline-color": [{ outline: hP() }],
shadow: [{ shadow: [
"",
"none",
S,
isArbitraryVariableShadow,
isArbitraryShadow
] }],
"shadow-color": [{ shadow: hP() }],
"inset-shadow": [{ "inset-shadow": [
"none",
C,
isArbitraryVariableShadow,
isArbitraryShadow
] }],
"inset-shadow-color": [{ "inset-shadow": hP() }],
"ring-w": [{ ring: xP() }],
"ring-w-inset": ["ring-inset"],
"ring-color": [{ ring: hP() }],
"ring-offset-w": [{ "ring-offset": [isNumber, isArbitraryLength] }],
"ring-offset-color": [{ "ring-offset": hP() }],
"inset-ring-w": [{ "inset-ring": xP() }],
"inset-ring-color": [{ "inset-ring": hP() }],
"text-shadow": [{ "text-shadow": [
"none",
w,
isArbitraryVariableShadow,
isArbitraryShadow
] }],
"text-shadow-color": [{ "text-shadow": hP() }],
opacity: [{ opacity: [
isNumber,
isArbitraryVariable,
isArbitraryValue
] }],
"mix-blend": [{ "mix-blend": [
...CP(),
"plus-darker",
"plus-lighter"
] }],
"bg-blend": [{ "bg-blend": CP() }],
"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": wP() }],
"mask-image-linear-to-pos": [{ "mask-linear-to": wP() }],
"mask-image-linear-from-color": [{ "mask-linear-from": hP() }],
"mask-image-linear-to-color": [{ "mask-linear-to": hP() }],
"mask-image-t-from-pos": [{ "mask-t-from": wP() }],
"mask-image-t-to-pos": [{ "mask-t-to": wP() }],
"mask-image-t-from-color": [{ "mask-t-from": hP() }],
"mask-image-t-to-color": [{ "mask-t-to": hP() }],
"mask-image-r-from-pos": [{ "mask-r-from": wP() }],
"mask-image-r-to-pos": [{ "mask-r-to": wP() }],
"mask-image-r-from-color": [{ "mask-r-from": hP() }],
"mask-image-r-to-color": [{ "mask-r-to": hP() }],
"mask-image-b-from-pos": [{ "mask-b-from": wP() }],
"mask-image-b-to-pos": [{ "mask-b-to": wP() }],
"mask-image-b-from-color": [{ "mask-b-from": hP() }],
"mask-image-b-to-color": [{ "mask-b-to": hP() }],
"mask-image-l-from-pos": [{ "mask-l-from": wP() }],
"mask-image-l-to-pos": [{ "mask-l-to": wP() }],
"mask-image-l-from-color": [{ "mask-l-from": hP() }],
"mask-image-l-to-color": [{ "mask-l-to": hP() }],
"mask-image-x-from-pos": [{ "mask-x-from": wP() }],
"mask-image-x-to-pos": [{ "mask-x-to": wP() }],
"mask-image-x-from-color": [{ "mask-x-from": hP() }],
"mask-image-x-to-color": [{ "mask-x-to": hP() }],
"mask-image-y-from-pos": [{ "mask-y-from": wP() }],
"mask-image-y-to-pos": [{ "mask-y-to": wP() }],
"mask-image-y-from-color": [{ "mask-y-from": hP() }],
"mask-image-y-to-color": [{ "mask-y-to": hP() }],
"mask-image-radial": [{ "mask-radial": [isArbitraryVariable, isArbitraryValue] }],
"mask-image-radial-from-pos": [{ "mask-radial-from": wP() }],
"mask-image-radial-to-pos": [{ "mask-radial-to": wP() }],
"mask-image-radial-from-color": [{ "mask-radial-from": hP() }],
"mask-image-radial-to-color": [{ "mask-radial-to": hP() }],
"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": V() }],
"mask-image-conic-pos": [{ "mask-conic": [isNumber] }],
"mask-image-conic-from-pos": [{ "mask-conic-from": wP() }],
"mask-image-conic-to-pos": [{ "mask-conic-to": wP() }],
"mask-image-conic-from-color": [{ "mask-conic-from": hP() }],
"mask-image-conic-to-color": [{ "mask-conic-to": hP() }],
"mask-mode": [{ mask: [
"alpha",
"luminance",
"match"
] }],
"mask-origin": [{ "mask-origin": [
"border",
"padding",
"content",
"fill",
"stroke",
"view"
] }],
"mask-position": [{ mask: gP() }],
"mask-repeat": [{ mask: _P() }],
"mask-size": [{ mask: vP() }],
"mask-type": [{ "mask-type": ["alpha", "luminance"] }],
"mask-image": [{ mask: [
"none",
isArbitraryVariable,
isArbitraryValue
] }],
filter: [{ filter: [
"",
"none",
isArbitraryVariable,
isArbitraryValue
] }],
blur: [{ blur: TP() }],
brightness: [{ brightness: [
isNumber,
isArbitraryVariable,
isArbitraryValue
] }],
contrast: [{ contrast: [
isNumber,
isArbitraryVariable,
isArbitraryValue
] }],
"drop-shadow": [{ "drop-shadow": [
"",
"none",
E,
isArbitraryVariableShadow,
isArbitraryShadow
] }],
"drop-shadow-color": [{ "drop-shadow": hP() }],
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": TP() }],
"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": aP() }],
"border-spacing-x": [{ "border-spacing-x": aP() }],
"border-spacing-y": [{ "border-spacing-y": aP() }],
"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",
F,
isArbitraryVariable,
isArbitraryValue
] }],
delay: [{ delay: [
isNumber,
isArbitraryVariable,
isArbitraryValue
] }],
animate: [{ animate: [
"none",
I,
isArbitraryVariable,
isArbitraryValue
] }],
backface: [{ backface: ["hidden", "visible"] }],
perspective: [{ perspective: [
A,
isArbitraryVariable,
isArbitraryValue
] }],
"perspective-origin": [{ "perspective-origin": rP() }],
rotate: [{ rotate: EP() }],
"rotate-x": [{ "rotate-x": EP() }],
"rotate-y": [{ "rotate-y": EP() }],
"rotate-z": [{ "rotate-z": EP() }],
scale: [{ scale: DP() }],
"scale-x": [{ "scale-x": DP() }],
"scale-y": [{ "scale-y": DP() }],
"scale-z": [{ "scale-z": DP() }],
"scale-3d": ["scale-3d"],
skew: [{ skew: OP() }],
"skew-x": [{ "skew-x": OP() }],
"skew-y": [{ "skew-y": OP() }],
transform: [{ transform: [
isArbitraryVariable,
isArbitraryValue,
"",
"none",
"gpu",
"cpu"
] }],
"transform-origin": [{ origin: rP() }],
"transform-style": [{ transform: ["3d", "flat"] }],
translate: [{ translate: kP() }],
"translate-x": [{ "translate-x": kP() }],
"translate-y": [{ "translate-y": kP() }],
"translate-z": [{ "translate-z": kP() }],
"translate-none": ["translate-none"],
accent: [{ accent: hP() }],
appearance: [{ appearance: ["none", "auto"] }],
"caret-color": [{ caret: hP() }],
"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": aP() }],
"scroll-mx": [{ "scroll-mx": aP() }],
"scroll-my": [{ "scroll-my": aP() }],
"scroll-ms": [{ "scroll-ms": aP() }],
"scroll-me": [{ "scroll-me": aP() }],
"scroll-mt": [{ "scroll-mt": aP() }],
"scroll-mr": [{ "scroll-mr": aP() }],
"scroll-mb": [{ "scroll-mb": aP() }],
"scroll-ml": [{ "scroll-ml": aP() }],
"scroll-p": [{ "scroll-p": aP() }],
"scroll-px": [{ "scroll-px": aP() }],
"scroll-py": [{ "scroll-py": aP() }],
"scroll-ps": [{ "scroll-ps": aP() }],
"scroll-pe": [{ "scroll-pe": aP() }],
"scroll-pt": [{ "scroll-pt": aP() }],
"scroll-pr": [{ "scroll-pr": aP() }],
"scroll-pb": [{ "scroll-pb": aP() }],
"scroll-pl": [{ "scroll-pl": aP() }],
"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", ...hP()] }],
"stroke-w": [{ stroke: [
isNumber,
isArbitraryVariableLength,
isArbitraryLength,
isArbitraryNumber
] }],
stroke: [{ stroke: ["none", ...hP()] }],
"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(...i) {
return twMerge(clsx(i));
}
var BYTE_UNITS = [
"B",
"KB",
"MB",
"GB"
];
function formatBytes(i) {
if (!Number.isFinite(i) || i <= 0) return "0 B";
let a = Math.min(Math.floor(Math.log(i) / Math.log(1024)), BYTE_UNITS.length - 1), o = i / 1024 ** a;
return `${a === 0 ? o : Number(o.toFixed(1))} ${BYTE_UNITS[a]}`;
}
function splitIdentifier(i) {
return i.replace(/_/g, " ").replace(/([a-z0-9])([A-Z])/g, "$1 $2").trim().split(/\s+/).map((i) => i.toLowerCase());
}
async function asyncInterval(i, a, o) {
for (; !o?.aborted;) await i(), await new Promise((i) => {
let s = setTimeout(i, a);
o?.addEventListener("abort", () => {
clearTimeout(s), i();
}, { once: !0 });
});
}
function isAsyncIterable(i) {
return typeof Object(i)[Symbol.asyncIterator] == "function";
}
var URL_PATTERN = /https?:\/\/[^\s<>"'`]+/g;
function tokenizeUrls(i) {
let a = [], o = 0;
for (let s of i.matchAll(URL_PATTERN)) {
let c = s.index ?? 0, d = s[0], f = d.match(/[.,;:!?]+$/)?.[0] ?? "";
f && (d = d.slice(0, -f.length)), d.endsWith(")") && !d.includes("(") && (d = d.slice(0, -1), f = ")" + f), c > o && a.push({
type: "text",
value: i.slice(o, c)
}), a.push({
type: "url",
value: d
}), f && a.push({
type: "text",
value: f
}), o = c + s[0].length;
}
return o < i.length && a.push({
type: "text",
value: i.slice(o)
}), a;
}
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(i) {
return i?.then != null;
}
function isActualPromise(i) {
let a = i;
return a && a.then && a.catch && a.finally;
}
function handleMaybePromise(i, a, o, s) {
let c = fakePromise().then(i).then(a, o);
return s && (c = c.finally(s)), unfakePromise(c);
}
function fakePromise(i) {
return i && isActualPromise(i) ? i : isPromise(i) ? {
then: (a, o) => fakePromise(i.then(a, o)),
catch: (a) => fakePromise(i.then((i) => i, a)),
finally: (a) => fakePromise(a ? promiseLikeFinally(i, a) : i),
[Symbol.toStringTag]: "Promise"
} : {
then(a) {
if (a) try {
return fakePromise(a(i));
} catch (i) {
return fakeRejectPromise(i);
}
return this;
},
catch() {
return this;
},
finally(a) {
if (a) try {
return fakePromise(a()).then(() => i, () => i);
} catch (i) {
return fakeRejectPromise(i);
}
return this;
},
[Symbol.toStringTag]: "Promise",
__fakePromiseValue: i,
[kFakePromise]: "resolved"
};
}
function createDeferredPromise() {
if (Promise.withResolvers) return Promise.withResolvers();
let i, a;
return {
promise: new Promise(function(o, s) {
i = o, a = s;
}),
get resolve() {
return i;
},
get reject() {
return a;
}
};
}
function fakeRejectPromise(i) {
return {
then(a, o) {
if (o) try {
return fakePromise(o(i));
} catch (i) {
return fakeRejectPromise(i);
}
return this;
},
catch(a) {
if (a) try {
return fakePromise(a(i));
} catch (i) {
return fakeRejectPromise(i);
}
return this;
},
finally(i) {
if (i) try {
i();
} catch (i) {
return fakeRejectPromise(i);
}
return this;
},
__fakeRejectError: i,
[Symbol.toStringTag]: "Promise",
[kFakePromise]: "rejected"
};
}
function mapAsyncIterator(i, a, o, s) {
Symbol.asyncIterator in i && (i = i[Symbol.asyncIterator]());
let c, d, f;
if (s) {
let i;
f = (a) => (i ||= handleMaybePromise(s, () => a, () => a), i);
}
typeof i.return == "function" && (c = i.return, d = (a) => {
let o = () => {
throw a;
};
return c.call(i).then(o, o);
});
function g(i) {
return i.done ? f ? f(i) : i : handleMaybePromise(() => i.value, (i) => handleMaybePromise(() => a(i), iteratorResult, d));
}
let b;
if (o) {
let i, a = o;
b = (o) => (i ||= handleMaybePromise(() => o, (i) => handleMaybePromise(() => a(i), iteratorResult, d)), i);
}
return {
next() {
return i.next().then(g, b);
},
return() {
let a = c ? c.call(i).then(g, b) : fakePromise({
value: void 0,
done: !0
});
return f ? a.then(f) : a;
},
throw(a) {
return typeof i.throw == "function" ? i.throw(a).then(g, b) : d ? d(a) : fakeRejectPromise(a);
},
[Symbol.asyncIterator]() {
return this;
}
};
}
function iteratorResult(i) {
return {
value: i,
done: !1
};
}
function isFakePromise(i) {
return i?.[kFakePromise] === "resolved";
}
function isFakeRejectPromise(i) {
return i?.[kFakePromise] === "rejected";
}
function promiseLikeFinally(i, a) {
return "finally" in i ? i.finally(a) : i.then((i) => {
let o = a();
return isPromise(o) ? o.then(() => i) : i;
}, (i) => {
let o = a();
if (isPromise(o)) return o.then(() => {
throw i;
});
throw i;
});
}
function unfakePromise(i) {
if (isFakePromise(i)) return i.__fakePromiseValue;
if (isFakeRejectPromise(i)) throw i.__fakeRejectError;
return i;
}
const documentStringMap = /* @__PURE__ */ new WeakMap();
function getDocumentString(i, a) {
let o = documentStringMap.get(i);
return !o && a && (o = a(i), documentStringMap.set(i, o)), o;
}
function stripAndPrint(i) {
return stripIgnoredCharacters(print(i));
}
var defaultPrintFn = function(i) {
return getDocumentString(i, stripAndPrint);
};
function serializeExecutionRequest({ executionRequest: i, excludeQuery: a, printFn: o = defaultPrintFn }) {
return {
query: a ? void 0 : o(i.document),
variables: (i.variables && Object.keys(i.variables).length) > 0 ? i.variables : void 0,
operationName: i.operationName ? i.operationName : void 0,
extensions: i.extensions && Object.keys(i.extensions).length > 0 ? i.extensions : void 0
};
}
const asArray = (i) => Array.isArray(i) ? i : i ? [i] : [];
function isSome(i) {
return i != null;
}
var MAX_RECURSIVE_DEPTH = 3;
function inspect(i) {
return formatValue(i, []);
}
function formatValue(i, a) {
switch (typeof i) {
case "string": return JSON.stringify(i);
case "function": return i.name ? `[function ${i.name}]` : "[function]";
case "object": return formatObjectValue(i, a);
default: return String(i);
}
}
function formatError(i) {
return (i.name = "GraphQLError") ? i.toString() : `${i.name}: ${i.message};\n ${i.stack}`;
}
function formatObjectValue(i, a) {
if (i === null) return "null";
if (i instanceof Error) return i.name === "AggregateError" ? formatError(i) + "\n" + formatArray(i.errors, a) : formatError(i);
if (a.includes(i)) return "[Circular]";
let o = [...a, i];
if (isJSONable(i)) {
let a = i.toJSON();
if (a !== i) return typeof a == "string" ? a : formatValue(a, o);
} else if (Array.isArray(i)) return formatArray(i, o);
return formatObject(i, o);
}
function isJSONable(i) {
return typeof i.toJSON == "function";
}
function formatObject(i, a) {
let o = Object.entries(i);
return o.length === 0 ? "{}" : a.length > MAX_RECURSIVE_DEPTH ? "[" + getObjectTag(i) + "]" : "{ " + o.map(([i, o]) => i + ": " + formatValue(o, a)).join(", ") + " }";
}
function formatArray(i, a) {
if (i.length === 0) return "[]";
if (a.length > MAX_RECURSIVE_DEPTH) return "[Array]";
let o = i.length, s = [];
for (let c = 0; c < o; ++c) s.push(formatValue(i[c], a));
return "[" + s.join(", ") + "]";
}
function getObjectTag(i) {
let a = Object.prototype.toString.call(i).replace(/^\[object /, "").replace(/]$/, "");
if (a === "Object" && typeof i.constructor == "function") {
let a = i.constructor.name;
if (typeof a == "string" && a !== "") return a;
}
return a;
}
var possibleGraphQLErrorProperties$1 = [
"message",
"locations",
"path",
"nodes",
"source",
"positions",
"originalError",
"name",
"stack",
"extensions",
"coordinate"
];
function isGraphQLErrorLike$1(i) {
return typeof i == "object" && !!i && Object.keys(i).every((i) => possibleGraphQLErrorProperties$1.includes(i));
}
function createGraphQLError$1(i, a) {
a?.originalError && !(a.originalError instanceof Error) && isGraphQLErrorLike$1(a.originalError) && (a.originalError = createGraphQLError$1(a.originalError.message, a.originalError));
let o = GraphQLError, s = versionInfo.major >= 16 ? new o(i, a) : new o(i, a?.nodes, a?.source, a?.positions, a?.path, a?.originalError, a?.extensions);
return a?.coordinate && s.coordinate == null && Object.defineProperties(s, { coordinate: {
value: a.coordinate,
enumerable: !0,
configurable: !0
} }), s;
}
function relocatedError$1(i, a, o) {
return createGraphQLError$1(i.message, {
nodes: i.nodes,
source: i.source,
positions: i.positions,
path: a ?? i.path,
originalError: i,
extensions: i.extensions,
coordinate: o ? `${o.parentType.name}.${o.fieldName}` : void 0
});
}
function isIterableObject$1(i) {
return typeof i == "object" && !!i && Symbol.iterator in i;
}
function isObjectLike$1(i) {
return typeof i == "object" && !!i;
}
function promiseReduce(i, a, o) {
let s = o;
for (let o of i) s = handleMaybePromise(() => s, (i) => a(i, o));
return s;
}
function hasOwnProperty$2(i, a) {
return Object.prototype.hasOwnProperty.call(i, a);
}
function getArgumentValues$1(i, a, o = {}) {
let s = {}, c = (a.arguments ?? []).reduce((i, a) => ({
...i,
[a.name.value]: a
}), {});
for (let { name: d, type: f, defaultValue: g } of i.args) {
let i = c[d];
if (!i) {
if (g !== void 0) s[d] = g;
else if (isNonNullType(f)) throw createGraphQLError$1(`Argument "${d}" of required type "${inspect(f)}" was not provided.`, { nodes: [a] });
continue;
}
let b = i.value, x = b.kind === Kind.NULL;
if (b.kind === Kind.VARIABLE) {
let i = b.name.value;
if (o == null || !hasOwnProperty$2(o, i)) {
if (g !== void 0) s[d] = g;
else if (isNonNullType(f)) throw createGraphQLError$1(`Argument "${d}" of required type "${inspect(f)}" was provided the variable "$${i}" which was not provided a runtime value.`, { nodes: [b] });
continue;
}
x = o[i] == null;
}
if (x && isNonNullType(f)) throw createGraphQLError$1(`Argument "${d}" of non-null type "${inspect(f)}" must not be null.`, { nodes: [b] });
let S = valueFromAST(b, f, o);
if (S === void 0) throw createGraphQLError$1(`Argument "${d}" has invalid value ${print(b)}.`, { nodes: [b] });
s[d] = S;
}
return s;
}
function memoize1$1(i) {
let a = /* @__PURE__ */ new WeakMap();
return function(o) {
let s = a.get(o);
if (s === void 0) {
let s = i(o);
return a.set(o, s), s;
}
return s;
};
}
function memoize2$1(i) {
let a = /* @__PURE__ */ new WeakMap();
return function(o, s) {
let c = a.get(o);
if (!c) {
c = /* @__PURE__ */ new WeakMap(), a.set(o, c);
let d = i(o, s);
return c.set(s, d), d;
}
let d = c.get(s);
if (d === void 0) {
let a = i(o, s);
return c.set(s, a), a;
}
return d;
};
}
function memoize3(i) {
let a = /* @__PURE__ */ new WeakMap();
return function(o, s, c) {
let d = a.get(o);
if (!d) {
d = /* @__PURE__ */ new WeakMap(), a.set(o, d);
let f = /* @__PURE__ */ new WeakMap();
d.set(s, f);
let g = i(o, s, c);
return f.set(c, g), g;
}
let f = d.get(s);
if (!f) {
f = /* @__PURE__ */ new WeakMap(), d.set(s, f);
let a = i(o, s, c);
return f.set(c, a), a;
}
let g = f.get(c);
if (g === void 0) {
let a = i(o, s, c);
return f.set(c, a), a;
}
return g;
};
}
function memoize2of4(i) {
let a = /* @__PURE__ */ new WeakMap();
return function(o, s, c, d) {
let f = a.get(o);
if (!f) {
f = /* @__PURE__ */ new WeakMap(), a.set(o, f);
let g = i(o, s, c, d);
return f.set(s, g), g;
}
let g = f.get(s);
if (g === void 0) {
let a = i(o, s, c, d);
return f.set(s, a), a;
}
return g;
};
}
function getDirectiveExtensions(i, a, o = ["directives"]) {
let s = {};
if (i.extensions) {
let a = i.extensions;
for (let i of o) a = a?.[i];
if (a != null) for (let i in a) {
let o = a[i], c = i;
if (Array.isArray(o)) for (let i of o) {
let a = s[c];
a || (a = [], s[c] = a), a.push(i);
}
else {
let i = s[c];
i || (i = [], s[c] = i), i.push(o);
}
}
}
let c = memoize1$1((i) => JSON.stringify(i)), d = [];
i.astNode && d.push(i.astNode), i.extensionASTNodes && d.push(...i.extensionASTNodes);
for (let i of d) if (i.directives?.length) for (let o of i.directives) {
let i = o.name.value, f = s[i];
f || (f = [], s[i] = f);
let g = a?.getDirective(i), b = {};
if (g && (b = getArgumentValues$1(g, o)), o.arguments) for (let i of o.arguments) {
let a = i.name.value;
if (b[a] == null) {
let o = g?.args.find((i) => i.name === a);
o && (b[a] = valueFromAST(i.value, o.type));
}
b[a] ?? (b[a] = valueFromASTUntyped(i.value));
}
if (d.length > 0 && f.length > 0) {
let i = c(b);
if (f.some((a) => c(a) === i)) continue;
}
f.push(b);
}
return s;
}
function getDirectivesInExtensions(i, a = ["directives"]) {
let o = getDirectiveExtensions(i, void 0, a);
return Object.entries(o).map(([i, a]) => a?.map((a) => ({
name: i,
args: a
}))).flat(Infinity).filter(Boolean);
}
function astFromType(i) {
if (isNonNullType(i)) {
let a = astFromType(i.ofType);
if (a.kind === Kind.NON_NULL_TYPE) throw Error(`Invalid type node ${inspect(i)}. Inner type of non-null type cannot be a non-null type.`);
return {
kind: Kind.NON_NULL_TYPE,
type: a
};
} else if (isListType(i)) return {
kind: Kind.LIST_TYPE,
type: astFromType(i.ofType)
};
return {
kind: Kind.NAMED_TYPE,
name: {
kind: Kind.NAME,
value: i.name
}
};
}
function astFromValueUntyped$1(i) {
if (i === null) return { kind: Kind.NULL };
if (i === void 0) return null;
if (Array.isArray(i)) {
let a = [];
for (let o of i) {
let i = astFromValueUntyped$1(o);
i != null && a.push(i);
}
return {
kind: Kind.LIST,
values: a
};
}
if (typeof i == "object") {
if (i?.toJSON) return astFromValueUntyped$1(i.toJSON());
let a = [];
for (let o in i) {
let s = i[o], c = astFromValueUntyped$1(s);
c && a.push({
kind: Kind.OBJECT_FIELD,
name: {
kind: Kind.NAME,
value: o
},
value: c
});
}
return {
kind: Kind.OBJECT,
fields: a
};
}
if (typeof i == "boolean") return {
kind: Kind.BOOLEAN,
value: i
};
if (typeof i == "bigint") return {
kind: Kind.INT,
value: String(i)
};
if (typeof i == "number" && isFinite(i)) {
let a = String(i);
return integerStringRegExp$1.test(a) ? {
kind: Kind.INT,
value: a
} : {
kind: Kind.FLOAT,
value: a
};
}
if (typeof i == "string") return {
kind: Kind.STRING,
value: i
};
throw TypeError(`Cannot convert value to AST: ${i}.`);
}
var integerStringRegExp$1 = /^-?(?:0|[1-9][0-9]*)$/;
function astFromValue$1(i, a) {
if (isNonNullType(a)) {
let o = astFromValue$1(i, a.ofType);
return o?.kind === Kind.NULL ? null : o;
}
if (i === null) return { kind: Kind.NULL };
if (i === void 0) return null;
if (isListType(a)) {
let o = a.ofType;
if (isIterableObject$1(i)) {
let a = [];
for (let s of i) {
let i = astFromValue$1(s, o);
i != null && a.push(i);
}
return {
kind: Kind.LIST,
values: a
};
}
return astFromValue$1(i, o);
}
if (isInputObjectType(a)) {
if (!isObjectLike$1(i)) return null;
let o = [];
for (let s of Object.values(a.getFields())) {
let a = astFromValue$1(i[s.name], s.type);
a && o.push({
kind: Kind.OBJECT_FIELD,
name: {
kind: Kind.NAME,
value: s.name
},
value: a
});
}
return {
kind: Kind.OBJECT,
fields: o
};
}
if (isLeafType(a)) {
if (isEnumType(a)) {
let o = a.getValues();
for (let a of o) {
if (a.value === i) {
i = a.name;
break;
}
if (a.name === i) {
i = a.name;
break;
}
}
return {
kind: Kind.ENUM,
value: i
};
} else i = a.serialize(i);
if (i == null) return null;
if (a.name === "ID" && typeof i == "string" && integerStringRegExp.test(i)) return {
kind: Kind.INT,
value: i
};
}
return astFromValueUntyped$1(i);
}
var integerStringRegExp = /^-?(?:0|[1-9][0-9]*)$/;
function getDescriptionNode(i) {
if (i.astNode?.description) return {
...i.astNode.description,
block: !0
};
if (i.description) return {
kind: Kind.STRING,
value: i.description,
block: !0
};
}
function getDefinedRootType(i, a, o) {
let s = getRootTypeMap$1(i).get(a);
if (s == null) throw createGraphQLError$1(`Schema is not configured to execute ${a} operation.`, { nodes: o });
return s;
}
const getRootTypeNames = memoize1$1(function(i) {
let a = getRootTypes$1(i);
return new Set([...a].map((i) => i.name));
}), getRootTypes$1 = memoize1$1(function(i) {
let a = getRootTypeMap$1(i);
return new Set(a.values());
}), getRootTypeMap$1 = memoize1$1(function(i) {
let a = /* @__PURE__ */ new Map(), o = i.getQueryType();
o && a.set("query", o);
let s = i.getMutationType();
s && a.set("mutation", s);
let c = i.getSubscriptionType();
return c && a.set("subscription", c), a;
});
function getDirectiveNodes(i, a, o) {
let s = [], c = getDirectivesInExtensions(i, o), d;
c != null && (d = makeDirectiveNodes(a, c));
let f = null, g = null, b = null;
if (d != null && (s = d.filter((i) => specifiedDirectives.every((a) => a.name !== i.name.value)), f = d.find((i) => i.name.value === "deprecated"), g = d.find((i) => i.name.value === "specifiedBy"), b = d.find((i) => i.name.value === "oneOf")), i.deprecationReason != null && f == null && (f = makeDeprecatedDirective(i.deprecationReason)), i.specifiedByUrl != null || i.specifiedByURL != null && g == null) {
let a = { url: i.specifiedByUrl || i.specifiedByURL };
g = makeDirectiveNode("specifiedBy", a);
}
return i.isOneOf && b == null && (b = makeDirectiveNode("oneOf")), f != null && s.push(f), g != null && s.push(g), b != null && s.push(b), s;
}
function astFromArg(i, a, o) {
return {
kind: Kind.INPUT_VALUE_DEFINITION,
description: getDescriptionNode(i),
name: {
kind: Kind.NAME,
value: i.name
},
type: astFromType(i.type),
defaultValue: i.defaultValue === void 0 ? void 0 : astFromValue$1(i.defaultValue, i.type) ?? void 0,
directives: getDirectiveNodes(i, a, o)
};
}
function makeDeprecatedDirective(i) {
return makeDirectiveNode("deprecated", { reason: i }, GraphQLDeprecatedDirective);
}
function makeDirectiveNode(i, a, o) {
let s = [];
for (let i in a) {
let c = a[i], d;
if (o != null) {
let a = o.args.find((a) => a.name === i);
a && (d = astFromValue$1(c, a.type));
}
d ??= astFromValueUntyped$1(c), d != null && s.push({
kind: Kind.ARGUMENT,
name: {
kind: Kind.NAME,
value: i
},
value: d
});
}
return {
kind: Kind.DIRECTIVE,
name: {
kind: Kind.NAME,
value: i
},
arguments: s
};
}
function makeDirectiveNodes(i, a) {
let o = [];
for (let { name: s, args: c } of a) {
let a = i?.getDirective(s);
o.push(makeDirectiveNode(s, c, a));
}
return o;
}
function mergeDeep(i, a = !1, o = !1, s = !1, c = !1) {
if (i.length === 0) return;
if (i.length === 1) return i[0];
let d, f = !0, g = i.every((i) => {
if (Array.isArray(i)) {
if (d === void 0) return d = i.length, !0;
if (d === i.length) return !0;
} else f = !1;
return !1;
});
if (s && g) return Array(d).fill(null).map((d, f) => mergeDeep(i.map((i) => i[f]), a, o, s, c));
if (f) return i.flat(1);
let b, x;
a && (x = i.find((i) => isObject$3(i)), x && (b ??= {}, Object.setPrototypeOf(b, Object.create(Object.getPrototypeOf(x)))));
for (let d of i) if (d != null) if (isObject$3(d)) {
if (x) {
let i = Object.getPrototypeOf(b), a = Object.getPrototypeOf(d);
if (a) for (let o of Object.getOwnPropertyNames(a)) {
let s = Object.getOwnPropertyDescriptor(a, o);
isSome(s) && Object.defineProperty(i, o, s);
}
}
for (let i in d) b ??= {}, i in b ? b[i] = mergeDeep([b[i], d[i]], a, o, s, c) : b[i] = d[i];
if (c && b != null) for (let i of Object.getOwnPropertySymbols(d)) {
let a = Object.getOwnPropertyDescriptor(d, i);
a.enumerable || Object.defineProperty(b, i, a);
}
} else b = Array.isArray(d) && Array.isArray(b) ? mergeDeep([b, d], a, o, s) : d;
return b;
}
function isObject$3(i) {
return i && typeof i == "object" && !Array.isArray(i);
}
function getResponseKeyFromInfo$1(i) {
return i.fieldNodes[0].alias == null ? i.fieldName : i.fieldNodes[0].alias.value;
}
function implementsAbstractType(i, a, o) {
return o == null || a == null ? !1 : a === o ? !0 : isCompositeType(a) && isCompositeType(o) ? doTypesOverlap(i, a, o) : !1;
}
function observableToAsyncIterable(i) {
let a = [], o = [], s = !0, c = (i) => {
a.length === 0 ? o.push({
value: i,
done: !1
}) : a.shift()({
value: i,
done: !1
});
}, d = (i) => {
a.length === 0 ? o.push({
value: { errors: [i] },
done: !1
}) : a.shift()({
value: { errors: [i] },
done: !1
});
}, f = () => {
a.length === 0 ? o.push({ done: !0 }) : a.shift()({ done: !0 });
}, g = () => new Promise((i) => {
if (o.length !== 0) {
let a = o.shift();
i(a);
} else a.push(i);
}), b = i.subscribe({
next(i) {
return c(i);
},
error(i) {
return d(i);
},
complete() {
return f();
}
}), x = () => {
if (s) {
s = !1, b.unsubscribe();
for (let i of a) i({
value: void 0,
done: !0
});
a.length = 0, o.length = 0;
}
};
return {
next() {
return s ? g() : this.return();
},
return() {
return x(), fakePromise({
value: void 0,
done: !0
});
},
throw(i) {
return x(), fakeRejectPromise(i);
},
[Symbol.asyncIterator]() {
return this;
}
};
}
var AccumulatorMap$1 = class extends Map {
get [Symbol.toStringTag]() {
return "AccumulatorMap";
}
add(i, a) {
let o = this.get(i);
o === void 0 ? this.set(i, [a]) : o.push(a);
}
};
const GraphQLDeferDirective$1 = 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"
}
}
});
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$1(i, a, o, s, c, d, f, g) {
for (let b of c.selections) switch (b.kind) {
case Kind.FIELD:
if (!shouldIncludeNode$1(o, b)) continue;
d.add(getFieldEntryKey$1(b), b);
break;
case Kind.INLINE_FRAGMENT: {
if (!shouldIncludeNode$1(o, b) || !doesFragmentConditionMatch$1(i, b, s)) continue;
let c = getDeferValues$1(o, b);
if (c) {
let d = new AccumulatorMap$1();
collectFieldsImpl$1(i, a, o, s, b.selectionSet, d, f, g), f.push({
label: c.label,
fields: d
});
} else collectFieldsImpl$1(i, a, o, s, b.selectionSet, d, f, g);
break;
}
case Kind.FRAGMENT_SPREAD: {
let c = b.name.value;
if (!shouldIncludeNode$1(o, b)) continue;
let x = getDeferValues$1(o, b);
if (g.has(c) && !x) continue;
let S = a[c];
if (!S || !doesFragmentConditionMatch$1(i, S, s)) continue;
if (x || g.add(c), x) {
let c = new AccumulatorMap$1();
collectFieldsImpl$1(i, a, o, s, S.selectionSet, c, f, g), f.push({
label: x.label,
fields: c
});
} else collectFieldsImpl$1(i, a, o, s, S.selectionSet, d, f, g);
break;
}
}
}
function collectFields(i, a, o, s, c) {
let d = new AccumulatorMap$1(), f = [];
return collectFieldsImpl$1(i, a, o, s, c, d, f, /* @__PURE__ */ new Set()), {
fields: d,
patches: f
};
}
function shouldIncludeNode$1(i, a) {
return !(getDirectiveValues(GraphQLSkipDirective, a, i)?.if === !0 || getDirectiveValues(GraphQLIncludeDirective, a, i)?.if === !1);
}
function doesFragmentConditionMatch$1(i, a, o) {
let s = a.typeCondition;
if (!s) return !0;
let c = typeFromAST(i, s);
return c === o ? !0 : isAbstractType(c) ? i.getPossibleTypes(c).includes(o) : !1;
}
function getFieldEntryKey$1(i) {
return i.alias ? i.alias.value : i.name.value;
}
function getDeferValues$1(i, a) {
let o = getDirectiveValues(GraphQLDeferDirective$1, a, i);
if (o && o.if !== !1) return { label: typeof o.label == "string" ? o.label : void 0 };
}
function getOperationASTFromDocument$1(i, a) {
let o = getOperationAST(i, a);
if (!o) throw Error(`Cannot infer operation ${a || ""}`);
return o;
}
const getOperationASTFromRequest$2 = memoize1$1(function(i) {
return getOperationASTFromDocument$1(i.document, i.operationName);
});
function isAsyncIterable$2(i) {
return i?.[Symbol.asyncIterator] != null;
}
function pathToArray(i) {
let a = [], o = i;
for (; o;) a.push(o.key), o = o.prev;
return a.reverse();
}
function mergeIncrementalResult({ incrementalResult: i, executionResult: a }) {
let o = ["data", ...i.path ?? []];
if (i.items) for (let s of i.items) setObjectKeyPath$1(a, o, s), o[o.length - 1]++;
i.data && setObjectKeyPath$1(a, o, i.data), i.errors && (a.errors = a.errors || [], a.errors.push(...i.errors)), i.extensions && setObjectKeyPath$1(a, ["extensions"], i.extensions), i.incremental && i.incremental.forEach((i) => {
mergeIncrementalResult({
incrementalResult: i,
executionResult: a
});
});
}
function setObjectKeyPath$1(i, a, o) {
let s = i, c;
for (c = 0; c < a.length - 1; c++) {
let i = a[c];
if (i === "__proto__" || i === "constructor" || i === "prototype") return;
s[i] ?? (s[i] = typeof a[c + 1] == "number" ? [] : {}), s = s[i];
}
let d = a[c];
if (d === "__proto__" || d === "constructor" || d === "prototype") return;
let f = s[d];
s[d] = f == null ? o : mergeDeep([f, o]);
}
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 [i, a, o] = process.versions.node.split(".").map(Number);
return {
major: i || NaN,
minor: a || NaN,
patch: o || NaN
};
}
function isClient(i) {
return "subscribe" in i;
}
function buildGraphQLWSExecutor(i) {
let a, o = {}, s = defaultPrintFn;
if (isClient(i)) a = i;
else {
i.print && (s = i.print);
let c = i.headers, d = c ? class extends WebSocket$1 {
constructor(i, a) {
isBrowser() ? super(i, a) : getNodeVer().major < 22 ? super(i, a, { headers: c }) : super(i, {
protocols: [a],
protocol: a,
headers: c
});
}
} : WebSocket$1;
a = createClient({
url: i.url,
webSocketImpl: d,
lazy: i.lazy !== !1,
lazyCloseTimeout: i.lazyCloseTimeout || 0,
connectionParams: () => {
let a = (typeof i.connectionParams == "function" ? i.connectionParams() : i.connectionParams) || {};
return Object.assign(a, o);
},
on: i.on
}), i.onClient && i.onClient(a);
}
let c = function(i) {
let { extensions: c, operationType: d = getOperationASTFromRequest$2(i).operation, info: f, signal: g = f?.signal } = i;
c?.connectionParams && typeof c?.connectionParams == "object" && (o = Object.assign(o, c.connectionParams));
let b = a.iterate(serializeExecutionRequest({
executionRequest: i,
printFn: s
}));
return b.return && g && g.addEventListener("abort", () => {
b.return?.();
}, { once: !0 }), d === "subscription" ? b : b.next().then(({ value: i }) => i);
};
return Object.defineProperty(c, DisposableSymbols.asyncDispose, { value: function() {
return a.dispose();
} }), c;
}
var isNode$2 = !globalThis.Bun && globalThis.process?.release?.name === "node", anySignalRegistry = isNode$2 ? new FinalizationRegistry((i) => i()) : null, controllerInSignalSy = Symbol("CONTROLLER_IN_SIGNAL");
function abortSignalAny(i) {
if (i.length === 0) return;
if (i.length === 1) return i[0];
if (!isNode$2) return AbortSignal.any(i);
for (let a of i) if (a.aborted) return a;
let a = new AbortController(), o = new WeakRef(a), s = [], c = i.length;
for (let a of i) {
let i = function() {
o.deref()?.abort(f.deref()?.reason);
}, f = new WeakRef(a);
a.addEventListener("abort", i), s.push([f, i]), anySignalRegistry.register(a, () => !--c && d(), a);
}
function d() {
for (let [i, a] of s) {
let s = i.deref();
s && (s.removeEventListener("abort", a), anySignalRegistry.unregister(s));
let c = o.deref();
c && (anySignalRegistry.unregister(c.signal), delete c.signal[controllerInSignalSy]);
}
}
return a.signal.addEventListener("abort", d), anySignalRegistry.register(a.signal, d, a.signal), a.signal[controllerInSignalSy] = a, a.signal;
}
var require_global_ponyfill = /* @__PURE__ */ __commonJSMin(((i, a) => {
a.exports.fetch = globalThis.fetch, a.exports.Headers = globalThis.Headers, a.exports.Request = globalThis.Request, a.exports.Response = globalThis.Response, a.exports.FormData = globalThis.FormData, a.exports.ReadableStream = globalThis.ReadableStream, a.exports.WritableStream = globalThis.WritableStream, a.exports.TransformStream = globalThis.TransformStream, a.exports.CompressionStream = globalThis.CompressionStream, a.exports.DecompressionStream = globalThis.DecompressionStream, a.exports.TextDecoderStream = globalThis.TextDecoderStream, a.exports.TextEncoderStream = globalThis.TextEncoderStream, a.exports.Blob = globalThis.Blob, a.exports.File = globalThis.File, a.exports.crypto = globalThis.crypto, a.exports.btoa = globalThis.btoa, a.exports.TextEncoder = globalThis.TextEncoder, a.exports.TextDecoder = globalThis.TextDecoder, a.exports.URLPattern = globalThis.URLPattern, a.exports.URL = globalThis.URL, a.exports.URLSearchParams = globalThis.URLSearchParams, a.exports.createFetch = () => globalThis;
})), import_global_ponyfill$1 = /* @__PURE__ */ __toESM(require_global_ponyfill()), extendStatics = function(i, a) {
return extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(i, a) {
i.__proto__ = a;
} || function(i, a) {
for (var o in a) a.hasOwnProperty(o) && (i[o] = a[o]);
}, extendStatics(i, a);
};
function __extends(i, a) {
extendStatics(i, a);
function o() {
this.constructor = i;
}
i.prototype = a === null ? Object.create(a) : (o.prototype = a.prototype, new o());
}
function __awaiter(i, a, o, s) {
function c(i) {
return i instanceof o ? i : new o(function(a) {
a(i);
});
}
return new (o ||= Promise)(function(o, d) {
function f(i) {
try {
b(s.next(i));
} catch (i) {
d(i);
}
}
function g(i) {
try {
b(s.throw(i));
} catch (i) {
d(i);
}
}
function b(i) {
i.done ? o(i.value) : c(i.value).then(f, g);
}
b((s = s.apply(i, a || [])).next());
});
}
function __generator(i, a) {
var o = {
label: 0,
sent: function() {
if (d[0] & 1) throw d[1];
return d[1];
},
trys: [],
ops: []
}, s, c, d, f;
return f = {
next: g(0),
throw: g(1),
return: g(2)
}, typeof Symbol == "function" && (f[Symbol.iterator] = function() {
return this;
}), f;
function g(i) {
return function(a) {
return b([i, a]);
};
}
function b(f) {
if (s) throw TypeError("Generator is already executing.");
for (; o;) try {
if (s = 1, c && (d = f[0] & 2 ? c.return : f[0] ? c.throw || ((d = c.return) && d.call(c), 0) : c.next) && !(d = d.call(c, f[1])).done) return d;
switch (c = 0, d && (f = [f[0] & 2, d.value]), f[0]) {
case 0:
case 1:
d = f;
break;
case 4: return o.label++, {
value: f[1],
done: !1
};
case 5:
o.label++, c = f[1], f = [0];
continue;
case 7:
f = o.ops.pop(), o.trys.pop();
continue;
default:
if ((d = o.trys, !(d = d.length > 0 && d[d.length - 1])) && (f[0] === 6 || f[0] === 2)) {
o = 0;
continue;
}
if (f[0] === 3 && (!d || f[1] > d[0] && f[1] < d[3])) {
o.label = f[1];
break;
}
if (f[0] === 6 && o.label < d[1]) {
o.label = d[1], d = f;
break;
}
if (d && o.label < d[2]) {
o.label = d[2], o.ops.push(f);
break;
}
d[2] && o.ops.pop(), o.trys.pop();
continue;
}
f = a.call(i, o);
} catch (i) {
f = [6, i], c = 0;
} finally {
s = d = 0;
}
if (f[0] & 5) throw f[1];
return {
value: f[0] ? f[1] : void 0,
done: !0
};
}
}
function __values(i) {
var a = typeof Symbol == "function" && Symbol.iterator, o = a && i[a], s = 0;
if (o) return o.call(i);
if (i && typeof i.length == "number") return { next: function() {
return i && s >= i.length && (i = void 0), {
value: i && i[s++],
done: !i
};
} };
throw TypeError(a ? "Object is not iterable." : "Symbol.iterator is not defined.");
}
function __await(i) {
return this instanceof __await ? (this.v = i, this) : new __await(i);
}
function __asyncGenerator(i, a, o) {
if (!Symbol.asyncIterator) throw TypeError("Symbol.asyncIterator is not defined.");
var s = o.apply(i, a || []), c, d = [];
return c = {}, f("next"), f("throw"), f("return"), c[Symbol.asyncIterator] = function() {
return this;
}, c;
function f(i) {
s[i] && (c[i] = function(a) {
return new Promise(function(o, s) {
d.push([
i,
a,
o,
s
]) > 1 || g(i, a);
});
});
}
function g(i, a) {
try {
b(s[i](a));
} catch (i) {
C(d[0][3], i);
}
}
function b(i) {
i.value instanceof __await ? Promise.resolve(i.value.v).then(x, S) : C(d[0][2], i);
}
function x(i) {
g("next", i);
}
function S(i) {
g("throw", i);
}
function C(i, a) {
i(a), d.shift(), d.length && g(d[0][0], d[0][1]);
}
}
var RepeaterOverflowError = function(i) {
__extends(a, i);
function a(a) {
var o = i.call(this, a) || this;
return Object.defineProperty(o, "name", {
value: "RepeaterOverflowError",
enumerable: !1
}), typeof Object.setPrototypeOf == "function" ? Object.setPrototypeOf(o, o.constructor.prototype) : o.__proto__ = o.constructor.prototype, typeof Error.captureStackTrace == "function" && Error.captureStackTrace(o, o.constructor), o;
}
return a;
}(Error);
(function() {
function i(i) {
if (i < 0) throw RangeError("Capacity may not be less than 0");
this._c = i, this._q = [];
}
return Object.defineProperty(i.prototype, "empty", {
get: function() {
return this._q.length === 0;
},
enumerable: !1,
configurable: !0
}), Object.defineProperty(i.prototype, "full", {
get: function() {
return this._q.length >= this._c;
},
enumerable: !1,
configurable: !0
}), i.prototype.add = function(i) {
if (this.full) throw Error("Buffer full");
this._q.push(i);
}, i.prototype.remove = function() {
if (this.empty) throw Error("Buffer empty");
return this._q.shift();
}, i;
})(), function() {
function i(i) {
if (i < 1) throw RangeError("Capacity may not be less than 1");
this._c = i, this._q = [];
}
return Object.defineProperty(i.prototype, "empty", {
get: function() {
return this._q.length === 0;
},
enumerable: !1,
configurable: !0
}), Object.defineProperty(i.prototype, "full", {
get: function() {
return !1;
},
enumerable: !1,
configurable: !0
}), i.prototype.add = function(i) {
for (; this._q.length >= this._c;) this._q.shift();
this._q.push(i);
}, i.prototype.remove = function() {
if (this.empty) throw Error("Buffer empty");
return this._q.shift();
}, i;
}(), function() {
function i(i) {
if (i < 1) throw RangeError("Capacity may not be less than 1");
this._c = i, this._q = [];
}
return Object.defineProperty(i.prototype, "empty", {
get: function() {
return this._q.length === 0;
},
enumerable: !1,
configurable: !0
}), Object.defineProperty(i.prototype, "full", {
get: function() {
return !1;
},
enumerable: !1,
configurable: !0
}), i.prototype.add = function(i) {
this._q.length < this._c && this._q.push(i);
}, i.prototype.remove = function() {
if (this.empty) throw Error("Buffer empty");
return this._q.shift();
}, i;
}();
function swallow(i) {
i != null && typeof i.then == "function" && i.then(NOOP, NOOP);
}
var Initial = 0, Started = 1, Stopped = 2, Done = 3, Rejected = 4, MAX_QUEUE_LENGTH = 1024, NOOP = function() {};
function consumeExecution(i) {
var a = i.err, o = Promise.resolve(i.execution).then(function(i) {
if (a != null) throw a;
return i;
});
return i.err = void 0, i.execution = o.then(function() {}, function() {}), i.pending === void 0 ? o : i.pending.then(function() {
return o;
});
}
function createIteration(i, a) {
var o = i.state >= Done;
return Promise.resolve(a).then(function(a) {
return !o && i.state >= Rejected ? consumeExecution(i).then(function(i) {
return {
value: i,
done: !0
};
}) : {
value: a,
done: o
};
});
}
function stop(i, a) {
var o, s;
if (!(i.state >= Stopped)) if (i.state = Stopped, i.onnext(), i.onstop(), i.err ??= a, i.pushes.length === 0 && (i.buffer === void 0 || i.buffer.empty)) finish(i);
else try {
for (var c = __values(i.pushes), d = c.next(); !d.done; d = c.next()) d.value.resolve();
} catch (i) {
o = { error: i };
} finally {
try {
d && !d.done && (s = c.return) && s.call(c);
} finally {
if (o) throw o.error;
}
}
}
function finish(i) {
var a, o;
if (!(i.state >= Done)) {
i.state < Stopped && stop(i), i.state = Done, i.buffer = void 0;
try {
for (var s = __values(i.nexts), c = s.next(); !c.done; c = s.next()) {
var d = c.value, f = i.pending === void 0 ? consumeExecution(i) : i.pending.then(function() {
return consumeExecution(i);
});
d.resolve(createIteration(i, f));
}
} catch (i) {
a = { error: i };
} finally {
try {
c && !c.done && (o = s.return) && o.call(s);
} finally {
if (a) throw a.error;
}
}
i.pushes = [], i.nexts = [];
}
}
function reject(i) {
i.state >= Rejected || (i.state < Done && finish(i), i.state = Rejected);
}
function push(i, a) {
if (swallow(a), i.pushes.length >= 1024) throw new RepeaterOverflowError("No more than " + MAX_QUEUE_LENGTH + " pending calls to push are allowed on a single repeater.");
if (i.state >= Stopped) return Promise.resolve(void 0);
var o = i.pending === void 0 ? Promise.resolve(a) : i.pending.then(function() {
return a;
});
o = o.catch(function(a) {
i.state < Stopped && (i.err = a), reject(i);
});
var s;
i.nexts.length ? (i.nexts.shift().resolve(createIteration(i, o)), s = i.nexts.length ? Promise.resolve(i.nexts[0].value) : i.buffer !== void 0 && !i.buffer.full ? Promise.resolve(void 0) : new Promise(function(a) {
return i.onnext = a;
})) : i.buffer !== void 0 && !i.buffer.full ? (i.buffer.add(o), s = Promise.resolve(void 0)) : s = new Promise(function(a) {
return i.pushes.push({
resolve: a,
value: o
});
});
var c = !0, d = {}, f = s.catch(function(i) {
if (c) throw i;
});
return d.then = function(i, a) {
return c = !1, Promise.prototype.then.call(s, i, a);
}, d.catch = function(i) {
return c = !1, Promise.prototype.catch.call(s, i);
}, d.finally = s.finally.bind(s), i.pending = o.then(function() {
return f;
}).catch(function(a) {
i.err = a, reject(i);
}), d;
}
function createStop(i) {
var a = stop.bind(null, i), o = new Promise(function(a) {
return i.onstop = a;
});
return a.then = o.then.bind(o), a.catch = o.catch.bind(o), a.finally = o.finally.bind(o), a;
}
function execute$1(i) {
if (!(i.state >= Started)) {
i.state = Started;
var a = push.bind(null, i), o = createStop(i);
i.execution = new Promise(function(s) {
return s(i.executor(a, o));
}), i.execution.catch(function() {
return stop(i);
});
}
}
var records = /* @__PURE__ */ new WeakMap(), Repeater = function() {
function i(i, a) {
records.set(this, {
executor: i,
buffer: a,
err: void 0,
state: Initial,
pushes: [],
nexts: [],
pending: void 0,
execution: void 0,
onnext: NOOP,
onstop: NOOP
});
}
return i.prototype.next = function(i) {
swallow(i);
var a = records.get(this);
if (a === void 0) throw Error("WeakMap error");
if (a.nexts.length >= 1024) throw new RepeaterOverflowError("No more than " + MAX_QUEUE_LENGTH + " pending calls to next are allowed on a single repeater.");
if (a.state <= Initial && execute$1(a), a.onnext(i), a.buffer !== void 0 && !a.buffer.empty) {
var o = createIteration(a, a.buffer.remove());
if (a.pushes.length) {
var s = a.pushes.shift();
a.buffer.add(s.value), a.onnext = s.resolve;
}
return o;
} else if (a.pushes.length) {
var c = a.pushes.shift();
return a.onnext = c.resolve, createIteration(a, c.value);
} else if (a.state >= Stopped) return finish(a), createIteration(a, consumeExecution(a));
return new Promise(function(o) {
return a.nexts.push({
resolve: o,
value: i
});
});
}, i.prototype.return = function(i) {
swallow(i);
var a = records.get(this);
if (a === void 0) throw Error("WeakMap error");
return finish(a), a.execution = Promise.resolve(a.execution).then(function() {
return i;
}), createIteration(a, consumeExecution(a));
}, i.prototype.throw = function(i) {
var a = records.get(this);
if (a === void 0) throw Error("WeakMap error");
return a.state <= Initial || a.state >= Stopped || a.buffer !== void 0 && !a.buffer.empty ? (finish(a), a.err ??= i, createIteration(a, consumeExecution(a))) : this.next(Promise.reject(i));
}, i.prototype[Symbol.asyncIterator] = function() {
return this;
}, i.race = race, i.merge = merge$1, i.zip = zip, i.latest = latest, i;
}();
function getIterators(i, a) {
var o, s, c = [], d = function(i) {
i != null && typeof i[Symbol.asyncIterator] == "function" ? c.push(i[Symbol.asyncIterator]()) : i != null && typeof i[Symbol.iterator] == "function" ? c.push(i[Symbol.iterator]()) : c.push((function() {
return __asyncGenerator(this, arguments, function() {
return __generator(this, function(o) {
switch (o.label) {
case 0: return a.yieldValues ? [4, __await(i)] : [3, 3];
case 1: return [4, o.sent()];
case 2: o.sent(), o.label = 3;
case 3: return a.returnValues ? [4, __await(i)] : [3, 5];
case 4: return [2, o.sent()];
case 5: return [2];
}
});
});
})());
};
try {
for (var f = __values(i), g = f.next(); !g.done; g = f.next()) {
var b = g.value;
d(b);
}
} catch (i) {
o = { error: i };
} finally {
try {
g && !g.done && (s = f.return) && s.call(f);
} finally {
if (o) throw o.error;
}
}
return c;
}
function race(i) {
var a = this, o = getIterators(i, { returnValues: !0 });
return new Repeater(function(i, s) {
return __awaiter(a, void 0, void 0, function() {
var a, c, d, f, g, b;
return __generator(this, function(x) {
switch (x.label) {
case 0:
if (!o.length) return s(), [2];
c = !1, s.then(function() {
a(), c = !0;
}), x.label = 1;
case 1: x.trys.push([
1,
,
5,
7
]), f = void 0, g = 0, b = function() {
var c, b, x, S, C, w;
return __generator(this, function(E) {
switch (E.label) {
case 0:
c = g;
try {
for (b = (C = void 0, __values(o)), x = b.next(); !x.done; x = b.next()) S = x.value, Promise.resolve(S.next()).then(function(i) {
i.done ? (s(), d === void 0 && (d = i)) : g === c && (g++, a(i));
}, function(i) {
return s(i);
});
} catch (i) {
C = { error: i };
} finally {
try {
x && !x.done && (w = b.return) && w.call(b);
} finally {
if (C) throw C.error;
}
}
return [4, new Promise(function(i) {
return a = i;
})];
case 1: return f = E.sent(), f === void 0 ? [3, 3] : [4, i(f.value)];
case 2: E.sent(), E.label = 3;
case 3: return [2];
}
});
}, x.label = 2;
case 2: return c ? [3, 4] : [5, b()];
case 3: return x.sent(), [3, 2];
case 4: return [2, d && d.value];
case 5: return s(), [4, Promise.race(o.map(function(i) {
return i.return && i.return();
}))];
case 6: return x.sent(), [7];
case 7: return [2];
}
});
});
});
}
function merge$1(i) {
var a = this, o = getIterators(i, { yieldValues: !0 });
return new Repeater(function(i, s) {
return __awaiter(a, void 0, void 0, function() {
var a, c, d, f = this;
return __generator(this, function(g) {
switch (g.label) {
case 0:
if (!o.length) return s(), [2];
a = [], c = !1, s.then(function() {
var i, o;
c = !0;
try {
for (var s = __values(a), d = s.next(); !d.done; d = s.next()) {
var f = d.value;
f();
}
} catch (a) {
i = { error: a };
} finally {
try {
d && !d.done && (o = s.return) && o.call(s);
} finally {
if (i) throw i.error;
}
}
}), g.label = 1;
case 1: return g.trys.push([
1,
,
3,
4
]), [4, Promise.all(o.map(function(o, g) {
return __awaiter(f, void 0, void 0, function() {
var f, b;
return __generator(this, function(x) {
switch (x.label) {
case 0: x.trys.push([
0,
,
6,
9
]), x.label = 1;
case 1: return c ? [3, 5] : (Promise.resolve(o.next()).then(function(i) {
return a[g](i);
}, function(i) {
return s(i);
}), [4, new Promise(function(i) {
a[g] = i;
})]);
case 2: return f = x.sent(), f === void 0 ? [3, 4] : f.done ? (d = f, [2]) : [4, i(f.value)];
case 3: x.sent(), x.label = 4;
case 4: return [3, 1];
case 5: return [3, 9];
case 6: return b = o.return, b ? [4, o.return()] : [3, 8];
case 7: b = x.sent(), x.label = 8;
case 8: return [7];
case 9: return [2];
}
});
});
}))];
case 2: return g.sent(), [2, d && d.value];
case 3: return s(), [7];
case 4: return [2];
}
});
});
});
}
function zip(i) {
var a = this, o = getIterators(i, { returnValues: !0 });
return new Repeater(function(i, s) {
return __awaiter(a, void 0, void 0, function() {
var a, c, d, f;
return __generator(this, function(g) {
switch (g.label) {
case 0:
if (!o.length) return s(), [2, []];
c = !1, s.then(function() {
a(), c = !0;
}), g.label = 1;
case 1: g.trys.push([
1,
,
6,
8
]), g.label = 2;
case 2: return c ? [3, 5] : (Promise.all(o.map(function(i) {
return i.next();
})).then(function(i) {
return a(i);
}, function(i) {
return s(i);
}), [4, new Promise(function(i) {
return a = i;
})]);
case 3: return d = g.sent(), d === void 0 ? [2] : (f = d.map(function(i) {
return i.value;
}), d.some(function(i) {
return i.done;
}) ? [2, f] : [4, i(f)]);
case 4: return g.sent(), [3, 2];
case 5: return [3, 8];
case 6: return s(), [4, Promise.all(o.map(function(i) {
return i.return && i.return();
}))];
case 7: return g.sent(), [7];
case 8: return [2];
}
});
});
});
}
function latest(i) {
var a = this, o = getIterators(i, {
yieldValues: !0,
returnValues: !0
});
return new Repeater(function(i, s) {
return __awaiter(a, void 0, void 0, function() {
var a, c, d, f, g, b = this;
return __generator(this, function(x) {
switch (x.label) {
case 0:
if (!o.length) return s(), [2, []];
c = [], d = !1, s.then(function() {
var i, o;
a();
try {
for (var s = __values(c), f = s.next(); !f.done; f = s.next()) {
var g = f.value;
g();
}
} catch (a) {
i = { error: a };
} finally {
try {
f && !f.done && (o = s.return) && o.call(s);
} finally {
if (i) throw i.error;
}
}
d = !0;
}), x.label = 1;
case 1: return x.trys.push([
1,
,
5,
7
]), Promise.all(o.map(function(i) {
return i.next();
})).then(function(i) {
return a(i);
}, function(i) {
return s(i);
}), [4, new Promise(function(i) {
return a = i;
})];
case 2: return f = x.sent(), f === void 0 ? [2] : (g = f.map(function(i) {
return i.value;
}), f.every(function(i) {
return i.done;
}) ? [2, g] : [4, i(g.slice())]);
case 3: return x.sent(), [4, Promise.all(o.map(function(a, o) {
return __awaiter(b, void 0, void 0, function() {
var b;
return __generator(this, function(x) {
switch (x.label) {
case 0:
if (f[o].done) return [2, f[o].value];
x.label = 1;
case 1: return d ? [3, 4] : (Promise.resolve(a.next()).then(function(i) {
return c[o](i);
}, function(i) {
return s(i);
}), [4, new Promise(function(i) {
return c[o] = i;
})]);
case 2: return b = x.sent(), b === void 0 ? [2, f[o].value] : b.done ? [2, b.value] : (g[o] = b.value, [4, i(g.slice())]);
case 3: return x.sent(), [3, 1];
case 4: return [2];
}
});
});
}))];
case 4: return [2, x.sent()];
case 5: return s(), [4, Promise.all(o.map(function(i) {
return i.return && i.return();
}))];
case 6: return x.sent(), [7];
case 7: return [2];
}
});
});
});
}
async function e$1(i, a) {
if (!i.ok || !i.body || i.bodyUsed) return i;
let o = i.headers.get("content-type");
if (!o || !~o.indexOf("multipart/")) return i;
let s = o.indexOf("boundary="), c = "-";
if (~s) {
let i = s + 9, a = o.indexOf(";", i);
c = o.slice(i, a > -1 ? a : void 0).trim().replace(/"/g, "");
}
return async function* (i, a, o) {
let s, c, d, f = new TextDecoder("utf8"), g = i.getReader(), b = !o || !o.multiple, x = a.length, S = "", C = [];
try {
let i;
e: for (; !(i = await g.read()).done;) {
let o = f.decode(i.value, { stream: !0 });
s = S.length, S += o;
let g = o.indexOf(a);
for (~g ? s += g : s = S.indexOf(a), C = []; ~s;) {
let i = S.slice(0, s), o = S.slice(s + x);
if (c) {
let a = i.indexOf("\r\n\r\n") + 4, s = i.lastIndexOf("\r\n", a), c = !1, f = i.slice(a, s > -1 ? void 0 : s), g = String(i.slice(0, a)).trim().split("\r\n"), x = {}, S = g.length;
for (; d = g[--S]; d = d.split(": "), x[d.shift().toLowerCase()] = d.join(": "));
if (d = x["content-type"], d && ~d.indexOf("application/json")) try {
f = JSON.parse(f), c = !0;
} catch {}
if (d = {
headers: x,
body: f,
json: c
}, b ? yield d : C.push(d), o.slice(0, 2) === "--") break e;
} else a = "\r\n" + a, c = x += 2;
S = o, s = S.indexOf(a);
}
C.length && (yield C);
}
} finally {
C.length && (yield C), await g.cancel();
}
}(i.body, `--${c}`, a);
}
async function e$2(i, a) {
let o = i.headers["content-type"];
if (!o || !~o.indexOf("multipart/")) return i;
let s = o.indexOf("boundary="), c = "-";
if (~s) {
let i = s + 9, a = o.indexOf(";", i);
c = o.slice(i, a > -1 ? a : void 0).trim().replace(/"/g, "");
}
return async function* (i, a, o) {
let s, c, d, f = !o || !o.multiple, g = Buffer.byteLength(a), b = Buffer.alloc(0), x = [];
e: for await (let o of i) {
s = b.byteLength, b = Buffer.concat([b, o]);
let i = o.indexOf(a);
for (~i ? s += i : s = b.indexOf(a), x = []; ~s;) {
let i = b.subarray(0, s), o = b.subarray(s + g);
if (c) {
let a = i.indexOf("\r\n\r\n") + 4, s = i.lastIndexOf("\r\n", a), c = !1, g = i.subarray(a, s > -1 ? void 0 : s), b = String(i.subarray(0, a)).trim().split("\r\n"), S = {}, C = b.length;
for (; d = b[--C]; d = d.split(": "), S[d.shift().toLowerCase()] = d.join(": "));
if (d = S["content-type"], d && ~d.indexOf("application/json")) try {
g = JSON.parse(String(g)), c = !0;
} catch {}
if (d = {
headers: S,
body: g,
json: c
}, f ? yield d : x.push(d), o[0] === 45 && o[1] === 45) break e;
} else a = "\r\n" + a, c = g += 2;
b = o, s = b.indexOf(a);
}
x.length && (yield x);
}
x.length && (yield x);
}(i, `--${c}`, a);
}
function isPlainObject(i) {
if (typeof i != "object" || !i) return !1;
let a = Object.getPrototypeOf(i);
return (a === null || a === Object.prototype || Object.getPrototypeOf(a) === null) && !(Symbol.toStringTag in i) && !(Symbol.iterator in i);
}
function extractFiles(i, a, o = "") {
if (!arguments.length) throw TypeError("Argument 1 `value` is required.");
if (typeof a != "function") throw TypeError("Argument 2 `isExtractable` must be a function.");
if (typeof o != "string") throw TypeError("Argument 3 `path` must be a string.");
let s = /* @__PURE__ */ new Map(), c = /* @__PURE__ */ new Map();
function d(i, o, f) {
if (a(i)) {
let a = c.get(i);
return a ? a.push(o) : c.set(i, [o]), null;
}
let g = Array.isArray(i) || typeof FileList < "u" && i instanceof FileList, b = isPlainObject(i);
if (g || b) {
let a = s.get(i), c = !a;
if (c && (a = g ? [] : i instanceof Object ? {} : Object.create(null), s.set(i, a)), !f.has(i)) {
let s = o ? `${o}.` : "", b = new Set(f).add(i);
if (g) {
let o = 0;
for (let f of i) {
let i = d(f, s + o++, b);
c && a.push(i);
}
} else for (let o in i) {
let f = d(i[o], s + o, b);
c && (a[o] = f);
}
}
return a;
}
return i;
}
return {
clone: d(i, o, /* @__PURE__ */ new Set()),
files: c
};
}
function isExtractableFile(i) {
return typeof File < "u" && i instanceof File || typeof Blob < "u" && i instanceof Blob;
}
function isGraphQLUpload(i) {
return typeof i.createReadStream == "function";
}
function collectAsyncIterableValues(i) {
let a = [], o = i[Symbol.asyncIterator]();
function s() {
return handleMaybePromise(() => o.next(), ({ value: i, done: o }) => (i != null && a.push(i), o ? a : s()));
}
return s();
}
function createFormDataFromVariables(i, { File: a = import_global_ponyfill$1.File, FormData: o = import_global_ponyfill$1.FormData }) {
if (!i.variables) return JSON.stringify(i);
let s = Object.assign({}, i.variables), { clone: c, files: d } = extractFiles(s, ((i) => isExtractableFile(i) || i?.promise || isAsyncIterable$2(i) || i?.then || typeof i?.arrayBuffer == "function"), "variables");
if (d.size === 0) return JSON.stringify(i);
let f = {}, g = [], b = 0;
for (let [i, a] of d) f[b] = a, g[b] = i, b++;
let x = new o();
x.append("operations", JSON.stringify({
...i,
variables: c
})), x.append("map", JSON.stringify(f));
function S(i, o) {
let s = o.toString();
if (i != null) return handleMaybePromise(() => i?.promise || i, (i) => {
let o = i.filename || i.name || i.path || `blob-${s}`;
if (isBlob(i)) x.append(s, i, o);
else if (isAsyncIterable$2(i)) return handleMaybePromise(() => collectAsyncIterableValues(i), (i) => {
let c = new Uint8Array(i);
x.append(s, new a([c], o), o);
});
else if (isGraphQLUpload(i)) return handleMaybePromise(() => collectAsyncIterableValues(i.createReadStream()), (c) => {
let d = new Uint8Array(c);
x.append(s, new a([d], o, { type: i.mimetype }), o);
});
else x.append(s, new a([i], o), o);
});
}
let C = [];
for (let i in g) {
let a = g[i], o = S(a, Number(i));
isPromise(o) && C.push(o);
}
return C.length > 0 ? Promise.all(C).then(() => x) : x;
}
function isBlob(i) {
return typeof i.arrayBuffer == "function";
}
function createGraphQLErrorForAbort(i, a) {
return i instanceof GraphQLError ? i : i?.name === "TimeoutError" ? createGraphQLError$1(i.message, {
extensions: {
http: {
status: 504,
...a?.http || {}
},
code: "TIMEOUT_ERROR",
...a || {}
},
originalError: i
}) : createGraphQLError$1(i.message, {
extensions: a,
originalError: i
});
}
function createResultForAbort(i, a) {
return { errors: [createGraphQLErrorForAbort(i, a)] };
}
function hashSHA256(i) {
let a = new import_global_ponyfill$1.TextEncoder().encode(i);
return handleMaybePromise(() => import_global_ponyfill$1.crypto.subtle.digest("SHA-256", a), (i) => {
let a = "";
for (let o of new Uint8Array(i)) a += o.toString(16).padStart(2, "0");
return a;
});
}
var DELIM = "\n\n";
function isReadableStream(i) {
return i && typeof i.getReader == "function";
}
function handleEventStreamResponse(i, a, o) {
let s = i.body;
if (!isReadableStream(s)) throw Error("Response body is expected to be a readable stream but got; " + inspect(s));
return new Repeater((i, c) => {
let d = new import_global_ponyfill$1.TextDecoder(), f = s.getReader(), g = !1;
f.closed.then(() => g = !0).catch((i) => g = i), c.then(() => {
a?.abort(), s.locked && f.releaseLock();
}).catch((i) => {
f.cancel(i);
});
let b = "";
async function x() {
if (o?.aborted) return await i(createResultForAbort(o.reason)), c();
if (!s?.locked) return c();
let a, S;
try {
let i = await f.read();
a = i.done, S = i.value;
} catch (a) {
if (o?.aborted) return await i(createResultForAbort(o.reason)), c();
let s = a instanceof Error ? a : Error(String(a));
return await i({ errors: [createGraphQLError$1(s.message, { originalError: s })] }), c();
}
if (a) return c();
for (b += typeof S == "string" ? S : d.decode(S);;) {
let a = b.indexOf(DELIM);
if (a === -1) break;
let o = b.slice(0, a);
b = b.slice(a + 2);
let s = o.split("\n").filter((i) => i.startsWith("data:")).map((i) => i.slice(5).trim()).join("\n");
if (s) {
let a = JSON.parse(s);
await i(a.payload || a);
}
if (o.split("event:")[1]?.trim().split("\n")[0]?.trim() === "complete") return c();
}
return g ? c() : x();
}
return x();
});
}
function isIncomingMessage(i) {
return typeof i == "object" && !!i && "pipe" in i;
}
async function handleMultipartMixedResponse(i) {
let a = i.body, o = i.headers.get("content-type") || "", s;
if (isIncomingMessage(a)) {
a.headers = { "content-type": o };
let i = await e$2(a);
"next" in i && (s = i);
} else {
let a = await e$1(i);
"next" in a && (s = a);
}
let c = {};
return s == null ? c : mapAsyncIterator(s, (i) => {
if (i.json) {
let a = i.body;
mergeIncrementalResult({
incrementalResult: a,
executionResult: c
});
}
return c;
});
}
var isLiveQueryOperationDefinitionNode = memoize1$1(function(i) {
return i.operation === "query" && i.directives?.some((i) => i.name.value === "live");
});
function prepareGETUrl({ baseUrl: i = "", body: a }) {
let o = "https://dummyhostname.com", s = i.startsWith("http") ? i : i?.startsWith("/") ? `${o}${i}` : `${o}/${i}`, c = new URL(s);
return a.query && c.searchParams.set("query", a.query), a.variables && Object.keys(a.variables).length > 0 && c.searchParams.set("variables", JSON.stringify(a.variables)), a.operationName && c.searchParams.set("operationName", a.operationName), a.extensions && c.searchParams.set("extensions", JSON.stringify(a.extensions)), c.toString().replace(o, "");
}
var inflightRequests = /* @__PURE__ */ new Map();
function buildHTTPExecutor(i) {
let a = i?.print ?? defaultPrintFn, o, s = (s, c) => {
if (s.context?.request?.cf || (o ||= new AbortController()), o?.signal.aborted) return createResultForAbort(o.signal.reason);
let d = s.extensions?.fetch ?? i?.fetch ?? import_global_ponyfill$1.fetch, f = s.extensions?.method || i?.method, g = getOperationASTFromRequest$2(s), b = g.operation;
(i?.useGETForQueries || s.extensions?.useGETForQueries) && b === "query" && (f = "GET");
let x = "application/graphql-response+json, application/json, multipart/mixed", S;
b === "subscription" || isLiveQueryOperationDefinitionNode(g) ? (f ||= "GET", x = "text/event-stream", S = new AbortController()) : f ||= "POST";
let C;
s.extensions?.endpoint && (typeof s.extensions.endpoint == "string" && (C = s.extensions.endpoint), typeof s.extensions.endpoint == "function" && (C = s.extensions.endpoint(s))), C || (typeof i?.endpoint == "string" && (C = i.endpoint), typeof i?.endpoint == "function" && (C = i.endpoint(s))), C ||= "/graphql";
let w = !1, E = { accept: x };
if (i?.headers && (w = !0, Object.assign(E, typeof i?.headers == "function" ? i.headers(s) : i?.headers)), s.extensions?.headers) {
w = !0;
let { headers: i,...a } = s.extensions;
Object.assign(E, i), s.extensions = a;
}
let O = [];
o?.signal && O.push(o.signal);
let A = s.signal || s.info?.signal;
if (A) {
if (A.aborted) return createResultForAbort(A.reason);
O.push(A);
}
if (i?.timeout) {
let a = typeof i.timeout == "number" ? i.timeout : i.timeout(s);
a && O.push(AbortSignal.timeout(a));
}
S && O.push(S.signal);
let M = O.length ? abortSignalAny(O) : void 0, F = { request: { method: f } }, I = a(s.document), R = function() {
return serializeExecutionRequest({
executionRequest: s,
excludeQuery: c,
printFn: a
});
};
i?.apq && (R = function() {
return handleMaybePromise(() => hashSHA256(I), (i) => {
let o = s.extensions || {};
return o.persistedQuery = {
version: 1,
sha256Hash: i
}, serializeExecutionRequest({
executionRequest: {
...s,
extensions: o
},
excludeQuery: c,
printFn: a
});
});
});
function V(i) {
return F.code = "SUBREQUEST_HTTP_ERROR", i.name === "AggregateError" ? { errors: i.errors.map((i) => coerceFetchError(i, {
signal: M,
endpoint: C,
upstreamErrorExtensions: F
})) } : { errors: [coerceFetchError(i, {
signal: M,
endpoint: C,
upstreamErrorExtensions: F
})] };
}
function rP(a, o, s) {
if (i?.deduplicateInflightRequests === !1 || b !== "query") return c();
function c() {
let c = handleMaybePromise(() => d(a.url, {
method: a.method,
headers: a.headers,
body: a.body,
credentials: a.credentials,
signal: a.signal
}, o, s), (a) => handleMaybePromise(() => {
if (F.response ||= {}, F.response.status = a.status, F.response.statusText = a.statusText, i?.exposeHTTPDetailsInExtensions ? F.response.headers = Object.fromEntries(a.headers.entries()) : Object.defineProperty(F.response, "headers", { get() {
return Object.fromEntries(a.headers.entries());
} }), i?.retry != null && !a.status.toString().startsWith("2")) throw Error(a.statusText || `Upstream HTTP Error: ${a.status}`);
let o = a.headers.get("content-type");
return o?.includes("text/event-stream") ? handleEventStreamResponse(a, S, M) : o?.includes("multipart/mixed") ? handleMultipartMixedResponse(a) : a.text();
}, (i) => {
if (typeof i == "string") if (F.response ||= {}, F.response.body = i, i) try {
let a = JSON.parse(i);
if (F.response.body = a, a.data == null && (a.errors == null || a.errors.length === 0)) {
let a = `Unexpected empty "data" and "errors" fields in result: ${i}`;
return F.code = "RESPONSE_VALIDATION_FAILED", { errors: [createGraphQLError$1(a, {
originalError: Error(a),
extensions: F
})] };
}
return Array.isArray(a.errors) ? {
...a,
errors: a.errors.map(({ message: i,...a }) => createGraphQLError$1(i, a))
} : a;
} catch (a) {
return F.code = "RESPONSE_VALIDATION_FAILED", { errors: [createGraphQLError$1(`Unexpected response: ${JSON.stringify(i)}`, {
extensions: F,
originalError: a
})] };
}
else {
let i = "No response returned";
return F.code = "RESPONSE_VALIDATION_FAILED", { errors: [createGraphQLError$1(i, {
extensions: F,
originalError: Error(i)
})] };
}
else return i;
}, V), V);
return i?.exposeHTTPDetailsInExtensions ? handleMaybePromise(() => c, (i) => (F.response?.body && (F.response.body = structuredClone(F.response.body)), i.extensions ||= {}, i.extensions = Object.assign(i.extensions, F), i)) : c;
}
if (typeof a.body == "object") return c();
let f = `${a.url}|${a.method}`;
a.body && (f += `|${a.body}`), w && (f += `|${JSON.stringify(a.headers)}`);
let g = inflightRequests.get(f);
return g || (g = c(), isPromise(g) && (inflightRequests.set(f, g), g.finally(() => {
inflightRequests.delete(f);
}))), handleMaybePromise(() => g, (i) => {
if (i == null || !i.data) return i;
let a = { ...i };
return i.data && (a.data = structuredClone(i.data)), a;
});
}
return handleMaybePromise(() => R(), (a) => {
switch (f) {
case "GET": {
let o = prepareGETUrl({
baseUrl: C,
body: a
}), c = {
url: o,
method: "GET",
headers: E,
signal: M,
credentials: i?.credentials
};
return F.request.url = o, rP(c, s.context, s.info);
}
case "POST": return F.request.body = a, handleMaybePromise(() => createFormDataFromVariables(a, {
File: i?.File,
FormData: i?.FormData
}), (a) => {
typeof a == "string" && !E["content-type"] && (F.request.body = a, E["content-type"] = "application/json");
let o = {
url: C,
method: "POST",
body: a,
headers: E,
credentials: i?.credentials,
signal: M
};
return rP(o, s.context, s.info);
}, V);
}
}, V);
}, c = s;
if (i?.apq != null && (c = function(i) {
return handleMaybePromise(() => s(i, !0), (a) => a.errors?.some((i) => i.extensions.code === "PERSISTED_QUERY_NOT_FOUND" || i.message === "PersistedQueryNotFound") ? s(i, !1) : a);
}), i?.retry != null) {
let a = c;
c = function(s) {
let c, d = 0;
function f() {
return o?.signal.aborted ? createResultForAbort(o.signal.reason) : (d++, d > i.retry ? c ?? { errors: [createGraphQLError$1("No response returned from fetch")] } : handleMaybePromise(() => a(s), (i) => (c = i, c?.errors?.length ? f() : c)));
}
return f();
};
}
return Object.defineProperties(c, {
[DisposableSymbols.dispose]: { get() {
return function() {
o?.abort(i?.getDisposeReason?.()), o = void 0;
};
} },
[DisposableSymbols.asyncDispose]: { get() {
return function() {
o?.abort(i?.getDisposeReason?.()), o = void 0;
};
} }
}), c;
}
function coerceFetchError(i, { signal: a, endpoint: o, upstreamErrorExtensions: s }) {
return typeof i == "string" ? createGraphQLError$1(i, { extensions: s }) : i.name === "GraphQLError" ? i : i.name === "TypeError" && i.message === "fetch failed" ? createGraphQLError$1(`fetch failed to ${o}`, {
extensions: s,
originalError: i
}) : i.name === "AbortError" ? createGraphQLErrorForAbort(a?.reason || i, s) : i.message ? createGraphQLError$1(i.message, {
extensions: s,
originalError: i
}) : createGraphQLError$1("Unknown error", {
extensions: s,
originalError: i
});
}
var LEGACY_WS;
(function(i) {
i.CONNECTION_INIT = "connection_init", i.CONNECTION_ACK = "connection_ack", i.CONNECTION_ERROR = "connection_error", i.CONNECTION_KEEP_ALIVE = "ka", i.START = "start", i.STOP = "stop", i.CONNECTION_TERMINATE = "connection_terminate", i.DATA = "data", i.ERROR = "error", i.COMPLETE = "complete";
})(LEGACY_WS ||= {});
function buildWSLegacyExecutor(i, a, o) {
let s = {}, c = null, d = (d = (i) => console.error(i)) => {
(c == null || c.readyState !== browser_default.OPEN) && (c = new a(i, "graphql-ws", {
followRedirects: !0,
headers: o?.headers,
rejectUnauthorized: !1,
skipUTF8Validation: !0
}), c.onopen = () => {
let i = {};
switch (typeof o?.connectionParams) {
case "function":
i = o?.connectionParams();
break;
case "object":
i = o?.connectionParams;
break;
}
i = Object.assign(i, s), c.send(JSON.stringify({
type: LEGACY_WS.CONNECTION_INIT,
payload: i
}), (i) => {
i && d(i);
});
}, c.onerror = (i) => {
d(i.error);
}, c.onclose = () => {
c = null;
});
}, f = () => {
c != null && (c.send(JSON.stringify({ type: LEGACY_WS.CONNECTION_TERMINATE })), c.terminate(), c = null);
}, g = function(i) {
i.extensions?.connectionParams && typeof i.extensions?.connectionParams == "object" && (s = Object.assign(s, i.extensions.connectionParams));
let a = Date.now().toString();
return observableToAsyncIterable({ subscribe(o) {
function s(i) {
o.error(i);
}
if (d(), c == null) throw Error("WebSocket connection is not found!");
return c.onmessage = (d) => {
let g = JSON.parse(d.data.toString("utf-8"));
switch (g.type) {
case LEGACY_WS.CONNECTION_ACK:
if (c == null) throw Error("WebSocket connection is not found!");
c.send(JSON.stringify({
type: LEGACY_WS.START,
id: a,
payload: {
query: print(i.document),
variables: i.variables,
operationName: i.operationName
}
}), (i) => {
i && s(i);
});
break;
case LEGACY_WS.CONNECTION_ERROR:
o.error(g.payload);
break;
case LEGACY_WS.CONNECTION_KEEP_ALIVE: break;
case LEGACY_WS.DATA:
o.next(g.payload);
break;
case LEGACY_WS.COMPLETE:
c?.send(JSON.stringify({ type: LEGACY_WS.CONNECTION_TERMINATE }), (i) => {
i && s(i);
}), o.complete(), f();
break;
}
}, { unsubscribe: () => {
c?.readyState === browser_default.OPEN && c?.send(JSON.stringify({
type: LEGACY_WS.STOP,
id: a
})), f();
} };
} });
};
return g[Symbol.dispose] = f, g;
}
var URL_REGEXP = /^(https?|wss?|file):\/\//;
function isUrl(i) {
if (typeof i != "string" || !URL_REGEXP.test(i)) return !1;
if (URL.canParse) return URL.canParse(i);
try {
return !!new URL(i);
} catch {
return !1;
}
}
function memoize1$2(i) {
let a = /* @__PURE__ */ new WeakMap();
return function(o) {
let s = a.get(o);
if (s === void 0) {
let s = i(o);
return a.set(o, s), s;
}
return s;
};
}
var MAX_LINE_LENGTH = 80, commentsRegistry = {};
function printComment(i) {
return "\n# " + i.replace(/\n/g, "\n# ");
}
function join(i, a) {
return i ? i.filter((i) => i).join(a || "") : "";
}
function hasMultilineItems(i) {
return i?.some((i) => i.includes("\n")) ?? !1;
}
function addDescription(i) {
return (a, o, s, c, d) => {
let f = [], g = c.reduce((i, a) => ([
"fields",
"arguments",
"values"
].includes(a) && i.name && f.push(i.name.value), i[a]), d[0]), b = [...f, g?.name?.value].filter(Boolean).join("."), x = [];
return a.kind.includes("Definition") && commentsRegistry[b] && x.push(...commentsRegistry[b]), join([
...x.map(printComment),
a.description,
i(a, o, s, c, d)
], "\n");
};
}
function indent$1(i) {
return i && ` ${i.replace(/\n/g, "\n ")}`;
}
function block(i) {
return i && i.length !== 0 ? `{\n${indent$1(join(i, "\n"))}\n}` : "";
}
function wrap(i, a, o) {
return a ? i + a + (o || "") : "";
}
function printBlockString(i, a = !1) {
let o = i.replace(/\\/g, "\\\\").replace(/"""/g, "\\\"\"\"");
return (i[0] === " " || i[0] === " ") && i.indexOf("\n") === -1 ? `"""${o.replace(/"$/, "\"\n")}"""` : `"""\n${a ? o : indent$1(o)}\n"""`;
}
var printDocASTReducer = {
Name: { leave: (i) => i.value },
Variable: { leave: (i) => "$" + i.name },
Document: { leave: (i) => join(i.definitions, "\n\n") },
OperationDefinition: { leave: (i) => {
let a = wrap("(", join(i.variableDefinitions, ", "), ")");
return join([
i.operation,
join([i.name, a]),
join(i.directives, " ")
], " ") + " " + i.selectionSet;
} },
VariableDefinition: { leave: ({ variable: i, type: a, defaultValue: o, directives: s }) => i + ": " + a + wrap(" = ", o) + wrap(" ", join(s, " ")) },
SelectionSet: { leave: ({ selections: i }) => block(i) },
Field: { leave({ alias: i, name: a, arguments: o, directives: s, selectionSet: c }) {
let d = wrap("", i, ": ") + a, f = d + wrap("(", join(o, ", "), ")");
return f.length > MAX_LINE_LENGTH && (f = d + wrap("(\n", indent$1(join(o, "\n")), "\n)")), join([
f,
join(s, " "),
c
], " ");
} },
Argument: { leave: ({ name: i, value: a }) => i + ": " + a },
FragmentSpread: { leave: ({ name: i, directives: a }) => "..." + i + wrap(" ", join(a, " ")) },
InlineFragment: { leave: ({ typeCondition: i, directives: a, selectionSet: o }) => join([
"...",
wrap("on ", i),
join(a, " "),
o
], " ") },
FragmentDefinition: { leave: ({ name: i, typeCondition: a, variableDefinitions: o, directives: s, selectionSet: c }) => `fragment ${i}${wrap("(", join(o, ", "), ")")} on ${a} ${wrap("", join(s, " "), " ")}` + c },
IntValue: { leave: ({ value: i }) => i },
FloatValue: { leave: ({ value: i }) => i },
StringValue: { leave: ({ value: i, block: a }) => a ? printBlockString(i) : JSON.stringify(i) },
BooleanValue: { leave: ({ value: i }) => i ? "true" : "false" },
NullValue: { leave: () => "null" },
EnumValue: { leave: ({ value: i }) => i },
ListValue: { leave: ({ values: i }) => "[" + join(i, ", ") + "]" },
ObjectValue: { leave: ({ fields: i }) => "{" + join(i, ", ") + "}" },
ObjectField: { leave: ({ name: i, value: a }) => i + ": " + a },
Directive: { leave: ({ name: i, arguments: a }) => "@" + i + wrap("(", join(a, ", "), ")") },
NamedType: { leave: ({ name: i }) => i },
ListType: { leave: ({ type: i }) => "[" + i + "]" },
NonNullType: { leave: ({ type: i }) => i + "!" },
SchemaDefinition: { leave: ({ directives: i, operationTypes: a }) => join([
"schema",
join(i, " "),
block(a)
], " ") },
OperationTypeDefinition: { leave: ({ operation: i, type: a }) => i + ": " + a },
ScalarTypeDefinition: { leave: ({ name: i, directives: a }) => join([
"scalar",
i,
join(a, " ")
], " ") },
ObjectTypeDefinition: { leave: ({ name: i, interfaces: a, directives: o, fields: s }) => join([
"type",
i,
wrap("implements ", join(a, " & ")),
join(o, " "),
block(s)
], " ") },
FieldDefinition: { leave: ({ name: i, arguments: a, type: o, directives: s }) => i + (hasMultilineItems(a) ? wrap("(\n", indent$1(join(a, "\n")), "\n)") : wrap("(", join(a, ", "), ")")) + ": " + o + wrap(" ", join(s, " ")) },
InputValueDefinition: { leave: ({ name: i, type: a, defaultValue: o, directives: s }) => join([
i + ": " + a,
wrap("= ", o),
join(s, " ")
], " ") },
InterfaceTypeDefinition: { leave: ({ name: i, interfaces: a, directives: o, fields: s }) => join([
"interface",
i,
wrap("implements ", join(a, " & ")),
join(o, " "),
block(s)
], " ") },
UnionTypeDefinition: { leave: ({ name: i, directives: a, types: o }) => join([
"union",
i,
join(a, " "),
wrap("= ", join(o, " | "))
], " ") },
EnumTypeDefinition: { leave: ({ name: i, directives: a, values: o }) => join([
"enum",
i,
join(a, " "),
block(o)
], " ") },
EnumValueDefinition: { leave: ({ name: i, directives: a }) => join([i, join(a, " ")], " ") },
InputObjectTypeDefinition: { leave: ({ name: i, directives: a, fields: o }) => join([
"input",
i,
join(a, " "),
block(o)
], " ") },
DirectiveDefinition: { leave: ({ name: i, arguments: a, repeatable: o, locations: s }) => "directive @" + i + (hasMultilineItems(a) ? wrap("(\n", indent$1(join(a, "\n")), "\n)") : wrap("(", join(a, ", "), ")")) + (o ? " repeatable" : "") + " on " + join(s, " | ") },
SchemaExtension: { leave: ({ directives: i, operationTypes: a }) => join([
"extend schema",
join(i, " "),
block(a)
], " ") },
ScalarTypeExtension: { leave: ({ name: i, directives: a }) => join([
"extend scalar",
i,
join(a, " ")
], " ") },
ObjectTypeExtension: { leave: ({ name: i, interfaces: a, directives: o, fields: s }) => join([
"extend type",
i,
wrap("implements ", join(a, " & ")),
join(o, " "),
block(s)
], " ") },
InterfaceTypeExtension: { leave: ({ name: i, interfaces: a, directives: o, fields: s }) => join([
"extend interface",
i,
wrap("implements ", join(a, " & ")),
join(o, " "),
block(s)
], " ") },
UnionTypeExtension: { leave: ({ name: i, directives: a, types: o }) => join([
"extend union",
i,
join(a, " "),
wrap("= ", join(o, " | "))
], " ") },
EnumTypeExtension: { leave: ({ name: i, directives: a, values: o }) => join([
"extend enum",
i,
join(a, " "),
block(o)
], " ") },
InputObjectTypeExtension: { leave: ({ name: i, directives: a, fields: o }) => join([
"extend input",
i,
join(a, " "),
block(o)
], " ") }
};
Object.keys(printDocASTReducer).reduce((i, a) => ({
...i,
[a]: { leave: addDescription(printDocASTReducer[a].leave) }
}), {});
function getLeadingCommentBlock(i) {
let a = i.loc;
if (!a) return;
let o = [], s = a.startToken.prev;
for (; s != null && s.kind === TokenKind.COMMENT && s.next != null && s.prev != null && s.line + 1 === s.next.line && s.line !== s.prev.line;) {
let i = String(s.value);
o.push(i), s = s.prev;
}
return o.length > 0 ? o.reverse().join("\n") : void 0;
}
function dedentBlockStringValue(i) {
let a = i.split(/\r\n|[\n\r]/g), o = getBlockStringIndentation(a);
if (o !== 0) for (let i = 1; i < a.length; i++) a[i] = a[i].slice(o);
for (; a.length > 0 && isBlank(a[0]);) a.shift();
for (; a.length > 0 && isBlank(a[a.length - 1]);) a.pop();
return a.join("\n");
}
function getBlockStringIndentation(i) {
let a = null;
for (let o = 1; o < i.length; o++) {
let s = i[o], c = leadingWhitespace(s);
if (c !== s.length && (a === null || c < a) && (a = c, a === 0)) break;
}
return a === null ? 0 : a;
}
function leadingWhitespace(i) {
let a = 0;
for (; a < i.length && (i[a] === " " || i[a] === " ");) a++;
return a;
}
function isBlank(i) {
return leadingWhitespace(i) === i.length;
}
function parseGraphQLSDL(i, a, o = {}) {
let s;
try {
o.commentDescriptions && a.includes("#") ? (s = transformCommentsToDescriptions(a, o), o.noLocation && (s = parse(print(s), o))) : s = parse(new Source(a, i), o);
} catch (i) {
if (i.message.includes("EOF") && a.replace(/(\#[^*]*)/g, "").trim() === "") s = {
kind: Kind.DOCUMENT,
definitions: []
};
else throw i;
}
return {
location: i,
document: s
};
}
function transformCommentsToDescriptions(i, a = {}) {
let o = parse(i, {
...a,
noLocation: !1
});
return visit(o, { leave: (i) => {
if (isDescribable(i)) {
let a = getLeadingCommentBlock(i);
if (a !== void 0) {
let o = dedentBlockStringValue("\n" + a), s = o.includes("\n");
return i.description ? {
...i,
description: {
...i.description,
value: i.description.value + "\n" + o,
block: !0
}
} : {
...i,
description: {
kind: Kind.STRING,
value: o,
block: s
}
};
}
}
} });
}
function isDescribable(i) {
return isTypeSystemDefinitionNode(i) || i.kind === Kind.FIELD_DEFINITION || i.kind === Kind.INPUT_VALUE_DEFINITION || i.kind === Kind.ENUM_VALUE_DEFINITION;
}
function getOperationASTFromDocument(i, a) {
let o = getOperationAST(i, a);
if (!o) throw Error(`Cannot infer operation ${a || ""}`);
return o;
}
const getOperationASTFromRequest = memoize1$2(function(i) {
return getOperationASTFromDocument(i.document, i.operationName);
}), asArray$1 = (i) => Array.isArray(i) ? i : i ? [i] : [];
var possibleGraphQLErrorProperties = [
"message",
"locations",
"path",
"nodes",
"source",
"positions",
"originalError",
"name",
"stack",
"extensions",
"coordinate"
];
function isGraphQLErrorLike(i) {
return typeof i == "object" && !!i && Object.keys(i).every((i) => possibleGraphQLErrorProperties.includes(i));
}
function createGraphQLError(i, a) {
a?.originalError && !(a.originalError instanceof Error) && isGraphQLErrorLike(a.originalError) && (a.originalError = createGraphQLError(a.originalError.message, a.originalError));
let o = GraphQLError, s = versionInfo.major >= 16 ? new o(i, a) : new o(i, a?.nodes, a?.source, a?.positions, a?.path, a?.originalError, a?.extensions);
return a?.coordinate && s.coordinate == null && Object.defineProperties(s, { coordinate: {
value: a.coordinate,
enumerable: !0,
configurable: !0
} }), s;
}
function locatedError$1(i, a, o, s) {
let c = locatedError(i, a, o);
if (!c.coordinate && s && c.coordinate == null) {
let i = `${s.parentType.name}.${s.fieldName}`;
Object.defineProperties(c, { coordinate: {
value: i,
enumerable: !0,
configurable: !0
} });
}
return c;
}
function isIterableObject(i) {
return typeof i == "object" && !!i && Symbol.iterator in i;
}
function isObjectLike(i) {
return typeof i == "object" && !!i;
}
function promiseReduce$1(i, a, o) {
let s = o;
for (let o of i) s = handleMaybePromise(() => s, (i) => a(i, o));
return s;
}
function hasOwnProperty$1(i, a) {
return Object.prototype.hasOwnProperty.call(i, a);
}
function getArgumentValues(i, a, o = {}) {
let s = {}, c = (a.arguments ?? []).reduce((i, a) => ({
...i,
[a.name.value]: a
}), {});
for (let { name: d, type: f, defaultValue: g } of i.args) {
let i = c[d];
if (!i) {
if (g !== void 0) s[d] = g;
else if (isNonNullType(f)) throw createGraphQLError(`Argument "${d}" of required type "${inspect(f)}" was not provided.`, { nodes: [a] });
continue;
}
let b = i.value, x = b.kind === Kind.NULL;
if (b.kind === Kind.VARIABLE) {
let i = b.name.value;
if (o == null || !hasOwnProperty$1(o, i)) {
if (g !== void 0) s[d] = g;
else if (isNonNullType(f)) throw createGraphQLError(`Argument "${d}" of required type "${inspect(f)}" was provided the variable "$${i}" which was not provided a runtime value.`, { nodes: [b] });
continue;
}
x = o[i] == null;
}
if (x && isNonNullType(f)) throw createGraphQLError(`Argument "${d}" of non-null type "${inspect(f)}" must not be null.`, { nodes: [b] });
let S = valueFromAST(b, f, o);
if (S === void 0) throw createGraphQLError(`Argument "${d}" has invalid value ${print(b)}.`, { nodes: [b] });
s[d] = S;
}
return s;
}
function memoize1(i) {
let a = /* @__PURE__ */ new WeakMap();
return function(o) {
let s = a.get(o);
if (s === void 0) {
let s = i(o);
return a.set(o, s), s;
}
return s;
};
}
function memoize3$1(i) {
let a = /* @__PURE__ */ new WeakMap();
return function(o, s, c) {
let d = a.get(o);
if (!d) {
d = /* @__PURE__ */ new WeakMap(), a.set(o, d);
let f = /* @__PURE__ */ new WeakMap();
d.set(s, f);
let g = i(o, s, c);
return f.set(c, g), g;
}
let f = d.get(s);
if (!f) {
f = /* @__PURE__ */ new WeakMap(), d.set(s, f);
let a = i(o, s, c);
return f.set(c, a), a;
}
let g = f.get(c);
if (g === void 0) {
let a = i(o, s, c);
return f.set(c, a), a;
}
return g;
};
}
function memoize5(i) {
let a = /* @__PURE__ */ new WeakMap();
return function(o, s, c, d, f) {
let g = a.get(o);
if (!g) {
g = /* @__PURE__ */ new WeakMap(), a.set(o, g);
let b = /* @__PURE__ */ new WeakMap();
g.set(s, b);
let x = /* @__PURE__ */ new WeakMap();
b.set(c, x);
let S = /* @__PURE__ */ new WeakMap();
x.set(d, S);
let C = i(o, s, c, d, f);
return S.set(f, C), C;
}
let b = g.get(s);
if (!b) {
b = /* @__PURE__ */ new WeakMap(), g.set(s, b);
let a = /* @__PURE__ */ new WeakMap();
b.set(c, a);
let x = /* @__PURE__ */ new WeakMap();
a.set(d, x);
let S = i(o, s, c, d, f);
return x.set(f, S), S;
}
let x = b.get(c);
if (!x) {
x = /* @__PURE__ */ new WeakMap(), b.set(c, x);
let a = /* @__PURE__ */ new WeakMap();
x.set(d, a);
let g = i(o, s, c, d, f);
return a.set(f, g), g;
}
let S = x.get(d);
if (!S) {
S = /* @__PURE__ */ new WeakMap(), x.set(d, S);
let a = i(o, s, c, d, f);
return S.set(f, a), a;
}
let C = S.get(f);
if (C === void 0) {
let a = i(o, s, c, d, f);
return S.set(f, a), a;
}
return C;
};
}
function getDefinedRootType$1(i, a, o) {
let s = getRootTypeMap(i).get(a);
if (s == null) throw createGraphQLError(`Schema is not configured to execute ${a} operation.`, { nodes: o });
return s;
}
const getRootTypeMap = memoize1(function(i) {
let a = /* @__PURE__ */ new Map(), o = i.getQueryType();
o && a.set("query", o);
let s = i.getMutationType();
s && a.set("mutation", s);
let c = i.getSubscriptionType();
return c && a.set("subscription", c), a;
});
var MapperKind;
(function(i) {
i.TYPE = "MapperKind.TYPE", i.SCALAR_TYPE = "MapperKind.SCALAR_TYPE", i.ENUM_TYPE = "MapperKind.ENUM_TYPE", i.COMPOSITE_TYPE = "MapperKind.COMPOSITE_TYPE", i.OBJECT_TYPE = "MapperKind.OBJECT_TYPE", i.INPUT_OBJECT_TYPE = "MapperKind.INPUT_OBJECT_TYPE", i.ABSTRACT_TYPE = "MapperKind.ABSTRACT_TYPE", i.UNION_TYPE = "MapperKind.UNION_TYPE", i.INTERFACE_TYPE = "MapperKind.INTERFACE_TYPE", i.ROOT_OBJECT = "MapperKind.ROOT_OBJECT", i.QUERY = "MapperKind.QUERY", i.MUTATION = "MapperKind.MUTATION", i.SUBSCRIPTION = "MapperKind.SUBSCRIPTION", i.DIRECTIVE = "MapperKind.DIRECTIVE", i.FIELD = "MapperKind.FIELD", i.COMPOSITE_FIELD = "MapperKind.COMPOSITE_FIELD", i.OBJECT_FIELD = "MapperKind.OBJECT_FIELD", i.ROOT_FIELD = "MapperKind.ROOT_FIELD", i.QUERY_ROOT_FIELD = "MapperKind.QUERY_ROOT_FIELD", i.MUTATION_ROOT_FIELD = "MapperKind.MUTATION_ROOT_FIELD", i.SUBSCRIPTION_ROOT_FIELD = "MapperKind.SUBSCRIPTION_ROOT_FIELD", i.INTERFACE_FIELD = "MapperKind.INTERFACE_FIELD", i.INPUT_OBJECT_FIELD = "MapperKind.INPUT_OBJECT_FIELD", i.ARGUMENT = "MapperKind.ARGUMENT", i.ENUM_VALUE = "MapperKind.ENUM_VALUE";
})(MapperKind ||= {});
function getObjectTypeFromTypeMap(i, a) {
if (a) {
let o = i[a.name];
if (isObjectType(o)) return o;
}
}
function isNamedStub(i) {
if ("getFields" in i) {
let a = i.getFields();
for (let i in a) return a[i].name === "_fake";
}
return !1;
}
function getBuiltInForStub(i) {
switch (i.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 i;
}
}
function rewireTypes(i, a) {
let o = Object.create(null);
for (let a in i) o[a] = i[a];
let s = Object.create(null);
for (let i in o) {
let a = o[i];
if (a == null || i.startsWith("__")) continue;
let c = a.name;
if (!c.startsWith("__")) {
if (s[c] != null) {
console.warn(`Duplicate schema type name ${c} found; keeping the existing one found in the schema`);
continue;
}
s[c] = a;
}
}
for (let i in s) s[i] = g(s[i]);
let c = a.map((i) => d(i));
return {
typeMap: s,
directives: c
};
function d(i) {
if (isSpecifiedDirective(i)) return i;
let a = i.toConfig();
return a.args = f(a.args), new GraphQLDirective(a);
}
function f(i) {
let a = {};
for (let o in i) {
let s = i[o], c = C(s.type);
c != null && (s.type = c, a[o] = s);
}
return a;
}
function g(i) {
if (isObjectType(i)) {
let a = i.toConfig(), o = {
...a,
fields: () => b(a.fields),
interfaces: () => S(a.interfaces)
};
return new GraphQLObjectType(o);
} else if (isInterfaceType(i)) {
let a = i.toConfig(), o = {
...a,
fields: () => b(a.fields)
};
return "interfaces" in o && (o.interfaces = () => S(a.interfaces)), new GraphQLInterfaceType(o);
} else if (isUnionType(i)) {
let a = i.toConfig(), o = {
...a,
types: () => S(a.types)
};
return new GraphQLUnionType(o);
} else if (isInputObjectType(i)) {
let a = i.toConfig(), o = {
...a,
fields: () => x(a.fields)
};
return new GraphQLInputObjectType(o);
} else if (isEnumType(i)) {
let a = i.toConfig();
return new GraphQLEnumType(a);
} else if (isScalarType(i)) {
if (isSpecifiedScalarType(i)) return i;
let a = i.toConfig();
return new GraphQLScalarType(a);
}
throw Error(`Unexpected schema type: ${i}`);
}
function b(i) {
let a = {};
for (let o in i) {
let s = i[o], c = C(s.type);
c != null && s.args && (s.type = c, s.args = f(s.args), a[o] = s);
}
return a;
}
function x(i) {
let a = {};
for (let o in i) {
let s = i[o], c = C(s.type);
c != null && (s.type = c, a[o] = s);
}
return a;
}
function S(i) {
let a = [];
for (let o of i) {
let i = C(o);
i != null && a.push(i);
}
return a;
}
function C(i) {
if (isListType(i)) {
let a = C(i.ofType);
return a == null ? null : new GraphQLList(a);
} else if (isNonNullType(i)) {
let a = C(i.ofType);
return a == null ? null : new GraphQLNonNull(a);
} else if (isNamedType(i)) {
let a = o[i.name];
return a === void 0 && (a = isNamedStub(i) ? getBuiltInForStub(i) : g(i), s[a.name] = o[i.name] = a), a == null ? null : s[a.name];
}
return null;
}
}
function transformInputValue(i, a, o = null, s = null) {
if (a == null) return a;
let c = getNullableType(i);
if (isLeafType(c)) return o == null ? a : o(c, a);
if (isListType(c)) return asArray$1(a).map((i) => transformInputValue(c.ofType, i, o, s));
if (isInputObjectType(c)) {
let i = c.getFields(), d = {};
for (let c in a) {
let f = i[c];
f != null && (d[c] = transformInputValue(f.type, a[c], o, s));
}
return s == null ? d : s(c, d);
}
}
function serializeInputValue(i, a) {
return transformInputValue(i, a, (i, a) => {
try {
return i.serialize(a);
} catch {
return a;
}
});
}
function parseInputValue(i, a) {
return transformInputValue(i, a, (i, a) => {
try {
return i.parseValue(a);
} catch {
return a;
}
});
}
function mapSchema(i, a = {}) {
let o = mapArguments(mapFields(mapTypes(mapDefaultValues(mapEnumValues(mapTypes(mapDefaultValues(i.getTypeMap(), i, serializeInputValue), i, a, (i) => isLeafType(i)), i, a), i, parseInputValue), i, a, (i) => !isLeafType(i)), i, a), i, a), s = i.getDirectives(), c = mapDirectives(s, i, a), { typeMap: d, directives: f } = rewireTypes(o, c);
return new GraphQLSchema({
...i.toConfig(),
query: getObjectTypeFromTypeMap(d, getObjectTypeFromTypeMap(o, i.getQueryType())),
mutation: getObjectTypeFromTypeMap(d, getObjectTypeFromTypeMap(o, i.getMutationType())),
subscription: getObjectTypeFromTypeMap(d, getObjectTypeFromTypeMap(o, i.getSubscriptionType())),
types: Object.values(d),
directives: f
});
}
var builtinTypes = [
"String",
"ID",
"Int",
"Float",
"Boolean"
];
function mapTypes(i, a, o, s = () => !0) {
let c = {};
for (let d in i) if (!d.startsWith("__") && !builtinTypes.includes(d)) {
let f = i[d];
if (f == null || !s(f)) {
c[d] = f;
continue;
}
let g = getTypeMapper(a, o, d);
if (g == null) {
c[d] = f;
continue;
}
let b = g(f, a);
if (b === void 0) {
c[d] = f;
continue;
}
c[d] = b;
}
return c;
}
function mapEnumValues(i, a, o) {
let s = getEnumValueMapper(o);
return s ? mapTypes(i, a, { [MapperKind.ENUM_TYPE]: (i) => {
let o = i.toConfig(), c = o.values, d = {};
for (let o in c) {
let f = c[o], g = s(f, i.name, a, o);
if (g === void 0) d[o] = f;
else if (Array.isArray(g)) {
let [i, a] = g;
d[i] = a === void 0 ? f : a;
} else g !== null && (d[o] = g);
}
return correctASTNodes(new GraphQLEnumType({
...o,
values: d
}));
} }, (i) => isEnumType(i)) : i;
}
function mapDefaultValues(i, a, o) {
let s = mapArguments(i, a, { [MapperKind.ARGUMENT]: (a) => {
if (a.defaultValue === void 0) return a;
let s = getNewType(i, a.type);
if (s != null) return {
...a,
defaultValue: o(s, a.defaultValue)
};
} });
return mapFields(s, a, { [MapperKind.INPUT_OBJECT_FIELD]: (i) => {
if (i.defaultValue === void 0) return i;
let a = getNewType(s, i.type);
if (a != null) return {
...i,
defaultValue: o(a, i.defaultValue)
};
} });
}
function getNewType(i, a) {
if (isListType(a)) {
let o = getNewType(i, a.ofType);
return o == null ? null : new GraphQLList(o);
} else if (isNonNullType(a)) {
let o = getNewType(i, a.ofType);
return o == null ? null : new GraphQLNonNull(o);
} else if (isNamedType(a)) return i[a.name] ?? null;
return null;
}
function mapFields(i, a, o) {
let s = {};
for (let c in i) if (!c.startsWith("__")) {
let d = i[c];
if (!isObjectType(d) && !isInterfaceType(d) && !isInputObjectType(d)) {
s[c] = d;
continue;
}
let f = getFieldMapper(a, o, c);
if (f == null) {
s[c] = d;
continue;
}
let g = d.toConfig(), b = g.fields, x = {};
for (let i in b) {
let o = b[i], s = f(o, i, c, a);
if (s === void 0) x[i] = o;
else if (Array.isArray(s)) {
let [i, a] = s;
a.astNode != null && (a.astNode = {
...a.astNode,
name: {
...a.astNode.name,
value: i
}
}), x[i] = a === void 0 ? o : a;
} else s !== null && (x[i] = s);
}
isObjectType(d) ? s[c] = correctASTNodes(new GraphQLObjectType({
...g,
fields: x
})) : isInterfaceType(d) ? s[c] = correctASTNodes(new GraphQLInterfaceType({
...g,
fields: x
})) : s[c] = correctASTNodes(new GraphQLInputObjectType({
...g,
fields: x
}));
}
return s;
}
function mapArguments(i, a, o) {
let s = {};
for (let c in i) if (!c.startsWith("__")) {
let d = i[c];
if (!isObjectType(d) && !isInterfaceType(d)) {
s[c] = d;
continue;
}
let f = getArgumentMapper(o);
if (f == null) {
s[c] = d;
continue;
}
let g = d.toConfig(), b = g.fields, x = {};
for (let i in b) {
let o = b[i], s = o.args;
if (s == null) {
x[i] = o;
continue;
}
let d = Object.keys(s);
if (!d.length) {
x[i] = o;
continue;
}
let g = {};
for (let o of d) {
let d = s[o], b = f(d, i, c, a);
if (b === void 0) g[o] = d;
else if (Array.isArray(b)) {
let [i, a] = b;
g[i] = a;
} else b !== null && (g[o] = b);
}
x[i] = {
...o,
args: g
};
}
isObjectType(d) ? s[c] = new GraphQLObjectType({
...g,
fields: x
}) : isInterfaceType(d) ? s[c] = new GraphQLInterfaceType({
...g,
fields: x
}) : s[c] = new GraphQLInputObjectType({
...g,
fields: x
});
}
return s;
}
function mapDirectives(i, a, o) {
let s = getDirectiveMapper(o);
if (s == null) return i.slice();
let c = [];
for (let o of i) {
let i = s(o, a);
i === void 0 ? c.push(o) : i !== null && c.push(i);
}
return c;
}
function getTypeSpecifiers(i, a) {
let o = i.getType(a), s = [MapperKind.TYPE];
return isObjectType(o) ? (s.push(MapperKind.COMPOSITE_TYPE, MapperKind.OBJECT_TYPE), a === i.getQueryType()?.name ? s.push(MapperKind.ROOT_OBJECT, MapperKind.QUERY) : a === i.getMutationType()?.name ? s.push(MapperKind.ROOT_OBJECT, MapperKind.MUTATION) : a === i.getSubscriptionType()?.name && s.push(MapperKind.ROOT_OBJECT, MapperKind.SUBSCRIPTION)) : isInputObjectType(o) ? s.push(MapperKind.INPUT_OBJECT_TYPE) : isInterfaceType(o) ? s.push(MapperKind.COMPOSITE_TYPE, MapperKind.ABSTRACT_TYPE, MapperKind.INTERFACE_TYPE) : isUnionType(o) ? s.push(MapperKind.COMPOSITE_TYPE, MapperKind.ABSTRACT_TYPE, MapperKind.UNION_TYPE) : isEnumType(o) ? s.push(MapperKind.ENUM_TYPE) : isScalarType(o) && s.push(MapperKind.SCALAR_TYPE), s;
}
function getTypeMapper(i, a, o) {
let s = getTypeSpecifiers(i, o), c, d = [...s];
for (; !c && d.length > 0;) {
let i = d.pop();
c = a[i];
}
return c ?? null;
}
function getFieldSpecifiers(i, a) {
let o = i.getType(a), s = [MapperKind.FIELD];
return isObjectType(o) ? (s.push(MapperKind.COMPOSITE_FIELD, MapperKind.OBJECT_FIELD), a === i.getQueryType()?.name ? s.push(MapperKind.ROOT_FIELD, MapperKind.QUERY_ROOT_FIELD) : a === i.getMutationType()?.name ? s.push(MapperKind.ROOT_FIELD, MapperKind.MUTATION_ROOT_FIELD) : a === i.getSubscriptionType()?.name && s.push(MapperKind.ROOT_FIELD, MapperKind.SUBSCRIPTION_ROOT_FIELD)) : isInterfaceType(o) ? s.push(MapperKind.COMPOSITE_FIELD, MapperKind.INTERFACE_FIELD) : isInputObjectType(o) && s.push(MapperKind.INPUT_OBJECT_FIELD), s;
}
function getFieldMapper(i, a, o) {
let s = getFieldSpecifiers(i, o), c, d = [...s];
for (; !c && d.length > 0;) {
let i = d.pop();
c = a[i];
}
return c ?? null;
}
function getArgumentMapper(i) {
return i[MapperKind.ARGUMENT] ?? null;
}
function getDirectiveMapper(i) {
return i[MapperKind.DIRECTIVE] ?? null;
}
function getEnumValueMapper(i) {
return i[MapperKind.ENUM_VALUE] ?? null;
}
function correctASTNodes(i) {
if (isObjectType(i)) {
let a = i.toConfig();
if (a.astNode != null) {
let i = [];
for (let o in a.fields) {
let s = a.fields[o];
s.astNode != null && i.push(s.astNode);
}
a.astNode = {
...a.astNode,
kind: Kind.OBJECT_TYPE_DEFINITION,
fields: i
};
}
return a.extensionASTNodes != null && (a.extensionASTNodes = a.extensionASTNodes.map((i) => ({
...i,
kind: Kind.OBJECT_TYPE_EXTENSION,
fields: void 0
}))), new GraphQLObjectType(a);
} else if (isInterfaceType(i)) {
let a = i.toConfig();
if (a.astNode != null) {
let i = [];
for (let o in a.fields) {
let s = a.fields[o];
s.astNode != null && i.push(s.astNode);
}
a.astNode = {
...a.astNode,
kind: Kind.INTERFACE_TYPE_DEFINITION,
fields: i
};
}
return a.extensionASTNodes != null && (a.extensionASTNodes = a.extensionASTNodes.map((i) => ({
...i,
kind: Kind.INTERFACE_TYPE_EXTENSION,
fields: void 0
}))), new GraphQLInterfaceType(a);
} else if (isInputObjectType(i)) {
let a = i.toConfig();
if (a.astNode != null) {
let i = [];
for (let o in a.fields) {
let s = a.fields[o];
s.astNode != null && i.push(s.astNode);
}
a.astNode = {
...a.astNode,
kind: Kind.INPUT_OBJECT_TYPE_DEFINITION,
fields: i
};
}
return a.extensionASTNodes != null && (a.extensionASTNodes = a.extensionASTNodes.map((i) => ({
...i,
kind: Kind.INPUT_OBJECT_TYPE_EXTENSION,
fields: void 0
}))), new GraphQLInputObjectType(a);
} else if (isEnumType(i)) {
let a = i.toConfig();
if (a.astNode != null) {
let i = [];
for (let o in a.values) {
let s = a.values[o];
s.astNode != null && i.push(s.astNode);
}
a.astNode = {
...a.astNode,
values: i
};
}
return a.extensionASTNodes != null && (a.extensionASTNodes = a.extensionASTNodes.map((i) => ({
...i,
values: void 0
}))), new GraphQLEnumType(a);
} else return i;
}
function getResponseKeyFromInfo(i) {
return i.fieldNodes[0].alias == null ? i.fieldName : i.fieldNodes[0].alias.value;
}
var AccumulatorMap = class extends Map {
get [Symbol.toStringTag]() {
return "AccumulatorMap";
}
add(i, a) {
let o = this.get(i);
o === void 0 ? this.set(i, [a]) : o.push(a);
}
};
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(i, a, o, s, c, d, f, g) {
for (let b of c.selections) switch (b.kind) {
case Kind.FIELD:
if (!shouldIncludeNode(o, b)) continue;
d.add(getFieldEntryKey(b), b);
break;
case Kind.INLINE_FRAGMENT: {
if (!shouldIncludeNode(o, b) || !doesFragmentConditionMatch(i, b, s)) continue;
let c = getDeferValues(o, b);
if (c) {
let d = new AccumulatorMap();
collectFieldsImpl(i, a, o, s, b.selectionSet, d, f, g), f.push({
label: c.label,
fields: d
});
} else collectFieldsImpl(i, a, o, s, b.selectionSet, d, f, g);
break;
}
case Kind.FRAGMENT_SPREAD: {
let c = b.name.value;
if (!shouldIncludeNode(o, b)) continue;
let x = getDeferValues(o, b);
if (g.has(c) && !x) continue;
let S = a[c];
if (!S || !doesFragmentConditionMatch(i, S, s)) continue;
if (x || g.add(c), x) {
let c = new AccumulatorMap();
collectFieldsImpl(i, a, o, s, S.selectionSet, c, f, g), f.push({
label: x.label,
fields: c
});
} else collectFieldsImpl(i, a, o, s, S.selectionSet, d, f, g);
break;
}
}
}
function collectFields$1(i, a, o, s, c) {
let d = new AccumulatorMap(), f = [];
return collectFieldsImpl(i, a, o, s, c, d, f, /* @__PURE__ */ new Set()), {
fields: d,
patches: f
};
}
function shouldIncludeNode(i, a) {
return !(getDirectiveValues(GraphQLSkipDirective, a, i)?.if === !0 || getDirectiveValues(GraphQLIncludeDirective, a, i)?.if === !1);
}
function doesFragmentConditionMatch(i, a, o) {
let s = a.typeCondition;
if (!s) return !0;
let c = typeFromAST(i, s);
return c === o ? !0 : isAbstractType(c) ? i.getPossibleTypes(c).includes(o) : !1;
}
function getFieldEntryKey(i) {
return i.alias ? i.alias.value : i.name.value;
}
function getDeferValues(i, a) {
let o = getDirectiveValues(GraphQLDeferDirective, a, i);
if (o && o.if !== !1) return { label: typeof o.label == "string" ? o.label : void 0 };
}
const collectSubFields = memoize5(function(i, a, o, s, c) {
let d = new AccumulatorMap(), f = /* @__PURE__ */ new Set(), g = [], b = {
fields: d,
patches: g
};
for (let b of c) b.selectionSet && collectFieldsImpl(i, a, o, s, b.selectionSet, d, g, f);
return b;
});
function isAsyncIterable$1(i) {
return i?.[Symbol.asyncIterator] != null;
}
function addPath(i, a, o) {
return {
prev: i,
key: a,
typename: o
};
}
function pathToArray$2(i) {
let a = [], o = i;
for (; o;) a.push(o.key), o = o.prev;
return a.reverse();
}
function printPathArray(i) {
return i.map((i) => typeof i == "number" ? "[" + i.toString() + "]" : "." + i).join("");
}
function coerceError(i) {
if (i instanceof Error) return i;
if (typeof i == "object" && i && "message" in i && typeof i.message == "string") {
let a;
"cause" in i && (a = { cause: i.cause });
let o = Error(i.message, a);
return "stack" in i && typeof i.stack == "string" && (o.stack = i.stack), "name" in i && typeof i.name == "string" && (o.name = i.name), o;
}
return Error(String(i));
}
function flattenAsyncIterable(i) {
let a = i[Symbol.asyncIterator](), o, s, c = !1;
async function d() {
if (c) return {
value: void 0,
done: !0
};
try {
if (!o) {
if (s) return await s, await d();
let i;
s = new Promise((a) => {
i = a;
});
let f = await a.next();
return f.done ? (c = !0, await d()) : (o = f.value[Symbol.asyncIterator](), s = void 0, i(), await d());
}
let i = o, f = await o.next();
return f.done ? (o === i && (o = void 0), await d()) : f;
} catch (i) {
throw c = !0, i;
}
}
return {
next: d,
async return() {
return c = !0, await Promise.all([o?.return?.(), a.return?.()]), {
value: void 0,
done: !0
};
},
async throw(i) {
/* c8 ignore next */
throw c = !0, await Promise.all([o?.throw?.(i), a.throw?.(i)]), i;
},
[Symbol.asyncIterator]() {
return this;
},
async [DisposableSymbols.asyncDispose]() {
c = !0, await Promise.all([o?.[DisposableSymbols.asyncDispose]?.(), a?.[DisposableSymbols.asyncDispose]?.()]);
}
};
}
function invariant(i, a) {
if (!i) throw Error(a ?? "Unexpected invariant triggered.");
}
function promiseForObject(i, a, o) {
a?.throwIfAborted();
let s = Object.create(null), c = [];
for (let a in i) {
let o = handleMaybePromise(() => i[a], (i) => {
s[a] = i;
});
isPromise(o) && c.push(o);
}
if (!c.length) return s;
let d = c.length === 1 ? c[0] : Promise.all(c);
return o ? Promise.race([o, d]).then(() => s) : d.then(() => s);
}
function getVariableValues(i, a, o, s) {
let c = [], d = s?.maxErrors;
try {
let s = coerceVariableValues(i, a, o, (i) => {
if (d != null && c.length >= d) throw createGraphQLError("Too many errors processing variables, error limit reached. Execution aborted.");
c.push(i);
});
if (c.length === 0) return { coerced: s };
} catch (i) {
c.push(i);
}
return { errors: c };
}
function coerceVariableValues(i, a, o, s) {
let c = {};
for (let d of a) {
let a = d.variable.name.value, f = typeFromAST(i, d.type);
if (!isInputType(f)) {
let i = print(d.type);
s(createGraphQLError(`Variable "$${a}" expected value of type "${i}" which cannot be used as an input type.`, { nodes: d.type }));
continue;
}
if (!hasOwnProperty$1(o, a)) {
if (d.defaultValue) c[a] = valueFromAST(d.defaultValue, f);
else if (isNonNullType(f)) {
let i = inspect(f);
s(createGraphQLError(`Variable "$${a}" of required type "${i}" was not provided.`, { nodes: d }));
}
continue;
}
let g = o[a];
if (g === null && isNonNullType(f)) {
let i = inspect(f);
s(createGraphQLError(`Variable "$${a}" of non-null type "${i}" must not be null.`, { nodes: d }));
continue;
}
c[a] = coerceInputValue(g, f, (i, o, c) => {
let f = `Variable "$${a}" got invalid value ` + inspect(o);
i.length > 0 && (f += ` at "${a}${printPathArray(i)}"`), s(createGraphQLError(f + "; " + c.message, {
nodes: d,
originalError: c
}));
});
}
return c;
}
var collectSubfields = memoize3$1((i, a, o) => collectSubFields(i.schema, i.fragments, i.variableValues, a, o));
function execute(i) {
let a = buildExecutionContext(i);
return "schema" in a ? executeImpl(a) : { errors: a.map((i) => (Object.defineProperty(i, "extensions", { value: {
...i.extensions,
http: {
...i.extensions?.http || {},
status: 400
}
} }), i)) };
}
function executeImpl(i) {
return i.signal?.throwIfAborted(), handleMaybePromise(() => executeOperation(i), (a) => {
let o = buildResponse(a, i.errors);
return i.subsequentPayloads.size > 0 ? {
initialResult: {
...o,
hasNext: !0
},
subsequentResults: yieldSubsequentPayloads(i)
} : o;
}, (a) => (i.signal?.throwIfAborted(), a.errors ? i.errors.push(...a.errors) : i.errors.push(a), buildResponse(null, i.errors)));
}
function buildResponse(i, a) {
return a.length === 0 ? { data: i } : {
errors: a,
data: i
};
}
const getFragmentsFromDocument = memoize1(function(i) {
let a = Object.create(null);
for (let o of i.definitions) o.kind === Kind.FRAGMENT_DEFINITION && (a[o.name.value] = o);
return a;
});
function buildExecutionContext(i) {
let { schema: a, document: o, rootValue: s, contextValue: c, variableValues: d, operationName: f, fieldResolver: g, typeResolver: b, subscribeFieldResolver: x, signal: S, schemaCoordinateInErrors: C } = i;
S?.throwIfAborted(), assertValidSchema(a);
let w = getFragmentsFromDocument(o), E;
for (let i of o.definitions) switch (i.kind) {
case Kind.OPERATION_DEFINITION:
if (f == null) {
if (E !== void 0) return [createGraphQLError("Must provide operation name if query contains multiple operations.", { extensions: { code: "OPERATION_RESOLUTION_FAILURE" } })];
E = i;
} else i.name?.value === f && (E = i);
break;
default:
}
if (E == null) return f == null ? [createGraphQLError("Must provide an operation.", { extensions: { code: "OPERATION_RESOLUTION_FAILURE" } })] : [createGraphQLError(`Unknown operation named "${f}".`, { extensions: { code: "OPERATION_RESOLUTION_FAILURE" } })];
/* c8 ignore next */
let O = E.variableDefinitions ?? [], A = getVariableValues(a, O, d ?? {}, { maxErrors: 50 });
if (A.errors) return A.errors;
S?.throwIfAborted();
let M, F;
if (S) {
let i = /* @__PURE__ */ new Set(), a = createDeferredPromise();
F = a.promise;
let o = () => {
a.reject(S.reason), S.removeEventListener("abort", o);
};
S.addEventListener("abort", o, { once: !0 }), F.catch(() => {
for (let a of i) a();
i.clear();
}), M = (a) => {
i.add(a);
};
}
return {
schema: a,
fragments: w,
rootValue: s,
contextValue: c,
operation: E,
variableValues: A.coerced,
fieldResolver: g ?? defaultFieldResolver$1,
typeResolver: b ?? defaultTypeResolver,
subscribeFieldResolver: x ?? defaultFieldResolver$1,
subsequentPayloads: /* @__PURE__ */ new Set(),
errors: [],
signal: S,
onSignalAbort: M,
signalPromise: F,
schemaCoordinateInErrors: C
};
}
function buildPerEventExecutionContext(i, a) {
return {
...i,
rootValue: a,
subsequentPayloads: /* @__PURE__ */ new Set(),
errors: []
};
}
function executeOperation(i) {
let { operation: a, schema: o, fragments: s, variableValues: c, rootValue: d } = i, f = getDefinedRootType$1(o, a.operation, [a]);
f ?? createGraphQLError(`Schema is not configured to execute ${a.operation} operation.`, { nodes: a });
let { fields: g, patches: b } = collectFields$1(o, s, c, f, a.selectionSet), x;
x = a.operation === "mutation" ? executeFieldsSerially(i, f, d, void 0, g) : executeFields(i, f, d, void 0, g);
for (let a of b) {
let { label: o, fields: s } = a;
executeDeferredFragment(i, f, d, s, o, void 0);
}
return x;
}
function executeFieldsSerially(i, a, o, s, c) {
return promiseReduce$1(c, (c, [d, f]) => {
let g = addPath(s, d, a.name);
return i.signal?.throwIfAborted(), handleMaybePromise(() => executeField(i, a, o, f, g), (i) => (i === void 0 || (c[d] = i), c));
}, Object.create(null));
}
function executeFields(i, a, o, s, c, d) {
let f = Object.create(null), g = !1;
try {
for (let [b, x] of c) {
i.signal?.throwIfAborted();
let c = addPath(s, b, a.name), S = executeField(i, a, o, x, c, d);
S !== void 0 && (f[b] = S, isPromise(S) && (g = !0));
}
} catch (a) {
if (a !== i.signal?.reason && g) return handleMaybePromise(() => promiseForObject(f, i.signal), () => {
throw a;
}, () => {
throw a;
});
throw a;
}
return g ? promiseForObject(f, i.signal, i.signalPromise) : f;
}
function executeField(i, a, o, s, c, d) {
let f = d?.errors ?? i.errors, g = getFieldDef(i.schema, a, s[0]);
if (!g) return;
let b = g.type, x = g.resolve ?? i.fieldResolver, S = buildResolveInfo(i, g, s, a, c);
try {
i.signal?.throwIfAborted();
let a = getArgumentValues(g, s[0], i.variableValues), C = i.contextValue, w = x(o, a, C, S), E;
return E = isPromise(w) ? w.then((a) => completeValue(i, b, s, S, c, a, d)) : completeValue(i, b, s, S, c, w, d), isPromise(E) ? E.then(void 0, (a) => {
if (a instanceof AggregateError) {
let o;
for (let g of a.errors) {
g = coerceError(g);
let a = locatedError$1(g, s, pathToArray$2(c), i.schemaCoordinateInErrors && S);
o = handleFieldError(a, b, f), filterSubsequentPayloads(i, c, d);
}
return o;
}
a = coerceError(a);
let o = locatedError$1(a, s, pathToArray$2(c), i.schemaCoordinateInErrors && S), g = handleFieldError(o, b, f);
return filterSubsequentPayloads(i, c, d), g;
}) : E;
} catch (a) {
if (a instanceof AggregateError) {
let o;
for (let g of a.errors) {
g = coerceError(g);
let a = locatedError$1(g, s, pathToArray$2(c), i.schemaCoordinateInErrors && S);
o = handleFieldError(a, b, f), filterSubsequentPayloads(i, c, d);
}
return o;
}
let o = coerceError(a), g = locatedError$1(o, s, pathToArray$2(c), i.schemaCoordinateInErrors && S), x = handleFieldError(g, b, f);
return filterSubsequentPayloads(i, c, d), x;
}
}
function buildResolveInfo(i, a, o, s, c) {
return {
fieldName: a.name,
fieldNodes: o,
returnType: a.type,
parentType: s,
path: c,
schema: i.schema,
fragments: i.fragments,
rootValue: i.rootValue,
operation: i.operation,
variableValues: i.variableValues,
signal: i.signal
};
}
function handleFieldError(i, a, o) {
if (isNonNullType(a) || i.extensions?.CRITICAL_ERROR) throw i;
return o.push(i), null;
}
function completeValue(i, a, o, s, c, d, f) {
if (d instanceof Error) throw d;
if (isNonNullType(a)) {
let g = completeValue(i, a.ofType, o, s, c, d, f);
if (g === null) throw Error(`Cannot return null for non-nullable field ${s.parentType.name}.${s.fieldName}.`);
return g;
}
if (d == null) return null;
if (isListType(a)) return completeListValue(i, a, o, s, c, d, f);
if (isLeafType(a)) return completeLeafValue(a, d);
if (isAbstractType(a)) return completeAbstractValue(i, a, o, s, c, d, f);
if (isObjectType(a)) return completeObjectValue(i, a, o, s, c, d, f);
/* c8 ignore next 6 */
console.assert(!1, "Cannot complete value of unexpected output type: " + inspect(a));
}
function getStreamValues(i, a, o) {
if (typeof o.key == "number") return;
let s = getDirectiveValues(GraphQLStreamDirective, a[0], i.variableValues);
if (s && s.if !== !1) return invariant(typeof s.initialCount == "number", "initialCount must be a number"), invariant(s.initialCount >= 0, "initialCount must be a positive integer"), {
initialCount: s.initialCount,
label: typeof s.label == "string" ? s.label : void 0
};
}
async function completeAsyncIteratorValue(i, a, o, s, c, d, f) {
i.signal?.throwIfAborted(), d.return && i.onSignalAbort?.(() => {
d.return?.();
});
let g = f?.errors ?? i.errors, b = getStreamValues(i, o, c), x = !1, S = [], C = 0;
for (;;) {
if (b && typeof b.initialCount == "number" && C >= b.initialCount) {
executeStreamIterator(C, d, i, o, s, a, c, b.label, f);
break;
}
let w = addPath(c, C, void 0), E;
try {
if (E = await d.next(), E.done) break;
} catch (c) {
let d = coerceError(c), f = locatedError$1(d, o, pathToArray$2(w), i.schemaCoordinateInErrors && s);
S.push(handleFieldError(f, a, g));
break;
}
completeListItemValue(E.value, S, g, i, a, o, s, w, f) && (x = !0), C += 1;
}
return x ? Promise.all(S) : S;
}
function completeListValue(i, a, o, s, c, d, f) {
let g = a.ofType, b = f?.errors ?? i.errors;
if (isAsyncIterable$1(d)) {
let a = d[Symbol.asyncIterator]();
return completeAsyncIteratorValue(i, g, o, s, c, a, f);
}
if (!isIterableObject(d)) throw createGraphQLError(`Expected Iterable, but did not find one for field "${s.parentType.name}.${s.fieldName}".`);
let x = getStreamValues(i, o, c), S = !1, C = f, w = [], E = 0;
for (let a of d) {
let d = addPath(c, E, void 0);
if (x && typeof x.initialCount == "number" && E >= x.initialCount) {
C = executeStreamField(c, d, a, i, o, s, g, x.label, C), E++;
continue;
}
completeListItemValue(a, w, b, i, g, o, s, d, f) && (S = !0), E++;
}
return S ? Promise.all(w) : w;
}
function completeListItemValue(i, a, o, s, c, d, f, g, b) {
try {
let x;
if (x = isPromise(i) ? i.then((i) => completeValue(s, c, d, f, g, i, b)) : completeValue(s, c, d, f, g, i, b), isPromise(x)) return a.push(x.then(void 0, (i) => {
i = coerceError(i);
let a = locatedError$1(i, d, pathToArray$2(g), s.schemaCoordinateInErrors && f), x = handleFieldError(a, c, o);
return filterSubsequentPayloads(s, g, b), x;
})), !0;
a.push(x);
} catch (i) {
let x = coerceError(i), S = locatedError$1(x, d, pathToArray$2(g), s.schemaCoordinateInErrors && f), C = handleFieldError(S, c, o);
filterSubsequentPayloads(s, g, b), a.push(C);
}
return !1;
}
function completeLeafValue(i, a) {
let o;
try {
o = i.serialize(a);
} catch (i) {
throw i instanceof GraphQLError ? Error(i.message) : i;
}
if (o == null) throw Error(`Expected \`${inspect(i)}.serialize(${inspect(a)})\` to return non-nullable value, returned: ${inspect(o)}`);
return o;
}
function completeAbstractValue(i, a, o, s, c, d, f) {
let g = a.resolveType ?? i.typeResolver, b = i.contextValue, x = g(d, b, s, a);
return isPromise(x) ? x.then((g) => completeObjectValue(i, ensureValidRuntimeType(g, i, a, o, s, d), o, s, c, d, f)) : completeObjectValue(i, ensureValidRuntimeType(x, i, a, o, s, d), o, s, c, d, f);
}
function ensureValidRuntimeType(i, a, o, s, c, d) {
if (i == null) throw createGraphQLError(`Abstract type "${o.name}" must resolve to an Object type at runtime for field "${c.parentType.name}.${c.fieldName}". Either the "${o.name}" type should provide a "resolveType" function or each possible type should provide an "isTypeOf" function.`, { nodes: s });
if (isObjectType(i)) {
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.");
i = i.name;
}
if (typeof i != "string") throw createGraphQLError(`Abstract type "${o.name}" must resolve to an Object type at runtime for field "${c.parentType.name}.${c.fieldName}" with value ${inspect(d)}, received "${inspect(i)}".`);
let f = a.schema.getType(i);
if (f == null) throw createGraphQLError(`Abstract type "${o.name}" was resolved to a type "${i}" that does not exist inside the schema.`, { nodes: s });
if (!isObjectType(f)) throw createGraphQLError(`Abstract type "${o.name}" was resolved to a non-object type "${i}".`, { nodes: s });
if (!a.schema.isSubType(o, f)) throw createGraphQLError(`Runtime Object type "${f.name}" is not a possible type for "${o.name}".`, { nodes: s });
return f;
}
function completeObjectValue(i, a, o, s, c, d, f) {
if (a.isTypeOf) {
let g = a.isTypeOf(d, i.contextValue, s);
if (isPromise(g)) return g.then((s) => {
if (!s) throw invalidReturnTypeError(a, d, o);
return collectAndExecuteSubfields(i, a, o, c, d, f);
});
if (!g) throw invalidReturnTypeError(a, d, o);
}
return collectAndExecuteSubfields(i, a, o, c, d, f);
}
function invalidReturnTypeError(i, a, o) {
return createGraphQLError(`Expected value of type "${i.name}" but got: ${inspect(a)}.`, { nodes: o });
}
function collectAndExecuteSubfields(i, a, o, s, c, d) {
let { fields: f, patches: g } = collectSubfields(i, a, o), b = executeFields(i, a, c, s, f, d);
for (let o of g) {
let { label: f, fields: g } = o;
executeDeferredFragment(i, a, c, g, f, s, d);
}
return b;
}
const defaultTypeResolver = function(i, a, o, s) {
if (isObjectLike(i) && typeof i.__typename == "string") return i.__typename;
let c = o.schema.getPossibleTypes(s), d = [];
for (let s = 0; s < c.length; s++) {
let f = c[s];
if (f.isTypeOf) {
let c = f.isTypeOf(i, a, o);
if (isPromise(c)) d[s] = c;
else if (c) return f.name;
}
}
if (d.length) return Promise.all(d).then((i) => {
for (let a = 0; a < i.length; a++) if (i[a]) return c[a].name;
});
}, defaultFieldResolver$1 = function(i, a, o, s) {
if (isObjectLike(i) || typeof i == "function") {
let c = i[s.fieldName];
return typeof c == "function" ? i[s.fieldName](a, o, s) : c;
}
};
function subscribe(i) {
let a = buildExecutionContext(i);
if (!("schema" in a)) {
for (let i of a) {
let a = i.extensions ||= {}, o = a.http ||= {};
o.status = 400, i.extensions.code = "BAD_USER_INPUT";
}
return { errors: a };
}
let o = createSourceEventStreamImpl(a);
return isPromise(o) ? o.then((i) => mapSourceToResponse(a, i)) : mapSourceToResponse(a, o);
}
function isIncrementalResults(i) {
return i?.initialResult;
}
function flattenIncrementalResults(i) {
let a = i.subsequentResults, o = !1, s = !1;
return {
[Symbol.asyncIterator]() {
return this;
},
next() {
return s ? fakePromise({
value: void 0,
done: s
}) : o ? a.next() : (o = !0, fakePromise({
value: i.initialResult,
done: s
}));
},
return() {
return s = !0, a.return();
},
throw(i) {
return s = !0, a.throw(i);
},
[DisposableSymbols.asyncDispose]() {
return s = !0, a?.[DisposableSymbols.asyncDispose]?.();
}
};
}
async function* ensureAsyncIterable(i) {
"initialResult" in i ? yield* flattenIncrementalResults(i) : yield i;
}
function mapSourceToResponse(i, a) {
return isAsyncIterable$1(a) ? flattenAsyncIterable(mapAsyncIterator(a, (a) => handleMaybePromise(() => executeImpl(buildPerEventExecutionContext(i, a)), ensureAsyncIterable), (a) => {
throw a instanceof AggregateError ? AggregateError(a.errors.map((a) => wrapError(a, i.operation)), a.message) : wrapError(a, i.operation);
})) : a;
}
function wrapError(i, a) {
return createGraphQLError(i.message, {
originalError: i,
nodes: [a]
});
}
function createSourceEventStreamImpl(i) {
try {
let a = executeSubscription(i);
return isPromise(a) ? a.then(void 0, (i) => ({ errors: [i] })) : a;
} catch (i) {
return { errors: [i] };
}
}
function executeSubscription(i) {
let { schema: a, fragments: o, operation: s, variableValues: c, rootValue: d } = i, f = a.getSubscriptionType();
if (f == null) throw createGraphQLError("Schema is not configured to execute subscription operation.", { nodes: s });
let { fields: g } = collectFields$1(a, o, c, f, s.selectionSet), [b, x] = [...g.entries()][0], S = x[0].name.value, C = getFieldDef(a, f, x[0]);
if (!C) throw createGraphQLError(`The subscription field "${S}" is not defined.`, { nodes: x });
let w = addPath(void 0, b, f.name), E = buildResolveInfo(i, C, x, f, w);
try {
let a = getArgumentValues(C, x[0], c), o = i.contextValue, s = (C.subscribe ?? i.subscribeFieldResolver)(d, a, o, E);
return isPromise(s) ? s.then((a) => assertEventStream(a, i.signal, i.onSignalAbort)).then(void 0, (a) => {
throw locatedError$1(a, x, pathToArray$2(w), i.schemaCoordinateInErrors && E);
}) : assertEventStream(s, i.signal, i.onSignalAbort);
} catch (a) {
throw locatedError$1(a, x, pathToArray$2(w), i.schemaCoordinateInErrors && E);
}
}
function assertEventStream(i, a, o) {
if (a?.throwIfAborted(), i instanceof Error) throw i;
if (!isAsyncIterable$1(i)) throw createGraphQLError(`Subscription field must return Async Iterable. Received: ${inspect(i)}.`);
return o ? { [Symbol.asyncIterator]() {
let a = i[Symbol.asyncIterator]();
return a.return && o?.(() => {
a.return?.();
}), a;
} } : i;
}
function executeDeferredFragment(i, a, o, s, c, d, f) {
let g = new DeferredFragmentRecord({
label: c,
path: d,
parentContext: f,
exeContext: i
}), b;
try {
b = executeFields(i, a, o, d, s, g), isPromise(b) && (b = b.then(null, (i) => (g.errors.push(i), null)));
} catch (i) {
g.errors.push(i), b = null;
}
g.addData(b);
}
function executeStreamField(i, a, o, s, c, d, f, g, b) {
let x = new StreamRecord({
label: g,
path: a,
parentContext: b,
exeContext: s
}), S;
try {
try {
S = isPromise(o) ? o.then((i) => completeValue(s, f, c, d, a, i, x)) : completeValue(s, f, c, d, a, o, x), isPromise(S) && (S = S.then(void 0, (i) => {
i = coerceError(i);
let o = locatedError$1(i, c, pathToArray$2(a), s.schemaCoordinateInErrors && d), g = handleFieldError(o, f, x.errors);
return filterSubsequentPayloads(s, a, x), g;
}));
} catch (i) {
let o = coerceError(i), g = locatedError$1(o, c, pathToArray$2(a), s.schemaCoordinateInErrors && d);
S = handleFieldError(g, f, x.errors), filterSubsequentPayloads(s, a, x);
}
} catch (a) {
return x.errors.push(a), filterSubsequentPayloads(s, i, x), x.addItems(null), x;
}
let C;
return C = isPromise(S) ? S.then((i) => [i], (a) => (x.errors.push(a), filterSubsequentPayloads(s, i, x), null)) : [S], x.addItems(C), x;
}
async function executeStreamIteratorItem(i, a, o, s, c, d, f) {
let g;
try {
let { value: a, done: o } = await i.next();
if (o) return d.setIsCompletedIterator(), {
done: o,
value: void 0
};
g = a;
} catch (i) {
let g = coerceError(i), b = locatedError$1(g, o, pathToArray$2(f), a.schemaCoordinateInErrors && s);
return {
done: !0,
value: handleFieldError(b, c, d.errors)
};
}
let b;
try {
return b = completeValue(a, c, o, s, f, g, d), isPromise(b) && (b = b.then(void 0, (i) => {
let g = locatedError$1(i, o, pathToArray$2(f), a.schemaCoordinateInErrors && s), b = handleFieldError(g, c, d.errors);
return filterSubsequentPayloads(a, f, d), b;
})), {
done: !1,
value: b
};
} catch (i) {
let g = locatedError$1(i, o, pathToArray$2(f), a.schemaCoordinateInErrors && s), b = handleFieldError(g, c, d.errors);
return filterSubsequentPayloads(a, f, d), {
done: !1,
value: b
};
}
}
async function executeStreamIterator(i, a, o, s, c, d, f, g, b) {
let x = i, S = b ?? void 0;
for (;;) {
let i = addPath(f, x, void 0), b = new StreamRecord({
label: g,
path: i,
parentContext: S,
iterator: a,
exeContext: o
}), C;
try {
C = await executeStreamIteratorItem(a, o, s, c, d, b, i);
} catch (i) {
b.errors.push(i), filterSubsequentPayloads(o, f, b), b.addItems(null), a?.return && a.return().catch(() => {});
return;
}
let { done: w, value: E } = C, O;
if (O = isPromise(E) ? E.then((i) => [i], (i) => (b.errors.push(i), filterSubsequentPayloads(o, f, b), null)) : [E], b.addItems(O), w) break;
S = b, x++;
}
}
function filterSubsequentPayloads(i, a, o) {
let s = pathToArray$2(a);
i.subsequentPayloads.forEach((a) => {
if (a !== o) {
for (let i = 0; i < s.length; i++) if (a.path[i] !== s[i]) return;
isStreamPayload(a) && a.iterator?.return && a.iterator.return().catch(() => {}), i.subsequentPayloads.delete(a);
}
});
}
function getCompletedIncrementalResults(i) {
let a = [];
for (let o of i.subsequentPayloads) {
let s = {};
if (o.isCompleted) {
if (i.subsequentPayloads.delete(o), isStreamPayload(o)) {
let i = o.items;
if (o.isCompletedIterator) continue;
s.items = i;
} else s.data = o.data ?? null;
s.path = o.path, o.label && (s.label = o.label), o.errors.length > 0 && (s.errors = o.errors), a.push(s);
}
}
return a;
}
function yieldSubsequentPayloads(i) {
let a = !1;
async function o() {
if (a) return {
value: void 0,
done: !0
};
let s = Array.from(i.subsequentPayloads).map((i) => i.promise);
if (i.signalPromise ? await Promise.race([i.signalPromise, ...s]) : await Promise.race(s), a) return {
value: void 0,
done: !0
};
let c = getCompletedIncrementalResults(i), d = i.subsequentPayloads.size > 0;
return !c.length && d ? o() : (d || (a = !0), {
value: c.length ? {
incremental: c,
hasNext: d
} : { hasNext: d },
done: !1
});
}
function s() {
let a = [];
return i.subsequentPayloads.forEach((i) => {
isStreamPayload(i) && i.iterator?.return && a.push(i.iterator.return());
}), Promise.all(a);
}
return {
[Symbol.asyncIterator]() {
return this;
},
next: o,
async return() {
return await s(), a = !0, {
value: void 0,
done: !0
};
},
async throw(i) {
throw await s(), a = !0, i;
},
async [DisposableSymbols.asyncDispose]() {
await s(), a = !0;
}
};
}
var DeferredFragmentRecord = class {
type;
errors;
label;
path;
promise;
data;
parentContext;
isCompleted;
_exeContext;
_resolve;
constructor(i) {
this.type = "defer", this.label = i.label, this.path = pathToArray$2(i.path), this.parentContext = i.parentContext, this.errors = [], this._exeContext = i.exeContext, this._exeContext.subsequentPayloads.add(this), this.isCompleted = !1, this.data = null, this.promise = new Promise((i) => {
this._resolve = (a) => {
i(a);
};
}).then((i) => {
this.data = i, this.isCompleted = !0;
});
}
addData(i) {
let a = this.parentContext?.promise;
if (a) {
this._resolve?.(a.then(() => i));
return;
}
this._resolve?.(i);
}
}, StreamRecord = class {
type;
errors;
label;
path;
items;
promise;
parentContext;
iterator;
isCompletedIterator;
isCompleted;
_exeContext;
_resolve;
constructor(i) {
this.type = "stream", this.items = null, this.label = i.label, this.path = pathToArray$2(i.path), this.parentContext = i.parentContext, this.iterator = i.iterator, this.errors = [], this._exeContext = i.exeContext, this._exeContext.subsequentPayloads.add(this), this.isCompleted = !1, this.items = null, this.promise = new Promise((i) => {
this._resolve = (a) => {
i(a);
};
}).then((i) => {
this.items = i, this.isCompleted = !0;
});
}
addItems(i) {
let a = this.parentContext?.promise;
if (a) {
this._resolve?.(a.then(() => i));
return;
}
this._resolve?.(i);
}
setIsCompletedIterator() {
this.isCompletedIterator = !0;
}
};
function isStreamPayload(i) {
return i.type === "stream";
}
function getFieldDef(i, a, o) {
let s = o.name.value;
return s === SchemaMetaFieldDef.name && i.getQueryType() === a ? SchemaMetaFieldDef : s === TypeMetaFieldDef.name && i.getQueryType() === a ? TypeMetaFieldDef : s === TypeNameMetaFieldDef.name ? TypeNameMetaFieldDef : a.getFields()[s];
}
function normalizedExecutor(i) {
let a = getOperationAST(i.document, i.operationName);
if (a == null) throw Error("Must provide an operation.");
return a.operation === "subscription" ? subscribe(i) : handleMaybePromise(() => execute(i), (i) => isIncrementalResults(i) ? flattenIncrementalResults(i) : i);
}
const executorFromSchema = memoize1(function(i) {
return function(a) {
return normalizedExecutor({
schema: i,
document: a.document,
variableValues: a.variables,
operationName: a.operationName,
rootValue: a.rootValue,
contextValue: a.context,
signal: a.signal || a.info?.signal,
schemaCoordinateInErrors: a.schemaCoordinateInErrors
});
};
});
var import_dataloader = /* @__PURE__ */ __toESM((/* @__PURE__ */ __commonJSMin(((i, a) => {
var o = /* @__PURE__ */ function() {
function i(i, a) {
if (typeof i != "function") throw TypeError("DataLoader must be constructed with a function which accepts " + ("Array<key> and returns Promise<Array<value>>, but got: " + i + "."));
this._batchLoadFn = i, this._maxBatchSize = x(a), this._batchScheduleFn = S(a), this._cacheKeyFn = C(a), this._cacheMap = w(a), this._batch = null, this.name = E(a);
}
var a = i.prototype;
return a.load = function(i) {
if (i == null) throw TypeError("The loader.load() function must be called with a value, " + ("but got: " + String(i) + "."));
var a = d(this), o = this._cacheMap, s;
if (o) {
s = this._cacheKeyFn(i);
var c = o.get(s);
if (c) {
var f = a.cacheHits ||= [];
return new Promise(function(i) {
f.push(function() {
i(c);
});
});
}
}
a.keys.push(i);
var g = new Promise(function(i, o) {
a.callbacks.push({
resolve: i,
reject: o
});
});
return o && o.set(s, g), g;
}, a.loadMany = function(i) {
if (!O(i)) throw TypeError("The loader.loadMany() function must be called with Array<key> " + ("but got: " + i + "."));
for (var a = [], o = 0; o < i.length; o++) a.push(this.load(i[o]).catch(function(i) {
return i;
}));
return Promise.all(a);
}, a.clear = function(i) {
var a = this._cacheMap;
if (a) {
var o = this._cacheKeyFn(i);
a.delete(o);
}
return this;
}, a.clearAll = function() {
var i = this._cacheMap;
return i && i.clear(), this;
}, a.prime = function(i, a) {
var o = this._cacheMap;
if (o) {
var s = this._cacheKeyFn(i);
if (o.get(s) === void 0) {
var c;
a instanceof Error ? (c = Promise.reject(a), c.catch(function() {})) : c = Promise.resolve(a), o.set(s, c);
}
}
return this;
}, i;
}(), s = typeof process == "object" && typeof process.nextTick == "function" ? function(i) {
c ||= Promise.resolve(), c.then(function() {
process.nextTick(i);
});
} : typeof setImmediate == "function" ? function(i) {
setImmediate(i);
} : function(i) {
setTimeout(i);
}, c;
function d(i) {
var a = i._batch;
if (a !== null && !a.hasDispatched && a.keys.length < i._maxBatchSize) return a;
var o = {
hasDispatched: !1,
keys: [],
callbacks: []
};
return i._batch = o, i._batchScheduleFn(function() {
f(i, o);
}), o;
}
function f(i, a) {
if (a.hasDispatched = !0, a.keys.length === 0) {
b(a);
return;
}
var o;
try {
o = i._batchLoadFn(a.keys);
} catch (o) {
return g(i, a, /* @__PURE__ */ TypeError("DataLoader must be constructed with a function which accepts Array<key> and returns Promise<Array<value>>, but the function " + ("errored synchronously: " + String(o) + ".")));
}
if (!o || typeof o.then != "function") return g(i, a, /* @__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(o) + ".")));
o.then(function(i) {
if (!O(i)) 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(i) + "."));
if (i.length !== a.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(a.keys)) + ("\n\nValues:\n" + String(i)));
b(a);
for (var o = 0; o < a.callbacks.length; o++) {
var s = i[o];
s instanceof Error ? a.callbacks[o].reject(s) : a.callbacks[o].resolve(s);
}
}).catch(function(o) {
g(i, a, o);
});
}
function g(i, a, o) {
b(a);
for (var s = 0; s < a.keys.length; s++) i.clear(a.keys[s]), a.callbacks[s].reject(o);
}
function b(i) {
if (i.cacheHits) for (var a = 0; a < i.cacheHits.length; a++) i.cacheHits[a]();
}
function x(i) {
if (!(!i || i.batch !== !1)) return 1;
var a = i && i.maxBatchSize;
if (a === void 0) return Infinity;
if (typeof a != "number" || a < 1) throw TypeError("maxBatchSize must be a positive number: " + a);
return a;
}
function S(i) {
var a = i && i.batchScheduleFn;
if (a === void 0) return s;
if (typeof a != "function") throw TypeError("batchScheduleFn must be a function: " + a);
return a;
}
function C(i) {
var a = i && i.cacheKeyFn;
if (a === void 0) return function(i) {
return i;
};
if (typeof a != "function") throw TypeError("cacheKeyFn must be a function: " + a);
return a;
}
function w(i) {
if (!(!i || i.cache !== !1)) return null;
var a = i && i.cacheMap;
if (a === void 0) return /* @__PURE__ */ new Map();
if (a !== null) {
var o = [
"get",
"set",
"delete",
"clear"
].filter(function(i) {
return a && typeof a[i] != "function";
});
if (o.length !== 0) throw TypeError("Custom cacheMap missing methods: " + o.join(", "));
}
return a;
}
function E(i) {
return i && i.name ? i.name : null;
}
function O(i) {
return typeof i == "object" && !!i && typeof i.length == "number" && (i.length === 0 || i.length > 0 && Object.prototype.hasOwnProperty.call(i, i.length - 1));
}
a.exports = o;
})))());
function createPrefix(i) {
return `_v${i}_`;
}
function matchKey(i) {
let a = /^_v(\d+)_(.*)$/.exec(i);
return a && a.length === 3 && !isNaN(Number(a[1])) && a[2] ? {
index: Number(a[1]),
originalKey: a[2]
} : null;
}
function parseKey(i) {
let a = matchKey(i);
if (!a) throw Error(`Key ${i} is not correctly prefixed`);
return a;
}
function parseKeyFromPath(i) {
let a = 0, o = null;
for (; !o && a < i.length; a++) {
let s = i[a];
typeof s == "string" && (o = matchKey(s));
}
if (!o) throw Error(`Path ${i.join(".")} does not contain correctly prefixed key`);
return {
...o,
keyOffset: a
};
}
function mergeRequests(i, a) {
let o = i[0];
if (!o) throw Error("At least one request is required");
let s = i.length;
if (s === 1) return o;
let c = /* @__PURE__ */ Object.create(null), d = [], f = [], g = [], b = /* @__PURE__ */ Object.create(null), x, S, C, w, E, O;
for (let o = 0; o < s; o++) {
let s = i[o];
if (s) {
x ??= s.subgraphName, S ??= s.operationName, C ??= s.operationType, w ??= s.context, E ??= s.info, O ??= s.rootValue;
let i = prefixRequest(createPrefix(o), s);
for (let a of i.document.definitions) isOperationDefinition(a) && (f.push(...a.selectionSet.selections), C ??= a.operation, S ??= a.name?.value, a.variableDefinitions && d.push(...a.variableDefinitions)), isFragmentDefinition(a) && g.push(a);
Object.assign(c, i.variables), b = a(b, s);
}
}
S ??= E?.operation?.name?.value, C ||= "query";
let A = {
kind: Kind.OPERATION_DEFINITION,
operation: C,
variableDefinitions: d,
selectionSet: {
kind: Kind.SELECTION_SET,
selections: f
},
name: S ? {
kind: Kind.NAME,
value: S
} : void 0
};
return {
subgraphName: x,
document: {
kind: Kind.DOCUMENT,
definitions: [A, ...g]
},
variables: c,
extensions: b,
context: w,
info: E,
operationType: C,
rootValue: O,
operationName: S
};
}
function prefixRequest(i, a) {
function o(a) {
return prefixNodeName(a, i);
}
let s = aliasTopLevelFields(i, a.document), c = !1;
for (let i of s.definitions) if (isFragmentDefinition(i) || isOperationDefinition(i) && i.variableDefinitions?.length) {
c = !0;
break;
}
let d = {}, f = !1;
c && (s = visit(s, {
[Kind.VARIABLE]: o,
[Kind.FRAGMENT_DEFINITION](i) {
return f = !0, o(i);
},
[Kind.FRAGMENT_SPREAD]: (a) => (a = prefixNodeName(a, i), d[a.name.value] = !0, a)
}));
let g, b = a.variables;
if (b) for (let a in g = /* @__PURE__ */ Object.create(null), b) g[i + a] = b[a];
return f && (s = {
...s,
definitions: s.definitions.filter((i) => !isFragmentDefinition(i) || d[i.name.value])
}), {
document: s,
variables: g
};
}
function aliasTopLevelFields(i, a) {
let o = { [Kind.OPERATION_DEFINITION]: (o) => {
let { selections: s } = o.selectionSet;
return {
...o,
selectionSet: {
...o.selectionSet,
selections: aliasFieldsInSelection(i, s, a)
}
};
} };
return visit(a, o, { [Kind.DOCUMENT]: ["definitions"] });
}
function aliasFieldsInSelection(i, a, o) {
return a.map((a) => {
switch (a.kind) {
case Kind.INLINE_FRAGMENT: return aliasFieldsInInlineFragment(i, a, o);
case Kind.FRAGMENT_SPREAD: {
let s = inlineFragmentSpread(a, o);
return aliasFieldsInInlineFragment(i, s, o);
}
case Kind.FIELD:
default: return aliasField(a, i);
}
});
}
function aliasFieldsInInlineFragment(i, a, o) {
let { selections: s } = a.selectionSet;
return {
...a,
selectionSet: {
...a.selectionSet,
selections: aliasFieldsInSelection(i, s, o)
}
};
}
function inlineFragmentSpread(i, a) {
let o = a.definitions.find((a) => isFragmentDefinition(a) && a.name.value === i.name.value);
if (!o) throw Error(`Fragment ${i.name.value} does not exist`);
let { typeCondition: s, selectionSet: c } = o;
return {
kind: Kind.INLINE_FRAGMENT,
typeCondition: s,
selectionSet: c,
directives: i.directives
};
}
function prefixNodeName(i, a) {
return {
...i,
name: {
...i.name,
value: a + i.name.value
}
};
}
function aliasField(i, a) {
let o = i.alias ? i.alias : i.name;
return {
...i,
alias: {
...o,
value: a + o.value
}
};
}
function isOperationDefinition(i) {
return i.kind === Kind.OPERATION_DEFINITION;
}
function isFragmentDefinition(i) {
return i.kind === Kind.FRAGMENT_DEFINITION;
}
function splitResult({ data: i, errors: a }, o) {
let s = Array(o);
if (i) for (let a in i) {
if (a === "__proto__" || a === "constructor" || a === "prototype") continue;
let { index: o, originalKey: c } = parseKey(a), d = s[o];
d == null ? s[o] = { data: { [c]: i[a] } } : d.data == null ? d.data = { [c]: i[a] } : d.data[c] = i[a];
}
if (a) for (let i of a) if (i.path) {
let { index: a, originalKey: o, keyOffset: c } = parseKeyFromPath(i.path), d = relocatedError$1(i, [o, ...i.path.slice(c)]), f = s[a];
if (f == null) {
s[a] = { errors: [d] };
continue;
} else if (f.errors == null) {
f.errors = [d];
continue;
} else f.errors.push(d);
} else for (let a = 0; a < o; a++) {
let o = s[a];
if (o == null) {
s[a] = { errors: [i] };
continue;
} else if (o.errors == null) {
o.errors = [i];
continue;
} else o.errors.push(i);
}
for (let i = 0; i < o; i++) s[i] ?? (s[i] = { data: {} });
return s;
}
function createBatchingExecutor(i, a, o = defaultExtensionsReducer) {
let s = createLoadFn(i, o), c = new import_dataloader.default(s, a), d = new import_dataloader.default(s, a);
return function(a) {
let o = a.operationType ?? getOperationASTFromRequest$2(a)?.operation;
switch (o) {
case "query": return c.load(a);
case "mutation": return d.load(a);
case "subscription": return i(a);
default: throw Error(`Invalid operation type "${o}"`);
}
};
}
function createLoadFn(i, a) {
return function(o) {
if (o.length === 1 && o[0]) {
let a = o[0];
return fakePromise().then(() => i(a)).catch((i) => i).then((i) => [i]);
}
let s = mergeRequests(o, a);
return fakePromise().then(() => i(s)).then((i) => splitResult(i, o.length)).catch((i) => o.map(() => i));
};
}
function defaultExtensionsReducer(i, a) {
let o = a.extensions;
return o != null && Object.assign(i, o), i;
}
var getBatchingExecutor = memoize2of4(function(i, a, o, s) {
return createBatchingExecutor(a, o, s);
}), applySchemaTransforms = memoize2$1(function(i, a) {
let o = a.transforms;
return o == null ? i : o.reduce((i, o) => o.transformSchema?.(i, a) || i, i);
});
function isSubschema(i) {
return !!i.transformedSchema;
}
var prototypePollutingKeys = [
"__proto__",
"constructor",
"prototype"
];
function isPrototypePollutingKey(i) {
return prototypePollutingKeys.includes(i);
}
var leftOverByDelegationPlan = /* @__PURE__ */ new WeakMap(), PLAN_LEFT_OVER = Symbol("PLAN_LEFT_OVER");
function getPlanLeftOverFromParent(i) {
if (typeof i == "object" && i) return i[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(i) {
return i[UNPATHED_ERRORS_SYMBOL] !== void 0;
}
function annotateExternalObject(i, a, o, s) {
return Object.defineProperties(i, {
[OBJECT_SUBSCHEMA_SYMBOL]: {
value: o,
writable: !0
},
[FIELD_SUBSCHEMA_MAP_SYMBOL]: {
value: s,
writable: !0
},
[UNPATHED_ERRORS_SYMBOL]: {
value: a,
writable: !0
}
}), i;
}
function getSubschema(i, a) {
return i[FIELD_SUBSCHEMA_MAP_SYMBOL]?.[a] ?? i[OBJECT_SUBSCHEMA_SYMBOL];
}
function getUnpathedErrors(i) {
return i[UNPATHED_ERRORS_SYMBOL];
}
var EMPTY_ARRAY = [], EMPTY_OBJECT = /* @__PURE__ */ Object.create(null), getActualFieldNodes = memoize1$1(function(i) {
return [i];
});
function mergeFields(i, a, o, s, c) {
let d = i.delegationPlanBuilder(c.schema, o, c.variableValues != null && Object.keys(c.variableValues).length > 0 ? c.variableValues : EMPTY_OBJECT, c.fragments != null && Object.keys(c.fragments).length > 0 ? c.fragments : EMPTY_OBJECT, c.fieldNodes?.length ? c.fieldNodes.length === 1 && c.fieldNodes[0] ? getActualFieldNodes(c.fieldNodes[0]) : c.fieldNodes : EMPTY_ARRAY, s, c), f = leftOverByDelegationPlan.get(d);
return f && (a[PLAN_LEFT_OVER] = f), handleMaybePromise(() => promiseReduce(d, (o, d) => executeDelegationStage(i, d, a, s, c), void 0), () => a);
}
function handleResolverResult(i, a, o, s, c, d, f, g) {
if (i instanceof Error || i == null) {
let c = a.transformedSchema || d.schema, g = c.getType(s.__typename), { fields: b } = collectFields(c, d.fragments, d.variableValues, g, o), x = {};
for (let [a, o] of b) {
let s = [...f, a];
i instanceof GraphQLError ? i.message.includes("Cannot return null for non-nullable field") ? x[a] = null : x[a] = relocatedError$1(i, s) : i instanceof Error ? x[a] = locatedError(i, o, s) : x[a] = null;
}
i = x;
} else i[UNPATHED_ERRORS_SYMBOL] && g.push(...i[UNPATHED_ERRORS_SYMBOL]);
let b = i[OBJECT_SUBSCHEMA_SYMBOL], x = i[FIELD_SUBSCHEMA_MAP_SYMBOL];
for (let o in i) {
if (isPrototypePollutingKey(o)) continue;
let d = s[o], f = i[o];
o === "__typename" && d !== f && isAbstractType(a.transformedSchema.getType(f)) || ((f != null || d == null) && (typeof d == "object" && d && !(d instanceof Error) && Object.keys(d).length > 0 ? Array.isArray(d) && Array.isArray(f) && d.length === f.length ? s[o] = d.map((i, a) => f instanceof Error ? i : mergeDeep([i, f[a]], void 0, !0, !0)) : f instanceof Error || (s[o] = mergeDeep([d, f], void 0, !0, !0)) : s[o] = f), c[o] = x?.[o] ?? b ?? a);
}
}
function executeDelegationStage(i, a, o, s, c) {
let d = o[UNPATHED_ERRORS_SYMBOL], f = pathToArray(c.path), g = o[FIELD_SUBSCHEMA_MAP_SYMBOL], b = [];
for (let [x, S] of a) {
let a = (x.transformedSchema || c.schema).getType(o.__typename), C = i.resolvers.get(x);
if (C) try {
let i = C(o, s, c, x, S, void 0, a);
isPromise(i) ? b.push(i.then((i) => handleResolverResult(i, x, S, o, g, c, f, d), (i) => handleResolverResult(i, x, S, o, g, c, f, d))) : handleResolverResult(i, x, S, o, g, c, f, d);
} catch (i) {
handleResolverResult(i, x, S, o, g, c, f, d);
}
}
if (b.length) return b.length === 1 ? b[0] : Promise.all(b);
}
function resolveExternalValue(i, a, o, s, c, d = getReturnType$1(c), f) {
let g = getNullableType(d);
if (i instanceof Error) return i;
if (i == null) return reportUnpathedErrorsViaNull(a);
if (isLeafType(g)) try {
return g.parseValue(i);
} catch {
return null;
}
else if (isCompositeType(g)) return handleMaybePromise(() => resolveExternalObject(g, i, a, o, s, c, f), (i) => c && isAbstractType(g) && i.__typename != null && !c.schema.getType(i.__typename) ? null : i);
else if (isListType(g)) return Array.isArray(i) ? resolveExternalList(g, i, a, o, s, c, f) : resolveExternalValue(i, a, o, s, c, g.ofType, f);
}
function resolveExternalObject(i, a, o, s, c, d, f) {
if (isExternalObject(a) || annotateExternalObject(a, o, s, /* @__PURE__ */ Object.create(null)), f || d == null) return a;
let g = d.schema.extensions?.stitchingInfo;
if (g == null) return a;
let b, x = [a.__typename, i.name];
for (let i of x) if (i != null && g.mergedTypes[i]?.targetSubschemas?.get(s)?.length) {
b = g.mergedTypes[i];
break;
}
if (!b) for (let i of x) {
let a = g.mergedTypes[i];
if (a != null) {
for (let [i, o] of a.targetSubschemas) o.length && i.name != null && i.name === s.name && (s = i, b = a);
break;
}
}
return b ? mergeFields(b, a, s, c, d) : a;
}
function resolveExternalList(i, a, o, s, c, d, f) {
return a.map((a) => resolveExternalValue(a, o, s, c, d, i.ofType, f));
}
var reportedErrors = /* @__PURE__ */ new WeakSet();
function reportUnpathedErrorsViaNull(i) {
if (i.length) {
let a = [];
for (let o of i) reportedErrors.has(o) || (a.push(o), reportedErrors.add(o));
if (a.length) {
let i = a[0];
return a.length === 1 && i ? locatedError(i, void 0, i.path) : AggregateError(a.map((a) => locatedError(a, void 0, i?.path)), a.map((i) => i.message).join(", \n"));
}
}
return null;
}
function getReturnType$1(i) {
if (i == null) throw Error("Return type cannot be inferred without a source schema.");
return i.returnType;
}
function checkResultAndHandleErrors(i = {
data: null,
errors: []
}, a) {
let { context: o, info: s, fieldName: c = getResponseKey(s), subschema: d, returnType: f = getReturnType(s), skipTypeMerging: g, onLocatedError: b } = a, { data: x, unpathedErrors: S } = mergeDataAndErrors(i.data == null ? void 0 : i.data[c], i.errors == null ? [] : i.errors, s != null && s.path ? pathToArray$1(s.path) : void 0, b);
return resolveExternalValue(x, S, d, o, s, f, g);
}
function mergeDataAndErrors(i, a, o, s, c = 1) {
if (i == null) {
if (!a.length) return {
data: null,
unpathedErrors: []
};
if (a.length === 1 && a[0]) {
let i = s ? s(a[0]) : a[0], c = o === void 0 ? i.path : i.path ? o.concat(i.path.slice(1)) : o;
return {
data: relocatedError$1(a[0], c),
unpathedErrors: []
};
}
return {
data: AggregateError(a.map((i) => {
let a = s ? s(i) : i, c = o === void 0 ? a.path : a.path ? o.concat(a.path.slice(1)) : o;
return relocatedError$1(a, c);
}), a.map((i) => i.message).join(",\n")),
unpathedErrors: []
};
}
if (!a.length) return {
data: i,
unpathedErrors: []
};
let d = [], f = /* @__PURE__ */ new Map();
for (let i of a) {
let a = i.path?.[c];
if (a != null) {
let o = f.get(a);
o === void 0 ? (o = [i], f.set(a, o)) : o.push(i);
} else d.push(i);
}
for (let [a, g] of f) if (i[a] !== void 0) {
let { data: f, unpathedErrors: b } = mergeDataAndErrors(i[a], g, o, s, c + 1);
i[a] = f, d.push(...b);
} else d.push(...g);
return {
data: i,
unpathedErrors: d
};
}
function getResponseKey(i) {
if (i == null) throw Error("Data cannot be extracted from result without an explicit key or source schema.");
return getResponseKeyFromInfo$1(i);
}
function getReturnType(i) {
if (i == null) throw Error("Return type cannot be inferred without a source schema.");
return i.returnType;
}
function getDocumentMetadata(i) {
let a = [], o = [], s = /* @__PURE__ */ new Set();
for (let c = 0; c < i.definitions.length; c++) {
let d = i.definitions[c];
d?.kind === Kind.FRAGMENT_DEFINITION ? (o.push(d), s.add(d.name.value)) : d?.kind === Kind.OPERATION_DEFINITION && a.push(d);
}
return {
operations: a,
fragments: o,
fragmentNames: s
};
}
var getTypeInfo = memoize1$1(function(i) {
return new TypeInfo(i);
}), getTypeInfoWithType = memoize2$1(function(i, a) {
return versionInfo.major < 16 ? new TypeInfo(i, void 0, a) : new TypeInfo(i, a);
}), handleOverrideByDelegation = memoize3(function(i, a, o) {
return o(a, i);
});
function finalizeGatewayDocument(i, a, o, s, c, d) {
let f = [], g = [], b = [], x = [], S = [], C = /* @__PURE__ */ Object.create(null);
for (let a of o) {
if (a.selectionSet.selections.length === 0) continue;
let o = a.typeCondition.name.value, s = i.getType(o);
s != null && (S.push(a), C[a.name.value] = s);
}
let w = /* @__PURE__ */ Object.create(null), E = 0;
for (let a of s) {
let o = getDefinedRootType(i, a.operation), { selectionSet: s, usedFragments: O, usedVariables: A } = finalizeSelectionSet(i, o, C, a.selectionSet, c, d);
g = union(g, O);
let { usedVariables: M, newFragments: F, fragmentSet: I } = collectFragmentVariables(i, w, S, C, g, c, d), R = union(A, M);
f = union(f, R), x = F, w = I;
let V = [];
for (let i of R) {
let o = a.variableDefinitions?.find((a) => a.variable.name.value === i);
o != null && V.push(o);
}
a.operation === "subscription" && (s.selections = s.selections.filter((i) => i.kind !== Kind.FIELD || i.name.value !== "__typename")), !(s.selections.length === 1 && s.selections[0] && s.selections[0].kind === Kind.FIELD && s.selections[0].name.value === "__typename") && (E += s.selections.length, b.push({
kind: Kind.OPERATION_DEFINITION,
operation: a.operation,
name: a.name,
directives: a.directives,
variableDefinitions: V,
selectionSet: s
}));
}
if (!b.length || E === 0) throw createGraphQLError$1("Failed to create a gateway request. The request must contain at least one operation.", { extensions: { CRITICAL_ERROR: !0 } });
let O = new Set(x.map((i) => i.name.value)), A = O.size < g.length, M = {
kind: Kind.DOCUMENT,
definitions: [...b, ...x]
}, F = d.info?.schema?.extensions?.stitchingInfo;
if (F != null && subschemaHasProvidedSelections(F, d.subschema)) {
let { selectionSetsByPath: o, fragments: s } = collectFieldSelectionSetsByPath(a), c = getTypeInfo(i), f = [], g = [];
M = visit(M, visitWithTypeInfo(c, {
[Kind.SELECTION_SET]: {
enter() {
g.push(/* @__PURE__ */ new Map());
},
leave() {
g.pop();
}
},
[Kind.OPERATION_DEFINITION]: {
enter(i) {
f.push(`op:${i.operation}:${i.name?.value ?? ""}`);
},
leave() {
f.pop();
}
},
[Kind.FRAGMENT_DEFINITION]: {
enter(i) {
f.push(`frag:${i.name.value}`);
},
leave() {
f.pop();
}
},
[Kind.INLINE_FRAGMENT]: {
enter(i) {
f.push(nextInlineFragmentPathSegment(i, g[g.length - 1]));
},
leave() {
f.pop();
}
},
[Kind.FIELD]: {
enter(i) {
f.push(i.alias?.value ?? i.name.value);
},
leave(i) {
try {
let a = c.getParentType();
if (!a) return;
let g = (F?.mergedTypes?.[a.name])?.providedSelectionsByField?.get(d.subschema)?.[i.name.value];
if (!g) return;
let b = lookupOriginalSelectionSet(f, i, o), x = intersectProvidedSelections(g.selections, b, s);
return x.length ? {
...i,
selectionSet: {
kind: Kind.SELECTION_SET,
selections: [...x, ...i.selectionSet?.selections ?? []]
}
} : void 0;
} finally {
f.pop();
}
}
}
}));
}
if (A) {
let i = M.definitions.filter((i) => i.kind === Kind.OPERATION_DEFINITION), a = M.definitions.filter((i) => i.kind === Kind.FRAGMENT_DEFINITION);
M = {
kind: Kind.DOCUMENT,
definitions: [...removeDeadFragmentSpreads(i, O), ...a]
};
}
return {
usedVariables: f,
newDocument: M
};
}
function finalizeGatewayRequest(i, a, o) {
let { operations: s, fragments: c } = getDocumentMetadata(i.document), { targetSchema: d } = a, { usedVariables: f, newDocument: g } = finalizeGatewayDocument(d, i.document, c, s, o, a), b = {}, x = a.info?.variableValues;
for (let a of f) {
let o = i.variables?.[a], s = x?.[a];
o == null ? s != null && (b[a] = s) : b[a] = o, (o === null || s === null) && (b[a] = null);
}
return {
...i,
document: g,
variables: b
};
}
function removeDeadFragmentSpreads(i, a) {
function o(i) {
let s = [];
for (let c of i) if (c.kind === Kind.FRAGMENT_SPREAD) a.has(c.name.value) && s.push(c);
else if ((c.kind === Kind.FIELD || c.kind === Kind.INLINE_FRAGMENT) && c.selectionSet) {
let i = o(c.selectionSet.selections);
if (i.length === 0 && c.kind === Kind.INLINE_FRAGMENT || i.length === 0 && c.kind === Kind.FIELD) continue;
s.push(i === c.selectionSet.selections ? c : {
...c,
selectionSet: {
kind: Kind.SELECTION_SET,
selections: i
}
});
} else s.push(c);
return s;
}
return i.map((i) => ({
...i,
selectionSet: {
...i.selectionSet,
selections: o(i.selectionSet.selections)
}
}));
}
function isTypeNameField(i) {
return i.kind === Kind.FIELD && !i.alias && i.name.value === "__typename";
}
function collectFieldSelectionSetsByPathImpl(i) {
let a = /* @__PURE__ */ new Map(), o = /* @__PURE__ */ new Map();
for (let a of i.definitions) a.kind === Kind.FRAGMENT_DEFINITION && o.set(a.name.value, a);
let s = [], c = [];
return visit(i, {
[Kind.SELECTION_SET]: {
enter() {
c.push(/* @__PURE__ */ new Map());
},
leave() {
c.pop();
}
},
[Kind.OPERATION_DEFINITION]: {
enter(i) {
s.push(`op:${i.operation}:${i.name?.value ?? ""}`);
},
leave() {
s.pop();
}
},
[Kind.FRAGMENT_DEFINITION]: {
enter(i) {
s.push(`frag:${i.name.value}`);
},
leave() {
s.pop();
}
},
[Kind.INLINE_FRAGMENT]: {
enter(i) {
s.push(nextInlineFragmentPathSegment(i, c[c.length - 1]));
},
leave() {
s.pop();
}
},
[Kind.FIELD]: {
enter(i) {
if (s.push(i.alias?.value ?? i.name.value), i.selectionSet && (a.set(s.join(">"), i.selectionSet), i.alias)) {
let o = [...s.slice(0, -1), i.name.value].join(">");
a.has(o) || a.set(o, i.selectionSet);
}
},
leave() {
s.pop();
}
}
}), {
selectionSetsByPath: a,
fragments: o
};
}
var collectFieldSelectionSetsByPath = memoize1$1(collectFieldSelectionSetsByPathImpl);
function nextInlineFragmentPathSegment(i, a) {
let o = i.typeCondition?.name.value ?? "";
if (!a) return `inline:${o}:0`;
let s = a.get(o) ?? 0;
return a.set(o, s + 1), `inline:${o}:${s}`;
}
function subschemaHasProvidedSelectionsImpl(i, a) {
let o = i.mergedTypes;
if (!o) return !1;
for (let i of Object.values(o)) if (i?.providedSelectionsByField?.has(a)) return !0;
return !1;
}
var subschemaHasProvidedSelections = memoize2$1(subschemaHasProvidedSelectionsImpl);
function lookupOriginalSelectionSet(i, a, o) {
let s = o.get(i.join(">"));
if (s || !a.alias) return s;
let c = [...i.slice(0, -1), a.name.value].join(">");
return o.get(c);
}
function intersectProvidedSelections(i, a, o) {
if (!a) return [];
let s = /* @__PURE__ */ new Map(), c = [];
for (let a of i) a.kind === Kind.FIELD ? s.set(a.name.value, a) : c.push(a);
let d = [];
return collectMatchingOriginalSelections(a, s, o, /* @__PURE__ */ new Set(), /* @__PURE__ */ new Set(), d), [...d, ...c];
}
function collectMatchingOriginalSelections(i, a, o, s, c, d) {
for (let f of i.selections) if (f.kind === Kind.FIELD) {
let i = a.get(f.name.value);
if (!i) continue;
let c = f.alias?.value ?? f.name.value;
if (s.has(c)) continue;
if (s.add(c), i.selectionSet && f.selectionSet) {
let a = intersectProvidedSelections(i.selectionSet.selections, f.selectionSet, o);
if (!a.length) continue;
d.push({
...f,
selectionSet: {
kind: Kind.SELECTION_SET,
selections: a
}
});
} else d.push(f);
} else if (f.kind === Kind.INLINE_FRAGMENT && f.selectionSet) {
let i = (f.directives?.length ?? 0) > 0, g = f.typeCondition != null;
if (i || g) {
let i = [];
if (collectMatchingOriginalSelections(f.selectionSet, a, o, /* @__PURE__ */ new Set(), /* @__PURE__ */ new Set(), i), i.length === 0) continue;
d.push({
kind: Kind.INLINE_FRAGMENT,
typeCondition: f.typeCondition,
directives: f.directives,
selectionSet: {
kind: Kind.SELECTION_SET,
selections: i
}
});
} else collectMatchingOriginalSelections(f.selectionSet, a, o, s, c, d);
} else if (f.kind === Kind.FRAGMENT_SPREAD) {
let i = o.get(f.name.value);
if (!i) continue;
let g = (f.directives?.length ?? 0) > 0, b = (i.directives?.length ?? 0) > 0;
if (g || b) {
let s = [];
if (collectMatchingOriginalSelections(i.selectionSet, a, o, /* @__PURE__ */ new Set(), /* @__PURE__ */ new Set(), s), s.length === 0) continue;
let c = [...f.directives ?? [], ...i.directives ?? []];
d.push({
kind: Kind.INLINE_FRAGMENT,
typeCondition: i.typeCondition,
directives: c.length > 0 ? c : void 0,
selectionSet: {
kind: Kind.SELECTION_SET,
selections: s
}
});
} else {
if (c.has(f.name.value)) continue;
c.add(f.name.value), collectMatchingOriginalSelections(i.selectionSet, a, o, s, c, d);
}
}
}
function filterTypenameFields(i) {
let a = !1, o = i.filter((i) => isTypeNameField(i) ? (a = !0, !1) : !0);
return {
hasTypeNameField: a,
selections: o
};
}
function collectFragmentVariables(i, a, o, s, c, d, f) {
let g = c.slice(), b = [], x = [];
for (; g.length !== 0;) {
let c = g.pop(), S = o.find((i) => i.name.value === c);
if (S != null) {
let o = c, C = S.typeCondition.name.value, w = i.getType(C);
if (w == null) throw Error(`Fragment reference type "${C}", but the type is not contained within the target schema.`);
let { selectionSet: E, usedFragments: O, usedVariables: A } = finalizeSelectionSet(i, w, s, S.selectionSet, d, f);
g = union(g, O), b = union(b, A), o && !(o in a) && (a[o] = !0, E.selections.length > 0 && x.push({
kind: Kind.FRAGMENT_DEFINITION,
name: {
kind: Kind.NAME,
value: o
},
typeCondition: S.typeCondition,
selectionSet: E
}));
}
}
return {
usedVariables: b,
newFragments: x,
fragmentSet: a
};
}
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(i, a, o, s, c, d) {
let f = [], g = [], b = getTypeInfoWithType(i, a), x = filterSelectionSet(i, b, o, s, c, f, /* @__PURE__ */ new WeakMap(), /* @__PURE__ */ new WeakMap(), d);
return visit(x, { [Kind.VARIABLE]: (i) => {
g.push(i.name.value);
} }, variablesVisitorKeys), {
selectionSet: x,
usedFragments: f,
usedVariables: g
};
}
function filterSelectionSet(i, a, o, s, c, d, f, g, b) {
return visit(s, visitWithTypeInfo(a, {
[Kind.FIELD]: {
enter: (s) => {
let x = a.getParentType(), S = a.getFieldDef();
if (b.context != null && b.info != null && x != null && S != null) {
let i = x.name, a = b.subschemaConfig?.merge?.[i]?.fields?.[S.name]?.override;
if (a != null && !handleOverrideByDelegation(b.info, b.context, a)) return null;
}
if (isObjectType(x) || isInterfaceType(x)) {
if (!S) return null;
let i = S.args == null ? [] : S.args, a = /* @__PURE__ */ Object.create(null);
for (let o of i) a[o.name] = o;
if (s.arguments != null) {
let i = [];
for (let o of s.arguments) o.name.value in a && i.push(o);
if (i.length !== s.arguments.length) return {
...s,
arguments: i
};
}
}
if (isUnionType(x) && a.getType() == null) {
let a = [], S = s.name.value;
for (let i of x.getTypes()) {
let o = i.getFields()[S];
if (o != null) {
let c = getNamedType(o.type);
if (s.selectionSet?.selections?.length && isLeafType(c) || !s.selectionSet?.selections?.length && isCompositeType(c)) continue;
a.push(i.name);
}
}
if (a.length > 0) {
let x = a.map((a) => {
if (!s.selectionSet?.selections) return {
kind: Kind.INLINE_FRAGMENT,
typeCondition: {
kind: Kind.NAMED_TYPE,
name: {
kind: Kind.NAME,
value: a
}
},
selectionSet: {
kind: Kind.SELECTION_SET,
selections: [s]
}
};
let x = i.getType(a).getFields()[s.name.value];
if (!x) return;
let S = filterSelectionSet(i, getTypeInfoWithType(i, x.type), o, s.selectionSet, c, d, f, g, b);
if (S.selections.length) return {
kind: Kind.INLINE_FRAGMENT,
typeCondition: {
kind: Kind.NAMED_TYPE,
name: {
kind: Kind.NAME,
value: a
}
},
selectionSet: {
kind: Kind.SELECTION_SET,
selections: [{
...s,
selectionSet: S
}]
}
};
}).filter(Boolean);
return x.length ? x : void 0;
}
}
},
leave: (o) => {
let s = a.getType();
if (s == null) return null;
let c = getNamedType(s);
if (i.getType(c.name) == null) return null;
if (isObjectType(c) || isInterfaceType(c)) {
let i = o.selectionSet == null ? null : o.selectionSet.selections;
if (i == null || i.length === 0) return null;
}
}
},
[Kind.FRAGMENT_SPREAD]: { enter: (s) => {
if (!(s.name.value in o)) return null;
let c = a.getParentType(), f = o[s.name.value];
if (!implementsAbstractType(i, c, f)) return null;
d.push(s.name.value);
} },
[Kind.SELECTION_SET]: { enter: (i, o, s, c) => {
let d = a.getParentType(), { hasTypeNameField: f, selections: g } = filterTypenameFields(i.selections);
return (f || d != null && isAbstractType(d)) && g.unshift({
kind: Kind.FIELD,
name: {
kind: Kind.NAME,
value: "__typename"
}
}), {
...i,
selections: g
};
} },
[Kind.INLINE_FRAGMENT]: {
enter: (o) => {
if (o.typeCondition != null) {
let s = a.getParentType(), c = i.getType(o.typeCondition.name.value);
if (isUnionType(s) && s.getTypes().some((i) => i.name === c?.name)) return o;
if (!implementsAbstractType(i, s, c)) return null;
}
},
leave: (a, o, s) => {
if (!a.selectionSet?.selections?.length) return null;
if (Array.isArray(s)) {
let o = a.typeCondition?.name.value;
if (o) {
let d = i.getType(o);
if (d && "getFields" in d) {
let i = d.getFields(), o = f.get(s);
o || (o = /* @__PURE__ */ new Set(), f.set(s, o));
let b = g.get(s);
b || (b = /* @__PURE__ */ new Set(), g.set(s, b)), a = {
...a,
selectionSet: {
...a.selectionSet,
selections: a.selectionSet.selections.map((a) => {
if (a.kind === Kind.FIELD) {
let s = a.name.value;
if (!a.alias) {
let d = i[s];
if (d) {
let i;
if (isNullableType(d.type) ? (b.add(s), i = !0) : (o.add(s), i = !1), b.has(s) && o.has(s)) return c(), {
...a,
alias: {
kind: Kind.NAME,
value: i ? `_nullable_${s}` : `_nonNullable_${s}`
}
};
}
}
}
return a;
})
}
};
}
}
}
let { selections: d } = filterTypenameFields(a.selectionSet.selections);
return d.length === 0 ? null : {
...a,
selectionSet: {
...a.selectionSet,
selections: d
},
directives: a.directives?.filter?.((i) => i.name.value !== "defer")
};
}
}
}), filteredSelectionSetVisitorKeys);
}
function union(...i) {
let a = /* @__PURE__ */ Object.create(null), o = [];
for (let s of i) for (let i of s) i in a || (a[i] = !0, o.push(i));
return o;
}
function prepareGatewayDocument(i, a) {
let o = a.transformedSchema, s = a.returnType, c = a.info?.schema, d = wrapConcreteTypes(s, o, i);
if (c == null) return d;
let f = /* @__PURE__ */ new WeakSet(), { possibleTypesMap: g, reversePossibleTypesMap: b, interfaceExtensionsMap: x, fieldNodesByType: S, fieldNodesByField: C, dynamicSelectionSetsByField: w } = getSchemaMetaData(c, o), { operations: E, fragments: O, fragmentNames: A } = getDocumentMetadata(d), { expandedFragments: M, fragmentReplacements: F } = getExpandedFragments(O, A, g), I = getTypeInfo(o), R = {
kind: Kind.DOCUMENT,
definitions: [
...E,
...O,
...M
]
}, V = /* @__PURE__ */ Object.create(null);
for (let i of R.definitions) i.kind === Kind.FRAGMENT_DEFINITION && (V[i.name.value] = i);
let rP = {
Document: ["definitions"],
OperationDefinition: ["selectionSet"],
SelectionSet: ["selections"],
Field: ["selectionSet"],
InlineFragment: ["selectionSet"],
FragmentDefinition: ["selectionSet"]
};
return visit(R, visitWithTypeInfo(I, { [Kind.SELECTION_SET]: (i) => visitSelectionSet(i, F, o, I, g, b, x, S, C, w, c, f, V, a) }), rP);
}
var getExtraPossibleTypesFn = memoize2$1(function(i, a) {
let o = /* @__PURE__ */ new Map();
return function(s) {
let c = o.get(s);
if (!c) {
c = /* @__PURE__ */ new Set();
let d = a.getType(s), f = i.getType(s);
if (isAbstractType(d) && isAbstractType(f)) {
let o = a.getPossibleTypes(d), s = i.getPossibleTypes(f);
for (let a of o) {
let o = i.getType(a.name);
o && (o && s.some((i) => i.name === a.name) || c.add(a.name));
}
}
o.set(s, c);
}
return c;
};
});
function visitSelectionSet(i, a, o, s, c, d, f, g, b, x, S, C, w, E) {
let O = /* @__PURE__ */ new Set(), A = s.getParentType();
if (A != null) {
let s = getNamedType(A);
if (isSelectionSetSatisfiedBySchema(o, s, i, w, S, E)) {
isAbstractType(E.returnType) && addSelectionNodeToSelections(O, {
kind: Kind.FIELD,
name: {
kind: Kind.NAME,
value: "__typename"
}
});
for (let a of i.selections) addSelectionNodeToSelections(O, a);
return {
...i,
selections: Array.from(O)
};
}
let M = s.name, F = g[M];
if (F) for (let i of F) addSelectionNodeToSelections(O, i);
let I = f[s.name], R = [];
for (let d of i.selections) if (d.kind === Kind.INLINE_FRAGMENT) if (d.typeCondition != null) {
if (!C.has(d)) {
C.add(d);
let i = d.typeCondition.name.value, a = getExtraPossibleTypesFn(o, S)(i);
for (let i of a) addSelectionNodeToSelections(O, {
...d,
typeCondition: {
kind: Kind.NAMED_TYPE,
name: {
kind: Kind.NAME,
value: i
}
}
});
let s = o.getType(i);
if (isObjectType(s) || isInterfaceType(s)) {
let i = s.getFields();
for (let a of d.selectionSet.selections) if (a.kind === Kind.FIELD) {
let o = a.name.value;
i[o] || addSelectionNodeToSelections(O, a);
}
} else if (!s) for (let i of d.selectionSet.selections) addSelectionNodeToSelections(O, i);
}
let i = c[d.typeCondition.name.value];
if (i == null) {
let i = b[M]?.__typename;
if (i) for (let a of i) addSelectionNodeToSelections(O, a);
addSelectionNodeToSelections(O, d);
continue;
}
for (let a of i) {
let i = o.getType(a);
i != null && implementsAbstractType(o, s, i) && addSelectionNodeToSelections(O, generateInlineFragment(a, d.selectionSet));
}
i.length === 0 && addSelectionNodeToSelections(O, d);
} else addSelectionNodeToSelections(O, d);
else if (d.kind === Kind.FRAGMENT_SPREAD) {
let i = d.name.value;
if (!a[i]) {
addSelectionNodeToSelections(O, d);
continue;
}
for (let c of a[i]) {
let i = c.typeName;
o.getType(i) != null && implementsAbstractType(o, s, A) && addSelectionNodeToSelections(O, {
kind: Kind.FRAGMENT_SPREAD,
name: {
kind: Kind.NAME,
value: c.fragmentName
}
});
}
} else {
let i = d.name.value;
if (I?.[i] ? R.push(d) : addSelectionNodeToSelections(O, d), isAbstractType(s)) {
let i = b[M]?.__typename;
if (i) for (let a of i) addSelectionNodeToSelections(O, a);
}
let a = b[M];
a && addDependenciesNestedly(d, /* @__PURE__ */ new Set(), a, O);
let o = x[M]?.[i];
if (o != null) for (let i of o) {
let a = i(d);
if (a != null) for (let i of a.selections) addSelectionNodeToSelections(O, i);
}
}
if (d[s.name] && addSelectionNodeToSelections(O, {
kind: Kind.FIELD,
name: {
kind: Kind.NAME,
value: "__typename"
}
}), R.length) {
let i = c[s.name];
if (i != null) for (let a of i) addSelectionNodeToSelections(O, generateInlineFragment(a, {
kind: Kind.SELECTION_SET,
selections: R
}));
}
return {
...i,
selections: Array.from(O)
};
}
return i;
}
function isFieldNodeSatisfiedBySelections(i, a) {
for (let o of a) if (o.kind === Kind.FIELD && o.name.value === i.name.value && o.alias?.value === i.alias?.value) return !(i.selectionSet && !o.selectionSet || i.selectionSet && o.selectionSet && !isSelectionSetSatisfied({
incoming: i.selectionSet,
existing: o.selectionSet.selections
}));
return !1;
}
function isSelectionSetSatisfiedBySchema(i, a, o, s, c, d) {
let f = getNamedType(a);
if (isLeafType(f)) return !0;
let g = isObjectType(f) || isInterfaceType(f) ? f.getFields() : null;
for (let b of o.selections) if (b.kind === Kind.FIELD) {
if (isAbstractType(f)) return !1;
let a = b.name.value;
if (a === "__typename") continue;
if (g) {
let o = g[a];
if (!o) return !1;
let x = c.getType(f.name)?.getFields?.()?.[a]?.resolve;
if (x != null && x.name !== "defaultMergedResolver" && x.name !== "defaultFieldResolver") return !1;
if (d.info) {
let i = d.subschemaConfig?.merge?.[f.name]?.fields?.[o.name]?.override;
if (i != null && !handleOverrideByDelegation(d.info, d.context, i)) return !1;
}
if (b.selectionSet) {
let a = getNamedType(o.type);
if (!isSelectionSetSatisfiedBySchema(i, a, b.selectionSet, s, c, d)) return !1;
}
} else return !1;
} else if (b.kind === Kind.INLINE_FRAGMENT) {
if (b.typeCondition) {
let a = b.typeCondition.name.value, o = i.getType(a);
if (!o || !isSelectionSetSatisfiedBySchema(i, o, b.selectionSet, s, c, d)) return !1;
} else if (!isSelectionSetSatisfiedBySchema(i, a, b.selectionSet, s, c, d)) return !1;
} else if (b.kind === Kind.FRAGMENT_SPREAD) {
let a = b.name.value, o = s[a];
if (!o) return !1;
let f = o.typeCondition.name.value, g = i.getType(f);
if (!g || !isSelectionSetSatisfiedBySchema(i, g, o.selectionSet, s, c, d)) return !1;
}
return !0;
}
function isSelectionSetSatisfied({ incoming: i, existing: a }) {
for (let o of i.selections) if (o.kind === Kind.FIELD) {
let i = a.find((i) => i.kind === Kind.FIELD && i.name.value === o.name.value && i.alias?.value === o.alias?.value);
if (!i || o.selectionSet && !i.selectionSet || o.selectionSet && i.selectionSet && !isSelectionSetSatisfied({
incoming: o.selectionSet,
existing: i.selectionSet.selections
})) return !1;
} else return !1;
return !0;
}
function addSelectionNodeToSelections(i, a) {
a.kind === Kind.FIELD && isFieldNodeSatisfiedBySelections(a, i) || i.add(a);
}
function addDependenciesNestedly(i, a, o, s) {
if (a.has(i.name.value)) return;
a.add(i.name.value);
let c = o[i.name.value];
if (c != null) for (let i of c) addSelectionNodeToSelections(s, i), addDependenciesNestedly(i, a, o, s);
}
function generateInlineFragment(i, a) {
return {
kind: Kind.INLINE_FRAGMENT,
typeCondition: {
kind: Kind.NAMED_TYPE,
name: {
kind: Kind.NAME,
value: i
}
},
selectionSet: a
};
}
var getSchemaMetaData = memoize2$1((i, a) => {
let o = i.getTypeMap(), s = a.getTypeMap(), c = /* @__PURE__ */ Object.create(null), d = /* @__PURE__ */ Object.create(null);
for (let a in o) {
let f = o[a];
if (isAbstractType(f)) {
let o = s[a];
if (isInterfaceType(f) && isInterfaceType(o)) {
let i = o.getFields(), s = f.getFields(), c = /* @__PURE__ */ Object.create(null), g = !0;
for (let a in s) i[a] || (c[a] = !0, g = !1);
g || (d[a] = c);
}
if (d[a] || !isAbstractType(o)) {
let o = i.getPossibleTypes(f);
c[a] = [];
for (let i of o) s[i.name] && c[a].push(i.name);
}
}
}
let f = i.extensions?.stitchingInfo;
return {
possibleTypesMap: c,
reversePossibleTypesMap: reversePossibleTypesMap(c),
interfaceExtensionsMap: d,
fieldNodesByType: f?.fieldNodesByType ?? {},
fieldNodesByField: f?.fieldNodesByField ?? {},
dynamicSelectionSetsByField: f?.dynamicSelectionSetsByField ?? {}
};
});
function reversePossibleTypesMap(i) {
let a = /* @__PURE__ */ Object.create(null);
for (let o in i) {
let s = i[o];
if (s) for (let i of s) a[i] || (a[i] = []), a[i].push(o);
}
return a;
}
function getExpandedFragments(i, a, o) {
let s = 0;
function c(i) {
let o;
do
o = `_${i}_Fragment${s.toString()}`, s++;
while (a.has(o));
return o;
}
let d = [], f = /* @__PURE__ */ Object.create(null);
for (let s of i) {
let i = o[s.typeCondition.name.value];
if (i != null) {
let o = s.name.value;
f[o] = [];
for (let g of i) {
let i = c(g);
a.add(i), d.push({
kind: Kind.FRAGMENT_DEFINITION,
name: {
kind: Kind.NAME,
value: i
},
typeCondition: {
kind: Kind.NAMED_TYPE,
name: {
kind: Kind.NAME,
value: g
}
},
selectionSet: s.selectionSet
}), f[o].push({
fragmentName: i,
typeName: g
});
}
}
}
return {
expandedFragments: d,
fragmentReplacements: f
};
}
function wrapConcreteTypes(i, a, o) {
let s = getNamedType(i);
if (isLeafType(s)) return o;
let c = isAbstractType(s) ? a.getPossibleTypes(s) : [s];
c.length === 0 && (c = [s]);
let d = getRootTypeNames(a), f = getTypeInfo(a), g = {
Document: ["definitions"],
OperationDefinition: ["selectionSet"],
SelectionSet: ["selections"],
InlineFragment: ["selectionSet"],
FragmentDefinition: ["selectionSet"]
};
return visit(o, visitWithTypeInfo(f, {
[Kind.FRAGMENT_DEFINITION]: (i) => {
let a = i.typeCondition.name.value;
if (!d.has(a)) return !1;
},
[Kind.FIELD]: (i) => {
let a = f.getType();
if (a) {
let o = getNamedType(a);
if (isAbstractType(o) && o.name !== s.name && c.length > 0) return {
...i,
selectionSet: {
kind: Kind.SELECTION_SET,
selections: c.map((a) => ({
kind: Kind.INLINE_FRAGMENT,
typeCondition: {
kind: Kind.NAMED_TYPE,
name: {
kind: Kind.NAME,
value: a.name
}
},
selectionSet: i.selectionSet
}))
}
};
}
}
}), g);
}
var Transformer = class {
transformations = [];
delegationContext;
hasOverlappingAliases = !1;
constructor(i) {
this.delegationContext = i;
let a = i.transforms.slice().reverse();
for (let i of a) this.addTransform(i);
}
addTransform(i, a = {}) {
this.transformations.push({
transform: i,
context: a
});
}
transformRequest(i) {
let a = {
...i,
document: prepareGatewayDocument(i.document, this.delegationContext)
};
for (let i of this.transformations) i.transform.transformRequest && (a = i.transform.transformRequest(a, this.delegationContext, i.context));
return finalizeGatewayRequest(a, this.delegationContext, () => {
this.hasOverlappingAliases = !0;
});
}
transformResult(i) {
let a = i;
for (let i = this.transformations.length - 1; i >= 0; i--) {
let o = this.transformations[i];
o?.transform.transformResult && (a = o.transform.transformResult(a, this.delegationContext, o.context));
}
return this.hasOverlappingAliases && (a = removeOverlappingAliases(a)), checkResultAndHandleErrors(a, this.delegationContext);
}
};
function removeOverlappingAliases(i) {
if (i != null) {
if (Array.isArray(i)) return i.map(removeOverlappingAliases);
if (typeof i == "object") {
let a = {};
for (let o in i) if (o.startsWith("_nullable_") || o.startsWith("_nonNullable_")) {
let s = o.replace(/^_nullable_/, "").replace(/^_nonNullable_/, "");
a[s] = removeOverlappingAliases(i[o]);
} else a[o] = removeOverlappingAliases(i[o]);
return a;
}
}
return i;
}
function getDelegatingOperation(i, a) {
return i === a.getMutationType() ? "mutation" : i === a.getSubscriptionType() ? "subscription" : "query";
}
function createRequest({ subgraphName: i, fragments: a, rootValue: o, targetOperationName: s, targetOperation: c, targetSchema: d, targetFieldName: f, selectionSet: g, fieldNodes: b, context: x, info: S, args: C }) {
let w;
if (g != null) w = g;
else {
let i = [];
for (let a of b || []) if (a.selectionSet) for (let o of a.selectionSet.selections) i.push(o);
w = i.length ? {
kind: Kind.SELECTION_SET,
selections: i
} : void 0;
}
let E = b?.[0], O = f ?? E?.name.value;
if (O === void 0) throw Error("Either \"targetFieldName\" or a non empty \"fieldNodes\" array must be provided.");
let A = S?.variableValues ? { ...S.variableValues } : {}, M = S?.operation.variableDefinitions ? [...S.operation.variableDefinitions] : [], F = [];
if (C != null) {
let i = (d == null ? void 0 : getDefinedRootType(d, c))?.getFields()[O]?.args;
for (let a in C) {
let o = C[a], s = i?.find((i) => i.name === a), c = E?.arguments?.find((i) => i.name.value === a);
if (c?.value.kind === Kind.VARIABLE) {
let i = c.value.name.value;
if (A[i] === o) {
F.push(c);
continue;
}
}
if (s) {
let i = astFromArg(s, d), c = (i) => M.some((a) => a.variable.name.value === i) || S?.variableValues?.[i] != null, f = a;
if (c(f)) {
f = `_${O}_${a}`;
let i = 0;
for (; c(f);) f = `_${i++}_${O}_${a}`;
}
M.push({
kind: Kind.VARIABLE_DEFINITION,
variable: {
kind: Kind.VARIABLE,
name: {
kind: Kind.NAME,
value: f
}
},
type: i.type
});
let g = projectArgumentValue(o, s.type);
g !== void 0 && (A[f] = g), F.push({
kind: Kind.ARGUMENT,
name: {
kind: Kind.NAME,
value: a
},
value: {
kind: Kind.VARIABLE,
name: {
kind: Kind.NAME,
value: f
}
}
});
} else {
let i = astFromValueUntyped$1(o);
i != null && F.push({
kind: Kind.ARGUMENT,
name: {
kind: Kind.NAME,
value: a
},
value: i
});
}
}
}
let I = {
kind: Kind.FIELD,
arguments: F,
name: {
kind: Kind.NAME,
value: O
},
selectionSet: w,
directives: E?.directives
}, R = s ? {
kind: Kind.NAME,
value: s
} : void 0, V = [{
kind: Kind.OPERATION_DEFINITION,
name: R,
operation: c,
variableDefinitions: M,
selectionSet: {
kind: Kind.SELECTION_SET,
selections: [I]
}
}];
a != null && V.push(...a);
let rP = {
kind: Kind.DOCUMENT,
definitions: V
};
return {
subgraphName: i,
document: rP,
variables: A,
rootValue: o,
operationName: s,
context: x,
info: S,
operationType: c
};
}
function projectArgumentValue(i, a) {
if (i == null) return i;
if (isNonNullType(a)) return projectArgumentValue(i, a.ofType);
if (isListType(a)) return asArray(i).map((i) => projectArgumentValue(i, a.ofType));
if (isInputObjectType(a) && typeof i == "object") {
let o = {}, s = a.getFields();
for (let a in i) {
let c = s[a];
if (c) {
let s = projectArgumentValue(i[a], c.type);
s !== void 0 && (o[a] = s);
}
}
return o;
}
return a.name === "Boolean" ? !!i : a.name === "Int" || a.name === "Float" ? Number(i) : a.name === "String" ? String(i) : i;
}
function defaultMergedResolver(i, a, o, s) {
if (!i) return null;
let c = getResponseKeyFromInfo$1(s);
if (!isExternalObject(i)) return defaultFieldResolver(i, a, o, s);
if (!Object.prototype.hasOwnProperty.call(i, c)) {
let a = getPlanLeftOverFromParent(i);
if (a) {
let d = a.missingFieldsParentMap.get(i);
d || (d = [], a.missingFieldsParentMap.set(i, d)), d.push(...s.fieldNodes.filter((i) => a.unproxiableFieldNodes.some((a) => a === i)));
let f = a.missingFieldsParentDeferredMap.get(i);
f || (f = /* @__PURE__ */ new Map(), a.missingFieldsParentDeferredMap.set(i, f));
let g = createDeferredPromise();
f.set(c, g);
let b = s.schema.extensions?.stitchingInfo, x = i?.__typename || s.parentType.name;
return (b?.fieldNodesByField?.[x]?.[s.fieldName])?.every((a) => {
let o = a.alias?.value ?? a.name.value;
return Object.prototype.hasOwnProperty.call(i, o);
}) ? handleResult(i, c, o, s) : handleLeftOver(i, o, s, a), g.promise;
}
return;
}
return handleResult(i, c, o, s);
}
function handleResult(i, a, o, s) {
let c = getSubschema(i, a), d = i[a], f = getUnpathedErrors(i), g = resolveExternalValue(d, f, c, o, s), b = getPlanLeftOverFromParent(i);
return b ? handleMaybePromise(() => g, (c) => (i[a] = c, handleLeftOver(i, o, s, b), c)) : g;
}
function handleLeftOver(i, a, o, s) {
let c = o.schema.extensions?.stitchingInfo;
if (c) for (let d of s.nonProxiableSubschemas) {
let f = o.parentType.name, g = /* @__PURE__ */ new Set(), b = c.mergedTypes[f]?.selectionSets.get(d);
b && g.add(b);
for (let i of s.unproxiableFieldNodes) {
let a = i.name.value, o = c.mergedTypes[f]?.fieldSelectionSets.get(d)?.[a];
o && g.add(o);
}
if (g.size) {
let b = {
kind: Kind.SELECTION_SET,
selections: Array.from(g).flatMap((i) => i.selections)
};
handleMaybePromise(() => flattenPromise(i), (g) => {
handleFlattenedParent(g, i, d, b, s, c, f, a, o);
});
}
}
}
function handleFlattenedParent(i, a, o, s, c, d, f, g, b) {
if (parentSatisfiedSelectionSet(i, s)) {
let s = c.missingFieldsParentMap.get(a);
if (s) {
let x = d.mergedTypes[f]?.resolvers.get(o);
if (x) {
Object.assign(a, i);
let d = {
kind: Kind.SELECTION_SET,
selections: s
};
handleMaybePromise(() => x(a, g, b, o, d, b.parentType, b.parentType), (i) => {
handleDeferredResolverResult(i, o, d, a, c, g, b);
}, (i) => handleDeferredResolverFailure(c, a, i));
}
}
} else for (let x of s.selections) if (x.kind === Kind.FIELD && x.selectionSet?.selections?.length) {
let S = x.alias?.value ?? x.name.value, C = i[S], w = x.selectionSet;
if (C != null && !parentSatisfiedSelectionSet(C, w)) {
async function E(x, E) {
let O = x.__typename, A = getSubschema(i, S);
if (A && O) {
let S = d.mergedTypes[O]?.delegationPlanBuilder(b.schema, A, b.variableValues != null && Object.keys(b.variableValues).length > 0 ? b.variableValues : EMPTY_OBJECT, b.fragments != null && Object.keys(b.fragments).length > 0 ? b.fragments : EMPTY_OBJECT, getActualFieldNodes(E), g, b);
if (S?.length) for (let i of S) for (let [a, o] of i) {
let i = d.mergedTypes[O]?.resolvers.get(a);
if (i) {
let s = d.mergedTypes[O].typeMaps.get(a)[O], c = await i(x, g, b, a, o, s, b.parentType);
c && handleResolverResult(c, a, o, x, x[FIELD_SUBSCHEMA_MAP_SYMBOL] ||= /* @__PURE__ */ new Map(), b, pathToArray$1(b.path), x[UNPATHED_ERRORS_SYMBOL] ||= []);
}
}
parentSatisfiedSelectionSet(C, w) && handleFlattenedParent(i, a, o, s, c, d, f, g, b);
}
}
Array.isArray(C) ? C.forEach((i) => E(i, x)) : E(C, x);
}
}
}
function handleDeferredResolverResult(i, a, o, s, c, d, f) {
handleResolverResult(i, a, o, s, s[FIELD_SUBSCHEMA_MAP_SYMBOL], f, pathToArray$1(f.path), s[UNPATHED_ERRORS_SYMBOL]);
let g = c.missingFieldsParentDeferredMap.get(s);
if (g) {
let i = f.schema.extensions?.stitchingInfo, a = s?.__typename || f.parentType.name, o = /* @__PURE__ */ new Set();
for (let [b, x] of g) if (Object.prototype.hasOwnProperty.call(s, b)) x.resolve(handleResult(s, b, d, f)), o.add(b);
else {
let o = i?.fieldNodesByField?.[a]?.[b];
o && o.every((i) => {
let a = i.alias?.value ?? i.name.value;
return Object.prototype.hasOwnProperty.call(s, a);
}) && setTimeout(() => {
handleLeftOver(s, d, f, c);
}, 0);
}
for (let i of o) g.delete(i);
g.size === 0 && c.missingFieldsParentDeferredMap.delete(s);
}
}
function handleDeferredResolverFailure(i, a, o) {
let s = i.missingFieldsParentDeferredMap.get(a);
if (s) {
for (let [i, a] of s) a.reject(o);
i.missingFieldsParentDeferredMap.delete(a);
}
}
function parentSatisfiedSelectionSet(i, a) {
if (Array.isArray(i)) {
let o = /* @__PURE__ */ new Set();
for (let s of i) {
let i = parentSatisfiedSelectionSet(s, a);
if (i === void 0) return;
for (let a of i) o.add(a);
}
return o;
}
if (i === null) return /* @__PURE__ */ new Set();
if (i === void 0) return;
let o = /* @__PURE__ */ new Set();
for (let s of a.selections) if (s.kind === Kind.FIELD) {
let a = s.alias?.value ?? s.name.value;
if (i[a] === void 0) return;
if (isExternalObject(i)) {
let s = getSubschema(i, a);
s && o.add(s);
}
if (i[a] === null) continue;
if (s.selectionSet != null) {
let c = parentSatisfiedSelectionSet(i[a], s.selectionSet);
if (c === void 0) return;
for (let i of c) o.add(i);
}
} else if (s.kind === Kind.INLINE_FRAGMENT) {
let a = parentSatisfiedSelectionSet(i, s.selectionSet);
if (a === void 0) return;
for (let i of a) o.add(i);
}
return o;
}
function flattenPromise(i) {
if (isPromise(i)) return i.then(flattenPromise);
if (Array.isArray(i)) return Promise.all(i.map(flattenPromise));
if (typeof i == "object" && i) {
let a = [], o = {};
for (let s in i) {
let c = flattenPromise(i[s]);
isPromise(c) ? a.push(c.then((i) => {
o[s] = i;
})) : o[s] = c;
}
return OBJECT_SUBSCHEMA_SYMBOL in i && (o[OBJECT_SUBSCHEMA_SYMBOL] = i[OBJECT_SUBSCHEMA_SYMBOL]), FIELD_SUBSCHEMA_MAP_SYMBOL in i && (o[FIELD_SUBSCHEMA_MAP_SYMBOL] = i[FIELD_SUBSCHEMA_MAP_SYMBOL]), UNPATHED_ERRORS_SYMBOL in i && (o[UNPATHED_ERRORS_SYMBOL] = i[UNPATHED_ERRORS_SYMBOL]), a.length ? Promise.all(a).then(() => o) : o;
}
return i;
}
function isSubschemaConfig(i) {
return !!i?.schema;
}
var getFragmentDefinitions = memoize1$1((i) => {
let a = i.fragments;
return Object.values(a);
});
function delegateToSchema(i) {
let { info: a, schema: o, rootValue: s = o.rootValue ?? a.rootValue, operationName: c = a.operation.name?.value, operation: d = getDelegatingOperation(a.parentType, a.schema), fieldName: f = a.fieldName, selectionSet: g, fieldNodes: b = a.fieldNodes, context: x, args: S } = i, C;
if (isSubschema(o)) C = o.transformedSchema;
else if (isSchema(o)) C = o;
else {
let i = (a.schema.extensions?.stitchingInfo)?.subschemaMap.get(o);
C = i == null ? applySchemaTransforms(o.schema, o) : i.transformedSchema;
}
let w = a ? getFragmentDefinitions(a) : void 0, E = createRequest({
subgraphName: o.name,
fragments: w,
targetSchema: C,
rootValue: s,
targetOperationName: c,
targetOperation: d,
targetFieldName: f,
selectionSet: g,
fieldNodes: b,
context: x,
info: a,
args: S
});
return delegateRequest({
...i,
targetSchema: C,
request: E
});
}
function getDelegationReturnType(i, a, o) {
let s = getDefinedRootType(i, a), c = s.getFields()[o];
if (!c) throw Error(`Unable to find field '${o}' in type '${s}'.`);
return c.type;
}
function delegateRequest(i) {
let a = getDelegationContext(i), o = new Transformer(a), s = o.transformRequest(i.request);
return i.validateRequest && validateRequest(a, s.document), handleMaybePromise(() => getExecutor(a)(s), function(i) {
return isAsyncIterable$2(i) ? a.operation === "query" && isListType(getNullableType(a.returnType)) ? new Repeater(async (a, s) => {
let c = 0, d = !1;
s.finally(() => {
d = !0;
});
try {
for await (let s of i) {
if (d) break;
if (s.incremental) {
let i = {};
for (let c of s.incremental) if (c.items?.length) {
for (let a of c.items) setObjectKeyPath(i, (c.path || []).slice(0, -1), a);
await a(await o.transformResult({ data: i }));
}
if (s.hasNext === !1) break;
continue;
}
let i = await o.transformResult(s);
if (Array.isArray(i)) for (let o = c; o < i.length && !d; o++) await a(await i[o]), c = o + 1;
else await a(await i);
}
s();
} catch (i) {
s(i);
}
}) : mapAsyncIterator(i, (i) => o.transformResult(i)) : o.transformResult(i);
});
}
function getDelegationContext({ request: i, schema: a, fieldName: o, returnType: s, info: c, args: d, transforms: f = [], targetSchema: g, skipTypeMerging: b = !1, onLocatedError: x }) {
let S = getOperationASTFromRequest$2(i), C;
C = o ?? S.selectionSet.selections[0].name.value;
let w = (c?.schema.extensions?.stitchingInfo)?.subschemaMap.get(a) ?? a, E = S.operation;
if (isSubschemaConfig(w)) {
let o = w.schema;
return {
subschema: a,
subschemaConfig: w,
targetSchema: o,
operation: E,
fieldName: C,
context: i.context,
info: c,
returnType: s ?? c?.returnType ?? getDelegationReturnType(o, E, C),
transforms: w.transforms == null ? f : w.transforms.concat(f),
transformedSchema: g,
skipTypeMerging: b,
onLocatedError: x,
args: d
};
}
return {
subschema: a,
subschemaConfig: void 0,
targetSchema: w,
operation: E,
fieldName: C,
context: i.context,
info: c,
returnType: s ?? c?.returnType ?? getDelegationReturnType(w, E, C),
transforms: f,
transformedSchema: g ?? w,
skipTypeMerging: b,
onLocatedError: x,
args: d
};
}
function validateRequest(i, a) {
let o = validate(i.targetSchema, a);
if (o.length > 0) {
if (o.length > 1) throw AggregateError(o, o.map((i) => i.message).join(", \n"));
let i = o[0];
if (i) throw i.originalError || i;
}
}
var GLOBAL_CONTEXT = {};
function getExecutor(i) {
let { subschemaConfig: a, targetSchema: o, context: s } = i, c = a?.executor || executorFromSchema(o);
if (a?.batch) {
let i = a?.batchingOptions;
c = getBatchingExecutor(s ?? GLOBAL_CONTEXT, c, i?.dataLoaderOptions, i?.extensionsReducer);
}
return c;
}
function setObjectKeyPath(i, a, o) {
let s = i;
for (let i = 0; i < a.length - 1; i++) {
let o = a[i];
if (o == null || o === "__proto__" || o === "constructor" || o === "prototype") return;
s[o] ?? (s[o] = typeof a[i + 1] == "number" ? [] : {}), s = s[o];
}
let c = a[a.length - 1];
if (c == null || c === "__proto__" || c === "constructor" || c === "prototype") return;
let d = s[c];
s[c] = d ? mergeDeep([d, o]) : o;
}
function generateProxyingResolvers(i) {
let a = i.schema, o = i.createProxyingResolver ?? defaultCreateProxyingResolver, s = getRootTypeMap(a), c = {};
for (let [a, d] of s.entries()) {
let s = d.name, f = d.getFields();
for (let d in c[s] = {}, f) {
let f = o({
subschemaConfig: i,
operation: a,
fieldName: d
}), g = createPossiblyNestedProxyingResolver(i, f);
a === "subscription" ? c[s][d] = {
subscribe: g,
resolve: identical
} : c[s][d] = { resolve: g };
}
}
return c;
}
function identical(i) {
return i;
}
function createPossiblyNestedProxyingResolver(i, a) {
return function(o, s, c, d) {
if (o != null) {
let a = getResponseKeyFromInfo(d);
if (isExternalObject(o)) {
let s = getUnpathedErrors(o), f = getSubschema(o, a);
if (i === f && o[a] !== void 0) return resolveExternalValue(o[a], s, f, c, d);
}
}
return a(o, s, c, d);
};
}
function defaultCreateProxyingResolver({ subschemaConfig: i, operation: a }) {
return function(o, s, c, d) {
return delegateToSchema({
schema: i,
operation: a,
rootValue: o,
args: s,
context: c,
info: d
});
};
}
var wrapSchema = memoize1(function(i) {
let a = i.schema, o = generateProxyingResolvers(i), s = createWrappingSchema(a, o);
return applySchemaTransforms(s, i);
});
function createWrappingSchema(i, a) {
return mapSchema(i, {
[MapperKind.ROOT_FIELD]: (i, o, s) => ({
...i,
...a[s]?.[o]
}),
[MapperKind.OBJECT_FIELD]: (i) => ({
...i,
resolve: defaultMergedResolver,
subscribe: void 0
}),
[MapperKind.OBJECT_TYPE]: (i) => {
let a = i.toConfig();
return new GraphQLObjectType({
...a,
isTypeOf: void 0
});
},
[MapperKind.INTERFACE_TYPE]: (i) => {
let a = i.toConfig();
return new GraphQLInterfaceType({
...a,
resolveType: void 0
});
},
[MapperKind.UNION_TYPE]: (i) => {
let a = i.toConfig();
return new GraphQLUnionType({
...a,
resolveType: void 0
});
},
[MapperKind.ENUM_VALUE]: (i) => ({
...i,
value: void 0
}),
[MapperKind.SCALAR_TYPE]: (i) => isSpecifiedScalarType(i) ? i : new GraphQLScalarType({
...i.toConfig(),
serialize: void 0,
parseValue: void 0,
parseLiteral: void 0
})
});
}
function getSchemaFromIntrospection(i, a) {
if (i?.data?.__schema) return buildClientSchema(i.data, a);
if (i?.errors) {
let a = i.errors.map((i) => createGraphQLError(i.message, i));
throw i.errors.length === 1 ? a[0] : AggregateError(a, "Could not obtain introspection result");
}
throw createGraphQLError(`Could not obtain introspection result, received the following as response;
${inspect(i)}`);
}
function schemaFromExecutor(i, a, o) {
let s = parse(getIntrospectionQuery(o), o);
return handleMaybePromise(() => handleMaybePromise(() => i({
document: s,
context: a
}), (i) => isAsyncIterable$1(i) ? i[Symbol.asyncIterator]().next().then(({ value: i }) => i) : i), (i) => getSchemaFromIntrospection(i, o));
}
const defaultAsyncFetch = (/* @__PURE__ */ __toESM(require_global_ponyfill())).fetch;
var import_browser = /* @__PURE__ */ __toESM((/* @__PURE__ */ __commonJSMin(((i, a) => {
var o = new TextEncoder(), s = new TextDecoder();
function c(...i) {
let a = new c.Request(...i), o = new XMLHttpRequest();
o.withCredentials = a.credentials === "include", o.timeout = a[d].timeout, o.open(a.method, a.url, !1);
let s = !1;
try {
o.responseType = "arraybuffer";
} catch {
o.overrideMimeType("text/plain; charset=x-user-defined"), s = !0;
}
for (let i of a.headers) o.setRequestHeader(...i);
o.send(a[d].body || null);
let f = o.getAllResponseHeaders();
f &&= f.split("\r\n").filter(Boolean).map((i) => i.split(": ", 2));
let g = o.response;
if (s) {
let i = new Uint8Array(g.length);
for (let a = 0; a < g.length; a++) i[a] = g.charCodeAt(a) & 255;
g = i;
}
let b = new c.Response(g, {
headers: f,
status: o.status,
statusText: o.statusText
});
return b[d].url = o.responseURL, b[d].redirected = o.responseURL !== a.url, b;
}
var d = Symbol("SyncFetch Internals"), f = [
"mode",
"cache",
"redirect",
"referrer",
"integrity"
], g = {
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"
}, b = class i {
constructor(a, o = {}) {
for (let i of f) if (i in o) throw TypeError(`option ${i} not supported`);
if (o.credentials === "same-origin") throw TypeError("option credentials with value 'same-origin' not supported");
if (this[d] = {
method: o.method || "GET",
headers: new c.Headers(o.headers),
body: E(o.body),
credentials: o.credentials || "omit",
timeout: o.timeout || 0
}, typeof a == "string") this[d].url = a;
else if (a instanceof i) this[d].url = a.url, o.method || (this[d].method = a.method), o.headers || (this[d].headers = a.headers), o.body || (this[d].body = a[d].body), o.credentials || (this[d].credentials = a.credentials);
else throw TypeError("Request input should be a URL string or a Request object");
}
get cache() {
return "default";
}
get credentials() {
return this[d].credentials;
}
get destination() {
return "";
}
get headers() {
return this[d].headers;
}
get integrity() {
return "";
}
get method() {
return this[d].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[d].url;
}
clone() {
return C(this), new i(this.url, this[d]);
}
}, x = class i {
constructor(i, a = {}) {
this[d] = {
body: E(i),
bodyUsed: !1,
headers: new c.Headers(a.headers),
status: a.status,
statusText: a.statusText
};
}
get headers() {
return this[d].headers;
}
get ok() {
let i = this[d].status;
return i >= 200 && i < 300;
}
get redirected() {
return this[d].redirected;
}
get status() {
return this[d].status;
}
get statusText() {
return this[d].statusText;
}
get url() {
return this[d].url;
}
clone() {
return this.redirect(this[d].url, this[d].status);
}
redirect(a, o) {
C(this);
let s = new i(this[d].body, {
headers: this[d].headers,
status: o || this[d].status,
statusText: g[o] || this[d].statusText
});
return s[d].url = a || this[d].url, s[d].redirected = this[d].redirected, s;
}
}, S = class i {
constructor(i) {
this[d] = {
body: E(i),
bodyUsed: !1
};
}
get bodyUsed() {
return this[d].bodyUsed;
}
static mixin(a) {
for (let o of Object.getOwnPropertyNames(i.prototype)) {
if (o === "constructor") continue;
let s = Object.getOwnPropertyDescriptor(i.prototype, o);
Object.defineProperty(a, o, {
...s,
enumerable: !0
});
}
}
arrayBuffer() {
let i = w(this);
return i.buffer.slice(i.byteOffset, i.byteOffset + i.byteLength);
}
blob() {
let i = this.headers && this.headers.get("content-type");
return new Blob([w(this)], i && { type: i });
}
text() {
return s.decode(w(this));
}
json() {
try {
return JSON.parse(this.text());
} catch (i) {
throw TypeError(`invalid json response body at ${this.url} reason: ${i.message}`, "invalid-json");
}
}
};
function C(i) {
if (i.bodyUsed) throw TypeError(`body used already for: ${i.url}`);
}
function w(i) {
return C(i), i[d].bodyUsed = !0, i[d].body || new Uint8Array();
}
function E(i) {
return typeof i == "string" ? o.encode(i) : i || null;
}
S.mixin(b.prototype), S.mixin(x.prototype), c.Headers = class {
constructor(i) {
if (i instanceof c.Headers) this[d] = { ...i[d] };
else if (this[d] = {}, Array.isArray(i)) for (let [a, o] of i) this.append(a, o);
else if (typeof i == "object") for (let a in i) this.set(a, i[a]);
}
append(i, a) {
i = i.toLowerCase(), this[d][i] || (this[d][i] = []), this[d][i].push(a);
}
delete(i) {
delete this[d][i.toLowerCase()];
}
set(i, a) {
this[d][i.toLowerCase()] = [a];
}
entries() {
let i = [];
for (let a in this[d]) for (let o of this[d][a]) i.push([a, o]);
return i;
}
get(i) {
return i = i.toLowerCase(), i in this[d] ? this[d][i].join(", ") : null;
}
keys() {
return Object.keys(this[d]);
}
has(i) {
return i.toLowerCase() in this[d];
}
values() {
let i = [];
for (let a in this[d]) for (let o of this[d][a]) i.push(o);
return i;
}
*[Symbol.iterator]() {
for (let i in this[d]) for (let a of this[d][i]) yield [i, a];
}
}, c.Request = b, c.Response = x, a.exports = c;
})))());
const defaultSyncFetch = (i, a) => (typeof i == "string" ? delete a?.signal : delete i.signal, (0, import_browser.default)(i, a));
var asyncImport = (i) => import(`${i}`), syncImport = (a) => __require(`${a}`), SubscriptionProtocol;
(function(i) {
i.WS = "WS", i.LEGACY_WS = "LEGACY_WS", i.SSE = "SSE", i.GRAPHQL_SSE = "GRAPHQL_SSE";
})(SubscriptionProtocol ||= {});
var acceptableProtocols = [
"http:",
"https:",
"ws:",
"wss:"
];
function isCompatibleUri(i) {
return acceptableProtocols.some((a) => i.startsWith(a)) ? isUrl(i) : !1;
}
var UrlLoader = class {
buildHTTPExecutor(i, a, o) {
let s = switchProtocols(i, {
wss: "https",
ws: "http"
});
return buildHTTPExecutor({
endpoint: s,
fetch: a,
...o
});
}
buildWSExecutor(i, a, o) {
let s = {
url: switchProtocols(i, {
https: "wss",
http: "ws"
}),
webSocketImpl: a,
connectionParams: o
};
return buildGraphQLWSExecutor(s);
}
buildWSLegacyExecutor(i, a, o) {
let s = switchProtocols(i, {
https: "wss",
http: "ws"
});
return buildWSLegacyExecutor(s, a, o);
}
getFetch(i, a) {
if (i) {
if (typeof i == "string") {
let [o, s] = i.split("#");
return handleMaybePromise(() => a(o), (i) => s ? i[s] : i);
} else if (typeof i == "function") return i;
}
return a === asyncImport ? defaultAsyncFetch : defaultSyncFetch;
}
getDefaultMethodFromOptions(i, a) {
return i && (a = i), a;
}
getWebSocketImpl(i, a) {
if (typeof a?.webSocketImpl == "string") {
let [o, s] = a.webSocketImpl.split("#");
return handleMaybePromise(() => i(o), (i) => s ? i[s] : i);
} else return a?.webSocketImpl || browser_default;
}
buildSubscriptionExecutor(i, a, o, s) {
return s?.subscriptionsProtocol === SubscriptionProtocol.SSE ? this.buildHTTPExecutor(i, a, s) : s?.subscriptionsProtocol === SubscriptionProtocol.GRAPHQL_SSE ? (s?.subscriptionsEndpoint || (i += "/stream"), this.buildHTTPExecutor(i, a, s)) : (a) => handleMaybePromise(() => handleMaybePromise(() => this.getWebSocketImpl(o, s), (a) => s?.subscriptionsProtocol === SubscriptionProtocol.LEGACY_WS ? this.buildWSLegacyExecutor(i, a, s) : this.buildWSExecutor(i, a, s?.connectionParams)), (i) => i(a));
}
getExecutor(i, a, o) {
let s, c = () => handleMaybePromise(() => s ||= this.getFetch(o?.customFetch, a), (a) => this.buildHTTPExecutor(i, a, o)), d = () => f ||= c(), f;
if (o?.subscriptionsEndpoint != null || o?.subscriptionsProtocol !== SubscriptionProtocol.SSE) {
let c = handleMaybePromise(() => s ||= this.getFetch(o?.customFetch, a), (s) => {
let c = o?.subscriptionsEndpoint || i;
return this.buildSubscriptionExecutor(c, s, a, o);
});
function f(i) {
return i.operationType = i.operationType || getOperationASTFromRequest(i)?.operation, i.operationType === "subscription" && isLiveQueryOperationDefinitionNode(getOperationASTFromRequest(i)) && (i.operationType = "subscription"), i.operationType === "subscription" ? c : d();
}
return (i) => handleMaybePromise(() => f(i), (a) => a(i));
} else return (i) => handleMaybePromise(d, (a) => a(i));
}
getExecutorAsync(i, a) {
return this.getExecutor(i, asyncImport, a);
}
getExecutorSync(i, a) {
return this.getExecutor(i, syncImport, a);
}
handleSDL(i, a, o) {
let s = this.getDefaultMethodFromOptions(o?.method, "GET");
return handleMaybePromise(() => a(i, {
method: s,
headers: typeof o?.headers == "function" ? o.headers() : o?.headers
}), (a) => handleMaybePromise(() => a.text(), (a) => parseGraphQLSDL(i, a, o)));
}
async load(i, a) {
if (!isCompatibleUri(i)) return [];
let o = { location: i }, s;
if (a?.handleAsSDL || i.endsWith(".graphql") || i.endsWith(".graphqls")) {
let s = await this.getFetch(a?.customFetch, asyncImport);
if (o = await this.handleSDL(i, s, a), !o.schema && !o.document && !o.rawSDL) throw Error("Invalid SDL response");
o.schema = o.schema || (o.document ? buildASTSchema(o.document, a) : o.rawSDL ? buildSchema(o.rawSDL, a) : void 0);
} else s = this.getExecutorAsync(i, a), o.schema = await schemaFromExecutor(s, {}, a);
if (!o.schema) throw Error("Invalid introspected schema");
return a?.endpoint && (s = this.getExecutorAsync(a.endpoint, a)), s && (o.schema = wrapSchema({
schema: o.schema,
executor: s,
batch: a?.batch
})), [o];
}
loadSync(i, a) {
if (!isCompatibleUri(i)) return [];
let o = { location: i }, s;
if (a?.handleAsSDL || i.endsWith(".graphql") || i.endsWith(".graphqls")) {
let s = this.getFetch(a?.customFetch, syncImport);
if (o = this.handleSDL(i, s, a), !o.schema && !o.document && !o.rawSDL) throw Error("Invalid SDL response");
o.schema = o.schema || (o.document ? buildASTSchema(o.document, a) : o.rawSDL ? buildSchema(o.rawSDL, a) : void 0);
} else s = this.getExecutorSync(i, a), o.schema = schemaFromExecutor(s, {}, a);
if (!o.schema) throw Error("Invalid introspected schema");
return a?.endpoint && (s = this.getExecutorSync(a.endpoint, a)), s && (o.schema = wrapSchema({
schema: o.schema,
executor: s
})), [o];
}
};
function switchProtocols(i, a) {
return Object.entries(a).reduce((i, [a, o]) => i.replace(`${a}://`, `${o}://`).replace(`${a}:\\`, `${o}:\\`), i);
}
var import_lodash$3 = /* @__PURE__ */ __toESM(require_lodash());
const EXPECTED_ERROR_REASON = "Expected error reason", useEndpoint = (i) => {
let [a, o] = useState(i.defaultEndpoint ?? null), [s, c] = useState(null), [d, f] = useState(!1), g = useRef(null), b = useRef(!1), x = useCallback((i) => {
let a = i ? JSON.stringify(i) : null;
a !== g.current && (g.current = a, c(i));
}, []), S = useCallback((a) => {
o(a), i.onEndpointChange?.(a);
}, [i]), C = useMemo(() => s ? buildClientSchema(s) : null, [s]), w = useMemo(() => new UrlLoader(), []), E = useRef(i.operationsApi?.activeOperation?.headers), O = useRef(i.envApi?.env?.variables), A = useRef(i.pluginsApi?.pluginsState);
E.current = i.operationsApi?.activeOperation?.headers, O.current = i.envApi?.env?.variables, A.current = i.pluginsApi?.pluginsState;
let M = useMemo(() => (0, import_lodash$3.debounce)(async (o, s) => {
f(!0);
try {
if (a === i.defaultEndpoint && i.defaultSchemaIntrospection && !s?.force && !b.current) {
x(i.defaultSchemaIntrospection ?? null);
return;
}
if (!a) {
x(null);
return;
}
let c = s?.env?.variables ?? O.current ?? {}, d = s?.pluginsState ?? A.current ?? {}, f = {};
if (i.settingsApi?.settings.introspection.headers) try {
f = JSON.parse(i.settingsApi?.settings.introspection.headers);
} catch {}
if (i.settingsApi?.settings.introspection.includeActiveOperationHeaders && E.current) try {
f = {
...f,
...JSON.parse(E.current)
};
} catch {}
let g = JSON.stringify(f);
if (g.includes("{{")) try {
let a = await i.preflightApi?.runPreflight?.(i.pluginsApi?.plugins ?? [], i.pluginsApi?.pluginsState ?? {});
i?.envApi?.setEnv(a?.env ?? { variables: {} }), i?.pluginsApi?.setPluginsState(a?.pluginsState ?? {}), c = a?.env?.variables ?? {}, d = a?.pluginsState ?? {}, a?.headers && (g = JSON.stringify({
...f,
...a?.headers
}));
} catch {
toast.error("Failed to run preflight");
}
let S = {};
try {
S = JSON.parse(handleTemplate(g, {
...c,
plugins: d
}));
} catch {
toast.error("Failed to parse headers"), S = {};
}
let C = await w.load(a, {
subscriptionsEndpoint: a,
subscriptionsProtocol: i.settingsApi?.settings.subscriptions.protocol ?? SubscriptionProtocol.GRAPHQL_SSE,
headers: S,
credentials: i.settingsApi?.settings.fetch.credentials,
specifiedByUrl: !0,
directiveIsRepeatable: !0,
inputValueDeprecation: !0,
timeout: i.settingsApi?.settings.fetch.timeout,
useGETForQueries: i.settingsApi?.settings.fetch.useGETForQueries,
exposeHTTPDetailsInExtensions: !0,
descriptions: i.enableDocs === !0,
method: i.settingsApi?.settings.introspection.method ?? "POST",
fetch: (i, a) => fetch(i, {
...a,
signal: o
})
});
if (C.length === 0 || !C[0].schema) throw Error("Failed to fetch schema");
x(introspectionFromSchema(C[0].schema));
} catch (i) {
if (i && typeof i == "object" && "message" in i && typeof i.message == "string") {
if (i.message === "Expected error reason") return;
toast.error(i.message);
} else toast.error("Failed to fetch schema");
throw x(null), i;
} finally {
f(!1);
}
}, 500), [
x,
a,
i.defaultEndpoint,
i.defaultSchemaIntrospection,
i.enableDocs,
i.settingsApi?.settings.fetch.timeout,
i.settingsApi?.settings.introspection.method,
i.settingsApi?.settings.introspection.headers,
i.settingsApi?.settings.introspection.includeActiveOperationHeaders
]);
useEffect(() => () => {
M.cancel(), f(!1);
}, [M]), useEffect(() => {
b.current = !1;
}, [a, i.defaultSchemaIntrospection]);
let F = useCallback(() => {
b.current = !0, f(!0), M(void 0, { force: !0 });
}, [M]), I = useMemo(() => a !== i.defaultEndpoint || !i.defaultSchemaIntrospection, [
a,
i.defaultEndpoint,
i.defaultSchemaIntrospection
]), R = useMemo(() => I && i.settingsApi?.settings.introspection.pollSchema !== !1, [I, i.settingsApi?.settings.introspection.pollSchema]);
useEffect(() => {
if (!R || !a) return;
let i = new AbortController();
return asyncInterval(async () => {
try {
await M(i.signal);
} catch {
i.abort(/* @__PURE__ */ Error("Aborted because of schema polling error"));
}
}, 5e3, i.signal), () => {
i.abort(Error(EXPECTED_ERROR_REASON));
};
}, [R, M]);
let V = useCallback(() => {
i.defaultEndpoint && S(i.defaultEndpoint);
}, [i.defaultEndpoint]);
return useEffect(() => {
if (a && !R) {
let i = new AbortController();
return M(i.signal), () => {
i.abort(Error(EXPECTED_ERROR_REASON));
};
}
}, [
a,
M,
R
]), useEffect(() => {
if (!a || !R) return;
let o = new AbortController();
return M(o.signal, {
env: i.envApi?.env ?? void 0,
pluginsState: i.pluginsApi?.pluginsState
}), () => {
o.abort(Error(EXPECTED_ERROR_REASON));
};
}, [
a,
R,
M,
i.settingsApi?.settings.introspection.headers,
i.settingsApi?.settings.introspection.includeActiveOperationHeaders
]), {
endpoint: a,
setEndpoint: S,
schema: C,
introspection: s,
fetchSchema: M,
reloadSchema: F,
restoreDefaultEndpoint: V,
defaultEndpoint: i.defaultEndpoint ?? null,
canIntrospect: I,
shouldPollSchema: R,
isFetchingSchema: d
};
}, useEnv = (i) => {
let [a, o] = useState(i.defaultEnv ?? { variables: {} }), s = useCallback((a) => {
o(a), i.onEnvChange?.(a);
}, [i]);
return {
env: a,
setEnv: s
};
}, useHistory = (i) => {
let [a, o] = useState(i.defaultHistory ?? []), s = useRef(a);
useEffect(() => {
s.current = a;
}, [a]);
let c = useCallback((s) => {
let c = {
...s,
id: v4_default()
}, d = [...a, c];
return o(d), i.onHistoryChange?.(d), i.onHistoryCreate?.(c), c;
}, [a, i]), d = useCallback((a, c) => {
let d = s.current.find((i) => i.id === a);
if (d && "responses" in d) {
let f = [...d.responses, {
createdAt: (/* @__PURE__ */ new Date()).toISOString(),
data: c
}], g = {
...d,
responses: f
}, b = s.current.map((i) => i.id === a ? g : i);
o(b), i.onHistoryChange?.(b), i.onHistoryUpdate?.(g);
}
}, [i]), f = useCallback((a) => {
let c = s.current.find((i) => i.id === a), d = s.current.filter((i) => i.id !== a);
o(d), i.onHistoryChange?.(d), c && i.onHistoryDelete?.(c);
}, [i]), g = useCallback(() => {
let a = [...s.current];
if (o([]), i.onHistoryChange?.([]), i.onHistoryDelete) for (let o of a) i.onHistoryDelete(o);
}, [i]), b = useCallback((a) => {
let c = s.current.filter((i) => format(new Date(i.createdAt), "dd MMM yyyy") === a), d = s.current.filter((i) => format(new Date(i.createdAt), "dd MMM yyyy") !== a);
if (o(d), i.onHistoryChange?.(d), i.onHistoryDelete) for (let a of c) i.onHistoryDelete(a);
}, [i]);
return {
history: a,
addHistory: c,
addResponseToHistory: d,
deleteHistory: f,
deleteAllHistory: g,
deleteHistoryByDay: b
};
};
function keepEditorMouseMovesInShadowRoot(i) {
let a = (i) => {
let a = i.target;
typeof a?.closest == "function" && a.closest(".monaco-editor") && i.stopPropagation();
};
return i.addEventListener("mousemove", a), () => i.removeEventListener("mousemove", a);
}
function getOperationType$1(i) {
try {
return getOperationAST(parse(i))?.operation ?? null;
} catch {
return null;
}
}
var getOperationWithFragments = (i, a) => {
let o = i.definitions.filter((i) => !(i.kind === Kind.OPERATION_DEFINITION && a && i.name?.value !== a));
return {
kind: Kind.DOCUMENT,
definitions: o
};
};
const useOperations = (i) => {
let [a, o] = useState(i.defaultOperations ?? []), s = useMemo(() => {
let o = i.tabsApi?.activeTab;
return o && o.type === "operation" ? a.find((i) => i.id === o.data.id) ?? null : null;
}, [i.tabsApi, a]), c = useCallback((a) => {
let o = i.tabsApi?.tabs.find((i) => i.type === "operation" && i.data.id === a) ?? null;
o && i.tabsApi?.setActiveTab(o);
}, [i.tabsApi]), d = useCallback((a) => {
o(a), i.onOperationsChange?.(a);
}, [i]), f = useCallback((s) => {
let c = {
id: v4_default(),
...s
}, d = [...a, c];
return o(d), i.onOperationsChange?.(d), i.onOperationCreate?.(c), c;
}, [a, i]);
useEffect(() => {
let a = new URLSearchParams(window.location.search).get("share");
if (a) {
let o = decompressFromEncodedURIComponent(a);
if (o) {
let { n: a, q: s, v: c, h: d, e: g } = JSON.parse(o), b = f({
name: a,
query: s,
variables: c,
headers: d,
extensions: g
}), x = i.tabsApi?.addTab({
type: "operation",
data: b
});
x && i.tabsApi?.setActiveTab(x);
let S = new URLSearchParams(window.location.search);
S.delete("share"), window.history.replaceState(null, "", window.location.pathname + "?" + S.toString());
}
}
}, []);
let g = useCallback((c) => {
let d = {
...s,
...c
};
if (d.query) {
let i = getOperationName(d.query);
i && (d.name = i);
}
let f = a.map((i) => i.id === s?.id ? d : i);
if (o(f), i.onOperationsChange?.(f), d.id && i.onOperationUpdate?.(d), i.collectionsApi && i.checkPermissions?.("collectionsOperations:update") && s?.id) {
let a = i.collectionsApi.collections.find((i) => i.operations.some((i) => i.id === s.id))?.id ?? "";
i.collectionsApi.updateOperationInCollection(a, s.id, d);
}
}, [
s,
a,
i.checkPermissions,
i.collectionsApi
]), b = useCallback((d) => {
let f = a.find((i) => i.id === d), g = a.filter((i) => i.id !== d);
o(g), i.onOperationsChange?.(g), f && i.onOperationDelete?.(f), s?.id === d && c(g[0]?.id ?? "");
}, [
s,
a,
i,
c
]), x = useCallback((i, a) => {
if (!s) return;
let o = {
...s,
query: addPathToQuery(s.query, i, a)
};
g(o);
}, [s, g]), S = useCallback((i, a) => {
if (!s?.query) return;
let o = {
...s,
query: deletePathFromQuery(s.query, i, a)
};
g(o);
}, [s, g]), C = useCallback((i, a, o, c) => {
if (!s?.query) return;
let d = {
...s,
query: addArgToField(s.query, i, a, o, c)
};
g(d);
}, [s, g]), w = useCallback((i, a, o) => {
if (!s?.query) return;
let c = {
...s,
query: removeArgFromField(s.query, i, a, o)
};
g(c);
}, [s, g]), [E, O] = useState({}), A = useCallback((i) => Object.keys(E).includes(i), [E]), M = useMemo(() => s ? A(s.id) : !1, [s, A]), F = useMemo(() => new UrlLoader(), []), I = useCallback(async (a, o, c = i.pluginsApi?.plugins ?? [], d = i.pluginsApi?.pluginsState ?? {}) => {
if (!s?.query) return null;
let f, g;
if (o?.env) f = o.env, g = o.headers ?? {};
else {
let a = await i.preflightApi?.runPreflight?.(c, d);
f = a?.env ?? { variables: {} }, g = a?.headers ?? {}, d = a?.pluginsState ?? {}, i.pluginsApi?.setPluginsState(d);
}
f && Object.keys(f?.variables ?? {}).length > 0 ? i.envApi?.setEnv(f) : f = i.envApi?.env ?? { variables: {} };
let b = s.headers ? JSON.parse(handleTemplate(s.headers, {
...f.variables,
plugins: d
})) : {}, x = {
...g,
...b
}, S = s.variables ? JSON.parse(handleTemplate(s.variables, {
...f.variables,
plugins: d
})) : {}, C = s.extensions ? JSON.parse(handleTemplate(s.extensions, {
...f.variables,
plugins: d
})) : {}, w = F.getExecutorAsync(a, {
subscriptionsEndpoint: a,
subscriptionsProtocol: i.settingsApi?.settings.subscriptions.protocol ?? SubscriptionProtocol.GRAPHQL_SSE,
credentials: i.settingsApi?.settings.fetch.credentials,
specifiedByUrl: !0,
directiveIsRepeatable: !0,
inputValueDeprecation: !0,
timeout: i.settingsApi?.settings.fetch.timeout,
useGETForQueries: i.settingsApi?.settings.fetch.useGETForQueries,
exposeHTTPDetailsInExtensions: !0,
fetch
}), E = getOperationWithFragments(parse(s.query)), A = new AbortController();
O((i) => ({
...i,
[s.id]: () => {
A.abort("Operation aborted by user");
}
}));
try {
let i = await w({
document: E,
operationName: o?.operationName,
variables: S,
extensions: {
...C,
headers: x
},
signal: A.signal
});
if (isAsyncIterable(i)) {
try {
for await (let a of i) o?.onResponse?.(JSON.stringify(a ?? {}));
} finally {
O((i) => {
let a = { ...i };
return delete a[s.id], a;
});
}
return null;
}
return i.extensions?.response?.body && delete i.extensions.response.body, O((i) => {
let a = { ...i };
return delete a[s.id], a;
}), i;
} catch (i) {
return O((i) => {
let a = { ...i };
return delete a[s.id], a;
}), A.signal.aborted ? null : i instanceof Error ? new GraphQLError(i.message) : new GraphQLError("An unknown error occurred");
}
}, [
s,
i.preflightApi,
i.envApi,
i.pluginsApi,
i.settingsApi
]), R = useCallback((i) => getOperationType$1(i.query) === "subscription", []), V = useMemo(() => s ? R(s) : !1, [s, R]);
return {
operations: a,
setOperations: d,
runActiveOperation: I,
setActiveOperation: c,
activeOperation: s,
addOperation: f,
updateActiveOperation: g,
deleteOperation: b,
addPathToActiveOperation: x,
deletePathFromActiveOperation: S,
addArgToActiveOperation: C,
deleteArgFromActiveOperation: w,
isActiveOperationLoading: M,
stopActiveOperation: E[s?.id ?? ""],
isActiveOperationSubscription: V,
isOperationSubscription: R,
isOperationLoading: A
};
}, usePlugins = (i) => {
let [a, o] = useState({
...i.plugins?.reduce((i, a) => (i[a.id] = a.defaultState ?? {}, i), {}),
...i.defaultPluginsState
}), s = useCallback((a) => {
o(a), i.onPluginsStateChange?.(a);
}, [i]);
return {
plugins: i.plugins ?? [],
pluginsState: a,
setPluginsState: s
};
};
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 readLineAndColumn = (i, a = 0) => {
let o = i?.match(/<anonymous>:(\d+):(\d+)/);
return o ? {
line: Number(o[1]) - 3,
column: Number(o[2]) - a
} : {};
}, PREFLIGHT_TIMEOUT = 3e4, isValidEnvValue = (i) => i === null || [
"string",
"number",
"boolean"
].includes(typeof i), usePreflightPrompt = () => {
let [i, a] = useState(!1), [o, s] = useState({}), c = useRef(void 0), d = useCallback((i) => {
let a = c.current;
c.current = void 0, a?.(i);
}, []), f = useCallback((i) => {
d(null), c.current = i.onSubmit, s({
title: i.title,
description: i.description,
placeholder: i.placeholder,
defaultValue: i.defaultValue,
onSubmit: d
}), setTimeout(() => {
a(!0);
}, 200);
}, [d]), g = useCallback(() => {
d(null), a(!1);
}, [d]);
return {
isPreflightPromptModalOpen: i,
setIsPreflightPromptModalOpen: a,
preflightPromptModalProps: o,
openPreflightPromptModal: f,
closePreflightPromptModal: g
};
}, usePreflight = (i) => {
let [a, o] = useState(i.defaultPreflight ?? null), [s, c] = useState(() => i.defaultPreflight?.lastTestResult?.logs ?? []), [d, f] = useState(0), g = useRef(/* @__PURE__ */ new Set()), b = useCallback((a) => {
o(a), i.onPreflightChange?.(a);
}, [i]), { openPreflightPromptModal: x, closePreflightPromptModal: S } = i, C = useCallback(async (a, o, s) => {
let d = new AbortController();
g.current.add(d), f(g.current.size);
try {
return await runIsolatedLabScript(a, i.envApi?.env ?? { variables: {} }, x ? (i, a, o) => new Promise((s) => x({
title: i,
defaultValue: a,
placeholder: o?.placeholder,
description: o?.description,
onSubmit: s
})) : void 0, o, s, {
signal: d.signal,
onLog: (i) => c((a) => [...a, i])
});
} finally {
g.current.delete(d), f(g.current.size);
}
}, [i.envApi.env, x]), w = useCallback(async (i, o) => a?.enabled ? C(a.script, i, o) : null, [a, C]), E = useCallback(async (i, o) => C(a?.script ?? "", i, o), [a?.script, C]), O = useCallback(() => {
for (let i of g.current) i.abort();
g.current.clear(), f(0), S?.();
}, [S]), A = useCallback(() => {
c([]);
}, []), M = useCallback((s) => {
o({
...a ?? {
script: "",
enabled: !0
},
lastTestResult: s
}), i.onPreflightChange?.({
...a ?? {
script: "",
enabled: !0
},
lastTestResult: s
});
}, [a, i]);
return {
preflight: a,
preflightLogs: s,
isPreflightRunning: d > 0,
setPreflight: b,
runPreflight: w,
testPreflight: E,
abortPreflight: O,
clearPreflightLogs: A,
setLastTestResult: M
};
};
async function runIsolatedLabScript(i, a, o, s = [], c = {}, d) {
let f = s.filter((i) => i.preflight?.lab?.object).map((i) => i.preflight?.lab?.object);
return new Promise((g) => {
let b = new Blob([crypto_js_default.replace("}(this, function () {", "}(self, function () {"), `
const env = {
variables: ${JSON.stringify(a?.variables)} || {},
};
let promptResolve = null;
// Declared out here because the catch below needs it too, and a const inside the try
// would be out of scope exactly when a script has just failed.
const readLineAndColumn = ${readLineAndColumn.toString()};
self.onmessage = async (event) => {
if (event.data.type === 'prompt:result') {
promptResolve?.(event.data.value || null);
}
if (event.data.type === 'init') {
try {
// 'console.'.length: the reported column points at the member, not the statement.
const postLog = (level) => (...args) => {
self.postMessage({
type: 'log',
level,
message: args,
...readLineAndColumn(new Error().stack, 8),
});
};
self.console = {
log: postLog('log'),
warn: postLog('warn'),
error: postLog('error'),
info: postLog('info'),
};
let state = ${JSON.stringify(c)};
const setState = (id, newState) => {
Object.assign(state[id] ?? {}, newState);
};
const isValidEnvValue = ${isValidEnvValue.toString()};
const lab = Object.freeze({
environment: {
get: (key) => env.variables[key],
set: (key, value) => {
if (!isValidEnvValue(value)) {
console.warn(
'lab.environment stores strings, numbers, booleans and null. The value for "' + key + '" was dropped.'
);
// Dropping the key too, so an older value can't survive under a name the
// script believes it just overwrote.
delete env.variables[key];
return;
}
env.variables[key] = value;
},
delete: (key) => {
delete env.variables[key];
}
},
request: {
headers: new Headers()
},
prompt: (title, defaultValue, options) => {
return new Promise((resolve) => {
promptResolve = resolve;
self.postMessage({ type: 'prompt', title, defaultValue, options: options ?? {} });
});
},
plugins: {
${f.map((i) => i?.toString()).map((i) => i?.startsWith("object") ? `function${i.slice(6)}` : i).map((i, a) => `
...(${i})(${JSON.stringify(s[a].preflight?.lab?.props ?? {})}, state['${s[a].id}'] ?? {}, (newState) => setState('${s[a].id}', newState))
`).join(",")}
}
});
// Make CryptoJS available globally in the script context.
// The script sits on its own line so reported lines and columns map back to it
// by a fixed offset, rather than the first line being shifted by 'with(lab){'.
const AsyncFunction = async function () {}.constructor;
await new AsyncFunction('lab', 'CryptoJS', 'with(lab){\\n' + event.data.script + '\\n}')(lab, CryptoJS);
self.postMessage({ type: 'result', env: env, headers: Object.fromEntries(lab.request.headers.entries()), pluginsState: state });
} catch (err) {
self.postMessage({
type: 'log',
level: 'error',
message: [err && err.message ? err.message : String(err)],
...readLineAndColumn(err && err.stack),
});
self.postMessage({ type: 'result', error: err.message || String(err) });
}
}
};
`], { type: "application/javascript" }), x = [], S = {}, C = URL.createObjectURL(b), w = new Worker(C, { type: "module" }), E = !1, O = (i) => {
x.push(i), d?.onLog?.(i);
}, A, M = () => {
clearTimeout(A), A = void 0;
}, F = () => {
M(), A = setTimeout(() => {
O({
level: "system",
message: [`Run timed out after ${PREFLIGHT_TIMEOUT / 1e3} seconds.`],
createdAt: (/* @__PURE__ */ new Date()).toISOString()
}), R({
status: "error",
error: `Preflight execution timed out after ${PREFLIGHT_TIMEOUT / 1e3} seconds`,
logs: x,
env: a,
headers: {},
pluginsState: c
});
}, PREFLIGHT_TIMEOUT);
}, I = () => {
O({
level: "system",
message: ["Run stopped."],
createdAt: (/* @__PURE__ */ new Date()).toISOString()
}), R({
status: "error",
error: "Preflight aborted",
logs: x,
env: a,
headers: {},
pluginsState: c
});
}, R = (i) => {
E || (E = !0, M(), d?.signal?.removeEventListener("abort", I), w.terminate(), URL.revokeObjectURL(C), g(i));
};
if (w.onmessage = ({ data: i }) => {
i.type === "result" ? i.error ? R({
status: "error",
error: i.error,
logs: x,
env: a,
headers: {},
pluginsState: i.pluginsState ?? c
}) : (Object.keys(i.headers).length > 0 && O({
level: "system",
message: [`Headers:\n${JSON.stringify(i.headers, null, 2)}`],
createdAt: (/* @__PURE__ */ new Date()).toISOString()
}), R({
status: "success",
logs: x,
env: i.env,
headers: i.headers,
pluginsState: i.pluginsState
})) : i.type === "log" ? [
"log",
"warn",
"error",
"info"
].includes(i.level) && O({
level: i.level,
message: i.message,
createdAt: (/* @__PURE__ */ new Date()).toISOString(),
line: i.line,
column: i.column
}) : i.type === "header" ? (S[i.name] = i.value, O({
level: "system",
message: [`Header ${i.name} set to ${i.value}`],
createdAt: (/* @__PURE__ */ new Date()).toISOString()
})) : i.type === "prompt" && (M(), (o?.(i.title, i.defaultValue, i.options) ?? Promise.resolve(null)).catch(() => null).then((i) => {
E || (F(), w.postMessage({
type: "prompt:result",
value: i
}));
}));
}, w.onerror = (i) => {
R({
status: "error",
error: i.message,
logs: x,
env: a,
headers: {},
pluginsState: c
});
}, d?.signal?.aborted) {
I();
return;
}
d?.signal?.addEventListener("abort", I), F(), w.postMessage({
type: "init",
script: i
});
});
}
const defaultLaboratorySettings = {
fetch: {
credentials: "same-origin",
timeout: 1e4,
useGETForQueries: !1
},
subscriptions: { protocol: "WS" },
introspection: {
method: "POST",
headers: "",
includeActiveOperationHeaders: !1,
pollSchema: !0
}
}, normalizeLaboratorySettings = (i) => ({
fetch: {
credentials: i?.fetch?.credentials ?? defaultLaboratorySettings.fetch.credentials,
timeout: i?.fetch?.timeout ?? defaultLaboratorySettings.fetch.timeout,
useGETForQueries: i?.fetch?.useGETForQueries ?? defaultLaboratorySettings.fetch.useGETForQueries
},
subscriptions: { protocol: i?.subscriptions?.protocol ?? defaultLaboratorySettings.subscriptions.protocol },
introspection: {
method: i?.introspection?.method ?? defaultLaboratorySettings.introspection.method,
headers: i?.introspection?.headers ?? defaultLaboratorySettings.introspection.headers,
includeActiveOperationHeaders: i?.introspection?.includeActiveOperationHeaders ?? defaultLaboratorySettings.introspection.includeActiveOperationHeaders,
pollSchema: i?.introspection?.pollSchema ?? defaultLaboratorySettings.introspection.pollSchema
}
}), useSettings = (i) => {
let [a, o] = useState(normalizeLaboratorySettings(i.defaultSettings)), s = useCallback((a) => {
let s = normalizeLaboratorySettings(a);
o(s), i.onSettingsChange?.(s);
}, [i]);
return {
settings: a,
setSettings: s
};
}, useTabs = (i) => {
let [a, o] = useState(i.defaultTabs ?? []), [s, c] = useState(i.defaultTabs?.find((a) => a.id === i.defaultActiveTabId) ?? i.defaultTabs?.[0] ?? null), d = useCallback((a) => {
c(a), i.onActiveTabIdChange?.(a?.id ?? null);
}, [i]), f = useCallback((a) => {
o(a), i.onTabsChange?.(a);
}, [i]), g = useCallback((s) => {
let c = {
...s,
id: v4_default()
}, d = [...a ?? [], c];
return o(d), i.onTabsChange?.(d), c;
}, [a, i]), b = useCallback((s) => {
let c = a.filter((i) => i.id !== s);
o(c), i.onTabsChange?.(c);
}, [a, i]), x = useCallback((s, c) => {
let d = a.map((i) => i.id === s ? {
...i,
data: c
} : i);
o(d), i.onTabsChange?.(d);
}, [a, i]);
return {
activeTab: s,
setActiveTab: d,
tabs: a,
setTabs: f,
addTab: g,
deleteTab: b,
updateTab: x
};
}, useTests = (i) => {
let [a, o] = useState(i.defaultTests ?? []), s = useRef(a);
useEffect(() => {
s.current = a;
}, [a]);
let c = useCallback((s) => {
let c = {
...s,
id: v4_default(),
createdAt: (/* @__PURE__ */ new Date()).toISOString(),
tasks: []
}, d = [...a, c];
return o(d), i.onTestsChange?.(d), c;
}, [a, i]), d = useCallback((a) => {
let c = s.current.filter((i) => i.id !== a);
o(c), i.onTestsChange?.(c);
}, [i]), f = useCallback((a, c) => {
let d = {
...c,
id: v4_default(),
next: null
}, f = s.current.map((i) => i.id === a ? {
...i,
tasks: [...i.tasks, d]
} : i);
o(f), i.onTestsChange?.(f);
}, [i]), g = useCallback((a, c) => {
let d = s.current.map((i) => i.id === a ? {
...i,
tasks: i.tasks.filter((i) => i.id !== c)
} : i);
o(d), i.onTestsChange?.(d);
}, [i]);
return {
tests: a,
addTest: c,
deleteTest: d,
addTaskToTest: f,
deleteTaskFromTest: g
};
};
var falsyToString = (i) => typeof i == "boolean" ? `${i}` : i === 0 ? "0" : i;
const cx = clsx, cva = (i, a) => (o) => {
if (a?.variants == null) return cx(i, o?.class, o?.className);
let { variants: s, defaultVariants: c } = a, d = Object.keys(s).map((i) => {
let a = o?.[i], d = c?.[i];
if (a === null) return null;
let f = falsyToString(a) || falsyToString(d);
return s[i][f];
}), f = o && Object.entries(o).reduce((i, a) => {
let [o, s] = a;
return s === void 0 || (i[o] = s), i;
}, {}), g = a?.compoundVariants?.reduce((i, a) => {
let { class: o, className: s,...d } = a;
return Object.entries(d).every((i) => {
let [a, o] = i;
return Array.isArray(o) ? o.includes({
...c,
...f
}[a]) : {
...c,
...f
}[a] === o;
}) ? [
...i,
o,
s
] : i;
}, []);
return cx(i, d, g, o?.class, o?.className);
};
function setRef$1(i, a) {
if (typeof i == "function") return i(a);
i != null && (i.current = a);
}
function composeRefs$1(...i) {
return (a) => {
let o = !1, s = i.map((i) => {
let s = setRef$1(i, a);
return !o && typeof s == "function" && (o = !0), s;
});
if (o) return () => {
for (let a = 0; a < s.length; a++) {
let o = s[a];
typeof o == "function" ? o() : setRef$1(i[a], null);
}
};
};
}
function useComposedRefs$1(...i) {
return React.useCallback(composeRefs$1(...i), i);
}
var REACT_LAZY_TYPE = Symbol.for("react.lazy"), use = React.use;
function isPromiseLike(i) {
return typeof i == "object" && !!i && "then" in i;
}
function isLazyComponent(i) {
return typeof i == "object" && !!i && "$$typeof" in i && i.$$typeof === REACT_LAZY_TYPE && "_payload" in i && isPromiseLike(i._payload);
}
/* @__NO_SIDE_EFFECTS__ */
function createSlot$1(i) {
let a = /* @__PURE__ */ createSlotClone$1(i), o = React.forwardRef((i, o) => {
let { children: s,...c } = i;
isLazyComponent(s) && typeof use == "function" && (s = use(s._payload));
let d = React.Children.toArray(s), f = d.find(isSlottable$1);
if (f) {
let i = f.props.children, s = d.map((a) => a === f ? React.Children.count(i) > 1 ? React.Children.only(null) : React.isValidElement(i) ? i.props.children : null : a);
return /* @__PURE__ */ jsx(a, {
...c,
ref: o,
children: React.isValidElement(i) ? React.cloneElement(i, void 0, s) : null
});
}
return /* @__PURE__ */ jsx(a, {
...c,
ref: o,
children: s
});
});
return o.displayName = `${i}.Slot`, o;
}
var Slot = /* @__PURE__ */ createSlot$1("Slot");
/* @__NO_SIDE_EFFECTS__ */
function createSlotClone$1(i) {
let a = React.forwardRef((i, a) => {
let { children: o,...s } = i;
if (isLazyComponent(o) && typeof use == "function" && (o = use(o._payload)), React.isValidElement(o)) {
let i = getElementRef$2(o), c = mergeProps$1(s, o.props);
return o.type !== React.Fragment && (c.ref = a ? composeRefs$1(a, i) : i), React.cloneElement(o, c);
}
return React.Children.count(o) > 1 ? React.Children.only(null) : null;
});
return a.displayName = `${i}.SlotClone`, a;
}
var SLOTTABLE_IDENTIFIER$1 = Symbol("radix.slottable");
function isSlottable$1(i) {
return React.isValidElement(i) && typeof i.type == "function" && "__radixId" in i.type && i.type.__radixId === SLOTTABLE_IDENTIFIER$1;
}
function mergeProps$1(i, a) {
let o = { ...a };
for (let s in a) {
let c = i[s], d = a[s];
/^on[A-Z]/.test(s) ? c && d ? o[s] = (...i) => {
let a = d(...i);
return c(...i), a;
} : c && (o[s] = c) : s === "style" ? o[s] = {
...c,
...d
} : s === "className" && (o[s] = [c, d].filter(Boolean).join(" "));
}
return {
...i,
...o
};
}
function getElementRef$2(i) {
let a = Object.getOwnPropertyDescriptor(i.props, "ref")?.get, o = a && "isReactWarning" in a && a.isReactWarning;
return o ? i.ref : (a = Object.getOwnPropertyDescriptor(i, "ref")?.get, o = a && "isReactWarning" in a && a.isReactWarning, o ? i.props.ref : i.props.ref || i.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"
}
}), Button = forwardRef(({ className: i, variant: a, size: o, asChild: s = !1,...c }, d) => /* @__PURE__ */ jsx(s ? Slot : "button", {
ref: d,
"data-slot": "button",
className: cn(buttonVariants({
variant: a,
size: o,
className: i
})),
...c
}));
Button.displayName = "Button";
var LaboratoryContext = createContext({});
const useLaboratory = () => useContext(LaboratoryContext), LaboratoryProvider = (i) => /* @__PURE__ */ jsx(LaboratoryContext.Provider, {
value: { ...i },
children: i.children
});
typeof window < "u" && window.document && window.document.createElement;
function composeEventHandlers(i, a, { checkForDefaultPrevented: o = !0 } = {}) {
return function(s) {
if (i?.(s), o === !1 || !s.defaultPrevented) return a?.(s);
};
}
function createContext2(i, a) {
let o = React.createContext(a), s = (i) => {
let { children: a,...s } = i, c = React.useMemo(() => s, Object.values(s));
return /* @__PURE__ */ jsx(o.Provider, {
value: c,
children: a
});
};
s.displayName = i + "Provider";
function c(s) {
let c = React.useContext(o);
if (c) return c;
if (a !== void 0) return a;
throw Error(`\`${s}\` must be used within \`${i}\``);
}
return [s, c];
}
function createContextScope(i, a = []) {
let o = [];
function s(a, s) {
let c = React.createContext(s), d = o.length;
o = [...o, s];
let f = (a) => {
let { scope: o, children: s,...f } = a, g = o?.[i]?.[d] || c, b = React.useMemo(() => f, Object.values(f));
return /* @__PURE__ */ jsx(g.Provider, {
value: b,
children: s
});
};
f.displayName = a + "Provider";
function g(o, f) {
let g = f?.[i]?.[d] || c, b = React.useContext(g);
if (b) return b;
if (s !== void 0) return s;
throw Error(`\`${o}\` must be used within \`${a}\``);
}
return [f, g];
}
let c = () => {
let a = o.map((i) => React.createContext(i));
return function(o) {
let s = o?.[i] || a;
return React.useMemo(() => ({ [`__scope${i}`]: {
...o,
[i]: s
} }), [o, s]);
};
};
return c.scopeName = i, [s, composeContextScopes(c, ...a)];
}
function composeContextScopes(...i) {
let a = i[0];
if (i.length === 1) return a;
let o = () => {
let o = i.map((i) => ({
useScope: i(),
scopeName: i.scopeName
}));
return function(i) {
let s = o.reduce((a, { useScope: o, scopeName: s }) => {
let c = o(i)[`__scope${s}`];
return {
...a,
...c
};
}, {});
return React.useMemo(() => ({ [`__scope${a.scopeName}`]: s }), [s]);
};
};
return o.scopeName = a.scopeName, o;
}
var useLayoutEffect2 = globalThis?.document ? React.useLayoutEffect : () => {}, useReactId = React.useId || (() => void 0), count$1 = 0;
function useId$1(i) {
let [a, o] = React.useState(useReactId());
return useLayoutEffect2(() => {
i || o((i) => i ?? String(count$1++));
}, [i]), i || (a ? `radix-${a}` : "");
}
var useInsertionEffect$1 = React.useInsertionEffect || useLayoutEffect2;
function useControllableState({ prop: i, defaultProp: a, onChange: o = () => {}, caller: s }) {
let [c, d, f] = useUncontrolledState({
defaultProp: a,
onChange: o
}), g = i !== void 0, b = g ? i : c;
{
let a = React.useRef(i !== void 0);
React.useEffect(() => {
let i = a.current;
if (i !== g) {
let a = i ? "controlled" : "uncontrolled", o = g ? "controlled" : "uncontrolled";
console.warn(`${s} is changing from ${a} to ${o}. 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.`);
}
a.current = g;
}, [g, s]);
}
let x = React.useCallback((a) => {
if (g) {
let o = isFunction$2(a) ? a(i) : a;
o !== i && f.current?.(o);
} else d(a);
}, [
g,
i,
d,
f
]);
return [b, x];
}
function useUncontrolledState({ defaultProp: i, onChange: a }) {
let [o, s] = React.useState(i), c = React.useRef(o), d = React.useRef(a);
return useInsertionEffect$1(() => {
d.current = a;
}, [a]), React.useEffect(() => {
c.current !== o && (d.current?.(o), c.current = o);
}, [o, c]), [
o,
s,
d
];
}
function isFunction$2(i) {
return typeof i == "function";
}
/* @__NO_SIDE_EFFECTS__ */
function createSlot(i) {
let a = /* @__PURE__ */ createSlotClone(i), o = React.forwardRef((i, o) => {
let { children: s,...c } = i, d = React.Children.toArray(s), f = d.find(isSlottable);
if (f) {
let i = f.props.children, s = d.map((a) => a === f ? React.Children.count(i) > 1 ? React.Children.only(null) : React.isValidElement(i) ? i.props.children : null : a);
return /* @__PURE__ */ jsx(a, {
...c,
ref: o,
children: React.isValidElement(i) ? React.cloneElement(i, void 0, s) : null
});
}
return /* @__PURE__ */ jsx(a, {
...c,
ref: o,
children: s
});
});
return o.displayName = `${i}.Slot`, o;
}
/* @__NO_SIDE_EFFECTS__ */
function createSlotClone(i) {
let a = React.forwardRef((i, a) => {
let { children: o,...s } = i;
if (React.isValidElement(o)) {
let i = getElementRef$1(o), c = mergeProps(s, o.props);
return o.type !== React.Fragment && (c.ref = a ? composeRefs$1(a, i) : i), React.cloneElement(o, c);
}
return React.Children.count(o) > 1 ? React.Children.only(null) : null;
});
return a.displayName = `${i}.SlotClone`, a;
}
var SLOTTABLE_IDENTIFIER = Symbol("radix.slottable");
/* @__NO_SIDE_EFFECTS__ */
function createSlottable(i) {
let a = ({ children: i }) => /* @__PURE__ */ jsx(Fragment$1, { children: i });
return a.displayName = `${i}.Slottable`, a.__radixId = SLOTTABLE_IDENTIFIER, a;
}
function isSlottable(i) {
return React.isValidElement(i) && typeof i.type == "function" && "__radixId" in i.type && i.type.__radixId === SLOTTABLE_IDENTIFIER;
}
function mergeProps(i, a) {
let o = { ...a };
for (let s in a) {
let c = i[s], d = a[s];
/^on[A-Z]/.test(s) ? c && d ? o[s] = (...i) => {
let a = d(...i);
return c(...i), a;
} : c && (o[s] = c) : s === "style" ? o[s] = {
...c,
...d
} : s === "className" && (o[s] = [c, d].filter(Boolean).join(" "));
}
return {
...i,
...o
};
}
function getElementRef$1(i) {
let a = Object.getOwnPropertyDescriptor(i.props, "ref")?.get, o = a && "isReactWarning" in a && a.isReactWarning;
return o ? i.ref : (a = Object.getOwnPropertyDescriptor(i, "ref")?.get, o = a && "isReactWarning" in a && a.isReactWarning, o ? i.props.ref : i.props.ref || i.ref);
}
var Primitive = [
"a",
"button",
"div",
"form",
"h2",
"h3",
"img",
"input",
"label",
"li",
"nav",
"ol",
"p",
"select",
"span",
"svg",
"ul"
].reduce((i, a) => {
let o = /* @__PURE__ */ createSlot(`Primitive.${a}`), s = React.forwardRef((i, s) => {
let { asChild: c,...d } = i, f = c ? o : a;
return typeof window < "u" && (window[Symbol.for("radix-ui")] = !0), /* @__PURE__ */ jsx(f, {
...d,
ref: s
});
});
return s.displayName = `Primitive.${a}`, {
...i,
[a]: s
};
}, {});
function dispatchDiscreteCustomEvent(i, a) {
i && ReactDOM$2.flushSync(() => i.dispatchEvent(a));
}
function useCallbackRef(i) {
let a = React.useRef(i);
return React.useEffect(() => {
a.current = i;
}), React.useMemo(() => (...i) => a.current?.(...i), []);
}
function useEscapeKeydown(i, a = globalThis?.document) {
let o = useCallbackRef(i);
React.useEffect(() => {
let i = (i) => {
i.key === "Escape" && o(i);
};
return a.addEventListener("keydown", i, { capture: !0 }), () => a.removeEventListener("keydown", i, { capture: !0 });
}, [o, a]);
}
var DISMISSABLE_LAYER_NAME = "DismissableLayer", CONTEXT_UPDATE = "dismissableLayer.update", POINTER_DOWN_OUTSIDE = "dismissableLayer.pointerDownOutside", FOCUS_OUTSIDE = "dismissableLayer.focusOutside", originalBodyPointerEvents, DismissableLayerContext = React.createContext({
layers: /* @__PURE__ */ new Set(),
layersWithOutsidePointerEventsDisabled: /* @__PURE__ */ new Set(),
branches: /* @__PURE__ */ new Set()
}), DismissableLayer = React.forwardRef((i, a) => {
let { disableOutsidePointerEvents: o = !1, onEscapeKeyDown: s, onPointerDownOutside: c, onFocusOutside: d, onInteractOutside: f, onDismiss: g,...b } = i, x = React.useContext(DismissableLayerContext), [S, C] = React.useState(null), w = S?.ownerDocument ?? globalThis?.document, [, E] = React.useState({}), O = useComposedRefs$1(a, (i) => C(i)), A = Array.from(x.layers), [M] = [...x.layersWithOutsidePointerEventsDisabled].slice(-1), F = A.indexOf(M), I = S ? A.indexOf(S) : -1, R = x.layersWithOutsidePointerEventsDisabled.size > 0, V = I >= F, rP = usePointerDownOutside((i) => {
let a = i.target, o = [...x.branches].some((i) => i.contains(a));
!V || o || (c?.(i), f?.(i), i.defaultPrevented || g?.());
}, w), iP = useFocusOutside((i) => {
let a = i.target;
[...x.branches].some((i) => i.contains(a)) || (d?.(i), f?.(i), i.defaultPrevented || g?.());
}, w);
return useEscapeKeydown((i) => {
I === x.layers.size - 1 && (s?.(i), !i.defaultPrevented && g && (i.preventDefault(), g()));
}, w), React.useEffect(() => {
if (S) return o && (x.layersWithOutsidePointerEventsDisabled.size === 0 && (originalBodyPointerEvents = w.body.style.pointerEvents, w.body.style.pointerEvents = "none"), x.layersWithOutsidePointerEventsDisabled.add(S)), x.layers.add(S), dispatchUpdate(), () => {
o && x.layersWithOutsidePointerEventsDisabled.size === 1 && (w.body.style.pointerEvents = originalBodyPointerEvents);
};
}, [
S,
w,
o,
x
]), React.useEffect(() => () => {
S && (x.layers.delete(S), x.layersWithOutsidePointerEventsDisabled.delete(S), dispatchUpdate());
}, [S, x]), React.useEffect(() => {
let i = () => E({});
return document.addEventListener(CONTEXT_UPDATE, i), () => document.removeEventListener(CONTEXT_UPDATE, i);
}, []), /* @__PURE__ */ jsx(Primitive.div, {
...b,
ref: O,
style: {
pointerEvents: R ? V ? "auto" : "none" : void 0,
...i.style
},
onFocusCapture: composeEventHandlers(i.onFocusCapture, iP.onFocusCapture),
onBlurCapture: composeEventHandlers(i.onBlurCapture, iP.onBlurCapture),
onPointerDownCapture: composeEventHandlers(i.onPointerDownCapture, rP.onPointerDownCapture)
});
});
DismissableLayer.displayName = DISMISSABLE_LAYER_NAME;
var BRANCH_NAME = "DismissableLayerBranch", DismissableLayerBranch = React.forwardRef((i, a) => {
let o = React.useContext(DismissableLayerContext), s = React.useRef(null), c = useComposedRefs$1(a, s);
return React.useEffect(() => {
let i = s.current;
if (i) return o.branches.add(i), () => {
o.branches.delete(i);
};
}, [o.branches]), /* @__PURE__ */ jsx(Primitive.div, {
...i,
ref: c
});
});
DismissableLayerBranch.displayName = BRANCH_NAME;
function usePointerDownOutside(i, a = globalThis?.document) {
let o = useCallbackRef(i), s = React.useRef(!1), c = React.useRef(() => {});
return React.useEffect(() => {
let i = (i) => {
if (i.target && !s.current) {
let s = function() {
handleAndDispatchCustomEvent(POINTER_DOWN_OUTSIDE, o, d, { discrete: !0 });
}, d = { originalEvent: i };
i.pointerType === "touch" ? (a.removeEventListener("click", c.current), c.current = s, a.addEventListener("click", c.current, { once: !0 })) : s();
} else a.removeEventListener("click", c.current);
s.current = !1;
}, d = window.setTimeout(() => {
a.addEventListener("pointerdown", i);
}, 0);
return () => {
window.clearTimeout(d), a.removeEventListener("pointerdown", i), a.removeEventListener("click", c.current);
};
}, [a, o]), { onPointerDownCapture: () => s.current = !0 };
}
function useFocusOutside(i, a = globalThis?.document) {
let o = useCallbackRef(i), s = React.useRef(!1);
return React.useEffect(() => {
let i = (i) => {
i.target && !s.current && handleAndDispatchCustomEvent(FOCUS_OUTSIDE, o, { originalEvent: i }, { discrete: !1 });
};
return a.addEventListener("focusin", i), () => a.removeEventListener("focusin", i);
}, [a, o]), {
onFocusCapture: () => s.current = !0,
onBlurCapture: () => s.current = !1
};
}
function dispatchUpdate() {
let i = new CustomEvent(CONTEXT_UPDATE);
document.dispatchEvent(i);
}
function handleAndDispatchCustomEvent(i, a, o, { discrete: s }) {
let c = o.originalEvent.target, d = new CustomEvent(i, {
bubbles: !1,
cancelable: !0,
detail: o
});
a && c.addEventListener(i, a, { once: !0 }), s ? dispatchDiscreteCustomEvent(c, d) : c.dispatchEvent(d);
}
var AUTOFOCUS_ON_MOUNT = "focusScope.autoFocusOnMount", AUTOFOCUS_ON_UNMOUNT = "focusScope.autoFocusOnUnmount", EVENT_OPTIONS$1 = {
bubbles: !1,
cancelable: !0
}, FOCUS_SCOPE_NAME = "FocusScope", FocusScope = React.forwardRef((i, a) => {
let { loop: o = !1, trapped: s = !1, onMountAutoFocus: c, onUnmountAutoFocus: d,...f } = i, [g, b] = React.useState(null), x = useCallbackRef(c), S = useCallbackRef(d), C = React.useRef(null), w = useComposedRefs$1(a, (i) => b(i)), E = React.useRef({
paused: !1,
pause() {
this.paused = !0;
},
resume() {
this.paused = !1;
}
}).current;
React.useEffect(() => {
if (s) {
let i = function(i) {
if (E.paused || !g) return;
let a = i.target;
g.contains(a) ? C.current = a : focus(C.current, { select: !0 });
}, a = function(i) {
if (E.paused || !g) return;
let a = i.relatedTarget;
a !== null && (g.contains(a) || focus(C.current, { select: !0 }));
}, o = function(i) {
if (document.activeElement === document.body) for (let a of i) a.removedNodes.length > 0 && focus(g);
};
document.addEventListener("focusin", i), document.addEventListener("focusout", a);
let s = new MutationObserver(o);
return g && s.observe(g, {
childList: !0,
subtree: !0
}), () => {
document.removeEventListener("focusin", i), document.removeEventListener("focusout", a), s.disconnect();
};
}
}, [
s,
g,
E.paused
]), React.useEffect(() => {
if (g) {
focusScopesStack.add(E);
let i = document.activeElement;
if (!g.contains(i)) {
let a = new CustomEvent(AUTOFOCUS_ON_MOUNT, EVENT_OPTIONS$1);
g.addEventListener(AUTOFOCUS_ON_MOUNT, x), g.dispatchEvent(a), a.defaultPrevented || (focusFirst$2(removeLinks(getTabbableCandidates(g)), { select: !0 }), document.activeElement === i && focus(g));
}
return () => {
g.removeEventListener(AUTOFOCUS_ON_MOUNT, x), setTimeout(() => {
let a = new CustomEvent(AUTOFOCUS_ON_UNMOUNT, EVENT_OPTIONS$1);
g.addEventListener(AUTOFOCUS_ON_UNMOUNT, S), g.dispatchEvent(a), a.defaultPrevented || focus(i ?? document.body, { select: !0 }), g.removeEventListener(AUTOFOCUS_ON_UNMOUNT, S), focusScopesStack.remove(E);
}, 0);
};
}
}, [
g,
x,
S,
E
]);
let O = React.useCallback((i) => {
if (!o && !s || E.paused) return;
let a = i.key === "Tab" && !i.altKey && !i.ctrlKey && !i.metaKey, c = document.activeElement;
if (a && c) {
let a = i.currentTarget, [s, d] = getTabbableEdges(a);
s && d ? !i.shiftKey && c === d ? (i.preventDefault(), o && focus(s, { select: !0 })) : i.shiftKey && c === s && (i.preventDefault(), o && focus(d, { select: !0 })) : c === a && i.preventDefault();
}
}, [
o,
s,
E.paused
]);
return /* @__PURE__ */ jsx(Primitive.div, {
tabIndex: -1,
...f,
ref: w,
onKeyDown: O
});
});
FocusScope.displayName = FOCUS_SCOPE_NAME;
function focusFirst$2(i, { select: a = !1 } = {}) {
let o = document.activeElement;
for (let s of i) if (focus(s, { select: a }), document.activeElement !== o) return;
}
function getTabbableEdges(i) {
let a = getTabbableCandidates(i), o = findVisible(a, i), s = findVisible(a.reverse(), i);
return [o, s];
}
function getTabbableCandidates(i) {
let a = [], o = document.createTreeWalker(i, NodeFilter.SHOW_ELEMENT, { acceptNode: (i) => {
let a = i.tagName === "INPUT" && i.type === "hidden";
return i.disabled || i.hidden || a ? NodeFilter.FILTER_SKIP : i.tabIndex >= 0 ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP;
} });
for (; o.nextNode();) a.push(o.currentNode);
return a;
}
function findVisible(i, a) {
for (let o of i) if (!isHidden(o, { upTo: a })) return o;
}
function isHidden(i, { upTo: a }) {
if (getComputedStyle(i).visibility === "hidden") return !0;
for (; i;) {
if (a !== void 0 && i === a) return !1;
if (getComputedStyle(i).display === "none") return !0;
i = i.parentElement;
}
return !1;
}
function isSelectableInput(i) {
return i instanceof HTMLInputElement && "select" in i;
}
function focus(i, { select: a = !1 } = {}) {
if (i && i.focus) {
let o = document.activeElement;
i.focus({ preventScroll: !0 }), i !== o && isSelectableInput(i) && a && i.select();
}
}
var focusScopesStack = createFocusScopesStack();
function createFocusScopesStack() {
let i = [];
return {
add(a) {
let o = i[0];
a !== o && o?.pause(), i = arrayRemove(i, a), i.unshift(a);
},
remove(a) {
i = arrayRemove(i, a), i[0]?.resume();
}
};
}
function arrayRemove(i, a) {
let o = [...i], s = o.indexOf(a);
return s !== -1 && o.splice(s, 1), o;
}
function removeLinks(i) {
return i.filter((i) => i.tagName !== "A");
}
var PORTAL_NAME$7 = "Portal", Portal = React.forwardRef((i, a) => {
let { container: o,...s } = i, [c, d] = React.useState(!1);
useLayoutEffect2(() => d(!0), []);
let f = o || c && globalThis?.document?.body;
return f ? ReactDOM$1.createPortal(/* @__PURE__ */ jsx(Primitive.div, {
...s,
ref: a
}), f) : null;
});
Portal.displayName = PORTAL_NAME$7;
function useStateMachine$1(i, a) {
return React.useReducer((i, o) => a[i][o] ?? i, i);
}
var Presence = (i) => {
let { present: a, children: o } = i, s = usePresence(a), c = typeof o == "function" ? o({ present: s.isPresent }) : React.Children.only(o), d = useComposedRefs$1(s.ref, getElementRef(c));
return typeof o == "function" || s.isPresent ? React.cloneElement(c, { ref: d }) : null;
};
Presence.displayName = "Presence";
function usePresence(i) {
let [a, o] = React.useState(), s = React.useRef(null), c = React.useRef(i), d = React.useRef("none"), [f, g] = useStateMachine$1(i ? "mounted" : "unmounted", {
mounted: {
UNMOUNT: "unmounted",
ANIMATION_OUT: "unmountSuspended"
},
unmountSuspended: {
MOUNT: "mounted",
ANIMATION_END: "unmounted"
},
unmounted: { MOUNT: "mounted" }
});
return React.useEffect(() => {
let i = getAnimationName(s.current);
d.current = f === "mounted" ? i : "none";
}, [f]), useLayoutEffect2(() => {
let a = s.current, o = c.current;
if (o !== i) {
let s = d.current, f = getAnimationName(a);
i ? g("MOUNT") : f === "none" || a?.display === "none" ? g("UNMOUNT") : g(o && s !== f ? "ANIMATION_OUT" : "UNMOUNT"), c.current = i;
}
}, [i, g]), useLayoutEffect2(() => {
if (a) {
let i, o = a.ownerDocument.defaultView ?? window, f = (d) => {
let f = getAnimationName(s.current).includes(CSS.escape(d.animationName));
if (d.target === a && f && (g("ANIMATION_END"), !c.current)) {
let s = a.style.animationFillMode;
a.style.animationFillMode = "forwards", i = o.setTimeout(() => {
a.style.animationFillMode === "forwards" && (a.style.animationFillMode = s);
});
}
}, b = (i) => {
i.target === a && (d.current = getAnimationName(s.current));
};
return a.addEventListener("animationstart", b), a.addEventListener("animationcancel", f), a.addEventListener("animationend", f), () => {
o.clearTimeout(i), a.removeEventListener("animationstart", b), a.removeEventListener("animationcancel", f), a.removeEventListener("animationend", f);
};
} else g("ANIMATION_END");
}, [a, g]), {
isPresent: ["mounted", "unmountSuspended"].includes(f),
ref: React.useCallback((i) => {
s.current = i ? getComputedStyle(i) : null, o(i);
}, [])
};
}
function getAnimationName(i) {
return i?.animationName || "none";
}
function getElementRef(i) {
let a = Object.getOwnPropertyDescriptor(i.props, "ref")?.get, o = a && "isReactWarning" in a && a.isReactWarning;
return o ? i.ref : (a = Object.getOwnPropertyDescriptor(i, "ref")?.get, o = a && "isReactWarning" in a && a.isReactWarning, o ? i.props.ref : i.props.ref || i.ref);
}
var count = 0;
function useFocusGuards() {
React.useEffect(() => {
let i = document.querySelectorAll("[data-radix-focus-guard]");
return document.body.insertAdjacentElement("afterbegin", i[0] ?? createFocusGuard()), document.body.insertAdjacentElement("beforeend", i[1] ?? createFocusGuard()), count++, () => {
count === 1 && document.querySelectorAll("[data-radix-focus-guard]").forEach((i) => i.remove()), count--;
};
}, []);
}
function createFocusGuard() {
let i = document.createElement("span");
return i.setAttribute("data-radix-focus-guard", ""), i.tabIndex = 0, i.style.outline = "none", i.style.opacity = "0", i.style.position = "fixed", i.style.pointerEvents = "none", i;
}
var zeroRightClassName = "right-scroll-bar-position", fullWidthClassName = "width-before-scroll-bar", noScrollbarsClassName = "with-scroll-bars-hidden", removedBarSizeVariable = "--removed-body-scroll-bar-size";
function assignRef(i, a) {
return typeof i == "function" ? i(a) : i && (i.current = a), i;
}
function useCallbackRef$1(i, a) {
var o = useState(function() {
return {
value: i,
callback: a,
facade: {
get current() {
return o.value;
},
set current(i) {
var a = o.value;
a !== i && (o.value = i, o.callback(i, a));
}
}
};
})[0];
return o.callback = a, o.facade;
}
var useIsomorphicLayoutEffect$2 = typeof window < "u" ? React.useLayoutEffect : React.useEffect, currentValues = /* @__PURE__ */ new WeakMap();
function useMergeRefs(i, a) {
var o = useCallbackRef$1(a || null, function(a) {
return i.forEach(function(i) {
return assignRef(i, a);
});
});
return useIsomorphicLayoutEffect$2(function() {
var a = currentValues.get(o);
if (a) {
var s = new Set(a), c = new Set(i), d = o.current;
s.forEach(function(i) {
c.has(i) || assignRef(i, null);
}), c.forEach(function(i) {
s.has(i) || assignRef(i, d);
});
}
currentValues.set(o, i);
}, [i]), o;
}
function ItoI(i) {
return i;
}
function innerCreateMedium(i, a) {
a === void 0 && (a = ItoI);
var o = [], s = !1;
return {
read: function() {
if (s) throw Error("Sidecar: could not `read` from an `assigned` medium. `read` could be used only with `useMedium`.");
return o.length ? o[o.length - 1] : i;
},
useMedium: function(i) {
var c = a(i, s);
return o.push(c), function() {
o = o.filter(function(i) {
return i !== c;
});
};
},
assignSyncMedium: function(i) {
for (s = !0; o.length;) {
var a = o;
o = [], a.forEach(i);
}
o = {
push: function(a) {
return i(a);
},
filter: function() {
return o;
}
};
},
assignMedium: function(i) {
s = !0;
var a = [];
if (o.length) {
var c = o;
o = [], c.forEach(i), a = o;
}
var d = function() {
var o = a;
a = [], o.forEach(i);
}, f = function() {
return Promise.resolve().then(d);
};
f(), o = {
push: function(i) {
a.push(i), f();
},
filter: function(i) {
return a = a.filter(i), o;
}
};
}
};
}
function createSidecarMedium(i) {
i === void 0 && (i = {});
var a = innerCreateMedium(null);
return a.options = __assign({
async: !0,
ssr: !1
}, i), a;
}
var SideCar = function(i) {
var a = i.sideCar, o = __rest(i, ["sideCar"]);
if (!a) throw Error("Sidecar: please provide `sideCar` property to import the right car");
var s = a.read();
if (!s) throw Error("Sidecar medium not found");
return React.createElement(s, __assign({}, o));
};
SideCar.isSideCarExport = !0;
function exportSidecar(i, a) {
return i.useMedium(a), SideCar;
}
var effectCar = createSidecarMedium(), nothing = function() {}, RemoveScroll = React.forwardRef(function(i, a) {
var o = React.useRef(null), s = React.useState({
onScrollCapture: nothing,
onWheelCapture: nothing,
onTouchMoveCapture: nothing
}), c = s[0], d = s[1], f = i.forwardProps, g = i.children, b = i.className, x = i.removeScrollBar, S = i.enabled, C = i.shards, w = i.sideCar, E = i.noRelative, O = i.noIsolation, A = i.inert, M = i.allowPinchZoom, F = i.as, I = F === void 0 ? "div" : F, R = i.gapMode, V = __rest(i, [
"forwardProps",
"children",
"className",
"removeScrollBar",
"enabled",
"shards",
"sideCar",
"noRelative",
"noIsolation",
"inert",
"allowPinchZoom",
"as",
"gapMode"
]), rP = w, iP = useMergeRefs([o, a]), q = __assign(__assign({}, V), c);
return React.createElement(React.Fragment, null, S && React.createElement(rP, {
sideCar: effectCar,
removeScrollBar: x,
shards: C,
noRelative: E,
noIsolation: O,
inert: A,
setCallbacks: d,
allowPinchZoom: !!M,
lockRef: o,
gapMode: R
}), f ? React.cloneElement(React.Children.only(g), __assign(__assign({}, q), { ref: iP })) : React.createElement(I, __assign({}, q, {
className: b,
ref: iP
}), g));
});
RemoveScroll.defaultProps = {
enabled: !0,
removeScrollBar: !0,
inert: !1
}, RemoveScroll.classNames = {
fullWidth: fullWidthClassName,
zeroRight: zeroRightClassName
};
var currentNonce, getNonce$1 = function() {
if (currentNonce) return currentNonce;
if (typeof __webpack_nonce__ < "u") return __webpack_nonce__;
};
function makeStyleTag() {
if (!document) return null;
var i = document.createElement("style");
i.type = "text/css";
var a = getNonce$1();
return a && i.setAttribute("nonce", a), i;
}
function injectStyles(i, a) {
i.styleSheet ? i.styleSheet.cssText = a : i.appendChild(document.createTextNode(a));
}
function insertStyleTag(i) {
(document.head || document.getElementsByTagName("head")[0]).appendChild(i);
}
var stylesheetSingleton = function() {
var i = 0, a = null;
return {
add: function(o) {
i == 0 && (a = makeStyleTag()) && (injectStyles(a, o), insertStyleTag(a)), i++;
},
remove: function() {
i--, !i && a && (a.parentNode && a.parentNode.removeChild(a), a = null);
}
};
}, styleHookSingleton = function() {
var i = stylesheetSingleton();
return function(a, o) {
React.useEffect(function() {
return i.add(a), function() {
i.remove();
};
}, [a && o]);
};
}, styleSingleton = function() {
var i = styleHookSingleton();
return function(a) {
var o = a.styles, s = a.dynamic;
return i(o, s), null;
};
}, zeroGap = {
left: 0,
top: 0,
right: 0,
gap: 0
}, parse$1 = function(i) {
return parseInt(i || "", 10) || 0;
}, getOffset = function(i) {
var a = window.getComputedStyle(document.body), o = a[i === "padding" ? "paddingLeft" : "marginLeft"], s = a[i === "padding" ? "paddingTop" : "marginTop"], c = a[i === "padding" ? "paddingRight" : "marginRight"];
return [
parse$1(o),
parse$1(s),
parse$1(c)
];
}, getGapWidth = function(i) {
if (i === void 0 && (i = "margin"), typeof window > "u") return zeroGap;
var a = getOffset(i), o = document.documentElement.clientWidth, s = window.innerWidth;
return {
left: a[0],
top: a[1],
right: a[2],
gap: Math.max(0, s - o + a[2] - a[0])
};
}, Style = styleSingleton(), lockAttribute = "data-scroll-locked", getStyles = function(i, a, o, s) {
var c = i.left, d = i.top, f = i.right, g = i.gap;
return o === void 0 && (o = "margin"), `
.${noScrollbarsClassName} {
overflow: hidden ${s};
padding-right: ${g}px ${s};
}
body[${lockAttribute}] {
overflow: hidden ${s};
overscroll-behavior: contain;
${[
a && `position: relative ${s};`,
o === "margin" && `
padding-left: ${c}px;
padding-top: ${d}px;
padding-right: ${f}px;
margin-left:0;
margin-top:0;
margin-right: ${g}px ${s};
`,
o === "padding" && `padding-right: ${g}px ${s};`
].filter(Boolean).join("")}
}
.${zeroRightClassName} {
right: ${g}px ${s};
}
.${fullWidthClassName} {
margin-right: ${g}px ${s};
}
.${zeroRightClassName} .${zeroRightClassName} {
right: 0 ${s};
}
.${fullWidthClassName} .${fullWidthClassName} {
margin-right: 0 ${s};
}
body[${lockAttribute}] {
${removedBarSizeVariable}: ${g}px;
}
`;
}, getCurrentUseCounter = function() {
var i = parseInt(document.body.getAttribute("data-scroll-locked") || "0", 10);
return isFinite(i) ? i : 0;
}, useLockAttribute = function() {
React.useEffect(function() {
return document.body.setAttribute(lockAttribute, (getCurrentUseCounter() + 1).toString()), function() {
var i = getCurrentUseCounter() - 1;
i <= 0 ? document.body.removeAttribute(lockAttribute) : document.body.setAttribute(lockAttribute, i.toString());
};
}, []);
}, RemoveScrollBar = function(i) {
var a = i.noRelative, o = i.noImportant, s = i.gapMode, c = s === void 0 ? "margin" : s;
useLockAttribute();
var d = React.useMemo(function() {
return getGapWidth(c);
}, [c]);
return React.createElement(Style, { styles: getStyles(d, !a, c, o ? "" : "!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(i) {
return i.tagName === "TEXTAREA";
}, elementCanBeScrolled = function(i, a) {
if (!(i instanceof Element)) return !1;
var o = window.getComputedStyle(i);
return o[a] !== "hidden" && !(o.overflowY === o.overflowX && !alwaysContainsScroll(i) && o[a] === "visible");
}, elementCouldBeVScrolled = function(i) {
return elementCanBeScrolled(i, "overflowY");
}, elementCouldBeHScrolled = function(i) {
return elementCanBeScrolled(i, "overflowX");
}, locationCouldBeScrolled = function(i, a) {
var o = a.ownerDocument, s = a;
do {
if (typeof ShadowRoot < "u" && s instanceof ShadowRoot && (s = s.host), elementCouldBeScrolled(i, s)) {
var c = getScrollVariables(i, s), d = c[1], f = c[2];
if (d > f) return !0;
}
s = s.parentNode;
} while (s && s !== o.body);
return !1;
}, getVScrollVariables = function(i) {
var a = i.scrollTop, o = i.scrollHeight, s = i.clientHeight;
return [
a,
o,
s
];
}, getHScrollVariables = function(i) {
var a = i.scrollLeft, o = i.scrollWidth, s = i.clientWidth;
return [
a,
o,
s
];
}, elementCouldBeScrolled = function(i, a) {
return i === "v" ? elementCouldBeVScrolled(a) : elementCouldBeHScrolled(a);
}, getScrollVariables = function(i, a) {
return i === "v" ? getVScrollVariables(a) : getHScrollVariables(a);
}, getDirectionFactor = function(i, a) {
return i === "h" && a === "rtl" ? -1 : 1;
}, handleScroll = function(i, a, o, s, c) {
var d = getDirectionFactor(i, window.getComputedStyle(a).direction), f = d * s, g = o.target, b = a.contains(g), x = !1, S = f > 0, C = 0, w = 0;
do {
if (!g) break;
var E = getScrollVariables(i, g), O = E[0], A = E[1], M = E[2], F = A - M - d * O;
(O || F) && elementCouldBeScrolled(i, g) && (C += F, w += O);
var I = g.parentNode;
g = I && I.nodeType === Node.DOCUMENT_FRAGMENT_NODE ? I.host : I;
} while (!b && g !== document.body || b && (a.contains(g) || a === g));
return (S && (c && Math.abs(C) < 1 || !c && f > C) || !S && (c && Math.abs(w) < 1 || !c && -f > w)) && (x = !0), x;
}, getTouchXY = function(i) {
return "changedTouches" in i ? [i.changedTouches[0].clientX, i.changedTouches[0].clientY] : [0, 0];
}, getDeltaXY = function(i) {
return [i.deltaX, i.deltaY];
}, extractRef = function(i) {
return i && "current" in i ? i.current : i;
}, deltaCompare = function(i, a) {
return i[0] === a[0] && i[1] === a[1];
}, generateStyle = function(i) {
return `
.block-interactivity-${i} {pointer-events: none;}
.allow-interactivity-${i} {pointer-events: all;}
`;
}, idCounter = 0, lockStack = [];
function RemoveScrollSideCar(i) {
var a = React.useRef([]), o = React.useRef([0, 0]), s = React.useRef(), c = React.useState(idCounter++)[0], d = React.useState(styleSingleton)[0], f = React.useRef(i);
React.useEffect(function() {
f.current = i;
}, [i]), React.useEffect(function() {
if (i.inert) {
document.body.classList.add(`block-interactivity-${c}`);
var a = __spreadArray([i.lockRef.current], (i.shards || []).map(extractRef), !0).filter(Boolean);
return a.forEach(function(i) {
return i.classList.add(`allow-interactivity-${c}`);
}), function() {
document.body.classList.remove(`block-interactivity-${c}`), a.forEach(function(i) {
return i.classList.remove(`allow-interactivity-${c}`);
});
};
}
}, [
i.inert,
i.lockRef.current,
i.shards
]);
var g = React.useCallback(function(i, a) {
if ("touches" in i && i.touches.length === 2 || i.type === "wheel" && i.ctrlKey) return !f.current.allowPinchZoom;
var c = getTouchXY(i), d = o.current, g = "deltaX" in i ? i.deltaX : d[0] - c[0], b = "deltaY" in i ? i.deltaY : d[1] - c[1], x, S = i.target, C = Math.abs(g) > Math.abs(b) ? "h" : "v";
if ("touches" in i && C === "h" && S.type === "range") return !1;
var w = window.getSelection(), E = w && w.anchorNode;
if (E && (E === S || E.contains(S))) return !1;
var O = locationCouldBeScrolled(C, S);
if (!O) return !0;
if (O ? x = C : (x = C === "v" ? "h" : "v", O = locationCouldBeScrolled(C, S)), !O) return !1;
if (!s.current && "changedTouches" in i && (g || b) && (s.current = x), !x) return !0;
var A = s.current || x;
return handleScroll(A, a, i, A === "h" ? g : b, !0);
}, []), b = React.useCallback(function(i) {
var o = i;
if (!(!lockStack.length || lockStack[lockStack.length - 1] !== d)) {
var s = "deltaY" in o ? getDeltaXY(o) : getTouchXY(o), c = a.current.filter(function(i) {
return i.name === o.type && (i.target === o.target || o.target === i.shadowParent) && deltaCompare(i.delta, s);
})[0];
if (c && c.should) {
o.cancelable && o.preventDefault();
return;
}
if (!c) {
var b = (f.current.shards || []).map(extractRef).filter(Boolean).filter(function(i) {
return i.contains(o.target);
});
(b.length > 0 ? g(o, b[0]) : !f.current.noIsolation) && o.cancelable && o.preventDefault();
}
}
}, []), x = React.useCallback(function(i, o, s, c) {
var d = {
name: i,
delta: o,
target: s,
should: c,
shadowParent: getOutermostShadowParent(s)
};
a.current.push(d), setTimeout(function() {
a.current = a.current.filter(function(i) {
return i !== d;
});
}, 1);
}, []), S = React.useCallback(function(i) {
o.current = getTouchXY(i), s.current = void 0;
}, []), C = React.useCallback(function(a) {
x(a.type, getDeltaXY(a), a.target, g(a, i.lockRef.current));
}, []), w = React.useCallback(function(a) {
x(a.type, getTouchXY(a), a.target, g(a, i.lockRef.current));
}, []);
React.useEffect(function() {
return lockStack.push(d), i.setCallbacks({
onScrollCapture: C,
onWheelCapture: C,
onTouchMoveCapture: w
}), document.addEventListener("wheel", b, nonPassive), document.addEventListener("touchmove", b, nonPassive), document.addEventListener("touchstart", S, nonPassive), function() {
lockStack = lockStack.filter(function(i) {
return i !== d;
}), document.removeEventListener("wheel", b, nonPassive), document.removeEventListener("touchmove", b, nonPassive), document.removeEventListener("touchstart", S, nonPassive);
};
}, []);
var E = i.removeScrollBar, O = i.inert;
return React.createElement(React.Fragment, null, O ? React.createElement(d, { styles: generateStyle(c) }) : null, E ? React.createElement(RemoveScrollBar, {
noRelative: i.noRelative,
gapMode: i.gapMode
}) : null);
}
function getOutermostShadowParent(i) {
for (var a = null; i !== null;) i instanceof ShadowRoot && (a = i.host, i = i.host), i = i.parentNode;
return a;
}
var sidecar_default = exportSidecar(effectCar, RemoveScrollSideCar), ReactRemoveScroll = React.forwardRef(function(i, a) {
return React.createElement(RemoveScroll, __assign({}, i, {
ref: a,
sideCar: sidecar_default
}));
});
ReactRemoveScroll.classNames = RemoveScroll.classNames;
var Combination_default = ReactRemoveScroll, getDefaultParent = function(i) {
return typeof document > "u" ? null : (Array.isArray(i) ? i[0] : i).ownerDocument.body;
}, counterMap = /* @__PURE__ */ new WeakMap(), uncontrolledNodes = /* @__PURE__ */ new WeakMap(), markerMap = {}, lockCount = 0, unwrapHost = function(i) {
return i && (i.host || unwrapHost(i.parentNode));
}, correctTargets = function(i, a) {
return a.map(function(a) {
if (i.contains(a)) return a;
var o = unwrapHost(a);
return o && i.contains(o) ? o : (console.error("aria-hidden", a, "in not contained inside", i, ". Doing nothing"), null);
}).filter(function(i) {
return !!i;
});
}, applyAttributeToOthers = function(i, a, o, s) {
var c = correctTargets(a, Array.isArray(i) ? i : [i]);
markerMap[o] || (markerMap[o] = /* @__PURE__ */ new WeakMap());
var d = markerMap[o], f = [], g = /* @__PURE__ */ new Set(), b = new Set(c), x = function(i) {
!i || g.has(i) || (g.add(i), x(i.parentNode));
};
c.forEach(x);
var S = function(i) {
!i || b.has(i) || Array.prototype.forEach.call(i.children, function(i) {
if (g.has(i)) S(i);
else try {
var a = i.getAttribute(s), c = a !== null && a !== "false", b = (counterMap.get(i) || 0) + 1, x = (d.get(i) || 0) + 1;
counterMap.set(i, b), d.set(i, x), f.push(i), b === 1 && c && uncontrolledNodes.set(i, !0), x === 1 && i.setAttribute(o, "true"), c || i.setAttribute(s, "true");
} catch (a) {
console.error("aria-hidden: cannot operate on ", i, a);
}
});
};
return S(a), g.clear(), lockCount++, function() {
f.forEach(function(i) {
var a = counterMap.get(i) - 1, c = d.get(i) - 1;
counterMap.set(i, a), d.set(i, c), a || (uncontrolledNodes.has(i) || i.removeAttribute(s), uncontrolledNodes.delete(i)), c || i.removeAttribute(o);
}), lockCount--, lockCount || (counterMap = /* @__PURE__ */ new WeakMap(), counterMap = /* @__PURE__ */ new WeakMap(), uncontrolledNodes = /* @__PURE__ */ new WeakMap(), markerMap = {});
};
}, hideOthers = function(i, a, o) {
o === void 0 && (o = "data-aria-hidden");
var s = Array.from(Array.isArray(i) ? i : [i]), c = a || getDefaultParent(i);
return c ? (s.push.apply(s, Array.from(c.querySelectorAll("[aria-live], script"))), applyAttributeToOthers(s, c, o, "aria-hidden")) : function() {
return null;
};
}, DIALOG_NAME = "Dialog", [createDialogContext, createDialogScope] = createContextScope(DIALOG_NAME), [DialogProvider, useDialogContext] = createDialogContext(DIALOG_NAME), Dialog$1 = (i) => {
let { __scopeDialog: a, children: o, open: s, defaultOpen: c, onOpenChange: d, modal: f = !0 } = i, g = React.useRef(null), b = React.useRef(null), [x, S] = useControllableState({
prop: s,
defaultProp: c ?? !1,
onChange: d,
caller: DIALOG_NAME
});
return /* @__PURE__ */ jsx(DialogProvider, {
scope: a,
triggerRef: g,
contentRef: b,
contentId: useId$1(),
titleId: useId$1(),
descriptionId: useId$1(),
open: x,
onOpenChange: S,
onOpenToggle: React.useCallback(() => S((i) => !i), [S]),
modal: f,
children: o
});
};
Dialog$1.displayName = DIALOG_NAME;
var TRIGGER_NAME$8 = "DialogTrigger", DialogTrigger$1 = React.forwardRef((i, a) => {
let { __scopeDialog: o,...s } = i, c = useDialogContext(TRIGGER_NAME$8, o), d = useComposedRefs$1(a, c.triggerRef);
return /* @__PURE__ */ jsx(Primitive.button, {
type: "button",
"aria-haspopup": "dialog",
"aria-expanded": c.open,
"aria-controls": c.contentId,
"data-state": getState$4(c.open),
...s,
ref: d,
onClick: composeEventHandlers(i.onClick, c.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 = (i) => {
let { __scopeDialog: a, forceMount: o, children: s, container: c } = i, d = useDialogContext(PORTAL_NAME$6, a);
return /* @__PURE__ */ jsx(PortalProvider$2, {
scope: a,
forceMount: o,
children: React.Children.map(s, (i) => /* @__PURE__ */ jsx(Presence, {
present: o || d.open,
children: /* @__PURE__ */ jsx(Portal, {
asChild: !0,
container: c,
children: i
})
}))
});
};
DialogPortal$1.displayName = PORTAL_NAME$6;
var OVERLAY_NAME$2 = "DialogOverlay", DialogOverlay$1 = React.forwardRef((i, a) => {
let o = usePortalContext$2(OVERLAY_NAME$2, i.__scopeDialog), { forceMount: s = o.forceMount,...c } = i, d = useDialogContext(OVERLAY_NAME$2, i.__scopeDialog);
return d.modal ? /* @__PURE__ */ jsx(Presence, {
present: s || d.open,
children: /* @__PURE__ */ jsx(DialogOverlayImpl, {
...c,
ref: a
})
}) : null;
});
DialogOverlay$1.displayName = OVERLAY_NAME$2;
var Slot$3 = /* @__PURE__ */ createSlot("DialogOverlay.RemoveScroll"), DialogOverlayImpl = React.forwardRef((i, a) => {
let { __scopeDialog: o,...s } = i, c = useDialogContext(OVERLAY_NAME$2, o);
return /* @__PURE__ */ jsx(Combination_default, {
as: Slot$3,
allowPinchZoom: !0,
shards: [c.contentRef],
children: /* @__PURE__ */ jsx(Primitive.div, {
"data-state": getState$4(c.open),
...s,
ref: a,
style: {
pointerEvents: "auto",
...s.style
}
})
});
}), CONTENT_NAME$10 = "DialogContent", DialogContent$1 = React.forwardRef((i, a) => {
let o = usePortalContext$2(CONTENT_NAME$10, i.__scopeDialog), { forceMount: s = o.forceMount,...c } = i, d = useDialogContext(CONTENT_NAME$10, i.__scopeDialog);
return /* @__PURE__ */ jsx(Presence, {
present: s || d.open,
children: d.modal ? /* @__PURE__ */ jsx(DialogContentModal, {
...c,
ref: a
}) : /* @__PURE__ */ jsx(DialogContentNonModal, {
...c,
ref: a
})
});
});
DialogContent$1.displayName = CONTENT_NAME$10;
var DialogContentModal = React.forwardRef((i, a) => {
let o = useDialogContext(CONTENT_NAME$10, i.__scopeDialog), s = React.useRef(null), c = useComposedRefs$1(a, o.contentRef, s);
return React.useEffect(() => {
let i = s.current;
if (i) return hideOthers(i);
}, []), /* @__PURE__ */ jsx(DialogContentImpl, {
...i,
ref: c,
trapFocus: o.open,
disableOutsidePointerEvents: !0,
onCloseAutoFocus: composeEventHandlers(i.onCloseAutoFocus, (i) => {
i.preventDefault(), o.triggerRef.current?.focus();
}),
onPointerDownOutside: composeEventHandlers(i.onPointerDownOutside, (i) => {
let a = i.detail.originalEvent, o = a.button === 0 && a.ctrlKey === !0;
(a.button === 2 || o) && i.preventDefault();
}),
onFocusOutside: composeEventHandlers(i.onFocusOutside, (i) => i.preventDefault())
});
}), DialogContentNonModal = React.forwardRef((i, a) => {
let o = useDialogContext(CONTENT_NAME$10, i.__scopeDialog), s = React.useRef(!1), c = React.useRef(!1);
return /* @__PURE__ */ jsx(DialogContentImpl, {
...i,
ref: a,
trapFocus: !1,
disableOutsidePointerEvents: !1,
onCloseAutoFocus: (a) => {
i.onCloseAutoFocus?.(a), a.defaultPrevented || (s.current || o.triggerRef.current?.focus(), a.preventDefault()), s.current = !1, c.current = !1;
},
onInteractOutside: (a) => {
i.onInteractOutside?.(a), a.defaultPrevented || (s.current = !0, a.detail.originalEvent.type === "pointerdown" && (c.current = !0));
let d = a.target;
o.triggerRef.current?.contains(d) && a.preventDefault(), a.detail.originalEvent.type === "focusin" && c.current && a.preventDefault();
}
});
}), DialogContentImpl = React.forwardRef((i, a) => {
let { __scopeDialog: o, trapFocus: s, onOpenAutoFocus: c, onCloseAutoFocus: d,...f } = i, g = useDialogContext(CONTENT_NAME$10, o), b = React.useRef(null), x = useComposedRefs$1(a, b);
return useFocusGuards(), /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(FocusScope, {
asChild: !0,
loop: !0,
trapped: s,
onMountAutoFocus: c,
onUnmountAutoFocus: d,
children: /* @__PURE__ */ jsx(DismissableLayer, {
role: "dialog",
id: g.contentId,
"aria-describedby": g.descriptionId,
"aria-labelledby": g.titleId,
"data-state": getState$4(g.open),
...f,
ref: x,
onDismiss: () => g.onOpenChange(!1)
})
}), /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(TitleWarning, { titleId: g.titleId }), /* @__PURE__ */ jsx(DescriptionWarning$1, {
contentRef: b,
descriptionId: g.descriptionId
})] })] });
}), TITLE_NAME$1 = "DialogTitle", DialogTitle$1 = React.forwardRef((i, a) => {
let { __scopeDialog: o,...s } = i, c = useDialogContext(TITLE_NAME$1, o);
return /* @__PURE__ */ jsx(Primitive.h2, {
id: c.titleId,
...s,
ref: a
});
});
DialogTitle$1.displayName = TITLE_NAME$1;
var DESCRIPTION_NAME$1 = "DialogDescription", DialogDescription$1 = React.forwardRef((i, a) => {
let { __scopeDialog: o,...s } = i, c = useDialogContext(DESCRIPTION_NAME$1, o);
return /* @__PURE__ */ jsx(Primitive.p, {
id: c.descriptionId,
...s,
ref: a
});
});
DialogDescription$1.displayName = DESCRIPTION_NAME$1;
var CLOSE_NAME = "DialogClose", DialogClose$1 = React.forwardRef((i, a) => {
let { __scopeDialog: o,...s } = i, c = useDialogContext(CLOSE_NAME, o);
return /* @__PURE__ */ jsx(Primitive.button, {
type: "button",
...s,
ref: a,
onClick: composeEventHandlers(i.onClick, () => c.onOpenChange(!1))
});
});
DialogClose$1.displayName = CLOSE_NAME;
function getState$4(i) {
return i ? "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: i }) => {
let a = useWarningContext(TITLE_WARNING_NAME), o = `\`${a.contentName}\` requires a \`${a.titleName}\` for the component to be accessible for screen reader users.
If you want to hide the \`${a.titleName}\`, you can wrap it with our VisuallyHidden component.
For more information, see https://radix-ui.com/primitives/docs/components/${a.docsSlug}`;
return React.useEffect(() => {
i && (document.getElementById(i) || console.error(o));
}, [o, i]), null;
}, DESCRIPTION_WARNING_NAME = "DialogDescriptionWarning", DescriptionWarning$1 = ({ contentRef: i, descriptionId: a }) => {
let o = `Warning: Missing \`Description\` or \`aria-describedby={undefined}\` for {${useWarningContext(DESCRIPTION_WARNING_NAME).contentName}}.`;
return React.useEffect(() => {
let s = i.current?.getAttribute("aria-describedby");
a && s && (document.getElementById(a) || console.warn(o));
}, [
o,
i,
a
]), null;
}, Root$10 = Dialog$1, Trigger$5 = DialogTrigger$1, Portal$4 = DialogPortal$1, Overlay = DialogOverlay$1, Content$2 = DialogContent$1, Title = DialogTitle$1, Description$1 = DialogDescription$1, Close = DialogClose$1;
function Dialog({ ...i }) {
return /* @__PURE__ */ jsx(Root$10, {
"data-slot": "dialog",
...i
});
}
function DialogTrigger({ ...i }) {
return /* @__PURE__ */ jsx(Trigger$5, {
"data-slot": "dialog-trigger",
...i
});
}
function DialogPortal({ ...i }) {
let { container: a } = useLaboratory();
return /* @__PURE__ */ jsx(Portal$4, {
"data-slot": "dialog-portal",
...i,
container: a
});
}
function DialogClose({ ...i }) {
return /* @__PURE__ */ jsx(Close, {
"data-slot": "dialog-close",
...i
});
}
function DialogOverlay({ className: i,...a }) {
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", i),
...a
});
}
function DialogContent({ className: i, children: a, showCloseButton: o = !0,...s }) {
return /* @__PURE__ */ jsxs(DialogPortal, {
"data-slot": "dialog-portal",
children: [/* @__PURE__ */ jsx(DialogOverlay, {}), /* @__PURE__ */ jsxs(Content$2, {
"data-slot": "dialog-content",
className: cn("bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 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", i),
...s,
children: [a, o && /* @__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: i,...a }) {
return /* @__PURE__ */ jsx("div", {
"data-slot": "dialog-header",
className: cn("flex flex-col gap-2 text-center sm:text-left", i),
...a
});
}
function DialogFooter({ className: i,...a }) {
return /* @__PURE__ */ jsx("div", {
"data-slot": "dialog-footer",
className: cn("flex flex-col-reverse gap-2 sm:flex-row sm:justify-end", i),
...a
});
}
function DialogTitle({ className: i,...a }) {
return /* @__PURE__ */ jsx(Title, {
"data-slot": "dialog-title",
className: cn("text-lg font-semibold leading-none", i),
...a
});
}
function DialogDescription({ className: i,...a }) {
return /* @__PURE__ */ jsx(Description$1, {
"data-slot": "dialog-description",
className: cn("text-muted-foreground text-sm", i),
...a
});
}
function createCollection(i) {
let a = i + "CollectionProvider", [o, s] = createContextScope(a), [c, d] = o(a, {
collectionRef: { current: null },
itemMap: /* @__PURE__ */ new Map()
}), f = (i) => {
let { scope: a, children: o } = i, s = ke.useRef(null), d = ke.useRef(/* @__PURE__ */ new Map()).current;
return /* @__PURE__ */ jsx(c, {
scope: a,
itemMap: d,
collectionRef: s,
children: o
});
};
f.displayName = a;
let g = i + "CollectionSlot", b = /* @__PURE__ */ createSlot(g), x = ke.forwardRef((i, a) => {
let { scope: o, children: s } = i, c = d(g, o), f = useComposedRefs$1(a, c.collectionRef);
return /* @__PURE__ */ jsx(b, {
ref: f,
children: s
});
});
x.displayName = g;
let S = i + "CollectionItemSlot", C = "data-radix-collection-item", w = /* @__PURE__ */ createSlot(S), E = ke.forwardRef((i, a) => {
let { scope: o, children: s,...c } = i, f = ke.useRef(null), g = useComposedRefs$1(a, f), b = d(S, o);
return ke.useEffect(() => (b.itemMap.set(f, {
ref: f,
...c
}), () => void b.itemMap.delete(f))), /* @__PURE__ */ jsx(w, {
[C]: "",
ref: g,
children: s
});
});
E.displayName = S;
function O(a) {
let o = d(i + "CollectionConsumer", a);
return ke.useCallback(() => {
let i = o.collectionRef.current;
if (!i) return [];
let a = Array.from(i.querySelectorAll(`[${C}]`));
return Array.from(o.itemMap.values()).sort((i, o) => a.indexOf(i.ref.current) - a.indexOf(o.ref.current));
}, [o.collectionRef, o.itemMap]);
}
return [
{
Provider: f,
Slot: x,
ItemSlot: E
},
O,
s
];
}
var DirectionContext = React.createContext(void 0);
function useDirection(i) {
let a = React.useContext(DirectionContext);
return i || a || "ltr";
}
var sides = [
"top",
"right",
"bottom",
"left"
], min = Math.min, max = Math.max, round = Math.round, floor = Math.floor, createCoords = (i) => ({
x: i,
y: i
}), oppositeSideMap = {
left: "right",
right: "left",
bottom: "top",
top: "bottom"
}, oppositeAlignmentMap = {
start: "end",
end: "start"
};
function clamp$1(i, a, o) {
return max(i, min(a, o));
}
function evaluate(i, a) {
return typeof i == "function" ? i(a) : i;
}
function getSide(i) {
return i.split("-")[0];
}
function getAlignment(i) {
return i.split("-")[1];
}
function getOppositeAxis(i) {
return i === "x" ? "y" : "x";
}
function getAxisLength(i) {
return i === "y" ? "height" : "width";
}
var yAxisSides = /* @__PURE__ */ new Set(["top", "bottom"]);
function getSideAxis(i) {
return yAxisSides.has(getSide(i)) ? "y" : "x";
}
function getAlignmentAxis(i) {
return getOppositeAxis(getSideAxis(i));
}
function getAlignmentSides(i, a, o) {
o === void 0 && (o = !1);
let s = getAlignment(i), c = getAlignmentAxis(i), d = getAxisLength(c), f = c === "x" ? s === (o ? "end" : "start") ? "right" : "left" : s === "start" ? "bottom" : "top";
return a.reference[d] > a.floating[d] && (f = getOppositePlacement(f)), [f, getOppositePlacement(f)];
}
function getExpandedPlacements(i) {
let a = getOppositePlacement(i);
return [
getOppositeAlignmentPlacement(i),
a,
getOppositeAlignmentPlacement(a)
];
}
function getOppositeAlignmentPlacement(i) {
return i.replace(/start|end/g, (i) => oppositeAlignmentMap[i]);
}
var lrPlacement = ["left", "right"], rlPlacement = ["right", "left"], tbPlacement = ["top", "bottom"], btPlacement = ["bottom", "top"];
function getSideList(i, a, o) {
switch (i) {
case "top":
case "bottom": return o ? a ? rlPlacement : lrPlacement : a ? lrPlacement : rlPlacement;
case "left":
case "right": return a ? tbPlacement : btPlacement;
default: return [];
}
}
function getOppositeAxisPlacements(i, a, o, s) {
let c = getAlignment(i), d = getSideList(getSide(i), o === "start", s);
return c && (d = d.map((i) => i + "-" + c), a && (d = d.concat(d.map(getOppositeAlignmentPlacement)))), d;
}
function getOppositePlacement(i) {
return i.replace(/left|right|bottom|top/g, (i) => oppositeSideMap[i]);
}
function expandPaddingObject(i) {
return {
top: 0,
right: 0,
bottom: 0,
left: 0,
...i
};
}
function getPaddingObject(i) {
return typeof i == "number" ? {
top: i,
right: i,
bottom: i,
left: i
} : expandPaddingObject(i);
}
function rectToClientRect(i) {
let { x: a, y: o, width: s, height: c } = i;
return {
width: s,
height: c,
top: o,
left: a,
right: a + s,
bottom: o + c,
x: a,
y: o
};
}
function computeCoordsFromPlacement(i, a, o) {
let { reference: s, floating: c } = i, d = getSideAxis(a), f = getAlignmentAxis(a), g = getAxisLength(f), b = getSide(a), x = d === "y", S = s.x + s.width / 2 - c.width / 2, C = s.y + s.height / 2 - c.height / 2, w = s[g] / 2 - c[g] / 2, E;
switch (b) {
case "top":
E = {
x: S,
y: s.y - c.height
};
break;
case "bottom":
E = {
x: S,
y: s.y + s.height
};
break;
case "right":
E = {
x: s.x + s.width,
y: C
};
break;
case "left":
E = {
x: s.x - c.width,
y: C
};
break;
default: E = {
x: s.x,
y: s.y
};
}
switch (getAlignment(a)) {
case "start":
E[f] -= w * (o && x ? -1 : 1);
break;
case "end":
E[f] += w * (o && x ? -1 : 1);
break;
}
return E;
}
async function detectOverflow$1(i, a) {
a === void 0 && (a = {});
let { x: o, y: s, platform: c, rects: d, elements: f, strategy: g } = i, { boundary: b = "clippingAncestors", rootBoundary: x = "viewport", elementContext: S = "floating", altBoundary: C = !1, padding: w = 0 } = evaluate(a, i), E = getPaddingObject(w), O = f[C ? S === "floating" ? "reference" : "floating" : S], A = rectToClientRect(await c.getClippingRect({
element: await (c.isElement == null ? void 0 : c.isElement(O)) ?? !0 ? O : O.contextElement || await (c.getDocumentElement == null ? void 0 : c.getDocumentElement(f.floating)),
boundary: b,
rootBoundary: x,
strategy: g
})), M = S === "floating" ? {
x: o,
y: s,
width: d.floating.width,
height: d.floating.height
} : d.reference, F = await (c.getOffsetParent == null ? void 0 : c.getOffsetParent(f.floating)), I = await (c.isElement == null ? void 0 : c.isElement(F)) && await (c.getScale == null ? void 0 : c.getScale(F)) || {
x: 1,
y: 1
}, R = rectToClientRect(c.convertOffsetParentRelativeRectToViewportRelativeRect ? await c.convertOffsetParentRelativeRectToViewportRelativeRect({
elements: f,
rect: M,
offsetParent: F,
strategy: g
}) : M);
return {
top: (A.top - R.top + E.top) / I.y,
bottom: (R.bottom - A.bottom + E.bottom) / I.y,
left: (A.left - R.left + E.left) / I.x,
right: (R.right - A.right + E.right) / I.x
};
}
var computePosition$1 = async (i, a, o) => {
let { placement: s = "bottom", strategy: c = "absolute", middleware: d = [], platform: f } = o, g = d.filter(Boolean), b = await (f.isRTL == null ? void 0 : f.isRTL(a)), x = await f.getElementRects({
reference: i,
floating: a,
strategy: c
}), { x: S, y: C } = computeCoordsFromPlacement(x, s, b), w = s, E = {}, O = 0;
for (let o = 0; o < g.length; o++) {
let { name: d, fn: A } = g[o], { x: M, y: F, data: I, reset: R } = await A({
x: S,
y: C,
initialPlacement: s,
placement: w,
strategy: c,
middlewareData: E,
rects: x,
platform: {
...f,
detectOverflow: f.detectOverflow ?? detectOverflow$1
},
elements: {
reference: i,
floating: a
}
});
S = M ?? S, C = F ?? C, E = {
...E,
[d]: {
...E[d],
...I
}
}, R && O <= 50 && (O++, typeof R == "object" && (R.placement && (w = R.placement), R.rects && (x = R.rects === !0 ? await f.getElementRects({
reference: i,
floating: a,
strategy: c
}) : R.rects), {x: S, y: C} = computeCoordsFromPlacement(x, w, b)), o = -1);
}
return {
x: S,
y: C,
placement: w,
strategy: c,
middlewareData: E
};
}, arrow$2 = (i) => ({
name: "arrow",
options: i,
async fn(a) {
let { x: o, y: s, placement: c, rects: d, platform: f, elements: g, middlewareData: b } = a, { element: x, padding: S = 0 } = evaluate(i, a) || {};
if (x == null) return {};
let C = getPaddingObject(S), w = {
x: o,
y: s
}, E = getAlignmentAxis(c), O = getAxisLength(E), A = await f.getDimensions(x), M = E === "y", F = M ? "top" : "left", I = M ? "bottom" : "right", R = M ? "clientHeight" : "clientWidth", V = d.reference[O] + d.reference[E] - w[E] - d.floating[O], rP = w[E] - d.reference[E], iP = await (f.getOffsetParent == null ? void 0 : f.getOffsetParent(x)), q = iP ? iP[R] : 0;
(!q || !await (f.isElement == null ? void 0 : f.isElement(iP))) && (q = g.floating[R] || d.floating[O]);
let aP = V / 2 - rP / 2, oP = q / 2 - A[O] / 2 - 1, sP = min(C[F], oP), cP = min(C[I], oP), lP = sP, uP = q - A[O] - cP, dP = q / 2 - A[O] / 2 + aP, fP = clamp$1(lP, dP, uP), pP = !b.arrow && getAlignment(c) != null && dP !== fP && d.reference[O] / 2 - (dP < lP ? sP : cP) - A[O] / 2 < 0, mP = pP ? dP < lP ? dP - lP : dP - uP : 0;
return {
[E]: w[E] + mP,
data: {
[E]: fP,
centerOffset: dP - fP - mP,
...pP && { alignmentOffset: mP }
},
reset: pP
};
}
}), flip$2 = function(i) {
return i === void 0 && (i = {}), {
name: "flip",
options: i,
async fn(a) {
var o;
let { placement: s, middlewareData: c, rects: d, initialPlacement: f, platform: g, elements: b } = a, { mainAxis: x = !0, crossAxis: S = !0, fallbackPlacements: C, fallbackStrategy: w = "bestFit", fallbackAxisSideDirection: E = "none", flipAlignment: O = !0,...A } = evaluate(i, a);
if ((o = c.arrow) != null && o.alignmentOffset) return {};
let M = getSide(s), F = getSideAxis(f), I = getSide(f) === f, R = await (g.isRTL == null ? void 0 : g.isRTL(b.floating)), V = C || (I || !O ? [getOppositePlacement(f)] : getExpandedPlacements(f)), rP = E !== "none";
!C && rP && V.push(...getOppositeAxisPlacements(f, O, E, R));
let iP = [f, ...V], q = await g.detectOverflow(a, A), aP = [], oP = c.flip?.overflows || [];
if (x && aP.push(q[M]), S) {
let i = getAlignmentSides(s, d, R);
aP.push(q[i[0]], q[i[1]]);
}
if (oP = [...oP, {
placement: s,
overflows: aP
}], !aP.every((i) => i <= 0)) {
let i = (c.flip?.index || 0) + 1, a = iP[i];
if (a && (!(S === "alignment" && F !== getSideAxis(a)) || oP.every((i) => getSideAxis(i.placement) === F ? i.overflows[0] > 0 : !0))) return {
data: {
index: i,
overflows: oP
},
reset: { placement: a }
};
let o = oP.filter((i) => i.overflows[0] <= 0).sort((i, a) => i.overflows[1] - a.overflows[1])[0]?.placement;
if (!o) switch (w) {
case "bestFit": {
let i = oP.filter((i) => {
if (rP) {
let a = getSideAxis(i.placement);
return a === F || a === "y";
}
return !0;
}).map((i) => [i.placement, i.overflows.filter((i) => i > 0).reduce((i, a) => i + a, 0)]).sort((i, a) => i[1] - a[1])[0]?.[0];
i && (o = i);
break;
}
case "initialPlacement":
o = f;
break;
}
if (s !== o) return { reset: { placement: o } };
}
return {};
}
};
};
function getSideOffsets(i, a) {
return {
top: i.top - a.height,
right: i.right - a.width,
bottom: i.bottom - a.height,
left: i.left - a.width
};
}
function isAnySideFullyClipped(i) {
return sides.some((a) => i[a] >= 0);
}
var hide$2 = function(i) {
return i === void 0 && (i = {}), {
name: "hide",
options: i,
async fn(a) {
let { rects: o, platform: s } = a, { strategy: c = "referenceHidden",...d } = evaluate(i, a);
switch (c) {
case "referenceHidden": {
let i = await s.detectOverflow(a, {
...d,
elementContext: "reference"
}), c = getSideOffsets(i, o.reference);
return { data: {
referenceHiddenOffsets: c,
referenceHidden: isAnySideFullyClipped(c)
} };
}
case "escaped": {
let i = await s.detectOverflow(a, {
...d,
altBoundary: !0
}), c = getSideOffsets(i, o.floating);
return { data: {
escapedOffsets: c,
escaped: isAnySideFullyClipped(c)
} };
}
default: return {};
}
}
};
}, originSides = /* @__PURE__ */ new Set(["left", "top"]);
async function convertValueToCoords(i, a) {
let { placement: o, platform: s, elements: c } = i, d = await (s.isRTL == null ? void 0 : s.isRTL(c.floating)), f = getSide(o), g = getAlignment(o), b = getSideAxis(o) === "y", x = originSides.has(f) ? -1 : 1, S = d && b ? -1 : 1, C = evaluate(a, i), { mainAxis: w, crossAxis: E, alignmentAxis: O } = typeof C == "number" ? {
mainAxis: C,
crossAxis: 0,
alignmentAxis: null
} : {
mainAxis: C.mainAxis || 0,
crossAxis: C.crossAxis || 0,
alignmentAxis: C.alignmentAxis
};
return g && typeof O == "number" && (E = g === "end" ? O * -1 : O), b ? {
x: E * S,
y: w * x
} : {
x: w * x,
y: E * S
};
}
var offset$2 = function(i) {
return i === void 0 && (i = 0), {
name: "offset",
options: i,
async fn(a) {
var o;
let { x: s, y: c, placement: d, middlewareData: f } = a, g = await convertValueToCoords(a, i);
return d === f.offset?.placement && (o = f.arrow) != null && o.alignmentOffset ? {} : {
x: s + g.x,
y: c + g.y,
data: {
...g,
placement: d
}
};
}
};
}, shift$2 = function(i) {
return i === void 0 && (i = {}), {
name: "shift",
options: i,
async fn(a) {
let { x: o, y: s, placement: c, platform: d } = a, { mainAxis: f = !0, crossAxis: g = !1, limiter: b = { fn: (i) => {
let { x: a, y: o } = i;
return {
x: a,
y: o
};
} },...x } = evaluate(i, a), S = {
x: o,
y: s
}, C = await d.detectOverflow(a, x), w = getSideAxis(getSide(c)), E = getOppositeAxis(w), O = S[E], A = S[w];
if (f) {
let i = E === "y" ? "top" : "left", a = E === "y" ? "bottom" : "right", o = O + C[i], s = O - C[a];
O = clamp$1(o, O, s);
}
if (g) {
let i = w === "y" ? "top" : "left", a = w === "y" ? "bottom" : "right", o = A + C[i], s = A - C[a];
A = clamp$1(o, A, s);
}
let M = b.fn({
...a,
[E]: O,
[w]: A
});
return {
...M,
data: {
x: M.x - o,
y: M.y - s,
enabled: {
[E]: f,
[w]: g
}
}
};
}
};
}, limitShift$2 = function(i) {
return i === void 0 && (i = {}), {
options: i,
fn(a) {
let { x: o, y: s, placement: c, rects: d, middlewareData: f } = a, { offset: g = 0, mainAxis: b = !0, crossAxis: x = !0 } = evaluate(i, a), S = {
x: o,
y: s
}, C = getSideAxis(c), w = getOppositeAxis(C), E = S[w], O = S[C], A = evaluate(g, a), M = typeof A == "number" ? {
mainAxis: A,
crossAxis: 0
} : {
mainAxis: 0,
crossAxis: 0,
...A
};
if (b) {
let i = w === "y" ? "height" : "width", a = d.reference[w] - d.floating[i] + M.mainAxis, o = d.reference[w] + d.reference[i] - M.mainAxis;
E < a ? E = a : E > o && (E = o);
}
if (x) {
let i = w === "y" ? "width" : "height", a = originSides.has(getSide(c)), o = d.reference[C] - d.floating[i] + (a && f.offset?.[C] || 0) + (a ? 0 : M.crossAxis), s = d.reference[C] + d.reference[i] + (a ? 0 : f.offset?.[C] || 0) - (a ? M.crossAxis : 0);
O < o ? O = o : O > s && (O = s);
}
return {
[w]: E,
[C]: O
};
}
};
}, size$2 = function(i) {
return i === void 0 && (i = {}), {
name: "size",
options: i,
async fn(a) {
var o, s;
let { placement: c, rects: d, platform: f, elements: g } = a, { apply: b = () => {},...x } = evaluate(i, a), S = await f.detectOverflow(a, x), C = getSide(c), w = getAlignment(c), E = getSideAxis(c) === "y", { width: O, height: A } = d.floating, M, F;
C === "top" || C === "bottom" ? (M = C, F = w === (await (f.isRTL == null ? void 0 : f.isRTL(g.floating)) ? "start" : "end") ? "left" : "right") : (F = C, M = w === "end" ? "top" : "bottom");
let I = A - S.top - S.bottom, R = O - S.left - S.right, V = min(A - S[M], I), rP = min(O - S[F], R), iP = !a.middlewareData.shift, q = V, aP = rP;
if ((o = a.middlewareData.shift) != null && o.enabled.x && (aP = R), (s = a.middlewareData.shift) != null && s.enabled.y && (q = I), iP && !w) {
let i = max(S.left, 0), a = max(S.right, 0), o = max(S.top, 0), s = max(S.bottom, 0);
E ? aP = O - 2 * (i !== 0 || a !== 0 ? i + a : max(S.left, S.right)) : q = A - 2 * (o !== 0 || s !== 0 ? o + s : max(S.top, S.bottom));
}
await b({
...a,
availableWidth: aP,
availableHeight: q
});
let oP = await f.getDimensions(g.floating);
return O !== oP.width || A !== oP.height ? { reset: { rects: !0 } } : {};
}
};
};
function hasWindow() {
return typeof window < "u";
}
function getNodeName(i) {
return isNode$1(i) ? (i.nodeName || "").toLowerCase() : "#document";
}
function getWindow$1(i) {
var a;
return (i == null || (a = i.ownerDocument) == null ? void 0 : a.defaultView) || window;
}
function getDocumentElement(i) {
return ((isNode$1(i) ? i.ownerDocument : i.document) || window.document)?.documentElement;
}
function isNode$1(i) {
return hasWindow() ? i instanceof Node || i instanceof getWindow$1(i).Node : !1;
}
function isElement(i) {
return hasWindow() ? i instanceof Element || i instanceof getWindow$1(i).Element : !1;
}
function isHTMLElement$2(i) {
return hasWindow() ? i instanceof HTMLElement || i instanceof getWindow$1(i).HTMLElement : !1;
}
function isShadowRoot(i) {
return !hasWindow() || typeof ShadowRoot > "u" ? !1 : i instanceof ShadowRoot || i instanceof getWindow$1(i).ShadowRoot;
}
var invalidOverflowDisplayValues = /* @__PURE__ */ new Set(["inline", "contents"]);
function isOverflowElement(i) {
let { overflow: a, overflowX: o, overflowY: s, display: c } = getComputedStyle$1(i);
return /auto|scroll|overlay|hidden|clip/.test(a + s + o) && !invalidOverflowDisplayValues.has(c);
}
var tableElements = /* @__PURE__ */ new Set([
"table",
"td",
"th"
]);
function isTableElement(i) {
return tableElements.has(getNodeName(i));
}
var topLayerSelectors = [":popover-open", ":modal"];
function isTopLayer(i) {
return topLayerSelectors.some((a) => {
try {
return i.matches(a);
} catch {
return !1;
}
});
}
var transformProperties = [
"transform",
"translate",
"scale",
"rotate",
"perspective"
], willChangeValues = [
"transform",
"translate",
"scale",
"rotate",
"perspective",
"filter"
], containValues = [
"paint",
"layout",
"strict",
"content"
];
function isContainingBlock(i) {
let a = isWebKit(), o = isElement(i) ? getComputedStyle$1(i) : i;
return transformProperties.some((i) => o[i] ? o[i] !== "none" : !1) || (o.containerType ? o.containerType !== "normal" : !1) || !a && (o.backdropFilter ? o.backdropFilter !== "none" : !1) || !a && (o.filter ? o.filter !== "none" : !1) || willChangeValues.some((i) => (o.willChange || "").includes(i)) || containValues.some((i) => (o.contain || "").includes(i));
}
function getContainingBlock(i) {
let a = getParentNode(i);
for (; isHTMLElement$2(a) && !isLastTraversableNode(a);) {
if (isContainingBlock(a)) return a;
if (isTopLayer(a)) return null;
a = getParentNode(a);
}
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(i) {
return lastTraversableNodeNames.has(getNodeName(i));
}
function getComputedStyle$1(i) {
return getWindow$1(i).getComputedStyle(i);
}
function getNodeScroll(i) {
return isElement(i) ? {
scrollLeft: i.scrollLeft,
scrollTop: i.scrollTop
} : {
scrollLeft: i.scrollX,
scrollTop: i.scrollY
};
}
function getParentNode(i) {
if (getNodeName(i) === "html") return i;
let a = i.assignedSlot || i.parentNode || isShadowRoot(i) && i.host || getDocumentElement(i);
return isShadowRoot(a) ? a.host : a;
}
function getNearestOverflowAncestor(i) {
let a = getParentNode(i);
return isLastTraversableNode(a) ? i.ownerDocument ? i.ownerDocument.body : i.body : isHTMLElement$2(a) && isOverflowElement(a) ? a : getNearestOverflowAncestor(a);
}
function getOverflowAncestors(i, a, o) {
a === void 0 && (a = []), o === void 0 && (o = !0);
let s = getNearestOverflowAncestor(i), c = s === i.ownerDocument?.body, d = getWindow$1(s);
if (c) {
let i = getFrameElement(d);
return a.concat(d, d.visualViewport || [], isOverflowElement(s) ? s : [], i && o ? getOverflowAncestors(i) : []);
}
return a.concat(s, getOverflowAncestors(s, [], o));
}
function getFrameElement(i) {
return i.parent && Object.getPrototypeOf(i.parent) ? i.frameElement : null;
}
function getCssDimensions(i) {
let a = getComputedStyle$1(i), o = parseFloat(a.width) || 0, s = parseFloat(a.height) || 0, c = isHTMLElement$2(i), d = c ? i.offsetWidth : o, f = c ? i.offsetHeight : s, g = round(o) !== d || round(s) !== f;
return g && (o = d, s = f), {
width: o,
height: s,
$: g
};
}
function unwrapElement(i) {
return isElement(i) ? i : i.contextElement;
}
function getScale(i) {
let a = unwrapElement(i);
if (!isHTMLElement$2(a)) return createCoords(1);
let o = a.getBoundingClientRect(), { width: s, height: c, $: d } = getCssDimensions(a), f = (d ? round(o.width) : o.width) / s, g = (d ? round(o.height) : o.height) / c;
return (!f || !Number.isFinite(f)) && (f = 1), (!g || !Number.isFinite(g)) && (g = 1), {
x: f,
y: g
};
}
var noOffsets = /* @__PURE__ */ createCoords(0);
function getVisualOffsets(i) {
let a = getWindow$1(i);
return !isWebKit() || !a.visualViewport ? noOffsets : {
x: a.visualViewport.offsetLeft,
y: a.visualViewport.offsetTop
};
}
function shouldAddVisualOffsets(i, a, o) {
return a === void 0 && (a = !1), !o || a && o !== getWindow$1(i) ? !1 : a;
}
function getBoundingClientRect(i, a, o, s) {
a === void 0 && (a = !1), o === void 0 && (o = !1);
let c = i.getBoundingClientRect(), d = unwrapElement(i), f = createCoords(1);
a && (s ? isElement(s) && (f = getScale(s)) : f = getScale(i));
let g = shouldAddVisualOffsets(d, o, s) ? getVisualOffsets(d) : createCoords(0), b = (c.left + g.x) / f.x, x = (c.top + g.y) / f.y, S = c.width / f.x, C = c.height / f.y;
if (d) {
let i = getWindow$1(d), a = s && isElement(s) ? getWindow$1(s) : s, o = i, c = getFrameElement(o);
for (; c && s && a !== o;) {
let i = getScale(c), a = c.getBoundingClientRect(), s = getComputedStyle$1(c), d = a.left + (c.clientLeft + parseFloat(s.paddingLeft)) * i.x, f = a.top + (c.clientTop + parseFloat(s.paddingTop)) * i.y;
b *= i.x, x *= i.y, S *= i.x, C *= i.y, b += d, x += f, o = getWindow$1(c), c = getFrameElement(o);
}
}
return rectToClientRect({
width: S,
height: C,
x: b,
y: x
});
}
function getWindowScrollBarX(i, a) {
let o = getNodeScroll(i).scrollLeft;
return a ? a.left + o : getBoundingClientRect(getDocumentElement(i)).left + o;
}
function getHTMLOffset(i, a) {
let o = i.getBoundingClientRect(), s = o.left + a.scrollLeft - getWindowScrollBarX(i, o), c = o.top + a.scrollTop;
return {
x: s,
y: c
};
}
function convertOffsetParentRelativeRectToViewportRelativeRect(i) {
let { elements: a, rect: o, offsetParent: s, strategy: c } = i, d = c === "fixed", f = getDocumentElement(s), g = a ? isTopLayer(a.floating) : !1;
if (s === f || g && d) return o;
let b = {
scrollLeft: 0,
scrollTop: 0
}, x = createCoords(1), S = createCoords(0), C = isHTMLElement$2(s);
if ((C || !C && !d) && ((getNodeName(s) !== "body" || isOverflowElement(f)) && (b = getNodeScroll(s)), isHTMLElement$2(s))) {
let i = getBoundingClientRect(s);
x = getScale(s), S.x = i.x + s.clientLeft, S.y = i.y + s.clientTop;
}
let w = f && !C && !d ? getHTMLOffset(f, b) : createCoords(0);
return {
width: o.width * x.x,
height: o.height * x.y,
x: o.x * x.x - b.scrollLeft * x.x + S.x + w.x,
y: o.y * x.y - b.scrollTop * x.y + S.y + w.y
};
}
function getClientRects(i) {
return Array.from(i.getClientRects());
}
function getDocumentRect(i) {
let a = getDocumentElement(i), o = getNodeScroll(i), s = i.ownerDocument.body, c = max(a.scrollWidth, a.clientWidth, s.scrollWidth, s.clientWidth), d = max(a.scrollHeight, a.clientHeight, s.scrollHeight, s.clientHeight), f = -o.scrollLeft + getWindowScrollBarX(i), g = -o.scrollTop;
return getComputedStyle$1(s).direction === "rtl" && (f += max(a.clientWidth, s.clientWidth) - c), {
width: c,
height: d,
x: f,
y: g
};
}
var SCROLLBAR_MAX = 25;
function getViewportRect(i, a) {
let o = getWindow$1(i), s = getDocumentElement(i), c = o.visualViewport, d = s.clientWidth, f = s.clientHeight, g = 0, b = 0;
if (c) {
d = c.width, f = c.height;
let i = isWebKit();
(!i || i && a === "fixed") && (g = c.offsetLeft, b = c.offsetTop);
}
let x = getWindowScrollBarX(s);
if (x <= 0) {
let i = s.ownerDocument, a = i.body, o = getComputedStyle(a), c = i.compatMode === "CSS1Compat" && parseFloat(o.marginLeft) + parseFloat(o.marginRight) || 0, f = Math.abs(s.clientWidth - a.clientWidth - c);
f <= SCROLLBAR_MAX && (d -= f);
} else x <= SCROLLBAR_MAX && (d += x);
return {
width: d,
height: f,
x: g,
y: b
};
}
var absoluteOrFixed = /* @__PURE__ */ new Set(["absolute", "fixed"]);
function getInnerBoundingClientRect(i, a) {
let o = getBoundingClientRect(i, !0, a === "fixed"), s = o.top + i.clientTop, c = o.left + i.clientLeft, d = isHTMLElement$2(i) ? getScale(i) : createCoords(1), f = i.clientWidth * d.x, g = i.clientHeight * d.y, b = c * d.x, x = s * d.y;
return {
width: f,
height: g,
x: b,
y: x
};
}
function getClientRectFromClippingAncestor(i, a, o) {
let s;
if (a === "viewport") s = getViewportRect(i, o);
else if (a === "document") s = getDocumentRect(getDocumentElement(i));
else if (isElement(a)) s = getInnerBoundingClientRect(a, o);
else {
let o = getVisualOffsets(i);
s = {
x: a.x - o.x,
y: a.y - o.y,
width: a.width,
height: a.height
};
}
return rectToClientRect(s);
}
function hasFixedPositionAncestor(i, a) {
let o = getParentNode(i);
return o === a || !isElement(o) || isLastTraversableNode(o) ? !1 : getComputedStyle$1(o).position === "fixed" || hasFixedPositionAncestor(o, a);
}
function getClippingElementAncestors(i, a) {
let o = a.get(i);
if (o) return o;
let s = getOverflowAncestors(i, [], !1).filter((i) => isElement(i) && getNodeName(i) !== "body"), c = null, d = getComputedStyle$1(i).position === "fixed", f = d ? getParentNode(i) : i;
for (; isElement(f) && !isLastTraversableNode(f);) {
let a = getComputedStyle$1(f), o = isContainingBlock(f);
!o && a.position === "fixed" && (c = null), (d ? !o && !c : !o && a.position === "static" && c && absoluteOrFixed.has(c.position) || isOverflowElement(f) && !o && hasFixedPositionAncestor(i, f)) ? s = s.filter((i) => i !== f) : c = a, f = getParentNode(f);
}
return a.set(i, s), s;
}
function getClippingRect(i) {
let { element: a, boundary: o, rootBoundary: s, strategy: c } = i, d = [...o === "clippingAncestors" ? isTopLayer(a) ? [] : getClippingElementAncestors(a, this._c) : [].concat(o), s], f = d[0], g = d.reduce((i, o) => {
let s = getClientRectFromClippingAncestor(a, o, c);
return i.top = max(s.top, i.top), i.right = min(s.right, i.right), i.bottom = min(s.bottom, i.bottom), i.left = max(s.left, i.left), i;
}, getClientRectFromClippingAncestor(a, f, c));
return {
width: g.right - g.left,
height: g.bottom - g.top,
x: g.left,
y: g.top
};
}
function getDimensions(i) {
let { width: a, height: o } = getCssDimensions(i);
return {
width: a,
height: o
};
}
function getRectRelativeToOffsetParent(i, a, o) {
let s = isHTMLElement$2(a), c = getDocumentElement(a), d = o === "fixed", f = getBoundingClientRect(i, !0, d, a), g = {
scrollLeft: 0,
scrollTop: 0
}, b = createCoords(0);
function x() {
b.x = getWindowScrollBarX(c);
}
if (s || !s && !d) if ((getNodeName(a) !== "body" || isOverflowElement(c)) && (g = getNodeScroll(a)), s) {
let i = getBoundingClientRect(a, !0, d, a);
b.x = i.x + a.clientLeft, b.y = i.y + a.clientTop;
} else c && x();
d && !s && c && x();
let S = c && !s && !d ? getHTMLOffset(c, g) : createCoords(0), C = f.left + g.scrollLeft - b.x - S.x, w = f.top + g.scrollTop - b.y - S.y;
return {
x: C,
y: w,
width: f.width,
height: f.height
};
}
function isStaticPositioned(i) {
return getComputedStyle$1(i).position === "static";
}
function getTrueOffsetParent(i, a) {
if (!isHTMLElement$2(i) || getComputedStyle$1(i).position === "fixed") return null;
if (a) return a(i);
let o = i.offsetParent;
return getDocumentElement(i) === o && (o = o.ownerDocument.body), o;
}
function getOffsetParent(i, a) {
let o = getWindow$1(i);
if (isTopLayer(i)) return o;
if (!isHTMLElement$2(i)) {
let a = getParentNode(i);
for (; a && !isLastTraversableNode(a);) {
if (isElement(a) && !isStaticPositioned(a)) return a;
a = getParentNode(a);
}
return o;
}
let s = getTrueOffsetParent(i, a);
for (; s && isTableElement(s) && isStaticPositioned(s);) s = getTrueOffsetParent(s, a);
return s && isLastTraversableNode(s) && isStaticPositioned(s) && !isContainingBlock(s) ? o : s || getContainingBlock(i) || o;
}
var getElementRects = async function(i) {
let a = this.getOffsetParent || getOffsetParent, o = this.getDimensions, s = await o(i.floating);
return {
reference: getRectRelativeToOffsetParent(i.reference, await a(i.floating), i.strategy),
floating: {
x: 0,
y: 0,
width: s.width,
height: s.height
}
};
};
function isRTL(i) {
return getComputedStyle$1(i).direction === "rtl";
}
var platform = {
convertOffsetParentRelativeRectToViewportRelativeRect,
getDocumentElement,
getClippingRect,
getOffsetParent,
getElementRects,
getClientRects,
getDimensions,
getScale,
isElement,
isRTL
};
function rectsAreEqual(i, a) {
return i.x === a.x && i.y === a.y && i.width === a.width && i.height === a.height;
}
function observeMove(i, a) {
let o = null, s, c = getDocumentElement(i);
function d() {
var i;
clearTimeout(s), (i = o) == null || i.disconnect(), o = null;
}
function f(g, b) {
g === void 0 && (g = !1), b === void 0 && (b = 1), d();
let x = i.getBoundingClientRect(), { left: S, top: C, width: w, height: E } = x;
if (g || a(), !w || !E) return;
let O = floor(C), A = floor(c.clientWidth - (S + w)), M = floor(c.clientHeight - (C + E)), F = floor(S), I = {
rootMargin: -O + "px " + -A + "px " + -M + "px " + -F + "px",
threshold: max(0, min(1, b)) || 1
}, R = !0;
function V(a) {
let o = a[0].intersectionRatio;
if (o !== b) {
if (!R) return f();
o ? f(!1, o) : s = setTimeout(() => {
f(!1, 1e-7);
}, 1e3);
}
o === 1 && !rectsAreEqual(x, i.getBoundingClientRect()) && f(), R = !1;
}
try {
o = new IntersectionObserver(V, {
...I,
root: c.ownerDocument
});
} catch {
o = new IntersectionObserver(V, I);
}
o.observe(i);
}
return f(!0), d;
}
function autoUpdate(i, a, o, s) {
s === void 0 && (s = {});
let { ancestorScroll: c = !0, ancestorResize: d = !0, elementResize: f = typeof ResizeObserver == "function", layoutShift: g = typeof IntersectionObserver == "function", animationFrame: b = !1 } = s, x = unwrapElement(i), S = c || d ? [...x ? getOverflowAncestors(x) : [], ...getOverflowAncestors(a)] : [];
S.forEach((i) => {
c && i.addEventListener("scroll", o, { passive: !0 }), d && i.addEventListener("resize", o);
});
let C = x && g ? observeMove(x, o) : null, w = -1, E = null;
f && (E = new ResizeObserver((i) => {
let [s] = i;
s && s.target === x && E && (E.unobserve(a), cancelAnimationFrame(w), w = requestAnimationFrame(() => {
var i;
(i = E) == null || i.observe(a);
})), o();
}), x && !b && E.observe(x), E.observe(a));
let O, A = b ? getBoundingClientRect(i) : null;
b && M();
function M() {
let a = getBoundingClientRect(i);
A && !rectsAreEqual(A, a) && o(), A = a, O = requestAnimationFrame(M);
}
return o(), () => {
var i;
S.forEach((i) => {
c && i.removeEventListener("scroll", o), d && i.removeEventListener("resize", o);
}), C?.(), (i = E) == null || i.disconnect(), E = null, b && cancelAnimationFrame(O);
};
}
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 = (i, a, o) => {
let s = /* @__PURE__ */ new Map(), c = {
platform,
...o
}, d = {
...c.platform,
_c: s
};
return computePosition$1(i, a, {
...c,
platform: d
});
}, index$1 = typeof document < "u" ? useLayoutEffect : function() {};
function deepEqual(i, a) {
if (i === a) return !0;
if (typeof i != typeof a) return !1;
if (typeof i == "function" && i.toString() === a.toString()) return !0;
let o, s, c;
if (i && a && typeof i == "object") {
if (Array.isArray(i)) {
if (o = i.length, o !== a.length) return !1;
for (s = o; s-- !== 0;) if (!deepEqual(i[s], a[s])) return !1;
return !0;
}
if (c = Object.keys(i), o = c.length, o !== Object.keys(a).length) return !1;
for (s = o; s-- !== 0;) if (!{}.hasOwnProperty.call(a, c[s])) return !1;
for (s = o; s-- !== 0;) {
let o = c[s];
if (!(o === "_owner" && i.$$typeof) && !deepEqual(i[o], a[o])) return !1;
}
return !0;
}
return i !== i && a !== a;
}
function getDPR(i) {
return typeof window > "u" ? 1 : (i.ownerDocument.defaultView || window).devicePixelRatio || 1;
}
function roundByDPR(i, a) {
let o = getDPR(i);
return Math.round(a * o) / o;
}
function useLatestRef(i) {
let a = React.useRef(i);
return index$1(() => {
a.current = i;
}), a;
}
function useFloating(i) {
i === void 0 && (i = {});
let { placement: a = "bottom", strategy: o = "absolute", middleware: s = [], platform: c, elements: { reference: d, floating: f } = {}, transform: g = !0, whileElementsMounted: b, open: x } = i, [S, C] = React.useState({
x: 0,
y: 0,
strategy: o,
placement: a,
middlewareData: {},
isPositioned: !1
}), [w, E] = React.useState(s);
deepEqual(w, s) || E(s);
let [O, A] = React.useState(null), [M, F] = React.useState(null), I = React.useCallback((i) => {
i !== iP.current && (iP.current = i, A(i));
}, []), R = React.useCallback((i) => {
i !== q.current && (q.current = i, F(i));
}, []), V = d || O, rP = f || M, iP = React.useRef(null), q = React.useRef(null), aP = React.useRef(S), oP = b != null, sP = useLatestRef(b), cP = useLatestRef(c), lP = useLatestRef(x), uP = React.useCallback(() => {
if (!iP.current || !q.current) return;
let i = {
placement: a,
strategy: o,
middleware: w
};
cP.current && (i.platform = cP.current), computePosition(iP.current, q.current, i).then((i) => {
let a = {
...i,
isPositioned: lP.current !== !1
};
dP.current && !deepEqual(aP.current, a) && (aP.current = a, ReactDOM$2.flushSync(() => {
C(a);
}));
});
}, [
w,
a,
o,
cP,
lP
]);
index$1(() => {
x === !1 && aP.current.isPositioned && (aP.current.isPositioned = !1, C((i) => ({
...i,
isPositioned: !1
})));
}, [x]);
let dP = React.useRef(!1);
index$1(() => (dP.current = !0, () => {
dP.current = !1;
}), []), index$1(() => {
if (V && (iP.current = V), rP && (q.current = rP), V && rP) {
if (sP.current) return sP.current(V, rP, uP);
uP();
}
}, [
V,
rP,
uP,
sP,
oP
]);
let fP = React.useMemo(() => ({
reference: iP,
floating: q,
setReference: I,
setFloating: R
}), [I, R]), pP = React.useMemo(() => ({
reference: V,
floating: rP
}), [V, rP]), mP = React.useMemo(() => {
let i = {
position: o,
left: 0,
top: 0
};
if (!pP.floating) return i;
let a = roundByDPR(pP.floating, S.x), s = roundByDPR(pP.floating, S.y);
return g ? {
...i,
transform: "translate(" + a + "px, " + s + "px)",
...getDPR(pP.floating) >= 1.5 && { willChange: "transform" }
} : {
position: o,
left: a,
top: s
};
}, [
o,
g,
pP.floating,
S.x,
S.y
]);
return React.useMemo(() => ({
...S,
update: uP,
refs: fP,
elements: pP,
floatingStyles: mP
}), [
S,
uP,
fP,
pP,
mP
]);
}
var arrow$1$1 = (i) => {
function a(i) {
return {}.hasOwnProperty.call(i, "current");
}
return {
name: "arrow",
options: i,
fn(o) {
let { element: s, padding: c } = typeof i == "function" ? i(o) : i;
return s && a(s) ? s.current == null ? {} : arrow$1({
element: s.current,
padding: c
}).fn(o) : s ? arrow$1({
element: s,
padding: c
}).fn(o) : {};
}
};
}, offset = (i, a) => ({
...offset$1(i),
options: [i, a]
}), shift = (i, a) => ({
...shift$1(i),
options: [i, a]
}), limitShift = (i, a) => ({
...limitShift$1(i),
options: [i, a]
}), flip = (i, a) => ({
...flip$1(i),
options: [i, a]
}), size = (i, a) => ({
...size$1(i),
options: [i, a]
}), hide = (i, a) => ({
...hide$1(i),
options: [i, a]
}), arrow = (i, a) => ({
...arrow$1$1(i),
options: [i, a]
}), NAME$4 = "Arrow", Arrow$1 = React.forwardRef((i, a) => {
let { children: o, width: s = 10, height: c = 5,...d } = i;
return /* @__PURE__ */ jsx(Primitive.svg, {
...d,
ref: a,
width: s,
height: c,
viewBox: "0 0 30 10",
preserveAspectRatio: "none",
children: i.asChild ? o : /* @__PURE__ */ jsx("polygon", { points: "0,0 30,0 15,10" })
});
});
Arrow$1.displayName = NAME$4;
var Root$9 = Arrow$1;
function useSize(i) {
let [a, o] = React.useState(void 0);
return useLayoutEffect2(() => {
if (i) {
o({
width: i.offsetWidth,
height: i.offsetHeight
});
let a = new ResizeObserver((a) => {
if (!Array.isArray(a) || !a.length) return;
let s = a[0], c, d;
if ("borderBoxSize" in s) {
let i = s.borderBoxSize, a = Array.isArray(i) ? i[0] : i;
c = a.inlineSize, d = a.blockSize;
} else c = i.offsetWidth, d = i.offsetHeight;
o({
width: c,
height: d
});
});
return a.observe(i, { box: "border-box" }), () => a.unobserve(i);
} else o(void 0);
}, [i]), a;
}
var POPPER_NAME = "Popper", [createPopperContext, createPopperScope] = createContextScope(POPPER_NAME), [PopperProvider, usePopperContext] = createPopperContext(POPPER_NAME), Popper = (i) => {
let { __scopePopper: a, children: o } = i, [s, c] = React.useState(null);
return /* @__PURE__ */ jsx(PopperProvider, {
scope: a,
anchor: s,
onAnchorChange: c,
children: o
});
};
Popper.displayName = POPPER_NAME;
var ANCHOR_NAME$1 = "PopperAnchor", PopperAnchor = React.forwardRef((i, a) => {
let { __scopePopper: o, virtualRef: s,...c } = i, d = usePopperContext(ANCHOR_NAME$1, o), f = React.useRef(null), g = useComposedRefs$1(a, f), b = React.useRef(null);
return React.useEffect(() => {
let i = b.current;
b.current = s?.current || f.current, i !== b.current && d.onAnchorChange(b.current);
}), s ? null : /* @__PURE__ */ jsx(Primitive.div, {
...c,
ref: g
});
});
PopperAnchor.displayName = ANCHOR_NAME$1;
var CONTENT_NAME$9 = "PopperContent", [PopperContentProvider, useContentContext] = createPopperContext(CONTENT_NAME$9), PopperContent = React.forwardRef((i, a) => {
let { __scopePopper: o, side: s = "bottom", sideOffset: c = 0, align: d = "center", alignOffset: f = 0, arrowPadding: g = 0, avoidCollisions: b = !0, collisionBoundary: x = [], collisionPadding: S = 0, sticky: C = "partial", hideWhenDetached: w = !1, updatePositionStrategy: E = "optimized", onPlaced: O,...A } = i, M = usePopperContext(CONTENT_NAME$9, o), [F, I] = React.useState(null), R = useComposedRefs$1(a, (i) => I(i)), [V, rP] = React.useState(null), iP = useSize(V), q = iP?.width ?? 0, aP = iP?.height ?? 0, oP = s + (d === "center" ? "" : "-" + d), sP = typeof S == "number" ? S : {
top: 0,
right: 0,
bottom: 0,
left: 0,
...S
}, cP = Array.isArray(x) ? x : [x], lP = cP.length > 0, uP = {
padding: sP,
boundary: cP.filter(isNotNull),
altBoundary: lP
}, { refs: dP, floatingStyles: fP, placement: pP, isPositioned: mP, middlewareData: hP } = useFloating({
strategy: "fixed",
placement: oP,
whileElementsMounted: (...i) => autoUpdate(...i, { animationFrame: E === "always" }),
elements: { reference: M.anchor },
middleware: [
offset({
mainAxis: c + aP,
alignmentAxis: f
}),
b && shift({
mainAxis: !0,
crossAxis: !1,
limiter: C === "partial" ? limitShift() : void 0,
...uP
}),
b && flip({ ...uP }),
size({
...uP,
apply: ({ elements: i, rects: a, availableWidth: o, availableHeight: s }) => {
let { width: c, height: d } = a.reference, f = i.floating.style;
f.setProperty("--radix-popper-available-width", `${o}px`), f.setProperty("--radix-popper-available-height", `${s}px`), f.setProperty("--radix-popper-anchor-width", `${c}px`), f.setProperty("--radix-popper-anchor-height", `${d}px`);
}
}),
V && arrow({
element: V,
padding: g
}),
transformOrigin({
arrowWidth: q,
arrowHeight: aP
}),
w && hide({
strategy: "referenceHidden",
...uP
})
]
}), [gP, _P] = getSideAndAlignFromPlacement(pP), vP = useCallbackRef(O);
useLayoutEffect2(() => {
mP && vP?.();
}, [mP, vP]);
let yP = hP.arrow?.x, bP = hP.arrow?.y, xP = hP.arrow?.centerOffset !== 0, [SP, CP] = React.useState();
return useLayoutEffect2(() => {
F && CP(window.getComputedStyle(F).zIndex);
}, [F]), /* @__PURE__ */ jsx("div", {
ref: dP.setFloating,
"data-radix-popper-content-wrapper": "",
style: {
...fP,
transform: mP ? fP.transform : "translate(0, -200%)",
minWidth: "max-content",
zIndex: SP,
"--radix-popper-transform-origin": [hP.transformOrigin?.x, hP.transformOrigin?.y].join(" "),
...hP.hide?.referenceHidden && {
visibility: "hidden",
pointerEvents: "none"
}
},
dir: i.dir,
children: /* @__PURE__ */ jsx(PopperContentProvider, {
scope: o,
placedSide: gP,
onArrowChange: rP,
arrowX: yP,
arrowY: bP,
shouldHideArrow: xP,
children: /* @__PURE__ */ jsx(Primitive.div, {
"data-side": gP,
"data-align": _P,
...A,
ref: R,
style: {
...A.style,
animation: mP ? void 0 : "none"
}
})
})
});
});
PopperContent.displayName = CONTENT_NAME$9;
var ARROW_NAME$5 = "PopperArrow", OPPOSITE_SIDE = {
top: "bottom",
right: "left",
bottom: "top",
left: "right"
}, PopperArrow = React.forwardRef(function(i, a) {
let { __scopePopper: o,...s } = i, c = useContentContext(ARROW_NAME$5, o), d = OPPOSITE_SIDE[c.placedSide];
return /* @__PURE__ */ jsx("span", {
ref: c.onArrowChange,
style: {
position: "absolute",
left: c.arrowX,
top: c.arrowY,
[d]: 0,
transformOrigin: {
top: "",
right: "0 0",
bottom: "center 0",
left: "100% 0"
}[c.placedSide],
transform: {
top: "translateY(100%)",
right: "translateY(50%) rotate(90deg) translateX(-50%)",
bottom: "rotate(180deg)",
left: "translateY(50%) rotate(-90deg) translateX(50%)"
}[c.placedSide],
visibility: c.shouldHideArrow ? "hidden" : void 0
},
children: /* @__PURE__ */ jsx(Root$9, {
...s,
ref: a,
style: {
...s.style,
display: "block"
}
})
});
});
PopperArrow.displayName = ARROW_NAME$5;
function isNotNull(i) {
return i !== null;
}
var transformOrigin = (i) => ({
name: "transformOrigin",
options: i,
fn(a) {
let { placement: o, rects: s, middlewareData: c } = a, d = c.arrow?.centerOffset !== 0, f = d ? 0 : i.arrowWidth, g = d ? 0 : i.arrowHeight, [b, x] = getSideAndAlignFromPlacement(o), S = {
start: "0%",
center: "50%",
end: "100%"
}[x], C = (c.arrow?.x ?? 0) + f / 2, w = (c.arrow?.y ?? 0) + g / 2, E = "", O = "";
return b === "bottom" ? (E = d ? S : `${C}px`, O = `${-g}px`) : b === "top" ? (E = d ? S : `${C}px`, O = `${s.floating.height + g}px`) : b === "right" ? (E = `${-g}px`, O = d ? S : `${w}px`) : b === "left" && (E = `${s.floating.width + g}px`, O = d ? S : `${w}px`), { data: {
x: E,
y: O
} };
}
});
function getSideAndAlignFromPlacement(i) {
let [a, o = "center"] = i.split("-");
return [a, o];
}
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.forwardRef((i, a) => /* @__PURE__ */ jsx(Collection$3.Provider, {
scope: i.__scopeRovingFocusGroup,
children: /* @__PURE__ */ jsx(Collection$3.Slot, {
scope: i.__scopeRovingFocusGroup,
children: /* @__PURE__ */ jsx(RovingFocusGroupImpl, {
...i,
ref: a
})
})
}));
RovingFocusGroup.displayName = GROUP_NAME$4;
var RovingFocusGroupImpl = React.forwardRef((i, a) => {
let { __scopeRovingFocusGroup: o, orientation: s, loop: c = !1, dir: d, currentTabStopId: f, defaultCurrentTabStopId: g, onCurrentTabStopIdChange: b, onEntryFocus: x, preventScrollOnEntryFocus: S = !1,...C } = i, w = React.useRef(null), E = useComposedRefs$1(a, w), O = useDirection(d), [A, M] = useControllableState({
prop: f,
defaultProp: g ?? null,
onChange: b,
caller: GROUP_NAME$4
}), [F, I] = React.useState(!1), R = useCallbackRef(x), V = useCollection$3(o), rP = React.useRef(!1), [iP, q] = React.useState(0);
return React.useEffect(() => {
let i = w.current;
if (i) return i.addEventListener(ENTRY_FOCUS, R), () => i.removeEventListener(ENTRY_FOCUS, R);
}, [R]), /* @__PURE__ */ jsx(RovingFocusProvider, {
scope: o,
orientation: s,
dir: O,
loop: c,
currentTabStopId: A,
onItemFocus: React.useCallback((i) => M(i), [M]),
onItemShiftTab: React.useCallback(() => I(!0), []),
onFocusableItemAdd: React.useCallback(() => q((i) => i + 1), []),
onFocusableItemRemove: React.useCallback(() => q((i) => i - 1), []),
children: /* @__PURE__ */ jsx(Primitive.div, {
tabIndex: F || iP === 0 ? -1 : 0,
"data-orientation": s,
...C,
ref: E,
style: {
outline: "none",
...i.style
},
onMouseDown: composeEventHandlers(i.onMouseDown, () => {
rP.current = !0;
}),
onFocus: composeEventHandlers(i.onFocus, (i) => {
let a = !rP.current;
if (i.target === i.currentTarget && a && !F) {
let a = new CustomEvent(ENTRY_FOCUS, EVENT_OPTIONS);
if (i.currentTarget.dispatchEvent(a), !a.defaultPrevented) {
let i = V().filter((i) => i.focusable), a = i.find((i) => i.active), o = i.find((i) => i.id === A), s = [
a,
o,
...i
].filter(Boolean).map((i) => i.ref.current);
focusFirst$1(s, S);
}
}
rP.current = !1;
}),
onBlur: composeEventHandlers(i.onBlur, () => I(!1))
})
});
}), ITEM_NAME$6 = "RovingFocusGroupItem", RovingFocusGroupItem = React.forwardRef((i, a) => {
let { __scopeRovingFocusGroup: o, focusable: s = !0, active: c = !1, tabStopId: d, children: f,...g } = i, b = useId$1(), x = d || b, S = useRovingFocusContext(ITEM_NAME$6, o), C = S.currentTabStopId === x, w = useCollection$3(o), { onFocusableItemAdd: E, onFocusableItemRemove: O, currentTabStopId: A } = S;
return React.useEffect(() => {
if (s) return E(), () => O();
}, [
s,
E,
O
]), /* @__PURE__ */ jsx(Collection$3.ItemSlot, {
scope: o,
id: x,
focusable: s,
active: c,
children: /* @__PURE__ */ jsx(Primitive.span, {
tabIndex: C ? 0 : -1,
"data-orientation": S.orientation,
...g,
ref: a,
onMouseDown: composeEventHandlers(i.onMouseDown, (i) => {
s ? S.onItemFocus(x) : i.preventDefault();
}),
onFocus: composeEventHandlers(i.onFocus, () => S.onItemFocus(x)),
onKeyDown: composeEventHandlers(i.onKeyDown, (i) => {
if (i.key === "Tab" && i.shiftKey) {
S.onItemShiftTab();
return;
}
if (i.target !== i.currentTarget) return;
let a = getFocusIntent(i, S.orientation, S.dir);
if (a !== void 0) {
if (i.metaKey || i.ctrlKey || i.altKey || i.shiftKey) return;
i.preventDefault();
let o = w().filter((i) => i.focusable).map((i) => i.ref.current);
if (a === "last") o.reverse();
else if (a === "prev" || a === "next") {
a === "prev" && o.reverse();
let s = o.indexOf(i.currentTarget);
o = S.loop ? wrapArray$2(o, s + 1) : o.slice(s + 1);
}
setTimeout(() => focusFirst$1(o));
}
}),
children: typeof f == "function" ? f({
isCurrentTabStop: C,
hasTabStop: A != null
}) : f
})
});
});
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(i, a) {
return a === "rtl" ? i === "ArrowLeft" ? "ArrowRight" : i === "ArrowRight" ? "ArrowLeft" : i : i;
}
function getFocusIntent(i, a, o) {
let s = getDirectionAwareKey(i.key, o);
if (!(a === "vertical" && ["ArrowLeft", "ArrowRight"].includes(s)) && !(a === "horizontal" && ["ArrowUp", "ArrowDown"].includes(s))) return MAP_KEY_TO_FOCUS_INTENT[s];
}
function focusFirst$1(i, a = !1) {
let o = document.activeElement;
for (let s of i) if (s === o || (s.focus({ preventScroll: a }), document.activeElement !== o)) return;
}
function wrapArray$2(i, a) {
return i.map((o, s) => i[(a + s) % i.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 = (i) => {
let { __scopeMenu: a, open: o = !1, children: s, dir: c, onOpenChange: d, modal: f = !0 } = i, g = usePopperScope$2(a), [b, x] = React.useState(null), S = React.useRef(!1), C = useCallbackRef(d), w = useDirection(c);
return React.useEffect(() => {
let i = () => {
S.current = !0, document.addEventListener("pointerdown", a, {
capture: !0,
once: !0
}), document.addEventListener("pointermove", a, {
capture: !0,
once: !0
});
}, a = () => S.current = !1;
return document.addEventListener("keydown", i, { capture: !0 }), () => {
document.removeEventListener("keydown", i, { capture: !0 }), document.removeEventListener("pointerdown", a, { capture: !0 }), document.removeEventListener("pointermove", a, { capture: !0 });
};
}, []), /* @__PURE__ */ jsx(Root2$6, {
...g,
children: /* @__PURE__ */ jsx(MenuProvider, {
scope: a,
open: o,
onOpenChange: C,
content: b,
onContentChange: x,
children: /* @__PURE__ */ jsx(MenuRootProvider, {
scope: a,
onClose: React.useCallback(() => C(!1), [C]),
isUsingKeyboardRef: S,
dir: w,
modal: f,
children: s
})
})
});
};
Menu.displayName = MENU_NAME;
var ANCHOR_NAME = "MenuAnchor", MenuAnchor = React.forwardRef((i, a) => {
let { __scopeMenu: o,...s } = i, c = usePopperScope$2(o);
return /* @__PURE__ */ jsx(Anchor, {
...c,
...s,
ref: a
});
});
MenuAnchor.displayName = ANCHOR_NAME;
var PORTAL_NAME$5 = "MenuPortal", [PortalProvider$1, usePortalContext$1] = createMenuContext(PORTAL_NAME$5, { forceMount: void 0 }), MenuPortal = (i) => {
let { __scopeMenu: a, forceMount: o, children: s, container: c } = i, d = useMenuContext(PORTAL_NAME$5, a);
return /* @__PURE__ */ jsx(PortalProvider$1, {
scope: a,
forceMount: o,
children: /* @__PURE__ */ jsx(Presence, {
present: o || d.open,
children: /* @__PURE__ */ jsx(Portal, {
asChild: !0,
container: c,
children: s
})
})
});
};
MenuPortal.displayName = PORTAL_NAME$5;
var CONTENT_NAME$8 = "MenuContent", [MenuContentProvider, useMenuContentContext] = createMenuContext(CONTENT_NAME$8), MenuContent = React.forwardRef((i, a) => {
let o = usePortalContext$1(CONTENT_NAME$8, i.__scopeMenu), { forceMount: s = o.forceMount,...c } = i, d = useMenuContext(CONTENT_NAME$8, i.__scopeMenu), f = useMenuRootContext(CONTENT_NAME$8, i.__scopeMenu);
return /* @__PURE__ */ jsx(Collection$2.Provider, {
scope: i.__scopeMenu,
children: /* @__PURE__ */ jsx(Presence, {
present: s || d.open,
children: /* @__PURE__ */ jsx(Collection$2.Slot, {
scope: i.__scopeMenu,
children: f.modal ? /* @__PURE__ */ jsx(MenuRootContentModal, {
...c,
ref: a
}) : /* @__PURE__ */ jsx(MenuRootContentNonModal, {
...c,
ref: a
})
})
})
});
}), MenuRootContentModal = React.forwardRef((i, a) => {
let o = useMenuContext(CONTENT_NAME$8, i.__scopeMenu), s = React.useRef(null), c = useComposedRefs$1(a, s);
return React.useEffect(() => {
let i = s.current;
if (i) return hideOthers(i);
}, []), /* @__PURE__ */ jsx(MenuContentImpl, {
...i,
ref: c,
trapFocus: o.open,
disableOutsidePointerEvents: o.open,
disableOutsideScroll: !0,
onFocusOutside: composeEventHandlers(i.onFocusOutside, (i) => i.preventDefault(), { checkForDefaultPrevented: !1 }),
onDismiss: () => o.onOpenChange(!1)
});
}), MenuRootContentNonModal = React.forwardRef((i, a) => {
let o = useMenuContext(CONTENT_NAME$8, i.__scopeMenu);
return /* @__PURE__ */ jsx(MenuContentImpl, {
...i,
ref: a,
trapFocus: !1,
disableOutsidePointerEvents: !1,
disableOutsideScroll: !1,
onDismiss: () => o.onOpenChange(!1)
});
}), Slot$2 = /* @__PURE__ */ createSlot("MenuContent.ScrollLock"), MenuContentImpl = React.forwardRef((i, a) => {
let { __scopeMenu: o, loop: s = !1, trapFocus: c, onOpenAutoFocus: d, onCloseAutoFocus: f, disableOutsidePointerEvents: g, onEntryFocus: b, onEscapeKeyDown: x, onPointerDownOutside: S, onFocusOutside: C, onInteractOutside: w, onDismiss: E, disableOutsideScroll: O,...A } = i, M = useMenuContext(CONTENT_NAME$8, o), F = useMenuRootContext(CONTENT_NAME$8, o), I = usePopperScope$2(o), R = useRovingFocusGroupScope$2(o), V = useCollection$2(o), [rP, iP] = React.useState(null), q = React.useRef(null), aP = useComposedRefs$1(a, q, M.onContentChange), oP = React.useRef(0), sP = React.useRef(""), cP = React.useRef(0), lP = React.useRef(null), uP = React.useRef("right"), dP = React.useRef(0), fP = O ? Combination_default : React.Fragment, pP = O ? {
as: Slot$2,
allowPinchZoom: !0
} : void 0, mP = (i) => {
let a = sP.current + i, o = V().filter((i) => !i.disabled), s = document.activeElement, c = o.find((i) => i.ref.current === s)?.textValue, d = o.map((i) => i.textValue), f = getNextMatch(d, a, c), g = o.find((i) => i.textValue === f)?.ref.current;
(function i(a) {
sP.current = a, window.clearTimeout(oP.current), a !== "" && (oP.current = window.setTimeout(() => i(""), 1e3));
})(a), g && setTimeout(() => g.focus());
};
React.useEffect(() => () => window.clearTimeout(oP.current), []), useFocusGuards();
let hP = React.useCallback((i) => uP.current === lP.current?.side && isPointerInGraceArea(i, lP.current?.area), []);
return /* @__PURE__ */ jsx(MenuContentProvider, {
scope: o,
searchRef: sP,
onItemEnter: React.useCallback((i) => {
hP(i) && i.preventDefault();
}, [hP]),
onItemLeave: React.useCallback((i) => {
hP(i) || (q.current?.focus(), iP(null));
}, [hP]),
onTriggerLeave: React.useCallback((i) => {
hP(i) && i.preventDefault();
}, [hP]),
pointerGraceTimerRef: cP,
onPointerGraceIntentChange: React.useCallback((i) => {
lP.current = i;
}, []),
children: /* @__PURE__ */ jsx(fP, {
...pP,
children: /* @__PURE__ */ jsx(FocusScope, {
asChild: !0,
trapped: c,
onMountAutoFocus: composeEventHandlers(d, (i) => {
i.preventDefault(), q.current?.focus({ preventScroll: !0 });
}),
onUnmountAutoFocus: f,
children: /* @__PURE__ */ jsx(DismissableLayer, {
asChild: !0,
disableOutsidePointerEvents: g,
onEscapeKeyDown: x,
onPointerDownOutside: S,
onFocusOutside: C,
onInteractOutside: w,
onDismiss: E,
children: /* @__PURE__ */ jsx(Root$8, {
asChild: !0,
...R,
dir: F.dir,
orientation: "vertical",
loop: s,
currentTabStopId: rP,
onCurrentTabStopIdChange: iP,
onEntryFocus: composeEventHandlers(b, (i) => {
F.isUsingKeyboardRef.current || i.preventDefault();
}),
preventScrollOnEntryFocus: !0,
children: /* @__PURE__ */ jsx(Content$1, {
role: "menu",
"aria-orientation": "vertical",
"data-state": getOpenState(M.open),
"data-radix-menu-content": "",
dir: F.dir,
...I,
...A,
ref: aP,
style: {
outline: "none",
...A.style
},
onKeyDown: composeEventHandlers(A.onKeyDown, (i) => {
let a = i.target.closest("[data-radix-menu-content]") === i.currentTarget, o = i.ctrlKey || i.altKey || i.metaKey, s = i.key.length === 1;
a && (i.key === "Tab" && i.preventDefault(), !o && s && mP(i.key));
let c = q.current;
if (i.target !== c || !FIRST_LAST_KEYS.includes(i.key)) return;
i.preventDefault();
let d = V().filter((i) => !i.disabled).map((i) => i.ref.current);
LAST_KEYS.includes(i.key) && d.reverse(), focusFirst(d);
}),
onBlur: composeEventHandlers(i.onBlur, (i) => {
i.currentTarget.contains(i.target) || (window.clearTimeout(oP.current), sP.current = "");
}),
onPointerMove: composeEventHandlers(i.onPointerMove, whenMouse((i) => {
let a = i.target, o = dP.current !== i.clientX;
i.currentTarget.contains(a) && o && (uP.current = i.clientX > dP.current ? "right" : "left", dP.current = i.clientX);
}))
})
})
})
})
})
});
});
MenuContent.displayName = CONTENT_NAME$8;
var GROUP_NAME$3 = "MenuGroup", MenuGroup = React.forwardRef((i, a) => {
let { __scopeMenu: o,...s } = i;
return /* @__PURE__ */ jsx(Primitive.div, {
role: "group",
...s,
ref: a
});
});
MenuGroup.displayName = GROUP_NAME$3;
var LABEL_NAME$3 = "MenuLabel", MenuLabel = React.forwardRef((i, a) => {
let { __scopeMenu: o,...s } = i;
return /* @__PURE__ */ jsx(Primitive.div, {
...s,
ref: a
});
});
MenuLabel.displayName = LABEL_NAME$3;
var ITEM_NAME$5 = "MenuItem", ITEM_SELECT = "menu.itemSelect", MenuItem = React.forwardRef((i, a) => {
let { disabled: o = !1, onSelect: s,...c } = i, d = React.useRef(null), f = useMenuRootContext(ITEM_NAME$5, i.__scopeMenu), g = useMenuContentContext(ITEM_NAME$5, i.__scopeMenu), b = useComposedRefs$1(a, d), x = React.useRef(!1), S = () => {
let i = d.current;
if (!o && i) {
let a = new CustomEvent(ITEM_SELECT, {
bubbles: !0,
cancelable: !0
});
i.addEventListener(ITEM_SELECT, (i) => s?.(i), { once: !0 }), dispatchDiscreteCustomEvent(i, a), a.defaultPrevented ? x.current = !1 : f.onClose();
}
};
return /* @__PURE__ */ jsx(MenuItemImpl, {
...c,
ref: b,
disabled: o,
onClick: composeEventHandlers(i.onClick, S),
onPointerDown: (a) => {
i.onPointerDown?.(a), x.current = !0;
},
onPointerUp: composeEventHandlers(i.onPointerUp, (i) => {
x.current || i.currentTarget?.click();
}),
onKeyDown: composeEventHandlers(i.onKeyDown, (i) => {
let a = g.searchRef.current !== "";
o || a && i.key === " " || SELECTION_KEYS$1.includes(i.key) && (i.currentTarget.click(), i.preventDefault());
})
});
});
MenuItem.displayName = ITEM_NAME$5;
var MenuItemImpl = React.forwardRef((i, a) => {
let { __scopeMenu: o, disabled: s = !1, textValue: c,...d } = i, f = useMenuContentContext(ITEM_NAME$5, o), g = useRovingFocusGroupScope$2(o), b = React.useRef(null), x = useComposedRefs$1(a, b), [S, C] = React.useState(!1), [w, E] = React.useState("");
return React.useEffect(() => {
let i = b.current;
i && E((i.textContent ?? "").trim());
}, [d.children]), /* @__PURE__ */ jsx(Collection$2.ItemSlot, {
scope: o,
disabled: s,
textValue: c ?? w,
children: /* @__PURE__ */ jsx(Item$1, {
asChild: !0,
...g,
focusable: !s,
children: /* @__PURE__ */ jsx(Primitive.div, {
role: "menuitem",
"data-highlighted": S ? "" : void 0,
"aria-disabled": s || void 0,
"data-disabled": s ? "" : void 0,
...d,
ref: x,
onPointerMove: composeEventHandlers(i.onPointerMove, whenMouse((i) => {
s ? f.onItemLeave(i) : (f.onItemEnter(i), i.defaultPrevented || i.currentTarget.focus({ preventScroll: !0 }));
})),
onPointerLeave: composeEventHandlers(i.onPointerLeave, whenMouse((i) => f.onItemLeave(i))),
onFocus: composeEventHandlers(i.onFocus, () => C(!0)),
onBlur: composeEventHandlers(i.onBlur, () => C(!1))
})
})
});
}), CHECKBOX_ITEM_NAME$2 = "MenuCheckboxItem", MenuCheckboxItem = React.forwardRef((i, a) => {
let { checked: o = !1, onCheckedChange: s,...c } = i;
return /* @__PURE__ */ jsx(ItemIndicatorProvider, {
scope: i.__scopeMenu,
checked: o,
children: /* @__PURE__ */ jsx(MenuItem, {
role: "menuitemcheckbox",
"aria-checked": isIndeterminate$1(o) ? "mixed" : o,
...c,
ref: a,
"data-state": getCheckedState(o),
onSelect: composeEventHandlers(c.onSelect, () => s?.(isIndeterminate$1(o) ? !0 : !o), { checkForDefaultPrevented: !1 })
})
});
});
MenuCheckboxItem.displayName = CHECKBOX_ITEM_NAME$2;
var RADIO_GROUP_NAME$2 = "MenuRadioGroup", [RadioGroupProvider, useRadioGroupContext] = createMenuContext(RADIO_GROUP_NAME$2, {
value: void 0,
onValueChange: () => {}
}), MenuRadioGroup = React.forwardRef((i, a) => {
let { value: o, onValueChange: s,...c } = i, d = useCallbackRef(s);
return /* @__PURE__ */ jsx(RadioGroupProvider, {
scope: i.__scopeMenu,
value: o,
onValueChange: d,
children: /* @__PURE__ */ jsx(MenuGroup, {
...c,
ref: a
})
});
});
MenuRadioGroup.displayName = RADIO_GROUP_NAME$2;
var RADIO_ITEM_NAME$2 = "MenuRadioItem", MenuRadioItem = React.forwardRef((i, a) => {
let { value: o,...s } = i, c = useRadioGroupContext(RADIO_ITEM_NAME$2, i.__scopeMenu), d = o === c.value;
return /* @__PURE__ */ jsx(ItemIndicatorProvider, {
scope: i.__scopeMenu,
checked: d,
children: /* @__PURE__ */ jsx(MenuItem, {
role: "menuitemradio",
"aria-checked": d,
...s,
ref: a,
"data-state": getCheckedState(d),
onSelect: composeEventHandlers(s.onSelect, () => c.onValueChange?.(o), { checkForDefaultPrevented: !1 })
})
});
});
MenuRadioItem.displayName = RADIO_ITEM_NAME$2;
var ITEM_INDICATOR_NAME$1 = "MenuItemIndicator", [ItemIndicatorProvider, useItemIndicatorContext] = createMenuContext(ITEM_INDICATOR_NAME$1, { checked: !1 }), MenuItemIndicator = React.forwardRef((i, a) => {
let { __scopeMenu: o, forceMount: s,...c } = i, d = useItemIndicatorContext(ITEM_INDICATOR_NAME$1, o);
return /* @__PURE__ */ jsx(Presence, {
present: s || isIndeterminate$1(d.checked) || d.checked === !0,
children: /* @__PURE__ */ jsx(Primitive.span, {
...c,
ref: a,
"data-state": getCheckedState(d.checked)
})
});
});
MenuItemIndicator.displayName = ITEM_INDICATOR_NAME$1;
var SEPARATOR_NAME$3 = "MenuSeparator", MenuSeparator = React.forwardRef((i, a) => {
let { __scopeMenu: o,...s } = i;
return /* @__PURE__ */ jsx(Primitive.div, {
role: "separator",
"aria-orientation": "horizontal",
...s,
ref: a
});
});
MenuSeparator.displayName = SEPARATOR_NAME$3;
var ARROW_NAME$4 = "MenuArrow", MenuArrow = React.forwardRef((i, a) => {
let { __scopeMenu: o,...s } = i, c = usePopperScope$2(o);
return /* @__PURE__ */ jsx(Arrow, {
...c,
...s,
ref: a
});
});
MenuArrow.displayName = ARROW_NAME$4;
var SUB_NAME$1 = "MenuSub", [MenuSubProvider, useMenuSubContext] = createMenuContext(SUB_NAME$1), MenuSub = (i) => {
let { __scopeMenu: a, children: o, open: s = !1, onOpenChange: c } = i, d = useMenuContext(SUB_NAME$1, a), f = usePopperScope$2(a), [g, b] = React.useState(null), [x, S] = React.useState(null), C = useCallbackRef(c);
return React.useEffect(() => (d.open === !1 && C(!1), () => C(!1)), [d.open, C]), /* @__PURE__ */ jsx(Root2$6, {
...f,
children: /* @__PURE__ */ jsx(MenuProvider, {
scope: a,
open: s,
onOpenChange: C,
content: x,
onContentChange: S,
children: /* @__PURE__ */ jsx(MenuSubProvider, {
scope: a,
contentId: useId$1(),
triggerId: useId$1(),
trigger: g,
onTriggerChange: b,
children: o
})
})
});
};
MenuSub.displayName = SUB_NAME$1;
var SUB_TRIGGER_NAME$2 = "MenuSubTrigger", MenuSubTrigger = React.forwardRef((i, a) => {
let o = useMenuContext(SUB_TRIGGER_NAME$2, i.__scopeMenu), s = useMenuRootContext(SUB_TRIGGER_NAME$2, i.__scopeMenu), c = useMenuSubContext(SUB_TRIGGER_NAME$2, i.__scopeMenu), d = useMenuContentContext(SUB_TRIGGER_NAME$2, i.__scopeMenu), f = React.useRef(null), { pointerGraceTimerRef: g, onPointerGraceIntentChange: b } = d, x = { __scopeMenu: i.__scopeMenu }, S = React.useCallback(() => {
f.current && window.clearTimeout(f.current), f.current = null;
}, []);
return React.useEffect(() => S, [S]), React.useEffect(() => {
let i = g.current;
return () => {
window.clearTimeout(i), b(null);
};
}, [g, b]), /* @__PURE__ */ jsx(MenuAnchor, {
asChild: !0,
...x,
children: /* @__PURE__ */ jsx(MenuItemImpl, {
id: c.triggerId,
"aria-haspopup": "menu",
"aria-expanded": o.open,
"aria-controls": c.contentId,
"data-state": getOpenState(o.open),
...i,
ref: composeRefs$1(a, c.onTriggerChange),
onClick: (a) => {
i.onClick?.(a), !(i.disabled || a.defaultPrevented) && (a.currentTarget.focus(), o.open || o.onOpenChange(!0));
},
onPointerMove: composeEventHandlers(i.onPointerMove, whenMouse((a) => {
d.onItemEnter(a), !a.defaultPrevented && !i.disabled && !o.open && !f.current && (d.onPointerGraceIntentChange(null), f.current = window.setTimeout(() => {
o.onOpenChange(!0), S();
}, 100));
})),
onPointerLeave: composeEventHandlers(i.onPointerLeave, whenMouse((i) => {
S();
let a = o.content?.getBoundingClientRect();
if (a) {
let s = o.content?.dataset.side, c = s === "right", f = c ? -5 : 5, b = a[c ? "left" : "right"], x = a[c ? "right" : "left"];
d.onPointerGraceIntentChange({
area: [
{
x: i.clientX + f,
y: i.clientY
},
{
x: b,
y: a.top
},
{
x,
y: a.top
},
{
x,
y: a.bottom
},
{
x: b,
y: a.bottom
}
],
side: s
}), window.clearTimeout(g.current), g.current = window.setTimeout(() => d.onPointerGraceIntentChange(null), 300);
} else {
if (d.onTriggerLeave(i), i.defaultPrevented) return;
d.onPointerGraceIntentChange(null);
}
})),
onKeyDown: composeEventHandlers(i.onKeyDown, (a) => {
let c = d.searchRef.current !== "";
i.disabled || c && a.key === " " || SUB_OPEN_KEYS[s.dir].includes(a.key) && (o.onOpenChange(!0), o.content?.focus(), a.preventDefault());
})
})
});
});
MenuSubTrigger.displayName = SUB_TRIGGER_NAME$2;
var SUB_CONTENT_NAME$2 = "MenuSubContent", MenuSubContent = React.forwardRef((i, a) => {
let o = usePortalContext$1(CONTENT_NAME$8, i.__scopeMenu), { forceMount: s = o.forceMount,...c } = i, d = useMenuContext(CONTENT_NAME$8, i.__scopeMenu), f = useMenuRootContext(CONTENT_NAME$8, i.__scopeMenu), g = useMenuSubContext(SUB_CONTENT_NAME$2, i.__scopeMenu), b = React.useRef(null), x = useComposedRefs$1(a, b);
return /* @__PURE__ */ jsx(Collection$2.Provider, {
scope: i.__scopeMenu,
children: /* @__PURE__ */ jsx(Presence, {
present: s || d.open,
children: /* @__PURE__ */ jsx(Collection$2.Slot, {
scope: i.__scopeMenu,
children: /* @__PURE__ */ jsx(MenuContentImpl, {
id: g.contentId,
"aria-labelledby": g.triggerId,
...c,
ref: x,
align: "start",
side: f.dir === "rtl" ? "left" : "right",
disableOutsidePointerEvents: !1,
disableOutsideScroll: !1,
trapFocus: !1,
onOpenAutoFocus: (i) => {
f.isUsingKeyboardRef.current && b.current?.focus(), i.preventDefault();
},
onCloseAutoFocus: (i) => i.preventDefault(),
onFocusOutside: composeEventHandlers(i.onFocusOutside, (i) => {
i.target !== g.trigger && d.onOpenChange(!1);
}),
onEscapeKeyDown: composeEventHandlers(i.onEscapeKeyDown, (i) => {
f.onClose(), i.preventDefault();
}),
onKeyDown: composeEventHandlers(i.onKeyDown, (i) => {
let a = i.currentTarget.contains(i.target), o = SUB_CLOSE_KEYS[f.dir].includes(i.key);
a && o && (d.onOpenChange(!1), g.trigger?.focus(), i.preventDefault());
})
})
})
})
});
});
MenuSubContent.displayName = SUB_CONTENT_NAME$2;
function getOpenState(i) {
return i ? "open" : "closed";
}
function isIndeterminate$1(i) {
return i === "indeterminate";
}
function getCheckedState(i) {
return isIndeterminate$1(i) ? "indeterminate" : i ? "checked" : "unchecked";
}
function focusFirst(i) {
let a = document.activeElement;
for (let o of i) if (o === a || (o.focus(), document.activeElement !== a)) return;
}
function wrapArray$1(i, a) {
return i.map((o, s) => i[(a + s) % i.length]);
}
function getNextMatch(i, a, o) {
let s = a.length > 1 && Array.from(a).every((i) => i === a[0]) ? a[0] : a, c = o ? i.indexOf(o) : -1, d = wrapArray$1(i, Math.max(c, 0));
s.length === 1 && (d = d.filter((i) => i !== o));
let f = d.find((i) => i.toLowerCase().startsWith(s.toLowerCase()));
return f === o ? void 0 : f;
}
function isPointInPolygon$1(i, a) {
let { x: o, y: s } = i, c = !1;
for (let i = 0, d = a.length - 1; i < a.length; d = i++) {
let f = a[i], g = a[d], b = f.x, x = f.y, S = g.x, C = g.y;
x > s != C > s && o < (S - b) * (s - x) / (C - x) + b && (c = !c);
}
return c;
}
function isPointerInGraceArea(i, a) {
if (!a) return !1;
let o = {
x: i.clientX,
y: i.clientY
};
return isPointInPolygon$1(o, a);
}
function whenMouse(i) {
return (a) => a.pointerType === "mouse" ? i(a) : 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 = (i) => {
let { __scopeDropdownMenu: a, children: o, dir: s, open: c, defaultOpen: d, onOpenChange: f, modal: g = !0 } = i, b = useMenuScope$1(a), x = React.useRef(null), [S, C] = useControllableState({
prop: c,
defaultProp: d ?? !1,
onChange: f,
caller: DROPDOWN_MENU_NAME
});
return /* @__PURE__ */ jsx(DropdownMenuProvider, {
scope: a,
triggerId: useId$1(),
triggerRef: x,
contentId: useId$1(),
open: S,
onOpenChange: C,
onOpenToggle: React.useCallback(() => C((i) => !i), [C]),
modal: g,
children: /* @__PURE__ */ jsx(Root3$1, {
...b,
open: S,
onOpenChange: C,
dir: s,
modal: g,
children: o
})
});
};
DropdownMenu$1.displayName = DROPDOWN_MENU_NAME;
var TRIGGER_NAME$7 = "DropdownMenuTrigger", DropdownMenuTrigger$1 = React.forwardRef((i, a) => {
let { __scopeDropdownMenu: o, disabled: s = !1,...c } = i, d = useDropdownMenuContext(TRIGGER_NAME$7, o), f = useMenuScope$1(o);
return /* @__PURE__ */ jsx(Anchor2, {
asChild: !0,
...f,
children: /* @__PURE__ */ jsx(Primitive.button, {
type: "button",
id: d.triggerId,
"aria-haspopup": "menu",
"aria-expanded": d.open,
"aria-controls": d.open ? d.contentId : void 0,
"data-state": d.open ? "open" : "closed",
"data-disabled": s ? "" : void 0,
disabled: s,
...c,
ref: composeRefs$1(a, d.triggerRef),
onPointerDown: composeEventHandlers(i.onPointerDown, (i) => {
!s && i.button === 0 && i.ctrlKey === !1 && (d.onOpenToggle(), d.open || i.preventDefault());
}),
onKeyDown: composeEventHandlers(i.onKeyDown, (i) => {
s || (["Enter", " "].includes(i.key) && d.onOpenToggle(), i.key === "ArrowDown" && d.onOpenChange(!0), [
"Enter",
" ",
"ArrowDown"
].includes(i.key) && i.preventDefault());
})
})
});
});
DropdownMenuTrigger$1.displayName = TRIGGER_NAME$7;
var PORTAL_NAME$4 = "DropdownMenuPortal", DropdownMenuPortal = (i) => {
let { __scopeDropdownMenu: a,...o } = i, s = useMenuScope$1(a);
return /* @__PURE__ */ jsx(Portal$3, {
...s,
...o
});
};
DropdownMenuPortal.displayName = PORTAL_NAME$4;
var CONTENT_NAME$7 = "DropdownMenuContent", DropdownMenuContent$1 = React.forwardRef((i, a) => {
let { __scopeDropdownMenu: o,...s } = i, c = useDropdownMenuContext(CONTENT_NAME$7, o), d = useMenuScope$1(o), f = React.useRef(!1);
return /* @__PURE__ */ jsx(Content2$5, {
id: c.contentId,
"aria-labelledby": c.triggerId,
...d,
...s,
ref: a,
onCloseAutoFocus: composeEventHandlers(i.onCloseAutoFocus, (i) => {
f.current || c.triggerRef.current?.focus(), f.current = !1, i.preventDefault();
}),
onInteractOutside: composeEventHandlers(i.onInteractOutside, (i) => {
let a = i.detail.originalEvent, o = a.button === 0 && a.ctrlKey === !0, s = a.button === 2 || o;
(!c.modal || s) && (f.current = !0);
}),
style: {
...i.style,
"--radix-dropdown-menu-content-transform-origin": "var(--radix-popper-transform-origin)",
"--radix-dropdown-menu-content-available-width": "var(--radix-popper-available-width)",
"--radix-dropdown-menu-content-available-height": "var(--radix-popper-available-height)",
"--radix-dropdown-menu-trigger-width": "var(--radix-popper-anchor-width)",
"--radix-dropdown-menu-trigger-height": "var(--radix-popper-anchor-height)"
}
});
});
DropdownMenuContent$1.displayName = CONTENT_NAME$7;
var GROUP_NAME$2 = "DropdownMenuGroup", DropdownMenuGroup$1 = React.forwardRef((i, a) => {
let { __scopeDropdownMenu: o,...s } = i, c = useMenuScope$1(o);
return /* @__PURE__ */ jsx(Group, {
...c,
...s,
ref: a
});
});
DropdownMenuGroup$1.displayName = GROUP_NAME$2;
var LABEL_NAME$2 = "DropdownMenuLabel", DropdownMenuLabel = React.forwardRef((i, a) => {
let { __scopeDropdownMenu: o,...s } = i, c = useMenuScope$1(o);
return /* @__PURE__ */ jsx(Label$2, {
...c,
...s,
ref: a
});
});
DropdownMenuLabel.displayName = LABEL_NAME$2;
var ITEM_NAME$4 = "DropdownMenuItem", DropdownMenuItem$1 = React.forwardRef((i, a) => {
let { __scopeDropdownMenu: o,...s } = i, c = useMenuScope$1(o);
return /* @__PURE__ */ jsx(Item2$3, {
...c,
...s,
ref: a
});
});
DropdownMenuItem$1.displayName = ITEM_NAME$4;
var CHECKBOX_ITEM_NAME$1 = "DropdownMenuCheckboxItem", DropdownMenuCheckboxItem = React.forwardRef((i, a) => {
let { __scopeDropdownMenu: o,...s } = i, c = useMenuScope$1(o);
return /* @__PURE__ */ jsx(CheckboxItem, {
...c,
...s,
ref: a
});
});
DropdownMenuCheckboxItem.displayName = CHECKBOX_ITEM_NAME$1;
var RADIO_GROUP_NAME$1 = "DropdownMenuRadioGroup", DropdownMenuRadioGroup = React.forwardRef((i, a) => {
let { __scopeDropdownMenu: o,...s } = i, c = useMenuScope$1(o);
return /* @__PURE__ */ jsx(RadioGroup, {
...c,
...s,
ref: a
});
});
DropdownMenuRadioGroup.displayName = RADIO_GROUP_NAME$1;
var RADIO_ITEM_NAME$1 = "DropdownMenuRadioItem", DropdownMenuRadioItem = React.forwardRef((i, a) => {
let { __scopeDropdownMenu: o,...s } = i, c = useMenuScope$1(o);
return /* @__PURE__ */ jsx(RadioItem, {
...c,
...s,
ref: a
});
});
DropdownMenuRadioItem.displayName = RADIO_ITEM_NAME$1;
var INDICATOR_NAME$2 = "DropdownMenuItemIndicator", DropdownMenuItemIndicator = React.forwardRef((i, a) => {
let { __scopeDropdownMenu: o,...s } = i, c = useMenuScope$1(o);
return /* @__PURE__ */ jsx(ItemIndicator$1, {
...c,
...s,
ref: a
});
});
DropdownMenuItemIndicator.displayName = INDICATOR_NAME$2;
var SEPARATOR_NAME$2 = "DropdownMenuSeparator", DropdownMenuSeparator$1 = React.forwardRef((i, a) => {
let { __scopeDropdownMenu: o,...s } = i, c = useMenuScope$1(o);
return /* @__PURE__ */ jsx(Separator$2, {
...c,
...s,
ref: a
});
});
DropdownMenuSeparator$1.displayName = SEPARATOR_NAME$2;
var ARROW_NAME$3 = "DropdownMenuArrow", DropdownMenuArrow = React.forwardRef((i, a) => {
let { __scopeDropdownMenu: o,...s } = i, c = useMenuScope$1(o);
return /* @__PURE__ */ jsx(Arrow2$1, {
...c,
...s,
ref: a
});
});
DropdownMenuArrow.displayName = ARROW_NAME$3;
var SUB_TRIGGER_NAME$1 = "DropdownMenuSubTrigger", DropdownMenuSubTrigger = React.forwardRef((i, a) => {
let { __scopeDropdownMenu: o,...s } = i, c = useMenuScope$1(o);
return /* @__PURE__ */ jsx(SubTrigger, {
...c,
...s,
ref: a
});
});
DropdownMenuSubTrigger.displayName = SUB_TRIGGER_NAME$1;
var SUB_CONTENT_NAME$1 = "DropdownMenuSubContent", DropdownMenuSubContent = React.forwardRef((i, a) => {
let { __scopeDropdownMenu: o,...s } = i, c = useMenuScope$1(o);
return /* @__PURE__ */ jsx(SubContent, {
...c,
...s,
ref: a,
style: {
...i.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({ ...i }) {
return /* @__PURE__ */ jsx(Root2$5, {
"data-slot": "dropdown-menu",
...i
});
}
function DropdownMenuTrigger({ ...i }) {
return /* @__PURE__ */ jsx(Trigger$4, {
"data-slot": "dropdown-menu-trigger",
...i
});
}
function DropdownMenuContent({ className: i, sideOffset: a = 4,...o }) {
let [s, c] = useState(null);
return /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(Portal2$2, {
container: s,
children: /* @__PURE__ */ jsx(Content2$4, {
"data-slot": "dropdown-menu-content",
sideOffset: a,
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", i),
...o
})
}), /* @__PURE__ */ jsx("div", {
ref: c,
style: { display: "contents" }
})] });
}
function DropdownMenuGroup({ ...i }) {
return /* @__PURE__ */ jsx(Group2, {
"data-slot": "dropdown-menu-group",
...i
});
}
function DropdownMenuItem({ className: i, inset: a, variant: o = "default",...s }) {
return /* @__PURE__ */ jsx(Item2$2, {
"data-slot": "dropdown-menu-item",
"data-inset": a,
"data-variant": o,
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", i),
...s
});
}
function DropdownMenuSeparator({ className: i,...a }) {
return /* @__PURE__ */ jsx(Separator2, {
"data-slot": "dropdown-menu-separator",
className: cn("bg-border -mx-1 my-1 h-px", i),
...a
});
}
function DropdownMenuShortcut({ className: i,...a }) {
return /* @__PURE__ */ jsx("span", {
"data-slot": "dropdown-menu-shortcut",
className: cn("text-muted-foreground ml-auto text-xs tracking-widest", i),
...a
});
}
function Empty({ className: i,...a }) {
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", i),
...a
});
}
function EmptyHeader({ className: i,...a }) {
return /* @__PURE__ */ jsx("div", {
"data-slot": "empty-header",
className: cn("flex max-w-sm flex-col items-center gap-2 text-center", i),
...a
});
}
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: i, variant: a = "default",...o }) {
return /* @__PURE__ */ jsx("div", {
"data-slot": "empty-icon",
"data-variant": a,
className: cn(emptyMediaVariants({
variant: a,
className: i
})),
...o
});
}
function EmptyTitle({ className: i,...a }) {
return /* @__PURE__ */ jsx("div", {
"data-slot": "empty-title",
className: cn("text-lg font-medium tracking-tight", i),
...a
});
}
function EmptyDescription({ className: i,...a }) {
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", i),
...a
});
}
function EmptyContent({ className: i,...a }) {
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", i),
...a
});
}
var Primitive$1 = [
"a",
"button",
"div",
"form",
"h2",
"h3",
"img",
"input",
"label",
"li",
"nav",
"ol",
"p",
"select",
"span",
"svg",
"ul"
].reduce((i, a) => {
let o = /* @__PURE__ */ createSlot$1(`Primitive.${a}`), s = React.forwardRef((i, s) => {
let { asChild: c,...d } = i, f = c ? o : a;
return typeof window < "u" && (window[Symbol.for("radix-ui")] = !0), /* @__PURE__ */ jsx(f, {
...d,
ref: s
});
});
return s.displayName = `Primitive.${a}`, {
...i,
[a]: s
};
}, {}), NAME$3 = "Label", Label$1 = React.forwardRef((i, a) => /* @__PURE__ */ jsx(Primitive$1.label, {
...i,
ref: a,
onMouseDown: (a) => {
a.target.closest("button, input, select, textarea") || (i.onMouseDown?.(a), !a.defaultPrevented && a.detail > 1 && a.preventDefault());
}
}));
Label$1.displayName = NAME$3;
var Root$7 = Label$1;
function Label({ className: i,...a }) {
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", i),
...a
});
}
var NAME$2 = "Separator", DEFAULT_ORIENTATION = "horizontal", ORIENTATIONS = ["horizontal", "vertical"], Separator$1 = React.forwardRef((i, a) => {
let { decorative: o, orientation: s = DEFAULT_ORIENTATION,...c } = i, d = isValidOrientation(s) ? s : DEFAULT_ORIENTATION, f = d === "vertical" ? d : void 0, g = o ? { role: "none" } : {
"aria-orientation": f,
role: "separator"
};
return /* @__PURE__ */ jsx(Primitive$1.div, {
"data-orientation": d,
...g,
...c,
ref: a
});
});
Separator$1.displayName = NAME$2;
function isValidOrientation(i) {
return ORIENTATIONS.includes(i);
}
var Root$6 = Separator$1;
function Separator({ className: i, orientation: a = "horizontal", decorative: o = !0,...s }) {
return /* @__PURE__ */ jsx(Root$6, {
"data-slot": "separator",
decorative: o,
orientation: a,
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", i),
...s
});
}
function FieldGroup({ className: i,...a }) {
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", i),
...a
});
}
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: i, orientation: a = "vertical",...o }) {
return /* @__PURE__ */ jsx("div", {
role: "group",
"data-slot": "field",
"data-orientation": a,
className: cn(fieldVariants({ orientation: a }), i),
...o
});
}
function FieldLabel({ className: i,...a }) {
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", i),
...a
});
}
function FieldDescription({ className: i,...a }) {
return /* @__PURE__ */ jsx("p", {
"data-slot": "field-description",
className: cn("text-muted-foreground text-sm font-normal leading-normal group-has-[[data-orientation=horizontal]]/field:text-balance", "nth-last-2:-mt-1 last:mt-0 [[data-variant=legend]+&]:-mt-1.5", "[&>a:hover]:text-primary [&>a]:underline [&>a]:underline-offset-4", i),
...a
});
}
function FieldError({ className: i, children: a, errors: o,...s }) {
let c = useMemo(() => {
if (a) return a;
if (!o?.length) return null;
let i = [...new Map(o.map((i) => [i?.message, i])).values()];
return i?.length === 1 ? i[0]?.message : /* @__PURE__ */ jsx("ul", {
className: "ml-4 flex list-disc flex-col gap-1",
children: i.map((i, a) => i?.message && /* @__PURE__ */ jsx("li", { children: i.message }, a))
});
}, [a, o]);
return c ? /* @__PURE__ */ jsx("div", {
role: "alert",
"data-slot": "field-error",
className: cn("text-destructive text-sm font-normal", i),
...s,
children: c
}) : null;
}
function Input({ className: i, type: a,...o }) {
return /* @__PURE__ */ jsx("input", {
type: a,
"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", i),
...o
});
}
var PanelGroupContext = createContext(null);
PanelGroupContext.displayName = "PanelGroupContext";
var DATA_ATTRIBUTES = {
group: "data-panel-group",
groupDirection: "data-panel-group-direction",
groupId: "data-panel-group-id",
panel: "data-panel",
panelCollapsible: "data-panel-collapsible",
panelId: "data-panel-id",
panelSize: "data-panel-size",
resizeHandle: "data-resize-handle",
resizeHandleActive: "data-resize-handle-active",
resizeHandleEnabled: "data-panel-resize-handle-enabled",
resizeHandleId: "data-panel-resize-handle-id",
resizeHandleState: "data-resize-handle-state"
}, PRECISION = 10, useIsomorphicLayoutEffect$1 = useLayoutEffect, useId$2 = React.useId, wrappedUseId = typeof useId$2 == "function" ? useId$2 : () => null, counter = 0;
function useUniqueId$1(i = null) {
let a = wrappedUseId(), o = useRef(i || a || null);
return o.current === null && (o.current = "" + counter++), i ?? o.current;
}
function PanelWithForwardedRef({ children: i, className: a = "", collapsedSize: o, collapsible: s, defaultSize: c, forwardedRef: d, id: f, maxSize: g, minSize: b, onCollapse: x, onExpand: S, onResize: C, order: w, style: E, tagName: O = "div",...A }) {
let M = useContext(PanelGroupContext);
if (M === null) throw Error("Panel components must be rendered within a PanelGroup container");
let { collapsePanel: F, expandPanel: I, getPanelSize: R, getPanelStyle: V, groupId: rP, isPanelCollapsed: iP, reevaluatePanelConstraints: q, registerPanel: aP, resizePanel: oP, unregisterPanel: sP } = M, cP = useUniqueId$1(f), lP = useRef({
callbacks: {
onCollapse: x,
onExpand: S,
onResize: C
},
constraints: {
collapsedSize: o,
collapsible: s,
defaultSize: c,
maxSize: g,
minSize: b
},
id: cP,
idIsFromProps: f !== void 0,
order: w
});
useRef({ didLogMissingDefaultSizeWarning: !1 }), useIsomorphicLayoutEffect$1(() => {
let { callbacks: i, constraints: a } = lP.current, d = { ...a };
lP.current.id = cP, lP.current.idIsFromProps = f !== void 0, lP.current.order = w, i.onCollapse = x, i.onExpand = S, i.onResize = C, a.collapsedSize = o, a.collapsible = s, a.defaultSize = c, a.maxSize = g, a.minSize = b, (d.collapsedSize !== a.collapsedSize || d.collapsible !== a.collapsible || d.maxSize !== a.maxSize || d.minSize !== a.minSize) && q(lP.current, d);
}), useIsomorphicLayoutEffect$1(() => {
let i = lP.current;
return aP(i), () => {
sP(i);
};
}, [
w,
cP,
aP,
sP
]), useImperativeHandle(d, () => ({
collapse: () => {
F(lP.current);
},
expand: (i) => {
I(lP.current, i);
},
getId() {
return cP;
},
getSize() {
return R(lP.current);
},
isCollapsed() {
return iP(lP.current);
},
isExpanded() {
return !iP(lP.current);
},
resize: (i) => {
oP(lP.current, i);
}
}), [
F,
I,
R,
iP,
cP,
oP
]);
let uP = V(lP.current, c);
return createElement(O, {
...A,
children: i,
className: a,
id: cP,
style: {
...uP,
...E
},
[DATA_ATTRIBUTES.groupId]: rP,
[DATA_ATTRIBUTES.panel]: "",
[DATA_ATTRIBUTES.panelCollapsible]: s || void 0,
[DATA_ATTRIBUTES.panelId]: cP,
[DATA_ATTRIBUTES.panelSize]: parseFloat("" + uP.flexGrow).toFixed(1)
});
}
var Panel = forwardRef((i, a) => createElement(PanelWithForwardedRef, {
...i,
forwardedRef: a
}));
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(i, a, o) {
let s = (a & EXCEEDED_HORIZONTAL_MIN) !== 0, c = (a & EXCEEDED_HORIZONTAL_MAX) !== 0, d = (a & EXCEEDED_VERTICAL_MIN) !== 0, f = (a & EXCEEDED_VERTICAL_MAX) !== 0;
if (getCustomCursorStyleFunction) return getCustomCursorStyleFunction({
exceedsHorizontalMaximum: c,
exceedsHorizontalMinimum: s,
exceedsVerticalMaximum: f,
exceedsVerticalMinimum: d,
intersectsHorizontalDragHandle: i === "horizontal" || i === "intersection",
intersectsVerticalDragHandle: i === "vertical" || i === "intersection",
isPointerDown: o
});
if (a) {
if (s) return d ? "se-resize" : f ? "ne-resize" : "e-resize";
if (c) return d ? "sw-resize" : f ? "nw-resize" : "w-resize";
if (d) return "s-resize";
if (f) return "n-resize";
}
switch (i) {
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(i, a, o) {
if (!enabled) return;
let s = getCursorStyle(i, a, o);
if (currentCursorStyle !== s) {
if (currentCursorStyle = s, styleElement === null) {
styleElement = document.createElement("style");
let i = getNonce();
i && styleElement.setAttribute("nonce", i), document.head.appendChild(styleElement);
}
if (prevRuleIndex >= 0) {
var c;
(c = styleElement.sheet) == null || c.removeRule(prevRuleIndex);
}
prevRuleIndex = styleElement.sheet?.insertRule(`*{cursor: ${s} !important;}`) ?? -1;
}
}
function isKeyDown(i) {
return i.type === "keydown";
}
function isPointerEvent(i) {
return i.type.startsWith("pointer");
}
function isMouseEvent(i) {
return i.type.startsWith("mouse");
}
function getResizeEventCoordinates(i) {
if (isPointerEvent(i)) {
if (i.isPrimary) return {
x: i.clientX,
y: i.clientY
};
} else if (isMouseEvent(i)) return {
x: i.clientX,
y: i.clientY
};
return {
x: Infinity,
y: Infinity
};
}
function getInputType() {
if (typeof matchMedia == "function") return matchMedia("(pointer:coarse)").matches ? "coarse" : "fine";
}
function intersects(i, a, o) {
return o ? i.x < a.x + a.width && i.x + i.width > a.x && i.y < a.y + a.height && i.y + i.height > a.y : i.x <= a.x + a.width && i.x + i.width >= a.x && i.y <= a.y + a.height && i.y + i.height >= a.y;
}
function compare(i, a) {
if (i === a) throw Error("Cannot compare node with itself");
let o = {
a: get_ancestors(i),
b: get_ancestors(a)
}, s;
for (; o.a.at(-1) === o.b.at(-1);) i = o.a.pop(), a = o.b.pop(), s = i;
assert(s, "Stacking order can only be calculated for elements with a common ancestor");
let c = {
a: get_z_index(find_stacking_context(o.a)),
b: get_z_index(find_stacking_context(o.b))
};
if (c.a === c.b) {
let i = s.childNodes, a = {
a: o.a.at(-1),
b: o.b.at(-1)
}, c = i.length;
for (; c--;) {
let o = i[c];
if (o === a.a) return 1;
if (o === a.b) return -1;
}
}
return Math.sign(c.a - c.b);
}
var props = /\b(?:position|zIndex|opacity|transform|webkitTransform|mixBlendMode|filter|webkitFilter|isolation)\b/;
function is_flex_item(i) {
let a = getComputedStyle(get_parent(i) ?? i).display;
return a === "flex" || a === "inline-flex";
}
function creates_stacking_context(i) {
let a = getComputedStyle(i);
return !!(a.position === "fixed" || a.zIndex !== "auto" && (a.position !== "static" || is_flex_item(i)) || +a.opacity < 1 || "transform" in a && a.transform !== "none" || "webkitTransform" in a && a.webkitTransform !== "none" || "mixBlendMode" in a && a.mixBlendMode !== "normal" || "filter" in a && a.filter !== "none" || "webkitFilter" in a && a.webkitFilter !== "none" || "isolation" in a && a.isolation === "isolate" || props.test(a.willChange) || a.webkitOverflowScrolling === "touch");
}
function find_stacking_context(i) {
let a = i.length;
for (; a--;) {
let o = i[a];
if (assert(o, "Missing node"), creates_stacking_context(o)) return o;
}
return null;
}
function get_z_index(i) {
return i && Number(getComputedStyle(i).zIndex) || 0;
}
function get_ancestors(i) {
let a = [];
for (; i;) a.push(i), i = get_parent(i);
return a;
}
function get_parent(i) {
let { parentNode: a } = i;
return a && a instanceof ShadowRoot ? a.host : a;
}
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(i, a, o, s, c) {
let { ownerDocument: d } = a, f = {
direction: o,
element: a,
hitAreaMargins: s,
setResizeHandlerState: c
}, g = ownerDocumentCounts.get(d) ?? 0;
return ownerDocumentCounts.set(d, g + 1), registeredResizeHandlers.add(f), updateListeners(), function() {
panelConstraintFlags.delete(i), registeredResizeHandlers.delete(f);
let a = ownerDocumentCounts.get(d) ?? 1;
if (ownerDocumentCounts.set(d, a - 1), updateListeners(), a === 1 && ownerDocumentCounts.delete(d), intersectingHandles.includes(f)) {
let i = intersectingHandles.indexOf(f);
i >= 0 && intersectingHandles.splice(i, 1), updateCursor(), c("up", !0, null);
}
};
}
function handlePointerDown(i) {
let { target: a } = i, { x: o, y: s } = getResizeEventCoordinates(i);
isPointerDown = !0, recalculateIntersectingHandles({
target: a,
x: o,
y: s
}), updateListeners(), intersectingHandles.length > 0 && (updateResizeHandlerStates("down", i), updateCursor(), i.preventDefault(), isWithinResizeHandle(a) || i.stopImmediatePropagation());
}
function handlePointerMove(i) {
let { x: a, y: o } = getResizeEventCoordinates(i);
if (isPointerDown && i.type !== "pointerleave" && i.buttons === 0 && (isPointerDown = !1, updateResizeHandlerStates("up", i)), !isPointerDown) {
let { target: s } = i;
recalculateIntersectingHandles({
target: s,
x: a,
y: o
});
}
updateResizeHandlerStates("move", i), updateCursor(), intersectingHandles.length > 0 && i.preventDefault();
}
function handlePointerUp(i) {
let { target: a } = i, { x: o, y: s } = getResizeEventCoordinates(i);
panelConstraintFlags.clear(), isPointerDown = !1, intersectingHandles.length > 0 && (i.preventDefault(), isWithinResizeHandle(a) || i.stopImmediatePropagation()), updateResizeHandlerStates("up", i), recalculateIntersectingHandles({
target: a,
x: o,
y: s
}), updateCursor(), updateListeners();
}
function isWithinResizeHandle(i) {
let a = i;
for (; a;) {
if (a.hasAttribute(DATA_ATTRIBUTES.resizeHandle)) return !0;
a = a.parentElement;
}
return !1;
}
function recalculateIntersectingHandles({ target: i, x: a, y: o }) {
intersectingHandles.splice(0);
let s = null;
(i instanceof HTMLElement || i instanceof SVGElement) && (s = i), registeredResizeHandlers.forEach((i) => {
let { element: c, hitAreaMargins: d } = i, f = c.getBoundingClientRect(), { bottom: g, left: b, right: x, top: S } = f, C = isCoarsePointer ? d.coarse : d.fine;
if (a >= b - C && a <= x + C && o >= S - C && o <= g + C) {
if (s !== null && document.contains(s) && c !== s && !c.contains(s) && !s.contains(c) && compare(s, c) > 0) {
let i = s, a = !1;
for (; i && !i.contains(c);) {
if (intersects(i.getBoundingClientRect(), f, !0)) {
a = !0;
break;
}
i = i.parentElement;
}
if (a) return;
}
intersectingHandles.push(i);
}
});
}
function reportConstraintsViolation(i, a) {
panelConstraintFlags.set(i, a);
}
function updateCursor() {
let i = !1, a = !1;
intersectingHandles.forEach((o) => {
let { direction: s } = o;
s === "horizontal" ? i = !0 : a = !0;
});
let o = 0;
panelConstraintFlags.forEach((i) => {
o |= i;
}), i && a ? setGlobalCursorStyle("intersection", o, isPointerDown) : i ? setGlobalCursorStyle("horizontal", o, isPointerDown) : a ? setGlobalCursorStyle("vertical", o, isPointerDown) : resetGlobalCursorStyle();
}
var listenersAbortController;
function updateListeners() {
var i;
(i = listenersAbortController) == null || i.abort(), listenersAbortController = new AbortController();
let a = {
capture: !0,
signal: listenersAbortController.signal
};
registeredResizeHandlers.size && (isPointerDown ? (intersectingHandles.length > 0 && ownerDocumentCounts.forEach((i, o) => {
let { body: s } = o;
i > 0 && (s.addEventListener("contextmenu", handlePointerUp, a), s.addEventListener("pointerleave", handlePointerMove, a), s.addEventListener("pointermove", handlePointerMove, a));
}), ownerDocumentCounts.forEach((i, o) => {
let { body: s } = o;
s.addEventListener("pointerup", handlePointerUp, a), s.addEventListener("pointercancel", handlePointerUp, a);
})) : ownerDocumentCounts.forEach((i, o) => {
let { body: s } = o;
i > 0 && (s.addEventListener("pointerdown", handlePointerDown, a), s.addEventListener("pointermove", handlePointerMove, a));
}));
}
function updateResizeHandlerStates(i, a) {
registeredResizeHandlers.forEach((o) => {
let { setResizeHandlerState: s } = o, c = intersectingHandles.includes(o);
s(i, c, a);
});
}
function useForceUpdate() {
let [i, a] = useState(0);
return useCallback(() => a((i) => i + 1), []);
}
function assert(i, a) {
if (!i) throw console.error(a), Error(a);
}
function fuzzyCompareNumbers(i, a, o = PRECISION) {
return i.toFixed(o) === a.toFixed(o) ? 0 : i > a ? 1 : -1;
}
function fuzzyNumbersEqual$1(i, a, o = PRECISION) {
return fuzzyCompareNumbers(i, a, o) === 0;
}
function fuzzyNumbersEqual(i, a, o) {
return fuzzyCompareNumbers(i, a, o) === 0;
}
function fuzzyLayoutsEqual(i, a, o) {
if (i.length !== a.length) return !1;
for (let s = 0; s < i.length; s++) {
let c = i[s], d = a[s];
if (!fuzzyNumbersEqual(c, d, o)) return !1;
}
return !0;
}
function resizePanel({ panelConstraints: i, panelIndex: a, size: o }) {
let s = i[a];
assert(s != null, `Panel constraints not found for index ${a}`);
let { collapsedSize: c = 0, collapsible: d, maxSize: f = 100, minSize: g = 0 } = s;
if (fuzzyCompareNumbers(o, g) < 0) if (d) {
let i = (c + g) / 2;
o = fuzzyCompareNumbers(o, i) < 0 ? c : g;
} else o = g;
return o = Math.min(f, o), o = parseFloat(o.toFixed(PRECISION)), o;
}
function adjustLayoutByDelta({ delta: i, initialLayout: a, panelConstraints: o, pivotIndices: s, prevLayout: c, trigger: d }) {
if (fuzzyNumbersEqual(i, 0)) return a;
let f = [...a], [g, b] = s;
assert(g != null, "Invalid first pivot index"), assert(b != null, "Invalid second pivot index");
let x = 0;
if (d === "keyboard") {
{
let s = i < 0 ? b : g, c = o[s];
assert(c, `Panel constraints not found for index ${s}`);
let { collapsedSize: d = 0, collapsible: f, minSize: x = 0 } = c;
if (f) {
let o = a[s];
if (assert(o != null, `Previous layout not found for panel index ${s}`), fuzzyNumbersEqual(o, d)) {
let a = x - o;
fuzzyCompareNumbers(a, Math.abs(i)) > 0 && (i = i < 0 ? 0 - a : a);
}
}
}
{
let s = i < 0 ? g : b, c = o[s];
assert(c, `No panel constraints found for index ${s}`);
let { collapsedSize: d = 0, collapsible: f, minSize: x = 0 } = c;
if (f) {
let o = a[s];
if (assert(o != null, `Previous layout not found for panel index ${s}`), fuzzyNumbersEqual(o, x)) {
let a = o - d;
fuzzyCompareNumbers(a, Math.abs(i)) > 0 && (i = i < 0 ? 0 - a : a);
}
}
}
}
{
let s = i < 0 ? 1 : -1, c = i < 0 ? b : g, d = 0;
for (;;) {
let i = a[c];
assert(i != null, `Previous layout not found for panel index ${c}`);
let f = resizePanel({
panelConstraints: o,
panelIndex: c,
size: 100
}) - i;
if (d += f, c += s, c < 0 || c >= o.length) break;
}
let f = Math.min(Math.abs(i), Math.abs(d));
i = i < 0 ? 0 - f : f;
}
{
let s = i < 0 ? g : b;
for (; s >= 0 && s < o.length;) {
let c = Math.abs(i) - Math.abs(x), d = a[s];
assert(d != null, `Previous layout not found for panel index ${s}`);
let g = d - c, b = resizePanel({
panelConstraints: o,
panelIndex: s,
size: g
});
if (!fuzzyNumbersEqual(d, b) && (x += d - b, f[s] = b, x.toFixed(3).localeCompare(Math.abs(i).toFixed(3), void 0, { numeric: !0 }) >= 0)) break;
i < 0 ? s-- : s++;
}
}
if (fuzzyLayoutsEqual(c, f)) return c;
{
let s = i < 0 ? b : g, c = a[s];
assert(c != null, `Previous layout not found for panel index ${s}`);
let d = c + x, S = resizePanel({
panelConstraints: o,
panelIndex: s,
size: d
});
if (f[s] = S, !fuzzyNumbersEqual(S, d)) {
let a = d - S, s = i < 0 ? b : g;
for (; s >= 0 && s < o.length;) {
let c = f[s];
assert(c != null, `Previous layout not found for panel index ${s}`);
let d = c + a, g = resizePanel({
panelConstraints: o,
panelIndex: s,
size: d
});
if (fuzzyNumbersEqual(c, g) || (a -= g - c, f[s] = g), fuzzyNumbersEqual(a, 0)) break;
i > 0 ? s-- : s++;
}
}
}
let S = f.reduce((i, a) => a + i, 0);
return fuzzyNumbersEqual(S, 100) ? f : c;
}
function calculateAriaValues({ layout: i, panelsArray: a, pivotIndices: o }) {
let s = 0, c = 100, d = 0, f = 0, g = o[0];
assert(g != null, "No pivot index found"), a.forEach((i, a) => {
let { constraints: o } = i, { maxSize: b = 100, minSize: x = 0 } = o;
a === g ? (s = x, c = b) : (d += x, f += b);
});
let b = Math.min(c, 100 - d), x = Math.max(s, 100 - f), S = i[g];
return {
valueMax: b,
valueMin: x,
valueNow: S
};
}
function getResizeHandleElementsForGroup(i, a = document) {
return Array.from(a.querySelectorAll(`[${DATA_ATTRIBUTES.resizeHandleId}][data-panel-group-id="${i}"]`));
}
function getResizeHandleElementIndex(i, a, o = document) {
return getResizeHandleElementsForGroup(i, o).findIndex((i) => i.getAttribute(DATA_ATTRIBUTES.resizeHandleId) === a) ?? null;
}
function determinePivotIndices(i, a, o) {
let s = getResizeHandleElementIndex(i, a, o);
return s == null ? [-1, -1] : [s, s + 1];
}
function isHTMLElement$1(i) {
return i instanceof HTMLElement ? !0 : typeof i == "object" && !!i && "tagName" in i && "getAttribute" in i;
}
function getPanelGroupElement(i, a = document) {
return isHTMLElement$1(a) && a.dataset.panelGroupId == i ? a : a.querySelector(`[data-panel-group][data-panel-group-id="${i}"]`) || null;
}
function getResizeHandleElement(i, a = document) {
return a.querySelector(`[${DATA_ATTRIBUTES.resizeHandleId}="${i}"]`) || null;
}
function getResizeHandlePanelIds(i, a, o, s = document) {
let c = getResizeHandleElement(a, s), d = getResizeHandleElementsForGroup(i, s), f = c ? d.indexOf(c) : -1, g = o[f]?.id ?? null, b = o[f + 1]?.id ?? null;
return [g, b];
}
function useWindowSplitterPanelGroupBehavior({ committedValuesRef: i, eagerValuesRef: a, groupId: o, layout: s, panelDataArray: c, panelGroupElement: d, setLayout: f }) {
useRef({ didWarnAboutMissingResizeHandle: !1 }), useIsomorphicLayoutEffect$1(() => {
if (!d) return;
let i = getResizeHandleElementsForGroup(o, d);
for (let a = 0; a < c.length - 1; a++) {
let { valueMax: o, valueMin: d, valueNow: f } = calculateAriaValues({
layout: s,
panelsArray: c,
pivotIndices: [a, a + 1]
}), g = i[a];
if (g != null) {
let i = c[a];
assert(i, `No panel data found for index "${a}"`), g.setAttribute("aria-controls", i.id), g.setAttribute("aria-valuemax", "" + Math.round(o)), g.setAttribute("aria-valuemin", "" + Math.round(d)), g.setAttribute("aria-valuenow", f == null ? "" : "" + Math.round(f));
}
}
return () => {
i.forEach((i, a) => {
i.removeAttribute("aria-controls"), i.removeAttribute("aria-valuemax"), i.removeAttribute("aria-valuemin"), i.removeAttribute("aria-valuenow");
});
};
}, [
o,
s,
c,
d
]), useEffect(() => {
if (!d) return;
let i = a.current;
assert(i, "Eager values not found");
let { panelDataArray: c } = i, g = getPanelGroupElement(o, d);
assert(g != null, `No group found for id "${o}"`);
let b = getResizeHandleElementsForGroup(o, d);
assert(b, `No resize handles found for group id "${o}"`);
let x = b.map((i) => {
let a = i.getAttribute(DATA_ATTRIBUTES.resizeHandleId);
assert(a, "Resize handle element has no handle id attribute");
let [g, b] = getResizeHandlePanelIds(o, a, c, d);
if (g == null || b == null) return () => {};
let x = (i) => {
if (!i.defaultPrevented) switch (i.key) {
case "Enter": {
i.preventDefault();
let b = c.findIndex((i) => i.id === g);
if (b >= 0) {
let i = c[b];
assert(i, `No panel data found for index ${b}`);
let g = s[b], { collapsedSize: x = 0, collapsible: S, minSize: C = 0 } = i.constraints;
if (g != null && S) {
let i = adjustLayoutByDelta({
delta: fuzzyNumbersEqual(g, x) ? C - x : x - g,
initialLayout: s,
panelConstraints: c.map((i) => i.constraints),
pivotIndices: determinePivotIndices(o, a, d),
prevLayout: s,
trigger: "keyboard"
});
s !== i && f(i);
}
}
break;
}
}
};
return i.addEventListener("keydown", x), () => {
i.removeEventListener("keydown", x);
};
});
return () => {
x.forEach((i) => i());
};
}, [
d,
i,
a,
o,
s,
c,
f
]);
}
function areEqual(i, a) {
if (i.length !== a.length) return !1;
for (let o = 0; o < i.length; o++) if (i[o] !== a[o]) return !1;
return !0;
}
function getResizeEventCursorPosition(i, a) {
let o = i === "horizontal", { x: s, y: c } = getResizeEventCoordinates(a);
return o ? s : c;
}
function calculateDragOffsetPercentage(i, a, o, s, c) {
let d = o === "horizontal", f = getResizeHandleElement(a, c);
assert(f, `No resize handle element found for id "${a}"`);
let g = f.getAttribute(DATA_ATTRIBUTES.groupId);
assert(g, "Resize handle element has no group id attribute");
let { initialCursorPosition: b } = s, x = getResizeEventCursorPosition(o, i), S = getPanelGroupElement(g, c);
assert(S, `No group element found for id "${g}"`);
let C = S.getBoundingClientRect(), w = d ? C.width : C.height;
return (x - b) / w * 100;
}
function calculateDeltaPercentage(i, a, o, s, c, d) {
if (isKeyDown(i)) {
let a = o === "horizontal", s = 0;
s = i.shiftKey ? 100 : c ?? 10;
let d = 0;
switch (i.key) {
case "ArrowDown":
d = a ? 0 : s;
break;
case "ArrowLeft":
d = a ? -s : 0;
break;
case "ArrowRight":
d = a ? s : 0;
break;
case "ArrowUp":
d = a ? 0 : -s;
break;
case "End":
d = 100;
break;
case "Home":
d = -100;
break;
}
return d;
} else return s == null ? 0 : calculateDragOffsetPercentage(i, a, o, s, d);
}
function calculateUnsafeDefaultLayout({ panelDataArray: i }) {
let a = Array(i.length), o = i.map((i) => i.constraints), s = 0, c = 100;
for (let d = 0; d < i.length; d++) {
let i = o[d];
assert(i, `Panel constraints not found for index ${d}`);
let { defaultSize: f } = i;
f != null && (s++, a[d] = f, c -= f);
}
for (let d = 0; d < i.length; d++) {
let f = o[d];
assert(f, `Panel constraints not found for index ${d}`);
let { defaultSize: g } = f;
if (g != null) continue;
let b = i.length - s, x = c / b;
s++, a[d] = x, c -= x;
}
return a;
}
function callPanelCallbacks(i, a, o) {
a.forEach((a, s) => {
let c = i[s];
assert(c, `Panel data not found for index ${s}`);
let { callbacks: d, constraints: f, id: g } = c, { collapsedSize: b = 0, collapsible: x } = f, S = o[g];
if (S == null || a !== S) {
o[g] = a;
let { onCollapse: i, onExpand: s, onResize: c } = d;
c && c(a, S), x && (i || s) && (s && (S == null || fuzzyNumbersEqual$1(S, b)) && !fuzzyNumbersEqual$1(a, b) && s(), i && (S == null || !fuzzyNumbersEqual$1(S, b)) && fuzzyNumbersEqual$1(a, b) && i());
}
});
}
function compareLayouts(i, a) {
if (i.length !== a.length) return !1;
for (let o = 0; o < i.length; o++) if (i[o] != a[o]) return !1;
return !0;
}
function computePanelFlexBoxStyle({ defaultSize: i, dragState: a, layout: o, panelData: s, panelIndex: c, precision: d = 3 }) {
let f = o[c], g;
return g = f == null ? i == null ? "1" : i.toFixed(d) : s.length === 1 ? "1" : f.toFixed(d), {
flexBasis: 0,
flexGrow: g,
flexShrink: 1,
overflow: "hidden",
pointerEvents: a === null ? void 0 : "none"
};
}
function debounce(i, a = 10) {
let o = null;
return (...s) => {
o !== null && clearTimeout(o), o = setTimeout(() => {
i(...s);
}, a);
};
}
function initializeDefaultStorage(i) {
try {
if (typeof localStorage < "u") i.getItem = (i) => localStorage.getItem(i), i.setItem = (i, a) => {
localStorage.setItem(i, a);
};
else throw Error("localStorage not supported in this environment");
} catch (a) {
console.error(a), i.getItem = () => null, i.setItem = () => {};
}
}
function getPanelGroupKey(i) {
return `react-resizable-panels:${i}`;
}
function getPanelKey(i) {
return i.map((i) => {
let { constraints: a, id: o, idIsFromProps: s, order: c } = i;
return s ? o : c ? `${c}:${JSON.stringify(a)}` : JSON.stringify(a);
}).sort((i, a) => i.localeCompare(a)).join(",");
}
function loadSerializedPanelGroupState(i, a) {
try {
let o = getPanelGroupKey(i), s = a.getItem(o);
if (s) {
let i = JSON.parse(s);
if (typeof i == "object" && i) return i;
}
} catch {}
return null;
}
function loadPanelGroupState(i, a, o) {
let s = loadSerializedPanelGroupState(i, o) ?? {}, c = getPanelKey(a);
return s[c] ?? null;
}
function savePanelGroupState(i, a, o, s, c) {
let d = getPanelGroupKey(i), f = getPanelKey(a), g = loadSerializedPanelGroupState(i, c) ?? {};
g[f] = {
expandToSizes: Object.fromEntries(o.entries()),
layout: s
};
try {
c.setItem(d, JSON.stringify(g));
} catch (i) {
console.error(i);
}
}
function validatePanelGroupLayout({ layout: i, panelConstraints: a }) {
let o = [...i], s = o.reduce((i, a) => i + a, 0);
if (o.length !== a.length) throw Error(`Invalid ${a.length} panel layout: ${o.map((i) => `${i}%`).join(", ")}`);
if (!fuzzyNumbersEqual(s, 100) && o.length > 0) for (let i = 0; i < a.length; i++) {
let a = o[i];
assert(a != null, `No layout data found for index ${i}`), o[i] = 100 / s * a;
}
let c = 0;
for (let i = 0; i < a.length; i++) {
let s = o[i];
assert(s != null, `No layout data found for index ${i}`);
let d = resizePanel({
panelConstraints: a,
panelIndex: i,
size: s
});
s != d && (c += s - d, o[i] = d);
}
if (!fuzzyNumbersEqual(c, 0)) for (let i = 0; i < a.length; i++) {
let s = o[i];
assert(s != null, `No layout data found for index ${i}`);
let d = s + c, f = resizePanel({
panelConstraints: a,
panelIndex: i,
size: d
});
if (s !== f && (c -= f - s, o[i] = f, fuzzyNumbersEqual(c, 0))) break;
}
return o;
}
var LOCAL_STORAGE_DEBOUNCE_INTERVAL = 100, defaultStorage = {
getItem: (i) => (initializeDefaultStorage(defaultStorage), defaultStorage.getItem(i)),
setItem: (i, a) => {
initializeDefaultStorage(defaultStorage), defaultStorage.setItem(i, a);
}
}, debounceMap = {};
function PanelGroupWithForwardedRef({ autoSaveId: i = null, children: a, className: o = "", direction: s, forwardedRef: c, id: d = null, onLayout: f = null, keyboardResizeBy: g = null, storage: b = defaultStorage, style: x, tagName: S = "div",...C }) {
let w = useUniqueId$1(d), E = useRef(null), [O, A] = useState(null), [M, F] = useState([]), I = useForceUpdate(), R = useRef({}), V = useRef(/* @__PURE__ */ new Map()), rP = useRef(0), iP = useRef({
autoSaveId: i,
direction: s,
dragState: O,
id: w,
keyboardResizeBy: g,
onLayout: f,
storage: b
}), q = useRef({
layout: M,
panelDataArray: [],
panelDataArrayChanged: !1
});
useRef({
didLogIdAndOrderWarning: !1,
didLogPanelConstraintsWarning: !1,
prevPanelIds: []
}), useImperativeHandle(c, () => ({
getId: () => iP.current.id,
getLayout: () => {
let { layout: i } = q.current;
return i;
},
setLayout: (i) => {
let { onLayout: a } = iP.current, { layout: o, panelDataArray: s } = q.current, c = validatePanelGroupLayout({
layout: i,
panelConstraints: s.map((i) => i.constraints)
});
areEqual(o, c) || (F(c), q.current.layout = c, a && a(c), callPanelCallbacks(s, c, R.current));
}
}), []), useIsomorphicLayoutEffect$1(() => {
iP.current.autoSaveId = i, iP.current.direction = s, iP.current.dragState = O, iP.current.id = w, iP.current.onLayout = f, iP.current.storage = b;
}), useWindowSplitterPanelGroupBehavior({
committedValuesRef: iP,
eagerValuesRef: q,
groupId: w,
layout: M,
panelDataArray: q.current.panelDataArray,
setLayout: F,
panelGroupElement: E.current
}), useEffect(() => {
let { panelDataArray: a } = q.current;
if (i) {
if (M.length === 0 || M.length !== a.length) return;
let o = debounceMap[i];
o ?? (o = debounce(savePanelGroupState, LOCAL_STORAGE_DEBOUNCE_INTERVAL), debounceMap[i] = o);
let s = [...a], c = new Map(V.current);
o(i, s, c, M, b);
}
}, [
i,
M,
b
]), useEffect(() => {});
let aP = useCallback((i) => {
let { onLayout: a } = iP.current, { layout: o, panelDataArray: s } = q.current;
if (i.constraints.collapsible) {
let c = s.map((i) => i.constraints), { collapsedSize: d = 0, panelSize: f, pivotIndices: g } = panelDataHelper(s, i, o);
if (assert(f != null, `Panel size not found for panel "${i.id}"`), !fuzzyNumbersEqual$1(f, d)) {
V.current.set(i.id, f);
let b = findPanelDataIndex(s, i) === s.length - 1 ? f - d : d - f, x = adjustLayoutByDelta({
delta: b,
initialLayout: o,
panelConstraints: c,
pivotIndices: g,
prevLayout: o,
trigger: "imperative-api"
});
compareLayouts(o, x) || (F(x), q.current.layout = x, a && a(x), callPanelCallbacks(s, x, R.current));
}
}
}, []), oP = useCallback((i, a) => {
let { onLayout: o } = iP.current, { layout: s, panelDataArray: c } = q.current;
if (i.constraints.collapsible) {
let d = c.map((i) => i.constraints), { collapsedSize: f = 0, panelSize: g = 0, minSize: b = 0, pivotIndices: x } = panelDataHelper(c, i, s), S = a ?? b;
if (fuzzyNumbersEqual$1(g, f)) {
let a = V.current.get(i.id), f = a != null && a >= S ? a : S, b = findPanelDataIndex(c, i) === c.length - 1 ? g - f : f - g, C = adjustLayoutByDelta({
delta: b,
initialLayout: s,
panelConstraints: d,
pivotIndices: x,
prevLayout: s,
trigger: "imperative-api"
});
compareLayouts(s, C) || (F(C), q.current.layout = C, o && o(C), callPanelCallbacks(c, C, R.current));
}
}
}, []), sP = useCallback((i) => {
let { layout: a, panelDataArray: o } = q.current, { panelSize: s } = panelDataHelper(o, i, a);
return assert(s != null, `Panel size not found for panel "${i.id}"`), s;
}, []), cP = useCallback((i, a) => {
let { panelDataArray: o } = q.current, s = findPanelDataIndex(o, i);
return computePanelFlexBoxStyle({
defaultSize: a,
dragState: O,
layout: M,
panelData: o,
panelIndex: s
});
}, [O, M]), lP = useCallback((i) => {
let { layout: a, panelDataArray: o } = q.current, { collapsedSize: s = 0, collapsible: c, panelSize: d } = panelDataHelper(o, i, a);
return assert(d != null, `Panel size not found for panel "${i.id}"`), c === !0 && fuzzyNumbersEqual$1(d, s);
}, []), uP = useCallback((i) => {
let { layout: a, panelDataArray: o } = q.current, { collapsedSize: s = 0, collapsible: c, panelSize: d } = panelDataHelper(o, i, a);
return assert(d != null, `Panel size not found for panel "${i.id}"`), !c || fuzzyCompareNumbers(d, s) > 0;
}, []), dP = useCallback((i) => {
let { panelDataArray: a } = q.current;
a.push(i), a.sort((i, a) => {
let o = i.order, s = a.order;
return o == null && s == null ? 0 : o == null ? -1 : s == null ? 1 : o - s;
}), q.current.panelDataArrayChanged = !0, I();
}, [I]);
useIsomorphicLayoutEffect$1(() => {
if (q.current.panelDataArrayChanged) {
q.current.panelDataArrayChanged = !1;
let { autoSaveId: i, onLayout: a, storage: o } = iP.current, { layout: s, panelDataArray: c } = q.current, d = null;
if (i) {
let a = loadPanelGroupState(i, c, o);
a && (V.current = new Map(Object.entries(a.expandToSizes)), d = a.layout);
}
d ??= calculateUnsafeDefaultLayout({ panelDataArray: c });
let f = validatePanelGroupLayout({
layout: d,
panelConstraints: c.map((i) => i.constraints)
});
areEqual(s, f) || (F(f), q.current.layout = f, a && a(f), callPanelCallbacks(c, f, R.current));
}
}), useIsomorphicLayoutEffect$1(() => {
let i = q.current;
return () => {
i.layout = [];
};
}, []);
let fP = useCallback((i) => {
let a = !1, o = E.current;
return o && window.getComputedStyle(o, null).getPropertyValue("direction") === "rtl" && (a = !0), function(o) {
o.preventDefault();
let s = E.current;
if (!s) return () => null;
let { direction: c, dragState: d, id: f, keyboardResizeBy: g, onLayout: b } = iP.current, { layout: x, panelDataArray: S } = q.current, { initialLayout: C } = d ?? {}, w = determinePivotIndices(f, i, s), O = calculateDeltaPercentage(o, i, c, d, g, s), A = c === "horizontal";
A && a && (O = -O);
let M = S.map((i) => i.constraints), I = adjustLayoutByDelta({
delta: O,
initialLayout: C ?? x,
panelConstraints: M,
pivotIndices: w,
prevLayout: x,
trigger: isKeyDown(o) ? "keyboard" : "mouse-or-touch"
}), V = !compareLayouts(x, I);
(isPointerEvent(o) || isMouseEvent(o)) && rP.current != O && (rP.current = O, !V && O !== 0 ? A ? reportConstraintsViolation(i, O < 0 ? EXCEEDED_HORIZONTAL_MIN : EXCEEDED_HORIZONTAL_MAX) : reportConstraintsViolation(i, O < 0 ? EXCEEDED_VERTICAL_MIN : EXCEEDED_VERTICAL_MAX) : reportConstraintsViolation(i, 0)), V && (F(I), q.current.layout = I, b && b(I), callPanelCallbacks(S, I, R.current));
};
}, []), pP = useCallback((i, a) => {
let { onLayout: o } = iP.current, { layout: s, panelDataArray: c } = q.current, d = c.map((i) => i.constraints), { panelSize: f, pivotIndices: g } = panelDataHelper(c, i, s);
assert(f != null, `Panel size not found for panel "${i.id}"`);
let b = findPanelDataIndex(c, i) === c.length - 1 ? f - a : a - f, x = adjustLayoutByDelta({
delta: b,
initialLayout: s,
panelConstraints: d,
pivotIndices: g,
prevLayout: s,
trigger: "imperative-api"
});
compareLayouts(s, x) || (F(x), q.current.layout = x, o && o(x), callPanelCallbacks(c, x, R.current));
}, []), mP = useCallback((i, a) => {
let { layout: o, panelDataArray: s } = q.current, { collapsedSize: c = 0, collapsible: d } = a, { collapsedSize: f = 0, collapsible: g, maxSize: b = 100, minSize: x = 0 } = i.constraints, { panelSize: S } = panelDataHelper(s, i, o);
S != null && (d && g && fuzzyNumbersEqual$1(S, c) ? fuzzyNumbersEqual$1(c, f) || pP(i, f) : S < x ? pP(i, x) : S > b && pP(i, b));
}, [pP]), hP = useCallback((i, a) => {
let { direction: o } = iP.current, { layout: s } = q.current;
if (!E.current) return;
let c = getResizeHandleElement(i, E.current);
assert(c, `Drag handle element not found for id "${i}"`);
let d = getResizeEventCursorPosition(o, a);
A({
dragHandleId: i,
dragHandleRect: c.getBoundingClientRect(),
initialCursorPosition: d,
initialLayout: s
});
}, []), gP = useCallback(() => {
A(null);
}, []), _P = useCallback((i) => {
let { panelDataArray: a } = q.current, o = findPanelDataIndex(a, i);
o >= 0 && (a.splice(o, 1), delete R.current[i.id], q.current.panelDataArrayChanged = !0, I());
}, [I]), vP = useMemo(() => ({
collapsePanel: aP,
direction: s,
dragState: O,
expandPanel: oP,
getPanelSize: sP,
getPanelStyle: cP,
groupId: w,
isPanelCollapsed: lP,
isPanelExpanded: uP,
reevaluatePanelConstraints: mP,
registerPanel: dP,
registerResizeHandle: fP,
resizePanel: pP,
startDragging: hP,
stopDragging: gP,
unregisterPanel: _P,
panelGroupElement: E.current
}), [
aP,
O,
s,
oP,
sP,
cP,
w,
lP,
uP,
mP,
dP,
fP,
pP,
hP,
gP,
_P
]), yP = {
display: "flex",
flexDirection: s === "horizontal" ? "row" : "column",
height: "100%",
overflow: "hidden",
width: "100%"
};
return createElement(PanelGroupContext.Provider, { value: vP }, createElement(S, {
...C,
children: a,
className: o,
id: d,
ref: E,
style: {
...yP,
...x
},
[DATA_ATTRIBUTES.group]: "",
[DATA_ATTRIBUTES.groupDirection]: s,
[DATA_ATTRIBUTES.groupId]: w
}));
}
var PanelGroup = forwardRef((i, a) => createElement(PanelGroupWithForwardedRef, {
...i,
forwardedRef: a
}));
PanelGroupWithForwardedRef.displayName = "PanelGroup", PanelGroup.displayName = "forwardRef(PanelGroup)";
function findPanelDataIndex(i, a) {
return i.findIndex((i) => i === a || i.id === a.id);
}
function panelDataHelper(i, a, o) {
let s = findPanelDataIndex(i, a), c = s === i.length - 1 ? [s - 1, s] : [s, s + 1], d = o[s];
return {
...a.constraints,
panelSize: d,
pivotIndices: c
};
}
function useWindowSplitterResizeHandlerBehavior({ disabled: i, handleId: a, resizeHandler: o, panelGroupElement: s }) {
useEffect(() => {
if (i || o == null || s == null) return;
let c = getResizeHandleElement(a, s);
if (c == null) return;
let d = (i) => {
if (!i.defaultPrevented) switch (i.key) {
case "ArrowDown":
case "ArrowLeft":
case "ArrowRight":
case "ArrowUp":
case "End":
case "Home":
i.preventDefault(), o(i);
break;
case "F6": {
i.preventDefault();
let o = c.getAttribute(DATA_ATTRIBUTES.groupId);
assert(o, `No group element found for id "${o}"`);
let d = getResizeHandleElementsForGroup(o, s), f = getResizeHandleElementIndex(o, a, s);
assert(f !== null, `No resize element found for id "${a}"`);
let g = i.shiftKey ? f > 0 ? f - 1 : d.length - 1 : f + 1 < d.length ? f + 1 : 0;
d[g].focus();
break;
}
}
};
return c.addEventListener("keydown", d), () => {
c.removeEventListener("keydown", d);
};
}, [
s,
i,
a,
o
]);
}
function PanelResizeHandle({ children: i = null, className: a = "", disabled: o = !1, hitAreaMargins: s, id: c, onBlur: d, onClick: f, onDragging: g, onFocus: b, onPointerDown: x, onPointerUp: S, style: C = {}, tabIndex: w = 0, tagName: E = "div",...O }) {
let A = useRef(null), M = useRef({
onClick: f,
onDragging: g,
onPointerDown: x,
onPointerUp: S
});
useEffect(() => {
M.current.onClick = f, M.current.onDragging = g, M.current.onPointerDown = x, M.current.onPointerUp = S;
});
let F = useContext(PanelGroupContext);
if (F === null) throw Error("PanelResizeHandle components must be rendered within a PanelGroup container");
let { direction: I, groupId: R, registerResizeHandle: V, startDragging: rP, stopDragging: iP, panelGroupElement: q } = F, aP = useUniqueId$1(c), [oP, sP] = useState("inactive"), [cP, lP] = useState(!1), [uP, dP] = useState(null), fP = useRef({ state: oP });
useIsomorphicLayoutEffect$1(() => {
fP.current.state = oP;
}), useEffect(() => {
if (o) dP(null);
else {
let i = V(aP);
dP(() => i);
}
}, [
o,
aP,
V
]);
let pP = s?.coarse ?? 15, mP = s?.fine ?? 5;
useEffect(() => {
if (o || uP == null) return;
let i = A.current;
assert(i, "Element ref not attached");
let a = !1;
return registerResizeHandle(aP, i, I, {
coarse: pP,
fine: mP
}, (i, o, s) => {
if (!o) {
sP("inactive");
return;
}
switch (i) {
case "down": {
sP("drag"), a = !1, assert(s, "Expected event to be defined for \"down\" action"), rP(aP, s);
let { onDragging: i, onPointerDown: o } = M.current;
i?.(!0), o?.();
break;
}
case "move": {
let { state: i } = fP.current;
a = !0, i !== "drag" && sP("hover"), assert(s, "Expected event to be defined for \"move\" action"), uP(s);
break;
}
case "up": {
sP("hover"), iP();
let { onClick: i, onDragging: o, onPointerUp: s } = M.current;
o?.(!1), s?.(), a || i?.();
break;
}
}
});
}, [
pP,
I,
o,
mP,
V,
aP,
uP,
rP,
iP
]), useWindowSplitterResizeHandlerBehavior({
disabled: o,
handleId: aP,
resizeHandler: uP,
panelGroupElement: q
});
let hP = {
touchAction: "none",
userSelect: "none"
};
return createElement(E, {
...O,
children: i,
className: a,
id: c,
onBlur: () => {
lP(!1), d?.();
},
onFocus: () => {
lP(!0), b?.();
},
ref: A,
role: "separator",
style: {
...hP,
...C
},
tabIndex: w,
[DATA_ATTRIBUTES.groupDirection]: I,
[DATA_ATTRIBUTES.groupId]: R,
[DATA_ATTRIBUTES.resizeHandle]: "",
[DATA_ATTRIBUTES.resizeHandleActive]: oP === "drag" ? "pointer" : cP ? "keyboard" : void 0,
[DATA_ATTRIBUTES.resizeHandleEnabled]: !o,
[DATA_ATTRIBUTES.resizeHandleId]: aP,
[DATA_ATTRIBUTES.resizeHandleState]: oP
});
}
PanelResizeHandle.displayName = "PanelResizeHandle";
function ResizablePanelGroup({ className: i,...a }) {
return /* @__PURE__ */ jsx(PanelGroup, {
"data-slot": "resizable-panel-group",
className: cn("flex size-full data-[panel-group-direction=vertical]:flex-col", i),
...a
});
}
function ResizablePanel({ ...i }) {
return /* @__PURE__ */ jsx(Panel, {
"data-slot": "resizable-panel",
...i
});
}
function ResizableHandle({ withHandle: i, className: a,...o }) {
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", a),
...o,
children: i && /* @__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 = ({ ...i }) => /* @__PURE__ */ jsx(Toaster$1, {
theme: i.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)"
},
...i
}), VISUALLY_HIDDEN_STYLES = Object.freeze({
position: "absolute",
border: 0,
width: 1,
height: 1,
padding: 0,
margin: -1,
overflow: "hidden",
clip: "rect(0, 0, 0, 0)",
whiteSpace: "nowrap",
wordWrap: "normal"
}), NAME$1 = "VisuallyHidden", VisuallyHidden = React.forwardRef((i, a) => /* @__PURE__ */ jsx(Primitive.span, {
...i,
ref: a,
style: {
...VISUALLY_HIDDEN_STYLES,
...i.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 = (i) => {
let { __scopeTooltip: a, delayDuration: o = DEFAULT_DELAY_DURATION, skipDelayDuration: s = 300, disableHoverableContent: c = !1, children: d } = i, f = React.useRef(!0), g = React.useRef(!1), b = React.useRef(0);
return React.useEffect(() => {
let i = b.current;
return () => window.clearTimeout(i);
}, []), /* @__PURE__ */ jsx(TooltipProviderContextProvider, {
scope: a,
isOpenDelayedRef: f,
delayDuration: o,
onOpen: React.useCallback(() => {
window.clearTimeout(b.current), f.current = !1;
}, []),
onClose: React.useCallback(() => {
window.clearTimeout(b.current), b.current = window.setTimeout(() => f.current = !0, s);
}, [s]),
isPointerInTransitRef: g,
onPointerInTransitChange: React.useCallback((i) => {
g.current = i;
}, []),
disableHoverableContent: c,
children: d
});
};
TooltipProvider$1.displayName = PROVIDER_NAME;
var TOOLTIP_NAME = "Tooltip", [TooltipContextProvider, useTooltipContext] = createTooltipContext(TOOLTIP_NAME), Tooltip$1 = (i) => {
let { __scopeTooltip: a, children: o, open: s, defaultOpen: c, onOpenChange: d, disableHoverableContent: f, delayDuration: g } = i, b = useTooltipProviderContext(TOOLTIP_NAME, i.__scopeTooltip), x = usePopperScope$1(a), [S, C] = React.useState(null), w = useId$1(), E = React.useRef(0), O = f ?? b.disableHoverableContent, A = g ?? b.delayDuration, M = React.useRef(!1), [F, I] = useControllableState({
prop: s,
defaultProp: c ?? !1,
onChange: (i) => {
i ? (b.onOpen(), document.dispatchEvent(new CustomEvent(TOOLTIP_OPEN))) : b.onClose(), d?.(i);
},
caller: TOOLTIP_NAME
}), R = React.useMemo(() => F ? M.current ? "delayed-open" : "instant-open" : "closed", [F]), V = React.useCallback(() => {
window.clearTimeout(E.current), E.current = 0, M.current = !1, I(!0);
}, [I]), rP = React.useCallback(() => {
window.clearTimeout(E.current), E.current = 0, I(!1);
}, [I]), iP = React.useCallback(() => {
window.clearTimeout(E.current), E.current = window.setTimeout(() => {
M.current = !0, I(!0), E.current = 0;
}, A);
}, [A, I]);
return React.useEffect(() => () => {
E.current &&= (window.clearTimeout(E.current), 0);
}, []), /* @__PURE__ */ jsx(Root2$6, {
...x,
children: /* @__PURE__ */ jsx(TooltipContextProvider, {
scope: a,
contentId: w,
open: F,
stateAttribute: R,
trigger: S,
onTriggerChange: C,
onTriggerEnter: React.useCallback(() => {
b.isOpenDelayedRef.current ? iP() : V();
}, [
b.isOpenDelayedRef,
iP,
V
]),
onTriggerLeave: React.useCallback(() => {
O ? rP() : (window.clearTimeout(E.current), E.current = 0);
}, [rP, O]),
onOpen: V,
onClose: rP,
disableHoverableContent: O,
children: o
})
});
};
Tooltip$1.displayName = TOOLTIP_NAME;
var TRIGGER_NAME$6 = "TooltipTrigger", TooltipTrigger$1 = React.forwardRef((i, a) => {
let { __scopeTooltip: o,...s } = i, c = useTooltipContext(TRIGGER_NAME$6, o), d = useTooltipProviderContext(TRIGGER_NAME$6, o), f = usePopperScope$1(o), g = React.useRef(null), b = useComposedRefs$1(a, g, c.onTriggerChange), x = React.useRef(!1), S = React.useRef(!1), C = React.useCallback(() => x.current = !1, []);
return React.useEffect(() => () => document.removeEventListener("pointerup", C), [C]), /* @__PURE__ */ jsx(Anchor, {
asChild: !0,
...f,
children: /* @__PURE__ */ jsx(Primitive.button, {
"aria-describedby": c.open ? c.contentId : void 0,
"data-state": c.stateAttribute,
...s,
ref: b,
onPointerMove: composeEventHandlers(i.onPointerMove, (i) => {
i.pointerType !== "touch" && !S.current && !d.isPointerInTransitRef.current && (c.onTriggerEnter(), S.current = !0);
}),
onPointerLeave: composeEventHandlers(i.onPointerLeave, () => {
c.onTriggerLeave(), S.current = !1;
}),
onPointerDown: composeEventHandlers(i.onPointerDown, () => {
c.open && c.onClose(), x.current = !0, document.addEventListener("pointerup", C, { once: !0 });
}),
onFocus: composeEventHandlers(i.onFocus, () => {
x.current || c.onOpen();
}),
onBlur: composeEventHandlers(i.onBlur, c.onClose),
onClick: composeEventHandlers(i.onClick, c.onClose)
})
});
});
TooltipTrigger$1.displayName = TRIGGER_NAME$6;
var PORTAL_NAME$3 = "TooltipPortal", [PortalProvider, usePortalContext] = createTooltipContext(PORTAL_NAME$3, { forceMount: void 0 }), TooltipPortal = (i) => {
let { __scopeTooltip: a, forceMount: o, children: s, container: c } = i, d = useTooltipContext(PORTAL_NAME$3, a);
return /* @__PURE__ */ jsx(PortalProvider, {
scope: a,
forceMount: o,
children: /* @__PURE__ */ jsx(Presence, {
present: o || d.open,
children: /* @__PURE__ */ jsx(Portal, {
asChild: !0,
container: c,
children: s
})
})
});
};
TooltipPortal.displayName = PORTAL_NAME$3;
var CONTENT_NAME$6 = "TooltipContent", TooltipContent$1 = React.forwardRef((i, a) => {
let o = usePortalContext(CONTENT_NAME$6, i.__scopeTooltip), { forceMount: s = o.forceMount, side: c = "top",...d } = i, f = useTooltipContext(CONTENT_NAME$6, i.__scopeTooltip);
return /* @__PURE__ */ jsx(Presence, {
present: s || f.open,
children: f.disableHoverableContent ? /* @__PURE__ */ jsx(TooltipContentImpl, {
side: c,
...d,
ref: a
}) : /* @__PURE__ */ jsx(TooltipContentHoverable, {
side: c,
...d,
ref: a
})
});
}), TooltipContentHoverable = React.forwardRef((i, a) => {
let o = useTooltipContext(CONTENT_NAME$6, i.__scopeTooltip), s = useTooltipProviderContext(CONTENT_NAME$6, i.__scopeTooltip), c = React.useRef(null), d = useComposedRefs$1(a, c), [f, g] = React.useState(null), { trigger: b, onClose: x } = o, S = c.current, { onPointerInTransitChange: C } = s, w = React.useCallback(() => {
g(null), C(!1);
}, [C]), E = React.useCallback((i, a) => {
let o = i.currentTarget, s = {
x: i.clientX,
y: i.clientY
}, c = getExitSideFromRect(s, o.getBoundingClientRect()), d = getPaddedExitPoints(s, c), f = getPointsFromRect(a.getBoundingClientRect()), b = getHull([...d, ...f]);
g(b), C(!0);
}, [C]);
return React.useEffect(() => () => w(), [w]), React.useEffect(() => {
if (b && S) {
let i = (i) => E(i, S), a = (i) => E(i, b);
return b.addEventListener("pointerleave", i), S.addEventListener("pointerleave", a), () => {
b.removeEventListener("pointerleave", i), S.removeEventListener("pointerleave", a);
};
}
}, [
b,
S,
E,
w
]), React.useEffect(() => {
if (f) {
let i = (i) => {
let a = i.target, o = {
x: i.clientX,
y: i.clientY
}, s = b?.contains(a) || S?.contains(a), c = !isPointInPolygon(o, f);
s ? w() : c && (w(), x());
};
return document.addEventListener("pointermove", i), () => document.removeEventListener("pointermove", i);
}
}, [
b,
S,
f,
x,
w
]), /* @__PURE__ */ jsx(TooltipContentImpl, {
...i,
ref: d
});
}), [VisuallyHiddenContentContextProvider, useVisuallyHiddenContentContext] = createTooltipContext(TOOLTIP_NAME, { isInside: !1 }), Slottable$1 = /* @__PURE__ */ createSlottable("TooltipContent"), TooltipContentImpl = React.forwardRef((i, a) => {
let { __scopeTooltip: o, children: s, "aria-label": c, onEscapeKeyDown: d, onPointerDownOutside: f,...g } = i, b = useTooltipContext(CONTENT_NAME$6, o), x = usePopperScope$1(o), { onClose: S } = b;
return React.useEffect(() => (document.addEventListener(TOOLTIP_OPEN, S), () => document.removeEventListener(TOOLTIP_OPEN, S)), [S]), React.useEffect(() => {
if (b.trigger) {
let i = (i) => {
i.target?.contains(b.trigger) && S();
};
return window.addEventListener("scroll", i, { capture: !0 }), () => window.removeEventListener("scroll", i, { capture: !0 });
}
}, [b.trigger, S]), /* @__PURE__ */ jsx(DismissableLayer, {
asChild: !0,
disableOutsidePointerEvents: !1,
onEscapeKeyDown: d,
onPointerDownOutside: f,
onFocusOutside: (i) => i.preventDefault(),
onDismiss: S,
children: /* @__PURE__ */ jsxs(Content$1, {
"data-state": b.stateAttribute,
...x,
...g,
ref: a,
style: {
...g.style,
"--radix-tooltip-content-transform-origin": "var(--radix-popper-transform-origin)",
"--radix-tooltip-content-available-width": "var(--radix-popper-available-width)",
"--radix-tooltip-content-available-height": "var(--radix-popper-available-height)",
"--radix-tooltip-trigger-width": "var(--radix-popper-anchor-width)",
"--radix-tooltip-trigger-height": "var(--radix-popper-anchor-height)"
},
children: [/* @__PURE__ */ jsx(Slottable$1, { children: s }), /* @__PURE__ */ jsx(VisuallyHiddenContentContextProvider, {
scope: o,
isInside: !0,
children: /* @__PURE__ */ jsx(Root$5, {
id: b.contentId,
role: "tooltip",
children: c || s
})
})]
})
});
});
TooltipContent$1.displayName = CONTENT_NAME$6;
var ARROW_NAME$2 = "TooltipArrow", TooltipArrow = React.forwardRef((i, a) => {
let { __scopeTooltip: o,...s } = i, c = usePopperScope$1(o);
return useVisuallyHiddenContentContext(ARROW_NAME$2, o).isInside ? null : /* @__PURE__ */ jsx(Arrow, {
...c,
...s,
ref: a
});
});
TooltipArrow.displayName = ARROW_NAME$2;
function getExitSideFromRect(i, a) {
let o = Math.abs(a.top - i.y), s = Math.abs(a.bottom - i.y), c = Math.abs(a.right - i.x), d = Math.abs(a.left - i.x);
switch (Math.min(o, s, c, d)) {
case d: return "left";
case c: return "right";
case o: return "top";
case s: return "bottom";
default: throw Error("unreachable");
}
}
function getPaddedExitPoints(i, a, o = 5) {
let s = [];
switch (a) {
case "top":
s.push({
x: i.x - o,
y: i.y + o
}, {
x: i.x + o,
y: i.y + o
});
break;
case "bottom":
s.push({
x: i.x - o,
y: i.y - o
}, {
x: i.x + o,
y: i.y - o
});
break;
case "left":
s.push({
x: i.x + o,
y: i.y - o
}, {
x: i.x + o,
y: i.y + o
});
break;
case "right":
s.push({
x: i.x - o,
y: i.y - o
}, {
x: i.x - o,
y: i.y + o
});
break;
}
return s;
}
function getPointsFromRect(i) {
let { top: a, right: o, bottom: s, left: c } = i;
return [
{
x: c,
y: a
},
{
x: o,
y: a
},
{
x: o,
y: s
},
{
x: c,
y: s
}
];
}
function isPointInPolygon(i, a) {
let { x: o, y: s } = i, c = !1;
for (let i = 0, d = a.length - 1; i < a.length; d = i++) {
let f = a[i], g = a[d], b = f.x, x = f.y, S = g.x, C = g.y;
x > s != C > s && o < (S - b) * (s - x) / (C - x) + b && (c = !c);
}
return c;
}
function getHull(i) {
let a = i.slice();
return a.sort((i, a) => i.x < a.x ? -1 : i.x > a.x ? 1 : i.y < a.y ? -1 : i.y > a.y ? 1 : 0), getHullPresorted(a);
}
function getHullPresorted(i) {
if (i.length <= 1) return i.slice();
let a = [];
for (let o = 0; o < i.length; o++) {
let s = i[o];
for (; a.length >= 2;) {
let i = a[a.length - 1], o = a[a.length - 2];
if ((i.x - o.x) * (s.y - o.y) >= (i.y - o.y) * (s.x - o.x)) a.pop();
else break;
}
a.push(s);
}
a.pop();
let o = [];
for (let a = i.length - 1; a >= 0; a--) {
let s = i[a];
for (; o.length >= 2;) {
let i = o[o.length - 1], a = o[o.length - 2];
if ((i.x - a.x) * (s.y - a.y) >= (i.y - a.y) * (s.x - a.x)) o.pop();
else break;
}
o.push(s);
}
return o.pop(), a.length === 1 && o.length === 1 && a[0].x === o[0].x && a[0].y === o[0].y ? a : a.concat(o);
}
var Provider = TooltipProvider$1, Root3 = Tooltip$1, Trigger$3 = TooltipTrigger$1, Portal$2 = TooltipPortal, Content2$3 = TooltipContent$1, Arrow2 = TooltipArrow;
function TooltipProvider({ delayDuration: i = 0,...a }) {
return /* @__PURE__ */ jsx(Provider, {
"data-slot": "tooltip-provider",
delayDuration: i,
...a
});
}
function Tooltip({ ...i }) {
return /* @__PURE__ */ jsx(TooltipProvider, { children: /* @__PURE__ */ jsx(Root3, {
"data-slot": "tooltip",
...i
}) });
}
var TooltipTrigger = forwardRef((i, a) => /* @__PURE__ */ jsx(Trigger$3, {
ref: a,
"data-slot": "tooltip-trigger",
...i
}));
TooltipTrigger.displayName = "TooltipTrigger";
function TooltipContent({ className: i, sideOffset: a = 0, children: o,...s }) {
let { container: c } = useLaboratory();
return /* @__PURE__ */ jsx(Fragment$1, { children: /* @__PURE__ */ jsx(Portal$2, {
container: c,
children: /* @__PURE__ */ jsxs(Content2$3, {
"data-slot": "tooltip-content",
sideOffset: a,
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", i),
...s,
children: [o, /* @__PURE__ */ jsx(Arrow2, { className: "bg-foreground fill-foreground z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]" })]
})
}) });
}
function InputGroup({ className: i,...a }) {
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", i),
...a
});
}
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: i, align: a = "inline-start",...o }) {
return /* @__PURE__ */ jsx("div", {
role: "group",
"data-slot": "input-group-addon",
"data-align": a,
className: cn(inputGroupAddonVariants({ align: a }), i),
onClick: (i) => {
i.target.closest("button") || i.currentTarget.parentElement?.querySelector("input")?.focus();
},
...o
});
}
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: i, type: a = "button", variant: o = "ghost", size: s = "xs",...c }) {
return /* @__PURE__ */ jsx(Button, {
type: a,
"data-size": s,
variant: o,
className: cn(inputGroupButtonVariants({ size: s }), i),
...c
});
}
function InputGroupInput({ className: i,...a }) {
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", i),
...a
});
}
const GraphQLIcon = (i) => /* @__PURE__ */ jsxs("svg", {
width: "100",
height: "100",
viewBox: "0 0 100 100",
fill: "none",
xmlns: "http://www.w3.org/2000/svg",
...i,
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 = (i) => {
let { __scopeAlertDialog: a,...o } = i, s = useDialogScope(a);
return /* @__PURE__ */ jsx(Root$10, {
...s,
...o,
modal: !0
});
};
AlertDialog$1.displayName = ROOT_NAME$1;
var TRIGGER_NAME$5 = "AlertDialogTrigger", AlertDialogTrigger$1 = React.forwardRef((i, a) => {
let { __scopeAlertDialog: o,...s } = i, c = useDialogScope(o);
return /* @__PURE__ */ jsx(Trigger$5, {
...c,
...s,
ref: a
});
});
AlertDialogTrigger$1.displayName = TRIGGER_NAME$5;
var PORTAL_NAME$2 = "AlertDialogPortal", AlertDialogPortal$1 = (i) => {
let { __scopeAlertDialog: a,...o } = i, s = useDialogScope(a);
return /* @__PURE__ */ jsx(Portal$4, {
...s,
...o
});
};
AlertDialogPortal$1.displayName = PORTAL_NAME$2;
var OVERLAY_NAME$1 = "AlertDialogOverlay", AlertDialogOverlay$1 = React.forwardRef((i, a) => {
let { __scopeAlertDialog: o,...s } = i, c = useDialogScope(o);
return /* @__PURE__ */ jsx(Overlay, {
...c,
...s,
ref: a
});
});
AlertDialogOverlay$1.displayName = OVERLAY_NAME$1;
var CONTENT_NAME$5 = "AlertDialogContent", [AlertDialogContentProvider, useAlertDialogContentContext] = createAlertDialogContext(CONTENT_NAME$5), Slottable = /* @__PURE__ */ createSlottable("AlertDialogContent"), AlertDialogContent$1 = React.forwardRef((i, a) => {
let { __scopeAlertDialog: o, children: s,...c } = i, d = useDialogScope(o), f = React.useRef(null), g = useComposedRefs$1(a, f), b = React.useRef(null);
return /* @__PURE__ */ jsx(WarningProvider, {
contentName: CONTENT_NAME$5,
titleName: TITLE_NAME,
docsSlug: "alert-dialog",
children: /* @__PURE__ */ jsx(AlertDialogContentProvider, {
scope: o,
cancelRef: b,
children: /* @__PURE__ */ jsxs(Content$2, {
role: "alertdialog",
...d,
...c,
ref: g,
onOpenAutoFocus: composeEventHandlers(c.onOpenAutoFocus, (i) => {
i.preventDefault(), b.current?.focus({ preventScroll: !0 });
}),
onPointerDownOutside: (i) => i.preventDefault(),
onInteractOutside: (i) => i.preventDefault(),
children: [/* @__PURE__ */ jsx(Slottable, { children: s }), /* @__PURE__ */ jsx(DescriptionWarning, { contentRef: f })]
})
})
});
});
AlertDialogContent$1.displayName = CONTENT_NAME$5;
var TITLE_NAME = "AlertDialogTitle", AlertDialogTitle$1 = React.forwardRef((i, a) => {
let { __scopeAlertDialog: o,...s } = i, c = useDialogScope(o);
return /* @__PURE__ */ jsx(Title, {
...c,
...s,
ref: a
});
});
AlertDialogTitle$1.displayName = TITLE_NAME;
var DESCRIPTION_NAME = "AlertDialogDescription", AlertDialogDescription$1 = React.forwardRef((i, a) => {
let { __scopeAlertDialog: o,...s } = i, c = useDialogScope(o);
return /* @__PURE__ */ jsx(Description$1, {
...c,
...s,
ref: a
});
});
AlertDialogDescription$1.displayName = DESCRIPTION_NAME;
var ACTION_NAME = "AlertDialogAction", AlertDialogAction$1 = React.forwardRef((i, a) => {
let { __scopeAlertDialog: o,...s } = i, c = useDialogScope(o);
return /* @__PURE__ */ jsx(Close, {
...c,
...s,
ref: a
});
});
AlertDialogAction$1.displayName = ACTION_NAME;
var CANCEL_NAME = "AlertDialogCancel", AlertDialogCancel$1 = React.forwardRef((i, a) => {
let { __scopeAlertDialog: o,...s } = i, { cancelRef: c } = useAlertDialogContentContext(CANCEL_NAME, o), d = useDialogScope(o), f = useComposedRefs$1(a, c);
return /* @__PURE__ */ jsx(Close, {
...d,
...s,
ref: f
});
});
AlertDialogCancel$1.displayName = CANCEL_NAME;
var DescriptionWarning = ({ contentRef: i }) => {
let a = `\`${CONTENT_NAME$5}\` requires a description for the component to be accessible for screen reader users.
You can add a description to the \`${CONTENT_NAME$5}\` by passing a \`${DESCRIPTION_NAME}\` component as a child, which also benefits sighted users by adding visible context to the dialog.
Alternatively, you can use your own component as a description by assigning it an \`id\` and passing the same value to the \`aria-describedby\` prop in \`${CONTENT_NAME$5}\`. If the description is confusing or duplicative for sighted users, you can use the \`@radix-ui/react-visually-hidden\` primitive as a wrapper around your description component.
For more information, see https://radix-ui.com/primitives/docs/components/alert-dialog`;
return React.useEffect(() => {
document.getElementById(i.current?.getAttribute("aria-describedby")) || console.warn(a);
}, [a, i]), 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({ ...i }) {
return /* @__PURE__ */ jsx(Root2$4, {
"data-slot": "alert-dialog",
...i
});
}
var AlertDialogTrigger = forwardRef((i, a) => /* @__PURE__ */ jsx(Trigger2, {
ref: a,
"data-slot": "alert-dialog-trigger",
...i
}));
AlertDialogTrigger.displayName = "AlertDialogTrigger";
function AlertDialogPortal({ ...i }) {
let { container: a } = useLaboratory();
return /* @__PURE__ */ jsx(Portal2$1, {
"data-slot": "alert-dialog-portal",
...i,
container: a
});
}
function AlertDialogOverlay({ className: i,...a }) {
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", i),
...a
});
}
function AlertDialogContent({ className: i,...a }) {
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", i),
...a
})] });
}
function AlertDialogHeader({ className: i,...a }) {
return /* @__PURE__ */ jsx("div", {
"data-slot": "alert-dialog-header",
className: cn("flex flex-col gap-2 text-center sm:text-left", i),
...a
});
}
function AlertDialogFooter({ className: i,...a }) {
return /* @__PURE__ */ jsx("div", {
"data-slot": "alert-dialog-footer",
className: cn("flex flex-col-reverse gap-2 sm:flex-row sm:justify-end", i),
...a
});
}
function AlertDialogTitle({ className: i,...a }) {
return /* @__PURE__ */ jsx(Title2, {
"data-slot": "alert-dialog-title",
className: cn("text-lg font-semibold", i),
...a
});
}
function AlertDialogDescription({ className: i,...a }) {
return /* @__PURE__ */ jsx(Description2, {
"data-slot": "alert-dialog-description",
className: cn("text-muted-foreground text-sm", i),
...a
});
}
function AlertDialogAction({ className: i,...a }) {
return /* @__PURE__ */ jsx(Action$1, {
className: cn(buttonVariants(), i),
...a
});
}
function AlertDialogCancel({ className: i,...a }) {
return /* @__PURE__ */ jsx(Cancel, {
className: cn(buttonVariants({ variant: "outline" }), i),
...a
});
}
var COLLAPSIBLE_NAME = "Collapsible", [createCollapsibleContext, createCollapsibleScope] = createContextScope(COLLAPSIBLE_NAME), [CollapsibleProvider, useCollapsibleContext] = createCollapsibleContext(COLLAPSIBLE_NAME), Collapsible$1 = React.forwardRef((i, a) => {
let { __scopeCollapsible: o, open: s, defaultOpen: c, disabled: d, onOpenChange: f,...g } = i, [b, x] = useControllableState({
prop: s,
defaultProp: c ?? !1,
onChange: f,
caller: COLLAPSIBLE_NAME
});
return /* @__PURE__ */ jsx(CollapsibleProvider, {
scope: o,
disabled: d,
contentId: useId$1(),
open: b,
onOpenToggle: React.useCallback(() => x((i) => !i), [x]),
children: /* @__PURE__ */ jsx(Primitive.div, {
"data-state": getState$3(b),
"data-disabled": d ? "" : void 0,
...g,
ref: a
})
});
});
Collapsible$1.displayName = COLLAPSIBLE_NAME;
var TRIGGER_NAME$4 = "CollapsibleTrigger", CollapsibleTrigger$1 = React.forwardRef((i, a) => {
let { __scopeCollapsible: o,...s } = i, c = useCollapsibleContext(TRIGGER_NAME$4, o);
return /* @__PURE__ */ jsx(Primitive.button, {
type: "button",
"aria-controls": c.contentId,
"aria-expanded": c.open || !1,
"data-state": getState$3(c.open),
"data-disabled": c.disabled ? "" : void 0,
disabled: c.disabled,
...s,
ref: a,
onClick: composeEventHandlers(i.onClick, c.onOpenToggle)
});
});
CollapsibleTrigger$1.displayName = TRIGGER_NAME$4;
var CONTENT_NAME$4 = "CollapsibleContent", CollapsibleContent$1 = React.forwardRef((i, a) => {
let { forceMount: o,...s } = i, c = useCollapsibleContext(CONTENT_NAME$4, i.__scopeCollapsible);
return /* @__PURE__ */ jsx(Presence, {
present: o || c.open,
children: ({ present: i }) => /* @__PURE__ */ jsx(CollapsibleContentImpl, {
...s,
ref: a,
present: i
})
});
});
CollapsibleContent$1.displayName = CONTENT_NAME$4;
var CollapsibleContentImpl = React.forwardRef((i, a) => {
let { __scopeCollapsible: o, present: s, children: c,...d } = i, f = useCollapsibleContext(CONTENT_NAME$4, o), [g, b] = React.useState(s), x = React.useRef(null), S = useComposedRefs$1(a, x), C = React.useRef(0), w = C.current, E = React.useRef(0), O = E.current, A = f.open || g, M = React.useRef(A), F = React.useRef(void 0);
return React.useEffect(() => {
let i = requestAnimationFrame(() => M.current = !1);
return () => cancelAnimationFrame(i);
}, []), useLayoutEffect2(() => {
let i = x.current;
if (i) {
F.current = F.current || {
transitionDuration: i.style.transitionDuration,
animationName: i.style.animationName
}, i.style.transitionDuration = "0s", i.style.animationName = "none";
let a = i.getBoundingClientRect();
C.current = a.height, E.current = a.width, M.current || (i.style.transitionDuration = F.current.transitionDuration, i.style.animationName = F.current.animationName), b(s);
}
}, [f.open, s]), /* @__PURE__ */ jsx(Primitive.div, {
"data-state": getState$3(f.open),
"data-disabled": f.disabled ? "" : void 0,
id: f.contentId,
hidden: !A,
...d,
ref: S,
style: {
"--radix-collapsible-content-height": w ? `${w}px` : void 0,
"--radix-collapsible-content-width": O ? `${O}px` : void 0,
...i.style
},
children: A && c
});
});
function getState$3(i) {
return i ? "open" : "closed";
}
var Root$4 = Collapsible$1;
function Collapsible({ ...i }) {
return /* @__PURE__ */ jsx(Root$4, {
"data-slot": "collapsible",
...i
});
}
function CollapsibleTrigger({ ...i }) {
return /* @__PURE__ */ jsx(CollapsibleTrigger$1, {
"data-slot": "collapsible-trigger",
...i
});
}
function CollapsibleContent({ ...i }) {
return /* @__PURE__ */ jsx(CollapsibleContent$1, {
"data-slot": "collapsible-content",
...i
});
}
function clamp(i, [a, o]) {
return Math.min(o, Math.max(a, i));
}
function useStateMachine(i, a) {
return React.useReducer((i, o) => a[i][o] ?? i, i);
}
var SCROLL_AREA_NAME = "ScrollArea", [createScrollAreaContext, createScrollAreaScope] = createContextScope(SCROLL_AREA_NAME), [ScrollAreaProvider, useScrollAreaContext] = createScrollAreaContext(SCROLL_AREA_NAME), ScrollArea$1 = React.forwardRef((i, a) => {
let { __scopeScrollArea: o, type: s = "hover", dir: c, scrollHideDelay: d = 600,...f } = i, [g, b] = React.useState(null), [x, S] = React.useState(null), [C, w] = React.useState(null), [E, O] = React.useState(null), [A, M] = React.useState(null), [F, I] = React.useState(0), [R, V] = React.useState(0), [rP, iP] = React.useState(!1), [q, aP] = React.useState(!1), oP = useComposedRefs$1(a, (i) => b(i)), sP = useDirection(c);
return /* @__PURE__ */ jsx(ScrollAreaProvider, {
scope: o,
type: s,
dir: sP,
scrollHideDelay: d,
scrollArea: g,
viewport: x,
onViewportChange: S,
content: C,
onContentChange: w,
scrollbarX: E,
onScrollbarXChange: O,
scrollbarXEnabled: rP,
onScrollbarXEnabledChange: iP,
scrollbarY: A,
onScrollbarYChange: M,
scrollbarYEnabled: q,
onScrollbarYEnabledChange: aP,
onCornerWidthChange: I,
onCornerHeightChange: V,
children: /* @__PURE__ */ jsx(Primitive.div, {
dir: sP,
...f,
ref: oP,
style: {
position: "relative",
"--radix-scroll-area-corner-width": F + "px",
"--radix-scroll-area-corner-height": R + "px",
...i.style
}
})
});
});
ScrollArea$1.displayName = SCROLL_AREA_NAME;
var VIEWPORT_NAME$1 = "ScrollAreaViewport", ScrollAreaViewport = React.forwardRef((i, a) => {
let { __scopeScrollArea: o, children: s, nonce: c,...d } = i, f = useScrollAreaContext(VIEWPORT_NAME$1, o), g = React.useRef(null), b = useComposedRefs$1(a, g, f.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: c
}), /* @__PURE__ */ jsx(Primitive.div, {
"data-radix-scroll-area-viewport": "",
...d,
ref: b,
style: {
overflowX: f.scrollbarXEnabled ? "scroll" : "hidden",
overflowY: f.scrollbarYEnabled ? "scroll" : "hidden",
...i.style
},
children: /* @__PURE__ */ jsx("div", {
ref: f.onContentChange,
style: {
minWidth: "100%",
display: "table"
},
children: s
})
})] });
});
ScrollAreaViewport.displayName = VIEWPORT_NAME$1;
var SCROLLBAR_NAME = "ScrollAreaScrollbar", ScrollAreaScrollbar = React.forwardRef((i, a) => {
let { forceMount: o,...s } = i, c = useScrollAreaContext(SCROLLBAR_NAME, i.__scopeScrollArea), { onScrollbarXEnabledChange: d, onScrollbarYEnabledChange: f } = c, g = i.orientation === "horizontal";
return React.useEffect(() => (g ? d(!0) : f(!0), () => {
g ? d(!1) : f(!1);
}), [
g,
d,
f
]), c.type === "hover" ? /* @__PURE__ */ jsx(ScrollAreaScrollbarHover, {
...s,
ref: a,
forceMount: o
}) : c.type === "scroll" ? /* @__PURE__ */ jsx(ScrollAreaScrollbarScroll, {
...s,
ref: a,
forceMount: o
}) : c.type === "auto" ? /* @__PURE__ */ jsx(ScrollAreaScrollbarAuto, {
...s,
ref: a,
forceMount: o
}) : c.type === "always" ? /* @__PURE__ */ jsx(ScrollAreaScrollbarVisible, {
...s,
ref: a
}) : null;
});
ScrollAreaScrollbar.displayName = SCROLLBAR_NAME;
var ScrollAreaScrollbarHover = React.forwardRef((i, a) => {
let { forceMount: o,...s } = i, c = useScrollAreaContext(SCROLLBAR_NAME, i.__scopeScrollArea), [d, f] = React.useState(!1);
return React.useEffect(() => {
let i = c.scrollArea, a = 0;
if (i) {
let o = () => {
window.clearTimeout(a), f(!0);
}, s = () => {
a = window.setTimeout(() => f(!1), c.scrollHideDelay);
};
return i.addEventListener("pointerenter", o), i.addEventListener("pointerleave", s), () => {
window.clearTimeout(a), i.removeEventListener("pointerenter", o), i.removeEventListener("pointerleave", s);
};
}
}, [c.scrollArea, c.scrollHideDelay]), /* @__PURE__ */ jsx(Presence, {
present: o || d,
children: /* @__PURE__ */ jsx(ScrollAreaScrollbarAuto, {
"data-state": d ? "visible" : "hidden",
...s,
ref: a
})
});
}), ScrollAreaScrollbarScroll = React.forwardRef((i, a) => {
let { forceMount: o,...s } = i, c = useScrollAreaContext(SCROLLBAR_NAME, i.__scopeScrollArea), d = i.orientation === "horizontal", f = useDebounceCallback(() => b("SCROLL_END"), 100), [g, b] = useStateMachine("hidden", {
hidden: { SCROLL: "scrolling" },
scrolling: {
SCROLL_END: "idle",
POINTER_ENTER: "interacting"
},
interacting: {
SCROLL: "interacting",
POINTER_LEAVE: "idle"
},
idle: {
HIDE: "hidden",
SCROLL: "scrolling",
POINTER_ENTER: "interacting"
}
});
return React.useEffect(() => {
if (g === "idle") {
let i = window.setTimeout(() => b("HIDE"), c.scrollHideDelay);
return () => window.clearTimeout(i);
}
}, [
g,
c.scrollHideDelay,
b
]), React.useEffect(() => {
let i = c.viewport, a = d ? "scrollLeft" : "scrollTop";
if (i) {
let o = i[a], s = () => {
let s = i[a];
o !== s && (b("SCROLL"), f()), o = s;
};
return i.addEventListener("scroll", s), () => i.removeEventListener("scroll", s);
}
}, [
c.viewport,
d,
b,
f
]), /* @__PURE__ */ jsx(Presence, {
present: o || g !== "hidden",
children: /* @__PURE__ */ jsx(ScrollAreaScrollbarVisible, {
"data-state": g === "hidden" ? "hidden" : "visible",
...s,
ref: a,
onPointerEnter: composeEventHandlers(i.onPointerEnter, () => b("POINTER_ENTER")),
onPointerLeave: composeEventHandlers(i.onPointerLeave, () => b("POINTER_LEAVE"))
})
});
}), ScrollAreaScrollbarAuto = React.forwardRef((i, a) => {
let o = useScrollAreaContext(SCROLLBAR_NAME, i.__scopeScrollArea), { forceMount: s,...c } = i, [d, f] = React.useState(!1), g = i.orientation === "horizontal", b = useDebounceCallback(() => {
if (o.viewport) {
let i = o.viewport.offsetWidth < o.viewport.scrollWidth, a = o.viewport.offsetHeight < o.viewport.scrollHeight;
f(g ? i : a);
}
}, 10);
return useResizeObserver$1(o.viewport, b), useResizeObserver$1(o.content, b), /* @__PURE__ */ jsx(Presence, {
present: s || d,
children: /* @__PURE__ */ jsx(ScrollAreaScrollbarVisible, {
"data-state": d ? "visible" : "hidden",
...c,
ref: a
})
});
}), ScrollAreaScrollbarVisible = React.forwardRef((i, a) => {
let { orientation: o = "vertical",...s } = i, c = useScrollAreaContext(SCROLLBAR_NAME, i.__scopeScrollArea), d = React.useRef(null), f = React.useRef(0), [g, b] = React.useState({
content: 0,
viewport: 0,
scrollbar: {
size: 0,
paddingStart: 0,
paddingEnd: 0
}
}), x = getThumbRatio(g.viewport, g.content), S = {
...s,
sizes: g,
onSizesChange: b,
hasThumb: x > 0 && x < 1,
onThumbChange: (i) => d.current = i,
onThumbPointerUp: () => f.current = 0,
onThumbPointerDown: (i) => f.current = i
};
function C(i, a) {
return getScrollPositionFromPointer(i, f.current, g, a);
}
return o === "horizontal" ? /* @__PURE__ */ jsx(ScrollAreaScrollbarX, {
...S,
ref: a,
onThumbPositionChange: () => {
if (c.viewport && d.current) {
let i = c.viewport.scrollLeft, a = getThumbOffsetFromScroll(i, g, c.dir);
d.current.style.transform = `translate3d(${a}px, 0, 0)`;
}
},
onWheelScroll: (i) => {
c.viewport && (c.viewport.scrollLeft = i);
},
onDragScroll: (i) => {
c.viewport && (c.viewport.scrollLeft = C(i, c.dir));
}
}) : o === "vertical" ? /* @__PURE__ */ jsx(ScrollAreaScrollbarY, {
...S,
ref: a,
onThumbPositionChange: () => {
if (c.viewport && d.current) {
let i = c.viewport.scrollTop, a = getThumbOffsetFromScroll(i, g);
d.current.style.transform = `translate3d(0, ${a}px, 0)`;
}
},
onWheelScroll: (i) => {
c.viewport && (c.viewport.scrollTop = i);
},
onDragScroll: (i) => {
c.viewport && (c.viewport.scrollTop = C(i));
}
}) : null;
}), ScrollAreaScrollbarX = React.forwardRef((i, a) => {
let { sizes: o, onSizesChange: s,...c } = i, d = useScrollAreaContext(SCROLLBAR_NAME, i.__scopeScrollArea), [f, g] = React.useState(), b = React.useRef(null), x = useComposedRefs$1(a, b, d.onScrollbarXChange);
return React.useEffect(() => {
b.current && g(getComputedStyle(b.current));
}, [b]), /* @__PURE__ */ jsx(ScrollAreaScrollbarImpl, {
"data-orientation": "horizontal",
...c,
ref: x,
sizes: o,
style: {
bottom: 0,
left: d.dir === "rtl" ? "var(--radix-scroll-area-corner-width)" : 0,
right: d.dir === "ltr" ? "var(--radix-scroll-area-corner-width)" : 0,
"--radix-scroll-area-thumb-width": getThumbSize(o) + "px",
...i.style
},
onThumbPointerDown: (a) => i.onThumbPointerDown(a.x),
onDragScroll: (a) => i.onDragScroll(a.x),
onWheelScroll: (a, o) => {
if (d.viewport) {
let s = d.viewport.scrollLeft + a.deltaX;
i.onWheelScroll(s), isScrollingWithinScrollbarBounds(s, o) && a.preventDefault();
}
},
onResize: () => {
b.current && d.viewport && f && s({
content: d.viewport.scrollWidth,
viewport: d.viewport.offsetWidth,
scrollbar: {
size: b.current.clientWidth,
paddingStart: toInt(f.paddingLeft),
paddingEnd: toInt(f.paddingRight)
}
});
}
});
}), ScrollAreaScrollbarY = React.forwardRef((i, a) => {
let { sizes: o, onSizesChange: s,...c } = i, d = useScrollAreaContext(SCROLLBAR_NAME, i.__scopeScrollArea), [f, g] = React.useState(), b = React.useRef(null), x = useComposedRefs$1(a, b, d.onScrollbarYChange);
return React.useEffect(() => {
b.current && g(getComputedStyle(b.current));
}, [b]), /* @__PURE__ */ jsx(ScrollAreaScrollbarImpl, {
"data-orientation": "vertical",
...c,
ref: x,
sizes: o,
style: {
top: 0,
right: d.dir === "ltr" ? 0 : void 0,
left: d.dir === "rtl" ? 0 : void 0,
bottom: "var(--radix-scroll-area-corner-height)",
"--radix-scroll-area-thumb-height": getThumbSize(o) + "px",
...i.style
},
onThumbPointerDown: (a) => i.onThumbPointerDown(a.y),
onDragScroll: (a) => i.onDragScroll(a.y),
onWheelScroll: (a, o) => {
if (d.viewport) {
let s = d.viewport.scrollTop + a.deltaY;
i.onWheelScroll(s), isScrollingWithinScrollbarBounds(s, o) && a.preventDefault();
}
},
onResize: () => {
b.current && d.viewport && f && s({
content: d.viewport.scrollHeight,
viewport: d.viewport.offsetHeight,
scrollbar: {
size: b.current.clientHeight,
paddingStart: toInt(f.paddingTop),
paddingEnd: toInt(f.paddingBottom)
}
});
}
});
}), [ScrollbarProvider, useScrollbarContext] = createScrollAreaContext(SCROLLBAR_NAME), ScrollAreaScrollbarImpl = React.forwardRef((i, a) => {
let { __scopeScrollArea: o, sizes: s, hasThumb: c, onThumbChange: d, onThumbPointerUp: f, onThumbPointerDown: g, onThumbPositionChange: b, onDragScroll: x, onWheelScroll: S, onResize: C,...w } = i, E = useScrollAreaContext(SCROLLBAR_NAME, o), [O, A] = React.useState(null), M = useComposedRefs$1(a, (i) => A(i)), F = React.useRef(null), I = React.useRef(""), R = E.viewport, V = s.content - s.viewport, rP = useCallbackRef(S), iP = useCallbackRef(b), q = useDebounceCallback(C, 10);
function aP(i) {
if (F.current) {
let a = i.clientX - F.current.left, o = i.clientY - F.current.top;
x({
x: a,
y: o
});
}
}
return React.useEffect(() => {
let i = (i) => {
let a = i.target;
O?.contains(a) && rP(i, V);
};
return document.addEventListener("wheel", i, { passive: !1 }), () => document.removeEventListener("wheel", i, { passive: !1 });
}, [
R,
O,
V,
rP
]), React.useEffect(iP, [s, iP]), useResizeObserver$1(O, q), useResizeObserver$1(E.content, q), /* @__PURE__ */ jsx(ScrollbarProvider, {
scope: o,
scrollbar: O,
hasThumb: c,
onThumbChange: useCallbackRef(d),
onThumbPointerUp: useCallbackRef(f),
onThumbPositionChange: iP,
onThumbPointerDown: useCallbackRef(g),
children: /* @__PURE__ */ jsx(Primitive.div, {
...w,
ref: M,
style: {
position: "absolute",
...w.style
},
onPointerDown: composeEventHandlers(i.onPointerDown, (i) => {
i.button === 0 && (i.target.setPointerCapture(i.pointerId), F.current = O.getBoundingClientRect(), I.current = document.body.style.webkitUserSelect, document.body.style.webkitUserSelect = "none", E.viewport && (E.viewport.style.scrollBehavior = "auto"), aP(i));
}),
onPointerMove: composeEventHandlers(i.onPointerMove, aP),
onPointerUp: composeEventHandlers(i.onPointerUp, (i) => {
let a = i.target;
a.hasPointerCapture(i.pointerId) && a.releasePointerCapture(i.pointerId), document.body.style.webkitUserSelect = I.current, E.viewport && (E.viewport.style.scrollBehavior = ""), F.current = null;
})
})
});
}), THUMB_NAME$2 = "ScrollAreaThumb", ScrollAreaThumb = React.forwardRef((i, a) => {
let { forceMount: o,...s } = i, c = useScrollbarContext(THUMB_NAME$2, i.__scopeScrollArea);
return /* @__PURE__ */ jsx(Presence, {
present: o || c.hasThumb,
children: /* @__PURE__ */ jsx(ScrollAreaThumbImpl, {
ref: a,
...s
})
});
}), ScrollAreaThumbImpl = React.forwardRef((i, a) => {
let { __scopeScrollArea: o, style: s,...c } = i, d = useScrollAreaContext(THUMB_NAME$2, o), f = useScrollbarContext(THUMB_NAME$2, o), { onThumbPositionChange: g } = f, b = useComposedRefs$1(a, (i) => f.onThumbChange(i)), x = React.useRef(void 0), S = useDebounceCallback(() => {
x.current &&= (x.current(), void 0);
}, 100);
return React.useEffect(() => {
let i = d.viewport;
if (i) {
let a = () => {
S(), x.current || (x.current = addUnlinkedScrollListener(i, g), g());
};
return g(), i.addEventListener("scroll", a), () => i.removeEventListener("scroll", a);
}
}, [
d.viewport,
S,
g
]), /* @__PURE__ */ jsx(Primitive.div, {
"data-state": f.hasThumb ? "visible" : "hidden",
...c,
ref: b,
style: {
width: "var(--radix-scroll-area-thumb-width)",
height: "var(--radix-scroll-area-thumb-height)",
...s
},
onPointerDownCapture: composeEventHandlers(i.onPointerDownCapture, (i) => {
let a = i.target.getBoundingClientRect(), o = i.clientX - a.left, s = i.clientY - a.top;
f.onThumbPointerDown({
x: o,
y: s
});
}),
onPointerUp: composeEventHandlers(i.onPointerUp, f.onThumbPointerUp)
});
});
ScrollAreaThumb.displayName = THUMB_NAME$2;
var CORNER_NAME = "ScrollAreaCorner", ScrollAreaCorner = React.forwardRef((i, a) => {
let o = useScrollAreaContext(CORNER_NAME, i.__scopeScrollArea), s = !!(o.scrollbarX && o.scrollbarY);
return o.type !== "scroll" && s ? /* @__PURE__ */ jsx(ScrollAreaCornerImpl, {
...i,
ref: a
}) : null;
});
ScrollAreaCorner.displayName = CORNER_NAME;
var ScrollAreaCornerImpl = React.forwardRef((i, a) => {
let { __scopeScrollArea: o,...s } = i, c = useScrollAreaContext(CORNER_NAME, o), [d, f] = React.useState(0), [g, b] = React.useState(0), x = !!(d && g);
return useResizeObserver$1(c.scrollbarX, () => {
let i = c.scrollbarX?.offsetHeight || 0;
c.onCornerHeightChange(i), b(i);
}), useResizeObserver$1(c.scrollbarY, () => {
let i = c.scrollbarY?.offsetWidth || 0;
c.onCornerWidthChange(i), f(i);
}), x ? /* @__PURE__ */ jsx(Primitive.div, {
...s,
ref: a,
style: {
width: d,
height: g,
position: "absolute",
right: c.dir === "ltr" ? 0 : void 0,
left: c.dir === "rtl" ? 0 : void 0,
bottom: 0,
...i.style
}
}) : null;
});
function toInt(i) {
return i ? parseInt(i, 10) : 0;
}
function getThumbRatio(i, a) {
let o = i / a;
return isNaN(o) ? 0 : o;
}
function getThumbSize(i) {
let a = getThumbRatio(i.viewport, i.content), o = i.scrollbar.paddingStart + i.scrollbar.paddingEnd, s = (i.scrollbar.size - o) * a;
return Math.max(s, 18);
}
function getScrollPositionFromPointer(i, a, o, s = "ltr") {
let c = getThumbSize(o), d = c / 2, f = a || d, g = c - f, b = o.scrollbar.paddingStart + f, x = o.scrollbar.size - o.scrollbar.paddingEnd - g, S = o.content - o.viewport, C = s === "ltr" ? [0, S] : [S * -1, 0];
return linearScale$1([b, x], C)(i);
}
function getThumbOffsetFromScroll(i, a, o = "ltr") {
let s = getThumbSize(a), c = a.scrollbar.paddingStart + a.scrollbar.paddingEnd, d = a.scrollbar.size - c, f = a.content - a.viewport, g = d - s, b = o === "ltr" ? [0, f] : [f * -1, 0], x = clamp(i, b);
return linearScale$1([0, f], [0, g])(x);
}
function linearScale$1(i, a) {
return (o) => {
if (i[0] === i[1] || a[0] === a[1]) return a[0];
let s = (a[1] - a[0]) / (i[1] - i[0]);
return a[0] + s * (o - i[0]);
};
}
function isScrollingWithinScrollbarBounds(i, a) {
return i > 0 && i < a;
}
var addUnlinkedScrollListener = (i, a = () => {}) => {
let o = {
left: i.scrollLeft,
top: i.scrollTop
}, s = 0;
return (function c() {
let d = {
left: i.scrollLeft,
top: i.scrollTop
}, f = o.left !== d.left, g = o.top !== d.top;
(f || g) && a(), o = d, s = window.requestAnimationFrame(c);
})(), () => window.cancelAnimationFrame(s);
};
function useDebounceCallback(i, a) {
let o = useCallbackRef(i), s = React.useRef(0);
return React.useEffect(() => () => window.clearTimeout(s.current), []), React.useCallback(() => {
window.clearTimeout(s.current), s.current = window.setTimeout(o, a);
}, [o, a]);
}
function useResizeObserver$1(i, a) {
let o = useCallbackRef(a);
useLayoutEffect2(() => {
let a = 0;
if (i) {
let s = new ResizeObserver(() => {
cancelAnimationFrame(a), a = window.requestAnimationFrame(o);
});
return s.observe(i), () => {
window.cancelAnimationFrame(a), s.unobserve(i);
};
}
}, [i, o]);
}
var Root$3 = ScrollArea$1, Viewport$1 = ScrollAreaViewport, Corner = ScrollAreaCorner;
function ScrollArea({ className: i, children: a,...o }) {
return /* @__PURE__ */ jsxs(Root$3, {
"data-slot": "scroll-area",
className: cn("relative", i),
...o,
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: a
}),
/* @__PURE__ */ jsx(ScrollBar, {}),
/* @__PURE__ */ jsx(Corner, {})
]
});
}
function ScrollBar({ className: i, orientation: a = "vertical",...o }) {
return /* @__PURE__ */ jsx(ScrollAreaScrollbar, {
"data-slot": "scroll-area-scrollbar",
orientation: a,
className: cn("flex touch-none select-none p-px transition-colors", a === "vertical" && "h-full w-2.5 border-l border-l-transparent", a === "horizontal" && "h-2.5 flex-col border-t border-t-transparent", i),
...o,
children: /* @__PURE__ */ jsx(ScrollAreaThumb, {
"data-slot": "scroll-area-thumb",
className: "bg-border relative flex-1 rounded-full"
})
});
}
const CollectionItem = (i) => {
let { activeOperation: a, operations: o, addOperation: s, setActiveOperation: c, deleteCollection: d, updateCollection: f, deleteOperationFromCollection: g, addTab: b, setActiveTab: x, checkPermissions: S } = useLaboratory(), [C, w] = useState(!1), [E, O] = useState(!1), [A, M] = useState(i.collection.name), F = useMemo(() => i.collection.operations.some((i) => i.id === a?.id), [i.collection.operations, a]);
return useEffect(() => {
F && w(!0);
}, [F]), /* @__PURE__ */ jsxs(Collapsible, {
open: C,
onOpenChange: w,
children: [/* @__PURE__ */ jsxs("div", {
className: "bg-background group sticky top-0 z-10 flex items-center pr-2",
children: [/* @__PURE__ */ jsx(CollapsibleTrigger, {
asChild: !0,
children: E ? /* @__PURE__ */ jsxs(InputGroup, {
className: "!bg-accent/50 h-8 border-none",
children: [
/* @__PURE__ */ jsx(InputGroupAddon, {
className: "pl-2.5",
children: jsx(C ? FolderOpenIcon : FolderIcon, { className: "text-muted-foreground size-4" })
}),
/* @__PURE__ */ jsx(InputGroupInput, {
autoFocus: !0,
defaultValue: A,
className: "!pl-1.5 font-medium",
onChange: (i) => M(i.target.value),
onKeyDown: (a) => {
a.key === "Enter" && (f(i.collection.id, { name: A }), O(!1)), a.key === "Escape" && (M(i.collection.name), O(!1));
}
}),
/* @__PURE__ */ jsxs(InputGroupAddon, {
align: "inline-end",
children: [/* @__PURE__ */ jsx(InputGroupButton, {
className: "p-1!",
onClick: (a) => {
a.stopPropagation(), f(i.collection.id, { name: A }), O(!1);
},
children: /* @__PURE__ */ jsx(CheckIcon, {})
}), /* @__PURE__ */ jsx(InputGroupButton, {
className: "p-1!",
onClick: (a) => {
a.stopPropagation(), O(!1), M(i.collection.name);
},
children: /* @__PURE__ */ jsx(XIcon, {})
})]
})
]
}) : /* @__PURE__ */ jsxs(Button, {
variant: "ghost",
className: "!hover:bg-accent/50 min-w-0 flex-1 justify-start px-2",
size: "sm",
children: [jsx(C ? FolderOpenIcon : FolderIcon, { className: "text-muted-foreground size-4" }), i.collection.name]
})
}), !E && /* @__PURE__ */ jsxs("div", {
className: "ml-auto flex items-center gap-2",
children: [S?.("collections:update") && /* @__PURE__ */ jsxs(Tooltip, { children: [/* @__PURE__ */ jsx(TooltipTrigger$1, {
asChild: !0,
children: /* @__PURE__ */ jsx(Button, {
variant: "link",
className: "text-muted-foreground p-1! pr-0! opacity-0 transition-opacity group-hover:opacity-100",
onClick: (i) => {
i.stopPropagation(), O(!0);
},
children: /* @__PURE__ */ jsx(PencilIcon, {})
})
}), /* @__PURE__ */ jsx(TooltipContent, { children: "Edit collection" })] }), S?.("collections:delete") && /* @__PURE__ */ jsxs(AlertDialog, { children: [/* @__PURE__ */ jsxs(Tooltip, { children: [/* @__PURE__ */ jsx(TooltipTrigger$1, {
asChild: !0,
children: /* @__PURE__ */ jsx(AlertDialogTrigger, {
asChild: !0,
children: /* @__PURE__ */ jsx(Button, {
variant: "link",
className: "text-muted-foreground hover:text-destructive p-1! pr-0! opacity-0 transition-opacity group-hover:opacity-100",
onClick: (i) => {
i.stopPropagation();
},
children: /* @__PURE__ */ jsx(TrashIcon, {})
})
})
}), /* @__PURE__ */ jsx(TooltipContent, { children: "Delete collection" })] }), /* @__PURE__ */ jsxs(AlertDialogContent, { children: [/* @__PURE__ */ jsxs(AlertDialogHeader, { children: [/* @__PURE__ */ jsx(AlertDialogTitle, { children: "Are you sure you want to delete collection?" }), /* @__PURE__ */ jsxs(AlertDialogDescription, { children: [i.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: (a) => {
a.stopPropagation(), d(i.collection.id);
},
children: "Delete"
})
})] })] })] })]
})]
}), /* @__PURE__ */ jsx(CollapsibleContent, {
className: cn("border-border ml-4 flex flex-col gap-1 border-l pl-2"),
children: C && i.collection.operations.map((d) => {
let f = a?.id === d.id;
return /* @__PURE__ */ jsxs("div", {
className: cn("group flex w-full items-center rounded-md pr-2", { "bg-accent/50": f }),
children: [/* @__PURE__ */ jsxs(Button, {
variant: "ghost",
className: "min-w-0 flex-1 justify-start gap-2 px-2",
size: "sm",
onClick: () => {
if (o.some((i) => i.id === d.id)) c(d.id);
else {
let i = s(d), a = b({
type: "operation",
data: i
});
x(a);
}
},
children: [/* @__PURE__ */ jsx(GraphQLIcon, { className: "size-4 text-pink-500" }), d.name]
}), S?.("collectionsOperations:delete") && /* @__PURE__ */ jsxs(AlertDialog, { children: [/* @__PURE__ */ jsxs(Tooltip, { children: [/* @__PURE__ */ jsx(TooltipTrigger$1, {
asChild: !0,
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: (i) => {
i.stopPropagation();
},
children: /* @__PURE__ */ jsx(TrashIcon, {})
})
})
}), /* @__PURE__ */ jsx(TooltipContent, { children: "Delete operation" })] }), /* @__PURE__ */ jsxs(AlertDialogContent, { children: [/* @__PURE__ */ jsxs(AlertDialogHeader, { children: [/* @__PURE__ */ jsxs(AlertDialogTitle, { children: [
"Are you sure you want to delete operation ",
d.name,
"?"
] }), /* @__PURE__ */ jsxs(AlertDialogDescription, { children: [d.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: (a) => {
a.stopPropagation(), g(i.collection.id, d.id);
},
children: "Delete"
})
})] })] })] })]
}, d.name);
})
})]
});
}, CollectionsSearchResult = (i) => {
let { activeOperation: a, operations: o, addOperation: s, setActiveOperation: c, addTab: d, setActiveTab: f } = useLaboratory();
return /* @__PURE__ */ jsx("div", {
className: "flex flex-col gap-1",
children: i.items.map((i) => {
let g = a?.id === i.id;
return /* @__PURE__ */ jsxs(Button, {
variant: "ghost",
className: cn("group w-full justify-start gap-2 px-2", { "bg-accent/50": g }),
size: "sm",
onClick: () => {
if (o.some((a) => a.id === i.id)) c(i.id);
else {
let a = s(i), o = d({
type: "operation",
data: a
});
f(o);
}
},
children: [
/* @__PURE__ */ jsx(GraphQLIcon, { className: "size-4 text-pink-500" }),
/* @__PURE__ */ jsx("span", {
className: "text-muted-foreground truncate",
children: i.parent.name
}),
/* @__PURE__ */ jsx("span", {
className: "text-muted-foreground",
children: " / "
}),
i.name
]
}, i.name);
})
});
}, Collections = () => {
let [i, a] = useState(""), { collections: o, openAddCollectionDialog: s, checkPermissions: c } = useLaboratory(), d = useMemo(() => o.reduce((i, a) => [...i, ...a.operations.map((i) => ({
...i,
parent: a
}))], []).filter((a) => a.name.toLowerCase().includes(i.toLowerCase())), [o, i]);
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: c?.("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: s,
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: i,
onChange: (i) => a(i.target.value)
}),
i.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: () => a(""),
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: i.length > 0 ? d.length > 0 ? /* @__PURE__ */ jsx(CollectionsSearchResult, { items: d }) : /* @__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."
})
] })
}) : o.length > 0 ? o.map((i) => /* @__PURE__ */ jsx(CollectionItem, { collection: i }, i.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: s,
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(i, a, o, s, c, d, f) {
if (d === a.length) return c === i.length ? U : k$2;
var g = `${c},${d}`;
if (f[g] !== void 0) return f[g];
for (var b = s.charAt(d), x = o.indexOf(b, c), S = 0, C, w, E, O; x >= 0;) C = G$1(i, a, o, s, x + 1, d + 1, f), C > S && (x === c ? C *= U : m.test(i.charAt(x - 1)) ? (C *= H$1, E = i.slice(c, x - 1).match(B$1), E && c > 0 && (C *= u ** +E.length)) : K$1.test(i.charAt(x - 1)) ? (C *= Y$2, O = i.slice(c, x - 1).match(X), O && c > 0 && (C *= u ** +O.length)) : (C *= J, c > 0 && (C *= u ** +(x - c))), i.charAt(x) !== a.charAt(d) && (C *= $$1)), (C < p && o.charAt(x - 1) === s.charAt(d + 1) || s.charAt(d + 1) === s.charAt(d) && o.charAt(x - 1) !== s.charAt(d)) && (w = G$1(i, a, o, s, x + 1, d + 2, f), w * p > C && (C = w * p)), C > S && (S = C), x = o.indexOf(b, x + 1);
return f[g] = S, S;
}
function D$1(i) {
return i.toLowerCase().replace(X, " ");
}
function W(i, a, o) {
return i = o && o.length > 0 ? `${i + " " + o.join(" ")}` : i, G$1(i, a, D$1(i), D$1(a), 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 = (i, a, o) => W(i, a, o), ue = React.createContext(void 0), K = () => React.useContext(ue), de$1 = React.createContext(void 0), ee = () => React.useContext(de$1), fe = React.createContext(void 0), me = React.forwardRef((i, a) => {
let o = L(() => ({
search: "",
value: i.value ?? i.defaultValue ?? "",
selectedItemId: void 0,
filtered: {
count: 0,
items: /* @__PURE__ */ new Map(),
groups: /* @__PURE__ */ new Set()
}
})), s = L(() => /* @__PURE__ */ new Set()), c = L(() => /* @__PURE__ */ new Map()), d = L(() => /* @__PURE__ */ new Map()), f = L(() => /* @__PURE__ */ new Set()), g = pe$1(i), { label: b, children: x, value: S, onValueChange: C, filter: w, shouldFilter: E, loop: O, disablePointerSelection: A = !1, vimBindings: M = !0,...F } = i, I = useId$1(), R = useId$1(), V = useId$1(), rP = React.useRef(null), iP = ke$1();
k$1(() => {
if (S !== void 0) {
let i = S.trim();
o.current.value = i, q.emit();
}
}, [S]), k$1(() => {
iP(6, uP);
}, []);
let q = React.useMemo(() => ({
subscribe: (i) => (f.current.add(i), () => f.current.delete(i)),
snapshot: () => o.current,
setState: (i, a, s) => {
var c, d, f;
if (!Object.is(o.current[i], a)) {
if (o.current[i] = a, i === "search") lP(), sP(), iP(1, cP);
else if (i === "value") {
if (document.activeElement.hasAttribute("cmdk-input") || document.activeElement.hasAttribute("cmdk-root")) {
let i = document.getElementById(V);
i ? i.focus() : (c = document.getElementById(I)) == null || c.focus();
}
if (iP(7, () => {
o.current.selectedItemId = dP()?.id, q.emit();
}), s || iP(5, uP), g.current?.value !== void 0) {
let i = a ?? "";
(f = (d = g.current).onValueChange) == null || f.call(d, i);
return;
}
}
q.emit();
}
},
emit: () => {
f.current.forEach((i) => i());
}
}), []), aP = React.useMemo(() => ({
value: (i, a, s) => {
a !== d.current.get(i)?.value && (d.current.set(i, {
value: a,
keywords: s
}), o.current.filtered.items.set(i, oP(a, s)), iP(2, () => {
sP(), q.emit();
}));
},
item: (i, a) => (s.current.add(i), a && (c.current.has(a) ? c.current.get(a).add(i) : c.current.set(a, new Set([i]))), iP(3, () => {
lP(), sP(), o.current.value || cP(), q.emit();
}), () => {
d.current.delete(i), s.current.delete(i), o.current.filtered.items.delete(i);
let a = dP();
iP(4, () => {
lP(), a?.getAttribute("id") === i && cP(), q.emit();
});
}),
group: (i) => (c.current.has(i) || c.current.set(i, /* @__PURE__ */ new Set()), () => {
d.current.delete(i), c.current.delete(i);
}),
filter: () => g.current.shouldFilter,
label: b || i["aria-label"],
getDisablePointerSelection: () => g.current.disablePointerSelection,
listId: I,
inputId: V,
labelId: R,
listInnerRef: rP
}), []);
function oP(i, a) {
let s = g.current?.filter ?? Re$1;
return i ? s(i, o.current.search, a) : 0;
}
function sP() {
if (!o.current.search || g.current.shouldFilter === !1) return;
let i = o.current.filtered.items, a = [];
o.current.filtered.groups.forEach((o) => {
let s = c.current.get(o), d = 0;
s.forEach((a) => {
let o = i.get(a);
d = Math.max(o, d);
}), a.push([o, d]);
});
let s = rP.current;
fP().sort((a, o) => {
let s = a.getAttribute("id"), c = o.getAttribute("id");
return (i.get(c) ?? 0) - (i.get(s) ?? 0);
}).forEach((i) => {
let a = i.closest(Y$1);
a ? a.appendChild(i.parentElement === a ? i : i.closest(`${Y$1} > *`)) : s.appendChild(i.parentElement === s ? i : i.closest(`${Y$1} > *`));
}), a.sort((i, a) => a[1] - i[1]).forEach((i) => {
let a = rP.current?.querySelector(`${N}[${T}="${encodeURIComponent(i[0])}"]`);
a?.parentElement.appendChild(a);
});
}
function cP() {
let i = fP().find((i) => i.getAttribute("aria-disabled") !== "true")?.getAttribute(T);
q.setState("value", i || void 0);
}
function lP() {
if (!o.current.search || g.current.shouldFilter === !1) {
o.current.filtered.count = s.current.size;
return;
}
o.current.filtered.groups = /* @__PURE__ */ new Set();
let i = 0;
for (let a of s.current) {
let s = d.current.get(a)?.value ?? "", c = d.current.get(a)?.keywords ?? [], f = oP(s, c);
o.current.filtered.items.set(a, f), f > 0 && i++;
}
for (let [i, a] of c.current) for (let s of a) if (o.current.filtered.items.get(s) > 0) {
o.current.filtered.groups.add(i);
break;
}
o.current.filtered.count = i;
}
function uP() {
var i;
let a = dP();
a && (a.parentElement?.firstChild === a && ((i = a.closest(N)?.querySelector(be$1)) == null || i.scrollIntoView({ block: "nearest" })), a.scrollIntoView({ block: "nearest" }));
}
function dP() {
return rP.current?.querySelector(`${le}[aria-selected="true"]`);
}
function fP() {
return Array.from(rP.current?.querySelectorAll(ce) || []);
}
function pP(i) {
let a = fP()[i];
a && q.setState("value", a.getAttribute(T));
}
function mP(i) {
var a;
let o = dP(), s = fP(), c = s.findIndex((i) => i === o), d = s[c + i];
(a = g.current) != null && a.loop && (d = c + i < 0 ? s[s.length - 1] : c + i === s.length ? s[0] : s[c + i]), d && q.setState("value", d.getAttribute(T));
}
function hP(i) {
let a = dP()?.closest(N), o;
for (; a && !o;) a = i > 0 ? we$2(a, N) : De$1(a, N), o = a?.querySelector(ce);
o ? q.setState("value", o.getAttribute(T)) : mP(i);
}
let gP = () => pP(fP().length - 1), _P = (i) => {
i.preventDefault(), i.metaKey ? gP() : i.altKey ? hP(1) : mP(1);
}, vP = (i) => {
i.preventDefault(), i.metaKey ? pP(0) : i.altKey ? hP(-1) : mP(-1);
};
return React.createElement(Primitive.div, {
ref: a,
tabIndex: -1,
...F,
"cmdk-root": "",
onKeyDown: (i) => {
var a;
(a = F.onKeyDown) == null || a.call(F, i);
let o = i.nativeEvent.isComposing || i.keyCode === 229;
if (!(i.defaultPrevented || o)) switch (i.key) {
case "n":
case "j":
M && i.ctrlKey && _P(i);
break;
case "ArrowDown":
_P(i);
break;
case "p":
case "k":
M && i.ctrlKey && vP(i);
break;
case "ArrowUp":
vP(i);
break;
case "Home":
i.preventDefault(), pP(0);
break;
case "End":
i.preventDefault(), gP();
break;
case "Enter": {
i.preventDefault();
let a = dP();
if (a) {
let i = new Event(Z);
a.dispatchEvent(i);
}
}
}
}
}, React.createElement("label", {
"cmdk-label": "",
htmlFor: aP.inputId,
id: aP.labelId,
style: Te
}, b), B(i, (i) => React.createElement(de$1.Provider, { value: q }, React.createElement(ue.Provider, { value: aP }, i))));
}), he$1 = React.forwardRef((i, a) => {
let o = useId$1(), s = React.useRef(null), c = React.useContext(fe), d = K(), f = pe$1(i), g = f.current?.forceMount ?? c?.forceMount;
k$1(() => {
if (!g) return d.item(o, c?.id);
}, [g]);
let b = ve(o, s, [
i.value,
i.children,
s
], i.keywords), x = ee(), S = P((i) => i.value && i.value === b.current), C = P((i) => g || d.filter() === !1 ? !0 : i.search ? i.filtered.items.get(o) > 0 : !0);
React.useEffect(() => {
let a = s.current;
if (!(!a || i.disabled)) return a.addEventListener(Z, w), () => a.removeEventListener(Z, w);
}, [
C,
i.onSelect,
i.disabled
]);
function w() {
var i, a;
E(), (a = (i = f.current).onSelect) == null || a.call(i, b.current);
}
function E() {
x.setState("value", b.current, !0);
}
if (!C) return null;
let { disabled: O, value: A, onSelect: M, forceMount: F, keywords: I,...R } = i;
return React.createElement(Primitive.div, {
ref: composeRefs$1(s, a),
...R,
id: o,
"cmdk-item": "",
role: "option",
"aria-disabled": !!O,
"aria-selected": !!S,
"data-disabled": !!O,
"data-selected": !!S,
onPointerMove: O || d.getDisablePointerSelection() ? void 0 : E,
onClick: O ? void 0 : w
}, i.children);
}), Ee$1 = React.forwardRef((i, a) => {
let { heading: o, children: s, forceMount: c,...d } = i, f = useId$1(), g = React.useRef(null), b = React.useRef(null), x = useId$1(), S = K(), C = P((i) => c || S.filter() === !1 ? !0 : i.search ? i.filtered.groups.has(f) : !0);
k$1(() => S.group(f), []), ve(f, g, [
i.value,
i.heading,
b
]);
let w = React.useMemo(() => ({
id: f,
forceMount: c
}), [c]);
return React.createElement(Primitive.div, {
ref: composeRefs$1(g, a),
...d,
"cmdk-group": "",
role: "presentation",
hidden: C ? void 0 : !0
}, o && React.createElement("div", {
ref: b,
"cmdk-group-heading": "",
"aria-hidden": !0,
id: x
}, o), B(i, (i) => React.createElement("div", {
"cmdk-group-items": "",
role: "group",
"aria-labelledby": o ? x : void 0
}, React.createElement(fe.Provider, { value: w }, i))));
}), ye = React.forwardRef((i, a) => {
let { alwaysRender: o,...s } = i, c = React.useRef(null), d = P((i) => !i.search);
return !o && !d ? null : React.createElement(Primitive.div, {
ref: composeRefs$1(c, a),
...s,
"cmdk-separator": "",
role: "separator"
});
}), Se = React.forwardRef((i, a) => {
let { onValueChange: o,...s } = i, c = i.value != null, d = ee(), f = P((i) => i.search), g = P((i) => i.selectedItemId), b = K();
return React.useEffect(() => {
i.value != null && d.setState("search", i.value);
}, [i.value]), React.createElement(Primitive.input, {
ref: a,
...s,
"cmdk-input": "",
autoComplete: "off",
autoCorrect: "off",
spellCheck: !1,
"aria-autocomplete": "list",
role: "combobox",
"aria-expanded": !0,
"aria-controls": b.listId,
"aria-labelledby": b.labelId,
"aria-activedescendant": g,
id: b.inputId,
type: "text",
value: c ? i.value : f,
onChange: (i) => {
c || d.setState("search", i.target.value), o?.(i.target.value);
}
});
}), Ce$1 = React.forwardRef((i, a) => {
let { children: o, label: s = "Suggestions",...c } = i, d = React.useRef(null), f = React.useRef(null), g = P((i) => i.selectedItemId), b = K();
return React.useEffect(() => {
if (f.current && d.current) {
let i = f.current, a = d.current, o, s = new ResizeObserver(() => {
o = requestAnimationFrame(() => {
let o = i.offsetHeight;
a.style.setProperty("--cmdk-list-height", o.toFixed(1) + "px");
});
});
return s.observe(i), () => {
cancelAnimationFrame(o), s.unobserve(i);
};
}
}, []), React.createElement(Primitive.div, {
ref: composeRefs$1(d, a),
...c,
"cmdk-list": "",
role: "listbox",
tabIndex: -1,
"aria-activedescendant": g,
"aria-label": s,
id: b.listId
}, B(i, (i) => React.createElement("div", {
ref: composeRefs$1(f, b.listInnerRef),
"cmdk-list-sizer": ""
}, i)));
}), xe = React.forwardRef((i, a) => {
let { open: o, onOpenChange: s, overlayClassName: c, contentClassName: d, container: f,...g } = i;
return React.createElement(Root$10, {
open: o,
onOpenChange: s
}, React.createElement(Portal$4, { container: f }, React.createElement(Overlay, {
"cmdk-overlay": "",
className: c
}), React.createElement(Content$2, {
"aria-label": i.label,
"cmdk-dialog": "",
className: d
}, React.createElement(me, {
ref: a,
...g
}))));
}), Ie$1 = React.forwardRef((i, a) => P((i) => i.filtered.count === 0) ? React.createElement(Primitive.div, {
ref: a,
...i,
"cmdk-empty": "",
role: "presentation"
}) : null), Pe$1 = React.forwardRef((i, a) => {
let { progress: o, children: s, label: c = "Loading...",...d } = i;
return React.createElement(Primitive.div, {
ref: a,
...d,
"cmdk-loading": "",
role: "progressbar",
"aria-valuenow": o,
"aria-valuemin": 0,
"aria-valuemax": 100,
"aria-label": c
}, B(i, (i) => React.createElement("div", { "aria-hidden": !0 }, i)));
}), _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(i, a) {
let o = i.nextElementSibling;
for (; o;) {
if (o.matches(a)) return o;
o = o.nextElementSibling;
}
}
function De$1(i, a) {
let o = i.previousElementSibling;
for (; o;) {
if (o.matches(a)) return o;
o = o.previousElementSibling;
}
}
function pe$1(i) {
let a = React.useRef(i);
return k$1(() => {
a.current = i;
}), a;
}
var k$1 = typeof window > "u" ? React.useEffect : React.useLayoutEffect;
function L(i) {
let a = React.useRef();
return a.current === void 0 && (a.current = i()), a;
}
function P(i) {
let a = ee(), o = () => i(a.snapshot());
return React.useSyncExternalStore(a.subscribe, o, o);
}
function ve(i, a, o, s = []) {
let c = React.useRef(), d = K();
return k$1(() => {
var f;
let g = (() => {
for (let i of o) {
if (typeof i == "string") return i.trim();
if (typeof i == "object" && "current" in i) return i.current ? i.current.textContent?.trim() : c.current;
}
})(), b = s.map((i) => i.trim());
d.value(i, g, b), (f = a.current) == null || f.setAttribute(T, g), c.current = g;
}), c;
}
var ke$1 = () => {
let [i, a] = React.useState(), o = L(() => /* @__PURE__ */ new Map());
return k$1(() => {
o.current.forEach((i) => i()), o.current = /* @__PURE__ */ new Map();
}, [i]), (i, s) => {
o.current.set(i, s), a({});
};
};
function Me$1(i) {
let a = i.type;
return typeof a == "function" ? a(i.props) : "render" in a ? a.render(i.props) : i;
}
function B({ asChild: i, children: a }, o) {
return i && React.isValidElement(a) ? React.cloneElement(Me$1(a), { ref: a.ref }, o(a.props.children)) : o(a);
}
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: i,...a }) {
return /* @__PURE__ */ jsx(_e, {
"data-slot": "command",
className: cn("bg-popover text-popover-foreground flex size-full flex-col overflow-hidden rounded-md", i),
...a
});
}
function CommandDialog({ title: i = "Command Palette", description: a = "Search for a command to run...", children: o, className: s, showCloseButton: c = !0,...d }) {
return /* @__PURE__ */ jsxs(Dialog, {
...d,
children: [/* @__PURE__ */ jsxs(DialogHeader, {
className: "sr-only",
children: [/* @__PURE__ */ jsx(DialogTitle, { children: i }), /* @__PURE__ */ jsx(DialogDescription, { children: a })]
}), /* @__PURE__ */ jsx(DialogContent, {
className: cn("overflow-hidden p-0", s),
showCloseButton: c,
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: o
})
})]
});
}
function CommandInput({ className: i,...a }) {
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", i),
...a
})]
});
}
function CommandList({ className: i,...a }) {
return /* @__PURE__ */ jsx(_e.List, {
"data-slot": "command-list",
className: cn("max-h-[300px] scroll-py-1 overflow-y-auto overflow-x-hidden", i),
...a
});
}
function CommandEmpty({ ...i }) {
return /* @__PURE__ */ jsx(_e.Empty, {
"data-slot": "command-empty",
className: "py-6 text-center text-sm",
...i
});
}
function CommandGroup({ className: i,...a }) {
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", i),
...a
});
}
function CommandSeparator({ className: i,...a }) {
return /* @__PURE__ */ jsx(_e.Separator, {
"data-slot": "command-separator",
className: cn("bg-border -mx-1 h-px", i),
...a
});
}
function CommandItem({ className: i,...a }) {
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", i),
...a
});
}
function CommandShortcut({ className: i,...a }) {
return /* @__PURE__ */ jsx("span", {
"data-slot": "command-shortcut",
className: cn("text-muted-foreground ml-auto text-xs tracking-widest", i),
...a
});
}
function Command(i) {
let { endpoint: a, openAddCollectionDialog: o, addOperation: s, runActiveOperation: c, addTab: d, setActiveTab: f, tabs: g, preflight: b, env: x, plugins: S } = useLaboratory(), C = useLaboratory(), [w, E] = useState(i.open ?? !1);
return useEffect(() => {
E(i.open ?? !1);
}, [i.open]), useEffect(() => {
let a = (a) => {
if (a.key === "j" && (a.metaKey || a.ctrlKey)) {
a.preventDefault();
let o = !w;
E(o), i.onOpenChange?.(o);
}
};
return document.addEventListener("keydown", a), () => document.removeEventListener("keydown", a);
}, [w, i]), /* @__PURE__ */ jsx(Fragment$1, { children: /* @__PURE__ */ jsxs(CommandDialog, {
open: w,
onOpenChange: (a) => {
E(a), i.onOpenChange?.(a);
},
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: !a,
onSelect: () => {
c(a), E(!1);
},
children: [
/* @__PURE__ */ jsx(PlayIcon, {}),
/* @__PURE__ */ jsx("span", { children: "Run operation" }),
/* @__PURE__ */ jsx(CommandShortcut, { children: "⌘↵" })
]
}), /* @__PURE__ */ jsxs(CommandItem, {
onSelect: () => {
let i = s({
name: "",
query: "",
variables: "",
headers: "",
extensions: ""
}), a = d({
type: "operation",
data: i
});
f(a), E(!1);
},
children: [/* @__PURE__ */ jsx(FilePlus2Icon, {}), /* @__PURE__ */ jsx("span", { children: "Add operation" })]
})]
}),
/* @__PURE__ */ jsx(CommandSeparator, {}),
/* @__PURE__ */ jsx(CommandGroup, {
heading: "Collections",
children: /* @__PURE__ */ jsxs(CommandItem, {
onSelect: () => {
o?.(), E(!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 i = g.find((i) => i.type === "env") ?? d({
type: "env",
data: x ?? { variables: {} }
});
f(i), E(!1);
},
children: [/* @__PURE__ */ jsx(ServerIcon, {}), /* @__PURE__ */ jsx("span", { children: "Open Environment Variables" })]
}), /* @__PURE__ */ jsxs(CommandItem, {
onSelect: () => {
let i = g.find((i) => i.type === "preflight") ?? d({
type: "preflight",
data: b ?? { script: "" }
});
f(i), E(!1);
},
children: [/* @__PURE__ */ jsx(RefreshCcwIcon, {}), /* @__PURE__ */ jsx("span", { children: "Open Preflight Script" })]
})]
}),
S.filter((i) => !!i.commands?.length).map((i) => /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(CommandSeparator, {}), /* @__PURE__ */ jsx(CommandGroup, {
heading: i.name,
children: i.commands?.map((i, a) => /* @__PURE__ */ jsxs(CommandItem, {
onSelect: () => {
i.onClick(C, {}), E(!1);
},
children: [typeof i.icon == "function" ? i.icon(C, {}) : i.icon, /* @__PURE__ */ jsx("span", { children: typeof i.name == "function" ? i.name(C, {}) : i.name })]
}, a))
})] }, i.name))
] })]
}) });
}
var EMPTY = {
types: [],
fields: [],
enumValues: [],
hasMore: !1
};
const searchSchemaDocs = (i, a, o) => {
let s = a.trim().toLowerCase();
if (!i || !s) return EMPTY;
let c = o?.maxResults ?? 100, d = {
types: [],
fields: [],
enumValues: [],
hasMore: !1
}, f = 0, g = () => f >= c ? (d.hasMore = !0, !1) : (f++, !0);
for (let a of Object.values(i.getTypeMap())) if (!a.name.startsWith("__")) {
if (a.name.toLowerCase().includes(s)) {
if (!g()) return d;
d.types.push(a);
}
if (isObjectType(a) || isInterfaceType(a) || isInputObjectType(a)) {
for (let i of Object.values(a.getFields())) if (i.name.toLowerCase().includes(s)) {
if (!g()) return d;
d.fields.push({
typeName: a.name,
fieldName: i.name
});
}
continue;
}
if (isEnumType(a)) {
for (let i of a.getValues()) if (i.name.toLowerCase().includes(s)) {
if (!g()) return d;
d.enumValues.push({
typeName: a.name,
valueName: i.name
});
}
}
}
return d;
}, GraphQLType = (i) => i.type instanceof GraphQLNonNull ? /* @__PURE__ */ jsxs("span", { children: [/* @__PURE__ */ jsx(GraphQLType, { type: i.type.ofType }), /* @__PURE__ */ jsx("span", {
className: "text-muted-foreground!",
children: "!"
})] }) : i.type instanceof GraphQLList ? /* @__PURE__ */ jsxs("span", { children: [
/* @__PURE__ */ jsx("span", {
className: "text-muted-foreground!",
children: "["
}),
/* @__PURE__ */ jsx(GraphQLType, { type: i.type.ofType }),
/* @__PURE__ */ jsx("span", {
className: "text-muted-foreground!",
children: "]"
})
] }) : i.type instanceof GraphQLScalarType || i.type instanceof GraphQLEnumType ? /* @__PURE__ */ jsx("span", {
className: "text-teal-400",
children: i.type.name
}) : /* @__PURE__ */ jsx("span", {
className: "text-amber-400",
children: i.type.name
});
/*! @license DOMPurify 3.4.13 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.4.13/LICENSE */
function _arrayLikeToArray$1(i, a) {
(a == null || a > i.length) && (a = i.length);
for (var o = 0, s = Array(a); o < a; o++) s[o] = i[o];
return s;
}
function _arrayWithHoles$1(i) {
if (Array.isArray(i)) return i;
}
function _iterableToArrayLimit$1(i, a) {
var o = i == null ? null : typeof Symbol < "u" && i[Symbol.iterator] || i["@@iterator"];
if (o != null) {
var s, c, d, f, g = [], b = !0, x = !1;
try {
if (d = (o = o.call(i)).next, a !== 0) for (; !(b = (s = d.call(o)).done) && (g.push(s.value), g.length !== a); b = !0);
} catch (i) {
x = !0, c = i;
} finally {
try {
if (!b && o.return != null && (f = o.return(), Object(f) !== f)) return;
} finally {
if (x) throw c;
}
}
return g;
}
}
function _nonIterableRest$1() {
throw TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
}
function _slicedToArray$1(i, a) {
return _arrayWithHoles$1(i) || _iterableToArrayLimit$1(i, a) || _unsupportedIterableToArray$1(i, a) || _nonIterableRest$1();
}
function _unsupportedIterableToArray$1(i, a) {
if (i) {
if (typeof i == "string") return _arrayLikeToArray$1(i, a);
var o = {}.toString.call(i).slice(8, -1);
return o === "Object" && i.constructor && (o = i.constructor.name), o === "Map" || o === "Set" ? Array.from(i) : o === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o) ? _arrayLikeToArray$1(i, a) : void 0;
}
}
var entries = Object.entries, setPrototypeOf = Object.setPrototypeOf, isFrozen = Object.isFrozen, getPrototypeOf = Object.getPrototypeOf, getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor, freeze = Object.freeze, seal = Object.seal, create$2 = Object.create, _ref = typeof Reflect < "u" && Reflect, apply = _ref.apply, construct = _ref.construct;
freeze ||= function(i) {
return i;
}, seal ||= function(i) {
return i;
}, apply ||= function(i, a) {
var o = [...arguments].slice(2);
return i.apply(a, o);
}, construct ||= function(i) {
var a = [...arguments].slice(1);
return new i(...a);
};
var arrayForEach = unapply(Array.prototype.forEach), arrayLastIndexOf = unapply(Array.prototype.lastIndexOf), arrayPop = unapply(Array.prototype.pop), arrayPush = unapply(Array.prototype.push), arraySplice = unapply(Array.prototype.splice), arrayIsArray = Array.isArray, stringToLowerCase = unapply(String.prototype.toLowerCase), stringToString = unapply(String.prototype.toString), stringMatch = unapply(String.prototype.match), stringReplace = unapply(String.prototype.replace), stringIndexOf = unapply(String.prototype.indexOf), stringTrim = unapply(String.prototype.trim), numberToString = unapply(Number.prototype.toString), booleanToString = unapply(Boolean.prototype.toString), bigintToString = typeof BigInt > "u" ? null : unapply(BigInt.prototype.toString), symbolToString = typeof Symbol > "u" ? null : unapply(Symbol.prototype.toString), objectHasOwnProperty = unapply(Object.prototype.hasOwnProperty), objectToString = unapply(Object.prototype.toString), regExpTest = unapply(RegExp.prototype.test), typeErrorCreate = unconstruct(TypeError);
function unapply(i) {
return function(a) {
a instanceof RegExp && (a.lastIndex = 0);
var o = [...arguments].slice(1);
return apply(i, a, o);
};
}
function unconstruct(i) {
return function() {
return construct(i, [...arguments]);
};
}
function addToSet(i, a) {
let o = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : stringToLowerCase;
if (setPrototypeOf && setPrototypeOf(i, null), !arrayIsArray(a)) return i;
let s = a.length;
for (; s--;) {
let c = a[s];
if (typeof c == "string") {
let i = o(c);
i !== c && (isFrozen(a) || (a[s] = i), c = i);
}
i[c] = !0;
}
return i;
}
function cleanArray(i) {
for (let a = 0; a < i.length; a++) objectHasOwnProperty(i, a) || (i[a] = null);
return i;
}
function clone(i) {
let a = create$2(null);
for (let s of entries(i)) {
var o = _slicedToArray$1(s, 2);
let c = o[0], d = o[1];
objectHasOwnProperty(i, c) && (arrayIsArray(d) ? a[c] = cleanArray(d) : d && typeof d == "object" && d.constructor === Object ? a[c] = clone(d) : a[c] = d);
}
return a;
}
function stringifyValue(i) {
switch (typeof i) {
case "string": return i;
case "number": return numberToString(i);
case "boolean": return booleanToString(i);
case "bigint": return bigintToString ? bigintToString(i) : "0";
case "symbol": return symbolToString ? symbolToString(i) : "Symbol()";
case "undefined": return objectToString(i);
case "function":
case "object": {
if (i === null) return objectToString(i);
let a = i, o = lookupGetter(a, "toString");
if (typeof o == "function") {
let i = o(a);
return typeof i == "string" ? i : objectToString(i);
}
return objectToString(i);
}
default: return objectToString(i);
}
}
function lookupGetter(i, a) {
for (; i !== null;) {
let o = getOwnPropertyDescriptor(i, a);
if (o) {
if (o.get) return unapply(o.get);
if (typeof o.value == "function") return unapply(o.value);
}
i = getPrototypeOf(i);
}
function o() {
return null;
}
return o;
}
function isRegex(i) {
try {
return regExpTest(i, ""), !0;
} catch {
return !1;
}
}
var html$1 = freeze(/* @__PURE__ */ "a.abbr.acronym.address.area.article.aside.audio.b.bdi.bdo.big.blink.blockquote.body.br.button.canvas.caption.center.cite.code.col.colgroup.content.data.datalist.dd.decorator.del.details.dfn.dialog.dir.div.dl.dt.element.em.fieldset.figcaption.figure.font.footer.form.h1.h2.h3.h4.h5.h6.head.header.hgroup.hr.html.i.img.input.ins.kbd.label.legend.li.main.map.mark.marquee.menu.menuitem.meter.nav.nobr.ol.optgroup.option.output.p.picture.pre.progress.q.rp.rt.ruby.s.samp.search.section.select.shadow.slot.small.source.spacer.span.strike.strong.style.sub.summary.sup.table.tbody.td.template.textarea.tfoot.th.thead.time.tr.track.tt.u.ul.var.video.wbr".split(".")), svg$1 = freeze(/* @__PURE__ */ "svg.a.altglyph.altglyphdef.altglyphitem.animatecolor.animatemotion.animatetransform.circle.clippath.defs.desc.ellipse.enterkeyhint.exportparts.filter.font.g.glyph.glyphref.hkern.image.inputmode.line.lineargradient.marker.mask.metadata.mpath.part.path.pattern.polygon.polyline.radialgradient.rect.stop.style.switch.symbol.text.textpath.title.tref.tspan.view.vkern".split(".")), svgFilters = freeze([
"feBlend",
"feColorMatrix",
"feComponentTransfer",
"feComposite",
"feConvolveMatrix",
"feDiffuseLighting",
"feDisplacementMap",
"feDistantLight",
"feDropShadow",
"feFlood",
"feFuncA",
"feFuncB",
"feFuncG",
"feFuncR",
"feGaussianBlur",
"feImage",
"feMerge",
"feMergeNode",
"feMorphology",
"feOffset",
"fePointLight",
"feSpecularLighting",
"feSpotLight",
"feTile",
"feTurbulence"
]), svgDisallowed = freeze([
"animate",
"color-profile",
"cursor",
"discard",
"font-face",
"font-face-format",
"font-face-name",
"font-face-src",
"font-face-uri",
"foreignobject",
"hatch",
"hatchpath",
"mesh",
"meshgradient",
"meshpatch",
"meshrow",
"missing-glyph",
"script",
"set",
"solidcolor",
"unknown",
"use"
]), mathMl$1 = freeze(/* @__PURE__ */ "math.menclose.merror.mfenced.mfrac.mglyph.mi.mlabeledtr.mmultiscripts.mn.mo.mover.mpadded.mphantom.mroot.mrow.ms.mspace.msqrt.mstyle.msub.msup.msubsup.mtable.mtd.mtext.mtr.munder.munderover.mprescripts".split(".")), mathMlDisallowed = freeze([
"maction",
"maligngroup",
"malignmark",
"mlongdiv",
"mscarries",
"mscarry",
"msgroup",
"mstack",
"msline",
"msrow",
"semantics",
"annotation",
"annotation-xml",
"mprescripts",
"none"
]), text = freeze(["#text"]), html = freeze(/* @__PURE__ */ "accept.action.align.alt.autocapitalize.autocomplete.autopictureinpicture.autoplay.background.bgcolor.border.capture.cellpadding.cellspacing.checked.cite.class.clear.color.cols.colspan.command.commandfor.controls.controlslist.coords.crossorigin.datetime.decoding.default.dir.disabled.disablepictureinpicture.disableremoteplayback.download.draggable.enctype.enterkeyhint.exportparts.face.for.headers.height.hidden.high.href.hreflang.id.inert.inputmode.integrity.ismap.kind.label.lang.list.loading.loop.low.max.maxlength.media.method.min.minlength.multiple.muted.name.nonce.noshade.novalidate.nowrap.open.optimum.part.pattern.placeholder.playsinline.popover.popovertarget.popovertargetaction.poster.preload.pubdate.radiogroup.readonly.rel.required.rev.reversed.role.rows.rowspan.spellcheck.scope.selected.shape.size.sizes.slot.span.srclang.start.src.srcset.step.style.summary.tabindex.title.translate.type.usemap.valign.value.width.wrap.xmlns".split(".")), svg = freeze(/* @__PURE__ */ "accent-height.accumulate.additive.alignment-baseline.amplitude.ascent.attributename.attributetype.azimuth.basefrequency.baseline-shift.begin.bias.by.class.clip.clippathunits.clip-path.clip-rule.color.color-interpolation.color-interpolation-filters.color-profile.color-rendering.cx.cy.d.dx.dy.diffuseconstant.direction.display.divisor.dominant-baseline.dur.edgemode.elevation.end.exponent.fill.fill-opacity.fill-rule.filter.filterunits.flood-color.flood-opacity.font-family.font-size.font-size-adjust.font-stretch.font-style.font-variant.font-weight.fx.fy.g1.g2.glyph-name.glyphref.gradientunits.gradienttransform.height.href.id.image-rendering.in.in2.intercept.k.k1.k2.k3.k4.kerning.keypoints.keysplines.keytimes.lang.lengthadjust.letter-spacing.kernelmatrix.kernelunitlength.lighting-color.local.marker-end.marker-mid.marker-start.markerheight.markerunits.markerwidth.maskcontentunits.maskunits.max.mask.mask-type.media.method.mode.min.name.numoctaves.offset.operator.opacity.order.orient.orientation.origin.overflow.paint-order.path.pathlength.patterncontentunits.patterntransform.patternunits.points.preservealpha.preserveaspectratio.primitiveunits.r.rx.ry.radius.refx.refy.repeatcount.repeatdur.restart.result.rotate.scale.seed.shape-rendering.slope.specularconstant.specularexponent.spreadmethod.startoffset.stddeviation.stitchtiles.stop-color.stop-opacity.stroke-dasharray.stroke-dashoffset.stroke-linecap.stroke-linejoin.stroke-miterlimit.stroke-opacity.stroke.stroke-width.style.surfacescale.systemlanguage.tabindex.tablevalues.targetx.targety.transform.transform-origin.text-anchor.text-decoration.text-orientation.text-rendering.textlength.type.u1.u2.unicode.values.viewbox.visibility.version.vert-adv-y.vert-origin-x.vert-origin-y.width.word-spacing.wrap.writing-mode.xchannelselector.ychannelselector.x.x1.x2.xmlns.y.y1.y2.z.zoomandpan".split(".")), mathMl = freeze(/* @__PURE__ */ "accent.accentunder.align.bevelled.close.columnalign.columnlines.columnspacing.columnspan.denomalign.depth.dir.display.displaystyle.encoding.fence.frame.height.href.id.largeop.length.linethickness.lquote.lspace.mathbackground.mathcolor.mathsize.mathvariant.maxsize.minsize.movablelimits.notation.numalign.open.rowalign.rowlines.rowspacing.rowspan.rspace.rquote.scriptlevel.scriptminsize.scriptsizemultiplier.selection.separator.separators.stretchy.subscriptshift.supscriptshift.symmetric.voffset.width.xmlns".split(".")), xml = freeze([
"xlink:href",
"xml:id",
"xlink:title",
"xml:space",
"xmlns:xlink"
]), MUSTACHE_EXPR = seal(/{{[\w\W]*|^[\w\W]*}}/g), ERB_EXPR = seal(/<%[\w\W]*|^[\w\W]*%>/g), TMPLIT_EXPR = seal(/\${[\w\W]*/g), DATA_ATTR = seal(/^data-[\-\w.\u00B7-\uFFFF]+$/), ARIA_ATTR = seal(/^aria-[\-\w]+$/), IS_ALLOWED_URI = seal(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i), IS_SCRIPT_OR_DATA = seal(/^(?:\w+script|data):/i), ATTR_WHITESPACE = seal(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g), DOCTYPE_NAME = seal(/^html$/i), CUSTOM_ELEMENT = seal(/^[a-z][.\w]*(-[.\w]+)+$/i), ELEMENT_MARKUP_PROBE = seal(/<[/\w!]/g), COMMENT_MARKUP_PROBE = seal(/<[/\w]/g), FALLBACK_TAG_CLOSE = seal(/<\/no(script|embed|frames)/i), SELF_CLOSING_TAG = seal(/\/>/i), NODE_TYPE = {
element: 1,
attribute: 2,
text: 3,
cdataSection: 4,
entityReference: 5,
entityNode: 6,
processingInstruction: 7,
comment: 8,
document: 9,
documentType: 10,
documentFragment: 11,
notation: 12
}, getGlobal = function() {
return typeof window > "u" ? null : window;
}, _createTrustedTypesPolicy = function(i, a) {
if (typeof i != "object" || typeof i.createPolicy != "function") return null;
let o = null, s = "data-tt-policy-suffix";
a && a.hasAttribute(s) && (o = a.getAttribute(s));
let c = "dompurify" + (o ? "#" + o : "");
try {
return i.createPolicy(c, {
createHTML(i) {
return i;
},
createScriptURL(i) {
return i;
}
});
} catch {
return console.warn("TrustedTypes policy " + c + " could not be created."), null;
}
}, _createHooksMap = function() {
return {
afterSanitizeAttributes: [],
afterSanitizeElements: [],
afterSanitizeShadowDOM: [],
beforeSanitizeAttributes: [],
beforeSanitizeElements: [],
beforeSanitizeShadowDOM: [],
uponSanitizeAttribute: [],
uponSanitizeElement: [],
uponSanitizeShadowNode: []
};
}, _resolveSetOption = function(i, a, o, s) {
return objectHasOwnProperty(i, a) && arrayIsArray(i[a]) ? addToSet(s.base ? clone(s.base) : {}, i[a], s.transform) : o;
};
function createDOMPurify() {
let i = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : getGlobal(), a = (i) => createDOMPurify(i);
if (a.version = "3.4.13", a.removed = [], !i || !i.document || i.document.nodeType !== NODE_TYPE.document || !i.Element) return a.isSupported = !1, a;
let o = i.document, s = o, c = s.currentScript;
i.DocumentFragment;
let d = i.HTMLTemplateElement, f = i.Node, g = i.Element, b = i.NodeFilter;
i.NamedNodeMap === void 0 && (i.NamedNodeMap || i.MozNamedAttrMap), i.HTMLFormElement;
let x = i.DOMParser, S = i.trustedTypes, C = g.prototype, w = lookupGetter(C, "cloneNode"), E = lookupGetter(C, "remove"), O = lookupGetter(C, "nextSibling"), A = lookupGetter(C, "childNodes"), M = lookupGetter(C, "parentNode"), F = lookupGetter(C, "shadowRoot"), I = lookupGetter(C, "attributes"), R = f && f.prototype ? lookupGetter(f.prototype, "nodeType") : null, V = f && f.prototype ? lookupGetter(f.prototype, "nodeName") : null, rP = f && f.prototype ? lookupGetter(f.prototype, "ownerDocument") : null;
if (typeof d == "function") {
let i = o.createElement("template");
i.content && i.content.ownerDocument && (o = i.content.ownerDocument);
}
let iP, q = "", aP, oP = !1, sP = 0, cP = function() {
if (sP > 0) throw typeErrorCreate("A configured TRUSTED_TYPES_POLICY callback (createHTML or createScriptURL) must not call DOMPurify.sanitize, as that causes infinite recursion. Do not pass a policy whose callbacks wrap DOMPurify as TRUSTED_TYPES_POLICY; see the \"DOMPurify and Trusted Types\" section of the README.");
}, lP = function(i) {
cP(), sP++;
try {
return iP.createHTML(i);
} finally {
sP--;
}
}, uP = function(i) {
cP(), sP++;
try {
return iP.createScriptURL(i);
} finally {
sP--;
}
}, dP = function() {
return oP ||= (aP = _createTrustedTypesPolicy(S, c), !0), aP;
}, fP = o, pP = fP.implementation, mP = fP.createNodeIterator, hP = fP.createDocumentFragment, gP = fP.getElementsByTagName, _P = s.importNode, vP = _createHooksMap();
a.isSupported = typeof entries == "function" && typeof M == "function" && pP && pP.createHTMLDocument !== void 0;
let yP = MUSTACHE_EXPR, bP = ERB_EXPR, xP = TMPLIT_EXPR, SP = DATA_ATTR, CP = ARIA_ATTR, wP = IS_SCRIPT_OR_DATA, TP = ATTR_WHITESPACE, EP = CUSTOM_ELEMENT, DP = IS_ALLOWED_URI, OP = null, kP = addToSet({}, [
...html$1,
...svg$1,
...svgFilters,
...mathMl$1,
...text
]), AP = null, jP = addToSet({}, [
...html,
...svg,
...mathMl,
...xml
]), MP = Object.seal(create$2(null, {
tagNameCheck: {
writable: !0,
configurable: !1,
enumerable: !0,
value: null
},
attributeNameCheck: {
writable: !0,
configurable: !1,
enumerable: !0,
value: null
},
allowCustomizedBuiltInElements: {
writable: !0,
configurable: !1,
enumerable: !0,
value: !1
}
})), NP = null, PP = null, FP = Object.seal(create$2(null, {
tagCheck: {
writable: !0,
configurable: !1,
enumerable: !0,
value: null
},
attributeCheck: {
writable: !0,
configurable: !1,
enumerable: !0,
value: null
}
})), IP = !0, LP = !0, RP = !1, zP = !0, BP = !1, VP = !0, HP = !1, UP = !1, WP = null, GP = null, KP = !1, qP = !1, JP = !1, YP = !1, XP = !0, ZP = !1, QP = "user-content-", $P = !0, eF = !1, tF = {}, nF = null, rF = addToSet({}, /* @__PURE__ */ "annotation-xml.audio.colgroup.desc.foreignobject.head.iframe.math.mi.mn.mo.ms.mtext.noembed.noframes.noscript.plaintext.script.selectedcontent.style.svg.template.thead.title.video.xmp".split(".")), iF = null, aF = addToSet({}, [
"audio",
"video",
"img",
"source",
"image",
"track"
]), oF = null, sF = addToSet({}, [
"alt",
"class",
"for",
"id",
"label",
"name",
"pattern",
"placeholder",
"role",
"summary",
"title",
"value",
"style",
"xmlns"
]), cF = "http://www.w3.org/1998/Math/MathML", lF = "http://www.w3.org/2000/svg", uF = "http://www.w3.org/1999/xhtml", dF = uF, fF = !1, pF = null, mF = addToSet({}, [
cF,
lF,
uF
], stringToString), hF = freeze([
"mi",
"mo",
"mn",
"ms",
"mtext"
]), gF = addToSet({}, hF), _F = freeze(["annotation-xml"]), vF = addToSet({}, _F), yF = addToSet({}, [
"title",
"style",
"font",
"a",
"script"
]), bF = null, xF = ["application/xhtml+xml", "text/html"], SF = null, CF = null, wF = o.createElement("form"), TF = function(i) {
return i instanceof RegExp || i instanceof Function;
}, EF = function() {
let i = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
if (CF && CF === i) return;
(!i || typeof i != "object") && (i = {}), i = clone(i), bF = xF.indexOf(i.PARSER_MEDIA_TYPE) === -1 ? "text/html" : i.PARSER_MEDIA_TYPE, SF = bF === "application/xhtml+xml" ? stringToString : stringToLowerCase, OP = _resolveSetOption(i, "ALLOWED_TAGS", kP, { transform: SF }), AP = _resolveSetOption(i, "ALLOWED_ATTR", jP, { transform: SF }), pF = _resolveSetOption(i, "ALLOWED_NAMESPACES", mF, { transform: stringToString }), oF = _resolveSetOption(i, "ADD_URI_SAFE_ATTR", sF, {
transform: SF,
base: sF
}), iF = _resolveSetOption(i, "ADD_DATA_URI_TAGS", aF, {
transform: SF,
base: aF
}), nF = _resolveSetOption(i, "FORBID_CONTENTS", rF, { transform: SF }), NP = _resolveSetOption(i, "FORBID_TAGS", clone({}), { transform: SF }), PP = _resolveSetOption(i, "FORBID_ATTR", clone({}), { transform: SF }), tF = objectHasOwnProperty(i, "USE_PROFILES") ? i.USE_PROFILES && typeof i.USE_PROFILES == "object" ? clone(i.USE_PROFILES) : i.USE_PROFILES : !1, IP = i.ALLOW_ARIA_ATTR !== !1, LP = i.ALLOW_DATA_ATTR !== !1, RP = i.ALLOW_UNKNOWN_PROTOCOLS || !1, zP = i.ALLOW_SELF_CLOSE_IN_ATTR !== !1, BP = i.SAFE_FOR_TEMPLATES || !1, VP = i.SAFE_FOR_XML !== !1, HP = i.WHOLE_DOCUMENT || !1, qP = i.RETURN_DOM || !1, JP = i.RETURN_DOM_FRAGMENT || !1, YP = i.RETURN_TRUSTED_TYPE || !1, KP = i.FORCE_BODY || !1, XP = i.SANITIZE_DOM !== !1, ZP = i.SANITIZE_NAMED_PROPS || !1, $P = i.KEEP_CONTENT !== !1, eF = i.IN_PLACE || !1, DP = isRegex(i.ALLOWED_URI_REGEXP) ? i.ALLOWED_URI_REGEXP : IS_ALLOWED_URI, dF = typeof i.NAMESPACE == "string" ? i.NAMESPACE : uF, gF = objectHasOwnProperty(i, "MATHML_TEXT_INTEGRATION_POINTS") && i.MATHML_TEXT_INTEGRATION_POINTS && typeof i.MATHML_TEXT_INTEGRATION_POINTS == "object" ? clone(i.MATHML_TEXT_INTEGRATION_POINTS) : addToSet({}, hF), vF = objectHasOwnProperty(i, "HTML_INTEGRATION_POINTS") && i.HTML_INTEGRATION_POINTS && typeof i.HTML_INTEGRATION_POINTS == "object" ? clone(i.HTML_INTEGRATION_POINTS) : addToSet({}, _F);
let a = objectHasOwnProperty(i, "CUSTOM_ELEMENT_HANDLING") && i.CUSTOM_ELEMENT_HANDLING && typeof i.CUSTOM_ELEMENT_HANDLING == "object" ? clone(i.CUSTOM_ELEMENT_HANDLING) : create$2(null);
if (MP = create$2(null), objectHasOwnProperty(a, "tagNameCheck") && TF(a.tagNameCheck) && (MP.tagNameCheck = a.tagNameCheck), objectHasOwnProperty(a, "attributeNameCheck") && TF(a.attributeNameCheck) && (MP.attributeNameCheck = a.attributeNameCheck), objectHasOwnProperty(a, "allowCustomizedBuiltInElements") && typeof a.allowCustomizedBuiltInElements == "boolean" && (MP.allowCustomizedBuiltInElements = a.allowCustomizedBuiltInElements), seal(MP), BP && (LP = !1), JP && (qP = !0), tF && (OP = addToSet({}, text), AP = create$2(null), tF.html === !0 && (addToSet(OP, html$1), addToSet(AP, html)), tF.svg === !0 && (addToSet(OP, svg$1), addToSet(AP, svg), addToSet(AP, xml)), tF.svgFilters === !0 && (addToSet(OP, svgFilters), addToSet(AP, svg), addToSet(AP, xml)), tF.mathMl === !0 && (addToSet(OP, mathMl$1), addToSet(AP, mathMl), addToSet(AP, xml))), FP.tagCheck = null, FP.attributeCheck = null, objectHasOwnProperty(i, "ADD_TAGS") && (typeof i.ADD_TAGS == "function" ? FP.tagCheck = i.ADD_TAGS : arrayIsArray(i.ADD_TAGS) && (OP === kP && (OP = clone(OP)), addToSet(OP, i.ADD_TAGS, SF))), objectHasOwnProperty(i, "ADD_ATTR") && (typeof i.ADD_ATTR == "function" ? FP.attributeCheck = i.ADD_ATTR : arrayIsArray(i.ADD_ATTR) && (AP === jP && (AP = clone(AP)), addToSet(AP, i.ADD_ATTR, SF))), objectHasOwnProperty(i, "ADD_URI_SAFE_ATTR") && arrayIsArray(i.ADD_URI_SAFE_ATTR) && addToSet(oF, i.ADD_URI_SAFE_ATTR, SF), objectHasOwnProperty(i, "FORBID_CONTENTS") && arrayIsArray(i.FORBID_CONTENTS) && (nF === rF && (nF = clone(nF)), addToSet(nF, i.FORBID_CONTENTS, SF)), objectHasOwnProperty(i, "ADD_FORBID_CONTENTS") && arrayIsArray(i.ADD_FORBID_CONTENTS) && (nF === rF && (nF = clone(nF)), addToSet(nF, i.ADD_FORBID_CONTENTS, SF)), $P && (OP["#text"] = !0), HP && addToSet(OP, [
"html",
"head",
"body"
]), OP.table && (addToSet(OP, ["tbody"]), delete NP.tbody), i.TRUSTED_TYPES_POLICY) {
if (typeof i.TRUSTED_TYPES_POLICY.createHTML != "function") throw typeErrorCreate("TRUSTED_TYPES_POLICY configuration option must provide a \"createHTML\" hook.");
if (typeof i.TRUSTED_TYPES_POLICY.createScriptURL != "function") throw typeErrorCreate("TRUSTED_TYPES_POLICY configuration option must provide a \"createScriptURL\" hook.");
let a = iP;
iP = i.TRUSTED_TYPES_POLICY;
try {
q = lP("");
} catch (i) {
throw iP = a, i;
}
} else i.TRUSTED_TYPES_POLICY === null ? (iP = void 0, q = "") : (iP === void 0 && (iP = dP()), iP && typeof q == "string" && (q = lP("")));
freeze && freeze(i), CF = i;
}, DF = addToSet({}, [
...svg$1,
...svgFilters,
...svgDisallowed
]), OF = addToSet({}, [...mathMl$1, ...mathMlDisallowed]), kF = function(i, a, o) {
return a.namespaceURI === uF ? i === "svg" : a.namespaceURI === cF ? i === "svg" && (o === "annotation-xml" || gF[o]) : !!DF[i];
}, AF = function(i, a, o) {
return a.namespaceURI === uF ? i === "math" : a.namespaceURI === lF ? i === "math" && vF[o] : !!OF[i];
}, jF = function(i, a, o) {
return a.namespaceURI === lF && !vF[o] || a.namespaceURI === cF && !gF[o] ? !1 : !OF[i] && (yF[i] || !DF[i]);
}, MF = function(i) {
let a = M(i);
(!a || !a.tagName) && (a = {
namespaceURI: dF,
tagName: "template"
});
let o = stringToLowerCase(i.tagName), s = stringToLowerCase(a.tagName);
return pF[i.namespaceURI] ? i.namespaceURI === lF ? kF(o, a, s) : i.namespaceURI === cF ? AF(o, a, s) : i.namespaceURI === uF ? jF(o, a, s) : !!(bF === "application/xhtml+xml" && pF[i.namespaceURI]) : !1;
}, NF = function(i) {
arrayPush(a.removed, { element: i });
try {
M(i).removeChild(i);
} catch {
if (E(i), !M(i)) throw typeErrorCreate("a node selected for removal could not be detached from its tree and cannot be safely returned; refusing to sanitize in place");
}
}, PF = function(i) {
LF(i);
let a = A(i);
if (a) {
let i = [];
arrayForEach(a, (a) => {
arrayPush(i, a);
}), arrayForEach(i, (i) => {
try {
E(i);
} catch {}
});
}
let o = I(i);
if (o) for (let a = o.length - 1; a >= 0; --a) {
let s = o[a], c = s && s.name;
if (typeof c == "string") try {
i.removeAttribute(c);
} catch {}
}
}, FF = function(i, o) {
try {
arrayPush(a.removed, {
attribute: o.getAttributeNode(i),
from: o
});
} catch {
arrayPush(a.removed, {
attribute: null,
from: o
});
}
if (o.removeAttribute(i), i === "is") if (qP || JP) try {
NF(o);
} catch {}
else try {
o.setAttribute(i, "");
} catch {}
}, IF = function(i) {
let a = I(i);
if (a) for (let o = a.length - 1; o >= 0; --o) {
let s = a[o], c = s && s.name;
if (!(typeof c != "string" || AP[SF(c)])) try {
i.removeAttribute(c);
} catch {}
}
}, LF = function(i) {
let a = [i];
for (; a.length > 0;) {
let i = a.pop();
(R ? R(i) : i.nodeType) === NODE_TYPE.element && IF(i);
let o = A(i);
if (o) for (let i = o.length - 1; i >= 0; --i) a.push(o[i]);
}
}, RF = function(i) {
if (!VP) return;
let a = [i];
for (; a.length > 0;) {
let i = a.pop(), o = R ? R(i) : i.nodeType;
if (o === NODE_TYPE.processingInstruction || o === NODE_TYPE.comment && regExpTest(COMMENT_MARKUP_PROBE, i.data)) {
try {
E(i);
} catch {}
continue;
}
if (o === NODE_TYPE.element) {
let a = i, o = SF(V ? V(i) : i.nodeName);
try {
a.hasAttribute && a.hasAttribute("patchsrc") && a.removeAttribute("patchsrc"), a.hasAttribute && a.hasAttribute("for") && o !== "label" && o !== "output" && a.removeAttribute("for");
} catch {}
}
let s = A(i);
if (s) for (let i = s.length - 1; i >= 0; --i) a.push(s[i]);
}
}, zF = function(i) {
let a = null, s = null;
if (KP) i = "<remove></remove>" + i;
else {
let a = stringMatch(i, /^[\r\n\t ]+/);
s = a && a[0];
}
bF === "application/xhtml+xml" && dF === uF && (i = "<html xmlns=\"http://www.w3.org/1999/xhtml\"><head></head><body>" + i + "</body></html>");
let c = iP ? lP(i) : i;
if (dF === uF) try {
a = new x().parseFromString(c, bF);
} catch {}
if (!a || !a.documentElement) {
a = pP.createDocument(dF, "template", null);
try {
a.documentElement.innerHTML = fF ? q : c;
} catch {}
}
let d = a.body || a.documentElement;
return i && s && d.insertBefore(o.createTextNode(s), d.childNodes[0] || null), dF === uF ? gP.call(a, HP ? "html" : "body")[0] : HP ? a.documentElement : d;
}, BF = function(i) {
let a = rP ? rP(i) : i.ownerDocument;
return mP.call(a || i, i, b.SHOW_ELEMENT | b.SHOW_COMMENT | b.SHOW_TEXT | b.SHOW_PROCESSING_INSTRUCTION | b.SHOW_CDATA_SECTION, null);
}, VF = function(i) {
return i = stringReplace(i, yP, " "), i = stringReplace(i, bP, " "), i = stringReplace(i, xP, " "), i;
}, HF = function(i) {
i.normalize();
let a = rP ? rP(i) : i.ownerDocument, o = mP.call(a || i, i, b.SHOW_TEXT | b.SHOW_COMMENT | b.SHOW_CDATA_SECTION | b.SHOW_PROCESSING_INSTRUCTION, null), s = o.nextNode();
for (; s;) s.data = VF(s.data), s = o.nextNode();
let c = i.querySelectorAll?.call(i, "template");
c && arrayForEach(c, (i) => {
WF(i.content) && HF(i.content);
});
}, UF = function(i) {
let a = V ? V(i) : null;
return typeof a != "string" || SF(a) !== "form" ? !1 : typeof i.nodeName != "string" || typeof i.textContent != "string" || typeof i.removeChild != "function" || i.attributes !== I(i) || typeof i.removeAttribute != "function" || typeof i.setAttribute != "function" || typeof i.namespaceURI != "string" || typeof i.insertBefore != "function" || typeof i.hasChildNodes != "function" || i.nodeType !== R(i) || i.childNodes !== A(i);
}, WF = function(i) {
if (!R || typeof i != "object" || !i) return !1;
try {
return R(i) === NODE_TYPE.documentFragment;
} catch {
return !1;
}
}, GF = function(i) {
if (!R || typeof i != "object" || !i) return !1;
try {
return typeof R(i) == "number";
} catch {
return !1;
}
};
function KF(i, o, s) {
i.length !== 0 && arrayForEach(i, (i) => {
i.call(a, o, s, CF);
});
}
let qF = function(i, a) {
return !!(VP && i.hasChildNodes() && !GF(i.firstElementChild) && regExpTest(ELEMENT_MARKUP_PROBE, i.textContent) && regExpTest(ELEMENT_MARKUP_PROBE, i.innerHTML) || VP && i.namespaceURI === uF && a === "style" && GF(i.firstElementChild) || i.nodeType === NODE_TYPE.processingInstruction || VP && i.nodeType === NODE_TYPE.comment && regExpTest(COMMENT_MARKUP_PROBE, i.data));
}, JF = function(i, a, o) {
if (!NP[a] && $F(a) && (MP.tagNameCheck instanceof RegExp && regExpTest(MP.tagNameCheck, a) || MP.tagNameCheck instanceof Function && MP.tagNameCheck(a))) return !1;
if ($P && !nF[a]) {
let a = M(i), s = A(i);
if (s && a) {
let c = s.length;
for (let d = c - 1; d >= 0; --d) {
let c = i === o ? w(s[d], !0) : s[d];
a.insertBefore(c, O(i));
}
}
}
return NF(i), !0;
}, YF = function(i, a, o, s) {
return i.length === 0 ? a : a === o || a === s ? clone(a) : a;
}, XF = function(i, o) {
if (KF(vP.beforeSanitizeElements, i, null), i !== o && M(i) === null) return eF && LF(i), !0;
if (UF(i)) return NF(i), !0;
let s = SF(V ? V(i) : i.nodeName);
if (OP = YF(vP.uponSanitizeElement, OP, kP, WP), KF(vP.uponSanitizeElement, i, {
tagName: s,
allowedTags: OP
}), i !== o && M(i) === null) return eF && LF(i), !0;
if (qF(i, s)) return NF(i), !0;
if (NP[s] || !(FP.tagCheck instanceof Function && FP.tagCheck(s)) && !OP[s]) {
let a = JF(i, s, o);
return a === !1 && KF(vP.afterSanitizeElements, i, null), a;
}
if ((R ? R(i) : i.nodeType) === NODE_TYPE.element && !MF(i) || (s === "noscript" || s === "noembed" || s === "noframes") && regExpTest(FALLBACK_TAG_CLOSE, i.innerHTML)) return NF(i), !0;
if (BP && i.nodeType === NODE_TYPE.text) {
let o = VF(i.textContent);
i.textContent !== o && (arrayPush(a.removed, { element: i.cloneNode() }), i.textContent = o);
}
return KF(vP.afterSanitizeElements, i, null), !1;
}, ZF = function(i, a, s) {
if (PP[a] || VP && a === "patchsrc" || VP && a === "for" && i !== "label" && i !== "output" || XP && (a === "id" || a === "name") && (s in o || s in wF)) return !1;
let c = AP[a] || FP.attributeCheck instanceof Function && FP.attributeCheck(a, i);
if (!(LP && regExpTest(SP, a)) && !(IP && regExpTest(CP, a))) {
if (c) {
if (!oF[a] && !regExpTest(DP, stringReplace(s, TP, "")) && !((a === "src" || a === "xlink:href" || a === "href") && i !== "script" && stringIndexOf(s, "data:") === 0 && iF[i]) && !(RP && !regExpTest(wP, stringReplace(s, TP, ""))) && s) return !1;
} else if (!($F(i) && (MP.tagNameCheck instanceof RegExp && regExpTest(MP.tagNameCheck, i) || MP.tagNameCheck instanceof Function && MP.tagNameCheck(i)) && (MP.attributeNameCheck instanceof RegExp && regExpTest(MP.attributeNameCheck, a) || MP.attributeNameCheck instanceof Function && MP.attributeNameCheck(a, i)) || a === "is" && MP.allowCustomizedBuiltInElements && (MP.tagNameCheck instanceof RegExp && regExpTest(MP.tagNameCheck, s) || MP.tagNameCheck instanceof Function && MP.tagNameCheck(s)))) return !1;
}
return !0;
}, QF = addToSet({}, [
"annotation-xml",
"color-profile",
"font-face",
"font-face-format",
"font-face-name",
"font-face-src",
"font-face-uri",
"missing-glyph"
]), $F = function(i) {
return !QF[stringToLowerCase(i)] && regExpTest(EP, i);
}, eI = function(i, a, o, s) {
if (iP && typeof S == "object" && typeof S.getAttributeType == "function" && !o) switch (S.getAttributeType(i, a)) {
case "TrustedHTML": return lP(s);
case "TrustedScriptURL": return uP(s);
}
return s;
}, tI = function(i, o, s, c) {
try {
s ? i.setAttributeNS(s, o, c) : i.setAttribute(o, c), UF(i) ? NF(i) : arrayPop(a.removed);
} catch {
FF(o, i);
}
}, nI = function(i) {
KF(vP.beforeSanitizeAttributes, i, null);
let a = i.attributes;
if (!a || UF(i)) return;
AP = YF(vP.uponSanitizeAttribute, AP, jP, GP);
let o = {
attrName: "",
attrValue: "",
keepAttr: !0,
allowedAttributes: AP,
forceKeepAttr: void 0
}, s = a.length, c = SF(i.nodeName);
for (; s--;) {
let d = a[s], f = d.name, g = d.namespaceURI, b = d.value, x = SF(f), S = b, C = f === "value" ? S : stringTrim(S);
if (o.attrName = x, o.attrValue = C, o.keepAttr = !0, o.forceKeepAttr = void 0, KF(vP.uponSanitizeAttribute, i, o), C = o.attrValue, ZP && (x === "id" || x === "name") && stringIndexOf(C, QP) !== 0 && (FF(f, i), C = QP + C), VP && regExpTest(/((--!?|])>)|<\/(style|script|title|xmp|textarea|noscript|iframe|noembed|noframes)/i, C)) {
FF(f, i);
continue;
}
if (x === "attributename" && stringMatch(C, "href")) {
FF(f, i);
continue;
}
if (!o.forceKeepAttr) {
if (!o.keepAttr) {
FF(f, i);
continue;
}
if (!zP && regExpTest(SELF_CLOSING_TAG, C)) {
FF(f, i);
continue;
}
if (BP && (C = VF(C)), !ZF(c, x, C)) {
FF(f, i);
continue;
}
C = eI(c, x, g, C), C !== S && tI(i, f, g, C);
}
}
KF(vP.afterSanitizeAttributes, i, null);
}, rI = function(i) {
let a = null, o = BF(i);
for (KF(vP.beforeSanitizeShadowDOM, i, null); a = o.nextNode();) if (KF(vP.uponSanitizeShadowNode, a, null), XF(a, i), nI(a), WF(a.content) && rI(a.content), (R ? R(a) : a.nodeType) === NODE_TYPE.element) {
let i = F(a);
WF(i) && (iI(i), rI(i));
}
KF(vP.afterSanitizeShadowDOM, i, null);
}, iI = function(i) {
let a = [{
node: i,
shadow: null
}];
for (; a.length > 0;) {
let i = a.pop();
if (i.shadow) {
rI(i.shadow);
continue;
}
let o = i.node, s = (R ? R(o) : o.nodeType) === NODE_TYPE.element, c = A(o);
if (c) for (let i = c.length - 1; i >= 0; --i) a.push({
node: c[i],
shadow: null
});
if (s) {
let i = V ? V(o) : null;
if (typeof i == "string" && SF(i) === "template") {
let i = o.content;
WF(i) && a.push({
node: i,
shadow: null
});
}
}
if (s) {
let i = F(o);
WF(i) && a.push({
node: null,
shadow: i
}, {
node: i,
shadow: null
});
}
}
};
return a.sanitize = function(i) {
let o = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}, c = null, d = null, f = null, g = null;
if (fF = !i, fF && (i = "<!-->"), typeof i != "string" && !GF(i) && (i = stringifyValue(i), typeof i != "string")) throw typeErrorCreate("dirty is not a string, aborting");
if (!a.isSupported) return i;
UP ? (OP = WP, AP = GP) : EF(o), (vP.uponSanitizeElement.length > 0 || vP.uponSanitizeAttribute.length > 0) && (OP = clone(OP)), vP.uponSanitizeAttribute.length > 0 && (AP = clone(AP)), a.removed = [];
let b = eF && typeof i != "string" && GF(i);
if (b) {
RF(i);
let a = V ? V(i) : i.nodeName;
if (typeof a == "string") {
let o = SF(a);
if (!OP[o] || NP[o]) throw PF(i), typeErrorCreate("root node is forbidden and cannot be sanitized in-place");
}
if (UF(i)) throw PF(i), typeErrorCreate("root node is clobbered and cannot be sanitized in-place");
try {
iI(i);
} catch (a) {
throw PF(i), a;
}
} else if (GF(i)) c = zF("<!---->"), d = c.ownerDocument.importNode(i, !0), d.nodeType === NODE_TYPE.element && d.nodeName === "BODY" || d.nodeName === "HTML" ? c = d : c.appendChild(d), iI(d);
else {
if (!qP && !BP && !HP && i.indexOf("<") === -1) return iP && YP ? lP(i) : i;
if (c = zF(i), !c) return qP ? null : YP ? q : "";
}
c && KP && NF(c.firstChild);
let x = b ? i : c;
try {
let i = BF(x);
for (; f = i.nextNode();) XF(f, x), nI(f), WF(f.content) && rI(f.content);
} catch (o) {
throw b && (PF(i), arrayForEach(a.removed, (i) => {
i.element && LF(i.element);
})), o;
}
if (b) return arrayForEach(a.removed, (i) => {
i.element && LF(i.element);
}), BP && HF(i), i;
if (qP) {
if (BP && HF(c), JP) for (g = hP.call(c.ownerDocument); c.firstChild;) g.appendChild(c.firstChild);
else g = c;
return (AP.shadowroot || AP.shadowrootmode) && (g = _P.call(s, g, !0)), g;
}
let S = HP ? c.outerHTML : c.innerHTML;
return HP && OP["!doctype"] && c.ownerDocument && c.ownerDocument.doctype && c.ownerDocument.doctype.name && regExpTest(DOCTYPE_NAME, c.ownerDocument.doctype.name) && (S = "<!DOCTYPE " + c.ownerDocument.doctype.name + ">\n" + S), BP && (S = VF(S)), iP && YP ? lP(S) : S;
}, a.setConfig = function() {
let i = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
EF(i), UP = !0, WP = OP, GP = AP;
}, a.clearConfig = function() {
CF = null, UP = !1, WP = null, GP = null, iP = aP, q = "";
}, a.isValidAttribute = function(i, a, o) {
CF || EF({});
let s = SF(i), c = SF(a);
return ZF(s, c, o);
}, a.addHook = function(i, a) {
typeof a == "function" && objectHasOwnProperty(vP, i) && arrayPush(vP[i], a);
}, a.removeHook = function(i, a) {
if (objectHasOwnProperty(vP, i)) {
if (a !== void 0) {
let o = arrayLastIndexOf(vP[i], a);
return o === -1 ? void 0 : arraySplice(vP[i], o, 1)[0];
}
return arrayPop(vP[i]);
}
}, a.removeHooks = function(i) {
objectHasOwnProperty(vP, i) && (vP[i] = []);
}, a.removeAllHooks = function() {
vP = _createHooksMap();
}, a;
}
var purify = createDOMPurify(), e = {
"": ["<em>", "</em>"],
_: ["<strong>", "</strong>"],
"*": ["<strong>", "</strong>"],
"~": ["<s>", "</s>"],
"\n": ["<br />"],
" ": ["<br />"],
"-": ["<hr />"]
};
function n(i) {
return i.replace(RegExp("^" + (i.match(/^(\t| )+/) || "")[0], "gm"), "");
}
function r(i) {
return (i + "").replace(/"/g, """).replace(/</g, "<").replace(/>/g, ">");
}
function t(i, a) {
var o, s, c, d, f, g = /((?:^|\n+)(?:\n---+|\* \*(?: \*)+)\n)|(?:^``` *(\w*)\n([\s\S]*?)\n```$)|((?:(?:^|\n+)(?:\t| {2,}).+)+\n*)|((?:(?:^|\n)([>*+-]|\d+\.)\s+.*)+)|(?:!\[([^\]]*?)\]\(([^)]+?)\))|(\[)|(\](?:\(([^)]+?)\))?)|(?:(?:^|\n+)([^\s].*)\n(-{3,}|={3,})(?:\n+|$))|(?:(?:^|\n+)(#{1,6})\s*(.+)(?:\n+|$))|(?:`([^`].*?)`)|( \n\n*|\n{2,}|__|\*\*|[_*]|~~)/gm, b = [], x = "", S = a || {}, C = 0;
function w(i) {
var a = e[i[1] || ""], o = b[b.length - 1] == i;
return a ? a[1] ? (o ? b.pop() : b.push(i), a[0 | o]) : a[0] : i;
}
function E() {
for (var i = ""; b.length;) i += w(b[b.length - 1]);
return i;
}
for (i = i.replace(/^\[(.+?)\]:\s*(.+)$/gm, function(i, a, o) {
return S[a.toLowerCase()] = o, "";
}).replace(/^\n+|\n+$/g, ""); c = g.exec(i);) s = i.substring(C, c.index), C = g.lastIndex, o = c[0], s.match(/[^\\](\\\\)*\\$/) || ((f = c[3] || c[4]) ? o = "<pre class=\"code " + (c[4] ? "poetry" : c[2].toLowerCase()) + "\"><code" + (c[2] ? " class=\"language-" + c[2].toLowerCase() + "\"" : "") + ">" + n(r(f).replace(/^\n+|\n+$/g, "")) + "</code></pre>" : (f = c[6]) ? (f.match(/\./) && (c[5] = c[5].replace(/^\d+/gm, "")), d = t(n(c[5].replace(/^\s*[>*+.-]/gm, ""))), f == ">" ? f = "blockquote" : (f = f.match(/\./) ? "ol" : "ul", d = d.replace(/^(.*)(\n|$)/gm, "<li>$1</li>")), o = "<" + f + ">" + d + "</" + f + ">") : c[8] ? o = "<img src=\"" + r(c[8]) + "\" alt=\"" + r(c[7]) + "\">" : c[10] ? (x = x.replace("<a>", "<a href=\"" + r(c[11] || S[s.toLowerCase()]) + "\">"), o = E() + "</a>") : c[9] ? o = "<a>" : c[12] || c[14] ? o = "<" + (f = "h" + (c[14] ? c[14].length : c[13] > "=" ? 1 : 2)) + ">" + t(c[12] || c[15], S) + "</" + f + ">" : c[16] ? o = "<code>" + r(c[16]) + "</code>" : (c[17] || c[1]) && (o = w(c[17] || "--"))), x += s, x += o;
return (x + i.substring(C) + E()).replace(/^\n+|\n+$/g, "");
}
var ALLOWED_TAGS = [
"p",
"a",
"code",
"pre",
"strong",
"em",
"ul",
"ol",
"li",
"blockquote",
"br"
], hooked = !1, addLinkHardeningHook = () => {
hooked || (hooked = !0, purify.addHook("afterSanitizeAttributes", (i) => {
i.tagName === "A" && (i.setAttribute("rel", "noopener noreferrer"), i.setAttribute("target", "_blank"));
}));
};
const Markdown = (i) => {
let a = useMemo(() => (addLinkHardeningHook(), purify.sanitize(t(i.content), {
ALLOWED_TAGS,
ALLOWED_ATTR: ["href", "title"]
})), [i.content]);
return /* @__PURE__ */ jsx("div", {
"data-slot": "markdown",
className: cn("text-muted-foreground [&_a]:text-primary text-xs leading-relaxed [&_a]:underline [&_code]:rounded [&_code]:bg-black/20 [&_code]:px-1 [&_code]:py-0.5", i.className),
dangerouslySetInnerHTML: { __html: a }
});
};
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: i, variant: a, asChild: o = !1,...s }) {
return /* @__PURE__ */ jsx(o ? Slot : "span", {
"data-slot": "badge",
className: cn(badgeVariants({ variant: a }), i),
...s
});
}
var namedTypeOf = (i) => {
let a = i;
for (; a && "ofType" in a && a.ofType;) a = a.ofType;
return a ?? null;
}, Section = (i) => /* @__PURE__ */ jsxs("div", {
className: "flex flex-col gap-1",
children: [/* @__PURE__ */ jsx("div", {
className: "text-muted-foreground px-2 pt-2 text-[11px] font-medium uppercase tracking-wide",
children: i.title
}), i.children]
}), Description = (i) => i.description ? /* @__PURE__ */ jsx(Markdown, {
className: "px-2 py-1",
content: i.description
}) : null, DeprecationBadge = (i) => /* @__PURE__ */ jsxs("div", {
className: "flex flex-col gap-1 px-2 py-1",
children: [/* @__PURE__ */ jsx(Badge, {
variant: "outline",
className: "text-muted-foreground w-fit",
children: "Deprecated"
}), i.reason ? /* @__PURE__ */ jsx(Markdown, { content: i.reason }) : null]
}), Row = (i) => /* @__PURE__ */ jsx(Button, {
variant: "ghost",
size: "sm",
onClick: i.onClick,
className: cn("w-full justify-start px-2 text-xs font-normal", i.className),
children: i.children
}), FieldRow = (i) => /* @__PURE__ */ jsxs(Button, {
variant: "ghost",
size: "sm",
onClick: i.onClick,
className: "h-auto w-full flex-col items-start gap-0.5 px-2 py-1.5 text-xs font-normal",
children: [/* @__PURE__ */ jsxs("div", {
className: "flex w-full items-center gap-1",
children: [
/* @__PURE__ */ jsx("span", {
className: "text-rose-400",
children: i.name
}),
/* @__PURE__ */ jsx("span", {
className: "text-muted-foreground",
children: ":"
}),
/* @__PURE__ */ jsx(GraphQLType, { type: i.type }),
i.isDeprecated ? /* @__PURE__ */ jsx(Badge, {
variant: "outline",
className: "text-muted-foreground ml-auto",
children: "Deprecated"
}) : null
]
}), i.description ? /* @__PURE__ */ jsx("span", {
className: "text-muted-foreground line-clamp-2 whitespace-normal text-left",
children: i.description
}) : null]
}), TypeRow = (i) => {
let a = namedTypeOf(i.type);
return /* @__PURE__ */ jsx("button", {
type: "button",
className: "cursor-pointer",
onClick: () => a && i.onNavigate(a.name),
children: /* @__PURE__ */ jsx(GraphQLType, { type: i.type })
});
}, ArgumentRow = (i) => /* @__PURE__ */ jsxs("div", {
className: "flex flex-col gap-0.5 px-2 py-1 text-xs",
children: [
/* @__PURE__ */ jsxs("div", {
className: "flex flex-wrap items-center gap-1",
children: [
/* @__PURE__ */ jsx("span", {
className: "text-rose-400",
children: i.arg.name
}),
/* @__PURE__ */ jsx("span", {
className: "text-muted-foreground",
children: ":"
}),
/* @__PURE__ */ jsx(TypeRow, {
type: i.arg.type,
onNavigate: i.onNavigate
}),
i.arg.defaultValue === void 0 ? null : /* @__PURE__ */ jsxs("span", {
className: "text-muted-foreground",
children: ["= ", JSON.stringify(i.arg.defaultValue)]
})
]
}),
/* @__PURE__ */ jsx(Description, { description: i.arg.description }),
i.arg.deprecationReason ? /* @__PURE__ */ jsx(DeprecationBadge, { reason: i.arg.deprecationReason }) : null
]
}), EnumValueRow = (i) => /* @__PURE__ */ jsxs("div", {
className: "flex flex-col gap-0.5 px-2 py-1 text-xs",
children: [
/* @__PURE__ */ jsx("span", {
className: "text-teal-400",
children: i.value.name
}),
/* @__PURE__ */ jsx(Description, { description: i.value.description }),
i.value.deprecationReason ? /* @__PURE__ */ jsx(DeprecationBadge, { reason: i.value.deprecationReason }) : null
]
});
const Docs = () => {
let { schema: i, docsNavStack: a, pushDocs: o, popDocs: s, resetDocs: c } = useLaboratory(), [d, f] = useState(""), g = useDeferredValue(d), b = g.trim().length > 0, x = useMemo(() => searchSchemaDocs(i ?? null, g), [i, g]), S = (i) => o({
kind: "type",
name: i
}), C = (i, a) => o({
kind: "field",
typeName: i,
fieldName: a
}), w = a.at(-1) ?? null, E = useMemo(() => {
if (!i || !w) return null;
let a = i.getType(w.kind === "type" ? w.name : w.typeName);
if (!a) return null;
if (w.kind === "type") return {
kind: "type",
type: a
};
if (!isObjectType(a) && !isInterfaceType(a) && !isInputObjectType(a)) return null;
let o = a.getFields()[w.fieldName];
return o ? {
kind: "field",
type: a,
field: o
} : null;
}, [i, w]), O = useMemo(() => E ? E.kind === "type" ? E.type.name : E.field.name : "Documentation", [E]), A = () => {
if (!i) return null;
let a = [
{
label: "query",
type: i.getQueryType()
},
{
label: "mutation",
type: i.getMutationType()
},
{
label: "subscription",
type: i.getSubscriptionType()
}
].filter((i) => i.type);
return /* @__PURE__ */ jsx(Section, {
title: "Root types",
children: a.map((i) => /* @__PURE__ */ jsx(FieldRow, {
name: i.label,
type: i.type,
description: i.type.description,
onClick: () => S(i.type.name)
}, i.label))
});
}, M = (a) => {
let o = [];
if (isObjectType(a) || isInterfaceType(a) || isInputObjectType(a)) {
let i = Object.values(a.getFields());
i.length > 0 && o.push(/* @__PURE__ */ jsx(Section, {
title: "Fields",
children: i.map((i) => /* @__PURE__ */ jsx(FieldRow, {
name: i.name,
type: i.type,
description: i.description,
isDeprecated: !!i.deprecationReason,
onClick: () => C(a.name, i.name)
}, i.name))
}, "fields"));
}
if (isObjectType(a) || isInterfaceType(a)) {
let i = a.getInterfaces();
i.length > 0 && o.push(/* @__PURE__ */ jsx(Section, {
title: "Implements",
children: i.map((i) => /* @__PURE__ */ jsx(Row, {
onClick: () => S(i.name),
children: /* @__PURE__ */ jsx("span", {
className: "text-amber-400",
children: i.name
})
}, i.name))
}, "implements"));
}
if (isUnionType(a) || isInterfaceType(a)) {
let s = isUnionType(a) ? a.getTypes() : i?.getPossibleTypes(a) ?? [];
s.length > 0 && o.push(/* @__PURE__ */ jsx(Section, {
title: isUnionType(a) ? "Possible types" : "Implementations",
children: s.map((i) => /* @__PURE__ */ jsx(Row, {
onClick: () => S(i.name),
children: /* @__PURE__ */ jsx("span", {
className: "text-amber-400",
children: i.name
})
}, i.name))
}, "possible"));
}
return isEnumType(a) && o.push(/* @__PURE__ */ jsx(Section, {
title: "Enum values",
children: a.getValues().map((i) => /* @__PURE__ */ jsx(EnumValueRow, { value: i }, i.name))
}, "values")), /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(Description, { description: a.description }), o] });
}, F = (i, a) => {
let o = "args" in a ? a.args : [];
return /* @__PURE__ */ jsxs(Fragment$1, { children: [
/* @__PURE__ */ jsxs("div", {
className: "text-muted-foreground px-2 pt-2 text-xs",
children: ["on ", /* @__PURE__ */ jsx("span", {
className: "text-amber-400",
children: i.name
})]
}),
/* @__PURE__ */ jsx(Description, { description: a.description }),
a.deprecationReason ? /* @__PURE__ */ jsx(DeprecationBadge, { reason: a.deprecationReason }) : null,
/* @__PURE__ */ jsx(Section, {
title: "Type",
children: /* @__PURE__ */ jsx("div", {
className: "px-2 py-1 text-xs",
children: /* @__PURE__ */ jsx(TypeRow, {
type: a.type,
onNavigate: S
})
})
}),
o.length > 0 ? /* @__PURE__ */ jsx(Section, {
title: "Arguments",
children: o.map((i) => /* @__PURE__ */ jsx(ArgumentRow, {
arg: i,
onNavigate: S
}, i.name))
}) : null
] });
}, I = () => x.types.length === 0 && x.fields.length === 0 && x.enumValues.length === 0 ? /* @__PURE__ */ jsx(Empty, {
className: "px-0! w-full",
children: /* @__PURE__ */ jsxs(EmptyHeader, { children: [/* @__PURE__ */ jsx(EmptyTitle, {
className: "text-base",
children: "No matches"
}), /* @__PURE__ */ jsxs(EmptyDescription, {
className: "text-xs",
children: [
"Nothing in this schema matches \"",
g,
"\"."
]
})] })
}) : /* @__PURE__ */ jsxs(Fragment$1, { children: [
x.types.length > 0 ? /* @__PURE__ */ jsx(Section, {
title: "Types",
children: x.types.map((i) => /* @__PURE__ */ jsx(Row, {
onClick: () => S(i.name),
children: /* @__PURE__ */ jsx("span", {
className: "text-amber-400",
children: i.name
})
}, i.name))
}) : null,
x.fields.length > 0 ? /* @__PURE__ */ jsx(Section, {
title: "Fields",
children: x.fields.map((i) => /* @__PURE__ */ jsxs(Row, {
onClick: () => C(i.typeName, i.fieldName),
children: [/* @__PURE__ */ jsxs("span", {
className: "text-muted-foreground",
children: [i.typeName, "."]
}), /* @__PURE__ */ jsx("span", {
className: "text-rose-400",
children: i.fieldName
})]
}, `${i.typeName}.${i.fieldName}`))
}) : null,
x.enumValues.length > 0 ? /* @__PURE__ */ jsx(Section, {
title: "Enum values",
children: x.enumValues.map((i) => /* @__PURE__ */ jsxs(Row, {
onClick: () => S(i.typeName),
children: [/* @__PURE__ */ jsxs("span", {
className: "text-muted-foreground",
children: [i.typeName, "."]
}), /* @__PURE__ */ jsx("span", {
className: "text-teal-400",
children: i.valueName
})]
}, `${i.typeName}.${i.valueName}`))
}) : null
] });
return /* @__PURE__ */ jsxs("div", {
className: "grid size-full grid-rows-[auto_auto_1fr] pb-0",
children: [
/* @__PURE__ */ jsxs("div", {
className: "border-border flex h-12 items-center gap-2 border-b p-3",
children: [
a.length > 0 && !b ? /* @__PURE__ */ jsx(Button, {
variant: "ghost",
size: "icon-sm",
className: "text-muted-foreground hover:text-foreground p-1! size-6 rounded-sm",
onClick: s,
children: /* @__PURE__ */ jsx(ChevronLeftIcon, { className: "size-4" })
}) : null,
/* @__PURE__ */ jsx("span", {
className: "truncate text-base font-medium",
children: O
}),
a.length > 0 && !b ? /* @__PURE__ */ jsx(Button, {
variant: "ghost",
size: "sm",
className: "text-muted-foreground hover:text-foreground ml-auto h-6 px-2 text-xs",
onClick: c,
children: "Root"
}) : null
]
}),
/* @__PURE__ */ jsx("div", {
className: "border-border border-b p-3",
children: /* @__PURE__ */ jsxs(InputGroup, { children: [/* @__PURE__ */ jsx(InputGroupInput, {
placeholder: "Search the schema",
value: d,
onChange: (i) => f(i.currentTarget.value)
}), /* @__PURE__ */ jsx(InputGroupAddon, { children: /* @__PURE__ */ jsx(SearchIcon, { 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: (() => i ? b ? I() : E ? E.kind === "type" ? M(E.type) : F(E.type, E.field) : A() : /* @__PURE__ */ jsx(Empty, {
className: "px-0! w-full",
children: /* @__PURE__ */ jsxs(EmptyHeader, { children: [
/* @__PURE__ */ jsx(EmptyMedia, {
variant: "icon",
children: /* @__PURE__ */ jsx(BookOpenIcon, { className: "text-muted-foreground size-6" })
}),
/* @__PURE__ */ jsx(EmptyTitle, {
className: "text-base",
children: "No schema yet"
}),
/* @__PURE__ */ jsx(EmptyDescription, {
className: "text-xs",
children: "Documentation appears once the Laboratory has introspected your endpoint."
})
] })
}))()
}), /* @__PURE__ */ jsx(ScrollBar, {})]
})
})
]
});
};
var MONOSPACE_STACK = "ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace";
function buildEditorOptions(i) {
return {
...i,
lineNumbers: "on",
cursorStyle: "line",
cursorBlinking: "smooth",
padding: { top: 16 },
fontFamily: MONOSPACE_STACK,
minimap: { enabled: !1 },
automaticLayout: !0,
tabSize: 2,
formatOnPaste: !0,
fixedOverflowWidgets: !0
};
}
var MonacoGraphQLAPI = class {
_onDidChange = new Emitter();
_formattingOptions;
_modeConfiguration;
_diagnosticSettings;
_completionSettings;
_schemas = null;
_schemasById = Object.create(null);
_languageId;
_externalFragmentDefinitions;
constructor({ languageId: i, schemas: a, modeConfiguration: o, formattingOptions: s, diagnosticSettings: c, completionSettings: d }) {
this._languageId = i, a && this.setSchemaConfig(a), this._modeConfiguration = o, this._completionSettings = d, this._diagnosticSettings = c, this._formattingOptions = s;
}
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(i) {
this._schemas = i, this._schemasById = i.reduce((i, a) => (i[a.uri] = a, i), Object.create(null)), this._onDidChange.fire(this);
}
setExternalFragmentDefinitions(i) {
this._externalFragmentDefinitions = i;
}
setModeConfiguration(i) {
this._modeConfiguration = i, this._onDidChange.fire(this);
}
setFormattingOptions(i) {
this._formattingOptions = i, this._onDidChange.fire(this);
}
setDiagnosticSettings(i) {
this._diagnosticSettings = i, this._onDidChange.fire(this);
}
setCompletionSettings(i) {
this._completionSettings = i, this._onDidChange.fire(this);
}
};
function create$1(i, a) {
if (!a) return new MonacoGraphQLAPI({
languageId: i,
schemas: [],
formattingOptions: formattingDefaults,
modeConfiguration: modeConfigurationDefault,
diagnosticSettings: diagnosticSettingDefault,
completionSettings: completionSettingDefault
});
let { schemas: o, formattingOptions: s, modeConfiguration: c, diagnosticSettings: d, completionSettings: f } = a;
return new MonacoGraphQLAPI({
languageId: i,
schemas: o,
formattingOptions: {
...formattingDefaults,
...s,
prettierConfig: {
...formattingDefaults.prettierConfig,
...s?.prettierConfig
}
},
modeConfiguration: {
...modeConfigurationDefault,
...c
},
diagnosticSettings: {
...diagnosticSettingDefault,
...d
},
completionSettings: {
...completionSettingDefault,
...f
}
});
}
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$1;
function initializeMode(i) {
return api$1 || (api$1 = create$1("graphql", i), languages.graphql = { api: api$1 }, getMode().then((i) => i.setupMode(api$1))), api$1;
}
function getMode() {
return import("./graphqlMode-Db7_RZsG.js");
}
var api = null, variablesByOperationUri = /* @__PURE__ */ new Map();
function syncMonacoGraphQL(i) {
i.operationUri && i.variablesUri && variablesByOperationUri.set(i.operationUri, i.variablesUri);
let a = [{
introspectionJSON: i.introspection,
uri: i.schemaUri
}], o = {
validateVariablesJSON: Object.fromEntries([...variablesByOperationUri].map(([i, a]) => [i, [a]])),
jsonDiagnosticSettings: { allowComments: !0 }
}, s = !i.enableDocs;
return api ? (api.setSchemaConfig(a), api.setDiagnosticSettings(o), api.setModeConfiguration({
...api.modeConfiguration,
hovers: s
}), api) : (api = initializeMode({
schemas: a,
diagnosticSettings: o,
modeConfiguration: { hovers: s }
}), api.setCompletionSettings({ __experimental__fillLeafsOnComplete: !0 }), api);
}
function _arrayLikeToArray(i, a) {
(a == null || a > i.length) && (a = i.length);
for (var o = 0, s = Array(a); o < a; o++) s[o] = i[o];
return s;
}
function _arrayWithHoles(i) {
if (Array.isArray(i)) return i;
}
function _defineProperty$1(i, a, o) {
return (a = _toPropertyKey(a)) in i ? Object.defineProperty(i, a, {
value: o,
enumerable: !0,
configurable: !0,
writable: !0
}) : i[a] = o, i;
}
function _iterableToArrayLimit(i, a) {
var o = i == null ? null : typeof Symbol < "u" && i[Symbol.iterator] || i["@@iterator"];
if (o != null) {
var s, c, d, f, g = [], b = !0, x = !1;
try {
if (d = (o = o.call(i)).next, a !== 0) for (; !(b = (s = d.call(o)).done) && (g.push(s.value), g.length !== a); b = !0);
} catch (i) {
x = !0, c = i;
} finally {
try {
if (!b && o.return != null && (f = o.return(), Object(f) !== f)) return;
} finally {
if (x) throw c;
}
}
return g;
}
}
function _nonIterableRest() {
throw TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
}
function ownKeys$1(i, a) {
var o = Object.keys(i);
if (Object.getOwnPropertySymbols) {
var s = Object.getOwnPropertySymbols(i);
a && (s = s.filter(function(a) {
return Object.getOwnPropertyDescriptor(i, a).enumerable;
})), o.push.apply(o, s);
}
return o;
}
function _objectSpread2(i) {
for (var a = 1; a < arguments.length; a++) {
var o = arguments[a] == null ? {} : arguments[a];
a % 2 ? ownKeys$1(Object(o), !0).forEach(function(a) {
_defineProperty$1(i, a, o[a]);
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(i, Object.getOwnPropertyDescriptors(o)) : ownKeys$1(Object(o)).forEach(function(a) {
Object.defineProperty(i, a, Object.getOwnPropertyDescriptor(o, a));
});
}
return i;
}
function _objectWithoutProperties(i, a) {
if (i == null) return {};
var o, s, c = _objectWithoutPropertiesLoose(i, a);
if (Object.getOwnPropertySymbols) {
var d = Object.getOwnPropertySymbols(i);
for (s = 0; s < d.length; s++) o = d[s], a.indexOf(o) === -1 && {}.propertyIsEnumerable.call(i, o) && (c[o] = i[o]);
}
return c;
}
function _objectWithoutPropertiesLoose(i, a) {
if (i == null) return {};
var o = {};
for (var s in i) if ({}.hasOwnProperty.call(i, s)) {
if (a.indexOf(s) !== -1) continue;
o[s] = i[s];
}
return o;
}
function _slicedToArray(i, a) {
return _arrayWithHoles(i) || _iterableToArrayLimit(i, a) || _unsupportedIterableToArray(i, a) || _nonIterableRest();
}
function _toPrimitive(i, a) {
if (typeof i != "object" || !i) return i;
var o = i[Symbol.toPrimitive];
if (o !== void 0) {
var s = o.call(i, a);
if (typeof s != "object") return s;
throw TypeError("@@toPrimitive must return a primitive value.");
}
return (a === "string" ? String : Number)(i);
}
function _toPropertyKey(i) {
var a = _toPrimitive(i, "string");
return typeof a == "symbol" ? a : a + "";
}
function _unsupportedIterableToArray(i, a) {
if (i) {
if (typeof i == "string") return _arrayLikeToArray(i, a);
var o = {}.toString.call(i).slice(8, -1);
return o === "Object" && i.constructor && (o = i.constructor.name), o === "Map" || o === "Set" ? Array.from(i) : o === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o) ? _arrayLikeToArray(i, a) : void 0;
}
}
function _defineProperty(i, a, o) {
return a in i ? Object.defineProperty(i, a, {
value: o,
enumerable: !0,
configurable: !0,
writable: !0
}) : i[a] = o, i;
}
function ownKeys(i, a) {
var o = Object.keys(i);
if (Object.getOwnPropertySymbols) {
var s = Object.getOwnPropertySymbols(i);
a && (s = s.filter(function(a) {
return Object.getOwnPropertyDescriptor(i, a).enumerable;
})), o.push.apply(o, s);
}
return o;
}
function _objectSpread2$1(i) {
for (var a = 1; a < arguments.length; a++) {
var o = arguments[a] == null ? {} : arguments[a];
a % 2 ? ownKeys(Object(o), !0).forEach(function(a) {
_defineProperty(i, a, o[a]);
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(i, Object.getOwnPropertyDescriptors(o)) : ownKeys(Object(o)).forEach(function(a) {
Object.defineProperty(i, a, Object.getOwnPropertyDescriptor(o, a));
});
}
return i;
}
function compose$1() {
var i = [...arguments];
return function(a) {
return i.reduceRight(function(i, a) {
return a(i);
}, a);
};
}
function curry$1(i) {
return function a() {
var o = this, s = [...arguments];
return s.length >= i.length ? i.apply(this, s) : function() {
var i = [...arguments];
return a.apply(o, [].concat(s, i));
};
};
}
function isObject$2(i) {
return {}.toString.call(i).includes("Object");
}
function isEmpty(i) {
return !Object.keys(i).length;
}
function isFunction$1(i) {
return typeof i == "function";
}
function hasOwnProperty(i, a) {
return Object.prototype.hasOwnProperty.call(i, a);
}
function validateChanges(i, a) {
return isObject$2(a) || errorHandler$1("changeType"), Object.keys(a).some(function(a) {
return !hasOwnProperty(i, a);
}) && errorHandler$1("changeField"), a;
}
function validateSelector(i) {
isFunction$1(i) || errorHandler$1("selectorType");
}
function validateHandler(i) {
isFunction$1(i) || isObject$2(i) || errorHandler$1("handlerType"), isObject$2(i) && Object.values(i).some(function(i) {
return !isFunction$1(i);
}) && errorHandler$1("handlersType");
}
function validateInitial(i) {
i || errorHandler$1("initialIsRequired"), isObject$2(i) || errorHandler$1("initialType"), isEmpty(i) && errorHandler$1("initialContent");
}
function throwError$1(i, a) {
throw Error(i[a] || i.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(i) {
var a = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
validators$1.initial(i), validators$1.handler(a);
var o = { current: i }, s = curry$1(didStateUpdate)(o, a), c = curry$1(updateState)(o), d = curry$1(validators$1.changes)(i), f = curry$1(extractChanges)(o);
function g() {
var i = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : function(i) {
return i;
};
return validators$1.selector(i), i(o.current);
}
function b(i) {
compose$1(s, c, d, f)(i);
}
return [g, b];
}
function extractChanges(i, a) {
return isFunction$1(a) ? a(i.current) : a;
}
function updateState(i, a) {
return i.current = _objectSpread2$1(_objectSpread2$1({}, i.current), a), a;
}
function didStateUpdate(i, a, o) {
return isFunction$1(a) ? a(i.current) : Object.keys(o).forEach(function(o) {
return a[o]?.call(a, i.current[o]);
}), o;
}
var state_local_default = { create }, config = { paths: { vs: "https://cdn.jsdelivr.net/npm/monaco-editor@0.55.1/min/vs" } };
function curry(i) {
return function a() {
var o = this, s = [...arguments];
return s.length >= i.length ? i.apply(this, s) : function() {
var i = [...arguments];
return a.apply(o, [].concat(s, i));
};
};
}
function isObject$1(i) {
return {}.toString.call(i).includes("Object");
}
function validateConfig(i) {
return i || errorHandler("configIsRequired"), isObject$1(i) || errorHandler("configType"), i.urls ? (informAboutDeprecation(), { paths: { vs: i.urls.monacoBase } }) : i;
}
function informAboutDeprecation() {
console.warn(errorMessages.deprecation);
}
function throwError(i, a) {
throw Error(i[a] || i.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 i = [...arguments];
return function(a) {
return i.reduceRight(function(i, a) {
return a(i);
}, a);
};
};
function merge(i, a) {
return Object.keys(a).forEach(function(o) {
a[o] instanceof Object && i[o] && Object.assign(a[o], merge(i[o], a[o]));
}), _objectSpread2(_objectSpread2({}, i), a);
}
var CANCELATION_MESSAGE = {
type: "cancelation",
msg: "operation is manually canceled"
};
function makeCancelable(i) {
var a = !1, o = new Promise(function(o, s) {
i.then(function(i) {
return a ? s(CANCELATION_MESSAGE) : o(i);
}), i.catch(s);
});
return o.cancel = function() {
return a = !0;
}, o;
}
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(i) {
var a = validators.config(i), o = a.monaco, s = _objectWithoutProperties(a, _excluded);
setState(function(i) {
return {
config: merge(i.config, s),
monaco: o
};
});
}
function init() {
var i = getState$2(function(i) {
var a = i.monaco, o = i.isInitialized, s = i.resolve;
return {
monaco: a,
isInitialized: o,
resolve: s
};
});
if (!i.isInitialized) {
if (setState({ isInitialized: !0 }), i.monaco) return i.resolve(i.monaco), makeCancelable(wrapperPromise);
if (window.monaco && window.monaco.editor) return storeMonacoInstance(window.monaco), i.resolve(window.monaco), makeCancelable(wrapperPromise);
compose(injectScripts, getMonacoLoaderScript)(configureLoader);
}
return makeCancelable(wrapperPromise);
}
function injectScripts(i) {
return document.body.appendChild(i);
}
function createScript(i) {
var a = document.createElement("script");
return i && (a.src = i), a;
}
function getMonacoLoaderScript(i) {
var a = getState$2(function(i) {
var a = i.config, o = i.reject;
return {
config: a,
reject: o
};
}), o = createScript(`${a.config.paths.vs}/loader.js`);
return o.onload = function() {
return i();
}, o.onerror = a.reject, o;
}
function configureLoader() {
var i = getState$2(function(i) {
var a = i.config, o = i.resolve, s = i.reject;
return {
config: a,
resolve: o,
reject: s
};
}), a = window.require;
a.config(i.config), a(["vs/editor/editor.main"], function(a) {
var o = a.m || a;
storeMonacoInstance(o), i.resolve(o);
}, function(a) {
i.reject(a);
});
}
function storeMonacoInstance(i) {
getState$2().monaco || setState({ monaco: i });
}
function __getMonacoInstance() {
return getState$2(function(i) {
return i.monaco;
});
}
var wrapperPromise = new Promise(function(i, a) {
return setState({
resolve: i,
reject: a
});
}), 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: i }) {
return ke.createElement("div", { style: Y.container }, i);
}
var $ = Me;
function Ee({ width: i, height: a, isEditorReady: o, loading: s, _ref: c, className: d, wrapperProps: f }) {
return ke.createElement("section", {
style: {
...v$1.wrapper,
width: i,
height: a
},
...f
}, !o && ke.createElement($, null, s), ke.createElement("div", {
ref: c,
style: {
...v$1.fullWidth,
...!o && v$1.hide
},
className: d
}));
}
var H = memo(Ee);
function Ce(i) {
useEffect(i, []);
}
var k = Ce;
function he(i, a, o = !0) {
let s = useRef(!0);
useEffect(s.current || !o ? () => {
s.current = !1;
} : i, a);
}
var l = he;
function D() {}
function h(i, a, o, s) {
return De(i, s) || be(i, a, o, s);
}
function De(i, a) {
return i.editor.getModel(te(i, a));
}
function be(i, a, o, s) {
return i.editor.createModel(a, o, s ? te(i, s) : void 0);
}
function te(i, a) {
return i.Uri.parse(a);
}
function Oe({ original: i, modified: a, language: o, originalLanguage: s, modifiedLanguage: c, originalModelPath: d, modifiedModelPath: f, keepCurrentOriginalModel: g = !1, keepCurrentModifiedModel: b = !1, theme: x = "light", loading: S = "Loading...", options: C = {}, height: w = "100%", width: E = "100%", className: O, wrapperProps: A = {}, beforeMount: M = D, onMount: F = D }) {
let [I, R] = useState(!1), [V, rP] = useState(!0), iP = useRef(null), q = useRef(null), aP = useRef(null), oP = useRef(F), sP = useRef(M), cP = useRef(!1);
k(() => {
let i = loader.init();
return i.then((i) => (q.current = i) && rP(!1)).catch((i) => i?.type !== "cancelation" && console.error("Monaco initialization: error:", i)), () => iP.current ? dP() : i.cancel();
}), l(() => {
if (iP.current && q.current) {
let a = iP.current.getOriginalEditor(), c = h(q.current, i || "", s || o || "text", d || "");
c !== a.getModel() && a.setModel(c);
}
}, [d], I), l(() => {
if (iP.current && q.current) {
let i = iP.current.getModifiedEditor(), s = h(q.current, a || "", c || o || "text", f || "");
s !== i.getModel() && i.setModel(s);
}
}, [f], I), l(() => {
let i = iP.current.getModifiedEditor();
i.getOption(q.current.editor.EditorOption.readOnly) ? i.setValue(a || "") : a !== i.getValue() && (i.executeEdits("", [{
range: i.getModel().getFullModelRange(),
text: a || "",
forceMoveMarkers: !0
}]), i.pushUndoStop());
}, [a], I), l(() => {
iP.current?.getModel()?.original.setValue(i || "");
}, [i], I), l(() => {
let { original: i, modified: a } = iP.current.getModel();
q.current.editor.setModelLanguage(i, s || o || "text"), q.current.editor.setModelLanguage(a, c || o || "text");
}, [
o,
s,
c
], I), l(() => {
q.current?.editor.setTheme(x);
}, [x], I), l(() => {
iP.current?.updateOptions(C);
}, [C], I);
let lP = useCallback(() => {
if (!q.current) return;
sP.current(q.current);
let g = h(q.current, i || "", s || o || "text", d || ""), b = h(q.current, a || "", c || o || "text", f || "");
iP.current?.setModel({
original: g,
modified: b
});
}, [
o,
a,
c,
i,
s,
d,
f
]), uP = useCallback(() => {
!cP.current && aP.current && (iP.current = q.current.editor.createDiffEditor(aP.current, {
automaticLayout: !0,
...C
}), lP(), q.current?.editor.setTheme(x), R(!0), cP.current = !0);
}, [
C,
x,
lP
]);
useEffect(() => {
I && oP.current(iP.current, q.current);
}, [I]), useEffect(() => {
!V && !I && uP();
}, [
V,
I,
uP
]);
function dP() {
let i = iP.current?.getModel();
g || i?.original?.dispose(), b || i?.modified?.dispose(), iP.current?.dispose();
}
return ke.createElement(H, {
width: E,
height: w,
isEditorReady: I,
loading: S,
_ref: aP,
className: O,
wrapperProps: A
});
}
memo(Oe);
function He(i) {
let a = useRef();
return useEffect(() => {
a.current = i;
}, [i]), a.current;
}
var se = He, _$1 = /* @__PURE__ */ new Map();
function Ve({ defaultValue: i, defaultLanguage: a, defaultPath: o, value: s, language: c, path: d, theme: f = "light", line: g, loading: b = "Loading...", options: x = {}, overrideServices: S = {}, saveViewState: C = !0, keepCurrentModel: w = !1, width: E = "100%", height: O = "100%", className: A, wrapperProps: M = {}, beforeMount: F = D, onMount: I = D, onChange: R, onValidate: V = D }) {
let [rP, iP] = useState(!1), [q, aP] = useState(!0), oP = useRef(null), sP = useRef(null), cP = useRef(null), lP = useRef(I), uP = useRef(F), dP = useRef(void 0), fP = useRef(s), pP = se(d), mP = useRef(!1), hP = useRef(!1);
k(() => {
let i = loader.init();
return i.then((i) => (oP.current = i) && aP(!1)).catch((i) => i?.type !== "cancelation" && console.error("Monaco initialization: error:", i)), () => sP.current ? _P() : i.cancel();
}), l(() => {
let f = h(oP.current, i || s || "", a || c || "", d || o || "");
f !== sP.current?.getModel() && (C && _$1.set(pP, sP.current?.saveViewState()), sP.current?.setModel(f), C && sP.current?.restoreViewState(_$1.get(d)));
}, [d], rP), l(() => {
sP.current?.updateOptions(x);
}, [x], rP), l(() => {
!sP.current || s === void 0 || (sP.current.getOption(oP.current.editor.EditorOption.readOnly) ? sP.current.setValue(s) : s !== sP.current.getValue() && (hP.current = !0, sP.current.executeEdits("", [{
range: sP.current.getModel().getFullModelRange(),
text: s,
forceMoveMarkers: !0
}]), sP.current.pushUndoStop(), hP.current = !1));
}, [s], rP), l(() => {
let i = sP.current?.getModel();
rP && i && c && oP.current?.editor.setModelLanguage(i, c);
}, [c, rP], rP), l(() => {
g !== void 0 && sP.current?.revealLine(g);
}, [g], rP), l(() => {
oP.current?.editor.setTheme(f);
}, [f], rP);
let gP = useCallback(() => {
if (!(!cP.current || !oP.current) && !mP.current) {
uP.current(oP.current);
let b = d || o, w = h(oP.current, s || i || "", a || c || "", b || "");
sP.current = oP.current?.editor.create(cP.current, {
model: w,
automaticLayout: !0,
...x
}, S), C && sP.current.restoreViewState(_$1.get(b)), oP.current.editor.setTheme(f), g !== void 0 && sP.current.revealLine(g), iP(!0), mP.current = !0;
}
}, [
i,
a,
o,
s,
c,
d,
x,
S,
C,
f,
g
]);
useEffect(() => {
rP && lP.current(sP.current, oP.current);
}, [rP]), useEffect(() => {
!q && !rP && gP();
}, [
q,
rP,
gP
]), fP.current = s, useEffect(() => {
rP && R && (dP.current?.dispose(), dP.current = sP.current?.onDidChangeModelContent((i) => {
hP.current || R(sP.current.getValue(), i);
}));
}, [rP, R]), useEffect(() => {
if (rP) {
let i = oP.current.editor.onDidChangeMarkers((i) => {
let a = sP.current.getModel()?.uri;
if (a && i.find((i) => i.path === a.path)) {
let i = oP.current.editor.getModelMarkers({ resource: a });
V?.(i);
}
});
return () => {
i?.dispose();
};
}
return () => {};
}, [rP, V]);
function _P() {
dP.current?.dispose(), w ? C && _$1.set(d, sP.current.saveViewState()) : sP.current.getModel()?.dispose(), sP.current.dispose(), sP.current = null, mP.current = !1, iP(!1);
}
return ke.createElement(H, {
width: E,
height: O,
isEditorReady: rP,
loading: b,
_ref: cP,
className: A,
wrapperProps: M
});
}
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": "#0f121400",
"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((i, a) => {
let o = useId(), s = useRef(null), { introspection: d, endpoint: f, theme: b, enableDocs: x } = useLaboratory(), S = i.language === "json" || i.defaultLanguage === "json", [C, w] = useState(!!languages.typescript), [E, O] = useState(languages.getLanguages().some((i) => i.id === "json"));
useEffect(() => {
d && syncMonacoGraphQL({
introspection: d,
schemaUri: `schema_${f}.graphql`,
operationUri: i.uri?.toString(),
variablesUri: i.variablesUri?.toString(),
enableDocs: x
});
}, [
f,
d,
x,
i.uri?.toString(),
i.variablesUri?.toString()
]), useEffect(() => {
(async function() {
if (S && !E && (await import("./monaco.contribution-pnEHc2s_.js"), O(!0)), languages.typescript || (await import("./monaco.contribution-lY42bfA6.js"), w(!0)), !i.extraLibs?.length) return;
let a = languages.typescript;
if (!a) return;
let s = Object.values(a.typescriptDefaults.getExtraLibs()).map((i) => i.content);
if (i.extraLibs.every((i) => s.includes(i))) return;
let c = o.replace(/[^a-zA-Z0-9_-]/g, "_");
a.typescriptDefaults.setCompilerOptions({
target: a.ScriptTarget.ESNext,
module: a.ModuleKind.ESNext,
allowNonTsExtensions: !0,
allowJs: !0,
lib: ["esnext", "webworker"]
}), a.typescriptDefaults.setExtraLibs(i.extraLibs.map((i, a) => ({
content: i,
filePath: `file:///hive-lab-globals-${c}-${a}.d.ts`
})));
})();
}, [
o,
E,
i.extraLibs,
S
]), useImperativeHandle(a, () => ({ setValue: (i) => {
s.current && s.current.setValue(i);
} }), []);
let A = useCallback((a) => {
let o = null, s = () => {
o?.clear();
try {
let s = a.getValue(), d = parse(s).definitions.find((i) => {
if (i.kind !== "OperationDefinition" || !i.loc) return !1;
let o = a.getPosition();
if (o) return i.loc.startToken.line <= o.lineNumber && i.loc.endToken.line >= o.lineNumber;
});
if (d?.loc) {
let s = [];
d.loc.startToken.line > 1 && s.push({
range: new Range$1(0, 0, d.loc.startToken.line - 1, d.loc.startToken.column),
options: {
isWholeLine: !0,
inlineClassName: "inactive-line"
}
});
let f = a.getModel()?.getLineCount() ?? 0, g = a.getModel()?.getLineMaxColumn(f) ?? 0;
d.loc.endToken.line < f && s.push({
range: new Range$1(d.loc.endToken.line + 1, d.loc.endToken.column, f, g),
options: {
isWholeLine: !0,
inlineClassName: "inactive-line"
}
}), o = a.createDecorationsCollection(s), i.onOperationNameChange?.(d.name?.value ?? null);
}
} catch {}
};
a.onDidChangeCursorPosition(s), s();
}, [i.onOperationNameChange]), M = useCallback((i) => {
s.current = i, A(i);
}, [A]), F = useRef(null);
return useLayoutEffect(() => {
F.current = s.current?.getPosition() ?? null;
}, [i.value]), useEffect(() => {
s.current && F.current && (s.current.setPosition(F.current), F.current = null);
}, [i.value]), !C && i.language === "typescript" || !E && S ? null : /* @__PURE__ */ jsx("div", {
className: cn("size-full overflow-hidden", i.className),
children: /* @__PURE__ */ jsx(Ft$1, {
...i,
className: "size-full",
theme: b === "dark" ? "hive-laboratory-dark" : "hive-laboratory-light",
onMount: M,
loading: null,
options: buildEditorOptions(i.options),
defaultPath: i.uri?.toString()
})
});
}), Env = () => {
let { env: i, setEnv: a } = useLaboratory();
return /* @__PURE__ */ jsx("div", {
className: "bg-card size-full",
children: /* @__PURE__ */ jsx(Editor, {
defaultValue: Object.entries(i?.variables ?? {}).map(([i, a]) => `${i}=${a}`).join("\n"),
onChange: (i) => {
a({ variables: Object.fromEntries(i?.split("\n").filter((i) => i.trim() && !i.trim().startsWith("#")).map((i) => {
let a = i.split(/=(.*)/s);
return [a[0].trim(), (a[1] ?? "").trim()];
}) ?? []) });
},
language: "dotenv",
options: { scrollbar: { horizontal: "hidden" } }
})
});
}, HistoryOperationItem = (i) => {
let { activeTab: a, addTab: o, setActiveTab: s, deleteHistory: c } = useLaboratory(), d = useMemo(() => a?.type === "history" && a.data.id === i.historyItem.id, [a, i.historyItem]), f = useMemo(() => i.historyItem.status ? i.historyItem.status < 200 || i.historyItem.status >= 300 || "response" in i.historyItem && JSON.parse(i.historyItem.response).errors : !0, [i.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": d }),
onClick: () => {
s(o({
type: "history",
data: i.historyItem,
readOnly: !0
}));
},
children: [
/* @__PURE__ */ jsx(HistoryIcon, { className: cn("size-4 text-indigo-400", {
"text-green-500": !i.historyItem.status || i.historyItem.status >= 200 && i.historyItem.status < 300,
"text-red-500": f
}) }),
/* @__PURE__ */ jsx("span", {
className: "text-muted-foreground",
children: format(new Date(i.historyItem.createdAt), "HH:mm")
}),
/* @__PURE__ */ jsx("div", {
className: "truncate",
children: i.historyItem.operation.name || "Untitled"
}),
/* @__PURE__ */ jsx("div", {
className: "ml-auto flex items-center gap-2",
children: /* @__PURE__ */ jsxs(AlertDialog, { children: [/* @__PURE__ */ jsxs(Tooltip, { children: [/* @__PURE__ */ jsx(TooltipTrigger, {
asChild: !0,
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: (i) => {
i.stopPropagation();
},
children: /* @__PURE__ */ jsx(TrashIcon, {})
})
})
}), /* @__PURE__ */ jsx(TooltipContent, { children: "Delete history" })] }), /* @__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: (a) => {
a.stopPropagation(), c(i.historyItem.id);
},
children: "Delete"
})
})] })] })] })
})
]
});
}, HistoryGroup = (i) => {
let { deleteHistoryByDay: a } = useLaboratory(), [o, s] = useState(!1);
return /* @__PURE__ */ jsxs(Collapsible, {
open: o,
onOpenChange: s,
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(o ? FolderOpenIcon : FolderClockIcon, { className: "text-muted-foreground size-4" }),
i.group.date,
/* @__PURE__ */ jsxs(AlertDialog, { children: [/* @__PURE__ */ jsxs(Tooltip, { children: [/* @__PURE__ */ jsx(TooltipTrigger, {
asChild: !0,
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: (i) => {
i.stopPropagation();
},
children: /* @__PURE__ */ jsx(TrashIcon, {})
})
})
}), /* @__PURE__ */ jsx(TooltipContent, { children: "Delete history" })] }), /* @__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 ",
i.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: (o) => {
o.stopPropagation(), a(i.group.date);
},
children: "Delete"
})
})] })] })] })
]
})
}), /* @__PURE__ */ jsx(CollapsibleContent, {
className: cn("border-border ml-4 flex flex-col gap-1 border-l pl-2"),
children: i.group.items.map((i) => /* @__PURE__ */ jsx(HistoryOperationItem, { historyItem: i }, i.id))
})]
});
}, History = () => {
let { history: i, deleteAllHistory: a, tabs: o, setTabs: s, setActiveTab: c } = useLaboratory(), d = useMemo(() => i.sort((i, a) => new Date(a.createdAt).getTime() - new Date(i.createdAt).getTime()), [i]), f = useMemo(() => d.reduce((i, a) => {
let o = format(new Date(a.createdAt), "dd MMM yyyy"), s = i.find((i) => i.date === o);
return s || (s = {
date: o,
items: []
}, i.push(s)), s.items.push(a), i;
}, []), [d]), g = useCallback(() => {
a(), s(o.filter((i) => i.type !== "history"));
let i = o.find((i) => i.type !== "history");
i && c(i);
}, [
a,
s,
o,
c
]);
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(AlertDialog, { children: [/* @__PURE__ */ jsxs(Tooltip, { children: [/* @__PURE__ */ jsx(TooltipTrigger, {
asChild: !0,
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: i.length === 0,
children: /* @__PURE__ */ jsx(TrashIcon, { className: "size-4" })
})
})
}), /* @__PURE__ */ jsx(TooltipContent, { children: "Delete all" })] }), /* @__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: (i) => {
i.stopPropagation(), g();
},
children: "Delete"
})
})] })] })] })
})]
}), /* @__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: f.length > 0 ? f.map((i) => /* @__PURE__ */ jsx(HistoryGroup, { group: i }, i.date)) : /* @__PURE__ */ jsx(Empty, {
className: "px-0! w-full",
children: /* @__PURE__ */ jsxs(EmptyHeader, { children: [
/* @__PURE__ */ jsx(EmptyMedia, {
variant: "icon",
children: /* @__PURE__ */ jsx(ClockIcon, { className: "text-muted-foreground size-6" })
}),
/* @__PURE__ */ jsx(EmptyTitle, {
className: "text-base",
children: "No history yet"
}),
/* @__PURE__ */ jsx(EmptyDescription, {
className: "text-xs",
children: "You haven't run any operations yet. Get started by running your first operation."
})
] })
})
}), /* @__PURE__ */ jsx(ScrollBar, {})]
})
})]
});
};
var shellQuote = (i) => `'${i.replaceAll("'", "'\\''")}'`, parseTemplatedJson = (i, a) => {
if (!i) return {};
try {
return JSON.parse(handleTemplate(i, a)) ?? {};
} catch {
return {};
}
}, selectOperation = (i, a) => {
let o;
try {
o = parse(i);
} catch {
return i;
}
let s = o.definitions.filter((i) => !(i.kind === Kind.OPERATION_DEFINITION && a && i.name?.value !== a));
return print({
kind: Kind.DOCUMENT,
definitions: s
});
};
function buildCurlCommand(i) {
let a = {
...i.env,
plugins: i.pluginsState ?? {}
}, o = {
"content-type": "application/json",
...i.preflightHeaders,
...parseTemplatedJson(i.headers, a)
}, s = { query: selectOperation(i.query, i.operationName) };
i.operationName && (s.operationName = i.operationName);
let c = parseTemplatedJson(i.variables, a);
Object.keys(c).length > 0 && (s.variables = c);
let d = parseTemplatedJson(i.extensions, a);
Object.keys(d).length > 0 && (s.extensions = d);
let f = i.settings?.fetch?.useGETForQueries === !0, g = ["curl"], b = i.endpoint;
if (f) {
let a = new URLSearchParams({ query: s.query });
i.operationName && a.set("operationName", i.operationName), s.variables && a.set("variables", JSON.stringify(s.variables)), s.extensions && a.set("extensions", JSON.stringify(s.extensions)), b = `${i.endpoint}?${a.toString()}`, delete o["content-type"];
} else g.push("-X POST");
g.push(shellQuote(b)), i.settings?.fetch?.credentials === "include" && g.push("--cookie-jar /dev/null");
for (let [i, a] of Object.entries(o)) g.push(`-H ${shellQuote(`${i}: ${a}`)}`);
return f || g.push(`-d ${shellQuote(JSON.stringify(s))}`), g.join(" \\\n ");
}
const 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 parseQueryPlan(i) {
if (!i) return null;
let a;
try {
a = JSON.parse(i)?.extensions?.queryPlan;
} catch {
return null;
}
if (!a) return null;
let o = QueryPlanSchema.safeParse(a);
return o.success ? o.data : null;
}
function usePrevious$1(i) {
let a = React.useRef({
value: i,
previous: i
});
return React.useMemo(() => (a.current.value !== i && (a.current.previous = a.current.value, a.current.value = i), a.current.previous), [i]);
}
var CHECKBOX_NAME = "Checkbox", [createCheckboxContext, createCheckboxScope] = createContextScope(CHECKBOX_NAME), [CheckboxProviderImpl, useCheckboxContext] = createCheckboxContext(CHECKBOX_NAME);
function CheckboxProvider(i) {
let { __scopeCheckbox: a, checked: o, children: s, defaultChecked: c, disabled: d, form: f, name: g, onCheckedChange: b, required: x, value: S = "on", internal_do_not_use_render: C } = i, [w, E] = useControllableState({
prop: o,
defaultProp: c ?? !1,
onChange: b,
caller: CHECKBOX_NAME
}), [O, A] = React.useState(null), [M, F] = React.useState(null), I = React.useRef(!1), R = O ? !!f || !!O.closest("form") : !0, V = {
checked: w,
disabled: d,
setChecked: E,
control: O,
setControl: A,
name: g,
form: f,
value: S,
hasConsumerStoppedPropagationRef: I,
required: x,
defaultChecked: isIndeterminate(c) ? !1 : c,
isFormControl: R,
bubbleInput: M,
setBubbleInput: F
};
return /* @__PURE__ */ jsx(CheckboxProviderImpl, {
scope: a,
...V,
children: isFunction(C) ? C(V) : s
});
}
var TRIGGER_NAME$3 = "CheckboxTrigger", CheckboxTrigger = React.forwardRef(({ __scopeCheckbox: i, onKeyDown: a, onClick: o,...s }, c) => {
let { control: d, value: f, disabled: g, checked: b, required: x, setControl: S, setChecked: C, hasConsumerStoppedPropagationRef: w, isFormControl: E, bubbleInput: O } = useCheckboxContext(TRIGGER_NAME$3, i), A = useComposedRefs$1(c, S), M = React.useRef(b);
return React.useEffect(() => {
let i = d?.form;
if (i) {
let a = () => C(M.current);
return i.addEventListener("reset", a), () => i.removeEventListener("reset", a);
}
}, [d, C]), /* @__PURE__ */ jsx(Primitive.button, {
type: "button",
role: "checkbox",
"aria-checked": isIndeterminate(b) ? "mixed" : b,
"aria-required": x,
"data-state": getState$1(b),
"data-disabled": g ? "" : void 0,
disabled: g,
value: f,
...s,
ref: A,
onKeyDown: composeEventHandlers(a, (i) => {
i.key === "Enter" && i.preventDefault();
}),
onClick: composeEventHandlers(o, (i) => {
C((i) => isIndeterminate(i) ? !0 : !i), O && E && (w.current = i.isPropagationStopped(), w.current || i.stopPropagation());
})
});
});
CheckboxTrigger.displayName = TRIGGER_NAME$3;
var Checkbox$1 = React.forwardRef((i, a) => {
let { __scopeCheckbox: o, name: s, checked: c, defaultChecked: d, required: f, disabled: g, value: b, onCheckedChange: x, form: S,...C } = i;
return /* @__PURE__ */ jsx(CheckboxProvider, {
__scopeCheckbox: o,
checked: c,
defaultChecked: d,
disabled: g,
required: f,
onCheckedChange: x,
name: s,
form: S,
value: b,
internal_do_not_use_render: ({ isFormControl: i }) => /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(CheckboxTrigger, {
...C,
ref: a,
__scopeCheckbox: o
}), i && /* @__PURE__ */ jsx(CheckboxBubbleInput, { __scopeCheckbox: o })] })
});
});
Checkbox$1.displayName = CHECKBOX_NAME;
var INDICATOR_NAME$1 = "CheckboxIndicator", CheckboxIndicator = React.forwardRef((i, a) => {
let { __scopeCheckbox: o, forceMount: s,...c } = i, d = useCheckboxContext(INDICATOR_NAME$1, o);
return /* @__PURE__ */ jsx(Presence, {
present: s || isIndeterminate(d.checked) || d.checked === !0,
children: /* @__PURE__ */ jsx(Primitive.span, {
"data-state": getState$1(d.checked),
"data-disabled": d.disabled ? "" : void 0,
...c,
ref: a,
style: {
pointerEvents: "none",
...i.style
}
})
});
});
CheckboxIndicator.displayName = INDICATOR_NAME$1;
var BUBBLE_INPUT_NAME$3 = "CheckboxBubbleInput", CheckboxBubbleInput = React.forwardRef(({ __scopeCheckbox: i,...a }, o) => {
let { control: s, hasConsumerStoppedPropagationRef: c, checked: d, defaultChecked: f, required: g, disabled: b, name: x, value: S, form: C, bubbleInput: w, setBubbleInput: E } = useCheckboxContext(BUBBLE_INPUT_NAME$3, i), O = useComposedRefs$1(o, E), A = usePrevious$1(d), M = useSize(s);
React.useEffect(() => {
let i = w;
if (!i) return;
let a = window.HTMLInputElement.prototype, o = Object.getOwnPropertyDescriptor(a, "checked").set, s = !c.current;
if (A !== d && o) {
let a = new Event("click", { bubbles: s });
i.indeterminate = isIndeterminate(d), o.call(i, isIndeterminate(d) ? !1 : d), i.dispatchEvent(a);
}
}, [
w,
A,
d,
c
]);
let F = React.useRef(isIndeterminate(d) ? !1 : d);
return /* @__PURE__ */ jsx(Primitive.input, {
type: "checkbox",
"aria-hidden": !0,
defaultChecked: f ?? F.current,
required: g,
disabled: b,
name: x,
value: S,
form: C,
...a,
tabIndex: -1,
ref: O,
style: {
...a.style,
...M,
position: "absolute",
pointerEvents: "none",
opacity: 0,
margin: 0,
transform: "translateX(-100%)"
}
});
});
CheckboxBubbleInput.displayName = BUBBLE_INPUT_NAME$3;
function isFunction(i) {
return typeof i == "function";
}
function isIndeterminate(i) {
return i === "indeterminate";
}
function getState$1(i) {
return isIndeterminate(i) ? "indeterminate" : i ? "checked" : "unchecked";
}
var CONTEXT_MENU_NAME = "ContextMenu", [createContextMenuContext, createContextMenuScope] = createContextScope(CONTEXT_MENU_NAME, [createMenuScope]), useMenuScope = createMenuScope(), [ContextMenuProvider, useContextMenuContext] = createContextMenuContext(CONTEXT_MENU_NAME), ContextMenu$1 = (i) => {
let { __scopeContextMenu: a, children: o, onOpenChange: s, dir: c, modal: d = !0 } = i, [f, g] = React.useState(!1), b = useMenuScope(a), x = useCallbackRef(s), S = React.useCallback((i) => {
g(i), x(i);
}, [x]);
return /* @__PURE__ */ jsx(ContextMenuProvider, {
scope: a,
open: f,
onOpenChange: S,
modal: d,
children: /* @__PURE__ */ jsx(Root3$1, {
...b,
dir: c,
open: f,
onOpenChange: S,
modal: d,
children: o
})
});
};
ContextMenu$1.displayName = CONTEXT_MENU_NAME;
var TRIGGER_NAME$2 = "ContextMenuTrigger", ContextMenuTrigger$1 = React.forwardRef((i, a) => {
let { __scopeContextMenu: o, disabled: s = !1,...c } = i, d = useContextMenuContext(TRIGGER_NAME$2, o), f = useMenuScope(o), g = React.useRef({
x: 0,
y: 0
}), b = React.useRef({ getBoundingClientRect: () => DOMRect.fromRect({
width: 0,
height: 0,
...g.current
}) }), x = React.useRef(0), S = React.useCallback(() => window.clearTimeout(x.current), []), C = (i) => {
g.current = {
x: i.clientX,
y: i.clientY
}, d.onOpenChange(!0);
};
return React.useEffect(() => S, [S]), React.useEffect(() => void (s && S()), [s, S]), /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(Anchor2, {
...f,
virtualRef: b
}), /* @__PURE__ */ jsx(Primitive.span, {
"data-state": d.open ? "open" : "closed",
"data-disabled": s ? "" : void 0,
...c,
ref: a,
style: {
WebkitTouchCallout: "none",
...i.style
},
onContextMenu: s ? i.onContextMenu : composeEventHandlers(i.onContextMenu, (i) => {
S(), C(i), i.preventDefault();
}),
onPointerDown: s ? i.onPointerDown : composeEventHandlers(i.onPointerDown, whenTouchOrPen((i) => {
S(), x.current = window.setTimeout(() => C(i), 700);
})),
onPointerMove: s ? i.onPointerMove : composeEventHandlers(i.onPointerMove, whenTouchOrPen(S)),
onPointerCancel: s ? i.onPointerCancel : composeEventHandlers(i.onPointerCancel, whenTouchOrPen(S)),
onPointerUp: s ? i.onPointerUp : composeEventHandlers(i.onPointerUp, whenTouchOrPen(S))
})] });
});
ContextMenuTrigger$1.displayName = TRIGGER_NAME$2;
var PORTAL_NAME$1 = "ContextMenuPortal", ContextMenuPortal = (i) => {
let { __scopeContextMenu: a,...o } = i, s = useMenuScope(a);
return /* @__PURE__ */ jsx(Portal$3, {
...s,
...o
});
};
ContextMenuPortal.displayName = PORTAL_NAME$1;
var CONTENT_NAME$3 = "ContextMenuContent", ContextMenuContent$1 = React.forwardRef((i, a) => {
let { __scopeContextMenu: o,...s } = i, c = useContextMenuContext(CONTENT_NAME$3, o), d = useMenuScope(o), f = React.useRef(!1);
return /* @__PURE__ */ jsx(Content2$5, {
...d,
...s,
ref: a,
side: "right",
sideOffset: 2,
align: "start",
onCloseAutoFocus: (a) => {
i.onCloseAutoFocus?.(a), !a.defaultPrevented && f.current && a.preventDefault(), f.current = !1;
},
onInteractOutside: (a) => {
i.onInteractOutside?.(a), !a.defaultPrevented && !c.modal && (f.current = !0);
},
style: {
...i.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.forwardRef((i, a) => {
let { __scopeContextMenu: o,...s } = i, c = useMenuScope(o);
return /* @__PURE__ */ jsx(Group, {
...c,
...s,
ref: a
});
});
ContextMenuGroup.displayName = GROUP_NAME$1;
var LABEL_NAME$1 = "ContextMenuLabel", ContextMenuLabel = React.forwardRef((i, a) => {
let { __scopeContextMenu: o,...s } = i, c = useMenuScope(o);
return /* @__PURE__ */ jsx(Label$2, {
...c,
...s,
ref: a
});
});
ContextMenuLabel.displayName = LABEL_NAME$1;
var ITEM_NAME$3 = "ContextMenuItem", ContextMenuItem$1 = React.forwardRef((i, a) => {
let { __scopeContextMenu: o,...s } = i, c = useMenuScope(o);
return /* @__PURE__ */ jsx(Item2$3, {
...c,
...s,
ref: a
});
});
ContextMenuItem$1.displayName = ITEM_NAME$3;
var CHECKBOX_ITEM_NAME = "ContextMenuCheckboxItem", ContextMenuCheckboxItem = React.forwardRef((i, a) => {
let { __scopeContextMenu: o,...s } = i, c = useMenuScope(o);
return /* @__PURE__ */ jsx(CheckboxItem, {
...c,
...s,
ref: a
});
});
ContextMenuCheckboxItem.displayName = CHECKBOX_ITEM_NAME;
var RADIO_GROUP_NAME = "ContextMenuRadioGroup", ContextMenuRadioGroup = React.forwardRef((i, a) => {
let { __scopeContextMenu: o,...s } = i, c = useMenuScope(o);
return /* @__PURE__ */ jsx(RadioGroup, {
...c,
...s,
ref: a
});
});
ContextMenuRadioGroup.displayName = RADIO_GROUP_NAME;
var RADIO_ITEM_NAME = "ContextMenuRadioItem", ContextMenuRadioItem = React.forwardRef((i, a) => {
let { __scopeContextMenu: o,...s } = i, c = useMenuScope(o);
return /* @__PURE__ */ jsx(RadioItem, {
...c,
...s,
ref: a
});
});
ContextMenuRadioItem.displayName = RADIO_ITEM_NAME;
var INDICATOR_NAME = "ContextMenuItemIndicator", ContextMenuItemIndicator = React.forwardRef((i, a) => {
let { __scopeContextMenu: o,...s } = i, c = useMenuScope(o);
return /* @__PURE__ */ jsx(ItemIndicator$1, {
...c,
...s,
ref: a
});
});
ContextMenuItemIndicator.displayName = INDICATOR_NAME;
var SEPARATOR_NAME$1 = "ContextMenuSeparator", ContextMenuSeparator = React.forwardRef((i, a) => {
let { __scopeContextMenu: o,...s } = i, c = useMenuScope(o);
return /* @__PURE__ */ jsx(Separator$2, {
...c,
...s,
ref: a
});
});
ContextMenuSeparator.displayName = SEPARATOR_NAME$1;
var ARROW_NAME$1 = "ContextMenuArrow", ContextMenuArrow = React.forwardRef((i, a) => {
let { __scopeContextMenu: o,...s } = i, c = useMenuScope(o);
return /* @__PURE__ */ jsx(Arrow2$1, {
...c,
...s,
ref: a
});
});
ContextMenuArrow.displayName = ARROW_NAME$1;
var SUB_NAME = "ContextMenuSub", ContextMenuSub = (i) => {
let { __scopeContextMenu: a, children: o, onOpenChange: s, open: c, defaultOpen: d } = i, f = useMenuScope(a), [g, b] = useControllableState({
prop: c,
defaultProp: d ?? !1,
onChange: s,
caller: SUB_NAME
});
return /* @__PURE__ */ jsx(Sub, {
...f,
open: g,
onOpenChange: b,
children: o
});
};
ContextMenuSub.displayName = SUB_NAME;
var SUB_TRIGGER_NAME = "ContextMenuSubTrigger", ContextMenuSubTrigger = React.forwardRef((i, a) => {
let { __scopeContextMenu: o,...s } = i, c = useMenuScope(o);
return /* @__PURE__ */ jsx(SubTrigger, {
...c,
...s,
ref: a
});
});
ContextMenuSubTrigger.displayName = SUB_TRIGGER_NAME;
var SUB_CONTENT_NAME = "ContextMenuSubContent", ContextMenuSubContent = React.forwardRef((i, a) => {
let { __scopeContextMenu: o,...s } = i, c = useMenuScope(o);
return /* @__PURE__ */ jsx(SubContent, {
...c,
...s,
ref: a,
style: {
...i.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(i) {
return (a) => a.pointerType === "mouse" ? void 0 : i(a);
}
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 = (i) => {
let { __scopeSelect: a, children: o, open: s, defaultOpen: c, onOpenChange: d, value: f, defaultValue: g, onValueChange: b, dir: x, name: S, autoComplete: C, disabled: w, required: E, form: O } = i, A = usePopperScope(a), [M, F] = React.useState(null), [I, R] = React.useState(null), [V, rP] = React.useState(!1), iP = useDirection(x), [q, aP] = useControllableState({
prop: s,
defaultProp: c ?? !1,
onChange: d,
caller: SELECT_NAME
}), [oP, sP] = useControllableState({
prop: f,
defaultProp: g,
onChange: b,
caller: SELECT_NAME
}), cP = React.useRef(null), lP = M ? O || !!M.closest("form") : !0, [uP, dP] = React.useState(/* @__PURE__ */ new Set()), fP = Array.from(uP).map((i) => i.props.value).join(";");
return /* @__PURE__ */ jsx(Root2$6, {
...A,
children: /* @__PURE__ */ jsxs(SelectProvider, {
required: E,
scope: a,
trigger: M,
onTriggerChange: F,
valueNode: I,
onValueNodeChange: R,
valueNodeHasChildren: V,
onValueNodeHasChildrenChange: rP,
contentId: useId$1(),
value: oP,
onValueChange: sP,
open: q,
onOpenChange: aP,
dir: iP,
triggerPointerDownPosRef: cP,
disabled: w,
children: [/* @__PURE__ */ jsx(Collection$1.Provider, {
scope: a,
children: /* @__PURE__ */ jsx(SelectNativeOptionsProvider, {
scope: i.__scopeSelect,
onNativeOptionAdd: React.useCallback((i) => {
dP((a) => new Set(a).add(i));
}, []),
onNativeOptionRemove: React.useCallback((i) => {
dP((a) => {
let o = new Set(a);
return o.delete(i), o;
});
}, []),
children: o
})
}), lP ? /* @__PURE__ */ jsxs(SelectBubbleInput, {
"aria-hidden": !0,
required: E,
tabIndex: -1,
name: S,
autoComplete: C,
value: oP,
onChange: (i) => sP(i.target.value),
disabled: w,
form: O,
children: [oP === void 0 ? /* @__PURE__ */ jsx("option", { value: "" }) : null, Array.from(uP)]
}, fP) : null]
})
});
};
Select$1.displayName = SELECT_NAME;
var TRIGGER_NAME$1 = "SelectTrigger", SelectTrigger$1 = React.forwardRef((i, a) => {
let { __scopeSelect: o, disabled: s = !1,...c } = i, d = usePopperScope(o), f = useSelectContext(TRIGGER_NAME$1, o), g = f.disabled || s, b = useComposedRefs$1(a, f.onTriggerChange), x = useCollection$1(o), S = React.useRef("touch"), [C, w, E] = useTypeaheadSearch((i) => {
let a = x().filter((i) => !i.disabled), o = a.find((i) => i.value === f.value), s = findNextItem(a, i, o);
s !== void 0 && f.onValueChange(s.value);
}), O = (i) => {
g || (f.onOpenChange(!0), E()), i && (f.triggerPointerDownPosRef.current = {
x: Math.round(i.pageX),
y: Math.round(i.pageY)
});
};
return /* @__PURE__ */ jsx(Anchor, {
asChild: !0,
...d,
children: /* @__PURE__ */ jsx(Primitive.button, {
type: "button",
role: "combobox",
"aria-controls": f.contentId,
"aria-expanded": f.open,
"aria-required": f.required,
"aria-autocomplete": "none",
dir: f.dir,
"data-state": f.open ? "open" : "closed",
disabled: g,
"data-disabled": g ? "" : void 0,
"data-placeholder": shouldShowPlaceholder(f.value) ? "" : void 0,
...c,
ref: b,
onClick: composeEventHandlers(c.onClick, (i) => {
i.currentTarget.focus(), S.current !== "mouse" && O(i);
}),
onPointerDown: composeEventHandlers(c.onPointerDown, (i) => {
S.current = i.pointerType;
let a = i.target;
a.hasPointerCapture(i.pointerId) && a.releasePointerCapture(i.pointerId), i.button === 0 && i.ctrlKey === !1 && i.pointerType === "mouse" && (O(i), i.preventDefault());
}),
onKeyDown: composeEventHandlers(c.onKeyDown, (i) => {
let a = C.current !== "";
!(i.ctrlKey || i.altKey || i.metaKey) && i.key.length === 1 && w(i.key), !(a && i.key === " ") && OPEN_KEYS.includes(i.key) && (O(), i.preventDefault());
})
})
});
});
SelectTrigger$1.displayName = TRIGGER_NAME$1;
var VALUE_NAME = "SelectValue", SelectValue$1 = React.forwardRef((i, a) => {
let { __scopeSelect: o, className: s, style: c, children: d, placeholder: f = "",...g } = i, b = useSelectContext(VALUE_NAME, o), { onValueNodeHasChildrenChange: x } = b, S = d !== void 0, C = useComposedRefs$1(a, b.onValueNodeChange);
return useLayoutEffect2(() => {
x(S);
}, [x, S]), /* @__PURE__ */ jsx(Primitive.span, {
...g,
ref: C,
style: { pointerEvents: "none" },
children: shouldShowPlaceholder(b.value) ? /* @__PURE__ */ jsx(Fragment$1, { children: f }) : d
});
});
SelectValue$1.displayName = VALUE_NAME;
var ICON_NAME = "SelectIcon", SelectIcon = React.forwardRef((i, a) => {
let { __scopeSelect: o, children: s,...c } = i;
return /* @__PURE__ */ jsx(Primitive.span, {
"aria-hidden": !0,
...c,
ref: a,
children: s || "▼"
});
});
SelectIcon.displayName = ICON_NAME;
var PORTAL_NAME = "SelectPortal", SelectPortal = (i) => /* @__PURE__ */ jsx(Portal, {
asChild: !0,
...i
});
SelectPortal.displayName = PORTAL_NAME;
var CONTENT_NAME$2 = "SelectContent", SelectContent$1 = React.forwardRef((i, a) => {
let o = useSelectContext(CONTENT_NAME$2, i.__scopeSelect), [s, c] = React.useState();
if (useLayoutEffect2(() => {
c(new DocumentFragment());
}, []), !o.open) {
let a = s;
return a ? ReactDOM$2.createPortal(/* @__PURE__ */ jsx(SelectContentProvider, {
scope: i.__scopeSelect,
children: /* @__PURE__ */ jsx(Collection$1.Slot, {
scope: i.__scopeSelect,
children: /* @__PURE__ */ jsx("div", { children: i.children })
})
}), a) : null;
}
return /* @__PURE__ */ jsx(SelectContentImpl, {
...i,
ref: a
});
});
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.forwardRef((i, a) => {
let { __scopeSelect: o, position: s = "item-aligned", onCloseAutoFocus: c, onEscapeKeyDown: d, onPointerDownOutside: f, side: g, sideOffset: b, align: x, alignOffset: S, arrowPadding: C, collisionBoundary: w, collisionPadding: E, sticky: O, hideWhenDetached: A, avoidCollisions: M,...F } = i, I = useSelectContext(CONTENT_NAME$2, o), [R, V] = React.useState(null), [rP, iP] = React.useState(null), q = useComposedRefs$1(a, (i) => V(i)), [aP, oP] = React.useState(null), [sP, cP] = React.useState(null), lP = useCollection$1(o), [uP, dP] = React.useState(!1), fP = React.useRef(!1);
React.useEffect(() => {
if (R) return hideOthers(R);
}, [R]), useFocusGuards();
let pP = React.useCallback((i) => {
let [a, ...o] = lP().map((i) => i.ref.current), [s] = o.slice(-1), c = document.activeElement;
for (let o of i) if (o === c || (o?.scrollIntoView({ block: "nearest" }), o === a && rP && (rP.scrollTop = 0), o === s && rP && (rP.scrollTop = rP.scrollHeight), o?.focus(), document.activeElement !== c)) return;
}, [lP, rP]), mP = React.useCallback(() => pP([aP, R]), [
pP,
aP,
R
]);
React.useEffect(() => {
uP && mP();
}, [uP, mP]);
let { onOpenChange: hP, triggerPointerDownPosRef: gP } = I;
React.useEffect(() => {
if (R) {
let i = {
x: 0,
y: 0
}, a = (a) => {
i = {
x: Math.abs(Math.round(a.pageX) - (gP.current?.x ?? 0)),
y: Math.abs(Math.round(a.pageY) - (gP.current?.y ?? 0))
};
}, o = (o) => {
i.x <= 10 && i.y <= 10 ? o.preventDefault() : R.contains(o.target) || hP(!1), document.removeEventListener("pointermove", a), gP.current = null;
};
return gP.current !== null && (document.addEventListener("pointermove", a), document.addEventListener("pointerup", o, {
capture: !0,
once: !0
})), () => {
document.removeEventListener("pointermove", a), document.removeEventListener("pointerup", o, { capture: !0 });
};
}
}, [
R,
hP,
gP
]), React.useEffect(() => {
let i = () => hP(!1);
return window.addEventListener("blur", i), window.addEventListener("resize", i), () => {
window.removeEventListener("blur", i), window.removeEventListener("resize", i);
};
}, [hP]);
let [_P, vP] = useTypeaheadSearch((i) => {
let a = lP().filter((i) => !i.disabled), o = a.find((i) => i.ref.current === document.activeElement), s = findNextItem(a, i, o);
s && setTimeout(() => s.ref.current.focus());
}), yP = React.useCallback((i, a, o) => {
let s = !fP.current && !o;
(I.value !== void 0 && I.value === a || s) && (oP(i), s && (fP.current = !0));
}, [I.value]), bP = React.useCallback(() => R?.focus(), [R]), xP = React.useCallback((i, a, o) => {
let s = !fP.current && !o;
(I.value !== void 0 && I.value === a || s) && cP(i);
}, [I.value]), SP = s === "popper" ? SelectPopperPosition : SelectItemAlignedPosition, CP = SP === SelectPopperPosition ? {
side: g,
sideOffset: b,
align: x,
alignOffset: S,
arrowPadding: C,
collisionBoundary: w,
collisionPadding: E,
sticky: O,
hideWhenDetached: A,
avoidCollisions: M
} : {};
return /* @__PURE__ */ jsx(SelectContentProvider, {
scope: o,
content: R,
viewport: rP,
onViewportChange: iP,
itemRefCallback: yP,
selectedItem: aP,
onItemLeave: bP,
itemTextRefCallback: xP,
focusSelectedItem: mP,
selectedItemText: sP,
position: s,
isPositioned: uP,
searchRef: _P,
children: /* @__PURE__ */ jsx(Combination_default, {
as: Slot$1,
allowPinchZoom: !0,
children: /* @__PURE__ */ jsx(FocusScope, {
asChild: !0,
trapped: I.open,
onMountAutoFocus: (i) => {
i.preventDefault();
},
onUnmountAutoFocus: composeEventHandlers(c, (i) => {
I.trigger?.focus({ preventScroll: !0 }), i.preventDefault();
}),
children: /* @__PURE__ */ jsx(DismissableLayer, {
asChild: !0,
disableOutsidePointerEvents: !0,
onEscapeKeyDown: d,
onPointerDownOutside: f,
onFocusOutside: (i) => i.preventDefault(),
onDismiss: () => I.onOpenChange(!1),
children: /* @__PURE__ */ jsx(SP, {
role: "listbox",
id: I.contentId,
"data-state": I.open ? "open" : "closed",
dir: I.dir,
onContextMenu: (i) => i.preventDefault(),
...F,
...CP,
onPlaced: () => dP(!0),
ref: q,
style: {
display: "flex",
flexDirection: "column",
outline: "none",
...F.style
},
onKeyDown: composeEventHandlers(F.onKeyDown, (i) => {
let a = i.ctrlKey || i.altKey || i.metaKey;
if (i.key === "Tab" && i.preventDefault(), !a && i.key.length === 1 && vP(i.key), [
"ArrowUp",
"ArrowDown",
"Home",
"End"
].includes(i.key)) {
let a = lP().filter((i) => !i.disabled).map((i) => i.ref.current);
if (["ArrowUp", "End"].includes(i.key) && (a = a.slice().reverse()), ["ArrowUp", "ArrowDown"].includes(i.key)) {
let o = i.target, s = a.indexOf(o);
a = a.slice(s + 1);
}
setTimeout(() => pP(a)), i.preventDefault();
}
})
})
})
})
})
});
});
SelectContentImpl.displayName = CONTENT_IMPL_NAME;
var ITEM_ALIGNED_POSITION_NAME = "SelectItemAlignedPosition", SelectItemAlignedPosition = React.forwardRef((i, a) => {
let { __scopeSelect: o, onPlaced: s,...c } = i, d = useSelectContext(CONTENT_NAME$2, o), f = useSelectContentContext(CONTENT_NAME$2, o), [g, b] = React.useState(null), [x, S] = React.useState(null), C = useComposedRefs$1(a, (i) => S(i)), w = useCollection$1(o), E = React.useRef(!1), O = React.useRef(!0), { viewport: A, selectedItem: M, selectedItemText: F, focusSelectedItem: I } = f, R = React.useCallback(() => {
if (d.trigger && d.valueNode && g && x && A && M && F) {
let i = d.trigger.getBoundingClientRect(), a = x.getBoundingClientRect(), o = d.valueNode.getBoundingClientRect(), c = F.getBoundingClientRect();
if (d.dir !== "rtl") {
let s = c.left - a.left, d = o.left - s, f = i.left - d, b = i.width + f, x = Math.max(b, a.width), S = window.innerWidth - CONTENT_MARGIN, C = clamp(d, [CONTENT_MARGIN, Math.max(CONTENT_MARGIN, S - x)]);
g.style.minWidth = b + "px", g.style.left = C + "px";
} else {
let s = a.right - c.right, d = window.innerWidth - o.right - s, f = window.innerWidth - i.right - d, b = i.width + f, x = Math.max(b, a.width), S = window.innerWidth - CONTENT_MARGIN, C = clamp(d, [CONTENT_MARGIN, Math.max(CONTENT_MARGIN, S - x)]);
g.style.minWidth = b + "px", g.style.right = C + "px";
}
let f = w(), b = window.innerHeight - CONTENT_MARGIN * 2, S = A.scrollHeight, C = window.getComputedStyle(x), O = parseInt(C.borderTopWidth, 10), I = parseInt(C.paddingTop, 10), R = parseInt(C.borderBottomWidth, 10), V = parseInt(C.paddingBottom, 10), rP = O + I + S + V + R, iP = Math.min(M.offsetHeight * 5, rP), q = window.getComputedStyle(A), aP = parseInt(q.paddingTop, 10), oP = parseInt(q.paddingBottom, 10), sP = i.top + i.height / 2 - CONTENT_MARGIN, cP = b - sP, lP = M.offsetHeight / 2, uP = M.offsetTop + lP, dP = O + I + uP, fP = rP - dP;
if (dP <= sP) {
let i = f.length > 0 && M === f[f.length - 1].ref.current;
g.style.bottom = "0px";
let a = x.clientHeight - A.offsetTop - A.offsetHeight, o = Math.max(cP, lP + (i ? oP : 0) + a + R), s = dP + o;
g.style.height = s + "px";
} else {
let i = f.length > 0 && M === f[0].ref.current;
g.style.top = "0px";
let a = Math.max(sP, O + A.offsetTop + (i ? aP : 0) + lP) + fP;
g.style.height = a + "px", A.scrollTop = dP - sP + A.offsetTop;
}
g.style.margin = `${CONTENT_MARGIN}px 0`, g.style.minHeight = iP + "px", g.style.maxHeight = b + "px", s?.(), requestAnimationFrame(() => E.current = !0);
}
}, [
w,
d.trigger,
d.valueNode,
g,
x,
A,
M,
F,
d.dir,
s
]);
useLayoutEffect2(() => R(), [R]);
let [V, rP] = React.useState();
useLayoutEffect2(() => {
x && rP(window.getComputedStyle(x).zIndex);
}, [x]);
let iP = React.useCallback((i) => {
i && O.current === !0 && (R(), I?.(), O.current = !1);
}, [R, I]);
return /* @__PURE__ */ jsx(SelectViewportProvider, {
scope: o,
contentWrapper: g,
shouldExpandOnScrollRef: E,
onScrollButtonChange: iP,
children: /* @__PURE__ */ jsx("div", {
ref: b,
style: {
display: "flex",
flexDirection: "column",
position: "fixed",
zIndex: V
},
children: /* @__PURE__ */ jsx(Primitive.div, {
...c,
ref: C,
style: {
boxSizing: "border-box",
maxHeight: "100%",
...c.style
}
})
})
});
});
SelectItemAlignedPosition.displayName = ITEM_ALIGNED_POSITION_NAME;
var POPPER_POSITION_NAME = "SelectPopperPosition", SelectPopperPosition = React.forwardRef((i, a) => {
let { __scopeSelect: o, align: s = "start", collisionPadding: c = CONTENT_MARGIN,...d } = i, f = usePopperScope(o);
return /* @__PURE__ */ jsx(Content$1, {
...f,
...d,
ref: a,
align: s,
collisionPadding: c,
style: {
boxSizing: "border-box",
...d.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.forwardRef((i, a) => {
let { __scopeSelect: o, nonce: s,...c } = i, d = useSelectContentContext(VIEWPORT_NAME, o), f = useSelectViewportContext(VIEWPORT_NAME, o), g = useComposedRefs$1(a, d.onViewportChange), b = React.useRef(0);
return /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx("style", {
dangerouslySetInnerHTML: { __html: "[data-radix-select-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-select-viewport]::-webkit-scrollbar{display:none}" },
nonce: s
}), /* @__PURE__ */ jsx(Collection$1.Slot, {
scope: o,
children: /* @__PURE__ */ jsx(Primitive.div, {
"data-radix-select-viewport": "",
role: "presentation",
...c,
ref: g,
style: {
position: "relative",
flex: 1,
overflow: "hidden auto",
...c.style
},
onScroll: composeEventHandlers(c.onScroll, (i) => {
let a = i.currentTarget, { contentWrapper: o, shouldExpandOnScrollRef: s } = f;
if (s?.current && o) {
let i = Math.abs(b.current - a.scrollTop);
if (i > 0) {
let s = window.innerHeight - CONTENT_MARGIN * 2, c = parseFloat(o.style.minHeight), d = parseFloat(o.style.height), f = Math.max(c, d);
if (f < s) {
let c = f + i, d = Math.min(s, c), g = c - d;
o.style.height = d + "px", o.style.bottom === "0px" && (a.scrollTop = g > 0 ? g : 0, o.style.justifyContent = "flex-end");
}
}
}
b.current = a.scrollTop;
})
})
})] });
});
SelectViewport.displayName = VIEWPORT_NAME;
var GROUP_NAME = "SelectGroup", [SelectGroupContextProvider, useSelectGroupContext] = createSelectContext(GROUP_NAME), SelectGroup = React.forwardRef((i, a) => {
let { __scopeSelect: o,...s } = i, c = useId$1();
return /* @__PURE__ */ jsx(SelectGroupContextProvider, {
scope: o,
id: c,
children: /* @__PURE__ */ jsx(Primitive.div, {
role: "group",
"aria-labelledby": c,
...s,
ref: a
})
});
});
SelectGroup.displayName = GROUP_NAME;
var LABEL_NAME = "SelectLabel", SelectLabel = React.forwardRef((i, a) => {
let { __scopeSelect: o,...s } = i, c = useSelectGroupContext(LABEL_NAME, o);
return /* @__PURE__ */ jsx(Primitive.div, {
id: c.id,
...s,
ref: a
});
});
SelectLabel.displayName = LABEL_NAME;
var ITEM_NAME$2 = "SelectItem", [SelectItemContextProvider, useSelectItemContext] = createSelectContext(ITEM_NAME$2), SelectItem$1 = React.forwardRef((i, a) => {
let { __scopeSelect: o, value: s, disabled: c = !1, textValue: d,...f } = i, g = useSelectContext(ITEM_NAME$2, o), b = useSelectContentContext(ITEM_NAME$2, o), x = g.value === s, [S, C] = React.useState(d ?? ""), [w, E] = React.useState(!1), O = useComposedRefs$1(a, (i) => b.itemRefCallback?.(i, s, c)), A = useId$1(), M = React.useRef("touch"), F = () => {
c || (g.onValueChange(s), g.onOpenChange(!1));
};
if (s === "") 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: o,
value: s,
disabled: c,
textId: A,
isSelected: x,
onItemTextChange: React.useCallback((i) => {
C((a) => a || (i?.textContent ?? "").trim());
}, []),
children: /* @__PURE__ */ jsx(Collection$1.ItemSlot, {
scope: o,
value: s,
disabled: c,
textValue: S,
children: /* @__PURE__ */ jsx(Primitive.div, {
role: "option",
"aria-labelledby": A,
"data-highlighted": w ? "" : void 0,
"aria-selected": x && w,
"data-state": x ? "checked" : "unchecked",
"aria-disabled": c || void 0,
"data-disabled": c ? "" : void 0,
tabIndex: c ? void 0 : -1,
...f,
ref: O,
onFocus: composeEventHandlers(f.onFocus, () => E(!0)),
onBlur: composeEventHandlers(f.onBlur, () => E(!1)),
onClick: composeEventHandlers(f.onClick, () => {
M.current !== "mouse" && F();
}),
onPointerUp: composeEventHandlers(f.onPointerUp, () => {
M.current === "mouse" && F();
}),
onPointerDown: composeEventHandlers(f.onPointerDown, (i) => {
M.current = i.pointerType;
}),
onPointerMove: composeEventHandlers(f.onPointerMove, (i) => {
M.current = i.pointerType, c ? b.onItemLeave?.() : M.current === "mouse" && i.currentTarget.focus({ preventScroll: !0 });
}),
onPointerLeave: composeEventHandlers(f.onPointerLeave, (i) => {
i.currentTarget === document.activeElement && b.onItemLeave?.();
}),
onKeyDown: composeEventHandlers(f.onKeyDown, (i) => {
b.searchRef?.current !== "" && i.key === " " || (SELECTION_KEYS.includes(i.key) && F(), i.key === " " && i.preventDefault());
})
})
})
});
});
SelectItem$1.displayName = ITEM_NAME$2;
var ITEM_TEXT_NAME = "SelectItemText", SelectItemText = React.forwardRef((i, a) => {
let { __scopeSelect: o, className: s, style: c,...d } = i, f = useSelectContext(ITEM_TEXT_NAME, o), g = useSelectContentContext(ITEM_TEXT_NAME, o), b = useSelectItemContext(ITEM_TEXT_NAME, o), x = useSelectNativeOptionsContext(ITEM_TEXT_NAME, o), [S, C] = React.useState(null), w = useComposedRefs$1(a, (i) => C(i), b.onItemTextChange, (i) => g.itemTextRefCallback?.(i, b.value, b.disabled)), E = S?.textContent, O = React.useMemo(() => /* @__PURE__ */ jsx("option", {
value: b.value,
disabled: b.disabled,
children: E
}, b.value), [
b.disabled,
b.value,
E
]), { onNativeOptionAdd: A, onNativeOptionRemove: M } = x;
return useLayoutEffect2(() => (A(O), () => M(O)), [
A,
M,
O
]), /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(Primitive.span, {
id: b.textId,
...d,
ref: w
}), b.isSelected && f.valueNode && !f.valueNodeHasChildren ? ReactDOM$2.createPortal(d.children, f.valueNode) : null] });
});
SelectItemText.displayName = ITEM_TEXT_NAME;
var ITEM_INDICATOR_NAME = "SelectItemIndicator", SelectItemIndicator = React.forwardRef((i, a) => {
let { __scopeSelect: o,...s } = i;
return useSelectItemContext(ITEM_INDICATOR_NAME, o).isSelected ? /* @__PURE__ */ jsx(Primitive.span, {
"aria-hidden": !0,
...s,
ref: a
}) : null;
});
SelectItemIndicator.displayName = ITEM_INDICATOR_NAME;
var SCROLL_UP_BUTTON_NAME = "SelectScrollUpButton", SelectScrollUpButton$1 = React.forwardRef((i, a) => {
let o = useSelectContentContext(SCROLL_UP_BUTTON_NAME, i.__scopeSelect), s = useSelectViewportContext(SCROLL_UP_BUTTON_NAME, i.__scopeSelect), [c, d] = React.useState(!1), f = useComposedRefs$1(a, s.onScrollButtonChange);
return useLayoutEffect2(() => {
if (o.viewport && o.isPositioned) {
let i = function() {
let i = a.scrollTop > 0;
d(i);
}, a = o.viewport;
return i(), a.addEventListener("scroll", i), () => a.removeEventListener("scroll", i);
}
}, [o.viewport, o.isPositioned]), c ? /* @__PURE__ */ jsx(SelectScrollButtonImpl, {
...i,
ref: f,
onAutoScroll: () => {
let { viewport: i, selectedItem: a } = o;
i && a && (i.scrollTop -= a.offsetHeight);
}
}) : null;
});
SelectScrollUpButton$1.displayName = SCROLL_UP_BUTTON_NAME;
var SCROLL_DOWN_BUTTON_NAME = "SelectScrollDownButton", SelectScrollDownButton$1 = React.forwardRef((i, a) => {
let o = useSelectContentContext(SCROLL_DOWN_BUTTON_NAME, i.__scopeSelect), s = useSelectViewportContext(SCROLL_DOWN_BUTTON_NAME, i.__scopeSelect), [c, d] = React.useState(!1), f = useComposedRefs$1(a, s.onScrollButtonChange);
return useLayoutEffect2(() => {
if (o.viewport && o.isPositioned) {
let i = function() {
let i = a.scrollHeight - a.clientHeight, o = Math.ceil(a.scrollTop) < i;
d(o);
}, a = o.viewport;
return i(), a.addEventListener("scroll", i), () => a.removeEventListener("scroll", i);
}
}, [o.viewport, o.isPositioned]), c ? /* @__PURE__ */ jsx(SelectScrollButtonImpl, {
...i,
ref: f,
onAutoScroll: () => {
let { viewport: i, selectedItem: a } = o;
i && a && (i.scrollTop += a.offsetHeight);
}
}) : null;
});
SelectScrollDownButton$1.displayName = SCROLL_DOWN_BUTTON_NAME;
var SelectScrollButtonImpl = React.forwardRef((i, a) => {
let { __scopeSelect: o, onAutoScroll: s,...c } = i, d = useSelectContentContext("SelectScrollButton", o), f = React.useRef(null), g = useCollection$1(o), b = React.useCallback(() => {
f.current !== null && (window.clearInterval(f.current), f.current = null);
}, []);
return React.useEffect(() => () => b(), [b]), useLayoutEffect2(() => {
g().find((i) => i.ref.current === document.activeElement)?.ref.current?.scrollIntoView({ block: "nearest" });
}, [g]), /* @__PURE__ */ jsx(Primitive.div, {
"aria-hidden": !0,
...c,
ref: a,
style: {
flexShrink: 0,
...c.style
},
onPointerDown: composeEventHandlers(c.onPointerDown, () => {
f.current === null && (f.current = window.setInterval(s, 50));
}),
onPointerMove: composeEventHandlers(c.onPointerMove, () => {
d.onItemLeave?.(), f.current === null && (f.current = window.setInterval(s, 50));
}),
onPointerLeave: composeEventHandlers(c.onPointerLeave, () => {
b();
})
});
}), SEPARATOR_NAME = "SelectSeparator", SelectSeparator = React.forwardRef((i, a) => {
let { __scopeSelect: o,...s } = i;
return /* @__PURE__ */ jsx(Primitive.div, {
"aria-hidden": !0,
...s,
ref: a
});
});
SelectSeparator.displayName = SEPARATOR_NAME;
var ARROW_NAME = "SelectArrow", SelectArrow = React.forwardRef((i, a) => {
let { __scopeSelect: o,...s } = i, c = usePopperScope(o), d = useSelectContext(ARROW_NAME, o), f = useSelectContentContext(ARROW_NAME, o);
return d.open && f.position === "popper" ? /* @__PURE__ */ jsx(Arrow, {
...c,
...s,
ref: a
}) : null;
});
SelectArrow.displayName = ARROW_NAME;
var BUBBLE_INPUT_NAME$2 = "SelectBubbleInput", SelectBubbleInput = React.forwardRef(({ __scopeSelect: i, value: a,...o }, s) => {
let c = React.useRef(null), d = useComposedRefs$1(s, c), f = usePrevious$1(a);
return React.useEffect(() => {
let i = c.current;
if (!i) return;
let o = window.HTMLSelectElement.prototype, s = Object.getOwnPropertyDescriptor(o, "value").set;
if (f !== a && s) {
let o = new Event("change", { bubbles: !0 });
s.call(i, a), i.dispatchEvent(o);
}
}, [f, a]), /* @__PURE__ */ jsx(Primitive.select, {
...o,
style: {
...VISUALLY_HIDDEN_STYLES,
...o.style
},
ref: d,
defaultValue: a
});
});
SelectBubbleInput.displayName = BUBBLE_INPUT_NAME$2;
function shouldShowPlaceholder(i) {
return i === "" || i === void 0;
}
function useTypeaheadSearch(i) {
let a = useCallbackRef(i), o = React.useRef(""), s = React.useRef(0), c = React.useCallback((i) => {
let c = o.current + i;
a(c), (function i(a) {
o.current = a, window.clearTimeout(s.current), a !== "" && (s.current = window.setTimeout(() => i(""), 1e3));
})(c);
}, [a]), d = React.useCallback(() => {
o.current = "", window.clearTimeout(s.current);
}, []);
return React.useEffect(() => () => window.clearTimeout(s.current), []), [
o,
c,
d
];
}
function findNextItem(i, a, o) {
let s = a.length > 1 && Array.from(a).every((i) => i === a[0]) ? a[0] : a, c = o ? i.indexOf(o) : -1, d = wrapArray(i, Math.max(c, 0));
s.length === 1 && (d = d.filter((i) => i !== o));
let f = d.find((i) => i.textValue.toLowerCase().startsWith(s.toLowerCase()));
return f === o ? void 0 : f;
}
function wrapArray(i, a) {
return i.map((o, s) => i[(a + s) % i.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.forwardRef((i, a) => {
let { name: o, min: s = 0, max: c = 100, step: d = 1, orientation: f = "horizontal", disabled: g = !1, minStepsBetweenThumbs: b = 0, defaultValue: x = [s], value: S, onValueChange: C = () => {}, onValueCommit: w = () => {}, inverted: E = !1, form: O,...A } = i, M = React.useRef(/* @__PURE__ */ new Set()), F = React.useRef(0), I = f === "horizontal" ? SliderHorizontal : SliderVertical, [R = [], V] = useControllableState({
prop: S,
defaultProp: x,
onChange: (i) => {
[...M.current][F.current]?.focus(), C(i);
}
}), rP = React.useRef(R);
function iP(i) {
let a = getClosestValueIndex(R, i);
oP(i, a);
}
function q(i) {
oP(i, F.current);
}
function aP() {
let i = rP.current[F.current];
R[F.current] !== i && w(R);
}
function oP(i, a, { commit: o } = { commit: !1 }) {
let f = getDecimalCount(d), g = roundValue(Math.round((i - s) / d) * d + s, f), x = clamp(g, [s, c]);
V((i = []) => {
let s = getNextSortedValues(i, x, a);
if (hasMinStepsBetweenValues(s, b * d)) {
F.current = s.indexOf(x);
let a = String(s) !== String(i);
return a && o && w(s), a ? s : i;
} else return i;
});
}
return /* @__PURE__ */ jsx(SliderProvider, {
scope: i.__scopeSlider,
name: o,
disabled: g,
min: s,
max: c,
valueIndexToChangeRef: F,
thumbs: M.current,
values: R,
orientation: f,
form: O,
children: /* @__PURE__ */ jsx(Collection.Provider, {
scope: i.__scopeSlider,
children: /* @__PURE__ */ jsx(Collection.Slot, {
scope: i.__scopeSlider,
children: /* @__PURE__ */ jsx(I, {
"aria-disabled": g,
"data-disabled": g ? "" : void 0,
...A,
ref: a,
onPointerDown: composeEventHandlers(A.onPointerDown, () => {
g || (rP.current = R);
}),
min: s,
max: c,
inverted: E,
onSlideStart: g ? void 0 : iP,
onSlideMove: g ? void 0 : q,
onSlideEnd: g ? void 0 : aP,
onHomeKeyDown: () => !g && oP(s, 0, { commit: !0 }),
onEndKeyDown: () => !g && oP(c, R.length - 1, { commit: !0 }),
onStepKeyDown: ({ event: i, direction: a }) => {
if (!g) {
let o = PAGE_KEYS.includes(i.key) || i.shiftKey && ARROW_KEYS.includes(i.key) ? 10 : 1, s = F.current, c = R[s], f = d * o * a;
oP(c + f, s, { commit: !0 });
}
}
})
})
})
});
});
Slider$1.displayName = SLIDER_NAME;
var [SliderOrientationProvider, useSliderOrientationContext] = createSliderContext(SLIDER_NAME, {
startEdge: "left",
endEdge: "right",
size: "width",
direction: 1
}), SliderHorizontal = React.forwardRef((i, a) => {
let { min: o, max: s, dir: c, inverted: d, onSlideStart: f, onSlideMove: g, onSlideEnd: b, onStepKeyDown: x,...S } = i, [C, w] = React.useState(null), E = useComposedRefs$1(a, (i) => w(i)), O = React.useRef(void 0), A = useDirection(c), M = A === "ltr", F = M && !d || !M && d;
function I(i) {
let a = O.current || C.getBoundingClientRect(), c = [0, a.width], d = linearScale(c, F ? [o, s] : [s, o]);
return O.current = a, d(i - a.left);
}
return /* @__PURE__ */ jsx(SliderOrientationProvider, {
scope: i.__scopeSlider,
startEdge: F ? "left" : "right",
endEdge: F ? "right" : "left",
direction: F ? 1 : -1,
size: "width",
children: /* @__PURE__ */ jsx(SliderImpl, {
dir: A,
"data-orientation": "horizontal",
...S,
ref: E,
style: {
...S.style,
"--radix-slider-thumb-transform": "translateX(-50%)"
},
onSlideStart: (i) => {
let a = I(i.clientX);
f?.(a);
},
onSlideMove: (i) => {
let a = I(i.clientX);
g?.(a);
},
onSlideEnd: () => {
O.current = void 0, b?.();
},
onStepKeyDown: (i) => {
let a = BACK_KEYS[F ? "from-left" : "from-right"].includes(i.key);
x?.({
event: i,
direction: a ? -1 : 1
});
}
})
});
}), SliderVertical = React.forwardRef((i, a) => {
let { min: o, max: s, inverted: c, onSlideStart: d, onSlideMove: f, onSlideEnd: g, onStepKeyDown: b,...x } = i, S = React.useRef(null), C = useComposedRefs$1(a, S), w = React.useRef(void 0), E = !c;
function O(i) {
let a = w.current || S.current.getBoundingClientRect(), c = [0, a.height], d = linearScale(c, E ? [s, o] : [o, s]);
return w.current = a, d(i - a.top);
}
return /* @__PURE__ */ jsx(SliderOrientationProvider, {
scope: i.__scopeSlider,
startEdge: E ? "bottom" : "top",
endEdge: E ? "top" : "bottom",
size: "height",
direction: E ? 1 : -1,
children: /* @__PURE__ */ jsx(SliderImpl, {
"data-orientation": "vertical",
...x,
ref: C,
style: {
...x.style,
"--radix-slider-thumb-transform": "translateY(50%)"
},
onSlideStart: (i) => {
let a = O(i.clientY);
d?.(a);
},
onSlideMove: (i) => {
let a = O(i.clientY);
f?.(a);
},
onSlideEnd: () => {
w.current = void 0, g?.();
},
onStepKeyDown: (i) => {
let a = BACK_KEYS[E ? "from-bottom" : "from-top"].includes(i.key);
b?.({
event: i,
direction: a ? -1 : 1
});
}
})
});
}), SliderImpl = React.forwardRef((i, a) => {
let { __scopeSlider: o, onSlideStart: s, onSlideMove: c, onSlideEnd: d, onHomeKeyDown: f, onEndKeyDown: g, onStepKeyDown: b,...x } = i, S = useSliderContext(SLIDER_NAME, o);
return /* @__PURE__ */ jsx(Primitive.span, {
...x,
ref: a,
onKeyDown: composeEventHandlers(i.onKeyDown, (i) => {
i.key === "Home" ? (f(i), i.preventDefault()) : i.key === "End" ? (g(i), i.preventDefault()) : PAGE_KEYS.concat(ARROW_KEYS).includes(i.key) && (b(i), i.preventDefault());
}),
onPointerDown: composeEventHandlers(i.onPointerDown, (i) => {
let a = i.target;
a.setPointerCapture(i.pointerId), i.preventDefault(), S.thumbs.has(a) ? a.focus() : s(i);
}),
onPointerMove: composeEventHandlers(i.onPointerMove, (i) => {
i.target.hasPointerCapture(i.pointerId) && c(i);
}),
onPointerUp: composeEventHandlers(i.onPointerUp, (i) => {
let a = i.target;
a.hasPointerCapture(i.pointerId) && (a.releasePointerCapture(i.pointerId), d(i));
})
});
}), TRACK_NAME = "SliderTrack", SliderTrack = React.forwardRef((i, a) => {
let { __scopeSlider: o,...s } = i, c = useSliderContext(TRACK_NAME, o);
return /* @__PURE__ */ jsx(Primitive.span, {
"data-disabled": c.disabled ? "" : void 0,
"data-orientation": c.orientation,
...s,
ref: a
});
});
SliderTrack.displayName = TRACK_NAME;
var RANGE_NAME = "SliderRange", SliderRange = React.forwardRef((i, a) => {
let { __scopeSlider: o,...s } = i, c = useSliderContext(RANGE_NAME, o), d = useSliderOrientationContext(RANGE_NAME, o), f = React.useRef(null), g = useComposedRefs$1(a, f), b = c.values.length, x = c.values.map((i) => convertValueToPercentage(i, c.min, c.max)), S = b > 1 ? Math.min(...x) : 0, C = 100 - Math.max(...x);
return /* @__PURE__ */ jsx(Primitive.span, {
"data-orientation": c.orientation,
"data-disabled": c.disabled ? "" : void 0,
...s,
ref: g,
style: {
...i.style,
[d.startEdge]: S + "%",
[d.endEdge]: C + "%"
}
});
});
SliderRange.displayName = RANGE_NAME;
var THUMB_NAME$1 = "SliderThumb", SliderThumb = React.forwardRef((i, a) => {
let o = useCollection(i.__scopeSlider), [s, c] = React.useState(null), d = useComposedRefs$1(a, (i) => c(i)), f = React.useMemo(() => s ? o().findIndex((i) => i.ref.current === s) : -1, [o, s]);
return /* @__PURE__ */ jsx(SliderThumbImpl, {
...i,
ref: d,
index: f
});
}), SliderThumbImpl = React.forwardRef((i, a) => {
let { __scopeSlider: o, index: s, name: c,...d } = i, f = useSliderContext(THUMB_NAME$1, o), g = useSliderOrientationContext(THUMB_NAME$1, o), [b, x] = React.useState(null), S = useComposedRefs$1(a, (i) => x(i)), C = b ? f.form || !!b.closest("form") : !0, w = useSize(b), E = f.values[s], O = E === void 0 ? 0 : convertValueToPercentage(E, f.min, f.max), A = getLabel(s, f.values.length), M = w?.[g.size], F = M ? getThumbInBoundsOffset(M, O, g.direction) : 0;
return React.useEffect(() => {
if (b) return f.thumbs.add(b), () => {
f.thumbs.delete(b);
};
}, [b, f.thumbs]), /* @__PURE__ */ jsxs("span", {
style: {
transform: "var(--radix-slider-thumb-transform)",
position: "absolute",
[g.startEdge]: `calc(${O}% + ${F}px)`
},
children: [/* @__PURE__ */ jsx(Collection.ItemSlot, {
scope: i.__scopeSlider,
children: /* @__PURE__ */ jsx(Primitive.span, {
role: "slider",
"aria-label": i["aria-label"] || A,
"aria-valuemin": f.min,
"aria-valuenow": E,
"aria-valuemax": f.max,
"aria-orientation": f.orientation,
"data-orientation": f.orientation,
"data-disabled": f.disabled ? "" : void 0,
tabIndex: f.disabled ? void 0 : 0,
...d,
ref: S,
style: E === void 0 ? { display: "none" } : i.style,
onFocus: composeEventHandlers(i.onFocus, () => {
f.valueIndexToChangeRef.current = s;
})
})
}), C && /* @__PURE__ */ jsx(SliderBubbleInput, {
name: c ?? (f.name ? f.name + (f.values.length > 1 ? "[]" : "") : void 0),
form: f.form,
value: E
}, s)]
});
});
SliderThumb.displayName = THUMB_NAME$1;
var BUBBLE_INPUT_NAME$1 = "RadioBubbleInput", SliderBubbleInput = React.forwardRef(({ __scopeSlider: i, value: a,...o }, s) => {
let c = React.useRef(null), d = useComposedRefs$1(c, s), f = usePrevious$1(a);
return React.useEffect(() => {
let i = c.current;
if (!i) return;
let o = window.HTMLInputElement.prototype, s = Object.getOwnPropertyDescriptor(o, "value").set;
if (f !== a && s) {
let o = new Event("input", { bubbles: !0 });
s.call(i, a), i.dispatchEvent(o);
}
}, [f, a]), /* @__PURE__ */ jsx(Primitive.input, {
style: { display: "none" },
...o,
ref: d,
defaultValue: a
});
});
SliderBubbleInput.displayName = BUBBLE_INPUT_NAME$1;
function getNextSortedValues(i = [], a, o) {
let s = [...i];
return s[o] = a, s.sort((i, a) => i - a);
}
function convertValueToPercentage(i, a, o) {
let s = 100 / (o - a) * (i - a);
return clamp(s, [0, 100]);
}
function getLabel(i, a) {
if (a > 2) return `Value ${i + 1} of ${a}`;
if (a === 2) return ["Minimum", "Maximum"][i];
}
function getClosestValueIndex(i, a) {
if (i.length === 1) return 0;
let o = i.map((i) => Math.abs(i - a)), s = Math.min(...o);
return o.indexOf(s);
}
function getThumbInBoundsOffset(i, a, o) {
let s = i / 2, c = linearScale([0, 50], [0, s]);
return (s - c(a) * o) * o;
}
function getStepsBetweenValues(i) {
return i.slice(0, -1).map((a, o) => i[o + 1] - a);
}
function hasMinStepsBetweenValues(i, a) {
if (a > 0) {
let o = getStepsBetweenValues(i);
return Math.min(...o) >= a;
}
return !0;
}
function linearScale(i, a) {
return (o) => {
if (i[0] === i[1] || a[0] === a[1]) return a[0];
let s = (a[1] - a[0]) / (i[1] - i[0]);
return a[0] + s * (o - i[0]);
};
}
function getDecimalCount(i) {
return (String(i).split(".")[1] || "").length;
}
function roundValue(i, a) {
let o = 10 ** a;
return Math.round(i * o) / o;
}
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.forwardRef((i, a) => {
let { __scopeSwitch: o, name: s, checked: c, defaultChecked: d, required: f, disabled: g, value: b = "on", onCheckedChange: x, form: S,...C } = i, [w, E] = React.useState(null), O = useComposedRefs$1(a, (i) => E(i)), A = React.useRef(!1), M = w ? S || !!w.closest("form") : !0, [F, I] = useControllableState({
prop: c,
defaultProp: d ?? !1,
onChange: x,
caller: SWITCH_NAME
});
return /* @__PURE__ */ jsxs(SwitchProvider, {
scope: o,
checked: F,
disabled: g,
children: [/* @__PURE__ */ jsx(Primitive.button, {
type: "button",
role: "switch",
"aria-checked": F,
"aria-required": f,
"data-state": getState(F),
"data-disabled": g ? "" : void 0,
disabled: g,
value: b,
...C,
ref: O,
onClick: composeEventHandlers(i.onClick, (i) => {
I((i) => !i), M && (A.current = i.isPropagationStopped(), A.current || i.stopPropagation());
})
}), M && /* @__PURE__ */ jsx(SwitchBubbleInput, {
control: w,
bubbles: !A.current,
name: s,
value: b,
checked: F,
required: f,
disabled: g,
form: S,
style: { transform: "translateX(-100%)" }
})]
});
});
Switch$1.displayName = SWITCH_NAME;
var THUMB_NAME = "SwitchThumb", SwitchThumb = React.forwardRef((i, a) => {
let { __scopeSwitch: o,...s } = i, c = useSwitchContext(THUMB_NAME, o);
return /* @__PURE__ */ jsx(Primitive.span, {
"data-state": getState(c.checked),
"data-disabled": c.disabled ? "" : void 0,
...s,
ref: a
});
});
SwitchThumb.displayName = THUMB_NAME;
var BUBBLE_INPUT_NAME = "SwitchBubbleInput", SwitchBubbleInput = React.forwardRef(({ __scopeSwitch: i, control: a, checked: o, bubbles: s = !0,...c }, d) => {
let f = React.useRef(null), g = useComposedRefs$1(f, d), b = usePrevious$1(o), x = useSize(a);
return React.useEffect(() => {
let i = f.current;
if (!i) return;
let a = window.HTMLInputElement.prototype, c = Object.getOwnPropertyDescriptor(a, "checked").set;
if (b !== o && c) {
let a = new Event("click", { bubbles: s });
c.call(i, o), i.dispatchEvent(a);
}
}, [
b,
o,
s
]), /* @__PURE__ */ jsx("input", {
type: "checkbox",
"aria-hidden": !0,
defaultChecked: o,
...c,
tabIndex: -1,
ref: g,
style: {
...c.style,
...x,
position: "absolute",
pointerEvents: "none",
opacity: 0,
margin: 0
}
});
});
SwitchBubbleInput.displayName = BUBBLE_INPUT_NAME;
function getState(i) {
return i ? "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.forwardRef((i, a) => {
let { __scopeTabs: o, value: s, onValueChange: c, defaultValue: d, orientation: f = "horizontal", dir: g, activationMode: b = "automatic",...x } = i, S = useDirection(g), [C, w] = useControllableState({
prop: s,
onChange: c,
defaultProp: d ?? "",
caller: TABS_NAME
});
return /* @__PURE__ */ jsx(TabsProvider, {
scope: o,
baseId: useId$1(),
value: C,
onValueChange: w,
orientation: f,
dir: S,
activationMode: b,
children: /* @__PURE__ */ jsx(Primitive.div, {
dir: S,
"data-orientation": f,
...x,
ref: a
})
});
});
Tabs$2.displayName = TABS_NAME;
var TAB_LIST_NAME = "TabsList", TabsList$1 = React.forwardRef((i, a) => {
let { __scopeTabs: o, loop: s = !0,...c } = i, d = useTabsContext(TAB_LIST_NAME, o), f = useRovingFocusGroupScope$1(o);
return /* @__PURE__ */ jsx(Root$8, {
asChild: !0,
...f,
orientation: d.orientation,
dir: d.dir,
loop: s,
children: /* @__PURE__ */ jsx(Primitive.div, {
role: "tablist",
"aria-orientation": d.orientation,
...c,
ref: a
})
});
});
TabsList$1.displayName = TAB_LIST_NAME;
var TRIGGER_NAME = "TabsTrigger", TabsTrigger$1 = React.forwardRef((i, a) => {
let { __scopeTabs: o, value: s, disabled: c = !1,...d } = i, f = useTabsContext(TRIGGER_NAME, o), g = useRovingFocusGroupScope$1(o), b = makeTriggerId(f.baseId, s), x = makeContentId(f.baseId, s), S = s === f.value;
return /* @__PURE__ */ jsx(Item$1, {
asChild: !0,
...g,
focusable: !c,
active: S,
children: /* @__PURE__ */ jsx(Primitive.button, {
type: "button",
role: "tab",
"aria-selected": S,
"aria-controls": x,
"data-state": S ? "active" : "inactive",
"data-disabled": c ? "" : void 0,
disabled: c,
id: b,
...d,
ref: a,
onMouseDown: composeEventHandlers(i.onMouseDown, (i) => {
!c && i.button === 0 && i.ctrlKey === !1 ? f.onValueChange(s) : i.preventDefault();
}),
onKeyDown: composeEventHandlers(i.onKeyDown, (i) => {
[" ", "Enter"].includes(i.key) && f.onValueChange(s);
}),
onFocus: composeEventHandlers(i.onFocus, () => {
let i = f.activationMode !== "manual";
!S && !c && i && f.onValueChange(s);
})
})
});
});
TabsTrigger$1.displayName = TRIGGER_NAME;
var CONTENT_NAME$1 = "TabsContent", TabsContent$1 = React.forwardRef((i, a) => {
let { __scopeTabs: o, value: s, forceMount: c, children: d,...f } = i, g = useTabsContext(CONTENT_NAME$1, o), b = makeTriggerId(g.baseId, s), x = makeContentId(g.baseId, s), S = s === g.value, C = React.useRef(S);
return React.useEffect(() => {
let i = requestAnimationFrame(() => C.current = !1);
return () => cancelAnimationFrame(i);
}, []), /* @__PURE__ */ jsx(Presence, {
present: c || S,
children: ({ present: o }) => /* @__PURE__ */ jsx(Primitive.div, {
"data-state": S ? "active" : "inactive",
"data-orientation": g.orientation,
role: "tabpanel",
"aria-labelledby": b,
hidden: !o,
id: x,
tabIndex: 0,
...f,
ref: a,
style: {
...i.style,
animationDuration: C.current ? "0s" : void 0
},
children: o && d
})
});
});
TabsContent$1.displayName = CONTENT_NAME$1;
function makeTriggerId(i, a) {
return `${i}-trigger-${a}`;
}
function makeContentId(i, a) {
return `${i}-content-${a}`;
}
var Root2$1 = Tabs$2, List = TabsList$1, Trigger = TabsTrigger$1, Content = TabsContent$1, NAME = "Toggle", Toggle$1 = React.forwardRef((i, a) => {
let { pressed: o, defaultPressed: s, onPressedChange: c,...d } = i, [f, g] = useControllableState({
prop: o,
onChange: c,
defaultProp: s ?? !1,
caller: NAME
});
return /* @__PURE__ */ jsx(Primitive.button, {
type: "button",
"aria-pressed": f,
"data-state": f ? "on" : "off",
"data-disabled": i.disabled ? "" : void 0,
...d,
ref: a,
onClick: composeEventHandlers(i.onClick, () => {
i.disabled || g(!f);
})
});
});
Toggle$1.displayName = NAME;
var Root = Toggle$1, TOGGLE_GROUP_NAME = "ToggleGroup", [createToggleGroupContext, createToggleGroupScope] = createContextScope(TOGGLE_GROUP_NAME, [createRovingFocusGroupScope]), useRovingFocusGroupScope = createRovingFocusGroupScope(), ToggleGroup$1 = ke.forwardRef((i, a) => {
let { type: o,...s } = i;
if (o === "single") return /* @__PURE__ */ jsx(ToggleGroupImplSingle, {
...s,
ref: a
});
if (o === "multiple") return /* @__PURE__ */ jsx(ToggleGroupImplMultiple, {
...s,
ref: a
});
throw Error(`Missing prop \`type\` expected on \`${TOGGLE_GROUP_NAME}\``);
});
ToggleGroup$1.displayName = TOGGLE_GROUP_NAME;
var [ToggleGroupValueProvider, useToggleGroupValueContext] = createToggleGroupContext(TOGGLE_GROUP_NAME), ToggleGroupImplSingle = ke.forwardRef((i, a) => {
let { value: o, defaultValue: s, onValueChange: c = () => {},...d } = i, [f, g] = useControllableState({
prop: o,
defaultProp: s ?? "",
onChange: c,
caller: TOGGLE_GROUP_NAME
});
return /* @__PURE__ */ jsx(ToggleGroupValueProvider, {
scope: i.__scopeToggleGroup,
type: "single",
value: ke.useMemo(() => f ? [f] : [], [f]),
onItemActivate: g,
onItemDeactivate: ke.useCallback(() => g(""), [g]),
children: /* @__PURE__ */ jsx(ToggleGroupImpl, {
...d,
ref: a
})
});
}), ToggleGroupImplMultiple = ke.forwardRef((i, a) => {
let { value: o, defaultValue: s, onValueChange: c = () => {},...d } = i, [f, g] = useControllableState({
prop: o,
defaultProp: s ?? [],
onChange: c,
caller: TOGGLE_GROUP_NAME
}), b = ke.useCallback((i) => g((a = []) => [...a, i]), [g]), x = ke.useCallback((i) => g((a = []) => a.filter((a) => a !== i)), [g]);
return /* @__PURE__ */ jsx(ToggleGroupValueProvider, {
scope: i.__scopeToggleGroup,
type: "multiple",
value: f,
onItemActivate: b,
onItemDeactivate: x,
children: /* @__PURE__ */ jsx(ToggleGroupImpl, {
...d,
ref: a
})
});
});
ToggleGroup$1.displayName = TOGGLE_GROUP_NAME;
var [ToggleGroupContext$1, useToggleGroupContext] = createToggleGroupContext(TOGGLE_GROUP_NAME), ToggleGroupImpl = ke.forwardRef((i, a) => {
let { __scopeToggleGroup: o, disabled: s = !1, rovingFocus: c = !0, orientation: d, dir: f, loop: g = !0,...b } = i, x = useRovingFocusGroupScope(o), S = useDirection(f), C = {
role: "group",
dir: S,
...b
};
return /* @__PURE__ */ jsx(ToggleGroupContext$1, {
scope: o,
rovingFocus: c,
disabled: s,
children: c ? /* @__PURE__ */ jsx(Root$8, {
asChild: !0,
...x,
orientation: d,
dir: S,
loop: g,
children: /* @__PURE__ */ jsx(Primitive.div, {
...C,
ref: a
})
}) : /* @__PURE__ */ jsx(Primitive.div, {
...C,
ref: a
})
});
}), ITEM_NAME$1 = "ToggleGroupItem", ToggleGroupItem$1 = ke.forwardRef((i, a) => {
let o = useToggleGroupValueContext(ITEM_NAME$1, i.__scopeToggleGroup), s = useToggleGroupContext(ITEM_NAME$1, i.__scopeToggleGroup), c = useRovingFocusGroupScope(i.__scopeToggleGroup), d = o.value.includes(i.value), f = s.disabled || i.disabled, g = {
...i,
pressed: d,
disabled: f
}, b = ke.useRef(null);
return s.rovingFocus ? /* @__PURE__ */ jsx(Item$1, {
asChild: !0,
...c,
focusable: !f,
active: d,
ref: b,
children: /* @__PURE__ */ jsx(ToggleGroupItemImpl, {
...g,
ref: a
})
}) : /* @__PURE__ */ jsx(ToggleGroupItemImpl, {
...g,
ref: a
});
});
ToggleGroupItem$1.displayName = ITEM_NAME$1;
var ToggleGroupItemImpl = ke.forwardRef((i, a) => {
let { __scopeToggleGroup: o, value: s,...c } = i, d = useToggleGroupValueContext(ITEM_NAME$1, o), f = {
role: "radio",
"aria-checked": i.pressed,
"aria-pressed": void 0
}, g = d.type === "single" ? f : void 0;
return /* @__PURE__ */ jsx(Toggle$1, {
...g,
...c,
ref: a,
onPressedChange: (i) => {
i ? d.onItemActivate(s) : d.onItemDeactivate(s);
}
});
}), Root2 = ToggleGroup$1, Item2 = ToggleGroupItem$1;
function Slider({ className: i, defaultValue: a, value: o, min: s = 0, max: c = 100,...d }) {
let f = React.useMemo(() => Array.isArray(o) ? o : Array.isArray(a) ? a : [s, c], [
o,
a,
s,
c
]);
return /* @__PURE__ */ jsxs(Root$2, {
"data-slot": "slider",
defaultValue: a,
value: o,
min: s,
max: c,
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", i),
...d,
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: f.length }, (i, a) => /* @__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"
}, a))]
});
}
var v = (i, a) => () => (a || i((a = { exports: {} }).exports, a), a.exports), y = v((i, a) => {
var o = Object.defineProperty, s = (i, a, s) => a in i ? o(i, a, {
enumerable: !0,
configurable: !0,
writable: !0,
value: s
}) : i[a] = s, c = (i, a) => () => (a || i((a = { exports: {} }).exports, a), a.exports), d = (i, a, o) => s(i, typeof a == "symbol" ? a : a + "", o), f = c((i, a) => {
var o = "\0", s = "\0", c = "", f = class {
constructor(i) {
d(this, "_isDirected", !0), d(this, "_isMultigraph", !1), d(this, "_isCompound", !1), d(this, "_label"), d(this, "_defaultNodeLabelFn", () => {}), d(this, "_defaultEdgeLabelFn", () => {}), d(this, "_nodes", {}), d(this, "_in", {}), d(this, "_preds", {}), d(this, "_out", {}), d(this, "_sucs", {}), d(this, "_edgeObjs", {}), d(this, "_edgeLabels", {}), d(this, "_nodeCount", 0), d(this, "_edgeCount", 0), d(this, "_parent"), d(this, "_children"), i && (this._isDirected = Object.hasOwn(i, "directed") ? i.directed : !0, this._isMultigraph = Object.hasOwn(i, "multigraph") ? i.multigraph : !1, this._isCompound = Object.hasOwn(i, "compound") ? i.compound : !1), this._isCompound && (this._parent = {}, this._children = {}, this._children[s] = {});
}
isDirected() {
return this._isDirected;
}
isMultigraph() {
return this._isMultigraph;
}
isCompound() {
return this._isCompound;
}
setGraph(i) {
return this._label = i, this;
}
graph() {
return this._label;
}
setDefaultNodeLabel(i) {
return this._defaultNodeLabelFn = i, typeof i != "function" && (this._defaultNodeLabelFn = () => i), this;
}
nodeCount() {
return this._nodeCount;
}
nodes() {
return Object.keys(this._nodes);
}
sources() {
var i = this;
return this.nodes().filter((a) => Object.keys(i._in[a]).length === 0);
}
sinks() {
var i = this;
return this.nodes().filter((a) => Object.keys(i._out[a]).length === 0);
}
setNodes(i, a) {
var o = arguments, s = this;
return i.forEach(function(i) {
o.length > 1 ? s.setNode(i, a) : s.setNode(i);
}), this;
}
setNode(i, a) {
return Object.hasOwn(this._nodes, i) ? (arguments.length > 1 && (this._nodes[i] = a), this) : (this._nodes[i] = arguments.length > 1 ? a : this._defaultNodeLabelFn(i), this._isCompound && (this._parent[i] = s, this._children[i] = {}, this._children[s][i] = !0), this._in[i] = {}, this._preds[i] = {}, this._out[i] = {}, this._sucs[i] = {}, ++this._nodeCount, this);
}
node(i) {
return this._nodes[i];
}
hasNode(i) {
return Object.hasOwn(this._nodes, i);
}
removeNode(i) {
var a = this;
if (Object.hasOwn(this._nodes, i)) {
var o = (i) => a.removeEdge(a._edgeObjs[i]);
delete this._nodes[i], this._isCompound && (this._removeFromParentsChildList(i), delete this._parent[i], this.children(i).forEach(function(i) {
a.setParent(i);
}), delete this._children[i]), Object.keys(this._in[i]).forEach(o), delete this._in[i], delete this._preds[i], Object.keys(this._out[i]).forEach(o), delete this._out[i], delete this._sucs[i], --this._nodeCount;
}
return this;
}
setParent(i, a) {
if (!this._isCompound) throw Error("Cannot set parent in a non-compound graph");
if (a === void 0) a = s;
else {
a += "";
for (var o = a; o !== void 0; o = this.parent(o)) if (o === i) throw Error("Setting " + a + " as parent of " + i + " would create a cycle");
this.setNode(a);
}
return this.setNode(i), this._removeFromParentsChildList(i), this._parent[i] = a, this._children[a][i] = !0, this;
}
_removeFromParentsChildList(i) {
delete this._children[this._parent[i]][i];
}
parent(i) {
if (this._isCompound) {
var a = this._parent[i];
if (a !== s) return a;
}
}
children(i = s) {
if (this._isCompound) {
var a = this._children[i];
if (a) return Object.keys(a);
} else {
if (i === s) return this.nodes();
if (this.hasNode(i)) return [];
}
}
predecessors(i) {
var a = this._preds[i];
if (a) return Object.keys(a);
}
successors(i) {
var a = this._sucs[i];
if (a) return Object.keys(a);
}
neighbors(i) {
var a = this.predecessors(i);
if (a) {
let s = new Set(a);
for (var o of this.successors(i)) s.add(o);
return Array.from(s.values());
}
}
isLeaf(i) {
var a;
return a = this.isDirected() ? this.successors(i) : this.neighbors(i), a.length === 0;
}
filterNodes(i) {
var a = new this.constructor({
directed: this._isDirected,
multigraph: this._isMultigraph,
compound: this._isCompound
});
a.setGraph(this.graph());
var o = this;
Object.entries(this._nodes).forEach(function([o, s]) {
i(o) && a.setNode(o, s);
}), Object.values(this._edgeObjs).forEach(function(i) {
a.hasNode(i.v) && a.hasNode(i.w) && a.setEdge(i, o.edge(i));
});
var s = {};
function c(i) {
var d = o.parent(i);
return d === void 0 || a.hasNode(d) ? (s[i] = d, d) : d in s ? s[d] : c(d);
}
return this._isCompound && a.nodes().forEach((i) => a.setParent(i, c(i))), a;
}
setDefaultEdgeLabel(i) {
return this._defaultEdgeLabelFn = i, typeof i != "function" && (this._defaultEdgeLabelFn = () => i), this;
}
edgeCount() {
return this._edgeCount;
}
edges() {
return Object.values(this._edgeObjs);
}
setPath(i, a) {
var o = this, s = arguments;
return i.reduce(function(i, c) {
return s.length > 1 ? o.setEdge(i, c, a) : o.setEdge(i, c), c;
}), this;
}
setEdge() {
var i, a, o, s, c = !1, d = arguments[0];
typeof d == "object" && d && "v" in d ? (i = d.v, a = d.w, o = d.name, arguments.length === 2 && (s = arguments[1], c = !0)) : (i = d, a = arguments[1], o = arguments[3], arguments.length > 2 && (s = arguments[2], c = !0)), i = "" + i, a = "" + a, o !== void 0 && (o = "" + o);
var f = x(this._isDirected, i, a, o);
if (Object.hasOwn(this._edgeLabels, f)) return c && (this._edgeLabels[f] = s), this;
if (o !== void 0 && !this._isMultigraph) throw Error("Cannot set a named edge when isMultigraph = false");
this.setNode(i), this.setNode(a), this._edgeLabels[f] = c ? s : this._defaultEdgeLabelFn(i, a, o);
var b = S(this._isDirected, i, a, o);
return i = b.v, a = b.w, Object.freeze(b), this._edgeObjs[f] = b, g(this._preds[a], i), g(this._sucs[i], a), this._in[a][f] = b, this._out[i][f] = b, this._edgeCount++, this;
}
edge(i, a, o) {
var s = arguments.length === 1 ? C(this._isDirected, arguments[0]) : x(this._isDirected, i, a, o);
return this._edgeLabels[s];
}
edgeAsObj() {
let i = this.edge(...arguments);
return typeof i == "object" ? i : { label: i };
}
hasEdge(i, a, o) {
var s = arguments.length === 1 ? C(this._isDirected, arguments[0]) : x(this._isDirected, i, a, o);
return Object.hasOwn(this._edgeLabels, s);
}
removeEdge(i, a, o) {
var s = arguments.length === 1 ? C(this._isDirected, arguments[0]) : x(this._isDirected, i, a, o), c = this._edgeObjs[s];
return c && (i = c.v, a = c.w, delete this._edgeLabels[s], delete this._edgeObjs[s], b(this._preds[a], i), b(this._sucs[i], a), delete this._in[a][s], delete this._out[i][s], this._edgeCount--), this;
}
inEdges(i, a) {
return this.isDirected() ? this.filterEdges(this._in[i], i, a) : this.nodeEdges(i, a);
}
outEdges(i, a) {
return this.isDirected() ? this.filterEdges(this._out[i], i, a) : this.nodeEdges(i, a);
}
nodeEdges(i, a) {
if (i in this._nodes) return this.filterEdges({
...this._in[i],
...this._out[i]
}, i, a);
}
filterEdges(i, a, o) {
if (i) {
var s = Object.values(i);
return o ? s.filter(function(i) {
return i.v === a && i.w === o || i.v === o && i.w === a;
}) : s;
}
}
};
function g(i, a) {
i[a] ? i[a]++ : i[a] = 1;
}
function b(i, a) {
--i[a] || delete i[a];
}
function x(i, a, s, d) {
var f = "" + a, g = "" + s;
if (!i && f > g) {
var b = f;
f = g, g = b;
}
return f + c + g + c + (d === void 0 ? o : d);
}
function S(i, a, o, s) {
var c = "" + a, d = "" + o;
if (!i && c > d) {
var f = c;
c = d, d = f;
}
var g = {
v: c,
w: d
};
return s && (g.name = s), g;
}
function C(i, a) {
return x(i, a.v, a.w, a.name);
}
a.exports = f;
}), g = c((i, a) => {
a.exports = "3.0.2";
}), b = c((i, a) => {
a.exports = {
Graph: f(),
version: g()
};
}), x = c((i, a) => {
var o = f();
a.exports = {
write: s,
read: g
};
function s(i) {
var a = {
options: {
directed: i.isDirected(),
multigraph: i.isMultigraph(),
compound: i.isCompound()
},
nodes: c(i),
edges: d(i)
};
return i.graph() !== void 0 && (a.value = structuredClone(i.graph())), a;
}
function c(i) {
return i.nodes().map(function(a) {
var o = i.node(a), s = i.parent(a), c = { v: a };
return o !== void 0 && (c.value = o), s !== void 0 && (c.parent = s), c;
});
}
function d(i) {
return i.edges().map(function(a) {
var o = i.edge(a), s = {
v: a.v,
w: a.w
};
return a.name !== void 0 && (s.name = a.name), o !== void 0 && (s.value = o), s;
});
}
function g(i) {
var a = new o(i.options).setGraph(i.value);
return i.nodes.forEach(function(i) {
a.setNode(i.v, i.value), i.parent && a.setParent(i.v, i.parent);
}), i.edges.forEach(function(i) {
a.setEdge({
v: i.v,
w: i.w,
name: i.name
}, i.value);
}), a;
}
}), S = c((i, a) => {
a.exports = s;
var o = () => 1;
function s(i, a, s, d) {
return c(i, String(a), s || o, d || function(a) {
return i.outEdges(a);
});
}
function c(i, a, o, s) {
var c = {}, d = !0, f = 0, g = i.nodes(), b = function(i) {
var a = o(i);
c[i.v].distance + a < c[i.w].distance && (c[i.w] = {
distance: c[i.v].distance + a,
predecessor: i.v
}, d = !0);
}, x = function() {
g.forEach(function(i) {
s(i).forEach(function(a) {
var o = a.v === i ? a.v : a.w, s = o === a.v ? a.w : a.v;
b({
v: o,
w: s
});
});
});
};
g.forEach(function(i) {
c[i] = { distance: i === a ? 0 : Infinity };
});
for (var S = g.length, C = 1; C < S && (d = !1, f++, x(), d); C++);
if (f === S - 1 && (d = !1, x(), d)) throw Error("The graph contains a negative weight cycle");
return c;
}
}), C = c((i, a) => {
a.exports = o;
function o(i) {
var a = {}, o = [], s;
function c(o) {
Object.hasOwn(a, o) || (a[o] = !0, s.push(o), i.successors(o).forEach(c), i.predecessors(o).forEach(c));
}
return i.nodes().forEach(function(i) {
s = [], c(i), s.length && o.push(s);
}), o;
}
}), w = c((i, a) => {
a.exports = class {
constructor() {
d(this, "_arr", []), d(this, "_keyIndices", {});
}
size() {
return this._arr.length;
}
keys() {
return this._arr.map(function(i) {
return i.key;
});
}
has(i) {
return Object.hasOwn(this._keyIndices, i);
}
priority(i) {
var a = this._keyIndices[i];
if (a !== void 0) return this._arr[a].priority;
}
min() {
if (this.size() === 0) throw Error("Queue underflow");
return this._arr[0].key;
}
add(i, a) {
var o = this._keyIndices;
if (i = String(i), !Object.hasOwn(o, i)) {
var s = this._arr, c = s.length;
return o[i] = c, s.push({
key: i,
priority: a
}), this._decrease(c), !0;
}
return !1;
}
removeMin() {
this._swap(0, this._arr.length - 1);
var i = this._arr.pop();
return delete this._keyIndices[i.key], this._heapify(0), i.key;
}
decrease(i, a) {
var o = this._keyIndices[i];
if (a > this._arr[o].priority) throw Error("New priority is greater than current priority. Key: " + i + " Old: " + this._arr[o].priority + " New: " + a);
this._arr[o].priority = a, this._decrease(o);
}
_heapify(i) {
var a = this._arr, o = 2 * i, s = o + 1, c = i;
o < a.length && (c = a[o].priority < a[c].priority ? o : c, s < a.length && (c = a[s].priority < a[c].priority ? s : c), c !== i && (this._swap(i, c), this._heapify(c)));
}
_decrease(i) {
for (var a = this._arr, o = a[i].priority, s; i !== 0 && (s = i >> 1, !(a[s].priority < o));) this._swap(i, s), i = s;
}
_swap(i, a) {
var o = this._arr, s = this._keyIndices, c = o[i], d = o[a];
o[i] = d, o[a] = c, s[d.key] = i, s[c.key] = a;
}
};
}), E = c((i, a) => {
var o = w();
a.exports = c;
var s = () => 1;
function c(i, a, o, c) {
return d(i, String(a), o || s, c || function(a) {
return i.outEdges(a);
});
}
function d(i, a, s, c) {
var d = {}, f = new o(), g, b, x = function(i) {
var a = i.v === g ? i.w : i.v, o = d[a], c = s(i), x = b.distance + c;
if (c < 0) throw Error("dijkstra does not allow negative edge weights. Bad edge: " + i + " Weight: " + c);
x < o.distance && (o.distance = x, o.predecessor = g, f.decrease(a, x));
};
for (i.nodes().forEach(function(i) {
var o = i === a ? 0 : Infinity;
d[i] = { distance: o }, f.add(i, o);
}); f.size() > 0 && (g = f.removeMin(), b = d[g], b.distance !== Infinity);) c(g).forEach(x);
return d;
}
}), O = c((i, a) => {
var o = E();
a.exports = s;
function s(i, a, s) {
return i.nodes().reduce(function(c, d) {
return c[d] = o(i, d, a, s), c;
}, {});
}
}), A = c((i, a) => {
a.exports = o;
function o(i, a, o) {
if (i[a].predecessor !== void 0) throw Error("Invalid source vertex");
if (i[o].predecessor === void 0 && o !== a) throw Error("Invalid destination vertex");
return {
weight: i[o].distance,
path: s(i, a, o)
};
}
function s(i, a, o) {
for (var s = [], c = o; c !== a;) s.push(c), c = i[c].predecessor;
return s.push(a), s.reverse();
}
}), M = c((i, a) => {
a.exports = o;
function o(i) {
var a = 0, o = [], s = {}, c = [];
function d(f) {
var g = s[f] = {
onStack: !0,
lowlink: a,
index: a++
};
if (o.push(f), i.successors(f).forEach(function(i) {
Object.hasOwn(s, i) ? s[i].onStack && (g.lowlink = Math.min(g.lowlink, s[i].index)) : (d(i), g.lowlink = Math.min(g.lowlink, s[i].lowlink));
}), g.lowlink === g.index) {
var b = [], x;
do
x = o.pop(), s[x].onStack = !1, b.push(x);
while (f !== x);
c.push(b);
}
}
return i.nodes().forEach(function(i) {
Object.hasOwn(s, i) || d(i);
}), c;
}
}), F = c((i, a) => {
var o = M();
a.exports = s;
function s(i) {
return o(i).filter(function(a) {
return a.length > 1 || a.length === 1 && i.hasEdge(a[0], a[0]);
});
}
}), I = c((i, a) => {
a.exports = s;
var o = () => 1;
function s(i, a, s) {
return c(i, a || o, s || function(a) {
return i.outEdges(a);
});
}
function c(i, a, o) {
var s = {}, c = i.nodes();
return c.forEach(function(i) {
s[i] = {}, s[i][i] = { distance: 0 }, c.forEach(function(a) {
i !== a && (s[i][a] = { distance: Infinity });
}), o(i).forEach(function(o) {
var c = o.v === i ? o.w : o.v, d = a(o);
s[i][c] = {
distance: d,
predecessor: i
};
});
}), c.forEach(function(i) {
var a = s[i];
c.forEach(function(o) {
var d = s[o];
c.forEach(function(o) {
var s = d[i], c = a[o], f = d[o], g = s.distance + c.distance;
g < f.distance && (f.distance = g, f.predecessor = c.predecessor);
});
});
}), s;
}
}), R = c((i, a) => {
function o(i) {
var a = {}, o = {}, c = [];
function d(f) {
if (Object.hasOwn(o, f)) throw new s();
Object.hasOwn(a, f) || (o[f] = !0, a[f] = !0, i.predecessors(f).forEach(d), delete o[f], c.push(f));
}
if (i.sinks().forEach(d), Object.keys(a).length !== i.nodeCount()) throw new s();
return c;
}
var s = class extends Error {
constructor() {
super(...arguments);
}
};
a.exports = o, o.CycleException = s;
}), V = c((i, a) => {
var o = R();
a.exports = s;
function s(i) {
try {
o(i);
} catch (i) {
if (i instanceof o.CycleException) return !1;
throw i;
}
return !0;
}
}), rP = c((i, a) => {
a.exports = o;
function o(i, a, o, c, d) {
Array.isArray(a) || (a = [a]);
var f = (i.isDirected() ? i.successors : i.neighbors).bind(i), g = {};
return a.forEach(function(a) {
if (!i.hasNode(a)) throw Error("Graph does not have node: " + a);
d = s(i, a, o === "post", g, f, c, d);
}), d;
}
function s(i, a, o, c, d, f, g) {
return Object.hasOwn(c, a) || (c[a] = !0, o || (g = f(g, a)), d(a).forEach(function(a) {
g = s(i, a, o, c, d, f, g);
}), o && (g = f(g, a))), g;
}
}), iP = c((i, a) => {
var o = rP();
a.exports = s;
function s(i, a, s) {
return o(i, a, s, function(i, a) {
return i.push(a), i;
}, []);
}
}), q = c((i, a) => {
var o = iP();
a.exports = s;
function s(i, a) {
return o(i, a, "post");
}
}), aP = c((i, a) => {
var o = iP();
a.exports = s;
function s(i, a) {
return o(i, a, "pre");
}
}), oP = c((i, a) => {
var o = f(), s = w();
a.exports = c;
function c(i, a) {
var c = new o(), d = {}, f = new s(), g;
function b(i) {
var o = i.v === g ? i.w : i.v, s = f.priority(o);
if (s !== void 0) {
var c = a(i);
c < s && (d[o] = g, f.decrease(o, c));
}
}
if (i.nodeCount() === 0) return c;
i.nodes().forEach(function(i) {
f.add(i, Infinity), c.setNode(i);
}), f.decrease(i.nodes()[0], 0);
for (var x = !1; f.size() > 0;) {
if (g = f.removeMin(), Object.hasOwn(d, g)) c.setEdge(g, d[g]);
else {
if (x) throw Error("Input graph is not connected: " + i);
x = !0;
}
i.nodeEdges(g).forEach(b);
}
return c;
}
}), sP = c((i, a) => {
var o = E(), s = S();
a.exports = c;
function c(i, a, o, s) {
return d(i, a, o, s || function(a) {
return i.outEdges(a);
});
}
function d(i, a, c, d) {
if (c === void 0) return o(i, a, c, d);
for (var f = !1, g = i.nodes(), b = 0; b < g.length; b++) {
for (var x = d(g[b]), S = 0; S < x.length; S++) {
var C = x[S], w = C.v === g[b] ? C.v : C.w, E = w === C.v ? C.w : C.v;
c({
v: w,
w: E
}) < 0 && (f = !0);
}
if (f) return s(i, a, c, d);
}
return o(i, a, c, d);
}
}), cP = c((i, a) => {
a.exports = {
bellmanFord: S(),
components: C(),
dijkstra: E(),
dijkstraAll: O(),
extractPath: A(),
findCycles: F(),
floydWarshall: I(),
isAcyclic: V(),
postorder: q(),
preorder: aP(),
prim: oP(),
shortestPaths: sP(),
reduce: rP(),
tarjan: M(),
topsort: R()
};
}), lP = b();
a.exports = {
Graph: lP.Graph,
json: x(),
alg: cP(),
version: lP.version
};
}), ne = v((i, a) => {
var o = class {
constructor() {
let i = {};
i._next = i._prev = i, this._sentinel = i;
}
dequeue() {
let i = this._sentinel, a = i._prev;
if (a !== i) return s(a), a;
}
enqueue(i) {
let a = this._sentinel;
i._prev && i._next && s(i), i._next = a._next, a._next._prev = i, a._next = i, i._prev = a;
}
toString() {
let i = [], a = this._sentinel, o = a._prev;
for (; o !== a;) i.push(JSON.stringify(o, c)), o = o._prev;
return "[" + i.join(", ") + "]";
}
};
function s(i) {
i._prev._next = i._next, i._next._prev = i._prev, delete i._next, delete i._prev;
}
function c(i, a) {
if (i !== "_next" && i !== "_prev") return a;
}
a.exports = o;
}), oe = v((i, a) => {
var o = y().Graph, s = ne();
a.exports = d;
var c = () => 1;
function d(i, a) {
if (i.nodeCount() <= 1) return [];
let o = b(i, a || c);
return f(o.graph, o.buckets, o.zeroIdx).flatMap((a) => i.outEdges(a.v, a.w));
}
function f(i, a, o) {
let s = [], c = a[a.length - 1], d = a[0], f;
for (; i.nodeCount();) {
for (; f = d.dequeue();) g(i, a, o, f);
for (; f = c.dequeue();) g(i, a, o, f);
if (i.nodeCount()) {
for (let c = a.length - 2; c > 0; --c) if (f = a[c].dequeue(), f) {
s = s.concat(g(i, a, o, f, !0));
break;
}
}
}
return s;
}
function g(i, a, o, s, c) {
let d = c ? [] : void 0;
return i.inEdges(s.v).forEach((s) => {
let f = i.edge(s), g = i.node(s.v);
c && d.push({
v: s.v,
w: s.w
}), g.out -= f, x(a, o, g);
}), i.outEdges(s.v).forEach((s) => {
let c = i.edge(s), d = s.w, f = i.node(d);
f.in -= c, x(a, o, f);
}), i.removeNode(s.v), d;
}
function b(i, a) {
let c = new o(), d = 0, f = 0;
i.nodes().forEach((i) => {
c.setNode(i, {
v: i,
in: 0,
out: 0
});
}), i.edges().forEach((i) => {
let o = c.edge(i.v, i.w) || 0, s = a(i), g = o + s;
c.setEdge(i.v, i.w, g), f = Math.max(f, c.node(i.v).out += s), d = Math.max(d, c.node(i.w).in += s);
});
let g = S(f + d + 3).map(() => new s()), b = d + 1;
return c.nodes().forEach((i) => {
x(g, b, c.node(i));
}), {
graph: c,
buckets: g,
zeroIdx: b
};
}
function x(i, a, o) {
o.out ? o.in ? i[o.out - o.in + a].enqueue(o) : i[i.length - 1].enqueue(o) : i[0].enqueue(o);
}
function S(i) {
let a = [];
for (let o = 0; o < i; o++) a.push(o);
return a;
}
}), _ = v((i, a) => {
var o = y().Graph;
a.exports = {
addBorderNode: w,
addDummyNode: s,
applyWithChunking: A,
asNonCompoundGraph: d,
buildLayerMatrix: x,
intersectRect: b,
mapValues: aP,
maxRank: M,
normalizeRanks: S,
notime: R,
partition: F,
pick: q,
predecessorWeights: g,
range: iP,
removeEmptyRanks: C,
simplify: c,
successorWeights: f,
time: I,
uniqueId: rP,
zipObject: oP
};
function s(i, a, o, s) {
for (var c = s; i.hasNode(c);) c = rP(s);
return o.dummy = a, i.setNode(c, o), c;
}
function c(i) {
let a = new o().setGraph(i.graph());
return i.nodes().forEach((o) => a.setNode(o, i.node(o))), i.edges().forEach((o) => {
let s = a.edge(o.v, o.w) || {
weight: 0,
minlen: 1
}, c = i.edge(o);
a.setEdge(o.v, o.w, {
weight: s.weight + c.weight,
minlen: Math.max(s.minlen, c.minlen)
});
}), a;
}
function d(i) {
let a = new o({ multigraph: i.isMultigraph() }).setGraph(i.graph());
return i.nodes().forEach((o) => {
i.children(o).length || a.setNode(o, i.node(o));
}), i.edges().forEach((o) => {
a.setEdge(o, i.edge(o));
}), a;
}
function f(i) {
let a = i.nodes().map((a) => {
let o = {};
return i.outEdges(a).forEach((a) => {
o[a.w] = (o[a.w] || 0) + i.edge(a).weight;
}), o;
});
return oP(i.nodes(), a);
}
function g(i) {
let a = i.nodes().map((a) => {
let o = {};
return i.inEdges(a).forEach((a) => {
o[a.v] = (o[a.v] || 0) + i.edge(a).weight;
}), o;
});
return oP(i.nodes(), a);
}
function b(i, a) {
let o = i.x, s = i.y, c = a.x - o, d = a.y - s, f = i.width / 2, g = i.height / 2;
if (!c && !d) throw Error("Not possible to find intersection inside of the rectangle");
let b, x;
return Math.abs(d) * f > Math.abs(c) * g ? (d < 0 && (g = -g), b = g * c / d, x = g) : (c < 0 && (f = -f), b = f, x = f * d / c), {
x: o + b,
y: s + x
};
}
function x(i) {
let a = iP(M(i) + 1).map(() => []);
return i.nodes().forEach((o) => {
let s = i.node(o), c = s.rank;
c !== void 0 && (a[c][s.order] = o);
}), a;
}
function S(i) {
let a = i.nodes().map((a) => {
let o = i.node(a).rank;
return o === void 0 ? Number.MAX_VALUE : o;
}), o = A(Math.min, a);
i.nodes().forEach((a) => {
let s = i.node(a);
Object.hasOwn(s, "rank") && (s.rank -= o);
});
}
function C(i) {
let a = i.nodes().map((a) => i.node(a).rank).filter((i) => i !== void 0), o = A(Math.min, a), s = [];
i.nodes().forEach((a) => {
let c = i.node(a).rank - o;
s[c] || (s[c] = []), s[c].push(a);
});
let c = 0, d = i.graph().nodeRankFactor;
Array.from(s).forEach((a, o) => {
a === void 0 && o % d !== 0 ? --c : a !== void 0 && c && a.forEach((a) => i.node(a).rank += c);
});
}
function w(i, a, o, c) {
let d = {
width: 0,
height: 0
};
return arguments.length >= 4 && (d.rank = o, d.order = c), s(i, "border", d, a);
}
function E(i, a = O) {
let o = [];
for (let s = 0; s < i.length; s += a) {
let c = i.slice(s, s + a);
o.push(c);
}
return o;
}
var O = 65535;
function A(i, a) {
if (a.length > O) {
let o = E(a);
return i.apply(null, o.map((a) => i.apply(null, a)));
} else return i.apply(null, a);
}
function M(i) {
let a = i.nodes().map((a) => {
let o = i.node(a).rank;
return o === void 0 ? Number.MIN_VALUE : o;
});
return A(Math.max, a);
}
function F(i, a) {
let o = {
lhs: [],
rhs: []
};
return i.forEach((i) => {
a(i) ? o.lhs.push(i) : o.rhs.push(i);
}), o;
}
function I(i, a) {
let o = Date.now();
try {
return a();
} finally {
console.log(i + " time: " + (Date.now() - o) + "ms");
}
}
function R(i, a) {
return a();
}
var V = 0;
function rP(i) {
var a = ++V;
return i + ("" + a);
}
function iP(i, a, o = 1) {
a ?? (a = i, i = 0);
let s = (i) => i < a;
o < 0 && (s = (i) => a < i);
let c = [];
for (let a = i; s(a); a += o) c.push(a);
return c;
}
function q(i, a) {
let o = {};
for (let s of a) i[s] !== void 0 && (o[s] = i[s]);
return o;
}
function aP(i, a) {
let o = a;
return typeof a == "string" && (o = (i) => i[a]), Object.entries(i).reduce((i, [a, s]) => (i[a] = o(s, a), i), {});
}
function oP(i, a) {
return i.reduce((i, o, s) => (i[o] = a[s], i), {});
}
}), pe = v((i, a) => {
var o = oe(), s = _().uniqueId;
a.exports = {
run: c,
undo: f
};
function c(i) {
(i.graph().acyclicer === "greedy" ? o(i, a(i)) : d(i)).forEach((a) => {
let o = i.edge(a);
i.removeEdge(a), o.forwardName = a.name, o.reversed = !0, i.setEdge(a.w, a.v, o, s("rev"));
});
function a(i) {
return (a) => i.edge(a).weight;
}
}
function d(i) {
let a = [], o = {}, s = {};
function c(d) {
Object.hasOwn(s, d) || (s[d] = !0, o[d] = !0, i.outEdges(d).forEach((i) => {
Object.hasOwn(o, i.w) ? a.push(i) : c(i.w);
}), delete o[d]);
}
return i.nodes().forEach(c), a;
}
function f(i) {
i.edges().forEach((a) => {
let o = i.edge(a);
if (o.reversed) {
i.removeEdge(a);
let s = o.forwardName;
delete o.reversed, delete o.forwardName, i.setEdge(a.w, a.v, o, s);
}
});
}
}), we = v((i, a) => {
var o = _();
a.exports = {
run: s,
undo: d
};
function s(i) {
i.graph().dummyChains = [], i.edges().forEach((a) => c(i, a));
}
function c(i, a) {
let s = a.v, c = i.node(s).rank, d = a.w, f = i.node(d).rank, g = a.name, b = i.edge(a), x = b.labelRank;
if (f === c + 1) return;
i.removeEdge(a);
let S, C, w;
for (w = 0, ++c; c < f; ++w, ++c) b.points = [], C = {
width: 0,
height: 0,
edgeLabel: b,
edgeObj: a,
rank: c
}, S = o.addDummyNode(i, "edge", C, "_d"), c === x && (C.width = b.width, C.height = b.height, C.dummy = "edge-label", C.labelpos = b.labelpos), i.setEdge(s, S, { weight: b.weight }, g), w === 0 && i.graph().dummyChains.push(S), s = S;
i.setEdge(s, d, { weight: b.weight }, g);
}
function d(i) {
i.graph().dummyChains.forEach((a) => {
let o = i.node(a), s = o.edgeLabel, c;
for (i.setEdge(o.edgeObj, s); o.dummy;) c = i.successors(a)[0], i.removeNode(a), s.points.push({
x: o.x,
y: o.y
}), o.dummy === "edge-label" && (s.x = o.x, s.y = o.y, s.width = o.width, s.height = o.height), a = c, o = i.node(a);
});
}
}), j = v((i, a) => {
var { applyWithChunking: o } = _();
a.exports = {
longestPath: s,
slack: c
};
function s(i) {
var a = {};
function s(c) {
var d = i.node(c);
if (Object.hasOwn(a, c)) return d.rank;
a[c] = !0;
let f = i.outEdges(c).map((a) => a == null ? Infinity : s(a.w) - i.edge(a).minlen);
var g = o(Math.min, f);
return g === Infinity && (g = 0), d.rank = g;
}
i.sources().forEach(s);
}
function c(i, a) {
return i.node(a.w).rank - i.node(a.v).rank - i.edge(a).minlen;
}
}), G = v((i, a) => {
var o = y().Graph, s = j().slack;
a.exports = c;
function c(i) {
var a = new o({ directed: !1 }), c = i.nodes()[0], b = i.nodeCount();
a.setNode(c, {});
for (var x, S; d(a, i) < b;) x = f(a, i), S = a.hasNode(x.v) ? s(i, x) : -s(i, x), g(a, i, S);
return a;
}
function d(i, a) {
function o(c) {
a.nodeEdges(c).forEach((d) => {
var f = d.v, g = c === f ? d.w : f;
!i.hasNode(g) && !s(a, d) && (i.setNode(g, {}), i.setEdge(c, g, {}), o(g));
});
}
return i.nodes().forEach(o), i.nodeCount();
}
function f(i, a) {
return a.edges().reduce((o, c) => {
let d = Infinity;
return i.hasNode(c.v) !== i.hasNode(c.w) && (d = s(a, c)), d < o[0] ? [d, c] : o;
}, [Infinity, null])[1];
}
function g(i, a, o) {
i.nodes().forEach((i) => a.node(i).rank += o);
}
}), Ie = v((i, a) => {
var o = G(), s = j().slack, c = j().longestPath, d = y().alg.preorder, f = y().alg.postorder, g = _().simplify;
a.exports = b, b.initLowLimValues = w, b.initCutValues = x, b.calcCutValue = C, b.leaveEdge = O, b.enterEdge = A, b.exchangeEdges = M;
function b(i) {
i = g(i), c(i);
var a = o(i);
w(a), x(a, i);
for (var s, d; s = O(a);) d = A(a, i, s), M(a, i, s, d);
}
function x(i, a) {
var o = f(i, i.nodes());
o = o.slice(0, o.length - 1), o.forEach((o) => S(i, a, o));
}
function S(i, a, o) {
var s = i.node(o).parent;
i.edge(o, s).cutvalue = C(i, a, o);
}
function C(i, a, o) {
var s = i.node(o).parent, c = !0, d = a.edge(o, s), f = 0;
return d ||= (c = !1, a.edge(s, o)), f = d.weight, a.nodeEdges(o).forEach((d) => {
var g = d.v === o, b = g ? d.w : d.v;
if (b !== s) {
var x = g === c, S = a.edge(d).weight;
if (f += x ? S : -S, I(i, o, b)) {
var C = i.edge(o, b).cutvalue;
f += x ? -C : C;
}
}
}), f;
}
function w(i, a) {
arguments.length < 2 && (a = i.nodes()[0]), E(i, {}, 1, a);
}
function E(i, a, o, s, c) {
var d = o, f = i.node(s);
return a[s] = !0, i.neighbors(s).forEach((c) => {
Object.hasOwn(a, c) || (o = E(i, a, o, c, s));
}), f.low = d, f.lim = o++, c ? f.parent = c : delete f.parent, o;
}
function O(i) {
return i.edges().find((a) => i.edge(a).cutvalue < 0);
}
function A(i, a, o) {
var c = o.v, d = o.w;
a.hasEdge(c, d) || (c = o.w, d = o.v);
var f = i.node(c), g = i.node(d), b = f, x = !1;
return f.lim > g.lim && (b = g, x = !0), a.edges().filter((a) => x === R(i, i.node(a.v), b) && x !== R(i, i.node(a.w), b)).reduce((i, o) => s(a, o) < s(a, i) ? o : i);
}
function M(i, a, o, s) {
var c = o.v, d = o.w;
i.removeEdge(c, d), i.setEdge(s.v, s.w, {}), w(i), x(i, a), F(i, a);
}
function F(i, a) {
var o = i.nodes().find((i) => !a.node(i).parent), s = d(i, o);
s = s.slice(1), s.forEach((o) => {
var s = i.node(o).parent, c = a.edge(o, s), d = !1;
c || (c = a.edge(s, o), d = !0), a.node(o).rank = a.node(s).rank + (d ? c.minlen : -c.minlen);
});
}
function I(i, a, o) {
return i.hasEdge(a, o);
}
function R(i, a, o) {
return o.low <= a.lim && a.lim <= o.lim;
}
}), qe = v((i, a) => {
var o = j().longestPath, s = G(), c = Ie();
a.exports = d;
function d(i) {
var a = i.graph().ranker;
if (a instanceof Function) return a(i);
switch (i.graph().ranker) {
case "network-simplex":
b(i);
break;
case "tight-tree":
g(i);
break;
case "longest-path":
f(i);
break;
case "none": break;
default: b(i);
}
}
var f = o;
function g(i) {
o(i), s(i);
}
function b(i) {
c(i);
}
}), Re = v((i, a) => {
a.exports = o;
function o(i) {
let a = c(i);
i.graph().dummyChains.forEach((o) => {
let c = i.node(o), d = c.edgeObj, f = s(i, a, d.v, d.w), g = f.path, b = f.lca, x = 0, S = g[x], C = !0;
for (; o !== d.w;) {
if (c = i.node(o), C) {
for (; (S = g[x]) !== b && i.node(S).maxRank < c.rank;) x++;
S === b && (C = !1);
}
if (!C) {
for (; x < g.length - 1 && i.node(S = g[x + 1]).minRank <= c.rank;) x++;
S = g[x];
}
i.setParent(o, S), o = i.successors(o)[0];
}
});
}
function s(i, a, o, s) {
let c = [], d = [], f = Math.min(a[o].low, a[s].low), g = Math.max(a[o].lim, a[s].lim), b, x;
b = o;
do
b = i.parent(b), c.push(b);
while (b && (a[b].low > f || g > a[b].lim));
for (x = b, b = s; (b = i.parent(b)) !== x;) d.push(b);
return {
path: c.concat(d.reverse()),
lca: x
};
}
function c(i) {
let a = {}, o = 0;
function s(c) {
let d = o;
i.children(c).forEach(s), a[c] = {
low: d,
lim: o++
};
}
return i.children().forEach(s), a;
}
}), Pe = v((i, a) => {
var o = _();
a.exports = {
run: s,
cleanup: g
};
function s(i) {
let a = o.addDummyNode(i, "root", {}, "_root"), s = d(i), g = Object.values(s), b = o.applyWithChunking(Math.max, g) - 1, x = 2 * b + 1;
i.graph().nestingRoot = a, i.edges().forEach((a) => i.edge(a).minlen *= x);
let S = f(i) + 1;
i.children().forEach((o) => c(i, a, x, S, b, s, o)), i.graph().nodeRankFactor = x;
}
function c(i, a, s, d, f, g, b) {
let x = i.children(b);
if (!x.length) {
b !== a && i.setEdge(a, b, {
weight: 0,
minlen: s
});
return;
}
let S = o.addBorderNode(i, "_bt"), C = o.addBorderNode(i, "_bb"), w = i.node(b);
i.setParent(S, b), w.borderTop = S, i.setParent(C, b), w.borderBottom = C, x.forEach((o) => {
c(i, a, s, d, f, g, o);
let x = i.node(o), w = x.borderTop ? x.borderTop : o, E = x.borderBottom ? x.borderBottom : o, O = x.borderTop ? d : 2 * d, A = w === E ? f - g[b] + 1 : 1;
i.setEdge(S, w, {
weight: O,
minlen: A,
nestingEdge: !0
}), i.setEdge(E, C, {
weight: O,
minlen: A,
nestingEdge: !0
});
}), i.parent(b) || i.setEdge(a, S, {
weight: 0,
minlen: f + g[b]
});
}
function d(i) {
var a = {};
function o(s, c) {
var d = i.children(s);
d && d.length && d.forEach((i) => o(i, c + 1)), a[s] = c;
}
return i.children().forEach((i) => o(i, 1)), a;
}
function f(i) {
return i.edges().reduce((a, o) => a + i.edge(o).weight, 0);
}
function g(i) {
var a = i.graph();
i.removeNode(a.nestingRoot), delete a.nestingRoot, i.edges().forEach((a) => {
i.edge(a).nestingEdge && i.removeEdge(a);
});
}
}), Ge = v((i, a) => {
var o = _();
a.exports = s;
function s(i) {
function a(o) {
let s = i.children(o), d = i.node(o);
if (s.length && s.forEach(a), Object.hasOwn(d, "minRank")) {
d.borderLeft = [], d.borderRight = [];
for (let a = d.minRank, s = d.maxRank + 1; a < s; ++a) c(i, "borderLeft", "_bl", o, d, a), c(i, "borderRight", "_br", o, d, a);
}
}
i.children().forEach(a);
}
function c(i, a, s, c, d, f) {
let g = {
width: 0,
height: 0,
rank: f,
borderType: a
}, b = d[a][f - 1], x = o.addDummyNode(i, "border", g, s);
d[a][f] = x, i.setParent(x, c), b && i.setEdge(b, x, { weight: 1 });
}
}), Be = v((i, a) => {
a.exports = {
adjust: o,
undo: s
};
function o(i) {
let a = i.graph().rankdir.toLowerCase();
(a === "lr" || a === "rl") && c(i);
}
function s(i) {
let a = i.graph().rankdir.toLowerCase();
(a === "bt" || a === "rl") && f(i), (a === "lr" || a === "rl") && (b(i), c(i));
}
function c(i) {
i.nodes().forEach((a) => d(i.node(a))), i.edges().forEach((a) => d(i.edge(a)));
}
function d(i) {
let a = i.width;
i.width = i.height, i.height = a;
}
function f(i) {
i.nodes().forEach((a) => g(i.node(a))), i.edges().forEach((a) => {
let o = i.edge(a);
o.points.forEach(g), Object.hasOwn(o, "y") && g(o);
});
}
function g(i) {
i.y = -i.y;
}
function b(i) {
i.nodes().forEach((a) => x(i.node(a))), i.edges().forEach((a) => {
let o = i.edge(a);
o.points.forEach(x), Object.hasOwn(o, "x") && x(o);
});
}
function x(i) {
let a = i.x;
i.x = i.y, i.y = a;
}
}), Xe = v((i, a) => {
var o = _();
a.exports = s;
function s(i) {
let a = {}, s = i.nodes().filter((a) => !i.children(a).length), c = s.map((a) => i.node(a).rank), d = o.applyWithChunking(Math.max, c), f = o.range(d + 1).map(() => []);
function g(o) {
if (a[o]) return;
a[o] = !0;
let s = i.node(o);
f[s.rank].push(o), i.successors(o).forEach(g);
}
return s.sort((a, o) => i.node(a).rank - i.node(o).rank).forEach(g), f;
}
}), Ue = v((i, a) => {
var o = _().zipObject;
a.exports = s;
function s(i, a) {
let o = 0;
for (let s = 1; s < a.length; ++s) o += c(i, a[s - 1], a[s]);
return o;
}
function c(i, a, s) {
let c = o(s, s.map((i, a) => a)), d = a.flatMap((a) => i.outEdges(a).map((a) => ({
pos: c[a.w],
weight: i.edge(a).weight
})).sort((i, a) => i.pos - a.pos)), f = 1;
for (; f < s.length;) f <<= 1;
let g = 2 * f - 1;
--f;
let b = Array(g).fill(0), x = 0;
return d.forEach((i) => {
let a = i.pos + f;
b[a] += i.weight;
let o = 0;
for (; a > 0;) a % 2 && (o += b[a + 1]), a = a - 1 >> 1, b[a] += i.weight;
x += i.weight * o;
}), x;
}
}), Qe = v((i, a) => {
a.exports = o;
function o(i, a = []) {
return a.map((a) => {
let o = i.inEdges(a);
if (o.length) {
let s = o.reduce((a, o) => {
let s = i.edge(o), c = i.node(o.v);
return {
sum: a.sum + s.weight * c.order,
weight: a.weight + s.weight
};
}, {
sum: 0,
weight: 0
});
return {
v: a,
barycenter: s.sum / s.weight,
weight: s.weight
};
} else return { v: a };
});
}
}), Ze = v((i, a) => {
var o = _();
a.exports = s;
function s(i, a) {
let o = {};
i.forEach((i, a) => {
let s = o[i.v] = {
indegree: 0,
in: [],
out: [],
vs: [i.v],
i: a
};
i.barycenter !== void 0 && (s.barycenter = i.barycenter, s.weight = i.weight);
}), a.edges().forEach((i) => {
let a = o[i.v], s = o[i.w];
a !== void 0 && s !== void 0 && (s.indegree++, a.out.push(o[i.w]));
});
let s = Object.values(o).filter((i) => !i.indegree);
return c(s);
}
function c(i) {
let a = [];
function s(i) {
return (a) => {
a.merged || (a.barycenter === void 0 || i.barycenter === void 0 || a.barycenter >= i.barycenter) && d(i, a);
};
}
function c(a) {
return (o) => {
o.in.push(a), --o.indegree === 0 && i.push(o);
};
}
for (; i.length;) {
let o = i.pop();
a.push(o), o.in.reverse().forEach(s(o)), o.out.forEach(c(o));
}
return a.filter((i) => !i.merged).map((i) => o.pick(i, [
"vs",
"i",
"barycenter",
"weight"
]));
}
function d(i, a) {
let o = 0, s = 0;
i.weight && (o += i.barycenter * i.weight, s += i.weight), a.weight && (o += a.barycenter * a.weight, s += a.weight), i.vs = a.vs.concat(i.vs), i.barycenter = o / s, i.weight = s, i.i = Math.min(a.i, i.i), a.merged = !0;
}
}), tt = v((i, a) => {
var o = _();
a.exports = s;
function s(i, a) {
let s = o.partition(i, (i) => Object.hasOwn(i, "barycenter")), f = s.lhs, g = s.rhs.sort((i, a) => a.i - i.i), b = [], x = 0, S = 0, C = 0;
f.sort(d(!!a)), C = c(b, g, C), f.forEach((i) => {
C += i.vs.length, b.push(i.vs), x += i.barycenter * i.weight, S += i.weight, C = c(b, g, C);
});
let w = { vs: b.flat(!0) };
return S && (w.barycenter = x / S, w.weight = S), w;
}
function c(i, a, o) {
let s;
for (; a.length && (s = a[a.length - 1]).i <= o;) a.pop(), i.push(s.vs), o++;
return o;
}
function d(i) {
return (a, o) => a.barycenter < o.barycenter ? -1 : a.barycenter > o.barycenter ? 1 : i ? o.i - a.i : a.i - o.i;
}
}), it = v((i, a) => {
var o = Qe(), s = Ze(), c = tt();
a.exports = d;
function d(i, a, b, x) {
let S = i.children(a), C = i.node(a), w = C ? C.borderLeft : void 0, E = C ? C.borderRight : void 0, O = {};
w && (S = S.filter((i) => i !== w && i !== E));
let A = o(i, S);
A.forEach((a) => {
if (i.children(a.v).length) {
let o = d(i, a.v, b, x);
O[a.v] = o, Object.hasOwn(o, "barycenter") && g(a, o);
}
});
let M = s(A, b);
f(M, O);
let F = c(M, x);
if (w && (F.vs = [
w,
F.vs,
E
].flat(!0), i.predecessors(w).length)) {
let a = i.node(i.predecessors(w)[0]), o = i.node(i.predecessors(E)[0]);
Object.hasOwn(F, "barycenter") || (F.barycenter = 0, F.weight = 0), F.barycenter = (F.barycenter * F.weight + a.order + o.order) / (F.weight + 2), F.weight += 2;
}
return F;
}
function f(i, a) {
i.forEach((i) => {
i.vs = i.vs.flatMap((i) => a[i] ? a[i].vs : i);
});
}
function g(i, a) {
i.barycenter === void 0 ? (i.barycenter = a.barycenter, i.weight = a.weight) : (i.barycenter = (i.barycenter * i.weight + a.barycenter * a.weight) / (i.weight + a.weight), i.weight += a.weight);
}
}), st = v((i, a) => {
var o = y().Graph, s = _();
a.exports = c;
function c(i, a, s, c) {
c ||= i.nodes();
let f = d(i), g = new o({ compound: !0 }).setGraph({ root: f }).setDefaultNodeLabel((a) => i.node(a));
return c.forEach((o) => {
let c = i.node(o), d = i.parent(o);
(c.rank === a || c.minRank <= a && a <= c.maxRank) && (g.setNode(o), g.setParent(o, d || f), i[s](o).forEach((a) => {
let s = a.v === o ? a.w : a.v, c = g.edge(s, o), d = c === void 0 ? 0 : c.weight;
g.setEdge(s, o, { weight: i.edge(a).weight + d });
}), Object.hasOwn(c, "minRank") && g.setNode(o, {
borderLeft: c.borderLeft[a],
borderRight: c.borderRight[a]
}));
}), g;
}
function d(i) {
for (var a; i.hasNode(a = s.uniqueId("_root")););
return a;
}
}), dt = v((i, a) => {
a.exports = o;
function o(i, a, o) {
let s = {}, c;
o.forEach((o) => {
let d = i.parent(o), f, g;
for (; d;) {
if (f = i.parent(d), f ? (g = s[f], s[f] = d) : (g = c, c = d), g && g !== d) {
a.setEdge(g, d);
return;
}
d = f;
}
});
}
}), ft = v((i, a) => {
var o = Xe(), s = Ue(), c = it(), d = st(), f = dt(), g = y().Graph, b = _();
a.exports = x;
function x(i, a = {}) {
if (typeof a.customOrder == "function") {
a.customOrder(i, x);
return;
}
let c = b.maxRank(i), d = S(i, b.range(1, c + 1), "inEdges"), f = S(i, b.range(c - 1, -1, -1), "outEdges"), g = o(i);
if (w(i, g), a.disableOptimalOrderHeuristic) return;
let E = Infinity, O, A = a.constraints || [];
for (let a = 0, o = 0; o < 4; ++a, ++o) {
C(a % 2 ? d : f, a % 4 >= 2, A), g = b.buildLayerMatrix(i);
let c = s(i, g);
c < E ? (o = 0, O = Object.assign({}, g), E = c) : c === E && (O = structuredClone(g));
}
w(i, O);
}
function S(i, a, o) {
let s = /* @__PURE__ */ new Map(), c = (i, a) => {
s.has(i) || s.set(i, []), s.get(i).push(a);
};
for (let a of i.nodes()) {
let o = i.node(a);
if (typeof o.rank == "number" && c(o.rank, a), typeof o.minRank == "number" && typeof o.maxRank == "number") for (let i = o.minRank; i <= o.maxRank; i++) i !== o.rank && c(i, a);
}
return a.map(function(a) {
return d(i, a, o, s.get(a) || []);
});
}
function C(i, a, o) {
let s = new g();
i.forEach(function(i) {
o.forEach((i) => s.setEdge(i.left, i.right));
let d = i.graph().root, g = c(i, d, s, a);
g.vs.forEach((a, o) => i.node(a).order = o), f(i, s, g.vs);
});
}
function w(i, a) {
Object.values(a).forEach((a) => a.forEach((a, o) => i.node(a).order = o));
}
}), yt = v((i, a) => {
var o = y().Graph, s = _();
a.exports = {
positionX: A,
findType1Conflicts: c,
findType2Conflicts: d,
addConflict: g,
hasConflict: b,
verticalAlignment: x,
horizontalCompaction: S,
alignCoordinates: E,
findSmallestWidthAlignment: w,
balance: O
};
function c(i, a) {
let o = {};
function s(a, s) {
let c = 0, d = 0, b = a.length, x = s[s.length - 1];
return s.forEach((a, S) => {
let C = f(i, a), w = C ? i.node(C).order : b;
(C || a === x) && (s.slice(d, S + 1).forEach((a) => {
i.predecessors(a).forEach((s) => {
let d = i.node(s), f = d.order;
(f < c || w < f) && !(d.dummy && i.node(a).dummy) && g(o, s, a);
});
}), d = S + 1, c = w);
}), s;
}
return a.length && a.reduce(s), o;
}
function d(i, a) {
let o = {};
function c(a, c, d, f, b) {
let x;
s.range(c, d).forEach((s) => {
x = a[s], i.node(x).dummy && i.predecessors(x).forEach((a) => {
let s = i.node(a);
s.dummy && (s.order < f || s.order > b) && g(o, a, x);
});
});
}
function d(a, o) {
let s = -1, d, f = 0;
return o.forEach((g, b) => {
if (i.node(g).dummy === "border") {
let a = i.predecessors(g);
a.length && (d = i.node(a[0]).order, c(o, f, b, s, d), f = b, s = d);
}
c(o, f, o.length, d, a.length);
}), o;
}
return a.length && a.reduce(d), o;
}
function f(i, a) {
if (i.node(a).dummy) return i.predecessors(a).find((a) => i.node(a).dummy);
}
function g(i, a, o) {
if (a > o) {
let i = a;
a = o, o = i;
}
let s = i[a];
s || (i[a] = s = {}), s[o] = !0;
}
function b(i, a, o) {
if (a > o) {
let i = a;
a = o, o = i;
}
return !!i[a] && Object.hasOwn(i[a], o);
}
function x(i, a, o, s) {
let c = {}, d = {}, f = {};
return a.forEach((i) => {
i.forEach((i, a) => {
c[i] = i, d[i] = i, f[i] = a;
});
}), a.forEach((i) => {
let a = -1;
i.forEach((i) => {
let g = s(i);
if (g.length) {
g = g.sort((i, a) => f[i] - f[a]);
let s = (g.length - 1) / 2;
for (let x = Math.floor(s), S = Math.ceil(s); x <= S; ++x) {
let s = g[x];
d[i] === i && a < f[s] && !b(o, i, s) && (d[s] = i, d[i] = c[i] = c[s], a = f[s]);
}
}
});
}), {
root: c,
align: d
};
}
function S(i, a, o, s, c) {
let d = {}, f = C(i, a, o, c), g = c ? "borderLeft" : "borderRight";
function b(i, a) {
let o = f.nodes().slice(), s = {}, c = o.pop();
for (; c;) {
if (s[c]) i(c);
else {
s[c] = !0, o.push(c);
for (let i of a(c)) o.push(i);
}
c = o.pop();
}
}
function x(i) {
d[i] = f.inEdges(i).reduce((i, a) => Math.max(i, d[a.v] + f.edge(a)), 0);
}
function S(a) {
let o = f.outEdges(a).reduce((i, a) => Math.min(i, d[a.w] - f.edge(a)), Infinity), s = i.node(a);
o !== Infinity && s.borderType !== g && (d[a] = Math.max(d[a], o));
}
return b(x, f.predecessors.bind(f)), b(S, f.successors.bind(f)), Object.keys(s).forEach((i) => d[i] = d[o[i]]), d;
}
function C(i, a, s, c) {
let d = new o(), f = i.graph(), g = M(f.nodesep, f.edgesep, c);
return a.forEach((a) => {
let o;
a.forEach((a) => {
let c = s[a];
if (d.setNode(c), o) {
var f = s[o], b = d.edge(f, c);
d.setEdge(f, c, Math.max(g(i, a, o), b || 0));
}
o = a;
});
}), d;
}
function w(i, a) {
return Object.values(a).reduce((a, o) => {
let s = -Infinity, c = Infinity;
Object.entries(o).forEach(([a, o]) => {
let d = F(i, a) / 2;
s = Math.max(o + d, s), c = Math.min(o - d, c);
});
let d = s - c;
return d < a[0] && (a = [d, o]), a;
}, [Infinity, null])[1];
}
function E(i, a) {
let o = Object.values(a), c = s.applyWithChunking(Math.min, o), d = s.applyWithChunking(Math.max, o);
["u", "d"].forEach((o) => {
["l", "r"].forEach((f) => {
let g = o + f, b = i[g];
if (b === a) return;
let x = Object.values(b), S = c - s.applyWithChunking(Math.min, x);
f !== "l" && (S = d - s.applyWithChunking(Math.max, x)), S && (i[g] = s.mapValues(b, (i) => i + S));
});
});
}
function O(i, a) {
return s.mapValues(i.ul, (o, s) => {
if (a) return i[a.toLowerCase()][s];
{
let a = Object.values(i).map((i) => i[s]).sort((i, a) => i - a);
return (a[1] + a[2]) / 2;
}
});
}
function A(i) {
let a = s.buildLayerMatrix(i), o = Object.assign(c(i, a), d(i, a)), f = {}, g;
["u", "d"].forEach((c) => {
g = c === "u" ? a : Object.values(a).reverse(), ["l", "r"].forEach((a) => {
a === "r" && (g = g.map((i) => Object.values(i).reverse()));
let d = (c === "u" ? i.predecessors : i.successors).bind(i), b = x(i, g, o, d), C = S(i, g, b.root, b.align, a === "r");
a === "r" && (C = s.mapValues(C, (i) => -i)), f[c + a] = C;
});
});
let b = w(i, f);
return E(f, b), O(f, i.graph().align);
}
function M(i, a, o) {
return (s, c, d) => {
let f = s.node(c), g = s.node(d), b = 0, x;
if (b += f.width / 2, Object.hasOwn(f, "labelpos")) switch (f.labelpos.toLowerCase()) {
case "l":
x = -f.width / 2;
break;
case "r":
x = f.width / 2;
break;
}
if (x && (b += o ? x : -x), x = 0, b += (f.dummy ? a : i) / 2, b += (g.dummy ? a : i) / 2, b += g.width / 2, Object.hasOwn(g, "labelpos")) switch (g.labelpos.toLowerCase()) {
case "l":
x = g.width / 2;
break;
case "r":
x = -g.width / 2;
break;
}
return x && (b += o ? x : -x), x = 0, b;
};
}
function F(i, a) {
return i.node(a).width;
}
}), Nt = v((i, a) => {
var o = _(), s = yt().positionX;
a.exports = c;
function c(i) {
i = o.asNonCompoundGraph(i), d(i), Object.entries(s(i)).forEach(([a, o]) => i.node(a).x = o);
}
function d(i) {
let a = o.buildLayerMatrix(i), s = i.graph().ranksep, c = i.graph().rankalign, d = 0;
a.forEach((a) => {
let o = a.reduce((a, o) => {
let s = i.node(o).height;
return a > s ? a : s;
}, 0);
a.forEach((a) => {
let s = i.node(a);
c === "top" ? s.y = d + s.height / 2 : c === "bottom" ? s.y = d + o - s.height / 2 : s.y = d + o / 2;
}), d += o + s;
});
}
}), Rt = v((i, a) => {
var o = pe(), s = we(), c = qe(), d = _().normalizeRanks, f = Re(), g = _().removeEmptyRanks, b = Pe(), x = Ge(), S = Be(), C = ft(), w = Nt(), E = _(), O = y().Graph;
a.exports = A;
function A(i, a = {}) {
let o = a.debugTiming ? E.time : E.notime;
return o("layout", () => {
let s = o(" buildLayoutGraph", () => sP(i));
return o(" runLayout", () => M(s, o, a)), o(" updateInputGraph", () => F(i, s)), s;
});
}
function M(i, a, O) {
a(" makeSpaceForEdgeLabels", () => cP(i)), a(" removeSelfEdges", () => _P(i)), a(" acyclic", () => o.run(i)), a(" nestingGraph.run", () => b.run(i)), a(" rank", () => c(E.asNonCompoundGraph(i))), a(" injectEdgeLabelProxies", () => lP(i)), a(" removeEmptyRanks", () => g(i)), a(" nestingGraph.cleanup", () => b.cleanup(i)), a(" normalizeRanks", () => d(i)), a(" assignRankMinMax", () => uP(i)), a(" removeEdgeLabelProxies", () => dP(i)), a(" normalize.run", () => s.run(i)), a(" parentDummyChains", () => f(i)), a(" addBorderSegments", () => x(i)), a(" order", () => C(i, O)), a(" insertSelfEdges", () => vP(i)), a(" adjustCoordinateSystem", () => S.adjust(i)), a(" position", () => w(i)), a(" positionSelfEdges", () => yP(i)), a(" removeBorderNodes", () => gP(i)), a(" normalize.undo", () => s.undo(i)), a(" fixupEdgeLabelCoords", () => mP(i)), a(" undoCoordinateSystem", () => S.undo(i)), a(" translateGraph", () => fP(i)), a(" assignNodeIntersects", () => pP(i)), a(" reversePoints", () => hP(i)), a(" acyclic.undo", () => o.undo(i));
}
function F(i, a) {
i.nodes().forEach((o) => {
let s = i.node(o), c = a.node(o);
s && (s.x = c.x, s.y = c.y, s.order = c.order, s.rank = c.rank, a.children(o).length && (s.width = c.width, s.height = c.height));
}), i.edges().forEach((o) => {
let s = i.edge(o), c = a.edge(o);
s.points = c.points, Object.hasOwn(c, "x") && (s.x = c.x, s.y = c.y);
}), i.graph().width = a.graph().width, i.graph().height = a.graph().height;
}
var I = [
"nodesep",
"edgesep",
"ranksep",
"marginx",
"marginy"
], R = {
ranksep: 50,
edgesep: 20,
nodesep: 50,
rankdir: "tb",
rankalign: "center"
}, V = [
"acyclicer",
"ranker",
"rankdir",
"align",
"rankalign"
], rP = [
"width",
"height",
"rank"
], iP = {
width: 0,
height: 0
}, q = [
"minlen",
"weight",
"width",
"height",
"labeloffset"
], aP = {
minlen: 1,
weight: 1,
width: 0,
height: 0,
labeloffset: 10,
labelpos: "r"
}, oP = ["labelpos"];
function sP(i) {
let a = new O({
multigraph: !0,
compound: !0
}), o = xP(i.graph());
return a.setGraph(Object.assign({}, R, bP(o, I), E.pick(o, V))), i.nodes().forEach((o) => {
let s = xP(i.node(o)), c = bP(s, rP);
Object.keys(iP).forEach((i) => {
c[i] === void 0 && (c[i] = iP[i]);
}), a.setNode(o, c), a.setParent(o, i.parent(o));
}), i.edges().forEach((o) => {
let s = xP(i.edge(o));
a.setEdge(o, Object.assign({}, aP, bP(s, q), E.pick(s, oP)));
}), a;
}
function cP(i) {
let a = i.graph();
a.ranksep /= 2, i.edges().forEach((o) => {
let s = i.edge(o);
s.minlen *= 2, s.labelpos.toLowerCase() !== "c" && (a.rankdir === "TB" || a.rankdir === "BT" ? s.width += s.labeloffset : s.height += s.labeloffset);
});
}
function lP(i) {
i.edges().forEach((a) => {
let o = i.edge(a);
if (o.width && o.height) {
let o = i.node(a.v), s = {
rank: (i.node(a.w).rank - o.rank) / 2 + o.rank,
e: a
};
E.addDummyNode(i, "edge-proxy", s, "_ep");
}
});
}
function uP(i) {
let a = 0;
i.nodes().forEach((o) => {
let s = i.node(o);
s.borderTop && (s.minRank = i.node(s.borderTop).rank, s.maxRank = i.node(s.borderBottom).rank, a = Math.max(a, s.maxRank));
}), i.graph().maxRank = a;
}
function dP(i) {
i.nodes().forEach((a) => {
let o = i.node(a);
o.dummy === "edge-proxy" && (i.edge(o.e).labelRank = o.rank, i.removeNode(a));
});
}
function fP(i) {
let a = Infinity, o = 0, s = Infinity, c = 0, d = i.graph(), f = d.marginx || 0, g = d.marginy || 0;
function b(i) {
let d = i.x, f = i.y, g = i.width, b = i.height;
a = Math.min(a, d - g / 2), o = Math.max(o, d + g / 2), s = Math.min(s, f - b / 2), c = Math.max(c, f + b / 2);
}
i.nodes().forEach((a) => b(i.node(a))), i.edges().forEach((a) => {
let o = i.edge(a);
Object.hasOwn(o, "x") && b(o);
}), a -= f, s -= g, i.nodes().forEach((o) => {
let c = i.node(o);
c.x -= a, c.y -= s;
}), i.edges().forEach((o) => {
let c = i.edge(o);
c.points.forEach((i) => {
i.x -= a, i.y -= s;
}), Object.hasOwn(c, "x") && (c.x -= a), Object.hasOwn(c, "y") && (c.y -= s);
}), d.width = o - a + f, d.height = c - s + g;
}
function pP(i) {
i.edges().forEach((a) => {
let o = i.edge(a), s = i.node(a.v), c = i.node(a.w), d, f;
o.points ? (d = o.points[0], f = o.points[o.points.length - 1]) : (o.points = [], d = c, f = s), o.points.unshift(E.intersectRect(s, d)), o.points.push(E.intersectRect(c, f));
});
}
function mP(i) {
i.edges().forEach((a) => {
let o = i.edge(a);
if (Object.hasOwn(o, "x")) switch ((o.labelpos === "l" || o.labelpos === "r") && (o.width -= o.labeloffset), o.labelpos) {
case "l":
o.x -= o.width / 2 + o.labeloffset;
break;
case "r":
o.x += o.width / 2 + o.labeloffset;
break;
}
});
}
function hP(i) {
i.edges().forEach((a) => {
let o = i.edge(a);
o.reversed && o.points.reverse();
});
}
function gP(i) {
i.nodes().forEach((a) => {
if (i.children(a).length) {
let o = i.node(a), s = i.node(o.borderTop), c = i.node(o.borderBottom), d = i.node(o.borderLeft[o.borderLeft.length - 1]), f = i.node(o.borderRight[o.borderRight.length - 1]);
o.width = Math.abs(f.x - d.x), o.height = Math.abs(c.y - s.y), o.x = d.x + o.width / 2, o.y = s.y + o.height / 2;
}
}), i.nodes().forEach((a) => {
i.node(a).dummy === "border" && i.removeNode(a);
});
}
function _P(i) {
i.edges().forEach((a) => {
if (a.v === a.w) {
var o = i.node(a.v);
o.selfEdges ||= [], o.selfEdges.push({
e: a,
label: i.edge(a)
}), i.removeEdge(a);
}
});
}
function vP(i) {
E.buildLayerMatrix(i).forEach((a) => {
var o = 0;
a.forEach((a, s) => {
var c = i.node(a);
c.order = s + o, (c.selfEdges || []).forEach((a) => {
E.addDummyNode(i, "selfedge", {
width: a.label.width,
height: a.label.height,
rank: c.rank,
order: s + ++o,
e: a.e,
label: a.label
}, "_se");
}), delete c.selfEdges;
});
});
}
function yP(i) {
i.nodes().forEach((a) => {
var o = i.node(a);
if (o.dummy === "selfedge") {
var s = i.node(o.e.v), c = s.x + s.width / 2, d = s.y, f = o.x - c, g = s.height / 2;
i.setEdge(o.e, o.label), i.removeNode(a), o.label.points = [
{
x: c + 2 * f / 3,
y: d - g
},
{
x: c + 5 * f / 6,
y: d - g
},
{
x: c + f,
y: d
},
{
x: c + 5 * f / 6,
y: d + g
},
{
x: c + 2 * f / 3,
y: d + g
}
], o.label.x = o.x, o.label.y = o.y;
}
});
}
function bP(i, a) {
return E.mapValues(E.pick(i, a), Number);
}
function xP(i) {
var a = {};
return i && Object.entries(i).forEach(([i, o]) => {
typeof i == "string" && (i = i.toLowerCase()), a[i] = o;
}), a;
}
}), St = v((i, a) => {
var o = _(), s = y().Graph;
a.exports = { debugOrdering: c };
function c(i) {
let a = o.buildLayerMatrix(i), c = new s({
compound: !0,
multigraph: !0
}).setGraph({});
return i.nodes().forEach((a) => {
c.setNode(a, { label: a }), c.setParent(a, "layer" + i.node(a).rank);
}), i.edges().forEach((i) => c.setEdge(i.v, i.w, {}, i.name)), a.forEach((i, a) => {
let o = "layer" + a;
c.setNode(o, { rank: "same" }), i.reduce((i, a) => (c.setEdge(i, a, { style: "invis" }), a));
}), c;
}
}), Ft = v((i, a) => {
a.exports = "2.0.4";
}), dagre_esm_default = v((i, a) => {
a.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(i, a, o = .5) {
let s = i.x + (a.x - i.x) * o;
return [
i,
{
x: s,
y: i.y
},
{
x: s,
y: a.y
},
a
];
}
function roundedOrthogonalPath([i, a, o, s], c = 12) {
let d = Math.min(c, Math.abs(a.x - i.x), Math.abs(o.y - a.y)), f = Math.min(c, Math.abs(o.y - a.y), Math.abs(s.x - o.x)), g = {
x: a.x - Math.sign(a.x - i.x) * d,
y: a.y
}, b = {
x: a.x,
y: a.y + Math.sign(o.y - a.y) * d
}, x = {
x: o.x,
y: o.y - Math.sign(o.y - a.y) * f
}, S = {
x: o.x + Math.sign(s.x - o.x) * f,
y: o.y
};
return [
`M ${i.x} ${i.y}`,
`L ${g.x} ${g.y}`,
`Q ${a.x} ${a.y} ${b.x} ${b.y}`,
`L ${x.x} ${x.y}`,
`Q ${o.x} ${o.y} ${S.x} ${S.y}`,
`L ${s.x} ${s.y}`
].join(" ");
}
var MIN_SCALE = .2, MAX_SCALE = 3, ZOOM_STEP = .02;
const Flow = (i) => {
let [a, o] = useState(!1), [s, c] = useState(!1), d = useRef(null), f = useRef(null), [g, b] = useState({
x: 0,
y: 0,
scale: 1
}), [x, S] = useState({}), [C, w, E, O] = useMemo(() => {
if (Object.keys(x).length === 0) return [
i.nodes.map((i) => ({
...i,
x: 0,
y: 0,
width: 0,
height: 0,
isCluster: !1
})),
[],
{
width: 0,
height: 0
},
null
];
let a = new dagre_esm_default.graphlib.Graph({ compound: !0 }).setGraph({
rankdir: "LR",
align: "UL",
ranksep: i.gapX ?? 48,
nodesep: i.gapY ?? 48,
marginx: i.margin ?? 32,
marginy: i.margin ?? 64,
graph: "tight-tree"
}).setDefaultEdgeLabel(() => ({}));
for (let o of i.nodes) a.setNode(o.id, {
width: x[o.id]?.width,
height: x[o.id]?.height
});
for (let o of i.nodes) if (o.next) for (let i of o.next) a.setEdge(o.id, i);
dagre_esm_default.layout(a);
let o = a.graph();
return [
i.nodes.map((i) => {
let o = a.node(i.id);
return {
...i,
x: o?.x ?? 0,
y: o?.y ?? 0,
width: o?.width ?? 0,
height: o?.height ?? 0
};
}),
a.edges().map((i) => ({
from: i.v,
to: i.w
})),
{
width: o.width,
height: o.height
},
a
];
}, [
x,
i.nodes,
i.margin,
i.gapX
]), A = useRef(i.onGraphLayout);
A.current = i.onGraphLayout, useEffect(() => {
O && A.current?.(O);
}, [O]);
let M = useCallback((a) => {
if (!i.disableGestures && (a.ctrlKey || a.metaKey)) {
let i = a.currentTarget.getBoundingClientRect(), o = a.clientX - i.left, s = a.clientY - i.top;
b((i) => {
let c = Math.exp(-a.deltaY * ZOOM_STEP), d = Math.max(MIN_SCALE, Math.min(MAX_SCALE, i.scale * c)), f = d / i.scale, g = o - (o - i.x) * f, b = s - (s - i.y) * f;
return {
x: g,
y: b,
scale: d
};
});
return;
}
}, [i.disableGestures]), F = useCallback(() => {
c(!1), f.current = null;
}, []), I = useCallback((a) => {
if (!d.current || !a.nativeEvent.composedPath().includes(d.current) || i.disableGestures) return;
a.preventDefault(), c(!0), f.current = {
x: a.clientX,
y: a.clientY
};
function s() {
F(), o(!1);
}
return document.addEventListener("mouseup", s), () => {
document.removeEventListener("mouseup", s);
};
}, [i.disableGestures]), R = useCallback((a) => {
if (i.disableGestures || !s || !f.current) return;
let o = a.clientX - f.current.x, c = a.clientY - f.current.y;
f.current = {
x: a.clientX,
y: a.clientY
}, b((i) => ({
...i,
x: i.x + o,
y: i.y + c
}));
}, [s, i.disableGestures]), V = useCallback(() => {
let { width: i, height: a } = E, o = d.current;
if (!o) return;
let { width: s, height: c } = o.getBoundingClientRect();
console.log({
container: o,
containerWidth: s,
containerHeight: c,
width: i,
height: a
});
let f = Math.min(MAX_SCALE, Math.max(MIN_SCALE, Math.min(s / i, c / a)));
b((o) => ({
...o,
scale: f,
x: s / 2 - i * f / 2,
y: c / 2 - a * f / 2
}));
}, [E]);
return useEffect(() => {
if (i.disableGestures || !d.current) return;
let a = d.current, o = (i) => {
i.preventDefault();
};
return a.addEventListener("gesturestart", o, { passive: !1 }), a.addEventListener("gesturechange", o, { passive: !1 }), a.addEventListener("gestureend", o, { passive: !1 }), a.addEventListener("wheel", o, { passive: !1 }), () => {
a.removeEventListener("gesturestart", o), a.removeEventListener("gesturechange", o), a.removeEventListener("gestureend", o), a.removeEventListener("wheel", o);
};
}, [i.disableGestures]), useEffect(() => {
if (i.disableGestures) return;
let o = (i) => {
!a || !i.metaKey && !i.ctrlKey || [
"+",
"-",
"=",
"0"
].includes(i.key) && i.preventDefault();
};
return window.addEventListener("keydown", o), () => {
window.removeEventListener("keydown", o);
};
}, [a, i.disableGestures]), /* @__PURE__ */ jsxs("div", {
ref: d,
className: cn("bg-background relative h-full w-full touch-none", {
"cursor-grab": !i.disableGestures && !s,
"cursor-grabbing": !i.disableGestures && s
}, i.containerClassName),
onWheel: M,
onMouseDown: I,
onMouseMove: R,
onMouseLeave: () => {
F(), o(!1);
},
onMouseEnter: () => o(!0),
children: [
!i.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", i.className),
style: {
width: E.width,
height: E.height,
transform: `translate(${g.x}px, ${g.y}px) scale(${g.scale})`,
transformOrigin: "0 0"
},
children: [C.map((i) => {
let a = !!i.next?.length, o = C.some((a) => a.next?.includes(i.id)), s = !!(i.content && i.content({ node: i })), c = !!i.children?.length;
return /* @__PURE__ */ jsxs("div", {
ref: (a) => {
a && !x[i.id] && S((o) => ({
...o,
[i.id]: {
width: a.clientWidth,
height: a.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": !c,
"grid-rows-[auto_1fr]": s || c,
"grid-rows-[auto_auto_1fr]": s && c,
"rounded-xl border-dashed bg-transparent shadow-none": c
}),
style: {
left: i.x - i.width / 2,
top: i.y - i.height / 2,
minWidth: Math.min(Math.max(i.width, 256), i.maxWidth ?? Infinity),
minHeight: i.height,
maxWidth: i.maxWidth
},
children: [
/* @__PURE__ */ jsxs("div", {
className: "flex w-full items-center gap-2",
children: [
i.icon ? i.icon({ className: "size-4 text-secondary-foreground" }) : null,
/* @__PURE__ */ jsx("span", {
className: "font-medium",
children: i.title
}),
/* @__PURE__ */ jsx("div", {
className: "ml-auto",
children: i.headerSuffix ? i.headerSuffix({ node: i }) : null
})
]
}),
/* @__PURE__ */ jsx("div", {
className: "bg-secondary w-full rounded-sm p-2 empty:hidden",
children: i.content ? i.content({ node: i }) : null
}),
!!i.children?.length && /* @__PURE__ */ jsx("div", {
className: "size-full rounded-sm",
children: /* @__PURE__ */ jsx(Flow, {
nodes: i.children,
margin: 0,
gapX: 24,
gapY: 16,
onGraphLayout: (a) => {
let { width: o, height: s } = a.graph(), c = {
width: o + 20,
height: i.height + s + 4
};
S((a) => {
let o = a[i.id];
return o?.width === c.width && o?.height === c.height ? a : {
...a,
[i.id]: c
};
});
},
disableBackground: !0,
disableGestures: !0,
className: "bg-transparent",
isChild: !0
})
}),
a && /* @__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" }),
o && /* @__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" })
]
}, i.id);
}), /* @__PURE__ */ jsx("svg", {
className: "pointer-events-none absolute left-0 top-0 -z-10",
style: {
width: E.width,
height: E.height
},
children: w.filter(Boolean).map((i) => {
let a = C.find((a) => a.id === i.from), o = C.find((a) => a.id === i.to);
return !a || !o ? 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: a.x + a.width / 2,
y: a.y
}, {
x: o.x - o.width / 2,
y: o.y
}), 4)
}, i.from + i.to);
})
})]
}),
!i.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: () => b((i) => ({
...i,
scale: i.scale - ZOOM_STEP
})),
children: /* @__PURE__ */ jsx(ZoomOutIcon, { className: "size-4" })
})
}), /* @__PURE__ */ jsx(TooltipContent, { children: "Zoom out" })] }),
/* @__PURE__ */ jsx(Slider, {
value: [g.scale],
onValueChange: (i) => b((a) => ({
...a,
scale: i[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: () => b((i) => ({
...i,
scale: i.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: V,
children: [/* @__PURE__ */ jsx(MaximizeIcon, { className: "size-4" }), "Fit in view"]
})
]
})
})
]
});
};
var import_lodash$2 = /* @__PURE__ */ __toESM(require_lodash());
function indent(i) {
return " ".repeat(i);
}
function normalizeStringSet(i) {
return i ? Array.isArray(i) ? i : Array.from(i) : [];
}
function isObject(i) {
return !!i && typeof i == "object" && !Array.isArray(i);
}
function renderFlattenPathSegment(i) {
return i === "@" ? "@" : isObject(i) && "Field" in i ? String(i.Field) : isObject(i) && "TypeCondition" in i ? `|[${normalizeStringSet(i.TypeCondition).join("|")}]` : (0, import_lodash$2.isArray)(i) ? renderFlattenPath(i) : String(i);
}
function renderFlattenPath(i) {
let a = "";
for (let o = 0; o < i.length; o++) {
let s = i[o], c = i[o + 1];
a += renderFlattenPathSegment(s), c !== void 0 && (isObject(c) && "TypeCondition" in c || (a += "."));
}
return a;
}
function renderSelectionSet(i, a = 0) {
if (!i?.length) return "";
let o = [];
for (let s of i) if (s.kind === "InlineFragment") {
o.push(`${indent(a)}... on ${s.typeCondition} {`);
for (let i of s.selections ?? []) o.push(`${indent(a + 1)}${i.name}`);
o.push(`${indent(a)}}`);
}
return o.join("\n");
}
function renderQueryPlan(i) {
let a = [];
return a.push("QueryPlan {"), i.node ? a.push(renderPlanNode(i.node, 1)) : a.push(`${indent(1)}None`), a.push("}"), a.join("\n");
}
function renderPlanNode(i, a = 0) {
switch (i.kind) {
case "Fetch": return renderFetchNode(i, a);
case "BatchFetch": return renderBatchFetchNode(i, a);
case "Flatten": return renderFlattenNode(i, a);
case "Sequence": return renderSequenceNode(i, a);
case "Parallel": return renderParallelNode(i, a);
case "Condition": return renderConditionNode(i, a);
case "Subscription": return renderSubscriptionNode(i, a);
case "Defer": return renderDeferNode(i, a);
default: return `${indent(a)}<UnknownNode kind="${i.kind ?? "unknown"}">`;
}
}
function renderFetchNode(i, a = 0) {
let o = [];
if (o.push(`${indent(a)}Fetch(service: "${i.serviceName}") {`), i.requires) {
o.push(`${indent(a + 1)}{`);
let s = renderSelectionSet(i.requires, a + 2);
s && o.push(s), o.push(`${indent(a + 1)}} =>`);
}
let s = i.operation.includes("_entities") ? 2 : 1;
try {
o.push(`${indent(a + 1)}{`, renderMultilineBlock(print(parse(i.operation)).split("\n").slice(s, s * -1).join("\n"), a + 2 - s), `${indent(a + 1)}}`);
} catch {
o.push(`${indent(a + 1)}${i.operation}`);
}
return o.push(`${indent(a)}}`), o.join("\n");
}
function renderBatchFetchNode(i, a = 0) {
let o = [];
o.push(`${indent(a)}BatchFetch(service: "${i.serviceName}") {`);
for (let s = 0; s < i.entityBatch.aliases.length; s++) {
let c = i.entityBatch.aliases[s];
o.push(`${indent(a + 1)}${c.alias} {`, `${indent(a + 2)}paths: [`, ...c.paths.map((i) => `${indent(a + 3)}"${renderFlattenPath(i)}"`), `${indent(a + 2)}]`);
let d = renderSelectionSet(c.requires, a + 3);
d && o.push(`${indent(a + 2)}{`, d, `${indent(a + 2)}}`), s < i.entityBatch.aliases.length - 1 && o.push(`${indent(a + 1)}}`);
}
try {
o.push(`${indent(a + 1)}}`, `${indent(a + 1)}{`, renderMultilineBlock(print(parse(i.operation)).split("\n").slice(1, -1).join("\n"), a + 1), `${indent(a + 1)}}`, `${indent(a)}}`);
} catch {
o.push(`${indent(a + 1)}${i.operation}`);
}
return o.join("\n");
}
function renderFlattenNode(i, a = 0) {
let o = [];
return o.push(`${indent(a)}Flatten(path: "${renderFlattenPath(i.path)}") {`, renderPlanNode(i.node, a + 1), `${indent(a)}}`), o.join("\n");
}
function renderSequenceNode(i, a = 0) {
let o = [];
o.push(`${indent(a)}Sequence {`);
for (let s of i.nodes) o.push(renderPlanNode(s, a + 1));
return o.push(`${indent(a)}}`), o.join("\n");
}
function renderParallelNode(i, a = 0) {
let o = [];
o.push(`${indent(a)}Parallel {`);
for (let s of i.nodes) o.push(renderPlanNode(s, a + 1));
return o.push(`${indent(a)}}`), o.join("\n");
}
function renderConditionNode(i, a = 0) {
let o = [];
return i.ifClause && !i.elseClause ? (o.push(`${indent(a)}Include(if: $${i.condition}) {`, renderPlanNode(i.ifClause, a + 1), `${indent(a)}}`), o.join("\n")) : !i.ifClause && i.elseClause ? (o.push(`${indent(a)}Skip(if: $${i.condition}) {`, renderPlanNode(i.elseClause, a + 1), `${indent(a)}}`), o.join("\n")) : i.ifClause && i.elseClause ? (o.push(`${indent(a)}Condition(if: $${i.condition}) {`, `${indent(a + 1)}if {`, renderPlanNode(i.ifClause, a + 2), `${indent(a + 1)}}`, `${indent(a + 1)}else {`, renderPlanNode(i.elseClause, a + 2), `${indent(a + 1)}}`, `${indent(a)}}`), o.join("\n")) : `${indent(a)}Condition(if: $${i.condition}) {}`;
}
function renderSubscriptionNode(i, a = 0) {
let o = [];
return o.push(`${indent(a)}Subscription {`, `${indent(a + 1)}primary {`, renderPlanNode(i.primary, a + 2), `${indent(a + 1)}}`, `${indent(a)}}`), o.join("\n");
}
function renderDeferNode(i, a = 0) {
let o = [];
if (o.push(`${indent(a)}Defer {`, `${indent(a + 1)}primary {`), i.primary.subselection && o.push(`${indent(a + 2)}subselection: ${JSON.stringify(i.primary.subselection)}`), i.primary.node && o.push(renderPlanNode(i.primary.node, a + 2)), o.push(`${indent(a + 1)}}`), i.deferred.length > 0) {
o.push(`${indent(a + 1)}deferred {`);
for (let s of i.deferred) o.push(`${indent(a + 2)}item {`), s.label && o.push(`${indent(a + 3)}label: ${JSON.stringify(s.label)}`), o.push(`${indent(a + 3)}queryPath: [${s.queryPath.join(", ")}]`), s.subselection && o.push(`${indent(a + 3)}subselection: ${JSON.stringify(s.subselection)}`), s.depends.length && o.push(`${indent(a + 3)}depends: [${s.depends.map((i) => i.deferLabel ? `${i.id}:${i.deferLabel}` : i.id).join(", ")}]`), s.node && o.push(renderPlanNode(s.node, a + 3)), o.push(`${indent(a + 2)}}`);
o.push(`${indent(a + 1)}}`);
}
return o.push(`${indent(a)}}`), o.join("\n");
}
function renderMultilineBlock(i, a = 0) {
return i.split("\n").map((i) => `${indent(a)}${i}`).join("\n");
}
function visitNode(i, a, o, s, c) {
let d = {
id: v4_default(),
title: i.kind,
kind: i.kind
};
switch (i.kind) {
case "Fetch":
d.content = () => {
let a = i.requires?.[0]?.typeCondition;
return /* @__PURE__ */ jsxs("div", {
className: "flex flex-col gap-2",
children: [
s,
/* @__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: i.serviceName
})]
}),
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: "Entity"
}), /* @__PURE__ */ jsx("span", {
className: "text-secondary-foreground overflow-hidden text-ellipsis whitespace-nowrap",
children: a
})]
}),
/* @__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: c ?? renderFetchNode(i),
language: "graphql"
})
})]
})] })
})
]
});
};
break;
case "BatchFetch":
d.headerSuffix = () => {
let a = i.entityBatch.aliases.reduce((i, a) => i + a.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: a
})]
});
}, d.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: i.serviceName
})]
}),
i.entityBatch.aliases.map((i) => /* @__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"
}), i.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: i.paths.length
})
})
}), /* @__PURE__ */ jsx(TooltipContent, {
className: "whitespace-pre-wrap font-mono",
children: i.paths.map((i) => renderFlattenPath(i)).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(i.paths[0])
})
}), /* @__PURE__ */ jsx(TooltipContent, { children: renderFlattenPath(i.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: i.requires[0].typeCondition
})]
})]
}, i.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: (i) => {
i.preventDefault(), i.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(i),
language: "graphql"
})
})]
})] })
})
]
});
break;
case "Flatten":
d = visitNode(i.node, d, o, /* @__PURE__ */ jsxs(Fragment$1, { children: [s, /* @__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(i.path)
})
}), /* @__PURE__ */ jsx(TooltipContent, { children: renderFlattenPath(i.path) })] })]
})] }), c ?? renderFlattenNode(i));
break;
case "Sequence": {
d = null;
let a = null;
for (let f = 0; f < i.nodes.length; f++) {
let g = i.nodes[f], b = visitNode(g, a, f === 0 ? [] : o, s, c);
f === 0 && (d = b), a && (a.next = [b.id]), a = b;
}
break;
}
case "Parallel":
d.children = [];
for (let a of i.nodes) visitNode(a, d, d.children, s, c);
break;
case "Condition":
i.ifClause ? d = visitNode(i.ifClause, d, o, /* @__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: $", i.condition]
})]
}), renderConditionNode(i)) : i.elseClause && (d = visitNode(i.elseClause, d, o, /* @__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: $", i.condition]
})]
}), renderConditionNode(i)));
break;
case "Subscription":
visitNode(i.primary, d, o, s, c);
break;
case "Defer":
i.primary.node && visitNode(i.primary.node, d, o, s, c);
for (let a of i.deferred) a.node && visitNode(a.node, d, o, s, c);
break;
default: break;
}
return a && d && (a.next = [...a.next ?? [], d.id]), d && (d.icon = queryPlanNodeIcon(d.kind), o.push(d)), d;
}
const queryPlanNodeIcon = (i) => (a) => {
switch (i) {
case "Root": return /* @__PURE__ */ jsx(GraphQLIcon, {
...a,
className: cn(a.className, "size-6 min-w-6 text-pink-500")
});
case "Fetch": return /* @__PURE__ */ jsx(Box, { ...a });
case "BatchFetch": return /* @__PURE__ */ jsx(Boxes, { ...a });
case "Flatten": return /* @__PURE__ */ jsx(Layers2Icon, { ...a });
case "Sequence": return /* @__PURE__ */ jsx(ListOrderedIcon, { ...a });
case "Parallel": return /* @__PURE__ */ jsx(NetworkIcon, { ...a });
case "Condition": return /* @__PURE__ */ jsx(GitForkIcon, {
...a,
className: cn("rotate-90", a.className)
});
case "Subscription": return /* @__PURE__ */ jsx(UnlinkIcon, { ...a });
case "Defer": return /* @__PURE__ */ jsx(ClockIcon, { ...a });
}
};
function QueryPlanTree(i) {
let a = useMemo(() => {
let a = [], o = {
id: v4_default(),
title: "",
kind: "Root",
maxWidth: 42
};
return a.push(o), i.plan.node && visitNode(i.plan.node, o, a), a.map((i) => ({
...i,
icon: queryPlanNodeIcon(i.kind)
}));
}, [i.plan]);
return /* @__PURE__ */ jsx(Flow, { nodes: a });
}
function Select({ ...i }) {
return /* @__PURE__ */ jsx(Root2$2, {
"data-slot": "select",
...i
});
}
function SelectValue({ ...i }) {
return /* @__PURE__ */ jsx(Value, {
"data-slot": "select-value",
...i
});
}
function SelectTrigger({ className: i, size: a = "default", children: o,...s }) {
return /* @__PURE__ */ jsxs(Trigger$1, {
"data-slot": "select-trigger",
"data-size": a,
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", i),
...s,
children: [o, /* @__PURE__ */ jsx(Icon, {
asChild: !0,
children: /* @__PURE__ */ jsx(ChevronDownIcon, { className: "size-4 opacity-50" })
})]
});
}
function SelectContent({ className: i, children: a, position: o = "popper", align: s = "center",...c }) {
let { container: d } = useLaboratory();
return /* @__PURE__ */ jsx(Portal$1, {
container: d,
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 z-200 relative 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", o === "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", i),
position: o,
align: s,
...c,
children: [
/* @__PURE__ */ jsx(SelectScrollUpButton, {}),
/* @__PURE__ */ jsx(Viewport, {
className: cn("p-1", o === "popper" && "h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1"),
children: a
}),
/* @__PURE__ */ jsx(SelectScrollDownButton, {})
]
})
});
}
function SelectItem({ className: i, children: a,...o }) {
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", i),
...o,
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: a })]
});
}
function SelectScrollUpButton({ className: i,...a }) {
return /* @__PURE__ */ jsx(ScrollUpButton, {
"data-slot": "select-scroll-up-button",
className: cn("flex cursor-default items-center justify-center py-1", i),
...a,
children: /* @__PURE__ */ jsx(ChevronUpIcon, { className: "size-4" })
});
}
function SelectScrollDownButton({ className: i,...a }) {
return /* @__PURE__ */ jsx(ScrollDownButton, {
"data-slot": "select-scroll-down-button",
className: cn("flex cursor-default items-center justify-center py-1", i),
...a,
children: /* @__PURE__ */ jsx(ChevronDownIcon, { className: "size-4" })
});
}
function Spinner({ className: i,...a }) {
return /* @__PURE__ */ jsx(Loader2Icon, {
role: "status",
"aria-label": "Loading",
className: cn("size-4 animate-spin", i),
...a
});
}
function Tabs({ className: i,...a }) {
return /* @__PURE__ */ jsx(Root2$1, {
"data-slot": "tabs",
className: cn("flex flex-col", i),
...a
});
}
function TabsList({ className: i,...a }) {
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]", i),
...a
});
}
function TabsTrigger({ className: i,...a }) {
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", i),
...a
});
}
function TabsContent({ className: i,...a }) {
return /* @__PURE__ */ jsx(Content, {
"data-slot": "tabs-content",
className: cn("flex-1 outline-none", i),
...a
});
}
var toggleVariants = cva("cursor-pointer 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: i, variant: a, size: o,...s }) {
return /* @__PURE__ */ jsx(Root, {
"data-slot": "toggle",
className: cn(toggleVariants({
variant: a,
size: o,
className: i
})),
...s
});
}
var ToggleGroupContext = React.createContext({
size: "default",
variant: "default",
spacing: 0
});
function ToggleGroup({ className: i, variant: a, size: o, spacing: s = 0, children: c,...d }) {
return /* @__PURE__ */ jsx(Root2, {
"data-slot": "toggle-group",
"data-variant": a,
"data-size": o,
"data-spacing": s,
style: { "--gap": s },
className: cn("group/toggle-group data-[spacing=default]:data-[variant=outline]:shadow-xs flex w-fit items-center gap-[--spacing(var(--gap))] rounded-md", i),
...d,
children: /* @__PURE__ */ jsx(ToggleGroupContext.Provider, {
value: {
variant: a,
size: o,
spacing: s
},
children: c
})
});
}
function ToggleGroupItem({ className: i, children: a, variant: o, size: s,...c }) {
let d = React.useContext(ToggleGroupContext);
return /* @__PURE__ */ jsx(Item2, {
"data-slot": "toggle-group-item",
"data-variant": d.variant || o,
"data-size": d.size || s,
"data-spacing": d.spacing,
className: cn(toggleVariants({
variant: d.variant || o,
size: d.size || s
}), "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", i),
...c,
children: a
});
}
function Checkbox({ className: i, asSpan: a,...o }) {
let s = /* @__PURE__ */ jsx(CheckboxIndicator, {
"data-slot": "checkbox-indicator",
className: "grid place-content-center text-current transition-none",
children: /* @__PURE__ */ jsx(CheckIcon, { className: "size-3.5" })
});
return /* @__PURE__ */ jsx(Checkbox$1, {
"data-slot": "checkbox",
asChild: a,
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", i),
...o,
children: a ? /* @__PURE__ */ jsx("span", { children: s }) : s
});
}
function ContextMenu({ ...i }) {
return /* @__PURE__ */ jsx(Root2$3, {
"data-slot": "context-menu",
...i
});
}
function ContextMenuTrigger({ ...i }) {
return /* @__PURE__ */ jsx(Trigger$2, {
"data-slot": "context-menu-trigger",
...i
});
}
function ContextMenuContent({ className: i,...a }) {
let [o, s] = useState(null);
return /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(Portal2, {
container: o,
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", i),
...a
})
}), /* @__PURE__ */ jsx("div", {
ref: s,
style: { display: "contents" }
})] });
}
function ContextMenuItem({ className: i, inset: a, variant: o = "default",...s }) {
return /* @__PURE__ */ jsx(Item2$1, {
"data-slot": "context-menu-item",
"data-inset": a,
"data-variant": o,
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", i),
...s
});
}
var import_lodash$1 = /* @__PURE__ */ __toESM(require_lodash()), BuilderRowContextMenu = (i) => {
let { schema: a, enableDocs: o, openDocs: s } = useLaboratory(), c = useMemo(() => docsTargetFromPath(i.path, a ?? null), [i.path, a]);
return !o || !c ? /* @__PURE__ */ jsx(Fragment$1, { children: i.children }) : /* @__PURE__ */ jsxs(ContextMenu, { children: [/* @__PURE__ */ jsx(ContextMenuTrigger, {
asChild: !0,
children: i.children
}), /* @__PURE__ */ jsx(ContextMenuContent, { children: /* @__PURE__ */ jsx(ContextMenuItem, {
onClick: () => s(c),
children: "Open in Docs"
}) })] });
};
const BuilderArgument = (i) => {
let { schema: a, activeOperation: o, addArgToActiveOperation: s, deleteArgFromActiveOperation: c, activeTab: d } = useLaboratory(), f = useMemo(() => i.operation ?? o ?? null, [i.operation, o]), g = useMemo(() => i.path.join("."), [i.path]), b = useMemo(() => isArgInQuery(f?.query ?? "", g, i.field.name), [
f?.query,
g,
i.field.name
]);
return /* @__PURE__ */ jsxs("div", {
className: cn(buttonVariants({
variant: "ghost",
size: "sm"
}), "text-muted-foreground p-1! w-full justify-start text-xs", { "text-foreground-primary": b }),
children: [
/* @__PURE__ */ jsx("div", { className: "size-4" }),
/* @__PURE__ */ jsx(Checkbox, {
onClick: (i) => i.stopPropagation(),
checked: b,
disabled: d?.type !== "operation" || i.isReadOnly,
onCheckedChange: (o) => {
a && (o ? s(i.path.join("."), i.field.name, a, i.operationName) : c(i.path.join("."), i.field.name, i.operationName));
}
}),
/* @__PURE__ */ jsx(BoxIcon, { className: "size-4 text-rose-400" }),
i.field.name,
": ",
/* @__PURE__ */ jsx(GraphQLType, { type: i.field.type })
]
}, i.field.name);
}, BuilderScalarField = (i) => {
let { activeOperation: a, addPathToActiveOperation: o, deletePathFromActiveOperation: s, activeTab: c } = useLaboratory(), d = useMemo(() => i.operation ?? a ?? null, [i.operation, a]), f = useMemo(() => i.path.join("."), [i.path]), g = useMemo(() => i.openPaths.includes(f) || !!i.forcedOpenPaths?.has(f), [
i.openPaths,
i.forcedOpenPaths,
f
]), b = useCallback((a) => {
i.setOpenPaths(a ? [...i.openPaths, f] : i.openPaths.filter((i) => i !== f));
}, [f, i]), x = useMemo(() => isPathInQuery(d?.query ?? "", f, i.operationName), [
d?.query,
f,
i.operationName
]), S = useMemo(() => i.field.args ?? [], [i.field]), C = useMemo(() => S.some((a) => isArgInQuery(d?.query ?? "", f, a.name, i.operationName)), [
d?.query,
S,
f,
i.operationName
]), w = useMemo(() => splitIdentifier(i.field.name).some((a) => i.searchValue?.toLowerCase().includes(a.toLowerCase())), [i.searchValue, i.field.name]);
return i.isSearchActive && i.visiblePaths && !i.visiblePaths.has(f) ? null : i.disableChildren ? /* @__PURE__ */ jsx(BuilderRowContextMenu, {
path: i.path,
children: /* @__PURE__ */ jsxs("div", {
className: cn(buttonVariants({
variant: "ghost",
size: "sm"
}), "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: `${(i.path.length - 2) * 32}px` },
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: (i) => i.stopPropagation(),
checked: x,
disabled: c?.type !== "operation" || i.isReadOnly,
onCheckedChange: (a) => {
a ? (b(!0), o(f, i.operationName)) : s(f, i.operationName);
}
}),
/* @__PURE__ */ jsx(BoxIcon, { className: "size-4 text-rose-400" }),
i.label ?? /* @__PURE__ */ jsx("span", {
className: cn({ "text-primary-foreground bg-primary -mx-0.5 rounded-sm px-0.5": w }),
children: i.field.name
}),
": ",
/* @__PURE__ */ jsx(GraphQLType, { type: i.field.type })
]
})
}) : S.length > 0 ? /* @__PURE__ */ jsxs(Collapsible, {
open: g,
onOpenChange: b,
children: [/* @__PURE__ */ jsx(BuilderRowContextMenu, {
path: i.path,
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: `${(i.path.length - 2) * 32}px` },
size: "sm",
children: [
/* @__PURE__ */ jsx("div", { className: "bg-card absolute left-0 top-0 -z-20 size-full" }),
/* @__PURE__ */ jsx("div", { className: "group-hover:bg-accent/50 absolute left-0 top-0 -z-10 size-full transition-colors" }),
/* @__PURE__ */ jsx(ChevronDownIcon, { className: cn("text-muted-foreground size-4 transition-all", { "-rotate-90": !g }) }),
/* @__PURE__ */ jsx(Checkbox, {
asSpan: !0,
onClick: (i) => i.stopPropagation(),
checked: x,
disabled: c?.type !== "operation" || i.isReadOnly,
onCheckedChange: (a) => {
a ? (b(!0), o(f, i.operationName)) : s(f, i.operationName);
}
}),
/* @__PURE__ */ jsx(BoxIcon, { className: "size-4 text-rose-400" }),
i.label ?? /* @__PURE__ */ jsx("span", {
className: cn({ "text-primary-foreground bg-primary -mx-0.5 rounded-sm px-0.5": w }),
children: i.field.name
}),
": ",
/* @__PURE__ */ jsx(GraphQLType, { type: i.field.type })
]
})
})
}), /* @__PURE__ */ jsx(CollapsibleContent, {
className: "border-border relative z-0 ml-3 flex flex-col border-l pl-2",
children: g && /* @__PURE__ */ jsx("div", { children: S.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": C }),
style: { top: `${(i.path.length - 1) * 32}px` },
size: "sm",
children: [
/* @__PURE__ */ jsx(ChevronDownIcon, { className: cn("text-muted-foreground size-4 transition-all", { "-rotate-90": !g }) }),
/* @__PURE__ */ jsx(Checkbox, {
asSpan: !0,
onClick: (i) => i.stopPropagation(),
checked: C,
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: S.map((a) => /* @__PURE__ */ jsx(BuilderArgument, {
field: a,
path: [...i.path],
isReadOnly: i.isReadOnly,
operation: d
}, a.name))
})] }) })
})]
}, i.field.name) : /* @__PURE__ */ jsx(BuilderRowContextMenu, {
path: i.path,
children: /* @__PURE__ */ jsxs("div", {
className: cn(buttonVariants({
variant: "ghost",
size: "sm"
}), "text-muted-foreground p-1! w-full justify-start text-xs", { "text-foreground-primary": x }),
children: [
/* @__PURE__ */ jsx("div", { className: "size-4" }),
/* @__PURE__ */ jsx(Checkbox, {
onClick: (i) => i.stopPropagation(),
checked: x,
disabled: c?.type !== "operation",
onCheckedChange: (a) => {
a ? o(i.path.join("."), i.operationName) : s(i.path.join("."), i.operationName);
}
}),
/* @__PURE__ */ jsx(BoxIcon, { className: "size-4 text-rose-400" }),
i.label ?? /* @__PURE__ */ jsx("span", {
className: cn({ "text-primary-foreground bg-primary -mx-0.5 rounded-sm px-0.5": w }),
children: i.field.name
}),
": ",
/* @__PURE__ */ jsx(GraphQLType, { type: i.field.type })
]
}, i.field.name)
});
}, BuilderObjectField = (i) => {
let { schema: a, activeOperation: o, addPathToActiveOperation: s, deletePathFromActiveOperation: c, activeTab: d } = useLaboratory(), f = useMemo(() => i.operation ?? o ?? null, [i.operation, o]), g = useMemo(() => i.path.join("."), [i.path]), b = useMemo(() => i.openPaths.includes(g) || !!i.forcedOpenPaths?.has(g), [
i.openPaths,
i.forcedOpenPaths,
g
]), x = useCallback((a) => {
i.setOpenPaths(a ? [...i.openPaths, g] : i.openPaths.filter((i) => i !== g));
}, [g, i]), S = useMemo(() => Object.values((a?.getType(i.field.type.toString().replace(/\[|\]|!/g, "")))?.getFields?.() ?? {}), [a, i.field.type]), C = useMemo(() => i.field.args ?? [], [i.field]), w = useMemo(() => C.some((a) => isArgInQuery(f?.query ?? "", i.path.join("."), a.name)), [
f?.query,
C,
i.path
]), E = useMemo(() => isPathInQuery(f?.query ?? "", g), [f?.query, g]), O = useMemo(() => splitIdentifier(i.field.name).some((a) => i.searchValue?.toLowerCase().includes(a.toLowerCase())), [i.searchValue, i.field.name]);
return i.isSearchActive && i.visiblePaths && !i.visiblePaths.has(g) ? null : i.disableChildren ? /* @__PURE__ */ jsx(BuilderRowContextMenu, {
path: i.path,
children: /* @__PURE__ */ jsxs("div", {
className: cn(buttonVariants({
variant: "ghost",
size: "sm"
}), "text-muted-foreground bg-card p-1! group sticky top-0 z-10 w-full justify-start overflow-hidden text-xs", { "text-foreground-primary": E }),
style: { top: `${(i.path.length - 2) * 32}px` },
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: (i) => i.stopPropagation(),
checked: E,
disabled: d?.type !== "operation" || i.isReadOnly,
onCheckedChange: (a) => {
a ? (x(!0), s(g, i.operationName)) : c(g, i.operationName);
}
}),
/* @__PURE__ */ jsx(BoxIcon, { className: "size-4 text-rose-400" }),
i.label ?? /* @__PURE__ */ jsx("span", {
className: cn({ "text-primary-foreground bg-primary -mx-0.5 rounded-sm px-0.5": O }),
children: i.field.name
}),
": ",
/* @__PURE__ */ jsx(GraphQLType, { type: i.field.type })
]
})
}) : /* @__PURE__ */ jsxs(Collapsible, {
open: b,
onOpenChange: x,
children: [/* @__PURE__ */ jsx(BuilderRowContextMenu, {
path: i.path,
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": E }),
style: { top: `${(i.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": !b }) }),
/* @__PURE__ */ jsx(Checkbox, {
asSpan: !0,
onClick: (i) => i.stopPropagation(),
checked: E,
disabled: d?.type !== "operation" || i.isReadOnly,
onCheckedChange: (a) => {
a ? (x(!0), s(g, i.operationName)) : c(g, i.operationName);
}
}),
/* @__PURE__ */ jsx(BoxIcon, { className: "size-4 text-rose-400" }),
i.label ?? /* @__PURE__ */ jsx("span", {
className: cn({ "text-primary-foreground bg-primary -mx-0.5 rounded-sm px-0.5": O }),
children: i.field.name
}),
": ",
/* @__PURE__ */ jsx(GraphQLType, { type: i.field.type })
]
})
})
}), /* @__PURE__ */ jsx(CollapsibleContent, {
className: "border-border relative z-0 ml-4 flex flex-col border-l pl-1",
children: b && /* @__PURE__ */ jsxs("div", { children: [C.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": w }),
style: { top: `${(i.path.length - 1) * 32}px` },
size: "sm",
children: [
/* @__PURE__ */ jsx(ChevronDownIcon, { className: cn("text-muted-foreground size-4 transition-all", { "-rotate-90": !b }) }),
/* @__PURE__ */ jsx(Checkbox, {
asSpan: !0,
onClick: (i) => i.stopPropagation(),
checked: w,
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: C.map((a) => /* @__PURE__ */ jsx(BuilderArgument, {
field: a,
path: [...i.path],
operation: f
}, a.name))
})] }), S?.map((a) => /* @__PURE__ */ jsx(BuilderField, {
field: a,
path: [...i.path, a.name],
openPaths: i.openPaths,
setOpenPaths: i.setOpenPaths,
visiblePaths: i.visiblePaths,
forcedOpenPaths: i.forcedOpenPaths,
isSearchActive: i.isSearchActive,
isReadOnly: i.isReadOnly,
operation: f,
operationName: i.operationName,
searchValue: i.searchValue
}, a.name))] })
})]
}, i.field.name);
}, BuilderField = (i) => {
let { schema: a } = useLaboratory(), o = a?.getType(i.field.type.toString().replace(/\[|\]|!/g, ""));
return !o || o instanceof GraphQLScalarType || o instanceof GraphQLEnumType || o instanceof GraphQLUnionType ? /* @__PURE__ */ jsx(BuilderScalarField, {
field: i.field,
path: i.path,
openPaths: i.openPaths,
setOpenPaths: i.setOpenPaths,
visiblePaths: i.visiblePaths,
forcedOpenPaths: i.forcedOpenPaths,
isSearchActive: i.isSearchActive,
isReadOnly: i.isReadOnly,
operation: i.operation,
operationName: i.operationName,
searchValue: i.searchValue,
label: i.label,
disableChildren: i.disableChildren
}) : /* @__PURE__ */ jsx(BuilderObjectField, {
field: i.field,
path: i.path,
openPaths: i.openPaths,
setOpenPaths: i.setOpenPaths,
visiblePaths: i.visiblePaths,
forcedOpenPaths: i.forcedOpenPaths,
isSearchActive: i.isSearchActive,
isReadOnly: i.isReadOnly,
operation: i.operation,
operationName: i.operationName,
searchValue: i.searchValue,
label: i.label,
disableChildren: i.disableChildren
});
};
let BuilderSearchResultMode = /* @__PURE__ */ function(i) {
return i.LIST = "list", i.TREE = "tree", i;
}({});
const BuilderSearchModeToggle = (i) => {
let a = i.isSearchActive ? null : "Search fields to switch between tree and list";
return /* @__PURE__ */ jsxs(ToggleGroup, {
type: "single",
variant: "outline",
value: i.mode,
disabled: !i.isSearchActive,
onValueChange: (a) => {
a && i.onModeChange(a);
},
children: [/* @__PURE__ */ jsxs(Tooltip, { children: [/* @__PURE__ */ jsx(TooltipTrigger, {
asChild: !0,
children: /* @__PURE__ */ jsx("span", {
className: "flex",
children: /* @__PURE__ */ jsx(ToggleGroupItem, {
value: BuilderSearchResultMode.TREE,
"aria-label": "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: a ?? "Tree" })] }), /* @__PURE__ */ jsxs(Tooltip, { children: [/* @__PURE__ */ jsx(TooltipTrigger, {
asChild: !0,
children: /* @__PURE__ */ jsx("span", {
className: "flex",
children: /* @__PURE__ */ jsx(ToggleGroupItem, {
value: BuilderSearchResultMode.LIST,
"aria-label": "List",
className: "h-6 !rounded-l-none !rounded-r-sm p-2",
children: /* @__PURE__ */ jsx(TextAlignStartIcon, { className: "size-4" })
})
})
}), /* @__PURE__ */ jsx(TooltipContent, { children: a ?? "List" })] })]
});
}, BuilderSearchResults = (i) => i.mode === BuilderSearchResultMode.LIST ? i.matchedPaths.map((a) => {
let o = getFieldByPath(a, i.schema);
return o ? /* @__PURE__ */ jsx(BuilderField, {
field: o,
path: [a],
openPaths: i.openPaths,
setOpenPaths: i.setOpenPaths,
visiblePaths: i.visiblePaths,
forcedOpenPaths: i.forcedOpenPaths,
isSearchActive: i.isSearchActive,
isReadOnly: i.isReadOnly,
operation: i.operation,
operationName: i.operationName,
searchValue: i.searchValue,
disableChildren: !0,
label: /* @__PURE__ */ jsx("span", { children: a.split(".").map((o, s) => splitIdentifier(o).some((a) => i.searchValue.toLowerCase().includes(a.toLowerCase())) ? /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx("span", {
className: "text-primary-foreground bg-primary -mx-0.5 rounded-sm px-0.5",
children: o
}), s < a.split(".").length - 1 && "."] }, s) : /* @__PURE__ */ jsxs("span", { children: [o, s < a.split(".").length - 1 && "."] }, s)) })
}, a) : null;
}) : i.fields.filter((a) => i.visiblePaths?.has(`${i.tab}.${a.name}`)).map((a) => /* @__PURE__ */ jsx(BuilderField, {
field: a,
path: [i.tab, a.name],
openPaths: i.openPaths,
setOpenPaths: i.setOpenPaths,
visiblePaths: i.visiblePaths,
forcedOpenPaths: i.forcedOpenPaths,
isSearchActive: i.isSearchActive,
isReadOnly: i.isReadOnly,
operation: i.operation,
operationName: i.operationName,
searchValue: i.searchValue
}, a.name)), Builder = (i) => {
let { schema: a, activeOperation: o, endpoint: s, setEndpoint: c, reloadSchema: d, isFetchingSchema: f, tabs: g, addTab: b, setActiveTab: x, canIntrospect: S } = useLaboratory(), [C, w] = useState(s ?? ""), [E, O] = useState(""), A = useDeferredValue(E[E.length - 1] === "." ? E.slice(0, -1) : E), [M, F] = useState([]), [I, R] = useState(OperationTypeNode.QUERY), V = useMemo(() => i.operation ?? o ?? null, [i.operation, o]), rP = useRef([]), iP = useRef(V?.id ?? null);
useEffect(() => {
if (!a) return;
let i = getOpenPaths(V?.query ?? "");
if (i.length === 0) return;
let o = iP.current !== (V?.id ?? null), s = rP.current;
iP.current = V?.id ?? null, rP.current = i, F((a) => o ? i : mergeOpenPaths(a, s, i)), R(i[0]);
}, [
a,
V?.id,
V?.query
]);
let q = useMemo(() => Object.values(a?.getQueryType()?.getFields?.() ?? {}), [a]), aP = useMemo(() => Object.values(a?.getMutationType()?.getFields?.() ?? {}), [a]), oP = useMemo(() => Object.values(a?.getSubscriptionType()?.getFields?.() ?? {}), [a]), sP = A.trim().length > 0, cP = useMemo(() => !a || !sP ? null : searchSchemaPaths(a, A, {
maxDepth: 8,
maxMatches: 100,
maxNodes: 1e4,
operationTypes: [I]
}), [
a,
A,
sP,
I
]), lP = sP ? cP?.visiblePaths ?? null : null, uP = sP && A.includes(".") ? cP?.forcedOpenPaths ?? null : null, [dP, fP] = useState(BuilderSearchResultMode.TREE), pP = useMemo(() => (0, import_lodash$1.throttle)((i) => {
c(i);
}, 1e3), [c]);
return useEffect(() => {
pP(C);
}, [C, pP]), /* @__PURE__ */ jsxs("div", {
className: "bg-card flex size-full flex-col overflow-hidden",
children: [
/* @__PURE__ */ jsxs("div", {
className: "flex items-center gap-3 px-3 pt-3",
children: [/* @__PURE__ */ jsx("span", {
className: "text-base font-medium",
children: "Builder"
}), /* @__PURE__ */ jsxs("div", {
className: "ml-auto flex items-center gap-3",
children: [S && /* @__PURE__ */ jsxs(Button, {
onClick: () => {
let i = g.find((i) => i.type === "settings") ?? b({
type: "settings",
data: {}
});
x(i);
},
variant: "ghost",
size: "sm",
className: "p-1! h-6 rounded-sm !px-1.5",
children: [/* @__PURE__ */ jsx(SettingsIcon, { className: "size-4" }), "Introspection settings"]
}), /* @__PURE__ */ jsx("div", {
className: "flex items-center",
children: /* @__PURE__ */ jsxs(Tooltip, { children: [/* @__PURE__ */ jsx(TooltipTrigger, {
asChild: !0,
children: /* @__PURE__ */ jsx(Button, {
onClick: () => F([]),
variant: "ghost",
size: "icon-sm",
className: "p-1! size-6 rounded-sm",
disabled: M.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: (i) => w(i.currentTarget.value)
}),
/* @__PURE__ */ jsx(InputGroupAddon, { children: /* @__PURE__ */ jsx(GraphQLIcon, {}) }),
/* @__PURE__ */ jsx(InputGroupAddon, {
align: "inline-end",
children: /* @__PURE__ */ jsxs(Tooltip, { children: [/* @__PURE__ */ jsx(TooltipTrigger, {
asChild: !0,
children: /* @__PURE__ */ jsx("span", {
className: "flex",
children: /* @__PURE__ */ jsx(InputGroupButton, {
className: "rounded-full",
size: "icon-xs",
onClick: d,
disabled: f || !C,
"aria-label": "Reload schema",
children: /* @__PURE__ */ jsx(RefreshCwIcon, { className: cn("size-4", f && "animate-spin") })
})
})
}), /* @__PURE__ */ jsx(TooltipContent, { children: f ? "Introspecting…" : "Reload schema" })] })
})
] })
}),
/* @__PURE__ */ jsx("div", {
className: "flex-1 overflow-hidden",
children: a ? /* @__PURE__ */ jsxs(Tabs, {
value: I,
onValueChange: (i) => R(i),
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: q.length === 0,
className: "text-xs",
children: "Query"
}),
/* @__PURE__ */ jsx(TabsTrigger, {
value: "mutation",
disabled: aP.length === 0,
className: "text-xs",
children: "Mutation"
}),
/* @__PURE__ */ jsx(TabsTrigger, {
value: "subscription",
disabled: oP.length === 0,
className: "text-xs",
children: "Subscription"
})
]
})
}),
a && /* @__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: E,
onChange: (i) => O(i.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__ */ jsx(BuilderSearchModeToggle, {
mode: dP,
onModeChange: fP,
isSearchActive: sP
})
})
]
})
}),
/* @__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: sP ? /* @__PURE__ */ jsx(BuilderSearchResults, {
type: "query",
fields: q,
openPaths: M,
setOpenPaths: F,
visiblePaths: lP,
matchedPaths: cP?.matchedPaths ?? [],
forcedOpenPaths: cP?.forcedOpenPaths ?? null,
isSearchActive: sP,
mode: dP,
isReadOnly: i.isReadOnly ?? !1,
operation: V,
searchValue: A,
schema: a,
tab: I
}) : q.map((a) => /* @__PURE__ */ jsx(BuilderField, {
field: a,
path: ["query", a.name],
openPaths: M,
setOpenPaths: F,
visiblePaths: lP,
forcedOpenPaths: uP,
isSearchActive: sP,
isReadOnly: i.isReadOnly,
operation: V,
operationName: i.operationName,
searchValue: A
}, a.name))
}),
/* @__PURE__ */ jsx(TabsContent, {
value: "mutation",
children: sP ? /* @__PURE__ */ jsx(BuilderSearchResults, {
type: "mutation",
fields: aP,
openPaths: M,
setOpenPaths: F,
visiblePaths: lP,
matchedPaths: cP?.matchedPaths ?? [],
forcedOpenPaths: cP?.forcedOpenPaths ?? null,
isSearchActive: sP,
mode: dP,
isReadOnly: i.isReadOnly ?? !1,
operation: V,
searchValue: A,
schema: a,
tab: I
}) : aP.map((a) => /* @__PURE__ */ jsx(BuilderField, {
field: a,
path: ["mutation", a.name],
openPaths: M,
setOpenPaths: F,
visiblePaths: lP,
forcedOpenPaths: uP,
isSearchActive: sP,
isReadOnly: i.isReadOnly,
operation: V,
operationName: i.operationName,
searchValue: A
}, a.name))
}),
/* @__PURE__ */ jsx(TabsContent, {
value: "subscription",
children: sP ? /* @__PURE__ */ jsx(BuilderSearchResults, {
type: "subscription",
fields: oP,
openPaths: M,
setOpenPaths: F,
visiblePaths: lP,
matchedPaths: cP?.matchedPaths ?? [],
forcedOpenPaths: cP?.forcedOpenPaths ?? null,
isSearchActive: sP,
mode: dP,
isReadOnly: i.isReadOnly ?? !1,
operation: V,
searchValue: A,
schema: a,
tab: I
}) : oP.map((a) => /* @__PURE__ */ jsx(BuilderField, {
field: a,
path: ["subscription", a.name],
openPaths: M,
setOpenPaths: F,
visiblePaths: lP,
forcedOpenPaths: uP,
isSearchActive: sP,
isReadOnly: i.isReadOnly,
operation: V,
operationName: i.operationName,
searchValue: A
}, a.name))
})
]
}),
/* @__PURE__ */ jsx(ScrollBar, { className: "relative z-50" }),
/* @__PURE__ */ jsx(ScrollBar, {
orientation: "horizontal",
className: "relative z-50"
})
]
})
})
]
}, V?.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 = (i) => {
let { activeOperation: a, updateActiveOperation: o } = useLaboratory(), s = useMemo(() => i.operation ?? a ?? null, [i.operation, a]);
return /* @__PURE__ */ jsx(Editor, {
uri: variablesUri,
value: s?.variables ?? "",
language: "json",
onChange: (i) => {
o({ variables: i ?? "" });
},
options: { readOnly: i.isReadOnly }
});
}, Headers = (i) => {
let { activeOperation: a, updateActiveOperation: o } = useLaboratory(), s = useMemo(() => i.operation ?? a ?? null, [i.operation, a]);
return /* @__PURE__ */ jsx(Editor, {
uri: Uri.file("headers.json"),
value: s?.headers ?? "",
language: "json",
onChange: (i) => {
o({ headers: i ?? "" });
},
options: { readOnly: i.isReadOnly }
});
}, Extensions = (i) => {
let { activeOperation: a, updateActiveOperation: o } = useLaboratory(), s = useMemo(() => i.operation ?? a ?? null, [i.operation, a]);
return /* @__PURE__ */ jsx(Editor, {
uri: Uri.file("extensions.json"),
value: s?.extensions ?? "",
language: "json",
onChange: (i) => {
o({ extensions: i ?? "" });
},
options: { readOnly: i.isReadOnly }
});
};
const ResponseBody = ({ historyItem: i }) => /* @__PURE__ */ jsx(Editor, {
value: JSON.stringify(JSON.parse(i?.response ?? "{}"), null, 2),
defaultLanguage: "json",
theme: "hive-laboratory",
options: { readOnly: !0 }
}), ResponseHeaders = ({ historyItem: i }) => /* @__PURE__ */ jsx(Editor, {
value: JSON.stringify(JSON.parse(i?.headers ?? "{}"), null, 2),
defaultLanguage: "json",
theme: "hive-laboratory"
}), ResponsePreflight = ({ historyItem: i }) => /* @__PURE__ */ jsxs(ScrollArea, {
className: "h-full",
children: [/* @__PURE__ */ jsx("div", {
className: "flex flex-col gap-1.5 whitespace-pre-wrap p-3",
children: i?.preflightLogs?.map((i, a) => /* @__PURE__ */ jsxs("div", {
className: "gap-2 font-mono",
children: [
/* @__PURE__ */ jsx("span", {
className: "text-muted-foreground text-xs",
children: i.createdAt
}),
" ",
/* @__PURE__ */ jsx("span", {
className: cn("text-xs font-medium", {
"text-blue-400": i.level === "info",
"text-green-400": i.level === "log",
"text-yellow-400": i.level === "warn",
"text-red-400": i.level === "error",
"text-gray-400": i.level === "system"
}),
children: i.level.toUpperCase()
}),
" ",
/* @__PURE__ */ jsx("span", {
className: "text-xs",
children: i.message.join(" ")
})
]
}, a))
}), /* @__PURE__ */ jsx(ScrollBar, {})]
}), ResponseQueryPlan = ({ historyItem: i }) => {
let [a, o] = useState("text"), s = useMemo(() => parseQueryPlan(i?.response), [i]);
return s ? /* @__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: a,
onValueChange: (i) => o(i),
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"]
})]
}), a === "visual" ? /* @__PURE__ */ jsx(QueryPlanTree, { plan: s }, i?.id) : /* @__PURE__ */ jsx(Editor, {
value: renderQueryPlan(s),
defaultLanguage: "graphql",
theme: "hive-laboratory",
options: { readOnly: !0 }
})]
}) : /* @__PURE__ */ jsx(Empty, {
className: "size-full",
children: /* @__PURE__ */ jsxs(EmptyHeader, { children: [
/* @__PURE__ */ jsx(EmptyMedia, {
variant: "icon",
children: /* @__PURE__ */ jsx(NetworkIcon, { className: "text-muted-foreground size-6" })
}),
/* @__PURE__ */ jsx(EmptyTitle, { children: i ? "No query plan" : "No query plan yet" }),
/* @__PURE__ */ jsx(EmptyDescription, { children: i ? "This response did not include one. Query plans show up here when your gateway returns extensions.queryPlan." : "Run this operation against a gateway that returns extensions.queryPlan to see how it resolves across subgraphs." })
] })
});
}, ResponseSubscription = ({ historyItem: i }) => {
let { isActiveOperationLoading: a } = 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: a ? /* @__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: i?.responses.sort((i, a) => new Date(a.createdAt).getTime() - new Date(i.createdAt).getTime()).map((i, a) => {
let o = [
`// ${i.createdAt}`,
"",
JSON.stringify(JSON.parse(i.data), null, 2)
].join("\n"), s = 20.5 * o.split("\n").length;
return /* @__PURE__ */ jsx("div", {
className: "border-border border-b",
style: { height: `${s}px` },
children: /* @__PURE__ */ jsx(Editor, {
value: o,
defaultLanguage: "json",
theme: "hive-laboratory",
options: {
readOnly: !0,
scrollBeyondLastLine: !1,
scrollbar: {
vertical: "hidden",
handleMouseWheel: !1,
alwaysConsumeMouseWheel: !1
}
}
}, i.createdAt)
}, a);
})
}), /* @__PURE__ */ jsx(ScrollBar, {})]
})
})]
});
}, Response = ({ historyItem: i }) => {
let [a, o] = useState(!1), s = useMemo(() => i ? i.status ? i.status < 200 || i.status >= 300 || "response" in i && JSON.parse(i.response).errors : !0 : !1, [i]);
return /* @__PURE__ */ jsxs(Tabs, {
defaultValue: "response",
className: cn("bg-card grid size-full grid-rows-[auto_1fr]", { "z-100 absolute inset-0 size-full": a }),
children: [
/* @__PURE__ */ jsxs(TabsList, {
className: "h-[50px] w-full items-center justify-start rounded-none border-b bg-transparent p-3",
children: [
a ? /* @__PURE__ */ jsxs(Tooltip, { children: [/* @__PURE__ */ jsx(TooltipTrigger, {
asChild: !0,
children: /* @__PURE__ */ jsx(Button, {
variant: "ghost",
size: "sm",
className: "mr-2 mt-0.5 h-6 w-6",
onClick: () => o(!1),
children: /* @__PURE__ */ jsx(PanelLeftOpenIcon, { className: "size-4" })
})
}), /* @__PURE__ */ jsx(TooltipContent, {
side: "bottom",
children: "Minimize panel"
})] }) : /* @__PURE__ */ jsxs(Tooltip, { children: [/* @__PURE__ */ jsx(TooltipTrigger, {
asChild: !0,
children: /* @__PURE__ */ jsx(Button, {
variant: "ghost",
size: "sm",
className: "mr-2 mt-0.5 h-6 w-6",
onClick: () => o(!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"
}),
/* @__PURE__ */ jsx(TabsTrigger, {
value: "headers",
className: "grow-0 rounded-sm",
children: "Headers"
}),
i?.preflightLogs && i?.preflightLogs.length > 0 && /* @__PURE__ */ jsx(TabsTrigger, {
value: "preflight",
className: "grow-0 rounded-sm",
children: "Preflight"
}),
/* @__PURE__ */ jsx(TabsTrigger, {
value: "query-plan",
className: "grow-0 rounded-sm",
children: "Query Plan"
}),
i ? /* @__PURE__ */ jsxs("div", {
className: "ml-auto flex items-center gap-2",
children: [
!!i?.status && /* @__PURE__ */ jsxs(Badge, {
className: cn("bg-green-400/10 text-green-500", { "bg-red-400/10 text-red-500": s }),
children: [jsx(s ? CircleXIcon : CircleCheckIcon, { className: "size-3" }), /* @__PURE__ */ jsx("span", { children: i.status })]
}),
i?.duration && /* @__PURE__ */ jsxs(Badge, {
variant: "outline",
className: "bg-card",
children: [/* @__PURE__ */ jsx(ClockIcon, { className: "size-3" }), /* @__PURE__ */ jsxs("span", { children: [Math.round(i.duration), "ms"] })]
}),
i.size != null && /* @__PURE__ */ jsxs(Badge, {
variant: "outline",
className: "bg-card",
children: [/* @__PURE__ */ jsx(FileTextIcon, { className: "size-3" }), /* @__PURE__ */ jsx("span", { children: formatBytes(i.size) })]
})
]
}) : null
]
}),
/* @__PURE__ */ jsx(TabsContent, {
value: "response",
className: "overflow-hidden",
children: /* @__PURE__ */ jsx(ResponseBody, { historyItem: i })
}),
/* @__PURE__ */ jsx(TabsContent, {
value: "query-plan",
className: "overflow-hidden",
children: /* @__PURE__ */ jsx(ResponseQueryPlan, { historyItem: i })
}),
/* @__PURE__ */ jsx(TabsContent, {
value: "headers",
className: "overflow-hidden",
children: /* @__PURE__ */ jsx(ResponseHeaders, { historyItem: i })
}),
/* @__PURE__ */ jsx(TabsContent, {
value: "preflight",
className: "overflow-hidden",
children: /* @__PURE__ */ jsx(ResponsePreflight, { historyItem: i })
})
]
});
};
var saveToCollectionFormSchema = z.object({ collectionId: z.string().min(1, "Collection is required") });
const Query = (i) => {
let { endpoint: a, runActiveOperation: o, activeOperation: s, isActiveOperationLoading: c, updateActiveOperation: d, collections: g, addOperationToCollection: b, addCollection: x, addHistory: S, stopActiveOperation: C, addResponseToHistory: w, isActiveOperationSubscription: E, runPreflight: O, addTab: A, setActiveTab: M, addOperation: F, checkPermissions: I, preflight: R, setPreflight: V, plugins: rP, pluginsState: iP, setPluginsState: q, env: aP, settings: oP } = useLaboratory(), [sP, cP] = useState(null), lP = useMemo(() => i.operation ?? s ?? null, [i.operation, s]), uP = useCallback(async () => {
if (!lP || !a) return;
let s = await O?.(rP, iP);
if (q(s?.pluginsState ?? {}), s?.status === "error") {
let a = S({
headers: "{}",
operation: lP,
preflightLogs: s?.logs ?? [],
response: "{\n \"errors\": [\n {\n \"message\": \"Preflight failed check logs for more details\"\n }\n ]\n }",
createdAt: (/* @__PURE__ */ new Date()).toISOString()
});
i.onAfterOperationRun?.(a);
return;
}
if (E) {
let c = S({
responses: [],
operation: lP,
preflightLogs: s?.logs ?? [],
createdAt: (/* @__PURE__ */ new Date()).toISOString()
});
o(a, {
env: s?.env,
headers: s?.headers,
operationName: sP ?? void 0,
onResponse: (i) => {
w(c.id, i);
}
}), i.onAfterOperationRun?.(c);
} else {
let c = performance.now(), d = await o(a, {
env: s?.env,
headers: s?.headers,
operationName: sP ?? void 0
});
if (!d) return;
let f = d.extensions?.response ?? {
status: 0,
headers: {}
};
delete d.extensions?.request, delete d.extensions?.response, Object.keys(d.extensions ?? {}).length === 0 && delete d.extensions;
let g = f.status, b = performance.now() - c, x = JSON.stringify(d, null, 2), C = new TextEncoder().encode(x).length, w = S({
status: g,
duration: b,
size: C,
headers: JSON.stringify(f.headers, null, 2),
operation: lP,
preflightLogs: s?.logs ?? [],
response: x,
createdAt: (/* @__PURE__ */ new Date()).toISOString()
});
i.onAfterOperationRun?.(w);
}
}, [
lP,
sP,
a,
E,
S,
o,
i,
w,
O,
iP
]);
useEffect(() => {
let i = (i) => {
i.key === "Enter" && (i.metaKey || i.ctrlKey) && (i.preventDefault(), i.stopPropagation(), uP());
};
return document.addEventListener("keydown", i, { capture: !0 }), () => document.removeEventListener("keydown", i, { capture: !0 });
}, [uP]);
let [dP, fP] = useState(!1), pP = useForm({
defaultValues: { collectionId: "" },
validators: { onSubmit: saveToCollectionFormSchema },
onSubmit: ({ value: i }) => {
lP && (g.find((a) => a.id === i.collectionId) ? b(i.collectionId, {
id: lP.id ?? "",
name: lP.name ?? "",
query: lP.query ?? "",
variables: lP.variables ?? "",
headers: lP.headers ?? "",
extensions: lP.extensions ?? "",
description: ""
}) : x({
name: i.collectionId,
operations: [{
id: lP.id ?? "",
name: lP.name ?? "",
query: lP.query ?? "",
variables: lP.variables ?? "",
headers: lP.headers ?? "",
extensions: lP.extensions ?? "",
description: ""
}]
}), fP(!1));
}
}), mP = useCallback(() => {
pP.reset({ collectionId: g[0]?.id ?? "" }), fP(!0);
}, [pP, g]), hP = useMemo(() => g.some((i) => i.operations.some((i) => i.id === lP?.id)), [lP?.id, g]), gP = useCallback((i) => {
let a = compressToEncodedURIComponent(JSON.stringify({
n: lP?.name,
q: lP?.query,
v: i.variables ? lP?.variables : void 0,
h: i.headers ? lP?.headers : void 0,
e: i.extensions ? lP?.extensions : void 0
}));
navigator.clipboard.writeText(`${window.location.origin}${window.location.pathname}?share=${a}`), toast.success("Operation copied to clipboard");
}, [lP]), _P = useCallback(() => {
!lP || !a || (navigator.clipboard.writeText(buildCurlCommand({
endpoint: a,
query: lP.query,
variables: lP.variables,
headers: lP.headers,
extensions: lP.extensions,
operationName: sP,
env: aP?.variables,
pluginsState: iP,
settings: oP
})), toast.success("cURL command copied to clipboard"));
}, [
lP,
a,
sP,
aP,
iP,
oP
]);
return /* @__PURE__ */ jsxs("div", {
className: "grid size-full grid-rows-[auto_1fr] overflow-hidden pb-0",
children: [
/* @__PURE__ */ jsx(Dialog, {
open: dP,
onOpenChange: fP,
children: /* @__PURE__ */ jsxs(DialogContent, {
className: "sm:max-w-[425px]",
children: [
/* @__PURE__ */ jsxs(DialogHeader, { children: [/* @__PURE__ */ jsx(DialogTitle, { children: "Save operation to collection" }), /* @__PURE__ */ jsx(DialogDescription, { children: "Save the current operation to a collection." })] }),
/* @__PURE__ */ jsx("div", {
className: "grid gap-4",
children: /* @__PURE__ */ jsx("form", {
id: "save-to-collection",
onSubmit: (i) => {
i.preventDefault(), pP.handleSubmit();
},
children: /* @__PURE__ */ jsx(FieldGroup, { children: g.length > 0 ? /* @__PURE__ */ jsx(pP.Field, {
name: "collectionId",
children: (i) => {
let a = i.state.meta.isTouched && !i.state.meta.isValid;
return /* @__PURE__ */ jsxs(Field, {
"data-invalid": a,
children: [/* @__PURE__ */ jsx(FieldLabel, {
htmlFor: i.name,
children: "Collection"
}), /* @__PURE__ */ jsxs(Select, {
name: i.name,
value: i.state.value,
onValueChange: i.handleChange,
children: [/* @__PURE__ */ jsx(SelectTrigger, {
id: i.name,
"aria-invalid": a,
children: /* @__PURE__ */ jsx(SelectValue, { placeholder: "Select collection" })
}), /* @__PURE__ */ jsx(SelectContent, { children: g.map((i) => /* @__PURE__ */ jsx(SelectItem, {
value: i.id,
children: i.name
}, i.id)) })]
})]
});
}
}) : /* @__PURE__ */ jsx(pP.Field, {
name: "collectionId",
children: (i) => {
let a = i.state.meta.isTouched && !i.state.meta.isValid;
return /* @__PURE__ */ jsxs(Field, {
"data-invalid": a,
children: [
/* @__PURE__ */ jsx(FieldLabel, {
htmlFor: i.name,
children: "New collection name"
}),
/* @__PURE__ */ jsx(Input, {
id: i.name,
name: i.name,
value: i.state.value,
onBlur: i.handleBlur,
onChange: (a) => i.handleChange(a.target.value),
"aria-invalid": a,
placeholder: "Enter name of the collection",
autoComplete: "off"
}),
a && /* @__PURE__ */ jsx(FieldError, { errors: i.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: "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"
}),
I?.("collectionsOperations:create") && /* @__PURE__ */ jsxs(Toggle, {
"aria-label": "Save operation",
size: "sm",
variant: "default",
pressed: hP,
disabled: hP,
className: "data-[state=on]:*:[svg]:fill-yellow-500 data-[state=on]:*:[svg]:stroke-yellow-500 h-6 data-[state=on]:bg-transparent",
onClick: mP,
children: [/* @__PURE__ */ jsx(BookmarkIcon, { className: "size-4" }), hP ? "Saved" : "Save"]
}),
/* @__PURE__ */ jsxs("div", {
className: "ml-auto flex items-center gap-2",
children: [
/* @__PURE__ */ jsxs(Tooltip, { children: [/* @__PURE__ */ jsx(TooltipTrigger, {
asChild: !0,
children: /* @__PURE__ */ jsx(Button, {
onClick: _P,
variant: "ghost",
size: "icon-sm",
className: "p-1! size-6 rounded-sm",
"aria-label": "Copy as cURL",
children: /* @__PURE__ */ jsx(SquareTerminal, { className: "text-muted-foreground size-4" })
})
}), /* @__PURE__ */ jsx(TooltipContent, { children: "Copy as cURL" })] }),
/* @__PURE__ */ jsxs(DropdownMenu, { children: [/* @__PURE__ */ jsx(DropdownMenuTrigger$1, {
asChild: !0,
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: () => gP({ variables: !0 }),
children: "Share with variables"
}),
/* @__PURE__ */ jsx(DropdownMenuItem, {
onClick: () => gP({
variables: !0,
extensions: !0
}),
children: "Share with variables and extensions"
}),
/* @__PURE__ */ jsx(DropdownMenuItem, {
onClick: () => gP({
variables: !0,
headers: !0,
extensions: !0
}),
children: "Share with variables, extensions, headers"
})
]
})] }),
/* @__PURE__ */ jsxs(Toggle, {
"aria-label": R?.enabled ? "Disable preflight" : "Enable preflight",
size: "sm",
variant: "default",
pressed: R?.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: () => {
V({
...R ?? {
script: "",
enabled: !0
},
enabled: !R?.enabled
});
},
children: [R?.enabled ? /* @__PURE__ */ jsx(PowerIcon, { className: "size-4 text-green-500" }) : /* @__PURE__ */ jsx(PowerOffIcon, { className: "size-4 text-red-500" }), "Preflight"]
}),
i.isReadOnly ? /* @__PURE__ */ jsxs(Button, {
variant: "default",
size: "sm",
className: "h-6 rounded-sm",
onClick: () => {
lP && M(A({
type: "operation",
data: F(lP)
}));
},
children: [/* @__PURE__ */ jsx(SquarePenIcon, { className: "size-4" }), "Edit"]
}) : /* @__PURE__ */ jsx(Button, {
variant: "default",
size: "sm",
className: "h-6 rounded-sm",
onClick: () => {
c ? C?.() : uP();
},
disabled: !lP || !a,
children: c ? /* @__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_${a}.graphql`),
variablesUri,
value: lP?.query ?? "",
onChange: (i) => {
d({ query: i ?? "" });
},
onOperationNameChange: (a) => {
cP(a), i.onOperationNameChange?.(a);
},
language: "graphql",
theme: "hive-laboratory",
options: { readOnly: i.isReadOnly }
})
]
});
}, Operation = (i) => {
let { activeOperation: a, history: o } = useLaboratory(), [s, c] = useState(null), d = useMemo(() => i.operation ?? a ?? null, [i.operation, a]), f = useMemo(() => i.historyItem ?? o.filter((i) => i.operation.id === d?.id).sort((i, a) => new Date(a.createdAt).getTime() - new Date(i.createdAt).getTime())[0] ?? null, [
o,
i.historyItem,
d?.id
]), g = useMemo(() => !!i.historyItem, [i.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: d,
operationName: s,
isReadOnly: g
})
}),
/* @__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: d,
isReadOnly: g,
onOperationNameChange: c
})
}),
/* @__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: d,
isReadOnly: g
})
}),
/* @__PURE__ */ jsx(TabsContent, {
value: "headers",
className: "overflow-hidden",
children: /* @__PURE__ */ jsx(Headers, {
operation: d,
isReadOnly: g
})
}),
/* @__PURE__ */ jsx(TabsContent, {
value: "extensions",
className: "overflow-hidden",
children: /* @__PURE__ */ jsx(Extensions, {
operation: d,
isReadOnly: g
})
})
]
})
})
]
})
}),
/* @__PURE__ */ jsx(ResizableHandle, {}),
/* @__PURE__ */ jsx(ResizablePanel, {
minSize: 10,
defaultSize: 35,
children: f ? /* @__PURE__ */ jsx(Fragment$1, { children: "responses" in f ? /* @__PURE__ */ jsx(ResponseSubscription, { historyItem: f }) : /* @__PURE__ */ jsx(Response, { historyItem: f }) }) : /* @__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: i, history: a } = useLaboratory(), o = useMemo(() => i?.type === "history" ? a.find((a) => a.id === i.data.id) ?? null : null, [a, i]);
return o ? /* @__PURE__ */ jsx(Operation, {
operation: o.operation,
historyItem: o
}) : null;
}, Preflight = () => {
let { preflight: i, preflightLogs: a, isPreflightRunning: o, testPreflight: s, abortPreflight: c, clearPreflightLogs: d, setLastTestResult: f, setPreflight: g, setEnv: b, checkPermissions: x, preflightNotice: S, plugins: C, pluginsState: w, setPluginsState: E } = useLaboratory(), O = useCallback(async () => {
if (!i?.script) return;
let a = await s?.(C, w);
b(a?.env ?? { variables: {} }), E(a?.pluginsState ?? {}), f(a ?? null);
}, [
i?.script,
s,
C,
w,
b,
E
]), A = a ?? [];
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_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: o ? /* @__PURE__ */ jsxs(Button, {
variant: "destructive",
size: "sm",
className: "h-6 rounded-sm",
onClick: c,
children: [/* @__PURE__ */ jsx(SquareIcon, { className: "size-4" }), /* @__PURE__ */ jsx("span", { children: "Stop" })]
}) : /* @__PURE__ */ jsxs(Button, {
variant: "default",
size: "sm",
className: "h-6 rounded-sm",
onClick: O,
children: [/* @__PURE__ */ jsx(PlayIcon, { className: "size-4" }), /* @__PURE__ */ jsx("span", { children: "Test" })]
})
})]
}),
/* @__PURE__ */ jsxs("div", {
className: "border-border text-muted-foreground border-b px-3 py-2 text-xs",
children: [
/* @__PURE__ */ jsx(TriangleAlertIcon, { className: "mr-1.5 inline size-3.5 align-[-2px]" }),
"Preflight scripts run in this browser as part of your requests. Prefer",
" ",
/* @__PURE__ */ jsx("code", {
className: "font-mono",
children: "lab.prompt()"
}),
" over writing secrets into the script.",
S ? /* @__PURE__ */ jsx("span", {
className: "ml-1",
children: S
}) : null
]
}),
/* @__PURE__ */ jsx("div", {
className: "size-full",
children: /* @__PURE__ */ jsx(Editor, {
value: i?.script ?? "",
onChange: (a) => {
g({
...i ?? {
script: "",
enabled: !0
},
script: a ?? ""
});
},
language: "typescript",
extraLibs: [`
interface Lab {
environment: {
set: (key: string, value: string) => void;
get: (key: string) => string;
delete: (key: string) => void;
};
request: {
headers: Headers;
};
/**
* Asks the user for a value before the request runs. The title labels the
* input; placeholder and description are optional hints.
*/
prompt: (
title: string,
defaultValue?: string,
options?: { placeholder?: string; description?: string },
) => Promise<string | null>;
CryptoJS: typeof CryptoJS;
plugins: {
${C.filter((i) => i.preflight?.lab?.definition).map((i) => i.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: !x?.("preflight:update") }
})
})
]
})
}),
/* @__PURE__ */ jsx(ResizableHandle, {}),
/* @__PURE__ */ jsx(ResizablePanel, {
minSize: 10,
defaultSize: 50,
className: "bg-card",
children: A.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",
children: /* @__PURE__ */ jsxs(Button, {
variant: "ghost",
size: "sm",
className: "h-6 rounded-sm",
onClick: d,
children: [/* @__PURE__ */ jsx(Trash2Icon, { className: "size-4" }), /* @__PURE__ */ jsx("span", { children: "Clear" })]
})
})]
}), /* @__PURE__ */ jsxs(ScrollArea, {
className: "h-full",
children: [/* @__PURE__ */ jsx("div", {
className: "flex flex-col gap-1.5 whitespace-pre-wrap p-3",
children: A.map((i, a) => /* @__PURE__ */ jsxs("div", {
className: "gap-2 font-mono",
children: [
/* @__PURE__ */ jsx("span", {
className: "text-muted-foreground text-xs",
children: i.createdAt
}),
" ",
/* @__PURE__ */ jsx("span", {
className: cn("text-xs font-medium", {
"text-blue-400": i.level === "info",
"text-green-400": i.level === "log",
"text-yellow-400": i.level === "warn",
"text-red-400": i.level === "error",
"text-gray-400": i.level === "system"
}),
children: i.level.toUpperCase()
}),
" ",
i.line ? /* @__PURE__ */ jsxs("span", {
className: "text-muted-foreground text-xs",
children: [
"(",
i.line,
":",
i.column,
")",
" "
]
}) : null,
/* @__PURE__ */ jsx("span", {
className: "text-xs",
children: tokenizeUrls(i.message.join(" ")).map((i, a) => i.type === "url" ? /* @__PURE__ */ jsx("a", {
href: i.value,
target: "_blank",
rel: "noopener noreferrer",
className: "break-all text-blue-400 underline underline-offset-2 hover:opacity-80",
children: i.value
}, a) : i.value)
})
]
}, a))
}), /* @__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." })
] })
})
})
]
});
}, PreflightPromptModal = (i) => {
let a = useRef(!1), o = (o) => {
a.current || (a.current = !0, i.onSubmit?.(o));
};
useEffect(() => {
i.open && (a.current = !1);
}, [i.open, i.onSubmit]);
let s = useForm({
defaultValues: { value: i.defaultValue || null },
validators: { onSubmit: z$1.object({ value: z$1.string().min(1, "Value is required").nullable() }) },
onSubmit: ({ value: a }) => {
o(a.value || null), i.onOpenChange(!1), s.reset();
}
});
return /* @__PURE__ */ jsx(Dialog, {
open: i.open,
onOpenChange: (a) => {
(s.state.isSubmitted ? Promise.resolve() : s.handleSubmit()).catch(() => {}).then(() => {
a || o(null);
}), i.onOpenChange(a);
},
children: /* @__PURE__ */ jsxs(DialogContent, { children: [
/* @__PURE__ */ jsx(DialogHeader, { children: /* @__PURE__ */ jsx(DialogTitle, { children: "Preflight script request" }) }),
/* @__PURE__ */ jsx(DialogDescription, { children: "Your preflight script is asking for a value before this request runs." }),
/* @__PURE__ */ jsx("form", {
id: "preflight-prompt-form",
onSubmit: (i) => {
i.preventDefault(), s.handleSubmit();
},
children: /* @__PURE__ */ jsx(FieldGroup, { children: /* @__PURE__ */ jsx(s.Field, {
name: "value",
children: (a) => {
let o = a.state.meta.isTouched && !a.state.meta.isValid;
return /* @__PURE__ */ jsxs(Field, {
"data-invalid": o,
children: [
i.title && /* @__PURE__ */ jsx(FieldLabel, {
htmlFor: a.name,
children: i.title
}),
i.description && /* @__PURE__ */ jsx(FieldDescription, { children: i.description }),
/* @__PURE__ */ jsx(Input, {
id: a.name,
name: a.name,
value: a.state.value || "",
onBlur: a.handleBlur,
onChange: (i) => a.handleChange(i.target.value),
"aria-invalid": o,
placeholder: i.placeholder,
autoComplete: "off"
}),
o && /* @__PURE__ */ jsx(FieldError, { errors: a.state.meta.errors })
]
});
}
}) })
}),
/* @__PURE__ */ jsxs(DialogFooter, { children: [/* @__PURE__ */ jsx(Button, {
type: "button",
variant: "outline",
onClick: () => {
o(null), i.onOpenChange(!1), s.reset();
},
children: "Cancel"
}), /* @__PURE__ */ jsx(Button, {
type: "submit",
form: "preflight-prompt-form",
onClick: () => {
s.handleSubmit();
},
children: "Submit"
})] })
] })
});
};
function Switch({ className: i,...a }) {
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", i),
...a,
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: i,...a }) {
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", i),
...a
});
}
function CardHeader({ className: i,...a }) {
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]", i),
...a
});
}
function CardTitle({ className: i,...a }) {
return /* @__PURE__ */ jsx("div", {
"data-slot": "card-title",
className: cn("font-semibold leading-none", i),
...a
});
}
function CardDescription({ className: i,...a }) {
return /* @__PURE__ */ jsx("div", {
"data-slot": "card-description",
className: cn("text-muted-foreground text-sm", i),
...a
});
}
function CardContent({ className: i,...a }) {
return /* @__PURE__ */ jsx("div", {
"data-slot": "card-content",
className: cn("px-6", i),
...a
});
}
var settingsFormSchema = z.object({
fetch: z.object({
credentials: z.enum([
"include",
"omit",
"same-origin"
]),
timeout: 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(),
headers: z.string().optional(),
includeActiveOperationHeaders: z.boolean().optional()
})
});
const Settings = () => {
let { settings: i, setSettings: a } = useLaboratory(), o = useForm({
defaultValues: i,
validators: { onSubmit: settingsFormSchema }
});
return useEffect(() => {
o.store.subscribe((i) => {
a(i.currentVal.values);
});
}, [a]), /* @__PURE__ */ jsx("div", {
className: "bg-card size-full overflow-y-auto p-3",
children: /* @__PURE__ */ jsxs("form", {
id: "settings-form",
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(o.Field, {
name: "fetch.credentials",
children: (i) => {
let a = i.state.meta.isTouched && !i.state.meta.isValid;
return /* @__PURE__ */ jsxs(Field, {
"data-invalid": a,
children: [/* @__PURE__ */ jsx(FieldLabel, {
htmlFor: i.name,
children: "Credentials"
}), /* @__PURE__ */ jsxs(Select, {
name: i.name,
value: i.state.value,
onValueChange: (a) => i.handleChange(a),
children: [/* @__PURE__ */ jsx(SelectTrigger, {
id: i.name,
"aria-invalid": a,
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(o.Field, {
name: "fetch.timeout",
children: (i) => /* @__PURE__ */ jsxs(Field, { children: [/* @__PURE__ */ jsx(FieldLabel, {
htmlFor: i.name,
children: "Timeout"
}), /* @__PURE__ */ jsx(Input, {
type: "number",
name: i.name,
value: i.state.value ?? "",
onChange: (a) => i.handleChange(a.target.value === "" ? void 0 : Number(a.target.value))
})] })
}),
/* @__PURE__ */ jsx(o.Field, {
name: "fetch.useGETForQueries",
children: (i) => /* @__PURE__ */ jsxs(Field, {
className: "flex-row items-center",
children: [/* @__PURE__ */ jsx(Switch, {
className: "!w-8",
checked: i.state.value ?? !1,
onCheckedChange: i.handleChange
}), /* @__PURE__ */ jsx(FieldLabel, {
htmlFor: i.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(o.Field, {
name: "subscriptions.protocol",
children: (i) => {
let a = i.state.meta.isTouched && !i.state.meta.isValid;
return /* @__PURE__ */ jsxs(Field, {
"data-invalid": a,
children: [/* @__PURE__ */ jsx(FieldLabel, {
htmlFor: i.name,
children: "Protocol"
}), /* @__PURE__ */ jsxs(Select, {
name: i.name,
value: i.state.value,
onValueChange: (a) => i.handleChange(a),
children: [/* @__PURE__ */ jsx(SelectTrigger, {
id: i.name,
"aria-invalid": a,
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(o.Field, {
name: "introspection.method",
children: (i) => {
let a = i.state.meta.isTouched && !i.state.meta.isValid;
return /* @__PURE__ */ jsxs(Field, { children: [/* @__PURE__ */ jsx(FieldLabel, {
htmlFor: i.name,
children: "Method"
}), /* @__PURE__ */ jsxs(Select, {
name: i.name,
value: i.state.value,
onValueChange: (a) => i.handleChange(a),
children: [/* @__PURE__ */ jsx(SelectTrigger, {
id: i.name,
"aria-invalid": a,
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(o.Field, {
name: "introspection.headers",
children: (i) => /* @__PURE__ */ jsxs(Field, { children: [/* @__PURE__ */ jsx(FieldLabel, {
htmlFor: i.name,
children: "Headers"
}), /* @__PURE__ */ jsx(Editor, {
value: i.state.value ?? "{}",
onChange: i.handleChange,
defaultLanguage: "json",
theme: "hive-laboratory",
className: "bg-input/30 border-input focus-within:border-ring focus-within:ring-ring/50 h-64 rounded rounded-md border focus-within:ring-[3px]"
})] })
}),
/* @__PURE__ */ jsx(o.Field, {
name: "introspection.pollSchema",
children: (i) => /* @__PURE__ */ jsxs(Field, {
className: "flex-row items-start",
children: [/* @__PURE__ */ jsx(Switch, {
className: "mt-0.5 !w-8",
checked: i.state.value ?? !0,
onCheckedChange: i.handleChange
}), /* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx(FieldLabel, {
htmlFor: i.name,
children: "Poll for schema changes"
}), /* @__PURE__ */ jsx(FieldDescription, { children: "Re-runs the introspection query every 5 seconds. Turn off to reload the schema only when you ask for it." })] })]
})
}),
/* @__PURE__ */ jsx(o.Field, {
name: "introspection.includeActiveOperationHeaders",
children: (i) => /* @__PURE__ */ jsxs(Field, {
className: "flex-row items-start",
children: [/* @__PURE__ */ jsx(Switch, {
className: "mt-0.5 !w-8",
checked: i.state.value ?? !1,
onCheckedChange: i.handleChange
}), /* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx(FieldLabel, {
htmlFor: i.name,
children: "Include active operation headers"
}), /* @__PURE__ */ jsx(FieldDescription, { children: "Active operation (tab) headers will be included in the introspection query" })] })]
})
})
] }) })] })
]
})
});
};
function useCombinedRefs() {
var i = [...arguments];
return useMemo(() => (a) => {
i.forEach((i) => i(a));
}, i);
}
var canUseDOM = typeof window < "u" && window.document !== void 0 && window.document.createElement !== void 0;
function isWindow(i) {
let a = Object.prototype.toString.call(i);
return a === "[object Window]" || a === "[object global]";
}
function isNode(i) {
return "nodeType" in i;
}
function getWindow(i) {
return i ? isWindow(i) ? i : isNode(i) ? i.ownerDocument?.defaultView ?? window : window : window;
}
function isDocument(i) {
let { Document: a } = getWindow(i);
return i instanceof a;
}
function isHTMLElement(i) {
return isWindow(i) ? !1 : i instanceof getWindow(i).HTMLElement;
}
function isSVGElement(i) {
return i instanceof getWindow(i).SVGElement;
}
function getOwnerDocument(i) {
return i ? isWindow(i) ? i.document : isNode(i) ? isDocument(i) ? i : isHTMLElement(i) || isSVGElement(i) ? i.ownerDocument : document : document : document;
}
var useIsomorphicLayoutEffect = canUseDOM ? useLayoutEffect : useEffect;
function useEvent(i) {
let a = useRef(i);
return useIsomorphicLayoutEffect(() => {
a.current = i;
}), useCallback(function() {
var i = [...arguments];
return a.current == null ? void 0 : a.current(...i);
}, []);
}
function useInterval() {
let i = useRef(null), a = useCallback((a, o) => {
i.current = setInterval(a, o);
}, []), o = useCallback(() => {
i.current !== null && (clearInterval(i.current), i.current = null);
}, []);
return [a, o];
}
function useLatestValue(i, a) {
a === void 0 && (a = [i]);
let o = useRef(i);
return useIsomorphicLayoutEffect(() => {
o.current !== i && (o.current = i);
}, a), o;
}
function useLazyMemo(i, a) {
let o = useRef();
return useMemo(() => {
let a = i(o.current);
return o.current = a, a;
}, [...a]);
}
function useNodeRef(i) {
let a = useEvent(i), o = useRef(null), s = useCallback((i) => {
i !== o.current && a?.(i, o.current), o.current = i;
}, []);
return [o, s];
}
function usePrevious(i) {
let a = useRef();
return useEffect(() => {
a.current = i;
}, [i]), a.current;
}
var ids = {};
function useUniqueId(i, a) {
return useMemo(() => {
if (a) return a;
let o = ids[i] == null ? 0 : ids[i] + 1;
return ids[i] = o, i + "-" + o;
}, [i, a]);
}
function createAdjustmentFn(i) {
return function(a) {
return [...arguments].slice(1).reduce((a, o) => {
let s = Object.entries(o);
for (let [o, c] of s) {
let s = a[o];
s != null && (a[o] = s + i * c);
}
return a;
}, { ...a });
};
}
var add = /* @__PURE__ */ createAdjustmentFn(1), subtract = /* @__PURE__ */ createAdjustmentFn(-1);
function hasViewportRelativeCoordinates(i) {
return "clientX" in i && "clientY" in i;
}
function isKeyboardEvent(i) {
if (!i) return !1;
let { KeyboardEvent: a } = getWindow(i.target);
return a && i instanceof a;
}
function isTouchEvent(i) {
if (!i) return !1;
let { TouchEvent: a } = getWindow(i.target);
return a && i instanceof a;
}
function getEventCoordinates(i) {
if (isTouchEvent(i)) {
if (i.touches && i.touches.length) {
let { clientX: a, clientY: o } = i.touches[0];
return {
x: a,
y: o
};
} else if (i.changedTouches && i.changedTouches.length) {
let { clientX: a, clientY: o } = i.changedTouches[0];
return {
x: a,
y: o
};
}
}
return hasViewportRelativeCoordinates(i) ? {
x: i.clientX,
y: i.clientY
} : null;
}
var CSS$1 = /* @__PURE__ */ Object.freeze({
Translate: { toString(i) {
if (!i) return;
let { x: a, y: o } = i;
return "translate3d(" + (a ? Math.round(a) : 0) + "px, " + (o ? Math.round(o) : 0) + "px, 0)";
} },
Scale: { toString(i) {
if (!i) return;
let { scaleX: a, scaleY: o } = i;
return "scaleX(" + a + ") scaleY(" + o + ")";
} },
Transform: { toString(i) {
if (i) return [CSS$1.Translate.toString(i), CSS$1.Scale.toString(i)].join(" ");
} },
Transition: { toString(i) {
let { property: a, duration: o, easing: s } = i;
return a + " " + o + "ms " + s;
} }
}), SELECTOR = "a,frame,iframe,input:not([type=hidden]):not(:disabled),select:not(:disabled),textarea:not(:disabled),button:not(:disabled),*[tabindex]";
function findFirstFocusableNode(i) {
return i.matches(SELECTOR) ? i : i.querySelector(SELECTOR);
}
var hiddenStyles = { display: "none" };
function HiddenText(i) {
let { id: a, value: o } = i;
return ke.createElement("div", {
id: a,
style: hiddenStyles
}, o);
}
function LiveRegion(i) {
let { id: a, announcement: o, ariaLiveType: s = "assertive" } = i;
return ke.createElement("div", {
id: a,
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": s,
"aria-atomic": !0
}, o);
}
function useAnnouncement() {
let [i, a] = useState("");
return {
announce: useCallback((i) => {
i != null && a(i);
}, []),
announcement: i
};
}
var DndMonitorContext = /* @__PURE__ */ createContext(null);
function useDndMonitor(i) {
let a = useContext(DndMonitorContext);
useEffect(() => {
if (!a) throw Error("useDndMonitor must be used within a children of <DndContext>");
return a(i);
}, [i, a]);
}
function useDndMonitorProvider() {
let [i] = useState(() => /* @__PURE__ */ new Set()), a = useCallback((a) => (i.add(a), () => i.delete(a)), [i]);
return [useCallback((a) => {
let { type: o, event: s } = a;
i.forEach((i) => i[o]?.call(i, s));
}, [i]), a];
}
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(i) {
let { active: a } = i;
return "Picked up draggable item " + a.id + ".";
},
onDragOver(i) {
let { active: a, over: o } = i;
return o ? "Draggable item " + a.id + " was moved over droppable area " + o.id + "." : "Draggable item " + a.id + " is no longer over a droppable area.";
},
onDragEnd(i) {
let { active: a, over: o } = i;
return o ? "Draggable item " + a.id + " was dropped over droppable area " + o.id : "Draggable item " + a.id + " was dropped.";
},
onDragCancel(i) {
let { active: a } = i;
return "Dragging was cancelled. Draggable item " + a.id + " was dropped.";
}
};
function Accessibility(i) {
let { announcements: a = defaultAnnouncements, container: o, hiddenTextDescribedById: s, screenReaderInstructions: c = defaultScreenReaderInstructions } = i, { announce: d, announcement: f } = useAnnouncement(), g = useUniqueId("DndLiveRegion"), [b, x] = useState(!1);
if (useEffect(() => {
x(!0);
}, []), useDndMonitor(useMemo(() => ({
onDragStart(i) {
let { active: o } = i;
d(a.onDragStart({ active: o }));
},
onDragMove(i) {
let { active: o, over: s } = i;
a.onDragMove && d(a.onDragMove({
active: o,
over: s
}));
},
onDragOver(i) {
let { active: o, over: s } = i;
d(a.onDragOver({
active: o,
over: s
}));
},
onDragEnd(i) {
let { active: o, over: s } = i;
d(a.onDragEnd({
active: o,
over: s
}));
},
onDragCancel(i) {
let { active: o, over: s } = i;
d(a.onDragCancel({
active: o,
over: s
}));
}
}), [d, a])), !b) return null;
let S = ke.createElement(ke.Fragment, null, ke.createElement(HiddenText, {
id: s,
value: c.draggable
}), ke.createElement(LiveRegion, {
id: g,
announcement: f
}));
return o ? createPortal(S, o) : S;
}
var Action;
(function(i) {
i.DragStart = "dragStart", i.DragMove = "dragMove", i.DragEnd = "dragEnd", i.DragCancel = "dragCancel", i.DragOver = "dragOver", i.RegisterDroppable = "registerDroppable", i.SetDroppableDisabled = "setDroppableDisabled", i.UnregisterDroppable = "unregisterDroppable";
})(Action ||= {});
function noop() {}
function useSensor(i, a) {
return useMemo(() => ({
sensor: i,
options: a ?? {}
}), [i, a]);
}
function useSensors() {
var i = [...arguments];
return useMemo(() => [...i].filter((i) => i != null), [...i]);
}
var defaultCoordinates = /* @__PURE__ */ Object.freeze({
x: 0,
y: 0
});
function distanceBetween(i, a) {
return Math.sqrt((i.x - a.x) ** 2 + (i.y - a.y) ** 2);
}
function getRelativeTransformOrigin(i, a) {
let o = getEventCoordinates(i);
if (!o) return "0 0";
let s = {
x: (o.x - a.left) / a.width * 100,
y: (o.y - a.top) / a.height * 100
};
return s.x + "% " + s.y + "%";
}
function sortCollisionsAsc(i, a) {
let { data: { value: o } } = i, { data: { value: s } } = a;
return o - s;
}
function sortCollisionsDesc(i, a) {
let { data: { value: o } } = i, { data: { value: s } } = a;
return s - o;
}
function cornersOfRectangle(i) {
let { left: a, top: o, height: s, width: c } = i;
return [
{
x: a,
y: o
},
{
x: a + c,
y: o
},
{
x: a,
y: o + s
},
{
x: a + c,
y: o + s
}
];
}
function getFirstCollision(i, a) {
if (!i || i.length === 0) return null;
let [o] = i;
return a ? o[a] : o;
}
function centerOfRectangle(i, a, o) {
return a === void 0 && (a = i.left), o === void 0 && (o = i.top), {
x: a + i.width * .5,
y: o + i.height * .5
};
}
var closestCenter = (i) => {
let { collisionRect: a, droppableRects: o, droppableContainers: s } = i, c = centerOfRectangle(a, a.left, a.top), d = [];
for (let i of s) {
let { id: a } = i, s = o.get(a);
if (s) {
let o = distanceBetween(centerOfRectangle(s), c);
d.push({
id: a,
data: {
droppableContainer: i,
value: o
}
});
}
}
return d.sort(sortCollisionsAsc);
}, closestCorners = (i) => {
let { collisionRect: a, droppableRects: o, droppableContainers: s } = i, c = cornersOfRectangle(a), d = [];
for (let i of s) {
let { id: a } = i, s = o.get(a);
if (s) {
let o = cornersOfRectangle(s), f = c.reduce((i, a, s) => i + distanceBetween(o[s], a), 0), g = Number((f / 4).toFixed(4));
d.push({
id: a,
data: {
droppableContainer: i,
value: g
}
});
}
}
return d.sort(sortCollisionsAsc);
};
function getIntersectionRatio(i, a) {
let o = Math.max(a.top, i.top), s = Math.max(a.left, i.left), c = Math.min(a.left + a.width, i.left + i.width), d = Math.min(a.top + a.height, i.top + i.height), f = c - s, g = d - o;
if (s < c && o < d) {
let o = a.width * a.height, s = i.width * i.height, c = f * g, d = c / (o + s - c);
return Number(d.toFixed(4));
}
return 0;
}
var rectIntersection = (i) => {
let { collisionRect: a, droppableRects: o, droppableContainers: s } = i, c = [];
for (let i of s) {
let { id: s } = i, d = o.get(s);
if (d) {
let o = getIntersectionRatio(d, a);
o > 0 && c.push({
id: s,
data: {
droppableContainer: i,
value: o
}
});
}
}
return c.sort(sortCollisionsDesc);
};
function adjustScale(i, a, o) {
return {
...i,
scaleX: a && o ? a.width / o.width : 1,
scaleY: a && o ? a.height / o.height : 1
};
}
function getRectDelta(i, a) {
return i && a ? {
x: i.left - a.left,
y: i.top - a.top
} : defaultCoordinates;
}
function createRectAdjustmentFn(i) {
return function(a) {
return [...arguments].slice(1).reduce((a, o) => ({
...a,
top: a.top + i * o.y,
bottom: a.bottom + i * o.y,
left: a.left + i * o.x,
right: a.right + i * o.x
}), { ...a });
};
}
var getAdjustedRect = /* @__PURE__ */ createRectAdjustmentFn(1);
function parseTransform(i) {
if (i.startsWith("matrix3d(")) {
let a = i.slice(9, -1).split(/, /);
return {
x: +a[12],
y: +a[13],
scaleX: +a[0],
scaleY: +a[5]
};
} else if (i.startsWith("matrix(")) {
let a = i.slice(7, -1).split(/, /);
return {
x: +a[4],
y: +a[5],
scaleX: +a[0],
scaleY: +a[3]
};
}
return null;
}
function inverseTransform(i, a, o) {
let s = parseTransform(a);
if (!s) return i;
let { scaleX: c, scaleY: d, x: f, y: g } = s, b = i.left - f - (1 - c) * parseFloat(o), x = i.top - g - (1 - d) * parseFloat(o.slice(o.indexOf(" ") + 1)), S = c ? i.width / c : i.width, C = d ? i.height / d : i.height;
return {
width: S,
height: C,
top: x,
right: b + S,
bottom: x + C,
left: b
};
}
var defaultOptions = { ignoreTransform: !1 };
function getClientRect(i, a) {
a === void 0 && (a = defaultOptions);
let o = i.getBoundingClientRect();
if (a.ignoreTransform) {
let { transform: a, transformOrigin: s } = getWindow(i).getComputedStyle(i);
a && (o = inverseTransform(o, a, s));
}
let { top: s, left: c, width: d, height: f, bottom: g, right: b } = o;
return {
top: s,
left: c,
width: d,
height: f,
bottom: g,
right: b
};
}
function getTransformAgnosticClientRect(i) {
return getClientRect(i, { ignoreTransform: !0 });
}
function getWindowClientRect(i) {
let a = i.innerWidth, o = i.innerHeight;
return {
top: 0,
left: 0,
right: a,
bottom: o,
width: a,
height: o
};
}
function isFixed(i, a) {
return a === void 0 && (a = getWindow(i).getComputedStyle(i)), a.position === "fixed";
}
function isScrollable(i, a) {
a === void 0 && (a = getWindow(i).getComputedStyle(i));
let o = /(auto|scroll|overlay)/;
return [
"overflow",
"overflowX",
"overflowY"
].some((i) => {
let s = a[i];
return typeof s == "string" ? o.test(s) : !1;
});
}
function getScrollableAncestors(i, a) {
let o = [];
function s(c) {
if (a != null && o.length >= a || !c) return o;
if (isDocument(c) && c.scrollingElement != null && !o.includes(c.scrollingElement)) return o.push(c.scrollingElement), o;
if (!isHTMLElement(c) || isSVGElement(c) || o.includes(c)) return o;
let d = getWindow(i).getComputedStyle(c);
return c !== i && isScrollable(c, d) && o.push(c), isFixed(c, d) ? o : s(c.parentNode);
}
return i ? s(i) : o;
}
function getFirstScrollableAncestor(i) {
let [a] = getScrollableAncestors(i, 1);
return a ?? null;
}
function getScrollableElement(i) {
return !canUseDOM || !i ? null : isWindow(i) ? i : isNode(i) ? isDocument(i) || i === getOwnerDocument(i).scrollingElement ? window : isHTMLElement(i) ? i : null : null;
}
function getScrollXCoordinate(i) {
return isWindow(i) ? i.scrollX : i.scrollLeft;
}
function getScrollYCoordinate(i) {
return isWindow(i) ? i.scrollY : i.scrollTop;
}
function getScrollCoordinates(i) {
return {
x: getScrollXCoordinate(i),
y: getScrollYCoordinate(i)
};
}
var Direction;
(function(i) {
i[i.Forward = 1] = "Forward", i[i.Backward = -1] = "Backward";
})(Direction ||= {});
function isDocumentScrollingElement(i) {
return !canUseDOM || !i ? !1 : i === document.scrollingElement;
}
function getScrollPosition(i) {
let a = {
x: 0,
y: 0
}, o = isDocumentScrollingElement(i) ? {
height: window.innerHeight,
width: window.innerWidth
} : {
height: i.clientHeight,
width: i.clientWidth
}, s = {
x: i.scrollWidth - o.width,
y: i.scrollHeight - o.height
}, c = i.scrollTop <= a.y, d = i.scrollLeft <= a.x, f = i.scrollTop >= s.y, g = i.scrollLeft >= s.x;
return {
isTop: c,
isLeft: d,
isBottom: f,
isRight: g,
maxScroll: s,
minScroll: a
};
}
var defaultThreshold = {
x: .2,
y: .2
};
function getScrollDirectionAndSpeed(i, a, o, s, c) {
let { top: d, left: f, right: g, bottom: b } = o;
s === void 0 && (s = 10), c === void 0 && (c = defaultThreshold);
let { isTop: x, isBottom: S, isLeft: C, isRight: w } = getScrollPosition(i), E = {
x: 0,
y: 0
}, O = {
x: 0,
y: 0
}, A = {
height: a.height * c.y,
width: a.width * c.x
};
return !x && d <= a.top + A.height ? (E.y = Direction.Backward, O.y = s * Math.abs((a.top + A.height - d) / A.height)) : !S && b >= a.bottom - A.height && (E.y = Direction.Forward, O.y = s * Math.abs((a.bottom - A.height - b) / A.height)), !w && g >= a.right - A.width ? (E.x = Direction.Forward, O.x = s * Math.abs((a.right - A.width - g) / A.width)) : !C && f <= a.left + A.width && (E.x = Direction.Backward, O.x = s * Math.abs((a.left + A.width - f) / A.width)), {
direction: E,
speed: O
};
}
function getScrollElementRect(i) {
if (i === document.scrollingElement) {
let { innerWidth: i, innerHeight: a } = window;
return {
top: 0,
left: 0,
right: i,
bottom: a,
width: i,
height: a
};
}
let { top: a, left: o, right: s, bottom: c } = i.getBoundingClientRect();
return {
top: a,
left: o,
right: s,
bottom: c,
width: i.clientWidth,
height: i.clientHeight
};
}
function getScrollOffsets(i) {
return i.reduce((i, a) => add(i, getScrollCoordinates(a)), defaultCoordinates);
}
function getScrollXOffset(i) {
return i.reduce((i, a) => i + getScrollXCoordinate(a), 0);
}
function getScrollYOffset(i) {
return i.reduce((i, a) => i + getScrollYCoordinate(a), 0);
}
function scrollIntoViewIfNeeded(i, a) {
if (a === void 0 && (a = getClientRect), !i) return;
let { top: o, left: s, bottom: c, right: d } = a(i);
getFirstScrollableAncestor(i) && (c <= 0 || d <= 0 || o >= window.innerHeight || s >= window.innerWidth) && i.scrollIntoView({
block: "center",
inline: "center"
});
}
var properties = [[
"x",
["left", "right"],
getScrollXOffset
], [
"y",
["top", "bottom"],
getScrollYOffset
]], Rect = class {
constructor(i, a) {
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 o = getScrollableAncestors(a), s = getScrollOffsets(o);
this.rect = { ...i }, this.width = i.width, this.height = i.height;
for (let [i, a, c] of properties) for (let d of a) Object.defineProperty(this, d, {
get: () => {
let a = c(o), f = s[i] - a;
return this.rect[d] + f;
},
enumerable: !0
});
Object.defineProperty(this, "rect", { enumerable: !1 });
}
}, Listeners = class {
constructor(i) {
this.target = void 0, this.listeners = [], this.removeAll = () => {
this.listeners.forEach((i) => this.target?.removeEventListener(...i));
}, this.target = i;
}
add(i, a, o) {
var s;
(s = this.target) == null || s.addEventListener(i, a, o), this.listeners.push([
i,
a,
o
]);
}
};
function getEventListenerTarget(i) {
let { EventTarget: a } = getWindow(i);
return i instanceof a ? i : getOwnerDocument(i);
}
function hasExceededDistance(i, a) {
let o = Math.abs(i.x), s = Math.abs(i.y);
return typeof a == "number" ? Math.sqrt(o ** 2 + s ** 2) > a : "x" in a && "y" in a ? o > a.x && s > a.y : "x" in a ? o > a.x : "y" in a ? s > a.y : !1;
}
var EventName;
(function(i) {
i.Click = "click", i.DragStart = "dragstart", i.Keydown = "keydown", i.ContextMenu = "contextmenu", i.Resize = "resize", i.SelectionChange = "selectionchange", i.VisibilityChange = "visibilitychange";
})(EventName ||= {});
function preventDefault(i) {
i.preventDefault();
}
function stopPropagation(i) {
i.stopPropagation();
}
var KeyboardCode;
(function(i) {
i.Space = "Space", i.Down = "ArrowDown", i.Right = "ArrowRight", i.Left = "ArrowLeft", i.Up = "ArrowUp", i.Esc = "Escape", i.Enter = "Enter", i.Tab = "Tab";
})(KeyboardCode ||= {});
var defaultKeyboardCodes = {
start: [KeyboardCode.Space, KeyboardCode.Enter],
cancel: [KeyboardCode.Esc],
end: [
KeyboardCode.Space,
KeyboardCode.Enter,
KeyboardCode.Tab
]
}, defaultKeyboardCoordinateGetter = (i, a) => {
let { currentCoordinates: o } = a;
switch (i.code) {
case KeyboardCode.Right: return {
...o,
x: o.x + 25
};
case KeyboardCode.Left: return {
...o,
x: o.x - 25
};
case KeyboardCode.Down: return {
...o,
y: o.y + 25
};
case KeyboardCode.Up: return {
...o,
y: o.y - 25
};
}
}, KeyboardSensor = class {
constructor(i) {
this.props = void 0, this.autoScrollEnabled = !1, this.referenceCoordinates = void 0, this.listeners = void 0, this.windowListeners = void 0, this.props = i;
let { event: { target: a } } = i;
this.props = i, this.listeners = new Listeners(getOwnerDocument(a)), this.windowListeners = new Listeners(getWindow(a)), 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: i, onStart: a } = this.props, o = i.node.current;
o && scrollIntoViewIfNeeded(o), a(defaultCoordinates);
}
handleKeyDown(i) {
if (isKeyboardEvent(i)) {
let { active: a, context: o, options: s } = this.props, { keyboardCodes: c = defaultKeyboardCodes, coordinateGetter: d = defaultKeyboardCoordinateGetter, scrollBehavior: f = "smooth" } = s, { code: g } = i;
if (c.end.includes(g)) {
this.handleEnd(i);
return;
}
if (c.cancel.includes(g)) {
this.handleCancel(i);
return;
}
let { collisionRect: b } = o.current, x = b ? {
x: b.left,
y: b.top
} : defaultCoordinates;
this.referenceCoordinates ||= x;
let S = d(i, {
active: a,
context: o.current,
currentCoordinates: x
});
if (S) {
let a = subtract(S, x), s = {
x: 0,
y: 0
}, { scrollableAncestors: c } = o.current;
for (let o of c) {
let c = i.code, { isTop: d, isRight: g, isLeft: b, isBottom: x, maxScroll: C, minScroll: w } = getScrollPosition(o), E = getScrollElementRect(o), O = {
x: Math.min(c === KeyboardCode.Right ? E.right - E.width / 2 : E.right, Math.max(c === KeyboardCode.Right ? E.left : E.left + E.width / 2, S.x)),
y: Math.min(c === KeyboardCode.Down ? E.bottom - E.height / 2 : E.bottom, Math.max(c === KeyboardCode.Down ? E.top : E.top + E.height / 2, S.y))
}, A = c === KeyboardCode.Right && !g || c === KeyboardCode.Left && !b, M = c === KeyboardCode.Down && !x || c === KeyboardCode.Up && !d;
if (A && O.x !== S.x) {
let i = o.scrollLeft + a.x, d = c === KeyboardCode.Right && i <= C.x || c === KeyboardCode.Left && i >= w.x;
if (d && !a.y) {
o.scrollTo({
left: i,
behavior: f
});
return;
}
d ? s.x = o.scrollLeft - i : s.x = c === KeyboardCode.Right ? o.scrollLeft - C.x : o.scrollLeft - w.x, s.x && o.scrollBy({
left: -s.x,
behavior: f
});
break;
} else if (M && O.y !== S.y) {
let i = o.scrollTop + a.y, d = c === KeyboardCode.Down && i <= C.y || c === KeyboardCode.Up && i >= w.y;
if (d && !a.x) {
o.scrollTo({
top: i,
behavior: f
});
return;
}
d ? s.y = o.scrollTop - i : s.y = c === KeyboardCode.Down ? o.scrollTop - C.y : o.scrollTop - w.y, s.y && o.scrollBy({
top: -s.y,
behavior: f
});
break;
}
}
this.handleMove(i, add(subtract(S, this.referenceCoordinates), s));
}
}
}
handleMove(i, a) {
let { onMove: o } = this.props;
i.preventDefault(), o(a);
}
handleEnd(i) {
let { onEnd: a } = this.props;
i.preventDefault(), this.detach(), a();
}
handleCancel(i) {
let { onCancel: a } = this.props;
i.preventDefault(), this.detach(), a();
}
detach() {
this.listeners.removeAll(), this.windowListeners.removeAll();
}
};
KeyboardSensor.activators = [{
eventName: "onKeyDown",
handler: (i, a, o) => {
let { keyboardCodes: s = defaultKeyboardCodes, onActivation: c } = a, { active: d } = o, { code: f } = i.nativeEvent;
if (s.start.includes(f)) {
let a = d.activatorNode.current;
return a && i.target !== a ? !1 : (i.preventDefault(), c?.({ event: i.nativeEvent }), !0);
}
return !1;
}
}];
function isDistanceConstraint(i) {
return !!(i && "distance" in i);
}
function isDelayConstraint(i) {
return !!(i && "delay" in i);
}
var AbstractPointerSensor = class {
constructor(i, a, o) {
o === void 0 && (o = getEventListenerTarget(i.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 = i, this.events = a;
let { event: s } = i, { target: c } = s;
this.props = i, this.events = a, this.document = getOwnerDocument(c), this.documentListeners = new Listeners(this.document), this.listeners = new Listeners(o), this.windowListeners = new Listeners(getWindow(c)), this.initialCoordinates = getEventCoordinates(s) ?? 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: i, props: { options: { activationConstraint: a, bypassActivationConstraint: o } } } = this;
if (this.listeners.add(i.move.name, this.handleMove, { passive: !1 }), this.listeners.add(i.end.name, this.handleEnd), i.cancel && this.listeners.add(i.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), a) {
if (o != null && o({
event: this.props.event,
activeNode: this.props.activeNode,
options: this.props.options
})) return this.handleStart();
if (isDelayConstraint(a)) {
this.timeoutId = setTimeout(this.handleStart, a.delay), this.handlePending(a);
return;
}
if (isDistanceConstraint(a)) {
this.handlePending(a);
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(i, a) {
let { active: o, onPending: s } = this.props;
s(o, i, this.initialCoordinates, a);
}
handleStart() {
let { initialCoordinates: i } = this, { onStart: a } = this.props;
i && (this.activated = !0, this.documentListeners.add(EventName.Click, stopPropagation, { capture: !0 }), this.removeTextSelection(), this.documentListeners.add(EventName.SelectionChange, this.removeTextSelection), a(i));
}
handleMove(i) {
let { activated: a, initialCoordinates: o, props: s } = this, { onMove: c, options: { activationConstraint: d } } = s;
if (!o) return;
let f = getEventCoordinates(i) ?? defaultCoordinates, g = subtract(o, f);
if (!a && d) {
if (isDistanceConstraint(d)) {
if (d.tolerance != null && hasExceededDistance(g, d.tolerance)) return this.handleCancel();
if (hasExceededDistance(g, d.distance)) return this.handleStart();
}
if (isDelayConstraint(d) && hasExceededDistance(g, d.tolerance)) return this.handleCancel();
this.handlePending(d, g);
return;
}
i.cancelable && i.preventDefault(), c(f);
}
handleEnd() {
let { onAbort: i, onEnd: a } = this.props;
this.detach(), this.activated || i(this.props.active), a();
}
handleCancel() {
let { onAbort: i, onCancel: a } = this.props;
this.detach(), this.activated || i(this.props.active), a();
}
handleKeydown(i) {
i.code === KeyboardCode.Esc && this.handleCancel();
}
removeTextSelection() {
var i;
(i = this.document.getSelection()) == null || i.removeAllRanges();
}
}, events = {
cancel: { name: "pointercancel" },
move: { name: "pointermove" },
end: { name: "pointerup" }
}, PointerSensor = class extends AbstractPointerSensor {
constructor(i) {
let { event: a } = i, o = getOwnerDocument(a.target);
super(i, events, o);
}
};
PointerSensor.activators = [{
eventName: "onPointerDown",
handler: (i, a) => {
let { nativeEvent: o } = i, { onActivation: s } = a;
return !o.isPrimary || o.button !== 0 ? !1 : (s?.({ event: o }), !0);
}
}];
var events$1 = {
move: { name: "mousemove" },
end: { name: "mouseup" }
}, MouseButton;
(function(i) {
i[i.RightClick = 2] = "RightClick";
})(MouseButton ||= {});
var MouseSensor = class extends AbstractPointerSensor {
constructor(i) {
super(i, events$1, getOwnerDocument(i.event.target));
}
};
MouseSensor.activators = [{
eventName: "onMouseDown",
handler: (i, a) => {
let { nativeEvent: o } = i, { onActivation: s } = a;
return o.button === MouseButton.RightClick ? !1 : (s?.({ event: o }), !0);
}
}];
var events$2 = {
cancel: { name: "touchcancel" },
move: { name: "touchmove" },
end: { name: "touchend" }
}, TouchSensor = class extends AbstractPointerSensor {
constructor(i) {
super(i, events$2);
}
static setup() {
return window.addEventListener(events$2.move.name, i, {
capture: !1,
passive: !1
}), function() {
window.removeEventListener(events$2.move.name, i);
};
function i() {}
}
};
TouchSensor.activators = [{
eventName: "onTouchStart",
handler: (i, a) => {
let { nativeEvent: o } = i, { onActivation: s } = a, { touches: c } = o;
return c.length > 1 ? !1 : (s?.({ event: o }), !0);
}
}];
var AutoScrollActivator;
(function(i) {
i[i.Pointer = 0] = "Pointer", i[i.DraggableRect = 1] = "DraggableRect";
})(AutoScrollActivator ||= {});
var TraversalOrder;
(function(i) {
i[i.TreeOrder = 0] = "TreeOrder", i[i.ReversedTreeOrder = 1] = "ReversedTreeOrder";
})(TraversalOrder ||= {});
function useAutoScroller(i) {
let { acceleration: a, activator: o = AutoScrollActivator.Pointer, canScroll: s, draggingRect: c, enabled: d, interval: f = 5, order: g = TraversalOrder.TreeOrder, pointerCoordinates: b, scrollableAncestors: x, scrollableAncestorRects: S, delta: C, threshold: w } = i, E = useScrollIntent({
delta: C,
disabled: !d
}), [O, A] = useInterval(), M = useRef({
x: 0,
y: 0
}), F = useRef({
x: 0,
y: 0
}), I = useMemo(() => {
switch (o) {
case AutoScrollActivator.Pointer: return b ? {
top: b.y,
bottom: b.y,
left: b.x,
right: b.x
} : null;
case AutoScrollActivator.DraggableRect: return c;
}
}, [
o,
c,
b
]), R = useRef(null), V = useCallback(() => {
let i = R.current;
if (!i) return;
let a = M.current.x * F.current.x, o = M.current.y * F.current.y;
i.scrollBy(a, o);
}, []), rP = useMemo(() => g === TraversalOrder.TreeOrder ? [...x].reverse() : x, [g, x]);
useEffect(() => {
if (!d || !x.length || !I) {
A();
return;
}
for (let i of rP) {
if (s?.(i) === !1) continue;
let o = x.indexOf(i), c = S[o];
if (!c) continue;
let { direction: d, speed: g } = getScrollDirectionAndSpeed(i, c, I, a, w);
for (let i of ["x", "y"]) E[i][d[i]] || (g[i] = 0, d[i] = 0);
if (g.x > 0 || g.y > 0) {
A(), R.current = i, O(V, f), M.current = g, F.current = d;
return;
}
}
M.current = {
x: 0,
y: 0
}, F.current = {
x: 0,
y: 0
}, A();
}, [
a,
V,
s,
A,
d,
f,
JSON.stringify(I),
JSON.stringify(E),
O,
x,
rP,
S,
JSON.stringify(w)
]);
}
var defaultScrollIntent = {
x: {
[Direction.Backward]: !1,
[Direction.Forward]: !1
},
y: {
[Direction.Backward]: !1,
[Direction.Forward]: !1
}
};
function useScrollIntent(i) {
let { delta: a, disabled: o } = i, s = usePrevious(a);
return useLazyMemo((i) => {
if (o || !s || !i) return defaultScrollIntent;
let c = {
x: Math.sign(a.x - s.x),
y: Math.sign(a.y - s.y)
};
return {
x: {
[Direction.Backward]: i.x[Direction.Backward] || c.x === -1,
[Direction.Forward]: i.x[Direction.Forward] || c.x === 1
},
y: {
[Direction.Backward]: i.y[Direction.Backward] || c.y === -1,
[Direction.Forward]: i.y[Direction.Forward] || c.y === 1
}
};
}, [
o,
a,
s
]);
}
function useCachedNode(i, a) {
let o = a == null ? void 0 : i.get(a), s = o ? o.node.current : null;
return useLazyMemo((i) => a == null ? null : s ?? i ?? null, [s, a]);
}
function useCombineActivators(i, a) {
return useMemo(() => i.reduce((i, o) => {
let { sensor: s } = o, c = s.activators.map((i) => ({
eventName: i.eventName,
handler: a(i.handler, o)
}));
return [...i, ...c];
}, []), [i, a]);
}
var MeasuringStrategy;
(function(i) {
i[i.Always = 0] = "Always", i[i.BeforeDragging = 1] = "BeforeDragging", i[i.WhileDragging = 2] = "WhileDragging";
})(MeasuringStrategy ||= {});
var MeasuringFrequency;
(function(i) {
i.Optimized = "optimized";
})(MeasuringFrequency ||= {});
var defaultValue = /* @__PURE__ */ new Map();
function useDroppableMeasuring(i, a) {
let { dragging: o, dependencies: s, config: c } = a, [d, f] = useState(null), { frequency: g, measure: b, strategy: x } = c, S = useRef(i), C = M(), w = useLatestValue(C), E = useCallback(function(i) {
i === void 0 && (i = []), !w.current && f((a) => a === null ? i : a.concat(i.filter((i) => !a.includes(i))));
}, [w]), O = useRef(null), A = useLazyMemo((a) => {
if (C && !o) return defaultValue;
if (!a || a === defaultValue || S.current !== i || d != null) {
let a = /* @__PURE__ */ new Map();
for (let o of i) {
if (!o) continue;
if (d && d.length > 0 && !d.includes(o.id) && o.rect.current) {
a.set(o.id, o.rect.current);
continue;
}
let i = o.node.current, s = i ? new Rect(b(i), i) : null;
o.rect.current = s, s && a.set(o.id, s);
}
return a;
}
return a;
}, [
i,
d,
o,
C,
b
]);
return useEffect(() => {
S.current = i;
}, [i]), useEffect(() => {
C || E();
}, [o, C]), useEffect(() => {
d && d.length > 0 && f(null);
}, [JSON.stringify(d)]), useEffect(() => {
C || typeof g != "number" || O.current !== null || (O.current = setTimeout(() => {
E(), O.current = null;
}, g));
}, [
g,
C,
E,
...s
]), {
droppableRects: A,
measureDroppableContainers: E,
measuringScheduled: d != null
};
function M() {
switch (x) {
case MeasuringStrategy.Always: return !1;
case MeasuringStrategy.BeforeDragging: return o;
default: return !o;
}
}
}
function useInitialValue(i, a) {
return useLazyMemo((o) => i ? o || (typeof a == "function" ? a(i) : i) : null, [a, i]);
}
function useInitialRect(i, a) {
return useInitialValue(i, a);
}
function useMutationObserver(i) {
let { callback: a, disabled: o } = i, s = useEvent(a), c = useMemo(() => {
if (o || typeof window > "u" || window.MutationObserver === void 0) return;
let { MutationObserver: i } = window;
return new i(s);
}, [s, o]);
return useEffect(() => () => c?.disconnect(), [c]), c;
}
function useResizeObserver(i) {
let { callback: a, disabled: o } = i, s = useEvent(a), c = useMemo(() => {
if (o || typeof window > "u" || window.ResizeObserver === void 0) return;
let { ResizeObserver: i } = window;
return new i(s);
}, [o]);
return useEffect(() => () => c?.disconnect(), [c]), c;
}
function defaultMeasure(i) {
return new Rect(getClientRect(i), i);
}
function useRect(i, a, o) {
a === void 0 && (a = defaultMeasure);
let [s, c] = useState(null);
function d() {
c((s) => {
if (!i) return null;
if (i.isConnected === !1) return s ?? o ?? null;
let c = a(i);
return JSON.stringify(s) === JSON.stringify(c) ? s : c;
});
}
let f = useMutationObserver({ callback(a) {
if (i) for (let o of a) {
let { type: a, target: s } = o;
if (a === "childList" && s instanceof HTMLElement && s.contains(i)) {
d();
break;
}
}
} }), g = useResizeObserver({ callback: d });
return useIsomorphicLayoutEffect(() => {
d(), i ? (g?.observe(i), f?.observe(document.body, {
childList: !0,
subtree: !0
})) : (g?.disconnect(), f?.disconnect());
}, [i]), s;
}
function useRectDelta(i) {
let a = useInitialValue(i);
return getRectDelta(i, a);
}
var defaultValue$1 = [];
function useScrollableAncestors(i) {
let a = useRef(i), o = useLazyMemo((o) => i ? o && o !== defaultValue$1 && i && a.current && i.parentNode === a.current.parentNode ? o : getScrollableAncestors(i) : defaultValue$1, [i]);
return useEffect(() => {
a.current = i;
}, [i]), o;
}
function useScrollOffsets(i) {
let [a, o] = useState(null), s = useRef(i), c = useCallback((i) => {
let a = getScrollableElement(i.target);
a && o((i) => i ? (i.set(a, getScrollCoordinates(a)), new Map(i)) : null);
}, []);
return useEffect(() => {
let a = s.current;
if (i !== a) {
d(a);
let f = i.map((i) => {
let a = getScrollableElement(i);
return a ? (a.addEventListener("scroll", c, { passive: !0 }), [a, getScrollCoordinates(a)]) : null;
}).filter((i) => i != null);
o(f.length ? new Map(f) : null), s.current = i;
}
return () => {
d(i), d(a);
};
function d(i) {
i.forEach((i) => {
getScrollableElement(i)?.removeEventListener("scroll", c);
});
}
}, [c, i]), useMemo(() => i.length ? a ? Array.from(a.values()).reduce((i, a) => add(i, a), defaultCoordinates) : getScrollOffsets(i) : defaultCoordinates, [i, a]);
}
function useScrollOffsetsDelta(i, a) {
a === void 0 && (a = []);
let o = useRef(null);
return useEffect(() => {
o.current = null;
}, a), useEffect(() => {
let a = i !== defaultCoordinates;
a && !o.current && (o.current = i), !a && o.current && (o.current = null);
}, [i]), o.current ? subtract(i, o.current) : defaultCoordinates;
}
function useSensorSetup(i) {
useEffect(() => {
if (!canUseDOM) return;
let a = i.map((i) => {
let { sensor: a } = i;
return a.setup == null ? void 0 : a.setup();
});
return () => {
for (let i of a) i?.();
};
}, i.map((i) => {
let { sensor: a } = i;
return a;
}));
}
function useSyntheticListeners(i, a) {
return useMemo(() => i.reduce((i, o) => {
let { eventName: s, handler: c } = o;
return i[s] = (i) => {
c(i, a);
}, i;
}, {}), [i, a]);
}
function useWindowRect(i) {
return useMemo(() => i ? getWindowClientRect(i) : null, [i]);
}
var defaultValue$2 = [];
function useRects(i, a) {
a === void 0 && (a = getClientRect);
let [o] = i, s = useWindowRect(o ? getWindow(o) : null), [c, d] = useState(defaultValue$2);
function f() {
d(() => i.length ? i.map((i) => isDocumentScrollingElement(i) ? s : new Rect(a(i), i)) : defaultValue$2);
}
let g = useResizeObserver({ callback: f });
return useIsomorphicLayoutEffect(() => {
g?.disconnect(), f(), i.forEach((i) => g?.observe(i));
}, [i]), c;
}
function getMeasurableNode(i) {
if (!i) return null;
if (i.children.length > 1) return i;
let a = i.children[0];
return isHTMLElement(a) ? a : i;
}
function useDragOverlayMeasuring(i) {
let { measure: a } = i, [o, s] = useState(null), c = useCallback((i) => {
for (let { target: o } of i) if (isHTMLElement(o)) {
s((i) => {
let s = a(o);
return i ? {
...i,
width: s.width,
height: s.height
} : s;
});
break;
}
}, [a]), d = useResizeObserver({ callback: c }), f = useCallback((i) => {
let o = getMeasurableNode(i);
d?.disconnect(), o && d?.observe(o), s(o ? a(o) : null);
}, [a, d]), [g, b] = useNodeRef(f);
return useMemo(() => ({
nodeRef: g,
rect: o,
setRef: b
}), [
o,
g,
b
]);
}
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(i) {
return i == null ? void 0 : super.get(i) ?? void 0;
}
toArray() {
return Array.from(this.values());
}
getEnabled() {
return this.toArray().filter((i) => {
let { disabled: a } = i;
return !a;
});
}
getNodeFor(i) {
return this.get(i)?.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(i, a) {
switch (a.type) {
case Action.DragStart: return {
...i,
draggable: {
...i.draggable,
initialCoordinates: a.initialCoordinates,
active: a.active
}
};
case Action.DragMove: return i.draggable.active == null ? i : {
...i,
draggable: {
...i.draggable,
translate: {
x: a.coordinates.x - i.draggable.initialCoordinates.x,
y: a.coordinates.y - i.draggable.initialCoordinates.y
}
}
};
case Action.DragEnd:
case Action.DragCancel: return {
...i,
draggable: {
...i.draggable,
active: null,
initialCoordinates: {
x: 0,
y: 0
},
translate: {
x: 0,
y: 0
}
}
};
case Action.RegisterDroppable: {
let { element: o } = a, { id: s } = o, c = new DroppableContainersMap(i.droppable.containers);
return c.set(s, o), {
...i,
droppable: {
...i.droppable,
containers: c
}
};
}
case Action.SetDroppableDisabled: {
let { id: o, key: s, disabled: c } = a, d = i.droppable.containers.get(o);
if (!d || s !== d.key) return i;
let f = new DroppableContainersMap(i.droppable.containers);
return f.set(o, {
...d,
disabled: c
}), {
...i,
droppable: {
...i.droppable,
containers: f
}
};
}
case Action.UnregisterDroppable: {
let { id: o, key: s } = a, c = i.droppable.containers.get(o);
if (!c || s !== c.key) return i;
let d = new DroppableContainersMap(i.droppable.containers);
return d.delete(o), {
...i,
droppable: {
...i.droppable,
containers: d
}
};
}
default: return i;
}
}
function RestoreFocus(i) {
let { disabled: a } = i, { active: o, activatorEvent: s, draggableNodes: c } = useContext(InternalContext), d = usePrevious(s), f = usePrevious(o?.id);
return useEffect(() => {
if (!a && !s && d && f != null) {
if (!isKeyboardEvent(d) || document.activeElement === d.target) return;
let i = c.get(f);
if (!i) return;
let { activatorNode: a, node: o } = i;
if (!a.current && !o.current) return;
requestAnimationFrame(() => {
for (let i of [a.current, o.current]) {
if (!i) continue;
let a = findFirstFocusableNode(i);
if (a) {
a.focus();
break;
}
}
});
}
}, [
s,
a,
c,
f,
d
]), null;
}
function applyModifiers(i, a) {
let { transform: o,...s } = a;
return i != null && i.length ? i.reduce((i, a) => a({
transform: i,
...s
}), o) : o;
}
function useMeasuringConfiguration(i) {
return useMemo(() => ({
draggable: {
...defaultMeasuringConfiguration.draggable,
...i?.draggable
},
droppable: {
...defaultMeasuringConfiguration.droppable,
...i?.droppable
},
dragOverlay: {
...defaultMeasuringConfiguration.dragOverlay,
...i?.dragOverlay
}
}), [
i?.draggable,
i?.droppable,
i?.dragOverlay
]);
}
function useLayoutShiftScrollCompensation(i) {
let { activeNode: a, measure: o, initialRect: s, config: c = !0 } = i, d = useRef(!1), { x: f, y: g } = typeof c == "boolean" ? {
x: c,
y: c
} : c;
useIsomorphicLayoutEffect(() => {
if (!f && !g || !a) {
d.current = !1;
return;
}
if (d.current || !s) return;
let i = a?.node.current;
if (!i || i.isConnected === !1) return;
let c = o(i), b = getRectDelta(c, s);
if (f || (b.x = 0), g || (b.y = 0), d.current = !0, Math.abs(b.x) > 0 || Math.abs(b.y) > 0) {
let a = getFirstScrollableAncestor(i);
a && a.scrollBy({
top: b.y,
left: b.x
});
}
}, [
a,
f,
g,
s,
o
]);
}
var ActiveDraggableContext = /* @__PURE__ */ createContext({
...defaultCoordinates,
scaleX: 1,
scaleY: 1
}), Status;
(function(i) {
i[i.Uninitialized = 0] = "Uninitialized", i[i.Initializing = 1] = "Initializing", i[i.Initialized = 2] = "Initialized";
})(Status ||= {});
var DndContext = /* @__PURE__ */ memo(function(i) {
let { id: a, accessibility: o, autoScroll: s = !0, children: c, sensors: d = defaultSensors, collisionDetection: f = rectIntersection, measuring: g, modifiers: b,...x } = i, [S, C] = useReducer(reducer, void 0, getInitialState), [w, E] = useDndMonitorProvider(), [O, A] = useState(Status.Uninitialized), M = O === Status.Initialized, { draggable: { active: F, nodes: I, translate: R }, droppable: { containers: V } } = S, rP = F == null ? null : I.get(F), iP = useRef({
initial: null,
translated: null
}), q = useMemo(() => F == null ? null : {
id: F,
data: rP?.data ?? defaultData,
rect: iP
}, [F, rP]), aP = useRef(null), [oP, sP] = useState(null), [cP, lP] = useState(null), uP = useLatestValue(x, Object.values(x)), dP = useUniqueId("DndDescribedBy", a), fP = useMemo(() => V.getEnabled(), [V]), pP = useMeasuringConfiguration(g), { droppableRects: mP, measureDroppableContainers: hP, measuringScheduled: gP } = useDroppableMeasuring(fP, {
dragging: M,
dependencies: [R.x, R.y],
config: pP.droppable
}), _P = useCachedNode(I, F), vP = useMemo(() => cP ? getEventCoordinates(cP) : null, [cP]), yP = QP(), bP = useInitialRect(_P, pP.draggable.measure);
useLayoutShiftScrollCompensation({
activeNode: F == null ? null : I.get(F),
config: yP.layoutShiftCompensation,
initialRect: bP,
measure: pP.draggable.measure
});
let xP = useRect(_P, pP.draggable.measure, bP), SP = useRect(_P ? _P.parentElement : null), CP = useRef({
activatorEvent: null,
active: null,
activeNode: _P,
collisionRect: null,
collisions: null,
droppableRects: mP,
draggableNodes: I,
draggingNode: null,
draggingNodeRect: null,
droppableContainers: V,
over: null,
scrollableAncestors: [],
scrollAdjustedTranslate: null
}), wP = V.getNodeFor(CP.current.over?.id), TP = useDragOverlayMeasuring({ measure: pP.dragOverlay.measure }), EP = TP.nodeRef.current ?? _P, DP = M ? TP.rect ?? xP : null, OP = !!(TP.nodeRef.current && TP.rect), kP = useRectDelta(OP ? null : xP), AP = useWindowRect(EP ? getWindow(EP) : null), jP = useScrollableAncestors(M ? wP ?? _P : null), MP = useRects(jP), NP = applyModifiers(b, {
transform: {
x: R.x - kP.x,
y: R.y - kP.y,
scaleX: 1,
scaleY: 1
},
activatorEvent: cP,
active: q,
activeNodeRect: xP,
containerNodeRect: SP,
draggingNodeRect: DP,
over: CP.current.over,
overlayNodeRect: TP.rect,
scrollableAncestors: jP,
scrollableAncestorRects: MP,
windowRect: AP
}), PP = vP ? add(vP, R) : null, FP = useScrollOffsets(jP), IP = useScrollOffsetsDelta(FP), LP = useScrollOffsetsDelta(FP, [xP]), RP = add(NP, IP), zP = DP ? getAdjustedRect(DP, NP) : null, BP = q && zP ? f({
active: q,
collisionRect: zP,
droppableRects: mP,
droppableContainers: fP,
pointerCoordinates: PP
}) : null, VP = getFirstCollision(BP, "id"), [HP, UP] = useState(null), WP = OP ? NP : add(NP, LP), GP = adjustScale(WP, HP?.rect ?? null, xP), KP = useRef(null), qP = useCallback((i, a) => {
let { sensor: o, options: s } = a;
if (aP.current == null) return;
let c = I.get(aP.current);
if (!c) return;
let d = i.nativeEvent;
KP.current = new o({
active: aP.current,
activeNode: c,
event: d,
options: s,
context: CP,
onAbort(i) {
if (!I.get(i)) return;
let { onDragAbort: a } = uP.current, o = { id: i };
a?.(o), w({
type: "onDragAbort",
event: o
});
},
onPending(i, a, o, s) {
if (!I.get(i)) return;
let { onDragPending: c } = uP.current, d = {
id: i,
constraint: a,
initialCoordinates: o,
offset: s
};
c?.(d), w({
type: "onDragPending",
event: d
});
},
onStart(i) {
let a = aP.current;
if (a == null) return;
let o = I.get(a);
if (!o) return;
let { onDragStart: s } = uP.current, c = {
activatorEvent: d,
active: {
id: a,
data: o.data,
rect: iP
}
};
unstable_batchedUpdates(() => {
s?.(c), A(Status.Initializing), C({
type: Action.DragStart,
initialCoordinates: i,
active: a
}), w({
type: "onDragStart",
event: c
}), sP(KP.current), lP(d);
});
},
onMove(i) {
C({
type: Action.DragMove,
coordinates: i
});
},
onEnd: f(Action.DragEnd),
onCancel: f(Action.DragCancel)
});
function f(i) {
return async function() {
let { active: a, collisions: o, over: s, scrollAdjustedTranslate: c } = CP.current, f = null;
if (a && c) {
let { cancelDrop: g } = uP.current;
f = {
activatorEvent: d,
active: a,
collisions: o,
delta: c,
over: s
}, i === Action.DragEnd && typeof g == "function" && await Promise.resolve(g(f)) && (i = Action.DragCancel);
}
aP.current = null, unstable_batchedUpdates(() => {
C({ type: i }), A(Status.Uninitialized), UP(null), sP(null), lP(null), KP.current = null;
let a = i === Action.DragEnd ? "onDragEnd" : "onDragCancel";
if (f) {
let i = uP.current[a];
i?.(f), w({
type: a,
event: f
});
}
});
};
}
}, [I]), JP = useCallback((i, a) => (o, s) => {
let c = o.nativeEvent, d = I.get(s);
if (aP.current !== null || !d || c.dndKit || c.defaultPrevented) return;
let f = { active: d };
i(o, a.options, f) === !0 && (c.dndKit = { capturedBy: a.sensor }, aP.current = s, qP(o, a));
}, [I, qP]), YP = useCombineActivators(d, JP);
useSensorSetup(d), useIsomorphicLayoutEffect(() => {
xP && O === Status.Initializing && A(Status.Initialized);
}, [xP, O]), useEffect(() => {
let { onDragMove: i } = uP.current, { active: a, activatorEvent: o, collisions: s, over: c } = CP.current;
if (!a || !o) return;
let d = {
active: a,
activatorEvent: o,
collisions: s,
delta: {
x: RP.x,
y: RP.y
},
over: c
};
unstable_batchedUpdates(() => {
i?.(d), w({
type: "onDragMove",
event: d
});
});
}, [RP.x, RP.y]), useEffect(() => {
let { active: i, activatorEvent: a, collisions: o, droppableContainers: s, scrollAdjustedTranslate: c } = CP.current;
if (!i || aP.current == null || !a || !c) return;
let { onDragOver: d } = uP.current, f = s.get(VP), g = f && f.rect.current ? {
id: f.id,
rect: f.rect.current,
data: f.data,
disabled: f.disabled
} : null, b = {
active: i,
activatorEvent: a,
collisions: o,
delta: {
x: c.x,
y: c.y
},
over: g
};
unstable_batchedUpdates(() => {
UP(g), d?.(b), w({
type: "onDragOver",
event: b
});
});
}, [VP]), useIsomorphicLayoutEffect(() => {
CP.current = {
activatorEvent: cP,
active: q,
activeNode: _P,
collisionRect: zP,
collisions: BP,
droppableRects: mP,
draggableNodes: I,
draggingNode: EP,
draggingNodeRect: DP,
droppableContainers: V,
over: HP,
scrollableAncestors: jP,
scrollAdjustedTranslate: RP
}, iP.current = {
initial: DP,
translated: zP
};
}, [
q,
_P,
BP,
zP,
I,
EP,
DP,
mP,
V,
HP,
jP,
RP
]), useAutoScroller({
...yP,
delta: R,
draggingRect: zP,
pointerCoordinates: PP,
scrollableAncestors: jP,
scrollableAncestorRects: MP
});
let XP = useMemo(() => ({
active: q,
activeNode: _P,
activeNodeRect: xP,
activatorEvent: cP,
collisions: BP,
containerNodeRect: SP,
dragOverlay: TP,
draggableNodes: I,
droppableContainers: V,
droppableRects: mP,
over: HP,
measureDroppableContainers: hP,
scrollableAncestors: jP,
scrollableAncestorRects: MP,
measuringConfiguration: pP,
measuringScheduled: gP,
windowRect: AP
}), [
q,
_P,
xP,
cP,
BP,
SP,
TP,
I,
V,
mP,
HP,
hP,
jP,
MP,
pP,
gP,
AP
]), ZP = useMemo(() => ({
activatorEvent: cP,
activators: YP,
active: q,
activeNodeRect: xP,
ariaDescribedById: { draggable: dP },
dispatch: C,
draggableNodes: I,
over: HP,
measureDroppableContainers: hP
}), [
cP,
YP,
q,
xP,
C,
dP,
I,
HP,
hP
]);
return ke.createElement(DndMonitorContext.Provider, { value: E }, ke.createElement(InternalContext.Provider, { value: ZP }, ke.createElement(PublicContext.Provider, { value: XP }, ke.createElement(ActiveDraggableContext.Provider, { value: GP }, c)), ke.createElement(RestoreFocus, { disabled: o?.restoreFocus === !1 })), ke.createElement(Accessibility, {
...o,
hiddenTextDescribedById: dP
}));
function QP() {
let i = oP?.autoScrollEnabled === !1, a = typeof s == "object" ? s.enabled === !1 : s === !1, o = M && !i && !a;
return typeof s == "object" ? {
...s,
enabled: o
} : { enabled: o };
}
}), NullContext = /* @__PURE__ */ createContext(null), defaultRole = "button", ID_PREFIX$1 = "Draggable";
function useDraggable(i) {
let { id: a, data: o, disabled: s = !1, attributes: c } = i, d = useUniqueId(ID_PREFIX$1), { activators: f, activatorEvent: g, active: b, activeNodeRect: x, ariaDescribedById: S, draggableNodes: C, over: w } = useContext(InternalContext), { role: E = defaultRole, roleDescription: O = "draggable", tabIndex: A = 0 } = c ?? {}, M = b?.id === a, F = useContext(M ? ActiveDraggableContext : NullContext), [I, R] = useNodeRef(), [V, rP] = useNodeRef(), iP = useSyntheticListeners(f, a), q = useLatestValue(o);
useIsomorphicLayoutEffect(() => (C.set(a, {
id: a,
key: d,
node: I,
activatorNode: V,
data: q
}), () => {
let i = C.get(a);
i && i.key === d && C.delete(a);
}), [C, a]);
let aP = useMemo(() => ({
role: E,
tabIndex: A,
"aria-disabled": s,
"aria-pressed": M && E === defaultRole ? !0 : void 0,
"aria-roledescription": O,
"aria-describedby": S.draggable
}), [
s,
E,
A,
M,
O,
S.draggable
]);
return {
active: b,
activatorEvent: g,
activeNodeRect: x,
attributes: aP,
isDragging: M,
listeners: s ? void 0 : iP,
node: I,
over: w,
setNodeRef: R,
setActivatorNodeRef: rP,
transform: F
};
}
function useDndContext() {
return useContext(PublicContext);
}
var ID_PREFIX$1$1 = "Droppable", defaultResizeObserverConfig = { timeout: 25 };
function useDroppable(i) {
let { data: a, disabled: o = !1, id: s, resizeObserverConfig: c } = i, d = useUniqueId(ID_PREFIX$1$1), { active: f, dispatch: g, over: b, measureDroppableContainers: x } = useContext(InternalContext), S = useRef({ disabled: o }), C = useRef(!1), w = useRef(null), E = useRef(null), { disabled: O, updateMeasurementsFor: A, timeout: M } = {
...defaultResizeObserverConfig,
...c
}, F = useLatestValue(A ?? s), I = useCallback(() => {
if (!C.current) {
C.current = !0;
return;
}
E.current != null && clearTimeout(E.current), E.current = setTimeout(() => {
x(Array.isArray(F.current) ? F.current : [F.current]), E.current = null;
}, M);
}, [M]), R = useResizeObserver({
callback: I,
disabled: O || !f
}), V = useCallback((i, a) => {
R && (a && (R.unobserve(a), C.current = !1), i && R.observe(i));
}, [R]), [rP, iP] = useNodeRef(V), q = useLatestValue(a);
return useEffect(() => {
!R || !rP.current || (R.disconnect(), C.current = !1, R.observe(rP.current));
}, [rP, R]), useEffect(() => (g({
type: Action.RegisterDroppable,
element: {
id: s,
key: d,
disabled: o,
node: rP,
rect: w,
data: q
}
}), () => g({
type: Action.UnregisterDroppable,
key: d,
id: s
})), [s]), useEffect(() => {
o !== S.current.disabled && (g({
type: Action.SetDroppableDisabled,
id: s,
key: d,
disabled: o
}), S.current.disabled = o);
}, [
s,
d,
o,
g
]), {
active: f,
rect: w,
isOver: b?.id === s,
node: rP,
over: b,
setNodeRef: iP
};
}
function AnimationManager(i) {
let { animation: a, children: o } = i, [s, c] = useState(null), [d, f] = useState(null), g = usePrevious(o);
return !o && !s && g && c(g), useIsomorphicLayoutEffect(() => {
if (!d) return;
let i = s?.key, o = s?.props.id;
if (i == null || o == null) {
c(null);
return;
}
Promise.resolve(a(o, d)).then(() => {
c(null);
});
}, [
a,
s,
d
]), ke.createElement(ke.Fragment, null, o, s ? cloneElement(s, { ref: f }) : null);
}
var defaultTransform = {
x: 0,
y: 0,
scaleX: 1,
scaleY: 1
};
function NullifiedContextProvider(i) {
let { children: a } = i;
return ke.createElement(InternalContext.Provider, { value: defaultInternalContext }, ke.createElement(ActiveDraggableContext.Provider, { value: defaultTransform }, a));
}
var baseStyles = {
position: "fixed",
touchAction: "none"
}, defaultTransition$1 = (i) => isKeyboardEvent(i) ? "transform 250ms ease" : void 0, PositionedOverlay = /* @__PURE__ */ forwardRef((i, a) => {
let { as: o, activatorEvent: s, adjustScale: c, children: d, className: f, rect: g, style: b, transform: x, transition: S = defaultTransition$1 } = i;
if (!g) return null;
let C = c ? x : {
...x,
scaleX: 1,
scaleY: 1
}, w = {
...baseStyles,
width: g.width,
height: g.height,
top: g.top,
left: g.left,
transform: CSS$1.Transform.toString(C),
transformOrigin: c && s ? getRelativeTransformOrigin(s, g) : void 0,
transition: typeof S == "function" ? S(s) : S,
...b
};
return ke.createElement(o, {
className: f,
style: w,
ref: a
}, d);
}), defaultDropAnimationSideEffects = (i) => (a) => {
let { active: o, dragOverlay: s } = a, c = {}, { styles: d, className: f } = i;
if (d != null && d.active) for (let [i, a] of Object.entries(d.active)) a !== void 0 && (c[i] = o.node.style.getPropertyValue(i), o.node.style.setProperty(i, a));
if (d != null && d.dragOverlay) for (let [i, a] of Object.entries(d.dragOverlay)) a !== void 0 && s.node.style.setProperty(i, a);
return f != null && f.active && o.node.classList.add(f.active), f != null && f.dragOverlay && s.node.classList.add(f.dragOverlay), function() {
for (let [i, a] of Object.entries(c)) o.node.style.setProperty(i, a);
f != null && f.active && o.node.classList.remove(f.active);
};
}, defaultDropAnimationConfiguration = {
duration: 250,
easing: "ease",
keyframes: (i) => {
let { transform: { initial: a, final: o } } = i;
return [{ transform: CSS$1.Transform.toString(a) }, { transform: CSS$1.Transform.toString(o) }];
},
sideEffects: /* @__PURE__ */ defaultDropAnimationSideEffects({ styles: { active: { opacity: "0" } } })
};
function useDropAnimation(i) {
let { config: a, draggableNodes: o, droppableContainers: s, measuringConfiguration: c } = i;
return useEvent((i, d) => {
if (a === null) return;
let f = o.get(i);
if (!f) return;
let g = f.node.current;
if (!g) return;
let b = getMeasurableNode(d);
if (!b) return;
let { transform: x } = getWindow(d).getComputedStyle(d), S = parseTransform(x);
if (!S) return;
let C = typeof a == "function" ? a : createDefaultDropAnimation(a);
return scrollIntoViewIfNeeded(g, c.draggable.measure), C({
active: {
id: i,
data: f.data,
node: g,
rect: c.draggable.measure(g)
},
draggableNodes: o,
dragOverlay: {
node: d,
rect: c.dragOverlay.measure(b)
},
droppableContainers: s,
measuringConfiguration: c,
transform: S
});
});
}
function createDefaultDropAnimation(i) {
let { duration: a, easing: o, sideEffects: s, keyframes: c } = {
...defaultDropAnimationConfiguration,
...i
};
return (i) => {
let { active: d, dragOverlay: f, transform: g,...b } = i;
if (!a) return;
let x = {
x: f.rect.left - d.rect.left,
y: f.rect.top - d.rect.top
}, S = {
scaleX: g.scaleX === 1 ? 1 : d.rect.width * g.scaleX / f.rect.width,
scaleY: g.scaleY === 1 ? 1 : d.rect.height * g.scaleY / f.rect.height
}, C = {
x: g.x - x.x,
y: g.y - x.y,
...S
}, w = c({
...b,
active: d,
dragOverlay: f,
transform: {
initial: g,
final: C
}
}), [E] = w, O = w[w.length - 1];
if (JSON.stringify(E) === JSON.stringify(O)) return;
let A = s?.({
active: d,
dragOverlay: f,
...b
}), M = f.node.animate(w, {
duration: a,
easing: o,
fill: "forwards"
});
return new Promise((i) => {
M.onfinish = () => {
A?.(), i();
};
});
};
}
var key = 0;
function useKey(i) {
return useMemo(() => {
if (i != null) return key++, key;
}, [i]);
}
var DragOverlay = /* @__PURE__ */ ke.memo((i) => {
let { adjustScale: a = !1, children: o, dropAnimation: s, style: c, transition: d, modifiers: f, wrapperElement: g = "div", className: b, zIndex: x = 999 } = i, { activatorEvent: S, active: C, activeNodeRect: w, containerNodeRect: E, draggableNodes: O, droppableContainers: A, dragOverlay: M, over: F, measuringConfiguration: I, scrollableAncestors: R, scrollableAncestorRects: V, windowRect: rP } = useDndContext(), iP = useContext(ActiveDraggableContext), q = useKey(C?.id), aP = applyModifiers(f, {
activatorEvent: S,
active: C,
activeNodeRect: w,
containerNodeRect: E,
draggingNodeRect: M.rect,
over: F,
overlayNodeRect: M.rect,
scrollableAncestors: R,
scrollableAncestorRects: V,
transform: iP,
windowRect: rP
}), oP = useInitialValue(w), sP = useDropAnimation({
config: s,
draggableNodes: O,
droppableContainers: A,
measuringConfiguration: I
}), cP = oP ? M.setRef : void 0;
return ke.createElement(NullifiedContextProvider, null, ke.createElement(AnimationManager, { animation: sP }, C && q ? ke.createElement(PositionedOverlay, {
key: q,
id: C.id,
ref: cP,
as: g,
activatorEvent: S,
adjustScale: a,
className: b,
transition: d,
rect: oP,
style: {
zIndex: x,
...c
},
transform: aP
}, o) : null));
}), restrictToHorizontalAxis = (i) => {
let { transform: a } = i;
return {
...a,
y: 0
};
};
function restrictToBoundingRect(i, a, o) {
let s = { ...i };
return a.top + i.y <= o.top ? s.y = o.top - a.top : a.bottom + i.y >= o.top + o.height && (s.y = o.top + o.height - a.bottom), a.left + i.x <= o.left ? s.x = o.left - a.left : a.right + i.x >= o.left + o.width && (s.x = o.left + o.width - a.right), s;
}
var restrictToParentElement = (i) => {
let { containerNodeRect: a, draggingNodeRect: o, transform: s } = i;
return !o || !a ? s : restrictToBoundingRect(s, o, a);
}, restrictToVerticalAxis = (i) => {
let { transform: a } = i;
return {
...a,
x: 0
};
};
function arrayMove(i, a, o) {
let s = i.slice();
return s.splice(o < 0 ? s.length + o : o, 0, s.splice(a, 1)[0]), s;
}
function getSortedRects(i, a) {
return i.reduce((i, o, s) => {
let c = a.get(o);
return c && (i[s] = c), i;
}, Array(i.length));
}
function isValidIndex(i) {
return i !== null && i >= 0;
}
function itemsEqual(i, a) {
if (i === a) return !0;
if (i.length !== a.length) return !1;
for (let o = 0; o < i.length; o++) if (i[o] !== a[o]) return !1;
return !0;
}
function normalizeDisabled(i) {
return typeof i == "boolean" ? {
draggable: i,
droppable: i
} : i;
}
var defaultScale = {
scaleX: 1,
scaleY: 1
}, horizontalListSortingStrategy = (i) => {
let { rects: a, activeNodeRect: o, activeIndex: s, overIndex: c, index: d } = i, f = a[s] ?? o;
if (!f) return null;
let g = getItemGap(a, d, s);
if (d === s) {
let i = a[c];
return i ? {
x: s < c ? i.left + i.width - (f.left + f.width) : i.left - f.left,
y: 0,
...defaultScale
} : null;
}
return d > s && d <= c ? {
x: -f.width - g,
y: 0,
...defaultScale
} : d < s && d >= c ? {
x: f.width + g,
y: 0,
...defaultScale
} : {
x: 0,
y: 0,
...defaultScale
};
};
function getItemGap(i, a, o) {
let s = i[a], c = i[a - 1], d = i[a + 1];
return !s || !c && !d ? 0 : o < a ? c ? s.left - (c.left + c.width) : d.left - (s.left + s.width) : d ? d.left - (s.left + s.width) : s.left - (c.left + c.width);
}
var rectSortingStrategy = (i) => {
let { rects: a, activeIndex: o, overIndex: s, index: c } = i, d = arrayMove(a, s, o), f = a[c], g = d[c];
return !g || !f ? null : {
x: g.left - f.left,
y: g.top - f.top,
scaleX: g.width / f.width,
scaleY: g.height / f.height
};
}, defaultScale$1 = {
scaleX: 1,
scaleY: 1
}, verticalListSortingStrategy = (i) => {
let { activeIndex: a, activeNodeRect: o, index: s, rects: c, overIndex: d } = i, f = c[a] ?? o;
if (!f) return null;
if (s === a) {
let i = c[d];
return i ? {
x: 0,
y: a < d ? i.top + i.height - (f.top + f.height) : i.top - f.top,
...defaultScale$1
} : null;
}
let g = getItemGap$1(c, s, a);
return s > a && s <= d ? {
x: 0,
y: -f.height - g,
...defaultScale$1
} : s < a && s >= d ? {
x: 0,
y: f.height + g,
...defaultScale$1
} : {
x: 0,
y: 0,
...defaultScale$1
};
};
function getItemGap$1(i, a, o) {
let s = i[a], c = i[a - 1], d = i[a + 1];
return s ? o < a ? c ? s.top - (c.top + c.height) : d ? d.top - (s.top + s.height) : 0 : d ? d.top - (s.top + s.height) : c ? s.top - (c.top + c.height) : 0 : 0;
}
var ID_PREFIX = "Sortable", Context = /* @__PURE__ */ ke.createContext({
activeIndex: -1,
containerId: ID_PREFIX,
disableTransforms: !1,
items: [],
overIndex: -1,
useDragOverlay: !1,
sortedRects: [],
strategy: rectSortingStrategy,
disabled: {
draggable: !1,
droppable: !1
}
});
function SortableContext(i) {
let { children: a, id: o, items: s, strategy: c = rectSortingStrategy, disabled: d = !1 } = i, { active: f, dragOverlay: g, droppableRects: b, over: x, measureDroppableContainers: S } = useDndContext(), C = useUniqueId(ID_PREFIX, o), w = g.rect !== null, E = useMemo(() => s.map((i) => typeof i == "object" && "id" in i ? i.id : i), [s]), O = f != null, A = f ? E.indexOf(f.id) : -1, M = x ? E.indexOf(x.id) : -1, F = useRef(E), I = !itemsEqual(E, F.current), R = M !== -1 && A === -1 || I, V = normalizeDisabled(d);
useIsomorphicLayoutEffect(() => {
I && O && S(E);
}, [
I,
E,
O,
S
]), useEffect(() => {
F.current = E;
}, [E]);
let rP = useMemo(() => ({
activeIndex: A,
containerId: C,
disabled: V,
disableTransforms: R,
items: E,
overIndex: M,
useDragOverlay: w,
sortedRects: getSortedRects(E, b),
strategy: c
}), [
A,
C,
V.draggable,
V.droppable,
R,
E,
M,
b,
w,
c
]);
return ke.createElement(Context.Provider, { value: rP }, a);
}
var defaultNewIndexGetter = (i) => {
let { id: a, items: o, activeIndex: s, overIndex: c } = i;
return arrayMove(o, s, c).indexOf(a);
}, defaultAnimateLayoutChanges = (i) => {
let { containerId: a, isSorting: o, wasDragging: s, index: c, items: d, newIndex: f, previousItems: g, previousContainerId: b, transition: x } = i;
return !x || !s || g !== d && c === f ? !1 : o ? !0 : f !== c && a === b;
}, defaultTransition = {
duration: 200,
easing: "ease"
}, transitionProperty = "transform", disabledTransition = /* @__PURE__ */ CSS$1.Transition.toString({
property: transitionProperty,
duration: 0,
easing: "linear"
}), defaultAttributes = { roleDescription: "sortable" };
function useDerivedTransform(i) {
let { disabled: a, index: o, node: s, rect: c } = i, [d, f] = useState(null), g = useRef(o);
return useIsomorphicLayoutEffect(() => {
if (!a && o !== g.current && s.current) {
let i = c.current;
if (i) {
let a = getClientRect(s.current, { ignoreTransform: !0 }), o = {
x: i.left - a.left,
y: i.top - a.top,
scaleX: i.width / a.width,
scaleY: i.height / a.height
};
(o.x || o.y) && f(o);
}
}
o !== g.current && (g.current = o);
}, [
a,
o,
s,
c
]), useEffect(() => {
d && f(null);
}, [d]), d;
}
function useSortable(i) {
let { animateLayoutChanges: a = defaultAnimateLayoutChanges, attributes: o, disabled: s, data: c, getNewIndex: d = defaultNewIndexGetter, id: f, strategy: g, resizeObserverConfig: b, transition: x = defaultTransition } = i, { items: S, containerId: C, activeIndex: w, disabled: E, disableTransforms: O, sortedRects: A, overIndex: M, useDragOverlay: F, strategy: I } = useContext(Context), R = normalizeLocalDisabled(s, E), V = S.indexOf(f), rP = useMemo(() => ({
sortable: {
containerId: C,
index: V,
items: S
},
...c
}), [
C,
c,
V,
S
]), iP = useMemo(() => S.slice(S.indexOf(f)), [S, f]), { rect: q, node: aP, isOver: oP, setNodeRef: sP } = useDroppable({
id: f,
data: rP,
disabled: R.droppable,
resizeObserverConfig: {
updateMeasurementsFor: iP,
...b
}
}), { active: cP, activatorEvent: lP, activeNodeRect: uP, attributes: dP, setNodeRef: fP, listeners: pP, isDragging: mP, over: hP, setActivatorNodeRef: gP, transform: _P } = useDraggable({
id: f,
data: rP,
attributes: {
...defaultAttributes,
...o
},
disabled: R.draggable
}), vP = useCombinedRefs(sP, fP), yP = !!cP, bP = yP && !O && isValidIndex(w) && isValidIndex(M), xP = !F && mP, SP = bP ? (xP && bP ? _P : null) ?? (g ?? I)({
rects: A,
activeNodeRect: uP,
activeIndex: w,
overIndex: M,
index: V
}) : null, CP = isValidIndex(w) && isValidIndex(M) ? d({
id: f,
items: S,
activeIndex: w,
overIndex: M
}) : V, wP = cP?.id, TP = useRef({
activeId: wP,
items: S,
newIndex: CP,
containerId: C
}), EP = S !== TP.current.items, DP = a({
active: cP,
containerId: C,
isDragging: mP,
isSorting: yP,
id: f,
index: V,
items: S,
newIndex: TP.current.newIndex,
previousItems: TP.current.items,
previousContainerId: TP.current.containerId,
transition: x,
wasDragging: TP.current.activeId != null
}), OP = useDerivedTransform({
disabled: !DP,
index: V,
node: aP,
rect: q
});
return useEffect(() => {
yP && TP.current.newIndex !== CP && (TP.current.newIndex = CP), C !== TP.current.containerId && (TP.current.containerId = C), S !== TP.current.items && (TP.current.items = S);
}, [
yP,
CP,
C,
S
]), useEffect(() => {
if (wP === TP.current.activeId) return;
if (wP != null && TP.current.activeId == null) {
TP.current.activeId = wP;
return;
}
let i = setTimeout(() => {
TP.current.activeId = wP;
}, 50);
return () => clearTimeout(i);
}, [wP]), {
active: cP,
activeIndex: w,
attributes: dP,
data: rP,
rect: q,
index: V,
newIndex: CP,
items: S,
isOver: oP,
isSorting: yP,
isDragging: mP,
listeners: pP,
node: aP,
overIndex: M,
over: hP,
setNodeRef: vP,
setActivatorNodeRef: gP,
setDroppableNodeRef: sP,
setDraggableNodeRef: fP,
transform: OP ?? SP,
transition: kP()
};
function kP() {
if (OP || EP && TP.current.newIndex === V) return disabledTransition;
if (!(xP && !isKeyboardEvent(lP) || !x) && (yP || DP)) return CSS$1.Transition.toString({
...x,
property: transitionProperty
});
}
}
function normalizeLocalDisabled(i, a) {
return typeof i == "boolean" ? {
draggable: i,
droppable: !1
} : {
draggable: i?.draggable ?? a.draggable,
droppable: i?.droppable ?? a.droppable
};
}
function hasSortableData(i) {
if (!i) return !1;
let a = i.data.current;
return !!(a && "sortable" in a && typeof a.sortable == "object" && "containerId" in a.sortable && "items" in a.sortable && "index" in a.sortable);
}
var directions = [
KeyboardCode.Down,
KeyboardCode.Right,
KeyboardCode.Up,
KeyboardCode.Left
], sortableKeyboardCoordinates = (i, a) => {
let { context: { active: o, collisionRect: s, droppableRects: c, droppableContainers: d, over: f, scrollableAncestors: g } } = a;
if (directions.includes(i.code)) {
if (i.preventDefault(), !o || !s) return;
let a = [];
d.getEnabled().forEach((o) => {
if (!o || o != null && o.disabled) return;
let d = c.get(o.id);
if (d) switch (i.code) {
case KeyboardCode.Down:
s.top < d.top && a.push(o);
break;
case KeyboardCode.Up:
s.top > d.top && a.push(o);
break;
case KeyboardCode.Left:
s.left > d.left && a.push(o);
break;
case KeyboardCode.Right:
s.left < d.left && a.push(o);
break;
}
});
let b = closestCorners({
active: o,
collisionRect: s,
droppableRects: c,
droppableContainers: a,
pointerCoordinates: null
}), x = getFirstCollision(b, "id");
if (x === f?.id && b.length > 1 && (x = b[1].id), x != null) {
let i = d.get(o.id), a = d.get(x), f = a ? c.get(a.id) : null, b = a?.node.current;
if (b && f && i && a) {
let o = getScrollableAncestors(b).some((i, a) => g[a] !== i), c = isSameContainer(i, a), d = isAfter(i, a), x = o || !c ? {
x: 0,
y: 0
} : {
x: d ? s.width - f.width : 0,
y: d ? s.height - f.height : 0
}, S = {
x: f.left,
y: f.top
};
return x.x && x.y ? S : subtract(S, x);
}
}
}
};
function isSameContainer(i, a) {
return !hasSortableData(i) || !hasSortableData(a) ? !1 : i.data.current.sortable.containerId === a.data.current.sortable.containerId;
}
function isAfter(i, a) {
return !hasSortableData(i) || !hasSortableData(a) || !isSameContainer(i, a) ? !1 : i.data.current.sortable.index < a.data.current.sortable.index;
}
function setRef(i, a) {
if (typeof i == "function") return i(a);
i != null && (i.current = a);
}
function composeRefs(...i) {
return (a) => {
let o = !1, s = i.map((i) => {
let s = setRef(i, a);
return !o && typeof s == "function" && (o = !0), s;
});
if (o) return () => {
for (let a = 0; a < s.length; a++) {
let o = s[a];
typeof o == "function" ? o() : setRef(i[a], null);
}
};
};
}
function useComposedRefs(...i) {
return useCallback(composeRefs(...i), i);
}
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(i) {
let a = useContext(SortableRootContext);
if (!a) throw Error(`\`${i}\` must be used within \`${ROOT_NAME}\``);
return a;
}
function SortableRoot(i) {
let { value: a, onValueChange: o, collisionDetection: s, modifiers: c, strategy: d, onMove: f, orientation: g = "vertical", flatCursor: b = !1, getItemValue: x, accessibility: S,...C } = i, w = useId(), [E, O] = useState(null), A = useSensors(useSensor(MouseSensor), useSensor(TouchSensor), useSensor(KeyboardSensor, { coordinateGetter: sortableKeyboardCoordinates })), M = useMemo(() => orientationConfig[g], [g]), F = useCallback((i) => {
if (typeof i == "object" && !x) throw Error("getItemValue is required when using array of objects");
return x ? x(i) : i;
}, [x]), I = useMemo(() => a.map((i) => F(i)), [a, F]), R = useCallback((i) => {
C.onDragStart?.(i), !i.activatorEvent.defaultPrevented && O(i.active.id);
}, [C.onDragStart]), V = useCallback((i) => {
if (C.onDragEnd?.(i), i.activatorEvent.defaultPrevented) return;
let { active: s, over: c } = i;
if (c && s.id !== c?.id) {
let d = a.findIndex((i) => F(i) === s.id), g = a.findIndex((i) => F(i) === c.id);
f ? f({
...i,
activeIndex: d,
overIndex: g
}) : o?.(arrayMove(a, d, g));
}
O(null);
}, [
a,
o,
f,
F,
C.onDragEnd
]), rP = useCallback((i) => {
C.onDragCancel?.(i), !i.activatorEvent.defaultPrevented && O(null);
}, [C.onDragCancel]), iP = useMemo(() => ({
onDragStart({ active: i }) {
return `Grabbed sortable item "${i.id.toString()}". Current position is ${i.data.current?.sortable.index + 1} of ${a.length}. Use arrow keys to move, space to drop.`;
},
onDragOver({ active: i, over: o }) {
if (o) {
let s = o.data.current?.sortable.index ?? 0, c = i.data.current?.sortable.index ?? 0, d = s > c ? "down" : "up";
return `Sortable item "${i.id.toString()}" moved ${d} to position ${s + 1} of ${a.length}.`;
}
return "Sortable item is no longer over a droppable area. Press escape to cancel.";
},
onDragEnd({ active: i, over: o }) {
let s = i.id.toString();
if (o) {
let i = o.data.current?.sortable.index ?? 0;
return `Sortable item "${s}" dropped at position ${i + 1} of ${a.length}.`;
}
return `Sortable item "${s}" dropped. No changes were made.`;
},
onDragCancel({ active: i }) {
let o = i.data.current?.sortable.index ?? 0;
return `Sorting cancelled. Sortable item "${i.id.toString()}" returned to position ${o + 1} of ${a.length}.`;
},
onDragMove({ active: i, over: o }) {
if (o) {
let s = o.data.current?.sortable.index ?? 0, c = i.data.current?.sortable.index ?? 0, d = s > c ? "down" : "up";
return `Sortable item "${i.id.toString()}" is moving ${d} to position ${s + 1} of ${a.length}.`;
}
return "Sortable item is no longer over a droppable area. Press escape to cancel.";
}
}), [a]), q = useMemo(() => ({ draggable: `
To pick up a sortable item, press space or enter.
While dragging, use the ${g === "vertical" ? "up and down" : g === "horizontal" ? "left and right" : "arrow"} keys to move the item.
Press space or enter again to drop the item in its new position, or press escape to cancel.
` }), [g]), aP = useMemo(() => ({
id: w,
items: I,
modifiers: c ?? M.modifiers,
strategy: d ?? M.strategy,
activeId: E,
setActiveId: O,
getItemValue: F,
flatCursor: b
}), [
w,
I,
c,
d,
M.modifiers,
M.strategy,
E,
F,
b
]);
return /* @__PURE__ */ jsx(SortableRootContext.Provider, {
value: aP,
children: /* @__PURE__ */ jsx(DndContext, {
collisionDetection: s ?? M.collisionDetection,
modifiers: c ?? M.modifiers,
sensors: A,
...C,
id: w,
onDragStart: R,
onDragEnd: V,
onDragCancel: rP,
accessibility: {
announcements: iP,
screenReaderInstructions: q,
...S
}
})
});
}
var SortableContentContext = createContext(!1);
function SortableContent(i) {
let { strategy: a, asChild: o, withoutSlot: s, children: c, ref: d,...f } = i, g = useSortableContext(CONTENT_NAME), b = o ? Slot : "div";
return /* @__PURE__ */ jsx(SortableContentContext.Provider, {
value: !0,
children: /* @__PURE__ */ jsx(SortableContext, {
items: g.items,
strategy: a ?? g.strategy,
children: s ? c : /* @__PURE__ */ jsx(b, {
"data-slot": "sortable-content",
...f,
ref: d,
children: c
})
})
});
}
var SortableItemContext = createContext(null);
function SortableItem(i) {
let { value: a, style: o, asHandle: s, asChild: c, disabled: d, className: f, ref: g,...b } = i, x = useContext(SortableContentContext), S = useContext(SortableOverlayContext);
if (!x && !S) throw Error(`\`${ITEM_NAME}\` must be used within \`${CONTENT_NAME}\` or \`${OVERLAY_NAME}\``);
if (a === "") throw Error(`\`${ITEM_NAME}\` value cannot be an empty string`);
let C = useSortableContext(ITEM_NAME), w = useId(), { attributes: E, listeners: O, setNodeRef: A, setActivatorNodeRef: M, transform: F, transition: I, isDragging: R } = useSortable({
id: a,
disabled: d
}), V = useComposedRefs(g, (i) => {
d || (A(i), s && M(i));
}), rP = useMemo(() => ({
transform: CSS$1.Translate.toString(F),
transition: I,
...o
}), [
F,
I,
o
]), iP = useMemo(() => ({
id: w,
attributes: E,
listeners: O,
setActivatorNodeRef: M,
isDragging: R,
disabled: d
}), [
w,
E,
O,
M,
R,
d
]), q = c ? Slot : "div";
return /* @__PURE__ */ jsx(SortableItemContext.Provider, {
value: iP,
children: /* @__PURE__ */ jsx(q, {
id: w,
"data-disabled": d,
"data-dragging": R ? "" : void 0,
"data-slot": "sortable-item",
...b,
...s && !d ? E : {},
...s && !d ? O : {},
ref: V,
style: rP,
className: cn("focus-visible:ring-ring focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-offset-1", {
"touch-none select-none": s,
"cursor-default": C.flatCursor,
"data-dragging:cursor-grabbing": !C.flatCursor,
"cursor-grab": !R && s && !C.flatCursor,
"opacity-50": R,
"pointer-events-none opacity-50": d
}, f)
})
});
}
var SortableOverlayContext = createContext(!1), dropAnimation = { sideEffects: defaultDropAnimationSideEffects({ styles: { active: { opacity: "0.4" } } }) };
function SortableOverlay(i) {
let { container: a, children: o,...s } = i, c = useSortableContext(OVERLAY_NAME), [d, f] = useState(!1);
useLayoutEffect(() => f(!0), []);
let g = a ?? (d ? globalThis.document?.body : null);
return g ? ReactDOM$2.createPortal(/* @__PURE__ */ jsx(DragOverlay, {
dropAnimation,
modifiers: c.modifiers,
className: cn(!c.flatCursor && "cursor-grabbing"),
...s,
children: /* @__PURE__ */ jsx(SortableOverlayContext.Provider, {
value: !0,
children: c.activeId ? typeof o == "function" ? o({ value: c.activeId }) : o : null
})
}), g) : null;
}
var import_lodash = /* @__PURE__ */ __toESM(require_lodash());
const Tab = (i) => {
let { history: a, operations: o, tests: s, plugins: c } = useLaboratory(), d = useLaboratory(), f = useRef(!1), g = useRef(null);
useEffect(() => {
function i() {
g.current &&= (clearTimeout(g.current), null), f.current = !1;
}
return document.addEventListener("mouseup", i), () => {
document.removeEventListener("mouseup", i);
};
}, []);
let b = useMemo(() => i.activeTab?.id === i.item.id, [i.activeTab, i.item]), x = useMemo(() => i.item.type === "history" ? a.find((a) => i.item.type === "history" && a.id === i.item.data.id) : null, [a, i.item]), S = useMemo(() => i.item.type === "operation" ? o.find((a) => a.id === i.item.data.id) : null, [i.item, o]), C = useMemo(() => i.item.type === "test" ? s.find((a) => a.id === i.item.data.id) : null, [i.item, s]), w = useMemo(() => x ? "status" in x && x.status < 200 || "status" in x && x.status >= 300 || "response" in x && JSON.parse(x.response).errors : !1, [x]), E = useCallback(() => {
i.handleDeleteTab(i.item.id);
}, [i]), O = useCallback(() => {
i.handleDeleteAllTabs();
}, [i]), A = useCallback(() => {
i.handleDeleteOtherTabs(i.item.id);
}, [i]), M = useMemo(() => {
if (i.item.type === "operation") {
let i = S?.name || getOperationName(S?.query || "") || "Untitled";
if (i === "Untitled") {
let a = (0, import_lodash.capitalize)(getOperationType(S?.query || "") || "query");
return i + a;
}
return i;
}
if (i.item.type === "history") {
let i = x?.operation.name || getOperationName(x?.operation.query || "") || "Untitled";
if (i === "Untitled") {
let a = (0, import_lodash.capitalize)(getOperationType(x?.operation.query || "") || "query");
return i + a;
}
return i;
}
if (i.item.type === "preflight") return "Preflight";
if (i.item.type === "env") return "Environment Variables";
if (i.item.type === "settings") return "Settings";
if (i.item.type === "test") return C?.name || "Untitled";
let a = null;
for (let o of c) for (let s of o.tabs ?? []) if (s.type === i.item.type) {
a = s;
break;
}
return a ? typeof a.name == "function" ? a.name(d, {}) : a.name : "Untitled";
}, [
i.item,
x,
S,
C
]), F = useMemo(() => {
if (i.item.type === "operation") return /* @__PURE__ */ jsx(GraphQLIcon, { className: "size-4 text-pink-500" });
if (i.item.type === "preflight") return /* @__PURE__ */ jsx(ScrollTextIcon, { className: "size-4 text-teal-400" });
if (i.item.type === "env") return /* @__PURE__ */ jsx(GlobeIcon, { className: "size-4 text-blue-400" });
if (i.item.type === "history") return /* @__PURE__ */ jsx(HistoryIcon, { className: cn("size-4 text-indigo-400", {
"text-green-500": !w,
"text-red-500": w
}) });
if (i.item.type === "settings") return /* @__PURE__ */ jsx(SettingsIcon, { className: "size-4 text-gray-400" });
if (i.item.type === "test") return /* @__PURE__ */ jsx(FlaskConicalIcon, { className: "size-4 text-lime-400" });
let a = null;
for (let o of c) for (let s of o.tabs ?? []) if (s.type === i.item.type) {
a = s;
break;
}
return a ? typeof a.icon == "function" ? a.icon(d, {}) : a.icon : /* @__PURE__ */ jsx(FileIcon, { className: "text-muted-foreground size-4" });
}, [i.item, w]);
return /* @__PURE__ */ jsxs(ContextMenu, { children: [/* @__PURE__ */ jsx(ContextMenuTrigger, {
asChild: !0,
children: /* @__PURE__ */ jsxs(SortableItem, {
value: i.item.id,
asHandle: !0,
className: cn("data-dragging:opacity-0 flex h-12 w-max items-stretch", i.isOverlay && "bg-background", i.isOverlay && !b && "h-12"),
children: [/* @__PURE__ */ jsx("div", {
onMouseDown: (i) => {
if (f.current) return;
i.preventDefault();
let a = { ...i };
g.current = setTimeout(() => {
f.current = !0, a.currentTarget.dispatchEvent(new MouseEvent("mousedown", { ...a }));
}, 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", i.activeTab?.id === i.item.id && "border-primary bg-card text-foreground"),
onClick: () => {
i.setActiveTab(i.item);
},
onMouseUp: () => {
g.current &&= (clearTimeout(g.current), null), f.current = !1;
},
children: [
F,
M,
i.isOperationLoading(i.item.id) && /* @__PURE__ */ jsx(Spinner, { className: "size-3" }),
i.item.readOnly && /* @__PURE__ */ jsx(LockIcon, { className: "size-3 text-gray-400" }),
/* @__PURE__ */ jsx(XIcon, {
className: "text-muted-foreground size-3",
onMouseDown: (i) => {
i.stopPropagation();
},
onClick: (a) => {
a.stopPropagation(), i.handleDeleteTab(i.item.id);
}
})
]
})
}), /* @__PURE__ */ jsx("div", { className: "bg-border mb-px w-px" })]
})
}), /* @__PURE__ */ jsxs(ContextMenuContent, { children: [
/* @__PURE__ */ jsx(ContextMenuItem, {
onClick: E,
children: "Close"
}),
/* @__PURE__ */ jsx(ContextMenuItem, {
onClick: A,
children: "Close other"
}),
/* @__PURE__ */ jsx(ContextMenuItem, {
onClick: O,
children: "Close all"
})
] })] });
}, Tabs$1 = ({ className: i }) => {
let { tabs: a, setTabs: o, activeTab: s, addTab: c, deleteTab: d, operations: f, setActiveTab: g, addOperation: b, setOperations: x, deleteOperation: S, isOperationLoading: C, goToFullScreen: w, exitFullScreen: E, isFullScreen: O, enableFullScreen: A } = useLaboratory(), M = useCallback(() => {
let i = b({
name: "",
query: "",
variables: "",
headers: "",
extensions: ""
}), a = c({
type: "operation",
data: i
});
g(a);
}, [
b,
c,
g
]), F = useCallback((i) => {
let o = a.findIndex((a) => a.id === i);
if (o === -1) return;
let s = a[o];
s.type === "operation" && S(s.data.id), d(s.id), g(o === 0 ? a[1] ?? null : o > 0 ? a[o - 1] ?? null : a[0] ?? null);
}, [
a,
d,
S,
g
]), I = useCallback(() => {
x([]), o([]);
}, [x, o]), R = useCallback((i) => {
let s = a.find((a) => a.id === i);
if (s) {
let c = a.filter((a) => a.id !== i).filter((i) => i.type === "operation").map((i) => i.data.id);
x(f.filter((i) => !c.includes(i.id))), o([s]), g(s);
}
}, [
a,
x,
f,
o,
g
]);
return /* @__PURE__ */ jsxs("div", {
className: cn("relative z-10 grid size-full grid-cols-[1fr_auto] overflow-hidden", i),
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: a,
onValueChange: o,
getItemValue: (i) => i.id,
orientation: "horizontal",
children: [/* @__PURE__ */ jsx(SortableContent, {
className: "flex w-max items-stretch",
children: a.map((i) => /* @__PURE__ */ jsx(Tab, {
item: i,
activeTab: s,
setActiveTab: g,
isOperationLoading: C,
handleDeleteTab: F,
handleDeleteAllTabs: I,
handleDeleteOtherTabs: R
}, i.id))
}), /* @__PURE__ */ jsx(SortableOverlay, { children: (i) => {
let o = a.find((a) => a.id === i.value);
return o ? /* @__PURE__ */ jsx(Tab, {
item: o,
activeTab: s,
setActiveTab: g,
isOperationLoading: C,
handleDeleteTab: F,
isOverlay: !0,
handleDeleteAllTabs: I,
handleDeleteOtherTabs: R
}) : 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: M,
children: [/* @__PURE__ */ jsx(CirclePlus, { className: "size-4" }), "Add operation"]
})
})]
}), /* @__PURE__ */ jsx(ScrollBar, { orientation: "horizontal" })]
})
}),
/* @__PURE__ */ jsx(FullScreenToggle, {
enabled: A !== !1,
isFullScreen: O === !0,
onEnter: w,
onExit: E
})
]
});
}, FullScreenToggle = (i) => {
if (!i.enabled) return null;
let a = i.isFullScreen ? "Exit full screen" : "Go to full screen";
return /* @__PURE__ */ jsx("div", {
className: "group flex h-12 items-center border-l px-2",
children: /* @__PURE__ */ jsxs(Tooltip, { children: [/* @__PURE__ */ jsx(TooltipTrigger, {
asChild: !0,
children: /* @__PURE__ */ jsx(Button, {
variant: "ghost",
size: "sm",
"aria-label": a,
onClick: i.isFullScreen ? i.onExit : i.onEnter,
children: i.isFullScreen ? /* @__PURE__ */ jsx(MinimizeIcon, { className: "size-4" }) : /* @__PURE__ */ jsx(MaximizeIcon, { className: "size-4" })
})
}), /* @__PURE__ */ jsx(TooltipContent, {
side: "bottom",
children: a
})] })
});
};
var ShadowRootContainer = (i) => {
let a = useRef(null), [o, s] = useState(null);
return useLayoutEffect(() => {
!a.current || o || s(a.current.attachShadow({ mode: "open" }));
}, [o]), useLayoutEffect(() => {
if (o) return keepEditorMouseMovesInShadowRoot(o);
}, [o]), useLayoutEffect(() => {
o && document.head.querySelectorAll("style").forEach((i) => {
i.textContent?.includes("[data-sonner-toaster]") && o.append(i.cloneNode(!0));
});
}, [o]), /* @__PURE__ */ jsx("div", {
ref: a,
className: "hive-laboratory-host size-full",
children: o ? createPortal(i.children, o) : 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") }), LaboratoryContent = () => {
let { activeTab: i, addOperation: a, addTab: o, setActiveTab: s, preflight: c, tabs: d, env: f, plugins: g, pluginsState: b, setPluginsState: x, activePanel: S, setActivePanel: C, enableDocs: w, openDocs: E, schema: O } = useLaboratory(), A = useLaboratory(), [M, F] = useState(!1), I = useRef(O);
I.current = O, useEffect(() => {
if (w) return registerDocsHover({
getSchema: () => I.current ?? null,
openDocs: E
});
}, [w, E]);
let R = useMemo(() => {
switch (i?.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 c = null, d = null;
for (let a of g) for (let o of a.tabs ?? []) if (o.type === i?.type) {
d = o, c = a.id;
break;
}
return d && c ? d.component(i, A, b[c] ?? {}, (i) => x({
...b,
[c]: i
})) : /* @__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 i = a({
name: "",
query: "",
variables: "",
headers: "",
extensions: ""
}), c = o({
type: "operation",
data: i
});
s(c);
},
children: "Add operation"
}) })]
});
}
}
}, [
i?.type,
a,
o,
s
]);
return /* @__PURE__ */ jsxs("div", {
className: "flex size-full",
children: [
/* @__PURE__ */ jsx(Command, {
open: M,
onOpenChange: F
}),
/* @__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"
})] }),
w ? /* @__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 === "docs" }),
children: /* @__PURE__ */ jsx(Button, {
variant: "ghost",
size: "icon",
onClick: () => C(S === "docs" ? null : "docs"),
className: cn("text-muted-foreground hover:text-foreground", { "text-foreground": S === "docs" }),
children: /* @__PURE__ */ jsx(BookOpenIcon, { className: "size-5" })
})
})
}), /* @__PURE__ */ jsx(TooltipContent, {
side: "right",
children: "Documentation"
})] }) : null,
/* @__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, {
asChild: !0,
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: () => F(!0),
children: ["Command Palette...", /* @__PURE__ */ jsx(DropdownMenuShortcut, { children: "⌘J" })]
}) }),
/* @__PURE__ */ jsx(DropdownMenuSeparator, {}),
/* @__PURE__ */ jsx(DropdownMenuItem, {
onSelect: () => {
let i = d.find((i) => i.type === "env") ?? o({
type: "env",
data: f ?? { variables: {} }
});
s(i);
},
children: "Environment Variables"
}),
/* @__PURE__ */ jsx(DropdownMenuItem, {
onSelect: () => {
let i = d.find((i) => i.type === "preflight") ?? o({
type: "preflight",
data: c ?? { script: "" }
});
s(i);
},
children: "Preflight Script"
}),
/* @__PURE__ */ jsx(DropdownMenuSeparator, {}),
/* @__PURE__ */ jsx(DropdownMenuItem, {
onSelect: () => {
let i = d.find((i) => i.type === "settings") ?? o({
type: "settings",
data: {}
});
s(i);
},
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, {}),
S === "docs" && /* @__PURE__ */ jsx(Docs, {})
]
}),
/* @__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: R
})]
})
]
})
]
});
};
const Laboratory = (i) => {
let a = useCallback((a) => {
let [o, s] = a.split(":");
return i.permissions?.[o]?.[s] ?? !0;
}, [i.permissions]), { isPreflightPromptModalOpen: o, setIsPreflightPromptModalOpen: s, preflightPromptModalProps: c, openPreflightPromptModal: d, closePreflightPromptModal: f } = usePreflightPrompt(), g = useSettings(i), b = useEnv(i), x = usePreflight({
...i,
envApi: b,
openPreflightPromptModal: d,
closePreflightPromptModal: f
}), { abortPreflight: S } = x;
useEffect(() => S, [S]);
let C = usePlugins(i), w = useTests(i), E = useTabs(i), O = useCollections({
...i,
tabsApi: E
}), A = useDocs({ defaultActivePanel: O.collections.length > 0 ? "collections" : null }), M = useOperations({
...i,
collectionsApi: O,
tabsApi: E,
envApi: b,
preflightApi: x,
settingsApi: g,
pluginsApi: C,
checkPermissions: a
}), F = useEndpoint({
...i,
settingsApi: g,
operationsApi: M,
envApi: b,
pluginsApi: C,
preflightApi: x
}), I = useHistory(i), [R, V] = useState(!1), [rP, iP] = useState(!1), [q, aP] = useState(!1), oP = useCallback(() => {
V(!0);
}, []), sP = useCallback(() => {
iP(!0);
}, []), cP = useCallback(() => {
aP(!0);
}, []), lP = useForm({
defaultValues: { name: "" },
validators: { onSubmit: addCollectionFormSchema },
onSubmit: ({ value: i }) => {
O.addCollection({ name: i.name }), V(!1);
}
}), uP = useForm({
defaultValues: { endpoint: F.endpoint ?? "" },
validators: { onSubmit: updateEndpointFormSchema },
onSubmit: ({ value: i }) => {
F.setEndpoint(i.endpoint), iP(!1);
}
}), dP = useForm({
defaultValues: { name: "" },
validators: { onSubmit: addTestFormSchema },
onSubmit: ({ value: i }) => {
w.addTest({ name: i.name }), aP(!1);
}
}), [fP, pP] = useState(null), [mP, hP] = useState(!1), gP = useCallback(() => {
hP(!0);
}, []), _P = useCallback(() => {
hP(!1);
}, []);
return useInsertionEffect(() => {
ensureDocumentFontFaces(editor_main_default);
}, []), /* @__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", i.theme, { "fixed inset-0 z-50": mP }),
ref: pP,
children: [/* @__PURE__ */ jsx(Toaster, {
richColors: !0,
closeButton: !0,
position: "top-right",
theme: i.theme
}), /* @__PURE__ */ jsxs(LaboratoryProvider, {
...i,
...w,
...g,
...C,
...b,
...x,
...E,
...F,
...O,
...M,
...I,
...A,
container: fP,
openAddCollectionDialog: oP,
openUpdateEndpointDialog: sP,
openAddTestDialog: cP,
openPreflightPromptModal: d,
goToFullScreen: gP,
exitFullScreen: _P,
isFullScreen: mP,
enableFullScreen: i.enableFullScreen !== !1,
enableDocs: i.enableDocs === !0,
checkPermissions: a,
children: [
/* @__PURE__ */ jsx(Dialog, {
open: rP,
onOpenChange: iP,
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: (i) => {
i.preventDefault(), uP.handleSubmit();
},
children: /* @__PURE__ */ jsx(FieldGroup, { children: /* @__PURE__ */ jsx(uP.Field, {
name: "endpoint",
children: (i) => {
let a = i.state.meta.isTouched && !i.state.meta.isValid;
return /* @__PURE__ */ jsx(Input, {
id: i.name,
name: i.name,
value: i.state.value,
onBlur: i.handleBlur,
onChange: (a) => i.handleChange(a.target.value),
"aria-invalid": a,
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: o,
onOpenChange: s,
...c
}),
/* @__PURE__ */ jsx(Dialog, {
open: R,
onOpenChange: V,
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: (i) => {
i.preventDefault(), lP.handleSubmit();
},
children: /* @__PURE__ */ jsx(FieldGroup, { children: /* @__PURE__ */ jsx(lP.Field, {
name: "name",
children: (i) => {
let a = i.state.meta.isTouched && !i.state.meta.isValid;
return /* @__PURE__ */ jsxs(Field, {
"data-invalid": a,
children: [
/* @__PURE__ */ jsx(FieldLabel, {
htmlFor: i.name,
children: "Name"
}),
/* @__PURE__ */ jsx(Input, {
id: i.name,
name: i.name,
value: i.state.value,
onBlur: i.handleBlur,
onChange: (a) => i.handleChange(a.target.value),
"aria-invalid": a,
placeholder: "Enter name of the collection",
autoComplete: "off"
}),
a && /* @__PURE__ */ jsx(FieldError, { errors: i.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: q,
onOpenChange: aP,
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: (i) => {
i.preventDefault(), dP.handleSubmit();
},
children: /* @__PURE__ */ jsx(FieldGroup, { children: /* @__PURE__ */ jsx(dP.Field, {
name: "name",
children: (i) => {
let a = i.state.meta.isTouched && !i.state.meta.isValid;
return /* @__PURE__ */ jsxs(Field, {
"data-invalid": a,
children: [
/* @__PURE__ */ jsx(FieldLabel, {
htmlFor: i.name,
children: "Name"
}),
/* @__PURE__ */ jsx(Input, {
id: i.name,
name: i.name,
value: i.state.value,
onBlur: i.handleBlur,
onChange: (a) => i.handleChange(a.target.value),
"aria-invalid": a,
placeholder: "Enter name of the test",
autoComplete: "off"
}),
a && /* @__PURE__ */ jsx(FieldError, { errors: i.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(LaboratoryContent, {})
]
})]
})] });
}, renderLaboratory = (i, a) => {
let o = "hive-laboratory", s = (i) => {
let a = localStorage.getItem(`${o}:${i}`);
return a ? JSON.parse(a) : null;
}, c = (i, a) => {
localStorage.setItem(`${o}:${i}`, JSON.stringify(a));
};
if (!i) throw Error("Laboratory element not found");
return ReactDOM.createRoot(i).render(/* @__PURE__ */ jsx(Laboratory, {
theme: "dark",
enableDocs: !0,
defaultEndpoint: s("endpoint") ?? window.location.origin + window.location.pathname,
onEndpointChange: (i) => {
c("endpoint", i ?? "");
},
defaultCollections: s("collections") ?? [],
onCollectionsChange: (i) => {
c("collections", i);
},
defaultTabs: s("tabs") ?? [],
onTabsChange: (i) => {
c("tabs", i);
},
defaultOperations: s("operations") ?? [],
onOperationsChange: (i) => {
c("operations", i);
},
defaultActiveTabId: s("activeTabId") ?? null,
onActiveTabIdChange: (i) => {
c("activeTabId", i ?? "");
},
defaultPreflight: s("preflight") ?? null,
onPreflightChange: (i) => {
c("preflight", i ?? "");
},
defaultEnv: s("env") ?? null,
onEnvChange: (i) => {
c("env", i ?? "");
},
defaultSettings: s("settings") ?? null,
onSettingsChange: (i) => {
c("settings", i ?? "");
},
defaultHistory: s("history") ?? [],
onHistoryChange: (i) => {
c("history", i);
},
...a
}));
};
export { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, EXPECTED_ERROR_REASON, Editor, Laboratory, LaboratoryProvider, PREFLIGHT_TIMEOUT, Tabs, TabsContent, TabsList, TabsTrigger, defaultLaboratorySettings, docsTargetFromPath, isValidEnvValue, normalizeLaboratorySettings, readLineAndColumn, renderLaboratory, runIsolatedLabScript, useCollections, useDocs, useEndpoint, useEnv, useHistory, useLaboratory, useOperations, usePlugins, usePreflight, usePreflightPrompt, useSettings, useTabs, useTests };