@ehfuse/forma 2.3.2 → 3.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.
- package/README.md +75 -0
- package/dist/esm/index.d.ts +4 -0
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/src/contexts/GlobalFormaContext.d.ts +2 -5
- package/dist/esm/src/contexts/GlobalFormaContext.d.ts.map +1 -1
- package/dist/esm/src/contexts/GlobalFormaContext.js +8 -10
- package/dist/esm/src/contexts/GlobalFormaContext.js.map +1 -1
- package/dist/esm/src/hooks/useForm.d.ts.map +1 -1
- package/dist/esm/src/hooks/useForm.js +56 -3
- package/dist/esm/src/hooks/useForm.js.map +1 -1
- package/dist/esm/src/hooks/useFormaState.d.ts +7 -0
- package/dist/esm/src/hooks/useFormaState.d.ts.map +1 -1
- package/dist/esm/src/hooks/useFormaState.js +56 -3
- package/dist/esm/src/hooks/useFormaState.js.map +1 -1
- package/dist/esm/src/hooks/useGlobalForm.js +2 -1
- package/dist/esm/src/hooks/useGlobalForm.js.map +1 -1
- package/dist/esm/src/hooks/useGlobalFormaState.js +2 -2
- package/dist/esm/src/hooks/useGlobalFormaState.js.map +1 -1
- package/dist/esm/src/hooks/useLocalStorage.d.ts +102 -0
- package/dist/esm/src/hooks/useLocalStorage.d.ts.map +1 -0
- package/dist/esm/src/hooks/useLocalStorage.js +233 -0
- package/dist/esm/src/hooks/useLocalStorage.js.map +1 -0
- package/dist/esm/src/hooks/useModal.d.ts.map +1 -1
- package/dist/esm/src/hooks/useModal.js +1 -1
- package/dist/esm/src/hooks/useModal.js.map +1 -1
- package/dist/esm/src/types/form.d.ts +13 -4
- package/dist/esm/src/types/form.d.ts.map +1 -1
- package/dist/esm/src/types/globalForm.d.ts +11 -3
- package/dist/esm/src/types/globalForm.d.ts.map +1 -1
- package/dist/esm/src/types/globalForm.js.map +1 -1
- package/dist/esm/src/utils/environment.d.ts +7 -0
- package/dist/esm/src/utils/environment.d.ts.map +1 -1
- package/dist/esm/src/utils/environment.js +11 -0
- package/dist/esm/src/utils/environment.js.map +1 -1
- package/dist/esm/src/utils/index.d.ts +2 -0
- package/dist/esm/src/utils/index.d.ts.map +1 -1
- package/dist/esm/src/utils/index.js +1 -0
- package/dist/esm/src/utils/index.js.map +1 -1
- package/dist/esm/src/utils/persist.d.ts +67 -0
- package/dist/esm/src/utils/persist.d.ts.map +1 -0
- package/dist/esm/src/utils/persist.js +154 -0
- package/dist/esm/src/utils/persist.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/src/contexts/GlobalFormaContext.d.ts +2 -5
- package/dist/src/contexts/GlobalFormaContext.d.ts.map +1 -1
- package/dist/src/contexts/GlobalFormaContext.js +7 -9
- package/dist/src/contexts/GlobalFormaContext.js.map +1 -1
- package/dist/src/hooks/useForm.d.ts.map +1 -1
- package/dist/src/hooks/useForm.js +55 -2
- package/dist/src/hooks/useForm.js.map +1 -1
- package/dist/src/hooks/useFormaState.d.ts +7 -0
- package/dist/src/hooks/useFormaState.d.ts.map +1 -1
- package/dist/src/hooks/useFormaState.js +54 -1
- package/dist/src/hooks/useFormaState.js.map +1 -1
- package/dist/src/hooks/useGlobalForm.js +2 -1
- package/dist/src/hooks/useGlobalForm.js.map +1 -1
- package/dist/src/hooks/useGlobalFormaState.js +2 -2
- package/dist/src/hooks/useGlobalFormaState.js.map +1 -1
- package/dist/src/hooks/useLocalStorage.d.ts +102 -0
- package/dist/src/hooks/useLocalStorage.d.ts.map +1 -0
- package/dist/src/hooks/useLocalStorage.js +237 -0
- package/dist/src/hooks/useLocalStorage.js.map +1 -0
- package/dist/src/hooks/useModal.d.ts.map +1 -1
- package/dist/src/hooks/useModal.js.map +1 -1
- package/dist/src/types/form.d.ts +13 -4
- package/dist/src/types/form.d.ts.map +1 -1
- package/dist/src/types/globalForm.d.ts +11 -3
- package/dist/src/types/globalForm.d.ts.map +1 -1
- package/dist/src/types/globalForm.js.map +1 -1
- package/dist/src/utils/environment.d.ts +7 -0
- package/dist/src/utils/environment.d.ts.map +1 -1
- package/dist/src/utils/environment.js +12 -0
- package/dist/src/utils/environment.js.map +1 -1
- package/dist/src/utils/index.d.ts +2 -0
- package/dist/src/utils/index.d.ts.map +1 -1
- package/dist/src/utils/index.js +7 -1
- package/dist/src/utils/index.js.map +1 -1
- package/dist/src/utils/persist.d.ts +67 -0
- package/dist/src/utils/persist.d.ts.map +1 -0
- package/dist/src/utils/persist.js +163 -0
- package/dist/src/utils/persist.js.map +1 -0
- package/package.json +1 -1
|
@@ -32,14 +32,30 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
32
32
|
exports.useForm = useForm;
|
|
33
33
|
const useFormaState_1 = require("./useFormaState");
|
|
34
34
|
const utils_1 = require("../utils");
|
|
35
|
+
const persist_1 = require("../utils/persist");
|
|
35
36
|
const react_1 = require("react");
|
|
37
|
+
const GlobalFormaContext_1 = require("../contexts/GlobalFormaContext");
|
|
36
38
|
function useForm(props = {}) {
|
|
37
|
-
const { initialValues = {}, onSubmit, onValidate, onComplete, actions: userActions, watch, _externalStore, } = props;
|
|
39
|
+
const { initialValues = {}, onSubmit, onValidate, onComplete, actions: userActions, watch, _externalStore, persist, } = props;
|
|
40
|
+
// GlobalFormaContext에서 storagePrefix 가져오기 | Get storagePrefix from GlobalFormaContext
|
|
41
|
+
const context = (0, react_1.useContext)(GlobalFormaContext_1.GlobalFormaContext);
|
|
42
|
+
const storagePrefix = context?.storagePrefix;
|
|
43
|
+
// Persist 설정 정규화 | Normalize persist config
|
|
44
|
+
const persistConfig = persist ? (0, persist_1.normalizePersistConfig)(persist) : null;
|
|
38
45
|
// 초기값 안정화: 첫 번째 렌더링에서만 초기값을 고정
|
|
39
46
|
// Stabilize initial values: fix initial values only on first render
|
|
47
|
+
// persist가 있으면 localStorage에서 복원 시도
|
|
40
48
|
const stableInitialValues = (0, react_1.useRef)(null);
|
|
41
49
|
if (!stableInitialValues.current) {
|
|
42
|
-
|
|
50
|
+
let mergedInitialValues = initialValues;
|
|
51
|
+
// persist 설정이 있으면 저장된 데이터 복원 시도
|
|
52
|
+
if (persistConfig) {
|
|
53
|
+
const persisted = (0, persist_1.loadPersistedData)(persistConfig, storagePrefix);
|
|
54
|
+
if (persisted) {
|
|
55
|
+
mergedInitialValues = { ...initialValues, ...persisted };
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
stableInitialValues.current = mergedInitialValues;
|
|
43
59
|
}
|
|
44
60
|
// useFormaState를 기반으로 사용 / Use useFormaState as foundation
|
|
45
61
|
const fieldState = (0, useFormaState_1.useFormaState)(stableInitialValues.current, {
|
|
@@ -60,6 +76,38 @@ function useForm(props = {}) {
|
|
|
60
76
|
setIsModified(fieldState._store.isModified());
|
|
61
77
|
return unsubscribe;
|
|
62
78
|
}, [fieldState._store]);
|
|
79
|
+
// Persist: 디바운스된 저장 함수 생성 | Create debounced save function
|
|
80
|
+
const debouncedSaveRef = (0, react_1.useRef)(null);
|
|
81
|
+
(0, react_1.useEffect)(() => {
|
|
82
|
+
if (!persistConfig)
|
|
83
|
+
return;
|
|
84
|
+
const debounceTime = persistConfig.debounce ?? 300;
|
|
85
|
+
debouncedSaveRef.current = (0, persist_1.debounce)((values) => {
|
|
86
|
+
(0, persist_1.savePersistedData)(persistConfig, values, storagePrefix);
|
|
87
|
+
}, debounceTime);
|
|
88
|
+
}, [persistConfig, storagePrefix]);
|
|
89
|
+
// Persist: 값 변경 시 저장 | Save on value change
|
|
90
|
+
(0, react_1.useEffect)(() => {
|
|
91
|
+
if (!persistConfig || !debouncedSaveRef.current)
|
|
92
|
+
return;
|
|
93
|
+
const unsubscribe = fieldState._store.subscribeGlobal(() => {
|
|
94
|
+
const currentValues = fieldState._store.getValues();
|
|
95
|
+
debouncedSaveRef.current?.(currentValues);
|
|
96
|
+
});
|
|
97
|
+
return unsubscribe;
|
|
98
|
+
}, [fieldState._store, persistConfig]);
|
|
99
|
+
// Persist: clearPersisted 함수 | clearPersisted function
|
|
100
|
+
const clearPersisted = (0, react_1.useCallback)(() => {
|
|
101
|
+
if (persistConfig) {
|
|
102
|
+
(0, persist_1.clearPersistedData)(persistConfig, storagePrefix);
|
|
103
|
+
}
|
|
104
|
+
}, [persistConfig, storagePrefix]);
|
|
105
|
+
// Persist: hasPersisted 상태 | hasPersisted state
|
|
106
|
+
const hasPersisted = (0, react_1.useMemo)(() => {
|
|
107
|
+
if (!persistConfig)
|
|
108
|
+
return false;
|
|
109
|
+
return (0, persist_1.hasPersistedData)(persistConfig, storagePrefix);
|
|
110
|
+
}, [persistConfig, storagePrefix]);
|
|
63
111
|
/**
|
|
64
112
|
* 통합 폼 변경 핸들러 / Unified form change handler
|
|
65
113
|
* MUI Select, TextField, DatePicker 등 모든 컴포넌트 지원
|
|
@@ -287,6 +335,9 @@ function useForm(props = {}) {
|
|
|
287
335
|
validateForm, // 폼 검증 / validate form
|
|
288
336
|
// Actions
|
|
289
337
|
actions: boundActions, // 사용자 정의 actions / user-defined actions
|
|
338
|
+
// Persist
|
|
339
|
+
clearPersisted, // 저장된 데이터 삭제 / clear persisted data
|
|
340
|
+
hasPersisted, // 저장된 데이터 있는지 / has persisted data
|
|
290
341
|
// 호환성 / Compatibility
|
|
291
342
|
values: fieldState.getValues(), // 호환성을 위한 values 객체 (비권장) / Values object for compatibility (not recommended)
|
|
292
343
|
// 고급 사용 / Advanced usage
|
|
@@ -307,6 +358,8 @@ function useForm(props = {}) {
|
|
|
307
358
|
resetForm,
|
|
308
359
|
validateForm,
|
|
309
360
|
boundActions, // actions 의존성 추가
|
|
361
|
+
clearPersisted,
|
|
362
|
+
hasPersisted,
|
|
310
363
|
fieldState._store, // Store 의존성으로 대체
|
|
311
364
|
]);
|
|
312
365
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useForm.js","sourceRoot":"","sources":["../../../src/hooks/useForm.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;;
|
|
1
|
+
{"version":3,"file":"useForm.js","sourceRoot":"","sources":["../../../src/hooks/useForm.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
*/
|
|
10
10
|
import { FieldStore } from "../core/FieldStore";
|
|
11
11
|
import { FormChangeEvent, ActionContext, Actions } from "../types/form";
|
|
12
|
+
import { PersistConfig } from "../utils/persist";
|
|
12
13
|
/**
|
|
13
14
|
* Options for configuring useFormaState hook
|
|
14
15
|
* useFormaState 훅 설정을 위한 옵션
|
|
@@ -28,6 +29,8 @@ export interface UseFormaStateOptions<T extends Record<string, any>> {
|
|
|
28
29
|
actions?: Actions<T> | Actions<T>[];
|
|
29
30
|
/** Watch callbacks - detect specific path changes (wildcard supported) | Watch 콜백 - 특정 경로 변경 감지 (와일드카드 지원) */
|
|
30
31
|
watch?: Record<string, (context: ActionContext<T>, value: any, prevValue: any) => void | Promise<void>>;
|
|
32
|
+
/** localStorage 영속성 설정 | localStorage persistence config */
|
|
33
|
+
persist?: PersistConfig;
|
|
31
34
|
}
|
|
32
35
|
/**
|
|
33
36
|
* Return type for useFormaState hook
|
|
@@ -62,6 +65,10 @@ export interface UseFormaStateReturn<T extends Record<string, any>> {
|
|
|
62
65
|
refreshFields: (prefix: string) => void;
|
|
63
66
|
/** Custom actions bound to this state | 이 상태에 바인딩된 커스텀 액션 */
|
|
64
67
|
actions: any;
|
|
68
|
+
/** 저장된 데이터 삭제 | Clear persisted data */
|
|
69
|
+
clearPersisted: () => void;
|
|
70
|
+
/** 저장된 데이터 존재 여부 | Has persisted data */
|
|
71
|
+
hasPersisted: boolean;
|
|
65
72
|
/** Direct access to the internal store for advanced usage | 고급 사용을 위한 내부 스토어 직접 접근 */
|
|
66
73
|
_store: FieldStore<T>;
|
|
67
74
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useFormaState.d.ts","sourceRoot":"","sources":["../../../src/hooks/useFormaState.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;
|
|
1
|
+
{"version":3,"file":"useFormaState.d.ts","sourceRoot":"","sources":["../../../src/hooks/useFormaState.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,6 +14,8 @@ exports.useFormaState = useFormaState;
|
|
|
14
14
|
const react_1 = require("react");
|
|
15
15
|
const FieldStore_1 = require("../core/FieldStore");
|
|
16
16
|
const utils_1 = require("../utils");
|
|
17
|
+
const persist_1 = require("../utils/persist");
|
|
18
|
+
const GlobalFormaContext_1 = require("../contexts/GlobalFormaContext");
|
|
17
19
|
/**
|
|
18
20
|
* Individual field subscription hook for useFormaState
|
|
19
21
|
* useFormaState를 위한 개별 필드 구독 훅
|
|
@@ -53,10 +55,27 @@ function useFieldSubscription(store, path) {
|
|
|
53
55
|
return useFieldValue(store, path);
|
|
54
56
|
}
|
|
55
57
|
function useFormaState(initialValues = {}, options = {}) {
|
|
56
|
-
const { onChange, deepEquals = false, _externalStore, actions: actionsDefinition, } = options;
|
|
58
|
+
const { onChange, deepEquals: _deepEquals = false, _externalStore, actions: actionsDefinition, persist, } = options;
|
|
59
|
+
// GlobalFormaContext에서 storagePrefix 가져오기 | Get storagePrefix from GlobalFormaContext
|
|
60
|
+
const context = (0, react_1.useContext)(GlobalFormaContext_1.GlobalFormaContext);
|
|
61
|
+
const storagePrefix = context?.storagePrefix;
|
|
62
|
+
// Persist 설정 정규화 | Normalize persist config
|
|
63
|
+
const persistConfig = persist ? (0, persist_1.normalizePersistConfig)(persist) : null;
|
|
57
64
|
// 초기값 안정화: 첫 번째 렌더링에서만 초기값을 고정
|
|
58
65
|
// Stabilize initial values: fix initial values only on first render
|
|
66
|
+
// persist가 있으면 localStorage에서 복원 시도
|
|
59
67
|
const stableInitialValues = (0, react_1.useRef)(null);
|
|
68
|
+
if (!stableInitialValues.current) {
|
|
69
|
+
let mergedInitialValues = initialValues;
|
|
70
|
+
// persist 설정이 있으면 저장된 데이터 복원 시도
|
|
71
|
+
if (persistConfig) {
|
|
72
|
+
const persisted = (0, persist_1.loadPersistedData)(persistConfig, storagePrefix);
|
|
73
|
+
if (persisted) {
|
|
74
|
+
mergedInitialValues = { ...initialValues, ...persisted };
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
stableInitialValues.current = mergedInitialValues;
|
|
78
|
+
}
|
|
60
79
|
if (!stableInitialValues.current) {
|
|
61
80
|
stableInitialValues.current = initialValues;
|
|
62
81
|
}
|
|
@@ -122,6 +141,38 @@ function useFormaState(initialValues = {}, options = {}) {
|
|
|
122
141
|
const reset = (0, react_1.useCallback)(() => {
|
|
123
142
|
store.reset();
|
|
124
143
|
}, [store]); // store 의존성 추가
|
|
144
|
+
// Persist: 디바운스된 저장 함수 생성 | Create debounced save function
|
|
145
|
+
const debouncedSaveRef = (0, react_1.useRef)(null);
|
|
146
|
+
(0, react_1.useEffect)(() => {
|
|
147
|
+
if (!persistConfig)
|
|
148
|
+
return;
|
|
149
|
+
const debounceTime = persistConfig.debounce ?? 300;
|
|
150
|
+
debouncedSaveRef.current = (0, persist_1.debounce)((values) => {
|
|
151
|
+
(0, persist_1.savePersistedData)(persistConfig, values, storagePrefix);
|
|
152
|
+
}, debounceTime);
|
|
153
|
+
}, [persistConfig, storagePrefix]);
|
|
154
|
+
// Persist: 값 변경 시 저장 | Save on value change
|
|
155
|
+
(0, react_1.useEffect)(() => {
|
|
156
|
+
if (!persistConfig || !debouncedSaveRef.current)
|
|
157
|
+
return;
|
|
158
|
+
const unsubscribe = store.subscribeGlobal(() => {
|
|
159
|
+
const currentValues = store.getValues();
|
|
160
|
+
debouncedSaveRef.current?.(currentValues);
|
|
161
|
+
});
|
|
162
|
+
return unsubscribe;
|
|
163
|
+
}, [store, persistConfig]);
|
|
164
|
+
// Persist: clearPersisted 함수 | clearPersisted function
|
|
165
|
+
const clearPersisted = (0, react_1.useCallback)(() => {
|
|
166
|
+
if (persistConfig) {
|
|
167
|
+
(0, persist_1.clearPersistedData)(persistConfig, storagePrefix);
|
|
168
|
+
}
|
|
169
|
+
}, [persistConfig, storagePrefix]);
|
|
170
|
+
// Persist: hasPersisted 상태 | hasPersisted state
|
|
171
|
+
const hasPersisted = (0, react_1.useMemo)(() => {
|
|
172
|
+
if (!persistConfig)
|
|
173
|
+
return false;
|
|
174
|
+
return (0, persist_1.hasPersistedData)(persistConfig, storagePrefix);
|
|
175
|
+
}, [persistConfig, storagePrefix]);
|
|
125
176
|
// Set new initial values (for dynamic initialization)
|
|
126
177
|
// 새 초기값 설정 (동적 초기화용)
|
|
127
178
|
const setInitialValues = (0, react_1.useCallback)((newInitialValues) => {
|
|
@@ -251,6 +302,8 @@ function useFormaState(initialValues = {}, options = {}) {
|
|
|
251
302
|
),
|
|
252
303
|
actions: boundActions,
|
|
253
304
|
_store: store,
|
|
305
|
+
clearPersisted,
|
|
306
|
+
hasPersisted,
|
|
254
307
|
};
|
|
255
308
|
}
|
|
256
309
|
//# sourceMappingURL=useFormaState.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useFormaState.js","sourceRoot":"","sources":["../../../src/hooks/useFormaState.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;
|
|
1
|
+
{"version":3,"file":"useFormaState.js","sourceRoot":"","sources":["../../../src/hooks/useFormaState.ts"],"names":[],"mappings":"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"}
|
|
@@ -52,7 +52,7 @@ function useGlobalForm(propsOrFormId) {
|
|
|
52
52
|
const props = typeof propsOrFormId === "string"
|
|
53
53
|
? { formId: propsOrFormId }
|
|
54
54
|
: propsOrFormId;
|
|
55
|
-
const { formId, initialValues, autoCleanup = true, onSubmit, onValidate, onComplete, actions, watch, } = props;
|
|
55
|
+
const { formId, initialValues, autoCleanup = true, onSubmit, onValidate, onComplete, actions, watch, persist, } = props;
|
|
56
56
|
const context = (0, react_1.useContext)(GlobalFormaContext_1.GlobalFormaContext);
|
|
57
57
|
// Context가 제대로 설정되지 않았을 때 명확한 에러 표시
|
|
58
58
|
// Show clear error when Context is not properly configured
|
|
@@ -112,6 +112,7 @@ Details: GlobalFormaContext must be used within GlobalFormaProvider (formId: ${f
|
|
|
112
112
|
onValidate: effectiveOnValidate,
|
|
113
113
|
onComplete: effectiveOnComplete,
|
|
114
114
|
actions: effectiveActions,
|
|
115
|
+
persist, // persist 옵션 전달
|
|
115
116
|
});
|
|
116
117
|
// 초기값이 있고 스토어가 비어있다면 초기값 설정 (올바른 방법으로)
|
|
117
118
|
// Set initial values if provided and store is empty (using proper method)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useGlobalForm.js","sourceRoot":"","sources":["../../../src/hooks/useGlobalForm.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;;AAqCH,
|
|
1
|
+
{"version":3,"file":"useGlobalForm.js","sourceRoot":"","sources":["../../../src/hooks/useGlobalForm.ts"],"names":[],"mappings":"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"}
|
|
@@ -112,7 +112,7 @@ function useGlobalFormaState(propsOrStateId, initialValuesArg) {
|
|
|
112
112
|
const props = typeof propsOrStateId === "string"
|
|
113
113
|
? { stateId: propsOrStateId, initialValues: initialValuesArg }
|
|
114
114
|
: propsOrStateId;
|
|
115
|
-
const { stateId, initialValues, autoCleanup = true, actions, watch, } = props;
|
|
115
|
+
const { stateId, initialValues, autoCleanup = true, actions, watch, persist, } = props;
|
|
116
116
|
const context = (0, react_1.useContext)(GlobalFormaContext_1.GlobalFormaContext);
|
|
117
117
|
// 참조 등록 상태를 추적하는 ref 추가 + 컴포넌트 고유 ID
|
|
118
118
|
const isRegisteredRef = (0, react_1.useRef)(false);
|
|
@@ -164,6 +164,7 @@ Details: GlobalFormaContext must be used within GlobalFormaProvider (stateId: ${
|
|
|
164
164
|
_externalStore: store,
|
|
165
165
|
actions: effectiveActions,
|
|
166
166
|
watch, // watch 옵션 전달
|
|
167
|
+
persist, // persist 옵션 전달
|
|
167
168
|
});
|
|
168
169
|
// 초기값이 있고 스토어가 비어있다면 초기값 설정 (올바른 방법으로)
|
|
169
170
|
// Set initial values if provided and store is empty (using proper method)
|
|
@@ -178,7 +179,6 @@ Details: GlobalFormaContext must be used within GlobalFormaProvider (stateId: ${
|
|
|
178
179
|
if (!autoCleanup)
|
|
179
180
|
return;
|
|
180
181
|
// 첫 번째 등록시에만 참조 카운트 증가
|
|
181
|
-
const componentId = componentIdRef.current;
|
|
182
182
|
incrementRef(stateId, autoCleanup);
|
|
183
183
|
isRegisteredRef.current = true;
|
|
184
184
|
return () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useGlobalFormaState.js","sourceRoot":"","sources":["../../../src/hooks/useGlobalFormaState.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;;AA6GH,
|
|
1
|
+
{"version":3,"file":"useGlobalFormaState.js","sourceRoot":"","sources":["../../../src/hooks/useGlobalFormaState.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;;AA6GH,kDAwLC;AAnSD,iCAA+D;AAC/D,mDAAgD;AAKhD,uEAAoE;AACpE,oCAAwC;AA2BxC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwEG;AACH,SAAgB,mBAAmB,CAC/B,cAAoD,EACpD,gBAAoB;IAEpB,2BAA2B;IAC3B,MAAM,KAAK,GACP,OAAO,cAAc,KAAK,QAAQ;QAC9B,CAAC,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,gBAAgB,EAAE;QAC9D,CAAC,CAAC,cAAc,CAAC;IAEzB,MAAM,EACF,OAAO,EACP,aAAa,EACb,WAAW,GAAG,IAAI,EAClB,OAAO,EACP,KAAK,EACL,OAAO,GACV,GAAG,KAAK,CAAC;IACV,MAAM,OAAO,GAAG,IAAA,kBAAU,EAAC,uCAAkB,CAAC,CAAC;IAE/C,qCAAqC;IACrC,MAAM,eAAe,GAAG,IAAA,cAAM,EAAC,KAAK,CAAC,CAAC;IACtC,MAAM,cAAc,GAAG,IAAA,cAAM,EAAqB,SAAS,CAAC,CAAC;IAE7D,uBAAuB;IACvB,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;QAC1B,cAAc,CAAC,OAAO,GAAG,GAAG,OAAO,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE;aAC7D,QAAQ,CAAC,EAAE,CAAC;aACZ,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;IACxB,CAAC;IAED,oCAAoC;IACpC,2DAA2D;IAC3D,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC;QACxC,uCAAuC;QACvC,uEAAuE;QACvE,MAAM,YAAY,GAAG;;;;;;;;;;;gFAWmD,OAAO;SAC9E,CAAC,IAAI,EAAE,CAAC;QAET,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;IAClC,CAAC;IAED,MAAM,EACF,gBAAgB,EAChB,YAAY,EACZ,YAAY,EACZ,kCAAkC,EAClC,eAAe,EACf,UAAU,GACb,GAAG,OAAO,CAAC;IAEZ,wBAAwB;IACxB,kCAAkC,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IAEzD,kDAAkD;IAClD,MAAM,KAAK,GAAG,gBAAgB,CAAI,OAAO,CAAC,CAAC;IAE3C,qFAAqF;IACrF,IAAI,OAAO,EAAE,CAAC;QACV,MAAM,aAAa,GAAG,IAAA,oBAAY,EAAC,OAAO,CAAC,CAAC;QAC5C,IAAI,aAAa,EAAE,CAAC;YAChB,eAAe,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;QAC5C,CAAC;IACL,CAAC;IAED,wCAAwC;IACxC,MAAM,aAAa,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;IAE1C,wFAAwF;IACxF,MAAM,gBAAgB,GAAG,OAAO,IAAI,aAAa,CAAC;IAElD,yCAAyC;IACzC,MAAM,UAAU,GAAG,IAAA,6BAAa,EAAK,aAAmB,IAAK,EAAQ,EAAE;QACnE,cAAc,EAAE,KAAK;QACrB,OAAO,EAAE,gBAAgB;QACzB,KAAK,EAAE,cAAc;QACrB,OAAO,EAAE,gBAAgB;KAC5B,CAAC,CAAC;IAEH,uCAAuC;IACvC,0EAA0E;IAC1E,IAAA,iBAAS,EAAC,GAAG,EAAE;QACX,IAAI,aAAa,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/D,UAAU,CAAC,gBAAgB,CAAC,aAAkB,CAAC,CAAC;QACpD,CAAC;IACL,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC;IAEhD,sCAAsC;IACtC,kFAAkF;IAClF,IAAA,iBAAS,EAAC,GAAG,EAAE;QACX,IAAI,CAAC,WAAW;YAAE,OAAO;QAEzB,uBAAuB;QACvB,YAAY,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QACnC,eAAe,CAAC,OAAO,GAAG,IAAI,CAAC;QAE/B,OAAO,GAAG,EAAE;YACR,0BAA0B;YAC1B,YAAY,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;YACnC,eAAe,CAAC,OAAO,GAAG,KAAK,CAAC;QACpC,CAAC,CAAC;QACF,uDAAuD;IAC3D,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,8BAA8B;IAEtC,4EAA4E;IAC5E,MAAM,aAAa,GAAG,IAAA,eAAO,EAAC,GAAG,EAAE;QAC/B,OAAO,IAAI,KAAK,CAAC,EAAS,EAAE;YACxB,GAAG,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE;gBACnB,gEAAgE;gBAChE,MAAM,oBAAoB,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;gBACjD,MAAM,uBAAuB,GACzB,OAAO,IAAI,oBAAoB,IAAI,EAAE,CAAC;gBAE1C,MAAM,MAAM,GAAG,uBAAuB,CAAC,IAAI,CAAC,CAAC;gBAC7C,IAAI,OAAO,MAAM,KAAK,UAAU,EAAE,CAAC;oBAC/B,kDAAkD;oBAClD,OAAO,CAAC,GAAG,IAAW,EAAE,EAAE;wBACtB,MAAM,OAAO,GAAG;4BACZ,MAAM,EAAE,KAAK,CAAC,SAAS,EAAE;4BACzB,QAAQ,EAAE,CAAC,KAAuB,EAAE,EAAE,CAClC,KAAK,CAAC,QAAQ,CAAC,KAAe,CAAC;4BACnC,QAAQ,EAAE,CAAC,KAAuB,EAAE,KAAU,EAAE,EAAE,CAC9C,KAAK,CAAC,QAAQ,CAAC,KAAe,EAAE,KAAK,CAAC;4BAC1C,SAAS,EAAE,CAAC,MAAkB,EAAE,EAAE;gCAC9B,MAAM,aAAa,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;gCACxC,MAAM,SAAS,GAAG;oCACd,GAAG,aAAa;oCAChB,GAAG,MAAM;iCACZ,CAAC;gCACF,KAAK,CAAC,SAAS,CAAC,SAAc,CAAC,CAAC;4BACpC,CAAC;4BACD,KAAK,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE;4BAC1B,OAAO,EAAE,EAAS,EAAE,uBAAuB;yBAC9C,CAAC;wBACF,OAAO,CAAC,OAAO,GAAG,aAAa,CAAC;wBAChC,OAAO,MAAM,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;oBACpC,CAAC,CAAC;gBACN,CAAC;gBACD,OAAO,MAAM,CAAC;YAClB,CAAC;YACD,GAAG,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE;gBACnB,MAAM,oBAAoB,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;gBACjD,MAAM,uBAAuB,GACzB,OAAO,IAAI,oBAAoB,IAAI,EAAE,CAAC;gBAC1C,OAAO,IAAI,IAAI,uBAAuB,CAAC;YAC3C,CAAC;YACD,OAAO,EAAE,CAAC,OAAO,EAAE,EAAE;gBACjB,MAAM,oBAAoB,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;gBACjD,MAAM,uBAAuB,GACzB,OAAO,IAAI,oBAAoB,IAAI,EAAE,CAAC;gBAC1C,OAAO,OAAO,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;YACpD,CAAC;YACD,wBAAwB,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE;gBACxC,MAAM,oBAAoB,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;gBACjD,MAAM,uBAAuB,GACzB,OAAO,IAAI,oBAAoB,IAAI,EAAE,CAAC;gBAC1C,IAAI,IAAI,IAAI,uBAAuB,EAAE,CAAC;oBAClC,OAAO;wBACH,UAAU,EAAE,IAAI;wBAChB,YAAY,EAAE,IAAI;qBACrB,CAAC;gBACN,CAAC;gBACD,OAAO,SAAS,CAAC;YACrB,CAAC;SACJ,CAAC,CAAC;IACP,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC;IAE1C,OAAO;QACH,GAAG,UAAU;QACb,OAAO,EAAE,aAAa,EAAE,8DAA8D;QACtF,OAAO,EAAE,oEAAoE;QAC7E,MAAM,EAAE,KAAK,EAAE,gFAAgF;KAClE,CAAC;AACtC,CAAC"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* useLocalStorage.ts
|
|
3
|
+
*
|
|
4
|
+
* Forma - localStorage 관리 훅 | localStorage management hook
|
|
5
|
+
* useState와 유사한 패턴으로 localStorage 데이터를 관리합니다
|
|
6
|
+
* Manages localStorage data with a pattern similar to useState
|
|
7
|
+
*
|
|
8
|
+
* @license MIT License
|
|
9
|
+
* @copyright 2025 KIM YOUNG JIN (Kim Young Jin)
|
|
10
|
+
* @author KIM YOUNG JIN (ehfuse@gmail.com)
|
|
11
|
+
*
|
|
12
|
+
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
13
|
+
* of this software and associated documentation files (the "Software"), to deal
|
|
14
|
+
* in the Software without restriction, including without limitation the rights
|
|
15
|
+
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
16
|
+
* copies of the Software, and to permit persons to whom the Software is
|
|
17
|
+
* furnished to do so, subject to the following conditions:
|
|
18
|
+
*
|
|
19
|
+
* The above copyright notice and this permission notice shall be included in all
|
|
20
|
+
* copies or substantial portions of the Software.
|
|
21
|
+
*
|
|
22
|
+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
23
|
+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
24
|
+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
25
|
+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
26
|
+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
27
|
+
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
28
|
+
* SOFTWARE.
|
|
29
|
+
*/
|
|
30
|
+
/**
|
|
31
|
+
* useLocalStorage 훅의 반환 타입 | useLocalStorage hook return type
|
|
32
|
+
*/
|
|
33
|
+
export interface UseLocalStorageReturn<T> {
|
|
34
|
+
/** 현재 값 | Current value */
|
|
35
|
+
value: T;
|
|
36
|
+
/** 값 설정 (함수형 업데이트 지원) | Set value (supports functional updates) */
|
|
37
|
+
setValue: (value: T | ((prev: T) => T)) => void;
|
|
38
|
+
/** 저장된 값 삭제 | Remove stored value */
|
|
39
|
+
remove: () => void;
|
|
40
|
+
/** 값 존재 여부 | Whether value exists */
|
|
41
|
+
has: boolean;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* useLocalStorage 훅 옵션 | useLocalStorage hook options
|
|
45
|
+
*/
|
|
46
|
+
export interface UseLocalStorageOptions {
|
|
47
|
+
/** sessionStorage 사용 여부 (기본: localStorage) | Use sessionStorage instead (default: localStorage) */
|
|
48
|
+
session?: boolean;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* useState와 유사한 패턴의 localStorage 관리 훅
|
|
52
|
+
* localStorage management hook with useState-like pattern
|
|
53
|
+
*
|
|
54
|
+
* GlobalFormaProvider의 storagePrefix가 설정된 경우 자동으로 키에 prefix가 적용됩니다.
|
|
55
|
+
* If GlobalFormaProvider's storagePrefix is set, it will be automatically applied to keys.
|
|
56
|
+
*
|
|
57
|
+
* @template T 저장할 값의 타입 | Type of value to store
|
|
58
|
+
* @param key localStorage 키 | localStorage key
|
|
59
|
+
* @param defaultValue 기본값 | Default value
|
|
60
|
+
* @param options 옵션 | Options
|
|
61
|
+
* @returns localStorage 관리 API | localStorage management API
|
|
62
|
+
*
|
|
63
|
+
* @example
|
|
64
|
+
* ```typescript
|
|
65
|
+
* // 기본 사용
|
|
66
|
+
* const { value: theme, setValue: setTheme } = useLocalStorage('theme', 'light');
|
|
67
|
+
*
|
|
68
|
+
* // sessionStorage 사용
|
|
69
|
+
* const { value, setValue } = useLocalStorage('session-data', {}, { session: true });
|
|
70
|
+
*
|
|
71
|
+
* // 객체 저장
|
|
72
|
+
* interface UserPrefs {
|
|
73
|
+
* theme: 'light' | 'dark';
|
|
74
|
+
* fontSize: number;
|
|
75
|
+
* }
|
|
76
|
+
* const { value: prefs, setValue: setPrefs } = useLocalStorage<UserPrefs>('prefs', {
|
|
77
|
+
* theme: 'light',
|
|
78
|
+
* fontSize: 14
|
|
79
|
+
* });
|
|
80
|
+
*
|
|
81
|
+
* // 함수형 업데이트
|
|
82
|
+
* setPrefs(prev => ({ ...prev, theme: 'dark' }));
|
|
83
|
+
*
|
|
84
|
+
* // GlobalFormaProvider와 함께 사용 (자동 prefix)
|
|
85
|
+
* // <GlobalFormaProvider storagePrefix="myapp">
|
|
86
|
+
* // 실제 키: "myapp:theme"
|
|
87
|
+
* ```
|
|
88
|
+
*/
|
|
89
|
+
export declare function useLocalStorage<T>(key: string, defaultValue: T, options?: UseLocalStorageOptions): UseLocalStorageReturn<T>;
|
|
90
|
+
/**
|
|
91
|
+
* storagePrefix를 가져오는 유틸리티 훅 | Utility hook to get storagePrefix
|
|
92
|
+
*
|
|
93
|
+
* @returns storagePrefix 값 | storagePrefix value
|
|
94
|
+
*
|
|
95
|
+
* @example
|
|
96
|
+
* ```typescript
|
|
97
|
+
* const prefix = useStoragePrefix();
|
|
98
|
+
* console.log(prefix); // "myapp" or undefined
|
|
99
|
+
* ```
|
|
100
|
+
*/
|
|
101
|
+
export declare function useStoragePrefix(): string | undefined;
|
|
102
|
+
//# sourceMappingURL=useLocalStorage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useLocalStorage.d.ts","sourceRoot":"","sources":["../../../src/hooks/useLocalStorage.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAMH;;GAEG;AACH,MAAM,WAAW,qBAAqB,CAAC,CAAC;IACpC,2BAA2B;IAC3B,KAAK,EAAE,CAAC,CAAC;IACT,mEAAmE;IACnE,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,IAAI,CAAC;IAChD,qCAAqC;IACrC,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,qCAAqC;IACrC,GAAG,EAAE,OAAO,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACnC,mGAAmG;IACnG,OAAO,CAAC,EAAE,OAAO,CAAC;CACrB;AAqFD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAC7B,GAAG,EAAE,MAAM,EACX,YAAY,EAAE,CAAC,EACf,OAAO,CAAC,EAAE,sBAAsB,GACjC,qBAAqB,CAAC,CAAC,CAAC,CA+F1B;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,GAAG,SAAS,CAGrD"}
|