targetj 1.0.74 → 1.0.76

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.
Files changed (44) hide show
  1. package/babel.config.json +17 -0
  2. package/build/$Dom.js +424 -0
  3. package/build/App.js +187 -0
  4. package/build/Bracket.js +157 -0
  5. package/build/BracketGenerator.js +86 -0
  6. package/build/Browser.js +105 -0
  7. package/build/ColorUtil.js +182 -0
  8. package/build/Dim.js +31 -0
  9. package/build/Easing.js +59 -0
  10. package/build/EventListener.js +664 -0
  11. package/build/LoadingManager.js +366 -0
  12. package/build/LocationManager.js +211 -0
  13. package/build/Moves.js +71 -0
  14. package/build/PageManager.js +113 -0
  15. package/build/SearchUtil.js +196 -0
  16. package/build/TModel.js +1000 -0
  17. package/build/TModelManager.js +605 -0
  18. package/build/TUtil.js +188 -0
  19. package/build/TargetExecutor.js +117 -0
  20. package/build/TargetManager.js +197 -0
  21. package/build/TargetUtil.js +299 -0
  22. package/build/Viewport.js +163 -0
  23. package/package.json +11 -4
  24. package/webpack.config.js +14 -1
  25. package/src/$Dom.js +0 -380
  26. package/src/App.js +0 -224
  27. package/src/Bracket.js +0 -212
  28. package/src/Browser.js +0 -122
  29. package/src/ColorUtil.js +0 -166
  30. package/src/Dim.js +0 -21
  31. package/src/Easing.js +0 -41
  32. package/src/EventListener.js +0 -570
  33. package/src/LoadingManager.js +0 -368
  34. package/src/LocationManager.js +0 -236
  35. package/src/Moves.js +0 -59
  36. package/src/PageManager.js +0 -87
  37. package/src/SearchUtil.js +0 -210
  38. package/src/TModel.js +0 -937
  39. package/src/TModelManager.js +0 -575
  40. package/src/TUtil.js +0 -162
  41. package/src/TargetExecutor.js +0 -113
  42. package/src/TargetManager.js +0 -191
  43. package/src/TargetUtil.js +0 -307
  44. package/src/Viewport.js +0 -180
