vscroll 1.6.0-beta.4 → 1.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/dist/bundles/vscroll.esm5.js +69 -33
  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 +68 -33
  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 +70 -34
  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/adapter/props.js +22 -2
  14. package/dist/esm2015/classes/adapter/props.js.map +1 -1
  15. package/dist/esm2015/classes/adapter.js +29 -12
  16. package/dist/esm2015/classes/adapter.js.map +1 -1
  17. package/dist/esm2015/interfaces/adapter.js.map +1 -1
  18. package/dist/esm2015/interfaces/state.js.map +1 -1
  19. package/dist/esm2015/processes/adapter/pause.js +10 -14
  20. package/dist/esm2015/processes/adapter/pause.js.map +1 -1
  21. package/dist/esm2015/version.js +1 -1
  22. package/dist/esm2015/version.js.map +1 -1
  23. package/dist/esm2015/workflow-transducer.js +1 -1
  24. package/dist/esm2015/workflow-transducer.js.map +1 -1
  25. package/dist/esm2015/workflow.js +5 -3
  26. package/dist/esm2015/workflow.js.map +1 -1
  27. package/dist/esm5/classes/adapter/props.js +22 -2
  28. package/dist/esm5/classes/adapter/props.js.map +1 -1
  29. package/dist/esm5/classes/adapter.js +30 -12
  30. package/dist/esm5/classes/adapter.js.map +1 -1
  31. package/dist/esm5/interfaces/adapter.js.map +1 -1
  32. package/dist/esm5/interfaces/state.js.map +1 -1
  33. package/dist/esm5/processes/adapter/pause.js +10 -14
  34. package/dist/esm5/processes/adapter/pause.js.map +1 -1
  35. package/dist/esm5/version.js +1 -1
  36. package/dist/esm5/version.js.map +1 -1
  37. package/dist/esm5/workflow-transducer.js +1 -1
  38. package/dist/esm5/workflow-transducer.js.map +1 -1
  39. package/dist/esm5/workflow.js +5 -3
  40. package/dist/esm5/workflow.js.map +1 -1
  41. package/dist/typings/classes/adapter/props.d.ts +3 -0
  42. package/dist/typings/classes/adapter.d.ts +5 -0
  43. package/dist/typings/interfaces/adapter.d.ts +3 -0
  44. package/dist/typings/interfaces/state.d.ts +2 -0
  45. package/package.json +1 -1
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * vscroll (https://github.com/dhilt/vscroll) FESM5
3
- * Version: 1.6.0-beta.4 (2024-01-14T14:23:00.574Z)
3
+ * Version: 1.6.0 (2024-03-02T23:06:15.231Z)
4
4
  * Author: Denis Hilt
5
5
  * License: MIT
6
6
  */
@@ -98,6 +98,8 @@ var AdapterPropName;
98
98
  AdapterPropName["bof$"] = "bof$";
99
99
  AdapterPropName["eof"] = "eof";
100
100
  AdapterPropName["eof$"] = "eof$";
101
+ AdapterPropName["paused"] = "paused";
102
+ AdapterPropName["paused$"] = "paused$";
101
103
  AdapterPropName["reset"] = "reset";
102
104
  AdapterPropName["reload"] = "reload";
103
105
  AdapterPropName["append"] = "append";
@@ -129,6 +131,11 @@ var methodPreResult = {
129
131
  success: true,
130
132
  details: 'Adapter is not initialized'
131
133
  };
134
+ var methodPausedResult = {
135
+ immediate: true,
136
+ success: true,
137
+ details: 'Scroller is paused'
138
+ };
132
139
  var noopWF = function () { return Promise.resolve(methodPreResult); };
133
140
  var emptyPackageInfo = {
134
141
  core: {
@@ -240,10 +247,17 @@ var getDefaultAdapterProps = function () { return [
240
247
  value: false,
241
248
  reactive: Name.eof$
242
249
  },
250
+ {
251
+ type: Type.Scalar,
252
+ name: Name.paused,
253
+ value: false,
254
+ reactive: Name.paused$
255
+ },
243
256
  {
244
257
  type: Type.WorkflowRunner,
245
258
  name: Name.reset,
246
- value: noopWF
259
+ value: noopWF,
260
+ allowedWhenPaused: true
247
261
  },
248
262
  {
249
263
  type: Type.WorkflowRunner,
@@ -298,7 +312,8 @@ var getDefaultAdapterProps = function () { return [
298
312
  {
299
313
  type: Type.WorkflowRunner,
300
314
  name: Name.resume,
301
- value: noopWF
315
+ value: noopWF,
316
+ allowedWhenPaused: true
302
317
  },
303
318
  {
304
319
  type: Type.WorkflowRunner,
@@ -351,13 +366,18 @@ var getDefaultAdapterProps = function () { return [
351
366
  type: Type.Reactive,
352
367
  name: Name.eof$,
353
368
  value: new Reactive()
369
+ },
370
+ {
371
+ type: Type.Reactive,
372
+ name: Name.paused$,
373
+ value: new Reactive()
354
374
  }
355
375
  ]; };
356
376
  var reactiveConfigStorage = new Map();
357
377
 
358
378
  var core = {
359
379
  name: 'vscroll',
360
- version: '1.6.0-beta.4'
380
+ version: '1.6.0'
361
381
  };
362
382
 
363
383
  var getBox = function (id) {
@@ -2066,25 +2086,21 @@ var Pause = /** @class */ (function (_super) {
2066
2086
  }
2067
2087
  Pause.run = function (scroller, options) {
2068
2088
  var resume = !!(options === null || options === void 0 ? void 0 : options.resume);
2069
- if (!resume) {
2070
- if (!scroller.state.paused.get()) {
2071
- scroller.state.paused.set(true);
2072
- scroller.logger.log('pause scroller');
2073
- }
2074
- else {
2075
- scroller.logger.log('pause scroller (cancelled)');
2076
- }
2077
- return;
2078
- }
2079
- if (!scroller.state.paused.get()) {
2080
- scroller.logger.log('resume scroller (cancelled)');
2089
+ // pause branch
2090
+ if (!resume && !scroller.state.paused.get()) {
2091
+ scroller.logger.log('pause scroller');
2092
+ scroller.state.paused.set(true);
2093
+ scroller.workflow.call({
2094
+ process: AdapterProcess.pause,
2095
+ status: ProcessStatus.done
2096
+ });
2081
2097
  return;
2082
2098
  }
2083
- scroller.state.paused.set(false);
2084
2099
  scroller.logger.log('resume scroller');
2100
+ scroller.state.paused.set(false);
2085
2101
  scroller.workflow.call({
2086
2102
  process: AdapterProcess.pause,
2087
- status: ProcessStatus.done
2103
+ status: ProcessStatus.next
2088
2104
  });
2089
2105
  };
2090
2106
  return Pause;
@@ -4768,8 +4784,9 @@ var State = /** @class */ (function () {
4768
4784
  }());
4769
4785
 
4770
4786
  var ADAPTER_PROPS_STUB = getDefaultAdapterProps();
4787
+ var ALLOWED_METHODS_WHEN_PAUSED = ADAPTER_PROPS_STUB.filter(function (v) { return !!v.allowedWhenPaused; }).map(function (v) { return v.name; });
4771
4788
  var _has = function (obj, prop) {
4772
- return typeof obj === 'object' && obj !== null && Object.prototype.hasOwnProperty.call(obj, prop);
4789
+ return !!obj && typeof obj === 'object' && Object.prototype.hasOwnProperty.call(obj, prop);
4773
4790
  };
4774
4791
  var convertAppendArgs = function (prepend, options, eof) {
4775
4792
  var result = options;
@@ -4920,7 +4937,7 @@ var Adapter = /** @class */ (function () {
4920
4937
  value = value.bind(_this);
4921
4938
  }
4922
4939
  else if (type === AdapterPropType.WorkflowRunner) {
4923
- value = _this.getPromisifiedMethod(value, defaultValue);
4940
+ value = _this.getWorkflowRunnerMethod(value, defaultValue);
4924
4941
  }
4925
4942
  else if (type === AdapterPropType.Reactive && reactivePropsStore[name]) {
4926
4943
  value = context[name];
@@ -4964,21 +4981,36 @@ var Adapter = /** @class */ (function () {
4964
4981
  enumerable: false,
4965
4982
  configurable: true
4966
4983
  });
4967
- Adapter.prototype.getPromisifiedMethod = function (method, defaultMethod) {
4984
+ Adapter.prototype.shouldIgnorePausedMethod = function (method) {
4985
+ var methodName = method.name;
4986
+ return this.paused && !ALLOWED_METHODS_WHEN_PAUSED.includes(methodName);
4987
+ };
4988
+ Adapter.prototype.getPausedMethodResult = function (method) {
4989
+ var _a, _b;
4990
+ (_b = (_a = this.logger) === null || _a === void 0 ? void 0 : _a.log) === null || _b === void 0 ? void 0 : _b.call(_a, function () { return 'scroller is paused: ' + method.name + ' method is ignored'; });
4991
+ return Promise.resolve(methodPausedResult);
4992
+ };
4993
+ Adapter.prototype.getPromisifiedMethod = function (method, args) {
4994
+ var _this = this;
4995
+ return new Promise(function (resolve) {
4996
+ if (_this.relax$) {
4997
+ _this.relax$.once(function (value) { return resolve(value); });
4998
+ }
4999
+ method.apply(_this, args);
5000
+ });
5001
+ };
5002
+ Adapter.prototype.getWorkflowRunnerMethod = function (method, defaultMethod) {
4968
5003
  var _this = this;
4969
5004
  return function () {
4970
5005
  var args = [];
4971
5006
  for (var _i = 0; _i < arguments.length; _i++) {
4972
5007
  args[_i] = arguments[_i];
4973
5008
  }
4974
- return _this.relax$
4975
- ? new Promise(function (resolve) {
4976
- if (_this.relax$) {
4977
- _this.relax$.once(function (value) { return resolve(value); });
4978
- }
4979
- method.apply(_this, args);
4980
- })
4981
- : defaultMethod.apply(_this, args);
5009
+ return !_this.relax$
5010
+ ? defaultMethod.apply(_this, args)
5011
+ : _this.shouldIgnorePausedMethod(method)
5012
+ ? _this.getPausedMethodResult(method)
5013
+ : _this.getPromisifiedMethod(method, args);
4982
5014
  };
4983
5015
  };
4984
5016
  Adapter.prototype.initialize = function (_a) {
@@ -5011,6 +5043,8 @@ var Adapter = /** @class */ (function () {
5011
5043
  state.cycle.innerLoop.busy.on(function (busy) { return _this.loopPending = busy; });
5012
5044
  this.isLoading = state.cycle.busy.get();
5013
5045
  state.cycle.busy.on(function (busy) { return _this.isLoading = busy; });
5046
+ this.paused = state.paused.get();
5047
+ state.paused.on(function (paused) { return _this.paused = paused; });
5014
5048
  //viewport
5015
5049
  this.setFirstOrLastVisible = function (_a) {
5016
5050
  var _b, _c, _d;
@@ -5479,7 +5513,7 @@ var runStateMachine = function (_a) {
5479
5513
  if (status === ProcessStatus.start) {
5480
5514
  run(Pause)(options);
5481
5515
  }
5482
- if (status === ProcessStatus.done) {
5516
+ if (status === ProcessStatus.next) {
5483
5517
  run(Init)(process);
5484
5518
  }
5485
5519
  break;
@@ -5657,9 +5691,11 @@ var Workflow = /** @class */ (function () {
5657
5691
  }
5658
5692
  var process = processSubject.process, status = processSubject.status;
5659
5693
  // if the scroller is paused, any process other than "pause" and "reset" should be blocked
5660
- if (this.scroller.state.paused.get() && process !== AdapterProcess.pause && process !== AdapterProcess.reset) {
5661
- this.scroller.logger.log('scroller is paused: ' + process + ' process is ignored');
5662
- return;
5694
+ if (this.scroller.state.paused.get()) {
5695
+ if (![AdapterProcess.pause, AdapterProcess.reset].includes(process)) {
5696
+ this.scroller.logger.log('scroller is paused: ' + process + ' process is ignored');
5697
+ return;
5698
+ }
5663
5699
  }
5664
5700
  if (process && process.startsWith('adapter') && status !== ProcessStatus.next) {
5665
5701
  this.adapterRun$.set(processSubject);