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":"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"]}
@@ -166,22 +166,6 @@ export class Buffer {
166
166
  this.startIndex = this.absMinIndex;
167
167
  }
168
168
  }
169
- appendVirtually(count, fixRight) {
170
- if (fixRight) {
171
- this.items.forEach(item => item.updateIndex(item.$index - count));
172
- this.cache.shiftIndexes(-count);
173
- this.items = [...this.items];
174
- }
175
- this.shiftExtremum(count, fixRight);
176
- }
177
- prependVirtually(count, fixRight) {
178
- if (!fixRight) {
179
- this.items.forEach(item => item.updateIndex(item.$index + count));
180
- this.cache.shiftIndexes(count);
181
- this.items = [...this.items];
182
- }
183
- this.shiftExtremum(count, fixRight);
184
- }
185
169
  insertVirtually(items, index, direction, fixRight) {
186
170
  if (!this.checkCall.insertVirtual(items, index, direction)) {
187
171
  return false;
@@ -1 +1 @@
1
- {"version":3,"file":"buffer.js","sourceRoot":"","sources":["../../../src/classes/buffer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAIrD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAG5C,MAAM,OAAO,MAAM;IAmBjB,YAAY,QAAwB,EAAE,aAAkC,EAAE,MAAc;QAjBhF,WAAM,GAAiB,EAAE,CAAC;QAkBhC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,WAAW,GAAG,aAAa,CAAC;QACjC,IAAI,CAAC,GAAG,GAAG,IAAI,QAAQ,CAAU,KAAK,CAAC,CAAC;QACxC,IAAI,CAAC,GAAG,GAAG,IAAI,QAAQ,CAAU,KAAK,CAAC,CAAC;QACxC,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAO,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC/C,IAAI,CAAC,SAAS,GAAG,IAAI,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACnD,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC,UAAU,CAAC;QAC1C,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,QAAQ,CAAC;QACtC,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,QAAQ,CAAC;QACtC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACnB,CAAC;IAED,OAAO;QACL,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QACnB,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QACnB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QAC5C,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,KAAc,EAAE,UAAmB;QACvC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QACxC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QAChB,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACxB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC;QACrC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC;QACrC,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;QACtC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACpB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACpB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;IACxB,CAAC;IAED,oBAAoB,CAAC,aAAuB;QAC1C,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC;QAC9B,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC;QAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC;QAClC,IAAI,KAAK,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;QAClC,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;YACvB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,+CAA+C,KAAK,GAAG,CAAC,CAAC;YAC/E,KAAK,GAAG,KAAK,CAAC;SACf;QACD,IAAI,KAAK,GAAG,GAAG,EAAE;YACf,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,4CAA4C,GAAG,aAAa,KAAK,MAAM,GAAG,EAAE,CAAC,CAAC;YACpG,KAAK,GAAG,GAAG,CAAC;SACb;QACD,IAAI,KAAK,GAAG,GAAG,EAAE;YACf,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,4CAA4C,GAAG,aAAa,KAAK,MAAM,GAAG,EAAE,CAAC,CAAC;YACpG,KAAK,GAAG,GAAG,CAAC;SACb;QACD,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;IAC1B,CAAC;IAED,IAAI,KAAK,CAAC,KAAmB;QAC3B,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QACxB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAClB,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChB,IAAI,CAAC,QAAQ,EAAE,CAAC;SACjB;IACH,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,IAAI,WAAW,CAAC,KAAa;QAC3B,IAAI,IAAI,CAAC,YAAY,KAAK,KAAK,EAAE;YAC/B,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC;SACjH;QACD,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAClB,IAAI,CAAC,QAAQ,EAAE,CAAC;SACjB;IACH,CAAC;IAED,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED,IAAI,WAAW,CAAC,KAAa;QAC3B,IAAI,IAAI,CAAC,YAAY,KAAK,KAAK,EAAE;YAC/B,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC;SACjH;QACD,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAClB,IAAI,CAAC,QAAQ,EAAE,CAAC;SACjB;IACH,CAAC;IAED,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAEO,QAAQ;QACd,mFAAmF;QACnF,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM;YAC3B,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,WAAW,CAAC;YAC7C,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC/B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACpB,CAAC;IAEO,QAAQ;QACd,mFAAmF;QACnF,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM;YAC3B,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,WAAW,CAAC;YACjE,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC/B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACpB,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;IAC5B,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;IACzB,CAAC;IAED,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC;IACrC,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC;IAC/E,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC;IAC/E,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC;IACxD,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC;IAC5E,CAAC;IAED,IAAI,iBAAiB;QACnB,OAAO,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;IACvE,CAAC;IAED,IAAI,iBAAiB;QACnB,OAAO,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;IACvE,CAAC;IAED,GAAG,CAAC,MAAc;QAChB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;IACzD,CAAC;IAED,QAAQ,CAAC,KAAmB;QAC1B,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;YACtB,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;SACzB;aAAM,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE;YAChE,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;SACxC;aAAM,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE;YACrE,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,KAAK,CAAC,CAAC;SACxC;aAAM;YACL,OAAO,KAAK,CAAC;SACd;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI;QACF,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC;IAC9D,CAAC;IAED,gBAAgB,CAAC,SAA0B,EAAE,MAAe,EAAE,KAAc;QAC1E,OAAO,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IACjE,CAAC;IAEO,aAAa,CAAC,MAAc,EAAE,QAAiB;QACrD,IAAI,CAAC,QAAQ,EAAE;YACb,IAAI,CAAC,WAAW,IAAI,MAAM,CAAC;SAC5B;aAAM;YACL,IAAI,CAAC,WAAW,IAAI,MAAM,CAAC;YAC3B,IAAI,CAAC,UAAU,IAAI,MAAM,CAAC;SAC3B;QACD,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE;YACtC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC;SACpC;aAAM,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE;YAC7C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC;SACpC;IACH,CAAC;IAED,eAAe,CAAC,KAAa,EAAE,QAAiB;QAC9C,IAAI,QAAQ,EAAE;YACZ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC;YAClE,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,CAAC;YAChC,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;SAC9B;QACD,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACtC,CAAC;IAED,gBAAgB,CAAC,KAAa,EAAE,QAAiB;QAC/C,IAAI,CAAC,QAAQ,EAAE;YACb,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC;YAClE,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;YAC/B,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;SAC9B;QACD,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACtC,CAAC;IAED,eAAe,CAAC,KAAa,EAAE,KAAa,EAAE,SAAoB,EAAE,QAAiB;QACnF,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,CAAC,EAAE;YAC1D,OAAO,KAAK,CAAC;SACd;QACD,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,IAAI,KAAK,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,QAAQ,EAAE;YACzC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC;SACtB;aAAM,IAAI,KAAK,IAAI,IAAI,CAAC,SAAS,IAAI,QAAQ,EAAE;YAC9C,KAAK,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC;SACvB;QACD,IAAI,KAAK,EAAE;YACT,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC;YAClE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;YAC1D,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;SAC9B;QACD,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAC3C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,eAAe,CAAC,OAAiB,EAAE,QAAiB;QAClD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;QACjC,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,KACE,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EACjC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,EAC9B,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EACpB;YACA,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC3B,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,QAAQ;gBACzD,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC/B,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACjC,EAAE,CAAC,CAAC,CAAC;YACN,OAAO,GAAG,OAAO,IAAI,CAAC,CAAC,IAAI,CAAC;YAC5B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;SACtC;QACD,IAAI,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAC9C,IAAI,OAAO,EAAE;YACX,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;SAC9B;QACD,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC5C,CAAC;IAED,SAAS,CACP,KAAa,EAAE,WAA+B,EAAE,UAA8B,EAAE,QAAiB,EACjG,SAAoD;QAEpD,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,WAAW,EAAE,UAAU,CAAC,EAAE;YAC7D,OAAO,KAAK,CAAC;SACd;QACD,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QAC7C,MAAM,KAAK,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAW,CAAC;QAC5D,MAAM,KAAK,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3D,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CACjC,SAAS,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,EAAE,IAAI,CAAC,CACvD,CAAC;QACF,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QACzC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;QACrD,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,WAAW,EAAE;YACvC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC;SACpC;aAAM,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE;YAC7C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC;SACpC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,WAAW,CACT,SAA8B,EAC9B,SAAoD,EACpD,YAAoB,EACpB,QAAiB;QAEjB,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;YAC/C,OAAO,EAAE,YAAY,EAAE,GAAG,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;SAC5C;QACD,IAAI,YAAY,GAAG,YAAY,CAAC;QAChC,IAAI,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC;QACxD,MAAM,KAAK,GAAiB,EAAE,CAAC;QAC/B,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;QAC5B,MAAM,SAAS,GAAG,IAAI,GAAG,EAAgB,CAAC,CAAC,oCAAoC;QAC/E,MAAM,WAAW,GAAG,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QAEnE,KAAK,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,IAAI,IAAI,EAAE;YAC5E,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC3B,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YACjC,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;YAE/B,wDAAwD;YACxD,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;gBACxD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;gBACrB,YAAY,IAAI,IAAI,CAAC,MAAM,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACvF,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;gBACjC,SAAS;aACV;YAED,uDAAuD;YACvD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;gBAC1B,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;gBACxB,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;gBAC9B,KAAK,IAAI,IAAI,CAAC;gBACd,SAAS;aACV;YAED,2DAA2D;YAC3D,IAAI,IAAI,CAAC,MAAM,GAAG,YAAY,EAAE;gBAC9B,YAAY,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;aAClD;iBAAM,IAAI,IAAI,CAAC,MAAM,GAAG,YAAY,EAAE;gBACrC,YAAY,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;aAClD;YACD,IAAI,QAAQ,GAAG,IAAI,CAAC;YACpB,MAAM,QAAQ,GAAiB,EAAE,CAAC;YAClC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;gBAC9D,IAAI,OAAmB,CAAC;gBACxB,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE;oBACtB,IAAI,YAAY,KAAK,IAAI,CAAC,MAAM,EAAE;wBAChC,YAAY,GAAG,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC;qBACjC;oBACD,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;oBACnC,OAAO,GAAG,IAAI,CAAC;oBACf,QAAQ,GAAG,KAAK,CAAC,CAAC,cAAc;iBACjC;qBAAM;oBACL,OAAO,GAAG,SAAS,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,EAAE,IAAI,CAAC,CAAC;oBAC5C,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;iBACzB;gBACD,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACtC,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;YACzB,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,QAAQ,CAAC,CAAC;YACrC,KAAK,IAAI,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC;YAC9B,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;gBACrB,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC;aACjD;SACF;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC1D,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;aACtC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;aACnE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC;QACvC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,WAAW,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;QAEtD,IAAI,IAAI,CAAC,iBAAiB,KAAK,IAAI,CAAC,iBAAiB,EAAE;YACrD,YAAY,GAAG,GAAG,CAAC;SACpB;aAAM,IAAI,YAAY,GAAG,IAAI,CAAC,iBAAiB,EAAE;YAChD,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC;SACvC;aAAM,IAAI,YAAY,GAAG,IAAI,CAAC,iBAAiB,EAAE;YAChD,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC;SACvC;QACD,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAC;IACpC,CAAC;IAED,SAAS,CAAC,IAAgB;QACxB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC;IAED,wBAAwB;QACtB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;QACjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;YAC/B,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE;gBAC5B,OAAO,CAAC,CAAC;aACV;SACF;QACD,OAAO,CAAC,CAAC,CAAC;IACZ,CAAC;IAED,uBAAuB;QACrB,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;YAC/C,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE;gBAC5B,OAAO,CAAC,CAAC;aACV;SACF;QACD,OAAO,CAAC,CAAC,CAAC;IACZ,CAAC;IAED,mBAAmB;QACjB,MAAM,KAAK,GAAG,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAC9C,IAAI,KAAK,IAAI,CAAC,EAAE;YACd,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;SAC1B;IACH,CAAC;IAED,kBAAkB;QAChB,MAAM,KAAK,GAAG,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAC7C,IAAI,KAAK,IAAI,CAAC,EAAE;YACd,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;SAC1B;IACH,CAAC;IAED,kBAAkB,CAAC,SAAoB,EAAE,QAAkB;QACzD,OAAO,SAAS,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;YACzE,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC;IAC3D,CAAC;IAED,oBAAoB;QAClB,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAW,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACrF,CAAC;IAED,cAAc,CAAC,KAAa;QAC1B,OAAO,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IAC1C,CAAC;IAED,gBAAgB;QACd,OAAO,IAAI,CAAC,KAAK,CAAC,sBAAsB,EAAE,CAAC;IAC7C,CAAC;CAEF","sourcesContent":["import { Cache } from './buffer/cache';\nimport { CheckBufferCall } from './buffer/checkCall';\nimport { Item } from './item';\nimport { Settings } from './settings';\nimport { Logger } from './logger';\nimport { Reactive } from './reactive';\nimport { Direction } from '../inputs/index';\nimport { OnDataChanged, BufferUpdater, ItemsPredicate } from '../interfaces/index';\n\nexport class Buffer<Data> {\n\n private _items: Item<Data>[] = [];\n private _absMinIndex: number;\n private _absMaxIndex: number;\n bof: Reactive<boolean>;\n eof: Reactive<boolean>;\n\n changeItems: OnDataChanged<Data>;\n minIndexUser: number;\n maxIndexUser: number;\n startIndexUser: number;\n startIndex: number;\n\n private pristine: boolean;\n private cache: Cache<Data>;\n private checkCall: CheckBufferCall<Data>;\n private readonly logger: Logger;\n\n constructor(settings: Settings<Data>, onDataChanged: OnDataChanged<Data>, logger: Logger) {\n this.logger = logger;\n this.changeItems = onDataChanged;\n this.bof = new Reactive<boolean>(false);\n this.eof = new Reactive<boolean>(false);\n this.cache = new Cache<Data>(settings, logger);\n this.checkCall = new CheckBufferCall(this, logger);\n this.startIndexUser = settings.startIndex;\n this.minIndexUser = settings.minIndex;\n this.maxIndexUser = settings.maxIndex;\n this.reset(true);\n }\n\n dispose(): void {\n this.bof.dispose();\n this.eof.dispose();\n this._items.forEach(item => item.dispose());\n this._items = [];\n }\n\n reset(force: boolean, startIndex?: number): void {\n this.items.forEach(item => item.hide());\n this.pristine = true;\n this.items = [];\n this.cache.reset(force);\n this.absMinIndex = this.minIndexUser;\n this.absMaxIndex = this.maxIndexUser;\n this.setCurrentStartIndex(startIndex);\n this.bof.set(false);\n this.eof.set(false);\n this.pristine = false;\n }\n\n setCurrentStartIndex(newStartIndex?: unknown): void {\n const min = this.minIndexUser;\n const max = this.maxIndexUser;\n const start = this.startIndexUser;\n let index = Number(newStartIndex);\n if (Number.isNaN(index)) {\n this.logger.log(() => `fallback startIndex to settings.startIndex (${start})`);\n index = start;\n }\n if (index < min) {\n this.logger.log(() => `setting startIndex to settings.minIndex (${min}) because ${index} < ${min}`);\n index = min;\n }\n if (index > max) {\n this.logger.log(() => `setting startIndex to settings.maxIndex (${max}) because ${index} > ${max}`);\n index = max;\n }\n this.startIndex = index;\n }\n\n set items(items: Item<Data>[]) {\n this._items = items;\n this.changeItems(items);\n if (!this.pristine) {\n this.checkBOF();\n this.checkEOF();\n }\n }\n\n get items(): Item<Data>[] {\n return this._items;\n }\n\n set absMinIndex(value: number) {\n if (this._absMinIndex !== value) {\n this._absMinIndex = Number.isFinite(this._absMaxIndex) && value > this._absMaxIndex ? this._absMaxIndex : value;\n }\n if (!this.pristine) {\n this.checkBOF();\n }\n }\n\n get absMinIndex(): number {\n return this._absMinIndex;\n }\n\n set absMaxIndex(value: number) {\n if (this._absMaxIndex !== value) {\n this._absMaxIndex = Number.isFinite(this._absMinIndex) && value < this._absMinIndex ? this._absMinIndex : value;\n }\n if (!this.pristine) {\n this.checkEOF();\n }\n }\n\n get absMaxIndex(): number {\n return this._absMaxIndex;\n }\n\n private checkBOF() {\n // since bof has no setter, need to call checkBOF() on items and absMinIndex change\n const bof = this.items.length\n ? (this.items[0].$index === this.absMinIndex)\n : isFinite(this.absMinIndex);\n this.bof.set(bof);\n }\n\n private checkEOF() {\n // since eof has no setter, need to call checkEOF() on items and absMaxIndex change\n const eof = this.items.length\n ? (this.items[this.items.length - 1].$index === this.absMaxIndex)\n : isFinite(this.absMaxIndex);\n this.eof.set(eof);\n }\n\n get size(): number {\n return this._items.length;\n }\n\n get cacheSize(): number {\n return this.cache.size;\n }\n\n get defaultSize(): number {\n return this.cache.getDefaultSize();\n }\n\n get minIndex(): number {\n return isFinite(this.cache.minIndex) ? this.cache.minIndex : this.startIndex;\n }\n\n get maxIndex(): number {\n return isFinite(this.cache.maxIndex) ? this.cache.maxIndex : this.startIndex;\n }\n\n get firstIndex(): number {\n return this.items.length ? this.items[0].$index : NaN;\n }\n\n get lastIndex(): number {\n return this.items.length ? this.items[this.items.length - 1].$index : NaN;\n }\n\n get finiteAbsMinIndex(): number {\n return isFinite(this.absMinIndex) ? this.absMinIndex : this.minIndex;\n }\n\n get finiteAbsMaxIndex(): number {\n return isFinite(this.absMaxIndex) ? this.absMaxIndex : this.maxIndex;\n }\n\n get($index: number): Item<Data> | undefined {\n return this.items.find(item => item.$index === $index);\n }\n\n setItems(items: Item<Data>[]): boolean {\n if (!this.items.length) {\n this.items = [...items];\n } else if (this.items[0].$index > items[items.length - 1].$index) {\n this.items = [...items, ...this.items];\n } else if (items[0].$index > this.items[this.items.length - 1].$index) {\n this.items = [...this.items, ...items];\n } else {\n return false;\n }\n return true;\n }\n\n clip(): void {\n this.items = this.items.filter(({ toRemove }) => !toRemove);\n }\n\n getIndexToInsert(predicate?: ItemsPredicate, before?: number, after?: number): number {\n return this.checkCall.insertInBuffer(predicate, before, after);\n }\n\n private shiftExtremum(amount: number, fixRight: boolean) {\n if (!fixRight) {\n this.absMaxIndex += amount;\n } else {\n this.absMinIndex -= amount;\n this.startIndex -= amount;\n }\n if (this.startIndex > this.absMaxIndex) {\n this.startIndex = this.absMaxIndex;\n } else if (this.startIndex < this.absMinIndex) {\n this.startIndex = this.absMinIndex;\n }\n }\n\n appendVirtually(count: number, fixRight: boolean): void {\n if (fixRight) {\n this.items.forEach(item => item.updateIndex(item.$index - count));\n this.cache.shiftIndexes(-count);\n this.items = [...this.items];\n }\n this.shiftExtremum(count, fixRight);\n }\n\n prependVirtually(count: number, fixRight: boolean): void {\n if (!fixRight) {\n this.items.forEach(item => item.updateIndex(item.$index + count));\n this.cache.shiftIndexes(count);\n this.items = [...this.items];\n }\n this.shiftExtremum(count, fixRight);\n }\n\n insertVirtually(items: Data[], index: number, direction: Direction, fixRight: boolean): boolean {\n if (!this.checkCall.insertVirtual(items, index, direction)) {\n return false;\n }\n let shift = 0;\n if (index <= this.firstIndex && !fixRight) {\n shift = items.length;\n } else if (index >= this.lastIndex && fixRight) {\n shift = -items.length;\n }\n if (shift) {\n this.items.forEach(item => item.updateIndex(item.$index + shift));\n this.cache.insertItems(items, index, direction, fixRight);\n this.items = [...this.items];\n }\n this.shiftExtremum(items.length, fixRight);\n return true;\n }\n\n removeVirtually(indexes: number[], fixRight: boolean): void {\n const length = this.items.length;\n let shifted = false;\n for (\n let i = fixRight ? length - 1 : 0;\n fixRight ? i >= 0 : i < length;\n fixRight ? i-- : i++\n ) {\n const item = this.items[i];\n const diff = indexes.reduce((acc, index) => acc + (fixRight\n ? (item.$index < index ? 1 : 0)\n : (item.$index > index ? -1 : 0)\n ), 0);\n shifted = shifted || !!diff;\n item.updateIndex(item.$index + diff);\n }\n this.shiftExtremum(-indexes.length, fixRight);\n if (shifted) {\n this.items = [...this.items];\n }\n this.cache.removeItems(indexes, fixRight);\n }\n\n fillEmpty(\n items: Data[], beforeIndex: number | undefined, afterIndex: number | undefined, fixRight: boolean,\n generator: (index: number, data: Data) => Item<Data>,\n ): boolean {\n if (!this.checkCall.fillEmpty(items, beforeIndex, afterIndex)) {\n return false;\n }\n const before = Number.isInteger(beforeIndex);\n const index = (before ? beforeIndex : afterIndex) as number;\n const shift = (fixRight ? items.length : (before ? 1 : 0));\n this.items = items.map((data, i) =>\n generator(index + i + (!before ? 1 : 0) - shift, data)\n );\n this._absMinIndex = this.items[0].$index;\n this._absMaxIndex = this.items[this.size - 1].$index;\n if (this.startIndex <= this.absMinIndex) {\n this.startIndex = this.absMinIndex;\n } else if (this.startIndex > this.absMaxIndex) {\n this.startIndex = this.absMaxIndex;\n }\n return true;\n }\n\n updateItems(\n predicate: BufferUpdater<Data>,\n generator: (index: number, data: Data) => Item<Data>,\n indexToTrack: number,\n fixRight: boolean\n ): { trackedIndex: number, toRemove: Item<Data>[] } {\n if (!this.size || Number.isNaN(this.firstIndex)) {\n return { trackedIndex: NaN, toRemove: [] };\n }\n let trackedIndex = indexToTrack;\n let index = fixRight ? this.lastIndex : this.firstIndex;\n const items: Item<Data>[] = [];\n const diff = fixRight ? -1 : 1;\n const limit = this.size - 1;\n const beforeMap = new Map<number, Item>(); // need to persist original $indexes\n const updateArray = Array.prototype[fixRight ? 'unshift' : 'push'];\n\n for (let i = fixRight ? limit : 0; fixRight ? i >= 0 : i <= limit; i += diff) {\n const item = this.items[i];\n beforeMap.set(item.$index, item);\n const result = predicate(item);\n\n // if predicate result is falsy or empty array -> delete\n if (!result || (Array.isArray(result) && !result.length)) {\n item.toRemove = true;\n trackedIndex += item.$index >= indexToTrack ? (fixRight ? 1 : 0) : (fixRight ? 0 : -1);\n this.shiftExtremum(-1, fixRight);\n continue;\n }\n\n // if predicate result is truthy but not array -> leave\n if (!Array.isArray(result)) {\n item.updateIndex(index);\n updateArray.call(items, item);\n index += diff;\n continue;\n }\n\n // if predicate result is non-empty array -> insert/replace\n if (item.$index < indexToTrack) {\n trackedIndex += fixRight ? 0 : result.length - 1;\n } else if (item.$index > indexToTrack) {\n trackedIndex += fixRight ? 1 - result.length : 0;\n }\n let toRemove = true;\n const newItems: Item<Data>[] = [];\n (fixRight ? [...result].reverse() : result).forEach((data, i) => {\n let newItem: Item<Data>;\n if (item.data === data) {\n if (indexToTrack === item.$index) {\n trackedIndex = index + i * diff;\n }\n item.updateIndex(index + i * diff);\n newItem = item;\n toRemove = false; // insert case\n } else {\n newItem = generator(index + i * diff, data);\n newItem.toInsert = true;\n }\n updateArray.call(newItems, newItem);\n });\n item.toRemove = toRemove;\n updateArray.call(items, ...newItems);\n index += diff * result.length;\n if (result.length > 1) {\n this.shiftExtremum(result.length - 1, fixRight);\n }\n }\n\n const toRemove = this.items.filter(item => item.toRemove);\n const itemsBefore = Array.from(beforeMap)\n .map(([$index, { size, toRemove }]) => ({ $index, size, toRemove }))\n .sort((a, b) => a.$index - b.$index);\n this.items = items;\n this.cache.updateSubset(itemsBefore, items, fixRight);\n\n if (this.finiteAbsMinIndex === this.finiteAbsMaxIndex) {\n trackedIndex = NaN;\n } else if (trackedIndex > this.finiteAbsMaxIndex) {\n trackedIndex = this.finiteAbsMaxIndex;\n } else if (trackedIndex < this.finiteAbsMinIndex) {\n trackedIndex = this.finiteAbsMinIndex;\n }\n return { trackedIndex, toRemove };\n }\n\n cacheItem(item: Item<Data>): void {\n this.cache.add(item);\n }\n\n getFirstVisibleItemIndex(): number {\n const length = this.items.length;\n for (let i = 0; i < length; i++) {\n if (!this.items[i].invisible) {\n return i;\n }\n }\n return -1;\n }\n\n getLastVisibleItemIndex(): number {\n for (let i = this.items.length - 1; i >= 0; i--) {\n if (!this.items[i].invisible) {\n return i;\n }\n }\n return -1;\n }\n\n getFirstVisibleItem(): Item<Data> | undefined {\n const index = this.getFirstVisibleItemIndex();\n if (index >= 0) {\n return this.items[index];\n }\n }\n\n getLastVisibleItem(): Item<Data> | undefined {\n const index = this.getLastVisibleItemIndex();\n if (index >= 0) {\n return this.items[index];\n }\n }\n\n getEdgeVisibleItem(direction: Direction, opposite?: boolean): Item<Data> | undefined {\n return direction === (!opposite ? Direction.forward : Direction.backward) ?\n this.getLastVisibleItem() : this.getFirstVisibleItem();\n }\n\n getVisibleItemsCount(): number {\n return this.items.reduce((acc: number, item) => acc + (item.invisible ? 0 : 1), 0);\n }\n\n getSizeByIndex(index: number): number {\n return this.cache.getSizeByIndex(index);\n }\n\n checkDefaultSize(): boolean {\n return this.cache.recalculateDefaultSize();\n }\n\n}\n"]}
1
+ {"version":3,"file":"buffer.js","sourceRoot":"","sources":["../../../src/classes/buffer.ts"],"names":[],"mappings":"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","sourcesContent":["import { Cache } from './buffer/cache';\nimport { CheckBufferCall } from './buffer/checkCall';\nimport { Item } from './item';\nimport { Settings } from './settings';\nimport { Logger } from './logger';\nimport { Reactive } from './reactive';\nimport { Direction } from '../inputs/index';\nimport { OnDataChanged, BufferUpdater, ItemsPredicate } from '../interfaces/index';\n\nexport class Buffer<Data> {\n\n private _items: Item<Data>[] = [];\n private _absMinIndex: number;\n private _absMaxIndex: number;\n bof: Reactive<boolean>;\n eof: Reactive<boolean>;\n\n changeItems: OnDataChanged<Data>;\n minIndexUser: number;\n maxIndexUser: number;\n startIndexUser: number;\n startIndex: number;\n\n private pristine: boolean;\n private cache: Cache<Data>;\n private checkCall: CheckBufferCall<Data>;\n private readonly logger: Logger;\n\n constructor(settings: Settings<Data>, onDataChanged: OnDataChanged<Data>, logger: Logger) {\n this.logger = logger;\n this.changeItems = onDataChanged;\n this.bof = new Reactive<boolean>(false);\n this.eof = new Reactive<boolean>(false);\n this.cache = new Cache<Data>(settings, logger);\n this.checkCall = new CheckBufferCall(this, logger);\n this.startIndexUser = settings.startIndex;\n this.minIndexUser = settings.minIndex;\n this.maxIndexUser = settings.maxIndex;\n this.reset(true);\n }\n\n dispose(): void {\n this.bof.dispose();\n this.eof.dispose();\n this._items.forEach(item => item.dispose());\n this._items = [];\n }\n\n reset(force: boolean, startIndex?: number): void {\n this.items.forEach(item => item.hide());\n this.pristine = true;\n this.items = [];\n this.cache.reset(force);\n this.absMinIndex = this.minIndexUser;\n this.absMaxIndex = this.maxIndexUser;\n this.setCurrentStartIndex(startIndex);\n this.bof.set(false);\n this.eof.set(false);\n this.pristine = false;\n }\n\n setCurrentStartIndex(newStartIndex?: unknown): void {\n const min = this.minIndexUser;\n const max = this.maxIndexUser;\n const start = this.startIndexUser;\n let index = Number(newStartIndex);\n if (Number.isNaN(index)) {\n this.logger.log(() => `fallback startIndex to settings.startIndex (${start})`);\n index = start;\n }\n if (index < min) {\n this.logger.log(() => `setting startIndex to settings.minIndex (${min}) because ${index} < ${min}`);\n index = min;\n }\n if (index > max) {\n this.logger.log(() => `setting startIndex to settings.maxIndex (${max}) because ${index} > ${max}`);\n index = max;\n }\n this.startIndex = index;\n }\n\n set items(items: Item<Data>[]) {\n this._items = items;\n this.changeItems(items);\n if (!this.pristine) {\n this.checkBOF();\n this.checkEOF();\n }\n }\n\n get items(): Item<Data>[] {\n return this._items;\n }\n\n set absMinIndex(value: number) {\n if (this._absMinIndex !== value) {\n this._absMinIndex = Number.isFinite(this._absMaxIndex) && value > this._absMaxIndex ? this._absMaxIndex : value;\n }\n if (!this.pristine) {\n this.checkBOF();\n }\n }\n\n get absMinIndex(): number {\n return this._absMinIndex;\n }\n\n set absMaxIndex(value: number) {\n if (this._absMaxIndex !== value) {\n this._absMaxIndex = Number.isFinite(this._absMinIndex) && value < this._absMinIndex ? this._absMinIndex : value;\n }\n if (!this.pristine) {\n this.checkEOF();\n }\n }\n\n get absMaxIndex(): number {\n return this._absMaxIndex;\n }\n\n private checkBOF() {\n // since bof has no setter, need to call checkBOF() on items and absMinIndex change\n const bof = this.items.length\n ? (this.items[0].$index === this.absMinIndex)\n : isFinite(this.absMinIndex);\n this.bof.set(bof);\n }\n\n private checkEOF() {\n // since eof has no setter, need to call checkEOF() on items and absMaxIndex change\n const eof = this.items.length\n ? (this.items[this.items.length - 1].$index === this.absMaxIndex)\n : isFinite(this.absMaxIndex);\n this.eof.set(eof);\n }\n\n get size(): number {\n return this._items.length;\n }\n\n get cacheSize(): number {\n return this.cache.size;\n }\n\n get defaultSize(): number {\n return this.cache.getDefaultSize();\n }\n\n get minIndex(): number {\n return isFinite(this.cache.minIndex) ? this.cache.minIndex : this.startIndex;\n }\n\n get maxIndex(): number {\n return isFinite(this.cache.maxIndex) ? this.cache.maxIndex : this.startIndex;\n }\n\n get firstIndex(): number {\n return this.items.length ? this.items[0].$index : NaN;\n }\n\n get lastIndex(): number {\n return this.items.length ? this.items[this.items.length - 1].$index : NaN;\n }\n\n get finiteAbsMinIndex(): number {\n return isFinite(this.absMinIndex) ? this.absMinIndex : this.minIndex;\n }\n\n get finiteAbsMaxIndex(): number {\n return isFinite(this.absMaxIndex) ? this.absMaxIndex : this.maxIndex;\n }\n\n get($index: number): Item<Data> | undefined {\n return this.items.find(item => item.$index === $index);\n }\n\n setItems(items: Item<Data>[]): boolean {\n if (!this.items.length) {\n this.items = [...items];\n } else if (this.items[0].$index > items[items.length - 1].$index) {\n this.items = [...items, ...this.items];\n } else if (items[0].$index > this.items[this.items.length - 1].$index) {\n this.items = [...this.items, ...items];\n } else {\n return false;\n }\n return true;\n }\n\n clip(): void {\n this.items = this.items.filter(({ toRemove }) => !toRemove);\n }\n\n getIndexToInsert(predicate?: ItemsPredicate, before?: number, after?: number): number {\n return this.checkCall.insertInBuffer(predicate, before, after);\n }\n\n private shiftExtremum(amount: number, fixRight: boolean) {\n if (!fixRight) {\n this.absMaxIndex += amount;\n } else {\n this.absMinIndex -= amount;\n this.startIndex -= amount;\n }\n if (this.startIndex > this.absMaxIndex) {\n this.startIndex = this.absMaxIndex;\n } else if (this.startIndex < this.absMinIndex) {\n this.startIndex = this.absMinIndex;\n }\n }\n\n insertVirtually(items: Data[], index: number, direction: Direction, fixRight: boolean): boolean {\n if (!this.checkCall.insertVirtual(items, index, direction)) {\n return false;\n }\n let shift = 0;\n if (index <= this.firstIndex && !fixRight) {\n shift = items.length;\n } else if (index >= this.lastIndex && fixRight) {\n shift = -items.length;\n }\n if (shift) {\n this.items.forEach(item => item.updateIndex(item.$index + shift));\n this.cache.insertItems(items, index, direction, fixRight);\n this.items = [...this.items];\n }\n this.shiftExtremum(items.length, fixRight);\n return true;\n }\n\n removeVirtually(indexes: number[], fixRight: boolean): void {\n const length = this.items.length;\n let shifted = false;\n for (\n let i = fixRight ? length - 1 : 0;\n fixRight ? i >= 0 : i < length;\n fixRight ? i-- : i++\n ) {\n const item = this.items[i];\n const diff = indexes.reduce((acc, index) => acc + (fixRight\n ? (item.$index < index ? 1 : 0)\n : (item.$index > index ? -1 : 0)\n ), 0);\n shifted = shifted || !!diff;\n item.updateIndex(item.$index + diff);\n }\n this.shiftExtremum(-indexes.length, fixRight);\n if (shifted) {\n this.items = [...this.items];\n }\n this.cache.removeItems(indexes, fixRight);\n }\n\n fillEmpty(\n items: Data[], beforeIndex: number | undefined, afterIndex: number | undefined, fixRight: boolean,\n generator: (index: number, data: Data) => Item<Data>,\n ): boolean {\n if (!this.checkCall.fillEmpty(items, beforeIndex, afterIndex)) {\n return false;\n }\n const before = Number.isInteger(beforeIndex);\n const index = (before ? beforeIndex : afterIndex) as number;\n const shift = (fixRight ? items.length : (before ? 1 : 0));\n this.items = items.map((data, i) =>\n generator(index + i + (!before ? 1 : 0) - shift, data)\n );\n this._absMinIndex = this.items[0].$index;\n this._absMaxIndex = this.items[this.size - 1].$index;\n if (this.startIndex <= this.absMinIndex) {\n this.startIndex = this.absMinIndex;\n } else if (this.startIndex > this.absMaxIndex) {\n this.startIndex = this.absMaxIndex;\n }\n return true;\n }\n\n updateItems(\n predicate: BufferUpdater<Data>,\n generator: (index: number, data: Data) => Item<Data>,\n indexToTrack: number,\n fixRight: boolean\n ): { trackedIndex: number, toRemove: Item<Data>[] } {\n if (!this.size || Number.isNaN(this.firstIndex)) {\n return { trackedIndex: NaN, toRemove: [] };\n }\n let trackedIndex = indexToTrack;\n let index = fixRight ? this.lastIndex : this.firstIndex;\n const items: Item<Data>[] = [];\n const diff = fixRight ? -1 : 1;\n const limit = this.size - 1;\n const beforeMap = new Map<number, Item>(); // need to persist original $indexes\n const updateArray = Array.prototype[fixRight ? 'unshift' : 'push'];\n\n for (let i = fixRight ? limit : 0; fixRight ? i >= 0 : i <= limit; i += diff) {\n const item = this.items[i];\n beforeMap.set(item.$index, item);\n const result = predicate(item);\n\n // if predicate result is falsy or empty array -> delete\n if (!result || (Array.isArray(result) && !result.length)) {\n item.toRemove = true;\n trackedIndex += item.$index >= indexToTrack ? (fixRight ? 1 : 0) : (fixRight ? 0 : -1);\n this.shiftExtremum(-1, fixRight);\n continue;\n }\n\n // if predicate result is truthy but not array -> leave\n if (!Array.isArray(result)) {\n item.updateIndex(index);\n updateArray.call(items, item);\n index += diff;\n continue;\n }\n\n // if predicate result is non-empty array -> insert/replace\n if (item.$index < indexToTrack) {\n trackedIndex += fixRight ? 0 : result.length - 1;\n } else if (item.$index > indexToTrack) {\n trackedIndex += fixRight ? 1 - result.length : 0;\n }\n let toRemove = true;\n const newItems: Item<Data>[] = [];\n (fixRight ? [...result].reverse() : result).forEach((data, i) => {\n let newItem: Item<Data>;\n if (item.data === data) {\n if (indexToTrack === item.$index) {\n trackedIndex = index + i * diff;\n }\n item.updateIndex(index + i * diff);\n newItem = item;\n toRemove = false; // insert case\n } else {\n newItem = generator(index + i * diff, data);\n newItem.toInsert = true;\n }\n updateArray.call(newItems, newItem);\n });\n item.toRemove = toRemove;\n updateArray.call(items, ...newItems);\n index += diff * result.length;\n if (result.length > 1) {\n this.shiftExtremum(result.length - 1, fixRight);\n }\n }\n\n const toRemove = this.items.filter(item => item.toRemove);\n const itemsBefore = Array.from(beforeMap)\n .map(([$index, { size, toRemove }]) => ({ $index, size, toRemove }))\n .sort((a, b) => a.$index - b.$index);\n this.items = items;\n this.cache.updateSubset(itemsBefore, items, fixRight);\n\n if (this.finiteAbsMinIndex === this.finiteAbsMaxIndex) {\n trackedIndex = NaN;\n } else if (trackedIndex > this.finiteAbsMaxIndex) {\n trackedIndex = this.finiteAbsMaxIndex;\n } else if (trackedIndex < this.finiteAbsMinIndex) {\n trackedIndex = this.finiteAbsMinIndex;\n }\n return { trackedIndex, toRemove };\n }\n\n cacheItem(item: Item<Data>): void {\n this.cache.add(item);\n }\n\n getFirstVisibleItemIndex(): number {\n const length = this.items.length;\n for (let i = 0; i < length; i++) {\n if (!this.items[i].invisible) {\n return i;\n }\n }\n return -1;\n }\n\n getLastVisibleItemIndex(): number {\n for (let i = this.items.length - 1; i >= 0; i--) {\n if (!this.items[i].invisible) {\n return i;\n }\n }\n return -1;\n }\n\n getFirstVisibleItem(): Item<Data> | undefined {\n const index = this.getFirstVisibleItemIndex();\n if (index >= 0) {\n return this.items[index];\n }\n }\n\n getLastVisibleItem(): Item<Data> | undefined {\n const index = this.getLastVisibleItemIndex();\n if (index >= 0) {\n return this.items[index];\n }\n }\n\n getEdgeVisibleItem(direction: Direction, opposite?: boolean): Item<Data> | undefined {\n return direction === (!opposite ? Direction.forward : Direction.backward) ?\n this.getLastVisibleItem() : this.getFirstVisibleItem();\n }\n\n getVisibleItemsCount(): number {\n return this.items.reduce((acc: number, item) => acc + (item.invisible ? 0 : 1), 0);\n }\n\n getSizeByIndex(index: number): number {\n return this.cache.getSizeByIndex(index);\n }\n\n checkDefaultSize(): boolean {\n return this.cache.recalculateDefaultSize();\n }\n\n}\n"]}
@@ -3,12 +3,50 @@ export class Routines {
3
3
  constructor(settings) {
4
4
  this.horizontal = settings.horizontal;
5
5
  this.window = settings.windowViewport;
6
+ this.viewport = settings.viewport;
6
7
  }
7
8
  checkElement(element) {
8
9
  if (!element) {
9
10
  throw new Error('HTML element is not defined');
10
11
  }
11
12
  }
13
+ getHostElement(element) {
14
+ if (this.window) {
15
+ return document.documentElement;
16
+ }
17
+ if (this.viewport) {
18
+ return this.viewport;
19
+ }
20
+ this.checkElement(element);
21
+ const parent = element.parentElement;
22
+ this.checkElement(parent);
23
+ return parent;
24
+ }
25
+ getScrollEventReceiver(element) {
26
+ if (this.window) {
27
+ return window;
28
+ }
29
+ return this.getHostElement(element);
30
+ }
31
+ setupScrollRestoration() {
32
+ if ('scrollRestoration' in history) {
33
+ history.scrollRestoration = 'manual';
34
+ }
35
+ }
36
+ dismissOverflowAnchor(element) {
37
+ this.checkElement(element);
38
+ element.style.overflowAnchor = 'none';
39
+ }
40
+ findElementBySelector(element, selector) {
41
+ this.checkElement(element);
42
+ return element.querySelector(selector);
43
+ }
44
+ findPaddingElement(element, direction) {
45
+ return this.findElementBySelector(element, `[data-padding-${direction}]`);
46
+ }
47
+ findItemElement(element, id) {
48
+ return this.findElementBySelector(element, `[data-sid="${id}"]`);
49
+ }
12
50
  getScrollPosition(element) {
13
51
  if (this.window) {
14
52
  return window.pageYOffset;
@@ -71,6 +109,12 @@ export class Routines {
71
109
  return element.offsetTop - (relativeElement ? relativeElement.scrollTop : 0) +
72
110
  (direction === (!opposite ? Direction.forward : Direction.backward) ? this.getSize(element) : 0);
73
111
  }
112
+ makeElementVisible(element) {
113
+ this.checkElement(element);
114
+ element.style.left = '';
115
+ element.style.top = '';
116
+ element.style.position = '';
117
+ }
74
118
  hideElement(element) {
75
119
  this.checkElement(element);
76
120
  element.style.display = 'none';
@@ -83,5 +127,17 @@ export class Routines {
83
127
  this.checkElement(element);
84
128
  element.scrollIntoView(argument);
85
129
  }
130
+ render(cb) {
131
+ const timeoutId = setTimeout(() => cb());
132
+ return () => clearTimeout(timeoutId);
133
+ }
134
+ animate(cb) {
135
+ const animationFrameId = requestAnimationFrame(() => cb());
136
+ return () => cancelAnimationFrame(animationFrameId);
137
+ }
138
+ onScroll(element, handler) {
139
+ element.addEventListener('scroll', handler);
140
+ return () => element.removeEventListener('scroll', handler);
141
+ }
86
142
  }
87
143
  //# sourceMappingURL=domRoutines.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"domRoutines.js","sourceRoot":"","sources":["../../../src/classes/domRoutines.ts"],"names":[],"mappings":"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","sourcesContent":["import { Settings } from './settings';\nimport { Direction } from '../inputs/index';\n\nexport class Routines {\n\n readonly horizontal: boolean;\n readonly window: boolean;\n\n constructor(settings: Settings) {\n this.horizontal = settings.horizontal;\n this.window = settings.windowViewport;\n }\n\n checkElement(element: HTMLElement): void {\n if (!element) {\n throw new Error('HTML element is not defined');\n }\n }\n\n getScrollPosition(element: HTMLElement): number {\n if (this.window) {\n return window.pageYOffset;\n }\n this.checkElement(element);\n return element[this.horizontal ? 'scrollLeft' : 'scrollTop'];\n }\n\n setScrollPosition(element: HTMLElement, value: number): void {\n value = Math.max(0, value);\n if (this.window) {\n if (this.horizontal) {\n window.scrollTo(value, window.scrollY);\n } else {\n window.scrollTo(window.scrollX, value);\n }\n return;\n }\n this.checkElement(element);\n element[this.horizontal ? 'scrollLeft' : 'scrollTop'] = value;\n }\n\n getParams(element: HTMLElement, doNotBind?: boolean): DOMRect {\n this.checkElement(element);\n if (this.window && doNotBind) {\n const { clientWidth, clientHeight, clientLeft, clientTop } = element;\n return {\n 'height': clientHeight,\n 'width': clientWidth,\n 'top': clientTop,\n 'bottom': clientTop + clientHeight,\n 'left': clientLeft,\n 'right': clientLeft + clientWidth,\n 'x': clientLeft,\n 'y': clientTop,\n 'toJSON': () => null,\n };\n }\n return element.getBoundingClientRect();\n }\n\n getSize(element: HTMLElement, doNotBind?: boolean): number {\n return this.getParams(element, doNotBind)[this.horizontal ? 'width' : 'height'];\n }\n\n getSizeStyle(element: HTMLElement): number {\n this.checkElement(element);\n const size = element.style[this.horizontal ? 'width' : 'height'];\n return parseFloat(size as string) || 0;\n }\n\n setSizeStyle(element: HTMLElement, value: number): void {\n this.checkElement(element);\n value = Math.max(0, Math.round(value));\n element.style[this.horizontal ? 'width' : 'height'] = `${value}px`;\n }\n\n getEdge(element: HTMLElement, direction: Direction, doNotBind?: boolean): number {\n const params = this.getParams(element, doNotBind);\n const isFwd = direction === Direction.forward;\n return params[isFwd ? (this.horizontal ? 'right' : 'bottom') : (this.horizontal ? 'left' : 'top')];\n }\n\n getEdge2(element: HTMLElement, direction: Direction, relativeElement: HTMLElement, opposite: boolean): number {\n // vertical only ?\n return element.offsetTop - (relativeElement ? relativeElement.scrollTop : 0) +\n (direction === (!opposite ? Direction.forward : Direction.backward) ? this.getSize(element) : 0);\n }\n\n hideElement(element: HTMLElement): void {\n this.checkElement(element);\n element.style.display = 'none';\n }\n\n getOffset(element: HTMLElement): number {\n this.checkElement(element);\n return (this.horizontal ? element.offsetLeft : element.offsetTop) || 0;\n }\n\n scrollTo(element: HTMLElement, argument?: boolean | ScrollIntoViewOptions): void {\n this.checkElement(element);\n element.scrollIntoView(argument);\n }\n\n}\n"]}
1
+ {"version":3,"file":"domRoutines.js","sourceRoot":"","sources":["../../../src/classes/domRoutines.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,MAAM,OAAO,QAAQ;IAMnB,YAAY,QAAkB;QAC5B,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC;QACtC,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,cAAc,CAAC;QACtC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;IACpC,CAAC;IAED,YAAY,CAAC,OAAoB;QAC/B,IAAI,CAAC,OAAO,EAAE;YACZ,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;SAChD;IACH,CAAC;IAED,cAAc,CAAC,OAAoB;QACjC,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,OAAO,QAAQ,CAAC,eAAe,CAAC;SACjC;QACD,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,OAAO,IAAI,CAAC,QAAQ,CAAC;SACtB;QACD,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QAC3B,MAAM,MAAM,GAAG,OAAO,CAAC,aAA4B,CAAC;QACpD,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QAC1B,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,sBAAsB,CAAC,OAAoB;QACzC,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,OAAO,MAAM,CAAC;SACf;QACD,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC;IAED,sBAAsB;QACpB,IAAI,mBAAmB,IAAI,OAAO,EAAE;YAClC,OAAO,CAAC,iBAAiB,GAAG,QAAQ,CAAC;SACtC;IACH,CAAC;IAED,qBAAqB,CAAC,OAAoB;QACxC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QAC3B,OAAO,CAAC,KAAK,CAAC,cAAc,GAAG,MAAM,CAAC;IACxC,CAAC;IAED,qBAAqB,CAAC,OAAoB,EAAE,QAAgB;QAC1D,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QAC3B,OAAO,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IACzC,CAAC;IAED,kBAAkB,CAAC,OAAoB,EAAE,SAAoB;QAC3D,OAAO,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE,iBAAiB,SAAS,GAAG,CAAC,CAAC;IAC5E,CAAC;IAED,eAAe,CAAC,OAAoB,EAAE,EAAU;QAC9C,OAAO,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE,cAAc,EAAE,IAAI,CAAC,CAAC;IACnE,CAAC;IAED,iBAAiB,CAAC,OAAoB;QACpC,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,OAAO,MAAM,CAAC,WAAW,CAAC;SAC3B;QACD,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QAC3B,OAAO,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;IAC/D,CAAC;IAED,iBAAiB,CAAC,OAAoB,EAAE,KAAa;QACnD,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAC3B,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,IAAI,IAAI,CAAC,UAAU,EAAE;gBACnB,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;aACxC;iBAAM;gBACL,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;aACxC;YACD,OAAO;SACR;QACD,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QAC3B,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,KAAK,CAAC;IAChE,CAAC;IAED,SAAS,CAAC,OAAoB,EAAE,SAAmB;QACjD,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QAC3B,IAAI,IAAI,CAAC,MAAM,IAAI,SAAS,EAAE;YAC5B,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC;YACrE,OAAO;gBACL,QAAQ,EAAE,YAAY;gBACtB,OAAO,EAAE,WAAW;gBACpB,KAAK,EAAE,SAAS;gBAChB,QAAQ,EAAE,SAAS,GAAG,YAAY;gBAClC,MAAM,EAAE,UAAU;gBAClB,OAAO,EAAE,UAAU,GAAG,WAAW;gBACjC,GAAG,EAAE,UAAU;gBACf,GAAG,EAAE,SAAS;gBACd,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI;aACrB,CAAC;SACH;QACD,OAAO,OAAO,CAAC,qBAAqB,EAAE,CAAC;IACzC,CAAC;IAED,OAAO,CAAC,OAAoB,EAAE,SAAmB;QAC/C,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;IAClF,CAAC;IAED,YAAY,CAAC,OAAoB;QAC/B,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QAC3B,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QACjE,OAAO,UAAU,CAAC,IAAc,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;IAED,YAAY,CAAC,OAAoB,EAAE,KAAa;QAC9C,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QAC3B,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;QACvC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK,IAAI,CAAC;IACrE,CAAC;IAED,OAAO,CAAC,OAAoB,EAAE,SAAoB,EAAE,SAAmB;QACrE,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAClD,MAAM,KAAK,GAAG,SAAS,KAAK,SAAS,CAAC,OAAO,CAAC;QAC9C,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IACrG,CAAC;IAED,QAAQ,CAAC,OAAoB,EAAE,SAAoB,EAAE,eAA4B,EAAE,QAAiB;QAClG,kBAAkB;QAClB,OAAO,OAAO,CAAC,SAAS,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1E,CAAC,SAAS,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACrG,CAAC;IAED,kBAAkB,CAAC,OAAoB;QACrC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QAC3B,OAAO,CAAC,KAAK,CAAC,IAAI,GAAG,EAAE,CAAC;QACxB,OAAO,CAAC,KAAK,CAAC,GAAG,GAAG,EAAE,CAAC;QACvB,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,EAAE,CAAC;IAC9B,CAAC;IAED,WAAW,CAAC,OAAoB;QAC9B,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QAC3B,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;IACjC,CAAC;IAED,SAAS,CAAC,OAAoB;QAC5B,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QAC3B,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACzE,CAAC;IAED,QAAQ,CAAC,OAAoB,EAAE,QAA0C;QACvE,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QAC3B,OAAO,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;IACnC,CAAC;IAED,MAAM,CAAC,EAAc;QACnB,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QACzC,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;IACvC,CAAC;IAED,OAAO,CAAC,EAAc;QACpB,MAAM,gBAAgB,GAAG,qBAAqB,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QAC3D,OAAO,GAAG,EAAE,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,CAAC;IACtD,CAAC;IAED,QAAQ,CAAC,OAA6B,EAAE,OAAsB;QAC5D,OAAO,CAAC,gBAAgB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC5C,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC,mBAAmB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC9D,CAAC;CAEF","sourcesContent":["import { Settings } from './settings';\nimport { Direction } from '../inputs/index';\n\nexport class Routines {\n\n readonly horizontal: boolean;\n readonly window: boolean;\n readonly viewport: HTMLElement | null;\n\n constructor(settings: Settings) {\n this.horizontal = settings.horizontal;\n this.window = settings.windowViewport;\n this.viewport = settings.viewport;\n }\n\n checkElement(element: HTMLElement): void {\n if (!element) {\n throw new Error('HTML element is not defined');\n }\n }\n\n getHostElement(element: HTMLElement): HTMLElement {\n if (this.window) {\n return document.documentElement;\n }\n if (this.viewport) {\n return this.viewport;\n }\n this.checkElement(element);\n const parent = element.parentElement as HTMLElement;\n this.checkElement(parent);\n return parent;\n }\n\n getScrollEventReceiver(element: HTMLElement): HTMLElement | Window {\n if (this.window) {\n return window;\n }\n return this.getHostElement(element);\n }\n\n setupScrollRestoration(): void {\n if ('scrollRestoration' in history) {\n history.scrollRestoration = 'manual';\n }\n }\n\n dismissOverflowAnchor(element: HTMLElement): void {\n this.checkElement(element);\n element.style.overflowAnchor = 'none';\n }\n\n findElementBySelector(element: HTMLElement, selector: string): HTMLElement | null {\n this.checkElement(element);\n return element.querySelector(selector);\n }\n\n findPaddingElement(element: HTMLElement, direction: Direction): HTMLElement | null {\n return this.findElementBySelector(element, `[data-padding-${direction}]`);\n }\n\n findItemElement(element: HTMLElement, id: string): HTMLElement | null {\n return this.findElementBySelector(element, `[data-sid=\"${id}\"]`);\n }\n\n getScrollPosition(element: HTMLElement): number {\n if (this.window) {\n return window.pageYOffset;\n }\n this.checkElement(element);\n return element[this.horizontal ? 'scrollLeft' : 'scrollTop'];\n }\n\n setScrollPosition(element: HTMLElement, value: number): void {\n value = Math.max(0, value);\n if (this.window) {\n if (this.horizontal) {\n window.scrollTo(value, window.scrollY);\n } else {\n window.scrollTo(window.scrollX, value);\n }\n return;\n }\n this.checkElement(element);\n element[this.horizontal ? 'scrollLeft' : 'scrollTop'] = value;\n }\n\n getParams(element: HTMLElement, doNotBind?: boolean): DOMRect {\n this.checkElement(element);\n if (this.window && doNotBind) {\n const { clientWidth, clientHeight, clientLeft, clientTop } = element;\n return {\n 'height': clientHeight,\n 'width': clientWidth,\n 'top': clientTop,\n 'bottom': clientTop + clientHeight,\n 'left': clientLeft,\n 'right': clientLeft + clientWidth,\n 'x': clientLeft,\n 'y': clientTop,\n 'toJSON': () => null,\n };\n }\n return element.getBoundingClientRect();\n }\n\n getSize(element: HTMLElement, doNotBind?: boolean): number {\n return this.getParams(element, doNotBind)[this.horizontal ? 'width' : 'height'];\n }\n\n getSizeStyle(element: HTMLElement): number {\n this.checkElement(element);\n const size = element.style[this.horizontal ? 'width' : 'height'];\n return parseFloat(size as string) || 0;\n }\n\n setSizeStyle(element: HTMLElement, value: number): void {\n this.checkElement(element);\n value = Math.max(0, Math.round(value));\n element.style[this.horizontal ? 'width' : 'height'] = `${value}px`;\n }\n\n getEdge(element: HTMLElement, direction: Direction, doNotBind?: boolean): number {\n const params = this.getParams(element, doNotBind);\n const isFwd = direction === Direction.forward;\n return params[isFwd ? (this.horizontal ? 'right' : 'bottom') : (this.horizontal ? 'left' : 'top')];\n }\n\n getEdge2(element: HTMLElement, direction: Direction, relativeElement: HTMLElement, opposite: boolean): number {\n // vertical only ?\n return element.offsetTop - (relativeElement ? relativeElement.scrollTop : 0) +\n (direction === (!opposite ? Direction.forward : Direction.backward) ? this.getSize(element) : 0);\n }\n\n makeElementVisible(element: HTMLElement): void {\n this.checkElement(element);\n element.style.left = '';\n element.style.top = '';\n element.style.position = '';\n }\n\n hideElement(element: HTMLElement): void {\n this.checkElement(element);\n element.style.display = 'none';\n }\n\n getOffset(element: HTMLElement): number {\n this.checkElement(element);\n return (this.horizontal ? element.offsetLeft : element.offsetTop) || 0;\n }\n\n scrollTo(element: HTMLElement, argument?: boolean | ScrollIntoViewOptions): void {\n this.checkElement(element);\n element.scrollIntoView(argument);\n }\n\n render(cb: () => void): () => void {\n const timeoutId = setTimeout(() => cb());\n return () => clearTimeout(timeoutId);\n }\n\n animate(cb: () => void): () => void {\n const animationFrameId = requestAnimationFrame(() => cb());\n return () => cancelAnimationFrame(animationFrameId);\n }\n\n onScroll(element: HTMLElement | Window, handler: EventListener): () => void {\n element.addEventListener('scroll', handler);\n return () => element.removeEventListener('scroll', handler);\n }\n\n}\n"]}
@@ -37,6 +37,10 @@ export class Item {
37
37
  this.size = this.routines.getSize(this.element);
38
38
  }
39
39
  }
40
+ makeVisible() {
41
+ this.routines.makeElementVisible(this.element);
42
+ this.invisible = false;
43
+ }
40
44
  hide() {
41
45
  if (this.element) {
42
46
  this.routines.hideElement(this.element);
@@ -1 +1 @@
1
- {"version":3,"file":"item.js","sourceRoot":"","sources":["../../../src/classes/item.ts"],"names":[],"mappings":"AAIA,MAAM,OAAO,IAAI;IAiCf,YAAY,MAAc,EAAE,IAAU,EAAE,QAAkB;QACxD,IAAI,CAAC,SAAS,GAAG;YACf,MAAM;YACN,IAAI;SACL,CAAC;QACF,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;QAC7B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACtB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;IACxB,CAAC;IA/BD,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;IAC/B,CAAC;IACD,IAAI,MAAM,CAAC,KAAa;QACtB,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,KAAK,CAAC;IAChC,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;IAC7B,CAAC;IACD,IAAI,IAAI,CAAC,KAAW;QAClB,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,KAAK,CAAC;IAC9B,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,SAAS,CAAC,OAAsB,CAAC;IAC/C,CAAC;IACD,IAAI,OAAO,CAAC,KAAkB;QAC5B,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,KAAK,CAAC;IACjC,CAAC;IAcD,OAAO;QACL,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;IAChC,CAAC;IAED,OAAO,CAAC,OAAO,GAAG,CAAC;QACjB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;SACjD;IACH,CAAC;IAED,IAAI;QACF,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;SACzC;IACH,CAAC;IAED,QAAQ,CAAC,QAA0C;QACjD,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;SAChD;IACH,CAAC;IAED,WAAW,CAAC,KAAa;QACvB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;IAED,GAAG;QACD,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;CACF","sourcesContent":["import { Routines } from './domRoutines';\nimport { Direction } from '../inputs/index';\nimport { Item as _Item, ItemAdapter } from '../interfaces/index';\n\nexport class Item<Data = unknown> implements _Item<Data> {\n nodeId: string;\n routines: Routines;\n preSize: number; // estimated size\n size: number; // real size\n invisible: boolean;\n toRemove: boolean;\n toInsert: boolean;\n removeDirection: Direction;\n\n private container: ItemAdapter<Data>;\n\n get $index(): number {\n return this.container.$index;\n }\n set $index(value: number) {\n this.container.$index = value;\n }\n\n get data(): Data {\n return this.container.data;\n }\n set data(value: Data) {\n this.container.data = value;\n }\n\n get element(): HTMLElement {\n return this.container.element as HTMLElement;\n }\n set element(value: HTMLElement) {\n this.container.element = value;\n }\n\n constructor($index: number, data: Data, routines: Routines) {\n this.container = {\n $index,\n data\n };\n this.nodeId = String($index);\n this.routines = routines;\n this.invisible = true;\n this.toRemove = false;\n this.toInsert = false;\n }\n\n dispose(): void {\n delete this.container.element;\n }\n\n setSize(preSize = 0): void {\n this.preSize = preSize;\n if (this.element) {\n this.size = this.routines.getSize(this.element);\n }\n }\n\n hide(): void {\n if (this.element) {\n this.routines.hideElement(this.element);\n }\n }\n\n scrollTo(argument?: boolean | ScrollIntoViewOptions): void {\n if (this.element) {\n this.routines.scrollTo(this.element, argument);\n }\n }\n\n updateIndex(index: number): void {\n this.$index = index;\n this.nodeId = String(index);\n }\n\n get(): ItemAdapter<Data> {\n return this.container;\n }\n}\n"]}
1
+ {"version":3,"file":"item.js","sourceRoot":"","sources":["../../../src/classes/item.ts"],"names":[],"mappings":"AAIA,MAAM,OAAO,IAAI;IAiCf,YAAY,MAAc,EAAE,IAAU,EAAE,QAAkB;QACxD,IAAI,CAAC,SAAS,GAAG;YACf,MAAM;YACN,IAAI;SACL,CAAC;QACF,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;QAC7B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACtB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;IACxB,CAAC;IA/BD,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;IAC/B,CAAC;IACD,IAAI,MAAM,CAAC,KAAa;QACtB,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,KAAK,CAAC;IAChC,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;IAC7B,CAAC;IACD,IAAI,IAAI,CAAC,KAAW;QAClB,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,KAAK,CAAC;IAC9B,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,SAAS,CAAC,OAAsB,CAAC;IAC/C,CAAC;IACD,IAAI,OAAO,CAAC,KAAkB;QAC5B,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,KAAK,CAAC;IACjC,CAAC;IAcD,OAAO;QACL,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;IAChC,CAAC;IAED,OAAO,CAAC,OAAO,GAAG,CAAC;QACjB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;SACjD;IACH,CAAC;IAED,WAAW;QACT,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC/C,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IACzB,CAAC;IAED,IAAI;QACF,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;SACzC;IACH,CAAC;IAED,QAAQ,CAAC,QAA0C;QACjD,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;SAChD;IACH,CAAC;IAED,WAAW,CAAC,KAAa;QACvB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;IAED,GAAG;QACD,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;CACF","sourcesContent":["import { Routines } from './domRoutines';\nimport { Direction } from '../inputs/index';\nimport { Item as _Item, ItemAdapter } from '../interfaces/index';\n\nexport class Item<Data = unknown> implements _Item<Data> {\n nodeId: string;\n routines: Routines;\n preSize: number; // estimated size\n size: number; // real size\n invisible: boolean;\n toRemove: boolean;\n toInsert: boolean;\n removeDirection: Direction;\n\n private container: ItemAdapter<Data>;\n\n get $index(): number {\n return this.container.$index;\n }\n set $index(value: number) {\n this.container.$index = value;\n }\n\n get data(): Data {\n return this.container.data;\n }\n set data(value: Data) {\n this.container.data = value;\n }\n\n get element(): HTMLElement {\n return this.container.element as HTMLElement;\n }\n set element(value: HTMLElement) {\n this.container.element = value;\n }\n\n constructor($index: number, data: Data, routines: Routines) {\n this.container = {\n $index,\n data\n };\n this.nodeId = String($index);\n this.routines = routines;\n this.invisible = true;\n this.toRemove = false;\n this.toInsert = false;\n }\n\n dispose(): void {\n delete this.container.element;\n }\n\n setSize(preSize = 0): void {\n this.preSize = preSize;\n if (this.element) {\n this.size = this.routines.getSize(this.element);\n }\n }\n\n makeVisible(): void {\n this.routines.makeElementVisible(this.element);\n this.invisible = false;\n }\n\n hide(): void {\n if (this.element) {\n this.routines.hideElement(this.element);\n }\n }\n\n scrollTo(argument?: boolean | ScrollIntoViewOptions): void {\n if (this.element) {\n this.routines.scrollTo(this.element, argument);\n }\n }\n\n updateIndex(index: number): void {\n this.$index = index;\n this.nodeId = String(index);\n }\n\n get(): ItemAdapter<Data> {\n return this.container;\n }\n}\n"]}
@@ -1,7 +1,9 @@
1
1
  import { Direction } from '../inputs/index';
2
2
  export class Padding {
3
3
  constructor(element, direction, routines) {
4
- this.element = element.querySelector(`[data-padding-${direction}]`);
4
+ const found = routines.findPaddingElement(element, direction);
5
+ routines.checkElement(found);
6
+ this.element = found;
5
7
  this.direction = direction;
6
8
  this.routines = routines;
7
9
  }
@@ -1 +1 @@
1
- {"version":3,"file":"paddings.js","sourceRoot":"","sources":["../../../src/classes/paddings.ts"],"names":[],"mappings":"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","sourcesContent":["import { Routines } from './domRoutines';\r\nimport { Settings } from './settings';\r\nimport { Direction } from '../inputs/index';\r\n\r\nexport class Padding {\r\n\r\n element: HTMLElement;\r\n direction: Direction;\r\n routines: Routines;\r\n\r\n constructor(element: HTMLElement, direction: Direction, routines: Routines) {\r\n this.element = element.querySelector(`[data-padding-${direction}]`) as HTMLElement;\r\n this.direction = direction;\r\n this.routines = routines;\r\n }\r\n\r\n reset(size?: number): void {\r\n this.size = size || 0;\r\n }\r\n\r\n get size(): number {\r\n return this.routines.getSizeStyle(this.element);\r\n }\r\n\r\n set size(value: number) {\r\n this.routines.setSizeStyle(this.element, value);\r\n }\r\n\r\n}\r\n\r\nexport class Paddings {\r\n settings: Settings;\r\n forward: Padding;\r\n backward: Padding;\r\n\r\n constructor(element: HTMLElement, routines: Routines, settings: Settings) {\r\n this.settings = settings;\r\n this.forward = new Padding(element, Direction.forward, routines);\r\n this.backward = new Padding(element, Direction.backward, routines);\r\n }\r\n\r\n byDirection(direction: Direction, opposite?: boolean): Padding {\r\n return direction === Direction.backward\r\n ? (opposite ? this.forward : this.backward)\r\n : (opposite ? this.backward : this.forward);\r\n }\r\n\r\n reset(viewportSize: number, startIndex: number, offset: number): void {\r\n const positive = this.getPositiveSize(startIndex, viewportSize, offset);\r\n const negative = this.getNegativeSize(startIndex);\r\n if (this.settings.inverse) {\r\n this.forward.reset(negative);\r\n this.backward.reset(positive);\r\n const diff = viewportSize - this.backward.size - offset;\r\n if (diff > 0) {\r\n this.backward.size += diff;\r\n this.forward.size -= diff;\r\n }\r\n } else {\r\n this.forward.reset(positive);\r\n this.backward.reset(negative);\r\n const diff = viewportSize - this.forward.size - offset;\r\n if (diff > 0) {\r\n this.backward.size -= diff;\r\n this.forward.size += diff;\r\n }\r\n }\r\n\r\n }\r\n\r\n getPositiveSize(startIndex: number, viewportSize: number, offset: number): number {\r\n const { settings } = this;\r\n let positiveSize = viewportSize;\r\n if (isFinite(settings.maxIndex)) {\r\n positiveSize = (settings.maxIndex - startIndex + 1) * settings.itemSize;\r\n }\r\n if (offset) {\r\n positiveSize = Math.max(positiveSize - offset, 0);\r\n }\r\n return positiveSize;\r\n }\r\n\r\n getNegativeSize(startIndex: number): number {\r\n const { settings } = this;\r\n let negativeSize = 0;\r\n if (isFinite(settings.minIndex)) {\r\n negativeSize = (startIndex - settings.minIndex) * settings.itemSize;\r\n }\r\n return negativeSize;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"paddings.js","sourceRoot":"","sources":["../../../src/classes/paddings.ts"],"names":[],"mappings":"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","sourcesContent":["import { Routines } from './domRoutines';\r\nimport { Settings } from './settings';\r\nimport { Direction } from '../inputs/index';\r\n\r\nexport class Padding {\r\n\r\n element: HTMLElement;\r\n direction: Direction;\r\n routines: Routines;\r\n\r\n constructor(element: HTMLElement, direction: Direction, routines: Routines) {\r\n const found = routines.findPaddingElement(element, direction);\r\n routines.checkElement(found as HTMLElement);\r\n this.element = found as HTMLElement;\r\n this.direction = direction;\r\n this.routines = routines;\r\n }\r\n\r\n reset(size?: number): void {\r\n this.size = size || 0;\r\n }\r\n\r\n get size(): number {\r\n return this.routines.getSizeStyle(this.element);\r\n }\r\n\r\n set size(value: number) {\r\n this.routines.setSizeStyle(this.element, value);\r\n }\r\n\r\n}\r\n\r\nexport class Paddings {\r\n settings: Settings;\r\n forward: Padding;\r\n backward: Padding;\r\n\r\n constructor(element: HTMLElement, routines: Routines, settings: Settings) {\r\n this.settings = settings;\r\n this.forward = new Padding(element, Direction.forward, routines);\r\n this.backward = new Padding(element, Direction.backward, routines);\r\n }\r\n\r\n byDirection(direction: Direction, opposite?: boolean): Padding {\r\n return direction === Direction.backward\r\n ? (opposite ? this.forward : this.backward)\r\n : (opposite ? this.backward : this.forward);\r\n }\r\n\r\n reset(viewportSize: number, startIndex: number, offset: number): void {\r\n const positive = this.getPositiveSize(startIndex, viewportSize, offset);\r\n const negative = this.getNegativeSize(startIndex);\r\n if (this.settings.inverse) {\r\n this.forward.reset(negative);\r\n this.backward.reset(positive);\r\n const diff = viewportSize - this.backward.size - offset;\r\n if (diff > 0) {\r\n this.backward.size += diff;\r\n this.forward.size -= diff;\r\n }\r\n } else {\r\n this.forward.reset(positive);\r\n this.backward.reset(negative);\r\n const diff = viewportSize - this.forward.size - offset;\r\n if (diff > 0) {\r\n this.backward.size -= diff;\r\n this.forward.size += diff;\r\n }\r\n }\r\n\r\n }\r\n\r\n getPositiveSize(startIndex: number, viewportSize: number, offset: number): number {\r\n const { settings } = this;\r\n let positiveSize = viewportSize;\r\n if (isFinite(settings.maxIndex)) {\r\n positiveSize = (settings.maxIndex - startIndex + 1) * settings.itemSize;\r\n }\r\n if (offset) {\r\n positiveSize = Math.max(positiveSize - offset, 0);\r\n }\r\n return positiveSize;\r\n }\r\n\r\n getNegativeSize(startIndex: number): number {\r\n const { settings } = this;\r\n let negativeSize = 0;\r\n if (isFinite(settings.minIndex)) {\r\n negativeSize = (startIndex - settings.minIndex) * settings.itemSize;\r\n }\r\n return negativeSize;\r\n }\r\n}\r\n"]}
@@ -9,6 +9,7 @@ class InnerLoopModel {
9
9
  return this.count === 0;
10
10
  }
11
11
  done() {
12
+ this.isInitial = false;
12
13
  this.count++;
13
14
  this.total++;
14
15
  this.busy.set(false);
@@ -28,7 +29,7 @@ export class WorkflowCycleModel {
28
29
  this.innerLoop = new InnerLoopModel(loopCount);
29
30
  this.interrupter = null;
30
31
  this.busy = new Reactive(false);
31
- this.done(cycleCount);
32
+ this.end(cycleCount);
32
33
  }
33
34
  get loopId() {
34
35
  return `${this.instanceIndex}-${this.count}-${this.innerLoop.total}`;
@@ -36,11 +37,6 @@ export class WorkflowCycleModel {
36
37
  get loopIdNext() {
37
38
  return `${this.instanceIndex}-${this.count}-${this.innerLoop.total + 1}`;
38
39
  }
39
- done(count) {
40
- this.count = count;
41
- this.isInitial = false;
42
- this.busy.set(false);
43
- }
44
40
  start(isInitial, initiator) {
45
41
  this.isInitial = isInitial;
46
42
  this.initiator = initiator;
@@ -49,6 +45,11 @@ export class WorkflowCycleModel {
49
45
  this.interrupter = null;
50
46
  this.busy.set(true);
51
47
  }
48
+ end(count) {
49
+ this.count = count;
50
+ this.isInitial = false;
51
+ this.busy.set(false);
52
+ }
52
53
  dispose(forever) {
53
54
  if (forever) {
54
55
  // otherwise the value will be persisted during re-instantiation
@@ -1 +1 @@
1
- {"version":3,"file":"cycle.js","sourceRoot":"","sources":["../../../../src/classes/state/cycle.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,MAAM,cAAc;IAUlB,YAAY,KAAa;QACvB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,IAAI,QAAQ,CAAU,KAAK,CAAC,CAAC;IAC3C,CAAC;IARD,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,KAAK,KAAK,CAAC,CAAC;IAC1B,CAAC;IAQD,IAAI;QACF,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IAED,KAAK;QACH,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC;IAED,OAAO;QACL,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;IACtB,CAAC;CACF;AAED,MAAM,OAAO,kBAAkB;IAiB7B,YAAY,aAAqB,EAAE,KAA0B;QAC3D,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3C,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAEpD,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,SAAS,GAAG,IAAI,cAAc,CAAC,SAAS,CAAC,CAAC;QAC/C,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,IAAI,QAAQ,CAAU,KAAK,CAAC,CAAC;QACzC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACxB,CAAC;IAjBD,IAAI,MAAM;QACR,OAAO,GAAG,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;IACvE,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,GAAG,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;IAC3E,CAAC;IAaD,IAAI,CAAC,KAAa;QAChB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,SAAkB,EAAE,SAAsB;QAC9C,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,CAAC;QACrC,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC;QACzB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC;IAED,OAAO,CAAC,OAAiB;QACvB,IAAI,OAAO,EAAE;YACX,gEAAgE;YAChE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;SACrB;QACD,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;CACF","sourcesContent":["import { ProcessName } from '../../interfaces/index';\nimport { Reactive } from '../reactive';\n\nclass InnerLoopModel {\n total: number;\n count: number;\n isInitial: boolean;\n busy: Reactive<boolean>;\n\n get first(): boolean {\n return this.count === 0;\n }\n\n constructor(total: number) {\n this.total = total;\n this.isInitial = false;\n this.busy = new Reactive<boolean>(false);\n }\n\n done() {\n this.count++;\n this.total++;\n this.busy.set(false);\n }\n\n start() {\n this.busy.set(true);\n }\n\n dispose() {\n this.busy.dispose();\n }\n}\n\nexport class WorkflowCycleModel {\n instanceIndex: number;\n count: number;\n isInitial: boolean;\n initiator: ProcessName;\n innerLoop: InnerLoopModel;\n interrupter: ProcessName | null;\n busy: Reactive<boolean>;\n\n get loopId(): string {\n return `${this.instanceIndex}-${this.count}-${this.innerLoop.total}`;\n }\n\n get loopIdNext(): string {\n return `${this.instanceIndex}-${this.count}-${this.innerLoop.total + 1}`;\n }\n\n constructor(instanceIndex: number, cycle?: WorkflowCycleModel) {\n const cycleCount = cycle ? cycle.count : 1;\n const loopCount = cycle ? cycle.innerLoop.count : 0;\n\n this.instanceIndex = instanceIndex;\n this.innerLoop = new InnerLoopModel(loopCount);\n this.interrupter = null;\n this.busy = new Reactive<boolean>(false);\n this.done(cycleCount);\n }\n\n done(count: number): void {\n this.count = count;\n this.isInitial = false;\n this.busy.set(false);\n }\n\n start(isInitial: boolean, initiator: ProcessName): void {\n this.isInitial = isInitial;\n this.initiator = initiator;\n this.innerLoop.isInitial = isInitial;\n this.innerLoop.count = 0;\n this.interrupter = null;\n this.busy.set(true);\n }\n\n dispose(forever?: boolean): void {\n if (forever) {\n // otherwise the value will be persisted during re-instantiation\n this.busy.dispose();\n }\n this.innerLoop.dispose();\n }\n}\n"]}
1
+ {"version":3,"file":"cycle.js","sourceRoot":"","sources":["../../../../src/classes/state/cycle.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,MAAM,cAAc;IAUlB,YAAY,KAAa;QACvB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,IAAI,QAAQ,CAAU,KAAK,CAAC,CAAC;IAC3C,CAAC;IARD,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,KAAK,KAAK,CAAC,CAAC;IAC1B,CAAC;IAQD,IAAI;QACF,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IAED,KAAK;QACH,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC;IAED,OAAO;QACL,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;IACtB,CAAC;CACF;AAED,MAAM,OAAO,kBAAkB;IAiB7B,YAAY,aAAqB,EAAE,KAA0B;QAC3D,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3C,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAEpD,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,SAAS,GAAG,IAAI,cAAc,CAAC,SAAS,CAAC,CAAC;QAC/C,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,IAAI,QAAQ,CAAU,KAAK,CAAC,CAAC;QACzC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACvB,CAAC;IAjBD,IAAI,MAAM;QACR,OAAO,GAAG,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;IACvE,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,GAAG,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;IAC3E,CAAC;IAaD,KAAK,CAAC,SAAkB,EAAE,SAAsB;QAC9C,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,CAAC;QACrC,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC;QACzB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC;IAED,GAAG,CAAC,KAAa;QACf,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IAED,OAAO,CAAC,OAAiB;QACvB,IAAI,OAAO,EAAE;YACX,gEAAgE;YAChE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;SACrB;QACD,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;CACF","sourcesContent":["import { ProcessName } from '../../interfaces/index';\nimport { Reactive } from '../reactive';\n\nclass InnerLoopModel {\n total: number;\n count: number;\n isInitial: boolean;\n busy: Reactive<boolean>;\n\n get first(): boolean {\n return this.count === 0;\n }\n\n constructor(total: number) {\n this.total = total;\n this.isInitial = false;\n this.busy = new Reactive<boolean>(false);\n }\n\n done() {\n this.isInitial = false;\n this.count++;\n this.total++;\n this.busy.set(false);\n }\n\n start() {\n this.busy.set(true);\n }\n\n dispose() {\n this.busy.dispose();\n }\n}\n\nexport class WorkflowCycleModel {\n instanceIndex: number;\n count: number;\n isInitial: boolean;\n initiator: ProcessName;\n innerLoop: InnerLoopModel;\n interrupter: ProcessName | null;\n busy: Reactive<boolean>;\n\n get loopId(): string {\n return `${this.instanceIndex}-${this.count}-${this.innerLoop.total}`;\n }\n\n get loopIdNext(): string {\n return `${this.instanceIndex}-${this.count}-${this.innerLoop.total + 1}`;\n }\n\n constructor(instanceIndex: number, cycle?: WorkflowCycleModel) {\n const cycleCount = cycle ? cycle.count : 1;\n const loopCount = cycle ? cycle.innerLoop.count : 0;\n\n this.instanceIndex = instanceIndex;\n this.innerLoop = new InnerLoopModel(loopCount);\n this.interrupter = null;\n this.busy = new Reactive<boolean>(false);\n this.end(cycleCount);\n }\n\n start(isInitial: boolean, initiator: ProcessName): void {\n this.isInitial = isInitial;\n this.initiator = initiator;\n this.innerLoop.isInitial = isInitial;\n this.innerLoop.count = 0;\n this.interrupter = null;\n this.busy.set(true);\n }\n\n end(count: number): void {\n this.count = count;\n this.isInitial = false;\n this.busy.set(false);\n }\n\n dispose(forever?: boolean): void {\n if (forever) {\n // otherwise the value will be persisted during re-instantiation\n this.busy.dispose();\n }\n this.innerLoop.dispose();\n }\n}\n"]}
@@ -107,18 +107,6 @@ export class FetchModel {
107
107
  this.firstVisible.index = start;
108
108
  this.firstVisible.delta = 0;
109
109
  }
110
- append(items) {
111
- this.startSimulate(items);
112
- this.last.index = items[items.length - 1].$index;
113
- this.first.index = items[0].$index;
114
- this.direction = Direction.forward;
115
- }
116
- prepend(items) {
117
- this.startSimulate(items);
118
- this.last.index = items[0].$index;
119
- this.first.index = items[items.length - 1].$index;
120
- this.direction = Direction.backward;
121
- }
122
110
  check(items) {
123
111
  this.startSimulate(items);
124
112
  this.last.index = items[0].$index;
@@ -1 +1 @@
1
- {"version":3,"file":"fetch.js","sourceRoot":"","sources":["../../../../src/classes/state/fetch.ts"],"names":[],"mappings":"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","sourcesContent":["import { Item } from '../item';\nimport { Direction } from '../../inputs/index';\n\nclass Positions {\n startDelta: number;\n before: number;\n relative: number;\n start: number;\n end: number;\n\n constructor() {\n this.reset();\n }\n\n reset() {\n this.startDelta = 0;\n this.before = 0;\n }\n}\n\nclass First {\n index: number;\n indexBuffer: number;\n position: number;\n\n constructor() {\n this.reset();\n }\n\n reset() {\n this.index = NaN;\n this.indexBuffer = NaN;\n this.position = NaN;\n }\n}\n\nclass Last {\n index: number;\n indexBuffer: number;\n\n constructor() {\n this.reset();\n }\n\n reset() {\n this.index = NaN;\n this.indexBuffer = NaN;\n }\n}\n\nclass FirstVisible {\n index: number;\n delta: number;\n\n constructor() {\n this.reset();\n }\n\n reset() {\n this.index = NaN;\n this.delta = 0;\n }\n}\n\nexport class FetchModel {\n private readonly directionPriority: Direction;\n private _newItemsData: unknown[] | null; // there are public setter and getter\n\n items: Item[];\n positions: Positions;\n first: First;\n last: Last;\n hasAnotherPack: boolean;\n callCount: number;\n minIndex: number;\n firstVisible: FirstVisible;\n direction: Direction | null;\n cancel: (() => void) | null;\n\n simulate: boolean;\n isCheck: boolean;\n doRemove: boolean;\n\n constructor(directionPriority: Direction) {\n this.directionPriority = directionPriority;\n this.callCount = 0;\n this.positions = new Positions();\n this.first = new First();\n this.last = new Last();\n this.firstVisible = new FirstVisible();\n this.reset();\n }\n\n reset(): void {\n this._newItemsData = null;\n this.items = [];\n this.positions.reset();\n this.first.reset();\n this.last.reset();\n this.firstVisible.reset();\n this.hasAnotherPack = false;\n this.direction = null;\n this.cancel = null;\n this.simulate = false;\n this.isCheck = false;\n this.doRemove = false;\n }\n\n get newItemsData(): unknown[] | null {\n return this._newItemsData;\n }\n\n set newItemsData(items: unknown[] | null) {\n this._newItemsData = items;\n if (items && items.length) {\n this.callCount++;\n }\n }\n\n get shouldFetch(): boolean {\n return !!this.count;\n }\n\n get hasNewItems(): boolean {\n return !!((this._newItemsData && this._newItemsData.length));\n }\n\n get index(): number {\n return this.first.index;\n }\n\n get count(): number {\n return !isNaN(this.first.index) && !isNaN(this.last.index) ? this.last.index - this.first.index + 1 : 0;\n }\n\n shouldCheckPreSizeExpectation(lastBufferedIndex: number): boolean {\n if (this.directionPriority === Direction.backward) {\n return false;\n }\n const lastFetched = this.items[this.items.length - 1];\n return lastFetched && lastFetched.$index < lastBufferedIndex;\n }\n\n startSimulate(items: Item[]): void {\n this.simulate = true;\n this._newItemsData = items.map(item => item.data);\n this.items = items;\n this.hasAnotherPack = false;\n }\n\n stopSimulate(): void {\n this.simulate = false;\n this.isCheck = false;\n this.doRemove = false;\n }\n\n fill(items: Item[], start: number): void {\n this.startSimulate(items);\n this.first.index = items[0].$index;\n this.last.index = items[items.length - 1].$index;\n this.direction = Direction.forward;\n this.firstVisible.index = start;\n this.firstVisible.delta = 0;\n }\n\n append(items: Item[]): void {\n this.startSimulate(items);\n this.last.index = items[items.length - 1].$index;\n this.first.index = items[0].$index;\n this.direction = Direction.forward;\n }\n\n prepend(items: Item[]): void {\n this.startSimulate(items);\n this.last.index = items[0].$index;\n this.first.index = items[items.length - 1].$index;\n this.direction = Direction.backward;\n }\n\n check(items: Item[]): void {\n this.startSimulate(items);\n this.last.index = items[0].$index;\n this.first.index = items[items.length - 1].$index;\n this.isCheck = true;\n }\n\n update(index: number, delta: number, items: Item[], itemsToRemove: Item[]): void {\n this.startSimulate(items);\n this.firstVisible.index = index;\n this.firstVisible.delta = delta;\n this.doRemove = itemsToRemove.length > 0;\n }\n}\n"]}
1
+ {"version":3,"file":"fetch.js","sourceRoot":"","sources":["../../../../src/classes/state/fetch.ts"],"names":[],"mappings":"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","sourcesContent":["import { Item } from '../item';\nimport { Direction } from '../../inputs/index';\n\nclass Positions {\n startDelta: number;\n before: number;\n relative: number;\n start: number;\n end: number;\n\n constructor() {\n this.reset();\n }\n\n reset() {\n this.startDelta = 0;\n this.before = 0;\n }\n}\n\nclass First {\n index: number;\n indexBuffer: number;\n position: number;\n\n constructor() {\n this.reset();\n }\n\n reset() {\n this.index = NaN;\n this.indexBuffer = NaN;\n this.position = NaN;\n }\n}\n\nclass Last {\n index: number;\n indexBuffer: number;\n\n constructor() {\n this.reset();\n }\n\n reset() {\n this.index = NaN;\n this.indexBuffer = NaN;\n }\n}\n\nclass FirstVisible {\n index: number;\n delta: number;\n\n constructor() {\n this.reset();\n }\n\n reset() {\n this.index = NaN;\n this.delta = 0;\n }\n}\n\nexport class FetchModel {\n private readonly directionPriority: Direction;\n private _newItemsData: unknown[] | null; // there are public setter and getter\n\n items: Item[];\n positions: Positions;\n first: First;\n last: Last;\n hasAnotherPack: boolean;\n callCount: number;\n minIndex: number;\n firstVisible: FirstVisible;\n direction: Direction | null;\n cancel: (() => void) | null;\n\n simulate: boolean;\n isCheck: boolean;\n doRemove: boolean;\n\n constructor(directionPriority: Direction) {\n this.directionPriority = directionPriority;\n this.callCount = 0;\n this.positions = new Positions();\n this.first = new First();\n this.last = new Last();\n this.firstVisible = new FirstVisible();\n this.reset();\n }\n\n reset(): void {\n this._newItemsData = null;\n this.items = [];\n this.positions.reset();\n this.first.reset();\n this.last.reset();\n this.firstVisible.reset();\n this.hasAnotherPack = false;\n this.direction = null;\n this.cancel = null;\n this.simulate = false;\n this.isCheck = false;\n this.doRemove = false;\n }\n\n get newItemsData(): unknown[] | null {\n return this._newItemsData;\n }\n\n set newItemsData(items: unknown[] | null) {\n this._newItemsData = items;\n if (items && items.length) {\n this.callCount++;\n }\n }\n\n get shouldFetch(): boolean {\n return !!this.count;\n }\n\n get hasNewItems(): boolean {\n return !!((this._newItemsData && this._newItemsData.length));\n }\n\n get index(): number {\n return this.first.index;\n }\n\n get count(): number {\n return !isNaN(this.first.index) && !isNaN(this.last.index) ? this.last.index - this.first.index + 1 : 0;\n }\n\n shouldCheckPreSizeExpectation(lastBufferedIndex: number): boolean {\n if (this.directionPriority === Direction.backward) {\n return false;\n }\n const lastFetched = this.items[this.items.length - 1];\n return lastFetched && lastFetched.$index < lastBufferedIndex;\n }\n\n startSimulate(items: Item[]): void {\n this.simulate = true;\n this._newItemsData = items.map(item => item.data);\n this.items = items;\n this.hasAnotherPack = false;\n }\n\n stopSimulate(): void {\n this.simulate = false;\n this.isCheck = false;\n this.doRemove = false;\n }\n\n fill(items: Item[], start: number): void {\n this.startSimulate(items);\n this.first.index = items[0].$index;\n this.last.index = items[items.length - 1].$index;\n this.direction = Direction.forward;\n this.firstVisible.index = start;\n this.firstVisible.delta = 0;\n }\n\n check(items: Item[]): void {\n this.startSimulate(items);\n this.last.index = items[0].$index;\n this.first.index = items[items.length - 1].$index;\n this.isCheck = true;\n }\n\n update(index: number, delta: number, items: Item[], itemsToRemove: Item[]): void {\n this.startSimulate(items);\n this.firstVisible.index = index;\n this.firstVisible.delta = delta;\n this.doRemove = itemsToRemove.length > 0;\n }\n}\n"]}
@@ -9,7 +9,7 @@ export class RenderModel {
9
9
  this.sizeBefore = 0;
10
10
  this.sizeAfter = 0;
11
11
  this.positionBefore = 0;
12
- this.renderTimer = null;
12
+ this.cancel = null;
13
13
  }
14
14
  }
15
15
  //# sourceMappingURL=render.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"render.js","sourceRoot":"","sources":["../../../../src/classes/state/render.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,WAAW;IAUtB;QACE,IAAI,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;IAND,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC,SAAS,CAAC;IAC5C,CAAC;IAMD,KAAK;QACH,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;QACpB,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;QACnB,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;QACxB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;IAC1B,CAAC;CACF","sourcesContent":["export class RenderModel {\n sizeBefore: number;\n sizeAfter: number;\n positionBefore: number;\n renderTimer: ReturnType<typeof setTimeout> | null;\n\n get noSize(): boolean {\n return this.sizeBefore === this.sizeAfter;\n }\n\n constructor() {\n this.reset();\n }\n\n reset(): void {\n this.sizeBefore = 0;\n this.sizeAfter = 0;\n this.positionBefore = 0;\n this.renderTimer = null;\n }\n}\n"]}
1
+ {"version":3,"file":"render.js","sourceRoot":"","sources":["../../../../src/classes/state/render.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,WAAW;IAUtB;QACE,IAAI,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;IAND,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC,SAAS,CAAC;IAC5C,CAAC;IAMD,KAAK;QACH,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;QACpB,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;QACnB,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;QACxB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;IACrB,CAAC;CACF","sourcesContent":["export class RenderModel {\n sizeBefore: number;\n sizeAfter: number;\n positionBefore: number;\n cancel: (() => void) | null;\n\n get noSize(): boolean {\n return this.sizeBefore === this.sizeAfter;\n }\n\n constructor() {\n this.reset();\n }\n\n reset(): void {\n this.sizeBefore = 0;\n this.sizeAfter = 0;\n this.positionBefore = 0;\n this.cancel = null;\n }\n}\n"]}
@@ -1,4 +1,4 @@
1
- export class ScrollState {
1
+ export class ScrollModel {
2
2
  constructor() {
3
3
  this.reset();
4
4
  }
@@ -10,16 +10,16 @@ export class ScrollState {
10
10
  this.positionBeforeAsync = null;
11
11
  this.positionBeforeAdjust = null;
12
12
  this.positionAfterAdjust = null;
13
- this.cleanupTimers();
13
+ this.stop();
14
14
  }
15
- cleanupTimers() {
15
+ stop() {
16
16
  if (this.scrollTimer) {
17
17
  clearTimeout(this.scrollTimer);
18
18
  this.scrollTimer = null;
19
19
  }
20
- if (this.animationFrameId) {
21
- cancelAnimationFrame(this.animationFrameId);
22
- this.animationFrameId = 0;
20
+ if (this.cancelAnimation) {
21
+ this.cancelAnimation();
22
+ this.cancelAnimation = null;
23
23
  }
24
24
  }
25
25
  hasPositionChanged(position) {
@@ -1 +1 @@
1
- {"version":3,"file":"scroll.js","sourceRoot":"","sources":["../../../../src/classes/state/scroll.ts"],"names":[],"mappings":"AAKA,MAAM,OAAO,WAAW;IAatB;QACE,IAAI,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;IAED,KAAK;QACH,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAC9B,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;QAC9B,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;QAChC,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;QACjC,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;QAChC,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;IAED,aAAa;QACX,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAC/B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;SACzB;QACD,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACzB,oBAAoB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YAC5C,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;SAC3B;IACH,CAAC;IAED,kBAAkB,CAAC,QAAgB;QACjC,MAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC;QACzC,MAAM,KAAK,GAAG,IAAI,CAAC,mBAAmB,CAAC;QACvC,OAAO,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,QAAQ,CAAC;IACxF,CAAC;CACF","sourcesContent":["import {\n ScrollEventData as IScrollEventData,\n ScrollState as IScrollState\n} from '../../interfaces/index';\n\nexport class ScrollState implements IScrollState {\n previous: IScrollEventData | null;\n current: IScrollEventData | null;\n\n scrollTimer: ReturnType<typeof setTimeout> | null;\n\n syntheticPosition: number | null;\n syntheticFulfill: boolean;\n animationFrameId: number;\n positionBeforeAsync: number | null;\n positionBeforeAdjust: number | null;\n positionAfterAdjust: number | null;\n\n constructor() {\n this.reset();\n }\n\n reset(): void {\n this.previous = null;\n this.current = null;\n this.syntheticPosition = null;\n this.syntheticFulfill = false;\n this.positionBeforeAsync = null;\n this.positionBeforeAdjust = null;\n this.positionAfterAdjust = null;\n this.cleanupTimers();\n }\n\n cleanupTimers(): void {\n if (this.scrollTimer) {\n clearTimeout(this.scrollTimer);\n this.scrollTimer = null;\n }\n if (this.animationFrameId) {\n cancelAnimationFrame(this.animationFrameId);\n this.animationFrameId = 0;\n }\n }\n\n hasPositionChanged(position: number): boolean {\n const before = this.positionBeforeAdjust;\n const after = this.positionAfterAdjust;\n return before === null || before !== position || after === null || after !== position;\n }\n}\n"]}
1
+ {"version":3,"file":"scroll.js","sourceRoot":"","sources":["../../../../src/classes/state/scroll.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,WAAW;IAatB;QACE,IAAI,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;IAED,KAAK;QACH,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAC9B,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;QAC9B,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;QAChC,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;QACjC,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;QAChC,IAAI,CAAC,IAAI,EAAE,CAAC;IACd,CAAC;IAED,IAAI;QACF,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAC/B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;SACzB;QACD,IAAI,IAAI,CAAC,eAAe,EAAE;YACxB,IAAI,CAAC,eAAe,EAAE,CAAC;YACvB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;SAC7B;IACH,CAAC;IAED,kBAAkB,CAAC,QAAgB;QACjC,MAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC;QACzC,MAAM,KAAK,GAAG,IAAI,CAAC,mBAAmB,CAAC;QACvC,OAAO,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,QAAQ,CAAC;IACxF,CAAC;CACF","sourcesContent":["import { ScrollEventData as IScrollEventData } from '../../interfaces/index';\n\nexport class ScrollModel {\n previous: IScrollEventData | null;\n current: IScrollEventData | null;\n\n scrollTimer: ReturnType<typeof setTimeout> | null;\n\n syntheticPosition: number | null;\n syntheticFulfill: boolean;\n cancelAnimation: (() => void) | null;\n positionBeforeAsync: number | null;\n positionBeforeAdjust: number | null;\n positionAfterAdjust: number | null;\n\n constructor() {\n this.reset();\n }\n\n reset(): void {\n this.previous = null;\n this.current = null;\n this.syntheticPosition = null;\n this.syntheticFulfill = false;\n this.positionBeforeAsync = null;\n this.positionBeforeAdjust = null;\n this.positionAfterAdjust = null;\n this.stop();\n }\n\n stop(): void {\n if (this.scrollTimer) {\n clearTimeout(this.scrollTimer);\n this.scrollTimer = null;\n }\n if (this.cancelAnimation) {\n this.cancelAnimation();\n this.cancelAnimation = null;\n }\n }\n\n hasPositionChanged(position: number): boolean {\n const before = this.positionBeforeAdjust;\n const after = this.positionAfterAdjust;\n return before === null || before !== position || after === null || after !== position;\n }\n}\n"]}