This repository has been archived on 2022-03-12. You can view files and clone it, but cannot push or open issues or pull requests.
2021-04-02 02:24:13 +03:00

49 lines
1.4 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.evaluateOnce = evaluateOnce;
var _InternalAnimatedValue = _interopRequireDefault(require("../core/InternalAnimatedValue"));
var _AnimatedSet = require("../core/AnimatedSet");
var _AnimatedCall = require("../core/AnimatedCall");
var _AnimatedAlways = require("../core/AnimatedAlways");
var _AnimatedCond = require("../core/AnimatedCond");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/**
* evaluate given node and notify children
* @param node - node to be evaluated
* @param input - nodes (or one node) representing values which states input for node.
* @param callback - after callback
*/
function evaluateOnce(node, input = [], callback) {
if (!Array.isArray(input)) {
input = [input];
}
const done = new _InternalAnimatedValue.default(0);
const evalNode = (0, _AnimatedCond.createAnimatedCond)(done, 0, (0, _AnimatedCall.createAnimatedCall)([node, (0, _AnimatedSet.createAnimatedSet)(done, 1)], () => {
callback && callback();
for (let i = 0; i < input.length; i++) {
input[i].__removeChild(alwaysNode);
alwaysNode.__detach();
}
}));
const alwaysNode = (0, _AnimatedAlways.createAnimatedAlways)(evalNode);
for (let i = 0; i < input.length; i++) {
input[i].__addChild(alwaysNode);
alwaysNode.__attach();
}
}
//# sourceMappingURL=evaluateOnce.js.map