{"version":3,"file":"alert.cjs","sources":["../src/BaseAlertBox.tsx","../src/BannerAlertBox.tsx","../src/ToastAlertBox.tsx","../src/SmallAlertBox.tsx","../src/ToastProvider.tsx","../src/CopyableText.tsx","../src/ExpandableAlertBox.tsx","../src/index.tsx"],"sourcesContent":["import React from 'react';\nimport classNames from 'classnames';\nimport {\n  CloseIcon,\n  ValidationErrorIcon,\n  ValidationExclamationIcon,\n  ValidationInfoIcon,\n  ValidationSuccessIcon,\n} from '@entur/icons';\nimport { IconButton } from '@entur/button';\nimport { Tooltip } from '@entur/tooltip';\nimport { VariantType } from '@entur/utils';\n\nimport './BaseAlertBox.scss';\n\nconst iconsMap = {\n  success: {\n    icon: ValidationSuccessIcon,\n    description: 'Suksessmelding',\n  },\n  information: { icon: ValidationInfoIcon, description: 'Infomelding' },\n  warning: {\n    icon: ValidationExclamationIcon,\n    description: 'Varselmelding',\n  },\n  negative: { icon: ValidationErrorIcon, description: 'Feilmelding' },\n  //deprecated\n  info: { icon: ValidationInfoIcon, description: 'Infomelding' },\n  error: { icon: ValidationErrorIcon, description: 'Feilmelding' },\n};\n\n/** @deprecated use variant=\"information\" instead */\nconst info = 'info';\n/** @deprecated use variant=\"negative\" instead */\nconst error = 'error';\n\ntype BaseAlertBoxProps = {\n  /** Innholdet i alert-boksen */\n  children?: React.ReactNode;\n  /** Ekstra klassenavn */\n  className?: string;\n  /** Skjermleser-label for lukkeknappen, om den vises\n   * @default \"Lukk\"\n   */\n  closeButtonLabel?: string;\n  /** Callback som kalles når man lukker boksen\n   * @default () => {}\n   */\n  onClose?: () => void;\n  /** Om denne er true, vil boksen få en lukkeknapp i høyre hjørne\n   * @default false\n   */\n  closable?: boolean;\n  /** Tittel på boksen - oppsummer virkning */\n  title?: React.ReactNode;\n  /** Farge og uttrykk på alert-boksen */\n  variant: VariantType | typeof info | typeof error;\n  /** Typen boks (internt bruk) */\n  size: 'banner' | 'toast' | 'small';\n  [key: string]: any;\n};\n\nexport const BaseAlertBox = ({\n  children,\n  className,\n  closable = false,\n  closeButtonLabel = 'Lukk',\n  variant,\n  onClose = () => ({}),\n  size,\n  title,\n  toastIsBeingRemoved,\n  ...rest\n}: BaseAlertBoxProps) => {\n  const [isClosed, setClosed] = React.useState(false);\n  if (isClosed) {\n    return null;\n  }\n  const handleClose = () => {\n    setClosed(true);\n    onClose();\n  };\n  const Icon = iconsMap[variant].icon;\n  return (\n    <div\n      className={classNames(\n        'eds-alert-box',\n        `eds-alert-box--${size}`,\n        `eds-alert-box--${variant}`,\n        {\n          'eds-alert-box--toast--exit-animation': toastIsBeingRemoved,\n        },\n        className,\n      )}\n      {...rest}\n    >\n      <Icon\n        role=\"img\"\n        className=\"eds-alert-box__icon\"\n        aria-label={iconsMap[variant].description}\n      />\n      <div\n        className={classNames('eds-alert-box__content', {\n          'eds-alert-box__content--no-children': !children,\n        })}\n      >\n        {title && <div className=\"eds-alert-box__title\">{title}</div>}\n        {children && children}\n      </div>\n      {closable && (\n        <Tooltip\n          className=\"eds-alert-box__tooltip\"\n          aria-hidden\n          placement=\"bottom\"\n          content=\"Lukk\"\n        >\n          <IconButton\n            className=\"eds-alert-box__close-button\"\n            aria-label={closeButtonLabel}\n            onClick={handleClose}\n            type=\"button\"\n          >\n            <CloseIcon />\n          </IconButton>\n        </Tooltip>\n      )}\n    </div>\n  );\n};\n","import React from 'react';\nimport { BaseAlertBox } from './BaseAlertBox';\n\nimport { VariantType } from '@entur/utils';\n\n/** @deprecated use variant=\"information\" instead */\nconst info = 'info';\n/** @deprecated use variant=\"negative\" instead */\nconst error = 'error';\n\nexport type BannerAlertBoxProps = {\n  /** Innholdet i alert-boksen */\n  children: React.ReactNode;\n  /** Ekstra klassenavn */\n  className?: string;\n  /** Skjermleser-label for lukkeknappen, om den vises */\n  closeButtonLabel?: string;\n  /** Callback som kalles når man lukker boksen */\n  onClose?: () => void;\n  /** Om denne er true, vil boksen få en lukkeknapp i høyre hjørne\n   * @default false\n   */\n  closable?: boolean;\n  /** Tittel på boksen - oppsummer virkning */\n  title?: string;\n  /** Farge og uttrykk på alert-boksen */\n  variant: VariantType | typeof info | typeof error;\n  [key: string]: any;\n};\n\nexport const BannerAlertBox = (props: BannerAlertBoxProps) => (\n  <BaseAlertBox {...props} size=\"banner\" />\n);\n","import React from 'react';\nimport { BaseAlertBox } from './BaseAlertBox';\nimport './ToastAlertBox.scss';\n\n/** @deprecated use variant=\"information\" instead */\nconst info = 'info';\n\nexport type ToastAlertBoxProps = {\n  /** Innholdet i toasten */\n  children?: React.ReactNode;\n  /** Ekstra klassenavn */\n  className?: string;\n  /** Skjermleser-label for lukkeknappen, om den vises */\n  closeButtonLabel?: string;\n  /** Callback som kalles når man lukker boksen */\n  onClose?: () => void;\n  /** Om denne er true, vil boksen få en lukkeknapp i høyre hjørne */\n  closable?: boolean;\n  /** Tittel på boksen - oppsummer virkning */\n  title?: string;\n  /** Farge og uttrykk på toasten */\n  variant: 'success' | 'information' | typeof info;\n  [key: string]: any;\n};\n\nexport const ToastAlertBox = (props: ToastAlertBoxProps) => (\n  <BaseAlertBox {...props} size=\"toast\" role=\"status\" />\n);\n","import React from 'react';\nimport classNames from 'classnames';\nimport { BaseAlertBox } from './BaseAlertBox';\n\nimport { VariantType } from '@entur/utils';\n\n/** @deprecated use variant=\"information\" instead */\nconst info = 'info';\n/** @deprecated use variant=\"negative\" instead */\nconst error = 'error';\n\nexport type SmallAlertBoxProps = {\n  /** Innholdet i alert-boksen */\n  children: React.ReactNode;\n  /** Ekstra klassenavn */\n  className?: string;\n  /** Skjermleser-label for lukkeknappen, om den vises */\n  closeButtonLabel?: string;\n  /** Om denne er true, vil boksen få en lukkeknapp i høyre hjørne\n   * @default false\n   */\n  closable?: boolean;\n  /** Callback som kalles når man lukker boksen */\n  onClose?: () => void;\n  /** Tittel på boksen - oppsummer virkning */\n  title?: string;\n  /** Bredden på boksen - fullbredde eller tilpasset innholdet */\n  width?: 'fluid' | 'fit-content';\n  /** Farge og uttrykk på alert-boksen*/\n  variant: VariantType | typeof info | typeof error;\n  [key: string]: any;\n};\n\nexport const SmallAlertBox = ({\n  className,\n  width,\n  onClose,\n  closable = false,\n  closeButtonLabel,\n  ...rest\n}: SmallAlertBoxProps) => (\n  <BaseAlertBox\n    className={classNames(className, {\n      'eds-alert-box--fit-content': width === 'fit-content',\n    })}\n    {...rest}\n    onClose={onClose}\n    closable={closable}\n    closeButtonLabel={closeButtonLabel}\n    size=\"small\"\n  />\n);\n","import React from 'react';\nimport { ToastAlertBox } from './ToastAlertBox';\nimport classNames from 'classnames';\n\ntype ToastId = string;\n\n/** @deprecated use variant=\"information\" instead */\nconst info = 'info';\n\nexport type ToastVariants = 'success' | 'information' | typeof info;\n\ntype ToastType = {\n  title?: string;\n  content: React.ReactNode;\n  id: ToastId;\n  variant: ToastVariants;\n  isBeingRemoved: boolean;\n};\n\ntype ToastContextType = {\n  addToast: (payload: AddToastPayload | string) => void;\n  removeToast: (id: ToastId) => void;\n  toasts: ToastType[];\n};\n\nexport type AddToastPayload = {\n  title?: string;\n  content: React.ReactNode;\n  variant?: ToastVariants;\n};\n\ntype ToastAction =\n  | { type: 'ADD_TOAST'; payload: ToastType }\n  | { type: 'REMOVE_TOAST'; payload: ToastId }\n  | { type: 'PLAY_EXIT_ANIMATION'; payload: ToastId };\n\nconst EXIT_ANIMATION_TIME = 400;\n\nconst ToastContext = React.createContext<ToastContextType | null>(null);\n\nconst toastReducer = (\n  prevToasts: ToastType[],\n  action: ToastAction,\n): ToastType[] => {\n  switch (action.type) {\n    case 'ADD_TOAST':\n      return [action.payload, ...prevToasts];\n    case 'PLAY_EXIT_ANIMATION':\n      return prevToasts.map(toast => {\n        if (toast.id === action.payload)\n          return { ...toast, isBeingRemoved: true };\n        return toast;\n      });\n    case 'REMOVE_TOAST':\n      return prevToasts.filter(toast => toast.id !== action.payload);\n  }\n};\n\nconst createUniqueId = () => Math.random().toString().substring(2);\n\nconst createToast = (\n  toast: AddToastPayload | string,\n  id: ToastId,\n): ToastType => {\n  if (typeof toast === 'string') {\n    return { id, content: toast, variant: 'success', isBeingRemoved: false };\n  } else {\n    return { id, variant: 'success', isBeingRemoved: false, ...toast };\n  }\n};\n\nexport type ToastProviderProps = {\n  /** Antall millisekunder før toasts forsvinner av seg selv\n   * @default 6000\n   */\n  delay?: number;\n  /** Plasseringen av toasts\n   * @default \"bottom-right\"\n   */\n  position?: 'bottom-right' | 'top-right';\n  /** Ekstra klassenavn til ToastProvider-wrapperen */\n  className?: string;\n  /** Ekstra styling som sendes til ToastProvider-wrapperen */\n  style?: React.CSSProperties;\n  /** Innholdet */\n  children: React.ReactNode;\n};\n\nexport const ToastProvider = ({\n  delay = 6000,\n  children,\n  position = 'bottom-right',\n  className,\n  style,\n}: ToastProviderProps) => {\n  const [toasts, dispatch] = React.useReducer(toastReducer, []);\n  const [hoveringId, setHovering] = React.useState<string>();\n  const timeoutIdRefs = React.useRef<{ [key: string]: number }>({});\n\n  const removeToast = React.useCallback((id: ToastId) => {\n    window.clearTimeout(timeoutIdRefs.current[id]);\n    dispatch({ type: 'REMOVE_TOAST', payload: id });\n    delete timeoutIdRefs.current[id];\n  }, []);\n\n  const playExitAnimation = React.useCallback((id: ToastId) => {\n    window.clearTimeout(timeoutIdRefs.current[id + 'animation']);\n    dispatch({ type: 'PLAY_EXIT_ANIMATION', payload: id });\n    delete timeoutIdRefs.current[id + 'animation'];\n  }, []);\n\n  const removeToastWithAnimationAfterDelay = React.useCallback(\n    (id: ToastId, delay: number) => {\n      timeoutIdRefs.current[id + 'animation'] = window.setTimeout(\n        () => playExitAnimation(id),\n        delay - EXIT_ANIMATION_TIME,\n      );\n      timeoutIdRefs.current[id] = window.setTimeout(\n        () => removeToast(id),\n        delay,\n      );\n    },\n    [timeoutIdRefs, playExitAnimation, removeToast],\n  );\n\n  const addToast = React.useCallback(\n    (toast: AddToastPayload | string) => {\n      const id = createUniqueId();\n      const payload = createToast(toast, id);\n      dispatch({ type: 'ADD_TOAST', payload });\n      removeToastWithAnimationAfterDelay(id, delay);\n    },\n    [delay, removeToastWithAnimationAfterDelay],\n  );\n\n  const handleMouseEnter = (toast: ToastType) => () => {\n    if (toast.isBeingRemoved) return;\n    setHovering(toast.id);\n    Object.values(timeoutIdRefs.current).forEach(timeoutId => {\n      window.clearTimeout(timeoutId);\n    });\n    timeoutIdRefs.current = {};\n  };\n\n  const handleMouseLeave = () => {\n    setHovering(undefined);\n    toasts.forEach(toast => {\n      removeToastWithAnimationAfterDelay(toast.id, delay);\n    });\n  };\n\n  const handleClose = (toastId: ToastId) => () => {\n    removeToast(toastId);\n    handleMouseLeave();\n  };\n\n  const contextValue = React.useMemo(\n    () => ({ toasts, addToast, removeToast }),\n    [addToast, removeToast, toasts],\n  );\n\n  return (\n    <ToastContext.Provider value={contextValue}>\n      {toasts.length > 0 && (\n        <div\n          className={classNames(\n            'eds-toast-container',\n            `eds-toast-container--${position}`,\n            className,\n          )}\n          style={style}\n        >\n          {toasts.slice(0, 3).map(toastToShow => (\n            <ToastAlertBox\n              variant={toastToShow.variant}\n              title={toastToShow.title}\n              onClose={handleClose(toastToShow.id)}\n              onMouseEnter={handleMouseEnter(toastToShow)}\n              onMouseLeave={handleMouseLeave}\n              closable={hoveringId === toastToShow.id}\n              toastIsBeingRemoved={toastToShow.isBeingRemoved}\n              key={toastToShow.id}\n            >\n              {toastToShow.content}\n            </ToastAlertBox>\n          ))}\n        </div>\n      )}\n      {children}\n    </ToastContext.Provider>\n  );\n};\n\nexport const useToast: () => {\n  addToast: (payload: AddToastPayload | string) => void;\n} = () => {\n  const context = React.useContext(ToastContext);\n  if (!context) {\n    throw new Error(\n      'You need to wrap your component in a ToastProvider component in ' +\n        'order to use the useToast hook',\n    );\n  }\n  const { addToast } = context;\n  return {\n    addToast,\n  };\n};\n","import React from 'react';\nimport classNames from 'classnames';\nimport copy from 'copy-text-to-clipboard';\n\nimport { IconButton } from '@entur/button';\nimport { CopyIcon } from '@entur/icons';\nimport { PreformattedText } from '@entur/typography';\n\nimport { useToast } from './ToastProvider';\n\nimport './CopyableText.scss';\n\nexport type CopyableTextProps = {\n  /** Ekstra klassenavn */\n  className?: string;\n  /** Tekstinnhold som vises og kopieres */\n  children: string;\n  /** Hvis du ønsker å kopiere noe annet enn\n   * innholdet i children kan du legge det inn her */\n  textToCopy?: string;\n  /** Overskrift i toast-varselet\n   * @default 'Kopiert!'\n   */\n  successHeading?: string;\n  /** Bekreftelsesmelding i toast-varselet\n   * @default `${textToCopy} ble kopiert til utklippstavlen.`\n   */\n  successMessage?: string;\n  /** Størrelse på CopyableText */\n  size?: 'small' | 'medium';\n} & Omit<React.HTMLAttributes<HTMLDivElement>, 'children'>;\n\nexport const CopyableText = ({\n  children,\n  successHeading = 'Kopiert!',\n  successMessage,\n  textToCopy,\n  className,\n  onClick,\n  'aria-label': ariaLabel = `Kopier ${\n    textToCopy ?? children\n  } til utklippstavlen`,\n  size = 'medium',\n  ...rest\n}: CopyableTextProps): JSX.Element => {\n  const { addToast } = useToast();\n  const buttonRef = React.useRef<HTMLButtonElement>(null);\n  const _textToCopy = textToCopy ?? children;\n  const _successMessage =\n    successMessage ?? `${_textToCopy} ble kopiert til utklippstavlen.`;\n  const handleClick = (e: React.MouseEvent<HTMLDivElement>) => {\n    buttonRef.current &&\n      copy(_textToCopy, {\n        target: buttonRef.current,\n      }) &&\n      addToast({ title: successHeading, content: _successMessage });\n    onClick?.(e);\n  };\n  return (\n    <div\n      className={classNames(\n        'eds-copyable-text',\n        className,\n        `eds-copyable-text--size-${size}`,\n      )}\n      onClick={handleClick}\n      {...rest}\n    >\n      <PreformattedText className=\"eds-copyable-text__preformatted-text\">\n        <span className=\"eds-copyable-text__displayed-text\">{children}</span>\n        <IconButton\n          className=\"eds-copyable-text__button\"\n          aria-label={ariaLabel}\n          type=\"button\"\n          size={size}\n          ref={buttonRef}\n        >\n          <CopyIcon className={'eds-copyable-text__button__icon'} />\n        </IconButton>\n      </PreformattedText>\n    </div>\n  );\n};\n","import { BaseExpand, ExpandArrow } from '@entur/expand';\nimport { VariantType } from '@entur/utils';\n\nimport classNames from 'classnames';\nimport React from 'react';\nimport { BannerAlertBoxProps } from './BannerAlertBox';\nimport { BaseAlertBox } from './BaseAlertBox';\nimport './ExpandableAlertBox.scss';\nimport { SmallAlertBoxProps } from './SmallAlertBox';\n\nexport type SmallExpandableAlertBoxProps = ExpandableAlertBoxProps &\n  SmallAlertBoxProps;\n\nexport const SmallExpandableAlertBox = (\n  props: SmallExpandableAlertBoxProps,\n) => {\n  return <ExpandableAlertBox size=\"small\" {...props} />;\n};\n\nexport type BannerExpandableAlertBoxProps = ExpandableAlertBoxProps &\n  BannerAlertBoxProps;\n\nexport const BannerExpandableAlertBox = (\n  props: BannerExpandableAlertBoxProps,\n) => {\n  return <ExpandableAlertBox size=\"banner\" {...props} />;\n};\n\n/** @deprecated use variant=\"information\" instead */\nconst info = 'info';\n/** @deprecated use variant=\"negative\" instead */\nconst error = 'error';\n\ntype ExpandableAlertBoxProps = {\n  /**Farge og uttrykk på alert-boksen*/\n  variant: VariantType | typeof info | typeof error;\n  /** Tittelen til ExpandableAlertBox */\n  title: React.ReactNode;\n  /**Innhold som vises ved ekspandering */\n  children: React.ReactNode;\n  /**Ekstra klassenavn */\n  className?: string;\n  /** Tekst som vises på ekspanderingsknappen før åpning\n   * @default \"Les mer\"\n   */\n  openLabel?: string;\n  /** Tekst som vises på ekspanderingsknappen når den er åpnet\n   * @default \"Lukk\"\n   */\n  closeLabel?: string;\n  [key: string]: any;\n};\n\nconst ExpandableAlertBox = ({\n  variant,\n  title,\n  children,\n  size,\n  className,\n  openLabel,\n  closeLabel,\n  ...rest\n}: ExpandableAlertBoxProps) => {\n  const [open, setopen] = React.useState(false);\n  return (\n    <BaseAlertBox\n      size={size}\n      variant={variant}\n      className={classNames('eds-expandable-alert-box', className)}\n      title={\n        <ExpandableAlertBoxTitle\n          open={open}\n          title={title}\n          onClick={() => setopen(!open)}\n          openLabel={openLabel}\n          closeLabel={closeLabel}\n        />\n      }\n      {...rest}\n    >\n      <BaseExpand open={open}>{children}</BaseExpand>\n    </BaseAlertBox>\n  );\n};\n\ntype ExpandableAlertBoxTitleProps = {\n  title: React.ReactNode;\n  open: boolean;\n  openLabel?: string;\n  closeLabel?: string;\n  onClick: (e: React.MouseEvent) => void;\n};\n\nconst ExpandableAlertBoxTitle = ({\n  title,\n  open,\n  openLabel = 'Les mer',\n  closeLabel = 'Lukk',\n  onClick,\n}: ExpandableAlertBoxTitleProps) => {\n  return (\n    <div className=\"eds-expandable-alert-box__title\">\n      <div>{title}</div>\n      <button\n        className=\"eds-expandable-alert-box__button\"\n        onClick={onClick}\n        type=\"button\"\n      >\n        {open ? closeLabel : openLabel}\n        <ExpandArrow open={open} inline />\n      </button>\n    </div>\n  );\n};\n","import { warnAboutMissingStyles } from '@entur/utils';\nimport './index.scss';\n\nwarnAboutMissingStyles('alert', 'icons');\n\nexport { BannerAlertBox } from './BannerAlertBox';\nexport { ToastAlertBox } from './ToastAlertBox';\nexport { SmallAlertBox } from './SmallAlertBox';\nexport { ToastProvider, useToast } from './ToastProvider';\nexport { CopyableText } from './CopyableText';\nexport * from './ExpandableAlertBox';\n"],"names":["ValidationSuccessIcon","ValidationInfoIcon","ValidationExclamationIcon","ValidationErrorIcon","jsxs","jsx","Tooltip","IconButton","CloseIcon","delay","PreformattedText","CopyIcon","BaseExpand","ExpandArrow","warnAboutMissingStyles"],"mappings":";;;;;;;;;;;;AAeA,MAAM,WAAW;AAAA,EACf,SAAS;AAAA,IACP,MAAMA,MAAAA;AAAAA,IACN,aAAa;AAAA,EAAA;AAAA,EAEf,aAAa,EAAE,MAAMC,0BAAoB,aAAa,cAAA;AAAA,EACtD,SAAS;AAAA,IACP,MAAMC,MAAAA;AAAAA,IACN,aAAa;AAAA,EAAA;AAAA,EAEf,UAAU,EAAE,MAAMC,2BAAqB,aAAa,cAAA;AAAA;AAAA,EAEpD,MAAM,EAAE,MAAMF,0BAAoB,aAAa,cAAA;AAAA,EAC/C,OAAO,EAAE,MAAME,MAAAA,qBAAqB,aAAa,cAAA;AACnD;AAiCO,MAAM,eAAe,CAAC;AAAA,EAC3B;AAAA,EACA;AAAA,EACA,WAAW;AAAA,EACX,mBAAmB;AAAA,EACnB;AAAA,EACA,UAAU,OAAO,CAAA;AAAA,EACjB;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAAyB;AACvB,QAAM,CAAC,UAAU,SAAS,IAAI,MAAM,SAAS,KAAK;AAClD,MAAI,UAAU;AACZ,WAAO;AAAA,EACT;AACA,QAAM,cAAc,MAAM;AACxB,cAAU,IAAI;AACd,YAAA;AAAA,EACF;AACA,QAAM,OAAO,SAAS,OAAO,EAAE;AAC/B,SACEC,2BAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAW;AAAA,QACT;AAAA,QACA,kBAAkB,IAAI;AAAA,QACtB,kBAAkB,OAAO;AAAA,QACzB;AAAA,UACE,wCAAwC;AAAA,QAAA;AAAA,QAE1C;AAAA,MAAA;AAAA,MAED,GAAG;AAAA,MAEJ,UAAA;AAAA,QAAAC,2BAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,WAAU;AAAA,YACV,cAAY,SAAS,OAAO,EAAE;AAAA,UAAA;AAAA,QAAA;AAAA,QAEhCD,2BAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAW,WAAW,0BAA0B;AAAA,cAC9C,uCAAuC,CAAC;AAAA,YAAA,CACzC;AAAA,YAEA,UAAA;AAAA,cAAA,SAASC,2BAAAA,IAAC,OAAA,EAAI,WAAU,wBAAwB,UAAA,OAAM;AAAA,cACtD,YAAY;AAAA,YAAA;AAAA,UAAA;AAAA,QAAA;AAAA,QAEd,YACCA,2BAAAA;AAAAA,UAACC,QAAAA;AAAAA,UAAA;AAAA,YACC,WAAU;AAAA,YACV,eAAW;AAAA,YACX,WAAU;AAAA,YACV,SAAQ;AAAA,YAER,UAAAD,2BAAAA;AAAAA,cAACE,OAAAA;AAAAA,cAAA;AAAA,gBACC,WAAU;AAAA,gBACV,cAAY;AAAA,gBACZ,SAAS;AAAA,gBACT,MAAK;AAAA,gBAEL,yCAACC,MAAAA,WAAA,CAAA,CAAU;AAAA,cAAA;AAAA,YAAA;AAAA,UACb;AAAA,QAAA;AAAA,MACF;AAAA,IAAA;AAAA,EAAA;AAIR;AClGO,MAAM,iBAAiB,CAAC,UAC7BH,+BAAC,gBAAc,GAAG,OAAO,MAAK,SAAA,CAAS;ACNlC,MAAM,gBAAgB,CAAC,UAC5BA,2BAAAA,IAAC,cAAA,EAAc,GAAG,OAAO,MAAK,SAAQ,MAAK,SAAA,CAAS;ACO/C,MAAM,gBAAgB,CAAC;AAAA,EAC5B;AAAA,EACA;AAAA,EACA;AAAA,EACA,WAAW;AAAA,EACX;AAAA,EACA,GAAG;AACL,MACEA,2BAAAA;AAAAA,EAAC;AAAA,EAAA;AAAA,IACC,WAAW,WAAW,WAAW;AAAA,MAC/B,8BAA8B,UAAU;AAAA,IAAA,CACzC;AAAA,IACA,GAAG;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA,MAAK;AAAA,EAAA;AACP;ACdF,MAAM,sBAAsB;AAE5B,MAAM,eAAe,MAAM,cAAuC,IAAI;AAEtE,MAAM,eAAe,CACnB,YACA,WACgB;AAChB,UAAQ,OAAO,MAAA;AAAA,IACb,KAAK;AACH,aAAO,CAAC,OAAO,SAAS,GAAG,UAAU;AAAA,IACvC,KAAK;AACH,aAAO,WAAW,IAAI,CAAA,UAAS;AAC7B,YAAI,MAAM,OAAO,OAAO;AACtB,iBAAO,EAAE,GAAG,OAAO,gBAAgB,KAAA;AACrC,eAAO;AAAA,MACT,CAAC;AAAA,IACH,KAAK;AACH,aAAO,WAAW,OAAO,CAAA,UAAS,MAAM,OAAO,OAAO,OAAO;AAAA,EAAA;AAEnE;AAEA,MAAM,iBAAiB,MAAM,KAAK,OAAA,EAAS,SAAA,EAAW,UAAU,CAAC;AAEjE,MAAM,cAAc,CAClB,OACA,OACc;AACd,MAAI,OAAO,UAAU,UAAU;AAC7B,WAAO,EAAE,IAAI,SAAS,OAAO,SAAS,WAAW,gBAAgB,MAAA;AAAA,EACnE,OAAO;AACL,WAAO,EAAE,IAAI,SAAS,WAAW,gBAAgB,OAAO,GAAG,MAAA;AAAA,EAC7D;AACF;AAmBO,MAAM,gBAAgB,CAAC;AAAA,EAC5B,QAAQ;AAAA,EACR;AAAA,EACA,WAAW;AAAA,EACX;AAAA,EACA;AACF,MAA0B;AACxB,QAAM,CAAC,QAAQ,QAAQ,IAAI,MAAM,WAAW,cAAc,EAAE;AAC5D,QAAM,CAAC,YAAY,WAAW,IAAI,MAAM,SAAA;AACxC,QAAM,gBAAgB,MAAM,OAAkC,EAAE;AAEhE,QAAM,cAAc,MAAM,YAAY,CAAC,OAAgB;AACrD,WAAO,aAAa,cAAc,QAAQ,EAAE,CAAC;AAC7C,aAAS,EAAE,MAAM,gBAAgB,SAAS,IAAI;AAC9C,WAAO,cAAc,QAAQ,EAAE;AAAA,EACjC,GAAG,CAAA,CAAE;AAEL,QAAM,oBAAoB,MAAM,YAAY,CAAC,OAAgB;AAC3D,WAAO,aAAa,cAAc,QAAQ,KAAK,WAAW,CAAC;AAC3D,aAAS,EAAE,MAAM,uBAAuB,SAAS,IAAI;AACrD,WAAO,cAAc,QAAQ,KAAK,WAAW;AAAA,EAC/C,GAAG,CAAA,CAAE;AAEL,QAAM,qCAAqC,MAAM;AAAA,IAC/C,CAAC,IAAaI,WAAkB;AAC9B,oBAAc,QAAQ,KAAK,WAAW,IAAI,OAAO;AAAA,QAC/C,MAAM,kBAAkB,EAAE;AAAA,QAC1BA,SAAQ;AAAA,MAAA;AAEV,oBAAc,QAAQ,EAAE,IAAI,OAAO;AAAA,QACjC,MAAM,YAAY,EAAE;AAAA,QACpBA;AAAAA,MAAA;AAAA,IAEJ;AAAA,IACA,CAAC,eAAe,mBAAmB,WAAW;AAAA,EAAA;AAGhD,QAAM,WAAW,MAAM;AAAA,IACrB,CAAC,UAAoC;AACnC,YAAM,KAAK,eAAA;AACX,YAAM,UAAU,YAAY,OAAO,EAAE;AACrC,eAAS,EAAE,MAAM,aAAa,QAAA,CAAS;AACvC,yCAAmC,IAAI,KAAK;AAAA,IAC9C;AAAA,IACA,CAAC,OAAO,kCAAkC;AAAA,EAAA;AAG5C,QAAM,mBAAmB,CAAC,UAAqB,MAAM;AACnD,QAAI,MAAM,eAAgB;AAC1B,gBAAY,MAAM,EAAE;AACpB,WAAO,OAAO,cAAc,OAAO,EAAE,QAAQ,CAAA,cAAa;AACxD,aAAO,aAAa,SAAS;AAAA,IAC/B,CAAC;AACD,kBAAc,UAAU,CAAA;AAAA,EAC1B;AAEA,QAAM,mBAAmB,MAAM;AAC7B,gBAAY,MAAS;AACrB,WAAO,QAAQ,CAAA,UAAS;AACtB,yCAAmC,MAAM,IAAI,KAAK;AAAA,IACpD,CAAC;AAAA,EACH;AAEA,QAAM,cAAc,CAAC,YAAqB,MAAM;AAC9C,gBAAY,OAAO;AACnB,qBAAA;AAAA,EACF;AAEA,QAAM,eAAe,MAAM;AAAA,IACzB,OAAO,EAAE,QAAQ,UAAU;IAC3B,CAAC,UAAU,aAAa,MAAM;AAAA,EAAA;AAGhC,SACEL,2BAAAA,KAAC,aAAa,UAAb,EAAsB,OAAO,cAC3B,UAAA;AAAA,IAAA,OAAO,SAAS,KACfC,2BAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAW;AAAA,UACT;AAAA,UACA,wBAAwB,QAAQ;AAAA,UAChC;AAAA,QAAA;AAAA,QAEF;AAAA,QAEC,iBAAO,MAAM,GAAG,CAAC,EAAE,IAAI,CAAA,gBACtBA,2BAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YACC,SAAS,YAAY;AAAA,YACrB,OAAO,YAAY;AAAA,YACnB,SAAS,YAAY,YAAY,EAAE;AAAA,YACnC,cAAc,iBAAiB,WAAW;AAAA,YAC1C,cAAc;AAAA,YACd,UAAU,eAAe,YAAY;AAAA,YACrC,qBAAqB,YAAY;AAAA,YAGhC,UAAA,YAAY;AAAA,UAAA;AAAA,UAFR,YAAY;AAAA,QAAA,CAIpB;AAAA,MAAA;AAAA,IAAA;AAAA,IAGJ;AAAA,EAAA,GACH;AAEJ;AAEO,MAAM,WAET,MAAM;AACR,QAAM,UAAU,MAAM,WAAW,YAAY;AAC7C,MAAI,CAAC,SAAS;AACZ,UAAM,IAAI;AAAA,MACR;AAAA,IAAA;AAAA,EAGJ;AACA,QAAM,EAAE,aAAa;AACrB,SAAO;AAAA,IACL;AAAA,EAAA;AAEJ;AC/KO,MAAM,eAAe,CAAC;AAAA,EAC3B;AAAA,EACA,iBAAiB;AAAA,EACjB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,cAAc,YAAY,UACxB,cAAc,QAChB;AAAA,EACA,OAAO;AAAA,EACP,GAAG;AACL,MAAsC;AACpC,QAAM,EAAE,SAAA,IAAa,SAAA;AACrB,QAAM,YAAY,MAAM,OAA0B,IAAI;AACtD,QAAM,cAAc,cAAc;AAClC,QAAM,kBACJ,kBAAkB,GAAG,WAAW;AAClC,QAAM,cAAc,CAAC,MAAwC;AAC3D,cAAU,WACR,KAAK,aAAa;AAAA,MAChB,QAAQ,UAAU;AAAA,IAAA,CACnB,KACD,SAAS,EAAE,OAAO,gBAAgB,SAAS,iBAAiB;AAC9D,cAAU,CAAC;AAAA,EACb;AACA,SACEA,2BAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAW;AAAA,QACT;AAAA,QACA;AAAA,QACA,2BAA2B,IAAI;AAAA,MAAA;AAAA,MAEjC,SAAS;AAAA,MACR,GAAG;AAAA,MAEJ,UAAAD,2BAAAA,KAACM,WAAAA,kBAAA,EAAiB,WAAU,wCAC1B,UAAA;AAAA,QAAAL,2BAAAA,IAAC,QAAA,EAAK,WAAU,qCAAqC,SAAA,CAAS;AAAA,QAC9DA,2BAAAA;AAAAA,UAACE,OAAAA;AAAAA,UAAA;AAAA,YACC,WAAU;AAAA,YACV,cAAY;AAAA,YACZ,MAAK;AAAA,YACL;AAAA,YACA,KAAK;AAAA,YAEL,UAAAF,2BAAAA,IAACM,MAAAA,UAAA,EAAS,WAAW,kCAAA,CAAmC;AAAA,UAAA;AAAA,QAAA;AAAA,MAC1D,EAAA,CACF;AAAA,IAAA;AAAA,EAAA;AAGN;ACrEO,MAAM,0BAA0B,CACrC,UACG;AACH,SAAON,2BAAAA,IAAC,oBAAA,EAAmB,MAAK,SAAS,GAAG,OAAO;AACrD;AAKO,MAAM,2BAA2B,CACtC,UACG;AACH,SAAOA,2BAAAA,IAAC,oBAAA,EAAmB,MAAK,UAAU,GAAG,OAAO;AACtD;AA2BA,MAAM,qBAAqB,CAAC;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAA+B;AAC7B,QAAM,CAAC,MAAM,OAAO,IAAI,MAAM,SAAS,KAAK;AAC5C,SACEA,2BAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC;AAAA,MACA;AAAA,MACA,WAAW,WAAW,4BAA4B,SAAS;AAAA,MAC3D,OACEA,2BAAAA;AAAAA,QAAC;AAAA,QAAA;AAAA,UACC;AAAA,UACA;AAAA,UACA,SAAS,MAAM,QAAQ,CAAC,IAAI;AAAA,UAC5B;AAAA,UACA;AAAA,QAAA;AAAA,MAAA;AAAA,MAGH,GAAG;AAAA,MAEJ,UAAAA,2BAAAA,IAACO,OAAAA,YAAA,EAAW,MAAa,SAAA,CAAS;AAAA,IAAA;AAAA,EAAA;AAGxC;AAUA,MAAM,0BAA0B,CAAC;AAAA,EAC/B;AAAA,EACA;AAAA,EACA,YAAY;AAAA,EACZ,aAAa;AAAA,EACb;AACF,MAAoC;AAClC,SACER,2BAAAA,KAAC,OAAA,EAAI,WAAU,mCACb,UAAA;AAAA,IAAAC,2BAAAA,IAAC,SAAK,UAAA,MAAA,CAAM;AAAA,IACZD,2BAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAU;AAAA,QACV;AAAA,QACA,MAAK;AAAA,QAEJ,UAAA;AAAA,UAAA,OAAO,aAAa;AAAA,UACrBC,2BAAAA,IAACQ,OAAAA,aAAA,EAAY,MAAY,QAAM,KAAA,CAAC;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAClC,GACF;AAEJ;AC9GAC,MAAAA,uBAAuB,SAAS,OAAO;;;;;;;;;"}