HEX
Server: Apache/2.4.58 (Ubuntu)
System: Linux ip-172-26-0-120 6.17.0-1009-aws #9~24.04.2-Ubuntu SMP Fri Mar 6 23:50:29 UTC 2026 x86_64
User: ubuntu (1000)
PHP: 8.3.6
Disabled: NONE
Upload Files
File: /var/www/html/orbi-individual/node_modules/react-toastify/dist/react-toastify.js.map
{"version":3,"file":"react-toastify.js","sources":["../src/utils/propValidator.ts","../src/utils/collapseToast.ts","../src/utils/cssTransition.tsx","../src/utils/mapper.ts","../src/core/store.ts","../src/hooks/useToastContainer.ts","../src/core/containerObserver.ts","../src/hooks/useToast.ts","../src/components/ProgressBar.tsx","../src/core/genToastId.ts","../src/core/toast.ts","../src/hooks/useIsomorphicLayoutEffect.ts","../src/components/Icons.tsx","../src/components/Toast.tsx","../src/components/CloseButton.tsx","../src/components/Transitions.tsx","../src/components/ToastContainer.tsx"],"sourcesContent":["import { isValidElement } from 'react';\nimport { Id } from '../types';\n\nexport const isNum = (v: any): v is Number =>\n  typeof v === 'number' && !isNaN(v);\n\nexport const isStr = (v: any): v is String => typeof v === 'string';\n\nexport const isFn = (v: any): v is Function => typeof v === 'function';\n\nexport const isId = (v: unknown): v is Id => isStr(v) || isNum(v);\n\nexport const parseClassName = (v: any) => (isStr(v) || isFn(v) ? v : null);\n\nexport const getAutoCloseDelay = (\n  toastAutoClose?: false | number,\n  containerAutoClose?: false | number\n) =>\n  toastAutoClose === false || (isNum(toastAutoClose) && toastAutoClose > 0)\n    ? toastAutoClose\n    : containerAutoClose;\n\nexport const canBeRendered = <T>(content: T): boolean =>\n  isValidElement(content) || isStr(content) || isFn(content) || isNum(content);\n","import { Default } from './constant';\n\n/**\n * Used to collapse toast after exit animation\n */\nexport function collapseToast(\n  node: HTMLElement,\n  done: () => void,\n  duration = Default.COLLAPSE_DURATION\n) {\n  const { scrollHeight, style } = node;\n\n  requestAnimationFrame(() => {\n    style.minHeight = 'initial';\n    style.height = scrollHeight + 'px';\n    style.transition = `all ${duration}ms`;\n\n    requestAnimationFrame(() => {\n      style.height = '0';\n      style.padding = '0';\n      style.margin = '0';\n      setTimeout(done, duration as number);\n    });\n  });\n}\n","import React, { useEffect, useLayoutEffect, useRef } from 'react';\nimport { collapseToast } from './collapseToast';\nimport { Default } from './constant';\n\nimport { ToastTransitionProps } from '../types';\n\nexport interface CSSTransitionProps {\n  /**\n   * Css class to apply when toast enter\n   */\n  enter: string;\n\n  /**\n   * Css class to apply when toast leave\n   */\n  exit: string;\n\n  /**\n   * Append current toast position to the classname.\n   * If multiple classes are provided, only the last one will get the position\n   * For instance `myclass--top-center`...\n   * `Default: false`\n   */\n  appendPosition?: boolean;\n\n  /**\n   * Collapse toast smoothly when exit animation end\n   * `Default: true`\n   */\n  collapse?: boolean;\n\n  /**\n   * Collapse transition duration\n   * `Default: 300`\n   */\n  collapseDuration?: number;\n}\n\nconst enum AnimationStep {\n  Enter,\n  Exit\n}\n\n/**\n * Css animation that just work.\n * You could use animate.css for instance\n *\n *\n * ```\n * cssTransition({\n *   enter: \"animate__animated animate__bounceIn\",\n *   exit: \"animate__animated animate__bounceOut\"\n * })\n * ```\n *\n */\nexport function cssTransition({\n  enter,\n  exit,\n  appendPosition = false,\n  collapse = true,\n  collapseDuration = Default.COLLAPSE_DURATION\n}: CSSTransitionProps) {\n  return function ToastTransition({\n    children,\n    position,\n    preventExitTransition,\n    done,\n    nodeRef,\n    isIn,\n    playToast\n  }: ToastTransitionProps) {\n    const enterClassName = appendPosition ? `${enter}--${position}` : enter;\n    const exitClassName = appendPosition ? `${exit}--${position}` : exit;\n    const animationStep = useRef(AnimationStep.Enter);\n\n    useLayoutEffect(() => {\n      const node = nodeRef.current!;\n      const classToToken = enterClassName.split(' ');\n\n      const onEntered = (e: AnimationEvent) => {\n        if (e.target !== nodeRef.current) return;\n\n        playToast();\n        node.removeEventListener('animationend', onEntered);\n        node.removeEventListener('animationcancel', onEntered);\n        if (\n          animationStep.current === AnimationStep.Enter &&\n          e.type !== 'animationcancel'\n        ) {\n          node.classList.remove(...classToToken);\n        }\n      };\n\n      const onEnter = () => {\n        node.classList.add(...classToToken);\n        node.addEventListener('animationend', onEntered);\n        node.addEventListener('animationcancel', onEntered);\n      };\n\n      onEnter();\n    }, []);\n\n    useEffect(() => {\n      const node = nodeRef.current!;\n\n      const onExited = () => {\n        node.removeEventListener('animationend', onExited);\n        collapse ? collapseToast(node, done, collapseDuration) : done();\n      };\n\n      const onExit = () => {\n        animationStep.current = AnimationStep.Exit;\n        node.className += ` ${exitClassName}`;\n        node.addEventListener('animationend', onExited);\n      };\n\n      if (!isIn) preventExitTransition ? onExited() : onExit();\n    }, [isIn]);\n\n    return <>{children}</>;\n  };\n}\n","import { Toast, ToastItem, ToastItemStatus } from '../types';\n\nexport function toToastItem(toast: Toast, status: ToastItemStatus): ToastItem {\n  return toast != null\n    ? {\n        content: toast.content,\n        containerId: toast.props.containerId,\n        id: toast.props.toastId,\n        theme: toast.props.theme,\n        type: toast.props.type,\n        data: toast.props.data || {},\n        isLoading: toast.props.isLoading,\n        icon: toast.props.icon,\n        status\n      }\n    : // monkey patch for now\n      ({} as ToastItem);\n}\n","import {\n  Id,\n  NotValidatedToastProps,\n  OnChangeCallback,\n  ToastContainerProps,\n  ToastContent,\n  ToastItem,\n  ToastOptions\n} from '../types';\nimport { Default, canBeRendered, isId } from '../utils';\nimport {\n  ContainerObserver,\n  createContainerObserver\n} from './containerObserver';\n\ninterface EnqueuedToast {\n  content: ToastContent<any>;\n  options: NotValidatedToastProps;\n}\n\ninterface ClearWaitingQueueParams {\n  containerId?: Id;\n}\n\ninterface RemoveParams {\n  id?: Id;\n  containerId: Id;\n}\n\nconst containers = new Map<Id, ContainerObserver>();\nlet renderQueue: EnqueuedToast[] = [];\nconst listeners = new Set<OnChangeCallback>();\n\nconst dispatchChanges = (data: ToastItem) => listeners.forEach(cb => cb(data));\n\nconst hasContainers = () => containers.size > 0;\n\nfunction flushRenderQueue() {\n  renderQueue.forEach(v => pushToast(v.content, v.options));\n  renderQueue = [];\n}\n\nexport const getToast = (id: Id, { containerId }: ToastOptions) =>\n  containers.get(containerId || Default.CONTAINER_ID)?.toasts.get(id);\n\nexport function isToastActive(id: Id, containerId?: Id) {\n  if (containerId) return !!containers.get(containerId)?.isToastActive(id);\n\n  let isActive = false;\n  containers.forEach(c => {\n    if (c.isToastActive(id)) isActive = true;\n  });\n\n  return isActive;\n}\n\nexport function removeToast(params?: Id | RemoveParams) {\n  if (!hasContainers()) {\n    renderQueue = renderQueue.filter(\n      v => params != null && v.options.toastId !== params\n    );\n    return;\n  }\n\n  if (params == null || isId(params)) {\n    containers.forEach(c => {\n      c.removeToast(params as Id);\n    });\n  } else if (params && ('containerId' in params || 'id' in params)) {\n    const container = containers.get(params.containerId);\n    container\n      ? container.removeToast(params.id)\n      : containers.forEach(c => {\n          c.removeToast(params.id);\n        });\n  }\n}\n\nexport function clearWaitingQueue(p: ClearWaitingQueueParams = {}) {\n  containers.forEach(c => {\n    if (c.props.limit && (!p.containerId || c.id === p.containerId)) {\n      c.clearQueue();\n    }\n  });\n}\n\nexport function pushToast<TData>(\n  content: ToastContent<TData>,\n  options: NotValidatedToastProps\n) {\n  if (!canBeRendered(content)) return;\n  if (!hasContainers()) renderQueue.push({ content, options });\n\n  containers.forEach(c => {\n    c.buildToast(content, options);\n  });\n}\n\ninterface ToggleToastParams {\n  id?: Id;\n  containerId?: Id;\n}\n\ntype RegisterToggleOpts = {\n  id: Id;\n  containerId?: Id;\n  fn: (v: boolean) => void;\n};\n\nexport function registerToggle(opts: RegisterToggleOpts) {\n  containers\n    .get(opts.containerId || Default.CONTAINER_ID)\n    ?.setToggle(opts.id, opts.fn);\n}\n\nexport function toggleToast(v: boolean, opt?: ToggleToastParams) {\n  containers.forEach(c => {\n    if (opt == null || !opt?.containerId) {\n      c.toggle(v, opt?.id);\n    } else if (opt?.containerId === c.id) {\n      c.toggle(v, opt?.id);\n    }\n  });\n}\n\nexport function registerContainer(props: ToastContainerProps) {\n  const id = props.containerId || Default.CONTAINER_ID;\n  return {\n    subscribe(notify: () => void) {\n      const container = createContainerObserver(id, props, dispatchChanges);\n\n      containers.set(id, container);\n      const unobserve = container.observe(notify);\n      flushRenderQueue();\n\n      return () => {\n        unobserve();\n        containers.delete(id);\n      };\n    },\n    setProps(p: ToastContainerProps) {\n      containers.get(id)?.setProps(p);\n    },\n    getSnapshot() {\n      return containers.get(id)?.getSnapshot();\n    }\n  };\n}\n\nexport function onChange(cb: OnChangeCallback) {\n  listeners.add(cb);\n\n  return () => {\n    listeners.delete(cb);\n  };\n}\n","import { useRef, useSyncExternalStore } from 'react';\nimport { isToastActive, registerContainer } from '../core/store';\nimport { Toast, ToastContainerProps, ToastPosition } from '../types';\n\nexport function useToastContainer(props: ToastContainerProps) {\n  const { subscribe, getSnapshot, setProps } = useRef(\n    registerContainer(props)\n  ).current;\n  setProps(props);\n  const snapshot = useSyncExternalStore(subscribe, getSnapshot, getSnapshot);\n\n  function getToastToRender<T>(\n    cb: (position: ToastPosition, toastList: Toast[]) => T\n  ) {\n    if (!snapshot) return [];\n\n    const toRender = new Map<ToastPosition, Toast[]>();\n\n    snapshot.forEach(toast => {\n      const { position } = toast.props;\n      toRender.has(position) || toRender.set(position, []);\n      toRender.get(position)!.push(toast);\n    });\n\n    return Array.from(toRender, p => cb(p[0], p[1]));\n  }\n\n  return {\n    getToastToRender,\n    isToastActive,\n    count: snapshot?.length\n  };\n}\n","import { ReactElement, cloneElement, isValidElement } from 'react';\nimport {\n  Id,\n  NotValidatedToastProps,\n  OnChangeCallback,\n  Toast,\n  ToastContainerProps,\n  ToastContent,\n  ToastProps\n} from '../types';\nimport {\n  canBeRendered,\n  getAutoCloseDelay,\n  isFn,\n  isNum,\n  isStr,\n  parseClassName,\n  toToastItem\n} from '../utils';\n\ninterface QueuedToast {\n  content: ToastContent<any>;\n  props: ToastProps;\n  staleId?: Id;\n}\n\ntype Notify = () => void;\n\ninterface ActiveToast {\n  content: ToastContent<any>;\n  props: ToastProps;\n  staleId?: Id;\n}\n\nexport type ContainerObserver = ReturnType<typeof createContainerObserver>;\n\nexport function createContainerObserver(\n  id: Id,\n  containerProps: ToastContainerProps,\n  dispatchChanges: OnChangeCallback\n) {\n  let toastKey = 1;\n  let toastCount = 0;\n  let queue: QueuedToast[] = [];\n  let activeToasts: Id[] = [];\n  let snapshot: Toast[] = [];\n  let props = containerProps;\n  const toasts = new Map<Id, Toast>();\n  const listeners = new Set<Notify>();\n\n  const observe = (notify: Notify) => {\n    listeners.add(notify);\n    return () => listeners.delete(notify);\n  };\n\n  const notify = () => {\n    snapshot = Array.from(toasts.values());\n    listeners.forEach(cb => cb());\n  };\n\n  const shouldIgnoreToast = ({\n    containerId,\n    toastId,\n    updateId\n  }: NotValidatedToastProps) => {\n    const containerMismatch = containerId ? containerId !== id : id !== 1;\n    const isDuplicate = toasts.has(toastId) && updateId == null;\n\n    return containerMismatch || isDuplicate;\n  };\n\n  const toggle = (v: boolean, id?: Id) => {\n    toasts.forEach(t => {\n      if (id == null || id === t.props.toastId) isFn(t.toggle) && t.toggle(v);\n    });\n  };\n\n  const removeToast = (id?: Id) => {\n    activeToasts = id == null ? [] : activeToasts.filter(v => v !== id);\n    notify();\n  };\n\n  const clearQueue = () => {\n    toastCount -= queue.length;\n    queue = [];\n  };\n\n  const addActiveToast = (toast: ActiveToast) => {\n    const { toastId, onOpen, updateId, children } = toast.props;\n    const isNew = updateId == null;\n\n    if (toast.staleId) toasts.delete(toast.staleId);\n\n    toasts.set(toastId, toast);\n    activeToasts = [...activeToasts, toast.props.toastId].filter(\n      v => v !== toast.staleId\n    );\n    notify();\n    dispatchChanges(toToastItem(toast, isNew ? 'added' : 'updated'));\n\n    if (isNew && isFn(onOpen))\n      onOpen(isValidElement(children) && children.props);\n  };\n\n  const buildToast = <TData = unknown>(\n    content: ToastContent<TData>,\n    options: NotValidatedToastProps\n  ) => {\n    if (shouldIgnoreToast(options)) return;\n\n    const { toastId, updateId, data, staleId, delay } = options;\n    const closeToast = () => {\n      removeToast(toastId);\n    };\n\n    const isNotAnUpdate = updateId == null;\n\n    if (isNotAnUpdate) toastCount++;\n\n    const toastProps = {\n      ...props,\n      style: props.toastStyle,\n      key: toastKey++,\n      ...Object.fromEntries(\n        Object.entries(options).filter(([_, v]) => v != null)\n      ),\n      toastId,\n      updateId,\n      data,\n      closeToast,\n      isIn: false,\n      className: parseClassName(options.className || props.toastClassName),\n      bodyClassName: parseClassName(\n        options.bodyClassName || props.bodyClassName\n      ),\n      progressClassName: parseClassName(\n        options.progressClassName || props.progressClassName\n      ),\n      autoClose: options.isLoading\n        ? false\n        : getAutoCloseDelay(options.autoClose, props.autoClose),\n      deleteToast() {\n        const toastToRemove = toasts.get(toastId)!;\n        const { onClose, children } = toastToRemove.props;\n        if (isFn(onClose)) onClose(isValidElement(children) && children.props);\n\n        dispatchChanges(toToastItem(toastToRemove, 'removed'));\n        toasts.delete(toastId);\n\n        toastCount--;\n        if (toastCount < 0) toastCount = 0;\n\n        if (queue.length > 0) {\n          addActiveToast(queue.shift() as ActiveToast);\n          return;\n        }\n\n        notify();\n      }\n    } as ToastProps;\n\n    toastProps.closeButton = props.closeButton;\n\n    if (options.closeButton === false || canBeRendered(options.closeButton)) {\n      toastProps.closeButton = options.closeButton;\n    } else if (options.closeButton === true) {\n      toastProps.closeButton = canBeRendered(props.closeButton)\n        ? props.closeButton\n        : true;\n    }\n\n    let toastContent = content;\n\n    if (isValidElement(content) && !isStr(content.type)) {\n      toastContent = cloneElement(content as ReactElement, {\n        closeToast,\n        toastProps,\n        data\n      });\n    } else if (isFn(content)) {\n      toastContent = content({ closeToast, toastProps, data: data as TData });\n    }\n\n    const activeToast = {\n      content: toastContent,\n      props: toastProps,\n      staleId\n    };\n\n    // not handling limit + delay by design. Waiting for user feedback first\n    if (\n      props.limit &&\n      props.limit > 0 &&\n      toastCount > props.limit &&\n      isNotAnUpdate\n    ) {\n      queue.push(activeToast);\n    } else if (isNum(delay)) {\n      setTimeout(() => {\n        addActiveToast(activeToast);\n      }, delay);\n    } else {\n      addActiveToast(activeToast);\n    }\n  };\n\n  return {\n    id,\n    props,\n    observe,\n    toggle,\n    removeToast,\n    toasts,\n    clearQueue,\n    buildToast,\n    setProps(p: ToastContainerProps) {\n      props = p;\n    },\n    setToggle: (id: Id, fn: (v: boolean) => void) => {\n      toasts.get(id)!.toggle = fn;\n    },\n    isToastActive: (id: Id) => activeToasts.some(v => v === id),\n    getSnapshot: () => (props.newestOnTop ? snapshot.reverse() : snapshot)\n  };\n}\n","import { DOMAttributes, useEffect, useRef, useState } from 'react';\n\nimport { ToastProps } from '../types';\nimport { Default, Direction } from '../utils';\nimport { registerToggle } from '../core/store';\n\ninterface Draggable {\n  start: number;\n  delta: number;\n  removalDistance: number;\n  canCloseOnClick: boolean;\n  canDrag: boolean;\n  didMove: boolean;\n}\n\nexport function useToast(props: ToastProps) {\n  const [isRunning, setIsRunning] = useState(false);\n  const [preventExitTransition, setPreventExitTransition] = useState(false);\n  const toastRef = useRef<HTMLDivElement>(null);\n  const drag = useRef<Draggable>({\n    start: 0,\n    delta: 0,\n    removalDistance: 0,\n    canCloseOnClick: true,\n    canDrag: false,\n    didMove: false\n  }).current;\n  const { autoClose, pauseOnHover, closeToast, onClick, closeOnClick } = props;\n\n  registerToggle({\n    id: props.toastId,\n    containerId: props.containerId,\n    fn: setIsRunning\n  });\n\n  useEffect(() => {\n    if (props.pauseOnFocusLoss) {\n      bindFocusEvents();\n\n      return () => {\n        unbindFocusEvents();\n      };\n    }\n  }, [props.pauseOnFocusLoss]);\n\n  function bindFocusEvents() {\n    if (!document.hasFocus()) pauseToast();\n\n    window.addEventListener('focus', playToast);\n    window.addEventListener('blur', pauseToast);\n  }\n\n  function unbindFocusEvents() {\n    window.removeEventListener('focus', playToast);\n    window.removeEventListener('blur', pauseToast);\n  }\n\n  function onDragStart(e: React.PointerEvent<HTMLElement>) {\n    if (props.draggable === true || props.draggable === e.pointerType) {\n      bindDragEvents();\n      const toast = toastRef.current!;\n      drag.canCloseOnClick = true;\n      drag.canDrag = true;\n      toast.style.transition = 'none';\n\n      if (props.draggableDirection === Direction.X) {\n        drag.start = e.clientX;\n        drag.removalDistance =\n          toast.offsetWidth * (props.draggablePercent / 100);\n      } else {\n        drag.start = e.clientY;\n        drag.removalDistance =\n          (toast.offsetHeight *\n            (props.draggablePercent === Default.DRAGGABLE_PERCENT\n              ? props.draggablePercent * 1.5\n              : props.draggablePercent)) /\n          100;\n      }\n    }\n  }\n\n  function onDragTransitionEnd(e: React.PointerEvent<HTMLElement>) {\n    const { top, bottom, left, right } =\n      toastRef.current!.getBoundingClientRect();\n\n    if (\n      e.nativeEvent.type !== 'touchend' &&\n      props.pauseOnHover &&\n      e.clientX >= left &&\n      e.clientX <= right &&\n      e.clientY >= top &&\n      e.clientY <= bottom\n    ) {\n      pauseToast();\n    } else {\n      playToast();\n    }\n  }\n\n  function playToast() {\n    setIsRunning(true);\n  }\n\n  function pauseToast() {\n    setIsRunning(false);\n  }\n\n  function bindDragEvents() {\n    drag.didMove = false;\n    document.addEventListener('pointermove', onDragMove);\n    document.addEventListener('pointerup', onDragEnd);\n  }\n\n  function unbindDragEvents() {\n    document.removeEventListener('pointermove', onDragMove);\n    document.removeEventListener('pointerup', onDragEnd);\n  }\n\n  function onDragMove(e: PointerEvent) {\n    const toast = toastRef.current!;\n    if (drag.canDrag && toast) {\n      drag.didMove = true;\n      if (isRunning) pauseToast();\n      if (props.draggableDirection === Direction.X) {\n        drag.delta = e.clientX - drag.start;\n      } else {\n        drag.delta = e.clientY - drag.start;\n      }\n\n      // prevent false positive during a toast click\n      if (drag.start !== e.clientX) drag.canCloseOnClick = false;\n      const translate =\n        props.draggableDirection === 'x'\n          ? `${drag.delta}px, var(--y)`\n          : `0, calc(${drag.delta}px + var(--y))`;\n      toast.style.transform = `translate3d(${translate},0)`;\n      toast.style.opacity = `${\n        1 - Math.abs(drag.delta / drag.removalDistance)\n      }`;\n    }\n  }\n\n  function onDragEnd() {\n    unbindDragEvents();\n    const toast = toastRef.current!;\n    if (drag.canDrag && drag.didMove && toast) {\n      drag.canDrag = false;\n      if (Math.abs(drag.delta) > drag.removalDistance) {\n        setPreventExitTransition(true);\n        props.closeToast();\n        props.collapseAll();\n        return;\n      }\n\n      toast.style.transition = 'transform 0.2s, opacity 0.2s';\n      toast.style.removeProperty('transform');\n      toast.style.removeProperty('opacity');\n    }\n  }\n\n  const eventHandlers: DOMAttributes<HTMLElement> = {\n    onPointerDown: onDragStart,\n    onPointerUp: onDragTransitionEnd\n  };\n\n  if (autoClose && pauseOnHover) {\n    eventHandlers.onMouseEnter = pauseToast;\n\n    // progress control is delegated to the container\n    if (!props.stacked) eventHandlers.onMouseLeave = playToast;\n  }\n\n  // prevent toast from closing when user drags the toast\n  if (closeOnClick) {\n    eventHandlers.onClick = (e: React.MouseEvent) => {\n      onClick && onClick(e);\n      drag.canCloseOnClick && closeToast();\n    };\n  }\n\n  return {\n    playToast,\n    pauseToast,\n    isRunning,\n    preventExitTransition,\n    toastRef,\n    eventHandlers\n  };\n}\n","import React from 'react';\nimport cx from 'clsx';\n\nimport { Default, isFn, Type } from './../utils';\nimport { TypeOptions, ToastClassName, Theme } from '../types';\n\nexport interface ProgressBarProps {\n  /**\n   * The animation delay which determine when to close the toast\n   */\n  delay: number;\n\n  /**\n   * Whether or not the animation is running or paused\n   */\n  isRunning: boolean;\n\n  /**\n   * Func to close the current toast\n   */\n  closeToast: () => void;\n\n  /**\n   * Optional type : info, success ...\n   */\n  type?: TypeOptions;\n\n  /**\n   * The theme that is currently used\n   */\n  theme: Theme;\n\n  /**\n   * Hide or not the progress bar\n   */\n  hide?: boolean;\n\n  /**\n   * Optional className\n   */\n  className?: ToastClassName;\n\n  /**\n   * Optional inline style\n   */\n  style?: React.CSSProperties;\n\n  /**\n   * Tell wether or not controlled progress bar is used\n   */\n  controlledProgress?: boolean;\n\n  /**\n   * Controlled progress value\n   */\n  progress?: number | string;\n\n  /**\n   * Support rtl content\n   */\n  rtl?: boolean;\n\n  /**\n   * Tell if the component is visible on screen or not\n   */\n  isIn?: boolean;\n}\n\nexport function ProgressBar({\n  delay,\n  isRunning,\n  closeToast,\n  type = Type.DEFAULT,\n  hide,\n  className,\n  style: userStyle,\n  controlledProgress,\n  progress,\n  rtl,\n  isIn,\n  theme\n}: ProgressBarProps) {\n  const isHidden = hide || (controlledProgress && progress === 0);\n  const style: React.CSSProperties = {\n    ...userStyle,\n    animationDuration: `${delay}ms`,\n    animationPlayState: isRunning ? 'running' : 'paused'\n  };\n\n  if (controlledProgress) style.transform = `scaleX(${progress})`;\n  const defaultClassName = cx(\n    `${Default.CSS_NAMESPACE}__progress-bar`,\n    controlledProgress\n      ? `${Default.CSS_NAMESPACE}__progress-bar--controlled`\n      : `${Default.CSS_NAMESPACE}__progress-bar--animated`,\n    `${Default.CSS_NAMESPACE}__progress-bar-theme--${theme}`,\n    `${Default.CSS_NAMESPACE}__progress-bar--${type}`,\n    {\n      [`${Default.CSS_NAMESPACE}__progress-bar--rtl`]: rtl\n    }\n  );\n  const classNames = isFn(className)\n    ? className({\n        rtl,\n        type,\n        defaultClassName\n      })\n    : cx(defaultClassName, className);\n\n  // 🧐 controlledProgress is derived from progress\n  // so if controlledProgress is set\n  // it means that this is also the case for progress\n  const animationEvent = {\n    [controlledProgress && (progress as number)! >= 1\n      ? 'onTransitionEnd'\n      : 'onAnimationEnd']:\n      controlledProgress && (progress as number)! < 1\n        ? null\n        : () => {\n            isIn && closeToast();\n          }\n  };\n\n  // TODO: add aria-valuenow, aria-valuemax, aria-valuemin\n\n  return (\n    <div\n      className={`${Default.CSS_NAMESPACE}__progress-bar--wrp`}\n      data-hidden={isHidden}\n    >\n      <div\n        className={`${Default.CSS_NAMESPACE}__progress-bar--bg ${Default.CSS_NAMESPACE}__progress-bar-theme--${theme} ${Default.CSS_NAMESPACE}__progress-bar--${type}`}\n      />\n      <div\n        role=\"progressbar\"\n        aria-hidden={isHidden ? 'true' : 'false'}\n        aria-label=\"notification timer\"\n        className={classNames}\n        style={style}\n        {...animationEvent}\n      />\n    </div>\n  );\n}\n","let TOAST_ID = 1;\n\nexport const genToastId = () => `${TOAST_ID++}`;\n","import {\n  Id,\n  IdOpts,\n  NotValidatedToastProps,\n  ToastContent,\n  ToastOptions,\n  ToastProps,\n  TypeOptions,\n  UpdateOptions\n} from '../types';\nimport { Type, isFn, isNum, isStr } from '../utils';\nimport { genToastId } from './genToastId';\nimport {\n  clearWaitingQueue,\n  getToast,\n  isToastActive,\n  onChange,\n  pushToast,\n  removeToast,\n  toggleToast\n} from './store';\n\n/**\n * Generate a toastId or use the one provided\n */\nfunction getToastId<TData>(options?: ToastOptions<TData>) {\n  return options && (isStr(options.toastId) || isNum(options.toastId))\n    ? options.toastId\n    : genToastId();\n}\n\n/**\n * If the container is not mounted, the toast is enqueued\n */\nfunction dispatchToast<TData>(\n  content: ToastContent<TData>,\n  options: NotValidatedToastProps\n): Id {\n  pushToast(content, options);\n  return options.toastId;\n}\n\n/**\n * Merge provided options with the defaults settings and generate the toastId\n */\nfunction mergeOptions<TData>(type: string, options?: ToastOptions<TData>) {\n  return {\n    ...options,\n    type: (options && options.type) || type,\n    toastId: getToastId(options)\n  } as NotValidatedToastProps;\n}\n\nfunction createToastByType(type: string) {\n  return <TData = unknown>(\n    content: ToastContent<TData>,\n    options?: ToastOptions<TData>\n  ) => dispatchToast(content, mergeOptions(type, options));\n}\n\nfunction toast<TData = unknown>(\n  content: ToastContent<TData>,\n  options?: ToastOptions<TData>\n) {\n  return dispatchToast(content, mergeOptions(Type.DEFAULT, options));\n}\n\ntoast.loading = <TData = unknown>(\n  content: ToastContent<TData>,\n  options?: ToastOptions<TData>\n) =>\n  dispatchToast(\n    content,\n    mergeOptions(Type.DEFAULT, {\n      isLoading: true,\n      autoClose: false,\n      closeOnClick: false,\n      closeButton: false,\n      draggable: false,\n      ...options\n    })\n  );\n\nexport interface ToastPromiseParams<\n  TData = unknown,\n  TError = unknown,\n  TPending = unknown\n> {\n  pending?: string | UpdateOptions<TPending>;\n  success?: string | UpdateOptions<TData>;\n  error?: string | UpdateOptions<TError>;\n}\n\nfunction handlePromise<TData = unknown, TError = unknown, TPending = unknown>(\n  promise: Promise<TData> | (() => Promise<TData>),\n  { pending, error, success }: ToastPromiseParams<TData, TError, TPending>,\n  options?: ToastOptions<TData>\n) {\n  let id: Id;\n\n  if (pending) {\n    id = isStr(pending)\n      ? toast.loading(pending, options)\n      : toast.loading(pending.render, {\n          ...options,\n          ...(pending as ToastOptions)\n        } as ToastOptions<TPending>);\n  }\n\n  const resetParams = {\n    isLoading: null,\n    autoClose: null,\n    closeOnClick: null,\n    closeButton: null,\n    draggable: null\n  };\n\n  const resolver = <T>(\n    type: TypeOptions,\n    input: string | UpdateOptions<T> | undefined,\n    result: T\n  ) => {\n    // Remove the toast if the input has not been provided. This prevents the toast from hanging\n    // in the pending state if a success/error toast has not been provided.\n    if (input == null) {\n      toast.dismiss(id);\n      return;\n    }\n\n    const baseParams = {\n      type,\n      ...resetParams,\n      ...options,\n      data: result\n    };\n    const params = isStr(input) ? { render: input } : input;\n\n    // if the id is set we know that it's an update\n    if (id) {\n      toast.update(id, {\n        ...baseParams,\n        ...params\n      } as UpdateOptions);\n    } else {\n      // using toast.promise without loading\n      toast(params!.render, {\n        ...baseParams,\n        ...params\n      } as ToastOptions<T>);\n    }\n\n    return result;\n  };\n\n  const p = isFn(promise) ? promise() : promise;\n\n  //call the resolvers only when needed\n  p.then(result => resolver('success', success, result)).catch(err =>\n    resolver('error', error, err)\n  );\n\n  return p;\n}\n\n/**\n * Supply a promise or a function that return a promise and the notification will be updated if it resolves or fails.\n * When the promise is pending a spinner is displayed by default.\n * `toast.promise` returns the provided promise so you can chain it.\n *\n * Simple example:\n *\n * ```\n * toast.promise(MyPromise,\n *  {\n *    pending: 'Promise is pending',\n *    success: 'Promise resolved 👌',\n *    error: 'Promise rejected 🤯'\n *  }\n * )\n *\n * ```\n *\n * Advanced usage:\n * ```\n * toast.promise<{name: string}, {message: string}, undefined>(\n *    resolveWithSomeData,\n *    {\n *      pending: {\n *        render: () => \"I'm loading\",\n *        icon: false,\n *      },\n *      success: {\n *        render: ({data}) => `Hello ${data.name}`,\n *        icon: \"🟢\",\n *      },\n *      error: {\n *        render({data}){\n *          // When the promise reject, data will contains the error\n *          return <MyErrorComponent message={data.message} />\n *        }\n *      }\n *    }\n * )\n * ```\n */\ntoast.promise = handlePromise;\ntoast.success = createToastByType(Type.SUCCESS);\ntoast.info = createToastByType(Type.INFO);\ntoast.error = createToastByType(Type.ERROR);\ntoast.warning = createToastByType(Type.WARNING);\ntoast.warn = toast.warning;\ntoast.dark = (content: ToastContent, options?: ToastOptions) =>\n  dispatchToast(\n    content,\n    mergeOptions(Type.DEFAULT, {\n      theme: 'dark',\n      ...options\n    })\n  );\n\ninterface RemoveParams {\n  id?: Id;\n  containerId: Id;\n}\n\nfunction dismiss(params: RemoveParams): void;\nfunction dismiss(params?: Id): void;\nfunction dismiss(params?: Id | RemoveParams) {\n  removeToast(params);\n}\n\n/**\n * Remove toast programmatically\n *\n * - Remove all toasts:\n * ```\n * toast.dismiss()\n * ```\n *\n * - Remove all toasts that belongs to a given container\n * ```\n * toast.dismiss({ container: \"123\" })\n * ```\n *\n * - Remove toast that has a given id regardless the container\n * ```\n * toast.dismiss({ id: \"123\" })\n * ```\n *\n * - Remove toast that has a given id for a specific container\n * ```\n * toast.dismiss({ id: \"123\", containerId: \"12\" })\n * ```\n */\ntoast.dismiss = dismiss;\n\n/**\n * Clear waiting queue when limit is used\n */\ntoast.clearWaitingQueue = clearWaitingQueue;\n\n/**\n * Check if a toast is active\n *\n * - Check regardless the container\n * ```\n * toast.isActive(\"123\")\n * ```\n *\n * - Check in a specific container\n * ```\n * toast.isActive(\"123\", \"containerId\")\n * ```\n */\ntoast.isActive = isToastActive;\n\n/**\n * Update a toast, see https://fkhadra.github.io/react-toastify/update-toast/ for more\n *\n * Example:\n * ```\n * // With a string\n * toast.update(toastId, {\n *    render: \"New content\",\n *    type: \"info\",\n * });\n *\n * // Or with a component\n * toast.update(toastId, {\n *    render: MyComponent\n * });\n *\n * // Or a function\n * toast.update(toastId, {\n *    render: () => <div>New content</div>\n * });\n *\n * // Apply a transition\n * toast.update(toastId, {\n *   render: \"New Content\",\n *   type: toast.TYPE.INFO,\n *   transition: Rotate\n * })\n * ```\n */\ntoast.update = <TData = unknown>(\n  toastId: Id,\n  options: UpdateOptions<TData> = {}\n) => {\n  const toast = getToast(toastId, options as ToastOptions);\n\n  if (toast) {\n    const { props: oldOptions, content: oldContent } = toast;\n\n    const nextOptions = {\n      delay: 100,\n      ...oldOptions,\n      ...options,\n      toastId: options.toastId || toastId,\n      updateId: genToastId()\n    } as ToastProps & UpdateOptions;\n\n    if (nextOptions.toastId !== toastId) nextOptions.staleId = toastId;\n\n    const content = nextOptions.render || oldContent;\n    delete nextOptions.render;\n\n    dispatchToast(content, nextOptions);\n  }\n};\n\n/**\n * Used for controlled progress bar. It will automatically close the notification.\n *\n * If you don't want your notification to be clsoed when the timer is done you should use `toast.update` instead as follow instead:\n *\n * ```\n * toast.update(id, {\n *    progress: null, // remove controlled progress bar\n *    render: \"ok\",\n *    type: \"success\",\n *    autoClose: 5000 // set autoClose to the desired value\n *   });\n * ```\n */\ntoast.done = (id: Id) => {\n  toast.update(id, {\n    progress: 1\n  });\n};\n\n/**\n * Subscribe to change when a toast is added, removed and updated\n *\n * Usage:\n * ```\n * const unsubscribe = toast.onChange((payload) => {\n *   switch (payload.status) {\n *   case \"added\":\n *     // new toast added\n *     break;\n *   case \"updated\":\n *     // toast updated\n *     break;\n *   case \"removed\":\n *     // toast has been removed\n *     break;\n *   }\n * })\n * ```\n */\ntoast.onChange = onChange;\n\n/**\n * Play a toast(s) timer progammatically\n *\n * Usage:\n *\n * - Play all toasts\n * ```\n * toast.play()\n * ```\n *\n * - Play all toasts for a given container\n * ```\n * toast.play({ containerId: \"123\" })\n * ```\n *\n * - Play toast that has a given id regardless the container\n * ```\n * toast.play({ id: \"123\" })\n * ```\n *\n * - Play toast that has a given id for a specific container\n * ```\n * toast.play({ id: \"123\", containerId: \"12\" })\n * ```\n */\ntoast.play = (opts?: IdOpts) => toggleToast(true, opts);\n\n/**\n * Pause a toast(s) timer progammatically\n *\n * Usage:\n *\n * - Pause all toasts\n * ```\n * toast.pause()\n * ```\n *\n * - Pause all toasts for a given container\n * ```\n * toast.pause({ containerId: \"123\" })\n * ```\n *\n * - Pause toast that has a given id regardless the container\n * ```\n * toast.pause({ id: \"123\" })\n * ```\n *\n * - Pause toast that has a given id for a specific container\n * ```\n * toast.pause({ id: \"123\", containerId: \"12\" })\n * ```\n */\ntoast.pause = (opts?: IdOpts) => toggleToast(false, opts);\n\nexport { toast };\n","import { useEffect, useLayoutEffect } from 'react';\n\nexport const useIsomorphicLayoutEffect =\n  typeof window !== 'undefined' ? useLayoutEffect : useEffect;\n","import React, { cloneElement, isValidElement } from 'react';\n\nimport { Theme, ToastProps, TypeOptions } from '../types';\nimport { Default, isFn } from '../utils';\n\n/**\n * Used when providing custom icon\n */\nexport interface IconProps {\n  theme: Theme;\n  type: TypeOptions;\n  isLoading?: boolean;\n}\n\nexport type BuiltInIconProps = React.SVGProps<SVGSVGElement> & IconProps;\n\nconst Svg: React.FC<BuiltInIconProps> = ({\n  theme,\n  type,\n  isLoading,\n  ...rest\n}) => (\n  <svg\n    viewBox=\"0 0 24 24\"\n    width=\"100%\"\n    height=\"100%\"\n    fill={\n      theme === 'colored'\n        ? 'currentColor'\n        : `var(--toastify-icon-color-${type})`\n    }\n    {...rest}\n  />\n);\n\nfunction Warning(props: BuiltInIconProps) {\n  return (\n    <Svg {...props}>\n      <path d=\"M23.32 17.191L15.438 2.184C14.728.833 13.416 0 11.996 0c-1.42 0-2.733.833-3.443 2.184L.533 17.448a4.744 4.744 0 000 4.368C1.243 23.167 2.555 24 3.975 24h16.05C22.22 24 24 22.044 24 19.632c0-.904-.251-1.746-.68-2.44zm-9.622 1.46c0 1.033-.724 1.823-1.698 1.823s-1.698-.79-1.698-1.822v-.043c0-1.028.724-1.822 1.698-1.822s1.698.79 1.698 1.822v.043zm.039-12.285l-.84 8.06c-.057.581-.408.943-.897.943-.49 0-.84-.367-.896-.942l-.84-8.065c-.057-.624.25-1.095.779-1.095h1.91c.528.005.84.476.784 1.1z\" />\n    </Svg>\n  );\n}\n\nfunction Info(props: BuiltInIconProps) {\n  return (\n    <Svg {...props}>\n      <path d=\"M12 0a12 12 0 1012 12A12.013 12.013 0 0012 0zm.25 5a1.5 1.5 0 11-1.5 1.5 1.5 1.5 0 011.5-1.5zm2.25 13.5h-4a1 1 0 010-2h.75a.25.25 0 00.25-.25v-4.5a.25.25 0 00-.25-.25h-.75a1 1 0 010-2h1a2 2 0 012 2v4.75a.25.25 0 00.25.25h.75a1 1 0 110 2z\" />\n    </Svg>\n  );\n}\n\nfunction Success(props: BuiltInIconProps) {\n  return (\n    <Svg {...props}>\n      <path d=\"M12 0a12 12 0 1012 12A12.014 12.014 0 0012 0zm6.927 8.2l-6.845 9.289a1.011 1.011 0 01-1.43.188l-4.888-3.908a1 1 0 111.25-1.562l4.076 3.261 6.227-8.451a1 1 0 111.61 1.183z\" />\n    </Svg>\n  );\n}\n\nfunction Error(props: BuiltInIconProps) {\n  return (\n    <Svg {...props}>\n      <path d=\"M11.983 0a12.206 12.206 0 00-8.51 3.653A11.8 11.8 0 000 12.207 11.779 11.779 0 0011.8 24h.214A12.111 12.111 0 0024 11.791 11.766 11.766 0 0011.983 0zM10.5 16.542a1.476 1.476 0 011.449-1.53h.027a1.527 1.527 0 011.523 1.47 1.475 1.475 0 01-1.449 1.53h-.027a1.529 1.529 0 01-1.523-1.47zM11 12.5v-6a1 1 0 012 0v6a1 1 0 11-2 0z\" />\n    </Svg>\n  );\n}\n\nfunction Spinner() {\n  return <div className={`${Default.CSS_NAMESPACE}__spinner`} />;\n}\n\nexport const Icons = {\n  info: Info,\n  warning: Warning,\n  success: Success,\n  error: Error,\n  spinner: Spinner\n};\n\nconst maybeIcon = (type: string): type is keyof typeof Icons => type in Icons;\n\nexport type IconParams = Pick<\n  ToastProps,\n  'theme' | 'icon' | 'type' | 'isLoading'\n>;\n\nexport function getIcon({ theme, type, isLoading, icon }: IconParams) {\n  let Icon: React.ReactNode = null;\n  const iconProps = { theme, type };\n\n  if (icon === false) {\n    // hide\n  } else if (isFn(icon)) {\n    Icon = icon({ ...iconProps, isLoading });\n  } else if (isValidElement(icon)) {\n    Icon = cloneElement(icon, iconProps);\n  } else if (isLoading) {\n    Icon = Icons.spinner();\n  } else if (maybeIcon(type)) {\n    Icon = Icons[type](iconProps);\n  }\n\n  return Icon;\n}\n","import cx from 'clsx';\nimport React, { cloneElement, isValidElement, ReactNode } from 'react';\n\nimport { useToast } from '../hooks/useToast';\nimport { ToastProps } from '../types';\nimport { Default, isFn } from '../utils';\nimport { CloseButton } from './CloseButton';\nimport { ProgressBar } from './ProgressBar';\nimport { getIcon } from './Icons';\n\nexport const Toast: React.FC<ToastProps> = props => {\n  const {\n    isRunning,\n    preventExitTransition,\n    toastRef,\n    eventHandlers,\n    playToast\n  } = useToast(props);\n  const {\n    closeButton,\n    children,\n    autoClose,\n    onClick,\n    type,\n    hideProgressBar,\n    closeToast,\n    transition: Transition,\n    position,\n    className,\n    style,\n    bodyClassName,\n    bodyStyle,\n    progressClassName,\n    progressStyle,\n    updateId,\n    role,\n    progress,\n    rtl,\n    toastId,\n    deleteToast,\n    isIn,\n    isLoading,\n    closeOnClick,\n    theme\n  } = props;\n  const defaultClassName = cx(\n    `${Default.CSS_NAMESPACE}__toast`,\n    `${Default.CSS_NAMESPACE}__toast-theme--${theme}`,\n    `${Default.CSS_NAMESPACE}__toast--${type}`,\n    {\n      [`${Default.CSS_NAMESPACE}__toast--rtl`]: rtl\n    },\n    {\n      [`${Default.CSS_NAMESPACE}__toast--close-on-click`]: closeOnClick\n    }\n  );\n  const cssClasses = isFn(className)\n    ? className({\n        rtl,\n        position,\n        type,\n        defaultClassName\n      })\n    : cx(defaultClassName, className);\n  const icon = getIcon(props);\n  const isProgressControlled = !!progress || !autoClose;\n\n  const closeButtonProps = { closeToast, type, theme };\n  let Close: React.ReactNode = null;\n\n  if (closeButton === false) {\n    // hide\n  } else if (isFn(closeButton)) {\n    Close = closeButton(closeButtonProps);\n  } else if (isValidElement(closeButton)) {\n    Close = cloneElement(closeButton, closeButtonProps);\n  } else {\n    Close = CloseButton(closeButtonProps);\n  }\n\n  return (\n    <Transition\n      isIn={isIn}\n      done={deleteToast}\n      position={position}\n      preventExitTransition={preventExitTransition}\n      nodeRef={toastRef}\n      playToast={playToast}\n    >\n      <div\n        id={toastId as string}\n        onClick={onClick}\n        data-in={isIn}\n        className={cssClasses}\n        {...eventHandlers}\n        style={style}\n        ref={toastRef}\n      >\n        <div\n          {...(isIn && { role: role })}\n          className={\n            isFn(bodyClassName)\n              ? bodyClassName({ type })\n              : cx(`${Default.CSS_NAMESPACE}__toast-body`, bodyClassName)\n          }\n          style={bodyStyle}\n        >\n          {icon != null && (\n            <div\n              className={cx(`${Default.CSS_NAMESPACE}__toast-icon`, {\n                [`${Default.CSS_NAMESPACE}--animate-icon ${Default.CSS_NAMESPACE}__zoom-enter`]:\n                  !isLoading\n              })}\n            >\n              {icon}\n            </div>\n          )}\n          <div>{children as ReactNode}</div>\n        </div>\n        {Close}\n        <ProgressBar\n          {...(updateId && !isProgressControlled\n            ? { key: `pb-${updateId}` }\n            : {})}\n          rtl={rtl}\n          theme={theme}\n          delay={autoClose as number}\n          isRunning={isRunning}\n          isIn={isIn}\n          closeToast={closeToast}\n          hide={hideProgressBar}\n          type={type}\n          style={progressStyle}\n          className={progressClassName}\n          controlledProgress={isProgressControlled}\n          progress={progress || 0}\n        />\n      </div>\n    </Transition>\n  );\n};\n","import React from 'react';\nimport { Default } from '../utils';\nimport { Theme, TypeOptions } from '../types';\n\nexport interface CloseButtonProps {\n  closeToast: (e: React.MouseEvent<HTMLElement>) => void;\n  type: TypeOptions;\n  ariaLabel?: string;\n  theme: Theme;\n}\n\nexport function CloseButton({\n  closeToast,\n  theme,\n  ariaLabel = 'close'\n}: CloseButtonProps) {\n  return (\n    <button\n      className={`${Default.CSS_NAMESPACE}__close-button ${Default.CSS_NAMESPACE}__close-button--${theme}`}\n      type=\"button\"\n      onClick={e => {\n        e.stopPropagation();\n        closeToast(e);\n      }}\n      aria-label={ariaLabel}\n    >\n      <svg aria-hidden=\"true\" viewBox=\"0 0 14 16\">\n        <path\n          fillRule=\"evenodd\"\n          d=\"M7.71 8.23l3.75 3.75-1.48 1.48-3.75-3.75-3.75 3.75L1 11.98l3.75-3.75L1 4.48 2.48 3l3.75 3.75L9.98 3l1.48 1.48-3.75 3.75z\"\n        />\n      </svg>\n    </button>\n  );\n}\n","import { Default, cssTransition } from '../utils';\n\nconst getConfig = (animationName: string, appendPosition = false) => ({\n  enter: `${Default.CSS_NAMESPACE}--animate ${Default.CSS_NAMESPACE}__${animationName}-enter`,\n  exit: `${Default.CSS_NAMESPACE}--animate ${Default.CSS_NAMESPACE}__${animationName}-exit`,\n  appendPosition\n});\n\nconst Bounce = cssTransition(getConfig('bounce', true));\n\nconst Slide = cssTransition(getConfig('slide', true));\n\nconst Zoom = cssTransition(getConfig('zoom'));\n\nconst Flip = cssTransition(getConfig('flip'));\n\nexport { Bounce, Slide, Zoom, Flip };\n","import cx from 'clsx';\nimport React, { useRef, useState } from 'react';\n\nimport { toast } from '../core';\nimport { useToastContainer } from '../hooks/useToastContainer';\nimport { useIsomorphicLayoutEffect } from '../hooks/useIsomorphicLayoutEffect';\nimport { ToastContainerProps, ToastPosition } from '../types';\nimport { Default, Direction, isFn, parseClassName } from '../utils';\nimport { Toast } from './Toast';\nimport { Bounce } from './Transitions';\n\nexport const defaultProps: ToastContainerProps = {\n  position: 'top-right',\n  transition: Bounce,\n  autoClose: 5000,\n  closeButton: true,\n  pauseOnHover: true,\n  pauseOnFocusLoss: true,\n  draggable: 'touch',\n  draggablePercent: Default.DRAGGABLE_PERCENT as number,\n  draggableDirection: Direction.X,\n  role: 'alert',\n  theme: 'light'\n};\n\nexport function ToastContainer(props: ToastContainerProps) {\n  let containerProps: ToastContainerProps = {\n    ...defaultProps,\n    ...props\n  };\n  const stacked = props.stacked;\n  const [collapsed, setIsCollapsed] = useState(true);\n  const containerRef = useRef<HTMLDivElement>(null);\n  const { getToastToRender, isToastActive, count } =\n    useToastContainer(containerProps);\n  const { className, style, rtl, containerId } = containerProps;\n\n  function getClassName(position: ToastPosition) {\n    const defaultClassName = cx(\n      `${Default.CSS_NAMESPACE}__toast-container`,\n      `${Default.CSS_NAMESPACE}__toast-container--${position}`,\n      { [`${Default.CSS_NAMESPACE}__toast-container--rtl`]: rtl }\n    );\n    return isFn(className)\n      ? className({\n          position,\n          rtl,\n          defaultClassName\n        })\n      : cx(defaultClassName, parseClassName(className));\n  }\n\n  function collapseAll() {\n    if (stacked) {\n      setIsCollapsed(true);\n      toast.play();\n    }\n  }\n\n  useIsomorphicLayoutEffect(() => {\n    if (stacked) {\n      const nodes = containerRef.current!.querySelectorAll('[data-in=\"true\"]');\n      const gap = 12;\n      const isTop = containerProps.position?.includes('top');\n      let usedHeight = 0;\n      let prevS = 0;\n\n      Array.from(nodes)\n        .reverse()\n        .forEach((n, i) => {\n          const node = n as HTMLElement;\n          node.classList.add(`${Default.CSS_NAMESPACE}__toast--stacked`);\n\n          if (i > 0) node.dataset.collapsed = `${collapsed}`;\n\n          if (!node.dataset.pos) node.dataset.pos = isTop ? 'top' : 'bot';\n\n          const y =\n            usedHeight * (collapsed ? 0.2 : 1) + (collapsed ? 0 : gap * i);\n\n          node.style.setProperty('--y', `${isTop ? y : y * -1}px`);\n          node.style.setProperty('--g', `${gap}`);\n          node.style.setProperty('--s', `${1 - (collapsed ? prevS : 0)}`);\n\n          usedHeight += node.offsetHeight;\n          prevS += 0.025;\n        });\n    }\n  }, [collapsed, count, stacked]);\n\n  return (\n    <div\n      ref={containerRef}\n      className={Default.CSS_NAMESPACE as string}\n      id={containerId as string}\n      onMouseEnter={() => {\n        if (stacked) {\n          setIsCollapsed(false);\n          toast.pause();\n        }\n      }}\n      onMouseLeave={collapseAll}\n    >\n      {getToastToRender((position, toastList) => {\n        const containerStyle: React.CSSProperties = !toastList.length\n          ? { ...style, pointerEvents: 'none' }\n          : { ...style };\n\n        return (\n          <div\n            className={getClassName(position)}\n            style={containerStyle}\n            key={`container-${position}`}\n          >\n            {toastList.map(({ content, props: toastProps }) => {\n              return (\n                <Toast\n                  {...toastProps}\n                  stacked={stacked}\n                  collapseAll={collapseAll}\n                  isIn={isToastActive(\n                    toastProps.toastId,\n                    toastProps.containerId\n                  )}\n                  style={toastProps.style}\n                  key={`toast-${toastProps.key}`}\n                >\n                  {content}\n                </Toast>\n              );\n            })}\n          </div>\n        );\n      })}\n    </div>\n  );\n}\n"],"names":["isNum","v","isNaN","isStr","isFn","parseClassName","canBeRendered","content","isValidElement","collapseToast","node","done","duration","scrollHeight","style","requestAnimationFrame","minHeight","height","transition","padding","margin","setTimeout","cssTransition","enter","exit","appendPosition","collapse","collapseDuration","children","position","preventExitTransition","nodeRef","isIn","playToast","enterClassName","exitClassName","animationStep","useRef","useLayoutEffect","current","classToToken","split","onEntered","e","target","removeEventListener","type","classList","remove","add","addEventListener","useEffect","onExited","className","React","toToastItem","toast","status","containerId","props","id","toastId","theme","data","isLoading","icon","containers","Map","renderQueue","listeners","Set","dispatchChanges","forEach","cb","hasContainers","size","isToastActive","get","_containers$get2","isActive","c","pushToast","options","push","buildToast","toggleToast","opt","toggle","useToastContainer","subscribe","getSnapshot","setProps","notify","container","containerProps","toastKey","toastCount","queue","activeToasts","snapshot","toasts","Array","from","values","removeToast","filter","addActiveToast","onOpen","updateId","isNew","staleId","delete","set","observe","t","clearQueue","length","_ref","containerMismatch","isDuplicate","has","shouldIgnoreToast","delay","closeToast","isNotAnUpdate","toastProps","toastStyle","key","Object","fromEntries","entries","_ref2","_","toastClassName","bodyClassName","progressClassName","autoClose","toastAutoClose","containerAutoClose","deleteToast","toastToRemove","onClose","shift","closeButton","toastContent","cloneElement","activeToast","limit","p","setToggle","fn","some","newestOnTop","reverse","createContainerObserver","unobserve","_containers$get5","registerContainer","useSyncExternalStore","getToastToRender","toRender","count","useToast","isRunning","setIsRunning","useState","setPreventExitTransition","toastRef","drag","start","delta","removalDistance","canCloseOnClick","canDrag","didMove","pauseOnHover","onClick","closeOnClick","opts","pauseToast","onDragMove","draggableDirection","clientX","clientY","transform","opacity","Math","abs","onDragEnd","document","collapseAll","removeProperty","pauseOnFocusLoss","hasFocus","window","eventHandlers","onPointerDown","draggable","pointerType","offsetWidth","draggablePercent","offsetHeight","onPointerUp","top","bottom","left","right","getBoundingClientRect","nativeEvent","onMouseEnter","stacked","onMouseLeave","ProgressBar","hide","userStyle","controlledProgress","progress","rtl","isHidden","animationDuration","animationPlayState","defaultClassName","cx","classNames","animationEvent","role","TOAST_ID","genToastId","getToastId","dispatchToast","mergeOptions","createToastByType","loading","promise","pending","error","success","render","resetParams","resolver","input","result","dismiss","baseParams","params","update","then","catch","err","info","warning","warn","dark","clearWaitingQueue","_containers$get","getToast","oldOptions","oldContent","nextOptions","onChange","play","pause","useIsomorphicLayoutEffect","Svg","rest","viewBox","width","fill","Icons","d","spinner","Toast","hideProgressBar","Transition","bodyStyle","progressStyle","cssClasses","Icon","iconProps","maybeIcon","getIcon","isProgressControlled","closeButtonProps","Close","ariaLabel","stopPropagation","fillRule","CloseButton","ref","getConfig","animationName","Bounce","Slide","Zoom","Flip","defaultProps","collapsed","setIsCollapsed","containerRef","getClassName","nodes","querySelectorAll","gap","isTop","_containerProps$posit","includes","usedHeight","prevS","n","i","dataset","pos","y","setProperty","toastList","containerStyle","pointerEvents","map"],"mappings":"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"}