@cleanweb/oore 2.0.0-alpha.26 → 2.0.0-alpha.28

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.
@@ -3,5 +3,8 @@ type TDebounceConfig = Exclude<Parameters<typeof debounce>[1], number>;
3
3
  type TDelayConfig = number | TDebounceConfig & {
4
4
  staging?: boolean;
5
5
  };
6
- export declare function useDebouncedState<T extends any>(init: T, config: TDelayConfig): readonly [T, (value: T) => void, T];
6
+ export declare function useDebouncedState<T extends any>(init: T, config: TDelayConfig): readonly [T, {
7
+ (value: T): void;
8
+ flush: (isEager?: true) => void;
9
+ }, T];
7
10
  export {};
@@ -9,11 +9,15 @@ function useDebouncedState(init, config) {
9
9
  const enableStaging = typeof config === 'object' && config.staging === true;
10
10
  const debounceArgs = [setDebouncedValue, config];
11
11
  const debouncedSetter = (0, react_1.useCallback)((0, _1.debounce)(...debounceArgs), debounceArgs);
12
- const setter = (0, react_1.useCallback)((value) => {
13
- if (enableStaging) {
14
- setStagedValue(value);
15
- }
16
- debouncedSetter(value);
12
+ const setter = (0, react_1.useMemo)(() => {
13
+ const output = (value) => {
14
+ if (enableStaging) {
15
+ setStagedValue(value);
16
+ }
17
+ debouncedSetter(value);
18
+ };
19
+ output.flush = debouncedSetter.flush;
20
+ return output;
17
21
  }, [enableStaging, debouncedSetter]);
18
22
  return [debouncedValue, setter, stagedValue];
19
23
  }
@@ -5,6 +5,9 @@
5
5
  export * from './mount-state.js';
6
6
  export * from './rerender.js';
7
7
  export * from './use-component/index.js';
8
+ export * from './object-gate.js';
9
+ export * from './debounce/index.js';
10
+ export * from './debounce/react.js';
8
11
  export * from './type-guards.js';
9
12
  /**
10
13
  * An empty function.
@@ -22,6 +22,9 @@ exports.noOp = void 0;
22
22
  __exportStar(require("./mount-state.js"), exports);
23
23
  __exportStar(require("./rerender.js"), exports);
24
24
  __exportStar(require("./use-component/index.js"), exports);
25
+ __exportStar(require("./object-gate.js"), exports);
26
+ __exportStar(require("./debounce/index.js"), exports);
27
+ __exportStar(require("./debounce/react.js"), exports);
25
28
  __exportStar(require("./type-guards.js"), exports);
26
29
  /**
27
30
  * An empty function.
@@ -3,5 +3,8 @@ type TDebounceConfig = Exclude<Parameters<typeof debounce>[1], number>;
3
3
  type TDelayConfig = number | TDebounceConfig & {
4
4
  staging?: boolean;
5
5
  };
6
- export declare function useDebouncedState<T extends any>(init: T, config: TDelayConfig): readonly [T, (value: T) => void, T];
6
+ export declare function useDebouncedState<T extends any>(init: T, config: TDelayConfig): readonly [T, {
7
+ (value: T): void;
8
+ flush: (isEager?: true) => void;
9
+ }, T];
7
10
  export {};
@@ -1,4 +1,4 @@
1
- import { useCallback, useState } from 'react.js';
1
+ import { useCallback, useMemo, useState } from 'react.js';
2
2
  import { debounce } from './index.js';
3
3
  export function useDebouncedState(init, config) {
4
4
  const [debouncedValue, setDebouncedValue] = useState(init);
@@ -6,11 +6,15 @@ export function useDebouncedState(init, config) {
6
6
  const enableStaging = typeof config === 'object' && config.staging === true;
7
7
  const debounceArgs = [setDebouncedValue, config];
8
8
  const debouncedSetter = useCallback(debounce(...debounceArgs), debounceArgs);
9
- const setter = useCallback((value) => {
10
- if (enableStaging) {
11
- setStagedValue(value);
12
- }
13
- debouncedSetter(value);
9
+ const setter = useMemo(() => {
10
+ const output = (value) => {
11
+ if (enableStaging) {
12
+ setStagedValue(value);
13
+ }
14
+ debouncedSetter(value);
15
+ };
16
+ output.flush = debouncedSetter.flush;
17
+ return output;
14
18
  }, [enableStaging, debouncedSetter]);
15
19
  return [debouncedValue, setter, stagedValue];
16
20
  }
@@ -5,6 +5,9 @@
5
5
  export * from './mount-state.js';
6
6
  export * from './rerender.js';
7
7
  export * from './use-component/index.js';
8
+ export * from './object-gate.js';
9
+ export * from './debounce/index.js';
10
+ export * from './debounce/react.js';
8
11
  export * from './type-guards.js';
9
12
  /**
10
13
  * An empty function.
@@ -5,6 +5,9 @@
5
5
  export * from './mount-state.js';
6
6
  export * from './rerender.js';
7
7
  export * from './use-component/index.js';
8
+ export * from './object-gate.js';
9
+ export * from './debounce/index.js';
10
+ export * from './debounce/react.js';
8
11
  export * from './type-guards.js';
9
12
  /**
10
13
  * An empty function.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cleanweb/oore",
3
- "version": "2.0.0-alpha.26",
3
+ "version": "2.0.0-alpha.28",
4
4
  "description": "A library of helpers for writing cleaner React function components with object-oriented patterns.",
5
5
  "engines": {
6
6
  "node": ">=22"