UNPKG

recharts

Version:
68 lines (66 loc) 1.78 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createAnimateManager = createAnimateManager; /** * Represents a single item in the ReactSmoothQueue. * The item can be: * - A number representing a delay in milliseconds. * - An object representing a style change * - A StartAnimationFunction that starts eased transition and calls different render * because of course in Recharts we have to have three ways to do everything * - An arbitrary function to be executed */ function createAnimateManager(timeoutController) { var currStyle = {}; var handleChange = () => null; var shouldStop = false; var cancelTimeout = null; var setStyle = _style => { if (shouldStop) { return; } if (Array.isArray(_style)) { if (!_style.length) { return; } var styles = _style; var [curr, ...restStyles] = styles; if (typeof curr === 'number') { cancelTimeout = timeoutController.setTimeout(setStyle.bind(null, restStyles), curr); return; } setStyle(curr); cancelTimeout = timeoutController.setTimeout(setStyle.bind(null, restStyles)); return; } if (typeof _style === 'object') { currStyle = _style; handleChange(currStyle); } if (typeof _style === 'function') { _style(); } }; return { stop: () => { shouldStop = true; }, start: style => { shouldStop = false; if (cancelTimeout) { cancelTimeout(); cancelTimeout = null; } setStyle(style); }, subscribe: _handleChange => { handleChange = _handleChange; return () => { handleChange = () => null; }; }, getTimeoutController: () => timeoutController }; }