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
@@ -23,7 +23,8 @@ var End = /** @class */ (function (_super) {
23
23
  workflow.call({ process: End.process, status: ProcessStatus.done });
24
24
  return;
25
25
  }
26
- var next = End.finalizeInnerLoop(scroller, error);
26
+ var next = End.shouldContinueRun(scroller, error);
27
+ scroller.state.endInnerLoop();
27
28
  workflow.call({
28
29
  process: End.process,
29
30
  status: next ? ProcessStatus.next : ProcessStatus.done,
@@ -46,25 +47,26 @@ var End = /** @class */ (function (_super) {
46
47
  }
47
48
  }
48
49
  };
49
- End.finalizeInnerLoop = function (scroller, error) {
50
- var state = scroller.state, _a = scroller.state, cycle = _a.cycle, clip = _a.clip, fetch = _a.fetch;
51
- var next = !!cycle.interrupter || (error ? false : End.getNext(scroller));
52
- cycle.innerLoop.isInitial = false;
53
- fetch.stopSimulate();
54
- clip.reset(true);
55
- state.endInnerLoop();
56
- return next;
57
- };
58
- End.getNext = function (scroller) {
59
- var _a = scroller.state, fetch = _a.fetch, render = _a.render;
60
- if (fetch.simulate && fetch.isCheck && !render.noSize) { // Adapter.check
50
+ End.shouldContinueRun = function (scroller, error) {
51
+ var _a = scroller.state, cycle = _a.cycle, fetch = _a.fetch, render = _a.render;
52
+ // Adapter.reload or Adapter.reset
53
+ if (cycle.interrupter) {
54
+ return true;
55
+ }
56
+ // critical error
57
+ if (error) {
58
+ return false;
59
+ }
60
+ // Adapter.check
61
+ if (fetch.simulate && fetch.isCheck && !render.noSize) {
61
62
  return true;
62
63
  }
63
- if (fetch.simulate && fetch.doRemove) { // Adapter.remove or Adapter.update with clip
64
+ // Adapter.remove or Adapter.update with clip
65
+ if (fetch.simulate && fetch.doRemove) {
64
66
  return true;
65
67
  }
66
- if ( // common inner loop (App start, Scroll, Adapter.clip) accompanied by fetch
67
- !fetch.simulate && ((fetch.hasNewItems && !render.noSize) || fetch.hasAnotherPack)) {
68
+ // common inner loop (App start, scroll, Adapter.clip) with full fetch
69
+ if (!fetch.simulate && ((fetch.hasNewItems && !render.noSize) || fetch.hasAnotherPack)) {
68
70
  return true;
69
71
  }
70
72
  return false;
@@ -1 +1 @@
1
- {"version":3,"file":"end.js","sourceRoot":"","sources":["../../../src/processes/end.ts"],"names":[],"mappings":"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","sourcesContent":["import { BaseProcessFactory, CommonProcess, ProcessStatus } from './misc/index';\nimport { Scroller } from '../scroller';\nimport { Direction } from '../inputs/index';\nimport { EMPTY_ITEM } from '../classes/adapter/props';\nimport { ScrollerWorkflow } from '../interfaces/index';\n\nconst isInterrupted = ({ call }: ScrollerWorkflow): boolean => !!call.interrupted;\n\nexport default class End extends BaseProcessFactory(CommonProcess.end) {\n\n static run(scroller: Scroller, { error }: { error?: unknown } = {}): void {\n const { workflow, state: { cycle: { interrupter } } } = scroller;\n\n if (!error && !interrupter) {\n // set out params accessible via Adapter\n End.calculateParams(scroller, workflow);\n }\n\n // explicit interruption for we don't want to go through the inner loop finalizing\n if (isInterrupted(workflow)) {\n workflow.call({ process: End.process, status: ProcessStatus.done });\n return;\n }\n\n const next = End.finalizeInnerLoop(scroller, error);\n\n workflow.call({\n process: End.process,\n status: next ? ProcessStatus.next : ProcessStatus.done,\n payload: { ...(interrupter ? { process: interrupter } : {}) }\n });\n }\n\n static calculateParams(scroller: Scroller, workflow: ScrollerWorkflow): void {\n const { adapter, viewport, buffer: { items } } = scroller;\n\n if (adapter.wanted.firstVisible) {\n const { item } = viewport.getEdgeVisibleItem(items, Direction.backward);\n if (!item || item.element !== adapter.firstVisible.element) {\n adapter.firstVisible = item ? item.get() : EMPTY_ITEM;\n }\n }\n\n // the workflow can be interrupter on firstVisible change\n if (adapter.wanted.lastVisible && !isInterrupted(workflow)) {\n const { item } = viewport.getEdgeVisibleItem(items, Direction.forward);\n if (!item || item.element !== adapter.lastVisible.element) {\n adapter.lastVisible = item ? item.get() : EMPTY_ITEM;\n }\n }\n }\n\n static finalizeInnerLoop(scroller: Scroller, error: unknown): boolean {\n const { state, state: { cycle, clip, fetch } } = scroller;\n const next = !!cycle.interrupter || (error ? false : End.getNext(scroller));\n cycle.innerLoop.isInitial = false;\n fetch.stopSimulate();\n clip.reset(true);\n state.endInnerLoop();\n return next;\n }\n\n static getNext(scroller: Scroller): boolean {\n const { state: { fetch, render } } = scroller;\n if (fetch.simulate && fetch.isCheck && !render.noSize) { // Adapter.check\n return true;\n }\n if (fetch.simulate && fetch.doRemove) { // Adapter.remove or Adapter.update with clip\n return true;\n }\n if ( // common inner loop (App start, Scroll, Adapter.clip) accompanied by fetch\n !fetch.simulate && ((fetch.hasNewItems && !render.noSize) || fetch.hasAnotherPack)\n ) {\n return true;\n }\n return false;\n }\n\n}\n"]}
1
+ {"version":3,"file":"end.js","sourceRoot":"","sources":["../../../src/processes/end.ts"],"names":[],"mappings":"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","sourcesContent":["import { BaseProcessFactory, CommonProcess, ProcessStatus } from './misc/index';\nimport { Scroller } from '../scroller';\nimport { Direction } from '../inputs/index';\nimport { EMPTY_ITEM } from '../classes/adapter/props';\nimport { ScrollerWorkflow } from '../interfaces/index';\n\nconst isInterrupted = ({ call }: ScrollerWorkflow): boolean => !!call.interrupted;\n\nexport default class End extends BaseProcessFactory(CommonProcess.end) {\n\n static run(scroller: Scroller, { error }: { error?: unknown } = {}): void {\n const { workflow, state: { cycle: { interrupter } } } = scroller;\n\n if (!error && !interrupter) {\n // set out params accessible via Adapter\n End.calculateParams(scroller, workflow);\n }\n\n // explicit interruption for we don't want to go through the inner loop finalizing\n if (isInterrupted(workflow)) {\n workflow.call({ process: End.process, status: ProcessStatus.done });\n return;\n }\n\n const next = End.shouldContinueRun(scroller, error);\n scroller.state.endInnerLoop();\n\n workflow.call({\n process: End.process,\n status: next ? ProcessStatus.next : ProcessStatus.done,\n payload: { ...(interrupter ? { process: interrupter } : {}) }\n });\n }\n\n static calculateParams(scroller: Scroller, workflow: ScrollerWorkflow): void {\n const { adapter, viewport, buffer: { items } } = scroller;\n\n if (adapter.wanted.firstVisible) {\n const { item } = viewport.getEdgeVisibleItem(items, Direction.backward);\n if (!item || item.element !== adapter.firstVisible.element) {\n adapter.firstVisible = item ? item.get() : EMPTY_ITEM;\n }\n }\n\n // the workflow can be interrupter on firstVisible change\n if (adapter.wanted.lastVisible && !isInterrupted(workflow)) {\n const { item } = viewport.getEdgeVisibleItem(items, Direction.forward);\n if (!item || item.element !== adapter.lastVisible.element) {\n adapter.lastVisible = item ? item.get() : EMPTY_ITEM;\n }\n }\n }\n\n static shouldContinueRun(scroller: Scroller, error: unknown): boolean {\n const { cycle, fetch, render } = scroller.state;\n // Adapter.reload or Adapter.reset\n if (cycle.interrupter) {\n return true;\n }\n // critical error\n if (error) {\n return false;\n }\n // Adapter.check\n if (fetch.simulate && fetch.isCheck && !render.noSize) {\n return true;\n }\n // Adapter.remove or Adapter.update with clip\n if (fetch.simulate && fetch.doRemove) {\n return true;\n }\n // common inner loop (App start, scroll, Adapter.clip) with full fetch\n if (!fetch.simulate && ((fetch.hasNewItems && !render.noSize) || fetch.hasAnotherPack)) {\n return true;\n }\n return false;\n }\n\n}\n"]}
@@ -10,8 +10,8 @@ var Fetch = /** @class */ (function (_super) {
10
10
  var box = {
11
11
  success: function (data) {
12
12
  scroller.logger.log(function () {
13
- return "resolved " + data.length + " items " +
14
- ("(index = " + scroller.state.fetch.index + ", count = " + scroller.state.fetch.count + ")");
13
+ return "resolved ".concat(data.length, " items ") +
14
+ "(index = ".concat(scroller.state.fetch.index, ", count = ").concat(scroller.state.fetch.count, ")");
15
15
  });
16
16
  scroller.state.fetch.newItemsData = data;
17
17
  workflow.call({
@@ -41,9 +41,9 @@ var Fetch = /** @class */ (function (_super) {
41
41
  }
42
42
  }
43
43
  else {
44
- var _b = scroller.state, scrollState = _b.scrollState, fetch_1 = _b.fetch, viewport = scroller.viewport;
45
- if (scrollState.positionBeforeAsync === null) {
46
- scrollState.positionBeforeAsync = viewport.scrollPosition;
44
+ var _b = scroller.state, scroll_1 = _b.scroll, fetch_1 = _b.fetch, viewport = scroller.viewport;
45
+ if (scroll_1.positionBeforeAsync === null) {
46
+ scroll_1.positionBeforeAsync = viewport.scrollPosition;
47
47
  }
48
48
  fetch_1.cancel = function () {
49
49
  box.success = function () { return null; };
@@ -1 +1 @@
1
- {"version":3,"file":"fetch.js","sourceRoot":"","sources":["../../../src/processes/fetch.ts"],"names":[],"mappings":"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","sourcesContent":["import { BaseProcessFactory, CommonProcess, ProcessStatus } from './misc/index';\nimport { Scroller } from '../scroller';\nimport { ObservableLike } from '../interfaces/index';\n\ninterface Immediate {\n data: unknown[] | null;\n error: unknown | null;\n isError: boolean;\n}\n\ntype FetchGetResult = Immediate | Promise<unknown>;\n\ninterface FetchBox {\n success: (value: unknown[]) => void;\n fail: (value: unknown) => void;\n}\n\nexport default class Fetch extends BaseProcessFactory(CommonProcess.fetch) {\n\n static run(scroller: Scroller): void {\n const { workflow } = scroller;\n\n const box = {\n success: (data: unknown[]) => {\n scroller.logger.log(() =>\n `resolved ${data.length} items ` +\n `(index = ${scroller.state.fetch.index}, count = ${scroller.state.fetch.count})`\n );\n scroller.state.fetch.newItemsData = data;\n workflow.call({\n process: Fetch.process,\n status: ProcessStatus.next\n });\n },\n fail: (error: unknown) =>\n workflow.call({\n process: Fetch.process,\n status: ProcessStatus.error,\n payload: { error }\n })\n };\n\n const result = Fetch.get(scroller);\n Fetch.complete(scroller, box, result);\n }\n\n static complete(scroller: Scroller, box: FetchBox, result: FetchGetResult): void {\n if (Object.prototype.hasOwnProperty.call(result, 'data')) {\n const { data, error, isError } = result as Immediate;\n if (!isError) {\n box.success(data || []);\n } else {\n box.fail(error);\n }\n } else {\n const { state: { scrollState, fetch }, viewport } = scroller;\n if (scrollState.positionBeforeAsync === null) {\n scrollState.positionBeforeAsync = viewport.scrollPosition;\n }\n fetch.cancel = () => {\n box.success = () => null;\n box.fail = () => null;\n };\n (result as Promise<unknown[]>).then(\n (data) => box.success(data),\n (error) => box.fail(error)\n );\n }\n }\n\n static get(scroller: Scroller): FetchGetResult {\n const _get = scroller.datasource.get;\n const { index, count } = scroller.state.fetch;\n\n let immediateData, immediateError;\n let resolve: (value: unknown) => void, reject: (value: unknown) => void;\n\n const done = (data: unknown[]) => {\n if (!resolve) {\n immediateData = data || null;\n return;\n }\n resolve(data);\n };\n const fail = (error: unknown) => {\n if (!reject) {\n immediateError = error || null;\n return;\n }\n reject(error);\n };\n\n const getResult = _get(index, count, done, fail);\n\n if (getResult && typeof getResult === 'object' && getResult !== null) {\n if (typeof (getResult as PromiseLike<unknown>).then === 'function') {\n return getResult as Promise<unknown>;\n } else if (typeof (getResult as ObservableLike).subscribe === 'function') {\n const sub = (getResult as ObservableLike).subscribe(done, fail, () => {\n if (sub && typeof sub === 'object' && typeof sub.unsubscribe === 'function') {\n sub.unsubscribe();\n }\n });\n }\n }\n\n if (immediateData || immediateError) { // callback case or immediate observable\n return {\n data: immediateError ? null : (immediateData || []),\n error: immediateError,\n isError: !!immediateError\n };\n }\n\n return new Promise((_resolve, _reject) => {\n resolve = _resolve;\n reject = _reject;\n });\n }\n\n}\n"]}
1
+ {"version":3,"file":"fetch.js","sourceRoot":"","sources":["../../../src/processes/fetch.ts"],"names":[],"mappings":"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","sourcesContent":["import { BaseProcessFactory, CommonProcess, ProcessStatus } from './misc/index';\nimport { Scroller } from '../scroller';\nimport { ObservableLike } from '../interfaces/index';\n\ninterface Immediate {\n data: unknown[] | null;\n error: unknown | null;\n isError: boolean;\n}\n\ntype FetchGetResult = Immediate | Promise<unknown>;\n\ninterface FetchBox {\n success: (value: unknown[]) => void;\n fail: (value: unknown) => void;\n}\n\nexport default class Fetch extends BaseProcessFactory(CommonProcess.fetch) {\n\n static run(scroller: Scroller): void {\n const { workflow } = scroller;\n\n const box = {\n success: (data: unknown[]) => {\n scroller.logger.log(() =>\n `resolved ${data.length} items ` +\n `(index = ${scroller.state.fetch.index}, count = ${scroller.state.fetch.count})`\n );\n scroller.state.fetch.newItemsData = data;\n workflow.call({\n process: Fetch.process,\n status: ProcessStatus.next\n });\n },\n fail: (error: unknown) =>\n workflow.call({\n process: Fetch.process,\n status: ProcessStatus.error,\n payload: { error }\n })\n };\n\n const result = Fetch.get(scroller);\n Fetch.complete(scroller, box, result);\n }\n\n static complete(scroller: Scroller, box: FetchBox, result: FetchGetResult): void {\n if (Object.prototype.hasOwnProperty.call(result, 'data')) {\n const { data, error, isError } = result as Immediate;\n if (!isError) {\n box.success(data || []);\n } else {\n box.fail(error);\n }\n } else {\n const { state: { scroll, fetch }, viewport } = scroller;\n if (scroll.positionBeforeAsync === null) {\n scroll.positionBeforeAsync = viewport.scrollPosition;\n }\n fetch.cancel = () => {\n box.success = () => null;\n box.fail = () => null;\n };\n (result as Promise<unknown[]>).then(\n (data) => box.success(data),\n (error) => box.fail(error)\n );\n }\n }\n\n static get(scroller: Scroller): FetchGetResult {\n const _get = scroller.datasource.get;\n const { index, count } = scroller.state.fetch;\n\n let immediateData, immediateError;\n let resolve: (value: unknown) => void, reject: (value: unknown) => void;\n\n const done = (data: unknown[]) => {\n if (!resolve) {\n immediateData = data || null;\n return;\n }\n resolve(data);\n };\n const fail = (error: unknown) => {\n if (!reject) {\n immediateError = error || null;\n return;\n }\n reject(error);\n };\n\n const getResult = _get(index, count, done, fail);\n\n if (getResult && typeof getResult === 'object' && getResult !== null) {\n if (typeof (getResult as PromiseLike<unknown>).then === 'function') {\n return getResult as Promise<unknown>;\n } else if (typeof (getResult as ObservableLike).subscribe === 'function') {\n const sub = (getResult as ObservableLike).subscribe(done, fail, () => {\n if (sub && typeof sub === 'object' && typeof sub.unsubscribe === 'function') {\n sub.unsubscribe();\n }\n });\n }\n }\n\n if (immediateData || immediateError) { // callback case or immediate observable\n return {\n data: immediateError ? null : (immediateData || []),\n error: immediateError,\n isError: !!immediateError\n };\n }\n\n return new Promise((_resolve, _reject) => {\n resolve = _resolve;\n reject = _reject;\n });\n }\n\n}\n"]}
@@ -7,10 +7,10 @@ var Init = /** @class */ (function (_super) {
7
7
  return _super !== null && _super.apply(this, arguments) || this;
8
8
  }
9
9
  Init.run = function (scroller, process) {
10
- var cycle = scroller.state.cycle, workflow = scroller.workflow;
10
+ var state = scroller.state, workflow = scroller.workflow;
11
11
  var isInitial = initProcesses.includes(process);
12
12
  scroller.logger.logCycle(true);
13
- cycle.start(isInitial, process);
13
+ state.startWorkflowCycle(isInitial, process);
14
14
  workflow.call({
15
15
  process: Init.process,
16
16
  status: ProcessStatus.next
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/processes/init.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAIhG,IAAM,aAAa,GAAG,CAAC,aAAa,CAAC,IAAI,EAAE,cAAc,CAAC,KAAK,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC;AAExF;IAAkC,wBAAsC;IAAxE;;IAaA,CAAC;IAXQ,QAAG,GAAV,UAAW,QAAkB,EAAE,OAAoB;QAChC,IAAA,KAAK,GAAiB,QAAQ,YAAzB,EAAI,QAAQ,GAAK,QAAQ,SAAb,CAAc;QAChD,IAAM,SAAS,GAAG,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAClD,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC/B,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAChC,QAAQ,CAAC,IAAI,CAAC;YACZ,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,MAAM,EAAE,aAAa,CAAC,IAAI;SAC3B,CAAC,CAAC;IACL,CAAC;IAEH,WAAC;AAAD,CAAC,AAbD,CAAkC,kBAAkB,CAAC,aAAa,CAAC,IAAI,CAAC,GAavE","sourcesContent":["import { BaseProcessFactory, CommonProcess, AdapterProcess, ProcessStatus } from './misc/index';\nimport { Scroller } from '../scroller';\nimport { ProcessName } from '../interfaces/index';\n\nconst initProcesses = [CommonProcess.init, AdapterProcess.reset, AdapterProcess.reload];\n\nexport default class Init extends BaseProcessFactory(CommonProcess.init) {\n\n static run(scroller: Scroller, process: ProcessName): void {\n const { state: { cycle }, workflow } = scroller;\n const isInitial = initProcesses.includes(process);\n scroller.logger.logCycle(true);\n cycle.start(isInitial, process);\n workflow.call({\n process: Init.process,\n status: ProcessStatus.next\n });\n }\n\n}\n"]}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/processes/init.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAIhG,IAAM,aAAa,GAAG,CAAC,aAAa,CAAC,IAAI,EAAE,cAAc,CAAC,KAAK,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC;AAExF;IAAkC,wBAAsC;IAAxE;;IAaA,CAAC;IAXQ,QAAG,GAAV,UAAW,QAAkB,EAAE,OAAoB;QACzC,IAAA,KAAK,GAAe,QAAQ,MAAvB,EAAE,QAAQ,GAAK,QAAQ,SAAb,CAAc;QACrC,IAAM,SAAS,GAAG,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAClD,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC/B,KAAK,CAAC,kBAAkB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAC7C,QAAQ,CAAC,IAAI,CAAC;YACZ,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,MAAM,EAAE,aAAa,CAAC,IAAI;SAC3B,CAAC,CAAC;IACL,CAAC;IAEH,WAAC;AAAD,CAAC,AAbD,CAAkC,kBAAkB,CAAC,aAAa,CAAC,IAAI,CAAC,GAavE","sourcesContent":["import { BaseProcessFactory, CommonProcess, AdapterProcess, ProcessStatus } from './misc/index';\nimport { Scroller } from '../scroller';\nimport { ProcessName } from '../interfaces/index';\n\nconst initProcesses = [CommonProcess.init, AdapterProcess.reset, AdapterProcess.reload];\n\nexport default class Init extends BaseProcessFactory(CommonProcess.init) {\n\n static run(scroller: Scroller, process: ProcessName): void {\n const { state, workflow } = scroller;\n const isInitial = initProcesses.includes(process);\n scroller.logger.logCycle(true);\n state.startWorkflowCycle(isInitial, process);\n workflow.call({\n process: Init.process,\n status: ProcessStatus.next\n });\n }\n\n}\n"]}
@@ -32,7 +32,7 @@ export var BaseAdapterProcessFactory = function (process) { var _a; return _a =
32
32
  scroller.workflow.call({
33
33
  process: process,
34
34
  status: ProcessStatus.error,
35
- payload: { error: "Wrong argument of the \"" + process + "\" method call" }
35
+ payload: { error: "Wrong argument of the \"".concat(process, "\" method call") }
36
36
  });
37
37
  }
38
38
  }
@@ -1 +1 @@
1
- {"version":3,"file":"base.js","sourceRoot":"","sources":["../../../../src/processes/misc/base.ts"],"names":[],"mappings":";AAAA,OAAO,EAAkB,aAAa,EAAE,MAAM,SAAS,CAAC;AAExD,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAG/D,MAAM,CAAC,IAAM,kBAAkB,GAAG,UAAC,OAAoB;QAErD;QAIA,CAAC;QAAD,kBAAC;IAAD,CAAC,AAJD;IAES,UAAO,GAAgB,OAAQ;SAEvC,CAAC;AAEJ,MAAM,CAAC,IAAM,yBAAyB,GAAG,UAAC,OAAuB;QAE9B,sCAA6C;QAA9E;;QA+BA,CAAC;QA3BQ,6BAAU,GAAjB,UACE,QAAkB,EAAE,OAAU,EAAE,YAAoB,EAAE,QAAyB;YAA/C,6BAAA,EAAA,oBAAoB;YAEpD,IAAM,MAAM,GAAqB;gBAC/B,IAAI,EAAE,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC,QAAQ,IAAI,OAAO,CAAC,CAAC;aAC9D,CAAC;YAEF,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE;gBACvB,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;qBAC/C,MAAM,CAAC,UAAC,GAAG,EAAE,EAAgB;;wBAAhB,KAAA,aAAgB,EAAf,GAAG,QAAA,EAAI,KAAK,cAAA;oBAAQ,OAAA,uBAC9B,GAAG,gBACL,GAAG,IAAG,KAAK,OACZ;gBAHiC,CAGjC,EAAE,EAAO,CAAC,CAAC;aAChB;iBAAM;gBACL,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,cAAM,OAAA,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,EAAxB,CAAwB,CAAC,CAAC;gBACpD,IAAI,CAAC,YAAY,EAAE;oBACjB,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC;wBACrB,OAAO,SAAA;wBACP,MAAM,EAAE,aAAa,CAAC,KAAK;wBAC3B,OAAO,EAAE,EAAE,KAAK,EAAE,6BAA0B,OAAO,mBAAe,EAAE;qBACrE,CAAC,CAAC;iBACJ;aACF;YAED,OAAO,MAAM,CAAC;QAChB,CAAC;QAEH,yBAAC;IAAD,CAAC,AA/BD,CAAkC,kBAAkB,CAAC,OAAO,CAAkB;IAErE,UAAO,GAAmB,OAAQ;SA6B1C,CAAC","sourcesContent":["import { AdapterProcess, ProcessStatus } from './enums';\nimport { Scroller } from '../../scroller';\nimport { ADAPTER_METHODS, validate } from '../../inputs/index';\nimport { ProcessName, IBaseProcess, IBaseAdapterProcess, IAdapterInput } from '../../interfaces/index';\n\nexport const BaseProcessFactory = (process: ProcessName): IBaseProcess =>\n\n class BaseProcess {\n\n static process: ProcessName = process;\n\n };\n\nexport const BaseAdapterProcessFactory = (process: AdapterProcess): IBaseAdapterProcess =>\n\n class BaseAdapterProcess extends (BaseProcessFactory(process) as IBaseProcess) {\n\n static process: AdapterProcess = process;\n\n static parseInput<T>(\n scroller: Scroller, options: T, ignoreErrors = false, _process?: AdapterProcess\n ): IAdapterInput<T> {\n const result: IAdapterInput<T> = {\n data: validate(options, ADAPTER_METHODS[_process || process])\n };\n\n if (result.data.isValid) {\n result.params = Object.entries(result.data.params)\n .reduce((acc, [key, { value }]) => ({\n ...acc,\n [key]: value\n }), {} as T);\n } else {\n scroller.logger.log(() => result.data.showErrors());\n if (!ignoreErrors) {\n scroller.workflow.call({\n process,\n status: ProcessStatus.error,\n payload: { error: `Wrong argument of the \"${process}\" method call` }\n });\n }\n }\n\n return result;\n }\n\n };\n"]}
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../../../../src/processes/misc/base.ts"],"names":[],"mappings":";AAAA,OAAO,EAAkB,aAAa,EAAE,MAAM,SAAS,CAAC;AAExD,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAG/D,MAAM,CAAC,IAAM,kBAAkB,GAAG,UAAC,OAAoB;QAErD;QAIA,CAAC;QAAD,kBAAC;IAAD,CAAC,AAJD;IAES,UAAO,GAAgB,OAAQ;SAEvC,CAAC;AAEJ,MAAM,CAAC,IAAM,yBAAyB,GAAG,UAAC,OAAuB;QAE9B,sCAA6C;QAA9E;;QA+BA,CAAC;QA3BQ,6BAAU,GAAjB,UACE,QAAkB,EAAE,OAAU,EAAE,YAAoB,EAAE,QAAyB;YAA/C,6BAAA,EAAA,oBAAoB;YAEpD,IAAM,MAAM,GAAqB;gBAC/B,IAAI,EAAE,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC,QAAQ,IAAI,OAAO,CAAC,CAAC;aAC9D,CAAC;YAEF,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE;gBACvB,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;qBAC/C,MAAM,CAAC,UAAC,GAAG,EAAE,EAAgB;;wBAAhB,KAAA,aAAgB,EAAf,GAAG,QAAA,EAAI,KAAK,cAAA;oBAAQ,OAAA,uBAC9B,GAAG,gBACL,GAAG,IAAG,KAAK,OACZ;gBAHiC,CAGjC,EAAE,EAAO,CAAC,CAAC;aAChB;iBAAM;gBACL,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,cAAM,OAAA,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,EAAxB,CAAwB,CAAC,CAAC;gBACpD,IAAI,CAAC,YAAY,EAAE;oBACjB,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC;wBACrB,OAAO,SAAA;wBACP,MAAM,EAAE,aAAa,CAAC,KAAK;wBAC3B,OAAO,EAAE,EAAE,KAAK,EAAE,kCAA0B,OAAO,mBAAe,EAAE;qBACrE,CAAC,CAAC;iBACJ;aACF;YAED,OAAO,MAAM,CAAC;QAChB,CAAC;QAEH,yBAAC;IAAD,CAAC,AA/BD,CAAkC,kBAAkB,CAAC,OAAO,CAAkB;IAErE,UAAO,GAAmB,OAAQ;SA6B1C,CAAC","sourcesContent":["import { AdapterProcess, ProcessStatus } from './enums';\nimport { Scroller } from '../../scroller';\nimport { ADAPTER_METHODS, validate } from '../../inputs/index';\nimport { ProcessName, IBaseProcess, IBaseAdapterProcess, IAdapterInput } from '../../interfaces/index';\n\nexport const BaseProcessFactory = (process: ProcessName): IBaseProcess =>\n\n class BaseProcess {\n\n static process: ProcessName = process;\n\n };\n\nexport const BaseAdapterProcessFactory = (process: AdapterProcess): IBaseAdapterProcess =>\n\n class BaseAdapterProcess extends (BaseProcessFactory(process) as IBaseProcess) {\n\n static process: AdapterProcess = process;\n\n static parseInput<T>(\n scroller: Scroller, options: T, ignoreErrors = false, _process?: AdapterProcess\n ): IAdapterInput<T> {\n const result: IAdapterInput<T> = {\n data: validate(options, ADAPTER_METHODS[_process || process])\n };\n\n if (result.data.isValid) {\n result.params = Object.entries(result.data.params)\n .reduce((acc, [key, { value }]) => ({\n ...acc,\n [key]: value\n }), {} as T);\n } else {\n scroller.logger.log(() => result.data.showErrors());\n if (!ignoreErrors) {\n scroller.workflow.call({\n process,\n status: ProcessStatus.error,\n payload: { error: `Wrong argument of the \"${process}\" method call` }\n });\n }\n }\n\n return result;\n }\n\n };\n"]}
@@ -24,8 +24,8 @@ var PreClip = /** @class */ (function (_super) {
24
24
  var firstIndex = fetch.first.indexBuffer;
25
25
  var lastIndex = fetch.last.indexBuffer;
26
26
  scroller.logger.log(function () {
27
- return "looking for " + (fetch.direction ? 'anti-' + fetch.direction + ' ' : '') + "items " +
28
- ("that are out of [" + firstIndex + ".." + lastIndex + "] range");
27
+ return "looking for ".concat(fetch.direction ? 'anti-' + fetch.direction + ' ' : '', "items ") +
28
+ "that are out of [".concat(firstIndex, "..").concat(lastIndex, "] range");
29
29
  });
30
30
  if (PreClip.isBackward(scroller, firstIndex)) {
31
31
  PreClip.prepareClipByDirection(scroller, Direction.backward, firstIndex);
@@ -1 +1 @@
1
- {"version":3,"file":"preClip.js","sourceRoot":"","sources":["../../../src/processes/preClip.ts"],"names":[],"mappings":"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","sourcesContent":["import { BaseProcessFactory, CommonProcess, ProcessStatus } from './misc/index';\nimport { Scroller } from '../scroller';\nimport { Direction } from '../inputs/index';\n\nexport default class PreClip extends BaseProcessFactory(CommonProcess.preClip) {\n\n static run(scroller: Scroller): void {\n PreClip.prepareClip(scroller);\n\n scroller.workflow.call({\n process: PreClip.process,\n status: ProcessStatus.next,\n payload: {\n doClip: scroller.state.clip.doClip\n }\n });\n }\n\n static prepareClip(scroller: Scroller): void {\n const { state: { fetch, clip } } = scroller;\n if (PreClip.shouldNotClip(scroller)) {\n return;\n }\n const firstIndex = fetch.first.indexBuffer;\n const lastIndex = fetch.last.indexBuffer;\n scroller.logger.log(() =>\n `looking for ${fetch.direction ? 'anti-' + fetch.direction + ' ' : ''}items ` +\n `that are out of [${firstIndex}..${lastIndex}] range`);\n if (PreClip.isBackward(scroller, firstIndex)) {\n PreClip.prepareClipByDirection(scroller, Direction.backward, firstIndex);\n }\n if (PreClip.isForward(scroller, lastIndex)) {\n PreClip.prepareClipByDirection(scroller, Direction.forward, lastIndex);\n }\n if (!clip.doClip) {\n scroller.logger.log('skipping clip [no items to clip]');\n }\n return;\n }\n\n static shouldNotClip(scroller: Scroller): boolean {\n const { settings, buffer, state } = scroller;\n if (settings.infinite && !state.clip.force) {\n scroller.logger.log('skipping clip [infinite mode]');\n return true;\n }\n if (!buffer.size) {\n scroller.logger.log('skipping clip [empty buffer]');\n return true;\n }\n if (state.cycle.isInitial) {\n scroller.logger.log('skipping clip [initial cycle]');\n return true;\n }\n return false;\n }\n\n static isBackward(scroller: Scroller, firstIndex: number): boolean {\n const { buffer, state: { clip, fetch } } = scroller;\n if (clip.force) {\n return clip.forceBackward;\n }\n if (fetch.direction !== Direction.backward) {\n if (firstIndex - 1 >= buffer.absMinIndex) {\n return true;\n }\n }\n return false;\n }\n\n static isForward(scroller: Scroller, lastIndex: number): boolean {\n const { buffer, state: { clip, fetch } } = scroller;\n if (clip.force) {\n return clip.forceForward;\n }\n if (fetch.direction !== Direction.forward) {\n if (lastIndex + 1 <= buffer.absMaxIndex) {\n return true;\n }\n }\n return false;\n }\n\n static prepareClipByDirection(scroller: Scroller, direction: Direction, edgeIndex: number): void {\n const forward = direction === Direction.forward;\n scroller.buffer.items.forEach(item => {\n if (\n (!forward && item.$index < edgeIndex) ||\n (forward && item.$index > edgeIndex)\n ) {\n item.toRemove = true;\n item.removeDirection = direction;\n scroller.state.clip.doClip = true;\n }\n });\n }\n\n}\n"]}
1
+ {"version":3,"file":"preClip.js","sourceRoot":"","sources":["../../../src/processes/preClip.ts"],"names":[],"mappings":"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","sourcesContent":["import { BaseProcessFactory, CommonProcess, ProcessStatus } from './misc/index';\nimport { Scroller } from '../scroller';\nimport { Direction } from '../inputs/index';\n\nexport default class PreClip extends BaseProcessFactory(CommonProcess.preClip) {\n\n static run(scroller: Scroller): void {\n PreClip.prepareClip(scroller);\n\n scroller.workflow.call({\n process: PreClip.process,\n status: ProcessStatus.next,\n payload: {\n doClip: scroller.state.clip.doClip\n }\n });\n }\n\n static prepareClip(scroller: Scroller): void {\n const { state: { fetch, clip } } = scroller;\n if (PreClip.shouldNotClip(scroller)) {\n return;\n }\n const firstIndex = fetch.first.indexBuffer;\n const lastIndex = fetch.last.indexBuffer;\n scroller.logger.log(() =>\n `looking for ${fetch.direction ? 'anti-' + fetch.direction + ' ' : ''}items ` +\n `that are out of [${firstIndex}..${lastIndex}] range`);\n if (PreClip.isBackward(scroller, firstIndex)) {\n PreClip.prepareClipByDirection(scroller, Direction.backward, firstIndex);\n }\n if (PreClip.isForward(scroller, lastIndex)) {\n PreClip.prepareClipByDirection(scroller, Direction.forward, lastIndex);\n }\n if (!clip.doClip) {\n scroller.logger.log('skipping clip [no items to clip]');\n }\n return;\n }\n\n static shouldNotClip(scroller: Scroller): boolean {\n const { settings, buffer, state } = scroller;\n if (settings.infinite && !state.clip.force) {\n scroller.logger.log('skipping clip [infinite mode]');\n return true;\n }\n if (!buffer.size) {\n scroller.logger.log('skipping clip [empty buffer]');\n return true;\n }\n if (state.cycle.isInitial) {\n scroller.logger.log('skipping clip [initial cycle]');\n return true;\n }\n return false;\n }\n\n static isBackward(scroller: Scroller, firstIndex: number): boolean {\n const { buffer, state: { clip, fetch } } = scroller;\n if (clip.force) {\n return clip.forceBackward;\n }\n if (fetch.direction !== Direction.backward) {\n if (firstIndex - 1 >= buffer.absMinIndex) {\n return true;\n }\n }\n return false;\n }\n\n static isForward(scroller: Scroller, lastIndex: number): boolean {\n const { buffer, state: { clip, fetch } } = scroller;\n if (clip.force) {\n return clip.forceForward;\n }\n if (fetch.direction !== Direction.forward) {\n if (lastIndex + 1 <= buffer.absMaxIndex) {\n return true;\n }\n }\n return false;\n }\n\n static prepareClipByDirection(scroller: Scroller, direction: Direction, edgeIndex: number): void {\n const forward = direction === Direction.forward;\n scroller.buffer.items.forEach(item => {\n if (\n (!forward && item.$index < edgeIndex) ||\n (forward && item.$index > edgeIndex)\n ) {\n item.toRemove = true;\n item.removeDirection = direction;\n scroller.state.clip.doClip = true;\n }\n });\n }\n\n}\n"]}
@@ -55,8 +55,8 @@ var PreFetch = /** @class */ (function (_super) {
55
55
  startDelta += buffer.getSizeByIndex(index);
56
56
  }
57
57
  scroller.logger.log(function () { return __spreadArray([
58
- "start delta is " + startDelta
59
- ], __read((offset ? [" (+" + offset + " offset)"] : [])), false); });
58
+ "start delta is ".concat(startDelta)
59
+ ], __read((offset ? [" (+".concat(offset, " offset)")] : [])), false); });
60
60
  return startDelta;
61
61
  };
62
62
  PreFetch.setFirstIndex = function (scroller) {
@@ -227,17 +227,17 @@ var PreFetch = /** @class */ (function (_super) {
227
227
  direction_1 = fetch.last.index < buffer.items[0].$index ? Direction.backward : Direction.forward;
228
228
  }
229
229
  fetch.direction = direction_1;
230
- scroller.logger.log(function () { return "fetch direction is \"" + direction_1 + "\""; });
230
+ scroller.logger.log(function () { return "fetch direction is \"".concat(direction_1, "\""); });
231
231
  }
232
232
  };
233
233
  PreFetch.getStatus = function (scroller) {
234
234
  var _a = scroller.state, cycle = _a.cycle, fetch = _a.fetch;
235
235
  if (cycle.initiator === AdapterProcess.clip) {
236
- scroller.logger.log(function () { return "going to skip fetch due to \"" + AdapterProcess.clip + "\" process"; });
236
+ scroller.logger.log(function () { return "going to skip fetch due to \"".concat(AdapterProcess.clip, "\" process"); });
237
237
  return ProcessStatus.next;
238
238
  }
239
239
  if (fetch.shouldFetch) {
240
- scroller.logger.log(function () { return "going to fetch " + fetch.count + " items started from index " + fetch.index; });
240
+ scroller.logger.log(function () { return "going to fetch ".concat(fetch.count, " items started from index ").concat(fetch.index); });
241
241
  return ProcessStatus.next;
242
242
  }
243
243
  return ProcessStatus.done;
@@ -1 +1 @@
1
- {"version":3,"file":"preFetch.js","sourceRoot":"","sources":["../../../src/processes/preFetch.ts"],"names":[],"mappings":"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","sourcesContent":["import { BaseProcessFactory, CommonProcess, AdapterProcess, ProcessStatus } from './misc/index';\nimport { Scroller } from '../scroller';\nimport { Direction } from '../inputs/index';\n\nexport default class PreFetch extends BaseProcessFactory(CommonProcess.preFetch) {\n\n static run(scroller: Scroller): void {\n const { workflow, buffer, state: { fetch, cycle } } = scroller;\n fetch.minIndex = buffer.minIndex;\n\n // set first and last indexes of items to fetch\n PreFetch.setPositionsAndIndexes(scroller);\n\n // skip indexes that are in buffer\n PreFetch.skipBufferedItems(scroller);\n\n if (scroller.settings.infinite) {\n // fill indexes to include buffer if no clip\n PreFetch.checkBufferGaps(scroller);\n }\n\n // add indexes if there are too few items to fetch (clip padding)\n PreFetch.checkFetchPackSize(scroller);\n\n // set fetch direction\n PreFetch.setFetchDirection(scroller);\n\n workflow.call({\n process: PreFetch.process,\n status: PreFetch.getStatus(scroller),\n payload: { process: cycle.initiator }\n });\n }\n\n static setPositionsAndIndexes(scroller: Scroller): void {\n PreFetch.setPositions(scroller);\n PreFetch.setFirstIndex(scroller);\n PreFetch.setLastIndex(scroller);\n scroller.logger.fetch();\n }\n\n static setPositions(scroller: Scroller): void {\n const { state: { fetch: { positions } }, viewport } = scroller;\n const paddingDelta = viewport.getBufferPadding();\n positions.before = viewport.scrollPosition;\n positions.startDelta = PreFetch.getStartDelta(scroller);\n positions.relative = positions.before - positions.startDelta;\n positions.start = positions.relative - paddingDelta;\n positions.end = positions.relative + viewport.getSize() + paddingDelta;\n }\n\n static getStartDelta(scroller: Scroller): number { // calculate size before start index\n const { buffer, viewport: { offset } } = scroller;\n let startDelta = 0;\n if (offset) {\n startDelta += offset;\n }\n if (!buffer.defaultSize) {\n return startDelta;\n }\n for (let index = buffer.finiteAbsMinIndex; index < buffer.startIndex; index++) {\n startDelta += buffer.getSizeByIndex(index);\n }\n scroller.logger.log(() => [\n `start delta is ${startDelta}`, ...(offset ? [` (+${offset} offset)`] : [])\n ]);\n return startDelta;\n }\n\n static setFirstIndex(scroller: Scroller): void {\n const { state, buffer } = scroller;\n const { positions: { start }, first } = state.fetch;\n let firstIndex = buffer.startIndex;\n let firstIndexPosition = 0;\n if (state.cycle.innerLoop.isInitial) {\n scroller.logger.log('skipping fetch backward direction [initial loop]');\n } else if (!buffer.defaultSize) {\n scroller.logger.log('skipping fetch backward direction [no item size]');\n } else {\n let position = firstIndexPosition;\n let index = firstIndex;\n while (1) { // eslint-disable-line no-constant-condition\n if (start >= 0) {\n const size = buffer.getSizeByIndex(index);\n const diff = (position + size) - start;\n if (diff > 0) {\n firstIndex = index;\n firstIndexPosition = position;\n break;\n }\n position += size;\n index++;\n if (index < buffer.absMinIndex) {\n break;\n }\n }\n if (start < 0) {\n index--;\n if (index < buffer.absMinIndex) {\n break;\n }\n position -= buffer.getSizeByIndex(index);\n const diff = position - start;\n firstIndex = index;\n firstIndexPosition = position;\n if (diff <= 0) {\n break;\n }\n }\n }\n }\n first.index = first.indexBuffer = Math.max(firstIndex, buffer.absMinIndex);\n first.position = firstIndexPosition;\n }\n\n static setLastIndex(scroller: Scroller): void {\n const { state: { fetch, cycle }, buffer, settings } = scroller;\n const { firstVisible, positions: { relative, end }, first, last } = fetch;\n let lastIndex;\n if (!buffer.defaultSize) {\n // just to fetch forward bufferSize items if neither averageItemSize nor itemSize are present\n lastIndex = buffer.startIndex + settings.bufferSize - 1;\n scroller.logger.log('forcing fetch forward direction [no item size]');\n } else {\n let index = first.indexBuffer;\n let position = first.position;\n lastIndex = index;\n while (1) { // eslint-disable-line no-constant-condition\n lastIndex = index;\n const size = buffer.getSizeByIndex(index);\n position += size;\n if (isNaN(firstVisible.index) && position > relative) {\n firstVisible.index = index;\n if (!cycle.innerLoop.isInitial) {\n firstVisible.delta = position - size - relative;\n }\n }\n if (position >= end) {\n break;\n }\n if (index++ > buffer.absMaxIndex) {\n break;\n }\n }\n }\n last.index = last.indexBuffer = Math.min(lastIndex, buffer.absMaxIndex);\n }\n\n static skipBufferedItems(scroller: Scroller): void {\n const { buffer } = scroller;\n if (!buffer.size) {\n return;\n }\n const { fetch } = scroller.state;\n const firstIndex = fetch.first.index;\n const lastIndex = fetch.last.index;\n const packs: number[][] = [[]];\n let p = 0;\n for (let i = firstIndex; i <= lastIndex; i++) {\n if (!buffer.get(i)) {\n packs[p].push(i);\n } else if (packs[p].length) {\n packs[++p] = [];\n }\n }\n let pack = packs[0];\n if (packs[0].length && packs[1] && packs[1].length) {\n fetch.hasAnotherPack = true;\n // todo: need to look for biggest pack in visible area\n // todo: or think about merging two requests in a single Fetch process\n if (packs[1].length >= packs[0].length) {\n pack = packs[1];\n }\n }\n fetch.first.index = Math.max(pack[0], buffer.absMinIndex);\n fetch.last.index = Math.min(pack[pack.length - 1], buffer.absMaxIndex);\n if (fetch.first.index !== firstIndex || fetch.last.index !== lastIndex) {\n scroller.logger.fetch('after Buffer flushing');\n }\n }\n\n static checkBufferGaps(scroller: Scroller): void {\n const { buffer, state: { fetch } } = scroller;\n if (!buffer.size) {\n return;\n }\n const fetchFirst = fetch.first.index;\n const bufferLast = buffer.lastIndex;\n if (fetchFirst > bufferLast) {\n fetch.first.index = fetch.first.indexBuffer = bufferLast + 1;\n }\n const bufferFirst = buffer.firstIndex;\n const fetchLast = fetch.last.index;\n if (fetchLast < bufferFirst) {\n fetch.last.index = fetch.last.indexBuffer = bufferFirst - 1;\n }\n if (fetch.first.index !== fetchFirst || fetch.last.index !== fetchLast) {\n scroller.logger.fetch('after Buffer filling (no clip case)');\n }\n }\n\n static checkFetchPackSize(scroller: Scroller): void {\n const { buffer, state: { fetch } } = scroller;\n if (!fetch.shouldFetch) {\n return;\n }\n const firstIndex = fetch.first.index;\n const lastIndex = fetch.last.index;\n const diff = scroller.settings.bufferSize - (lastIndex - firstIndex + 1);\n if (diff <= 0) {\n return;\n }\n if (!buffer.size || lastIndex > buffer.items[0].$index) { // forward\n const newLastIndex = Math.min(lastIndex + diff, buffer.absMaxIndex);\n if (newLastIndex > lastIndex) {\n fetch.last.index = fetch.last.indexBuffer = newLastIndex;\n }\n } else {\n const newFirstIndex = Math.max(firstIndex - diff, buffer.absMinIndex);\n if (newFirstIndex < firstIndex) {\n fetch.first.index = fetch.first.indexBuffer = newFirstIndex;\n }\n }\n if (fetch.first.index !== firstIndex || fetch.last.index !== lastIndex) {\n scroller.logger.fetch('after bufferSize adjustment');\n PreFetch.skipBufferedItems(scroller);\n }\n }\n\n static setFetchDirection(scroller: Scroller): void {\n const { buffer, state: { fetch } } = scroller;\n if (fetch.last.index) {\n let direction = Direction.forward;\n if (buffer.size) {\n direction = fetch.last.index < buffer.items[0].$index ? Direction.backward : Direction.forward;\n }\n fetch.direction = direction;\n scroller.logger.log(() => `fetch direction is \"${direction}\"`);\n }\n }\n\n static getStatus(scroller: Scroller): ProcessStatus {\n const { cycle, fetch } = scroller.state;\n if (cycle.initiator === AdapterProcess.clip) {\n scroller.logger.log(() => `going to skip fetch due to \"${AdapterProcess.clip}\" process`);\n return ProcessStatus.next;\n }\n if (fetch.shouldFetch) {\n scroller.logger.log(() => `going to fetch ${fetch.count} items started from index ${fetch.index}`);\n return ProcessStatus.next;\n }\n return ProcessStatus.done;\n }\n\n}\n"]}
1
+ {"version":3,"file":"preFetch.js","sourceRoot":"","sources":["../../../src/processes/preFetch.ts"],"names":[],"mappings":"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","sourcesContent":["import { BaseProcessFactory, CommonProcess, AdapterProcess, ProcessStatus } from './misc/index';\nimport { Scroller } from '../scroller';\nimport { Direction } from '../inputs/index';\n\nexport default class PreFetch extends BaseProcessFactory(CommonProcess.preFetch) {\n\n static run(scroller: Scroller): void {\n const { workflow, buffer, state: { fetch, cycle } } = scroller;\n fetch.minIndex = buffer.minIndex;\n\n // set first and last indexes of items to fetch\n PreFetch.setPositionsAndIndexes(scroller);\n\n // skip indexes that are in buffer\n PreFetch.skipBufferedItems(scroller);\n\n if (scroller.settings.infinite) {\n // fill indexes to include buffer if no clip\n PreFetch.checkBufferGaps(scroller);\n }\n\n // add indexes if there are too few items to fetch (clip padding)\n PreFetch.checkFetchPackSize(scroller);\n\n // set fetch direction\n PreFetch.setFetchDirection(scroller);\n\n workflow.call({\n process: PreFetch.process,\n status: PreFetch.getStatus(scroller),\n payload: { process: cycle.initiator }\n });\n }\n\n static setPositionsAndIndexes(scroller: Scroller): void {\n PreFetch.setPositions(scroller);\n PreFetch.setFirstIndex(scroller);\n PreFetch.setLastIndex(scroller);\n scroller.logger.fetch();\n }\n\n static setPositions(scroller: Scroller): void {\n const { state: { fetch: { positions } }, viewport } = scroller;\n const paddingDelta = viewport.getBufferPadding();\n positions.before = viewport.scrollPosition;\n positions.startDelta = PreFetch.getStartDelta(scroller);\n positions.relative = positions.before - positions.startDelta;\n positions.start = positions.relative - paddingDelta;\n positions.end = positions.relative + viewport.getSize() + paddingDelta;\n }\n\n static getStartDelta(scroller: Scroller): number { // calculate size before start index\n const { buffer, viewport: { offset } } = scroller;\n let startDelta = 0;\n if (offset) {\n startDelta += offset;\n }\n if (!buffer.defaultSize) {\n return startDelta;\n }\n for (let index = buffer.finiteAbsMinIndex; index < buffer.startIndex; index++) {\n startDelta += buffer.getSizeByIndex(index);\n }\n scroller.logger.log(() => [\n `start delta is ${startDelta}`, ...(offset ? [` (+${offset} offset)`] : [])\n ]);\n return startDelta;\n }\n\n static setFirstIndex(scroller: Scroller): void {\n const { state, buffer } = scroller;\n const { positions: { start }, first } = state.fetch;\n let firstIndex = buffer.startIndex;\n let firstIndexPosition = 0;\n if (state.cycle.innerLoop.isInitial) {\n scroller.logger.log('skipping fetch backward direction [initial loop]');\n } else if (!buffer.defaultSize) {\n scroller.logger.log('skipping fetch backward direction [no item size]');\n } else {\n let position = firstIndexPosition;\n let index = firstIndex;\n while (1) { // eslint-disable-line no-constant-condition\n if (start >= 0) {\n const size = buffer.getSizeByIndex(index);\n const diff = (position + size) - start;\n if (diff > 0) {\n firstIndex = index;\n firstIndexPosition = position;\n break;\n }\n position += size;\n index++;\n if (index < buffer.absMinIndex) {\n break;\n }\n }\n if (start < 0) {\n index--;\n if (index < buffer.absMinIndex) {\n break;\n }\n position -= buffer.getSizeByIndex(index);\n const diff = position - start;\n firstIndex = index;\n firstIndexPosition = position;\n if (diff <= 0) {\n break;\n }\n }\n }\n }\n first.index = first.indexBuffer = Math.max(firstIndex, buffer.absMinIndex);\n first.position = firstIndexPosition;\n }\n\n static setLastIndex(scroller: Scroller): void {\n const { state: { fetch, cycle }, buffer, settings } = scroller;\n const { firstVisible, positions: { relative, end }, first, last } = fetch;\n let lastIndex;\n if (!buffer.defaultSize) {\n // just to fetch forward bufferSize items if neither averageItemSize nor itemSize are present\n lastIndex = buffer.startIndex + settings.bufferSize - 1;\n scroller.logger.log('forcing fetch forward direction [no item size]');\n } else {\n let index = first.indexBuffer;\n let position = first.position;\n lastIndex = index;\n while (1) { // eslint-disable-line no-constant-condition\n lastIndex = index;\n const size = buffer.getSizeByIndex(index);\n position += size;\n if (isNaN(firstVisible.index) && position > relative) {\n firstVisible.index = index;\n if (!cycle.innerLoop.isInitial) {\n firstVisible.delta = position - size - relative;\n }\n }\n if (position >= end) {\n break;\n }\n if (index++ > buffer.absMaxIndex) {\n break;\n }\n }\n }\n last.index = last.indexBuffer = Math.min(lastIndex, buffer.absMaxIndex);\n }\n\n static skipBufferedItems(scroller: Scroller): void {\n const { buffer } = scroller;\n if (!buffer.size) {\n return;\n }\n const { fetch } = scroller.state;\n const firstIndex = fetch.first.index;\n const lastIndex = fetch.last.index;\n const packs: number[][] = [[]];\n let p = 0;\n for (let i = firstIndex; i <= lastIndex; i++) {\n if (!buffer.get(i)) {\n packs[p].push(i);\n } else if (packs[p].length) {\n packs[++p] = [];\n }\n }\n let pack = packs[0];\n if (packs[0].length && packs[1] && packs[1].length) {\n fetch.hasAnotherPack = true;\n // todo: need to look for biggest pack in visible area\n // todo: or think about merging two requests in a single Fetch process\n if (packs[1].length >= packs[0].length) {\n pack = packs[1];\n }\n }\n fetch.first.index = Math.max(pack[0], buffer.absMinIndex);\n fetch.last.index = Math.min(pack[pack.length - 1], buffer.absMaxIndex);\n if (fetch.first.index !== firstIndex || fetch.last.index !== lastIndex) {\n scroller.logger.fetch('after Buffer flushing');\n }\n }\n\n static checkBufferGaps(scroller: Scroller): void {\n const { buffer, state: { fetch } } = scroller;\n if (!buffer.size) {\n return;\n }\n const fetchFirst = fetch.first.index;\n const bufferLast = buffer.lastIndex;\n if (fetchFirst > bufferLast) {\n fetch.first.index = fetch.first.indexBuffer = bufferLast + 1;\n }\n const bufferFirst = buffer.firstIndex;\n const fetchLast = fetch.last.index;\n if (fetchLast < bufferFirst) {\n fetch.last.index = fetch.last.indexBuffer = bufferFirst - 1;\n }\n if (fetch.first.index !== fetchFirst || fetch.last.index !== fetchLast) {\n scroller.logger.fetch('after Buffer filling (no clip case)');\n }\n }\n\n static checkFetchPackSize(scroller: Scroller): void {\n const { buffer, state: { fetch } } = scroller;\n if (!fetch.shouldFetch) {\n return;\n }\n const firstIndex = fetch.first.index;\n const lastIndex = fetch.last.index;\n const diff = scroller.settings.bufferSize - (lastIndex - firstIndex + 1);\n if (diff <= 0) {\n return;\n }\n if (!buffer.size || lastIndex > buffer.items[0].$index) { // forward\n const newLastIndex = Math.min(lastIndex + diff, buffer.absMaxIndex);\n if (newLastIndex > lastIndex) {\n fetch.last.index = fetch.last.indexBuffer = newLastIndex;\n }\n } else {\n const newFirstIndex = Math.max(firstIndex - diff, buffer.absMinIndex);\n if (newFirstIndex < firstIndex) {\n fetch.first.index = fetch.first.indexBuffer = newFirstIndex;\n }\n }\n if (fetch.first.index !== firstIndex || fetch.last.index !== lastIndex) {\n scroller.logger.fetch('after bufferSize adjustment');\n PreFetch.skipBufferedItems(scroller);\n }\n }\n\n static setFetchDirection(scroller: Scroller): void {\n const { buffer, state: { fetch } } = scroller;\n if (fetch.last.index) {\n let direction = Direction.forward;\n if (buffer.size) {\n direction = fetch.last.index < buffer.items[0].$index ? Direction.backward : Direction.forward;\n }\n fetch.direction = direction;\n scroller.logger.log(() => `fetch direction is \"${direction}\"`);\n }\n }\n\n static getStatus(scroller: Scroller): ProcessStatus {\n const { cycle, fetch } = scroller.state;\n if (cycle.initiator === AdapterProcess.clip) {\n scroller.logger.log(() => `going to skip fetch due to \"${AdapterProcess.clip}\" process`);\n return ProcessStatus.next;\n }\n if (fetch.shouldFetch) {\n scroller.logger.log(() => `going to fetch ${fetch.count} items started from index ${fetch.index}`);\n return ProcessStatus.next;\n }\n return ProcessStatus.done;\n }\n\n}\n"]}
@@ -6,13 +6,13 @@ var Render = /** @class */ (function (_super) {
6
6
  return _super !== null && _super.apply(this, arguments) || this;
7
7
  }
8
8
  Render.run = function (scroller) {
9
- var workflow = scroller.workflow, _a = scroller.state, cycle = _a.cycle, render = _a.render, scrollState = _a.scrollState, viewport = scroller.viewport;
9
+ var workflow = scroller.workflow, _a = scroller.state, cycle = _a.cycle, render = _a.render, scroll = _a.scroll, viewport = scroller.viewport, routines = scroller.routines;
10
10
  scroller.logger.stat('before new items render');
11
- if (scrollState.positionBeforeAsync === null) {
12
- scrollState.positionBeforeAsync = viewport.scrollPosition;
11
+ if (scroll.positionBeforeAsync === null) {
12
+ scroll.positionBeforeAsync = viewport.scrollPosition;
13
13
  }
14
- render.renderTimer = setTimeout(function () {
15
- render.renderTimer = null;
14
+ render.cancel = routines.render(function () {
15
+ render.cancel = null;
16
16
  if (Render.doRender(scroller)) {
17
17
  workflow.call({
18
18
  process: Render.process,
@@ -27,7 +27,7 @@ var Render = /** @class */ (function (_super) {
27
27
  payload: { error: 'Can\'t associate item with element' }
28
28
  });
29
29
  }
30
- }, 0);
30
+ });
31
31
  };
32
32
  Render.doRender = function (scroller) {
33
33
  var _a = scroller.state, fetch = _a.fetch, render = _a.render, viewport = scroller.viewport, buffer = scroller.buffer, logger = scroller.logger;
@@ -1 +1 @@
1
- {"version":3,"file":"render.js","sourceRoot":"","sources":["../../../src/processes/render.ts"],"names":[],"mappings":"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","sourcesContent":["import { BaseProcessFactory, CommonProcess, ProcessStatus } from './misc/index';\nimport { Scroller } from '../scroller';\nimport { Item } from '../classes/item';\n\nexport default class Render extends BaseProcessFactory(CommonProcess.render) {\n\n static run(scroller: Scroller): void {\n const { workflow, state: { cycle, render, scrollState }, viewport } = scroller;\n scroller.logger.stat('before new items render');\n if (scrollState.positionBeforeAsync === null) {\n scrollState.positionBeforeAsync = viewport.scrollPosition;\n }\n render.renderTimer = setTimeout(() => {\n render.renderTimer = null;\n if (Render.doRender(scroller)) {\n workflow.call({\n process: Render.process,\n status: render.noSize ? ProcessStatus.done : ProcessStatus.next,\n payload: { process: cycle.initiator }\n });\n } else {\n workflow.call({\n process: Render.process,\n status: ProcessStatus.error,\n payload: { error: 'Can\\'t associate item with element' }\n });\n }\n }, 0);\n }\n\n static doRender(scroller: Scroller): boolean {\n const { state: { fetch, render }, viewport, buffer, logger } = scroller;\n render.positionBefore = viewport.scrollPosition;\n if (!fetch.isCheck) {\n render.sizeBefore = viewport.getScrollableSize();\n if (!fetch.items.every(item =>\n Render.processElement(scroller, item)\n )) {\n return false;\n }\n }\n buffer.checkDefaultSize();\n render.sizeAfter = viewport.getScrollableSize();\n logger.stat('after new items render');\n logger.log(() => render.noSize ? 'viewport size has not been changed' : void 0);\n return true;\n }\n\n static processElement(scroller: Scroller, item: Item): boolean {\n const { viewport, buffer } = scroller;\n const element = viewport.findItemElementById(item.nodeId);\n if (!element) {\n return false;\n }\n item.element = element as HTMLElement;\n item.makeVisible();\n item.setSize(buffer.getSizeByIndex(item.$index));\n buffer.cacheItem(item);\n return true;\n }\n\n}\n"]}
1
+ {"version":3,"file":"render.js","sourceRoot":"","sources":["../../../src/processes/render.ts"],"names":[],"mappings":"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","sourcesContent":["import { BaseProcessFactory, CommonProcess, ProcessStatus } from './misc/index';\nimport { Scroller } from '../scroller';\nimport { Item } from '../classes/item';\n\nexport default class Render extends BaseProcessFactory(CommonProcess.render) {\n\n static run(scroller: Scroller): void {\n const { workflow, state: { cycle, render, scroll }, viewport, routines } = scroller;\n scroller.logger.stat('before new items render');\n if (scroll.positionBeforeAsync === null) {\n scroll.positionBeforeAsync = viewport.scrollPosition;\n }\n render.cancel = routines.render(() => {\n render.cancel = null;\n if (Render.doRender(scroller)) {\n workflow.call({\n process: Render.process,\n status: render.noSize ? ProcessStatus.done : ProcessStatus.next,\n payload: { process: cycle.initiator }\n });\n } else {\n workflow.call({\n process: Render.process,\n status: ProcessStatus.error,\n payload: { error: 'Can\\'t associate item with element' }\n });\n }\n });\n }\n\n static doRender(scroller: Scroller): boolean {\n const { state: { fetch, render }, viewport, buffer, logger } = scroller;\n render.positionBefore = viewport.scrollPosition;\n if (!fetch.isCheck) {\n render.sizeBefore = viewport.getScrollableSize();\n if (!fetch.items.every(item =>\n Render.processElement(scroller, item)\n )) {\n return false;\n }\n }\n buffer.checkDefaultSize();\n render.sizeAfter = viewport.getScrollableSize();\n logger.stat('after new items render');\n logger.log(() => render.noSize ? 'viewport size has not been changed' : void 0);\n return true;\n }\n\n static processElement(scroller: Scroller, item: Item): boolean {\n const { viewport, buffer } = scroller;\n const element = viewport.findItemElementById(item.nodeId);\n if (!element) {\n return false;\n }\n item.element = element as HTMLElement;\n item.makeVisible();\n item.setSize(buffer.getSizeByIndex(item.$index));\n buffer.cacheItem(item);\n return true;\n }\n\n}\n"]}
@@ -18,16 +18,16 @@ var Scroll = /** @class */ (function (_super) {
18
18
  });
19
19
  };
20
20
  Scroll.onSynthetic = function (scroller, position) {
21
- var scrollState = scroller.state.scrollState;
22
- var synthPos = scrollState.syntheticPosition;
21
+ var scroll = scroller.state.scroll;
22
+ var synthPos = scroll.syntheticPosition;
23
23
  if (synthPos !== null) {
24
- if (scrollState.syntheticFulfill) {
25
- scrollState.syntheticPosition = null;
24
+ if (scroll.syntheticFulfill) {
25
+ scroll.syntheticPosition = null;
26
26
  }
27
- if (!scrollState.syntheticFulfill || synthPos === position) {
27
+ if (!scroll.syntheticFulfill || synthPos === position) {
28
28
  scroller.logger.log(function () { return [
29
29
  'skipping scroll', position,
30
- "[" + (scrollState.syntheticFulfill ? '' : 'pre-') + "synthetic]"
30
+ "[".concat(scroll.syntheticFulfill ? '' : 'pre-', "synthetic]")
31
31
  ]; });
32
32
  return true;
33
33
  }
@@ -38,31 +38,31 @@ var Scroll = /** @class */ (function (_super) {
38
38
  return false;
39
39
  };
40
40
  Scroll.onThrottle = function (scroller, position, done) {
41
- var scrollState = scroller.state.scrollState, throttle = scroller.settings.throttle, logger = scroller.logger;
42
- scrollState.current = Scroll.getScrollEvent(position, scrollState.previous);
43
- var _a = scrollState.current, direction = _a.direction, time = _a.time;
44
- var timeDiff = scrollState.previous ? time - scrollState.previous.time : Infinity;
41
+ var scroll = scroller.state.scroll, throttle = scroller.settings.throttle, logger = scroller.logger;
42
+ scroll.current = Scroll.getScrollEvent(position, scroll.previous);
43
+ var _a = scroll.current, direction = _a.direction, time = _a.time;
44
+ var timeDiff = scroll.previous ? time - scroll.previous.time : Infinity;
45
45
  var delta = throttle - timeDiff;
46
46
  var shouldDelay = isFinite(delta) && delta > 0;
47
- var alreadyDelayed = !!scrollState.scrollTimer;
47
+ var alreadyDelayed = !!scroll.scrollTimer;
48
48
  logger.log(function () { return [
49
49
  direction === Direction.backward ? '\u2934' : '\u2935',
50
50
  position,
51
51
  shouldDelay ? (timeDiff + 'ms') : '0ms',
52
- shouldDelay ? (alreadyDelayed ? 'delayed' : "/ " + delta + "ms delay") : ''
52
+ shouldDelay ? (alreadyDelayed ? 'delayed' : "/ ".concat(delta, "ms delay")) : ''
53
53
  ]; });
54
54
  if (!shouldDelay) {
55
- if (scrollState.scrollTimer) {
56
- clearTimeout(scrollState.scrollTimer);
57
- scrollState.scrollTimer = null;
55
+ if (scroll.scrollTimer) {
56
+ clearTimeout(scroll.scrollTimer);
57
+ scroll.scrollTimer = null;
58
58
  }
59
59
  done();
60
60
  return;
61
61
  }
62
62
  if (!alreadyDelayed) {
63
- scrollState.scrollTimer = setTimeout(function () {
63
+ scroll.scrollTimer = setTimeout(function () {
64
64
  logger.log(function () {
65
- var curr = Scroll.getScrollEvent(scroller.viewport.scrollPosition, scrollState.current);
65
+ var curr = Scroll.getScrollEvent(scroller.viewport.scrollPosition, scroll.current);
66
66
  return [
67
67
  curr.direction === Direction.backward ? '\u2934' : '\u2935',
68
68
  curr.position,
@@ -71,7 +71,7 @@ var Scroll = /** @class */ (function (_super) {
71
71
  position
72
72
  ];
73
73
  });
74
- scrollState.scrollTimer = null;
74
+ scroll.scrollTimer = null;
75
75
  done();
76
76
  }, delta);
77
77
  }
@@ -90,11 +90,11 @@ var Scroll = /** @class */ (function (_super) {
90
90
  return { position: position, direction: direction, time: time };
91
91
  };
92
92
  Scroll.onScroll = function (scroller, workflow) {
93
- var _a = scroller.state, scrollState = _a.scrollState, cycle = _a.cycle;
94
- scrollState.previous = __assign({}, scrollState.current);
95
- scrollState.current = null;
93
+ var _a = scroller.state, scroll = _a.scroll, cycle = _a.cycle;
94
+ scroll.previous = __assign({}, scroll.current);
95
+ scroll.current = null;
96
96
  if (cycle.busy.get()) {
97
- scroller.logger.log(function () { return ['skipping scroll', scrollState.previous.position, '[pending]']; });
97
+ scroller.logger.log(function () { return ['skipping scroll', scroll.previous.position, '[pending]']; });
98
98
  return;
99
99
  }
100
100
  workflow.call({
@@ -1 +1 @@
1
- {"version":3,"file":"scroll.js","sourceRoot":"","sources":["../../../src/processes/scroll.ts"],"names":[],"mappings":"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","sourcesContent":["import { BaseProcessFactory, CommonProcess, ProcessStatus } from './misc/index';\nimport { Scroller } from '../scroller';\nimport { Direction } from '../inputs/index';\nimport { ScrollEventData, ScrollerWorkflow } from '../interfaces/index';\n\nexport default class Scroll extends BaseProcessFactory(CommonProcess.scroll) {\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n static run(scroller: Scroller, payload?: { event?: Event }): void {\n const { workflow, viewport } = scroller;\n const position = viewport.scrollPosition;\n\n if (Scroll.onSynthetic(scroller, position)) {\n return;\n }\n\n Scroll.onThrottle(scroller, position, () =>\n Scroll.onScroll(scroller, workflow)\n );\n }\n\n static onSynthetic(scroller: Scroller, position: number): boolean {\n const { scrollState } = scroller.state;\n const synthPos = scrollState.syntheticPosition;\n if (synthPos !== null) {\n if (scrollState.syntheticFulfill) {\n scrollState.syntheticPosition = null;\n }\n if (!scrollState.syntheticFulfill || synthPos === position) {\n scroller.logger.log(() => [\n 'skipping scroll', position, `[${scrollState.syntheticFulfill ? '' : 'pre-'}synthetic]`\n ]);\n return true;\n }\n scroller.logger.log(() => [\n 'synthetic scroll has been fulfilled:', position, position < synthPos ? '<' : '>', synthPos\n ]);\n }\n return false;\n }\n\n static onThrottle(scroller: Scroller, position: number, done: () => void): void {\n const { state: { scrollState }, settings: { throttle }, logger } = scroller;\n scrollState.current = Scroll.getScrollEvent(position, scrollState.previous);\n const { direction, time } = scrollState.current;\n const timeDiff = scrollState.previous ? time - scrollState.previous.time : Infinity;\n const delta = throttle - timeDiff;\n const shouldDelay = isFinite(delta) && delta > 0;\n const alreadyDelayed = !!scrollState.scrollTimer;\n logger.log(() => [\n direction === Direction.backward ? '\\u2934' : '\\u2935',\n position,\n shouldDelay ? (timeDiff + 'ms') : '0ms',\n shouldDelay ? (alreadyDelayed ? 'delayed' : `/ ${delta}ms delay`) : ''\n ]);\n if (!shouldDelay) {\n if (scrollState.scrollTimer) {\n clearTimeout(scrollState.scrollTimer);\n scrollState.scrollTimer = null;\n }\n done();\n return;\n }\n if (!alreadyDelayed) {\n scrollState.scrollTimer = setTimeout(() => {\n logger.log(() => {\n const curr = Scroll.getScrollEvent(scroller.viewport.scrollPosition, scrollState.current);\n return [\n curr.direction === Direction.backward ? '\\u2934' : '\\u2935',\n curr.position,\n (curr.time - time) + 'ms',\n 'triggered by timer set on',\n position\n ];\n });\n scrollState.scrollTimer = null;\n done();\n }, delta);\n }\n }\n\n static getScrollEvent(position: number, previous: ScrollEventData | null): ScrollEventData {\n const time = Number(new Date());\n let direction: Direction | null = Direction.forward;\n if (previous) {\n if (position === previous.position) {\n direction = previous.direction;\n } else if (position < previous.position) {\n direction = Direction.backward;\n }\n }\n return { position, direction, time };\n }\n\n static onScroll(scroller: Scroller, workflow: ScrollerWorkflow): void {\n const { state: { scrollState, cycle } } = scroller;\n scrollState.previous = { ...(scrollState.current as ScrollEventData) };\n scrollState.current = null;\n\n if (cycle.busy.get()) {\n scroller.logger.log(() => ['skipping scroll', (scrollState.previous as ScrollEventData).position, '[pending]']);\n return;\n }\n\n workflow.call({\n process: Scroll.process,\n status: ProcessStatus.next\n });\n }\n\n}\n"]}
1
+ {"version":3,"file":"scroll.js","sourceRoot":"","sources":["../../../src/processes/scroll.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAEhF,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAG5C;IAAoC,0BAAwC;IAA5E;;IAyGA,CAAC;IAvGC,6DAA6D;IACtD,UAAG,GAAV,UAAW,QAAkB,EAAE,OAA2B;QAChD,IAAA,QAAQ,GAAe,QAAQ,SAAvB,EAAE,QAAQ,GAAK,QAAQ,SAAb,CAAc;QACxC,IAAM,QAAQ,GAAG,QAAQ,CAAC,cAAc,CAAC;QAEzC,IAAI,MAAM,CAAC,WAAW,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE;YAC1C,OAAO;SACR;QAED,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,QAAQ,EAAE;YACpC,OAAA,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;QAAnC,CAAmC,CACpC,CAAC;IACJ,CAAC;IAEM,kBAAW,GAAlB,UAAmB,QAAkB,EAAE,QAAgB;QAC7C,IAAA,MAAM,GAAK,QAAQ,CAAC,KAAK,OAAnB,CAAoB;QAClC,IAAM,QAAQ,GAAG,MAAM,CAAC,iBAAiB,CAAC;QAC1C,IAAI,QAAQ,KAAK,IAAI,EAAE;YACrB,IAAI,MAAM,CAAC,gBAAgB,EAAE;gBAC3B,MAAM,CAAC,iBAAiB,GAAG,IAAI,CAAC;aACjC;YACD,IAAI,CAAC,MAAM,CAAC,gBAAgB,IAAI,QAAQ,KAAK,QAAQ,EAAE;gBACrD,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,cAAM,OAAA;oBACxB,iBAAiB,EAAE,QAAQ;oBAAE,WAAI,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,eAAY;iBACnF,EAFyB,CAEzB,CAAC,CAAC;gBACH,OAAO,IAAI,CAAC;aACb;YACD,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,cAAM,OAAA;gBACxB,sCAAsC,EAAE,QAAQ,EAAE,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,QAAQ;aAC5F,EAFyB,CAEzB,CAAC,CAAC;SACJ;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAEM,iBAAU,GAAjB,UAAkB,QAAkB,EAAE,QAAgB,EAAE,IAAgB;QACrD,IAAA,MAAM,GAAuC,QAAQ,aAA/C,EAAgB,QAAQ,GAAe,QAAQ,kBAAvB,EAAI,MAAM,GAAK,QAAQ,OAAb,CAAc;QACvE,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC5D,IAAA,KAAsB,MAAM,CAAC,OAAO,EAAlC,SAAS,eAAA,EAAE,IAAI,UAAmB,CAAC;QAC3C,IAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC;QAC1E,IAAM,KAAK,GAAG,QAAQ,GAAG,QAAQ,CAAC;QAClC,IAAM,WAAW,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC;QACjD,IAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC;QAC5C,MAAM,CAAC,GAAG,CAAC,cAAM,OAAA;YACf,SAAS,KAAK,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ;YACtD,QAAQ;YACR,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK;YACvC,WAAW,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,YAAK,KAAK,aAAU,CAAC,CAAC,CAAC,CAAC,EAAE;SACvE,EALgB,CAKhB,CAAC,CAAC;QACH,IAAI,CAAC,WAAW,EAAE;YAChB,IAAI,MAAM,CAAC,WAAW,EAAE;gBACtB,YAAY,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;gBACjC,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC;aAC3B;YACD,IAAI,EAAE,CAAC;YACP,OAAO;SACR;QACD,IAAI,CAAC,cAAc,EAAE;YACnB,MAAM,CAAC,WAAW,GAAG,UAAU,CAAC;gBAC9B,MAAM,CAAC,GAAG,CAAC;oBACT,IAAM,IAAI,GAAG,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;oBACrF,OAAO;wBACL,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ;wBAC3D,IAAI,CAAC,QAAQ;wBACb,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,IAAI;wBACzB,2BAA2B;wBAC3B,QAAQ;qBACT,CAAC;gBACJ,CAAC,CAAC,CAAC;gBACH,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC;gBAC1B,IAAI,EAAE,CAAC;YACT,CAAC,EAAE,KAAK,CAAC,CAAC;SACX;IACH,CAAC;IAEM,qBAAc,GAArB,UAAsB,QAAgB,EAAE,QAAgC;QACtE,IAAM,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;QAChC,IAAI,SAAS,GAAqB,SAAS,CAAC,OAAO,CAAC;QACpD,IAAI,QAAQ,EAAE;YACZ,IAAI,QAAQ,KAAK,QAAQ,CAAC,QAAQ,EAAE;gBAClC,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC;aAChC;iBAAM,IAAI,QAAQ,GAAG,QAAQ,CAAC,QAAQ,EAAE;gBACvC,SAAS,GAAG,SAAS,CAAC,QAAQ,CAAC;aAChC;SACF;QACD,OAAO,EAAE,QAAQ,UAAA,EAAE,SAAS,WAAA,EAAE,IAAI,MAAA,EAAE,CAAC;IACvC,CAAC;IAEM,eAAQ,GAAf,UAAgB,QAAkB,EAAE,QAA0B;QACpD,IAAA,KAA6B,QAAQ,MAAb,EAAf,MAAM,YAAA,EAAE,KAAK,WAAE,CAAc;QAC9C,MAAM,CAAC,QAAQ,gBAAS,MAAM,CAAC,OAA2B,CAAE,CAAC;QAC7D,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;QAEtB,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE;YACpB,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,cAAM,OAAA,CAAC,iBAAiB,EAAG,MAAM,CAAC,QAA4B,CAAC,QAAQ,EAAE,WAAW,CAAC,EAA/E,CAA+E,CAAC,CAAC;YAC3G,OAAO;SACR;QAED,QAAQ,CAAC,IAAI,CAAC;YACZ,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,MAAM,EAAE,aAAa,CAAC,IAAI;SAC3B,CAAC,CAAC;IACL,CAAC;IAEH,aAAC;AAAD,CAAC,AAzGD,CAAoC,kBAAkB,CAAC,aAAa,CAAC,MAAM,CAAC,GAyG3E","sourcesContent":["import { BaseProcessFactory, CommonProcess, ProcessStatus } from './misc/index';\nimport { Scroller } from '../scroller';\nimport { Direction } from '../inputs/index';\nimport { ScrollEventData, ScrollerWorkflow } from '../interfaces/index';\n\nexport default class Scroll extends BaseProcessFactory(CommonProcess.scroll) {\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n static run(scroller: Scroller, payload?: { event?: Event }): void {\n const { workflow, viewport } = scroller;\n const position = viewport.scrollPosition;\n\n if (Scroll.onSynthetic(scroller, position)) {\n return;\n }\n\n Scroll.onThrottle(scroller, position, () =>\n Scroll.onScroll(scroller, workflow)\n );\n }\n\n static onSynthetic(scroller: Scroller, position: number): boolean {\n const { scroll } = scroller.state;\n const synthPos = scroll.syntheticPosition;\n if (synthPos !== null) {\n if (scroll.syntheticFulfill) {\n scroll.syntheticPosition = null;\n }\n if (!scroll.syntheticFulfill || synthPos === position) {\n scroller.logger.log(() => [\n 'skipping scroll', position, `[${scroll.syntheticFulfill ? '' : 'pre-'}synthetic]`\n ]);\n return true;\n }\n scroller.logger.log(() => [\n 'synthetic scroll has been fulfilled:', position, position < synthPos ? '<' : '>', synthPos\n ]);\n }\n return false;\n }\n\n static onThrottle(scroller: Scroller, position: number, done: () => void): void {\n const { state: { scroll }, settings: { throttle }, logger } = scroller;\n scroll.current = Scroll.getScrollEvent(position, scroll.previous);\n const { direction, time } = scroll.current;\n const timeDiff = scroll.previous ? time - scroll.previous.time : Infinity;\n const delta = throttle - timeDiff;\n const shouldDelay = isFinite(delta) && delta > 0;\n const alreadyDelayed = !!scroll.scrollTimer;\n logger.log(() => [\n direction === Direction.backward ? '\\u2934' : '\\u2935',\n position,\n shouldDelay ? (timeDiff + 'ms') : '0ms',\n shouldDelay ? (alreadyDelayed ? 'delayed' : `/ ${delta}ms delay`) : ''\n ]);\n if (!shouldDelay) {\n if (scroll.scrollTimer) {\n clearTimeout(scroll.scrollTimer);\n scroll.scrollTimer = null;\n }\n done();\n return;\n }\n if (!alreadyDelayed) {\n scroll.scrollTimer = setTimeout(() => {\n logger.log(() => {\n const curr = Scroll.getScrollEvent(scroller.viewport.scrollPosition, scroll.current);\n return [\n curr.direction === Direction.backward ? '\\u2934' : '\\u2935',\n curr.position,\n (curr.time - time) + 'ms',\n 'triggered by timer set on',\n position\n ];\n });\n scroll.scrollTimer = null;\n done();\n }, delta);\n }\n }\n\n static getScrollEvent(position: number, previous: ScrollEventData | null): ScrollEventData {\n const time = Number(new Date());\n let direction: Direction | null = Direction.forward;\n if (previous) {\n if (position === previous.position) {\n direction = previous.direction;\n } else if (position < previous.position) {\n direction = Direction.backward;\n }\n }\n return { position, direction, time };\n }\n\n static onScroll(scroller: Scroller, workflow: ScrollerWorkflow): void {\n const { state: { scroll, cycle } } = scroller;\n scroll.previous = { ...(scroll.current as ScrollEventData) };\n scroll.current = null;\n\n if (cycle.busy.get()) {\n scroller.logger.log(() => ['skipping scroll', (scroll.previous as ScrollEventData).position, '[pending]']);\n return;\n }\n\n workflow.call({\n process: Scroll.process,\n status: ProcessStatus.next\n });\n }\n\n}\n"]}
@@ -12,21 +12,21 @@ export var INVALID_DATASOURCE_PREFIX = 'Invalid datasource:';
12
12
  var instanceCount = 0;
13
13
  var Scroller = /** @class */ (function () {
14
14
  function Scroller(_a) {
15
- var datasource = _a.datasource, consumer = _a.consumer, element = _a.element, workflow = _a.workflow, scroller = _a.scroller;
15
+ var datasource = _a.datasource, consumer = _a.consumer, element = _a.element, workflow = _a.workflow, CustomRoutines = _a.Routines, scroller = _a.scroller;
16
16
  var get = validate(datasource, DATASOURCE).params.get;
17
17
  if (!get.isValid) {
18
- throw new Error(INVALID_DATASOURCE_PREFIX + " " + get.errors[0]);
18
+ throw new Error("".concat(INVALID_DATASOURCE_PREFIX, " ").concat(get.errors[0]));
19
19
  }
20
20
  var packageInfo = scroller ? scroller.state.packageInfo : { consumer: consumer, core: core };
21
- element = scroller ? scroller.viewport.element : element;
21
+ element = scroller ? scroller.routines.element : element;
22
22
  workflow = scroller ? scroller.workflow : workflow;
23
23
  this.workflow = workflow;
24
24
  this.settings = new Settings(datasource.settings, datasource.devSettings, ++instanceCount);
25
25
  this.logger = new Logger(this, packageInfo, datasource.adapter);
26
- this.routines = new Routines(this.settings);
26
+ this.routines = new Routines(element, this.settings, CustomRoutines);
27
27
  this.state = new State(packageInfo, this.settings, scroller ? scroller.state : void 0);
28
28
  this.buffer = new Buffer(this.settings, workflow.onDataChanged, this.logger);
29
- this.viewport = new Viewport(element, this.settings, this.routines, this.state, this.logger);
29
+ this.viewport = new Viewport(this.settings, this.routines, this.state, this.logger);
30
30
  this.logger.object('vscroll settings object', this.settings, true);
31
31
  this.initDatasource(datasource, scroller);
32
32
  }