targetj 1.0.238 → 1.0.239

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -10,6 +10,7 @@ var _TargetData = require("./TargetData.js");
10
10
  var _App = require("./App.js");
11
11
  var _TargetUtil = require("./TargetUtil.js");
12
12
  var _TUtil = require("./TUtil.js");
13
+ var _ScheduleUtil = require("./ScheduleUtil.js");
13
14
  function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
14
15
  function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator.return && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, catch: function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; }
15
16
  function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }
@@ -18,9 +19,6 @@ function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLim
18
19
  function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
19
20
  function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
20
21
  function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
21
- function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
22
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
23
- function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
24
22
  function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }
25
23
  function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }
26
24
  function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
@@ -28,6 +26,9 @@ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r)
28
26
  function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
29
27
  function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }
30
28
  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
29
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
30
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
31
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
31
32
  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); }
32
33
  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }
33
34
  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; }
@@ -46,22 +47,43 @@ var AnimationManager = exports.AnimationManager = /*#__PURE__*/function () {
46
47
  }
47
48
  return _createClass(AnimationManager, [{
48
49
  key: "animate",
49
- value: function animate(tmodel, batch, hooks) {
50
- if (this.isShuttingDown || !tmodel.hasDom()) {
50
+ value: function animate(tmodel) {
51
+ var batch = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _AnimationUtil.AnimationUtil.emptyBatch();
52
+ var hooks = arguments.length > 2 ? arguments[2] : undefined;
53
+ var pausedKeys = arguments.length > 3 ? arguments[3] : undefined;
54
+ if (this.isShuttingDown) {
51
55
  return;
52
56
  }
53
- var el = tmodel.$dom.getElement();
54
57
  batch.frames.sort(function (a, b) {
55
58
  return a.keyTime - b.keyTime;
56
59
  });
57
- this.cancelElementAnimationsForKeys(el, Object.keys(batch.keyMap));
58
60
  if (tmodel.lastBatch) {
59
61
  var cutTime = Math.min(_TUtil.TUtil.now() - tmodel.lastBatch.startTime, tmodel.lastBatch.totalDuration);
60
- this.cutLastBatch(tmodel, tmodel.lastBatch, cutTime);
61
- this.callFireOnEndOnConflict(tmodel, tmodel.lastBatch, batch);
62
- this.mergeBatches(tmodel.lastBatch, batch);
63
- this.deleteAnimation(tmodel);
62
+ tmodel.lastBatch = this.cutLastBatch(tmodel, tmodel.lastBatch, cutTime);
63
+ _AnimationUtil.AnimationUtil.rebaseCutBatchMeta(tmodel, tmodel.lastBatch);
64
+ if (pausedKeys !== null && pausedKeys !== void 0 && pausedKeys.size) {
65
+ var pausedFrame = {
66
+ styleMap: _objectSpread({}, tmodel.lastBatch.frames[0].styleMap),
67
+ tfMap: _objectSpread({}, tmodel.lastBatch.frames[0].tfMap),
68
+ keyMeta: new Map(tmodel.lastBatch.frames[0].keyMeta)
69
+ };
70
+ _AnimationUtil.AnimationUtil.addToUpdatingTargets(tmodel, pausedKeys);
71
+ _AnimationUtil.AnimationUtil.removeKeysFromBatch(tmodel.lastBatch, pausedKeys);
72
+ this.callFireOnEndOnConflict(tmodel, tmodel.lastBatch, batch);
73
+ this.mergeBatches(tmodel.lastBatch, batch);
74
+ this.deleteAnimation(tmodel);
75
+ this.fixTModelStyleFromFrame(tmodel, pausedFrame);
76
+ } else {
77
+ this.callFireOnEndOnConflict(tmodel, tmodel.lastBatch, batch);
78
+ this.mergeBatches(tmodel.lastBatch, batch);
79
+ this.deleteAnimation(tmodel);
80
+ }
81
+ }
82
+ if (!tmodel.hasDom() || !batch.frames.length || !Object.keys(batch.keyMap).length) {
83
+ return;
64
84
  }
85
+ var el = tmodel.$dom.getElement();
86
+ this.cancelElementAnimationsForKeys(el, Object.keys(batch.keyMap));
65
87
  var totalDuration = Math.max(batch.totalDuration, 1);
66
88
  var originalKeys = _toConsumableArray(new Set(Object.values(batch.keyMap).flatMap(function (set) {
67
89
  return _toConsumableArray(set);
@@ -130,9 +152,10 @@ var AnimationManager = exports.AnimationManager = /*#__PURE__*/function () {
130
152
  needsFireOnStep: true,
131
153
  hooks: hooks
132
154
  };
133
- tmodel.addToAnimatingMap(_originalKey, rec);
134
- if (tmodel.targetValues[_originalKey]) {
135
- tmodel.targetValues[_originalKey].status = 'updating';
155
+ tmodel.addToAnimatingMap(_originalKey);
156
+ var targetValue = tmodel.targetValues[_originalKey];
157
+ if (targetValue) {
158
+ targetValue.status = !targetValue.snapAnimation ? 'updating' : targetValue.status;
136
159
  }
137
160
  this.recordMap.set(recId, rec);
138
161
  }
@@ -143,6 +166,23 @@ var AnimationManager = exports.AnimationManager = /*#__PURE__*/function () {
143
166
  }
144
167
  this.startProgressPoller();
145
168
  }
169
+ }, {
170
+ key: "pauseAnimations",
171
+ value: function pauseAnimations(tmodel, keys) {
172
+ var keySet;
173
+ if (!keys) {
174
+ var _tmodel$animatingMap$, _tmodel$animatingMap;
175
+ keySet = new Set((_tmodel$animatingMap$ = (_tmodel$animatingMap = tmodel.animatingMap) === null || _tmodel$animatingMap === void 0 ? void 0 : _tmodel$animatingMap.keys()) !== null && _tmodel$animatingMap$ !== void 0 ? _tmodel$animatingMap$ : []);
176
+ } else if (keys instanceof Map) {
177
+ keySet = new Set(keys.keys());
178
+ } else {
179
+ keySet = new Set(keys);
180
+ }
181
+ if (!keySet.size) {
182
+ return;
183
+ }
184
+ this.animate(tmodel, _AnimationUtil.AnimationUtil.emptyBatch(), _AnimationUtil.AnimationUtil.getAnimationHooks(), keySet);
185
+ }
146
186
  }, {
147
187
  key: "finalizeAnimation",
148
188
  value: function finalizeAnimation(anim) {
@@ -164,24 +204,7 @@ var AnimationManager = exports.AnimationManager = /*#__PURE__*/function () {
164
204
  cleanKey = rec.cleanKey;
165
205
  tmodel.removeFromAnimatingMap(originalKey);
166
206
  this.recordMap.delete(recId);
167
- if (tmodel.finalRawFrame) {
168
- var frames = rec.frames;
169
- var lastFrame = frames && frames[frames.length - 1];
170
- var value = lastFrame ? lastFrame.value : this.getAt(tmodel.finalRawFrame, cleanKey);
171
- this.setAt(tmodel, cleanKey, value);
172
- tmodel.val(originalKey, value);
173
- var targetValue = tmodel.targetValues[originalKey];
174
- if (targetValue) {
175
- var _targetValue$valueLis, _targetValue$valueLis2;
176
- targetValue.step = tmodel.getTargetSteps(originalKey);
177
- targetValue.valuePointer = (_targetValue$valueLis = (_targetValue$valueLis2 = targetValue.valueList) === null || _targetValue$valueLis2 === void 0 ? void 0 : _targetValue$valueLis2.length) !== null && _targetValue$valueLis !== void 0 ? _targetValue$valueLis : 0;
178
- targetValue.value = value;
179
- tmodel.setActual(originalKey, value);
180
- if (tmodel.isTargetImperative(originalKey)) {
181
- targetValue.cycle = targetValue.cycles;
182
- }
183
- }
184
- }
207
+ this.completeRecord(tmodel, rec, cleanKey, originalKey);
185
208
  if (!tmodel.hasAnimatingTargets()) {
186
209
  if (tmodel.finalKeyframe) {
187
210
  if (tmodel.hasDom()) {
@@ -189,7 +212,6 @@ var AnimationManager = exports.AnimationManager = /*#__PURE__*/function () {
189
212
  }
190
213
  }
191
214
  tmodel.lastBatch = undefined;
192
- tmodel.pausedBatch = undefined;
193
215
  }
194
216
  rec.status = 'complete';
195
217
  rec.hooks.fireOnEnd(tmodel, originalKey);
@@ -212,45 +234,78 @@ var AnimationManager = exports.AnimationManager = /*#__PURE__*/function () {
212
234
  this.waapiPoller.alive = true;
213
235
  var _tick = function tick() {
214
236
  var animsToFinalize = new Set();
237
+ var pauseMap = new Map();
215
238
  var hasPlaying = false;
216
239
  var _iterator4 = _createForOfIteratorHelper(_this.recordMap),
217
240
  _step4;
218
241
  try {
219
242
  for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
220
- var _record$anim$effect, _record$anim$effect$g, _record$anim$effect2;
243
+ var _record$anim$effect, _record$anim$effect$g, _record$anim$effect2, _ct$progress;
221
244
  var _step4$value = _slicedToArray(_step4.value, 2),
222
245
  record = _step4$value[1];
223
- if (record.status === 'canceled') {
246
+ if (record.status === 'canceled' || record.status === 'detached') {
224
247
  continue;
225
- } else if (record.status === 'playing') {
248
+ }
249
+ var tmodel = record.tmodel,
250
+ originalKey = record.originalKey;
251
+ if (record.status !== 'finished' && _ScheduleUtil.ScheduleUtil.shouldPauseTarget(tmodel, originalKey)) {
252
+ var keys = pauseMap.get(tmodel);
253
+ if (!keys) {
254
+ keys = new Set();
255
+ pauseMap.set(tmodel, keys);
256
+ }
257
+ keys.add(originalKey);
258
+ continue;
259
+ }
260
+ if (record.status === 'playing') {
226
261
  hasPlaying = true;
227
262
  }
228
- _this.updateTModelFromRecord(record);
229
263
  var ps = record.anim.playState;
230
264
  var ct = (_record$anim$effect = record.anim.effect) === null || _record$anim$effect === void 0 || (_record$anim$effect$g = (_record$anim$effect2 = _record$anim$effect).getComputedTiming) === null || _record$anim$effect$g === void 0 ? void 0 : _record$anim$effect$g.call(_record$anim$effect2);
231
- var finished = ps === "finished" || ps === "idle" || ct && ct.progress >= 0.999999;
265
+ var progress = (_ct$progress = ct === null || ct === void 0 ? void 0 : ct.progress) !== null && _ct$progress !== void 0 ? _ct$progress : 0;
266
+ var finished = ps === "finished" || ps === "idle" || progress >= 0.999999;
232
267
  if (finished) {
233
268
  record.status = 'done';
234
269
  animsToFinalize.add(record.anim);
235
270
  }
271
+ if (progress > 0 && record.status !== 'finished') {
272
+ var result = _AnimationUtil.AnimationUtil.updateTModelFromRecord(record);
273
+ if ((result === null || result === void 0 ? void 0 : result.status) === 'finished') {
274
+ record.status = 'finished';
275
+ }
276
+ }
236
277
  }
237
278
  } catch (err) {
238
279
  _iterator4.e(err);
239
280
  } finally {
240
281
  _iterator4.f();
241
282
  }
242
- var _iterator5 = _createForOfIteratorHelper(animsToFinalize),
283
+ var _iterator5 = _createForOfIteratorHelper(pauseMap),
243
284
  _step5;
244
285
  try {
245
286
  for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
246
- var anim = _step5.value;
247
- _this.finalizeAnimation(anim);
287
+ var _step5$value = _slicedToArray(_step5.value, 2),
288
+ _tmodel = _step5$value[0],
289
+ _keys = _step5$value[1];
290
+ _this.pauseAnimations(_tmodel, _keys);
248
291
  }
249
292
  } catch (err) {
250
293
  _iterator5.e(err);
251
294
  } finally {
252
295
  _iterator5.f();
253
296
  }
297
+ var _iterator6 = _createForOfIteratorHelper(animsToFinalize),
298
+ _step6;
299
+ try {
300
+ for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {
301
+ var anim = _step6.value;
302
+ _this.finalizeAnimation(anim);
303
+ }
304
+ } catch (err) {
305
+ _iterator6.e(err);
306
+ } finally {
307
+ _iterator6.f();
308
+ }
254
309
  if (_this.recordMap.size > 0 || hasPlaying) {
255
310
  _this.waapiPoller.rafId = requestAnimationFrame(_tick);
256
311
  } else {
@@ -274,13 +329,32 @@ var AnimationManager = exports.AnimationManager = /*#__PURE__*/function () {
274
329
  frame.styleMap[key] = value;
275
330
  }
276
331
  }
332
+ }, {
333
+ key: "completeRecord",
334
+ value: function completeRecord(tmodel, record, cleanKey, originalKey) {
335
+ if (tmodel.finalRawFrame) {
336
+ var frames = record.frames;
337
+ var lastFrame = frames && frames[frames.length - 1];
338
+ var value = lastFrame ? lastFrame.value : this.getAt(tmodel.finalRawFrame, cleanKey);
339
+ this.setAt(tmodel, cleanKey, value);
340
+ tmodel.val(originalKey, value);
341
+ var targetValue = tmodel.targetValues[originalKey];
342
+ if (targetValue) {
343
+ var _targetValue$valueLis, _targetValue$valueLis2;
344
+ targetValue.step = tmodel.getTargetSteps(originalKey);
345
+ targetValue.valuePointer = (_targetValue$valueLis = (_targetValue$valueLis2 = targetValue.valueList) === null || _targetValue$valueLis2 === void 0 ? void 0 : _targetValue$valueLis2.length) !== null && _targetValue$valueLis !== void 0 ? _targetValue$valueLis : 0;
346
+ targetValue.value = value;
347
+ tmodel.setActual(originalKey, value);
348
+ if (tmodel.isTargetImperative(originalKey)) {
349
+ targetValue.cycle = targetValue.cycles;
350
+ }
351
+ }
352
+ }
353
+ }
277
354
  }, {
278
355
  key: "backfillKeyAcrossFramesUsingMorph",
279
356
  value: function backfillKeyAcrossFramesUsingMorph(tmodel, originalKey, frames) {
280
357
  var cleanKey = _TargetUtil.TargetUtil.getTargetName(originalKey);
281
- var times = frames.map(function (f) {
282
- return f.keyTime;
283
- });
284
358
  var idxs = [];
285
359
  for (var i = 0; i < frames.length; i++) {
286
360
  if (this.getAt(frames[i], cleanKey) !== undefined) {
@@ -289,78 +363,106 @@ var AnimationManager = exports.AnimationManager = /*#__PURE__*/function () {
289
363
  }
290
364
  if (idxs.length >= 2) {
291
365
  for (var m = 0; m < idxs.length - 1; m++) {
366
+ var _rightFrame$keyMeta, _rightMeta$segmentSte;
292
367
  var i0 = idxs[m];
293
368
  var i1 = idxs[m + 1];
294
- var from = this.getAt(frames[i0], cleanKey);
295
- var to = this.getAt(frames[i1], cleanKey);
296
- var meta = frames[i1].keyMeta.get(cleanKey);
297
- if (!meta) {
369
+ var leftFrame = frames[i0];
370
+ var rightFrame = frames[i1];
371
+ var from = this.getAt(leftFrame, cleanKey);
372
+ var to = this.getAt(rightFrame, cleanKey);
373
+ var rightMeta = (_rightFrame$keyMeta = rightFrame.keyMeta) === null || _rightFrame$keyMeta === void 0 ? void 0 : _rightFrame$keyMeta.get(cleanKey);
374
+ if (!rightMeta) {
375
+ continue;
376
+ }
377
+ var spanSteps = rightMeta.steps;
378
+ var baseStepOffset = rightMeta.stepOffset || 0;
379
+ var segmentSteps = (_rightMeta$segmentSte = rightMeta.segmentSteps) !== null && _rightMeta$segmentSte !== void 0 ? _rightMeta$segmentSte : spanSteps;
380
+ var t0 = leftFrame.keyTime;
381
+ var t1 = rightFrame.keyTime;
382
+ var spanTime = t1 - t0;
383
+ if (!_TUtil.TUtil.isDefined(spanSteps) || spanSteps <= 0 || spanTime <= 0) {
298
384
  continue;
299
385
  }
300
- var steps = meta.steps;
301
- var interval = meta.interval;
302
- var duration = steps * interval;
303
- var t0 = times[i0];
304
- var t1 = times[i1];
305
- var u = (t1 - t0) / duration;
386
+ var previousLogicalStep = baseStepOffset;
306
387
  for (var _i = i0 + 1; _i < i1; _i++) {
307
- var t = times[_i];
308
- var elapsed = t - t0;
309
- var step = _TUtil.TUtil.limit(Math.round(elapsed / (u * interval)), 0, steps);
310
- var v = _TModelUtil.TModelUtil.easingMorph(tmodel, originalKey, from, to, step, steps);
311
- this.setAt(frames[_i], cleanKey, v);
312
- frames[_i].keyMeta.set(cleanKey, {
313
- steps: step,
314
- interval: interval
315
- });
388
+ var frame = frames[_i];
389
+ var progress = _TUtil.TUtil.limit((frame.keyTime - t0) / spanTime, 0, 1);
390
+ var localStep = Math.round(progress * spanSteps);
391
+ var logicalStep = _TUtil.TUtil.limit(baseStepOffset + localStep, 0, segmentSteps);
392
+ var stepsFromPreviousFrame = Math.max(logicalStep - previousLogicalStep, 0);
393
+ var v = _TModelUtil.TModelUtil.morph(originalKey, from, to, progress);
394
+ this.setAt(frame, cleanKey, v);
395
+ frame.keyMeta.set(cleanKey, _objectSpread(_objectSpread({}, rightMeta), {}, {
396
+ steps: stepsFromPreviousFrame,
397
+ stepOffset: previousLogicalStep,
398
+ segmentSteps: segmentSteps,
399
+ done: false
400
+ }));
401
+ previousLogicalStep = logicalStep;
316
402
  }
317
403
  }
318
404
  }
319
405
  if (idxs.length) {
406
+ var _lastFrame$keyMeta, _ref, _lastMeta$segmentStep;
320
407
  var lastIndex = idxs[idxs.length - 1];
321
408
  var lastFrame = frames[lastIndex];
322
409
  var lastValue = this.getAt(lastFrame, cleanKey);
410
+ var lastMeta = (_lastFrame$keyMeta = lastFrame.keyMeta) === null || _lastFrame$keyMeta === void 0 ? void 0 : _lastFrame$keyMeta.get(cleanKey);
411
+ if (!lastMeta) {
412
+ return;
413
+ }
414
+ var _segmentSteps = (_ref = (_lastMeta$segmentStep = lastMeta.segmentSteps) !== null && _lastMeta$segmentStep !== void 0 ? _lastMeta$segmentStep : lastMeta.steps) !== null && _ref !== void 0 ? _ref : 0;
323
415
  for (var _i2 = lastIndex + 1; _i2 < frames.length; _i2++) {
324
- this.setAt(frames[_i2], cleanKey, lastValue);
325
- frames[_i2].keyMeta.set(cleanKey, {
326
- steps: 0
327
- });
416
+ var _frame = frames[_i2];
417
+ this.setAt(_frame, cleanKey, lastValue);
418
+ _frame.keyMeta.set(cleanKey, _objectSpread(_objectSpread({}, lastMeta), {}, {
419
+ steps: 0,
420
+ stepOffset: _segmentSteps,
421
+ segmentSteps: _segmentSteps,
422
+ done: true
423
+ }));
328
424
  }
329
425
  }
330
426
  }
331
427
  }, {
332
- key: "freezeTModelAtCurrentTime",
333
- value: function freezeTModelAtCurrentTime(tmodel) {
334
- var batch = tmodel.lastBatch;
335
- var cutTime = Math.min(_TUtil.TUtil.now() - batch.startTime, batch.totalDuration);
336
- this.cutLastBatch(tmodel, batch, cutTime);
337
- var frame0 = batch.frames[0];
338
- if (!frame0) {
428
+ key: "fixTModelStyleFromFrame",
429
+ value: function fixTModelStyleFromFrame(tmodel, frame) {
430
+ if (!tmodel.hasDom() || !frame) {
339
431
  return;
340
432
  }
341
- var out = _objectSpread({}, frame0.styleMap);
342
- var hasTf = Object.keys(frame0.tfMap).length > 0;
433
+ var out = _objectSpread({}, frame.styleMap);
434
+ var hasTf = Object.keys(frame.tfMap).length > 0;
343
435
  if (hasTf) {
344
436
  Object.keys(tmodel.tfMap).forEach(function (key) {
345
437
  tmodel.tfMap[key] = tmodel.val(key);
346
438
  });
347
- var tfMap = _objectSpread(_objectSpread({}, tmodel.tfMap), frame0.tfMap);
348
- frame0.tfMap = tfMap;
439
+ var tfMap = _objectSpread(_objectSpread({}, tmodel.tfMap), frame.tfMap);
440
+ frame.tfMap = tfMap;
349
441
  out.transform = _TModelUtil.TModelUtil.getTransformString(tmodel, tfMap);
350
442
  }
351
443
  _AnimationUtil.AnimationUtil.addUnitsToFrame(out);
352
444
  _AnimationUtil.AnimationUtil.fixStyleByAnimation(tmodel, out);
353
445
  }
446
+ }, {
447
+ key: "freezeTModelAtCurrentTime",
448
+ value: function freezeTModelAtCurrentTime(tmodel) {
449
+ if (!tmodel.lastBatch) {
450
+ return;
451
+ }
452
+ var cutTime = Math.min(_TUtil.TUtil.now() - tmodel.lastBatch.startTime, tmodel.lastBatch.totalDuration);
453
+ tmodel.lastBatch = this.cutLastBatch(tmodel, tmodel.lastBatch, cutTime);
454
+ this.fixTModelStyleFromFrame(tmodel, tmodel.lastBatch.frames[0]);
455
+ }
354
456
  }, {
355
457
  key: "collectFramesForKey",
356
458
  value: function collectFramesForKey(batch, cleanKey) {
357
459
  var out = [];
358
460
  var total = batch.totalDuration;
359
- var _iterator6 = _createForOfIteratorHelper(batch.frames),
360
- _step6;
461
+ var _iterator7 = _createForOfIteratorHelper(batch.frames),
462
+ _step7;
361
463
  try {
362
- for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {
363
- var frame = _step6.value;
464
+ for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {
465
+ var frame = _step7.value;
364
466
  var value = this.getAt(frame, cleanKey);
365
467
  if (value === undefined) {
366
468
  continue;
@@ -369,15 +471,20 @@ var AnimationManager = exports.AnimationManager = /*#__PURE__*/function () {
369
471
  out.push({
370
472
  value: value,
371
473
  time: frame.keyTime,
474
+ offset: frame.keyTime / total,
372
475
  steps: meta === null || meta === void 0 ? void 0 : meta.steps,
476
+ segmentSteps: meta === null || meta === void 0 ? void 0 : meta.segmentSteps,
373
477
  interval: meta === null || meta === void 0 ? void 0 : meta.interval,
374
- offset: frame.keyTime / total
478
+ stepOffset: (meta === null || meta === void 0 ? void 0 : meta.stepOffset) || 0,
479
+ valuePointer: meta === null || meta === void 0 ? void 0 : meta.valuePointer,
480
+ cycle: meta === null || meta === void 0 ? void 0 : meta.cycle,
481
+ done: !!(meta !== null && meta !== void 0 && meta.done)
375
482
  });
376
483
  }
377
484
  } catch (err) {
378
- _iterator6.e(err);
485
+ _iterator7.e(err);
379
486
  } finally {
380
- _iterator6.f();
487
+ _iterator7.f();
381
488
  }
382
489
  out.sort(function (a, b) {
383
490
  return a.time - b.time;
@@ -389,31 +496,6 @@ var AnimationManager = exports.AnimationManager = /*#__PURE__*/function () {
389
496
  value: function getRecordId(tmodel, key) {
390
497
  return "".concat(tmodel.oid, "-").concat(key);
391
498
  }
392
- }, {
393
- key: "updateTModelFromRecord",
394
- value: function updateTModelFromRecord(record) {
395
- var tmodel = record.tmodel,
396
- originalKey = record.originalKey,
397
- cleanKey = record.cleanKey;
398
- var result = this.getValueFromAnim(record);
399
- if (!result) {
400
- return;
401
- }
402
- var value = result.value,
403
- step = result.step;
404
- this.setAt(tmodel, cleanKey, value);
405
- tmodel.val(originalKey, value);
406
- if (tmodel.targetValues[originalKey]) {
407
- tmodel.targetValues[originalKey].step = step;
408
- tmodel.setActual(originalKey, value);
409
- if (record.needsFireOnStep) {
410
- var needsRefire = record.hooks.fireOnStep(tmodel, originalKey, step);
411
- if (!needsRefire) {
412
- record.needsFireOnStep = false;
413
- }
414
- }
415
- }
416
- }
417
499
  }, {
418
500
  key: "delete",
419
501
  value: function _delete(record) {
@@ -428,22 +510,22 @@ var AnimationManager = exports.AnimationManager = /*#__PURE__*/function () {
428
510
  }, {
429
511
  key: "deleteAnimation",
430
512
  value: function deleteAnimation(tmodel) {
431
- var _iterator7 = _createForOfIteratorHelper(this.recordMap),
432
- _step7;
513
+ var _iterator8 = _createForOfIteratorHelper(this.recordMap),
514
+ _step8;
433
515
  try {
434
- for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {
435
- var _step7$value = _slicedToArray(_step7.value, 2),
436
- recId = _step7$value[0],
437
- record = _step7$value[1];
516
+ for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) {
517
+ var _step8$value = _slicedToArray(_step8.value, 2),
518
+ recId = _step8$value[0],
519
+ record = _step8$value[1];
438
520
  if (recId.startsWith("".concat(tmodel.oid, "-"))) {
439
521
  ;
440
522
  this.delete(record);
441
523
  }
442
524
  }
443
525
  } catch (err) {
444
- _iterator7.e(err);
526
+ _iterator8.e(err);
445
527
  } finally {
446
- _iterator7.f();
528
+ _iterator8.f();
447
529
  }
448
530
  tmodel.lastBatch = undefined;
449
531
  tmodel.finalKeyframe = undefined;
@@ -463,7 +545,7 @@ var AnimationManager = exports.AnimationManager = /*#__PURE__*/function () {
463
545
  key: "deleteAll",
464
546
  value: function () {
465
547
  var _deleteAll = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
466
- var seen, _iterator8, _step8, _step8$value, record, tmodel;
548
+ var tmodels, _iterator9, _step9, _step9$value, record, _iterator10, _step10, tmodel;
467
549
  return _regeneratorRuntime().wrap(function _callee$(_context) {
468
550
  while (1) switch (_context.prev = _context.next) {
469
551
  case 0:
@@ -473,53 +555,39 @@ var AnimationManager = exports.AnimationManager = /*#__PURE__*/function () {
473
555
  this.waapiPoller.rafId = 0;
474
556
  this.waapiPoller.alive = false;
475
557
  }
476
- seen = new Set();
477
- _iterator8 = _createForOfIteratorHelper(this.recordMap);
478
- _context.prev = 4;
479
- _iterator8.s();
480
- case 6:
481
- if ((_step8 = _iterator8.n()).done) {
482
- _context.next = 22;
483
- break;
558
+ tmodels = new Set();
559
+ _iterator9 = _createForOfIteratorHelper(this.recordMap);
560
+ try {
561
+ for (_iterator9.s(); !(_step9 = _iterator9.n()).done;) {
562
+ _step9$value = _slicedToArray(_step9.value, 2), record = _step9$value[1];
563
+ tmodels.add(record.tmodel);
564
+ }
565
+ } catch (err) {
566
+ _iterator9.e(err);
567
+ } finally {
568
+ _iterator9.f();
484
569
  }
485
- _step8$value = _slicedToArray(_step8.value, 2), record = _step8$value[1];
486
- tmodel = record.tmodel;
487
- this.updateTModelFromRecord(record);
488
- this.delete(record);
489
- if (!seen.has(tmodel.oid)) {
490
- _context.next = 13;
491
- break;
570
+ _iterator10 = _createForOfIteratorHelper(tmodels);
571
+ try {
572
+ for (_iterator10.s(); !(_step10 = _iterator10.n()).done;) {
573
+ tmodel = _step10.value;
574
+ this.freezeTModelAtCurrentTime(tmodel);
575
+ _AnimationUtil.AnimationUtil.detachAnimationsOnDeleteDom(tmodel);
576
+ tmodel.lastBatch = undefined;
577
+ tmodel.finalKeyframe = undefined;
578
+ tmodel.finalRawFrame = undefined;
579
+ }
580
+ } catch (err) {
581
+ _iterator10.e(err);
582
+ } finally {
583
+ _iterator10.f();
492
584
  }
493
- return _context.abrupt("continue", 20);
494
- case 13:
495
- seen.add(tmodel.oid);
496
- this.freezeTModelAtCurrentTime(tmodel);
497
- tmodel.pausedBatch = tmodel.lastBatch;
498
- tmodel.lastBatch = undefined;
499
- tmodel.finalKeyframe = undefined;
500
- tmodel.finalRawFrame = undefined;
501
- tmodel.clearAnimatingMap();
502
- case 20:
503
- _context.next = 6;
504
- break;
505
- case 22:
506
- _context.next = 27;
507
- break;
508
- case 24:
509
- _context.prev = 24;
510
- _context.t0 = _context["catch"](4);
511
- _iterator8.e(_context.t0);
512
- case 27:
513
- _context.prev = 27;
514
- _iterator8.f();
515
- return _context.finish(27);
516
- case 30:
517
585
  this.recordMap.clear();
518
- case 31:
586
+ case 8:
519
587
  case "end":
520
588
  return _context.stop();
521
589
  }
522
- }, _callee, this, [[4, 24, 27, 30]]);
590
+ }, _callee, this);
523
591
  }));
524
592
  function deleteAll() {
525
593
  return _deleteAll.apply(this, arguments);
@@ -549,52 +617,43 @@ var AnimationManager = exports.AnimationManager = /*#__PURE__*/function () {
549
617
  return flushOneFrame;
550
618
  }()
551
619
  }, {
552
- key: "getValueFromAnim",
553
- value: function getValueFromAnim(record) {
554
- var _anim$effect, _anim$effect$getCompu;
555
- var originalKey = record.originalKey,
556
- anim = record.anim,
557
- frames = record.frames;
558
- if (!frames) {
559
- return;
560
- }
561
- var ct = (_anim$effect = anim.effect) === null || _anim$effect === void 0 || (_anim$effect$getCompu = _anim$effect.getComputedTiming) === null || _anim$effect$getCompu === void 0 ? void 0 : _anim$effect$getCompu.call(_anim$effect);
562
- if (!ct) {
563
- return;
564
- }
565
- var p = _TUtil.TUtil.isDefined(ct.progress) ? _TUtil.TUtil.limit(ct.progress, 0, 1) : 1;
566
- var last = frames.length - 1;
567
- var k = 0;
568
- if (p <= frames[0].offset) {
569
- k = 0;
570
- } else if (p >= frames[last].offset) {
571
- k = last - 1;
572
- } else {
573
- for (var i = 0; i < last; i++) {
574
- if (p >= frames[i].offset && p < frames[i + 1].offset) {
575
- k = i;
576
- break;
620
+ key: "fillCutFrameFromRecords",
621
+ value: function fillCutFrameFromRecords(tmodel, cutFrame) {
622
+ var _iterator11 = _createForOfIteratorHelper(this.recordMap),
623
+ _step11;
624
+ try {
625
+ for (_iterator11.s(); !(_step11 = _iterator11.n()).done;) {
626
+ var _ref2, _ref3, _result$remainingStep, _ref4, _result$steps, _targetValue$interval, _result$step;
627
+ var _step11$value = _slicedToArray(_step11.value, 2),
628
+ record = _step11$value[1];
629
+ if (record.tmodel !== tmodel) {
630
+ continue;
631
+ }
632
+ if (record.status === 'canceled' || record.status === 'detached') {
633
+ continue;
577
634
  }
635
+ var result = _AnimationUtil.AnimationUtil.getValueFromAnim(record);
636
+ if (!result) {
637
+ continue;
638
+ }
639
+ var cleanKey = record.cleanKey,
640
+ originalKey = record.originalKey;
641
+ var targetValue = tmodel.targetValues[originalKey];
642
+ this.setAt(cutFrame, cleanKey, result.value);
643
+ cutFrame.keyMeta.set(cleanKey, {
644
+ steps: (_ref2 = (_ref3 = (_result$remainingStep = result.remainingSteps) !== null && _result$remainingStep !== void 0 ? _result$remainingStep : result.steps) !== null && _ref3 !== void 0 ? _ref3 : targetValue === null || targetValue === void 0 ? void 0 : targetValue.steps) !== null && _ref2 !== void 0 ? _ref2 : 0,
645
+ segmentSteps: (_ref4 = (_result$steps = result.steps) !== null && _result$steps !== void 0 ? _result$steps : targetValue === null || targetValue === void 0 ? void 0 : targetValue.steps) !== null && _ref4 !== void 0 ? _ref4 : 0,
646
+ interval: (_targetValue$interval = targetValue === null || targetValue === void 0 ? void 0 : targetValue.interval) !== null && _targetValue$interval !== void 0 ? _targetValue$interval : 8,
647
+ stepOffset: (_result$step = result.step) !== null && _result$step !== void 0 ? _result$step : 0,
648
+ valuePointer: result.valuePointer,
649
+ cycle: result.cycle,
650
+ done: result.status === 'finished'
651
+ });
578
652
  }
579
- }
580
- var left = frames[k];
581
- var right = frames[k + 1];
582
- var from = left.value;
583
- var to = right.value;
584
- var segStart = left.offset;
585
- var segEnd = right.offset;
586
- var segSpan = segEnd - segStart;
587
- if (segSpan > 0) {
588
- var u = _TUtil.TUtil.limit((p - segStart) / segSpan, 0, 1);
589
- var steps = right.steps;
590
- var step = Math.round(u * steps);
591
- step = _TUtil.TUtil.limit(step, 0, steps);
592
- var value = _TModelUtil.TModelUtil.morph(originalKey, from, to, u);
593
- return {
594
- value: value,
595
- step: step,
596
- steps: steps
597
- };
653
+ } catch (err) {
654
+ _iterator11.e(err);
655
+ } finally {
656
+ _iterator11.f();
598
657
  }
599
658
  }
600
659
  }, {
@@ -606,26 +665,28 @@ var AnimationManager = exports.AnimationManager = /*#__PURE__*/function () {
606
665
  }
607
666
  var needsInsert = i < batch.frames.length && cutTime !== batch.frames[i].keyTime;
608
667
  if (needsInsert) {
609
- batch.frames.splice(i, 0, {
668
+ var cutFrame = {
610
669
  keyTime: cutTime,
611
670
  tfMap: {},
612
671
  styleMap: {},
613
672
  keyMeta: new Map()
614
- });
673
+ };
674
+ batch.frames.splice(i, 0, cutFrame);
675
+ this.fillCutFrameFromRecords(tmodel, cutFrame);
615
676
  var originalKeys = _toConsumableArray(new Set(Object.values(batch.keyMap).flatMap(function (set) {
616
677
  return _toConsumableArray(set);
617
678
  })));
618
- var _iterator9 = _createForOfIteratorHelper(originalKeys),
619
- _step9;
679
+ var _iterator12 = _createForOfIteratorHelper(originalKeys),
680
+ _step12;
620
681
  try {
621
- for (_iterator9.s(); !(_step9 = _iterator9.n()).done;) {
622
- var originalKey = _step9.value;
682
+ for (_iterator12.s(); !(_step12 = _iterator12.n()).done;) {
683
+ var originalKey = _step12.value;
623
684
  this.backfillKeyAcrossFramesUsingMorph(tmodel, originalKey, batch.frames);
624
685
  }
625
686
  } catch (err) {
626
- _iterator9.e(err);
687
+ _iterator12.e(err);
627
688
  } finally {
628
- _iterator9.f();
689
+ _iterator12.f();
629
690
  }
630
691
  batch.frames = batch.frames.slice(i);
631
692
  }
@@ -633,6 +694,7 @@ var AnimationManager = exports.AnimationManager = /*#__PURE__*/function () {
633
694
  frame.keyTime = Math.max(0, frame.keyTime - cutTime);
634
695
  });
635
696
  batch.totalDuration = batch.frames.length ? batch.frames[batch.frames.length - 1].keyTime : 0;
697
+ return batch;
636
698
  }
637
699
  }, {
638
700
  key: "callFireOnEndOnConflict",
@@ -648,18 +710,18 @@ var AnimationManager = exports.AnimationManager = /*#__PURE__*/function () {
648
710
  }
649
711
 
650
712
  // Any old originalKey that’s not present anymore should be completed/canceled.
651
- var _iterator10 = _createForOfIteratorHelper(oldSet),
652
- _step10;
713
+ var _iterator13 = _createForOfIteratorHelper(oldSet),
714
+ _step13;
653
715
  try {
654
- for (_iterator10.s(); !(_step10 = _iterator10.n()).done;) {
655
- var oldOriginal = _step10.value;
716
+ for (_iterator13.s(); !(_step13 = _iterator13.n()).done;) {
717
+ var oldOriginal = _step13.value;
656
718
  if (newSet.has(oldOriginal)) {
657
719
  continue;
658
720
  }
659
721
  var recId = this.getRecordId(tmodel, oldOriginal);
660
722
  var oldRec = this.recordMap.get(recId);
661
- if (oldRec && oldRec.status === 'playing') {
662
- this.updateTModelFromRecord(oldRec);
723
+ if (oldRec) {
724
+ this.completeRecord(tmodel, oldRec, cleanKey, oldOriginal);
663
725
  oldRec.status = 'complete';
664
726
  oldRec.hooks.fireOnEnd(oldRec.tmodel, oldOriginal);
665
727
  oldRec.tmodel.removeFromAnimatingMap(oldOriginal);
@@ -667,117 +729,97 @@ var AnimationManager = exports.AnimationManager = /*#__PURE__*/function () {
667
729
  }
668
730
  }
669
731
  } catch (err) {
670
- _iterator10.e(err);
732
+ _iterator13.e(err);
671
733
  } finally {
672
- _iterator10.f();
734
+ _iterator13.f();
673
735
  }
674
736
  }
675
737
  }
676
738
  }, {
677
739
  key: "mergeBatches",
678
740
  value: function mergeBatches(lastBatch, newBatch) {
679
- var newCleanKeys = Object.keys(newBatch.keyMap);
741
+ var newCleanKeys = new Set(Object.keys(newBatch.keyMap));
680
742
  var oldFrames = [];
681
- var _iterator11 = _createForOfIteratorHelper(lastBatch.frames),
682
- _step11;
743
+ var _iterator14 = _createForOfIteratorHelper(lastBatch.frames),
744
+ _step14;
683
745
  try {
684
- for (_iterator11.s(); !(_step11 = _iterator11.n()).done;) {
685
- var frame = _step11.value;
686
- var _iterator13 = _createForOfIteratorHelper(newCleanKeys),
687
- _step13;
746
+ for (_iterator14.s(); !(_step14 = _iterator14.n()).done;) {
747
+ var frame = _step14.value;
748
+ var _iterator16 = _createForOfIteratorHelper(newCleanKeys),
749
+ _step16;
688
750
  try {
689
- for (_iterator13.s(); !(_step13 = _iterator13.n()).done;) {
690
- var key = _step13.value;
691
- delete frame.styleMap[key];
692
- delete frame.tfMap[key];
693
- delete lastBatch.keyMap[key];
751
+ for (_iterator16.s(); !(_step16 = _iterator16.n()).done;) {
752
+ var _frame$keyMeta;
753
+ var _key = _step16.value;
754
+ delete frame.styleMap[_key];
755
+ delete frame.tfMap[_key];
756
+ (_frame$keyMeta = frame.keyMeta) === null || _frame$keyMeta === void 0 || _frame$keyMeta.delete(_key);
694
757
  }
695
758
  } catch (err) {
696
- _iterator13.e(err);
759
+ _iterator16.e(err);
697
760
  } finally {
698
- _iterator13.f();
761
+ _iterator16.f();
699
762
  }
700
763
  if (Object.keys(frame.styleMap).length || Object.keys(frame.tfMap).length) {
701
764
  oldFrames.push(frame);
702
765
  }
703
766
  }
704
767
  } catch (err) {
705
- _iterator11.e(err);
768
+ _iterator14.e(err);
706
769
  } finally {
707
- _iterator11.f();
770
+ _iterator14.f();
771
+ }
772
+ var oldKeyMap = {};
773
+ for (var _i4 = 0, _Object$entries = Object.entries(lastBatch.keyMap); _i4 < _Object$entries.length; _i4++) {
774
+ var _Object$entries$_i = _slicedToArray(_Object$entries[_i4], 2),
775
+ key = _Object$entries$_i[0],
776
+ set = _Object$entries$_i[1];
777
+ if (!newCleanKeys.has(key)) {
778
+ oldKeyMap[key] = set;
779
+ }
708
780
  }
709
781
  newBatch.frames = [].concat(oldFrames, _toConsumableArray(newBatch.frames));
710
782
  newBatch.frames.sort(function (a, b) {
711
783
  return a.keyTime - b.keyTime;
712
784
  });
713
-
714
- // Merge frames with identical keyTime
715
785
  var merged = [];
716
- var _iterator12 = _createForOfIteratorHelper(newBatch.frames),
717
- _step12;
786
+ var _iterator15 = _createForOfIteratorHelper(newBatch.frames),
787
+ _step15;
718
788
  try {
719
- for (_iterator12.s(); !(_step12 = _iterator12.n()).done;) {
720
- var f = _step12.value;
789
+ for (_iterator15.s(); !(_step15 = _iterator15.n()).done;) {
790
+ var f = _step15.value;
721
791
  var last = merged[merged.length - 1];
722
- if (last && last.keyTime === f.keyTime) {
792
+ if (last && Math.abs(last.keyTime - f.keyTime) < 0.0001) {
723
793
  Object.assign(last.styleMap, f.styleMap);
724
794
  Object.assign(last.tfMap, f.tfMap);
725
795
  if (f.keyMeta) {
726
- var _iterator14 = _createForOfIteratorHelper(f.keyMeta),
727
- _step14;
796
+ var _iterator17 = _createForOfIteratorHelper(f.keyMeta),
797
+ _step17;
728
798
  try {
729
- for (_iterator14.s(); !(_step14 = _iterator14.n()).done;) {
730
- var _step14$value = _slicedToArray(_step14.value, 2),
731
- k = _step14$value[0],
732
- v = _step14$value[1];
799
+ for (_iterator17.s(); !(_step17 = _iterator17.n()).done;) {
800
+ var _step17$value = _slicedToArray(_step17.value, 2),
801
+ k = _step17$value[0],
802
+ v = _step17$value[1];
733
803
  last.keyMeta.set(k, v);
734
804
  }
735
805
  } catch (err) {
736
- _iterator14.e(err);
806
+ _iterator17.e(err);
737
807
  } finally {
738
- _iterator14.f();
808
+ _iterator17.f();
739
809
  }
740
810
  }
741
811
  } else {
742
812
  merged.push(f);
743
813
  }
744
814
  }
745
- } catch (err) {
746
- _iterator12.e(err);
747
- } finally {
748
- _iterator12.f();
749
- }
750
- newBatch.keyMap = _objectSpread(_objectSpread({}, newBatch.keyMap), lastBatch.keyMap);
751
- newBatch.frames = merged;
752
- newBatch.totalDuration = newBatch.frames.length ? newBatch.frames[newBatch.frames.length - 1].keyTime : 0;
753
- }
754
- }, {
755
- key: "pauseTModel",
756
- value: function pauseTModel(tmodel) {
757
- var batch = tmodel.lastBatch;
758
- if (!batch) {
759
- return;
760
- }
761
- var _iterator15 = _createForOfIteratorHelper(tmodel.animatingMap),
762
- _step15;
763
- try {
764
- for (_iterator15.s(); !(_step15 = _iterator15.n()).done;) {
765
- var _step15$value = _slicedToArray(_step15.value, 1),
766
- key = _step15$value[0];
767
- if (tmodel.targetValues[key]) {
768
- tmodel.targetValues[key].status = 'pause';
769
- }
770
- }
771
815
  } catch (err) {
772
816
  _iterator15.e(err);
773
817
  } finally {
774
818
  _iterator15.f();
775
819
  }
776
- var cutTime = Math.min(_TUtil.TUtil.now() - batch.startTime, batch.totalDuration);
777
- this.cutLastBatch(tmodel, batch, cutTime);
778
- tmodel.pausedBatch = batch;
779
- tmodel.lastBatch = undefined;
780
- this.deleteAnimation(tmodel);
820
+ newBatch.keyMap = _objectSpread(_objectSpread({}, oldKeyMap), newBatch.keyMap);
821
+ newBatch.frames = merged;
822
+ newBatch.totalDuration = newBatch.frames.length ? newBatch.frames[newBatch.frames.length - 1].keyTime : 0;
781
823
  }
782
824
  }, {
783
825
  key: "areFramesEqual",
@@ -787,8 +829,8 @@ var AnimationManager = exports.AnimationManager = /*#__PURE__*/function () {
787
829
  if (keysA.length !== keysB.length) {
788
830
  return false;
789
831
  }
790
- for (var _i4 = 0, _keysA = keysA; _i4 < _keysA.length; _i4++) {
791
- var k = _keysA[_i4];
832
+ for (var _i5 = 0, _keysA = keysA; _i5 < _keysA.length; _i5++) {
833
+ var k = _keysA[_i5];
792
834
  if (k === 'offset') {
793
835
  continue;
794
836
  }
@@ -822,24 +864,24 @@ var AnimationManager = exports.AnimationManager = /*#__PURE__*/function () {
822
864
  return;
823
865
  }
824
866
  var keySet = new Set(cleanKeys);
825
- var _iterator16 = _createForOfIteratorHelper(el.getAnimations()),
826
- _step16;
867
+ var _iterator18 = _createForOfIteratorHelper(el.getAnimations()),
868
+ _step18;
827
869
  try {
828
- for (_iterator16.s(); !(_step16 = _iterator16.n()).done;) {
829
- var anim = _step16.value;
870
+ for (_iterator18.s(); !(_step18 = _iterator18.n()).done;) {
871
+ var anim = _step18.value;
830
872
  var effect = anim.effect;
831
873
  if (!(effect !== null && effect !== void 0 && effect.getKeyframes)) {
832
874
  continue;
833
875
  }
834
876
  var kfs = effect.getKeyframes();
835
877
  var touches = false;
836
- var _iterator17 = _createForOfIteratorHelper(kfs),
837
- _step17;
878
+ var _iterator19 = _createForOfIteratorHelper(kfs),
879
+ _step19;
838
880
  try {
839
- for (_iterator17.s(); !(_step17 = _iterator17.n()).done;) {
840
- var kf = _step17.value;
841
- for (var _i5 = 0, _Object$keys2 = Object.keys(kf); _i5 < _Object$keys2.length; _i5++) {
842
- var k = _Object$keys2[_i5];
881
+ for (_iterator19.s(); !(_step19 = _iterator19.n()).done;) {
882
+ var kf = _step19.value;
883
+ for (var _i6 = 0, _Object$keys2 = Object.keys(kf); _i6 < _Object$keys2.length; _i6++) {
884
+ var k = _Object$keys2[_i6];
843
885
  if (keySet.has(k)) {
844
886
  touches = true;
845
887
  break;
@@ -850,9 +892,9 @@ var AnimationManager = exports.AnimationManager = /*#__PURE__*/function () {
850
892
  }
851
893
  }
852
894
  } catch (err) {
853
- _iterator17.e(err);
895
+ _iterator19.e(err);
854
896
  } finally {
855
- _iterator17.f();
897
+ _iterator19.f();
856
898
  }
857
899
  if (touches) {
858
900
  try {
@@ -861,9 +903,9 @@ var AnimationManager = exports.AnimationManager = /*#__PURE__*/function () {
861
903
  }
862
904
  }
863
905
  } catch (err) {
864
- _iterator16.e(err);
906
+ _iterator18.e(err);
865
907
  } finally {
866
- _iterator16.f();
908
+ _iterator18.f();
867
909
  }
868
910
  }
869
911
  }]);