@ehfuse/forma 1.2.0 → 1.3.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.
@@ -88,6 +88,23 @@ export declare class FieldStore<T extends Record<string, any>> {
88
88
  * @returns 초기값에서 변경되었는지 여부 / Whether changed from initial values
89
89
  */
90
90
  isModified(): boolean;
91
+ /**
92
+ * 특정 필드가 존재하는지 확인 / Check if a specific field exists
93
+ * @param path 필드 경로 (dot notation 지원) / Field path (supports dot notation)
94
+ * @returns 필드 존재 여부 / Whether the field exists
95
+ */
96
+ hasField(path: string): boolean;
97
+ /**
98
+ * 특정 필드를 제거 / Remove a specific field
99
+ * @param path 필드 경로 (dot notation 지원) / Field path (supports dot notation)
100
+ */
101
+ removeField(path: string): void;
102
+ /**
103
+ * 전역 상태 변경에 구독 / Subscribe to global state changes
104
+ * @param callback 상태 변경 시 실행될 콜백 / Callback to execute on state change
105
+ * @returns 구독 해제 함수 / Unsubscribe function
106
+ */
107
+ subscribeToAll(callback: (values: T) => void): () => void;
91
108
  /**
92
109
  * 초기값으로 리셋 / Reset to initial values
93
110
  */
@@ -1 +1 @@
1
- {"version":3,"file":"FieldStore.d.ts","sourceRoot":"","sources":["../../core/FieldStore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAIH;;;;;;GAMG;AACH,qBAAa,UAAU,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IACjD,OAAO,CAAC,MAAM,CACA;IACd,OAAO,CAAC,oBAAoB,CAA2C;IACvE,OAAO,CAAC,aAAa,CAAI;IACzB,OAAO,CAAC,eAAe,CAAyB;gBAEpC,aAAa,EAAE,CAAC;IAW5B;;;;;OAKG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,GAAG,MAAM,GAAG,GAAG;IAc1C;;;;;;OAMG;IACH,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC,GAAG,MAAM,EAAE,QAAQ,EAAE,MAAM,IAAI;IAuC3D;;;;;OAKG;IACH,eAAe,CAAC,QAAQ,EAAE,MAAM,IAAI;IAOpC;;;;;OAKG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,GAAG,MAAM,EAAE,KAAK,EAAE,GAAG;IAkFhD;;;OAGG;IACH,SAAS,IAAI,CAAC;IAUd;;;OAGG;IACH,SAAS,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;IAM/B;;;OAGG;IACH,gBAAgB,CAAC,gBAAgB,EAAE,CAAC;IAyBpC;;;OAGG;IACH,UAAU,IAAI,OAAO;IAOrB;;OAEG;IACH,KAAK;IAIL;;OAEG;IACH,OAAO;CAIV"}
1
+ {"version":3,"file":"FieldStore.d.ts","sourceRoot":"","sources":["../../core/FieldStore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAIH;;;;;;GAMG;AACH,qBAAa,UAAU,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IACjD,OAAO,CAAC,MAAM,CACA;IACd,OAAO,CAAC,oBAAoB,CAA2C;IACvE,OAAO,CAAC,aAAa,CAAI;IACzB,OAAO,CAAC,eAAe,CAAyB;gBAEpC,aAAa,EAAE,CAAC;IAW5B;;;;;OAKG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,GAAG,MAAM,GAAG,GAAG;IAc1C;;;;;;OAMG;IACH,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC,GAAG,MAAM,EAAE,QAAQ,EAAE,MAAM,IAAI;IAuC3D;;;;;OAKG;IACH,eAAe,CAAC,QAAQ,EAAE,MAAM,IAAI;IAOpC;;;;;OAKG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,GAAG,MAAM,EAAE,KAAK,EAAE,GAAG;IAkFhD;;;OAGG;IACH,SAAS,IAAI,CAAC;IAUd;;;OAGG;IACH,SAAS,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;IAM/B;;;OAGG;IACH,gBAAgB,CAAC,gBAAgB,EAAE,CAAC;IAyBpC;;;OAGG;IACH,UAAU,IAAI,OAAO;IAOrB;;;;OAIG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAU/B;;;OAGG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAyC/B;;;;OAIG;IACH,cAAc,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,IAAI,GAAG,MAAM,IAAI;IAYzD;;OAEG;IACH,KAAK;IAIL;;OAEG;IACH,OAAO;CAKV"}
@@ -246,6 +246,76 @@ class FieldStore {
246
246
  const currentValues = this.getValues();
247
247
  return (JSON.stringify(currentValues) !== JSON.stringify(this.initialValues));
248
248
  }
249
+ /**
250
+ * 특정 필드가 존재하는지 확인 / Check if a specific field exists
251
+ * @param path 필드 경로 (dot notation 지원) / Field path (supports dot notation)
252
+ * @returns 필드 존재 여부 / Whether the field exists
253
+ */
254
+ hasField(path) {
255
+ const currentValues = this.getValues();
256
+ try {
257
+ const value = (0, dotNotation_1.getNestedValue)(currentValues, path);
258
+ return value !== undefined;
259
+ }
260
+ catch {
261
+ return false;
262
+ }
263
+ }
264
+ /**
265
+ * 특정 필드를 제거 / Remove a specific field
266
+ * @param path 필드 경로 (dot notation 지원) / Field path (supports dot notation)
267
+ */
268
+ removeField(path) {
269
+ const currentValues = this.getValues();
270
+ const pathParts = path.split('.');
271
+ if (pathParts.length === 1) {
272
+ // 루트 레벨 필드 제거 / Remove root level field
273
+ delete currentValues[pathParts[0]];
274
+ this.fields.delete(pathParts[0]);
275
+ }
276
+ else {
277
+ // 중첩된 필드 제거 / Remove nested field
278
+ const parentPath = pathParts.slice(0, -1).join('.');
279
+ const fieldName = pathParts[pathParts.length - 1];
280
+ const parent = (0, dotNotation_1.getNestedValue)(currentValues, parentPath);
281
+ if (parent && typeof parent === 'object') {
282
+ if (Array.isArray(parent)) {
283
+ const index = parseInt(fieldName, 10);
284
+ if (!isNaN(index) && index >= 0 && index < parent.length) {
285
+ parent.splice(index, 1);
286
+ }
287
+ }
288
+ else {
289
+ delete parent[fieldName];
290
+ }
291
+ }
292
+ }
293
+ this.setValues(currentValues);
294
+ // 해당 필드의 구독자들에게 알림 / Notify subscribers of this field
295
+ this.dotNotationListeners.forEach((listeners, subscribedPath) => {
296
+ if (subscribedPath === path) {
297
+ listeners.forEach((listener) => listener());
298
+ }
299
+ });
300
+ // 전역 구독자들 알림 / Notify global subscribers
301
+ if (this.globalListeners.size > 0) {
302
+ this.globalListeners.forEach((listener) => listener());
303
+ }
304
+ }
305
+ /**
306
+ * 전역 상태 변경에 구독 / Subscribe to global state changes
307
+ * @param callback 상태 변경 시 실행될 콜백 / Callback to execute on state change
308
+ * @returns 구독 해제 함수 / Unsubscribe function
309
+ */
310
+ subscribeToAll(callback) {
311
+ const wrappedCallback = () => {
312
+ callback(this.getValues());
313
+ };
314
+ this.globalListeners.add(wrappedCallback);
315
+ return () => {
316
+ this.globalListeners.delete(wrappedCallback);
317
+ };
318
+ }
249
319
  /**
250
320
  * 초기값으로 리셋 / Reset to initial values
251
321
  */
@@ -258,6 +328,7 @@ class FieldStore {
258
328
  destroy() {
259
329
  this.fields.clear();
260
330
  this.globalListeners.clear();
331
+ this.dotNotationListeners.clear();
261
332
  }
262
333
  }
263
334
  exports.FieldStore = FieldStore;
@@ -1 +1 @@
1
- {"version":3,"file":"FieldStore.js","sourceRoot":"","sources":["../../core/FieldStore.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"FieldStore.js","sourceRoot":"","sources":["../../core/FieldStore.ts"],"names":[],"mappings":"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"}
@@ -88,6 +88,23 @@ export declare class FieldStore<T extends Record<string, any>> {
88
88
  * @returns 초기값에서 변경되었는지 여부 / Whether changed from initial values
89
89
  */
90
90
  isModified(): boolean;
91
+ /**
92
+ * 특정 필드가 존재하는지 확인 / Check if a specific field exists
93
+ * @param path 필드 경로 (dot notation 지원) / Field path (supports dot notation)
94
+ * @returns 필드 존재 여부 / Whether the field exists
95
+ */
96
+ hasField(path: string): boolean;
97
+ /**
98
+ * 특정 필드를 제거 / Remove a specific field
99
+ * @param path 필드 경로 (dot notation 지원) / Field path (supports dot notation)
100
+ */
101
+ removeField(path: string): void;
102
+ /**
103
+ * 전역 상태 변경에 구독 / Subscribe to global state changes
104
+ * @param callback 상태 변경 시 실행될 콜백 / Callback to execute on state change
105
+ * @returns 구독 해제 함수 / Unsubscribe function
106
+ */
107
+ subscribeToAll(callback: (values: T) => void): () => void;
91
108
  /**
92
109
  * 초기값으로 리셋 / Reset to initial values
93
110
  */
@@ -1 +1 @@
1
- {"version":3,"file":"FieldStore.d.ts","sourceRoot":"","sources":["../../../core/FieldStore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAIH;;;;;;GAMG;AACH,qBAAa,UAAU,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IACjD,OAAO,CAAC,MAAM,CACA;IACd,OAAO,CAAC,oBAAoB,CAA2C;IACvE,OAAO,CAAC,aAAa,CAAI;IACzB,OAAO,CAAC,eAAe,CAAyB;gBAEpC,aAAa,EAAE,CAAC;IAW5B;;;;;OAKG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,GAAG,MAAM,GAAG,GAAG;IAc1C;;;;;;OAMG;IACH,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC,GAAG,MAAM,EAAE,QAAQ,EAAE,MAAM,IAAI;IAuC3D;;;;;OAKG;IACH,eAAe,CAAC,QAAQ,EAAE,MAAM,IAAI;IAOpC;;;;;OAKG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,GAAG,MAAM,EAAE,KAAK,EAAE,GAAG;IAkFhD;;;OAGG;IACH,SAAS,IAAI,CAAC;IAUd;;;OAGG;IACH,SAAS,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;IAM/B;;;OAGG;IACH,gBAAgB,CAAC,gBAAgB,EAAE,CAAC;IAyBpC;;;OAGG;IACH,UAAU,IAAI,OAAO;IAOrB;;OAEG;IACH,KAAK;IAIL;;OAEG;IACH,OAAO;CAIV"}
1
+ {"version":3,"file":"FieldStore.d.ts","sourceRoot":"","sources":["../../../core/FieldStore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAIH;;;;;;GAMG;AACH,qBAAa,UAAU,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IACjD,OAAO,CAAC,MAAM,CACA;IACd,OAAO,CAAC,oBAAoB,CAA2C;IACvE,OAAO,CAAC,aAAa,CAAI;IACzB,OAAO,CAAC,eAAe,CAAyB;gBAEpC,aAAa,EAAE,CAAC;IAW5B;;;;;OAKG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,GAAG,MAAM,GAAG,GAAG;IAc1C;;;;;;OAMG;IACH,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC,GAAG,MAAM,EAAE,QAAQ,EAAE,MAAM,IAAI;IAuC3D;;;;;OAKG;IACH,eAAe,CAAC,QAAQ,EAAE,MAAM,IAAI;IAOpC;;;;;OAKG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,GAAG,MAAM,EAAE,KAAK,EAAE,GAAG;IAkFhD;;;OAGG;IACH,SAAS,IAAI,CAAC;IAUd;;;OAGG;IACH,SAAS,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;IAM/B;;;OAGG;IACH,gBAAgB,CAAC,gBAAgB,EAAE,CAAC;IAyBpC;;;OAGG;IACH,UAAU,IAAI,OAAO;IAOrB;;;;OAIG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAU/B;;;OAGG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAyC/B;;;;OAIG;IACH,cAAc,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,IAAI,GAAG,MAAM,IAAI;IAYzD;;OAEG;IACH,KAAK;IAIL;;OAEG;IACH,OAAO;CAKV"}
@@ -243,6 +243,76 @@ export class FieldStore {
243
243
  const currentValues = this.getValues();
244
244
  return (JSON.stringify(currentValues) !== JSON.stringify(this.initialValues));
245
245
  }
246
+ /**
247
+ * 특정 필드가 존재하는지 확인 / Check if a specific field exists
248
+ * @param path 필드 경로 (dot notation 지원) / Field path (supports dot notation)
249
+ * @returns 필드 존재 여부 / Whether the field exists
250
+ */
251
+ hasField(path) {
252
+ const currentValues = this.getValues();
253
+ try {
254
+ const value = getNestedValue(currentValues, path);
255
+ return value !== undefined;
256
+ }
257
+ catch {
258
+ return false;
259
+ }
260
+ }
261
+ /**
262
+ * 특정 필드를 제거 / Remove a specific field
263
+ * @param path 필드 경로 (dot notation 지원) / Field path (supports dot notation)
264
+ */
265
+ removeField(path) {
266
+ const currentValues = this.getValues();
267
+ const pathParts = path.split('.');
268
+ if (pathParts.length === 1) {
269
+ // 루트 레벨 필드 제거 / Remove root level field
270
+ delete currentValues[pathParts[0]];
271
+ this.fields.delete(pathParts[0]);
272
+ }
273
+ else {
274
+ // 중첩된 필드 제거 / Remove nested field
275
+ const parentPath = pathParts.slice(0, -1).join('.');
276
+ const fieldName = pathParts[pathParts.length - 1];
277
+ const parent = getNestedValue(currentValues, parentPath);
278
+ if (parent && typeof parent === 'object') {
279
+ if (Array.isArray(parent)) {
280
+ const index = parseInt(fieldName, 10);
281
+ if (!isNaN(index) && index >= 0 && index < parent.length) {
282
+ parent.splice(index, 1);
283
+ }
284
+ }
285
+ else {
286
+ delete parent[fieldName];
287
+ }
288
+ }
289
+ }
290
+ this.setValues(currentValues);
291
+ // 해당 필드의 구독자들에게 알림 / Notify subscribers of this field
292
+ this.dotNotationListeners.forEach((listeners, subscribedPath) => {
293
+ if (subscribedPath === path) {
294
+ listeners.forEach((listener) => listener());
295
+ }
296
+ });
297
+ // 전역 구독자들 알림 / Notify global subscribers
298
+ if (this.globalListeners.size > 0) {
299
+ this.globalListeners.forEach((listener) => listener());
300
+ }
301
+ }
302
+ /**
303
+ * 전역 상태 변경에 구독 / Subscribe to global state changes
304
+ * @param callback 상태 변경 시 실행될 콜백 / Callback to execute on state change
305
+ * @returns 구독 해제 함수 / Unsubscribe function
306
+ */
307
+ subscribeToAll(callback) {
308
+ const wrappedCallback = () => {
309
+ callback(this.getValues());
310
+ };
311
+ this.globalListeners.add(wrappedCallback);
312
+ return () => {
313
+ this.globalListeners.delete(wrappedCallback);
314
+ };
315
+ }
246
316
  /**
247
317
  * 초기값으로 리셋 / Reset to initial values
248
318
  */
@@ -255,6 +325,7 @@ export class FieldStore {
255
325
  destroy() {
256
326
  this.fields.clear();
257
327
  this.globalListeners.clear();
328
+ this.dotNotationListeners.clear();
258
329
  }
259
330
  }
260
331
  //# sourceMappingURL=FieldStore.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FieldStore.js","sourceRoot":"","sources":["../../../core/FieldStore.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"FieldStore.js","sourceRoot":"","sources":["../../../core/FieldStore.ts"],"names":[],"mappings":"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"}
@@ -19,13 +19,19 @@ export interface UseFormaStateOptions<T extends Record<string, any>> {
19
19
  deepEquals?: boolean;
20
20
  /** External FieldStore instance for shared state | 공유 상태를 위한 외부 FieldStore 인스턴스 */
21
21
  _externalStore?: FieldStore<T>;
22
+ /** Error handler for state operations | 상태 작업을 위한 에러 핸들러 */
23
+ onError?: (error: Error) => void;
24
+ /** Enable validation on every change | 모든 변경에 대한 유효성 검사 활성화 */
25
+ validateOnChange?: boolean;
26
+ /** Debounce delay for state updates in milliseconds | 상태 업데이트를 위한 디바운스 지연 시간 (밀리초) */
27
+ debounceMs?: number;
22
28
  }
23
29
  /**
24
- * Return type of useFormaState hook
30
+ * Return type for useFormaState hook
25
31
  * useFormaState 훅의 반환 타입
26
32
  */
27
33
  export interface UseFormaStateReturn<T extends Record<string, any>> {
28
- /** Subscribe to a specific field value with dot notation | dot notation으로 특정 필드 구독 */
34
+ /** Subscribe to a specific field with dot notation | dot notation으로 특정 필드 구독 */
29
35
  useValue: <K extends string>(path: K) => any;
30
36
  /** Set a specific field value with dot notation | dot notation으로 특정 필드 값 설정 */
31
37
  setValue: <K extends string>(path: K, value: any) => void;
@@ -37,10 +43,16 @@ export interface UseFormaStateReturn<T extends Record<string, any>> {
37
43
  reset: () => void;
38
44
  /** Handle standard input change events | 표준 입력 변경 이벤트 처리 */
39
45
  handleChange: (event: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement>) => void;
46
+ /** Check if a field exists | 필드 존재 여부 확인 */
47
+ hasField: (path: string) => boolean;
48
+ /** Remove a field from state | 상태에서 필드 제거 */
49
+ removeField: (path: string) => void;
50
+ /** Get a single field value (non-reactive) | 단일 필드 값 가져오기 (반응형 아님) */
51
+ getValue: (path: string) => any;
52
+ /** Subscribe to all state changes | 모든 상태 변경에 구독 */
53
+ subscribe: (callback: (values: T) => void) => () => void;
40
54
  /** Direct access to the internal store for advanced usage | 고급 사용을 위한 내부 스토어 직접 접근 */
41
55
  _store: FieldStore<T>;
42
- /** Current values (reactive) | 현재 값들 (반응형) */
43
- values: T;
44
56
  }
45
57
  /**
46
58
  * Advanced state management hook with individual field subscriptions
@@ -56,13 +68,11 @@ export interface UseFormaStateReturn<T extends Record<string, any>> {
56
68
  * ```typescript
57
69
  * // Managing an array of users
58
70
  * const state = useFormaState({
59
- * initialValues: {
60
- * users: [
61
- * { name: 'John', email: 'john@example.com', age: 30 },
62
- * { name: 'Jane', email: 'jane@example.com', age: 25 }
63
- * ],
64
- * settings: { theme: 'dark', notifications: true }
65
- * }
71
+ * users: [
72
+ * { name: 'John', email: 'john@example.com', age: 30 },
73
+ * { name: 'Jane', email: 'jane@example.com', age: 25 }
74
+ * ],
75
+ * settings: { theme: 'dark', notifications: true }
66
76
  * });
67
77
  *
68
78
  * // Subscribe to individual fields - only these components re-render when changed
@@ -75,5 +85,6 @@ export interface UseFormaStateReturn<T extends Record<string, any>> {
75
85
  * state.setValue('settings.theme', 'light');
76
86
  * ```
77
87
  */
88
+ export declare function useFormaState<T extends Record<string, any> = Record<string, any>>(initialValues?: T, options?: UseFormaStateOptions<T>): UseFormaStateReturn<T>;
78
89
  export declare function useFormaState<T extends Record<string, any>>(initialValues: T, options?: UseFormaStateOptions<T>): UseFormaStateReturn<T>;
79
90
  //# sourceMappingURL=useFormaState.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useFormaState.d.ts","sourceRoot":"","sources":["../../../hooks/useFormaState.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGhD;;;GAGG;AACH,MAAM,WAAW,oBAAoB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAC/D,4DAA4D;IAC5D,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,IAAI,CAAC;IAE/B,qFAAqF;IACrF,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB,mFAAmF;IACnF,cAAc,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;CAClC;AAED;;;GAGG;AACH,MAAM,WAAW,mBAAmB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAC9D,wFAAwF;IACxF,QAAQ,EAAE,CAAC,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,CAAC,KAAK,GAAG,CAAC;IAE7C,+EAA+E;IAC/E,QAAQ,EAAE,CAAC,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;IAE1D,oEAAoE;IACpE,SAAS,EAAE,MAAM,CAAC,CAAC;IAEnB,6CAA6C;IAC7C,SAAS,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;IAExC,0CAA0C;IAC1C,KAAK,EAAE,MAAM,IAAI,CAAC;IAElB,4DAA4D;IAC5D,YAAY,EAAE,CACV,KAAK,EAAE,KAAK,CAAC,WAAW,CACpB,gBAAgB,GAAG,mBAAmB,GAAG,iBAAiB,CAC7D,KACA,IAAI,CAAC;IAEV,sFAAsF;IACtF,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;IAEtB,8CAA8C;IAC9C,MAAM,EAAE,CAAC,CAAC;CACb;AAsBD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAgB,aAAa,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACvD,aAAa,EAAE,CAAC,EAChB,OAAO,GAAE,oBAAoB,CAAC,CAAC,CAAM,GACtC,mBAAmB,CAAC,CAAC,CAAC,CA2HxB"}
1
+ {"version":3,"file":"useFormaState.d.ts","sourceRoot":"","sources":["../../../hooks/useFormaState.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGhD;;;GAGG;AACH,MAAM,WAAW,oBAAoB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAC/D,4DAA4D;IAC5D,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,IAAI,CAAC;IAE/B,qFAAqF;IACrF,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB,mFAAmF;IACnF,cAAc,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;IAE/B,4DAA4D;IAC5D,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAEjC,+DAA+D;IAC/D,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B,sFAAsF;IACtF,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;GAGG;AACH,MAAM,WAAW,mBAAmB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAC9D,gFAAgF;IAChF,QAAQ,EAAE,CAAC,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,CAAC,KAAK,GAAG,CAAC;IAE7C,+EAA+E;IAC/E,QAAQ,EAAE,CAAC,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;IAE1D,oEAAoE;IACpE,SAAS,EAAE,MAAM,CAAC,CAAC;IAEnB,6CAA6C;IAC7C,SAAS,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;IAExC,0CAA0C;IAC1C,KAAK,EAAE,MAAM,IAAI,CAAC;IAElB,4DAA4D;IAC5D,YAAY,EAAE,CACV,KAAK,EAAE,KAAK,CAAC,WAAW,CACpB,gBAAgB,GAAG,mBAAmB,GAAG,iBAAiB,CAC7D,KACA,IAAI,CAAC;IAEV,4CAA4C;IAC5C,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IAEpC,6CAA6C;IAC7C,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAEpC,sEAAsE;IACtE,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,GAAG,CAAC;IAEhC,oDAAoD;IACpD,SAAS,EAAE,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,IAAI,KAAK,MAAM,IAAI,CAAC;IAEzD,sFAAsF;IACtF,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;CACzB;AAsBD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,wBAAgB,aAAa,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC7E,aAAa,CAAC,EAAE,CAAC,EACjB,OAAO,CAAC,EAAE,oBAAoB,CAAC,CAAC,CAAC,GAClC,mBAAmB,CAAC,CAAC,CAAC,CAAC;AAG1B,wBAAgB,aAAa,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACvD,aAAa,EAAE,CAAC,EAChB,OAAO,CAAC,EAAE,oBAAoB,CAAC,CAAC,CAAC,GAClC,mBAAmB,CAAC,CAAC,CAAC,CAAC"}
@@ -7,7 +7,7 @@
7
7
  * @author KIM YOUNG JIN (ehfuse@gmail.com)
8
8
  * @license MIT License
9
9
  */
10
- import { useRef, useCallback, useMemo, useState, useEffect } from "react";
10
+ import { useRef, useCallback, useState, useEffect } from "react";
11
11
  import { FieldStore } from "../core/FieldStore";
12
12
  import { setNestedValue } from "../utils/dotNotation";
13
13
  /**
@@ -26,40 +26,7 @@ function useFieldValue(store, fieldName) {
26
26
  }, [fieldName]); // store 의존성 제거로 불필요한 재구독 방지 / Remove store dependency to prevent unnecessary re-subscriptions
27
27
  return value;
28
28
  }
29
- /**
30
- * Advanced state management hook with individual field subscriptions
31
- * 개별 필드 구독을 통한 고급 상태 관리 훅
32
- *
33
- * Optimized for managing complex arrays, objects, and nested data structures
34
- * where you want to avoid unnecessary re-renders when only specific fields change.
35
- *
36
- * 복잡한 배열, 객체, 중첩된 데이터 구조를 관리하는 데 최적화되어 있으며,
37
- * 특정 필드만 변경될 때 불필요한 재렌더링을 방지하고자 할 때 사용합니다.
38
- *
39
- * @example
40
- * ```typescript
41
- * // Managing an array of users
42
- * const state = useFormaState({
43
- * initialValues: {
44
- * users: [
45
- * { name: 'John', email: 'john@example.com', age: 30 },
46
- * { name: 'Jane', email: 'jane@example.com', age: 25 }
47
- * ],
48
- * settings: { theme: 'dark', notifications: true }
49
- * }
50
- * });
51
- *
52
- * // Subscribe to individual fields - only these components re-render when changed
53
- * const firstName = state.useValue('users.0.name'); // Only re-renders when John's name changes
54
- * const userAge = state.useValue('users.1.age'); // Only re-renders when Jane's age changes
55
- * const theme = state.useValue('settings.theme'); // Only re-renders when theme changes
56
- *
57
- * // Update specific fields
58
- * state.setValue('users.0.name', 'Johnny');
59
- * state.setValue('settings.theme', 'light');
60
- * ```
61
- */
62
- export function useFormaState(initialValues, options = {}) {
29
+ export function useFormaState(initialValues = {}, options = {}) {
63
30
  const { onChange, deepEquals = false, _externalStore } = options;
64
31
  // Create or use external field store instance (persists across renders)
65
32
  // 필드 스토어 인스턴스 생성 또는 외부 스토어 사용 (렌더링 간 유지)
@@ -80,9 +47,11 @@ export function useFormaState(initialValues, options = {}) {
80
47
  const store = storeRef.current;
81
48
  // Update initial values when they change (only for non-external stores)
82
49
  // 초기값이 변경되면 업데이트 (외부 스토어가 아닌 경우에만)
50
+ const initialValuesRef = useRef(initialValues);
83
51
  useEffect(() => {
84
- if (!_externalStore && store) {
52
+ if (!_externalStore && store && initialValuesRef.current !== initialValues) {
85
53
  store.setInitialValues(initialValues);
54
+ initialValuesRef.current = initialValues;
86
55
  }
87
56
  }, [initialValues, store, _externalStore]);
88
57
  // Subscribe to a specific field value with dot notation
@@ -112,8 +81,8 @@ export function useFormaState(initialValues, options = {}) {
112
81
  // Reset to initial values
113
82
  // 초기값으로 재설정
114
83
  const reset = useCallback(() => {
115
- store.setValues(initialValues);
116
- }, [store, initialValues]);
84
+ store.setValues(initialValuesRef.current);
85
+ }, [store]);
117
86
  // Handle standard input change events
118
87
  // 표준 입력 변경 이벤트 처리
119
88
  const handleChange = useCallback((event) => {
@@ -133,13 +102,6 @@ export function useFormaState(initialValues, options = {}) {
133
102
  }
134
103
  setValue(name, processedValue);
135
104
  }, [setValue]);
136
- // Get reactive values using the store's reactive mechanism
137
- // 스토어의 반응형 메커니즘을 사용하여 반응형 값 가져오기
138
- const values = useMemo(() => {
139
- // This creates a reactive subscription to all values
140
- // 모든 값에 대한 반응형 구독 생성
141
- return store.getValues();
142
- }, [store]);
143
105
  return {
144
106
  useValue,
145
107
  setValue,
@@ -147,8 +109,19 @@ export function useFormaState(initialValues, options = {}) {
147
109
  setValues,
148
110
  reset,
149
111
  handleChange,
112
+ hasField: useCallback((path) => {
113
+ return store.hasField(path);
114
+ }, [store]),
115
+ removeField: useCallback((path) => {
116
+ store.removeField(path);
117
+ }, [store]),
118
+ getValue: useCallback((path) => {
119
+ return store.getValue(path);
120
+ }, [store]),
121
+ subscribe: useCallback((callback) => {
122
+ return store.subscribeToAll(callback);
123
+ }, [store]),
150
124
  _store: store,
151
- values,
152
125
  };
153
126
  }
154
127
  //# sourceMappingURL=useFormaState.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useFormaState.js","sourceRoot":"","sources":["../../../hooks/useFormaState.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAC1E,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAkB,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAmDtE;;;GAGG;AACH,SAAS,aAAa,CAAI,KAAsB,EAAE,SAAiB;IAC/D,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;IAEpE,SAAS,CAAC,GAAG,EAAE;QACX,6BAA6B;QAC7B,MAAM,WAAW,GAAG,KAAK,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,EAAE;YAChD,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;YAC3C,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACvB,CAAC,CAAC,CAAC;QAEH,OAAO,WAAW,CAAC;IACvB,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,8FAA8F;IAE/G,OAAO,KAAK,CAAC;AACjB,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,MAAM,UAAU,aAAa,CACzB,aAAgB,EAChB,UAAmC,EAAE;IAErC,MAAM,EAAE,QAAQ,EAAE,UAAU,GAAG,KAAK,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC;IAEjE,wEAAwE;IACxE,yCAAyC;IACzC,MAAM,QAAQ,GAAG,MAAM,CAAuB,IAAI,CAAC,CAAC;IACpD,IAAI,cAAc,EAAE,CAAC;QACjB,QAAQ,CAAC,OAAO,GAAG,cAAc,CAAC;IACtC,CAAC;SAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QAC3B,QAAQ,CAAC,OAAO,GAAG,IAAI,UAAU,CAAI,aAAa,CAAC,CAAC;QAEpD,4CAA4C;QAC5C,yBAAyB;QACzB,IAAI,QAAQ,EAAE,CAAC;YACX,QAAQ,CAAC,OAAO,CAAC,eAAe,CAAC,GAAG,EAAE;gBAClC,QAAQ,CAAC,QAAQ,CAAC,OAAQ,CAAC,SAAS,EAAE,CAAC,CAAC;YAC5C,CAAC,CAAC,CAAC;QACP,CAAC;IACL,CAAC;IAED,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC;IAE/B,wEAAwE;IACxE,mCAAmC;IACnC,SAAS,CAAC,GAAG,EAAE;QACX,IAAI,CAAC,cAAc,IAAI,KAAK,EAAE,CAAC;YAC3B,KAAK,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;QAC1C,CAAC;IACL,CAAC,EAAE,CAAC,aAAa,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC;IAE3C,wDAAwD;IACxD,4BAA4B;IAC5B,MAAM,QAAQ,GAAG,WAAW,CACxB,CAAmB,IAAO,EAAE,EAAE;QAC1B,OAAO,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACtC,CAAC,EACD,CAAC,KAAK,CAAC,CACV,CAAC;IAEF,+CAA+C;IAC/C,4BAA4B;IAC5B,MAAM,QAAQ,GAAG,WAAW,CACxB,CAAmB,IAAO,EAAE,KAAU,EAAE,EAAE;QACtC,MAAM,aAAa,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;QACxC,MAAM,SAAS,GAAG,cAAc,CAAC,aAAa,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QAC7D,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IAC/B,CAAC,EACD,CAAC,KAAK,CAAC,CACV,CAAC;IAEF,wCAAwC;IACxC,wBAAwB;IACxB,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE;QAC/B,OAAO,KAAK,CAAC,SAAS,EAAE,CAAC;IAC7B,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAEZ,yBAAyB;IACzB,gBAAgB;IAChB,MAAM,SAAS,GAAG,WAAW,CACzB,CAAC,MAAkB,EAAE,EAAE;QACnB,MAAM,aAAa,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;QACxC,MAAM,SAAS,GAAG,EAAE,GAAG,aAAa,EAAE,GAAG,MAAM,EAAE,CAAC;QAClD,KAAK,CAAC,SAAS,CAAC,SAAc,CAAC,CAAC;IACpC,CAAC,EACD,CAAC,KAAK,CAAC,CACV,CAAC;IAEF,0BAA0B;IAC1B,YAAY;IACZ,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;QAC3B,KAAK,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;IACnC,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC;IAE3B,sCAAsC;IACtC,kBAAkB;IAClB,MAAM,YAAY,GAAG,WAAW,CAC5B,CACI,KAEC,EACH,EAAE;QACA,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC;QAE3C,IAAI,CAAC,IAAI,EAAE,CAAC;YACR,OAAO,CAAC,IAAI,CACR,wEAAwE,CAC3E,CAAC;YACF,OAAO;QACX,CAAC;QAED,IAAI,cAAc,GAAQ,KAAK,CAAC;QAEhC,+BAA+B;QAC/B,eAAe;QACf,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;YACtB,cAAc,GAAI,KAAK,CAAC,MAA2B,CAAC,OAAO,CAAC;QAChE,CAAC;aAAM,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC3B,cAAc,GAAG,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvD,CAAC;QAED,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;IACnC,CAAC,EACD,CAAC,QAAQ,CAAC,CACb,CAAC;IAEF,2DAA2D;IAC3D,iCAAiC;IACjC,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE;QACxB,qDAAqD;QACrD,qBAAqB;QACrB,OAAO,KAAK,CAAC,SAAS,EAAE,CAAC;IAC7B,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAEZ,OAAO;QACH,QAAQ;QACR,QAAQ;QACR,SAAS;QACT,SAAS;QACT,KAAK;QACL,YAAY;QACZ,MAAM,EAAE,KAAK;QACb,MAAM;KACT,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"useFormaState.js","sourceRoot":"","sources":["../../../hooks/useFormaState.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * index.ts
3
3
  *
4
- * Forma - Advexport { useFormaState } from './hooks/useFormaState';nced React form state management library
4
+ * Forma - Advanced React form state management library
5
5
  * Main entry point and API exports
6
6
  *
7
7
  * @license MIT License
package/dist/esm/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * index.ts
3
3
  *
4
- * Forma - Advexport { useFormaState } from './hooks/useFormaState';nced React form state management library
4
+ * Forma - Advanced React form state management library
5
5
  * Main entry point and API exports
6
6
  *
7
7
  * @license MIT License
@@ -19,13 +19,19 @@ export interface UseFormaStateOptions<T extends Record<string, any>> {
19
19
  deepEquals?: boolean;
20
20
  /** External FieldStore instance for shared state | 공유 상태를 위한 외부 FieldStore 인스턴스 */
21
21
  _externalStore?: FieldStore<T>;
22
+ /** Error handler for state operations | 상태 작업을 위한 에러 핸들러 */
23
+ onError?: (error: Error) => void;
24
+ /** Enable validation on every change | 모든 변경에 대한 유효성 검사 활성화 */
25
+ validateOnChange?: boolean;
26
+ /** Debounce delay for state updates in milliseconds | 상태 업데이트를 위한 디바운스 지연 시간 (밀리초) */
27
+ debounceMs?: number;
22
28
  }
23
29
  /**
24
- * Return type of useFormaState hook
30
+ * Return type for useFormaState hook
25
31
  * useFormaState 훅의 반환 타입
26
32
  */
27
33
  export interface UseFormaStateReturn<T extends Record<string, any>> {
28
- /** Subscribe to a specific field value with dot notation | dot notation으로 특정 필드 구독 */
34
+ /** Subscribe to a specific field with dot notation | dot notation으로 특정 필드 구독 */
29
35
  useValue: <K extends string>(path: K) => any;
30
36
  /** Set a specific field value with dot notation | dot notation으로 특정 필드 값 설정 */
31
37
  setValue: <K extends string>(path: K, value: any) => void;
@@ -37,10 +43,16 @@ export interface UseFormaStateReturn<T extends Record<string, any>> {
37
43
  reset: () => void;
38
44
  /** Handle standard input change events | 표준 입력 변경 이벤트 처리 */
39
45
  handleChange: (event: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement>) => void;
46
+ /** Check if a field exists | 필드 존재 여부 확인 */
47
+ hasField: (path: string) => boolean;
48
+ /** Remove a field from state | 상태에서 필드 제거 */
49
+ removeField: (path: string) => void;
50
+ /** Get a single field value (non-reactive) | 단일 필드 값 가져오기 (반응형 아님) */
51
+ getValue: (path: string) => any;
52
+ /** Subscribe to all state changes | 모든 상태 변경에 구독 */
53
+ subscribe: (callback: (values: T) => void) => () => void;
40
54
  /** Direct access to the internal store for advanced usage | 고급 사용을 위한 내부 스토어 직접 접근 */
41
55
  _store: FieldStore<T>;
42
- /** Current values (reactive) | 현재 값들 (반응형) */
43
- values: T;
44
56
  }
45
57
  /**
46
58
  * Advanced state management hook with individual field subscriptions
@@ -56,13 +68,11 @@ export interface UseFormaStateReturn<T extends Record<string, any>> {
56
68
  * ```typescript
57
69
  * // Managing an array of users
58
70
  * const state = useFormaState({
59
- * initialValues: {
60
- * users: [
61
- * { name: 'John', email: 'john@example.com', age: 30 },
62
- * { name: 'Jane', email: 'jane@example.com', age: 25 }
63
- * ],
64
- * settings: { theme: 'dark', notifications: true }
65
- * }
71
+ * users: [
72
+ * { name: 'John', email: 'john@example.com', age: 30 },
73
+ * { name: 'Jane', email: 'jane@example.com', age: 25 }
74
+ * ],
75
+ * settings: { theme: 'dark', notifications: true }
66
76
  * });
67
77
  *
68
78
  * // Subscribe to individual fields - only these components re-render when changed
@@ -75,5 +85,6 @@ export interface UseFormaStateReturn<T extends Record<string, any>> {
75
85
  * state.setValue('settings.theme', 'light');
76
86
  * ```
77
87
  */
88
+ export declare function useFormaState<T extends Record<string, any> = Record<string, any>>(initialValues?: T, options?: UseFormaStateOptions<T>): UseFormaStateReturn<T>;
78
89
  export declare function useFormaState<T extends Record<string, any>>(initialValues: T, options?: UseFormaStateOptions<T>): UseFormaStateReturn<T>;
79
90
  //# sourceMappingURL=useFormaState.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useFormaState.d.ts","sourceRoot":"","sources":["../../hooks/useFormaState.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGhD;;;GAGG;AACH,MAAM,WAAW,oBAAoB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAC/D,4DAA4D;IAC5D,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,IAAI,CAAC;IAE/B,qFAAqF;IACrF,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB,mFAAmF;IACnF,cAAc,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;CAClC;AAED;;;GAGG;AACH,MAAM,WAAW,mBAAmB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAC9D,wFAAwF;IACxF,QAAQ,EAAE,CAAC,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,CAAC,KAAK,GAAG,CAAC;IAE7C,+EAA+E;IAC/E,QAAQ,EAAE,CAAC,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;IAE1D,oEAAoE;IACpE,SAAS,EAAE,MAAM,CAAC,CAAC;IAEnB,6CAA6C;IAC7C,SAAS,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;IAExC,0CAA0C;IAC1C,KAAK,EAAE,MAAM,IAAI,CAAC;IAElB,4DAA4D;IAC5D,YAAY,EAAE,CACV,KAAK,EAAE,KAAK,CAAC,WAAW,CACpB,gBAAgB,GAAG,mBAAmB,GAAG,iBAAiB,CAC7D,KACA,IAAI,CAAC;IAEV,sFAAsF;IACtF,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;IAEtB,8CAA8C;IAC9C,MAAM,EAAE,CAAC,CAAC;CACb;AAsBD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAgB,aAAa,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACvD,aAAa,EAAE,CAAC,EAChB,OAAO,GAAE,oBAAoB,CAAC,CAAC,CAAM,GACtC,mBAAmB,CAAC,CAAC,CAAC,CA2HxB"}
1
+ {"version":3,"file":"useFormaState.d.ts","sourceRoot":"","sources":["../../hooks/useFormaState.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGhD;;;GAGG;AACH,MAAM,WAAW,oBAAoB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAC/D,4DAA4D;IAC5D,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,IAAI,CAAC;IAE/B,qFAAqF;IACrF,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB,mFAAmF;IACnF,cAAc,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;IAE/B,4DAA4D;IAC5D,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAEjC,+DAA+D;IAC/D,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B,sFAAsF;IACtF,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;GAGG;AACH,MAAM,WAAW,mBAAmB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAC9D,gFAAgF;IAChF,QAAQ,EAAE,CAAC,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,CAAC,KAAK,GAAG,CAAC;IAE7C,+EAA+E;IAC/E,QAAQ,EAAE,CAAC,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;IAE1D,oEAAoE;IACpE,SAAS,EAAE,MAAM,CAAC,CAAC;IAEnB,6CAA6C;IAC7C,SAAS,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;IAExC,0CAA0C;IAC1C,KAAK,EAAE,MAAM,IAAI,CAAC;IAElB,4DAA4D;IAC5D,YAAY,EAAE,CACV,KAAK,EAAE,KAAK,CAAC,WAAW,CACpB,gBAAgB,GAAG,mBAAmB,GAAG,iBAAiB,CAC7D,KACA,IAAI,CAAC;IAEV,4CAA4C;IAC5C,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IAEpC,6CAA6C;IAC7C,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAEpC,sEAAsE;IACtE,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,GAAG,CAAC;IAEhC,oDAAoD;IACpD,SAAS,EAAE,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,IAAI,KAAK,MAAM,IAAI,CAAC;IAEzD,sFAAsF;IACtF,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;CACzB;AAsBD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,wBAAgB,aAAa,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC7E,aAAa,CAAC,EAAE,CAAC,EACjB,OAAO,CAAC,EAAE,oBAAoB,CAAC,CAAC,CAAC,GAClC,mBAAmB,CAAC,CAAC,CAAC,CAAC;AAG1B,wBAAgB,aAAa,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACvD,aAAa,EAAE,CAAC,EAChB,OAAO,CAAC,EAAE,oBAAoB,CAAC,CAAC,CAAC,GAClC,mBAAmB,CAAC,CAAC,CAAC,CAAC"}
@@ -29,40 +29,7 @@ function useFieldValue(store, fieldName) {
29
29
  }, [fieldName]); // store 의존성 제거로 불필요한 재구독 방지 / Remove store dependency to prevent unnecessary re-subscriptions
30
30
  return value;
31
31
  }
32
- /**
33
- * Advanced state management hook with individual field subscriptions
34
- * 개별 필드 구독을 통한 고급 상태 관리 훅
35
- *
36
- * Optimized for managing complex arrays, objects, and nested data structures
37
- * where you want to avoid unnecessary re-renders when only specific fields change.
38
- *
39
- * 복잡한 배열, 객체, 중첩된 데이터 구조를 관리하는 데 최적화되어 있으며,
40
- * 특정 필드만 변경될 때 불필요한 재렌더링을 방지하고자 할 때 사용합니다.
41
- *
42
- * @example
43
- * ```typescript
44
- * // Managing an array of users
45
- * const state = useFormaState({
46
- * initialValues: {
47
- * users: [
48
- * { name: 'John', email: 'john@example.com', age: 30 },
49
- * { name: 'Jane', email: 'jane@example.com', age: 25 }
50
- * ],
51
- * settings: { theme: 'dark', notifications: true }
52
- * }
53
- * });
54
- *
55
- * // Subscribe to individual fields - only these components re-render when changed
56
- * const firstName = state.useValue('users.0.name'); // Only re-renders when John's name changes
57
- * const userAge = state.useValue('users.1.age'); // Only re-renders when Jane's age changes
58
- * const theme = state.useValue('settings.theme'); // Only re-renders when theme changes
59
- *
60
- * // Update specific fields
61
- * state.setValue('users.0.name', 'Johnny');
62
- * state.setValue('settings.theme', 'light');
63
- * ```
64
- */
65
- function useFormaState(initialValues, options = {}) {
32
+ function useFormaState(initialValues = {}, options = {}) {
66
33
  const { onChange, deepEquals = false, _externalStore } = options;
67
34
  // Create or use external field store instance (persists across renders)
68
35
  // 필드 스토어 인스턴스 생성 또는 외부 스토어 사용 (렌더링 간 유지)
@@ -83,9 +50,11 @@ function useFormaState(initialValues, options = {}) {
83
50
  const store = storeRef.current;
84
51
  // Update initial values when they change (only for non-external stores)
85
52
  // 초기값이 변경되면 업데이트 (외부 스토어가 아닌 경우에만)
53
+ const initialValuesRef = (0, react_1.useRef)(initialValues);
86
54
  (0, react_1.useEffect)(() => {
87
- if (!_externalStore && store) {
55
+ if (!_externalStore && store && initialValuesRef.current !== initialValues) {
88
56
  store.setInitialValues(initialValues);
57
+ initialValuesRef.current = initialValues;
89
58
  }
90
59
  }, [initialValues, store, _externalStore]);
91
60
  // Subscribe to a specific field value with dot notation
@@ -115,8 +84,8 @@ function useFormaState(initialValues, options = {}) {
115
84
  // Reset to initial values
116
85
  // 초기값으로 재설정
117
86
  const reset = (0, react_1.useCallback)(() => {
118
- store.setValues(initialValues);
119
- }, [store, initialValues]);
87
+ store.setValues(initialValuesRef.current);
88
+ }, [store]);
120
89
  // Handle standard input change events
121
90
  // 표준 입력 변경 이벤트 처리
122
91
  const handleChange = (0, react_1.useCallback)((event) => {
@@ -136,13 +105,6 @@ function useFormaState(initialValues, options = {}) {
136
105
  }
137
106
  setValue(name, processedValue);
138
107
  }, [setValue]);
139
- // Get reactive values using the store's reactive mechanism
140
- // 스토어의 반응형 메커니즘을 사용하여 반응형 값 가져오기
141
- const values = (0, react_1.useMemo)(() => {
142
- // This creates a reactive subscription to all values
143
- // 모든 값에 대한 반응형 구독 생성
144
- return store.getValues();
145
- }, [store]);
146
108
  return {
147
109
  useValue,
148
110
  setValue,
@@ -150,8 +112,19 @@ function useFormaState(initialValues, options = {}) {
150
112
  setValues,
151
113
  reset,
152
114
  handleChange,
115
+ hasField: (0, react_1.useCallback)((path) => {
116
+ return store.hasField(path);
117
+ }, [store]),
118
+ removeField: (0, react_1.useCallback)((path) => {
119
+ store.removeField(path);
120
+ }, [store]),
121
+ getValue: (0, react_1.useCallback)((path) => {
122
+ return store.getValue(path);
123
+ }, [store]),
124
+ subscribe: (0, react_1.useCallback)((callback) => {
125
+ return store.subscribeToAll(callback);
126
+ }, [store]),
153
127
  _store: store,
154
- values,
155
128
  };
156
129
  }
157
130
  //# sourceMappingURL=useFormaState.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useFormaState.js","sourceRoot":"","sources":["../../hooks/useFormaState.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useFormaState.js","sourceRoot":"","sources":["../../hooks/useFormaState.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;AAwIH,sCAmIC;AAzQD,iCAA0E;AAC1E,mDAAgD;AAChD,sDAAsE;AAqEtE;;;GAGG;AACH,SAAS,aAAa,CAAI,KAAsB,EAAE,SAAiB;IAC/D,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,IAAA,gBAAQ,EAAC,GAAG,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;IAEpE,IAAA,iBAAS,EAAC,GAAG,EAAE;QACX,6BAA6B;QAC7B,MAAM,WAAW,GAAG,KAAK,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,EAAE;YAChD,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;YAC3C,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACvB,CAAC,CAAC,CAAC;QAEH,OAAO,WAAW,CAAC;IACvB,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,8FAA8F;IAE/G,OAAO,KAAK,CAAC;AACjB,CAAC;AA6CD,SAAgB,aAAa,CACzB,gBAAmB,EAAO,EAC1B,UAAmC,EAAE;IAErC,MAAM,EAAE,QAAQ,EAAE,UAAU,GAAG,KAAK,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC;IAEjE,wEAAwE;IACxE,yCAAyC;IACzC,MAAM,QAAQ,GAAG,IAAA,cAAM,EAAuB,IAAI,CAAC,CAAC;IACpD,IAAI,cAAc,EAAE,CAAC;QACjB,QAAQ,CAAC,OAAO,GAAG,cAAc,CAAC;IACtC,CAAC;SAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QAC3B,QAAQ,CAAC,OAAO,GAAG,IAAI,uBAAU,CAAI,aAAa,CAAC,CAAC;QAEpD,4CAA4C;QAC5C,yBAAyB;QACzB,IAAI,QAAQ,EAAE,CAAC;YACX,QAAQ,CAAC,OAAO,CAAC,eAAe,CAAC,GAAG,EAAE;gBAClC,QAAQ,CAAC,QAAQ,CAAC,OAAQ,CAAC,SAAS,EAAE,CAAC,CAAC;YAC5C,CAAC,CAAC,CAAC;QACP,CAAC;IACL,CAAC;IAED,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC;IAE/B,wEAAwE;IACxE,mCAAmC;IACnC,MAAM,gBAAgB,GAAG,IAAA,cAAM,EAAC,aAAa,CAAC,CAAC;IAC/C,IAAA,iBAAS,EAAC,GAAG,EAAE;QACX,IAAI,CAAC,cAAc,IAAI,KAAK,IAAI,gBAAgB,CAAC,OAAO,KAAK,aAAa,EAAE,CAAC;YACzE,KAAK,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;YACtC,gBAAgB,CAAC,OAAO,GAAG,aAAa,CAAC;QAC7C,CAAC;IACL,CAAC,EAAE,CAAC,aAAa,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC;IAE3C,wDAAwD;IACxD,4BAA4B;IAC5B,MAAM,QAAQ,GAAG,IAAA,mBAAW,EACxB,CAAmB,IAAO,EAAE,EAAE;QAC1B,OAAO,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACtC,CAAC,EACD,CAAC,KAAK,CAAC,CACV,CAAC;IAEF,+CAA+C;IAC/C,4BAA4B;IAC5B,MAAM,QAAQ,GAAG,IAAA,mBAAW,EACxB,CAAmB,IAAO,EAAE,KAAU,EAAE,EAAE;QACtC,MAAM,aAAa,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;QACxC,MAAM,SAAS,GAAG,IAAA,4BAAc,EAAC,aAAa,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QAC7D,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IAC/B,CAAC,EACD,CAAC,KAAK,CAAC,CACV,CAAC;IAEF,wCAAwC;IACxC,wBAAwB;IACxB,MAAM,SAAS,GAAG,IAAA,mBAAW,EAAC,GAAG,EAAE;QAC/B,OAAO,KAAK,CAAC,SAAS,EAAE,CAAC;IAC7B,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAEZ,yBAAyB;IACzB,gBAAgB;IAChB,MAAM,SAAS,GAAG,IAAA,mBAAW,EACzB,CAAC,MAAkB,EAAE,EAAE;QACnB,MAAM,aAAa,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;QACxC,MAAM,SAAS,GAAG,EAAE,GAAG,aAAa,EAAE,GAAG,MAAM,EAAE,CAAC;QAClD,KAAK,CAAC,SAAS,CAAC,SAAc,CAAC,CAAC;IACpC,CAAC,EACD,CAAC,KAAK,CAAC,CACV,CAAC;IAEF,0BAA0B;IAC1B,YAAY;IACZ,MAAM,KAAK,GAAG,IAAA,mBAAW,EAAC,GAAG,EAAE;QAC3B,KAAK,CAAC,SAAS,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAC9C,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAEZ,sCAAsC;IACtC,kBAAkB;IAClB,MAAM,YAAY,GAAG,IAAA,mBAAW,EAC5B,CACI,KAEC,EACH,EAAE;QACA,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC;QAE3C,IAAI,CAAC,IAAI,EAAE,CAAC;YACR,OAAO,CAAC,IAAI,CACR,wEAAwE,CAC3E,CAAC;YACF,OAAO;QACX,CAAC;QAED,IAAI,cAAc,GAAQ,KAAK,CAAC;QAEhC,+BAA+B;QAC/B,eAAe;QACf,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;YACtB,cAAc,GAAI,KAAK,CAAC,MAA2B,CAAC,OAAO,CAAC;QAChE,CAAC;aAAM,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC3B,cAAc,GAAG,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvD,CAAC;QAED,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;IACnC,CAAC,EACD,CAAC,QAAQ,CAAC,CACb,CAAC;IAEF,OAAO;QACH,QAAQ;QACR,QAAQ;QACR,SAAS;QACT,SAAS;QACT,KAAK;QACL,YAAY;QACZ,QAAQ,EAAE,IAAA,mBAAW,EAAC,CAAC,IAAY,EAAE,EAAE;YACnC,OAAO,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAChC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;QACX,WAAW,EAAE,IAAA,mBAAW,EAAC,CAAC,IAAY,EAAE,EAAE;YACtC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAC5B,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;QACX,QAAQ,EAAE,IAAA,mBAAW,EAAC,CAAC,IAAY,EAAE,EAAE;YACnC,OAAO,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAChC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;QACX,SAAS,EAAE,IAAA,mBAAW,EAAC,CAAC,QAA6B,EAAE,EAAE;YACrD,OAAO,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QAC1C,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;QACX,MAAM,EAAE,KAAK;KAChB,CAAC;AACN,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * index.ts
3
3
  *
4
- * Forma - Advexport { useFormaState } from './hooks/useFormaState';nced React form state management library
4
+ * Forma - Advanced React form state management library
5
5
  * Main entry point and API exports
6
6
  *
7
7
  * @license MIT License
package/dist/index.js CHANGED
@@ -2,7 +2,7 @@
2
2
  /**
3
3
  * index.ts
4
4
  *
5
- * Forma - Advexport { useFormaState } from './hooks/useFormaState';nced React form state management library
5
+ * Forma - Advanced React form state management library
6
6
  * Main entry point and API exports
7
7
  *
8
8
  * @license MIT License
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ehfuse/forma",
3
- "version": "1.2.0",
3
+ "version": "1.3.0",
4
4
  "description": "Advanced React state management library with individual field subscriptions - supports both forms and general state management with useFormaState",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/esm/index.js",