vscroll 1.4.1 → 1.5.0

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 (136) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +17 -16
  3. package/dist/bundles/vscroll.esm5.js +403 -321
  4. package/dist/bundles/vscroll.esm5.js.map +1 -1
  5. package/dist/bundles/vscroll.esm5.min.js +2 -2
  6. package/dist/bundles/vscroll.esm5.min.js.map +1 -1
  7. package/dist/bundles/vscroll.esm6.js +310 -244
  8. package/dist/bundles/vscroll.esm6.js.map +1 -1
  9. package/dist/bundles/vscroll.esm6.min.js +2 -2
  10. package/dist/bundles/vscroll.esm6.min.js.map +1 -1
  11. package/dist/bundles/vscroll.umd.js +404 -322
  12. package/dist/bundles/vscroll.umd.js.map +1 -1
  13. package/dist/bundles/vscroll.umd.min.js +2 -2
  14. package/dist/bundles/vscroll.umd.min.js.map +1 -1
  15. package/dist/esm2015/classes/domRoutines.js +101 -66
  16. package/dist/esm2015/classes/domRoutines.js.map +1 -1
  17. package/dist/esm2015/classes/logger.js +2 -2
  18. package/dist/esm2015/classes/logger.js.map +1 -1
  19. package/dist/esm2015/classes/paddings.js +5 -5
  20. package/dist/esm2015/classes/paddings.js.map +1 -1
  21. package/dist/esm2015/classes/state/cycle.js +7 -6
  22. package/dist/esm2015/classes/state/cycle.js.map +1 -1
  23. package/dist/esm2015/classes/state/render.js +1 -1
  24. package/dist/esm2015/classes/state/render.js.map +1 -1
  25. package/dist/esm2015/classes/state/scroll.js +6 -6
  26. package/dist/esm2015/classes/state/scroll.js.map +1 -1
  27. package/dist/esm2015/classes/state.js +23 -15
  28. package/dist/esm2015/classes/state.js.map +1 -1
  29. package/dist/esm2015/classes/viewport.js +13 -22
  30. package/dist/esm2015/classes/viewport.js.map +1 -1
  31. package/dist/esm2015/index.js.map +1 -1
  32. package/dist/esm2015/interfaces/index.js.map +1 -1
  33. package/dist/esm2015/interfaces/routines.js +2 -0
  34. package/dist/esm2015/interfaces/routines.js.map +1 -0
  35. package/dist/esm2015/interfaces/state.js.map +1 -1
  36. package/dist/esm2015/interfaces/workflow.js.map +1 -1
  37. package/dist/esm2015/processes/adapter/reload.js +1 -1
  38. package/dist/esm2015/processes/adapter/reload.js.map +1 -1
  39. package/dist/esm2015/processes/adjust.js +44 -15
  40. package/dist/esm2015/processes/adjust.js.map +1 -1
  41. package/dist/esm2015/processes/end.js +18 -16
  42. package/dist/esm2015/processes/end.js.map +1 -1
  43. package/dist/esm2015/processes/fetch.js +3 -3
  44. package/dist/esm2015/processes/fetch.js.map +1 -1
  45. package/dist/esm2015/processes/init.js +2 -2
  46. package/dist/esm2015/processes/init.js.map +1 -1
  47. package/dist/esm2015/processes/render.js +6 -6
  48. package/dist/esm2015/processes/render.js.map +1 -1
  49. package/dist/esm2015/processes/scroll.js +21 -21
  50. package/dist/esm2015/processes/scroll.js.map +1 -1
  51. package/dist/esm2015/scroller.js +4 -4
  52. package/dist/esm2015/scroller.js.map +1 -1
  53. package/dist/esm2015/version.js +1 -1
  54. package/dist/esm2015/version.js.map +1 -1
  55. package/dist/esm2015/workflow.js +9 -8
  56. package/dist/esm2015/workflow.js.map +1 -1
  57. package/dist/esm5/classes/adapter.js +4 -4
  58. package/dist/esm5/classes/adapter.js.map +1 -1
  59. package/dist/esm5/classes/buffer/cache.js +1 -1
  60. package/dist/esm5/classes/buffer/cache.js.map +1 -1
  61. package/dist/esm5/classes/buffer/checkCall.js +4 -4
  62. package/dist/esm5/classes/buffer/checkCall.js.map +1 -1
  63. package/dist/esm5/classes/buffer.js +3 -3
  64. package/dist/esm5/classes/buffer.js.map +1 -1
  65. package/dist/esm5/classes/domRoutines.js +115 -66
  66. package/dist/esm5/classes/domRoutines.js.map +1 -1
  67. package/dist/esm5/classes/logger.js +21 -21
  68. package/dist/esm5/classes/logger.js.map +1 -1
  69. package/dist/esm5/classes/paddings.js +5 -5
  70. package/dist/esm5/classes/paddings.js.map +1 -1
  71. package/dist/esm5/classes/state/cycle.js +9 -8
  72. package/dist/esm5/classes/state/cycle.js.map +1 -1
  73. package/dist/esm5/classes/state/render.js +1 -1
  74. package/dist/esm5/classes/state/render.js.map +1 -1
  75. package/dist/esm5/classes/state/scroll.js +11 -11
  76. package/dist/esm5/classes/state/scroll.js.map +1 -1
  77. package/dist/esm5/classes/state.js +23 -15
  78. package/dist/esm5/classes/state.js.map +1 -1
  79. package/dist/esm5/classes/viewport.js +14 -23
  80. package/dist/esm5/classes/viewport.js.map +1 -1
  81. package/dist/esm5/index.js.map +1 -1
  82. package/dist/esm5/inputs/validation.js +4 -4
  83. package/dist/esm5/inputs/validation.js.map +1 -1
  84. package/dist/esm5/interfaces/index.js.map +1 -1
  85. package/dist/esm5/interfaces/routines.js +2 -0
  86. package/dist/esm5/interfaces/routines.js.map +1 -0
  87. package/dist/esm5/interfaces/state.js.map +1 -1
  88. package/dist/esm5/interfaces/workflow.js.map +1 -1
  89. package/dist/esm5/processes/adapter/reload.js +1 -1
  90. package/dist/esm5/processes/adapter/reload.js.map +1 -1
  91. package/dist/esm5/processes/adapter/remove.js +1 -1
  92. package/dist/esm5/processes/adapter/remove.js.map +1 -1
  93. package/dist/esm5/processes/adjust.js +48 -19
  94. package/dist/esm5/processes/adjust.js.map +1 -1
  95. package/dist/esm5/processes/clip.js +5 -5
  96. package/dist/esm5/processes/clip.js.map +1 -1
  97. package/dist/esm5/processes/end.js +18 -16
  98. package/dist/esm5/processes/end.js.map +1 -1
  99. package/dist/esm5/processes/fetch.js +5 -5
  100. package/dist/esm5/processes/fetch.js.map +1 -1
  101. package/dist/esm5/processes/init.js +2 -2
  102. package/dist/esm5/processes/init.js.map +1 -1
  103. package/dist/esm5/processes/misc/base.js +1 -1
  104. package/dist/esm5/processes/misc/base.js.map +1 -1
  105. package/dist/esm5/processes/preClip.js +2 -2
  106. package/dist/esm5/processes/preClip.js.map +1 -1
  107. package/dist/esm5/processes/preFetch.js +5 -5
  108. package/dist/esm5/processes/preFetch.js.map +1 -1
  109. package/dist/esm5/processes/render.js +6 -6
  110. package/dist/esm5/processes/render.js.map +1 -1
  111. package/dist/esm5/processes/scroll.js +22 -22
  112. package/dist/esm5/processes/scroll.js.map +1 -1
  113. package/dist/esm5/scroller.js +5 -5
  114. package/dist/esm5/scroller.js.map +1 -1
  115. package/dist/esm5/version.js +1 -1
  116. package/dist/esm5/version.js.map +1 -1
  117. package/dist/esm5/workflow.js +15 -12
  118. package/dist/esm5/workflow.js.map +1 -1
  119. package/dist/typings/classes/domRoutines.d.ts +23 -18
  120. package/dist/typings/classes/logger.d.ts +1 -1
  121. package/dist/typings/classes/paddings.d.ts +2 -2
  122. package/dist/typings/classes/state/cycle.d.ts +1 -1
  123. package/dist/typings/classes/state/render.d.ts +1 -1
  124. package/dist/typings/classes/state/scroll.d.ts +4 -4
  125. package/dist/typings/classes/state.d.ts +6 -3
  126. package/dist/typings/classes/viewport.d.ts +2 -4
  127. package/dist/typings/index.d.ts +2 -2
  128. package/dist/typings/interfaces/index.d.ts +3 -2
  129. package/dist/typings/interfaces/routines.d.ts +157 -0
  130. package/dist/typings/interfaces/state.d.ts +2 -15
  131. package/dist/typings/interfaces/workflow.d.ts +3 -0
  132. package/dist/typings/processes/adjust.d.ts +1 -0
  133. package/dist/typings/processes/end.d.ts +1 -2
  134. package/dist/typings/scroller.d.ts +1 -1
  135. package/dist/typings/workflow.d.ts +2 -2
  136. package/package.json +18 -17
@@ -17,19 +17,19 @@ var Logger = /** @class */ (function () {
17
17
  return arg;
18
18
  }
19
19
  else if (Array.isArray(arg)) {
20
- return "[of " + arg.length + "]";
20
+ return "[of ".concat(arg.length, "]");
21
21
  }
22
22
  return '{ ' + Object.keys(arg).join(', ') + ' }';
23
23
  })
24
24
  .join(', ');
25
- _this.log("adapter: " + methodName + "(" + (params || '') + ")" + (add || ''));
25
+ _this.log("adapter: ".concat(methodName, "(").concat(params || '', ")").concat(add || ''));
26
26
  };
27
27
  var settings = scroller.settings;
28
28
  this.debug = settings.debug;
29
29
  this.immediateLog = settings.immediateLog;
30
30
  this.logTime = settings.logTime;
31
31
  this.getTime = function () {
32
- return scroller.state && " // time: " + scroller.state.time;
32
+ return scroller.state && " // time: ".concat(scroller.state.time);
33
33
  };
