@x-oasis/batchinator 0.1.9 → 0.1.11

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.
@@ -2,12 +2,17 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
+ function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
6
+
7
+ var defaultBooleanValue = _interopDefault(require('@x-oasis/default-boolean-value'));
8
+
5
9
  var Batchinator = /*#__PURE__*/function () {
6
- function Batchinator(cb, delayMS) {
10
+ function Batchinator(cb, delayMS, options) {
7
11
  this._callback = cb;
8
12
  this._delayMS = delayMS;
9
13
  this._taskHandle = null;
10
14
  this._args = null;
15
+ this._leading = defaultBooleanValue(options == null ? void 0 : options.leading, false);
11
16
  }
12
17
  var _proto = Batchinator.prototype;
13
18
  _proto.dispose = function dispose(options) {
@@ -47,16 +52,19 @@ var Batchinator = /*#__PURE__*/function () {
47
52
  }
48
53
  this._args = args;
49
54
  if (this._taskHandle) return;
50
- var handler = function handler() {
51
- Promise.resolve().then(function () {
52
- _this._taskHandle = null;
53
- _this._callback.apply(_this, _this._args);
54
- });
55
+ var handler = this._leading ? function () {
56
+ _this._taskHandle = null;
57
+ } : function () {
58
+ _this._taskHandle = null;
59
+ _this._callback.apply(_this, _this._args);
55
60
  };
56
61
  if (!this._delayMS) {
57
62
  handler();
58
63
  return;
59
64
  }
65
+ if (this._leading) {
66
+ this._callback.apply(this, this._args);
67
+ }
60
68
  var timeoutHandle = setTimeout(function () {
61
69
  handler();
62
70
  }, this._delayMS);
@@ -1 +1 @@
1
- {"version":3,"file":"batchinator.cjs.development.js","sources":["../src/index.ts"],"sourcesContent":["// import { InteractionManager } from 'react-native';\n\n// https://github.com/facebook/react-native/blob/main/Libraries/Interaction/Batchinator.js\n\nclass Batchinator {\n readonly _delayMS: number;\n private _args: Array<any>;\n\n private _callback: Function;\n private _taskHandle: {\n cancel: () => void;\n };\n\n constructor(cb: Function, delayMS: number) {\n this._callback = cb;\n this._delayMS = delayMS;\n this._taskHandle = null;\n this._args = null;\n }\n\n dispose(\n options: {\n abort: boolean;\n } = {\n abort: false,\n }\n ) {\n const { abort } = options;\n if (this._taskHandle) {\n this._taskHandle.cancel();\n this._taskHandle = null;\n }\n if (typeof this._callback === 'function' && !abort) {\n this._callback.apply(this, this._args);\n }\n }\n\n inSchedule() {\n return !!this._taskHandle;\n }\n\n flush(...args) {\n if (args.length) this._args = args;\n if (this._taskHandle) {\n this._taskHandle.cancel();\n this._taskHandle = null;\n }\n this._callback.apply(this, this._args);\n }\n\n schedule(...args) {\n this._args = args;\n\n if (this._taskHandle) return;\n const handler = () => {\n Promise.resolve().then(() => {\n this._taskHandle = null;\n this._callback.apply(this, this._args);\n });\n };\n\n if (!this._delayMS) {\n handler();\n return;\n }\n\n const timeoutHandle = setTimeout(() => {\n handler();\n }, this._delayMS);\n\n this._taskHandle = { cancel: () => clearTimeout(timeoutHandle) };\n }\n}\n\nexport default Batchinator;\n"],"names":["Batchinator","cb","delayMS","_callback","_delayMS","_taskHandle","_args","_proto","prototype","dispose","options","abort","_options","cancel","apply","inSchedule","flush","args","Array","_len","_key","arguments","length","schedule","_len2","_key2","handler","Promise","resolve","then","_this","timeoutHandle","setTimeout","clearTimeout"],"mappings":";;;;IAIMA,WAAW;EASf,SAAAA,YAAYC,EAAY,EAAEC,OAAe;IACvC,IAAI,CAACC,SAAS,GAAGF,EAAE;IACnB,IAAI,CAACG,QAAQ,GAAGF,OAAO;IACvB,IAAI,CAACG,WAAW,GAAG,IAAI;IACvB,IAAI,CAACC,KAAK,GAAG,IAAI;;EAClB,IAAAC,MAAA,GAAAP,WAAA,CAAAQ,SAAA;EAAAD,MAAA,CAEDE,OAAO,GAAP,SAAAA,QACEC;QAAAA;MAAAA,UAEI;QACFC,KAAK,EAAE;OACR;;IAED,IAAAC,QAAA,GAAkBF,OAAO;MAAjBC,KAAK,GAAAC,QAAA,CAALD,KAAK;IACb,IAAI,IAAI,CAACN,WAAW,EAAE;MACpB,IAAI,CAACA,WAAW,CAACQ,MAAM,EAAE;MACzB,IAAI,CAACR,WAAW,GAAG,IAAI;;IAEzB,IAAI,OAAO,IAAI,CAACF,SAAS,KAAK,UAAU,IAAI,CAACQ,KAAK,EAAE;MAClD,IAAI,CAACR,SAAS,CAACW,KAAK,CAAC,IAAI,EAAE,IAAI,CAACR,KAAK,CAAC;;GAEzC;EAAAC,MAAA,CAEDQ,UAAU,GAAV,SAAAA;IACE,OAAO,CAAC,CAAC,IAAI,CAACV,WAAW;GAC1B;EAAAE,MAAA,CAEDS,KAAK,GAAL,SAAAA;sCAASC,IAAI,OAAAC,KAAA,CAAAC,IAAA,GAAAC,IAAA,MAAAA,IAAA,GAAAD,IAAA,EAAAC,IAAA;MAAJH,IAAI,CAAAG,IAAA,IAAAC,SAAA,CAAAD,IAAA;;IACX,IAAIH,IAAI,CAACK,MAAM,EAAE,IAAI,CAAChB,KAAK,GAAGW,IAAI;IAClC,IAAI,IAAI,CAACZ,WAAW,EAAE;MACpB,IAAI,CAACA,WAAW,CAACQ,MAAM,EAAE;MACzB,IAAI,CAACR,WAAW,GAAG,IAAI;;IAEzB,IAAI,CAACF,SAAS,CAACW,KAAK,CAAC,IAAI,EAAE,IAAI,CAACR,KAAK,CAAC;GACvC;EAAAC,MAAA,CAEDgB,QAAQ,GAAR,SAAAA;;uCAAYN,IAAI,OAAAC,KAAA,CAAAM,KAAA,GAAAC,KAAA,MAAAA,KAAA,GAAAD,KAAA,EAAAC,KAAA;MAAJR,IAAI,CAAAQ,KAAA,IAAAJ,SAAA,CAAAI,KAAA;;IACd,IAAI,CAACnB,KAAK,GAAGW,IAAI;IAEjB,IAAI,IAAI,CAACZ,WAAW,EAAE;IACtB,IAAMqB,OAAO,GAAG,SAAVA,OAAOA;MACXC,OAAO,CAACC,OAAO,EAAE,CAACC,IAAI,CAAC;QACrBC,KAAI,CAACzB,WAAW,GAAG,IAAI;QACvByB,KAAI,CAAC3B,SAAS,CAACW,KAAK,CAACgB,KAAI,EAAEA,KAAI,CAACxB,KAAK,CAAC;OACvC,CAAC;KACH;IAED,IAAI,CAAC,IAAI,CAACF,QAAQ,EAAE;MAClBsB,OAAO,EAAE;MACT;;IAGF,IAAMK,aAAa,GAAGC,UAAU,CAAC;MAC/BN,OAAO,EAAE;KACV,EAAE,IAAI,CAACtB,QAAQ,CAAC;IAEjB,IAAI,CAACC,WAAW,GAAG;MAAEQ,MAAM,EAAE,SAAAA;QAAA,OAAMoB,YAAY,CAACF,aAAa,CAAC;;KAAE;GACjE;EAAA,OAAA/B,WAAA;AAAA;;;;"}
1
+ {"version":3,"file":"batchinator.cjs.development.js","sources":["../src/index.ts"],"sourcesContent":["import defaultBooleanValue from '@x-oasis/default-boolean-value';\n// import { InteractionManager } from 'react-native';\n\n// https://github.com/facebook/react-native/blob/main/Libraries/Interaction/Batchinator.js\n\nclass Batchinator {\n readonly _delayMS: number;\n private _args: Array<any>;\n\n private _callback: Function;\n private _taskHandle: {\n cancel: () => void;\n };\n private _leading: boolean;\n // private _trailing: boolean\n\n constructor(\n cb: Function,\n delayMS: number,\n options?: {\n leading: boolean;\n trailing: boolean;\n }\n ) {\n this._callback = cb;\n this._delayMS = delayMS;\n this._taskHandle = null;\n this._args = null;\n this._leading = defaultBooleanValue(options?.leading, false);\n // this._trailing = defaultBooleanValue(options.trailing, true)\n }\n\n dispose(\n options: {\n abort: boolean;\n } = {\n abort: false,\n }\n ) {\n const { abort } = options;\n if (this._taskHandle) {\n this._taskHandle.cancel();\n this._taskHandle = null;\n }\n if (typeof this._callback === 'function' && !abort) {\n this._callback.apply(this, this._args);\n }\n }\n\n inSchedule() {\n return !!this._taskHandle;\n }\n\n flush(...args) {\n if (args.length) this._args = args;\n if (this._taskHandle) {\n this._taskHandle.cancel();\n this._taskHandle = null;\n }\n this._callback.apply(this, this._args);\n }\n\n schedule(...args) {\n this._args = args;\n\n if (this._taskHandle) return;\n const handler = this._leading\n ? () => {\n this._taskHandle = null;\n }\n : () => {\n this._taskHandle = null;\n this._callback.apply(this, this._args);\n };\n\n if (!this._delayMS) {\n handler();\n return;\n }\n\n if (this._leading) {\n this._callback.apply(this, this._args);\n }\n\n const timeoutHandle = setTimeout(() => {\n handler();\n }, this._delayMS);\n\n this._taskHandle = { cancel: () => clearTimeout(timeoutHandle) };\n }\n}\n\nexport default Batchinator;\n"],"names":["Batchinator","cb","delayMS","options","_callback","_delayMS","_taskHandle","_args","_leading","defaultBooleanValue","leading","_proto","prototype","dispose","abort","_options","cancel","apply","inSchedule","flush","args","Array","_len","_key","arguments","length","schedule","_len2","_key2","handler","_this","timeoutHandle","setTimeout","clearTimeout"],"mappings":";;;;;;;;AAAiE,IAK3DA,WAAW;EAWf,SAAAA,YACEC,EAAY,EACZC,OAAe,EACfC,OAGC;IAED,IAAI,CAACC,SAAS,GAAGH,EAAE;IACnB,IAAI,CAACI,QAAQ,GAAGH,OAAO;IACvB,IAAI,CAACI,WAAW,GAAG,IAAI;IACvB,IAAI,CAACC,KAAK,GAAG,IAAI;IACjB,IAAI,CAACC,QAAQ,GAAGC,mBAAmB,CAACN,OAAO,oBAAPA,OAAO,CAAEO,OAAO,EAAE,KAAK,CAAC;;EAE7D,IAAAC,MAAA,GAAAX,WAAA,CAAAY,SAAA;EAAAD,MAAA,CAEDE,OAAO,GAAP,SAAAA,QACEV;QAAAA;MAAAA,UAEI;QACFW,KAAK,EAAE;OACR;;IAED,IAAAC,QAAA,GAAkBZ,OAAO;MAAjBW,KAAK,GAAAC,QAAA,CAALD,KAAK;IACb,IAAI,IAAI,CAACR,WAAW,EAAE;MACpB,IAAI,CAACA,WAAW,CAACU,MAAM,EAAE;MACzB,IAAI,CAACV,WAAW,GAAG,IAAI;;IAEzB,IAAI,OAAO,IAAI,CAACF,SAAS,KAAK,UAAU,IAAI,CAACU,KAAK,EAAE;MAClD,IAAI,CAACV,SAAS,CAACa,KAAK,CAAC,IAAI,EAAE,IAAI,CAACV,KAAK,CAAC;;GAEzC;EAAAI,MAAA,CAEDO,UAAU,GAAV,SAAAA;IACE,OAAO,CAAC,CAAC,IAAI,CAACZ,WAAW;GAC1B;EAAAK,MAAA,CAEDQ,KAAK,GAAL,SAAAA;sCAASC,IAAI,OAAAC,KAAA,CAAAC,IAAA,GAAAC,IAAA,MAAAA,IAAA,GAAAD,IAAA,EAAAC,IAAA;MAAJH,IAAI,CAAAG,IAAA,IAAAC,SAAA,CAAAD,IAAA;;IACX,IAAIH,IAAI,CAACK,MAAM,EAAE,IAAI,CAAClB,KAAK,GAAGa,IAAI;IAClC,IAAI,IAAI,CAACd,WAAW,EAAE;MACpB,IAAI,CAACA,WAAW,CAACU,MAAM,EAAE;MACzB,IAAI,CAACV,WAAW,GAAG,IAAI;;IAEzB,IAAI,CAACF,SAAS,CAACa,KAAK,CAAC,IAAI,EAAE,IAAI,CAACV,KAAK,CAAC;GACvC;EAAAI,MAAA,CAEDe,QAAQ,GAAR,SAAAA;;uCAAYN,IAAI,OAAAC,KAAA,CAAAM,KAAA,GAAAC,KAAA,MAAAA,KAAA,GAAAD,KAAA,EAAAC,KAAA;MAAJR,IAAI,CAAAQ,KAAA,IAAAJ,SAAA,CAAAI,KAAA;;IACd,IAAI,CAACrB,KAAK,GAAGa,IAAI;IAEjB,IAAI,IAAI,CAACd,WAAW,EAAE;IACtB,IAAMuB,OAAO,GAAG,IAAI,CAACrB,QAAQ,GACzB;MACEsB,KAAI,CAACxB,WAAW,GAAG,IAAI;KACxB,GACD;MACEwB,KAAI,CAACxB,WAAW,GAAG,IAAI;MACvBwB,KAAI,CAAC1B,SAAS,CAACa,KAAK,CAACa,KAAI,EAAEA,KAAI,CAACvB,KAAK,CAAC;KACvC;IAEL,IAAI,CAAC,IAAI,CAACF,QAAQ,EAAE;MAClBwB,OAAO,EAAE;MACT;;IAGF,IAAI,IAAI,CAACrB,QAAQ,EAAE;MACjB,IAAI,CAACJ,SAAS,CAACa,KAAK,CAAC,IAAI,EAAE,IAAI,CAACV,KAAK,CAAC;;IAGxC,IAAMwB,aAAa,GAAGC,UAAU,CAAC;MAC/BH,OAAO,EAAE;KACV,EAAE,IAAI,CAACxB,QAAQ,CAAC;IAEjB,IAAI,CAACC,WAAW,GAAG;MAAEU,MAAM,EAAE,SAAAA;QAAA,OAAMiB,YAAY,CAACF,aAAa,CAAC;;KAAE;GACjE;EAAA,OAAA/B,WAAA;AAAA;;;;"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=function(){function t(t,a){this._callback=t,this._delayMS=a,this._taskHandle=null,this._args=null}var a=t.prototype;return a.dispose=function(t){void 0===t&&(t={abort:!1});var a=t.abort;this._taskHandle&&(this._taskHandle.cancel(),this._taskHandle=null),"function"!=typeof this._callback||a||this._callback.apply(this,this._args)},a.inSchedule=function(){return!!this._taskHandle},a.flush=function(){for(var t=arguments.length,a=new Array(t),s=0;s<t;s++)a[s]=arguments[s];a.length&&(this._args=a),this._taskHandle&&(this._taskHandle.cancel(),this._taskHandle=null),this._callback.apply(this,this._args)},a.schedule=function(){for(var t=this,a=arguments.length,s=new Array(a),e=0;e<a;e++)s[e]=arguments[e];if(this._args=s,!this._taskHandle){var l=function(){Promise.resolve().then((function(){t._taskHandle=null,t._callback.apply(t,t._args)}))};if(this._delayMS){var n=setTimeout((function(){l()}),this._delayMS);this._taskHandle={cancel:function(){return clearTimeout(n)}}}else l()}},t}();
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var t,a=(t=require("@x-oasis/default-boolean-value"))&&"object"==typeof t&&"default"in t?t.default:t;exports.default=function(){function t(t,l,e){this._callback=t,this._delayMS=l,this._taskHandle=null,this._args=null,this._leading=a(null==e?void 0:e.leading,!1)}var l=t.prototype;return l.dispose=function(t){void 0===t&&(t={abort:!1});var a=t.abort;this._taskHandle&&(this._taskHandle.cancel(),this._taskHandle=null),"function"!=typeof this._callback||a||this._callback.apply(this,this._args)},l.inSchedule=function(){return!!this._taskHandle},l.flush=function(){for(var t=arguments.length,a=new Array(t),l=0;l<t;l++)a[l]=arguments[l];a.length&&(this._args=a),this._taskHandle&&(this._taskHandle.cancel(),this._taskHandle=null),this._callback.apply(this,this._args)},l.schedule=function(){for(var t=this,a=arguments.length,l=new Array(a),e=0;e<a;e++)l[e]=arguments[e];if(this._args=l,!this._taskHandle){var s=this._leading?function(){t._taskHandle=null}:function(){t._taskHandle=null,t._callback.apply(t,t._args)};if(this._delayMS){this._leading&&this._callback.apply(this,this._args);var n=setTimeout((function(){s()}),this._delayMS);this._taskHandle={cancel:function(){return clearTimeout(n)}}}else s()}},t}();
2
2
  //# sourceMappingURL=batchinator.cjs.production.min.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"batchinator.cjs.production.min.js","sources":["../src/index.ts"],"sourcesContent":["// import { InteractionManager } from 'react-native';\n\n// https://github.com/facebook/react-native/blob/main/Libraries/Interaction/Batchinator.js\n\nclass Batchinator {\n readonly _delayMS: number;\n private _args: Array<any>;\n\n private _callback: Function;\n private _taskHandle: {\n cancel: () => void;\n };\n\n constructor(cb: Function, delayMS: number) {\n this._callback = cb;\n this._delayMS = delayMS;\n this._taskHandle = null;\n this._args = null;\n }\n\n dispose(\n options: {\n abort: boolean;\n } = {\n abort: false,\n }\n ) {\n const { abort } = options;\n if (this._taskHandle) {\n this._taskHandle.cancel();\n this._taskHandle = null;\n }\n if (typeof this._callback === 'function' && !abort) {\n this._callback.apply(this, this._args);\n }\n }\n\n inSchedule() {\n return !!this._taskHandle;\n }\n\n flush(...args) {\n if (args.length) this._args = args;\n if (this._taskHandle) {\n this._taskHandle.cancel();\n this._taskHandle = null;\n }\n this._callback.apply(this, this._args);\n }\n\n schedule(...args) {\n this._args = args;\n\n if (this._taskHandle) return;\n const handler = () => {\n Promise.resolve().then(() => {\n this._taskHandle = null;\n this._callback.apply(this, this._args);\n });\n };\n\n if (!this._delayMS) {\n handler();\n return;\n }\n\n const timeoutHandle = setTimeout(() => {\n handler();\n }, this._delayMS);\n\n this._taskHandle = { cancel: () => clearTimeout(timeoutHandle) };\n }\n}\n\nexport default Batchinator;\n"],"names":["Batchinator","cb","delayMS","this","_callback","_delayMS","_taskHandle","_args","_proto","prototype","dispose","options","abort","cancel","apply","inSchedule","flush","args","Array","_len","_key","arguments","length","schedule","_len2","_key2","handler","Promise","resolve","then","_this","timeoutHandle","setTimeout","clearTimeout"],"mappings":"+FAaE,SAAAA,EAAYC,EAAcC,GACxBC,KAAKC,UAAYH,EACjBE,KAAKE,SAAWH,EAChBC,KAAKG,YAAc,KACnBH,KAAKI,MAAQ,KACd,IAAAC,EAAAR,EAAAS,UAqDA,OArDAD,EAEDE,QAAA,SACEC,YAAAA,IAAAA,EAEI,CACFC,OAAO,IAGT,IAAQA,EAAUD,EAAVC,MACJT,KAAKG,cACPH,KAAKG,YAAYO,SACjBV,KAAKG,YAAc,MAES,mBAAnBH,KAAKC,WAA6BQ,GAC3CT,KAAKC,UAAUU,MAAMX,KAAMA,KAAKI,QAEnCC,EAEDO,WAAA,WACE,QAASZ,KAAKG,aACfE,EAEDQ,MAAA,sCAASC,MAAIC,MAAAC,GAAAC,IAAAA,EAAAD,EAAAC,IAAJH,EAAIG,GAAAC,UAAAD,GACPH,EAAKK,SAAQnB,KAAKI,MAAQU,GAC1Bd,KAAKG,cACPH,KAAKG,YAAYO,SACjBV,KAAKG,YAAc,MAErBH,KAAKC,UAAUU,MAAMX,KAAMA,KAAKI,QACjCC,EAEDe,SAAA,6CAAYN,MAAIC,MAAAM,GAAAC,IAAAA,EAAAD,EAAAC,IAAJR,EAAIQ,GAAAJ,UAAAI,GAGd,GAFAtB,KAAKI,MAAQU,GAETd,KAAKG,YAAT,CACA,IAAMoB,EAAU,WACdC,QAAQC,UAAUC,MAAK,WACrBC,EAAKxB,YAAc,KACnBwB,EAAK1B,UAAUU,MAAMgB,EAAMA,EAAKvB,WAIpC,GAAKJ,KAAKE,SAAV,CAKA,IAAM0B,EAAgBC,YAAW,WAC/BN,MACCvB,KAAKE,UAERF,KAAKG,YAAc,CAAEO,OAAQ,WAAA,OAAMoB,aAAaF,UAR9CL,MASH1B"}
1
+ {"version":3,"file":"batchinator.cjs.production.min.js","sources":["../src/index.ts"],"sourcesContent":["import defaultBooleanValue from '@x-oasis/default-boolean-value';\n// import { InteractionManager } from 'react-native';\n\n// https://github.com/facebook/react-native/blob/main/Libraries/Interaction/Batchinator.js\n\nclass Batchinator {\n readonly _delayMS: number;\n private _args: Array<any>;\n\n private _callback: Function;\n private _taskHandle: {\n cancel: () => void;\n };\n private _leading: boolean;\n // private _trailing: boolean\n\n constructor(\n cb: Function,\n delayMS: number,\n options?: {\n leading: boolean;\n trailing: boolean;\n }\n ) {\n this._callback = cb;\n this._delayMS = delayMS;\n this._taskHandle = null;\n this._args = null;\n this._leading = defaultBooleanValue(options?.leading, false);\n // this._trailing = defaultBooleanValue(options.trailing, true)\n }\n\n dispose(\n options: {\n abort: boolean;\n } = {\n abort: false,\n }\n ) {\n const { abort } = options;\n if (this._taskHandle) {\n this._taskHandle.cancel();\n this._taskHandle = null;\n }\n if (typeof this._callback === 'function' && !abort) {\n this._callback.apply(this, this._args);\n }\n }\n\n inSchedule() {\n return !!this._taskHandle;\n }\n\n flush(...args) {\n if (args.length) this._args = args;\n if (this._taskHandle) {\n this._taskHandle.cancel();\n this._taskHandle = null;\n }\n this._callback.apply(this, this._args);\n }\n\n schedule(...args) {\n this._args = args;\n\n if (this._taskHandle) return;\n const handler = this._leading\n ? () => {\n this._taskHandle = null;\n }\n : () => {\n this._taskHandle = null;\n this._callback.apply(this, this._args);\n };\n\n if (!this._delayMS) {\n handler();\n return;\n }\n\n if (this._leading) {\n this._callback.apply(this, this._args);\n }\n\n const timeoutHandle = setTimeout(() => {\n handler();\n }, this._delayMS);\n\n this._taskHandle = { cancel: () => clearTimeout(timeoutHandle) };\n }\n}\n\nexport default Batchinator;\n"],"names":["Batchinator","cb","delayMS","options","this","_callback","_delayMS","_taskHandle","_args","_leading","defaultBooleanValue","leading","_proto","prototype","dispose","abort","cancel","apply","inSchedule","flush","args","Array","_len","_key","arguments","length","schedule","_len2","_key2","handler","_this","timeoutHandle","setTimeout","clearTimeout"],"mappings":"oMAgBE,SAAAA,EACEC,EACAC,EACAC,GAKAC,KAAKC,UAAYJ,EACjBG,KAAKE,SAAWJ,EAChBE,KAAKG,YAAc,KACnBH,KAAKI,MAAQ,KACbJ,KAAKK,SAAWC,QAAoBP,SAAAA,EAASQ,SAAS,GAEvD,IAAAC,EAAAZ,EAAAa,UA2DA,OA3DAD,EAEDE,QAAA,SACEX,YAAAA,IAAAA,EAEI,CACFY,OAAO,IAGT,IAAQA,EAAUZ,EAAVY,MACJX,KAAKG,cACPH,KAAKG,YAAYS,SACjBZ,KAAKG,YAAc,MAES,mBAAnBH,KAAKC,WAA6BU,GAC3CX,KAAKC,UAAUY,MAAMb,KAAMA,KAAKI,QAEnCI,EAEDM,WAAA,WACE,QAASd,KAAKG,aACfK,EAEDO,MAAA,sCAASC,MAAIC,MAAAC,GAAAC,IAAAA,EAAAD,EAAAC,IAAJH,EAAIG,GAAAC,UAAAD,GACPH,EAAKK,SAAQrB,KAAKI,MAAQY,GAC1BhB,KAAKG,cACPH,KAAKG,YAAYS,SACjBZ,KAAKG,YAAc,MAErBH,KAAKC,UAAUY,MAAMb,KAAMA,KAAKI,QACjCI,EAEDc,SAAA,6CAAYN,MAAIC,MAAAM,GAAAC,IAAAA,EAAAD,EAAAC,IAAJR,EAAIQ,GAAAJ,UAAAI,GAGd,GAFAxB,KAAKI,MAAQY,GAEThB,KAAKG,YAAT,CACA,IAAMsB,EAAUzB,KAAKK,SACjB,WACEqB,EAAKvB,YAAc,MAErB,WACEuB,EAAKvB,YAAc,KACnBuB,EAAKzB,UAAUY,MAAMa,EAAMA,EAAKtB,QAGtC,GAAKJ,KAAKE,SAAV,CAKIF,KAAKK,UACPL,KAAKC,UAAUY,MAAMb,KAAMA,KAAKI,OAGlC,IAAMuB,EAAgBC,YAAW,WAC/BH,MACCzB,KAAKE,UAERF,KAAKG,YAAc,CAAES,OAAQ,WAAA,OAAMiB,aAAaF,UAZ9CF,MAaH7B"}
@@ -1,9 +1,12 @@
1
+ import defaultBooleanValue from '@x-oasis/default-boolean-value';
2
+
1
3
  var Batchinator = /*#__PURE__*/function () {
2
- function Batchinator(cb, delayMS) {
4
+ function Batchinator(cb, delayMS, options) {
3
5
  this._callback = cb;
4
6
  this._delayMS = delayMS;
5
7
  this._taskHandle = null;
6
8
  this._args = null;
9
+ this._leading = defaultBooleanValue(options == null ? void 0 : options.leading, false);
7
10
  }
8
11
  var _proto = Batchinator.prototype;
9
12
  _proto.dispose = function dispose(options) {
@@ -43,16 +46,19 @@ var Batchinator = /*#__PURE__*/function () {
43
46
  }
44
47
  this._args = args;
45
48
  if (this._taskHandle) return;
46
- var handler = function handler() {
47
- Promise.resolve().then(function () {
48
- _this._taskHandle = null;
49
- _this._callback.apply(_this, _this._args);
50
- });
49
+ var handler = this._leading ? function () {
50
+ _this._taskHandle = null;
51
+ } : function () {
52
+ _this._taskHandle = null;
53
+ _this._callback.apply(_this, _this._args);
51
54
  };
52
55
  if (!this._delayMS) {
53
56
  handler();
54
57
  return;
55
58
  }
59
+ if (this._leading) {
60
+ this._callback.apply(this, this._args);
61
+ }
56
62
  var timeoutHandle = setTimeout(function () {
57
63
  handler();
58
64
  }, this._delayMS);
@@ -1 +1 @@
1
- {"version":3,"file":"batchinator.esm.js","sources":["../src/index.ts"],"sourcesContent":["// import { InteractionManager } from 'react-native';\n\n// https://github.com/facebook/react-native/blob/main/Libraries/Interaction/Batchinator.js\n\nclass Batchinator {\n readonly _delayMS: number;\n private _args: Array<any>;\n\n private _callback: Function;\n private _taskHandle: {\n cancel: () => void;\n };\n\n constructor(cb: Function, delayMS: number) {\n this._callback = cb;\n this._delayMS = delayMS;\n this._taskHandle = null;\n this._args = null;\n }\n\n dispose(\n options: {\n abort: boolean;\n } = {\n abort: false,\n }\n ) {\n const { abort } = options;\n if (this._taskHandle) {\n this._taskHandle.cancel();\n this._taskHandle = null;\n }\n if (typeof this._callback === 'function' && !abort) {\n this._callback.apply(this, this._args);\n }\n }\n\n inSchedule() {\n return !!this._taskHandle;\n }\n\n flush(...args) {\n if (args.length) this._args = args;\n if (this._taskHandle) {\n this._taskHandle.cancel();\n this._taskHandle = null;\n }\n this._callback.apply(this, this._args);\n }\n\n schedule(...args) {\n this._args = args;\n\n if (this._taskHandle) return;\n const handler = () => {\n Promise.resolve().then(() => {\n this._taskHandle = null;\n this._callback.apply(this, this._args);\n });\n };\n\n if (!this._delayMS) {\n handler();\n return;\n }\n\n const timeoutHandle = setTimeout(() => {\n handler();\n }, this._delayMS);\n\n this._taskHandle = { cancel: () => clearTimeout(timeoutHandle) };\n }\n}\n\nexport default Batchinator;\n"],"names":["Batchinator","cb","delayMS","_callback","_delayMS","_taskHandle","_args","_proto","prototype","dispose","options","abort","_options","cancel","apply","inSchedule","flush","args","Array","_len","_key","arguments","length","schedule","_len2","_key2","handler","Promise","resolve","then","_this","timeoutHandle","setTimeout","clearTimeout"],"mappings":"IAIMA,WAAW;EASf,SAAAA,YAAYC,EAAY,EAAEC,OAAe;IACvC,IAAI,CAACC,SAAS,GAAGF,EAAE;IACnB,IAAI,CAACG,QAAQ,GAAGF,OAAO;IACvB,IAAI,CAACG,WAAW,GAAG,IAAI;IACvB,IAAI,CAACC,KAAK,GAAG,IAAI;;EAClB,IAAAC,MAAA,GAAAP,WAAA,CAAAQ,SAAA;EAAAD,MAAA,CAEDE,OAAO,GAAP,SAAAA,QACEC;QAAAA;MAAAA,UAEI;QACFC,KAAK,EAAE;OACR;;IAED,IAAAC,QAAA,GAAkBF,OAAO;MAAjBC,KAAK,GAAAC,QAAA,CAALD,KAAK;IACb,IAAI,IAAI,CAACN,WAAW,EAAE;MACpB,IAAI,CAACA,WAAW,CAACQ,MAAM,EAAE;MACzB,IAAI,CAACR,WAAW,GAAG,IAAI;;IAEzB,IAAI,OAAO,IAAI,CAACF,SAAS,KAAK,UAAU,IAAI,CAACQ,KAAK,EAAE;MAClD,IAAI,CAACR,SAAS,CAACW,KAAK,CAAC,IAAI,EAAE,IAAI,CAACR,KAAK,CAAC;;GAEzC;EAAAC,MAAA,CAEDQ,UAAU,GAAV,SAAAA;IACE,OAAO,CAAC,CAAC,IAAI,CAACV,WAAW;GAC1B;EAAAE,MAAA,CAEDS,KAAK,GAAL,SAAAA;sCAASC,IAAI,OAAAC,KAAA,CAAAC,IAAA,GAAAC,IAAA,MAAAA,IAAA,GAAAD,IAAA,EAAAC,IAAA;MAAJH,IAAI,CAAAG,IAAA,IAAAC,SAAA,CAAAD,IAAA;;IACX,IAAIH,IAAI,CAACK,MAAM,EAAE,IAAI,CAAChB,KAAK,GAAGW,IAAI;IAClC,IAAI,IAAI,CAACZ,WAAW,EAAE;MACpB,IAAI,CAACA,WAAW,CAACQ,MAAM,EAAE;MACzB,IAAI,CAACR,WAAW,GAAG,IAAI;;IAEzB,IAAI,CAACF,SAAS,CAACW,KAAK,CAAC,IAAI,EAAE,IAAI,CAACR,KAAK,CAAC;GACvC;EAAAC,MAAA,CAEDgB,QAAQ,GAAR,SAAAA;;uCAAYN,IAAI,OAAAC,KAAA,CAAAM,KAAA,GAAAC,KAAA,MAAAA,KAAA,GAAAD,KAAA,EAAAC,KAAA;MAAJR,IAAI,CAAAQ,KAAA,IAAAJ,SAAA,CAAAI,KAAA;;IACd,IAAI,CAACnB,KAAK,GAAGW,IAAI;IAEjB,IAAI,IAAI,CAACZ,WAAW,EAAE;IACtB,IAAMqB,OAAO,GAAG,SAAVA,OAAOA;MACXC,OAAO,CAACC,OAAO,EAAE,CAACC,IAAI,CAAC;QACrBC,KAAI,CAACzB,WAAW,GAAG,IAAI;QACvByB,KAAI,CAAC3B,SAAS,CAACW,KAAK,CAACgB,KAAI,EAAEA,KAAI,CAACxB,KAAK,CAAC;OACvC,CAAC;KACH;IAED,IAAI,CAAC,IAAI,CAACF,QAAQ,EAAE;MAClBsB,OAAO,EAAE;MACT;;IAGF,IAAMK,aAAa,GAAGC,UAAU,CAAC;MAC/BN,OAAO,EAAE;KACV,EAAE,IAAI,CAACtB,QAAQ,CAAC;IAEjB,IAAI,CAACC,WAAW,GAAG;MAAEQ,MAAM,EAAE,SAAAA;QAAA,OAAMoB,YAAY,CAACF,aAAa,CAAC;;KAAE;GACjE;EAAA,OAAA/B,WAAA;AAAA;;;;"}
1
+ {"version":3,"file":"batchinator.esm.js","sources":["../src/index.ts"],"sourcesContent":["import defaultBooleanValue from '@x-oasis/default-boolean-value';\n// import { InteractionManager } from 'react-native';\n\n// https://github.com/facebook/react-native/blob/main/Libraries/Interaction/Batchinator.js\n\nclass Batchinator {\n readonly _delayMS: number;\n private _args: Array<any>;\n\n private _callback: Function;\n private _taskHandle: {\n cancel: () => void;\n };\n private _leading: boolean;\n // private _trailing: boolean\n\n constructor(\n cb: Function,\n delayMS: number,\n options?: {\n leading: boolean;\n trailing: boolean;\n }\n ) {\n this._callback = cb;\n this._delayMS = delayMS;\n this._taskHandle = null;\n this._args = null;\n this._leading = defaultBooleanValue(options?.leading, false);\n // this._trailing = defaultBooleanValue(options.trailing, true)\n }\n\n dispose(\n options: {\n abort: boolean;\n } = {\n abort: false,\n }\n ) {\n const { abort } = options;\n if (this._taskHandle) {\n this._taskHandle.cancel();\n this._taskHandle = null;\n }\n if (typeof this._callback === 'function' && !abort) {\n this._callback.apply(this, this._args);\n }\n }\n\n inSchedule() {\n return !!this._taskHandle;\n }\n\n flush(...args) {\n if (args.length) this._args = args;\n if (this._taskHandle) {\n this._taskHandle.cancel();\n this._taskHandle = null;\n }\n this._callback.apply(this, this._args);\n }\n\n schedule(...args) {\n this._args = args;\n\n if (this._taskHandle) return;\n const handler = this._leading\n ? () => {\n this._taskHandle = null;\n }\n : () => {\n this._taskHandle = null;\n this._callback.apply(this, this._args);\n };\n\n if (!this._delayMS) {\n handler();\n return;\n }\n\n if (this._leading) {\n this._callback.apply(this, this._args);\n }\n\n const timeoutHandle = setTimeout(() => {\n handler();\n }, this._delayMS);\n\n this._taskHandle = { cancel: () => clearTimeout(timeoutHandle) };\n }\n}\n\nexport default Batchinator;\n"],"names":["Batchinator","cb","delayMS","options","_callback","_delayMS","_taskHandle","_args","_leading","defaultBooleanValue","leading","_proto","prototype","dispose","abort","_options","cancel","apply","inSchedule","flush","args","Array","_len","_key","arguments","length","schedule","_len2","_key2","handler","_this","timeoutHandle","setTimeout","clearTimeout"],"mappings":";;AAAiE,IAK3DA,WAAW;EAWf,SAAAA,YACEC,EAAY,EACZC,OAAe,EACfC,OAGC;IAED,IAAI,CAACC,SAAS,GAAGH,EAAE;IACnB,IAAI,CAACI,QAAQ,GAAGH,OAAO;IACvB,IAAI,CAACI,WAAW,GAAG,IAAI;IACvB,IAAI,CAACC,KAAK,GAAG,IAAI;IACjB,IAAI,CAACC,QAAQ,GAAGC,mBAAmB,CAACN,OAAO,oBAAPA,OAAO,CAAEO,OAAO,EAAE,KAAK,CAAC;;EAE7D,IAAAC,MAAA,GAAAX,WAAA,CAAAY,SAAA;EAAAD,MAAA,CAEDE,OAAO,GAAP,SAAAA,QACEV;QAAAA;MAAAA,UAEI;QACFW,KAAK,EAAE;OACR;;IAED,IAAAC,QAAA,GAAkBZ,OAAO;MAAjBW,KAAK,GAAAC,QAAA,CAALD,KAAK;IACb,IAAI,IAAI,CAACR,WAAW,EAAE;MACpB,IAAI,CAACA,WAAW,CAACU,MAAM,EAAE;MACzB,IAAI,CAACV,WAAW,GAAG,IAAI;;IAEzB,IAAI,OAAO,IAAI,CAACF,SAAS,KAAK,UAAU,IAAI,CAACU,KAAK,EAAE;MAClD,IAAI,CAACV,SAAS,CAACa,KAAK,CAAC,IAAI,EAAE,IAAI,CAACV,KAAK,CAAC;;GAEzC;EAAAI,MAAA,CAEDO,UAAU,GAAV,SAAAA;IACE,OAAO,CAAC,CAAC,IAAI,CAACZ,WAAW;GAC1B;EAAAK,MAAA,CAEDQ,KAAK,GAAL,SAAAA;sCAASC,IAAI,OAAAC,KAAA,CAAAC,IAAA,GAAAC,IAAA,MAAAA,IAAA,GAAAD,IAAA,EAAAC,IAAA;MAAJH,IAAI,CAAAG,IAAA,IAAAC,SAAA,CAAAD,IAAA;;IACX,IAAIH,IAAI,CAACK,MAAM,EAAE,IAAI,CAAClB,KAAK,GAAGa,IAAI;IAClC,IAAI,IAAI,CAACd,WAAW,EAAE;MACpB,IAAI,CAACA,WAAW,CAACU,MAAM,EAAE;MACzB,IAAI,CAACV,WAAW,GAAG,IAAI;;IAEzB,IAAI,CAACF,SAAS,CAACa,KAAK,CAAC,IAAI,EAAE,IAAI,CAACV,KAAK,CAAC;GACvC;EAAAI,MAAA,CAEDe,QAAQ,GAAR,SAAAA;;uCAAYN,IAAI,OAAAC,KAAA,CAAAM,KAAA,GAAAC,KAAA,MAAAA,KAAA,GAAAD,KAAA,EAAAC,KAAA;MAAJR,IAAI,CAAAQ,KAAA,IAAAJ,SAAA,CAAAI,KAAA;;IACd,IAAI,CAACrB,KAAK,GAAGa,IAAI;IAEjB,IAAI,IAAI,CAACd,WAAW,EAAE;IACtB,IAAMuB,OAAO,GAAG,IAAI,CAACrB,QAAQ,GACzB;MACEsB,KAAI,CAACxB,WAAW,GAAG,IAAI;KACxB,GACD;MACEwB,KAAI,CAACxB,WAAW,GAAG,IAAI;MACvBwB,KAAI,CAAC1B,SAAS,CAACa,KAAK,CAACa,KAAI,EAAEA,KAAI,CAACvB,KAAK,CAAC;KACvC;IAEL,IAAI,CAAC,IAAI,CAACF,QAAQ,EAAE;MAClBwB,OAAO,EAAE;MACT;;IAGF,IAAI,IAAI,CAACrB,QAAQ,EAAE;MACjB,IAAI,CAACJ,SAAS,CAACa,KAAK,CAAC,IAAI,EAAE,IAAI,CAACV,KAAK,CAAC;;IAGxC,IAAMwB,aAAa,GAAGC,UAAU,CAAC;MAC/BH,OAAO,EAAE;KACV,EAAE,IAAI,CAACxB,QAAQ,CAAC;IAEjB,IAAI,CAACC,WAAW,GAAG;MAAEU,MAAM,EAAE,SAAAA;QAAA,OAAMiB,YAAY,CAACF,aAAa,CAAC;;KAAE;GACjE;EAAA,OAAA/B,WAAA;AAAA;;;;"}
package/dist/index.d.ts CHANGED
@@ -3,7 +3,11 @@ declare class Batchinator {
3
3
  private _args;
4
4
  private _callback;
5
5
  private _taskHandle;
6
- constructor(cb: Function, delayMS: number);
6
+ private _leading;
7
+ constructor(cb: Function, delayMS: number, options?: {
8
+ leading: boolean;
9
+ trailing: boolean;
10
+ });
7
11
  dispose(options?: {
8
12
  abort: boolean;
9
13
  }): void;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@x-oasis/batchinator",
3
- "version": "0.1.9",
3
+ "version": "0.1.11",
4
4
  "description": "batchinator function",
5
5
  "main": "dist/index.js",
6
6
  "typings": "dist/index.d.ts",
@@ -10,6 +10,9 @@
10
10
  "devDependencies": {
11
11
  "tsdx": "^0.14.1"
12
12
  },
13
+ "dependencies": {
14
+ "@x-oasis/default-boolean-value": "0.1.11"
15
+ },
13
16
  "scripts": {
14
17
  "build": "tsdx build --tsconfig tsconfig.build.json",
15
18
  "clean": "rimraf ./dist",
package/src/index.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import defaultBooleanValue from '@x-oasis/default-boolean-value';
1
2
  // import { InteractionManager } from 'react-native';
2
3
 
3
4
  // https://github.com/facebook/react-native/blob/main/Libraries/Interaction/Batchinator.js
@@ -10,12 +11,23 @@ class Batchinator {
10
11
  private _taskHandle: {
11
12
  cancel: () => void;
12
13
  };
14
+ private _leading: boolean;
15
+ // private _trailing: boolean
13
16
 
14
- constructor(cb: Function, delayMS: number) {
17
+ constructor(
18
+ cb: Function,
19
+ delayMS: number,
20
+ options?: {
21
+ leading: boolean;
22
+ trailing: boolean;
23
+ }
24
+ ) {
15
25
  this._callback = cb;
16
26
  this._delayMS = delayMS;
17
27
  this._taskHandle = null;
18
28
  this._args = null;
29
+ this._leading = defaultBooleanValue(options?.leading, false);
30
+ // this._trailing = defaultBooleanValue(options.trailing, true)
19
31
  }
20
32
 
21
33
  dispose(
@@ -52,18 +64,24 @@ class Batchinator {
52
64
  this._args = args;
53
65
 
54
66
  if (this._taskHandle) return;
55
- const handler = () => {
56
- Promise.resolve().then(() => {
57
- this._taskHandle = null;
58
- this._callback.apply(this, this._args);
59
- });
60
- };
67
+ const handler = this._leading
68
+ ? () => {
69
+ this._taskHandle = null;
70
+ }
71
+ : () => {
72
+ this._taskHandle = null;
73
+ this._callback.apply(this, this._args);
74
+ };
61
75
 
62
76
  if (!this._delayMS) {
63
77
  handler();
64
78
  return;
65
79
  }
66
80
 
81
+ if (this._leading) {
82
+ this._callback.apply(this, this._args);
83
+ }
84
+
67
85
  const timeoutHandle = setTimeout(() => {
68
86
  handler();
69
87
  }, this._delayMS);