@hrnec06/util 1.5.3 → 1.6.1

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.
@@ -10,4 +10,5 @@ export * from './lib/UnitsCalculator.js';
10
10
  export * from './lib/Listenable.js';
11
11
  export * from './lib/AsyncClass.js';
12
12
  export * from './lib/Flags.js';
13
+ export * from './lib/Disposables.js';
13
14
  export * from './types.js';
package/dist/cjs/index.js CHANGED
@@ -26,5 +26,6 @@ __exportStar(require("./lib/UnitsCalculator.js"), exports);
26
26
  __exportStar(require("./lib/Listenable.js"), exports);
27
27
  __exportStar(require("./lib/AsyncClass.js"), exports);
28
28
  __exportStar(require("./lib/Flags.js"), exports);
29
+ __exportStar(require("./lib/Disposables.js"), exports);
29
30
  __exportStar(require("./types.js"), exports);
30
31
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6CAA2B;AAC3B,+CAA6B;AAC7B,8CAA4B;AAC5B,8CAA4B;AAC5B,8CAA4B;AAC5B,4CAA0B;AAC1B,gDAA8B;AAC9B,6CAA2B;AAE3B,2DAAyC;AACzC,sDAAoC;AACpC,sDAAoC;AACpC,iDAA+B;AAE/B,6CAA2B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6CAA2B;AAC3B,+CAA6B;AAC7B,8CAA4B;AAC5B,8CAA4B;AAC5B,8CAA4B;AAC5B,4CAA0B;AAC1B,gDAA8B;AAC9B,6CAA2B;AAE3B,2DAAyC;AACzC,sDAAoC;AACpC,sDAAoC;AACpC,iDAA+B;AAC/B,uDAAqC;AAErC,6CAA2B"}
@@ -0,0 +1,14 @@
1
+ export interface Disposables {
2
+ addEventListener: <TEventName extends keyof WindowEventMap>(element: HTMLElement | Window | Document, name: TEventName, listener: (event: WindowEventMap[TEventName]) => any, options?: boolean | AddEventListenerOptions | undefined) => () => void;
3
+ requestAnimationFrame: (callback: FrameRequestCallback) => () => void;
4
+ nextFrame: (callback: FrameRequestCallback) => () => void;
5
+ setTimeout: (callback: (_: void) => void, delay?: number | undefined) => () => void;
6
+ style: (node: ElementCSSInlineStyle, property: string, value: string) => () => void;
7
+ group: (callback: (d: unknown) => void) => () => void;
8
+ add: (callback: () => void) => () => void;
9
+ dispose: () => void;
10
+ }
11
+ /**
12
+ * @credit https://github.com/tailwindlabs/headlessui/blob/main/packages/%40headlessui-react/src/utils/disposables.ts
13
+ */
14
+ export declare function disposables(): Disposables;
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.disposables = disposables;
4
+ /**
5
+ * @credit https://github.com/tailwindlabs/headlessui/blob/main/packages/%40headlessui-react/src/utils/disposables.ts
6
+ */
7
+ function disposables() {
8
+ const _disposables = [];
9
+ const api = {
10
+ addEventListener: (element, name, listener, options) => {
11
+ element.addEventListener(name, listener, options);
12
+ return api.add(() => element.removeEventListener(name, listener, options));
13
+ },
14
+ requestAnimationFrame: (...args) => {
15
+ const raf = requestAnimationFrame(...args);
16
+ return api.add(() => cancelAnimationFrame(raf));
17
+ },
18
+ nextFrame: (...args) => {
19
+ return api.requestAnimationFrame(() => {
20
+ return api.requestAnimationFrame(...args);
21
+ });
22
+ },
23
+ setTimeout: (...args) => {
24
+ const t = setTimeout(...args);
25
+ return api.add(() => clearTimeout(t));
26
+ },
27
+ style: (node, property, value) => {
28
+ const previous = node.style.getPropertyValue(property);
29
+ Object.assign(node.style, { [property]: value });
30
+ return api.add(() => {
31
+ Object.assign(node.style, { [property]: previous });
32
+ });
33
+ },
34
+ group: (callback) => {
35
+ const d = disposables();
36
+ callback(d);
37
+ return api.add(() => d.dispose());
38
+ },
39
+ add: (callback) => {
40
+ if (!_disposables.includes(callback)) {
41
+ _disposables.push(callback);
42
+ }
43
+ return () => {
44
+ const idx = _disposables.indexOf(callback);
45
+ if (idx >= 0) {
46
+ for (let dispose of _disposables.splice(idx, 1)) {
47
+ dispose();
48
+ }
49
+ }
50
+ };
51
+ },
52
+ dispose: () => {
53
+ for (const dispose of _disposables.splice(0)) {
54
+ dispose();
55
+ }
56
+ },
57
+ };
58
+ return api;
59
+ }
60
+ //# sourceMappingURL=Disposables.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Disposables.js","sourceRoot":"","sources":["../../../src/lib/Disposables.ts"],"names":[],"mappings":"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"}
@@ -33,4 +33,5 @@ export type TypeOfMap = {
33
33
  export type ClassInitializer<C extends abstract new (...args: any) => any, Strict extends boolean = true> = Strict extends true ? (new (...params: ConstructorParameters<C>) => InstanceType<C>) : (new (...args: any[]) => InstanceType<C>);
34
34
  export declare namespace ReactUtils {
35
35
  type SetState<T> = React.Dispatch<React.SetStateAction<T>>;
36
+ type State<T> = [T, SetState<T>];
36
37
  }
@@ -10,4 +10,5 @@ export * from './lib/UnitsCalculator.js';
10
10
  export * from './lib/Listenable.js';
11
11
  export * from './lib/AsyncClass.js';
12
12
  export * from './lib/Flags.js';
13
+ export * from './lib/Disposables.js';
13
14
  export * from './types.js';
package/dist/esm/index.js CHANGED
@@ -10,5 +10,6 @@ export * from './lib/UnitsCalculator.js';
10
10
  export * from './lib/Listenable.js';
11
11
  export * from './lib/AsyncClass.js';
12
12
  export * from './lib/Flags.js';
13
+ export * from './lib/Disposables.js';
13
14
  export * from './types.js';
14
15
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAE3B,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAE/B,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAE3B,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AAErC,cAAc,YAAY,CAAC"}
@@ -0,0 +1,14 @@
1
+ export interface Disposables {
2
+ addEventListener: <TEventName extends keyof WindowEventMap>(element: HTMLElement | Window | Document, name: TEventName, listener: (event: WindowEventMap[TEventName]) => any, options?: boolean | AddEventListenerOptions | undefined) => () => void;
3
+ requestAnimationFrame: (callback: FrameRequestCallback) => () => void;
4
+ nextFrame: (callback: FrameRequestCallback) => () => void;
5
+ setTimeout: (callback: (_: void) => void, delay?: number | undefined) => () => void;
6
+ style: (node: ElementCSSInlineStyle, property: string, value: string) => () => void;
7
+ group: (callback: (d: unknown) => void) => () => void;
8
+ add: (callback: () => void) => () => void;
9
+ dispose: () => void;
10
+ }
11
+ /**
12
+ * @credit https://github.com/tailwindlabs/headlessui/blob/main/packages/%40headlessui-react/src/utils/disposables.ts
13
+ */
14
+ export declare function disposables(): Disposables;
@@ -0,0 +1,57 @@
1
+ /**
2
+ * @credit https://github.com/tailwindlabs/headlessui/blob/main/packages/%40headlessui-react/src/utils/disposables.ts
3
+ */
4
+ export function disposables() {
5
+ const _disposables = [];
6
+ const api = {
7
+ addEventListener: (element, name, listener, options) => {
8
+ element.addEventListener(name, listener, options);
9
+ return api.add(() => element.removeEventListener(name, listener, options));
10
+ },
11
+ requestAnimationFrame: (...args) => {
12
+ const raf = requestAnimationFrame(...args);
13
+ return api.add(() => cancelAnimationFrame(raf));
14
+ },
15
+ nextFrame: (...args) => {
16
+ return api.requestAnimationFrame(() => {
17
+ return api.requestAnimationFrame(...args);
18
+ });
19
+ },
20
+ setTimeout: (...args) => {
21
+ const t = setTimeout(...args);
22
+ return api.add(() => clearTimeout(t));
23
+ },
24
+ style: (node, property, value) => {
25
+ const previous = node.style.getPropertyValue(property);
26
+ Object.assign(node.style, { [property]: value });
27
+ return api.add(() => {
28
+ Object.assign(node.style, { [property]: previous });
29
+ });
30
+ },
31
+ group: (callback) => {
32
+ const d = disposables();
33
+ callback(d);
34
+ return api.add(() => d.dispose());
35
+ },
36
+ add: (callback) => {
37
+ if (!_disposables.includes(callback)) {
38
+ _disposables.push(callback);
39
+ }
40
+ return () => {
41
+ const idx = _disposables.indexOf(callback);
42
+ if (idx >= 0) {
43
+ for (let dispose of _disposables.splice(idx, 1)) {
44
+ dispose();
45
+ }
46
+ }
47
+ };
48
+ },
49
+ dispose: () => {
50
+ for (const dispose of _disposables.splice(0)) {
51
+ dispose();
52
+ }
53
+ },
54
+ };
55
+ return api;
56
+ }
57
+ //# sourceMappingURL=Disposables.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Disposables.js","sourceRoot":"","sources":["../../../src/lib/Disposables.ts"],"names":[],"mappings":"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"}
@@ -33,4 +33,5 @@ export type TypeOfMap = {
33
33
  export type ClassInitializer<C extends abstract new (...args: any) => any, Strict extends boolean = true> = Strict extends true ? (new (...params: ConstructorParameters<C>) => InstanceType<C>) : (new (...args: any[]) => InstanceType<C>);
34
34
  export declare namespace ReactUtils {
35
35
  type SetState<T> = React.Dispatch<React.SetStateAction<T>>;
36
+ type State<T> = [T, SetState<T>];
36
37
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hrnec06/util",
3
- "version": "1.5.3",
3
+ "version": "1.6.1",
4
4
  "description": "A set of utilities",
5
5
  "type": "module",
6
6
  "main": "dist/esm/index.js",