{"version":3,"file":"useToastContextValues.mjs","sources":["../../../../src/components/Toast/useToastContextValues.ts"],"sourcesContent":["import { useCallback, useMemo, useState } from 'react'\n\nimport { noop } from '~/src/utils/function'\n\nimport {\n  type OnDismissCallback,\n  type ToastContent,\n  type ToastContextValue,\n  type ToastId,\n  type ToastOptions,\n  type ToastType,\n} from './Toast.types'\nimport ToastService from './ToastService'\n\ninterface UseToastContextValuesReturns extends ToastContextValue {\n  leftToasts: ToastType[]\n  rightToasts: ToastType[]\n  dismiss: (id: ToastId, callback?: OnDismissCallback) => void\n}\n\n/**\n * NOTE(@sol): The ToastService is enough to fulfill the responsibility of toast.\n * However, wrapping this for ToastProvider to create new features does not need to be done in bezier-react.\n * It would have been better to implement this function in service needed it of use.\n * Therefore, it would be good to pay attention to this part in a future update.\n */\n/**\n * @deprecated Implement this in your service with ToastProvider, not here.\n */\nfunction useToastContextValues(): UseToastContextValuesReturns {\n  const leftToastService = useMemo(() => new ToastService(), [])\n  const rightToastService = useMemo(() => new ToastService(), [])\n  const [leftToasts, setLeftToasts] = useState<ToastType[]>([])\n  const [rightToasts, setRightToasts] = useState<ToastType[]>([])\n\n  const add = useCallback(\n    (content: ToastContent, options?: ToastOptions) => {\n      let result = ''\n      if (options?.rightSide) {\n        result = rightToastService.add(content, options)\n        setRightToasts(rightToastService.getToasts())\n      } else {\n        result = leftToastService.add(content, options)\n        setLeftToasts(leftToastService.getToasts())\n      }\n      return result\n    },\n    [leftToastService, rightToastService]\n  )\n\n  const update = useCallback(\n    (toastId: ToastId, content: ToastContent, options?: ToastOptions) => {\n      let result = ''\n      if (options?.rightSide) {\n        result = rightToastService.update(toastId, content, options)\n        setRightToasts(rightToastService.getToasts())\n      } else {\n        result = leftToastService.update(toastId, content, options)\n        setLeftToasts(leftToastService.getToasts())\n      }\n      return result\n    },\n    [leftToastService, rightToastService]\n  )\n\n  const remove = useCallback(\n    (toastId: ToastId) => {\n      if (leftToastService.remove(toastId)) {\n        setLeftToasts(leftToastService.getToasts())\n      }\n      if (rightToastService.remove(toastId)) {\n        setRightToasts(rightToastService.getToasts())\n      }\n    },\n    [leftToastService, rightToastService]\n  )\n\n  const removeAll = useCallback(() => {\n    leftToastService.removeAll()\n    rightToastService.removeAll()\n    setLeftToasts(leftToastService.getToasts())\n    setRightToasts(rightToastService.getToasts())\n  }, [leftToastService, rightToastService])\n\n  const dismiss = useCallback(\n    (toastId: ToastId, callback: OnDismissCallback = noop) => {\n      callback(toastId)\n      remove(toastId)\n    },\n    [remove]\n  )\n\n  return useMemo<UseToastContextValuesReturns>(\n    () => ({\n      add,\n      update,\n      remove,\n      removeAll,\n      leftToasts,\n      rightToasts,\n      dismiss,\n    }),\n    [add, update, remove, removeAll, leftToasts, rightToasts, dismiss]\n  )\n}\n\nexport default useToastContextValues\n"],"names":["useToastContextValues","leftToastService","useMemo","ToastService","rightToastService","leftToasts","setLeftToasts","useState","rightToasts","setRightToasts","add","useCallback","content","options","result","rightSide","getToasts","update","toastId","remove","removeAll","dismiss","callback","noop"],"mappings":"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"}