@tdb/util
Version:
Shared helpers and utilities.
43 lines • 1.57 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
var rxjs_1 = require("rxjs");
var operators_1 = require("rxjs/operators");
var dynamics = require('dynamics.js');
function animate(target, props, options) {
return new Promise(function (resolve, reject) {
var type = dynamics[options.type];
var args = tslib_1.__assign({}, options, { type: type, complete: function () { return resolve(); } });
dynamics.animate(target, props, args);
});
}
function start(options) {
var _this = this;
var target = options.target;
var subject = new rxjs_1.Subject();
var obj = {};
var define = function (key) {
Object.defineProperty(obj, key, {
get: function () { return options.current()[key]; },
set: function (value) {
var _a;
return subject.next((_a = {}, _a[key] = value, _a));
},
});
};
Object.keys(target).forEach(function (key) { return define(key); });
setTimeout(function () { return tslib_1.__awaiter(_this, void 0, void 0, function () {
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0: return [4, animate(obj, target, options)];
case 1:
_a.sent();
subject.complete();
return [2];
}
});
}); }, 0);
return subject.pipe(operators_1.share());
}
exports.start = start;
//# sourceMappingURL=animation.js.map