@hrnec06/util 1.5.2 → 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.
@@ -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,11 @@
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
+ export declare function disposables(): Disposables;
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.disposables = disposables;
4
+ 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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"}
@@ -1,5 +1,5 @@
1
1
  export declare class Flags {
2
- private flags;
2
+ protected flags: number;
3
3
  constructor(initialFlags?: number);
4
4
  setFlags(flags: number): Flags;
5
5
  getFlags(): number;
@@ -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,11 @@
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
+ export declare function disposables(): Disposables;
@@ -0,0 +1,54 @@
1
+ export function disposables() {
2
+ const _disposables = [];
3
+ const api = {
4
+ addEventListener: (element, name, listener, options) => {
5
+ element.addEventListener(name, listener, options);
6
+ return api.add(() => element.removeEventListener(name, listener, options));
7
+ },
8
+ requestAnimationFrame: (...args) => {
9
+ const raf = requestAnimationFrame(...args);
10
+ return api.add(() => cancelAnimationFrame(raf));
11
+ },
12
+ nextFrame: (...args) => {
13
+ return api.requestAnimationFrame(() => {
14
+ return api.requestAnimationFrame(...args);
15
+ });
16
+ },
17
+ setTimeout: (...args) => {
18
+ const t = setTimeout(...args);
19
+ return api.add(() => clearTimeout(t));
20
+ },
21
+ style: (node, property, value) => {
22
+ const previous = node.style.getPropertyValue(property);
23
+ Object.assign(node.style, { [property]: value });
24
+ return api.add(() => {
25
+ Object.assign(node.style, { [property]: previous });
26
+ });
27
+ },
28
+ group: (callback) => {
29
+ const d = disposables();
30
+ callback(d);
31
+ return api.add(() => d.dispose());
32
+ },
33
+ add: (callback) => {
34
+ if (!_disposables.includes(callback)) {
35
+ _disposables.push(callback);
36
+ }
37
+ return () => {
38
+ const idx = _disposables.indexOf(callback);
39
+ if (idx >= 0) {
40
+ for (let dispose of _disposables.splice(idx, 1)) {
41
+ dispose();
42
+ }
43
+ }
44
+ };
45
+ },
46
+ dispose: () => {
47
+ for (const dispose of _disposables.splice(0)) {
48
+ dispose();
49
+ }
50
+ },
51
+ };
52
+ return api;
53
+ }
54
+ //# 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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"}
@@ -1,5 +1,5 @@
1
1
  export declare class Flags {
2
- private flags;
2
+ protected flags: number;
3
3
  constructor(initialFlags?: number);
4
4
  setFlags(flags: number): Flags;
5
5
  getFlags(): number;
@@ -1 +1 @@
1
- {"version":3,"file":"Flags.js","sourceRoot":"","sources":["../../../src/lib/Flags.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,KAAK;IAET,KAAK,CAAS;IAEtB,YACC,eAAuB,CAAC;QAGxB,IAAI,CAAC,KAAK,GAAG,YAAY,CAAC;IAC3B,CAAC;IAEM,QAAQ,CAAC,KAAa;QAE5B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QAEnB,OAAO,IAAI,CAAC;IACb,CAAC;IAEM,QAAQ;QAEd,OAAO,IAAI,CAAC,KAAK,CAAC;IACnB,CAAC;IAEM,OAAO,CAAC,IAAY;QAE1B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;QAEjC,OAAO,IAAI,CAAC;IACb,CAAC;IAEM,UAAU,CAAC,IAAY;QAE7B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC;QAElC,OAAO,IAAI,CAAC;IACb,CAAC;IAEM,UAAU,CAAC,IAAY;QAE7B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;QAEjC,OAAO,IAAI,CAAC;IACb,CAAC;IAEM,OAAO,CAAC,IAAY;QAE1B,OAAO,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC;IACrC,CAAC;CACD"}
1
+ {"version":3,"file":"Flags.js","sourceRoot":"","sources":["../../../src/lib/Flags.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,KAAK;IAEP,KAAK,CAAS;IAExB,YACC,eAAuB,CAAC;QAGxB,IAAI,CAAC,KAAK,GAAG,YAAY,CAAC;IAC3B,CAAC;IAEM,QAAQ,CAAC,KAAa;QAE5B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QAEnB,OAAO,IAAI,CAAC;IACb,CAAC;IAEM,QAAQ;QAEd,OAAO,IAAI,CAAC,KAAK,CAAC;IACnB,CAAC;IAEM,OAAO,CAAC,IAAY;QAE1B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;QAEjC,OAAO,IAAI,CAAC;IACb,CAAC;IAEM,UAAU,CAAC,IAAY;QAE7B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC;QAElC,OAAO,IAAI,CAAC;IACb,CAAC;IAEM,UAAU,CAAC,IAAY;QAE7B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;QAEjC,OAAO,IAAI,CAAC;IACb,CAAC;IAEM,OAAO,CAAC,IAAY;QAE1B,OAAO,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC;IACrC,CAAC;CACD"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hrnec06/util",
3
- "version": "1.5.2",
3
+ "version": "1.6.0",
4
4
  "description": "A set of utilities",
5
5
  "type": "module",
6
6
  "main": "dist/esm/index.js",