targetj 1.0.234 → 1.0.235

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.
@@ -98,19 +98,11 @@ var RunScheduler = exports.RunScheduler = /*#__PURE__*/function () {
98
98
  var insertTime = _TUtil.TUtil.now();
99
99
  this.delayRun(effectiveDelay, runId, insertTime);
100
100
  }
101
- }, {
102
- key: "timeSchedule",
103
- value: function timeSchedule(delay, runId) {
104
- if (!_App.tApp.isRunning() || this.resetting) {
105
- return;
106
- }
107
- this.delayRun(delay, runId, _TUtil.TUtil.now());
108
- }
109
101
  }, {
110
102
  key: "run",
111
103
  value: function () {
112
104
  var _run = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(delay, runId) {
113
- var _this$delayProcess;
105
+ var handedOff;
114
106
  return _regeneratorRuntime().wrap(function _callee2$(_context2) {
115
107
  while (1) switch (_context2.prev = _context2.next) {
116
108
  case 0:
@@ -133,53 +125,56 @@ var RunScheduler = exports.RunScheduler = /*#__PURE__*/function () {
133
125
  this.runId = runId;
134
126
  this.runningFlag = true;
135
127
  this.runStartTime = _TUtil.TUtil.now();
136
- if (_App.tApp.debugLevel === 1) {
137
- _TUtil.TUtil.log(true)("Request from: ".concat(runId, " delay: ").concat(delay, " runningStep:").concat(this.runningStep, " dom:").concat(this.domProcessing, " runs:").concat(this.nextRuns.length, " D:").concat((_this$delayProcess = this.delayProcess) === null || _this$delayProcess === void 0 ? void 0 : _this$delayProcess.delay, " events:").concat((0, _App.getEvents)().eventQueue.length));
138
- }
128
+ handedOff = false;
129
+ _context2.prev = 10;
139
130
  if (!(this.phase === 0)) {
140
- _context2.next = 16;
131
+ _context2.next = 17;
141
132
  break;
142
133
  }
143
134
  (0, _App.getEvents)().captureEvents();
144
135
  _App.tApp.targetManager.applyTargetValues((0, _App.tRoot)());
145
- _context2.next = 15;
136
+ _context2.next = 16;
146
137
  return (0, _App.getLocationManager)().calculateAll();
147
- case 15:
148
- this.phase = 1;
149
138
  case 16:
139
+ this.phase = 1;
140
+ case 17:
150
141
  if (!(_TUtil.TUtil.now() - this.runStartTime > FRAME_BUDGET_MS)) {
151
- _context2.next = 19;
142
+ _context2.next = 21;
152
143
  break;
153
144
  }
145
+ handedOff = true;
154
146
  this.requestNextSlice(runId);
155
147
  return _context2.abrupt("return");
156
- case 19:
148
+ case 21:
157
149
  if (this.phase === 1) {
158
150
  this.runningStep = _App.tApp.manager.analyze();
159
151
  this.phase = 2;
160
152
  }
161
153
  if (!(_TUtil.TUtil.now() - this.runStartTime > FRAME_BUDGET_MS)) {
162
- _context2.next = 23;
154
+ _context2.next = 26;
163
155
  break;
164
156
  }
157
+ handedOff = true;
165
158
  this.requestNextSlice(runId);
166
159
  return _context2.abrupt("return");
167
- case 23:
160
+ case 26:
168
161
  if (this.phase === 2) {
169
162
  (0, _App.getLocationManager)().calculateActivated();
170
163
  _App.tApp.events.resetEventsOnTimeout();
171
164
  this.phase = 3;
172
165
  }
173
166
  if (!(_TUtil.TUtil.now() - this.runStartTime > FRAME_BUDGET_MS)) {
174
- _context2.next = 27;
167
+ _context2.next = 31;
175
168
  break;
176
169
  }
170
+ handedOff = true;
177
171
  this.requestNextSlice(runId);
178
172
  return _context2.abrupt("return");
179
- case 27:
173
+ case 31:
180
174
  if (this.phase === 3) {
181
175
  if (this.runningStep >= 0) {
182
176
  if (this.domProcessing === 0) {
177
+ handedOff = true;
183
178
  this.domOperations(this.runningStep);
184
179
  } else if (!this.rerunId) {
185
180
  this.rerunId = "domrun ".concat(runId);
@@ -191,11 +186,24 @@ var RunScheduler = exports.RunScheduler = /*#__PURE__*/function () {
191
186
  if (this.domProcessing === 0) {
192
187
  this.needsRerun();
193
188
  }
194
- case 30:
189
+ _context2.next = 40;
190
+ break;
191
+ case 36:
192
+ _context2.prev = 36;
193
+ _context2.t0 = _context2["catch"](10);
194
+ this.phase = 0;
195
+ throw _context2.t0;
196
+ case 40:
197
+ _context2.prev = 40;
198
+ if (!handedOff && this.domProcessing === 0) {
199
+ this.runningFlag = false;
200
+ }
201
+ return _context2.finish(40);
202
+ case 43:
195
203
  case "end":
196
204
  return _context2.stop();
197
205
  }
198
- }, _callee2, this);
206
+ }, _callee2, this, [[10, 36, 40, 43]]);
199
207
  }));
200
208
  function run(_x, _x2) {
201
209
  return _run.apply(this, arguments);
@@ -213,7 +221,7 @@ var RunScheduler = exports.RunScheduler = /*#__PURE__*/function () {
213
221
  this.sliceQueued = true;
214
222
  requestAnimationFrame(function () {
215
223
  _this.sliceQueued = false;
216
- _this.delayRun(0, "slice-".concat(runId), _TUtil.TUtil.now());
224
+ _this.schedule(0, "slice-".concat(runId));
217
225
  });
218
226
  }
219
227
  }, {
@@ -225,35 +233,32 @@ var RunScheduler = exports.RunScheduler = /*#__PURE__*/function () {
225
233
  var id = this.rerunId;
226
234
  this.rerunId = '';
227
235
  this.schedule(0, "rerun-".concat(id));
228
- return;
229
- }
230
- var newDelay = this.nextRuns.length > 0 ? this.nextRuns[0].delay - (_TUtil.TUtil.now() - this.nextRuns[0].insertTime) : undefined;
231
- if (newDelay === undefined || (0, _App.getManager)().lists.activeTModels.length > 0 || (0, _App.getManager)().lists.updatingTModels.length > 0 || (0, _App.getManager)().lists.restyle.length > 0 || (0, _App.getManager)().lists.reasyncStyle.length > 0 || (0, _App.getEvents)().eventQueue.length > 0 || (0, _App.getLocationManager)().activatedList.length > 0) {
232
- if ((0, _App.getEvents)().eventQueue.length > 0) {
233
- this.schedule(1, "events-".concat((0, _App.getEvents)().eventQueue.length));
234
- } else if ((0, _App.getLocationManager)().activatedList.length > 0) {
235
- this.schedule(1, "getManager-locationManager-activatedList");
236
- } else if ((0, _App.getManager)().lists.updatingTModels.length > 0) {
237
- this.schedule(1, "getManager-needsRerun-updatingTModels");
238
- } else if ((0, _App.getManager)().lists.activeTModels.length > 0) {
239
- var activeTModel = (0, _App.getManager)().lists.activeTModels.find(function (tmodel) {
240
- return tmodel.targetExecutionCount === 0 || tmodel.activeTargetList.filter(function (target) {
241
- return !tmodel.isScheduledPending(target);
242
- }).some(function (target) {
243
- return tmodel.shouldScheduleRun(target);
236
+ } else if ((0, _App.getEvents)().eventQueue.length > 0) {
237
+ this.schedule(0, "events-".concat((0, _App.getEvents)().eventQueue.length));
238
+ } else {
239
+ var newDelay = this.nextRuns.length > 0 ? this.nextRuns[0].delay - (_TUtil.TUtil.now() - this.nextRuns[0].insertTime) : undefined;
240
+ if (newDelay === undefined || (0, _App.getManager)().lists.activeTModels.length > 0 || (0, _App.getManager)().lists.updatingTModels.length > 0 || (0, _App.getManager)().lists.restyle.length > 0 || (0, _App.getManager)().lists.reasyncStyle.length > 0 || (0, _App.getEvents)().eventQueue.length > 0 || (0, _App.getLocationManager)().activatedList.length > 0) {
241
+ if ((0, _App.getLocationManager)().activatedList.length > 0) {
242
+ this.schedule(1, "getManager-locationManager-activatedList");
243
+ } else if ((0, _App.getManager)().lists.updatingTModels.length > 0) {
244
+ this.schedule(1, "getManager-needsRerun-updatingTModels");
245
+ } else if ((0, _App.getManager)().lists.activeTModels.length > 0) {
246
+ var activeTModel = (0, _App.getManager)().lists.activeTModels.find(function (tmodel) {
247
+ return tmodel.targetExecutionCount === 0 || tmodel.activeTargetList.filter(function (target) {
248
+ return !tmodel.isScheduledPending(target);
249
+ }).some(function (target) {
250
+ return tmodel.shouldScheduleRun(target);
251
+ });
244
252
  });
245
- });
246
- if (activeTModel) {
247
- var delay = !this.activeStartTime || _TUtil.TUtil.now() - this.activeStartTime > 15 ? 1 : 15;
248
- this.activeStartTime = _TUtil.TUtil.now();
249
- this.schedule(delay, "getManager-needsRerun-".concat(activeTModel.oid, "-").concat(activeTModel.activeTargetList));
253
+ if (activeTModel) {
254
+ var delay = !this.activeStartTime || _TUtil.TUtil.now() - this.activeStartTime > 15 ? 1 : 15;
255
+ this.activeStartTime = _TUtil.TUtil.now();
256
+ this.schedule(delay, "getManager-needsRerun-".concat(activeTModel.oid, "-").concat(activeTModel.activeTargetList));
257
+ }
250
258
  }
251
259
  }
252
260
  }
253
- if (!this.delayProcess && this.nextRuns.length > 0) {
254
- var _delay = Math.max(1, this.nextRuns[0].delay - (_TUtil.TUtil.now() - this.nextRuns[0].insertTime));
255
- this.schedule(_delay, "wake-nextRun");
256
- }
261
+ this.executeNextRun();
257
262
  }
258
263
  }, {
259
264
  key: "domOperations",
@@ -262,20 +267,23 @@ var RunScheduler = exports.RunScheduler = /*#__PURE__*/function () {
262
267
  this.domProcessing = 1;
263
268
  if (runningStep === 10) {
264
269
  this.domFixStyles();
265
- } else {
266
- Promise.all(RunScheduler.domSteps.filter(function (_, index) {
267
- return index >= runningStep;
268
- }).map(function (step) {
269
- return Promise.resolve().then(step);
270
- })).then(function () {
271
- if ((0, _App.getManager)().lists.restyle.length) {
272
- _this2.domFixStyles();
273
- } else {
274
- _this2.domProcessing = 0;
275
- _this2.needsRerun();
276
- }
277
- });
270
+ return;
278
271
  }
272
+ Promise.all(RunScheduler.domSteps.filter(function (_, index) {
273
+ return index >= runningStep;
274
+ }).map(function (step) {
275
+ return Promise.resolve().then(step);
276
+ })).then(function () {
277
+ if ((0, _App.getManager)().lists.restyle.length) {
278
+ _this2.domFixStyles();
279
+ return;
280
+ }
281
+ _this2.domProcessing = 0;
282
+ _this2.needsRerun();
283
+ }).catch(function () {
284
+ _this2.domProcessing = 0;
285
+ _this2.needsRerun();
286
+ });
279
287
  }
280
288
  }, {
281
289
  key: "domFixStyles",
@@ -283,16 +291,19 @@ var RunScheduler = exports.RunScheduler = /*#__PURE__*/function () {
283
291
  var _this3 = this;
284
292
  this.domProcessing = 2;
285
293
  requestAnimationFrame(function () {
286
- (0, _App.getManager)().fixStyles();
287
- _this3.domProcessing = 0;
288
- _this3.needsRerun();
294
+ try {
295
+ (0, _App.getManager)().fixStyles();
296
+ } finally {
297
+ _this3.domProcessing = 0;
298
+ _this3.needsRerun();
299
+ }
289
300
  });
290
301
  }
291
302
  }, {
292
303
  key: "clearDelayProcess",
293
304
  value: function clearDelayProcess() {
294
- var _this$delayProcess2;
295
- if ((_this$delayProcess2 = this.delayProcess) !== null && _this$delayProcess2 !== void 0 && _this$delayProcess2.timeoutId) {
305
+ var _this$delayProcess;
306
+ if ((_this$delayProcess = this.delayProcess) !== null && _this$delayProcess !== void 0 && _this$delayProcess.timeoutId) {
296
307
  clearTimeout(this.delayProcess.timeoutId);
297
308
  this.delayProcess.timeoutId = undefined;
298
309
  }
@@ -310,53 +321,78 @@ var RunScheduler = exports.RunScheduler = /*#__PURE__*/function () {
310
321
  delay: delay,
311
322
  timeoutId: undefined
312
323
  };
313
- delayProcess.timeoutId = setTimeout( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {
314
- return _regeneratorRuntime().wrap(function _callee3$(_context3) {
315
- while (1) switch (_context3.prev = _context3.next) {
316
- case 0:
317
- if (!(_this4.delayProcess !== delayProcess)) {
318
- _context3.next = 2;
319
- break;
320
- }
321
- return _context3.abrupt("return");
322
- case 2:
323
- delayProcess.timeoutId = undefined;
324
- _context3.next = 5;
325
- return _this4.run(delay, runId);
326
- case 5:
327
- if (_this4.delayProcess === delayProcess) {
324
+ var execute = /*#__PURE__*/function () {
325
+ var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {
326
+ return _regeneratorRuntime().wrap(function _callee3$(_context3) {
327
+ while (1) switch (_context3.prev = _context3.next) {
328
+ case 0:
329
+ if (!(_this4.delayProcess !== delayProcess)) {
330
+ _context3.next = 2;
331
+ break;
332
+ }
333
+ return _context3.abrupt("return");
334
+ case 2:
335
+ _this4.clearDelayProcess();
336
+ _context3.prev = 3;
337
+ _context3.next = 6;
338
+ return _this4.run(delay, runId);
339
+ case 6:
340
+ _context3.prev = 6;
328
341
  _this4.executeNextRun();
329
- }
330
- case 6:
331
- case "end":
332
- return _context3.stop();
333
- }
334
- }, _callee3);
335
- })), Math.max(0, delay));
342
+ return _context3.finish(6);
343
+ case 9:
344
+ case "end":
345
+ return _context3.stop();
346
+ }
347
+ }, _callee3, null, [[3,, 6, 9]]);
348
+ }));
349
+ return function execute() {
350
+ return _ref.apply(this, arguments);
351
+ };
352
+ }();
336
353
  this.delayProcess = delayProcess;
354
+ delayProcess.timeoutId = setTimeout(execute, delay);
337
355
  }
338
356
  }, {
339
357
  key: "executeNextRun",
340
358
  value: function executeNextRun() {
341
- var lastNegativeRun = null;
342
- var nextValidRun = null;
359
+ if (this.runningFlag || this.domProcessing > 0) {
360
+ return;
361
+ }
362
+ if (this.delayProcess) {
363
+ if (this.nextRuns.length > 0) {
364
+ var nextRun = this.nextRuns[0];
365
+ var nextRunTime = nextRun.insertTime + nextRun.delay;
366
+ if (nextRunTime < this.delayProcess.runTime) {
367
+ clearTimeout(this.delayProcess.timeoutId);
368
+ var remaining = Math.max(0, this.delayProcess.runTime - _TUtil.TUtil.now());
369
+ this.insertRun(this.delayProcess.runId, _TUtil.TUtil.now(), remaining);
370
+ this.delayProcess = undefined;
371
+ } else {
372
+ return;
373
+ }
374
+ } else {
375
+ return;
376
+ }
377
+ }
378
+ var runToExecute = null;
343
379
  while (this.nextRuns.length > 0) {
344
- var nextRun = this.nextRuns.shift();
380
+ var _nextRun = this.nextRuns.shift();
345
381
  var now = _TUtil.TUtil.now();
346
- var newDelay = nextRun.delay - (now - nextRun.insertTime);
347
- if (newDelay < 0) {
348
- lastNegativeRun = nextRun;
382
+ var newDelay = _nextRun.delay - (now - _nextRun.insertTime);
383
+ if (newDelay <= 0) {
384
+ runToExecute = _nextRun;
349
385
  } else {
350
- lastNegativeRun = null;
351
- nextValidRun = nextRun;
386
+ this.nextRuns.unshift(_nextRun);
352
387
  break;
353
388
  }
354
389
  }
355
- if (lastNegativeRun) {
356
- this.setDelayProcess(lastNegativeRun.runId, lastNegativeRun.insertTime, lastNegativeRun.delay, _TUtil.TUtil.now(), 0);
357
- } else if (nextValidRun) {
390
+ if (runToExecute) {
391
+ this.setDelayProcess(runToExecute.runId, runToExecute.insertTime, runToExecute.delay, _TUtil.TUtil.now(), 0);
392
+ } else if (this.nextRuns.length > 0) {
393
+ var nextValidRun = this.nextRuns[0];
358
394
  var _now = _TUtil.TUtil.now();
359
- var _newDelay = Math.max(1, nextValidRun.delay - (_now - nextValidRun.insertTime));
395
+ var _newDelay = Math.max(0, nextValidRun.delay - (_now - nextValidRun.insertTime));
360
396
  this.setDelayProcess(nextValidRun.runId, nextValidRun.insertTime, nextValidRun.delay, _now + _newDelay, _newDelay);
361
397
  } else {
362
398
  this.clearDelayProcess();
@@ -386,7 +422,13 @@ var RunScheduler = exports.RunScheduler = /*#__PURE__*/function () {
386
422
  var r = this.nextRuns[mid];
387
423
  var diffTime = r.insertTime + r.delay - (newInsertTime + newDelay);
388
424
  if (diffTime === 0) {
389
- r.runId += '-' + newRunId;
425
+ var _r$count;
426
+ r.count = ((_r$count = r.count) !== null && _r$count !== void 0 ? _r$count : 1) + 1;
427
+ if (r.runId.length < 500) {
428
+ r.runId += '-' + newRunId;
429
+ } else if (!r.runId.endsWith('-...')) {
430
+ r.runId += '-...';
431
+ }
390
432
  return;
391
433
  }
392
434
  if (diffTime > 0) {
@@ -708,7 +708,11 @@ _defineProperty(TargetData, "attributesToTargets", {
708
708
  onscroll: 'onScroll',
709
709
  onscrollleft: 'onScrollLeft',
710
710
  onscrolltop: 'onScrollTop',
711
+ onscrollleftend: 'onScrollLeftEnd',
712
+ onscrolltopend: 'onScrollTopEnd',
711
713
  onwindowscroll: 'onWindowScroll',
714
+ onwindowscrolltopend: 'onWindowScrollTopEnd',
715
+ onwindowscrollleftend: 'onWindowScrollLeftEnd',
712
716
  onpopstate: 'onPopState',
713
717
  onchange: 'onChange',
714
718
  oninput: 'onInput',
@@ -796,7 +800,11 @@ _defineProperty(TargetData, "targetToEventsMapping", {
796
800
  onScroll: ['touchStart', 'mouseStart', 'wheelEvents'],
797
801
  onScrollLeft: ['touchStart', 'mouseStart', 'wheelEvents'],
798
802
  onScrollTop: ['touchStart', 'mouseStart', 'wheelEvents'],
803
+ onScrollLeftEnd: ['touchStart', 'mouseStart', 'wheelEvents'],
804
+ onScrollTopEnd: ['touchStart', 'mouseStart', 'wheelEvents'],
799
805
  onWindowScroll: ['containerScroll'],
806
+ onWindowScrollTopEnd: ['containerScroll'],
807
+ onWindowScrollLeftEnd: ['containerScroll'],
800
808
  onPopState: ['popState'],
801
809
  onChange: ['changeEvents'],
802
810
  onInput: ['inputEvents'],
@@ -879,8 +887,20 @@ _defineProperty(TargetData, "allEventMap", {
879
887
  onScrollLeft: function onScrollLeft(tmodel) {
880
888
  return (0, _App.getEvents)().getOrientation() !== 'vertical' && (0, _App.getEvents)().isScrollLeftHandler(tmodel) && (0, _App.getEvents)().deltaX();
881
889
  },
882
- onWindowScroll: function onWindowScroll() {
883
- return (0, _App.getEvents)().getEventType() === 'scroll';
890
+ onScrollTopEnd: function onScrollTopEnd(tmodel) {
891
+ return (0, _App.getEvents)().getEventType() === 'scrolltopend' && (0, _App.getEvents)().isScrollTopEndHandler(tmodel);
892
+ },
893
+ onScrollLeftEnd: function onScrollLeftEnd(tmodel) {
894
+ return (0, _App.getEvents)().getEventType() === 'scrollleftend' && (0, _App.getEvents)().isScrollLeftEndHandler(tmodel);
895
+ },
896
+ onWindowScroll: function onWindowScroll(tmodel) {
897
+ return (0, _App.getEvents)().getEventType() === 'scroll' && (0, _App.getEvents)().getEventTModel() === tmodel;
898
+ },
899
+ onWindowScrollTopEnd: function onWindowScrollTopEnd(tmodel) {
900
+ return (0, _App.getEvents)().getEventType() === 'windowscrolltopend' && (0, _App.getEvents)().getEventTModel() === tmodel;
901
+ },
902
+ onWindowScrollLeftEnd: function onWindowScrollLeftEnd(tmodel) {
903
+ return (0, _App.getEvents)().getEventType() === 'windowscrollleftend' && (0, _App.getEvents)().getEventTModel() === tmodel;
884
904
  },
885
905
  onPopState: function onPopState() {
886
906
  return (0, _App.getEvents)().getEventType() === 'popstate';
@@ -163,7 +163,7 @@ var TargetExecutor = exports.TargetExecutor = /*#__PURE__*/function () {
163
163
  var newStatus = TargetExecutor.calculateTargetStatus(tmodel, targetValue, key);
164
164
  tmodel.setTargetStatus(key, newStatus);
165
165
  if (!_TargetData.TargetData.ignoreRerun[key] && tmodel.shouldScheduleRun(key)) {
166
- (0, _App.getRunScheduler)().schedule(1, 'updateTarget2-' + tmodel.oid + "-" + key);
166
+ (0, _App.getRunScheduler)().schedule(1, 'updateTarget2-' + tmodel.oid);
167
167
  }
168
168
  }
169
169
  }, {
@@ -65,7 +65,7 @@ var TargetManager = exports.TargetManager = /*#__PURE__*/function () {
65
65
  }
66
66
  var schedulePeriod = _TUtil.TUtil.scheduleExecution(tmodel, key);
67
67
  if (schedulePeriod > 0) {
68
- (0, _App.getRunScheduler)().timeSchedule(schedulePeriod, "targetSchedule__".concat(tmodel.oid, "__").concat(key, "_").concat(schedulePeriod));
68
+ (0, _App.getRunScheduler)().schedule(schedulePeriod, "targetSchedule__".concat(tmodel.oid));
69
69
  return;
70
70
  }
71
71
  }
@@ -97,7 +97,7 @@ var TargetManager = exports.TargetManager = /*#__PURE__*/function () {
97
97
  var key = _step2.value;
98
98
  schedulePeriod = _TUtil.TUtil.scheduleExecution(tmodel, key);
99
99
  if (schedulePeriod > 0) {
100
- (0, _App.getRunScheduler)().schedule(schedulePeriod, "setActualValues-".concat(tmodel.oid, "__").concat(key, "_").concat(schedulePeriod));
100
+ (0, _App.getRunScheduler)().schedule(schedulePeriod, "setActualValues-".concat(tmodel.oid));
101
101
  } else {
102
102
  tmodel.resetScheduleTimeStamp(key);
103
103
  this.setActualValue(tmodel, key);
@@ -333,7 +333,7 @@ var TargetManager = exports.TargetManager = /*#__PURE__*/function () {
333
333
  return;
334
334
  }
335
335
  if (!tmodel.isTargetImperative(key) && !tmodel.isTargetEnabled(key)) {
336
- (0, _App.getRunScheduler)().schedule(15, "setActualValue-postpone-".concat(tmodel.oid, "__").concat(key));
336
+ (0, _App.getRunScheduler)().schedule(15, "setActualValue-postpone-".concat(tmodel.oid, "}"));
337
337
  return;
338
338
  }
339
339
  var theValue = tmodel.getTargetValue(key);