vscroll 1.4.0-beta.2 → 1.4.3

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 (128) hide show
  1. package/dist/bundles/vscroll.esm5.js +383 -392
  2. package/dist/bundles/vscroll.esm5.js.map +1 -1
  3. package/dist/bundles/vscroll.esm5.min.js +2 -2
  4. package/dist/bundles/vscroll.esm5.min.js.map +1 -1
  5. package/dist/bundles/vscroll.esm6.js +337 -342
  6. package/dist/bundles/vscroll.esm6.js.map +1 -1
  7. package/dist/bundles/vscroll.esm6.min.js +2 -2
  8. package/dist/bundles/vscroll.esm6.min.js.map +1 -1
  9. package/dist/bundles/vscroll.umd.js +386 -395
  10. package/dist/bundles/vscroll.umd.js.map +1 -1
  11. package/dist/bundles/vscroll.umd.min.js +2 -2
  12. package/dist/bundles/vscroll.umd.min.js.map +1 -1
  13. package/dist/esm2015/classes/buffer/checkCall.js.map +1 -1
  14. package/dist/esm2015/classes/buffer.js +0 -16
  15. package/dist/esm2015/classes/buffer.js.map +1 -1
  16. package/dist/esm2015/classes/domRoutines.js +56 -0
  17. package/dist/esm2015/classes/domRoutines.js.map +1 -1
  18. package/dist/esm2015/classes/item.js +4 -0
  19. package/dist/esm2015/classes/item.js.map +1 -1
  20. package/dist/esm2015/classes/paddings.js +3 -1
  21. package/dist/esm2015/classes/paddings.js.map +1 -1
  22. package/dist/esm2015/classes/state/cycle.js +7 -6
  23. package/dist/esm2015/classes/state/cycle.js.map +1 -1
  24. package/dist/esm2015/classes/state/fetch.js +0 -12
  25. package/dist/esm2015/classes/state/fetch.js.map +1 -1
  26. package/dist/esm2015/classes/state/render.js +1 -1
  27. package/dist/esm2015/classes/state/render.js.map +1 -1
  28. package/dist/esm2015/classes/state/scroll.js +6 -6
  29. package/dist/esm2015/classes/state/scroll.js.map +1 -1
  30. package/dist/esm2015/classes/state.js +23 -15
  31. package/dist/esm2015/classes/state.js.map +1 -1
  32. package/dist/esm2015/classes/viewport.js +12 -29
  33. package/dist/esm2015/classes/viewport.js.map +1 -1
  34. package/dist/esm2015/interfaces/index.js.map +1 -1
  35. package/dist/esm2015/interfaces/state.js.map +1 -1
  36. package/dist/esm2015/processes/adapter/append.js +15 -74
  37. package/dist/esm2015/processes/adapter/append.js.map +1 -1
  38. package/dist/esm2015/processes/adapter/reload.js +1 -1
  39. package/dist/esm2015/processes/adapter/reload.js.map +1 -1
  40. package/dist/esm2015/processes/adjust.js +44 -15
  41. package/dist/esm2015/processes/adjust.js.map +1 -1
  42. package/dist/esm2015/processes/end.js +18 -16
  43. package/dist/esm2015/processes/end.js.map +1 -1
  44. package/dist/esm2015/processes/fetch.js +3 -3
  45. package/dist/esm2015/processes/fetch.js.map +1 -1
  46. package/dist/esm2015/processes/init.js +2 -2
  47. package/dist/esm2015/processes/init.js.map +1 -1
  48. package/dist/esm2015/processes/render.js +8 -11
  49. package/dist/esm2015/processes/render.js.map +1 -1
  50. package/dist/esm2015/processes/scroll.js +21 -21
  51. package/dist/esm2015/processes/scroll.js.map +1 -1
  52. package/dist/esm2015/version.js +1 -1
  53. package/dist/esm2015/version.js.map +1 -1
  54. package/dist/esm2015/workflow.js +5 -6
  55. package/dist/esm2015/workflow.js.map +1 -1
  56. package/dist/esm5/classes/buffer/checkCall.js.map +1 -1
  57. package/dist/esm5/classes/buffer/defaultSize.js +1 -1
  58. package/dist/esm5/classes/buffer/defaultSize.js.map +1 -1
  59. package/dist/esm5/classes/buffer.js +7 -23
  60. package/dist/esm5/classes/buffer.js.map +1 -1
  61. package/dist/esm5/classes/domRoutines.js +56 -0
  62. package/dist/esm5/classes/domRoutines.js.map +1 -1
  63. package/dist/esm5/classes/item.js +4 -0
  64. package/dist/esm5/classes/item.js.map +1 -1
  65. package/dist/esm5/classes/logger.js +5 -5
  66. package/dist/esm5/classes/logger.js.map +1 -1
  67. package/dist/esm5/classes/paddings.js +3 -1
  68. package/dist/esm5/classes/paddings.js.map +1 -1
  69. package/dist/esm5/classes/state/cycle.js +7 -6
  70. package/dist/esm5/classes/state/cycle.js.map +1 -1
  71. package/dist/esm5/classes/state/fetch.js +0 -12
  72. package/dist/esm5/classes/state/fetch.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 +13 -31
  80. package/dist/esm5/classes/viewport.js.map +1 -1
  81. package/dist/esm5/inputs/validation.js +2 -2
  82. package/dist/esm5/inputs/validation.js.map +1 -1
  83. package/dist/esm5/interfaces/index.js.map +1 -1
  84. package/dist/esm5/interfaces/state.js.map +1 -1
  85. package/dist/esm5/processes/adapter/append.js +15 -75
  86. package/dist/esm5/processes/adapter/append.js.map +1 -1
  87. package/dist/esm5/processes/adapter/fix.js +1 -1
  88. package/dist/esm5/processes/adapter/fix.js.map +1 -1
  89. package/dist/esm5/processes/adapter/insert.js +1 -1
  90. package/dist/esm5/processes/adapter/insert.js.map +1 -1
  91. package/dist/esm5/processes/adapter/reload.js +1 -1
  92. package/dist/esm5/processes/adapter/reload.js.map +1 -1
  93. package/dist/esm5/processes/adapter/remove.js +1 -1
  94. package/dist/esm5/processes/adapter/remove.js.map +1 -1
  95. package/dist/esm5/processes/adjust.js +44 -15
  96. package/dist/esm5/processes/adjust.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 +3 -3
  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/preFetch.js +1 -1
  104. package/dist/esm5/processes/preFetch.js.map +1 -1
  105. package/dist/esm5/processes/render.js +8 -11
  106. package/dist/esm5/processes/render.js.map +1 -1
  107. package/dist/esm5/processes/scroll.js +21 -21
  108. package/dist/esm5/processes/scroll.js.map +1 -1
  109. package/dist/esm5/version.js +1 -1
  110. package/dist/esm5/version.js.map +1 -1
  111. package/dist/esm5/workflow.js +10 -13
  112. package/dist/esm5/workflow.js.map +1 -1
  113. package/dist/typings/classes/buffer.d.ts +0 -2
  114. package/dist/typings/classes/domRoutines.d.ts +12 -0
  115. package/dist/typings/classes/item.d.ts +1 -0
  116. package/dist/typings/classes/state/cycle.d.ts +1 -1
  117. package/dist/typings/classes/state/fetch.d.ts +0 -2
  118. package/dist/typings/classes/state/render.d.ts +1 -1
  119. package/dist/typings/classes/state/scroll.d.ts +4 -4
  120. package/dist/typings/classes/state.d.ts +6 -3
  121. package/dist/typings/classes/viewport.d.ts +2 -2
  122. package/dist/typings/interfaces/index.d.ts +2 -2
  123. package/dist/typings/interfaces/state.d.ts +2 -15
  124. package/dist/typings/processes/adapter/append.d.ts +1 -4
  125. package/dist/typings/processes/adjust.d.ts +1 -0
  126. package/dist/typings/processes/end.d.ts +1 -2
  127. package/dist/typings/workflow.d.ts +1 -1
  128. package/package.json +17 -17
