@ehfuse/forma 2.0.10 → 2.1.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.
- package/README.md +333 -185
- package/dist/core/FieldStore.d.ts +41 -0
- package/dist/core/FieldStore.d.ts.map +1 -1
- package/dist/core/FieldStore.js +121 -7
- package/dist/core/FieldStore.js.map +1 -1
- package/dist/esm/core/FieldStore.d.ts +41 -0
- package/dist/esm/core/FieldStore.d.ts.map +1 -1
- package/dist/esm/core/FieldStore.js +121 -7
- package/dist/esm/core/FieldStore.js.map +1 -1
- package/dist/esm/hooks/useForm.js +6 -3
- package/dist/esm/hooks/useForm.js.map +1 -1
- package/dist/esm/hooks/useFormaState.d.ts +3 -1
- package/dist/esm/hooks/useFormaState.d.ts.map +1 -1
- package/dist/esm/hooks/useFormaState.js +31 -3
- package/dist/esm/hooks/useFormaState.js.map +1 -1
- package/dist/esm/hooks/useGlobalForm.d.ts +8 -12
- package/dist/esm/hooks/useGlobalForm.d.ts.map +1 -1
- package/dist/esm/hooks/useGlobalForm.js +36 -2
- package/dist/esm/hooks/useGlobalForm.js.map +1 -1
- package/dist/esm/hooks/useGlobalFormaState.d.ts +8 -72
- package/dist/esm/hooks/useGlobalFormaState.d.ts.map +1 -1
- package/dist/esm/hooks/useGlobalFormaState.js +8 -2
- package/dist/esm/hooks/useGlobalFormaState.js.map +1 -1
- package/dist/esm/index.d.ts +1 -1
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +2 -44
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/types/form.d.ts +18 -0
- package/dist/esm/types/form.d.ts.map +1 -1
- package/dist/esm/types/globalForm.d.ts +23 -2
- package/dist/esm/types/globalForm.d.ts.map +1 -1
- package/dist/esm/types/globalForm.js.map +1 -1
- package/dist/hooks/useForm.js +6 -3
- package/dist/hooks/useForm.js.map +1 -1
- package/dist/hooks/useFormaState.d.ts +3 -1
- package/dist/hooks/useFormaState.d.ts.map +1 -1
- package/dist/hooks/useFormaState.js +31 -3
- package/dist/hooks/useFormaState.js.map +1 -1
- package/dist/hooks/useGlobalForm.d.ts +8 -12
- package/dist/hooks/useGlobalForm.d.ts.map +1 -1
- package/dist/hooks/useGlobalForm.js +36 -2
- package/dist/hooks/useGlobalForm.js.map +1 -1
- package/dist/hooks/useGlobalFormaState.d.ts +8 -72
- package/dist/hooks/useGlobalFormaState.d.ts.map +1 -1
- package/dist/hooks/useGlobalFormaState.js +8 -2
- package/dist/hooks/useGlobalFormaState.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -67
- package/dist/index.js.map +1 -1
- package/dist/types/form.d.ts +18 -0
- package/dist/types/form.d.ts.map +1 -1
- package/dist/types/globalForm.d.ts +23 -2
- package/dist/types/globalForm.d.ts.map +1 -1
- package/dist/types/globalForm.js.map +1 -1
- package/package.json +4 -10
- package/dist/esm/index.min.js +0 -28
- package/dist/index.min.js +0 -28
package/dist/core/FieldStore.js
CHANGED
|
@@ -31,18 +31,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
31
31
|
exports.FieldStore = void 0;
|
|
32
32
|
const dotNotation_1 = require("../utils/dotNotation");
|
|
33
33
|
const environment_1 = require("../utils/environment");
|
|
34
|
-
/**
|
|
35
|
-
* 개별 필드 상태 관리 Store / Individual field state management store
|
|
36
|
-
* 선택적 구독과 성능 최적화를 위한 핵심 클래스
|
|
37
|
-
* Core class for selective subscriptions and performance optimization
|
|
38
|
-
*
|
|
39
|
-
* @template T 폼 데이터의 타입 / Form data type
|
|
40
|
-
*/
|
|
41
34
|
class FieldStore {
|
|
42
35
|
constructor(initialValues) {
|
|
43
36
|
this.fields = new Map();
|
|
44
37
|
this.dotNotationListeners = new Map(); // Dot notation 구독자 / Dot notation subscribers
|
|
45
38
|
this.globalListeners = new Set();
|
|
39
|
+
this.watchers = new Map(); // Watch 콜백 관리 / Watch callback management
|
|
46
40
|
this.initialValues = { ...initialValues };
|
|
47
41
|
// 초기값으로 필드 초기화 / Initialize fields with initial values
|
|
48
42
|
Object.keys(initialValues).forEach((key) => {
|
|
@@ -172,6 +166,7 @@ class FieldStore {
|
|
|
172
166
|
const oldRootValue = field.value;
|
|
173
167
|
const newRootValue = (0, dotNotation_1.setNestedValue)(field.value || {}, remainingPath, value);
|
|
174
168
|
if (JSON.stringify(field.value) !== JSON.stringify(newRootValue)) {
|
|
169
|
+
const prevValue = field.value;
|
|
175
170
|
field.value = newRootValue;
|
|
176
171
|
// 루트 필드 구독자들 알림 / Notify root field subscribers
|
|
177
172
|
field.listeners.forEach((listener) => {
|
|
@@ -179,9 +174,15 @@ class FieldStore {
|
|
|
179
174
|
});
|
|
180
175
|
// Dot notation 구독자들 알림 / Notify dot notation subscribers
|
|
181
176
|
this.dotNotationListeners.forEach((listeners, subscribedPath) => {
|
|
177
|
+
// 1. 정확히 일치하는 경로
|
|
182
178
|
if (subscribedPath === fieldNameStr) {
|
|
183
179
|
listeners.forEach((listener) => listener());
|
|
184
180
|
}
|
|
181
|
+
// 2. 구독 경로가 변경 경로의 부모인 경우
|
|
182
|
+
// 예: subscribedPath가 "todos.2"이고 fieldNameStr이 "todos.2.completed"
|
|
183
|
+
else if (fieldNameStr.startsWith(subscribedPath + ".")) {
|
|
184
|
+
listeners.forEach((listener) => listener());
|
|
185
|
+
}
|
|
185
186
|
// 배열 필드나 .length 구독자들에게 알림
|
|
186
187
|
// Notify array field or .length subscribers
|
|
187
188
|
else if (subscribedPath === `${rootFieldStr}.length`) {
|
|
@@ -201,6 +202,8 @@ class FieldStore {
|
|
|
201
202
|
});
|
|
202
203
|
// 전역 구독자들 알림 / Notify global subscribers
|
|
203
204
|
this.globalListeners.forEach((listener) => listener());
|
|
205
|
+
// Watcher 실행 (와일드카드 매칭 포함) / Execute watcher (including wildcard matching)
|
|
206
|
+
this.notifyWatchers(fieldNameStr, value, prevValue);
|
|
204
207
|
}
|
|
205
208
|
return;
|
|
206
209
|
}
|
|
@@ -271,6 +274,8 @@ class FieldStore {
|
|
|
271
274
|
if (this.globalListeners.size > 0) {
|
|
272
275
|
this.globalListeners.forEach((listener) => listener());
|
|
273
276
|
}
|
|
277
|
+
// Watcher 실행 (와일드카드 매칭 포함) / Execute watcher (including wildcard matching)
|
|
278
|
+
this.notifyWatchers(fieldStr, value, oldValue);
|
|
274
279
|
}
|
|
275
280
|
}
|
|
276
281
|
/**
|
|
@@ -296,9 +301,14 @@ class FieldStore {
|
|
|
296
301
|
}
|
|
297
302
|
// 성능 최적화: 영향받는 리스너들을 먼저 수집
|
|
298
303
|
const affectedListeners = new Set();
|
|
304
|
+
const watcherNotifications = [];
|
|
299
305
|
// 각 업데이트를 개별적으로 처리하되, 리스너 실행은 마지막에 일괄 처리
|
|
300
306
|
Object.entries(newValues).forEach(([fieldName, value]) => {
|
|
307
|
+
// 이전 값 저장 (watch 알림용)
|
|
308
|
+
const prevValue = this.getValue(fieldName);
|
|
301
309
|
this.setValueWithoutNotify(fieldName, value, affectedListeners);
|
|
310
|
+
// watch 알림 예약
|
|
311
|
+
watcherNotifications.push({ path: fieldName, value, prevValue });
|
|
302
312
|
});
|
|
303
313
|
// 글로벌 리스너들도 추가
|
|
304
314
|
this.globalListeners.forEach((listener) => affectedListeners.add(listener));
|
|
@@ -311,6 +321,10 @@ class FieldStore {
|
|
|
311
321
|
(0, environment_1.devError)("setValues 리스너 실행 중 오류:", error);
|
|
312
322
|
}
|
|
313
323
|
});
|
|
324
|
+
// watch 알림 실행
|
|
325
|
+
watcherNotifications.forEach(({ path, value, prevValue }) => {
|
|
326
|
+
this.notifyWatchers(path, value, prevValue);
|
|
327
|
+
});
|
|
314
328
|
}
|
|
315
329
|
/**
|
|
316
330
|
* 초기값 재설정 / Reset initial values
|
|
@@ -647,6 +661,105 @@ class FieldStore {
|
|
|
647
661
|
// 글로벌 리스너들에게도 알림
|
|
648
662
|
this.globalListeners.forEach((listener) => listener());
|
|
649
663
|
}
|
|
664
|
+
/**
|
|
665
|
+
* 필드 변경 감시 / Watch field changes
|
|
666
|
+
* @param path 감시할 필드 경로 (dot notation 지원) / Field path to watch (supports dot notation)
|
|
667
|
+
* @param callback 변경 시 실행할 콜백 / Callback to execute on change
|
|
668
|
+
* @param options 옵션 / Options
|
|
669
|
+
* @returns cleanup 함수 / Cleanup function
|
|
670
|
+
*/
|
|
671
|
+
watch(path, callback, options) {
|
|
672
|
+
if (!this.watchers.has(path)) {
|
|
673
|
+
this.watchers.set(path, new Set());
|
|
674
|
+
}
|
|
675
|
+
const watcherSet = this.watchers.get(path);
|
|
676
|
+
watcherSet.add(callback);
|
|
677
|
+
// immediate: true면 현재 값으로 즉시 실행 / Execute immediately with current value if immediate: true
|
|
678
|
+
if (options?.immediate) {
|
|
679
|
+
const currentValue = this.getValue(path);
|
|
680
|
+
callback(currentValue, undefined);
|
|
681
|
+
}
|
|
682
|
+
// cleanup 함수 반환 / Return cleanup function
|
|
683
|
+
return () => {
|
|
684
|
+
watcherSet.delete(callback);
|
|
685
|
+
if (watcherSet.size === 0) {
|
|
686
|
+
this.watchers.delete(path);
|
|
687
|
+
}
|
|
688
|
+
};
|
|
689
|
+
}
|
|
690
|
+
/**
|
|
691
|
+
* Watcher 알림 실행 / Notify watchers
|
|
692
|
+
* @param path 변경된 필드 경로 / Changed field path
|
|
693
|
+
* @param value 새 값 / New value
|
|
694
|
+
* @param prevValue 이전 값 / Previous value
|
|
695
|
+
*/
|
|
696
|
+
notifyWatchers(path, value, prevValue) {
|
|
697
|
+
// 1. 정확한 경로 매칭 / Exact path match
|
|
698
|
+
const exactWatchers = this.watchers.get(path);
|
|
699
|
+
if (exactWatchers && exactWatchers.size > 0) {
|
|
700
|
+
exactWatchers.forEach((callback) => {
|
|
701
|
+
try {
|
|
702
|
+
callback(value, prevValue);
|
|
703
|
+
}
|
|
704
|
+
catch (error) {
|
|
705
|
+
console.error(`Error in watcher for path "${path}":`, error);
|
|
706
|
+
}
|
|
707
|
+
});
|
|
708
|
+
}
|
|
709
|
+
// 2. 와일드카드 패턴 매칭 / Wildcard pattern matching
|
|
710
|
+
// todos.0.completed 변경 시 "todos.*.completed" 패턴도 트리거
|
|
711
|
+
this.watchers.forEach((watcherSet, watcherPath) => {
|
|
712
|
+
if (watcherPath.includes("*")) {
|
|
713
|
+
if (this.matchesWildcard(path, watcherPath)) {
|
|
714
|
+
watcherSet.forEach((callback) => {
|
|
715
|
+
try {
|
|
716
|
+
callback(value, prevValue);
|
|
717
|
+
}
|
|
718
|
+
catch (error) {
|
|
719
|
+
console.error(`Error in wildcard watcher for pattern "${watcherPath}" (triggered by "${path}"):`, error);
|
|
720
|
+
}
|
|
721
|
+
});
|
|
722
|
+
}
|
|
723
|
+
}
|
|
724
|
+
});
|
|
725
|
+
}
|
|
726
|
+
/**
|
|
727
|
+
* 와일드카드 패턴 매칭 / Wildcard pattern matching
|
|
728
|
+
* @param path 실제 경로 / Actual path (e.g., "todos.0.completed")
|
|
729
|
+
* @param pattern 와일드카드 패턴 / Wildcard pattern (e.g., "todos.*.completed")
|
|
730
|
+
* @returns 매칭 여부 / Whether path matches pattern
|
|
731
|
+
*/
|
|
732
|
+
matchesWildcard(path, pattern) {
|
|
733
|
+
const pathParts = path.split(".");
|
|
734
|
+
const patternParts = pattern.split(".");
|
|
735
|
+
if (pathParts.length !== patternParts.length) {
|
|
736
|
+
return false;
|
|
737
|
+
}
|
|
738
|
+
for (let i = 0; i < patternParts.length; i++) {
|
|
739
|
+
if (patternParts[i] === "*") {
|
|
740
|
+
continue; // 와일드카드는 모든 값과 매칭 / Wildcard matches any value
|
|
741
|
+
}
|
|
742
|
+
if (patternParts[i] !== pathParts[i]) {
|
|
743
|
+
return false;
|
|
744
|
+
}
|
|
745
|
+
}
|
|
746
|
+
return true;
|
|
747
|
+
}
|
|
748
|
+
/**
|
|
749
|
+
* 특정 path에 watcher가 등록되어 있는지 확인 / Check if watcher is registered for specific path
|
|
750
|
+
* @param path 확인할 경로 / Path to check
|
|
751
|
+
* @returns watcher 등록 여부 / Whether watcher is registered
|
|
752
|
+
*/
|
|
753
|
+
hasWatcher(path) {
|
|
754
|
+
return this.watchers.has(path);
|
|
755
|
+
}
|
|
756
|
+
/**
|
|
757
|
+
* 등록된 모든 watcher path 목록 반환 (디버깅용) / Return all registered watcher paths (for debugging)
|
|
758
|
+
* @returns watcher path 배열 / Array of watcher paths
|
|
759
|
+
*/
|
|
760
|
+
getWatchedPaths() {
|
|
761
|
+
return Array.from(this.watchers.keys());
|
|
762
|
+
}
|
|
650
763
|
/**
|
|
651
764
|
* 리소스 정리 / Clean up resources
|
|
652
765
|
*/
|
|
@@ -654,6 +767,7 @@ class FieldStore {
|
|
|
654
767
|
this.fields.clear();
|
|
655
768
|
this.globalListeners.clear();
|
|
656
769
|
this.dotNotationListeners.clear();
|
|
770
|
+
this.watchers.clear();
|
|
657
771
|
}
|
|
658
772
|
}
|
|
659
773
|
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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"}
|
|
@@ -33,11 +33,16 @@
|
|
|
33
33
|
*
|
|
34
34
|
* @template T 폼 데이터의 타입 / Form data type
|
|
35
35
|
*/
|
|
36
|
+
/**
|
|
37
|
+
* Watch 콜백 타입 / Watch callback type
|
|
38
|
+
*/
|
|
39
|
+
type WatchCallback = (value: any, prevValue: any) => void;
|
|
36
40
|
export declare class FieldStore<T extends Record<string, any>> {
|
|
37
41
|
private fields;
|
|
38
42
|
private dotNotationListeners;
|
|
39
43
|
private initialValues;
|
|
40
44
|
private globalListeners;
|
|
45
|
+
private watchers;
|
|
41
46
|
constructor(initialValues: T);
|
|
42
47
|
/**
|
|
43
48
|
* 특정 필드 값 가져오기 / Get specific field value
|
|
@@ -130,9 +135,45 @@ export declare class FieldStore<T extends Record<string, any>> {
|
|
|
130
135
|
* 초기값으로 리셋 / Reset to initial values
|
|
131
136
|
*/
|
|
132
137
|
reset(): void;
|
|
138
|
+
/**
|
|
139
|
+
* 필드 변경 감시 / Watch field changes
|
|
140
|
+
* @param path 감시할 필드 경로 (dot notation 지원) / Field path to watch (supports dot notation)
|
|
141
|
+
* @param callback 변경 시 실행할 콜백 / Callback to execute on change
|
|
142
|
+
* @param options 옵션 / Options
|
|
143
|
+
* @returns cleanup 함수 / Cleanup function
|
|
144
|
+
*/
|
|
145
|
+
watch(path: string, callback: WatchCallback, options?: {
|
|
146
|
+
immediate?: boolean;
|
|
147
|
+
}): () => void;
|
|
148
|
+
/**
|
|
149
|
+
* Watcher 알림 실행 / Notify watchers
|
|
150
|
+
* @param path 변경된 필드 경로 / Changed field path
|
|
151
|
+
* @param value 새 값 / New value
|
|
152
|
+
* @param prevValue 이전 값 / Previous value
|
|
153
|
+
*/
|
|
154
|
+
private notifyWatchers;
|
|
155
|
+
/**
|
|
156
|
+
* 와일드카드 패턴 매칭 / Wildcard pattern matching
|
|
157
|
+
* @param path 실제 경로 / Actual path (e.g., "todos.0.completed")
|
|
158
|
+
* @param pattern 와일드카드 패턴 / Wildcard pattern (e.g., "todos.*.completed")
|
|
159
|
+
* @returns 매칭 여부 / Whether path matches pattern
|
|
160
|
+
*/
|
|
161
|
+
private matchesWildcard;
|
|
162
|
+
/**
|
|
163
|
+
* 특정 path에 watcher가 등록되어 있는지 확인 / Check if watcher is registered for specific path
|
|
164
|
+
* @param path 확인할 경로 / Path to check
|
|
165
|
+
* @returns watcher 등록 여부 / Whether watcher is registered
|
|
166
|
+
*/
|
|
167
|
+
hasWatcher(path: string): boolean;
|
|
168
|
+
/**
|
|
169
|
+
* 등록된 모든 watcher path 목록 반환 (디버깅용) / Return all registered watcher paths (for debugging)
|
|
170
|
+
* @returns watcher path 배열 / Array of watcher paths
|
|
171
|
+
*/
|
|
172
|
+
getWatchedPaths(): string[];
|
|
133
173
|
/**
|
|
134
174
|
* 리소스 정리 / Clean up resources
|
|
135
175
|
*/
|
|
136
176
|
destroy(): void;
|
|
137
177
|
}
|
|
178
|
+
export {};
|
|
138
179
|
//# sourceMappingURL=FieldStore.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FieldStore.d.ts","sourceRoot":"","sources":["../../../core/FieldStore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAKH;;;;;;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;
|
|
1
|
+
{"version":3,"file":"FieldStore.d.ts","sourceRoot":"","sources":["../../../core/FieldStore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAKH;;;;;;GAMG;AACH;;GAEG;AACH,KAAK,aAAa,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,KAAK,IAAI,CAAC;AAE1D,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;IAChD,OAAO,CAAC,QAAQ,CAA8C;gBAElD,aAAa,EAAE,CAAC;IAW5B;;;;;OAKG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,GAAG,MAAM,GAAG,GAAG;IA8B1C;;;;;;OAMG;IACH,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC,GAAG,MAAM,EAAE,QAAQ,EAAE,MAAM,IAAI;IAuD3D;;;;;OAKG;IACH,eAAe,CAAC,QAAQ,EAAE,MAAM,IAAI;IAOpC;;;;;OAKG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,GAAG,MAAM,EAAE,KAAK,EAAE,GAAG;IA0KhD;;;OAGG;IACH,SAAS,IAAI,CAAC;IAUd;;;OAGG;IACH,SAAS,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;IA4C/B;;;OAGG;IACH,gBAAgB,CAAC,gBAAgB,EAAE,CAAC;IAyBpC;;;OAGG;IACH,UAAU,IAAI,OAAO;IAkBrB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAuBzB;;;;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;;;;OAIG;IACH,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IA2CnC;;;;OAIG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI;IA4B5C;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IAsF7B;;OAEG;IACH,KAAK;IA6DL;;;;;;OAMG;IACH,KAAK,CACD,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,aAAa,EACvB,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,GAClC,MAAM,IAAI;IAuBb;;;;;OAKG;IACH,OAAO,CAAC,cAAc;IAoCtB;;;;;OAKG;IACH,OAAO,CAAC,eAAe;IAoBvB;;;;OAIG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIjC;;;OAGG;IACH,eAAe,IAAI,MAAM,EAAE;IAI3B;;OAEG;IACH,OAAO;CAMV"}
|
|
@@ -28,18 +28,12 @@
|
|
|
28
28
|
*/
|
|
29
29
|
import { getNestedValue, setNestedValue } from "../utils/dotNotation";
|
|
30
30
|
import { devError } from "../utils/environment";
|
|
31
|
-
/**
|
|
32
|
-
* 개별 필드 상태 관리 Store / Individual field state management store
|
|
33
|
-
* 선택적 구독과 성능 최적화를 위한 핵심 클래스
|
|
34
|
-
* Core class for selective subscriptions and performance optimization
|
|
35
|
-
*
|
|
36
|
-
* @template T 폼 데이터의 타입 / Form data type
|
|
37
|
-
*/
|
|
38
31
|
export class FieldStore {
|
|
39
32
|
constructor(initialValues) {
|
|
40
33
|
this.fields = new Map();
|
|
41
34
|
this.dotNotationListeners = new Map(); // Dot notation 구독자 / Dot notation subscribers
|
|
42
35
|
this.globalListeners = new Set();
|
|
36
|
+
this.watchers = new Map(); // Watch 콜백 관리 / Watch callback management
|
|
43
37
|
this.initialValues = { ...initialValues };
|
|
44
38
|
// 초기값으로 필드 초기화 / Initialize fields with initial values
|
|
45
39
|
Object.keys(initialValues).forEach((key) => {
|
|
@@ -169,6 +163,7 @@ export class FieldStore {
|
|
|
169
163
|
const oldRootValue = field.value;
|
|
170
164
|
const newRootValue = setNestedValue(field.value || {}, remainingPath, value);
|
|
171
165
|
if (JSON.stringify(field.value) !== JSON.stringify(newRootValue)) {
|
|
166
|
+
const prevValue = field.value;
|
|
172
167
|
field.value = newRootValue;
|
|
173
168
|
// 루트 필드 구독자들 알림 / Notify root field subscribers
|
|
174
169
|
field.listeners.forEach((listener) => {
|
|
@@ -176,9 +171,15 @@ export class FieldStore {
|
|
|
176
171
|
});
|
|
177
172
|
// Dot notation 구독자들 알림 / Notify dot notation subscribers
|
|
178
173
|
this.dotNotationListeners.forEach((listeners, subscribedPath) => {
|
|
174
|
+
// 1. 정확히 일치하는 경로
|
|
179
175
|
if (subscribedPath === fieldNameStr) {
|
|
180
176
|
listeners.forEach((listener) => listener());
|
|
181
177
|
}
|
|
178
|
+
// 2. 구독 경로가 변경 경로의 부모인 경우
|
|
179
|
+
// 예: subscribedPath가 "todos.2"이고 fieldNameStr이 "todos.2.completed"
|
|
180
|
+
else if (fieldNameStr.startsWith(subscribedPath + ".")) {
|
|
181
|
+
listeners.forEach((listener) => listener());
|
|
182
|
+
}
|
|
182
183
|
// 배열 필드나 .length 구독자들에게 알림
|
|
183
184
|
// Notify array field or .length subscribers
|
|
184
185
|
else if (subscribedPath === `${rootFieldStr}.length`) {
|
|
@@ -198,6 +199,8 @@ export class FieldStore {
|
|
|
198
199
|
});
|
|
199
200
|
// 전역 구독자들 알림 / Notify global subscribers
|
|
200
201
|
this.globalListeners.forEach((listener) => listener());
|
|
202
|
+
// Watcher 실행 (와일드카드 매칭 포함) / Execute watcher (including wildcard matching)
|
|
203
|
+
this.notifyWatchers(fieldNameStr, value, prevValue);
|
|
201
204
|
}
|
|
202
205
|
return;
|
|
203
206
|
}
|
|
@@ -268,6 +271,8 @@ export class FieldStore {
|
|
|
268
271
|
if (this.globalListeners.size > 0) {
|
|
269
272
|
this.globalListeners.forEach((listener) => listener());
|
|
270
273
|
}
|
|
274
|
+
// Watcher 실행 (와일드카드 매칭 포함) / Execute watcher (including wildcard matching)
|
|
275
|
+
this.notifyWatchers(fieldStr, value, oldValue);
|
|
271
276
|
}
|
|
272
277
|
}
|
|
273
278
|
/**
|
|
@@ -293,9 +298,14 @@ export class FieldStore {
|
|
|
293
298
|
}
|
|
294
299
|
// 성능 최적화: 영향받는 리스너들을 먼저 수집
|
|
295
300
|
const affectedListeners = new Set();
|
|
301
|
+
const watcherNotifications = [];
|
|
296
302
|
// 각 업데이트를 개별적으로 처리하되, 리스너 실행은 마지막에 일괄 처리
|
|
297
303
|
Object.entries(newValues).forEach(([fieldName, value]) => {
|
|
304
|
+
// 이전 값 저장 (watch 알림용)
|
|
305
|
+
const prevValue = this.getValue(fieldName);
|
|
298
306
|
this.setValueWithoutNotify(fieldName, value, affectedListeners);
|
|
307
|
+
// watch 알림 예약
|
|
308
|
+
watcherNotifications.push({ path: fieldName, value, prevValue });
|
|
299
309
|
});
|
|
300
310
|
// 글로벌 리스너들도 추가
|
|
301
311
|
this.globalListeners.forEach((listener) => affectedListeners.add(listener));
|
|
@@ -308,6 +318,10 @@ export class FieldStore {
|
|
|
308
318
|
devError("setValues 리스너 실행 중 오류:", error);
|
|
309
319
|
}
|
|
310
320
|
});
|
|
321
|
+
// watch 알림 실행
|
|
322
|
+
watcherNotifications.forEach(({ path, value, prevValue }) => {
|
|
323
|
+
this.notifyWatchers(path, value, prevValue);
|
|
324
|
+
});
|
|
311
325
|
}
|
|
312
326
|
/**
|
|
313
327
|
* 초기값 재설정 / Reset initial values
|
|
@@ -644,6 +658,105 @@ export class FieldStore {
|
|
|
644
658
|
// 글로벌 리스너들에게도 알림
|
|
645
659
|
this.globalListeners.forEach((listener) => listener());
|
|
646
660
|
}
|
|
661
|
+
/**
|
|
662
|
+
* 필드 변경 감시 / Watch field changes
|
|
663
|
+
* @param path 감시할 필드 경로 (dot notation 지원) / Field path to watch (supports dot notation)
|
|
664
|
+
* @param callback 변경 시 실행할 콜백 / Callback to execute on change
|
|
665
|
+
* @param options 옵션 / Options
|
|
666
|
+
* @returns cleanup 함수 / Cleanup function
|
|
667
|
+
*/
|
|
668
|
+
watch(path, callback, options) {
|
|
669
|
+
if (!this.watchers.has(path)) {
|
|
670
|
+
this.watchers.set(path, new Set());
|
|
671
|
+
}
|
|
672
|
+
const watcherSet = this.watchers.get(path);
|
|
673
|
+
watcherSet.add(callback);
|
|
674
|
+
// immediate: true면 현재 값으로 즉시 실행 / Execute immediately with current value if immediate: true
|
|
675
|
+
if (options?.immediate) {
|
|
676
|
+
const currentValue = this.getValue(path);
|
|
677
|
+
callback(currentValue, undefined);
|
|
678
|
+
}
|
|
679
|
+
// cleanup 함수 반환 / Return cleanup function
|
|
680
|
+
return () => {
|
|
681
|
+
watcherSet.delete(callback);
|
|
682
|
+
if (watcherSet.size === 0) {
|
|
683
|
+
this.watchers.delete(path);
|
|
684
|
+
}
|
|
685
|
+
};
|
|
686
|
+
}
|
|
687
|
+
/**
|
|
688
|
+
* Watcher 알림 실행 / Notify watchers
|
|
689
|
+
* @param path 변경된 필드 경로 / Changed field path
|
|
690
|
+
* @param value 새 값 / New value
|
|
691
|
+
* @param prevValue 이전 값 / Previous value
|
|
692
|
+
*/
|
|
693
|
+
notifyWatchers(path, value, prevValue) {
|
|
694
|
+
// 1. 정확한 경로 매칭 / Exact path match
|
|
695
|
+
const exactWatchers = this.watchers.get(path);
|
|
696
|
+
if (exactWatchers && exactWatchers.size > 0) {
|
|
697
|
+
exactWatchers.forEach((callback) => {
|
|
698
|
+
try {
|
|
699
|
+
callback(value, prevValue);
|
|
700
|
+
}
|
|
701
|
+
catch (error) {
|
|
702
|
+
console.error(`Error in watcher for path "${path}":`, error);
|
|
703
|
+
}
|
|
704
|
+
});
|
|
705
|
+
}
|
|
706
|
+
// 2. 와일드카드 패턴 매칭 / Wildcard pattern matching
|
|
707
|
+
// todos.0.completed 변경 시 "todos.*.completed" 패턴도 트리거
|
|
708
|
+
this.watchers.forEach((watcherSet, watcherPath) => {
|
|
709
|
+
if (watcherPath.includes("*")) {
|
|
710
|
+
if (this.matchesWildcard(path, watcherPath)) {
|
|
711
|
+
watcherSet.forEach((callback) => {
|
|
712
|
+
try {
|
|
713
|
+
callback(value, prevValue);
|
|
714
|
+
}
|
|
715
|
+
catch (error) {
|
|
716
|
+
console.error(`Error in wildcard watcher for pattern "${watcherPath}" (triggered by "${path}"):`, error);
|
|
717
|
+
}
|
|
718
|
+
});
|
|
719
|
+
}
|
|
720
|
+
}
|
|
721
|
+
});
|
|
722
|
+
}
|
|
723
|
+
/**
|
|
724
|
+
* 와일드카드 패턴 매칭 / Wildcard pattern matching
|
|
725
|
+
* @param path 실제 경로 / Actual path (e.g., "todos.0.completed")
|
|
726
|
+
* @param pattern 와일드카드 패턴 / Wildcard pattern (e.g., "todos.*.completed")
|
|
727
|
+
* @returns 매칭 여부 / Whether path matches pattern
|
|
728
|
+
*/
|
|
729
|
+
matchesWildcard(path, pattern) {
|
|
730
|
+
const pathParts = path.split(".");
|
|
731
|
+
const patternParts = pattern.split(".");
|
|
732
|
+
if (pathParts.length !== patternParts.length) {
|
|
733
|
+
return false;
|
|
734
|
+
}
|
|
735
|
+
for (let i = 0; i < patternParts.length; i++) {
|
|
736
|
+
if (patternParts[i] === "*") {
|
|
737
|
+
continue; // 와일드카드는 모든 값과 매칭 / Wildcard matches any value
|
|
738
|
+
}
|
|
739
|
+
if (patternParts[i] !== pathParts[i]) {
|
|
740
|
+
return false;
|
|
741
|
+
}
|
|
742
|
+
}
|
|
743
|
+
return true;
|
|
744
|
+
}
|
|
745
|
+
/**
|
|
746
|
+
* 특정 path에 watcher가 등록되어 있는지 확인 / Check if watcher is registered for specific path
|
|
747
|
+
* @param path 확인할 경로 / Path to check
|
|
748
|
+
* @returns watcher 등록 여부 / Whether watcher is registered
|
|
749
|
+
*/
|
|
750
|
+
hasWatcher(path) {
|
|
751
|
+
return this.watchers.has(path);
|
|
752
|
+
}
|
|
753
|
+
/**
|
|
754
|
+
* 등록된 모든 watcher path 목록 반환 (디버깅용) / Return all registered watcher paths (for debugging)
|
|
755
|
+
* @returns watcher path 배열 / Array of watcher paths
|
|
756
|
+
*/
|
|
757
|
+
getWatchedPaths() {
|
|
758
|
+
return Array.from(this.watchers.keys());
|
|
759
|
+
}
|
|
647
760
|
/**
|
|
648
761
|
* 리소스 정리 / Clean up resources
|
|
649
762
|
*/
|
|
@@ -651,6 +764,7 @@ export class FieldStore {
|
|
|
651
764
|
this.fields.clear();
|
|
652
765
|
this.globalListeners.clear();
|
|
653
766
|
this.dotNotationListeners.clear();
|
|
767
|
+
this.watchers.clear();
|
|
654
768
|
}
|
|
655
769
|
}
|
|
656
770
|
//# sourceMappingURL=FieldStore.js.map
|