@x-oasis/batchinator 0.1.8 → 0.1.10
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.
- package/dist/batchinator.cjs.development.js +14 -6
- package/dist/batchinator.cjs.development.js.map +1 -1
- package/dist/batchinator.cjs.production.min.js +1 -1
- package/dist/batchinator.cjs.production.min.js.map +1 -1
- package/dist/batchinator.esm.js +12 -6
- package/dist/batchinator.esm.js.map +1 -1
- package/dist/index.d.ts +5 -1
- package/package.json +4 -1
- package/src/index.ts +25 -7
|
@@ -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
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
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
|
|
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,
|
|
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
|
|
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"}
|
package/dist/batchinator.esm.js
CHANGED
|
@@ -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
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
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
|
|
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
|
-
|
|
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.
|
|
3
|
+
"version": "0.1.10",
|
|
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.10"
|
|
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(
|
|
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
|
-
|
|
57
|
-
|
|
58
|
-
|
|
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);
|