react-errorr
Version:
A react popup error fully customizable
73 lines (72 loc) • 3.03 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const tslib_1 = require("tslib");
const jsx_runtime_1 = require("react/jsx-runtime");
const react_1 = require("react");
const ErrorrContext_contectCreatior_1 = tslib_1.__importDefault(require("./ErrorrContext.contectCreatior"));
const lodash_1 = tslib_1.__importDefault(require("lodash"));
const data_1 = require("../data/data");
const ErrorrContextProvider = ({ children, options }) => {
const errorrs = (0, react_1.useRef)([]);
const getOptions = (errorrOptions) => {
const defaultOptions = JSON.parse(JSON.stringify(data_1.defaultErrorOptions));
const baseOptions = lodash_1.default.merge(defaultOptions, options || {});
return lodash_1.default.merge(baseOptions, errorrOptions || {});
};
const loadErrorr = (errorr) => {
errorr.options = getOptions(errorr.options || {});
errorrs.current = [...errorrs.current, errorr];
};
const updateErrorr = (errorr) => {
errorr.options = getOptions(errorr.options || {});
errorrs.current = errorrs.current.map((stateErrorr) => stateErrorr.name === errorr.name ? errorr : stateErrorr);
};
const forceRemoveErrorr = (0, react_1.useCallback)((name) => {
const foundErrorr = errorrs.current.find((errorr) => errorr.name === name);
if (!foundErrorr) {
if (options?.debug)
console.error(`Errorr not found for name: ${name}`);
return;
}
foundErrorr.forceRemove();
errorrs.current = errorrs.current.map((errorr) => {
if (errorr.name === name) {
errorr.isActive = false;
}
return errorr;
});
}, [options?.debug]);
const activateErrorr = (0, react_1.useCallback)((name) => {
const foundErrorr = errorrs.current.find((errorr) => errorr.name === name);
if (!foundErrorr) {
if (options?.debug)
console.error(`Errorr not found for name: ${name}`);
return;
}
foundErrorr.activate();
errorrs.current = errorrs.current.map((errorr) => {
if (errorr.name === name) {
errorr.isActive = true;
}
return errorr;
});
setTimeout(() => {
errorrs.current = errorrs.current.map((errorr) => {
if (errorr.name === name) {
errorr.isActive = false;
}
return errorr;
});
}, foundErrorr.options.activeTime);
}, [options?.debug]);
const contextValue = {
errorrs: errorrs.current,
loadErrorr,
updateErrorr,
activateErrorr,
forceRemoveErrorr,
getOptions,
};
return ((0, jsx_runtime_1.jsx)(ErrorrContext_contectCreatior_1.default.Provider, { value: contextValue, children: children }));
};
exports.default = ErrorrContextProvider;