UNPKG

svelte-motion

Version:

Svelte animation library based on the React library framer-motion.

52 lines (49 loc) 1.7 kB
/** based on framer-motion@4.0.3, Copyright (c) 2018 Framer B.V. */ import { __spreadArray, __read } from 'tslib'; import { SubscriptionManager } from '../../utils/subscription-manager.js'; var names = [ "LayoutMeasure", "BeforeLayoutMeasure", "LayoutUpdate", "ViewportBoxUpdate", "Update", "Render", "AnimationComplete", "LayoutAnimationComplete", "AnimationStart", "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) { return names.forEach(function (name) { var _a; (_a = propSubscriptions[name]) === null || _a === void 0 ? void 0 : _a.call(propSubscriptions); var on = "on" + name; var propListener = props[on]; 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))); }; }); return lifecycles; } export { createLifecycles };