UNPKG

@yamada-ui/react

Version:

React UI components of the Yamada, by the Yamada, for the Yamada built with React and Emotion

74 lines (70 loc) 2.63 kB
"use client"; const require_rolldown_runtime = require('../../_virtual/rolldown_runtime.cjs'); const require_utils_index = require('../../utils/index.cjs'); const require_system_provider = require('../../core/system/system-provider.cjs'); const require_notice = require('./notice.cjs'); const require_notice_provider = require('./notice-provider.cjs'); let react = require("react"); react = require_rolldown_runtime.__toESM(react); let react_jsx_runtime = require("react/jsx-runtime"); react_jsx_runtime = require_rolldown_runtime.__toESM(react_jsx_runtime); let sonner = require("sonner"); sonner = require_rolldown_runtime.__toESM(sonner); //#region src/components/notice/use-notice.tsx /** * `useNotice` is a custom hook that controls the notifications of the application using Sonner. * * @see https://yamada-ui.com/docs/hooks/use-notice */ const useNotice = (options = {}) => { const { getId, getLimit, updateLimit } = require_notice_provider.useNoticeContext(); const { config } = require_system_provider.useSystem(); const systemOptions = (0, react.useMemo)(() => (0, require_utils_index.utils_exports.omitObject)(config.notice ?? {}, ["expand"]), [config]); const defaultOptions = (0, react.useMemo)(() => ({ ...systemOptions, ...options }), [options, systemOptions]); const getOptions = (0, react.useCallback)((options$1) => ({ ...defaultOptions, ...options$1 }), [defaultOptions]); return (0, react.useMemo)(() => { const notice = (options$1 = {}) => { options$1 = getOptions(options$1); const { closable = true, closeStrategy = ["click", "drag"], duration, limit = 3, placement = "start",...props } = options$1; if (limit) { if (getLimit(placement) !== limit) updateLimit({ limit, placement }); } const closeStrategies = (0, require_utils_index.utils_exports.isArray)(closeStrategy) ? closeStrategy : [closeStrategy]; const resolvedOptions = { dismissible: closeStrategies.includes("drag") && closable, duration: duration ?? Number.POSITIVE_INFINITY, toasterId: getId(placement) }; return sonner.toast.custom((id) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_notice.NoticeItem, { ...props, id, closable, closeStrategies }), resolvedOptions); }; notice.close = (id) => sonner.toast.dismiss(id); notice.closeAll = () => sonner.toast.dismiss(); notice.update = (id, options$1) => { sonner.toast.dismiss(id); return notice(options$1); }; return notice; }, [ getLimit, getOptions, getId, updateLimit ]); }; //#endregion exports.useNotice = useNotice; //# sourceMappingURL=use-notice.cjs.map