@elementor/utils 0.3.0 → 0.4.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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # Change Log
2
2
 
3
+ ## 0.4.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 571ff75: Add `debounce` util
8
+
9
+ ## 0.3.1
10
+
11
+ ### Patch Changes
12
+
13
+ - 9ca4eab: Deleted '@elementor/utils/session-storage' and replaced it with '@elementor/session'
14
+
3
15
  ## 0.3.0
4
16
 
5
17
  ### Minor Changes
package/dist/index.d.mts CHANGED
@@ -25,15 +25,18 @@ declare const createError: <T extends ElementorErrorOptions["context"]>({ code,
25
25
  stack?: string;
26
26
  cause?: unknown;
27
27
  };
28
- captureStackTrace(targetObject: Object, constructorOpt?: Function): void;
28
+ captureStackTrace(targetObject: object, constructorOpt?: Function): void;
29
29
  prepareStackTrace?: ((err: Error, stackTraces: NodeJS.CallSite[]) => any) | undefined;
30
30
  stackTraceLimit: number;
31
31
  };
32
32
 
33
33
  declare const ensureError: (error: unknown) => Error;
34
34
 
35
- declare const getSessionStorageItem: <T>(key: string) => T | undefined;
36
- declare const setSessionStorageItem: (key: string, item: unknown) => void;
37
- declare const removeSessionStorageItem: (key: string) => void;
35
+ declare function debounce<TArgs extends any[]>(fn: (...args: TArgs) => void, wait: number): {
36
+ (...args: TArgs): void;
37
+ flush: (...args: TArgs) => void;
38
+ cancel: () => void;
39
+ pending: () => boolean;
40
+ };
38
41
 
39
- export { type CreateErrorParams, ElementorError, type ElementorErrorOptions, createError, ensureError, getSessionStorageItem, removeSessionStorageItem, setSessionStorageItem };
42
+ export { type CreateErrorParams, ElementorError, type ElementorErrorOptions, createError, debounce, ensureError };
package/dist/index.d.ts CHANGED
@@ -25,15 +25,18 @@ declare const createError: <T extends ElementorErrorOptions["context"]>({ code,
25
25
  stack?: string;
26
26
  cause?: unknown;
27
27
  };
28
- captureStackTrace(targetObject: Object, constructorOpt?: Function): void;
28
+ captureStackTrace(targetObject: object, constructorOpt?: Function): void;
29
29
  prepareStackTrace?: ((err: Error, stackTraces: NodeJS.CallSite[]) => any) | undefined;
30
30
  stackTraceLimit: number;
31
31
  };
32
32
 
33
33
  declare const ensureError: (error: unknown) => Error;
34
34
 
35
- declare const getSessionStorageItem: <T>(key: string) => T | undefined;
36
- declare const setSessionStorageItem: (key: string, item: unknown) => void;
37
- declare const removeSessionStorageItem: (key: string) => void;
35
+ declare function debounce<TArgs extends any[]>(fn: (...args: TArgs) => void, wait: number): {
36
+ (...args: TArgs): void;
37
+ flush: (...args: TArgs) => void;
38
+ cancel: () => void;
39
+ pending: () => boolean;
40
+ };
38
41
 
