UNPKG

@madeja-studio/telar

Version:

UI component library by Madeja Studio

2 lines 2.87 kB
"use strict";var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.useToast=exports.ToastContextProvider=void 0;var _toConsumableArray2=_interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));var _asyncToGenerator2=_interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));var _slicedToArray2=_interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));var _objectWithoutProperties2=_interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));var _react=require("react");var _index=require("../Overlay/index.js");var _Toast=require("./Toast.js");var _jsxRuntime=require("react/jsx-runtime");var _excluded=["key"];var _this=void 0,_jsxFileName="/Users/sergio/Development/madeja.studio/telar/src/component/Toast/ToastContextProvider.tsx";var ToastContext=(0,_react.createContext)({});var TIMEOUT_DELAY=5000;var CurrentToast=(0,_react.forwardRef)(function(_ref,ref){var config=_ref.config;var key=config.key,props=(0,_objectWithoutProperties2.default)(config,_excluded);return(0,_jsxRuntime.jsx)(_index.Overlay,{children:(0,_jsxRuntime.jsx)(_Toast.Toast,Object.assign({ref:ref},props),key)});});var ToastContextProvider=exports.ToastContextProvider=function ToastContextProvider(_ref2){var children=_ref2.children;var _useState=(0,_react.useState)(0),_useState2=(0,_slicedToArray2.default)(_useState,2),nextToastId=_useState2[0],setNextToastId=_useState2[1];var _useState3=(0,_react.useState)([]),_useState4=(0,_slicedToArray2.default)(_useState3,2),queue=_useState4[0],setQueue=_useState4[1];var currentToastRef=(0,_react.useRef)(null);var currentToast=queue[0];var closeLastToast=(0,_react.useCallback)((0,_asyncToGenerator2.default)(function*(){var _currentToastRef$curr;if(!currentToastRef.current)return;yield(_currentToastRef$curr=currentToastRef.current)==null?void 0:_currentToastRef$curr.close();setQueue(function(q){return q.slice(1);});}),[]);var showToast=(0,_react.useCallback)(function(config){var timeoutId=setTimeout(closeLastToast,TIMEOUT_DELAY);setQueue(function(q){return[].concat((0,_toConsumableArray2.default)(q),[Object.assign({},config,{key:`toast_${nextToastId}`,onClose:function(){var _onClose=(0,_asyncToGenerator2.default)(function*(){clearTimeout(timeoutId);yield closeLastToast();});function onClose(){return _onClose.apply(this,arguments);}return onClose;}()})]);});setNextToastId(function(id){return id+1;});},[nextToastId,closeLastToast]);return(0,_jsxRuntime.jsxs)(ToastContext.Provider,{value:{showToast:showToast},children:[children,currentToast&&(0,_jsxRuntime.jsx)(CurrentToast,{config:currentToast,ref:currentToastRef})]});};var useToast=exports.useToast=function useToast(){return(0,_react.useContext)(ToastContext);}; //# sourceMappingURL=ToastContextProvider.js.map