UNPKG

framer-motion

Version:

A simple and powerful React animation library

51 lines (48 loc) 1.75 kB
import { __spreadArray, __read } from 'tslib'; import { SubscriptionManager } from '../../utils/subscription-manager.mjs'; var names = [ "LayoutMeasure", "BeforeLayoutMeasure", "LayoutUpdate", "ViewportBoxUpdate", "Update", "Render", "AnimationComplete", "LayoutAnimationComplete", "AnimationStart", "LayoutAnimationStart", "SetAxisTarget", "Unmount", ]; function createLifecycles() { var managers = names.map(function () { return new SubscriptionManager(); }); var propSubscriptions = {}; var lifecycles = { clearAllListeners: function () { return managers.forEach(function (manager) { return manager.clear(); }); }, updatePropListeners: function (props) { names.forEach(function (name) { var _a; var on = "on" + name; var propListener = props[on]; // Unsubscribe existing subscription (_a = propSubscriptions[name]) === null || _a === void 0 ? void 0 : _a.call(propSubscriptions); // Add new subscription if (propListener) { propSubscriptions[name] = lifecycles[on](propListener); } }); }, }; managers.forEach(function (manager, i) { lifecycles["on" + names[i]] = function (handler) { return manager.add(handler); }; lifecycles["notify" + names[i]] = function () { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } return manager.notify.apply(manager, __spreadArray([], __read(args), false)); }; }); return lifecycles; } export { createLifecycles };