better-preact-use-state 1.0.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.
@@ -0,0 +1,3 @@
1
+ export * from './use-bool-state.mjs';
2
+ export * from './use-state.mjs';
3
+ //# sourceMappingURL=index.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../../src/hooks/index.mts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { useBoolState } from './use-bool-state.mjs';
2
+ export { useState } from './use-state.mjs';
3
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -0,0 +1,9 @@
1
+ export declare const useBoolState: (initialState: boolean) => [state: boolean, Readonly<{
2
+ setState: (next: boolean) => void;
3
+ setTrue: () => void;
4
+ setFalse: () => void;
5
+ resetState: () => void;
6
+ toggleState: () => void;
7
+ updateState: (updateFn: (v: boolean) => boolean) => void;
8
+ }>];
9
+ //# sourceMappingURL=use-bool-state.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-bool-state.d.mts","sourceRoot":"","sources":["../../src/hooks/use-bool-state.mts"],"names":[],"mappings":"AAGA,eAAO,MAAM,YAAY,iBACT,OAAO,KACpB,CACD,KAAK,EAAE,OAAO,EACd,QAAQ,CAAC;IACP,QAAQ,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAClC,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,WAAW,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,OAAO,KAAK,IAAI,CAAC;CAC1D,CAAC,CA+BH,CAAC"}
@@ -0,0 +1,32 @@
1
+ import { useCallback } from 'preact/hooks';
2
+ import { useState } from './use-state.mjs';
3
+
4
+ const useBoolState = (initialState) => {
5
+ const [state, setState, { resetState, updateState }] = useState(initialState);
6
+ const setTrue = useCallback(() => {
7
+ setState(true);
8
+ // eslint-disable-next-line react-hooks/exhaustive-deps
9
+ }, []);
10
+ const setFalse = useCallback(() => {
11
+ setState(false);
12
+ // eslint-disable-next-line react-hooks/exhaustive-deps
13
+ }, []);
14
+ const toggleState = useCallback(() => {
15
+ updateState((b) => !b);
16
+ // eslint-disable-next-line react-hooks/exhaustive-deps
17
+ }, []);
18
+ return [
19
+ state,
20
+ {
21
+ setState,
22
+ updateState,
23
+ setTrue,
24
+ setFalse,
25
+ toggleState,
26
+ resetState,
27
+ },
28
+ ];
29
+ };
30
+
31
+ export { useBoolState };
32
+ //# sourceMappingURL=use-bool-state.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-bool-state.mjs","sources":["../../src/hooks/use-bool-state.mts"],"sourcesContent":[null],"names":[],"mappings":";;;AAGa,MAAA,YAAY,GAAG,CAC1B,YAAqB,KAWnB;AACF,IAAA,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC,GAClD,QAAQ,CAAU,YAAY,CAAC;AAEjC,IAAA,MAAM,OAAO,GAAG,WAAW,CAAC,MAAK;QAC/B,QAAQ,CAAC,IAAI,CAAC;;KAEf,EAAE,EAAE,CAAC;AAEN,IAAA,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAK;QAChC,QAAQ,CAAC,KAAK,CAAC;;KAEhB,EAAE,EAAE,CAAC;AAEN,IAAA,MAAM,WAAW,GAAG,WAAW,CAAC,MAAK;QACnC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;;KAEvB,EAAE,EAAE,CAAC;IAEN,OAAO;QACL,KAAK;AACL,QAAA;YACE,QAAQ;YACR,WAAW;YACX,OAAO;YACP,QAAQ;YACR,WAAW;YACX,UAAU;AACX,SAAA;KACF;AACH;;;;"}
@@ -0,0 +1,5 @@
1
+ export declare const useState: <T>(initialState: T) => readonly [state: T, setState: (next: T) => void, Readonly<{
2
+ updateState: (updateFn: (v: T) => T) => void;
3
+ resetState: () => void;
4
+ }>];
5
+ //# sourceMappingURL=use-state.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-state.d.mts","sourceRoot":"","sources":["../../src/hooks/use-state.mts"],"names":[],"mappings":"AAGA,eAAO,MAAM,QAAQ,GAAI,CAAC,gBACV,CAAC,KACd,SAAS,CACV,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,EAC3B,QAAQ,CAAC;IACP,WAAW,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC;IAC7C,UAAU,EAAE,MAAM,IAAI,CAAC;CACxB,CAAC,CAaH,CAAC"}
@@ -0,0 +1,16 @@
1
+ import * as Preact from 'preact/hooks';
2
+
3
+ // eslint-disable-next-line @typescript-eslint/no-restricted-imports
4
+ const useState = (initialState) => {
5
+ const [state, setState] = Preact.useState(initialState);
6
+ const resetState = Preact.useCallback(() => {
7
+ setState(() => initialState);
8
+ }, [initialState]);
9
+ const updateState = Preact.useCallback((updateFn) => {
10
+ setState(updateFn);
11
+ }, []);
12
+ return [state, setState, { updateState, resetState }];
13
+ };
14
+
15
+ export { useState };
16
+ //# sourceMappingURL=use-state.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-state.mjs","sources":["../../src/hooks/use-state.mts"],"sourcesContent":[null],"names":[],"mappings":";;AAAA;AAGa,MAAA,QAAQ,GAAG,CACtB,YAAe,KAQb;AACF,IAAA,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAI,YAAY,CAAC;AAE1D,IAAA,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC,MAAK;AACzC,QAAA,QAAQ,CAAC,MAAM,YAAY,CAAC;AAC9B,KAAC,EAAE,CAAC,YAAY,CAAC,CAAC;IAElB,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,QAAqB,KAAI;QAC/D,QAAQ,CAAC,QAAQ,CAAC;KACnB,EAAE,EAAE,CAAC;IAEN,OAAO,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;AACvD;;;;"}
@@ -0,0 +1,2 @@
1
+ export * from './hooks/index.mjs';
2
+ //# sourceMappingURL=index.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../src/index.mts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC"}
package/esm/index.mjs ADDED
@@ -0,0 +1,3 @@
1
+ export { useBoolState } from './hooks/use-bool-state.mjs';
2
+ export { useState } from './hooks/use-state.mjs';
3
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
package/package.json ADDED
@@ -0,0 +1,62 @@
1
+ {
2
+ "name": "better-preact-use-state",
3
+ "version": "1.0.0",
4
+ "private": false,
5
+ "license": "MIT",
6
+ "author": "noshiro-pf <noshiro.pf@gmail.com>",
7
+ "sideEffects": false,
8
+ "type": "module",
9
+ "exports": {
10
+ ".": {
11
+ "import": {
12
+ "types": "./esm/index.d.mts",
13
+ "default": "./esm/index.mjs"
14
+ }
15
+ }
16
+ },
17
+ "files": [
18
+ "src",
19
+ "esm"
20
+ ],
21
+ "scripts": {
22
+ "build": "wireit",
23
+ "clean": "run-p clean:**",
24
+ "clean:build": "rimraf esm",
25
+ "clean:wireit": "rimraf .wireit/**",
26
+ "fmt": "yarn zz:prettier .",
27
+ "gi": "bash ../../../scripts/bash/index_ts_generator.sh ./src --min-depth 0 --ext .mts",
28
+ "lint": "yarn zz:eslint:src",
29
+ "lint:fix": "yarn zz:eslint:src --fix",
30
+ "pub": "yarn zz:publish",
31
+ "test": "yarn zz:vitest run",
32
+ "testw": "yarn zz:vitest watch",
33
+ "tsc": "yarn type-check",
34
+ "tscw": "tsc --noEmit --watch",
35
+ "type-check": "tsc --noEmit",
36
+ "zz:eslint": "ESLINT_USE_FLAT_CONFIG=true TIMING=1 eslint",
37
+ "zz:eslint:print-config": "yarn zz:eslint --print-config src/index.mts",
38
+ "zz:eslint:src": "yarn zz:eslint --config eslint.config.js './src/**/*'",
39
+ "zz:prettier": "prettier --cache --cache-strategy content --ignore-path ../../../.prettierignore --write",
40
+ "zz:publish": "yarn publish --no-git-tag-version --access=public",
41
+ "zz:vitest": "vitest --config ./configs/vitest.config.ts"
42
+ },
43
+ "devDependencies": {
44
+ "@noshiro/eslint-configs": "*",
45
+ "@noshiro/mono-utils": "*",
46
+ "preact": "^10.23.2"
47
+ },
48
+ "peerDependencies": {
49
+ "preact": ">=10"
50
+ },
51
+ "wireit": {
52
+ "pre-build": {
53
+ "command": "run-s clean:build gi type-check"
54
+ },
55
+ "build": {
56
+ "dependencies": [
57
+ "pre-build"
58
+ ],
59
+ "command": "rollup --config ./configs/rollup.config.ts --configPlugin typescript --configImportAttributesKey with"
60
+ }
61
+ }
62
+ }
@@ -0,0 +1,2 @@
1
+ export * from './use-bool-state.mjs';
2
+ export * from './use-state.mjs';
@@ -0,0 +1,46 @@
1
+ import { useCallback } from 'preact/hooks';
2
+ import { useState } from './use-state.mjs';
3
+
4
+ export const useBoolState = (
5
+ initialState: boolean,
6
+ ): [
7
+ state: boolean,
8
+ Readonly<{
9
+ setState: (next: boolean) => void;
10
+ setTrue: () => void;
11
+ setFalse: () => void;
12
+ resetState: () => void;
13
+ toggleState: () => void;
14
+ updateState: (updateFn: (v: boolean) => boolean) => void;
15
+ }>,
16
+ ] => {
17
+ const [state, setState, { resetState, updateState }] =
18
+ useState<boolean>(initialState);
19
+
20
+ const setTrue = useCallback(() => {
21
+ setState(true);
22
+ // eslint-disable-next-line react-hooks/exhaustive-deps
23
+ }, []);
24
+
25
+ const setFalse = useCallback(() => {
26
+ setState(false);
27
+ // eslint-disable-next-line react-hooks/exhaustive-deps
28
+ }, []);
29
+
30
+ const toggleState = useCallback(() => {
31
+ updateState((b) => !b);
32
+ // eslint-disable-next-line react-hooks/exhaustive-deps
33
+ }, []);
34
+
35
+ return [
36
+ state,
37
+ {
38
+ setState,
39
+ updateState,
40
+ setTrue,
41
+ setFalse,
42
+ toggleState,
43
+ resetState,
44
+ },
45
+ ];
46
+ };
@@ -0,0 +1,25 @@
1
+ // eslint-disable-next-line @typescript-eslint/no-restricted-imports
2
+ import * as Preact from 'preact/hooks';
3
+
4
+ export const useState = <T,>(
5
+ initialState: T,
6
+ ): readonly [
7
+ state: T,
8
+ setState: (next: T) => void,
9
+ Readonly<{
10
+ updateState: (updateFn: (v: T) => T) => void;
11
+ resetState: () => void;
12
+ }>,
13
+ ] => {
14
+ const [state, setState] = Preact.useState<T>(initialState);
15
+
16
+ const resetState = Preact.useCallback(() => {
17
+ setState(() => initialState);
18
+ }, [initialState]);
19
+
20
+ const updateState = Preact.useCallback((updateFn: (v: T) => T) => {
21
+ setState(updateFn);
22
+ }, []);
23
+
24
+ return [state, setState, { updateState, resetState }];
25
+ };
package/src/index.mts ADDED
@@ -0,0 +1 @@
1
+ export * from './hooks/index.mjs';