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.
@@ -9,6 +9,7 @@ var _TUtil = require("./TUtil.js");
9
9
  var _App = require("./App.js");
10
10
  var _TModelUtil = require("./TModelUtil.js");
11
11
  var _TargetUtil = require("./TargetUtil.js");
12
+ var _AnimationUtil = require("./AnimationUtil.js");
12
13
  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); }
13
14
  function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }
14
15
  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."); }
@@ -140,6 +141,11 @@ var TModelManager = exports.TModelManager = /*#__PURE__*/function () {
140
141
  this.lists.activeTargets = [].concat(_toConsumableArray(this.lists.activeTargets), _toConsumableArray(state.activeTargetList));
141
142
  }
142
143
  }
144
+ if (preserveDom && !visible && !tmodel.isActivated()) {
145
+ if (this.needsRestyle(tmodel)) {
146
+ this.lists.restyle.push(tmodel);
147
+ }
148
+ }
143
149
  if (visible || tmodel.isActivated()) {
144
150
  if (this.needsRerender(tmodel)) {
145
151
  this.lists.rerender.push(tmodel);
@@ -420,14 +426,8 @@ var TModelManager = exports.TModelManager = /*#__PURE__*/function () {
420
426
  key: "deleteDom",
421
427
  value: function deleteDom(tmodel) {
422
428
  if (tmodel.hasAnimatingTargets()) {
423
- (0, _App.getAnimationManager)().pauseTModel(tmodel);
429
+ _AnimationUtil.AnimationUtil.detachAnimationsOnDeleteDom(tmodel);
424
430
  }
425
- Object.keys(tmodel.targetValues).forEach(function (key) {
426
- var targetValue = tmodel.targetValues[key];
427
- if (targetValue.status === 'updating' && tmodel.updatingTargetList.indexOf(key) === -1) {
428
- tmodel.setTargetStatus('active');
429
- }
430
- });
431
431
  var domParent = tmodel.getDomParent();
432
432
  if (domParent && domParent.$dom) {
433
433
  domParent.$dom.removeElement(tmodel.$dom.element);
@@ -473,17 +473,46 @@ var TModelManager = exports.TModelManager = /*#__PURE__*/function () {
473
473
  }, {
474
474
  key: "activatePendingTargetsAfterDom",
475
475
  value: function activatePendingTargetsAfterDom(tmodels) {
476
+ var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
477
+ _ref$restoredDoneTarg = _ref.restoredDoneTargets,
478
+ restoredDoneTargets = _ref$restoredDoneTarg === void 0 ? false : _ref$restoredDoneTarg;
476
479
  var _iterator8 = _createForOfIteratorHelper(tmodels),
477
480
  _step8;
478
481
  try {
479
482
  for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) {
480
483
  var tmodel = _step8.value;
481
- var pending = tmodel.pendingTargets;
482
- if (pending !== null && pending !== void 0 && pending.size) {
483
- for (var _i = 0, _arr = _toConsumableArray(pending); _i < _arr.length; _i++) {
484
+ if (!tmodel.hasDom()) {
485
+ continue;
486
+ }
487
+ if (tmodel.noDomUpdatingTargets) {
488
+ for (var _i = 0, _arr = _toConsumableArray(tmodel.noDomUpdatingTargets); _i < _arr.length; _i++) {
484
489
  var target = _arr[_i];
485
- _TargetUtil.TargetUtil.cleanupTarget(tmodel, target);
486
- _TargetUtil.TargetUtil.shouldActivateNextTarget(tmodel, target);
490
+ tmodel.addTargetToStatusList(target);
491
+ }
492
+ tmodel.noDomUpdatingTargets = undefined;
493
+ }
494
+ var pending = tmodel.pendingTargets;
495
+ if (pending) {
496
+ for (var _i2 = 0, _arr2 = _toConsumableArray(pending); _i2 < _arr2.length; _i2++) {
497
+ var key = _arr2[_i2];
498
+ _TargetUtil.TargetUtil.cleanupTarget(tmodel, key);
499
+ _TargetUtil.TargetUtil.shouldActivateNextTarget(tmodel, key);
500
+ }
501
+ tmodel.pendingTargets = undefined;
502
+ }
503
+ if (restoredDoneTargets) {
504
+ for (var _i3 = 0, _Object$keys = Object.keys(tmodel.targetValues); _i3 < _Object$keys.length; _i3++) {
505
+ var _key = _Object$keys[_i3];
506
+ var targetValue = tmodel.targetValues[_key];
507
+ if (targetValue.status !== 'done') {
508
+ continue;
509
+ }
510
+ if (tmodel.isTargetInLoop(_key) || tmodel.isTargetPassiveLoop(_key)) {
511
+ continue;
512
+ }
513
+ if (_TargetUtil.TargetUtil.cleanupTarget(tmodel, _key)) {
514
+ _TargetUtil.TargetUtil.shouldActivateNextTarget(tmodel, _key);
515
+ }
487
516
  }
488
517
  }
489
518
  }
@@ -493,6 +522,20 @@ var TModelManager = exports.TModelManager = /*#__PURE__*/function () {
493
522
  _iterator8.f();
494
523
  }
495
524
  }
525
+ }, {
526
+ key: "catchupNoDomTargetsBeforeStyle",
527
+ value: function catchupNoDomTargetsBeforeStyle(tmodel) {
528
+ var _tmodel$noDomUpdating;
529
+ if (!((_tmodel$noDomUpdating = tmodel.noDomUpdatingTargets) !== null && _tmodel$noDomUpdating !== void 0 && _tmodel$noDomUpdating.size)) {
530
+ return;
531
+ }
532
+ for (var _i4 = 0, _arr3 = _toConsumableArray(tmodel.noDomUpdatingTargets); _i4 < _arr3.length; _i4++) {
533
+ var key = _arr3[_i4];
534
+ var newStatus = (0, _App.getTargetManager)().calculateTargetStatus(tmodel, key);
535
+ tmodel.setTargetStatus(key, newStatus);
536
+ }
537
+ tmodel.noDomUpdatingTargets = undefined;
538
+ }
496
539
  }, {
497
540
  key: "createDoms",
498
541
  value: function createDoms() {
@@ -535,9 +578,8 @@ var TModelManager = exports.TModelManager = /*#__PURE__*/function () {
535
578
  } finally {
536
579
  _iterator9.f();
537
580
  }
538
- this.activatePendingTargetsAfterDom(this.lists.noDom);
539
- for (var _i2 = 0, _needsDom = needsDom; _i2 < _needsDom.length; _i2++) {
540
- var tmodel = _needsDom[_i2];
581
+ for (var _i5 = 0, _needsDom = needsDom; _i5 < _needsDom.length; _i5++) {
582
+ var tmodel = _needsDom[_i5];
541
583
  var domHolder = tmodel.getDomHolder();
542
584
  if (!domHolder) {
543
585
  tmodel.markLayoutDirty('noDomHolder');
@@ -580,8 +622,20 @@ var TModelManager = exports.TModelManager = /*#__PURE__*/function () {
580
622
  } finally {
581
623
  _iterator10.f();
582
624
  }
583
- for (var _i3 = 0, _styleBatch = styleBatch; _i3 < _styleBatch.length; _i3++) {
584
- var _tmodel = _styleBatch[_i3];
625
+ var _iterator11 = _createForOfIteratorHelper(this.lists.noDom),
626
+ _step11;
627
+ try {
628
+ for (_iterator11.s(); !(_step11 = _iterator11.n()).done;) {
629
+ var _tmodel3 = _step11.value;
630
+ this.catchupNoDomTargetsBeforeStyle(_tmodel3);
631
+ }
632
+ } catch (err) {
633
+ _iterator11.e(err);
634
+ } finally {
635
+ _iterator11.f();
636
+ }
637
+ for (var _i6 = 0, _styleBatch = styleBatch; _i6 < _styleBatch.length; _i6++) {
638
+ var _tmodel = _styleBatch[_i6];
585
639
  if (_tmodel.hasDom()) {
586
640
  _tmodel.hasDomNow = true;
587
641
  _tmodel.markLayoutDirty('hasDomNow');
@@ -590,7 +644,7 @@ var TModelManager = exports.TModelManager = /*#__PURE__*/function () {
590
644
  _TModelUtil.TModelUtil.fixStyle(_tmodel);
591
645
  _TModelUtil.TModelUtil.fixAsyncStyle(_tmodel);
592
646
  }
593
- this.activatePendingTargetsAfterDom(styleBatch);
647
+ this.activatePendingTargetsAfterDom(this.lists.noDom);
594
648
  (0, _App.getEvents)().attachEvents(this.lists.noDom.filter(function (t) {
595
649
  var _t$externalEventMap;
596
650
  return ((_t$externalEventMap = t.externalEventMap) === null || _t$externalEventMap === void 0 ? void 0 : _t$externalEventMap.size) > 0;
package/build/TUtil.js CHANGED
@@ -232,58 +232,6 @@ var TUtil = exports.TUtil = /*#__PURE__*/function () {
232
232
  }
233
233
  return false;
234
234
  }
235
- }, {
236
- key: "scheduleExecution",
237
- value: function scheduleExecution(tmodel, key) {
238
- var interval = tmodel.getTargetInterval(key);
239
- var now = TUtil.now();
240
- if (interval <= 0) {
241
- return 0;
242
- }
243
- if (tmodel.isTargetImperative(key) && tmodel.getTargetStep(key) === 0) {
244
- tmodel.setScheduleTimeStamp(key, now);
245
- return 0;
246
- }
247
- var remaining = tmodel.getScheduleRemainingTime(key);
248
- if (TUtil.isDefined(remaining)) {
249
- tmodel.setScheduleTimeStamp(key, now - Math.max(interval - remaining, 0));
250
- tmodel.resetScheduleRemainingTime(key);
251
- return remaining;
252
- }
253
- var lastScheduledTime = tmodel.getScheduleTimeStamp(key);
254
- if (TUtil.isDefined(lastScheduledTime)) {
255
- var elapsed = now - lastScheduledTime;
256
- return Math.max(interval - elapsed, 0);
257
- }
258
- tmodel.setScheduleTimeStamp(key, now);
259
- return interval;
260
- }
261
- }, {
262
- key: "pauseSchedule",
263
- value: function pauseSchedule(tmodel, key) {
264
- var interval = tmodel.getTargetInterval(key);
265
- var lastScheduledTime = tmodel.getScheduleTimeStamp(key);
266
- if (interval <= 0 || !TUtil.isDefined(lastScheduledTime)) {
267
- return;
268
- }
269
- var now = TUtil.now();
270
- var elapsed = now - lastScheduledTime;
271
- var remaining = Math.max(interval - elapsed, 0);
272
- tmodel.setScheduleRemainingTime(key, remaining);
273
- tmodel.resetScheduleTimeStamp(key);
274
- }
275
- }, {
276
- key: "resumeSchedule",
277
- value: function resumeSchedule(tmodel, key) {
278
- var remaining = tmodel.getScheduleRemainingTime(key);
279
- if (!TUtil.isDefined(remaining)) {
280
- return;
281
- }
282
- var now = TUtil.now();
283
- var interval = tmodel.getTargetInterval(key);
284
- tmodel.setScheduleTimeStamp(key, now - Math.max(interval - remaining, 0));
285
- tmodel.resetScheduleRemainingTime(key);
286
- }
287
235
  }, {
288
236
  key: "runTargetValue",
289
237
  value: function runTargetValue(tmodel, target, key, cycle, lastValue) {
@@ -368,5 +316,146 @@ var TUtil = exports.TUtil = /*#__PURE__*/function () {
368
316
  }
369
317
  return cloned;
370
318
  }
319
+ }, {
320
+ key: "advanceTargetByElapsed",
321
+ value: function advanceTargetByElapsed(tmodel, key) {
322
+ var _targetValue$valueLis2;
323
+ var targetValue = tmodel.targetValues[key];
324
+ if (!targetValue) {
325
+ return {
326
+ step: 0,
327
+ cycle: 0,
328
+ valuePointer: 1,
329
+ done: false
330
+ };
331
+ }
332
+ if (!targetValue.catchupAt) {
333
+ var _targetValue$valueLis;
334
+ return {
335
+ step: tmodel.getTargetStep(key),
336
+ cycle: tmodel.getTargetCycle(key),
337
+ valuePointer: (_targetValue$valueLis = targetValue.valueList) !== null && _targetValue$valueLis !== void 0 && _targetValue$valueLis.length ? tmodel.getValueListPointer(key) : 0,
338
+ done: tmodel.getTargetStep(key) >= tmodel.getTargetSteps(key)
339
+ };
340
+ }
341
+ var elapsedMs = TUtil.now() - targetValue.catchupAt;
342
+ if ((_targetValue$valueLis2 = targetValue.valueList) !== null && _targetValue$valueLis2 !== void 0 && _targetValue$valueLis2.length) {
343
+ return TUtil.advanceValueListTargetByElapsed(tmodel, key, elapsedMs);
344
+ } else {
345
+ return TUtil.advanceSimpleTargetByElapsed(tmodel, key, elapsedMs);
346
+ }
347
+ }
348
+ }, {
349
+ key: "advanceSimpleTargetByElapsed",
350
+ value: function advanceSimpleTargetByElapsed(tmodel, key, elapsedMs) {
351
+ var steps = tmodel.getTargetSteps(key);
352
+ var interval = tmodel.getTargetInterval(key) || 8;
353
+ var cycles = tmodel.getTargetCycles(key);
354
+ var step = tmodel.getTargetStep(key);
355
+ var cycle = tmodel.getTargetCycle(key);
356
+ if (steps <= 0) {
357
+ return {
358
+ step: steps,
359
+ valuePointer: 0,
360
+ cycle: cycles,
361
+ done: true
362
+ };
363
+ }
364
+ var remainingMs = elapsedMs;
365
+ while (remainingMs > 0 && cycle < cycles) {
366
+ var remainingSteps = Math.max(steps - step, 0);
367
+ var remainingSegmentMs = remainingSteps * interval;
368
+ if (remainingMs >= remainingSegmentMs) {
369
+ remainingMs -= remainingSegmentMs;
370
+ cycle++;
371
+ if (cycle >= cycles) {
372
+ return {
373
+ step: steps,
374
+ valuePointer: 0,
375
+ cycle: cycles,
376
+ done: true
377
+ };
378
+ }
379
+ step = 0;
380
+ continue;
381
+ }
382
+ var advancedSteps = TUtil.limit(Math.floor(remainingMs / interval), 0, remainingSteps);
383
+ step += advancedSteps;
384
+ return {
385
+ step: step,
386
+ steps: steps,
387
+ valuePointer: 0,
388
+ cycle: cycle,
389
+ done: false
390
+ };
391
+ }
392
+ return {
393
+ step: step,
394
+ steps: steps,
395
+ valuePointer: 0,
396
+ cycle: cycle,
397
+ done: cycle >= cycles
398
+ };
399
+ }
400
+ }, {
401
+ key: "advanceValueListTargetByElapsed",
402
+ value: function advanceValueListTargetByElapsed(tmodel, key, elapsedMs) {
403
+ var targetValue = tmodel.targetValues[key];
404
+ var valueList = targetValue.valueList;
405
+ var stepList = targetValue.stepList || [1];
406
+ var intervalList = targetValue.intervalList || [targetValue.interval || 8];
407
+ var cycles = tmodel.getTargetCycles(key);
408
+ var cycle = tmodel.getTargetCycle(key);
409
+ var valuePointer = tmodel.getValueListPointer(key);
410
+ var step = tmodel.getTargetStep(key);
411
+ var remainingMs = elapsedMs;
412
+ while (remainingMs > 0 && cycle < cycles) {
413
+ while (remainingMs > 0 && valuePointer < valueList.length) {
414
+ var segmentSteps = stepList[(valuePointer - 1) % stepList.length];
415
+ var interval = intervalList[(valuePointer - 1) % intervalList.length] || 8;
416
+ step = TUtil.limit(step, 0, segmentSteps);
417
+ var remainingSteps = Math.max(segmentSteps - step, 0);
418
+ var remainingSegmentMs = remainingSteps * interval;
419
+ if (remainingMs >= remainingSegmentMs) {
420
+ remainingMs -= remainingSegmentMs;
421
+ valuePointer++;
422
+ step = 0;
423
+ continue;
424
+ }
425
+ var advancedSteps = TUtil.limit(Math.floor(remainingMs / interval), 0, remainingSteps);
426
+ step += advancedSteps;
427
+ return {
428
+ step: step,
429
+ steps: segmentSteps,
430
+ valuePointer: valuePointer,
431
+ cycle: cycle,
432
+ done: false
433
+ };
434
+ }
435
+ cycle++;
436
+ if (cycle >= cycles) {
437
+ var finalPointer = valueList.length;
438
+ var finalStepIndex = Math.max(0, valueList.length - 2);
439
+ var finalSteps = stepList[finalStepIndex % stepList.length];
440
+ return {
441
+ step: finalSteps,
442
+ steps: finalSteps,
443
+ valuePointer: finalPointer,
444
+ cycle: cycles,
445
+ done: true
446
+ };
447
+ }
448
+ valuePointer = 1;
449
+ step = 0;
450
+ }
451
+ var currentSteps = stepList[(valuePointer - 1) % stepList.length];
452
+ return {
453
+ step: step,
454
+ steps: currentSteps,
455
+ valuePointer: valuePointer,
456
+ cycle: cycle,
457
+ done: cycle >= cycles
458
+ };
459
+ }
371
460
  }]);
372
461
  }();
@@ -39,8 +39,8 @@ var TargetExecutor = exports.TargetExecutor = /*#__PURE__*/function () {
39
39
  value: function prepareTarget(tmodel, key) {
40
40
  _TargetUtil.TargetUtil.currentTargetName = key;
41
41
  _TargetUtil.TargetUtil.currentTModel = tmodel;
42
- if (tmodel.isExecuted(key) && tmodel.getTargetCycles(key) > 1) {
43
- if (tmodel.getTargetCycle(key) < tmodel.getTargetCycles(key) - 1) {
42
+ if (tmodel.isExecuted(key)) {
43
+ if (tmodel.getTargetCycles(key) > 1 && tmodel.getTargetCycle(key) < tmodel.getTargetCycles(key) - 1) {
44
44
  tmodel.incrementTargetCycle(key);
45
45
  } else {
46
46
  tmodel.resetTargetCycle(key);
@@ -72,10 +72,22 @@ var TargetExecutor = exports.TargetExecutor = /*#__PURE__*/function () {
72
72
  }
73
73
  return targetValue;
74
74
  }
75
+ }, {
76
+ key: "resetImperativeProgress",
77
+ value: function resetImperativeProgress(targetValue) {
78
+ targetValue.step = 0;
79
+ targetValue.cycle = 0;
80
+ if (Array.isArray(targetValue.valueList)) {
81
+ targetValue.valuePointer = 1;
82
+ } else {
83
+ targetValue.valuePointer = 0;
84
+ }
85
+ }
75
86
  }, {
76
87
  key: "executeImperativeTarget",
77
88
  value: function executeImperativeTarget(tmodel, key, value, steps, interval, easing, originalTargetName, originalTModel) {
78
89
  var cycles = arguments.length > 8 && arguments[8] !== undefined ? arguments[8] : 1;
90
+ var options = arguments.length > 9 && arguments[9] !== undefined ? arguments[9] : {};
79
91
  var targetValue;
80
92
  if (typeof key === 'string') {
81
93
  var cleanKey = _TargetUtil.TargetUtil.getTargetName(key);
@@ -90,6 +102,7 @@ var TargetExecutor = exports.TargetExecutor = /*#__PURE__*/function () {
90
102
  targetValue = TargetExecutor.assignImperativeTargetValue(tmodel, key, originalTargetName, originalTModel);
91
103
  TargetExecutor.assignListTarget(tmodel, key, targetValue, value.list, value.list[0], vSteps, vInterval, vEasing, vCycles);
92
104
  } else if (_TargetParser.TargetParser.isTargetSpecObject(value)) {
105
+ var _options = TargetExecutor.getTargetOptions(value);
93
106
  var valueArray = _TargetParser.TargetParser.getValueStepsCycles(tmodel, key, value);
94
107
  var newValue = valueArray[0];
95
108
  var newSteps = valueArray[1];
@@ -100,7 +113,7 @@ var TargetExecutor = exports.TargetExecutor = /*#__PURE__*/function () {
100
113
  interval = _TUtil.TUtil.isDefined(newInterval) ? newInterval : interval;
101
114
  easing = _TUtil.TUtil.isDefined(newEasing) ? newEasing : easing;
102
115
  cycles = _TUtil.TUtil.isDefined(newCycles) ? newCycles : cycles;
103
- TargetExecutor.executeImperativeTarget(tmodel, key, newValue, steps, interval, easing, originalTargetName, originalTModel, cycles);
116
+ TargetExecutor.executeImperativeTarget(tmodel, key, newValue, steps, interval, easing, originalTargetName, originalTModel, cycles, _options);
104
117
  return;
105
118
  } else if (_TargetParser.TargetParser.isObjectTarget(key, value)) {
106
119
  var completeValue = _TargetData.TargetData.cssFunctionMap[key] ? _objectSpread(_objectSpread({}, _TargetData.TargetData.cssFunctionMap[key]), value) : value;
@@ -110,7 +123,9 @@ var TargetExecutor = exports.TargetExecutor = /*#__PURE__*/function () {
110
123
  var newInterval = interval;
111
124
  var newEasing = easing;
112
125
  var newCycles = cycles;
126
+ var newOptions = options;
113
127
  if (_typeof(newValue) === 'object' && !_TargetParser.TargetParser.isListTarget(newValue)) {
128
+ newOptions = TargetExecutor.getTargetOptions(newValue);
114
129
  var _valueArray = _TargetParser.TargetParser.getValueStepsCycles(tmodel, objectKey, completeValue[objectKey]);
115
130
  newValue = _valueArray[0];
116
131
  newSteps = _TUtil.TUtil.isDefined(_valueArray[1]) ? _valueArray[1] : steps;
@@ -118,7 +133,7 @@ var TargetExecutor = exports.TargetExecutor = /*#__PURE__*/function () {
118
133
  newEasing = _TUtil.TUtil.isDefined(_valueArray[3]) ? _valueArray[3] : easing;
119
134
  newCycles = _TUtil.TUtil.isDefined(_valueArray[4]) ? _valueArray[4] : cycles;
120
135
  }
121
- TargetExecutor.executeImperativeTarget(tmodel, objectKey, newValue, newSteps, newInterval, newEasing, originalTargetName, originalTModel, newCycles);
136
+ TargetExecutor.executeImperativeTarget(tmodel, objectKey, newValue, newSteps, newInterval, newEasing, originalTargetName, originalTModel, newCycles, newOptions);
122
137
  });
123
138
  } else {
124
139
  if (_typeof(value) === 'object' && !_TargetParser.TargetParser.isListTarget(value)) {
@@ -129,21 +144,19 @@ var TargetExecutor = exports.TargetExecutor = /*#__PURE__*/function () {
129
144
  interval = _TUtil.TUtil.isDefined(_valueArray2[2]) ? _valueArray2[2] : interval;
130
145
  easing = _TUtil.TUtil.isDefined(_valueArray2[3]) ? _valueArray2[3] : easing;
131
146
  cycles = _TUtil.TUtil.isDefined(_valueArray2[4]) ? _valueArray2[4] : cycles;
132
- TargetExecutor.executeImperativeTarget(tmodel, key, value, steps, interval, easing, originalTargetName, originalTModel, cycles);
147
+ TargetExecutor.executeImperativeTarget(tmodel, key, value, steps, interval, easing, originalTargetName, originalTModel, cycles, options);
133
148
  } else {
134
149
  targetValue = TargetExecutor.assignImperativeTargetValue(tmodel, key, originalTargetName, originalTModel, cycles);
135
150
  TargetExecutor.assignSingleTarget(targetValue, value, undefined, steps, cycles, interval, easing);
136
- targetValue.step = 0;
137
- targetValue.cycle = 0;
138
151
  }
139
152
  } else {
140
153
  targetValue = TargetExecutor.assignImperativeTargetValue(tmodel, key, originalTargetName, originalTModel, cycles);
141
154
  TargetExecutor.assignSingleTarget(targetValue, value, undefined, steps, cycles, interval, easing);
142
- targetValue.step = 0;
143
- targetValue.cycle = 0;
144
155
  }
145
156
  }
146
157
  if (targetValue) {
158
+ TargetExecutor.resetImperativeProgress(targetValue);
159
+ TargetExecutor.assignTargetOptions(targetValue, options);
147
160
  TargetExecutor.updateTarget(tmodel, targetValue, key, true);
148
161
  if (tmodel.isTargetDone(key)) {
149
162
  _TargetUtil.TargetUtil.shouldActivateNextTarget(tmodel, key);
@@ -158,7 +171,10 @@ var TargetExecutor = exports.TargetExecutor = /*#__PURE__*/function () {
158
171
  TargetExecutor.snapActualToTarget(tmodel, key);
159
172
  }
160
173
  targetValue.executionFlag = true;
161
- targetValue.executionCount++, tmodel.addToStyleTargetList(key, enforce);
174
+ targetValue.executionCount++;
175
+ if (!targetValue.snapAnimation) {
176
+ tmodel.addToStyleTargetList(key, enforce);
177
+ }
162
178
  tmodel.setTargetMethodName(key, 'value');
163
179
  var newStatus = TargetExecutor.calculateTargetStatus(tmodel, targetValue, key);
164
180
  tmodel.setTargetStatus(key, newStatus);
@@ -244,6 +260,30 @@ var TargetExecutor = exports.TargetExecutor = /*#__PURE__*/function () {
244
260
  }
245
261
  _AnimationUtil.AnimationUtil.overrideAnimatedKeyWithSnap(tmodel, key, newValue);
246
262
  }
263
+ }, {
264
+ key: "getTargetOptions",
265
+ value: function getTargetOptions(value) {
266
+ var options = {};
267
+ if (!value || _typeof(value) !== 'object') {
268
+ return options;
269
+ }
270
+ if (Object.prototype.hasOwnProperty.call(value, 'pauseOn')) {
271
+ options.pauseOn = value.pauseOn;
272
+ }
273
+ return options;
274
+ }
275
+ }, {
276
+ key: "assignTargetOptions",
277
+ value: function assignTargetOptions(targetValue, options) {
278
+ if (!options) {
279
+ return;
280
+ }
281
+ if (Object.prototype.hasOwnProperty.call(options, 'pauseOn')) {
282
+ targetValue.pauseOn = options.pauseOn;
283
+ } else {
284
+ delete targetValue.pauseOn;
285
+ }
286
+ }
247
287
  }, {
248
288
  key: "resolveTargetValue",
249
289
  value: function resolveTargetValue(tmodel, key) {