34
34
  this.getStat = function () {
35
35
  var buffer = scroller.buffer, viewport = scroller.viewport;
@@ -41,26 +41,26 @@ var Logger = /** @class */ (function () {
41
41
  'fwd_p: ' + viewport.paddings.forward.size + ', ' +
42
42
  'default: ' + (buffer.defaultSize || 'no') + ', ' +
43
43
  'items: ' + buffer.getVisibleItemsCount() + ', ' +
44
- 'range: ' + (first && last ? "[" + first.$index + ".." + last.$index + "]" : 'no');
44
+ 'range: ' + (first && last ? "[".concat(first.$index, "..").concat(last.$index, "]") : 'no');
45
45
  };
46
46
  this.getFetchRange = function () {
47
47
  var _a = scroller.state.fetch, first = _a.first.index, last = _a.last.index;
48
48
  return !Number.isNaN(first) && !Number.isNaN(last)
49
- ? "[" + first + ".." + last + "]"
49
+ ? "[".concat(first, "..").concat(last, "]")
50
50
  : 'no';
51
51
  };
52
52
  this.getLoopId = function () { return scroller.state.cycle.loopId; };
53
53
  this.getLoopIdNext = function () { return scroller.state.cycle.loopIdNext; };
54
54
  this.getWorkflowCycleData = function () {
55
- return settings.instanceIndex + "-" + scroller.state.cycle.count;
55
+ return "".concat(settings.instanceIndex, "-").concat(scroller.state.cycle.count);
56
56
  };
57
- this.getScrollPosition = function (element) { return scroller.routines.getScrollPosition(element); };
57
+ this.getScrollPosition = function () { return scroller.routines.getScrollPosition(); };
58
58
  this.log(function () {
59
59
  return 'vscroll Workflow has been started, ' +
60
- ("core: " + packageInfo.core.name + " v" + packageInfo.core.version + ", ") +
61
- ("consumer: " + packageInfo.consumer.name + " v" + packageInfo.consumer.version + ", ") +
62
- ("scroller instance: " + settings.instanceIndex + ", adapter ") +
63
- (!adapter ? 'is not instantiated' : "instance: " + adapter.id);
60
+ "core: ".concat(packageInfo.core.name, " v").concat(packageInfo.core.version, ", ") +
61
+ "consumer: ".concat(packageInfo.consumer.name, " v").concat(packageInfo.consumer.version, ", ") +
62
+ "scroller instance: ".concat(settings.instanceIndex, ", adapter ") +
63
+ (!adapter ? 'is not instantiated' : "instance: ".concat(adapter.id));
64
64
  });
65
65
  }
66
66
  Logger.prototype.object = function (str, obj, stringify) {
@@ -101,20 +101,20 @@ var Logger = /** @class */ (function () {
101
101
  'color: #888; border: dashed #888 0; border-bottom-width: 0px',
102
102
  'color: #000; border-width: 0'
103
103
  ];
104
- this.log(function () { return __spreadArray(['%cstat' + (str ? " " + str : '') + ',%c ' + _this.getStat()], __read(logStyles_1), false); });
104
+ this.log(function () { return __spreadArray(['%cstat' + (str ? " ".concat(str) : '') + ',%c ' + _this.getStat()], __read(logStyles_1), false); });
105
105
  }
106
106
  };
107
107
  Logger.prototype.fetch = function (str) {
108
108
  var _this = this;
109
109
  if (this.debug) {
110
- var _text_1 = 'fetch interval' + (str ? " " + str : '');
110
+ var _text_1 = 'fetch interval' + (str ? " ".concat(str) : '');
111
111
  var logStyles_2 = ['color: #888', 'color: #000'];
112
- this.log(function () { return __spreadArray(["%c" + _text_1 + ": %c" + _this.getFetchRange()], __read(logStyles_2), false); });
112
+ this.log(function () { return __spreadArray(["%c".concat(_text_1, ": %c").concat(_this.getFetchRange())], __read(logStyles_2), false); });
113
113
  }
114
114
  };
115
115
  Logger.prototype.prepareForLog = function (data) {
116
116
  return data instanceof Event && data.target
117
- ? this.getScrollPosition(data.target)
117
+ ? this.getScrollPosition()
118
118
  : data;
119
119
  };
120
120
  Logger.prototype.logProcess = function (data) {
@@ -125,13 +125,13 @@ var Logger = /** @class */ (function () {
125
125
  // inner loop start-end log
126
126
  var loopLog = [];
127
127
  if (process === CommonProcess.init && status === Status.next) {
128
- loopLog.push("%c---=== loop " + this.getLoopIdNext() + " start");
128
+ loopLog.push("%c---=== loop ".concat(this.getLoopIdNext(), " start"));
129
129
  }
130
130
  else if (process === CommonProcess.end) {
131
- loopLog.push("%c---=== loop " + this.getLoopId() + " done");
131
+ loopLog.push("%c---=== loop ".concat(this.getLoopId(), " done"));
132
132
  var parent_1 = payload && payload.process;
133
133
  if (status === Status.next && (parent_1 !== AdapterProcess.reset && parent_1 !== AdapterProcess.reload)) {
134
- loopLog[0] += ", loop " + this.getLoopIdNext() + " start";
134
+ loopLog[0] += ", loop ".concat(this.getLoopIdNext(), " start");
135
135
  }
136
136
  }
137
137
  if (loopLog.length) {
@@ -142,14 +142,14 @@ var Logger = /** @class */ (function () {
142
142
  if (start === void 0) { start = true; }
143
143
  var logData = this.getWorkflowCycleData();
144
144
  var border = start ? '1px 0 0 1px' : '0 0 1px 1px';
145
- var logStyles = "color: #0000aa; border: solid #555 1px; border-width: " + border + "; margin-left: -2px";
146
- this.log(function () { return ["%c ~~~ WF Cycle " + logData + " " + (start ? 'STARTED' : 'FINALIZED') + " ~~~ ", logStyles]; });
145
+ var logStyles = "color: #0000aa; border: solid #555 1px; border-width: ".concat(border, "; margin-left: -2px");
146
+ this.log(function () { return ["%c ~~~ WF Cycle ".concat(logData, " ").concat(start ? 'STARTED' : 'FINALIZED', " ~~~ "), logStyles]; });
147
147
  };
148
148
  Logger.prototype.logError = function (str) {
149
149
  var _this = this;
150
150
  if (this.debug) {
151
151
  var logStyles_3 = ['color: #a00;', 'color: #000'];
152
- this.log(function () { return __spreadArray(['error:%c' + (str ? " " + str : '') + ("%c (loop " + _this.getLoopIdNext() + ")")], __read(logStyles_3), false); });
152
+ this.log(function () { return __spreadArray(['error:%c' + (str ? " ".concat(str) : '') + "%c (loop ".concat(_this.getLoopIdNext(), ")")], __read(logStyles_3), false); });
153
153
  }
154
154
  };
155
155
  Logger.prototype.log = function () {
@@ -1 +1 @@
1
- {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../src/classes/logger.ts"],"names":[],"mappings":"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","sourcesContent":["import { Scroller } from '../scroller';\nimport { CommonProcess, AdapterProcess, ProcessStatus as Status } from '../processes/index';\nimport { IPackages, ProcessSubject } from '../interfaces/index';\n\ntype LogType = [unknown?, ...unknown[]];\n\nexport class Logger {\n\n readonly debug: boolean;\n readonly immediateLog: boolean;\n readonly logTime: boolean;\n readonly getTime: () => string;\n readonly getStat: () => string;\n readonly getFetchRange: () => string;\n readonly getWorkflowCycleData: () => string;\n readonly getLoopId: () => string;\n readonly getLoopIdNext: () => string;\n readonly getScrollPosition: (element: HTMLElement) => number;\n private logs: unknown[][] = [];\n\n constructor(scroller: Scroller, packageInfo: IPackages, adapter?: { id: number }) {\n const { settings } = scroller;\n this.debug = settings.debug;\n this.immediateLog = settings.immediateLog;\n this.logTime = settings.logTime;\n this.getTime = (): string =>\n scroller.state && ` // time: ${scroller.state.time}`;\n this.getStat = (): string => {\n const { buffer, viewport } = scroller;\n const first = buffer.getFirstVisibleItem();\n const last = buffer.getLastVisibleItem();\n return 'pos: ' + viewport.scrollPosition + ', ' +\n 'size: ' + viewport.getScrollableSize() + ', ' +\n 'bwd_p: ' + viewport.paddings.backward.size + ', ' +\n 'fwd_p: ' + viewport.paddings.forward.size + ', ' +\n 'default: ' + (buffer.defaultSize || 'no') + ', ' +\n 'items: ' + buffer.getVisibleItemsCount() + ', ' +\n 'range: ' + (first && last ? `[${first.$index}..${last.$index}]` : 'no');\n };\n this.getFetchRange = (): string => {\n const { first: { index: first }, last: { index: last } } = scroller.state.fetch;\n return !Number.isNaN(first) && !Number.isNaN(last)\n ? `[${first}..${last}]`\n : 'no';\n };\n this.getLoopId = (): string => scroller.state.cycle.loopId;\n this.getLoopIdNext = (): string => scroller.state.cycle.loopIdNext;\n this.getWorkflowCycleData = (): string =>\n `${settings.instanceIndex}-${scroller.state.cycle.count}`;\n this.getScrollPosition = (element: HTMLElement) => scroller.routines.getScrollPosition(element);\n this.log(() =>\n 'vscroll Workflow has been started, ' +\n `core: ${packageInfo.core.name} v${packageInfo.core.version}, ` +\n `consumer: ${packageInfo.consumer.name} v${packageInfo.consumer.version}, ` +\n `scroller instance: ${settings.instanceIndex}, adapter ` +\n (!adapter ? 'is not instantiated' : `instance: ${adapter.id}`)\n );\n }\n\n object(str: string, obj: unknown, stringify?: boolean): void {\n this.log(() => [\n str,\n stringify\n ? JSON.stringify(obj, (k, v) => {\n if (Number.isNaN(v)) {\n return 'NaN';\n }\n if (v === Infinity) {\n return 'Infinity';\n }\n if (v === -Infinity) {\n return '-Infinity';\n }\n if (v instanceof Element) {\n return 'HTMLElement';\n }\n if (v instanceof HTMLDocument) {\n return 'HTMLDocument';\n }\n if (typeof v === 'function') {\n return 'Function';\n }\n return v;\n })\n .replace(/\"/g, '')\n .replace(/(\\{|:|,)/g, '$1 ')\n .replace(/(\\})/g, ' $1')\n : obj\n ]);\n }\n\n stat(str?: string): void {\n if (this.debug) {\n const logStyles = [\n 'color: #888; border: dashed #888 0; border-bottom-width: 0px',\n 'color: #000; border-width: 0'\n ];\n this.log(() => ['%cstat' + (str ? ` ${str}` : '') + ',%c ' + this.getStat(), ...logStyles]);\n }\n }\n\n fetch(str?: string): void {\n if (this.debug) {\n const _text = 'fetch interval' + (str ? ` ${str}` : '');\n const logStyles = ['color: #888', 'color: #000'];\n this.log(() => [`%c${_text}: %c${this.getFetchRange()}`, ...logStyles]);\n }\n }\n\n prepareForLog(data: unknown): unknown {\n return data instanceof Event && data.target\n ? this.getScrollPosition(data.target as HTMLElement)\n : data;\n }\n\n logProcess(data: ProcessSubject): void {\n if (!this.debug) {\n return;\n }\n const { process, status, payload } = data;\n\n // inner loop start-end log\n const loopLog: string[] = [];\n if (\n process === CommonProcess.init && status === Status.next\n ) {\n loopLog.push(`%c---=== loop ${this.getLoopIdNext()} start`);\n } else if (\n process === CommonProcess.end\n ) {\n loopLog.push(`%c---=== loop ${this.getLoopId()} done`);\n const parent = payload && payload.process;\n if (status === Status.next && (parent !== AdapterProcess.reset && parent !== AdapterProcess.reload)) {\n loopLog[0] += `, loop ${this.getLoopIdNext()} start`;\n }\n }\n if (loopLog.length) {\n this.log(() => [...loopLog, 'color: #006600;']);\n }\n }\n\n logCycle(start = true): void {\n const logData = this.getWorkflowCycleData();\n const border = start ? '1px 0 0 1px' : '0 0 1px 1px';\n const logStyles = `color: #0000aa; border: solid #555 1px; border-width: ${border}; margin-left: -2px`;\n this.log(() => [`%c ~~~ WF Cycle ${logData} ${start ? 'STARTED' : 'FINALIZED'} ~~~ `, logStyles]);\n }\n\n logError(str: string): void {\n if (this.debug) {\n const logStyles = ['color: #a00;', 'color: #000'];\n this.log(() => ['error:%c' + (str ? ` ${str}` : '') + `%c (loop ${this.getLoopIdNext()})`, ...logStyles]);\n }\n }\n\n logAdapterMethod = (methodName: string, args?: unknown, add?: string): void => {\n if (!this.debug) {\n return;\n }\n const params = (\n args === void 0 ? [] : (Array.isArray(args) ? args : [args])\n )\n .map((arg: unknown) => {\n if (typeof arg === 'function') {\n return 'func';\n } else if (typeof arg !== 'object' || !arg) {\n return arg;\n } else if (Array.isArray(arg)) {\n return `[of ${arg.length}]`;\n }\n return '{ ' + Object.keys(arg).join(', ') + ' }';\n })\n .join(', ');\n this.log(`adapter: ${methodName}(${params || ''})${add || ''}`);\n }\n\n log(...args: any[]): void {\n if (this.debug) {\n if (typeof args[0] === 'function') {\n args = args[0]();\n if (!Array.isArray(args)) {\n args = [args];\n }\n }\n if (args.every(item => item === void 0)) {\n return;\n }\n if (this.logTime) {\n args = [...args, this.getTime()];\n }\n args = args.map((arg: unknown) => this.prepareForLog(arg));\n if (this.immediateLog) {\n console.log.apply(this, args as LogType);\n } else {\n this.logs.push(args);\n }\n }\n }\n\n // logNow(...args: any[]) {\n // const immediateLog = this.immediateLog;\n // const debug = this.debug;\n // (this as any).debug = true;\n // (this as any).immediateLog = true;\n // this.log.apply(this, args);\n // (this as any).debug = debug;\n // (this as any).immediateLog = immediateLog;\n // }\n\n logForce(...args: unknown[]): void {\n if (this.debug) {\n if (!this.immediateLog && this.logs.length) {\n this.logs.forEach(logArgs => console.log.apply(this, logArgs));\n this.logs = [];\n }\n if (args.length) {\n console.log.apply(this, args as LogType);\n }\n }\n }\n}\n"]}
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../src/classes/logger.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,aAAa,IAAI,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAK5F;IAcE,gBAAY,QAAkB,EAAE,WAAsB,EAAE,OAAwB;QAAhF,iBAqCC;QAvCO,SAAI,GAAgB,EAAE,CAAC;QAyI/B,qBAAgB,GAAG,UAAC,UAAkB,EAAE,IAAc,EAAE,GAAY;YAClE,IAAI,CAAC,KAAI,CAAC,KAAK,EAAE;gBACf,OAAO;aACR;YACD,IAAM,MAAM,GAAG,CACb,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAC7D;iBACE,GAAG,CAAC,UAAC,GAAY;gBAChB,IAAI,OAAO,GAAG,KAAK,UAAU,EAAE;oBAC7B,OAAO,MAAM,CAAC;iBACf;qBAAM,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,GAAG,EAAE;oBAC1C,OAAO,GAAG,CAAC;iBACZ;qBAAM,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;oBAC7B,OAAO,cAAO,GAAG,CAAC,MAAM,MAAG,CAAC;iBAC7B;gBACD,OAAO,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;YACnD,CAAC,CAAC;iBACD,IAAI,CAAC,IAAI,CAAC,CAAC;YACd,KAAI,CAAC,GAAG,CAAC,mBAAY,UAAU,cAAI,MAAM,IAAI,EAAE,cAAI,GAAG,IAAI,EAAE,CAAE,CAAC,CAAC;QAClE,CAAC,CAAC;QAzJQ,IAAA,QAAQ,GAAK,QAAQ,SAAb,CAAc;QAC9B,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;QAC5B,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,YAAY,CAAC;QAC1C,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;QAChC,IAAI,CAAC,OAAO,GAAG;YACb,OAAA,QAAQ,CAAC,KAAK,IAAI,oBAAa,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAE;QAApD,CAAoD,CAAC;QACvD,IAAI,CAAC,OAAO,GAAG;YACL,IAAA,MAAM,GAAe,QAAQ,OAAvB,EAAE,QAAQ,GAAK,QAAQ,SAAb,CAAc;YACtC,IAAM,KAAK,GAAG,MAAM,CAAC,mBAAmB,EAAE,CAAC;YAC3C,IAAM,IAAI,GAAG,MAAM,CAAC,kBAAkB,EAAE,CAAC;YACzC,OAAO,OAAO,GAAG,QAAQ,CAAC,cAAc,GAAG,IAAI;gBAC7C,QAAQ,GAAG,QAAQ,CAAC,iBAAiB,EAAE,GAAG,IAAI;gBAC9C,SAAS,GAAG,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI;gBAClD,SAAS,GAAG,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI;gBACjD,WAAW,GAAG,CAAC,MAAM,CAAC,WAAW,IAAI,IAAI,CAAC,GAAG,IAAI;gBACjD,SAAS,GAAG,MAAM,CAAC,oBAAoB,EAAE,GAAG,IAAI;gBAChD,SAAS,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,WAAI,KAAK,CAAC,MAAM,eAAK,IAAI,CAAC,MAAM,MAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC7E,CAAC,CAAC;QACF,IAAI,CAAC,aAAa,GAAG;YACb,IAAA,KAAqD,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAvD,KAAK,iBAAA,EAAmB,IAAI,gBAA2B,CAAC;YAChF,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;gBAChD,CAAC,CAAC,WAAI,KAAK,eAAK,IAAI,MAAG;gBACvB,CAAC,CAAC,IAAI,CAAC;QACX,CAAC,CAAC;QACF,IAAI,CAAC,SAAS,GAAG,cAAc,OAAA,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,EAA3B,CAA2B,CAAC;QAC3D,IAAI,CAAC,aAAa,GAAG,cAAc,OAAA,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,EAA/B,CAA+B,CAAC;QACnE,IAAI,CAAC,oBAAoB,GAAG;YAC1B,OAAA,UAAG,QAAQ,CAAC,aAAa,cAAI,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAE;QAAzD,CAAyD,CAAC;QAC5D,IAAI,CAAC,iBAAiB,GAAG,cAAM,OAAA,QAAQ,CAAC,QAAQ,CAAC,iBAAiB,EAAE,EAArC,CAAqC,CAAC;QACrE,IAAI,CAAC,GAAG,CAAC;YACP,OAAA,qCAAqC;gBACrC,gBAAS,WAAW,CAAC,IAAI,CAAC,IAAI,eAAK,WAAW,CAAC,IAAI,CAAC,OAAO,OAAI;gBAC/D,oBAAa,WAAW,CAAC,QAAQ,CAAC,IAAI,eAAK,WAAW,CAAC,QAAQ,CAAC,OAAO,OAAI;gBAC3E,6BAAsB,QAAQ,CAAC,aAAa,eAAY;gBACxD,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,oBAAa,OAAO,CAAC,EAAE,CAAE,CAAC;QAJ9D,CAI8D,CAC/D,CAAC;IACJ,CAAC;IAED,uBAAM,GAAN,UAAO,GAAW,EAAE,GAAY,EAAE,SAAmB;QACnD,IAAI,CAAC,GAAG,CAAC,cAAM,OAAA;YACb,GAAG;YACH,SAAS;gBACP,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,UAAC,CAAC,EAAE,CAAC;oBACzB,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;wBACnB,OAAO,KAAK,CAAC;qBACd;oBACD,IAAI,CAAC,KAAK,QAAQ,EAAE;wBAClB,OAAO,UAAU,CAAC;qBACnB;oBACD,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;wBACnB,OAAO,WAAW,CAAC;qBACpB;oBACD,IAAI,CAAC,YAAY,OAAO,EAAE;wBACxB,OAAO,aAAa,CAAC;qBACtB;oBACD,IAAI,CAAC,YAAY,YAAY,EAAE;wBAC7B,OAAO,cAAc,CAAC;qBACvB;oBACD,IAAI,OAAO,CAAC,KAAK,UAAU,EAAE;wBAC3B,OAAO,UAAU,CAAC;qBACnB;oBACD,OAAO,CAAC,CAAC;gBACX,CAAC,CAAC;qBACC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;qBACjB,OAAO,CAAC,WAAW,EAAE,KAAK,CAAC;qBAC3B,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC;gBAC1B,CAAC,CAAC,GAAG;SACR,EA5Bc,CA4Bd,CAAC,CAAC;IACL,CAAC;IAED,qBAAI,GAAJ,UAAK,GAAY;QAAjB,iBAQC;QAPC,IAAI,IAAI,CAAC,KAAK,EAAE;YACd,IAAM,WAAS,GAAG;gBAChB,8DAA8D;gBAC9D,8BAA8B;aAC/B,CAAC;YACF,IAAI,CAAC,GAAG,CAAC,cAAM,sBAAC,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,WAAI,GAAG,CAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,GAAG,KAAI,CAAC,OAAO,EAAE,UAAK,WAAS,WAA1E,CAA2E,CAAC,CAAC;SAC7F;IACH,CAAC;IAED,sBAAK,GAAL,UAAM,GAAY;QAAlB,iBAMC;QALC,IAAI,IAAI,CAAC,KAAK,EAAE;YACd,IAAM,OAAK,GAAG,gBAAgB,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,WAAI,GAAG,CAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACxD,IAAM,WAAS,GAAG,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;YACjD,IAAI,CAAC,GAAG,CAAC,cAAM,sBAAC,YAAK,OAAK,iBAAO,KAAI,CAAC,aAAa,EAAE,CAAE,UAAK,WAAS,WAAtD,CAAuD,CAAC,CAAC;SACzE;IACH,CAAC;IAED,8BAAa,GAAb,UAAc,IAAa;QACzB,OAAO,IAAI,YAAY,KAAK,IAAI,IAAI,CAAC,MAAM;YACzC,CAAC,CAAC,IAAI,CAAC,iBAAiB,EAAE;YAC1B,CAAC,CAAC,IAAI,CAAC;IACX,CAAC;IAED,2BAAU,GAAV,UAAW,IAAoB;QAC7B,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YACf,OAAO;SACR;QACO,IAAA,OAAO,GAAsB,IAAI,QAA1B,EAAE,MAAM,GAAc,IAAI,OAAlB,EAAE,OAAO,GAAK,IAAI,QAAT,CAAU;QAE1C,2BAA2B;QAC3B,IAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,IACE,OAAO,KAAK,aAAa,CAAC,IAAI,IAAI,MAAM,KAAK,MAAM,CAAC,IAAI,EACxD;YACA,OAAO,CAAC,IAAI,CAAC,wBAAiB,IAAI,CAAC,aAAa,EAAE,WAAQ,CAAC,CAAC;SAC7D;aAAM,IACL,OAAO,KAAK,aAAa,CAAC,GAAG,EAC7B;YACA,OAAO,CAAC,IAAI,CAAC,wBAAiB,IAAI,CAAC,SAAS,EAAE,UAAO,CAAC,CAAC;YACvD,IAAM,QAAM,GAAG,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;YAC1C,IAAI,MAAM,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,QAAM,KAAK,cAAc,CAAC,KAAK,IAAI,QAAM,KAAK,cAAc,CAAC,MAAM,CAAC,EAAE;gBACnG,OAAO,CAAC,CAAC,CAAC,IAAI,iBAAU,IAAI,CAAC,aAAa,EAAE,WAAQ,CAAC;aACtD;SACF;QACD,IAAI,OAAO,CAAC,MAAM,EAAE;YAClB,IAAI,CAAC,GAAG,CAAC,cAAM,8CAAI,OAAO,YAAE,iBAAiB,WAA9B,CAA+B,CAAC,CAAC;SACjD;IACH,CAAC;IAED,yBAAQ,GAAR,UAAS,KAAY;QAAZ,sBAAA,EAAA,YAAY;QACnB,IAAM,OAAO,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5C,IAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC;QACrD,IAAM,SAAS,GAAG,gEAAyD,MAAM,wBAAqB,CAAC;QACvG,IAAI,CAAC,GAAG,CAAC,cAAM,OAAA,CAAC,4BAAqB,OAAO,cAAI,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,WAAQ,EAAE,SAAS,CAAC,EAApF,CAAoF,CAAC,CAAC;IACvG,CAAC;IAED,yBAAQ,GAAR,UAAS,GAAW;QAApB,iBAKC;QAJC,IAAI,IAAI,CAAC,KAAK,EAAE;YACd,IAAM,WAAS,GAAG,CAAC,cAAc,EAAE,aAAa,CAAC,CAAC;YAClD,IAAI,CAAC,GAAG,CAAC,cAAM,sBAAC,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,WAAI,GAAG,CAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,mBAAY,KAAI,CAAC,aAAa,EAAE,MAAG,UAAK,WAAS,WAAxF,CAAyF,CAAC,CAAC;SAC3G;IACH,CAAC;IAuBD,oBAAG,GAAH;QAAA,iBAqBC;QArBG,cAAc;aAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;YAAd,yBAAc;;QAChB,IAAI,IAAI,CAAC,KAAK,EAAE;YACd,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,UAAU,EAAE;gBACjC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;gBACjB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;oBACxB,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC;iBACf;aACF;YACD,IAAI,IAAI,CAAC,KAAK,CAAC,UAAA,IAAI,IAAI,OAAA,IAAI,KAAK,KAAK,CAAC,EAAf,CAAe,CAAC,EAAE;gBACvC,OAAO;aACR;YACD,IAAI,IAAI,CAAC,OAAO,EAAE;gBAChB,IAAI,0CAAO,IAAI,YAAE,IAAI,CAAC,OAAO,EAAE,SAAC,CAAC;aAClC;YACD,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,UAAC,GAAY,IAAK,OAAA,KAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAvB,CAAuB,CAAC,CAAC;YAC3D,IAAI,IAAI,CAAC,YAAY,EAAE;gBACrB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,IAAe,CAAC,CAAC;aAC1C;iBAAM;gBACL,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACtB;SACF;IACH,CAAC;IAED,2BAA2B;IAC3B,4CAA4C;IAC5C,8BAA8B;IAC9B,gCAAgC;IAChC,uCAAuC;IACvC,gCAAgC;IAChC,iCAAiC;IACjC,+CAA+C;IAC/C,IAAI;IAEJ,yBAAQ,GAAR;QAAA,iBAUC;QAVQ,cAAkB;aAAlB,UAAkB,EAAlB,qBAAkB,EAAlB,IAAkB;YAAlB,yBAAkB;;QACzB,IAAI,IAAI,CAAC,KAAK,EAAE;YACd,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;gBAC1C,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAA,OAAO,IAAI,OAAA,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAI,EAAE,OAAO,CAAC,EAAhC,CAAgC,CAAC,CAAC;gBAC/D,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;aAChB;YACD,IAAI,IAAI,CAAC,MAAM,EAAE;gBACf,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,IAAe,CAAC,CAAC;aAC1C;SACF;IACH,CAAC;IACH,aAAC;AAAD,CAAC,AAtND,IAsNC","sourcesContent":["import { Scroller } from '../scroller';\nimport { CommonProcess, AdapterProcess, ProcessStatus as Status } from '../processes/index';\nimport { IPackages, ProcessSubject } from '../interfaces/index';\n\ntype LogType = [unknown?, ...unknown[]];\n\nexport class Logger {\n\n readonly debug: boolean;\n readonly immediateLog: boolean;\n readonly logTime: boolean;\n readonly getTime: () => string;\n readonly getStat: () => string;\n readonly getFetchRange: () => string;\n readonly getWorkflowCycleData: () => string;\n readonly getLoopId: () => string;\n readonly getLoopIdNext: () => string;\n readonly getScrollPosition: () => number;\n private logs: unknown[][] = [];\n\n constructor(scroller: Scroller, packageInfo: IPackages, adapter?: { id: number }) {\n const { settings } = scroller;\n this.debug = settings.debug;\n this.immediateLog = settings.immediateLog;\n this.logTime = settings.logTime;\n this.getTime = (): string =>\n scroller.state && ` // time: ${scroller.state.time}`;\n this.getStat = (): string => {\n const { buffer, viewport } = scroller;\n const first = buffer.getFirstVisibleItem();\n const last = buffer.getLastVisibleItem();\n return 'pos: ' + viewport.scrollPosition + ', ' +\n 'size: ' + viewport.getScrollableSize() + ', ' +\n 'bwd_p: ' + viewport.paddings.backward.size + ', ' +\n 'fwd_p: ' + viewport.paddings.forward.size + ', ' +\n 'default: ' + (buffer.defaultSize || 'no') + ', ' +\n 'items: ' + buffer.getVisibleItemsCount() + ', ' +\n 'range: ' + (first && last ? `[${first.$index}..${last.$index}]` : 'no');\n };\n this.getFetchRange = (): string => {\n const { first: { index: first }, last: { index: last } } = scroller.state.fetch;\n return !Number.isNaN(first) && !Number.isNaN(last)\n ? `[${first}..${last}]`\n : 'no';\n };\n this.getLoopId = (): string => scroller.state.cycle.loopId;\n this.getLoopIdNext = (): string => scroller.state.cycle.loopIdNext;\n this.getWorkflowCycleData = (): string =>\n `${settings.instanceIndex}-${scroller.state.cycle.count}`;\n this.getScrollPosition = () => scroller.routines.getScrollPosition();\n this.log(() =>\n 'vscroll Workflow has been started, ' +\n `core: ${packageInfo.core.name} v${packageInfo.core.version}, ` +\n `consumer: ${packageInfo.consumer.name} v${packageInfo.consumer.version}, ` +\n `scroller instance: ${settings.instanceIndex}, adapter ` +\n (!adapter ? 'is not instantiated' : `instance: ${adapter.id}`)\n );\n }\n\n object(str: string, obj: unknown, stringify?: boolean): void {\n this.log(() => [\n str,\n stringify\n ? JSON.stringify(obj, (k, v) => {\n if (Number.isNaN(v)) {\n return 'NaN';\n }\n if (v === Infinity) {\n return 'Infinity';\n }\n if (v === -Infinity) {\n return '-Infinity';\n }\n if (v instanceof Element) {\n return 'HTMLElement';\n }\n if (v instanceof HTMLDocument) {\n return 'HTMLDocument';\n }\n if (typeof v === 'function') {\n return 'Function';\n }\n return v;\n })\n .replace(/\"/g, '')\n .replace(/(\\{|:|,)/g, '$1 ')\n .replace(/(\\})/g, ' $1')\n : obj\n ]);\n }\n\n stat(str?: string): void {\n if (this.debug) {\n const logStyles = [\n 'color: #888; border: dashed #888 0; border-bottom-width: 0px',\n 'color: #000; border-width: 0'\n ];\n this.log(() => ['%cstat' + (str ? ` ${str}` : '') + ',%c ' + this.getStat(), ...logStyles]);\n }\n }\n\n fetch(str?: string): void {\n if (this.debug) {\n const _text = 'fetch interval' + (str ? ` ${str}` : '');\n const logStyles = ['color: #888', 'color: #000'];\n this.log(() => [`%c${_text}: %c${this.getFetchRange()}`, ...logStyles]);\n }\n }\n\n prepareForLog(data: unknown): unknown {\n return data instanceof Event && data.target\n ? this.getScrollPosition()\n : data;\n }\n\n logProcess(data: ProcessSubject): void {\n if (!this.debug) {\n return;\n }\n const { process, status, payload } = data;\n\n // inner loop start-end log\n const loopLog: string[] = [];\n if (\n process === CommonProcess.init && status === Status.next\n ) {\n loopLog.push(`%c---=== loop ${this.getLoopIdNext()} start`);\n } else if (\n process === CommonProcess.end\n ) {\n loopLog.push(`%c---=== loop ${this.getLoopId()} done`);\n const parent = payload && payload.process;\n if (status === Status.next && (parent !== AdapterProcess.reset && parent !== AdapterProcess.reload)) {\n loopLog[0] += `, loop ${this.getLoopIdNext()} start`;\n }\n }\n if (loopLog.length) {\n this.log(() => [...loopLog, 'color: #006600;']);\n }\n }\n\n logCycle(start = true): void {\n const logData = this.getWorkflowCycleData();\n const border = start ? '1px 0 0 1px' : '0 0 1px 1px';\n const logStyles = `color: #0000aa; border: solid #555 1px; border-width: ${border}; margin-left: -2px`;\n this.log(() => [`%c ~~~ WF Cycle ${logData} ${start ? 'STARTED' : 'FINALIZED'} ~~~ `, logStyles]);\n }\n\n logError(str: string): void {\n if (this.debug) {\n const logStyles = ['color: #a00;', 'color: #000'];\n this.log(() => ['error:%c' + (str ? ` ${str}` : '') + `%c (loop ${this.getLoopIdNext()})`, ...logStyles]);\n }\n }\n\n logAdapterMethod = (methodName: string, args?: unknown, add?: string): void => {\n if (!this.debug) {\n return;\n }\n const params = (\n args === void 0 ? [] : (Array.isArray(args) ? args : [args])\n )\n .map((arg: unknown) => {\n if (typeof arg === 'function') {\n return 'func';\n } else if (typeof arg !== 'object' || !arg) {\n return arg;\n } else if (Array.isArray(arg)) {\n return `[of ${arg.length}]`;\n }\n return '{ ' + Object.keys(arg).join(', ') + ' }';\n })\n .join(', ');\n this.log(`adapter: ${methodName}(${params || ''})${add || ''}`);\n };\n\n log(...args: any[]): void {\n if (this.debug) {\n if (typeof args[0] === 'function') {\n args = args[0]();\n if (!Array.isArray(args)) {\n args = [args];\n }\n }\n if (args.every(item => item === void 0)) {\n return;\n }\n if (this.logTime) {\n args = [...args, this.getTime()];\n }\n args = args.map((arg: unknown) => this.prepareForLog(arg));\n if (this.immediateLog) {\n console.log.apply(this, args as LogType);\n } else {\n this.logs.push(args);\n }\n }\n }\n\n // logNow(...args: any[]) {\n // const immediateLog = this.immediateLog;\n // const debug = this.debug;\n // (this as any).debug = true;\n // (this as any).immediateLog = true;\n // this.log.apply(this, args);\n // (this as any).debug = debug;\n // (this as any).immediateLog = immediateLog;\n // }\n\n logForce(...args: unknown[]): void {\n if (this.debug) {\n if (!this.immediateLog && this.logs.length) {\n this.logs.forEach(logArgs => console.log.apply(this, logArgs));\n this.logs = [];\n }\n if (args.length) {\n console.log.apply(this, args as LogType);\n }\n }\n }\n}\n"]}
@@ -1,7 +1,7 @@
1
1
  import { Direction } from '../inputs/index';
2
2
  var Padding = /** @class */ (function () {
3
- function Padding(element, direction, routines) {
4
- var found = routines.findPaddingElement(element, direction);
3
+ function Padding(direction, routines) {
4
+ var found = routines.findPaddingElement(direction);
5
5
  routines.checkElement(found);
6
6
  this.element = found;
7
7
  this.direction = direction;
@@ -24,10 +24,10 @@ var Padding = /** @class */ (function () {
24
24
  }());
25
25
  export { Padding };
26
26
  var Paddings = /** @class */ (function () {
27
- function Paddings(element, routines, settings) {
27
+ function Paddings(routines, settings) {
28
28
  this.settings = settings;
29
- this.forward = new Padding(element, Direction.forward, routines);
30
- this.backward = new Padding(element, Direction.backward, routines);
29
+ this.forward = new Padding(Direction.forward, routines);
30
+ this.backward = new Padding(Direction.backward, routines);
31
31
  }
32
32
  Paddings.prototype.byDirection = function (direction, opposite) {
33
33
  return direction === Direction.backward
@@ -1 +1 @@
1
- {"version":3,"file":"paddings.js","sourceRoot":"","sources":["../../../src/classes/paddings.ts"],"names":[],"mappings":"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","sourcesContent":["import { Routines } from './domRoutines';\r\nimport { Settings } from './settings';\r\nimport { Direction } from '../inputs/index';\r\n\r\nexport class Padding {\r\n\r\n element: HTMLElement;\r\n direction: Direction;\r\n routines: Routines;\r\n\r\n constructor(element: HTMLElement, direction: Direction, routines: Routines) {\r\n const found = routines.findPaddingElement(element, direction);\r\n routines.checkElement(found as HTMLElement);\r\n this.element = found as HTMLElement;\r\n this.direction = direction;\r\n this.routines = routines;\r\n }\r\n\r\n reset(size?: number): void {\r\n this.size = size || 0;\r\n }\r\n\r\n get size(): number {\r\n return this.routines.getSizeStyle(this.element);\r\n }\r\n\r\n set size(value: number) {\r\n this.routines.setSizeStyle(this.element, value);\r\n }\r\n\r\n}\r\n\r\nexport class Paddings {\r\n settings: Settings;\r\n forward: Padding;\r\n backward: Padding;\r\n\r\n constructor(element: HTMLElement, routines: Routines, settings: Settings) {\r\n this.settings = settings;\r\n this.forward = new Padding(element, Direction.forward, routines);\r\n this.backward = new Padding(element, Direction.backward, routines);\r\n }\r\n\r\n byDirection(direction: Direction, opposite?: boolean): Padding {\r\n return direction === Direction.backward\r\n ? (opposite ? this.forward : this.backward)\r\n : (opposite ? this.backward : this.forward);\r\n }\r\n\r\n reset(viewportSize: number, startIndex: number, offset: number): void {\r\n const positive = this.getPositiveSize(startIndex, viewportSize, offset);\r\n const negative = this.getNegativeSize(startIndex);\r\n if (this.settings.inverse) {\r\n this.forward.reset(negative);\r\n this.backward.reset(positive);\r\n const diff = viewportSize - this.backward.size - offset;\r\n if (diff > 0) {\r\n this.backward.size += diff;\r\n this.forward.size -= diff;\r\n }\r\n } else {\r\n this.forward.reset(positive);\r\n this.backward.reset(negative);\r\n const diff = viewportSize - this.forward.size - offset;\r\n if (diff > 0) {\r\n this.backward.size -= diff;\r\n this.forward.size += diff;\r\n }\r\n }\r\n\r\n }\r\n\r\n getPositiveSize(startIndex: number, viewportSize: number, offset: number): number {\r\n const { settings } = this;\r\n let positiveSize = viewportSize;\r\n if (isFinite(settings.maxIndex)) {\r\n positiveSize = (settings.maxIndex - startIndex + 1) * settings.itemSize;\r\n }\r\n if (offset) {\r\n positiveSize = Math.max(positiveSize - offset, 0);\r\n }\r\n return positiveSize;\r\n }\r\n\r\n getNegativeSize(startIndex: number): number {\r\n const { settings } = this;\r\n let negativeSize = 0;\r\n if (isFinite(settings.minIndex)) {\r\n negativeSize = (startIndex - settings.minIndex) * settings.itemSize;\r\n }\r\n return negativeSize;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"paddings.js","sourceRoot":"","sources":["../../../src/classes/paddings.ts"],"names":[],"mappings":"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","sourcesContent":["import { Routines } from './domRoutines';\r\nimport { Settings } from './settings';\r\nimport { Direction } from '../inputs/index';\r\n\r\nexport class Padding {\r\n\r\n element: HTMLElement;\r\n direction: Direction;\r\n routines: Routines;\r\n\r\n constructor(direction: Direction, routines: Routines) {\r\n const found = routines.findPaddingElement(direction);\r\n routines.checkElement(found as HTMLElement);\r\n this.element = found as HTMLElement;\r\n this.direction = direction;\r\n this.routines = routines;\r\n }\r\n\r\n reset(size?: number): void {\r\n this.size = size || 0;\r\n }\r\n\r\n get size(): number {\r\n return this.routines.getSizeStyle(this.element);\r\n }\r\n\r\n set size(value: number) {\r\n this.routines.setSizeStyle(this.element, value);\r\n }\r\n\r\n}\r\n\r\nexport class Paddings {\r\n settings: Settings;\r\n forward: Padding;\r\n backward: Padding;\r\n\r\n constructor(routines: Routines, settings: Settings) {\r\n this.settings = settings;\r\n this.forward = new Padding(Direction.forward, routines);\r\n this.backward = new Padding(Direction.backward, routines);\r\n }\r\n\r\n byDirection(direction: Direction, opposite?: boolean): Padding {\r\n return direction === Direction.backward\r\n ? (opposite ? this.forward : this.backward)\r\n : (opposite ? this.backward : this.forward);\r\n }\r\n\r\n reset(viewportSize: number, startIndex: number, offset: number): void {\r\n const positive = this.getPositiveSize(startIndex, viewportSize, offset);\r\n const negative = this.getNegativeSize(startIndex);\r\n if (this.settings.inverse) {\r\n this.forward.reset(negative);\r\n this.backward.reset(positive);\r\n const diff = viewportSize - this.backward.size - offset;\r\n if (diff > 0) {\r\n this.backward.size += diff;\r\n this.forward.size -= diff;\r\n }\r\n } else {\r\n this.forward.reset(positive);\r\n this.backward.reset(negative);\r\n const diff = viewportSize - this.forward.size - offset;\r\n if (diff > 0) {\r\n this.backward.size -= diff;\r\n this.forward.size += diff;\r\n }\r\n }\r\n\r\n }\r\n\r\n getPositiveSize(startIndex: number, viewportSize: number, offset: number): number {\r\n const { settings } = this;\r\n let positiveSize = viewportSize;\r\n if (isFinite(settings.maxIndex)) {\r\n positiveSize = (settings.maxIndex - startIndex + 1) * settings.itemSize;\r\n }\r\n if (offset) {\r\n positiveSize = Math.max(positiveSize - offset, 0);\r\n }\r\n return positiveSize;\r\n }\r\n\r\n getNegativeSize(startIndex: number): number {\r\n const { settings } = this;\r\n let negativeSize = 0;\r\n if (isFinite(settings.minIndex)) {\r\n negativeSize = (startIndex - settings.minIndex) * settings.itemSize;\r\n }\r\n return negativeSize;\r\n }\r\n}\r\n"]}
@@ -13,6 +13,7 @@ var InnerLoopModel = /** @class */ (function () {
13
13
  configurable: true
14
14
  });
15
15
  InnerLoopModel.prototype.done = function () {
16
+ this.isInitial = false;
16
17
  this.count++;
17
18
  this.total++;
18
19
  this.busy.set(false);
@@ -33,27 +34,22 @@ var WorkflowCycleModel = /** @class */ (function () {
33
34
  this.innerLoop = new InnerLoopModel(loopCount);
34
35
  this.interrupter = null;
35
36
  this.busy = new Reactive(false);
36
- this.done(cycleCount);
37
+ this.end(cycleCount);
37
38
  }
38
39
  Object.defineProperty(WorkflowCycleModel.prototype, "loopId", {
39
40
  get: function () {
40
- return this.instanceIndex + "-" + this.count + "-" + this.innerLoop.total;
41
+ return "".concat(this.instanceIndex, "-").concat(this.count, "-").concat(this.innerLoop.total);
41
42
  },
42
43
  enumerable: false,
43
44
  configurable: true
44
45
  });
45
46
  Object.defineProperty(WorkflowCycleModel.prototype, "loopIdNext", {
46
47
  get: function () {
47
- return this.instanceIndex + "-" + this.count + "-" + (this.innerLoop.total + 1);
48
+ return "".concat(this.instanceIndex, "-").concat(this.count, "-").concat(this.innerLoop.total + 1);
48
49
  },
49
50
  enumerable: false,
50
51
  configurable: true
51
52
  });
52
- WorkflowCycleModel.prototype.done = function (count) {
53
- this.count = count;
54
- this.isInitial = false;
55
- this.busy.set(false);
56
- };
57
53
  WorkflowCycleModel.prototype.start = function (isInitial, initiator) {
58
54
  this.isInitial = isInitial;
59
55
  this.initiator = initiator;
@@ -62,6 +58,11 @@ var WorkflowCycleModel = /** @class */ (function () {
62
58
  this.interrupter = null;
63
59
  this.busy.set(true);
64
60
  };
61
+ WorkflowCycleModel.prototype.end = function (count) {
62
+ this.count = count;
63
+ this.isInitial = false;
64
+ this.busy.set(false);
65
+ };
65
66
  WorkflowCycleModel.prototype.dispose = function (forever) {
66
67
  if (forever) {
67
68
  // otherwise the value will be persisted during re-instantiation
@@ -1 +1 @@
1
- {"version":3,"file":"cycle.js","sourceRoot":"","sources":["../../../../src/classes/state/cycle.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC;IAUE,wBAAY,KAAa;QACvB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,IAAI,QAAQ,CAAU,KAAK,CAAC,CAAC;IAC3C,CAAC;IARD,sBAAI,iCAAK;aAAT;YACE,OAAO,IAAI,CAAC,KAAK,KAAK,CAAC,CAAC;QAC1B,CAAC;;;OAAA;IAQD,6BAAI,GAAJ;QACE,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IAED,8BAAK,GAAL;QACE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC;IAED,gCAAO,GAAP;QACE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;IACtB,CAAC;IACH,qBAAC;AAAD,CAAC,AA7BD,IA6BC;AAED;IAiBE,4BAAY,aAAqB,EAAE,KAA0B;QAC3D,IAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3C,IAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAEpD,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,SAAS,GAAG,IAAI,cAAc,CAAC,SAAS,CAAC,CAAC;QAC/C,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,IAAI,QAAQ,CAAU,KAAK,CAAC,CAAC;QACzC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACxB,CAAC;IAjBD,sBAAI,sCAAM;aAAV;YACE,OAAU,IAAI,CAAC,aAAa,SAAI,IAAI,CAAC,KAAK,SAAI,IAAI,CAAC,SAAS,CAAC,KAAO,CAAC;QACvE,CAAC;;;OAAA;IAED,sBAAI,0CAAU;aAAd;YACE,OAAU,IAAI,CAAC,aAAa,SAAI,IAAI,CAAC,KAAK,UAAI,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,CAAE,CAAC;QAC3E,CAAC;;;OAAA;IAaD,iCAAI,GAAJ,UAAK,KAAa;QAChB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IAED,kCAAK,GAAL,UAAM,SAAkB,EAAE,SAAsB;QAC9C,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,CAAC;QACrC,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC;QACzB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC;IAED,oCAAO,GAAP,UAAQ,OAAiB;QACvB,IAAI,OAAO,EAAE;YACX,gEAAgE;YAChE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;SACrB;QACD,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IACH,yBAAC;AAAD,CAAC,AAlDD,IAkDC","sourcesContent":["import { ProcessName } from '../../interfaces/index';\nimport { Reactive } from '../reactive';\n\nclass InnerLoopModel {\n total: number;\n count: number;\n isInitial: boolean;\n busy: Reactive<boolean>;\n\n get first(): boolean {\n return this.count === 0;\n }\n\n constructor(total: number) {\n this.total = total;\n this.isInitial = false;\n this.busy = new Reactive<boolean>(false);\n }\n\n done() {\n this.count++;\n this.total++;\n this.busy.set(false);\n }\n\n start() {\n this.busy.set(true);\n }\n\n dispose() {\n this.busy.dispose();\n }\n}\n\nexport class WorkflowCycleModel {\n instanceIndex: number;\n count: number;\n isInitial: boolean;\n initiator: ProcessName;\n innerLoop: InnerLoopModel;\n interrupter: ProcessName | null;\n busy: Reactive<boolean>;\n\n get loopId(): string {\n return `${this.instanceIndex}-${this.count}-${this.innerLoop.total}`;\n }\n\n get loopIdNext(): string {\n return `${this.instanceIndex}-${this.count}-${this.innerLoop.total + 1}`;\n }\n\n constructor(instanceIndex: number, cycle?: WorkflowCycleModel) {\n const cycleCount = cycle ? cycle.count : 1;\n const loopCount = cycle ? cycle.innerLoop.count : 0;\n\n this.instanceIndex = instanceIndex;\n this.innerLoop = new InnerLoopModel(loopCount);\n this.interrupter = null;\n this.busy = new Reactive<boolean>(false);\n this.done(cycleCount);\n }\n\n done(count: number): void {\n this.count = count;\n this.isInitial = false;\n this.busy.set(false);\n }\n\n start(isInitial: boolean, initiator: ProcessName): void {\n this.isInitial = isInitial;\n this.initiator = initiator;\n this.innerLoop.isInitial = isInitial;\n this.innerLoop.count = 0;\n this.interrupter = null;\n this.busy.set(true);\n }\n\n dispose(forever?: boolean): void {\n if (forever) {\n // otherwise the value will be persisted during re-instantiation\n this.busy.dispose();\n }\n this.innerLoop.dispose();\n }\n}\n"]}
1
+ {"version":3,"file":"cycle.js","sourceRoot":"","sources":["../../../../src/classes/state/cycle.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC;IAUE,wBAAY,KAAa;QACvB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,IAAI,QAAQ,CAAU,KAAK,CAAC,CAAC;IAC3C,CAAC;IARD,sBAAI,iCAAK;aAAT;YACE,OAAO,IAAI,CAAC,KAAK,KAAK,CAAC,CAAC;QAC1B,CAAC;;;OAAA;IAQD,6BAAI,GAAJ;QACE,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IAED,8BAAK,GAAL;QACE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC;IAED,gCAAO,GAAP;QACE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;IACtB,CAAC;IACH,qBAAC;AAAD,CAAC,AA9BD,IA8BC;AAED;IAiBE,4BAAY,aAAqB,EAAE,KAA0B;QAC3D,IAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3C,IAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAEpD,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,SAAS,GAAG,IAAI,cAAc,CAAC,SAAS,CAAC,CAAC;QAC/C,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,IAAI,QAAQ,CAAU,KAAK,CAAC,CAAC;QACzC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACvB,CAAC;IAjBD,sBAAI,sCAAM;aAAV;YACE,OAAO,UAAG,IAAI,CAAC,aAAa,cAAI,IAAI,CAAC,KAAK,cAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAE,CAAC;QACvE,CAAC;;;OAAA;IAED,sBAAI,0CAAU;aAAd;YACE,OAAO,UAAG,IAAI,CAAC,aAAa,cAAI,IAAI,CAAC,KAAK,cAAI,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,CAAE,CAAC;QAC3E,CAAC;;;OAAA;IAaD,kCAAK,GAAL,UAAM,SAAkB,EAAE,SAAsB;QAC9C,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,CAAC;QACrC,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC;QACzB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC;IAED,gCAAG,GAAH,UAAI,KAAa;QACf,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IAED,oCAAO,GAAP,UAAQ,OAAiB;QACvB,IAAI,OAAO,EAAE;YACX,gEAAgE;YAChE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;SACrB;QACD,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IACH,yBAAC;AAAD,CAAC,AAlDD,IAkDC","sourcesContent":["import { ProcessName } from '../../interfaces/index';\nimport { Reactive } from '../reactive';\n\nclass InnerLoopModel {\n total: number;\n count: number;\n isInitial: boolean;\n busy: Reactive<boolean>;\n\n get first(): boolean {\n return this.count === 0;\n }\n\n constructor(total: number) {\n this.total = total;\n this.isInitial = false;\n this.busy = new Reactive<boolean>(false);\n }\n\n done() {\n this.isInitial = false;\n this.count++;\n this.total++;\n this.busy.set(false);\n }\n\n start() {\n this.busy.set(true);\n }\n\n dispose() {\n this.busy.dispose();\n }\n}\n\nexport class WorkflowCycleModel {\n instanceIndex: number;\n count: number;\n isInitial: boolean;\n initiator: ProcessName;\n innerLoop: InnerLoopModel;\n interrupter: ProcessName | null;\n busy: Reactive<boolean>;\n\n get loopId(): string {\n return `${this.instanceIndex}-${this.count}-${this.innerLoop.total}`;\n }\n\n get loopIdNext(): string {\n return `${this.instanceIndex}-${this.count}-${this.innerLoop.total + 1}`;\n }\n\n constructor(instanceIndex: number, cycle?: WorkflowCycleModel) {\n const cycleCount = cycle ? cycle.count : 1;\n const loopCount = cycle ? cycle.innerLoop.count : 0;\n\n this.instanceIndex = instanceIndex;\n this.innerLoop = new InnerLoopModel(loopCount);\n this.interrupter = null;\n this.busy = new Reactive<boolean>(false);\n this.end(cycleCount);\n }\n\n start(isInitial: boolean, initiator: ProcessName): void {\n this.isInitial = isInitial;\n this.initiator = initiator;\n this.innerLoop.isInitial = isInitial;\n this.innerLoop.count = 0;\n this.interrupter = null;\n this.busy.set(true);\n }\n\n end(count: number): void {\n this.count = count;\n this.isInitial = false;\n this.busy.set(false);\n }\n\n dispose(forever?: boolean): void {\n if (forever) {\n // otherwise the value will be persisted during re-instantiation\n this.busy.dispose();\n }\n this.innerLoop.dispose();\n }\n}\n"]}
@@ -13,7 +13,7 @@ var RenderModel = /** @class */ (function () {
13
13
  this.sizeBefore = 0;
14
14
  this.sizeAfter = 0;
15
15
  this.positionBefore = 0;
16
- this.renderTimer = null;
16
+ this.cancel = null;
17
17
  };
18
18
  return RenderModel;
19
19
  }());
@@ -1 +1 @@
1
- {"version":3,"file":"render.js","sourceRoot":"","sources":["../../../../src/classes/state/render.ts"],"names":[],"mappings":"AAAA;IAUE;QACE,IAAI,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;IAND,sBAAI,+BAAM;aAAV;YACE,OAAO,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC,SAAS,CAAC;QAC5C,CAAC;;;OAAA;IAMD,2BAAK,GAAL;QACE,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;QACpB,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;QACnB,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;QACxB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;IAC1B,CAAC;IACH,kBAAC;AAAD,CAAC,AApBD,IAoBC","sourcesContent":["export class RenderModel {\n sizeBefore: number;\n sizeAfter: number;\n positionBefore: number;\n renderTimer: ReturnType<typeof setTimeout> | null;\n\n get noSize(): boolean {\n return this.sizeBefore === this.sizeAfter;\n }\n\n constructor() {\n this.reset();\n }\n\n reset(): void {\n this.sizeBefore = 0;\n this.sizeAfter = 0;\n this.positionBefore = 0;\n this.renderTimer = null;\n }\n}\n"]}
1
+ {"version":3,"file":"render.js","sourceRoot":"","sources":["../../../../src/classes/state/render.ts"],"names":[],"mappings":"AAAA;IAUE;QACE,IAAI,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;IAND,sBAAI,+BAAM;aAAV;YACE,OAAO,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC,SAAS,CAAC;QAC5C,CAAC;;;OAAA;IAMD,2BAAK,GAAL;QACE,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;QACpB,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;QACnB,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;QACxB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;IACrB,CAAC;IACH,kBAAC;AAAD,CAAC,AApBD,IAoBC","sourcesContent":["export class RenderModel {\n sizeBefore: number;\n sizeAfter: number;\n positionBefore: number;\n cancel: (() => void) | null;\n\n get noSize(): boolean {\n return this.sizeBefore === this.sizeAfter;\n }\n\n constructor() {\n this.reset();\n }\n\n reset(): void {\n this.sizeBefore = 0;\n this.sizeAfter = 0;\n this.positionBefore = 0;\n this.cancel = null;\n }\n}\n"]}
@@ -1,8 +1,8 @@
1
- var ScrollState = /** @class */ (function () {
2
- function ScrollState() {
1
+ var ScrollModel = /** @class */ (function () {
2
+ function ScrollModel() {
3
3
  this.reset();
4
4
  }
5
- ScrollState.prototype.reset = function () {
5
+ ScrollModel.prototype.reset = function () {
6
6
  this.previous = null;
7
7
  this.current = null;
8
8
  this.syntheticPosition = null;
@@ -10,24 +10,24 @@ var ScrollState = /** @class */ (function () {
10
10
  this.positionBeforeAsync = null;
11
11
  this.positionBeforeAdjust = null;
12
12
  this.positionAfterAdjust = null;
13
- this.cleanupTimers();
13
+ this.stop();
14
14
  };
15
- ScrollState.prototype.cleanupTimers = function () {
15
+ ScrollModel.prototype.stop = function () {
16
16
  if (this.scrollTimer) {
17
17
  clearTimeout(this.scrollTimer);
18
18
  this.scrollTimer = null;
19
19
  }
20
- if (this.animationFrameId) {
21
- cancelAnimationFrame(this.animationFrameId);
22
- this.animationFrameId = 0;
20
+ if (this.cancelAnimation) {
21
+ this.cancelAnimation();
22
+ this.cancelAnimation = null;
23
23
  }
24
24
  };
25
- ScrollState.prototype.hasPositionChanged = function (position) {
25
+ ScrollModel.prototype.hasPositionChanged = function (position) {
26
26
  var before = this.positionBeforeAdjust;
27
27
  var after = this.positionAfterAdjust;
28
28
  return before === null || before !== position || after === null || after !== position;
29
29
  };
30
- return ScrollState;
30
+ return ScrollModel;
31
31
  }());
32
- export { ScrollState };
32
+ export { ScrollModel };
33
33
  //# sourceMappingURL=scroll.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"scroll.js","sourceRoot":"","sources":["../../../../src/classes/state/scroll.ts"],"names":[],"mappings":"AAKA;IAaE;QACE,IAAI,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;IAED,2BAAK,GAAL;QACE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAC9B,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;QAC9B,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;QAChC,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;QACjC,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;QAChC,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;IAED,mCAAa,GAAb;QACE,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAC/B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;SACzB;QACD,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACzB,oBAAoB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YAC5C,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;SAC3B;IACH,CAAC;IAED,wCAAkB,GAAlB,UAAmB,QAAgB;QACjC,IAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC;QACzC,IAAM,KAAK,GAAG,IAAI,CAAC,mBAAmB,CAAC;QACvC,OAAO,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,QAAQ,CAAC;IACxF,CAAC;IACH,kBAAC;AAAD,CAAC,AA5CD,IA4CC","sourcesContent":["import {\n ScrollEventData as IScrollEventData,\n ScrollState as IScrollState\n} from '../../interfaces/index';\n\nexport class ScrollState implements IScrollState {\n previous: IScrollEventData | null;\n current: IScrollEventData | null;\n\n scrollTimer: ReturnType<typeof setTimeout> | null;\n\n syntheticPosition: number | null;\n syntheticFulfill: boolean;\n animationFrameId: number;\n positionBeforeAsync: number | null;\n positionBeforeAdjust: number | null;\n positionAfterAdjust: number | null;\n\n constructor() {\n this.reset();\n }\n\n reset(): void {\n this.previous = null;\n this.current = null;\n this.syntheticPosition = null;\n this.syntheticFulfill = false;\n this.positionBeforeAsync = null;\n this.positionBeforeAdjust = null;\n this.positionAfterAdjust = null;\n this.cleanupTimers();\n }\n\n cleanupTimers(): void {\n if (this.scrollTimer) {\n clearTimeout(this.scrollTimer);\n this.scrollTimer = null;\n }\n if (this.animationFrameId) {\n cancelAnimationFrame(this.animationFrameId);\n this.animationFrameId = 0;\n }\n }\n\n hasPositionChanged(position: number): boolean {\n const before = this.positionBeforeAdjust;\n const after = this.positionAfterAdjust;\n return before === null || before !== position || after === null || after !== position;\n }\n}\n"]}
1
+ {"version":3,"file":"scroll.js","sourceRoot":"","sources":["../../../../src/classes/state/scroll.ts"],"names":[],"mappings":"AAEA;IAaE;QACE,IAAI,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;IAED,2BAAK,GAAL;QACE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAC9B,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;QAC9B,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;QAChC,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;QACjC,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;QAChC,IAAI,CAAC,IAAI,EAAE,CAAC;IACd,CAAC;IAED,0BAAI,GAAJ;QACE,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAC/B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;SACzB;QACD,IAAI,IAAI,CAAC,eAAe,EAAE;YACxB,IAAI,CAAC,eAAe,EAAE,CAAC;YACvB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;SAC7B;IACH,CAAC;IAED,wCAAkB,GAAlB,UAAmB,QAAgB;QACjC,IAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC;QACzC,IAAM,KAAK,GAAG,IAAI,CAAC,mBAAmB,CAAC;QACvC,OAAO,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,QAAQ,CAAC;IACxF,CAAC;IACH,kBAAC;AAAD,CAAC,AA5CD,IA4CC","sourcesContent":["import { ScrollEventData as IScrollEventData } from '../../interfaces/index';\n\nexport class ScrollModel {\n previous: IScrollEventData | null;\n current: IScrollEventData | null;\n\n scrollTimer: ReturnType<typeof setTimeout> | null;\n\n syntheticPosition: number | null;\n syntheticFulfill: boolean;\n cancelAnimation: (() => void) | null;\n positionBeforeAsync: number | null;\n positionBeforeAdjust: number | null;\n positionAfterAdjust: number | null;\n\n constructor() {\n this.reset();\n }\n\n reset(): void {\n this.previous = null;\n this.current = null;\n this.syntheticPosition = null;\n this.syntheticFulfill = false;\n this.positionBeforeAsync = null;\n this.positionBeforeAdjust = null;\n this.positionAfterAdjust = null;\n this.stop();\n }\n\n stop(): void {\n if (this.scrollTimer) {\n clearTimeout(this.scrollTimer);\n this.scrollTimer = null;\n }\n if (this.cancelAnimation) {\n this.cancelAnimation();\n this.cancelAnimation = null;\n }\n }\n\n hasPositionChanged(position: number): boolean {\n const before = this.positionBeforeAdjust;\n const after = this.positionAfterAdjust;\n return before === null || before !== position || after === null || after !== position;\n }\n}\n"]}
@@ -3,7 +3,7 @@ import { WorkflowCycleModel } from './state/cycle';
3
3
  import { FetchModel } from './state/fetch';
4
4
  import { ClipModel } from './state/clip';
5
5
  import { RenderModel } from './state/render';
6
- import { ScrollState } from './state/scroll';
6
+ import { ScrollModel } from './state/scroll';
7
7
  var State = /** @class */ (function () {
8
8
  function State(packageInfo, settings, state) {
9
9
  this.packageInfo = packageInfo;
@@ -13,7 +13,7 @@ var State = /** @class */ (function () {
13
13
  this.fetch = new FetchModel(settings.directionPriority);
14
14
  this.clip = new ClipModel();
15
15
  this.render = new RenderModel();
16
- this.scrollState = new ScrollState();
16
+ this.scroll = new ScrollModel();
17
17
  }
18
18
  Object.defineProperty(State.prototype, "time", {
19
19
  get: function () {
@@ -22,20 +22,14 @@ var State = /** @class */ (function () {
22
22
  enumerable: false,
23
23
  configurable: true
24
24
  });
25
- State.prototype.endInnerLoop = function () {
26
- var _a = this, fetch = _a.fetch, render = _a.render, cycle = _a.cycle;
27
- if (fetch.cancel) {
28
- fetch.cancel();
29
- fetch.cancel = null;
30
- }
31
- if (render.renderTimer) {
32
- clearTimeout(render.renderTimer);
33
- render.renderTimer = null;
34
- }
35
- cycle.innerLoop.done();
25
+ State.prototype.startWorkflowCycle = function (isInitial, initiator) {
26
+ this.cycle.start(isInitial, initiator);
27
+ };
28
+ State.prototype.endWorkflowCycle = function (count) {
29
+ this.cycle.end(count);
36
30
  };
37
31
  State.prototype.startInnerLoop = function () {
38
- var _a = this, cycle = _a.cycle, scroll = _a.scrollState, fetch = _a.fetch, render = _a.render, clip = _a.clip;
32
+ var _a = this, cycle = _a.cycle, scroll = _a.scroll, fetch = _a.fetch, render = _a.render, clip = _a.clip;
39
33
  cycle.innerLoop.start();
40
34
  scroll.positionBeforeAsync = null;
41
35
  if (!fetch.simulate) {
@@ -48,10 +42,24 @@ var State = /** @class */ (function () {
48
42
  doRender: fetch.simulate && fetch.items.length > 0
49
43
  } : {}));
50
44
  };
45
+ State.prototype.endInnerLoop = function () {
46
+ var _a = this, fetch = _a.fetch, clip = _a.clip, render = _a.render, cycle = _a.cycle;
47
+ fetch.stopSimulate();
48
+ clip.reset(true);
49
+ if (fetch.cancel) {
50
+ fetch.cancel();
51
+ fetch.cancel = null;
52
+ }
53
+ if (render.cancel) {
54
+ render.cancel();
55
+ render.cancel = null;
56
+ }
57
+ cycle.innerLoop.done();
58
+ };
51
59
  State.prototype.dispose = function () {
60
+ this.scroll.stop();
52
61
  this.cycle.dispose();
53
62
  this.endInnerLoop();
54
- this.scrollState.cleanupTimers();
55
63
  };
56
64
  return State;
57
65
  }());
@@ -1 +1 @@
1
- {"version":3,"file":"state.js","sourceRoot":"","sources":["../../../src/classes/state.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAG7C;IAmBE,eAAY,WAAsB,EAAE,QAAkB,EAAE,KAAc;QACpE,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAEzB,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;QAEnC,IAAI,CAAC,KAAK,GAAG,IAAI,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QAE/F,IAAI,CAAC,KAAK,GAAG,IAAI,UAAU,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;QACxD,IAAI,CAAC,IAAI,GAAG,IAAI,SAAS,EAAE,CAAC;QAC5B,IAAI,CAAC,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;QAEhC,IAAI,CAAC,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;IACvC,CAAC;IAjBD,sBAAI,uBAAI;aAAR;YACE,OAAO,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC5C,CAAC;;;OAAA;IAiBD,4BAAY,GAAZ;QACQ,IAAA,KAA2B,IAAI,EAA7B,KAAK,WAAA,EAAE,MAAM,YAAA,EAAE,KAAK,WAAS,CAAC;QACtC,IAAI,KAAK,CAAC,MAAM,EAAE;YAChB,KAAK,CAAC,MAAM,EAAE,CAAC;YACf,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC;SACrB;QACD,IAAI,MAAM,CAAC,WAAW,EAAE;YACtB,YAAY,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YACjC,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC;SAC3B;QACD,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;IACzB,CAAC;IAED,8BAAc,GAAd;QACQ,IAAA,KAAsD,IAAI,EAAxD,KAAK,WAAA,EAAe,MAAM,iBAAA,EAAE,KAAK,WAAA,EAAE,MAAM,YAAA,EAAE,IAAI,UAAS,CAAC;QAEjE,KAAK,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QACxB,MAAM,CAAC,mBAAmB,GAAG,IAAI,CAAC;QAElC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;YACnB,KAAK,CAAC,KAAK,EAAE,CAAC;SACf;QACD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACvB,MAAM,CAAC,KAAK,EAAE,CAAC;QAEf,oBACK,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;YAC1B,OAAO,EAAE,KAAK,CAAC,SAAS;YACxB,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;SACnD,CAAC,CAAC,CAAC,EAAE,CAAC,EACP;IACJ,CAAC;IAED,uBAAO,GAAP;QACE,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;QACrB,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC;IACnC,CAAC;IAEH,YAAC;AAAD,CAAC,AAzED,IAyEC","sourcesContent":["import { Settings } from './settings';\r\nimport { WorkflowCycleModel } from './state/cycle';\r\nimport { FetchModel } from './state/fetch';\r\nimport { ClipModel } from './state/clip';\r\nimport { RenderModel } from './state/render';\r\nimport { ScrollState } from './state/scroll';\r\nimport { State as IState, IPackages, ScrollState as IScrollState, ProcessName } from '../interfaces/index';\r\n\r\nexport class State implements IState {\r\n\r\n readonly packageInfo: IPackages;\r\n private settings: Settings;\r\n\r\n initTime: number;\r\n\r\n cycle: WorkflowCycleModel;\r\n\r\n fetch: FetchModel;\r\n clip: ClipModel;\r\n render: RenderModel;\r\n\r\n scrollState: IScrollState;\r\n\r\n get time(): number {\r\n return Number(new Date()) - this.initTime;\r\n }\r\n\r\n constructor(packageInfo: IPackages, settings: Settings, state?: IState) {\r\n this.packageInfo = packageInfo;\r\n this.settings = settings;\r\n\r\n this.initTime = Number(new Date());\r\n\r\n this.cycle = new WorkflowCycleModel(this.settings.instanceIndex, state ? state.cycle : void 0);\r\n\r\n this.fetch = new FetchModel(settings.directionPriority);\r\n this.clip = new ClipModel();\r\n this.render = new RenderModel();\r\n\r\n this.scrollState = new ScrollState();\r\n }\r\n\r\n endInnerLoop(): void {\r\n const { fetch, render, cycle } = this;\r\n if (fetch.cancel) {\r\n fetch.cancel();\r\n fetch.cancel = null;\r\n }\r\n if (render.renderTimer) {\r\n clearTimeout(render.renderTimer);\r\n render.renderTimer = null;\r\n }\r\n cycle.innerLoop.done();\r\n }\r\n\r\n startInnerLoop(): { process?: ProcessName, doRender?: boolean } {\r\n const { cycle, scrollState: scroll, fetch, render, clip } = this;\r\n\r\n cycle.innerLoop.start();\r\n scroll.positionBeforeAsync = null;\r\n\r\n if (!fetch.simulate) {\r\n fetch.reset();\r\n }\r\n clip.reset(clip.force);\r\n render.reset();\r\n\r\n return {\r\n ...(cycle.innerLoop.first ? {\r\n process: cycle.initiator,\r\n doRender: fetch.simulate && fetch.items.length > 0\r\n } : {})\r\n };\r\n }\r\n\r\n dispose(): void {\r\n this.cycle.dispose();\r\n this.endInnerLoop();\r\n this.scrollState.cleanupTimers();\r\n }\r\n\r\n}\r\n"]}
1
+ {"version":3,"file":"state.js","sourceRoot":"","sources":["../../../src/classes/state.ts"],"names":[],"mappings":"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","sourcesContent":["import { Settings } from './settings';\r\nimport { WorkflowCycleModel } from './state/cycle';\r\nimport { FetchModel } from './state/fetch';\r\nimport { ClipModel } from './state/clip';\r\nimport { RenderModel } from './state/render';\r\nimport { ScrollModel } from './state/scroll';\r\nimport { State as IState, IPackages, ProcessName } from '../interfaces/index';\r\n\r\nexport class State implements IState {\r\n\r\n readonly packageInfo: IPackages;\r\n private settings: Settings;\r\n initTime: number;\r\n\r\n cycle: WorkflowCycleModel;\r\n fetch: FetchModel;\r\n clip: ClipModel;\r\n render: RenderModel;\r\n scroll: ScrollModel;\r\n\r\n get time(): number {\r\n return Number(new Date()) - this.initTime;\r\n }\r\n\r\n constructor(packageInfo: IPackages, settings: Settings, state?: IState) {\r\n this.packageInfo = packageInfo;\r\n this.settings = settings;\r\n this.initTime = Number(new Date());\r\n\r\n this.cycle = new WorkflowCycleModel(this.settings.instanceIndex, state ? state.cycle : void 0);\r\n this.fetch = new FetchModel(settings.directionPriority);\r\n this.clip = new ClipModel();\r\n this.render = new RenderModel();\r\n this.scroll = new ScrollModel();\r\n }\r\n\r\n startWorkflowCycle(isInitial: boolean, initiator: ProcessName): void {\r\n this.cycle.start(isInitial, initiator);\r\n }\r\n\r\n endWorkflowCycle(count: number): void {\r\n this.cycle.end(count);\r\n }\r\n\r\n startInnerLoop(): { process?: ProcessName, doRender?: boolean } {\r\n const { cycle, scroll: scroll, fetch, render, clip } = this;\r\n\r\n cycle.innerLoop.start();\r\n scroll.positionBeforeAsync = null;\r\n\r\n if (!fetch.simulate) {\r\n fetch.reset();\r\n }\r\n clip.reset(clip.force);\r\n render.reset();\r\n\r\n return {\r\n ...(cycle.innerLoop.first ? {\r\n process: cycle.initiator,\r\n doRender: fetch.simulate && fetch.items.length > 0\r\n } : {})\r\n };\r\n }\r\n\r\n endInnerLoop(): void {\r\n const { fetch, clip, render, cycle } = this;\r\n fetch.stopSimulate();\r\n clip.reset(true);\r\n if (fetch.cancel) {\r\n fetch.cancel();\r\n fetch.cancel = null;\r\n }\r\n if (render.cancel) {\r\n render.cancel();\r\n render.cancel = null;\r\n }\r\n cycle.innerLoop.done();\r\n }\r\n\r\n dispose(): void {\r\n this.scroll.stop();\r\n this.cycle.dispose();\r\n this.endInnerLoop();\r\n }\r\n\r\n}\r\n"]}
@@ -2,27 +2,18 @@ import { __read, __spreadArray } from "tslib";
2
2
  import { Paddings } from './paddings';
3
3
  import { Direction } from '../inputs/index';
4
4
  var Viewport = /** @class */ (function () {
5
- function Viewport(element, settings, routines, state, logger) {
6
- this.element = element;
5
+ function Viewport(settings, routines, state, logger) {
7
6
  this.settings = settings;
8
7
  this.routines = routines;
9
8
  this.state = state;
10
9
  this.logger = logger;
11
- this.hostElement = this.routines.getHostElement(this.element);
12
- this.scrollEventReceiver = this.routines.getScrollEventReceiver(this.element);
13
- if (settings.windowViewport) {
14
- this.routines.setupScrollRestoration();
15
- }
16
- if (settings.dismissOverflowAnchor) {
17
- this.routines.dismissOverflowAnchor(this.hostElement);
18
- }
19
- this.paddings = new Paddings(this.element, this.routines, settings);
10
+ this.paddings = new Paddings(this.routines, settings);
20
11
  }
21
12
  Viewport.prototype.reset = function (startIndex) {
22
13
  this.setOffset();
23
14
  this.paddings.reset(this.getSize(), startIndex, this.offset);
24
15
  this.scrollPosition = this.paddings.backward.size || 0;
25
- this.state.scrollState.reset();
16
+ this.state.scroll.reset();
26
17
  };
27
18
  Viewport.prototype.setPosition = function (value) {
28
19
  var oldPosition = this.scrollPosition;
@@ -30,16 +21,16 @@ var Viewport = /** @class */ (function () {
30
21
  this.logger.log(function () { return ['setting scroll position at', value, '[cancelled]']; });
31
22
  return value;
32
23
  }
33
- this.routines.setScrollPosition(this.hostElement, value);
24
+ this.routines.setScrollPosition(value);
34
25
  var position = this.scrollPosition;
35
26
  this.logger.log(function () { return __spreadArray([
36
27
  'setting scroll position at', position
37
- ], __read((position !== value ? ["(" + value + ")"] : [])), false); });
28
+ ], __read((position !== value ? ["(".concat(value, ")")] : [])), false); });
38
29
  return position;
39
30
  };
40
31
  Object.defineProperty(Viewport.prototype, "scrollPosition", {
41
32
  get: function () {
42
- return this.routines.getScrollPosition(this.hostElement);
33
+ return this.routines.getScrollPosition();
43
34
  },
44
35
  set: function (value) {
45
36
  this.setPosition(value);
@@ -48,25 +39,25 @@ var Viewport = /** @class */ (function () {
48
39
  configurable: true
49
40
  });
50
41
  Viewport.prototype.getSize = function () {
51
- return this.routines.getSize(this.hostElement, true);
42
+ return this.routines.getViewportSize();
52
43
  };
53
44
  Viewport.prototype.getScrollableSize = function () {
54
- return this.routines.getSize(this.element);
45
+ return this.routines.getScrollerSize();
46
+ };
47
+ Viewport.prototype.getMaxScrollPosition = function () {
48
+ return this.getScrollableSize() - this.getSize();
55
49
  };
56
50
  Viewport.prototype.getBufferPadding = function () {
57
51
  return this.getSize() * this.settings.padding;
58
52
  };
59
53
  Viewport.prototype.getEdge = function (direction) {
60
- return this.routines.getEdge(this.hostElement, direction, true);
54
+ return this.routines.getViewportEdge(direction);
61
55
  };
62
56
  Viewport.prototype.setOffset = function () {
63
- this.offset = this.routines.getOffset(this.element);
64
- if (!this.settings.windowViewport) {
65
- this.offset -= this.routines.getOffset(this.hostElement);
66
- }
57
+ this.offset = this.routines.getOffset();
67
58
  };
68
59
  Viewport.prototype.findItemElementById = function (id) {
69
- return this.routines.findItemElement(this.element, id);
60
+ return this.routines.findItemElement(id);
70
61
  };
71
62
  Viewport.prototype.getEdgeVisibleItem = function (items, direction) {
72
63
  var bwd = direction === Direction.backward;