39
- export { type CreateErrorParams, ElementorError, type ElementorErrorOptions, createError, ensureError, getSessionStorageItem, removeSessionStorageItem, setSessionStorageItem };
42
+ export { type CreateErrorParams, ElementorError, type ElementorErrorOptions, createError, debounce, ensureError };
package/dist/index.js CHANGED
@@ -18,16 +18,14 @@ var __copyProps = (to, from, except, desc) => {
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
19
 
20
20
  // src/index.ts
21
- var src_exports = {};
22
- __export(src_exports, {
21
+ var index_exports = {};
22
+ __export(index_exports, {
23
23
  ElementorError: () => ElementorError,
24
24
  createError: () => createError,
25
- ensureError: () => ensureError,
26
- getSessionStorageItem: () => getSessionStorageItem,
27
- removeSessionStorageItem: () => removeSessionStorageItem,
28
- setSessionStorageItem: () => setSessionStorageItem
25
+ debounce: () => debounce,
26
+ ensureError: () => ensureError
29
27
  });
30
- module.exports = __toCommonJS(src_exports);
28
+ module.exports = __toCommonJS(index_exports);
31
29
 
32
30
  // src/errors/elementor-error.ts
33
31
  var ElementorError = class extends Error {
@@ -65,23 +63,38 @@ var ensureError = (error) => {
65
63
  return new Error(`Unexpected non-error thrown: ${message}`, { cause });
66
64
  };
67
65
 
68
- // src/session-storage/session-storage.ts
69
- var getSessionStorageItem = (key) => {
70
- return JSON.parse(sessionStorage.getItem(key) || "{}").item;
71
- };
72
- var setSessionStorageItem = (key, item) => {
73
- sessionStorage.setItem(key, JSON.stringify({ item }));
74
- };
75
- var removeSessionStorageItem = (key) => {
76
- sessionStorage.removeItem(key);
77
- };
66
+ // src/debounce.ts
67
+ function debounce(fn, wait) {
68
+ let timer = null;
69
+ const cancel = () => {
70
+ if (!timer) {
71
+ return;
72
+ }
73
+ clearTimeout(timer);
74
+ timer = null;
75
+ };
76
+ const flush = (...args) => {
77
+ cancel();
78
+ fn(...args);
79
+ };
80
+ const run = (...args) => {
81
+ cancel();
82
+ timer = setTimeout(() => {
83
+ fn(...args);
84
+ timer = null;
85
+ }, wait);
86
+ };
87
+ const pending = () => !!timer;
88
+ run.flush = flush;
89
+ run.cancel = cancel;
90
+ run.pending = pending;
91
+ return run;
92
+ }
78
93
  // Annotate the CommonJS export names for ESM import in node:
79
94
  0 && (module.exports = {
80
95
  ElementorError,
81
96
  createError,
82
- ensureError,
83
- getSessionStorageItem,
84
- removeSessionStorageItem,
85
- setSessionStorageItem
97
+ debounce,
98
+ ensureError
86
99
  });
87
100
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/errors/elementor-error.ts","../src/errors/create-error.ts","../src/errors/ensure-error.ts","../src/session-storage/session-storage.ts"],"sourcesContent":["export { ElementorError, createError, ensureError } from './errors';\nexport type { ElementorErrorOptions, CreateErrorParams } from './errors';\n\nexport * from './session-storage';\n","export type ElementorErrorOptions = {\n\tcause?: Error[ 'cause' ];\n\tcontext?: Record< string, unknown > | null;\n\tcode: string;\n};\n\nexport class ElementorError extends Error {\n\treadonly context: ElementorErrorOptions[ 'context' ];\n\treadonly code: ElementorErrorOptions[ 'code' ];\n\n\tconstructor( message: string, { code, context = null, cause = null }: ElementorErrorOptions ) {\n\t\tsuper( message, { cause } );\n\t\tthis.context = context;\n\t\tthis.code = code;\n\t}\n}\n","import { ElementorError, type ElementorErrorOptions } from './elementor-error';\n\nexport type CreateErrorParams = {\n\tcode: ElementorErrorOptions[ 'code' ];\n\tmessage: string;\n};\n\nexport const createError = < T extends ElementorErrorOptions[ 'context' ] >( { code, message }: CreateErrorParams ) => {\n\treturn class extends ElementorError {\n\t\tconstructor( { cause, context }: { cause?: ElementorErrorOptions[ 'cause' ]; context?: T } = {} ) {\n\t\t\tsuper( message, { cause, code, context } );\n\t\t}\n\t};\n};\n","export const ensureError = ( error: unknown ) => {\n\tif ( error instanceof Error ) {\n\t\treturn error;\n\t}\n\n\tlet message: string;\n\tlet cause: unknown = null;\n\n\ttry {\n\t\tmessage = JSON.stringify( error );\n\t} catch ( e ) {\n\t\tcause = e;\n\t\tmessage = 'Unable to stringify the thrown value';\n\t}\n\treturn new Error( `Unexpected non-error thrown: ${ message }`, { cause } );\n};\n","export const getSessionStorageItem = < T >( key: string ): T | undefined => {\n\treturn JSON.parse( sessionStorage.getItem( key ) || '{}' ).item;\n};\n\nexport const setSessionStorageItem = ( key: string, item: unknown ) => {\n\tsessionStorage.setItem( key, JSON.stringify( { item } ) );\n};\n\nexport const removeSessionStorageItem = ( key: string ) => {\n\tsessionStorage.removeItem( key );\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACMO,IAAM,iBAAN,cAA6B,MAAM;AAAA,EAChC;AAAA,EACA;AAAA,EAET,YAAa,SAAiB,EAAE,MAAM,UAAU,MAAM,QAAQ,KAAK,GAA2B;AAC7F,UAAO,SAAS,EAAE,MAAM,CAAE;AAC1B,SAAK,UAAU;AACf,SAAK,OAAO;AAAA,EACb;AACD;;;ACRO,IAAM,cAAc,CAAkD,EAAE,MAAM,QAAQ,MAA0B;AACtH,SAAO,cAAc,eAAe;AAAA,IACnC,YAAa,EAAE,OAAO,QAAQ,IAA+D,CAAC,GAAI;AACjG,YAAO,SAAS,EAAE,OAAO,MAAM,QAAQ,CAAE;AAAA,IAC1C;AAAA,EACD;AACD;;;ACbO,IAAM,cAAc,CAAE,UAAoB;AAChD,MAAK,iBAAiB,OAAQ;AAC7B,WAAO;AAAA,EACR;AAEA,MAAI;AACJ,MAAI,QAAiB;AAErB,MAAI;AACH,cAAU,KAAK,UAAW,KAAM;AAAA,EACjC,SAAU,GAAI;AACb,YAAQ;AACR,cAAU;AAAA,EACX;AACA,SAAO,IAAI,MAAO,gCAAiC,OAAQ,IAAI,EAAE,MAAM,CAAE;AAC1E;;;ACfO,IAAM,wBAAwB,CAAO,QAAgC;AAC3E,SAAO,KAAK,MAAO,eAAe,QAAS,GAAI,KAAK,IAAK,EAAE;AAC5D;AAEO,IAAM,wBAAwB,CAAE,KAAa,SAAmB;AACtE,iBAAe,QAAS,KAAK,KAAK,UAAW,EAAE,KAAK,CAAE,CAAE;AACzD;AAEO,IAAM,2BAA2B,CAAE,QAAiB;AAC1D,iBAAe,WAAY,GAAI;AAChC;","names":[]}
1
+ {"version":3,"sources":["../src/index.ts","../src/errors/elementor-error.ts","../src/errors/create-error.ts","../src/errors/ensure-error.ts","../src/debounce.ts"],"sourcesContent":["export { ElementorError, createError, ensureError } from './errors';\nexport type { ElementorErrorOptions, CreateErrorParams } from './errors';\n\nexport { debounce } from './debounce';\n","export type ElementorErrorOptions = {\n\tcause?: Error[ 'cause' ];\n\tcontext?: Record< string, unknown > | null;\n\tcode: string;\n};\n\nexport class ElementorError extends Error {\n\treadonly context: ElementorErrorOptions[ 'context' ];\n\treadonly code: ElementorErrorOptions[ 'code' ];\n\n\tconstructor( message: string, { code, context = null, cause = null }: ElementorErrorOptions ) {\n\t\tsuper( message, { cause } );\n\t\tthis.context = context;\n\t\tthis.code = code;\n\t}\n}\n","import { ElementorError, type ElementorErrorOptions } from './elementor-error';\n\nexport type CreateErrorParams = {\n\tcode: ElementorErrorOptions[ 'code' ];\n\tmessage: string;\n};\n\nexport const createError = < T extends ElementorErrorOptions[ 'context' ] >( { code, message }: CreateErrorParams ) => {\n\treturn class extends ElementorError {\n\t\tconstructor( { cause, context }: { cause?: ElementorErrorOptions[ 'cause' ]; context?: T } = {} ) {\n\t\t\tsuper( message, { cause, code, context } );\n\t\t}\n\t};\n};\n","export const ensureError = ( error: unknown ) => {\n\tif ( error instanceof Error ) {\n\t\treturn error;\n\t}\n\n\tlet message: string;\n\tlet cause: unknown = null;\n\n\ttry {\n\t\tmessage = JSON.stringify( error );\n\t} catch ( e ) {\n\t\tcause = e;\n\t\tmessage = 'Unable to stringify the thrown value';\n\t}\n\treturn new Error( `Unexpected non-error thrown: ${ message }`, { cause } );\n};\n","// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function debounce< TArgs extends any[] >( fn: ( ...args: TArgs ) => void, wait: number ) {\n\tlet timer: ReturnType< typeof setTimeout > | null = null;\n\n\tconst cancel = () => {\n\t\tif ( ! timer ) {\n\t\t\treturn;\n\t\t}\n\n\t\tclearTimeout( timer );\n\t\ttimer = null;\n\t};\n\n\tconst flush = ( ...args: TArgs ) => {\n\t\tcancel();\n\n\t\tfn( ...args );\n\t};\n\n\tconst run = ( ...args: TArgs ) => {\n\t\tcancel();\n\n\t\ttimer = setTimeout( () => {\n\t\t\tfn( ...args );\n\n\t\t\ttimer = null;\n\t\t}, wait );\n\t};\n\n\tconst pending = () => !! timer;\n\n\trun.flush = flush;\n\trun.cancel = cancel;\n\trun.pending = pending;\n\n\treturn run;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACMO,IAAM,iBAAN,cAA6B,MAAM;AAAA,EAChC;AAAA,EACA;AAAA,EAET,YAAa,SAAiB,EAAE,MAAM,UAAU,MAAM,QAAQ,KAAK,GAA2B;AAC7F,UAAO,SAAS,EAAE,MAAM,CAAE;AAC1B,SAAK,UAAU;AACf,SAAK,OAAO;AAAA,EACb;AACD;;;ACRO,IAAM,cAAc,CAAkD,EAAE,MAAM,QAAQ,MAA0B;AACtH,SAAO,cAAc,eAAe;AAAA,IACnC,YAAa,EAAE,OAAO,QAAQ,IAA+D,CAAC,GAAI;AACjG,YAAO,SAAS,EAAE,OAAO,MAAM,QAAQ,CAAE;AAAA,IAC1C;AAAA,EACD;AACD;;;ACbO,IAAM,cAAc,CAAE,UAAoB;AAChD,MAAK,iBAAiB,OAAQ;AAC7B,WAAO;AAAA,EACR;AAEA,MAAI;AACJ,MAAI,QAAiB;AAErB,MAAI;AACH,cAAU,KAAK,UAAW,KAAM;AAAA,EACjC,SAAU,GAAI;AACb,YAAQ;AACR,cAAU;AAAA,EACX;AACA,SAAO,IAAI,MAAO,gCAAiC,OAAQ,IAAI,EAAE,MAAM,CAAE;AAC1E;;;ACdO,SAAS,SAAiC,IAAgC,MAAe;AAC/F,MAAI,QAAgD;AAEpD,QAAM,SAAS,MAAM;AACpB,QAAK,CAAE,OAAQ;AACd;AAAA,IACD;AAEA,iBAAc,KAAM;AACpB,YAAQ;AAAA,EACT;AAEA,QAAM,QAAQ,IAAK,SAAiB;AACnC,WAAO;AAEP,OAAI,GAAG,IAAK;AAAA,EACb;AAEA,QAAM,MAAM,IAAK,SAAiB;AACjC,WAAO;AAEP,YAAQ,WAAY,MAAM;AACzB,SAAI,GAAG,IAAK;AAEZ,cAAQ;AAAA,IACT,GAAG,IAAK;AAAA,EACT;AAEA,QAAM,UAAU,MAAM,CAAC,CAAE;AAEzB,MAAI,QAAQ;AACZ,MAAI,SAAS;AACb,MAAI,UAAU;AAEd,SAAO;AACR;","names":[]}
package/dist/index.mjs CHANGED
@@ -34,22 +34,37 @@ var ensureError = (error) => {
34
34
  return new Error(`Unexpected non-error thrown: ${message}`, { cause });
35
35
  };
36
36
 
37
- // src/session-storage/session-storage.ts
38
- var getSessionStorageItem = (key) => {
39
- return JSON.parse(sessionStorage.getItem(key) || "{}").item;
40
- };
41
- var setSessionStorageItem = (key, item) => {
42
- sessionStorage.setItem(key, JSON.stringify({ item }));
43
- };
44
- var removeSessionStorageItem = (key) => {
45
- sessionStorage.removeItem(key);
46
- };
37
+ // src/debounce.ts
38
+ function debounce(fn, wait) {
39
+ let timer = null;
40
+ const cancel = () => {
41
+ if (!timer) {
42
+ return;
43
+ }
44
+ clearTimeout(timer);
45
+ timer = null;
46
+ };
47
+ const flush = (...args) => {
48
+ cancel();
49
+ fn(...args);
50
+ };
51
+ const run = (...args) => {
52
+ cancel();
53
+ timer = setTimeout(() => {
54
+ fn(...args);
55
+ timer = null;
56
+ }, wait);
57
+ };
58
+ const pending = () => !!timer;
59
+ run.flush = flush;
60
+ run.cancel = cancel;
61
+ run.pending = pending;
62
+ return run;
63
+ }
47
64
  export {
48
65
  ElementorError,
49
66
  createError,
50
- ensureError,
51
- getSessionStorageItem,
52
- removeSessionStorageItem,
53
- setSessionStorageItem
67
+ debounce,
68
+ ensureError
54
69
  };
55
70
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/errors/elementor-error.ts","../src/errors/create-error.ts","../src/errors/ensure-error.ts","../src/session-storage/session-storage.ts"],"sourcesContent":["export type ElementorErrorOptions = {\n\tcause?: Error[ 'cause' ];\n\tcontext?: Record< string, unknown > | null;\n\tcode: string;\n};\n\nexport class ElementorError extends Error {\n\treadonly context: ElementorErrorOptions[ 'context' ];\n\treadonly code: ElementorErrorOptions[ 'code' ];\n\n\tconstructor( message: string, { code, context = null, cause = null }: ElementorErrorOptions ) {\n\t\tsuper( message, { cause } );\n\t\tthis.context = context;\n\t\tthis.code = code;\n\t}\n}\n","import { ElementorError, type ElementorErrorOptions } from './elementor-error';\n\nexport type CreateErrorParams = {\n\tcode: ElementorErrorOptions[ 'code' ];\n\tmessage: string;\n};\n\nexport const createError = < T extends ElementorErrorOptions[ 'context' ] >( { code, message }: CreateErrorParams ) => {\n\treturn class extends ElementorError {\n\t\tconstructor( { cause, context }: { cause?: ElementorErrorOptions[ 'cause' ]; context?: T } = {} ) {\n\t\t\tsuper( message, { cause, code, context } );\n\t\t}\n\t};\n};\n","export const ensureError = ( error: unknown ) => {\n\tif ( error instanceof Error ) {\n\t\treturn error;\n\t}\n\n\tlet message: string;\n\tlet cause: unknown = null;\n\n\ttry {\n\t\tmessage = JSON.stringify( error );\n\t} catch ( e ) {\n\t\tcause = e;\n\t\tmessage = 'Unable to stringify the thrown value';\n\t}\n\treturn new Error( `Unexpected non-error thrown: ${ message }`, { cause } );\n};\n","export const getSessionStorageItem = < T >( key: string ): T | undefined => {\n\treturn JSON.parse( sessionStorage.getItem( key ) || '{}' ).item;\n};\n\nexport const setSessionStorageItem = ( key: string, item: unknown ) => {\n\tsessionStorage.setItem( key, JSON.stringify( { item } ) );\n};\n\nexport const removeSessionStorageItem = ( key: string ) => {\n\tsessionStorage.removeItem( key );\n};\n"],"mappings":";AAMO,IAAM,iBAAN,cAA6B,MAAM;AAAA,EAChC;AAAA,EACA;AAAA,EAET,YAAa,SAAiB,EAAE,MAAM,UAAU,MAAM,QAAQ,KAAK,GAA2B;AAC7F,UAAO,SAAS,EAAE,MAAM,CAAE;AAC1B,SAAK,UAAU;AACf,SAAK,OAAO;AAAA,EACb;AACD;;;ACRO,IAAM,cAAc,CAAkD,EAAE,MAAM,QAAQ,MAA0B;AACtH,SAAO,cAAc,eAAe;AAAA,IACnC,YAAa,EAAE,OAAO,QAAQ,IAA+D,CAAC,GAAI;AACjG,YAAO,SAAS,EAAE,OAAO,MAAM,QAAQ,CAAE;AAAA,IAC1C;AAAA,EACD;AACD;;;ACbO,IAAM,cAAc,CAAE,UAAoB;AAChD,MAAK,iBAAiB,OAAQ;AAC7B,WAAO;AAAA,EACR;AAEA,MAAI;AACJ,MAAI,QAAiB;AAErB,MAAI;AACH,cAAU,KAAK,UAAW,KAAM;AAAA,EACjC,SAAU,GAAI;AACb,YAAQ;AACR,cAAU;AAAA,EACX;AACA,SAAO,IAAI,MAAO,gCAAiC,OAAQ,IAAI,EAAE,MAAM,CAAE;AAC1E;;;ACfO,IAAM,wBAAwB,CAAO,QAAgC;AAC3E,SAAO,KAAK,MAAO,eAAe,QAAS,GAAI,KAAK,IAAK,EAAE;AAC5D;AAEO,IAAM,wBAAwB,CAAE,KAAa,SAAmB;AACtE,iBAAe,QAAS,KAAK,KAAK,UAAW,EAAE,KAAK,CAAE,CAAE;AACzD;AAEO,IAAM,2BAA2B,CAAE,QAAiB;AAC1D,iBAAe,WAAY,GAAI;AAChC;","names":[]}
1
+ {"version":3,"sources":["../src/errors/elementor-error.ts","../src/errors/create-error.ts","../src/errors/ensure-error.ts","../src/debounce.ts"],"sourcesContent":["export type ElementorErrorOptions = {\n\tcause?: Error[ 'cause' ];\n\tcontext?: Record< string, unknown > | null;\n\tcode: string;\n};\n\nexport class ElementorError extends Error {\n\treadonly context: ElementorErrorOptions[ 'context' ];\n\treadonly code: ElementorErrorOptions[ 'code' ];\n\n\tconstructor( message: string, { code, context = null, cause = null }: ElementorErrorOptions ) {\n\t\tsuper( message, { cause } );\n\t\tthis.context = context;\n\t\tthis.code = code;\n\t}\n}\n","import { ElementorError, type ElementorErrorOptions } from './elementor-error';\n\nexport type CreateErrorParams = {\n\tcode: ElementorErrorOptions[ 'code' ];\n\tmessage: string;\n};\n\nexport const createError = < T extends ElementorErrorOptions[ 'context' ] >( { code, message }: CreateErrorParams ) => {\n\treturn class extends ElementorError {\n\t\tconstructor( { cause, context }: { cause?: ElementorErrorOptions[ 'cause' ]; context?: T } = {} ) {\n\t\t\tsuper( message, { cause, code, context } );\n\t\t}\n\t};\n};\n","export const ensureError = ( error: unknown ) => {\n\tif ( error instanceof Error ) {\n\t\treturn error;\n\t}\n\n\tlet message: string;\n\tlet cause: unknown = null;\n\n\ttry {\n\t\tmessage = JSON.stringify( error );\n\t} catch ( e ) {\n\t\tcause = e;\n\t\tmessage = 'Unable to stringify the thrown value';\n\t}\n\treturn new Error( `Unexpected non-error thrown: ${ message }`, { cause } );\n};\n","// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function debounce< TArgs extends any[] >( fn: ( ...args: TArgs ) => void, wait: number ) {\n\tlet timer: ReturnType< typeof setTimeout > | null = null;\n\n\tconst cancel = () => {\n\t\tif ( ! timer ) {\n\t\t\treturn;\n\t\t}\n\n\t\tclearTimeout( timer );\n\t\ttimer = null;\n\t};\n\n\tconst flush = ( ...args: TArgs ) => {\n\t\tcancel();\n\n\t\tfn( ...args );\n\t};\n\n\tconst run = ( ...args: TArgs ) => {\n\t\tcancel();\n\n\t\ttimer = setTimeout( () => {\n\t\t\tfn( ...args );\n\n\t\t\ttimer = null;\n\t\t}, wait );\n\t};\n\n\tconst pending = () => !! timer;\n\n\trun.flush = flush;\n\trun.cancel = cancel;\n\trun.pending = pending;\n\n\treturn run;\n}\n"],"mappings":";AAMO,IAAM,iBAAN,cAA6B,MAAM;AAAA,EAChC;AAAA,EACA;AAAA,EAET,YAAa,SAAiB,EAAE,MAAM,UAAU,MAAM,QAAQ,KAAK,GAA2B;AAC7F,UAAO,SAAS,EAAE,MAAM,CAAE;AAC1B,SAAK,UAAU;AACf,SAAK,OAAO;AAAA,EACb;AACD;;;ACRO,IAAM,cAAc,CAAkD,EAAE,MAAM,QAAQ,MAA0B;AACtH,SAAO,cAAc,eAAe;AAAA,IACnC,YAAa,EAAE,OAAO,QAAQ,IAA+D,CAAC,GAAI;AACjG,YAAO,SAAS,EAAE,OAAO,MAAM,QAAQ,CAAE;AAAA,IAC1C;AAAA,EACD;AACD;;;ACbO,IAAM,cAAc,CAAE,UAAoB;AAChD,MAAK,iBAAiB,OAAQ;AAC7B,WAAO;AAAA,EACR;AAEA,MAAI;AACJ,MAAI,QAAiB;AAErB,MAAI;AACH,cAAU,KAAK,UAAW,KAAM;AAAA,EACjC,SAAU,GAAI;AACb,YAAQ;AACR,cAAU;AAAA,EACX;AACA,SAAO,IAAI,MAAO,gCAAiC,OAAQ,IAAI,EAAE,MAAM,CAAE;AAC1E;;;ACdO,SAAS,SAAiC,IAAgC,MAAe;AAC/F,MAAI,QAAgD;AAEpD,QAAM,SAAS,MAAM;AACpB,QAAK,CAAE,OAAQ;AACd;AAAA,IACD;AAEA,iBAAc,KAAM;AACpB,YAAQ;AAAA,EACT;AAEA,QAAM,QAAQ,IAAK,SAAiB;AACnC,WAAO;AAEP,OAAI,GAAG,IAAK;AAAA,EACb;AAEA,QAAM,MAAM,IAAK,SAAiB;AACjC,WAAO;AAEP,YAAQ,WAAY,MAAM;AACzB,SAAI,GAAG,IAAK;AAEZ,cAAQ;AAAA,IACT,GAAG,IAAK;AAAA,EACT;AAEA,QAAM,UAAU,MAAM,CAAC,CAAE;AAEzB,MAAI,QAAQ;AACZ,MAAI,SAAS;AACb,MAAI,UAAU;AAEd,SAAO;AACR;","names":[]}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@elementor/utils",
3
3
  "description": "This package contains utility functions that are being used across the Elementor packages",
4
- "version": "0.3.0",
4
+ "version": "0.4.0",
5
5
  "private": false,
6
6
  "author": "Elementor Team",
7
7
  "homepage": "https://elementor.com/",
@@ -38,5 +38,8 @@
38
38
  "scripts": {
39
39
  "build": "tsup --config=../../tsup.build.ts",
40
40
  "dev": "tsup --config=../../tsup.dev.ts"
41
+ },
42
+ "devDependencies": {
43
+ "tsup": "^8.3.5"
41
44
  }
42
45
  }
@@ -0,0 +1,37 @@
1
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
2
+ export function debounce< TArgs extends any[] >( fn: ( ...args: TArgs ) => void, wait: number ) {
3
+ let timer: ReturnType< typeof setTimeout > | null = null;
4
+
5
+ const cancel = () => {
6
+ if ( ! timer ) {
7
+ return;
8
+ }
9
+
10
+ clearTimeout( timer );
11
+ timer = null;
12
+ };
13
+
14
+ const flush = ( ...args: TArgs ) => {
15
+ cancel();
16
+
17
+ fn( ...args );
18
+ };
19
+
20
+ const run = ( ...args: TArgs ) => {
21
+ cancel();
22
+
23
+ timer = setTimeout( () => {
24
+ fn( ...args );
25
+
26
+ timer = null;
27
+ }, wait );
28
+ };
29
+
30
+ const pending = () => !! timer;
31
+
32
+ run.flush = flush;
33
+ run.cancel = cancel;
34
+ run.pending = pending;
35
+
36
+ return run;
37
+ }
package/src/index.ts CHANGED
@@ -1,4 +1,4 @@
1
1
  export { ElementorError, createError, ensureError } from './errors';
2
2
  export type { ElementorErrorOptions, CreateErrorParams } from './errors';
3
3
 
4
- export * from './session-storage';
4
+ export { debounce } from './debounce';
@@ -1 +0,0 @@
1
- export * from './session-storage';
@@ -1,11 +0,0 @@
1
- export const getSessionStorageItem = < T >( key: string ): T | undefined => {
2
- return JSON.parse( sessionStorage.getItem( key ) || '{}' ).item;
3
- };
4
-
5
- export const setSessionStorageItem = ( key: string, item: unknown ) => {
6
- sessionStorage.setItem( key, JSON.stringify( { item } ) );
7
- };
8
-
9
- export const removeSessionStorageItem = ( key: string ) => {
10
- sessionStorage.removeItem( key );
11
- };