@visactor/vrender-components
Version:
components library for dp visualization
31 lines (28 loc) • 1.39 kB
JavaScript
export function collectTrackedAnimates(graphic, animates = [], visited = new Set) {
var _a, _b, _c, _d, _e;
const trackedAnimates = null !== (_c = null === (_b = (_a = graphic).getTrackedAnimates) || void 0 === _b ? void 0 : _b.call(_a)) && void 0 !== _c ? _c : graphic.animates;
return null == trackedAnimates || trackedAnimates.forEach((animate => {
animate && !visited.has(animate) && (visited.add(animate), animates.push(animate));
})), null === (_e = (_d = graphic).forEachChildren) || void 0 === _e || _e.call(_d, (child => {
collectTrackedAnimates(child, animates, visited);
})), animates;
}
export function appendExitReleaseCallback(state, callback) {
callback && (null == state || state.onComplete.push(callback));
}
export function runExitReleaseCallbacks(callbacks) {
callbacks.forEach((callback => {
callback();
}));
}
export function bindExitReleaseAnimates(exitAnimates, getState, finalize) {
const finish = animate => {
const state = getState();
state && !state.finalized && state.pendingAnimates.has(animate) && (state.pendingAnimates.delete(animate),
state.pendingAnimates.size || finalize());
};
exitAnimates.forEach((animate => {
animate.onEnd((() => finish(animate))), animate.onRemove((() => finish(animate)));
}));
}
//# sourceMappingURL=exit-release.js.map