{"version":3,"sources":["../src/core/types.ts","../src/core/utils.ts","../src/core/store.ts","../src/core/toast.ts","../src/core/use-toaster.ts","../src/headless/index.ts"],"sourcesContent":["import { CSSProperties } from 'react';\n\nexport type ToastType = 'success' | 'error' | 'loading' | 'blank' | 'custom';\nexport type ToastPosition =\n  | 'top-left'\n  | 'top-center'\n  | 'top-right'\n  | 'bottom-left'\n  | 'bottom-center'\n  | 'bottom-right';\n\nexport type Renderable = JSX.Element | string | null;\n\nexport interface IconTheme {\n  primary: string;\n  secondary: string;\n}\n\nexport type ValueFunction<TValue, TArg> = (arg: TArg) => TValue;\nexport type ValueOrFunction<TValue, TArg> =\n  | TValue\n  | ValueFunction<TValue, TArg>;\n\nconst isFunction = <TValue, TArg>(\n  valOrFunction: ValueOrFunction<TValue, TArg>\n): valOrFunction is ValueFunction<TValue, TArg> =>\n  typeof valOrFunction === 'function';\n\nexport const resolveValue = <TValue, TArg>(\n  valOrFunction: ValueOrFunction<TValue, TArg>,\n  arg: TArg\n): TValue => (isFunction(valOrFunction) ? valOrFunction(arg) : valOrFunction);\n\nexport interface Toast {\n  type: ToastType;\n  id: string;\n  message: ValueOrFunction<Renderable, Toast>;\n  icon?: Renderable;\n  duration?: number;\n  pauseDuration: number;\n  position?: ToastPosition;\n\n  ariaProps: {\n    role: 'status' | 'alert';\n    'aria-live': 'assertive' | 'off' | 'polite';\n  };\n\n  style?: CSSProperties;\n  className?: string;\n  iconTheme?: IconTheme;\n\n  createdAt: number;\n  visible: boolean;\n  height?: number;\n  TOAST_LIMIT?: number;\n}\n\nexport type ToastOptions = Partial<\n  Pick<\n    Toast,\n    | 'id'\n    | 'icon'\n    | 'duration'\n    | 'ariaProps'\n    | 'className'\n    | 'style'\n    | 'position'\n    | 'iconTheme'\n    | 'TOAST_LIMIT'\n  >\n>;\n\nexport type DefaultToastOptions = ToastOptions & {\n  [key in ToastType]?: ToastOptions;\n};\n\nexport interface ToasterProps {\n  position?: ToastPosition;\n  toastOptions?: DefaultToastOptions;\n  reverseOrder?: boolean;\n  gutter?: number;\n  containerStyle?: React.CSSProperties;\n  containerClassName?: string;\n  children?: (toast: Toast) => JSX.Element;\n}\n\nexport interface ToastWrapperProps {\n  id: string;\n  className?: string;\n  style?: React.CSSProperties;\n  onHeightUpdate: (id: string, height: number) => void;\n  children?: React.ReactNode;\n}\n","export const genId = (() => {\n  let count = 0;\n  return () => {\n    return (++count).toString();\n  };\n})();\n\nexport const prefersReducedMotion = (() => {\n  // Cache result\n  let shouldReduceMotion: boolean | undefined = undefined;\n\n  return () => {\n    if (shouldReduceMotion === undefined && typeof window !== 'undefined') {\n      const mediaQuery = matchMedia('(prefers-reduced-motion: reduce)');\n      shouldReduceMotion = !mediaQuery || mediaQuery.matches;\n    }\n    return shouldReduceMotion;\n  };\n})();\n","import { useEffect, useState } from 'react';\nimport { DefaultToastOptions, Toast, ToastType } from './types';\n\nconst TOAST_LIMIT = 20;\n\nexport enum ActionType {\n  ADD_TOAST,\n  UPDATE_TOAST,\n  UPSERT_TOAST,\n  DISMISS_TOAST,\n  REMOVE_TOAST,\n  START_PAUSE,\n  END_PAUSE,\n}\n\ntype Action =\n  | {\n      type: ActionType.ADD_TOAST;\n      toast: Toast;\n    }\n  | {\n      type: ActionType.UPSERT_TOAST;\n      toast: Toast;\n    }\n  | {\n      type: ActionType.UPDATE_TOAST;\n      toast: Partial<Toast>;\n    }\n  | {\n      type: ActionType.DISMISS_TOAST;\n      toastId?: string;\n    }\n  | {\n      type: ActionType.REMOVE_TOAST;\n      toastId?: string;\n    }\n  | {\n      type: ActionType.START_PAUSE;\n      time: number;\n    }\n  | {\n      type: ActionType.END_PAUSE;\n      time: number;\n    };\n\ninterface State {\n  toasts: Toast[];\n  pausedAt: number | undefined;\n}\n\nconst toastTimeouts = new Map<Toast['id'], ReturnType<typeof setTimeout>>();\n\nexport const TOAST_EXPIRE_DISMISS_DELAY = 1000;\n\nconst addToRemoveQueue = (toastId: string) => {\n  if (toastTimeouts.has(toastId)) {\n    return;\n  }\n\n  const timeout = setTimeout(() => {\n    toastTimeouts.delete(toastId);\n    dispatch({\n      type: ActionType.REMOVE_TOAST,\n      toastId: toastId,\n    });\n  }, TOAST_EXPIRE_DISMISS_DELAY);\n\n  toastTimeouts.set(toastId, timeout);\n};\n\nconst clearFromRemoveQueue = (toastId: string) => {\n  const timeout = toastTimeouts.get(toastId);\n  if (timeout) {\n    clearTimeout(timeout);\n  }\n};\n\nexport const reducer = (state: State, action: Action): State => {\n  switch (action.type) {\n    case ActionType.ADD_TOAST:\n      const TOAST_LIMIT_SELF = action.toast.TOAST_LIMIT || TOAST_LIMIT;\n      return {\n        ...state,\n        toasts: [action.toast, ...state.toasts].slice(0, TOAST_LIMIT_SELF),\n      };\n\n    case ActionType.UPDATE_TOAST:\n      //  ! Side effects !\n      if (action.toast.id) {\n        clearFromRemoveQueue(action.toast.id);\n      }\n\n      return {\n        ...state,\n        toasts: state.toasts.map((t) =>\n          t.id === action.toast.id ? { ...t, ...action.toast } : t\n        ),\n      };\n\n    case ActionType.UPSERT_TOAST:\n      const { toast } = action;\n      console.log('toast', toast)\n      console.log('state.toasts', state.toasts)\n\n      return state.toasts.find((t) => t.id === toast.id)\n        ? reducer(state, { type: ActionType.UPDATE_TOAST, toast })\n        : reducer(state, { type: ActionType.ADD_TOAST, toast });\n\n    case ActionType.DISMISS_TOAST:\n      const { toastId } = action;\n\n      // ! Side effects ! - This could be execrated into a dismissToast() action, but I'll keep it here for simplicity\n      if (toastId) {\n        addToRemoveQueue(toastId);\n      } else {\n        state.toasts.forEach((toast) => {\n          addToRemoveQueue(toast.id);\n        });\n      }\n\n      return {\n        ...state,\n        toasts: state.toasts.map((t) =>\n          t.id === toastId || toastId === undefined\n            ? {\n                ...t,\n                visible: false,\n              }\n            : t\n        ),\n      };\n    case ActionType.REMOVE_TOAST:\n      if (action.toastId === undefined) {\n        return {\n          ...state,\n          toasts: [],\n        };\n      }\n      return {\n        ...state,\n        toasts: state.toasts.filter((t) => t.id !== action.toastId),\n      };\n\n    case ActionType.START_PAUSE:\n      return {\n        ...state,\n        pausedAt: action.time,\n      };\n\n    case ActionType.END_PAUSE:\n      const diff = action.time - (state.pausedAt || 0);\n\n      return {\n        ...state,\n        pausedAt: undefined,\n        toasts: state.toasts.map((t) => ({\n          ...t,\n          pauseDuration: t.pauseDuration + diff,\n        })),\n      };\n  }\n};\n\nconst listeners: Array<(state: State) => void> = [];\n\nlet memoryState: State = { toasts: [], pausedAt: undefined };\n\nexport const dispatch = (action: Action) => {\n  memoryState = reducer(memoryState, action);\n  listeners.forEach((listener) => {\n    listener(memoryState);\n  });\n};\n\nexport const defaultTimeouts: {\n  [key in ToastType]: number;\n} = {\n  blank: 4000,\n  error: 4000,\n  success: 2000,\n  loading: Infinity,\n  custom: 4000,\n};\n\nexport const useStore = (toastOptions: DefaultToastOptions = {}): State => {\n  const [state, setState] = useState<State>(memoryState);\n  useEffect(() => {\n    listeners.push(setState);\n    return () => {\n      const index = listeners.indexOf(setState);\n      if (index > -1) {\n        listeners.splice(index, 1);\n      }\n    };\n  }, [state]);\n\n  const mergedToasts = state.toasts.map((t) => ({\n    ...toastOptions,\n    ...toastOptions[t.type],\n    ...t,\n    duration:\n      t.duration ||\n      toastOptions[t.type]?.duration ||\n      toastOptions?.duration ||\n      defaultTimeouts[t.type],\n    style: {\n      ...toastOptions.style,\n      ...toastOptions[t.type]?.style,\n      ...t.style,\n    },\n  }));\n\n  return {\n    ...state,\n    toasts: mergedToasts,\n  };\n};\n","import {\n  Renderable,\n  Toast,\n  ToastOptions,\n  ToastType,\n  DefaultToastOptions,\n  ValueOrFunction,\n  resolveValue,\n} from './types';\nimport { genId } from './utils';\nimport { dispatch, ActionType } from './store';\n\ntype Message = ValueOrFunction<Renderable, Toast>;\n\ntype ToastHandler = (message: Message, options?: ToastOptions) => string;\n\nconst createToast = (\n  message: Message,\n  type: ToastType = 'blank',\n  opts?: ToastOptions\n): Toast => ({\n  createdAt: Date.now(),\n  visible: true,\n  type,\n  ariaProps: {\n    role: 'status',\n    'aria-live': 'polite',\n  },\n  message,\n  pauseDuration: 0,\n  ...opts,\n  id: opts?.id || genId(),\n});\n\nconst createHandler =\n  (type?: ToastType): ToastHandler =>\n    (message, options) => {\n      const toast = createToast(message, type, options);\n      dispatch({ type: ActionType.UPSERT_TOAST, toast });\n      return toast.id;\n    };\n\nconst toast = (message: Message, opts?: ToastOptions) =>\n  createHandler('blank')(message, opts);\n\ntoast.error = createHandler('error');\ntoast.success = createHandler('success');\ntoast.loading = createHandler('loading');\ntoast.custom = createHandler('custom');\n\ntoast.dismiss = (toastId?: string) => {\n  dispatch({\n    type: ActionType.DISMISS_TOAST,\n    toastId,\n  });\n};\n\ntoast.remove = (toastId?: string) =>\n  dispatch({ type: ActionType.REMOVE_TOAST, toastId });\n\ntoast.promise = <T>(\n  promise: Promise<T>,\n  msgs: {\n    loading: Renderable;\n    success: ValueOrFunction<Renderable, T>;\n    error: ValueOrFunction<Renderable, any>;\n  },\n  opts?: DefaultToastOptions\n) => {\n  const id = toast.loading(msgs.loading, { ...opts, ...opts?.loading });\n\n  promise\n    .then((p) => {\n      toast.success(resolveValue(msgs.success, p), {\n        id,\n        ...opts,\n        ...opts?.success,\n      });\n      return p;\n    })\n    .catch((e) => {\n      toast.error(resolveValue(msgs.error, e), {\n        id,\n        ...opts,\n        ...opts?.error,\n      });\n    });\n\n  return promise;\n};\n\nexport { toast };\n","import { useEffect, useCallback } from 'react';\nimport { dispatch, ActionType, useStore } from './store';\nimport { toast } from './toast';\nimport { DefaultToastOptions, Toast, ToastPosition } from './types';\n\nconst updateHeight = (toastId: string, height: number) => {\n  dispatch({\n    type: ActionType.UPDATE_TOAST,\n    toast: { id: toastId, height },\n  });\n};\nconst startPause = () => {\n  dispatch({\n    type: ActionType.START_PAUSE,\n    time: Date.now(),\n  });\n};\n\nexport const useToaster = (toastOptions?: DefaultToastOptions) => {\n  const { toasts, pausedAt } = useStore(toastOptions);\n\n  useEffect(() => {\n    if (pausedAt) {\n      return;\n    }\n\n    const now = Date.now();\n    const timeouts = toasts.map((t) => {\n      if (t.duration === Infinity) {\n        return;\n      }\n\n      const durationLeft =\n        (t.duration || 0) + t.pauseDuration - (now - t.createdAt);\n\n      if (durationLeft < 0) {\n        if (t.visible) {\n          toast.dismiss(t.id);\n        }\n        return;\n      }\n      return setTimeout(() => toast.dismiss(t.id), durationLeft);\n    });\n\n    return () => {\n      timeouts.forEach((timeout) => timeout && clearTimeout(timeout));\n    };\n  }, [toasts, pausedAt]);\n\n  const endPause = useCallback(() => {\n    if (pausedAt) {\n      dispatch({ type: ActionType.END_PAUSE, time: Date.now() });\n    }\n  }, [pausedAt]);\n\n  const calculateOffset = useCallback(\n    (\n      toast: Toast,\n      opts?: {\n        reverseOrder?: boolean;\n        gutter?: number;\n        defaultPosition?: ToastPosition;\n      }\n    ) => {\n      const { reverseOrder = false, gutter = 8, defaultPosition } = opts || {};\n\n      const relevantToasts = toasts.filter(\n        (t) =>\n          (t.position || defaultPosition) ===\n            (toast.position || defaultPosition) && t.height\n      );\n      const toastIndex = relevantToasts.findIndex((t) => t.id === toast.id);\n      const toastsBefore = relevantToasts.filter(\n        (toast, i) => i < toastIndex && toast.visible\n      ).length;\n\n      const offset = relevantToasts\n        .filter((t) => t.visible)\n        .slice(...(reverseOrder ? [toastsBefore + 1] : [0, toastsBefore]))\n        .reduce((acc, t) => acc + (t.height || 0) + gutter, 0);\n\n      return offset;\n    },\n    [toasts]\n  );\n\n  return {\n    toasts,\n    handlers: {\n      updateHeight,\n      startPause,\n      endPause,\n      calculateOffset,\n    },\n  };\n};\n","import { toast } from '../core/toast';\n\nexport type {\n  DefaultToastOptions,\n  IconTheme,\n  Renderable,\n  Toast,\n  ToasterProps,\n  ToastOptions,\n  ToastPosition,\n  ToastType,\n  ValueFunction,\n  ValueOrFunction,\n} from '../core/types';\n\nexport { resolveValue } from '../core/types';\nexport { useToaster } from '../core/use-toaster';\nexport { useStore as useToasterStore } from '../core/store';\n\nexport { toast };\nexport default toast;\n"],"mappings":"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","names":["isFunction","valOrFunction","resolveValue","arg","genId","count","prefersReducedMotion","shouldReduceMotion","mediaQuery","useEffect","useState","TOAST_LIMIT","toastTimeouts","TOAST_EXPIRE_DISMISS_DELAY","addToRemoveQueue","toastId","timeout","dispatch","clearFromRemoveQueue","reducer","state","action","TOAST_LIMIT_SELF","TOAST_LIMIT","t","toast","diff","listeners","memoryState","listener","defaultTimeouts","useStore","toastOptions","setState","useState","useEffect","index","mergedToasts","_a","_b","createToast","message","type","opts","genId","createHandler","options","toast","dispatch","toastId","promise","msgs","id","p","resolveValue","e","useEffect","useCallback","updateHeight","toastId","height","dispatch","startPause","useToaster","toastOptions","toasts","pausedAt","useStore","useEffect","now","timeouts","t","durationLeft","toast","timeout","endPause","useCallback","calculateOffset","opts","reverseOrder","gutter","defaultPosition","relevantToasts","toastIndex","toastsBefore","i","acc","headless_default","toast"]}