react-state-monad 1.0.6 → 1.0.8

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/index.ts CHANGED
@@ -6,4 +6,4 @@ export * from "./src/hooks/useRemapArray";
6
6
  export * from "./src/hooks/useStateObject";
7
7
  export * from "./src/stateObject";
8
8
 
9
-
9
+ export default this;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "react-state-monad",
3
3
  "type": "module",
4
- "version": "1.0.6",
4
+ "version": "1.0.8",
5
5
  "description": "A set of hooks to manage/transform/filter states with monads in React",
6
6
  "keywords": [
7
7
  "maybe",
@@ -14,8 +14,8 @@
14
14
  ],
15
15
  "scripts": {
16
16
  "validateTypes": "tsc --noEmit",
17
- "build": "tsup src/index.ts --format cjs,esm --dts",
18
- "cleanBuild" : "rm -rf dist"
17
+ "build": "tsup index.ts --format cjs,esm --dts",
18
+ "cleanBuild": "rm -rf dist"
19
19
  },
20
20
  "dependencies": {
21
21
  "react": "^19.0.0"
@@ -31,7 +31,10 @@
31
31
  "url": "https://github.com/alvmivan"
32
32
  },
33
33
  "license": "GPL-3.0",
34
- "main": "dist/index.js",
35
- "module": "dist/index.mjs",
36
- "types": "dist/types/index.d.ts"
34
+ "main": "dist/index.js",
35
+ "module": "dist/index.mjs",
36
+ "types": "dist/types/index.d.ts"
37
+
38
+
39
+
37
40
  }
@@ -1,5 +1,7 @@
1
1
  import {StateObject} from "../stateObject";
2
2
  import {ValidState} from "../implementations/validState";
3
+ import {useState} from "react";
4
+ import {useStateObject} from "./useStateObject";
3
5
 
4
6
  /**
5
7
  * Hook that maps each element in an array within a StateObject to a new StateObject,
@@ -30,4 +32,19 @@ export function useRemapArray<T>(state: StateObject<T[]>): StateObject<T>[] {
30
32
  }
31
33
 
32
34
  return result // Return the array of StateObjects representing each element.
33
- }
35
+ }
36
+
37
+
38
+ /**
39
+ * Hook that takes an array of StateObjects and returns a new StateObject containing that array,
40
+ * allowing for updates to the entire array while keeping it synchronized within a single StateObject.
41
+ *
42
+ * @template T - The type of the elements in the array.
43
+ * @param states - The array of StateObjects.
44
+ * @returns A new StateObject containing the array of StateObjects, allowing for updates to the whole array.
45
+ */
46
+ export function useArrayState<T>(states: StateObject<T>[]): StateObject<T[]> {
47
+
48
+ return useStateObject(states.filter(state => state.hasValue).map(state => state.value));
49
+
50
+ }
package/tsconfig.json CHANGED
@@ -1,15 +1,16 @@
1
1
  {
2
2
  "compilerOptions": {
3
- "module": "ESNext", // Para exportar módulos ES6
4
- "target": "ESNext", // Para tener soporte de sintaxis moderna
5
- "declaration": true, // Para generar archivos de tipo .d.ts
6
- "declarationDir": "dist/types", // Para poner los archivos .d.ts en un directorio separado
7
- "outDir": "dist", // Para compilar el código en dist/
8
- "moduleResolution": "Node", // Para resolución de módulos similar a Node.js
9
- "esModuleInterop": true, // Para interoperabilidad con módulos CommonJS
10
- "strict": true // Para que TypeScript sea más estricto en el tipo de los archivos
3
+ "module": "ESNext",
4
+ "target": "ESNext",
5
+ "declaration": true,
6
+ "declarationDir": "dist/types",
7
+ "outDir": "dist",
8
+ "moduleResolution": "Node",
9
+ "esModuleInterop": true,
10
+ "strict": true
11
11
  },
12
12
  "include": [
13
- "src/**/*"
13
+ "src/**/*",
14
+ "index.ts"
14
15
  ]
15
- }
16
+ }