@@ -1,575 +0,0 @@
1
- import { $Dom } from "./$Dom.js";
2
- import { browser } from "./Browser.js";
3
- import { TUtil } from "./TUtil.js";
4
- import { tapp } from "./App.js";
5
-
6
- function TModelManager() {
7
- this.init();
8
- }
9
-
10
- TModelManager.prototype.init = function() {
11
- this.lists = {
12
- visible: [],
13
- rerender: [],
14
- restyle: [],
15
- reattach: [],
16
- invisibleDom: [],
17
- deletedTModel: [],
18
- visibleNoDom: [],
19
- updatingTModels: [],
20
- updatingTargets: [],
21
- activeTargets: []
22
- };
23
- this.visibleTypeMap = {};
24
- this.visibleOidMap = {};
25
- this.targetMethodMap = {};
26
-
27
- this.doneTargets = [];
28
-
29
- this.nextRuns = [];
30
- this.runningStep = 0;
31
- this.runningFlag = false;
32
- this.rerunOid = '';
33
- this.cycleStats = {
34
- duration: 0,
35
- count: 0,
36
- totalDuration: 0,
37
- average : 0
38
- };
39
- };
40
-
41
-
42
- TModelManager.prototype.resetRuns = function() {
43
- this.nextRuns = [];
44
- this.runningStep = 0;
45
- this.runningFlag = false;
46
- this.rerunOid = '';
47
- };
48
-
49
- TModelManager.prototype.resetCycle = function() {
50
- this.cycleStats.duration = 0;
51
- this.cycleStats.count = 0;
52
- this.cycleStats.totalDuration = 0;
53
- this.cycleStats.average = 0;
54
- };
55
-
56
- TModelManager.prototype.clear = function() {
57
- this.lists.visible.length = 0;
58
- this.lists.rerender.length = 0;
59
- this.lists.restyle.length = 0;
60
- this.lists.reattach.length = 0;
61
- this.lists.visibleNoDom.length = 0;
62
- this.lists.updatingTModels.length = 0;
63
- this.lists.updatingTargets.length = 0;
64
- this.lists.activeTargets.length = 0;
65
- this.visibleTypeMap = {};
66
- this.visibleOidMap = {};
67
- this.targetMethodMap = {};
68
- };
69
-
70
- TModelManager.prototype.visibles = function(type) {
71
- return this.lists.visible.filter(function(tmodel) { return tmodel.type === type || !type ; }).map(function(tmodel) { return tmodel.oid; });
72
- };
73
-
74
- TModelManager.prototype.findVisible = function(type) {
75
- return this.lists.visible.find(function(tmodel) { return tmodel.type === type; });
76
- };
77
-
78
- TModelManager.prototype.findLastVisible = function(type) {
79
- return this.lists.visible.findLast(function(tmodel) { return tmodel.type === type; });
80
- };
81
-
82
-
83
- TModelManager.prototype.analyze = function() {
84
- var i, tmodel;
85
-
86
- var lastVisibleMap = TUtil.list2map(this.lists.visible);
87
-
88
- this.clear();
89
-
90
- for (i = 0; i < tapp.locationManager.hasLocationList.length; i++) {
91
- tmodel = tapp.locationManager.hasLocationList[i];
92
- var visible = tmodel.isVisible();
93
-
94
- if (tmodel.isMarkedDeleted() && this.lists.deletedTModel.indexOf(tmodel) === -1) {
95
- this.lists.deletedTModel = [].concat(this.lists.deletedTModel, tmodel, tmodel.getAllNestedChildren());
96
-
97
- lastVisibleMap[tmodel.oid] = null;
98
- } else if (visible) {
99
- lastVisibleMap[tmodel.oid] = null;
100
-
101
- if (tmodel.hasDom() && !tmodel.canHaveDom() && this.lists.invisibleDom.indexOf(tmodel) === -1) {
102
- this.lists.invisibleDom.push(tmodel);
103
- }
104
-
105
- this.lists.visible.push(tmodel);
106
-
107
- this.needsRerender(tmodel);
108
- this.needsRestyle(tmodel);
109
- this.needsReattach(tmodel);
110
-
111
- if (tmodel.updatingTargetList.length > 0) {
112
- this.lists.updatingTModels.push(tmodel);
113
- this.lists.updatingTargets = this.lists.updatingTargets.concat((tmodel.updatingTargetList));
114
- }
115
-
116
- var activeTargets = Object.keys(tmodel.activeTargetMap);
117
- if (activeTargets.length > 0) {
118
- this.lists.activeTargets = this.lists.activeTargets.concat("'" + tmodel.oid + "'", activeTargets);
119
- }
120
-
121
- if (Object.keys(tmodel.targetMethodMap).length > 0) {
122
- this.targetMethodMap[tmodel.oid] = Object.assign({}, tmodel.targetMethodMap);
123
- }
124
-
125
- this.visibleOidMap[tmodel.oid] = tmodel;
126
- if (!this.visibleTypeMap[tmodel.type]) {
127
- this.visibleTypeMap[tmodel.type] = [];
128
- }
129
- this.visibleTypeMap[tmodel.type].push(tmodel);
130
-
131
- if (tmodel.canHaveDom() && !tmodel.hasDom() && tmodel.getDomHolder() && tmodel.getDomHolder().exists() && this.lists.visibleNoDom.indexOf(tmodel) === -1) {
132
- this.lists.visibleNoDom.push(tmodel);
133
- }
134
- }
135
- }
136
-
137
- var lastVisible = Object.values(lastVisibleMap).filter(function(tmodel) { return tmodel !== null && tmodel.hasDom() && tmodel.isDomDeletable(); });
138
-
139
- lastVisible.forEach(function(tmodel) {
140
- tapp.manager.lists.invisibleDom.push(tmodel);
141
- });
142
- };
143
-
144
- TModelManager.prototype.needsRerender = function(tmodel) {
145
- if (tmodel.hasDom()
146
- && TUtil.isDefined(tmodel.getHtml())
147
- && (tmodel.$dom.html() !== tmodel.getHtml() || tmodel.$dom.textOnly !== tmodel.isTextOnly())) {
148
- this.lists.rerender.push(tmodel);
149
- return true;
150
- }
151
-
152
- return false;
153
- };
154
-
155
- TModelManager.prototype.needsRestyle = function(tmodel) {
156
- if (tmodel.hasDom() && tmodel.styleTargetList.length > 0) {
157
- this.lists.restyle.push(tmodel);
158
- return true;
159
- }
160
-
161
- return false;
162
- };
163
-
164
- TModelManager.prototype.needsReattach = function(tmodel) {
165
- if (tmodel.hasDom() && tmodel.hasDomHolderChanged()) {
166
- this.lists.reattach.push(tmodel);
167
- return true;
168
- }
169
-
170
- return false;
171
- };
172
-
173
- TModelManager.prototype.renderTModels = function () {
174
- var i, tmodel;
175
-
176
- for (i = 0; i < this.lists.rerender.length; i++) {
177
- tmodel = this.lists.rerender[i];
178
-
179
- tmodel.isTextOnly() ? tmodel.$dom.text(tmodel.getHtml()) : tmodel.$dom.html(tmodel.getHtml());
180
- tmodel.setActualValueLastUpdate('html');
181
-
182
- //we might need to re-measure dim from dom if tmodel has no measure method
183
- tmodel.domHeight = undefined;
184
- tmodel.domWidth = undefined;
185
- }
186
- };
187
-
188
- TModelManager.prototype.reattachTModels = function() {
189
- var i, tmodel;
190
-
191
- for (i = 0; i < this.lists.reattach.length; i++) {
192
- tmodel = this.lists.reattach[i];
193
- tmodel.$dom.detach();
194
- tmodel.getDomHolder().appendTModel$Dom(tmodel);
195
- }
196
- };
197
-
198
- TModelManager.prototype.deleteDoms = function () {
199
- var i;
200
-
201
- for (i = 0; i < this.lists.invisibleDom.length; i++) {
202
- var tmodel = this.lists.invisibleDom[i];
203
-
204
- tmodel.domValues = {};
205
-
206
- var activateTargets = [].concat(tmodel.targets['onInvisibleEvent'], tmodel.targets['onResize']);
207
- activateTargets && activateTargets.forEach(function(key) {
208
- if (tmodel.targets[key] && tmodel.isTargetComplete(key)) {
209
- tmodel.activateTarget(key);
210
- }
211
- });
212
-
213
- tmodel.$dom.detach();
214
- tmodel.$dom = null;
215
- }
216
-
217
- for (i = 0; i < this.lists.deletedTModel.length; i++) {
218
- this.removeTModel(this.lists.deletedTModel[i]);
219
- }
220
-
221
- var rerun = this.lists.invisibleDom.length > 0 || this.lists.deletedTModel.length > 0;
222
-
223
- this.lists.invisibleDom.length = 0;
224
- this.lists.deletedTModel.length = 0;
225
-
226
- if (rerun) {
227
- this.scheduleRun(0, "deleteDoms");
228
- }
229
- };
230
-
231
- TModelManager.prototype.removeTModel = function(tmodel) {
232
- tmodel.markAsDeleted();
233
-
234
- var parent = tmodel.getParent();
235
-
236
- var childIndex;
237
- if (parent && parent.hasChildren()) {
238
- parent.removeFromUpdatingChildren(tmodel);
239
-
240
- childIndex = parent.val('children').indexOf(tmodel);
241
-
242
- if (childIndex >= 0) {
243
- parent.val('children').splice(childIndex, 1);
244
- parent.setActualValueLastUpdate('children');
245
- }
246
-
247
- childIndex = parent.val('addedChildren').indexOf(tmodel);
248
-
249
- if (childIndex >= 0) {
250
- parent.val('addedChildren').splice(childIndex, 1);
251
- parent.setActualValueLastUpdate('addedChildren');
252
- }
253
-
254
- parent.setActualValueLastUpdate('allChildren');
255
- }
256
-
257
- if (tmodel.$dom) {
258
- tmodel.$dom.detach();
259
- tmodel.$dom = null;
260
- }
261
- };
262
-
263
- TModelManager.prototype.fixStyles = function() {
264
- var i, tmodel;
265
-
266
- for (i = 0; i < this.lists.restyle.length; i++) {
267
- tmodel = this.lists.restyle[i];
268
-
269
- tmodel.styleTargetList.forEach(function(key) {
270
- switch (key) {
271
- case 'transform':
272
- var x = Math.floor(tmodel.getX());
273
- var y = Math.floor(tmodel.getY());
274
- var rotate = Math.floor(tmodel.getRotate());
275
- var scale = TUtil.formatNum(tmodel.getScale(), 2);
276
-
277
- if (tmodel.domValues.x !== x || tmodel.domValues.y !== y || tmodel.domValues.rotate !== rotate || tmodel.domValues.scale !== scale) {
278
- tmodel.$dom.transform(x, y, rotate, scale);
279
- tmodel.domValues.y = y;
280
- tmodel.domValues.x = x;
281
- tmodel.domValues.rotate = rotate;
282
- tmodel.domValues.scale = scale;
283
- }
284
-
285
- break;
286
-
287
- case 'dim':
288
- var width = Math.floor(tmodel.getWidth());
289
- var height = Math.floor(tmodel.getHeight());
290
-
291
- if (tmodel.$dom.width() !== width || tmodel.$dom.height() !== height) {
292
- tmodel.$dom.width(width);
293
- tmodel.$dom.height(height);
294
- }
295
- break;
296
-
297
- case 'style':
298
- var style = tmodel.getStyle();
299
- if (TUtil.isDefined(style) && tmodel.domValues.style !== style) {
300
- tmodel.$dom.setStyleByMap(tmodel.getStyle());
301
- tmodel.domValues.style = style;
302
- }
303
- break;
304
-
305
- case 'css':
306
- var css = tmodel.getCss();
307
- if (tmodel.$dom.css() !== css) {
308
- tmodel.$dom.css(css);
309
- }
310
- break;
311
-
312
- case 'borderRadius':
313
- case 'padding':
314
- case 'lineHeight':
315
- case 'fontSize':
316
- if (TUtil.isDefined(tmodel.val(key)) && tmodel.domValues[key] !== tmodel.val(key)) {
317
- tmodel.$dom.style(key, TUtil.isNumber(tmodel.val(key)) ? tmodel.val(key) + 'px' : tmodel.val(key));
318
- tmodel.domValues[key] = tmodel.val(key);
319
- }
320
- break;
321
-
322
- default:
323
- if (TUtil.isDefined(tmodel.val(key)) && tmodel.domValues[key] !== tmodel.val(key)) {
324
- tmodel.$dom.style(key, tmodel.val(key));
325
- tmodel.domValues[key] = tmodel.val(key);
326
- }
327
- }
328
- });
329
-
330
- tmodel.styleTargetMap = {};
331
- tmodel.styleTargetList.length = 0;
332
- }
333
- };
334
-
335
- TModelManager.prototype.completeDoneTModels = function() {
336
- tapp.manager.doneTargets.forEach(function(target) {
337
- var tmodel = target.tmodel;
338
- var key = target.key;
339
- if (tmodel.isTargetDone(key)) {
340
- tmodel.setTargetComplete(key);
341
- tmodel.removeFromActiveTargets(tmodel);
342
- tmodel.removeFromUpdatingTargets(tmodel);
343
- }
344
- });
345
- };
346
-
347
- TModelManager.prototype.createDoms = function () {
348
- var i;
349
- var $dom, tmodel;
350
- var contentList = [];
351
- var needsDom = [];
352
-
353
- this.lists.visibleNoDom.sort(function(a, b) {
354
- if (a.hasChildren() && b.hasChildren()) {
355
- return a.getUIDepth() < b.getUIDepth() ? -1 : 1;
356
- } else {
357
- return a.hasChildren() ? -1 : 1;
358
- }
359
- });
360
-
361
- for (i = 0; i < this.lists.visibleNoDom.length; i++) {
362
- tmodel = this.lists.visibleNoDom[i];
363
- if ($Dom.query('#' + tmodel.oid)) {
364
- $dom = new $Dom('#' + tmodel.oid);
365
- tmodel.$dom = $dom;
366
- } else {
367
- needsDom.push(tmodel);
368
- }
369
- }
370
-
371
- for (i = 0; i < needsDom.length; i++) {
372
- tmodel = needsDom[i];
373
-
374
- var x = Math.floor(tmodel.getX());
375
- var y = Math.floor(tmodel.getY());
376
- var rotate = Math.floor(tmodel.getRotate());
377
- var scale = TUtil.formatNum(tmodel.getScale(), 2);
378
- var width = Math.floor(tmodel.getWidth());
379
- var height = Math.floor(tmodel.getHeight());
380
- var zIndex = Math.floor(tmodel.getZIndex());
381
- var opacity = tmodel.getOpacity() ? tmodel.getOpacity().toFixed(2) : 0;
382
-
383
- var style = {
384
- position: 'absolute',
385
- top: 0,
386
- left: 0,
387
- transform: [ x, y, rotate, scale ],
388
- width: width + "px",
389
- height: height + "px",
390
- opacity: opacity,
391
- zIndex: zIndex
392
- };
393
-
394
- ['fontSize', 'borderRadius', 'padding', 'lineHeight'].forEach(function(prop) {
395
- var value = tmodel.val(prop);
396
- if (value) {
397
- style[prop] = TUtil.isNumber(value) ? value + 'px' : value;
398
- }
399
- });
400
-
401
- ['backgroundColor', 'background', 'color'].forEach(function(prop) {
402
- var value = tmodel.val(prop);
403
- if (value) {
404
- style[prop] = value;
405
- }
406
- });
407
-
408
- Object.assign(style, tmodel.getStyle());
409
-
410
- $dom = new $Dom();
411
- $dom.create('div');
412
- $dom.setSelector("#" + tmodel.oid);
413
- $dom.setId(tmodel.oid);
414
- $dom.css(tmodel.getCss());
415
- $dom.setStyleByMap(style);
416
-
417
- tmodel.domValues = {};
418
- tmodel.domValues.x = x;
419
- tmodel.domValues.y = y;
420
- tmodel.domValues.rotate = rotate;
421
- tmodel.domValues.scale = scale;
422
- tmodel.domValues.style = style;
423
-
424
- tmodel.$dom = $dom;
425
-
426
- var contentItem = contentList.find(function(item) {
427
- return item.domHolder === tmodel.getDomHolder();
428
- });
429
-
430
- if (contentItem) {
431
- contentItem.tmodels.push(tmodel);
432
- } else {
433
- contentList.push({ domHolder: tmodel.getDomHolder(), tmodels: [tmodel]});
434
- }
435
- }
436
-
437
- contentList.map(function(content) {
438
- content.tmodels.map(function(tmodel) {
439
- content.domHolder.appendTModel$Dom(tmodel);
440
- });
441
- });
442
-
443
- if (contentList.length) {
444
- tapp.manager.scheduleRun(1, "createDom");
445
- }
446
- };
447
-
448
- TModelManager.prototype.scheduleRun = function(delay, oid) {
449
- if (delay < 1 && tapp.throttle === 0) {
450
- tapp.manager.run(oid, delay);
451
- } else {
452
- var nextRun = browser.delay(function() {
453
- tapp.manager.run(oid, delay);
454
- }, oid, tapp.throttle === 0 ? delay || 0 : tapp.throttle);
455
-
456
- var lastRun = this.nextRuns.length > 0 ? this.nextRuns[this.nextRuns.length - 1] : null;
457
- if (nextRun && (!lastRun || nextRun.delay > lastRun.delay)) {
458
- this.nextRuns.push(nextRun);
459
- } else if (nextRun && lastRun && nextRun.delay <= lastRun.delay && tapp.manager.runningFlag) {
460
- tapp.manager.rerunOid = oid;
461
- }
462
- }
463
- };
464
-
465
- TModelManager.prototype.run = function(oid, delay) {
466
- if (!tapp.isRunning()) {
467
- this.getNextRun();
468
- return;
469
- }
470
-
471
- if (tapp.manager.runningFlag) {
472
- tapp.manager.rerunOid = oid;
473
-
474
- return;
475
- }
476
-
477
- tapp.manager.runningFlag = true;
478
-
479
- window.requestAnimationFrame(function () {
480
- var startStep = tapp.manager.runningStep;
481
- var startTime = browser.now();
482
- while((browser.now() - startTime) < 25 && tapp.manager.runningStep < 7 && tapp.isRunning()) {
483
- switch(tapp.manager.runningStep) {
484
- case 0:
485
-
486
- tapp.events.captureEvents();
487
-
488
- if (tapp.manager.doneTargets.length > 0) {
489
- tapp.manager.completeDoneTModels();
490
- tapp.manager.doneTargets.length = 0;
491
- }
492
-
493
- tapp.locationManager.calculateTargets(tapp.troot);
494
-
495
- tapp.locationManager.calculateAll();
496
-
497
-
498
- tapp.events.resetEventsOnTimeout();
499
-
500
- break;
501
-
502
- case 1:
503
- tapp.manager.analyze();
504
- break;
505
-
506
- case 2:
507
- tapp.manager.createDoms();
508
- break;
509
-
510
- case 3:
511
- tapp.manager.renderTModels();
512
- tapp.manager.reattachTModels();
513
- break;
514
-
515
- case 4:
516
- tapp.manager.fixStyles();
517
- break;
518
-
519
- case 5:
520
- tapp.manager.deleteDoms();
521
- break;
522
-
523
- case 6:
524
- tapp.loader.singleLoad();
525
- tapp.loader.groupLoad();
526
- tapp.loader.imgLoad();
527
- break;
528
- }
529
-
530
- tapp.manager.runningStep++;
531
- }
532
-
533
- var cycleDuration = browser.now() - startTime;
534
- tapp.manager.cycleStats.duration = startStep === 0 ? cycleDuration : tapp.manager.cycleStats.duration + cycleDuration;
535
-
536
- if (tapp.debugLevel > 0) {
537
- browser.log(tapp.debugLevel > 0 && tapp.manager.cycleStats.duration > 10)("it took: " + tapp.manager.cycleStats.duration + ", " + oid);
538
- browser.log(tapp.debugLevel > 0 && tapp.manager.cycleStats.duration > 10)("count: " + tapp.locationManager.locationCount);
539
- browser.log(tapp.debugLevel > 1)("request from: " + oid + " delay: " + delay);
540
- }
541
-
542
- tapp.manager.runningFlag = false;
543
-
544
- if (tapp.manager.runningStep !== 7) {
545
- tapp.manager.run("rendering: " + oid + " " +tapp.manager.runningStep);
546
- } else {
547
- tapp.manager.cycleStats.count++;
548
- tapp.manager.cycleStats.totalDuration += tapp.manager.cycleStats.duration;
549
- tapp.manager.cycleStats.average = tapp.manager.cycleStats.totalDuration / tapp.manager.cycleStats.count;
550
-
551
- if (tapp.manager.rerunOid) {
552
- tapp.manager.runningStep = 0;
553
- var rerunOid = tapp.manager.rerunOid;
554
- tapp.manager.rerunOid = '';
555
- tapp.manager.run(rerunOid);
556
- } else {
557
- tapp.manager.runningStep = 0;
558
-
559
- tapp.manager.getNextRun();
560
- }
561
- }
562
- });
563
-
564
- };
565
-
566
- TModelManager.prototype.getNextRun = function() {
567
- if (this.nextRuns.length > 0 && tapp.isRunning()) {
568
- var nextRun = this.nextRuns.pop();
569
- if (nextRun) {
570
- tapp.manager.scheduleRun(nextRun.timeStamp - browser.now(), nextRun.oid);
571
- }
572
- }
573
- };
574
-
575
- export { TModelManager };