@@ -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"]}
@@ -32,9 +32,9 @@ export default class Fetch extends BaseProcessFactory(CommonProcess.fetch) {
32
32
  }
33
33
  }
34
34
  else {
35
- const { state: { scrollState, fetch }, viewport } = scroller;
36
- if (scrollState.positionBeforeAsync === null) {
37
- scrollState.positionBeforeAsync = viewport.scrollPosition;
35
+ const { state: { scroll, fetch }, viewport } = scroller;
36
+ if (scroll.positionBeforeAsync === null) {
37
+ scroll.positionBeforeAsync = viewport.scrollPosition;
38
38
  }
39
39
  fetch.cancel = () => {
40
40
  box.success = () => 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"]}
@@ -2,10 +2,10 @@ import { BaseProcessFactory, CommonProcess, AdapterProcess, ProcessStatus } from
2
2
  const initProcesses = [CommonProcess.init, AdapterProcess.reset, AdapterProcess.reload];
3
3
  export default class Init extends BaseProcessFactory(CommonProcess.init) {
4
4
  static run(scroller, process) {
5
- const { state: { cycle }, workflow } = scroller;
5
+ const { state, workflow } = scroller;
6
6
  const isInitial = initProcesses.includes(process);
7
7
  scroller.logger.logCycle(true);
8
- cycle.start(isInitial, process);
8
+ state.startWorkflowCycle(isInitial, process);
9
9
  workflow.call({
10
10
  process: Init.process,
11
11
  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,MAAM,aAAa,GAAG,CAAC,aAAa,CAAC,IAAI,EAAE,cAAc,CAAC,KAAK,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC;AAExF,MAAM,CAAC,OAAO,OAAO,IAAK,SAAQ,kBAAkB,CAAC,aAAa,CAAC,IAAI,CAAC;IAEtE,MAAM,CAAC,GAAG,CAAC,QAAkB,EAAE,OAAoB;QACjD,MAAM,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,GAAG,QAAQ,CAAC;QAChD,MAAM,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;CAEF","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,MAAM,aAAa,GAAG,CAAC,aAAa,CAAC,IAAI,EAAE,cAAc,CAAC,KAAK,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC;AAExF,MAAM,CAAC,OAAO,OAAO,IAAK,SAAQ,kBAAkB,CAAC,aAAa,CAAC,IAAI,CAAC;IAEtE,MAAM,CAAC,GAAG,CAAC,QAAkB,EAAE,OAAoB;QACjD,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,QAAQ,CAAC;QACrC,MAAM,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;CAEF","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"]}
@@ -1,13 +1,13 @@
1
1
  import { BaseProcessFactory, CommonProcess, ProcessStatus } from './misc/index';
2
2
  export default class Render extends BaseProcessFactory(CommonProcess.render) {
3
3
  static run(scroller) {
4
- const { workflow, state: { cycle, render, scrollState }, viewport } = scroller;
4
+ const { workflow, state: { cycle, render, scroll }, viewport, routines } = scroller;
5
5
  scroller.logger.stat('before new items render');
6
- if (scrollState.positionBeforeAsync === null) {
7
- scrollState.positionBeforeAsync = viewport.scrollPosition;
6
+ if (scroll.positionBeforeAsync === null) {
7
+ scroll.positionBeforeAsync = viewport.scrollPosition;
8
8
  }
9
- render.renderTimer = setTimeout(() => {
10
- render.renderTimer = null;
9
+ render.cancel = routines.render(() => {
10
+ render.cancel = null;
11
11
  if (Render.doRender(scroller)) {
12
12
  workflow.call({
13
13
  process: Render.process,
@@ -22,7 +22,7 @@ export default class Render extends BaseProcessFactory(CommonProcess.render) {
22
22
  payload: { error: 'Can\'t associate item with element' }
23
23
  });
24
24
  }
25
- }, 0);
25
+ });
26
26
  }
27
27
  static doRender(scroller) {
28
28
  const { state: { fetch, render }, viewport, buffer, logger } = scroller;
@@ -41,15 +41,12 @@ export default class Render extends BaseProcessFactory(CommonProcess.render) {
41
41
  }
42
42
  static processElement(scroller, item) {
43
43
  const { viewport, buffer } = scroller;
44
- const element = viewport.element.querySelector(`[data-sid="${item.nodeId}"]`);
44
+ const element = viewport.findItemElementById(item.nodeId);
45
45
  if (!element) {
46
46
  return false;
47
47
  }
48
48
  item.element = element;
49
- item.element.style.left = '';
50
- item.element.style.top = '';
51
- item.element.style.position = '';
52
- item.invisible = false;
49
+ item.makeVisible();
53
50
  item.setSize(buffer.getSizeByIndex(item.$index));
54
51
  buffer.cacheItem(item);
55
52
  return true;
@@ -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.element.querySelector(`[data-sid=\"${item.nodeId}\"]`);\n if (!element) {\n return false;\n }\n item.element = element as HTMLElement;\n item.element.style.left = '';\n item.element.style.top = '';\n item.element.style.position = '';\n item.invisible = false;\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"]}
@@ -11,15 +11,15 @@ export default class Scroll extends BaseProcessFactory(CommonProcess.scroll) {
11
11
  Scroll.onThrottle(scroller, position, () => Scroll.onScroll(scroller, workflow));
12
12
  }
13
13
  static onSynthetic(scroller, position) {
14
- const { scrollState } = scroller.state;
15
- const synthPos = scrollState.syntheticPosition;
14
+ const { scroll } = scroller.state;
15
+ const synthPos = scroll.syntheticPosition;
16
16
  if (synthPos !== null) {
17
- if (scrollState.syntheticFulfill) {
18
- scrollState.syntheticPosition = null;
17
+ if (scroll.syntheticFulfill) {
18
+ scroll.syntheticPosition = null;
19
19
  }
20
- if (!scrollState.syntheticFulfill || synthPos === position) {
20
+ if (!scroll.syntheticFulfill || synthPos === position) {
21
21
  scroller.logger.log(() => [
22
- 'skipping scroll', position, `[${scrollState.syntheticFulfill ? '' : 'pre-'}synthetic]`
22
+ 'skipping scroll', position, `[${scroll.syntheticFulfill ? '' : 'pre-'}synthetic]`
23
23
  ]);
24
24
  return true;
25
25
  }
@@ -30,13 +30,13 @@ export default class Scroll extends BaseProcessFactory(CommonProcess.scroll) {
30
30
  return false;
31
31
  }
32
32
  static onThrottle(scroller, position, done) {
33
- const { state: { scrollState }, settings: { throttle }, logger } = scroller;
34
- scrollState.current = Scroll.getScrollEvent(position, scrollState.previous);
35
- const { direction, time } = scrollState.current;
36
- const timeDiff = scrollState.previous ? time - scrollState.previous.time : Infinity;
33
+ const { state: { scroll }, settings: { throttle }, logger } = scroller;
34
+ scroll.current = Scroll.getScrollEvent(position, scroll.previous);
35
+ const { direction, time } = scroll.current;
36
+ const timeDiff = scroll.previous ? time - scroll.previous.time : Infinity;
37
37
  const delta = throttle - timeDiff;
38
38
  const shouldDelay = isFinite(delta) && delta > 0;
39
- const alreadyDelayed = !!scrollState.scrollTimer;
39
+ const alreadyDelayed = !!scroll.scrollTimer;
40
40
  logger.log(() => [
41
41
  direction === Direction.backward ? '\u2934' : '\u2935',
42
42
  position,
@@ -44,17 +44,17 @@ export default class Scroll extends BaseProcessFactory(CommonProcess.scroll) {
44
44
  shouldDelay ? (alreadyDelayed ? 'delayed' : `/ ${delta}ms delay`) : ''
45
45
  ]);
46
46
  if (!shouldDelay) {
47
- if (scrollState.scrollTimer) {
48
- clearTimeout(scrollState.scrollTimer);
49
- scrollState.scrollTimer = null;
47
+ if (scroll.scrollTimer) {
48
+ clearTimeout(scroll.scrollTimer);
49
+ scroll.scrollTimer = null;
50
50
  }
51
51
  done();
52
52
  return;
53
53
  }
54
54
  if (!alreadyDelayed) {
55
- scrollState.scrollTimer = setTimeout(() => {
55
+ scroll.scrollTimer = setTimeout(() => {
56
56
  logger.log(() => {
57
- const curr = Scroll.getScrollEvent(scroller.viewport.scrollPosition, scrollState.current);
57
+ const curr = Scroll.getScrollEvent(scroller.viewport.scrollPosition, scroll.current);
58
58
  return [
59
59
  curr.direction === Direction.backward ? '\u2934' : '\u2935',
60
60
  curr.position,
@@ -63,7 +63,7 @@ export default class Scroll extends BaseProcessFactory(CommonProcess.scroll) {
63
63
  position
64
64
  ];
65
65
  });
66
- scrollState.scrollTimer = null;
66
+ scroll.scrollTimer = null;
67
67
  done();
68
68
  }, delta);
69
69
  }
@@ -82,11 +82,11 @@ export default class Scroll extends BaseProcessFactory(CommonProcess.scroll) {
82
82
  return { position, direction, time };
83
83
  }
84
84
  static onScroll(scroller, workflow) {
85
- const { state: { scrollState, cycle } } = scroller;
86
- scrollState.previous = Object.assign({}, scrollState.current);
87
- scrollState.current = null;
85
+ const { state: { scroll, cycle } } = scroller;
86
+ scroll.previous = Object.assign({}, scroll.current);
87
+ scroll.current = null;
88
88
  if (cycle.busy.get()) {
89
- scroller.logger.log(() => ['skipping scroll', scrollState.previous.position, '[pending]']);
89
+ scroller.logger.log(() => ['skipping scroll', scroll.previous.position, '[pending]']);
90
90
  return;
91
91
  }
92
92
  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,MAAM,CAAC,OAAO,OAAO,MAAO,SAAQ,kBAAkB,CAAC,aAAa,CAAC,MAAM,CAAC;IAE1E,6DAA6D;IAC7D,MAAM,CAAC,GAAG,CAAC,QAAkB,EAAE,OAA2B;QACxD,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,QAAQ,CAAC;QACxC,MAAM,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,GAAG,EAAE,CACzC,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,CACpC,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,QAAkB,EAAE,QAAgB;QACrD,MAAM,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC;QAClC,MAAM,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,GAAG,EAAE,CAAC;oBACxB,iBAAiB,EAAE,QAAQ,EAAE,IAAI,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,YAAY;iBACnF,CAAC,CAAC;gBACH,OAAO,IAAI,CAAC;aACb;YACD,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;gBACxB,sCAAsC,EAAE,QAAQ,EAAE,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,QAAQ;aAC5F,CAAC,CAAC;SACJ;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,CAAC,UAAU,CAAC,QAAkB,EAAE,QAAgB,EAAE,IAAgB;QACtE,MAAM,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAC;QACvE,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;QAClE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC;QAC3C,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC;QAC1E,MAAM,KAAK,GAAG,QAAQ,GAAG,QAAQ,CAAC;QAClC,MAAM,WAAW,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC;QACjD,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC;QAC5C,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;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,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE;SACvE,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,GAAG,EAAE;gBACnC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE;oBACd,MAAM,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;IAED,MAAM,CAAC,cAAc,CAAC,QAAgB,EAAE,QAAgC;QACtE,MAAM,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,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;IACvC,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,QAAkB,EAAE,QAA0B;QAC5D,MAAM,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,GAAG,QAAQ,CAAC;QAC9C,MAAM,CAAC,QAAQ,qBAAS,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,GAAG,EAAE,CAAC,CAAC,iBAAiB,EAAG,MAAM,CAAC,QAA4B,CAAC,QAAQ,EAAE,WAAW,CAAC,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;CAEF","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"]}
@@ -1,5 +1,5 @@
1
1
  export default {
2
2
  name: 'vscroll',
3
- version: '1.4.0-beta.2'
3
+ version: '1.4.3'
4
4
  };
5
5
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,eAAe;IACb,IAAI,EAAE,SAAS;IACf,OAAO,EAAE,cAAc;CACxB,CAAC","sourcesContent":["export default {\n name: 'vscroll',\n version: '1.4.0-beta.2'\n};\n"]}
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,eAAe;IACb,IAAI,EAAE,SAAS;IACf,OAAO,EAAE,OAAO;CACjB,CAAC","sourcesContent":["export default {\n name: 'vscroll',\n version: '1.4.3'\n};\n"]}
@@ -10,7 +10,7 @@ export class Workflow {
10
10
  this.cyclesDone = 0;
11
11
  this.interruptionCount = 0;
12
12
  this.errors = [];
13
- this.disposeScrollEventHandler = () => null;
13
+ this.offScroll = () => null;
14
14
  this.propagateChanges = run;
15
15
  this.stateMachineMethods = {
16
16
  run: this.runProcess(),
@@ -38,14 +38,13 @@ export class Workflow {
38
38
  status: Status.start
39
39
  });
40
40
  // set up scroll event listener
41
- const { scrollEventReceiver } = this.scroller.viewport;
41
+ const { viewport: { scrollEventReceiver }, routines } = this.scroller;
42
42
  const onScrollHandler = event => this.callWorkflow({
43
43
  process: CommonProcess.scroll,
44
44
  status: Status.start,
45
45
  payload: { event }
46
46
  });
47
- scrollEventReceiver.addEventListener('scroll', onScrollHandler);
48
- this.disposeScrollEventHandler = () => scrollEventReceiver.removeEventListener('scroll', onScrollHandler);
47
+ this.offScroll = routines.onScroll(scrollEventReceiver, onScrollHandler);
49
48
  }
50
49
  changeItems(items) {
51
50
  this.propagateChanges(items);
@@ -131,14 +130,14 @@ export class Workflow {
131
130
  const { state, logger } = this.scroller;
132
131
  this.cyclesDone++;
133
132
  logger.logCycle(false);
134
- state.cycle.done(this.cyclesDone + 1);
133
+ state.endWorkflowCycle(this.cyclesDone + 1);
135
134
  this.finalize();
136
135
  }
137
136
  dispose() {
138
137
  if (this.initTimer) {
139
138
  clearTimeout(this.initTimer);
140
139
  }
141
- this.disposeScrollEventHandler();
140
+ this.offScroll();
142
141
  this.adapterRun$.dispose();
143
142
  this.scroller.dispose(true);
144
143
  Object.getOwnPropertyNames(this).forEach(prop => {
@@ -1 +1 @@
1
- {"version":3,"file":"workflow.js","sourceRoot":"","sources":["../../src/workflow.ts"],"names":[],"mappings":"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","sourcesContent":["import { Scroller } from './scroller';\nimport { runStateMachine } from './workflow-transducer';\nimport { Reactive } from './classes/reactive';\nimport { Item } from './classes/item';\nimport { CommonProcess, ProcessStatus as Status, } from './processes/index';\nimport {\n WorkflowParams,\n ProcessName,\n ProcessPayload,\n ProcessClass,\n ProcessSubject,\n WorkflowError,\n InterruptParams,\n StateMachineMethods,\n ScrollerWorkflow,\n} from './interfaces/index';\n\nexport class Workflow<ItemData = unknown> {\n\n isInitialized: boolean;\n initTimer: ReturnType<typeof setTimeout> | null;\n adapterRun$: Reactive<ProcessSubject>;\n cyclesDone: number;\n interruptionCount: number;\n errors: WorkflowError[];\n\n private disposeScrollEventHandler: () => void;\n readonly propagateChanges: WorkflowParams<ItemData>['run'];\n readonly stateMachineMethods: StateMachineMethods<ItemData>;\n\n scroller: Scroller<ItemData>;\n\n constructor({ element, datasource, consumer, run }: WorkflowParams<ItemData>) {\n this.isInitialized = false;\n this.initTimer = null;\n this.adapterRun$ = new Reactive();\n this.cyclesDone = 0;\n this.interruptionCount = 0;\n this.errors = [];\n this.disposeScrollEventHandler = () => null;\n this.propagateChanges = run;\n this.stateMachineMethods = {\n run: this.runProcess(),\n interrupt: this.interrupt.bind(this),\n done: this.done.bind(this),\n onError: this.onError.bind(this)\n };\n\n this.scroller = new Scroller<ItemData>({ element, datasource, consumer, workflow: this.getUpdater() });\n\n if (this.scroller.settings.initializeDelay) {\n this.initTimer = setTimeout(() => {\n this.initTimer = null;\n this.init();\n }, this.scroller.settings.initializeDelay);\n } else {\n this.init();\n }\n }\n\n init(): void {\n this.scroller.init(this.adapterRun$);\n this.isInitialized = true;\n\n // run the Workflow\n this.callWorkflow({\n process: CommonProcess.init,\n status: Status.start\n });\n\n // set up scroll event listener\n const { scrollEventReceiver } = this.scroller.viewport;\n const onScrollHandler: EventListener =\n event => this.callWorkflow({\n process: CommonProcess.scroll,\n status: Status.start,\n payload: { event }\n });\n scrollEventReceiver.addEventListener('scroll', onScrollHandler);\n this.disposeScrollEventHandler = () =>\n scrollEventReceiver.removeEventListener('scroll', onScrollHandler);\n }\n\n changeItems(items: Item<ItemData>[]): void {\n this.propagateChanges(items);\n }\n\n callWorkflow(processSubject: ProcessSubject): void {\n if (!this.isInitialized) {\n return;\n }\n const { process, status } = processSubject;\n if (process && process.startsWith('adapter') && status !== Status.next) {\n this.adapterRun$.set(processSubject);\n }\n this.process(processSubject);\n }\n\n getUpdater(): ScrollerWorkflow<ItemData> {\n return {\n call: this.callWorkflow.bind(this),\n onDataChanged: this.changeItems.bind(this),\n };\n }\n\n process(data: ProcessSubject): void {\n const { status, process, payload } = data;\n if (this.scroller.settings.logProcessRun) {\n this.scroller.logger.log(() => [\n '%cfire%c', ...['color: #cc7777;', 'color: #000000;'],\n process, `\"${status}\"`, ...(payload !== void 0 ? [payload] : [])\n ]);\n }\n this.scroller.logger.logProcess(data);\n\n if (process === CommonProcess.end) {\n this.scroller.finalize();\n }\n runStateMachine({\n input: data,\n methods: this.stateMachineMethods as StateMachineMethods<unknown>\n });\n }\n\n runProcess() {\n return ({ run, process, name }: ProcessClass) =>\n (...args: any[]): void => {\n if (this.scroller.settings.logProcessRun) {\n this.scroller.logger.log(() => [\n '%crun%c', ...['color: #333399;', 'color: #000000;'],\n process || name, ...args\n ]);\n }\n run(this.scroller as Scroller, ...args);\n };\n }\n\n onError(process: ProcessName, payload?: ProcessPayload): void {\n const message: string = payload && String(payload.error) || '';\n const { time, cycle } = this.scroller.state;\n this.errors.push({\n process,\n message,\n time,\n loop: cycle.loopIdNext\n });\n this.scroller.logger.logError(message);\n }\n\n interrupt({ process, finalize, datasource }: InterruptParams<ItemData>): void {\n if (finalize) {\n const { workflow, logger } = this.scroller;\n // we are going to create a new reference for the scroller.workflow object\n // calling the old version of the scroller.workflow by any outstanding async processes will be skipped\n workflow.call = (p: ProcessSubject) => // eslint-disable-line @typescript-eslint/no-unused-vars\n logger.log('[skip wf call]');\n workflow.call.interrupted = true;\n this.scroller.workflow = this.getUpdater();\n this.interruptionCount++;\n logger.log(() => `workflow had been interrupted by the ${process} process (${this.interruptionCount})`);\n }\n if (datasource) { // Scroller re-initialization case\n this.scroller.adapter.relax(() => {\n this.scroller.logger.log('new Scroller instantiation');\n const scroller = new Scroller<ItemData>({ datasource, scroller: this.scroller });\n this.scroller.dispose();\n this.scroller = scroller;\n this.scroller.init();\n });\n }\n }\n\n done(): void {\n const { state, logger } = this.scroller;\n this.cyclesDone++;\n logger.logCycle(false);\n state.cycle.done(this.cyclesDone + 1);\n this.finalize();\n }\n\n dispose(): void {\n if (this.initTimer) {\n clearTimeout(this.initTimer);\n }\n this.disposeScrollEventHandler();\n this.adapterRun$.dispose();\n this.scroller.dispose(true);\n Object.getOwnPropertyNames(this).forEach(prop => {\n delete (this as Record<string, unknown>)[prop];\n });\n }\n\n finalize(): void {\n }\n\n}\n"]}
1
+ {"version":3,"file":"workflow.js","sourceRoot":"","sources":["../../src/workflow.ts"],"names":[],"mappings":"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","sourcesContent":["import { Scroller } from './scroller';\nimport { runStateMachine } from './workflow-transducer';\nimport { Reactive } from './classes/reactive';\nimport { Item } from './classes/item';\nimport { CommonProcess, ProcessStatus as Status, } from './processes/index';\nimport {\n WorkflowParams,\n ProcessName,\n ProcessPayload,\n ProcessClass,\n ProcessSubject,\n WorkflowError,\n InterruptParams,\n StateMachineMethods,\n ScrollerWorkflow,\n} from './interfaces/index';\n\nexport class Workflow<ItemData = unknown> {\n\n isInitialized: boolean;\n initTimer: ReturnType<typeof setTimeout> | null;\n adapterRun$: Reactive<ProcessSubject>;\n cyclesDone: number;\n interruptionCount: number;\n errors: WorkflowError[];\n\n private offScroll: () => void;\n readonly propagateChanges: WorkflowParams<ItemData>['run'];\n readonly stateMachineMethods: StateMachineMethods<ItemData>;\n\n scroller: Scroller<ItemData>;\n\n constructor({ element, datasource, consumer, run }: WorkflowParams<ItemData>) {\n this.isInitialized = false;\n this.initTimer = null;\n this.adapterRun$ = new Reactive();\n this.cyclesDone = 0;\n this.interruptionCount = 0;\n this.errors = [];\n this.offScroll = () => null;\n this.propagateChanges = run;\n this.stateMachineMethods = {\n run: this.runProcess(),\n interrupt: this.interrupt.bind(this),\n done: this.done.bind(this),\n onError: this.onError.bind(this)\n };\n\n this.scroller = new Scroller<ItemData>({ element, datasource, consumer, workflow: this.getUpdater() });\n\n if (this.scroller.settings.initializeDelay) {\n this.initTimer = setTimeout(() => {\n this.initTimer = null;\n this.init();\n }, this.scroller.settings.initializeDelay);\n } else {\n this.init();\n }\n }\n\n init(): void {\n this.scroller.init(this.adapterRun$);\n this.isInitialized = true;\n\n // run the Workflow\n this.callWorkflow({\n process: CommonProcess.init,\n status: Status.start\n });\n\n // set up scroll event listener\n const { viewport: { scrollEventReceiver }, routines } = this.scroller;\n const onScrollHandler: EventListener =\n event => this.callWorkflow({\n process: CommonProcess.scroll,\n status: Status.start,\n payload: { event }\n });\n this.offScroll = routines.onScroll(scrollEventReceiver, onScrollHandler);\n }\n\n changeItems(items: Item<ItemData>[]): void {\n this.propagateChanges(items);\n }\n\n callWorkflow(processSubject: ProcessSubject): void {\n if (!this.isInitialized) {\n return;\n }\n const { process, status } = processSubject;\n if (process && process.startsWith('adapter') && status !== Status.next) {\n this.adapterRun$.set(processSubject);\n }\n this.process(processSubject);\n }\n\n getUpdater(): ScrollerWorkflow<ItemData> {\n return {\n call: this.callWorkflow.bind(this),\n onDataChanged: this.changeItems.bind(this),\n };\n }\n\n process(data: ProcessSubject): void {\n const { status, process, payload } = data;\n if (this.scroller.settings.logProcessRun) {\n this.scroller.logger.log(() => [\n '%cfire%c', ...['color: #cc7777;', 'color: #000000;'],\n process, `\"${status}\"`, ...(payload !== void 0 ? [payload] : [])\n ]);\n }\n this.scroller.logger.logProcess(data);\n\n if (process === CommonProcess.end) {\n this.scroller.finalize();\n }\n runStateMachine({\n input: data,\n methods: this.stateMachineMethods as StateMachineMethods<unknown>\n });\n }\n\n runProcess() {\n return ({ run, process, name }: ProcessClass) =>\n (...args: any[]): void => {\n if (this.scroller.settings.logProcessRun) {\n this.scroller.logger.log(() => [\n '%crun%c', ...['color: #333399;', 'color: #000000;'],\n process || name, ...args\n ]);\n }\n run(this.scroller as Scroller, ...args);\n };\n }\n\n onError(process: ProcessName, payload?: ProcessPayload): void {\n const message: string = payload && String(payload.error) || '';\n const { time, cycle } = this.scroller.state;\n this.errors.push({\n process,\n message,\n time,\n loop: cycle.loopIdNext\n });\n this.scroller.logger.logError(message);\n }\n\n interrupt({ process, finalize, datasource }: InterruptParams<ItemData>): void {\n if (finalize) {\n const { workflow, logger } = this.scroller;\n // we are going to create a new reference for the scroller.workflow object\n // calling the old version of the scroller.workflow by any outstanding async processes will be skipped\n workflow.call = (p: ProcessSubject) => // eslint-disable-line @typescript-eslint/no-unused-vars\n logger.log('[skip wf call]');\n workflow.call.interrupted = true;\n this.scroller.workflow = this.getUpdater();\n this.interruptionCount++;\n logger.log(() => `workflow had been interrupted by the ${process} process (${this.interruptionCount})`);\n }\n if (datasource) { // Scroller re-initialization case\n this.scroller.adapter.relax(() => {\n this.scroller.logger.log('new Scroller instantiation');\n const scroller = new Scroller<ItemData>({ datasource, scroller: this.scroller });\n this.scroller.dispose();\n this.scroller = scroller;\n this.scroller.init();\n });\n }\n }\n\n done(): void {\n const { state, logger } = this.scroller;\n this.cyclesDone++;\n logger.logCycle(false);\n state.endWorkflowCycle(this.cyclesDone + 1);\n this.finalize();\n }\n\n dispose(): void {\n if (this.initTimer) {\n clearTimeout(this.initTimer);\n }\n this.offScroll();\n this.adapterRun$.dispose();\n this.scroller.dispose(true);\n Object.getOwnPropertyNames(this).forEach(prop => {\n delete (this as Record<string, unknown>)[prop];\n });\n }\n\n finalize(): void {\n }\n\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"checkCall.js","sourceRoot":"","sources":["../../../../src/classes/buffer/checkCall.ts"],"names":[],"mappings":"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","sourcesContent":["import { Buffer } from '../buffer';\nimport { Logger } from '../logger';\nimport { Direction } from '../../inputs/index';\nimport { ItemsPredicate } from '../../interfaces/index';\n\nexport class CheckBufferCall<Data> {\n private context: Buffer<Data>;\n private logger: Logger;\n\n constructor(context: Buffer<Data>, logger: Logger) {\n this.context = context;\n this.logger = logger;\n }\n\n fillEmpty(items: Data[], before?: number, after?: number): boolean {\n if (!items.length) {\n this.logger.log('no items to fill the buffer; empty list');\n return false;\n }\n if (!Number.isInteger(before) && !Number.isInteger(after)) {\n this.logger.log('no items to fill the buffer; wrong indexes');\n return false;\n }\n this.logger.log(() => `going to fill the buffer with ${items.length} item(s)`);\n return true;\n }\n\n insertInBuffer(predicate?: ItemsPredicate, before?: number, after?: number): number {\n const index = Number.isInteger(before) ? before : (Number.isInteger(after) ? after : NaN);\n const found = this.context.items.find(item =>\n (predicate && predicate(item.get())) ||\n (Number.isInteger(index) && index === item.$index)\n );\n if (!found) {\n this.logger.log('no items to insert in buffer; empty predicate\\'s result');\n return NaN;\n }\n return found.$index;\n }\n\n insertVirtual(items: Data[], index: number, direction: Direction): boolean {\n if (!items.length) {\n this.logger.log('no items to insert virtually; empty list');\n return false;\n }\n const { firstIndex, lastIndex, finiteAbsMinIndex, finiteAbsMaxIndex } = this.context;\n if (index < finiteAbsMinIndex || index > finiteAbsMaxIndex) {\n this.logger.log(() =>\n 'no items to insert virtually; ' +\n `selected index (${index}) does not match virtual area [${finiteAbsMinIndex}..${finiteAbsMaxIndex}]`\n );\n return false;\n }\n const before = direction === Direction.backward;\n if (!(index < firstIndex + (before ? 1 : 0) || index > lastIndex - (before ? 0 : 1))) {\n this.logger.log(() =>\n `no items to insert virtually; selected index (${index}) belongs Buffer [${firstIndex}..${lastIndex}]`\n );\n return false;\n }\n this.logger.log(() => `going to insert ${items.length} item(s) virtually`);\n return true;\n }\n\n}"]}
1
+ {"version":3,"file":"checkCall.js","sourceRoot":"","sources":["../../../../src/classes/buffer/checkCall.ts"],"names":[],"mappings":"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","sourcesContent":["import { Buffer } from '../buffer';\nimport { Logger } from '../logger';\nimport { Direction } from '../../inputs/index';\nimport { ItemsPredicate } from '../../interfaces/index';\n\nexport class CheckBufferCall<Data> {\n private context: Buffer<Data>;\n private logger: Logger;\n\n constructor(context: Buffer<Data>, logger: Logger) {\n this.context = context;\n this.logger = logger;\n }\n\n fillEmpty(items: Data[], before?: number, after?: number): boolean {\n if (!items.length) {\n this.logger.log('no items to fill the buffer; empty list');\n return false;\n }\n if (!Number.isInteger(before) && !Number.isInteger(after)) {\n this.logger.log('no items to fill the buffer; wrong indexes');\n return false;\n }\n this.logger.log(() => `going to fill the buffer with ${items.length} item(s)`);\n return true;\n }\n\n insertInBuffer(predicate?: ItemsPredicate, before?: number, after?: number): number {\n const index = Number.isInteger(before) ? before : (Number.isInteger(after) ? after : NaN);\n const found = this.context.items.find(item =>\n (predicate && predicate(item.get())) ||\n (Number.isInteger(index) && index === item.$index)\n );\n if (!found) {\n this.logger.log('no items to insert in buffer; empty predicate\\'s result');\n return NaN;\n }\n return found.$index;\n }\n\n insertVirtual(items: Data[], index: number, direction: Direction): boolean {\n if (!items.length) {\n this.logger.log('no items to insert virtually; empty list');\n return false;\n }\n const { firstIndex, lastIndex, finiteAbsMinIndex, finiteAbsMaxIndex } = this.context;\n if (index < finiteAbsMinIndex || index > finiteAbsMaxIndex) {\n this.logger.log(() =>\n 'no items to insert virtually; ' +\n `selected index (${index}) does not match virtual area [${finiteAbsMinIndex}..${finiteAbsMaxIndex}]`\n );\n return false;\n }\n const before = direction === Direction.backward;\n if (!(index < firstIndex + (before ? 1 : 0) || index > lastIndex - (before ? 0 : 1))) {\n this.logger.log(() =>\n `no items to insert virtually; selected index (${index}) belongs Buffer [${firstIndex}..${lastIndex}]`\n );\n return false;\n }\n this.logger.log(() => `going to insert ${items.length} item(s) virtually`);\n return true;\n }\n\n}\n"]}
@@ -85,7 +85,7 @@ var DefaultSize = /** @class */ (function () {
85
85
  return _this.sizeMap.set(size, Math.max((_this.sizeMap.get(size) || 0) - 1, 0));
86
86
  });
87
87
  }
88
- var sorted = __spreadArray([], __read(this.sizeMap.entries())).sort(function (a, b) { return b[1] - a[1]; });
88
+ var sorted = __spreadArray([], __read(this.sizeMap.entries()), false).sort(function (a, b) { return b[1] - a[1]; });
89
89
  var mostFrequentCount = sorted[0][1];
90
90
  var listEqual = sorted.filter(function (i) { return i[1] === mostFrequentCount; });
91
91
  if (listEqual.length > 1 && listEqual.find(function (i) { return i[0] === oldFrequentSizeCount; })) {
@@ -1 +1 @@
1
- {"version":3,"file":"defaultSize.js","sourceRoot":"","sources":["../../../../src/classes/buffer/defaultSize.ts"],"names":[],"mappings":"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","sourcesContent":["import { SizeStrategy } from '../../inputs/index';\n\ninterface ItemSize {\n size: number;\n newSize?: number;\n}\n\nexport class SizesRecalculation {\n newItems: ItemSize[];\n oldItems: ItemSize[];\n removed: ItemSize[];\n\n constructor() {\n this.reset();\n }\n\n reset(): void {\n this.newItems = [];\n this.oldItems = [];\n this.removed = [];\n }\n}\n\nexport class DefaultSize {\n private readonly itemSize: number;\n private readonly sizeStrategy: SizeStrategy;\n private sizeMap: Map<number, number>;\n private recalculation: SizesRecalculation;\n\n private constantSize: number;\n private frequentSize: number;\n private averageSize: number;\n private averageSizeFloat: number;\n\n constructor(itemSize: number, sizeStrategy: SizeStrategy) {\n this.itemSize = itemSize;\n this.sizeStrategy = sizeStrategy;\n this.sizeMap = new Map<number, number>();\n this.recalculation = new SizesRecalculation();\n }\n\n reset(force: boolean): void {\n if (force) {\n this.constantSize = this.itemSize;\n this.frequentSize = this.itemSize;\n this.averageSize = this.itemSize;\n this.averageSizeFloat = this.itemSize;\n this.sizeMap.clear();\n }\n this.recalculation.reset();\n }\n\n get(): number {\n switch (this.sizeStrategy) {\n case SizeStrategy.Average:\n return this.averageSize;\n case SizeStrategy.Frequent:\n return this.frequentSize;\n default:\n return this.constantSize;\n }\n }\n\n private recalculateAverageSize(cacheSize: number): void {\n const { oldItems, newItems, removed } = this.recalculation;\n if (oldItems.length) {\n const oldSize = oldItems.reduce((acc, item) => acc + item.size, 0);\n const newSize = oldItems.reduce((acc, item) => acc + (item.newSize as number), 0);\n const averageSize = this.averageSizeFloat || 0;\n this.averageSizeFloat = averageSize - (oldSize - newSize) / (cacheSize - newItems.length);\n }\n if (newItems.length) {\n const newSize = newItems.reduce((acc, item) => acc + item.size, 0);\n const averageSize = this.averageSizeFloat || 0;\n this.averageSizeFloat = ((cacheSize - newItems.length) * averageSize + newSize) / cacheSize;\n }\n if (removed.length) {\n const removedSize = removed.reduce((acc, item) => acc + item.size, 0);\n const averageSize = this.averageSizeFloat || 0;\n this.averageSizeFloat = ((cacheSize + removed.length) * averageSize - removedSize) / cacheSize;\n }\n this.averageSize = Math.round(this.averageSizeFloat);\n }\n\n private recalculateFrequentSize(): void {\n const { oldItems, newItems, removed } = this.recalculation;\n const oldFrequentSizeCount = this.sizeMap.get(this.frequentSize);\n if (newItems.length) {\n newItems.forEach(({ size }) => this.sizeMap.set(size, (this.sizeMap.get(size) || 0) + 1));\n }\n if (oldItems.length) {\n oldItems.forEach(({ size }) => this.sizeMap.set(size, Math.max((this.sizeMap.get(size) || 0) - 1, 0)));\n oldItems.forEach(({ newSize: s }) => this.sizeMap.set(s as number, (this.sizeMap.get(s as number) || 0) + 1));\n }\n if (removed.length) {\n removed.forEach(({ size }) => this.sizeMap.set(size, Math.max((this.sizeMap.get(size) || 0) - 1, 0)));\n }\n const sorted = [...this.sizeMap.entries()].sort((a, b) => b[1] - a[1]);\n const mostFrequentCount = sorted[0][1];\n const listEqual = sorted.filter(i => i[1] === mostFrequentCount);\n if (listEqual.length > 1 && listEqual.find(i => i[0] === oldFrequentSizeCount)) {\n // if there are more than 1 most frequent sizes, but the old one is present\n return;\n }\n this.frequentSize = sorted[0][0];\n }\n\n recalculate(cacheSize: number): boolean {\n if (this.sizeStrategy === SizeStrategy.Constant) {\n return false;\n }\n const { oldItems, newItems, removed } = this.recalculation;\n if (!oldItems.length && !newItems.length && !removed.length) {\n return false;\n }\n const oldValue = this.get();\n if (!cacheSize) {\n this.reset(true);\n } else {\n if (this.sizeStrategy === SizeStrategy.Average) {\n this.recalculateAverageSize(cacheSize);\n } else {\n this.recalculateFrequentSize();\n }\n this.recalculation.reset();\n }\n return this.get() !== oldValue;\n }\n\n setExisted(oldSize: number, newSize: number): void {\n if (this.sizeStrategy !== SizeStrategy.Constant) {\n this.recalculation.oldItems.push({\n size: oldSize,\n newSize\n });\n }\n }\n\n setNew(size: number): void {\n if (this.sizeStrategy !== SizeStrategy.Constant) {\n this.recalculation.newItems.push({ size });\n } else {\n if (!this.constantSize) {\n this.constantSize = size;\n }\n }\n }\n\n setRemoved(size: number): void {\n if (this.sizeStrategy !== SizeStrategy.Constant) {\n this.recalculation.removed.push({ size });\n }\n }\n}\n"]}
1
+ {"version":3,"file":"defaultSize.js","sourceRoot":"","sources":["../../../../src/classes/buffer/defaultSize.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAOlD;IAKE;QACE,IAAI,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;IAED,kCAAK,GAAL;QACE,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;QACnB,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;QACnB,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;IACpB,CAAC;IACH,yBAAC;AAAD,CAAC,AAdD,IAcC;;AAED;IAWE,qBAAY,QAAgB,EAAE,YAA0B;QACtD,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;QACzC,IAAI,CAAC,aAAa,GAAG,IAAI,kBAAkB,EAAE,CAAC;IAChD,CAAC;IAED,2BAAK,GAAL,UAAM,KAAc;QAClB,IAAI,KAAK,EAAE;YACT,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC;YAClC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC;YAClC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC;YACjC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC;YACtC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;SACtB;QACD,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;IAC7B,CAAC;IAED,yBAAG,GAAH;QACE,QAAQ,IAAI,CAAC,YAAY,EAAE;YACzB,KAAK,YAAY,CAAC,OAAO;gBACvB,OAAO,IAAI,CAAC,WAAW,CAAC;YAC1B,KAAK,YAAY,CAAC,QAAQ;gBACxB,OAAO,IAAI,CAAC,YAAY,CAAC;YAC3B;gBACE,OAAO,IAAI,CAAC,YAAY,CAAC;SAC5B;IACH,CAAC;IAEO,4CAAsB,GAA9B,UAA+B,SAAiB;QACxC,IAAA,KAAkC,IAAI,CAAC,aAAa,EAAlD,QAAQ,cAAA,EAAE,QAAQ,cAAA,EAAE,OAAO,aAAuB,CAAC;QAC3D,IAAI,QAAQ,CAAC,MAAM,EAAE;YACnB,IAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,UAAC,GAAG,EAAE,IAAI,IAAK,OAAA,GAAG,GAAG,IAAI,CAAC,IAAI,EAAf,CAAe,EAAE,CAAC,CAAC,CAAC;YACnE,IAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,UAAC,GAAG,EAAE,IAAI,IAAK,OAAA,GAAG,GAAI,IAAI,CAAC,OAAkB,EAA9B,CAA8B,EAAE,CAAC,CAAC,CAAC;YAClF,IAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,IAAI,CAAC,CAAC;YAC/C,IAAI,CAAC,gBAAgB,GAAG,WAAW,GAAG,CAAC,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;SAC3F;QACD,IAAI,QAAQ,CAAC,MAAM,EAAE;YACnB,IAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,UAAC,GAAG,EAAE,IAAI,IAAK,OAAA,GAAG,GAAG,IAAI,CAAC,IAAI,EAAf,CAAe,EAAE,CAAC,CAAC,CAAC;YACnE,IAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,IAAI,CAAC,CAAC;YAC/C,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,WAAW,GAAG,OAAO,CAAC,GAAG,SAAS,CAAC;SAC7F;QACD,IAAI,OAAO,CAAC,MAAM,EAAE;YAClB,IAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,UAAC,GAAG,EAAE,IAAI,IAAK,OAAA,GAAG,GAAG,IAAI,CAAC,IAAI,EAAf,CAAe,EAAE,CAAC,CAAC,CAAC;YACtE,IAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,IAAI,CAAC,CAAC;YAC/C,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,WAAW,GAAG,WAAW,CAAC,GAAG,SAAS,CAAC;SAChG;QACD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IACvD,CAAC;IAEO,6CAAuB,GAA/B;QAAA,iBAqBC;QApBO,IAAA,KAAkC,IAAI,CAAC,aAAa,EAAlD,QAAQ,cAAA,EAAE,QAAQ,cAAA,EAAE,OAAO,aAAuB,CAAC;QAC3D,IAAM,oBAAoB,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACjE,IAAI,QAAQ,CAAC,MAAM,EAAE;YACnB,QAAQ,CAAC,OAAO,CAAC,UAAC,EAAQ;oBAAN,IAAI,UAAA;gBAAO,OAAA,KAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,KAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;YAAzD,CAAyD,CAAC,CAAC;SAC3F;QACD,IAAI,QAAQ,CAAC,MAAM,EAAE;YACnB,QAAQ,CAAC,OAAO,CAAC,UAAC,EAAQ;oBAAN,IAAI,UAAA;gBAAO,OAAA,KAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,KAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;YAAtE,CAAsE,CAAC,CAAC;YACvG,QAAQ,CAAC,OAAO,CAAC,UAAC,EAAc;oBAAH,CAAC,aAAA;gBAAO,OAAA,KAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAW,EAAE,CAAC,KAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAW,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;YAAvE,CAAuE,CAAC,CAAC;SAC/G;QACD,IAAI,OAAO,CAAC,MAAM,EAAE;YAClB,OAAO,CAAC,OAAO,CAAC,UAAC,EAAQ;oBAAN,IAAI,UAAA;gBAAO,OAAA,KAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,KAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;YAAtE,CAAsE,CAAC,CAAC;SACvG;QACD,IAAM,MAAM,GAAG,yBAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,UAAE,IAAI,CAAC,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAX,CAAW,CAAC,CAAC;QACvE,IAAM,iBAAiB,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACvC,IAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,CAAC,CAAC,KAAK,iBAAiB,EAA1B,CAA0B,CAAC,CAAC;QACjE,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,CAAC,CAAC,KAAK,oBAAoB,EAA7B,CAA6B,CAAC,EAAE;YAC9E,2EAA2E;YAC3E,OAAO;SACR;QACD,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACnC,CAAC;IAED,iCAAW,GAAX,UAAY,SAAiB;QAC3B,IAAI,IAAI,CAAC,YAAY,KAAK,YAAY,CAAC,QAAQ,EAAE;YAC/C,OAAO,KAAK,CAAC;SACd;QACK,IAAA,KAAkC,IAAI,CAAC,aAAa,EAAlD,QAAQ,cAAA,EAAE,QAAQ,cAAA,EAAE,OAAO,aAAuB,CAAC;QAC3D,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;YAC3D,OAAO,KAAK,CAAC;SACd;QACD,IAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC5B,IAAI,CAAC,SAAS,EAAE;YACd,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;SAClB;aAAM;YACL,IAAI,IAAI,CAAC,YAAY,KAAK,YAAY,CAAC,OAAO,EAAE;gBAC9C,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC;aACxC;iBAAM;gBACL,IAAI,CAAC,uBAAuB,EAAE,CAAC;aAChC;YACD,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;SAC5B;QACD,OAAO,IAAI,CAAC,GAAG,EAAE,KAAK,QAAQ,CAAC;IACjC,CAAC;IAED,gCAAU,GAAV,UAAW,OAAe,EAAE,OAAe;QACzC,IAAI,IAAI,CAAC,YAAY,KAAK,YAAY,CAAC,QAAQ,EAAE;YAC/C,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC;gBAC/B,IAAI,EAAE,OAAO;gBACb,OAAO,SAAA;aACR,CAAC,CAAC;SACJ;IACH,CAAC;IAED,4BAAM,GAAN,UAAO,IAAY;QACjB,IAAI,IAAI,CAAC,YAAY,KAAK,YAAY,CAAC,QAAQ,EAAE;YAC/C,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,MAAA,EAAE,CAAC,CAAC;SAC5C;aAAM;YACL,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;gBACtB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;aAC1B;SACF;IACH,CAAC;IAED,gCAAU,GAAV,UAAW,IAAY;QACrB,IAAI,IAAI,CAAC,YAAY,KAAK,YAAY,CAAC,QAAQ,EAAE;YAC/C,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,MAAA,EAAE,CAAC,CAAC;SAC3C;IACH,CAAC;IACH,kBAAC;AAAD,CAAC,AAlID,IAkIC","sourcesContent":["import { SizeStrategy } from '../../inputs/index';\n\ninterface ItemSize {\n size: number;\n newSize?: number;\n}\n\nexport class SizesRecalculation {\n newItems: ItemSize[];\n oldItems: ItemSize[];\n removed: ItemSize[];\n\n constructor() {\n this.reset();\n }\n\n reset(): void {\n this.newItems = [];\n this.oldItems = [];\n this.removed = [];\n }\n}\n\nexport class DefaultSize {\n private readonly itemSize: number;\n private readonly sizeStrategy: SizeStrategy;\n private sizeMap: Map<number, number>;\n private recalculation: SizesRecalculation;\n\n private constantSize: number;\n private frequentSize: number;\n private averageSize: number;\n private averageSizeFloat: number;\n\n constructor(itemSize: number, sizeStrategy: SizeStrategy) {\n this.itemSize = itemSize;\n this.sizeStrategy = sizeStrategy;\n this.sizeMap = new Map<number, number>();\n this.recalculation = new SizesRecalculation();\n }\n\n reset(force: boolean): void {\n if (force) {\n this.constantSize = this.itemSize;\n this.frequentSize = this.itemSize;\n this.averageSize = this.itemSize;\n this.averageSizeFloat = this.itemSize;\n this.sizeMap.clear();\n }\n this.recalculation.reset();\n }\n\n get(): number {\n switch (this.sizeStrategy) {\n case SizeStrategy.Average:\n return this.averageSize;\n case SizeStrategy.Frequent:\n return this.frequentSize;\n default:\n return this.constantSize;\n }\n }\n\n private recalculateAverageSize(cacheSize: number): void {\n const { oldItems, newItems, removed } = this.recalculation;\n if (oldItems.length) {\n const oldSize = oldItems.reduce((acc, item) => acc + item.size, 0);\n const newSize = oldItems.reduce((acc, item) => acc + (item.newSize as number), 0);\n const averageSize = this.averageSizeFloat || 0;\n this.averageSizeFloat = averageSize - (oldSize - newSize) / (cacheSize - newItems.length);\n }\n if (newItems.length) {\n const newSize = newItems.reduce((acc, item) => acc + item.size, 0);\n const averageSize = this.averageSizeFloat || 0;\n this.averageSizeFloat = ((cacheSize - newItems.length) * averageSize + newSize) / cacheSize;\n }\n if (removed.length) {\n const removedSize = removed.reduce((acc, item) => acc + item.size, 0);\n const averageSize = this.averageSizeFloat || 0;\n this.averageSizeFloat = ((cacheSize + removed.length) * averageSize - removedSize) / cacheSize;\n }\n this.averageSize = Math.round(this.averageSizeFloat);\n }\n\n private recalculateFrequentSize(): void {\n const { oldItems, newItems, removed } = this.recalculation;\n const oldFrequentSizeCount = this.sizeMap.get(this.frequentSize);\n if (newItems.length) {\n newItems.forEach(({ size }) => this.sizeMap.set(size, (this.sizeMap.get(size) || 0) + 1));\n }\n if (oldItems.length) {\n oldItems.forEach(({ size }) => this.sizeMap.set(size, Math.max((this.sizeMap.get(size) || 0) - 1, 0)));\n oldItems.forEach(({ newSize: s }) => this.sizeMap.set(s as number, (this.sizeMap.get(s as number) || 0) + 1));\n }\n if (removed.length) {\n removed.forEach(({ size }) => this.sizeMap.set(size, Math.max((this.sizeMap.get(size) || 0) - 1, 0)));\n }\n const sorted = [...this.sizeMap.entries()].sort((a, b) => b[1] - a[1]);\n const mostFrequentCount = sorted[0][1];\n const listEqual = sorted.filter(i => i[1] === mostFrequentCount);\n if (listEqual.length > 1 && listEqual.find(i => i[0] === oldFrequentSizeCount)) {\n // if there are more than 1 most frequent sizes, but the old one is present\n return;\n }\n this.frequentSize = sorted[0][0];\n }\n\n recalculate(cacheSize: number): boolean {\n if (this.sizeStrategy === SizeStrategy.Constant) {\n return false;\n }\n const { oldItems, newItems, removed } = this.recalculation;\n if (!oldItems.length && !newItems.length && !removed.length) {\n return false;\n }\n const oldValue = this.get();\n if (!cacheSize) {\n this.reset(true);\n } else {\n if (this.sizeStrategy === SizeStrategy.Average) {\n this.recalculateAverageSize(cacheSize);\n } else {\n this.recalculateFrequentSize();\n }\n this.recalculation.reset();\n }\n return this.get() !== oldValue;\n }\n\n setExisted(oldSize: number, newSize: number): void {\n if (this.sizeStrategy !== SizeStrategy.Constant) {\n this.recalculation.oldItems.push({\n size: oldSize,\n newSize\n });\n }\n }\n\n setNew(size: number): void {\n if (this.sizeStrategy !== SizeStrategy.Constant) {\n this.recalculation.newItems.push({ size });\n } else {\n if (!this.constantSize) {\n this.constantSize = size;\n }\n }\n }\n\n setRemoved(size: number): void {\n if (this.sizeStrategy !== SizeStrategy.Constant) {\n this.recalculation.removed.push({ size });\n }\n }\n}\n"]}
@@ -181,13 +181,13 @@ var Buffer = /** @class */ (function () {
181
181
  };
182
182
  Buffer.prototype.setItems = function (items) {
183
183
  if (!this.items.length) {
184
- this.items = __spreadArray([], __read(items));
184
+ this.items = __spreadArray([], __read(items), false);
185
185
  }
186
186
  else if (this.items[0].$index > items[items.length - 1].$index) {
187
- this.items = __spreadArray(__spreadArray([], __read(items)), __read(this.items));
187
+ this.items = __spreadArray(__spreadArray([], __read(items), false), __read(this.items), false);
188
188
  }
189
189
  else if (items[0].$index > this.items[this.items.length - 1].$index) {
190
- this.items = __spreadArray(__spreadArray([], __read(this.items)), __read(items));
190
+ this.items = __spreadArray(__spreadArray([], __read(this.items), false), __read(items), false);
191
191
  }
192
192
  else {
193
193
  return false;
@@ -218,22 +218,6 @@ var Buffer = /** @class */ (function () {
218
218
  this.startIndex = this.absMinIndex;
219
219
  }
220
220
  };
221
- Buffer.prototype.appendVirtually = function (count, fixRight) {
222
- if (fixRight) {
223
- this.items.forEach(function (item) { return item.updateIndex(item.$index - count); });
224
- this.cache.shiftIndexes(-count);
225
- this.items = __spreadArray([], __read(this.items));
226
- }
227
- this.shiftExtremum(count, fixRight);
228
- };
229
- Buffer.prototype.prependVirtually = function (count, fixRight) {
230
- if (!fixRight) {
231
- this.items.forEach(function (item) { return item.updateIndex(item.$index + count); });
232
- this.cache.shiftIndexes(count);
233
- this.items = __spreadArray([], __read(this.items));
234
- }
235
- this.shiftExtremum(count, fixRight);
236
- };
237
221
  Buffer.prototype.insertVirtually = function (items, index, direction, fixRight) {
238
222
  if (!this.checkCall.insertVirtual(items, index, direction)) {
239
223
  return false;
@@ -248,7 +232,7 @@ var Buffer = /** @class */ (function () {
248
232
  if (shift) {
249
233
  this.items.forEach(function (item) { return item.updateIndex(item.$index + shift); });
250
234
  this.cache.insertItems(items, index, direction, fixRight);
251
- this.items = __spreadArray([], __read(this.items));
235
+ this.items = __spreadArray([], __read(this.items), false);
252
236
  }
253
237
  this.shiftExtremum(items.length, fixRight);
254
238
  return true;
@@ -270,7 +254,7 @@ var Buffer = /** @class */ (function () {
270
254
  }
271
255
  this.shiftExtremum(-indexes.length, fixRight);
272
256
  if (shifted) {
273
- this.items = __spreadArray([], __read(this.items));
257
+ this.items = __spreadArray([], __read(this.items), false);
274
258
  }
275
259
  this.cache.removeItems(indexes, fixRight);
276
260
  };
@@ -332,7 +316,7 @@ var Buffer = /** @class */ (function () {
332
316
  }
333
317
  var toRemove_1 = true;
334
318
  var newItems = [];
335
- (fixRight ? __spreadArray([], __read(result)).reverse() : result).forEach(function (data, i) {
319
+ (fixRight ? __spreadArray([], __read(result), false).reverse() : result).forEach(function (data, i) {
336
320
  var newItem;
337
321
  if (item.data === data) {
338
322
  if (indexToTrack === item.$index) {
@@ -349,7 +333,7 @@ var Buffer = /** @class */ (function () {
349
333
  updateArray.call(newItems, newItem);
350
334
  });
351
335
  item.toRemove = toRemove_1;
352
- updateArray.call.apply(updateArray, __spreadArray([items], __read(newItems)));
336
+ updateArray.call.apply(updateArray, __spreadArray([items], __read(newItems), false));
353
337
  index += diff * result.length;
354
338
  if (result.length > 1) {
355
339
  this_2.shiftExtremum(result.length - 1, fixRight);