useforceupdatefromanywhere
Version:
[](https://www.npmjs.com/package/force2update?activeTab=versions) [](https://www.npm
61 lines (49 loc) • 2.15 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
var React = require('react');
var React__default = _interopDefault(React);
var useForceUpdate = function useForceUpdate() {
var _useState = React.useState(Object.create(null)),
force2Update = _useState[1];
var forceUpdate = React.useCallback(function () {
force2Update(Object.create(null));
}, [force2Update]);
return forceUpdate;
};
var useIsomorphicLayoutEffect = typeof window !== 'undefined' ? React__default.useLayoutEffect : React__default.useEffect;
var useForceUpdateFromAnywhere = function useForceUpdateFromAnywhere(mainFactory, componentName, cleaningCallBack) {
var _useState2 = React.useState(Object.create(null)),
force2Update = _useState2[1];
var forceUpdate = React.useCallback(function () {
force2Update(Object.create(null));
}, [force2Update]);
useEvents(mainFactory, componentName, forceUpdate);
useIsomorphicLayoutEffect(function () {
return function () {
cleaningCallBack && cleaningCallBack();
delete mainFactory.eventsForForceUpdate;
};
}, [mainFactory, componentName]);
};
var useEvents = function useEvents(mainFactory, componentName, forceUpdate) {
if (typeof mainFactory.eventsForForceUpdate === 'undefined') {
mainFactory.eventsForForceUpdate = {};
var trigger = function trigger(cp) {
var handlers = mainFactory.eventsForForceUpdate["on" + cp + "Change"];
if (handlers && typeof handlers === 'function') {
handlers.apply(null, null);
}
};
mainFactory.forceToUpdate = function (cp) {
return trigger(cp);
};
}
if (!Object.prototype.hasOwnProperty.call(mainFactory.eventsForForceUpdate, componentName)) {
mainFactory.eventsForForceUpdate["on" + componentName + "Change"] = forceUpdate;
}
};
exports.useEvents = useEvents;
exports.useForceUpdate = useForceUpdate;
exports.useForceUpdateFromAnywhere = useForceUpdateFromAnywhere;
//# sourceMappingURL=useforceupdatefromanywhere.cjs.development.js.map