@sentio/ui-core 0.1.1 → 0.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +51 -10
- package/dist/index.css.map +1 -1
- package/dist/index.d.mts +3 -4
- package/dist/index.d.ts +3 -4
- package/dist/index.js +175 -173
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +9 -7
- package/dist/index.mjs.map +1 -1
- package/package.json +5 -1
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/common/BarLoading.tsx","../src/common/SpinLoading.tsx","../src/common/CopyButton.tsx","../src/common/NewButton.tsx","../src/common/DivTooltip.tsx","../src/common/dialog/BaseDialog.tsx","../src/common/DisclosurePanel.tsx","../src/common/Collapse.tsx","../src/utils/use-boolean.ts","../src/common/Input.tsx","../src/common/select/Radio.tsx","../src/utils/classnames.ts","../src/common/select/Switch.tsx","../src/common/select/Select.tsx","../src/common/tree/FlatTree.tsx","../src/common/tree/Tree.tsx","../src/common/tree/TreeIcons.tsx","../src/common/text/LinkifyText.tsx","../src/common/Empty.tsx","../src/utils/extension-context.ts","../src/common/badge/StatusBadge.tsx","../src/common/HeaderToolsDropdown.tsx","../src/common/table/ResizeTable.tsx","../src/common/menu/PopupMenuButton.tsx","../src/common/menu/SubMenu.tsx","../src/utils/nav-size-context.ts","../src/common/table/Icons.tsx","../src/utils/number-format.ts","../src/utils/use-mobile.ts"],"sourcesContent":["import { BarLoader } from 'react-spinners'\nimport { LoaderHeightWidthProps } from 'react-spinners/helpers/props'\nimport { memo } from 'react'\nimport { cx as classNames } from 'class-variance-authority'\n\ninterface Props {\n hint?: React.ReactNode\n loading?: boolean\n className?: string\n iconClassName?: string\n width?: LoaderHeightWidthProps['width']\n gray?: boolean\n}\n\nfunction _BarLoading({\n hint = 'Loading Sentio',\n loading = true,\n className,\n iconClassName,\n width = 150,\n gray\n}: Props) {\n if (loading) {\n return (\n <div\n className={classNames(\n 'loading-container flex h-full flex-col justify-center overflow-hidden',\n className\n )}\n >\n {hint && (\n <div className=\"loading-text text-icontent text-gray my-2 text-center font-medium\">\n {hint}\n </div>\n )}\n <div className=\"flex justify-center pt-1\">\n <BarLoader\n color=\"#0756D5\"\n loading={true}\n height={5}\n width={width}\n cssOverride={{\n borderRadius: '4px'\n }}\n />\n </div>\n </div>\n )\n }\n return null\n}\n\nexport const BarLoading = memo(_BarLoading)\n\nexport default BarLoading\n","import React from 'react'\nimport { ClipLoader } from 'react-spinners'\nimport { cx as classNames } from 'class-variance-authority'\n\ninterface Props {\n loading?: boolean\n children?: React.ReactNode\n className?: string\n size?: number\n showMask?: boolean\n maskOpacity?: number // 0-100\n}\n\nexport const SpinLoading = function Spinner(args: Props) {\n const {\n loading = false,\n children,\n className,\n size = 48,\n showMask,\n maskOpacity = 80\n } = args\n return (\n <div className={classNames('relative', className)}>\n {showMask && loading && (\n <div\n className={classNames(\n 'absolute bottom-0 left-0 right-0 top-0 z-[1]',\n maskOpacity\n ? `bg-white dark:bg-sentio-gray-100/${maskOpacity}`\n : 'dark:bg-sentio-gray-100 bg-white'\n )}\n ></div>\n )}\n <div className=\"absolute left-[50%] top-[50%] z-[1] -translate-y-6\">\n <ClipLoader\n loading={loading}\n color=\"#3B82F6\"\n size={size}\n cssOverride={{\n borderWidth: 3\n }}\n />\n </div>\n {children}\n </div>\n )\n}\n\nexport default SpinLoading\n","'use client'\n\nimport {\n type CSSProperties,\n type FC,\n type ReactNode,\n useState,\n useCallback,\n useRef,\n type SVGProps,\n useEffect\n} from 'react'\nimport copy from 'copy-to-clipboard'\nimport { cx as classNames } from 'class-variance-authority'\n\nexport const CopyIcon = (props: SVGProps<SVGSVGElement>) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n strokeWidth=\"2\"\n stroke=\"currentColor\"\n {...props}\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M16.5 8.25V6a2.25 2.25 0 0 0-2.25-2.25H6A2.25 2.25 0 0 0 3.75 6v8.25A2.25 2.25 0 0 0 6 16.5h2.25m8.25-8.25H18a2.25 2.25 0 0 1 2.25 2.25V18A2.25 2.25 0 0 1 18 20.25h-7.5A2.25 2.25 0 0 1 8.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 0 0-2.25 2.25v6\"\n />\n </svg>\n)\n\nexport const CopySuccessIcon = (props: SVGProps<SVGSVGElement>) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"rgb(var(--cyan-600))\"\n {...props}\n >\n <path\n fillRule=\"evenodd\"\n d=\"M2.25 12c0-5.385 4.365-9.75 9.75-9.75s9.75 4.365 9.75 9.75-4.365 9.75-9.75 9.75S2.25 17.385 2.25 12Zm13.36-1.814a.75.75 0 1 0-1.22-.872l-3.236 4.53L9.53 12.22a.75.75 0 0 0-1.06 1.06l2.25 2.25a.75.75 0 0 0 1.14-.094l3.75-5.25Z\"\n clipRule=\"evenodd\"\n />\n </svg>\n)\n\ninterface Props {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\n text?: string | Function\n size?: number\n ml?: number\n mr?: number\n hover?: boolean\n placement?: 'left' | 'right'\n className?: string\n children?: ReactNode\n}\n\nexport const CopyButton: FC<Props> = ({\n text = '',\n size = 16,\n ml,\n mr,\n placement = 'right',\n hover,\n children,\n className\n}) => {\n const [copied, setCopied] = useState(false)\n const [isHovered, setIsHovered] = useState(false)\n const [isMobile, setIsMobile] = useState(false)\n const timeoutRef = useRef<NodeJS.Timeout | null>(null)\n const iconContainerRef = useRef<HTMLDivElement>(null)\n\n useEffect(() => {\n const checkMobile = () => {\n setIsMobile(window.innerWidth < 640)\n }\n checkMobile()\n window.addEventListener('resize', checkMobile)\n return () => window.removeEventListener('resize', checkMobile)\n }, [])\n\n const copyToClipboard = useCallback((val: string) => {\n copy(val)\n setCopied(true)\n\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current)\n }\n\n timeoutRef.current = setTimeout(() => {\n setCopied(false)\n timeoutRef.current = null\n }, 2000)\n }, [])\n\n const onCopy = useCallback(\n (e: React.MouseEvent<HTMLElement, MouseEvent>) => {\n const target = e.target as HTMLElement\n if (\n target.nodeName.toLowerCase() === 'a' &&\n target.getAttribute('href')\n ) {\n return\n }\n e.stopPropagation()\n e.preventDefault()\n if (copied) return\n if (typeof text === 'function') {\n const val = text() as string | Promise<string>\n if (val instanceof Promise) {\n val\n .then((res: string) => {\n copyToClipboard(res)\n })\n .catch((error) => {\n console.error(error)\n })\n } else {\n copyToClipboard(val)\n }\n } else {\n copyToClipboard(text)\n }\n },\n [copied, text, copyToClipboard]\n )\n\n const handleEventProxy = useCallback(\n (e: React.MouseEvent<HTMLElement, MouseEvent>) => {\n if (children) {\n onCopy(e)\n }\n },\n [children, onCopy]\n )\n\n const isPureComponent = !children\n\n const iconContainerStyle: CSSProperties = {\n minWidth: `${size}px`,\n maxWidth: `${size}px`,\n minHeight: `${size}px`,\n maxHeight: `${size}px`,\n marginLeft: ml !== undefined ? `${ml}px` : undefined,\n marginRight: mr !== undefined ? `${mr}px` : undefined,\n visibility:\n !isPureComponent && hover\n ? isMobile\n ? 'visible'\n : isHovered\n ? 'visible'\n : 'hidden'\n : 'visible'\n }\n\n const containerStyle: CSSProperties = {\n display: !isPureComponent ? 'inline-block' : 'contents'\n }\n\n const svgStyle: CSSProperties = {\n margin: 0\n }\n\n const iconCopyStyle: CSSProperties = {\n transform: copied ? 'translateY(-100%)' : 'translateY(0)'\n }\n\n const iconSuccessStyle: CSSProperties = {\n transform: copied ? 'translateY(-100%)' : 'translateY(100%)'\n }\n\n return (\n <div\n className={classNames(\n 'inline-block min-w-fit overflow-hidden whitespace-nowrap',\n 'space-x-1',\n className\n )}\n style={containerStyle}\n onClick={handleEventProxy}\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n >\n {placement === 'right' && children}\n <div\n ref={iconContainerRef}\n className={classNames(\n 'icon-container inline-block overflow-hidden align-sub',\n isPureComponent ? className : '',\n copied ? 'copied' : ''\n )}\n style={iconContainerStyle}\n >\n <CopyIcon\n className=\"icon-copy block cursor-pointer transition-all\"\n width={size}\n height={size}\n style={{ ...svgStyle, ...iconCopyStyle }}\n // @ts-expect-error allow unknown prop\n onClick={onCopy}\n />\n <CopySuccessIcon\n className=\"icon-success block transition-all\"\n width={size}\n height={size}\n style={{ ...svgStyle, ...iconSuccessStyle }}\n />\n </div>\n {placement === 'left' && children}\n </div>\n )\n}\n","import { cloneElement, forwardRef, MutableRefObject, ReactNode, useMemo } from 'react'\nimport { PopoverTooltip } from './DivTooltip'\nimport { cva, cx, VariantProps } from 'class-variance-authority'\n\nexport const buttonClass = cva(['inline-flex', 'items-center', 'font-medium'], {\n variants: {\n role: {\n primary: ['btn-primary'],\n secondary: ['btn-secondary'],\n dashed: ['btn-dashed'],\n text: ['btn-text'],\n link: ['btn-link'],\n tertiary: [],\n tertiarytext: [],\n custom: [] // custom button\n },\n status: {\n default: 'btn-status-default',\n danger: 'btn-status-danger'\n },\n size: {\n sm: ['px-2', 'py-1.5', 'text-xs', 'font-normal', 'gap-2'],\n default: ['px-2.5', 'text-ilabel', 'font-ilabel', 'gap-2', 'py-1'],\n md: ['px-2.5 text-ilabel font-ilabel gap-2', 'py-1.5'],\n lg: ['px-3 text-sm gap-3', 'py-2']\n },\n disabled: {\n false: [''],\n true: ['btn-disabled']\n },\n position: {\n begin: ['rounded-l-md'],\n end: ['rounded-r-md'],\n middle: [''],\n full: ['rounded-md']\n }\n },\n compoundVariants: [\n {\n role: 'secondary',\n size: 'default',\n class: 'py-[3px]'\n },\n {\n role: 'dashed',\n size: 'default',\n class: 'py-[3px]'\n },\n {\n role: 'secondary',\n size: 'md',\n class: 'py-[5px]'\n },\n {\n role: 'dashed',\n size: 'md',\n class: 'py-[5px]'\n },\n {\n role: 'secondary',\n size: 'lg',\n class: 'py-[7px]'\n },\n {\n role: 'dashed',\n size: 'lg',\n class: 'py-[7px]'\n },\n {\n role: 'tertiary',\n disabled: false,\n class: [\n 'bg-primary-100 dark:bg-gray-100',\n 'hover:bg-primary-100/90 dark:hover:bg-gray-200/90',\n 'active:bg-primary-200 dark:active:bg-gray-300',\n 'text-primary-600 dark:text-gray-600',\n 'hover:text-primary-500 dark:hover:text-gray-700',\n 'active:text-primary-700 dark:active:text-gray-800',\n 'focus:ring-primary-700 dark:focus:ring-gray-800'\n ]\n },\n {\n role: 'tertiary',\n disabled: true,\n class: 'cursor-not-allowed bg-gray-100 text-gray-400'\n },\n {\n role: 'tertiarytext',\n disabled: false,\n class: [\n 'hover:bg-primary-100/90 dark:hover:bg-gray-200/90',\n 'active:bg-primary-200 dark:active:bg-gray-300',\n 'text-primary-600 dark:text-gray-600',\n 'hover:text-primary-500 dark:hover:text-gray-700',\n 'active:text-primary-700 dark:active:text-gray-800',\n 'focus:ring-primary-700 dark:focus:ring-gray-800'\n ]\n },\n {\n role: 'tertiarytext',\n disabled: true,\n class: 'cursor-not-allowed text-gray-400'\n }\n ],\n defaultVariants: {\n role: 'secondary',\n status: 'default',\n size: 'default',\n position: 'full',\n disabled: false\n }\n})\n\nexport interface ButtonProps extends VariantProps<typeof buttonClass> {\n className?: string\n // role?: 'primary' | 'secondary' | 'dashed' | 'text' | 'link'\n // status?: 'default' | 'danger'\n onClick?: (evt: React.MouseEvent) => void\n children?: ReactNode\n // size?: 'md' | 'lg'\n type?: 'submit' | 'button' | 'reset'\n processing?: boolean\n // disabled?: boolean\n disabledHint?: React.ReactNode\n disabledHintPortal?: boolean\n // position?: 'begin' | 'end' | 'middle' | 'full'\n ref?: MutableRefObject<any>\n icon?: React.ReactElement\n title?: string\n value?: string\n id?: string\n}\n\nexport function Proccessing({ className, light }: { className?: string; light?: boolean }) {\n return (\n <svg className={`h-5 w-5 animate-spin ${className}`} viewBox=\"0 0 24 24\">\n <circle\n className={light ? 'opacity-5' : 'opacity-10'}\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"currentColor\"\n strokeWidth=\"4\"\n ></circle>\n <path\n className={light ? 'opacity-50' : 'opacity-75'}\n fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"\n ></path>\n </svg>\n )\n}\n\nconst iconClass = cva('', {\n variants: {\n size: {\n default: 'w-4 h-4',\n md: 'w-[18px] h-[18px]',\n lg: 'w-5 h-4',\n sm: 'w-4 h-4'\n },\n disabled: {\n true: 'saturate-0',\n false: ''\n }\n },\n defaultVariants: {\n size: 'default',\n disabled: false\n }\n})\n\nconst pIconClass = cva('', {\n variants: {\n size: {\n default: '!w-4 !h-4',\n md: '!w-[18px] !h-[18px]',\n lg: '!w-5 !h-5',\n sm: '!w-4 !h-4'\n }\n },\n defaultVariants: {\n size: 'default'\n }\n})\n\nfunction Button(\n {\n className,\n size,\n type,\n role,\n status,\n onClick,\n children,\n processing,\n disabled,\n disabledHint,\n disabledHintPortal,\n position,\n icon,\n title,\n value,\n id\n }: ButtonProps,\n ref: any\n) {\n const iconClasses = iconClass({ size: size, disabled: disabled })\n\n const iconEl = useMemo(() => {\n let iconEl: ReactNode = null\n\n if (processing) {\n iconEl = (\n <Proccessing\n className={cx(pIconClass({ size: size }), role == 'primary' ? 'text-white' : '')}\n light={role !== 'primary'}\n />\n )\n } else if (icon) {\n iconEl = cloneElement(icon, { className: cx(icon.props.className, iconClasses) })\n }\n return iconEl\n }, [icon, iconClasses, processing, role])\n\n // const cls = classNames(className, sizeClasses, typeClasses, shapeClasses)\n const cls = cx(\n className,\n buttonClass({\n size: size,\n status: status,\n role: role,\n disabled: disabled,\n position: position\n })\n )\n\n const btn = (\n <button\n title={title}\n onClick={onClick}\n type={type}\n disabled={disabled || processing}\n className={cls}\n ref={ref}\n value={value}\n suppressHydrationWarning\n id={id}\n >\n {iconEl}\n {children}\n </button>\n )\n\n if (disabled && disabledHint) {\n return (\n <PopoverTooltip\n usePortal={disabledHintPortal}\n buttonClassName={disabledHintPortal ? 'w-full' : ''}\n className=\"text-gray\"\n text={<p className=\"text-sm text-gray-500\">{disabledHint}</p>}\n hideArrow\n >\n {btn}\n </PopoverTooltip>\n )\n }\n\n return btn\n}\n\nexport const NewButton = forwardRef(Button)\nexport default NewButton\n","/**\n * The differece between this and the PopoverTooltip.tsx is that this one pass mouse click event to the parent\n */\nimport React, { type FC, useRef, useState, useEffect } from 'react'\nimport {\n useFloating,\n useHover,\n useInteractions,\n safePolygon,\n arrow,\n offset,\n shift,\n Strategy,\n flip,\n autoUpdate,\n FloatingPortal,\n useDelayGroup\n} from '@floating-ui/react'\nimport { OffsetOptions, Placement } from '@floating-ui/core'\nimport { cx as classNames } from 'class-variance-authority'\nimport { isString } from 'lodash'\n\ninterface Props {\n text?: string | React.ReactNode\n className?: string\n buttonClassName?: string\n activeButtonClassName?: string\n icon?: React.ReactNode\n children?: React.ReactNode\n strategy?: Strategy\n hideArrow?: boolean\n offsetOptions?: OffsetOptions\n placementOption?: Placement\n maxWidth?: string\n usePortal?: boolean\n enableFadeAnimation?: boolean\n animationDuration?: number\n}\n\nexport const PopoverTooltip: FC<Props> = ({\n icon,\n text,\n className,\n buttonClassName,\n activeButtonClassName,\n children,\n strategy: propStrategy,\n hideArrow,\n offsetOptions = 8,\n placementOption = 'bottom',\n maxWidth = 'max-w-[300px]',\n usePortal = false,\n enableFadeAnimation = false,\n animationDuration = 150\n}) => {\n const arrowRef = useRef(null)\n const [open, setOpen] = useState(false)\n const [isVisible, setIsVisible] = useState(false)\n const timeoutRef = useRef<NodeJS.Timeout>()\n\n const {\n x,\n y,\n refs,\n strategy,\n middlewareData: { arrow: { x: arrowX, y: arrowY } = {} },\n context,\n placement\n } = useFloating({\n open,\n onOpenChange: (newOpen) => {\n setOpen(newOpen)\n if (enableFadeAnimation) {\n if (newOpen) {\n setIsVisible(true)\n } else {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current)\n }\n timeoutRef.current = setTimeout(() => {\n setIsVisible(false)\n }, animationDuration)\n }\n } else {\n setIsVisible(newOpen)\n }\n },\n middleware: [\n offset(offsetOptions),\n flip(),\n shift(),\n arrow({ element: arrowRef, padding: 8 })\n ],\n strategy: propStrategy,\n placement: placementOption,\n whileElementsMounted: autoUpdate\n })\n\n const {\n delay = {\n open: 500,\n close: 0\n }\n } = useDelayGroup(context)\n\n const { getReferenceProps, getFloatingProps } = useInteractions([\n useHover(context, {\n handleClose: safePolygon({\n buffer: -Infinity\n }),\n delay: delay\n })\n ])\n\n useEffect(() => {\n return () => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current)\n }\n }\n }, [])\n\n if (!text)\n return (\n <>\n {icon}\n {children}\n </>\n )\n\n const Portal = usePortal ? FloatingPortal : React.Fragment\n\n return (\n <div className={classNames('relative flex items-center', className)}>\n <div\n ref={refs.setReference}\n {...getReferenceProps()}\n className={classNames(buttonClassName, open && activeButtonClassName)}\n >\n {icon}\n {children}\n </div>\n\n {(enableFadeAnimation ? isVisible : open) && (\n <Portal>\n <div className=\"_sentio_\">\n <div\n className={classNames(\n 'sentio-tooltip dark:bg-sentio-gray-200 z-10 rounded-md bg-white p-2 text-xs shadow-lg ring-1 ring-black ring-opacity-5 dark:ring-gray-100',\n enableFadeAnimation &&\n `transition-opacity duration-[${animationDuration}ms] ease-in-out`,\n enableFadeAnimation ? (open ? 'opacity-100' : 'opacity-0') : ''\n )}\n ref={refs.setFloating}\n style={{\n position: strategy,\n top: y ?? 0,\n left: x ?? 0\n }}\n {...getFloatingProps}\n >\n {!hideArrow && placement === 'bottom' && (\n <div\n className=\"arrow dark:before:bg-sentio-gray-200 -translate-y-[5px] before:absolute before:h-2 before:w-2 before:rotate-45 before:border-l before:border-t before:border-black/5 before:bg-white dark:before:border-gray-100\"\n ref={arrowRef}\n style={{\n left: arrowX ?? 0,\n top: arrowY ?? 0,\n position: 'absolute'\n }}\n />\n )}\n {isString(text) ? (\n <p\n className={classNames('w-max whitespace-pre-wrap', maxWidth)}\n >\n {text}\n </p>\n ) : (\n <div className={classNames('w-max overflow-auto', maxWidth)}>\n {text}\n </div>\n )}\n </div>\n </div>\n </Portal>\n )}\n </div>\n )\n}\n","import {\n type ReactElement,\n type FC,\n Fragment,\n memo,\n createContext\n} from 'react'\nimport { Dialog, Transition } from '@headlessui/react'\nimport Button, { ButtonProps } from '../NewButton'\nimport { cx as classNames } from 'class-variance-authority'\n\nexport const BaseZIndexContext = createContext(10)\n\ninterface Props {\n title?: string | ReactElement\n titleBorder?: boolean\n footerBorder?: boolean\n children?: ReactElement\n open: boolean\n onClose: () => void\n cancelText?: string\n cancelProps?: ButtonProps\n onCancel?: () => void\n okText?: string\n okProps?: ButtonProps\n onOk?: () => void\n buttonsClassName?: string\n extraButtons?: ReactElement | ReactElement[]\n panelClassName?: string\n initialFocus?: React.MutableRefObject<HTMLElement | null> | undefined\n errorMessages?: string\n footer?: ReactElement // customize whole footer\n zIndex?: number\n mask?: 'normal' | 'light'\n}\n\nconst _BaseDialog: FC<Props> = ({\n title,\n open,\n onClose,\n onCancel,\n cancelText,\n cancelProps = {},\n onOk,\n okText,\n okProps = {},\n children,\n buttonsClassName,\n panelClassName,\n titleBorder = true,\n footerBorder = true,\n initialFocus,\n extraButtons,\n errorMessages,\n footer,\n zIndex = 10,\n mask = 'normal'\n}) => {\n return (\n <Transition appear as={Fragment} show={open}>\n <Dialog\n className={classNames('relative', '_sentio_')}\n as=\"div\"\n onClose={onClose}\n initialFocus={initialFocus}\n style={{\n zIndex: zIndex\n }}\n >\n <BaseZIndexContext.Provider value={zIndex}>\n <Transition.Child\n as={Fragment}\n enter=\"ease-out duration-300\"\n enterFrom=\"opacity-0\"\n enterTo=\"opacity-100\"\n leave=\"ease-in duration-200\"\n leaveFrom=\"opacity-100\"\n leaveTo=\"opacity-0\"\n >\n <div\n className={classNames(\n 'fixed inset-0 transition-opacity',\n mask === 'light'\n ? 'bg-gray-500/30 dark:bg-gray-200/30'\n : 'bg-gray-500/75 dark:bg-gray-200/50'\n )}\n />\n </Transition.Child>\n <div className=\"fixed inset-0 z-10 overflow-y-auto\">\n <div className=\"flex min-h-full items-end justify-center p-4 text-center sm:items-center sm:p-0\">\n <Transition.Child\n as={Fragment}\n enter=\"ease-out duration-300\"\n enterFrom=\"opacity-0 translate-y-4 sm:translate-y-0 sm:scale-95\"\n enterTo=\"opacity-100 translate-y-0 sm:scale-100\"\n leave=\"ease-in duration-200\"\n leaveFrom=\"opacity-100 translate-y-0 sm:scale-100\"\n leaveTo=\"opacity-0 translate-y-4 sm:translate-y-0 sm:scale-95\"\n >\n <Dialog.Panel\n data-testid=\"create-dashboard\"\n className={classNames(\n 'dark:bg-sidebar relative transform overflow-hidden rounded-lg bg-white pb-4 pt-5 text-left shadow-xl transition-all sm:my-8 sm:w-full sm:max-w-3xl',\n panelClassName\n )}\n >\n {title ? (\n <Dialog.Title\n as=\"h3\"\n className={classNames(\n 'text-ilabel font-ilabel text-text-foreground pl-4',\n titleBorder && 'border-border-color border-b pb-4'\n )}\n >\n {title}\n </Dialog.Title>\n ) : null}\n {children}\n {footer ? (\n footer\n ) : (\n <div\n className={classNames(\n 'flex items-center justify-between pt-4 ',\n footerBorder && 'border-border-color border-t'\n )}\n >\n <div\n className=\"truncate px-4 text-sm font-semibold text-red-500\"\n title={errorMessages || ''}\n >\n {errorMessages || ' '}\n </div>\n <div\n className={classNames(\n `flex flex-row-reverse items-center gap-3 px-4`,\n buttonsClassName ?? ''\n )}\n >\n {extraButtons}\n {onOk && (\n <Button role=\"primary\" onClick={onOk} {...okProps}>\n {okText || 'OK'}\n </Button>\n )}\n {onCancel && (\n <Button onClick={onCancel} {...cancelProps}>\n {cancelText || 'Cancel'}\n </Button>\n )}\n </div>\n </div>\n )}\n </Dialog.Panel>\n </Transition.Child>\n </div>\n </div>\n </BaseZIndexContext.Provider>\n </Dialog>\n </Transition>\n )\n}\n\nexport const BaseDialog = memo(_BaseDialog)\n","import { type ReactNode, type FC, useState, useCallback } from 'react'\nimport { cx as classNames } from 'class-variance-authority'\nimport isFunction from 'lodash/isFunction'\nimport { LuChevronRight } from 'react-icons/lu'\n\ninterface Props {\n defaultOpen?: boolean\n children?: ReactNode\n title: string | ReactNode | ((open: boolean) => ReactNode)\n titleClassName?: string\n containerClassName?: string\n iconClassName?: string\n className?: string\n}\n\nexport const DisclosurePanel: FC<Props> = ({\n title,\n children,\n defaultOpen,\n className,\n containerClassName,\n iconClassName = 'h-5 w-5',\n titleClassName\n}) => {\n const [open, setOpen] = useState(defaultOpen || false)\n\n const toggle = useCallback(() => {\n setOpen((prev) => !prev)\n }, [])\n\n return (\n <div\n className={\n containerClassName ||\n 'dark:bg-sentio-gray-200 w-full rounded bg-[#F6F8FA]'\n }\n >\n <button\n className={classNames(\n open ? 'rounded-t' : 'rounded',\n 'focus-visible:ring-primary-500 text-ilabel font-ilabel text-text-foreground hover:bg-sentio-gray-100 dark:hover:bg-sentio-gray-400 flex w-full px-2 py-1.5 text-left focus:outline-none focus-visible:ring focus-visible:ring-opacity-75',\n titleClassName\n )}\n onClick={toggle}\n >\n <LuChevronRight\n className={classNames(\n open ? 'rotate-90 transform' : '',\n 'mr-1 self-center transition-all',\n iconClassName\n )}\n />\n {isFunction(title) ? title(open) : title}\n </button>\n {open && <div className={classNames('p-2', className)}>{children}</div>}\n </div>\n )\n}\n","import { ChevronDownIcon } from '@heroicons/react/20/solid'\nimport { cx as classNames } from 'class-variance-authority'\nimport { useBoolean } from '../utils/use-boolean'\nimport { type ReactNode, type FC, useEffect } from 'react'\n\ninterface CollapseProps {\n title: ReactNode | string\n children?: ReactNode\n className?: string\n titleClassName?: string\n defaultOpen?: boolean\n iconClassName?: string\n}\n\nexport const Collapse: FC<CollapseProps> = ({\n title,\n children,\n className,\n titleClassName,\n defaultOpen = false,\n iconClassName = 'h-5 w-5'\n}) => {\n const { toggle, value: visible, setTrue, setFalse } = useBoolean(defaultOpen)\n\n useEffect(() => {\n if (defaultOpen) {\n setTrue()\n } else {\n setFalse()\n }\n }, [defaultOpen, setTrue, setFalse])\n\n return (\n <div className={classNames('space-y-2', className)}>\n <span\n className={classNames(\n 'text-gray hover:text-primary active:text-primary-700 inline-flex cursor-pointer items-center gap-2',\n titleClassName\n )}\n onClick={toggle}\n >\n {title}\n <ChevronDownIcon\n className={classNames(\n 'transition',\n iconClassName,\n visible ? 'rotate-180' : ''\n )}\n />\n </span>\n <div\n className={classNames(\n 'overflow-hidden transition-all duration-200',\n visible ? 'opacity-100' : 'opacity-0'\n )}\n style={{\n maxHeight: visible ? '2000px' : '0px'\n }}\n >\n {children}\n </div>\n </div>\n )\n}\n","import { useCallback, useState } from 'react'\n\nexport function useBoolean(defaultValue = false) {\n const [value, setValue] = useState(defaultValue)\n\n const setTrue = useCallback(() => setValue(true), [])\n const setFalse = useCallback(() => setValue(false), [])\n const toggle = useCallback(() => setValue((v) => !v), [])\n\n return {\n value,\n setValue,\n setTrue,\n setFalse,\n toggle\n }\n}\n","import { cva, cx } from 'class-variance-authority'\nimport { ExclamationCircleIcon } from '@heroicons/react/20/solid'\nimport { forwardRef } from 'react'\nimport { FieldError, UseFormRegisterReturn } from 'react-hook-form'\n\nconst inputContainerStyles = cva(\n 'flex relative rounded-md border focus-within:ring-1 w-full font-normal overflow-hidden',\n {\n variants: {\n size: {\n sm: 'text-sm h-6',\n md: 'text-base h-8',\n lg: 'text-lg h-10'\n },\n error: {\n true: 'border-red-300 text-red-900 placeholder:text-red-300 focus-within:ring-red-500',\n false:\n 'border-gray-300 focus-within:ring-primary-500 focus-within:border-primary-500'\n },\n readOnly: {\n true: 'bg-gray-50 text-gray-400',\n false: 'text-text-foreground'\n }\n },\n defaultVariants: {\n size: 'md',\n error: false,\n readOnly: false\n },\n compoundVariants: []\n }\n)\n\nconst inputStyles = cva(\n [\n 'block',\n 'w-full',\n 'placeholder:text-ilabel placeholder:font-normal',\n 'border-none focus:ring-0',\n 'focus:outline-none'\n ],\n {\n variants: {\n size: {\n sm: 'sm:text-xs placeholder:text-xs placeholder:font-normal pl-2 pr-6',\n md: 'sm:text-ilabel placeholder:text-ilabel placeholder:font-normal pl-2 pr-10',\n lg: 'sm:text-lg placeholder:text-lg placeholder:font-normal pl-3 pr-10'\n },\n error: {\n true: 'border-red-300',\n false: 'border-gray-300 '\n }\n },\n defaultVariants: {\n size: 'md',\n error: false\n }\n }\n)\n\nconst iconStyles = cva('text-red-500', {\n variants: {\n size: {\n sm: 'h-4 w-4',\n md: 'h-5 w-5',\n lg: 'h-6 w-6'\n }\n },\n defaultVariants: {\n size: 'md'\n }\n})\n\ntype InputProps = UseFormRegisterReturn & {\n error?: FieldError\n errorClassName?: string\n size?: 'sm' | 'md' | 'lg'\n className?: string\n value?: string\n placeholder?: string\n} & React.InputHTMLAttributes<HTMLInputElement>\n\nexport const Input = forwardRef<HTMLInputElement, InputProps>(\n function Input(props, inputRef) {\n const { className, error, errorClassName, size, ...rest } = props\n\n const containerClassName = inputContainerStyles({\n size,\n error: !!error,\n readOnly: rest.disabled\n })\n const inputClassName = cx(inputStyles({ size, error: !!error }), className)\n\n return (\n <div>\n <div className={containerClassName}>\n <input {...rest} ref={inputRef} className={inputClassName} />\n {error && (\n <div className=\"pointer-events-none absolute inset-y-0 right-0 flex items-center pr-3\">\n <ExclamationCircleIcon className={iconStyles({ size })} />\n </div>\n )}\n </div>\n {error && (\n <p className=\"mt-2 text-xs text-red-600\">\n {typeof error == 'string' ? error : error.message}\n </p>\n )}\n </div>\n )\n }\n)\n","import { RadioGroup } from '@headlessui/react'\nimport { classNames } from '../../utils/classnames'\n\ninterface Props<T> {\n value?: T\n onChange?: (v: T) => void\n label?: string\n labelClassName?: string\n containerClassName?: string\n options: {\n name: string\n value: T\n }[]\n vertical?: boolean\n}\n\nexport function RadioSelect<T>({\n value,\n onChange,\n label,\n labelClassName,\n options,\n vertical,\n containerClassName\n}: Props<T>) {\n return (\n <RadioGroup value={value} onChange={onChange}>\n {label && (\n <RadioGroup.Label className=\"text-ilabel text-text-foreground mr-4 font-medium\">\n {label}:\n </RadioGroup.Label>\n )}\n <div\n className={classNames(\n 'item-center',\n vertical ? 'flex flex-col gap-2' : 'inline-flex gap-4',\n containerClassName\n )}\n >\n {options.map(({ name, value }, index) => (\n <RadioGroup.Option key={index} value={value}>\n {({ checked }) => (\n <span className=\"group/radio\">\n <input\n readOnly\n type=\"radio\"\n checked={checked}\n className=\"border-sentio-gray-300 group-hover/radio:border-primary-500\"\n />\n <label\n className={classNames(\n 'text-ilabel group-hover/radio:text-primary-500 group-hover/radio:dark:text-primary-600 ml-2 font-medium ',\n checked\n ? 'text-primary dark:text-primary-700'\n : 'text-gray',\n labelClassName\n )}\n >\n {name}\n </label>\n </span>\n )}\n </RadioGroup.Option>\n ))}\n </div>\n </RadioGroup>\n )\n}\n","export { cx as classNames } from 'class-variance-authority'\n","import { useCallback, useEffect, useState } from 'react'\nimport { Switch as HeadlessSwitch } from '@headlessui/react'\nimport { cva } from 'class-variance-authority'\nimport { isFunction } from 'lodash'\n\nconst switchClass = cva(\n [\n 'relative inline-flex shrink-0 rounded-full border-2 border-transparent transition-colors duration-200 ease-in-out focus:outline-none focus-visible:ring-2 focus-visible:ring-white focus-visible:ring-opacity-75'\n ],\n {\n variants: {\n size: {\n lg: 'h-8 w-[68px]',\n default: 'h-6 w-[52px]',\n sm: 'h-[16px] w-[30px]'\n },\n enabled: {\n true: 'bg-primary group-hover:bg-primary-500',\n false: 'bg-gray-400/50 group-hover:bg-primary-200'\n },\n disabled: {\n true: 'cursor-not-allowed opacity-50',\n false: 'cursor-pointer'\n }\n },\n defaultVariants: {\n size: 'default',\n enabled: false\n },\n compoundVariants: [\n {\n enabled: false,\n disabled: true,\n class: '!bg-gray-400/50'\n }\n ]\n }\n)\n\nconst dotClass = cva(\n 'pointer-events-none inline-block transform rounded-full bg-white dark:bg-sentio-gray-100 shadow-lg ring-0 transition duration-200 ease-in-out',\n {\n variants: {\n size: {\n lg: 'h-7 w-7',\n default: 'h-5 w-5',\n sm: 'h-3 w-3'\n },\n enabled: {\n true: '',\n false: 'translate-x-0'\n }\n },\n defaultVariants: {\n size: 'default'\n },\n compoundVariants: [\n {\n size: 'sm',\n enabled: true,\n class: 'translate-x-3.5 switch-dot-sm'\n },\n {\n size: 'default',\n enabled: true,\n class: 'translate-x-7'\n },\n {\n size: 'lg',\n enabled: true,\n class: 'translate-x-9'\n }\n ]\n }\n)\n\nconst labelClass = cva(\n 'text-text-foreground ml-2 font-medium align-text-bottom',\n {\n variants: {\n size: {\n lg: 'text-sm leading-8',\n default: 'text-icontent leading-6 ',\n sm: 'text-icontent leading-5'\n },\n disabled: {\n true: 'cursor-not-allowed opacity-50',\n false: 'cursor-pointer'\n }\n },\n defaultVariants: {\n size: 'default',\n disabled: false\n }\n }\n)\n\nexport interface SwitchProps {\n checked?: boolean\n onChange?: (checked: boolean) => void\n srText?: string\n size?: 'lg' | 'default' | 'sm'\n disabled?: boolean\n label?: string\n}\n\nexport function Switch({\n checked,\n onChange: _onChange,\n srText,\n size = 'default',\n disabled,\n label\n}: SwitchProps) {\n const [enabled, setState] = useState(checked)\n\n const onChange = useCallback(() => {\n setState((enabled) => {\n if (isFunction(_onChange)) {\n setTimeout(() => {\n _onChange(!enabled)\n })\n }\n return !enabled\n })\n }, [_onChange])\n\n useEffect(() => {\n setState(checked)\n }, [checked])\n\n return (\n <HeadlessSwitch.Group>\n <HeadlessSwitch\n checked={enabled}\n onChange={onChange || setState}\n className={switchClass({\n enabled,\n size,\n disabled\n })}\n disabled={disabled}\n >\n {srText && <span className=\"sr-only\">{srText}</span>}\n <span\n aria-hidden=\"true\"\n className={dotClass({\n enabled,\n size\n })}\n />\n </HeadlessSwitch>\n {label && (\n <HeadlessSwitch.Label\n className={labelClass({\n size,\n disabled\n })}\n >\n {label}\n </HeadlessSwitch.Label>\n )}\n </HeadlessSwitch.Group>\n )\n}\n","import { Listbox } from '@headlessui/react'\nimport { CheckIcon, ChevronDownIcon } from '@heroicons/react/20/solid'\nimport { classNames } from '../../utils/classnames'\nimport { isEqual } from 'lodash'\nimport { cva } from 'class-variance-authority'\nimport {\n ReactElement,\n ReactNode,\n useMemo,\n useRef,\n useState,\n useContext,\n Key\n} from 'react'\nimport isFunction from 'lodash/isFunction'\nimport { FieldError } from 'react-hook-form'\nimport { ClipLoader } from 'react-spinners'\nimport { useLayer } from 'react-laag'\nimport { useResizeDetector } from 'react-resize-detector'\nimport { BaseZIndexContext } from '../dialog/BaseDialog'\n\nconst buttonClass = cva(\n [\n 'focus:ring-primary focus:border-primary',\n 'relative w-full rounded-md border bg-white dark:bg-sentio-gray-100 text-left focus:outline-none focus:ring-1 text-ilabel'\n ],\n {\n variants: {\n open: {\n true: 'bg-sentio-gray-100 ring-1 ring-primary border-primary',\n false: ''\n },\n size: {\n sm: 'py-1 px-2',\n md: 'py-2 px-3'\n },\n error: {\n true: 'border-red-300 text-red-900 placeholder-red-300 focus-within:ring-red-500',\n false: 'border-border-color'\n },\n disabled: {\n true: 'cursor-not-allowed',\n false: 'cursor-default'\n }\n },\n defaultVariants: {\n open: false,\n size: 'sm',\n error: false,\n disabled: false\n },\n compoundVariants: [\n {\n open: true,\n error: true,\n class: '!ring-red-300 border-red-300'\n }\n ]\n }\n)\n\nconst optionClass = cva(['relative cursor-default select-none'], {\n variants: {\n disabled: {\n true: 'cursor-not-allowed text-gray-400',\n false: 'text-text-foreground'\n },\n size: {\n sm: 'py-1 pl-3 pr-5',\n md: 'py-2 pl-3 pr-6'\n },\n active: {\n true: 'bg-primary-50 dark:bg-primary-400/50',\n false: ''\n },\n selected: {\n true: '!bg-primary-100 dark:!bg-primary-400',\n false: ''\n }\n },\n defaultVariants: {\n disabled: false,\n active: false,\n selected: false,\n size: 'sm'\n }\n})\n\nconst iconClass = cva([], {\n variants: {\n size: {\n sm: 'h-3.5 w-3.5',\n md: 'h-4 w-4'\n },\n disabled: {\n true: 'opacity-50',\n false: ''\n }\n },\n defaultVariants: {\n size: 'sm',\n disabled: false\n }\n})\n\ntype labelProps = {\n selected?: boolean\n active?: boolean\n}\n\nexport interface IOption<T> {\n label: ReactNode | ((props: labelProps) => ReactNode)\n value: T\n disabled?: boolean\n title?: string\n}\n\nexport interface SelectProps<T> {\n options: IOption<T>[]\n value: T\n onChange: (value: T) => void\n className?: string\n buttonClassName?: string\n optionsClassName?: string\n placeholder?: string\n size?: 'sm' | 'md'\n renderOption?: (option: IOption<T>, state: labelProps) => ReactElement\n noOptionsMessage?: ReactElement\n error?: FieldError\n disabled?: boolean\n fetchMore?: () => void\n isFetchingMore?: boolean\n scrollBottomThreshold?: number\n groupedOptions?: boolean\n groupedOrder?: {\n key: string\n label: string\n }[]\n unmountOptions?: boolean\n direction?: 'up' | 'down'\n asLayer?: boolean\n}\n\nfunction generateLabel(\n label: ReactNode | ((props: labelProps) => ReactNode),\n props: labelProps\n) {\n if (isFunction(label)) {\n return label(props)\n }\n return label\n}\n\nexport function Select<T>({\n className,\n buttonClassName,\n optionsClassName,\n options,\n value,\n onChange,\n placeholder,\n size = 'sm',\n renderOption,\n noOptionsMessage,\n error,\n disabled,\n fetchMore,\n isFetchingMore,\n scrollBottomThreshold = 100,\n groupedOptions,\n groupedOrder,\n unmountOptions = true,\n direction = 'down',\n asLayer\n}: SelectProps<T>) {\n const selectedIndex = options.findIndex((o) => isEqual(o.value, value))\n const listRef = useRef<HTMLUListElement>(null)\n const [open, setOpen] = useState(false)\n const { width, ref } = useResizeDetector({\n refreshMode: 'debounce',\n refreshRate: 100,\n handleHeight: false\n })\n const baseZIndex = useContext(BaseZIndexContext)\n\n const { renderLayer, triggerProps, layerProps } = useLayer({\n isOpen: open,\n auto: true,\n preferX: 'left',\n preferY: direction === 'up' ? 'top' : 'bottom',\n placement: direction === 'up' ? 'top-start' : 'bottom-start',\n triggerOffset: 4,\n onOutsideClick: () => setOpen(false)\n })\n\n const grouped = useMemo(() => {\n if (!groupedOptions || !options || options.length === 0) {\n return options\n }\n const groupedOptionsList = options.reduce((acc: any, option: any) => {\n ;(acc[option.group] = acc[option.group] || []).push(option)\n return acc\n }, {})\n return groupedOrder?.reduce((acc: any, group: any) => {\n return [\n ...acc,\n {\n label: group.label,\n options: groupedOptionsList[group.key] || []\n }\n ]\n }, [])\n }, [groupedOptions, groupedOrder, options])\n\n const optionsElement = (\n <Listbox.Options\n ref={listRef}\n onScroll={() => {\n if (listRef.current?.scrollHeight) {\n const bottomHeight =\n listRef.current?.scrollHeight -\n listRef.current?.clientHeight -\n listRef.current?.scrollTop\n if (bottomHeight < scrollBottomThreshold) {\n fetchMore?.()\n }\n }\n }}\n unmount={unmountOptions}\n className={classNames(\n 'text-ilabel dark:bg-sentio-gray-100 scrollbar-thin max-h-60 w-full overflow-auto rounded-md bg-white py-1 shadow-lg ring-1 ring-black ring-opacity-5 focus:outline-none dark:ring-gray-100 sm:text-sm',\n asLayer ? '' : 'absolute z-10',\n optionsClassName\n )}\n >\n {!options || options.length === 0 ? (\n <Listbox.Option\n value={null}\n disabled\n className={optionClass({ disabled: true, size })}\n >\n {noOptionsMessage ?? (\n <span className=\"text-gray-400\">No options</span>\n )}\n </Listbox.Option>\n ) : null}\n {groupedOptions && grouped\n ? grouped.map(({ label, options }) => {\n if (!options || options.length === 0) {\n return null\n }\n return (\n <div key={label}>\n <div className=\"text-gray px-3.5 py-1 text-xs font-medium\">\n {label}\n </div>\n <div>\n {options.map(\n (option: IOption<T>, i: Key | null | undefined) => (\n <Listbox.Option\n key={i}\n value={option.value}\n disabled={option.disabled}\n className={({ active }) =>\n optionClass({\n disabled: option.disabled,\n size,\n active,\n selected: isEqual(value, option.value)\n })\n }\n title={option.title}\n >\n {({ selected, active }) => {\n if (renderOption) {\n return renderOption(option, { selected, active })\n }\n return (\n <>\n <span\n className={classNames(\n selected ? 'font-medium' : 'font-normal',\n 'text-ilabel block truncate'\n )}\n >\n {generateLabel(option.label, {\n selected,\n active\n })}\n </span>\n\n {selected ? (\n <span\n className={classNames(\n 'text-primary-600 absolute inset-y-0 right-0 flex items-center pr-2 dark:text-white'\n )}\n >\n <CheckIcon\n className={iconClass({ size })}\n aria-hidden=\"true\"\n />\n </span>\n ) : null}\n </>\n )\n }}\n </Listbox.Option>\n )\n )}\n </div>\n </div>\n )\n })\n : options.map((option, i) => (\n <Listbox.Option\n key={i}\n value={option.value}\n disabled={option.disabled}\n className={({ active }) =>\n optionClass({\n disabled: option.disabled,\n size,\n active,\n selected: selectedIndex === i\n })\n }\n title={option.title}\n >\n {({ selected, active }) => {\n if (renderOption) {\n return renderOption(option, { selected, active })\n }\n return (\n <>\n <span\n className={classNames(\n selected ? 'font-medium' : 'font-normal',\n 'text-ilabel block truncate'\n )}\n >\n {generateLabel(option.label, { selected, active })}\n </span>\n\n {selected ? (\n <span\n className={classNames(\n 'text-primary-600 absolute inset-y-0 right-0 flex items-center pr-2 dark:text-white'\n )}\n >\n <CheckIcon\n className={iconClass({ size })}\n aria-hidden=\"true\"\n />\n </span>\n ) : null}\n </>\n )\n }}\n </Listbox.Option>\n ))}\n {isFetchingMore && (\n <Listbox.Option\n value={null}\n disabled\n className={optionClass({ disabled: true, size })}\n >\n <div className=\"flex w-full items-center justify-center gap-2\">\n <ClipLoader size={16} color=\"#A6C2F0\" />\n <span className=\"text-gray/50 text-xs\">Loading more...</span>\n </div>\n </Listbox.Option>\n )}\n </Listbox.Options>\n )\n\n return (\n <Listbox value={value} onChange={onChange} disabled={disabled}>\n {({ open: headlessOpen }) => {\n // Sync the internal state with Headless UI state\n if (headlessOpen !== open && asLayer) {\n setOpen(headlessOpen)\n }\n\n return (\n <div className={classNames(className, 'relative')} ref={ref}>\n <Listbox.Button\n as=\"div\"\n className={classNames(\n buttonClass({\n open: headlessOpen,\n size,\n error: !!error,\n disabled: !!disabled\n }),\n buttonClassName\n )}\n {...triggerProps}\n >\n <div className=\"pr-4\">\n {selectedIndex > -1 ? (\n generateLabel(options[selectedIndex].label, {})\n ) : placeholder ? (\n <span\n className={classNames(\n 'font-normal',\n error ? 'text-red-400' : 'text-gray-400'\n )}\n >\n {placeholder}\n </span>\n ) : (\n ''\n )}\n </div>\n <button\n type=\"button\"\n disabled={disabled}\n className={classNames(\n 'absolute inset-y-0 right-0 flex items-center rounded-r-md px-2 focus:outline-none'\n )}\n >\n <ChevronDownIcon\n className={iconClass({ size, disabled: !!disabled })}\n />\n </button>\n </Listbox.Button>\n\n {headlessOpen\n ? asLayer\n ? renderLayer(\n <div\n {...layerProps}\n style={{\n ...layerProps.style,\n zIndex: Math.max(10, baseZIndex + 1),\n minWidth: width\n }}\n >\n {optionsElement}\n </div>\n )\n : optionsElement\n : null}\n\n {error && (\n <p className=\"mt-2 text-xs font-medium text-red-600\">\n {typeof error == 'string' ? error : error.message}\n </p>\n )}\n </div>\n )\n }}\n </Listbox>\n )\n}\n","import {\n useState,\n useMemo,\n createContext,\n useContext,\n useCallback,\n useRef,\n useEffect,\n memo,\n CSSProperties,\n ReactNode,\n isValidElement,\n useTransition\n} from 'react'\nimport Tree from './Tree'\nimport { useVirtualizer } from '@tanstack/react-virtual'\nimport isNumber from 'lodash/isNumber'\nimport { cx as classNames } from 'class-variance-authority'\nimport { throttle } from 'lodash'\n\ntype FieldDataNode<T, ChildFieldName extends string = 'children'> = T &\n Partial<Record<ChildFieldName, FieldDataNode<T, ChildFieldName>[]>>\n\nexport type DataNode = FieldDataNode<{\n key: KeyType\n title?: React.ReactNode | ((data: DataNode) => React.ReactNode)\n depth?: number\n raw?: any\n}>\n\ntype KeyType = string | number\n\nexport const SUFFIX_NODE_KEY = 'selectedKey_after'\nexport const ROOT_KEY = 'root'\n\nconst TreeContext = createContext<{\n expandKeys: KeyType[]\n onExpand: (key: KeyType) => void\n onClick?: (data: DataNode) => void\n}>({\n expandKeys: [],\n onExpand: (key) => {\n console.log(key)\n }\n})\n\nconst ControledTree = ({\n item,\n selected,\n contentClassName,\n expandIcon,\n collapseIcon\n}: {\n item: DataNode\n selected?: boolean\n contentClassName?: string\n expandIcon?: React.ReactNode\n collapseIcon?: React.ReactNode\n}) => {\n const { expandKeys, onExpand, onClick } = useContext(TreeContext)\n let titleNode: React.ReactNode\n if (typeof item.title === 'function') {\n titleNode = item.title(item)\n } else {\n titleNode = item.title\n }\n const onOpenClick = useCallback(() => {\n onExpand(item.key)\n }, [onExpand, item.key])\n const onNodeClick = useCallback(() => {\n onClick?.(item)\n }, [item])\n const isLeaf = item.children === undefined || item.children?.length === 0\n\n return (\n <Tree\n contentClassName={classNames(\n selected ? 'bg-sentio-gray-100' : '',\n item.key === SUFFIX_NODE_KEY ? '!px-0 !py-0' : '',\n contentClassName\n )}\n className={\n item.key === SUFFIX_NODE_KEY\n ? 'sticky left-0 inline-block !overflow-visible'\n : 'group/tree'\n }\n showToggle={!isLeaf}\n open={expandKeys.includes(item.key)}\n depth={item.depth}\n key={item.key}\n content={titleNode}\n onOpenClick={onOpenClick}\n onClick={onNodeClick}\n expandIcon={expandIcon}\n collapseIcon={collapseIcon}\n />\n )\n}\n\nconst DEFAULT_ROW_HEIGHT = 35\n\ninterface Props {\n data?: DataNode[]\n defaultExpandAll?: boolean\n virtual?: boolean\n rowHeight?: number | ((index: number, isSelected?: boolean) => number)\n height?: CSSProperties['height']\n onClick?: (item: DataNode) => void\n suffixNode?: ReactNode\n expandDepth?: number\n contentClassName?: string\n expandIcon?: React.ReactNode\n collapseIcon?: React.ReactNode\n scrollToKey?: KeyType // auto scroll to this key\n scrollIntoView?: boolean\n isRootKey?: (v: KeyType) => boolean\n}\n\nconst DefaultSuffixNode = <div className=\"h-[200px]\"></div>\nfunction checkRootKeyDefault(v: KeyType) {\n return v === ROOT_KEY\n}\n\nexport const FlatTree = (props: Props) => {\n const {\n data,\n defaultExpandAll,\n virtual,\n rowHeight = DEFAULT_ROW_HEIGHT,\n height,\n onClick,\n suffixNode,\n expandDepth,\n contentClassName,\n expandIcon,\n collapseIcon,\n scrollToKey,\n scrollIntoView,\n isRootKey = checkRootKeyDefault\n } = props\n const dataRef = useRef<any>(null)\n const selectedKeyRef = useRef<KeyType>()\n const [expandKeys, setExpandKeys] = useState<KeyType[]>([])\n const [selectedKey, setSelectedKey] = useState<KeyType>()\n const parentRef = useRef<HTMLDivElement>(null)\n\n useEffect(() => {\n if (defaultExpandAll) {\n const flatten = (data: DataNode[]): KeyType[] => {\n return data.reduce((acc, cur) => {\n const { children, key } = cur\n acc.push(key)\n if (children) {\n acc.push(...flatten(children))\n }\n return acc\n }, [] as KeyType[])\n }\n setExpandKeys(flatten(data || []))\n } else {\n setExpandKeys([])\n }\n }, [data, defaultExpandAll])\n\n const flattenData = useMemo(() => {\n const expandKeysSet = new Set(expandKeys)\n const flatten = (data: DataNode[], depth = 0): DataNode[] => {\n return data.reduce((acc, cur) => {\n const { children } = cur\n acc.push({ ...cur, depth })\n if (children && expandKeysSet.has(cur.key)) {\n acc.push(...flatten(children, depth + 1))\n }\n return acc\n }, [] as DataNode[])\n }\n const list = flatten(data || [])\n // add node after selectedKey item\n if (selectedKey && isValidElement(suffixNode)) {\n const index = list.findIndex((item) => item.key === selectedKey)\n if (index > -1) {\n list.splice(index + 1, 0, {\n key: SUFFIX_NODE_KEY,\n title: suffixNode,\n depth: 0\n })\n }\n }\n return list\n }, [data, expandKeys, selectedKey, suffixNode])\n dataRef.current = flattenData\n\n const estimateSize = useCallback(\n (index: number) => {\n if (isNumber(rowHeight)) {\n return rowHeight\n }\n return rowHeight(index, dataRef.current?.[index]?.key === SUFFIX_NODE_KEY)\n },\n [rowHeight]\n )\n\n const rowVirtualizer = useVirtualizer({\n count: flattenData.length,\n getScrollElement: () => parentRef.current,\n estimateSize,\n overscan: 10\n })\n\n const contextValue = useMemo(() => {\n return {\n expandKeys: expandKeys,\n onExpand: (key: KeyType) => {\n setExpandKeys((keys) => {\n if (keys.includes(key)) {\n return keys.filter((k) => k !== key)\n } else {\n return [...keys, key]\n }\n })\n },\n onClick: (data: DataNode) => {\n if (onClick === undefined) {\n return\n }\n if (data.key === SUFFIX_NODE_KEY || isRootKey(data.key)) {\n return\n }\n setSelectedKey((key) => {\n if (key === data.key) {\n selectedKeyRef.current = undefined\n return undefined\n }\n selectedKeyRef.current = data.key\n return data.key\n })\n onClick?.(data)\n }\n }\n }, [expandKeys, onClick])\n\n useEffect(() => {\n // set expandedKey by depth\n if (!isNumber(expandDepth)) {\n return\n }\n\n const flatten = (data: DataNode[], currentDepth = 0): KeyType[] => {\n return data.reduce((acc, cur) => {\n const { children, key } = cur\n // Expand nodes that are at depth less than expandDepth\n if (currentDepth < expandDepth && children && children.length > 0) {\n acc.push(key)\n acc.push(...flatten(children, currentDepth + 1))\n }\n return acc\n }, [] as KeyType[])\n }\n setExpandKeys(flatten(data || []))\n }, [data, expandDepth])\n\n useEffect(() => {\n setSelectedKey(undefined)\n }, [expandDepth])\n\n useEffect(() => {\n if (dataRef.current && scrollToKey) {\n const index = dataRef.current.findIndex(\n (item: any) => item.key === scrollToKey\n )\n if (index > -1) {\n rowVirtualizer.scrollToIndex(index, {\n align: 'center',\n behavior: 'auto'\n })\n }\n }\n }, [scrollToKey])\n\n const visibleItems = rowVirtualizer.getVirtualItems()\n const [isPending, startTransition] = useTransition()\n const onScroll = useMemo(() => {\n if (!scrollIntoView) {\n return () => {}\n }\n const throttleFn = throttle(\n () => {\n startTransition(() => {\n parentRef.current?.scrollIntoView(true)\n })\n },\n 1000,\n { trailing: true }\n )\n let lastScrollTop = 0\n return (evt: React.UIEvent<HTMLDivElement>) => {\n const scrollTop = evt.currentTarget.scrollTop\n if (scrollTop > lastScrollTop) {\n throttleFn()\n }\n lastScrollTop = scrollTop\n }\n }, [scrollIntoView])\n\n return (\n <TreeContext.Provider value={contextValue}>\n {virtual ? (\n <div\n className=\"overflow-auto\"\n ref={parentRef}\n style={{\n height\n }}\n onScroll={onScroll}\n >\n <div\n style={{\n height: `${rowVirtualizer.getTotalSize()}px`,\n width: '100%',\n position: 'relative'\n }}\n >\n <div\n className=\"absolute left-0 top-0 w-max min-w-full\"\n style={{\n transform: visibleItems?.[0]?.start\n ? `translateY(${visibleItems[0].start}px)`\n : undefined\n }}\n >\n {rowVirtualizer.getVirtualItems().map((virtualItem) => (\n <div\n key={virtualItem.key}\n className={\n dataRef.current[virtualItem.index].key === scrollToKey\n ? 'bg-primary-100'\n : ''\n }\n >\n <ControledTree\n item={dataRef.current[virtualItem.index]}\n selected={\n selectedKey === dataRef.current[virtualItem.index].key\n }\n contentClassName={contentClassName}\n expandIcon={expandIcon}\n collapseIcon={collapseIcon}\n />\n </div>\n ))}\n </div>\n </div>\n </div>\n ) : (\n <>\n {flattenData.map((item, index) => (\n <div\n key={item.key || index}\n className={item.key === scrollToKey ? 'bg-primary-100' : ''}\n >\n <ControledTree\n item={item}\n selected={selectedKey === item.key}\n contentClassName={contentClassName}\n expandIcon={expandIcon}\n collapseIcon={collapseIcon}\n />\n </div>\n ))}\n </>\n )}\n </TreeContext.Provider>\n )\n}\n\nexport default memo(FlatTree)\n","import React, { useCallback, useState, useMemo, forwardRef } from 'react'\nimport * as Icons from './TreeIcons'\nimport { cx as classNames } from 'class-variance-authority'\nimport { useEffect } from 'react'\n\ninterface TreeProps {\n className?: string\n content?: React.ReactNode\n contentClassName?: string\n children?: React.ReactNode\n prefix?: React.ReactNode\n suffix?: React.ReactNode\n type?: React.ReactNode\n open?: boolean\n style?: React.CSSProperties\n depth?: number\n onClick?: () => void\n expandIcon?: React.ReactNode\n collapseIcon?: React.ReactNode\n\n // controled open function\n onOpenClick?: (open: boolean) => void\n showToggle?: boolean\n}\n\nconst Line = () => {\n return (\n <div className=\"-my-1.5 mr-[19px] h-full min-h-[24px] w-[px] translate-x-2 border-l border-dashed border-gray-400\"></div>\n )\n}\n\nexport default forwardRef<HTMLDivElement, TreeProps>(function Tree(\n {\n open: defaultOpen,\n content,\n children,\n depth = 0,\n type,\n contentClassName,\n prefix,\n suffix,\n onClick,\n onOpenClick,\n showToggle,\n className,\n expandIcon = <Icons.PlusSquareO className=\"h-4 w-4 align-middle\" />,\n collapseIcon = <Icons.MinusSquareO className=\"h-4 w-4 align-middle\" />\n }: TreeProps,\n ref\n) {\n const [open, setOpen] = useState(defaultOpen)\n\n useEffect(() => {\n setOpen(defaultOpen)\n }, [defaultOpen])\n\n const toggle = useCallback(\n (evt: React.MouseEvent) => {\n evt.stopPropagation()\n if (onOpenClick) {\n onOpenClick(!open)\n } else {\n setOpen((val) => {\n return !val\n })\n }\n },\n [open, onOpenClick]\n )\n const lineNodes = useMemo(() => {\n const lines: React.ReactNode[] = []\n for (let i = 0; i < depth; i++) {\n lines.push(<Line key={i} />)\n }\n return lines\n }, [depth])\n return (\n <div\n className={classNames(\n 'text-icontent font-icontent overflow-hidden text-ellipsis whitespace-nowrap align-middle',\n className\n )}\n >\n <div\n ref={ref}\n className={classNames(\n 'flex items-center px-2 py-1 hover:bg-gray-100',\n contentClassName\n )}\n onClick={onClick}\n >\n <div className=\"inline-flex shrink-0 items-center self-stretch\">\n {lineNodes}\n </div>\n <div className=\"inline-flex shrink-0 items-center\">\n {children || showToggle ? (\n <button\n className=\"text-gray hover:text-primary-500 dark:hover:text-primary-700 mr-1.5 cursor-pointer\"\n onClick={toggle}\n >\n {open ? collapseIcon : expandIcon}\n </button>\n ) : (\n <span className=\"mr-[19px] h-1 w-px\"></span>\n )}\n </div>\n {type}\n <span className=\"flex-1 align-middle\">{content}</span>\n </div>\n {prefix}\n {open ? children : null}\n {suffix}\n </div>\n )\n})\n","import { LuSquarePlus, LuSquareMinus, LuSquareX, LuEye } from 'react-icons/lu'\n\nexport {\n LuSquarePlus as PlusSquareO,\n LuSquareMinus as MinusSquareO,\n LuSquareX as CloseSquareO,\n LuEye as EyeO\n}\n","import { linkifyUrlsToHtml } from 'linkify-urls'\nimport DOMPurify from 'dompurify'\nimport { memo } from 'react'\nimport { isString, isUndefined, isNull } from 'lodash'\n\nif (DOMPurify?.addHook) {\n DOMPurify.addHook('afterSanitizeAttributes', function (node) {\n // set all elements owning target to target=_blank\n if ('target' in node) {\n node.setAttribute('target', '_blank')\n }\n // set non-HTML/MathML links to xlink:show=new\n if (\n !node.hasAttribute('target') &&\n (node.hasAttribute('xlink:href') || node.hasAttribute('href'))\n ) {\n node.setAttribute('xlink:show', 'new')\n }\n })\n}\n\nconst renderTextWithColoredNumbers = (text: string) => {\n // Use word boundary and negative lookahead to avoid matching numbers in hexadecimal addresses\n const numberRegex = /\\b(\\d+(?:\\.\\d+)?)\\b/g\n\n return text.replace(numberRegex, (match, number, offset) => {\n // Check characters before and after the number to ensure it's not part of a hex address\n const before = text.charAt(offset - 1)\n const after = text.charAt(offset + match.length)\n\n // If preceded by 'x' or surrounded by hex characters, don't highlight\n if (before === 'x' || /[a-fA-F]/.test(before) || /[a-fA-F]/.test(after)) {\n return match\n }\n\n return `<span class=\"font-mono text-primary-500 dark:text-primary-700\">${match}</span>`\n })\n}\n\ninterface LinkifyTextProps {\n text: any\n className?: string\n isHighlightNumbers?: boolean\n}\n\nexport const LinkifyText = memo(function LinkifyText({\n text,\n className,\n isHighlightNumbers\n}: LinkifyTextProps) {\n if (isUndefined(text) || isNull(text)) {\n return null\n }\n if (!isString(text)) {\n if (text.toString) {\n return <span className={className}>{text.toString()}</span>\n }\n return null\n }\n const linkStr = linkifyUrlsToHtml(\n isHighlightNumbers ? renderTextWithColoredNumbers(text) : text,\n {\n attributes: {\n class: 'text-primary hover:underline',\n target: '_blank',\n rel: 'noopener noreferrer'\n }\n }\n )\n return (\n <span\n className={className}\n dangerouslySetInnerHTML={{ __html: DOMPurify.sanitize(linkStr) }}\n />\n )\n})\n","import React, { useContext } from 'react'\nimport { SvgFolderContext } from '../utils/extension-context'\n\ninterface EmptyProps {\n src?: string\n title?: React.ReactNode\n}\n\nexport const Empty: React.FC<EmptyProps> = (props) => {\n const parentFolder = useContext(SvgFolderContext)\n return (\n <div className=\"mx-auto w-fit\">\n <img\n src={props.src ?? `${parentFolder}/empty.svg`}\n width={88}\n height={88}\n alt=\"empty icon\"\n className=\"mx-auto\"\n />\n <span className=\"text-ilabel text-gray\">\n {props.title || 'No results found'}\n </span>\n </div>\n )\n}\n","import { createContext, useContext } from 'react'\n\nexport const SvgFolderContext = createContext('')\nexport const useDetectExtenstion = () => {\n const folderPath = useContext(SvgFolderContext)\n return Boolean(folderPath)\n}\n\nexport const DarkModeContext = createContext(false)\nexport const useDarkMode = () => {\n return useContext(DarkModeContext)\n}\n","import { cx as classNames } from 'class-variance-authority'\nimport { ReactNode } from 'react'\n\nexport enum StatusRole {\n Success = 'success',\n Warning = 'warning',\n Error = 'error',\n Disabled = 'disabled',\n Info = 'info'\n}\n\nconst VersionStateColors: { [key: string]: string } = {\n [StatusRole.Success]: 'bg-cyan-600/10 text-cyan-600',\n [StatusRole.Warning]: 'bg-orange-600/10 text-orange-600',\n [StatusRole.Error]: 'bg-red-600/10 text-red-600',\n [StatusRole.Disabled]: 'bg-gray-600/10 text-gray-600',\n [StatusRole.Info]: 'bg-gray-300/10 text-gray-300'\n}\n\ninterface Props {\n status: string | ReactNode\n className?: string\n colorClasses?: string\n roundClasses?: string\n bubble?: boolean // if contains a prefix bubble\n role?: string | StatusRole\n}\n\nexport function StatusBadge({\n status,\n className,\n colorClasses: _colorClasses,\n roundClasses,\n bubble,\n role\n}: Props) {\n const colorClasses =\n _colorClasses || VersionStateColors[role || StatusRole.Info]\n\n return (\n <span\n className={classNames(\n 'text-ilabel inline-flex cursor-default items-center px-2 py-0.5 font-medium',\n colorClasses,\n roundClasses ? roundClasses : 'rounded-full',\n className\n )}\n data-test-status={status}\n >\n {bubble && <div className=\"mr-1.5 h-1.5 w-1.5 rounded-full bg-current\" />}\n {status}\n </span>\n )\n}\n\nexport default StatusBadge\n","import { LuChevronDown, LuChevronUp } from 'react-icons/lu'\nimport { cx as classNames } from 'class-variance-authority'\nimport { type ReactNode, type FC } from 'react'\n\ninterface HeaderToolsToggleButtonProps {\n isOpen: boolean\n onClick: () => void\n className?: string\n}\n\nexport const HeaderToolsToggleButton: FC<HeaderToolsToggleButtonProps> = ({\n isOpen,\n onClick,\n className\n}) => {\n return (\n <button\n onClick={onClick}\n className={classNames(\n 'flex items-center justify-center rounded-md p-1 transition-colors',\n 'dark:hover:bg-sentio-gray-100 hover:bg-gray-200',\n 'text-text-foreground',\n className\n )}\n aria-label=\"Toggle tools\"\n >\n {isOpen ? (\n <LuChevronUp className=\"h-4 w-4 transition-transform\" />\n ) : (\n <LuChevronDown className=\"h-4 w-4 transition-transform\" />\n )}\n </button>\n )\n}\n\ninterface HeaderToolsContentProps {\n isOpen: boolean\n children?: ReactNode\n className?: string\n}\n\nexport const HeaderToolsContent: FC<HeaderToolsContentProps> = ({\n isOpen,\n children,\n className\n}) => {\n if (!isOpen) {\n return null\n }\n\n return (\n <div className={classNames('w-full overflow-hidden', className)}>\n {children}\n </div>\n )\n}\n","import {\n CSSProperties,\n forwardRef,\n memo,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState\n} from 'react'\nimport {\n Row,\n Cell,\n useReactTable,\n getCoreRowModel,\n getSortedRowModel,\n ColumnDef,\n flexRender,\n ColumnResizeMode,\n TableState\n} from '@tanstack/react-table'\nimport { useVirtualizer } from '@tanstack/react-virtual'\nimport { classNames } from '../../utils/classnames'\nimport {\n HiOutlineSortDescending,\n HiOutlineSortAscending,\n HiChevronDown\n} from 'react-icons/hi'\nimport { debounce, isEqual } from 'lodash'\nimport { PopupMenuButton } from '../menu/PopupMenuButton'\nimport { ColumnOrderState } from '@tanstack/react-table'\nimport { MoveLeftIcon, MoveRightIcon, RenameIcon, DeleteIcon } from './Icons'\nimport { IoReload } from 'react-icons/io5'\n\nconst reorder = (list: any[], startIndex: number, endIndex: number) => {\n const result = Array.from(list)\n const [removed] = result.splice(startIndex, 1)\n result.splice(endIndex, 0, removed)\n\n return result\n}\n\ninterface Props {\n data: any\n columns: ColumnDef<any>[]\n columnResizeMode: ColumnResizeMode\n onClick?: (row: Row<any>, cell: Cell<any, any>) => void\n height?: CSSProperties['height']\n onFetchMore?: () => void\n hasMore?: boolean\n isFetching?: boolean\n\n state?: Partial<TableState>\n onStateChange?: (state: TableState) => void\n\n //sort\n allowSort?: boolean\n manualSorting?: boolean // server-side sorting\n\n //resize\n allowResizeColumn?: boolean\n\n //edit column\n allowEditColumn?: boolean\n onColumnRename?: (data: ColumnDef<any>) => void\n onColumnRemove?: (data: ColumnDef<any>) => void\n\n minSize?: number\n minWidth?: number\n\n rowClassNameFn?: (row: Row<any>) => string\n\n // Virtual scrolling options\n enableVirtualization?: boolean\n estimatedRowHeight?: number\n overscan?: number\n}\n\nfunction onPreventClick(e: React.MouseEvent) {\n e.stopPropagation()\n}\n\nconst _ResizeTable = forwardRef<HTMLDivElement, Props>(function _ResizeTable(\n {\n data,\n columns,\n columnResizeMode,\n onClick,\n height,\n onFetchMore,\n hasMore,\n isFetching,\n allowSort,\n allowEditColumn,\n allowResizeColumn,\n state = {},\n onStateChange,\n onColumnRemove,\n onColumnRename,\n minSize,\n manualSorting,\n minWidth,\n rowClassNameFn,\n enableVirtualization = false,\n estimatedRowHeight = 35,\n overscan = 5\n }: Props,\n tableContainerRef\n) {\n const adjustedColumns = useMemo(() => {\n let totalWidth = 0\n const newColumns = columns.map((c) => {\n const item = Object.assign({ minSize }, c)\n totalWidth += item.size || item.minSize || 0\n return item\n })\n if (minWidth && totalWidth < minWidth) {\n const ratio = minWidth / totalWidth\n newColumns.forEach((c) => {\n if (c.size) {\n c.size = Math.floor(c.size * ratio)\n } else if (c.minSize) {\n c.size = Math.floor(c.minSize * ratio)\n }\n })\n }\n return newColumns\n }, [columns, minSize, minWidth])\n\n const [tableState, setTableState] = useState<TableState>(() => {\n const initialState = {\n pagination: {\n pageIndex: 0,\n pageSize: 10\n },\n ...state\n }\n return initialState as any\n })\n\n const table = useReactTable({\n data,\n columns: adjustedColumns,\n columnResizeMode: columnResizeMode,\n getCoreRowModel: getCoreRowModel(),\n getSortedRowModel: allowSort ? getSortedRowModel() : undefined,\n state: tableState,\n onStateChange: setTableState,\n manualSorting\n })\n\n useEffect(() => {\n if (state && Object.keys(state).length > 0) {\n setTableState((prev) => {\n const newState: TableState = {\n ...prev,\n ...state,\n pagination: prev.pagination ||\n state.pagination || { pageIndex: 0, pageSize: 10 }\n }\n return isEqual(prev, newState) ? prev : newState\n })\n }\n }, [state])\n\n const debounceStateChange = useMemo(() => {\n if (!onStateChange) return undefined\n return debounce(onStateChange, 500, {})\n }, [onStateChange])\n\n useEffect(() => {\n debounceStateChange?.(tableState)\n }, [debounceStateChange, tableState])\n\n const fetchMoreOnBottomReached = useMemo(() => {\n return debounce((containerRefElement?: HTMLDivElement | null) => {\n if (containerRefElement) {\n const { scrollHeight, scrollTop, clientHeight } = containerRefElement\n if (\n scrollHeight - scrollTop - clientHeight < 300 &&\n !isFetching &&\n hasMore\n ) {\n onFetchMore?.()\n }\n }\n }, 500)\n }, [onFetchMore, isFetching, hasMore])\n\n const tableContainerElementRef = useRef<HTMLDivElement | null>(null)\n\n useEffect(() => {\n if (tableContainerRef) {\n if (typeof tableContainerRef === 'function') {\n tableContainerRef(tableContainerElementRef.current)\n } else {\n tableContainerRef.current = tableContainerElementRef.current\n }\n }\n }, [tableContainerRef])\n\n const rowVirtualizer = useVirtualizer({\n count: enableVirtualization ? table.getRowModel().rows.length : 0,\n getScrollElement: () => tableContainerElementRef.current,\n estimateSize: useCallback(() => estimatedRowHeight, [estimatedRowHeight]),\n overscan,\n enabled: enableVirtualization\n })\n\n const virtualRows = enableVirtualization\n ? rowVirtualizer.getVirtualItems()\n : []\n\n const paddingTop =\n enableVirtualization && virtualRows.length > 0 ? virtualRows[0].start : 0\n const paddingBottom =\n enableVirtualization && virtualRows.length > 0\n ? rowVirtualizer.getTotalSize() -\n (virtualRows[virtualRows.length - 1].start +\n virtualRows[virtualRows.length - 1].size)\n : 0\n\n return (\n <div\n className=\"overflow-auto\"\n style={height ? { height } : undefined}\n ref={tableContainerElementRef}\n onScroll={(e) => fetchMoreOnBottomReached(e.target as HTMLDivElement)}\n >\n <table\n className=\"w-fit\"\n {...{\n style: {\n width: table.getCenterTotalSize()\n }\n }}\n >\n <thead className=\"dark:bg-sentio-gray-100 sticky top-0 z-[1] bg-white\">\n {table.getHeaderGroups().map((headerGroup) => (\n <tr\n key={headerGroup.id}\n className=\"relative flex w-fit cursor-pointer items-center border-b\"\n >\n {headerGroup.headers.map((header, i) => (\n <th\n key={header.id}\n colSpan={header.colSpan}\n style={{\n width: header.getSize()\n }}\n className=\"text-ilabel group/th blinked dark:hover:!bg-sentio-gray-300 dark:bg-sentio-gray-100 text-text-foreground hover:!bg-primary-50 relative flex items-center whitespace-nowrap bg-white px-2 py-2 text-left font-semibold\"\n onClick={header.column.getToggleSortingHandler()}\n >\n <span className=\"flex w-full flex-1 overflow-hidden\">\n <span className=\"flex-1 truncate\">\n {header.isPlaceholder\n ? null\n : flexRender(\n header.column.columnDef.header,\n header.getContext()\n )}\n </span>\n {header.column.getCanSort() && allowSort ? (\n <span\n className={classNames(\n header.column.getIsSorted()\n ? 'hover:text-text-foreground visible hover:bg-gray-200'\n : 'invisible',\n 'ml-2 flex-none rounded px-1 py-0.5 text-gray-600 group-hover:visible group-focus:visible',\n 'inline-block cursor-pointer',\n 'shrink-0'\n )}\n >\n {header.column.getIsSorted() ? (\n header.column.getIsSorted() == 'desc' ? (\n <HiOutlineSortDescending className=\"h-4 w-4\" />\n ) : (\n <HiOutlineSortAscending className=\"h-4 w-4\" />\n )\n ) : (\n ''\n )}\n </span>\n ) : null}\n </span>\n {allowEditColumn !== false && (\n <span\n className=\"invisible inline-block group-hover/th:visible\"\n onClick={onPreventClick}\n >\n <PopupMenuButton\n buttonClassName=\"align-text-bottom\"\n onSelect={(commandKey: string) => {\n const colOrder = headerGroup.headers.map(\n (item) => (item as any)?.id\n )\n switch (commandKey) {\n case 'reorder.left':\n table.setColumnOrder(\n reorder(colOrder, i, i - 1) as ColumnOrderState\n )\n break\n case 'reorder.right':\n table.setColumnOrder(\n reorder(colOrder, i, i + 1) as ColumnOrderState\n )\n break\n case 'delete':\n onColumnRemove?.(header.column.columnDef)\n break\n default:\n console.log(commandKey, 'is not applied')\n }\n }}\n buttonIcon={<HiChevronDown className=\"icon mr-2\" />}\n items={[\n [\n {\n key: 'reorder.left',\n label: 'Move column left',\n icon: <MoveLeftIcon className=\"mr-2\" />,\n disabled: i === 0\n },\n {\n key: 'reorder.right',\n label: 'Move column right',\n icon: <MoveRightIcon className=\"mr-2\" />,\n disabled: i === headerGroup.headers.length - 1\n }\n ],\n ...(onColumnRename\n ? [\n [\n {\n key: 'rename',\n label: 'Rename column',\n icon: <RenameIcon className=\"mr-2\" />\n }\n ]\n ]\n : []),\n ...(!onColumnRemove\n ? []\n : [\n [\n {\n key: 'delete',\n label: 'Remove column',\n icon: <DeleteIcon className=\"mr-2\" />,\n status: 'danger'\n }\n ]\n ])\n ]}\n />\n </span>\n )}\n {header.column.getCanResize() ? (\n <div\n onMouseDown={header.getResizeHandler()}\n onTouchStart={header.getResizeHandler()}\n className={classNames(\n `text-md hover:bg-primary-200/50 absolute right-0 top-0 inline-block flex\n h-full w-2 cursor-col-resize touch-none select-none items-center text-gray-400`\n )}\n style={{\n transform:\n columnResizeMode === 'onEnd' &&\n header.column.getIsResizing()\n ? `translateX(${table.getState().columnSizingInfo.deltaOffset}px)`\n : ''\n }}\n onClick={(e) => e.stopPropagation()}\n >\n ⋮\n </div>\n ) : null}\n </th>\n ))}\n </tr>\n ))}\n </thead>\n <tbody>\n {enableVirtualization && paddingTop > 0 && (\n <tr>\n <td style={{ height: `${paddingTop}px` }} />\n </tr>\n )}\n\n {enableVirtualization\n ? virtualRows.map((virtualRow) => {\n const row = table.getRowModel().rows[virtualRow.index]\n return (\n <tr\n key={row.id}\n data-index={virtualRow.index}\n className={classNames(\n 'hover:!bg-primary-50 dark:hover:!bg-sentio-gray-300 group flex w-fit items-center border-b',\n onClick ? 'cursor-pointer' : '',\n rowClassNameFn ? rowClassNameFn(row) : ''\n )}\n >\n {row.getVisibleCells().map((cell) => (\n <td\n key={cell.id}\n {...{\n style: {\n width: cell.column.getSize()\n }\n }}\n onClick={() => onClick && onClick(row, cell)}\n className=\"text-ilabel dark:text-text-foreground-secondary truncate whitespace-nowrap py-2 pl-2 text-gray-600\"\n >\n {flexRender(\n cell.column.columnDef.cell,\n cell.getContext()\n )}\n </td>\n ))}\n </tr>\n )\n })\n : table.getRowModel().rows.map((row) => (\n <tr\n key={row.id}\n className={classNames(\n 'hover:!bg-primary-50 dark:hover:!bg-sentio-gray-300 blinked group flex w-fit items-center border-b',\n onClick ? 'cursor-pointer' : '',\n rowClassNameFn ? rowClassNameFn(row) : ''\n )}\n >\n {row.getVisibleCells().map((cell) => (\n <td\n key={cell.id}\n {...{\n style: {\n width: cell.column.getSize()\n }\n }}\n onClick={() => onClick && onClick(row, cell)}\n className=\"text-ilabel dark:text-text-foreground-secondary truncate whitespace-nowrap py-2 pl-2 text-gray-600\"\n >\n {flexRender(\n cell.column.columnDef.cell,\n cell.getContext()\n )}\n </td>\n ))}\n </tr>\n ))}\n\n {enableVirtualization && paddingBottom > 0 && (\n <tr>\n <td style={{ height: `${paddingBottom}px` }} />\n </tr>\n )}\n\n {onFetchMore && (\n <tr>\n <td\n colSpan={table.getHeaderGroups()[0].headers.length}\n className=\"text-ilabel hover:bg-primary-50 cursor-pointer py-2 text-center text-gray-600\"\n onClick={() => {\n if (isFetching) return\n onFetchMore?.()\n }}\n >\n {isFetching || hasMore ? (\n <span className=\"inline-flex items-center gap-2\">\n <IoReload\n className={classNames(\n 'h-4 w-4',\n isFetching ? 'animate-spin' : ''\n )}\n />\n <span>Loading...</span>\n </span>\n ) : (\n 'No more data'\n )}\n </td>\n </tr>\n )}\n </tbody>\n </table>\n </div>\n )\n})\n\nexport const ResizeTable = memo(_ResizeTable)\n\nexport default ResizeTable\n","import {\n ReactNode,\n Fragment,\n useState,\n useContext,\n CSSProperties,\n createContext,\n useMemo,\n useEffect,\n useRef\n} from 'react'\nimport { Menu, Transition } from '@headlessui/react'\nimport {\n FloatingPortal,\n useFloating,\n shift,\n flip,\n autoUpdate,\n Placement,\n offset as FloatingOffset\n} from '@floating-ui/react'\nimport { MenuContext, MenuItem } from './SubMenu'\nimport { classNames } from '../../utils/classnames'\nimport { NavSizeContext } from '../../utils/nav-size-context'\nimport { IMenuItem, OnSelectMenuItem } from './types'\n\ninterface Props {\n items: IMenuItem[][]\n groupLabels?: string[]\n buttonIcon: ReactNode | ((menuOpen: boolean) => ReactNode)\n buttonClassName?: string\n itemsClassName?: string\n itemLabelClassName?: string\n onSelect?: OnSelectMenuItem\n ariaLabel?: string\n header?: ReactNode\n footer?: ReactNode\n renderItem?: (data: IMenuItem) => React.ReactNode\n placement?: Placement\n offset?: any\n portal?: boolean\n width?: CSSProperties['width']\n selectedKey?: IMenuItem['key']\n onOpenCallback?: () => void\n}\n\nexport function PopupMenuButton({\n buttonIcon,\n items,\n groupLabels,\n onSelect,\n ariaLabel,\n header,\n footer,\n buttonClassName,\n itemsClassName = '',\n itemLabelClassName,\n renderItem,\n placement = 'bottom-start',\n offset = 0,\n portal = true,\n width,\n selectedKey,\n onOpenCallback\n}: Props) {\n const [menuOpen, setMenuOpen] = useState(false)\n const { small } = useContext(NavSizeContext)\n const { refs, floatingStyles, context } = useFloating({\n open: menuOpen,\n onOpenChange: setMenuOpen,\n middleware: [FloatingOffset(offset), flip(), shift()],\n placement,\n whileElementsMounted: autoUpdate\n })\n const itemStyle = useMemo(() => {\n return {\n width\n }\n }, [width])\n const onOpenCallbackRef = useRef(onOpenCallback)\n onOpenCallbackRef.current = onOpenCallback\n useEffect(() => {\n if (menuOpen) {\n onOpenCallbackRef.current?.()\n }\n }, [menuOpen])\n let menuItems: React.ReactNode = null\n if (menuOpen && items.length > 0) {\n menuItems = (\n <MenuContext.Provider value={{ selectedKey }}>\n <div ref={refs.setFloating} style={floatingStyles}>\n <Transition\n as={Fragment}\n enter=\"transition ease-out duration-100\"\n enterFrom=\"transform opacity-0 scale-95\"\n enterTo=\"transform opacity-100 scale-100\"\n leave=\"transition ease-in duration-75\"\n leaveFrom=\"transform opacity-100 scale-100\"\n leaveTo=\"transform opacity-0 scale-95\"\n >\n <Menu.Items\n className=\"dark:bg-sentio-gray-200 dark:divide-sentio-gray-400/50 z-10 mt-1 w-[80vw] origin-top cursor-pointer divide-y divide-gray-200 rounded-md bg-white shadow-lg ring-1 ring-black ring-opacity-5 focus:outline-none dark:ring-gray-100 sm:w-64\"\n style={itemStyle}\n >\n {header}\n <div className={`${itemsClassName} divide-y`}>\n {items.map((items, i) => (\n <div key={i} className=\"py-1\">\n {groupLabels?.[i] ? (\n <div className=\"px-4 py-0.5 text-[10px] font-medium leading-[12px] text-gray-500\">\n {groupLabels[i]}\n </div>\n ) : null}\n {items.map((item) =>\n renderItem ? (\n renderItem(item)\n ) : (\n <MenuItem\n item={item}\n onSelect={onSelect}\n key={item.key}\n labelClassName={itemLabelClassName}\n />\n )\n )}\n </div>\n ))}\n </div>\n {footer}\n </Menu.Items>\n </Transition>\n </div>\n </MenuContext.Provider>\n )\n }\n return (\n <Menu>\n {({ open }) => {\n setTimeout(() => {\n setMenuOpen(open)\n }, 0)\n return (\n <>\n <Menu.Button\n className={classNames(\n 'text-gray w-fit px-1 hover:text-gray-500 active:text-gray-700',\n buttonClassName\n )}\n aria-label={ariaLabel}\n ref={refs.setReference}\n as={buttonIcon ? 'div' : undefined}\n >\n {typeof buttonIcon === 'function'\n ? buttonIcon(menuOpen)\n : buttonIcon}\n </Menu.Button>\n {portal ? <FloatingPortal>{menuItems}</FloatingPortal> : menuItems}\n </>\n )\n }}\n </Menu>\n )\n}\n","import { useState, createContext, useContext } from 'react'\nimport {\n useFloating,\n useHover,\n useInteractions,\n autoUpdate,\n flip,\n shift,\n safePolygon,\n Placement\n} from '@floating-ui/react'\nimport { Menu } from '@headlessui/react'\nimport { classNames } from '../../utils/classnames'\nimport { HiCheck } from 'react-icons/hi'\nimport { PopoverTooltip } from '../DivTooltip'\nimport { ChevronRightIcon } from '@heroicons/react/20/solid'\nimport { IMenuItem, OnSelectMenuItem } from './types'\n\nexport const COLOR_MAP: Record<\n string,\n { active: string; default: string; disabled: string }\n> = {\n default: {\n active:\n 'bg-gray-100 text-text-foreground dark:bg-primary-600 dark:text-white',\n default: 'text-text-foreground',\n disabled: 'text-gray-400 cursor-not-allowed'\n },\n danger: {\n active: 'bg-red-100 text-red-600 dark:bg-red-600 dark:text-white',\n default: 'text-red-600',\n disabled: 'text-red-200 dark:text-red-600/40 cursor-not-allowed'\n }\n}\n\nexport const MenuContext = createContext<{ selectedKey?: string }>({})\n\ntype Props = IMenuItem & {\n items: IMenuItem[][]\n onSelect?: OnSelectMenuItem\n active: boolean\n name: string\n placement?: Placement\n buttonClass?: string\n}\n\ninterface ItemProps {\n item: IMenuItem\n onSelect?: OnSelectMenuItem\n labelClassName?: string\n}\n\nexport const MenuItem = ({ item, onSelect, labelClassName }: ItemProps) => {\n const { selectedKey } = useContext(MenuContext)\n return (\n <Menu.Item disabled={item.disabled}>\n {({ active }) => {\n if (item.items) {\n return (\n <SubMenuButton\n items={item.items}\n icon={item.icon}\n key={item.key}\n name={item.key}\n label={item.label}\n onSelect={onSelect}\n active={active}\n />\n )\n }\n const buttonNode = (\n <button\n onClick={(e) => onSelect?.(item.key, e, item)}\n className={classNames(\n item.disabled\n ? COLOR_MAP[item.status || 'default'].disabled\n : active\n ? COLOR_MAP[item.status || 'default'].active\n : COLOR_MAP[item.status || 'default'].default,\n 'text-ilabel font-ilabel flex w-full items-center px-4 py-1.5 transition-colors duration-200'\n )}\n disabled={item.disabled}\n >\n {item.icon}\n <span\n className={classNames(\n 'flex-1 truncate text-left',\n labelClassName\n )}\n >\n {item.label}\n </span>\n {item.key === selectedKey ? (\n <HiCheck className=\"icon-lg ml-2\" />\n ) : null}\n </button>\n )\n if (item.disabled && item.disabledHint) {\n return (\n <PopoverTooltip\n text={\n <span className=\"text-icontent font-icontent text-gray cursor-auto\">\n {item.disabledHint}\n </span>\n }\n strategy=\"fixed\"\n >\n {buttonNode}\n </PopoverTooltip>\n )\n }\n return buttonNode\n }}\n </Menu.Item>\n )\n}\n\nexport const SubMenuButton = (props: Props) => {\n const {\n label,\n status,\n items,\n disabled,\n onSelect,\n active,\n placement = 'right-start',\n buttonClass\n } = props\n const [open, setOpen] = useState(false)\n const { refs, floatingStyles, context } = useFloating({\n open,\n onOpenChange: setOpen,\n placement,\n whileElementsMounted: autoUpdate,\n middleware: [flip(), shift()]\n })\n const { getReferenceProps, getFloatingProps } = useInteractions([\n useHover(context, {\n handleClose: safePolygon()\n })\n ])\n\n return (\n <Menu\n as=\"div\"\n className={classNames(\n 'group flex items-center',\n 'text-ilabel rounded-md',\n disabled\n ? 'pointer-events-none cursor-not-allowed text-gray-400'\n : 'cursor-pointer'\n )}\n >\n <Menu.Button\n className={classNames(\n active || open\n ? COLOR_MAP[status || 'default'].active\n : COLOR_MAP[status || 'default'].default,\n 'text-ilabel font-ilabel flex w-full items-center px-4 py-1.5',\n buttonClass\n )}\n ref={refs.setReference}\n onClick={(e) => {\n e.preventDefault()\n onSelect && onSelect(props.name, e)\n }}\n {...getReferenceProps}\n >\n {props.icon}\n <span className=\"flex-shrink flex-grow text-left\">{label}</span>\n <ChevronRightIcon\n className={classNames(\n open ? 'text-gray-500' : 'text-gray-400',\n 'h-4.5 w-4.5 flex-shrink-0 group-hover:text-gray-500',\n placement?.startsWith('bottom') ? 'rotate-90' : ''\n )}\n aria-label=\"expand items\"\n />\n </Menu.Button>\n {open && (\n <Menu.Items\n static\n ref={refs.setFloating}\n style={floatingStyles}\n className=\"dark:bg-sentio-gray-100 dark:divide-sentio-gray-400/50 w-48 origin-top cursor-pointer divide-y divide-gray-200 rounded-md bg-white shadow-lg ring-1 ring-black ring-opacity-5 focus:outline-none dark:ring-gray-100\"\n {...getFloatingProps}\n >\n {items.map((items, i) =>\n items && items.length > 0 ? (\n <div\n key={i}\n className=\"overflow-auto py-1\"\n style={{ maxHeight: '60vh' }}\n >\n {items.map((item) => (\n <MenuItem key={item.key} item={item} onSelect={onSelect} />\n ))}\n </div>\n ) : null\n )}\n </Menu.Items>\n )}\n </Menu>\n )\n}\n","import { createContext } from 'react'\n\nexport const NavSizeContext = createContext({\n small: true,\n showLabel: true,\n setSmall: (small: boolean) => {\n // do nothing\n },\n setShowLabel: (showLabel: boolean) => {\n // do nothing\n }\n})\n","import { SVGProps } from 'react'\n\nexport const MoveLeftIcon = (props: SVGProps<SVGSVGElement>) => (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <g clipPath=\"url(#clip0_6869_7300)\">\n <path\n d=\"M2.66666 8H9.33332\"\n stroke=\"currentColor\"\n strokeWidth=\"1.33333\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M2.66666 8L5.33332 10.6667\"\n stroke=\"currentColor\"\n strokeWidth=\"1.33333\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M2.66669 7.9987L5.33335 5.33203\"\n stroke=\"currentColor\"\n strokeWidth=\"1.33333\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M13.3333 2.66797V13.3346\"\n stroke=\"currentColor\"\n strokeWidth=\"1.33333\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_6869_7300\">\n <rect width=\"16\" height=\"16\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n)\n\nexport const MoveRightIcon = (props: SVGProps<SVGSVGElement>) => (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <g clipPath=\"url(#clip0_6869_7309)\">\n <path\n d=\"M13.3333 8H6.66666\"\n stroke=\"currentColor\"\n strokeWidth=\"1.33333\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M13.3333 8L10.6667 10.6667\"\n stroke=\"currentColor\"\n strokeWidth=\"1.33333\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M13.3334 7.9987L10.6667 5.33203\"\n stroke=\"currentColor\"\n strokeWidth=\"1.33333\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M2.66669 2.66797V13.3346\"\n stroke=\"currentColor\"\n strokeWidth=\"1.33333\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_6869_7309\">\n <rect width=\"16\" height=\"16\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n)\n\nexport const RenameIcon = (props: SVGProps<SVGSVGElement>) => (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path\n d=\"M8 13.3281H14\"\n stroke=\"currentColor\"\n strokeWidth=\"1.33333\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M11 2.33609C11.2652 2.07087 11.6249 1.92188 12 1.92188C12.1857 1.92188 12.3696 1.95845 12.5412 2.02953C12.7128 2.1006 12.8687 2.20477 13 2.33609C13.1313 2.46741 13.2355 2.62331 13.3066 2.79489C13.3776 2.96647 13.4142 3.15037 13.4142 3.33609C13.4142 3.52181 13.3776 3.7057 13.3066 3.87728C13.2355 4.04886 13.1313 4.20477 13 4.33609L4.66667 12.6694L2 13.3361L2.66667 10.6694L11 2.33609Z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.33333\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n)\n\nexport const DeleteIcon = (props: SVGProps<SVGSVGElement>) => (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <g clipPath=\"url(#clip0_6869_7344)\">\n <path\n d=\"M2.66669 4.66797H13.3334\"\n stroke=\"currentColor\"\n strokeWidth=\"1.02222\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M6.66669 7.33203V11.332\"\n stroke=\"currentColor\"\n strokeWidth=\"1.02222\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M9.33331 7.33203V11.332\"\n stroke=\"currentColor\"\n strokeWidth=\"1.02222\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M3.33331 4.66797L3.99998 12.668C3.99998 13.0216 4.14046 13.3607 4.3905 13.6108C4.64055 13.8608 4.97969 14.0013 5.33331 14.0013H10.6666C11.0203 14.0013 11.3594 13.8608 11.6095 13.6108C11.8595 13.3607 12 13.0216 12 12.668L12.6666 4.66797\"\n stroke=\"currentColor\"\n strokeWidth=\"1.02222\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M6 4.66667V2.66667C6 2.48986 6.07024 2.32029 6.19526 2.19526C6.32029 2.07024 6.48986 2 6.66667 2H9.33333C9.51014 2 9.67971 2.07024 9.80474 2.19526C9.92976 2.32029 10 2.48986 10 2.66667V4.66667\"\n stroke=\"currentColor\"\n strokeWidth=\"1.02222\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_6869_7344\">\n <rect width=\"16\" height=\"16\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n)\n","import BigDecimal from '@sentio/bigdecimal'\nexport const BD = BigDecimal.clone({\n EXPONENTIAL_AT: 1e9\n})\n\nexport function parseHex(hex: string = '0'): bigint {\n try {\n return BigInt(BD(hex).toString())\n } catch {\n return BigInt(0)\n }\n}\n\nexport function getNumberWithDecimal(hex?: string | bigint, decimal?: number, asNumber?: boolean) {\n if (hex === undefined || decimal === undefined) {\n return null\n }\n const bigInt = typeof hex === 'bigint' ? hex : parseHex(hex)\n const n = BD(bigInt.toString()).div(decimal > 0 ? BD(10).pow(decimal) : 1)\n if (asNumber) {\n return n.toNumber()\n }\n return n.toString()\n}","'use client'\n\nimport { useState, useEffect } from 'react'\n\n/**\n * React Hook for detecting mobile devices\n * @param breakpoint Breakpoint width, default 768px\n * @returns boolean Whether it's a mobile device\n */\nexport function useMobile(breakpoint: number = 768, defaultValue: boolean = false): boolean {\n const [isMobile, setIsMobile] = useState<boolean>(defaultValue)\n\n useEffect(() => {\n // Check user agent string\n const checkUserAgent = (): boolean => {\n if (typeof window === 'undefined') return false\n\n const userAgent = window.navigator.userAgent.toLowerCase()\n const mobileKeywords = [\n 'android',\n 'iphone',\n 'ipad',\n 'ipod',\n 'blackberry',\n 'windows phone',\n 'mobile',\n 'webos',\n 'opera mini'\n ]\n\n return mobileKeywords.some((keyword) => userAgent.includes(keyword))\n }\n\n // Check screen width\n const checkScreenWidth = (): boolean => {\n if (typeof window === 'undefined') return false\n return window.innerWidth < breakpoint\n }\n\n // Check touch support\n const checkTouchSupport = (): boolean => {\n if (typeof window === 'undefined') return false\n return 'ontouchstart' in window || navigator.maxTouchPoints > 0\n }\n\n // Comprehensive mobile detection\n const detectMobile = (): boolean => {\n const isUserAgentMobile = checkUserAgent()\n const isScreenSmall = checkScreenWidth()\n const hasTouchSupport = checkTouchSupport()\n\n // If user agent explicitly indicates mobile device, return true directly\n if (isUserAgentMobile) return true\n\n // If screen is small and supports touch, consider it mobile\n if (isScreenSmall && hasTouchSupport) return true\n\n // Judge based on screen width only\n return isScreenSmall\n }\n\n // Initial detection\n setIsMobile(detectMobile())\n\n // Listen for window resize\n const handleResize = () => {\n setIsMobile(detectMobile())\n }\n\n window.addEventListener('resize', handleResize)\n\n // Cleanup event listener\n return () => {\n window.removeEventListener('resize', handleResize)\n }\n }, [breakpoint])\n\n return isMobile\n}\n\nexport function useInDapp() {\n const isMobile = useMobile()\n if (process.env.NODE_ENV === 'development') {\n return isMobile\n }\n\n // @ts-ignore: Ignore missing type for isBinance\n const isBinanceBrowser = typeof window === 'object' && window.ethereum?.isBinance\n\n return isBinanceBrowser\n}\n"],"mappings":"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","names":["classNames","jsx","jsxs","classNames","jsx","jsxs","useRef","useState","useEffect","classNames","jsx","jsxs","jsx","jsxs","iconEl","Fragment","memo","classNames","jsx","jsxs","Fragment","memo","useState","useCallback","classNames","jsx","jsxs","classNames","useCallback","useState","useEffect","jsx","jsxs","classNames","cva","cx","forwardRef","jsx","jsxs","Input","cx","jsx","jsxs","cx","value","useCallback","useEffect","useState","cva","isFunction","jsx","jsxs","enabled","ChevronDownIcon","cva","useMemo","useRef","useState","isFunction","ClipLoader","Fragment","jsx","jsxs","buttonClass","cva","iconClass","isFunction","useRef","useState","useMemo","cx","options","ClipLoader","ChevronDownIcon","useState","useMemo","createContext","useContext","useCallback","useRef","useEffect","memo","useCallback","useState","useMemo","forwardRef","classNames","useEffect","jsx","jsxs","forwardRef","useState","useCallback","useMemo","classNames","Fragment","jsx","createContext","useContext","useCallback","useRef","useState","useEffect","data","useMemo","useCallback","jsx","Fragment","memo","memo","isString","jsx","offset","LinkifyText","useContext","createContext","useContext","jsx","jsxs","useContext","classNames","jsx","jsxs","StatusRole","classNames","jsx","forwardRef","memo","useCallback","useEffect","useMemo","useRef","useState","useVirtualizer","isEqual","Fragment","useState","useContext","useMemo","useEffect","useRef","Menu","Transition","FloatingPortal","useFloating","shift","flip","autoUpdate","useState","createContext","useContext","useFloating","useHover","useInteractions","autoUpdate","flip","shift","safePolygon","jsx","jsxs","createContext","useContext","cx","buttonClass","useState","useFloating","autoUpdate","flip","shift","useInteractions","useHover","safePolygon","items","createContext","Fragment","jsx","jsxs","offset","useState","useContext","useFloating","flip","shift","autoUpdate","useMemo","useRef","useEffect","Transition","Menu","items","cx","FloatingPortal","jsx","jsxs","jsx","jsxs","forwardRef","_ResizeTable","useMemo","useState","useEffect","isEqual","useRef","useVirtualizer","useCallback","cx","memo","useState","useEffect"]}
|
|
1
|
+
{"version":3,"sources":["../src/common/BarLoading.tsx","../src/common/SpinLoading.tsx","../src/common/CopyButton.tsx","../src/common/NewButton.tsx","../src/common/DivTooltip.tsx","../src/common/dialog/BaseDialog.tsx","../src/common/DisclosurePanel.tsx","../src/common/Collapse.tsx","../src/utils/use-boolean.ts","../src/common/Input.tsx","../src/common/select/Radio.tsx","../src/utils/classnames.ts","../src/common/select/Switch.tsx","../src/common/select/Select.tsx","../src/common/tree/FlatTree.tsx","../src/common/tree/Tree.tsx","../src/common/tree/TreeIcons.tsx","../src/common/text/LinkifyText.tsx","../src/common/Empty.tsx","../src/utils/extension-context.ts","../src/common/badge/StatusBadge.tsx","../src/common/HeaderToolsDropdown.tsx","../src/common/table/ResizeTable.tsx","../src/common/menu/PopupMenuButton.tsx","../src/common/menu/SubMenu.tsx","../src/utils/nav-size-context.ts","../src/common/table/Icons.tsx","../src/utils/number-format.ts","../src/utils/use-mobile.ts"],"sourcesContent":["import { BarLoader } from 'react-spinners'\nimport { LoaderHeightWidthProps } from 'react-spinners/helpers/props'\nimport { memo } from 'react'\nimport { cx as classNames } from 'class-variance-authority'\n\ninterface Props {\n hint?: React.ReactNode\n loading?: boolean\n className?: string\n width?: LoaderHeightWidthProps['width']\n logo?: React.ReactNode\n}\n\nfunction _BarLoading({\n hint = 'Loading Sentio',\n loading = true,\n className,\n width = 150,\n logo\n}: Props) {\n if (loading) {\n return (\n <div\n className={classNames(\n 'loading-container flex h-full flex-col justify-center overflow-hidden',\n className\n )}\n >\n {logo}\n\n {hint && (\n <div className=\"loading-text text-icontent text-gray my-2 text-center font-medium\">\n {hint}\n </div>\n )}\n <div className=\"flex justify-center pt-1\">\n <BarLoader\n color=\"#0756D5\"\n loading={true}\n height={5}\n width={width}\n cssOverride={{\n borderRadius: '4px'\n }}\n />\n </div>\n </div>\n )\n }\n return null\n}\n\nexport const BarLoading = memo(_BarLoading)\n\nexport default BarLoading\n","import React from 'react'\nimport { ClipLoader } from 'react-spinners'\nimport { cx as classNames } from 'class-variance-authority'\n\ninterface Props {\n loading?: boolean\n children?: React.ReactNode\n className?: string\n size?: number\n showMask?: boolean\n maskOpacity?: number // 0-100\n}\n\nexport const SpinLoading = React.forwardRef<HTMLDivElement, Props>(function Spinner(args: Props, ref) {\n const {\n loading = false,\n children,\n className,\n size = 48,\n showMask,\n maskOpacity = 80\n } = args\n return (\n <div ref={ref} className={classNames('relative', className)}>\n {showMask && loading && (\n <div\n className={classNames(\n 'absolute bottom-0 left-0 right-0 top-0 z-[1]',\n maskOpacity\n ? `bg-white dark:bg-sentio-gray-100/${maskOpacity}`\n : 'dark:bg-sentio-gray-100 bg-white'\n )}\n ></div>\n )}\n <div className=\"absolute left-[50%] top-[50%] z-[1] -translate-y-6\">\n <ClipLoader\n loading={loading}\n color=\"#3B82F6\"\n size={size}\n cssOverride={{\n borderWidth: 3\n }}\n />\n </div>\n {children}\n </div>\n )\n})\n\nexport default SpinLoading\n","'use client'\n\nimport {\n type CSSProperties,\n type FC,\n type ReactNode,\n useState,\n useCallback,\n useRef,\n type SVGProps,\n useEffect\n} from 'react'\nimport copy from 'copy-to-clipboard'\nimport { cx as classNames } from 'class-variance-authority'\n\nexport const CopyIcon = (props: SVGProps<SVGSVGElement>) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n strokeWidth=\"2\"\n stroke=\"currentColor\"\n {...props}\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M16.5 8.25V6a2.25 2.25 0 0 0-2.25-2.25H6A2.25 2.25 0 0 0 3.75 6v8.25A2.25 2.25 0 0 0 6 16.5h2.25m8.25-8.25H18a2.25 2.25 0 0 1 2.25 2.25V18A2.25 2.25 0 0 1 18 20.25h-7.5A2.25 2.25 0 0 1 8.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 0 0-2.25 2.25v6\"\n />\n </svg>\n)\n\nexport const CopySuccessIcon = (props: SVGProps<SVGSVGElement>) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"rgb(var(--cyan-600))\"\n {...props}\n >\n <path\n fillRule=\"evenodd\"\n d=\"M2.25 12c0-5.385 4.365-9.75 9.75-9.75s9.75 4.365 9.75 9.75-4.365 9.75-9.75 9.75S2.25 17.385 2.25 12Zm13.36-1.814a.75.75 0 1 0-1.22-.872l-3.236 4.53L9.53 12.22a.75.75 0 0 0-1.06 1.06l2.25 2.25a.75.75 0 0 0 1.14-.094l3.75-5.25Z\"\n clipRule=\"evenodd\"\n />\n </svg>\n)\n\ninterface Props {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\n text?: string | Function\n size?: number\n ml?: number\n mr?: number\n hover?: boolean\n placement?: 'left' | 'right'\n className?: string\n children?: ReactNode\n}\n\nexport const CopyButton: FC<Props> = ({\n text = '',\n size = 16,\n ml,\n mr,\n placement = 'right',\n hover,\n children,\n className\n}) => {\n const [copied, setCopied] = useState(false)\n const [isHovered, setIsHovered] = useState(false)\n const [isMobile, setIsMobile] = useState(false)\n const timeoutRef = useRef<NodeJS.Timeout | null>(null)\n const iconContainerRef = useRef<HTMLDivElement>(null)\n\n useEffect(() => {\n const checkMobile = () => {\n setIsMobile(window.innerWidth < 640)\n }\n checkMobile()\n window.addEventListener('resize', checkMobile)\n return () => window.removeEventListener('resize', checkMobile)\n }, [])\n\n const copyToClipboard = useCallback((val: string) => {\n copy(val)\n setCopied(true)\n\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current)\n }\n\n timeoutRef.current = setTimeout(() => {\n setCopied(false)\n timeoutRef.current = null\n }, 2000)\n }, [])\n\n const onCopy = useCallback(\n (e: React.MouseEvent<HTMLElement, MouseEvent>) => {\n const target = e.target as HTMLElement\n if (\n target.nodeName.toLowerCase() === 'a' &&\n target.getAttribute('href')\n ) {\n return\n }\n e.stopPropagation()\n e.preventDefault()\n if (copied) return\n if (typeof text === 'function') {\n const val = text() as string | Promise<string>\n if (val instanceof Promise) {\n val\n .then((res: string) => {\n copyToClipboard(res)\n })\n .catch((error) => {\n console.error(error)\n })\n } else {\n copyToClipboard(val)\n }\n } else {\n copyToClipboard(text)\n }\n },\n [copied, text, copyToClipboard]\n )\n\n const handleEventProxy = useCallback(\n (e: React.MouseEvent<HTMLElement, MouseEvent>) => {\n if (children) {\n onCopy(e)\n }\n },\n [children, onCopy]\n )\n\n const isPureComponent = !children\n\n const iconContainerStyle: CSSProperties = {\n minWidth: `${size}px`,\n maxWidth: `${size}px`,\n minHeight: `${size}px`,\n maxHeight: `${size}px`,\n marginLeft: ml !== undefined ? `${ml}px` : undefined,\n marginRight: mr !== undefined ? `${mr}px` : undefined,\n visibility:\n !isPureComponent && hover\n ? isMobile\n ? 'visible'\n : isHovered\n ? 'visible'\n : 'hidden'\n : 'visible'\n }\n\n const containerStyle: CSSProperties = {\n display: !isPureComponent ? 'inline-block' : 'contents'\n }\n\n const svgStyle: CSSProperties = {\n margin: 0\n }\n\n const iconCopyStyle: CSSProperties = {\n transform: copied ? 'translateY(-100%)' : 'translateY(0)'\n }\n\n const iconSuccessStyle: CSSProperties = {\n transform: copied ? 'translateY(-100%)' : 'translateY(100%)'\n }\n\n return (\n <div\n className={classNames(\n 'inline-block min-w-fit overflow-hidden whitespace-nowrap',\n 'space-x-1',\n className\n )}\n style={containerStyle}\n onClick={handleEventProxy}\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n >\n {placement === 'right' && children}\n <div\n ref={iconContainerRef}\n className={classNames(\n 'icon-container inline-block overflow-hidden align-sub',\n isPureComponent ? className : '',\n copied ? 'copied' : ''\n )}\n style={iconContainerStyle}\n >\n <CopyIcon\n className=\"icon-copy block cursor-pointer transition-all\"\n width={size}\n height={size}\n style={{ ...svgStyle, ...iconCopyStyle }}\n // @ts-expect-error allow unknown prop\n onClick={onCopy}\n />\n <CopySuccessIcon\n className=\"icon-success block transition-all\"\n width={size}\n height={size}\n style={{ ...svgStyle, ...iconSuccessStyle }}\n />\n </div>\n {placement === 'left' && children}\n </div>\n )\n}\n","import { cloneElement, forwardRef, MutableRefObject, ReactNode, useMemo } from 'react'\nimport { PopoverTooltip } from './DivTooltip'\nimport { cva, cx, VariantProps } from 'class-variance-authority'\n\nexport const buttonClass = cva(['inline-flex', 'items-center', 'font-medium'], {\n variants: {\n role: {\n primary: ['btn-primary'],\n secondary: ['btn-secondary'],\n dashed: ['btn-dashed'],\n text: ['btn-text'],\n link: ['btn-link'],\n tertiary: [],\n tertiarytext: [],\n custom: [] // custom button\n },\n status: {\n default: 'btn-status-default',\n danger: 'btn-status-danger'\n },\n size: {\n sm: ['px-2', 'py-1.5', 'text-xs', 'font-normal', 'gap-2'],\n default: ['px-2.5', 'text-ilabel', 'font-ilabel', 'gap-2', 'py-1'],\n md: ['px-2.5 text-ilabel font-ilabel gap-2', 'py-1.5'],\n lg: ['px-3 text-sm gap-3', 'py-2']\n },\n disabled: {\n false: [''],\n true: ['btn-disabled']\n },\n position: {\n begin: ['rounded-l-md'],\n end: ['rounded-r-md'],\n middle: [''],\n full: ['rounded-md']\n }\n },\n compoundVariants: [\n {\n role: 'secondary',\n size: 'default',\n class: 'py-[3px]'\n },\n {\n role: 'dashed',\n size: 'default',\n class: 'py-[3px]'\n },\n {\n role: 'secondary',\n size: 'md',\n class: 'py-[5px]'\n },\n {\n role: 'dashed',\n size: 'md',\n class: 'py-[5px]'\n },\n {\n role: 'secondary',\n size: 'lg',\n class: 'py-[7px]'\n },\n {\n role: 'dashed',\n size: 'lg',\n class: 'py-[7px]'\n },\n {\n role: 'tertiary',\n disabled: false,\n class: [\n 'bg-primary-100 dark:bg-gray-100',\n 'hover:bg-primary-100/90 dark:hover:bg-gray-200/90',\n 'active:bg-primary-200 dark:active:bg-gray-300',\n 'text-primary-600 dark:text-gray-600',\n 'hover:text-primary-500 dark:hover:text-gray-700',\n 'active:text-primary-700 dark:active:text-gray-800',\n 'focus:ring-primary-700 dark:focus:ring-gray-800'\n ]\n },\n {\n role: 'tertiary',\n disabled: true,\n class: 'cursor-not-allowed bg-gray-100 text-gray-400'\n },\n {\n role: 'tertiarytext',\n disabled: false,\n class: [\n 'hover:bg-primary-100/90 dark:hover:bg-gray-200/90',\n 'active:bg-primary-200 dark:active:bg-gray-300',\n 'text-primary-600 dark:text-gray-600',\n 'hover:text-primary-500 dark:hover:text-gray-700',\n 'active:text-primary-700 dark:active:text-gray-800',\n 'focus:ring-primary-700 dark:focus:ring-gray-800'\n ]\n },\n {\n role: 'tertiarytext',\n disabled: true,\n class: 'cursor-not-allowed text-gray-400'\n }\n ],\n defaultVariants: {\n role: 'secondary',\n status: 'default',\n size: 'default',\n position: 'full',\n disabled: false\n }\n})\n\nexport interface ButtonProps extends VariantProps<typeof buttonClass> {\n className?: string\n // role?: 'primary' | 'secondary' | 'dashed' | 'text' | 'link'\n // status?: 'default' | 'danger'\n onClick?: (evt: React.MouseEvent) => void\n children?: ReactNode\n // size?: 'md' | 'lg'\n type?: 'submit' | 'button' | 'reset'\n processing?: boolean\n // disabled?: boolean\n disabledHint?: React.ReactNode\n disabledHintPortal?: boolean\n // position?: 'begin' | 'end' | 'middle' | 'full'\n ref?: MutableRefObject<any>\n icon?: React.ReactElement\n title?: string\n value?: string\n id?: string\n}\n\nexport function Proccessing({ className, light }: { className?: string; light?: boolean }) {\n return (\n <svg className={`h-5 w-5 animate-spin ${className}`} viewBox=\"0 0 24 24\">\n <circle\n className={light ? 'opacity-5' : 'opacity-10'}\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"currentColor\"\n strokeWidth=\"4\"\n ></circle>\n <path\n className={light ? 'opacity-50' : 'opacity-75'}\n fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"\n ></path>\n </svg>\n )\n}\n\nconst iconClass = cva('', {\n variants: {\n size: {\n default: 'w-4 h-4',\n md: 'w-[18px] h-[18px]',\n lg: 'w-5 h-4',\n sm: 'w-4 h-4'\n },\n disabled: {\n true: 'saturate-0',\n false: ''\n }\n },\n defaultVariants: {\n size: 'default',\n disabled: false\n }\n})\n\nconst pIconClass = cva('', {\n variants: {\n size: {\n default: '!w-4 !h-4',\n md: '!w-[18px] !h-[18px]',\n lg: '!w-5 !h-5',\n sm: '!w-4 !h-4'\n }\n },\n defaultVariants: {\n size: 'default'\n }\n})\n\nfunction Button(\n {\n className,\n size,\n type,\n role,\n status,\n onClick,\n children,\n processing,\n disabled,\n disabledHint,\n disabledHintPortal,\n position,\n icon,\n title,\n value,\n id\n }: ButtonProps,\n ref: any\n) {\n const iconClasses = iconClass({ size: size, disabled: disabled })\n\n const iconEl = useMemo(() => {\n let iconEl: ReactNode = null\n\n if (processing) {\n iconEl = (\n <Proccessing\n className={cx(pIconClass({ size: size }), role == 'primary' ? 'text-white' : '')}\n light={role !== 'primary'}\n />\n )\n } else if (icon) {\n iconEl = cloneElement(icon, { className: cx(icon.props.className, iconClasses) })\n }\n return iconEl\n }, [icon, iconClasses, processing, role])\n\n // const cls = classNames(className, sizeClasses, typeClasses, shapeClasses)\n const cls = cx(\n className,\n buttonClass({\n size: size,\n status: status,\n role: role,\n disabled: disabled,\n position: position\n })\n )\n\n const btn = (\n <button\n title={title}\n onClick={onClick}\n type={type}\n disabled={disabled || processing}\n className={cls}\n ref={ref}\n value={value}\n suppressHydrationWarning\n id={id}\n >\n {iconEl}\n {children}\n </button>\n )\n\n if (disabled && disabledHint) {\n return (\n <PopoverTooltip\n usePortal={disabledHintPortal}\n buttonClassName={disabledHintPortal ? 'w-full' : ''}\n className=\"text-gray\"\n text={<p className=\"text-sm text-gray-500\">{disabledHint}</p>}\n hideArrow\n >\n {btn}\n </PopoverTooltip>\n )\n }\n\n return btn\n}\n\nexport const NewButton = forwardRef(Button)\nexport default NewButton\n","/**\n * The differece between this and the PopoverTooltip.tsx is that this one pass mouse click event to the parent\n */\nimport React, { type FC, useRef, useState, useEffect } from 'react'\nimport {\n useFloating,\n useHover,\n useInteractions,\n safePolygon,\n arrow,\n offset,\n shift,\n Strategy,\n flip,\n autoUpdate,\n FloatingPortal,\n useDelayGroup\n} from '@floating-ui/react'\nimport { OffsetOptions, Placement } from '@floating-ui/core'\nimport { cx as classNames } from 'class-variance-authority'\nimport { isString } from 'lodash'\n\ninterface Props {\n text?: string | React.ReactNode\n className?: string\n buttonClassName?: string\n activeButtonClassName?: string\n icon?: React.ReactNode\n children?: React.ReactNode\n strategy?: Strategy\n hideArrow?: boolean\n offsetOptions?: OffsetOptions\n placementOption?: Placement\n maxWidth?: string\n usePortal?: boolean\n enableFadeAnimation?: boolean\n animationDuration?: number\n}\n\nexport const PopoverTooltip: FC<Props> = ({\n icon,\n text,\n className,\n buttonClassName,\n activeButtonClassName,\n children,\n strategy: propStrategy,\n hideArrow,\n offsetOptions = 8,\n placementOption = 'bottom',\n maxWidth = 'max-w-[300px]',\n usePortal = false,\n enableFadeAnimation = false,\n animationDuration = 150\n}) => {\n const arrowRef = useRef(null)\n const [open, setOpen] = useState(false)\n const [isVisible, setIsVisible] = useState(false)\n const timeoutRef = useRef<NodeJS.Timeout>()\n\n const {\n x,\n y,\n refs,\n strategy,\n middlewareData: { arrow: { x: arrowX, y: arrowY } = {} },\n context,\n placement\n } = useFloating({\n open,\n onOpenChange: (newOpen) => {\n setOpen(newOpen)\n if (enableFadeAnimation) {\n if (newOpen) {\n setIsVisible(true)\n } else {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current)\n }\n timeoutRef.current = setTimeout(() => {\n setIsVisible(false)\n }, animationDuration)\n }\n } else {\n setIsVisible(newOpen)\n }\n },\n middleware: [\n offset(offsetOptions),\n flip(),\n shift(),\n arrow({ element: arrowRef, padding: 8 })\n ],\n strategy: propStrategy,\n placement: placementOption,\n whileElementsMounted: autoUpdate\n })\n\n const {\n delay = {\n open: 500,\n close: 0\n }\n } = useDelayGroup(context)\n\n const { getReferenceProps, getFloatingProps } = useInteractions([\n useHover(context, {\n handleClose: safePolygon({\n buffer: -Infinity\n }),\n delay: delay\n })\n ])\n\n useEffect(() => {\n return () => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current)\n }\n }\n }, [])\n\n if (!text)\n return (\n <>\n {icon}\n {children}\n </>\n )\n\n const Portal = usePortal ? FloatingPortal : React.Fragment\n\n return (\n <div className={classNames('relative flex items-center', className)}>\n <div\n ref={refs.setReference}\n {...getReferenceProps()}\n className={classNames(buttonClassName, open && activeButtonClassName)}\n >\n {icon}\n {children}\n </div>\n\n {(enableFadeAnimation ? isVisible : open) && (\n <Portal>\n <div className=\"_sentio_\">\n <div\n className={classNames(\n 'sentio-tooltip dark:bg-sentio-gray-200 z-10 rounded-md bg-white p-2 text-xs shadow-lg ring-1 ring-black ring-opacity-5 dark:ring-gray-100',\n enableFadeAnimation &&\n `transition-opacity duration-[${animationDuration}ms] ease-in-out`,\n enableFadeAnimation ? (open ? 'opacity-100' : 'opacity-0') : ''\n )}\n ref={refs.setFloating}\n style={{\n position: strategy,\n top: y ?? 0,\n left: x ?? 0\n }}\n {...getFloatingProps}\n >\n {!hideArrow && placement === 'bottom' && (\n <div\n className=\"arrow dark:before:bg-sentio-gray-200 -translate-y-[5px] before:absolute before:h-2 before:w-2 before:rotate-45 before:border-l before:border-t before:border-black/5 before:bg-white dark:before:border-gray-100\"\n ref={arrowRef}\n style={{\n left: arrowX ?? 0,\n top: arrowY ?? 0,\n position: 'absolute'\n }}\n />\n )}\n {isString(text) ? (\n <p\n className={classNames('w-max whitespace-pre-wrap', maxWidth)}\n >\n {text}\n </p>\n ) : (\n <div className={classNames('w-max overflow-auto', maxWidth)}>\n {text}\n </div>\n )}\n </div>\n </div>\n </Portal>\n )}\n </div>\n )\n}\n","import {\n type ReactElement,\n type FC,\n Fragment,\n memo,\n createContext\n} from 'react'\nimport { Dialog, Transition } from '@headlessui/react'\nimport Button, { ButtonProps } from '../NewButton'\nimport { cx as classNames } from 'class-variance-authority'\n\nexport const BaseZIndexContext = createContext(10)\n\ninterface Props {\n title?: string | ReactElement\n titleBorder?: boolean\n footerBorder?: boolean\n children?: ReactElement\n open: boolean\n onClose: () => void\n cancelText?: string\n cancelProps?: ButtonProps\n onCancel?: () => void\n okText?: string\n okProps?: ButtonProps\n onOk?: () => void\n buttonsClassName?: string\n extraButtons?: ReactElement | ReactElement[]\n panelClassName?: string\n initialFocus?: React.MutableRefObject<HTMLElement | null> | undefined\n errorMessages?: string\n footer?: ReactElement // customize whole footer\n zIndex?: number\n mask?: 'normal' | 'light'\n}\n\nconst _BaseDialog: FC<Props> = ({\n title,\n open,\n onClose,\n onCancel,\n cancelText,\n cancelProps = {},\n onOk,\n okText,\n okProps = {},\n children,\n buttonsClassName,\n panelClassName,\n titleBorder = true,\n footerBorder = true,\n initialFocus,\n extraButtons,\n errorMessages,\n footer,\n zIndex = 10,\n mask = 'normal'\n}) => {\n return (\n <Transition appear as={Fragment} show={open}>\n <Dialog\n className={classNames('relative', '_sentio_')}\n as=\"div\"\n onClose={onClose}\n initialFocus={initialFocus}\n style={{\n zIndex: zIndex\n }}\n >\n <BaseZIndexContext.Provider value={zIndex}>\n <Transition.Child\n as={Fragment}\n enter=\"ease-out duration-300\"\n enterFrom=\"opacity-0\"\n enterTo=\"opacity-100\"\n leave=\"ease-in duration-200\"\n leaveFrom=\"opacity-100\"\n leaveTo=\"opacity-0\"\n >\n <div\n className={classNames(\n 'fixed inset-0 transition-opacity',\n mask === 'light'\n ? 'bg-gray-500/30 dark:bg-gray-200/30'\n : 'bg-gray-500/75 dark:bg-gray-200/50'\n )}\n />\n </Transition.Child>\n <div className=\"fixed inset-0 z-10 overflow-y-auto\">\n <div className=\"flex min-h-full items-end justify-center p-4 text-center sm:items-center sm:p-0\">\n <Transition.Child\n as={Fragment}\n enter=\"ease-out duration-300\"\n enterFrom=\"opacity-0 translate-y-4 sm:translate-y-0 sm:scale-95\"\n enterTo=\"opacity-100 translate-y-0 sm:scale-100\"\n leave=\"ease-in duration-200\"\n leaveFrom=\"opacity-100 translate-y-0 sm:scale-100\"\n leaveTo=\"opacity-0 translate-y-4 sm:translate-y-0 sm:scale-95\"\n >\n <Dialog.Panel\n data-testid=\"create-dashboard\"\n className={classNames(\n 'dark:bg-sidebar relative transform overflow-hidden rounded-lg bg-white pb-4 pt-5 text-left shadow-xl transition-all sm:my-8 sm:w-full sm:max-w-3xl',\n panelClassName\n )}\n >\n {title ? (\n <Dialog.Title\n as=\"h3\"\n className={classNames(\n 'text-ilabel font-ilabel text-text-foreground pl-4',\n titleBorder && 'border-border-color border-b pb-4'\n )}\n >\n {title}\n </Dialog.Title>\n ) : null}\n {children}\n {footer ? (\n footer\n ) : (\n <div\n className={classNames(\n 'flex items-center justify-between pt-4 ',\n footerBorder && 'border-border-color border-t'\n )}\n >\n <div\n className=\"truncate px-4 text-sm font-semibold text-red-500\"\n title={errorMessages || ''}\n >\n {errorMessages || ' '}\n </div>\n <div\n className={classNames(\n `flex flex-row-reverse items-center gap-3 px-4`,\n buttonsClassName ?? ''\n )}\n >\n {extraButtons}\n {onOk && (\n <Button role=\"primary\" onClick={onOk} {...okProps}>\n {okText || 'OK'}\n </Button>\n )}\n {onCancel && (\n <Button onClick={onCancel} {...cancelProps}>\n {cancelText || 'Cancel'}\n </Button>\n )}\n </div>\n </div>\n )}\n </Dialog.Panel>\n </Transition.Child>\n </div>\n </div>\n </BaseZIndexContext.Provider>\n </Dialog>\n </Transition>\n )\n}\n\nexport const BaseDialog = memo(_BaseDialog)\n","import { type ReactNode, type FC, useState, useCallback } from 'react'\nimport { cx as classNames } from 'class-variance-authority'\nimport isFunction from 'lodash/isFunction'\nimport { LuChevronRight } from 'react-icons/lu'\n\ninterface Props {\n defaultOpen?: boolean\n children?: ReactNode\n title: string | ReactNode | ((open: boolean) => ReactNode)\n titleClassName?: string\n containerClassName?: string\n iconClassName?: string\n className?: string\n}\n\nexport const DisclosurePanel: FC<Props> = ({\n title,\n children,\n defaultOpen,\n className,\n containerClassName,\n iconClassName = 'h-5 w-5',\n titleClassName\n}) => {\n const [open, setOpen] = useState(defaultOpen || false)\n\n const toggle = useCallback(() => {\n setOpen((prev) => !prev)\n }, [])\n\n return (\n <div\n className={\n containerClassName ||\n 'dark:bg-sentio-gray-200 w-full rounded bg-[#F6F8FA]'\n }\n >\n <button\n className={classNames(\n open ? 'rounded-t' : 'rounded',\n 'focus-visible:ring-primary-500 text-ilabel font-ilabel text-text-foreground hover:bg-sentio-gray-100 dark:hover:bg-sentio-gray-400 flex w-full px-2 py-1.5 text-left focus:outline-none focus-visible:ring focus-visible:ring-opacity-75',\n titleClassName\n )}\n onClick={toggle}\n type=\"button\"\n >\n <LuChevronRight\n className={classNames(\n open ? 'rotate-90 transform' : '',\n 'mr-1 self-center transition-all',\n iconClassName\n )}\n />\n {isFunction(title) ? title(open) : title}\n </button>\n {open && <div className={classNames('p-2', className)}>{children}</div>}\n </div>\n )\n}\n","import { ChevronDownIcon } from '@heroicons/react/20/solid'\nimport { cx as classNames } from 'class-variance-authority'\nimport { useBoolean } from '../utils/use-boolean'\nimport { type ReactNode, type FC, useEffect } from 'react'\n\ninterface CollapseProps {\n title: ReactNode | string\n children?: ReactNode\n className?: string\n titleClassName?: string\n defaultOpen?: boolean\n iconClassName?: string\n}\n\nexport const Collapse: FC<CollapseProps> = ({\n title,\n children,\n className,\n titleClassName,\n defaultOpen = false,\n iconClassName = 'h-5 w-5'\n}) => {\n const { toggle, value: visible, setTrue, setFalse } = useBoolean(defaultOpen)\n\n useEffect(() => {\n if (defaultOpen) {\n setTrue()\n } else {\n setFalse()\n }\n }, [defaultOpen, setTrue, setFalse])\n\n return (\n <div className={classNames('space-y-2', className)}>\n <span\n className={classNames(\n 'text-gray hover:text-primary active:text-primary-700 inline-flex cursor-pointer items-center gap-2',\n titleClassName\n )}\n onClick={toggle}\n >\n {title}\n <ChevronDownIcon\n className={classNames(\n 'transition',\n iconClassName,\n visible ? 'rotate-180' : ''\n )}\n />\n </span>\n <div\n className={classNames(\n 'overflow-hidden transition-all duration-200',\n visible ? 'opacity-100' : 'opacity-0'\n )}\n style={{\n maxHeight: visible ? '2000px' : '0px'\n }}\n >\n {children}\n </div>\n </div>\n )\n}\n","import { useCallback, useState } from 'react'\n\nexport function useBoolean(defaultValue = false) {\n const [value, setValue] = useState(defaultValue)\n\n const setTrue = useCallback(() => setValue(true), [])\n const setFalse = useCallback(() => setValue(false), [])\n const toggle = useCallback(() => setValue((v) => !v), [])\n\n return {\n value,\n setValue,\n setTrue,\n setFalse,\n toggle\n }\n}\n","import { cva, cx } from 'class-variance-authority'\nimport { ExclamationCircleIcon } from '@heroicons/react/20/solid'\nimport { forwardRef } from 'react'\nimport { FieldError, UseFormRegisterReturn } from 'react-hook-form'\n\nconst inputContainerStyles = cva(\n 'flex relative rounded-md border focus-within:ring-1 w-full font-normal overflow-hidden',\n {\n variants: {\n size: {\n sm: 'text-sm h-6',\n md: 'text-base h-8',\n lg: 'text-lg h-10'\n },\n error: {\n true: 'border-red-300 text-red-900 placeholder:text-red-300 focus-within:ring-red-500',\n false:\n 'border-gray-300 focus-within:ring-primary-500 focus-within:border-primary-500'\n },\n readOnly: {\n true: 'bg-gray-50 text-gray-400',\n false: 'text-text-foreground'\n }\n },\n defaultVariants: {\n size: 'md',\n error: false,\n readOnly: false\n },\n compoundVariants: []\n }\n)\n\nconst inputStyles = cva(\n [\n 'block',\n 'w-full',\n 'placeholder:text-ilabel placeholder:font-normal',\n 'border-none focus:ring-0',\n 'focus:outline-none'\n ],\n {\n variants: {\n size: {\n sm: 'sm:text-xs placeholder:text-xs placeholder:font-normal pl-2 pr-6',\n md: 'sm:text-ilabel placeholder:text-ilabel placeholder:font-normal pl-2 pr-10',\n lg: 'sm:text-lg placeholder:text-lg placeholder:font-normal pl-3 pr-10'\n },\n error: {\n true: 'border-red-300',\n false: 'border-gray-300 '\n }\n },\n defaultVariants: {\n size: 'md',\n error: false\n }\n }\n)\n\nconst iconStyles = cva('text-red-500', {\n variants: {\n size: {\n sm: 'h-4 w-4',\n md: 'h-5 w-5',\n lg: 'h-6 w-6'\n }\n },\n defaultVariants: {\n size: 'md'\n }\n})\n\ntype InputProps = UseFormRegisterReturn & {\n error?: FieldError\n errorClassName?: string\n size?: 'sm' | 'md' | 'lg'\n className?: string\n value?: string\n placeholder?: string\n} & React.InputHTMLAttributes<HTMLInputElement>\n\nexport const Input = forwardRef<HTMLInputElement, InputProps>(\n function Input(props, inputRef) {\n const { className, error, errorClassName, size, ...rest } = props\n\n const containerClassName = inputContainerStyles({\n size,\n error: !!error,\n readOnly: rest.disabled\n })\n const inputClassName = cx(inputStyles({ size, error: !!error }), className)\n\n return (\n <div>\n <div className={containerClassName}>\n <input {...rest} ref={inputRef} className={inputClassName} />\n {error && (\n <div className=\"pointer-events-none absolute inset-y-0 right-0 flex items-center pr-3\">\n <ExclamationCircleIcon className={iconStyles({ size })} />\n </div>\n )}\n </div>\n {error && (\n <p className=\"mt-2 text-xs text-red-600\">\n {typeof error == 'string' ? error : error.message}\n </p>\n )}\n </div>\n )\n }\n)\n","import { RadioGroup } from '@headlessui/react'\nimport { classNames } from '../../utils/classnames'\n\ninterface Props<T> {\n value?: T\n onChange?: (v: T) => void\n label?: string\n labelClassName?: string\n containerClassName?: string\n options: {\n name: string\n value: T\n }[]\n vertical?: boolean\n}\n\nexport function RadioSelect<T>({\n value,\n onChange,\n label,\n labelClassName,\n options,\n vertical,\n containerClassName\n}: Props<T>) {\n return (\n <RadioGroup value={value} onChange={onChange}>\n {label && (\n <RadioGroup.Label className=\"text-ilabel text-text-foreground mr-4 font-medium\">\n {label}:\n </RadioGroup.Label>\n )}\n <div\n className={classNames(\n 'item-center',\n vertical ? 'flex flex-col gap-2' : 'inline-flex gap-4',\n containerClassName\n )}\n >\n {options.map(({ name, value }, index) => (\n <RadioGroup.Option key={index} value={value}>\n {({ checked }) => (\n <span className=\"group/radio\">\n <input\n readOnly\n type=\"radio\"\n checked={checked}\n className=\"border-sentio-gray-300 group-hover/radio:border-primary-500\"\n />\n <label\n className={classNames(\n 'text-ilabel group-hover/radio:text-primary-500 group-hover/radio:dark:text-primary-600 ml-2 font-medium ',\n checked\n ? 'text-primary dark:text-primary-700'\n : 'text-gray',\n labelClassName\n )}\n >\n {name}\n </label>\n </span>\n )}\n </RadioGroup.Option>\n ))}\n </div>\n </RadioGroup>\n )\n}\n","export { cx as classNames } from 'class-variance-authority'\n","import { useCallback, useEffect, useState } from 'react'\nimport { Switch as HeadlessSwitch } from '@headlessui/react'\nimport { cva } from 'class-variance-authority'\nimport { isFunction } from 'lodash'\n\nconst switchClass = cva(\n [\n 'relative inline-flex shrink-0 rounded-full border-2 border-transparent transition-colors duration-200 ease-in-out focus:outline-none focus-visible:ring-2 focus-visible:ring-white focus-visible:ring-opacity-75'\n ],\n {\n variants: {\n size: {\n lg: 'h-8 w-[68px]',\n default: 'h-6 w-[52px]',\n sm: 'h-[16px] w-[30px]'\n },\n enabled: {\n true: 'bg-primary group-hover:bg-primary-500',\n false: 'bg-gray-400/50 group-hover:bg-primary-200'\n },\n disabled: {\n true: 'cursor-not-allowed opacity-50',\n false: 'cursor-pointer'\n }\n },\n defaultVariants: {\n size: 'default',\n enabled: false\n },\n compoundVariants: [\n {\n enabled: false,\n disabled: true,\n class: '!bg-gray-400/50'\n }\n ]\n }\n)\n\nconst dotClass = cva(\n 'pointer-events-none inline-block transform rounded-full bg-white dark:bg-sentio-gray-100 shadow-lg ring-0 transition duration-200 ease-in-out',\n {\n variants: {\n size: {\n lg: 'h-7 w-7',\n default: 'h-5 w-5',\n sm: 'h-3 w-3'\n },\n enabled: {\n true: '',\n false: 'translate-x-0'\n }\n },\n defaultVariants: {\n size: 'default'\n },\n compoundVariants: [\n {\n size: 'sm',\n enabled: true,\n class: 'translate-x-3.5 switch-dot-sm'\n },\n {\n size: 'default',\n enabled: true,\n class: 'translate-x-7'\n },\n {\n size: 'lg',\n enabled: true,\n class: 'translate-x-9'\n }\n ]\n }\n)\n\nconst labelClass = cva(\n 'text-text-foreground ml-2 font-medium align-text-bottom',\n {\n variants: {\n size: {\n lg: 'text-sm leading-8',\n default: 'text-icontent leading-6 ',\n sm: 'text-icontent leading-5'\n },\n disabled: {\n true: 'cursor-not-allowed opacity-50',\n false: 'cursor-pointer'\n }\n },\n defaultVariants: {\n size: 'default',\n disabled: false\n }\n }\n)\n\nexport interface SwitchProps {\n checked?: boolean\n onChange?: (checked: boolean) => void\n srText?: string\n size?: 'lg' | 'default' | 'sm'\n disabled?: boolean\n label?: string\n}\n\nexport function Switch({\n checked,\n onChange: _onChange,\n srText,\n size = 'default',\n disabled,\n label\n}: SwitchProps) {\n const [enabled, setState] = useState(checked)\n\n const onChange = useCallback(() => {\n setState((enabled) => {\n if (isFunction(_onChange)) {\n setTimeout(() => {\n _onChange(!enabled)\n })\n }\n return !enabled\n })\n }, [_onChange])\n\n useEffect(() => {\n setState(checked)\n }, [checked])\n\n return (\n <HeadlessSwitch.Group>\n <HeadlessSwitch\n checked={enabled}\n onChange={onChange || setState}\n className={switchClass({\n enabled,\n size,\n disabled\n })}\n disabled={disabled}\n >\n {srText && <span className=\"sr-only\">{srText}</span>}\n <span\n aria-hidden=\"true\"\n className={dotClass({\n enabled,\n size\n })}\n />\n </HeadlessSwitch>\n {label && (\n <HeadlessSwitch.Label\n className={labelClass({\n size,\n disabled\n })}\n >\n {label}\n </HeadlessSwitch.Label>\n )}\n </HeadlessSwitch.Group>\n )\n}\n","import { Listbox } from '@headlessui/react'\nimport { CheckIcon, ChevronDownIcon } from '@heroicons/react/20/solid'\nimport { classNames } from '../../utils/classnames'\nimport { isEqual } from 'lodash'\nimport { cva } from 'class-variance-authority'\nimport {\n ReactElement,\n ReactNode,\n useMemo,\n useRef,\n useState,\n useContext,\n Key\n} from 'react'\nimport isFunction from 'lodash/isFunction'\nimport { FieldError } from 'react-hook-form'\nimport { ClipLoader } from 'react-spinners'\nimport { useLayer } from 'react-laag'\nimport { useResizeDetector } from 'react-resize-detector'\nimport { BaseZIndexContext } from '../dialog/BaseDialog'\n\nconst buttonClass = cva(\n [\n 'focus:ring-primary focus:border-primary',\n 'relative w-full rounded-md border bg-white dark:bg-sentio-gray-100 text-left focus:outline-none focus:ring-1 text-ilabel'\n ],\n {\n variants: {\n open: {\n true: 'bg-sentio-gray-100 ring-1 ring-primary border-primary',\n false: ''\n },\n size: {\n sm: 'py-1 px-2',\n md: 'py-2 px-3'\n },\n error: {\n true: 'border-red-300 text-red-900 placeholder-red-300 focus-within:ring-red-500',\n false: 'border-border-color'\n },\n disabled: {\n true: 'cursor-not-allowed',\n false: 'cursor-default'\n }\n },\n defaultVariants: {\n open: false,\n size: 'sm',\n error: false,\n disabled: false\n },\n compoundVariants: [\n {\n open: true,\n error: true,\n class: '!ring-red-300 border-red-300'\n }\n ]\n }\n)\n\nconst optionClass = cva(['relative cursor-default select-none'], {\n variants: {\n disabled: {\n true: 'cursor-not-allowed text-gray-400',\n false: 'text-text-foreground'\n },\n size: {\n sm: 'py-1 pl-3 pr-5',\n md: 'py-2 pl-3 pr-6'\n },\n active: {\n true: 'bg-primary-50 dark:bg-primary-400/50',\n false: ''\n },\n selected: {\n true: '!bg-primary-100 dark:!bg-primary-400',\n false: ''\n }\n },\n defaultVariants: {\n disabled: false,\n active: false,\n selected: false,\n size: 'sm'\n }\n})\n\nconst iconClass = cva([], {\n variants: {\n size: {\n sm: 'h-3.5 w-3.5',\n md: 'h-4 w-4'\n },\n disabled: {\n true: 'opacity-50',\n false: ''\n }\n },\n defaultVariants: {\n size: 'sm',\n disabled: false\n }\n})\n\ntype labelProps = {\n selected?: boolean\n active?: boolean\n}\n\nexport interface IOption<T> {\n label: ReactNode | ((props: labelProps) => ReactNode)\n value: T\n disabled?: boolean\n title?: string\n}\n\nexport interface SelectProps<T> {\n options: IOption<T>[]\n value: T\n onChange: (value: T) => void\n className?: string\n buttonClassName?: string\n optionsClassName?: string\n placeholder?: string\n size?: 'sm' | 'md'\n renderOption?: (option: IOption<T>, state: labelProps) => ReactElement\n noOptionsMessage?: ReactElement\n error?: FieldError\n disabled?: boolean\n fetchMore?: () => void\n isFetchingMore?: boolean\n scrollBottomThreshold?: number\n groupedOptions?: boolean\n groupedOrder?: {\n key: string\n label: string\n }[]\n unmountOptions?: boolean\n direction?: 'up' | 'down'\n asLayer?: boolean\n}\n\nfunction generateLabel(\n label: ReactNode | ((props: labelProps) => ReactNode),\n props: labelProps\n) {\n if (isFunction(label)) {\n return label(props)\n }\n return label\n}\n\nexport function Select<T>({\n className,\n buttonClassName,\n optionsClassName,\n options,\n value,\n onChange,\n placeholder,\n size = 'sm',\n renderOption,\n noOptionsMessage,\n error,\n disabled,\n fetchMore,\n isFetchingMore,\n scrollBottomThreshold = 100,\n groupedOptions,\n groupedOrder,\n unmountOptions = true,\n direction = 'down',\n asLayer\n}: SelectProps<T>) {\n const selectedIndex = options.findIndex((o) => isEqual(o.value, value))\n const listRef = useRef<HTMLUListElement>(null)\n const [open, setOpen] = useState(false)\n const { width, ref } = useResizeDetector({\n refreshMode: 'debounce',\n refreshRate: 100,\n handleHeight: false\n })\n const baseZIndex = useContext(BaseZIndexContext)\n\n const { renderLayer, triggerProps, layerProps } = useLayer({\n isOpen: open,\n auto: true,\n preferX: 'left',\n preferY: direction === 'up' ? 'top' : 'bottom',\n placement: direction === 'up' ? 'top-start' : 'bottom-start',\n triggerOffset: 4,\n onOutsideClick: () => setOpen(false)\n })\n\n const grouped = useMemo(() => {\n if (!groupedOptions || !options || options.length === 0) {\n return options\n }\n const groupedOptionsList = options.reduce((acc: any, option: any) => {\n ;(acc[option.group] = acc[option.group] || []).push(option)\n return acc\n }, {})\n return groupedOrder?.reduce((acc: any, group: any) => {\n return [\n ...acc,\n {\n label: group.label,\n options: groupedOptionsList[group.key] || []\n }\n ]\n }, [])\n }, [groupedOptions, groupedOrder, options])\n\n const optionsElement = (\n <Listbox.Options\n ref={listRef}\n onScroll={() => {\n if (listRef.current?.scrollHeight) {\n const bottomHeight =\n listRef.current?.scrollHeight -\n listRef.current?.clientHeight -\n listRef.current?.scrollTop\n if (bottomHeight < scrollBottomThreshold) {\n fetchMore?.()\n }\n }\n }}\n unmount={unmountOptions}\n className={classNames(\n 'text-ilabel dark:bg-sentio-gray-100 scrollbar-thin max-h-60 w-full overflow-auto rounded-md bg-white py-1 shadow-lg ring-1 ring-black ring-opacity-5 focus:outline-none dark:ring-gray-100 sm:text-sm',\n asLayer ? '' : 'absolute z-10',\n optionsClassName\n )}\n >\n {!options || options.length === 0 ? (\n <Listbox.Option\n value={null}\n disabled\n className={optionClass({ disabled: true, size })}\n >\n {noOptionsMessage ?? (\n <span className=\"text-gray-400\">No options</span>\n )}\n </Listbox.Option>\n ) : null}\n {groupedOptions && grouped\n ? grouped.map(({ label, options }) => {\n if (!options || options.length === 0) {\n return null\n }\n return (\n <div key={label}>\n <div className=\"text-gray px-3.5 py-1 text-xs font-medium\">\n {label}\n </div>\n <div>\n {options.map(\n (option: IOption<T>, i: Key | null | undefined) => (\n <Listbox.Option\n key={i}\n value={option.value}\n disabled={option.disabled}\n className={({ active }) =>\n optionClass({\n disabled: option.disabled,\n size,\n active,\n selected: isEqual(value, option.value)\n })\n }\n title={option.title}\n >\n {({ selected, active }) => {\n if (renderOption) {\n return renderOption(option, { selected, active })\n }\n return (\n <>\n <span\n className={classNames(\n selected ? 'font-medium' : 'font-normal',\n 'text-ilabel block truncate'\n )}\n >\n {generateLabel(option.label, {\n selected,\n active\n })}\n </span>\n\n {selected ? (\n <span\n className={classNames(\n 'text-primary-600 absolute inset-y-0 right-0 flex items-center pr-2 dark:text-white'\n )}\n >\n <CheckIcon\n className={iconClass({ size })}\n aria-hidden=\"true\"\n />\n </span>\n ) : null}\n </>\n )\n }}\n </Listbox.Option>\n )\n )}\n </div>\n </div>\n )\n })\n : options.map((option, i) => (\n <Listbox.Option\n key={i}\n value={option.value}\n disabled={option.disabled}\n className={({ active }) =>\n optionClass({\n disabled: option.disabled,\n size,\n active,\n selected: selectedIndex === i\n })\n }\n title={option.title}\n >\n {({ selected, active }) => {\n if (renderOption) {\n return renderOption(option, { selected, active })\n }\n return (\n <>\n <span\n className={classNames(\n selected ? 'font-medium' : 'font-normal',\n 'text-ilabel block truncate'\n )}\n >\n {generateLabel(option.label, { selected, active })}\n </span>\n\n {selected ? (\n <span\n className={classNames(\n 'text-primary-600 absolute inset-y-0 right-0 flex items-center pr-2 dark:text-white'\n )}\n >\n <CheckIcon\n className={iconClass({ size })}\n aria-hidden=\"true\"\n />\n </span>\n ) : null}\n </>\n )\n }}\n </Listbox.Option>\n ))}\n {isFetchingMore && (\n <Listbox.Option\n value={null}\n disabled\n className={optionClass({ disabled: true, size })}\n >\n <div className=\"flex w-full items-center justify-center gap-2\">\n <ClipLoader size={16} color=\"#A6C2F0\" />\n <span className=\"text-gray/50 text-xs\">Loading more...</span>\n </div>\n </Listbox.Option>\n )}\n </Listbox.Options>\n )\n\n return (\n <Listbox value={value} onChange={onChange} disabled={disabled}>\n {({ open: headlessOpen }) => {\n // Sync the internal state with Headless UI state\n if (headlessOpen !== open && asLayer) {\n setOpen(headlessOpen)\n }\n\n return (\n <div className={classNames(className, 'relative')} ref={ref}>\n <Listbox.Button\n as=\"div\"\n className={classNames(\n buttonClass({\n open: headlessOpen,\n size,\n error: !!error,\n disabled: !!disabled\n }),\n buttonClassName\n )}\n {...triggerProps}\n >\n <div className=\"pr-4\">\n {selectedIndex > -1 ? (\n generateLabel(options[selectedIndex].label, {})\n ) : placeholder ? (\n <span\n className={classNames(\n 'font-normal',\n error ? 'text-red-400' : 'text-gray-400'\n )}\n >\n {placeholder}\n </span>\n ) : (\n ''\n )}\n </div>\n <button\n type=\"button\"\n disabled={disabled}\n className={classNames(\n 'absolute inset-y-0 right-0 flex items-center rounded-r-md px-2 focus:outline-none'\n )}\n >\n <ChevronDownIcon\n className={iconClass({ size, disabled: !!disabled })}\n />\n </button>\n </Listbox.Button>\n\n {headlessOpen\n ? asLayer\n ? renderLayer(\n <div\n {...layerProps}\n style={{\n ...layerProps.style,\n zIndex: Math.max(10, baseZIndex + 1),\n minWidth: width\n }}\n >\n {optionsElement}\n </div>\n )\n : optionsElement\n : null}\n\n {error && (\n <p className=\"mt-2 text-xs font-medium text-red-600\">\n {typeof error == 'string' ? error : error.message}\n </p>\n )}\n </div>\n )\n }}\n </Listbox>\n )\n}\n","import {\n useState,\n useMemo,\n createContext,\n useContext,\n useCallback,\n useRef,\n useEffect,\n memo,\n CSSProperties,\n ReactNode,\n isValidElement,\n useTransition\n} from 'react'\nimport Tree from './Tree'\nimport { useVirtualizer } from '@tanstack/react-virtual'\nimport isNumber from 'lodash/isNumber'\nimport { cx as classNames } from 'class-variance-authority'\nimport { throttle } from 'lodash'\n\ntype FieldDataNode<T, ChildFieldName extends string = 'children'> = T &\n Partial<Record<ChildFieldName, FieldDataNode<T, ChildFieldName>[]>>\n\nexport type DataNode = FieldDataNode<{\n key: KeyType\n title?: React.ReactNode | ((data: DataNode) => React.ReactNode)\n depth?: number\n raw?: any\n}>\n\ntype KeyType = string | number\n\nexport const SUFFIX_NODE_KEY = 'selectedKey_after'\nexport const ROOT_KEY = 'root'\n\nconst TreeContext = createContext<{\n expandKeys: KeyType[]\n onExpand: (key: KeyType) => void\n onClick?: (data: DataNode) => void\n}>({\n expandKeys: [],\n onExpand: (key) => {\n console.log(key)\n }\n})\n\nconst ControledTree = ({\n item,\n selected,\n contentClassName,\n expandIcon,\n collapseIcon\n}: {\n item: DataNode\n selected?: boolean\n contentClassName?: string\n expandIcon?: React.ReactNode\n collapseIcon?: React.ReactNode\n}) => {\n const { expandKeys, onExpand, onClick } = useContext(TreeContext)\n let titleNode: React.ReactNode\n if (typeof item.title === 'function') {\n titleNode = item.title(item)\n } else {\n titleNode = item.title\n }\n const onOpenClick = useCallback(() => {\n onExpand(item.key)\n }, [onExpand, item.key])\n const onNodeClick = useCallback(() => {\n onClick?.(item)\n }, [item])\n const isLeaf = item.children === undefined || item.children?.length === 0\n\n return (\n <Tree\n contentClassName={classNames(\n selected ? 'bg-sentio-gray-100' : '',\n item.key === SUFFIX_NODE_KEY ? '!px-0 !py-0' : '',\n contentClassName\n )}\n className={\n item.key === SUFFIX_NODE_KEY\n ? 'sticky left-0 inline-block !overflow-visible'\n : 'group/tree'\n }\n showToggle={!isLeaf}\n open={expandKeys.includes(item.key)}\n depth={item.depth}\n key={item.key}\n content={titleNode}\n onOpenClick={onOpenClick}\n onClick={onNodeClick}\n expandIcon={expandIcon}\n collapseIcon={collapseIcon}\n />\n )\n}\n\nconst DEFAULT_ROW_HEIGHT = 35\n\ninterface Props {\n data?: DataNode[]\n defaultExpandAll?: boolean\n virtual?: boolean\n rowHeight?: number | ((index: number, isSelected?: boolean) => number)\n height?: CSSProperties['height']\n onClick?: (item: DataNode) => void\n suffixNode?: ReactNode\n expandDepth?: number\n contentClassName?: string\n expandIcon?: React.ReactNode\n collapseIcon?: React.ReactNode\n scrollToKey?: KeyType // auto scroll to this key\n scrollIntoView?: boolean\n isRootKey?: (v: KeyType) => boolean\n}\n\nconst DefaultSuffixNode = <div className=\"h-[200px]\"></div>\nfunction checkRootKeyDefault(v: KeyType) {\n return v === ROOT_KEY\n}\n\nexport const FlatTree = (props: Props) => {\n const {\n data,\n defaultExpandAll,\n virtual,\n rowHeight = DEFAULT_ROW_HEIGHT,\n height,\n onClick,\n suffixNode,\n expandDepth,\n contentClassName,\n expandIcon,\n collapseIcon,\n scrollToKey,\n scrollIntoView,\n isRootKey = checkRootKeyDefault\n } = props\n const dataRef = useRef<any>(null)\n const selectedKeyRef = useRef<KeyType>()\n const [expandKeys, setExpandKeys] = useState<KeyType[]>([])\n const [selectedKey, setSelectedKey] = useState<KeyType>()\n const parentRef = useRef<HTMLDivElement>(null)\n\n useEffect(() => {\n if (defaultExpandAll) {\n const flatten = (data: DataNode[]): KeyType[] => {\n return data.reduce((acc, cur) => {\n const { children, key } = cur\n acc.push(key)\n if (children) {\n acc.push(...flatten(children))\n }\n return acc\n }, [] as KeyType[])\n }\n setExpandKeys(flatten(data || []))\n } else {\n setExpandKeys([])\n }\n }, [data, defaultExpandAll])\n\n const flattenData = useMemo(() => {\n const expandKeysSet = new Set(expandKeys)\n const flatten = (data: DataNode[], depth = 0): DataNode[] => {\n return data.reduce((acc, cur) => {\n const { children } = cur\n acc.push({ ...cur, depth })\n if (children && expandKeysSet.has(cur.key)) {\n acc.push(...flatten(children, depth + 1))\n }\n return acc\n }, [] as DataNode[])\n }\n const list = flatten(data || [])\n // add node after selectedKey item\n if (selectedKey && isValidElement(suffixNode)) {\n const index = list.findIndex((item) => item.key === selectedKey)\n if (index > -1) {\n list.splice(index + 1, 0, {\n key: SUFFIX_NODE_KEY,\n title: suffixNode,\n depth: 0\n })\n }\n }\n return list\n }, [data, expandKeys, selectedKey, suffixNode])\n dataRef.current = flattenData\n\n const estimateSize = useCallback(\n (index: number) => {\n if (isNumber(rowHeight)) {\n return rowHeight\n }\n return rowHeight(index, dataRef.current?.[index]?.key === SUFFIX_NODE_KEY)\n },\n [rowHeight]\n )\n\n const rowVirtualizer = useVirtualizer({\n count: flattenData.length,\n getScrollElement: () => parentRef.current,\n estimateSize,\n overscan: 10\n })\n\n const contextValue = useMemo(() => {\n return {\n expandKeys: expandKeys,\n onExpand: (key: KeyType) => {\n setExpandKeys((keys) => {\n if (keys.includes(key)) {\n return keys.filter((k) => k !== key)\n } else {\n return [...keys, key]\n }\n })\n },\n onClick: (data: DataNode) => {\n if (onClick === undefined) {\n return\n }\n if (data.key === SUFFIX_NODE_KEY || isRootKey(data.key)) {\n return\n }\n setSelectedKey((key) => {\n if (key === data.key) {\n selectedKeyRef.current = undefined\n return undefined\n }\n selectedKeyRef.current = data.key\n return data.key\n })\n onClick?.(data)\n }\n }\n }, [expandKeys, onClick])\n\n useEffect(() => {\n // set expandedKey by depth\n if (!isNumber(expandDepth)) {\n return\n }\n\n const flatten = (data: DataNode[], currentDepth = 0): KeyType[] => {\n return data.reduce((acc, cur) => {\n const { children, key } = cur\n // Expand nodes that are at depth less than expandDepth\n if (currentDepth < expandDepth && children && children.length > 0) {\n acc.push(key)\n acc.push(...flatten(children, currentDepth + 1))\n }\n return acc\n }, [] as KeyType[])\n }\n setExpandKeys(flatten(data || []))\n }, [data, expandDepth])\n\n useEffect(() => {\n setSelectedKey(undefined)\n }, [expandDepth])\n\n useEffect(() => {\n if (dataRef.current && scrollToKey) {\n const index = dataRef.current.findIndex(\n (item: any) => item.key === scrollToKey\n )\n if (index > -1) {\n rowVirtualizer.scrollToIndex(index, {\n align: 'center',\n behavior: 'auto'\n })\n }\n }\n }, [scrollToKey])\n\n const visibleItems = rowVirtualizer.getVirtualItems()\n const [isPending, startTransition] = useTransition()\n const onScroll = useMemo(() => {\n if (!scrollIntoView) {\n return () => {}\n }\n const throttleFn = throttle(\n () => {\n startTransition(() => {\n parentRef.current?.scrollIntoView(true)\n })\n },\n 1000,\n { trailing: true }\n )\n let lastScrollTop = 0\n return (evt: React.UIEvent<HTMLDivElement>) => {\n const scrollTop = evt.currentTarget.scrollTop\n if (scrollTop > lastScrollTop) {\n throttleFn()\n }\n lastScrollTop = scrollTop\n }\n }, [scrollIntoView])\n\n return (\n <TreeContext.Provider value={contextValue}>\n {virtual ? (\n <div\n className=\"overflow-auto\"\n ref={parentRef}\n style={{\n height\n }}\n onScroll={onScroll}\n >\n <div\n style={{\n height: `${rowVirtualizer.getTotalSize()}px`,\n width: '100%',\n position: 'relative'\n }}\n >\n <div\n className=\"absolute left-0 top-0 w-max min-w-full\"\n style={{\n transform: visibleItems?.[0]?.start\n ? `translateY(${visibleItems[0].start}px)`\n : undefined\n }}\n >\n {rowVirtualizer.getVirtualItems().map((virtualItem) => (\n <div\n key={virtualItem.key}\n className={\n dataRef.current[virtualItem.index].key === scrollToKey\n ? 'bg-primary-100'\n : ''\n }\n >\n <ControledTree\n item={dataRef.current[virtualItem.index]}\n selected={\n selectedKey === dataRef.current[virtualItem.index].key\n }\n contentClassName={contentClassName}\n expandIcon={expandIcon}\n collapseIcon={collapseIcon}\n />\n </div>\n ))}\n </div>\n </div>\n </div>\n ) : (\n <>\n {flattenData.map((item, index) => (\n <div\n key={item.key || index}\n className={item.key === scrollToKey ? 'bg-primary-100' : ''}\n >\n <ControledTree\n item={item}\n selected={selectedKey === item.key}\n contentClassName={contentClassName}\n expandIcon={expandIcon}\n collapseIcon={collapseIcon}\n />\n </div>\n ))}\n </>\n )}\n </TreeContext.Provider>\n )\n}\n\nexport default memo(FlatTree)\n","import React, { useCallback, useState, useMemo, forwardRef } from 'react'\nimport * as Icons from './TreeIcons'\nimport { cx as classNames } from 'class-variance-authority'\nimport { useEffect } from 'react'\n\ninterface TreeProps {\n className?: string\n content?: React.ReactNode\n contentClassName?: string\n children?: React.ReactNode\n prefix?: React.ReactNode\n suffix?: React.ReactNode\n type?: React.ReactNode\n open?: boolean\n style?: React.CSSProperties\n depth?: number\n onClick?: () => void\n expandIcon?: React.ReactNode\n collapseIcon?: React.ReactNode\n\n // controled open function\n onOpenClick?: (open: boolean) => void\n showToggle?: boolean\n}\n\nconst Line = () => {\n return (\n <div className=\"-my-1.5 mr-[19px] h-full min-h-[24px] w-[px] translate-x-2 border-l border-dashed border-gray-400\"></div>\n )\n}\n\nexport default forwardRef<HTMLDivElement, TreeProps>(function Tree(\n {\n open: defaultOpen,\n content,\n children,\n depth = 0,\n type,\n contentClassName,\n prefix,\n suffix,\n onClick,\n onOpenClick,\n showToggle,\n className,\n expandIcon = <Icons.PlusSquareO className=\"h-4 w-4 align-middle\" />,\n collapseIcon = <Icons.MinusSquareO className=\"h-4 w-4 align-middle\" />\n }: TreeProps,\n ref\n) {\n const [open, setOpen] = useState(defaultOpen)\n\n useEffect(() => {\n setOpen(defaultOpen)\n }, [defaultOpen])\n\n const toggle = useCallback(\n (evt: React.MouseEvent) => {\n evt.stopPropagation()\n if (onOpenClick) {\n onOpenClick(!open)\n } else {\n setOpen((val) => {\n return !val\n })\n }\n },\n [open, onOpenClick]\n )\n const lineNodes = useMemo(() => {\n const lines: React.ReactNode[] = []\n for (let i = 0; i < depth; i++) {\n lines.push(<Line key={i} />)\n }\n return lines\n }, [depth])\n return (\n <div\n className={classNames(\n 'text-icontent font-icontent overflow-hidden text-ellipsis whitespace-nowrap align-middle',\n className\n )}\n >\n <div\n ref={ref}\n className={classNames(\n 'flex items-center px-2 py-1 hover:bg-gray-100',\n contentClassName\n )}\n onClick={onClick}\n >\n <div className=\"inline-flex shrink-0 items-center self-stretch\">\n {lineNodes}\n </div>\n <div className=\"inline-flex shrink-0 items-center\">\n {children || showToggle ? (\n <button\n className=\"text-gray hover:text-primary-500 dark:hover:text-primary-700 mr-1.5 cursor-pointer\"\n onClick={toggle}\n >\n {open ? collapseIcon : expandIcon}\n </button>\n ) : (\n <span className=\"mr-[19px] h-1 w-px\"></span>\n )}\n </div>\n {type}\n <span className=\"flex-1 align-middle\">{content}</span>\n </div>\n {prefix}\n {open ? children : null}\n {suffix}\n </div>\n )\n})\n","import { LuSquarePlus, LuSquareMinus, LuSquareX, LuEye } from 'react-icons/lu'\n\nexport {\n LuSquarePlus as PlusSquareO,\n LuSquareMinus as MinusSquareO,\n LuSquareX as CloseSquareO,\n LuEye as EyeO\n}\n","import { linkifyUrlsToHtml } from 'linkify-urls'\nimport DOMPurify from 'dompurify'\nimport { memo } from 'react'\nimport { isString, isUndefined, isNull } from 'lodash'\n\nif (DOMPurify?.addHook) {\n DOMPurify.addHook('afterSanitizeAttributes', function (node) {\n // set all elements owning target to target=_blank\n if ('target' in node) {\n node.setAttribute('target', '_blank')\n }\n // set non-HTML/MathML links to xlink:show=new\n if (\n !node.hasAttribute('target') &&\n (node.hasAttribute('xlink:href') || node.hasAttribute('href'))\n ) {\n node.setAttribute('xlink:show', 'new')\n }\n })\n}\n\nconst renderTextWithColoredNumbers = (text: string) => {\n // Use word boundary and negative lookahead to avoid matching numbers in hexadecimal addresses\n const numberRegex = /\\b(\\d+(?:\\.\\d+)?)\\b/g\n\n return text.replace(numberRegex, (match, number, offset) => {\n // Check characters before and after the number to ensure it's not part of a hex address\n const before = text.charAt(offset - 1)\n const after = text.charAt(offset + match.length)\n\n // If preceded by 'x' or surrounded by hex characters, don't highlight\n if (before === 'x' || /[a-fA-F]/.test(before) || /[a-fA-F]/.test(after)) {\n return match\n }\n\n return `<span class=\"font-mono text-primary-500 dark:text-primary-700\">${match}</span>`\n })\n}\n\ninterface LinkifyTextProps {\n text: any\n className?: string\n isHighlightNumbers?: boolean\n}\n\nexport const LinkifyText = memo(function LinkifyText({\n text,\n className,\n isHighlightNumbers\n}: LinkifyTextProps) {\n if (isUndefined(text) || isNull(text)) {\n return null\n }\n if (!isString(text)) {\n if (text.toString) {\n return <span className={className}>{text.toString()}</span>\n }\n return null\n }\n const linkStr = linkifyUrlsToHtml(\n isHighlightNumbers ? renderTextWithColoredNumbers(text) : text,\n {\n attributes: {\n class: 'text-primary hover:underline',\n target: '_blank',\n rel: 'noopener noreferrer'\n }\n }\n )\n return (\n <span\n className={className}\n dangerouslySetInnerHTML={{ __html: DOMPurify.sanitize(linkStr) }}\n />\n )\n})\n","import React, { useContext } from 'react'\nimport { SvgFolderContext } from '../utils/extension-context'\n\ninterface EmptyProps {\n src?: string\n title?: React.ReactNode\n}\n\nexport const Empty: React.FC<EmptyProps> = (props) => {\n const parentFolder = useContext(SvgFolderContext)\n return (\n <div className=\"mx-auto w-fit\">\n <img\n src={props.src ?? `${parentFolder}/empty.svg`}\n width={88}\n height={88}\n alt=\"empty icon\"\n className=\"mx-auto\"\n />\n <span className=\"text-ilabel text-gray\">\n {props.title || 'No results found'}\n </span>\n </div>\n )\n}\n","import { createContext, useContext } from 'react'\n\nexport const SvgFolderContext = createContext('')\nexport const useDetectExtenstion = () => {\n const folderPath = useContext(SvgFolderContext)\n return Boolean(folderPath)\n}\n\nexport const DarkModeContext = createContext(false)\nexport const useDarkMode = () => {\n return useContext(DarkModeContext)\n}\n","import { cx as classNames } from 'class-variance-authority'\nimport { ReactNode } from 'react'\n\nexport enum StatusRole {\n Success = 'success',\n Warning = 'warning',\n Error = 'error',\n Disabled = 'disabled',\n Info = 'info'\n}\n\nconst VersionStateColors: { [key: string]: string } = {\n [StatusRole.Success]: 'bg-cyan-600/10 text-cyan-600',\n [StatusRole.Warning]: 'bg-orange-600/10 text-orange-600',\n [StatusRole.Error]: 'bg-red-600/10 text-red-600',\n [StatusRole.Disabled]: 'bg-gray-600/10 text-gray-600',\n [StatusRole.Info]: 'bg-gray-300/10 text-gray-300'\n}\n\ninterface Props {\n status: string | ReactNode\n className?: string\n colorClasses?: string\n roundClasses?: string\n bubble?: boolean // if contains a prefix bubble\n role?: string | StatusRole\n}\n\nexport function StatusBadge({\n status,\n className,\n colorClasses: _colorClasses,\n roundClasses,\n bubble,\n role\n}: Props) {\n const colorClasses =\n _colorClasses || VersionStateColors[role || StatusRole.Info]\n\n return (\n <span\n className={classNames(\n 'text-ilabel inline-flex cursor-default items-center px-2 py-0.5 font-medium',\n colorClasses,\n roundClasses ? roundClasses : 'rounded-full',\n className\n )}\n data-test-status={status}\n >\n {bubble && <div className=\"mr-1.5 h-1.5 w-1.5 rounded-full bg-current\" />}\n {status}\n </span>\n )\n}\n\nexport default StatusBadge\n","import { LuChevronDown, LuChevronUp } from 'react-icons/lu'\nimport { cx as classNames } from 'class-variance-authority'\nimport { type ReactNode, type FC } from 'react'\n\ninterface HeaderToolsToggleButtonProps {\n isOpen: boolean\n onClick: () => void\n className?: string\n}\n\nexport const HeaderToolsToggleButton: FC<HeaderToolsToggleButtonProps> = ({\n isOpen,\n onClick,\n className\n}) => {\n return (\n <button\n onClick={onClick}\n className={classNames(\n 'flex items-center justify-center rounded-md p-1 transition-colors',\n 'dark:hover:bg-sentio-gray-100 hover:bg-gray-200',\n 'text-text-foreground',\n className\n )}\n aria-label=\"Toggle tools\"\n >\n {isOpen ? (\n <LuChevronUp className=\"h-4 w-4 transition-transform\" />\n ) : (\n <LuChevronDown className=\"h-4 w-4 transition-transform\" />\n )}\n </button>\n )\n}\n\ninterface HeaderToolsContentProps {\n isOpen: boolean\n children?: ReactNode\n className?: string\n}\n\nexport const HeaderToolsContent: FC<HeaderToolsContentProps> = ({\n isOpen,\n children,\n className\n}) => {\n if (!isOpen) {\n return null\n }\n\n return (\n <div className={classNames('w-full overflow-hidden', className)}>\n {children}\n </div>\n )\n}\n","import {\n CSSProperties,\n forwardRef,\n memo,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState\n} from 'react'\nimport {\n Row,\n Cell,\n useReactTable,\n getCoreRowModel,\n getSortedRowModel,\n ColumnDef,\n flexRender,\n ColumnResizeMode,\n TableState\n} from '@tanstack/react-table'\nimport { useVirtualizer } from '@tanstack/react-virtual'\nimport { classNames } from '../../utils/classnames'\nimport {\n HiOutlineSortDescending,\n HiOutlineSortAscending,\n HiChevronDown\n} from 'react-icons/hi'\nimport { debounce, isEqual } from 'lodash'\nimport { PopupMenuButton } from '../menu/PopupMenuButton'\nimport { ColumnOrderState } from '@tanstack/react-table'\nimport { MoveLeftIcon, MoveRightIcon, RenameIcon, DeleteIcon } from './Icons'\nimport { IoReload } from 'react-icons/io5'\n\nconst reorder = (list: any[], startIndex: number, endIndex: number) => {\n const result = Array.from(list)\n const [removed] = result.splice(startIndex, 1)\n result.splice(endIndex, 0, removed)\n\n return result\n}\n\ninterface Props {\n data: any\n columns: ColumnDef<any>[]\n columnResizeMode: ColumnResizeMode\n onClick?: (row: Row<any>, cell: Cell<any, any>) => void\n height?: CSSProperties['height']\n onFetchMore?: () => void\n hasMore?: boolean\n isFetching?: boolean\n\n state?: Partial<TableState>\n onStateChange?: (state: TableState) => void\n\n //sort\n allowSort?: boolean\n manualSorting?: boolean // server-side sorting\n\n //resize\n allowResizeColumn?: boolean\n\n //edit column\n allowEditColumn?: boolean\n onColumnRename?: (data: ColumnDef<any>) => void\n onColumnRemove?: (data: ColumnDef<any>) => void\n\n minSize?: number\n minWidth?: number\n\n rowClassNameFn?: (row: Row<any>) => string\n\n // Virtual scrolling options\n enableVirtualization?: boolean\n estimatedRowHeight?: number\n overscan?: number\n}\n\nfunction onPreventClick(e: React.MouseEvent) {\n e.stopPropagation()\n}\n\nconst _ResizeTable = forwardRef<HTMLDivElement, Props>(function _ResizeTable(\n {\n data,\n columns,\n columnResizeMode,\n onClick,\n height,\n onFetchMore,\n hasMore,\n isFetching,\n allowSort,\n allowEditColumn,\n allowResizeColumn,\n state = {},\n onStateChange,\n onColumnRemove,\n onColumnRename,\n minSize,\n manualSorting,\n minWidth,\n rowClassNameFn,\n enableVirtualization = false,\n estimatedRowHeight = 35,\n overscan = 5\n }: Props,\n tableContainerRef\n) {\n const adjustedColumns = useMemo(() => {\n let totalWidth = 0\n const newColumns = columns.map((c) => {\n const item = Object.assign({ minSize }, c)\n totalWidth += item.size || item.minSize || 0\n return item\n })\n if (minWidth && totalWidth < minWidth) {\n const ratio = minWidth / totalWidth\n newColumns.forEach((c) => {\n if (c.size) {\n c.size = Math.floor(c.size * ratio)\n } else if (c.minSize) {\n c.size = Math.floor(c.minSize * ratio)\n }\n })\n }\n return newColumns\n }, [columns, minSize, minWidth])\n\n const [tableState, setTableState] = useState<TableState>(() => {\n const initialState = {\n pagination: {\n pageIndex: 0,\n pageSize: 10\n },\n ...state\n }\n return initialState as any\n })\n\n const table = useReactTable({\n data,\n columns: adjustedColumns,\n columnResizeMode: columnResizeMode,\n getCoreRowModel: getCoreRowModel(),\n getSortedRowModel: allowSort ? getSortedRowModel() : undefined,\n state: tableState,\n onStateChange: setTableState,\n manualSorting\n })\n\n useEffect(() => {\n if (state && Object.keys(state).length > 0) {\n setTableState((prev) => {\n const newState: TableState = {\n ...prev,\n ...state,\n pagination: prev.pagination ||\n state.pagination || { pageIndex: 0, pageSize: 10 }\n }\n return isEqual(prev, newState) ? prev : newState\n })\n }\n }, [state])\n\n const debounceStateChange = useMemo(() => {\n if (!onStateChange) return undefined\n return debounce(onStateChange, 500, {})\n }, [onStateChange])\n\n useEffect(() => {\n debounceStateChange?.(tableState)\n }, [debounceStateChange, tableState])\n\n const fetchMoreOnBottomReached = useMemo(() => {\n return debounce((containerRefElement?: HTMLDivElement | null) => {\n if (containerRefElement) {\n const { scrollHeight, scrollTop, clientHeight } = containerRefElement\n if (\n scrollHeight - scrollTop - clientHeight < 300 &&\n !isFetching &&\n hasMore\n ) {\n onFetchMore?.()\n }\n }\n }, 500)\n }, [onFetchMore, isFetching, hasMore])\n\n const tableContainerElementRef = useRef<HTMLDivElement | null>(null)\n\n useEffect(() => {\n if (tableContainerRef) {\n if (typeof tableContainerRef === 'function') {\n tableContainerRef(tableContainerElementRef.current)\n } else {\n tableContainerRef.current = tableContainerElementRef.current\n }\n }\n }, [tableContainerRef])\n\n const rowVirtualizer = useVirtualizer({\n count: enableVirtualization ? table.getRowModel().rows.length : 0,\n getScrollElement: () => tableContainerElementRef.current,\n estimateSize: useCallback(() => estimatedRowHeight, [estimatedRowHeight]),\n overscan,\n enabled: enableVirtualization\n })\n\n const virtualRows = enableVirtualization\n ? rowVirtualizer.getVirtualItems()\n : []\n\n const paddingTop =\n enableVirtualization && virtualRows.length > 0 ? virtualRows[0].start : 0\n const paddingBottom =\n enableVirtualization && virtualRows.length > 0\n ? rowVirtualizer.getTotalSize() -\n (virtualRows[virtualRows.length - 1].start +\n virtualRows[virtualRows.length - 1].size)\n : 0\n\n return (\n <div\n className=\"overflow-auto\"\n style={height ? { height } : undefined}\n ref={tableContainerElementRef}\n onScroll={(e) => fetchMoreOnBottomReached(e.target as HTMLDivElement)}\n >\n <table\n className=\"w-fit\"\n {...{\n style: {\n width: table.getCenterTotalSize()\n }\n }}\n >\n <thead className=\"dark:bg-sentio-gray-100 sticky top-0 z-[1] bg-white\">\n {table.getHeaderGroups().map((headerGroup) => (\n <tr\n key={headerGroup.id}\n className=\"relative flex w-fit cursor-pointer items-center border-b\"\n >\n {headerGroup.headers.map((header, i) => (\n <th\n key={header.id}\n colSpan={header.colSpan}\n style={{\n width: header.getSize()\n }}\n className=\"text-ilabel group/th blinked dark:hover:!bg-sentio-gray-300 dark:bg-sentio-gray-100 text-text-foreground hover:!bg-primary-50 relative flex items-center whitespace-nowrap bg-white px-2 py-2 text-left font-semibold\"\n onClick={header.column.getToggleSortingHandler()}\n >\n <span className=\"flex w-full flex-1 overflow-hidden\">\n <span className=\"flex-1 truncate\">\n {header.isPlaceholder\n ? null\n : flexRender(\n header.column.columnDef.header,\n header.getContext()\n )}\n </span>\n {header.column.getCanSort() && allowSort ? (\n <span\n className={classNames(\n header.column.getIsSorted()\n ? 'hover:text-text-foreground visible hover:bg-gray-200'\n : 'invisible',\n 'ml-2 flex-none rounded px-1 py-0.5 text-gray-600 group-hover:visible group-focus:visible',\n 'inline-block cursor-pointer',\n 'shrink-0'\n )}\n >\n {header.column.getIsSorted() ? (\n header.column.getIsSorted() == 'desc' ? (\n <HiOutlineSortDescending className=\"h-4 w-4\" />\n ) : (\n <HiOutlineSortAscending className=\"h-4 w-4\" />\n )\n ) : (\n ''\n )}\n </span>\n ) : null}\n </span>\n {allowEditColumn !== false && (\n <span\n className=\"invisible inline-block group-hover/th:visible\"\n onClick={onPreventClick}\n >\n <PopupMenuButton\n buttonClassName=\"align-text-bottom\"\n onSelect={(commandKey: string) => {\n const colOrder = headerGroup.headers.map(\n (item) => (item as any)?.id\n )\n switch (commandKey) {\n case 'reorder.left':\n table.setColumnOrder(\n reorder(colOrder, i, i - 1) as ColumnOrderState\n )\n break\n case 'reorder.right':\n table.setColumnOrder(\n reorder(colOrder, i, i + 1) as ColumnOrderState\n )\n break\n case 'delete':\n onColumnRemove?.(header.column.columnDef)\n break\n default:\n console.log(commandKey, 'is not applied')\n }\n }}\n buttonIcon={<HiChevronDown className=\"icon mr-2\" />}\n items={[\n [\n {\n key: 'reorder.left',\n label: 'Move column left',\n icon: <MoveLeftIcon className=\"mr-2\" />,\n disabled: i === 0\n },\n {\n key: 'reorder.right',\n label: 'Move column right',\n icon: <MoveRightIcon className=\"mr-2\" />,\n disabled: i === headerGroup.headers.length - 1\n }\n ],\n ...(onColumnRename\n ? [\n [\n {\n key: 'rename',\n label: 'Rename column',\n icon: <RenameIcon className=\"mr-2\" />\n }\n ]\n ]\n : []),\n ...(!onColumnRemove\n ? []\n : [\n [\n {\n key: 'delete',\n label: 'Remove column',\n icon: <DeleteIcon className=\"mr-2\" />,\n status: 'danger'\n }\n ]\n ])\n ]}\n />\n </span>\n )}\n {header.column.getCanResize() ? (\n <div\n onMouseDown={header.getResizeHandler()}\n onTouchStart={header.getResizeHandler()}\n className={classNames(\n `text-md hover:bg-primary-200/50 absolute right-0 top-0 inline-block flex\n h-full w-2 cursor-col-resize touch-none select-none items-center text-gray-400`\n )}\n style={{\n transform:\n columnResizeMode === 'onEnd' &&\n header.column.getIsResizing()\n ? `translateX(${table.getState().columnSizingInfo.deltaOffset}px)`\n : ''\n }}\n onClick={(e) => e.stopPropagation()}\n >\n ⋮\n </div>\n ) : null}\n </th>\n ))}\n </tr>\n ))}\n </thead>\n <tbody>\n {enableVirtualization && paddingTop > 0 && (\n <tr>\n <td style={{ height: `${paddingTop}px` }} />\n </tr>\n )}\n\n {enableVirtualization\n ? virtualRows.map((virtualRow) => {\n const row = table.getRowModel().rows[virtualRow.index]\n return (\n <tr\n key={row.id}\n data-index={virtualRow.index}\n className={classNames(\n 'hover:!bg-primary-50 dark:hover:!bg-sentio-gray-300 group flex w-fit items-center border-b',\n onClick ? 'cursor-pointer' : '',\n rowClassNameFn ? rowClassNameFn(row) : ''\n )}\n >\n {row.getVisibleCells().map((cell) => (\n <td\n key={cell.id}\n {...{\n style: {\n width: cell.column.getSize()\n }\n }}\n onClick={() => onClick && onClick(row, cell)}\n className=\"text-ilabel dark:text-text-foreground-secondary truncate whitespace-nowrap py-2 pl-2 text-gray-600\"\n >\n {flexRender(\n cell.column.columnDef.cell,\n cell.getContext()\n )}\n </td>\n ))}\n </tr>\n )\n })\n : table.getRowModel().rows.map((row) => (\n <tr\n key={row.id}\n className={classNames(\n 'hover:!bg-primary-50 dark:hover:!bg-sentio-gray-300 blinked group flex w-fit items-center border-b',\n onClick ? 'cursor-pointer' : '',\n rowClassNameFn ? rowClassNameFn(row) : ''\n )}\n >\n {row.getVisibleCells().map((cell) => (\n <td\n key={cell.id}\n {...{\n style: {\n width: cell.column.getSize()\n }\n }}\n onClick={() => onClick && onClick(row, cell)}\n className=\"text-ilabel dark:text-text-foreground-secondary truncate whitespace-nowrap py-2 pl-2 text-gray-600\"\n >\n {flexRender(\n cell.column.columnDef.cell,\n cell.getContext()\n )}\n </td>\n ))}\n </tr>\n ))}\n\n {enableVirtualization && paddingBottom > 0 && (\n <tr>\n <td style={{ height: `${paddingBottom}px` }} />\n </tr>\n )}\n\n {onFetchMore && (\n <tr>\n <td\n colSpan={table.getHeaderGroups()[0].headers.length}\n className=\"text-ilabel hover:bg-primary-50 cursor-pointer py-2 text-center text-gray-600\"\n onClick={() => {\n if (isFetching) return\n onFetchMore?.()\n }}\n >\n {isFetching || hasMore ? (\n <span className=\"inline-flex items-center gap-2\">\n <IoReload\n className={classNames(\n 'h-4 w-4',\n isFetching ? 'animate-spin' : ''\n )}\n />\n <span>Loading...</span>\n </span>\n ) : (\n 'No more data'\n )}\n </td>\n </tr>\n )}\n </tbody>\n </table>\n </div>\n )\n})\n\nexport const ResizeTable = memo(_ResizeTable)\n\nexport default ResizeTable\n","import {\n ReactNode,\n Fragment,\n useState,\n useContext,\n CSSProperties,\n createContext,\n useMemo,\n useEffect,\n useRef\n} from 'react'\nimport { Menu, Transition } from '@headlessui/react'\nimport {\n FloatingPortal,\n useFloating,\n shift,\n flip,\n autoUpdate,\n Placement,\n offset as FloatingOffset\n} from '@floating-ui/react'\nimport { MenuContext, MenuItem } from './SubMenu'\nimport { classNames } from '../../utils/classnames'\nimport { NavSizeContext } from '../../utils/nav-size-context'\nimport { IMenuItem, OnSelectMenuItem } from './types'\n\ninterface Props {\n items: IMenuItem[][]\n groupLabels?: string[]\n buttonIcon: ReactNode | ((menuOpen: boolean) => ReactNode)\n buttonClassName?: string\n itemsClassName?: string\n itemLabelClassName?: string\n onSelect?: OnSelectMenuItem\n ariaLabel?: string\n header?: ReactNode\n footer?: ReactNode\n renderItem?: (data: IMenuItem) => React.ReactNode\n placement?: Placement\n offset?: any\n portal?: boolean\n width?: CSSProperties['width']\n selectedKey?: IMenuItem['key']\n onOpenCallback?: () => void\n}\n\nexport function PopupMenuButton({\n buttonIcon,\n items,\n groupLabels,\n onSelect,\n ariaLabel,\n header,\n footer,\n buttonClassName,\n itemsClassName = '',\n itemLabelClassName,\n renderItem,\n placement = 'bottom-start',\n offset = 0,\n portal = true,\n width,\n selectedKey,\n onOpenCallback\n}: Props) {\n const [menuOpen, setMenuOpen] = useState(false)\n const { small } = useContext(NavSizeContext)\n const { refs, floatingStyles, context } = useFloating({\n open: menuOpen,\n onOpenChange: setMenuOpen,\n middleware: [FloatingOffset(offset), flip(), shift()],\n placement,\n whileElementsMounted: autoUpdate\n })\n const itemStyle = useMemo(() => {\n return {\n width\n }\n }, [width])\n const onOpenCallbackRef = useRef(onOpenCallback)\n onOpenCallbackRef.current = onOpenCallback\n useEffect(() => {\n if (menuOpen) {\n onOpenCallbackRef.current?.()\n }\n }, [menuOpen])\n let menuItems: React.ReactNode = null\n if (menuOpen && items.length > 0) {\n menuItems = (\n <MenuContext.Provider value={{ selectedKey }}>\n <div ref={refs.setFloating} style={floatingStyles}>\n <Transition\n as={Fragment}\n enter=\"transition ease-out duration-100\"\n enterFrom=\"transform opacity-0 scale-95\"\n enterTo=\"transform opacity-100 scale-100\"\n leave=\"transition ease-in duration-75\"\n leaveFrom=\"transform opacity-100 scale-100\"\n leaveTo=\"transform opacity-0 scale-95\"\n >\n <Menu.Items\n className=\"dark:bg-sentio-gray-200 dark:divide-sentio-gray-400/50 z-10 mt-1 w-[80vw] origin-top cursor-pointer divide-y divide-gray-200 rounded-md bg-white shadow-lg ring-1 ring-black ring-opacity-5 focus:outline-none dark:ring-gray-100 sm:w-64\"\n style={itemStyle}\n >\n {header}\n <div className={`${itemsClassName} divide-y`}>\n {items.map((items, i) => (\n <div key={i} className=\"py-1\">\n {groupLabels?.[i] ? (\n <div className=\"px-4 py-0.5 text-[10px] font-medium leading-[12px] text-gray-500\">\n {groupLabels[i]}\n </div>\n ) : null}\n {items.map((item) =>\n renderItem ? (\n renderItem(item)\n ) : (\n <MenuItem\n item={item}\n onSelect={onSelect}\n key={item.key}\n labelClassName={itemLabelClassName}\n />\n )\n )}\n </div>\n ))}\n </div>\n {footer}\n </Menu.Items>\n </Transition>\n </div>\n </MenuContext.Provider>\n )\n }\n return (\n <Menu>\n {({ open }) => {\n setTimeout(() => {\n setMenuOpen(open)\n }, 0)\n return (\n <>\n <Menu.Button\n className={classNames(\n 'text-gray w-fit px-1 hover:text-gray-500 active:text-gray-700',\n buttonClassName\n )}\n aria-label={ariaLabel}\n ref={refs.setReference}\n as={buttonIcon ? 'div' : undefined}\n >\n {typeof buttonIcon === 'function'\n ? buttonIcon(menuOpen)\n : buttonIcon}\n </Menu.Button>\n {portal ? <FloatingPortal>{menuItems}</FloatingPortal> : menuItems}\n </>\n )\n }}\n </Menu>\n )\n}\n","import { useState, createContext, useContext } from 'react'\nimport {\n useFloating,\n useHover,\n useInteractions,\n autoUpdate,\n flip,\n shift,\n safePolygon,\n Placement\n} from '@floating-ui/react'\nimport { Menu } from '@headlessui/react'\nimport { classNames } from '../../utils/classnames'\nimport { HiCheck } from 'react-icons/hi'\nimport { PopoverTooltip } from '../DivTooltip'\nimport { ChevronRightIcon } from '@heroicons/react/20/solid'\nimport { IMenuItem, OnSelectMenuItem } from './types'\n\nexport const COLOR_MAP: Record<\n string,\n { active: string; default: string; disabled: string }\n> = {\n default: {\n active:\n 'bg-gray-100 text-text-foreground dark:bg-primary-600 dark:text-white',\n default: 'text-text-foreground',\n disabled: 'text-gray-400 cursor-not-allowed'\n },\n danger: {\n active: 'bg-red-100 text-red-600 dark:bg-red-600 dark:text-white',\n default: 'text-red-600',\n disabled: 'text-red-200 dark:text-red-600/40 cursor-not-allowed'\n }\n}\n\nexport const MenuContext = createContext<{ selectedKey?: string }>({})\n\ntype Props = IMenuItem & {\n items: IMenuItem[][]\n onSelect?: OnSelectMenuItem\n active: boolean\n name: string\n placement?: Placement\n buttonClass?: string\n}\n\ninterface ItemProps {\n item: IMenuItem\n onSelect?: OnSelectMenuItem\n labelClassName?: string\n}\n\nexport const MenuItem = ({ item, onSelect, labelClassName }: ItemProps) => {\n const { selectedKey } = useContext(MenuContext)\n return (\n <Menu.Item disabled={item.disabled}>\n {({ active }) => {\n if (item.items) {\n return (\n <SubMenuButton\n items={item.items}\n icon={item.icon}\n key={item.key}\n name={item.key}\n label={item.label}\n onSelect={onSelect}\n active={active}\n />\n )\n }\n const buttonNode = (\n <button\n onClick={(e) => onSelect?.(item.key, e, item)}\n className={classNames(\n item.disabled\n ? COLOR_MAP[item.status || 'default'].disabled\n : active\n ? COLOR_MAP[item.status || 'default'].active\n : COLOR_MAP[item.status || 'default'].default,\n 'text-ilabel font-ilabel flex w-full items-center px-4 py-1.5 transition-colors duration-200'\n )}\n disabled={item.disabled}\n >\n {item.icon}\n <span\n className={classNames(\n 'flex-1 truncate text-left',\n labelClassName\n )}\n >\n {item.label}\n </span>\n {item.key === selectedKey ? (\n <HiCheck className=\"icon-lg ml-2\" />\n ) : null}\n </button>\n )\n if (item.disabled && item.disabledHint) {\n return (\n <PopoverTooltip\n text={\n <span className=\"text-icontent font-icontent text-gray cursor-auto\">\n {item.disabledHint}\n </span>\n }\n strategy=\"fixed\"\n >\n {buttonNode}\n </PopoverTooltip>\n )\n }\n return buttonNode\n }}\n </Menu.Item>\n )\n}\n\nexport const SubMenuButton = (props: Props) => {\n const {\n label,\n status,\n items,\n disabled,\n onSelect,\n active,\n placement = 'right-start',\n buttonClass\n } = props\n const [open, setOpen] = useState(false)\n const { refs, floatingStyles, context } = useFloating({\n open,\n onOpenChange: setOpen,\n placement,\n whileElementsMounted: autoUpdate,\n middleware: [flip(), shift()]\n })\n const { getReferenceProps, getFloatingProps } = useInteractions([\n useHover(context, {\n handleClose: safePolygon()\n })\n ])\n\n return (\n <Menu\n as=\"div\"\n className={classNames(\n 'group flex items-center',\n 'text-ilabel rounded-md',\n disabled\n ? 'pointer-events-none cursor-not-allowed text-gray-400'\n : 'cursor-pointer'\n )}\n >\n <Menu.Button\n className={classNames(\n active || open\n ? COLOR_MAP[status || 'default'].active\n : COLOR_MAP[status || 'default'].default,\n 'text-ilabel font-ilabel flex w-full items-center px-4 py-1.5',\n buttonClass\n )}\n ref={refs.setReference}\n onClick={(e) => {\n e.preventDefault()\n onSelect && onSelect(props.name, e)\n }}\n {...getReferenceProps}\n >\n {props.icon}\n <span className=\"flex-shrink flex-grow text-left\">{label}</span>\n <ChevronRightIcon\n className={classNames(\n open ? 'text-gray-500' : 'text-gray-400',\n 'h-4.5 w-4.5 flex-shrink-0 group-hover:text-gray-500',\n placement?.startsWith('bottom') ? 'rotate-90' : ''\n )}\n aria-label=\"expand items\"\n />\n </Menu.Button>\n {open && (\n <Menu.Items\n static\n ref={refs.setFloating}\n style={floatingStyles}\n className=\"dark:bg-sentio-gray-100 dark:divide-sentio-gray-400/50 w-48 origin-top cursor-pointer divide-y divide-gray-200 rounded-md bg-white shadow-lg ring-1 ring-black ring-opacity-5 focus:outline-none dark:ring-gray-100\"\n {...getFloatingProps}\n >\n {items.map((items, i) =>\n items && items.length > 0 ? (\n <div\n key={i}\n className=\"overflow-auto py-1\"\n style={{ maxHeight: '60vh' }}\n >\n {items.map((item) => (\n <MenuItem key={item.key} item={item} onSelect={onSelect} />\n ))}\n </div>\n ) : null\n )}\n </Menu.Items>\n )}\n </Menu>\n )\n}\n","import { createContext } from 'react'\n\nexport const NavSizeContext = createContext({\n small: true,\n showLabel: true,\n setSmall: (small: boolean) => {\n // do nothing\n },\n setShowLabel: (showLabel: boolean) => {\n // do nothing\n }\n})\n","import { SVGProps } from 'react'\n\nexport const MoveLeftIcon = (props: SVGProps<SVGSVGElement>) => (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <g clipPath=\"url(#clip0_6869_7300)\">\n <path\n d=\"M2.66666 8H9.33332\"\n stroke=\"currentColor\"\n strokeWidth=\"1.33333\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M2.66666 8L5.33332 10.6667\"\n stroke=\"currentColor\"\n strokeWidth=\"1.33333\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M2.66669 7.9987L5.33335 5.33203\"\n stroke=\"currentColor\"\n strokeWidth=\"1.33333\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M13.3333 2.66797V13.3346\"\n stroke=\"currentColor\"\n strokeWidth=\"1.33333\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_6869_7300\">\n <rect width=\"16\" height=\"16\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n)\n\nexport const MoveRightIcon = (props: SVGProps<SVGSVGElement>) => (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <g clipPath=\"url(#clip0_6869_7309)\">\n <path\n d=\"M13.3333 8H6.66666\"\n stroke=\"currentColor\"\n strokeWidth=\"1.33333\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M13.3333 8L10.6667 10.6667\"\n stroke=\"currentColor\"\n strokeWidth=\"1.33333\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M13.3334 7.9987L10.6667 5.33203\"\n stroke=\"currentColor\"\n strokeWidth=\"1.33333\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M2.66669 2.66797V13.3346\"\n stroke=\"currentColor\"\n strokeWidth=\"1.33333\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_6869_7309\">\n <rect width=\"16\" height=\"16\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n)\n\nexport const RenameIcon = (props: SVGProps<SVGSVGElement>) => (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path\n d=\"M8 13.3281H14\"\n stroke=\"currentColor\"\n strokeWidth=\"1.33333\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M11 2.33609C11.2652 2.07087 11.6249 1.92188 12 1.92188C12.1857 1.92188 12.3696 1.95845 12.5412 2.02953C12.7128 2.1006 12.8687 2.20477 13 2.33609C13.1313 2.46741 13.2355 2.62331 13.3066 2.79489C13.3776 2.96647 13.4142 3.15037 13.4142 3.33609C13.4142 3.52181 13.3776 3.7057 13.3066 3.87728C13.2355 4.04886 13.1313 4.20477 13 4.33609L4.66667 12.6694L2 13.3361L2.66667 10.6694L11 2.33609Z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.33333\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n)\n\nexport const DeleteIcon = (props: SVGProps<SVGSVGElement>) => (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <g clipPath=\"url(#clip0_6869_7344)\">\n <path\n d=\"M2.66669 4.66797H13.3334\"\n stroke=\"currentColor\"\n strokeWidth=\"1.02222\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M6.66669 7.33203V11.332\"\n stroke=\"currentColor\"\n strokeWidth=\"1.02222\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M9.33331 7.33203V11.332\"\n stroke=\"currentColor\"\n strokeWidth=\"1.02222\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M3.33331 4.66797L3.99998 12.668C3.99998 13.0216 4.14046 13.3607 4.3905 13.6108C4.64055 13.8608 4.97969 14.0013 5.33331 14.0013H10.6666C11.0203 14.0013 11.3594 13.8608 11.6095 13.6108C11.8595 13.3607 12 13.0216 12 12.668L12.6666 4.66797\"\n stroke=\"currentColor\"\n strokeWidth=\"1.02222\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M6 4.66667V2.66667C6 2.48986 6.07024 2.32029 6.19526 2.19526C6.32029 2.07024 6.48986 2 6.66667 2H9.33333C9.51014 2 9.67971 2.07024 9.80474 2.19526C9.92976 2.32029 10 2.48986 10 2.66667V4.66667\"\n stroke=\"currentColor\"\n strokeWidth=\"1.02222\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_6869_7344\">\n <rect width=\"16\" height=\"16\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n)\n","import BigDecimal from '@sentio/bigdecimal'\nexport const BD = BigDecimal.clone({\n EXPONENTIAL_AT: 1e9\n})\n\nexport function parseHex(hex: string = '0'): bigint {\n try {\n return BigInt(BD(hex).toString())\n } catch {\n return BigInt(0)\n }\n}\n\nexport function getNumberWithDecimal(hex?: string | bigint, decimal?: number, asNumber?: boolean) {\n if (hex === undefined || decimal === undefined) {\n return null\n }\n const bigInt = typeof hex === 'bigint' ? hex : parseHex(hex)\n const n = BD(bigInt.toString()).div(decimal > 0 ? BD(10).pow(decimal) : 1)\n if (asNumber) {\n return n.toNumber()\n }\n return n.toString()\n}","'use client'\n\nimport { useState, useEffect } from 'react'\n\n/**\n * React Hook for detecting mobile devices\n * @param breakpoint Breakpoint width, default 768px\n * @returns boolean Whether it's a mobile device\n */\nexport function useMobile(breakpoint: number = 768, defaultValue: boolean = false): boolean {\n const [isMobile, setIsMobile] = useState<boolean>(defaultValue)\n\n useEffect(() => {\n // Check user agent string\n const checkUserAgent = (): boolean => {\n if (typeof window === 'undefined') return false\n\n const userAgent = window.navigator.userAgent.toLowerCase()\n const mobileKeywords = [\n 'android',\n 'iphone',\n 'ipad',\n 'ipod',\n 'blackberry',\n 'windows phone',\n 'mobile',\n 'webos',\n 'opera mini'\n ]\n\n return mobileKeywords.some((keyword) => userAgent.includes(keyword))\n }\n\n // Check screen width\n const checkScreenWidth = (): boolean => {\n if (typeof window === 'undefined') return false\n return window.innerWidth < breakpoint\n }\n\n // Check touch support\n const checkTouchSupport = (): boolean => {\n if (typeof window === 'undefined') return false\n return 'ontouchstart' in window || navigator.maxTouchPoints > 0\n }\n\n // Comprehensive mobile detection\n const detectMobile = (): boolean => {\n const isUserAgentMobile = checkUserAgent()\n const isScreenSmall = checkScreenWidth()\n const hasTouchSupport = checkTouchSupport()\n\n // If user agent explicitly indicates mobile device, return true directly\n if (isUserAgentMobile) return true\n\n // If screen is small and supports touch, consider it mobile\n if (isScreenSmall && hasTouchSupport) return true\n\n // Judge based on screen width only\n return isScreenSmall\n }\n\n // Initial detection\n setIsMobile(detectMobile())\n\n // Listen for window resize\n const handleResize = () => {\n setIsMobile(detectMobile())\n }\n\n window.addEventListener('resize', handleResize)\n\n // Cleanup event listener\n return () => {\n window.removeEventListener('resize', handleResize)\n }\n }, [breakpoint])\n\n return isMobile\n}\n\nexport function useInDapp() {\n const isMobile = useMobile()\n if (process.env.NODE_ENV === 'development') {\n return isMobile\n }\n\n // @ts-ignore: Ignore missing type for isBinance\n const isBinanceBrowser = typeof window === 'object' && window.ethereum?.isBinance\n\n return isBinanceBrowser\n}\n"],"mappings":";AAAA,SAAS,iBAAiB;AAE1B,SAAS,YAAY;AACrB,SAAS,MAAM,kBAAkB;AAmB3B,SASI,KATJ;AATN,SAAS,YAAY;AAAA,EACnB,OAAO;AAAA,EACP,UAAU;AAAA,EACV;AAAA,EACA,QAAQ;AAAA,EACR;AACF,GAAU;AACR,MAAI,SAAS;AACX,WACE;AAAA,MAAC;AAAA;AAAA,QACC,WAAW;AAAA,UACT;AAAA,UACA;AAAA,QACF;AAAA,QAEC;AAAA;AAAA,UAEA,QACC,oBAAC,SAAI,WAAU,qEACZ,gBACH;AAAA,UAEF,oBAAC,SAAI,WAAU,4BACb;AAAA,YAAC;AAAA;AAAA,cACC,OAAM;AAAA,cACN,SAAS;AAAA,cACT,QAAQ;AAAA,cACR;AAAA,cACA,aAAa;AAAA,gBACX,cAAc;AAAA,cAChB;AAAA;AAAA,UACF,GACF;AAAA;AAAA;AAAA,IACF;AAAA,EAEJ;AACA,SAAO;AACT;AAEO,IAAM,aAAa,KAAK,WAAW;;;ACpD1C,OAAO,WAAW;AAClB,SAAS,kBAAkB;AAC3B,SAAS,MAAMA,mBAAkB;AAqB7B,SAEI,OAAAC,MAFJ,QAAAC,aAAA;AAVG,IAAM,cAAc,MAAM,WAAkC,SAAS,QAAQ,MAAa,KAAK;AACpG,QAAM;AAAA,IACJ,UAAU;AAAA,IACV;AAAA,IACA;AAAA,IACA,OAAO;AAAA,IACP;AAAA,IACA,cAAc;AAAA,EAChB,IAAI;AACJ,SACE,gBAAAA,MAAC,SAAI,KAAU,WAAWF,YAAW,YAAY,SAAS,GACvD;AAAA,gBAAY,WACX,gBAAAC;AAAA,MAAC;AAAA;AAAA,QACC,WAAWD;AAAA,UACT;AAAA,UACA,cACI,oCAAoC,WAAW,KAC/C;AAAA,QACN;AAAA;AAAA,IACD;AAAA,IAEH,gBAAAC,KAAC,SAAI,WAAU,sDACb,0BAAAA;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,OAAM;AAAA,QACN;AAAA,QACA,aAAa;AAAA,UACX,aAAa;AAAA,QACf;AAAA;AAAA,IACF,GACF;AAAA,IACC;AAAA,KACH;AAEJ,CAAC;;;AC7CD;AAAA,EAIE;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AAAA,OACK;AACP,OAAO,UAAU;AACjB,SAAS,MAAME,mBAAkB;AAW7B,gBAAAC,MAmKE,QAAAC,aAnKF;AATG,IAAM,WAAW,CAAC,UACvB,gBAAAD;AAAA,EAAC;AAAA;AAAA,IACC,OAAM;AAAA,IACN,MAAK;AAAA,IACL,SAAQ;AAAA,IACR,aAAY;AAAA,IACZ,QAAO;AAAA,IACN,GAAG;AAAA,IAEJ,0BAAAA;AAAA,MAAC;AAAA;AAAA,QACC,eAAc;AAAA,QACd,gBAAe;AAAA,QACf,GAAE;AAAA;AAAA,IACJ;AAAA;AACF;AAGK,IAAM,kBAAkB,CAAC,UAC9B,gBAAAA;AAAA,EAAC;AAAA;AAAA,IACC,OAAM;AAAA,IACN,SAAQ;AAAA,IACR,MAAK;AAAA,IACJ,GAAG;AAAA,IAEJ,0BAAAA;AAAA,MAAC;AAAA;AAAA,QACC,UAAS;AAAA,QACT,GAAE;AAAA,QACF,UAAS;AAAA;AAAA,IACX;AAAA;AACF;AAeK,IAAM,aAAwB,CAAC;AAAA,EACpC,OAAO;AAAA,EACP,OAAO;AAAA,EACP;AAAA,EACA;AAAA,EACA,YAAY;AAAA,EACZ;AAAA,EACA;AAAA,EACA;AACF,MAAM;AACJ,QAAM,CAAC,QAAQ,SAAS,IAAI,SAAS,KAAK;AAC1C,QAAM,CAAC,WAAW,YAAY,IAAI,SAAS,KAAK;AAChD,QAAM,CAAC,UAAU,WAAW,IAAI,SAAS,KAAK;AAC9C,QAAM,aAAa,OAA8B,IAAI;AACrD,QAAM,mBAAmB,OAAuB,IAAI;AAEpD,YAAU,MAAM;AACd,UAAM,cAAc,MAAM;AACxB,kBAAY,OAAO,aAAa,GAAG;AAAA,IACrC;AACA,gBAAY;AACZ,WAAO,iBAAiB,UAAU,WAAW;AAC7C,WAAO,MAAM,OAAO,oBAAoB,UAAU,WAAW;AAAA,EAC/D,GAAG,CAAC,CAAC;AAEL,QAAM,kBAAkB,YAAY,CAAC,QAAgB;AACnD,SAAK,GAAG;AACR,cAAU,IAAI;AAEd,QAAI,WAAW,SAAS;AACtB,mBAAa,WAAW,OAAO;AAAA,IACjC;AAEA,eAAW,UAAU,WAAW,MAAM;AACpC,gBAAU,KAAK;AACf,iBAAW,UAAU;AAAA,IACvB,GAAG,GAAI;AAAA,EACT,GAAG,CAAC,CAAC;AAEL,QAAM,SAAS;AAAA,IACb,CAAC,MAAiD;AAChD,YAAM,SAAS,EAAE;AACjB,UACE,OAAO,SAAS,YAAY,MAAM,OAClC,OAAO,aAAa,MAAM,GAC1B;AACA;AAAA,MACF;AACA,QAAE,gBAAgB;AAClB,QAAE,eAAe;AACjB,UAAI,OAAQ;AACZ,UAAI,OAAO,SAAS,YAAY;AAC9B,cAAM,MAAM,KAAK;AACjB,YAAI,eAAe,SAAS;AAC1B,cACG,KAAK,CAAC,QAAgB;AACrB,4BAAgB,GAAG;AAAA,UACrB,CAAC,EACA,MAAM,CAAC,UAAU;AAChB,oBAAQ,MAAM,KAAK;AAAA,UACrB,CAAC;AAAA,QACL,OAAO;AACL,0BAAgB,GAAG;AAAA,QACrB;AAAA,MACF,OAAO;AACL,wBAAgB,IAAI;AAAA,MACtB;AAAA,IACF;AAAA,IACA,CAAC,QAAQ,MAAM,eAAe;AAAA,EAChC;AAEA,QAAM,mBAAmB;AAAA,IACvB,CAAC,MAAiD;AAChD,UAAI,UAAU;AACZ,eAAO,CAAC;AAAA,MACV;AAAA,IACF;AAAA,IACA,CAAC,UAAU,MAAM;AAAA,EACnB;AAEA,QAAM,kBAAkB,CAAC;AAEzB,QAAM,qBAAoC;AAAA,IACxC,UAAU,GAAG,IAAI;AAAA,IACjB,UAAU,GAAG,IAAI;AAAA,IACjB,WAAW,GAAG,IAAI;AAAA,IAClB,WAAW,GAAG,IAAI;AAAA,IAClB,YAAY,OAAO,SAAY,GAAG,EAAE,OAAO;AAAA,IAC3C,aAAa,OAAO,SAAY,GAAG,EAAE,OAAO;AAAA,IAC5C,YACE,CAAC,mBAAmB,QAChB,WACE,YACA,YACE,YACA,WACJ;AAAA,EACR;AAEA,QAAM,iBAAgC;AAAA,IACpC,SAAS,CAAC,kBAAkB,iBAAiB;AAAA,EAC/C;AAEA,QAAM,WAA0B;AAAA,IAC9B,QAAQ;AAAA,EACV;AAEA,QAAM,gBAA+B;AAAA,IACnC,WAAW,SAAS,sBAAsB;AAAA,EAC5C;AAEA,QAAM,mBAAkC;AAAA,IACtC,WAAW,SAAS,sBAAsB;AAAA,EAC5C;AAEA,SACE,gBAAAC;AAAA,IAAC;AAAA;AAAA,MACC,WAAWF;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,OAAO;AAAA,MACP,SAAS;AAAA,MACT,cAAc,MAAM,aAAa,IAAI;AAAA,MACrC,cAAc,MAAM,aAAa,KAAK;AAAA,MAErC;AAAA,sBAAc,WAAW;AAAA,QAC1B,gBAAAE;AAAA,UAAC;AAAA;AAAA,YACC,KAAK;AAAA,YACL,WAAWF;AAAA,cACT;AAAA,cACA,kBAAkB,YAAY;AAAA,cAC9B,SAAS,WAAW;AAAA,YACtB;AAAA,YACA,OAAO;AAAA,YAEP;AAAA,8BAAAC;AAAA,gBAAC;AAAA;AAAA,kBACC,WAAU;AAAA,kBACV,OAAO;AAAA,kBACP,QAAQ;AAAA,kBACR,OAAO,EAAE,GAAG,UAAU,GAAG,cAAc;AAAA,kBAEvC,SAAS;AAAA;AAAA,cACX;AAAA,cACA,gBAAAA;AAAA,gBAAC;AAAA;AAAA,kBACC,WAAU;AAAA,kBACV,OAAO;AAAA,kBACP,QAAQ;AAAA,kBACR,OAAO,EAAE,GAAG,UAAU,GAAG,iBAAiB;AAAA;AAAA,cAC5C;AAAA;AAAA;AAAA,QACF;AAAA,QACC,cAAc,UAAU;AAAA;AAAA;AAAA,EAC3B;AAEJ;;;ACtNA,SAAS,cAAc,YAAyC,eAAe;;;ACG/E,OAAOE,UAAkB,UAAAC,SAAQ,YAAAC,WAAU,aAAAC,kBAAiB;AAC5D;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEP,SAAS,MAAMC,mBAAkB;AACjC,SAAS,gBAAgB;AAwGnB,mBAsCU,OAAAC,MAtCV,QAAAC,aAAA;AArFC,IAAM,iBAA4B,CAAC;AAAA,EACxC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,UAAU;AAAA,EACV;AAAA,EACA,gBAAgB;AAAA,EAChB,kBAAkB;AAAA,EAClB,WAAW;AAAA,EACX,YAAY;AAAA,EACZ,sBAAsB;AAAA,EACtB,oBAAoB;AACtB,MAAM;AACJ,QAAM,WAAWL,QAAO,IAAI;AAC5B,QAAM,CAAC,MAAM,OAAO,IAAIC,UAAS,KAAK;AACtC,QAAM,CAAC,WAAW,YAAY,IAAIA,UAAS,KAAK;AAChD,QAAM,aAAaD,QAAuB;AAE1C,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,gBAAgB,EAAE,OAAO,EAAE,GAAG,QAAQ,GAAG,OAAO,IAAI,CAAC,EAAE;AAAA,IACvD;AAAA,IACA;AAAA,EACF,IAAI,YAAY;AAAA,IACd;AAAA,IACA,cAAc,CAAC,YAAY;AACzB,cAAQ,OAAO;AACf,UAAI,qBAAqB;AACvB,YAAI,SAAS;AACX,uBAAa,IAAI;AAAA,QACnB,OAAO;AACL,cAAI,WAAW,SAAS;AACtB,yBAAa,WAAW,OAAO;AAAA,UACjC;AACA,qBAAW,UAAU,WAAW,MAAM;AACpC,yBAAa,KAAK;AAAA,UACpB,GAAG,iBAAiB;AAAA,QACtB;AAAA,MACF,OAAO;AACL,qBAAa,OAAO;AAAA,MACtB;AAAA,IACF;AAAA,IACA,YAAY;AAAA,MACV,OAAO,aAAa;AAAA,MACpB,KAAK;AAAA,MACL,MAAM;AAAA,MACN,MAAM,EAAE,SAAS,UAAU,SAAS,EAAE,CAAC;AAAA,IACzC;AAAA,IACA,UAAU;AAAA,IACV,WAAW;AAAA,IACX,sBAAsB;AAAA,EACxB,CAAC;AAED,QAAM;AAAA,IACJ,QAAQ;AAAA,MACN,MAAM;AAAA,MACN,OAAO;AAAA,IACT;AAAA,EACF,IAAI,cAAc,OAAO;AAEzB,QAAM,EAAE,mBAAmB,iBAAiB,IAAI,gBAAgB;AAAA,IAC9D,SAAS,SAAS;AAAA,MAChB,aAAa,YAAY;AAAA,QACvB,QAAQ;AAAA,MACV,CAAC;AAAA,MACD;AAAA,IACF,CAAC;AAAA,EACH,CAAC;AAED,EAAAE,WAAU,MAAM;AACd,WAAO,MAAM;AACX,UAAI,WAAW,SAAS;AACtB,qBAAa,WAAW,OAAO;AAAA,MACjC;AAAA,IACF;AAAA,EACF,GAAG,CAAC,CAAC;AAEL,MAAI,CAAC;AACH,WACE,gBAAAG,MAAA,YACG;AAAA;AAAA,MACA;AAAA,OACH;AAGJ,QAAM,SAAS,YAAY,iBAAiBN,OAAM;AAElD,SACE,gBAAAM,MAAC,SAAI,WAAWF,YAAW,8BAA8B,SAAS,GAChE;AAAA,oBAAAE;AAAA,MAAC;AAAA;AAAA,QACC,KAAK,KAAK;AAAA,QACT,GAAG,kBAAkB;AAAA,QACtB,WAAWF,YAAW,iBAAiB,QAAQ,qBAAqB;AAAA,QAEnE;AAAA;AAAA,UACA;AAAA;AAAA;AAAA,IACH;AAAA,KAEE,sBAAsB,YAAY,SAClC,gBAAAC,KAAC,UACC,0BAAAA,KAAC,SAAI,WAAU,YACb,0BAAAC;AAAA,MAAC;AAAA;AAAA,QACC,WAAWF;AAAA,UACT;AAAA,UACA,uBACE,gCAAgC,iBAAiB;AAAA,UACnD,sBAAuB,OAAO,gBAAgB,cAAe;AAAA,QAC/D;AAAA,QACA,KAAK,KAAK;AAAA,QACV,OAAO;AAAA,UACL,UAAU;AAAA,UACV,KAAK,KAAK;AAAA,UACV,MAAM,KAAK;AAAA,QACb;AAAA,QACC,GAAG;AAAA,QAEH;AAAA,WAAC,aAAa,cAAc,YAC3B,gBAAAC;AAAA,YAAC;AAAA;AAAA,cACC,WAAU;AAAA,cACV,KAAK;AAAA,cACL,OAAO;AAAA,gBACL,MAAM,UAAU;AAAA,gBAChB,KAAK,UAAU;AAAA,gBACf,UAAU;AAAA,cACZ;AAAA;AAAA,UACF;AAAA,UAED,SAAS,IAAI,IACZ,gBAAAA;AAAA,YAAC;AAAA;AAAA,cACC,WAAWD,YAAW,6BAA6B,QAAQ;AAAA,cAE1D;AAAA;AAAA,UACH,IAEA,gBAAAC,KAAC,SAAI,WAAWD,YAAW,uBAAuB,QAAQ,GACvD,gBACH;AAAA;AAAA;AAAA,IAEJ,GACF,GACF;AAAA,KAEJ;AAEJ;;;AD3LA,SAAS,KAAK,UAAwB;AAqIlC,SACE,OAAAG,MADF,QAAAC,aAAA;AAnIG,IAAM,cAAc,IAAI,CAAC,eAAe,gBAAgB,aAAa,GAAG;AAAA,EAC7E,UAAU;AAAA,IACR,MAAM;AAAA,MACJ,SAAS,CAAC,aAAa;AAAA,MACvB,WAAW,CAAC,eAAe;AAAA,MAC3B,QAAQ,CAAC,YAAY;AAAA,MACrB,MAAM,CAAC,UAAU;AAAA,MACjB,MAAM,CAAC,UAAU;AAAA,MACjB,UAAU,CAAC;AAAA,MACX,cAAc,CAAC;AAAA,MACf,QAAQ,CAAC;AAAA;AAAA,IACX;AAAA,IACA,QAAQ;AAAA,MACN,SAAS;AAAA,MACT,QAAQ;AAAA,IACV;AAAA,IACA,MAAM;AAAA,MACJ,IAAI,CAAC,QAAQ,UAAU,WAAW,eAAe,OAAO;AAAA,MACxD,SAAS,CAAC,UAAU,eAAe,eAAe,SAAS,MAAM;AAAA,MACjE,IAAI,CAAC,wCAAwC,QAAQ;AAAA,MACrD,IAAI,CAAC,sBAAsB,MAAM;AAAA,IACnC;AAAA,IACA,UAAU;AAAA,MACR,OAAO,CAAC,EAAE;AAAA,MACV,MAAM,CAAC,cAAc;AAAA,IACvB;AAAA,IACA,UAAU;AAAA,MACR,OAAO,CAAC,cAAc;AAAA,MACtB,KAAK,CAAC,cAAc;AAAA,MACpB,QAAQ,CAAC,EAAE;AAAA,MACX,MAAM,CAAC,YAAY;AAAA,IACrB;AAAA,EACF;AAAA,EACA,kBAAkB;AAAA,IAChB;AAAA,MACE,MAAM;AAAA,MACN,MAAM;AAAA,MACN,OAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,MAAM;AAAA,MACN,OAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,MAAM;AAAA,MACN,OAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,MAAM;AAAA,MACN,OAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,MAAM;AAAA,MACN,OAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,MAAM;AAAA,MACN,OAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,UAAU;AAAA,MACV,OAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,UAAU;AAAA,MACV,OAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,UAAU;AAAA,MACV,OAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,UAAU;AAAA,MACV,OAAO;AAAA,IACT;AAAA,EACF;AAAA,EACA,iBAAiB;AAAA,IACf,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,UAAU;AAAA,IACV,UAAU;AAAA,EACZ;AACF,CAAC;AAsBM,SAAS,YAAY,EAAE,WAAW,MAAM,GAA4C;AACzF,SACE,gBAAAA,MAAC,SAAI,WAAW,wBAAwB,SAAS,IAAI,SAAQ,aAC3D;AAAA,oBAAAD;AAAA,MAAC;AAAA;AAAA,QACC,WAAW,QAAQ,cAAc;AAAA,QACjC,IAAG;AAAA,QACH,IAAG;AAAA,QACH,GAAE;AAAA,QACF,QAAO;AAAA,QACP,aAAY;AAAA;AAAA,IACb;AAAA,IACD,gBAAAA;AAAA,MAAC;AAAA;AAAA,QACC,WAAW,QAAQ,eAAe;AAAA,QAClC,MAAK;AAAA,QACL,GAAE;AAAA;AAAA,IACH;AAAA,KACH;AAEJ;AAEA,IAAM,YAAY,IAAI,IAAI;AAAA,EACxB,UAAU;AAAA,IACR,MAAM;AAAA,MACJ,SAAS;AAAA,MACT,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,IACN;AAAA,IACA,UAAU;AAAA,MACR,MAAM;AAAA,MACN,OAAO;AAAA,IACT;AAAA,EACF;AAAA,EACA,iBAAiB;AAAA,IACf,MAAM;AAAA,IACN,UAAU;AAAA,EACZ;AACF,CAAC;AAED,IAAM,aAAa,IAAI,IAAI;AAAA,EACzB,UAAU;AAAA,IACR,MAAM;AAAA,MACJ,SAAS;AAAA,MACT,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,IACN;AAAA,EACF;AAAA,EACA,iBAAiB;AAAA,IACf,MAAM;AAAA,EACR;AACF,CAAC;AAED,SAAS,OACP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GACA,KACA;AACA,QAAM,cAAc,UAAU,EAAE,MAAY,SAAmB,CAAC;AAEhE,QAAM,SAAS,QAAQ,MAAM;AAC3B,QAAIE,UAAoB;AAExB,QAAI,YAAY;AACd,MAAAA,UACE,gBAAAF;AAAA,QAAC;AAAA;AAAA,UACC,WAAW,GAAG,WAAW,EAAE,KAAW,CAAC,GAAG,QAAQ,YAAY,eAAe,EAAE;AAAA,UAC/E,OAAO,SAAS;AAAA;AAAA,MAClB;AAAA,IAEJ,WAAW,MAAM;AACf,MAAAE,UAAS,aAAa,MAAM,EAAE,WAAW,GAAG,KAAK,MAAM,WAAW,WAAW,EAAE,CAAC;AAAA,IAClF;AACA,WAAOA;AAAA,EACT,GAAG,CAAC,MAAM,aAAa,YAAY,IAAI,CAAC;AAGxC,QAAM,MAAM;AAAA,IACV;AAAA,IACA,YAAY;AAAA,MACV;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC;AAAA,EACH;AAEA,QAAM,MACJ,gBAAAD;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA;AAAA,MACA;AAAA,MACA,UAAU,YAAY;AAAA,MACtB,WAAW;AAAA,MACX;AAAA,MACA;AAAA,MACA,0BAAwB;AAAA,MACxB;AAAA,MAEC;AAAA;AAAA,QACA;AAAA;AAAA;AAAA,EACH;AAGF,MAAI,YAAY,cAAc;AAC5B,WACE,gBAAAD;AAAA,MAAC;AAAA;AAAA,QACC,WAAW;AAAA,QACX,iBAAiB,qBAAqB,WAAW;AAAA,QACjD,WAAU;AAAA,QACV,MAAM,gBAAAA,KAAC,OAAE,WAAU,yBAAyB,wBAAa;AAAA,QACzD,WAAS;AAAA,QAER;AAAA;AAAA,IACH;AAAA,EAEJ;AAEA,SAAO;AACT;AAEO,IAAM,YAAY,WAAW,MAAM;AAC1C,IAAO,oBAAQ;;;AEhRf;AAAA,EAGE,YAAAG;AAAA,EACA,QAAAC;AAAA,EACA;AAAA,OACK;AACP,SAAS,QAAQ,kBAAkB;AAEnC,SAAS,MAAMC,mBAAkB;AAsErB,gBAAAC,MAsDU,QAAAC,aAtDV;AApEL,IAAM,oBAAoB,cAAc,EAAE;AAyBjD,IAAM,cAAyB,CAAC;AAAA,EAC9B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,cAAc,CAAC;AAAA,EACf;AAAA,EACA;AAAA,EACA,UAAU,CAAC;AAAA,EACX;AAAA,EACA;AAAA,EACA;AAAA,EACA,cAAc;AAAA,EACd,eAAe;AAAA,EACf;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,SAAS;AAAA,EACT,OAAO;AACT,MAAM;AACJ,SACE,gBAAAD,KAAC,cAAW,QAAM,MAAC,IAAIE,WAAU,MAAM,MACrC,0BAAAF;AAAA,IAAC;AAAA;AAAA,MACC,WAAWD,YAAW,YAAY,UAAU;AAAA,MAC5C,IAAG;AAAA,MACH;AAAA,MACA;AAAA,MACA,OAAO;AAAA,QACL;AAAA,MACF;AAAA,MAEA,0BAAAE,MAAC,kBAAkB,UAAlB,EAA2B,OAAO,QACjC;AAAA,wBAAAD;AAAA,UAAC,WAAW;AAAA,UAAX;AAAA,YACC,IAAIE;AAAA,YACJ,OAAM;AAAA,YACN,WAAU;AAAA,YACV,SAAQ;AAAA,YACR,OAAM;AAAA,YACN,WAAU;AAAA,YACV,SAAQ;AAAA,YAER,0BAAAF;AAAA,cAAC;AAAA;AAAA,gBACC,WAAWD;AAAA,kBACT;AAAA,kBACA,SAAS,UACL,uCACA;AAAA,gBACN;AAAA;AAAA,YACF;AAAA;AAAA,QACF;AAAA,QACA,gBAAAC,KAAC,SAAI,WAAU,sCACb,0BAAAA,KAAC,SAAI,WAAU,mFACb,0BAAAA;AAAA,UAAC,WAAW;AAAA,UAAX;AAAA,YACC,IAAIE;AAAA,YACJ,OAAM;AAAA,YACN,WAAU;AAAA,YACV,SAAQ;AAAA,YACR,OAAM;AAAA,YACN,WAAU;AAAA,YACV,SAAQ;AAAA,YAER,0BAAAD;AAAA,cAAC,OAAO;AAAA,cAAP;AAAA,gBACC,eAAY;AAAA,gBACZ,WAAWF;AAAA,kBACT;AAAA,kBACA;AAAA,gBACF;AAAA,gBAEC;AAAA,0BACC,gBAAAC;AAAA,oBAAC,OAAO;AAAA,oBAAP;AAAA,sBACC,IAAG;AAAA,sBACH,WAAWD;AAAA,wBACT;AAAA,wBACA,eAAe;AAAA,sBACjB;AAAA,sBAEC;AAAA;AAAA,kBACH,IACE;AAAA,kBACH;AAAA,kBACA,SACC,SAEA,gBAAAE;AAAA,oBAAC;AAAA;AAAA,sBACC,WAAWF;AAAA,wBACT;AAAA,wBACA,gBAAgB;AAAA,sBAClB;AAAA,sBAEA;AAAA,wCAAAC;AAAA,0BAAC;AAAA;AAAA,4BACC,WAAU;AAAA,4BACV,OAAO,iBAAiB;AAAA,4BAEvB,2BAAiB;AAAA;AAAA,wBACpB;AAAA,wBACA,gBAAAC;AAAA,0BAAC;AAAA;AAAA,4BACC,WAAWF;AAAA,8BACT;AAAA,8BACA,oBAAoB;AAAA,4BACtB;AAAA,4BAEC;AAAA;AAAA,8BACA,QACC,gBAAAC,KAAC,qBAAO,MAAK,WAAU,SAAS,MAAO,GAAG,SACvC,oBAAU,MACb;AAAA,8BAED,YACC,gBAAAA,KAAC,qBAAO,SAAS,UAAW,GAAG,aAC5B,wBAAc,UACjB;AAAA;AAAA;AAAA,wBAEJ;AAAA;AAAA;AAAA,kBACF;AAAA;AAAA;AAAA,YAEJ;AAAA;AAAA,QACF,GACF,GACF;AAAA,SACF;AAAA;AAAA,EACF,GACF;AAEJ;AAEO,IAAM,aAAaG,MAAK,WAAW;;;ACnK1C,SAAkC,YAAAC,WAAU,eAAAC,oBAAmB;AAC/D,SAAS,MAAMC,mBAAkB;AACjC,OAAO,gBAAgB;AACvB,SAAS,sBAAsB;AAkCzB,SASE,OAAAC,MATF,QAAAC,aAAA;AAtBC,IAAM,kBAA6B,CAAC;AAAA,EACzC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,gBAAgB;AAAA,EAChB;AACF,MAAM;AACJ,QAAM,CAAC,MAAM,OAAO,IAAIJ,UAAS,eAAe,KAAK;AAErD,QAAM,SAASC,aAAY,MAAM;AAC/B,YAAQ,CAAC,SAAS,CAAC,IAAI;AAAA,EACzB,GAAG,CAAC,CAAC;AAEL,SACE,gBAAAG;AAAA,IAAC;AAAA;AAAA,MACC,WACE,sBACA;AAAA,MAGF;AAAA,wBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,WAAWF;AAAA,cACT,OAAO,cAAc;AAAA,cACrB;AAAA,cACA;AAAA,YACF;AAAA,YACA,SAAS;AAAA,YACT,MAAK;AAAA,YAEL;AAAA,8BAAAC;AAAA,gBAAC;AAAA;AAAA,kBACC,WAAWD;AAAA,oBACT,OAAO,wBAAwB;AAAA,oBAC/B;AAAA,oBACA;AAAA,kBACF;AAAA;AAAA,cACF;AAAA,cACC,WAAW,KAAK,IAAI,MAAM,IAAI,IAAI;AAAA;AAAA;AAAA,QACrC;AAAA,QACC,QAAQ,gBAAAC,KAAC,SAAI,WAAWD,YAAW,OAAO,SAAS,GAAI,UAAS;AAAA;AAAA;AAAA,EACnE;AAEJ;;;AC1DA,SAAS,uBAAuB;AAChC,SAAS,MAAMG,mBAAkB;;;ACDjC,SAAS,eAAAC,cAAa,YAAAC,iBAAgB;AAE/B,SAAS,WAAW,eAAe,OAAO;AAC/C,QAAM,CAAC,OAAO,QAAQ,IAAIA,UAAS,YAAY;AAE/C,QAAM,UAAUD,aAAY,MAAM,SAAS,IAAI,GAAG,CAAC,CAAC;AACpD,QAAM,WAAWA,aAAY,MAAM,SAAS,KAAK,GAAG,CAAC,CAAC;AACtD,QAAM,SAASA,aAAY,MAAM,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC;AAExD,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;;;ADbA,SAAkC,aAAAE,kBAAiB;AA+B7C,SAQE,OAAAC,MARF,QAAAC,aAAA;AApBC,IAAM,WAA8B,CAAC;AAAA,EAC1C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,cAAc;AAAA,EACd,gBAAgB;AAClB,MAAM;AACJ,QAAM,EAAE,QAAQ,OAAO,SAAS,SAAS,SAAS,IAAI,WAAW,WAAW;AAE5E,EAAAF,WAAU,MAAM;AACd,QAAI,aAAa;AACf,cAAQ;AAAA,IACV,OAAO;AACL,eAAS;AAAA,IACX;AAAA,EACF,GAAG,CAAC,aAAa,SAAS,QAAQ,CAAC;AAEnC,SACE,gBAAAE,MAAC,SAAI,WAAWC,YAAW,aAAa,SAAS,GAC/C;AAAA,oBAAAD;AAAA,MAAC;AAAA;AAAA,QACC,WAAWC;AAAA,UACT;AAAA,UACA;AAAA,QACF;AAAA,QACA,SAAS;AAAA,QAER;AAAA;AAAA,UACD,gBAAAF;AAAA,YAAC;AAAA;AAAA,cACC,WAAWE;AAAA,gBACT;AAAA,gBACA;AAAA,gBACA,UAAU,eAAe;AAAA,cAC3B;AAAA;AAAA,UACF;AAAA;AAAA;AAAA,IACF;AAAA,IACA,gBAAAF;AAAA,MAAC;AAAA;AAAA,QACC,WAAWE;AAAA,UACT;AAAA,UACA,UAAU,gBAAgB;AAAA,QAC5B;AAAA,QACA,OAAO;AAAA,UACL,WAAW,UAAU,WAAW;AAAA,QAClC;AAAA,QAEC;AAAA;AAAA,IACH;AAAA,KACF;AAEJ;;;AE/DA,SAAS,OAAAC,MAAK,MAAAC,WAAU;AACxB,SAAS,6BAA6B;AACtC,SAAS,cAAAC,mBAAkB;AA6FnB,SACE,OAAAC,MADF,QAAAC,aAAA;AA1FR,IAAM,uBAAuBJ;AAAA,EAC3B;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,MAAM;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,MACN;AAAA,MACA,OAAO;AAAA,QACL,MAAM;AAAA,QACN,OACE;AAAA,MACJ;AAAA,MACA,UAAU;AAAA,QACR,MAAM;AAAA,QACN,OAAO;AAAA,MACT;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf,MAAM;AAAA,MACN,OAAO;AAAA,MACP,UAAU;AAAA,IACZ;AAAA,IACA,kBAAkB,CAAC;AAAA,EACrB;AACF;AAEA,IAAM,cAAcA;AAAA,EAClB;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,MAAM;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,MACN;AAAA,MACA,OAAO;AAAA,QACL,MAAM;AAAA,QACN,OAAO;AAAA,MACT;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf,MAAM;AAAA,MACN,OAAO;AAAA,IACT;AAAA,EACF;AACF;AAEA,IAAM,aAAaA,KAAI,gBAAgB;AAAA,EACrC,UAAU;AAAA,IACR,MAAM;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,IACN;AAAA,EACF;AAAA,EACA,iBAAiB;AAAA,IACf,MAAM;AAAA,EACR;AACF,CAAC;AAWM,IAAM,QAAQE;AAAA,EACnB,SAASG,OAAM,OAAO,UAAU;AAC9B,UAAM,EAAE,WAAW,OAAO,gBAAgB,MAAM,GAAG,KAAK,IAAI;AAE5D,UAAM,qBAAqB,qBAAqB;AAAA,MAC9C;AAAA,MACA,OAAO,CAAC,CAAC;AAAA,MACT,UAAU,KAAK;AAAA,IACjB,CAAC;AACD,UAAM,iBAAiBJ,IAAG,YAAY,EAAE,MAAM,OAAO,CAAC,CAAC,MAAM,CAAC,GAAG,SAAS;AAE1E,WACE,gBAAAG,MAAC,SACC;AAAA,sBAAAA,MAAC,SAAI,WAAW,oBACd;AAAA,wBAAAD,KAAC,WAAO,GAAG,MAAM,KAAK,UAAU,WAAW,gBAAgB;AAAA,QAC1D,SACC,gBAAAA,KAAC,SAAI,WAAU,yEACb,0BAAAA,KAAC,yBAAsB,WAAW,WAAW,EAAE,KAAK,CAAC,GAAG,GAC1D;AAAA,SAEJ;AAAA,MACC,SACC,gBAAAA,KAAC,OAAE,WAAU,6BACV,iBAAO,SAAS,WAAW,QAAQ,MAAM,SAC5C;AAAA,OAEJ;AAAA,EAEJ;AACF;;;AC/GA,SAAS,kBAAkB;;;ACA3B,SAAe,MAANG,WAAwB;;;AD4BzB,SAeQ,OAAAC,OAfR,QAAAC,cAAA;AAZD,SAAS,YAAe;AAAA,EAC7B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAa;AACX,SACE,gBAAAA,OAAC,cAAW,OAAc,UACvB;AAAA,aACC,gBAAAA,OAAC,WAAW,OAAX,EAAiB,WAAU,qDACzB;AAAA;AAAA,MAAM;AAAA,OACT;AAAA,IAEF,gBAAAD;AAAA,MAAC;AAAA;AAAA,QACC,WAAWE;AAAA,UACT;AAAA,UACA,WAAW,wBAAwB;AAAA,UACnC;AAAA,QACF;AAAA,QAEC,kBAAQ,IAAI,CAAC,EAAE,MAAM,OAAAC,OAAM,GAAG,UAC7B,gBAAAH,MAAC,WAAW,QAAX,EAA8B,OAAOG,QACnC,WAAC,EAAE,QAAQ,MACV,gBAAAF,OAAC,UAAK,WAAU,eACd;AAAA,0BAAAD;AAAA,YAAC;AAAA;AAAA,cACC,UAAQ;AAAA,cACR,MAAK;AAAA,cACL;AAAA,cACA,WAAU;AAAA;AAAA,UACZ;AAAA,UACA,gBAAAA;AAAA,YAAC;AAAA;AAAA,cACC,WAAWE;AAAA,gBACT;AAAA,gBACA,UACI,uCACA;AAAA,gBACJ;AAAA,cACF;AAAA,cAEC;AAAA;AAAA,UACH;AAAA,WACF,KApBoB,KAsBxB,CACD;AAAA;AAAA,IACH;AAAA,KACF;AAEJ;;;AEnEA,SAAS,eAAAE,cAAa,aAAAC,YAAW,YAAAC,iBAAgB;AACjD,SAAS,UAAU,sBAAsB;AACzC,SAAS,OAAAC,YAAW;AACpB,SAAS,cAAAC,mBAAkB;AAkIrB,SAUa,OAAAC,OAVb,QAAAC,cAAA;AAhIN,IAAM,cAAcH;AAAA,EAClB;AAAA,IACE;AAAA,EACF;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,MAAM;AAAA,QACJ,IAAI;AAAA,QACJ,SAAS;AAAA,QACT,IAAI;AAAA,MACN;AAAA,MACA,SAAS;AAAA,QACP,MAAM;AAAA,QACN,OAAO;AAAA,MACT;AAAA,MACA,UAAU;AAAA,QACR,MAAM;AAAA,QACN,OAAO;AAAA,MACT;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,IACA,kBAAkB;AAAA,MAChB;AAAA,QACE,SAAS;AAAA,QACT,UAAU;AAAA,QACV,OAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AACF;AAEA,IAAM,WAAWA;AAAA,EACf;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,MAAM;AAAA,QACJ,IAAI;AAAA,QACJ,SAAS;AAAA,QACT,IAAI;AAAA,MACN;AAAA,MACA,SAAS;AAAA,QACP,MAAM;AAAA,QACN,OAAO;AAAA,MACT;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf,MAAM;AAAA,IACR;AAAA,IACA,kBAAkB;AAAA,MAChB;AAAA,QACE,MAAM;AAAA,QACN,SAAS;AAAA,QACT,OAAO;AAAA,MACT;AAAA,MACA;AAAA,QACE,MAAM;AAAA,QACN,SAAS;AAAA,QACT,OAAO;AAAA,MACT;AAAA,MACA;AAAA,QACE,MAAM;AAAA,QACN,SAAS;AAAA,QACT,OAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AACF;AAEA,IAAM,aAAaA;AAAA,EACjB;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,MAAM;AAAA,QACJ,IAAI;AAAA,QACJ,SAAS;AAAA,QACT,IAAI;AAAA,MACN;AAAA,MACA,UAAU;AAAA,QACR,MAAM;AAAA,QACN,OAAO;AAAA,MACT;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf,MAAM;AAAA,MACN,UAAU;AAAA,IACZ;AAAA,EACF;AACF;AAWO,SAAS,OAAO;AAAA,EACrB;AAAA,EACA,UAAU;AAAA,EACV;AAAA,EACA,OAAO;AAAA,EACP;AAAA,EACA;AACF,GAAgB;AACd,QAAM,CAAC,SAAS,QAAQ,IAAID,UAAS,OAAO;AAE5C,QAAM,WAAWF,aAAY,MAAM;AACjC,aAAS,CAACO,aAAY;AACpB,UAAIH,YAAW,SAAS,GAAG;AACzB,mBAAW,MAAM;AACf,oBAAU,CAACG,QAAO;AAAA,QACpB,CAAC;AAAA,MACH;AACA,aAAO,CAACA;AAAA,IACV,CAAC;AAAA,EACH,GAAG,CAAC,SAAS,CAAC;AAEd,EAAAN,WAAU,MAAM;AACd,aAAS,OAAO;AAAA,EAClB,GAAG,CAAC,OAAO,CAAC;AAEZ,SACE,gBAAAK,OAAC,eAAe,OAAf,EACC;AAAA,oBAAAA;AAAA,MAAC;AAAA;AAAA,QACC,SAAS;AAAA,QACT,UAAU,YAAY;AAAA,QACtB,WAAW,YAAY;AAAA,UACrB;AAAA,UACA;AAAA,UACA;AAAA,QACF,CAAC;AAAA,QACD;AAAA,QAEC;AAAA,oBAAU,gBAAAD,MAAC,UAAK,WAAU,WAAW,kBAAO;AAAA,UAC7C,gBAAAA;AAAA,YAAC;AAAA;AAAA,cACC,eAAY;AAAA,cACZ,WAAW,SAAS;AAAA,gBAClB;AAAA,gBACA;AAAA,cACF,CAAC;AAAA;AAAA,UACH;AAAA;AAAA;AAAA,IACF;AAAA,IACC,SACC,gBAAAA;AAAA,MAAC,eAAe;AAAA,MAAf;AAAA,QACC,WAAW,WAAW;AAAA,UACpB;AAAA,UACA;AAAA,QACF,CAAC;AAAA,QAEA;AAAA;AAAA,IACH;AAAA,KAEJ;AAEJ;;;ACpKA,SAAS,eAAe;AACxB,SAAS,WAAW,mBAAAG,wBAAuB;AAE3C,SAAS,eAAe;AACxB,SAAS,OAAAC,YAAW;AACpB;AAAA,EAGE,WAAAC;AAAA,EACA,UAAAC;AAAA,EACA,YAAAC;AAAA,EACA;AAAA,OAEK;AACP,OAAOC,iBAAgB;AAEvB,SAAS,cAAAC,mBAAkB;AAC3B,SAAS,gBAAgB;AACzB,SAAS,yBAAyB;AAgOtB,SAoCgB,YAAAC,WApChB,OAAAC,OAoCgB,QAAAC,cApChB;AA7NZ,IAAMC,eAAcC;AAAA,EAClB;AAAA,IACE;AAAA,IACA;AAAA,EACF;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,MAAM;AAAA,QACJ,MAAM;AAAA,QACN,OAAO;AAAA,MACT;AAAA,MACA,MAAM;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,MACN;AAAA,MACA,OAAO;AAAA,QACL,MAAM;AAAA,QACN,OAAO;AAAA,MACT;AAAA,MACA,UAAU;AAAA,QACR,MAAM;AAAA,QACN,OAAO;AAAA,MACT;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf,MAAM;AAAA,MACN,MAAM;AAAA,MACN,OAAO;AAAA,MACP,UAAU;AAAA,IACZ;AAAA,IACA,kBAAkB;AAAA,MAChB;AAAA,QACE,MAAM;AAAA,QACN,OAAO;AAAA,QACP,OAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AACF;AAEA,IAAM,cAAcA,KAAI,CAAC,qCAAqC,GAAG;AAAA,EAC/D,UAAU;AAAA,IACR,UAAU;AAAA,MACR,MAAM;AAAA,MACN,OAAO;AAAA,IACT;AAAA,IACA,MAAM;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,IACN;AAAA,IACA,QAAQ;AAAA,MACN,MAAM;AAAA,MACN,OAAO;AAAA,IACT;AAAA,IACA,UAAU;AAAA,MACR,MAAM;AAAA,MACN,OAAO;AAAA,IACT;AAAA,EACF;AAAA,EACA,iBAAiB;AAAA,IACf,UAAU;AAAA,IACV,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,MAAM;AAAA,EACR;AACF,CAAC;AAED,IAAMC,aAAYD,KAAI,CAAC,GAAG;AAAA,EACxB,UAAU;AAAA,IACR,MAAM;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,IACN;AAAA,IACA,UAAU;AAAA,MACR,MAAM;AAAA,MACN,OAAO;AAAA,IACT;AAAA,EACF;AAAA,EACA,iBAAiB;AAAA,IACf,MAAM;AAAA,IACN,UAAU;AAAA,EACZ;AACF,CAAC;AAwCD,SAAS,cACP,OACA,OACA;AACA,MAAIE,YAAW,KAAK,GAAG;AACrB,WAAO,MAAM,KAAK;AAAA,EACpB;AACA,SAAO;AACT;AAEO,SAAS,OAAU;AAAA,EACxB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,OAAO;AAAA,EACP;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,wBAAwB;AAAA,EACxB;AAAA,EACA;AAAA,EACA,iBAAiB;AAAA,EACjB,YAAY;AAAA,EACZ;AACF,GAAmB;AACjB,QAAM,gBAAgB,QAAQ,UAAU,CAAC,MAAM,QAAQ,EAAE,OAAO,KAAK,CAAC;AACtE,QAAM,UAAUC,QAAyB,IAAI;AAC7C,QAAM,CAAC,MAAM,OAAO,IAAIC,UAAS,KAAK;AACtC,QAAM,EAAE,OAAO,IAAI,IAAI,kBAAkB;AAAA,IACvC,aAAa;AAAA,IACb,aAAa;AAAA,IACb,cAAc;AAAA,EAChB,CAAC;AACD,QAAM,aAAa,WAAW,iBAAiB;AAE/C,QAAM,EAAE,aAAa,cAAc,WAAW,IAAI,SAAS;AAAA,IACzD,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,SAAS;AAAA,IACT,SAAS,cAAc,OAAO,QAAQ;AAAA,IACtC,WAAW,cAAc,OAAO,cAAc;AAAA,IAC9C,eAAe;AAAA,IACf,gBAAgB,MAAM,QAAQ,KAAK;AAAA,EACrC,CAAC;AAED,QAAM,UAAUC,SAAQ,MAAM;AAC5B,QAAI,CAAC,kBAAkB,CAAC,WAAW,QAAQ,WAAW,GAAG;AACvD,aAAO;AAAA,IACT;AACA,UAAM,qBAAqB,QAAQ,OAAO,CAAC,KAAU,WAAgB;AACnE;AAAC,OAAC,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,CAAC,GAAG,KAAK,MAAM;AAC1D,aAAO;AAAA,IACT,GAAG,CAAC,CAAC;AACL,WAAO,cAAc,OAAO,CAAC,KAAU,UAAe;AACpD,aAAO;AAAA,QACL,GAAG;AAAA,QACH;AAAA,UACE,OAAO,MAAM;AAAA,UACb,SAAS,mBAAmB,MAAM,GAAG,KAAK,CAAC;AAAA,QAC7C;AAAA,MACF;AAAA,IACF,GAAG,CAAC,CAAC;AAAA,EACP,GAAG,CAAC,gBAAgB,cAAc,OAAO,CAAC;AAE1C,QAAM,iBACJ,gBAAAP;AAAA,IAAC,QAAQ;AAAA,IAAR;AAAA,MACC,KAAK;AAAA,MACL,UAAU,MAAM;AACd,YAAI,QAAQ,SAAS,cAAc;AACjC,gBAAM,eACJ,QAAQ,SAAS,eACjB,QAAQ,SAAS,eACjB,QAAQ,SAAS;AACnB,cAAI,eAAe,uBAAuB;AACxC,wBAAY;AAAA,UACd;AAAA,QACF;AAAA,MACF;AAAA,MACA,SAAS;AAAA,MACT,WAAWQ;AAAA,QACT;AAAA,QACA,UAAU,KAAK;AAAA,QACf;AAAA,MACF;AAAA,MAEC;AAAA,SAAC,WAAW,QAAQ,WAAW,IAC9B,gBAAAT;AAAA,UAAC,QAAQ;AAAA,UAAR;AAAA,YACC,OAAO;AAAA,YACP,UAAQ;AAAA,YACR,WAAW,YAAY,EAAE,UAAU,MAAM,KAAK,CAAC;AAAA,YAE9C,8BACC,gBAAAA,MAAC,UAAK,WAAU,iBAAgB,wBAAU;AAAA;AAAA,QAE9C,IACE;AAAA,QACH,kBAAkB,UACf,QAAQ,IAAI,CAAC,EAAE,OAAO,SAAAU,SAAQ,MAAM;AAClC,cAAI,CAACA,YAAWA,SAAQ,WAAW,GAAG;AACpC,mBAAO;AAAA,UACT;AACA,iBACE,gBAAAT,OAAC,SACC;AAAA,4BAAAD,MAAC,SAAI,WAAU,6CACZ,iBACH;AAAA,YACA,gBAAAA,MAAC,SACE,UAAAU,SAAQ;AAAA,cACP,CAAC,QAAoB,MACnB,gBAAAV;AAAA,gBAAC,QAAQ;AAAA,gBAAR;AAAA,kBAEC,OAAO,OAAO;AAAA,kBACd,UAAU,OAAO;AAAA,kBACjB,WAAW,CAAC,EAAE,OAAO,MACnB,YAAY;AAAA,oBACV,UAAU,OAAO;AAAA,oBACjB;AAAA,oBACA;AAAA,oBACA,UAAU,QAAQ,OAAO,OAAO,KAAK;AAAA,kBACvC,CAAC;AAAA,kBAEH,OAAO,OAAO;AAAA,kBAEb,WAAC,EAAE,UAAU,OAAO,MAAM;AACzB,wBAAI,cAAc;AAChB,6BAAO,aAAa,QAAQ,EAAE,UAAU,OAAO,CAAC;AAAA,oBAClD;AACA,2BACE,gBAAAC,OAAAF,WAAA,EACE;AAAA,sCAAAC;AAAA,wBAAC;AAAA;AAAA,0BACC,WAAWS;AAAA,4BACT,WAAW,gBAAgB;AAAA,4BAC3B;AAAA,0BACF;AAAA,0BAEC,wBAAc,OAAO,OAAO;AAAA,4BAC3B;AAAA,4BACA;AAAA,0BACF,CAAC;AAAA;AAAA,sBACH;AAAA,sBAEC,WACC,gBAAAT;AAAA,wBAAC;AAAA;AAAA,0BACC,WAAWS;AAAA,4BACT;AAAA,0BACF;AAAA,0BAEA,0BAAAT;AAAA,4BAAC;AAAA;AAAA,8BACC,WAAWI,WAAU,EAAE,KAAK,CAAC;AAAA,8BAC7B,eAAY;AAAA;AAAA,0BACd;AAAA;AAAA,sBACF,IACE;AAAA,uBACN;AAAA,kBAEJ;AAAA;AAAA,gBA7CK;AAAA,cA8CP;AAAA,YAEJ,GACF;AAAA,eAzDQ,KA0DV;AAAA,QAEJ,CAAC,IACD,QAAQ,IAAI,CAAC,QAAQ,MACnB,gBAAAJ;AAAA,UAAC,QAAQ;AAAA,UAAR;AAAA,YAEC,OAAO,OAAO;AAAA,YACd,UAAU,OAAO;AAAA,YACjB,WAAW,CAAC,EAAE,OAAO,MACnB,YAAY;AAAA,cACV,UAAU,OAAO;AAAA,cACjB;AAAA,cACA;AAAA,cACA,UAAU,kBAAkB;AAAA,YAC9B,CAAC;AAAA,YAEH,OAAO,OAAO;AAAA,YAEb,WAAC,EAAE,UAAU,OAAO,MAAM;AACzB,kBAAI,cAAc;AAChB,uBAAO,aAAa,QAAQ,EAAE,UAAU,OAAO,CAAC;AAAA,cAClD;AACA,qBACE,gBAAAC,OAAAF,WAAA,EACE;AAAA,gCAAAC;AAAA,kBAAC;AAAA;AAAA,oBACC,WAAWS;AAAA,sBACT,WAAW,gBAAgB;AAAA,sBAC3B;AAAA,oBACF;AAAA,oBAEC,wBAAc,OAAO,OAAO,EAAE,UAAU,OAAO,CAAC;AAAA;AAAA,gBACnD;AAAA,gBAEC,WACC,gBAAAT;AAAA,kBAAC;AAAA;AAAA,oBACC,WAAWS;AAAA,sBACT;AAAA,oBACF;AAAA,oBAEA,0BAAAT;AAAA,sBAAC;AAAA;AAAA,wBACC,WAAWI,WAAU,EAAE,KAAK,CAAC;AAAA,wBAC7B,eAAY;AAAA;AAAA,oBACd;AAAA;AAAA,gBACF,IACE;AAAA,iBACN;AAAA,YAEJ;AAAA;AAAA,UA1CK;AAAA,QA2CP,CACD;AAAA,QACJ,kBACC,gBAAAJ;AAAA,UAAC,QAAQ;AAAA,UAAR;AAAA,YACC,OAAO;AAAA,YACP,UAAQ;AAAA,YACR,WAAW,YAAY,EAAE,UAAU,MAAM,KAAK,CAAC;AAAA,YAE/C,0BAAAC,OAAC,SAAI,WAAU,iDACb;AAAA,8BAAAD,MAACW,aAAA,EAAW,MAAM,IAAI,OAAM,WAAU;AAAA,cACtC,gBAAAX,MAAC,UAAK,WAAU,wBAAuB,6BAAe;AAAA,eACxD;AAAA;AAAA,QACF;AAAA;AAAA;AAAA,EAEJ;AAGF,SACE,gBAAAA,MAAC,WAAQ,OAAc,UAAoB,UACxC,WAAC,EAAE,MAAM,aAAa,MAAM;AAE3B,QAAI,iBAAiB,QAAQ,SAAS;AACpC,cAAQ,YAAY;AAAA,IACtB;AAEA,WACE,gBAAAC,OAAC,SAAI,WAAWQ,IAAW,WAAW,UAAU,GAAG,KACjD;AAAA,sBAAAR;AAAA,QAAC,QAAQ;AAAA,QAAR;AAAA,UACC,IAAG;AAAA,UACH,WAAWQ;AAAA,YACTP,aAAY;AAAA,cACV,MAAM;AAAA,cACN;AAAA,cACA,OAAO,CAAC,CAAC;AAAA,cACT,UAAU,CAAC,CAAC;AAAA,YACd,CAAC;AAAA,YACD;AAAA,UACF;AAAA,UACC,GAAG;AAAA,UAEJ;AAAA,4BAAAF,MAAC,SAAI,WAAU,QACZ,0BAAgB,KACf,cAAc,QAAQ,aAAa,EAAE,OAAO,CAAC,CAAC,IAC5C,cACF,gBAAAA;AAAA,cAAC;AAAA;AAAA,gBACC,WAAWS;AAAA,kBACT;AAAA,kBACA,QAAQ,iBAAiB;AAAA,gBAC3B;AAAA,gBAEC;AAAA;AAAA,YACH,IAEA,IAEJ;AAAA,YACA,gBAAAT;AAAA,cAAC;AAAA;AAAA,gBACC,MAAK;AAAA,gBACL;AAAA,gBACA,WAAWS;AAAA,kBACT;AAAA,gBACF;AAAA,gBAEA,0BAAAT;AAAA,kBAACY;AAAA,kBAAA;AAAA,oBACC,WAAWR,WAAU,EAAE,MAAM,UAAU,CAAC,CAAC,SAAS,CAAC;AAAA;AAAA,gBACrD;AAAA;AAAA,YACF;AAAA;AAAA;AAAA,MACF;AAAA,MAEC,eACG,UACE;AAAA,QACE,gBAAAJ;AAAA,UAAC;AAAA;AAAA,YACE,GAAG;AAAA,YACJ,OAAO;AAAA,cACL,GAAG,WAAW;AAAA,cACd,QAAQ,KAAK,IAAI,IAAI,aAAa,CAAC;AAAA,cACnC,UAAU;AAAA,YACZ;AAAA,YAEC;AAAA;AAAA,QACH;AAAA,MACF,IACA,iBACF;AAAA,MAEH,SACC,gBAAAA,MAAC,OAAE,WAAU,yCACV,iBAAO,SAAS,WAAW,QAAQ,MAAM,SAC5C;AAAA,OAEJ;AAAA,EAEJ,GACF;AAEJ;;;ACtcA;AAAA,EACE,YAAAa;AAAA,EACA,WAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,cAAAC;AAAA,EACA,eAAAC;AAAA,EACA,UAAAC;AAAA,EACA,aAAAC;AAAA,EACA,QAAAC;AAAA,EAGA;AAAA,EACA;AAAA,OACK;;;ACbP,SAAgB,eAAAC,cAAa,YAAAC,WAAU,WAAAC,UAAS,cAAAC,mBAAkB;;;ACAlE,SAAS,cAAc,eAAe,WAAW,aAAa;;;ADE9D,SAAS,MAAMC,mBAAkB;AACjC,SAAS,aAAAC,kBAAiB;AAwBtB,gBAAAC,OAwDE,QAAAC,cAxDF;AAFJ,IAAM,OAAO,MAAM;AACjB,SACE,gBAAAD,MAAC,SAAI,WAAU,qGAAoG;AAEvH;AAEA,IAAO,eAAQE,YAAsC,SAAS,KAC5D;AAAA,EACE,MAAM;AAAA,EACN;AAAA,EACA;AAAA,EACA,QAAQ;AAAA,EACR;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,aAAa,gBAAAF,MAAO,cAAN,EAAkB,WAAU,wBAAuB;AAAA,EACjE,eAAe,gBAAAA,MAAO,eAAN,EAAmB,WAAU,wBAAuB;AACtE,GACA,KACA;AACA,QAAM,CAAC,MAAM,OAAO,IAAIG,UAAS,WAAW;AAE5C,EAAAJ,WAAU,MAAM;AACd,YAAQ,WAAW;AAAA,EACrB,GAAG,CAAC,WAAW,CAAC;AAEhB,QAAM,SAASK;AAAA,IACb,CAAC,QAA0B;AACzB,UAAI,gBAAgB;AACpB,UAAI,aAAa;AACf,oBAAY,CAAC,IAAI;AAAA,MACnB,OAAO;AACL,gBAAQ,CAAC,QAAQ;AACf,iBAAO,CAAC;AAAA,QACV,CAAC;AAAA,MACH;AAAA,IACF;AAAA,IACA,CAAC,MAAM,WAAW;AAAA,EACpB;AACA,QAAM,YAAYC,SAAQ,MAAM;AAC9B,UAAM,QAA2B,CAAC;AAClC,aAAS,IAAI,GAAG,IAAI,OAAO,KAAK;AAC9B,YAAM,KAAK,gBAAAL,MAAC,UAAU,CAAG,CAAE;AAAA,IAC7B;AACA,WAAO;AAAA,EACT,GAAG,CAAC,KAAK,CAAC;AACV,SACE,gBAAAC;AAAA,IAAC;AAAA;AAAA,MACC,WAAWH;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MAEA;AAAA,wBAAAG;AAAA,UAAC;AAAA;AAAA,YACC;AAAA,YACA,WAAWH;AAAA,cACT;AAAA,cACA;AAAA,YACF;AAAA,YACA;AAAA,YAEA;AAAA,8BAAAE,MAAC,SAAI,WAAU,kDACZ,qBACH;AAAA,cACA,gBAAAA,MAAC,SAAI,WAAU,qCACZ,sBAAY,aACX,gBAAAA;AAAA,gBAAC;AAAA;AAAA,kBACC,WAAU;AAAA,kBACV,SAAS;AAAA,kBAER,iBAAO,eAAe;AAAA;AAAA,cACzB,IAEA,gBAAAA,MAAC,UAAK,WAAU,sBAAqB,GAEzC;AAAA,cACC;AAAA,cACD,gBAAAA,MAAC,UAAK,WAAU,uBAAuB,mBAAQ;AAAA;AAAA;AAAA,QACjD;AAAA,QACC;AAAA,QACA,OAAO,WAAW;AAAA,QAClB;AAAA;AAAA;AAAA,EACH;AAEJ,CAAC;;;ADnGD,SAAS,sBAAsB;AAC/B,OAAO,cAAc;AACrB,SAAS,MAAMM,mBAAkB;AACjC,SAAS,gBAAgB;AAyDrB,SAuRI,YAAAC,WAvRJ,OAAAC,aAAA;AA3CG,IAAM,kBAAkB;AACxB,IAAM,WAAW;AAExB,IAAM,cAAcC,eAIjB;AAAA,EACD,YAAY,CAAC;AAAA,EACb,UAAU,CAAC,QAAQ;AACjB,YAAQ,IAAI,GAAG;AAAA,EACjB;AACF,CAAC;AAED,IAAM,gBAAgB,CAAC;AAAA,EACrB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAMM;AACJ,QAAM,EAAE,YAAY,UAAU,QAAQ,IAAIC,YAAW,WAAW;AAChE,MAAI;AACJ,MAAI,OAAO,KAAK,UAAU,YAAY;AACpC,gBAAY,KAAK,MAAM,IAAI;AAAA,EAC7B,OAAO;AACL,gBAAY,KAAK;AAAA,EACnB;AACA,QAAM,cAAcC,aAAY,MAAM;AACpC,aAAS,KAAK,GAAG;AAAA,EACnB,GAAG,CAAC,UAAU,KAAK,GAAG,CAAC;AACvB,QAAM,cAAcA,aAAY,MAAM;AACpC,cAAU,IAAI;AAAA,EAChB,GAAG,CAAC,IAAI,CAAC;AACT,QAAM,SAAS,KAAK,aAAa,UAAa,KAAK,UAAU,WAAW;AAExE,SACE,gBAAAH;AAAA,IAAC;AAAA;AAAA,MACC,kBAAkBF;AAAA,QAChB,WAAW,uBAAuB;AAAA,QAClC,KAAK,QAAQ,kBAAkB,gBAAgB;AAAA,QAC/C;AAAA,MACF;AAAA,MACA,WACE,KAAK,QAAQ,kBACT,iDACA;AAAA,MAEN,YAAY,CAAC;AAAA,MACb,MAAM,WAAW,SAAS,KAAK,GAAG;AAAA,MAClC,OAAO,KAAK;AAAA,MAEZ,SAAS;AAAA,MACT;AAAA,MACA,SAAS;AAAA,MACT;AAAA,MACA;AAAA;AAAA,IALK,KAAK;AAAA,EAMZ;AAEJ;AAEA,IAAM,qBAAqB;AAoB3B,SAAS,oBAAoB,GAAY;AACvC,SAAO,MAAM;AACf;AAEO,IAAM,WAAW,CAAC,UAAiB;AACxC,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA,YAAY;AAAA,IACZ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,YAAY;AAAA,EACd,IAAI;AACJ,QAAM,UAAUM,QAAY,IAAI;AAChC,QAAM,iBAAiBA,QAAgB;AACvC,QAAM,CAAC,YAAY,aAAa,IAAIC,UAAoB,CAAC,CAAC;AAC1D,QAAM,CAAC,aAAa,cAAc,IAAIA,UAAkB;AACxD,QAAM,YAAYD,QAAuB,IAAI;AAE7C,EAAAE,WAAU,MAAM;AACd,QAAI,kBAAkB;AACpB,YAAM,UAAU,CAACC,UAAgC;AAC/C,eAAOA,MAAK,OAAO,CAAC,KAAK,QAAQ;AAC/B,gBAAM,EAAE,UAAU,IAAI,IAAI;AAC1B,cAAI,KAAK,GAAG;AACZ,cAAI,UAAU;AACZ,gBAAI,KAAK,GAAG,QAAQ,QAAQ,CAAC;AAAA,UAC/B;AACA,iBAAO;AAAA,QACT,GAAG,CAAC,CAAc;AAAA,MACpB;AACA,oBAAc,QAAQ,QAAQ,CAAC,CAAC,CAAC;AAAA,IACnC,OAAO;AACL,oBAAc,CAAC,CAAC;AAAA,IAClB;AAAA,EACF,GAAG,CAAC,MAAM,gBAAgB,CAAC;AAE3B,QAAM,cAAcC,SAAQ,MAAM;AAChC,UAAM,gBAAgB,IAAI,IAAI,UAAU;AACxC,UAAM,UAAU,CAACD,OAAkB,QAAQ,MAAkB;AAC3D,aAAOA,MAAK,OAAO,CAAC,KAAK,QAAQ;AAC/B,cAAM,EAAE,SAAS,IAAI;AACrB,YAAI,KAAK,EAAE,GAAG,KAAK,MAAM,CAAC;AAC1B,YAAI,YAAY,cAAc,IAAI,IAAI,GAAG,GAAG;AAC1C,cAAI,KAAK,GAAG,QAAQ,UAAU,QAAQ,CAAC,CAAC;AAAA,QAC1C;AACA,eAAO;AAAA,MACT,GAAG,CAAC,CAAe;AAAA,IACrB;AACA,UAAM,OAAO,QAAQ,QAAQ,CAAC,CAAC;AAE/B,QAAI,eAAe,eAAe,UAAU,GAAG;AAC7C,YAAM,QAAQ,KAAK,UAAU,CAAC,SAAS,KAAK,QAAQ,WAAW;AAC/D,UAAI,QAAQ,IAAI;AACd,aAAK,OAAO,QAAQ,GAAG,GAAG;AAAA,UACxB,KAAK;AAAA,UACL,OAAO;AAAA,UACP,OAAO;AAAA,QACT,CAAC;AAAA,MACH;AAAA,IACF;AACA,WAAO;AAAA,EACT,GAAG,CAAC,MAAM,YAAY,aAAa,UAAU,CAAC;AAC9C,UAAQ,UAAU;AAElB,QAAM,eAAeE;AAAA,IACnB,CAAC,UAAkB;AACjB,UAAI,SAAS,SAAS,GAAG;AACvB,eAAO;AAAA,MACT;AACA,aAAO,UAAU,OAAO,QAAQ,UAAU,KAAK,GAAG,QAAQ,eAAe;AAAA,IAC3E;AAAA,IACA,CAAC,SAAS;AAAA,EACZ;AAEA,QAAM,iBAAiB,eAAe;AAAA,IACpC,OAAO,YAAY;AAAA,IACnB,kBAAkB,MAAM,UAAU;AAAA,IAClC;AAAA,IACA,UAAU;AAAA,EACZ,CAAC;AAED,QAAM,eAAeD,SAAQ,MAAM;AACjC,WAAO;AAAA,MACL;AAAA,MACA,UAAU,CAAC,QAAiB;AAC1B,sBAAc,CAAC,SAAS;AACtB,cAAI,KAAK,SAAS,GAAG,GAAG;AACtB,mBAAO,KAAK,OAAO,CAAC,MAAM,MAAM,GAAG;AAAA,UACrC,OAAO;AACL,mBAAO,CAAC,GAAG,MAAM,GAAG;AAAA,UACtB;AAAA,QACF,CAAC;AAAA,MACH;AAAA,MACA,SAAS,CAACD,UAAmB;AAC3B,YAAI,YAAY,QAAW;AACzB;AAAA,QACF;AACA,YAAIA,MAAK,QAAQ,mBAAmB,UAAUA,MAAK,GAAG,GAAG;AACvD;AAAA,QACF;AACA,uBAAe,CAAC,QAAQ;AACtB,cAAI,QAAQA,MAAK,KAAK;AACpB,2BAAe,UAAU;AACzB,mBAAO;AAAA,UACT;AACA,yBAAe,UAAUA,MAAK;AAC9B,iBAAOA,MAAK;AAAA,QACd,CAAC;AACD,kBAAUA,KAAI;AAAA,MAChB;AAAA,IACF;AAAA,EACF,GAAG,CAAC,YAAY,OAAO,CAAC;AAExB,EAAAD,WAAU,MAAM;AAEd,QAAI,CAAC,SAAS,WAAW,GAAG;AAC1B;AAAA,IACF;AAEA,UAAM,UAAU,CAACC,OAAkB,eAAe,MAAiB;AACjE,aAAOA,MAAK,OAAO,CAAC,KAAK,QAAQ;AAC/B,cAAM,EAAE,UAAU,IAAI,IAAI;AAE1B,YAAI,eAAe,eAAe,YAAY,SAAS,SAAS,GAAG;AACjE,cAAI,KAAK,GAAG;AACZ,cAAI,KAAK,GAAG,QAAQ,UAAU,eAAe,CAAC,CAAC;AAAA,QACjD;AACA,eAAO;AAAA,MACT,GAAG,CAAC,CAAc;AAAA,IACpB;AACA,kBAAc,QAAQ,QAAQ,CAAC,CAAC,CAAC;AAAA,EACnC,GAAG,CAAC,MAAM,WAAW,CAAC;AAEtB,EAAAD,WAAU,MAAM;AACd,mBAAe,MAAS;AAAA,EAC1B,GAAG,CAAC,WAAW,CAAC;AAEhB,EAAAA,WAAU,MAAM;AACd,QAAI,QAAQ,WAAW,aAAa;AAClC,YAAM,QAAQ,QAAQ,QAAQ;AAAA,QAC5B,CAAC,SAAc,KAAK,QAAQ;AAAA,MAC9B;AACA,UAAI,QAAQ,IAAI;AACd,uBAAe,cAAc,OAAO;AAAA,UAClC,OAAO;AAAA,UACP,UAAU;AAAA,QACZ,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACF,GAAG,CAAC,WAAW,CAAC;AAEhB,QAAM,eAAe,eAAe,gBAAgB;AACpD,QAAM,CAAC,WAAW,eAAe,IAAI,cAAc;AACnD,QAAM,WAAWE,SAAQ,MAAM;AAC7B,QAAI,CAAC,gBAAgB;AACnB,aAAO,MAAM;AAAA,MAAC;AAAA,IAChB;AACA,UAAM,aAAa;AAAA,MACjB,MAAM;AACJ,wBAAgB,MAAM;AACpB,oBAAU,SAAS,eAAe,IAAI;AAAA,QACxC,CAAC;AAAA,MACH;AAAA,MACA;AAAA,MACA,EAAE,UAAU,KAAK;AAAA,IACnB;AACA,QAAI,gBAAgB;AACpB,WAAO,CAAC,QAAuC;AAC7C,YAAM,YAAY,IAAI,cAAc;AACpC,UAAI,YAAY,eAAe;AAC7B,mBAAW;AAAA,MACb;AACA,sBAAgB;AAAA,IAClB;AAAA,EACF,GAAG,CAAC,cAAc,CAAC;AAEnB,SACE,gBAAAE,MAAC,YAAY,UAAZ,EAAqB,OAAO,cAC1B,oBACC,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,WAAU;AAAA,MACV,KAAK;AAAA,MACL,OAAO;AAAA,QACL;AAAA,MACF;AAAA,MACA;AAAA,MAEA,0BAAAA;AAAA,QAAC;AAAA;AAAA,UACC,OAAO;AAAA,YACL,QAAQ,GAAG,eAAe,aAAa,CAAC;AAAA,YACxC,OAAO;AAAA,YACP,UAAU;AAAA,UACZ;AAAA,UAEA,0BAAAA;AAAA,YAAC;AAAA;AAAA,cACC,WAAU;AAAA,cACV,OAAO;AAAA,gBACL,WAAW,eAAe,CAAC,GAAG,QAC1B,cAAc,aAAa,CAAC,EAAE,KAAK,QACnC;AAAA,cACN;AAAA,cAEC,yBAAe,gBAAgB,EAAE,IAAI,CAAC,gBACrC,gBAAAA;AAAA,gBAAC;AAAA;AAAA,kBAEC,WACE,QAAQ,QAAQ,YAAY,KAAK,EAAE,QAAQ,cACvC,mBACA;AAAA,kBAGN,0BAAAA;AAAA,oBAAC;AAAA;AAAA,sBACC,MAAM,QAAQ,QAAQ,YAAY,KAAK;AAAA,sBACvC,UACE,gBAAgB,QAAQ,QAAQ,YAAY,KAAK,EAAE;AAAA,sBAErD;AAAA,sBACA;AAAA,sBACA;AAAA;AAAA,kBACF;AAAA;AAAA,gBAfK,YAAY;AAAA,cAgBnB,CACD;AAAA;AAAA,UACH;AAAA;AAAA,MACF;AAAA;AAAA,EACF,IAEA,gBAAAA,MAAAC,WAAA,EACG,sBAAY,IAAI,CAAC,MAAM,UACtB,gBAAAD;AAAA,IAAC;AAAA;AAAA,MAEC,WAAW,KAAK,QAAQ,cAAc,mBAAmB;AAAA,MAEzD,0BAAAA;AAAA,QAAC;AAAA;AAAA,UACC;AAAA,UACA,UAAU,gBAAgB,KAAK;AAAA,UAC/B;AAAA,UACA;AAAA,UACA;AAAA;AAAA,MACF;AAAA;AAAA,IATK,KAAK,OAAO;AAAA,EAUnB,CACD,GACH,GAEJ;AAEJ;AAEA,IAAO,mBAAQE,MAAK,QAAQ;;;AGvX5B,SAAS,yBAAyB;AAClC,OAAO,eAAe;AACtB,SAAS,QAAAC,aAAY;AACrB,SAAS,YAAAC,WAAU,aAAa,cAAc;AAoDjC,gBAAAC,aAAA;AAlDb,IAAI,WAAW,SAAS;AACtB,YAAU,QAAQ,2BAA2B,SAAU,MAAM;AAE3D,QAAI,YAAY,MAAM;AACpB,WAAK,aAAa,UAAU,QAAQ;AAAA,IACtC;AAEA,QACE,CAAC,KAAK,aAAa,QAAQ,MAC1B,KAAK,aAAa,YAAY,KAAK,KAAK,aAAa,MAAM,IAC5D;AACA,WAAK,aAAa,cAAc,KAAK;AAAA,IACvC;AAAA,EACF,CAAC;AACH;AAEA,IAAM,+BAA+B,CAAC,SAAiB;AAErD,QAAM,cAAc;AAEpB,SAAO,KAAK,QAAQ,aAAa,CAAC,OAAO,QAAQC,YAAW;AAE1D,UAAM,SAAS,KAAK,OAAOA,UAAS,CAAC;AACrC,UAAM,QAAQ,KAAK,OAAOA,UAAS,MAAM,MAAM;AAG/C,QAAI,WAAW,OAAO,WAAW,KAAK,MAAM,KAAK,WAAW,KAAK,KAAK,GAAG;AACvE,aAAO;AAAA,IACT;AAEA,WAAO,kEAAkE,KAAK;AAAA,EAChF,CAAC;AACH;AAQO,IAAM,cAAcH,MAAK,SAASI,aAAY;AAAA,EACnD;AAAA,EACA;AAAA,EACA;AACF,GAAqB;AACnB,MAAI,YAAY,IAAI,KAAK,OAAO,IAAI,GAAG;AACrC,WAAO;AAAA,EACT;AACA,MAAI,CAACH,UAAS,IAAI,GAAG;AACnB,QAAI,KAAK,UAAU;AACjB,aAAO,gBAAAC,MAAC,UAAK,WAAuB,eAAK,SAAS,GAAE;AAAA,IACtD;AACA,WAAO;AAAA,EACT;AACA,QAAM,UAAU;AAAA,IACd,qBAAqB,6BAA6B,IAAI,IAAI;AAAA,IAC1D;AAAA,MACE,YAAY;AAAA,QACV,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,KAAK;AAAA,MACP;AAAA,IACF;AAAA,EACF;AACA,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,yBAAyB,EAAE,QAAQ,UAAU,SAAS,OAAO,EAAE;AAAA;AAAA,EACjE;AAEJ,CAAC;;;AC3ED,SAAgB,cAAAG,mBAAkB;;;ACAlC,SAAS,iBAAAC,gBAAe,cAAAC,mBAAkB;AAEnC,IAAM,mBAAmBD,eAAc,EAAE;AACzC,IAAM,sBAAsB,MAAM;AACvC,QAAM,aAAaC,YAAW,gBAAgB;AAC9C,SAAO,QAAQ,UAAU;AAC3B;AAEO,IAAM,kBAAkBD,eAAc,KAAK;AAC3C,IAAM,cAAc,MAAM;AAC/B,SAAOC,YAAW,eAAe;AACnC;;;ADAI,SACE,OAAAC,OADF,QAAAC,cAAA;AAHG,IAAM,QAA8B,CAAC,UAAU;AACpD,QAAM,eAAeC,YAAW,gBAAgB;AAChD,SACE,gBAAAD,OAAC,SAAI,WAAU,iBACb;AAAA,oBAAAD;AAAA,MAAC;AAAA;AAAA,QACC,KAAK,MAAM,OAAO,GAAG,YAAY;AAAA,QACjC,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,KAAI;AAAA,QACJ,WAAU;AAAA;AAAA,IACZ;AAAA,IACA,gBAAAA,MAAC,UAAK,WAAU,yBACb,gBAAM,SAAS,oBAClB;AAAA,KACF;AAEJ;;;AExBA,SAAS,MAAMG,oBAAkB;AAwC7B,SASa,OAAAC,OATb,QAAAC,cAAA;AArCG,IAAK,aAAL,kBAAKC,gBAAL;AACL,EAAAA,YAAA,aAAU;AACV,EAAAA,YAAA,aAAU;AACV,EAAAA,YAAA,WAAQ;AACR,EAAAA,YAAA,cAAW;AACX,EAAAA,YAAA,UAAO;AALG,SAAAA;AAAA,GAAA;AAQZ,IAAM,qBAAgD;AAAA,EACpD,CAAC,uBAAkB,GAAG;AAAA,EACtB,CAAC,uBAAkB,GAAG;AAAA,EACtB,CAAC,mBAAgB,GAAG;AAAA,EACpB,CAAC,yBAAmB,GAAG;AAAA,EACvB,CAAC,iBAAe,GAAG;AACrB;AAWO,SAAS,YAAY;AAAA,EAC1B;AAAA,EACA;AAAA,EACA,cAAc;AAAA,EACd;AAAA,EACA;AAAA,EACA;AACF,GAAU;AACR,QAAM,eACJ,iBAAiB,mBAAmB,QAAQ,iBAAe;AAE7D,SACE,gBAAAD;AAAA,IAAC;AAAA;AAAA,MACC,WAAWF;AAAA,QACT;AAAA,QACA;AAAA,QACA,eAAe,eAAe;AAAA,QAC9B;AAAA,MACF;AAAA,MACA,oBAAkB;AAAA,MAEjB;AAAA,kBAAU,gBAAAC,MAAC,SAAI,WAAU,8CAA6C;AAAA,QACtE;AAAA;AAAA;AAAA,EACH;AAEJ;;;ACrDA,SAAS,eAAe,mBAAmB;AAC3C,SAAS,MAAMG,oBAAkB;AA0BzB,gBAAAC,aAAA;AAjBD,IAAM,0BAA4D,CAAC;AAAA,EACxE;AAAA,EACA;AAAA,EACA;AACF,MAAM;AACJ,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,WAAWD;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,cAAW;AAAA,MAEV,mBACC,gBAAAC,MAAC,eAAY,WAAU,gCAA+B,IAEtD,gBAAAA,MAAC,iBAAc,WAAU,gCAA+B;AAAA;AAAA,EAE5D;AAEJ;AAQO,IAAM,qBAAkD,CAAC;AAAA,EAC9D;AAAA,EACA;AAAA,EACA;AACF,MAAM;AACJ,MAAI,CAAC,QAAQ;AACX,WAAO;AAAA,EACT;AAEA,SACE,gBAAAA,MAAC,SAAI,WAAWD,aAAW,0BAA0B,SAAS,GAC3D,UACH;AAEJ;;;ACvDA;AAAA,EAEE,cAAAE;AAAA,EACA,QAAAC;AAAA,EACA,eAAAC;AAAA,EACA,aAAAC;AAAA,EACA,WAAAC;AAAA,EACA,UAAAC;AAAA,EACA,YAAAC;AAAA,OACK;AACP;AAAA,EAGE;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AAAA,OAGK;AACP,SAAS,kBAAAC,uBAAsB;AAE/B;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,UAAU,WAAAC,gBAAe;;;AC5BlC;AAAA,EAEE,YAAAC;AAAA,EACA,YAAAC;AAAA,EACA,cAAAC;AAAA,EAGA,WAAAC;AAAA,EACA,aAAAC;AAAA,EACA,UAAAC;AAAA,OACK;AACP,SAAS,QAAAC,OAAM,cAAAC,mBAAkB;AACjC;AAAA,EACE,kBAAAC;AAAA,EACA,eAAAC;AAAA,EACA,SAAAC;AAAA,EACA,QAAAC;AAAA,EACA,cAAAC;AAAA,EAEA,UAAU;AAAA,OACL;;;ACpBP,SAAS,YAAAC,WAAU,iBAAAC,gBAAe,cAAAC,mBAAkB;AACpD;AAAA,EACE,eAAAC;AAAA,EACA,YAAAC;AAAA,EACA,mBAAAC;AAAA,EACA,cAAAC;AAAA,EACA,QAAAC;AAAA,EACA,SAAAC;AAAA,EACA,eAAAC;AAAA,OAEK;AACP,SAAS,YAAY;AAErB,SAAS,eAAe;AAExB,SAAS,wBAAwB;AA4CrB,gBAAAC,OAYF,QAAAC,cAZE;AAzCL,IAAM,YAGT;AAAA,EACF,SAAS;AAAA,IACP,QACE;AAAA,IACF,SAAS;AAAA,IACT,UAAU;AAAA,EACZ;AAAA,EACA,QAAQ;AAAA,IACN,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,UAAU;AAAA,EACZ;AACF;AAEO,IAAM,cAAcC,eAAwC,CAAC,CAAC;AAiB9D,IAAM,WAAW,CAAC,EAAE,MAAM,UAAU,eAAe,MAAiB;AACzE,QAAM,EAAE,YAAY,IAAIC,YAAW,WAAW;AAC9C,SACE,gBAAAH,MAAC,KAAK,MAAL,EAAU,UAAU,KAAK,UACvB,WAAC,EAAE,OAAO,MAAM;AACf,QAAI,KAAK,OAAO;AACd,aACE,gBAAAA;AAAA,QAAC;AAAA;AAAA,UACC,OAAO,KAAK;AAAA,UACZ,MAAM,KAAK;AAAA,UAEX,MAAM,KAAK;AAAA,UACX,OAAO,KAAK;AAAA,UACZ;AAAA,UACA;AAAA;AAAA,QAJK,KAAK;AAAA,MAKZ;AAAA,IAEJ;AACA,UAAM,aACJ,gBAAAC;AAAA,MAAC;AAAA;AAAA,QACC,SAAS,CAAC,MAAM,WAAW,KAAK,KAAK,GAAG,IAAI;AAAA,QAC5C,WAAWG;AAAA,UACT,KAAK,WACD,UAAU,KAAK,UAAU,SAAS,EAAE,WACpC,SACE,UAAU,KAAK,UAAU,SAAS,EAAE,SACpC,UAAU,KAAK,UAAU,SAAS,EAAE;AAAA,UAC1C;AAAA,QACF;AAAA,QACA,UAAU,KAAK;AAAA,QAEd;AAAA,eAAK;AAAA,UACN,gBAAAJ;AAAA,YAAC;AAAA;AAAA,cACC,WAAWI;AAAA,gBACT;AAAA,gBACA;AAAA,cACF;AAAA,cAEC,eAAK;AAAA;AAAA,UACR;AAAA,UACC,KAAK,QAAQ,cACZ,gBAAAJ,MAAC,WAAQ,WAAU,gBAAe,IAChC;AAAA;AAAA;AAAA,IACN;AAEF,QAAI,KAAK,YAAY,KAAK,cAAc;AACtC,aACE,gBAAAA;AAAA,QAAC;AAAA;AAAA,UACC,MACE,gBAAAA,MAAC,UAAK,WAAU,qDACb,eAAK,cACR;AAAA,UAEF,UAAS;AAAA,UAER;AAAA;AAAA,MACH;AAAA,IAEJ;AACA,WAAO;AAAA,EACT,GACF;AAEJ;AAEO,IAAM,gBAAgB,CAAC,UAAiB;AAC7C,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,YAAY;AAAA,IACZ,aAAAK;AAAA,EACF,IAAI;AACJ,QAAM,CAAC,MAAM,OAAO,IAAIC,UAAS,KAAK;AACtC,QAAM,EAAE,MAAM,gBAAgB,QAAQ,IAAIC,aAAY;AAAA,IACpD;AAAA,IACA,cAAc;AAAA,IACd;AAAA,IACA,sBAAsBC;AAAA,IACtB,YAAY,CAACC,MAAK,GAAGC,OAAM,CAAC;AAAA,EAC9B,CAAC;AACD,QAAM,EAAE,mBAAmB,iBAAiB,IAAIC,iBAAgB;AAAA,IAC9DC,UAAS,SAAS;AAAA,MAChB,aAAaC,aAAY;AAAA,IAC3B,CAAC;AAAA,EACH,CAAC;AAED,SACE,gBAAAZ;AAAA,IAAC;AAAA;AAAA,MACC,IAAG;AAAA,MACH,WAAWG;AAAA,QACT;AAAA,QACA;AAAA,QACA,WACI,yDACA;AAAA,MACN;AAAA,MAEA;AAAA,wBAAAH;AAAA,UAAC,KAAK;AAAA,UAAL;AAAA,YACC,WAAWG;AAAA,cACT,UAAU,OACN,UAAU,UAAU,SAAS,EAAE,SAC/B,UAAU,UAAU,SAAS,EAAE;AAAA,cACnC;AAAA,cACAC;AAAA,YACF;AAAA,YACA,KAAK,KAAK;AAAA,YACV,SAAS,CAAC,MAAM;AACd,gBAAE,eAAe;AACjB,0BAAY,SAAS,MAAM,MAAM,CAAC;AAAA,YACpC;AAAA,YACC,GAAG;AAAA,YAEH;AAAA,oBAAM;AAAA,cACP,gBAAAL,MAAC,UAAK,WAAU,mCAAmC,iBAAM;AAAA,cACzD,gBAAAA;AAAA,gBAAC;AAAA;AAAA,kBACC,WAAWI;AAAA,oBACT,OAAO,kBAAkB;AAAA,oBACzB;AAAA,oBACA,WAAW,WAAW,QAAQ,IAAI,cAAc;AAAA,kBAClD;AAAA,kBACA,cAAW;AAAA;AAAA,cACb;AAAA;AAAA;AAAA,QACF;AAAA,QACC,QACC,gBAAAJ;AAAA,UAAC,KAAK;AAAA,UAAL;AAAA,YACC,QAAM;AAAA,YACN,KAAK,KAAK;AAAA,YACV,OAAO;AAAA,YACP,WAAU;AAAA,YACT,GAAG;AAAA,YAEH,gBAAM;AAAA,cAAI,CAACc,QAAO,MACjBA,UAASA,OAAM,SAAS,IACtB,gBAAAd;AAAA,gBAAC;AAAA;AAAA,kBAEC,WAAU;AAAA,kBACV,OAAO,EAAE,WAAW,OAAO;AAAA,kBAE1B,UAAAc,OAAM,IAAI,CAAC,SACV,gBAAAd,MAAC,YAAwB,MAAY,YAAtB,KAAK,GAAqC,CAC1D;AAAA;AAAA,gBANI;AAAA,cAOP,IACE;AAAA,YACN;AAAA;AAAA,QACF;AAAA;AAAA;AAAA,EAEJ;AAEJ;;;AC5MA,SAAS,iBAAAe,sBAAqB;AAEvB,IAAM,iBAAiBA,eAAc;AAAA,EAC1C,OAAO;AAAA,EACP,WAAW;AAAA,EACX,UAAU,CAAC,UAAmB;AAAA,EAE9B;AAAA,EACA,cAAc,CAAC,cAAuB;AAAA,EAEtC;AACF,CAAC;;;AFgGiB,SAmCR,YAAAC,WAjCY,OAAAC,OAFJ,QAAAC,cAAA;AA7DX,SAAS,gBAAgB;AAAA,EAC9B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,iBAAiB;AAAA,EACjB;AAAA,EACA;AAAA,EACA,YAAY;AAAA,EACZ,QAAAC,UAAS;AAAA,EACT,SAAS;AAAA,EACT;AAAA,EACA;AAAA,EACA;AACF,GAAU;AACR,QAAM,CAAC,UAAU,WAAW,IAAIC,WAAS,KAAK;AAC9C,QAAM,EAAE,MAAM,IAAIC,YAAW,cAAc;AAC3C,QAAM,EAAE,MAAM,gBAAgB,QAAQ,IAAIC,aAAY;AAAA,IACpD,MAAM;AAAA,IACN,cAAc;AAAA,IACd,YAAY,CAAC,eAAeH,OAAM,GAAGI,MAAK,GAAGC,OAAM,CAAC;AAAA,IACpD;AAAA,IACA,sBAAsBC;AAAA,EACxB,CAAC;AACD,QAAM,YAAYC,SAAQ,MAAM;AAC9B,WAAO;AAAA,MACL;AAAA,IACF;AAAA,EACF,GAAG,CAAC,KAAK,CAAC;AACV,QAAM,oBAAoBC,QAAO,cAAc;AAC/C,oBAAkB,UAAU;AAC5B,EAAAC,WAAU,MAAM;AACd,QAAI,UAAU;AACZ,wBAAkB,UAAU;AAAA,IAC9B;AAAA,EACF,GAAG,CAAC,QAAQ,CAAC;AACb,MAAI,YAA6B;AACjC,MAAI,YAAY,MAAM,SAAS,GAAG;AAChC,gBACE,gBAAAX,MAAC,YAAY,UAAZ,EAAqB,OAAO,EAAE,YAAY,GACzC,0BAAAA,MAAC,SAAI,KAAK,KAAK,aAAa,OAAO,gBACjC,0BAAAA;AAAA,MAACY;AAAA,MAAA;AAAA,QACC,IAAIb;AAAA,QACJ,OAAM;AAAA,QACN,WAAU;AAAA,QACV,SAAQ;AAAA,QACR,OAAM;AAAA,QACN,WAAU;AAAA,QACV,SAAQ;AAAA,QAER,0BAAAE;AAAA,UAACY,MAAK;AAAA,UAAL;AAAA,YACC,WAAU;AAAA,YACV,OAAO;AAAA,YAEN;AAAA;AAAA,cACD,gBAAAb,MAAC,SAAI,WAAW,GAAG,cAAc,aAC9B,gBAAM,IAAI,CAACc,QAAO,MACjB,gBAAAb,OAAC,SAAY,WAAU,QACpB;AAAA,8BAAc,CAAC,IACd,gBAAAD,MAAC,SAAI,WAAU,oEACZ,sBAAY,CAAC,GAChB,IACE;AAAA,gBACHc,OAAM;AAAA,kBAAI,CAAC,SACV,aACE,WAAW,IAAI,IAEf,gBAAAd;AAAA,oBAAC;AAAA;AAAA,sBACC;AAAA,sBACA;AAAA,sBAEA,gBAAgB;AAAA;AAAA,oBADX,KAAK;AAAA,kBAEZ;AAAA,gBAEJ;AAAA,mBAjBQ,CAkBV,CACD,GACH;AAAA,cACC;AAAA;AAAA;AAAA,QACH;AAAA;AAAA,IACF,GACF,GACF;AAAA,EAEJ;AACA,SACE,gBAAAA,MAACa,OAAA,EACE,WAAC,EAAE,KAAK,MAAM;AACb,eAAW,MAAM;AACf,kBAAY,IAAI;AAAA,IAClB,GAAG,CAAC;AACJ,WACE,gBAAAZ,OAAAF,WAAA,EACE;AAAA,sBAAAC;AAAA,QAACa,MAAK;AAAA,QAAL;AAAA,UACC,WAAWE;AAAA,YACT;AAAA,YACA;AAAA,UACF;AAAA,UACA,cAAY;AAAA,UACZ,KAAK,KAAK;AAAA,UACV,IAAI,aAAa,QAAQ;AAAA,UAExB,iBAAO,eAAe,aACnB,WAAW,QAAQ,IACnB;AAAA;AAAA,MACN;AAAA,MACC,SAAS,gBAAAf,MAACgB,iBAAA,EAAgB,qBAAU,IAAoB;AAAA,OAC3D;AAAA,EAEJ,GACF;AAEJ;;;AGvJI,SACE,OAAAC,OADF,QAAAC,cAAA;AATG,IAAM,eAAe,CAAC,UAC3B,gBAAAA;AAAA,EAAC;AAAA;AAAA,IACC,OAAM;AAAA,IACN,QAAO;AAAA,IACP,SAAQ;AAAA,IACR,MAAK;AAAA,IACL,OAAM;AAAA,IACL,GAAG;AAAA,IAEJ;AAAA,sBAAAA,OAAC,OAAE,UAAS,yBACV;AAAA,wBAAAD;AAAA,UAAC;AAAA;AAAA,YACC,GAAE;AAAA,YACF,QAAO;AAAA,YACP,aAAY;AAAA,YACZ,eAAc;AAAA,YACd,gBAAe;AAAA;AAAA,QACjB;AAAA,QACA,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,GAAE;AAAA,YACF,QAAO;AAAA,YACP,aAAY;AAAA,YACZ,eAAc;AAAA,YACd,gBAAe;AAAA;AAAA,QACjB;AAAA,QACA,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,GAAE;AAAA,YACF,QAAO;AAAA,YACP,aAAY;AAAA,YACZ,eAAc;AAAA,YACd,gBAAe;AAAA;AAAA,QACjB;AAAA,QACA,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,GAAE;AAAA,YACF,QAAO;AAAA,YACP,aAAY;AAAA,YACZ,eAAc;AAAA,YACd,gBAAe;AAAA;AAAA,QACjB;AAAA,SACF;AAAA,MACA,gBAAAA,MAAC,UACC,0BAAAA,MAAC,cAAS,IAAG,mBACX,0BAAAA,MAAC,UAAK,OAAM,MAAK,QAAO,MAAK,MAAK,SAAQ,GAC5C,GACF;AAAA;AAAA;AACF;AAGK,IAAM,gBAAgB,CAAC,UAC5B,gBAAAC;AAAA,EAAC;AAAA;AAAA,IACC,OAAM;AAAA,IACN,QAAO;AAAA,IACP,SAAQ;AAAA,IACR,MAAK;AAAA,IACL,OAAM;AAAA,IACL,GAAG;AAAA,IAEJ;AAAA,sBAAAA,OAAC,OAAE,UAAS,yBACV;AAAA,wBAAAD;AAAA,UAAC;AAAA;AAAA,YACC,GAAE;AAAA,YACF,QAAO;AAAA,YACP,aAAY;AAAA,YACZ,eAAc;AAAA,YACd,gBAAe;AAAA;AAAA,QACjB;AAAA,QACA,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,GAAE;AAAA,YACF,QAAO;AAAA,YACP,aAAY;AAAA,YACZ,eAAc;AAAA,YACd,gBAAe;AAAA;AAAA,QACjB;AAAA,QACA,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,GAAE;AAAA,YACF,QAAO;AAAA,YACP,aAAY;AAAA,YACZ,eAAc;AAAA,YACd,gBAAe;AAAA;AAAA,QACjB;AAAA,QACA,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,GAAE;AAAA,YACF,QAAO;AAAA,YACP,aAAY;AAAA,YACZ,eAAc;AAAA,YACd,gBAAe;AAAA;AAAA,QACjB;AAAA,SACF;AAAA,MACA,gBAAAA,MAAC,UACC,0BAAAA,MAAC,cAAS,IAAG,mBACX,0BAAAA,MAAC,UAAK,OAAM,MAAK,QAAO,MAAK,MAAK,SAAQ,GAC5C,GACF;AAAA;AAAA;AACF;AAGK,IAAM,aAAa,CAAC,UACzB,gBAAAC;AAAA,EAAC;AAAA;AAAA,IACC,OAAM;AAAA,IACN,QAAO;AAAA,IACP,SAAQ;AAAA,IACR,MAAK;AAAA,IACL,OAAM;AAAA,IACL,GAAG;AAAA,IAEJ;AAAA,sBAAAD;AAAA,QAAC;AAAA;AAAA,UACC,GAAE;AAAA,UACF,QAAO;AAAA,UACP,aAAY;AAAA,UACZ,eAAc;AAAA,UACd,gBAAe;AAAA;AAAA,MACjB;AAAA,MACA,gBAAAA;AAAA,QAAC;AAAA;AAAA,UACC,GAAE;AAAA,UACF,QAAO;AAAA,UACP,aAAY;AAAA,UACZ,eAAc;AAAA,UACd,gBAAe;AAAA;AAAA,MACjB;AAAA;AAAA;AACF;AAGK,IAAM,aAAa,CAAC,UACzB,gBAAAC;AAAA,EAAC;AAAA;AAAA,IACC,OAAM;AAAA,IACN,QAAO;AAAA,IACP,SAAQ;AAAA,IACR,MAAK;AAAA,IACL,OAAM;AAAA,IACL,GAAG;AAAA,IAEJ;AAAA,sBAAAA,OAAC,OAAE,UAAS,yBACV;AAAA,wBAAAD;AAAA,UAAC;AAAA;AAAA,YACC,GAAE;AAAA,YACF,QAAO;AAAA,YACP,aAAY;AAAA,YACZ,eAAc;AAAA,YACd,gBAAe;AAAA;AAAA,QACjB;AAAA,QACA,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,GAAE;AAAA,YACF,QAAO;AAAA,YACP,aAAY;AAAA,YACZ,eAAc;AAAA,YACd,gBAAe;AAAA;AAAA,QACjB;AAAA,QACA,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,GAAE;AAAA,YACF,QAAO;AAAA,YACP,aAAY;AAAA,YACZ,eAAc;AAAA,YACd,gBAAe;AAAA;AAAA,QACjB;AAAA,QACA,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,GAAE;AAAA,YACF,QAAO;AAAA,YACP,aAAY;AAAA,YACZ,eAAc;AAAA,YACd,gBAAe;AAAA;AAAA,QACjB;AAAA,QACA,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,GAAE;AAAA,YACF,QAAO;AAAA,YACP,aAAY;AAAA,YACZ,eAAc;AAAA,YACd,gBAAe;AAAA;AAAA,QACjB;AAAA,SACF;AAAA,MACA,gBAAAA,MAAC,UACC,0BAAAA,MAAC,cAAS,IAAG,mBACX,0BAAAA,MAAC,UAAK,OAAM,MAAK,QAAO,MAAK,MAAK,SAAQ,GAC5C,GACF;AAAA;AAAA;AACF;;;AJ7IF,SAAS,gBAAgB;AA6NP,SACE,OAAAE,OADF,QAAAC,cAAA;AA3NlB,IAAM,UAAU,CAAC,MAAa,YAAoB,aAAqB;AACrE,QAAM,SAAS,MAAM,KAAK,IAAI;AAC9B,QAAM,CAAC,OAAO,IAAI,OAAO,OAAO,YAAY,CAAC;AAC7C,SAAO,OAAO,UAAU,GAAG,OAAO;AAElC,SAAO;AACT;AAsCA,SAAS,eAAe,GAAqB;AAC3C,IAAE,gBAAgB;AACpB;AAEA,IAAM,eAAeC,YAAkC,SAASC,cAC9D;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,QAAQ,CAAC;AAAA,EACT;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,uBAAuB;AAAA,EACvB,qBAAqB;AAAA,EACrB,WAAW;AACb,GACA,mBACA;AACA,QAAM,kBAAkBC,SAAQ,MAAM;AACpC,QAAI,aAAa;AACjB,UAAM,aAAa,QAAQ,IAAI,CAAC,MAAM;AACpC,YAAM,OAAO,OAAO,OAAO,EAAE,QAAQ,GAAG,CAAC;AACzC,oBAAc,KAAK,QAAQ,KAAK,WAAW;AAC3C,aAAO;AAAA,IACT,CAAC;AACD,QAAI,YAAY,aAAa,UAAU;AACrC,YAAM,QAAQ,WAAW;AACzB,iBAAW,QAAQ,CAAC,MAAM;AACxB,YAAI,EAAE,MAAM;AACV,YAAE,OAAO,KAAK,MAAM,EAAE,OAAO,KAAK;AAAA,QACpC,WAAW,EAAE,SAAS;AACpB,YAAE,OAAO,KAAK,MAAM,EAAE,UAAU,KAAK;AAAA,QACvC;AAAA,MACF,CAAC;AAAA,IACH;AACA,WAAO;AAAA,EACT,GAAG,CAAC,SAAS,SAAS,QAAQ,CAAC;AAE/B,QAAM,CAAC,YAAY,aAAa,IAAIC,WAAqB,MAAM;AAC7D,UAAM,eAAe;AAAA,MACnB,YAAY;AAAA,QACV,WAAW;AAAA,QACX,UAAU;AAAA,MACZ;AAAA,MACA,GAAG;AAAA,IACL;AACA,WAAO;AAAA,EACT,CAAC;AAED,QAAM,QAAQ,cAAc;AAAA,IAC1B;AAAA,IACA,SAAS;AAAA,IACT;AAAA,IACA,iBAAiB,gBAAgB;AAAA,IACjC,mBAAmB,YAAY,kBAAkB,IAAI;AAAA,IACrD,OAAO;AAAA,IACP,eAAe;AAAA,IACf;AAAA,EACF,CAAC;AAED,EAAAC,WAAU,MAAM;AACd,QAAI,SAAS,OAAO,KAAK,KAAK,EAAE,SAAS,GAAG;AAC1C,oBAAc,CAAC,SAAS;AACtB,cAAM,WAAuB;AAAA,UAC3B,GAAG;AAAA,UACH,GAAG;AAAA,UACH,YAAY,KAAK,cACf,MAAM,cAAc,EAAE,WAAW,GAAG,UAAU,GAAG;AAAA,QACrD;AACA,eAAOC,SAAQ,MAAM,QAAQ,IAAI,OAAO;AAAA,MAC1C,CAAC;AAAA,IACH;AAAA,EACF,GAAG,CAAC,KAAK,CAAC;AAEV,QAAM,sBAAsBH,SAAQ,MAAM;AACxC,QAAI,CAAC,cAAe,QAAO;AAC3B,WAAO,SAAS,eAAe,KAAK,CAAC,CAAC;AAAA,EACxC,GAAG,CAAC,aAAa,CAAC;AAElB,EAAAE,WAAU,MAAM;AACd,0BAAsB,UAAU;AAAA,EAClC,GAAG,CAAC,qBAAqB,UAAU,CAAC;AAEpC,QAAM,2BAA2BF,SAAQ,MAAM;AAC7C,WAAO,SAAS,CAAC,wBAAgD;AAC/D,UAAI,qBAAqB;AACvB,cAAM,EAAE,cAAc,WAAW,aAAa,IAAI;AAClD,YACE,eAAe,YAAY,eAAe,OAC1C,CAAC,cACD,SACA;AACA,wBAAc;AAAA,QAChB;AAAA,MACF;AAAA,IACF,GAAG,GAAG;AAAA,EACR,GAAG,CAAC,aAAa,YAAY,OAAO,CAAC;AAErC,QAAM,2BAA2BI,QAA8B,IAAI;AAEnE,EAAAF,WAAU,MAAM;AACd,QAAI,mBAAmB;AACrB,UAAI,OAAO,sBAAsB,YAAY;AAC3C,0BAAkB,yBAAyB,OAAO;AAAA,MACpD,OAAO;AACL,0BAAkB,UAAU,yBAAyB;AAAA,MACvD;AAAA,IACF;AAAA,EACF,GAAG,CAAC,iBAAiB,CAAC;AAEtB,QAAM,iBAAiBG,gBAAe;AAAA,IACpC,OAAO,uBAAuB,MAAM,YAAY,EAAE,KAAK,SAAS;AAAA,IAChE,kBAAkB,MAAM,yBAAyB;AAAA,IACjD,cAAcC,aAAY,MAAM,oBAAoB,CAAC,kBAAkB,CAAC;AAAA,IACxE;AAAA,IACA,SAAS;AAAA,EACX,CAAC;AAED,QAAM,cAAc,uBAChB,eAAe,gBAAgB,IAC/B,CAAC;AAEL,QAAM,aACJ,wBAAwB,YAAY,SAAS,IAAI,YAAY,CAAC,EAAE,QAAQ;AAC1E,QAAM,gBACJ,wBAAwB,YAAY,SAAS,IACzC,eAAe,aAAa,KAC3B,YAAY,YAAY,SAAS,CAAC,EAAE,QACnC,YAAY,YAAY,SAAS,CAAC,EAAE,QACtC;AAEN,SACE,gBAAAV;AAAA,IAAC;AAAA;AAAA,MACC,WAAU;AAAA,MACV,OAAO,SAAS,EAAE,OAAO,IAAI;AAAA,MAC7B,KAAK;AAAA,MACL,UAAU,CAAC,MAAM,yBAAyB,EAAE,MAAwB;AAAA,MAEpE,0BAAAC;AAAA,QAAC;AAAA;AAAA,UACC,WAAU;AAAA,UACT,GAAG;AAAA,YACF,OAAO;AAAA,cACL,OAAO,MAAM,mBAAmB;AAAA,YAClC;AAAA,UACF;AAAA,UAEA;AAAA,4BAAAD,MAAC,WAAM,WAAU,uDACd,gBAAM,gBAAgB,EAAE,IAAI,CAAC,gBAC5B,gBAAAA;AAAA,cAAC;AAAA;AAAA,gBAEC,WAAU;AAAA,gBAET,sBAAY,QAAQ,IAAI,CAAC,QAAQ,MAChC,gBAAAC;AAAA,kBAAC;AAAA;AAAA,oBAEC,SAAS,OAAO;AAAA,oBAChB,OAAO;AAAA,sBACL,OAAO,OAAO,QAAQ;AAAA,oBACxB;AAAA,oBACA,WAAU;AAAA,oBACV,SAAS,OAAO,OAAO,wBAAwB;AAAA,oBAE/C;AAAA,sCAAAA,OAAC,UAAK,WAAU,sCACd;AAAA,wCAAAD,MAAC,UAAK,WAAU,mBACb,iBAAO,gBACJ,OACA;AAAA,0BACE,OAAO,OAAO,UAAU;AAAA,0BACxB,OAAO,WAAW;AAAA,wBACpB,GACN;AAAA,wBACC,OAAO,OAAO,WAAW,KAAK,YAC7B,gBAAAA;AAAA,0BAAC;AAAA;AAAA,4BACC,WAAWW;AAAA,8BACT,OAAO,OAAO,YAAY,IACtB,yDACA;AAAA,8BACJ;AAAA,8BACA;AAAA,8BACA;AAAA,4BACF;AAAA,4BAEC,iBAAO,OAAO,YAAY,IACzB,OAAO,OAAO,YAAY,KAAK,SAC7B,gBAAAX,MAAC,2BAAwB,WAAU,WAAU,IAE7C,gBAAAA,MAAC,0BAAuB,WAAU,WAAU,IAG9C;AAAA;AAAA,wBAEJ,IACE;AAAA,yBACN;AAAA,sBACC,oBAAoB,SACnB,gBAAAA;AAAA,wBAAC;AAAA;AAAA,0BACC,WAAU;AAAA,0BACV,SAAS;AAAA,0BAET,0BAAAA;AAAA,4BAAC;AAAA;AAAA,8BACC,iBAAgB;AAAA,8BAChB,UAAU,CAAC,eAAuB;AAChC,sCAAM,WAAW,YAAY,QAAQ;AAAA,kCACnC,CAAC,SAAU,MAAc;AAAA,gCAC3B;AACA,wCAAQ,YAAY;AAAA,kCAClB,KAAK;AACH,0CAAM;AAAA,sCACJ,QAAQ,UAAU,GAAG,IAAI,CAAC;AAAA,oCAC5B;AACA;AAAA,kCACF,KAAK;AACH,0CAAM;AAAA,sCACJ,QAAQ,UAAU,GAAG,IAAI,CAAC;AAAA,oCAC5B;AACA;AAAA,kCACF,KAAK;AACH,qDAAiB,OAAO,OAAO,SAAS;AACxC;AAAA,kCACF;AACE,4CAAQ,IAAI,YAAY,gBAAgB;AAAA,gCAC5C;AAAA,8BACF;AAAA,8BACA,YAAY,gBAAAA,MAAC,iBAAc,WAAU,aAAY;AAAA,8BACjD,OAAO;AAAA,gCACL;AAAA,kCACE;AAAA,oCACE,KAAK;AAAA,oCACL,OAAO;AAAA,oCACP,MAAM,gBAAAA,MAAC,gBAAa,WAAU,QAAO;AAAA,oCACrC,UAAU,MAAM;AAAA,kCAClB;AAAA,kCACA;AAAA,oCACE,KAAK;AAAA,oCACL,OAAO;AAAA,oCACP,MAAM,gBAAAA,MAAC,iBAAc,WAAU,QAAO;AAAA,oCACtC,UAAU,MAAM,YAAY,QAAQ,SAAS;AAAA,kCAC/C;AAAA,gCACF;AAAA,gCACA,GAAI,iBACA;AAAA,kCACE;AAAA,oCACE;AAAA,sCACE,KAAK;AAAA,sCACL,OAAO;AAAA,sCACP,MAAM,gBAAAA,MAAC,cAAW,WAAU,QAAO;AAAA,oCACrC;AAAA,kCACF;AAAA,gCACF,IACA,CAAC;AAAA,gCACL,GAAI,CAAC,iBACD,CAAC,IACD;AAAA,kCACE;AAAA,oCACE;AAAA,sCACE,KAAK;AAAA,sCACL,OAAO;AAAA,sCACP,MAAM,gBAAAA,MAAC,cAAW,WAAU,QAAO;AAAA,sCACnC,QAAQ;AAAA,oCACV;AAAA,kCACF;AAAA,gCACF;AAAA,8BACN;AAAA;AAAA,0BACF;AAAA;AAAA,sBACF;AAAA,sBAED,OAAO,OAAO,aAAa,IAC1B,gBAAAA;AAAA,wBAAC;AAAA;AAAA,0BACC,aAAa,OAAO,iBAAiB;AAAA,0BACrC,cAAc,OAAO,iBAAiB;AAAA,0BACtC,WAAWW;AAAA,4BACT;AAAA;AAAA,0BAEF;AAAA,0BACA,OAAO;AAAA,4BACL,WACE,qBAAqB,WACrB,OAAO,OAAO,cAAc,IACxB,cAAc,MAAM,SAAS,EAAE,iBAAiB,WAAW,QAC3D;AAAA,0BACR;AAAA,0BACA,SAAS,CAAC,MAAM,EAAE,gBAAgB;AAAA,0BACnC;AAAA;AAAA,sBAED,IACE;AAAA;AAAA;AAAA,kBAnIC,OAAO;AAAA,gBAoId,CACD;AAAA;AAAA,cA1II,YAAY;AAAA,YA2InB,CACD,GACH;AAAA,YACA,gBAAAV,OAAC,WACE;AAAA,sCAAwB,aAAa,KACpC,gBAAAD,MAAC,QACC,0BAAAA,MAAC,QAAG,OAAO,EAAE,QAAQ,GAAG,UAAU,KAAK,GAAG,GAC5C;AAAA,cAGD,uBACG,YAAY,IAAI,CAAC,eAAe;AAC9B,sBAAM,MAAM,MAAM,YAAY,EAAE,KAAK,WAAW,KAAK;AACrD,uBACE,gBAAAA;AAAA,kBAAC;AAAA;AAAA,oBAEC,cAAY,WAAW;AAAA,oBACvB,WAAWW;AAAA,sBACT;AAAA,sBACA,UAAU,mBAAmB;AAAA,sBAC7B,iBAAiB,eAAe,GAAG,IAAI;AAAA,oBACzC;AAAA,oBAEC,cAAI,gBAAgB,EAAE,IAAI,CAAC,SAC1B,gBAAAX;AAAA,sBAAC;AAAA;AAAA,wBAEE,GAAG;AAAA,0BACF,OAAO;AAAA,4BACL,OAAO,KAAK,OAAO,QAAQ;AAAA,0BAC7B;AAAA,wBACF;AAAA,wBACA,SAAS,MAAM,WAAW,QAAQ,KAAK,IAAI;AAAA,wBAC3C,WAAU;AAAA,wBAET;AAAA,0BACC,KAAK,OAAO,UAAU;AAAA,0BACtB,KAAK,WAAW;AAAA,wBAClB;AAAA;AAAA,sBAZK,KAAK;AAAA,oBAaZ,CACD;AAAA;AAAA,kBAxBI,IAAI;AAAA,gBAyBX;AAAA,cAEJ,CAAC,IACD,MAAM,YAAY,EAAE,KAAK,IAAI,CAAC,QAC5B,gBAAAA;AAAA,gBAAC;AAAA;AAAA,kBAEC,WAAWW;AAAA,oBACT;AAAA,oBACA,UAAU,mBAAmB;AAAA,oBAC7B,iBAAiB,eAAe,GAAG,IAAI;AAAA,kBACzC;AAAA,kBAEC,cAAI,gBAAgB,EAAE,IAAI,CAAC,SAC1B,gBAAAX;AAAA,oBAAC;AAAA;AAAA,sBAEE,GAAG;AAAA,wBACF,OAAO;AAAA,0BACL,OAAO,KAAK,OAAO,QAAQ;AAAA,wBAC7B;AAAA,sBACF;AAAA,sBACA,SAAS,MAAM,WAAW,QAAQ,KAAK,IAAI;AAAA,sBAC3C,WAAU;AAAA,sBAET;AAAA,wBACC,KAAK,OAAO,UAAU;AAAA,wBACtB,KAAK,WAAW;AAAA,sBAClB;AAAA;AAAA,oBAZK,KAAK;AAAA,kBAaZ,CACD;AAAA;AAAA,gBAvBI,IAAI;AAAA,cAwBX,CACD;AAAA,cAEJ,wBAAwB,gBAAgB,KACvC,gBAAAA,MAAC,QACC,0BAAAA,MAAC,QAAG,OAAO,EAAE,QAAQ,GAAG,aAAa,KAAK,GAAG,GAC/C;AAAA,cAGD,eACC,gBAAAA,MAAC,QACC,0BAAAA;AAAA,gBAAC;AAAA;AAAA,kBACC,SAAS,MAAM,gBAAgB,EAAE,CAAC,EAAE,QAAQ;AAAA,kBAC5C,WAAU;AAAA,kBACV,SAAS,MAAM;AACb,wBAAI,WAAY;AAChB,kCAAc;AAAA,kBAChB;AAAA,kBAEC,wBAAc,UACb,gBAAAC,OAAC,UAAK,WAAU,kCACd;AAAA,oCAAAD;AAAA,sBAAC;AAAA;AAAA,wBACC,WAAWW;AAAA,0BACT;AAAA,0BACA,aAAa,iBAAiB;AAAA,wBAChC;AAAA;AAAA,oBACF;AAAA,oBACA,gBAAAX,MAAC,UAAK,wBAAU;AAAA,qBAClB,IAEA;AAAA;AAAA,cAEJ,GACF;AAAA,eAEJ;AAAA;AAAA;AAAA,MACF;AAAA;AAAA,EACF;AAEJ,CAAC;AAEM,IAAM,cAAcY,MAAK,YAAY;;;AKze5C,OAAO,gBAAgB;AAChB,IAAM,KAAK,WAAW,MAAM;AAAA,EACjC,gBAAgB;AAClB,CAAC;AAEM,SAAS,SAAS,MAAc,KAAa;AAClD,MAAI;AACF,WAAO,OAAO,GAAG,GAAG,EAAE,SAAS,CAAC;AAAA,EAClC,QAAQ;AACN,WAAO,OAAO,CAAC;AAAA,EACjB;AACF;AAEO,SAAS,qBAAqB,KAAuB,SAAkB,UAAoB;AAChG,MAAI,QAAQ,UAAa,YAAY,QAAW;AAC9C,WAAO;AAAA,EACT;AACA,QAAM,SAAS,OAAO,QAAQ,WAAW,MAAM,SAAS,GAAG;AAC3D,QAAM,IAAI,GAAG,OAAO,SAAS,CAAC,EAAE,IAAI,UAAU,IAAI,GAAG,EAAE,EAAE,IAAI,OAAO,IAAI,CAAC;AACzE,MAAI,UAAU;AACZ,WAAO,EAAE,SAAS;AAAA,EACpB;AACA,SAAO,EAAE,SAAS;AACpB;;;ACrBA,SAAS,YAAAC,YAAU,aAAAC,kBAAiB;AAO7B,SAAS,UAAU,aAAqB,KAAK,eAAwB,OAAgB;AAC1F,QAAM,CAAC,UAAU,WAAW,IAAID,WAAkB,YAAY;AAE9D,EAAAC,WAAU,MAAM;AAEd,UAAM,iBAAiB,MAAe;AACpC,UAAI,OAAO,WAAW,YAAa,QAAO;AAE1C,YAAM,YAAY,OAAO,UAAU,UAAU,YAAY;AACzD,YAAM,iBAAiB;AAAA,QACrB;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAEA,aAAO,eAAe,KAAK,CAAC,YAAY,UAAU,SAAS,OAAO,CAAC;AAAA,IACrE;AAGA,UAAM,mBAAmB,MAAe;AACtC,UAAI,OAAO,WAAW,YAAa,QAAO;AAC1C,aAAO,OAAO,aAAa;AAAA,IAC7B;AAGA,UAAM,oBAAoB,MAAe;AACvC,UAAI,OAAO,WAAW,YAAa,QAAO;AAC1C,aAAO,kBAAkB,UAAU,UAAU,iBAAiB;AAAA,IAChE;AAGA,UAAM,eAAe,MAAe;AAClC,YAAM,oBAAoB,eAAe;AACzC,YAAM,gBAAgB,iBAAiB;AACvC,YAAM,kBAAkB,kBAAkB;AAG1C,UAAI,kBAAmB,QAAO;AAG9B,UAAI,iBAAiB,gBAAiB,QAAO;AAG7C,aAAO;AAAA,IACT;AAGA,gBAAY,aAAa,CAAC;AAG1B,UAAM,eAAe,MAAM;AACzB,kBAAY,aAAa,CAAC;AAAA,IAC5B;AAEA,WAAO,iBAAiB,UAAU,YAAY;AAG9C,WAAO,MAAM;AACX,aAAO,oBAAoB,UAAU,YAAY;AAAA,IACnD;AAAA,EACF,GAAG,CAAC,UAAU,CAAC;AAEf,SAAO;AACT;","names":["classNames","jsx","jsxs","classNames","jsx","jsxs","React","useRef","useState","useEffect","classNames","jsx","jsxs","jsx","jsxs","iconEl","Fragment","memo","classNames","jsx","jsxs","Fragment","memo","useState","useCallback","classNames","jsx","jsxs","classNames","useCallback","useState","useEffect","jsx","jsxs","classNames","cva","cx","forwardRef","jsx","jsxs","Input","cx","jsx","jsxs","cx","value","useCallback","useEffect","useState","cva","isFunction","jsx","jsxs","enabled","ChevronDownIcon","cva","useMemo","useRef","useState","isFunction","ClipLoader","Fragment","jsx","jsxs","buttonClass","cva","iconClass","isFunction","useRef","useState","useMemo","cx","options","ClipLoader","ChevronDownIcon","useState","useMemo","createContext","useContext","useCallback","useRef","useEffect","memo","useCallback","useState","useMemo","forwardRef","classNames","useEffect","jsx","jsxs","forwardRef","useState","useCallback","useMemo","classNames","Fragment","jsx","createContext","useContext","useCallback","useRef","useState","useEffect","data","useMemo","useCallback","jsx","Fragment","memo","memo","isString","jsx","offset","LinkifyText","useContext","createContext","useContext","jsx","jsxs","useContext","classNames","jsx","jsxs","StatusRole","classNames","jsx","forwardRef","memo","useCallback","useEffect","useMemo","useRef","useState","useVirtualizer","isEqual","Fragment","useState","useContext","useMemo","useEffect","useRef","Menu","Transition","FloatingPortal","useFloating","shift","flip","autoUpdate","useState","createContext","useContext","useFloating","useHover","useInteractions","autoUpdate","flip","shift","safePolygon","jsx","jsxs","createContext","useContext","cx","buttonClass","useState","useFloating","autoUpdate","flip","shift","useInteractions","useHover","safePolygon","items","createContext","Fragment","jsx","jsxs","offset","useState","useContext","useFloating","flip","shift","autoUpdate","useMemo","useRef","useEffect","Transition","Menu","items","cx","FloatingPortal","jsx","jsxs","jsx","jsxs","forwardRef","_ResizeTable","useMemo","useState","useEffect","isEqual","useRef","useVirtualizer","useCallback","cx","memo","useState","useEffect"]}
|